Skip to content

Commit 8d87bf6

Browse files
committed
release: bump to 0.11.0 — support Minecraft 1.20.1+ (Java 17)
Lower the baseline from Java 21 / Paper 1.20.5+ back to Java 17 / Paper 1.20.1 so a single JAR runs on 1.20.1–1.20.4 (Java 17) and 1.20.5+ (Java 21), up to the latest release. - pom: compile to Java 17 (--release), build against paper-api 1.20.1 - replace Java 21 List.getFirst()/getLast() with index access - release workflow: build Modrinth game_versions dynamically (1.20+), static fallback - docs: README/Modrinth/BlackMinecraft compatibility -> 1.20.1+, Java 17+ - issue templates: refresh version and supported-versions line - add EN Modrinth and RU BlackMinecraft descriptions
1 parent 9d62bb7 commit 8d87bf6

11 files changed

Lines changed: 351 additions & 15 deletions

File tree

.github/ISSUE_TEMPLATE/bug_report.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ body:
66
attributes:
77
value: |
88
Thank you for reporting a bug! Please provide as much detail as possible to help us resolve it quickly.
9-
Latest version: **0.7.1** | Supports **Minecraft 1.16 - 1.21+**
9+
Latest version: **0.11.0** | Supports **Minecraft 1.20.1+ (Java 17+)**
1010
1111
- type: input
1212
id: minecraft-version

.github/ISSUE_TEMPLATE/feature_request.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ body:
66
attributes:
77
value: |
88
Thank you for suggesting a feature!
9-
Current version: **0.7.1** | Supports **Minecraft 1.16 - 1.21+**
9+
Current version: **0.11.0** | Supports **Minecraft 1.20.1+ (Java 17+)**
1010
- type: textarea
1111
id: feature-description
1212
attributes:

.github/workflows/release.yml

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,19 +56,30 @@ jobs:
5656
run: |
5757
JAR_PATH=$(find target -name "worldaccessblocker-*.jar" ! -name "original-*" | head -1)
5858
echo "Using JAR: $JAR_PATH"
59+
# Game versions: pull every Modrinth "release" in the 1.20+ range so newer
60+
# Minecraft versions are picked up automatically on each release. Falls back
61+
# to a static list if the tag API is unreachable.
62+
GAME_VERSIONS=$(curl -s "https://api.modrinth.com/v2/tag/game_version" \
63+
| jq -c '[.[] | select(.version_type == "release") | .version
64+
| select(test("^1\\.(2[0-9]|[3-9][0-9])(\\.[0-9]+)?$"))]' 2>/dev/null || true)
65+
if [ -z "$GAME_VERSIONS" ] || [ "$GAME_VERSIONS" = "[]" ] || [ "$GAME_VERSIONS" = "null" ]; then
66+
GAME_VERSIONS='["1.20.1","1.20.2","1.20.4","1.20.5","1.20.6","1.21","1.21.1","1.21.2","1.21.3","1.21.4"]'
67+
fi
68+
echo "Game versions: $GAME_VERSIONS"
5969
# Write metadata to a file and upload it as a file part. Passing multi-line
6070
# JSON inline via -F "data=$DATA" corrupts the payload (curl -F parsing),
6171
# which previously caused Modrinth to reject it with HTTP 400.
6272
jq -n \
6373
--arg version "$VERSION" \
6474
--arg changelog "$CHANGELOG" \
75+
--argjson game_versions "$GAME_VERSIONS" \
6576
'{
6677
"project_id": "chVqXf9e",
6778
"version_number": $version,
6879
"name": ("WorldAccessBlocker " + $version),
6980
"changelog": $changelog,
7081
"dependencies": [],
71-
"game_versions": ["1.20.5", "1.20.6", "1.21", "1.21.1", "1.21.2", "1.21.3", "1.21.4"],
82+
"game_versions": $game_versions,
7283
"version_type": "release",
7384
"loaders": ["paper", "purpur", "folia"],
7485
"featured": true,

