From 8ca60d61d82549f055cf02e53b4489ceac7052db Mon Sep 17 00:00:00 2001 From: Yeregorix Date: Fri, 14 Feb 2025 12:42:59 +0100 Subject: [PATCH] Use LevelData as WorldData only when possible --- .../common/mixin/core/server/level/ServerLevelMixin.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/mixins/java/org/spongepowered/common/mixin/core/server/level/ServerLevelMixin.java b/src/mixins/java/org/spongepowered/common/mixin/core/server/level/ServerLevelMixin.java index d8477d698c2..8ec327fbfa4 100644 --- a/src/mixins/java/org/spongepowered/common/mixin/core/server/level/ServerLevelMixin.java +++ b/src/mixins/java/org/spongepowered/common/mixin/core/server/level/ServerLevelMixin.java @@ -56,6 +56,7 @@ import net.minecraft.world.level.entity.PersistentEntitySectionManager; import net.minecraft.world.level.gameevent.GameEvent; import net.minecraft.world.level.material.Fluid; +import net.minecraft.world.level.storage.LevelData; import net.minecraft.world.level.storage.LevelStorageSource; import net.minecraft.world.level.storage.PrimaryLevelData; import net.minecraft.world.level.storage.ServerLevelData; @@ -312,7 +313,11 @@ public abstract class ServerLevelMixin extends LevelMixin implements ServerLevel "enabledFeatures" }, at = @At(value = "INVOKE", target = "Lnet/minecraft/server/MinecraftServer;getWorldData()Lnet/minecraft/world/level/storage/WorldData;")) private WorldData impl$usePerWorldLevelData(final MinecraftServer server) { - return (WorldData) this.shadow$getLevelData(); + final LevelData levelData = this.shadow$getLevelData(); + if (levelData instanceof final WorldData worldData) { + return worldData; + } + return server.getWorldData(); } @Redirect(method = "setDefaultSpawnPos", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/level/ServerChunkCache;addRegionTicket(Lnet/minecraft/server/level/TicketType;Lnet/minecraft/world/level/ChunkPos;ILjava/lang/Object;)V"))