VictorHeaven Postado Julho 7, 2017 Denunciar Compartilhar Postado Julho 7, 2017 Olá guys, Queria saber como que: 1. Ao clicar com botão direito em uma entidade (villager) com X nome, acontecer algo 2. Ao bater em uma entidade (villager) com X item (espada) ecom X nome, matar a entidade (villager) Caso esteja se perguntando: "Esses cara não pesquisa" e tals... Eu já pesquisei muito e não encontrei, obrigado a quem for das os exemplos. Link para o comentário Compartilhar em outros sites More sharing options...
smgabriel Postado Julho 7, 2017 Denunciar Compartilhar Postado Julho 7, 2017 (editado) 1 - Utilize o evento PlayerInteractAtEntityEvent 2 - Utilize o evento EntityDamageByEntityEvent Se não conseguiu, olhe os exemplos: @EventHandler public void onClickNPC(PlayerInteractAtEntityEvent e) { Entity et = e.getRightClicked(); if(et != null && et instanceof Villager && et.getName() != null && et.getName().equalsIgnoreCase("Aderbal")) { e.getPlayer().sendMessage("O SAM É BRABO"); } } @EventHandler public void onDamageNPC(EntityDamageByEntityEvent e) { Entity et = e.getEntity(); if(e.getDamager() instanceof Player) { if(et instanceof Villager) { Player dmg =(Player)e.getDamager(); ItemStack item = dmg.getItemInHand(); if(item != null && item.getType().equals(Material.STONE_SWORD) && item.getItemMeta() != null && item.getItemMeta().getDisplayName() != null && item.getItemMeta().getDisplayName().equalsIgnoreCase("HIT KILL")){ et.remove(); } } } } Ah, não testei. Editado Julho 7, 2017 por GabrielSm_ Link para o comentário Compartilhar em outros sites More sharing options...
Gcunha Postado Julho 7, 2017 Denunciar Compartilhar Postado Julho 7, 2017 Eu já não te disse? Link para o comentário Compartilhar em outros sites More sharing options...
VictorHeaven Postado Julho 7, 2017 Autor Denunciar Compartilhar Postado Julho 7, 2017 Eu já não te disse? Se disse, eu não entendi :_: mals Link para o comentário Compartilhar em outros sites More sharing options...
VictorHeaven Postado Julho 7, 2017 Autor Denunciar Compartilhar Postado Julho 7, 2017 1 - Utilize o evento PlayerInteractAtEntityEvent 2 - Utilize o evento EntityDamageByEntityEvent Se não conseguiu, olhe os exemplos: @EventHandler public void onClickNPC(PlayerInteractAtEntityEvent e) { Entity et = e.getRightClicked(); if(et != null && et instanceof Villager && et.getName() != null && et.getName().equalsIgnoreCase("Aderbal")) { e.getPlayer().sendMessage("O SAM É BRABO"); } } @EventHandler public void onDamageNPC(EntityDamageByEntityEvent e) { Entity et = e.getEntity(); if(e.getDamager() instanceof Player) { if(et instanceof Villager) { Player dmg =(Player)e.getDamager(); ItemStack item = dmg.getItemInHand(); if(item != null && item.getType().equals(Material.STONE_SWORD) && item.getItemMeta() != null && item.getItemMeta().getDisplayName() != null && item.getItemMeta().getDisplayName().equalsIgnoreCase("HIT KILL")); Bukkit.getWorld(et.getWorld().getName()).getEntities().remove(et); } } } Ah, não testei. Então... deu certo e não deu 1. @EventHandler public void aoClicarNoNpc(PlayerInteractAtEntityEvent e) { Player p = e.getPlayer(); if (e.getRightClicked() != null) { if (e.getRightClicked() instanceof Villager) { if (e.getRightClicked().getName() != null) { if (e.getRightClicked().getName() .equalsIgnoreCase(getConfig().getString("Npc.Nome").replaceAll("&", "§"))) { e.setCancelled(true); p.openInventory(invPrincipal(p)); } } } } } Tentei isso e está funcionando com "defeito", ele consegue executar o que tem no método "invPrincipal" mais não abre a GUI, abre o negócio de trocar com aldeão e no caso 2. ele não mata o villager eu uso esse método para não conseguirem matar ele de nenhuma forma @EventHandler public void aoTentarBater(EntityDamageEvent e) { if (e.getEntity() instanceof Villager) { if (e.getEntity().getName() != null) { if (e.getEntity().getName().equalsIgnoreCase(getConfig().getString("Npc.Nome").replaceAll("&", "§"))) { e.setCancelled(true); } } } } mais quando bato com a espada com o código q você mandou, não funciona e da erro no console erro: [23:31:48 ERROR]: Could not pass event EntityDamageByEntityEvent to vBancoCentral v1.0 org.bukkit.event.EventException at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:310) ~[spigot-1.8.8-R0.1-SNAPSHOT.jar:git-Spigot-21fe707-e1ebe52] at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[spigot-1.8.8-R0.1-SNAPSHOT.jar:git-Spigot-21fe707-e1ebe52] at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502) [spigot-1.8.8-R0.1-SNAPSHOT.jar:git-Spigot-21fe707-e1ebe52] at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:487) [spigot-1.8.8-R0.1-SNAPSHOT.jar:git-Spigot-21fe707-e1ebe52] at org.bukkit.craftbukkit.v1_8_R3.event.CraftEventFactory.callEvent(CraftEventFactory.java:87) [spigot-1.8.8-R0.1-SNAPSHOT.jar:git-Spigot-21fe707-e1ebe52] at org.bukkit.craftbukkit.v1_8_R3.event.CraftEventFactory.callEntityDamageEvent(CraftEventFactory.java:553) [spigot-1.8.8-R0.1-SNAPSHOT.jar:git-Spigot-21fe707-e1ebe52] at org.bukkit.craftbukkit.v1_8_R3.event.CraftEventFactory.handleEntityDamageEvent(CraftEventFactory.java:466) [spigot-1.8.8-R0.1-SNAPSHOT.jar:git-Spigot-21fe707-e1ebe52] at org.bukkit.craftbukkit.v1_8_R3.event.CraftEventFactory.handleLivingEntityDamageEvent(CraftEventFactory.java:585) [spigot-1.8.8-R0.1-SNAPSHOT.jar:git-Spigot-21fe707-e1ebe52] at net.minecraft.server.v1_8_R3.EntityLiving.d(EntityLiving.java:1102) [spigot-1.8.8-R0.1-SNAPSHOT.jar:git-Spigot-21fe707-e1ebe52] at net.minecraft.server.v1_8_R3.EntityLiving.damageEntity(EntityLiving.java:743) [spigot-1.8.8-R0.1-SNAPSHOT.jar:git-Spigot-21fe707-e1ebe52] at net.minecraft.server.v1_8_R3.EntityHuman.attack(EntityHuman.java:1001) [spigot-1.8.8-R0.1-SNAPSHOT.jar:git-Spigot-21fe707-e1ebe52] at net.minecraft.server.v1_8_R3.EntityPlayer.attack(EntityPlayer.java:1063) [spigot-1.8.8-R0.1-SNAPSHOT.jar:git-Spigot-21fe707-e1ebe52] at net.minecraft.server.v1_8_R3.PlayerConnection.a(PlayerConnection.java:1355) [spigot-1.8.8-R0.1-SNAPSHOT.jar:git-Spigot-21fe707-e1ebe52] at net.minecraft.server.v1_8_R3.PacketPlayInUseEntity.a(SourceFile:52) [spigot-1.8.8-R0.1-SNAPSHOT.jar:git-Spigot-21fe707-e1ebe52] at net.minecraft.server.v1_8_R3.PacketPlayInUseEntity.a(SourceFile:11) [spigot-1.8.8-R0.1-SNAPSHOT.jar:git-Spigot-21fe707-e1ebe52] at net.minecraft.server.v1_8_R3.PlayerConnectionUtils$1.run(SourceFile:13) [spigot-1.8.8-R0.1-SNAPSHOT.jar:git-Spigot-21fe707-e1ebe52] at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_131] at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_131] at net.minecraft.server.v1_8_R3.SystemUtils.a(SourceFile:44) [spigot-1.8.8-R0.1-SNAPSHOT.jar:git-Spigot-21fe707-e1ebe52] at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:715) [spigot-1.8.8-R0.1-SNAPSHOT.jar:git-Spigot-21fe707-e1ebe52] at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:374) [spigot-1.8.8-R0.1-SNAPSHOT.jar:git-Spigot-21fe707-e1ebe52] at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:654) [spigot-1.8.8-R0.1-SNAPSHOT.jar:git-Spigot-21fe707-e1ebe52] at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:557) [spigot-1.8.8-R0.1-SNAPSHOT.jar:git-Spigot-21fe707-e1ebe52] at java.lang.Thread.run(Unknown Source) [?:1.8.0_131] Caused by: java.lang.ClassCastException: org.bukkit.craftbukkit.v1_8_R3.entity.CraftVillager cannot be cast to javax.persistence.Entity at me.victor696.bancocentral.Main.aoBaterNPc(Main.java:122) ~[?:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131] at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_131] at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) ~[spigot-1.8.8-R0.1-SNAPSHOT.jar:git-Spigot-21fe707-e1ebe52] ... 23 more Link para o comentário Compartilhar em outros sites More sharing options...
smgabriel Postado Julho 7, 2017 Denunciar Compartilhar Postado Julho 7, 2017 (editado) Estava meio errado mesmo, não prestei atenção. tente: @EventHandler public void onC(PlayerInteractEntityEvent e) { Entity et = e.getRightClicked(); if (et != null && et instanceof Villager && et.getName() != null && et.getName().equalsIgnoreCase("Aderbal") ) { e.getPlayer().sendMessage("O SAM É BRABO"); e.setCancelled(true); } } @EventHandler public void onDamageNPC(EntityDamageByEntityEvent e) { Entity et = e.getEntity(); if (e.getDamager() instanceof Player) { if (et instanceof Villager) { Player dmg = (Player) e.getDamager(); ItemStack item = dmg.getItemInHand(); if (item != null && item.getType().equals(Material.STONE_SWORD) && item.getItemMeta() != null && item.getItemMeta().getDisplayName() != null && item.getItemMeta().getDisplayName().equalsIgnoreCase("HIT KILL")) { et.remove(); } } } } Cuidado pra não importar a classe errada dnv :v Editado Julho 7, 2017 por GabrielSm_ Link para o comentário Compartilhar em outros sites More sharing options...
Skin Postado Julho 8, 2017 Denunciar Compartilhar Postado Julho 8, 2017 Eu já não te disse? Membro Alertado Art. 9 É proibido free-post. Sua dúvida foi marcada como [Resolvido] e movido à área de dúvidas resolvidas. Atenciosamente, Gamer's Board Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
VictorHeaven
Olá guys,
Queria saber como que:
1. Ao clicar com botão direito em uma entidade (villager) com X nome, acontecer algo
2. Ao bater em uma entidade (villager) com X item (espada) ecom X nome, matar a entidade (villager)
Caso esteja se perguntando: "Esses cara não pesquisa" e tals...
Eu já pesquisei muito e não encontrei, obrigado a quem for das os exemplos.
Link para o comentário
Compartilhar em outros sites
6 respostass a esta questão
Posts Recomendados