Fix weather in dimensions + portal remove/desync handling#178
Conversation
Weather: - FabricWorldCreator: set RuntimeWorldConfig.setSunny(0) so clearWeatherTime starts at 0 and the vanilla weather cycle (rain/thunder) works in Multiworld dimensions. Retroactive on next server restart (issue IsaiahMC#168). Portals: - Add /mw portal remove <name> (perm multiworld.portal.remove): clears portal blocks, in-memory entry, and the portals.yml section. - Handle desynced portals: when the destination world is not loaded, skip the teleport (no more NPE), warn the player via action bar, and log an ERROR per broken portal on server start. list/info now show sync status. - createPortalArea: no longer builds an obsidian frame; only fills air in the selection with portal blocks, leaving the player-built frame untouched.
|
"createPortalArea: no longer builds an obsidian frame; only fills air in the selection with portal blocks, leaving the player-built frame untouched." "Handle desynced portals: when the destination world is not loaded, skip the teleport (no more NPE), warn the player via action bar, and log an ERROR per broken portal on server start. list/info now show sync status." |
Retroactive on next server restart. |
- Add /mw time <set|add|query> <time> [world id]: per-dimension time of day control, unlike vanilla /time which sets every world at once. Accepts tick values and named times (day/noon/night/midnight/...). - Fix gamerules & difficulty leaking across dimensions: upstream Fantasy mirrors the overworld's GameRules/difficulty by default, so /mw gamerule and /mw difficulty affected every world. Disable mirroring in FabricWorldCreator (setMirrorOverworldGameRules/Difficulty(false)) so each runtime world keeps its own. Retroactive on next server restart.
…1.1) - /mw info [world id]: read-only diagnostics for a dimension (present players, time of day, weather + clear/rain/thunder timers, gamerules differing from the overworld, and spawn position from /mw spawn's source). Targets the current dimension by default, or a named world. - Fix StringIndexOutOfBoundsException in FileConfiguration.loadFile when a world config has nested/colon keys (e.g. a modded gamerule like accessories:keepAccessoryInventory): guard the de-indentation substring calls so the saved world loads instead of being skipped.
|
Add /mw info command + fix world-load config parse crash (Fabric 1.21.1)
|
…21.1)
reinit_world_from_config threw a NullPointerException when a legacy
config/multiworld/worlds/*.yml had no "seed": getLong("seed") NPEs on the
missing key, and the getInt("seed") fallback in the catch NPEs again and
escapes. It was only logged but spammed STDERR on every startup.
Now skip legacy configs missing "environment" (stale/blank files) and
read "seed" defensively (is_set guard with a 0 fallback).
|
Big thanks! |
Weather:
Portals: