From 7c8af94533d4b3c50dc720cfecac371a1c65a89c Mon Sep 17 00:00:00 2001 From: ZombieHDGaming Date: Wed, 17 Apr 2019 17:04:47 -0400 Subject: [PATCH] Fixes and updates for mixins and mods - Most of the mods got updated to the newest versions (Sorry AdvancedRocketry and GeographiCraft, you're not very special). - Organized modsupport mixins to different directories for quicker and easier changes later (Plus too many fixes to begin with). - Included fixes from JEIDsIntegration with permission from BobbyTables (JEIDsI creator, thanks for the help). - Made Mixins work on servers.......cause apparently we're idiots and missed this somehow. - Also made mixins modsupport meta file be alphabetized........cause A E S T H E T I C S So most mod support related bugs should be fixed, except pregen (Still have no idea why this is causing an issue), other bugs will be looked into over the next few months. --- build.gradle | 20 ++++--- .../java/org/dimdev/jeid/ASMException.java | 2 +- src/main/java/org/dimdev/jeid/JEID.java | 2 +- .../MixinBlockTFMagicLogSpecial.java | 24 -------- .../{ => abyssalcraft}/MixinBiomeUtil.java | 2 +- .../MixinCleansingRitualMessage.java | 31 +++++++++++ .../MixinBiomeHandler.java | 2 +- .../{ => biomesoplenty}/MixinBOPCommand.java | 2 +- .../{ => biomesoplenty}/MixinModBiomes.java | 2 +- .../modsupport/bookshelf/MixinWorldUtils.java | 31 +++++++++++ .../MixinEntityPortal.java | 2 +- .../cyclopscore/MixinWorldHelpers.java | 31 +++++++++++ .../extrautils2/MixinBiomeManip.java | 31 +++++++++++ .../MixinDimensionManager.java | 2 +- .../{ => journeymap}/MixinChunkMD.java | 4 +- .../{ => mystcraft}/MixinBiomeReplacer.java | 6 +- .../{ => thaumcraft}/MixinUtils.java | 2 +- .../MixinBlockSpreadingDeath.java | 25 +++++++++ .../MixinGenLayerVoronoiZoomInstanced.java | 16 ++++++ .../tofucraft/MixinGenLayerRiverMix.java | 16 ++++++ .../MixinGenLayerTofuVoronoiZoom.java | 16 ++++++ .../MixinGenLayerTropiVoronoiZoom.java | 16 ++++++ .../MixinBlockTFMagicLogSpecial.java | 55 +++++++++++++++++++ .../MixinGenLayerTFRiverMix.java | 16 ++++++ .../{ => worldedit}/MixinBaseBlock.java | 2 +- src/main/resources/mixins.jeid.init.json | 4 +- .../resources/mixins.jeid.modsupport.json | 36 +++++++----- 27 files changed, 339 insertions(+), 59 deletions(-) delete mode 100644 src/main/java/org/dimdev/jeid/mixin/modsupport/MixinBlockTFMagicLogSpecial.java rename src/main/java/org/dimdev/jeid/mixin/modsupport/{ => abyssalcraft}/MixinBiomeUtil.java (94%) create mode 100644 src/main/java/org/dimdev/jeid/mixin/modsupport/abyssalcraft/MixinCleansingRitualMessage.java rename src/main/java/org/dimdev/jeid/mixin/modsupport/{ => advancedrocketry}/MixinBiomeHandler.java (97%) rename src/main/java/org/dimdev/jeid/mixin/modsupport/{ => biomesoplenty}/MixinBOPCommand.java (90%) rename src/main/java/org/dimdev/jeid/mixin/modsupport/{ => biomesoplenty}/MixinModBiomes.java (93%) create mode 100644 src/main/java/org/dimdev/jeid/mixin/modsupport/bookshelf/MixinWorldUtils.java rename src/main/java/org/dimdev/jeid/mixin/modsupport/{ => creepingnether}/MixinEntityPortal.java (93%) create mode 100644 src/main/java/org/dimdev/jeid/mixin/modsupport/cyclopscore/MixinWorldHelpers.java create mode 100644 src/main/java/org/dimdev/jeid/mixin/modsupport/extrautils2/MixinBiomeManip.java rename src/main/java/org/dimdev/jeid/mixin/modsupport/{ => geographicraft}/MixinDimensionManager.java (92%) rename src/main/java/org/dimdev/jeid/mixin/modsupport/{ => journeymap}/MixinChunkMD.java (86%) rename src/main/java/org/dimdev/jeid/mixin/modsupport/{ => mystcraft}/MixinBiomeReplacer.java (85%) rename src/main/java/org/dimdev/jeid/mixin/modsupport/{ => thaumcraft}/MixinUtils.java (96%) create mode 100644 src/main/java/org/dimdev/jeid/mixin/modsupport/thebetweenlands/MixinBlockSpreadingDeath.java create mode 100644 src/main/java/org/dimdev/jeid/mixin/modsupport/thebetweenlands/MixinGenLayerVoronoiZoomInstanced.java create mode 100644 src/main/java/org/dimdev/jeid/mixin/modsupport/tofucraft/MixinGenLayerRiverMix.java create mode 100644 src/main/java/org/dimdev/jeid/mixin/modsupport/tofucraft/MixinGenLayerTofuVoronoiZoom.java create mode 100644 src/main/java/org/dimdev/jeid/mixin/modsupport/tropicraft/MixinGenLayerTropiVoronoiZoom.java create mode 100644 src/main/java/org/dimdev/jeid/mixin/modsupport/twilightforest/MixinBlockTFMagicLogSpecial.java create mode 100644 src/main/java/org/dimdev/jeid/mixin/modsupport/twilightforest/MixinGenLayerTFRiverMix.java rename src/main/java/org/dimdev/jeid/mixin/modsupport/{ => worldedit}/MixinBaseBlock.java (93%) diff --git a/build.gradle b/build.gradle index 0b81b04..b90d9a1 100644 --- a/build.gradle +++ b/build.gradle @@ -37,21 +37,27 @@ dependencies { exclude module: "commons-io" } compileOnly "2555:531:BiomesOPlenty-1.12.2-7.0.1.2384-universal@jar" - compileOnly "2561:393:twilightforest-1.12.2-3.7.424-universal@jar" - compileOnly "2569:273:Thaumcraft-1.12.2-6.1.BETA16@jar" + compileOnly "2686:476:twilightforest-1.12.2-3.9.888-universal@jar" + compileOnly "2629:23:Thaumcraft-1.12.2-6.1.BETA26@jar" compileOnly "2691:339:AbyssalCraft-1.12.2-1.9.6@jar" - compileOnly "2509:208:Creeping+Nether-2.0@jar" + compileOnly "2655:432:Creeping+Nether-2.2.2@jar" compileOnly "2497:541:GeographiCraft-1.12-0.8.9b@jar" - compileOnly "2581:550:mystcraft-1.12.2-0.13.4.05@jar" + compileOnly "2699:673:mystcraft-1.12.2-0.13.7.03@jar" compileOnly "2575:801:AdvancedRocketry-1.12.2-1.4.0-88-universal@jar" - compileOnly "2460:570:worldedit-forge-mc1.12-6.1.8-dist@jar" - compileOnly "2498:312:journeymap-1.12.2-5.5.2@jar" + compileOnly "2655:56:worldedit-forge-mc1.12.2-6.1.10-SNAPSHOT-dist@jar" + compileOnly "2682:920:journeymap-1.12.2-5.5.4@jar" + compileOnly "2683:823:Bookshelf-1.12.2-2.3.577@jar" + compileOnly "2691:93:CyclopsCore-1.12.2-1.1.1@jar" + compileOnly "2678:374:extrautils2-1.12-1.9.9@jar" + compileOnly "2683:667:TheBetweenlands-3.4.6-universal@jar" + compileOnly "2692:524:TofuCraftReload-0.0.2.1@jar" + compileOnly "2636:492:tropicraft-MC1.12.2-7.1.8.105@jar" } def travisBuildNumber = System.getenv("TRAVIS_BUILD_NUMBER") def versionSuffix = travisBuildNumber != null ? travisBuildNumber : "SNAPSHOT" -version "1.0.2-$versionSuffix" +version "1.0.3-$versionSuffix" group "org.dimdev.jeid" archivesBaseName = "JustEnoughIDs" diff --git a/src/main/java/org/dimdev/jeid/ASMException.java b/src/main/java/org/dimdev/jeid/ASMException.java index 7e38133..2175716 100644 --- a/src/main/java/org/dimdev/jeid/ASMException.java +++ b/src/main/java/org/dimdev/jeid/ASMException.java @@ -8,7 +8,7 @@ public class ASMException extends RuntimeException { private static final long serialVersionUID = -8581611883691404427L; public ASMException(String message) { - super("MaxPotionIDExtender - Class transformation error\n"+message); + super("JustEnoughIDs - Class transformation error\n"+message); } public ASMException(String message, ClassNode node) { diff --git a/src/main/java/org/dimdev/jeid/JEID.java b/src/main/java/org/dimdev/jeid/JEID.java index 8758f82..62edf7c 100644 --- a/src/main/java/org/dimdev/jeid/JEID.java +++ b/src/main/java/org/dimdev/jeid/JEID.java @@ -117,7 +117,7 @@ public void postInit(FMLPostInitializationEvent e) { public static class PotionTest extends Potion { private static final Random r = new Random(); - private String nm = ""; + private String nm; protected PotionTest(int id) { super(false, 0xFFFFFF & r.nextInt(Integer.MAX_VALUE)); diff --git a/src/main/java/org/dimdev/jeid/mixin/modsupport/MixinBlockTFMagicLogSpecial.java b/src/main/java/org/dimdev/jeid/mixin/modsupport/MixinBlockTFMagicLogSpecial.java deleted file mode 100644 index 004fd6a..0000000 --- a/src/main/java/org/dimdev/jeid/mixin/modsupport/MixinBlockTFMagicLogSpecial.java +++ /dev/null @@ -1,24 +0,0 @@ -package org.dimdev.jeid.mixin.modsupport; - -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; -import net.minecraft.world.biome.Biome; -import net.minecraftforge.fml.common.network.NetworkRegistry; -import net.minecraftforge.fml.common.network.simpleimpl.IMessage; -import org.dimdev.jeid.network.BiomeChangeMessage; -import org.dimdev.jeid.network.MessageManager; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Overwrite; -import org.spongepowered.asm.mixin.Pseudo; -import twilightforest.biomes.TFBiomes; -import twilightforest.block.BlockTFMagicLogSpecial; - -@Pseudo -@Mixin(BlockTFMagicLogSpecial.class) -public class MixinBlockTFMagicLogSpecial { - @Overwrite(remap = false) - private void sendChangedBiome(World world, BlockPos pos) { - IMessage message = new BiomeChangeMessage(pos.getX(), pos.getZ(), Biome.getIdForBiome(TFBiomes.enchantedForest)); - MessageManager.CHANNEL.sendToAllAround(message, new NetworkRegistry.TargetPoint(world.provider.getDimension(), pos.getX(), 128.0D, pos.getZ(), 128.0D)); - } -} diff --git a/src/main/java/org/dimdev/jeid/mixin/modsupport/MixinBiomeUtil.java b/src/main/java/org/dimdev/jeid/mixin/modsupport/abyssalcraft/MixinBiomeUtil.java similarity index 94% rename from src/main/java/org/dimdev/jeid/mixin/modsupport/MixinBiomeUtil.java rename to src/main/java/org/dimdev/jeid/mixin/modsupport/abyssalcraft/MixinBiomeUtil.java index 531e011..6bd064d 100644 --- a/src/main/java/org/dimdev/jeid/mixin/modsupport/MixinBiomeUtil.java +++ b/src/main/java/org/dimdev/jeid/mixin/modsupport/abyssalcraft/MixinBiomeUtil.java @@ -1,4 +1,4 @@ -package org.dimdev.jeid.mixin.modsupport; +package org.dimdev.jeid.mixin.modsupport.abyssalcraft; import com.shinoow.abyssalcraft.common.network.PacketDispatcher; import com.shinoow.abyssalcraft.common.network.client.CleansingRitualMessage; diff --git a/src/main/java/org/dimdev/jeid/mixin/modsupport/abyssalcraft/MixinCleansingRitualMessage.java b/src/main/java/org/dimdev/jeid/mixin/modsupport/abyssalcraft/MixinCleansingRitualMessage.java new file mode 100644 index 0000000..5631f80 --- /dev/null +++ b/src/main/java/org/dimdev/jeid/mixin/modsupport/abyssalcraft/MixinCleansingRitualMessage.java @@ -0,0 +1,31 @@ +package org.dimdev.jeid.mixin.modsupport.abyssalcraft; + +import com.shinoow.abyssalcraft.common.network.client.CleansingRitualMessage; +import com.shinoow.abyssalcraft.common.util.BiomeUtil; +import net.minecraft.client.Minecraft; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.math.BlockPos; +import net.minecraftforge.fml.relauncher.Side; +import org.spongepowered.asm.mixin.*; + +@Pseudo +@Mixin(CleansingRitualMessage.class) +public class MixinCleansingRitualMessage { + @Shadow private int x; + @Shadow private int z; + @Shadow private int biomeID; + @Shadow private boolean batched; + + /** + * @reason This exists to revert changes made by JEID + * @author Shinoow + */ + @Final + @Overwrite(remap = false) + public void process(EntityPlayer player, Side side) { + BiomeUtil.updateBiome(player.world, new BlockPos(x, 0, z), biomeID, false); + + if(x % 14 == 0 || z % 14 == 0 || !batched) + Minecraft.getMinecraft().renderGlobal.markBlockRangeForRenderUpdate(x - 7, 0, z - 7, x + 7, 255, z + 7); + } +} diff --git a/src/main/java/org/dimdev/jeid/mixin/modsupport/MixinBiomeHandler.java b/src/main/java/org/dimdev/jeid/mixin/modsupport/advancedrocketry/MixinBiomeHandler.java similarity index 97% rename from src/main/java/org/dimdev/jeid/mixin/modsupport/MixinBiomeHandler.java rename to src/main/java/org/dimdev/jeid/mixin/modsupport/advancedrocketry/MixinBiomeHandler.java index 1e836db..038d332 100644 --- a/src/main/java/org/dimdev/jeid/mixin/modsupport/MixinBiomeHandler.java +++ b/src/main/java/org/dimdev/jeid/mixin/modsupport/advancedrocketry/MixinBiomeHandler.java @@ -1,4 +1,4 @@ -package org.dimdev.jeid.mixin.modsupport; +package org.dimdev.jeid.mixin.modsupport.advancedrocketry; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; diff --git a/src/main/java/org/dimdev/jeid/mixin/modsupport/MixinBOPCommand.java b/src/main/java/org/dimdev/jeid/mixin/modsupport/biomesoplenty/MixinBOPCommand.java similarity index 90% rename from src/main/java/org/dimdev/jeid/mixin/modsupport/MixinBOPCommand.java rename to src/main/java/org/dimdev/jeid/mixin/modsupport/biomesoplenty/MixinBOPCommand.java index 55badf8..e9245ca 100644 --- a/src/main/java/org/dimdev/jeid/mixin/modsupport/MixinBOPCommand.java +++ b/src/main/java/org/dimdev/jeid/mixin/modsupport/biomesoplenty/MixinBOPCommand.java @@ -1,4 +1,4 @@ -package org.dimdev.jeid.mixin.modsupport; +package org.dimdev.jeid.mixin.modsupport.biomesoplenty; import biomesoplenty.common.command.BOPCommand; import org.spongepowered.asm.mixin.Mixin; diff --git a/src/main/java/org/dimdev/jeid/mixin/modsupport/MixinModBiomes.java b/src/main/java/org/dimdev/jeid/mixin/modsupport/biomesoplenty/MixinModBiomes.java similarity index 93% rename from src/main/java/org/dimdev/jeid/mixin/modsupport/MixinModBiomes.java rename to src/main/java/org/dimdev/jeid/mixin/modsupport/biomesoplenty/MixinModBiomes.java index e1eddad..3482dd8 100644 --- a/src/main/java/org/dimdev/jeid/mixin/modsupport/MixinModBiomes.java +++ b/src/main/java/org/dimdev/jeid/mixin/modsupport/biomesoplenty/MixinModBiomes.java @@ -1,4 +1,4 @@ -package org.dimdev.jeid.mixin.modsupport; +package org.dimdev.jeid.mixin.modsupport.biomesoplenty; import biomesoplenty.common.init.ModBiomes; import net.minecraft.world.biome.Biome; diff --git a/src/main/java/org/dimdev/jeid/mixin/modsupport/bookshelf/MixinWorldUtils.java b/src/main/java/org/dimdev/jeid/mixin/modsupport/bookshelf/MixinWorldUtils.java new file mode 100644 index 0000000..3c6cfac --- /dev/null +++ b/src/main/java/org/dimdev/jeid/mixin/modsupport/bookshelf/MixinWorldUtils.java @@ -0,0 +1,31 @@ +package org.dimdev.jeid.mixin.modsupport.bookshelf; + +import net.darkhax.bookshelf.lib.Constants; +import net.darkhax.bookshelf.util.WorldUtils; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.chunk.Chunk; +import org.dimdev.jeid.INewChunk; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Overwrite; +import org.spongepowered.asm.mixin.Pseudo; + +import java.util.Arrays; + +@Pseudo +@Mixin(WorldUtils.class) +public abstract class MixinWorldUtils { + @Overwrite(remap = false) + public static void setBiomes(World world, BlockPos pos, Biome biome) { + try { + final Chunk chunk = world.getChunk(pos); + final int[] biomes = ((INewChunk) chunk).getIntBiomeArray(); + Arrays.fill(biomes, Biome.getIdForBiome(biome)); + + WorldUtils.updateNearbyChunks(world, chunk, true, true); + } catch (Exception e) { + Constants.LOG.warn(e, "Unable to set biome for Pos: {}, Biome: {}", pos.toString(), biome.getRegistryName()); + } + } +} diff --git a/src/main/java/org/dimdev/jeid/mixin/modsupport/MixinEntityPortal.java b/src/main/java/org/dimdev/jeid/mixin/modsupport/creepingnether/MixinEntityPortal.java similarity index 93% rename from src/main/java/org/dimdev/jeid/mixin/modsupport/MixinEntityPortal.java rename to src/main/java/org/dimdev/jeid/mixin/modsupport/creepingnether/MixinEntityPortal.java index fb132ac..ad67756 100644 --- a/src/main/java/org/dimdev/jeid/mixin/modsupport/MixinEntityPortal.java +++ b/src/main/java/org/dimdev/jeid/mixin/modsupport/creepingnether/MixinEntityPortal.java @@ -1,4 +1,4 @@ -package org.dimdev.jeid.mixin.modsupport; +package org.dimdev.jeid.mixin.modsupport.creepingnether; import com.cutievirus.creepingnether.entity.EntityPortal; import net.minecraft.util.math.BlockPos; diff --git a/src/main/java/org/dimdev/jeid/mixin/modsupport/cyclopscore/MixinWorldHelpers.java b/src/main/java/org/dimdev/jeid/mixin/modsupport/cyclopscore/MixinWorldHelpers.java new file mode 100644 index 0000000..f1950aa --- /dev/null +++ b/src/main/java/org/dimdev/jeid/mixin/modsupport/cyclopscore/MixinWorldHelpers.java @@ -0,0 +1,31 @@ +package org.dimdev.jeid.mixin.modsupport.cyclopscore; + +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.chunk.Chunk; +import net.minecraftforge.fml.common.network.NetworkRegistry; +import org.cyclops.cyclopscore.helper.WorldHelpers; +import org.dimdev.jeid.INewChunk; +import org.dimdev.jeid.network.BiomeChangeMessage; +import org.dimdev.jeid.network.MessageManager; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Overwrite; +import org.spongepowered.asm.mixin.Pseudo; + +@Pseudo +@Mixin(WorldHelpers.class) +public class MixinWorldHelpers { + @Overwrite + public static void setBiome(World world, BlockPos pos, Biome biome) { + Chunk chunk = world.getChunk(pos); + ((INewChunk) chunk).getIntBiomeArray()[(pos.getZ() & 0xF) << 4 | pos.getX() & 0xF] = Biome.getIdForBiome(biome); + chunk.markDirty(); + if (!world.isRemote) { + MessageManager.CHANNEL.sendToAllAround( + new BiomeChangeMessage(pos.getX(), pos.getZ(), Biome.getIdForBiome(biome)), + new NetworkRegistry.TargetPoint(world.provider.getDimension(), pos.getX(), 128.0D, pos.getZ(), 128.0D) + ); + } + } +} diff --git a/src/main/java/org/dimdev/jeid/mixin/modsupport/extrautils2/MixinBiomeManip.java b/src/main/java/org/dimdev/jeid/mixin/modsupport/extrautils2/MixinBiomeManip.java new file mode 100644 index 0000000..d5d6efa --- /dev/null +++ b/src/main/java/org/dimdev/jeid/mixin/modsupport/extrautils2/MixinBiomeManip.java @@ -0,0 +1,31 @@ +package org.dimdev.jeid.mixin.modsupport.extrautils2; + +import com.rwtema.extrautils2.biome.BiomeManip; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.chunk.Chunk; +import net.minecraftforge.fml.common.network.NetworkRegistry; +import org.dimdev.jeid.INewChunk; +import org.dimdev.jeid.network.BiomeChangeMessage; +import org.dimdev.jeid.network.MessageManager; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Overwrite; +import org.spongepowered.asm.mixin.Pseudo; + +@Pseudo +@Mixin(BiomeManip.class) +public class MixinBiomeManip { + @Overwrite + public static void setBiome(World world, Biome biome, BlockPos pos) { + Chunk chunk = world.getChunk(pos); + ((INewChunk) chunk).getIntBiomeArray()[(pos.getZ() & 0xF) << 4 | pos.getX() & 0xF] = Biome.getIdForBiome(biome); + chunk.markDirty(); + if (!world.isRemote) { + MessageManager.CHANNEL.sendToAllAround( + new BiomeChangeMessage(pos.getX(), pos.getZ(), Biome.getIdForBiome(biome)), + new NetworkRegistry.TargetPoint(world.provider.getDimension(), pos.getX(), 128.0D, pos.getZ(), 128.0D) + ); + } + } +} diff --git a/src/main/java/org/dimdev/jeid/mixin/modsupport/MixinDimensionManager.java b/src/main/java/org/dimdev/jeid/mixin/modsupport/geographicraft/MixinDimensionManager.java similarity index 92% rename from src/main/java/org/dimdev/jeid/mixin/modsupport/MixinDimensionManager.java rename to src/main/java/org/dimdev/jeid/mixin/modsupport/geographicraft/MixinDimensionManager.java index b4d90da..f42def3 100644 --- a/src/main/java/org/dimdev/jeid/mixin/modsupport/MixinDimensionManager.java +++ b/src/main/java/org/dimdev/jeid/mixin/modsupport/geographicraft/MixinDimensionManager.java @@ -1,4 +1,4 @@ -package org.dimdev.jeid.mixin.modsupport; +package org.dimdev.jeid.mixin.modsupport.geographicraft; import climateControl.DimensionManager; import net.minecraft.init.Biomes; diff --git a/src/main/java/org/dimdev/jeid/mixin/modsupport/MixinChunkMD.java b/src/main/java/org/dimdev/jeid/mixin/modsupport/journeymap/MixinChunkMD.java similarity index 86% rename from src/main/java/org/dimdev/jeid/mixin/modsupport/MixinChunkMD.java rename to src/main/java/org/dimdev/jeid/mixin/modsupport/journeymap/MixinChunkMD.java index b1dee62..1d2ae32 100644 --- a/src/main/java/org/dimdev/jeid/mixin/modsupport/MixinChunkMD.java +++ b/src/main/java/org/dimdev/jeid/mixin/modsupport/journeymap/MixinChunkMD.java @@ -1,4 +1,4 @@ -package org.dimdev.jeid.mixin.modsupport; +package org.dimdev.jeid.mixin.modsupport.journeymap; import journeymap.client.model.ChunkMD; import net.minecraft.util.math.BlockPos; @@ -7,10 +7,12 @@ import net.minecraft.world.chunk.Chunk; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Overwrite; +import org.spongepowered.asm.mixin.Pseudo; import org.spongepowered.asm.mixin.Shadow; import javax.annotation.Nullable; +@Pseudo @Mixin(ChunkMD.class) public abstract class MixinChunkMD { @Shadow public abstract World getWorld(); diff --git a/src/main/java/org/dimdev/jeid/mixin/modsupport/MixinBiomeReplacer.java b/src/main/java/org/dimdev/jeid/mixin/modsupport/mystcraft/MixinBiomeReplacer.java similarity index 85% rename from src/main/java/org/dimdev/jeid/mixin/modsupport/MixinBiomeReplacer.java rename to src/main/java/org/dimdev/jeid/mixin/modsupport/mystcraft/MixinBiomeReplacer.java index eca2175..c6248b6 100644 --- a/src/main/java/org/dimdev/jeid/mixin/modsupport/MixinBiomeReplacer.java +++ b/src/main/java/org/dimdev/jeid/mixin/modsupport/mystcraft/MixinBiomeReplacer.java @@ -1,4 +1,4 @@ -package org.dimdev.jeid.mixin.modsupport; +package org.dimdev.jeid.mixin.modsupport.mystcraft; import com.xcompwiz.mystcraft.symbol.symbols.SymbolFloatingIslands; import net.minecraft.world.biome.Biome; @@ -6,12 +6,14 @@ import org.dimdev.jeid.INewChunk; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Overwrite; +import org.spongepowered.asm.mixin.Pseudo; import org.spongepowered.asm.mixin.Shadow; import java.util.Arrays; import java.util.HashMap; import java.util.List; +@Pseudo @Mixin(SymbolFloatingIslands.BiomeReplacer.class) public class MixinBiomeReplacer { @Shadow private HashMap, boolean[]> chunks; @@ -26,7 +28,7 @@ public void finalizeChunk(Chunk chunk, int chunkX, int chunkZ) { for(int coords = 0; coords < modified.length; ++coords) { if (modified[coords]) { - biomes[coords] = Biome.getIdForBiome(biome) & 255; + biomes[coords] = Biome.getIdForBiome(biome); } } } diff --git a/src/main/java/org/dimdev/jeid/mixin/modsupport/MixinUtils.java b/src/main/java/org/dimdev/jeid/mixin/modsupport/thaumcraft/MixinUtils.java similarity index 96% rename from src/main/java/org/dimdev/jeid/mixin/modsupport/MixinUtils.java rename to src/main/java/org/dimdev/jeid/mixin/modsupport/thaumcraft/MixinUtils.java index 08d3b8e..d2c4774 100644 --- a/src/main/java/org/dimdev/jeid/mixin/modsupport/MixinUtils.java +++ b/src/main/java/org/dimdev/jeid/mixin/modsupport/thaumcraft/MixinUtils.java @@ -1,4 +1,4 @@ -package org.dimdev.jeid.mixin.modsupport; +package org.dimdev.jeid.mixin.modsupport.thaumcraft; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; diff --git a/src/main/java/org/dimdev/jeid/mixin/modsupport/thebetweenlands/MixinBlockSpreadingDeath.java b/src/main/java/org/dimdev/jeid/mixin/modsupport/thebetweenlands/MixinBlockSpreadingDeath.java new file mode 100644 index 0000000..0aff0fa --- /dev/null +++ b/src/main/java/org/dimdev/jeid/mixin/modsupport/thebetweenlands/MixinBlockSpreadingDeath.java @@ -0,0 +1,25 @@ +package org.dimdev.jeid.mixin.modsupport.thebetweenlands; + +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.chunk.Chunk; +import org.dimdev.jeid.INewChunk; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Pseudo; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import thebetweenlands.common.block.terrain.BlockSpreadingDeath; + +@Pseudo +@Mixin(BlockSpreadingDeath.class) +public class MixinBlockSpreadingDeath { + @Inject(method = "convertBiome", at = @At("HEAD"), cancellable = true, remap = false) + private void convertBiomes(World world, BlockPos pos, Biome biome, CallbackInfo ci) { + Chunk chunk = world.getChunk(pos); + ((INewChunk) chunk).getIntBiomeArray()[(pos.getZ() & 15) << 4 | pos.getX() & 15] = Biome.getIdForBiome(biome); + chunk.markDirty(); + ci.cancel(); + } +} diff --git a/src/main/java/org/dimdev/jeid/mixin/modsupport/thebetweenlands/MixinGenLayerVoronoiZoomInstanced.java b/src/main/java/org/dimdev/jeid/mixin/modsupport/thebetweenlands/MixinGenLayerVoronoiZoomInstanced.java new file mode 100644 index 0000000..71802ab --- /dev/null +++ b/src/main/java/org/dimdev/jeid/mixin/modsupport/thebetweenlands/MixinGenLayerVoronoiZoomInstanced.java @@ -0,0 +1,16 @@ +package org.dimdev.jeid.mixin.modsupport.thebetweenlands; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Pseudo; +import org.spongepowered.asm.mixin.injection.Constant; +import org.spongepowered.asm.mixin.injection.ModifyConstant; +import thebetweenlands.common.world.gen.layer.GenLayerVoronoiZoomInstanced; + +@Pseudo +@Mixin(GenLayerVoronoiZoomInstanced.class) +public abstract class MixinGenLayerVoronoiZoomInstanced { + @ModifyConstant(method = "func_75904_a", constant = @Constant(intValue = 255), remap = false) + private int getBitMask(int oldValue) { + return 0xFFFFFFFF; + } +} diff --git a/src/main/java/org/dimdev/jeid/mixin/modsupport/tofucraft/MixinGenLayerRiverMix.java b/src/main/java/org/dimdev/jeid/mixin/modsupport/tofucraft/MixinGenLayerRiverMix.java new file mode 100644 index 0000000..bb18c07 --- /dev/null +++ b/src/main/java/org/dimdev/jeid/mixin/modsupport/tofucraft/MixinGenLayerRiverMix.java @@ -0,0 +1,16 @@ +package org.dimdev.jeid.mixin.modsupport.tofucraft; + +import cn.mcmod.tofucraft.world.gen.layer.GenLayerRiverMix; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Pseudo; +import org.spongepowered.asm.mixin.injection.Constant; +import org.spongepowered.asm.mixin.injection.ModifyConstant; + +@Pseudo +@Mixin(GenLayerRiverMix.class) +public class MixinGenLayerRiverMix { + @ModifyConstant(method = "func_75904_a", constant = @Constant(intValue = 255), remap = false) + private int getBitMask(int oldValue) { + return 0xFFFFFFFF; + } +} diff --git a/src/main/java/org/dimdev/jeid/mixin/modsupport/tofucraft/MixinGenLayerTofuVoronoiZoom.java b/src/main/java/org/dimdev/jeid/mixin/modsupport/tofucraft/MixinGenLayerTofuVoronoiZoom.java new file mode 100644 index 0000000..a782579 --- /dev/null +++ b/src/main/java/org/dimdev/jeid/mixin/modsupport/tofucraft/MixinGenLayerTofuVoronoiZoom.java @@ -0,0 +1,16 @@ +package org.dimdev.jeid.mixin.modsupport.tofucraft; + +import cn.mcmod.tofucraft.world.gen.layer.GenLayerTofuVoronoiZoom; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Pseudo; +import org.spongepowered.asm.mixin.injection.Constant; +import org.spongepowered.asm.mixin.injection.ModifyConstant; + +@Pseudo +@Mixin(GenLayerTofuVoronoiZoom.class) +public class MixinGenLayerTofuVoronoiZoom { + @ModifyConstant(method = "func_75904_a", constant = @Constant(intValue = 255), remap = false) + private int getBitMask(int oldValue) { + return 0xFFFFFFFF; + } +} diff --git a/src/main/java/org/dimdev/jeid/mixin/modsupport/tropicraft/MixinGenLayerTropiVoronoiZoom.java b/src/main/java/org/dimdev/jeid/mixin/modsupport/tropicraft/MixinGenLayerTropiVoronoiZoom.java new file mode 100644 index 0000000..c276735 --- /dev/null +++ b/src/main/java/org/dimdev/jeid/mixin/modsupport/tropicraft/MixinGenLayerTropiVoronoiZoom.java @@ -0,0 +1,16 @@ +package org.dimdev.jeid.mixin.modsupport.tropicraft; + +import net.tropicraft.core.common.worldgen.genlayer.GenLayerTropiVoronoiZoom; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Pseudo; +import org.spongepowered.asm.mixin.injection.Constant; +import org.spongepowered.asm.mixin.injection.ModifyConstant; + +@Pseudo +@Mixin(GenLayerTropiVoronoiZoom.class) +public class MixinGenLayerTropiVoronoiZoom { + @ModifyConstant(method = "func_75904_a", constant = @Constant(intValue = 255), remap = false) + private int getBitMask(int oldValue) { + return 0xFFFFFFFF; + } +} diff --git a/src/main/java/org/dimdev/jeid/mixin/modsupport/twilightforest/MixinBlockTFMagicLogSpecial.java b/src/main/java/org/dimdev/jeid/mixin/modsupport/twilightforest/MixinBlockTFMagicLogSpecial.java new file mode 100644 index 0000000..aae11dd --- /dev/null +++ b/src/main/java/org/dimdev/jeid/mixin/modsupport/twilightforest/MixinBlockTFMagicLogSpecial.java @@ -0,0 +1,55 @@ +package org.dimdev.jeid.mixin.modsupport.twilightforest; + +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.chunk.Chunk; +import net.minecraftforge.fml.common.network.NetworkRegistry; +import net.minecraftforge.fml.common.network.simpleimpl.IMessage; +import org.dimdev.jeid.INewChunk; +import org.dimdev.jeid.network.BiomeChangeMessage; +import org.dimdev.jeid.network.MessageManager; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Overwrite; +import org.spongepowered.asm.mixin.Pseudo; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import org.spongepowered.asm.mixin.injection.callback.LocalCapture; +import twilightforest.biomes.TFBiomes; +import twilightforest.block.BlockTFMagicLogSpecial; + +import java.util.Random; + +@Pseudo +@Mixin(BlockTFMagicLogSpecial.class) +public class MixinBlockTFMagicLogSpecial { + + /** + * For versions upto and including 3.8 + */ + @Overwrite(remap = false) + private void sendChangedBiome(World world, BlockPos pos) { + IMessage message = new BiomeChangeMessage(pos.getX(), pos.getZ(), Biome.getIdForBiome(TFBiomes.enchantedForest)); + MessageManager.CHANNEL.sendToAllAround(message, new NetworkRegistry.TargetPoint(world.provider.getDimension(), pos.getX(), 128.0D, pos.getZ(), 128.0D)); + } + + @Inject(method = "doTreeOfTransformationEffect", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/chunk/Chunk;getBiomeArray()[B"), locals = LocalCapture.CAPTURE_FAILSOFT) + private void onChangeBiome(World world, BlockPos pos, Random rand, CallbackInfo ci, int i, BlockPos dPos, Biome biomeAt, Chunk chunkAt) { + ((INewChunk) chunkAt).getIntBiomeArray()[(dPos.getZ() & 15) << 4 | (dPos.getX() & 15)] = Biome.getIdForBiome(TFBiomes.enchantedForest); + } + + /** + * For versions 3.9 and later + */ + @Overwrite(remap = false) + private void sendChangedBiome(World world, BlockPos pos, Biome biome) { + IMessage message = new BiomeChangeMessage(pos.getX(), pos.getZ(), Biome.getIdForBiome(biome)); + MessageManager.CHANNEL.sendToAllAround(message, new NetworkRegistry.TargetPoint(world.provider.getDimension(), pos.getX(), 128.0D, pos.getZ(), 128.0D)); + } + + @Inject(method = "doTreeOfTransformationEffect", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/chunk/Chunk;getBiomeArray()[B"), locals = LocalCapture.CAPTURE_FAILSOFT) + private void onChangeBiome(World world, BlockPos pos, Random rand, CallbackInfo ci, Biome targetBiome, int i, BlockPos dPos, Biome biomeAt, Chunk chunkAt) { + ((INewChunk) chunkAt).getIntBiomeArray()[(dPos.getZ() & 15) << 4 | (dPos.getX() & 15)] = Biome.getIdForBiome(targetBiome); + } +} diff --git a/src/main/java/org/dimdev/jeid/mixin/modsupport/twilightforest/MixinGenLayerTFRiverMix.java b/src/main/java/org/dimdev/jeid/mixin/modsupport/twilightforest/MixinGenLayerTFRiverMix.java new file mode 100644 index 0000000..abac5a4 --- /dev/null +++ b/src/main/java/org/dimdev/jeid/mixin/modsupport/twilightforest/MixinGenLayerTFRiverMix.java @@ -0,0 +1,16 @@ +package org.dimdev.jeid.mixin.modsupport.twilightforest; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Pseudo; +import org.spongepowered.asm.mixin.injection.Constant; +import org.spongepowered.asm.mixin.injection.ModifyConstant; +import twilightforest.world.layer.GenLayerTFRiverMix; + +@Pseudo +@Mixin(GenLayerTFRiverMix.class) +public class MixinGenLayerTFRiverMix { + @ModifyConstant(method = "func_75904_a", constant = @Constant(intValue = 255), remap = false) + private int getBitMask(int oldValue) { + return 0xFFFFFFFF; + } +} diff --git a/src/main/java/org/dimdev/jeid/mixin/modsupport/MixinBaseBlock.java b/src/main/java/org/dimdev/jeid/mixin/modsupport/worldedit/MixinBaseBlock.java similarity index 93% rename from src/main/java/org/dimdev/jeid/mixin/modsupport/MixinBaseBlock.java rename to src/main/java/org/dimdev/jeid/mixin/modsupport/worldedit/MixinBaseBlock.java index bfd534b..77b7e7b 100644 --- a/src/main/java/org/dimdev/jeid/mixin/modsupport/MixinBaseBlock.java +++ b/src/main/java/org/dimdev/jeid/mixin/modsupport/worldedit/MixinBaseBlock.java @@ -1,4 +1,4 @@ -package org.dimdev.jeid.mixin.modsupport; +package org.dimdev.jeid.mixin.modsupport.worldedit; import com.sk89q.worldedit.blocks.BaseBlock; import org.spongepowered.asm.mixin.Mixin; diff --git a/src/main/resources/mixins.jeid.init.json b/src/main/resources/mixins.jeid.init.json index 965738b..95a9b2f 100644 --- a/src/main/resources/mixins.jeid.init.json +++ b/src/main/resources/mixins.jeid.init.json @@ -5,10 +5,10 @@ "target": "@env(INIT)", "minVersion": "0.6", "compatibilityLevel": "JAVA_8", - "mixins": [], - "client": [ + "mixins": [ "MixinLoader" ], + "client": [], "injectors": { "maxShiftBy": 10 } diff --git a/src/main/resources/mixins.jeid.modsupport.json b/src/main/resources/mixins.jeid.modsupport.json index 92c5764..a7409de 100644 --- a/src/main/resources/mixins.jeid.modsupport.json +++ b/src/main/resources/mixins.jeid.modsupport.json @@ -5,20 +5,30 @@ "target": "@env(DEFAULT)", "minVersion": "0.6", "compatibilityLevel": "JAVA_8", - "mixins": [], - "client": [ - "MixinModBiomes", - "MixinBOPCommand", - "MixinBlockTFMagicLogSpecial", - "MixinUtils", - "MixinBiomeUtil", - "MixinEntityPortal", - "MixinDimensionManager", - "MixinBiomeReplacer", - "MixinBiomeHandler", - "MixinBaseBlock", - "MixinChunkMD" + "mixins": [ + "abyssalcraft/MixinBiomeUtil", + "abyssalcraft/MixinCleansingRitualMessage", + "advancedrocketry/MixinBiomeHandler", + "biomesoplenty/MixinBOPCommand", + "biomesoplenty/MixinModBiomes", + "bookshelf/MixinWorldUtils", + "creepingnether/MixinEntityPortal", + "cyclopscore/MixinWorldHelpers", + "extrautils2/MixinBiomeManip", + "geographicraft/MixinDimensionManager", + "journeymap/MixinChunkMD", + "mystcraft/MixinBiomeReplacer", + "thaumcraft/MixinUtils", + "thebetweenlands/MixinBlockSpreadingDeath", + "thebetweenlands/MixinGenLayerVoronoiZoomInstanced", + "tofucraft/MixinGenLayerRiverMix", + "tofucraft/MixinGenLayerTofuVoronoiZoom", + "tropicraft/MixinGenLayerTropiVoronoiZoom", + "twilightforest/BlockTFMagicLogSpecial", + "twilightforest/MixinGenLayerTFRiverMix", + "worldedit/MixinBaseBlock" ], + "client": [], "injectors": { "maxShiftBy": 10 }