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

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

Discussion in 'Разработка плагинов для новичков' started by TorwaldOswarld, Mar 28, 2015.

Thread Status:
Not open for further replies.
  1. Автор темы
    TorwaldOswarld

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

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

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

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

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

    Trophy Points:
    68
    Имя в Minecraft:
    _TheMaxPlay_
    spigot 1.7.9
     
  5. LaoTheLizard

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Trophy Points:
    103
    Skype:
    sgp_the_controller
    В любом случае, так должно работать:
    Code:
    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 Старожил Девелопер Пользователь

    Trophy Points:
    173
    Skype:
    shkurovs
    Пожалуйста, не надо так делать.
     
Thread Status:
Not open for further replies.

Share This Page