Revert argument changes to single file with adventure style result

This commit is contained in:
Kieran Wallbanks 2021-03-18 15:28:41 +00:00
parent 8ee624f02d
commit b4b2cf70c5
7 changed files with 26 additions and 257 deletions

View File

@ -107,34 +107,12 @@ public class ArgumentType {
// Minecraft specific arguments
/**
* @deprecated Use {@link ArgumentTextColor} for colors, {@link ArgumentTextDecoration} for styles, {@link ArgumentColor} for raw colors,
* {@link ArgumentDyeColor} for dye colors and {@link ArgumentTeamColor} for team formats
* @see ArgumentColor
*/
@Deprecated
public static ArgumentChatColor ChatColor(@NotNull String id) {
return new ArgumentChatColor(id);
}
public static ArgumentTextColor TextColor(@NotNull String id) {
return new ArgumentTextColor(id);
}
public static ArgumentTextDecoration TextDecoration(@NotNull String id) {
return new ArgumentTextDecoration(id);
}
public static ArgumentColor Color(@NotNull String id) {
return new ArgumentColor(id);
}
public static ArgumentDyeColor DyeColor(@NotNull String id) {
return new ArgumentDyeColor(id);
}
public static ArgumentTeamColor TeamColor(@NotNull String id) {
return new ArgumentTeamColor(id);
}
/**
* @see ArgumentTime
*/

View File

@ -1,43 +0,0 @@
package net.minestom.server.command.builder.arguments.minecraft;
import net.minestom.server.chat.ChatColor;
import net.minestom.server.command.builder.NodeMaker;
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;
import org.jetbrains.annotations.NotNull;
/**
* Represents an argument which will give you a {@link ChatColor}.
* <p>
* Example: red, white, reset
* @deprecated Use {@link ArgumentTextColor} for colors, {@link ArgumentTextDecoration} for styles, {@link ArgumentColor} for raw colors,
* {@link ArgumentDyeColor} for dye colors and {@link ArgumentTeamColor} for team formats
*/
@Deprecated
public class ArgumentChatColor extends Argument<ChatColor> {
public static final int UNDEFINED_COLOR = -2;
public ArgumentChatColor(String id) {
super(id);
}
@NotNull
@Override
public ChatColor parse(@NotNull String input) throws ArgumentSyntaxException {
final ChatColor color = ChatColor.fromName(input);
if (color == ChatColor.NO_COLOR)
throw new ArgumentSyntaxException("Undefined color", input, UNDEFINED_COLOR);
return color;
}
@Override
public void processNodes(@NotNull NodeMaker nodeMaker, boolean executable) {
DeclareCommandsPacket.Node argumentNode = simpleArgumentNode(this, executable, false, false);
argumentNode.parser = "minecraft:chat_color";
nodeMaker.addNodes(new DeclareCommandsPacket.Node[]{argumentNode});
}
}

View File

@ -1,7 +1,8 @@
package net.minestom.server.command.builder.arguments.minecraft;
import net.kyori.adventure.text.format.NamedTextColor;
import net.minestom.server.color.Color;
import net.kyori.adventure.text.format.Style;
import net.kyori.adventure.text.format.TextDecoration;
import net.minestom.server.command.builder.NodeMaker;
import net.minestom.server.command.builder.arguments.Argument;
import net.minestom.server.command.builder.exception.ArgumentSyntaxException;
@ -9,26 +10,36 @@ import net.minestom.server.network.packet.server.play.DeclareCommandsPacket;
import org.jetbrains.annotations.NotNull;
/**
* Represents an argument that will give you a {@link Color}. Input is parsed
* first as a hex string ({@code #int}), then as a CSS hex string ({@code #rrggbb} or
* {@code #rgb}), then as an integer and finally as a named text colour. The values for
* the named text colours can be found in {@link NamedTextColor}.
* <br><br>
* This class is essentially a wrapper around {@link ArgumentTextColor}.
* Represents an argument which will give you a {@link Style} containing the colour or no
* colour if the argument was {@code reset}.
* <p>
* Example: red, white, reset
*/
public class ArgumentColor extends Argument<Color> {
private final ArgumentTextColor argumentTextColor;
public class ArgumentColor extends Argument<Style> {
public static int UNDEFINED_COLOR = ArgumentTextColor.UNDEFINED_COLOR;
public static final int UNDEFINED_COLOR = -2;
public ArgumentColor(@NotNull String id) {
public ArgumentColor(String id) {
super(id);
argumentTextColor = new ArgumentTextColor(id);
}
@NotNull
@Override
public @NotNull Color parse(@NotNull String input) throws ArgumentSyntaxException {
return new Color(this.argumentTextColor.parse(input));
public Style parse(@NotNull String input) throws ArgumentSyntaxException {
String uppercaseInput = input.toUpperCase();
// check for colour
NamedTextColor color = NamedTextColor.NAMES.value(uppercaseInput);
if (color != null) {
return Style.style(color);
}
// check for reset
if (uppercaseInput.equals("RESET")) {
return Style.empty();
}
throw new ArgumentSyntaxException("Undefined color", input, UNDEFINED_COLOR);
}
@Override

View File

@ -1,32 +0,0 @@
package net.minestom.server.command.builder.arguments.minecraft;
import net.minestom.server.color.DyeColor;
import net.minestom.server.command.builder.NodeMaker;
import net.minestom.server.command.builder.arguments.Argument;
import net.minestom.server.command.builder.exception.ArgumentSyntaxException;
import org.jetbrains.annotations.NotNull;
/**
* An argument that returns a {@link DyeColor} from the name of the dye color.
*/
public class ArgumentDyeColor extends Argument<DyeColor> {
public static int UNDEFINED_DYE_COLOR = -2;
public ArgumentDyeColor(@NotNull String id) {
super(id);
}
@Override
public @NotNull DyeColor parse(@NotNull String input) throws ArgumentSyntaxException {
try {
return DyeColor.valueOf(input.toUpperCase().replace(' ', '_').trim());
} catch (IllegalArgumentException ignored) {
throw new ArgumentSyntaxException("Undefined dye color", input, UNDEFINED_DYE_COLOR);
}
}
@Override
public void processNodes(@NotNull NodeMaker nodeMaker, boolean executable) {
}
}

View File

@ -1,40 +0,0 @@
package net.minestom.server.command.builder.arguments.minecraft;
import net.minestom.server.color.TeamColor;
import net.minestom.server.command.builder.NodeMaker;
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;
import org.jetbrains.annotations.NotNull;
/**
* An argument that will give you a {@link TeamColor} from it's name or the int code.
*/
public class ArgumentTeamColor extends Argument<TeamColor> {
public static final int UNDEFINED_TEAM_FORMAT = -2;
public ArgumentTeamColor(@NotNull String id) {
super(id);
}
@Override
public @NotNull TeamColor parse(@NotNull String input) throws ArgumentSyntaxException {
try {
return TeamColor.valueOf(input.toUpperCase().trim().replace(' ', '_'));
} catch (IllegalArgumentException ignored) {
try {
return TeamColor.values()[Integer.parseInt(input)];
} catch (NumberFormatException | ArrayIndexOutOfBoundsException alsoIgnored) {
throw new ArgumentSyntaxException("Undefined team format!", input, UNDEFINED_TEAM_FORMAT);
}
}
}
@Override
public void processNodes(@NotNull NodeMaker nodeMaker, boolean executable) {
DeclareCommandsPacket.Node argumentNode = simpleArgumentNode(this, executable, false, false);
argumentNode.parser = "minecraft:team_format";
nodeMaker.addNodes(new DeclareCommandsPacket.Node[]{argumentNode});
}
}

View File

@ -1,65 +0,0 @@
package net.minestom.server.command.builder.arguments.minecraft;
import net.kyori.adventure.text.format.NamedTextColor;
import net.kyori.adventure.text.format.TextColor;
import net.minestom.server.command.builder.NodeMaker;
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;
import net.minestom.server.utils.MathUtils;
import org.jetbrains.annotations.NotNull;
/**
* Represents an argument that will give you a {@link TextColor}. Input is parsed
* first as a hex string ({@code #int}), then as a CSS hex string ({@code #rrggbb} or
* {@code #rgb}), then as an integer and finally as a named text colour. The values for
* the named text colours can be found in {@link NamedTextColor}.
*/
public class ArgumentTextColor extends Argument<TextColor> {
public static final int UNDEFINED_COLOR = -2;
public ArgumentTextColor(@NotNull String id) {
super(id);
}
@Override
public @NotNull TextColor parse(@NotNull String input) throws ArgumentSyntaxException {
TextColor textColor;
// first try standard hex
textColor = TextColor.fromHexString(input);
if (textColor != null) {
return textColor;
}
// now try CSS hex
textColor = TextColor.fromCSSHexString(input);
if (textColor != null) {
return textColor;
}
// now try int
Integer number = MathUtils.tryParse(input);
if (number != null) {
return TextColor.color(number);
}
// fallback to legacy colour names
textColor = NamedTextColor.NAMES.value(input.toLowerCase());
if (textColor != null) {
return textColor;
}
// throw an error
throw new ArgumentSyntaxException("Undefined color", input, UNDEFINED_COLOR);
}
@Override
public void processNodes(@NotNull NodeMaker nodeMaker, boolean executable) {
DeclareCommandsPacket.Node argumentNode = simpleArgumentNode(this, executable, false, false);
argumentNode.parser = "minecraft:text_color";
nodeMaker.addNodes(new DeclareCommandsPacket.Node[]{argumentNode});
}
}

View File

@ -1,40 +0,0 @@
package net.minestom.server.command.builder.arguments.minecraft;
import net.kyori.adventure.text.format.TextDecoration;
import net.minestom.server.command.builder.NodeMaker;
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;
import org.jetbrains.annotations.NotNull;
/**
* Represents an argument that will give you a {@link TextDecoration}. Valid values can
* be found in the text decoration class. Values are case-insensitive.
*/
public class ArgumentTextDecoration extends Argument<TextDecoration> {
public static final int UNDEFINED_DECORATION = -2;
public ArgumentTextDecoration(@NotNull String id) {
super(id);
}
@NotNull
@Override
public TextDecoration parse(@NotNull String input) throws ArgumentSyntaxException {
TextDecoration decoration = TextDecoration.NAMES.value(input.toLowerCase());
if (decoration != null) {
return decoration;
}
throw new ArgumentSyntaxException("Undefined text decoration", input, UNDEFINED_DECORATION);
}
@Override
public void processNodes(@NotNull NodeMaker nodeMaker, boolean executable) {
DeclareCommandsPacket.Node argumentNode = simpleArgumentNode(this, executable, false, false);
argumentNode.parser = "minecraft:text_color";
nodeMaker.addNodes(new DeclareCommandsPacket.Node[]{argumentNode});
}
}