49 lines
1.8 KiB
Java
49 lines
1.8 KiB
Java
package dev.loki.lomines.command.admin;
|
|
|
|
import dev.loki.lomines.LoMinesPlugin;
|
|
import dev.loki.lomines.core.mine.Mines;
|
|
import dev.loki.lomines.data.config.ConfigLoader;
|
|
import dev.loki.lomines.util.ErrorHandler;
|
|
import dev.loki.lomines.util.MessageFormatter;
|
|
import dev.lolib.commands.annotation.Arg;
|
|
import dev.lolib.commands.annotation.Command;
|
|
import dev.lolib.commands.annotation.Subcommand;
|
|
import dev.lolib.scheduler.Scheduler;
|
|
import org.bukkit.command.CommandSender;
|
|
|
|
import java.io.IOException;
|
|
|
|
/**
|
|
* Mask commands for mine shape management.
|
|
* Provides commands for scanning and saving mask positions.
|
|
*/
|
|
@Command(value = "lm", permission = "lomines.use")
|
|
public class MaskCommands {
|
|
|
|
private final LoMinesPlugin plugin;
|
|
private final Mines mines;
|
|
private final ErrorHandler errorHandler;
|
|
|
|
public MaskCommands(LoMinesPlugin plugin) {
|
|
this.plugin = plugin;
|
|
this.mines = plugin.getMines();
|
|
this.errorHandler = new ErrorHandler(plugin.getLogger(), "[LoMines] ");
|
|
}
|
|
|
|
@Subcommand(value = "maskscan", permission = "lomines.admin.maskscan")
|
|
public void maskScan(CommandSender sender, @Arg("mine") String name) {
|
|
Scheduler.get(plugin).run(() -> {
|
|
try {
|
|
int n = mines.scanAndSaveMask(name);
|
|
sender.sendMessage(MessageFormatter.success(
|
|
"Mask mode: saved " + n + " cell(s) for mine '" + name
|
|
+ "'. Reset will spawn ore only at those positions."));
|
|
} catch (IllegalArgumentException e) {
|
|
errorHandler.handleNotFound(sender, "Mine", name);
|
|
} catch (IOException | ConfigLoader.ConfigLoadException e) {
|
|
errorHandler.handleError(sender, "Mask scan failed: " + e.getMessage(),
|
|
"maskscan failed for " + name, e);
|
|
}
|
|
});
|
|
}
|
|
}
|