From 333260d50d5a70d8f15d8a8e0256945ead6ad0e2 Mon Sep 17 00:00:00 2001 From: IzzelAliz Date: Sat, 28 Jan 2023 19:02:03 +0800 Subject: [PATCH] Fix missing customDimensions field (#896) --- .../world/storage/PrimaryLevelDataMixin.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/storage/PrimaryLevelDataMixin.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/storage/PrimaryLevelDataMixin.java index 32972601..9ca9b795 100644 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/storage/PrimaryLevelDataMixin.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/storage/PrimaryLevelDataMixin.java @@ -1,13 +1,23 @@ package io.izzel.arclight.common.mixin.core.world.storage; +import com.mojang.serialization.DataResult; +import com.mojang.serialization.DynamicOps; import com.mojang.serialization.Lifecycle; import io.izzel.arclight.common.bridge.core.world.storage.WorldInfoBridge; +import net.minecraft.core.Registry; +import net.minecraft.core.RegistryAccess; +import net.minecraft.core.registries.Registries; +import net.minecraft.nbt.Tag; import net.minecraft.network.protocol.game.ClientboundChangeDifficultyPacket; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.Difficulty; import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.LevelSettings; +import net.minecraft.world.level.dimension.LevelStem; +import net.minecraft.world.level.levelgen.WorldDimensions; +import net.minecraft.world.level.levelgen.WorldGenSettings; +import net.minecraft.world.level.levelgen.WorldOptions; import net.minecraft.world.level.storage.PrimaryLevelData; import org.bukkit.Bukkit; import org.bukkit.World; @@ -18,6 +28,7 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.Redirect; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(PrimaryLevelData.class) @@ -33,6 +44,12 @@ public abstract class PrimaryLevelDataMixin implements WorldInfoBridge { // @formatter:on public ServerLevel world; + public Registry customDimensions; + + @Redirect(method = "setTagData", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/level/levelgen/WorldGenSettings;encode(Lcom/mojang/serialization/DynamicOps;Lnet/minecraft/world/level/levelgen/WorldOptions;Lnet/minecraft/core/RegistryAccess;)Lcom/mojang/serialization/DataResult;")) + private DataResult arclight$customDim(DynamicOps ops, WorldOptions options, RegistryAccess registry) { + return WorldGenSettings.encode(ops, options, new WorldDimensions(this.customDimensions != null ? this.customDimensions : registry.registryOrThrow(Registries.LEVEL_STEM))); + } @Inject(method = "setThundering", cancellable = true, at = @At("HEAD")) private void arclight$thunder(boolean thunderingIn, CallbackInfo ci) {