From 026c5b8ce69cea4f25e3129d375b93771cbfcd2c Mon Sep 17 00:00:00 2001 From: Boy0000 Date: Sun, 18 May 2025 21:53:35 +0200 Subject: [PATCH] feat: expose helper method to create mount-packets --- .../me/lojosho/hibiscuscommons/nms/NMSPackets.java | 2 ++ gradle.properties | 2 +- gradle/wrapper/gradle-wrapper.properties | 2 +- .../hibiscuscommons/nms/v1_20_R3/NMSPackets.java | 14 ++++++++++++++ .../hibiscuscommons/nms/v1_20_R4/NMSPackets.java | 14 ++++++++++++++ .../hibiscuscommons/nms/v1_21_R1/NMSPackets.java | 14 ++++++++++++++ .../hibiscuscommons/nms/v1_21_R2/NMSPackets.java | 14 ++++++++++++++ .../hibiscuscommons/nms/v1_21_R3/NMSPackets.java | 14 ++++++++++++++ .../hibiscuscommons/nms/v1_21_R4/NMSPackets.java | 14 ++++++++++++++ 9 files changed, 88 insertions(+), 2 deletions(-) diff --git a/common/src/main/java/me/lojosho/hibiscuscommons/nms/NMSPackets.java b/common/src/main/java/me/lojosho/hibiscuscommons/nms/NMSPackets.java index 990b785..8d21795 100644 --- a/common/src/main/java/me/lojosho/hibiscuscommons/nms/NMSPackets.java +++ b/common/src/main/java/me/lojosho/hibiscuscommons/nms/NMSPackets.java @@ -93,4 +93,6 @@ public interface NMSPackets { List sendTo); void sendToastPacket(Player player, ItemStack icon, Component title, Component description); + + Object createMountPacket(int entityId, int[] passengerIds); } diff --git a/gradle.properties b/gradle.properties index 14a7ad3..4d061dc 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1 +1 @@ -userdevVersion=2.0.0-beta.14 \ No newline at end of file +userdevVersion=2.0.0-beta.17 \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 18362b7..3c44eb1 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.14-bin.zip networkTimeout=10000 zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists 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 6bbe400..751d51f 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 @@ -346,4 +346,18 @@ public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons. public void sendToastPacket(Player player, ItemStack icon, Component title, Component description) { throw new UnsupportedOperationException("Not implemented in this version."); } + + @Override + public Object createMountPacket(int entityId, int[] passengerIds) { + fakeNmsEntity.setId(entityId); + List passengers = Arrays.stream(passengerIds).mapToObj(id -> { + Entity passenger = new ArmorStand(net.minecraft.world.entity.EntityType.ARMOR_STAND, level); + passenger.setId(id); + return passenger; + }).toList(); + fakeNmsEntity.passengers = ImmutableList.copyOf(passengers); + ClientboundSetPassengersPacket packet = new ClientboundSetPassengersPacket(fakeNmsEntity); + fakeNmsEntity.passengers = ImmutableList.of(); + return 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 9ac73d0..a343988 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 @@ -415,4 +415,18 @@ public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons. sendPacket(player, removePacket); }, 2L); } + + @Override + public Object createMountPacket(int entityId, int[] passengerIds) { + fakeNmsEntity.setId(entityId); + List passengers = Arrays.stream(passengerIds).mapToObj(id -> { + Entity passenger = new ArmorStand(net.minecraft.world.entity.EntityType.ARMOR_STAND, level); + passenger.setId(id); + return passenger; + }).toList(); + fakeNmsEntity.passengers = ImmutableList.copyOf(passengers); + ClientboundSetPassengersPacket packet = new ClientboundSetPassengersPacket(fakeNmsEntity); + fakeNmsEntity.passengers = ImmutableList.of(); + return 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 bedd00e..ce9122b 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 @@ -414,4 +414,18 @@ public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons. sendPacket(player, removePacket); }, 2L); } + + @Override + public Object createMountPacket(int entityId, int[] passengerIds) { + fakeNmsEntity.setId(entityId); + List passengers = Arrays.stream(passengerIds).mapToObj(id -> { + Entity passenger = new ArmorStand(net.minecraft.world.entity.EntityType.ARMOR_STAND, level); + passenger.setId(id); + return passenger; + }).toList(); + fakeNmsEntity.passengers = ImmutableList.copyOf(passengers); + ClientboundSetPassengersPacket packet = new ClientboundSetPassengersPacket(fakeNmsEntity); + fakeNmsEntity.passengers = ImmutableList.of(); + return 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 09fe21a..50e6abc 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 @@ -417,4 +417,18 @@ public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons. sendPacket(player, removePacket); }, 2L); } + + @Override + public Object createMountPacket(int entityId, int[] passengerIds) { + fakeNmsEntity.setId(entityId); + List passengers = Arrays.stream(passengerIds).mapToObj(id -> { + Entity passenger = new ArmorStand(net.minecraft.world.entity.EntityType.ARMOR_STAND, level); + passenger.setId(id); + return passenger; + }).toList(); + fakeNmsEntity.passengers = ImmutableList.copyOf(passengers); + ClientboundSetPassengersPacket packet = new ClientboundSetPassengersPacket(fakeNmsEntity); + fakeNmsEntity.passengers = ImmutableList.of(); + return 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 0347060..eeb1d72 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 @@ -454,4 +454,18 @@ public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons. sendPacket(player, removePacket); }, 2L); } + + @Override + public Object createMountPacket(int entityId, int[] passengerIds) { + fakeNmsEntity.setId(entityId); + List passengers = Arrays.stream(passengerIds).mapToObj(id -> { + Entity passenger = new ArmorStand(net.minecraft.world.entity.EntityType.ARMOR_STAND, level); + passenger.setId(id); + return passenger; + }).toList(); + fakeNmsEntity.passengers = ImmutableList.copyOf(passengers); + ClientboundSetPassengersPacket packet = new ClientboundSetPassengersPacket(fakeNmsEntity); + fakeNmsEntity.passengers = ImmutableList.of(); + return 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 d4d7197..4b2c139 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 @@ -453,4 +453,18 @@ public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons. sendPacket(player, removePacket); }, 2L); } + + @Override + public Object createMountPacket(int entityId, int[] passengerIds) { + fakeNmsEntity.setId(entityId); + List passengers = Arrays.stream(passengerIds).mapToObj(id -> { + Entity passenger = new ArmorStand(net.minecraft.world.entity.EntityType.ARMOR_STAND, level); + passenger.setId(id); + return passenger; + }).toList(); + fakeNmsEntity.passengers = ImmutableList.copyOf(passengers); + ClientboundSetPassengersPacket packet = new ClientboundSetPassengersPacket(fakeNmsEntity); + fakeNmsEntity.passengers = ImmutableList.of(); + return packet; + } }