Ir para conteúdo
Vagas na STAFF ×

Criando eventos ao clicar em um item


Guest RenaGamerHD

Posts Recomendados

Guest RenaGamerHD

UAcVYf6.png

 
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
Ce9mwGB.png
 
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
dfdaCe6.png
 
E lá no nome do pacote coloque algo como me.seunome e clique em Finish
Agora iremos criar a classe, vá em New > Class
 
MSVbD5w.png
 
 
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
 
UBiGwNe.png
 
 
Agora precisamos reconhecer que o projeto é um plugin, complemente a classe com ' extends JavaPlugin ' e com o mouse em cima desse JavaPlugin importe-o
 
XZGBNTD.png> dCHXhYc.png
 
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
vjltGsl.png
 
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
rNS07IY.png
 
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:
 GDTlXbi.png
 
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
JOfslzj.png
 
Agora seu plugin foi exportado e é só testar.
a15k6UQ.png
 
Como eu disse, existem inúmeras possibilidades, você pode fazer o que quiser.
 
Caso quiserem posso trazer mais tutoriais, e se alguem quiser eu ensino a fazer com que o diamante seja dado ao entrar no server e ao renascer também.
 
Esse foi o tutorial, se você gostou deixe seu UP pois deu bastante trabalho para criá-lo, escrever tudo, etc..
N sei quem criou um amigo meu  me passou assim
Editado por RenaGamerHD
Link para o comentário
Compartilhar em outros sites

CTRL C + CTRL V se voce copiasse do seu amigo nao ia estar essa borda envolta do seu topico , e essa borda so aparece se for copiado de um forum , ipb tambem , pelo que eu saiba se alguem encinar pelo skype e vc colocar nao ira apareçer bordas

 

e se voce nao criou nao diga que escreveu tudo .-. 

Esse foi o tutorial, se você gostou deixe seu UP pois deu bastante trabalho para criá-lo, escrever tudo, etc..

Editado por Enthu
Link para o comentário
Compartilhar em outros sites

Totalmente copiado do meu amigo Fefos

Para quem queira saber a fonte é: www.minecraftgames.com.br/forum

Inclusive o próprio WeAreStars copiou alguns tópicos feitos por mim la,porem ele ao menos deixou os créditos.

Editado por Wheeze
Link para o comentário
Compartilhar em outros sites

Participe da Conversa

Você pode postar agora e se cadastrar mais tarde. Se você tiver uma conta, a class='ipsType_brandedLink' href='https://gamersboard.com.br/login/' data-ipsDialog data-ipsDialog-size='medium' data-ipsDialog-title='Sign In Now'>acesse agora para postar com sua conta.
Observação: sua postagem exigirá aprovação do moderador antes de ficar visível.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.

Processando...
×
×
  • Criar Novo...