- Поддерживаемые версии
- 1.21
- 26.1
- 26.2
- 26.3
- 26.4
- Ядра и Прокси
- Bukkit
- Spigot
- Paper
- Folia
- Минимальная версия Java
- 21
- Исходный код
- https://github.com/Rulhot/rGarland
Новый год уже близко. Дай игрокам украсить сервер: они развешивают гирлянды над улицами и домами, лампы переливаются разными цветами и освещают всё вокруг. Ты выбираешь наборы ламп, мигание и лимиты.
Paper 1.21.4+ • Folia • Java 21 • PacketEvents
Paper 1.21.4+ • Folia • Java 21 • PacketEvents
Экспериментальная версия
rGarland 1.0 вышел первой версией и пока работает в статусе эксперимента. В нём встречаются баги. Нашёл ошибку: открой issue на GitHub и опиши, что ты сделал и что сломалось.
Возможности
- Гирлянда собирается из Display-сущностей через пакеты PacketEvents. В мире нет настоящих сущностей и блоков, гирлянду видят только игроки рядом.
- Свет вокруг ламп силой от 0 до 15 мигает вместе с лампами и тоже отправляется пакетами.
- 5 наборов ламп в items.yml. Лампа задаётся ссылкой на текстуру головы, Value с minecraft-heads.com, предметом или блоком с состоянием, например lantern[hanging=true].
- 6 режимов мигания: перелив, бегущий огонь, волна, мерцание, дыхание и без мигания.
- Качание на ветру с углом до 45 градусов и периодом от 0.5 до 30 секунд. Режим night-only гасит лампы днём.
- Превью: пока гирлянда в руке, игрок видит пролёт ещё до того, как повесит его.
- Пролёт длиной до 48 блоков, по умолчанию 16. Лимит на игрока до 10000 пролётов, по умолчанию 100.
- Патроны, крючки, свет и качание видны ближе 24 блоков. Дальше 48 блоков гирлянда не видна. Оба расстояния настраиваются в config.yml.
- Защита территорий через WorldGuard, GriefPrevention и CakeRegions: игрок вешает гирлянду только там, где у него есть право строить.
- Пролёты не пересекаются: провод сквозь чужую гирлянду не повесить.
- /garland list показывает гирлянды игрока по страницам. Клик по строке телепортирует к гирлянде.
- Гирлянды хранятся в data/garlands.yml и остаются после перезапуска сервера.
- MiniMessage, поддержка Folia, проверка обновлений через GitHub.
Наборы ламп
Игрок переключает наборы клавишей F в том порядке, в каком они идут в списке list в items.yml.
YAML:
list: # наборы ламп, переключаются клавишей F в этом порядке
1:
name: "<#FF6B6B>Новогодняя" # название набора в подсказке над хотбаром
bulbs: # лампы по очереди: ссылка на текстуру головы, Value с minecraft-heads.com, предмет или блок
orange: "https://textures.minecraft.net/texture/c0dac2501c9e756767f6943323ad5955b5a975bb09be12364ef80ea3f1ca7b06"
red: "https://textures.minecraft.net/texture/2bc65b659eafa37df6c4b11dde89073db71a5f5b22513882013e101fe466399"
blue: "https://textures.minecraft.net/texture/86f901bbde8cd67520fa0c7ae461ee7ca66ce3c4c481cd5c12fb43712eea6b63"
green: "https://textures.minecraft.net/texture/b605c66347f327c5eed27672d7a0e347f4e36c006353c91b78935ba28116504"
size: 0.3 # размер лампы, одно число или [ x, y, z ], 0.01-2
drop: 0.2 # на сколько лампа висит ниже провода
light: 10 # сила света вокруг лампы, 0 выключает, 0-15
socket: true # показывать патрон над лампой
2:
name: "<#FFC46B>Тёплая"
bulbs: [ OCHRE_FROGLIGHT, SHROOMLIGHT, GLOWSTONE ]
size: 0.16
drop: 0.15
light: 12
socket: true
3:
name: "<#FFB84D>Фонарики"
bulbs: [ "lantern[hanging=true]", "soul_lantern[hanging=true]" ] # в скобках состояние блока, hanging=true: висячий фонарь
size: 0.35
drop: 0.18
light: 13
socket: false
4:
name: "<#A8E6FF>Сосульки"
bulbs: [ LIGHT_BLUE_STAINED_GLASS, WHITE_STAINED_GLASS ]
size: [ 0.05, 0.35, 0.05 ]
drop: 0.2
light: 6
socket: false
5:
name: "<#FF8C1A>Хэллоуин"
bulbs: [ JACK_O_LANTERN ]
size: 0.22
drop: 0.2
light: 10
socket: true
Для каждого набора в items.yml задаются название, размер лампы, высота подвеса, сила света и патрон над лампой. Блоки провода, патрона и крючка тоже настраиваются там.
YAML:
settings:
metrics: true
update-check: true
command:
main: garland # название основной команды
aliases: [ garlands ] # дополнительные названия команды
limits:
per-player: 100 # сколько пролётов вешает один игрок, 1-10000
max-length: 16 # самый длинный пролёт в блоках, 1-48
garland:
night-only: false # true: лампы горят только ночью, днём гаснут
blink-seconds: 0.5 # скорость мигания, меньше = быстрее, 0.1-10
wind:
angle-degrees: 6 # насколько сильно качается пролёт на ветру, 0 выключает, 0-45
period-seconds: 4 # сколько длится одно качание туда и обратно, 0.5-30
performance:
view-distance: 48 # с какого расстояния игрок видит гирлянду, 8-128
detail-distance: 24 # ближе этого видны патроны, крючки, свет и качание, 0-128
wire-step: 0.35 # длина одного куска провода, больше = меньше нагрузки, 0.1-4
bulb-spacing: 0.5 # расстояние между лампами, больше = меньше ламп, 0.2-4
animation-ticks: 4 # как часто обновляется мигание, 20 тиков = 1 секунда, 1-40
swing-ticks: 8 # как часто отправляется качание на ветру, 2-100
viewer-check-ticks: 20 # как часто искать игроков рядом с гирляндой, 5-200
preview-ticks: 4 # как часто обновляется превью у игрока с гирляндой в руке, 1-40
light-update-ticks: 8 # как часто свет вокруг ламп повторяет мигание, 2-200
sounds: # key: звук Minecraft, volume: громкость 0-1, pitch: высота 0.5-2
hang: # пролёт повешен или поставлена точка
key: "minecraft:block.chain.place"
volume: 0.8
pitch: 1.4
remove: # пролёт снят
key: "minecraft:block.chain.break"
volume: 0.8
pitch: 1.2
switch: # смена ламп или мигания клавишей F
key: "minecraft:block.note_block.chime"
volume: 0.5
pitch: 1.6
config-version: 1 # служебное поле, не меняй
YAML:
item:
material: STRING # предмет гирлянды
name: "<#FFD54A>Гирлянда" # название, формат MiniMessage
lore: [] # описание предмета
blocks:
wire: BLACK_CONCRETE # блок провода
socket: GRAY_CANDLE # блок патрона над лампой
hook: GRAY_CONCRETE # блок крючка на концах пролёта
list: # наборы ламп, переключаются клавишей F в этом порядке
1:
name: "<#FF6B6B>Новогодняя" # название набора в подсказке над хотбаром
bulbs: # лампы по очереди: ссылка на текстуру головы, Value с minecraft-heads.com, предмет или блок
orange: "https://textures.minecraft.net/texture/..."
red: "https://textures.minecraft.net/texture/..."
blue: "https://textures.minecraft.net/texture/..."
green: "https://textures.minecraft.net/texture/..."
size: 0.3 # размер лампы, одно число или [ x, y, z ], 0.01-2
drop: 0.2 # на сколько лампа висит ниже провода
light: 10 # сила света вокруг лампы, 0 выключает, 0-15
socket: true # показывать патрон над лампой
3:
name: "<#FFB84D>Фонарики"
bulbs: [ "lantern[hanging=true]", "soul_lantern[hanging=true]" ] # в скобках состояние блока
size: 0.35
drop: 0.18
light: 13
socket: false
4:
name: "<#A8E6FF>Сосульки"
bulbs: [ LIGHT_BLUE_STAINED_GLASS, WHITE_STAINED_GLASS ]
size: [ 0.05, 0.35, 0.05 ]
drop: 0.2
light: 6
socket: false
config-version: 1 # служебное поле, не меняй
- Зависимости
- Обязательно: PacketEvents. По желанию: WorldGuard, GriefPrevention, CakeRegionsPlus.
- Команды и права
Команда Что делает Право /garland help Показывает список команд rgarland.admin /garland give [игрок] [количество] Выдаёт гирлянду rgarland.admin /garland list [игрок] [страница] Показывает гирлянды игрока с телепортом по клику rgarland.admin /garland remove [игрок] [номер] Снимает гирлянду по номеру из list rgarland.admin /garland reload Перечитывает конфиги rgarland.admin
Алиас: /garlands. Право rgarland.use нужно, чтобы вешать гирлянды, и есть у всех игроков по умолчанию. Право rgarland.others разрешает снимать чужие пролёты, по умолчанию оно есть у операторов.