diff --git a/src/main/java/com/colen/postea/API/BlockReplacementManager.java b/src/main/java/com/colen/postea/API/BlockReplacementManager.java index 9568ac1..bf21b81 100644 --- a/src/main/java/com/colen/postea/API/BlockReplacementManager.java +++ b/src/main/java/com/colen/postea/API/BlockReplacementManager.java @@ -2,30 +2,31 @@ package com.colen.postea.API; import java.util.HashMap; import java.util.Map; -import java.util.function.Function; +import java.util.function.BiFunction; + +import net.minecraft.world.World; import com.colen.postea.Utility.BlockConversionInfo; public class BlockReplacementManager { - private static final Map> blockReplacementMap = new HashMap<>(); + private static final Map> blockReplacementMap = new HashMap<>(); @SuppressWarnings("unused") public static void addBlockReplacement(String blockNameIn, - Function transformer) { + BiFunction transformer) { blockReplacementMap.put(blockNameIn, transformer); } - @SuppressWarnings("unused") - public static BlockConversionInfo getBlockReplacement(BlockConversionInfo blockConversionInfo) { + public static BlockConversionInfo getBlockReplacement(BlockConversionInfo blockConversionInfo, World world) { - Function transformer = blockReplacementMap + BiFunction transformer = blockReplacementMap .getOrDefault(blockConversionInfo.blockName, null); if (transformer == null) { return null; } else { - return transformer.apply(blockConversionInfo); + return transformer.apply(blockConversionInfo, world); } } diff --git a/src/main/java/com/colen/postea/Utility/ChunkFixerUtility.java b/src/main/java/com/colen/postea/Utility/ChunkFixerUtility.java index cc48cf0..18ee057 100644 --- a/src/main/java/com/colen/postea/Utility/ChunkFixerUtility.java +++ b/src/main/java/com/colen/postea/Utility/ChunkFixerUtility.java @@ -32,15 +32,16 @@ public class ChunkFixerUtility { for (int i = 0; i < sections.tagCount(); i++) { NBTTagCompound section = sections.getCompoundTagAt(i); + + // Blocks16 and Data16 exist only because of NEID. byte[] blockArray = section.getByteArray("Blocks16"); - byte[] metadataArray = section.getByteArray("Data16"); // Updated to Data16 + byte[] metadataArray = section.getByteArray("Data16"); + byte sectionY = section.getByte("Y"); for (int index = 0; index < blockArray.length / 2; index++) { int blockId = ((blockArray[index * 2] & 0xFF) << 8) | (blockArray[index * 2 + 1] & 0xFF); - int metadata = ((metadataArray[index * 2] & 0xFF) << 8) | (metadataArray[index * 2 + 1] & 0xFF); // Updated - // for - // Data16 + int metadata = ((metadataArray[index * 2] & 0xFF) << 8) | (metadataArray[index * 2 + 1] & 0xFF); Block block = Block.getBlockById(blockId); String blockName = GameRegistry.findUniqueIdentifierFor(block) @@ -60,7 +61,8 @@ public class ChunkFixerUtility { blockConversionInfo.y = y; blockConversionInfo.z = z + chunkZPos + 1; - BlockConversionInfo output = BlockReplacementManager.getBlockReplacement(blockConversionInfo); + BlockConversionInfo output = BlockReplacementManager.getBlockReplacement(blockConversionInfo, world); + if (output != null) { int newBlockId = output.blockID; int newMetadata = output.metadata;