Ir para conteúdo
  • 0

[Resolvido] Porque não esta funcionando ?


LuizB

Pergunta

tenho o seguinte código pra reparar tudo clicando Na placa:

Só que n funfa

OBS: Eu registrei os eventos na classe principal( ate a placa ficou vermelha mas não reparava

Código:


 

package utilidades;

import org.bukkit.Material;
import org.bukkit.block.Sign;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.block.SignChangeEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.Repairable;

public class Reparação implements Listener{

	
	public void repairAll(Player p) {
        for(ItemStack items : p.getInventory().getContents()) {
            if(items instanceof Repairable) {
                items.setDurability((short)0);
            }
        }
        for(ItemStack items : p.getEquipment().getArmorContents()) {
        	if(items instanceof Repairable)  {
        		items.setDurability((short)0);
        	}
            	
        }
	}      
             
             
                	
                	
                
                @EventHandler(priority = EventPriority.HIGHEST)
                private void onSChange(SignChangeEvent e) {
                    if(e.getLine(0).equalsIgnoreCase("[Reparar]")) {
                        if(!e.getPlayer().hasPermission("funkits.sopa")) {
                            e.setCancelled(true);
                            e.getPlayer().sendMessage("§cSem permissao.");
                        } else {
                            e.setLine(0, "§4[Reparar]");
                            e.getPlayer().sendMessage("Placa de reparação colocada com sucesso!");
                        }
                    }
                }
                 
                @EventHandler(priority = EventPriority.HIGHEST)
                private void onClick(PlayerInteractEvent e) {
                	Player player = e.getPlayer();
                    if(e.getAction() == Action.RIGHT_CLICK_BLOCK){
                        if (e.getClickedBlock().getType() == Material.SIGN_POST || e.getClickedBlock().getType() == Material.WALL_SIGN) {
                            Sign placa = (Sign) e.getClickedBlock().getState();
                            if(placa.getLine(0).contains("[Reparação]")) {
                            	repairAll(player);
                                }
                               
                            }
                        }
                    }
                }
			
                
           







 

Link para o comentário
Compartilhar em outros sites

15 respostass a esta questão

Posts Recomendados

@EventHandler(priority = EventPriority.HIGHEST)                private void onClick(PlayerInteractEvent e) {                	Player player = e.getPlayer();                    if(e.getAction() == Action.RIGHT_CLICK_BLOCK){                        if (e.getClickedBlock().getType() == Material.SIGN_POST || e.getClickedBlock().getType() == Material.WALL_SIGN) {                            Sign placa = (Sign) e.getClickedBlock().getState();                            if(placa.getLine(0).contains("[Reparar]")) {                            	repairAll(player);                               }                            }                        }                    }

Vc colocou pra quando clicar ne uma placa qe ta escrito reparaçao, arrumei testa ai, foi mal pelo codigo bagunçado mais to pelo cel

Editado por єxŧrαρłαys
Link para o comentário
Compartilhar em outros sites

@EventHandler(priority = EventPriority.HIGHEST)                private void onClick(PlayerInteractEvent e) {                	Player player = e.getPlayer();                    if(e.getAction() == Action.RIGHT_CLICK_BLOCK){                        if (e.getClickedBlock().getType() == Material.SIGN_POST || e.getClickedBlock().getType() == Material.WALL_SIGN) {                            Sign placa = (Sign) e.getClickedBlock().getState();                            if(placa.getLine(0).contains("[Reparar]")) {                            	repairAll(player);                               }                            }                        }                    }
Vc colocou pra quando clicar ne uma placa qe ta escrito reparaçao, arrumei testa ai, foi mal pelo codigo bagunçado mais to pelo cel

 

Não Funcionou !

Link para o comentário
Compartilhar em outros sites

Eu clico e n reparo



public class Reparação implements Listener{

	
	public void repairAll(Player p) {
        for(ItemStack items : p.getInventory().getContents()) {
            if(items instanceof Repairable) {
                items.setDurability((short)0);
            }
        }
        for(ItemStack items : p.getEquipment().getArmorContents()) {
        	if(items instanceof Repairable)  {
        		items.setDurability((short)0);
        	}
            	
        }
	}      
             
             
                	
                	
                
                @EventHandler(priority = EventPriority.HIGHEST)
                private void onSChange(SignChangeEvent e) {
                    if(e.getLine(0).equalsIgnoreCase("[Reparar]")) {
                        if(!e.getPlayer().hasPermission("funkits.sopa")) {
                            e.setCancelled(true);
                            e.getPlayer().sendMessage("§cSem permissao.");
                        } else {
                            e.setLine(0, "§4[Reparar]");
                            e.getPlayer().sendMessage("Placa de reparação colocada com sucesso!");
                        }
                    }
                }
                 
                @EventHandler(priority = EventPriority.HIGHEST)
                private void onClick(PlayerInteractEvent e) {
                	Player player = e.getPlayer();
                    if(e.getAction() == Action.RIGHT_CLICK_BLOCK){
                        if (e.getClickedBlock().getType() == Material.SIGN_POST || e.getClickedBlock().getType() == Material.WALL_SIGN) {
                            Sign placa = (Sign) e.getClickedBlock().getState();
                            if(placa.getLine(0).contains("[Reparar]")) {
                            	repairAll(player);
                                }
                               
                            }
                        }
                    }
                }

Tenta esse e olha se vai dar erro no console

Link para o comentário
Compartilhar em outros sites

Tenta aí:

 

 

 

@EventHandler(priority = EventPriority.HIGHEST)
private void onClick(PlayerInteractEvent e) {
    Player player = e.getPlayer();
if(e.getAction() == Action.RIGHT_CLICK_BLOCK){
if (e.getClickedBlock().getState() instanceof Sign) {
Sign placa = (Sign) e.getClickedBlock().getState();
if(placa.getLine(0).contains("[Reparar]")) {
    repairAll(player);
}

}
}
}

 

Não testei, fiz pelo fórum msm

Link para o comentário
Compartilhar em outros sites

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