Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Помогите Не работают ивенты .Помогите

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

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

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

    Баллы:
    68
    Имя в Minecraft:
    _TheMaxPlay_
    Добрый день , дорогие форумчане . Я столкнулся с такой проблемой , я написал плагин (мне не много помоги с кодом) . Дело в том , что не работают ивенты . То есть , при съедании золотого яблока игрок должен получать сообщение , и далее он вноситься в список на время (3 минуты) , теперь игрок сможет съесть яблоко , только через 3 минуты . Но ничего не пишет и игрок может есть яблоко . Помогите пожалуйста найти ошибку . Вот весь код http://pastebin.com/dxJYy6S7 . Лог инфо работает , в консоль пишет цифру 1 . Заранее спасибо !
     
  2. Хостинг MineCraft
    <
  3. Plasticable

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

    Баллы:
    173
    Skype:
    plasticable
    Имя в Minecraft:
    Plasticable
    Какое ядро?
     
  4. Автор темы
    TorwaldOswarld

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

    Баллы:
    68
    Имя в Minecraft:
    _TheMaxPlay_
    spigot 1.7.9
     
  5. LaoTheLizard

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

    Баллы:
    103
    Skype:
    sgp_the_controller
    Зачем ты проверяешь, что у него в руке?
    Код:
    if(event.getItem().getType() != Material.GOLDEN_APPLE){return;}
    
    Может, так?
     
  6. Автор темы
    TorwaldOswarld

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

    Баллы:
    68
    Имя в Minecraft:
    _TheMaxPlay_
    неа , не помогло
     
  7. LaoTheLizard

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

    Баллы:
    103
    Skype:
    sgp_the_controller
    И не поможет, это я так.
    А по вопросу, сделай лист не имен игроков, а игроков.
    Код:
     List<Player> players
    Это раз.
    А главное (это и есть твоя ошибка) - ты не добавил строку, в которой ты добавляешь игроков в этот список.
    Что-то вроде:
    Код:
    players.add(player);
    
     
  8. Автор темы
    TorwaldOswarld

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

    Баллы:
    68
    Имя в Minecraft:
    _TheMaxPlay_
    Спасибо , сейчас по пробую
     
  9. LaoTheLizard

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

    Баллы:
    103
    Skype:
    sgp_the_controller
    И фраза у тебя некорректная. Она всегда говорит, что через три минуты можно будет. А на самом деле это не так. И фраза будет логичнее, если писать так: "Золотое яблоко можно использовать не чаще раза в три минуты." Впрочем, это тоже не идеальное решение.
     
  10. Автор темы
    TorwaldOswarld

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

    Баллы:
    68
    Имя в Minecraft:
    _TheMaxPlay_
    а это не то ? if (players.contains(player.getName())) , и я не понял куда этот ( players.add(player); ) код нужно вставить ?
     
  11. LomNar

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

    Баллы:
    78
    Skype:
    radius981
    Имя в Minecraft:
    LomNar
    Ты свой код видел? Ты проверяешь есть ли игрок в списке, но список пуст т.к. ты ни где не добавляешь в него игрока! Вот и решение. Думаю сдесь больше нечего обсуждать...
     
    Последнее редактирование: 28 мар 2015
  12. serega6531

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

    Баллы:
    173
    Skype:
    shkurovs
    БОЖЕ, ЗАЧЕМ????
     
  13. Автор темы
    TorwaldOswarld

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

    Баллы:
    68
    Имя в Minecraft:
    _TheMaxPlay_
    Подскажи как надо сделать , чтобы всё работало . Пожалуйста[DOUBLEPOST=1427548358,1427548212][/DOUBLEPOST]
    я только начинаю в этом разбираться , и поэтому по просил помощи у более опытных людей
     
  14. serega6531

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

    Баллы:
    173
    Skype:
    shkurovs
    Никогда нигде не храните объект игрока.
     
  15. LomNar

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

    Баллы:
    78
    Skype:
    radius981
    Имя в Minecraft:
    LomNar
    Лучше UUID ну или ник
     
  16. Автор темы
    TorwaldOswarld

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

    Баллы:
    68
    Имя в Minecraft:
    _TheMaxPlay_
    я не знаю как сделать таймер по другому[DOUBLEPOST=1427548519,1427548485][/DOUBLEPOST]
    Подскажите пожалуйста как правильно сделать .
     
  17. LomNar

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

    Баллы:
    78
    Skype:
    radius981
    Имя в Minecraft:
    LomNar
    Пиши в скайп: radius981. Через 2 часа отвечу
     
  18. ensirius

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

    Баллы:
    123
    Регистрация события правильное, сообщение что плагин запущен вылазит? Если нет, то возможно проблема в plugin.yml
     
  19. Автор темы
    TorwaldOswarld

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

    Баллы:
    68
    Имя в Minecraft:
    _TheMaxPlay_
    да , сообщение появляется
     
  20. LaoTheLizard

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

    Баллы:
    103
    Skype:
    sgp_the_controller
    В любом случае, так должно работать:
    Код:
    package NoGoldenApple;
    
    import java.util.ArrayList;
    import java.util.List;
    import java.util.logging.Logger;
    
    import org.bukkit.ChatColor;
    import org.bukkit.Material;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.player.PlayerItemConsumeEvent;
    import org.bukkit.plugin.java.JavaPlugin;
    
    public class Main extends JavaPlugin implements Listener {
    
    Logger log = getLogger();
    public void onEnable()
    {
    getLogger().info("plugin has been Enabled");
    getServer().getPluginManager().registerEvents(this, this);
    }
    
    List<Player> players = new ArrayList<Player>();
    
    @EventHandler
    public void onItemConsume(PlayerItemConsumeEvent event){
       
        final Player player = event.getPlayer();
        if (event.getItem().getType() != Material.GOLDEN_APPLE) return;
        if (players.contains(player)){
        player.sendMessage(ChatColor.GOLD + "Золотое яблоко можно использовать не чаще раза в три минуты.");
        event.setCancelled(true);
        return;
        }
        players.add(player);
        getServer().getScheduler().scheduleSyncDelayedTask(this, new Runnable()
        {
            public void run()
            {
            players.remove(player);
            }
        }, 180L);
    }
    }
    
     
  21. serega6531

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

    Баллы:
    173
    Skype:
    shkurovs
    Пожалуйста, не надо так делать.
     
Статус темы:
Закрыта.

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