diff --git a/README.MD b/README.MD index 610c1ac..5df8fad 100644 --- a/README.MD +++ b/README.MD @@ -15,6 +15,7 @@ Comparison of the known limits: This mod also contains patches for the following mods: +- AbyssalCraft - Alternate Terrain Generation - Antique Atlas - Anti ID Conflict diff --git a/dependencies.gradle b/dependencies.gradle index d37eb88..bacda8e 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -19,6 +19,9 @@ dependencies { ////////////////Patched mods//////////////// + //AbyssalCraft 1.9.1.3-FINAL + compile(deobfCurse("abyssalcraft-53686:2311135")) + //Alternate Terrain Generation 0.12.0 compile(curse("atg-228356:2231155")) diff --git a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/abyssalcraft/AbyssalCraftMixin.java b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/abyssalcraft/AbyssalCraftMixin.java new file mode 100644 index 0000000..002b706 --- /dev/null +++ b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/abyssalcraft/AbyssalCraftMixin.java @@ -0,0 +1,63 @@ +package com.falsepattern.endlessids.mixin.mixins.common.abyssalcraft; + +import com.falsepattern.endlessids.PlaceholderBiome; +import com.falsepattern.endlessids.constants.ExtendedConstants; +import com.shinoow.abyssalcraft.AbyssalCraft; +import lombok.val; +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.callback.CallbackInfo; + +import net.minecraft.world.biome.BiomeGenBase; + +@Mixin(value = AbyssalCraft.class, + remap = false) +public abstract class AbyssalCraftMixin { + @Shadow + public static int configBiomeId1; + @Shadow + public static int configBiomeId2; + @Shadow + public static int configBiomeId3; + @Shadow + public static int configBiomeId4; + @Shadow + public static int configBiomeId5; + @Shadow + public static int configBiomeId6; + @Shadow + public static int configBiomeId7; + @Shadow + public static int configBiomeId8; + @Shadow + public static int configBiomeId9; + @Shadow + public static int configBiomeId10; + @Shadow + public static int configBiomeId11; + @Shadow + public static int configBiomeId12; + @Shadow + public static int configBiomeId13; + + @Inject(method = "checkBiomeIds", + at = @At("HEAD"), + require = 1) + private void cleanupBiomeArrayForAssignment(CallbackInfo ci) { + val bga = BiomeGenBase.getBiomeGenArray(); + + int[] biomes = new int[]{configBiomeId1, configBiomeId2, configBiomeId3, configBiomeId4, configBiomeId5, + configBiomeId6, configBiomeId7, configBiomeId8, configBiomeId9, configBiomeId10, + configBiomeId11, configBiomeId12, configBiomeId13}; + for (val biome : biomes) { + if (biome < 0 || biome >= ExtendedConstants.biomeIDCount) { + continue; + } + if (bga[biome] instanceof PlaceholderBiome) { + bga[biome] = null; + } + } + } +} diff --git a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/abyssalcraft/ChunkProviderAbyssMixin.java b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/abyssalcraft/ChunkProviderAbyssMixin.java new file mode 100644 index 0000000..8d24d75 --- /dev/null +++ b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/abyssalcraft/ChunkProviderAbyssMixin.java @@ -0,0 +1,28 @@ +package com.falsepattern.endlessids.mixin.mixins.common.abyssalcraft; + +import com.falsepattern.endlessids.mixin.helpers.BiomePatchHelper; +import com.shinoow.abyssalcraft.common.world.ChunkProviderAbyss; +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.Redirect; + +import net.minecraft.world.biome.BiomeGenBase; +import net.minecraft.world.chunk.Chunk; + +@Mixin(value = ChunkProviderAbyss.class, + remap = false) +public abstract class ChunkProviderAbyssMixin { + @Shadow + private BiomeGenBase[] biomesForGeneration; + + @Redirect(method = "provideChunk", + at = @At(value = "INVOKE", + target = "Lnet/minecraft/world/chunk/Chunk;getBiomeArray()[B", + remap = true), + remap = true, + require = 1) + private byte[] setBiomesTweaked(Chunk chunk) { + return BiomePatchHelper.getBiomeArrayTweaked(chunk, biomesForGeneration); + } +} diff --git a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/abyssalcraft/ChunkProviderDarkRealmMixin.java b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/abyssalcraft/ChunkProviderDarkRealmMixin.java new file mode 100644 index 0000000..2c9a467 --- /dev/null +++ b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/abyssalcraft/ChunkProviderDarkRealmMixin.java @@ -0,0 +1,28 @@ +package com.falsepattern.endlessids.mixin.mixins.common.abyssalcraft; + +import com.falsepattern.endlessids.mixin.helpers.BiomePatchHelper; +import com.shinoow.abyssalcraft.common.world.ChunkProviderDarkRealm; +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.Redirect; + +import net.minecraft.world.biome.BiomeGenBase; +import net.minecraft.world.chunk.Chunk; + +@Mixin(value = ChunkProviderDarkRealm.class, + remap = false) +public abstract class ChunkProviderDarkRealmMixin { + @Shadow + private BiomeGenBase[] biomesForGeneration; + + @Redirect(method = "provideChunk", + at = @At(value = "INVOKE", + target = "Lnet/minecraft/world/chunk/Chunk;getBiomeArray()[B", + remap = true), + remap = true, + require = 1) + private byte[] setBiomesTweaked(Chunk chunk) { + return BiomePatchHelper.getBiomeArrayTweaked(chunk, biomesForGeneration); + } +} diff --git a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/abyssalcraft/ChunkProviderDreadlandsMixin.java b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/abyssalcraft/ChunkProviderDreadlandsMixin.java new file mode 100644 index 0000000..9b50c47 --- /dev/null +++ b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/abyssalcraft/ChunkProviderDreadlandsMixin.java @@ -0,0 +1,28 @@ +package com.falsepattern.endlessids.mixin.mixins.common.abyssalcraft; + +import com.falsepattern.endlessids.mixin.helpers.BiomePatchHelper; +import com.shinoow.abyssalcraft.common.world.ChunkProviderDreadlands; +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.Redirect; + +import net.minecraft.world.biome.BiomeGenBase; +import net.minecraft.world.chunk.Chunk; + +@Mixin(value = ChunkProviderDreadlands.class, + remap = false) +public abstract class ChunkProviderDreadlandsMixin { + @Shadow + private BiomeGenBase[] biomesForGeneration; + + @Redirect(method = "provideChunk", + at = @At(value = "INVOKE", + target = "Lnet/minecraft/world/chunk/Chunk;getBiomeArray()[B", + remap = true), + remap = true, + require = 1) + private byte[] setBiomesTweaked(Chunk chunk) { + return BiomePatchHelper.getBiomeArrayTweaked(chunk, biomesForGeneration); + } +} diff --git a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/abyssalcraft/ChunkProviderOmotholMixin.java b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/abyssalcraft/ChunkProviderOmotholMixin.java new file mode 100644 index 0000000..74f90b4 --- /dev/null +++ b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/abyssalcraft/ChunkProviderOmotholMixin.java @@ -0,0 +1,28 @@ +package com.falsepattern.endlessids.mixin.mixins.common.abyssalcraft; + +import com.falsepattern.endlessids.mixin.helpers.BiomePatchHelper; +import com.shinoow.abyssalcraft.common.world.ChunkProviderOmothol; +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.Redirect; + +import net.minecraft.world.biome.BiomeGenBase; +import net.minecraft.world.chunk.Chunk; + +@Mixin(value = ChunkProviderOmothol.class, + remap = false) +public abstract class ChunkProviderOmotholMixin { + @Shadow + private BiomeGenBase[] biomesForGeneration; + + @Redirect(method = "provideChunk", + at = @At(value = "INVOKE", + target = "Lnet/minecraft/world/chunk/Chunk;getBiomeArray()[B", + remap = true), + remap = true, + require = 1) + private byte[] setBiomesTweaked(Chunk chunk) { + return BiomePatchHelper.getBiomeArrayTweaked(chunk, biomesForGeneration); + } +} diff --git a/src/main/java/com/falsepattern/endlessids/mixin/plugin/Mixin.java b/src/main/java/com/falsepattern/endlessids/mixin/plugin/Mixin.java index eebb4bb..abbf95f 100644 --- a/src/main/java/com/falsepattern/endlessids/mixin/plugin/Mixin.java +++ b/src/main/java/com/falsepattern/endlessids/mixin/plugin/Mixin.java @@ -58,6 +58,15 @@ public enum Mixin implements IMixin { RenderGlobalMixin(Side.CLIENT, always(), "vanilla.RenderGlobalMixin"), //endregion Minecraft->client //endregion Minecraft + //region AbyssalCraft->common + AbyssalCraftMixin(Side.COMMON, require(TargetedMod.ABYSSALCRAFT), "abyssalcraft.AbyssalCraftMixin"), + ChunkProviderAbyssMixin(Side.COMMON, require(TargetedMod.ABYSSALCRAFT), "abyssalcraft.ChunkProviderAbyssMixin"), + ChunkProviderDarkRealmMixin(Side.COMMON, require(TargetedMod.ABYSSALCRAFT), + "abyssalcraft.ChunkProviderDarkRealmMixin"), + ChunkProviderDreadlandsMixin(Side.COMMON, require(TargetedMod.ABYSSALCRAFT), + "abyssalcraft.ChunkProviderDreadlandsMixin"), + ChunkProviderOmotholMixin(Side.COMMON, require(TargetedMod.ABYSSALCRAFT), "abyssalcraft.ChunkProviderOmotholMixin"), + //endregion AbyssalCraft->common //region ATG->common ATGBiomeConfigMixin(Side.COMMON, require(TargetedMod.ATG), "atg.ATGBiomeConfigMixin"), ATGBiomeManagerMixin(Side.COMMON, require(TargetedMod.ATG), "atg.ATGBiomeManagerMixin"), diff --git a/src/main/java/com/falsepattern/endlessids/mixin/plugin/TargetedMod.java b/src/main/java/com/falsepattern/endlessids/mixin/plugin/TargetedMod.java index 2896e7c..e948ad7 100644 --- a/src/main/java/com/falsepattern/endlessids/mixin/plugin/TargetedMod.java +++ b/src/main/java/com/falsepattern/endlessids/mixin/plugin/TargetedMod.java @@ -11,6 +11,7 @@ import static com.falsepattern.lib.mixin.ITargetedMod.PredicateHelpers.startsWit @RequiredArgsConstructor public enum TargetedMod implements ITargetedMod { + ABYSSALCRAFT("AbyssalCraft", true, startsWith("abyssalcraft-")), ATG("Alternate Terrain Generation", true, startsWith("atg")), ANTIQUEATLAS("Antique Atlas", true, startsWith("antiqueatlas")), ANTIIDCONFLICT("Anti ID Conflict", true, startsWith("antiidconflict")),