2.2 KiB
2.2 KiB
Plan: Módulo Nativo de Chunk Loader
Arquitetura
-
ChunkLoader.java(Record puro)id,ownerUuid,ownerName,world,x,y,z,chunkX,chunkZ,createdAt.- Métodos utilitários:
chunkCoords(),blockCoords(), etc.
-
ChunkLoaders.java(Gerenciador e Persistência)- Gerencia lista em memória sincronizada
List<ChunkLoader>. - Persistência em
plugins/Canalhandia/chunks.ymlcom salvamento assíncrono. - Métodos:
add(),remove(),byChunk(),byOwner(),loadAll(),unloadAll(),playerLimit(Player). - Executa
world.addPluginChunkTicketeworld.removePluginChunkTicket.
- Gerencia lista em memória sincronizada
-
Module.java&Settings.java- Adiciona
CHUNKLOADER("chunkloader", "Âncoras de carregamento contínuo de chunks")no enumModule. - Adiciona configurações em
Settings.java(limite padrão, material do bloco, raio de partículas).
- Adiciona
-
ChunkLoaderListener.java(Eventos do Mundo)BlockPlaceEvent: Detecta colocação da Âncora, verifica permissões/limites LuckPerms, registra loader e ticket.BlockBreakEvent: Protege quebra por não-donos, remove ticket e devolve o item customizado.BlockExplodeEvent/EntityExplodeEvent: Impede destruição por explosão.BlockPistonExtendEvent/BlockPistonRetractEvent: Impede movimentação por pistão.
-
CanalhandiaCommand.java&ChunkLoaderCommand.java- Subcomandos de
/chunkloader//ancorae tab-completion completo.
- Subcomandos de
-
BlueMapBridge.java- Cria conjunto de marcadores para chunk loaders no mapa web.
-
Testes Unitários (
ChunkLoaderTest.java)- Validação de regras de permissão, cálculo de limite, serialização em YAML e exclusão de duplicatas na mesma chunk.
Riscos & Mitigações
- Risco: Descarregamento incorreto no shutdown do servidor gerando tickets órfãos.
- Mitigação:
unloadAll()limpo emonDisable(), e tickets do Paper (PluginChunkTicket) são re-validados noonEnable().
- Mitigação:
- Risco: Jogador contornar limite colocando em mundos não permitidos ou múltiplas na mesma chunk.
- Mitigação: Validação estrita de unicidade de chunk (
byChunk(world, cx, cz) != null) e verificação de limite antes de aceitar o evento.
- Mitigação: Validação estrita de unicidade de chunk (