Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

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

LaoTheLizard

Старожил
Пользователь
Баллы
103
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
    Hugo.zip
    Размер файла
    11,4 КБ
    Просмотров
    41
  • Hugo164.zip
    Hugo164.zip
    Размер файла
    11,4 КБ
    Просмотров
    14
Последнее редактирование:
На 1.6.4 R2-0 не создает папку с файлами, но при этом плагин работает, только на английском. Исправь!
 
На 1.6.4 R2-0 не создает папку с файлами, но при этом плагин работает, только на английском. Исправь!
Правильно, не создает. Файлы он положил в корневой каталог сервера. Туда, где лежит твой CraftBukkit.jar, можешь поискать. Специально для 1.6.1-1.6.4 вложил в топик дополнительный файл, в котором это исправлено.
 
Код:
[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 не запускается. Вот фрагмент лога
 
Код:
[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 не запускается. Вот фрагмент лога
vault установили?
 
А разве на Dev Bukkit возвращена модерация? Или как плагин был принят?
 
vladF:
У меня как раз стоит Cauldron 1.7.10 - и всё работает.
Выше я писал:
"Требования: Vault (без него плагин не запустится)."
В приведенном куске лога написана причина: "UnknownDependencyException: Vault".
Bars, плагин был принят на Dev Bukkit. Правда, я не понял сути вопроса.
 
Bars, плагин был принят на Dev Bukkit. Правда, я не понял сути вопроса.
1. Bukkit заброшен
2. Авторы плагинов постят обновления на сторонние сайты и оставляют ссылки в описании на Bukkit Dev. Если бы на Bukkit Dev была модерация, они бы этого не делали и могли продолжать постить обновления дальше
3. Каталог не обновляется вуапще
Посему удивляюсь и вопрошаю...
 
Bars, теперь понял.

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

P.S. Кстати, вот интересно, почему тут есть мой плагин (или два), которые перенесли в "Утвержденные", а есть такие, которые не перенесли. От чего это зависит?
 
Думаю что от оформления темы. Или утвердители спят :D
Не знаю даже и перенесли ли мой новый Flight Reloaded...
 
Так я вроде все по правилам строго стараюсь оформлять. Может, кружева какие-нибудь добавить или еще какие элементы аранжировки?
 
Да это не очень важно. Лучше скажи, как получать и как задавать внутреннюю дату мира. :)
 
vladF:
У меня как раз стоит Cauldron 1.7.10 - и всё работает.
Выше я писал:
"Требования: Vault (без него плагин не запустится)."
В приведенном куске лога написана причина: "UnknownDependencyException: Vault".
Bars, плагин был принят на Dev Bukkit. Правда, я не понял сути вопроса.
Извини, не заметил)
 
Есть такой мод - CalendarMod. Он откуда-то умеет брать количество дней (внутренних, которые по 20 минут), прошедших с последнего вайпа (с момента создания новой карты) и выводить текущую дату на блок календаря. Установлен факт, что эта информация содержится в level.dat. Однако я не нашел, как ее оттуда извлекать в бакките и как её изменять по своему усмотрению.
 
Есть такой мод - CalendarMod. Он откуда-то умеет брать количество дней (внутренних, которые по 20 минут), прошедших с последнего вайпа (с момента создания новой карты) и выводить текущую дату на блок календаря. Установлен факт, что эта информация содержится в level.dat. Однако я не нашел, как ее оттуда извлекать в бакките и как её изменять по своему усмотрению.
Можно достать через NBT, точно не знаю как. Возможно мод сравнивает прошлое и нынешнее время суток, и если нынешнее меньше прошлого, то он начинает новый день.
 
Допустим, вайпаем сервер, играем месяц, потом ставим на сервер этот мод - и мод знает, сколько игровых дней прошло с вайпа карты. Если стереть файл level.dat, то мод считает что сегодня 1 января 1 года. Значит, где-то в нем хранится информация о том, сколько суток прошло. Интересно было бы реализовать в плагине возможность установки конкретной даты. Можно, конечно, для обнуления тупо удалять level.dat, только незадача - модовые шмотки меняют свои ID и в "мире" наступает апокалипсис...
 
Допустим, вайпаем сервер, играем месяц, потом ставим на сервер этот мод - и мод знает, сколько игровых дней прошло с вайпа карты. Если стереть файл level.dat, то мод считает что сегодня 1 января 1 года. Значит, где-то в нем хранится информация о том, сколько суток прошло. Интересно было бы реализовать в плагине возможность установки конкретной даты. Можно, конечно, для обнуления тупо удалять level.dat, только незадача - модовые шмотки меняют свои ID и в "мире" наступает апокалипсис...
А ,может быть, мод проверяет дату создания level.dat? И исходя от нее высчитывает текущую?
 

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

Назад
Верх