diff --git a/src/main/java/re/imc/geysermodelengine/listener/AddEntityPacketListener.java b/src/main/java/re/imc/geysermodelengine/listener/AddEntityPacketListener.java index 14363c9..7aa7681 100644 --- a/src/main/java/re/imc/geysermodelengine/listener/AddEntityPacketListener.java +++ b/src/main/java/re/imc/geysermodelengine/listener/AddEntityPacketListener.java @@ -33,21 +33,30 @@ public class AddEntityPacketListener extends PacketAdapter { if (model != null) { if (FloodgateApi.getInstance().isFloodgatePlayer(event.getPlayer().getUniqueId())) { if (packet.getMeta("delayed").isPresent()) { + System.out.println("SENT"); return; } + EntityTask task = model.getTask(); - if (task == null) { + int delay = 1; + boolean firstJoined = GeyserModelEngine.getInstance().getJoinedPlayer().getIfPresent(event.getPlayer()) != null; + if (firstJoined) { + delay = GeyserModelEngine.getInstance().getJoinSendDelay(); + } + if (task == null || firstJoined) { Bukkit.getScheduler().runTaskLater(GeyserModelEngine.getInstance(), () -> { model.getTask().sendEntityData(event.getPlayer(), GeyserModelEngine.getInstance().getSkinSendDelay()); - }, 1); + }, delay); } else { task.sendEntityData(event.getPlayer(), GeyserModelEngine.getInstance().getSkinSendDelay()); } + event.setCancelled(true); + Bukkit.getScheduler().runTaskLater(GeyserModelEngine.getInstance(), () -> { packet.setMeta("delayed", 1); ProtocolLibrary.getProtocolManager().sendServerPacket(event.getPlayer(), packet); - }, 2); + }, delay + 2); } else { event.setCancelled(true); } diff --git a/src/main/java/re/imc/geysermodelengine/listener/ModelListener.java b/src/main/java/re/imc/geysermodelengine/listener/ModelListener.java index 3b0c2a9..3100fea 100644 --- a/src/main/java/re/imc/geysermodelengine/listener/ModelListener.java +++ b/src/main/java/re/imc/geysermodelengine/listener/ModelListener.java @@ -62,6 +62,9 @@ public class ModelListener implements Listener { @EventHandler public void onAnimationPlay(AnimationPlayEvent event) { + if (event.getModel().getModeledEntity() == null) { + return; + } Map map = ModelEntity.ENTITIES.get(event.getModel().getModeledEntity().getBase().getEntityId()); if (map == null) { return; diff --git a/src/main/java/re/imc/geysermodelengine/model/EntityTask.java b/src/main/java/re/imc/geysermodelengine/model/EntityTask.java index 1e1c912..7032223 100644 --- a/src/main/java/re/imc/geysermodelengine/model/EntityTask.java +++ b/src/main/java/re/imc/geysermodelengine/model/EntityTask.java @@ -199,8 +199,7 @@ public class EntityTask { } public void sendEntityData(Player player, int delay) { - GeyserModelEngine.getInstance().getLogger() - .info("SEND ENTITY"); + System.out.println("SEND CUSTOM ENTITY"); PlayerUtils.setCustomEntity(player, model.getEntity().getEntityId(), "modelengine:" + model.getActiveModel().getBlueprint().getName()); Bukkit.getScheduler().runTaskLaterAsynchronously(GeyserModelEngine.getInstance(), () -> { // PlayerUtils.sendCustomSkin(player, model.getEntity(), model.getActiveModel().getBlueprint().getName());