diff --git a/dependencies.gradle b/dependencies.gradle index 910ba06..5bd5dc0 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -18,5 +18,6 @@ dependencies { compile(deobfMaven(curseMaven, "curse.maven:biomesoplenty-220318:2499612")) // 2.1.0.2308 compile(deobfMaven(curseMaven, "curse.maven:rtg-237989:2521557")) // 1.1.1.7 compile(deobfMaven(curseMaven, "curse.maven:naturescompass-252848:2451823")) // 1.3.1 + compile(deobfMaven(curseMaven, "curse.maven:dynamicsurrounding-238891:2642381")) // 1.0.6.4 compileOnly(files("lib/GalacticraftCore-1.7-3.0.12.504-deobf.jar")) } diff --git a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/antiidconflict/BiomeGenBasePlaceholderMixin.java b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/antiidconflict/BiomeGenBasePlaceholderMixin.java index e414860..2ab4e19 100644 --- a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/antiidconflict/BiomeGenBasePlaceholderMixin.java +++ b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/antiidconflict/BiomeGenBasePlaceholderMixin.java @@ -23,8 +23,10 @@ public abstract class BiomeGenBasePlaceholderMixin { remap = false), require = 1) private int removePlaceholders(int id, boolean register) { - if (biomeList[id] instanceof PlaceholderBiome) { - biomeList[id] = null; + if (register) { + if (biomeList[id] instanceof PlaceholderBiome) { + biomeList[id] = null; + } } return AsmHooks.getBiomeID(id, register); } diff --git a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/vanilla/biome/BiomeGenBaseMixin.java b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/vanilla/biome/BiomeGenBaseMixin.java index c4b8dc5..484c22a 100644 --- a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/vanilla/biome/BiomeGenBaseMixin.java +++ b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/vanilla/biome/BiomeGenBaseMixin.java @@ -34,8 +34,8 @@ public abstract class BiomeGenBaseMixin { @Inject(method = "(IZ)V", at = @At(value = "RETURN"), require = 1) - private void generatePlaceholders(int p_i1971_1_, boolean register, CallbackInfo ci) { - if (((Object) this) instanceof PlaceholderBiome) { + private void generatePlaceholders(int id, boolean register, CallbackInfo ci) { + if (((Object) this) instanceof PlaceholderBiome || !register) { return; } if (biomeID >= 128 && biomeList[biomeID - 128] == null) { diff --git a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/vanilla/biome/BiomeGenBasePlaceholderMixin.java b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/vanilla/biome/BiomeGenBasePlaceholderMixin.java index fd48b00..592593a 100644 --- a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/vanilla/biome/BiomeGenBasePlaceholderMixin.java +++ b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/vanilla/biome/BiomeGenBasePlaceholderMixin.java @@ -7,6 +7,7 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mutable; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.ModifyVariable; import org.spongepowered.asm.mixin.injection.Redirect; import net.minecraft.world.biome.BiomeGenBase; @@ -22,15 +23,30 @@ public abstract class BiomeGenBasePlaceholderMixin { @Final public int biomeID; + private static ThreadLocal wantsRegister; + @Redirect(method = "(IZ)V", at = @At(value = "FIELD", opcode = Opcodes.PUTFIELD, target = "Lnet/minecraft/world/biome/BiomeGenBase;biomeID:I"), require = 1) private void removePlaceholders(BiomeGenBase instance, int id) { - if (biomeList[id] instanceof PlaceholderBiome) { - biomeList[id] = null; + if (wantsRegister.get()) { + if (biomeList[id] instanceof PlaceholderBiome) { + biomeList[id] = null; + } } biomeID = id; } + + @ModifyVariable(method = "(IZ)V", + at = @At(value = "HEAD"), + index = 2, + require = 1, + argsOnly = true) + private static boolean modifyArg(boolean register) { + if (wantsRegister == null) wantsRegister = new ThreadLocal<>(); + wantsRegister.set(register); + return register; + } }