Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно. Вам необходимо обновить браузер или попробовать использовать другой.
WoolyNpcs — Гибкое управление NPC на базе ModelEngine
1.1
WoolyNpcs — плагин для создания интерактивных NPC с использованием кастомных моделей. Ориентирован на современные версии (API 1.21) и предоставляет полный контроль над сущностями через внутриигровые команды.
### Ключевые возможности
Интеграция с ModelEngine: Полная поддержка кастомных моделей. Смена модели и запуск анимаций (idle, walk и др.) происходят мгновенно без перезагрузки.
При выгрузке чанка (ChunkUnloadEvent) метод NpcManager.handleChunkUnload (строка 57) внутри вызывает загрузку чанка (world.getChunkAt()), что снова триггерит ChunkUnloadEvent получается бесконечная рекурсия и StackOverflowError сервер падает
Объединено
[04:39:25] [Server thread/ERROR]: Could not pass event ChunkUnloadEvent to WoolyNpcs v1.0
java.lang.StackOverflowError: null
at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:80) ~[paper-api-1.21.4-R0.1-SNAPSHOT.jar:?]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[paper-api-1.21.4-R0.1-SNAPSHOT.jar:?]
at io.papermc.paper.plugin.manager.PaperEventManager.callEvent(PaperEventManager.java:54) ~[paper-1.21.4.jar:1.21.4-232-12d8fe0]
at io.papermc.paper.plugin.manager.PaperPluginManagerImpl.callEvent(PaperPluginManagerImpl.java:131) ~[paper-1.21.4.jar:1.21.4-232-12d8fe0]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:628) ~[paper-api-1.21.4-R0.1-SNAPSHOT.jar:?]
at net.minecraft.world.level.chunk.LevelChunk.unloadCallback(LevelChunk.java:669) ~[paper-1.21.4.jar:1.21.4-232-12d8fe0]
at ca.spottedleaf.moonrise.paper.util.BaseChunkSystemHooks.onChunkNotBorder(BaseChunkSystemHooks.java:116) ~[paper-1.21.4.jar:1.21.4-232-12d8fe0]
at ca.spottedleaf.moonrise.patches.chunk_system.scheduling.NewChunkHolder.handleFullStatusChange(NewChunkHolder.java:1309) ~[paper-1.21.4.jar:1.21.4-232-12d8fe0]
at ca.spottedleaf.moonrise.patches.chunk_system.scheduling.ChunkHolderManager.processPendingFullUpdate(ChunkHolderManager.java:1392) ~[paper-1.21.4.jar:1.21.4-232-12d8fe0]
at ca.spottedleaf.moonrise.patches.chunk_system.scheduling.ChunkHolderManager.processTicketUpdates(ChunkHolderManager.java:1376) ~[paper-1.21.4.jar:1.21.4-232-12d8fe0]
at ca.spottedleaf.moonrise.patches.chunk_system.scheduling.ChunkHolderManager.processTicketUpdates(ChunkHolderManager.java:1323) ~[paper-1.21.4.jar:1.21.4-232-12d8fu0]
at ca.spottedleaf.moonrise.patches.chunk_system.scheduling.ChunkTaskScheduler.scheduleTickingState(ChunkTaskScheduler.java:391) ~[paper-1.21.4.jar:1.21.4-232-12d8fe0]
at ca.spottedleaf.moonrise.patches.chunk_system.scheduling.ChunkTaskScheduler.scheduleChunkLoad(ChunkTaskScheduler.java:586) ~[paper-1.21.4.jar:1.21.4-232-12d8fe0]
at net.minecraft.server.level.ServerChunkCache.syncLoad(ServerChunkCache.java:103) ~[paper-1.21.4.jar:1.21.4-232-12d8fe0]
at net.minecraft.server.level.ServerChunkCache.getChunkFallback(ServerChunkCache.java:151) ~[paper-1.21.4.jar:1.21.4-232-12d8fe0]
at net.minecraft.server.level.ServerChunkCache.getChunk(ServerChunkCache.java:321) ~[paper-1.21.4.jar:1.21.4-232-12d8fe0]
at net.minecraft.world.level.Level.getChunk(Level.java:1086) ~[paper-1.21.4.jar:1.21.4-232-12d8fe0]
at org.bukkit.craftbukkit.CraftWorld.getChunkAt(CraftWorld.java:369) ~[paper-1.21.4.jar:1.21.4-232-12d8fe0]
at org.bukkit.craftbukkit.CraftWorld.getChunkAt(CraftWorld.java:922) ~[paper-1.21.4.jar:1.21.4-232-12d8fe0]
at org.bukkit.Location.getChunk(Location.java:121) ~[paper-api-1.21.4-R0.1-SNAPSHOT.jar:?]
at WoolyNpcs-1.0-SNAPSHOT.jar/ru.qweyns.woolynpcs.manager.NpcManager.handleChunkUnload(NpcManager.java:57) ~[WoolyNpcs-1.0-SNAPSHOT.jar:?]
at WoolyNpcs-1.0-SNAPSHOT.jar/ru.qweyns.woolynpcs.listener.NpcListener.onChunkUnload(NpcListener.java:105) ~[WoolyNpcs-1.0-SNAPSHOT.jar:?]
И так продолжается и сервер умерает
При выгрузке чанка (ChunkUnloadEvent) метод NpcManager.handleChunkUnload (строка 57) внутри вызывает загрузку чанка (world.getChunkAt()), что снова триггерит ChunkUnloadEvent получается бесконечная рекурсия и StackOverflowError сервер падает
Объединено
[04:39:25] [Server thread/ERROR]: Could not pass event ChunkUnloadEvent to WoolyNpcs v1.0
java.lang.StackOverflowError: null
at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:80) ~[paper-api-1.21.4-R0.1-SNAPSHOT.jar:?]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[paper-api-1.21.4-R0.1-SNAPSHOT.jar:?]
at io.papermc.paper.plugin.manager.PaperEventManager.callEvent(PaperEventManager.java:54) ~[paper-1.21.4.jar:1.21.4-232-12d8fe0]
at io.papermc.paper.plugin.manager.PaperPluginManagerImpl.callEvent(PaperPluginManagerImpl.java:131) ~[paper-1.21.4.jar:1.21.4-232-12d8fe0]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:628) ~[paper-api-1.21.4-R0.1-SNAPSHOT.jar:?]
at net.minecraft.world.level.chunk.LevelChunk.unloadCallback(LevelChunk.java:669) ~[paper-1.21.4.jar:1.21.4-232-12d8fe0]
at ca.spottedleaf.moonrise.paper.util.BaseChunkSystemHooks.onChunkNotBorder(BaseChunkSystemHooks.java:116) ~[paper-1.21.4.jar:1.21.4-232-12d8fe0]
at ca.spottedleaf.moonrise.patches.chunk_system.scheduling.NewChunkHolder.handleFullStatusChange(NewChunkHolder.java:1309) ~[paper-1.21.4.jar:1.21.4-232-12d8fe0]
at ca.spottedleaf.moonrise.patches.chunk_system.scheduling.ChunkHolderManager.processPendingFullUpdate(ChunkHolderManager.java:1392) ~[paper-1.21.4.jar:1.21.4-232-12d8fe0]
at ca.spottedleaf.moonrise.patches.chunk_system.scheduling.ChunkHolderManager.processTicketUpdates(ChunkHolderManager.java:1376) ~[paper-1.21.4.jar:1.21.4-232-12d8fe0]
at ca.spottedleaf.moonrise.patches.chunk_system.scheduling.ChunkHolderManager.processTicketUpdates(ChunkHolderManager.java:1323) ~[paper-1.21.4.jar:1.21.4-232-12d8fu0]
at ca.spottedleaf.moonrise.patches.chunk_system.scheduling.ChunkTaskScheduler.scheduleTickingState(ChunkTaskScheduler.java:391) ~[paper-1.21.4.jar:1.21.4-232-12d8fe0]
at ca.spottedleaf.moonrise.patches.chunk_system.scheduling.ChunkTaskScheduler.scheduleChunkLoad(ChunkTaskScheduler.java:586) ~[paper-1.21.4.jar:1.21.4-232-12d8fe0]
at net.minecraft.server.level.ServerChunkCache.syncLoad(ServerChunkCache.java:103) ~[paper-1.21.4.jar:1.21.4-232-12d8fe0]
at net.minecraft.server.level.ServerChunkCache.getChunkFallback(ServerChunkCache.java:151) ~[paper-1.21.4.jar:1.21.4-232-12d8fe0]
at net.minecraft.server.level.ServerChunkCache.getChunk(ServerChunkCache.java:321) ~[paper-1.21.4.jar:1.21.4-232-12d8fe0]
at net.minecraft.world.level.Level.getChunk(Level.java:1086) ~[paper-1.21.4.jar:1.21.4-232-12d8fe0]
at org.bukkit.craftbukkit.CraftWorld.getChunkAt(CraftWorld.java:369) ~[paper-1.21.4.jar:1.21.4-232-12d8fe0]
at org.bukkit.craftbukkit.CraftWorld.getChunkAt(CraftWorld.java:922) ~[paper-1.21.4.jar:1.21.4-232-12d8fe0]
at org.bukkit.Location.getChunk(Location.java:121) ~[paper-api-1.21.4-R0.1-SNAPSHOT.jar:?]
at WoolyNpcs-1.0-SNAPSHOT.jar/ru.qweyns.woolynpcs.manager.NpcManager.handleChunkUnload(NpcManager.java:57) ~[WoolyNpcs-1.0-SNAPSHOT.jar:?]
at WoolyNpcs-1.0-SNAPSHOT.jar/ru.qweyns.woolynpcs.listener.NpcListener.onChunkUnload(NpcListener.java:105) ~[WoolyNpcs-1.0-SNAPSHOT.jar:?]
И так продолжается и сервер умерает
Критический краш сервера при выгрузке чанков — StackOverflowError из-за того, что обработчик ChunkUnloadEvent внутри вызывал getChunk(), который принудительно загружал чанк обратно и рекурсивно триггерил то же событие. Сервер умирал мгновенно. Полностью
переписана логика сравнения чанков — теперь без единого обращения к Chunk API.
Дубли событий от ModelEngine — один физический клик иногда вызывал действие дважды.
Добавлен...