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

Commit 2fa1abc

Browse files
authored
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
1 parent 3b5b57d commit 2fa1abc

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+473
-108
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@ This mod exists to improve the compatibility between JustEnoughIDs and other mod
66
* Bookshelf
77
* CyclopsCore
88
* Extra Utilities 2
9+
* HammerCore
910
* The Betweenlands
11+
* The Creeping Nether
1012
* TofuCraft Reload
1113
* Tropicraft
1214
* Twilight Forest

build.gradle

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ apply plugin: 'org.spongepowered.mixin'
1414

1515
def buildnumber = System.getenv('TRAVIS_BUILD_NUMBER')
1616
def suffix = buildnumber != null ? ".$buildnumber" : "-SNAPSHOT"
17-
version = "1.2.1$suffix"
17+
version = "1.3.0$suffix"
1818
group = "uk.bobbytables.jeidsi" // http://maven.apache.org/guides/mini/guide-naming-conventions.html
1919
archivesBaseName = "jeidsi"
2020

@@ -33,7 +33,7 @@ minecraft {
3333
replace "@VERSION@", project.version
3434

3535
def args = [
36-
'-Dfml.coreMods.load=uk.bobbytables.jeidsi.JEIDsILoadingPlugin',
36+
'-Dfml.coreMods.load=uk.bobbytables.jeidsi.core.JEIDsILoadingPlugin',
3737
'-Dmixin.hotSwap=true',
3838
'-Dmixin.checks.interfaces=true'
3939
]
@@ -59,12 +59,16 @@ dependencies {
5959

6060
compileOnly '2691:339:AbyssalCraft-1.12.2-1.9.6@jar'
6161
compileOnly '2683:823:Bookshelf-1.12.2-2.3.577@jar'
62+
compileOnly '2655:432:Creeping+Nether-2.2.2@jar'
6263
compileOnly '2691:93:CyclopsCore-1.12.2-1.1.1@jar'
6364
compileOnly '2678:374:extrautils2-1.12-1.9.9@jar'
6465
compileOnly '2683:667:TheBetweenlands-3.4.6-universal@jar'
6566
compileOnly '2692:524:TofuCraftReload-0.0.2.1@jar'
6667
compileOnly '2636:492:tropicraft-MC1.12.2-7.1.8.105@jar'
6768
compileOnly "2686:476:twilightforest-1.12.2-3.9.888-universal@jar"
69+
compileOnly "2710:204:HammerCore-1.12.2-2.0.4.7@jar"
70+
compileOnly "2733:984:AdvancedRocketry-1.12.2-1.6.0-151-universal@jar"
71+
compileOnly "2731:147:LibVulpes-1.12.2-0.4.1-59-universal@jar"
6872
}
6973

7074
mixin {
@@ -75,7 +79,7 @@ jar {
7579
manifest.attributes(
7680
"FMLCorePluginContainsFMLMod": "true",
7781
"TweakClass": "org.spongepowered.asm.launch.MixinTweaker",
78-
"FMLCorePlugin": "uk.bobbytables.jeidsi.JEIDsILoadingPlugin",
82+
"FMLCorePlugin": "uk.bobbytables.jeidsi.core.JEIDsILoadingPlugin",
7983
"ForceLoadAsMod": "true"
8084
)
8185
}

src/main/java/uk/bobbytables/jeidsi/JEIDsI.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,17 @@
11
package uk.bobbytables.jeidsi;
22

3+
import net.minecraft.world.biome.Biome;
4+
import net.minecraftforge.fml.common.Loader;
35
import net.minecraftforge.fml.common.Mod;
46
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
7+
import net.minecraftforge.fml.common.event.FMLServerStartedEvent;
8+
import net.minecraftforge.fml.common.registry.GameRegistry;
59
import org.apache.logging.log4j.LogManager;
610
import org.apache.logging.log4j.Logger;
711
import uk.bobbytables.jeidsi.network.JEIDsIPacketHandler;
812

13+
import java.lang.reflect.Method;
14+
915
@Mod(modid = JEIDsI.MODID, name = JEIDsI.NAME, version = JEIDsI.VERSION, dependencies = "required-after:jeid")
1016
public class JEIDsI {
1117
public static final String MODID = "jeidsi";
@@ -18,4 +24,8 @@ public class JEIDsI {
1824
public void preInit(FMLPreInitializationEvent event) {
1925
JEIDsIPacketHandler.init();
2026
}
27+
28+
@Mod.EventHandler
29+
public void serverStarted(FMLServerStartedEvent event) {
30+
}
2131
}

src/main/java/uk/bobbytables/jeidsi/compat/abyssalcraft/mixins/MixinCleansingRitualMessage.java

Lines changed: 0 additions & 33 deletions
This file was deleted.

src/main/java/uk/bobbytables/jeidsi/JEIDsILoadingPlugin.java renamed to src/main/java/uk/bobbytables/jeidsi/core/JEIDsILoadingPlugin.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package uk.bobbytables.jeidsi;
1+
package uk.bobbytables.jeidsi.core;
22

33
import net.minecraftforge.common.ForgeVersion;
44
import net.minecraftforge.fml.relauncher.IFMLLoadingPlugin;
@@ -13,12 +13,12 @@
1313
@IFMLLoadingPlugin.MCVersion(ForgeVersion.mcVersion)
1414
@IFMLLoadingPlugin.SortingIndex(-8000)
1515
public class JEIDsILoadingPlugin implements IFMLLoadingPlugin {
16-
public static final Logger LOGGER = LogManager.getLogger("jeidsi");
16+
public static final Logger LOGGER = LogManager.getLogger("jeidsi_core");
1717

1818
public JEIDsILoadingPlugin() {
1919
MixinBootstrap.init();
20-
Mixins.addConfiguration("mixins.jeidsi.init.json");
2120
Mixins.addConfiguration("mixins.jeid.server.init.json"); // We NEED JEID's loader plugin on the server too
21+
Mixins.addConfiguration("mixins.jeidsi.init.json");
2222
}
2323

2424
@Override
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
package uk.bobbytables.jeidsi.core.compat;
2+
3+
import net.minecraftforge.fml.common.Loader;
4+
import net.minecraftforge.fml.common.ModContainer;
5+
import org.spongepowered.asm.lib.tree.ClassNode;
6+
import org.spongepowered.asm.mixin.extensibility.IMixinConfigPlugin;
7+
import org.spongepowered.asm.mixin.extensibility.IMixinInfo;
8+
import uk.bobbytables.jeidsi.core.JEIDsILoadingPlugin;
9+
10+
import java.util.List;
11+
import java.util.Set;
12+
13+
public class JeidModSupportPlugin implements IMixinConfigPlugin {
14+
@Override
15+
public void onLoad(String s) {
16+
17+
}
18+
19+
@Override
20+
public String getRefMapperConfig() {
21+
return null;
22+
}
23+
24+
@Override
25+
public boolean shouldApplyMixin(String s, String s1) {
26+
if (s.equals("com.cutievirus.creepingnether.entity.EntityPortal")) {
27+
JEIDsILoadingPlugin.LOGGER.info("Testing " + s1);
28+
for (ModContainer mod : Loader.instance().getModList()) {
29+
if (mod.getModId().equals("creepingnether")) {
30+
String[] modVersion = mod.getVersion().split("[.]");
31+
if (Integer.parseInt(modVersion[0]) >= 2 && Integer.parseInt(modVersion[1]) >= 2) {
32+
JEIDsILoadingPlugin.LOGGER.info("Creeping Nether at v2.2.x, JEID mixin skipped");
33+
return false;
34+
}
35+
}
36+
}
37+
}
38+
return true;
39+
}
40+
41+
@Override
42+
public void acceptTargets(Set<String> set, Set<String> set1) {
43+
44+
}
45+
46+
@Override
47+
public List<String> getMixins() {
48+
return null;
49+
}
50+
51+
@Override
52+
public void preApply(String s, ClassNode classNode, String s1, IMixinInfo iMixinInfo) {
53+
54+
}
55+
56+
@Override
57+
public void postApply(String s, ClassNode classNode, String s1, IMixinInfo iMixinInfo) {
58+
59+
}
60+
}

src/main/java/uk/bobbytables/jeidsi/compat/abyssalcraft/AbyssalCraftPlugin.java renamed to src/main/java/uk/bobbytables/jeidsi/core/compat/abyssalcraft/AbyssalCraftPlugin.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package uk.bobbytables.jeidsi.compat.abyssalcraft;
1+
package uk.bobbytables.jeidsi.core.compat.abyssalcraft;
22

33
import net.minecraftforge.fml.common.Loader;
44
import net.minecraftforge.fml.common.ModContainer;

src/main/java/uk/bobbytables/jeidsi/compat/abyssalcraft/mixins/MixinBiomeUtil.java renamed to src/main/java/uk/bobbytables/jeidsi/core/compat/abyssalcraft/mixins/MixinBiomeUtil.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package uk.bobbytables.jeidsi.compat.abyssalcraft.mixins;
1+
package uk.bobbytables.jeidsi.core.compat.abyssalcraft.mixins;
22

33
import com.shinoow.abyssalcraft.common.network.PacketDispatcher;
44
import com.shinoow.abyssalcraft.common.network.client.CleansingRitualMessage;
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package uk.bobbytables.jeidsi.core.compat.advancedrocketry.mixins;
2+
3+
import net.minecraft.util.math.BlockPos;
4+
import net.minecraft.world.World;
5+
import net.minecraft.world.biome.Biome;
6+
import net.minecraft.world.chunk.Chunk;
7+
import org.dimdev.jeid.INewChunk;
8+
import org.spongepowered.asm.mixin.Mixin;
9+
import org.spongepowered.asm.mixin.Overwrite;
10+
import zmaster587.advancedRocketry.network.PacketBiomeIDChange;
11+
import zmaster587.advancedRocketry.util.BiomeHandler;
12+
import zmaster587.libVulpes.network.PacketHandler;
13+
import zmaster587.libVulpes.util.HashedBlockPosition;
14+
15+
@Mixin(BiomeHandler.class)
16+
public class MixinBiomeHandler {
17+
/**
18+
* @author sk2048
19+
*/
20+
@Overwrite
21+
public static void changeBiome(World world, int biomeId, BlockPos pos) {
22+
Chunk chunk = world.getChunk(pos);
23+
24+
Biome biome = world.getBiome(pos);
25+
Biome biomeTo = Biome.getBiome(biomeId);
26+
27+
if (biome == biomeTo)
28+
return;
29+
30+
if (biome.topBlock != biomeTo.topBlock) {
31+
BlockPos yy = world.getHeight(pos);
32+
33+
for (; !world.getBlockState(yy).isOpaqueCube() || yy.getY() < 0; yy = yy.down()) ;
34+
35+
if (world.getBlockState(yy) == biome.topBlock)
36+
world.setBlockState(yy, biomeTo.topBlock);
37+
}
38+
39+
((INewChunk) chunk).getIntBiomeArray()[(pos.getZ() & 0xF) << 4 | pos.getX() & 0xF] = biomeId;
40+
chunk.markDirty();
41+
42+
PacketHandler.sendToNearby(new PacketBiomeIDChange(chunk, world, new HashedBlockPosition(pos)), world.provider.getDimension(), pos, 256);
43+
}
44+
45+
/**
46+
* @author sk2048
47+
*/
48+
@Overwrite
49+
public static void changeBiome(World world, int biomeId, Chunk chunk, BlockPos pos) {
50+
changeBiome(world, biomeId, pos);
51+
}
52+
}
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
package uk.bobbytables.jeidsi.core.compat.advancedrocketry.mixins;
2+
3+
import io.netty.buffer.ByteBuf;
4+
import net.minecraft.client.Minecraft;
5+
import net.minecraft.entity.player.EntityPlayer;
6+
import net.minecraft.world.chunk.Chunk;
7+
import org.dimdev.jeid.INewChunk;
8+
import org.spongepowered.asm.mixin.Mixin;
9+
import org.spongepowered.asm.mixin.Overwrite;
10+
import org.spongepowered.asm.mixin.Shadow;
11+
import org.spongepowered.asm.mixin.injection.At;
12+
import org.spongepowered.asm.mixin.injection.Inject;
13+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
14+
import zmaster587.advancedRocketry.AdvancedRocketry;
15+
import zmaster587.advancedRocketry.network.PacketBiomeIDChange;
16+
import zmaster587.libVulpes.util.HashedBlockPosition;
17+
18+
import static uk.bobbytables.jeidsi.JEIDsI.LOGGER;
19+
20+
@Mixin(PacketBiomeIDChange.class)
21+
public class MixinPacketBiomeIDChange {
22+
@Shadow
23+
Chunk chunk;
24+
@Shadow
25+
int worldId, xPos, zPos;
26+
@Shadow
27+
HashedBlockPosition pos;
28+
29+
int[] intArray;
30+
31+
@Inject(method = "<init>()V", at = @At("RETURN"))
32+
public void onConstructed(CallbackInfo ci) {
33+
intArray = new int[256];
34+
}
35+
36+
/**
37+
* @author sk2048
38+
*/
39+
@Overwrite(remap = false)
40+
public void write(ByteBuf out) {
41+
out.writeInt(worldId);
42+
out.writeInt(chunk.x);
43+
out.writeInt(chunk.z);
44+
out.writeInt(pos.x);
45+
out.writeShort(pos.y);
46+
out.writeInt(pos.z);
47+
48+
for (int biomeId : ((INewChunk) chunk).getIntBiomeArray()) {
49+
out.writeInt(biomeId);
50+
}
51+
}
52+
53+
/**
54+
* @author sk2048
55+
*/
56+
@Overwrite(remap = false)
57+
public void readClient(ByteBuf in) {
58+
worldId = in.readInt();
59+
xPos = in.readInt();
60+
zPos = in.readInt();
61+
62+
pos.x = in.readInt();
63+
pos.y = in.readShort();
64+
pos.z = in.readInt();
65+
66+
for (int i = 0; i < 256; i++) {
67+
int biomeId = in.readInt();
68+
intArray[i] = biomeId;
69+
}
70+
}
71+
72+
73+
/**
74+
* @author sk2048
75+
*/
76+
@Overwrite(remap = false)
77+
public void executeClient(EntityPlayer thePlayer) {
78+
if (thePlayer.world.provider.getDimension() == worldId) {
79+
chunk = thePlayer.world.getChunk(xPos, zPos);
80+
if (chunk.isLoaded()) {
81+
((INewChunk) chunk).setIntBiomeArray(intArray);
82+
chunk.markDirty();
83+
thePlayer.world.markBlockRangeForRenderUpdate(pos.getBlockPos(), pos.getBlockPos());
84+
85+
if (Minecraft.getMinecraft().gameSettings.particleSetting < 2)
86+
AdvancedRocketry.proxy.spawnParticle("smallLazer", thePlayer.world, pos.x, pos.y, pos.z, 0, 0, 0);
87+
}
88+
}
89+
}
90+
}

src/main/java/uk/bobbytables/jeidsi/compat/bookshelf/mixins/MixinWorldUtils.java renamed to src/main/java/uk/bobbytables/jeidsi/core/compat/bookshelf/mixins/MixinWorldUtils.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package uk.bobbytables.jeidsi.compat.bookshelf.mixins;
1+
package uk.bobbytables.jeidsi.core.compat.bookshelf.mixins;
22

33
import net.darkhax.bookshelf.lib.Constants;
44
import net.darkhax.bookshelf.util.WorldUtils;

0 commit comments

Comments
 (0)