Sueta

DK KITS

1.28

DKKITS is a Spigot/Paper 26.1 plugin that lets you create, edit, and deliver kits via GUI, with per-kit permissions and per-player cooldowns.

·Plugin
  1. 1.28latestDK KITS 1.28Sep 12, 2026
    612 downloads
  2. 1.27DK KITS 1.27Sep 1, 2026
    337 downloads
  3. 1.26Aug 23, 2026
    296 downloads
  4. 1.0.6DK KITS 1.0.6Aug 23, 2026
    19 downloads
  5. 1.24DK KITS 1.24Aug 23, 2026
    25 downloads
  6. 1.23-SNAPSHOTDK KITS 1.23-SNAPSHOTAug 21, 2026
    83 downloads
  7. 1.22-SNAPSHOTDK KITS 1.22-SNAPSHOTJul 21, 2026
    The cause was the api-version: ‘26.1’: older servers reject plugins that declare a newer API. The reported Folia implements 1.21.11. This corresponds to the behavior documented by PaperMC.
    1033 downloads
  8. 1.21-SNAPSHOTDK KITS 1.21-SNAPSHOTJun 12, 2026
    Added support for 26.x
    2041 downloads
  9. 1.20-SNAPSHOTDK KITS 1.20-SNAPSHOTMay 20, 2026
    O problema era: no editor do kit, a ação era decidida pelo material do item clicado. Como o botão de ícone usa o próprio material do ícone atual, quando ele era CHEST caía em “Editar itens”. Agora o editor decide pelo slot fixo do menu.
    1037 downloads
  10. 1.19-SNAPSHOTDK KITS 1.19-SNAPSHOTApr 27, 2026
    271 downloads
  11. 1.18-SNAPSHOTDK KITS 1.18-SNAPSHOTMar 11, 2026

    🎉 DKKits - Changelog de Atualizações

    🔒 Segurança

    - Corrigido exploit crítico: Jogadores sem permissão dkkits.admin conseguiam criar kits infinitos clicando na bigorna no /kit - Bigorna de criar kit agora só aparece para quem tem permissão

    ✨ Novas Funcionalidades

    1. Sistema de Páginas no /kit
    - Menu de kits agora suporta paginação automática - Configurável no config.yml: - gui.kits-per-page - Quantos kits por página (padrão: 45) - gui.previous-page-slot - Posição do botão "Página Anterior" (padrão: 48) - gui.next-page-slot - Posição do botão "Próxima Página" (padrão: 50) - Título mostra número da página: "Kits (1)", "Kits (2)", etc.
    2. Bigorna Configurável
    - Posição da bigorna (botão criar kit) agora é configurável - gui.create-button-slot no config.yml (padrão: 53) - Bigorna só aparece para quem tem permissão de criar kits
    3. Cooldown Imediato (First Use Delay)
    - Nova opção no editor de kits (slot 23) - Quando ativado, jogador precisa esperar o cooldown ANTES de pegar o kit pela primeira vez - Exemplo: Kit com 3600s e cooldown imediato = jogador espera 1 hora antes de pegar pela primeira vez - Perfeito para kits diários/semanais - Ícone: Esmeralda (ativado) / Redstone (desativado)
    4. Kits Ocultos/Privados
    - Nova opção no editor de kits (slot 25) - Kits ocultos NÃO aparecem no /kit (GUI) - Apenas admins podem dar com /dkkit give - Jogadores com permissão podem pegar via /kit <nome> - Ideal para kits VIP que você não quer mostrar publicamente - Ícone: Olho de Ender (oculto) / Pérola de Ender (visível)
    5. Comando /kit <nome>
    - Agora /kit sem argumentos abre a GUI - /kit vip pega o kit "vip" diretamente - Funciona com cooldown, permissões e kits ocultos - Cooldown imediato também funciona via comando
    6. Editor Expandido
    - GUI do editor agora tem 36 slots (4 linhas) em vez de 27 - Novos botões: - Slot 23: Cooldown Imediato (toggle) - Slot 25: Kit Oculto (toggle) - Todos os botões antigos mantidos

    🐛 Correções de Bugs

    - Corrigido: Itens da GUI do editor ficavam "pegáveis" após clicar em qualquer botão - Corrigido: Listeners de GUI acumulavam causando conflitos - Corrigido: KitItemsEditorGUI não cancelava eventos corretamente - Melhorado: Sistema de registro/desregistro de listeners

    🌍 Internacionalização

    - Todos os novos textos adicionados aos arquivos de mensagens - Suporte completo para português e inglês - Novas chaves: - editor.first-use-delay e variações - editor.hidden e variações - Todas configuráveis em messages_pt_br.yml e messages_en.yml

    ⚙️ Configurações Novas

    gui:
      # Posição do botão de criar kit (bigorna)
      create-button-slot: 53
      
      # Quantos kits por página
      kits-per-page: 45
      
      # Posição do botão de página anterior
      previous-page-slot: 48
      
      # Posição do botão de próxima página
      next-page-slot: 50

    📝 Como Usar as Novas Funcionalidades

    Criar kit VIP oculto com cooldown imediato: 1. /dkkit create vip 2. Configure nome, permissão, itens 3. /dkkit edit vip 4. Clique no relógio → 86400 (24 horas) 5. Clique na Esmeralda/Redstone (slot 23) → Ativa cooldown imediato 6. Clique no Olho de Ender (slot 25) → Ativa kit oculto 7. Pronto! Kit não aparece no /kit, mas jogadores com permissão podem pegar com /kit vip após esperar 24h Dar kit oculto:
    /dkkit give <jogador> vip
    2028 downloads
  12. 1.17-SNAPSHOTDK KITS 1.17-SNAPSHOTMar 8, 2026

    🎉 Novidades do DKKits

    Novo Comando: /dkkit give
    Adicionado o comando /dkkit give <jogador> <kit> (ou /dkkit dar <jogador> <kit>) que permite aos administradores dar kits diretamente para jogadores! Funcionalidades: - ✅ Dá qualquer kit para qualquer jogador online - ✅ Verifica automaticamente se o jogador tem espaço no inventário - ✅ Se não couber tudo, dropa os itens extras no chão - ✅ Mensagens de confirmação tanto para quem deu quanto para quem recebeu - ✅ Suporte completo ao PlaceholderAPI - você pode usar placeholders no nome do jogador! Exemplos de uso:
    /dkkit give Steve starter
    /dkkit dar Alex vip
    /dkkit give %player_name% iniciante
    /dkkit give %vault_rank% premium
    Integração com PlaceholderAPI: O comando agora suporta placeholders do PlaceholderAPI no argumento do jogador. Isso significa que você pode usar este comando em outros plugins (como sistemas de recompensa, quests, etc.) e usar placeholders para definir dinamicamente qual jogador vai receber o kit! Permissão necessária: dkkits.admin (padrão: op) Mensagens de erro: - Avisa se o jogador não está online - Avisa se o kit não existe - Avisa se o jogador não tem espaço no inventário
    99 downloads
  13. 1.16-SNAPSHOTDK KITS 1.16-SNAPSHOTFeb 14, 2026
    🔒 Bug Crítico Corrigido: Jogadores Sem OP Criando Kits Infinitos Problema: Jogadores sem permissão dkkits.admin conseguiam clicar na bigorna (ANVIL) na interface /kit e criar kits infinitamente, permitindo abuso do sistema. Causa: No KitListGUI.java, a verificação de permissão não estava sendo feita quando o jogador clicava na bigorna.
    588 downloads
  14. 1.15-SNAPSHOTDK KITS 1.15-SNAPSHOTFeb 5, 2026

    📋 Resumo Executivo

    O plugin DKKits foi completamente refatorado para funcionar em todas as versões do Minecraft de 1.8.8 até 1.21+, incluindo suporte total para Paper e Folia. As principais mudanças incluem: - ✅ Compatibilidade de materiais entre versões - ✅ Sistema de detecção de GUI por estrutura (fallback para títulos null) - ✅ Correção de bugs de duplicação de kits - ✅ Implementação completa do scheduler do Folia - ✅ Sistema de debug configurável - ✅ Separação correta de eventos entre diferentes GUIs ---

    🔧 Atualizações Técnicas Detalhadas

    1. Configuração do Build (build.gradle)
    Objetivo: Permitir compilação com Java 8 para compatibilidade máxima Mudanças: - Java alterado de 21 para 8 - API do Spigot alterada de 1.21 para 1.16.5 - Configurado sourceCompatibility e targetCompatibility para Java 8 - Mantido repositórios Maven para Paper e Spigot Resultado: Plugin compila com Java 8 e gera bytecode compatível com JVM 8+ ---
    2. Plugin Metadata (plugin.yml)
    Objetivo: Declarar compatibilidade correta com versões antigas Mudanças: - api-version alterado de 1.21 para 1.13 - folia-supported mantido como true - Comandos e permissões preservados Resultado: Plugin carrega corretamente em servidores 1.8.8 até 1.21+ ---
    3. Sistema de Compatibilidade de Inventário (InventoryCompat.java)
    Objetivo: Resolver problema de títulos nulos em versões 1.8-1.14 Problema: Em versões antigas (especialmente 1.14.1), getTitle() retorna null, impedindo identificação de GUIs Solução: Criada classe utilitária com múltiplos métodos de fallback Métodos de detecção de título: 1. getTitle() no InventoryView (1.14+) 2. title() com Adventure API (Paper moderno) 3. getTitle() no Inventory (algumas versões) 4. getName() no Inventory (1.8-1.13) Sistema de detecção por estrutura (quando título é null): KitListGUI: - Detecta por ANVIL no slot 53 - Verifica ausência de BARRIER no slot 45 - Tamanho: 54 slots KitWizardGUI - Tela de Permissão: - Detecta por WOOL nos slots 11 e 15 - Verifica se sessão não tem itens ainda - Tamanho: 27 slots KitWizardGUI - Tela de Itens: - Detecta por BARRIER no slot 45 - Tamanho: 54 slots KitWizardGUI - Tela de Confirmação: - Detecta por WOOL nos slots 11 e 15 - Verifica se sessão já tem itens definidos - Tamanho: 27 slots KitEditorGUI: - Detecta por NAME_TAG no slot 10 - Detecta por CHEST no slot 14 - Detecta por PAPER no slot 20 - Tamanho: 27 slots Resultado: Todas as GUIs funcionam perfeitamente mesmo quando getTitle() retorna null ---
    4. Compatibilidade de Materiais
    Objetivo: Usar nomes corretos de materiais para cada versão Materiais atualizados: | Material Moderno | Material Legado (1.8) | Uso | |-----------------|----------------------|-----| | REDSTONE_TORCH | REDSTONE_TORCH_ON | Ícone de permissão | | CLOCK | WATCH | Ícone de cooldown | | NAME_TAG | NAME_TAG | Ícone de renomear | Lã colorida (sistema especial): 1.8-1.12: Usa Material.WOOL com data values (durability)
    // Verde (Lime)
    ItemStack greenWool = new ItemStack(Material.WOOL, 1, (short) 5);
    
    // Vermelho (Red)
    ItemStack redWool = new ItemStack(Material.WOOL, 1, (short) 14);
    1.13+: Usa tipos específicos
    Material.LIME_WOOL
    Material.RED_WOOL
    Método helper:
    private Material getMaterialCompat(String modernName, String legacyName) {
        try {
            return Material.valueOf(modernName);
        } catch (IllegalArgumentException e) {
            return Material.valueOf(legacyName);
        }
    }
    Resultado: Todos os itens aparecem corretamente em todas as versões ---
    5. Remoção de APIs Modernas
    Objetivo: Eliminar dependências de Java 9+ e Minecraft 1.13+ ItemFlag (não existe em 1.8):
    // ANTES (não funciona em 1.8)
    meta.addItemFlags(ItemFlag.HIDE_ATTRIBUTES);
    
    // DEPOIS (com reflexão)
    try {
        Class<?> itemFlagClass = Class.forName("org.bukkit.inventory.ItemFlag");
        Object hideAttributes = itemFlagClass.getEnumConstants()[0];
        meta.getClass().getMethod("addItemFlags", itemFlagClass)
            .invoke(meta, hideAttributes);
    } catch (Exception ignored) {}
    Lambdas convertidos para classes anônimas:
    // ANTES
    requestText(playerId, input -> {
        // código
    });
    
    // DEPOIS
    requestText(playerId, new java.util.function.Consumer<String>() {
        public void accept(String input) {
            // código
        }
    });
    List.of() substituído (só existe em Java 9+):
    // ANTES
    List<String> list = List.of("item1", "item2");
    
    // DEPOIS
    List<String> list = Arrays.asList("item1", "item2");
    // ou
    List<String> list = new ArrayList<>();
    list.add("item1");
    list.add("item2");
    Enchantment.UNBREAKING:
    // ANTES (1.13+)
    Enchantment.UNBREAKING
    
    // DEPOIS (1.8)
    Enchantment.DURABILITY
    Resultado: Código compila e executa em Java 8 sem erros ---
    6. Scheduler Folia (Compatibilidade Completa)
    Objetivo: Funcionar tanto em Paper/Spigot quanto em Folia Detecção automática:
    public static boolean isFolia() {
        try {
            Class.forName("io.papermc.paper.threadedregions.RegionizedServer");
            return true;
        } catch (ClassNotFoundException e) {
            return false;
        }
    }
    Implementação com múltiplos fallbacks: 1. EntityScheduler (preferencial para Folia): - run(plugin, task, null, 0L) - 4 parâmetros - run(plugin, task, null) - 3 parâmetros - run(plugin, task) - 2 parâmetros - execute(plugin, task) - método alternativo 2. GlobalRegionScheduler (fallback): - run(plugin, task) - execute(plugin, task) 3. BukkitScheduler (Paper/Spigot): - runTask(plugin, task) - runTaskLater(plugin, task, delay) Métodos implementados:
    // Executa tarefa imediatamente
    runTaskForPlayer(Player player, Runnable task)
    
    // Executa com delay
    runTaskLaterForPlayer(Player player, Runnable task, long delay)
    
    // Abre inventário de forma segura
    openInventoryForPlayer(Player player, Inventory inventory)
    Resultado: Plugin funciona perfeitamente em Paper, Spigot e Folia ---
    7. Sistema de Debug Configurável
    Objetivo: Permitir debug sem poluir logs em produção Configuração (config.yml):
    debug: false  # Padrão: desativado
    Implementação:
    public boolean isDebugEnabled() {
        return getConfig().getBoolean("debug", false);
    }
    
    // Uso
    if (plugin.isDebugEnabled()) {
        plugin.getLogger().info("Debug message");
    }
    Logs de debug incluem: - Detecção de métodos do scheduler Folia - Passos de criação de kits (nome, permissão, itens) - Processamento de eventos de GUI - Detecção de títulos de inventário e fallbacks - Cliques em lã e detecção de data values - Identificação de GUIs por estrutura Resultado: Logs limpos em produção, debug detalhado quando necessário ---
    8. Correção de Bug: Duplicação de Kits
    Problema: Kit sendo criado duas vezes ao confirmar wizard - Um kit com nome correto - Um kit com nome null (falhava) Causa: Double-click processando evento duas vezes Solução:
    // Verificar se já está processando
    if (session.getName() == null) {
        // Sessão já foi processada e limpa
        player.closeInventory();
        return;
    }
    
    // Processar criação do kit
    Kit kit = new Kit(kitName);
    // ... configurar kit ...
    
    // Limpar sessão ANTES de fechar inventário
    plugin.clearCreationSession(player.getUniqueId());
    creationSessions.remove(player.getUniqueId());
    
    // Enviar mensagem e fechar
    player.sendMessage("Kit criado!");
    player.closeInventory();
    Resultado: Kits criados apenas uma vez, sem duplicatas ---
    9. Correção de Bug: Wizard não Respondia a Cliques em 1.8.8
    Problema: Cliques em lã verde/vermelha não faziam nada na tela de permissão Causa: GuiUtil.simpleItem() criava novo ItemStack sem durability, então comparação falhava Solução: ```java // Criar ItemStack com durability diret
    260 downloads
  15. 1.14-SNAPSHOTDK KITS 1.14-SNAPSHOTJan 16, 2026
    added support for English and Brazilian Portuguese - version compatible with all versions
    505 downloads
  16. 1.13-SNAPSHOTDK KITS 1.13-SNAPSHOTJan 16, 2026
    added support for English and Brazilian Portuguese
    35 downloads
  17. 1.12-SNAPSHOTDK KITS 1.12-SNAPSHOTSep 8, 2025
    1402 downloads
  18. 1.11-SNAPSHOTDK KITS 1.11-SNAPSHOTSep 3, 2025
    69 downloads
  19. 1.10-SNAPSHOTDK KITS 1.10-SNAPSHOTAug 28, 2025
    56 downloads
  20. 1.9-SNAPSHOTDK KITS 1.9-SNAPSHOTAug 27, 2025
    26 downloads
  21. 1.8-SNAPSHOTDK KITS 1.8-SNAPSHOTAug 22, 2025
    92 downloads
  22. 1.7-SNAPSHOTDK KITS 1.7-SNAPSHOTAug 22, 2025
    32 downloads
  23. 1.6-SNAPSHOTDK KITS 1.6-SNAPSHOTAug 9, 2025
    90 downloads

Similar projects

Plugin →