mirror of
https://github.com/GTMEGA/EndlessIDs.git
synced 2026-11-12 18:57:37 +00:00
Attempt to fix LOTR mod compat again
This commit is contained in:
7 files changed
+96
-1
No files matched your search
@@ -3,6 +3,7 @@ package com.falsepattern.endlessids.asm;
|
||||
import com.falsepattern.endlessids.asm.transformer.ChunkProviderSuperPatcher;
|
||||
import com.falsepattern.endlessids.asm.transformer.FmlRegistry;
|
||||
import com.falsepattern.endlessids.asm.transformer.GameDataAccelerator;
|
||||
import com.falsepattern.endlessids.asm.transformer.LOTRFieldExposer;
|
||||
import com.falsepattern.endlessids.asm.transformer.SpaceCoreModInfoGenerator;
|
||||
import com.falsepattern.endlessids.config.GeneralConfig;
|
||||
import lombok.val;
|
||||
@@ -21,6 +22,9 @@ public enum ClassEdit {
|
||||
() -> GeneralConfig.extendBlockItem,
|
||||
"cpw.mods.fml.common.registry.GameData",
|
||||
"cpw.mods.fml.common.registry.FMLControlledNamespacedRegistry"),
|
||||
LOTRFieldExposer(new LOTRFieldExposer(),
|
||||
() -> GeneralConfig.extendBiome,
|
||||
"lotr.common.network.LOTRPacketBiomeVariantsWatch"),
|
||||
SpaceCoreModInfoGenerator(new SpaceCoreModInfoGenerator(), () -> true,
|
||||
"com.spacechase0.minecraft.spacecore.mcp.ModInfoGenerator"),
|
||||
GameDataAccelerator(new GameDataAccelerator(), () -> GeneralConfig.enableRegistryPerformanceTweak, "cpw.mods.fml.common.registry.GameData"),
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
package com.falsepattern.endlessids.asm.transformer;
|
||||
|
||||
import com.falsepattern.endlessids.asm.IClassNodeTransformer;
|
||||
import lombok.val;
|
||||
import org.objectweb.asm.Opcodes;
|
||||
import org.objectweb.asm.tree.ClassNode;
|
||||
|
||||
public class LOTRFieldExposer implements IClassNodeTransformer {
|
||||
@Override
|
||||
public void transform(ClassNode classNode, boolean obfuscated) {
|
||||
for (val field: classNode.fields) {
|
||||
if ("chunkX".equals(field.name) ||
|
||||
"chunkZ".equals(field.name) ||
|
||||
"variants".equals(field.name)) {
|
||||
field.access &= ~Opcodes.ACC_PRIVATE;
|
||||
field.access |= Opcodes.ACC_PUBLIC;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
package com.falsepattern.endlessids.mixin.mixins.common.biome.lotr;
|
||||
|
||||
import com.falsepattern.endlessids.constants.ExtendedConstants;
|
||||
import com.falsepattern.endlessids.constants.VanillaConstants;
|
||||
import lotr.common.LOTRDimension;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.Constant;
|
||||
import org.spongepowered.asm.mixin.injection.ModifyConstant;
|
||||
|
||||
@Mixin(value = LOTRDimension.class,
|
||||
remap = false)
|
||||
public abstract class LOTRDimensionMixin {
|
||||
@ModifyConstant(method = "<init>",
|
||||
constant = @Constant(intValue = VanillaConstants.biomeIDCount),
|
||||
require = 1)
|
||||
private int extendBiomes(int constant) {
|
||||
return ExtendedConstants.biomeIDCount;
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -16,7 +16,7 @@ import cpw.mods.fml.common.network.simpleimpl.MessageContext;
|
||||
|
||||
@Mixin(value = LOTRPacketBiomeVariantsWatch.Handler.class,
|
||||
remap = false)
|
||||
public abstract class LOTRPacketBiomeVariantsWatchHandler {
|
||||
public abstract class LOTRPacketBiomeVariantsWatchHandlerMixin {
|
||||
|
||||
/**
|
||||
* @author FalsePattern
|
||||
+49
@@ -0,0 +1,49 @@
|
||||
package com.falsepattern.endlessids.mixin.mixins.common.biome.lotr;
|
||||
|
||||
import com.falsepattern.endlessids.constants.ExtendedConstants;
|
||||
import com.falsepattern.endlessids.mixin.helpers.ChunkBiomeHook;
|
||||
import lombok.val;
|
||||
import lotr.common.LOTRDimension;
|
||||
import lotr.common.world.LOTRWorldProvider;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.Overwrite;
|
||||
import org.spongepowered.asm.mixin.Shadow;
|
||||
|
||||
import net.minecraft.world.WorldProvider;
|
||||
import net.minecraft.world.biome.BiomeGenBase;
|
||||
import net.minecraft.world.chunk.Chunk;
|
||||
|
||||
import static com.falsepattern.endlessids.constants.ExtendedConstants.biomeIDMask;
|
||||
|
||||
@Mixin(LOTRWorldProvider.class)
|
||||
public abstract class LOTRWorldProviderMixin extends WorldProvider {
|
||||
@Shadow public abstract LOTRDimension getLOTRDimension();
|
||||
|
||||
/**
|
||||
* @author FalsePattern
|
||||
* @reason ID extension
|
||||
*/
|
||||
@Overwrite(remap = false)
|
||||
public BiomeGenBase getBiomeGenForCoords(int x, int z) {
|
||||
if (worldObj.blockExists(x, 0, z)) {
|
||||
val chunk = worldObj.getChunkFromBlockCoords(x, z);
|
||||
if (chunk != null) {
|
||||
val extendedChunk = (ChunkBiomeHook)chunk;
|
||||
val biomeArray = extendedChunk.getBiomeShortArray();
|
||||
int chunkX = x & 15;
|
||||
int chunkZ = z & 15;
|
||||
int biomeID = biomeArray[chunkZ << 4 | chunkX] & biomeIDMask;
|
||||
if (biomeID == 255) {
|
||||
val biome = worldChunkMgr.getBiomeGenAt((chunk.xPosition << 4) + chunkX, (chunk.zPosition << 4) + chunkZ);
|
||||
biomeID = biome.biomeID;
|
||||
biomeArray[chunkZ << 4 | chunkX] = (short)(biomeID & biomeIDMask);
|
||||
}
|
||||
|
||||
val dim = this.getLOTRDimension();
|
||||
return dim.biomeList[biomeID] == null ? dim.biomeList[0] : dim.biomeList[biomeID];
|
||||
}
|
||||
}
|
||||
|
||||
return this.worldChunkMgr.getBiomeGenAt(x, z);
|
||||
}
|
||||
}
|
||||
@@ -123,8 +123,10 @@ public enum Mixin implements IMixin {
|
||||
LOTRBiomeVariantStorageMixin(Side.COMMON, condition(() -> GeneralConfig.extendBiome).and(require(TargetedMod.LOTR)), "biome.lotr.LOTRBiomeVariantStorageMixin"),
|
||||
LOTRChunkProviderMixin(Side.COMMON, condition(() -> GeneralConfig.extendBiome).and(require(TargetedMod.LOTR)), "biome.lotr.LOTRChunkProviderMixin"),
|
||||
LOTRChunkProviderUtumnoMixin(Side.COMMON, condition(() -> GeneralConfig.extendBiome).and(require(TargetedMod.LOTR)), "biome.lotr.LOTRChunkProviderUtumnoMixin"),
|
||||
LOTRDimensionMixin(Side.COMMON, condition(() -> GeneralConfig.extendBiome).and(require(TargetedMod.LOTR)), "biome.lotr.LOTRDimensionMixin"),
|
||||
LOTRPacketBiomeVariantsWatchHandlerMixin(Side.COMMON, condition(() -> GeneralConfig.extendBiome).and(require(TargetedMod.LOTR)), "biome.lotr.LOTRPacketBiomeVariantsWatchHandlerMixin"),
|
||||
LOTRWorldChunkManagerMixin(Side.COMMON, condition(() -> GeneralConfig.extendBiome).and(require(TargetedMod.LOTR)), "biome.lotr.LOTRWorldChunkManagerMixin"),
|
||||
LOTRWorldProviderMixin(Side.COMMON, condition(() -> GeneralConfig.extendBiome).and(require(TargetedMod.LOTR)), "biome.lotr.LOTRWorldProviderMixin"),
|
||||
//endregion LOTR
|
||||
//region NaturesCompass
|
||||
NaturesCompassBiomeUtilsMixin(Side.COMMON, condition(() -> GeneralConfig.extendBiome).and(require(TargetedMod.NATURESCOMPASS)), "biome.naturescompass.BiomeUtilsMixin"),
|
||||
|
||||
Reference in new issue
Block a user