Deprecation, deprecated, ...

This commit is contained in:
Marc Baloup 2023-06-16 19:14:22 +02:00
parent e6fc31e5ca
commit d59ae22970
7 changed files with 44 additions and 87 deletions

View File

@ -1,13 +1,13 @@
package fr.pandacube.lib.bungee.players; package fr.pandacube.lib.bungee.players;
import java.util.Locale; import fr.pandacube.lib.chat.Chat;
import java.util.UUID; import fr.pandacube.lib.core.mc_version.ProtocolVersion;
import fr.pandacube.lib.players.standalone.AbstractOnlinePlayer;
import fr.pandacube.lib.reflect.Reflect;
import fr.pandacube.lib.util.MinecraftVersion;
import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBuf;
import io.netty.buffer.ByteBufAllocator; import io.netty.buffer.ByteBufAllocator;
import net.kyori.adventure.identity.Identified;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.ComponentLike;
import net.md_5.bungee.api.ProxyServer; import net.md_5.bungee.api.ProxyServer;
import net.md_5.bungee.api.SkinConfiguration; import net.md_5.bungee.api.SkinConfiguration;
import net.md_5.bungee.api.connection.ProxiedPlayer; import net.md_5.bungee.api.connection.ProxiedPlayer;
@ -18,10 +18,7 @@ import net.md_5.bungee.protocol.DefinedPacket;
import net.md_5.bungee.protocol.packet.ClientSettings; import net.md_5.bungee.protocol.packet.ClientSettings;
import net.md_5.bungee.protocol.packet.PluginMessage; import net.md_5.bungee.protocol.packet.PluginMessage;
import fr.pandacube.lib.chat.Chat; import java.util.Locale;
import fr.pandacube.lib.players.standalone.AbstractOnlinePlayer;
import fr.pandacube.lib.reflect.Reflect;
import fr.pandacube.lib.util.MinecraftVersion;
/** /**
* Represents any online player on a Bungeecord proxy. * Represents any online player on a Bungeecord proxy.
@ -55,11 +52,21 @@ public interface BungeeOnlinePlayer extends BungeeOffPlayer, AbstractOnlinePlaye
/** /**
* Gets the minecraft version of this players client. * Gets the minecraft version of this players client.
* @return the minecraft version of this players client. * @return the minecraft version of this players client.
* @deprecated use {@link #getProtocolVersion()} instead.
*/ */
@Deprecated(forRemoval = true)
default MinecraftVersion getMinecraftVersion() { default MinecraftVersion getMinecraftVersion() {
return MinecraftVersion.getVersion(getBungeeProxiedPlayer().getPendingConnection().getVersion()); return MinecraftVersion.getVersion(getBungeeProxiedPlayer().getPendingConnection().getVersion());
} }
/**
* Gets the protocol version of this players client.
* @return the protocol version of this players client.
*/
default ProtocolVersion getProtocolVersion() {
return ProtocolVersion.ofProtocol(getBungeeProxiedPlayer().getPendingConnection().getVersion());
}
@ -91,26 +98,6 @@ public interface BungeeOnlinePlayer extends BungeeOffPlayer, AbstractOnlinePlaye
getBungeeProxiedPlayer().sendMessage(Chat.toBungee(message)); getBungeeProxiedPlayer().sendMessage(Chat.toBungee(message));
} }
@Override
default void sendMessage(ComponentLike message, UUID sender) {
getBungeeProxiedPlayer().sendMessage(sender, Chat.toBungee(message.asComponent()));
}
@Override
default void sendMessage(Component message, Identified sender) {
getBungeeProxiedPlayer().sendMessage(sender == null ? null : sender.identity().uuid(), Chat.toBungee(message));
}
/**
* Display the provided message in the players chat, if they allows to display CHAT messages.
* @param message the message to send.
* @param sender the player causing the send of this message. Client side filtering may occur. May be null if we
* dont want client filtering, but still consider the message as CHAT message.
*/
default void sendMessage(ComponentLike message, ProxiedPlayer sender) {
getBungeeProxiedPlayer().sendMessage(sender == null ? null : sender.getUniqueId(), Chat.toBungee(message.asComponent()));
}
@Override @Override
default void sendTitle(Component title, Component subtitle, int fadeIn, int stay, int fadeOut) { default void sendTitle(Component title, Component subtitle, int fadeIn, int stay, int fadeOut) {
ProxyServer.getInstance().createTitle() ProxyServer.getInstance().createTitle()

View File

@ -2,7 +2,6 @@ package fr.pandacube.lib.core.mc_version;
import fr.pandacube.lib.core.json.Json; import fr.pandacube.lib.core.json.Json;
import fr.pandacube.lib.util.Log; import fr.pandacube.lib.util.Log;
import fr.pandacube.lib.util.MinecraftVersion;
import fr.pandacube.lib.util.StringUtil; import fr.pandacube.lib.util.StringUtil;
import java.io.InputStream; import java.io.InputStream;

View File

@ -7,11 +7,7 @@ import fr.pandacube.lib.paper.players.PlayerNonPersistentConfig.Expiration;
import fr.pandacube.lib.paper.reflect.wrapper.craftbukkit.CraftPlayer; import fr.pandacube.lib.paper.reflect.wrapper.craftbukkit.CraftPlayer;
import fr.pandacube.lib.players.standalone.AbstractOnlinePlayer; import fr.pandacube.lib.players.standalone.AbstractOnlinePlayer;
import fr.pandacube.lib.reflect.wrapper.ReflectWrapper; import fr.pandacube.lib.reflect.wrapper.ReflectWrapper;
import net.kyori.adventure.audience.MessageType;
import net.kyori.adventure.identity.Identified;
import net.kyori.adventure.identity.Identity;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.ComponentLike;
import net.kyori.adventure.title.Title; import net.kyori.adventure.title.Title;
import net.kyori.adventure.title.Title.Times; import net.kyori.adventure.title.Title.Times;
import net.kyori.adventure.util.Ticks; import net.kyori.adventure.util.Ticks;
@ -24,7 +20,6 @@ import org.bukkit.inventory.MainHand;
import org.bukkit.inventory.PlayerInventory; import org.bukkit.inventory.PlayerInventory;
import java.util.Locale; import java.util.Locale;
import java.util.UUID;
/** /**
* Represents any online player on a paper server. * Represents any online player on a paper server.
@ -93,16 +88,6 @@ public interface PaperOnlinePlayer extends PaperOffPlayer, AbstractOnlinePlayer
getBukkitPlayer().sendMessage(message); getBukkitPlayer().sendMessage(message);
} }
@Override
default void sendMessage(ComponentLike message, UUID sender) {
getBukkitPlayer().sendMessage(sender == null ? Identity.nil() : Identity.identity(sender), message, MessageType.CHAT);
}
@Override
default void sendMessage(Component message, Identified sender) {
getBukkitPlayer().sendMessage(sender == null ? Identity.nil() : sender.identity(), message, MessageType.CHAT);
}
@Override @Override
default void sendTitle(Component title, Component subtitle, int fadeIn, int stay, int fadeOut) { default void sendTitle(Component title, Component subtitle, int fadeIn, int stay, int fadeOut) {
getBukkitPlayer().showTitle(Title.title(title, subtitle, Times.times(Ticks.duration(fadeIn), Ticks.duration(stay), Ticks.duration(fadeOut)))); getBukkitPlayer().showTitle(Title.title(title, subtitle, Times.times(Ticks.duration(fadeIn), Ticks.duration(stay), Ticks.duration(fadeOut))));

View File

@ -50,7 +50,8 @@ public class ScoreboardUtil {
obj.setDisplaySlot(DisplaySlot.SIDEBAR); obj.setDisplaySlot(DisplaySlot.SIDEBAR);
} }
} }
@SuppressWarnings("deprecation")
ChatColor[] colors = ChatColor.values(); ChatColor[] colors = ChatColor.values();
/* /*

View File

@ -1,13 +1,10 @@
package fr.pandacube.lib.players.standalone; package fr.pandacube.lib.players.standalone;
import fr.pandacube.lib.chat.ChatStatic; import fr.pandacube.lib.chat.ChatStatic;
import net.kyori.adventure.identity.Identified;
import net.kyori.adventure.identity.Identity;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.ComponentLike; import net.kyori.adventure.text.ComponentLike;
import java.util.Locale; import java.util.Locale;
import java.util.UUID;
/** /**
* Represents any online player. * Represents any online player.
@ -87,30 +84,6 @@ public interface AbstractOnlinePlayer extends AbstractOffPlayer {
default void sendMessage(ComponentLike message) { default void sendMessage(ComponentLike message) {
sendMessage(message.asComponent()); sendMessage(message.asComponent());
} }
/**
* Display the provided message in the players chat, if they allows to display CHAT messages.
* @param message the message to display.
* @param sender the player causing the send of this message. Client side filtering may occur.
* May be null if we dont want client filtering, but still consider the message as CHAT message.
* @implNote implementation of this method should not filter the send of the message, based on
* the sender. This parameter is only there to be transmitted to the client, so client side filtering can
* be processed.
*/
void sendMessage(Component message, Identified sender);
/**
* Display the provided message in the players chat, if they allows to display CHAT messages.
* @param message the message to display
* @param sender the player causing the send of this message. Client side filtering may occur.
* May be null if we dont want client filtering, but still consider the message as CHAT message.
* @implNote implementation of this method should not filter the send of the message, based on
* the sender. This parameter is only there to be transmitted to the client, so client side filtering can
* be processed.
*/
default void sendMessage(ComponentLike message, UUID sender) {
sendMessage(message.asComponent(), () -> sender == null ? Identity.nil() : Identity.identity(sender));
}
/** /**
* Display the provided message in the players chat, if the chat is activated, prepended with the server prefix. * Display the provided message in the players chat, if the chat is activated, prepended with the server prefix.

View File

@ -184,37 +184,49 @@ public abstract class AbstractPlayerManager<OP extends AbstractOnlinePlayer, OF
/** /**
* Broadcast a message to some or all players, and eventually to the console. * Broadcast a SYSTEM message to some or all players, and eventually to the console.
* *
* @param message the message to send. * @param message the message to send.
* @param prefix if the server prefix will be prepended to the message. * @param prefix if the server prefix will be prepended to the message.
* @param console if the message must be displayed in the console. * @param console if the message must be displayed in the console.
* @param permission if not null, the message is only sent to player with this permission. * @param permission if not null, the message is only sent to player with this permission.
* @param sourcePlayer specifiy the eventual player that is the source of the message.
* If null, the message will be sent as a SYSTEM chat message.
* If not null, the message will be sent as a CHAT message, and will not be sent
* to players ignoring the provided player (if implemented).
* @throws IllegalArgumentException if message is null.
* @implSpec subclasses may override this method, for instance to restrict the players being able to see the message * @implSpec subclasses may override this method, for instance to restrict the players being able to see the message
* (like /ignored players). * (like /ignored players).
*/ */
public void broadcastMessage(ComponentLike message, boolean prefix, boolean console, String permission, UUID sourcePlayer) { public void broadcastMessage(ComponentLike message, boolean prefix, boolean console, String permission) {
Objects.requireNonNull(message, "message cannot be null"); Objects.requireNonNull(message, "message cannot be null");
if (prefix) if (prefix)
message = ChatStatic.prefixedAndColored(message.asComponent()); message = ChatStatic.prefixedAndColored(message.asComponent());
for (OP op : getAll()) { for (OP op : getAll()) {
if (permission != null && !(op.hasPermission(permission))) continue; if (permission != null && !(op.hasPermission(permission)))
continue;
if (sourcePlayer != null) op.sendMessage(message);
op.sendMessage(message, sourcePlayer); // CHAT message with UUID
else
op.sendMessage(message); // SYSTEM message
} }
if (console) if (console)
sendMessageToConsole(message.asComponent()); sendMessageToConsole(message.asComponent());
} }
/**
* Broadcast a message to some or all players, and eventually to the console.
*
* @param message the message to send.
* @param prefix if the server prefix will be prepended to the message.
* @param console if the message must be displayed in the console.
* @param permission if not null, the message is only sent to player with this permission.
* @param sourcePlayer specify the eventual player that is the source of the message. Default implementation of this
* method does not use this parameter due to the Minecraft client not handling unsigned CHAT
* messages.
* @throws IllegalArgumentException if message is null.
* @implSpec subclasses may override this method, for instance to restrict the players being able to see the message
* (like /ignored players).
*/
public void broadcastMessage(ComponentLike message, boolean prefix, boolean console, String permission, UUID sourcePlayer) {
broadcastMessage(message, prefix, console, permission);
}

View File

@ -17,7 +17,7 @@ import java.util.Set;
* Note that this enum uses one value to represent every Minecraft version using the same protocol version number. * Note that this enum uses one value to represent every Minecraft version using the same protocol version number.
* @deprecated This class may not be updated. Use the class ProtocolVersion in pandalib-core module instead. * @deprecated This class may not be updated. Use the class ProtocolVersion in pandalib-core module instead.
*/ */
@Deprecated @Deprecated(forRemoval = true)
public enum MinecraftVersion { public enum MinecraftVersion {
/** Minecraft versions 1.7.2 to 1.7.5, protocol version 4. */ /** Minecraft versions 1.7.2 to 1.7.5, protocol version 4. */
v1_7_2_to_1_7_5(4, "1.7.2", "1.7.3", "1.7.4", "1.7.5"), v1_7_2_to_1_7_5(4, "1.7.2", "1.7.3", "1.7.4", "1.7.5"),