chore: initial commit - LoMines v3.0.0 base structure

- Java rewrite from Kotlin
- LoAPI 3.0.0 integration
- Paper 1.21 support
- Core mine system with handlers
- BlockSetter abstraction (Bukkit/Oraxen/ItemsAdder)
- Statistics and leaderboard system
- Group wand for batch mine creation
- Mask fill mode support

Known issues:
- ConfigLoader.java: 712 lines (needs refactoring)
- MineCommands.java: 341 lines (needs splitting)
- 7 classes exceed 200 line limit
- Code quality improvements needed (KISS, DRY, SOLID)
This commit is contained in:
loki5512344 2026-04-23 23:01:11 +02:00
commit bd32b9fab2
72 changed files with 8656 additions and 0 deletions

View file

@ -0,0 +1,45 @@
package com.loki.lomines.data;
import java.util.Objects;
import java.util.UUID;
/**
* Immutable data class representing a single entry in the leaderboard.
* Contains a player's UUID and their block count.
*/
public final class LeaderboardEntry {
private final UUID playerId;
private final long count;
public LeaderboardEntry(UUID playerId, long count) {
this.playerId = Objects.requireNonNull(playerId, "playerId cannot be null");
this.count = count;
}
public UUID getPlayerId() {
return playerId;
}
public long getCount() {
return count;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
LeaderboardEntry that = (LeaderboardEntry) o;
return count == that.count && playerId.equals(that.playerId);
}
@Override
public int hashCode() {
return Objects.hash(playerId, count);
}
@Override
public String toString() {
return "LeaderboardEntry{playerId=" + playerId + ", count=" + count + "}";
}
}