From b6ed970e60a8bde4c2c3c8d0ebd5677278a02aef Mon Sep 17 00:00:00 2001 From: Vincent <79623093+V1nc3ntWasTaken@users.noreply.github.com> Date: Sun, 18 Sep 2022 09:56:52 -0500 Subject: [PATCH] Cleaned up some NMS reflection fragments --- .../compatibility/Compatibility.java | 11 +++--- .../CompatiblePacketListener.java | 33 ++++++++++++----- .../compatibility/CompatiblePlayer.java | 9 +++-- .../CompatiblePacketListener_v1_19_R1.java | 36 ------------------- .../v1_19_R1/CompatiblePlayer_v1_19_R1.java | 17 --------- 1.19/src/main/resources/plugin.yml | 2 +- 6 files changed, 39 insertions(+), 69 deletions(-) delete mode 100644 1.19/src/main/java/me/doclic/noencryption/compatibility/v1_19_R1/CompatiblePacketListener_v1_19_R1.java delete mode 100644 1.19/src/main/java/me/doclic/noencryption/compatibility/v1_19_R1/CompatiblePlayer_v1_19_R1.java diff --git a/1.19/src/main/java/me/doclic/noencryption/compatibility/Compatibility.java b/1.19/src/main/java/me/doclic/noencryption/compatibility/Compatibility.java index dc78a30..79786b2 100644 --- a/1.19/src/main/java/me/doclic/noencryption/compatibility/Compatibility.java +++ b/1.19/src/main/java/me/doclic/noencryption/compatibility/Compatibility.java @@ -11,6 +11,7 @@ public class Compatibility { public static final CompatiblePlayer COMPATIBLE_PLAYER; public static final CompatiblePacketListener COMPATIBLE_PACKET_LISTENER; + public static final String PLUGIN_COMPATIBLE_VERSION; public static final boolean SERVER_COMPATIBLE; public static final String SERVER_VERSION; @@ -18,9 +19,11 @@ public class Compatibility { String minecraftVersion; + PLUGIN_COMPATIBLE_VERSION = "1.19-R0.1-SNAPSHOT"; + try { - minecraftVersion = Bukkit.getServer().getClass().getPackage().getName().split("\\.")[3]; // Gets the server version + minecraftVersion = Bukkit.getBukkitVersion(); } catch (ArrayIndexOutOfBoundsException exception) { @@ -31,7 +34,7 @@ public class Compatibility { Bukkit.getLogger().info("Your server is running version " + minecraftVersion); - if (minecraftVersion != null) { + if (minecraftVersion != null && minecraftVersion.equals(PLUGIN_COMPATIBLE_VERSION)) { final String versionPackage = getVersionPackage(minecraftVersion); @@ -53,14 +56,14 @@ public class Compatibility { private static String getVersionPackage(String minecraftVersion) { - return Compatibility.class.getPackage().getName() + "." + minecraftVersion; + return Compatibility.class.getPackage().getName(); } private static Class getCompatibleClass(Class clazz, String minecraftVersion, String versionPackage) { try { - final Class compatibleClass = Class.forName(versionPackage + "." + clazz.getSimpleName() + "_" + minecraftVersion); + final Class compatibleClass = Class.forName(versionPackage + "." + clazz.getSimpleName()); if (compatibleClass.getSuperclass() != clazz && !Arrays.asList(compatibleClass.getInterfaces()).contains(clazz)) { return null; } diff --git a/1.19/src/main/java/me/doclic/noencryption/compatibility/CompatiblePacketListener.java b/1.19/src/main/java/me/doclic/noencryption/compatibility/CompatiblePacketListener.java index 5d82108..0ac05a8 100644 --- a/1.19/src/main/java/me/doclic/noencryption/compatibility/CompatiblePacketListener.java +++ b/1.19/src/main/java/me/doclic/noencryption/compatibility/CompatiblePacketListener.java @@ -2,17 +2,32 @@ import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelPromise; +import net.minecraft.network.chat.Component; +import net.minecraft.network.protocol.game.ClientboundPlayerChatPacket; +import net.minecraft.util.Crypt.SaltSignaturePair; -public interface CompatiblePacketListener { +import java.util.Optional; - /** - * @return the packet that should be read - */ - Object readPacket(ChannelHandlerContext channelHandlerContext, Object packet) throws Exception; +public class CompatiblePacketListener { - /** - * @return the packet that should be written - */ - Object writePacket(ChannelHandlerContext channelHandlerContext, Object packet, ChannelPromise promise) throws Exception; + public Object readPacket(ChannelHandlerContext channelHandlerContext, Object packet) throws Exception { return packet; } + + public Object writePacket(ChannelHandlerContext channelHandlerContext, Object packet, ChannelPromise promise) throws Exception { + if (packet instanceof final ClientboundPlayerChatPacket clientboundPlayerChatPacket) { + final Optional unsignedContent = clientboundPlayerChatPacket.unsignedContent(); + + // recreate a new packet + return new ClientboundPlayerChatPacket( + unsignedContent.orElse(clientboundPlayerChatPacket.signedContent()), // use unsigned content if available, this is the signed content field + unsignedContent, // unsigned content field + clientboundPlayerChatPacket.typeId(), + clientboundPlayerChatPacket.sender(), + clientboundPlayerChatPacket.timeStamp(), + new SaltSignaturePair(0, new byte[0])); // salt signature field + } + + return packet; + + } } diff --git a/1.19/src/main/java/me/doclic/noencryption/compatibility/CompatiblePlayer.java b/1.19/src/main/java/me/doclic/noencryption/compatibility/CompatiblePlayer.java index 16676b8..acf233b 100644 --- a/1.19/src/main/java/me/doclic/noencryption/compatibility/CompatiblePlayer.java +++ b/1.19/src/main/java/me/doclic/noencryption/compatibility/CompatiblePlayer.java @@ -1,10 +1,15 @@ package me.doclic.noencryption.compatibility; import io.netty.channel.Channel; +import org.bukkit.craftbukkit.v1_19_R1.entity.CraftPlayer; import org.bukkit.entity.Player; -public interface CompatiblePlayer { +public class CompatiblePlayer { - Channel getChannel(Player player); + public Channel getChannel(Player player) { + + return ((CraftPlayer) player).getHandle().connection.connection.channel; + + } } diff --git a/1.19/src/main/java/me/doclic/noencryption/compatibility/v1_19_R1/CompatiblePacketListener_v1_19_R1.java b/1.19/src/main/java/me/doclic/noencryption/compatibility/v1_19_R1/CompatiblePacketListener_v1_19_R1.java deleted file mode 100644 index 81e845b..0000000 --- a/1.19/src/main/java/me/doclic/noencryption/compatibility/v1_19_R1/CompatiblePacketListener_v1_19_R1.java +++ /dev/null @@ -1,36 +0,0 @@ -package me.doclic.noencryption.compatibility.v1_19_R1; - -import io.netty.channel.ChannelHandlerContext; -import io.netty.channel.ChannelPromise; -import me.doclic.noencryption.compatibility.CompatiblePacketListener; -import net.minecraft.network.chat.Component; -import net.minecraft.network.protocol.game.ClientboundPlayerChatPacket; -import net.minecraft.util.Crypt.SaltSignaturePair; - -import java.util.Optional; - -public class CompatiblePacketListener_v1_19_R1 implements CompatiblePacketListener { - - @Override - public Object readPacket(ChannelHandlerContext channelHandlerContext, Object packet) throws Exception { return packet; } - - @Override - public Object writePacket(ChannelHandlerContext channelHandlerContext, Object packet, ChannelPromise promise) throws Exception { - if (packet instanceof final ClientboundPlayerChatPacket clientboundPlayerChatPacket) { - final Optional unsignedContent = clientboundPlayerChatPacket.unsignedContent(); - - // recreate a new packet - return new ClientboundPlayerChatPacket( - unsignedContent.orElse(clientboundPlayerChatPacket.signedContent()), // use unsigned content if available, this is the signed content field - unsignedContent, // unsigned content field - clientboundPlayerChatPacket.typeId(), - clientboundPlayerChatPacket.sender(), - clientboundPlayerChatPacket.timeStamp(), - new SaltSignaturePair(0, new byte[0])); // salt signature field - } - - return packet; - - } - -} diff --git a/1.19/src/main/java/me/doclic/noencryption/compatibility/v1_19_R1/CompatiblePlayer_v1_19_R1.java b/1.19/src/main/java/me/doclic/noencryption/compatibility/v1_19_R1/CompatiblePlayer_v1_19_R1.java deleted file mode 100644 index b59efad..0000000 --- a/1.19/src/main/java/me/doclic/noencryption/compatibility/v1_19_R1/CompatiblePlayer_v1_19_R1.java +++ /dev/null @@ -1,17 +0,0 @@ -package me.doclic.noencryption.compatibility.v1_19_R1; - -import io.netty.channel.Channel; -import me.doclic.noencryption.compatibility.CompatiblePlayer; -import org.bukkit.craftbukkit.v1_19_R1.entity.CraftPlayer; -import org.bukkit.entity.Player; - -public class CompatiblePlayer_v1_19_R1 implements CompatiblePlayer { - - @Override - public Channel getChannel(Player player) { - - return ((CraftPlayer) player).getHandle().connection.connection.channel; - - } - -} diff --git a/1.19/src/main/resources/plugin.yml b/1.19/src/main/resources/plugin.yml index d3cf77b..8207728 100644 --- a/1.19/src/main/resources/plugin.yml +++ b/1.19/src/main/resources/plugin.yml @@ -1,5 +1,5 @@ name: NoEncryption -version: '${project.version}' +version: '${project.parent.version}' main: me.doclic.noencryption.NoEncryption api-version: 1.19 authors: [ Doclic ]