From b10d6dcfa50f4f59e7a052e4969dfbcf3cf02e6e Mon Sep 17 00:00:00 2001 From: sk89q Date: Sun, 23 Jan 2011 10:09:48 -0800 Subject: [PATCH] Added block data support to snapshots. --- src/com/sk89q/worldedit/data/Chunk.java | 58 ++++++++++--------------- 1 file changed, 24 insertions(+), 34 deletions(-) diff --git a/src/com/sk89q/worldedit/data/Chunk.java b/src/com/sk89q/worldedit/data/Chunk.java index 541f0fea5..eb477305b 100644 --- a/src/com/sk89q/worldedit/data/Chunk.java +++ b/src/com/sk89q/worldedit/data/Chunk.java @@ -188,43 +188,33 @@ public class Chunk { public BaseBlock getBlock(Vector pos) throws DataException { int id = getBlockID(pos); int data = getBlockData(pos); + BaseBlock block; - // Signs - if (id == 63 || id == 68) { - SignBlock block = new SignBlock(id, data); - - Map tileEntity = getBlockTileEntity(pos); - - if (tileEntity != null) { - ((TileEntityBlock)block).fromTileEntityNBT(tileEntity); - } - - return block; - // Chests - } else if (id == 54) { - ChestBlock block = new ChestBlock(); - - Map tileEntity = getBlockTileEntity(pos); - - if (tileEntity != null) { - ((TileEntityBlock)block).fromTileEntityNBT(tileEntity); - } - - return block; - // Mob spawners - } else if (id == 52) { - MobSpawnerBlock block = new MobSpawnerBlock(); - - Map tileEntity = getBlockTileEntity(pos); - - if (tileEntity != null) { - ((TileEntityBlock)block).fromTileEntityNBT(tileEntity); - } - - return block; + if (id == BlockID.WALL_SIGN || id == BlockID.SIGN_POST) { + block = new SignBlock(id, data); + } else if (id == BlockID.CHEST) { + block = new ChestBlock(data); + } else if (id == BlockID.FURNACE || id == BlockID.BURNING_FURNACE) { + block = new FurnaceBlock(id, data); + } else if (id == BlockID.DISPENSER) { + block = new DispenserBlock(data); + } else if (id == BlockID.MOB_SPAWNER) { + block = new MobSpawnerBlock(data); + } else if (id == BlockID.NOTE_BLOCK) { + block = new NoteBlock(data); } else { - return new BaseBlock(id, data); + block = new BaseBlock(id, data); } + + if (block instanceof TileEntityBlock) { + Map tileEntity = getBlockTileEntity(pos); + + if (tileEntity.containsKey(pos)) { + ((TileEntityBlock)block).fromTileEntityNBT(tileEntity); + } + } + + return block; } /**