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 @@ - - + + { "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 + + 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) {