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

Помогите Восстановление блока по прохождению времени

Тема в разделе "Разработка плагинов для новичков", создана пользователем Lite-craft, 30 мар 2016.

  1. Автор темы
    Lite-craft

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

    Баллы:
    46
    Имя в Minecraft:
    shiroihana
    Как сделать чтобы заменив блок он возвращался обратно через промежуток времени.
    Многие пишут через HashMap но я им никогда не пользовался и не знаю как
    Подскажите по этому вопросу.
     
  2. Хостинг MineCraft
    <
  3. CoolBoy

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

    Баллы:
    96
    Skype:
    thecoolboy2070
    Имя в Minecraft:
    CoolBoy
    Никто тебе HashMap и не писал. Он используется для совсем других целей. В твоём случае нужен sheduler.

    UPD: можно использовать HashMap, но тогда придётся хранить блок который заменили, а после прошествия времени возвращать его назад. Но есть способ проще.
     
    Последнее редактирование: 30 мар 2016
  4. Автор темы
    Lite-craft

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

    Баллы:
    46
    Имя в Minecraft:
    shiroihana
    Ну я смотрел другие темы, там и говорили про HashMap. Ты говоришь про scheduler но ведь нужно сначало получить этот блок и как то его хранить, пока для этого моих знаний не достаточно.
     
  5. CoolBoy

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

    Баллы:
    96
    Skype:
    thecoolboy2070
    Имя в Minecraft:
    CoolBoy
    Не обязательно его получать и совсем не обязательно его хранить.
    Тебе нужно менять его на карте или изменять его лишь визуально?
     
  6. Автор темы
    Lite-craft

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

    Баллы:
    46
    Имя в Minecraft:
    shiroihana
     
  7. CoolBoy

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

    Баллы:
    96
    Skype:
    thecoolboy2070
    Имя в Minecraft:
    CoolBoy
    Тогда создавай мапу с блоком и в методе, где тебе нужно менять блок, помещай старый блок в мапу и меняй на новый. После прошествия таймера, вынимай из мапы старый блок и ставь его на своё место.
     
  8. Автор темы
    Lite-craft

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

    Баллы:
    46
    Имя в Minecraft:
    shiroihana
     
  9. CoolBoy

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

    Баллы:
    96
    Skype:
    thecoolboy2070
    Имя в Minecraft:
    CoolBoy
  10. Автор темы
    Lite-craft

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

    Баллы:
    46
    Имя в Minecraft:
    shiroihana
    Я искал но там все на англ. трудно, ну да ладно буду пробовать спасибо и на этом[DOUBLEPOST=1459348298,1459347948][/DOUBLEPOST]
    Вот я думаю я нашел его (или другой но простой так же) перед изменением блока получить его тип и поставить в мире на каких либо координатах, а потом просто брать его от туда заменять обратно и удалять с тех координат
     
  11. CoolBoy

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

    Баллы:
    96
    Skype:
    thecoolboy2070
    Имя в Minecraft:
    CoolBoy
    HashMap <Material, Location> block = new HashMap <Material, Location> ();

    В методе где ты меняешь блок:
    берёшь блок, берёшь тип, дальше
    block.put([материал блока], [его локация]);

    Также с возвращением. Но если у блока есть дата, то придётся и дату где-то хранить.
     
  12. Автор темы
    Lite-craft

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

    Баллы:
    46
    Имя в Minecraft:
    shiroihana
    Можно пример?
     
  13. CoolBoy

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

    Баллы:
    96
    Skype:
    thecoolboy2070
    Имя в Minecraft:
    CoolBoy
    А что я тебе написал?
     
  14. Автор темы
    Lite-craft

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

    Баллы:
    46
    Имя в Minecraft:
    shiroihana
    Кода в целом
     
  15. CoolBoy

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

    Баллы:
    96
    Skype:
    thecoolboy2070
    Имя в Minecraft:
    CoolBoy
    Всё очень плохо.
     
  16. Автор темы
    Lite-craft

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

    Баллы:
    46
    Имя в Minecraft:
    shiroihana
    Я нуб
     
  17. GoodCoder

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

    Баллы:
    76
    Если задание замены блока отменять не требуется, то map не нужен. Просто создаём задание с задержкой и всё.
     
  18. Автор темы
    Lite-craft

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

    Баллы:
    46
    Имя в Minecraft:
    shiroihana
    Мне нужно чтобы блок заменялся на 10 секунд песчанником
     
  19. Dymeth

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

    Баллы:
    76
    Будет довольно удобно сделать так:
    Создаём класс (например ModificatedBlock), в котором будем хранить Long timestamp, Location position и Material block, конструктор, геттер времени (long getTimestamp(), например), метод для восстановления блока - recoveryBlock().
    Все объекты класса храним в каком-нибудь List. В шедулере регулярно проходимся циклом по всему листу. Сравниваем текущее время со временем создания - если разница больше определённого значения, вызываем метод recoveryBlock() объекта, а из списка удаляем.
    Нужно учесть, что после перезагрузки сервера список объектов будет пустым, поэтому если нужно сохранять изменённые блоки, то опять же в цикле это делать.
     
  20. CoolBoy

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

    Баллы:
    96
    Skype:
    thecoolboy2070
    Имя в Minecraft:
    CoolBoy
    Тогда тебе проще будет брать player и отправлять ему sendBlockChange().
     
  21. GoodCoder

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

    Баллы:
    76
    Когда он должен заменяться и для чего?
     

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