diff --git a/README.MD b/README.MD index 439dda2..9526adf 100644 --- a/README.MD +++ b/README.MD @@ -7,12 +7,13 @@ EndlessIDs is a modern rewrite of NotEnoughIDs which increases the limit even mo This mod also contains patches for the following mods: -- AntiIDConflict +- Anti ID Conflict +- Alternate Terrain Generation - CoFH Lib - DragonAPI - GalactiCraft - More Fun Quicksand Mod -- UndergroundBiomesConstructs +- Underground Biomes Constructs - WorldEdit Mods not listed here may or may not work. A good rule of thumb is that the more invasive a mod is, the higher the chance diff --git a/dependencies.gradle b/dependencies.gradle index 2bc44c6..bac9c74 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -14,5 +14,6 @@ dependencies { compileOnly(deobfMaven(curseMaven, "curse.maven:dragonapi-235591:3574508")) // V31b compileOnly(deobfMaven(curseMaven, "curse.maven:antiidconflict-246288:2308279")) // 1.3.5 + compileOnly("curse.maven:atg-228356:2231155") // 0.12.0 compileOnly(files("lib/GalacticraftCore-1.7-3.0.12.504-deobf.jar")) } diff --git a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/atg/ATGBiomeConfigMixin.java b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/atg/ATGBiomeConfigMixin.java new file mode 100644 index 0000000..f9164b2 --- /dev/null +++ b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/atg/ATGBiomeConfigMixin.java @@ -0,0 +1,19 @@ +package com.falsepattern.endlessids.mixin.mixins.common.atg; + +import com.falsepattern.endlessids.constants.ExtendedConstants; +import com.falsepattern.endlessids.constants.VanillaConstants; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.Constant; +import org.spongepowered.asm.mixin.injection.ModifyConstant; +import ttftcuts.atg.config.configfiles.ATGBiomeConfig; + +@Mixin(value = ATGBiomeConfig.class, + remap = false) +public abstract class ATGBiomeConfigMixin { + @ModifyConstant(method = {"", "postInit"}, + constant = @Constant(intValue = VanillaConstants.biomeIDCount), + require = 4) + private static int extendIDs(int constant) { + return ExtendedConstants.biomeIDCount; + } +} diff --git a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/atg/ATGBiomeManagerMixin.java b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/atg/ATGBiomeManagerMixin.java new file mode 100644 index 0000000..9ab48b0 --- /dev/null +++ b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/atg/ATGBiomeManagerMixin.java @@ -0,0 +1,19 @@ +package com.falsepattern.endlessids.mixin.mixins.common.atg; + +import com.falsepattern.endlessids.constants.ExtendedConstants; +import com.falsepattern.endlessids.constants.VanillaConstants; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.Constant; +import org.spongepowered.asm.mixin.injection.ModifyConstant; +import ttftcuts.atg.gen.ATGBiomeManager; + +@Mixin(value = ATGBiomeManager.class, + remap = false) +public abstract class ATGBiomeManagerMixin { + @ModifyConstant(method = "", + constant = @Constant(intValue = VanillaConstants.biomeIDCount), + require = 1) + private static int extendIDs(int constant) { + return ExtendedConstants.biomeIDCount; + } +} diff --git a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/atg/ATGChunkProviderMixin.java b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/atg/ATGChunkProviderMixin.java new file mode 100644 index 0000000..2f27dad --- /dev/null +++ b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/atg/ATGChunkProviderMixin.java @@ -0,0 +1,37 @@ +package com.falsepattern.endlessids.mixin.mixins.common.atg; + +import com.falsepattern.endlessids.mixin.helpers.IChunkMixin; +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.CallbackInfoReturnable; +import org.spongepowered.asm.mixin.injection.callback.LocalCapture; +import ttftcuts.atg.ATGChunkProvider; + +import net.minecraft.block.Block; +import net.minecraft.world.biome.BiomeGenBase; +import net.minecraft.world.chunk.Chunk; + +@Mixin(value = ATGChunkProvider.class, + remap = false) +public abstract class ATGChunkProviderMixin { + @Shadow private BiomeGenBase[] biomesForGeneration; + + @Inject(method = "provideChunk", + at = @At(value = "INVOKE", + target = "Lnet/minecraft/world/chunk/Chunk;getBiomeArray()[B", + shift = At.Shift.BEFORE), + cancellable = true, + locals = LocalCapture.CAPTURE_FAILHARD, + require = 1) + private void hijackChunkBiomeSetup(int chunkX, int chunkY, CallbackInfoReturnable cir, Block[] data, byte[] abyte, Chunk chunk) { + val chunkBiomes = ((IChunkMixin)chunk).getBiomeShortArray(); + for (int i = 0; i < chunkBiomes.length; i++) { + chunkBiomes[i] = (short) biomesForGeneration[i].biomeID; + } + chunk.generateSkylightMap(); + cir.setReturnValue(chunk); + } +} diff --git a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/atg/ATGWorldGenRocksMixin.java b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/atg/ATGWorldGenRocksMixin.java new file mode 100644 index 0000000..db9e2b0 --- /dev/null +++ b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/atg/ATGWorldGenRocksMixin.java @@ -0,0 +1,19 @@ +package com.falsepattern.endlessids.mixin.mixins.common.atg; + +import com.falsepattern.endlessids.constants.ExtendedConstants; +import com.falsepattern.endlessids.constants.VanillaConstants; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.Constant; +import org.spongepowered.asm.mixin.injection.ModifyConstant; +import ttftcuts.atg.feature.ATGWorldGenRocks; + +@Mixin(value = ATGWorldGenRocks.class, + remap = false) +public abstract class ATGWorldGenRocksMixin { + @ModifyConstant(method = "", + constant = @Constant(intValue = VanillaConstants.biomeIDCount), + require = 3) + private static int extendIDs(int constant) { + return ExtendedConstants.biomeIDCount; + } +} 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 e22f802..639c37d 100644 --- a/src/main/java/com/falsepattern/endlessids/mixin/plugin/Mixin.java +++ b/src/main/java/com/falsepattern/endlessids/mixin/plugin/Mixin.java @@ -60,6 +60,12 @@ public enum Mixin implements IMixin { AIDCBiomesGenBaseMixin(Side.COMMON, require(TargetedMod.ANTIIDCONFLICT), "antiidconflict.BiomeGenBaseMixin"), AIDCBiomesGenBasePlaceholderMixin(Side.COMMON, require(TargetedMod.ANTIIDCONFLICT), "antiidconflict.BiomeGenBasePlaceholderMixin"), //endregion AntiIDConflict->common + //region ATG->common + ATGBiomeConfigMixin(Side.COMMON, require(TargetedMod.ATG), "atg.ATGBiomeConfigMixin"), + ATGBiomeManagerMixin(Side.COMMON, require(TargetedMod.ATG), "atg.ATGBiomeManagerMixin"), + ATGChunkProviderMixin(Side.COMMON, require(TargetedMod.ATG), "atg.ATGChunkProviderMixin"), + ATGWorldGenRocksMixin(Side.COMMON, require(TargetedMod.ATG), "atg.ATGWorldGenRocksMixin"), + //endregion ATG->common //region CoFHLib->common CoFHLibCofhBlockHelperMixin(Side.COMMON, require(TargetedMod.COFHLIB), "cofhlib.BlockHelperMixin"), //endregion CoFHLib->common 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 51d9b93..4f6a395 100644 --- a/src/main/java/com/falsepattern/endlessids/mixin/plugin/TargetedMod.java +++ b/src/main/java/com/falsepattern/endlessids/mixin/plugin/TargetedMod.java @@ -12,6 +12,7 @@ import static com.falsepattern.lib.mixin.ITargetedMod.PredicateHelpers.*; public enum TargetedMod implements ITargetedMod { ANTIIDCONFLICT("Anti ID Conflict", false, startsWith("antiidconflict")), + ATG("Alternate Terrain Generation", false, startsWith("atg")), COFHLIB("CoFH Lib", false, startsWith("cofhlib-")), DRAGONAPI("DragonAPI", false, startsWith("dragonapi")), GALACTICRAFTCORE("GalactiCraftCore", false, startsWith("galacticraftcore")),