2023-10-23 15:37:55 +01:00
|
|
|
package com.colen.postea.API;
|
2023-10-23 14:02:09 +01:00
|
|
|
|
|
|
|
|
import net.minecraft.block.Block;
|
2023-10-29 01:06:18 +01:00
|
|
|
import net.minecraft.nbt.NBTTagCompound;
|
|
|
|
|
import net.minecraft.nbt.NBTTagList;
|
2023-10-23 14:02:09 +01:00
|
|
|
import net.minecraft.world.chunk.Chunk;
|
|
|
|
|
import net.minecraft.world.chunk.storage.ExtendedBlockStorage;
|
|
|
|
|
|
2023-10-23 15:37:55 +01:00
|
|
|
public class ChunkFixerUtility {
|
|
|
|
|
public static Chunk fixChunk(Chunk chunk) {
|
2023-10-23 14:02:09 +01:00
|
|
|
// Iterate over each ExtendedBlockStorage. Kinda ugly but does the job...
|
|
|
|
|
for (ExtendedBlockStorage storage : chunk.getBlockStorageArray()) {
|
|
|
|
|
if (storage != null) { // Always check if storage isn't null before using it
|
|
|
|
|
for (int x = 0; x < 16; x++) {
|
|
|
|
|
for (int y = 0; y < 16; y++) { // This is not a mistake, we do this on purpose because of how minecraft stores stuff.
|
|
|
|
|
for (int z = 0; z < 16; z++) {
|
|
|
|
|
|
|
|
|
|
// Get the current block and metadata at the position
|
|
|
|
|
Block currentBlock = storage.getBlockByExtId(x, y, z);
|
|
|
|
|
int currentMeta = storage.getExtBlockMetadata(x, y, z);
|
|
|
|
|
|
|
|
|
|
// Check if there's a replacement for this block+metadata combination
|
|
|
|
|
BlockKey replacement = BlockReplacementManager.getBlockReplacement(currentBlock, currentMeta);
|
|
|
|
|
|
|
|
|
|
// If there's a replacement, set the new block and metadata
|
|
|
|
|
if (replacement != null) {
|
|
|
|
|
storage.func_150818_a(x, y, z, replacement.getBlock());
|
|
|
|
|
storage.setExtBlockMetadata(x, y, z, replacement.getDamage());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2023-10-23 15:37:55 +01:00
|
|
|
return chunk;
|
2023-10-23 14:02:09 +01:00
|
|
|
}
|
2023-10-29 01:06:18 +01:00
|
|
|
|
|
|
|
|
public static void processCode(NBTTagCompound compound) {
|
|
|
|
|
System.out.println(compound.toString());
|
|
|
|
|
|
|
|
|
|
swapTileEntities(compound);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private static void swapTileEntities(NBTTagCompound compound) {
|
|
|
|
|
NBTTagList tileEntities = compound.getCompoundTag("Level").getTagList("TileEntities", 10);
|
|
|
|
|
for (int i = 0; i < tileEntities.tagCount(); i++) {
|
|
|
|
|
NBTTagCompound tileEntity = tileEntities.getCompoundTagAt(i);
|
|
|
|
|
String tileEntityStringName = tileEntity.getString("id");
|
|
|
|
|
TileTransformer tileTransformer = TileEntityReplacementManager.getTileReplacementTransformer(tileEntityStringName);
|
|
|
|
|
|
|
|
|
|
if (tileTransformer != null) {
|
|
|
|
|
tileTransformer.modifyNBT(tileEntity);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
2023-10-23 14:02:09 +01:00
|
|
|
}
|