[Java #2] Itens e Primeiro evento

Discussão em 'Botecolandia' iniciado por imperiius, 22 Abril 2017.

Status do Tópico:
Não esta aberto para novas mensagens.
  1. imperiius

    imperiius Craftlandiano
    VIP

    Afiliado:
    4 Março 2014
    Mensagens:
    4,088
    Curtidas Recebidas:
    915
    Curtiu:
    465
    Sexo:
    Masculino
    Cubos:
    349.00
    Nick:
    imperiius
    Estou aqui para dar continuidade nos ensinamentos de programação de plugins ​
    Para quem não leu a parte um lei pois la é falo passo a passo como criar classes projetos etc​
    e eu irei dar continuidade ao código do ultimo tópico​
    Ok então vamos começar​
    =========================================================================================================​
    No ultimo tópico eu ensinei a criar um comando que abriria um inventario contendo um item​
    agora vamos aprimoralo​
    Primeiramente eu ensinei apenas a criar uma varial de item que era no caso o​
    ItemStack espada = new ItemStack(Material.DIAMOND_SWORD);
    Agora vamos adicionar alguma coisas para esse item​
    Primeiro devemos setar o itemMeta dele​
    ItemMeta e = espada.getItemMeta();
    Definimos que "e" sera o iteMeta da variável "Espada"​
    e.setDisplayName("Kit PvP");
    Agora pegamos a variável "e" e dizemos para o plugin setar o nome do nosso item para "Kit PvP" por exemplo​
    Agora vamos adicionar uma lore ao item​
    Lore seria um tipo de descrição do item que fica abaixo do nome ​
    [​IMG]
    Para isso vamos fazer da seguinte forma​

    ArrayList<String> espadalore = new ArrayList<String>();
    espadalore.add("Custa: 1k");
    e.setLore(espadalore);

    Com essas 3 linhas vamos definir que a variável "espadalore"
    definimos que queremos que a lore da dessa variável seja "Custa 1k"
    e que o lore da variável "e" sera "espadalore"



    então ate agora temos nosso código desse jeito


    Se quiser adicionar mais linhas de Lore é só ir adicionando um embaixo da outro


    espadalore.add("1"); LINHA 1
    espadalore.add("2"); LINHA 2
    espadalore.add("3"); LINHA 3


    Agora tento isso vamos criar nosso 1 evento
    oque eu vou ensinar hoje sera para que quando um player click no item do menu de kits
    ele não consiga pegar o itens para si e ele receba alguns itens

    Para isso vamos começar outro código
    ele devera começar a ser escrito
    em cima da ultima chave "}"

    Primeiro devemos colocar o


    @EventHandler

    Para indicar para o plugin que ele deve fazer uma captura de eventos

    agora vamos criar a variável do evento

    public void onClick(InventoryClickEvent e ) {
    }

    esse "onClick" não é obrigatório é apenas a forma padra que eu uso
    mas lembre-se que se for mudar a primeira palavra tem que ser tudo em minúsculo
    e as demais depois dela devem começar com maiúsculo

    Ok esse evento quer dizer que quando ouver um click no inventario ele ira fazer certa ação
    e definimos a variável "e" para isso

    Agora para definir o player que queremos que a ação aconteça devemos fazer da seguinte forma


    Player p = (Player)e.getWhoClicked();

    aqui definimos que "p" sera o Player que clicou no inventário

    e depois vamos adicionar



    if (e.getInventory().getName().equalsIgnoreCase("Kits"))
    e.setCancelled(true);

    Aqui vamos dizer para o plugin
    Se o nome do inventario for "kits" ele deve cancelar a ação
    ou seja o player não vai conseguir retirar o item do inventario

    agora vamos para o proximo


    if(e.getCurrentItem().getType() == Material.DIAMOND_SWORD) {

    Aqui vamos dizer que se o item clicado for o material Diadmon_Sword (Espada de diamante)
    ele devera fazer isso


    p.sendMessage("Kit entregue");
    p.getInventory().setBoots(new ItemStack(Material.DIAMOND_BOOTS));
    p.getInventory().setLeggings(new ItemStack(Material.DIAMOND_LEGGINGS));
    p.getInventory().setChestplate(new ItemStack(Material.DIAMOND_CHESTPLATE));
    p.getInventory().setHelmet(new ItemStack(Material.DIAMOND_HELMET));

    Agora nos definimos a ação que ele ira fazer que sera de
    colocar uma armadura no jogaro

    p.getInvetory().setBoots();

    vai falar para o plugin pegar o inventario do player e setar no local da bota algum item
    no casso uma bota de diamante

    e assim do mesmo com os outros
    sendo os outros calça, peitoral, capacete


    por fim vamos dar uma espada para o player
    como vocês já sabem criar um item vou só falar como dar para o player
    devera ser feito assim

    p.getInventory().setItem((SLOT QUE QUER COLOCAR), (ITEM QUE QUER COLOCAR));

    ou você pode fazer assim

    p.getInventory().addItem(ITEM QUE QUER COLOCAR);

    a diferença é que no 1 você pode decidir em que slot o item ira ficar
    já no 2 o item sera colocado onde tiver espaço

    e finalize com um

    p.closeInventory();

    para fechar o menu de kits


    então temos nosso código assim:












    Estamos quase terminando só falta uma coisa​
    temos que registrar os eventos do nosso plugin para isso devemos fazer o seguinte​
    do lato do " extends JavaPlugin"
    adicione: "implements Listener"​
    e no onEnable devemos adicionar​

    getServer().getPluginManager().registerEvents(this, this);

    Isso ira indicar para o plugin registrar todos os eventos que acontecerem na classe principal

    então vamos terminar com nosso código assim


    E pronto
    só exportar e testar no seu server


    Então chegamos e o fim de outro tópico​
    Novamente perguntas,ideias,criticas Mandem um MP​
    ou pergunte aqui mesmo​
    Se gostou do tópico da um comente ai :D
     
    Fioti curtiu isso.
  2. zNightLT

    zNightLT Bom

    Afiliado:
    9 Fevereiro 2016
    Mensagens:
    2,669
    Curtidas Recebidas:
    134
    Curtiu:
    55
    Cubos:
    3,102.52
    Nick:
    zNightLT
    Clan:
    a2W
    Belo tópico =D Obrigado estou aprendendo
     
  3. imperiius

    imperiius Craftlandiano
    VIP

    Afiliado:
    4 Março 2014
    Mensagens:
    4,088
    Curtidas Recebidas:
    915
    Curtiu:
    465
    Sexo:
    Masculino
    Cubos:
    349.00
    Nick:
    imperiius
    Fala que ta aprendendo mas ate saiu do tópico né safado
    [​IMG]
     
    BileuMisera curtiu isso.
  4. CubeMachine

    CubeMachine Excelente

    Afiliado:
    1 Janeiro 2017
    Mensagens:
    3,114
    Curtidas Recebidas:
    336
    Curtiu:
    0
    Localização:
    Cubando
    Cubos:
    32.00
    Nick:
    CubeMachine
    Clan:
    Nenhum
    Ta cada vez melhor man , Boa
    continua , quero aprender mais ;)
     
  5. zNightLT

    zNightLT Bom

    Afiliado:
    9 Fevereiro 2016
    Mensagens:
    2,669
    Curtidas Recebidas:
    134
    Curtiu:
    55
    Cubos:
    3,102.52
    Nick:
    zNightLT
    Clan:
    a2W
    mto complicado desisto ksksks
     
  6. imperiius

    imperiius Craftlandiano
    VIP

    Afiliado:
    4 Março 2014
    Mensagens:
    4,088
    Curtidas Recebidas:
    915
    Curtiu:
    465
    Sexo:
    Masculino
    Cubos:
    349.00
    Nick:
    imperiius
    Só pelo nome é o baner dos dois já dava pra saber que só queria aquele dubo
     
  7. WiBrahhORG

    WiBrahhORG Razoavel
    Banido

    Afiliado:
    16 Abril 2016
    Mensagens:
    989
    Curtidas Recebidas:
    97
    Curtiu:
    0
    Sexo:
    Masculino
    Cubos:
    1,039.00
    Nick:
    xWiBr4hh
    Clan:
    No Existenty
    Mt bom continue assim mlk

    Enviado de meu LG-E455f usando Tapatalk
     
  8. Fioti

    Fioti Neutro

    Afiliado:
    7 Abril 2017
    Mensagens:
    93
    Curtidas Recebidas:
    8
    Curtiu:
    0
    Sexo:
    Masculino
    Cubos:
    145.00
    Nick:
    Dinnamic
    Clan:
    ~~
  9. CubeMachine

    CubeMachine Excelente

    Afiliado:
    1 Janeiro 2017
    Mensagens:
    3,114
    Curtidas Recebidas:
    336
    Curtiu:
    0
    Localização:
    Cubando
    Cubos:
    32.00
    Nick:
    CubeMachine
    Clan:
    Nenhum
    Para de chorar man , só de responder algo positivo no teu tópico
    ja é um favor , tu tem q entender q n é todo mundo q se interessa ;-;
     
  10. imperiius

    imperiius Craftlandiano
    VIP

    Afiliado:
    4 Março 2014
    Mensagens:
    4,088
    Curtidas Recebidas:
    915
    Curtiu:
    465
    Sexo:
    Masculino
    Cubos:
    349.00
    Nick:
    imperiius
    Credo tava só Zoando
     
    CubeMachine curtiu isso.
  11. Migunferox

    Migunferox Excelente
    VIP

    Afiliado:
    4 Novembro 2012
    Mensagens:
    1,071
    Curtidas Recebidas:
    262
    Curtiu:
    136
    Sexo:
    Masculino
    Localização:
    Goiânia - GO
    Cubos:
    1,324.00
    Nick:
    MigunMigun
    Ai sim negoow... Muito bom
     
  12. nicolas328

    nicolas328 Neutro

    Afiliado:
    24 Setembro 2013
    Mensagens:
    220
    Curtidas Recebidas:
    25
    Curtiu:
    0
    Sexo:
    Masculino
    Cubos:
    253.00
    Nick:
    SkullMacMiner
    Algum dia eu tento aprender, muito difícil pra minha cabeça com um amendoim dentro. :p
     
  13. imperiius

    imperiius Craftlandiano
    VIP

    Afiliado:
    4 Março 2014
    Mensagens:
    4,088
    Curtidas Recebidas:
    915
    Curtiu:
    465
    Sexo:
    Masculino
    Cubos:
    349.00
    Nick:
    imperiius
    lendo e procurando e tentando você aprende tudo
     
  14. imperiius

    imperiius Craftlandiano
    VIP

    Afiliado:
    4 Março 2014
    Mensagens:
    4,088
    Curtidas Recebidas:
    915
    Curtiu:
    465
    Sexo:
    Masculino
    Cubos:
    349.00
    Nick:
    imperiius
    Se alguém aqui realmente leu e fez posta como ficou in game e o codigo
     
  15. Asjown

    Asjown Razoavel
    Banido

    Afiliado:
    28 Novembro 2017
    Mensagens:
    825
    Curtidas Recebidas:
    82
    Curtiu:
    31
    Sexo:
    Masculino
    Localização:
    São Paulo (SP)
    Cubos:
    904.00
    Nick:
    Asjown
    Clan:
    Night Raid
    Discord:
    Asjown#6901
    Gostei do tutorial, porém, para não ter nenhum erro ao clicar fora do inventário ou até mesmo em um item nulo você deveria adicionar esse código em baixo do e.setCancelled(true):​
    if(e.getCurrentItem() == null) return;​
    if(!e.getCurrentItem().hasItemMeta()) return;​
    Atenciosamente,​
    Asjown​
     
Status do Tópico:
Não esta aberto para novas mensagens.