Ir para conteúdo
  • 0

[Resolvido] Duvida (Evento usando config e metadata de item)


Guest #angradosreis1000grau

Pergunta

Guest #angradosreis1000grau

Eu queria um pl de bloquear crafts , mas como ninguem ve os pedidos eu decidi tentar fazer mas n consegui pensar em nenhum jeito de fazer entao alguem poderia ajudar?  Eu queria bloquear os itens na config.yml de serem craftados ex: "1:2" com ou sem metadata ! Alguem poderia completar/arrumar aqui ? eu tentei :/

package me.google.mms;

import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.CraftItemEvent;
import org.bukkit.plugin.java.JavaPlugin;

public class Main extends JavaPlugin implements Listener{
	
    public void onEnable() {
        Bukkit.getPluginManager().registerEvents(this, this);
  }
    public void crafting(CraftItemEvent e){
    	 
    }
}
Link para o comentário
Compartilhar em outros sites

10 respostass a esta questão

Posts Recomendados

package me.google.mms;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.event.Event.Result;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.CraftItemEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.plugin.java.JavaPlugin;

public class Main extends JavaPlugin implements Listener{
	public static File CraftBans = new File("./plugins/<seu_plugin>/bans.yml");
    public static YamlConfiguration cCraftBans = YamlConfiguration.loadConfiguration(CraftBans);
    public void onEnable() {
        Bukkit.getPluginManager().registerEvents(this, this);
        Setup();
  }
    
    public void Setup() {
     ArrayList<String> blocked = new ArrayList<>();
     // Adiciona os items //
     // : = meta data //
     blocked.add("351:4");
     blocked.add("2:2");
     
     cCraftBans.set("cCraft.blocked", blocked);
     try {
		cCraftBans.save(CraftBans);
	} catch (IOException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
    }
    @EventHandler
    public void crafting(CraftItemEvent e){
    	 for(String s : cCraftBans.getStringList("cCraft.blocked")) {
    		 String[] metadata = s.split(":");
    		 ItemStack i = e.getRecipe().getResult();
    		 if(i.getItemMeta() != null) {
    			 if(metadata == null) {
    				 Material tipo = Material.getMaterial(s.toUpperCase());
    				 if(i.getType() == tipo) {
    					 e.setCancelled(true);
        				 e.getWhoClicked().closeInventory();
        				 e.getWhoClicked().sendMessage("§cEsse item está bloqueado.");
    				 }
    			 } else { 
    			 if(i.getData().getData() == (byte)Byte.valueOf(metadata[0])) {
    				 e.setCancelled(true);
    				 e.getWhoClicked().closeInventory();
    				 e.getWhoClicked().sendMessage("§cEsse item está bloqueado.");
    			 }
    			 }
    		 }
    	 }
    }
}

Deve está errado, testa aí. ;-;

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

Guest #angradosreis1000grau

Deve está errado, testa aí. ;-;

 

 

 

Deu erro no console na hora do evento :/ 

13:27:46 [SEVERE] Could not pass event CraftItemEvent to mms v1.0
13:27:46 org.bukkit.event.EventException
13:27:46 	at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:427)
13:27:46 	at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62)
13:27:46 	at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:477)
13:27:46 	at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:462)
13:27:46 	at net.minecraft.server.v1_5_R3.PlayerConnection.a(PlayerConnection.java:1172)
13:27:46 	at net.minecraft.server.v1_5_R3.Packet102WindowClick.handle(SourceFile:31)
13:27:46 	at net.minecraft.server.v1_5_R3.NetworkManager.b(NetworkManager.java:292)
13:27:46 	at net.minecraft.server.v1_5_R3.PlayerConnection.d(PlayerConnection.java:109)
13:27:46 	at net.minecraft.server.v1_5_R3.ServerConnection.b(SourceFile:35)
13:27:46 	at net.minecraft.server.v1_5_R3.DedicatedServerConnection.b(SourceFile:30)
13:27:46 	at net.minecraft.server.v1_5_R3.MinecraftServer.r(MinecraftServer.java:581)
13:27:46 	at net.minecraft.server.v1_5_R3.DedicatedServer.r(DedicatedServer.java:226)
13:27:46 	at net.minecraft.server.v1_5_R3.MinecraftServer.q(MinecraftServer.java:477)
13:27:46 	at net.minecraft.server.v1_5_R3.MinecraftServer.run(MinecraftServer.java:410)
13:27:46 	at net.minecraft.server.v1_5_R3.ThreadServerApplication.run(SourceFile:573)
13:27:46 Caused by: java.lang.NumberFormatException: Value out of range. Value:"267" Radix:10
13:27:46 	at java.lang.Byte.parseByte(Unknown Source)
13:27:46 	at java.lang.Byte.valueOf(Unknown Source)
13:27:46 	at java.lang.Byte.valueOf(Unknown Source)
13:27:46 	at me.google.mms.Main.crafting(Main.java:53)
13:27:46 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
13:27:46 	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
13:27:46 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
13:27:47 	at java.lang.reflect.Method.invoke(Unknown Source)
13:27:47 	at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:425)
13:27:47 	... 14 more
Link para o comentário
Compartilhar em outros sites

 

