PerfectGuard v2.4
2026-05-26
Hytale Update 5 compatibility update.
Changes:
- Updated for Hytale Update 5 (Pre-Release 5).
- Recompiled against the latest server API (JOML vectors, new permission and HUD APIs).
- Fixed the red "Target Version" warning shown in the mod manager.
- No feature changes. Your existing configs, data and saved files are kept as is.
How to update:
- Stop your server.
- Replace the old PerfectGuard jar with this one.
- Start your server. Nothing else to do.
PerfectGuard v2.3
- Added combat autoclick detection (sustained attack pattern analysis)
- Players attacking a mob non-stop for 8+ seconds without any pause are flagged
- Duration threshold is configurable in config.json (autoclick > sustainedMs)
- Staff alerts are now sent automatically to all players with perfectguard.staff permission
- No longer required to toggle /guard alerts manually to receive notifications
- /guard alerts still works as an opt-in for non-staff players
PerfectGuard v2.1.0 - Patch Notes
New Features
Announcer System (integrated from HyChat)
Vanish Mode (integrated from ModerationPlus)
- Title Announcer — Send title/subtitle messages to yourself (preview) or broadcast to all players. Toggle between major and minor title display. Configurable title and subtitle fields.
- Notification Announcer — Send notification popups with customizable title, body, and style (Success, Warning, Danger). Preview locally or broadcast server-wide.
- Chat Announcer — Broadcast color-formatted chat messages to all online players with a [Broadcast] prefix. Preview before sending.
- All three announcers are accessible from a new Announcer button in the main PerfectGuard dashboard.
![]()
- /pg vanish — Toggle invisibility. When vanished, you are completely hidden from all other players.
- New players joining the server will automatically have vanished staff hidden from their view.
- Vanish state is automatically cleared on disconnect.
- UI support — Vanish/Unvanish button added to the Player Detail page (Admin section). Staff can vanish any player directly from the GUI.
- Player status indicator shows "Vanished" state in the detail page.
Improvements
Invsee / Backsee via GUI
Jail via GUI
- Added INVSEE and BACKSEE buttons to the Player Detail page (Management section). Staff can now view a player's inventory or armor directly from the GUI without commands.
![]()
- Added JAIL button to the Player Detail page (Management section). Staff can jail/release a player directly from the GUI. Automatically teleports the player to the configured jail location.
Technical
- 8 new localization keys across 5 languages (EN, FR, ES, DE, IT)
- 4 new UI pages (GDAnnouncer, GDTitleAnnouncer, GDNotifAnnouncer, GDChatAnnouncer)
- Vanish button added to GDPlayerDetail UI (Admin card)
PerfectGuard v2.0.1 - Patch Notes
Bug Fix
- Fixed a startup crash (ClassCastException) caused by PlayerSetupConnectEvent and PlayerChatEvent being registered as async event handlers instead of sync. The plugin now correctly uses registerGlobal() for both events, resolving the server failing to load when PerfectGuard is enabled.
PerfectGuard v2.0 — Patch Notes
Bug Fixes
Improvements
- Fixed freeze not working — players could still run freely while frozen. Switched from Frozen component (NPC-only) to MovementManager speed zeroing, which properly prevents all client-side movement
- Fixed teleport (/pg tp, /pg tphere, TP button in UI) causing black screen on long distances. Now uses Teleport.createForPlayer() component which handles chunk loading and client sync correctly
- Fixed thread-safety issues across all persisted data maps (switched to ConcurrentHashMap)
- Fixed /pg reload not applying config changes properly
- Fixed BlockHandler not checking if player is banned before processing block events
- Fixed position tracking not updating for all players (only updated for frozen/jailed players before)
- Pre-connection ban enforcement: IP bans and UUID bans are now checked at PlayerSetupConnectEvent, blocking banned players before the world loads (no more loading screen then kick)
- Temp ban auto-expiry at connect: expired temp bans are automatically removed when the player tries to reconnect
- All file I/O (saves) now runs on a dedicated async thread to avoid lag spikes on the game thread
- Freeze enforcement on reconnect: if a frozen player relogs, movement speeds are re-applied immediately
- Ban expiry now properly restores movement speeds (unfreeze + unjail cleanup)
- Removed all debug logging from PlayerTracker
PerfectGuard v2.0.0 — Patch Notes
New Features
Moderation Tools
- Temp Ban — Ban players for a set duration (1H, 6H, 1D, 7D, 30D) with automatic expiry
- IP Ban — Ban players by IP address, preventing reconnection on alt accounts
- Mute / Temp Mute — Prevent players from chatting, permanently or for a set duration
- Kick — Instantly disconnect a player from the server
- Word Blacklist — Block messages containing prohibited words, managed via UI
- Bug Reports — Players can submit bug reports separately from player reports
- Heal — Restore a player's health
- Kill — Kill a player instantly
- Backsee — View a player's equipped armor and equipment via chat
- Invsee — View a player's full inventory contents via chat
Chat System
- New ChatHandler — Intercepts chat messages to enforce mute and word blacklist
- Muted players receive a notification when trying to chat
- Blocked words trigger a warning message to the sender
Anti-Cheat Improvements
- AutoClick detection — Detects abnormal click speed (CPS)
- Nuker detection — Detects mass block destruction
- Auto-expire system for temp bans and temp mutes (checked every 30s)
- IP ban check on player join
UI — Complete Dashboard Redesign
- New 2-column main dashboard: online players list (left) + global punishment history (right)
- Player search bar with live filtering
- Player positions displayed (X/Y/Z coordinates)
- Paginated player list (8 per page)
- 6 most recent sanctions displayed in the history panel
- Navigation buttons: Reports, Bugs, Settings
UI — Player Actions Redesign
- New 2x2 card grid layoutwith 4 categorized sections:
- Punishments (red) — Ban, Temp Ban, IP Ban
- Moderation (orange) — Mute, Temp Mute, Warn
- Management (cyan) — Kick, Jail, Invsee, Backsee
- Admin (purple) — TP Here, Heal, Kill, Freeze
- Player punishment history (6 most recent) displayed below action cards
- Live status indicator (Normal / Frozen / Jailed / Banned / Muted)
UI — New Pages
- Temp Ban page — Duration presets with optional reason field
- Temp Mute page — Same layout as Temp Ban for mute durations
- Word Blacklist page — Add/remove blacklisted words with paginated list
- Bug Reports page — Paginated list of submitted bug reports
- Report Detail page — Full details view for player reports (reporter, target, date, reason)
UI — Settings Improvements
- Added descriptions for each anti-cheat setting (Speed, Fly, FastBreak, FastPlace, Reach, Nuker, AutoClick)
- Added descriptions for Auto-Freeze and Auto-Jail VL thresholds
Commands
Command Permission Description /pg tempban <player> <min> [reason] perfectguard.admin.ban Temporary ban /pg ipban <player> [reason] perfectguard.admin.ban IP ban /pg unipban <ip> perfectguard.admin.ban Remove IP ban /pg mute <player> [reason] perfectguard.mod.mute Permanent mute /pg tempmute <player> <min> [reason] perfectguard.mod.mute Temporary mute /pg unmute <player> perfectguard.mod.mute Unmute /pg kick <player> [reason] perfectguard.mod.kick Kick player /pg bugreport <text> perfectguard.report Submit bug report /pg heal <player> perfectguard.admin.heal Heal player /pg kill <player> perfectguard.admin.kill Kill player /pg backsee <player> perfectguard.mod.backsee View equipment Localization
- Full 5-language support (EN, FR, ES, DE, IT) for all new features
- 120+ new translation keys added
- Cleaned up 23 unused legacy translation keys
Bug Fixes
- Fixed navigation: Back button from Player Actions now correctly returns to the main dashboard
- Fixed TextField data binding on Word Blacklist (ADD button was sending empty values)
- Fixed TextField data binding on Search bar, Temp Ban reason, and Temp Mute reason fields
- Fixed Invsee opening the wrong page (Violations instead of inventory)
- Fixed getMain() → getCombinedHotbarFirst() inventory API call
Data Persistence
- New JSON files: mutes.json, ipbans.json, bugreports.json
- Ban data now includes expiry timestamp for temp bans
- Word blacklist saved in config.json
![]()
![]()
![]()
