From 0f02be4b2b60c7e27b1a46361f0dc7eebc862526 Mon Sep 17 00:00:00 2001 From: TheMode Date: Tue, 22 Jun 2021 13:30:47 +0200 Subject: [PATCH] Add tag api to CommandSender --- .../net/minestom/server/command/CommandSender.java | 8 ++++---- .../net/minestom/server/command/ConsoleSender.java | 14 ++++++++++++++ .../net/minestom/server/command/ServerSender.java | 14 ++++++++++++++ 3 files changed, 32 insertions(+), 4 deletions(-) diff --git a/src/main/java/net/minestom/server/command/CommandSender.java b/src/main/java/net/minestom/server/command/CommandSender.java index 627621c8c..398e019f7 100644 --- a/src/main/java/net/minestom/server/command/CommandSender.java +++ b/src/main/java/net/minestom/server/command/CommandSender.java @@ -5,6 +5,7 @@ import net.kyori.adventure.text.Component; import net.minestom.server.chat.JsonMessage; import net.minestom.server.entity.Player; import net.minestom.server.permission.PermissionHandler; +import net.minestom.server.tag.TagHandler; import org.jetbrains.annotations.NotNull; /** @@ -12,7 +13,7 @@ import org.jetbrains.annotations.NotNull; *

* Main implementations are {@link Player} and {@link ConsoleSender}. */ -public interface CommandSender extends PermissionHandler, Audience { +public interface CommandSender extends PermissionHandler, Audience, TagHandler { /** * Sends a raw string message. @@ -28,7 +29,7 @@ public interface CommandSender extends PermissionHandler, Audience { * * @param messages the messages to send */ - default void sendMessage(@NotNull String @NotNull[] messages) { + default void sendMessage(@NotNull String @NotNull [] messages) { for (String message : messages) { sendMessage(message); } @@ -39,9 +40,8 @@ public interface CommandSender extends PermissionHandler, Audience { * If this is not a {@link Player}, only the content of the message will be sent as a string. * * @param text The {@link JsonMessage} to send. - * * @deprecated Use {@link #sendMessage(Component)} - * */ + */ @Deprecated default void sendMessage(@NotNull JsonMessage text) { this.sendMessage(text.asComponent()); diff --git a/src/main/java/net/minestom/server/command/ConsoleSender.java b/src/main/java/net/minestom/server/command/ConsoleSender.java index 90d53f940..35e03861d 100644 --- a/src/main/java/net/minestom/server/command/ConsoleSender.java +++ b/src/main/java/net/minestom/server/command/ConsoleSender.java @@ -5,7 +5,10 @@ import net.kyori.adventure.identity.Identity; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer; import net.minestom.server.permission.Permission; +import net.minestom.server.tag.Tag; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; +import org.jglrxavpok.hephaistos.nbt.NBTCompound; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -20,6 +23,7 @@ public class ConsoleSender implements CommandSender { private static final Logger LOGGER = LoggerFactory.getLogger(ConsoleSender.class); private final Set permissions = new CopyOnWriteArraySet<>(); + private final NBTCompound nbtCompound = new NBTCompound(); @Override public void sendMessage(@NotNull String message) { @@ -47,4 +51,14 @@ public class ConsoleSender implements CommandSender { public ConsoleSender asConsole() { return this; } + + @Override + public @Nullable T getTag(@NotNull Tag tag) { + return tag.read(nbtCompound); + } + + @Override + public void setTag(@NotNull Tag tag, @Nullable T value) { + tag.write(nbtCompound, value); + } } diff --git a/src/main/java/net/minestom/server/command/ServerSender.java b/src/main/java/net/minestom/server/command/ServerSender.java index 663c57d7d..22c95a524 100644 --- a/src/main/java/net/minestom/server/command/ServerSender.java +++ b/src/main/java/net/minestom/server/command/ServerSender.java @@ -3,7 +3,10 @@ package net.minestom.server.command; import net.minestom.server.command.builder.CommandContext; import net.kyori.adventure.audience.Audience; import net.minestom.server.permission.Permission; +import net.minestom.server.tag.Tag; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; +import org.jglrxavpok.hephaistos.nbt.NBTCompound; import java.util.Collections; import java.util.HashSet; @@ -19,10 +22,21 @@ import java.util.Set; public class ServerSender implements CommandSender { private final Set permissions = Collections.unmodifiableSet(new HashSet<>()); + private final NBTCompound nbtCompound = new NBTCompound(); @NotNull @Override public Set getAllPermissions() { return permissions; } + + @Override + public @Nullable T getTag(@NotNull Tag tag) { + return tag.read(nbtCompound); + } + + @Override + public void setTag(@NotNull Tag tag, @Nullable T value) { + tag.write(nbtCompound, value); + } }