From 03f27514ef443e08a15e7e962f7d76db1c680bff Mon Sep 17 00:00:00 2001
From: TheLividaProject <56977759+TheLividaProject@users.noreply.github.com>
Date: Tue, 22 Jul 2025 17:23:06 +0100
Subject: [PATCH] added a comment ModelListener issue in regards of pig
spawning (such a thing issue) - mainly for those who want to know why it has
a delay on the player join, i didn't know this when forked it and took it off
but added it back now and should hopefully fix the issue
---
.idea/workspace.xml | 9 +++------
.../geysermodelengine/listener/ModelListener.java | 13 +++++++++++--
.../managers/model/EntityTaskManager.java | 2 --
3 files changed, 14 insertions(+), 10 deletions(-)
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 9f78683..51a680c 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -4,10 +4,7 @@
-
-
-
-
+
@@ -102,7 +99,7 @@
-
+
@@ -149,8 +146,8 @@
-
+
diff --git a/src/main/java/re/imc/geysermodelengine/listener/ModelListener.java b/src/main/java/re/imc/geysermodelengine/listener/ModelListener.java
index 596bdd9..842a81c 100644
--- a/src/main/java/re/imc/geysermodelengine/listener/ModelListener.java
+++ b/src/main/java/re/imc/geysermodelengine/listener/ModelListener.java
@@ -19,7 +19,6 @@ import re.imc.geysermodelengine.GeyserModelEngine;
import re.imc.geysermodelengine.managers.model.data.ModelEntityData;
import java.util.Map;
-import java.util.concurrent.TimeUnit;
public class ModelListener implements Listener {
@@ -61,11 +60,21 @@ public class ModelListener implements Listener {
world.getEntities().forEach(entity -> plugin.getModelManager().processEntities(entity));
}
+ /*
+ / Temp fix till a better solution is found -
+ / the issue is when a player logs out and the mob is there,
+ / the player logs back in sometimes it can display as a pig only
+ / this issues mainly comes from the functions from EntityTaskManager
+ / sendSpawnPacket() and canSee()
+ /
+ / TheLividaProject - conclusion:
+ / I'm assuming when a player joins the server the packet for mob spawning is instant so the client resyncs itself
+ / hence why the pig is shown instead of going invisible and not displaying the texture of the modeled mob
+ */
@EventHandler
public void onPlayerJoin(PlayerJoinEvent event) {
Player player = event.getPlayer();
if (!FloodgateApi.getInstance().isFloodgatePlayer(player.getUniqueId())) return;
- // Temp fix till a better solution is found - the issue is when a player logs out and the mob is there, the player logs back in sometimes it can display as a pig only
Bukkit.getGlobalRegionScheduler().runDelayed(plugin, scheduledTask -> plugin.getModelManager().getPlayerJoinedCache().add(player.getUniqueId()), 10);
}
diff --git a/src/main/java/re/imc/geysermodelengine/managers/model/EntityTaskManager.java b/src/main/java/re/imc/geysermodelengine/managers/model/EntityTaskManager.java
index 643f5a9..26d5eed 100644
--- a/src/main/java/re/imc/geysermodelengine/managers/model/EntityTaskManager.java
+++ b/src/main/java/re/imc/geysermodelengine/managers/model/EntityTaskManager.java
@@ -96,7 +96,6 @@ public class EntityTaskManager {
}
}
- // Issue here - start: See ModelListener.class and look at function onPlayerJoin
private void sendSpawnPacket(ModelEntityData model, Player onlinePlayer) {
EntityTaskRunnable task = model.getEntityTask();
boolean firstJoined = !plugin.getModelManager().getPlayerJoinedCache().contains(onlinePlayer.getUniqueId());
@@ -122,7 +121,6 @@ public class EntityTaskManager {
return true;
}
- // Issue here - end
public void sendHitBoxToAll(ModelEntityData model) {
for (Player viewer : model.getViewers()) {