diff --git a/src/main/java/re/imc/geysermodelengine/model/EntityTask.java b/src/main/java/re/imc/geysermodelengine/model/EntityTask.java index 344f822..e7c6ce5 100644 --- a/src/main/java/re/imc/geysermodelengine/model/EntityTask.java +++ b/src/main/java/re/imc/geysermodelengine/model/EntityTask.java @@ -26,6 +26,7 @@ import re.imc.geysermodelengine.util.BooleanPacker; import java.awt.*; import java.util.*; +import java.util.List; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.TimeUnit; @@ -60,6 +61,9 @@ public class EntityTask { return; } + PacketEntity packetEntity = model.getEntity(); + // packetEntity.setHeadYaw((float) Math.toDegrees(model.getModeledEntity().getYHeadRot())); + // packetEntity.setHeadPitch((float) Math.toDegrees(model.getModeledEntity().getXHeadRot())); model.teleportToModel(); Set viewers = model.getViewers(); @@ -206,6 +210,7 @@ public class EntityTask { } boneUpdates.put(name, bone.isVisible()); }); + // } @@ -272,10 +277,8 @@ public class EntityTask { } - //Collections.sort(list); - //System.out.println(list); - //System.out.println(boneUpdates); - //System.out.println(intUpdates); + List list = new ArrayList<>(boneUpdates.keySet()); + Collections.sort(list); for (Player player : players) { EntityUtils.sendIntProperties(player, entity, intUpdates); @@ -301,9 +304,10 @@ public class EntityTask { public void sendHitBox(Player viewer) { float w = 0; + if (model.getActiveModel().isShadowVisible()) { if (model.getActiveModel().getModelRenderer() instanceof DisplayRenderer displayRenderer) { - w = displayRenderer.getHitbox().getShadowRadius().get(); + // w = displayRenderer.getHitbox().getShadowRadius().get(); } } EntityUtils.sendCustomHitBox(viewer, model.getEntity().getEntityId(), 0.02f, w); diff --git a/src/main/java/re/imc/geysermodelengine/packet/entity/PacketEntity.java b/src/main/java/re/imc/geysermodelengine/packet/entity/PacketEntity.java index fa4288c..eebeb96 100644 --- a/src/main/java/re/imc/geysermodelengine/packet/entity/PacketEntity.java +++ b/src/main/java/re/imc/geysermodelengine/packet/entity/PacketEntity.java @@ -8,12 +8,10 @@ import com.github.retrooper.packetevents.protocol.entity.type.EntityTypes; import com.github.retrooper.packetevents.protocol.teleport.RelativeFlag; import com.github.retrooper.packetevents.util.Vector3d; import com.github.retrooper.packetevents.wrapper.PacketWrapper; -import com.github.retrooper.packetevents.wrapper.play.server.WrapperPlayServerDestroyEntities; -import com.github.retrooper.packetevents.wrapper.play.server.WrapperPlayServerEntityPositionSync; -import com.github.retrooper.packetevents.wrapper.play.server.WrapperPlayServerEntityTeleport; -import com.github.retrooper.packetevents.wrapper.play.server.WrapperPlayServerSpawnEntity; +import com.github.retrooper.packetevents.wrapper.play.server.*; import io.github.retrooper.packetevents.util.SpigotConversionUtil; import lombok.Getter; +import lombok.Setter; import org.bukkit.Location; import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; @@ -25,6 +23,7 @@ import java.util.UUID; import java.util.concurrent.ThreadLocalRandom; @Getter +@Setter public class PacketEntity { // public static final MinecraftVersion V1_20_5 = new MinecraftVersion("1.20.5"); @@ -41,6 +40,9 @@ public class PacketEntity { private EntityType type; private Set viewers; private Location location; + private float headYaw; + private float headPitch; + private boolean removed = false; public @NotNull Location getLocation() { return location; @@ -51,6 +53,7 @@ public class PacketEntity { this.location = location.clone(); if (sent) { sendLocationPacket(viewers); + // sendHeadRotation(viewers); // TODO } return true; } @@ -89,6 +92,11 @@ public class PacketEntity { } + public void sendHeadRotation(Collection players) { + WrapperPlayServerEntityRotation packet = new WrapperPlayServerEntityRotation(id, headYaw, headPitch, false); + players.forEach(player -> PacketEvents.getAPI().getPlayerManager().sendPacket(player, packet)); + } + public void sendEntityDestroyPacket(Collection players) { WrapperPlayServerDestroyEntities packet = new WrapperPlayServerDestroyEntities(id); players.forEach(player -> PacketEvents.getAPI().getPlayerManager().sendPacket(player, packet));