Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[Problem] Malutka poprawka w moim pluginie :)


karer

Rekomendowane odpowiedzi

Opublikowano

Siemka! Oto mój kod:

@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
	  public void onPrepareItemCraft(PrepareItemCraftEvent event)
	    {
				ItemStack[] inv = event.getInventory().getMatrix();
				List<String> valid = new ArrayList<String>();
				
				
				boolean petla = true;
				for(ItemStack ingr : inv){
					if(petla==true){
					if(ingr.getType().isBlock() == true && ingr.getType() == Material.SPONGE)
					{
						//ingr to itemstack, mozemy na nim operowac
						ItemMeta ingr_meta = ingr.getItemMeta();
						String ingr_name = ingr_meta.getDisplayName();
						Player plr = (Player) event.getView().getPlayer();
						
						boolean lorek = false;
						if(ingr_meta.hasLore()==true && ingr_meta.hasDisplayName()==true){
							plr.sendMessage(ingr_name);
							for(String dupa : ingr_meta.getLore()){
								if(dupa.contains("Avalonu")){
									lorek = true;
								}
							}
							
							boolean named = ingr_name.contains("kamien");
		
							
							if(lorek == false || named == false){
								event.getInventory().setResult(new ItemStack(Material.AIR));
								petla = false;
								return;
							}else{
								//gitara
								valid.add("true");
							}
						
						}else{
							petla = false;
							event.getInventory().setResult(new ItemStack(Material.AIR));
							return;
						}
					
					}
				}
				}
				//sprawdzamy calkowita poprawnosc
				for(String val : valid){
					if(val=="true"){
						
					}else{
						event.getInventory().setResult(new ItemStack(Material.AIR));
						return;
					}
				}
	    }

Skrypt jest dosyc prosty - mam nowego crafta, na blaze rod:

###

#!#

!!!

 

# - puste miejsce

! - gabka

 

chodzi o to, aby enchant byl mozliwy tylko wtedy, gdy gabka ma w nazie "kamien", a lore gabki "Avalonu"

 

Niby wszystko dziala dobrze, ale jezeli robie jakis inny enchant, to konsola zawsze pluje:

2013-06-30 19:01:56 [SEVERE] Could not pass event PrepareItemCraftEvent to LancelotMC v1.0
org.bukkit.event.EventException
	at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:427)
	at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62)
	at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:477)
	at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:462)
	at org.bukkit.craftbukkit.v1_5_R3.event.CraftEventFactory.callPreCraftEvent(CraftEventFactory.java:564)
	at net.minecraft.server.v1_5_R3.CraftingManager.craft(CraftingManager.java:292)
	at net.minecraft.server.v1_5_R3.ContainerWorkbench.a(ContainerWorkbench.java:59)
	at net.minecraft.server.v1_5_R3.InventoryCrafting.splitStack(InventoryCrafting.java:111)
	at net.minecraft.server.v1_5_R3.Slot.a(Slot.java:64)
	at net.minecraft.server.v1_5_R3.Container.clickItem(Container.java:358)
	at net.minecraft.server.v1_5_R3.PlayerConnection.a(PlayerConnection.java:1179)
	at net.minecraft.server.v1_5_R3.Packet102WindowClick.handle(SourceFile:31)
	at net.minecraft.server.v1_5_R3.NetworkManager.b(NetworkManager.java:292)
	at net.minecraft.server.v1_5_R3.PlayerConnection.d(PlayerConnection.java:109)
	at net.minecraft.server.v1_5_R3.ServerConnection.b(SourceFile:35)
	at net.minecraft.server.v1_5_R3.DedicatedServerConnection.b(SourceFile:30)
	at net.minecraft.server.v1_5_R3.MinecraftServer.r(MinecraftServer.java:581)
	at net.minecraft.server.v1_5_R3.DedicatedServer.r(DedicatedServer.java:226)
	at net.minecraft.server.v1_5_R3.MinecraftServer.q(MinecraftServer.java:477)
	at net.minecraft.server.v1_5_R3.MinecraftServer.run(MinecraftServer.java:410)
	at net.minecraft.server.v1_5_R3.ThreadServerApplication.run(SourceFile:573)
Caused by: java.lang.NullPointerException
	at karer1.lancelot.onPrepareItemCraft(lancelot.java:119)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:425)
	... 20 more

Wskazuje to na ta linijke:

if(ingr.getType().isBlock() == true && ingr.getType() == Material.SPONGE)
nie wiem co robie zle, ale prosze o pomoc. Dodam tez, ze zaczalem nauke przedwczoraj.

 

Z gory dziekuje za pomoc :)

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...