Todos os plugins que estou desenvolvendo por diversão para servidores de Minecraft usando Spigot. Se quiser aprender a programar plugins, recomendo pela IDE IntelliJ, que facilita muito, mas pode ser feito com IDEs diversas, como Eclipse.
Qualquer ajuda é bem vinda então fique a vontade pra dar Pull Requests, há variás ideias de plugin nesse doc que podem ser implementadas.
Para compilar os plugins basta rodar o arquivo Main de cada um com a biblioteca do spigot como dependência externa.
Para rodar os plugins você deve ter um servidor, online ou local, e adicionar o arquivo jar que compilou na pasta plugins, o servidor carregará o plugin ao iniciar novamente.
Tem o objetivo de compartilhar o dano entre players do mesmo grupo ou "vínculo". Se um jogador do mesmo vínculo que você recebe dano, você recebe o mesmo dano, mas cada um recupera a vida baseado na própria fome.
/entrar <nome>
: Entra no vínculo , depois de criá-lo, caso não exista/vinculos
: Exibe vínculos existentes (vínculos são automaticamente deletados quando todos os jogadores saem dele)/meuvinculo
: Informa vínculo do player/sair
: Retira o player de seu vínculo atual
Plugin extremamente simples idealizado pelo Nikolas. Consiste em alterar as mensagens de morte enviadas no chat, enviando a posição em que o jogador morreu.
Pensado tanto para mundos de sobrevivência quanto para batalhas PvP em arena, esse plugin disponibiliza várias opções de classes para o player assim que começa a jogar no servidor. Cada classe tem vantagens e desvantagens para sobreviver e explorar, oferencendo várias formas de jogar o jogo.
Se você quiser criar uma nova classe para o plugin é bem simples de começar. (O termo 'classe' pode ficar ambíguo então diferenciarei usando 'classe java' para as classes programáveis em java e 'classe jogável' para as classes que o jogador escolhe para jogar)
-
Crie uma classe java que implemente a classe abstrata IClass no pacote me.jonata.mobacraft.classes, sobrescrevendo seus métodos como estão descritos em IClass.java
-
A principal forma de adicionar funcionalidades é através de eventos. Para um método ser reconhecido pelo jogo como um evento ele precisa de quatro coisas:
-
Ter a notação @EventHandler antes da assinatura do método
-
Ter como único parâmetro um objeto que herda de org.bukkit.event.Event (e. g. PlayerJoinEvent, EntityDamageEvent)
-
Estar em uma classe java que implementa org.bukkit.event.Listener (a classe abstrata IClass já herda de Listener, portanto não é preciso implementar novamente)
-
Esta classe Listener ser registrada pelo plugin (mostro como no item 4 da lista)
-
OBS: O nome do método do evento é irrelevante
-
Exemplo:
@EventHandler public void onPlayerConnect(PlayerJoinEvent e) { Player p = e.getPlayer(); if(Main.getPlayerClass(p) != ClassID.SpeedRunner) return; p.addPotionEffect(new PotionEffect(PotionEffectType.SPEED, Integer.MAX_VALUE, 0)); } // Este evento é chamado quando um jogador se conecta ao servidor, ele verifica se o // jogador escolheu a classe SpeedRunner e, caso positivo, adiciona a ele velocidade // 1 por tempo infinito
-
-
Adicionar sua classe jogável ao enum me.jonata.mobacraft.classes.ClassID
-
Ir à Main, no método onEnable() e duplicar a linha
classes.add(new Speedrunners());
inicializando a classe java que você criou ao invés de "Speedrunner"
Pronto, sua classe será reconhecida como uma classe jogável no plugin, aparecendo na GUI de escolha de classes e chamando seus eventos.
OBS: lembre-se que seus eventos são chamados para qualquer player, então verifique, como no exemplo, se o player que acionou o evento pertence à sua classe jogável antes de alterá-lo. Para a maioria dos eventos isso pode ser feito com
Main.getPlayerClass(player) == ClassID.MinhaClasse
// ou
Main.getPlayerClass(player.getName()) == ClassID.MinhaClasse