|
11 | 11 | import net.minecraft.block.BlockChest; |
12 | 12 | import net.minecraft.block.state.IBlockState; |
13 | 13 | import net.minecraft.client.Minecraft; |
14 | | -import net.minecraft.entity.EntityList; |
15 | 14 | import net.minecraft.entity.EntityType; |
16 | 15 | import net.minecraft.init.Blocks; |
17 | 16 | import net.minecraft.item.Item; |
|
22 | 21 | import net.minecraft.tileentity.TileEntity; |
23 | 22 | import net.minecraft.tileentity.TileEntityChest; |
24 | 23 | import net.minecraft.tileentity.TileEntitySign; |
| 24 | +import net.minecraft.util.ResourceLocation; |
| 25 | +import net.minecraft.util.datafix.fixes.ItemIntIDToString; |
| 26 | +import net.minecraft.util.datafix.fixes.ItemStackDataFlattening; |
25 | 27 | import net.minecraft.util.math.BlockPos; |
26 | 28 | import net.minecraft.util.math.Vec3d; |
27 | 29 | import net.minecraft.world.World; |
| 30 | +import net.minecraftforge.registries.ForgeRegistries; |
28 | 31 |
|
29 | 32 | public class SchematicStructure extends Structure |
30 | 33 | { |
@@ -93,7 +96,7 @@ public void process(World world, int posX, int posY, int posZ) |
93 | 96 | //System.out.println("DATA=="+this.blocks[y][z][x]+blockPlacer+this.getCenterPos()+harvestPos); |
94 | 97 | if (this.blockMode.equals("overlay") && this.blocks[y][z][x] == Blocks.AIR) continue; |
95 | 98 | //StructureUtils.setBlock(blockPlacer2, this.blocks[y][z][x].getStateFromMeta(this.blockData[y][z][x]), new BlockPos(x, y, z), this.getCenterPos(), harvestPos); |
96 | | - StructureUtils.setBlock(blockPlacer, this.blocks[y][z][x].getStateFromMeta(this.blockData[y][z][x]), new BlockPos(x, y, z), this.getCenterPos(), harvestPos); |
| 99 | + StructureUtils.setBlock(blockPlacer, this.blocks[y][z][x].getStateById(this.blockData[y][z][x]), new BlockPos(x, y, z), this.getCenterPos(), harvestPos); |
97 | 100 | } |
98 | 101 | //BlockPlaceHandler.setBlock(serverWorld, new BlockPos(this.posX+x, this.posY+y,this.posZ-z), this.blocks[y][z][x].getStateFromMeta(this.blockData[y][z][x])); |
99 | 102 | //BlockPlaceHandler.setBlock(world, new BlockPos(this.posX+x, this.posY+y,this.posZ-z), this.blocks[y][z][x].getStateFromMeta(this.blockData[y][z][x]));} |
@@ -143,7 +146,7 @@ public boolean placeBlock(StructureCreator daddy) |
143 | 146 | UndoCommand.removedPositions.add(translatedPosition); |
144 | 147 | } |
145 | 148 | //System.out.prinln(daddy.i+", "+daddy.j+", "+daddy.k+", "+height+", "+width+", "+length); |
146 | | - StructureUtils.setBlock(this.blockPlacer, this.blocks[daddy.i][daddy.j][daddy.k].getStateFromMeta(this.blockData[daddy.i][daddy.j][daddy.k]), position, this.getCenterPos(), this.harvestPos); |
| 149 | + StructureUtils.setBlock(this.blockPlacer, this.blocks[daddy.i][daddy.j][daddy.k].getStateById(this.blockData[daddy.i][daddy.j][daddy.k]), position, this.getCenterPos(), this.harvestPos); |
147 | 150 | //BlockPlaceHandler.setBlock(serverWorld, new BlockPos(daddy.x-daddy.k, daddy.y+daddy.i,daddy.z-daddy.j), this.blocks[daddy.i][daddy.j][daddy.k].getStateFromMeta(this.blockData[daddy.i][daddy.j][daddy.k])); |
148 | 151 | //BlockPlaceHandler.setBlock(world, new BlockPos(daddy.x-daddy.k, daddy.y+daddy.i,daddy.z-daddy.j), this.blocks[daddy.i][daddy.j][daddy.k].getStateFromMeta(this.blockData[daddy.i][daddy.j][daddy.k])); |
149 | 152 | if(this.blocks[daddy.i][daddy.j][daddy.k] instanceof BlockChest){ |
@@ -347,7 +350,16 @@ public void readFromFile() |
347 | 350 | for (int i = 0; i < blockIdsByte.length; i++) |
348 | 351 | { |
349 | 352 | int blockId = (short) (blockIdsByte[i] & 0xFF); |
350 | | - this.blocks[y - 1][z - 1][x - 1] = Block.getBlockById(blockId); |
| 353 | + byte blockData = blockDataByte[i]; |
| 354 | + |
| 355 | + String legacyName = ItemIntIDToString.getItem(blockId); |
| 356 | + String name = ItemStackDataFlattening.updateItem(legacyName, blockData); |
| 357 | + if (legacyName.equals("minecraft:air") && blockId > 0) name = "minecraft:stone"; |
| 358 | + if (name == null) name = legacyName; |
| 359 | + |
| 360 | + Block block = ForgeRegistries.BLOCKS.getValue(new ResourceLocation(name)); |
| 361 | + |
| 362 | + this.blocks[y - 1][z - 1][x - 1] = block; |
351 | 363 | this.blockData[y - 1][z - 1][x - 1] = blockDataByte[i]; |
352 | 364 | x++; |
353 | 365 | if (x > this.length) |
|
0 commit comments