]> git.lizzy.rs Git - BoundingBoxOutlineReloaded.git/blobdiff - src/main/java/com/irtimaled/bbor/common/models/DimensionId.java
Setup for 1.16.3 Fabric
[BoundingBoxOutlineReloaded.git] / src / main / java / com / irtimaled / bbor / common / models / DimensionId.java
index fb76702f920c976f6e1f93859af0699761a43577..01f89b29ceaf8dbe3e002eb8b6911c79ee8abb87 100644 (file)
@@ -1,24 +1,34 @@
 package com.irtimaled.bbor.common.models;
 
+import com.irtimaled.bbor.common.ReflectionHelper;
 import net.minecraft.util.Identifier;
+import net.minecraft.util.registry.RegistryKey;
+import net.minecraft.world.World;
 import net.minecraft.world.dimension.DimensionType;
 
 import java.util.HashMap;
 import java.util.Map;
+import java.util.Optional;
+import java.util.function.Function;
 
 public class DimensionId {
+    private static final Function<DimensionType, Optional<RegistryKey<DimensionType>>> getRegistryKey =
+            ReflectionHelper.getPrivateFieldGetter(DimensionType.class, Optional.class);
+    private static final Map<Identifier, RegistryKey<World>> typeMap = new HashMap<>();
     private static final Map<Identifier, DimensionId> dimensionIdMap = new HashMap<>();
 
-    public static DimensionId from(DimensionType dimensionType) {
-        return from(DimensionType.getId(dimensionType));
+    public static DimensionId from(RegistryKey<World> registryKey) {
+        Identifier value = registryKey.getValue();
+        typeMap.put(value, registryKey);
+        return from(value);
     }
 
     public static DimensionId from(Identifier value) {
         return dimensionIdMap.computeIfAbsent(value, DimensionId::new);
     }
 
-    public static DimensionId OVERWORLD = DimensionId.from(DimensionType.OVERWORLD);
-    public static DimensionId NETHER = DimensionId.from(DimensionType.THE_NETHER);
+    public static DimensionId OVERWORLD = DimensionId.from(World.OVERWORLD);
+    public static DimensionId NETHER = DimensionId.from(World.NETHER);
 
     private final Identifier value;
 
@@ -30,8 +40,8 @@ public class DimensionId {
         return value;
     }
 
-    public DimensionType getDimensionType() {
-        return DimensionType.byId(value);
+    public RegistryKey<World> getDimensionType() {
+        return typeMap.get(value);
     }
 
     @Override