mirror of
https://github.com/GTMEGA/EndlessIDs.git
synced 2026-11-13 00:47:27 +00:00
more Reika mods compat (fixes #26)
This commit is contained in:
7 files changed
+121
-5
No files matched your search
@@ -17,7 +17,8 @@ import cpw.mods.fml.common.event.FMLPreInitializationEvent;
|
||||
acceptedMinecraftVersions = "[1.7.10]",
|
||||
dependencies = "required-after:falsepatternlib@[0.9.2,);after:antiidconflict")
|
||||
public class EndlessIDs {
|
||||
public static final byte[] BIOME_ARRAY_PLACEHOLDER = new byte[0];
|
||||
public static final byte[] ZERO_LENGTH_BIOME_ARRAY_PLACEHOLDER = new byte[0];
|
||||
public static final byte[] FAKE_BIOME_ARRAY_PLACEHOLDER = new byte[256];
|
||||
public static final Logger LOG = LogManager.getLogger(Tags.MODNAME);
|
||||
|
||||
@SidedProxy(clientSide = Tags.GROUPNAME + ".patching.ClientManager",
|
||||
|
||||
@@ -7,7 +7,7 @@ import net.minecraft.world.chunk.Chunk;
|
||||
|
||||
import java.util.function.IntFunction;
|
||||
|
||||
import static com.falsepattern.endlessids.EndlessIDs.BIOME_ARRAY_PLACEHOLDER;
|
||||
import static com.falsepattern.endlessids.EndlessIDs.ZERO_LENGTH_BIOME_ARRAY_PLACEHOLDER;
|
||||
|
||||
public class BiomePatchHelper {
|
||||
public static byte[] getBiomeArrayTweaked(Chunk chunk, IntFunction<BiomeGenBase> biomesForGeneration) {
|
||||
@@ -16,7 +16,7 @@ public class BiomePatchHelper {
|
||||
for (int i = 0; i < chunkBiomes.length; ++i) {
|
||||
chunkBiomes[i] = (short) biomesForGeneration.apply(i).biomeID;
|
||||
}
|
||||
return BIOME_ARRAY_PLACEHOLDER;
|
||||
return ZERO_LENGTH_BIOME_ARRAY_PLACEHOLDER;
|
||||
}
|
||||
|
||||
public static byte[] getBiomeArrayTweaked(Chunk chunk, BiomeGenBase[] biomesForGeneration) {
|
||||
@@ -25,6 +25,6 @@ public class BiomePatchHelper {
|
||||
for (int i = 0; i < chunkBiomes.length; ++i) {
|
||||
chunkBiomes[i] = (short) biomesForGeneration[i].biomeID;
|
||||
}
|
||||
return BIOME_ARRAY_PLACEHOLDER;
|
||||
return ZERO_LENGTH_BIOME_ARRAY_PLACEHOLDER;
|
||||
}
|
||||
}
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
package com.falsepattern.endlessids.mixin.mixins.common.dragonapi;
|
||||
|
||||
import Reika.DragonAPI.Libraries.World.ReikaChunkHelper;
|
||||
import com.falsepattern.endlessids.EndlessIDs;
|
||||
import com.falsepattern.endlessids.mixin.helpers.IChunkMixin;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Redirect;
|
||||
|
||||
import net.minecraft.world.chunk.Chunk;
|
||||
|
||||
@Mixin(value = ReikaChunkHelper.class,
|
||||
remap = false)
|
||||
public abstract class ReikaChunkHelperMixin {
|
||||
private static short[] biomeArray;
|
||||
@Redirect(method = "copyChunk",
|
||||
at = @At(value = "INVOKE",
|
||||
target = "Lnet/minecraft/world/chunk/Chunk;setBiomeArray([B)V",
|
||||
remap = true),
|
||||
require = 1)
|
||||
private static void customSet(Chunk chunk, byte[] p_76616_1_) {
|
||||
((IChunkMixin)chunk).setBiomeShortArray(biomeArray);
|
||||
biomeArray = null;
|
||||
}
|
||||
|
||||
@Redirect(method = "copyChunk",
|
||||
at = @At(value = "INVOKE",
|
||||
target = "Lnet/minecraft/world/chunk/Chunk;getBiomeArray()[B",
|
||||
remap = true),
|
||||
require = 1)
|
||||
private static byte[] customGet(Chunk chunk) {
|
||||
biomeArray = ((IChunkMixin)chunk).getBiomeShortArray();
|
||||
return EndlessIDs.ZERO_LENGTH_BIOME_ARRAY_PLACEHOLDER;
|
||||
}
|
||||
}
|
||||
+77
@@ -0,0 +1,77 @@
|
||||
package com.falsepattern.endlessids.mixin.mixins.common.dragonapi;
|
||||
|
||||
import Reika.DragonAPI.Libraries.World.ReikaWorldHelper;
|
||||
import com.falsepattern.endlessids.EndlessIDs;
|
||||
import com.falsepattern.endlessids.mixin.helpers.IChunkMixin;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.ModifyVariable;
|
||||
import org.spongepowered.asm.mixin.injection.Redirect;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
import org.spongepowered.asm.mixin.injection.callback.LocalCapture;
|
||||
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraft.world.biome.BiomeGenBase;
|
||||
import net.minecraft.world.chunk.Chunk;
|
||||
|
||||
@Mixin(value = ReikaWorldHelper.class,
|
||||
remap = false)
|
||||
public abstract class ReikaWorldHelperMixin {
|
||||
@Redirect(method = {"setBiomeForXZ", "setBiomeAndBlocksForXZ"},
|
||||
at = @At(value = "INVOKE",
|
||||
target = "Lnet/minecraft/world/chunk/Chunk;getBiomeArray()[B",
|
||||
remap = true),
|
||||
require = 2)
|
||||
private static byte[] getFake(Chunk instance) {
|
||||
return EndlessIDs.FAKE_BIOME_ARRAY_PLACEHOLDER;
|
||||
}
|
||||
|
||||
@Redirect(method = {"setBiomeForXZ", "setBiomeAndBlocksForXZ"},
|
||||
at = @At(value = "INVOKE",
|
||||
target = "Lnet/minecraft/world/chunk/Chunk;setBiomeArray([B)V",
|
||||
remap = true),
|
||||
require = 2)
|
||||
private static void noSet(Chunk instance, byte[] arr) {
|
||||
|
||||
}
|
||||
|
||||
@Inject(method = "setBiomeForXZ",
|
||||
at = @At(value = "INVOKE",
|
||||
target = "Lnet/minecraft/world/chunk/Chunk;setChunkModified()V",
|
||||
remap = true),
|
||||
locals = LocalCapture.CAPTURE_FAILHARD,
|
||||
require = 1)
|
||||
private static void customLogicSetBiome(World world, int x, int z, BiomeGenBase biome, CallbackInfo ci, Chunk ch, int ax, int az, byte[] biomes, int index) {
|
||||
((IChunkMixin)ch).getBiomeShortArray()[index] = (short) biome.biomeID;
|
||||
}
|
||||
|
||||
private static int fromBiomeID;
|
||||
|
||||
@Inject(method = "setBiomeAndBlocksForXZ",
|
||||
at = @At(value = "FIELD",
|
||||
target = "Lnet/minecraft/world/biome/BiomeGenBase;biomeList:[Lnet/minecraft/world/biome/BiomeGenBase;",
|
||||
remap = true),
|
||||
locals = LocalCapture.CAPTURE_FAILEXCEPTION,
|
||||
require = 1)
|
||||
private static void captureIndexSetBiomeAndBlocks(World world, int x, int z, BiomeGenBase biome, CallbackInfo ci, Chunk ch, int ax, int az, byte[] biomes, int index) {
|
||||
fromBiomeID = ((IChunkMixin)ch).getBiomeShortArray()[index];
|
||||
}
|
||||
|
||||
@ModifyVariable(method = "setBiomeAndBlocksForXZ",
|
||||
at = @At("STORE"),
|
||||
ordinal = 1)
|
||||
private static BiomeGenBase changeBiomeFrom(BiomeGenBase value) {
|
||||
return BiomeGenBase.getBiome(fromBiomeID);
|
||||
}
|
||||
|
||||
@Inject(method = "setBiomeAndBlocksForXZ",
|
||||
at = @At(value = "INVOKE",
|
||||
target = "Lnet/minecraft/world/chunk/Chunk;setBiomeArray([B)V",
|
||||
remap = true),
|
||||
locals = LocalCapture.CAPTURE_FAILEXCEPTION,
|
||||
require = 1)
|
||||
private static void customLogicSetBiomeAndBlocks(World world, int x, int z, BiomeGenBase biome, CallbackInfo ci, Chunk ch, int ax, int az, byte[] biomes, int index, BiomeGenBase from) {
|
||||
((IChunkMixin)ch).getBiomeShortArray()[index] = (short) biome.biomeID;
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -26,7 +26,7 @@ public abstract class ChunkProviderEndOfTimeMixin {
|
||||
require = 1)
|
||||
private byte[] setBiomesTweaked1(Chunk instance) {
|
||||
chunk = instance;
|
||||
return EndlessIDs.BIOME_ARRAY_PLACEHOLDER;
|
||||
return EndlessIDs.ZERO_LENGTH_BIOME_ARRAY_PLACEHOLDER;
|
||||
}
|
||||
|
||||
@Redirect(method = "provideChunk",
|
||||
|
||||
@@ -107,6 +107,8 @@ public enum Mixin implements IMixin {
|
||||
DragonAPIGenLayerRiverEventMixin(Side.COMMON, require(TargetedMod.DRAGONAPI), "dragonapi.GenLayerRiverEventMixin"),
|
||||
DragonAPIBlockPropertiesMixin(Side.COMMON, require(TargetedMod.DRAGONAPI), "dragonapi.BlockPropertiesMixin"),
|
||||
DragonAPIIDTypeMixin(Side.COMMON, require(TargetedMod.DRAGONAPI), "dragonapi.IDTypeMixin"),
|
||||
ReikaChunkHelperMixin(Side.COMMON, require(TargetedMod.DRAGONAPI), "dragonapi.ReikaChunkHelperMixin"),
|
||||
ReikaWorldHelperMixin(Side.COMMON, require(TargetedMod.DRAGONAPI), "dragonapi.ReikaWorldHelperMixin"),
|
||||
//endregion DragonAPI->common
|
||||
//region EnhancedBiomes
|
||||
EBBiomeIDsMixin(Side.COMMON, require(TargetedMod.EB), "eb.BiomeIDsMixin"),
|
||||
|
||||
Reference in new issue
Block a user