CHANGELOG.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,16 @@ Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
55

66
---
77

8+
## [0.11.0] — 2026-07-03
9+
10+
### Changed
11+
12+
- **Wider version support: Minecraft 1.20.1 → latest.** The plugin now compiles to Java 17 bytecode (was Java 21) against the Paper 1.20.1 API, so a single JAR loads on 1.20.1–1.20.4 (Java 17) servers *and* 1.20.5+ (Java 21) servers, up to the newest release. The 0.10.0 Java 21 / Paper 1.20.5+ baseline had locked out 1.20.1–1.20.4.
13+
- Replaced the Java 21 `List.getFirst()` / `getLast()` calls (SequencedCollection API) with index access so the code runs on Java 17.
14+
- Release workflow now builds the Modrinth game-version list dynamically — every `release` tag from 1.20 upward — instead of a hardcoded set, so new Minecraft versions are covered automatically. Falls back to a static list if the Modrinth tag API is unreachable.
15+
16+
---
17+
818
## [0.10.0] — 2026-06-23
919

1020
### Added

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,12 @@
3131

3232
| Platform | Versions | Status |
3333
|---|---|---|
34-
| Paper | 1.20.5 – 1.21.4 | ✅ Full support |
35-
| Purpur | 1.20.5 – 1.21.4 | ✅ Full support |
34+
| Paper | 1.20.1+ | ✅ Full support |
35+
| Purpur | 1.20.1+ | ✅ Full support |
3636
| Folia | 1.20.5+ | ✅ Native scheduler |
3737
| Spigot / Bukkit || ❌ Not supported (requires Paper's Adventure & scheduler APIs) |
3838

39-
**Requirements:** Java 21+ (Paper 1.20.5+ runs on Java 21). Built against the Paper 1.21.4 API.
39+
**Requirements:** Java 17+ (Minecraft 1.20.1–1.20.4 run on Java 17; 1.20.5+ require Java 21). Built against the Paper 1.20.1 API for maximum forward compatibility — runs on every release from 1.20.1 up to the latest.
4040

4141
---
4242

docs/blackminecraft-ru.md

Lines changed: 174 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,174 @@
1+
# 🌍 WorldAccessBlocker
2+
3+
**WorldAccessBlocker** временно закрывает игрокам доступ к **Аду**, **Энду**, **полёту на элитрах** и **любым отдельным мирам** — до заданной даты или по недельному расписанию. Плагин написан под **Paper** и его форки (**Purpur**, **Folia**) и использует родные Adventure- и Folia-планировщики.
4+
5+
Удобно, когда вайп только стартовал и вы хотите открывать Ад через неделю, пускать в Энд только по выходным или держать лобби закрытым в рабочие часы.
6+
7+
---
8+
9+
## ✨ Возможности
10+
11+
-**Блокировка по дате** — закрыть возможность до конкретной даты и времени.
12+
- 📅 **Недельное расписание** — открывать доступ только в нужные дни и часы (например, по выходным или в воскресенье с 15:00 до 17:00).
13+
- 🌋 **Блок Ада** — отменяет создание портала, переход через портал и телепорт эндер-жемчугом.
14+
- 🐉 **Блок Энда** — не даёт активировать портал в Энд (и попасть туда).
15+
- 🪽 **Контроль элитр** — можно запретить надевание и/или сам полёт по отдельности.
16+
- 🗺️ **Отдельные миры** — ограничить любой мир по имени, по дате или расписанию.
17+
- 🚪 **Телепорт при блоке** — заблокированного игрока отправит на спавн указанного мира.
18+
- 🎫 **Персональные исключения** — выдать временный доступ через `/wab bypass`, снять — `/wab remove`.
19+
- 🔌 **Поддержка PlaceholderAPI** — статус блокировки и оставшееся время можно вывести в скорборд или TAB.
20+
- 🌐 **Два языка из коробки** — русский и английский; свой язык добавляется отдельным `.yml`.
21+
- ♻️ **Перезагрузка на лету**`/wabreload` применяет изменения конфига без рестарта сервера.
22+
- 🧵 **Родная поддержка Folia** — задачи идут через региональный планировщик, без предупреждений о потоках.
23+
- 🔔 **Уведомления об обновлениях** — админы видят сообщение в игре, когда вышла новая версия.
24+
25+
---
26+
27+
## 💻 Совместимость
28+
29+
| Платформа | Версии | Статус |
30+
|---|---|---|
31+
| Paper | 1.20.1+ | ✅ Полная поддержка |
32+
| Purpur | 1.20.1+ | ✅ Полная поддержка |
33+
| Folia | 1.20.5+ | ✅ Родной планировщик |
34+
| Spigot / Bukkit || ❌ Не поддерживаются |
35+
36+
**Нужна Java 17+** (Minecraft 1.20.1–1.20.4 работают на Java 17, 1.20.5+ — на Java 21). Плагин собран под Paper 1.20.1 и работает на всех версиях от 1.20.1 до последней. Spigot и Bukkit не подходят: плагин использует Adventure и планировщики Paper.
37+
38+
---
39+
40+
## 📦 Установка
41+
42+
1. Скачайте свежий `WorldAccessBlocker.jar`.
43+
2. Положите его в папку `plugins/` на сервере.
44+
3. Перезапустите сервер.
45+
4. Отредактируйте `plugins/WorldAccessBlocker/config.yml` под себя и выполните `/wabreload`.
46+
47+
---
48+
49+
## ⚙️ Настройка
50+
51+
```yaml
52+
# Язык сообщений: "ru" или "en"
53+
language: "ru"
54+
55+
# Часовой пояс сервера (важен для недельного расписания!)
56+
time-zone: "Europe/Moscow"
57+
58+
nether:
59+
disable: true
60+
# Работает, только если НЕТ блока `recurring` (закрыто до этой даты):
61+
restriction-date: "2025-03-10 00:00:00"
62+
disable-portal-creation: true
63+
disable-teleportation: true
64+
65+
# Недельное расписание. Если этот блок есть, `restriction-date` ИГНОРИРУЕТСЯ.
66+
# Каждый период — это ОКНО, когда доступ ОТКРЫТ. Вне окон — закрыт.
67+
recurring:
68+
periods:
69+
# Открыто только по воскресеньям с 15:00 до 17:00
70+
- days: [SUNDAY]
71+
start-time: "15:00"
72+
end-time: "17:00"
73+
# Открыто весь день по выходным
74+
- days: [SATURDAY, SUNDAY]
75+
76+
end:
77+
disable: true
78+
disable-portal-activation: true
79+
# Пустой список = нет открытых окон = закрыто ВСЕГДА
80+
recurring:
81+
periods: []
82+
83+
elytra:
84+
disable: true
85+
disable-equip: true
86+
disable-flight: true
87+
88+
custom-worlds:
89+
lobby_world:
90+
disable: true
91+
recurring:
92+
periods:
93+
- days: [MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY]
94+
start-time: "09:00"
95+
end-time: "17:00"
96+
97+
# Куда телепортировать заблокированных (имя мира → его спавн)
98+
fallback-spawns:
99+
default: "world"
100+
nether: "hub"
101+
```
102+
103+
> **Как читать расписание:** когда задан `recurring:`, каждый период описывает **открытое** окно. Попадает текущий день и время в период — доступ **открыт**, иначе **закрыт**. Пустой `periods: []` означает **закрыто всегда**.
104+
105+
---
106+
107+
## 🧩 Команды и права
108+
109+
| Команда | Право | По умолчанию | Что делает |
110+
|---|---|---|---|
111+
| `/wab bypass <игрок> <объект> <секунды>` | `wab.bypass` | op | Выдать временный доступ |
112+
| `/wab remove <игрок> <объект>` | `wab.bypass` | op | Снять исключение |
113+
| `/wab status [игрок]` | `wab.status` | все | Показать статус блокировок |
114+
| `/wabreload` | `wab.reload` | op | Перезагрузить конфиг без рестарта |
115+
116+
`<объект>` — это `nether`, `end`, `elytra` или имя отдельного мира.
117+
118+
Отдельное право `wab.update-notify` (по умолчанию op) отвечает за уведомления о новых версиях в игре.
119+
120+
---
121+
122+
## 🔧 PlaceholderAPI
123+
124+
| Плейсхолдер | Возвращает |
125+
|---|---|
126+
| `%wab_nether_blocked%` | `true` / `false` |
127+
| `%wab_end_blocked%` | `true` / `false` |
128+
| `%wab_elytra_blocked%` | `true` / `false` |
129+
| `%wab_time_left_nether%` | сколько осталось (или расписание) |
130+
| `%wab_time_left_end%` | сколько осталось (или расписание) |
131+
| `%wab_time_left_elytra%` | сколько осталось (или расписание) |
132+
133+
---
134+
135+
## ❓ Частые вопросы
136+
137+
**Работает ли на Folia?**
138+
Да. С версии 0.9.0 плагин сам определяет Folia и раскидывает задачи через региональный планировщик, а на Paper/Purpur — через обычный планировщик Bukkit.
139+
140+
**Как выдать игроку постоянный доступ к закрытой возможности?**
141+
Задайте большую длительность исключения: `/wab bypass Ник nether 999999999`.
142+
143+
**Можно закрыть мир по дате, а потом перейти на расписание?**
144+
Да. Если под возможностью есть блок `recurring:`, дата игнорируется. Уберите `recurring:`, чтобы вернуться к режиму по дате, и выполните `/wabreload`.
145+
146+
---
147+
148+
## 🐛 Ошибки и предложения
149+
150+
Пишите в [GitHub Issues](https://github.com/denfry/WorldAccessBlocker/issues) или в комментариях под ресурсом.
151+
152+
---
153+
154+
# 📋 Список изменений — 0.11.0
155+
156+
### Добавлено
157+
158+
- **Поддержка Minecraft 1.20.1 — последняя версия.** Плагин теперь запускается на Paper / Purpur / Folia начиная с **1.20.1** (Java 17+), а не только с 1.20.5. Один и тот же JAR работает и на старых 1.20.x, и на самых свежих версиях игры.
159+
- **Статус блокировок для всех.** Теперь любой игрок может посмотреть, что и до когда закрыто, командой `/wab status` — op больше не нужен. Выдача и снятие исключений (`/wab bypass`, `/wab remove`) остаются только у операторов.
160+
- **Элитры отключаются даже в полёте.** Если игрок уже летит, когда начинается окно блокировки, его теперь тоже опустит на землю (раньше отменялся только взлёт).
161+
- **Предупреждение об устаревшем конфиге.** При старте сервер подскажет в консоли, если ваш `config.yml` старее текущей версии плагина.
162+
- **Мягкий откат языка.** Если в языковом файле не хватает какой-то фразы, плагин подставит её на английском вместо «Message not found».
163+
164+
### Исправлено
165+
166+
- **Folia: больше никаких крашей.** Плагин перестал падать при сохранении исключений и корректно телепортирует игроков между мирами и регионами.
167+
- **Цветные уведомления о новой версии.** Сообщение об обновлении теперь выводится с цветами, а не с символами форматирования в тексте.
168+
- **Выход из Энда.** Покинуть Энд больше нельзя запретить случайно: при закрытом Энде блокируется только вход, выход работает.
169+
- **Перенос старых настроек расписания** при обновлении конфига теперь срабатывает как надо.
170+
171+
### Изменено
172+
173+
- Права проверяются отдельно для каждой подкоманды.
174+
- В сборку релиза добавлен прогон тестов, а список поддерживаемых версий на Modrinth формируется автоматически — все релизы от 1.20 и выше.

0 commit comments

Comments
 (0)