Ir para conteúdo
  • 0

[Resolvido] Porque não esta funcionando


LuizB

Pergunta

Quero que quando o Player clique com um botão direito em uma placa Com o nome [sopa]

 

Abra Um GUi Cheio De SOPA
só que esta dando Erro:

o GUI n abre

codigo:


 

package soup;

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.block.Sign;
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.Inventory;
import org.bukkit.inventory.ItemStack;

public class Funsoup implements Listener{
	
	@EventHandler(priority = EventPriority.HIGHEST)
    private void onSChange(SignChangeEvent e) {
        if(e.getLine(0).equalsIgnoreCase("[Sopa]")) {
                if(!e.getPlayer().hasPermission("funkits.sopa")) {
                        e.setCancelled(true);
                }
                }
                else
                        e.setLine(0, ChatColor.LIGHT_PURPLE+"[Sopa]");
	}               
     
@EventHandler(priority = EventPriority.HIGHEST)
private void onClick(PlayerInteractEvent e) {
	if(e.getAction() == Action.RIGHT_CLICK_AIR || e.getAction() == Action.RIGHT_CLICK_BLOCK)
                    if(e.getClickedBlock().getState() instanceof Sign) {
                            Sign placa = (Sign) e.getClickedBlock().getState();
                            if(placa.getLine(0).equalsIgnoreCase(ChatColor.LIGHT_PURPLE+"[Sopa]")) {
                            	Inventory inv = Bukkit.createInventory(null, 6*10, "Sopa");
                            	ItemStack sopa = new ItemStack(Material.MUSHROOM_SOUP);
                            	for (int x = 0; x < 35; x++) {
                            		inv.setItem(x, sopa);
                                    
                            	
                            }
                    }
				}
			}
		}

Link para o comentário
Compartilhar em outros sites

13 respostass a esta questão

Posts Recomendados

package soup;

import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.block.Sign;
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.Inventory;
import org.bukkit.inventory.ItemStack;

public class Funsoup implements Listener{
	
    public Funsoup(Principal pl){
        Bukkit.getServer().getPluginManager().registerEvents(this, pl);
    }
    
    @EventHandler(priority = EventPriority.HIGHEST)
    private void onSChange(SignChangeEvent e) {
        if(e.getLine(0).equalsIgnoreCase("&d[Sopa]")) {
            if(!e.getPlayer().hasPermission("funkits.sopa")) {
                e.setCancelled(true);
                p.sendMessage("§cSem permissao.");
            } else {
                e.setLine(0, "§d[Sopa]");
                e.getPlayer().sendMessage("Placa de sopa colocada com sucesso!")
            }
        }
    }
     
    @EventHandler(priority = EventPriority.HIGHEST)
    private void onClick(PlayerInteractEvent e) {
        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("[Sopa]")) {
                    Inventory inv = Bukkit.createInventory(null, 6*9, "Sopa");
                    ItemStack sopa = new ItemStack(Material.MUSHROOM_SOUP);
                    while(inv.firstEmpty() != -1){
                        inv.setItem(inv.firstEmpty(), sopa);
                    }
                    e.getPlayer().openInventory(inv);
                    e.getPlayer().sendMessage("Inventário Aberto!");
                }
            }
        }
    }
}

Testa ai...

 

'-', o problema não era em colocar a placa, e sim na verificação dela

 

 

Vo testar aquele material Wall_Sign é oq ?

Wall = Parede

Sign = Placa

Link para o comentário
Compartilhar em outros sites

package soup;

 

import org.bukkit.Bukkit;

import org.bukkit.ChatColor;

import org.bukkit.Material;

import org.bukkit.block.Sign;

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.Inventory;

import org.bukkit.inventory.ItemStack;

 

