Skip to content

Commit 4f4eff1

Browse files
committed
Fixed some schematic structure things
1 parent 346dbfe commit 4f4eff1

File tree

1 file changed

+16
-4
lines changed

1 file changed

+16
-4
lines changed

src/main/java/modid/imsm/structureloader/SchematicStructure.java

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
import net.minecraft.block.BlockChest;
1212
import net.minecraft.block.state.IBlockState;
1313
import net.minecraft.client.Minecraft;
14-
import net.minecraft.entity.EntityList;
1514
import net.minecraft.entity.EntityType;
1615
import net.minecraft.init.Blocks;
1716
import net.minecraft.item.Item;
@@ -22,9 +21,13 @@
2221
import net.minecraft.tileentity.TileEntity;
2322
import net.minecraft.tileentity.TileEntityChest;
2423
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;
2527
import net.minecraft.util.math.BlockPos;
2628
import net.minecraft.util.math.Vec3d;
2729
import net.minecraft.world.World;
30+
import net.minecraftforge.registries.ForgeRegistries;
2831

2932
public class SchematicStructure extends Structure
3033
{
@@ -93,7 +96,7 @@ public void process(World world, int posX, int posY, int posZ)
9396
//System.out.println("DATA=="+this.blocks[y][z][x]+blockPlacer+this.getCenterPos()+harvestPos);
9497
if (this.blockMode.equals("overlay") && this.blocks[y][z][x] == Blocks.AIR) continue;
9598
//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);
97100
}
98101
//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]));
99102
//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)
143146
UndoCommand.removedPositions.add(translatedPosition);
144147
}
145148
//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);
147150
//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]));
148151
//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]));
149152
if(this.blocks[daddy.i][daddy.j][daddy.k] instanceof BlockChest){
@@ -347,7 +350,16 @@ public void readFromFile()
347350
for (int i = 0; i < blockIdsByte.length; i++)
348351
{
349352
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;
351363
this.blockData[y - 1][z - 1][x - 1] = blockDataByte[i];
352364
x++;
353365
if (x > this.length)

0 commit comments

Comments
 (0)