CoreProtect: cofnięcie griefu i analiza incydentów na serwerze Minecraft
CoreProtect loguje każdą akcję graczy i pozwala cofnąć grief jednym poleceniem. Pokazujemy jak go zainstalować, co wpisać do config.yml, jak namierzyć sprawcę i przywrócić świat bez przywracania całego backupu.
Po co CoreProtect na każdym serwerze
Jeśli prowadzisz serwer bez whitelisty albo masz choćby pięciu stałych graczy, prędzej czy później zdarzy się jedno z dwóch: ktoś opróżni cudzą skrzynię z diamentami albo zaleje czyjąś bazę lawą. Bez logów nie udowodnisz kto, bez rollbacku zostaje naprawa ręczna lub przywrócenie backupu świata, co kasuje wszystkie inne zmiany od czasu kopii.
CoreProtect robi obie rzeczy. To plugin-logger pod Paper i Spigot, który zapisuje do bazy danych każde postawienie i zniszczenie bloku, każdy dostęp do skrzyni, czat, wykonane polecenie, wypitą miksturę. Każda akcja z wybranego okresu może zostać cofnięta lub przywrócona. W praktyce CoreProtect działa na ponad 90% serwerów od 10 do 1000 graczy, bo w 2026 roku nic innego nie łączy podobnej szybkości, wsparcia i kompatybilności.
Ten poradnik obejmuje instalację, konfigurację, polecenia śledcze, rollback i kompromisy bazy danych. Wersje: CoreProtect 22.x, Minecraft 1.20-1.21, Paper i pochodne.
Instalacja na Paper i Spigot
Pobierz jar z oficjalnego Modrinth lub SpigotMC. Wrzuć do plugins/, zrestartuj serwer, plugin sam stworzy plugins/CoreProtect/config.yml i bazę SQLite database.db.
Wymagania minimalne: Java 17+, Paper 1.20.1 lub nowszy. Na Spigocie też działa, ale Paper jest zalecany. Eventy idą szybciej, plugin nadąża bez lag-spike'ów.
Sprawdzenie instalacji:
# W konsoli serwera lub jako operator
/co help
/co status
Jeśli widzisz wersję i Database is operational, wszystko gra. Standardowo żaden gracz nie dostaje uprawnień, trzeba je nadać przez LuckPerms albo inny plugin uprawnień.
SQLite czy MySQL
Domyślnie CoreProtect pisze do SQLite (database.db obok configu). Wystarcza do około 50 graczy online lub do momentu gdy plik osiągnie 50-100 GB. Później SQLite zaczyna zwalniać przy zapytaniach lookup z dużym promieniem i opłaca się przejść na MySQL lub MariaDB.
Kiedy migrować na MySQL:
- regularnie ponad 50 graczy jednocześnie
database.dbprzekracza 100 GB/co lookuptrwa 5-10 sekund i więcej- sieć multi-serwerowa (BungeeCord/Velocity) z jedną wspólną bazą logów
Konfiguracja MySQL w config.yml:
mysql: true
mysql-host: "127.0.0.1"
mysql-port: 3306
mysql-database: "coreprotect"
mysql-username: "coreprotect_user"
mysql-password: "***"
table-prefix: "co_"
Po przełączeniu plugin tworzy nowe tabele po restarcie. Stare dane SQLite nie są automatycznie migrowane, są tylko skrypty zewnętrzne.
Co logować w config.yml
Logowanie wszystkiego pożera dysk. Na serwerze górniczym z 200 graczami block-break: true plus item-pickup: true daje gigabajty dziennie. Loguj tylko to, czego faktycznie używasz przy dochodzeniach.
Roboczy minimalny config:
# Co zapisywać do bazy
block-place: true
block-break: true
natural-break: false # bloki łamane przez grawitację: szum, off
explosions: true # creepery, TNT, end crystal: zawsze on
fire: true
liquid-tracking: true # przepływ lawy/wody
sign-text: true
container-transactions: true
item-transactions: true
item-pickup: false # zwykle przesada, pożera dysk
player-interactions: true # drzwi, dźwignie, przyciski
chat: true
commands: false # włącz jeśli /sudo lub /tp są dostępne
worldedit: true # krytyczne, gdy WorldEdit ma staff
# Przechowywanie
default-radius: 10
date-format: "yyyy-MM-dd HH:mm:ss"
api-enabled: true
# Wydajność
table-version: 9
disable-wal: false # WAL przyspiesza SQLite, zostaw on
commands: true zapisuje każdą wpisaną komendę z argumentami. Przydaje się przy podejrzeniu dupów przez komendy, ale jeśli gracze piszą /msg z prywatną treścią, to potencjalny problem prywatności. Decyzja zależy od serwera.
Tryb inspektora
Najczęstsza komenda po griefingu: stanąć obok i sprawdzić kto co ruszał. Włączasz tryb:
/co inspect
# lub krócej:
/co i
Lewy klik w blok pokazuje teraz kto go postawił/zniszczył i kiedy. Prawy klik w skrzynię - pełna historia transakcji. Bardzo wygodne przy skardze "z mojej skrzyni zniknęły diamenty": stajesz obok, klik prawy, widzisz cały log z nickiem i czasem.
Wyłączenie trybu - ponownie /co i.
Inspector wymaga uprawnienia coreprotect.inspect. Nie nadawaj zwykłym graczom, inaczej moderatorzy są zbędni i każdy zaczyna sprawdzać sąsiada.
Wyszukiwanie: /co lookup
Gdy potrzeba systematycznego przeszukania logów zamiast klikania:
# Wszystko co Steve robił przez ostatnie 7 dni
/co lookup u:Steve t:7d
# Co Steve kopał w promieniu 100 bloków przez 24 godziny
/co lookup u:Steve t:24h r:100
# Wszystkie eksplozje przez 6 godzin
/co lookup a:+block t:6h b:tnt
# Dostępy do skrzyń przez tydzień
/co lookup t:7d a:container
Wynik dzielony na strony w czacie, przeglądasz /co l <strona>. Jeśli potrzebny eksport, użyj pluginu z webhookiem albo czytaj bazę bezpośrednio przez SQL.
Parametry:
u:- nick gracza (lub#environment,#tnt,#fire)t:- czas wstecz:1m,1h,7d,30d, można łączyćt:1d2hr:- promień w blokach od ciebie,r:#world- cały świat,r:#chunk- aktualny chunka:- typ akcji:block,+block(tylko place),-block(tylko break),chat,command,containerb:- konkretny blok:b:diamond_ore,b:tnte:- wykluczenie:e:#dirt,grass_blockfiltruje śmiecii:- filtr przedmiotu dla skrzyń:i:diamond
Cofanie griefu: /co rollback
Gdy wiesz kto i jaki zakres, cofasz:
# Cofnij wszystko co Steve robił przez ostatnią godzinę w promieniu 50
/co rollback u:Steve t:1h r:50
# Cofnij wszystkie postawienia TNT z 30 minut na całym świecie
/co rollback t:30m a:+block b:tnt r:#world
# Cofnij wylewanie lawy z 2 godzin
/co rollback t:2h a:liquid e:water
Komenda działa asynchronicznie: na dużych regionach serwer nie laguje, ale operacja trwa minuty. Postęp leci do konsoli. Nie przerywać, czekać na Rollback complete.
Ważny szczegół: rollback przywraca stan SPRZED pierwszej akcji w wyborze. Jeśli Steve postawił blok, a potem go zburzył, rollback zwróci puste pole (bez bloku). Sprawdź parametry najpierw na strefie testowej.
Przywracanie: /co restore
Co jeśli rollback poszedł za daleko? Na przykład cofnęłaś griefera, ale przy okazji też sąsiada, który łatał jego dziury. Wtedy:
/co restore u:Steve t:1h r:50
Restore to operacja odwrotna: świat wraca do stanu PO akcjach. W praktyce undo dla rollbacku. Dla częściowego przywrócenia kombinuj z b: i e: żeby zaczepić tylko potrzebne bloki.
Czyszczenie: /co purge
Baza rośnie szybko. Na serwerze z 100 graczami i bez item-pickup to około 5-10 GB logów miesięcznie. Po pół roku 30-60 GB, lookupy zwalniają. Czyść stare:
# Skasuj wszystko starsze niż 30 dni
/co purge t:30d
# Tylko jeden świat
/co purge t:30d w:world_nether
Uruchamiaj purge w nocy lub w okno małej aktywności, blokuje bazę. Po purge na SQLite jeszcze VACUUM żeby plik się skurczył:
sqlite3 plugins/CoreProtect/database.db "VACUUM;"
Na MySQL OPTIMIZE TABLE co_block, co_container, co_chat;. Na dużych tabelach może trwać godzinę, lepiej z zatrzymanym serwerem.
Wydajność i monitoring
Co śledzić:
- rozmiar bazy: obserwuj wzrost. Jeśli rośnie szybciej niż 10 GB tygodniowo, logujesz za dużo. Wyłącz
item-pickup,natural-break,liquid-tracking. - TPS przy lookup: zapytania z
r:#worldit:30dsą ciężkie. Na SQLite blokują zapis, świat nie nadąża z nowymi eventami, lag-spike'y gwarantowane. - dyskowe IOPS: SQLite generuje wiele małych zapisów. SSD obowiązkowy, na HDD CoreProtect siada przy 50+ graczach.
Indeksy na co_block(time, user) i podobne plugin pielęgnuje sam, ręcznie nie ruszać. Przy własnych zapytaniach raportowych dodawaj własne indeksy na filtrowanych kolumnach.
Realny scenariusz: nocny grief
Logujesz się rano, na spawnie pęknięty tunel do pokoju admina. Nikogo nie ma online, nie wiadomo kto i kiedy. Kroki:
- Stań obok pierwszego wybuchniętego bloku.
/co i, lewy klik. Widzisz nick i czas pierwszej eksplozji. /co lookup u:Griefer123 t:12h r:#world a:+block b:tntpokazuje każde postawienie TNT z ostatnich 12 godzin na całym świecie. Wynik: TNT od 03:14 do 03:42./co lookup u:Griefer123 t:12h a:containersprawdza czy lazi po skrzyniach. Często grifer najpierw opróżnia skrzynię admina, potem zaciera ślady eksplozją./co rollback u:Griefer123 t:12h r:#worldcofa wszystkie jego akcje z okresu. Wracają i bloki, i zawartość kontenerów.- Banujesz gracza, w LuckPerms sprawdzasz jak ominął WorldGuard. Często grifer wchodzi z alta z uprawnieniami zdobytymi przez socjotechnikę.
Cofnięcie pokoju admina trwa 2-5 minut, dużej akcji griefingowej 10-30 minut.
Czego NIE da się przywrócić
CoreProtect jest mocny, ale nie wszechmocny. Nie przywróci:
- dropu z mobów: zabity enderman dla perły nie jest logowany
- wytopu w piecu: wytopione przedmioty nie są przeliczane wstecz na rudę
- enchantów i kombinacji w kowadle: nowy przedmiot nie jest pamiętany jako kombinacja dwóch starych
- zmian świata bez gracza: erozja od spawnera, aktualizacje z wodospadu, częściowo przez
liquid-tracking, ale nie zawsze czysto - samego świata jeśli folder skasowano: CoreProtect przechowuje zmiany, nie sam świat. Jeśli
world/znika, potrzebny backup świata
Ekwipunek gracza - tylko transakcje kontenerów (zawartość skrzyń). Osobistego ekwipunku Steve'a /co rollback nie przywraca. Do tego potrzeba osobnego pluginu jak InventoryRollback Plus.
Integracja z innymi pluginami
API CoreProtect jest publiczne, wiele pluginów się z nim łączy:
- WorldGuard: zablokowane akcje pojawiają się w logu jako
bypass_attempt - Citizens: interakcje z NPC są logowane z nazwą NPC
- MythicMobs: własne moby i ich ataki widać w
/co lookup a:kill - WorldEdit:
//set,//pastei inne są logowane całościowo. Błędna operacja WE odwracalna przez/co rollback u:OperatorName a:worldedit
Dla deweloperów API CoreProtect pozwala odpytywać dane programowo: pobierać akcje po koordynatach, filtrować po graczu, używać we własnych pluginach.
FAQ
Czy CoreProtect przywróci świat, jeśli folder został skasowany?
Nie. CoreProtect przechowuje zmiany w bazie, nie sam świat. Jeśli world/ zniknął, potrzebny jest backup świata. CoreProtect pomaga tylko gdy świat istnieje, ale coś w nim zmieniono. Backupy świata konfiguruj osobno przez AutoSaveWorld albo snapshoty hostingu.
Ile dysku zajmuje CoreProtect miesięcznie?
Zależy od ruchu i ustawień. Na 100 graczach ze standardową konfiguracją bez item-pickup plan na 5-10 GB miesięcznie. Z item-pickup: true plus commands: true może wyjść 20-30 GB. /co purge t:60d raz w miesiącu utrzyma rozmiar pod kontrolą.
Co lepsze: CoreProtect, Prism czy LogBlock?
CoreProtect w 2026 roku jest najaktywniej rozwijany i najszybszy. Prism ma mocniejsze API i panel webowy, ale wolniej się aktualizuje. LogBlock stary i rzadko łatany, nie polecam dla nowych serwerów. Jeśli już masz LogBlocka i działa, zostaw, ale migracja do CoreProtect upraszcza życie.
Da się cofnąć ekwipunek gracza?
Tylko zawartość kontenerów przez /co rollback ... a:container. Osobisty ekwipunek nie jest śledzony przez CoreProtect. W tym celu zainstaluj InventoryRollback Plus lub PlayerInventoryRollback, które logują sloty ekwipunku osobno.
Czy CoreProtect działa na Folii?
Istnieje fork pod Folię, ale nie wszystkie funkcje są stabilne. Rollback dużych regionów może crashować przez regionalne wątki Folii. Na zwykłym Paperze CoreProtect działa bezproblemowo. Jeśli musisz mieć Folię dla wydajności i potrzebujesz logów, sprawdź alternatywy lub poczekaj na stabilniejsze wydanie.
Jak chronić bazę logów przed samym grieferem?
Jeśli grifer miał uprawnienia OP, mógłby ruszyć bazę i posprzątać po sobie. Ochrona: wynieś MySQL na osobny host z białą listą IP, regularne mysqldump przez cron, kopie offline. Dla SQLite codzienny backup database.db na S3 lub osobny dysk.
Ile trwa rollback 100 tysięcy bloków?
Na SSD z SQLite około 1-3 minuty, MySQL szybciej. Na HDD nawet nie próbuj, czekaj 20+ minut z przycinaniem. Postęp w konsoli serwera, w czacie nie leci linijka po linijce.
Co dalej
Zainstaluj CoreProtect od razu przy tworzeniu serwera, przed pierwszym incydentem. Po tygodniu działania sprawdź rozmiar bazy, wyłącz niepotrzebne kategorie logowania, ustaw /co purge t:60d jako zadanie planowe raz w miesiącu. Uprawnienie coreprotect.inspect daj tylko ekipie, zwykłym graczom nie jest potrzebne i obciąża system.
I chroń sam serwer przed atakami z zewnątrz. Najczystszy log nic nie pomoże, jeśli serwer padnie pod DDoS-em i gracze odejdą. MineGuard oferuje filtrowanie świadome Minecrafta bez utraty TPS, lepiej skonfigurować zawczasu.
Chroń swój serwer przed atakami DDoS
Darmowa ochrona z konfiguracją w 5 minut. 1 TB ruchu w zestawie.
Wypróbuj za darmoPowiązane artykuły
Serwer Minecraft laguje: DDoS czy problemy serwera?
Twój serwer Minecraft zaczął lagować, gracze narzekają, a ty nie rozumiesz - to atak czy coś się popsuło na serwerze? Rozbieramy, jak odróżnić DDoS od problemów serwerowych.
EssentialsX: kompletny przewodnik po konfiguracji serwera Minecraft 2026
Instalacja, moduły, konfiguracja, ekonomia, kity, warpy i uprawnienia LuckPerms. Wszystko o EssentialsX w 2026.
Jak działa ochrona DDoS: wyjaśniamy prostymi słowami
Krok po kroku rozkładamy, jak ochrona DDoS filtruje ruch, odróżnia graczy od botów i nie pozwala atakowi położyć twojego serwera. Przekierowanie DNS, scrubbing, tunele GRE, anycast i weryfikacja protokołu Minecraft.