public class Funsoup implements Listener{

 

@EventHandler(priority = EventPriority.HIGHEST)

private void onSChange(SignChangeEvent e) {

if(e.getLine(0).equalsIgnoreCase("[Sopa]")) {

if(!e.getPlayer().hasPermission("funkits.sopa")) {

e.setCancelled(true);

}

}else{

e.setLine(0, ChatColor.LIGHT_PURPLE+"[Sopa]");

}

}

 

@EventHandler(priority = EventPriority.HIGHEST)

private void onClick(PlayerInteractEvent e) {

if(e.getAction() == Action.RIGHT_CLICK_AIR || e.getAction() == Action.RIGHT_CLICK_BLOCK){

if(e.getClickedBlock().getState() instanceof Sign) {

Sign placa = (Sign) e.getClickedBlock().getState();

if(placa.getLine(0).equalsIgnoreCase(ChatColor.LIGHT_PURPLE+"[Sopa]")) {

Inventory inv = Bukkit.createInventory(null, 6*10, "Sopa");

ItemStack sopa = new ItemStack(Material.MUSHROOM_SOUP);

while(inv.firstEmpty() != -1){

inv.setItem(inv.firstEmpty(), sopa);

}

e.getPlayer().openInventory(inv);

e.getPlayer().sendMessage("Inventário Aberto!");

}

}

}

}

}

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

 

você nem abriu o inventario pro player...

player.openInventory(inv);

n funfa quando eu clico com o botao direito n faz nada

A placa fica rosa

package soup;

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.block.Sign;
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.Inventory;
import org.bukkit.inventory.ItemStack;

public class Funsoup implements Listener{
	
    @EventHandler(priority = EventPriority.HIGHEST)
    private void onSChange(SignChangeEvent e) {
        if(e.getLine(0).equalsIgnoreCase("[Sopa]")) {
            if(!e.getPlayer().hasPermission("funkits.sopa")) {
                e.setCancelled(true);
            }
        }else{
            e.setLine(0, ChatColor.LIGHT_PURPLE+"[Sopa]");
        }
    }
     
    @EventHandler(priority = EventPriority.HIGHEST)
    private void onClick(PlayerInteractEvent e) {
        if(e.getAction() == Action.RIGHT_CLICK_AIR || e.getAction() == Action.RIGHT_CLICK_BLOCK){
            if(e.getClickedBlock().getState() instanceof Sign) {
                Sign placa = (Sign) e.getClickedBlock().getState();
                if(placa.getLine(0).equalsIgnoreCase(ChatColor.LIGHT_PURPLE+"[Sopa]")) {
                    Inventory inv = Bukkit.createInventory(null, 6*10, "Sopa");
                    ItemStack sopa = new ItemStack(Material.MUSHROOM_SOUP);
                    while(inv.firstEmpty() != -1){
                        inv.setItem(inv.firstEmpty(), sopa);
                    }
                    e.getPlayer().openInventory(inv);
                    e.getPlayer().sendMessage("Inventário Aberto!");
                }
            }
        }
    }
}

n funfa quando eu clico com o botao direito n faz nada

o Nome fica ate rods [sopa]

 

só que quando eu clico n abre o GUI

Link para o comentário
Compartilhar em outros sites

n funfa quando eu clico com o botao direito n faz nada

A placa fica rosa

n funfa quando eu clico com o botao direito n faz nada

o Nome fica ate rods [sopa]

 

só que quando eu clico n abre o GUI

tira o ChatColor, deixa so o [sopa] ali no if:

 

