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

Помогите Спавн монстров днем

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

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

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

    Баллы:
    66
    Имя в Minecraft:
    dnebik
    гуглил я гуглил ни как не нашел, но нашел подобный плагин где есть такая функция, но он слишком много лишнего дает. Так что жду советов на то, как это осуществить
     
  2. Хостинг MineCraft
    <
  3. kirill2011s

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

    Баллы:
    103
    1. Спавним
    2. Отменяем горение
     
  4. Автор темы
    dnebik

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

    Баллы:
    66
    Имя в Minecraft:
    dnebik
    И как это сделать поподробнее
     
  5. kirill2011s

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

    Баллы:
    103
    Есть эвент дамага, при горении сущность получает урон с модификатором огня.
     
  6. Автор темы
    dnebik

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

    Баллы:
    66
    Имя в Minecraft:
    dnebik
    вообще не то
    как монстр заспавнится днем для начала а потом уже и отменим горение
     
  7. CraftCoder

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

    Баллы:
    108
    Имя в Minecraft:
    CraftCoderr
    Что мешает в ручную заспавнить монстра?
     
  8. Den_Abr

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

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Можно всегда держать ночь на сервере, а игроку отправлять дневное время.
     
  9. Автор темы
    dnebik

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

    Баллы:
    66
    Имя в Minecraft:
    dnebik
    что вы имеете в виду?[DOUBLEPOST=1430575148,1430575027][/DOUBLEPOST]
    ну тогда марочно делать чтобы еще и время менялось у игрока на ночь ну и не только
    если же нет то подскажите как это вообще сделать о то я не представляю[DOUBLEPOST=1430575241][/DOUBLEPOST]может можно как то изменить уровень освещения при котором моб может спавнится
     
  10. Den_Abr

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

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Время игрока меняется методом Player.setPlayerTime(), время в мире World.setTime()
    Менять уровень освещённости блоков куда более муторно, поверьте.
     
  11. Автор темы
    dnebik

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

    Баллы:
    66
    Имя в Minecraft:
    dnebik
    хорошо, тогда как синхронизировать время со всеми игроками, чтобы не было, что у одного день а у другого ночь?
     
  12. Den_Abr

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

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Отправить всем одно и то же время сразу :confused:
     
  13. kirill2011s

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

    Баллы:
    103
    Стоп, а с каких пор, нельзя спавнить монстра днем?
     
  14. Den_Abr

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

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    С таких что идёт речь не о ручном спавне мобов, а о таком же как ночью.
     
  15. Автор темы
    dnebik

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

    Баллы:
    66
    Имя в Minecraft:
    dnebik
    я наверное супер затупчик, но я конкретно не понимаю как мне сделать Player.setPlayerTime() и World.setTime()
    так чтобы первое шло у всех одинакова, а второе было неизменяемо скажем 20000
    и главное я не пойму в какой ивент или еще что это запихнуть
     
  16. kirill2011s

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

    Баллы:
    103
    А, вот вы о чем. Ну тогда различия во времени подходят. Или можно почитать вики о том, как спавнятся монстры и по наступлении дня спавнить самому.[DOUBLEPOST=1430625425,1430625267][/DOUBLEPOST]
    Создаем Шедуллер в котором каждый тик прибавляем ко времени всех игроков 1. Для мира устанавливаем нужное время и в gamerule отключаем ход времени.
     
  17. CraftCoder

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

    Баллы:
    108
    Имя в Minecraft:
    CraftCoderr
    Можно каждый тик, а можно каждые 10 - по 10 тиков прибавлять, чтобы нагрузка меньше была, хоть она и так не большая.
     
  18. kirill2011s

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

    Баллы:
    103
    так рывки будут. Нагрузка не меняется. Сервер это делал и без тебя, до того как ты отключил в gamerule.
     
  19. Автор темы
    dnebik

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

    Баллы:
    66
    Имя в Minecraft:
    dnebik
    ну ок время я могу застопорить через /gamerule
    Код:
        public static void main(String args[]) throws InterruptedException {
            Timer time = new Timer();
            ScheduledTask st = new ScheduledTask();
            time.schedule(st, 0, 1);
            for (int i = 0; i <= 23000; i++) {
                Thread.sleep(27);
                Player[] onlinePlayers = Bukkit.getServer().getOnlinePlayers();
                for(Player player : onlinePlayers){
                    i++;
                    player.setPlayerTime(i, true);
                }
            }
        }
    не работает
     
  20. ql_Nik_lp

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

    Баллы:
    173
    Skype:
    q-nik-p
    Имя в Minecraft:
    ql_Nik_lp
    wtf

    http://wiki.bukkit.org/Scheduler_Programming
     
  21. Автор темы
    dnebik

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

    Баллы:
    66
    Имя в Minecraft:
    dnebik
    Код:
        public void onEnable(){
            getServer().getPluginManager().registerEvents(this, this);
            saveDefaultConfig();
            BukkitScheduler scheduler = Bukkit.getServer().getScheduler();
            scheduler.scheduleSyncRepeatingTask(this, new Runnable() {
                public void run() {
                        Player[] onlinePlayers = Bukkit.getServer().getOnlinePlayers();
                        for(Player player : onlinePlayers){
                            player.setPlayerTime(1000, true);
                        }
                }
            }, 0L, 27L);
        }
    итог тот же
     

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