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] Plugin wywala błędy


Rekomendowane odpowiedzi

Opublikowano

Witam, mam pewien problem z pluginem, błędy:

[22:13:06] [Server thread/ERROR]: Could not pass event InventoryClickEvent to menuHenas v0.1
org.bukkit.event.EventException
	at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:302) ~[spigot.jar:git-Spigot-1649]
	at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[spigot.jar:git-Spigot-1649]
	at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:514) [spigot.jar:git-Spigot-1649]
	at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:499) [spigot.jar:git-Spigot-1649]
	at net.minecraft.server.v1_7_R4.PlayerConnection.a(PlayerConnection.java:1477) [spigot.jar:git-Spigot-1649]
	at net.minecraft.server.v1_7_R4.PacketPlayInWindowClick.a(PacketPlayInWindowClick.java:15) [spigot.jar:git-Spigot-1649]
	at net.minecraft.server.v1_7_R4.PacketPlayInWindowClick.handle(PacketPlayInWindowClick.java:65) [spigot.jar:git-Spigot-1649]
	at net.minecraft.server.v1_7_R4.NetworkManager.a(NetworkManager.java:186) [spigot.jar:git-Spigot-1649]
	at net.minecraft.server.v1_7_R4.ServerConnection.c(ServerConnection.java:81) [spigot.jar:git-Spigot-1649]
	at net.minecraft.server.v1_7_R4.MinecraftServer.v(MinecraftServer.java:734) [spigot.jar:git-Spigot-1649]
	at net.minecraft.server.v1_7_R4.DedicatedServer.v(DedicatedServer.java:289) [spigot.jar:git-Spigot-1649]
	at net.minecraft.server.v1_7_R4.MinecraftServer.u(MinecraftServer.java:584) [spigot.jar:git-Spigot-1649]
	at net.minecraft.server.v1_7_R4.MinecraftServer.run(MinecraftServer.java:490) [spigot.jar:git-Spigot-1649]
	at net.minecraft.server.v1_7_R4.ThreadServerApplication.run(SourceFile:628) [spigot.jar:git-Spigot-1649]
Caused by: java.lang.IllegalArgumentException: Null class cannot have a plugin
	at org.apache.commons.lang.Validate.notNull(Validate.java:192) ~[spigot.jar:git-Spigot-1649]
	at org.bukkit.plugin.java.JavaPlugin.getPlugin(JavaPlugin.java:509) ~[spigot.jar:git-Spigot-1649]
	at menuHenas.Main.onClick(Main.java:91) ~[?:?]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0_06-ea]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[?:1.7.0_06-ea]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.7.0_06-ea]
	at java.lang.reflect.Method.invoke(Method.java:601) ~[?:1.7.0_06-ea]
	at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:298) ~[spigot.jar:git-Spigot-1649]
	... 13 more

A tutaj kod z pluginu:

package menuHenas;

import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.util.Arrays;

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.inventory.InventoryClickEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.PlayerInventory;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.plugin.java.JavaPlugin;

public class Main extends JavaPlugin implements Listener {

	@Override
	public void onEnable() {
		this.getServer().getPluginManager().registerEvents(this, this);
		Bukkit.getMessenger().registerOutgoingPluginChannel(this, "BungeeCord");
	}

	public ItemStack su = new ItemStack(Material.WOOD_SWORD, 1);
	{
		ItemMeta im = su.getItemMeta();
		im.setDisplayName(ChatColor.GREEN + "EasyHC");
		su.setItemMeta(im);
	}
	public ItemStack dr = new ItemStack(Material.IRON_SWORD, 1);
	{
		ItemMeta im = dr.getItemMeta();
		im.setDisplayName(ChatColor.GREEN + "Survival");
		su.setItemMeta(im);
	}

	public ItemStack compass = new ItemStack(Material.COMPASS, 1);
	{
		ItemMeta im = compass.getItemMeta();
		im.setDisplayName(ChatColor.AQUA + "" + ChatColor.BOLD
				+ "World chooser");
		im.setLore(Arrays.asList(ChatColor.GOLD + "" + ChatColor.BOLD
				+ "Wybierz swiat - PPM !"));
		compass.setItemMeta(im);
	}

