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

[РЕШЕНО]Не работает HashMap, хотя всё вроде правильно

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

Статус темы:
Закрыта.
  1. Автор темы
    thematdev

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

    Баллы:
    46
    Имя в Minecraft:
    thematdev
    Так вот, я писал плагин на киты, всё довольно таки работает, пермишионы сам настрою, но меня до сих пор мучает одна проблема как сделать так чтобы игрок мог брать кит раз в день, а не тупо бесконечно кликать. Исходник одного кита так уж и быть спалю:
    [​IMG]
    Вопрос что нужно дописать в if(условие) и что нужно дописать в if(действие)?
    Заранее благодарен за помощь!
    Ну так вот теперь не работает HashMap

    PHP:
    package gUIMenu;

    import java.util.HashMap;

    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.Material;
    import org.bukkit.entity.Player;
    import org.bukkit.event.Listener;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.inventory.InventoryClickEvent;
    import org.*********ventory.Inventory;
    import org.*********ventory.ItemStack;

    import gUIMenu.utils.ItemUtil;

    public class 
    GUI implements Listener {
        static 
    HashMap<PlayerLongplayermap = new HashMap<PlayerLong>();
       
        public static 
    void openKitGUI(Player p) {
            
    Inventory inv Bukkit.createInventory(null9"Выбор кита");
            
    inv.setItem(0ItemUtil.create(Material.LEATHER_HELMETChatColor.translateAlternateColorCodes('&'"&7Кит пользователя")));
            
    inv.setItem(1ItemUtil.create(Material.IRON_HELMETChatColor.translateAlternateColorCodes('&'"&fКит IRON")));
            
    inv.setItem(2ItemUtil.create(Material.GLOWSTONEChatColor.translateAlternateColorCodes('&'"&2Кит VIP")));
            
    inv.setItem(3ItemUtil.create(Material.REDSTONEChatColor.translateAlternateColorCodes('&'"&8Кит VIP+")));
            
    inv.setItem(4ItemUtil.create(Material.GOLD_CHESTPLATEChatColor.translateAlternateColorCodes('&'"&eКит GOLD")));
            
    inv.setItem(5ItemUtil.create(Material.DIAMOND_SWORDChatColor.translateAlternateColorCodes('&'"&bКит DIAMOND")));
            
    inv.setItem(6ItemUtil.create(Material.GOLD_BLOCKChatColor.translateAlternateColorCodes('&'"&6&lКит SPONSOR")));
            
    inv.setItem(8ItemUtil.create(Material.WOOD_DOORChatColor.translateAlternateColorCodes('&'"&4Выход")));
           
            
    p.openInventory(inv);
           
        }
        @
    EventHandler
        
    public static void OnInventoryClick (InventoryClickEvent e) {
            
    long currenttime System.currentTimeMillis();
            
    long lasttime 0;
            
    Player p = (Playere.getWhoClicked();
           
            if (
    e.getInventory().getName().equalsIgnoreCase("Выбор кита")) {
                
    e.setCancelled(true);
               
               
                if (
    e.getCurrentItem().getType() == Material.WOOD_DOOR) {
                    
    p.closeInventory();
                }
               
                    else if (
    e.getCurrentItem().getType() == Material.LEATHER_HELMET) {
                        if (
    playermap.containsKey(p)) {
                            
    playermap.put(pcurrenttime 87600000);
                        } else {
                            
    lasttime playermap.get(p);
                        }
                        if (
    currenttime lasttime >= 87600000) {
                            
    p.getInventory().setHelmet(new ItemStack(Material.LEATHER_HELMET));
                            
    p.getInventory().setChestplate(new ItemStack(Material.LEATHER_CHESTPLATE));
                            
    p.getInventory().setLeggings(new ItemStack(Material.LEATHER_LEGGINGS));
                            
    p.getInventory().setBoots(new ItemStack(Material.LEATHER_BOOTS));
                            
    p.getInventory().addItem(new ItemStack(Material.WOOD_SWORD));
                            
    p.getInventory().addItem(new ItemStack(Material.COBBLESTONE64));
                            
    p.getInventory().addItem(new ItemStack(Material.LAVA_BUCKET));
                            
    p.getInventory().addItem(new ItemStack(Material.WATER_BUCKET));
                           
                            
    p.sendMessage(ChatColor.translateAlternateColorCodes('&'"&2Поздравляем Вы получили набор &7&lОБЫЧНОГО ПОЛЬЗОВАТЕЛЯ&2!"));
                        }
                        else {
                            
    p.sendMessage(ChatColor.RED "Вы уже получали кит ОБЫЧНОГО ПОЛЬЗОВАТЕЛЯ сегодня!");
                        }
                        
    /*
                        p.getInventory().setHelmet(new ItemStack(Material.LEATHER_HELMET));
                        p.getInventory().setChestplate(new ItemStack(Material.LEATHER_CHESTPLATE));
                        p.getInventory().setLeggings(new ItemStack(Material.LEATHER_LEGGINGS));
                        p.getInventory().setBoots(new ItemStack(Material.LEATHER_BOOTS));
                        p.getInventory().addItem(new ItemStack(Material.WOOD_SWORD));
                        p.getInventory().addItem(new ItemStack(Material.COBBLESTONE, 64));
                        p.getInventory().addItem(new ItemStack(Material.LAVA_BUCKET));
                        p.getInventory().addItem(new ItemStack(Material.WATER_BUCKET));
                       
                        p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&2Поздравляем Вы получили набор &7&lОБЫЧНОГО ПОЛЬЗОВАТЕЛЯ&2!"));
                        */
                    
    }
    //Тут костыли и анархия(другие киты) и поэтому в них пока нет хэшмэпа, они работают и не мешают(хоть и бесконечные)

    [17:08:30] [Server thread/ERROR]: Could not pass event InventoryClickEvent to GUIMenu v1.0
    org.bukkit.event.EventException
    at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:305) ~[Spigot.jar:git-Spigot-8a983f9-e81edfc]
    at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[Spigot.jar:git-Spigot-8a983f9-e81edfc]
    at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502) [Spigot.jar:git-Spigot-8a983f9-e81edfc]
    at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:487) [Spigot.jar:git-Spigot-8a983f9-e81edfc]
    at net.minecraft.server.v1_8_R1.PlayerConnection.a(PlayerConnection.java:1588) [Spigot.jar:git-Spigot-8a983f9-e81edfc]
    at net.minecraft.server.v1_8_R1.PacketPlayInWindowClick.a(SourceFile:31) [Spigot.jar:git-Spigot-8a983f9-e81edfc]
    at net.minecraft.server.v1_8_R1.PacketPlayInWindowClick.a(SourceFile:9) [Spigot.jar:git-Spigot-8a983f9-e81edfc]
    at net.minecraft.server.v1_8_R1.PacketHandleTask.run(SourceFile:13) [Spigot.jar:git-Spigot-8a983f9-e81edfc]
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_141]
    at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_141]
    at net.minecraft.server.v1_8_R1.MinecraftServer.z(MinecraftServer.java:696) [Spigot.jar:git-Spigot-8a983f9-e81edfc]
    at net.minecraft.server.v1_8_R1.DedicatedServer.z(DedicatedServer.java:316) [Spigot.jar:git-Spigot-8a983f9-e81edfc]
    at net.minecraft.server.v1_8_R1.MinecraftServer.y(MinecraftServer.java:634) [Spigot.jar:git-Spigot-8a983f9-e81edfc]
    at net.minecraft.server.v1_8_R1.MinecraftServer.run(MinecraftServer.java:537) [Spigot.jar:git-Spigot-8a983f9-e81edfc]
    at java.lang.Thread.run(Unknown Source) [?:1.8.0_141]
    Caused by: java.lang.NullPointerException
    at gUIMenu.GUI.OnInventoryClick(GUI.java:52) ~[?:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_141]
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_141]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_141]
    at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_141]
    at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:301) ~[Spigot.jar:git-Spigot-8a983f9-e81edfc]
    ... 14 more
    Буду очень благодарен тому, кто поможет. Заранее спасибо :3
     
    Последнее редактирование: 21 авг 2017
  2. Exception_Prototype

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

    Баллы:
    96
    Получи время, когда он его получил(храни его где-то). Когда он снова попробует получить его опять получи время и сравни, если больше дня прошло - выдавай, в противном случае gg.
     
  3. Автор темы
    thematdev

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

    Баллы:
    46
    Имя в Minecraft:
    thematdev
    Это и дауну понятно. Только с помощью чего лучше делать, итак нагрузка от самописов большая будет, а тут ещё и это...
     
  4. Dan_Ender

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

    Баллы:
    76
    Код:
    DateFormat dateFormat = new SimpleDateFormat("dd"); //Full date: yyyy/MM/dd HH:mm:ss
    Date date = new Date();
    String curDate = dateFormat.format(date);
     
  5. Автор темы
    thematdev

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

    Баллы:
    46
    Имя в Minecraft:
    thematdev
    Спасибо, но можешь сделать с помощью HashMap'ов уже готовый код.
     
  6. Автор темы
    thematdev

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

    Баллы:
    46
    Имя в Minecraft:
    thematdev
    А то не врубаюсь(
     
  7. Dan_Ender

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

    Баллы:
    76
    Данный код вернёт день в строке curDate, дальше записывай его например в yml
     
  8. Автор темы
    thematdev

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

    Баллы:
    46
    Имя в Minecraft:
    thematdev
    Я записываю в хэш-мап... Так проще типа, и да табы не вставились поч-то. Но с ними варнов и ошибок нету)
     
  9. Dan_Ender

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

    Баллы:
    76
    И тут твой сервер падает, и всё, данным капут...
     
  10. Автор темы
    thematdev

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

    Баллы:
    46
    Имя в Minecraft:
    thematdev
    Так а в чём проблема почему не работает кит? Сервер не упадет...
     
  11. hyndorik

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

    Баллы:
    98
    Имя в Minecraft:
    hyndo

    Почему у тебя мапа в uppercase идет? Это че константа?
     
  12. Автор темы
    thematdev

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

    Баллы:
    46
    Имя в Minecraft:
    thematdev
    На переменные Eclipse ругается, на это нет, ну блин я не знаю как ещё это делать, ведь в YML много места надо. Ну так почему не работает?
    UPD: Поменял и ниче не поменялось(
     
  13. Автор темы
    thematdev

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

    Баллы:
    46
    Имя в Minecraft:
    thematdev
    Up: Смотрите новый вопрос ТЕМЫ! ВАЖНО!
     
  14. Cool_boy

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

    Баллы:
    96
    Имя в Minecraft:
    prettydude
    Время не может достать с мапы. Если игрока там нету - возвращает null. Втули проверку.
     
  15. Автор темы
    thematdev

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

    Баллы:
    46
    Имя в Minecraft:
    thematdev
    PHP:
                        if (playermap.containsKey(p)) {
                            
    playermap.put(pcurrenttime 87600000);
                        } else {
                            
    lasttime playermap.get(p);
                        }
    Это по твоему что?
     
  16. Автор темы
    thematdev

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

    Баллы:
    46
    Имя в Minecraft:
    thematdev
    Ало вообще будете отвечать?
     
  17. Slavkaa

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

    Баллы:
    76
    Имя в Minecraft:
    Slavok2001
    Ты так пишешь, будто люди обязаны твою проблему фиксить.
     
  18. Автор темы
    thematdev

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

    Баллы:
    46
    Имя в Minecraft:
    thematdev
    Нет, но блин посмотри актив на остальных темах, и на моей... Ну а проблема большая и тормозит разработку плагина, что очень плохо. Да и ещё люди не разбираясь в коде пишут:
    Печаль конечно, но всё равно спасибо :3 Надеюсь решится...
     
  19. Slavkaa

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

    Баллы:
    76
    Имя в Minecraft:
    Slavok2001
    Ты че, обкурился? Ты проверяешь: если есть игрок - добавить, если нет - получить...
     
  20. Slavkaa

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

    Баллы:
    76
    Имя в Minecraft:
    Slavok2001
    PHP:
    if(!playermap.containsKey(p)) {
    //kakaha
    } else {
    //kakaha #2
    }
     
Статус темы:
Закрыта.

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