if(placa.getLine(0).equalsIgnoreCase(ChatColor.LIGHT_PURPLE+"[Sopa]")) {
Link para o comentário
Compartilhar em outros sites

package soup;

 

import org.bukkit.Bukkit;

import org.bukkit.ChatColor;

import org.bukkit.Material;

import org.bukkit.block.Sign;

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.Inventory;

import org.bukkit.inventory.ItemStack;

 

public class Funsoup implements Listener{

 

@EventHandler(priority = EventPriority.HIGHEST)

private void onSChange(SignChangeEvent e) {

if(e.getLine(0).equalsIgnoreCase("[Sopa]")) {

if(!e.getPlayer().hasPermission("funkits.sopa")) {

e.setCancelled(true);

}

}else{

e.setLine(0, "§d[Sopa]");

}

}

 

@EventHandler(priority = EventPriority.HIGHEST)

private void onClick(PlayerInteractEvent e) {

if(e.getAction() == Action.RIGHT_CLICK_BLOCK){

if(e.getClickedBlock().getState() instanceof Sign) {

Sign placa = (Sign) e.getClickedBlock().getState();

if(placa.getLine(0) == null || placa.getLine(0).equalsIgnoreCase("")) return;

if(placa.getLine(0).equalsIgnoreCase("§d[Sopa]")) {

Inventory inv = Bukkit.createInventory(null, 6*9, "Sopa");

ItemStack sopa = new ItemStack(Material.MUSHROOM_SOUP);

while(inv.firstEmpty() != -1){

inv.setItem(inv.firstEmpty(), sopa);

}

e.getPlayer().openInventory(inv);

e.getPlayer().sendMessage("Inventário Aberto!");

}

}

}

}

}

Link para o comentário
Compartilhar em outros sites

package soup;

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.block.Sign;
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.Inventory;
import org.bukkit.inventory.ItemStack;

public class Funsoup implements Listener{
	
    @EventHandler(priority = EventPriority.HIGHEST)
    private void onSChange(SignChangeEvent e) {
        if(e.getLine(0).equalsIgnoreCase("[Sopa]")) {
            if(!e.getPlayer().hasPermission("funkits.sopa")) {
                e.setCancelled(true);
            }
        }else{
            e.setLine(0, "§d[Sopa]");
        }
    }
     
    @EventHandler(priority = EventPriority.HIGHEST)
    private void onClick(PlayerInteractEvent e) {
        if(e.getAction() == Action.RIGHT_CLICK_BLOCK){
            if(e.getClickedBlock().getState() instanceof Sign) {
                Sign placa = (Sign) e.getClickedBlock().getState();
                if(placa.getLine(0) == null || placa.getLine(0).equalsIgnoreCase("")) return;
                if(placa.getLine(0).equalsIgnoreCase("§d[Sopa]")) {
                    Inventory inv = Bukkit.createInventory(null, 6*9, "Sopa");
                    ItemStack sopa = new ItemStack(Material.MUSHROOM_SOUP);
                    while(inv.firstEmpty() != -1){
                        inv.setItem(inv.firstEmpty(), sopa);
                    }
                    e.getPlayer().openInventory(inv);
                    e.getPlayer().sendMessage("Inventário Aberto!");
                }
            }
        }
    }
}

o man, vai ficar dizendo tudo oq eu digo pra faze? ;-;

 

e acho q ele n le a cor, entao n e pra colocar chatcolor nem §

Link para o comentário
Compartilhar em outros sites

o man, vai ficar dizendo tudo oq eu digo pra faze? ;-;

 

e acho q ele n le a cor, entao n e pra colocar chatcolor nem §

Sim, lê §, pelo menos sempre leu comigo, removi a parte do código dele que aceitava clicks no vento(se é pra placa pra que caca vai aceitar click direito no vento) e verificar se a primeira linha da placa não está em branco

Link para o comentário
Compartilhar em outros sites

Sim, lê §, pelo menos sempre leu comigo, removi a parte do código dele que aceitava clicks no vento(se é pra placa pra que caca vai aceitar click direito no vento) e verificar se a primeira linha da placa não está em branco

Ainda n esta funcionando '-'

 

OBS: já registrei os eventos na principal

 

 

Tambem fiz Algumas alteração No Codigo.

 

Codigo Alterado:

 

 

 

package soup;

import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.block.Sign;
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.Inventory;
import org.bukkit.inventory.ItemStack;

public class Funsoup implements Listener{
	
    @EventHandler(priority = EventPriority.HIGHEST)
    private void onSChange(SignChangeEvent e) {
        if(e.getLine(0).equalsIgnoreCase("[Sopa]")) {
            if(!e.getPlayer().hasPermission("funkits.sopa")) {
                e.setCancelled(true);
            }
        }
    }
     
    @EventHandler(priority = EventPriority.HIGHEST)
    private void onClick(PlayerInteractEvent e) {
        if(e.getAction() == Action.RIGHT_CLICK_BLOCK){
            if(e.getClickedBlock().getState() instanceof Sign) {
                Sign placa = (Sign) e.getClickedBlock().getState();
                if(placa.getLine(0) == null || placa.getLine(0).equalsIgnoreCase("")) return;
                if(placa.getLine(0).equalsIgnoreCase("§d[Sopa]")) {
                    Inventory inv = Bukkit.createInventory(null, 6*9, "Sopa");
                    ItemStack sopa = new ItemStack(Material.MUSHROOM_SOUP);
                    while(inv.firstEmpty() != -1){
                        inv.setItem(inv.firstEmpty(), sopa);
                    }
                    e.getPlayer().openInventory(inv);
                    e.getPlayer().sendMessage("Inventário Aberto!");
                }
            }
        }
    }
}
Editado por Cuthmf
Link para o comentário
Compartilhar em outros sites

package soup;

 

import org.bukkit.Bukkit;

import org.bukkit.Material;

import org.bukkit.block.Sign;

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.Inventory;

import org.bukkit.inventory.ItemStack;

 

public class Funsoup implements Listener{

 

public Funsoup(Principal pl){

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

}

 

@EventHandler(priority = EventPriority.HIGHEST)

private void onSChange(SignChangeEvent e) {

if(e.getLine(0).equalsIgnoreCase("§d[Sopa]")) {

if(!e.getPlayer().hasPermission("funkits.sopa")) {

e.setCancelled(true);

}

}

}

 

@EventHandler(priority = EventPriority.HIGHEST)

private void onClick(PlayerInteractEvent e) {

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) == null || placa.getLine(0).equalsIgnoreCase("")) return;

if(placa.getLine(0).equalsIgnoreCase("§d[Sopa]")) {

Inventory inv = Bukkit.createInventory(null, 6*9, "Sopa");

ItemStack sopa = new ItemStack(Material.MUSHROOM_SOUP);

while(inv.firstEmpty() != -1){

inv.setItem(inv.firstEmpty(), sopa);

}

e.getPlayer().openInventory(inv);

e.getPlayer().sendMessage("Inventário Aberto!");

}

}

}

}

}

