Ir para conteúdo

Como fazer com que um item seja arremessado usando plugins.


zzFireGOD

Posts Recomendados

Olá. Estou tentando aprender como criar plugins, e já consegui criar coisas básicas como dar um comando e adicionar itens ao inventario do player, ou adicionar efeitos no player, mas quero ir mais além e criar um menu gui com itens especiais como no Mambaitensespeciais, mas logo de cara quando fui criar o primeiro item, a bola de fogo, já me deparei com um problema, como faço para que quando o player clicar com o botão direito do mouse na bola de fogo, ela seja arremessada ? Se conseguir fazer um plugin e mandar foto agradeço, mas se conseguir só explicar tá bom também.

zzFireGOD. 

Link para o comentário
Compartilhar em outros sites

    @EventHandler
    public void bolinhoDeChuva(PlayerInteractEvent e){
        Player p = e.getPlayer();
        if(e.getAction().equals(Action.RIGHT_CLICK_AIR) || e.getAction().equals(Action.RIGHT_CLICK_BLOCK)) {
            if(p.getInventory().getItemInMainHand().getType().equals(Material.FIRE_CHARGE)) {
                p.getLocation().getDirection().normalize().multiply(1);
                p.launchProjectile(SmallFireball.class);
            }
        }
    }

 

Link para o comentário
Compartilhar em outros sites

1 hora atrás, Keniaaa disse:

    @EventHandler
    public void bolinhoDeChuva(PlayerInteractEvent e){
        Player p = e.getPlayer();
        if(e.getAction().equals(Action.RIGHT_CLICK_AIR) || e.getAction().equals(Action.RIGHT_CLICK_BLOCK)) {
            if(p.getInventory().getItemInMainHand().getType().equals(Material.FIRE_CHARGE)) {
                p.getLocation().getDirection().normalize().multiply(1);
                p.launchProjectile(SmallFireball.class);
            }
        }
    }

 

Bolinho de chuva ksksks gostei parabens!

Link para o comentário
Compartilhar em outros sites

Acho que ela já respondeu, mas se você quiser algo a mais você pode fazer o seguinte:

"Explore" o  termo p ali e veja as opções, ali tem muita e você pode ir testando OU até mesmo ir buscar na documentação do getPlayer na classe do evento em si.

Entretanto, o código é esse: 

Player jogador = e.getPlayer();
jogador.launchProjectile(/AQUI VC BOTA A CLASSE DO SEU PROJÉTIL/);

//como o camarada fez ali em cima, você pode dar um normalize() na direção e deixar mais específico a direcionativa do projétil.
// no seu caso, acredito que é LargeFireball, SmallFireball, escolha uma das duas e bote ali .class, onde eu indiquei.

image.png

Link para o comentário
Compartilhar em outros sites

2 horas atrás, MinoLobs disse:
2 horas atrás, Keniaaa disse:


    @EventHandler
    public void bolinhoDeChuva(PlayerInteractEvent e){
        Player p = e.getPlayer();
        if(e.getAction().equals(Action.RIGHT_CLICK_AIR) || e.getAction().equals(Action.RIGHT_CLICK_BLOCK)) {
            if(p.getInventory().getItemInMainHand().getType().equals(Material.FIRE_CHARGE)) {
                p.getLocation().getDirection().normalize().multiply(1);
                p.launchProjectile(SmallFireball.class);
            }
        }
    }

 

Fiz isso que se falou, mas da alguns erros no Eclipse,  sabe o que são esses erros ?

 

Gamesborad1.png

Link para o comentário
Compartilhar em outros sites

2 horas atrás, Savitar disse:

