1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

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

Тема в разделе "Разработка плагинов для новичков", создана пользователем RedEnergy, 17 авг 2014.

  1. Автор темы
    RedEnergy

    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"
     
  2. sanjee

    sanjee Активный участник Пользователь

    Баллы:
    78
    скорее всего плагин кривой :/
     
  3. Автор темы
    RedEnergy

    RedEnergy Старожил Пользователь

    Баллы:
    103
    Ну если ошибка есть, это очевидно что где-то криво. Весь вопрос - где именно?
     
  4. BeYkeR

    BeYkeR Старожил Девелопер Пользователь

    Баллы:
    173
    Попробуй открыть инвентарь через несколько тиков после захода игрока.
     
  5. sanjee

    sanjee Активный участник Пользователь

    Баллы:
    78
    в конфигах классах смотри.
     
  6. Code

    Code Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    _Gizmo
    попробуй юзать не последний дев билд, а хоть немного стабильный.
     
  7. fromgate

    fromgate Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    Соглашусь, возможно даже будет достаточно одного тика.
     
  8. Автор темы
    RedEnergy

    RedEnergy Старожил Пользователь

    Баллы:
    103
    Спасибо, сделал таким способом, все работает
    Код:
        @EventHandler
        public void onPlayerFirstJoin(final PlayerJoinEvent e)
        {
            new BukkitRunnable() {
                @Override
                public void run(){
                   if(!e.getPlayer().hasPlayedBefore())
                   {
                        e.getPlayer().openInventory(test);
                   }
                }
            }.runTaskLater(this, 20);
        }
     

Поделиться этой страницей