From 15803fceff4f896d09bbedb02977d1fdab351292 Mon Sep 17 00:00:00 2001 From: FalsePattern <30945458+FalsePattern@users.noreply.github.com> Date: Sun, 10 Jul 2022 23:07:02 +0200 Subject: [PATCH] Twilight Forest compat --- README.MD | 1 + dependencies.gradle | 1 + .../falsepattern/endlessids/EndlessIDs.java | 1 + .../tf/ChunkProviderTwilightForestMixin.java | 34 +++++++++++++++++++ .../endlessids/mixin/plugin/Mixin.java | 3 ++ .../endlessids/mixin/plugin/TargetedMod.java | 1 + 6 files changed, 41 insertions(+) create mode 100644 src/main/java/com/falsepattern/endlessids/mixin/mixins/common/tf/ChunkProviderTwilightForestMixin.java diff --git a/README.MD b/README.MD index 25df0f3..ee6cd60 100644 --- a/README.MD +++ b/README.MD @@ -26,6 +26,7 @@ This mod also contains patches for the following mods: - More Fun Quicksand Mod - Nature's Compass - Realistic Terrain Generation +- Twilight Forest - Underground Biomes Constructs - WorldEdit diff --git a/dependencies.gradle b/dependencies.gradle index 24d7463..939e1f2 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -20,6 +20,7 @@ dependencies { compile(deobfMaven(curseMaven, "curse.maven:naturescompass-252848:2451823")) // 1.3.1 compile(deobfMaven(curseMaven, "curse.maven:dynamicsurrounding-238891:2642381")) // 1.0.6.4 compile(deobfMaven(curseMaven, "curse.maven:immersivecavegen-521557:3649411")) // 1.2g + compile(deobfMaven(curseMaven, "curse.maven:twilightforest-227639:3039937")) // 2.3.8 compile("com.github.embeddedt:ArchaicFix:be8666cb2dbf2e0a8b799e88cef3c0d12e5d4911:dev") compileOnly(deobf("https://micdoodle8.com/new-builds/GC-1.7/504/GalacticraftCore-1.7-3.0.12.504.jar")) } diff --git a/src/main/java/com/falsepattern/endlessids/EndlessIDs.java b/src/main/java/com/falsepattern/endlessids/EndlessIDs.java index 7722514..77bd389 100644 --- a/src/main/java/com/falsepattern/endlessids/EndlessIDs.java +++ b/src/main/java/com/falsepattern/endlessids/EndlessIDs.java @@ -17,6 +17,7 @@ import cpw.mods.fml.common.event.FMLPreInitializationEvent; acceptedMinecraftVersions = "[1.7.10]", dependencies = "required-after:falsepatternlib@[0.9.1,);after:antiidconflict") public class EndlessIDs { + public static final byte[] BIOME_ARRAY_PLACEHOLDER = new byte[0]; public static final Logger LOG = LogManager.getLogger(Tags.MODNAME); private static void antiIdConflictLatePatch() { diff --git a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/tf/ChunkProviderTwilightForestMixin.java b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/tf/ChunkProviderTwilightForestMixin.java new file mode 100644 index 0000000..7c13d14 --- /dev/null +++ b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/tf/ChunkProviderTwilightForestMixin.java @@ -0,0 +1,34 @@ +package com.falsepattern.endlessids.mixin.mixins.common.tf; + +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.Redirect; +import twilightforest.world.ChunkProviderTwilightForest; + +import net.minecraft.world.biome.BiomeGenBase; +import net.minecraft.world.chunk.Chunk; + +import static com.falsepattern.endlessids.EndlessIDs.BIOME_ARRAY_PLACEHOLDER; + +@Mixin(value = ChunkProviderTwilightForest.class, + remap = false) +public abstract class ChunkProviderTwilightForestMixin { + @Shadow private BiomeGenBase[] biomesForGeneration; + + @Redirect(method = "provideChunk", + at = @At(value = "INVOKE", + target = "Lnet/minecraft/world/chunk/Chunk;getBiomeArray()[B"), + remap = true, + require = 1) + private byte[] bypassBiomeProcessing(Chunk chunk) { + val chunkBiomes = ((IChunkMixin)chunk).getBiomeShortArray(); + + for(int i = 0; i < chunkBiomes.length; ++i) { + chunkBiomes[i] = (short) this.biomesForGeneration[i].biomeID; + } + return BIOME_ARRAY_PLACEHOLDER; + } +} 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 6604e06..8fcc6a6 100644 --- a/src/main/java/com/falsepattern/endlessids/mixin/plugin/Mixin.java +++ b/src/main/java/com/falsepattern/endlessids/mixin/plugin/Mixin.java @@ -116,6 +116,9 @@ public enum Mixin implements IMixin { RTGLandscapeGeneratorMixin(Side.COMMON, require(TargetedMod.RTG), "rtg.LandscapeGeneratorMixin"), RTGRealisticBiomeBaseMixin(Side.COMMON, require(TargetedMod.RTG), "rtg.RealisticBiomeBaseMixin"), //endregion RTG->common + //region TwilightForest->common + ChunkProviderTwilightForestMixin(Side.COMMON, require(TargetedMod.TF), "tf.ChunkProviderTwilightForestMixin"), + //endregion TwilightForest->common //region UBC->common UBCOreUBifierMixin(Side.COMMON, require(TargetedMod.UBC), "ubc.OreUBifierMixin"), UBCBiomeUndergroundDecoratorMixin(Side.COMMON, require(TargetedMod.UBC), "ubc.BiomeUndergroundDecoratorMixin"), 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 6852f74..c2b0d03 100644 --- a/src/main/java/com/falsepattern/endlessids/mixin/plugin/TargetedMod.java +++ b/src/main/java/com/falsepattern/endlessids/mixin/plugin/TargetedMod.java @@ -21,6 +21,7 @@ public enum TargetedMod implements ITargetedMod { MFQM("More Fun Quicksand Mod", false, startsWith("morefunquicksandmod-")), NATURESCOMPASS("Nature's Compass", true, startsWith("naturescompass")), RTG("Realistic Terrain Generation", true, startsWith("rtg-")), + TF("Twilight Forest", true, startsWith("twilightforest")), UBC("Underground Biomes Constructs", false, startsWith("undergroundbiomesconstructs-")), WORLDEDIT("WorldEdit", false, startsWith("worldedit-")), ;