mirror of
https://github.com/GTNewHorizons/Postea.git
synced 2026-10-26 14:24:19 +00:00
Give world context to block conversion.
This commit is contained in:
1 parent
15a5806887
commit
1b96a07a74
2 files changed
+15
-12
No files matched your search
@@ -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<String, Function<BlockConversionInfo, BlockConversionInfo>> blockReplacementMap = new HashMap<>();
|
||||
private static final Map<String, BiFunction<BlockConversionInfo, World, BlockConversionInfo>> blockReplacementMap = new HashMap<>();
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
public static void addBlockReplacement(String blockNameIn,
|
||||
Function<BlockConversionInfo, BlockConversionInfo> transformer) {
|
||||
BiFunction<BlockConversionInfo, World, BlockConversionInfo> transformer) {
|
||||
blockReplacementMap.put(blockNameIn, transformer);
|
||||
}
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
public static BlockConversionInfo getBlockReplacement(BlockConversionInfo blockConversionInfo) {
|
||||
public static BlockConversionInfo getBlockReplacement(BlockConversionInfo blockConversionInfo, World world) {
|
||||
|
||||
Function<BlockConversionInfo, BlockConversionInfo> transformer = blockReplacementMap
|
||||
BiFunction<BlockConversionInfo, World, BlockConversionInfo> transformer = blockReplacementMap
|
||||
.getOrDefault(blockConversionInfo.blockName, null);
|
||||
|
||||
if (transformer == null) {
|
||||
return null;
|
||||
} else {
|
||||
return transformer.apply(blockConversionInfo);
|
||||
return transformer.apply(blockConversionInfo, world);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in new issue
Block a user