public class Principal extends JavaPlugin{

 

public void onEnable(){

new Funsoup(this);

}

 

}

Link para o comentário
Compartilhar em outros sites

package soup;

import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.block.Sign;
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.Inventory;
import org.bukkit.inventory.ItemStack;

public class Funsoup implements Listener{
	
    public Funsoup(Principal pl){
        Bukkit.getServer().getPluginManager().registerEvents(this, pl);
    }
    
    @EventHandler(priority = EventPriority.HIGHEST)
    private void onSChange(SignChangeEvent e) {
        if(e.getLine(0).equalsIgnoreCase("§d[Sopa]")) {
            if(!e.getPlayer().hasPermission("funkits.sopa")) {
                e.setCancelled(true);
            }
        }
    }
     
    @EventHandler(priority = EventPriority.HIGHEST)
    private void onClick(PlayerInteractEvent e) {
        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) == null || placa.getLine(0).equalsIgnoreCase("")) return;
                if(placa.getLine(0).equalsIgnoreCase("§d[Sopa]")) {
                    Inventory inv = Bukkit.createInventory(null, 6*9, "Sopa");
                    ItemStack sopa = new ItemStack(Material.MUSHROOM_SOUP);
                    while(inv.firstEmpty() != -1){
                        inv.setItem(inv.firstEmpty(), sopa);
                    }
                    e.getPlayer().openInventory(inv);
                    e.getPlayer().sendMessage("Inventário Aberto!");
                }
            }
        }
    }
}
public class Principal extends JavaPlugin{

    public void onEnable(){
        new Funsoup(this);
    }

}

Vo testar aquele material Wall_Sign é oq ?

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

package soup;

import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.block.Sign;
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.Inventory;
import org.bukkit.inventory.ItemStack;

public class Funsoup implements Listener{
	
    public Funsoup(Principal pl){
        Bukkit.getServer().getPluginManager().registerEvents(this, pl);
    }
    
    @EventHandler(priority = EventPriority.HIGHEST)
    private void onSChange(SignChangeEvent e) {
        if(e.getLine(0).equalsIgnoreCase("&d[Sopa]")) {
            if(!e.getPlayer().hasPermission("funkits.sopa")) {
                e.setCancelled(true);
                p.sendMessage("§cSem permissao.");
            } else {
                e.setLine(0, "§d[Sopa]");
                e.getPlayer().sendMessage("Placa de sopa colocada com sucesso!")
            }
        }
    }
     
    @EventHandler(priority = EventPriority.HIGHEST)
    private void onClick(PlayerInteractEvent e) {
        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("[Sopa]")) {
                    Inventory inv = Bukkit.createInventory(null, 6*9, "Sopa");
                    ItemStack sopa = new ItemStack(Material.MUSHROOM_SOUP);
                    while(inv.firstEmpty() != -1){
                        inv.setItem(inv.firstEmpty(), sopa);
                    }
                    e.getPlayer().openInventory(inv);
                    e.getPlayer().sendMessage("Inventário Aberto!");
                }
            }
        }
    }
}

Testa ai...

Link para o comentário
Compartilhar em outros sites

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