Skocz do zawartości
  • 0
LegalPL

Problem z eventem InventoryClickEvent

Pytanie

Witam!

Pisząc plugin tworzący gui napotkałem błąd, podczas gdy klikam w gui na puste pole, w konsoli wyświetla taki oto error:

[13:39:16 ERROR]: Could not pass event InventoryClickEvent to LegalnyPlugin v1.0
java.lang.NullPointerException: null
        at takmain.Main.onMenuClick(Main.java:72) ~[?:?]
        at com.destroystokyo.paper.event.executor.asm.generated.GeneratedEventExecutor16.execute(Unknown Source) ~[?:?]
        at org.bukkit.plugin.EventExecutor.lambda$create$1(EventExecutor.java:69) ~[patched_1.15.2.jar:git-Paper-143]
        at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:80) ~[patched_1.15.2.jar:git-Paper-143]
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[patched_1.15.2.jar:git-Paper-143]
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:559) ~[patched_1.15.2.jar:git-Paper-143]
        at net.minecraft.server.v1_15_R1.PlayerConnection.a(PlayerConnection.java:2333) ~[patched_1.15.2.jar:git-Paper-143]
        at net.minecraft.server.v1_15_R1.PacketPlayInWindowClick.a(SourceFile:32) ~[patched_1.15.2.jar:git-Paper-143]
        at net.minecraft.server.v1_15_R1.PacketPlayInWindowClick.a(SourceFile:10) ~[patched_1.15.2.jar:git-Paper-143]
        at net.minecraft.server.v1_15_R1.PlayerConnectionUtils.lambda$ensureMainThread$0(PlayerConnectionUtils.java:23) ~[patched_1.15.2.jar:git-Paper-143]
        at net.minecraft.server.v1_15_R1.TickTask.run(SourceFile:18) ~[patched_1.15.2.jar:git-Paper-143]
        at net.minecraft.server.v1_15_R1.IAsyncTaskHandler.executeTask(IAsyncTaskHandler.java:136) ~[patched_1.15.2.jar:git-Paper-143]
        at net.minecraft.server.v1_15_R1.IAsyncTaskHandlerReentrant.executeTask(SourceFile:23) ~[patched_1.15.2.jar:git-Paper-143]
        at net.minecraft.server.v1_15_R1.IAsyncTaskHandler.executeNext(IAsyncTaskHandler.java:109) ~[patched_1.15.2.jar:git-Paper-143]
        at net.minecraft.server.v1_15_R1.MinecraftServer.ba(MinecraftServer.java:1038) ~[patched_1.15.2.jar:git-Paper-143]
        at net.minecraft.server.v1_15_R1.MinecraftServer.executeNext(MinecraftServer.java:1031) ~[patched_1.15.2.jar:git-Paper-143]
        at net.minecraft.server.v1_15_R1.IAsyncTaskHandler.awaitTasks(IAsyncTaskHandler.java:119) ~[patched_1.15.2.jar:git-Paper-143]
        at net.minecraft.server.v1_15_R1.MinecraftServer.sleepForTick(MinecraftServer.java:1015) ~[patched_1.15.2.jar:git-Paper-143]
        at net.minecraft.server.v1_15_R1.MinecraftServer.run(MinecraftServer.java:938) ~[patched_1.15.2.jar:git-Paper-143]
        at java.lang.Thread.run(Unknown Source) [?:1.8.0_241]

A oto mój kod pluginu:

package takmain;

import java.util.ArrayList;

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.plugin.java.JavaPlugin;

public class Main extends JavaPlugin implements Listener{
	
	ArrayList<String> red = new ArrayList<String>();
	ArrayList<String> blue = new ArrayList<String>();
	
	public void onEnable() {
		getServer().getPluginManager().registerEvents(this, this);
	}
	
	private void openGUI(Player player) {
		Inventory inv = Bukkit.createInventory(null, 9, ChatColor.YELLOW + "Wybierz drużynę!");
		ItemStack blue = new ItemStack(Material.BLUE_WOOL);
		ItemStack red = new ItemStack(Material.RED_WOOL);
		ItemMeta blueMeta = blue.getItemMeta();
		ItemMeta redMeta = red.getItemMeta();
		blueMeta.setDisplayName(ChatColor.BLUE + "Drużyna niebieska");
		redMeta.setDisplayName(ChatColor.RED + "Drużyna czerwona");
		blue.setItemMeta(blueMeta);
		red.setItemMeta(redMeta);
		inv.setItem(3, blue);
		inv.setItem(5, red);
		player.openInventory(inv);
	}
	
	@EventHandler
	public void onPlayerJoin(PlayerJoinEvent event) {
		event.getPlayer().getInventory().clear();
		ItemStack item = new ItemStack(Material.NETHER_STAR, 1);
		ItemMeta meta = item.getItemMeta();
		meta.setDisplayName(ChatColor.YELLOW + "Wybierz drużynę!");
		item.setItemMeta(meta);
		event.getPlayer().getInventory().setItem(4, item);
	}
	
	@EventHandler
	public void onPlayerInteract(PlayerInteractEvent event) {
		if(event.getItem() != null && event.getItem().getItemMeta().getDisplayName() != null){
			if (event.getAction() == Action.RIGHT_CLICK_AIR || event.getAction() == Action.RIGHT_CLICK_BLOCK || event.getAction() == Action.LEFT_CLICK_BLOCK || event.getAction() == Action.LEFT_CLICK_AIR || event.getAction() == Action.PHYSICAL) {
				if (event.getItem().getType() == Material.NETHER_STAR){
					if (event.getItem().getItemMeta().getDisplayName().equals(ChatColor.YELLOW + "Wybierz drużynę!")){
						openGUI(event.getPlayer());

					}
				}
			}
		}
	}
	
	@EventHandler
	public void onMenuClick(InventoryClickEvent e){
		if (e.getWhoClicked() instanceof Player) {
			if (e.getView().getTitle().equalsIgnoreCase(ChatColor.YELLOW + "Wybierz drużynę!")) {
				if (e.getCurrentItem().getType() == Material.BLUE_WOOL){
					e.setCancelled(true);
				}

			}else if (e.getView().getTitle().equalsIgnoreCase(ChatColor.YELLOW + "Eluwina")) {
				if (e.getCurrentItem().getType() == Material.BLUE_WOOL){
					e.setCancelled(true);
				}
			}
			return;
		}
	}
}

Mam nadzieję, że coś poradzicie 🙂 

Pozdrawiam!

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

0 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

Nie udzielono jeszcze odpowiedzi na to pytanie

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się

  • Ostatnio przeglądający   (0 użytkowników)

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

Główny

Główny

Wprowadź swoją nazwę

×
×
  • Dodaj nową pozycję...