2022-08-28 18:50:53 +03:00
2024-09-12 23:27:11 +03:00
2022-08-28 18:50:53 +03:00
2022-08-28 18:50:53 +03:00
2024-09-12 23:27:11 +03:00
2022-08-28 18:50:53 +03:00
2022-08-28 18:50:53 +03:00
2022-08-28 18:50:53 +03:00
2022-08-28 18:50:53 +03:00
2022-08-28 19:00:39 +03:00

Timelord

Ваш лучший помощник в вопросах настройки времени! На Forge версии 1.16.5 и только. Отдельная благодарность Мсе за большую часть логики, которую я взял у него.

Для личного использования - пожалуйста и сколько угодно, если хотите взять себе на сервер и у вас не донатная помойка, я не против, но ради приличия сообщите мне об этом лично. О багах тоже лучше всего сообщать в личку.

Как это работает

При запуске игры у вас создадутся файлики в ./config/timelord - на каждый дименшен по файлу. В этих файлах, собственно, все и настраивается. Для каждого дименшена файл выглядит как-то так:

{
  "active": false,
  "rain": {
    "endlessRain": false,
    "endlessThunder": false,
    "income": 0,
    "outcome": 0,
    "thunder": 0,
    "min": 0,
    "max": 0,
    "dice": 0
  },
  "time": {
    "hours_offset": 0,
    "scale": 0.0,
    "fixedDayTime": -1
  }
}

Для того, чтобы таймлорд работал, вам нужно изменить active на true. По умолчанию он не работает ни для какого дименшена.

Начнем c time.

  1. Если задан fixedDayTime в пределах от 0 до 24000, то назначается он. Это позволяет сделать в дименшене фиксированное время. Значения остальных полей игнорируются, т.е. если вы не хотите, чтобы было фиксированное время, то сделайте -1 или 24001 и так далее.
  2. Если scale больше нуля, то считается, что вы хотите именно его. Скейл это ускорение или замедление течения времени относительно обычного времени. Например, если scale 3.0, то время будет идти в три раза быстрее, а если 0.5 - то в 2 раза медленнее. Если активируется scale, то игнорируется hours_offset.
  3. Наконец, hours_offset. Он может быть от -18 до 18 и выражает собой отступ в часах от текущего серверного времени. Он может быть 0, тогда игровое время будет полностью соответствовать времени сервера. Если вы хотите и его отключить, то сделайте его больше 18 или меньше -18. Таким образом, если у вас hours_offset: 19, scale: 0 и fixed_day_time: -1, то время будет идти как в ванилле. Это может быть полезно, если вам нужно сохранить фичи дождя.

Перейдем к rain.

Дождь работает по следующему принципу - есть условная "ванная", которая у каждого мира своя. В эту замечательную ванную, когда нет дождя, каждый тик добавляется incomе. Если накопленный объем больше min, то каждый тик делается бросок дайса с dice граней. Если выпадает 0, то дайс считается успешным и начинается дождь. То есть, например, если вы хотите, чтобы шанс дождя был 50% (напомню, что чек делается каждый тик, поэтому это скорее всего означает мгновенный дождь), то можете задать dice = 1. Если объем накопленного дождя дошел до maх, а дождь так и не начался, то он случается вне зависимости от результатов ролла. При этом, если в момент начала дождя текущий накопленный дождь был выше thunder, то начнется гроза. Когда дождь начался, то каждый тик он забирает outcome из накопленного запаса "ванны", и когда этот запас доходит до 0, отключает дождь. Может звучать сложно, но вот вам пример:

{
  "rain": {
    "endlessRain": false,
    "endlessThunder": false,
    "income": 1,
    "outcome": 5,
    "thunder": 7500,
    "min": 5000,
    "max": 10000,
    "dice": 5000
  }
}

В данной ситуации, каждый тик добавляется по 1 дождю в "ванную", пока оно не дойдет до 5 тысяч. То есть через 5000 тиков каждый тик будет кидаться дайс, и если выпадает 0, то случается дождь. Если при этом дождь должен начаться после того, как его накопилось 7500, то будет гроза. Если дайсик ни разу не прокнул и накопленный дождь дошел до 10000, то он начнется, и это обязательно будет гроза (поскольку 10000 > 7500).

Так же есть endlessRain и endlessThunder. Они отключают всю остальную логику, просто включая дождь или грозу, если они должны быть. Учтите, что технически гроза может быть без дождя, но я не уверен, как именно это работает. Так же учтите, что если вы включили endlessRain, то включение endlessThunder ничего не сделает - их нужно включать одновременно. Поэтому если вам нужны обе эти штуки, то включайте их одновременно.

Description
Мод для контроля над погодой и временем
Readme 109 KiB
1.1 Latest
2024-09-12 20:30:13 +00:00
Languages
Java 100%