mirror of
https://github.com/GTMEGA/EndlessIDs.git
synced 2026-11-12 01:27:32 +00:00
make emergency crash method unique
This commit is contained in:
1 file changed
+13
-10
+13
-10
@@ -9,6 +9,7 @@ import org.spongepowered.asm.mixin.Final;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.Overwrite;
|
||||
import org.spongepowered.asm.mixin.Shadow;
|
||||
import org.spongepowered.asm.mixin.Unique;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
@@ -34,18 +35,20 @@ public abstract class ChunkMixin implements ChunkBiomeHook {
|
||||
public World worldObj;
|
||||
@Shadow
|
||||
private byte[] blockBiomeArray;
|
||||
private short[] blockBiomeShortArray;
|
||||
@Unique
|
||||
private short[] eid$blockBiomeShortArray;
|
||||
|
||||
@Inject(method = "<init>(Lnet/minecraft/world/World;II)V",
|
||||
at = @At(value = "RETURN"),
|
||||
require = 1)
|
||||
private void initShortArray(World p_i1995_1_, int p_i1995_2_, int p_i1995_3_, CallbackInfo ci) {
|
||||
blockBiomeArray = null;
|
||||
blockBiomeShortArray = new short[16 * 16];
|
||||
Arrays.fill(blockBiomeShortArray, (short) -1);
|
||||
eid$blockBiomeShortArray = new short[16 * 16];
|
||||
Arrays.fill(eid$blockBiomeShortArray, (short) -1);
|
||||
}
|
||||
|
||||
private void emergencyCrash() {
|
||||
@Unique
|
||||
private void eid$emergencyCrash() {
|
||||
val crashMSG = "A mod that is incompatible with " + Tags.MODNAME + " has tried to access the biome array of a" +
|
||||
" chunk like in vanilla! Crashing in fear of potential world corruption!\n" +
|
||||
"Please report this issue on https://github.com/FalsePattern/EndlessIDs ASAP!";
|
||||
@@ -57,14 +60,14 @@ public abstract class ChunkMixin implements ChunkBiomeHook {
|
||||
at = @At(value = "HEAD"),
|
||||
require = 1)
|
||||
private void crashSetBiomeArray(byte[] p_76616_1_, CallbackInfo ci) {
|
||||
emergencyCrash();
|
||||
eid$emergencyCrash();
|
||||
}
|
||||
|
||||
@Inject(method = "getBiomeArray",
|
||||
at = @At(value = "HEAD"),
|
||||
require = 1)
|
||||
private void crashGetBiomeArray(CallbackInfoReturnable<byte[]> cir) {
|
||||
emergencyCrash();
|
||||
eid$emergencyCrash();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -73,7 +76,7 @@ public abstract class ChunkMixin implements ChunkBiomeHook {
|
||||
*/
|
||||
@Overwrite
|
||||
public BiomeGenBase getBiomeGenForWorldCoords(int x, int z, WorldChunkManager manager) {
|
||||
int id = this.blockBiomeShortArray[z << 4 | x] & ExtendedConstants.biomeIDMask;
|
||||
int id = this.eid$blockBiomeShortArray[z << 4 | x] & ExtendedConstants.biomeIDMask;
|
||||
if (id == ExtendedConstants.biomeIDNull) {
|
||||
//Source: https://github.com/embeddedt/ArchaicFix/blob/3d1392f4db5a7221534a6f9b00c0c36a49d9be59/src/main/java/org/embeddedt/archaicfix/mixins/common/core/MixinChunk.java#L52
|
||||
if (this.worldObj.isRemote) {
|
||||
@@ -81,7 +84,7 @@ public abstract class ChunkMixin implements ChunkBiomeHook {
|
||||
}
|
||||
BiomeGenBase gen = manager.getBiomeGenAt((this.xPosition << 4) + x, (this.zPosition << 4) + z);
|
||||
id = gen.biomeID;
|
||||
this.blockBiomeShortArray[z << 4 | x] = (short) (id & ExtendedConstants.biomeIDMask);
|
||||
this.eid$blockBiomeShortArray[z << 4 | x] = (short) (id & ExtendedConstants.biomeIDMask);
|
||||
}
|
||||
|
||||
return BiomeGenBase.getBiome(id) == null ? BiomeGenBase.plains : BiomeGenBase.getBiome(id);
|
||||
@@ -89,11 +92,11 @@ public abstract class ChunkMixin implements ChunkBiomeHook {
|
||||
|
||||
@Override
|
||||
public short[] getBiomeShortArray() {
|
||||
return blockBiomeShortArray;
|
||||
return eid$blockBiomeShortArray;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBiomeShortArray(short[] data) {
|
||||
blockBiomeShortArray = data;
|
||||
eid$blockBiomeShortArray = data;
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user