mirror of
https://github.com/HibiscusMC/HibiscusCommons.git
synced 2025-12-22 16:39:32 +00:00
refactor: use fake entities instead of reflection for packets where possible
This commit is contained in:
@@ -9,8 +9,12 @@ import net.minecraft.network.protocol.Packet;
|
|||||||
import net.minecraft.network.protocol.game.*;
|
import net.minecraft.network.protocol.game.*;
|
||||||
import net.minecraft.network.syncher.EntityDataSerializers;
|
import net.minecraft.network.syncher.EntityDataSerializers;
|
||||||
import net.minecraft.network.syncher.SynchedEntityData;
|
import net.minecraft.network.syncher.SynchedEntityData;
|
||||||
|
import net.minecraft.server.MinecraftServer;
|
||||||
|
import net.minecraft.server.level.ServerLevel;
|
||||||
import net.minecraft.server.level.ServerPlayer;
|
import net.minecraft.server.level.ServerPlayer;
|
||||||
|
import net.minecraft.world.entity.Entity;
|
||||||
import net.minecraft.world.entity.EquipmentSlot;
|
import net.minecraft.world.entity.EquipmentSlot;
|
||||||
|
import net.minecraft.world.entity.decoration.ArmorStand;
|
||||||
import net.minecraft.world.entity.player.Inventory;
|
import net.minecraft.world.entity.player.Inventory;
|
||||||
import net.minecraft.world.phys.Vec3;
|
import net.minecraft.world.phys.Vec3;
|
||||||
import net.minecraft.world.scores.PlayerTeam;
|
import net.minecraft.world.scores.PlayerTeam;
|
||||||
@@ -37,10 +41,6 @@ import java.util.*;
|
|||||||
public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons.nms.NMSPackets {
|
public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons.nms.NMSPackets {
|
||||||
|
|
||||||
static Constructor<ClientboundSetPassengersPacket> passengerConstructor;
|
static Constructor<ClientboundSetPassengersPacket> passengerConstructor;
|
||||||
static Constructor<ClientboundSetEntityLinkPacket> linkConstructor;
|
|
||||||
static Constructor<ClientboundTeleportEntityPacket> teleportConstructor;
|
|
||||||
static Constructor<ClientboundSetCameraPacket> cameraConstructor;
|
|
||||||
static Constructor<ClientboundRotateHeadPacket> rotateHeadConstructor;
|
|
||||||
static {
|
static {
|
||||||
try {
|
try {
|
||||||
passengerConstructor = ClientboundSetPassengersPacket.class.getDeclaredConstructor(FriendlyByteBuf.class);
|
passengerConstructor = ClientboundSetPassengersPacket.class.getDeclaredConstructor(FriendlyByteBuf.class);
|
||||||
@@ -48,30 +48,6 @@ public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons.
|
|||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
try {
|
|
||||||
linkConstructor = ClientboundSetEntityLinkPacket.class.getDeclaredConstructor(FriendlyByteBuf.class);
|
|
||||||
linkConstructor.setAccessible(true);
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
teleportConstructor = ClientboundTeleportEntityPacket.class.getDeclaredConstructor(FriendlyByteBuf.class);
|
|
||||||
teleportConstructor.setAccessible(true);
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
cameraConstructor = ClientboundSetCameraPacket.class.getDeclaredConstructor(FriendlyByteBuf.class);
|
|
||||||
cameraConstructor.setAccessible(true);
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
rotateHeadConstructor = ClientboundRotateHeadPacket.class.getDeclaredConstructor(FriendlyByteBuf.class);
|
|
||||||
rotateHeadConstructor.setAccessible(true);
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -85,16 +61,13 @@ public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons.
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void sendRotateHeadPacket(int entityId, Location location, List<Player> sendTo) {
|
public void sendRotateHeadPacket(int entityId, Location location, List<Player> sendTo) {
|
||||||
|
ServerLevel level = MinecraftServer.getServer().overworld();
|
||||||
|
Entity entity = new ArmorStand(net.minecraft.world.entity.EntityType.ARMOR_STAND, level);
|
||||||
|
entity.setId(entityId);
|
||||||
byte headRot = (byte) (location.getYaw() * 256.0F / 360.0F);
|
byte headRot = (byte) (location.getYaw() * 256.0F / 360.0F);
|
||||||
FriendlyByteBuf byteBuf = new FriendlyByteBuf(Unpooled.buffer());
|
|
||||||
byteBuf.writeVarInt(entityId);
|
ClientboundRotateHeadPacket packet = new ClientboundRotateHeadPacket(entity, headRot);
|
||||||
byteBuf.writeByte(headRot);
|
for (Player p : sendTo) sendPacket(p, packet);
|
||||||
try {
|
|
||||||
ClientboundRotateHeadPacket packet = rotateHeadConstructor.newInstance(byteBuf);
|
|
||||||
for (Player p : sendTo) sendPacket(p, packet);
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -212,15 +185,15 @@ public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons.
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void sendLeashPacket(int leashEntity, int entityId, List<Player> sendTo) {
|
public void sendLeashPacket(int leashEntity, int entityId, List<Player> sendTo) {
|
||||||
FriendlyByteBuf byteBuf = new FriendlyByteBuf(Unpooled.buffer());
|
// Fake entities just to avoid reflection
|
||||||
byteBuf.writeInt(leashEntity);
|
ServerLevel level = MinecraftServer.getServer().overworld();
|
||||||
byteBuf.writeInt(entityId);
|
Entity entity1 = new ArmorStand(net.minecraft.world.entity.EntityType.ARMOR_STAND, level);
|
||||||
try {
|
Entity entity2 = new ArmorStand(net.minecraft.world.entity.EntityType.ARMOR_STAND, level);
|
||||||
ClientboundSetEntityLinkPacket packet = linkConstructor.newInstance(byteBuf);
|
entity1.setId(leashEntity);
|
||||||
for (Player p : sendTo) sendPacket(p, packet);
|
entity2.setId(entityId);
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
ClientboundSetEntityLinkPacket packet = new ClientboundSetEntityLinkPacket(entity1, entity2);
|
||||||
}
|
for (Player p : sendTo) sendPacket(p, packet);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -234,33 +207,22 @@ public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons.
|
|||||||
boolean onGround,
|
boolean onGround,
|
||||||
List<Player> sendTo
|
List<Player> sendTo
|
||||||
) {
|
) {
|
||||||
FriendlyByteBuf byteBuf = new FriendlyByteBuf(Unpooled.buffer());
|
ServerLevel level = MinecraftServer.getServer().overworld();
|
||||||
byteBuf.writeVarInt(entityId);
|
Entity entity = new ArmorStand(level, x, y, z);
|
||||||
byteBuf.writeDouble(x);
|
entity.setId(entityId);
|
||||||
byteBuf.writeDouble(y);
|
entity.setRot((yaw * 256.0F / 360.0F), (pitch * 256.0F / 360.0F));
|
||||||
byteBuf.writeDouble(z);
|
entity.setOnGround(onGround);
|
||||||
byteBuf.writeByte((byte) (yaw * 256.0F / 360.0F));
|
|
||||||
byteBuf.writeByte((byte) (pitch * 256.0F / 360.0F));
|
|
||||||
byteBuf.writeBoolean(onGround);
|
|
||||||
|
|
||||||
try {
|
ClientboundTeleportEntityPacket packet = new ClientboundTeleportEntityPacket(entity);
|
||||||
ClientboundTeleportEntityPacket packet = teleportConstructor.newInstance(byteBuf);
|
for (Player p : sendTo) sendPacket(p, packet);
|
||||||
for (Player p : sendTo) sendPacket(p, packet);
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void sendCameraPacket(int entityId, List<Player> sendTo) {
|
public void sendCameraPacket(int entityId, List<Player> sendTo) {
|
||||||
FriendlyByteBuf byteBuf = new FriendlyByteBuf(Unpooled.buffer());
|
// Fake entity just to avoid reflection
|
||||||
byteBuf.writeVarInt(entityId);
|
Entity entity = new ArmorStand(net.minecraft.world.entity.EntityType.ARMOR_STAND, MinecraftServer.getServer().overworld());
|
||||||
try {
|
ClientboundSetCameraPacket packet = new ClientboundSetCameraPacket(entity);
|
||||||
ClientboundSetCameraPacket packet = cameraConstructor.newInstance(byteBuf);
|
for (Player p : sendTo) sendPacket(p, packet);
|
||||||
for (Player p : sendTo) sendPacket(p, packet);
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -17,8 +17,11 @@ import net.minecraft.network.syncher.EntityDataSerializers;
|
|||||||
import net.minecraft.network.syncher.SynchedEntityData;
|
import net.minecraft.network.syncher.SynchedEntityData;
|
||||||
import net.minecraft.resources.ResourceLocation;
|
import net.minecraft.resources.ResourceLocation;
|
||||||
import net.minecraft.server.MinecraftServer;
|
import net.minecraft.server.MinecraftServer;
|
||||||
|
import net.minecraft.server.level.ServerLevel;
|
||||||
import net.minecraft.server.level.ServerPlayer;
|
import net.minecraft.server.level.ServerPlayer;
|
||||||
|
import net.minecraft.world.entity.Entity;
|
||||||
import net.minecraft.world.entity.EquipmentSlot;
|
import net.minecraft.world.entity.EquipmentSlot;
|
||||||
|
import net.minecraft.world.entity.decoration.ArmorStand;
|
||||||
import net.minecraft.world.entity.player.Inventory;
|
import net.minecraft.world.entity.player.Inventory;
|
||||||
import net.minecraft.world.phys.Vec3;
|
import net.minecraft.world.phys.Vec3;
|
||||||
import net.minecraft.world.scores.PlayerTeam;
|
import net.minecraft.world.scores.PlayerTeam;
|
||||||
@@ -48,10 +51,6 @@ import java.util.*;
|
|||||||
public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons.nms.NMSPackets {
|
public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons.nms.NMSPackets {
|
||||||
|
|
||||||
static Constructor<ClientboundSetPassengersPacket> passengerConstructor;
|
static Constructor<ClientboundSetPassengersPacket> passengerConstructor;
|
||||||
static Constructor<ClientboundSetEntityLinkPacket> linkConstructor;
|
|
||||||
static Constructor<ClientboundTeleportEntityPacket> teleportConstructor;
|
|
||||||
static Constructor<ClientboundSetCameraPacket> cameraConstructor;
|
|
||||||
static Constructor<ClientboundRotateHeadPacket> rotateHeadConstructor;
|
|
||||||
static {
|
static {
|
||||||
try {
|
try {
|
||||||
passengerConstructor = ClientboundSetPassengersPacket.class.getDeclaredConstructor(FriendlyByteBuf.class);
|
passengerConstructor = ClientboundSetPassengersPacket.class.getDeclaredConstructor(FriendlyByteBuf.class);
|
||||||
@@ -59,30 +58,6 @@ public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons.
|
|||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
try {
|
|
||||||
linkConstructor = ClientboundSetEntityLinkPacket.class.getDeclaredConstructor(FriendlyByteBuf.class);
|
|
||||||
linkConstructor.setAccessible(true);
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
teleportConstructor = ClientboundTeleportEntityPacket.class.getDeclaredConstructor(FriendlyByteBuf.class);
|
|
||||||
teleportConstructor.setAccessible(true);
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
cameraConstructor = ClientboundSetCameraPacket.class.getDeclaredConstructor(FriendlyByteBuf.class);
|
|
||||||
cameraConstructor.setAccessible(true);
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
rotateHeadConstructor = ClientboundRotateHeadPacket.class.getDeclaredConstructor(FriendlyByteBuf.class);
|
|
||||||
rotateHeadConstructor.setAccessible(true);
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -96,16 +71,13 @@ public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons.
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void sendRotateHeadPacket(int entityId, Location location, List<Player> sendTo) {
|
public void sendRotateHeadPacket(int entityId, Location location, List<Player> sendTo) {
|
||||||
|
ServerLevel level = MinecraftServer.getServer().overworld();
|
||||||
|
Entity entity = new ArmorStand(net.minecraft.world.entity.EntityType.ARMOR_STAND, level);
|
||||||
|
entity.setId(entityId);
|
||||||
byte headRot = (byte) (location.getYaw() * 256.0F / 360.0F);
|
byte headRot = (byte) (location.getYaw() * 256.0F / 360.0F);
|
||||||
FriendlyByteBuf byteBuf = new FriendlyByteBuf(Unpooled.buffer());
|
|
||||||
byteBuf.writeVarInt(entityId);
|
ClientboundRotateHeadPacket packet = new ClientboundRotateHeadPacket(entity, headRot);
|
||||||
byteBuf.writeByte(headRot);
|
for (Player p : sendTo) sendPacket(p, packet);
|
||||||
try {
|
|
||||||
ClientboundRotateHeadPacket packet = rotateHeadConstructor.newInstance(byteBuf);
|
|
||||||
for (Player p : sendTo) sendPacket(p, packet);
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -222,15 +194,15 @@ public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons.
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void sendLeashPacket(int leashEntity, int entityId, List<Player> sendTo) {
|
public void sendLeashPacket(int leashEntity, int entityId, List<Player> sendTo) {
|
||||||
FriendlyByteBuf byteBuf = new FriendlyByteBuf(Unpooled.buffer());
|
// Fake entities just to avoid reflection
|
||||||
byteBuf.writeInt(leashEntity);
|
ServerLevel level = MinecraftServer.getServer().overworld();
|
||||||
byteBuf.writeInt(entityId);
|
Entity entity1 = new ArmorStand(net.minecraft.world.entity.EntityType.ARMOR_STAND, level);
|
||||||
try {
|
Entity entity2 = new ArmorStand(net.minecraft.world.entity.EntityType.ARMOR_STAND, level);
|
||||||
ClientboundSetEntityLinkPacket packet = linkConstructor.newInstance(byteBuf);
|
entity1.setId(leashEntity);
|
||||||
for (Player p : sendTo) sendPacket(p, packet);
|
entity2.setId(entityId);
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
ClientboundSetEntityLinkPacket packet = new ClientboundSetEntityLinkPacket(entity1, entity2);
|
||||||
}
|
for (Player p : sendTo) sendPacket(p, packet);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -244,33 +216,22 @@ public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons.
|
|||||||
boolean onGround,
|
boolean onGround,
|
||||||
List<Player> sendTo
|
List<Player> sendTo
|
||||||
) {
|
) {
|
||||||
FriendlyByteBuf byteBuf = new FriendlyByteBuf(Unpooled.buffer());
|
ServerLevel level = MinecraftServer.getServer().overworld();
|
||||||
byteBuf.writeVarInt(entityId);
|
Entity entity = new ArmorStand(level, x, y, z);
|
||||||
byteBuf.writeDouble(x);
|
entity.setId(entityId);
|
||||||
byteBuf.writeDouble(y);
|
entity.setRot((yaw * 256.0F / 360.0F), (pitch * 256.0F / 360.0F));
|
||||||
byteBuf.writeDouble(z);
|
entity.setOnGround(onGround);
|
||||||
byteBuf.writeByte((byte) (yaw * 256.0F / 360.0F));
|
|
||||||
byteBuf.writeByte((byte) (pitch * 256.0F / 360.0F));
|
|
||||||
byteBuf.writeBoolean(onGround);
|
|
||||||
|
|
||||||
try {
|
ClientboundTeleportEntityPacket packet = new ClientboundTeleportEntityPacket(entity);
|
||||||
ClientboundTeleportEntityPacket packet = teleportConstructor.newInstance(byteBuf);
|
for (Player p : sendTo) sendPacket(p, packet);
|
||||||
for (Player p : sendTo) sendPacket(p, packet);
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void sendCameraPacket(int entityId, List<Player> sendTo) {
|
public void sendCameraPacket(int entityId, List<Player> sendTo) {
|
||||||
FriendlyByteBuf byteBuf = new FriendlyByteBuf(Unpooled.buffer());
|
// Fake entity just to avoid reflection
|
||||||
byteBuf.writeVarInt(entityId);
|
Entity entity = new ArmorStand(net.minecraft.world.entity.EntityType.ARMOR_STAND, MinecraftServer.getServer().overworld());
|
||||||
try {
|
ClientboundSetCameraPacket packet = new ClientboundSetCameraPacket(entity);
|
||||||
ClientboundSetCameraPacket packet = cameraConstructor.newInstance(byteBuf);
|
for (Player p : sendTo) sendPacket(p, packet);
|
||||||
for (Player p : sendTo) sendPacket(p, packet);
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -18,8 +18,11 @@ import net.minecraft.network.syncher.EntityDataSerializers;
|
|||||||
import net.minecraft.network.syncher.SynchedEntityData;
|
import net.minecraft.network.syncher.SynchedEntityData;
|
||||||
import net.minecraft.resources.ResourceLocation;
|
import net.minecraft.resources.ResourceLocation;
|
||||||
import net.minecraft.server.MinecraftServer;
|
import net.minecraft.server.MinecraftServer;
|
||||||
|
import net.minecraft.server.level.ServerLevel;
|
||||||
import net.minecraft.server.level.ServerPlayer;
|
import net.minecraft.server.level.ServerPlayer;
|
||||||
|
import net.minecraft.world.entity.Entity;
|
||||||
import net.minecraft.world.entity.EquipmentSlot;
|
import net.minecraft.world.entity.EquipmentSlot;
|
||||||
|
import net.minecraft.world.entity.decoration.ArmorStand;
|
||||||
import net.minecraft.world.entity.player.Inventory;
|
import net.minecraft.world.entity.player.Inventory;
|
||||||
import net.minecraft.world.phys.Vec3;
|
import net.minecraft.world.phys.Vec3;
|
||||||
import net.minecraft.world.scores.PlayerTeam;
|
import net.minecraft.world.scores.PlayerTeam;
|
||||||
@@ -48,10 +51,6 @@ import java.util.*;
|
|||||||
public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons.nms.NMSPackets {
|
public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons.nms.NMSPackets {
|
||||||
|
|
||||||
static Constructor<ClientboundSetPassengersPacket> passengerConstructor;
|
static Constructor<ClientboundSetPassengersPacket> passengerConstructor;
|
||||||
static Constructor<ClientboundSetEntityLinkPacket> linkConstructor;
|
|
||||||
static Constructor<ClientboundTeleportEntityPacket> teleportConstructor;
|
|
||||||
static Constructor<ClientboundSetCameraPacket> cameraConstructor;
|
|
||||||
static Constructor<ClientboundRotateHeadPacket> rotateHeadConstructor;
|
|
||||||
static Constructor<ClientboundRotateHeadPacket> rotationConstructor;
|
static Constructor<ClientboundRotateHeadPacket> rotationConstructor;
|
||||||
static Constructor<ClientboundAddEntityPacket> spawnConstructor;
|
static Constructor<ClientboundAddEntityPacket> spawnConstructor;
|
||||||
|
|
||||||
@@ -62,30 +61,6 @@ public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons.
|
|||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
try {
|
|
||||||
linkConstructor = ClientboundSetEntityLinkPacket.class.getDeclaredConstructor(FriendlyByteBuf.class);
|
|
||||||
linkConstructor.setAccessible(true);
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
teleportConstructor = ClientboundTeleportEntityPacket.class.getDeclaredConstructor(FriendlyByteBuf.class);
|
|
||||||
teleportConstructor.setAccessible(true);
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
cameraConstructor = ClientboundSetCameraPacket.class.getDeclaredConstructor(FriendlyByteBuf.class);
|
|
||||||
cameraConstructor.setAccessible(true);
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
rotateHeadConstructor = ClientboundRotateHeadPacket.class.getDeclaredConstructor(FriendlyByteBuf.class);
|
|
||||||
rotateHeadConstructor.setAccessible(true);
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
try {
|
try {
|
||||||
rotationConstructor = ClientboundRotateHeadPacket.class.getDeclaredConstructor(FriendlyByteBuf.class);
|
rotationConstructor = ClientboundRotateHeadPacket.class.getDeclaredConstructor(FriendlyByteBuf.class);
|
||||||
rotationConstructor.setAccessible(true);
|
rotationConstructor.setAccessible(true);
|
||||||
@@ -105,16 +80,13 @@ public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons.
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void sendRotateHeadPacket(int entityId, Location location, List<Player> sendTo) {
|
public void sendRotateHeadPacket(int entityId, Location location, List<Player> sendTo) {
|
||||||
|
ServerLevel level = MinecraftServer.getServer().overworld();
|
||||||
|
Entity entity = new ArmorStand(net.minecraft.world.entity.EntityType.ARMOR_STAND, level);
|
||||||
|
entity.setId(entityId);
|
||||||
byte headRot = (byte) (location.getYaw() * 256.0F / 360.0F);
|
byte headRot = (byte) (location.getYaw() * 256.0F / 360.0F);
|
||||||
FriendlyByteBuf byteBuf = new FriendlyByteBuf(Unpooled.buffer());
|
|
||||||
byteBuf.writeVarInt(entityId);
|
ClientboundRotateHeadPacket packet = new ClientboundRotateHeadPacket(entity, headRot);
|
||||||
byteBuf.writeByte(headRot);
|
for (Player p : sendTo) sendPacket(p, packet);
|
||||||
try {
|
|
||||||
ClientboundRotateHeadPacket packet = rotateHeadConstructor.newInstance(byteBuf);
|
|
||||||
for (Player p : sendTo) sendPacket(p, packet);
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -231,15 +203,15 @@ public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons.
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void sendLeashPacket(int leashEntity, int entityId, List<Player> sendTo) {
|
public void sendLeashPacket(int leashEntity, int entityId, List<Player> sendTo) {
|
||||||
FriendlyByteBuf byteBuf = new FriendlyByteBuf(Unpooled.buffer());
|
// Fake entities just to avoid reflection
|
||||||
byteBuf.writeInt(leashEntity);
|
ServerLevel level = MinecraftServer.getServer().overworld();
|
||||||
byteBuf.writeInt(entityId);
|
Entity entity1 = new ArmorStand(net.minecraft.world.entity.EntityType.ARMOR_STAND, level);
|
||||||
try {
|
Entity entity2 = new ArmorStand(net.minecraft.world.entity.EntityType.ARMOR_STAND, level);
|
||||||
ClientboundSetEntityLinkPacket packet = linkConstructor.newInstance(byteBuf);
|
entity1.setId(leashEntity);
|
||||||
for (Player p : sendTo) sendPacket(p, packet);
|
entity2.setId(entityId);
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
ClientboundSetEntityLinkPacket packet = new ClientboundSetEntityLinkPacket(entity1, entity2);
|
||||||
}
|
for (Player p : sendTo) sendPacket(p, packet);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -253,33 +225,22 @@ public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons.
|
|||||||
boolean onGround,
|
boolean onGround,
|
||||||
List<Player> sendTo
|
List<Player> sendTo
|
||||||
) {
|
) {
|
||||||
FriendlyByteBuf byteBuf = new FriendlyByteBuf(Unpooled.buffer());
|
ServerLevel level = MinecraftServer.getServer().overworld();
|
||||||
byteBuf.writeVarInt(entityId);
|
Entity entity = new ArmorStand(level, x, y, z);
|
||||||
byteBuf.writeDouble(x);
|
entity.setId(entityId);
|
||||||
byteBuf.writeDouble(y);
|
entity.setRot((yaw * 256.0F / 360.0F), (pitch * 256.0F / 360.0F));
|
||||||
byteBuf.writeDouble(z);
|
entity.setOnGround(onGround);
|
||||||
byteBuf.writeByte((byte) (yaw * 256.0F / 360.0F));
|
|
||||||
byteBuf.writeByte((byte) (pitch * 256.0F / 360.0F));
|
|
||||||
byteBuf.writeBoolean(onGround);
|
|
||||||
|
|
||||||
try {
|
ClientboundTeleportEntityPacket packet = new ClientboundTeleportEntityPacket(entity);
|
||||||
ClientboundTeleportEntityPacket packet = teleportConstructor.newInstance(byteBuf);
|
for (Player p : sendTo) sendPacket(p, packet);
|
||||||
for (Player p : sendTo) sendPacket(p, packet);
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void sendCameraPacket(int entityId, List<Player> sendTo) {
|
public void sendCameraPacket(int entityId, List<Player> sendTo) {
|
||||||
FriendlyByteBuf byteBuf = new FriendlyByteBuf(Unpooled.buffer());
|
// Fake entity just to avoid reflection
|
||||||
byteBuf.writeVarInt(entityId);
|
Entity entity = new ArmorStand(net.minecraft.world.entity.EntityType.ARMOR_STAND, MinecraftServer.getServer().overworld());
|
||||||
try {
|
ClientboundSetCameraPacket packet = new ClientboundSetCameraPacket(entity);
|
||||||
ClientboundSetCameraPacket packet = cameraConstructor.newInstance(byteBuf);
|
for (Player p : sendTo) sendPacket(p, packet);
|
||||||
for (Player p : sendTo) sendPacket(p, packet);
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -17,9 +17,12 @@ import net.minecraft.network.syncher.EntityDataSerializers;
|
|||||||
import net.minecraft.network.syncher.SynchedEntityData;
|
import net.minecraft.network.syncher.SynchedEntityData;
|
||||||
import net.minecraft.resources.ResourceLocation;
|
import net.minecraft.resources.ResourceLocation;
|
||||||
import net.minecraft.server.MinecraftServer;
|
import net.minecraft.server.MinecraftServer;
|
||||||
|
import net.minecraft.server.level.ServerLevel;
|
||||||
import net.minecraft.server.level.ServerPlayer;
|
import net.minecraft.server.level.ServerPlayer;
|
||||||
|
import net.minecraft.world.entity.Entity;
|
||||||
import net.minecraft.world.entity.EquipmentSlot;
|
import net.minecraft.world.entity.EquipmentSlot;
|
||||||
import net.minecraft.world.entity.PositionMoveRotation;
|
import net.minecraft.world.entity.PositionMoveRotation;
|
||||||
|
import net.minecraft.world.entity.decoration.ArmorStand;
|
||||||
import net.minecraft.world.entity.player.Inventory;
|
import net.minecraft.world.entity.player.Inventory;
|
||||||
import net.minecraft.world.level.portal.TeleportTransition;
|
import net.minecraft.world.level.portal.TeleportTransition;
|
||||||
import net.minecraft.world.phys.Vec3;
|
import net.minecraft.world.phys.Vec3;
|
||||||
@@ -51,9 +54,6 @@ import java.util.*;
|
|||||||
public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons.nms.NMSPackets {
|
public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons.nms.NMSPackets {
|
||||||
|
|
||||||
static Constructor<ClientboundSetPassengersPacket> passengerConstructor;
|
static Constructor<ClientboundSetPassengersPacket> passengerConstructor;
|
||||||
static Constructor<ClientboundSetEntityLinkPacket> linkConstructor;
|
|
||||||
static Constructor<ClientboundSetCameraPacket> cameraConstructor;
|
|
||||||
static Constructor<ClientboundRotateHeadPacket> rotateHeadConstructor;
|
|
||||||
static {
|
static {
|
||||||
try {
|
try {
|
||||||
passengerConstructor = ClientboundSetPassengersPacket.class.getDeclaredConstructor(FriendlyByteBuf.class);
|
passengerConstructor = ClientboundSetPassengersPacket.class.getDeclaredConstructor(FriendlyByteBuf.class);
|
||||||
@@ -61,24 +61,6 @@ public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons.
|
|||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
try {
|
|
||||||
linkConstructor = ClientboundSetEntityLinkPacket.class.getDeclaredConstructor(FriendlyByteBuf.class);
|
|
||||||
linkConstructor.setAccessible(true);
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
cameraConstructor = ClientboundSetCameraPacket.class.getDeclaredConstructor(FriendlyByteBuf.class);
|
|
||||||
cameraConstructor.setAccessible(true);
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
rotateHeadConstructor = ClientboundRotateHeadPacket.class.getDeclaredConstructor(FriendlyByteBuf.class);
|
|
||||||
rotateHeadConstructor.setAccessible(true);
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -92,16 +74,13 @@ public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons.
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void sendRotateHeadPacket(int entityId, Location location, List<Player> sendTo) {
|
public void sendRotateHeadPacket(int entityId, Location location, List<Player> sendTo) {
|
||||||
|
ServerLevel level = MinecraftServer.getServer().overworld();
|
||||||
|
Entity entity = new ArmorStand(net.minecraft.world.entity.EntityType.ARMOR_STAND, level);
|
||||||
|
entity.setId(entityId);
|
||||||
byte headRot = (byte) (location.getYaw() * 256.0F / 360.0F);
|
byte headRot = (byte) (location.getYaw() * 256.0F / 360.0F);
|
||||||
FriendlyByteBuf byteBuf = new FriendlyByteBuf(Unpooled.buffer());
|
|
||||||
byteBuf.writeVarInt(entityId);
|
ClientboundRotateHeadPacket packet = new ClientboundRotateHeadPacket(entity, headRot);
|
||||||
byteBuf.writeByte(headRot);
|
for (Player p : sendTo) sendPacket(p, packet);
|
||||||
try {
|
|
||||||
ClientboundRotateHeadPacket packet = rotateHeadConstructor.newInstance(byteBuf);
|
|
||||||
for (Player p : sendTo) sendPacket(p, packet);
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -219,15 +198,15 @@ public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons.
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void sendLeashPacket(int leashEntity, int entityId, List<Player> sendTo) {
|
public void sendLeashPacket(int leashEntity, int entityId, List<Player> sendTo) {
|
||||||
FriendlyByteBuf byteBuf = new FriendlyByteBuf(Unpooled.buffer());
|
// Fake entities just to avoid reflection
|
||||||
byteBuf.writeInt(leashEntity);
|
ServerLevel level = MinecraftServer.getServer().overworld();
|
||||||
byteBuf.writeInt(entityId);
|
Entity entity1 = new ArmorStand(net.minecraft.world.entity.EntityType.ARMOR_STAND, level);
|
||||||
try {
|
Entity entity2 = new ArmorStand(net.minecraft.world.entity.EntityType.ARMOR_STAND, level);
|
||||||
ClientboundSetEntityLinkPacket packet = linkConstructor.newInstance(byteBuf);
|
entity1.setId(leashEntity);
|
||||||
for (Player p : sendTo) sendPacket(p, packet);
|
entity2.setId(entityId);
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
ClientboundSetEntityLinkPacket packet = new ClientboundSetEntityLinkPacket(entity1, entity2);
|
||||||
}
|
for (Player p : sendTo) sendPacket(p, packet);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -251,14 +230,10 @@ public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons.
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void sendCameraPacket(int entityId, List<Player> sendTo) {
|
public void sendCameraPacket(int entityId, List<Player> sendTo) {
|
||||||
FriendlyByteBuf byteBuf = new FriendlyByteBuf(Unpooled.buffer());
|
// Fake entity just to avoid reflection
|
||||||
byteBuf.writeVarInt(entityId);
|
Entity entity = new ArmorStand(net.minecraft.world.entity.EntityType.ARMOR_STAND, MinecraftServer.getServer().overworld());
|
||||||
try {
|
ClientboundSetCameraPacket packet = new ClientboundSetCameraPacket(entity);
|
||||||
ClientboundSetCameraPacket packet = cameraConstructor.newInstance(byteBuf);
|
for (Player p : sendTo) sendPacket(p, packet);
|
||||||
for (Player p : sendTo) sendPacket(p, packet);
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -18,9 +18,12 @@ import net.minecraft.network.syncher.EntityDataSerializers;
|
|||||||
import net.minecraft.network.syncher.SynchedEntityData;
|
import net.minecraft.network.syncher.SynchedEntityData;
|
||||||
import net.minecraft.resources.ResourceLocation;
|
import net.minecraft.resources.ResourceLocation;
|
||||||
import net.minecraft.server.MinecraftServer;
|
import net.minecraft.server.MinecraftServer;
|
||||||
|
import net.minecraft.server.level.ServerLevel;
|
||||||
import net.minecraft.server.level.ServerPlayer;
|
import net.minecraft.server.level.ServerPlayer;
|
||||||
|
import net.minecraft.world.entity.Entity;
|
||||||
import net.minecraft.world.entity.EquipmentSlot;
|
import net.minecraft.world.entity.EquipmentSlot;
|
||||||
import net.minecraft.world.entity.PositionMoveRotation;
|
import net.minecraft.world.entity.PositionMoveRotation;
|
||||||
|
import net.minecraft.world.entity.decoration.ArmorStand;
|
||||||
import net.minecraft.world.entity.player.Inventory;
|
import net.minecraft.world.entity.player.Inventory;
|
||||||
import net.minecraft.world.level.portal.TeleportTransition;
|
import net.minecraft.world.level.portal.TeleportTransition;
|
||||||
import net.minecraft.world.phys.Vec3;
|
import net.minecraft.world.phys.Vec3;
|
||||||
@@ -54,9 +57,6 @@ import java.util.*;
|
|||||||
public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons.nms.NMSPackets {
|
public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons.nms.NMSPackets {
|
||||||
|
|
||||||
static Constructor<ClientboundSetPassengersPacket> passengerConstructor;
|
static Constructor<ClientboundSetPassengersPacket> passengerConstructor;
|
||||||
static Constructor<ClientboundSetEntityLinkPacket> linkConstructor;
|
|
||||||
static Constructor<ClientboundSetCameraPacket> cameraConstructor;
|
|
||||||
static Constructor<ClientboundRotateHeadPacket> rotateHeadConstructor;
|
|
||||||
|
|
||||||
static {
|
static {
|
||||||
try {
|
try {
|
||||||
@@ -65,24 +65,6 @@ public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons.
|
|||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
try {
|
|
||||||
linkConstructor = ClientboundSetEntityLinkPacket.class.getDeclaredConstructor(FriendlyByteBuf.class);
|
|
||||||
linkConstructor.setAccessible(true);
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
cameraConstructor = ClientboundSetCameraPacket.class.getDeclaredConstructor(FriendlyByteBuf.class);
|
|
||||||
cameraConstructor.setAccessible(true);
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
rotateHeadConstructor = ClientboundRotateHeadPacket.class.getDeclaredConstructor(FriendlyByteBuf.class);
|
|
||||||
rotateHeadConstructor.setAccessible(true);
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -96,16 +78,13 @@ public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons.
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void sendRotateHeadPacket(int entityId, Location location, List<Player> sendTo) {
|
public void sendRotateHeadPacket(int entityId, Location location, List<Player> sendTo) {
|
||||||
|
ServerLevel level = MinecraftServer.getServer().overworld();
|
||||||
|
Entity entity = new ArmorStand(net.minecraft.world.entity.EntityType.ARMOR_STAND, level);
|
||||||
|
entity.setId(entityId);
|
||||||
byte headRot = (byte) (location.getYaw() * 256.0F / 360.0F);
|
byte headRot = (byte) (location.getYaw() * 256.0F / 360.0F);
|
||||||
FriendlyByteBuf byteBuf = new FriendlyByteBuf(Unpooled.buffer());
|
|
||||||
byteBuf.writeVarInt(entityId);
|
ClientboundRotateHeadPacket packet = new ClientboundRotateHeadPacket(entity, headRot);
|
||||||
byteBuf.writeByte(headRot);
|
for (Player p : sendTo) sendPacket(p, packet);
|
||||||
try {
|
|
||||||
ClientboundRotateHeadPacket packet = rotateHeadConstructor.newInstance(byteBuf);
|
|
||||||
for (Player p : sendTo) sendPacket(p, packet);
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -223,15 +202,15 @@ public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons.
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void sendLeashPacket(int leashEntity, int entityId, List<Player> sendTo) {
|
public void sendLeashPacket(int leashEntity, int entityId, List<Player> sendTo) {
|
||||||
FriendlyByteBuf byteBuf = new FriendlyByteBuf(Unpooled.buffer());
|
// Fake entities just to avoid reflection
|
||||||
byteBuf.writeInt(leashEntity);
|
ServerLevel level = MinecraftServer.getServer().overworld();
|
||||||
byteBuf.writeInt(entityId);
|
Entity entity1 = new ArmorStand(net.minecraft.world.entity.EntityType.ARMOR_STAND, level);
|
||||||
try {
|
Entity entity2 = new ArmorStand(net.minecraft.world.entity.EntityType.ARMOR_STAND, level);
|
||||||
ClientboundSetEntityLinkPacket packet = linkConstructor.newInstance(byteBuf);
|
entity1.setId(leashEntity);
|
||||||
for (Player p : sendTo) sendPacket(p, packet);
|
entity2.setId(entityId);
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
ClientboundSetEntityLinkPacket packet = new ClientboundSetEntityLinkPacket(entity1, entity2);
|
||||||
}
|
for (Player p : sendTo) sendPacket(p, packet);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -255,14 +234,10 @@ public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons.
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void sendCameraPacket(int entityId, List<Player> sendTo) {
|
public void sendCameraPacket(int entityId, List<Player> sendTo) {
|
||||||
FriendlyByteBuf byteBuf = new FriendlyByteBuf(Unpooled.buffer());
|
// Fake entity just to avoid reflection
|
||||||
byteBuf.writeVarInt(entityId);
|
Entity entity = new ArmorStand(net.minecraft.world.entity.EntityType.ARMOR_STAND, MinecraftServer.getServer().overworld());
|
||||||
try {
|
ClientboundSetCameraPacket packet = new ClientboundSetCameraPacket(entity);
|
||||||
ClientboundSetCameraPacket packet = cameraConstructor.newInstance(byteBuf);
|
for (Player p : sendTo) sendPacket(p, packet);
|
||||||
for (Player p : sendTo) sendPacket(p, packet);
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ import net.minecraft.network.syncher.EntityDataSerializers;
|
|||||||
import net.minecraft.network.syncher.SynchedEntityData;
|
import net.minecraft.network.syncher.SynchedEntityData;
|
||||||
import net.minecraft.resources.ResourceLocation;
|
import net.minecraft.resources.ResourceLocation;
|
||||||
import net.minecraft.server.MinecraftServer;
|
import net.minecraft.server.MinecraftServer;
|
||||||
|
import net.minecraft.server.level.ServerLevel;
|
||||||
import net.minecraft.server.level.ServerPlayer;
|
import net.minecraft.server.level.ServerPlayer;
|
||||||
import net.minecraft.world.entity.Entity;
|
import net.minecraft.world.entity.Entity;
|
||||||
import net.minecraft.world.entity.EquipmentSlot;
|
import net.minecraft.world.entity.EquipmentSlot;
|
||||||
@@ -57,9 +58,6 @@ import java.util.*;
|
|||||||
public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons.nms.NMSPackets {
|
public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons.nms.NMSPackets {
|
||||||
|
|
||||||
static Constructor<ClientboundSetPassengersPacket> passengerConstructor;
|
static Constructor<ClientboundSetPassengersPacket> passengerConstructor;
|
||||||
static Constructor<ClientboundSetEntityLinkPacket> linkConstructor;
|
|
||||||
static Constructor<ClientboundSetCameraPacket> cameraConstructor;
|
|
||||||
static Constructor<ClientboundRotateHeadPacket> rotateHeadConstructor;
|
|
||||||
|
|
||||||
static {
|
static {
|
||||||
try {
|
try {
|
||||||
@@ -68,24 +66,6 @@ public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons.
|
|||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
try {
|
|
||||||
linkConstructor = ClientboundSetEntityLinkPacket.class.getDeclaredConstructor(FriendlyByteBuf.class);
|
|
||||||
linkConstructor.setAccessible(true);
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
cameraConstructor = ClientboundSetCameraPacket.class.getDeclaredConstructor(FriendlyByteBuf.class);
|
|
||||||
cameraConstructor.setAccessible(true);
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
rotateHeadConstructor = ClientboundRotateHeadPacket.class.getDeclaredConstructor(FriendlyByteBuf.class);
|
|
||||||
rotateHeadConstructor.setAccessible(true);
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -99,16 +79,13 @@ public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons.
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void sendRotateHeadPacket(int entityId, Location location, List<Player> sendTo) {
|
public void sendRotateHeadPacket(int entityId, Location location, List<Player> sendTo) {
|
||||||
|
ServerLevel level = MinecraftServer.getServer().overworld();
|
||||||
|
Entity entity = new ArmorStand(net.minecraft.world.entity.EntityType.ARMOR_STAND, level);
|
||||||
|
entity.setId(entityId);
|
||||||
byte headRot = (byte) (location.getYaw() * 256.0F / 360.0F);
|
byte headRot = (byte) (location.getYaw() * 256.0F / 360.0F);
|
||||||
FriendlyByteBuf byteBuf = new FriendlyByteBuf(Unpooled.buffer());
|
|
||||||
byteBuf.writeVarInt(entityId);
|
ClientboundRotateHeadPacket packet = new ClientboundRotateHeadPacket(entity, headRot);
|
||||||
byteBuf.writeByte(headRot);
|
for (Player p : sendTo) sendPacket(p, packet);
|
||||||
try {
|
|
||||||
ClientboundRotateHeadPacket packet = rotateHeadConstructor.newInstance(byteBuf);
|
|
||||||
for (Player p : sendTo) sendPacket(p, packet);
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -226,15 +203,15 @@ public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons.
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void sendLeashPacket(int leashEntity, int entityId, List<Player> sendTo) {
|
public void sendLeashPacket(int leashEntity, int entityId, List<Player> sendTo) {
|
||||||
FriendlyByteBuf byteBuf = new FriendlyByteBuf(Unpooled.buffer());
|
// Fake entities just to avoid reflection
|
||||||
byteBuf.writeInt(leashEntity);
|
ServerLevel level = MinecraftServer.getServer().overworld();
|
||||||
byteBuf.writeInt(entityId);
|
Entity entity1 = new ArmorStand(net.minecraft.world.entity.EntityType.ARMOR_STAND, level);
|
||||||
try {
|
Entity entity2 = new ArmorStand(net.minecraft.world.entity.EntityType.ARMOR_STAND, level);
|
||||||
ClientboundSetEntityLinkPacket packet = linkConstructor.newInstance(byteBuf);
|
entity1.setId(leashEntity);
|
||||||
for (Player p : sendTo) sendPacket(p, packet);
|
entity2.setId(entityId);
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
ClientboundSetEntityLinkPacket packet = new ClientboundSetEntityLinkPacket(entity1, entity2);
|
||||||
}
|
for (Player p : sendTo) sendPacket(p, packet);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -258,14 +235,12 @@ public class NMSPackets extends NMSCommon implements me.lojosho.hibiscuscommons.
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void sendCameraPacket(int entityId, List<Player> sendTo) {
|
public void sendCameraPacket(int entityId, List<Player> sendTo) {
|
||||||
FriendlyByteBuf byteBuf = new FriendlyByteBuf(Unpooled.buffer());
|
// Fake entity just to avoid reflection
|
||||||
byteBuf.writeVarInt(entityId);
|
Entity entity = new ArmorStand(net.minecraft.world.entity.EntityType.ARMOR_STAND, MinecraftServer.getServer().overworld());
|
||||||
try {
|
entity.setId(entityId);
|
||||||
ClientboundSetCameraPacket packet = cameraConstructor.newInstance(byteBuf);
|
|
||||||
for (Player p : sendTo) sendPacket(p, packet);
|
ClientboundSetCameraPacket packet = new ClientboundSetCameraPacket(entity);
|
||||||
} catch (Exception e) {
|
for (Player p : sendTo) sendPacket(p, packet);
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user