Skip to content

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 in ServerUtilitiesRegistry. - @Lyfts
    • Added: admin team management UI, admin team-related permissions, GuiAdminEditTeam and related GUI classes
    • Closes #224
  • #334 Added serverutilities.bypass_whitelist permission to ServerUtilitiesPermissions and updated the login mixin to check this permission before enforcing whitelist restrictions. - @Lyfts
  • #333 Updated Navigator integration to use new API changes, added ClaimsPolygonOverlay for 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 InvSeeRegistry class for registration and exposed it via ServerUtilitiesRegistry. Refactored inventory initialization from static InvSeeInventories class 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 CmdMotd command handler and registered it in ServerUtilitiesCommands. - @sawyergt
    • Added: /motd command for displaying server message of the day
    • Closes #295
  • #299 Implemented MessageTransfer for the ServerUtilities network channel, TransferClientHandler to handle client-side disconnect and reconnection, and TransferCommand for the /transfer command 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 ModernTabRenderer with async skin loading, TabDisplayHandler for overlay rendering, TabChannelHandler for plugin channel protocol, and TabSkinCache for persistent head texture storage. Integrated via GuiIngameForge mixin. - @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 StringUtils formatting code regex pattern to include drop shadow code. - @alppp
  • #291 Extended CmdBackup and BackupTask to recognize the =oc flag 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 MixinCommandNode and MixinLiteralCommandNode to integrate with the permission system, and created ICommandWithPermission interface 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.dat via 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 MixinBlockFarmland to 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.LangKeyPattern annotations 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 GuiInvseeContainer and related inventory classes to use proper button textures, separated inventory/container slot textures in Theme, 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 ModernTabRenderer to sample the bound texture size dynamically instead of hardcoding 64×32, and modified TabSkinCache to 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 BackupTask and ThreadBackup to properly handle long-running sessions, fixed timer scheduling in CmdBackup to prevent task expiration, and added proper exception handling in ServerUtilitiesCommon. - @Algent
    • Fixed: backups silently stopping after extended play sessions
    • Closes GTNH#26529
  • #337 Updated Mixins.java to skip the PAUSE_WHEN_EMPTY mixin when Ultramine is detected, as Ultramine's modifications to DedicatedServer break the mixin's @Shadow field lookups. - @SKProCH
    • Fixed: crashes when ServerUtilities PAUSE_WHEN_EMPTY mixin conflicts with Ultramine
  • #330 Updated login mixin MixinNetHandlerLoginServer to 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 CmdBack and 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 EntityJoinWorldEvent to LivingSpawnEvent.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 CmdBack to 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, and TeleportTask to 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.brigadier from the transformer exclusion list in ServerUtilitiesCore and 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 BackupTask to 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 ClaimsLayerManager to validate a maximum of 2000 locations per packet and adjusted MessageNavigatorUpdateKnown and MessageNavigatorValidateKnown to respect packet size limits. - @Lyfts
    • Fixed: IllegalArgumentException and player kick when viewing many claims in JourneyMap
    • Closes GTNH#24193
  • #289 Corrected logic in ServerUtilitiesWorldEventHandler to properly handle the mob spawning blocking behavior. - @Lyfts
    • Fixed: blockMobSpawningInClaims config not blocking spawning when enabled
  • #286 Modified BackupTask and ThreadBackup to respect the silent_backup config 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.INSTANCE as 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 MessageSyncData implementation details and updated SidedUtils to 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 /pregen syntax: 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 MessageViewCrash crash 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)