WoolyNpcs — Гибкое управление NPC на базе ModelEngine

WoolyNpcs — Гибкое управление NPC на базе ModelEngine 1.1

Создайте и подтвердите аккаунт для скачивания

qweyns

Пользователь
Сообщения
267
Решения
3
Веб-сайт
guns.lol
qweyns добавил(а) новый ресурс:

You must be logged in to see this link. - Легковесное решение для создания интерактивных NPC на базе ModelEngine

WoolyNpcs — плагин для создания интерактивных NPC с использованием кастомных моделей. Ориентирован на современные версии (API 1.21) и предоставляет полный контроль над сущностями через внутриигровые команды.

### Ключевые возможности

  • Интеграция с ModelEngine: Полная поддержка кастомных моделей. Смена модели и запуск анимаций (idle, walk и др.) происходят мгновенно без перезагрузки.
  • Система LookAt (Слежение):
* Настройка дистанции обзора и высоты глаз...

You must be logged in to see this link.
 
При выгрузке чанка (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:?]
И так продолжается и сервер умерает
хорошо спасибо что показал на ошибку, сегодня как будет свободное время исправлю :)
 
qweyns обновил(а) ресурс You must be logged in to see this link. новой записью:

You must be logged in to see this link.

Исправлено​


  • Критический краш сервера при выгрузке чанков — StackOverflowError из-за того, что обработчик ChunkUnloadEvent внутри вызывал getChunk(), который принудительно загружал чанк обратно и рекурсивно триггерил то же событие. Сервер умирал мгновенно. Полностью
    переписана логика сравнения чанков — теперь без единого обращения к Chunk API.

  • Дубли событий от ModelEngine — один физический клик иногда вызывал действие дважды.
    Добавлен...

You must be logged in to see this link.
 
Назад
Сверху Снизу