mirror of
https://github.com/Minestom/Minestom.git
synced 2025-02-11 01:41:47 +01:00
feat: convert command parser string to generated enum
This commit is contained in:
parent
5c6fd7e849
commit
0b24134dc4
@ -34,6 +34,8 @@ public class Generators {
|
||||
resource("recipe_book_categories.json"), outputFolder).generate();
|
||||
new GenericEnumGenerator("net.minestom.server.item.component", "ConsumeEffectType",
|
||||
resource("consume_effects.json"), outputFolder).packagePrivate().generate();
|
||||
new GenericEnumGenerator("net.minestom.server.command", "ArgumentParserType",
|
||||
resource("command_arguments.json"), outputFolder).generate();
|
||||
|
||||
var generator = new CodeGenerator(outputFolder);
|
||||
|
||||
|
@ -29,6 +29,8 @@ public abstract class MinestomCodeGenerator {
|
||||
}
|
||||
|
||||
protected static String toConstant(String namespace) {
|
||||
return namespace.replace("minecraft:", "").toUpperCase(Locale.ROOT);
|
||||
return namespace.replace("minecraft:", "")
|
||||
.replace("brigadier:", "")
|
||||
.toUpperCase(Locale.ROOT);
|
||||
}
|
||||
}
|
||||
|
@ -3,7 +3,7 @@ metadata.format.version = "1.1"
|
||||
[versions]
|
||||
|
||||
# Important dependencies
|
||||
data = "1.21.2-rv1"
|
||||
data = "1.21.3-dev"
|
||||
adventure = "4.17.0"
|
||||
jetbrainsAnnotations = "24.1.0"
|
||||
slf4j = "2.0.7"
|
||||
|
@ -4,11 +4,11 @@ package net.minestom.server;
|
||||
* AUTOGENERATED by ConstantsGenerator
|
||||
*/
|
||||
interface MinecraftConstants {
|
||||
String VERSION_NAME = "1.21.2";
|
||||
String VERSION_NAME = "1.21.3";
|
||||
|
||||
int PROTOCOL_VERSION = 768;
|
||||
|
||||
int DATA_VERSION = 4080;
|
||||
int DATA_VERSION = 4082;
|
||||
|
||||
int RESOURCE_PACK_VERSION = 42;
|
||||
|
||||
|
@ -0,0 +1,141 @@
|
||||
package net.minestom.server.command;
|
||||
|
||||
import net.minestom.server.network.NetworkBuffer;
|
||||
import net.minestom.server.registry.StaticProtocolObject;
|
||||
import net.minestom.server.utils.NamespaceID;
|
||||
import net.minestom.server.utils.nbt.BinaryTagSerializer;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
/**
|
||||
* AUTOGENERATED by GenericEnumGenerator
|
||||
*/
|
||||
public enum ArgumentParserType implements StaticProtocolObject {
|
||||
BOOL(NamespaceID.from("brigadier:bool")),
|
||||
|
||||
FLOAT(NamespaceID.from("brigadier:float")),
|
||||
|
||||
DOUBLE(NamespaceID.from("brigadier:double")),
|
||||
|
||||
INTEGER(NamespaceID.from("brigadier:integer")),
|
||||
|
||||
LONG(NamespaceID.from("brigadier:long")),
|
||||
|
||||
STRING(NamespaceID.from("brigadier:string")),
|
||||
|
||||
ENTITY(NamespaceID.from("minecraft:entity")),
|
||||
|
||||
GAME_PROFILE(NamespaceID.from("minecraft:game_profile")),
|
||||
|
||||
BLOCK_POS(NamespaceID.from("minecraft:block_pos")),
|
||||
|
||||
COLUMN_POS(NamespaceID.from("minecraft:column_pos")),
|
||||
|
||||
VEC3(NamespaceID.from("minecraft:vec3")),
|
||||
|
||||
VEC2(NamespaceID.from("minecraft:vec2")),
|
||||
|
||||
BLOCK_STATE(NamespaceID.from("minecraft:block_state")),
|
||||
|
||||
BLOCK_PREDICATE(NamespaceID.from("minecraft:block_predicate")),
|
||||
|
||||
ITEM_STACK(NamespaceID.from("minecraft:item_stack")),
|
||||
|
||||
ITEM_PREDICATE(NamespaceID.from("minecraft:item_predicate")),
|
||||
|
||||
COLOR(NamespaceID.from("minecraft:color")),
|
||||
|
||||
COMPONENT(NamespaceID.from("minecraft:component")),
|
||||
|
||||
STYLE(NamespaceID.from("minecraft:style")),
|
||||
|
||||
MESSAGE(NamespaceID.from("minecraft:message")),
|
||||
|
||||
NBT_COMPOUND_TAG(NamespaceID.from("minecraft:nbt_compound_tag")),
|
||||
|
||||
NBT_TAG(NamespaceID.from("minecraft:nbt_tag")),
|
||||
|
||||
NBT_PATH(NamespaceID.from("minecraft:nbt_path")),
|
||||
|
||||
OBJECTIVE(NamespaceID.from("minecraft:objective")),
|
||||
|
||||
OBJECTIVE_CRITERIA(NamespaceID.from("minecraft:objective_criteria")),
|
||||
|
||||
OPERATION(NamespaceID.from("minecraft:operation")),
|
||||
|
||||
PARTICLE(NamespaceID.from("minecraft:particle")),
|
||||
|
||||
ANGLE(NamespaceID.from("minecraft:angle")),
|
||||
|
||||
ROTATION(NamespaceID.from("minecraft:rotation")),
|
||||
|
||||
SCOREBOARD_SLOT(NamespaceID.from("minecraft:scoreboard_slot")),
|
||||
|
||||
SCORE_HOLDER(NamespaceID.from("minecraft:score_holder")),
|
||||
|
||||
SWIZZLE(NamespaceID.from("minecraft:swizzle")),
|
||||
|
||||
TEAM(NamespaceID.from("minecraft:team")),
|
||||
|
||||
ITEM_SLOT(NamespaceID.from("minecraft:item_slot")),
|
||||
|
||||
ITEM_SLOTS(NamespaceID.from("minecraft:item_slots")),
|
||||
|
||||
RESOURCE_LOCATION(NamespaceID.from("minecraft:resource_location")),
|
||||
|
||||
FUNCTION(NamespaceID.from("minecraft:function")),
|
||||
|
||||
ENTITY_ANCHOR(NamespaceID.from("minecraft:entity_anchor")),
|
||||
|
||||
INT_RANGE(NamespaceID.from("minecraft:int_range")),
|
||||
|
||||
FLOAT_RANGE(NamespaceID.from("minecraft:float_range")),
|
||||
|
||||
DIMENSION(NamespaceID.from("minecraft:dimension")),
|
||||
|
||||
GAMEMODE(NamespaceID.from("minecraft:gamemode")),
|
||||
|
||||
TIME(NamespaceID.from("minecraft:time")),
|
||||
|
||||
RESOURCE_OR_TAG(NamespaceID.from("minecraft:resource_or_tag")),
|
||||
|
||||
RESOURCE_OR_TAG_KEY(NamespaceID.from("minecraft:resource_or_tag_key")),
|
||||
|
||||
RESOURCE(NamespaceID.from("minecraft:resource")),
|
||||
|
||||
RESOURCE_KEY(NamespaceID.from("minecraft:resource_key")),
|
||||
|
||||
TEMPLATE_MIRROR(NamespaceID.from("minecraft:template_mirror")),
|
||||
|
||||
TEMPLATE_ROTATION(NamespaceID.from("minecraft:template_rotation")),
|
||||
|
||||
HEIGHTMAP(NamespaceID.from("minecraft:heightmap")),
|
||||
|
||||
LOOT_TABLE(NamespaceID.from("minecraft:loot_table")),
|
||||
|
||||
LOOT_PREDICATE(NamespaceID.from("minecraft:loot_predicate")),
|
||||
|
||||
LOOT_MODIFIER(NamespaceID.from("minecraft:loot_modifier")),
|
||||
|
||||
UUID(NamespaceID.from("minecraft:uuid"));
|
||||
|
||||
public static final NetworkBuffer.Type<ArgumentParserType> NETWORK_TYPE = NetworkBuffer.Enum(ArgumentParserType.class);
|
||||
|
||||
public static final BinaryTagSerializer<ArgumentParserType> NBT_TYPE = BinaryTagSerializer.fromEnumKeyed(ArgumentParserType.class);
|
||||
|
||||
private final NamespaceID namespace;
|
||||
|
||||
ArgumentParserType(@NotNull NamespaceID namespace) {
|
||||
this.namespace = namespace;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public NamespaceID namespace() {
|
||||
return this.namespace;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int id() {
|
||||
return this.ordinal();
|
||||
}
|
||||
}
|
@ -1,5 +1,6 @@
|
||||
package net.minestom.server.command.builder.arguments;
|
||||
|
||||
import net.minestom.server.command.ArgumentParserType;
|
||||
import net.minestom.server.command.CommandSender;
|
||||
import net.minestom.server.command.builder.ArgumentCallback;
|
||||
import net.minestom.server.command.builder.Command;
|
||||
@ -7,9 +8,6 @@ import net.minestom.server.command.builder.CommandExecutor;
|
||||
import net.minestom.server.command.builder.arguments.minecraft.SuggestionType;
|
||||
import net.minestom.server.command.builder.exception.ArgumentSyntaxException;
|
||||
import net.minestom.server.command.builder.suggestion.SuggestionCallback;
|
||||
import net.minestom.server.registry.Registry;
|
||||
import net.minestom.server.registry.StaticProtocolObject;
|
||||
import net.minestom.server.utils.NamespaceID;
|
||||
import org.jetbrains.annotations.ApiStatus;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@ -29,17 +27,6 @@ import java.util.function.Supplier;
|
||||
* @param <T> the type of this parsed argument
|
||||
*/
|
||||
public abstract class Argument<T> {
|
||||
@ApiStatus.Internal
|
||||
public static final Registry.Container<ArgumentImpl> CONTAINER = Registry.createStaticContainer(Registry.Resource.COMMAND_ARGUMENTS,
|
||||
(namespace, properties) -> new ArgumentImpl(NamespaceID.from(namespace), properties.getInt("id")));
|
||||
|
||||
record ArgumentImpl(NamespaceID namespace, int id) implements StaticProtocolObject {
|
||||
@Override
|
||||
public String toString() {
|
||||
return name();
|
||||
}
|
||||
}
|
||||
|
||||
private final String id;
|
||||
protected final boolean allowSpace;
|
||||
protected final boolean useRemaining;
|
||||
@ -105,7 +92,7 @@ public abstract class Argument<T> {
|
||||
*/
|
||||
public abstract @NotNull T parse(@NotNull CommandSender sender, @NotNull String input) throws ArgumentSyntaxException;
|
||||
|
||||
public abstract String parser();
|
||||
public abstract ArgumentParserType parser();
|
||||
|
||||
public byte @Nullable [] nodeProperties() {
|
||||
return null;
|
||||
@ -325,7 +312,7 @@ public abstract class Argument<T> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String parser() {
|
||||
public ArgumentParserType parser() {
|
||||
return argument.parser();
|
||||
}
|
||||
|
||||
@ -359,7 +346,7 @@ public abstract class Argument<T> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String parser() {
|
||||
public ArgumentParserType parser() {
|
||||
return argument.parser();
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,6 @@
|
||||
package net.minestom.server.command.builder.arguments;
|
||||
|
||||
import net.minestom.server.command.ArgumentParserType;
|
||||
import net.minestom.server.command.CommandSender;
|
||||
import net.minestom.server.command.builder.exception.ArgumentSyntaxException;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@ -29,8 +30,8 @@ public class ArgumentBoolean extends Argument<Boolean> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String parser() {
|
||||
return "brigadier:bool";
|
||||
public ArgumentParserType parser() {
|
||||
return ArgumentParserType.BOOL;
|
||||
}
|
||||
@Override
|
||||
public String toString() {
|
||||
|
@ -1,6 +1,7 @@
|
||||
package net.minestom.server.command.builder.arguments;
|
||||
|
||||
import net.minestom.server.MinecraftServer;
|
||||
import net.minestom.server.command.ArgumentParserType;
|
||||
import net.minestom.server.command.CommandSender;
|
||||
import net.minestom.server.command.builder.CommandDispatcher;
|
||||
import net.minestom.server.command.builder.CommandResult;
|
||||
@ -8,6 +9,7 @@ import net.minestom.server.command.builder.exception.ArgumentSyntaxException;
|
||||
import net.minestom.server.utils.StringUtils;
|
||||
import org.jetbrains.annotations.ApiStatus;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
public class ArgumentCommand extends Argument<CommandResult> {
|
||||
|
||||
@ -36,7 +38,7 @@ public class ArgumentCommand extends Argument<CommandResult> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String parser() {
|
||||
public ArgumentParserType parser() {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,6 @@
|
||||
package net.minestom.server.command.builder.arguments;
|
||||
|
||||
import net.minestom.server.command.ArgumentParserType;
|
||||
import net.minestom.server.command.CommandSender;
|
||||
import net.minestom.server.command.builder.exception.ArgumentSyntaxException;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@ -41,7 +42,7 @@ public class ArgumentEnum<E extends Enum> extends Argument<E> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String parser() {
|
||||
public ArgumentParserType parser() {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,6 @@
|
||||
package net.minestom.server.command.builder.arguments;
|
||||
|
||||
import net.minestom.server.command.ArgumentParserType;
|
||||
import net.minestom.server.command.CommandSender;
|
||||
import net.minestom.server.command.builder.CommandContext;
|
||||
import net.minestom.server.command.builder.exception.ArgumentSyntaxException;
|
||||
@ -39,7 +40,7 @@ public class ArgumentGroup extends Argument<CommandContext> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String parser() {
|
||||
public ArgumentParserType parser() {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,6 @@
|
||||
package net.minestom.server.command.builder.arguments;
|
||||
|
||||
import net.minestom.server.command.ArgumentParserType;
|
||||
import net.minestom.server.command.CommandSender;
|
||||
import net.minestom.server.command.builder.exception.ArgumentSyntaxException;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@ -22,7 +23,7 @@ public class ArgumentLiteral extends Argument<String> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String parser() {
|
||||
public ArgumentParserType parser() {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,6 @@
|
||||
package net.minestom.server.command.builder.arguments;
|
||||
|
||||
import net.minestom.server.command.ArgumentParserType;
|
||||
import net.minestom.server.command.CommandSender;
|
||||
import net.minestom.server.command.builder.exception.ArgumentSyntaxException;
|
||||
import net.minestom.server.utils.StringUtils;
|
||||
@ -62,7 +63,7 @@ public class ArgumentLoop<T> extends Argument<List<T>> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String parser() {
|
||||
public ArgumentParserType parser() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
package net.minestom.server.command.builder.arguments;
|
||||
|
||||
import net.minestom.server.command.ArgumentParserType;
|
||||
import net.minestom.server.command.CommandSender;
|
||||
import net.minestom.server.command.builder.exception.ArgumentSyntaxException;
|
||||
import net.minestom.server.network.NetworkBuffer;
|
||||
@ -31,8 +32,8 @@ public class ArgumentString extends Argument<String> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String parser() {
|
||||
return "brigadier:string";
|
||||
public ArgumentParserType parser() {
|
||||
return ArgumentParserType.STRING;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -1,5 +1,6 @@
|
||||
package net.minestom.server.command.builder.arguments;
|
||||
|
||||
import net.minestom.server.command.ArgumentParserType;
|
||||
import net.minestom.server.command.CommandSender;
|
||||
import net.minestom.server.network.NetworkBuffer;
|
||||
import net.minestom.server.utils.StringUtils;
|
||||
@ -26,8 +27,8 @@ public class ArgumentStringArray extends Argument<String[]> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String parser() {
|
||||
return "brigadier:string";
|
||||
public ArgumentParserType parser() {
|
||||
return ArgumentParserType.STRING;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -1,5 +1,6 @@
|
||||
package net.minestom.server.command.builder.arguments;
|
||||
|
||||
import net.minestom.server.command.ArgumentParserType;
|
||||
import net.minestom.server.command.CommandSender;
|
||||
import net.minestom.server.command.builder.exception.ArgumentSyntaxException;
|
||||
import net.minestom.server.network.NetworkBuffer;
|
||||
@ -69,8 +70,8 @@ public class ArgumentWord extends Argument<String> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String parser() {
|
||||
return "brigadier:string";
|
||||
public ArgumentParserType parser() {
|
||||
return ArgumentParserType.STRING;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -1,5 +1,6 @@
|
||||
package net.minestom.server.command.builder.arguments.minecraft;
|
||||
|
||||
import net.minestom.server.command.ArgumentParserType;
|
||||
import net.minestom.server.command.CommandSender;
|
||||
import net.minestom.server.command.builder.arguments.Argument;
|
||||
import net.minestom.server.command.builder.exception.ArgumentSyntaxException;
|
||||
@ -24,8 +25,8 @@ public class ArgumentBlockState extends Argument<Block> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String parser() {
|
||||
return "minecraft:block_state";
|
||||
public @NotNull ArgumentParserType parser() {
|
||||
return ArgumentParserType.BLOCK_STATE;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -2,6 +2,7 @@ package net.minestom.server.command.builder.arguments.minecraft;
|
||||
|
||||
import net.kyori.adventure.text.format.NamedTextColor;
|
||||
import net.kyori.adventure.text.format.Style;
|
||||
import net.minestom.server.command.ArgumentParserType;
|
||||
import net.minestom.server.command.CommandSender;
|
||||
import net.minestom.server.command.builder.arguments.Argument;
|
||||
import net.minestom.server.command.builder.exception.ArgumentSyntaxException;
|
||||
@ -40,8 +41,8 @@ public class ArgumentColor extends Argument<Style> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String parser() {
|
||||
return "minecraft:color";
|
||||
public ArgumentParserType parser() {
|
||||
return ArgumentParserType.COLOR;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -3,6 +3,7 @@ package net.minestom.server.command.builder.arguments.minecraft;
|
||||
import com.google.gson.JsonParseException;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer;
|
||||
import net.minestom.server.command.ArgumentParserType;
|
||||
import net.minestom.server.command.CommandSender;
|
||||
import net.minestom.server.command.builder.arguments.Argument;
|
||||
import net.minestom.server.command.builder.exception.ArgumentSyntaxException;
|
||||
@ -27,8 +28,8 @@ public class ArgumentComponent extends Argument<Component> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String parser() {
|
||||
return "minecraft:component";
|
||||
public ArgumentParserType parser() {
|
||||
return ArgumentParserType.COMPONENT;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -1,5 +1,6 @@
|
||||
package net.minestom.server.command.builder.arguments.minecraft;
|
||||
|
||||
import net.minestom.server.command.ArgumentParserType;
|
||||
import net.minestom.server.command.CommandSender;
|
||||
import net.minestom.server.command.builder.arguments.Argument;
|
||||
import net.minestom.server.command.builder.exception.ArgumentSyntaxException;
|
||||
@ -72,8 +73,8 @@ public class ArgumentEntity extends Argument<EntityFinder> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String parser() {
|
||||
return "minecraft:entity";
|
||||
public ArgumentParserType parser() {
|
||||
return ArgumentParserType.ENTITY;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -1,5 +1,6 @@
|
||||
package net.minestom.server.command.builder.arguments.minecraft;
|
||||
|
||||
import net.minestom.server.command.ArgumentParserType;
|
||||
import net.minestom.server.utils.Range;
|
||||
|
||||
/**
|
||||
@ -14,8 +15,8 @@ public class ArgumentFloatRange extends ArgumentRange<Range.Float, Float> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String parser() {
|
||||
return "minecraft:float_range";
|
||||
public ArgumentParserType parser() {
|
||||
return ArgumentParserType.FLOAT_RANGE;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -1,5 +1,6 @@
|
||||
package net.minestom.server.command.builder.arguments.minecraft;
|
||||
|
||||
import net.minestom.server.command.ArgumentParserType;
|
||||
import net.minestom.server.utils.Range;
|
||||
|
||||
/**
|
||||
@ -14,8 +15,8 @@ public class ArgumentIntRange extends ArgumentRange<Range.Int, Integer> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String parser() {
|
||||
return "minecraft:int_range";
|
||||
public ArgumentParserType parser() {
|
||||
return ArgumentParserType.INT_RANGE;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -4,6 +4,7 @@ import net.kyori.adventure.nbt.BinaryTag;
|
||||
import net.kyori.adventure.nbt.CompoundBinaryTag;
|
||||
import net.kyori.adventure.nbt.TagStringIOExt;
|
||||
import net.minestom.server.MinecraftServer;
|
||||
import net.minestom.server.command.ArgumentParserType;
|
||||
import net.minestom.server.command.CommandSender;
|
||||
import net.minestom.server.command.builder.arguments.Argument;
|
||||
import net.minestom.server.command.builder.exception.ArgumentSyntaxException;
|
||||
@ -44,8 +45,8 @@ public class ArgumentItemStack extends Argument<ItemStack> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String parser() {
|
||||
return "minecraft:item_stack";
|
||||
public ArgumentParserType parser() {
|
||||
return ArgumentParserType.ITEM_STACK;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -3,6 +3,7 @@ package net.minestom.server.command.builder.arguments.minecraft;
|
||||
import net.kyori.adventure.nbt.BinaryTag;
|
||||
import net.kyori.adventure.nbt.CompoundBinaryTag;
|
||||
import net.kyori.adventure.nbt.TagStringIO;
|
||||
import net.minestom.server.command.ArgumentParserType;
|
||||
import net.minestom.server.command.CommandSender;
|
||||
import net.minestom.server.command.builder.arguments.Argument;
|
||||
import net.minestom.server.command.builder.exception.ArgumentSyntaxException;
|
||||
@ -39,8 +40,8 @@ public class ArgumentNbtCompoundTag extends Argument<CompoundBinaryTag> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String parser() {
|
||||
return "minecraft:nbt_compound_tag";
|
||||
public ArgumentParserType parser() {
|
||||
return ArgumentParserType.NBT_COMPOUND_TAG;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -2,6 +2,7 @@ package net.minestom.server.command.builder.arguments.minecraft;
|
||||
|
||||
import net.kyori.adventure.nbt.BinaryTag;
|
||||
import net.kyori.adventure.nbt.TagStringIOExt;
|
||||
import net.minestom.server.command.ArgumentParserType;
|
||||
import net.minestom.server.command.CommandSender;
|
||||
import net.minestom.server.command.builder.arguments.Argument;
|
||||
import net.minestom.server.command.builder.exception.ArgumentSyntaxException;
|
||||
@ -35,8 +36,8 @@ public class ArgumentNbtTag extends Argument<BinaryTag> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String parser() {
|
||||
return "minecraft:nbt_tag";
|
||||
public ArgumentParserType parser() {
|
||||
return ArgumentParserType.NBT_TAG;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -1,5 +1,6 @@
|
||||
package net.minestom.server.command.builder.arguments.minecraft;
|
||||
|
||||
import net.minestom.server.command.ArgumentParserType;
|
||||
import net.minestom.server.command.CommandSender;
|
||||
import net.minestom.server.command.builder.arguments.Argument;
|
||||
import net.minestom.server.command.builder.exception.ArgumentSyntaxException;
|
||||
@ -28,8 +29,8 @@ public class ArgumentResource extends Argument<String> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String parser() {
|
||||
return "minecraft:resource";
|
||||
public ArgumentParserType parser() {
|
||||
return ArgumentParserType.RESOURCE;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -1,5 +1,6 @@
|
||||
package net.minestom.server.command.builder.arguments.minecraft;
|
||||
|
||||
import net.minestom.server.command.ArgumentParserType;
|
||||
import net.minestom.server.command.CommandSender;
|
||||
import net.minestom.server.command.builder.arguments.Argument;
|
||||
import net.minestom.server.command.builder.exception.ArgumentSyntaxException;
|
||||
@ -24,8 +25,8 @@ public class ArgumentResourceLocation extends Argument<String> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String parser() {
|
||||
return "minecraft:resource_location";
|
||||
public ArgumentParserType parser() {
|
||||
return ArgumentParserType.RESOURCE_LOCATION;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -1,5 +1,6 @@
|
||||
package net.minestom.server.command.builder.arguments.minecraft;
|
||||
|
||||
import net.minestom.server.command.ArgumentParserType;
|
||||
import net.minestom.server.command.CommandSender;
|
||||
import net.minestom.server.command.builder.arguments.Argument;
|
||||
import net.minestom.server.command.builder.exception.ArgumentSyntaxException;
|
||||
@ -28,8 +29,8 @@ public class ArgumentResourceOrTag extends Argument<String> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String parser() {
|
||||
return "minecraft:resource_or_tag";
|
||||
public ArgumentParserType parser() {
|
||||
return ArgumentParserType.RESOURCE_OR_TAG;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -2,6 +2,7 @@ package net.minestom.server.command.builder.arguments.minecraft;
|
||||
|
||||
import it.unimi.dsi.fastutil.chars.CharArrayList;
|
||||
import it.unimi.dsi.fastutil.chars.CharList;
|
||||
import net.minestom.server.command.ArgumentParserType;
|
||||
import net.minestom.server.command.CommandSender;
|
||||
import net.minestom.server.command.builder.arguments.Argument;
|
||||
import net.minestom.server.command.builder.exception.ArgumentSyntaxException;
|
||||
@ -74,8 +75,8 @@ public class ArgumentTime extends Argument<Duration> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String parser() {
|
||||
return "minecraft:time";
|
||||
public ArgumentParserType parser() {
|
||||
return ArgumentParserType.TIME;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -1,5 +1,6 @@
|
||||
package net.minestom.server.command.builder.arguments.minecraft;
|
||||
|
||||
import net.minestom.server.command.ArgumentParserType;
|
||||
import net.minestom.server.command.CommandSender;
|
||||
import net.minestom.server.command.builder.arguments.Argument;
|
||||
import net.minestom.server.command.builder.exception.ArgumentSyntaxException;
|
||||
@ -26,8 +27,8 @@ public class ArgumentUUID extends Argument<UUID> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String parser() {
|
||||
return "minecraft:uuid";
|
||||
public ArgumentParserType parser() {
|
||||
return ArgumentParserType.UUID;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -1,5 +1,6 @@
|
||||
package net.minestom.server.command.builder.arguments.minecraft.registry;
|
||||
|
||||
import net.minestom.server.command.ArgumentParserType;
|
||||
import net.minestom.server.command.builder.arguments.minecraft.SuggestionType;
|
||||
import net.minestom.server.entity.EntityType;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@ -15,8 +16,8 @@ public class ArgumentEntityType extends ArgumentRegistry<EntityType> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String parser() {
|
||||
return "minecraft:resource_location";
|
||||
public ArgumentParserType parser() {
|
||||
return ArgumentParserType.RESOURCE_LOCATION;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -1,5 +1,6 @@
|
||||
package net.minestom.server.command.builder.arguments.minecraft.registry;
|
||||
|
||||
import net.minestom.server.command.ArgumentParserType;
|
||||
import net.minestom.server.particle.Particle;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@ -13,8 +14,8 @@ public class ArgumentParticle extends ArgumentRegistry<Particle> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String parser() {
|
||||
return "minecraft:particle";
|
||||
public ArgumentParserType parser() {
|
||||
return ArgumentParserType.PARTICLE;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -1,11 +1,12 @@
|
||||
package net.minestom.server.command.builder.arguments.number;
|
||||
|
||||
import net.minestom.server.command.ArgumentParserType;
|
||||
import net.minestom.server.network.NetworkBuffer;
|
||||
|
||||
public class ArgumentDouble extends ArgumentNumber<Double> {
|
||||
|
||||
public ArgumentDouble(String id) {
|
||||
super(id, "brigadier:double", Double::parseDouble, ((s, radix) -> (double) Long.parseLong(s, radix)),
|
||||
super(id, ArgumentParserType.DOUBLE, Double::parseDouble, ((s, radix) -> (double) Long.parseLong(s, radix)),
|
||||
NetworkBuffer.DOUBLE, Double::compare);
|
||||
}
|
||||
|
||||
|
@ -1,11 +1,12 @@
|
||||
package net.minestom.server.command.builder.arguments.number;
|
||||
|
||||
import net.minestom.server.command.ArgumentParserType;
|
||||
import net.minestom.server.network.NetworkBuffer;
|
||||
|
||||
public class ArgumentFloat extends ArgumentNumber<Float> {
|
||||
|
||||
public ArgumentFloat(String id) {
|
||||
super(id, "brigadier:float", Float::parseFloat, (s, radix) -> (float) Integer.parseInt(s, radix),
|
||||
super(id, ArgumentParserType.FLOAT, Float::parseFloat, (s, radix) -> (float) Integer.parseInt(s, radix),
|
||||
NetworkBuffer.FLOAT, Float::compare);
|
||||
}
|
||||
|
||||
|
@ -1,11 +1,12 @@
|
||||
package net.minestom.server.command.builder.arguments.number;
|
||||
|
||||
import net.minestom.server.command.ArgumentParserType;
|
||||
import net.minestom.server.network.NetworkBuffer;
|
||||
|
||||
public class ArgumentInteger extends ArgumentNumber<Integer> {
|
||||
|
||||
public ArgumentInteger(String id) {
|
||||
super(id, "brigadier:integer", Integer::parseInt, Integer::parseInt,
|
||||
super(id, ArgumentParserType.INTEGER, Integer::parseInt, Integer::parseInt,
|
||||
NetworkBuffer.INT, Integer::compare);
|
||||
}
|
||||
|
||||
|
@ -1,11 +1,12 @@
|
||||
package net.minestom.server.command.builder.arguments.number;
|
||||
|
||||
import net.minestom.server.command.ArgumentParserType;
|
||||
import net.minestom.server.network.NetworkBuffer;
|
||||
|
||||
public class ArgumentLong extends ArgumentNumber<Long> {
|
||||
|
||||
public ArgumentLong(String id) {
|
||||
super(id, "brigadier:long", Long::parseLong, Long::parseLong,
|
||||
super(id, ArgumentParserType.LONG, Long::parseLong, Long::parseLong,
|
||||
NetworkBuffer.LONG, Long::compare);
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,6 @@
|
||||
package net.minestom.server.command.builder.arguments.number;
|
||||
|
||||
import net.minestom.server.command.ArgumentParserType;
|
||||
import net.minestom.server.command.CommandSender;
|
||||
import net.minestom.server.command.builder.arguments.Argument;
|
||||
import net.minestom.server.command.builder.exception.ArgumentSyntaxException;
|
||||
@ -22,13 +23,13 @@ public class ArgumentNumber<T extends Number> extends Argument<T> {
|
||||
protected boolean hasMin, hasMax;
|
||||
protected T min, max;
|
||||
|
||||
protected final String parserName;
|
||||
protected final ArgumentParserType parserName;
|
||||
protected final BiFunction<String, Integer, T> radixParser;
|
||||
protected final Function<String, T> parser;
|
||||
protected final NetworkBuffer.Type<T> networkType;
|
||||
protected final Comparator<T> comparator;
|
||||
|
||||
ArgumentNumber(@NotNull String id, String parserName, Function<String, T> parser,
|
||||
ArgumentNumber(@NotNull String id, ArgumentParserType parserName, Function<String, T> parser,
|
||||
BiFunction<String, Integer, T> radixParser, NetworkBuffer.Type<T> networkType,
|
||||
Comparator<T> comparator) {
|
||||
super(id);
|
||||
@ -65,7 +66,7 @@ public class ArgumentNumber<T extends Number> extends Argument<T> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String parser() {
|
||||
public ArgumentParserType parser() {
|
||||
return parserName;
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,6 @@
|
||||
package net.minestom.server.command.builder.arguments.relative;
|
||||
|
||||
import net.minestom.server.command.ArgumentParserType;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.function.Function;
|
||||
@ -16,8 +17,8 @@ public class ArgumentRelativeBlockPosition extends ArgumentRelativeVec {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String parser() {
|
||||
return "minecraft:block_pos";
|
||||
public ArgumentParserType parser() {
|
||||
return ArgumentParserType.BLOCK_POS;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -1,5 +1,6 @@
|
||||
package net.minestom.server.command.builder.arguments.relative;
|
||||
|
||||
import net.minestom.server.command.ArgumentParserType;
|
||||
import net.minestom.server.coordinate.Vec;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@ -17,8 +18,8 @@ public class ArgumentRelativeVec2 extends ArgumentRelativeVec {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String parser() {
|
||||
return "minecraft:vec2";
|
||||
public ArgumentParserType parser() {
|
||||
return ArgumentParserType.VEC2;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -1,5 +1,6 @@
|
||||
package net.minestom.server.command.builder.arguments.relative;
|
||||
|
||||
import net.minestom.server.command.ArgumentParserType;
|
||||
import net.minestom.server.coordinate.Vec;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@ -17,8 +18,8 @@ public class ArgumentRelativeVec3 extends ArgumentRelativeVec {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String parser() {
|
||||
return "minecraft:vec3";
|
||||
public ArgumentParserType parser() {
|
||||
return ArgumentParserType.VEC3;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -1,10 +1,9 @@
|
||||
package net.minestom.server.network.packet.server.play;
|
||||
|
||||
import net.minestom.server.command.builder.arguments.Argument;
|
||||
import net.minestom.server.command.ArgumentParserType;
|
||||
import net.minestom.server.network.NetworkBuffer;
|
||||
import net.minestom.server.network.NetworkBufferTemplate;
|
||||
import net.minestom.server.network.packet.server.ServerPacket;
|
||||
import net.minestom.server.registry.StaticProtocolObject;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.List;
|
||||
@ -36,7 +35,7 @@ public record DeclareCommandsPacket(@NotNull List<Node> nodes,
|
||||
public int[] children = new int[0];
|
||||
public int redirectedNode; // Only if flags & 0x08
|
||||
public String name = ""; // Only for literal and argument
|
||||
public String parser; // Only for argument
|
||||
public ArgumentParserType parser; // Only for argument
|
||||
public byte[] properties; // Only for argument
|
||||
public String suggestionsType = ""; // Only if flags 0x10
|
||||
|
||||
@ -59,8 +58,7 @@ public record DeclareCommandsPacket(@NotNull List<Node> nodes,
|
||||
}
|
||||
|
||||
if (value.isArgument()) {
|
||||
final int parserId = Argument.CONTAINER.toId(value.parser);
|
||||
writer.write(VAR_INT, parserId);
|
||||
writer.write(ArgumentParserType.NETWORK_TYPE, value.parser);
|
||||
if (value.properties != null) {
|
||||
writer.write(RAW_BYTES, value.properties);
|
||||
}
|
||||
@ -84,8 +82,7 @@ public record DeclareCommandsPacket(@NotNull List<Node> nodes,
|
||||
}
|
||||
|
||||
if (node.isArgument()) {
|
||||
final StaticProtocolObject object = Argument.CONTAINER.getId(reader.read(VAR_INT));
|
||||
node.parser = object.name();
|
||||
node.parser = reader.read(ArgumentParserType.NETWORK_TYPE);
|
||||
node.properties = node.getProperties(reader, node.parser);
|
||||
}
|
||||
|
||||
@ -96,7 +93,7 @@ public record DeclareCommandsPacket(@NotNull List<Node> nodes,
|
||||
}
|
||||
};
|
||||
|
||||
private byte[] getProperties(@NotNull NetworkBuffer reader, String parser) {
|
||||
private byte[] getProperties(@NotNull NetworkBuffer reader, @NotNull ArgumentParserType parser) {
|
||||
final Function<Function<NetworkBuffer, ?>, byte[]> minMaxExtractor = (via) -> reader.extractBytes((extractor) -> {
|
||||
byte flags = extractor.read(BYTE);
|
||||
if ((flags & 0x01) == 0x01) {
|
||||
@ -107,15 +104,14 @@ public record DeclareCommandsPacket(@NotNull List<Node> nodes,
|
||||
}
|
||||
});
|
||||
return switch (parser) {
|
||||
case "brigadier:double" -> minMaxExtractor.apply(b -> b.read(DOUBLE));
|
||||
case "brigadier:integer" -> minMaxExtractor.apply(b -> b.read(INT));
|
||||
case "brigadier:float" -> minMaxExtractor.apply(b -> b.read(FLOAT));
|
||||
case "brigadier:long" -> minMaxExtractor.apply(b -> b.read(LONG));
|
||||
case "brigadier:string" -> reader.extractBytes(b -> b.read(VAR_INT));
|
||||
case "minecraft:entity", "minecraft:score_holder" -> reader.extractBytes(b -> b.read(BYTE));
|
||||
case "minecraft:range" ->
|
||||
reader.extractBytes(b -> b.read(BOOLEAN)); // https://wiki.vg/Command_Data#minecraft:range, looks fishy
|
||||
case "minecraft:resource_or_tag", "minecraft:registry" -> reader.extractBytes(b -> b.read(STRING));
|
||||
case DOUBLE -> minMaxExtractor.apply(b -> b.read(DOUBLE));
|
||||
case INTEGER -> minMaxExtractor.apply(b -> b.read(INT));
|
||||
case FLOAT -> minMaxExtractor.apply(b -> b.read(FLOAT));
|
||||
case LONG -> minMaxExtractor.apply(b -> b.read(LONG));
|
||||
case STRING -> reader.extractBytes(b -> b.read(VAR_INT));
|
||||
case ENTITY, SCORE_HOLDER -> reader.extractBytes(b -> b.read(BYTE));
|
||||
case TIME -> reader.extractBytes(b -> b.read(INT));
|
||||
case RESOURCE_OR_TAG, RESOURCE_OR_TAG_KEY, RESOURCE, RESOURCE_KEY -> reader.extractBytes(b -> b.read(STRING));
|
||||
default -> new byte[0]; // unknown
|
||||
};
|
||||
}
|
||||
|
@ -214,7 +214,6 @@ public final class Registry {
|
||||
ENTITIES("entities.json"),
|
||||
FEATURE_FLAGS("feature_flags.json"),
|
||||
SOUNDS("sounds.json"),
|
||||
COMMAND_ARGUMENTS("command_arguments.json"),
|
||||
STATISTICS("custom_statistics.json"),
|
||||
POTION_EFFECTS("potion_effects.json"),
|
||||
POTION_TYPES("potions.json"),
|
||||
|
@ -1,5 +1,6 @@
|
||||
package net.minestom.server.command;
|
||||
|
||||
import net.minestom.server.MinecraftServer;
|
||||
import net.minestom.server.command.builder.Command;
|
||||
import net.minestom.server.command.builder.CommandContext;
|
||||
import net.minestom.server.command.builder.arguments.ArgumentType;
|
||||
@ -10,6 +11,10 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
||||
|
||||
public class CommandPacketTest {
|
||||
static {
|
||||
MinecraftServer.init();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void singleCommandWithOneSyntax() {
|
||||
final Command foo = new Command("foo");
|
||||
@ -49,12 +54,12 @@ public class CommandPacketTest {
|
||||
execute facing at as in run=%
|
||||
overworld the_nether the_end=§
|
||||
0->execute
|
||||
atEnt asEnt=targets minecraft:entity 0
|
||||
atEnt asEnt=targets ENTITY 0
|
||||
execute->facing at as in run
|
||||
at->atEnt
|
||||
as->asEnt
|
||||
in->overworld the_nether the_end
|
||||
pos=! minecraft:vec3
|
||||
pos=! VEC3
|
||||
facing->pos
|
||||
pos atEnt asEnt overworld the_nether the_end+>execute
|
||||
run+>0
|
||||
@ -95,7 +100,7 @@ public class CommandPacketTest {
|
||||
.build();
|
||||
assertPacketGraph("""
|
||||
foo=%
|
||||
bar=! brigadier:string 0
|
||||
bar=! STRING 0
|
||||
0->foo
|
||||
foo->bar
|
||||
""", graph);
|
||||
@ -128,7 +133,7 @@ public class CommandPacketTest {
|
||||
foo bar=%
|
||||
0->foo bar
|
||||
a b c d e f=§
|
||||
int1 int2 int3 int4=! brigadier:integer 0
|
||||
int1 int2 int3 int4=! INTEGER 0
|
||||
foo->int1
|
||||
bar->int3
|
||||
int1->a b c
|
||||
@ -146,7 +151,7 @@ public class CommandPacketTest {
|
||||
.build();
|
||||
assertPacketGraph("""
|
||||
foo=%
|
||||
int1 int2 int3 int4=! brigadier:integer 0
|
||||
int1 int2 int3 int4=! INTEGER 0
|
||||
0->foo
|
||||
foo->int1
|
||||
int1->int2
|
||||
@ -205,7 +210,7 @@ public class CommandPacketTest {
|
||||
bar->cmd
|
||||
cmd+>foo
|
||||
foo->msg
|
||||
msg=! brigadier:string 1
|
||||
msg=! STRING 1
|
||||
""", foo, bar);
|
||||
}
|
||||
|
||||
@ -223,7 +228,7 @@ public class CommandPacketTest {
|
||||
bar->cmd
|
||||
cmd+>foo
|
||||
foo->msg
|
||||
msg=! brigadier:string 1
|
||||
msg=! STRING 1
|
||||
""", foo, bar);
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,6 @@
|
||||
package net.minestom.server.network.packet;
|
||||
|
||||
import net.minestom.server.command.ArgumentParserType;
|
||||
import net.minestom.server.network.NetworkBuffer;
|
||||
import net.minestom.server.network.packet.server.play.DeclareCommandsPacket;
|
||||
import org.junit.jupiter.api.Test;
|
||||
@ -15,11 +16,11 @@ public class DeclareCommandsPacketTest {
|
||||
void testWriteGameProfileArg() {
|
||||
var root = new DeclareCommandsPacket.Node();
|
||||
root.flags = getFlag(DeclareCommandsPacket.NodeType.ARGUMENT, false, false, false);
|
||||
root.parser = "minecraft:game_profile";
|
||||
root.parser = ArgumentParserType.GAME_PROFILE;
|
||||
var packet = new DeclareCommandsPacket(List.of(root), 0);
|
||||
|
||||
var array = NetworkBuffer.makeArray(DeclareCommandsPacket.SERIALIZER, packet);
|
||||
var readPacket = NetworkBuffer.wrap(array, 0, array.length).read(DeclareCommandsPacket.SERIALIZER);
|
||||
assertEquals("minecraft:game_profile", readPacket.nodes().getFirst().parser);
|
||||
assertEquals(ArgumentParserType.GAME_PROFILE, readPacket.nodes().getFirst().parser);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user