From 567184b07da579ec250a9564d9da2b19a7fef31e Mon Sep 17 00:00:00 2001 From: ineanto Date: Fri, 28 Apr 2023 23:31:34 +0200 Subject: [PATCH] still trying to figure out why protocollib doesn't work. --- logs/2023-04-28-1.log.gz | Bin 0 -> 123 bytes logs/2023-04-28-2.log.gz | Bin 0 -> 124 bytes logs/2023-04-28-3.log.gz | Bin 0 -> 124 bytes logs/2023-04-28-4.log.gz | Bin 0 -> 124 bytes logs/2023-04-28-5.log.gz | Bin 0 -> 124 bytes logs/2023-04-28-6.log.gz | Bin 0 -> 124 bytes logs/2023-04-28-7.log.gz | Bin 0 -> 124 bytes logs/2023-04-28-8.log.gz | Bin 0 -> 124 bytes pom.xml | 2 +- .../net/artelnatif/nicko/NickoBukkit.java | 28 +++++++++----- .../nicko/disguise/AppearanceManager.java | 6 +++ .../wrapper/WrapperPlayServerRespawn.java | 36 ++++++++++++++---- 12 files changed, 54 insertions(+), 18 deletions(-) create mode 100644 logs/2023-04-28-1.log.gz create mode 100644 logs/2023-04-28-2.log.gz create mode 100644 logs/2023-04-28-3.log.gz create mode 100644 logs/2023-04-28-4.log.gz create mode 100644 logs/2023-04-28-5.log.gz create mode 100644 logs/2023-04-28-6.log.gz create mode 100644 logs/2023-04-28-7.log.gz create mode 100644 logs/2023-04-28-8.log.gz diff --git a/logs/2023-04-28-1.log.gz b/logs/2023-04-28-1.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..20d5077f7dc09d787c8b69aca2bf3e038e909942 GIT binary patch literal 123 zcmb2|=3oGW|Evc$avd@dV0&LcK3RDwPT^7Qwo<9-22TfX!vVNmt;}q))X7pjZuLXqLDGr(>x37x^?+( bU(Kq1D1EkW(M-cTWwY(KTI6eI0qq0;1)VlJ literal 0 HcmV?d00001 diff --git a/logs/2023-04-28-2.log.gz b/logs/2023-04-28-2.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..c9b7d6dc36bebfe5314af5addac817d00f8faa21 GIT binary patch literal 124 zcmV-?0E7P@iwFP!00000{{_LZ4uUWc2H@SN__yL-&9kb7AVZtryH6pUe3%+^2;xs){mdy0)jLBO=BSLNY^4C8vm|D0WK5i__yj{C>0ZPlMJqyus9HgrmfNhd*%+p z>+^l1yOML%HWS95&!v8MLq8FoA}oZ)wzrGBTWbkj2uT$&m7F3zEZ8&&j4-d}VHOU4 enORqZ)26w6@%O4bOC2000290X5eE literal 0 HcmV?d00001 diff --git a/logs/2023-04-28-5.log.gz b/logs/2023-04-28-5.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..454921fa172affc87b6922c83b9f78099a839a50 GIT binary patch literal 124 zcmV-?0E7P@iwFP!00000{{_Ll4uUWg2GHH7__oSmEcK7vNd{L;To?#L(^hDLz2;ts zukSg7JCVCmeH$@+d@jeneRU(@A;Lna?fG(WjkT80hLBVdQ^_gf&4NvnzzFkd?q=cO emzi}n*l(K4gs)fqu|z`mtag7>*qPUA0001f1UuRQ literal 0 HcmV?d00001 diff --git a/logs/2023-04-28-6.log.gz b/logs/2023-04-28-6.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..c0d0683e3e086851d5306755298111f0dccfc06c GIT binary patch literal 124 zcmV-?0E7P@iwFP!00000{{_LZ4uUWc2H>5i__yj{s0AarNd{L;TpS2P(^hDLJ#z=~ z_5HrlHRP_;HWS8=&!v9#&tW3mMOX-D+g?ttv(^&&5RxilDmg{GS+Hvo7-8Pb&8!^! ey0C5rhh1}-@%5@dmPi;L$LbF`@g~1&0002)kT-Au literal 0 HcmV?d00001 diff --git a/logs/2023-04-28-7.log.gz b/logs/2023-04-28-7.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..d1c0febd88a247bbe8ed703cdc72232fb258dd2b GIT binary patch literal 124 zcmV-?0E7P@iwFP!00000{{_LZ4uUWc2H@SN__yL=uwc_9Fv7f=yIDB+ eWoBIss!em5@bjuWOCBALj00016zB%Fm literal 0 HcmV?d00001 diff --git a/logs/2023-04-28-8.log.gz b/logs/2023-04-28-8.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..ffb6f05c8bd9b4aa8fc1ae797468eb06390398a9 GIT binary patch literal 124 zcmb2|=3oGW|Evc$@--O zq*lEXK6dqak>sv$dqFuRot9H^`RUgqvN>ZpJVgzs&QZFjbHkLg#~^>1DL4E6Gizoa cEW93L_oM2nytm4i^Oqm;SADH$$O2jl025F&UH||9 literal 0 HcmV?d00001 diff --git a/pom.xml b/pom.xml index be4c70f..e88257a 100644 --- a/pom.xml +++ b/pom.xml @@ -55,7 +55,7 @@ org.spigotmc - spigot-api + spigot 1.19.4-R0.1-SNAPSHOT provided diff --git a/src/main/java/net/artelnatif/nicko/NickoBukkit.java b/src/main/java/net/artelnatif/nicko/NickoBukkit.java index 061ea72..641b86b 100644 --- a/src/main/java/net/artelnatif/nicko/NickoBukkit.java +++ b/src/main/java/net/artelnatif/nicko/NickoBukkit.java @@ -3,7 +3,10 @@ package net.artelnatif.nicko; import com.comphenix.protocol.PacketType; import com.comphenix.protocol.ProtocolLibrary; import com.comphenix.protocol.ProtocolManager; -import com.comphenix.protocol.events.*; +import com.comphenix.protocol.events.ListenerPriority; +import com.comphenix.protocol.events.PacketAdapter; +import com.comphenix.protocol.events.PacketContainer; +import com.comphenix.protocol.events.PacketEvent; import net.artelnatif.nicko.command.NickoCommand; import net.artelnatif.nicko.config.Configuration; import net.artelnatif.nicko.config.ConfigurationManager; @@ -17,6 +20,7 @@ import net.artelnatif.nicko.mojang.MojangAPI; import net.artelnatif.nicko.placeholder.PlaceHolderHook; import net.artelnatif.nicko.storage.PlayerDataStore; import net.artelnatif.nicko.storage.name.PlayerNameStore; +import net.artelnatif.nicko.wrapper.WrapperPlayServerRespawn; import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.command.PluginCommand; @@ -29,7 +33,6 @@ import xyz.xenondevs.invui.item.impl.SimpleItem; import java.io.File; import java.io.IOException; -import java.lang.reflect.Field; public class NickoBukkit extends JavaPlugin { private static NickoBukkit plugin; @@ -119,13 +122,20 @@ public class NickoBukkit extends JavaPlugin { @Override public void onPacketSending(PacketEvent event) { final PacketContainer packet = event.getPacket(); - packet.getStructures().getFields().forEach(fieldAccessor -> { - final Field field = fieldAccessor.getField(); - getLogger().info("field=[" + - "name=" + field.getName() + "," + - "type=" + field.getType().getSimpleName() + - "]"); - }); + final WrapperPlayServerRespawn respawn = new WrapperPlayServerRespawn(packet); + getLogger().info(respawn.getDimension().getName()); + getLogger().info(String.valueOf(respawn.isCopyMetadata())); + getLogger().info(String.valueOf(respawn.getSeed())); + getLogger().info(String.valueOf(respawn.getLastDeathLocation().isPresent())); + /** + * packet.getStructures().getFields().forEach(fieldAccessor -> { + * final Field field = fieldAccessor.getField(); + * getLogger().info("field=[" + + * "name=" + field.getName() + "," + + * "type=" + field.getType().getSimpleName() + + * "]"); + * }); + */ } }); diff --git a/src/main/java/net/artelnatif/nicko/disguise/AppearanceManager.java b/src/main/java/net/artelnatif/nicko/disguise/AppearanceManager.java index 9c82225..93e3841 100644 --- a/src/main/java/net/artelnatif/nicko/disguise/AppearanceManager.java +++ b/src/main/java/net/artelnatif/nicko/disguise/AppearanceManager.java @@ -139,16 +139,22 @@ public class AppearanceManager { private void respawnPlayer() { Bukkit.broadcastMessage("Respawning player"); + final World world = player.getWorld(); final WrapperPlayServerRespawn respawn = new WrapperPlayServerRespawn(); respawn.setGameMode(player.getGameMode()); + respawn.setPreviousGameMode(player.getGameMode()); respawn.setDifficulty(world.getDifficulty()); respawn.setDimension(world); respawn.setSeed(world.getSeed()); respawn.setLastDeathLocation(player.getLocation()); + respawn.setCopyMetadata(false); respawn.getHandle().getBooleans().write(0, false); // is debug respawn.getHandle().getBooleans().write(1, false); // is flat respawn.sendPacket(player); + /*final EntityPlayer cp = ((CraftPlayer) player).getHandle(); + final PacketPlayOutRespawn respawn = new PacketPlayOutRespawn(cp.cG().Z(), cp.P(), player.getWorld().getSeed(), EnumGamemode.a, EnumGamemode.a, true, true, (byte) 0x00, Optional.empty()); + cp.b.a(respawn);*/ } private void updateTabList(WrappedGameProfile gameProfile, String displayName) { diff --git a/src/main/java/net/artelnatif/nicko/wrapper/WrapperPlayServerRespawn.java b/src/main/java/net/artelnatif/nicko/wrapper/WrapperPlayServerRespawn.java index 6ac26ee..a8a855a 100644 --- a/src/main/java/net/artelnatif/nicko/wrapper/WrapperPlayServerRespawn.java +++ b/src/main/java/net/artelnatif/nicko/wrapper/WrapperPlayServerRespawn.java @@ -2,10 +2,8 @@ package net.artelnatif.nicko.wrapper; import com.comphenix.protocol.PacketType; import com.comphenix.protocol.events.PacketContainer; -import com.comphenix.protocol.utility.MinecraftReflection; import com.comphenix.protocol.utility.MinecraftVersion; import com.comphenix.protocol.wrappers.BlockPosition; -import com.comphenix.protocol.wrappers.BukkitConverters; import com.comphenix.protocol.wrappers.EnumWrappers; import org.bukkit.Difficulty; import org.bukkit.GameMode; @@ -28,6 +26,8 @@ public class WrapperPlayServerRespawn extends AbstractPacket { handle.getModifier().writeDefaults(); } + public WrapperPlayServerRespawn(PacketContainer container) { super(container, TYPE); } + //............. // Dimension Field (1.8 - Present) // The dimension field has changed numerous times: @@ -42,11 +42,7 @@ public class WrapperPlayServerRespawn extends AbstractPacket { public World getDimension() { if (MinecraftVersion.WILD_UPDATE.atOrAbove()) { - // 1.19 and above - return handle.getHolders( - MinecraftReflection.getDimensionManager(), - BukkitConverters.getDimensionConverter() - ).read(0); + return handle.getWorldKeys().read(0); } return handle.getDimensionTypes().read(0); @@ -58,7 +54,7 @@ public class WrapperPlayServerRespawn extends AbstractPacket { handle.getWorldKeys().write(0, value); return; } - // 1.18 and below + handle.getDimensionTypes().write(0, value); } @@ -74,6 +70,30 @@ public class WrapperPlayServerRespawn extends AbstractPacket { handle.getGameModes().write(0, EnumWrappers.NativeGameMode.fromBukkit(value)); } + //............. + // Previous GameMode Field + //............. + + public void getPreviousGameMode() { + handle.getGameModes().read(1); + } + + public void setPreviousGameMode(GameMode value) { + handle.getGameModes().write(1, EnumWrappers.NativeGameMode.fromBukkit(value)); + } + + //............. + // Copy Metadata Field + //............. + + public boolean isCopyMetadata() { + return handle.getBytes().read(0) != 0; + } + + public void setCopyMetadata(boolean value) { + handle.getBytes().write(0, ((byte) (value ? 1 : 0))); + } + //............. // Last death location Field // Added in 1.19.