From db99b2fe00f8e622e32e308730c531a557762d82 Mon Sep 17 00:00:00 2001
From: TheLividaProject <56977759+TheLividaProject@users.noreply.github.com>
Date: Tue, 22 Jul 2025 11:03:23 +0100
Subject: [PATCH] we love big spawning issue, should be fixed till better
solution
---
.idea/workspace.xml | 30 +++++++++++++++++--
.../geysermodelengine/GeyserModelEngine.java | 9 +-----
.../listener/ModelListener.java | 5 ++--
.../managers/model/ModelManager.java | 6 ++++
.../runnables/EntityTaskRunnable.java | 4 +--
5 files changed, 38 insertions(+), 16 deletions(-)
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 9238fa3..9f78683 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -5,8 +5,8 @@
-
-
+
+
@@ -79,6 +79,7 @@
{
"keyToString": {
+ "Gradle.GeyserModelEngine [build].executor": "Run",
"Gradle.GeyserModelEngine [jar].executor": "Run",
"Maven.GeyserModelEngine [install...].executor": "Run",
"Maven.GeyserModelEngine [install].executor": "Run",
@@ -101,7 +102,29 @@
-
+
+
+
+
+
+
+
+
+
+
+
+ true
+ true
+ false
+ false
+
+
@@ -127,6 +150,7 @@
+
diff --git a/src/main/java/re/imc/geysermodelengine/GeyserModelEngine.java b/src/main/java/re/imc/geysermodelengine/GeyserModelEngine.java
index 2041e17..b816bc1 100644
--- a/src/main/java/re/imc/geysermodelengine/GeyserModelEngine.java
+++ b/src/main/java/re/imc/geysermodelengine/GeyserModelEngine.java
@@ -2,7 +2,6 @@ package re.imc.geysermodelengine;
import com.github.retrooper.packetevents.PacketEvents;
import com.github.retrooper.packetevents.event.PacketListenerPriority;
-import com.ticxo.modelengine.api.model.ActiveModel;
import dev.jorel.commandapi.CommandAPI;
import dev.jorel.commandapi.CommandAPIBukkitConfig;
import io.github.retrooper.packetevents.factory.spigot.SpigotPacketEventsBuilder;
@@ -14,11 +13,9 @@ import re.imc.geysermodelengine.managers.ConfigManager;
import re.imc.geysermodelengine.managers.commands.CommandManager;
import re.imc.geysermodelengine.managers.model.EntityTaskManager;
import re.imc.geysermodelengine.managers.model.ModelManager;
-import re.imc.geysermodelengine.managers.model.data.ModelEntityData;
import re.imc.geysermodelengine.runnables.BedrockMountControlRunnable;
import re.imc.geysermodelengine.runnables.UpdateTaskRunnable;
-import java.util.*;
import java.util.concurrent.*;
public class GeyserModelEngine extends JavaPlugin {
@@ -55,11 +52,7 @@ public class GeyserModelEngine extends JavaPlugin {
public void onDisable() {
PacketEvents.getAPI().terminate();
- for (Map entities : modelManager.getEntitiesCache().values()) {
- entities.forEach((model, modelEntity) -> {
- modelEntity.getEntity().remove();
- });
- }
+ this.modelManager.removeEntities();
CommandAPI.onDisable();
}
diff --git a/src/main/java/re/imc/geysermodelengine/listener/ModelListener.java b/src/main/java/re/imc/geysermodelengine/listener/ModelListener.java
index 280d247..fd3b8bd 100644
--- a/src/main/java/re/imc/geysermodelengine/listener/ModelListener.java
+++ b/src/main/java/re/imc/geysermodelengine/listener/ModelListener.java
@@ -14,7 +14,6 @@ import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.event.world.WorldInitEvent;
-import org.bukkit.event.world.WorldLoadEvent;
import org.geysermc.floodgate.api.FloodgateApi;
import re.imc.geysermodelengine.GeyserModelEngine;
import re.imc.geysermodelengine.managers.model.data.ModelEntityData;
@@ -66,8 +65,8 @@ public class ModelListener implements Listener {
public void onPlayerJoin(PlayerJoinEvent event) {
Player player = event.getPlayer();
if (!FloodgateApi.getInstance().isFloodgatePlayer(player.getUniqueId())) return;
- //TODO temp fix bc like why? - 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.getAsyncScheduler().runDelayed(plugin, scheduledTask -> plugin.getModelManager().getPlayerJoinedCache().add(player.getUniqueId()), 10, TimeUnit.MILLISECONDS);
+ // Temp fix bc like why? - 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);
}
@EventHandler
diff --git a/src/main/java/re/imc/geysermodelengine/managers/model/ModelManager.java b/src/main/java/re/imc/geysermodelengine/managers/model/ModelManager.java
index 2ba0009..37eaa14 100644
--- a/src/main/java/re/imc/geysermodelengine/managers/model/ModelManager.java
+++ b/src/main/java/re/imc/geysermodelengine/managers/model/ModelManager.java
@@ -52,6 +52,12 @@ public class ModelManager {
model.ifPresent(m -> create(modeledEntity, m));
}
+ public void removeEntities() {
+ for (Map entities : entitiesCache.values()) {
+ entities.forEach((model, modelEntity) -> modelEntity.getEntity().remove());
+ }
+ }
+
public HashSet getPlayerJoinedCache() {
return playerJoinedCache;
}
diff --git a/src/main/java/re/imc/geysermodelengine/runnables/EntityTaskRunnable.java b/src/main/java/re/imc/geysermodelengine/runnables/EntityTaskRunnable.java
index c995060..e9121a8 100644
--- a/src/main/java/re/imc/geysermodelengine/runnables/EntityTaskRunnable.java
+++ b/src/main/java/re/imc/geysermodelengine/runnables/EntityTaskRunnable.java
@@ -114,8 +114,8 @@ public class EntityTaskRunnable {
plugin.getEntityTaskManager().sendColor(model, Collections.singleton(player), lastColor, true);
updateEntityProperties(model, Collections.singleton(player), true);
- }, delay * 50L, TimeUnit.MILLISECONDS);
- }, 500, TimeUnit.MILLISECONDS);
+ }, 500, TimeUnit.MILLISECONDS);
+ }, delay * 50L, TimeUnit.MILLISECONDS);
}
public void updateEntityProperties(ModelEntityData model, Collection players, boolean firstSend, String... forceAnims) {