[Решено]Ошибка на PlayerJoinEvent

RedEnergy

Старожил
Пользователь
Баллы
103
Доброе время суток, тестирую открытие инвенторя при первом входе юзверя, но сервер закидывает меня ошибками и выбрасывает игрока в надписью "Internal server error".
Код:
Код:
package server.hopeworld.classes;

import java.util.ArrayList;
import java.util.logging.Logger;

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

public class Main extends JavaPlugin implements Listener{
    Logger log = Logger.getLogger("HopeWorld");
    public static Inventory test = Bukkit.createInventory(null, 9, "test:");
   
    public static void createDisplay(Material material, Inventory inv, int Slot, String name, String lore) {
        ItemStack item = new ItemStack(material);
        ItemMeta meta = item.getItemMeta();
        meta.setDisplayName(name);
        ArrayList<String> Lore = new ArrayList<String>();
        Lore.add(lore);
        meta.setLore(Lore);
        item.setItemMeta(meta);
        
        inv.setItem(Slot, item);
        
        }
   
    static
    {
        test.setItem(0, new ItemStack(Material.DIRT, 1));
        test.setItem(1, new ItemStack(Material.STONE, 1));
        test.setItem(2, new ItemStack(Material.CACTUS, 1));
    }
   
    public void onEnable()
    {
        getConfig().options().copyDefaults(true);
        saveConfig();
        log.info("Classes has been enabled");
        getServer().getPluginManager().registerEvents(this, this);
    }
    public void onDisable()
    {
        log.info("Classes has been disabled");
    }
   

    @EventHandler
    public void onPlayerFirstJoin(PlayerJoinEvent e) throws InterruptedException
    {
        if(!e.getPlayer().hasPlayedBefore())
        {
            e.getPlayer().openInventory(test);
        }
    }
    @EventHandler
    public void onInventoryClick(InventoryClickEvent event) {
        Player player = (Player) event.getWhoClicked();
        ItemStack clicked = event.getCurrentItem();
        Inventory inventory = event.getInventory();
        if (inventory.getName().equals(test.getName()))
        {
            if(clicked.getType() == Material.STONE)
            {
                event.setCancelled(true);
                player.closeInventory();
                player.getInventory().addItem(new ItemStack(Material.GOLD_BLOCK, 1));
            }
        }
    }

}
[02:29:24] [Server thread/WARN]: Failed to handle packet for /127.0.0.1:65034 java.lang.IllegalArgumentException: Listener already listening at net.minecraft.server.v1_7_R4.Container.addSlotListener(Container.java:54) ~[craftbukkit-1.7.10.jar:git-Bukkit-1.7.9-R0.2-18-ga04b586-b3107jnks] at net.minecraft.server.v1_7_R4.EntityPlayer.syncInventory(EntityPlayer.java:151) ~[craftbukkit-1.7.10.jar:git-Bukkit-1.7.9-R0.2-18-ga04b586-b3107jnks] at net.minecraft.server.v1_7_R4.PlayerList.a(PlayerList.java:154) ~[craftbukkit-1.7.10.jar:git-Bukkit-1.7.9-R0.2-18-ga04b586-b3107jnks] at net.minecraft.server.v1_7_R4.LoginListener.c(LoginListener.java:76) ~[craftbukkit-1.7.10.jar:git-Bukkit-1.7.9-R0.2-18-ga04b586-b3107jnks] at net.minecraft.server.v1_7_R4.LoginListener.a(LoginListener.java:42) ~[craftbukkit-1.7.10.jar:git-Bukkit-1.7.9-R0.2-18-ga04b586-b3107jnks] at net.minecraft.server.v1_7_R4.NetworkManager.a(NetworkManager.java:160) ~[craftbukkit-1.7.10.jar:git-Bukkit-1.7.9-R0.2-18-ga04b586-b3107jnks] at net.minecraft.server.v1_7_R4.ServerConnection.c(SourceFile:134) [craftbukkit-1.7.10.jar:git-Bukkit-1.7.9-R0.2-18-ga04b586-b3107jnks] at net.minecraft.server.v1_7_R4.MinecraftServer.v(MinecraftServer.java:667) [craftbukkit-1.7.10.jar:git-Bukkit-1.7.9-R0.2-18-ga04b586-b3107jnks] at net.minecraft.server.v1_7_R4.DedicatedServer.v(DedicatedServer.java:258) [craftbukkit-1.7.10.jar:git-Bukkit-1.7.9-R0.2-18-ga04b586-b3107jnks] at net.minecraft.server.v1_7_R4.MinecraftServer.u(MinecraftServer.java:558) [craftbukkit-1.7.10.jar:git-Bukkit-1.7.9-R0.2-18-ga04b586-b3107jnks] at net.minecraft.server.v1_7_R4.MinecraftServer.run(MinecraftServer.java:469) [craftbukkit-1.7.10.jar:git-Bukkit-1.7.9-R0.2-18-ga04b586-b3107jnks] at net.minecraft.server.v1_7_R4.ThreadServerApplication.run(SourceFile:628) [craftbukkit-1.7.10.jar:git-Bukkit-1.7.9-R0.2-18-ga04b586-b3107jnks] [02:29:24] [Server thread/INFO]: RedEnergy lost connection: Internal server error"
 
скорее всего плагин кривой :/
 
Попробуй открыть инвентарь через несколько тиков после захода игрока.
 
в конфигах классах смотри.
 
попробуй юзать не последний дев билд, а хоть немного стабильный.
 
Соглашусь, возможно даже будет достаточно одного тика.
Спасибо, сделал таким способом, все работает
Код:
    @EventHandler
    public void onPlayerFirstJoin(final PlayerJoinEvent e)
    {
        new BukkitRunnable() {
            @Override
            public void run(){
               if(!e.getPlayer().hasPlayedBefore())
               {
                    e.getPlayer().openInventory(test);
               }
            }
        }.runTaskLater(this, 20);
    }
 
Назад
Верх