	org.bukkit.inventory.Inventory inv = Bukkit.getServer().createInventory(
			null, 9,
			ChatColor.DARK_PURPLE + "" + ChatColor.BOLD + "World chooser");
	{
		inv.setItem(1, su);
		inv.setItem(2, dr);
	}

	@EventHandler
	public void onJoin(PlayerJoinEvent e) {
		Player p = e.getPlayer();
		PlayerInventory i = p.getInventory();
		i.remove(compass);
		i.addItem(compass);
	}

	@EventHandler
	public void onClick(InventoryClickEvent e) {
		if (!e.getInventory()
				.getName()
				.equals(ChatColor.DARK_PURPLE + "" + ChatColor.BOLD
						+ "World chooser")) {
			return;
		}
		if (e.getCurrentItem().getItemMeta() == null) {
			return;
		}
		if (e.getCurrentItem().getItemMeta().getDisplayName() == su
				.getItemMeta().getDisplayName()) {
			if (e.getWhoClicked() instanceof Player) {
				Player p = (Player) e.getWhoClicked();
				final ByteArrayOutputStream b2 = new ByteArrayOutputStream();
				final DataOutputStream out2 = new DataOutputStream(b2);
				try {
					out2.writeUTF("Connect");
					out2.writeUTF("easyhc");
				} catch (IOException ex2) {
				}
				p.sendPluginMessage(Main.getPlugin(null), "BungeeCord",
						b2.toByteArray());
				p.closeInventory();
			}
		} else if (e.getCurrentItem().getItemMeta().getDisplayName() == su
				.getItemMeta().getDisplayName()) {
			if (e.getWhoClicked() instanceof Player) {
				int randGm = 0;
				Player p = (Player) e.getWhoClicked();
				if (randGm == 0) {
					p.closeInventory();
				} else {
					p.sendMessage(ChatColor.RED + "Wystapil blad");
					p.closeInventory();
				}
			}
		}
	}

	@EventHandler
	public void onClick1(InventoryClickEvent e) {
		if (!e.getInventory()
				.getName()
				.equals(ChatColor.DARK_PURPLE + "" + ChatColor.BOLD
						+ "World chooser")) {
			return;
		}
		if (e.getCurrentItem().getItemMeta() == null) {
			return;
		}
		if (e.getCurrentItem().getItemMeta().getDisplayName() == dr
				.getItemMeta().getDisplayName()) {
			if (e.getWhoClicked() instanceof Player) {
				Player p = (Player) e.getWhoClicked();
				final ByteArrayOutputStream b2 = new ByteArrayOutputStream();
				final DataOutputStream out2 = new DataOutputStream(b2);
				try {
					out2.writeUTF("Connect");
					out2.writeUTF("survival");
				} catch (IOException ex2) {
				}
				p.sendPluginMessage(Main.getPlugin(null), "BungeeCord",
						b2.toByteArray());
				p.closeInventory();
				p.closeInventory();
			}
		} else if (e.getCurrentItem().getItemMeta().getDisplayName() == dr
				.getItemMeta().getDisplayName()) {
			if (e.getWhoClicked() instanceof Player) {
				int randGm = 0;
				Player p = (Player) e.getWhoClicked();
				if (randGm == 0) {
					p.closeInventory();
				} else {
					p.sendMessage(ChatColor.RED + "Wystapil blad");
					p.closeInventory();
				}
			}
		}
	}

	@EventHandler
	public void onUse(PlayerInteractEvent e) {
		Player p = e.getPlayer();
		if (p.getItemInHand().getType() == Material.COMPASS) {
			if (p.getItemInHand()
					.getItemMeta()
					.getDisplayName()
					.equals(ChatColor.AQUA + "" + ChatColor.BOLD
							+ "World chooser")) {
				p.openInventory(inv);
			}
		}
	}
}

Proszę o pomoc, co w tym jest źle ?

Opublikowano

Błąd jest w linijce 91"p.sendPluginMessage(Main.getPlugin(null), "BungeeCord", b2.toByteArray());"

Co do jego rozwiązania to nie jestem pewien ale chyba Main.getplugin nie może być nullem

Opublikowano

Z jakiego poradnika korzystałeś pisząc to wysyłanie pakietu do Bungee? (PluginMessage)

Main.getPlugin(null)

!?!?!?!??!?!?

Opublikowano

@1361622928-U485574.pngPalvic

Zamieniłem więc na to:

                           p.sendPluginMessage(Menu.getPlugin(), "BungeeCord", b2.toByteArray());

Dodało mi automatycznie takie coś:

		private static Plugin getPlugin() {
			return null;
		}

I wyskakują chyba ciągle te same błędy.

[01:20:20] [Server thread/ERROR]: Could not pass event InventoryClickEvent to menuHenas v0.2
org.bukkit.event.EventException
	at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:302) ~[spigot.jar:git-Spigot-1649]
	at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[spigot.jar:git-Spigot-1649]
	at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:514) [spigot.jar:git-Spigot-1649]
	at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:499) [spigot.jar:git-Spigot-1649]
	at net.minecraft.server.v1_7_R4.PlayerConnection.a(PlayerConnection.java:1477) [spigot.jar:git-Spigot-1649]
	at net.minecraft.server.v1_7_R4.PacketPlayInWindowClick.a(PacketPlayInWindowClick.java:15) [spigot.jar:git-Spigot-1649]
	at net.minecraft.server.v1_7_R4.PacketPlayInWindowClick.handle(PacketPlayInWindowClick.java:65) [spigot.jar:git-Spigot-1649]
	at net.minecraft.server.v1_7_R4.NetworkManager.a(NetworkManager.java:186) [spigot.jar:git-Spigot-1649]
	at net.minecraft.server.v1_7_R4.ServerConnection.c(ServerConnection.java:81) [spigot.jar:git-Spigot-1649]
	at net.minecraft.server.v1_7_R4.MinecraftServer.v(MinecraftServer.java:734) [spigot.jar:git-Spigot-1649]
	at net.minecraft.server.v1_7_R4.DedicatedServer.v(DedicatedServer.java:289) [spigot.jar:git-Spigot-1649]
	at net.minecraft.server.v1_7_R4.MinecraftServer.u(MinecraftServer.java:584) [spigot.jar:git-Spigot-1649]
	at net.minecraft.server.v1_7_R4.MinecraftServer.run(MinecraftServer.java:490) [spigot.jar:git-Spigot-1649]
	at net.minecraft.server.v1_7_R4.ThreadServerApplication.run(SourceFile:628) [spigot.jar:git-Spigot-1649]
Caused by: java.lang.IllegalArgumentException: Plugin source cannot be null
	at org.bukkit.plugin.messaging.StandardMessenger.validatePluginMessage(StandardMessenger.java:473) ~[spigot.jar:git-Spigot-1649]
	at org.bukkit.craftbukkit.v1_7_R4.entity.CraftPlayer.sendPluginMessage(CraftPlayer.java:1046) ~[spigot.jar:git-Spigot-1649]
	at menuHenas.Menu.onClick(Menu.java:73) ~[?:?]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0_06-ea]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[?:1.7.0_06-ea]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.7.0_06-ea]
	at java.lang.reflect.Method.invoke(Method.java:601) ~[?:1.7.0_06-ea]
	at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:298) ~[spigot.jar:git-Spigot-1649]
	... 13 more

@shooly

Początkowo nie było tego null, zmieniałem wszystko po kolei (bo nie wiedziałem w czym jest błąd) i nadal nie działa :)

Opublikowano

Metoda sendPluginMessage wymaga podania w pierwszym parametrze instancji pluginu, który wysyła wiadomość. 

 

Zamiast:

p.sendPluginMessage(Main.getPlugin(null), "BungeeCord", b2.toByteArray());

napisz:

p.sendPluginMessage(this, "BungeeCord", b2.toByteArray());

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...