Olá pessoal, dessa vez trago um tutorial de programação que vai ensinar como
criar um evento, no caso do tutorial o evento é que ao clicar em um diamante o player envie uma mensagem no chat dizendo Olá.
Vamos ao tutorial.
Primeiro vamos organizar nosso projeto,
clique com o botão direito no espaço branco do Eclipse e crie um projeto
Nomeie o projeto como quiser e clique em Finish
Agora teremos que criar um pacote, clique com o botão direito no projeto e vá em New > Package
E lá no nome do pacote coloque algo como me.seunome e clique em Finish
Agora iremos criar a classe, vá em New > Class
Nomeie a classe como quiser.
Bom, agora temos que importar a jar do craftbukkit, para isso clique com o botão direito no projeto e vá em Properties
Lá, clique em Java Build Path > Add External JARs...
E importe o arquivo do craftbukkit
Agora precisamos reconhecer que o projeto é um plugin, complemente a classe com ' extends JavaPlugin ' e com o mouse em cima desse JavaPlugin importe-o
>
Agora precisamos criar uma nova classe para o Evento(Ou seja, o que vai detectar que ao clicar no item vai executar o comando)
Crie uma nova classe no mesmo pacote chamada Events
Nessa classe, implemente Listener e importe-o
O código estará assim:
package me.fefos; import org.bukkit.event.Listener; public class Events implements Listener { }
Agora nessa classe Events vamos à criação do evento.
Comece digitando @EventHandler e criando uma função public void com o nome que quiser
Depois disso importe o EventHandler passando o mouse sobre ele e clicando em Import blablabla..
Ficará mais ou menos assim:
package me.fefos; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; public class Events implements Listener { @EventHandler public void onDClick }
Agora vamos dizer que é um evento em que o player interage com o item, escrevendo ali entre parenteses 'PlayerInteractEvent' e dando um nome( no caso event) para ele.
package me.fefos; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerInteractEvent; public class Events implements Listener { @EventHandler public void onDiamondClick(PlayerInteractEvent event) { } }
Lembre-se de criar a chave ' { '
Agora vamos criar um player para o evento, digite ' Player p = event.getPlayer(); '
Como pode ver, ' p ' é o nome dado ao player, e com o ' event.getPlayer() ' estamos fazendo com que o evento pegue o player.
Estará assim:
package me.fefos; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerInteractEvent; public class Events implements Listener { @EventHandler public void onDClick(PlayerInteractEvent event) { Player p = event.getPlayer(); } }
Agora temos que fazer com que "Se o player clicar no ar ou em um bloco com tal item na mão"
Para isso faça da seguinte forma:
if (p.getItemInHand().getType() == Material.DIAMOND) {
if (e.getAction() == Action.RIGHT_CLICK_AIR || e.getAction() == Action.RIGHT_CLICK_BLOCK) {
Vou explicar um pouco isso acima:
if significa Se
p.getItemInHand() : Significa caso o player tenha o item na sua mão
getType() == Material.DIAMOND : Significa que caso o tipo do item seja == ao material Diamond
if(event.getAction() == Action.RIGHT_CLICK_AIR : Significa que caso a ação do evento seja igual a clicar no ar
|| : Significa OU
event.getAction() == Action.RIGHT_CLICK_BLOCK) : Significa que caso a ação do evento seja igual a clicar em um bloco
Agora ele já detectou que ao clicar com um diamante no ar ou em um bloco ele irá executar uma ação
Agora é só criar a ação, no meu caso vai ser o player digitar "Olá" no chat, mas você pode trocar para o que quiser, como um comando por exemplo
Para fazer isso é só colocar um comando como p.chat("Olá");
Existem inúmeras possibilidades,
como digitar uma mensagem, dar um item ao player, habilitar o voo ou o
gamemode do player, tudo que você imaginar.
Seu código na classe Events estará como o abaixo:
package me.fefos; import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.block.Action; import org.bukkit.event.player.PlayerInteractEvent; public class Events implements Listener { @EventHandler public void onDClick(PlayerInteractEvent event) { Player p = event.getPlayer(); if (p.getItemInHand().getType() == Material.DIAMOND) { if (event.getAction() == Action.RIGHT_CLICK_AIR || event.getAction() == Action.RIGHT_CLICK_BLOCK) { p.chat("Olá"); } } } }
Nossa parte de eventos já está pronta, porém ainda precisamos mexer na classe principal que é a classe Tuto
Vamos digamos que fazer a classe Events privada com o nome ali de Eventos
Para isso digitamos abaixo do nosso ' public class Tuto extends JavaPlugin { '
algo como:
private Events Eventos = new Events();
Ou seja, colocamos a classe Events com um nome ' Eventos ' dentro da classe principal Tuto
Lembrando de importar a classe Events para ali, digitando nos imports um ' import me.fefos.Events; '
Agora vamos criar uma função chamada events na nossa classe principal e finalmente REGISTRAR os eventos da classe Events ali
Em uma linha digite:
public void events() {
PluginManager pm = getServer().getPluginManager();
pm.registerEvents(Eventos, this);
Isso quer dizer que na função
events, ele vai pegar o PluginManager e registrar o evento, no caso
todos os eventos dentro da classe Events
Lembrando que ali onde diz (Eventos, this); deve conter o mesmo nome 'Eventos' do private Events Eventos...
Seu código da classe Tuto deverá estar assim:
package me.fefos; import me.fefos.Events; import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.java.JavaPlugin; public class Tuto extends JavaPlugin { private Events Eventos = new Events(); public void events() { PluginManager pm = getServer().getPluginManager(); pm.registerEvents(Eventos, this); } }
Agora é só fazer com que essa função seja ativada quando o plugin ligar, para isso vamos subir um pouco o código e
criar a função onEnable, digitando:
public void onEnable() {
events();
Isso quer dizer que ao ligar o plugin a função events onde temos o registro será ligada.
Lembre-se de fechar essa chave que foi aberta acima
Seu código finalmente estará assim:
package me.fefos; import me.fefos.Events; import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.java.JavaPlugin; public class Tuto extends JavaPlugin { private Events Eventos = new Events(); public void onEnable() { events(); } public void events() { PluginManager pm = getServer().getPluginManager(); pm.registerEvents(Eventos, this); } }
Agora só precisamos criar o plugin.yml.
Para isso, vamos em nosso plugin e em New > File
O nome desse arquivo deverá ser plugin.yml
Ali colocaremos as informações, siga meu padrão:
name: Tuto
main: me.fefos.Tuto
version: 1.0
description:
commands:
No name coloque o nome de seu projeto/plugin
Em main coloque a classe principal, no meu caso Tuto também
A versão coloque o que quiser
Descrição que quiser
E os comandos caso seu plugin teja, o meu não tem, então vou deixar vazio.
Salve todas as classes e o arquivo,
e clique com o botão direito no projeto e vá em Export...
Lá selecione Java>JAR File e clique em Next:
Ali, selecione o projeto, e lembre-se de marcar todos os arquivos dele,
também clique em Browse e selecione o local de salvamento no plugin, no meu caso, na pasta plugins do meu servidor.
E clique em Finish
Agora seu plugin foi exportado e é só testar.
Como eu disse, existem inúmeras possibilidades, você pode fazer o que quiser.
Gostou? Partilhe com os seus amigos.
0 comentários:
Enviar um comentário