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 }