From 2fa1abc36e0be310d8e573752e1df091152882c6 Mon Sep 17 00:00:00 2001 From: Sam Kirby Date: Mon, 8 Jul 2019 18:43:15 +0100 Subject: [PATCH] v1.3.0 (#2) * Mod can now veto JEID's mod support mixins - less hacky implementation * Creeping Nether biome is now properly set in v2.2 of the mod and up * HammerCore dependent mods are now able to change biomes - specifically requested in relation to Biome Paint Tools * New method for overriding JEID's mod support mixins. This should allow for cleaner solutions in future when issues such as DimensionalDevelopment/JustEnoughIDs#52 arise * Advanced Rocketry, now with lasers! * CleansingRitualMessage mixin no longer needed --- README.md | 2 + build.gradle | 10 ++- .../java/uk/bobbytables/jeidsi/JEIDsI.java | 10 +++ .../mixins/MixinCleansingRitualMessage.java | 33 ------- .../{ => core}/JEIDsILoadingPlugin.java | 6 +- .../core/compat/JeidModSupportPlugin.java | 60 +++++++++++++ .../abyssalcraft/AbyssalCraftPlugin.java | 2 +- .../abyssalcraft/mixins/MixinBiomeUtil.java | 2 +- .../mixins/MixinBiomeHandler.java | 52 +++++++++++ .../mixins/MixinPacketBiomeIDChange.java | 90 +++++++++++++++++++ .../bookshelf/mixins/MixinWorldUtils.java | 2 +- .../creepingnether/CreepingNetherPlugin.java | 58 ++++++++++++ .../mixins/MixinCorruptorAbstract.java | 39 ++++++++ .../cyclopscore/mixins/MixinWorldHelpers.java | 2 +- .../extrautils2/mixins/MixinBiomeManip.java | 2 +- .../hammercore/mixins/MixinWorldLocation.java | 37 ++++++++ .../mixins/MixinBlockSpreadingDeath.java | 2 +- .../MixinGenLayerVoronoiZoomInstanced.java | 2 +- .../mixins/MixinGenLayerRiverMix.java | 2 +- .../mixins/MixinGenLayerTofuVoronoiZoom.java | 2 +- .../mixins/MixinGenLayerTropiVoronoiZoom.java | 2 +- .../twilightforest/TwilightForestPlugin.java | 6 +- .../mixins/MixinBlockTFMagicLogSpecial.java | 3 +- .../MixinBlockTFMagicLogSpecialUpdate.java | 2 +- .../mixins/MixinGenLayerTFRiverMix.java | 2 +- .../core/init/mixins/MixinLoaderEarly.java | 36 ++++++++ .../core/init/mixins/MixinLoaderLate.java | 14 +++ .../jeidsi/init/mixins/MixinLoader.java | 36 -------- .../resources/mixins.jeidsi.abyssalcraft.json | 5 +- .../mixins.jeidsi.advancedrocketry.json | 12 +++ .../resources/mixins.jeidsi.bookshelf.json | 2 +- .../mixins.jeidsi.creepingnether.json | 12 +++ .../resources/mixins.jeidsi.cyclopscore.json | 2 +- .../resources/mixins.jeidsi.extrautils2.json | 2 +- .../resources/mixins.jeidsi.hammercore.json | 11 +++ src/main/resources/mixins.jeidsi.init.json | 5 +- ...json => mixins.jeidsi.jeidmodsupport.json} | 4 +- .../mixins.jeidsi.thebetweenlands.json | 2 +- .../resources/mixins.jeidsi.tofucraft.json | 2 +- .../resources/mixins.jeidsi.tropicraft.json | 2 +- .../mixins.jeidsi.twilightforest.json | 4 +- 41 files changed, 473 insertions(+), 108 deletions(-) delete mode 100644 src/main/java/uk/bobbytables/jeidsi/compat/abyssalcraft/mixins/MixinCleansingRitualMessage.java rename src/main/java/uk/bobbytables/jeidsi/{ => core}/JEIDsILoadingPlugin.java (96%) create mode 100644 src/main/java/uk/bobbytables/jeidsi/core/compat/JeidModSupportPlugin.java rename src/main/java/uk/bobbytables/jeidsi/{ => core}/compat/abyssalcraft/AbyssalCraftPlugin.java (95%) rename src/main/java/uk/bobbytables/jeidsi/{ => core}/compat/abyssalcraft/mixins/MixinBiomeUtil.java (94%) create mode 100644 src/main/java/uk/bobbytables/jeidsi/core/compat/advancedrocketry/mixins/MixinBiomeHandler.java create mode 100644 src/main/java/uk/bobbytables/jeidsi/core/compat/advancedrocketry/mixins/MixinPacketBiomeIDChange.java rename src/main/java/uk/bobbytables/jeidsi/{ => core}/compat/bookshelf/mixins/MixinWorldUtils.java (94%) create mode 100644 src/main/java/uk/bobbytables/jeidsi/core/compat/creepingnether/CreepingNetherPlugin.java create mode 100644 src/main/java/uk/bobbytables/jeidsi/core/compat/creepingnether/mixins/MixinCorruptorAbstract.java rename src/main/java/uk/bobbytables/jeidsi/{ => core}/compat/cyclopscore/mixins/MixinWorldHelpers.java (95%) rename src/main/java/uk/bobbytables/jeidsi/{ => core}/compat/extrautils2/mixins/MixinBiomeManip.java (95%) create mode 100644 src/main/java/uk/bobbytables/jeidsi/core/compat/hammercore/mixins/MixinWorldLocation.java rename src/main/java/uk/bobbytables/jeidsi/{ => core}/compat/thebetweenlands/mixins/MixinBlockSpreadingDeath.java (93%) rename src/main/java/uk/bobbytables/jeidsi/{ => core}/compat/thebetweenlands/mixins/MixinGenLayerVoronoiZoomInstanced.java (88%) rename src/main/java/uk/bobbytables/jeidsi/{ => core}/compat/tofucraft/mixins/MixinGenLayerRiverMix.java (88%) rename src/main/java/uk/bobbytables/jeidsi/{ => core}/compat/tofucraft/mixins/MixinGenLayerTofuVoronoiZoom.java (88%) rename src/main/java/uk/bobbytables/jeidsi/{ => core}/compat/tropicraft/mixins/MixinGenLayerTropiVoronoiZoom.java (89%) rename src/main/java/uk/bobbytables/jeidsi/{ => core}/compat/twilightforest/TwilightForestPlugin.java (88%) rename src/main/java/uk/bobbytables/jeidsi/{ => core}/compat/twilightforest/mixins/MixinBlockTFMagicLogSpecial.java (93%) rename src/main/java/uk/bobbytables/jeidsi/{ => core}/compat/twilightforest/mixins/MixinBlockTFMagicLogSpecialUpdate.java (95%) rename src/main/java/uk/bobbytables/jeidsi/{ => core}/compat/twilightforest/mixins/MixinGenLayerTFRiverMix.java (87%) create mode 100644 src/main/java/uk/bobbytables/jeidsi/core/init/mixins/MixinLoaderEarly.java create mode 100644 src/main/java/uk/bobbytables/jeidsi/core/init/mixins/MixinLoaderLate.java delete mode 100644 src/main/java/uk/bobbytables/jeidsi/init/mixins/MixinLoader.java create mode 100644 src/main/resources/mixins.jeidsi.advancedrocketry.json create mode 100644 src/main/resources/mixins.jeidsi.creepingnether.json create mode 100644 src/main/resources/mixins.jeidsi.hammercore.json rename src/main/resources/{mixins.jeid.server.modsupport.json => mixins.jeidsi.jeidmodsupport.json} (81%) diff --git a/README.md b/README.md index deefbe4..e6fe334 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,9 @@ This mod exists to improve the compatibility between JustEnoughIDs and other mod * Bookshelf * CyclopsCore * Extra Utilities 2 +* HammerCore * The Betweenlands +* The Creeping Nether * TofuCraft Reload * Tropicraft * Twilight Forest diff --git a/build.gradle b/build.gradle index 130b723..b83bb3b 100644 --- a/build.gradle +++ b/build.gradle @@ -14,7 +14,7 @@ apply plugin: 'org.spongepowered.mixin' def buildnumber = System.getenv('TRAVIS_BUILD_NUMBER') def suffix = buildnumber != null ? ".$buildnumber" : "-SNAPSHOT" -version = "1.2.1$suffix" +version = "1.3.0$suffix" group = "uk.bobbytables.jeidsi" // http://maven.apache.org/guides/mini/guide-naming-conventions.html archivesBaseName = "jeidsi" @@ -33,7 +33,7 @@ minecraft { replace "@VERSION@", project.version def args = [ - '-Dfml.coreMods.load=uk.bobbytables.jeidsi.JEIDsILoadingPlugin', + '-Dfml.coreMods.load=uk.bobbytables.jeidsi.core.JEIDsILoadingPlugin', '-Dmixin.hotSwap=true', '-Dmixin.checks.interfaces=true' ] @@ -59,12 +59,16 @@ dependencies { compileOnly '2691:339:AbyssalCraft-1.12.2-1.9.6@jar' compileOnly '2683:823:Bookshelf-1.12.2-2.3.577@jar' + compileOnly '2655:432:Creeping+Nether-2.2.2@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' compileOnly "2686:476:twilightforest-1.12.2-3.9.888-universal@jar" + compileOnly "2710:204:HammerCore-1.12.2-2.0.4.7@jar" + compileOnly "2733:984:AdvancedRocketry-1.12.2-1.6.0-151-universal@jar" + compileOnly "2731:147:LibVulpes-1.12.2-0.4.1-59-universal@jar" } mixin { @@ -75,7 +79,7 @@ jar { manifest.attributes( "FMLCorePluginContainsFMLMod": "true", "TweakClass": "org.spongepowered.asm.launch.MixinTweaker", - "FMLCorePlugin": "uk.bobbytables.jeidsi.JEIDsILoadingPlugin", + "FMLCorePlugin": "uk.bobbytables.jeidsi.core.JEIDsILoadingPlugin", "ForceLoadAsMod": "true" ) } diff --git a/src/main/java/uk/bobbytables/jeidsi/JEIDsI.java b/src/main/java/uk/bobbytables/jeidsi/JEIDsI.java index 84b80f1..b60c588 100644 --- a/src/main/java/uk/bobbytables/jeidsi/JEIDsI.java +++ b/src/main/java/uk/bobbytables/jeidsi/JEIDsI.java @@ -1,11 +1,17 @@ package uk.bobbytables.jeidsi; +import net.minecraft.world.biome.Biome; +import net.minecraftforge.fml.common.Loader; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; +import net.minecraftforge.fml.common.event.FMLServerStartedEvent; +import net.minecraftforge.fml.common.registry.GameRegistry; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import uk.bobbytables.jeidsi.network.JEIDsIPacketHandler; +import java.lang.reflect.Method; + @Mod(modid = JEIDsI.MODID, name = JEIDsI.NAME, version = JEIDsI.VERSION, dependencies = "required-after:jeid") public class JEIDsI { public static final String MODID = "jeidsi"; @@ -18,4 +24,8 @@ public class JEIDsI { public void preInit(FMLPreInitializationEvent event) { JEIDsIPacketHandler.init(); } + + @Mod.EventHandler + public void serverStarted(FMLServerStartedEvent event) { + } } \ No newline at end of file diff --git a/src/main/java/uk/bobbytables/jeidsi/compat/abyssalcraft/mixins/MixinCleansingRitualMessage.java b/src/main/java/uk/bobbytables/jeidsi/compat/abyssalcraft/mixins/MixinCleansingRitualMessage.java deleted file mode 100644 index ba445a7..0000000 --- a/src/main/java/uk/bobbytables/jeidsi/compat/abyssalcraft/mixins/MixinCleansingRitualMessage.java +++ /dev/null @@ -1,33 +0,0 @@ -package uk.bobbytables.jeidsi.compat.abyssalcraft.mixins; - -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.Final; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Overwrite; -import org.spongepowered.asm.mixin.Shadow; - -@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/uk/bobbytables/jeidsi/JEIDsILoadingPlugin.java b/src/main/java/uk/bobbytables/jeidsi/core/JEIDsILoadingPlugin.java similarity index 96% rename from src/main/java/uk/bobbytables/jeidsi/JEIDsILoadingPlugin.java rename to src/main/java/uk/bobbytables/jeidsi/core/JEIDsILoadingPlugin.java index 29d50f0..7d33901 100644 --- a/src/main/java/uk/bobbytables/jeidsi/JEIDsILoadingPlugin.java +++ b/src/main/java/uk/bobbytables/jeidsi/core/JEIDsILoadingPlugin.java @@ -1,4 +1,4 @@ -package uk.bobbytables.jeidsi; +package uk.bobbytables.jeidsi.core; import net.minecraftforge.common.ForgeVersion; import net.minecraftforge.fml.relauncher.IFMLLoadingPlugin; @@ -13,12 +13,12 @@ @IFMLLoadingPlugin.MCVersion(ForgeVersion.mcVersion) @IFMLLoadingPlugin.SortingIndex(-8000) public class JEIDsILoadingPlugin implements IFMLLoadingPlugin { - public static final Logger LOGGER = LogManager.getLogger("jeidsi"); + public static final Logger LOGGER = LogManager.getLogger("jeidsi_core"); public JEIDsILoadingPlugin() { MixinBootstrap.init(); - Mixins.addConfiguration("mixins.jeidsi.init.json"); Mixins.addConfiguration("mixins.jeid.server.init.json"); // We NEED JEID's loader plugin on the server too + Mixins.addConfiguration("mixins.jeidsi.init.json"); } @Override diff --git a/src/main/java/uk/bobbytables/jeidsi/core/compat/JeidModSupportPlugin.java b/src/main/java/uk/bobbytables/jeidsi/core/compat/JeidModSupportPlugin.java new file mode 100644 index 0000000..bcdefcc --- /dev/null +++ b/src/main/java/uk/bobbytables/jeidsi/core/compat/JeidModSupportPlugin.java @@ -0,0 +1,60 @@ +package uk.bobbytables.jeidsi.core.compat; + +import net.minecraftforge.fml.common.Loader; +import net.minecraftforge.fml.common.ModContainer; +import org.spongepowered.asm.lib.tree.ClassNode; +import org.spongepowered.asm.mixin.extensibility.IMixinConfigPlugin; +import org.spongepowered.asm.mixin.extensibility.IMixinInfo; +import uk.bobbytables.jeidsi.core.JEIDsILoadingPlugin; + +import java.util.List; +import java.util.Set; + +public class JeidModSupportPlugin implements IMixinConfigPlugin { + @Override + public void onLoad(String s) { + + } + + @Override + public String getRefMapperConfig() { + return null; + } + + @Override + public boolean shouldApplyMixin(String s, String s1) { + if (s.equals("com.cutievirus.creepingnether.entity.EntityPortal")) { + JEIDsILoadingPlugin.LOGGER.info("Testing " + s1); + for (ModContainer mod : Loader.instance().getModList()) { + if (mod.getModId().equals("creepingnether")) { + String[] modVersion = mod.getVersion().split("[.]"); + if (Integer.parseInt(modVersion[0]) >= 2 && Integer.parseInt(modVersion[1]) >= 2) { + JEIDsILoadingPlugin.LOGGER.info("Creeping Nether at v2.2.x, JEID mixin skipped"); + return false; + } + } + } + } + return true; + } + + @Override + public void acceptTargets(Set set, Set set1) { + + } + + @Override + public List getMixins() { + return null; + } + + @Override + public void preApply(String s, ClassNode classNode, String s1, IMixinInfo iMixinInfo) { + + } + + @Override + public void postApply(String s, ClassNode classNode, String s1, IMixinInfo iMixinInfo) { + + } +} diff --git a/src/main/java/uk/bobbytables/jeidsi/compat/abyssalcraft/AbyssalCraftPlugin.java b/src/main/java/uk/bobbytables/jeidsi/core/compat/abyssalcraft/AbyssalCraftPlugin.java similarity index 95% rename from src/main/java/uk/bobbytables/jeidsi/compat/abyssalcraft/AbyssalCraftPlugin.java rename to src/main/java/uk/bobbytables/jeidsi/core/compat/abyssalcraft/AbyssalCraftPlugin.java index ce0f95c..d1dd82f 100644 --- a/src/main/java/uk/bobbytables/jeidsi/compat/abyssalcraft/AbyssalCraftPlugin.java +++ b/src/main/java/uk/bobbytables/jeidsi/core/compat/abyssalcraft/AbyssalCraftPlugin.java @@ -1,4 +1,4 @@ -package uk.bobbytables.jeidsi.compat.abyssalcraft; +package uk.bobbytables.jeidsi.core.compat.abyssalcraft; import net.minecraftforge.fml.common.Loader; import net.minecraftforge.fml.common.ModContainer; diff --git a/src/main/java/uk/bobbytables/jeidsi/compat/abyssalcraft/mixins/MixinBiomeUtil.java b/src/main/java/uk/bobbytables/jeidsi/core/compat/abyssalcraft/mixins/MixinBiomeUtil.java similarity index 94% rename from src/main/java/uk/bobbytables/jeidsi/compat/abyssalcraft/mixins/MixinBiomeUtil.java rename to src/main/java/uk/bobbytables/jeidsi/core/compat/abyssalcraft/mixins/MixinBiomeUtil.java index 676ebc7..be8cb21 100644 --- a/src/main/java/uk/bobbytables/jeidsi/compat/abyssalcraft/mixins/MixinBiomeUtil.java +++ b/src/main/java/uk/bobbytables/jeidsi/core/compat/abyssalcraft/mixins/MixinBiomeUtil.java @@ -1,4 +1,4 @@ -package uk.bobbytables.jeidsi.compat.abyssalcraft.mixins; +package uk.bobbytables.jeidsi.core.compat.abyssalcraft.mixins; import com.shinoow.abyssalcraft.common.network.PacketDispatcher; import com.shinoow.abyssalcraft.common.network.client.CleansingRitualMessage; diff --git a/src/main/java/uk/bobbytables/jeidsi/core/compat/advancedrocketry/mixins/MixinBiomeHandler.java b/src/main/java/uk/bobbytables/jeidsi/core/compat/advancedrocketry/mixins/MixinBiomeHandler.java new file mode 100644 index 0000000..7e65eb4 --- /dev/null +++ b/src/main/java/uk/bobbytables/jeidsi/core/compat/advancedrocketry/mixins/MixinBiomeHandler.java @@ -0,0 +1,52 @@ +package uk.bobbytables.jeidsi.core.compat.advancedrocketry.mixins; + +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 zmaster587.advancedRocketry.network.PacketBiomeIDChange; +import zmaster587.advancedRocketry.util.BiomeHandler; +import zmaster587.libVulpes.network.PacketHandler; +import zmaster587.libVulpes.util.HashedBlockPosition; + +@Mixin(BiomeHandler.class) +public class MixinBiomeHandler { + /** + * @author sk2048 + */ + @Overwrite + public static void changeBiome(World world, int biomeId, BlockPos pos) { + Chunk chunk = world.getChunk(pos); + + Biome biome = world.getBiome(pos); + Biome biomeTo = Biome.getBiome(biomeId); + + if (biome == biomeTo) + return; + + if (biome.topBlock != biomeTo.topBlock) { + BlockPos yy = world.getHeight(pos); + + for (; !world.getBlockState(yy).isOpaqueCube() || yy.getY() < 0; yy = yy.down()) ; + + if (world.getBlockState(yy) == biome.topBlock) + world.setBlockState(yy, biomeTo.topBlock); + } + + ((INewChunk) chunk).getIntBiomeArray()[(pos.getZ() & 0xF) << 4 | pos.getX() & 0xF] = biomeId; + chunk.markDirty(); + + PacketHandler.sendToNearby(new PacketBiomeIDChange(chunk, world, new HashedBlockPosition(pos)), world.provider.getDimension(), pos, 256); + } + + /** + * @author sk2048 + */ + @Overwrite + public static void changeBiome(World world, int biomeId, Chunk chunk, BlockPos pos) { + changeBiome(world, biomeId, pos); + } +} diff --git a/src/main/java/uk/bobbytables/jeidsi/core/compat/advancedrocketry/mixins/MixinPacketBiomeIDChange.java b/src/main/java/uk/bobbytables/jeidsi/core/compat/advancedrocketry/mixins/MixinPacketBiomeIDChange.java new file mode 100644 index 0000000..da6c32c --- /dev/null +++ b/src/main/java/uk/bobbytables/jeidsi/core/compat/advancedrocketry/mixins/MixinPacketBiomeIDChange.java @@ -0,0 +1,90 @@ +package uk.bobbytables.jeidsi.core.compat.advancedrocketry.mixins; + +import io.netty.buffer.ByteBuf; +import net.minecraft.client.Minecraft; +import net.minecraft.entity.player.EntityPlayer; +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.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import zmaster587.advancedRocketry.AdvancedRocketry; +import zmaster587.advancedRocketry.network.PacketBiomeIDChange; +import zmaster587.libVulpes.util.HashedBlockPosition; + +import static uk.bobbytables.jeidsi.JEIDsI.LOGGER; + +@Mixin(PacketBiomeIDChange.class) +public class MixinPacketBiomeIDChange { + @Shadow + Chunk chunk; + @Shadow + int worldId, xPos, zPos; + @Shadow + HashedBlockPosition pos; + + int[] intArray; + + @Inject(method = "()V", at = @At("RETURN")) + public void onConstructed(CallbackInfo ci) { + intArray = new int[256]; + } + + /** + * @author sk2048 + */ + @Overwrite(remap = false) + public void write(ByteBuf out) { + out.writeInt(worldId); + out.writeInt(chunk.x); + out.writeInt(chunk.z); + out.writeInt(pos.x); + out.writeShort(pos.y); + out.writeInt(pos.z); + + for (int biomeId : ((INewChunk) chunk).getIntBiomeArray()) { + out.writeInt(biomeId); + } + } + + /** + * @author sk2048 + */ + @Overwrite(remap = false) + public void readClient(ByteBuf in) { + worldId = in.readInt(); + xPos = in.readInt(); + zPos = in.readInt(); + + pos.x = in.readInt(); + pos.y = in.readShort(); + pos.z = in.readInt(); + + for (int i = 0; i < 256; i++) { + int biomeId = in.readInt(); + intArray[i] = biomeId; + } + } + + + /** + * @author sk2048 + */ + @Overwrite(remap = false) + public void executeClient(EntityPlayer thePlayer) { + if (thePlayer.world.provider.getDimension() == worldId) { + chunk = thePlayer.world.getChunk(xPos, zPos); + if (chunk.isLoaded()) { + ((INewChunk) chunk).setIntBiomeArray(intArray); + chunk.markDirty(); + thePlayer.world.markBlockRangeForRenderUpdate(pos.getBlockPos(), pos.getBlockPos()); + + if (Minecraft.getMinecraft().gameSettings.particleSetting < 2) + AdvancedRocketry.proxy.spawnParticle("smallLazer", thePlayer.world, pos.x, pos.y, pos.z, 0, 0, 0); + } + } + } +} diff --git a/src/main/java/uk/bobbytables/jeidsi/compat/bookshelf/mixins/MixinWorldUtils.java b/src/main/java/uk/bobbytables/jeidsi/core/compat/bookshelf/mixins/MixinWorldUtils.java similarity index 94% rename from src/main/java/uk/bobbytables/jeidsi/compat/bookshelf/mixins/MixinWorldUtils.java rename to src/main/java/uk/bobbytables/jeidsi/core/compat/bookshelf/mixins/MixinWorldUtils.java index 0a550c0..4c4653c 100644 --- a/src/main/java/uk/bobbytables/jeidsi/compat/bookshelf/mixins/MixinWorldUtils.java +++ b/src/main/java/uk/bobbytables/jeidsi/core/compat/bookshelf/mixins/MixinWorldUtils.java @@ -1,4 +1,4 @@ -package uk.bobbytables.jeidsi.compat.bookshelf.mixins; +package uk.bobbytables.jeidsi.core.compat.bookshelf.mixins; import net.darkhax.bookshelf.lib.Constants; import net.darkhax.bookshelf.util.WorldUtils; diff --git a/src/main/java/uk/bobbytables/jeidsi/core/compat/creepingnether/CreepingNetherPlugin.java b/src/main/java/uk/bobbytables/jeidsi/core/compat/creepingnether/CreepingNetherPlugin.java new file mode 100644 index 0000000..7b4ca87 --- /dev/null +++ b/src/main/java/uk/bobbytables/jeidsi/core/compat/creepingnether/CreepingNetherPlugin.java @@ -0,0 +1,58 @@ +package uk.bobbytables.jeidsi.core.compat.creepingnether; + +import net.minecraftforge.fml.common.Loader; +import net.minecraftforge.fml.common.ModContainer; +import org.spongepowered.asm.lib.tree.ClassNode; +import org.spongepowered.asm.mixin.extensibility.IMixinConfigPlugin; +import org.spongepowered.asm.mixin.extensibility.IMixinInfo; +import uk.bobbytables.jeidsi.core.JEIDsILoadingPlugin; + +import java.util.List; +import java.util.Set; + +public class CreepingNetherPlugin implements IMixinConfigPlugin { + @Override + public void onLoad(String s) { + + } + + @Override + public String getRefMapperConfig() { + return null; + } + + @Override + public boolean shouldApplyMixin(String s, String s1) { + JEIDsILoadingPlugin.LOGGER.info("Testing " + s1); + for (ModContainer mod : Loader.instance().getModList()) { + if (mod.getModId().equals("creepingnether")) { + String[] modVersion = mod.getVersion().split("[.]"); + if (Integer.parseInt(modVersion[0]) >= 2 && Integer.parseInt(modVersion[1]) >= 2) { + JEIDsILoadingPlugin.LOGGER.info("Creeping Nether at v2.2.x, applying mixins"); + return true; + } + } + } + return false; + } + + @Override + public void acceptTargets(Set set, Set set1) { + + } + + @Override + public List getMixins() { + return null; + } + + @Override + public void preApply(String s, ClassNode classNode, String s1, IMixinInfo iMixinInfo) { + + } + + @Override + public void postApply(String s, ClassNode classNode, String s1, IMixinInfo iMixinInfo) { + + } +} diff --git a/src/main/java/uk/bobbytables/jeidsi/core/compat/creepingnether/mixins/MixinCorruptorAbstract.java b/src/main/java/uk/bobbytables/jeidsi/core/compat/creepingnether/mixins/MixinCorruptorAbstract.java new file mode 100644 index 0000000..bed741f --- /dev/null +++ b/src/main/java/uk/bobbytables/jeidsi/core/compat/creepingnether/mixins/MixinCorruptorAbstract.java @@ -0,0 +1,39 @@ +package uk.bobbytables.jeidsi.core.compat.creepingnether.mixins; + +import com.cutievirus.creepingnether.Ref; +import com.cutievirus.creepingnether.entity.CorruptorAbstract; +import net.minecraft.init.Biomes; +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.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Overwrite; +import org.spongepowered.asm.mixin.Shadow; +import uk.bobbytables.jeidsi.network.JEIDsIPacketHandler; +import uk.bobbytables.jeidsi.network.client.BiomeChangeMessage; + +@Mixin(CorruptorAbstract.class) +public abstract class MixinCorruptorAbstract { + @Shadow public abstract Biome getBiome(); + + /*** + * @author sk2048 + */ + @Overwrite(remap = false) + public void corruptBiome(World world, BlockPos pos) { + if (!world.isBlockLoaded(pos)) return; + Biome oldBiome = world.getBiome(pos); + if (oldBiome == this.getBiome() || oldBiome != Biomes.HELL && this.getBiome() != Ref.biomeCreepingNether) return; + Chunk chunk = world.getChunk(pos); + ((INewChunk) chunk).getIntBiomeArray()[(pos.getZ() & 15) << 4 | pos.getX() & 15] = Biome.getIdForBiome(this.getBiome()); + if (!world.isRemote) { + JEIDsIPacketHandler.INSTANCE.sendToAllAround( + new BiomeChangeMessage(pos.getX(), pos.getZ(), Biome.getIdForBiome(this.getBiome())), + new NetworkRegistry.TargetPoint(world.provider.getDimension(), pos.getX(), 128.0D, pos.getZ(), 128.0D) + ); + } + } +} diff --git a/src/main/java/uk/bobbytables/jeidsi/compat/cyclopscore/mixins/MixinWorldHelpers.java b/src/main/java/uk/bobbytables/jeidsi/core/compat/cyclopscore/mixins/MixinWorldHelpers.java similarity index 95% rename from src/main/java/uk/bobbytables/jeidsi/compat/cyclopscore/mixins/MixinWorldHelpers.java rename to src/main/java/uk/bobbytables/jeidsi/core/compat/cyclopscore/mixins/MixinWorldHelpers.java index 2b1bf14..2f85807 100644 --- a/src/main/java/uk/bobbytables/jeidsi/compat/cyclopscore/mixins/MixinWorldHelpers.java +++ b/src/main/java/uk/bobbytables/jeidsi/core/compat/cyclopscore/mixins/MixinWorldHelpers.java @@ -1,4 +1,4 @@ -package uk.bobbytables.jeidsi.compat.cyclopscore.mixins; +package uk.bobbytables.jeidsi.core.compat.cyclopscore.mixins; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; diff --git a/src/main/java/uk/bobbytables/jeidsi/compat/extrautils2/mixins/MixinBiomeManip.java b/src/main/java/uk/bobbytables/jeidsi/core/compat/extrautils2/mixins/MixinBiomeManip.java similarity index 95% rename from src/main/java/uk/bobbytables/jeidsi/compat/extrautils2/mixins/MixinBiomeManip.java rename to src/main/java/uk/bobbytables/jeidsi/core/compat/extrautils2/mixins/MixinBiomeManip.java index 67181e3..be8c655 100644 --- a/src/main/java/uk/bobbytables/jeidsi/compat/extrautils2/mixins/MixinBiomeManip.java +++ b/src/main/java/uk/bobbytables/jeidsi/core/compat/extrautils2/mixins/MixinBiomeManip.java @@ -1,4 +1,4 @@ -package uk.bobbytables.jeidsi.compat.extrautils2.mixins; +package uk.bobbytables.jeidsi.core.compat.extrautils2.mixins; import com.rwtema.extrautils2.biome.BiomeManip; import net.minecraft.util.math.BlockPos; diff --git a/src/main/java/uk/bobbytables/jeidsi/core/compat/hammercore/mixins/MixinWorldLocation.java b/src/main/java/uk/bobbytables/jeidsi/core/compat/hammercore/mixins/MixinWorldLocation.java new file mode 100644 index 0000000..6679e30 --- /dev/null +++ b/src/main/java/uk/bobbytables/jeidsi/core/compat/hammercore/mixins/MixinWorldLocation.java @@ -0,0 +1,37 @@ +package uk.bobbytables.jeidsi.core.compat.hammercore.mixins; + +import com.zeitheron.hammercore.utils.WorldLocation; +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.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Overwrite; +import org.spongepowered.asm.mixin.Shadow; +import uk.bobbytables.jeidsi.network.JEIDsIPacketHandler; +import uk.bobbytables.jeidsi.network.client.BiomeChangeMessage; + +@Mixin(WorldLocation.class) +public class MixinWorldLocation { + @Shadow private World world; + @Shadow private BlockPos pos; + + /** + * + * @author sk2048 + */ + @Overwrite(remap = false) + public void setBiome(Biome biome) { + Chunk chunk = this.world.getChunk(this.pos); + ((INewChunk) chunk).getIntBiomeArray()[(this.pos.getZ() & 0xF) << 4 | this.pos.getX() & 0xF] = Biome.getIdForBiome(biome); + chunk.markDirty(); + if (!this.world.isRemote) { + JEIDsIPacketHandler.INSTANCE.sendToAllAround( + new BiomeChangeMessage(this.pos.getX(), this.pos.getZ(), Biome.getIdForBiome(biome)), + new NetworkRegistry.TargetPoint(this.world.provider.getDimension(), this.pos.getX(), 128.0D, this.pos.getZ(), 128.0D) + ); + } + } +} diff --git a/src/main/java/uk/bobbytables/jeidsi/compat/thebetweenlands/mixins/MixinBlockSpreadingDeath.java b/src/main/java/uk/bobbytables/jeidsi/core/compat/thebetweenlands/mixins/MixinBlockSpreadingDeath.java similarity index 93% rename from src/main/java/uk/bobbytables/jeidsi/compat/thebetweenlands/mixins/MixinBlockSpreadingDeath.java rename to src/main/java/uk/bobbytables/jeidsi/core/compat/thebetweenlands/mixins/MixinBlockSpreadingDeath.java index 87b0bb8..e04f0f9 100644 --- a/src/main/java/uk/bobbytables/jeidsi/compat/thebetweenlands/mixins/MixinBlockSpreadingDeath.java +++ b/src/main/java/uk/bobbytables/jeidsi/core/compat/thebetweenlands/mixins/MixinBlockSpreadingDeath.java @@ -1,4 +1,4 @@ -package uk.bobbytables.jeidsi.compat.thebetweenlands.mixins; +package uk.bobbytables.jeidsi.core.compat.thebetweenlands.mixins; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; diff --git a/src/main/java/uk/bobbytables/jeidsi/compat/thebetweenlands/mixins/MixinGenLayerVoronoiZoomInstanced.java b/src/main/java/uk/bobbytables/jeidsi/core/compat/thebetweenlands/mixins/MixinGenLayerVoronoiZoomInstanced.java similarity index 88% rename from src/main/java/uk/bobbytables/jeidsi/compat/thebetweenlands/mixins/MixinGenLayerVoronoiZoomInstanced.java rename to src/main/java/uk/bobbytables/jeidsi/core/compat/thebetweenlands/mixins/MixinGenLayerVoronoiZoomInstanced.java index 40ad3b1..4457472 100644 --- a/src/main/java/uk/bobbytables/jeidsi/compat/thebetweenlands/mixins/MixinGenLayerVoronoiZoomInstanced.java +++ b/src/main/java/uk/bobbytables/jeidsi/core/compat/thebetweenlands/mixins/MixinGenLayerVoronoiZoomInstanced.java @@ -1,4 +1,4 @@ -package uk.bobbytables.jeidsi.compat.thebetweenlands.mixins; +package uk.bobbytables.jeidsi.core.compat.thebetweenlands.mixins; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.Constant; diff --git a/src/main/java/uk/bobbytables/jeidsi/compat/tofucraft/mixins/MixinGenLayerRiverMix.java b/src/main/java/uk/bobbytables/jeidsi/core/compat/tofucraft/mixins/MixinGenLayerRiverMix.java similarity index 88% rename from src/main/java/uk/bobbytables/jeidsi/compat/tofucraft/mixins/MixinGenLayerRiverMix.java rename to src/main/java/uk/bobbytables/jeidsi/core/compat/tofucraft/mixins/MixinGenLayerRiverMix.java index 5a1fe86..9d61860 100644 --- a/src/main/java/uk/bobbytables/jeidsi/compat/tofucraft/mixins/MixinGenLayerRiverMix.java +++ b/src/main/java/uk/bobbytables/jeidsi/core/compat/tofucraft/mixins/MixinGenLayerRiverMix.java @@ -1,4 +1,4 @@ -package uk.bobbytables.jeidsi.compat.tofucraft.mixins; +package uk.bobbytables.jeidsi.core.compat.tofucraft.mixins; import cn.mcmod.tofucraft.world.gen.layer.GenLayerRiverMix; import org.spongepowered.asm.mixin.Mixin; diff --git a/src/main/java/uk/bobbytables/jeidsi/compat/tofucraft/mixins/MixinGenLayerTofuVoronoiZoom.java b/src/main/java/uk/bobbytables/jeidsi/core/compat/tofucraft/mixins/MixinGenLayerTofuVoronoiZoom.java similarity index 88% rename from src/main/java/uk/bobbytables/jeidsi/compat/tofucraft/mixins/MixinGenLayerTofuVoronoiZoom.java rename to src/main/java/uk/bobbytables/jeidsi/core/compat/tofucraft/mixins/MixinGenLayerTofuVoronoiZoom.java index 3333b2b..baf362d 100644 --- a/src/main/java/uk/bobbytables/jeidsi/compat/tofucraft/mixins/MixinGenLayerTofuVoronoiZoom.java +++ b/src/main/java/uk/bobbytables/jeidsi/core/compat/tofucraft/mixins/MixinGenLayerTofuVoronoiZoom.java @@ -1,4 +1,4 @@ -package uk.bobbytables.jeidsi.compat.tofucraft.mixins; +package uk.bobbytables.jeidsi.core.compat.tofucraft.mixins; import cn.mcmod.tofucraft.world.gen.layer.GenLayerTofuVoronoiZoom; import org.spongepowered.asm.mixin.Mixin; diff --git a/src/main/java/uk/bobbytables/jeidsi/compat/tropicraft/mixins/MixinGenLayerTropiVoronoiZoom.java b/src/main/java/uk/bobbytables/jeidsi/core/compat/tropicraft/mixins/MixinGenLayerTropiVoronoiZoom.java similarity index 89% rename from src/main/java/uk/bobbytables/jeidsi/compat/tropicraft/mixins/MixinGenLayerTropiVoronoiZoom.java rename to src/main/java/uk/bobbytables/jeidsi/core/compat/tropicraft/mixins/MixinGenLayerTropiVoronoiZoom.java index 78ee306..ea5c231 100644 --- a/src/main/java/uk/bobbytables/jeidsi/compat/tropicraft/mixins/MixinGenLayerTropiVoronoiZoom.java +++ b/src/main/java/uk/bobbytables/jeidsi/core/compat/tropicraft/mixins/MixinGenLayerTropiVoronoiZoom.java @@ -1,4 +1,4 @@ -package uk.bobbytables.jeidsi.compat.tropicraft.mixins; +package uk.bobbytables.jeidsi.core.compat.tropicraft.mixins; import net.tropicraft.core.common.worldgen.genlayer.GenLayerTropiVoronoiZoom; import org.spongepowered.asm.mixin.Mixin; diff --git a/src/main/java/uk/bobbytables/jeidsi/compat/twilightforest/TwilightForestPlugin.java b/src/main/java/uk/bobbytables/jeidsi/core/compat/twilightforest/TwilightForestPlugin.java similarity index 88% rename from src/main/java/uk/bobbytables/jeidsi/compat/twilightforest/TwilightForestPlugin.java rename to src/main/java/uk/bobbytables/jeidsi/core/compat/twilightforest/TwilightForestPlugin.java index 5455ea5..0f1c9e6 100644 --- a/src/main/java/uk/bobbytables/jeidsi/compat/twilightforest/TwilightForestPlugin.java +++ b/src/main/java/uk/bobbytables/jeidsi/core/compat/twilightforest/TwilightForestPlugin.java @@ -1,11 +1,11 @@ -package uk.bobbytables.jeidsi.compat.twilightforest; +package uk.bobbytables.jeidsi.core.compat.twilightforest; import net.minecraftforge.fml.common.Loader; import net.minecraftforge.fml.common.ModContainer; import org.spongepowered.asm.lib.tree.ClassNode; import org.spongepowered.asm.mixin.extensibility.IMixinConfigPlugin; import org.spongepowered.asm.mixin.extensibility.IMixinInfo; -import uk.bobbytables.jeidsi.JEIDsILoadingPlugin; +import uk.bobbytables.jeidsi.core.JEIDsILoadingPlugin; import java.util.List; import java.util.Set; @@ -26,7 +26,7 @@ public boolean shouldApplyMixin(String s, String s1) { JEIDsILoadingPlugin.LOGGER.info("Testing " + s1); for (ModContainer mod : Loader.instance().getModList()) { if (mod.getModId().equals("twilightforest")) { - if (s1.equals("uk.bobbytables.jeidsi.compat.twilightforest.mixins.MixinBlockTFMagicLogSpecialUpdate")) { + if (s1.equals("uk.bobbytables.jeidsi.core.compat.twilightforest.mixins.MixinBlockTFMagicLogSpecialUpdate")) { if (Integer.parseInt(mod.getVersion().split("[.]")[2]) > 689) { JEIDsILoadingPlugin.LOGGER.info("Applying TF Network Mixin"); return true; diff --git a/src/main/java/uk/bobbytables/jeidsi/compat/twilightforest/mixins/MixinBlockTFMagicLogSpecial.java b/src/main/java/uk/bobbytables/jeidsi/core/compat/twilightforest/mixins/MixinBlockTFMagicLogSpecial.java similarity index 93% rename from src/main/java/uk/bobbytables/jeidsi/compat/twilightforest/mixins/MixinBlockTFMagicLogSpecial.java rename to src/main/java/uk/bobbytables/jeidsi/core/compat/twilightforest/mixins/MixinBlockTFMagicLogSpecial.java index 0531579..13984d0 100644 --- a/src/main/java/uk/bobbytables/jeidsi/compat/twilightforest/mixins/MixinBlockTFMagicLogSpecial.java +++ b/src/main/java/uk/bobbytables/jeidsi/core/compat/twilightforest/mixins/MixinBlockTFMagicLogSpecial.java @@ -1,4 +1,4 @@ -package uk.bobbytables.jeidsi.compat.twilightforest.mixins; +package uk.bobbytables.jeidsi.core.compat.twilightforest.mixins; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; @@ -12,7 +12,6 @@ import org.spongepowered.asm.mixin.injection.callback.LocalCapture; import twilightforest.biomes.TFBiomes; import twilightforest.block.BlockTFMagicLogSpecial; -import uk.bobbytables.jeidsi.JEIDsILoadingPlugin; import java.util.Random; diff --git a/src/main/java/uk/bobbytables/jeidsi/compat/twilightforest/mixins/MixinBlockTFMagicLogSpecialUpdate.java b/src/main/java/uk/bobbytables/jeidsi/core/compat/twilightforest/mixins/MixinBlockTFMagicLogSpecialUpdate.java similarity index 95% rename from src/main/java/uk/bobbytables/jeidsi/compat/twilightforest/mixins/MixinBlockTFMagicLogSpecialUpdate.java rename to src/main/java/uk/bobbytables/jeidsi/core/compat/twilightforest/mixins/MixinBlockTFMagicLogSpecialUpdate.java index a9dcc00..d1c4477 100644 --- a/src/main/java/uk/bobbytables/jeidsi/compat/twilightforest/mixins/MixinBlockTFMagicLogSpecialUpdate.java +++ b/src/main/java/uk/bobbytables/jeidsi/core/compat/twilightforest/mixins/MixinBlockTFMagicLogSpecialUpdate.java @@ -1,4 +1,4 @@ -package uk.bobbytables.jeidsi.compat.twilightforest.mixins; +package uk.bobbytables.jeidsi.core.compat.twilightforest.mixins; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; diff --git a/src/main/java/uk/bobbytables/jeidsi/compat/twilightforest/mixins/MixinGenLayerTFRiverMix.java b/src/main/java/uk/bobbytables/jeidsi/core/compat/twilightforest/mixins/MixinGenLayerTFRiverMix.java similarity index 87% rename from src/main/java/uk/bobbytables/jeidsi/compat/twilightforest/mixins/MixinGenLayerTFRiverMix.java rename to src/main/java/uk/bobbytables/jeidsi/core/compat/twilightforest/mixins/MixinGenLayerTFRiverMix.java index 6e9ae93..fad722e 100644 --- a/src/main/java/uk/bobbytables/jeidsi/compat/twilightforest/mixins/MixinGenLayerTFRiverMix.java +++ b/src/main/java/uk/bobbytables/jeidsi/core/compat/twilightforest/mixins/MixinGenLayerTFRiverMix.java @@ -1,4 +1,4 @@ -package uk.bobbytables.jeidsi.compat.twilightforest.mixins; +package uk.bobbytables.jeidsi.core.compat.twilightforest.mixins; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.Constant; diff --git a/src/main/java/uk/bobbytables/jeidsi/core/init/mixins/MixinLoaderEarly.java b/src/main/java/uk/bobbytables/jeidsi/core/init/mixins/MixinLoaderEarly.java new file mode 100644 index 0000000..5ab3e29 --- /dev/null +++ b/src/main/java/uk/bobbytables/jeidsi/core/init/mixins/MixinLoaderEarly.java @@ -0,0 +1,36 @@ +package uk.bobbytables.jeidsi.core.init.mixins; + +import net.minecraftforge.fml.common.Loader; +import org.spongepowered.asm.mixin.*; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import java.util.List; + +/** + * Inject into loadMods BEFORE JEID does, adding our configs to the mixin environment it uses + */ +@Mixin(value = Loader.class, priority = 500) +public class MixinLoaderEarly { + @Inject( + method = "loadMods", + at = @At(value = "INVOKE", target = "Lnet/minecraftforge/fml/common/LoadController;transition(Lnet/minecraftforge/fml/common/LoaderState;Z)V", ordinal = 1), + remap = false + ) + private void beforeModSupportMixins(List injectedModContainers, CallbackInfo ci) { + Mixins.addConfigurations( + "mixins.jeidsi.abyssalcraft.json", + "mixins.jeidsi.advancedrocketry.json", + "mixins.jeidsi.bookshelf.json", + "mixins.jeidsi.creepingnether.json", + "mixins.jeidsi.cyclopscore.json", + "mixins.jeidsi.extrautils2.json", + "mixins.jeidsi.hammercore.json", + "mixins.jeidsi.tofucraft.json", + "mixins.jeidsi.thebetweenlands.json", + "mixins.jeidsi.tropicraft.json", + "mixins.jeidsi.twilightforest.json" + ); + } +} diff --git a/src/main/java/uk/bobbytables/jeidsi/core/init/mixins/MixinLoaderLate.java b/src/main/java/uk/bobbytables/jeidsi/core/init/mixins/MixinLoaderLate.java new file mode 100644 index 0000000..c4e5578 --- /dev/null +++ b/src/main/java/uk/bobbytables/jeidsi/core/init/mixins/MixinLoaderLate.java @@ -0,0 +1,14 @@ +package uk.bobbytables.jeidsi.core.init.mixins; + +import net.minecraftforge.fml.common.Loader; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.Constant; +import org.spongepowered.asm.mixin.injection.ModifyConstant; + +@Mixin(value = Loader.class, priority = 1500) +public class MixinLoaderLate { + @ModifyConstant(method = "handler$beforeConstructingMods$zza000", constant = @Constant(stringValue = "mixins.jeid.modsupport.json"), require = 1, remap = false) + private String getConfig(String oldConfig) { + return "mixins.jeidsi.jeidmodsupport.json"; + } +} diff --git a/src/main/java/uk/bobbytables/jeidsi/init/mixins/MixinLoader.java b/src/main/java/uk/bobbytables/jeidsi/init/mixins/MixinLoader.java deleted file mode 100644 index 5582d27..0000000 --- a/src/main/java/uk/bobbytables/jeidsi/init/mixins/MixinLoader.java +++ /dev/null @@ -1,36 +0,0 @@ -package uk.bobbytables.jeidsi.init.mixins; - -import net.minecraftforge.fml.common.Loader; -import org.spongepowered.asm.mixin.*; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -import java.util.List; - -/** - * Inject into loadMods BEFORE JEID does, adding our configs to the mixin environment it uses - */ -@Mixin(value = Loader.class, priority = 500) -public class MixinLoader { - @Inject( - method = "loadMods", - at = @At(value = "INVOKE", target = "Lnet/minecraftforge/fml/common/LoadController;transition(Lnet/minecraftforge/fml/common/LoaderState;Z)V", ordinal = 1), - remap = false - ) - private void beforeModSupportMixins(List injectedModContainers, CallbackInfo ci) { - // JEID does not apply any of its modsupport mixins when running on a dedicated server. - // This config enables a selection of them - Mixins.addConfiguration("mixins.jeid.server.modsupport.json"); - - // Now add our own configs - Mixins.addConfiguration("mixins.jeidsi.abyssalcraft.json"); - Mixins.addConfiguration("mixins.jeidsi.bookshelf.json"); - Mixins.addConfiguration("mixins.jeidsi.cyclopscore.json"); - Mixins.addConfiguration("mixins.jeidsi.extrautils2.json"); - Mixins.addConfiguration("mixins.jeidsi.tofucraft.json"); - Mixins.addConfiguration("mixins.jeidsi.thebetweenlands.json"); - Mixins.addConfiguration("mixins.jeidsi.tropicraft.json"); - Mixins.addConfiguration("mixins.jeidsi.twilightforest.json"); - } -} diff --git a/src/main/resources/mixins.jeidsi.abyssalcraft.json b/src/main/resources/mixins.jeidsi.abyssalcraft.json index 9a0de74..44fe65a 100644 --- a/src/main/resources/mixins.jeidsi.abyssalcraft.json +++ b/src/main/resources/mixins.jeidsi.abyssalcraft.json @@ -1,5 +1,5 @@ { - "package": "uk.bobbytables.jeidsi.compat.abyssalcraft", + "package": "uk.bobbytables.jeidsi.core.compat.abyssalcraft", "required": true, "refmap": "mixins.jeidsi.refmap.json", "target": "@env(DEFAULT)", @@ -7,8 +7,5 @@ "compatibilityLevel": "JAVA_8", "mixins": [ "mixins.MixinBiomeUtil" - ], - "client": [ - "mixins.MixinCleansingRitualMessage" ] } \ No newline at end of file diff --git a/src/main/resources/mixins.jeidsi.advancedrocketry.json b/src/main/resources/mixins.jeidsi.advancedrocketry.json new file mode 100644 index 0000000..28a55ab --- /dev/null +++ b/src/main/resources/mixins.jeidsi.advancedrocketry.json @@ -0,0 +1,12 @@ +{ + "package": "uk.bobbytables.jeidsi.core.compat.advancedrocketry", + "required": true, + "refmap": "mixins.jeidsi.refmap.json", + "target": "@env(DEFAULT)", + "minVersion": "0.6", + "compatibilityLevel": "JAVA_8", + "mixins": [ + "mixins.MixinBiomeHandler", + "mixins.MixinPacketBiomeIDChange" + ] +} diff --git a/src/main/resources/mixins.jeidsi.bookshelf.json b/src/main/resources/mixins.jeidsi.bookshelf.json index 3169bac..92b837d 100644 --- a/src/main/resources/mixins.jeidsi.bookshelf.json +++ b/src/main/resources/mixins.jeidsi.bookshelf.json @@ -1,5 +1,5 @@ { - "package": "uk.bobbytables.jeidsi.compat.bookshelf", + "package": "uk.bobbytables.jeidsi.core.compat.bookshelf", "required": true, "refmap": "mixins.jeidsi.refmap.json", "target": "@env(DEFAULT)", diff --git a/src/main/resources/mixins.jeidsi.creepingnether.json b/src/main/resources/mixins.jeidsi.creepingnether.json new file mode 100644 index 0000000..035450d --- /dev/null +++ b/src/main/resources/mixins.jeidsi.creepingnether.json @@ -0,0 +1,12 @@ +{ + "package": "uk.bobbytables.jeidsi.core.compat.creepingnether", + "plugin": "uk.bobbytables.jeidsi.core.compat.creepingnether.CreepingNetherPlugin", + "required": true, + "refmap": "mixins.jeidsi.refmap.json", + "target": "@env(DEFAULT)", + "minVersion": "0.6", + "compatibilityLevel": "JAVA_8", + "mixins": [ + "mixins.MixinCorruptorAbstract" + ] +} \ No newline at end of file diff --git a/src/main/resources/mixins.jeidsi.cyclopscore.json b/src/main/resources/mixins.jeidsi.cyclopscore.json index d6b26f7..5e3bd8a 100644 --- a/src/main/resources/mixins.jeidsi.cyclopscore.json +++ b/src/main/resources/mixins.jeidsi.cyclopscore.json @@ -1,5 +1,5 @@ { - "package": "uk.bobbytables.jeidsi.compat.cyclopscore", + "package": "uk.bobbytables.jeidsi.core.compat.cyclopscore", "required": true, "refmap": "mixins.jeidsi.refmap.json", "target": "@env(DEFAULT)", diff --git a/src/main/resources/mixins.jeidsi.extrautils2.json b/src/main/resources/mixins.jeidsi.extrautils2.json index 60ea5b7..e1b4fbc 100644 --- a/src/main/resources/mixins.jeidsi.extrautils2.json +++ b/src/main/resources/mixins.jeidsi.extrautils2.json @@ -1,5 +1,5 @@ { - "package": "uk.bobbytables.jeidsi.compat.extrautils2", + "package": "uk.bobbytables.jeidsi.core.compat.extrautils2", "required": true, "refmap": "mixins.jeidsi.refmap.json", "target": "@env(DEFAULT)", diff --git a/src/main/resources/mixins.jeidsi.hammercore.json b/src/main/resources/mixins.jeidsi.hammercore.json new file mode 100644 index 0000000..76a793e --- /dev/null +++ b/src/main/resources/mixins.jeidsi.hammercore.json @@ -0,0 +1,11 @@ +{ + "package": "uk.bobbytables.jeidsi.core.compat.hammercore", + "required": true, + "refmap": "mixins.jeidsi.refmap.json", + "target": "@env(DEFAULT)", + "minVersion": "0.6", + "compatibilityLevel": "JAVA_8", + "mixins": [ + "mixins.MixinWorldLocation" + ] +} diff --git a/src/main/resources/mixins.jeidsi.init.json b/src/main/resources/mixins.jeidsi.init.json index 811bc4e..6ca5f7c 100644 --- a/src/main/resources/mixins.jeidsi.init.json +++ b/src/main/resources/mixins.jeidsi.init.json @@ -1,12 +1,13 @@ { - "package": "uk.bobbytables.jeidsi.init.mixins", + "package": "uk.bobbytables.jeidsi.core.init", "required": true, "refmap": "mixins.jeidsi.refmap.json", "target": "@env(INIT)", "minVersion": "0.6", "compatibilityLevel": "JAVA_8", "mixins": [ - "MixinLoader" + "mixins.MixinLoaderEarly", + "mixins.MixinLoaderLate" ], "injectors": { "maxShiftBy": 10 diff --git a/src/main/resources/mixins.jeid.server.modsupport.json b/src/main/resources/mixins.jeidsi.jeidmodsupport.json similarity index 81% rename from src/main/resources/mixins.jeid.server.modsupport.json rename to src/main/resources/mixins.jeidsi.jeidmodsupport.json index 9aa7983..4b7c143 100644 --- a/src/main/resources/mixins.jeid.server.modsupport.json +++ b/src/main/resources/mixins.jeidsi.jeidmodsupport.json @@ -1,13 +1,13 @@ { "package": "org.dimdev.jeid.mixin.modsupport", "required": true, + "plugin": "uk.bobbytables.jeidsi.core.compat.JeidModSupportPlugin", "refmap": "mixins.jeidsi.refmap.json", "target": "@env(DEFAULT)", "minVersion": "0.6", "compatibilityLevel": "JAVA_8", - "server": [ + "mixins": [ "MixinBaseBlock", - "MixinBiomeHandler", "MixinBlockTFMagicLogSpecial", "MixinBOPCommand", "MixinDimensionManager", diff --git a/src/main/resources/mixins.jeidsi.thebetweenlands.json b/src/main/resources/mixins.jeidsi.thebetweenlands.json index 302bba5..53ad585 100644 --- a/src/main/resources/mixins.jeidsi.thebetweenlands.json +++ b/src/main/resources/mixins.jeidsi.thebetweenlands.json @@ -1,5 +1,5 @@ { - "package": "uk.bobbytables.jeidsi.compat.thebetweenlands", + "package": "uk.bobbytables.jeidsi.core.compat.thebetweenlands", "required": true, "refmap": "mixins.jeidsi.refmap.json", "target": "@env(DEFAULT)", diff --git a/src/main/resources/mixins.jeidsi.tofucraft.json b/src/main/resources/mixins.jeidsi.tofucraft.json index 946b9f9..aa10e78 100644 --- a/src/main/resources/mixins.jeidsi.tofucraft.json +++ b/src/main/resources/mixins.jeidsi.tofucraft.json @@ -1,5 +1,5 @@ { - "package": "uk.bobbytables.jeidsi.compat.tofucraft", + "package": "uk.bobbytables.jeidsi.core.compat.tofucraft", "required": true, "refmap": "mixins.jeidsi.refmap.json", "target": "@env(DEFAULT)", diff --git a/src/main/resources/mixins.jeidsi.tropicraft.json b/src/main/resources/mixins.jeidsi.tropicraft.json index d963069..2b7b327 100644 --- a/src/main/resources/mixins.jeidsi.tropicraft.json +++ b/src/main/resources/mixins.jeidsi.tropicraft.json @@ -1,5 +1,5 @@ { - "package": "uk.bobbytables.jeidsi.compat.tropicraft", + "package": "uk.bobbytables.jeidsi.core.compat.tropicraft", "required": true, "refmap": "mixins.jeidsi.refmap.json", "target": "@env(DEFAULT)", diff --git a/src/main/resources/mixins.jeidsi.twilightforest.json b/src/main/resources/mixins.jeidsi.twilightforest.json index dab8d8c..3684b4a 100644 --- a/src/main/resources/mixins.jeidsi.twilightforest.json +++ b/src/main/resources/mixins.jeidsi.twilightforest.json @@ -1,6 +1,6 @@ { - "package": "uk.bobbytables.jeidsi.compat.twilightforest", - "plugin": "uk.bobbytables.jeidsi.compat.twilightforest.TwilightForestPlugin", + "package": "uk.bobbytables.jeidsi.core.compat.twilightforest", + "plugin": "uk.bobbytables.jeidsi.core.compat.twilightforest.TwilightForestPlugin", "required": true, "refmap": "mixins.jeidsi.refmap.json", "target": "@env(DEFAULT)",