Skocz do zawartości
  • 0

ERROR POMOCY :(


Killerek01

Pytanie

ERROR: 

Spoiler

92)
[15:55:36] [Server thread/WARN]:     ... 34 more
[15:55:36] [Server thread/INFO]: [KpierozekR-2.0] Enabling KpierozekR-2.0 v2.0
[15:55:36] [Server thread/INFO]: [INFO] Configuration has been loaded.
[15:55:36] [Server thread/INFO]: KpierozekR-2.0 >> Plugin zostal wlaczony: Poprawnie!
[15:55:36] [Server thread/INFO]: KpierozekR-2.0 >> Plugin zostal napisany przez Pietreg aka Killerek01
[15:55:36] [Server thread/INFO]: Server permissions file permissions.yml is empty, ignoring it
[15:55:36] [Server thread/INFO]: CONSOLE: [0;32;1mReload complete.[m
[15:55:36] [Craft Scheduler Thread - 1/INFO]: '[0;33;1m[21mMC.XFOSAHC.PL'  '[0;37;22mNasz teamspeak: [0;32;22mnew-ts.pl' [m
[15:55:36] [Server thread/ERROR]: Could not pass event PlayerInteractEvent to XFHC-Core-6.0 v6.0
org.bukkit.event.EventException
    at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:302) ~[Spigot.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
    at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[Spigot.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
    at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:509) [Spigot.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
    at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:494) [Spigot.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
    at org.bukkit.craftbukkit.v1_7_R4.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:242) [Spigot.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
    at org.bukkit.craftbukkit.v1_7_R4.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:212) [Spigot.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
    at net.minecraft.server.v1_7_R4.PlayerConnection.a(PlayerConnection.java:1082) [Spigot.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
    at net.minecraft.server.v1_7_R4.PacketPlayInArmAnimation.a(PacketPlayInArmAnimation.java:28) [Spigot.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
    at net.minecraft.server.v1_7_R4.PacketPlayInArmAnimation.handle(PacketPlayInArmAnimation.java:40) [Spigot.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
    at net.minecraft.server.v1_7_R4.NetworkManager.a(NetworkManager.java:186) [Spigot.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
    at net.minecraft.server.v1_7_R4.ServerConnection.c(ServerConnection.java:81) [Spigot.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
    at net.minecraft.server.v1_7_R4.MinecraftServer.v(MinecraftServer.java:734) [Spigot.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
    at net.minecraft.server.v1_7_R4.DedicatedServer.v(DedicatedServer.java:289) [Spigot.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
    at net.minecraft.server.v1_7_R4.MinecraftServer.u(MinecraftServer.java:584) [Spigot.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
    at net.minecraft.server.v1_7_R4.MinecraftServer.run(MinecraftServer.java:490) [Spigot.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
    at net.minecraft.server.v1_7_R4.ThreadServerApplication.run(SourceFile:628) [Spigot.jar:git-Spigot-1.7.9-R0

Clasa pluginu 

 

Spoiler

import org.bukkit.Bukkit;
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.player.PlayerInteractEvent;

import pl.pietreg.xfosahc.core.utils.Utils;

public class VoucherListener implements Listener{

  @EventHandler
  public void VIP(PlayerInteractEvent event)
  {
    Player p = event.getPlayer();
    if ((event.getAction() == Action.LEFT_CLICK_BLOCK) || (event.getAction() == Action.LEFT_CLICK_AIR) || (event.getAction() == Action.RIGHT_CLICK_AIR) || (event.getAction() == Action.RIGHT_CLICK_BLOCK))
    {
        if (event.getItem().getType() == Material.PAPER  && (event.getItem().getItemMeta().getDisplayName().equals("§6§lVoucher na Vipa!"))){
      {
        Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "pex user " + event.getPlayer().getDisplayName() + " group set Vip");
        event.getPlayer().getInventory().remove(Material.PAPER);
        Utils.sendMsg(p, "&aPoprawnie wykorzystano voucher na vipa!");
      }
    }
  }
}
  
  @EventHandler
  public void TURBODROPIDOUBLELLOOT(PlayerInteractEvent event)
  {
    Player p = event.getPlayer();
    if ((event.getAction() == Action.LEFT_CLICK_BLOCK) || (event.getAction() == Action.LEFT_CLICK_AIR) || (event.getAction() == Action.RIGHT_CLICK_AIR) || (event.getAction() == Action.RIGHT_CLICK_BLOCK))
    {  
     if (event.getItem().getType() == Material.PAPER  && (event.getItem().getItemMeta().getDisplayName().equals("§6§lVoucher na Turbodrop&DoubleLoot!"))){
      {
        Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "turbogracz set " + event.getPlayer().getDisplayName() + " 1h");
        Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "doubleloot set " + event.getPlayer().getDisplayName() + " 1h");
        event.getPlayer().getInventory().remove(Material.PAPER);
        Utils.sendMsg(p, "&aPoprawnie wykorzystano voucher na TurboDrop&D&r&aDoubleLoot!");
      }
    }
  }
 }
}

PROSZĘ O POMOC!

Odnośnik do komentarza
https://skript.pl/temat/18401-error-pomocy/
Udostępnij na innych stronach

1 odpowiedź na to pytanie

Rekomendowane odpowiedzi

  • 0

Nie podaliście Towarzyszu całego błędu. Po kodzie domyślam się, że jest to NullPointerException. Wyrzucany jest on w przypadku, gdy próbujemy operować na null. Co to znaczy? Mamy sobie przykładowo zmienną

Player player = null;
player.cokolwiek

która jest równa pustce. To znaczy, że mamy sobie zmienną o typie Player, natomiast nic nie posiada, jest pusta. Próba wykonania na niej jakiejkolwiek metody spowoduje wyrzucenie wyżej wspomnianego NullPointerException, często nazywany po prostu "NPE".

 

Teraz wracając do Waszego kodu Towarzyszu. Po sprawdzeniu wszystkich akcji macie if, który sprawdza czy item, przedmiot, który został użyty do interakcji jest Material.PAPER. Teraz jaki jest tu błąd? Otóż wszystko będzie okej, jeżeli rzeczywiście będziemy trzymać w ręku jakiś przedmiot. Problem powstaje wtedy gdy spróbujemy integrować, czyli kliknąć myszką, gdy mamy pustą rękę. Spowoduje to, że metoda getItem() zwróci null. Następnie próbujecie na ItemStacku (bo to zwraca getItem()) wykonać metodę getType(), tutaj wywoływany jest NullPointerException. Dzieje się tak, ponieważ ten ItemStack z getItem() jest nullem. Działanie tego wytłumaczyłem trochę wyżej.

 

Pytacie pewnie jak to naprawić. To nie jest żaden problem. Musimy sprawdzić czy ten ItemStack nie jest równy null. Aby uniknąć tworzenia zbędnej ilości bloków, czy tak jak to jest w Skript - tabowania. Najlepiej będzie to zrobić następująco:

// Najpierw tworzymy zmienną "item", której wartością będzie
// przedmiot którym dokonano interakcji w evencie.
ItemStack item = event.getItem();
if (item == null) {
    // Kod w środku tego ifa wykona się jeżeli zmienna "item"
    // będzie nullem. Jeżeli tak się stanie robimy "return".
    // Return kończy działanie metody, jako, że metoda jest
    // "void", czyli pustką, nic nie zwracającą - wystarczy
    // samo wyrażenie "return". Po wykonaniu "return" kod
    // poniżej jego, jak i poza tym ifem już się nie wykona.
    return;
}

 

Robotnicze Pozdrowienia!

Odnośnik do komentarza
https://skript.pl/temat/18401-error-pomocy/#findComment-125853
Udostępnij na innych stronach

Nieaktywny
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

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