This commit is contained in:
zimzaza4
2024-12-15 00:49:19 +08:00
parent ff4f47b3da
commit d463176203
2 changed files with 21 additions and 9 deletions

View File

@@ -26,6 +26,7 @@ import re.imc.geysermodelengine.util.BooleanPacker;
import java.awt.*; import java.awt.*;
import java.util.*; import java.util.*;
import java.util.List;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ScheduledFuture; import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
@@ -60,6 +61,9 @@ public class EntityTask {
return; return;
} }
PacketEntity packetEntity = model.getEntity();
// packetEntity.setHeadYaw((float) Math.toDegrees(model.getModeledEntity().getYHeadRot()));
// packetEntity.setHeadPitch((float) Math.toDegrees(model.getModeledEntity().getXHeadRot()));
model.teleportToModel(); model.teleportToModel();
Set<Player> viewers = model.getViewers(); Set<Player> viewers = model.getViewers();
@@ -206,6 +210,7 @@ public class EntityTask {
} }
boneUpdates.put(name, bone.isVisible()); boneUpdates.put(name, bone.isVisible());
}); });
// } // }
@@ -272,10 +277,8 @@ public class EntityTask {
} }
//Collections.sort(list); List<String> list = new ArrayList<>(boneUpdates.keySet());
//System.out.println(list); Collections.sort(list);
//System.out.println(boneUpdates);
//System.out.println(intUpdates);
for (Player player : players) { for (Player player : players) {
EntityUtils.sendIntProperties(player, entity, intUpdates); EntityUtils.sendIntProperties(player, entity, intUpdates);
@@ -301,9 +304,10 @@ public class EntityTask {
public void sendHitBox(Player viewer) { public void sendHitBox(Player viewer) {
float w = 0; float w = 0;
if (model.getActiveModel().isShadowVisible()) { if (model.getActiveModel().isShadowVisible()) {
if (model.getActiveModel().getModelRenderer() instanceof DisplayRenderer displayRenderer) { 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); EntityUtils.sendCustomHitBox(viewer, model.getEntity().getEntityId(), 0.02f, w);

View File

@@ -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.protocol.teleport.RelativeFlag;
import com.github.retrooper.packetevents.util.Vector3d; import com.github.retrooper.packetevents.util.Vector3d;
import com.github.retrooper.packetevents.wrapper.PacketWrapper; import com.github.retrooper.packetevents.wrapper.PacketWrapper;
import com.github.retrooper.packetevents.wrapper.play.server.WrapperPlayServerDestroyEntities; import com.github.retrooper.packetevents.wrapper.play.server.*;
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 io.github.retrooper.packetevents.util.SpigotConversionUtil; import io.github.retrooper.packetevents.util.SpigotConversionUtil;
import lombok.Getter; import lombok.Getter;
import lombok.Setter;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
@@ -25,6 +23,7 @@ import java.util.UUID;
import java.util.concurrent.ThreadLocalRandom; import java.util.concurrent.ThreadLocalRandom;
@Getter @Getter
@Setter
public class PacketEntity { public class PacketEntity {
// public static final MinecraftVersion V1_20_5 = new MinecraftVersion("1.20.5"); // public static final MinecraftVersion V1_20_5 = new MinecraftVersion("1.20.5");
@@ -41,6 +40,9 @@ public class PacketEntity {
private EntityType type; private EntityType type;
private Set<Player> viewers; private Set<Player> viewers;
private Location location; private Location location;
private float headYaw;
private float headPitch;
private boolean removed = false; private boolean removed = false;
public @NotNull Location getLocation() { public @NotNull Location getLocation() {
return location; return location;
@@ -51,6 +53,7 @@ public class PacketEntity {
this.location = location.clone(); this.location = location.clone();
if (sent) { if (sent) {
sendLocationPacket(viewers); sendLocationPacket(viewers);
// sendHeadRotation(viewers); // TODO
} }
return true; return true;
} }
@@ -89,6 +92,11 @@ public class PacketEntity {
} }
public void sendHeadRotation(Collection<Player> players) {
WrapperPlayServerEntityRotation packet = new WrapperPlayServerEntityRotation(id, headYaw, headPitch, false);
players.forEach(player -> PacketEvents.getAPI().getPlayerManager().sendPacket(player, packet));
}
public void sendEntityDestroyPacket(Collection<Player> players) { public void sendEntityDestroyPacket(Collection<Player> players) {
WrapperPlayServerDestroyEntities packet = new WrapperPlayServerDestroyEntities(id); WrapperPlayServerDestroyEntities packet = new WrapperPlayServerDestroyEntities(id);
players.forEach(player -> PacketEvents.getAPI().getPlayerManager().sendPacket(player, packet)); players.forEach(player -> PacketEvents.getAPI().getPlayerManager().sendPacket(player, packet));