diff --git a/.gitignore b/.gitignore index 0361d7d..2c9087c 100644 --- a/.gitignore +++ b/.gitignore @@ -60,3 +60,6 @@ run/ *.log logs/ +# Git Worktrees +.worktrees/ + diff --git a/src/main/java/plugin/centralCartTopPlugin/CentralCartTopPlugin.java b/src/main/java/plugin/centralCartTopPlugin/CentralCartTopPlugin.java index dccf3a5..7a75092 100644 --- a/src/main/java/plugin/centralCartTopPlugin/CentralCartTopPlugin.java +++ b/src/main/java/plugin/centralCartTopPlugin/CentralCartTopPlugin.java @@ -100,16 +100,11 @@ public void onDisable() { monthlyUpdateTask.cancel(); } - // Remove NPCs salvos para evitar duplicação em reinícios - if (npcManager != null && npcManager.isCitizensEnabled()) { - try { - npcManager.removeAllNPCs(); - // Salva config para persistir remoção - saveConfig(); - } catch (Exception e) { - getLogger().log(Level.SEVERE, "Erro ao remover NPCs no onDisable", e); - } - } + // Persiste os IDs dos NPCs para que sejam reutilizados no próximo onEnable. + // Os NPCs não são destruídos: o Citizens os salva e os recarrega automaticamente + // entre reinícios do servidor. Destruí-los aqui causaria a criação de novos + // NPCs a cada restart, em vez de reutilizar os existentes. + saveConfig(); getLogger().info("§c[CentralCartTopPlugin] Plugin desabilitado!"); } diff --git a/src/main/java/plugin/centralCartTopPlugin/service/TopNpcManager.java b/src/main/java/plugin/centralCartTopPlugin/service/TopNpcManager.java index 861b3ca..fb5ff31 100644 --- a/src/main/java/plugin/centralCartTopPlugin/service/TopNpcManager.java +++ b/src/main/java/plugin/centralCartTopPlugin/service/TopNpcManager.java @@ -170,11 +170,10 @@ private void updateOrCreateNPC(NPCRegistry registry, TopCustomer customer) { // Atualiza o nome exibido npc.setName(displayName); - // Atualiza a skin do jogador - if (npc.hasTrait(SkinTrait.class)) { - SkinTrait skinTrait = npc.getOrAddTrait(SkinTrait.class); - skinTrait.setSkinName(customer.getName()); - } + // Atualiza a skin — getOrAddTrait garante que a trait existe antes de atualizar, + // sem depender de hasTrait que deixaria NPCs sem trait herdada sem skin atualizada + SkinTrait skinTrait = npc.getOrAddTrait(SkinTrait.class); + skinTrait.setSkinName(customer.getName(), true); // Move o NPC para a nova localização (teleporta) if (npc.isSpawned()) {