From ceca7561843e5e3d512d28e77b79c17a117e0414 Mon Sep 17 00:00:00 2001 From: Boy Date: Thu, 1 May 2025 11:54:02 +0200 Subject: [PATCH] refactor: use static entity object for fake nms entity --- .../nms/v1_20_R3/NMSPackets.java | 24 +++++++------- .../nms/v1_20_R4/NMSPackets.java | 24 +++++++------- .../nms/v1_21_R1/NMSPackets.java | 32 +++++++------------ .../nms/v1_21_R2/NMSPackets.java | 14 ++++---- .../nms/v1_21_R3/NMSPackets.java | 14 ++++---- .../nms/v1_21_R4/NMSPackets.java | 14 ++++---- 6 files changed, 53 insertions(+), 69 deletions(-) diff --git a/v1_20_R3/src/main/java/me/lojosho/hibiscuscommons/nms/v1_20_R3/NMSPackets.java b/v1_20_R3/src/main/java/me/lojosho/hibiscuscommons/nms/v1_20_R3/NMSPackets.java index 7eeaf33..4fed040 100644 --- a/v1_20_R3/src/main/java/me/lojosho/hibiscuscommons/nms/v1_20_R3/NMSPackets.java +++ b/v1_20_R3/src/main/java/me/lojosho/hibiscuscommons/nms/v1_20_R3/NMSPackets.java @@ -40,6 +40,8 @@ import java.util.*; public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons.nms.NMSPackets { + private static ServerLevel level = MinecraftServer.getServer().overworld(); + private static Entity fakeNmsEntity = new ArmorStand(net.minecraft.world.entity.EntityType.ARMOR_STAND, level); static Constructor passengerConstructor; static { try { @@ -61,12 +63,10 @@ public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons. @Override public void sendRotateHeadPacket(int entityId, Location location, List sendTo) { - ServerLevel level = MinecraftServer.getServer().overworld(); - Entity entity = new ArmorStand(net.minecraft.world.entity.EntityType.ARMOR_STAND, level); - entity.setId(entityId); + fakeNmsEntity.setId(entityId); byte headRot = (byte) (location.getYaw() * 256.0F / 360.0F); - ClientboundRotateHeadPacket packet = new ClientboundRotateHeadPacket(entity, headRot); + ClientboundRotateHeadPacket packet = new ClientboundRotateHeadPacket(fakeNmsEntity, headRot); for (Player p : sendTo) sendPacket(p, packet); } @@ -207,21 +207,19 @@ public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons. boolean onGround, List sendTo ) { - ServerLevel level = MinecraftServer.getServer().overworld(); - Entity entity = new ArmorStand(level, x, y, z); - entity.setId(entityId); - entity.setRot((yaw * 256.0F / 360.0F), (pitch * 256.0F / 360.0F)); - entity.setOnGround(onGround); + fakeNmsEntity.setId(entityId); + fakeNmsEntity.setRot((yaw * 256.0F / 360.0F), (pitch * 256.0F / 360.0F)); + fakeNmsEntity.setOnGround(onGround); - ClientboundTeleportEntityPacket packet = new ClientboundTeleportEntityPacket(entity); + ClientboundTeleportEntityPacket packet = new ClientboundTeleportEntityPacket(fakeNmsEntity); for (Player p : sendTo) sendPacket(p, packet); } @Override public void sendCameraPacket(int entityId, List sendTo) { - // Fake entity just to avoid reflection - Entity entity = new ArmorStand(net.minecraft.world.entity.EntityType.ARMOR_STAND, MinecraftServer.getServer().overworld()); - ClientboundSetCameraPacket packet = new ClientboundSetCameraPacket(entity); + fakeNmsEntity.setId(entityId); + + ClientboundSetCameraPacket packet = new ClientboundSetCameraPacket(fakeNmsEntity); for (Player p : sendTo) sendPacket(p, packet); } diff --git a/v1_20_R4/src/main/java/me/lojosho/hibiscuscommons/nms/v1_20_R4/NMSPackets.java b/v1_20_R4/src/main/java/me/lojosho/hibiscuscommons/nms/v1_20_R4/NMSPackets.java index d33ca7b..7c5cc04 100644 --- a/v1_20_R4/src/main/java/me/lojosho/hibiscuscommons/nms/v1_20_R4/NMSPackets.java +++ b/v1_20_R4/src/main/java/me/lojosho/hibiscuscommons/nms/v1_20_R4/NMSPackets.java @@ -50,6 +50,8 @@ import java.util.*; public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons.nms.NMSPackets { + private static ServerLevel level = MinecraftServer.getServer().overworld(); + private static Entity fakeNmsEntity = new ArmorStand(net.minecraft.world.entity.EntityType.ARMOR_STAND, level); static Constructor passengerConstructor; static { try { @@ -71,12 +73,10 @@ public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons. @Override public void sendRotateHeadPacket(int entityId, Location location, List sendTo) { - ServerLevel level = MinecraftServer.getServer().overworld(); - Entity entity = new ArmorStand(net.minecraft.world.entity.EntityType.ARMOR_STAND, level); - entity.setId(entityId); + fakeNmsEntity.setId(entityId); byte headRot = (byte) (location.getYaw() * 256.0F / 360.0F); - ClientboundRotateHeadPacket packet = new ClientboundRotateHeadPacket(entity, headRot); + ClientboundRotateHeadPacket packet = new ClientboundRotateHeadPacket(fakeNmsEntity, headRot); for (Player p : sendTo) sendPacket(p, packet); } @@ -216,21 +216,19 @@ public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons. boolean onGround, List sendTo ) { - ServerLevel level = MinecraftServer.getServer().overworld(); - Entity entity = new ArmorStand(level, x, y, z); - entity.setId(entityId); - entity.setRot((yaw * 256.0F / 360.0F), (pitch * 256.0F / 360.0F)); - entity.setOnGround(onGround); + fakeNmsEntity.setId(entityId); + fakeNmsEntity.setRot((yaw * 256.0F / 360.0F), (pitch * 256.0F / 360.0F)); + fakeNmsEntity.setOnGround(onGround); - ClientboundTeleportEntityPacket packet = new ClientboundTeleportEntityPacket(entity); + ClientboundTeleportEntityPacket packet = new ClientboundTeleportEntityPacket(fakeNmsEntity); for (Player p : sendTo) sendPacket(p, packet); } @Override public void sendCameraPacket(int entityId, List sendTo) { - // Fake entity just to avoid reflection - Entity entity = new ArmorStand(net.minecraft.world.entity.EntityType.ARMOR_STAND, MinecraftServer.getServer().overworld()); - ClientboundSetCameraPacket packet = new ClientboundSetCameraPacket(entity); + fakeNmsEntity.setId(entityId); + + ClientboundSetCameraPacket packet = new ClientboundSetCameraPacket(fakeNmsEntity); for (Player p : sendTo) sendPacket(p, packet); } diff --git a/v1_21_R1/src/main/java/me/lojosho/hibiscuscommons/nms/v1_21_R1/NMSPackets.java b/v1_21_R1/src/main/java/me/lojosho/hibiscuscommons/nms/v1_21_R1/NMSPackets.java index 8f58be9..616ebb3 100644 --- a/v1_21_R1/src/main/java/me/lojosho/hibiscuscommons/nms/v1_21_R1/NMSPackets.java +++ b/v1_21_R1/src/main/java/me/lojosho/hibiscuscommons/nms/v1_21_R1/NMSPackets.java @@ -50,9 +50,9 @@ import java.util.*; public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons.nms.NMSPackets { + private static ServerLevel level = MinecraftServer.getServer().overworld(); + private static Entity fakeNmsEntity = new ArmorStand(net.minecraft.world.entity.EntityType.ARMOR_STAND, level); static Constructor passengerConstructor; - static Constructor rotationConstructor; - static Constructor spawnConstructor; static { try { @@ -61,12 +61,6 @@ public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons. } catch (Exception e) { e.printStackTrace(); } - try { - rotationConstructor = ClientboundRotateHeadPacket.class.getDeclaredConstructor(FriendlyByteBuf.class); - rotationConstructor.setAccessible(true); - } catch (Exception e) { - e.printStackTrace(); - } } @Override @@ -80,12 +74,10 @@ public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons. @Override public void sendRotateHeadPacket(int entityId, Location location, List sendTo) { - ServerLevel level = MinecraftServer.getServer().overworld(); - Entity entity = new ArmorStand(net.minecraft.world.entity.EntityType.ARMOR_STAND, level); - entity.setId(entityId); + fakeNmsEntity.setId(entityId); byte headRot = (byte) (location.getYaw() * 256.0F / 360.0F); - ClientboundRotateHeadPacket packet = new ClientboundRotateHeadPacket(entity, headRot); + ClientboundRotateHeadPacket packet = new ClientboundRotateHeadPacket(fakeNmsEntity, headRot); for (Player p : sendTo) sendPacket(p, packet); } @@ -225,21 +217,19 @@ public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons. boolean onGround, List sendTo ) { - ServerLevel level = MinecraftServer.getServer().overworld(); - Entity entity = new ArmorStand(level, x, y, z); - entity.setId(entityId); - entity.setRot((yaw * 256.0F / 360.0F), (pitch * 256.0F / 360.0F)); - entity.setOnGround(onGround); + fakeNmsEntity.setId(entityId); + fakeNmsEntity.setRot((yaw * 256.0F / 360.0F), (pitch * 256.0F / 360.0F)); + fakeNmsEntity.setOnGround(onGround); - ClientboundTeleportEntityPacket packet = new ClientboundTeleportEntityPacket(entity); + ClientboundTeleportEntityPacket packet = new ClientboundTeleportEntityPacket(fakeNmsEntity); for (Player p : sendTo) sendPacket(p, packet); } @Override public void sendCameraPacket(int entityId, List sendTo) { - // Fake entity just to avoid reflection - Entity entity = new ArmorStand(net.minecraft.world.entity.EntityType.ARMOR_STAND, MinecraftServer.getServer().overworld()); - ClientboundSetCameraPacket packet = new ClientboundSetCameraPacket(entity); + fakeNmsEntity.setId(entityId); + + ClientboundSetCameraPacket packet = new ClientboundSetCameraPacket(fakeNmsEntity); for (Player p : sendTo) sendPacket(p, packet); } diff --git a/v1_21_R2/src/main/java/me/lojosho/hibiscuscommons/nms/v1_21_R2/NMSPackets.java b/v1_21_R2/src/main/java/me/lojosho/hibiscuscommons/nms/v1_21_R2/NMSPackets.java index b3d2cef..8b92555 100644 --- a/v1_21_R2/src/main/java/me/lojosho/hibiscuscommons/nms/v1_21_R2/NMSPackets.java +++ b/v1_21_R2/src/main/java/me/lojosho/hibiscuscommons/nms/v1_21_R2/NMSPackets.java @@ -53,6 +53,8 @@ import java.util.*; public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons.nms.NMSPackets { + private static ServerLevel level = MinecraftServer.getServer().overworld(); + private static Entity fakeNmsEntity = new ArmorStand(net.minecraft.world.entity.EntityType.ARMOR_STAND, level); static Constructor passengerConstructor; static { try { @@ -74,12 +76,10 @@ public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons. @Override public void sendRotateHeadPacket(int entityId, Location location, List sendTo) { - ServerLevel level = MinecraftServer.getServer().overworld(); - Entity entity = new ArmorStand(net.minecraft.world.entity.EntityType.ARMOR_STAND, level); - entity.setId(entityId); + fakeNmsEntity.setId(entityId); byte headRot = (byte) (location.getYaw() * 256.0F / 360.0F); - ClientboundRotateHeadPacket packet = new ClientboundRotateHeadPacket(entity, headRot); + ClientboundRotateHeadPacket packet = new ClientboundRotateHeadPacket(fakeNmsEntity, headRot); for (Player p : sendTo) sendPacket(p, packet); } @@ -230,9 +230,9 @@ public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons. @Override public void sendCameraPacket(int entityId, List sendTo) { - // Fake entity just to avoid reflection - Entity entity = new ArmorStand(net.minecraft.world.entity.EntityType.ARMOR_STAND, MinecraftServer.getServer().overworld()); - ClientboundSetCameraPacket packet = new ClientboundSetCameraPacket(entity); + fakeNmsEntity.setId(entityId); + + ClientboundSetCameraPacket packet = new ClientboundSetCameraPacket(fakeNmsEntity); for (Player p : sendTo) sendPacket(p, packet); } diff --git a/v1_21_R3/src/main/java/me/lojosho/hibiscuscommons/nms/v1_21_R3/NMSPackets.java b/v1_21_R3/src/main/java/me/lojosho/hibiscuscommons/nms/v1_21_R3/NMSPackets.java index ae6b42e..5824c46 100644 --- a/v1_21_R3/src/main/java/me/lojosho/hibiscuscommons/nms/v1_21_R3/NMSPackets.java +++ b/v1_21_R3/src/main/java/me/lojosho/hibiscuscommons/nms/v1_21_R3/NMSPackets.java @@ -56,6 +56,8 @@ import java.util.*; public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons.nms.NMSPackets { + private static ServerLevel level = MinecraftServer.getServer().overworld(); + private static Entity fakeNmsEntity = new ArmorStand(net.minecraft.world.entity.EntityType.ARMOR_STAND, level); static Constructor passengerConstructor; static { @@ -78,12 +80,10 @@ public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons. @Override public void sendRotateHeadPacket(int entityId, Location location, List sendTo) { - ServerLevel level = MinecraftServer.getServer().overworld(); - Entity entity = new ArmorStand(net.minecraft.world.entity.EntityType.ARMOR_STAND, level); - entity.setId(entityId); + fakeNmsEntity.setId(entityId); byte headRot = (byte) (location.getYaw() * 256.0F / 360.0F); - ClientboundRotateHeadPacket packet = new ClientboundRotateHeadPacket(entity, headRot); + ClientboundRotateHeadPacket packet = new ClientboundRotateHeadPacket(fakeNmsEntity, headRot); for (Player p : sendTo) sendPacket(p, packet); } @@ -234,9 +234,9 @@ public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons. @Override public void sendCameraPacket(int entityId, List sendTo) { - // Fake entity just to avoid reflection - Entity entity = new ArmorStand(net.minecraft.world.entity.EntityType.ARMOR_STAND, MinecraftServer.getServer().overworld()); - ClientboundSetCameraPacket packet = new ClientboundSetCameraPacket(entity); + fakeNmsEntity.setId(entityId); + + ClientboundSetCameraPacket packet = new ClientboundSetCameraPacket(fakeNmsEntity); for (Player p : sendTo) sendPacket(p, packet); } diff --git a/v1_21_R4/src/main/java/me/lojosho/hibiscuscommons/nms/v1_21_R4/NMSPackets.java b/v1_21_R4/src/main/java/me/lojosho/hibiscuscommons/nms/v1_21_R4/NMSPackets.java index a9df95d..aa84c2b 100644 --- a/v1_21_R4/src/main/java/me/lojosho/hibiscuscommons/nms/v1_21_R4/NMSPackets.java +++ b/v1_21_R4/src/main/java/me/lojosho/hibiscuscommons/nms/v1_21_R4/NMSPackets.java @@ -57,6 +57,8 @@ import java.util.*; public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons.nms.NMSPackets { + private static ServerLevel level = MinecraftServer.getServer().overworld(); + private static Entity fakeNmsEntity = new ArmorStand(net.minecraft.world.entity.EntityType.ARMOR_STAND, level); static Constructor passengerConstructor; static { @@ -79,12 +81,10 @@ public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons. @Override public void sendRotateHeadPacket(int entityId, Location location, List sendTo) { - ServerLevel level = MinecraftServer.getServer().overworld(); - Entity entity = new ArmorStand(net.minecraft.world.entity.EntityType.ARMOR_STAND, level); - entity.setId(entityId); + fakeNmsEntity.setId(entityId); byte headRot = (byte) (location.getYaw() * 256.0F / 360.0F); - ClientboundRotateHeadPacket packet = new ClientboundRotateHeadPacket(entity, headRot); + ClientboundRotateHeadPacket packet = new ClientboundRotateHeadPacket(fakeNmsEntity, headRot); for (Player p : sendTo) sendPacket(p, packet); } @@ -235,11 +235,9 @@ public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons. @Override public void sendCameraPacket(int entityId, List sendTo) { - // Fake entity just to avoid reflection - Entity entity = new ArmorStand(net.minecraft.world.entity.EntityType.ARMOR_STAND, MinecraftServer.getServer().overworld()); - entity.setId(entityId); + fakeNmsEntity.setId(entityId); - ClientboundSetCameraPacket packet = new ClientboundSetCameraPacket(entity); + ClientboundSetCameraPacket packet = new ClientboundSetCameraPacket(fakeNmsEntity); for (Player p : sendTo) sendPacket(p, packet); }