Description
In English
A client-side Fabric mod for Minecraft 26.1.x that replaces CoreProtect's wall of chat text with a proper window: player heads, item icons, translated names, filters, sorting, per-player summaries, world outlines and export.
Nothing is installed on the server, and the mod does nothing a player could not do by
hand. It sends only when you click something: the page jumps CoreProtect attached to its
own links, and — from the item-restoring menu — a /give, a CoreProtect rollback, or
a creative-inventory placement. Each of those is subject to exactly the
permission it would need if you typed or clicked it yourself.
CoreProtectGUI is an independent mod. It is not affiliated with the CoreProtect plugin and is not part of it.
What it does
You run /co i and click a chest. Instead of this:
2.53/h ago + its_real_uk added x53 stripped_spruce_wood.
2.53/h ago - its_real_uk removed x56 stripped_spruce_wood.
...700 more lines
a window opens with a table: the player's head, the item's icon, its name in your own
language, and "2 hours 32 min ago" instead of 2.53/h.
Features
- Five views — event list, totals by player, by item, by action, and the raw server text as a safety net.
- Filters by player, item, action and quantity (
≥,=,≤), plus a time period. - Sorting by clicking a column heading.
- In-window pagination, plus batch loading of many pages at once.
- History on disk — old rows never need asking the server for twice; paging stops as soon as a page brings nothing new.
- Marks in the world — an outline, a filled box, or the block itself drawn translucent. The last one shows what was there, not only where.
- JourneyMap waypoints and teleport from a row.
- Export to TXT, CSV, JSON, Markdown or a standalone HTML page.
- Restore a lost item (operators) — give it back with its enchantments and name, place it in your inventory in creative, or roll the action back through CoreProtect.
- Enchantments shown as real item lore with the glint, where the server sends them.
- Two looks, switched in Settings at any moment: Modern, and the Classic the mod shipped with.
- A pictogram per action, so putting something in and taking it out are told apart by shape and not by colour alone — and any of them can be replaced with a PNG of your own.
- A colour per action, with a picker.
- Reads CoreProtect's English, Ukrainian and Russian wording, and the Advanced screen suggests the wordings other languages use.
Requirements
| Minecraft | 26.1.x |
| Fabric Loader | 0.19.0+ |
| Java | 25 |
| Fabric API | required |
| Mod Menu | optional — settings also reachable in-game |
| JourneyMap | optional — enables waypoints |
Your server needs the CoreProtect plugin and you need permission to use /co i or
/co near. The mod grants no access you do not already have.
Using it
| Action | How |
|---|---|
| Open the window | /co i and click a block, or press K for the last result |
| Guide | the ? button — fourteen pages, picked from a grid |
| Settings | the cog button, or Mod Menu |
| Switch view | the List / By player / By item / By action / As received button |
| Mark the blocks in the world | the brackets button |
| History for this spot | the clock button |
| Waypoint / teleport | click a row / Shift+click a row |
| Restore an item (operators) | right-click a row — give, creative placement, or rollback |
| Type a page number | click the … in the pager |
| Stop batch loading | Esc |
Three keys live in Controls, under CoreProtect UA. Only the first has a default, because the other two send a command to the server:
| Key | Does |
|---|---|
| K | reopen the last result, without asking the server again |
| unbound | run /co inspect |
| unbound | run /co near |
Filter syntax
The Player and Item boxes understand a small query language:
| Query | Meaning |
|---|---|
Steve, Alex |
either of them |
-Steve |
everyone except Steve |
-Steve, -Alex |
neither of them |
"stone" |
exact match — stone only |
stone |
also sandstone, redstone, stone bricks |
diamond, -sword |
matches diamond, but never sword |
! works in place of -. Items match by translated name, by raw id and by sign text.
The button beside the period boxes fills in a ready-made stretch — hour, day, week — with
no typing. The boxes also take their own text: 7d, 24h, 30m, a date (2026-07-20)
or a date and time (2026-07-20 15:30).
Settings
config/cpg.json, editable in-game:
| Key | Default | Meaning |
|---|---|---|
autoOpen |
true |
open the window automatically after /co i |
suppressChat |
true |
swallow CoreProtect's original chat lines |
guiTheme |
MODERN |
the look: MODERN or CLASSIC |
rowHeight |
22 |
table row height, 14–48 |
animations |
true |
windows fading in, rows arriving and leaving, eased scrolling |
translateStatusLines |
true |
translate the plugin's status messages |
requestGapTicks |
10 |
pause between page requests (20 ticks = 1 second) |
keepHistory |
true |
remember lookups on disk |
keepInMemory |
true |
keep scanned rows in RAM between lookups |
stopAtKnownPages |
true |
stop paging once a page brings nothing new |
highlightBlocks |
true |
mark the result's blocks in the world at all |
highlightStyle |
OUTLINE |
OUTLINE, GHOST_BOX or GHOST_BLOCK |
highlightSeconds |
180 |
how long a mark lasts |
highlightHours |
24 |
how old an event may be and still be marked |
highlightThroughWalls |
true |
draw marks over the terrain — ignored by GHOST_BLOCK, which cannot be |
highlightFadeColour |
true |
colour marks by time left rather than by action |
actionColours |
— | colour per action, with a picker in-game |
actionIcons |
— | a PNG from the icon folder per action; anything unlisted keeps its built-in pictogram |
serverUtcOffsetMinutes |
0 (UTC) |
the server's clock, so exact times convert to yours |
Getting serverUtcOffsetMinutes right matters for anything time-based — the relative
"ago" on every row, and the period filter's from/to boxes both depend on it. The
Settings screen can work it out on its own: Detect the server's offset
automatically compares an exact-time row's raw stamp against its zone-free "X ago" and
solves for the difference, so nothing has to be guessed by hand.
An Advanced screen exposes what the mod treats as CoreProtect output: status-line prefixes, the keyword in headers, and extra spellings for actions, "ago" and "page". Only worth touching if your server words things unusually — and each box offers the wordings other CoreProtect languages use, completed with Tab, so the answer does not have to be known in advance.
Your own action icons
Drop PNGs into the folder next to config/cpg.json — the Icon folder button on the
Action colours screen opens it — and any of them can be given to any action. What happens
to a picture:
- It is reduced to 8×8. Drawing it at that size gives the sharpest result.
- It is drawn in the action's colour, not its own, so only the shape survives. That colour is set on the same screen.
- With transparency, the opaque parts are the shape. Without any, the dark parts are and the light parts count as background — an image straight out of an editor is a drawing on a white canvas, and reading it the other way would turn every icon into a filled square.
A note saying all of this is left in the folder the first time it is created.
Known limits
How much of an item survives depends on the server. CoreProtect's text carries an item's id and nothing else. Anything richer arrives only if the server attaches a hover to the item name, and there are two cases:
- a real item — the data is the server's own and goes across exactly;
- a description in words ("Efficiency III") — the mod matches those back against the game registry and rebuilds enchantments and the custom name. Close, but reconstructed.
Without the first, durability, attribute modifiers, shulker/book/potion contents and custom model data are simply not there — not for this mod or any other client-side one. A rollback is the only route to the server's real record, because it runs on the server from that record.
The wording must be recognised. English, Ukrainian and Russian are built in. If a server uses another CoreProtect language, or a fork, the table will come up empty — the mod says so and switches to the raw view rather than looking broken. The Advanced screen is there to teach it the new wording.
Batch loading is visible to the server. Thirty pages is thirty commands. They go out
one at a time with a pause, but raise requestGapTicks if your server throttles
commands.
A ghost block cannot be seen through terrain, and stands in its default orientation. It is ordinary geometry, so nothing hangs it over the world the way an outline hangs; and CoreProtect names the block but not its state, so a log lies along its own axis and a stair faces north whatever the real one did. An item with no block form at all — a wind charge, say — gets no ghost. The outline is still there for the cases those matter in.
Giving an item back needs the same permission typing it would. Right-clicking a row
sends a plain /give, not a bypass — it only works for someone who could already run
that command themselves. It carries whatever of the item's data survived, as above.
Any row with an exact timestamp whose action CoreProtect can undo also offers a rollback, restoring the server's own record rather than a reconstruction. Where it lands depends on what happened: something dropped, thrown or lost on death goes back into the player's own inventory — this is how you hand someone their gear back after dying — while something taken from a container goes back into the container.
Two caveats. The container case can duplicate: CoreProtect refills the container without touching whoever emptied it, so if they still have the item, there are now two. And it is aimed by the player, a few seconds either side of the row, and a radius around where you are standing rather than around the row's own coordinates, so another matching action of theirs at that moment and place goes with it. It runs for real and takes two clicks, since CoreProtect refuses to preview container transactions.
Support
Questions, bug reports and suggestions go on Discord — in English or in Ukrainian, there is a channel for each.
Building
MC 26.x ships unobfuscated, so Fabric Loom, Yarn and mappings are not needed — this is a plain Java project compiled straight against the game jar. The build downloads Minecraft and its libraries from Mojang itself, so a clean checkout builds anywhere with just a JDK 25.
./gradlew build
The jar lands in build/libs/. To drop it into a game instance for testing:
./gradlew installMod -Pmods_dir=/path/to/instance/mods
Every dependency resolves from a public source — Minecraft and its libraries from Mojang's manifest, Fabric API and Loader from the Fabric maven, Mod Menu from Terraformers. Nothing has to be present on the machine beforehand and nothing third-party is redistributed with this source.
JourneyMap is optional at build time too. Its API is All Rights Reserved, so it
cannot travel with this repository and has to be fetched from ModMaven. If it cannot be
reached — or you pass -Pjourneymap=false — the two classes that touch it are left out
and everything else builds as usual. The resulting jar is simply one without waypoint
support, which is exactly how the mod behaves for a player who has no JourneyMap
installed. The build says which of the two it produced.
Tests
./gradlew test
161 tests covering the parser, the filter query language, summaries, time parsing,
history merging, chat collapsing, the rollback action mapping, the give command's
component budget, and every export format's escaping. The parser tests run against real
CoreProtect output captured from a live server, kept in src/test/resources.
Licence
CoreProtectGUI Non-Commercial License 1.0 — use, modify and share it freely and for free, but making money from it is not allowed: no selling, no paid access, no monetised links, no bundling into paid packs or services. Voluntary donations that grant no extra access are fine.
This is deliberately not an OSI open-source licence.
Українською
Клієнтський Fabric-мод для Minecraft 26.1.x, який замінює текстове простирадло CoreProtect на нормальне вікно: голови гравців, іконки предметів, перекладені назви, фільтри, сортування та зведення по гравцях.
Нічого не потрібно встановлювати на сервер, і мод не робить нічого, чого не зробив би
гравець руками. Надсилає щось лише тоді, коли ти сам натискаєш: переходи між сторінками,
які CoreProtect повісив на свої посилання, а з меню відновлення предметів — /give,
відкат CoreProtect або викладання через креативний інвентар. Кожна з цих дій
потребує рівно того права, що й якби ти зробив її вручну.
CoreProtectGUI — незалежний мод. Він не пов'язаний із плагіном CoreProtect і не є його частиною.
Що він робить
Ви робите /co i і клікаєте по скрині — замість цього:
2.53/h ago + its_real_uk added x53 stripped_spruce_wood.
2.53/h ago - its_real_uk removed x56 stripped_spruce_wood.
...ще 700 рядків
відкривається вікно з таблицею, де є голова гравця, іконка предмета, «Брусок ялинової
деревини» замість stripped_spruce_wood і «2 години 32 хв тому» замість 2.53/h.
Основне
- П'ять виглядів — список подій, підсумки по гравцях, по предметах, по діях, і сирий текст від сервера як запобіжник.
- Фільтри по гравцю, предмету, дії та кількості (
≥,=,≤), плюс період. - Сортування кліком по заголовку колонки.
- Пагінація у вікні, плюс пакетне завантаження кількох сторінок одразу.
- Історія на диску — старі рядки не запитуються в сервера вдруге; завантаження сторінок зупиняється, щойно якась не приносить нічого нового.
- Позначки у світі — контур, залитий куб, або сам блок напівпрозорим. Останній показує, що там було, а не лише де.
- Вейпоінти JourneyMap і телепорт прямо з рядка.
- Експорт у TXT, CSV, JSON, Markdown або окрему HTML-сторінку.
- Повернути втрачений предмет (адмінам) — видати з чарами й назвою, покласти в інвентар у креативі, або відкотити дію через CoreProtect.
- Чари показуються як справжня лора предмета з переливом, там де їх надсилає сервер.
- Два вигляди, перемикаються в налаштуваннях будь-коли: сучасний і той класичний, з яким мод вийшов.
- Піктограма для кожної дії, щоб «поклав» і «забрав» різнились формою, а не лише кольором, — і будь-яку з них можна замінити власним PNG.
- Свій колір для кожної дії, з піпеткою й HEX.
- Розпізнає формулювання CoreProtect англійською, українською та російською, а екран «Для просунутих» підказує, як це пишуть інші мови.
Встановлення
| Minecraft | 26.1.x |
| Fabric Loader | 0.19.0+ |
| Java | 25 |
| Fabric API | обов'язково |
| Mod Menu | необов'язково — налаштування доступні й у самому вікні |
| JourneyMap | необов'язково — вмикає вейпоінти |
Киньте coreprotectgui-*.jar у теку mods. На сервері потрібен плагін CoreProtect і
дозвіл на /co i або /co near — мод не дає жодного доступу, якого в тебе й так немає.
Користування
| Дія | Як |
|---|---|
| Відкрити вікно | /co i і клік по блоку, або клавіша K для останнього результату |
| Довідка | кнопка ? — чотирнадцять сторінок, які обираєш із сітки |
| Налаштування | кнопка з шестернею або Mod Menu |
| Перемкнути вигляд | кнопка Список / За гравцем / За предметом / За дією / Як прийшло |
| Позначити блоки у світі | кнопка з дужками |
| Історія для цього місця | кнопка з годинником |
| Вейпоінт / телепорт | клік по рядку / Shift+клік по рядку |
| Відновити предмет (адмінам) | право-клік по рядку — видати, креатив або відкат |
| Вписати номер сторінки | клік по … у переліку сторінок |
| Зупинити завантаження | Esc |
Три клавіші лежать у «Керуванні», секція CoreProtect UA. Стандартне значення є лише в першої, бо дві інші надсилають команду на сервер:
| Клавіша | Що робить |
|---|---|
| K | відкрити останній результат, не питаючи сервер знову |
| не задано | виконати /co inspect |
| не задано | виконати /co near |
Мова фільтрів
Поля «Гравець» і «Предмет» розуміють простий синтаксис:
| Запит | Значення |
|---|---|
Sbirioni, DarkCapi |
будь-хто з двох |
-Sbirioni |
усі, крім нього |
-Sbirioni, -Ivan |
крім обох |
"stone" |
точний збіг — лише камінь |
stone |
ще й пісковик, редстоун, кам'яна цегла |
its_real, -hopper |
збіг з its_real, але ніколи hopper |
Замість - можна писати !. Предмет шукається і за перекладеною назвою, і за сирим
ідентифікатором, і за текстом на табличці.
Кнопка поруч із полями періоду підставляє готовий проміжок — годину, добу, тиждень —
без набору вручну. Поля приймають і власний запис: 7d, 24h, 30m, дату
(2026-07-20) або дату з часом (2026-07-20 15:30).
Налаштування
config/cpg.json, редагується і в грі:
| Ключ | Типово | Що робить |
|---|---|---|
autoOpen |
true |
відкривати вікно самому після /co i |
suppressChat |
true |
глушити оригінальні рядки в чаті |
guiTheme |
MODERN |
вигляд: MODERN або CLASSIC |
rowHeight |
22 |
висота рядка таблиці, 14–48 |
animations |
true |
поява вікон, прихід і вихід записів, плавна прокрутка |
translateStatusLines |
true |
перекладати службові повідомлення плагіна |
requestGapTicks |
10 |
пауза між запитами сторінок (20 тіків = 1 с) |
keepHistory |
true |
запам'ятовувати перевірки на диску |
keepInMemory |
true |
тримати відскановані рядки в пам'яті між перевірками |
stopAtKnownPages |
true |
зупиняти завантаження, щойно сторінка не приносить нового |
highlightBlocks |
true |
чи позначати блоки з результату у світі взагалі |
highlightStyle |
OUTLINE |
OUTLINE, GHOST_BOX або GHOST_BLOCK |
highlightSeconds |
180 |
скільки живе позначка |
highlightHours |
24 |
наскільки старою може бути подія, щоб її позначили |
highlightThroughWalls |
true |
малювати позначки поверх рельєфу — GHOST_BLOCK це ігнорує, бо не може |
highlightFadeColour |
true |
забарвлювати позначки за часом, а не за дією |
actionColours |
— | колір для кожної дії, з вибором прямо в грі |
actionIcons |
— | PNG із теки іконок для кожної дії; те, чого тут немає, лишається з вбудованою піктограмою |
serverUtcOffsetMinutes |
0 (UTC) |
годинник сервера, щоб точний час перевести у твій |
serverUtcOffsetMinutes впливає на все, що пов'язане з часом, — і на «X тому» в кожному
рядку, і на поля «від»/«до» у фільтрі періоду. Не обов'язково підбирати число вручну:
кнопка «Визначити зсув сервера автоматично» в налаштуваннях сама рахує його з
останнього відкритого вікна — порівнює сирий час рядка з незалежним від поясу «X тому» і
виводить різницю.
Вкладка «Для просунутих» показує, що саме мод вважає виводом CoreProtect: префікси службових рядків, ключове слово в заголовках, і додаткові формулювання для дій, «тому» і «сторінка». Варта уваги, лише якщо сервер описує все незвично, — і кожне поле там пропонує формулювання, які використовують інші мови CoreProtect: підставляються через Tab, тож відповідь не треба знати заздалегідь.
Свої іконки дій
Кинь PNG у теку поруч із config/cpg.json — її відкриває кнопка «Тека з іконками» на
екрані кольорів — і будь-яку з них можна дати будь-якій дії. Що станеться з картинкою:
- Її зведуть до 8×8. Намалюй одразу в цьому розмірі — буде найчіткіше.
- Її намалюють кольором дії, а не її власним, тож лишається тільки форма. Той колір задається на тому ж екрані.
- Є прозорість — форма це непрозорі пікселі. Немає — форма це темні, а світлі вважаються тлом: картинка просто з редактора є малюнком на білому полотні, і якщо прочитати навпаки, кожна іконка стане суцільним квадратом.
Записка з усім цим лишається в теці при першому створенні.
Обмеження, про які варто знати
Скільки даних предмета доживе — залежить від сервера. У тексті CoreProtect є ідентифікатор предмета й нічого більше. Багатше приходить лише тоді, коли сервер чіпляє до назви предмета підказку, і тут два випадки:
- справжній предмет — дані власні серверні й переносяться точно;
- опис словами («Efficiency III») — мод зіставляє їх із реєстром гри й відтворює чари та власну назву. Близько, але це реконструкція.
Без першого варіанта прочності, модифікаторів атрибутів, вмісту шалкера, книги чи зілля та custom model data просто немає — ні в цього мода, ні в будь-якого іншого клієнтського. Єдиний шлях до справжнього запису сервера — відкат, бо він виконується на сервері саме з того запису.
Формулювання має бути розпізнане. Вбудовано англійську, українську та російську. Якщо на сервері CoreProtect говорить іншою мовою, таблиця залишиться порожньою — мод про це скаже й перемкнеться на вигляд «Як прийшло», а не вдаватиме, що зламався. Навчити його нових формулювань можна на вкладці «Для продвинутих».
Пакетне завантаження помітне для сервера. 30 сторінок — це 30 команд. Вони йдуть по
одній з паузою, але якщо на сервері жорсткий ліміт на команди, підніміть
requestGapTicks.
Привида блоку не видно крізь рельєф, і він стоїть у типовій орієнтації. Це звичайна геометрія, тому ніщо не вивішує його над світом так, як вивішується контур; а CoreProtect пише назву блоку, але не його стан, тому колода ляже по своїй осі, а сходинка дивитиметься на північ, що б там не було. Предмет без блокової форми — наприклад, заряд вітру — привида не отримає взагалі. Контур лишився саме для тих випадків, де це важливо.
Повернути річ потребує того самого права, що й ввести команду вручну. Право-клік по
рядку шле звичайну /give, а не якийсь обхід — спрацює лише в того, хто й так міг би
викликати цю команду сам. Передає те з даних предмета, що вціліло, — див. вище.
Будь-який запис із точним часом, дію якого CoreProtect уміє скасувати, має ще й відкат — він повертає власні дані сервера, а не реконструкцію. Куди саме повернеться, залежить від того, що сталося: те, що гравець викинув, кинув чи загубив при смерті, повертається йому просто в інвентар — саме так і віддають людині речі після смерті, — а те, що забрали з контейнера, повертається в контейнер.
Два застереження. Випадок із контейнером може задублювати: CoreProtect наповнює контейнер, не чіпаючи того, хто його спорожнив, тож якщо річ досі в нього — тепер їх дві. І націлюється відкат гравцем, кількома секундами навколо запису й радіусом від того місця, де стоїш ти, а не від координат самого запису — тож інша його така сама дія в той момент поруч піде разом. Виконується по-справжньому й потребує двох кліків, бо прев'ю для контейнерних транзакцій CoreProtect не дозволяє.
Підтримка
Питання, баги й пропозиції — на Discord: є окремий канал і для української, і для англійської.
Збірка
MC 26.x постачається необфускованою, тому Fabric Loom, Yarn і мапінги не потрібні — це звичайний Java-проєкт, що компілюється прямо проти jar гри. Все потрібне збірка качає сама (гру — з маніфесту Mojang, решту — з maven), тож чистий клон збереться будь-де, маючи лише JDK 25.
./gradlew build
Готовий jar з'явиться в build/libs/. Щоб одразу покласти його в теку mods:
./gradlew installMod -Pmods_dir=/шлях/до/instance/mods
JourneyMap теж необов'язковий при збірці. Його API має ліцензію All Rights Reserved,
тож у репозиторії його немає — він качається з ModMaven. Якщо дістати не вдалось, або якщо
передати -Pjourneymap=false, два класи, які його торкаються, просто не потрапляють у
збірку, а решта збирається як завжди. Виходить той самий мод, лише без вейпоінтів — рівно
так, як він поводиться в гравця, у якого JourneyMap не встановлено. Збірка пише, який із
двох варіантів зібрано.
Тести
./gradlew test
161 тест: парсер, мова фільтрів, зведення, розбір часу, злиття історії, згортання
повідомлень у чаті, зіставлення дій для відкату, бюджет компонентів у команді видачі та
екранування в кожному форматі експорту. Парсер перевіряється на справжньому виводі
CoreProtect, знятому з живого сервера — він лежить у src/test/resources.
Ліцензія
CoreProtectGUI Non-Commercial License 1.0 — користуйтесь, змінюйте й поширюйте вільно і безкоштовно, але заробляти на моді заборонено: ні продаж, ні платний доступ, ні монетизовані посилання, ні включення в платні збірки чи послуги. Добровільні пожертви, які нічого не відкривають додатково, дозволені.
Це навмисно не open-source-ліцензія за визначенням OSI.






