Skip to content
This repository has been archived by the owner on Aug 30, 2019. It is now read-only.

Commit

Permalink
v1.3.0 (#2)
Browse files Browse the repository at this point in the history
* 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
  • Loading branch information
sam-kirby authored Jul 8, 2019
1 parent 3b5b57d commit 2fa1abc
Show file tree
Hide file tree
Showing 41 changed files with 473 additions and 108 deletions.
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
10 changes: 7 additions & 3 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -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"

Expand All @@ -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'
]
Expand All @@ -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 {
Expand All @@ -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"
)
}
Expand Down
10 changes: 10 additions & 0 deletions src/main/java/uk/bobbytables/jeidsi/JEIDsI.java
Original file line number Diff line number Diff line change
@@ -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";
Expand All @@ -18,4 +24,8 @@ public class JEIDsI {
public void preInit(FMLPreInitializationEvent event) {
JEIDsIPacketHandler.init();
}

@Mod.EventHandler
public void serverStarted(FMLServerStartedEvent event) {
}
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package uk.bobbytables.jeidsi;
package uk.bobbytables.jeidsi.core;

import net.minecraftforge.common.ForgeVersion;
import net.minecraftforge.fml.relauncher.IFMLLoadingPlugin;
Expand All @@ -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
Expand Down
Original file line number Diff line number Diff line change
@@ -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<String> set, Set<String> set1) {

}

@Override
public List<String> 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) {

}
}
Original file line number Diff line number Diff line change
@@ -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;
Expand Down
Original file line number Diff line number Diff line change
@@ -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;
Expand Down
Original file line number Diff line number Diff line change
@@ -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);
}
}
Original file line number Diff line number Diff line change
@@ -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 = "<init>()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);
}
}
}
}
Original file line number Diff line number Diff line change
@@ -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;
Expand Down
Loading

0 comments on commit 2fa1abc

Please sign in to comment.