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,37 @@
package com.loki.lomines.block;
import com.loki.lomines.util.Cuboid;
import org.bukkit.Location;
import java.util.List;
import java.util.function.IntConsumer;
/**
* Abstract base class for block setting strategies.
* Provides a template for filling mine regions with blocks.
*
* <p>Implementations:</p>
* <ul>
* <li>BukkitBlockSetter - For vanilla Minecraft blocks</li>
* <li>OraxenBlockSetter - For Oraxen custom blocks</li>
* <li>ItemsAdderBlockSetter - For ItemsAdder custom blocks</li>
* </ul>
*
* <p>This is a placeholder that will be fully implemented in task 2.7.</p>
*/
public abstract class BlockSetter {
/**
* Fills a cuboid region with blocks asynchronously.
* The callback is invoked in the main thread after completion.
*
* @param region The region to fill
* @param callback Called with the number of blocks set when complete
*/
public abstract void fill(Cuboid region, IntConsumer callback);
/**
* Places random weighted blocks only at the given locations (mask mode).
*/
public abstract void fillAtLocations(List<Location> locations, IntConsumer callback);
}