mirror of
https://github.com/Minestom/Minestom.git
synced 2025-03-12 14:49:11 +01:00
Use Adventure in ArgumentComponent and add demo echo command
This commit is contained in:
parent
218b443a16
commit
e738efded3
@ -1,14 +1,15 @@
|
||||
package net.minestom.server.command.builder.arguments.minecraft;
|
||||
|
||||
import com.google.gson.JsonParseException;
|
||||
import net.minestom.server.chat.JsonMessage;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer;
|
||||
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;
|
||||
|
||||
public class ArgumentComponent extends Argument<JsonMessage> {
|
||||
public class ArgumentComponent extends Argument<Component> {
|
||||
|
||||
public static final int INVALID_JSON_ERROR = 1;
|
||||
|
||||
@ -18,9 +19,9 @@ public class ArgumentComponent extends Argument<JsonMessage> {
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public JsonMessage parse(@NotNull String input) throws ArgumentSyntaxException {
|
||||
public Component parse(@NotNull String input) throws ArgumentSyntaxException {
|
||||
try {
|
||||
return new JsonMessage.RawJsonMessage(input);
|
||||
return GsonComponentSerializer.gson().deserialize(input);
|
||||
} catch (JsonParseException e) {
|
||||
throw new ArgumentSyntaxException("Invalid JSON", input, INVALID_JSON_ERROR);
|
||||
}
|
||||
|
24
src/test/java/demo/commands/EchoCommand.java
Normal file
24
src/test/java/demo/commands/EchoCommand.java
Normal file
@ -0,0 +1,24 @@
|
||||
package demo.commands;
|
||||
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.event.ClickEvent;
|
||||
import net.minestom.server.command.builder.Command;
|
||||
import net.minestom.server.command.builder.arguments.ArgumentType;
|
||||
import net.minestom.server.command.builder.arguments.minecraft.ArgumentComponent;
|
||||
|
||||
public class EchoCommand extends Command {
|
||||
public EchoCommand() {
|
||||
super("echo");
|
||||
|
||||
this.setDefaultExecutor((sender, context) -> sender.sendMessage(
|
||||
Component.text("Usage: /echo <json>")
|
||||
.hoverEvent(Component.text("Click to get this command.")
|
||||
.clickEvent(ClickEvent.suggestCommand("/echo ")))));
|
||||
|
||||
ArgumentComponent json = ArgumentType.Component("json");
|
||||
|
||||
this.addSyntax((sender, context) -> {
|
||||
sender.sendMessage(context.get(json));
|
||||
}, json);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user