ServerUtilities
57 merged pull requests.
New Features
- #335 Created new admin team management GUI classes (
GuiAdminEditTeam,GuiAdminManageClaims, etc.) with server-side permission checks. Added new permissions for admin team management and registered UI inServerUtilitiesRegistry. - @Lyfts- Added: admin team management UI, admin team-related permissions, GuiAdminEditTeam and related GUI classes
- Closes #224
- #334 Added
serverutilities.bypass_whitelistpermission toServerUtilitiesPermissionsand updated the login mixin to check this permission before enforcing whitelist restrictions. - @Lyfts- Added: serverutilities.bypass_whitelist permission
- Closes Dupes-Exploits-GTNH#347
- #333 Updated Navigator integration to use new API changes, added
ClaimsPolygonOverlayfor rendering, optimized claim data requests, and moved network-thread reads to server thread to prevent concurrent modification exceptions. - @Algent- Added: JourneyMap 6 support, dynamic border rendering for claims, ClaimsPolygonOverlay class
- Fixed: potential concurrent modification exceptions in claim data access
- #321 Created new
InvSeeRegistryclass for registration and exposed it viaServerUtilitiesRegistry. Refactored inventory initialization from staticInvSeeInventoriesclass to dynamic registry-based approach. Updated network messages and container classes to use the registry. - @Lyfts- Added: InvSeeRegistry API, registration method in ServerUtilitiesRegistry, dynamic inventory registration
- Removed: InvSeeInventories static inventory initialization class
- Closes #317
- #304 Created
CmdMotdcommand handler and registered it inServerUtilitiesCommands. - @sawyergt- Added: /motd command for displaying server message of the day
- Closes #295
- #299 Implemented
MessageTransferfor the ServerUtilities network channel,TransferClientHandlerto handle client-side disconnect and reconnection, andTransferCommandfor the/transfercommand with host:port parsing and permission level 2. - @alppp- Added: Transfer packet (1.20.5 backport) for server-to-server redirection, /transfer command for redirecting players, TransferHelper public API, Config options for enableTransferPacket and transferWhitelist
- #298 Added
ModernTabRendererwith async skin loading,TabDisplayHandlerfor overlay rendering,TabChannelHandlerfor plugin channel protocol, andTabSkinCachefor persistent head texture storage. Integrated viaGuiIngameForgemixin. - @alppp- Added: Modern tab list renderer with player heads and ping display, Tab header/footer text configuration with color code support, Async skin loading with cache, Plugin channel HP|TabHF for proxy compatibility, Config options for tab list features
- #294 Updated
StringUtilsformatting code regex pattern to include drop shadow code. - @alppp - #291 Extended
CmdBackupandBackupTaskto recognize the=ocflag and pass it to the backup system to filter to claimed chunks only. - @lc-1337- Added: =oc argument for backup command, Only-claimed-chunks backup mode
- Closes GTNH#20391
- #287 Added mixins for
MixinCommandNodeandMixinLiteralCommandNodeto integrate with the permission system, and createdICommandWithPermissioninterface for Brigadier command permission binding. - @Lyfts- Added: Brigadier command permission interceptors, ICommandWithPermission interface for permission binding, CommandHandler mixin updates
- Fixed: Brigadier commands not respecting permission system
- Closes #306
- #284 Added server event handlers to detect empty servers and toggle gamerules based on config, with state tracking in
Universe.datvia NBTUtils to ensure idempotency. - @Algent- Added: Gamerule auto-flip when server is empty, Config options for enabled rules, apply/revert rules, and check interval, State persistence in Universe.dat
- #283 Added
MixinBlockFarmlandto intercept farmland trample events and check claim ownership, with a new config toggle to enable this protection. - @Lyfts- Added: Farmland trample prevention in claimed chunks, Config option for farmland protection
- Closes #102
- #282 Applied
@Config.LangKeyPatternannotations to ServerUtilitiesConfig and AuroraConfig classes, and expanded language files with config key translations. - @Lyfts- Added: Config localization for ServerUtilities and Aurora settings
- #279 Updated CmdTplast to support cross-dimension teleportation. - @Lyfts
- #278 Added MOTD reload handler in ServerUtilitiesCommon with config reload subscription. - @Lyfts
- Added: MOTD reload support
- Closes #244
- #277 Added mob spawn blocking with three config modes (DEFAULT for team choice, TRUE for admin enforcement, FALSE for disabled); added entity type filtering via EnumCreature and ConfigList. - @Lyfts
- Added: mob spawn blocking in claims feature, EnumCreature entity type enum, team-specific spawn control configuration
- Closes #96
- #273 Added EnumMessageLocation.TITLE with fallback detection via Class.forName for GTNHLib's TitleAPI; updated NotificationHandler and ShutdownTask to use titles for critical messages. - @alppp
- Added: TITLE notification location option, TitleAPI integration
- #268 Added WitcheryCompat class with special handling in MixinWorldServer_SleepPercentage to detect and exclude vampire sleep events from Morpheus sleep percentage logic. - @hinyb
- Added: Witchery vampire sleep compatibility, WitcheryCompat module
- Fixed: Morpheus vampire sleep conflict
- Closes GTNH#22953
- #257 Extended CmdDumpChunkloaders with region listing functionality, added dimension-specific region analysis output. - @LeonidMem
- Added: region listing feature for /dump_chunkloaders, dimension argument support, Russian translation for regions output
- #253 Added GuiToggleCheatsButton GUI component with mixin accessor for SaveFormatComparator to modify world NBT data directly. - @SuperSoupr
- Added: in-game cheats toggle button in world selection, CheatsSetter interface for NBT manipulation
- #242 Added MOTDFormatter utility class, ServerUtilitiesConfig settings, and MixinMinecraftServer_CustomMotd mixin to intercept and format server MOTD. - @alppp
- Added: MOTD configuration options, MOTDFormatter utility, custom MOTD mixin
- #234 Added configuration option to ThreadBackup and ServerUtilitiesConfig to enable region-file-based backup for claimed chunks, preventing structure/loot re-generation at cost of larger backup size. - @jordanamr
- Added: claimed chunks region backup mode
New Content
- #266 Replaced GUI widget texture atlas and updated Theme.java color/appearance definitions. - @Ranzuu
- Added: improved GUI textures
- Fixed: GUI visual appearance and consistency
Changes
- #315 Updated
GuiInvseeContainerand related inventory classes to use proper button textures, separated inventory/container slot textures inTheme, fixed background rendering, adjusted Galacticraft slot positioning by 1px, and added localization keys for inventory titles. - @Ranzuu- Added: localization keys for inventory titles, container-specific slot texture support
- Removed: hardcoded button texture rendering
- Fixed: dark background in Inventory View GUI, Galacticraft slot misalignment
Bug Fixes
- #339 Updated
ModernTabRendererto sample the bound texture size dynamically instead of hardcoding 64×32, and modifiedTabSkinCacheto use the player's in-world skin when available instead of always downloading. - @alppp- Fixed: modern tab heads displaying as black squares with 64x64 skins
- #338 Updated
BackupTaskandThreadBackupto properly handle long-running sessions, fixed timer scheduling inCmdBackupto prevent task expiration, and added proper exception handling inServerUtilitiesCommon. - @Algent- Fixed: backups silently stopping after extended play sessions
- Closes GTNH#26529
- #337 Updated
Mixins.javato skip the PAUSE_WHEN_EMPTY mixin when Ultramine is detected, as Ultramine's modifications to DedicatedServer break the mixin's@Shadowfield lookups. - @SKProCH- Fixed: crashes when ServerUtilities PAUSE_WHEN_EMPTY mixin conflicts with Ultramine
- #330 Updated login mixin
MixinNetHandlerLoginServerto check the disconnect reason before allowing the bypass, preventing banned and non-whitelisted players from joining. - @Lyfts- Fixed: bypass_player_limit permission allowing banned players to join
- Closes #329
- #327 Re-added ±0.5 offset to x and z coordinates in
CmdBackand lowered y offset from 0.5 to 0.3 to spawn above graves without hitting the block above. - @Lyfts- Fixed: players getting stuck in walls with /back command
- Closes #323
- #325 Changed spawn event handler from
EntityJoinWorldEventtoLivingSpawnEvent.CheckSpawn, which filters out natural spawns and spawner-based mobs but not bred animals. - @Lyfts- Fixed: animal breeding in claims with mob spawning disabled
- Closes GTNH#25765
- #322 Adjusted teleport offset calculation in
CmdBackto avoid collision with blocks, and removed duplicate player event handling logic. - @Lyfts- Removed: duplicate event handler code
- Fixed: players spawning inside graves when using /back
- Closes #320
- #313 Changed
GuiBase.closeScreen()to skip the close call when a previous screen is being opened, avoiding the mouse grab/center that triggered a broken coordinate restoration due to LWJGL2 coordinate system mismatch. - @Eldrinn-Elantey- Fixed: cursor jumping when closing rank editor GUI
- #309 Modified
CmdRTP,TeleporterDimPos, andTeleportTaskto pre-load chunks at the teleport destination to prevent entity void issues with preventEntityChunkLoading enabled. - @Lyfts- Fixed: RTP and teleport commands failing with preventEntityChunkLoading enabled, Players getting stuck in void after teleportation
- Closes GTNH#25025
- #308 Removed
com.mojang.brigadierfrom the transformer exclusion list inServerUtilitiesCoreand updated build configuration to allow Brigadier class transformation. - @Lyfts- Removed: com.mojang.brigadier transformer exception
- Fixed: Brigadier mixins not loading due to transformer exception
- Migration: Brigadier-dependent addons may need their mixins re-enabled if they were previously inactive.
- #305 Modified
BackupTaskto force-save the world and wait for all pending writes to complete before initiating the backup. - @Caedis- Fixed: Backup corruption due to unflushed world writes
- Closes GTNH#25008
- #301 Lowered permission level from 3 to 2 to allow command block execution, and added host:port parsing to the hostname argument parser in
TransferCommand. - @alppp- Fixed: Transfer command permission level blocking command blocks, host:port format not being parsed correctly
- Closes #300
- #292 Updated GuiSidebar rendering and changed ModularUI2 dependency version to fix rendering timing issue. - @Lyfts
- Fixed: Buttons not rendering for 1 tick when changing inventory tabs
- Closes GTNH#24572
- #290 Modified
ClaimsLayerManagerto validate a maximum of 2000 locations per packet and adjustedMessageNavigatorUpdateKnownandMessageNavigatorValidateKnownto respect packet size limits. - @Lyfts- Fixed: IllegalArgumentException and player kick when viewing many claims in JourneyMap
- Closes GTNH#24193
- #289 Corrected logic in
ServerUtilitiesWorldEventHandlerto properly handle the mob spawning blocking behavior. - @Lyfts- Fixed: blockMobSpawningInClaims config not blocking spawning when enabled
- #286 Modified
BackupTaskandThreadBackupto respect thesilent_backupconfig flag when sending notifications. - @Algent- Fixed: silent_backup config not being respected
- Closes #285
- #281 Moved rank permission handler registration from event-based to direct instantiation of
ServerUtilitiesPermissionHandler.INSTANCEas the default handler when ranks are enabled. - @Lyfts- Fixed: Rank configuration handler registration failure
- Closes GTNH#24615
- #274 Updated StringUtils.java regex pattern to strip extended format codes correctly. - @alppp
- Fixed: extended format code handling
- #269 Corrected ServerUtilitiesPlayerEventHandler coordinate tracking logic. - @StoneLegion
- Fixed: air click coordinate logging
- Closes GTNH#23932
- #265 Corrected Universe.java account merging logic for offline mode. - @Caedis
- Fixed: offline account merging with teams
- #263 Moved ServerHangWatchdog initialization to actual server start; refactored MaxTickTime mixins to separate dedicated server and integrated server logic. - @Caedis
- Fixed: watchdog premature server kill during FML remap
- Closes GTNH#22107
- #262 Updated English and Russian language files and corrected MixinWorldServer_SleepPercentage. - @Eldrinn-Elantey
- Fixed: language and localization issues
- #260 Fixed InvseeContainer to handle mutual inventory viewing; also updated dependency and Gradle configurations. - @Lyfts
- Fixed: mutual /invsee crash
- Closes #258
- #259 Added conditional mixin disabling in Mixins.java when TargetedMod.Ultramine is detected. - @SKProCH
- Fixed: startup crash with Ultramine present
- #256 Updated CmdTrashCan to use localized string key instead of hardcoded message. - @Discreater
- Fixed: GUI localization for Trash Can
- #251 Removed or nullified persistent world reference in GuiBase/GuiHelper BLANK_GUI to allow garbage collection. - @Alexdoru
- Fixed: world reference leak
- #240 Modified TeleportTask to safely handle null or offline player references, preventing NullPointerException or InvalidPlayerException crashes. - @Caedis
- Fixed: teleport task player reference crashes
Internal / Refactor
- #288 Removed custom
MessageSyncDataimplementation details and updatedSidedUtilsto use the GTNHLib config sync framework. - @Lyfts- Removed: Custom MessageSyncData sync implementation
- #280 Removed unused legacy classes, deprecated ServerUtilitiesPreInitRegistryEvent, created new ServerUtilitiesRegistry class, migrated to @EventBusSubscriber and @Config.LangKeyPattern from GTNHLib, removed GuiFactory. - @Lyfts
- Added: ServerUtilitiesRegistry class, @EventBusSubscriber and @Config.LangKeyPattern usage
- Removed: ~100+ unused classes from FTB Lib backport, unimplemented 1.12.2 features, GuiFactory, IResourceType and related classes
Documentation
- #272 Updated language files to reflect correct
/pregensyntax: changed<x> <y>to<x> <z>for chunk coordinates and clarified command usage. - @aidenfarley- Fixed: pregen command documentation accuracy
- #261 Fixed path typos in wiki/Quick-Install.md. - @echeese
- Fixed: configuration path documentation
- #252 Corrected path typos in README.md. - @oddstr13
- Fixed: configuration path documentation
Chores
- #303 Updated
MessageViewCrashcrash report path validation and bumped log4j dependency version. - @Caedis
Contributors
Everyone who authored, reviewed or co-authored a change on this page, with how many of them:
@Lyfts (38), @Dream-Master (11), @Caedis (9), @alppp (8), @Algent (7), @boubou19 (3), @glektarssza (3), @Ranzuu (3), @Eldrinn-Elantey (2), @Ethryan (2), @Nikolay-Sitnikov (2), @PLASMAchicken (2), @SKProCH (2), @SuperSoupr (2), @UltraProdigy (2), @wlhlm (2), @aidenfarley (1), @Alexdoru (1), @DeathFuel (1), @Discreater (1), @echeese (1), @hinyb (1), @jordanamr (1), @koolkrafter5 (1), @lc-1337 (1), @LeonidMem (1), @MalTeeez (1), @MassAnarchyy (1), @oddstr13 (1), @sawyergt (1), @StoneLegion (1), @tiffit (1), @Worive (1)