From 17ac6def0ad32702e946805022ebf6f6e7b355ea Mon Sep 17 00:00:00 2001 From: Keuin Date: Fri, 4 Jun 2021 19:55:23 +0800 Subject: add auto complete for command `/blame block`. --- src/main/java/com/keuin/blame/Blame.java | 43 +++++++++------------- .../com/keuin/blame/command/BlameBlockCommand.java | 19 +++++++--- 2 files changed, 31 insertions(+), 31 deletions(-) (limited to 'src/main/java') diff --git a/src/main/java/com/keuin/blame/Blame.java b/src/main/java/com/keuin/blame/Blame.java index b14102f..51e9049 100644 --- a/src/main/java/com/keuin/blame/Blame.java +++ b/src/main/java/com/keuin/blame/Blame.java @@ -10,16 +10,14 @@ import com.keuin.blame.config.BlameConfig; import com.keuin.blame.lookup.LookupManager; import com.keuin.blame.util.DatabaseUtil; import com.keuin.blame.util.PrintUtil; -import com.mojang.brigadier.CommandDispatcher; import com.mojang.brigadier.arguments.IntegerArgumentType; -import com.mojang.brigadier.arguments.StringArgumentType; import net.fabricmc.api.ModInitializer; import net.fabricmc.fabric.api.command.v1.CommandRegistrationCallback; import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents; import net.fabricmc.fabric.api.event.player.*; -import net.minecraft.server.MinecraftServer; +import net.minecraft.command.argument.BlockPosArgumentType; +import net.minecraft.command.argument.DimensionArgumentType; import net.minecraft.server.command.CommandManager; -import net.minecraft.server.command.ServerCommandSource; import java.io.File; import java.io.IOException; @@ -89,27 +87,22 @@ public class Blame implements ModInitializer { ServerLifecycleEvents.SERVER_STARTED.register(PrintUtil.INSTANCE); // register - CommandRegistrationCallback.EVENT.register(new CommandRegistrationCallback() { - @Override - public void register(CommandDispatcher commandDispatcher, boolean b) { - commandDispatcher.register( - CommandManager.literal("blame").then(CommandManager.literal("block") - .then(CommandManager.argument("x", IntegerArgumentType.integer()) - .then(CommandManager.argument("y", IntegerArgumentType.integer()) - .then(CommandManager.argument("z", IntegerArgumentType.integer()) - .then(CommandManager.argument("world", StringArgumentType.greedyString()) - .executes(BlameBlockCommand::blameGivenBlockPos)))))) - ); - commandDispatcher.register( - CommandManager.literal("blame").then(CommandManager.literal("limit") - .then(CommandManager.argument("limit", IntegerArgumentType.integer(1, 255)) - .executes(BlameLimitCommand::setLimit))) - ); - commandDispatcher.register( - CommandManager.literal("blame").then(CommandManager.literal("stat") - .executes(BlameStatCommand::showStat)) - ); - } + CommandRegistrationCallback.EVENT.register((commandDispatcher, b) -> { + commandDispatcher.register( + CommandManager.literal("blame").then(CommandManager.literal("block") + .then(CommandManager.argument("pos", BlockPosArgumentType.blockPos()) + .then(CommandManager.argument("world", DimensionArgumentType.dimension()) + .executes(BlameBlockCommand::blameGivenBlockPos)))) + ); + commandDispatcher.register( + CommandManager.literal("blame").then(CommandManager.literal("limit") + .then(CommandManager.argument("limit", IntegerArgumentType.integer(1, 255)) + .executes(BlameLimitCommand::setLimit))) + ); + commandDispatcher.register( + CommandManager.literal("blame").then(CommandManager.literal("stat") + .executes(BlameStatCommand::showStat)) + ); }); } } diff --git a/src/main/java/com/keuin/blame/command/BlameBlockCommand.java b/src/main/java/com/keuin/blame/command/BlameBlockCommand.java index c1702b9..d82e4c4 100644 --- a/src/main/java/com/keuin/blame/command/BlameBlockCommand.java +++ b/src/main/java/com/keuin/blame/command/BlameBlockCommand.java @@ -7,9 +7,13 @@ import com.keuin.blame.lookup.LookupCallback; import com.keuin.blame.lookup.LookupManager; import com.keuin.blame.util.PrintUtil; import com.mojang.brigadier.context.CommandContext; +import com.mojang.brigadier.exceptions.CommandSyntaxException; +import net.minecraft.command.argument.BlockPosArgumentType; import net.minecraft.entity.Entity; import net.minecraft.server.command.ServerCommandSource; import net.minecraft.server.network.ServerPlayerEntity; +import net.minecraft.util.Identifier; +import net.minecraft.util.math.BlockPos; import static com.keuin.blame.command.Commands.FAILED; import static com.keuin.blame.command.Commands.SUCCESS; @@ -17,7 +21,9 @@ import static com.keuin.blame.command.Commands.SUCCESS; @SuppressWarnings("SameReturnValue") public class BlameBlockCommand { - public static int blameGivenBlockPos(CommandContext context) { + public static int blameGivenBlockPos(CommandContext context) throws CommandSyntaxException { + // pos + // world Entity entity = context.getSource().getEntity(); if (!(entity instanceof ServerPlayerEntity)) { // can only be executed by player @@ -25,12 +31,13 @@ public class BlameBlockCommand { } ServerPlayerEntity playerEntity = (ServerPlayerEntity) entity; - int x = context.getArgument("x", Integer.class); - int y = context.getArgument("y", Integer.class); - int z = context.getArgument("z", Integer.class); - String world = context.getArgument("world", String.class); + BlockPos pos = BlockPosArgumentType.getLoadedBlockPos(context, "pos"); + int x = pos.getX(); + int y = pos.getY(); + int z = pos.getZ(); + Identifier world = context.getArgument("world", Identifier.class); // String world = MinecraftUtil.worldToString(playerEntity.world); - WorldPos blockPos = new WorldPos(world, x, y, z); + WorldPos blockPos = new WorldPos(world.toString(), x, y, z); LookupManager.INSTANCE.lookup( new BlockPosLookupFilter(blockPos), new Callback(context), -- cgit v1.2.3