Deu erro no console na hora do evento :/ 

13:27:46 [SEVERE] Could not pass event CraftItemEvent to mms v1.0
13:27:46 org.bukkit.event.EventException
13:27:46 	at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:427)
13:27:46 	at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62)
13:27:46 	at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:477)
13:27:46 	at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:462)
13:27:46 	at net.minecraft.server.v1_5_R3.PlayerConnection.a(PlayerConnection.java:1172)
13:27:46 	at net.minecraft.server.v1_5_R3.Packet102WindowClick.handle(SourceFile:31)
13:27:46 	at net.minecraft.server.v1_5_R3.NetworkManager.b(NetworkManager.java:292)
13:27:46 	at net.minecraft.server.v1_5_R3.PlayerConnection.d(PlayerConnection.java:109)
13:27:46 	at net.minecraft.server.v1_5_R3.ServerConnection.b(SourceFile:35)
13:27:46 	at net.minecraft.server.v1_5_R3.DedicatedServerConnection.b(SourceFile:30)
13:27:46 	at net.minecraft.server.v1_5_R3.MinecraftServer.r(MinecraftServer.java:581)
13:27:46 	at net.minecraft.server.v1_5_R3.DedicatedServer.r(DedicatedServer.java:226)
13:27:46 	at net.minecraft.server.v1_5_R3.MinecraftServer.q(MinecraftServer.java:477)
13:27:46 	at net.minecraft.server.v1_5_R3.MinecraftServer.run(MinecraftServer.java:410)
13:27:46 	at net.minecraft.server.v1_5_R3.ThreadServerApplication.run(SourceFile:573)
13:27:46 Caused by: java.lang.NumberFormatException: Value out of range. Value:"267" Radix:10
13:27:46 	at java.lang.Byte.parseByte(Unknown Source)
13:27:46 	at java.lang.Byte.valueOf(Unknown Source)
13:27:46 	at java.lang.Byte.valueOf(Unknown Source)
13:27:46 	at me.google.mms.Main.crafting(Main.java:53)
13:27:46 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
13:27:46 	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
13:27:46 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
13:27:47 	at java.lang.reflect.Method.invoke(Unknown Source)
13:27:47 	at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:425)
13:27:47 	... 14 more
   
 @EventHandler
    public void crafting(CraftItemEvent e){
      for(String s : cCraftBans.getStringList("cCraft.blocked")) {
      String[] metadata = s.split(":");
      ItemStack i = e.getRecipe().getResult();
          
      Material tipo = Material.getMaterial(Integer.valueOf(s));
      System.out.println(tipo);
      if(i.getType() == tipo) {
      e.setCancelled(true);
          e.getWhoClicked().closeInventory();
          e.getWhoClicked().sendMessage("§cEsse item está bloqueado.");
      }
            
      if(i.getData() == null) return;
      if(i.getData().getData() == 0) return;
      System.out.println(metadata[0]);
      if(i.getData().getData() == (byte)Byte.valueOf(metadata[0])) {
      e.setCancelled(true);
      e.getWhoClicked().closeInventory();
      e.getWhoClicked().sendMessage("§cEsse item está bloqueado.");
      }
      }
      }
      }

Tenta aí :D

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

Guest #angradosreis1000grau

 

   
 @EventHandler
    public void crafting(CraftItemEvent e){
      for(String s : cCraftBans.getStringList("cCraft.blocked")) {
      String[] metadata = s.split(":");
      ItemStack i = e.getRecipe().getResult();
          
      Material tipo = Material.getMaterial(Integer.valueOf(s));
      System.out.println(tipo);
      if(i.getType() == tipo) {
      e.setCancelled(true);
          e.getWhoClicked().closeInventory();
          e.getWhoClicked().sendMessage("§cEsse item está bloqueado.");
      }
            
      if(i.getData() == null) return;
      if(i.getData().getData() == 0) return;
      System.out.println(metadata[0]);
      if(i.getData().getData() == (byte)Byte.valueOf(metadata[0])) {
      e.setCancelled(true);
      e.getWhoClicked().closeInventory();
      e.getWhoClicked().sendMessage("§cEsse item está bloqueado.");
      }
      }
      }
      }

Tenta aí :D

 

Tipo no codigo ta dando esses erros , me desculpe minha nubisse kk // 

 

 

sTiSrIs.png

 

