From 7ff89947ea4e6ea64a2ffe6cd3e7d76c8baf28ca Mon Sep 17 00:00:00 2001 From: FalsePattern <30945458+FalsePattern@users.noreply.github.com> Date: Thu, 25 Aug 2022 21:49:32 +0200 Subject: [PATCH] Compact Machines compat (#38) --- dependencies.gradle | 3 ++ .../compactmachines/CubeToolsMixin.java | 52 +++++++++++++++++++ .../endlessids/mixin/plugin/Mixin.java | 3 ++ .../endlessids/mixin/plugin/TargetedMod.java | 1 + .../tileentity/TileEntityMachine.java | 12 +++++ 5 files changed, 71 insertions(+) create mode 100644 src/main/java/com/falsepattern/endlessids/mixin/mixins/common/compactmachines/CubeToolsMixin.java create mode 100644 src/main/java/com/falsepattern/endlessids/mixin/stubpackage/org/dave/CompactMachines/tileentity/TileEntityMachine.java diff --git a/dependencies.gradle b/dependencies.gradle index d87e02b..51bfcdf 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -53,6 +53,9 @@ dependencies { //CoFH Lib 1.2.1-185 compile(deobfCurse("cofh-lib-220333:2388748")) + //CompactMachines 1.21 + compile(deobfCurse("compactmachines-224218:2268575")) + //Dark World 0.2 compile(deobfCurse("darkworld-225075:2225172")) diff --git a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/compactmachines/CubeToolsMixin.java b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/compactmachines/CubeToolsMixin.java new file mode 100644 index 0000000..5a4aec9 --- /dev/null +++ b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/compactmachines/CubeToolsMixin.java @@ -0,0 +1,52 @@ +package com.falsepattern.endlessids.mixin.mixins.common.compactmachines; + +import com.falsepattern.endlessids.mixin.helpers.IChunkMixin; +import com.falsepattern.endlessids.mixin.stubpackage.org.dave.CompactMachines.tileentity.TileEntityMachine; +import org.dave.CompactMachines.handler.ConfigurationHandler; +import org.dave.CompactMachines.machines.tools.CubeTools; +import org.dave.CompactMachines.utility.WorldUtils; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Overwrite; + +import net.minecraft.server.MinecraftServer; +import net.minecraft.world.WorldServer; +import net.minecraft.world.biome.BiomeGenBase; +import net.minecraft.world.chunk.Chunk; +import net.minecraftforge.common.BiomeDictionary; + +@Mixin(value = CubeTools.class, + remap = false) +public abstract class CubeToolsMixin { + + /** + * @author FalsePattern + * @reason getBiomeArray fix + */ + @Overwrite + public static void setCubeBiome(int coords, BiomeGenBase biome) { + WorldServer machineWorld = MinecraftServer.getServer().worldServerForDimension(ConfigurationHandler.dimensionId); + Chunk chunk = machineWorld.getChunkFromBlockCoords(coords * ConfigurationHandler.cubeDistance, 0); + if (chunk != null && chunk.isChunkLoaded) { + short[] biomeArray = ((IChunkMixin)chunk).getBiomeShortArray(); + for(int x = 0; x < 15; ++x) { + for(int z = 0; z < 15; ++z) { + biomeArray[z << 4 | x] = (short)biome.biomeID; + } + } + } + + } + + /** + * @author FalsePattern + * @reason getBiomeArray fix + */ + @Overwrite + public static BiomeGenBase getMachineBiome(TileEntityMachine machine) { + short[] biomeArray = ((IChunkMixin)machine.getWorldObj().getChunkFromBlockCoords(machine.xCoord, machine.zCoord)).getBiomeShortArray(); + int biomeId = biomeArray[(machine.zCoord & 15) << 4 | machine.xCoord & 15]; + return biomeId > 0 && biomeId < BiomeGenBase.getBiomeGenArray().length && BiomeDictionary.isBiomeRegistered(biomeId) + ? BiomeGenBase.getBiome(biomeId) + : WorldUtils.getBiomeByName(ConfigurationHandler.defaultBiome); + } +} 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 a26d8a2..523888a 100644 --- a/src/main/java/com/falsepattern/endlessids/mixin/plugin/Mixin.java +++ b/src/main/java/com/falsepattern/endlessids/mixin/plugin/Mixin.java @@ -99,6 +99,9 @@ public enum Mixin implements IMixin { //region CoFHLib->common CoFHLibCofhBlockHelperMixin(Side.COMMON, require(TargetedMod.COFHLIB), "cofhlib.BlockHelperMixin"), //endregion CoFHLib->common + //region CompactMachines->common + CMCubeToolsMixin(Side.COMMON, require(TargetedMod.COMPACTMACHINES), "compactmachines.CubeToolsMixin"), + //endregion CompactMachines->common //region DarkWorld->common DarkWorldModBiomesMixin(Side.COMMON, require(TargetedMod.DARKWORLD), "darkworld.ModBiomesMixin"), //endregion DarkWorld->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 6ad75c7..9562b9a 100644 --- a/src/main/java/com/falsepattern/endlessids/mixin/plugin/TargetedMod.java +++ b/src/main/java/com/falsepattern/endlessids/mixin/plugin/TargetedMod.java @@ -20,6 +20,7 @@ public enum TargetedMod implements ITargetedMod { BIOMEWAND("Biome Wand", true, startsWith("1.7.10-biome-wand-").or(startsWith("biome-wand"))), BUILDCRAFT("BuildCraft", true, startsWith("buildcraft-")), COFHLIB("CoFH Lib", true, startsWith("cofhlib-")), + COMPACTMACHINES("Compact Machines", true, startsWith("compactmachines-")), DARKWORLD("Dark World", true, startsWith("darkworld-")), DRAGONAPI("DragonAPI", false, startsWith("dragonapi")), EB("Enhanced Biomes", true, startsWith("Enhanced Biomes").or(startsWith("enhancedbiomes"))), diff --git a/src/main/java/com/falsepattern/endlessids/mixin/stubpackage/org/dave/CompactMachines/tileentity/TileEntityMachine.java b/src/main/java/com/falsepattern/endlessids/mixin/stubpackage/org/dave/CompactMachines/tileentity/TileEntityMachine.java new file mode 100644 index 0000000..d8cd0cf --- /dev/null +++ b/src/main/java/com/falsepattern/endlessids/mixin/stubpackage/org/dave/CompactMachines/tileentity/TileEntityMachine.java @@ -0,0 +1,12 @@ +package com.falsepattern.endlessids.mixin.stubpackage.org.dave.CompactMachines.tileentity; + +import net.minecraft.world.World; + +public class TileEntityMachine { + public World getWorldObj() + { + return null; + } + public int xCoord; + public int zCoord; +}