Use protected COMMAND_MANAGER field

This commit is contained in:
LeoDog896 2021-02-08 18:54:55 -05:00
parent f300d60411
commit e809e69a07
27 changed files with 54 additions and 49 deletions

View File

@ -1,5 +1,7 @@
package net.minestom.server.command.builder.arguments;
import net.minestom.server.MinecraftServer;
import net.minestom.server.command.CommandManager;
import net.minestom.server.command.builder.ArgumentCallback;
import net.minestom.server.command.builder.Command;
import net.minestom.server.command.builder.CommandExecutor;
@ -21,6 +23,8 @@ import java.util.List;
*/
public abstract class Argument<T> {
protected final static CommandManager COMMAND_MANAGER = MinecraftServer.getCommandManager();
private final String id;
private final boolean allowSpace;
private final boolean useRemaining;

View File

@ -1,13 +1,9 @@
package net.minestom.server.command.builder.arguments;
import net.minestom.server.MinecraftServer;
import net.minestom.server.command.CommandManager;
import net.minestom.server.command.builder.exception.ArgumentSyntaxException;
import net.minestom.server.network.packet.server.play.DeclareCommandsPacket;
import org.jetbrains.annotations.NotNull;
import java.util.List;
/**
* Represents a boolean value.
* <p>
@ -35,7 +31,7 @@ public class ArgumentBoolean extends Argument<Boolean> {
@NotNull
@Override
public DeclareCommandsPacket.Node[] toNodes(boolean executable) {
DeclareCommandsPacket.Node argumentNode = MinecraftServer.getCommandManager().simpleArgumentNode(this, executable, false);
DeclareCommandsPacket.Node argumentNode = COMMAND_MANAGER.simpleArgumentNode(this, executable, false);
argumentNode.parser = "brigadier:bool";

View File

@ -1,6 +1,5 @@
package net.minestom.server.command.builder.arguments;
import net.minestom.server.MinecraftServer;
import net.minestom.server.command.CommandSender;
import net.minestom.server.command.builder.exception.ArgumentSyntaxException;
import net.minestom.server.network.packet.server.play.DeclareCommandsPacket;
@ -41,7 +40,7 @@ public class ArgumentDynamicStringArray extends Argument<String[]> {
@NotNull
@Override
public DeclareCommandsPacket.Node[] toNodes(boolean executable) {
DeclareCommandsPacket.Node argumentNode = MinecraftServer.getCommandManager().simpleArgumentNode(this, executable, true);
DeclareCommandsPacket.Node argumentNode = COMMAND_MANAGER.simpleArgumentNode(this, executable, true);
argumentNode.parser = "brigadier:string";
argumentNode.properties = packetWriter -> {

View File

@ -1,6 +1,5 @@
package net.minestom.server.command.builder.arguments;
import net.minestom.server.MinecraftServer;
import net.minestom.server.command.CommandSender;
import net.minestom.server.command.builder.arguments.minecraft.SuggestionType;
import net.minestom.server.command.builder.exception.ArgumentSyntaxException;
@ -48,7 +47,7 @@ public class ArgumentDynamicWord extends Argument<String> {
@NotNull
@Override
public DeclareCommandsPacket.Node[] toNodes(boolean executable) {
DeclareCommandsPacket.Node argumentNode = MinecraftServer.getCommandManager().simpleArgumentNode(this, executable, true);
DeclareCommandsPacket.Node argumentNode = COMMAND_MANAGER.simpleArgumentNode(this, executable, true);
final SuggestionType suggestionType = this.getSuggestionType();

View File

@ -1,6 +1,5 @@
package net.minestom.server.command.builder.arguments;
import net.minestom.server.MinecraftServer;
import net.minestom.server.command.builder.exception.ArgumentSyntaxException;
import net.minestom.server.network.packet.server.play.DeclareCommandsPacket;
import org.apache.commons.text.StringEscapeUtils;
@ -28,7 +27,7 @@ public class ArgumentString extends Argument<String> {
@NotNull
@Override
public DeclareCommandsPacket.Node[] toNodes(boolean executable) {
DeclareCommandsPacket.Node argumentNode = MinecraftServer.getCommandManager().simpleArgumentNode(this, executable, false);
DeclareCommandsPacket.Node argumentNode = COMMAND_MANAGER.simpleArgumentNode(this, executable, false);
argumentNode.parser = "brigadier:string";
argumentNode.properties = packetWriter -> {

View File

@ -1,6 +1,5 @@
package net.minestom.server.command.builder.arguments;
import net.minestom.server.MinecraftServer;
import net.minestom.server.command.builder.exception.ArgumentSyntaxException;
import net.minestom.server.network.packet.server.play.DeclareCommandsPacket;
import org.apache.commons.lang3.StringUtils;
@ -28,7 +27,7 @@ public class ArgumentStringArray extends Argument<String[]> {
@NotNull
@Override
public DeclareCommandsPacket.Node[] toNodes(boolean executable) {
DeclareCommandsPacket.Node argumentNode = MinecraftServer.getCommandManager().simpleArgumentNode(this, executable, false);
DeclareCommandsPacket.Node argumentNode = COMMAND_MANAGER.simpleArgumentNode(this, executable, false);
argumentNode.parser = "brigadier:string";
argumentNode.properties = packetWriter -> {

View File

@ -94,7 +94,7 @@ public class ArgumentWord extends Argument<String> {
for (int i = 0; i < nodes.length; i++) {
DeclareCommandsPacket.Node argumentNode = new DeclareCommandsPacket.Node();
argumentNode.flags = MinecraftServer.getCommandManager().getFlag(CommandManager.NodeType.LITERAL, executable, false, false);
argumentNode.flags = COMMAND_MANAGER.getFlag(CommandManager.NodeType.LITERAL, executable, false, false);
argumentNode.name = this.getRestrictions()[i];
wordConsumer.accept(argumentNode);
nodes[i] = argumentNode;

View File

@ -1,6 +1,5 @@
package net.minestom.server.command.builder.arguments.minecraft;
import net.minestom.server.MinecraftServer;
import net.minestom.server.chat.ChatColor;
import net.minestom.server.command.builder.arguments.Argument;
import net.minestom.server.command.builder.exception.ArgumentSyntaxException;
@ -33,7 +32,7 @@ public class ArgumentColor extends Argument<ChatColor> {
@NotNull
@Override
public DeclareCommandsPacket.Node[] toNodes(boolean executable) {
DeclareCommandsPacket.Node argumentNode = MinecraftServer.getCommandManager().simpleArgumentNode(this, executable, false);
DeclareCommandsPacket.Node argumentNode = COMMAND_MANAGER.simpleArgumentNode(this, executable, false);
argumentNode.parser = "minecraft:color";
return new DeclareCommandsPacket.Node[]{argumentNode};
}

View File

@ -1,6 +1,5 @@
package net.minestom.server.command.builder.arguments.minecraft;
import net.minestom.server.MinecraftServer;
import net.minestom.server.command.builder.exception.ArgumentSyntaxException;
import net.minestom.server.network.packet.server.play.DeclareCommandsPacket;
import net.minestom.server.utils.math.FloatRange;
@ -58,7 +57,7 @@ public class ArgumentFloatRange extends ArgumentRange<FloatRange> {
@NotNull
@Override
public DeclareCommandsPacket.Node[] toNodes(boolean executable) {
DeclareCommandsPacket.Node argumentNode = MinecraftServer.getCommandManager().simpleArgumentNode(this, executable, false);
DeclareCommandsPacket.Node argumentNode = COMMAND_MANAGER.simpleArgumentNode(this, executable, false);
argumentNode.parser = "minecraft:float_range";
return new DeclareCommandsPacket.Node[]{argumentNode};
}

View File

@ -1,6 +1,5 @@
package net.minestom.server.command.builder.arguments.minecraft;
import net.minestom.server.MinecraftServer;
import net.minestom.server.command.builder.exception.ArgumentSyntaxException;
import net.minestom.server.network.packet.server.play.DeclareCommandsPacket;
import net.minestom.server.utils.math.IntRange;
@ -63,7 +62,7 @@ public class ArgumentIntRange extends ArgumentRange<IntRange> {
@NotNull
@Override
public DeclareCommandsPacket.Node[] toNodes(boolean executable) {
DeclareCommandsPacket.Node argumentNode = MinecraftServer.getCommandManager().simpleArgumentNode(this, executable, false);
DeclareCommandsPacket.Node argumentNode = COMMAND_MANAGER.simpleArgumentNode(this, executable, false);
argumentNode.parser = "minecraft:int_range";
return new DeclareCommandsPacket.Node[]{argumentNode};
}

View File

@ -1,6 +1,5 @@
package net.minestom.server.command.builder.arguments.minecraft;
import net.minestom.server.MinecraftServer;
import net.minestom.server.command.builder.arguments.Argument;
import net.minestom.server.command.builder.exception.ArgumentSyntaxException;
import net.minestom.server.item.ItemStack;
@ -67,7 +66,7 @@ public class ArgumentItemStack extends Argument<ItemStack> {
@NotNull
@Override
public DeclareCommandsPacket.Node[] toNodes(boolean executable) {
DeclareCommandsPacket.Node argumentNode = MinecraftServer.getCommandManager().simpleArgumentNode(this, executable, false);
DeclareCommandsPacket.Node argumentNode = COMMAND_MANAGER.simpleArgumentNode(this, executable, false);
argumentNode.parser = "minecraft:item_stack";
return new DeclareCommandsPacket.Node[]{argumentNode};
}

View File

@ -1,6 +1,5 @@
package net.minestom.server.command.builder.arguments.minecraft;
import net.minestom.server.MinecraftServer;
import net.minestom.server.command.builder.arguments.Argument;
import net.minestom.server.command.builder.exception.ArgumentSyntaxException;
import net.minestom.server.network.packet.server.play.DeclareCommandsPacket;
@ -43,7 +42,7 @@ public class ArgumentNbtCompoundTag extends Argument<NBTCompound> {
@NotNull
@Override
public DeclareCommandsPacket.Node[] toNodes(boolean executable) {
DeclareCommandsPacket.Node argumentNode = MinecraftServer.getCommandManager().simpleArgumentNode(this, executable, false);
DeclareCommandsPacket.Node argumentNode = COMMAND_MANAGER.simpleArgumentNode(this, executable, false);
argumentNode.parser = "minecraft:nbt_compound_tag";
return new DeclareCommandsPacket.Node[]{argumentNode};
}

View File

@ -1,6 +1,5 @@
package net.minestom.server.command.builder.arguments.minecraft;
import net.minestom.server.MinecraftServer;
import net.minestom.server.command.builder.arguments.Argument;
import net.minestom.server.command.builder.exception.ArgumentSyntaxException;
import net.minestom.server.network.packet.server.play.DeclareCommandsPacket;
@ -39,7 +38,7 @@ public class ArgumentNbtTag extends Argument<NBT> {
@NotNull
@Override
public DeclareCommandsPacket.Node[] toNodes(boolean executable) {
DeclareCommandsPacket.Node argumentNode = MinecraftServer.getCommandManager().simpleArgumentNode(this, executable, false);
DeclareCommandsPacket.Node argumentNode = COMMAND_MANAGER.simpleArgumentNode(this, executable, false);
argumentNode.parser = "minecraft:nbt_tag";
return new DeclareCommandsPacket.Node[]{argumentNode};
}

View File

@ -2,7 +2,6 @@ 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.MinecraftServer;
import net.minestom.server.command.builder.arguments.Argument;
import net.minestom.server.command.builder.exception.ArgumentSyntaxException;
import net.minestom.server.network.packet.server.play.DeclareCommandsPacket;
@ -29,6 +28,7 @@ public class ArgumentTime extends Argument<UpdateOption> {
@NotNull
@Override
public UpdateOption parse(@NotNull String input) throws ArgumentSyntaxException {
// TODO time unit is omittable
final char lastChar = input.charAt(input.length() - 1);
if (!SUFFIXES.contains(lastChar))
throw new ArgumentSyntaxException("Time format is invalid", input, INVALID_TIME_FORMAT);
@ -39,13 +39,15 @@ public class ArgumentTime extends Argument<UpdateOption> {
// Check if value is a number
final int time = Integer.parseInt(input);
TimeUnit timeUnit = null;
TimeUnit timeUnit;
if (lastChar == 'd') {
timeUnit = TimeUnit.DAY;
} else if (lastChar == 's') {
timeUnit = TimeUnit.SECOND;
} else if (lastChar == 't') {
timeUnit = TimeUnit.TICK;
} else {
throw new ArgumentSyntaxException("Time needs to have a unit", input, NO_NUMBER);
}
return new UpdateOption(time, timeUnit);
@ -57,7 +59,7 @@ public class ArgumentTime extends Argument<UpdateOption> {
@NotNull
@Override
public DeclareCommandsPacket.Node[] toNodes(boolean executable) {
DeclareCommandsPacket.Node argumentNode = MinecraftServer.getCommandManager().simpleArgumentNode(this, executable, false);
DeclareCommandsPacket.Node argumentNode = COMMAND_MANAGER.simpleArgumentNode(this, executable, false);
argumentNode.parser = "minecraft:time";
return new DeclareCommandsPacket.Node[]{argumentNode};
}

View File

@ -9,7 +9,7 @@ public enum SuggestionType {
AVAILABLE_SOUNDS("minecraft:available_sounds"),
SUMMONABLE_ENTITIES("minecraft:summonable_entities");
private String identifier;
private final String identifier;
SuggestionType(@NotNull String identifier) {
this.identifier = identifier;

View File

@ -1,6 +1,5 @@
package net.minestom.server.command.builder.arguments.minecraft.registry;
import net.minestom.server.MinecraftServer;
import net.minestom.server.instance.block.Block;
import net.minestom.server.network.packet.server.play.DeclareCommandsPacket;
import net.minestom.server.registry.Registries;
@ -20,7 +19,7 @@ public class ArgumentBlockState extends ArgumentRegistry<Block> {
@NotNull
@Override
public DeclareCommandsPacket.Node[] toNodes(boolean executable) {
DeclareCommandsPacket.Node argumentNode = MinecraftServer.getCommandManager().simpleArgumentNode(this, executable, false);
DeclareCommandsPacket.Node argumentNode = COMMAND_MANAGER.simpleArgumentNode(this, executable, false);
argumentNode.parser = "minecraft:block_state";
return new DeclareCommandsPacket.Node[]{argumentNode};
}

View File

@ -1,6 +1,5 @@
package net.minestom.server.command.builder.arguments.minecraft.registry;
import net.minestom.server.MinecraftServer;
import net.minestom.server.item.Enchantment;
import net.minestom.server.network.packet.server.play.DeclareCommandsPacket;
import net.minestom.server.registry.Registries;
@ -23,7 +22,7 @@ public class ArgumentEnchantment extends ArgumentRegistry<Enchantment> {
@NotNull
@Override
public DeclareCommandsPacket.Node[] toNodes(boolean executable) {
DeclareCommandsPacket.Node argumentNode = MinecraftServer.getCommandManager().simpleArgumentNode(this, executable, false);
DeclareCommandsPacket.Node argumentNode = COMMAND_MANAGER.simpleArgumentNode(this, executable, false);
argumentNode.parser = "minecraft:item_enchantment";
return new DeclareCommandsPacket.Node[]{argumentNode};
}

View File

@ -1,6 +1,5 @@
package net.minestom.server.command.builder.arguments.minecraft.registry;
import net.minestom.server.MinecraftServer;
import net.minestom.server.entity.EntityType;
import net.minestom.server.network.packet.server.play.DeclareCommandsPacket;
import net.minestom.server.registry.Registries;
@ -23,7 +22,7 @@ public class ArgumentEntityType extends ArgumentRegistry<EntityType> {
@NotNull
@Override
public DeclareCommandsPacket.Node[] toNodes(boolean executable) {
DeclareCommandsPacket.Node argumentNode = MinecraftServer.getCommandManager().simpleArgumentNode(this, executable, false);
DeclareCommandsPacket.Node argumentNode = COMMAND_MANAGER.simpleArgumentNode(this, executable, false);
argumentNode.parser = "minecraft:entity_summon";
return new DeclareCommandsPacket.Node[]{argumentNode};
}

View File

@ -1,6 +1,5 @@
package net.minestom.server.command.builder.arguments.minecraft.registry;
import net.minestom.server.MinecraftServer;
import net.minestom.server.network.packet.server.play.DeclareCommandsPacket;
import net.minestom.server.particle.Particle;
import net.minestom.server.registry.Registries;
@ -23,7 +22,7 @@ public class ArgumentParticle extends ArgumentRegistry<Particle> {
@NotNull
@Override
public DeclareCommandsPacket.Node[] toNodes(boolean executable) {
DeclareCommandsPacket.Node argumentNode = MinecraftServer.getCommandManager().simpleArgumentNode(this, executable, false);
DeclareCommandsPacket.Node argumentNode = COMMAND_MANAGER.simpleArgumentNode(this, executable, false);
argumentNode.parser = "minecraft:particle";
return new DeclareCommandsPacket.Node[]{argumentNode};
}

View File

@ -1,6 +1,5 @@
package net.minestom.server.command.builder.arguments.minecraft.registry;
import net.minestom.server.MinecraftServer;
import net.minestom.server.network.packet.server.play.DeclareCommandsPacket;
import net.minestom.server.potion.PotionEffect;
import net.minestom.server.registry.Registries;
@ -23,7 +22,7 @@ public class ArgumentPotionEffect extends ArgumentRegistry<PotionEffect> {
@NotNull
@Override
public DeclareCommandsPacket.Node[] toNodes(boolean executable) {
DeclareCommandsPacket.Node argumentNode = MinecraftServer.getCommandManager().simpleArgumentNode(this, executable, false);
DeclareCommandsPacket.Node argumentNode = COMMAND_MANAGER.simpleArgumentNode(this, executable, false);
argumentNode.parser = "minecraft:mob_effect";
return new DeclareCommandsPacket.Node[]{argumentNode};
}

View File

@ -45,7 +45,7 @@ public class ArgumentDouble extends ArgumentNumber<Double> {
@NotNull
@Override
public DeclareCommandsPacket.Node[] toNodes(boolean executable) {
DeclareCommandsPacket.Node argumentNode = MinecraftServer.getCommandManager().simpleArgumentNode(this, executable, false);
DeclareCommandsPacket.Node argumentNode = COMMAND_MANAGER.simpleArgumentNode(this, executable, false);
argumentNode.parser = "brigadier:double";
argumentNode.properties = packetWriter -> {

View File

@ -45,7 +45,7 @@ public class ArgumentFloat extends ArgumentNumber<Float> {
@NotNull
@Override
public DeclareCommandsPacket.Node[] toNodes(boolean executable) {
DeclareCommandsPacket.Node argumentNode = MinecraftServer.getCommandManager().simpleArgumentNode(this, executable, false);
DeclareCommandsPacket.Node argumentNode = COMMAND_MANAGER.simpleArgumentNode(this, executable, false);
argumentNode.parser = "brigadier:float";
argumentNode.properties = packetWriter -> {

View File

@ -36,7 +36,7 @@ public class ArgumentInteger extends ArgumentNumber<Integer> {
@NotNull
@Override
public DeclareCommandsPacket.Node[] toNodes(boolean executable) {
DeclareCommandsPacket.Node argumentNode = MinecraftServer.getCommandManager().simpleArgumentNode(this, executable, false);
DeclareCommandsPacket.Node argumentNode = COMMAND_MANAGER.simpleArgumentNode(this, executable, false);
argumentNode.parser = "brigadier:integer";
argumentNode.properties = packetWriter -> {

View File

@ -1,6 +1,8 @@
package net.minestom.server.command.builder.arguments.number;
import net.minestom.server.MinecraftServer;
import net.minestom.server.command.builder.exception.ArgumentSyntaxException;
import net.minestom.server.network.packet.server.play.DeclareCommandsPacket;
import org.jetbrains.annotations.NotNull;
public class ArgumentLong extends ArgumentNumber<Long> {
@ -31,4 +33,23 @@ public class ArgumentLong extends ArgumentNumber<Long> {
}
}
@NotNull
@Override
public DeclareCommandsPacket.Node[] toNodes(boolean executable) {
DeclareCommandsPacket.Node argumentNode = COMMAND_MANAGER.simpleArgumentNode(this, executable, false);
// TODO maybe use ArgumentLiteral/ArgumentWord and impose long restriction server side?
argumentNode.parser = "brigadier:int";
argumentNode.properties = packetWriter -> {
packetWriter.writeByte(MinecraftServer.getCommandManager().getNumberProperties(this));
if (this.hasMin())
packetWriter.writeInt(this.getMin().intValue());
if (this.hasMax())
packetWriter.writeInt(this.getMax().intValue());
};
return new DeclareCommandsPacket.Node[]{argumentNode};
}
}

View File

@ -1,6 +1,5 @@
package net.minestom.server.command.builder.arguments.relative;
import net.minestom.server.MinecraftServer;
import net.minestom.server.command.builder.exception.ArgumentSyntaxException;
import net.minestom.server.network.packet.server.play.DeclareCommandsPacket;
import net.minestom.server.utils.BlockPosition;
@ -84,7 +83,7 @@ public class ArgumentRelativeBlockPosition extends ArgumentRelative<RelativeBloc
@NotNull
@Override
public DeclareCommandsPacket.Node[] toNodes(boolean executable) {
DeclareCommandsPacket.Node argumentNode = MinecraftServer.getCommandManager().simpleArgumentNode(this, executable, false);
DeclareCommandsPacket.Node argumentNode = COMMAND_MANAGER.simpleArgumentNode(this, executable, false);
argumentNode.parser = "minecraft:block_pos";
return new DeclareCommandsPacket.Node[]{argumentNode};
}

View File

@ -1,6 +1,5 @@
package net.minestom.server.command.builder.arguments.relative;
import net.minestom.server.MinecraftServer;
import net.minestom.server.command.builder.exception.ArgumentSyntaxException;
import net.minestom.server.network.packet.server.play.DeclareCommandsPacket;
import net.minestom.server.utils.Vector;
@ -72,7 +71,7 @@ public class ArgumentRelativeVec2 extends ArgumentRelative<RelativeVec> {
@NotNull
@Override
public DeclareCommandsPacket.Node[] toNodes(boolean executable) {
DeclareCommandsPacket.Node argumentNode = MinecraftServer.getCommandManager().simpleArgumentNode(this, executable, false);
DeclareCommandsPacket.Node argumentNode = COMMAND_MANAGER.simpleArgumentNode(this, executable, false);
argumentNode.parser = "minecraft:vec2";
return new DeclareCommandsPacket.Node[]{argumentNode};
}

View File

@ -1,6 +1,5 @@
package net.minestom.server.command.builder.arguments.relative;
import net.minestom.server.MinecraftServer;
import net.minestom.server.command.builder.exception.ArgumentSyntaxException;
import net.minestom.server.network.packet.server.play.DeclareCommandsPacket;
import net.minestom.server.utils.Vector;
@ -79,7 +78,7 @@ public class ArgumentRelativeVec3 extends ArgumentRelative<RelativeVec> {
@NotNull
@Override
public DeclareCommandsPacket.Node[] toNodes(boolean executable) {
DeclareCommandsPacket.Node argumentNode = MinecraftServer.getCommandManager().simpleArgumentNode(this, executable, false);
DeclareCommandsPacket.Node argumentNode = COMMAND_MANAGER.simpleArgumentNode(this, executable, false);
argumentNode.parser = "minecraft:vec3";
return new DeclareCommandsPacket.Node[]{argumentNode};
}