From 6882df7de75b4b5729a82aa3577506fba1d89e77 Mon Sep 17 00:00:00 2001 From: IzzelAliz Date: Wed, 13 Jan 2021 17:38:55 +0800 Subject: [PATCH] Register unknown dimType to world type --- .../arclight/common/mixin/core/world/WorldMixin.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/WorldMixin.java b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/WorldMixin.java index 437a09bd..1819381f 100644 --- a/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/WorldMixin.java +++ b/arclight-common/src/main/java/io/izzel/arclight/common/mixin/core/world/WorldMixin.java @@ -2,6 +2,7 @@ package io.izzel.arclight.common.mixin.core.world; import io.izzel.arclight.common.bridge.world.WorldBridge; import io.izzel.arclight.common.bridge.world.border.WorldBorderBridge; +import io.izzel.arclight.common.mod.ArclightMod; import io.izzel.arclight.common.mod.server.ArclightServer; import io.izzel.arclight.common.mod.util.ArclightCaptures; import net.minecraft.block.Block; @@ -12,6 +13,7 @@ import net.minecraft.server.MinecraftServer; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.RegistryKey; import net.minecraft.util.math.BlockPos; +import net.minecraft.util.registry.Registry; import net.minecraft.world.DimensionType; import net.minecraft.world.IWorld; import net.minecraft.world.World; @@ -95,7 +97,13 @@ public abstract class WorldMixin implements WorldBridge { this.ticksPerWaterAmbientSpawns = this.getServer().getTicksPerWaterAmbientSpawns(); this.ticksPerAmbientSpawns = this.getServer().getTicksPerAmbientSpawns(); this.typeKey = this.getServer().getHandle().getServer().func_244267_aX().func_230520_a_().getOptionalKey(dimensionType) - .orElseThrow(() -> new IllegalStateException("Unregistered dimension type: " + dimType)); + .orElseGet(() -> { + Registry registry = this.getServer().getHandle().getServer().func_244267_aX().func_230520_a_(); + Registry.register(registry, dimension.getLocation(), dimType); + RegistryKey typeRegistryKey = registry.getOptionalKey(dimType).orElseThrow(() -> new IllegalStateException("Cannot register dimension type: " + dimType)); + ArclightMod.LOGGER.warn("Registered unknown dimension type {} as {}", dimType, typeRegistryKey); + return typeRegistryKey; + }); } @Override