From 761a5631fe6ad60ebada7caae850c825b3024a65 Mon Sep 17 00:00:00 2001 From: rjnasers Date: Sat, 24 Jan 2026 01:17:44 +0100 Subject: [PATCH 1/8] A start --- build.gradle.kts | 11 ++++ .../thermos/ExtendedBlockStorageMixin.java | 50 +++++++++++++++++++ .../vanilla/ExtendedBlockStorageMixin.java | 13 ----- .../endlessids/mixin/plugin/Mixin.java | 18 ++++++- 4 files changed, 78 insertions(+), 14 deletions(-) create mode 100644 src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/thermos/ExtendedBlockStorageMixin.java diff --git a/build.gradle.kts b/build.gradle.kts index 59b52c7..283e18e 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -9,6 +9,7 @@ minecraft_fp { modid = "endlessids" name = "EndlessIDs" rootPkg = "$group.endlessids" + version = "1.6.14" } mixin { @@ -54,6 +55,8 @@ minecraft_fp { } repositories { + maven("https://maven.curseforge.com") + maven("https://nexus.gtnewhorizons.com/repository/public/") cursemavenEX() modrinthEX() exclusive(mavenpattern(), "com.falsepattern") @@ -86,6 +89,14 @@ dependencies { // region unmaintained mods + devOnlyNonPublishable("com.github.GTNewHorizons:Galaxy-Space-GTNH:1.1.126-GTNH:dev") { isTransitive = false } + devOnlyNonPublishable("com.github.GTNewHorizons:Galacticraft:3.4.15-GTNH:dev") { isTransitive = false } + devOnlyNonPublishable("com.github.GTNewHorizons:NotEnoughItems:2.8.50-GTNH:dev") { isTransitive = false} + devOnlyNonPublishable("com.github.GTNewHorizons:CodeChickenCore:1.4.7:dev") { isTransitive = false} + devOnlyNonPublishable("curse.maven:industrial-craft-242638:6833054") { isTransitive = false } + devOnlyNonPublishable("com.github.GTNewHorizons:TinkersConstruct:1.14.17-GTNH:dev") { isTransitive = false } + devOnlyNonPublishable("com.github.GTNewHorizons:Mantle:0.5.1:dev") + //AbyssalCraft 1.9.1.3-FINAL compileOnly(deobfCurse("abyssalcraft-53686:2311135")) diff --git a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/thermos/ExtendedBlockStorageMixin.java b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/thermos/ExtendedBlockStorageMixin.java new file mode 100644 index 0000000..cb11e12 --- /dev/null +++ b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/thermos/ExtendedBlockStorageMixin.java @@ -0,0 +1,50 @@ +/* + * EndlessIDs + * + * Copyright (C) 2022-2025 FalsePattern, The MEGA Team + * All Rights Reserved + * + * The above copyright notice, this permission notice and the word "MEGA" + * shall be included in all copies or substantial portions of the Software. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, only version 3 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ + +package com.falsepattern.endlessids.mixin.mixins.common.blockitem.thermos; + +import com.falsepattern.endlessids.config.GeneralConfig; +import lombok.var; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +import net.minecraft.block.Block; +import net.minecraft.init.Blocks; +import net.minecraft.world.chunk.storage.ExtendedBlockStorage; + +@Mixin(ExtendedBlockStorage.class) +public class ExtendedBlockStorageMixin +{ + @Redirect(method = "removeInvalidBlocks", + at = @At(value = "INVOKE", + target = "Lnet/minecraft/world/chunk/storage/ExtendedBlockStorage;getBlockByExtId(III)Lnet/minecraft/block/Block;"), + require = 1) + private Block removeInvalidBlocks(ExtendedBlockStorage instance, int x, int y, int z) { + var block = instance.getBlockByExtId(x, y, z); + if (block == null && GeneralConfig.removeInvalidBlocks) { + instance.func_150818_a(x, y, z, Blocks.air); + block = Blocks.air; + } + return block; + } +} diff --git a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/vanilla/ExtendedBlockStorageMixin.java b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/vanilla/ExtendedBlockStorageMixin.java index e7906de..4b70722 100644 --- a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/vanilla/ExtendedBlockStorageMixin.java +++ b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/vanilla/ExtendedBlockStorageMixin.java @@ -189,19 +189,6 @@ public void setExtBlockMetadata(int x, int y, int z, int meta) { setExtBlockMetadata(x, y, z, id); } - @Redirect(method = "removeInvalidBlocks", - at = @At(value = "INVOKE", - target = "Lnet/minecraft/world/chunk/storage/ExtendedBlockStorage;getBlockByExtId(III)Lnet/minecraft/block/Block;"), - require = 1) - private Block removeInvalidBlocks(ExtendedBlockStorage instance, int x, int y, int z) { - var block = instance.getBlockByExtId(x, y, z); - if (block == null && GeneralConfig.removeInvalidBlocks) { - instance.func_150818_a(x, y, z, Blocks.air); - block = Blocks.air; - } - return block; - } - private UnsupportedOperationException emergencyCrash() { val crashMSG = "A mod that is incompatible with " + Tags.MODNAME + " has tried to access the block array of a" + " chunk like in vanilla! Crashing in fear of potential world corruption!\n" + diff --git a/src/main/java/com/falsepattern/endlessids/mixin/plugin/Mixin.java b/src/main/java/com/falsepattern/endlessids/mixin/plugin/Mixin.java index af06951..eb30c9d 100644 --- a/src/main/java/com/falsepattern/endlessids/mixin/plugin/Mixin.java +++ b/src/main/java/com/falsepattern/endlessids/mixin/plugin/Mixin.java @@ -418,7 +418,11 @@ public enum Mixin implements IMixins { // endregion Biome // region BlockItem - + + BlockItem_Thermos(Phase.EARLY, + () -> { return Ext.BlockItem.getAsBoolean() && !hasThermos(); }, + common("blockitem.thermos.ExtendedBlockStorageMixin")), + BlockItem_Vanilla(Phase.EARLY, Ext.BlockItem, common("blockitem.vanilla.BlockFireMixin", @@ -607,4 +611,16 @@ private static class Ext { public static final BooleanSupplier Potion = () -> GeneralConfig.extendPotion; public static final BooleanSupplier Entity = () -> GeneralConfig.extendEntity; } + + static boolean hasThermos() + { + try + { + Class.forName("thermos.Thermos"); + return true; + } + catch(ClassNotFoundException ignored) { + return false; + } + } } From a4aee25df06c6263cb73110e8a1863a245df2b3a Mon Sep 17 00:00:00 2001 From: rjnasers Date: Sat, 24 Jan 2026 22:00:43 +0100 Subject: [PATCH 2/8] Sort of a fix. Probably want to move to chunkapi rather than EID. It's unclear --- build.gradle.kts | 8 --- .../blockitem/thermos/NibbleArrayMixin.java | 69 +++++++++++++++++++ .../endlessids/mixin/plugin/Mixin.java | 5 +- 3 files changed, 72 insertions(+), 10 deletions(-) create mode 100644 src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/thermos/NibbleArrayMixin.java diff --git a/build.gradle.kts b/build.gradle.kts index 283e18e..d9320d6 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -88,14 +88,6 @@ dependencies { // endregion // region unmaintained mods - - devOnlyNonPublishable("com.github.GTNewHorizons:Galaxy-Space-GTNH:1.1.126-GTNH:dev") { isTransitive = false } - devOnlyNonPublishable("com.github.GTNewHorizons:Galacticraft:3.4.15-GTNH:dev") { isTransitive = false } - devOnlyNonPublishable("com.github.GTNewHorizons:NotEnoughItems:2.8.50-GTNH:dev") { isTransitive = false} - devOnlyNonPublishable("com.github.GTNewHorizons:CodeChickenCore:1.4.7:dev") { isTransitive = false} - devOnlyNonPublishable("curse.maven:industrial-craft-242638:6833054") { isTransitive = false } - devOnlyNonPublishable("com.github.GTNewHorizons:TinkersConstruct:1.14.17-GTNH:dev") { isTransitive = false } - devOnlyNonPublishable("com.github.GTNewHorizons:Mantle:0.5.1:dev") //AbyssalCraft 1.9.1.3-FINAL compileOnly(deobfCurse("abyssalcraft-53686:2311135")) diff --git a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/thermos/NibbleArrayMixin.java b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/thermos/NibbleArrayMixin.java new file mode 100644 index 0000000..a2f2778 --- /dev/null +++ b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/thermos/NibbleArrayMixin.java @@ -0,0 +1,69 @@ +/* + * EndlessIDs + * + * Copyright (C) 2022-2025 FalsePattern, The MEGA Team + * All Rights Reserved + * + * The above copyright notice, this permission notice and the word "MEGA" + * shall be included in all copies or substantial portions of the Software. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, only version 3 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ + +package com.falsepattern.endlessids.mixin.mixins.common.blockitem.thermos; + +import org.spongepowered.asm.lib.Opcodes; +import org.spongepowered.asm.mixin.Mixin; +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 net.minecraft.world.chunk.NibbleArray; + +@Mixin(NibbleArray.class) +public class NibbleArrayMixin { + + @Shadow + public byte[] data; // Thermos renamed 'data' + @Shadow private int depthBits; // depthBits + @Shadow private int depthBitsPlusFour; // depthBitsPlusFour + + @Shadow private int length; + @Shadow private byte trivialByte; + @Shadow private byte trivialValue; + + @Inject( + method = "detectAndProcessTrivialArray", + at = @At( + value = "FIELD", + opcode = Opcodes.PUTFIELD, + target = "Lnet/minecraft/world/chunk/NibbleArray;data:[B", + shift = At.Shift.BEFORE + ), + cancellable = true) + private void logBeforeNull(CallbackInfo ci) { + ci.cancel(); + } + + @Inject(method = "(II)V", at = @At("RETURN")) + private void fixConstructor(int par1, int par2, CallbackInfo ci) { + this.data = new byte[par1 >> 1]; + this.depthBits = par2; + this.depthBitsPlusFour = par2 + 4; + this.length = par1 >> 1; + this.trivialValue = 0; + this.trivialByte = 0; + } + +} diff --git a/src/main/java/com/falsepattern/endlessids/mixin/plugin/Mixin.java b/src/main/java/com/falsepattern/endlessids/mixin/plugin/Mixin.java index eb30c9d..72e9b7e 100644 --- a/src/main/java/com/falsepattern/endlessids/mixin/plugin/Mixin.java +++ b/src/main/java/com/falsepattern/endlessids/mixin/plugin/Mixin.java @@ -277,7 +277,7 @@ public enum Mixin implements IMixins { common("biome.galacticraft.ChunkProviderOrbitMixin", "biome.galacticraft.ConfigManagerCoreMixin")), - Biome_GalaxySpace(Phase.EARLY, + Biome_GalaxySpace(Phase.LATE, Ext.Biome, require(GalaxySpace), common("biome.galaxyspace.ChunkProviderKuiperMixin", @@ -434,7 +434,8 @@ public enum Mixin implements IMixins { "blockitem.vanilla.S22PacketMultiBlockChangeMixin", "blockitem.vanilla.S24PacketBlockActionMixin", "blockitem.vanilla.StatListMixin", - "blockitem.vanilla.WorldMixin"), + "blockitem.vanilla.WorldMixin", + "blockitem.thermos.NibbleArrayMixin"), client("blockitem.vanilla.PlayerControllerMPMixin", "blockitem.vanilla.RenderGlobalMixin")), From e2f0b85128172212f32d71c98abc7d6fe3389b53 Mon Sep 17 00:00:00 2001 From: rjnasers Date: Sat, 24 Jan 2026 23:00:08 +0100 Subject: [PATCH 3/8] Organizing a bit --- build.gradle.kts | 1 + .../{vanilla => common}/BlockFireMixin.java | 4 +- .../{vanilla => common}/BlockMixin.java | 4 +- .../common/ExtendedBlockStorageMixin.java | 368 ++++++++++++++++++ .../ItemInWorldManagerMixin.java | 4 +- .../{vanilla => common}/ItemStackMixin.java | 5 +- .../PacketBufferMixin.java | 4 +- .../S22PacketMultiBlockChangeMixin.java | 4 +- .../S24PacketBlockActionMixin.java | 4 +- .../{vanilla => common}/StatListMixin.java | 4 +- .../{vanilla => common}/WorldMixin.java | 4 +- .../thermos/ExtendedBlockStorageMixin.java | 50 --- .../vanilla/ExtendedBlockStorageMixin.java | 346 +--------------- .../endlessids/mixin/plugin/Mixin.java | 30 +- 14 files changed, 417 insertions(+), 415 deletions(-) rename src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/{vanilla => common}/BlockFireMixin.java (98%) rename src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/{vanilla => common}/BlockMixin.java (99%) create mode 100644 src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/common/ExtendedBlockStorageMixin.java rename src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/{vanilla => common}/ItemInWorldManagerMixin.java (98%) rename src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/{vanilla => common}/ItemStackMixin.java (96%) rename src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/{vanilla => common}/PacketBufferMixin.java (99%) rename src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/{vanilla => common}/S22PacketMultiBlockChangeMixin.java (99%) rename src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/{vanilla => common}/S24PacketBlockActionMixin.java (98%) rename src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/{vanilla => common}/StatListMixin.java (98%) rename src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/{vanilla => common}/WorldMixin.java (98%) delete mode 100644 src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/thermos/ExtendedBlockStorageMixin.java diff --git a/build.gradle.kts b/build.gradle.kts index d9320d6..a91e5d0 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -14,6 +14,7 @@ minecraft_fp { mixin { pkg = "mixin.mixins" + debug = true } core { diff --git a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/vanilla/BlockFireMixin.java b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/common/BlockFireMixin.java similarity index 98% rename from src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/vanilla/BlockFireMixin.java rename to src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/common/BlockFireMixin.java index 75d5215..cee7087 100644 --- a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/vanilla/BlockFireMixin.java +++ b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/common/BlockFireMixin.java @@ -4,7 +4,7 @@ * Copyright (C) 2022-2025 FalsePattern, The MEGA Team * All Rights Reserved * - * The above copyright notice, this permission notice and the words "MEGA" + * The above copyright notice, this permission notice and the word "MEGA" * shall be included in all copies or substantial portions of the Software. * * This program is free software: you can redistribute it and/or modify @@ -20,7 +20,7 @@ * along with this program. If not, see . */ -package com.falsepattern.endlessids.mixin.mixins.common.blockitem.vanilla; +package com.falsepattern.endlessids.mixin.mixins.common.blockitem.common; import com.falsepattern.endlessids.constants.ExtendedConstants; import com.falsepattern.endlessids.constants.VanillaConstants; diff --git a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/vanilla/BlockMixin.java b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/common/BlockMixin.java similarity index 99% rename from src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/vanilla/BlockMixin.java rename to src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/common/BlockMixin.java index e199ea8..2465dad 100644 --- a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/vanilla/BlockMixin.java +++ b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/common/BlockMixin.java @@ -4,7 +4,7 @@ * Copyright (C) 2022-2025 FalsePattern, The MEGA Team * All Rights Reserved * - * The above copyright notice, this permission notice and the words "MEGA" + * The above copyright notice, this permission notice and the word "MEGA" * shall be included in all copies or substantial portions of the Software. * * This program is free software: you can redistribute it and/or modify @@ -20,7 +20,7 @@ * along with this program. If not, see . */ -package com.falsepattern.endlessids.mixin.mixins.common.blockitem.vanilla; +package com.falsepattern.endlessids.mixin.mixins.common.blockitem.common; import it.unimi.dsi.fastutil.ints.Int2IntOpenHashMap; import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; diff --git a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/common/ExtendedBlockStorageMixin.java b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/common/ExtendedBlockStorageMixin.java new file mode 100644 index 0000000..cc47865 --- /dev/null +++ b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/common/ExtendedBlockStorageMixin.java @@ -0,0 +1,368 @@ +/* + * EndlessIDs + * + * Copyright (C) 2022-2025 FalsePattern, The MEGA Team + * All Rights Reserved + * + * The above copyright notice, this permission notice and the word "MEGA" + * shall be included in all copies or substantial portions of the Software. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, only version 3 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ + +package com.falsepattern.endlessids.mixin.mixins.common.blockitem.common; + +import com.falsepattern.endlessids.EndlessIDs; +import com.falsepattern.endlessids.Hooks; +import com.falsepattern.endlessids.Tags; +import com.falsepattern.endlessids.config.GeneralConfig; +import com.falsepattern.endlessids.mixin.helpers.SubChunkBlockHook; +import lombok.val; +import lombok.var; +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.Redirect; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +import net.minecraft.block.Block; +import net.minecraft.init.Blocks; +import net.minecraft.world.chunk.NibbleArray; +import net.minecraft.world.chunk.storage.ExtendedBlockStorage; + +import static com.falsepattern.endlessids.constants.ExtendedConstants.blocksPerSubChunk; + +@Mixin(ExtendedBlockStorage.class) +public abstract class ExtendedBlockStorageMixin implements SubChunkBlockHook { + @Shadow + private int blockRefCount; + @Shadow + private int tickRefCount; + + @Shadow + private byte[] blockLSBArray; + @Shadow + private NibbleArray blockMSBArray; + private NibbleArray b2High; + private byte[] b3; + + @Shadow + private NibbleArray blockMetadataArray; + private NibbleArray m1High; + private byte[] m2; + + public int eid$getID(int x, int y, int z) { + int index = y << 8 | z << 4 | x; + int id = blockLSBArray[index] & 0xFF; + if (blockMSBArray != null) { + id |= blockMSBArray.get(x, y, z) << 8; + if (b2High != null) { + id |= b2High.get(x, y, z) << 12; + if (b3 != null) { + id |= (b3[index] & 0xFF) << 16; + } + } + } + return id; + } + + public void eid$setID(int x, int y, int z, int id) { + int index = y << 8 | z << 4 | x; + blockLSBArray[index] = (byte) (id & 0xFF); + if (id > 0xFF) { + if (blockMSBArray == null) { + eid$createB2Low(); + } + if (id > 0xFFF) { + if (b2High == null) { + eid$createB2High(); + } + if (id > 0xFFFF && b3 == null) { + eid$createB3(); + } + } + } + if (blockMSBArray != null) { + blockMSBArray.set(x, y, z, (id >>> 8) & 0xF); + if (b2High != null) { + b2High.set(x, y, z, (id >>> 12) & 0xF); + if (b3 != null) { + b3[index] = (byte) ((id >>> 16) & 0xFF); + } + } + } + } + + /** + * @author FalsePattern + * @reason Direct port from dumped code + */ + @Overwrite + public Block getBlockByExtId(int x, int y, int z) { + return Block.getBlockById(eid$getID(x, y, z)); + } + + /** + * @author FalsePattern + * @reason Direct port from dumped code + */ + @Overwrite + public void func_150818_a(int x, int y, int z, Block newBlock) { + Block oldBlock = this.getBlockByExtId(x, y, z); + if (oldBlock != Blocks.air) { + --this.blockRefCount; + if (oldBlock.getTickRandomly()) { + --this.tickRefCount; + } + } + + if (newBlock != Blocks.air) { + ++this.blockRefCount; + if (newBlock.getTickRandomly()) { + ++this.tickRefCount; + } + } + + int blockID = Hooks.getIdFromBlockWithCheck(newBlock, oldBlock); + eid$setID(x, y, z, blockID); + } + + /** + * @author FalsePattern + * @reason meta ID extension + */ + @Overwrite + public int getExtBlockMetadata(int x, int y, int z) { + int meta = blockMetadataArray.get(x, y, z); + if (m1High != null) { + meta |= m1High.get(x, y, z) << 4; + if (m2 != null) { + meta |= (m2[(y << 8) | (z << 4) | x] & 0xFF) << 8; + } + } + return meta; + } + + /** + * @author FalsePattern + * @reason meta ID extension + */ + @Overwrite + public void setExtBlockMetadata(int x, int y, int z, int meta) { + blockMetadataArray.set(x, y, z, meta & 0xF); + if (meta > 0xF) { + if (m1High == null) { + eid$createM1High(); + } + if (meta > 0xFF && m2 == null) { + eid$createM2(); + } + } + if (m1High != null) { + m1High.set(x, y, z, (meta >>> 4) & 0xF); + if (m2 != null) { + m2[(y << 8) | (z << 4) | x] = (byte) ((meta >>> 8) & 0xFF); + } + } + } + + @Override + public int eid$getMetadata(int x, int y, int z) { + return getExtBlockMetadata(x, y, z); + } + + @Override + public void eid$setMetadata(int x, int y, int z, int id) { + setExtBlockMetadata(x, y, z, id); + } + + private UnsupportedOperationException emergencyCrash() { + val crashMSG = "A mod that is incompatible with " + Tags.MODNAME + " has tried to access the block array of a" + + " chunk like in vanilla! Crashing in fear of potential world corruption!\n" + + "Please report this issue on https://github.com/GTMEGA/EndlessIDs ASAP!"; + EndlessIDs.LOG.fatal(crashMSG); + return new UnsupportedOperationException(crashMSG); + } + + @Override + public byte[] eid$getB1() { + return blockLSBArray; + } + + @Override + public void eid$setB1(byte[] data) { + blockLSBArray = data; + } + + @Override + public NibbleArray eid$getB2Low() { + return blockMSBArray; + } + + @Override + public void eid$setB2Low(NibbleArray data) { + blockMSBArray = data; + } + + @Override + public NibbleArray eid$createB2Low() { + return (blockMSBArray = new NibbleArray(blocksPerSubChunk, 4)); + } + + @Override + public NibbleArray eid$getB2High() { + return b2High; + } + + @Override + public void eid$setB2High(NibbleArray data) { + b2High = data; + } + + @Override + public NibbleArray eid$createB2High() { + return (b2High = new NibbleArray(blocksPerSubChunk, 4)); + } + + @Override + public byte[] eid$getB3() { + return b3; + } + + @Override + public void eid$setB3(byte[] data) { + b3 = data; + } + + @Override + public byte[] eid$createB3() { + return b3 = new byte[blocksPerSubChunk]; + } + + @Override + public NibbleArray eid$getM1Low() { + return blockMetadataArray; + } + + @Override + public void eid$setM1Low(NibbleArray m1Low) { + blockMetadataArray = m1Low; + } + + @Override + public NibbleArray eid$getM1High() { + return m1High; + } + + @Override + public void eid$setM1High(NibbleArray m1High) { + this.m1High = m1High; + } + + @Override + public NibbleArray eid$createM1High() { + return (m1High = new NibbleArray(blocksPerSubChunk, 4)); + } + + @Override + public byte[] eid$getM2() { + return m2; + } + + @Override + public void eid$setM2(byte[] m2) { + this.m2 = m2; + } + + @Override + public byte[] eid$createM2() { + return (m2 = new byte[blocksPerSubChunk]); + } + + @Override + public int eid$getBlockMask() { + if (blockMSBArray == null) { + return 0b00; + } + if (b2High == null) { + return 0b01; + } + if (b3 == null) { + return 0b10; + } + return 0b11; + } + + @Override + public int eid$getMetadataMask() { + if (m1High == null) { + return 0b01; + } + if (m2 == null) { + return 0b10; + } + return 0b11; + } + + @Inject(method = {"getBlockMSBArray", "createBlockMSBArray"}, + at = @At("HEAD"), + expect = 0) + private void crashMSBArray(CallbackInfoReturnable cir) { + throw emergencyCrash(); + } + + @Inject(method = "clearMSBArray", + at = @At("HEAD"), + expect = 0) + private void crashMSBArray(CallbackInfo ci) { + throw emergencyCrash(); + } + + @Inject(method = "setBlockMSBArray", + at = @At("HEAD"), + expect = 0) + private void crashMSBArray(NibbleArray p_76673_1_, CallbackInfo ci) { + throw emergencyCrash(); + } + + @Inject(method = "setBlockLSBArray", + at = @At("HEAD"), + expect = 0) + private void crashLSBArray(byte[] p_76664_1_, CallbackInfo ci) { + throw emergencyCrash(); + } + + @Inject(method = "getBlockLSBArray", + at = @At("HEAD"), + expect = 0) + private void crashLSBArray(CallbackInfoReturnable cir) { + throw emergencyCrash(); + } + + @Inject(method = "setBlockMetadataArray", + at = @At("HEAD"), + expect = 0) + private void crashMetadataArray(NibbleArray p_76668_1_, CallbackInfo ci) { + throw emergencyCrash(); + } + + @Inject(method = "getMetadataArray", + at = @At("HEAD"), + expect = 0) + private void crashMetadataArray(CallbackInfoReturnable cir) { + throw emergencyCrash(); + } +} diff --git a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/vanilla/ItemInWorldManagerMixin.java b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/common/ItemInWorldManagerMixin.java similarity index 98% rename from src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/vanilla/ItemInWorldManagerMixin.java rename to src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/common/ItemInWorldManagerMixin.java index daf8092..0e6690d 100644 --- a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/vanilla/ItemInWorldManagerMixin.java +++ b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/common/ItemInWorldManagerMixin.java @@ -4,7 +4,7 @@ * Copyright (C) 2022-2025 FalsePattern, The MEGA Team * All Rights Reserved * - * The above copyright notice, this permission notice and the words "MEGA" + * The above copyright notice, this permission notice and the word "MEGA" * shall be included in all copies or substantial portions of the Software. * * This program is free software: you can redistribute it and/or modify @@ -20,7 +20,7 @@ * along with this program. If not, see . */ -package com.falsepattern.endlessids.mixin.mixins.common.blockitem.vanilla; +package com.falsepattern.endlessids.mixin.mixins.common.blockitem.common; import com.falsepattern.endlessids.constants.ExtendedConstants; import com.falsepattern.endlessids.constants.VanillaConstants; diff --git a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/vanilla/ItemStackMixin.java b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/common/ItemStackMixin.java similarity index 96% rename from src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/vanilla/ItemStackMixin.java rename to src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/common/ItemStackMixin.java index e806f8e..3e478b8 100644 --- a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/vanilla/ItemStackMixin.java +++ b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/common/ItemStackMixin.java @@ -4,7 +4,7 @@ * Copyright (C) 2022-2025 FalsePattern, The MEGA Team * All Rights Reserved * - * The above copyright notice, this permission notice and the words "MEGA" + * The above copyright notice, this permission notice and the word "MEGA" * shall be included in all copies or substantial portions of the Software. * * This program is free software: you can redistribute it and/or modify @@ -20,9 +20,8 @@ * along with this program. If not, see . */ -package com.falsepattern.endlessids.mixin.mixins.common.blockitem.vanilla; +package com.falsepattern.endlessids.mixin.mixins.common.blockitem.common; -import com.falsepattern.endlessids.constants.VanillaConstants; import com.falsepattern.endlessids.util.DataUtil; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Overwrite; diff --git a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/vanilla/PacketBufferMixin.java b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/common/PacketBufferMixin.java similarity index 99% rename from src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/vanilla/PacketBufferMixin.java rename to src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/common/PacketBufferMixin.java index 50ca213..0198fcb 100644 --- a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/vanilla/PacketBufferMixin.java +++ b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/common/PacketBufferMixin.java @@ -4,7 +4,7 @@ * Copyright (C) 2022-2025 FalsePattern, The MEGA Team * All Rights Reserved * - * The above copyright notice, this permission notice and the words "MEGA" + * The above copyright notice, this permission notice and the word "MEGA" * shall be included in all copies or substantial portions of the Software. * * This program is free software: you can redistribute it and/or modify @@ -20,7 +20,7 @@ * along with this program. If not, see . */ -package com.falsepattern.endlessids.mixin.mixins.common.blockitem.vanilla; +package com.falsepattern.endlessids.mixin.mixins.common.blockitem.common; import io.netty.buffer.ByteBuf; import org.spongepowered.asm.mixin.Mixin; diff --git a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/vanilla/S22PacketMultiBlockChangeMixin.java b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/common/S22PacketMultiBlockChangeMixin.java similarity index 99% rename from src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/vanilla/S22PacketMultiBlockChangeMixin.java rename to src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/common/S22PacketMultiBlockChangeMixin.java index 023ed94..b591353 100644 --- a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/vanilla/S22PacketMultiBlockChangeMixin.java +++ b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/common/S22PacketMultiBlockChangeMixin.java @@ -4,7 +4,7 @@ * Copyright (C) 2022-2025 FalsePattern, The MEGA Team * All Rights Reserved * - * The above copyright notice, this permission notice and the words "MEGA" + * The above copyright notice, this permission notice and the word "MEGA" * shall be included in all copies or substantial portions of the Software. * * This program is free software: you can redistribute it and/or modify @@ -20,7 +20,7 @@ * along with this program. If not, see . */ -package com.falsepattern.endlessids.mixin.mixins.common.blockitem.vanilla; +package com.falsepattern.endlessids.mixin.mixins.common.blockitem.common; import com.falsepattern.endlessids.constants.ExtendedConstants; import com.falsepattern.endlessids.constants.VanillaConstants; diff --git a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/vanilla/S24PacketBlockActionMixin.java b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/common/S24PacketBlockActionMixin.java similarity index 98% rename from src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/vanilla/S24PacketBlockActionMixin.java rename to src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/common/S24PacketBlockActionMixin.java index 6a63749..64e4fb5 100644 --- a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/vanilla/S24PacketBlockActionMixin.java +++ b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/common/S24PacketBlockActionMixin.java @@ -4,7 +4,7 @@ * Copyright (C) 2022-2025 FalsePattern, The MEGA Team * All Rights Reserved * - * The above copyright notice, this permission notice and the words "MEGA" + * The above copyright notice, this permission notice and the word "MEGA" * shall be included in all copies or substantial portions of the Software. * * This program is free software: you can redistribute it and/or modify @@ -20,7 +20,7 @@ * along with this program. If not, see . */ -package com.falsepattern.endlessids.mixin.mixins.common.blockitem.vanilla; +package com.falsepattern.endlessids.mixin.mixins.common.blockitem.common; import com.falsepattern.endlessids.constants.ExtendedConstants; import com.falsepattern.endlessids.constants.VanillaConstants; diff --git a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/vanilla/StatListMixin.java b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/common/StatListMixin.java similarity index 98% rename from src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/vanilla/StatListMixin.java rename to src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/common/StatListMixin.java index b84c93d..e9b9f49 100644 --- a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/vanilla/StatListMixin.java +++ b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/common/StatListMixin.java @@ -4,7 +4,7 @@ * Copyright (C) 2022-2025 FalsePattern, The MEGA Team * All Rights Reserved * - * The above copyright notice, this permission notice and the words "MEGA" + * The above copyright notice, this permission notice and the word "MEGA" * shall be included in all copies or substantial portions of the Software. * * This program is free software: you can redistribute it and/or modify @@ -20,7 +20,7 @@ * along with this program. If not, see . */ -package com.falsepattern.endlessids.mixin.mixins.common.blockitem.vanilla; +package com.falsepattern.endlessids.mixin.mixins.common.blockitem.common; import com.falsepattern.endlessids.constants.ExtendedConstants; import com.falsepattern.endlessids.constants.VanillaConstants; diff --git a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/vanilla/WorldMixin.java b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/common/WorldMixin.java similarity index 98% rename from src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/vanilla/WorldMixin.java rename to src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/common/WorldMixin.java index 18444b9..2d3057e 100644 --- a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/vanilla/WorldMixin.java +++ b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/common/WorldMixin.java @@ -4,7 +4,7 @@ * Copyright (C) 2022-2025 FalsePattern, The MEGA Team * All Rights Reserved * - * The above copyright notice, this permission notice and the words "MEGA" + * The above copyright notice, this permission notice and the word "MEGA" * shall be included in all copies or substantial portions of the Software. * * This program is free software: you can redistribute it and/or modify @@ -20,7 +20,7 @@ * along with this program. If not, see . */ -package com.falsepattern.endlessids.mixin.mixins.common.blockitem.vanilla; +package com.falsepattern.endlessids.mixin.mixins.common.blockitem.common; import com.falsepattern.endlessids.constants.ExtendedConstants; import com.falsepattern.endlessids.constants.VanillaConstants; diff --git a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/thermos/ExtendedBlockStorageMixin.java b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/thermos/ExtendedBlockStorageMixin.java deleted file mode 100644 index cb11e12..0000000 --- a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/thermos/ExtendedBlockStorageMixin.java +++ /dev/null @@ -1,50 +0,0 @@ -/* - * EndlessIDs - * - * Copyright (C) 2022-2025 FalsePattern, The MEGA Team - * All Rights Reserved - * - * The above copyright notice, this permission notice and the word "MEGA" - * shall be included in all copies or substantial portions of the Software. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, only version 3 of the License. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program. If not, see . - */ - -package com.falsepattern.endlessids.mixin.mixins.common.blockitem.thermos; - -import com.falsepattern.endlessids.config.GeneralConfig; -import lombok.var; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; - -import net.minecraft.block.Block; -import net.minecraft.init.Blocks; -import net.minecraft.world.chunk.storage.ExtendedBlockStorage; - -@Mixin(ExtendedBlockStorage.class) -public class ExtendedBlockStorageMixin -{ - @Redirect(method = "removeInvalidBlocks", - at = @At(value = "INVOKE", - target = "Lnet/minecraft/world/chunk/storage/ExtendedBlockStorage;getBlockByExtId(III)Lnet/minecraft/block/Block;"), - require = 1) - private Block removeInvalidBlocks(ExtendedBlockStorage instance, int x, int y, int z) { - var block = instance.getBlockByExtId(x, y, z); - if (block == null && GeneralConfig.removeInvalidBlocks) { - instance.func_150818_a(x, y, z, Blocks.air); - block = Blocks.air; - } - return block; - } -} diff --git a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/vanilla/ExtendedBlockStorageMixin.java b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/vanilla/ExtendedBlockStorageMixin.java index 4b70722..fe840b6 100644 --- a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/vanilla/ExtendedBlockStorageMixin.java +++ b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/vanilla/ExtendedBlockStorageMixin.java @@ -4,7 +4,7 @@ * Copyright (C) 2022-2025 FalsePattern, The MEGA Team * All Rights Reserved * - * The above copyright notice, this permission notice and the words "MEGA" + * The above copyright notice, this permission notice and the word "MEGA" * shall be included in all copies or substantial portions of the Software. * * This program is free software: you can redistribute it and/or modify @@ -22,347 +22,29 @@ package com.falsepattern.endlessids.mixin.mixins.common.blockitem.vanilla; -import com.falsepattern.endlessids.EndlessIDs; -import com.falsepattern.endlessids.Hooks; -import com.falsepattern.endlessids.Tags; import com.falsepattern.endlessids.config.GeneralConfig; -import com.falsepattern.endlessids.mixin.helpers.SubChunkBlockHook; -import lombok.val; import lombok.var; 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.Redirect; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import net.minecraft.block.Block; import net.minecraft.init.Blocks; -import net.minecraft.world.chunk.NibbleArray; import net.minecraft.world.chunk.storage.ExtendedBlockStorage; -import static com.falsepattern.endlessids.constants.ExtendedConstants.blocksPerSubChunk; - @Mixin(ExtendedBlockStorage.class) -public abstract class ExtendedBlockStorageMixin implements SubChunkBlockHook { - @Shadow - private int blockRefCount; - @Shadow - private int tickRefCount; - - @Shadow - private byte[] blockLSBArray; - @Shadow - private NibbleArray blockMSBArray; - private NibbleArray b2High; - private byte[] b3; - - @Shadow - private NibbleArray blockMetadataArray; - private NibbleArray m1High; - private byte[] m2; - - public int eid$getID(int x, int y, int z) { - int index = y << 8 | z << 4 | x; - int id = blockLSBArray[index] & 0xFF; - if (blockMSBArray != null) { - id |= blockMSBArray.get(x, y, z) << 8; - if (b2High != null) { - id |= b2High.get(x, y, z) << 12; - if (b3 != null) { - id |= (b3[index] & 0xFF) << 16; - } - } - } - return id; - } - - public void eid$setID(int x, int y, int z, int id) { - int index = y << 8 | z << 4 | x; - blockLSBArray[index] = (byte) (id & 0xFF); - if (id > 0xFF) { - if (blockMSBArray == null) { - eid$createB2Low(); - } - if (id > 0xFFF) { - if (b2High == null) { - eid$createB2High(); - } - if (id > 0xFFFF && b3 == null) { - eid$createB3(); - } - } - } - if (blockMSBArray != null) { - blockMSBArray.set(x, y, z, (id >>> 8) & 0xF); - if (b2High != null) { - b2High.set(x, y, z, (id >>> 12) & 0xF); - if (b3 != null) { - b3[index] = (byte) ((id >>> 16) & 0xFF); - } - } - } - } - - /** - * @author FalsePattern - * @reason Direct port from dumped code - */ - @Overwrite - public Block getBlockByExtId(int x, int y, int z) { - return Block.getBlockById(eid$getID(x, y, z)); - } - - /** - * @author FalsePattern - * @reason Direct port from dumped code - */ - @Overwrite - public void func_150818_a(int x, int y, int z, Block newBlock) { - Block oldBlock = this.getBlockByExtId(x, y, z); - if (oldBlock != Blocks.air) { - --this.blockRefCount; - if (oldBlock.getTickRandomly()) { - --this.tickRefCount; - } - } - - if (newBlock != Blocks.air) { - ++this.blockRefCount; - if (newBlock.getTickRandomly()) { - ++this.tickRefCount; - } - } - - int blockID = Hooks.getIdFromBlockWithCheck(newBlock, oldBlock); - eid$setID(x, y, z, blockID); - } - - /** - * @author FalsePattern - * @reason meta ID extension - */ - @Overwrite - public int getExtBlockMetadata(int x, int y, int z) { - int meta = blockMetadataArray.get(x, y, z); - if (m1High != null) { - meta |= m1High.get(x, y, z) << 4; - if (m2 != null) { - meta |= (m2[(y << 8) | (z << 4) | x] & 0xFF) << 8; - } - } - return meta; - } - - /** - * @author FalsePattern - * @reason meta ID extension - */ - @Overwrite - public void setExtBlockMetadata(int x, int y, int z, int meta) { - blockMetadataArray.set(x, y, z, meta & 0xF); - if (meta > 0xF) { - if (m1High == null) { - eid$createM1High(); - } - if (meta > 0xFF && m2 == null) { - eid$createM2(); - } - } - if (m1High != null) { - m1High.set(x, y, z, (meta >>> 4) & 0xF); - if (m2 != null) { - m2[(y << 8) | (z << 4) | x] = (byte) ((meta >>> 8) & 0xFF); - } - } - } - - @Override - public int eid$getMetadata(int x, int y, int z) { - return getExtBlockMetadata(x, y, z); - } - - @Override - public void eid$setMetadata(int x, int y, int z, int id) { - setExtBlockMetadata(x, y, z, id); - } - - private UnsupportedOperationException emergencyCrash() { - val crashMSG = "A mod that is incompatible with " + Tags.MODNAME + " has tried to access the block array of a" + - " chunk like in vanilla! Crashing in fear of potential world corruption!\n" + - "Please report this issue on https://github.com/GTMEGA/EndlessIDs ASAP!"; - EndlessIDs.LOG.fatal(crashMSG); - return new UnsupportedOperationException(crashMSG); - } - - @Override - public byte[] eid$getB1() { - return blockLSBArray; - } - - @Override - public void eid$setB1(byte[] data) { - blockLSBArray = data; - } - - @Override - public NibbleArray eid$getB2Low() { - return blockMSBArray; - } - - @Override - public void eid$setB2Low(NibbleArray data) { - blockMSBArray = data; - } - - @Override - public NibbleArray eid$createB2Low() { - return (blockMSBArray = new NibbleArray(blocksPerSubChunk, 4)); - } - - @Override - public NibbleArray eid$getB2High() { - return b2High; - } - - @Override - public void eid$setB2High(NibbleArray data) { - b2High = data; - } - - @Override - public NibbleArray eid$createB2High() { - return (b2High = new NibbleArray(blocksPerSubChunk, 4)); - } - - @Override - public byte[] eid$getB3() { - return b3; - } - - @Override - public void eid$setB3(byte[] data) { - b3 = data; - } - - @Override - public byte[] eid$createB3() { - return b3 = new byte[blocksPerSubChunk]; - } - - @Override - public NibbleArray eid$getM1Low() { - return blockMetadataArray; - } - - @Override - public void eid$setM1Low(NibbleArray m1Low) { - blockMetadataArray = m1Low; - } - - @Override - public NibbleArray eid$getM1High() { - return m1High; - } - - @Override - public void eid$setM1High(NibbleArray m1High) { - this.m1High = m1High; - } - - @Override - public NibbleArray eid$createM1High() { - return (m1High = new NibbleArray(blocksPerSubChunk, 4)); - } - - @Override - public byte[] eid$getM2() { - return m2; - } - - @Override - public void eid$setM2(byte[] m2) { - this.m2 = m2; - } - - @Override - public byte[] eid$createM2() { - return (m2 = new byte[blocksPerSubChunk]); - } - - @Override - public int eid$getBlockMask() { - if (blockMSBArray == null) { - return 0b00; - } - if (b2High == null) { - return 0b01; - } - if (b3 == null) { - return 0b10; - } - return 0b11; - } - - @Override - public int eid$getMetadataMask() { - if (m1High == null) { - return 0b01; - } - if (m2 == null) { - return 0b10; - } - return 0b11; - } - - @Inject(method = {"getBlockMSBArray", "createBlockMSBArray"}, - at = @At("HEAD"), - expect = 0) - private void crashMSBArray(CallbackInfoReturnable cir) { - throw emergencyCrash(); - } - - @Inject(method = "clearMSBArray", - at = @At("HEAD"), - expect = 0) - private void crashMSBArray(CallbackInfo ci) { - throw emergencyCrash(); - } - - @Inject(method = "setBlockMSBArray", - at = @At("HEAD"), - expect = 0) - private void crashMSBArray(NibbleArray p_76673_1_, CallbackInfo ci) { - throw emergencyCrash(); - } - - @Inject(method = "setBlockLSBArray", - at = @At("HEAD"), - expect = 0) - private void crashLSBArray(byte[] p_76664_1_, CallbackInfo ci) { - throw emergencyCrash(); - } - - @Inject(method = "getBlockLSBArray", - at = @At("HEAD"), - expect = 0) - private void crashLSBArray(CallbackInfoReturnable cir) { - throw emergencyCrash(); - } - - @Inject(method = "setBlockMetadataArray", - at = @At("HEAD"), - expect = 0) - private void crashMetadataArray(NibbleArray p_76668_1_, CallbackInfo ci) { - throw emergencyCrash(); - } - - @Inject(method = "getMetadataArray", - at = @At("HEAD"), - expect = 0) - private void crashMetadataArray(CallbackInfoReturnable cir) { - throw emergencyCrash(); +public class ExtendedBlockStorageMixin +{ + @Redirect(method = "removeInvalidBlocks", + at = @At(value = "INVOKE", + target = "Lnet/minecraft/world/chunk/storage/ExtendedBlockStorage;getBlockByExtId(III)Lnet/minecraft/block/Block;"), + require = 1) + private Block removeInvalidBlocks(ExtendedBlockStorage instance, int x, int y, int z) { + var block = instance.getBlockByExtId(x, y, z); + if (block == null && GeneralConfig.removeInvalidBlocks) { + instance.func_150818_a(x, y, z, Blocks.air); + block = Blocks.air; + } + return block; } } diff --git a/src/main/java/com/falsepattern/endlessids/mixin/plugin/Mixin.java b/src/main/java/com/falsepattern/endlessids/mixin/plugin/Mixin.java index 72e9b7e..1685114 100644 --- a/src/main/java/com/falsepattern/endlessids/mixin/plugin/Mixin.java +++ b/src/main/java/com/falsepattern/endlessids/mixin/plugin/Mixin.java @@ -419,23 +419,25 @@ public enum Mixin implements IMixins { // region BlockItem - BlockItem_Thermos(Phase.EARLY, + BlockItem_Vanilla(Phase.EARLY, () -> { return Ext.BlockItem.getAsBoolean() && !hasThermos(); }, - common("blockitem.thermos.ExtendedBlockStorageMixin")), + common("blockitem.vanilla.ExtendedBlockStorageMixin")), + BlockItem_Thermos(Phase.EARLY, + () -> { return Ext.BlockItem.getAsBoolean() && hasThermos(); }, + common("blockitem.thermos.NibbleArrayMixin")), - BlockItem_Vanilla(Phase.EARLY, + BlockItem_Common(Phase.EARLY, Ext.BlockItem, - common("blockitem.vanilla.BlockFireMixin", - "blockitem.vanilla.BlockMixin", - "blockitem.vanilla.ExtendedBlockStorageMixin", - "blockitem.vanilla.ItemInWorldManagerMixin", - "blockitem.vanilla.ItemStackMixin", - "blockitem.vanilla.PacketBufferMixin", - "blockitem.vanilla.S22PacketMultiBlockChangeMixin", - "blockitem.vanilla.S24PacketBlockActionMixin", - "blockitem.vanilla.StatListMixin", - "blockitem.vanilla.WorldMixin", - "blockitem.thermos.NibbleArrayMixin"), + common("blockitem.common.BlockFireMixin", + "blockitem.common.BlockMixin", + "blockitem.common.ExtendedBlockStorageMixin", + "blockitem.common.ItemInWorldManagerMixin", + "blockitem.common.ItemStackMixin", + "blockitem.common.PacketBufferMixin", + "blockitem.common.S22PacketMultiBlockChangeMixin", + "blockitem.common.S24PacketBlockActionMixin", + "blockitem.common.StatListMixin", + "blockitem.common.WorldMixin"), client("blockitem.vanilla.PlayerControllerMPMixin", "blockitem.vanilla.RenderGlobalMixin")), From 7bc4e82fdb02fffe57f2553ed6033fee8f2dd9c4 Mon Sep 17 00:00:00 2001 From: rjnasers Date: Sun, 25 Jan 2026 21:07:08 +0100 Subject: [PATCH 4/8] Why you no work --- .../ChunkProviderSpaceLakesGTNHMixin.java | 60 +++++++++++++++++++ .../blockitem/thermos/NibbleArrayMixin.java | 4 ++ .../endlessids/mixin/plugin/Mixin.java | 1 + 3 files changed, 65 insertions(+) create mode 100644 src/main/java/com/falsepattern/endlessids/mixin/mixins/common/biome/galaxyspace/ChunkProviderSpaceLakesGTNHMixin.java diff --git a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/biome/galaxyspace/ChunkProviderSpaceLakesGTNHMixin.java b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/biome/galaxyspace/ChunkProviderSpaceLakesGTNHMixin.java new file mode 100644 index 0000000..c6dcf23 --- /dev/null +++ b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/biome/galaxyspace/ChunkProviderSpaceLakesGTNHMixin.java @@ -0,0 +1,60 @@ +/* + * EndlessIDs + * + * Copyright (C) 2022-2025 FalsePattern, The MEGA Team + * All Rights Reserved + * + * The above copyright notice, this permission notice and the word "MEGA" + * shall be included in all copies or substantial portions of the Software. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, only version 3 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ + +package com.falsepattern.endlessids.mixin.mixins.common.biome.galaxyspace; + +import com.falsepattern.endlessids.mixin.helpers.BiomePatchHelper; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Pseudo; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +import net.minecraft.world.biome.BiomeGenBase; +import net.minecraft.world.chunk.Chunk; + +@Pseudo +@Mixin(targets = "galaxyspace.core.dimension.ChunkProviderSpaceLakes", + remap = false) + +public abstract class ChunkProviderSpaceLakesGTNHMixin +{ + @Shadow + protected BiomeGenBase[] biomesForGeneration; + + /** + * @author Cardinalstar16 + * @reason The Galaxy-space mod maintained by GTNH has a different class layout than + * non-GTNH versions of galaxy space. Additionally, biomesForGeneration must be + * shadowed with protected access rather than private since GTNH galaxy space also applies + * an access transformer on the biomesForGenerationField. + */ + @SuppressWarnings("UnresolvedMixinReference") + @Redirect(method = "func_73154_d", + at = @At(value = "INVOKE", + target = "Lnet/minecraft/world/chunk/Chunk;func_76605_m()[B"), + require = 0, + expect = 0) + private byte[] setBiomesTweaked(Chunk chunk) { + return BiomePatchHelper.getBiomeArrayTweaked(chunk, biomesForGeneration); + } +} diff --git a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/thermos/NibbleArrayMixin.java b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/thermos/NibbleArrayMixin.java index a2f2778..ea95b41 100644 --- a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/thermos/NibbleArrayMixin.java +++ b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/thermos/NibbleArrayMixin.java @@ -39,10 +39,14 @@ public class NibbleArrayMixin { @Shadow private int depthBits; // depthBits @Shadow private int depthBitsPlusFour; // depthBitsPlusFour + @SuppressWarnings("MixinAnnotationTarget") @Shadow private int length; + @SuppressWarnings("MixinAnnotationTarget") @Shadow private byte trivialByte; + @SuppressWarnings("MixinAnnotationTarget") @Shadow private byte trivialValue; + @SuppressWarnings("MixinAnnotationTarget") @Inject( method = "detectAndProcessTrivialArray", at = @At( diff --git a/src/main/java/com/falsepattern/endlessids/mixin/plugin/Mixin.java b/src/main/java/com/falsepattern/endlessids/mixin/plugin/Mixin.java index 1685114..179d6a4 100644 --- a/src/main/java/com/falsepattern/endlessids/mixin/plugin/Mixin.java +++ b/src/main/java/com/falsepattern/endlessids/mixin/plugin/Mixin.java @@ -283,6 +283,7 @@ public enum Mixin implements IMixins { common("biome.galaxyspace.ChunkProviderKuiperMixin", "biome.galaxyspace.ChunkProviderMarsSSMixin", "biome.galaxyspace.ChunkProviderSpaceLakesMixin", + "biome.galaxyspace.ChunkProviderSpaceLakesGTNHMixin", "biome.galaxyspace.ChunkProviderVenusSSMixin")), Biome_Highlands(Phase.LATE, From 3514f9098df0703a85983d27dbd5c48253823af2 Mon Sep 17 00:00:00 2001 From: rjnasers Date: Sun, 25 Jan 2026 21:59:19 +0100 Subject: [PATCH 5/8] Adding in AT, and fixing mixin --- build.gradle.kts | 4 ++-- .../ChunkProviderSpaceLakesGTNHMixin.java | 18 ++++++++++-------- src/main/resources/META-INF/endlessids_at.cfg | 2 ++ 3 files changed, 14 insertions(+), 10 deletions(-) create mode 100644 src/main/resources/META-INF/endlessids_at.cfg diff --git a/build.gradle.kts b/build.gradle.kts index a91e5d0..5812e55 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -14,11 +14,11 @@ minecraft_fp { mixin { pkg = "mixin.mixins" - debug = true } core { coreModClass = "asm.EndlessIDsCore" + accessTransformerFile = "endlessids_at.cfg" } tokens { @@ -69,7 +69,7 @@ dependencies { // region Our deps implementationSplit("com.falsepattern:falsepatternlib-mc1.7.10:1.9.0") compileOnly("it.unimi.dsi:fastutil:8.5.16") - implementationSplit("com.falsepattern:chunkapi-mc1.7.10:0.6.4") + implementationSplit("com.falsepattern:chunkapi-mc1.7.10:0.7.0-alpha-01") // endregion // region maintained mods diff --git a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/biome/galaxyspace/ChunkProviderSpaceLakesGTNHMixin.java b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/biome/galaxyspace/ChunkProviderSpaceLakesGTNHMixin.java index c6dcf23..b90bdbe 100644 --- a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/biome/galaxyspace/ChunkProviderSpaceLakesGTNHMixin.java +++ b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/biome/galaxyspace/ChunkProviderSpaceLakesGTNHMixin.java @@ -25,28 +25,30 @@ import com.falsepattern.endlessids.mixin.helpers.BiomePatchHelper; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Pseudo; -import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; -import net.minecraft.world.biome.BiomeGenBase; +import net.minecraft.world.World; import net.minecraft.world.chunk.Chunk; +import net.minecraft.world.gen.ChunkProviderGenerate; @Pseudo @Mixin(targets = "galaxyspace.core.dimension.ChunkProviderSpaceLakes", remap = false) -public abstract class ChunkProviderSpaceLakesGTNHMixin +public abstract class ChunkProviderSpaceLakesGTNHMixin extends ChunkProviderGenerate { - @Shadow - protected BiomeGenBase[] biomesForGeneration; + + public ChunkProviderSpaceLakesGTNHMixin(World p_i2006_1_, long p_i2006_2_, boolean p_i2006_4_) { + super(p_i2006_1_, p_i2006_2_, p_i2006_4_); + } /** * @author Cardinalstar16 * @reason The Galaxy-space mod maintained by GTNH has a different class layout than - * non-GTNH versions of galaxy space. Additionally, biomesForGeneration must be - * shadowed with protected access rather than private since GTNH galaxy space also applies - * an access transformer on the biomesForGenerationField. + * non-GTNH versions of galaxy space. More importantly, biomesForGeneration is AT'd to be protected, + * but cannot be shadowed due to the fact that private members aren't in the byte code of the + * children classes (from what I understand). */ @SuppressWarnings("UnresolvedMixinReference") @Redirect(method = "func_73154_d", diff --git a/src/main/resources/META-INF/endlessids_at.cfg b/src/main/resources/META-INF/endlessids_at.cfg new file mode 100644 index 0000000..06e2d10 --- /dev/null +++ b/src/main/resources/META-INF/endlessids_at.cfg @@ -0,0 +1,2 @@ +#Fields +protected net.minecraft.world.gen.ChunkProviderGenerate field_73231_z # biomesForGeneration \ No newline at end of file From 0041f04d28cfae54335025150434dac369c293d8 Mon Sep 17 00:00:00 2001 From: rjnasers Date: Tue, 27 Jan 2026 14:12:09 +0100 Subject: [PATCH 6/8] Cleanup --- build.gradle.kts | 7 +-- .../blockitem/thermos/NibbleArrayMixin.java | 46 ++++++++++++------- .../vanilla/ExtendedBlockStorageMixin.java | 6 +++ 3 files changed, 37 insertions(+), 22 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 5812e55..48b204e 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -9,7 +9,6 @@ minecraft_fp { modid = "endlessids" name = "EndlessIDs" rootPkg = "$group.endlessids" - version = "1.6.14" } mixin { @@ -56,8 +55,6 @@ minecraft_fp { } repositories { - maven("https://maven.curseforge.com") - maven("https://nexus.gtnewhorizons.com/repository/public/") cursemavenEX() modrinthEX() exclusive(mavenpattern(), "com.falsepattern") @@ -69,7 +66,7 @@ dependencies { // region Our deps implementationSplit("com.falsepattern:falsepatternlib-mc1.7.10:1.9.0") compileOnly("it.unimi.dsi:fastutil:8.5.16") - implementationSplit("com.falsepattern:chunkapi-mc1.7.10:0.7.0-alpha-01") + implementationSplit("com.falsepattern:chunkapi-mc1.7.10:0.6.4") // endregion // region maintained mods @@ -89,7 +86,7 @@ dependencies { // endregion // region unmaintained mods - + //AbyssalCraft 1.9.1.3-FINAL compileOnly(deobfCurse("abyssalcraft-53686:2311135")) diff --git a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/thermos/NibbleArrayMixin.java b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/thermos/NibbleArrayMixin.java index ea95b41..3be9db9 100644 --- a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/thermos/NibbleArrayMixin.java +++ b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/thermos/NibbleArrayMixin.java @@ -35,9 +35,9 @@ public class NibbleArrayMixin { @Shadow - public byte[] data; // Thermos renamed 'data' - @Shadow private int depthBits; // depthBits - @Shadow private int depthBitsPlusFour; // depthBitsPlusFour + public byte[] data; // Thermos renamed 'data' + @Shadow private int depthBits; // depthBits + @Shadow private int depthBitsPlusFour; // depthBitsPlusFour @SuppressWarnings("MixinAnnotationTarget") @Shadow private int length; @@ -45,21 +45,33 @@ public class NibbleArrayMixin { @Shadow private byte trivialByte; @SuppressWarnings("MixinAnnotationTarget") @Shadow private byte trivialValue; - - @SuppressWarnings("MixinAnnotationTarget") - @Inject( - method = "detectAndProcessTrivialArray", - at = @At( - value = "FIELD", - opcode = Opcodes.PUTFIELD, - target = "Lnet/minecraft/world/chunk/NibbleArray;data:[B", - shift = At.Shift.BEFORE - ), - cancellable = true) - private void logBeforeNull(CallbackInfo ci) { - ci.cancel(); - } + /** + * @author Cardinalstar16 + * @reason Thermos compat. + * Thermos thinks it's a good idea to nullify some nibble array members if they are a + * "Trivial array". Just disable this functionality if we detect thermos. + */ + @SuppressWarnings("MixinAnnotationTarget") + @Inject( + method = "detectAndProcessTrivialArray", + at = @At( + value = "FIELD", + opcode = Opcodes.PUTFIELD, + target = "Lnet/minecraft/world/chunk/NibbleArray;data:[B", + shift = At.Shift.BEFORE + ), + cancellable = true) + private void logBeforeNull(CallbackInfo ci) { + ci.cancel(); + } + + /** + * @author Cardinalstar16 + * @reason Thermos compat. + * Thermos thinks it's a good idea to nullify some nibble array members if they are a + * "Trivial array". Just disable this functionality if we detect thermos. + */ @Inject(method = "(II)V", at = @At("RETURN")) private void fixConstructor(int par1, int par2, CallbackInfo ci) { this.data = new byte[par1 >> 1]; diff --git a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/vanilla/ExtendedBlockStorageMixin.java b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/vanilla/ExtendedBlockStorageMixin.java index fe840b6..d8a02c7 100644 --- a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/vanilla/ExtendedBlockStorageMixin.java +++ b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/vanilla/ExtendedBlockStorageMixin.java @@ -35,6 +35,12 @@ @Mixin(ExtendedBlockStorage.class) public class ExtendedBlockStorageMixin { + /** + * @author Cardinalstar16 + * @reason Id Extension + * Thermos does this already, so I just moved this into a mixin that is only loaded if thermos + * is not enabled. + */ @Redirect(method = "removeInvalidBlocks", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/chunk/storage/ExtendedBlockStorage;getBlockByExtId(III)Lnet/minecraft/block/Block;"), From 569818f9bd1638783f4edcfe644bff96cd08323e Mon Sep 17 00:00:00 2001 From: rjnasers Date: Tue, 27 Jan 2026 15:43:34 +0100 Subject: [PATCH 7/8] copyright --- .../biome/galaxyspace/ChunkProviderSpaceLakesGTNHMixin.java | 1 + .../mixin/mixins/common/blockitem/thermos/NibbleArrayMixin.java | 1 + 2 files changed, 2 insertions(+) diff --git a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/biome/galaxyspace/ChunkProviderSpaceLakesGTNHMixin.java b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/biome/galaxyspace/ChunkProviderSpaceLakesGTNHMixin.java index b90bdbe..6986df2 100644 --- a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/biome/galaxyspace/ChunkProviderSpaceLakesGTNHMixin.java +++ b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/biome/galaxyspace/ChunkProviderSpaceLakesGTNHMixin.java @@ -2,6 +2,7 @@ * EndlessIDs * * Copyright (C) 2022-2025 FalsePattern, The MEGA Team + * Copyright (C) 2025 Cardinalstar16 * All Rights Reserved * * The above copyright notice, this permission notice and the word "MEGA" diff --git a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/thermos/NibbleArrayMixin.java b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/thermos/NibbleArrayMixin.java index 3be9db9..984c717 100644 --- a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/thermos/NibbleArrayMixin.java +++ b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/thermos/NibbleArrayMixin.java @@ -2,6 +2,7 @@ * EndlessIDs * * Copyright (C) 2022-2025 FalsePattern, The MEGA Team + * Copyright (C) 2025 Cardinalstar16 * All Rights Reserved * * The above copyright notice, this permission notice and the word "MEGA" From b7d1cd2ee132064a99e0cac21213aa5c74a73587 Mon Sep 17 00:00:00 2001 From: rjnasers Date: Tue, 27 Jan 2026 16:24:05 +0100 Subject: [PATCH 8/8] Revert accdiental header update --- .../mixin/mixins/common/blockitem/common/BlockFireMixin.java | 2 +- .../mixin/mixins/common/blockitem/common/BlockMixin.java | 2 +- .../common/blockitem/common/ExtendedBlockStorageMixin.java | 2 +- .../mixins/common/blockitem/common/ItemInWorldManagerMixin.java | 2 +- .../mixin/mixins/common/blockitem/common/ItemStackMixin.java | 2 +- .../mixin/mixins/common/blockitem/common/PacketBufferMixin.java | 2 +- .../common/blockitem/common/S22PacketMultiBlockChangeMixin.java | 2 +- .../common/blockitem/common/S24PacketBlockActionMixin.java | 2 +- .../mixin/mixins/common/blockitem/common/StatListMixin.java | 2 +- .../mixin/mixins/common/blockitem/common/WorldMixin.java | 2 +- .../common/blockitem/vanilla/ExtendedBlockStorageMixin.java | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/common/BlockFireMixin.java b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/common/BlockFireMixin.java index cee7087..868428e 100644 --- a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/common/BlockFireMixin.java +++ b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/common/BlockFireMixin.java @@ -4,7 +4,7 @@ * Copyright (C) 2022-2025 FalsePattern, The MEGA Team * All Rights Reserved * - * The above copyright notice, this permission notice and the word "MEGA" + * The above copyright notice, this permission notice and the words "MEGA" * shall be included in all copies or substantial portions of the Software. * * This program is free software: you can redistribute it and/or modify diff --git a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/common/BlockMixin.java b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/common/BlockMixin.java index 2465dad..f9e4c0e 100644 --- a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/common/BlockMixin.java +++ b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/common/BlockMixin.java @@ -4,7 +4,7 @@ * Copyright (C) 2022-2025 FalsePattern, The MEGA Team * All Rights Reserved * - * The above copyright notice, this permission notice and the word "MEGA" + * The above copyright notice, this permission notice and the words "MEGA" * shall be included in all copies or substantial portions of the Software. * * This program is free software: you can redistribute it and/or modify diff --git a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/common/ExtendedBlockStorageMixin.java b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/common/ExtendedBlockStorageMixin.java index cc47865..2d23efe 100644 --- a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/common/ExtendedBlockStorageMixin.java +++ b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/common/ExtendedBlockStorageMixin.java @@ -4,7 +4,7 @@ * Copyright (C) 2022-2025 FalsePattern, The MEGA Team * All Rights Reserved * - * The above copyright notice, this permission notice and the word "MEGA" + * The above copyright notice, this permission notice and the words "MEGA" * shall be included in all copies or substantial portions of the Software. * * This program is free software: you can redistribute it and/or modify diff --git a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/common/ItemInWorldManagerMixin.java b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/common/ItemInWorldManagerMixin.java index 0e6690d..4b2425f 100644 --- a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/common/ItemInWorldManagerMixin.java +++ b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/common/ItemInWorldManagerMixin.java @@ -4,7 +4,7 @@ * Copyright (C) 2022-2025 FalsePattern, The MEGA Team * All Rights Reserved * - * The above copyright notice, this permission notice and the word "MEGA" + * The above copyright notice, this permission notice and the words "MEGA" * shall be included in all copies or substantial portions of the Software. * * This program is free software: you can redistribute it and/or modify diff --git a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/common/ItemStackMixin.java b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/common/ItemStackMixin.java index 3e478b8..d50d7b5 100644 --- a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/common/ItemStackMixin.java +++ b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/common/ItemStackMixin.java @@ -4,7 +4,7 @@ * Copyright (C) 2022-2025 FalsePattern, The MEGA Team * All Rights Reserved * - * The above copyright notice, this permission notice and the word "MEGA" + * The above copyright notice, this permission notice and the words "MEGA" * shall be included in all copies or substantial portions of the Software. * * This program is free software: you can redistribute it and/or modify diff --git a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/common/PacketBufferMixin.java b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/common/PacketBufferMixin.java index 0198fcb..dbc0758 100644 --- a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/common/PacketBufferMixin.java +++ b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/common/PacketBufferMixin.java @@ -4,7 +4,7 @@ * Copyright (C) 2022-2025 FalsePattern, The MEGA Team * All Rights Reserved * - * The above copyright notice, this permission notice and the word "MEGA" + * The above copyright notice, this permission notice and the words "MEGA" * shall be included in all copies or substantial portions of the Software. * * This program is free software: you can redistribute it and/or modify diff --git a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/common/S22PacketMultiBlockChangeMixin.java b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/common/S22PacketMultiBlockChangeMixin.java index b591353..184e91b 100644 --- a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/common/S22PacketMultiBlockChangeMixin.java +++ b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/common/S22PacketMultiBlockChangeMixin.java @@ -4,7 +4,7 @@ * Copyright (C) 2022-2025 FalsePattern, The MEGA Team * All Rights Reserved * - * The above copyright notice, this permission notice and the word "MEGA" + * The above copyright notice, this permission notice and the words "MEGA" * shall be included in all copies or substantial portions of the Software. * * This program is free software: you can redistribute it and/or modify diff --git a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/common/S24PacketBlockActionMixin.java b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/common/S24PacketBlockActionMixin.java index 64e4fb5..757a011 100644 --- a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/common/S24PacketBlockActionMixin.java +++ b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/common/S24PacketBlockActionMixin.java @@ -4,7 +4,7 @@ * Copyright (C) 2022-2025 FalsePattern, The MEGA Team * All Rights Reserved * - * The above copyright notice, this permission notice and the word "MEGA" + * The above copyright notice, this permission notice and the words "MEGA" * shall be included in all copies or substantial portions of the Software. * * This program is free software: you can redistribute it and/or modify diff --git a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/common/StatListMixin.java b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/common/StatListMixin.java index e9b9f49..10d8802 100644 --- a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/common/StatListMixin.java +++ b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/common/StatListMixin.java @@ -4,7 +4,7 @@ * Copyright (C) 2022-2025 FalsePattern, The MEGA Team * All Rights Reserved * - * The above copyright notice, this permission notice and the word "MEGA" + * The above copyright notice, this permission notice and the words "MEGA" * shall be included in all copies or substantial portions of the Software. * * This program is free software: you can redistribute it and/or modify diff --git a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/common/WorldMixin.java b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/common/WorldMixin.java index 2d3057e..edc2be7 100644 --- a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/common/WorldMixin.java +++ b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/common/WorldMixin.java @@ -4,7 +4,7 @@ * Copyright (C) 2022-2025 FalsePattern, The MEGA Team * All Rights Reserved * - * The above copyright notice, this permission notice and the word "MEGA" + * The above copyright notice, this permission notice and the words "MEGA" * shall be included in all copies or substantial portions of the Software. * * This program is free software: you can redistribute it and/or modify diff --git a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/vanilla/ExtendedBlockStorageMixin.java b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/vanilla/ExtendedBlockStorageMixin.java index d8a02c7..8ccddad 100644 --- a/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/vanilla/ExtendedBlockStorageMixin.java +++ b/src/main/java/com/falsepattern/endlessids/mixin/mixins/common/blockitem/vanilla/ExtendedBlockStorageMixin.java @@ -4,7 +4,7 @@ * Copyright (C) 2022-2025 FalsePattern, The MEGA Team * All Rights Reserved * - * The above copyright notice, this permission notice and the word "MEGA" + * The above copyright notice, this permission notice and the words "MEGA" * shall be included in all copies or substantial portions of the Software. * * This program is free software: you can redistribute it and/or modify