首次提交 AutoDig Mod
这个提交包含在:
@@ -0,0 +1,65 @@
|
||||
package autodig.client.command;
|
||||
|
||||
import autodig.client.AutoDigModClient;
|
||||
import autodig.client.config.MineTask;
|
||||
import com.mojang.brigadier.CommandDispatcher;
|
||||
import com.mojang.brigadier.arguments.StringArgumentType;
|
||||
import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource;
|
||||
import net.minecraft.text.Text;
|
||||
|
||||
/**
|
||||
* AutoDig 客户端命令。
|
||||
*
|
||||
* <p>提供 {@code /autodig gui}(打开界面)、{@code /autodig start <任务>}
|
||||
* (直接启动)、{@code /autodig stop}(停止当前任务)三个快捷入口,
|
||||
* 方便在未绑定的快捷键场景下使用。</p>
|
||||
*/
|
||||
public final class AutoDigCommands {
|
||||
|
||||
private AutoDigCommands() {
|
||||
}
|
||||
|
||||
public static void register(CommandDispatcher<FabricClientCommandSource> dispatcher) {
|
||||
dispatcher.register(com.mojang.brigadier.builder.LiteralArgumentBuilder
|
||||
.<FabricClientCommandSource>literal("autodig")
|
||||
.then(com.mojang.brigadier.builder.LiteralArgumentBuilder.<FabricClientCommandSource>literal("gui")
|
||||
.executes(ctx -> {
|
||||
AutoDigModClient.instance().openGui();
|
||||
return 1;
|
||||
}))
|
||||
.then(com.mojang.brigadier.builder.LiteralArgumentBuilder.<FabricClientCommandSource>literal("start")
|
||||
.then(com.mojang.brigadier.builder.RequiredArgumentBuilder
|
||||
.<FabricClientCommandSource, String>argument("task", StringArgumentType.word())
|
||||
.executes(ctx -> {
|
||||
String name = StringArgumentType.getString(ctx, "task");
|
||||
MineTask task = parseTask(name);
|
||||
if (task == null) {
|
||||
ctx.getSource().sendFeedback(Text.literal("未知任务: " + name + "(可用 diamond / debris)"));
|
||||
return 0;
|
||||
}
|
||||
AutoDigModClient mod = AutoDigModClient.instance();
|
||||
mod.config().task = task;
|
||||
mod.saveConfig();
|
||||
mod.sendToast("AutoDig: 已选择任务 " + task.label());
|
||||
return 1;
|
||||
})))
|
||||
.then(com.mojang.brigadier.builder.LiteralArgumentBuilder.<FabricClientCommandSource>literal("stop")
|
||||
.executes(ctx -> {
|
||||
AutoDigModClient mod = AutoDigModClient.instance();
|
||||
mod.config().task = MineTask.NONE;
|
||||
mod.saveConfig();
|
||||
mod.bridge().cancelAll();
|
||||
mod.sendToast("AutoDig: 已停止");
|
||||
return 1;
|
||||
})));
|
||||
}
|
||||
|
||||
private static MineTask parseTask(String name) {
|
||||
return switch (name.toLowerCase()) {
|
||||
case "diamond", "钻石" -> MineTask.DIAMOND;
|
||||
case "debris", "ancient_debris", "远古残骸" -> MineTask.ANCIENT_DEBRIS;
|
||||
case "none", "stop", "空闲" -> MineTask.NONE;
|
||||
default -> null;
|
||||
};
|
||||
}
|
||||
}
|
||||
在新工单中引用
屏蔽一个用户