custom entity

This commit is contained in:
zimzaza4
2024-04-15 22:44:03 +08:00
parent 2a263f60d5
commit e722c3b07f
3 changed files with 16 additions and 5 deletions

View File

@@ -33,21 +33,30 @@ public class AddEntityPacketListener extends PacketAdapter {
if (model != null) { if (model != null) {
if (FloodgateApi.getInstance().isFloodgatePlayer(event.getPlayer().getUniqueId())) { if (FloodgateApi.getInstance().isFloodgatePlayer(event.getPlayer().getUniqueId())) {
if (packet.getMeta("delayed").isPresent()) { if (packet.getMeta("delayed").isPresent()) {
System.out.println("SENT");
return; return;
} }
EntityTask task = model.getTask(); 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(), () -> { Bukkit.getScheduler().runTaskLater(GeyserModelEngine.getInstance(), () -> {
model.getTask().sendEntityData(event.getPlayer(), GeyserModelEngine.getInstance().getSkinSendDelay()); model.getTask().sendEntityData(event.getPlayer(), GeyserModelEngine.getInstance().getSkinSendDelay());
}, 1); }, delay);
} else { } else {
task.sendEntityData(event.getPlayer(), GeyserModelEngine.getInstance().getSkinSendDelay()); task.sendEntityData(event.getPlayer(), GeyserModelEngine.getInstance().getSkinSendDelay());
} }
event.setCancelled(true); event.setCancelled(true);
Bukkit.getScheduler().runTaskLater(GeyserModelEngine.getInstance(), () -> { Bukkit.getScheduler().runTaskLater(GeyserModelEngine.getInstance(), () -> {
packet.setMeta("delayed", 1); packet.setMeta("delayed", 1);
ProtocolLibrary.getProtocolManager().sendServerPacket(event.getPlayer(), packet); ProtocolLibrary.getProtocolManager().sendServerPacket(event.getPlayer(), packet);
}, 2); }, delay + 2);
} else { } else {
event.setCancelled(true); event.setCancelled(true);
} }

View File

@@ -62,6 +62,9 @@ public class ModelListener implements Listener {
@EventHandler @EventHandler
public void onAnimationPlay(AnimationPlayEvent event) { public void onAnimationPlay(AnimationPlayEvent event) {
if (event.getModel().getModeledEntity() == null) {
return;
}
Map<ActiveModel, ModelEntity> map = ModelEntity.ENTITIES.get(event.getModel().getModeledEntity().getBase().getEntityId()); Map<ActiveModel, ModelEntity> map = ModelEntity.ENTITIES.get(event.getModel().getModeledEntity().getBase().getEntityId());
if (map == null) { if (map == null) {
return; return;

View File

@@ -199,8 +199,7 @@ public class EntityTask {
} }
public void sendEntityData(Player player, int delay) { public void sendEntityData(Player player, int delay) {
GeyserModelEngine.getInstance().getLogger() System.out.println("SEND CUSTOM ENTITY");
.info("SEND ENTITY");
PlayerUtils.setCustomEntity(player, model.getEntity().getEntityId(), "modelengine:" + model.getActiveModel().getBlueprint().getName()); PlayerUtils.setCustomEntity(player, model.getEntity().getEntityId(), "modelengine:" + model.getActiveModel().getBlueprint().getName());
Bukkit.getScheduler().runTaskLaterAsynchronously(GeyserModelEngine.getInstance(), () -> { Bukkit.getScheduler().runTaskLaterAsynchronously(GeyserModelEngine.getInstance(), () -> {
// PlayerUtils.sendCustomSkin(player, model.getEntity(), model.getActiveModel().getBlueprint().getName()); // PlayerUtils.sendCustomSkin(player, model.getEntity(), model.getActiveModel().getBlueprint().getName());