Muda pra if (p.getInventory().getItemInHand().getType().equals(Material.FIREBALL)) {

 

O correto é getItemInHand e não getItemInMainHand;

Não é FIRE_CHARGE e sim FIREBALL.

Fiz na 1.13.2 >.> esqueci de mencionar kkkk

getItemInHand esta obsoleto desda version 1.8 se eu me lembre

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

12 horas atrás, Keniaaa disse:

Fiz na 1.13.2 >.> esqueci de mencionar kkkk

getItemInHand esta obsoleto desda version 1.8 se eu me lembre

Fiz as alterações como o Savitar e você falou, mas continuo não arremessando a Bola De Fogo, vê mais alguma coisa errada ?

Gamesborad2.png

Link para o comentário
Compartilhar em outros sites

1 hora atrás, zzFireGOD disse:

Fiz as alterações como o Savitar e você falou, mas continuo não arremessando a Bola De Fogo, vê mais alguma coisa errada ?

Gamesborad2.png

    @Override
    public void onEnable() {
        Bukkit.getServer().getPluginManager().registerEvents(this, this);
    }

    @Override
    public void onDisable() {
    }
    

Não registrou o evento.

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

8 horas atrás, Keniaaa disse:

    @Override
    public void onEnable() {
        Bukkit.getServer().getPluginManager().registerEvents(this, this);
    }

    @Override
    public void onDisable() {
    }
    

Não registrou o evento.

Desculpa incomodar de novo, mas agora to tentando fazer o plugin de Olho de deus, e ta quase tudo certo, ela ta ativando e tals, mas tipo, eu quero que o player só entre no modo espectador quando ele clicar no botão direito em cima do EYE_OF_ENDER (O que representa o olho de deus) mas quando clico com o botão direito ou esquerdo sem o olho de deus no inventário, vou pro modo espectador, sabe me dizer oque está acontecendo ? Gamersboard3.png.2dccf18102ef36dc662f3f63346fbcb4.png

Link para o comentário
Compartilhar em outros sites

1 hora atrás, zzFireGOD disse:

Desculpa incomodar de novo, mas agora to tentando fazer o plugin de Olho de deus, e ta quase tudo certo, ela ta ativando e tals, mas tipo, eu quero que o player só entre no modo espectador quando ele clicar no botão direito em cima do EYE_OF_ENDER (O que representa o olho de deus) mas quando clico com o botão direito ou esquerdo sem o olho de deus no inventário, vou pro modo espectador, sabe me dizer oque está acontecendo ? Gamersboard3.png.2dccf18102ef36dc662f3f63346fbcb4.png

Você ta utilizando o simbolo de OU

 

||  =  OU

&& = E

 

so mudar ?

@EDIT : No seu if ali.. coloca no final um bloco >> { e fecha no final da condição.. 

	@EventHandler
	public void onClick(PlayerInteractEvent e) {
		Player p = e.getPlayer();
		if(p.getItemInHand().getType() == Material.ENDER_EYE && e.getAction().equals(Action.RIGHT_CLICK_BLOCK)) {
			p.setGameMode(GameMode.SPECTATOR);
		}	
	}

 

@EDIT 2 :  Pesquisa sobre:  Operadores aritméticos
                                                 Operadores de incremento e decremento
                                                 Operadores de igualdade
                                                 Operadores relacionais
                                                 Operadores lógicos
                                                 Precedência de operadores

 

Vai te ajudar ?

 

 

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

19 horas atrás, Keniaaa disse:

Você ta utilizando o simbolo de OU

 

||  =  OU

&& = E

 

so mudar ?

@EDIT : No seu if ali.. coloca no final um bloco >> { e fecha no final da condição.. 


	@EventHandler
	public void onClick(PlayerInteractEvent e) {
		Player p = e.getPlayer();
		if(p.getItemInHand().getType() == Material.ENDER_EYE && e.getAction().equals(Action.RIGHT_CLICK_BLOCK)) {
			p.setGameMode(GameMode.SPECTATOR);
		}	
	}

 

@EDIT 2 :  Pesquisa sobre:  Operadores aritméticos
                                                 Operadores de incremento e decremento
                                                 Operadores de igualdade
                                                 Operadores relacionais
                                                 Operadores lógicos
                                                 Precedência de operadores

 

Vai te ajudar ?

 

 

Consegui fazer o que eu queria, mas agora to em busca de fazer um item que solta raio, plugin ta ativando, no eclipse ta dando nenhum erro, mas mesmo assim quando clicko na blaze rod não cai o raio, sabe o que posso pesquisar pra me ajudar a fazer esse tipo de plugin ? gamersboard4.png.a3a9ac7e9897310f9d9a19266c3e17d2.png

Link para o comentário
Compartilhar em outros sites

20 horas atrás, Keniaaa disse:

Você ta utilizando o simbolo de OU

 

||  =  OU

&& = E

 

so mudar ?

@EDIT : No seu if ali.. coloca no final um bloco >> { e fecha no final da condição.. 


	@EventHandler
	public void onClick(PlayerInteractEvent e) {
		Player p = e.getPlayer();
		if(p.getItemInHand().getType() == Material.ENDER_EYE && e.getAction().equals(Action.RIGHT_CLICK_BLOCK)) {
			p.setGameMode(GameMode.SPECTATOR);
		}	
	}

 

@EDIT 2 :  Pesquisa sobre:  Operadores aritméticos
                                                 Operadores de incremento e decremento
                                                 Operadores de igualdade
                                                 Operadores relacionais
                                                 Operadores lógicos
                                                 Precedência de operadores

 

Vai te ajudar ?

 

E só mais uma pergunta, onde pesquiso essas coisas

 Operadores aritméticos
 Operadores de incremento e decremento
 Operadores de igualdade
 Operadores relacionais
 Operadores lógicos
 Precedência de operadores

 

Link para o comentário
Compartilhar em outros sites

5 horas atrás, zzFireGOD disse:

Consegui fazer o que eu queria, mas agora to em busca de fazer um item que solta raio, plugin ta ativando, no eclipse ta dando nenhum erro, mas mesmo assim quando clicko na blaze rod não cai o raio, sabe o que posso pesquisar pra me ajudar a fazer esse tipo de plugin ? gamersboard4.png.a3a9ac7e9897310f9d9a19266c3e17d2.png

 

Desculpa a demora da resposta ;/ tentei achar uma forma boa.. e fracassei kkkk

 

@EventHandler
    public void fogoNaBunda(PlayerInteractEvent e) {
        Player player = e.getPlayer();
        if (player.getItemInHand().getType() == Material.BLAZE_ROD) {
            Block bl = player.getTargetBlock(null, 50);
            for(Entity ety : bl.getChunk().getEntities()){
                if(ety instanceof Player && bl.getLocation().distance((ety.getLocation())) < 2){
                    player.getWorld().strikeLightning(ety.getLocation());
                }
            }
        }
    }

 

Realmente é um código meio porco >.> quem achar uma solução melhor ou dicas.. so citar

 

? queimei metade do meu mapa kk

Link para o comentário
Compartilhar em outros sites

1 hora atrás, Keniaaa disse:

 

Desculpa a demora da resposta ;/ tentei achar uma forma boa.. e fracassei kkkk

 


@EventHandler
    public void fogoNaBunda(PlayerInteractEvent e) {
        Player player = e.getPlayer();
        if (player.getItemInHand().getType() == Material.BLAZE_ROD) {
            Block bl = player.getTargetBlock(null, 50);
            for(Entity ety : bl.getChunk().getEntities()){
                if(ety instanceof Player && bl.getLocation().distance((ety.getLocation())) < 2){
                    player.getWorld().strikeLightning(ety.getLocation());
                }
            }
        }
    }

 

Realmente é um código meio porco >.> quem achar uma solução melhor ou dicas.. so citar

 

? queimei metade do meu mapa kk

Só uma pergunta, onde você aprendeu tudo que já me ensinou, não sei se o que já me falou e coisa avançado, mas sei la, já e bastante coisa, onde se aprendeu ?
 

 

 

Link para o comentário
Compartilhar em outros sites

1 hora atrás, zzFireGOD disse:

Só uma pergunta, onde você aprendeu tudo que já me ensinou, não sei se o que já me falou e coisa avançado, mas sei la, já e bastante coisa, onde se aprendeu ?
 

 

 

Então kkk, eu comecei estudar Java no YT.. pra quem ta iniciando acho que é até um bom começo, mais depois fui pros livros... mas o mais importante é praticar.. recomendo o site URI, la tem vários exercícios bem legais kk, alem de só aprender o código em si.. pesquise o porque de cada um(digo.. explore-as).. Logica é bem mais importante que linguagem, linguagem é so ferramenta, um site que eu gostava bastante também é o GUJ, amava ler duvidas que tinham uma boa discussão sobre o código.. 

 

E use a documentação da API que estiver usando pra programar seu server, la você vai ter meio que um rumo.

Essa aqui é da 1.15

https://hub.spigotmc.org/javadocs/spigot/overview-summary.html

 

@EDIT :  Sim, especializar em uma linguagem é importante também, mas também saber um pouco de tudo, te faz um dev melhor..

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

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...