MCPlugins
All plugins I am developing for Minecraft Servers using Spigot for fun.
Ask AI about MCPlugins
Powered by Claude · Grounded in docs
I know everything about MCPlugins. Ask me about installation, configuration, usage, or troubleshooting.
0/500
Reviews
Documentation
Minecraft Plugins
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.
Como rodar e testar alterações
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.
Plugin LifeBond
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.
Comandos
/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 DeathMessenger
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.
Plugin MobaCraft
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.
Como criar uma classe
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
