Skip to content

Commit 9779ffc

Browse files
committed
[biomes] fix bootstrapping issue in 1.9-1.13
1 parent f8d1cb9 commit 9779ffc

6 files changed

Lines changed: 36 additions & 4 deletions

File tree

‎libraries/biomes/biomes-mc16w02a-mc18w05a/src/main/java/net/ornithemc/osl/biomes/impl/BiomeIdRegistry.java‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package net.ornithemc.osl.biomes.impl;
22

33
import net.minecraft.resource.Identifier;
4+
import net.minecraft.util.Id2ObjectBiMap;
45
import net.minecraft.util.registry.IdRegistry;
56
import net.minecraft.world.biome.Biome;
67

@@ -16,5 +17,6 @@
1617
public final class BiomeIdRegistry {
1718

1819
public static final IdRegistry<Identifier, Biome> REGISTRY = new IdRegistry<>();
20+
public static final Id2ObjectBiMap<Biome> MUTATED_BIOMES = new Id2ObjectBiMap<>();
1921

2022
}

‎libraries/biomes/biomes-mc16w02a-mc18w05a/src/main/java/net/ornithemc/osl/biomes/impl/BiomeRegistryImpl.java‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
public final class BiomeRegistryImpl {
1818

19-
public static final Registry<Biome> REGISTRY = VanillaRegistries.registerSimple(RegistryKeys.BIOME, BiomeIdRegistry.REGISTRY, () -> Biome.REGISTRY);
19+
public static final Registry<Biome> REGISTRY = VanillaRegistries.registerSimple(RegistryKeys.BIOME, BiomeIdRegistry.REGISTRY);
2020

2121
private static boolean locked = true;
2222

@@ -89,7 +89,7 @@ private static void registerBiomeMutation(NamespacedIdentifier identifier, Biome
8989

9090
public static void init() {
9191
SyncedRegistries.register(RegistryKeys.BIOME);
92-
SyncedRegistries.registerMapper(RegistryKeys.BIOME, NamespacedIdentifiers.from("mutated_biome"), Id2ObjectBiMapMapper.of(Biome.MUTATED_BIOMES));
92+
SyncedRegistries.registerMapper(RegistryKeys.BIOME, NamespacedIdentifiers.from("mutated_biome"), Id2ObjectBiMapMapper.of(BiomeIdRegistry.MUTATED_BIOMES));
9393
}
9494

9595
public static void unlock() {

‎libraries/biomes/biomes-mc16w02a-mc18w05a/src/main/java/net/ornithemc/osl/biomes/impl/mixin/common/BiomeMixin.java‎

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import net.fabricmc.api.Environment;
1616

1717
import net.minecraft.resource.Identifier;
18+
import net.minecraft.util.Id2ObjectBiMap;
1819
import net.minecraft.util.registry.IdRegistry;
1920
import net.minecraft.world.biome.Biome;
2021

@@ -53,6 +54,19 @@ public class BiomeMixin implements BiomeExtension, BiomeAccess {
5354
return BiomeIdRegistry.REGISTRY;
5455
}
5556

57+
@Redirect(
58+
method = "<clinit>",
59+
at = @At(
60+
value = "NEW",
61+
target = "net/minecraft/util/Id2ObjectBiMap"
62+
)
63+
)
64+
private static Id2ObjectBiMap<Biome> osl$biomes$replaceIdMap() {
65+
// this allows us to register the muated biomes mapper in
66+
// the API entrypoint without triggering a Biome class load
67+
return BiomeIdRegistry.MUTATED_BIOMES;
68+
}
69+
5670
@Inject(
5771
method = "<clinit>",
5872
at = @At(

‎libraries/biomes/biomes-mc18w06a-mc18w31a/src/main/java/net/ornithemc/osl/biomes/impl/BiomeIdRegistry.java‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package net.ornithemc.osl.biomes.impl;
22

33
import net.minecraft.resource.Identifier;
4+
import net.minecraft.util.Id2ObjectBiMap;
45
import net.minecraft.util.registry.IdRegistry;
56
import net.minecraft.world.biome.Biome;
67

@@ -16,5 +17,6 @@
1617
public final class BiomeIdRegistry {
1718

1819
public static final IdRegistry<Identifier, Biome> REGISTRY = new IdRegistry<>();
20+
public static final Id2ObjectBiMap<Biome> MUTATED_BIOMES = new Id2ObjectBiMap<>();
1921

2022
}

‎libraries/biomes/biomes-mc18w06a-mc18w31a/src/main/java/net/ornithemc/osl/biomes/impl/BiomeRegistryImpl.java‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
public final class BiomeRegistryImpl {
1818

19-
public static final Registry<Biome> REGISTRY = VanillaRegistries.registerSimple(RegistryKeys.BIOME, BiomeIdRegistry.REGISTRY, () -> Biome.REGISTRY);
19+
public static final Registry<Biome> REGISTRY = VanillaRegistries.registerSimple(RegistryKeys.BIOME, BiomeIdRegistry.REGISTRY);
2020

2121
private static boolean locked = true;
2222

@@ -89,7 +89,7 @@ private static void registerBiomeMutation(NamespacedIdentifier identifier, Biome
8989

9090
public static void init() {
9191
SyncedRegistries.register(RegistryKeys.BIOME);
92-
SyncedRegistries.registerMapper(RegistryKeys.BIOME, NamespacedIdentifiers.from("mutated_biome"), Id2ObjectBiMapMapper.of(Biome.MUTATED_BIOMES));
92+
SyncedRegistries.registerMapper(RegistryKeys.BIOME, NamespacedIdentifiers.from("mutated_biome"), Id2ObjectBiMapMapper.of(BiomeIdRegistry.MUTATED_BIOMES));
9393
}
9494

9595
public static void unlock() {

‎libraries/biomes/biomes-mc18w06a-mc18w31a/src/main/java/net/ornithemc/osl/biomes/impl/mixin/common/BiomeMixin.java‎

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
1010

1111
import net.minecraft.resource.Identifier;
12+
import net.minecraft.util.Id2ObjectBiMap;
1213
import net.minecraft.util.registry.IdRegistry;
1314
import net.minecraft.world.biome.Biome;
1415

@@ -38,6 +39,19 @@ public class BiomeMixin implements BiomeExtension, BiomeAccess {
3839
return BiomeIdRegistry.REGISTRY;
3940
}
4041

42+
@Redirect(
43+
method = "<clinit>",
44+
at = @At(
45+
value = "NEW",
46+
target = "net/minecraft/util/Id2ObjectBiMap"
47+
)
48+
)
49+
private static Id2ObjectBiMap<Biome> osl$biomes$replaceIdMap() {
50+
// this allows us to register the muated biomes mapper in
51+
// the API entrypoint without triggering a Biome class load
52+
return BiomeIdRegistry.MUTATED_BIOMES;
53+
}
54+
4155
@Inject(
4256
method = "init",
4357
at = @At(

0 commit comments

Comments
 (0)