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

Плагин [ADMIN]Hugo v.1.0 - берём в свои руки власть над временем на нашем сервере [1.7.10]

Тема в разделе "Неподтвержденные плагины", создана пользователем LaoTheLizard, 3 дек 2014.

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

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

    Баллы:
    103
    Skype:
    sgp_the_controller
    Hugo v.1.0

    Краткая предыстория:
    С позволения уважаемого @Shevchik решил развить его идею об изменении течения времени на сервере. Предлагаю вашему вниманию то, что у меня в итоге получилось.
    Название позаимствовал у фильма "Хранитель времени".

    Описание:
    Данный плагин является гибким инструментом администрации, позволяющим без перезагрузки сервера, без ванильных команд и без вспомогательных плагинов ускорять, замедлять, останавливать и вновь запускать, устанавливать на конкретное значение, либо привязывать к реальному времени сервера (компьютера, на котором сервер установлен) суточный ход времени.

    В работе:


    Версия:
    Работоспособность текущей версии плагина была проверена на версиях Craftbukkit 1.7.10 и Cauldron 1.1236.06.211. Насколько я могу предполагать, плагин должен корректно работать на всех версиях, начиная с 1.6.1 (Horse Update).

    Конфликты:
    • Конфликтов с плагинами не установлено, однако, нежелательно совместное использование с командой /time плагина CommandBook (лучше её вообще отключить в его конфиге) и аналогичными ванильными командами. То есть, критических проблем возникнуть не должно, но корректную работу плагина в этом случае я вообще не гарантирую.
    • При использовании мода GravestoneMod обязательно установите в конфиге мода EnableNightStone=false.
    • Удалять плагин с сервера рекомендуется только после корректного завершения его работы, так как суточный ход времени регулируется плагином на все существующие миры (включая миры из модов). При этом сама конфигурация плагина не имеет значения: просто при корректном завершении плагин всегда возвращает стандартное течение времени на сервере.

    Известные баги, фичи:
    • (баг) При изменении времени на меньшее текущего происходит смена лунного дня - луна меняет свою фазу. При этом мод Calendar Mod считает, что наступил следующий день.
    • (фича) Если лечь спать всем, кто есть на сервере, все тут же проснутся, но утро не наступит.

    История версий:
    • v.1.0 Release.

    Требования:
    • Vault (без него плагин не запустится).
    Установка:
    Закиньте файл Hugo.jar в папку с плагинами.
    Перезапустите сервер.
    В папке Hugo будут автоматически сгенерированы два файла - конфигурации и локализации.
    По умолчанию плагин не русифицирован, но свой вариант русификации я прилагаю в архиве - можно сразу создать папку Hugo и закинуть его туда - тогда плагин сразу будет на русском языке. Перезагрузка плагина на данный момент не предусмотрена (она пригодилась бы только для русификации "на лету"), поэтому для применения ручного тюнинга файла локализации придется сервер перезагрузить.
    При первом запуске плагин не меняет текущий ход суток. Все изменения производятся соответствующими командами плагина. После перезагрузки сервера все изменения остаются в силе (если вы остановите время - после перезагрузки оно будет также стоять на месте).

    Конфигурация:
    Я настоятельно рекомендую не править файл конфигурации вручную. Хотя в коде есть пара защит от дурака, я вполне мог что-то пропустить и не предусмотреть. Правки конфигурации командами при тестовых проверках никаких проблем не вызвали. Состояние времени в данный момент можно узнать, не заглядывая в файл конфигурации, командой /clock.
    Файл локализации можно править на свой вкус, не забывая про UTF-8 и кавычки. В случае, если ваши правки привели к проблемам, просто удалите файл локализации и перезапустите сервер - будет сгенерирован новый файл.

    Permissions:
    Clock.Admin
    - разрешает пользование всеми командами.
    Clock.start - разрешает команду /clock start
    Clock.real - разрешает команду /clock real
    Clock.set - разрешает команду /clock set xx
    Clock.fast - разрешает команду /clock fast xx
    Clock.slow - разрешает команду /clock slow xx
    Clock.help - разрешает команду /clock help
    Clock.vanilla - разрешает команду /clock vanilla
    Clock.stop - разрешает команду /clock stop
    Clock.status - разрешает команду /clock (единственная безопасная команда, для игроков)

    Операторы по умолчанию имеют доступ ко всем командам плагина.


    Команды:
    /clock
    - показывает, какой режим сейчас активен.
    /clock help - показывает помощь по плагину.
    /clock start - запускает режим Extended Day.
    /clock stop - останавливает режим Extended Day.
    /clock set xx - устанавливает время на xx часов (0...23).
    /clock fast xx - делит длительность суток на xx (1...20).
    /clock slow xx - умножает длительность суток на xx (1...60).
    /clock vanilla - включает/выключает ванильный ход времени.
    /clock real - включает/выключает привязку к реальному времени сервера.

    Вместо /clock можно использовать /cl.

    ToDo:
    • ввести пару платных команд (за внутриигровую валюту) для игроков, позволяющую, к примеру, поставить время "на паузу" на некоторый регламентированный промежуток времени.
    • реализовать возможность полного контроля лунных фаз (в данный момент реализовано лишь частично).
    • реализовать возможность установки текущей даты на сервере (актуально только для мода Calendar Mod).
    • реализовать возможность работы с плагином через консоль (скоро сделаю, если будут желающие).
    Bukkit.org: http://dev.bukkit.org/bukkit-plugins/hugo/
     

    Вложения:

    • Hugo.zip
      Размер файла:
      11,4 КБ
      Просмотров:
      29
    • Hugo164.zip
      Размер файла:
      11,4 КБ
      Просмотров:
      9
    Последнее редактирование: 3 дек 2014
  2. Хостинг MineCraft
    <
  3. Sergey_28rus

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

    Баллы:
    76
    На 1.6.4 R2-0 не создает папку с файлами, но при этом плагин работает, только на английском. Исправь!
     
  4. Автор темы
    LaoTheLizard

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

    Баллы:
    103
    Skype:
    sgp_the_controller
    Правильно, не создает. Файлы он положил в корневой каталог сервера. Туда, где лежит твой CraftBukkit.jar, можешь поискать. Специально для 1.6.1-1.6.4 вложил в топик дополнительный файл, в котором это исправлено.
     
  5. vladF

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

    Баллы:
    103
    Имя в Minecraft:
    vladF
    Код:
    [00:08:05 ERROR]: Could not load 'plugins\Hugo164.jar' in folder 'plugins'
    org.bukkit.plugin.UnknownDependencyException: Vault
            at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager
    .java:221) [SimplePluginManager.class:git-Cauldron-MCPC-Plus-1.7.10-1.1207.01.19
    8]
            at org.bukkit.craftbukkit.v1_7_R4.CraftServer.loadPlugins(CraftServer.ja
    va:320) [CraftServer.class:git-Cauldron-MCPC-Plus-1.7.10-1.1207.01.198]
            at net.minecraft.world.storage.SaveHandler.initBukkitData(SaveHandler.ja
    va:458) [ayq.class:?]
            at net.minecraft.world.storage.SaveHandler.func_75757_d(SaveHandler.java
    :136) [ayq.class:?]
            at net.minecraft.world.World.<init>(World.java:350) [ahb.class:?]
            at net.minecraft.world.WorldServer.<init>(WorldServer.java:153) [mt.clas
    s:?]
            at net.minecraft.server.MinecraftServer.func_71247_a(MinecraftServer.jav
    a:356) [MinecraftServer.class:?]
            at net.minecraft.server.dedicated.DedicatedServer.func_71197_b(Dedicated
    Server.java:329) [lt.class:?]
            at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:620) [M
    inecraftServer.class:?]
            at java.lang.Thread.run(Unknown Source) [?:1.8.0_11]
    Хм, на Cauldron 1.7.10 не запускается. Вот фрагмент лога
     
  6. InTheWeb

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

    Баллы:
    66
    vault установили?
     
  7. Автор темы
    LaoTheLizard

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

    Баллы:
    103
    Skype:
    sgp_the_controller
    vladF:
    У меня как раз стоит Cauldron 1.7.10 - и всё работает.
    Выше я писал:
    "Требования: Vault (без него плагин не запустится)."
    В приведенном куске лога написана причина: "UnknownDependencyException: Vault".[DOUBLEPOST=1418416614,1418416492][/DOUBLEPOST]Bars, плагин был принят на Dev Bukkit. Правда, я не понял сути вопроса.
     
  8. Автор темы
    LaoTheLizard

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

    Баллы:
    103
    Skype:
    sgp_the_controller
    Bars, теперь понял.

    1. Не знал.
    2. Мне все равно, я пишу плагины для себя, а выкладываю, если считаю задумку полезной. Там и здесь - чтоб было больше шансов, что кому-то пригодится. Когда я выкладывал плагин, вверху было красное сообщение, что плагин еще не утвержден, а через десяток часов его утвердили. Видимо, модерация все-таки есть.
    3. Про каталог не знал. Да и теперь не интересуюсь им.

    P.S. Кстати, вот интересно, почему тут есть мой плагин (или два), которые перенесли в "Утвержденные", а есть такие, которые не перенесли. От чего это зависит?
     
  9. Автор темы
    LaoTheLizard

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

    Баллы:
    103
    Skype:
    sgp_the_controller
    Так я вроде все по правилам строго стараюсь оформлять. Может, кружева какие-нибудь добавить или еще какие элементы аранжировки?
     
  10. Den_Abr

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

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Исправляется использованием метода setFullTime, если что
     
  11. Автор темы
    LaoTheLizard

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

    Баллы:
    103
    Skype:
    sgp_the_controller
    Да это не очень важно. Лучше скажи, как получать и как задавать внутреннюю дату мира. :)
     
  12. vladF

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

    Баллы:
    103
    Имя в Minecraft:
    vladF
    Извини, не заметил)
     
  13. Den_Abr

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

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Не понял вопрос
     
  14. Автор темы
    LaoTheLizard

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

    Баллы:
    103
    Skype:
    sgp_the_controller
    Есть такой мод - CalendarMod. Он откуда-то умеет брать количество дней (внутренних, которые по 20 минут), прошедших с последнего вайпа (с момента создания новой карты) и выводить текущую дату на блок календаря. Установлен факт, что эта информация содержится в level.dat. Однако я не нашел, как ее оттуда извлекать в бакките и как её изменять по своему усмотрению.
     
  15. Den_Abr

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

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Можно достать через NBT, точно не знаю как. Возможно мод сравнивает прошлое и нынешнее время суток, и если нынешнее меньше прошлого, то он начинает новый день.
     
  16. Автор темы
    LaoTheLizard

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

    Баллы:
    103
    Skype:
    sgp_the_controller
    Допустим, вайпаем сервер, играем месяц, потом ставим на сервер этот мод - и мод знает, сколько игровых дней прошло с вайпа карты. Если стереть файл level.dat, то мод считает что сегодня 1 января 1 года. Значит, где-то в нем хранится информация о том, сколько суток прошло. Интересно было бы реализовать в плагине возможность установки конкретной даты. Можно, конечно, для обнуления тупо удалять level.dat, только незадача - модовые шмотки меняют свои ID и в "мире" наступает апокалипсис...
     
  17. vladF

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

    Баллы:
    103
    Имя в Minecraft:
    vladF
    А ,может быть, мод проверяет дату создания level.dat? И исходя от нее высчитывает текущую?
     
  18. Автор темы
    LaoTheLizard

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

    Баллы:
    103
    Skype:
    sgp_the_controller
    Файл level.dat обычно всегда имеет датой создания текущую дату, так как сервер в процессе работы (запуска, работы или перезапуска - не суть важно, когда именно) перезаписывает в нём что-то. Исходя из этого, я полагаю, я могу не отвечать на этот вопрос.
     
  19. jwplaster

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

    Баллы:
    173
    Skype:
    jwplaster.smartworld
    Имя в Minecraft:
    QviNSteN
    Есть идея:
    Добавь команду /clock real <ныняшнее_время>
    День станет идти 24 часа, а время на сервере станет равным тому времени, что указали.
    + ещё идеи:
    Сезонное время:
    Если зима, то день идёт быстро, а ночь медленнее, а когда лето - наоборот.
     
  20. Den_Abr

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

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    В NBT мира хранится это время, тег называется Time
     
  21. Автор темы
    LaoTheLizard

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

    Баллы:
    103
    Skype:
    sgp_the_controller
    jwplaster, а смысл? Просто выставить на сервере другой часовой пояс - и будет другое время. Ну или если уж команду добавлять, то что-то в стиле time_zone. Где указывать числом сдвиг времени (и в дальнейшем его приплюсовывать, куда надо).
    А что касается сезонного времени - в игре все равно нет сезонов, снег идет только в соответствующих биомах. Значит, зима будет неполноценная. Можно, конечно, привязать к реальному календарю (восход, заход солнца - разные в разные дни года), но лично мне в последнее время начинает казаться, что чем проще плагин, тем востребованнее. Лично мне такая фишка не нужна (у меня на сервере стоит режим "удлиненные сутки". А тебе, например, нужна?

    Den_Abr Я не общался с NBT. Через плагины туда как добраться?
     

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