Link para o comentário
Compartilhar em outros sites

 @EventHandler
    public void crafting(CraftItemEvent e){
    	 for(String s : cCraftBans.getStringList("cCraft.blocked")) {
    		 String[] metadata = s.split(":");
    		 ItemStack i = e.getRecipe().getResult();
    		    	
    				 Material tipo = Material.getMaterial(Integer.valueOf(s));
    				 System.out.println(tipo);
    				 if(i.getType() == tipo) {
    					 e.setCancelled(true);
        				 e.getWhoClicked().closeInventory();
        				 
        				 ((Player)e.getWhoClicked()).sendMessage("§cEsse item está bloqueado.");
    				 }
    		      			
    				 if(i.getData() == null) return;
    				 if(i.getData().getData() == 0) return;
    				 System.out.println(metadata[0]);
    			 if(i.getData().getData() == (byte)Byte.valueOf(metadata[0])) {
    				 e.setCancelled(true);
    				 e.getWhoClicked().closeInventory();
    				 ((Player)e.getWhoClicked()).sendMessage("§cEsse item está bloqueado.");
    			 }
    			 }
    		 }
    	 }

Tenta

Link para o comentário
Compartilhar em outros sites

Guest #angradosreis1000grau
 @EventHandler
    public void crafting(CraftItemEvent e){
    	 for(String s : cCraftBans.getStringList("cCraft.blocked")) {
    		 String[] metadata = s.split(":");
    		 ItemStack i = e.getRecipe().getResult();
    		    	
    				 Material tipo = Material.getMaterial(Integer.valueOf(s));
    				 System.out.println(tipo);
    				 if(i.getType() == tipo) {
    					 e.setCancelled(true);
        				 e.getWhoClicked().closeInventory();
        				 
        				 ((Player)e.getWhoClicked()).sendMessage("§cEsse item está bloqueado.");
    				 }
    		      			
    				 if(i.getData() == null) return;
    				 if(i.getData().getData() == 0) return;
    				 System.out.println(metadata[0]);
    			 if(i.getData().getData() == (byte)Byte.valueOf(metadata[0])) {
    				 e.setCancelled(true);
    				 e.getWhoClicked().closeInventory();
    				 ((Player)e.getWhoClicked()).sendMessage("§cEsse item está bloqueado.");
    			 }
    			 }
    		 }
    	 }

Tenta

 

KK ta dando um monte de erro no console , deixa pra la vou t incomodar mais nao  :/    quando eu crafto o item nada acontece e o console fica vermelho

Link para o comentário
Compartilhar em outros sites

Guest #angradosreis1000grau

Quando estiver pronto se quiser me passar eu agradeço \o/

 

Consegui

Quais erros? '-'

 

Aqui funcionou de boa. 

Agora consegui , tive q apagar tudo e ir botando parte por parte do q vc mandou e tive q mudar o nome da config e tals mas pegou agora consegui vlllwwww vc e o cara brother \o\  

 

 

O meu codigo ficou assim agora q funfou ;;

package me.google.mms;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;

import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.CraftItemEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.plugin.java.JavaPlugin;

public class Main extends JavaPlugin implements Listener{
	public static File Bans = new File("./plugins/teste/bans.yml");
    public static YamlConfiguration aBans = YamlConfiguration.loadConfiguration(Bans);
    public void onEnable() {
        Bukkit.getPluginManager().registerEvents(this, this);
        Setup();
  }
    public void Setup() {
        ArrayList<String> blocked = new ArrayList<>();
        blocked.add("267");
        
        aBans.set("aBans.blocked", blocked);
        try {
   		aBans.save(Bans);
   	} catch (IOException e) {
   		e.printStackTrace();
   	}
       }
    
    
    
    
    @EventHandler
    public void crafting(CraftItemEvent e){
      for(String s : aBans.getStringList("aBans.blocked")) {
      String[] metadata = s.split(":");
      ItemStack i = e.getRecipe().getResult();
          
      Material tipo = Material.getMaterial(Integer.valueOf(s));
      System.out.println(tipo);
      if(i.getType() == tipo) {
      e.setCancelled(true);
      e.getWhoClicked().closeInventory();
      ((Player) e.getWhoClicked()).sendMessage("§cEsse item está bloqueado.");
      }
            
      if(i.getData() == null) return;
      if(i.getData().getData() == 0) return;
      System.out.println(metadata[0]);
      if(i.getData().getData() == (byte)Byte.valueOf(metadata[0])) {
      e.setCancelled(true);
      e.getWhoClicked().closeInventory();
      ((Player) e.getWhoClicked()).sendMessage("§cEsse item está bloqueado.");
      }
      }
      }
}

So avisando , ta com um bug , so ta reconhecendo a primeira linha da config , se bota 2 itens o segundo nao ta pegando e nao sei arrumar entao ja sabe kk

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

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