JmDiego275 Postado Julho 16, 2019 Denunciar Compartilhar Postado Julho 16, 2019 Bom, estou fazendo um plugin de mineração sem dropar o item minerado e vir em forma de dinheiro, porém o block.breaknaturally não está funcionando em específicos blocos, se alguém souber como resolver. Código Spoiler @EventHandler public void qndminerar(BlockBreakEvent e){ Player p = e.getPlayer(); Block b = e.getBlock(); if (b.getType() != Material.SPONGE) return; if (p.getWorld() == Bukkit.getWorld("mina")) { if (e.getPlayer().hasPermission("magma.minerar")){ b.breakNaturally(new ItemStack(Material.SPONGE)); Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), "money give " + p.getName() + " 15.0"); ActionBar magmine = new ActionBar("§6§l+10.0 ✪ §a§l+5.0"); magmine.sendToPlayer(p); } Link para o comentário Compartilhar em outros sites More sharing options...
ramon-bernardo Postado Julho 16, 2019 Denunciar Compartilhar Postado Julho 16, 2019 (editado) 49 minutos atrás, JmDiego275 disse: Bom, estou fazendo um plugin de mineração sem dropar o item minerado e vir em forma de dinheiro, porém o block.breaknaturally não está funcionando em específicos blocos, se alguém souber como resolver. Código Ocultar conteúdo @EventHandler public void qndminerar(BlockBreakEvent e){ Player p = e.getPlayer(); Block b = e.getBlock(); if (b.getType() != Material.SPONGE) return; if (p.getWorld() == Bukkit.getWorld("mina")) { if (e.getPlayer().hasPermission("magma.minerar")){ b.breakNaturally(new ItemStack(Material.SPONGE)); Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), "money give " + p.getName() + " 15.0"); ActionBar magmine = new ActionBar("§6§l+10.0 ✪ §a§l+5.0"); magmine.sendToPlayer(p); } Recomendo usar um, if (event.isCancelled()) return; para que não de problema com outros plugins, como worldguard, já que o evento está em prioridade NORMAL. @edit Recomendo também retirar o comando /give do console pois caso muitos jogadores minerem ao mesmo tempo irá causar spam no console. (É NECESSÁRIO IMPLEMENTAR O VAULT NO LIBRARIES DO PLUGIN) Eu retirei e usei este código abaixo para adicionar money ao jogador. <nome_da_class>.VaultAPIEco.depositPlayer(player.getName(), 1000); Você pode usar o Vault para acessar a economia do seu servidor, é bem fácil basta adicionar uma class(ou na class principal, só tirar <nome_da_class>.) com: public static Economy VaultAPIEco = null; public static boolean ativarVAULTEco() { RegisteredServiceProvider<Economy> VaultEconomia = Bukkit.getServer().getServicesManager().getRegistration(net.milkbowl.vault.economy.Economy.class); if(VaultEconomia != null) { VaultAPIEco = VaultEconomia.getProvider(); } return (VaultAPIEco != null); } E no onEnable do plugin, você ativa usando: <nome_da_class>.ativarVAULTEco(); Lembrando que o Vault não é só economia, pode usar como permissão e chat também. Eu fiz algumas modificações, bom é só uma dica para organizar melhor mas cada um tem o seu. @EventHandler public void BlockBreakEvent(BlockBreakEvent event){ if (event.isCancelled()) return; // Evita problema com outros plugins, sempre bom usar Player player = event.getPlayer(); Block block = event.getBlock(); if (block.getType() != Material.SPONGE) return; if (!(player.getWorld().getName().equalsIgnoreCase("mina"))) return; // Usei ! na frente if (!(player.hasPermission("magma.minerar"))) return; // Usei ! na frente block.setType(Material.AIR); <nome_da_class>.VaultAPIEco.depositPlayer(player.getName(), 15); // Usado para depositar money ao jogador ActionBar magmine = new ActionBar("§6§l+10.0 ✪ §a§l+5.0"); magmine.sendToPlayer(player); } Editado Julho 16, 2019 por Mounton 1 Link para o comentário Compartilhar em outros sites More sharing options...
JmDiego275 Postado Julho 16, 2019 Autor Denunciar Compartilhar Postado Julho 16, 2019 27 minutos atrás, Mounton disse: Recomendo usar um, if (event.isCancelled()) return; Após aonde eu coloco isso? E sobre a duvida do tópico eu resolvi utilizando: Spoiler @EventHandler public void qndminerar(BlockBreakEvent e){ Player p = e.getPlayer(); Block b = e.getBlock(); if (b.getType() != Material.SPONGE) return; if (p.getWorld() == Bukkit.getWorld("mina")) { if (e.getPlayer().hasPermission("magma.minerar")){ b.setType(Material.AIR); Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), "money give " + p.getName() + " 15.0"); ActionBar magmine = new ActionBar("§6§l+10.0 ✪ §a§l+5.0"); magmine.sendToPlayer(p); } Link para o comentário Compartilhar em outros sites More sharing options...
ramon-bernardo Postado Julho 16, 2019 Denunciar Compartilhar Postado Julho 16, 2019 11 minutos atrás, JmDiego275 disse: Após aonde eu coloco isso? E sobre a duvida do tópico eu resolvi utilizando: Ocultar conteúdo @EventHandler public void qndminerar(BlockBreakEvent e){ Player p = e.getPlayer(); Block b = e.getBlock(); if (b.getType() != Material.SPONGE) return; if (p.getWorld() == Bukkit.getWorld("mina")) { if (e.getPlayer().hasPermission("magma.minerar")){ b.setType(Material.AIR); Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), "money give " + p.getName() + " 15.0"); ActionBar magmine = new ActionBar("§6§l+10.0 ✪ §a§l+5.0"); magmine.sendToPlayer(p); } Eu editei e dei um exemplo no comentário acima Link para o comentário Compartilhar em outros sites More sharing options...
JmDiego275 Postado Julho 16, 2019 Autor Denunciar Compartilhar Postado Julho 16, 2019 4 minutos atrás, Mounton disse: Eu editei e dei um exemplo no comentário acima Então mesmo com o codigo abaixo ainda da de quebrar com o wg! Spoiler @EventHandler public void qndminerar(BlockBreakEvent e){ if (e.isCancelled()) return; Player p = e.getPlayer(); Block b = e.getBlock(); if (b.getType() != Material.COAL_ORE) return; if (p.getWorld() == Bukkit.getWorld("mina")) { if (e.getPlayer().hasPermission("magma.minerar")){ b.breakNaturally(new ItemStack(Material.COAL_ORE)); Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), "money give " + p.getName() + " 19.5"); ActionBar magmine = new ActionBar("§6§l+13.0✪ §a§l+6.5"); magmine.sendToPlayer(p); } Link para o comentário Compartilhar em outros sites More sharing options...
ramon-bernardo Postado Julho 16, 2019 Denunciar Compartilhar Postado Julho 16, 2019 11 minutos atrás, JmDiego275 disse: Então mesmo com o codigo abaixo ainda da de quebrar com o wg! Ocultar conteúdo @EventHandler public void qndminerar(BlockBreakEvent e){ if (e.isCancelled()) return; Player p = e.getPlayer(); Block b = e.getBlock(); if (b.getType() != Material.COAL_ORE) return; if (p.getWorld() == Bukkit.getWorld("mina")) { if (e.getPlayer().hasPermission("magma.minerar")){ b.breakNaturally(new ItemStack(Material.COAL_ORE)); Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), "money give " + p.getName() + " 19.5"); ActionBar magmine = new ActionBar("§6§l+13.0✪ §a§l+6.5"); magmine.sendToPlayer(p); } Muda a prioridade para @EventHandler(priority=EventPriority.MONITOR) e testa novamente. Link para o comentário Compartilhar em outros sites More sharing options...
JmDiego275 Postado Julho 16, 2019 Autor Denunciar Compartilhar Postado Julho 16, 2019 1 minuto atrás, Mounton disse: Muda a prioridade para @EventHandler(priority=EventPriority.MONITOR) e testa novamente. Funcionou muito obrigado! Pode fechar Link para o comentário Compartilhar em outros sites More sharing options...
Wolf_131 Postado Julho 18, 2019 Denunciar Compartilhar Postado Julho 18, 2019 Sua dúvida foi marcada como resolvida pela nossa equipe. Caso sua dúvida não tenha sido sanada, crie outro tópico. OBS: Essa mensagem é automática. Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados