Skocz do zawartości
  • 0

Błąd


Grex

Pytanie

Kiedy dodałem aby gracz wykonał komendę w InventoryClickEvent zaczęło się takie coś w konsoli robić:

[22:07:37 ERROR]: Could not pass event InventoryClickEvent to FlintMcPlugin v1.0
org.bukkit.event.EventException
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:302) ~[patched.jar:git-PaperSpigot-"4c7641d"]
        at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:78) ~[patched.jar:git-PaperSpigot-"4c7641d"]
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[patched.jar:git-PaperSpigot-"4c7641d"]
        at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:517) [patched.jar:git-PaperSpigot-"4c7641d"]
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:502) [patched.jar:git-PaperSpigot-"4c7641d"]
        at net.minecraft.server.v1_8_R3.PlayerConnection.a(PlayerConnection.java:1657) [patched.jar:git-PaperSpigot-"4c7641d"]
        at net.minecraft.server.v1_8_R3.PacketPlayInWindowClick.a(SourceFile:31) [patched.jar:git-PaperSpigot-"4c7641d"]
        at net.minecraft.server.v1_8_R3.PacketPlayInWindowClick.a(SourceFile:9) [patched.jar:git-PaperSpigot-"4c7641d"]
        at net.minecraft.server.v1_8_R3.PlayerConnectionUtils$1.run(SourceFile:13) [patched.jar:git-PaperSpigot-"4c7641d"]
        at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) [?:?]
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
        at net.minecraft.server.v1_8_R3.SystemUtils.a(SourceFile:44) [patched.jar:git-PaperSpigot-"4c7641d"]
        at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:774) [patched.jar:git-PaperSpigot-"4c7641d"]
        at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:378) [patched.jar:git-PaperSpigot-"4c7641d"]
        at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:713) [patched.jar:git-PaperSpigot-"4c7641d"]
        at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:616) [patched.jar:git-PaperSpigot-"4c7641d"]
        at java.base/java.lang.Thread.run(Thread.java:832) [?:?]
Caused by: java.lang.NullPointerException
        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:152) ~[patched.jar:git-PaperSpigot-"4c7641d"]
        at org.bukkit.craftbukkit.v1_8_R3.CraftServer.dispatchCommand(CraftServer.java:666) ~[patched.jar:git-PaperSpigot-"4c7641d"]
        at org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer.performCommand(CraftPlayer.java:339) ~[patched.jar:git-PaperSpigot-"4c7641d"]
        at pl.Greexowy.FlintMC.listeners.InventoryClickListener.onPlayerClickInventory(InventoryClickListener.java:126) ~[?:?]
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
        at java.base/java.lang.reflect.Method.invoke(Method.java:564) ~[?:?]
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:300) ~[patched.jar:git-PaperSpigot-"4c7641d"]
        ... 16 more

Pomoże ktoś?

Odnośnik do komentarza
https://skript.pl/temat/39093-b%C5%82%C4%85d/
Udostępnij na innych stronach

18 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 0
3 minuty temu, Peridot napisał:

Daj kod pluginu, pewnie coś robisz nie tak :v

@Peridot oto kod klasy odpowiedzialnej za klikanie:

Cytat

package pl.Greexowy.FlintMC.listeners;

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;

import java.util.ArrayList;

import static pl.Greexowy.FlintMC.listeners.AsyncPlayerChatListener.chat;

public class InventoryClickListener implements Listener {
    @EventHandler
    public void onPlayerClickInventory(InventoryClickEvent event) {
        final Player player = (Player) event.getWhoClicked();
        if(event.getInventory().getTitle().equals(ChatColor.RED + "Wybierz Tryb")) {
            player.playSound(player.getLocation(), Sound.ORB_PICKUP, 1, 2);
            if(event.getCurrentItem().getItemMeta() != null) {
                if(event.getCurrentItem().getItemMeta().getDisplayName() != null){
                    if(event.getCurrentItem().getItemMeta().getDisplayName().equals(" ")) {
                        event.setCancelled(true);
                    }
                    if(event.getCurrentItem().getItemMeta().getDisplayName().equals("" + ChatColor.YELLOW + ChatColor.BOLD + "UHC " + ChatColor.RESET + ChatColor.GRAY + "PVP, FUN")) {
                        event.setCancelled(true);
                        player.performCommand("connect");
                    }
                    if(event.getCurrentItem().getItemMeta().getDisplayName().equals("" + ChatColor.RED + ChatColor.BOLD + "KIT PVP " + ChatColor.RESET + ChatColor.GRAY + "PVP, FUN")) {
                        event.setCancelled(true);
                        player.performCommand("connect");
                    }
                    if(event.getCurrentItem().getItemMeta().getDisplayName().equals("" + ChatColor.DARK_GREEN + ChatColor.BOLD + "SURVIVAL " + ChatColor.RESET + ChatColor.GRAY + "DZIALKI, PVP, FUN")) {
                        event.setCancelled(true);
                        player.performCommand("connect");
                    }
                    if(event.getCurrentItem().getItemMeta().getDisplayName().equals("" + ChatColor.AQUA + ChatColor.BOLD + "EVENT " + ChatColor.RESET + ChatColor.GRAY + "FUN")) {
                        event.setCancelled(true);
                        player.performCommand("connect");
                    }
                    if(event.getCurrentItem().getItemMeta().getDisplayName().equals("" + ChatColor.DARK_BLUE + ChatColor.BOLD + "BUDOWNICZY")) {
                        event.setCancelled(true);
                        player.performCommand("connect");
                    }
                    if(event.getCurrentItem().getItemMeta().getDisplayName().equals("" + ChatColor.BLUE + ChatColor.BOLD + "BUDOWNICZY")) {
                        event.setCancelled(true);
                        player.performCommand("connect");
                    }
                    if(event.getCurrentItem().getItemMeta().getDisplayName().equals("" + ChatColor.GOLD + ChatColor.BOLD + "TECHNICZNY")) {
                        event.setCancelled(true);
                        player.performCommand("connect");
                    }
                    if(event.getCurrentItem().getItemMeta().getDisplayName().equals("" + ChatColor.GREEN + ChatColor.BOLD + "TESTOWY")) {
                        event.setCancelled(true);
                        player.performCommand("connect");
                    }
                }
            }
        }
    }
}

 

Tak mam w main, aby zarejestrowało Event:

Cytat

public class FlintMCPlugin extends JavaPlugin implements Listener {
    @Override
    public void onEnable() {
        getServer().getPluginManager().registerEvents(new InventoryClickListener(), this);
    }
}

 

Jeżeli w klasie odpowiedzialnej za klikanie w eq nie ma player.performCommand("connect"); to działa, jeżeli jest = taki błąd

Odnośnik do komentarza
https://skript.pl/temat/39093-b%C5%82%C4%85d/#findComment-245828
Udostępnij na innych stronach

  • 0

Ta komenda /connect to jest ta komenda z bungeecorda do łączenia się z innymi serwerami? 

* Oraz tak ogólnie to co do kodu to zamień wszystkie ify oprócz pierwszego na else if bo teraz dalej sprawdza czy kliknięty item ma odpowiednią nazwę nawet jak już wcześniej był dobry 

Edytowane przez Peridot
Odnośnik do komentarza
https://skript.pl/temat/39093-b%C5%82%C4%85d/#findComment-245835
Udostępnij na innych stronach

  • 0
2 minuty temu, Peridot napisał:

Ta komenda /connect to jest ta komenda z bungeecorda do łączenia się z innymi serwerami? 

* Oraz tak ogólnie to co do kodu to zamień wszystkie ify oprócz pierwszego na else if bo teraz dalej sprawdza czy kliknięty item ma odpowiednią nazwę nawet jak już wcześniej był dobry 

Komenda /connect to komenda dodana przezemnie za pomocą SKRIPT+WILDSKRIPT, która łączy gracza z serverem Bungee @Peridot

Odnośnik do komentarza
https://skript.pl/temat/39093-b%C5%82%C4%85d/#findComment-245836
Udostępnij na innych stronach

  • 0

@Peridot W momencie kliknięcia na item, który ma wywołać komendę w konsoli nadal wyskakuje to:

Cytat

[17:28:27 ERROR]: Could not pass event InventoryClickEvent to FlintMcPlugin v1.0
org.bukkit.event.EventException
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:302) ~[patched.jar:git-PaperSpigot-"4c7641d"]
        at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:78) ~[patched.jar:git-PaperSpigot-"4c7641d"]
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[patched.jar:git-PaperSpigot-"4c7641d"]
        at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:517) [patched.jar:git-PaperSpigot-"4c7641d"]
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:502) [patched.jar:git-PaperSpigot-"4c7641d"]
        at net.minecraft.server.v1_8_R3.PlayerConnection.a(PlayerConnection.java:1657) [patched.jar:git-PaperSpigot-"4c7641d"]
        at net.minecraft.server.v1_8_R3.PacketPlayInWindowClick.a(SourceFile:31) [patched.jar:git-PaperSpigot-"4c7641d"]
        at net.minecraft.server.v1_8_R3.PacketPlayInWindowClick.a(SourceFile:9) [patched.jar:git-PaperSpigot-"4c7641d"]
        at net.minecraft.server.v1_8_R3.PlayerConnectionUtils$1.run(SourceFile:13) [patched.jar:git-PaperSpigot-"4c7641d"]
        at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) [?:?]
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
        at net.minecraft.server.v1_8_R3.SystemUtils.a(SourceFile:44) [patched.jar:git-PaperSpigot-"4c7641d"]
        at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:774) [patched.jar:git-PaperSpigot-"4c7641d"]
        at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:378) [patched.jar:git-PaperSpigot-"4c7641d"]
        at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:713) [patched.jar:git-PaperSpigot-"4c7641d"]
        at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:616) [patched.jar:git-PaperSpigot-"4c7641d"]
        at java.base/java.lang.Thread.run(Thread.java:832) [?:?]
Caused by: java.lang.NullPointerException
        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:152) ~[patched.jar:git-PaperSpigot-"4c7641d"]
        at org.bukkit.craftbukkit.v1_8_R3.CraftServer.dispatchCommand(CraftServer.java:666) ~[patched.jar:git-PaperSpigot-"4c7641d"]
        at pl.Greexowy.FlintMC.listeners.InventoryClickListener.onPlayerClickInventory(InventoryClickListener.java:118) ~[?:?]
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
        at java.base/java.lang.reflect.Method.invoke(Method.java:564) ~[?:?]
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:300) ~[patched.jar:git-PaperSpigot-"4c7641d"]
        ... 16 more

 

EDIT: Komendy które nie są ze Skript'a, działają poprawnie.

EDIT2: Jeżeli dam zamiast wykonać komendę, to za gracza napiszę coś na chacie komendę (player.chat) to działa.

Edytowane przez Grex
Odnośnik do komentarza
https://skript.pl/temat/39093-b%C5%82%C4%85d/#findComment-245844
Udostępnij na innych stronach

  • 0

Właściwie czemu wykonujesz komende ze skripta do łączenia się z innymi serwerami :thonk: Możesz połączyć się bezpośrednio w pluginie, tutaj masz nawet ładny poradnik do tego: 

 

Odnośnik do komentarza
https://skript.pl/temat/39093-b%C5%82%C4%85d/#findComment-245849
Udostępnij na innych stronach

  • 0
20 godzin temu, Peridot napisał:

Właściwie czemu wykonujesz komende ze skripta do łączenia się z innymi serwerami :thonk: Możesz połączyć się bezpośrednio w pluginie, tutaj masz nawet ładny poradnik do tego: 

 

@Peridot Kiedy próbuję to zrobić, pokazuje się ten błąd: (Na pewno wszystko dobrze zrobiłem, tak jak tam było)

Cytat

[15:15:17 ERROR]: Could not pass event InventoryClickEvent to FlintMcPlugin v1.0
org.bukkit.event.EventException
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:302) ~[patched.jar:git-PaperSpigot-"4c7641d"]
        at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:78) ~[patched.jar:git-PaperSpigot-"4c7641d"]
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[patched.jar:git-PaperSpigot-"4c7641d"]
        at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:517) [patched.jar:git-PaperSpigot-"4c7641d"]
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:502) [patched.jar:git-PaperSpigot-"4c7641d"]
        at net.minecraft.server.v1_8_R3.PlayerConnection.a(PlayerConnection.java:1657) [patched.jar:git-PaperSpigot-"4c7641d"]
        at net.minecraft.server.v1_8_R3.PacketPlayInWindowClick.a(SourceFile:31) [patched.jar:git-PaperSpigot-"4c7641d"]
        at net.minecraft.server.v1_8_R3.PacketPlayInWindowClick.a(SourceFile:9) [patched.jar:git-PaperSpigot-"4c7641d"]
        at net.minecraft.server.v1_8_R3.PlayerConnectionUtils$1.run(SourceFile:13) [patched.jar:git-PaperSpigot-"4c7641d"]
        at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) [?:?]
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
        at net.minecraft.server.v1_8_R3.SystemUtils.a(SourceFile:44) [patched.jar:git-PaperSpigot-"4c7641d"]
        at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:774) [patched.jar:git-PaperSpigot-"4c7641d"]
        at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:378) [patched.jar:git-PaperSpigot-"4c7641d"]
        at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:713) [patched.jar:git-PaperSpigot-"4c7641d"]
        at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:616) [patched.jar:git-PaperSpigot-"4c7641d"]
        at java.base/java.lang.Thread.run(Thread.java:832) [?:?]
Caused by: java.lang.NullPointerException
        at pl.Greexowy.FlintMC.listeners.InventoryClickListener.onPlayerClickInventory(InventoryClickListener.java:134) ~[?:?]
        at jdk.internal.reflect.GeneratedMethodAccessor68.invoke(Unknown Source) ~[?:?]
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
        at java.base/java.lang.reflect.Method.invoke(Method.java:564) ~[?:?]
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:300) ~[patched.jar:git-PaperSpigot-"4c7641d"]
        ... 16 more

 

 

Odnośnik do komentarza
https://skript.pl/temat/39093-b%C5%82%C4%85d/#findComment-245971
Udostępnij na innych stronach

  • 0
9 minut temu, Peridot napisał:

Hmm... Pokaż jak to zrobiłeś w tym kodzie z tego poradnika molki :thonk: Oraz czy sama komenda w skripcie działa jak ją wykonasz ręcznie :thonk:

1. Komenda dodana przez skript działa wykonana ręcznie

2. Komenda ze skrypta nie działa kiedy wykonuję ją w pluginie

3. Komenda ze skrypta działa kiedy w pluginie dam 'player.chat("/connect")'

4. Z tego poradnika co wysłałeś mi wyskakują te błędy co napisałem powyżej.

5. Moja klasa Main:

package pl.Greexowy.FlintMC;
import org.bukkit.Bukkit;
import org.bukkit.event.Listener;
import org.bukkit.plugin.java.JavaPlugin;
import pl.Greexowy.FlintMC.commands.ChatCommand;
import pl.Greexowy.FlintMC.commands.TrybCommand;
import pl.Greexowy.FlintMC.listeners.*;

public class FlintMCPlugin extends JavaPlugin implements Listener {
	private BungeeConnector connector;
	public BungeeConnector getConnector() {
    return this.connector;
	}
    @Override
    public void onEnable() {
		this.connector = new BungeeConnector(this);
        this.getServer().getMessenger().registerOutgoingPluginChannel(this, BungeeConnector.PLUGIN_CHANNEL);
        getServer().getPluginManager().registerEvents(new AsyncPlayerChatListener(), this);
        getServer().getPluginManager().registerEvents(new EntityDamageByEntityListener(), this);
        getServer().getPluginManager().registerEvents(new EntityDamageListener(), this);
        getServer().getPluginManager().registerEvents(new FoodLevelChangeListener(), this);
        getServer().getPluginManager().registerEvents(new InventoryClickListener(), this);
        getServer().getPluginManager().registerEvents(new PlayerJoinListener(), this);
        getServer().getPluginManager().registerEvents(new PlayerInteractListener(), this);
        getServer().getPluginManager().registerEvents(new WeatherChangeListener(), this);
        this.getCommand("chat").setExecutor(new ChatCommand());
        this.getCommand("tryb").setExecutor(new TrybCommand());
        Bukkit.getMessenger().registerOutgoingPluginChannel(this, "BungeeCord");
    }
}

6. Moja klasa BungeeConnector:

public class BungeeConnector {
    public static final String PLUGIN_CHANNEL = "BungeeCord";
    private final Plugin plugin;
    public BungeeConnector(Plugin plugin) {
        this.plugin = plugin;
    }
    public void connect(Player player, String target) {
        ByteArrayOutputStream array = new ByteArrayOutputStream();
        DataOutputStream output = new DataOutputStream(array);
        try {
            output.writeUTF("Connect");
            output.writeUTF(target);
        } catch (IOException ignored) {
        }
        player.sendPluginMessage(this.plugin, PLUGIN_CHANNEL, array.toByteArray());
    }
}

7. Fragment mający przesłać gracza w Inventory click:

if(event.getCurrentItem().getItemMeta().getDisplayName().equals("" + ChatColor.YELLOW + ChatColor.BOLD + "UHC " + ChatColor.RESET + ChatColor.GRAY + "PVP, FUN")){
	event.setCancelled(true);
    player.playSound(player.getLocation(), Sound.ORB_PICKUP, 1, 2);
    this.getConnector().connect(player, "survival");
    }

8. W klasie z inv click mam też:

public BungeeConnector getConnector() {
    return this.connector;
}

 

Edytowane przez Grex
Odnośnik do komentarza
https://skript.pl/temat/39093-b%C5%82%C4%85d/#findComment-245982
Udostępnij na innych stronach

  • 0
2 godziny temu, szymonjjay napisał:

Jeżeli chcesz odpalić komendę napisaną w skrypcie w pluginie to musisz zaimportować bibliotekę skripta i następnie wywołać metodę Skript.dispatchCommand(sender, command) o ile się nie mylę

Dobra, ale teraz już raczej kombinujemy dlaczego nie działa Bungee w pluginie XD

Edytowane przez Grex
Odnośnik do komentarza
https://skript.pl/temat/39093-b%C5%82%C4%85d/#findComment-246086
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Nieaktywny
Odpowiedz na pytanie...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

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

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...