diff --git a/build.gradle.kts b/build.gradle.kts index 6c5a68c..c979575 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -33,7 +33,7 @@ allprojects { maven("https://repo.nexomc.com/snapshots/") maven("https://repo.nexomc.com/releases/") - // Geary & Backup ProtocolLib repo + // Geary repo maven("https://repo.mineinabyss.com/releases/") maven("https://repo.mineinabyss.com/snapshots/") @@ -55,9 +55,6 @@ allprojects { // PlaceholderAPI maven("https://repo.extendedclip.com/content/repositories/placeholderapi/") - // ProtocolLib - maven("https://repo.dmulloy2.net/repository/public/") - // Oraxen maven("https://repo.oraxen.com/releases") @@ -83,7 +80,7 @@ allprojects { compileOnly("com.mojang:authlib:3.13.56") compileOnly("org.jetbrains:annotations:26.0.1") compileOnly("io.th0rgal:oraxen:1.182.0") - compileOnly("com.nexomc:nexo:1.0.0") + compileOnly("com.nexomc:nexo:1.4.0") compileOnly("com.github.LoneDev6:API-ItemsAdder:3.6.3-beta-14") compileOnly("com.mineinabyss:geary-papermc:0.31.0-dev.4") compileOnly("it.unimi.dsi:fastutil:8.5.15") @@ -98,7 +95,6 @@ allprojects { } compileOnly("com.github.Xiao-MoMi:Custom-Fishing:2.3.3") compileOnly("com.ticxo.modelengine:ModelEngine:R4.0.2") - compileOnly("com.comphenix.protocol:ProtocolLib:5.3.0") compileOnly("org.joml:joml:1.10.8") compileOnly("com.google.guava:guava:33.4.0-jre") // Sometimes just not included in compile time??? compileOnly("com.github.Gecolay.GSit:core:2.0.0") @@ -151,7 +147,6 @@ tasks { downloadPlugins { hangar("PlaceholderAPI", "2.11.6") - url("https://ci.dmulloy2.net/job/ProtocolLib/lastSuccessfulBuild/artifact/build/libs/ProtocolLib.jar") url("https://download.luckperms.net/1567/bukkit/loader/LuckPerms-Bukkit-5.4.150.jar") } } @@ -203,7 +198,6 @@ bukkit { main = "me.lojosho.hibiscuscommons.HibiscusCommonsPlugin" apiVersion = "1.20" authors = listOf("LoJoSho") - depend = listOf("ProtocolLib") softDepend = listOf( "ModelEngine", "Oraxen", @@ -250,12 +244,6 @@ hangarPublish { val versions: List = listOf("1.18.2-1.20.4") platformVersions.set(versions) - - dependencies { - hangar("ProtocolLib") { - required.set(true) - } - } } } } 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 06b7e47..d6db71a 100644 --- a/common/src/main/java/me/lojosho/hibiscuscommons/nms/NMSPackets.java +++ b/common/src/main/java/me/lojosho/hibiscuscommons/nms/NMSPackets.java @@ -2,6 +2,7 @@ package me.lojosho.hibiscuscommons.nms; import it.unimi.dsi.fastutil.ints.IntList; import net.kyori.adventure.text.Component; +import org.bukkit.GameMode; import org.bukkit.Location; import org.bukkit.entity.Display; import org.bukkit.entity.EntityType; @@ -20,10 +21,13 @@ public interface NMSPackets { static int POSITION_INTERPOLATION_DURATION = 2; - void sendSlotUpdate( - Player player, - int slot - ); + void sendGamemodeChange(Player player, GameMode gameMode); + + void sendRotateHeadPacket(int entityId, Location location, List sendTo); + + void sendRotationPacket(int entityId, Location location, boolean onGround, List sendTo); + + void sendSlotUpdate(Player player, int slot); void sendEquipmentSlotUpdate( int entityId, @@ -58,8 +62,6 @@ public interface NMSPackets { List sendTo ); - void sendRotationPacket(int entityId, float yaw, boolean onGround, List sendTo); - void sendCameraPacket(int entityId, List sendTo); void sendSpawnEntityPacket(int entityId, UUID uuid, EntityType entityType, Location location, List sendTo); diff --git a/common/src/main/java/me/lojosho/hibiscuscommons/nms/NMSUtils.java b/common/src/main/java/me/lojosho/hibiscuscommons/nms/NMSUtils.java index 833f0b8..87ef60e 100644 --- a/common/src/main/java/me/lojosho/hibiscuscommons/nms/NMSUtils.java +++ b/common/src/main/java/me/lojosho/hibiscuscommons/nms/NMSUtils.java @@ -2,7 +2,6 @@ package me.lojosho.hibiscuscommons.nms; import org.bukkit.Color; import org.bukkit.entity.Entity; -import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import org.jetbrains.annotations.NotNull; diff --git a/common/src/main/java/me/lojosho/hibiscuscommons/util/ServerUtils.java b/common/src/main/java/me/lojosho/hibiscuscommons/util/ServerUtils.java index 4d6ffaf..38aa218 100644 --- a/common/src/main/java/me/lojosho/hibiscuscommons/util/ServerUtils.java +++ b/common/src/main/java/me/lojosho/hibiscuscommons/util/ServerUtils.java @@ -1,12 +1,12 @@ package me.lojosho.hibiscuscommons.util; -import com.comphenix.protocol.wrappers.WrappedGameProfile; -import com.comphenix.protocol.wrappers.WrappedSignedProperty; import me.lojosho.hibiscuscommons.HibiscusCommonsPlugin; import me.lojosho.hibiscuscommons.nms.NMSHandlers; import org.bukkit.Color; import org.bukkit.entity.Entity; import org.bukkit.entity.Player; +import org.bukkit.profile.PlayerProfile; +import org.bukkit.profile.PlayerTextures; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -21,14 +21,8 @@ public class ServerUtils { } @Nullable - public static WrappedSignedProperty getSkin(Player player) { - WrappedSignedProperty skinData = WrappedGameProfile.fromPlayer(player).getProperties() - .get("textures").stream().findAny().orElse(null); - - if (skinData == null) { - return null; - } - return new WrappedSignedProperty("textures", skinData.getValue(), skinData.getSignature()); + public static PlayerTextures getSkin(Player player) { + return player.getPlayerProfile().getTextures(); } /** diff --git a/common/src/main/java/me/lojosho/hibiscuscommons/util/packets/PacketManager.java b/common/src/main/java/me/lojosho/hibiscuscommons/util/packets/PacketManager.java index 07e8fad..fe9e60c 100644 --- a/common/src/main/java/me/lojosho/hibiscuscommons/util/packets/PacketManager.java +++ b/common/src/main/java/me/lojosho/hibiscuscommons/util/packets/PacketManager.java @@ -1,12 +1,10 @@ package me.lojosho.hibiscuscommons.util.packets; -import com.comphenix.protocol.PacketType; -import com.comphenix.protocol.ProtocolLibrary; -import com.comphenix.protocol.events.PacketContainer; import it.unimi.dsi.fastutil.ints.IntArrayList; import it.unimi.dsi.fastutil.ints.IntList; import me.lojosho.hibiscuscommons.nms.NMSHandlers; import me.lojosho.hibiscuscommons.util.MessagesUtil; +import org.bukkit.GameMode; import org.bukkit.Location; import org.bukkit.entity.Entity; import org.bukkit.entity.EntityType; @@ -34,14 +32,9 @@ public class PacketManager { public static void gamemodeChangePacket( Player player, - int gamemode + GameMode gamemode ) { - PacketContainer packet = new PacketContainer(PacketType.Play.Server.GAME_STATE_CHANGE); - packet.getGameStateIDs().write(0, 3); - // Tells what event this is. This is a change gamemode event. - packet.getFloat().write(0, (float) gamemode); - sendPacket(player, packet); - MessagesUtil.sendDebugMessages("Gamemode Change sent to " + player + " to be " + gamemode); + NMSHandlers.getHandler().getPacketHandler().sendGamemodeChange(player, gamemode); } public static void ridingMountPacket( @@ -52,15 +45,12 @@ public class PacketManager { NMSHandlers.getHandler().getPacketHandler().sendMountPacket(mountId, new int[]{passengerId}, sendTo); } - public static void sendLookPacket( + public static void sendRotateHeadPacket( int entityId, @NotNull Location location, @NotNull List sendTo ) { - PacketContainer packet = new PacketContainer(PacketType.Play.Server.ENTITY_HEAD_ROTATION); - packet.getIntegers().write(0, entityId); - packet.getBytes().write(0, (byte) (location.getYaw() * 256.0F / 360.0F)); - for (Player p : sendTo) sendPacket(p, packet); + NMSHandlers.getHandler().getPacketHandler().sendRotateHeadPacket(entityId, location, sendTo); } public static void sendRotationPacket( @@ -69,29 +59,7 @@ public class PacketManager { boolean onGround, @NotNull List sendTo ) { - float ROTATION_FACTOR = 256.0F / 360.0F; - float yaw = location.getYaw() * ROTATION_FACTOR; - float pitch = location.getPitch() * ROTATION_FACTOR; - PacketContainer packet = new PacketContainer(PacketType.Play.Server.ENTITY_LOOK); - packet.getIntegers().write(0, entityId); - packet.getBytes().write(0, (byte) yaw); - packet.getBytes().write(1, (byte) pitch); - - //Bukkit.getLogger().info("DEBUG: Yaw: " + (location.getYaw() * ROTATION_FACTOR) + " | Original Yaw: " + location.getYaw()); - packet.getBooleans().write(0, onGround); - for (Player p : sendTo) sendPacket(p, packet); - } - - public static void sendRotationPacket( - int entityId, - int yaw, - boolean onGround, - @NotNull List sendTo - ) { - float ROTATION_FACTOR = 256.0F / 360.0F; - float yaw2 = yaw * ROTATION_FACTOR; - - NMSHandlers.getHandler().getPacketHandler().sendRotationPacket(entityId, yaw2, onGround, sendTo); + NMSHandlers.getHandler().getPacketHandler().sendRotationPacket(entityId, location, onGround, sendTo); } public static void sendRidingPacket( @@ -213,9 +181,4 @@ public class PacketManager { return players; } - public static void sendPacket(Player player, PacketContainer packet) { - if (player == null) return; - ProtocolLibrary.getProtocolManager().sendServerPacket(player, packet, null,false); - } - } 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 d3501df..290f4bc 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 @@ -1,23 +1,14 @@ package me.lojosho.hibiscuscommons.nms.v1_20_R3; -import com.google.gson.JsonDeserializationContext; -import com.google.gson.JsonObject; import com.mojang.datafixers.util.Pair; -import com.mojang.serialization.JsonOps; import io.netty.buffer.Unpooled; import it.unimi.dsi.fastutil.ints.IntList; -import me.lojosho.hibiscuscommons.HibiscusCommonsPlugin; import net.kyori.adventure.text.Component; -import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer; -import net.minecraft.advancements.Advancement; -import net.minecraft.advancements.AdvancementHolder; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.protocol.Packet; import net.minecraft.network.protocol.game.*; import net.minecraft.network.syncher.EntityDataSerializers; import net.minecraft.network.syncher.SynchedEntityData; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.server.MinecraftServer; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.entity.player.Inventory; @@ -25,6 +16,7 @@ import net.minecraft.world.phys.Vec3; import net.minecraft.world.scores.PlayerTeam; import net.minecraft.world.scores.Team; import org.bukkit.Bukkit; +import org.bukkit.GameMode; import org.bukkit.Location; import org.bukkit.craftbukkit.v1_20_R3.CraftEquipmentSlot; import org.bukkit.craftbukkit.v1_20_R3.entity.CraftEntityType; @@ -36,12 +28,10 @@ import org.bukkit.entity.EntityType; import org.bukkit.entity.ItemDisplay; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.ItemMeta; import org.joml.Quaternionf; import org.joml.Vector3f; import java.lang.reflect.Constructor; -import java.nio.ByteBuffer; import java.util.*; public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons.nms.NMSPackets { @@ -50,7 +40,7 @@ public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons. static Constructor linkConstructor; static Constructor teleportConstructor; static Constructor cameraConstructor; - static Constructor lookAtConstructor; + static Constructor rotateHeadConstructor; static { try { passengerConstructor = ClientboundSetPassengersPacket.class.getDeclaredConstructor(FriendlyByteBuf.class); @@ -77,13 +67,45 @@ public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons. e.printStackTrace(); } try { - lookAtConstructor = ClientboundPlayerLookAtPacket.class.getDeclaredConstructor(FriendlyByteBuf.class); - lookAtConstructor.setAccessible(true); + rotateHeadConstructor = ClientboundRotateHeadPacket.class.getDeclaredConstructor(FriendlyByteBuf.class); + rotateHeadConstructor.setAccessible(true); } catch (Exception e) { e.printStackTrace(); } } + @Override + public void sendGamemodeChange(Player player, GameMode gameMode) { + ClientboundGameEventPacket.Type type = ClientboundGameEventPacket.CHANGE_GAME_MODE; + float param = gameMode.ordinal(); + + ClientboundGameEventPacket packet = new ClientboundGameEventPacket(type, param); + sendPacket(player, packet); + } + + @Override + public void sendRotateHeadPacket(int entityId, Location location, List sendTo) { + byte headRot = (byte) (location.getYaw() * 256.0F / 360.0F); + FriendlyByteBuf byteBuf = new FriendlyByteBuf(Unpooled.buffer()); + byteBuf.writeVarInt(entityId); + byteBuf.writeByte(headRot); + try { + ClientboundRotateHeadPacket packet = rotateHeadConstructor.newInstance(byteBuf); + for (Player p : sendTo) sendPacket(p, packet); + } catch (Exception e) { + e.printStackTrace(); + } + } + + @Override + public void sendRotationPacket(int entityId, Location location, boolean onGround, List sendTo) { + float ROTATION_FACTOR = 256.0F / 360.0F; + byte yaw = (byte) (location.getYaw() * ROTATION_FACTOR); + byte pitch = (byte) (location.getPitch() * ROTATION_FACTOR); + ClientboundMoveEntityPacket.Rot packet = new ClientboundMoveEntityPacket.Rot(entityId, yaw, pitch, onGround); + for (Player p : sendTo) sendPacket(p, packet); + } + @Override public void sendEquipmentSlotUpdate( int entityId, @@ -229,20 +251,6 @@ public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons. } } - @Override - public void sendRotationPacket(int entityId, float yaw, boolean onGround, List sendTo) { - FriendlyByteBuf byteBuf = new FriendlyByteBuf(Unpooled.buffer()); - byteBuf.writeVarInt(entityId); - byteBuf.writeFloat(yaw); - byteBuf.writeBoolean(onGround); - try { - ClientboundPlayerLookAtPacket packet = lookAtConstructor.newInstance(byteBuf); - for (Player p : sendTo) sendPacket(p, packet); - } catch (Exception e) { - e.printStackTrace(); - } - } - @Override public void sendCameraPacket(int entityId, List sendTo) { FriendlyByteBuf byteBuf = new FriendlyByteBuf(Unpooled.buffer()); 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 afe43fb..4a13cb3 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 @@ -24,8 +24,10 @@ import net.minecraft.world.phys.Vec3; import net.minecraft.world.scores.PlayerTeam; import net.minecraft.world.scores.Team; import org.bukkit.Bukkit; +import org.bukkit.GameMode; import org.bukkit.Location; import org.bukkit.craftbukkit.CraftEquipmentSlot; +import org.bukkit.craftbukkit.entity.CraftEntity; import org.bukkit.craftbukkit.entity.CraftEntityType; import org.bukkit.craftbukkit.entity.CraftPlayer; import org.bukkit.craftbukkit.inventory.CraftItemStack; @@ -49,7 +51,7 @@ public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons. static Constructor linkConstructor; static Constructor teleportConstructor; static Constructor cameraConstructor; - static Constructor lookAtConstructor; + static Constructor rotateHeadConstructor; static { try { passengerConstructor = ClientboundSetPassengersPacket.class.getDeclaredConstructor(FriendlyByteBuf.class); @@ -76,13 +78,45 @@ public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons. e.printStackTrace(); } try { - lookAtConstructor = ClientboundPlayerLookAtPacket.class.getDeclaredConstructor(FriendlyByteBuf.class); - lookAtConstructor.setAccessible(true); + rotateHeadConstructor = ClientboundRotateHeadPacket.class.getDeclaredConstructor(FriendlyByteBuf.class); + rotateHeadConstructor.setAccessible(true); } catch (Exception e) { e.printStackTrace(); } } + @Override + public void sendGamemodeChange(Player player, GameMode gameMode) { + ClientboundGameEventPacket.Type type = ClientboundGameEventPacket.CHANGE_GAME_MODE; + float param = gameMode.ordinal(); + + ClientboundGameEventPacket packet = new ClientboundGameEventPacket(type, param); + sendPacket(player, packet); + } + + @Override + public void sendRotateHeadPacket(int entityId, Location location, List sendTo) { + byte headRot = (byte) (location.getYaw() * 256.0F / 360.0F); + FriendlyByteBuf byteBuf = new FriendlyByteBuf(Unpooled.buffer()); + byteBuf.writeVarInt(entityId); + byteBuf.writeByte(headRot); + try { + ClientboundRotateHeadPacket packet = rotateHeadConstructor.newInstance(byteBuf); + for (Player p : sendTo) sendPacket(p, packet); + } catch (Exception e) { + e.printStackTrace(); + } + } + + @Override + public void sendRotationPacket(int entityId, Location location, boolean onGround, List sendTo) { + float ROTATION_FACTOR = 256.0F / 360.0F; + byte yaw = (byte) (location.getYaw() * ROTATION_FACTOR); + byte pitch = (byte) (location.getPitch() * ROTATION_FACTOR); + ClientboundMoveEntityPacket.Rot packet = new ClientboundMoveEntityPacket.Rot(entityId, yaw, pitch, onGround); + for (Player p : sendTo) sendPacket(p, packet); + } + @Override public void sendEquipmentSlotUpdate( int entityId, @@ -227,20 +261,6 @@ public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons. } } - @Override - public void sendRotationPacket(int entityId, float yaw, boolean onGround, List sendTo) { - FriendlyByteBuf byteBuf = new FriendlyByteBuf(Unpooled.buffer()); - byteBuf.writeVarInt(entityId); - byteBuf.writeFloat(yaw); - byteBuf.writeBoolean(onGround); - try { - ClientboundPlayerLookAtPacket packet = lookAtConstructor.newInstance(byteBuf); - for (Player p : sendTo) sendPacket(p, packet); - } catch (Exception e) { - e.printStackTrace(); - } - } - @Override public void sendCameraPacket(int entityId, List sendTo) { FriendlyByteBuf byteBuf = new FriendlyByteBuf(Unpooled.buffer()); 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 0433390..a820566 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 @@ -25,8 +25,10 @@ import net.minecraft.world.phys.Vec3; import net.minecraft.world.scores.PlayerTeam; import net.minecraft.world.scores.Team; import org.bukkit.Bukkit; +import org.bukkit.GameMode; import org.bukkit.Location; import org.bukkit.craftbukkit.CraftEquipmentSlot; +import org.bukkit.craftbukkit.entity.CraftEntity; import org.bukkit.craftbukkit.entity.CraftEntityType; import org.bukkit.craftbukkit.entity.CraftPlayer; import org.bukkit.craftbukkit.inventory.CraftItemStack; @@ -49,7 +51,7 @@ public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons. static Constructor linkConstructor; static Constructor teleportConstructor; static Constructor cameraConstructor; - static Constructor lookAtConstructor; + static Constructor rotateHeadConstructor; static Constructor rotationConstructor; static Constructor spawnConstructor; @@ -79,8 +81,8 @@ public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons. e.printStackTrace(); } try { - lookAtConstructor = ClientboundPlayerLookAtPacket.class.getDeclaredConstructor(FriendlyByteBuf.class); - lookAtConstructor.setAccessible(true); + rotateHeadConstructor = ClientboundRotateHeadPacket.class.getDeclaredConstructor(FriendlyByteBuf.class); + rotateHeadConstructor.setAccessible(true); } catch (Exception e) { e.printStackTrace(); } @@ -92,6 +94,37 @@ public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons. } } + @Override + public void sendGamemodeChange(Player player, GameMode gameMode) { + ClientboundGameEventPacket.Type type = ClientboundGameEventPacket.CHANGE_GAME_MODE; + float param = gameMode.ordinal(); + + ClientboundGameEventPacket packet = new ClientboundGameEventPacket(type, param); + sendPacket(player, packet); + } + + @Override + public void sendRotateHeadPacket(int entityId, Location location, List sendTo) { + byte headRot = (byte) (location.getYaw() * 256.0F / 360.0F); + FriendlyByteBuf byteBuf = new FriendlyByteBuf(Unpooled.buffer()); + byteBuf.writeVarInt(entityId); + byteBuf.writeByte(headRot); + try { + ClientboundRotateHeadPacket packet = rotateHeadConstructor.newInstance(byteBuf); + for (Player p : sendTo) sendPacket(p, packet); + } catch (Exception e) { + e.printStackTrace(); + } + } + + @Override + public void sendRotationPacket(int entityId, Location location, boolean onGround, List sendTo) { + float ROTATION_FACTOR = 256.0F / 360.0F; + byte yaw = (byte) (location.getYaw() * ROTATION_FACTOR); + byte pitch = (byte) (location.getPitch() * ROTATION_FACTOR); + ClientboundMoveEntityPacket.Rot packet = new ClientboundMoveEntityPacket.Rot(entityId, yaw, pitch, onGround); + for (Player p : sendTo) sendPacket(p, packet); + } @Override public void sendEquipmentSlotUpdate( @@ -237,20 +270,6 @@ public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons. } } - @Override - public void sendRotationPacket(int entityId, float yaw, boolean onGround, List sendTo) { - FriendlyByteBuf byteBuf = new FriendlyByteBuf(Unpooled.buffer()); - byteBuf.writeVarInt(entityId); - byteBuf.writeFloat(yaw); - byteBuf.writeBoolean(onGround); - try { - ClientboundPlayerLookAtPacket packet = lookAtConstructor.newInstance(byteBuf); - for (Player p : sendTo) sendPacket(p, packet); - } catch (Exception e) { - e.printStackTrace(); - } - } - @Override public void sendCameraPacket(int entityId, List sendTo) { FriendlyByteBuf byteBuf = new FriendlyByteBuf(Unpooled.buffer()); 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 6170489..daea761 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 @@ -26,8 +26,10 @@ import net.minecraft.world.phys.Vec3; import net.minecraft.world.scores.PlayerTeam; import net.minecraft.world.scores.Team; import org.bukkit.Bukkit; +import org.bukkit.GameMode; import org.bukkit.Location; import org.bukkit.craftbukkit.CraftEquipmentSlot; +import org.bukkit.craftbukkit.entity.CraftEntity; import org.bukkit.craftbukkit.entity.CraftEntityType; import org.bukkit.craftbukkit.entity.CraftPlayer; import org.bukkit.craftbukkit.inventory.CraftItemStack; @@ -51,7 +53,7 @@ public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons. static Constructor passengerConstructor; static Constructor linkConstructor; static Constructor cameraConstructor; - static Constructor lookAtConstructor; + static Constructor rotateHeadConstructor; static { try { passengerConstructor = ClientboundSetPassengersPacket.class.getDeclaredConstructor(FriendlyByteBuf.class); @@ -72,13 +74,45 @@ public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons. e.printStackTrace(); } try { - lookAtConstructor = ClientboundPlayerLookAtPacket.class.getDeclaredConstructor(FriendlyByteBuf.class); - lookAtConstructor.setAccessible(true); + rotateHeadConstructor = ClientboundRotateHeadPacket.class.getDeclaredConstructor(FriendlyByteBuf.class); + rotateHeadConstructor.setAccessible(true); } catch (Exception e) { e.printStackTrace(); } } + @Override + public void sendGamemodeChange(Player player, GameMode gameMode) { + ClientboundGameEventPacket.Type type = ClientboundGameEventPacket.CHANGE_GAME_MODE; + float param = gameMode.ordinal(); + + ClientboundGameEventPacket packet = new ClientboundGameEventPacket(type, param); + sendPacket(player, packet); + } + + @Override + public void sendRotateHeadPacket(int entityId, Location location, List sendTo) { + byte headRot = (byte) (location.getYaw() * 256.0F / 360.0F); + FriendlyByteBuf byteBuf = new FriendlyByteBuf(Unpooled.buffer()); + byteBuf.writeVarInt(entityId); + byteBuf.writeByte(headRot); + try { + ClientboundRotateHeadPacket packet = rotateHeadConstructor.newInstance(byteBuf); + for (Player p : sendTo) sendPacket(p, packet); + } catch (Exception e) { + e.printStackTrace(); + } + } + + @Override + public void sendRotationPacket(int entityId, Location location, boolean onGround, List sendTo) { + float ROTATION_FACTOR = 256.0F / 360.0F; + byte yaw = (byte) (location.getYaw() * ROTATION_FACTOR); + byte pitch = (byte) (location.getPitch() * ROTATION_FACTOR); + ClientboundMoveEntityPacket.Rot packet = new ClientboundMoveEntityPacket.Rot(entityId, yaw, pitch, onGround); + for (Player p : sendTo) sendPacket(p, packet); + } + @Override public void sendEquipmentSlotUpdate( int entityId, @@ -215,20 +249,6 @@ public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons. } } - @Override - public void sendRotationPacket(int entityId, float yaw, boolean onGround, List sendTo) { - FriendlyByteBuf byteBuf = new FriendlyByteBuf(Unpooled.buffer()); - byteBuf.writeVarInt(entityId); - byteBuf.writeFloat(yaw); - byteBuf.writeBoolean(onGround); - try { - ClientboundPlayerLookAtPacket packet = lookAtConstructor.newInstance(byteBuf); - for (Player p : sendTo) sendPacket(p, packet); - } catch (Exception e) { - e.printStackTrace(); - } - } - @Override public void sendCameraPacket(int entityId, List sendTo) { FriendlyByteBuf byteBuf = new FriendlyByteBuf(Unpooled.buffer()); 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 5349455..44ee3f9 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 @@ -28,8 +28,10 @@ import net.minecraft.world.scores.PlayerTeam; import net.minecraft.world.scores.Team; import org.bukkit.Bukkit; import org.bukkit.Color; +import org.bukkit.GameMode; import org.bukkit.Location; import org.bukkit.craftbukkit.CraftEquipmentSlot; +import org.bukkit.craftbukkit.entity.CraftEntity; import org.bukkit.craftbukkit.entity.CraftEntityType; import org.bukkit.craftbukkit.entity.CraftPlayer; import org.bukkit.craftbukkit.inventory.CraftItemStack; @@ -54,7 +56,7 @@ public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons. static Constructor passengerConstructor; static Constructor linkConstructor; static Constructor cameraConstructor; - static Constructor lookAtConstructor; + static Constructor rotateHeadConstructor; static { try { @@ -76,13 +78,45 @@ public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons. e.printStackTrace(); } try { - lookAtConstructor = ClientboundPlayerLookAtPacket.class.getDeclaredConstructor(FriendlyByteBuf.class); - lookAtConstructor.setAccessible(true); + rotateHeadConstructor = ClientboundRotateHeadPacket.class.getDeclaredConstructor(FriendlyByteBuf.class); + rotateHeadConstructor.setAccessible(true); } catch (Exception e) { e.printStackTrace(); } } + @Override + public void sendGamemodeChange(Player player, GameMode gameMode) { + ClientboundGameEventPacket.Type type = ClientboundGameEventPacket.CHANGE_GAME_MODE; + float param = gameMode.ordinal(); + + ClientboundGameEventPacket packet = new ClientboundGameEventPacket(type, param); + sendPacket(player, packet); + } + + @Override + public void sendRotateHeadPacket(int entityId, Location location, List sendTo) { + byte headRot = (byte) (location.getYaw() * 256.0F / 360.0F); + FriendlyByteBuf byteBuf = new FriendlyByteBuf(Unpooled.buffer()); + byteBuf.writeVarInt(entityId); + byteBuf.writeByte(headRot); + try { + ClientboundRotateHeadPacket packet = rotateHeadConstructor.newInstance(byteBuf); + for (Player p : sendTo) sendPacket(p, packet); + } catch (Exception e) { + e.printStackTrace(); + } + } + + @Override + public void sendRotationPacket(int entityId, Location location, boolean onGround, List sendTo) { + float ROTATION_FACTOR = 256.0F / 360.0F; + byte yaw = (byte) (location.getYaw() * ROTATION_FACTOR); + byte pitch = (byte) (location.getPitch() * ROTATION_FACTOR); + ClientboundMoveEntityPacket.Rot packet = new ClientboundMoveEntityPacket.Rot(entityId, yaw, pitch, onGround); + for (Player p : sendTo) sendPacket(p, packet); + } + @Override public void sendEquipmentSlotUpdate( int entityId, @@ -219,20 +253,6 @@ public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons. } } - @Override - public void sendRotationPacket(int entityId, float yaw, boolean onGround, List sendTo) { - FriendlyByteBuf byteBuf = new FriendlyByteBuf(Unpooled.buffer()); - byteBuf.writeVarInt(entityId); - byteBuf.writeFloat(yaw); - byteBuf.writeBoolean(onGround); - try { - ClientboundPlayerLookAtPacket packet = lookAtConstructor.newInstance(byteBuf); - for (Player p : sendTo) sendPacket(p, packet); - } catch (Exception e) { - e.printStackTrace(); - } - } - @Override public void sendCameraPacket(int entityId, List sendTo) { FriendlyByteBuf byteBuf = new FriendlyByteBuf(Unpooled.buffer()); 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 81056db..c3c4553 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 @@ -4,6 +4,7 @@ import com.google.gson.JsonArray; import com.google.gson.JsonObject; import com.mojang.datafixers.util.Pair; import com.mojang.serialization.JsonOps; +import io.lumine.mythic.bukkit.utils.redis.jedis.Client; import io.netty.buffer.Unpooled; import it.unimi.dsi.fastutil.ints.IntList; import me.lojosho.hibiscuscommons.HibiscusCommonsPlugin; @@ -11,6 +12,7 @@ import net.kyori.adventure.text.Component; import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer; import net.kyori.adventure.text.serializer.json.JSONComponentSerializer; import net.minecraft.advancements.*; +import net.minecraft.commands.arguments.EntityAnchorArgument; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.protocol.Packet; import net.minecraft.network.protocol.game.*; @@ -19,8 +21,10 @@ import net.minecraft.network.syncher.SynchedEntityData; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.MinecraftServer; import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.entity.PositionMoveRotation; +import net.minecraft.world.entity.decoration.ArmorStand; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.level.portal.TeleportTransition; import net.minecraft.world.phys.Vec3; @@ -28,8 +32,10 @@ import net.minecraft.world.scores.PlayerTeam; import net.minecraft.world.scores.Team; import org.bukkit.Bukkit; import org.bukkit.Color; +import org.bukkit.GameMode; import org.bukkit.Location; import org.bukkit.craftbukkit.CraftEquipmentSlot; +import org.bukkit.craftbukkit.entity.CraftEntity; import org.bukkit.craftbukkit.entity.CraftEntityType; import org.bukkit.craftbukkit.entity.CraftPlayer; import org.bukkit.craftbukkit.inventory.CraftItemStack; @@ -53,7 +59,7 @@ public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons. static Constructor passengerConstructor; static Constructor linkConstructor; static Constructor cameraConstructor; - static Constructor lookAtConstructor; + static Constructor rotateHeadConstructor; static { try { @@ -75,13 +81,45 @@ public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons. e.printStackTrace(); } try { - lookAtConstructor = ClientboundPlayerLookAtPacket.class.getDeclaredConstructor(FriendlyByteBuf.class); - lookAtConstructor.setAccessible(true); + rotateHeadConstructor = ClientboundRotateHeadPacket.class.getDeclaredConstructor(FriendlyByteBuf.class); + rotateHeadConstructor.setAccessible(true); } catch (Exception e) { e.printStackTrace(); } } + @Override + public void sendGamemodeChange(Player player, GameMode gameMode) { + ClientboundGameEventPacket.Type type = ClientboundGameEventPacket.CHANGE_GAME_MODE; + float param = gameMode.ordinal(); + + ClientboundGameEventPacket packet = new ClientboundGameEventPacket(type, param); + sendPacket(player, packet); + } + + @Override + public void sendRotateHeadPacket(int entityId, Location location, List sendTo) { + byte headRot = (byte) (location.getYaw() * 256.0F / 360.0F); + FriendlyByteBuf byteBuf = new FriendlyByteBuf(Unpooled.buffer()); + byteBuf.writeVarInt(entityId); + byteBuf.writeByte(headRot); + try { + ClientboundRotateHeadPacket packet = rotateHeadConstructor.newInstance(byteBuf); + for (Player p : sendTo) sendPacket(p, packet); + } catch (Exception e) { + e.printStackTrace(); + } + } + + @Override + public void sendRotationPacket(int entityId, Location location, boolean onGround, List sendTo) { + float ROTATION_FACTOR = 256.0F / 360.0F; + byte yaw = (byte) (location.getYaw() * ROTATION_FACTOR); + byte pitch = (byte) (location.getPitch() * ROTATION_FACTOR); + ClientboundMoveEntityPacket.Rot packet = new ClientboundMoveEntityPacket.Rot(entityId, yaw, pitch, onGround); + for (Player p : sendTo) sendPacket(p, packet); + } + @Override public void sendEquipmentSlotUpdate( int entityId, @@ -218,20 +256,6 @@ public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons. } } - @Override - public void sendRotationPacket(int entityId, float yaw, boolean onGround, List sendTo) { - FriendlyByteBuf byteBuf = new FriendlyByteBuf(Unpooled.buffer()); - byteBuf.writeVarInt(entityId); - byteBuf.writeFloat(yaw); - byteBuf.writeBoolean(onGround); - try { - ClientboundPlayerLookAtPacket packet = lookAtConstructor.newInstance(byteBuf); - for (Player p : sendTo) sendPacket(p, packet); - } catch (Exception e) { - e.printStackTrace(); - } - } - @Override public void sendCameraPacket(int entityId, List sendTo) { FriendlyByteBuf byteBuf = new FriendlyByteBuf(Unpooled.buffer());