From cac3c29e41d708bfd7e26a1edf1ad6bffeda2aef Mon Sep 17 00:00:00 2001 From: Felix Cravic Date: Fri, 27 Nov 2020 11:24:32 +0100 Subject: [PATCH] Added block command argument type --- .../minestom/server/command/CommandManager.java | 10 +++++----- .../server/command/builder/Arguments.java | 6 ++++++ .../command/builder/arguments/ArgumentType.java | 9 +++++---- .../minecraft/registry/ArgumentBlockState.java | 17 +++++++++++++++++ .../minecraft/registry/ArgumentRegistry.java | 2 +- 5 files changed, 34 insertions(+), 10 deletions(-) create mode 100644 src/main/java/net/minestom/server/command/builder/arguments/minecraft/registry/ArgumentBlockState.java diff --git a/src/main/java/net/minestom/server/command/CommandManager.java b/src/main/java/net/minestom/server/command/CommandManager.java index c0e003a86..d42efed8e 100644 --- a/src/main/java/net/minestom/server/command/CommandManager.java +++ b/src/main/java/net/minestom/server/command/CommandManager.java @@ -7,10 +7,7 @@ import net.minestom.server.command.builder.CommandDispatcher; import net.minestom.server.command.builder.CommandSyntax; import net.minestom.server.command.builder.arguments.*; import net.minestom.server.command.builder.arguments.minecraft.*; -import net.minestom.server.command.builder.arguments.minecraft.registry.ArgumentEnchantment; -import net.minestom.server.command.builder.arguments.minecraft.registry.ArgumentEntityType; -import net.minestom.server.command.builder.arguments.minecraft.registry.ArgumentParticle; -import net.minestom.server.command.builder.arguments.minecraft.registry.ArgumentPotionEffect; +import net.minestom.server.command.builder.arguments.minecraft.registry.*; import net.minestom.server.command.builder.arguments.number.ArgumentDouble; import net.minestom.server.command.builder.arguments.number.ArgumentFloat; import net.minestom.server.command.builder.arguments.number.ArgumentInteger; @@ -502,7 +499,7 @@ public final class CommandManager { // You can uncomment this to test any brigadier parser on the client /*DeclareCommandsPacket.Node testNode = simpleArgumentNode(nodes, argument, executable, false); - testNode.parser = "minecraft:vec3"; + testNode.parser = "minecraft:block_state"; if (true) { return nodes; @@ -628,6 +625,9 @@ public final class CommandManager { } else if (argument instanceof ArgumentEntityType) { DeclareCommandsPacket.Node argumentNode = simpleArgumentNode(nodes, argument, executable, false); argumentNode.parser = "minecraft:entity_summon"; + } else if (argument instanceof ArgumentBlockState) { + DeclareCommandsPacket.Node argumentNode = simpleArgumentNode(nodes, argument, executable, false); + argumentNode.parser = "minecraft:block_state"; } else if (argument instanceof ArgumentIntRange) { DeclareCommandsPacket.Node argumentNode = simpleArgumentNode(nodes, argument, executable, false); argumentNode.parser = "minecraft:int_range"; diff --git a/src/main/java/net/minestom/server/command/builder/Arguments.java b/src/main/java/net/minestom/server/command/builder/Arguments.java index bee9098d3..82784a2d4 100644 --- a/src/main/java/net/minestom/server/command/builder/Arguments.java +++ b/src/main/java/net/minestom/server/command/builder/Arguments.java @@ -3,6 +3,7 @@ package net.minestom.server.command.builder; import net.minestom.server.chat.ChatColor; import net.minestom.server.entity.Entity; import net.minestom.server.entity.EntityType; +import net.minestom.server.instance.block.Block; import net.minestom.server.item.Enchantment; import net.minestom.server.item.ItemStack; import net.minestom.server.particle.Particle; @@ -98,6 +99,11 @@ public final class Arguments { return (EntityType) getObject(id); } + @NotNull + public Block getBlockState(@NotNull String id) { + return (Block) getObject(id); + } + @NotNull public IntRange getIntRange(@NotNull String id) { return (IntRange) getObject(id); diff --git a/src/main/java/net/minestom/server/command/builder/arguments/ArgumentType.java b/src/main/java/net/minestom/server/command/builder/arguments/ArgumentType.java index ea59cce95..1436e8674 100644 --- a/src/main/java/net/minestom/server/command/builder/arguments/ArgumentType.java +++ b/src/main/java/net/minestom/server/command/builder/arguments/ArgumentType.java @@ -1,10 +1,7 @@ package net.minestom.server.command.builder.arguments; import net.minestom.server.command.builder.arguments.minecraft.*; -import net.minestom.server.command.builder.arguments.minecraft.registry.ArgumentEnchantment; -import net.minestom.server.command.builder.arguments.minecraft.registry.ArgumentEntityType; -import net.minestom.server.command.builder.arguments.minecraft.registry.ArgumentParticle; -import net.minestom.server.command.builder.arguments.minecraft.registry.ArgumentPotionEffect; +import net.minestom.server.command.builder.arguments.minecraft.registry.*; import net.minestom.server.command.builder.arguments.number.ArgumentDouble; import net.minestom.server.command.builder.arguments.number.ArgumentFloat; import net.minestom.server.command.builder.arguments.number.ArgumentInteger; @@ -91,6 +88,10 @@ public class ArgumentType { return new ArgumentEntityType(id); } + public static ArgumentBlockState BlockState(@NotNull String id) { + return new ArgumentBlockState(id); + } + public static ArgumentIntRange IntRange(@NotNull String id) { return new ArgumentIntRange(id); } diff --git a/src/main/java/net/minestom/server/command/builder/arguments/minecraft/registry/ArgumentBlockState.java b/src/main/java/net/minestom/server/command/builder/arguments/minecraft/registry/ArgumentBlockState.java new file mode 100644 index 000000000..bf6df3667 --- /dev/null +++ b/src/main/java/net/minestom/server/command/builder/arguments/minecraft/registry/ArgumentBlockState.java @@ -0,0 +1,17 @@ +package net.minestom.server.command.builder.arguments.minecraft.registry; + +import net.minestom.server.instance.block.Block; +import net.minestom.server.registry.Registries; +import org.jetbrains.annotations.NotNull; + +public class ArgumentBlockState extends ArgumentRegistry { + + public ArgumentBlockState(@NotNull String id) { + super(id); + } + + @Override + public Block getRegistry(String value) { + return Registries.getBlock(value); + } +} diff --git a/src/main/java/net/minestom/server/command/builder/arguments/minecraft/registry/ArgumentRegistry.java b/src/main/java/net/minestom/server/command/builder/arguments/minecraft/registry/ArgumentRegistry.java index 02e3ef6ca..7c7eeea82 100644 --- a/src/main/java/net/minestom/server/command/builder/arguments/minecraft/registry/ArgumentRegistry.java +++ b/src/main/java/net/minestom/server/command/builder/arguments/minecraft/registry/ArgumentRegistry.java @@ -11,7 +11,7 @@ public abstract class ArgumentRegistry extends Argument { super(id); } - public abstract T getRegistry(String value); + public abstract T getRegistry(@NotNull String value); @Override public int getCorrectionResult(@NotNull String value) {