From 8e248c94c8f0dbe5ba0e95d27fe9ee51169df440 Mon Sep 17 00:00:00 2001 From: FalsePattern <30945458+FalsePattern@users.noreply.github.com> Date: Tue, 27 Dec 2022 18:14:27 +0100 Subject: [PATCH] Advanced Rocketry compat (#52) --- dependencies.gradle | 7 +++ .../arocketry/AdvancedRocketryMixin.java | 33 +++++++++++++ .../ChunkProviderCavePlanetMixin.java | 46 +++++++++++++++++++ .../arocketry/ChunkProviderPlanetMixin.java | 26 +++++++++++ .../arocketry/ChunkProviderSpaceMixin.java | 25 ++++++++++ .../endlessids/mixin/plugin/Mixin.java | 6 +++ .../endlessids/mixin/plugin/TargetedMod.java | 1 + 7 files changed, 144 insertions(+) create mode 100644 src/main/java/com/falsepattern/endlessids/mixin/mixins/common/arocketry/AdvancedRocketryMixin.java create mode 100644 src/main/java/com/falsepattern/endlessids/mixin/mixins/common/arocketry/ChunkProviderCavePlanetMixin.java create mode 100644 src/main/java/com/falsepattern/endlessids/mixin/mixins/common/arocketry/ChunkProviderPlanetMixin.java create mode 100644 src/main/java/com/falsepattern/endlessids/mixin/mixins/common/arocketry/ChunkProviderSpaceMixin.java diff --git a/dependencies.gradle b/dependencies.gradle index 4512704..48c6897 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -27,6 +27,9 @@ dependencies { //AbyssalCraft 1.9.1.3-FINAL compile(deobfCurse("abyssalcraft-53686:2311135")) + //Advanced Rocketry + compile(deobfCurse("advancedrocketry-236542:2985057")) + //Alternate Terrain Generation 0.12.0 compile(deobfCurse("atg-228356:2231155")) @@ -157,4 +160,8 @@ dependencies { //needed by: Tropicraft //Same reason for being mirrored as tropicraft compile(deobf("https://mvn.falsepattern.com/releases/mirror/mirror/coroutil-1.1.3.jar")) + + //LibVulpes 0.2.8 + //needed by: Advanced Rocketry + compile(deobfCurse("libvulpes-236541:2812784")) } diff --git a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/arocketry/AdvancedRocketryMixin.java b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/arocketry/AdvancedRocketryMixin.java new file mode 100644 index 0000000..c9961df --- /dev/null +++ b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/arocketry/AdvancedRocketryMixin.java @@ -0,0 +1,33 @@ +package com.falsepattern.endlessids.mixin.mixins.common.arocketry; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.Constant; +import org.spongepowered.asm.mixin.injection.ModifyConstant; +import zmaster587.advancedRocketry.AdvancedRocketry; + +@Mixin(value = AdvancedRocketry.class, + remap = false) +public abstract class AdvancedRocketryMixin { + @ModifyConstant(method = "load", + constant = {@Constant(intValue = 110, ordinal = 0), + @Constant(intValue = 111, ordinal = 0), + @Constant(intValue = 112, ordinal = 0), + @Constant(intValue = 113, ordinal = 0), + @Constant(intValue = 114, ordinal = 0), + @Constant(intValue = 115, ordinal = 0), + @Constant(intValue = 116, ordinal = 0), + @Constant(intValue = 117, ordinal = 0), + @Constant(intValue = 118, ordinal = 0), + @Constant(intValue = 119, ordinal = 0)}, + require = 10) + private static int shiftBiomeIDsUp(int constant) { + return constant + 9000; + } + + @ModifyConstant(method = "preInit", + constant = @Constant(intValue = -2), + require = 1) + private static int changeDefaultDimID(int constant) { + return -5613; + } +} diff --git a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/arocketry/ChunkProviderCavePlanetMixin.java b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/arocketry/ChunkProviderCavePlanetMixin.java new file mode 100644 index 0000000..480daac --- /dev/null +++ b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/arocketry/ChunkProviderCavePlanetMixin.java @@ -0,0 +1,46 @@ +package com.falsepattern.endlessids.mixin.mixins.common.arocketry; + +import com.falsepattern.endlessids.mixin.helpers.BiomePatchHelper; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.Redirect; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; +import org.spongepowered.asm.mixin.injection.callback.LocalCapture; +import zmaster587.advancedRocketry.world.ChunkProviderCavePlanet; +import zmaster587.advancedRocketry.world.ChunkProviderPlanet; + +import net.minecraft.world.biome.BiomeGenBase; +import net.minecraft.world.chunk.Chunk; + +@Mixin(value = ChunkProviderCavePlanet.class, + remap = false) +public abstract class ChunkProviderCavePlanetMixin { + private BiomeGenBase[] bgb; + + @Inject(method = "provideChunk", + at = @At(value = "INVOKE", + target = "Lnet/minecraft/world/chunk/Chunk;getBiomeArray()[B", + shift = At.Shift.BEFORE, + remap = true), + remap = true, + locals = LocalCapture.CAPTURE_FAILHARD, + require = 1) + private void setBiomesTweaked1(int p_73154_1_, int p_73154_2_, CallbackInfoReturnable cir, ChunkProviderPlanet.BlockMetacoupling ablock, BiomeGenBase[] abiomegenbase, Chunk chunk) { + bgb = abiomegenbase; + } + + @Redirect(method = "provideChunk", + at = @At(value = "INVOKE", + target = "Lnet/minecraft/world/chunk/Chunk;getBiomeArray()[B", + remap = true), + remap = true, + require = 1) + private byte[] setBiomesTweaked2(Chunk chunk) { + try { + return BiomePatchHelper.getBiomeArrayTweaked(chunk, bgb); + } finally { + bgb = null; + } + } +} diff --git a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/arocketry/ChunkProviderPlanetMixin.java b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/arocketry/ChunkProviderPlanetMixin.java new file mode 100644 index 0000000..52f9f37 --- /dev/null +++ b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/arocketry/ChunkProviderPlanetMixin.java @@ -0,0 +1,26 @@ +package com.falsepattern.endlessids.mixin.mixins.common.arocketry; + +import com.falsepattern.endlessids.mixin.helpers.BiomePatchHelper; +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 zmaster587.advancedRocketry.world.ChunkProviderPlanet; + +import net.minecraft.world.biome.BiomeGenBase; +import net.minecraft.world.chunk.Chunk; + +@Mixin(value = ChunkProviderPlanet.class, + remap = false) +public abstract class ChunkProviderPlanetMixin { + @Shadow + private BiomeGenBase[] biomesForGeneration; + @Redirect(method = "provideChunk", + at = @At(value = "INVOKE", + target = "Lnet/minecraft/world/chunk/Chunk;getBiomeArray()[B", + remap = true), + remap = true) + private byte[] setBiomesTweaked(Chunk chunk) { + return BiomePatchHelper.getBiomeArrayTweaked(chunk, biomesForGeneration); + } +} diff --git a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/arocketry/ChunkProviderSpaceMixin.java b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/arocketry/ChunkProviderSpaceMixin.java new file mode 100644 index 0000000..f7a693f --- /dev/null +++ b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/arocketry/ChunkProviderSpaceMixin.java @@ -0,0 +1,25 @@ +package com.falsepattern.endlessids.mixin.mixins.common.arocketry; + +import com.falsepattern.endlessids.mixin.helpers.BiomePatchHelper; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; +import zmaster587.advancedRocketry.api.AdvancedRocketryBiomes; +import zmaster587.advancedRocketry.world.ChunkProviderSpace; + +import net.minecraft.world.chunk.Chunk; + +@Mixin(value = ChunkProviderSpace.class, + remap = false) +public abstract class ChunkProviderSpaceMixin { + + @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, (i) -> AdvancedRocketryBiomes.spaceBiome); + } +} 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 00f2737..d346cb1 100644 --- a/src/main/java/com/falsepattern/endlessids/mixin/plugin/Mixin.java +++ b/src/main/java/com/falsepattern/endlessids/mixin/plugin/Mixin.java @@ -57,6 +57,12 @@ public enum Mixin implements IMixin { //region AbyssalCraft->common AbyssalCraftMixin(Side.COMMON, require(TargetedMod.ABYSSALCRAFT), "abyssalcraft.AbyssalCraftMixin"), //endregion AbyssalCraft->common + //region AdvancedRocketry->common + AdvancedRocketryMixin(Side.COMMON, require(TargetedMod.AROCKETRY), "arocketry.AdvancedRocketryMixin"), + ARocketryChunkProviderCavePlanetMixin(Side.COMMON, require(TargetedMod.AROCKETRY), "arocketry.ChunkProviderCavePlanetMixin"), + ARocketryChunkProviderPlanetMixin(Side.COMMON, require(TargetedMod.AROCKETRY), "arocketry.ChunkProviderPlanetMixin"), + ARocketryChunkProviderSpaceMixin(Side.COMMON, require(TargetedMod.AROCKETRY), "arocketry.ChunkProviderSpaceMixin"), + //endregion AdvancedRocketry->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 eb48f3c..b77a72b 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.startsWit public enum TargetedMod implements ITargetedMod { ABYSSALCRAFT("AbyssalCraft", true, startsWith("abyssalcraft-")), + AROCKETRY("Advanced Rocketry", true, startsWith("advancedrocketry-")), ATG("Alternate Terrain Generation", true, startsWith("atg")), ANTIQUEATLAS("Antique Atlas", true, startsWith("antiqueatlas")), ANTIIDCONFLICT("Anti ID Conflict", true, startsWith("antiidconflict")),