diff --git a/src/common/resources/lang/en_US/item.lang b/src/common/resources/lang/en_US/item.lang
index 077012dc7..2f0bee17e 100644
--- a/src/common/resources/lang/en_US/item.lang
+++ b/src/common/resources/lang/en_US/item.lang
@@ -412,6 +412,9 @@ item.door.oak.painted.white.desc=Every house needs one.
 item.door.glass.name=Glass Door
 item.door.glass.desc=Great for aesthetics, terrible for privacy.
 
+item.door.steel.name=Steel Door
+item.door.steel.desc=Hardened and robust.
+
 item.rope.name=Rope
 item.rope.desc=Strong enough to climb.
 
diff --git a/src/common/resources/lang/en_US/tile.lang b/src/common/resources/lang/en_US/tile.lang
index bcffaf207..a0e516424 100644
--- a/src/common/resources/lang/en_US/tile.lang
+++ b/src/common/resources/lang/en_US/tile.lang
@@ -1 +1 @@
-tile.stone.name=Stone
tile.stone.desc=A block of solid stone.
tile.basalt.name=Basalt
tile.basalt.desc=A block of solid basalt.
tile.limestone.name=Limestone
tile.limestone.desc=A block of solid limestone.
tile.granite.name=Granite
tile.granite.desc=A block of solid granite.
tile.marble.name=Marble
tile.marble.desc=A block of solid marble.
tile.slate.name=Slate
tile.slate.desc=A block of solid slate.
tile.permafrost.name=Permafrost
tile.permafrost.desc=A block of frozen stone.

tile.cobble.stone.name=Cobblestone
tile.cobble.stone.desc=Stone, smashed apart and reconstituted.
tile.cobble.stone.mossy.name=Mossy Cobblestone
tile.cobble.stone.mossy.desc=Cobblestone with added greenery.
tile.cobble.basalt.name=Cobbled Basalt
tile.cobble.basalt.desc=Basalt, smashed apart and reconstituted.
tile.cobble.limestone.name=Cobbled Limestone
tile.cobble.limestone.desc=Limestone, smashed apart and reconstituted.
tile.cobble.granite.name=Cobbled Granite
tile.cobble.granite.desc=Granite, smashed apart and reconstituted.
tile.cobble.permafrost.name=Cobbled Permafrost
tile.cobble.permafrost.desc=Permafrost, smashed apart and reconstituted.

tile.pillar.marble.name=Marble Pillar
tile.pillar.marble.desc=A block of marble engraved into a pillar.
tile.capstone.marble.name=Marble Capstone
tile.capstone.marble.desc=A pillar capstone made of solid marble.

tile.sandstone.name=Sandstone
tile.sandstone.desc=Compacted sand.

tile.stone.carved.name=Carved Stone
tile.stone.carved.desc=Polished Stone with lines hewn through the middle.
tile.granite.carved.name=Carved Granite
tile.granite.carved.desc=Polished Granite with lines hewn through the middle.
tile.limestone.carved.name=Carved Limestone
tile.limestone.carved.desc=Polished Limestone with lines hewn through the middle.
tile.basalt.carved.name=Carved Basalt
tile.basalt.carved.desc=Polished Basalt with lines hewn through the middle.
tile.permafrost.carved.name=Carved Permafrost
tile.permafrost.carved.desc=Polished Permafrost with lines hewn through the middle.

tile.planks.oak.name=Wooden Planks
tile.planks.oak.desc=Processed tree insides.
tile.planks.oak.painted.name=Mystery Planks
tile.planks.oak.painted.desc=How did you get this?!
tile.planks.oak.painted.black.name=Black Wooden Planks
tile.planks.oak.painted.black.desc=Wooden planks, stained black.
tile.planks.oak.painted.red.name=Red Wooden Planks
tile.planks.oak.painted.red.desc=Wooden planks, stained red.
tile.planks.oak.painted.green.name=Green Wooden Planks
tile.planks.oak.painted.green.desc=Wooden planks, stained green.
tile.planks.oak.painted.brown.name=Brown Wooden Planks
tile.planks.oak.painted.brown.desc=Wooden planks, stained brown.
tile.planks.oak.painted.blue.name=Blue Wooden Planks
tile.planks.oak.painted.blue.desc=Wooden planks, stained blue.
tile.planks.oak.painted.purple.name=Purple Wooden Planks
tile.planks.oak.painted.purple.desc=Wooden planks, stained purple.
tile.planks.oak.painted.cyan.name=Cyan Wooden Planks
tile.planks.oak.painted.cyan.desc=Wooden planks, stained cyan.
tile.planks.oak.painted.silver.name=Light Gray Wooden Planks
tile.planks.oak.painted.silver.desc=Wooden planks, stained light gray.
tile.planks.oak.painted.gray.name=Gray Wooden Planks
tile.planks.oak.painted.gray.desc=Wooden planks, stained gray.
tile.planks.oak.painted.pink.name=Pink Wooden Planks
tile.planks.oak.painted.pink.desc=Wooden planks, stained pink.
tile.planks.oak.painted.lime.name=Lime Wooden Planks
tile.planks.oak.painted.lime.desc=Wooden planks, stained lime.
tile.planks.oak.painted.yellow.name=Yellow Wooden Planks
tile.planks.oak.painted.yellow.desc=Wooden planks, stained yellow.
tile.planks.oak.painted.lightblue.name=Light Blue Wooden Planks
tile.planks.oak.painted.lightblue.desc=Wooden planks, stained light blue.
tile.planks.oak.painted.magenta.name=Magenta Wooden Planks
tile.planks.oak.painted.magenta.desc=Wooden planks, stained magenta.
tile.planks.oak.painted.orange.name=Orange Wooden Planks
tile.planks.oak.painted.orange.desc=Wooden planks, stained orange.
tile.planks.oak.painted.white.name=White Wooden Planks
tile.planks.oak.painted.white.desc=Wooden planks, stained white.

tile.torch.coal.name=Torch
tile.torch.coal.desc=Helps light the way.

tile.ladder.oak.name=Oak Ladder
tile.ladder.oak.desc=For very rapid vertical movement.

tile.fence.planks.oak.name=Oak Fence
tile.fence.planks.oak.desc=Too tall to jump over.

tile.fence.planks.oak.painted.name=Mystery Wooden Fence
tile.fence.planks.oak.painted.desc=How did you get this?!
tile.fence.planks.oak.painted.black.name=Black Wooden Fence
tile.fence.planks.oak.painted.black.desc=A wooden fence, stained black.
tile.fence.planks.oak.painted.red.name=Red Wooden Fence
tile.fence.planks.oak.painted.red.desc=A wooden fence, stained red.
tile.fence.planks.oak.painted.green.name=Green Wooden Fence
tile.fence.planks.oak.painted.green.desc=A wooden fence, stained green.
tile.fence.planks.oak.painted.brown.name=Brown Wooden Fence
tile.fence.planks.oak.painted.brown.desc=A wooden fence, stained brown.
tile.fence.planks.oak.painted.blue.name=Blue Wooden Fence
tile.fence.planks.oak.painted.blue.desc=A wooden fence, stained blue.
tile.fence.planks.oak.painted.purple.name=Purple Wooden Fence
tile.fence.planks.oak.painted.purple.desc=A wooden fence, stained purple.
tile.fence.planks.oak.painted.cyan.name=Cyan Wooden Fence
tile.fence.planks.oak.painted.cyan.desc=A wooden fence, stained cyan.
tile.fence.planks.oak.painted.silver.name=Light Gray Wooden Fence
tile.fence.planks.oak.painted.silver.desc=A wooden fence, stained light gray.
tile.fence.planks.oak.painted.gray.name=Gray Wooden Fence
tile.fence.planks.oak.painted.gray.desc=A wooden fence, stained gray.
tile.fence.planks.oak.painted.pink.name=Pink Wooden Fence
tile.fence.planks.oak.painted.pink.desc=A wooden fence, stained pink.
tile.fence.planks.oak.painted.lime.name=Lime Wooden Fence
tile.fence.planks.oak.painted.lime.desc=A wooden fence, stained lime.
tile.fence.planks.oak.painted.yellow.name=Yellow Wooden Fence
tile.fence.planks.oak.painted.yellow.desc=A wooden fence, stained yellow.
tile.fence.planks.oak.painted.lightblue.name=Light Blue Wooden Fence
tile.fence.planks.oak.painted.lightblue.desc=A wooden fence, stained light blue.
tile.fence.planks.oak.painted.magenta.name=Magenta Wooden Fence
tile.fence.planks.oak.painted.magenta.desc=A wooden fence, stained magenta.
tile.fence.planks.oak.painted.orange.name=Orange Wooden Fence
tile.fence.planks.oak.painted.orange.desc=A wooden fence, stained orange.
tile.fence.planks.oak.painted.white.name=White Wooden Fence
tile.fence.planks.oak.painted.white.desc=A wooden fence, stained white.

tile.fencegate.planks.oak.name=Wooden Fence Gate
tile.fencegate.planks.oak.desc=Like a door but for fences.

tile.fencegate.planks.oak.painted.name=Mystery Wooden Fence Gate
tile.fencegate.planks.oak.painted.desc=How did you get this?!
tile.fencegate.planks.oak.painted.black.name=Black Wooden Fence Gate
tile.fencegate.planks.oak.painted.black.desc=A wooden fence gate, stained black.
tile.fencegate.planks.oak.painted.red.name=Red Wooden Fence Gate
tile.fencegate.planks.oak.painted.red.desc=A wooden fence gate, stained red.
tile.fencegate.planks.oak.painted.green.name=Green Wooden Fence Gate
tile.fencegate.planks.oak.painted.green.desc=A wooden fence gate, stained green.
tile.fencegate.planks.oak.painted.brown.name=Brown Wooden Fence Gate
tile.fencegate.planks.oak.painted.brown.desc=A wooden fence gate, stained brown.
tile.fencegate.planks.oak.painted.blue.name=Blue Wooden Fence Gate
tile.fencegate.planks.oak.painted.blue.desc=A wooden fence gate, stained blue.
tile.fencegate.planks.oak.painted.purple.name=Purple Wooden Fence Gate
tile.fencegate.planks.oak.painted.purple.desc=A wooden fence gate, stained purple.
tile.fencegate.planks.oak.painted.cyan.name=Cyan Wooden Fence Gate
tile.fencegate.planks.oak.painted.cyan.desc=A wooden fence gate, stained cyan.
tile.fencegate.planks.oak.painted.silver.name=Light Gray Wooden Fence Gate
tile.fencegate.planks.oak.painted.silver.desc=A wooden fence gate, stained light gray.
tile.fencegate.planks.oak.painted.gray.name=Gray Wooden Fence Gate
tile.fencegate.planks.oak.painted.gray.desc=A wooden fence gate, stained gray.
tile.fencegate.planks.oak.painted.pink.name=Pink Wooden Fence Gate
tile.fencegate.planks.oak.painted.pink.desc=A wooden fence gate, stained pink.
tile.fencegate.planks.oak.painted.lime.name=Lime Wooden Fence Gate
tile.fencegate.planks.oak.painted.lime.desc=A wooden fence gate, stained lime.
tile.fencegate.planks.oak.painted.yellow.name=Yellow Wooden Fence Gate
tile.fencegate.planks.oak.painted.yellow.desc=A wooden fence gate, stained yellow.
tile.fencegate.planks.oak.painted.lightblue.name=Light Blue Wooden Fence Gate
tile.fencegate.planks.oak.painted.lightblue.desc=A wooden fence gate, stained light blue.
tile.fencegate.planks.oak.painted.magenta.name=Magenta Wooden Fence Gate
tile.fencegate.planks.oak.painted.magenta.desc=A wooden fence gate, stained magenta.
tile.fencegate.planks.oak.painted.orange.name=Orange Wooden Fence Gate
tile.fencegate.planks.oak.painted.orange.desc=A wooden fence gate, stained orange.
tile.fencegate.planks.oak.painted.white.name=White Wooden Fence Gate
tile.fencegate.planks.oak.painted.white.desc=A wooden fence gate, stained white.

tile.bookshelf.planks.oak.name=Bookshelf
tile.bookshelf.planks.oak.desc=A repository of knowledge.

tile.wool.name=Wool
tile.wool.desc=How did you get this?!
tile.wool.black.name=Black Wool
tile.wool.black.desc=Sheep's wool, dyed black.
tile.wool.red.name=Red Wool
tile.wool.red.desc=Sheep's wool, dyed red.
tile.wool.green.name=Green Wool
tile.wool.green.desc=Sheep's wool, dyed green.
tile.wool.brown.name=Brown Wool
tile.wool.brown.desc=Sheep's wool, dyed brown.
tile.wool.blue.name=Blue Wool
tile.wool.blue.desc=Sheep's wool, dyed blue.
tile.wool.purple.name=Purple Wool
tile.wool.purple.desc=Sheep's wool, dyed purple.
tile.wool.cyan.name=Cyan Wool
tile.wool.cyan.desc=Sheep's wool, dyed cyan.
tile.wool.silver.name=Light Gray Wool
tile.wool.silver.desc=Sheep's wool, dyed light gray.
tile.wool.gray.name=Gray Wool
tile.wool.gray.desc=Sheep's wool, dyed gray.
tile.wool.pink.name=Pink Wool
tile.wool.pink.desc=Sheep's wool, dyed pink.
tile.wool.lime.name=Lime Wool
tile.wool.lime.desc=Sheep's wool, dyed lime.
tile.wool.yellow.name=Yellow Wool
tile.wool.yellow.desc=Sheep's wool, dyed yellow.
tile.wool.lightblue.name=Light Blue Wool
tile.wool.lightblue.desc=Sheep's wool, dyed light blue.
tile.wool.magenta.name=Magenta Wool
tile.wool.magenta.desc=Sheep's wool, dyed magenta.
tile.wool.orange.name=Orange Wool
tile.wool.orange.desc=Sheep's wool, dyed orange.
tile.wool.white.name=White Wool
tile.wool.white.desc=Sheep's wool, dyed white.

tile.brick.clay.name=Clay Bricks
tile.brick.clay.desc=Stacked bricks of baked clay.
tile.brick.stone.polished.name=Polished Stone Bricks
tile.brick.stone.polished.desc=Stacked bricks of polished stone.
tile.brick.stone.polished.mossy.name=Mossy Polished Stone Bricks
tile.brick.stone.polished.mossy.desc=Stacked bricks of polished stone with added greenery.
tile.brick.sandstone.name=Sandstone Bricks
tile.brick.sandstone.desc=Stacked bricks of sandstone.
tile.brick.gold.name=Gold Bricks
tile.brick.gold.desc=Stacked bricks of gold.
tile.brick.lapis.name=Lapis Lazuli Bricks
tile.brick.lapis.desc=Stacked bricks of lapis lazuli.
tile.brick.basalt.name=Basalt Bricks
tile.brick.basalt.desc=Stacked bricks of basalt.
tile.brick.limestone.name=Limestone Bricks
tile.brick.limestone.desc=Stacked bricks of limestone.
tile.brick.granite.name=Granite Bricks
tile.brick.granite.desc=Stacked bricks of granite.
tile.brick.marble.name=Marble Bricks
tile.brick.marble.desc=Stacked bricks of marble.
tile.brick.slate.name=Slate Bricks
tile.brick.slate.desc=Stacked bricks of slate.
tile.brick.stone.name=Stone Bricks
tile.brick.stone.desc=Stacked bricks of stone.
tile.brick.permafrost.name=Permafrost Bricks
tile.brick.permafrost.desc=Stacked bricks of permafrost.
tile.brick.iron.name=Iron Bricks
tile.brick.iron.desc=Stacked bricks of iron.

tile.slab.planks.oak.name=Wooden Slab
tile.slab.planks.oak.desc=A slab of wooden planks.
tile.slab.cobble.stone.name=Cobblestone Slab
tile.slab.cobble.stone.desc=A slab of cobblestone.
tile.slab.sandstone.name=Sandstone Slab
tile.slab.sandstone.desc=A slab of sandstone.
tile.slab.brick.stone.polished.name=Polished Stone Brick Slab
tile.slab.brick.stone.polished.desc=A slab of polished stone bricks.
tile.slab.stone.carved.name=Polished Stone Slab
tile.slab.stone.carved.desc=A slab of polished stone.
tile.slab.brick.marble.name=Marble Brick Slab
tile.slab.brick.marble.desc=A slab of marble bricks.
tile.slab.brick.clay.name=Clay Brick Slab
tile.slab.brick.clay.desc=A slab of clay bricks.
tile.slab.capstone.marble.name=Marble Capstone Slab
tile.slab.capstone.marble.desc=Marble sculpted into a capstone.
tile.slab.cobble.basalt.name=Cobbled Basalt Slab
tile.slab.cobble.basalt.desc=A slab of cobbled basalt.
tile.slab.cobble.limestone.name=Cobbled Limestone Slab
tile.slab.cobble.limestone.desc=A slab of cobbled limestone.
tile.slab.cobble.granite.name=Cobbled Granite Slab
tile.slab.cobble.granite.desc=A slab of cobbled granite.
tile.slab.brick.basalt.name=Basalt Brick Slab
tile.slab.brick.basalt.desc=A slab of basalt bricks.
tile.slab.brick.limestone.name=Limestone Brick Slab
tile.slab.brick.limestone.desc=A slab of limestone bricks.
tile.slab.brick.granite.name=Granite Brick Slab
tile.slab.brick.granite.desc=A slab of granite bricks.
tile.slab.brick.slate.name=Slate Brick Slab
tile.slab.brick.slate.desc=A slab of slate bricks.
tile.slab.brick.stone.name=Stone Brick Slab
tile.slab.brick.stone.desc=A slab of stone bricks.
tile.slab.granite.carved.name=Polished Granite Slab
tile.slab.granite.carved.desc=A slab of polished granite.
tile.slab.limestone.carved.name=Polished Limestone Slab
tile.slab.limestone.carved.desc=A slab of polished limestone.
tile.slab.basalt.carved.name=Polished Basalt Slab
tile.slab.basalt.carved.desc=A slab of polished basalt.
tile.slab.permafrost.carved.name=Polished Permafrost Slab
tile.slab.permafrost.carved.desc=A slab of polished permafrost.

tile.slab.planks.oak.painted.name=Mystery Wooden Slab
tile.slab.planks.oak.painted.desc=How did you get this?!
tile.slab.planks.oak.painted.black.name=Black Wooden Slab
tile.slab.planks.oak.painted.black.desc=A slab of wooden planks, stained black.
tile.slab.planks.oak.painted.red.name=Red Wooden Slab
tile.slab.planks.oak.painted.red.desc=A slab of wooden planks, stained red.
tile.slab.planks.oak.painted.green.name=Green Wooden Slab
tile.slab.planks.oak.painted.green.desc=A slab of wooden planks, stained green.
tile.slab.planks.oak.painted.brown.name=Brown Wooden Slab
tile.slab.planks.oak.painted.brown.desc=A slab of wooden planks, stained brown.
tile.slab.planks.oak.painted.blue.name=Blue Wooden Slab
tile.slab.planks.oak.painted.blue.desc=A slab of wooden planks, stained blue.
tile.slab.planks.oak.painted.purple.name=Purple Wooden Slab
tile.slab.planks.oak.painted.purple.desc=A slab of wooden planks, stained purple.
tile.slab.planks.oak.painted.cyan.name=Cyan Wooden Slab
tile.slab.planks.oak.painted.cyan.desc=A slab of wooden planks, stained cyan.
tile.slab.planks.oak.painted.silver.name=Light Gray Wooden Slab
tile.slab.planks.oak.painted.silver.desc=A slab of wooden planks, stained light gray.
tile.slab.planks.oak.painted.gray.name=Gray Wooden Slab
tile.slab.planks.oak.painted.gray.desc=A slab of wooden planks, stained gray.
tile.slab.planks.oak.painted.pink.name=Pink Wooden Slab
tile.slab.planks.oak.painted.pink.desc=A slab of wooden planks, stained pink.
tile.slab.planks.oak.painted.lime.name=Lime Wooden Slab
tile.slab.planks.oak.painted.lime.desc=A slab of wooden planks, stained lime.
tile.slab.planks.oak.painted.yellow.name=Yellow Wooden Slab
tile.slab.planks.oak.painted.yellow.desc=A slab of wooden planks, stained yellow.
tile.slab.planks.oak.painted.lightblue.name=Light Blue Wooden Slab
tile.slab.planks.oak.painted.lightblue.desc=A slab of wooden planks, stained light blue.
tile.slab.planks.oak.painted.magenta.name=Magenta Wooden Slab
tile.slab.planks.oak.painted.magenta.desc=A slab of wooden planks, stained magenta.
tile.slab.planks.oak.painted.orange.name=Orange Wooden Slab
tile.slab.planks.oak.painted.orange.desc=A slab of wooden planks, stained orange.
tile.slab.planks.oak.painted.white.name=White Wooden Slab
tile.slab.planks.oak.painted.white.desc=A slab of wooden planks, stained white.
tile.slab.cobble.permafrost.name=Cobbled Permafrost Slab
tile.slab.cobble.permafrost.desc=A slab of cobbled permafrost.
tile.slab.brick.sandstone.name=Sandstone Brick Slab
tile.slab.brick.sandstone.desc=A slab of sandstone bricks.
tile.slab.brick.permafrost.name=Permafrost Brick Slab
tile.slab.brick.permafrost.desc=A slab of permafrost bricks.

tile.stairs.planks.oak.name=Wooden Stairs
tile.stairs.planks.oak.desc=Wooden block used for rapid vertical movement.
tile.stairs.cobble.stone.name=Cobblestone Stairs
tile.stairs.cobble.stone.desc=Cobblestone block used for rapid vertical movement.
tile.stairs.brick.stone.polished.name=Polished Stone Brick Stairs
tile.stairs.brick.stone.polished.desc=Polished stone brick block used for rapid vertical movement.
tile.stairs.brick.marble.name=Marble Brick Stairs
tile.stairs.brick.marble.desc=Marble brick block used for rapid vertical movement.
tile.stairs.cobble.basalt.name=Cobbled Basalt Stairs
tile.stairs.cobble.basalt.desc=Cobbled basalt block used for rapid vertical movement.
tile.stairs.cobble.limestone.name=Cobbled Limestone Stairs
tile.stairs.cobble.limestone.desc=Cobbled limestone block used for rapid vertical movement.
tile.stairs.cobble.granite.name=Cobbled Granite Stairs
tile.stairs.cobble.granite.desc=Cobbled granite block used for rapid vertical movement.
tile.stairs.brick.basalt.name=Basalt Brick Stairs
tile.stairs.brick.basalt.desc=Basalt brick block used for rapid vertical movement.
tile.stairs.brick.limestone.name=Limestone Brick Stairs
tile.stairs.brick.limestone.desc=Limestone brick block used for rapid vertical movement.
tile.stairs.brick.granite.name=Granite Brick Stairs
tile.stairs.brick.granite.desc=Granite brick block used for rapid vertical movement.
tile.stairs.brick.clay.name=Clay Brick Stairs
tile.stairs.brick.clay.desc=Clay brick block used for rapid vertical movement.
tile.stairs.brick.slate.name=Slate Brick Stairs
tile.stairs.brick.slate.desc=Slate brick block used for rapid vertical movement.
tile.stairs.brick.stone.name=Stone Brick Stairs
tile.stairs.brick.stone.desc=Stone brick block used for rapid vertical movement.
tile.stairs.sandstone.name=Sandstone Stairs
tile.stairs.sandstone.desc=Sandstone block used for rapid vertical movement.
tile.stairs.cobble.permafrost.name=Cobbled Permafrost Stairs
tile.stairs.cobble.permafrost.desc=Cobbled permafrost block used for rapid vertical movement.
tile.stairs.brick.sandstone.name=Sandstone Brick Stairs
tile.stairs.brick.sandstone.desc=Sandstone brick block used for rapid vertical movement.
tile.stairs.brick.permafrost.name=Permafrost Brick Stairs
tile.stairs.brick.permafrost.desc=Permafrost brick block used for rapid vertical movement.

tile.stairs.planks.oak.painted.name=Mystery Wooden Stairs
tile.stairs.planks.oak.painted.desc=How did you get this?!
tile.stairs.planks.oak.painted.black.name=Black Wooden Stairs
tile.stairs.planks.oak.painted.black.desc=Wooden steps, stained black.
tile.stairs.planks.oak.painted.red.name=Red Wooden Stairs
tile.stairs.planks.oak.painted.red.desc=Wooden steps, stained red.
tile.stairs.planks.oak.painted.green.name=Green Wooden Stairs
tile.stairs.planks.oak.painted.green.desc=Wooden steps, stained green.
tile.stairs.planks.oak.painted.brown.name=Brown Wooden Stairs
tile.stairs.planks.oak.painted.brown.desc=Wooden steps, stained brown.
tile.stairs.planks.oak.painted.blue.name=Blue Wooden Stairs
tile.stairs.planks.oak.painted.blue.desc=Wooden steps, stained blue.
tile.stairs.planks.oak.painted.purple.name=Purple Wooden Stairs
tile.stairs.planks.oak.painted.purple.desc=Wooden steps, stained purple.
tile.stairs.planks.oak.painted.cyan.name=Cyan Wooden Stairs
tile.stairs.planks.oak.painted.cyan.desc=Wooden steps, stained cyan.
tile.stairs.planks.oak.painted.silver.name=Light Gray Wooden Stairs
tile.stairs.planks.oak.painted.silver.desc=Wooden steps, stained light gray.
tile.stairs.planks.oak.painted.gray.name=Gray Wooden Stairs
tile.stairs.planks.oak.painted.gray.desc=Wooden steps, stained gray.
tile.stairs.planks.oak.painted.pink.name=Pink Wooden Stairs
tile.stairs.planks.oak.painted.pink.desc=Wooden steps, stained pink.
tile.stairs.planks.oak.painted.lime.name=Lime Wooden Stairs
tile.stairs.planks.oak.painted.lime.desc=Wooden steps, stained lime.
tile.stairs.planks.oak.painted.yellow.name=Yellow Wooden Stairs
tile.stairs.planks.oak.painted.yellow.desc=Wooden steps, stained yellow.
tile.stairs.planks.oak.painted.lightblue.name=Light Blue Wooden Stairs
tile.stairs.planks.oak.painted.lightblue.desc=Wooden steps, stained light blue.
tile.stairs.planks.oak.painted.magenta.name=Magenta Wooden Stairs
tile.stairs.planks.oak.painted.magenta.desc=Wooden steps, stained magenta.
tile.stairs.planks.oak.painted.orange.name=Orange Wooden Stairs
tile.stairs.planks.oak.painted.orange.desc=Wooden steps, stained orange.
tile.stairs.planks.oak.painted.white.name=White Wooden Stairs
tile.stairs.planks.oak.painted.white.desc=Wooden steps, stained white.

tile.obsidian.name=Obsidian
tile.obsidian.desc=Rapidly cooled volcanic rock.

tile.glass.name=Glass
tile.glass.desc=Sand heated until it becomes translucent.
tile.glass.tinted.name=Tinted Glass
tile.glass.tinted.desc=Darkened glass that blocks light.

tile.grass.name=Grass
tile.grass.desc=Crisp, crunchy grass.
tile.grass.retro.name=Retro Grass
tile.grass.retro.desc=Crisp, crunchy grass. Smells old.
tile.grass.scorched.name=Scorched Grass
tile.grass.scorched.desc=Grass that has baked in the sun.

tile.path.dirt.name=Dirt Path
tile.path.dirt.desc=Dirt worn down by frequent travelling.

tile.dirt.name=Dirt
tile.dirt.desc=Crumbly brown dirt.
tile.dirt.scorched.name=Scorched Dirt
tile.dirt.scorched.desc=Dirt that has baked in the sun.
tile.dirt.scorched.rich.name=Rich Scorched Dirt
tile.dirt.scorched.rich.desc=Dirt that has baked in the sun, searing in minerals.

tile.mud.name=Mud
tile.mud.desc=Mud sodden to its core.
tile.mud.baked.name=Baked Mud
tile.mud.baked.desc=Mud that's been dried out and cracked.

tile.sponge.dry.name=Sponge
tile.sponge.dry.desc=A dry sponge, good for soaking up water.
tile.sponge.wet.name=Wet Sponge
tile.sponge.wet.desc=A sponge full of water.

tile.moss.stone.name=Mossy Stone
tile.moss.stone.desc=Moss covering a block of stone.
tile.moss.basalt.name=Mossy Basalt
tile.moss.basalt.desc=Moss covering a block of basalt.
tile.moss.limestone.name=Mossy Limestone
tile.moss.limestone.desc=Moss covering a block of limestone.
tile.moss.granite.name=Mossy Granite
tile.moss.granite.desc=Moss covering a block of granite.

tile.sand.name=Sand
tile.sand.desc=Gets everywhere.
tile.gravel.name=Gravel
tile.gravel.desc=A loose collection of pebbles.

tile.bedrock.name=Bedrock
tile.bedrock.desc=The toughest substance known to man.

tile.fluid.water.flowing.name=Flowing Water
tile.fluid.water.flowing.desc=Water that flows when placed.
tile.fluid.water.still.name=Still Water
tile.fluid.water.still.desc=Water that does not flow when placed.
tile.fluid.lava.flowing.name=Flowing Lava
tile.fluid.lava.flowing.desc=Lava that flows when placed.
tile.fluid.lava.still.name=Still Lava
tile.fluid.lava.still.desc=Lava that does not flow when placed.

tile.log.oak.name=Oak Log
tile.log.oak.desc=A log from an oak tree.
tile.log.pine.name=Pine Log
tile.log.pine.desc=A log from a pine tree.
tile.log.birch.name=Birch Log
tile.log.birch.desc=A log from a birch tree.
tile.log.cherry.name=Cherry Log
tile.log.cherry.desc=A log from a cherry tree.
tile.log.eucalyptus.name=Eucalyptus Log
tile.log.eucalyptus.desc=A log from a eucalyptus tree.
tile.log.oak.mossy.name=Mossy Oak Log
tile.log.oak.mossy.desc=A log from a mossy oak tree.
tile.log.thorn.name=Thorn Log
tile.log.thorn.desc=A log from a thorn tree.
tile.log.palm.name=Palm Log
tile.log.palm.desc=A log from a palm tree.

tile.leaves.oak.name=Oak Leaves
tile.leaves.oak.desc=Leaves from an oak tree.
tile.leaves.pine.name=Pine Leaves
tile.leaves.pine.desc=Leaves from a pine tree.
tile.leaves.birch.name=Birch Leaves
tile.leaves.birch.desc=Leaves from a birch tree.
tile.leaves.cherry.name=Cherry Leaves
tile.leaves.cherry.desc=Leaves from a cherry tree.
tile.leaves.eucalyptus.name=Eucalyptus Leaves
tile.leaves.eucalyptus.desc=Leaves from a eucalyptus tree.
tile.leaves.oak.retro.name=Retro Leaves
tile.leaves.oak.retro.desc=Leaves from long ago.
tile.leaves.shrub.name=Shrub Leaves
tile.leaves.shrub.desc=Leaves from a shrub.
tile.leaves.cherry.flowering.name=Flowering Cherry Leaves
tile.leaves.cherry.flowering.desc=Leaves from a cherry tree that are budding with fruit.
tile.leaves.cacao.name=Cacao Leaves
tile.leaves.cacao.desc=Leaves from a cacao tree.
tile.leaves.thorn.name=Thorn Leaves
tile.leaves.thorn.desc=Leaves from a thorn tree.
tile.leaves.palm.name=Palm Leaves
tile.leaves.palm.desc=Leaves from a palm tree.

tile.sapling.oak.name=Oak Sapling
tile.sapling.oak.desc=Plant to grow an oak tree.
tile.sapling.pine.name=Pine Sapling
tile.sapling.pine.desc=Plant to grow a pine tree.
tile.sapling.birch.name=Birch Sapling
tile.sapling.birch.desc=Plant to grow a birch tree.
tile.sapling.cherry.name=Cherry Sapling
tile.sapling.cherry.desc=Plant to grow a cherry tree.
tile.sapling.eucalyptus.name=Eucalyptus Sapling
tile.sapling.eucalyptus.desc=Plant to grow a eucalyptus tree.
tile.sapling.oak.retro.name=Retro Oak Sapling
tile.sapling.oak.retro.desc=Plant to grow a tree from long ago.
tile.sapling.shrub.name=Shrub Sapling
tile.sapling.shrub.desc=Plant to grow a shrub.
tile.sapling.cacao.name=Cacao Sapling
tile.sapling.cacao.desc=Plant to grow a cacao tree.
tile.sapling.thorn.name=Thorn Sapling
tile.sapling.thorn.desc=Plant to grow a thorn tree.
tile.sapling.palm.name=Palm Sapling
tile.sapling.palm.desc=Plant to grow a palm tree.

tile.tallgrass.name=Tall Grass
tile.tallgrass.desc=Lush, growing grass.
tile.tallgrass.fern.name=Fern
tile.tallgrass.fern.desc=A fern plant.
tile.deadbush.name=Dead Bush
tile.deadbush.desc=A dried and withered plant.
tile.spinifex.name=Spinifex
tile.spinifex.desc=A spindly, thin grass from dry regions.
tile.algae.name=Algae
tile.algae.desc=Gooey vegetation that floats on the water's surface.

tile.flower.yellow.name=Dandelion
tile.flower.yellow.desc=A beautiful yellow flower.
tile.flower.red.name=Rose
tile.flower.red.desc=A beautiful red flower.
tile.flower.purple.name=Heather
tile.flower.purple.desc=Sprigs of purple petals. Brings good luck.
tile.flower.lightblue.name=Bluebell
tile.flower.lightblue.desc=A sad-looking blue flower.
tile.flower.pink.name=Orchid
tile.flower.pink.desc=A beautiful pink flower.
tile.flower.orange.name=Marigold
tile.flower.orange.desc=A beautiful orange flower.

tile.mushroom.red.name=Red Mushroom
tile.mushroom.red.desc=A tasty red mushroom. Good for stew.
tile.mushroom.brown.name=Brown Mushroom
tile.mushroom.brown.desc=A tasty brown mushroom. Good for stew.

tile.ore.coal.stone.name=Stone Coal Ore
tile.ore.coal.stone.desc=A chunk of coal embedded in stone.
tile.ore.coal.basalt.name=Basalt Coal Ore
tile.ore.coal.basalt.desc=A chunk of coal embedded in basalt.
tile.ore.coal.limestone.name=Limestone Coal Ore
tile.ore.coal.limestone.desc=A chunk of coal embedded in limestone.
tile.ore.coal.granite.name=Granite Coal Ore
tile.ore.coal.granite.desc=A chunk of coal embedded in granite.
tile.ore.coal.permafrost.name=Permafrost Coal Ore
tile.ore.coal.permafrost.desc=A chunk of coal embedded in permafrost.

tile.ore.iron.stone.name=Stone Iron Ore
tile.ore.iron.stone.desc=Iron nuggets embedded in stone.
tile.ore.iron.basalt.name=Basalt Iron Ore
tile.ore.iron.basalt.desc=Iron nuggets embedded in basalt.
tile.ore.iron.limestone.name=Limestone Iron Ore
tile.ore.iron.limestone.desc=Iron nuggets embedded in limestone.
tile.ore.iron.granite.name=Granite Iron Ore
tile.ore.iron.granite.desc=Iron nuggets embedded in granite.
tile.ore.iron.permafrost.name=Permafrost Iron Ore
tile.ore.iron.permafrost.desc=Iron nuggets embedded in permafrost.

tile.ore.gold.stone.name=Stone Gold Ore
tile.ore.gold.stone.desc=Gold nuggets embedded in stone.
tile.ore.gold.basalt.name=Basalt Gold Ore
tile.ore.gold.basalt.desc=Gold nuggets embedded in basalt.
tile.ore.gold.limestone.name=Limestone Gold Ore
tile.ore.gold.limestone.desc=Gold nuggets embedded in limestone.
tile.ore.gold.granite.name=Granite Gold Ore
tile.ore.gold.granite.desc=Gold nuggets embedded in granite.
tile.ore.gold.permafrost.name=Permafrost Gold Ore
tile.ore.gold.permafrost.desc=Gold nuggets embedded in permafrost.

tile.ore.lapis.stone.name=Stone Lapis Lazuli Ore
tile.ore.lapis.stone.desc=Chunks of lapis lazuli embedded in stone.
tile.ore.lapis.basalt.name=Basalt Lapis Lazuli Ore
tile.ore.lapis.basalt.desc=Chunks of lapis lazuli embedded in basalt.
tile.ore.lapis.limestone.name=Limestone Lapis Lazuli Ore
tile.ore.lapis.limestone.desc=Chunks of lapis lazuli embedded in limestone.
tile.ore.lapis.granite.name=Granite Lapis Lazuli Ore
tile.ore.lapis.granite.desc=Chunks of lapis lazuli embedded in granite.
tile.ore.lapis.permafrost.name=Permafrost Lapis Lazuli Ore
tile.ore.lapis.permafrost.desc=Chunks of lapis lazuli embedded in permafrost.

tile.ore.redstone.stone.name=Stone Redstone Ore
tile.ore.redstone.stone.desc=Red dust embedded in stone.
tile.ore.redstone.basalt.name=Basalt Redstone Ore
tile.ore.redstone.basalt.desc=Red dust embedded in basalt.
tile.ore.redstone.limestone.name=Limestone Redstone Ore
tile.ore.redstone.limestone.desc=Red dust embedded in limestone.
tile.ore.redstone.granite.name=Granite Redstone Ore
tile.ore.redstone.granite.desc=Red dust embedded in granite.
tile.ore.redstone.permafrost.name=Permafrost Redstone Ore
tile.ore.redstone.permafrost.desc=Red dust embedded in permafrost.
tile.ore.redstone.glowing.stone.name=Glowing Stone Redstone Ore
tile.ore.redstone.glowing.stone.desc=Red dust embedded in stone. Emits a faint light.
tile.ore.redstone.glowing.basalt.name=Glowing Basalt Redstone Ore
tile.ore.redstone.glowing.basalt.desc=Red dust embedded in basalt. Emits a faint light.
tile.ore.redstone.glowing.limestone.name=Glowing Limestone Redstone Ore
tile.ore.redstone.glowing.limestone.desc=Red dust embedded in limestone. Emits a faint light.
tile.ore.redstone.glowing.granite.name=Glowing Granite Redstone Ore
tile.ore.redstone.glowing.granite.desc=Red dust embedded in granite. Emits a faint light.
tile.ore.redstone.glowing.permafrost.name=Glowing Permafrost Redstone Ore
tile.ore.redstone.glowing.permafrost.desc=Red dust embedded in permafrost. Emits a faint light.

tile.ore.diamond.stone.name=Stone Diamond Ore
tile.ore.diamond.stone.desc=A chunk of diamond embedded in stone.
tile.ore.diamond.basalt.name=Basalt Diamond Ore
tile.ore.diamond.basalt.desc=A chunk of diamond embedded in basalt.
tile.ore.diamond.limestone.name=Limestone Diamond Ore
tile.ore.diamond.limestone.desc=A chunk of diamond embedded in limestone.
tile.ore.diamond.granite.name=Granite Diamond Ore
tile.ore.diamond.granite.desc=A chunk of diamond embedded in granite.
tile.ore.diamond.permafrost.name=Permafrost Diamond Ore
tile.ore.diamond.permafrost.desc=A chunk of diamond embedded in permafrost.

tile.ore.nethercoal.netherrack.name=Nether Coal Ore
tile.ore.nethercoal.netherrack.desc=A lump of Nether Coal embedded in netherrack.

tile.block.coal.name=Block of Coal
tile.block.coal.desc=A solid block of coal.
tile.block.iron.name=Block of Iron
tile.block.iron.desc=A solid block of iron. Heavy!
tile.block.gold.name=Block of Gold
tile.block.gold.desc=A solid block of gold, for flaunting your bling.
tile.block.lapis.name=Block of Lapis Lazuli
tile.block.lapis.desc=A solid block of lapis lazuli.
tile.block.redstone.name=Block of Redstone
tile.block.redstone.desc=A solid block of redstone.
tile.block.diamond.name=Block of Diamond
tile.block.diamond.desc=A solid block of diamond. Well done you.
tile.block.nethercoal.name=Block of Nether Coal
tile.block.nethercoal.desc=A solid block of Nether Coal.
tile.block.steel.name=Block of Steel
tile.block.steel.desc=A solid block of steel.
tile.block.quartz.name=Block of Quartz
tile.block.quartz.desc=A solid block of quartz.
tile.block.olivine.name=Block of Olivine
tile.block.olivine.desc=A solid block of olivine.
tile.block.charcoal.name=Block of Charcoal
tile.block.charcoal.desc=A solid block of charcoal.

tile.wire.redstone.name=Redstone Wire
tile.wire.redstone.desc=A strand of redstone dust laid on the ground.

tile.torch.redstone.idle.name=Redstone Torch
tile.torch.redstone.idle.desc=Emits a constant redstone signal.
tile.torch.redstone.active.name=Redstone Torch
tile.torch.redstone.active.desc=Emits a constant redstone signal.

tile.button.stone.name=Stone Button
tile.button.stone.desc=Emits a brief redstone signal when pressed.

tile.lever.cobble.stone.name=Cobblestone Lever
tile.lever.cobble.stone.desc=Allows turning a redstone signal on or off.

tile.pressureplate.stone.name=Stone Pressure Plate
tile.pressureplate.stone.desc=Emits a redstone signal when living creatures step on it.
tile.pressureplate.planks.oak.name=Wooden Pressure Plate
tile.pressureplate.planks.oak.desc=Emits a redstone signal when anything steps on it.
tile.pressureplate.cobble.stone.name=Cobblestone Pressure Plate
tile.pressureplate.cobble.stone.desc=Emits a redstone signal when players step on it.

tile.motionsensor.idle.name=Motion Sensor
tile.motionsensor.idle.desc=Emits a redstone signal when something moves past it.
tile.motionsensor.active.name=Active Motion Sensor
tile.motionsensor.active.desc=Emits a redstone signal when something moves past it.

tile.repeater.idle.name=Redstone Repeater
tile.repeater.idle.desc=Repeats redstone signals over a distance.
tile.repeater.active.name=Redstone Repeater
tile.repeater.active.desc=Repeats redstone signals over a distance.

tile.piston.base.name=Piston
tile.piston.base.desc=Pushes blocks but does not pull them.
tile.piston.base.sticky.name=Sticky Piston
tile.piston.base.sticky.desc=Pushes and pulls blocks.
tile.piston.head.name=Piston Head
tile.piston.head.desc=The pushy part of the piston.
tile.piston.moving.name=Piston Mover
tile.piston.moving.desc=The invisible moving part of the piston.

tile.noteblock.name=Note Block
tile.noteblock.desc=Plays a musical note when powered.

tile.rail.name=Rail
tile.rail.desc=For rapid horizontal movement via minecart.
tile.rail.powered.name=Powered Rail
tile.rail.powered.desc=Makes minecarts go faster when powered.
tile.rail.detector.name=Detector Rail
tile.rail.detector.desc=Emits a redstone signal when a minecart crosses it.

tile.spikes.name=Spike Trap
tile.spikes.desc=Deactivates when powered. Technically a war crime.

tile.dispenser.cobble.stone.name=Dispenser
tile.dispenser.cobble.stone.desc=Fires items out of the hole in the front.

tile.trapdoor.planks.oak.name=Oak Trapdoor
tile.trapdoor.planks.oak.desc=Like a door, but flat.
tile.trapdoor.iron.name=Iron Trapdoor
tile.trapdoor.iron.desc=Like a door, but flat and made of iron.
tile.trapdoor.glass.name=Glass Trapdoor
tile.trapdoor.glass.desc=Useless at its job.

tile.tnt.name=TNT
tile.tnt.desc=Goes off with a bang.

tile.door.planks.oak.bottom.name=Bottom Wooden Door
tile.door.planks.oak.bottom.desc=/give Honeydew 64 46
tile.door.planks.oak.top.name=Top Wooden Door
tile.door.planks.oak.top.desc=Oh, wait, that's not TNT, that's half a door.
tile.door.iron.bottom.name=Bottom Iron Door
tile.door.iron.bottom.desc=Not much good on its own.
tile.door.iron.top.name=Top Iron Door
tile.door.iron.top.desc=Could use a friend.

tile.mesh.name=Mesh Block
tile.mesh.desc=Allows items to pass through but nothing else.
tile.mesh.gold.name=Gold Mesh Block
tile.mesh.gold.desc=Allows a specified item to pass through but nothing else.

tile.bed.name=Bed
tile.bed.desc=Bed!
tile.seat.name=Seat
tile.seat.desc=Sit down and relax.

tile.cobweb.name=Cobweb
tile.cobweb.desc=Sticky silky strands woven by spiders.

tile.fire.name=Fire
tile.fire.desc=Ouch, fire hot!
tile.brazier.inactive.name=Brazier
tile.brazier.inactive.desc=A safe place to keep a fire.
tile.brazier.active.name=Lit Brazier
tile.brazier.active.desc=A safe place to keep a fire.

tile.mobspawner.name=Mob Spawner
tile.mobspawner.desc=A cage filled with horror.
tile.mobspawner.deactivated.name=Deactivated Mob Spawner
tile.mobspawner.deactivated.desc=A cage no longer filled with horror.

tile.workbench.name=Workbench
tile.workbench.desc=For bigger projects.

tile.furnace.stone.idle.name=Furnace
tile.furnace.stone.idle.desc=For melting, heating, and cooking blocks and items.
tile.furnace.stone.active.name=Lit Furnace
tile.furnace.stone.active.desc=For melting, heating, and cooking blocks and items.
tile.furnace.blast.idle.name=Blast Furnace
tile.furnace.blast.idle.desc=Burns hotter than a normal furnace.
tile.furnace.blast.active.name=Lit Blast Furnace
tile.furnace.blast.active.desc=Burns hotter than a normal furnace.

tile.trommel.idle.name=Trommel
tile.trommel.idle.desc=A machine that separates dirt from other useful items.
tile.trommel.active.name=Lit Trommel
tile.trommel.active.desc=A machine that separates dirt from other useful items.

tile.chest.planks.oak.name=Wooden Chest
tile.chest.planks.oak.desc=A place to store your items.
tile.chest.planks.oak.painted.name=Mystery Wooden Chest
tile.chest.planks.oak.painted.desc=How did you get this?!
tile.chest.planks.oak.painted.black.name=Black Wooden Chest
tile.chest.planks.oak.painted.black.desc=A place to store your items.
tile.chest.planks.oak.painted.red.name=Red Wooden Chest
tile.chest.planks.oak.painted.red.desc=A place to store your items.
tile.chest.planks.oak.painted.green.name=Green Wooden Chest
tile.chest.planks.oak.painted.green.desc=A place to store your items.
tile.chest.planks.oak.painted.brown.name=Brown Wooden Chest
tile.chest.planks.oak.painted.brown.desc=A place to store your items.
tile.chest.planks.oak.painted.blue.name=Blue Wooden Chest
tile.chest.planks.oak.painted.blue.desc=A place to store your items.
tile.chest.planks.oak.painted.purple.name=Purple Wooden Chest
tile.chest.planks.oak.painted.purple.desc=A place to store your items.
tile.chest.planks.oak.painted.cyan.name=Cyan Wooden Chest
tile.chest.planks.oak.painted.cyan.desc=A place to store your items.
tile.chest.planks.oak.painted.silver.name=Light Gray Wooden Chest
tile.chest.planks.oak.painted.silver.desc=A place to store your items.
tile.chest.planks.oak.painted.gray.name=Gray Wooden Chest
tile.chest.planks.oak.painted.gray.desc=A place to store your items.
tile.chest.planks.oak.painted.pink.name=Pink Wooden Chest
tile.chest.planks.oak.painted.pink.desc=A place to store your items.
tile.chest.planks.oak.painted.lime.name=Lime Wooden Chest
tile.chest.planks.oak.painted.lime.desc=A place to store your items.
tile.chest.planks.oak.painted.yellow.name=Yellow Wooden Chest
tile.chest.planks.oak.painted.yellow.desc=A place to store your items.
tile.chest.planks.oak.painted.lightblue.name=Light Blue Wooden Chest
tile.chest.planks.oak.painted.lightblue.desc=A place to store your items.
tile.chest.planks.oak.painted.magenta.name=Magenta Wooden Chest
tile.chest.planks.oak.painted.magenta.desc=A place to store your items.
tile.chest.planks.oak.painted.orange.name=Orange Wooden Chest
tile.chest.planks.oak.painted.orange.desc=A place to store your items.
tile.chest.planks.oak.painted.white.name=White Wooden Chest
tile.chest.planks.oak.painted.white.desc=A place to store your items.
tile.chest.legacy.name=Legacy Chest

tile.crops.wheat.name=Wheat Crops
tile.crops.wheat.desc=Wheat, plucked from the ground.
tile.crops.pumpkin.name=Pumpkin Crops
tile.crops.pumpkin.desc=A ripening pumpkin, plucked from the ground.

tile.farmland.dirt.name=Farmland
tile.farmland.dirt.desc=Tilled soil for growing crops.

tile.sign.post.planks.oak.name=Oak Signpost
tile.sign.post.planks.oak.desc=A free-standing oak sign.
tile.sign.wall.planks.oak.name=Oak Wall Sign
tile.sign.wall.planks.oak.desc=An oak sign placed on a wall.

tile.layer.snow.name=Snow Layer
tile.layer.snow.desc=A flat layer of snow.
tile.layer.leaves.oak.name=Leaf Pile
tile.layer.leaves.oak.desc=A pile of leaves.
tile.layer.slate.name=Slate Layer
tile.layer.slate.desc=A flat sheet of slate.

tile.ice.name=Ice
tile.ice.desc=Slippery frozen water.
tile.ice.perma.name=Perma-Ice
tile.ice.perma.desc=Ice imbued with the essence of stone.

tile.block.snow.name=Block of Snow
tile.block.snow.desc=Lots of snow compacted into a block.

tile.cactus.name=Cactus
tile.cactus.desc=A spiky plant that grows in the desert.

tile.block.clay.name=Block of Clay
tile.block.clay.desc=A block of compacted clay.

tile.sugarcane.name=Sugarcane
tile.sugarcane.desc=Not as sweet as you.

tile.block.sugarcane.name=Block of Sugarcane
tile.block.sugarcane.desc=One very big sugar cube.
tile.block.sugarcane.baked.name=Baked Block of Sugarcane
tile.block.sugarcane.baked.desc=Smells absolutely delicious.

tile.jukebox.name=Jukebox
tile.jukebox.desc=Plays your favourite tunes, assuming you have the right record.

tile.pumpkin.name=Pumpkin
tile.pumpkin.desc=An orange squash that grows in the wild.
tile.pumpkin.carved.idle.name=Carved Pumpkin
tile.pumpkin.carved.idle.desc=An orange squash with a spooky face.
tile.pumpkin.carved.active.name=Jack 'o' Lantern
tile.pumpkin.carved.active.desc=An orange squash with a spooky face, lit by a torch.
tile.pumpkin.redstone.name=Redstone Jack 'o' Lantern
tile.pumpkin.redstone.desc=An orange squash with a spooky face, lit by a redstone torch.

tile.netherrack.name=Netherrack
tile.netherrack.desc=Dark red rock that burns forever.
tile.netherrack.igneous.name=Igneous Netherrack
tile.netherrack.igneous.desc=Extreme heat has made this rock glow from inside.

tile.soulsand.name=Soul Sand
tile.soulsand.desc=Squishy brown sand that's tough to walk through.

tile.glowstone.name=Block of Glowstone
tile.glowstone.desc=Constantly emits a strong yellowish light.

tile.portal.nether.name=Nether Portal
tile.portal.nether.desc=A portal to the Nether.
tile.portal.paradise.name=Paradise Portal
tile.portal.paradise.desc=A portal to Paradise.

tile.cake.name=Cake
tile.cake.desc=I just can't cake it any more.
tile.pumpkin_pie.name=Pumpkin Pie
tile.pumpkin_pie.desc=I don't wanna pie!

tile.lamp.idle.name=Lamp
tile.lamp.idle.desc=How did you get this?!
tile.lamp.idle.black.name=Black Lamp
tile.lamp.idle.black.desc=A redstone lamp that can emit light. Tinted black.
tile.lamp.idle.red.name=Red Lamp
tile.lamp.idle.red.desc=A redstone lamp that can emit light. Tinted red.
tile.lamp.idle.green.name=Green Lamp
tile.lamp.idle.green.desc=A redstone lamp that can emit light. Tinted green.
tile.lamp.idle.brown.name=Brown Lamp
tile.lamp.idle.brown.desc=A redstone lamp that can emit light. Tinted brown.
tile.lamp.idle.blue.name=Blue Lamp
tile.lamp.idle.blue.desc=A redstone lamp that can emit light. Tinted blue.
tile.lamp.idle.purple.name=Purple Lamp
tile.lamp.idle.purple.desc=A redstone lamp that can emit light. Tinted purple.
tile.lamp.idle.cyan.name=Cyan Lamp
tile.lamp.idle.cyan.desc=A redstone lamp that can emit light. Tinted cyan.
tile.lamp.idle.silver.name=Light Gray Lamp
tile.lamp.idle.silver.desc=A redstone lamp that can emit light. Tinted light gray.
tile.lamp.idle.gray.name=Gray Lamp
tile.lamp.idle.gray.desc=A redstone lamp that can emit light. Tinted gray.
tile.lamp.idle.pink.name=Pink Lamp
tile.lamp.idle.pink.desc=A redstone lamp that can emit light. Tinted pink.
tile.lamp.idle.lime.name=Lime Lamp
tile.lamp.idle.lime.desc=A redstone lamp that can emit light. Tinted lime.
tile.lamp.idle.yellow.name=Yellow Lamp
tile.lamp.idle.yellow.desc=A redstone lamp that can emit light. Tinted yellow.
tile.lamp.idle.lightblue.name=Light Blue Lamp
tile.lamp.idle.lightblue.desc=A redstone lamp that can emit light. Tinted light blue.
tile.lamp.idle.magenta.name=Magenta Lamp
tile.lamp.idle.magenta.desc=A redstone lamp that can emit light. Tinted magenta.
tile.lamp.idle.orange.name=Orange Lamp
tile.lamp.idle.orange.desc=A redstone lamp that can emit light. Tinted orange.
tile.lamp.idle.white.name=White Lamp
tile.lamp.idle.white.desc=A redstone lamp that can emit light.

tile.lamp.active.name=Lit Lamp
tile.lamp.active.desc=How did you get this?!
tile.lamp.active.black.name=Lit Black Lamp
tile.lamp.active.black.desc=A redstone lamp that emits light. Tinted black.
tile.lamp.active.red.name=Lit Red Lamp
tile.lamp.active.red.desc=A redstone lamp that emits light. Tinted red.
tile.lamp.active.green.name=Lit Green Lamp
tile.lamp.active.green.desc=A redstone lamp that emits light. Tinted green.
tile.lamp.active.brown.name=Lit Brown Lamp
tile.lamp.active.brown.desc=A redstone lamp that emits light. Tinted brown.
tile.lamp.active.blue.name=Lit Blue Lamp
tile.lamp.active.blue.desc=A redstone lamp that emits light. Tinted blue.
tile.lamp.active.purple.name=Lit Purple Lamp
tile.lamp.active.purple.desc=A redstone lamp that emits light. Tinted purple.
tile.lamp.active.cyan.name=Lit Cyan Lamp
tile.lamp.active.cyan.desc=A redstone lamp that emits light. Tinted cyan.
tile.lamp.active.silver.name=Lit Light Gray Lamp
tile.lamp.active.silver.desc=A redstone lamp that emits light. Tinted light gray.
tile.lamp.active.gray.name=Lit Gray Lamp
tile.lamp.active.gray.desc=A redstone lamp that emits light. Tinted gray.
tile.lamp.active.pink.name=Lit Pink Lamp
tile.lamp.active.pink.desc=A redstone lamp that emits light. Tinted pink.
tile.lamp.active.lime.name=Lit Lime Lamp
tile.lamp.active.lime.desc=A redstone lamp that emits light. Tinted lime.
tile.lamp.active.yellow.name=Yellow Lamp
tile.lamp.active.yellow.desc=A redstone lamp that emits light. Tinted yellow.
tile.lamp.active.lightblue.name=Light Blue Lamp
tile.lamp.active.lightblue.desc=A redstone lamp that emits light. Tinted light blue.
tile.lamp.active.magenta.name=Magenta Lamp
tile.lamp.active.magenta.desc=A redstone lamp that emits light. Tinted magenta.
tile.lamp.active.orange.name=Orange Lamp
tile.lamp.active.orange.desc=A redstone lamp that emits light. Tinted orange.
tile.lamp.active.white.name=White Lamp
tile.lamp.active.white.desc=A redstone lamp that emits light.

tile.stone.polished.name=Polished Stone
tile.stone.polished.desc=A polished block of stone.
tile.granite.polished.name=Polished Granite
tile.granite.polished.desc=A polished block of granite.
tile.limestone.polished.name=Polished Limestone
tile.limestone.polished.desc=A polished block of limestone.
tile.basalt.polished.name=Polished Basalt
tile.basalt.polished.desc=A polished block of basalt.
tile.slate.polished.name=Polished Slate
tile.slate.polished.desc=A polished block of slate.
tile.permafrost.polished.name=Polished Permafrost
tile.permafrost.polished.desc=A polished block of permafrost.

tile.candle.wax.soul.name=Soul Wax Candle
tile.candle.wax.soul.desc=A waxy brown candle that glows with an unnatural light.

tile.basket.name=Basket
tile.basket.desc=A wicker container for holding items.

tile.overlay.pebbles.name=Pebbles
tile.overlay.pebbles.desc=A cluster of pebbles.

tile.fence.chainlink.name=Chainlink Fence
tile.fence.chainlink.desc=A fence made of interconnected chain links. Can be climbed!
tile.fence.paper_wall.name=Paper Wall Fence
tile.fence.paper_wall.desc=A fence made of delicate paper. Be careful!

tile.lantern.firefly.green.name=Green Firefly Lantern
tile.lantern.firefly.green.desc=A glass jar containing a swarm of green fireflies.
tile.lantern.firefly.orange.name=Orange Firefly Lantern
tile.lantern.firefly.orange.desc=A glass jar containing a swarm of orange fireflies.
tile.lantern.firefly.blue.name=Blue Firefly Lantern
tile.lantern.firefly.blue.desc=A glass jar containing a swarm of blue fireflies.
tile.lantern.firefly.red.name=Red Firefly Lantern
tile.lantern.firefly.red.desc=A glass jar containing a swarm of red fireflies.

tile.flag.name=Flag
tile.flag.desc=A flag to mark your territory.

tile.paper_wall.name=Paper Wall
tile.paper_wall.desc=A wall made of delicate paper. Be careful!

tile.trapdoor.planks.oak.painted.name=Painted Trapdoor
tile.trapdoor.planks.oak.painted.desc=How did you get this?!
tile.trapdoor.planks.oak.painted.black.name=Black Oak Trapdoor
tile.trapdoor.planks.oak.painted.black.desc=Like a door, but flat and painted black.
tile.trapdoor.planks.oak.painted.red.name=Red Oak Trapdoor
tile.trapdoor.planks.oak.painted.red.desc=Like a door, but flat and painted red.
tile.trapdoor.planks.oak.painted.green.name=Green Oak Trapdoor
tile.trapdoor.planks.oak.painted.green.desc=Like a door, but flat and painted green.
tile.trapdoor.planks.oak.painted.brown.name=Brown Oak Trapdoor
tile.trapdoor.planks.oak.painted.brown.desc=Like a door, but flat and painted brown.
tile.trapdoor.planks.oak.painted.blue.name=Blue Oak Trapdoor
tile.trapdoor.planks.oak.painted.blue.desc=Like a door, but flat and painted blue.
tile.trapdoor.planks.oak.painted.purple.name=Purple Oak Trapdoor
tile.trapdoor.planks.oak.painted.purple.desc=Like a door, but flat and painted purple.
tile.trapdoor.planks.oak.painted.cyan.name=Cyan Oak Trapdoor
tile.trapdoor.planks.oak.painted.cyan.desc=Like a door, but flat and painted cyan.
tile.trapdoor.planks.oak.painted.silver.name=Light Gray Oak Trapdoor
tile.trapdoor.planks.oak.painted.silver.desc=Like a door, but flat and painted light gray.
tile.trapdoor.planks.oak.painted.gray.name=Gray Oak Trapdoor
tile.trapdoor.planks.oak.painted.gray.desc=Like a door, but flat and painted gray.
tile.trapdoor.planks.oak.painted.pink.name=Pink Oak Trapdoor
tile.trapdoor.planks.oak.painted.pink.desc=Like a door, but flat and painted pink.
tile.trapdoor.planks.oak.painted.lime.name=Lime Oak Trapdoor
tile.trapdoor.planks.oak.painted.lime.desc=Like a door, but flat and painted lime.
tile.trapdoor.planks.oak.painted.yellow.name=Yellow Oak Trapdoor
tile.trapdoor.planks.oak.painted.yellow.desc=Like a door, but flat and painted yellow.
tile.trapdoor.planks.oak.painted.lightblue.name=Light Blue Oak Trapdoor
tile.trapdoor.planks.oak.painted.lightblue.desc=Like a door, but flat and painted light blue.
tile.trapdoor.planks.oak.painted.magenta.name=Magenta Oak Trapdoor
tile.trapdoor.planks.oak.painted.magenta.desc=Like a door, but flat and painted magenta.
tile.trapdoor.planks.oak.painted.orange.name=Orange Oak Trapdoor
tile.trapdoor.planks.oak.painted.orange.desc=Like a door, but flat and painted orange.
tile.trapdoor.planks.oak.painted.white.name=White Oak Trapdoor
tile.trapdoor.planks.oak.painted.white.desc=Like a door, but flat and painted white.

tile.door.planks.oak.painted.bottom.name=Bottom Painted Wooden Door
tile.door.planks.oak.painted.bottom.desc=How did you get this?!
tile.door.planks.oak.painted.bottom.black.name=Black Bottom Wooden Door
tile.door.planks.oak.painted.bottom.black.desc=How did you get this?!
tile.door.planks.oak.painted.bottom.red.name=Red Bottom Wooden Door
tile.door.planks.oak.painted.bottom.red.desc=How did you get this?!
tile.door.planks.oak.painted.bottom.green.name=Green Bottom Wooden Door
tile.door.planks.oak.painted.bottom.green.desc=How did you get this?!
tile.door.planks.oak.painted.bottom.brown.name=Brown Bottom Wooden Door
tile.door.planks.oak.painted.bottom.brown.desc=How did you get this?!
tile.door.planks.oak.painted.bottom.blue.name=Blue Bottom Wooden Door
tile.door.planks.oak.painted.bottom.blue.desc=How did you get this?!
tile.door.planks.oak.painted.bottom.purple.name=Purple Bottom Wooden Door
tile.door.planks.oak.painted.bottom.purple.desc=How did you get this?!
tile.door.planks.oak.painted.bottom.cyan.name=Cyan Bottom Wooden Door
tile.door.planks.oak.painted.bottom.cyan.desc=How did you get this?!
tile.door.planks.oak.painted.bottom.silver.name=Light Gray Bottom Wooden Door
tile.door.planks.oak.painted.bottom.silver.desc=How did you get this?!
tile.door.planks.oak.painted.bottom.gray.name=Gray Bottom Wooden Door
tile.door.planks.oak.painted.bottom.gray.desc=How did you get this?!
tile.door.planks.oak.painted.bottom.pink.name=Pink Bottom Wooden Door
tile.door.planks.oak.painted.bottom.pink.desc=How did you get this?!
tile.door.planks.oak.painted.bottom.lime.name=Lime Bottom Wooden Door
tile.door.planks.oak.painted.bottom.lime.desc=How did you get this?!
tile.door.planks.oak.painted.bottom.yellow.name=Yellow Bottom Wooden Door
tile.door.planks.oak.painted.bottom.yellow.desc=How did you get this?!
tile.door.planks.oak.painted.bottom.lightblue.name=Light Blue Bottom Wooden Door
tile.door.planks.oak.painted.bottom.lightblue.desc=How did you get this?!
tile.door.planks.oak.painted.bottom.magenta.name=Magenta Bottom Wooden Door
tile.door.planks.oak.painted.bottom.magenta.desc=How did you get this?!
tile.door.planks.oak.painted.bottom.orange.name=Orange Bottom Wooden Door
tile.door.planks.oak.painted.bottom.orange.desc=How did you get this?!
tile.door.planks.oak.painted.bottom.white.name=White Bottom Wooden Door
tile.door.planks.oak.painted.bottom.white.desc=How did you get this?!

tile.door.planks.oak.painted.top.name=Top Painted Wooden Door
tile.door.planks.oak.painted.top.desc=How did you get this?!
tile.door.planks.oak.painted.top.black.name=Black Top Wooden Door
tile.door.planks.oak.painted.top.black.desc=How did you get this?!
tile.door.planks.oak.painted.top.red.name=Red Top Wooden Door
tile.door.planks.oak.painted.top.red.desc=How did you get this?!
tile.door.planks.oak.painted.top.green.name=Green Top Wooden Door
tile.door.planks.oak.painted.top.green.desc=How did you get this?!
tile.door.planks.oak.painted.top.brown.name=Brown Top Wooden Door
tile.door.planks.oak.painted.top.brown.desc=How did you get this?!
tile.door.planks.oak.painted.top.blue.name=Blue Top Wooden Door
tile.door.planks.oak.painted.top.blue.desc=How did you get this?!
tile.door.planks.oak.painted.top.purple.name=Purple Top Wooden Door
tile.door.planks.oak.painted.top.purple.desc=How did you get this?!
tile.door.planks.oak.painted.top.cyan.name=Cyan Top Wooden Door
tile.door.planks.oak.painted.top.cyan.desc=How did you get this?!
tile.door.planks.oak.painted.top.silver.name=Light Gray Top Wooden Door
tile.door.planks.oak.painted.top.silver.desc=How did you get this?!
tile.door.planks.oak.painted.top.gray.name=Gray Top Wooden Door
tile.door.planks.oak.painted.top.gray.desc=How did you get this?!
tile.door.planks.oak.painted.top.pink.name=Pink Top Wooden Door
tile.door.planks.oak.painted.top.pink.desc=How did you get this?!
tile.door.planks.oak.painted.top.lime.name=Lime Top Wooden Door
tile.door.planks.oak.painted.top.lime.desc=How did you get this?!
tile.door.planks.oak.painted.top.yellow.name=Yellow Top Wooden Door
tile.door.planks.oak.painted.top.yellow.desc=How did you get this?!
tile.door.planks.oak.painted.top.lightblue.name=Light Blue Top Wooden Door
tile.door.planks.oak.painted.top.lightblue.desc=How did you get this?!
tile.door.planks.oak.painted.top.magenta.name=Magenta Top Wooden Door
tile.door.planks.oak.painted.top.magenta.desc=How did you get this?!
tile.door.planks.oak.painted.top.orange.name=Orange Top Wooden Door
tile.door.planks.oak.painted.top.orange.desc=How did you get this?!
tile.door.planks.oak.painted.top.white.name=White Top Wooden Door
tile.door.planks.oak.painted.top.white.desc=How did you get this?!

tile.door.glass.top.name=Glass Top Door
tile.door.glass.top.desc=You shouldn't be seeing this.
tile.door.glass.bottom.name=Glass Bottom Door
tile.door.glass.bottom.desc=And that's not just because it's glass.

tile.rope.name=Rope
tile.rope.desc=Rope, rope, rope your boat.
\ No newline at end of file
+tile.stone.name=Stone
tile.stone.desc=A block of solid stone.
tile.basalt.name=Basalt
tile.basalt.desc=A block of solid basalt.
tile.limestone.name=Limestone
tile.limestone.desc=A block of solid limestone.
tile.granite.name=Granite
tile.granite.desc=A block of solid granite.
tile.marble.name=Marble
tile.marble.desc=A block of solid marble.
tile.slate.name=Slate
tile.slate.desc=A block of solid slate.
tile.permafrost.name=Permafrost
tile.permafrost.desc=A block of frozen stone.

tile.cobble.stone.name=Cobblestone
tile.cobble.stone.desc=Stone, smashed apart and reconstituted.
tile.cobble.stone.mossy.name=Mossy Cobblestone
tile.cobble.stone.mossy.desc=Cobblestone with added greenery.
tile.cobble.basalt.name=Cobbled Basalt
tile.cobble.basalt.desc=Basalt, smashed apart and reconstituted.
tile.cobble.limestone.name=Cobbled Limestone
tile.cobble.limestone.desc=Limestone, smashed apart and reconstituted.
tile.cobble.granite.name=Cobbled Granite
tile.cobble.granite.desc=Granite, smashed apart and reconstituted.
tile.cobble.permafrost.name=Cobbled Permafrost
tile.cobble.permafrost.desc=Permafrost, smashed apart and reconstituted.

tile.pillar.marble.name=Marble Pillar
tile.pillar.marble.desc=A block of marble engraved into a pillar.
tile.capstone.marble.name=Marble Capstone
tile.capstone.marble.desc=A pillar capstone made of solid marble.

tile.sandstone.name=Sandstone
tile.sandstone.desc=Compacted sand.

tile.stone.carved.name=Carved Stone
tile.stone.carved.desc=Polished Stone with lines hewn through the middle.
tile.granite.carved.name=Carved Granite
tile.granite.carved.desc=Polished Granite with lines hewn through the middle.
tile.limestone.carved.name=Carved Limestone
tile.limestone.carved.desc=Polished Limestone with lines hewn through the middle.
tile.basalt.carved.name=Carved Basalt
tile.basalt.carved.desc=Polished Basalt with lines hewn through the middle.
tile.permafrost.carved.name=Carved Permafrost
tile.permafrost.carved.desc=Polished Permafrost with lines hewn through the middle.

tile.planks.oak.name=Wooden Planks
tile.planks.oak.desc=Processed tree insides.
tile.planks.oak.painted.name=Mystery Planks
tile.planks.oak.painted.desc=How did you get this?!
tile.planks.oak.painted.black.name=Black Wooden Planks
tile.planks.oak.painted.black.desc=Wooden planks, stained black.
tile.planks.oak.painted.red.name=Red Wooden Planks
tile.planks.oak.painted.red.desc=Wooden planks, stained red.
tile.planks.oak.painted.green.name=Green Wooden Planks
tile.planks.oak.painted.green.desc=Wooden planks, stained green.
tile.planks.oak.painted.brown.name=Brown Wooden Planks
tile.planks.oak.painted.brown.desc=Wooden planks, stained brown.
tile.planks.oak.painted.blue.name=Blue Wooden Planks
tile.planks.oak.painted.blue.desc=Wooden planks, stained blue.
tile.planks.oak.painted.purple.name=Purple Wooden Planks
tile.planks.oak.painted.purple.desc=Wooden planks, stained purple.
tile.planks.oak.painted.cyan.name=Cyan Wooden Planks
tile.planks.oak.painted.cyan.desc=Wooden planks, stained cyan.
tile.planks.oak.painted.silver.name=Light Gray Wooden Planks
tile.planks.oak.painted.silver.desc=Wooden planks, stained light gray.
tile.planks.oak.painted.gray.name=Gray Wooden Planks
tile.planks.oak.painted.gray.desc=Wooden planks, stained gray.
tile.planks.oak.painted.pink.name=Pink Wooden Planks
tile.planks.oak.painted.pink.desc=Wooden planks, stained pink.
tile.planks.oak.painted.lime.name=Lime Wooden Planks
tile.planks.oak.painted.lime.desc=Wooden planks, stained lime.
tile.planks.oak.painted.yellow.name=Yellow Wooden Planks
tile.planks.oak.painted.yellow.desc=Wooden planks, stained yellow.
tile.planks.oak.painted.lightblue.name=Light Blue Wooden Planks
tile.planks.oak.painted.lightblue.desc=Wooden planks, stained light blue.
tile.planks.oak.painted.magenta.name=Magenta Wooden Planks
tile.planks.oak.painted.magenta.desc=Wooden planks, stained magenta.
tile.planks.oak.painted.orange.name=Orange Wooden Planks
tile.planks.oak.painted.orange.desc=Wooden planks, stained orange.
tile.planks.oak.painted.white.name=White Wooden Planks
tile.planks.oak.painted.white.desc=Wooden planks, stained white.

tile.torch.coal.name=Torch
tile.torch.coal.desc=Helps light the way.

tile.ladder.oak.name=Oak Ladder
tile.ladder.oak.desc=For very rapid vertical movement.

tile.fence.planks.oak.name=Oak Fence
tile.fence.planks.oak.desc=Too tall to jump over.

tile.fence.planks.oak.painted.name=Mystery Wooden Fence
tile.fence.planks.oak.painted.desc=How did you get this?!
tile.fence.planks.oak.painted.black.name=Black Wooden Fence
tile.fence.planks.oak.painted.black.desc=A wooden fence, stained black.
tile.fence.planks.oak.painted.red.name=Red Wooden Fence
tile.fence.planks.oak.painted.red.desc=A wooden fence, stained red.
tile.fence.planks.oak.painted.green.name=Green Wooden Fence
tile.fence.planks.oak.painted.green.desc=A wooden fence, stained green.
tile.fence.planks.oak.painted.brown.name=Brown Wooden Fence
tile.fence.planks.oak.painted.brown.desc=A wooden fence, stained brown.
tile.fence.planks.oak.painted.blue.name=Blue Wooden Fence
tile.fence.planks.oak.painted.blue.desc=A wooden fence, stained blue.
tile.fence.planks.oak.painted.purple.name=Purple Wooden Fence
tile.fence.planks.oak.painted.purple.desc=A wooden fence, stained purple.
tile.fence.planks.oak.painted.cyan.name=Cyan Wooden Fence
tile.fence.planks.oak.painted.cyan.desc=A wooden fence, stained cyan.
tile.fence.planks.oak.painted.silver.name=Light Gray Wooden Fence
tile.fence.planks.oak.painted.silver.desc=A wooden fence, stained light gray.
tile.fence.planks.oak.painted.gray.name=Gray Wooden Fence
tile.fence.planks.oak.painted.gray.desc=A wooden fence, stained gray.
tile.fence.planks.oak.painted.pink.name=Pink Wooden Fence
tile.fence.planks.oak.painted.pink.desc=A wooden fence, stained pink.
tile.fence.planks.oak.painted.lime.name=Lime Wooden Fence
tile.fence.planks.oak.painted.lime.desc=A wooden fence, stained lime.
tile.fence.planks.oak.painted.yellow.name=Yellow Wooden Fence
tile.fence.planks.oak.painted.yellow.desc=A wooden fence, stained yellow.
tile.fence.planks.oak.painted.lightblue.name=Light Blue Wooden Fence
tile.fence.planks.oak.painted.lightblue.desc=A wooden fence, stained light blue.
tile.fence.planks.oak.painted.magenta.name=Magenta Wooden Fence
tile.fence.planks.oak.painted.magenta.desc=A wooden fence, stained magenta.
tile.fence.planks.oak.painted.orange.name=Orange Wooden Fence
tile.fence.planks.oak.painted.orange.desc=A wooden fence, stained orange.
tile.fence.planks.oak.painted.white.name=White Wooden Fence
tile.fence.planks.oak.painted.white.desc=A wooden fence, stained white.

tile.fencegate.planks.oak.name=Wooden Fence Gate
tile.fencegate.planks.oak.desc=Like a door but for fences.

tile.fencegate.planks.oak.painted.name=Mystery Wooden Fence Gate
tile.fencegate.planks.oak.painted.desc=How did you get this?!
tile.fencegate.planks.oak.painted.black.name=Black Wooden Fence Gate
tile.fencegate.planks.oak.painted.black.desc=A wooden fence gate, stained black.
tile.fencegate.planks.oak.painted.red.name=Red Wooden Fence Gate
tile.fencegate.planks.oak.painted.red.desc=A wooden fence gate, stained red.
tile.fencegate.planks.oak.painted.green.name=Green Wooden Fence Gate
tile.fencegate.planks.oak.painted.green.desc=A wooden fence gate, stained green.
tile.fencegate.planks.oak.painted.brown.name=Brown Wooden Fence Gate
tile.fencegate.planks.oak.painted.brown.desc=A wooden fence gate, stained brown.
tile.fencegate.planks.oak.painted.blue.name=Blue Wooden Fence Gate
tile.fencegate.planks.oak.painted.blue.desc=A wooden fence gate, stained blue.
tile.fencegate.planks.oak.painted.purple.name=Purple Wooden Fence Gate
tile.fencegate.planks.oak.painted.purple.desc=A wooden fence gate, stained purple.
tile.fencegate.planks.oak.painted.cyan.name=Cyan Wooden Fence Gate
tile.fencegate.planks.oak.painted.cyan.desc=A wooden fence gate, stained cyan.
tile.fencegate.planks.oak.painted.silver.name=Light Gray Wooden Fence Gate
tile.fencegate.planks.oak.painted.silver.desc=A wooden fence gate, stained light gray.
tile.fencegate.planks.oak.painted.gray.name=Gray Wooden Fence Gate
tile.fencegate.planks.oak.painted.gray.desc=A wooden fence gate, stained gray.
tile.fencegate.planks.oak.painted.pink.name=Pink Wooden Fence Gate
tile.fencegate.planks.oak.painted.pink.desc=A wooden fence gate, stained pink.
tile.fencegate.planks.oak.painted.lime.name=Lime Wooden Fence Gate
tile.fencegate.planks.oak.painted.lime.desc=A wooden fence gate, stained lime.
tile.fencegate.planks.oak.painted.yellow.name=Yellow Wooden Fence Gate
tile.fencegate.planks.oak.painted.yellow.desc=A wooden fence gate, stained yellow.
tile.fencegate.planks.oak.painted.lightblue.name=Light Blue Wooden Fence Gate
tile.fencegate.planks.oak.painted.lightblue.desc=A wooden fence gate, stained light blue.
tile.fencegate.planks.oak.painted.magenta.name=Magenta Wooden Fence Gate
tile.fencegate.planks.oak.painted.magenta.desc=A wooden fence gate, stained magenta.
tile.fencegate.planks.oak.painted.orange.name=Orange Wooden Fence Gate
tile.fencegate.planks.oak.painted.orange.desc=A wooden fence gate, stained orange.
tile.fencegate.planks.oak.painted.white.name=White Wooden Fence Gate
tile.fencegate.planks.oak.painted.white.desc=A wooden fence gate, stained white.

tile.bookshelf.planks.oak.name=Bookshelf
tile.bookshelf.planks.oak.desc=A repository of knowledge.

tile.wool.name=Wool
tile.wool.desc=How did you get this?!
tile.wool.black.name=Black Wool
tile.wool.black.desc=Sheep's wool, dyed black.
tile.wool.red.name=Red Wool
tile.wool.red.desc=Sheep's wool, dyed red.
tile.wool.green.name=Green Wool
tile.wool.green.desc=Sheep's wool, dyed green.
tile.wool.brown.name=Brown Wool
tile.wool.brown.desc=Sheep's wool, dyed brown.
tile.wool.blue.name=Blue Wool
tile.wool.blue.desc=Sheep's wool, dyed blue.
tile.wool.purple.name=Purple Wool
tile.wool.purple.desc=Sheep's wool, dyed purple.
tile.wool.cyan.name=Cyan Wool
tile.wool.cyan.desc=Sheep's wool, dyed cyan.
tile.wool.silver.name=Light Gray Wool
tile.wool.silver.desc=Sheep's wool, dyed light gray.
tile.wool.gray.name=Gray Wool
tile.wool.gray.desc=Sheep's wool, dyed gray.
tile.wool.pink.name=Pink Wool
tile.wool.pink.desc=Sheep's wool, dyed pink.
tile.wool.lime.name=Lime Wool
tile.wool.lime.desc=Sheep's wool, dyed lime.
tile.wool.yellow.name=Yellow Wool
tile.wool.yellow.desc=Sheep's wool, dyed yellow.
tile.wool.lightblue.name=Light Blue Wool
tile.wool.lightblue.desc=Sheep's wool, dyed light blue.
tile.wool.magenta.name=Magenta Wool
tile.wool.magenta.desc=Sheep's wool, dyed magenta.
tile.wool.orange.name=Orange Wool
tile.wool.orange.desc=Sheep's wool, dyed orange.
tile.wool.white.name=White Wool
tile.wool.white.desc=Sheep's wool, dyed white.

tile.brick.clay.name=Clay Bricks
tile.brick.clay.desc=Stacked bricks of baked clay.
tile.brick.stone.polished.name=Polished Stone Bricks
tile.brick.stone.polished.desc=Stacked bricks of polished stone.
tile.brick.stone.polished.mossy.name=Mossy Polished Stone Bricks
tile.brick.stone.polished.mossy.desc=Stacked bricks of polished stone with added greenery.
tile.brick.sandstone.name=Sandstone Bricks
tile.brick.sandstone.desc=Stacked bricks of sandstone.
tile.brick.gold.name=Gold Bricks
tile.brick.gold.desc=Stacked bricks of gold.
tile.brick.lapis.name=Lapis Lazuli Bricks
tile.brick.lapis.desc=Stacked bricks of lapis lazuli.
tile.brick.basalt.name=Basalt Bricks
tile.brick.basalt.desc=Stacked bricks of basalt.
tile.brick.limestone.name=Limestone Bricks
tile.brick.limestone.desc=Stacked bricks of limestone.
tile.brick.granite.name=Granite Bricks
tile.brick.granite.desc=Stacked bricks of granite.
tile.brick.marble.name=Marble Bricks
tile.brick.marble.desc=Stacked bricks of marble.
tile.brick.slate.name=Slate Bricks
tile.brick.slate.desc=Stacked bricks of slate.
tile.brick.stone.name=Stone Bricks
tile.brick.stone.desc=Stacked bricks of stone.
tile.brick.permafrost.name=Permafrost Bricks
tile.brick.permafrost.desc=Stacked bricks of permafrost.
tile.brick.iron.name=Iron Bricks
tile.brick.iron.desc=Stacked bricks of iron.

tile.slab.planks.oak.name=Wooden Slab
tile.slab.planks.oak.desc=A slab of wooden planks.
tile.slab.cobble.stone.name=Cobblestone Slab
tile.slab.cobble.stone.desc=A slab of cobblestone.
tile.slab.sandstone.name=Sandstone Slab
tile.slab.sandstone.desc=A slab of sandstone.
tile.slab.brick.stone.polished.name=Polished Stone Brick Slab
tile.slab.brick.stone.polished.desc=A slab of polished stone bricks.
tile.slab.stone.carved.name=Polished Stone Slab
tile.slab.stone.carved.desc=A slab of polished stone.
tile.slab.brick.marble.name=Marble Brick Slab
tile.slab.brick.marble.desc=A slab of marble bricks.
tile.slab.brick.clay.name=Clay Brick Slab
tile.slab.brick.clay.desc=A slab of clay bricks.
tile.slab.capstone.marble.name=Marble Capstone Slab
tile.slab.capstone.marble.desc=Marble sculpted into a capstone.
tile.slab.cobble.basalt.name=Cobbled Basalt Slab
tile.slab.cobble.basalt.desc=A slab of cobbled basalt.
tile.slab.cobble.limestone.name=Cobbled Limestone Slab
tile.slab.cobble.limestone.desc=A slab of cobbled limestone.
tile.slab.cobble.granite.name=Cobbled Granite Slab
tile.slab.cobble.granite.desc=A slab of cobbled granite.
tile.slab.brick.basalt.name=Basalt Brick Slab
tile.slab.brick.basalt.desc=A slab of basalt bricks.
tile.slab.brick.limestone.name=Limestone Brick Slab
tile.slab.brick.limestone.desc=A slab of limestone bricks.
tile.slab.brick.granite.name=Granite Brick Slab
tile.slab.brick.granite.desc=A slab of granite bricks.
tile.slab.brick.slate.name=Slate Brick Slab
tile.slab.brick.slate.desc=A slab of slate bricks.
tile.slab.brick.stone.name=Stone Brick Slab
tile.slab.brick.stone.desc=A slab of stone bricks.
tile.slab.granite.carved.name=Polished Granite Slab
tile.slab.granite.carved.desc=A slab of polished granite.
tile.slab.limestone.carved.name=Polished Limestone Slab
tile.slab.limestone.carved.desc=A slab of polished limestone.
tile.slab.basalt.carved.name=Polished Basalt Slab
tile.slab.basalt.carved.desc=A slab of polished basalt.
tile.slab.permafrost.carved.name=Polished Permafrost Slab
tile.slab.permafrost.carved.desc=A slab of polished permafrost.

tile.slab.planks.oak.painted.name=Mystery Wooden Slab
tile.slab.planks.oak.painted.desc=How did you get this?!
tile.slab.planks.oak.painted.black.name=Black Wooden Slab
tile.slab.planks.oak.painted.black.desc=A slab of wooden planks, stained black.
tile.slab.planks.oak.painted.red.name=Red Wooden Slab
tile.slab.planks.oak.painted.red.desc=A slab of wooden planks, stained red.
tile.slab.planks.oak.painted.green.name=Green Wooden Slab
tile.slab.planks.oak.painted.green.desc=A slab of wooden planks, stained green.
tile.slab.planks.oak.painted.brown.name=Brown Wooden Slab
tile.slab.planks.oak.painted.brown.desc=A slab of wooden planks, stained brown.
tile.slab.planks.oak.painted.blue.name=Blue Wooden Slab
tile.slab.planks.oak.painted.blue.desc=A slab of wooden planks, stained blue.
tile.slab.planks.oak.painted.purple.name=Purple Wooden Slab
tile.slab.planks.oak.painted.purple.desc=A slab of wooden planks, stained purple.
tile.slab.planks.oak.painted.cyan.name=Cyan Wooden Slab
tile.slab.planks.oak.painted.cyan.desc=A slab of wooden planks, stained cyan.
tile.slab.planks.oak.painted.silver.name=Light Gray Wooden Slab
tile.slab.planks.oak.painted.silver.desc=A slab of wooden planks, stained light gray.
tile.slab.planks.oak.painted.gray.name=Gray Wooden Slab
tile.slab.planks.oak.painted.gray.desc=A slab of wooden planks, stained gray.
tile.slab.planks.oak.painted.pink.name=Pink Wooden Slab
tile.slab.planks.oak.painted.pink.desc=A slab of wooden planks, stained pink.
tile.slab.planks.oak.painted.lime.name=Lime Wooden Slab
tile.slab.planks.oak.painted.lime.desc=A slab of wooden planks, stained lime.
tile.slab.planks.oak.painted.yellow.name=Yellow Wooden Slab
tile.slab.planks.oak.painted.yellow.desc=A slab of wooden planks, stained yellow.
tile.slab.planks.oak.painted.lightblue.name=Light Blue Wooden Slab
tile.slab.planks.oak.painted.lightblue.desc=A slab of wooden planks, stained light blue.
tile.slab.planks.oak.painted.magenta.name=Magenta Wooden Slab
tile.slab.planks.oak.painted.magenta.desc=A slab of wooden planks, stained magenta.
tile.slab.planks.oak.painted.orange.name=Orange Wooden Slab
tile.slab.planks.oak.painted.orange.desc=A slab of wooden planks, stained orange.
tile.slab.planks.oak.painted.white.name=White Wooden Slab
tile.slab.planks.oak.painted.white.desc=A slab of wooden planks, stained white.
tile.slab.cobble.permafrost.name=Cobbled Permafrost Slab
tile.slab.cobble.permafrost.desc=A slab of cobbled permafrost.
tile.slab.brick.sandstone.name=Sandstone Brick Slab
tile.slab.brick.sandstone.desc=A slab of sandstone bricks.
tile.slab.brick.permafrost.name=Permafrost Brick Slab
tile.slab.brick.permafrost.desc=A slab of permafrost bricks.

tile.stairs.planks.oak.name=Wooden Stairs
tile.stairs.planks.oak.desc=Wooden block used for rapid vertical movement.
tile.stairs.cobble.stone.name=Cobblestone Stairs
tile.stairs.cobble.stone.desc=Cobblestone block used for rapid vertical movement.
tile.stairs.brick.stone.polished.name=Polished Stone Brick Stairs
tile.stairs.brick.stone.polished.desc=Polished stone brick block used for rapid vertical movement.
tile.stairs.brick.marble.name=Marble Brick Stairs
tile.stairs.brick.marble.desc=Marble brick block used for rapid vertical movement.
tile.stairs.cobble.basalt.name=Cobbled Basalt Stairs
tile.stairs.cobble.basalt.desc=Cobbled basalt block used for rapid vertical movement.
tile.stairs.cobble.limestone.name=Cobbled Limestone Stairs
tile.stairs.cobble.limestone.desc=Cobbled limestone block used for rapid vertical movement.
tile.stairs.cobble.granite.name=Cobbled Granite Stairs
tile.stairs.cobble.granite.desc=Cobbled granite block used for rapid vertical movement.
tile.stairs.brick.basalt.name=Basalt Brick Stairs
tile.stairs.brick.basalt.desc=Basalt brick block used for rapid vertical movement.
tile.stairs.brick.limestone.name=Limestone Brick Stairs
tile.stairs.brick.limestone.desc=Limestone brick block used for rapid vertical movement.
tile.stairs.brick.granite.name=Granite Brick Stairs
tile.stairs.brick.granite.desc=Granite brick block used for rapid vertical movement.
tile.stairs.brick.clay.name=Clay Brick Stairs
tile.stairs.brick.clay.desc=Clay brick block used for rapid vertical movement.
tile.stairs.brick.slate.name=Slate Brick Stairs
tile.stairs.brick.slate.desc=Slate brick block used for rapid vertical movement.
tile.stairs.brick.stone.name=Stone Brick Stairs
tile.stairs.brick.stone.desc=Stone brick block used for rapid vertical movement.
tile.stairs.sandstone.name=Sandstone Stairs
tile.stairs.sandstone.desc=Sandstone block used for rapid vertical movement.
tile.stairs.cobble.permafrost.name=Cobbled Permafrost Stairs
tile.stairs.cobble.permafrost.desc=Cobbled permafrost block used for rapid vertical movement.
tile.stairs.brick.sandstone.name=Sandstone Brick Stairs
tile.stairs.brick.sandstone.desc=Sandstone brick block used for rapid vertical movement.
tile.stairs.brick.permafrost.name=Permafrost Brick Stairs
tile.stairs.brick.permafrost.desc=Permafrost brick block used for rapid vertical movement.

tile.stairs.planks.oak.painted.name=Mystery Wooden Stairs
tile.stairs.planks.oak.painted.desc=How did you get this?!
tile.stairs.planks.oak.painted.black.name=Black Wooden Stairs
tile.stairs.planks.oak.painted.black.desc=Wooden steps, stained black.
tile.stairs.planks.oak.painted.red.name=Red Wooden Stairs
tile.stairs.planks.oak.painted.red.desc=Wooden steps, stained red.
tile.stairs.planks.oak.painted.green.name=Green Wooden Stairs
tile.stairs.planks.oak.painted.green.desc=Wooden steps, stained green.
tile.stairs.planks.oak.painted.brown.name=Brown Wooden Stairs
tile.stairs.planks.oak.painted.brown.desc=Wooden steps, stained brown.
tile.stairs.planks.oak.painted.blue.name=Blue Wooden Stairs
tile.stairs.planks.oak.painted.blue.desc=Wooden steps, stained blue.
tile.stairs.planks.oak.painted.purple.name=Purple Wooden Stairs
tile.stairs.planks.oak.painted.purple.desc=Wooden steps, stained purple.
tile.stairs.planks.oak.painted.cyan.name=Cyan Wooden Stairs
tile.stairs.planks.oak.painted.cyan.desc=Wooden steps, stained cyan.
tile.stairs.planks.oak.painted.silver.name=Light Gray Wooden Stairs
tile.stairs.planks.oak.painted.silver.desc=Wooden steps, stained light gray.
tile.stairs.planks.oak.painted.gray.name=Gray Wooden Stairs
tile.stairs.planks.oak.painted.gray.desc=Wooden steps, stained gray.
tile.stairs.planks.oak.painted.pink.name=Pink Wooden Stairs
tile.stairs.planks.oak.painted.pink.desc=Wooden steps, stained pink.
tile.stairs.planks.oak.painted.lime.name=Lime Wooden Stairs
tile.stairs.planks.oak.painted.lime.desc=Wooden steps, stained lime.
tile.stairs.planks.oak.painted.yellow.name=Yellow Wooden Stairs
tile.stairs.planks.oak.painted.yellow.desc=Wooden steps, stained yellow.
tile.stairs.planks.oak.painted.lightblue.name=Light Blue Wooden Stairs
tile.stairs.planks.oak.painted.lightblue.desc=Wooden steps, stained light blue.
tile.stairs.planks.oak.painted.magenta.name=Magenta Wooden Stairs
tile.stairs.planks.oak.painted.magenta.desc=Wooden steps, stained magenta.
tile.stairs.planks.oak.painted.orange.name=Orange Wooden Stairs
tile.stairs.planks.oak.painted.orange.desc=Wooden steps, stained orange.
tile.stairs.planks.oak.painted.white.name=White Wooden Stairs
tile.stairs.planks.oak.painted.white.desc=Wooden steps, stained white.

tile.obsidian.name=Obsidian
tile.obsidian.desc=Rapidly cooled volcanic rock.

tile.glass.name=Glass
tile.glass.desc=Sand heated until it becomes translucent.
tile.glass.tinted.name=Tinted Glass
tile.glass.tinted.desc=Darkened glass that blocks light.

tile.grass.name=Grass
tile.grass.desc=Crisp, crunchy grass.
tile.grass.retro.name=Retro Grass
tile.grass.retro.desc=Crisp, crunchy grass. Smells old.
tile.grass.scorched.name=Scorched Grass
tile.grass.scorched.desc=Grass that has baked in the sun.

tile.path.dirt.name=Dirt Path
tile.path.dirt.desc=Dirt worn down by frequent travelling.

tile.dirt.name=Dirt
tile.dirt.desc=Crumbly brown dirt.
tile.dirt.scorched.name=Scorched Dirt
tile.dirt.scorched.desc=Dirt that has baked in the sun.
tile.dirt.scorched.rich.name=Rich Scorched Dirt
tile.dirt.scorched.rich.desc=Dirt that has baked in the sun, searing in minerals.

tile.mud.name=Mud
tile.mud.desc=Mud sodden to its core.
tile.mud.baked.name=Baked Mud
tile.mud.baked.desc=Mud that's been dried out and cracked.

tile.sponge.dry.name=Sponge
tile.sponge.dry.desc=A dry sponge, good for soaking up water.
tile.sponge.wet.name=Wet Sponge
tile.sponge.wet.desc=A sponge full of water.

tile.moss.stone.name=Mossy Stone
tile.moss.stone.desc=Moss covering a block of stone.
tile.moss.basalt.name=Mossy Basalt
tile.moss.basalt.desc=Moss covering a block of basalt.
tile.moss.limestone.name=Mossy Limestone
tile.moss.limestone.desc=Moss covering a block of limestone.
tile.moss.granite.name=Mossy Granite
tile.moss.granite.desc=Moss covering a block of granite.

tile.sand.name=Sand
tile.sand.desc=Gets everywhere.
tile.gravel.name=Gravel
tile.gravel.desc=A loose collection of pebbles.

tile.bedrock.name=Bedrock
tile.bedrock.desc=The toughest substance known to man.

tile.fluid.water.flowing.name=Flowing Water
tile.fluid.water.flowing.desc=Water that flows when placed.
tile.fluid.water.still.name=Still Water
tile.fluid.water.still.desc=Water that does not flow when placed.
tile.fluid.lava.flowing.name=Flowing Lava
tile.fluid.lava.flowing.desc=Lava that flows when placed.
tile.fluid.lava.still.name=Still Lava
tile.fluid.lava.still.desc=Lava that does not flow when placed.

tile.log.oak.name=Oak Log
tile.log.oak.desc=A log from an oak tree.
tile.log.pine.name=Pine Log
tile.log.pine.desc=A log from a pine tree.
tile.log.birch.name=Birch Log
tile.log.birch.desc=A log from a birch tree.
tile.log.cherry.name=Cherry Log
tile.log.cherry.desc=A log from a cherry tree.
tile.log.eucalyptus.name=Eucalyptus Log
tile.log.eucalyptus.desc=A log from a eucalyptus tree.
tile.log.oak.mossy.name=Mossy Oak Log
tile.log.oak.mossy.desc=A log from a mossy oak tree.
tile.log.thorn.name=Thorn Log
tile.log.thorn.desc=A log from a thorn tree.
tile.log.palm.name=Palm Log
tile.log.palm.desc=A log from a palm tree.

tile.leaves.oak.name=Oak Leaves
tile.leaves.oak.desc=Leaves from an oak tree.
tile.leaves.pine.name=Pine Leaves
tile.leaves.pine.desc=Leaves from a pine tree.
tile.leaves.birch.name=Birch Leaves
tile.leaves.birch.desc=Leaves from a birch tree.
tile.leaves.cherry.name=Cherry Leaves
tile.leaves.cherry.desc=Leaves from a cherry tree.
tile.leaves.eucalyptus.name=Eucalyptus Leaves
tile.leaves.eucalyptus.desc=Leaves from a eucalyptus tree.
tile.leaves.oak.retro.name=Retro Leaves
tile.leaves.oak.retro.desc=Leaves from long ago.
tile.leaves.shrub.name=Shrub Leaves
tile.leaves.shrub.desc=Leaves from a shrub.
tile.leaves.cherry.flowering.name=Flowering Cherry Leaves
tile.leaves.cherry.flowering.desc=Leaves from a cherry tree that are budding with fruit.
tile.leaves.cacao.name=Cacao Leaves
tile.leaves.cacao.desc=Leaves from a cacao tree.
tile.leaves.thorn.name=Thorn Leaves
tile.leaves.thorn.desc=Leaves from a thorn tree.
tile.leaves.palm.name=Palm Leaves
tile.leaves.palm.desc=Leaves from a palm tree.

tile.sapling.oak.name=Oak Sapling
tile.sapling.oak.desc=Plant to grow an oak tree.
tile.sapling.pine.name=Pine Sapling
tile.sapling.pine.desc=Plant to grow a pine tree.
tile.sapling.birch.name=Birch Sapling
tile.sapling.birch.desc=Plant to grow a birch tree.
tile.sapling.cherry.name=Cherry Sapling
tile.sapling.cherry.desc=Plant to grow a cherry tree.
tile.sapling.eucalyptus.name=Eucalyptus Sapling
tile.sapling.eucalyptus.desc=Plant to grow a eucalyptus tree.
tile.sapling.oak.retro.name=Retro Oak Sapling
tile.sapling.oak.retro.desc=Plant to grow a tree from long ago.
tile.sapling.shrub.name=Shrub Sapling
tile.sapling.shrub.desc=Plant to grow a shrub.
tile.sapling.cacao.name=Cacao Sapling
tile.sapling.cacao.desc=Plant to grow a cacao tree.
tile.sapling.thorn.name=Thorn Sapling
tile.sapling.thorn.desc=Plant to grow a thorn tree.
tile.sapling.palm.name=Palm Sapling
tile.sapling.palm.desc=Plant to grow a palm tree.

tile.tallgrass.name=Tall Grass
tile.tallgrass.desc=Lush, growing grass.
tile.tallgrass.fern.name=Fern
tile.tallgrass.fern.desc=A fern plant.
tile.deadbush.name=Dead Bush
tile.deadbush.desc=A dried and withered plant.
tile.spinifex.name=Spinifex
tile.spinifex.desc=A spindly, thin grass from dry regions.
tile.algae.name=Algae
tile.algae.desc=Gooey vegetation that floats on the water's surface.

tile.flower.yellow.name=Dandelion
tile.flower.yellow.desc=A beautiful yellow flower.
tile.flower.red.name=Rose
tile.flower.red.desc=A beautiful red flower.
tile.flower.purple.name=Heather
tile.flower.purple.desc=Sprigs of purple petals. Brings good luck.
tile.flower.lightblue.name=Bluebell
tile.flower.lightblue.desc=A sad-looking blue flower.
tile.flower.pink.name=Orchid
tile.flower.pink.desc=A beautiful pink flower.
tile.flower.orange.name=Marigold
tile.flower.orange.desc=A beautiful orange flower.

tile.mushroom.red.name=Red Mushroom
tile.mushroom.red.desc=A tasty red mushroom. Good for stew.
tile.mushroom.brown.name=Brown Mushroom
tile.mushroom.brown.desc=A tasty brown mushroom. Good for stew.

tile.ore.coal.stone.name=Stone Coal Ore
tile.ore.coal.stone.desc=A chunk of coal embedded in stone.
tile.ore.coal.basalt.name=Basalt Coal Ore
tile.ore.coal.basalt.desc=A chunk of coal embedded in basalt.
tile.ore.coal.limestone.name=Limestone Coal Ore
tile.ore.coal.limestone.desc=A chunk of coal embedded in limestone.
tile.ore.coal.granite.name=Granite Coal Ore
tile.ore.coal.granite.desc=A chunk of coal embedded in granite.
tile.ore.coal.permafrost.name=Permafrost Coal Ore
tile.ore.coal.permafrost.desc=A chunk of coal embedded in permafrost.

tile.ore.iron.stone.name=Stone Iron Ore
tile.ore.iron.stone.desc=Iron nuggets embedded in stone.
tile.ore.iron.basalt.name=Basalt Iron Ore
tile.ore.iron.basalt.desc=Iron nuggets embedded in basalt.
tile.ore.iron.limestone.name=Limestone Iron Ore
tile.ore.iron.limestone.desc=Iron nuggets embedded in limestone.
tile.ore.iron.granite.name=Granite Iron Ore
tile.ore.iron.granite.desc=Iron nuggets embedded in granite.
tile.ore.iron.permafrost.name=Permafrost Iron Ore
tile.ore.iron.permafrost.desc=Iron nuggets embedded in permafrost.

tile.ore.gold.stone.name=Stone Gold Ore
tile.ore.gold.stone.desc=Gold nuggets embedded in stone.
tile.ore.gold.basalt.name=Basalt Gold Ore
tile.ore.gold.basalt.desc=Gold nuggets embedded in basalt.
tile.ore.gold.limestone.name=Limestone Gold Ore
tile.ore.gold.limestone.desc=Gold nuggets embedded in limestone.
tile.ore.gold.granite.name=Granite Gold Ore
tile.ore.gold.granite.desc=Gold nuggets embedded in granite.
tile.ore.gold.permafrost.name=Permafrost Gold Ore
tile.ore.gold.permafrost.desc=Gold nuggets embedded in permafrost.

tile.ore.lapis.stone.name=Stone Lapis Lazuli Ore
tile.ore.lapis.stone.desc=Chunks of lapis lazuli embedded in stone.
tile.ore.lapis.basalt.name=Basalt Lapis Lazuli Ore
tile.ore.lapis.basalt.desc=Chunks of lapis lazuli embedded in basalt.
tile.ore.lapis.limestone.name=Limestone Lapis Lazuli Ore
tile.ore.lapis.limestone.desc=Chunks of lapis lazuli embedded in limestone.
tile.ore.lapis.granite.name=Granite Lapis Lazuli Ore
tile.ore.lapis.granite.desc=Chunks of lapis lazuli embedded in granite.
tile.ore.lapis.permafrost.name=Permafrost Lapis Lazuli Ore
tile.ore.lapis.permafrost.desc=Chunks of lapis lazuli embedded in permafrost.

tile.ore.redstone.stone.name=Stone Redstone Ore
tile.ore.redstone.stone.desc=Red dust embedded in stone.
tile.ore.redstone.basalt.name=Basalt Redstone Ore
tile.ore.redstone.basalt.desc=Red dust embedded in basalt.
tile.ore.redstone.limestone.name=Limestone Redstone Ore
tile.ore.redstone.limestone.desc=Red dust embedded in limestone.
tile.ore.redstone.granite.name=Granite Redstone Ore
tile.ore.redstone.granite.desc=Red dust embedded in granite.
tile.ore.redstone.permafrost.name=Permafrost Redstone Ore
tile.ore.redstone.permafrost.desc=Red dust embedded in permafrost.
tile.ore.redstone.glowing.stone.name=Glowing Stone Redstone Ore
tile.ore.redstone.glowing.stone.desc=Red dust embedded in stone. Emits a faint light.
tile.ore.redstone.glowing.basalt.name=Glowing Basalt Redstone Ore
tile.ore.redstone.glowing.basalt.desc=Red dust embedded in basalt. Emits a faint light.
tile.ore.redstone.glowing.limestone.name=Glowing Limestone Redstone Ore
tile.ore.redstone.glowing.limestone.desc=Red dust embedded in limestone. Emits a faint light.
tile.ore.redstone.glowing.granite.name=Glowing Granite Redstone Ore
tile.ore.redstone.glowing.granite.desc=Red dust embedded in granite. Emits a faint light.
tile.ore.redstone.glowing.permafrost.name=Glowing Permafrost Redstone Ore
tile.ore.redstone.glowing.permafrost.desc=Red dust embedded in permafrost. Emits a faint light.

tile.ore.diamond.stone.name=Stone Diamond Ore
tile.ore.diamond.stone.desc=A chunk of diamond embedded in stone.
tile.ore.diamond.basalt.name=Basalt Diamond Ore
tile.ore.diamond.basalt.desc=A chunk of diamond embedded in basalt.
tile.ore.diamond.limestone.name=Limestone Diamond Ore
tile.ore.diamond.limestone.desc=A chunk of diamond embedded in limestone.
tile.ore.diamond.granite.name=Granite Diamond Ore
tile.ore.diamond.granite.desc=A chunk of diamond embedded in granite.
tile.ore.diamond.permafrost.name=Permafrost Diamond Ore
tile.ore.diamond.permafrost.desc=A chunk of diamond embedded in permafrost.

tile.ore.nethercoal.netherrack.name=Nether Coal Ore
tile.ore.nethercoal.netherrack.desc=A lump of Nether Coal embedded in netherrack.

tile.block.coal.name=Block of Coal
tile.block.coal.desc=A solid block of coal.
tile.block.iron.name=Block of Iron
tile.block.iron.desc=A solid block of iron. Heavy!
tile.block.gold.name=Block of Gold
tile.block.gold.desc=A solid block of gold, for flaunting your bling.
tile.block.lapis.name=Block of Lapis Lazuli
tile.block.lapis.desc=A solid block of lapis lazuli.
tile.block.redstone.name=Block of Redstone
tile.block.redstone.desc=A solid block of redstone.
tile.block.diamond.name=Block of Diamond
tile.block.diamond.desc=A solid block of diamond. Well done you.
tile.block.nethercoal.name=Block of Nether Coal
tile.block.nethercoal.desc=A solid block of Nether Coal.
tile.block.steel.name=Block of Steel
tile.block.steel.desc=A solid block of steel.
tile.block.quartz.name=Block of Quartz
tile.block.quartz.desc=A solid block of quartz.
tile.block.olivine.name=Block of Olivine
tile.block.olivine.desc=A solid block of olivine.
tile.block.charcoal.name=Block of Charcoal
tile.block.charcoal.desc=A solid block of charcoal.

tile.wire.redstone.name=Redstone Wire
tile.wire.redstone.desc=A strand of redstone dust laid on the ground.

tile.torch.redstone.idle.name=Redstone Torch
tile.torch.redstone.idle.desc=Emits a constant redstone signal.
tile.torch.redstone.active.name=Redstone Torch
tile.torch.redstone.active.desc=Emits a constant redstone signal.

tile.button.stone.name=Stone Button
tile.button.stone.desc=Emits a brief redstone signal when pressed.

tile.lever.cobble.stone.name=Cobblestone Lever
tile.lever.cobble.stone.desc=Allows turning a redstone signal on or off.

tile.pressureplate.stone.name=Stone Pressure Plate
tile.pressureplate.stone.desc=Emits a redstone signal when living creatures step on it.
tile.pressureplate.planks.oak.name=Wooden Pressure Plate
tile.pressureplate.planks.oak.desc=Emits a redstone signal when anything steps on it.
tile.pressureplate.cobble.stone.name=Cobblestone Pressure Plate
tile.pressureplate.cobble.stone.desc=Emits a redstone signal when players step on it.

tile.motionsensor.idle.name=Motion Sensor
tile.motionsensor.idle.desc=Emits a redstone signal when something moves past it.
tile.motionsensor.active.name=Active Motion Sensor
tile.motionsensor.active.desc=Emits a redstone signal when something moves past it.

tile.repeater.idle.name=Redstone Repeater
tile.repeater.idle.desc=Repeats redstone signals over a distance.
tile.repeater.active.name=Redstone Repeater
tile.repeater.active.desc=Repeats redstone signals over a distance.

tile.piston.base.name=Piston
tile.piston.base.desc=Pushes blocks but does not pull them.
tile.piston.base.sticky.name=Sticky Piston
tile.piston.base.sticky.desc=Pushes and pulls blocks.
tile.piston.head.name=Piston Head
tile.piston.head.desc=The pushy part of the piston.
tile.piston.moving.name=Piston Mover
tile.piston.moving.desc=The invisible moving part of the piston.

tile.noteblock.name=Note Block
tile.noteblock.desc=Plays a musical note when powered.

tile.rail.name=Rail
tile.rail.desc=For rapid horizontal movement via minecart.
tile.rail.powered.name=Powered Rail
tile.rail.powered.desc=Makes minecarts go faster when powered.
tile.rail.detector.name=Detector Rail
tile.rail.detector.desc=Emits a redstone signal when a minecart crosses it.

tile.spikes.name=Spike Trap
tile.spikes.desc=Deactivates when powered. Technically a war crime.

tile.dispenser.cobble.stone.name=Dispenser
tile.dispenser.cobble.stone.desc=Fires items out of the hole in the front.

tile.trapdoor.planks.oak.name=Oak Trapdoor
tile.trapdoor.planks.oak.desc=Like a door, but flat.
tile.trapdoor.iron.name=Iron Trapdoor
tile.trapdoor.iron.desc=Like a door, but flat and made of iron.
tile.trapdoor.glass.name=Glass Trapdoor
tile.trapdoor.glass.desc=Useless at its job.

tile.tnt.name=TNT
tile.tnt.desc=Goes off with a bang.

tile.door.planks.oak.bottom.name=Bottom Wooden Door
tile.door.planks.oak.bottom.desc=/give Honeydew 64 46
tile.door.planks.oak.top.name=Top Wooden Door
tile.door.planks.oak.top.desc=Oh, wait, that's not TNT, that's half a door.
tile.door.iron.bottom.name=Bottom Iron Door
tile.door.iron.bottom.desc=Not much good on its own.
tile.door.iron.top.name=Top Iron Door
tile.door.iron.top.desc=Could use a friend.

tile.mesh.name=Mesh Block
tile.mesh.desc=Allows items to pass through but nothing else.
tile.mesh.gold.name=Gold Mesh Block
tile.mesh.gold.desc=Allows a specified item to pass through but nothing else.

tile.bed.name=Bed
tile.bed.desc=Bed!
tile.seat.name=Seat
tile.seat.desc=Sit down and relax.

tile.cobweb.name=Cobweb
tile.cobweb.desc=Sticky silky strands woven by spiders.

tile.fire.name=Fire
tile.fire.desc=Ouch, fire hot!
tile.brazier.inactive.name=Brazier
tile.brazier.inactive.desc=A safe place to keep a fire.
tile.brazier.active.name=Lit Brazier
tile.brazier.active.desc=A safe place to keep a fire.

tile.mobspawner.name=Mob Spawner
tile.mobspawner.desc=A cage filled with horror.
tile.mobspawner.deactivated.name=Deactivated Mob Spawner
tile.mobspawner.deactivated.desc=A cage no longer filled with horror.

tile.workbench.name=Workbench
tile.workbench.desc=For bigger projects.

tile.furnace.stone.idle.name=Furnace
tile.furnace.stone.idle.desc=For melting, heating, and cooking blocks and items.
tile.furnace.stone.active.name=Lit Furnace
tile.furnace.stone.active.desc=For melting, heating, and cooking blocks and items.
tile.furnace.blast.idle.name=Blast Furnace
tile.furnace.blast.idle.desc=Burns hotter than a normal furnace.
tile.furnace.blast.active.name=Lit Blast Furnace
tile.furnace.blast.active.desc=Burns hotter than a normal furnace.

tile.trommel.idle.name=Trommel
tile.trommel.idle.desc=A machine that separates dirt from other useful items.
tile.trommel.active.name=Lit Trommel
tile.trommel.active.desc=A machine that separates dirt from other useful items.

tile.chest.planks.oak.name=Wooden Chest
tile.chest.planks.oak.desc=A place to store your items.
tile.chest.planks.oak.painted.name=Mystery Wooden Chest
tile.chest.planks.oak.painted.desc=How did you get this?!
tile.chest.planks.oak.painted.black.name=Black Wooden Chest
tile.chest.planks.oak.painted.black.desc=A place to store your items.
tile.chest.planks.oak.painted.red.name=Red Wooden Chest
tile.chest.planks.oak.painted.red.desc=A place to store your items.
tile.chest.planks.oak.painted.green.name=Green Wooden Chest
tile.chest.planks.oak.painted.green.desc=A place to store your items.
tile.chest.planks.oak.painted.brown.name=Brown Wooden Chest
tile.chest.planks.oak.painted.brown.desc=A place to store your items.
tile.chest.planks.oak.painted.blue.name=Blue Wooden Chest
tile.chest.planks.oak.painted.blue.desc=A place to store your items.
tile.chest.planks.oak.painted.purple.name=Purple Wooden Chest
tile.chest.planks.oak.painted.purple.desc=A place to store your items.
tile.chest.planks.oak.painted.cyan.name=Cyan Wooden Chest
tile.chest.planks.oak.painted.cyan.desc=A place to store your items.
tile.chest.planks.oak.painted.silver.name=Light Gray Wooden Chest
tile.chest.planks.oak.painted.silver.desc=A place to store your items.
tile.chest.planks.oak.painted.gray.name=Gray Wooden Chest
tile.chest.planks.oak.painted.gray.desc=A place to store your items.
tile.chest.planks.oak.painted.pink.name=Pink Wooden Chest
tile.chest.planks.oak.painted.pink.desc=A place to store your items.
tile.chest.planks.oak.painted.lime.name=Lime Wooden Chest
tile.chest.planks.oak.painted.lime.desc=A place to store your items.
tile.chest.planks.oak.painted.yellow.name=Yellow Wooden Chest
tile.chest.planks.oak.painted.yellow.desc=A place to store your items.
tile.chest.planks.oak.painted.lightblue.name=Light Blue Wooden Chest
tile.chest.planks.oak.painted.lightblue.desc=A place to store your items.
tile.chest.planks.oak.painted.magenta.name=Magenta Wooden Chest
tile.chest.planks.oak.painted.magenta.desc=A place to store your items.
tile.chest.planks.oak.painted.orange.name=Orange Wooden Chest
tile.chest.planks.oak.painted.orange.desc=A place to store your items.
tile.chest.planks.oak.painted.white.name=White Wooden Chest
tile.chest.planks.oak.painted.white.desc=A place to store your items.
tile.chest.legacy.name=Legacy Chest

tile.crops.wheat.name=Wheat Crops
tile.crops.wheat.desc=Wheat, plucked from the ground.
tile.crops.pumpkin.name=Pumpkin Crops
tile.crops.pumpkin.desc=A ripening pumpkin, plucked from the ground.

tile.farmland.dirt.name=Farmland
tile.farmland.dirt.desc=Tilled soil for growing crops.

tile.sign.post.planks.oak.name=Oak Signpost
tile.sign.post.planks.oak.desc=A free-standing oak sign.
tile.sign.wall.planks.oak.name=Oak Wall Sign
tile.sign.wall.planks.oak.desc=An oak sign placed on a wall.

tile.layer.snow.name=Snow Layer
tile.layer.snow.desc=A flat layer of snow.
tile.layer.leaves.oak.name=Leaf Pile
tile.layer.leaves.oak.desc=A pile of leaves.
tile.layer.slate.name=Slate Layer
tile.layer.slate.desc=A flat sheet of slate.

tile.ice.name=Ice
tile.ice.desc=Slippery frozen water.
tile.ice.perma.name=Perma-Ice
tile.ice.perma.desc=Ice imbued with the essence of stone.

tile.block.snow.name=Block of Snow
tile.block.snow.desc=Lots of snow compacted into a block.

tile.cactus.name=Cactus
tile.cactus.desc=A spiky plant that grows in the desert.

tile.block.clay.name=Block of Clay
tile.block.clay.desc=A block of compacted clay.

tile.sugarcane.name=Sugarcane
tile.sugarcane.desc=Not as sweet as you.

tile.block.sugarcane.name=Block of Sugarcane
tile.block.sugarcane.desc=One very big sugar cube.
tile.block.sugarcane.baked.name=Baked Block of Sugarcane
tile.block.sugarcane.baked.desc=Smells absolutely delicious.

tile.jukebox.name=Jukebox
tile.jukebox.desc=Plays your favourite tunes, assuming you have the right record.

tile.pumpkin.name=Pumpkin
tile.pumpkin.desc=An orange squash that grows in the wild.
tile.pumpkin.carved.idle.name=Carved Pumpkin
tile.pumpkin.carved.idle.desc=An orange squash with a spooky face.
tile.pumpkin.carved.active.name=Jack 'o' Lantern
tile.pumpkin.carved.active.desc=An orange squash with a spooky face, lit by a torch.
tile.pumpkin.redstone.name=Redstone Jack 'o' Lantern
tile.pumpkin.redstone.desc=An orange squash with a spooky face, lit by a redstone torch.

tile.netherrack.name=Netherrack
tile.netherrack.desc=Dark red rock that burns forever.
tile.netherrack.igneous.name=Igneous Netherrack
tile.netherrack.igneous.desc=Extreme heat has made this rock glow from inside.

tile.soulsand.name=Soul Sand
tile.soulsand.desc=Squishy brown sand that's tough to walk through.

tile.glowstone.name=Block of Glowstone
tile.glowstone.desc=Constantly emits a strong yellowish light.

tile.portal.nether.name=Nether Portal
tile.portal.nether.desc=A portal to the Nether.
tile.portal.paradise.name=Paradise Portal
tile.portal.paradise.desc=A portal to Paradise.

tile.cake.name=Cake
tile.cake.desc=I just can't cake it any more.
tile.pumpkin_pie.name=Pumpkin Pie
tile.pumpkin_pie.desc=I don't wanna pie!

tile.lamp.idle.name=Lamp
tile.lamp.idle.desc=How did you get this?!
tile.lamp.idle.black.name=Black Lamp
tile.lamp.idle.black.desc=A redstone lamp that can emit light. Tinted black.
tile.lamp.idle.red.name=Red Lamp
tile.lamp.idle.red.desc=A redstone lamp that can emit light. Tinted red.
tile.lamp.idle.green.name=Green Lamp
tile.lamp.idle.green.desc=A redstone lamp that can emit light. Tinted green.
tile.lamp.idle.brown.name=Brown Lamp
tile.lamp.idle.brown.desc=A redstone lamp that can emit light. Tinted brown.
tile.lamp.idle.blue.name=Blue Lamp
tile.lamp.idle.blue.desc=A redstone lamp that can emit light. Tinted blue.
tile.lamp.idle.purple.name=Purple Lamp
tile.lamp.idle.purple.desc=A redstone lamp that can emit light. Tinted purple.
tile.lamp.idle.cyan.name=Cyan Lamp
tile.lamp.idle.cyan.desc=A redstone lamp that can emit light. Tinted cyan.
tile.lamp.idle.silver.name=Light Gray Lamp
tile.lamp.idle.silver.desc=A redstone lamp that can emit light. Tinted light gray.
tile.lamp.idle.gray.name=Gray Lamp
tile.lamp.idle.gray.desc=A redstone lamp that can emit light. Tinted gray.
tile.lamp.idle.pink.name=Pink Lamp
tile.lamp.idle.pink.desc=A redstone lamp that can emit light. Tinted pink.
tile.lamp.idle.lime.name=Lime Lamp
tile.lamp.idle.lime.desc=A redstone lamp that can emit light. Tinted lime.
tile.lamp.idle.yellow.name=Yellow Lamp
tile.lamp.idle.yellow.desc=A redstone lamp that can emit light. Tinted yellow.
tile.lamp.idle.lightblue.name=Light Blue Lamp
tile.lamp.idle.lightblue.desc=A redstone lamp that can emit light. Tinted light blue.
tile.lamp.idle.magenta.name=Magenta Lamp
tile.lamp.idle.magenta.desc=A redstone lamp that can emit light. Tinted magenta.
tile.lamp.idle.orange.name=Orange Lamp
tile.lamp.idle.orange.desc=A redstone lamp that can emit light. Tinted orange.
tile.lamp.idle.white.name=White Lamp
tile.lamp.idle.white.desc=A redstone lamp that can emit light.

tile.lamp.active.name=Lit Lamp
tile.lamp.active.desc=How did you get this?!
tile.lamp.active.black.name=Lit Black Lamp
tile.lamp.active.black.desc=A redstone lamp that emits light. Tinted black.
tile.lamp.active.red.name=Lit Red Lamp
tile.lamp.active.red.desc=A redstone lamp that emits light. Tinted red.
tile.lamp.active.green.name=Lit Green Lamp
tile.lamp.active.green.desc=A redstone lamp that emits light. Tinted green.
tile.lamp.active.brown.name=Lit Brown Lamp
tile.lamp.active.brown.desc=A redstone lamp that emits light. Tinted brown.
tile.lamp.active.blue.name=Lit Blue Lamp
tile.lamp.active.blue.desc=A redstone lamp that emits light. Tinted blue.
tile.lamp.active.purple.name=Lit Purple Lamp
tile.lamp.active.purple.desc=A redstone lamp that emits light. Tinted purple.
tile.lamp.active.cyan.name=Lit Cyan Lamp
tile.lamp.active.cyan.desc=A redstone lamp that emits light. Tinted cyan.
tile.lamp.active.silver.name=Lit Light Gray Lamp
tile.lamp.active.silver.desc=A redstone lamp that emits light. Tinted light gray.
tile.lamp.active.gray.name=Lit Gray Lamp
tile.lamp.active.gray.desc=A redstone lamp that emits light. Tinted gray.
tile.lamp.active.pink.name=Lit Pink Lamp
tile.lamp.active.pink.desc=A redstone lamp that emits light. Tinted pink.
tile.lamp.active.lime.name=Lit Lime Lamp
tile.lamp.active.lime.desc=A redstone lamp that emits light. Tinted lime.
tile.lamp.active.yellow.name=Yellow Lamp
tile.lamp.active.yellow.desc=A redstone lamp that emits light. Tinted yellow.
tile.lamp.active.lightblue.name=Light Blue Lamp
tile.lamp.active.lightblue.desc=A redstone lamp that emits light. Tinted light blue.
tile.lamp.active.magenta.name=Magenta Lamp
tile.lamp.active.magenta.desc=A redstone lamp that emits light. Tinted magenta.
tile.lamp.active.orange.name=Orange Lamp
tile.lamp.active.orange.desc=A redstone lamp that emits light. Tinted orange.
tile.lamp.active.white.name=White Lamp
tile.lamp.active.white.desc=A redstone lamp that emits light.

tile.stone.polished.name=Polished Stone
tile.stone.polished.desc=A polished block of stone.
tile.granite.polished.name=Polished Granite
tile.granite.polished.desc=A polished block of granite.
tile.limestone.polished.name=Polished Limestone
tile.limestone.polished.desc=A polished block of limestone.
tile.basalt.polished.name=Polished Basalt
tile.basalt.polished.desc=A polished block of basalt.
tile.slate.polished.name=Polished Slate
tile.slate.polished.desc=A polished block of slate.
tile.permafrost.polished.name=Polished Permafrost
tile.permafrost.polished.desc=A polished block of permafrost.

tile.candle.wax.soul.name=Soul Wax Candle
tile.candle.wax.soul.desc=A waxy brown candle that glows with an unnatural light.

tile.basket.name=Basket
tile.basket.desc=A wicker container for holding items.

tile.overlay.pebbles.name=Pebbles
tile.overlay.pebbles.desc=A cluster of pebbles.

tile.fence.chainlink.name=Chainlink Fence
tile.fence.chainlink.desc=A fence made of interconnected chain links. Can be climbed!
tile.fence.paper_wall.name=Paper Wall Fence
tile.fence.paper_wall.desc=A fence made of delicate paper. Be careful!

tile.lantern.firefly.green.name=Green Firefly Lantern
tile.lantern.firefly.green.desc=A glass jar containing a swarm of green fireflies.
tile.lantern.firefly.orange.name=Orange Firefly Lantern
tile.lantern.firefly.orange.desc=A glass jar containing a swarm of orange fireflies.
tile.lantern.firefly.blue.name=Blue Firefly Lantern
tile.lantern.firefly.blue.desc=A glass jar containing a swarm of blue fireflies.
tile.lantern.firefly.red.name=Red Firefly Lantern
tile.lantern.firefly.red.desc=A glass jar containing a swarm of red fireflies.

tile.flag.name=Flag
tile.flag.desc=A flag to mark your territory.

tile.paper_wall.name=Paper Wall
tile.paper_wall.desc=A wall made of delicate paper. Be careful!

tile.trapdoor.planks.oak.painted.name=Painted Trapdoor
tile.trapdoor.planks.oak.painted.desc=How did you get this?!
tile.trapdoor.planks.oak.painted.black.name=Black Oak Trapdoor
tile.trapdoor.planks.oak.painted.black.desc=Like a door, but flat and painted black.
tile.trapdoor.planks.oak.painted.red.name=Red Oak Trapdoor
tile.trapdoor.planks.oak.painted.red.desc=Like a door, but flat and painted red.
tile.trapdoor.planks.oak.painted.green.name=Green Oak Trapdoor
tile.trapdoor.planks.oak.painted.green.desc=Like a door, but flat and painted green.
tile.trapdoor.planks.oak.painted.brown.name=Brown Oak Trapdoor
tile.trapdoor.planks.oak.painted.brown.desc=Like a door, but flat and painted brown.
tile.trapdoor.planks.oak.painted.blue.name=Blue Oak Trapdoor
tile.trapdoor.planks.oak.painted.blue.desc=Like a door, but flat and painted blue.
tile.trapdoor.planks.oak.painted.purple.name=Purple Oak Trapdoor
tile.trapdoor.planks.oak.painted.purple.desc=Like a door, but flat and painted purple.
tile.trapdoor.planks.oak.painted.cyan.name=Cyan Oak Trapdoor
tile.trapdoor.planks.oak.painted.cyan.desc=Like a door, but flat and painted cyan.
tile.trapdoor.planks.oak.painted.silver.name=Light Gray Oak Trapdoor
tile.trapdoor.planks.oak.painted.silver.desc=Like a door, but flat and painted light gray.
tile.trapdoor.planks.oak.painted.gray.name=Gray Oak Trapdoor
tile.trapdoor.planks.oak.painted.gray.desc=Like a door, but flat and painted gray.
tile.trapdoor.planks.oak.painted.pink.name=Pink Oak Trapdoor
tile.trapdoor.planks.oak.painted.pink.desc=Like a door, but flat and painted pink.
tile.trapdoor.planks.oak.painted.lime.name=Lime Oak Trapdoor
tile.trapdoor.planks.oak.painted.lime.desc=Like a door, but flat and painted lime.
tile.trapdoor.planks.oak.painted.yellow.name=Yellow Oak Trapdoor
tile.trapdoor.planks.oak.painted.yellow.desc=Like a door, but flat and painted yellow.
tile.trapdoor.planks.oak.painted.lightblue.name=Light Blue Oak Trapdoor
tile.trapdoor.planks.oak.painted.lightblue.desc=Like a door, but flat and painted light blue.
tile.trapdoor.planks.oak.painted.magenta.name=Magenta Oak Trapdoor
tile.trapdoor.planks.oak.painted.magenta.desc=Like a door, but flat and painted magenta.
tile.trapdoor.planks.oak.painted.orange.name=Orange Oak Trapdoor
tile.trapdoor.planks.oak.painted.orange.desc=Like a door, but flat and painted orange.
tile.trapdoor.planks.oak.painted.white.name=White Oak Trapdoor
tile.trapdoor.planks.oak.painted.white.desc=Like a door, but flat and painted white.

tile.door.planks.oak.painted.bottom.name=Bottom Painted Wooden Door
tile.door.planks.oak.painted.bottom.desc=How did you get this?!
tile.door.planks.oak.painted.bottom.black.name=Black Bottom Wooden Door
tile.door.planks.oak.painted.bottom.black.desc=How did you get this?!
tile.door.planks.oak.painted.bottom.red.name=Red Bottom Wooden Door
tile.door.planks.oak.painted.bottom.red.desc=How did you get this?!
tile.door.planks.oak.painted.bottom.green.name=Green Bottom Wooden Door
tile.door.planks.oak.painted.bottom.green.desc=How did you get this?!
tile.door.planks.oak.painted.bottom.brown.name=Brown Bottom Wooden Door
tile.door.planks.oak.painted.bottom.brown.desc=How did you get this?!
tile.door.planks.oak.painted.bottom.blue.name=Blue Bottom Wooden Door
tile.door.planks.oak.painted.bottom.blue.desc=How did you get this?!
tile.door.planks.oak.painted.bottom.purple.name=Purple Bottom Wooden Door
tile.door.planks.oak.painted.bottom.purple.desc=How did you get this?!
tile.door.planks.oak.painted.bottom.cyan.name=Cyan Bottom Wooden Door
tile.door.planks.oak.painted.bottom.cyan.desc=How did you get this?!
tile.door.planks.oak.painted.bottom.silver.name=Light Gray Bottom Wooden Door
tile.door.planks.oak.painted.bottom.silver.desc=How did you get this?!
tile.door.planks.oak.painted.bottom.gray.name=Gray Bottom Wooden Door
tile.door.planks.oak.painted.bottom.gray.desc=How did you get this?!
tile.door.planks.oak.painted.bottom.pink.name=Pink Bottom Wooden Door
tile.door.planks.oak.painted.bottom.pink.desc=How did you get this?!
tile.door.planks.oak.painted.bottom.lime.name=Lime Bottom Wooden Door
tile.door.planks.oak.painted.bottom.lime.desc=How did you get this?!
tile.door.planks.oak.painted.bottom.yellow.name=Yellow Bottom Wooden Door
tile.door.planks.oak.painted.bottom.yellow.desc=How did you get this?!
tile.door.planks.oak.painted.bottom.lightblue.name=Light Blue Bottom Wooden Door
tile.door.planks.oak.painted.bottom.lightblue.desc=How did you get this?!
tile.door.planks.oak.painted.bottom.magenta.name=Magenta Bottom Wooden Door
tile.door.planks.oak.painted.bottom.magenta.desc=How did you get this?!
tile.door.planks.oak.painted.bottom.orange.name=Orange Bottom Wooden Door
tile.door.planks.oak.painted.bottom.orange.desc=How did you get this?!
tile.door.planks.oak.painted.bottom.white.name=White Bottom Wooden Door
tile.door.planks.oak.painted.bottom.white.desc=How did you get this?!

tile.door.planks.oak.painted.top.name=Top Painted Wooden Door
tile.door.planks.oak.painted.top.desc=How did you get this?!
tile.door.planks.oak.painted.top.black.name=Black Top Wooden Door
tile.door.planks.oak.painted.top.black.desc=How did you get this?!
tile.door.planks.oak.painted.top.red.name=Red Top Wooden Door
tile.door.planks.oak.painted.top.red.desc=How did you get this?!
tile.door.planks.oak.painted.top.green.name=Green Top Wooden Door
tile.door.planks.oak.painted.top.green.desc=How did you get this?!
tile.door.planks.oak.painted.top.brown.name=Brown Top Wooden Door
tile.door.planks.oak.painted.top.brown.desc=How did you get this?!
tile.door.planks.oak.painted.top.blue.name=Blue Top Wooden Door
tile.door.planks.oak.painted.top.blue.desc=How did you get this?!
tile.door.planks.oak.painted.top.purple.name=Purple Top Wooden Door
tile.door.planks.oak.painted.top.purple.desc=How did you get this?!
tile.door.planks.oak.painted.top.cyan.name=Cyan Top Wooden Door
tile.door.planks.oak.painted.top.cyan.desc=How did you get this?!
tile.door.planks.oak.painted.top.silver.name=Light Gray Top Wooden Door
tile.door.planks.oak.painted.top.silver.desc=How did you get this?!
tile.door.planks.oak.painted.top.gray.name=Gray Top Wooden Door
tile.door.planks.oak.painted.top.gray.desc=How did you get this?!
tile.door.planks.oak.painted.top.pink.name=Pink Top Wooden Door
tile.door.planks.oak.painted.top.pink.desc=How did you get this?!
tile.door.planks.oak.painted.top.lime.name=Lime Top Wooden Door
tile.door.planks.oak.painted.top.lime.desc=How did you get this?!
tile.door.planks.oak.painted.top.yellow.name=Yellow Top Wooden Door
tile.door.planks.oak.painted.top.yellow.desc=How did you get this?!
tile.door.planks.oak.painted.top.lightblue.name=Light Blue Top Wooden Door
tile.door.planks.oak.painted.top.lightblue.desc=How did you get this?!
tile.door.planks.oak.painted.top.magenta.name=Magenta Top Wooden Door
tile.door.planks.oak.painted.top.magenta.desc=How did you get this?!
tile.door.planks.oak.painted.top.orange.name=Orange Top Wooden Door
tile.door.planks.oak.painted.top.orange.desc=How did you get this?!
tile.door.planks.oak.painted.top.white.name=White Top Wooden Door
tile.door.planks.oak.painted.top.white.desc=How did you get this?!

tile.door.glass.top.name=Glass Top Door
tile.door.glass.top.desc=You shouldn't be seeing this.
tile.door.glass.bottom.name=Glass Bottom Door
tile.door.glass.bottom.desc=And that's not just because it's glass.

tile.door.steel.top.name=Steel Top Door
tile.door.steel.top.desc=How did you get this?!
tile.door.steel.bottom.name=Steel Bottom Door
tile.door.steel.bottom.desc=How did you get this?!

tile.trapdoor.steel.name=Steel Trapdoor
tile.trapdoor.steel.desc=Like a door, but flat and made of durable steel.

tile.glass.steel.name=Reinforced Glass
tile.glass.steel.desc=Like glass, but without the fragility.

tile.rope.name=Rope
tile.rope.desc=Rope, rope, rope your boat.
\ No newline at end of file
diff --git a/src/common/resources/recipes/workbench.json b/src/common/resources/recipes/workbench.json
index e676334d3..5ebfc4997 100644
--- a/src/common/resources/recipes/workbench.json
+++ b/src/common/resources/recipes/workbench.json
@@ -6884,6 +6884,30 @@
     },
     "consumeContainers": true
   },
+  {
+    "name": "minecraft:workbench/steel_trapdoor",
+    "type": "minecraft:crafting/shaped",
+    "pattern": [
+      "###",
+      "###"
+    ],
+    "symbols": [
+      {
+        "symbol": "#",
+        "stack": {
+          "id": "minecraft:item/ingot_steel",
+          "amount": 1,
+          "meta": 0
+        }
+      }
+    ],
+    "result": {
+      "id": "minecraft:block/trapdoor_steel",
+      "amount": 6,
+      "meta": 0
+    },
+    "consumeContainers": true
+  },
   {
     "name": "minecraft:workbench/glass_trapdoor",
     "type": "minecraft:crafting/shaped",
@@ -7339,6 +7363,31 @@
     },
     "consumeContainers": true
   },
+  {
+    "name": "minecraft:workbench/steel_door",
+    "type": "minecraft:crafting/shaped",
+    "pattern": [
+      "##",
+      "##",
+      "##"
+    ],
+    "symbols": [
+      {
+        "symbol": "#",
+        "stack": {
+          "id": "minecraft:item/ingot_steel",
+          "amount": 1,
+          "meta": 0
+        }
+      }
+    ],
+    "result": {
+      "id": "minecraft:item/door_steel",
+      "amount": 2,
+      "meta": 0
+    },
+    "consumeContainers": true
+  },
   {
     "name": "minecraft:workbench/sign",
     "type": "minecraft:crafting/shaped",
@@ -8289,6 +8338,38 @@
     },
     "consumeContainers": true
   },
+  {
+    "name": "minecraft:workbench/steel_glass",
+    "type": "minecraft:crafting/shaped",
+    "pattern": [
+      "#X",
+      "X#"
+    ],
+    "symbols": [
+      {
+        "symbol": "#",
+        "stack": {
+          "id": "minecraft:block/glass",
+          "amount": 1,
+          "meta": 0
+        }
+      },
+      {
+        "symbol": "X",
+        "stack": {
+          "id": "minecraft:item/ingot_steel",
+          "amount": 1,
+          "meta": 0
+        }
+      }
+    ],
+    "result": {
+      "id": "minecraft:block/glass_steel",
+      "amount": 4,
+      "meta": 0
+    },
+    "consumeContainers": true
+  },
   {
     "name": "minecraft:workbench/slate_to_slate_layers",
     "type": "minecraft:crafting/shaped",
diff --git a/src/main/java/net/betterthanadventure/utils/BiomeFinder.java b/src/main/java/net/betterthanadventure/utils/BiomeFinder.java
index 9e60e6c09..e56e5db6c 100644
--- a/src/main/java/net/betterthanadventure/utils/BiomeFinder.java
+++ b/src/main/java/net/betterthanadventure/utils/BiomeFinder.java
@@ -7,6 +7,7 @@ import net.minecraft.core.MinecraftAccessor;
 import net.minecraft.core.data.registry.Registries;
 import net.minecraft.core.entity.SkinVariantList;
 import net.minecraft.core.world.Dimension;
+import net.minecraft.core.world.SpawnerMobs;
 import net.minecraft.core.world.World;
 import net.minecraft.core.world.biome.Biome;
 import net.minecraft.core.world.biome.provider.BiomeProvider;
@@ -78,7 +79,7 @@ public class BiomeFinder implements MinecraftAccessor {
                     worldFolder = new File(value);
                     break;
                 case "world-client":
-                    worldFolder = new File(Minecraft.getAppDir("minecraft-bta"), "saves/" + value);
+                    worldFolder = new File(Minecraft.getMinecraft(Minecraft.class).getMinecraftDir(), "saves/" + value);
                     break;
                 case "seed":
                     seed = parseSeed(value);
@@ -131,7 +132,7 @@ public class BiomeFinder implements MinecraftAccessor {
 
 		File worldDirectory;
 		try {
-			worldDirectory = new File(Minecraft.getAppDir("minecraft-bta"), "saves");
+			worldDirectory = new File(Minecraft.getMinecraft(Minecraft.class).getMinecraftDir(), "saves");
 		} catch (Exception e){
 			worldDirectory = new File("");
 		}
@@ -484,7 +485,7 @@ public class BiomeFinder implements MinecraftAccessor {
 		} else {
 			SaveFormatBase saveFormat = new SaveFormat19134(worldFolder.getParentFile());
 			LevelStorage saveHandler = saveFormat.getSaveHandler(worldFolder.getName(), false);
-			world = new World(saveHandler, saveHandler.getLevelData().getWorldName(), saveHandler.getLevelData().getRandomSeed(), null, null);
+			world = new World(saveHandler, saveHandler.getLevelData().getWorldName(), saveHandler.getLevelData().getRandomSeed(), null, null, new SpawnerMobs.SpawnerConfig());
 			biomeProvider = worldType.createBiomeProvider(world);
 		}
 		allBiomes.clear();
diff --git a/src/main/java/net/betterthanadventure/utils/DataDumper.java b/src/main/java/net/betterthanadventure/utils/DataDumper.java
index 0092b83f9..25cbca191 100644
--- a/src/main/java/net/betterthanadventure/utils/DataDumper.java
+++ b/src/main/java/net/betterthanadventure/utils/DataDumper.java
@@ -195,6 +195,9 @@ public class DataDumper implements MinecraftAccessor {
     }
     @Override
     public File getMinecraftDir() {
+        if (!Global.isServer && Minecraft.getMinecraft(Minecraft.class) != null) { // Very hack way of making it pull the instance's mc directory when running from ingame
+            return Minecraft.getMinecraft(Minecraft.class).getMinecraftDir();
+        }
         if (minecraftDir == null){
             try {
                 minecraftDir = Minecraft.getAppDir("minecraft-bta"); // Client jar directory
diff --git a/src/main/java/net/minecraft/client/Minecraft.java b/src/main/java/net/minecraft/client/Minecraft.java
index d5b359d1c..0a3eb716d 100644
--- a/src/main/java/net/minecraft/client/Minecraft.java
+++ b/src/main/java/net/minecraft/client/Minecraft.java
@@ -5,12 +5,14 @@ import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Comparator;
+import java.util.List;
 import java.util.Random;
 
 import com.mojang.nbt.CompoundTag;
 import net.minecraft.client.entity.ClientSkinVariantList;
 import net.minecraft.client.gui.toasts.GuiHudToasts;
 import net.minecraft.core.achievement.Achievements;
+import net.minecraft.core.world.SpawnerMobs;
 import net.minecraft.core.world.save.*;
 import net.minecraft.core.world.type.WorldType;
 import net.minecraft.core.world.type.WorldTypeGroups;
@@ -1634,7 +1636,6 @@ public class Minecraft
             if(!isGamePaused || isMultiplayerWorld())
             {
                 Debug.change("world");
-                theWorld.setAllowedMobSpawns(gameSettings.difficulty.value.canMobsSpawn(), true);
                 theWorld.tick();
                 Debug.change("misc");
             }
@@ -2051,7 +2052,7 @@ public class Minecraft
                     }
                 }
             }
-            World world = new World(saveHandler, worldName, seed, null, null);
+            World world = new World(saveHandler, worldName, seed, null, null, new SpawnerMobs.SpawnerConfig());
             if(world.isNewWorld)
             {
                 statsCounter.add(StatList.createWorldStat, 1);
@@ -2136,6 +2137,14 @@ public class Minecraft
         if(theWorld != null)
         {
             theWorld.saveWorldIndirectly(loadingScreen);
+            IChunkLoader loader = theWorld.saveHandler.getChunkLoader(theWorld.dimension);
+            while (loader.isSaving()) {
+                try {
+                    Thread.sleep(1);
+                } catch (InterruptedException e) {
+                    throw new RuntimeException(e);
+                }
+            }
             theWorld.getChunkProvider().unloadAllChunks();
             theWorld.onUnload();
         }
diff --git a/src/main/java/net/minecraft/client/gui/options/data/OptionsPages.java b/src/main/java/net/minecraft/client/gui/options/data/OptionsPages.java
index 07e1ebc04..394f782ed 100644
--- a/src/main/java/net/minecraft/client/gui/options/data/OptionsPages.java
+++ b/src/main/java/net/minecraft/client/gui/options/data/OptionsPages.java
@@ -274,6 +274,7 @@ public abstract class OptionsPages
             .withComponent(new BooleanOptionComponent(mc.gameSettings.loadAllSounds))
             .withComponent(new BooleanOptionComponent(mc.gameSettings.allowSoundOverrides))
             .withComponent(new BooleanOptionComponent(mc.gameSettings.downloadSoundfiles))
+            .withComponent(new BooleanOptionComponent(mc.gameSettings.enableDevResourceLoading))
         )
         .withComponent(new OptionsCategory("gui.options.page.debug.category.utility")
             .withComponent(new ShortcutComponent("gui.options.page.debug.button.open.model_viewer", () -> {
diff --git a/src/main/java/net/minecraft/client/option/GameSettings.java b/src/main/java/net/minecraft/client/option/GameSettings.java
index 49be04e35..a1cf6e215 100644
--- a/src/main/java/net/minecraft/client/option/GameSettings.java
+++ b/src/main/java/net/minecraft/client/option/GameSettings.java
@@ -132,6 +132,7 @@ public class GameSettings {
 	public BooleanOption turnWithVehicle = new BooleanOption(this, "turnWithVehicle", true);
 	public BooleanOption disableCrashHandler = new BooleanOption(this,"disableCrashHandler",false);
 
+	public BooleanOption enableDevResourceLoading = new BooleanOption(this, "enableDevResourceLoading", false);
 	public BooleanOption downloadSoundfiles = new BooleanOption(this, "downloadSoundfiles", true);
 	public BooleanOption allowSoundOverrides = new BooleanOption(this, "allowSoundOverrides", false);
 	public BooleanOption loadAllSounds = new BooleanOption(this, "loadAllSounds", false);
diff --git a/src/main/java/net/minecraft/client/render/WorldRenderer.java b/src/main/java/net/minecraft/client/render/WorldRenderer.java
index 4a0dfa662..126cee60b 100644
--- a/src/main/java/net/minecraft/client/render/WorldRenderer.java
+++ b/src/main/java/net/minecraft/client/render/WorldRenderer.java
@@ -431,6 +431,8 @@ public class WorldRenderer
 				float deltaX = (float) mc.mouseInput.deltaX * sensitivity;
 				float deltaY = (float) mc.mouseInput.deltaY * sensitivity;
 
+//                System.out.printf("%s %s\n", deltaX, deltaY);
+
 				int l = 1;
 				if(mc.gameSettings.invertMouse.value) {
 					l = -1;
diff --git a/src/main/java/net/minecraft/client/render/block/model/BlockModelDispatcher.java b/src/main/java/net/minecraft/client/render/block/model/BlockModelDispatcher.java
index 8647daba8..342f51d47 100644
--- a/src/main/java/net/minecraft/client/render/block/model/BlockModelDispatcher.java
+++ b/src/main/java/net/minecraft/client/render/block/model/BlockModelDispatcher.java
@@ -148,6 +148,7 @@ public class BlockModelDispatcher
 
         addDispatch(new TransparentBlockModel<>(Blocks.GLASS, false).withTextures("minecraft:block/glass"));
         addDispatch(new TransparentBlockModel<>(Blocks.GLASS_TINTED, false).withTextures("minecraft:block/glass_tinted"));
+        addDispatch(new TransparentBlockModel<>(Blocks.GLASS_STEEL, false).withTextures("minecraft:block/glass_steel"));
 
         addDispatch(new GrassBlockModel<>(Blocks.GRASS)
                 .withTextures("minecraft:block/grass_top", "minecraft:block/dirt", "minecraft:block/grass_side"));
@@ -329,6 +330,7 @@ public class BlockModelDispatcher
         addDispatch(new TrapDoorBlockModel<>(Blocks.TRAPDOOR_IRON).withTextures("minecraft:block/trapdoor_iron_top", "minecraft:block/trapdoor_iron_side"));
         addDispatch(new TrapDoorBlockModel<>(Blocks.TRAPDOOR_GLASS).withTextures("minecraft:block/glass", "minecraft:block/trapdoor_glass_side"));
         addDispatch(new TrapDoorPaintedBlockModel<>(Blocks.TRAPDOOR_PLANKS_PAINTED));
+        addDispatch(new TrapDoorBlockModel<>(Blocks.TRAPDOOR_STEEL).withTextures("minecraft:block/trapdoor_steel_top", "minecraft:block/trapdoor_steel_side"));
 
         addDispatch(new StandardBlockModel<>(Blocks.TNT).withTextures("minecraft:block/tnt_top", "minecraft:block/tnt_bottom", "minecraft:block/tnt_side"));
 
@@ -340,6 +342,8 @@ public class BlockModelDispatcher
         addDispatch(new PaintedDoorBlockModel<>(Blocks.DOOR_PLANKS_PAINTED_TOP, true).withTextures("minecraft:block/trapdoor_planks_oak_top", "minecraft:block/door_planks_oak_top"));
         addDispatch(new GlassDoorBlockModel<>(Blocks.DOOR_GLASS_BOTTOM).withTextures("minecraft:block/glass", "minecraft:block/door_glass_bottom"));
         addDispatch(new GlassDoorBlockModel<>(Blocks.DOOR_GLASS_TOP).withTextures("minecraft:block/glass", "minecraft:block/door_glass_top"));
+        addDispatch(new DoorBlockModel<>(Blocks.DOOR_STEEL_BOTTOM).withTextures("minecraft:block/trapdoor_steel_top", "minecraft:block/door_steel_bottom"));
+        addDispatch(new DoorBlockModel<>(Blocks.DOOR_STEEL_TOP).withTextures("minecraft:block/trapdoor_steel_top", "minecraft:block/door_steel_top"));
 
         addDispatch(new TransparentBlockModel<>(Blocks.MESH, true).withTextures("minecraft:block/mesh"));
         addDispatch(new TransparentBlockModel<>(Blocks.MESH_GOLD, true).withTextures("minecraft:block/mesh_gold"));
diff --git a/src/main/java/net/minecraft/client/render/block/model/RedstoneWireBlockModel.java b/src/main/java/net/minecraft/client/render/block/model/RedstoneWireBlockModel.java
index e078b6683..0b7471b8c 100644
--- a/src/main/java/net/minecraft/client/render/block/model/RedstoneWireBlockModel.java
+++ b/src/main/java/net/minecraft/client/render/block/model/RedstoneWireBlockModel.java
@@ -11,8 +11,8 @@ import net.minecraft.core.enums.LightLayer;
 import net.minecraft.core.util.helper.Color;
 
 public class RedstoneWireBlockModel<T extends Block> extends StandardBlockModel<T> {
-    protected IconCoordinate wireStraight = TextureRegistry.getTexture("minecraft:block/wire_redstone_straight");
-    protected IconCoordinate wireCross = TextureRegistry.getTexture("minecraft:block/wire_redstone_cross");
+    protected final IconCoordinate wireStraight = TextureRegistry.getTexture("minecraft:block/wire_redstone_straight");
+    protected final IconCoordinate wireCross = TextureRegistry.getTexture("minecraft:block/wire_redstone_cross");
     public RedstoneWireBlockModel(Block block) {
         super(block);
         withTextures("minecraft:block/wire_redstone_cross");
@@ -22,9 +22,11 @@ public class RedstoneWireBlockModel<T extends Block> extends StandardBlockModel<
     public boolean render(Tessellator tessellator, int x, int y, int z) {
         block.setBlockBoundsBasedOnState(renderBlocks.blockAccess, x, y, z);
         int meta = renderBlocks.blockAccess.getBlockMetadata(x, y, z);
+        IconCoordinate straight = wireStraight;
+        IconCoordinate cross = wireCross;
         if(renderBlocks.overrideBlockTexture != null)
         {
-            wireCross = renderBlocks.overrideBlockTexture;
+            cross = renderBlocks.overrideBlockTexture;
         }
         float brightness = 1.0f;
         if(LightmapHelper.isLightmapEnabled()) {
@@ -113,94 +115,94 @@ public class RedstoneWireBlockModel<T extends Block> extends StandardBlockModel<
                 float s = south ? 0 : onePix * 5;
                 float n = north ? 0 : onePix * 5;
 
-                tessellator.addVertexWithUV(xMax - e, (float)y + renderOffset, zMax - s,  wireCross.getSubIconU(1 - e), wireCross.getSubIconV(1 - s));
-                tessellator.addVertexWithUV(xMax - e, (float)y + renderOffset, zMin + n,  wireCross.getSubIconU(1 - e), wireCross.getSubIconV(n));
-                tessellator.addVertexWithUV(xMin + w, (float)y + renderOffset, zMin + n,  wireCross.getSubIconU(w),     wireCross.getSubIconV(n));
-                tessellator.addVertexWithUV(xMin + w, (float)y + renderOffset, zMax - s,  wireCross.getSubIconU(w),     wireCross.getSubIconV(1 - s));
+                tessellator.addVertexWithUV(xMax - e, (float)y + renderOffset, zMax - s,  cross.getSubIconU(1 - e), cross.getSubIconV(1 - s));
+                tessellator.addVertexWithUV(xMax - e, (float)y + renderOffset, zMin + n,  cross.getSubIconU(1 - e), cross.getSubIconV(n));
+                tessellator.addVertexWithUV(xMin + w, (float)y + renderOffset, zMin + n,  cross.getSubIconU(w),     cross.getSubIconV(n));
+                tessellator.addVertexWithUV(xMin + w, (float)y + renderOffset, zMax - s,  cross.getSubIconU(w),     cross.getSubIconV(1 - s));
 
-                tessellator.addVertexWithUV(xMax - e, (float)y + renderOffset, zMax - s,  wireCross.getSubIconU(1 - e), wireCross.getSubIconV(1 - s));
-                tessellator.addVertexWithUV(xMin + w, (float)y + renderOffset, zMax - s,  wireCross.getSubIconU(w),     wireCross.getSubIconV(1 - s));
-                tessellator.addVertexWithUV(xMin + w, (float)y + renderOffset, zMin + n,  wireCross.getSubIconU(w),     wireCross.getSubIconV(n));
-                tessellator.addVertexWithUV(xMax - e, (float)y + renderOffset, zMin + n,  wireCross.getSubIconU(1 - e), wireCross.getSubIconV(n));
+                tessellator.addVertexWithUV(xMax - e, (float)y + renderOffset, zMax - s,  cross.getSubIconU(1 - e), cross.getSubIconV(1 - s));
+                tessellator.addVertexWithUV(xMin + w, (float)y + renderOffset, zMax - s,  cross.getSubIconU(w),     cross.getSubIconV(1 - s));
+                tessellator.addVertexWithUV(xMin + w, (float)y + renderOffset, zMin + n,  cross.getSubIconU(w),     cross.getSubIconV(n));
+                tessellator.addVertexWithUV(xMax - e, (float)y + renderOffset, zMin + n,  cross.getSubIconU(1 - e), cross.getSubIconV(n));
 
 
             } else {
-                tessellator.addVertexWithUV(xMax, (float)y + renderOffset, zMax, wireCross.getIconUMax(), wireCross.getIconVMax());
-                tessellator.addVertexWithUV(xMax, (float)y + renderOffset, zMin, wireCross.getIconUMax(), wireCross.getIconVMin());
-                tessellator.addVertexWithUV(xMin, (float)y + renderOffset, zMin, wireCross.getIconUMin(), wireCross.getIconVMin());
-                tessellator.addVertexWithUV(xMin, (float)y + renderOffset, zMax, wireCross.getIconUMin(), wireCross.getIconVMax());
-
-                tessellator.addVertexWithUV(xMax, (float)y + renderOffset, zMax, wireCross.getIconUMax(), wireCross.getIconVMax());
-                tessellator.addVertexWithUV(xMin, (float)y + renderOffset, zMax, wireCross.getIconUMin(), wireCross.getIconVMax());
-                tessellator.addVertexWithUV(xMin, (float)y + renderOffset, zMin, wireCross.getIconUMin(), wireCross.getIconVMin());
-                tessellator.addVertexWithUV(xMax, (float)y + renderOffset, zMin, wireCross.getIconUMax(), wireCross.getIconVMin());
+                tessellator.addVertexWithUV(xMax, (float)y + renderOffset, zMax, cross.getIconUMax(), cross.getIconVMax());
+                tessellator.addVertexWithUV(xMax, (float)y + renderOffset, zMin, cross.getIconUMax(), cross.getIconVMin());
+                tessellator.addVertexWithUV(xMin, (float)y + renderOffset, zMin, cross.getIconUMin(), cross.getIconVMin());
+                tessellator.addVertexWithUV(xMin, (float)y + renderOffset, zMax, cross.getIconUMin(), cross.getIconVMax());
+
+                tessellator.addVertexWithUV(xMax, (float)y + renderOffset, zMax, cross.getIconUMax(), cross.getIconVMax());
+                tessellator.addVertexWithUV(xMin, (float)y + renderOffset, zMax, cross.getIconUMin(), cross.getIconVMax());
+                tessellator.addVertexWithUV(xMin, (float)y + renderOffset, zMin, cross.getIconUMin(), cross.getIconVMin());
+                tessellator.addVertexWithUV(xMax, (float)y + renderOffset, zMin, cross.getIconUMax(), cross.getIconVMin());
             }
 
         } else if (type == 1) { // East-West
-            tessellator.addVertexWithUV(xMax, (float)y + renderOffset, zMax, wireStraight.getIconUMax(), wireStraight.getIconVMax());
-            tessellator.addVertexWithUV(xMax, (float)y + renderOffset, zMin, wireStraight.getIconUMax(), wireStraight.getIconVMin());
-            tessellator.addVertexWithUV(xMin, (float)y + renderOffset, zMin, wireStraight.getIconUMin(), wireStraight.getIconVMin());
-            tessellator.addVertexWithUV(xMin, (float)y + renderOffset, zMax, wireStraight.getIconUMin(), wireStraight.getIconVMax());
-
-            tessellator.addVertexWithUV(xMax, (float)y + renderOffset, zMax, wireStraight.getIconUMax(), wireStraight.getIconVMax());
-            tessellator.addVertexWithUV(xMin, (float)y + renderOffset, zMax, wireStraight.getIconUMin(), wireStraight.getIconVMax());
-            tessellator.addVertexWithUV(xMin, (float)y + renderOffset, zMin, wireStraight.getIconUMin(), wireStraight.getIconVMin());
-            tessellator.addVertexWithUV(xMax, (float)y + renderOffset, zMin, wireStraight.getIconUMax(), wireStraight.getIconVMin());
+            tessellator.addVertexWithUV(xMax, (float)y + renderOffset, zMax, straight.getIconUMax(), straight.getIconVMax());
+            tessellator.addVertexWithUV(xMax, (float)y + renderOffset, zMin, straight.getIconUMax(), straight.getIconVMin());
+            tessellator.addVertexWithUV(xMin, (float)y + renderOffset, zMin, straight.getIconUMin(), straight.getIconVMin());
+            tessellator.addVertexWithUV(xMin, (float)y + renderOffset, zMax, straight.getIconUMin(), straight.getIconVMax());
+
+            tessellator.addVertexWithUV(xMax, (float)y + renderOffset, zMax, straight.getIconUMax(), straight.getIconVMax());
+            tessellator.addVertexWithUV(xMin, (float)y + renderOffset, zMax, straight.getIconUMin(), straight.getIconVMax());
+            tessellator.addVertexWithUV(xMin, (float)y + renderOffset, zMin, straight.getIconUMin(), straight.getIconVMin());
+            tessellator.addVertexWithUV(xMax, (float)y + renderOffset, zMin, straight.getIconUMax(), straight.getIconVMin());
         } else { // North-South
-            tessellator.addVertexWithUV(xMax, (float)y + renderOffset, zMax, wireStraight.getIconUMax(), wireStraight.getIconVMax());
-            tessellator.addVertexWithUV(xMax, (float)y + renderOffset, zMin, wireStraight.getIconUMin(), wireStraight.getIconVMax());
-            tessellator.addVertexWithUV(xMin, (float)y + renderOffset, zMin, wireStraight.getIconUMin(), wireStraight.getIconVMin());
-            tessellator.addVertexWithUV(xMin, (float)y + renderOffset, zMax, wireStraight.getIconUMax(), wireStraight.getIconVMin());
-
-            tessellator.addVertexWithUV(xMax, (float)y + renderOffset, zMax, wireStraight.getIconUMax(), wireStraight.getIconVMax());
-            tessellator.addVertexWithUV(xMin, (float)y + renderOffset, zMax, wireStraight.getIconUMax(), wireStraight.getIconVMin());
-            tessellator.addVertexWithUV(xMin, (float)y + renderOffset, zMin, wireStraight.getIconUMin(), wireStraight.getIconVMin());
-            tessellator.addVertexWithUV(xMax, (float)y + renderOffset, zMin, wireStraight.getIconUMin(), wireStraight.getIconVMax());
+            tessellator.addVertexWithUV(xMax, (float)y + renderOffset, zMax, straight.getIconUMax(), straight.getIconVMax());
+            tessellator.addVertexWithUV(xMax, (float)y + renderOffset, zMin, straight.getIconUMin(), straight.getIconVMax());
+            tessellator.addVertexWithUV(xMin, (float)y + renderOffset, zMin, straight.getIconUMin(), straight.getIconVMin());
+            tessellator.addVertexWithUV(xMin, (float)y + renderOffset, zMax, straight.getIconUMax(), straight.getIconVMin());
+
+            tessellator.addVertexWithUV(xMax, (float)y + renderOffset, zMax, straight.getIconUMax(), straight.getIconVMax());
+            tessellator.addVertexWithUV(xMin, (float)y + renderOffset, zMax, straight.getIconUMax(), straight.getIconVMin());
+            tessellator.addVertexWithUV(xMin, (float)y + renderOffset, zMin, straight.getIconUMin(), straight.getIconVMin());
+            tessellator.addVertexWithUV(xMax, (float)y + renderOffset, zMin, straight.getIconUMin(), straight.getIconVMax());
         }
 
         if (northUp){
-            tessellator.addVertexWithUV(xMin, (float)y + 1, z + renderOffset,   wireStraight.getIconUMin(), wireStraight.getIconVMin());
-            tessellator.addVertexWithUV(xMin, (float)y,     z + renderOffset,   wireStraight.getIconUMax(), wireStraight.getIconVMin());
-            tessellator.addVertexWithUV(xMax, (float)y,     z + renderOffset,   wireStraight.getIconUMax(), wireStraight.getIconVMax());
-            tessellator.addVertexWithUV(xMax, (float)y + 1, z + renderOffset,   wireStraight.getIconUMin(), wireStraight.getIconVMax());
-
-            tessellator.addVertexWithUV(xMin, (float)y + 1, z + renderOffset,   wireStraight.getIconUMin(), wireStraight.getIconVMin());
-            tessellator.addVertexWithUV(xMax, (float)y + 1, z + renderOffset,   wireStraight.getIconUMin(), wireStraight.getIconVMax());
-            tessellator.addVertexWithUV(xMax, (float)y,     z + renderOffset,   wireStraight.getIconUMax(), wireStraight.getIconVMax());
-            tessellator.addVertexWithUV(xMin, (float)y,     z + renderOffset,   wireStraight.getIconUMax(), wireStraight.getIconVMin());
+            tessellator.addVertexWithUV(xMin, (float)y + 1, z + renderOffset,   straight.getIconUMin(), straight.getIconVMin());
+            tessellator.addVertexWithUV(xMin, (float)y,     z + renderOffset,   straight.getIconUMax(), straight.getIconVMin());
+            tessellator.addVertexWithUV(xMax, (float)y,     z + renderOffset,   straight.getIconUMax(), straight.getIconVMax());
+            tessellator.addVertexWithUV(xMax, (float)y + 1, z + renderOffset,   straight.getIconUMin(), straight.getIconVMax());
+
+            tessellator.addVertexWithUV(xMin, (float)y + 1, z + renderOffset,   straight.getIconUMin(), straight.getIconVMin());
+            tessellator.addVertexWithUV(xMax, (float)y + 1, z + renderOffset,   straight.getIconUMin(), straight.getIconVMax());
+            tessellator.addVertexWithUV(xMax, (float)y,     z + renderOffset,   straight.getIconUMax(), straight.getIconVMax());
+            tessellator.addVertexWithUV(xMin, (float)y,     z + renderOffset,   straight.getIconUMax(), straight.getIconVMin());
         }
         if (southUp){
-            tessellator.addVertexWithUV(xMax, (float)y + 1, z + 1 - renderOffset,   wireStraight.getIconUMin(), wireStraight.getIconVMax());
-            tessellator.addVertexWithUV(xMax, (float)y,     z + 1 - renderOffset,   wireStraight.getIconUMax(), wireStraight.getIconVMax());
-            tessellator.addVertexWithUV(xMin, (float)y,     z + 1 - renderOffset,   wireStraight.getIconUMax(), wireStraight.getIconVMin());
-            tessellator.addVertexWithUV(xMin, (float)y + 1, z + 1 - renderOffset,   wireStraight.getIconUMin(), wireStraight.getIconVMin());
-
-            tessellator.addVertexWithUV(xMax, (float)y + 1, z + 1 - renderOffset,   wireStraight.getIconUMin(), wireStraight.getIconVMax());
-            tessellator.addVertexWithUV(xMin, (float)y + 1, z + 1 - renderOffset,   wireStraight.getIconUMin(), wireStraight.getIconVMin());
-            tessellator.addVertexWithUV(xMin, (float)y,     z + 1 - renderOffset,   wireStraight.getIconUMax(), wireStraight.getIconVMin());
-            tessellator.addVertexWithUV(xMax, (float)y,     z + 1 - renderOffset,   wireStraight.getIconUMax(), wireStraight.getIconVMax());
+            tessellator.addVertexWithUV(xMax, (float)y + 1, z + 1 - renderOffset,   straight.getIconUMin(), straight.getIconVMax());
+            tessellator.addVertexWithUV(xMax, (float)y,     z + 1 - renderOffset,   straight.getIconUMax(), straight.getIconVMax());
+            tessellator.addVertexWithUV(xMin, (float)y,     z + 1 - renderOffset,   straight.getIconUMax(), straight.getIconVMin());
+            tessellator.addVertexWithUV(xMin, (float)y + 1, z + 1 - renderOffset,   straight.getIconUMin(), straight.getIconVMin());
+
+            tessellator.addVertexWithUV(xMax, (float)y + 1, z + 1 - renderOffset,   straight.getIconUMin(), straight.getIconVMax());
+            tessellator.addVertexWithUV(xMin, (float)y + 1, z + 1 - renderOffset,   straight.getIconUMin(), straight.getIconVMin());
+            tessellator.addVertexWithUV(xMin, (float)y,     z + 1 - renderOffset,   straight.getIconUMax(), straight.getIconVMin());
+            tessellator.addVertexWithUV(xMax, (float)y,     z + 1 - renderOffset,   straight.getIconUMax(), straight.getIconVMax());
         }
         if (eastUp){
-            tessellator.addVertexWithUV(x + 1 - renderOffset, (float)y + 1, zMin,   wireStraight.getIconUMin(), wireStraight.getIconVMax());
-            tessellator.addVertexWithUV(x + 1 - renderOffset, (float)y,     zMin,   wireStraight.getIconUMax(), wireStraight.getIconVMax());
-            tessellator.addVertexWithUV(x + 1 - renderOffset, (float)y,     zMax,   wireStraight.getIconUMax(), wireStraight.getIconVMin());
-            tessellator.addVertexWithUV(x + 1 - renderOffset, (float)y + 1, zMax,   wireStraight.getIconUMin(), wireStraight.getIconVMin());
-
-            tessellator.addVertexWithUV(x + 1 - renderOffset, (float)y + 1, zMin,   wireStraight.getIconUMin(), wireStraight.getIconVMax());
-            tessellator.addVertexWithUV(x + 1 - renderOffset, (float)y + 1, zMax,   wireStraight.getIconUMin(), wireStraight.getIconVMin());
-            tessellator.addVertexWithUV(x + 1 - renderOffset, (float)y,     zMax,   wireStraight.getIconUMax(), wireStraight.getIconVMin());
-            tessellator.addVertexWithUV(x + 1 - renderOffset, (float)y,     zMin,   wireStraight.getIconUMax(), wireStraight.getIconVMax());
+            tessellator.addVertexWithUV(x + 1 - renderOffset, (float)y + 1, zMin,   straight.getIconUMin(), straight.getIconVMax());
+            tessellator.addVertexWithUV(x + 1 - renderOffset, (float)y,     zMin,   straight.getIconUMax(), straight.getIconVMax());
+            tessellator.addVertexWithUV(x + 1 - renderOffset, (float)y,     zMax,   straight.getIconUMax(), straight.getIconVMin());
+            tessellator.addVertexWithUV(x + 1 - renderOffset, (float)y + 1, zMax,   straight.getIconUMin(), straight.getIconVMin());
+
+            tessellator.addVertexWithUV(x + 1 - renderOffset, (float)y + 1, zMin,   straight.getIconUMin(), straight.getIconVMax());
+            tessellator.addVertexWithUV(x + 1 - renderOffset, (float)y + 1, zMax,   straight.getIconUMin(), straight.getIconVMin());
+            tessellator.addVertexWithUV(x + 1 - renderOffset, (float)y,     zMax,   straight.getIconUMax(), straight.getIconVMin());
+            tessellator.addVertexWithUV(x + 1 - renderOffset, (float)y,     zMin,   straight.getIconUMax(), straight.getIconVMax());
         }
         if (westUp){
-            tessellator.addVertexWithUV(x + renderOffset, (float)y + 1, zMin,   wireStraight.getIconUMin(), wireStraight.getIconVMax());
-            tessellator.addVertexWithUV(x + renderOffset, (float)y + 1, zMax,   wireStraight.getIconUMin(), wireStraight.getIconVMin());
-            tessellator.addVertexWithUV(x + renderOffset, (float)y,     zMax,   wireStraight.getIconUMax(), wireStraight.getIconVMin());
-            tessellator.addVertexWithUV(x + renderOffset, (float)y,     zMin,   wireStraight.getIconUMax(), wireStraight.getIconVMax());
-
-            tessellator.addVertexWithUV(x + renderOffset, (float)y + 1, zMin,   wireStraight.getIconUMin(), wireStraight.getIconVMax());
-            tessellator.addVertexWithUV(x + renderOffset, (float)y,     zMin,   wireStraight.getIconUMax(), wireStraight.getIconVMax());
-            tessellator.addVertexWithUV(x + renderOffset, (float)y,     zMax,   wireStraight.getIconUMax(), wireStraight.getIconVMin());
-            tessellator.addVertexWithUV(x + renderOffset, (float)y + 1, zMax,   wireStraight.getIconUMin(), wireStraight.getIconVMin());
+            tessellator.addVertexWithUV(x + renderOffset, (float)y + 1, zMin,   straight.getIconUMin(), straight.getIconVMax());
+            tessellator.addVertexWithUV(x + renderOffset, (float)y + 1, zMax,   straight.getIconUMin(), straight.getIconVMin());
+            tessellator.addVertexWithUV(x + renderOffset, (float)y,     zMax,   straight.getIconUMax(), straight.getIconVMin());
+            tessellator.addVertexWithUV(x + renderOffset, (float)y,     zMin,   straight.getIconUMax(), straight.getIconVMax());
+
+            tessellator.addVertexWithUV(x + renderOffset, (float)y + 1, zMin,   straight.getIconUMin(), straight.getIconVMax());
+            tessellator.addVertexWithUV(x + renderOffset, (float)y,     zMin,   straight.getIconUMax(), straight.getIconVMax());
+            tessellator.addVertexWithUV(x + renderOffset, (float)y,     zMax,   straight.getIconUMax(), straight.getIconVMin());
+            tessellator.addVertexWithUV(x + renderOffset, (float)y + 1, zMax,   straight.getIconUMin(), straight.getIconVMin());
         }
 
         return true;
diff --git a/src/main/java/net/minecraft/client/render/item/model/ItemModelDispatcher.java b/src/main/java/net/minecraft/client/render/item/model/ItemModelDispatcher.java
index c22357a62..6cc41a2fc 100644
--- a/src/main/java/net/minecraft/client/render/item/model/ItemModelDispatcher.java
+++ b/src/main/java/net/minecraft/client/render/item/model/ItemModelDispatcher.java
@@ -206,6 +206,7 @@ public class ItemModelDispatcher extends Dispatcher<Item, ItemModel> {
         addDispatch(new StandardItemModel(Items.ROPE, "minecraft"));
 
         addDispatch(new StandardItemModel(Items.WAND_MONSTER_SPAWNER, "minecraft").setFull3D());
+        addDispatch(new StandardItemModel(Items.DOOR_STEEL, "minecraft"));
 
         addDispatch(new StandardItemModel(Items.RECORD_13, "minecraft"));
         addDispatch(new StandardItemModel(Items.RECORD_CAT, "minecraft"));
diff --git a/src/main/java/net/minecraft/client/render/texturepack/TexturePackList.java b/src/main/java/net/minecraft/client/render/texturepack/TexturePackList.java
index 3ad526b0c..02e97ce0c 100644
--- a/src/main/java/net/minecraft/client/render/texturepack/TexturePackList.java
+++ b/src/main/java/net/minecraft/client/render/texturepack/TexturePackList.java
@@ -100,7 +100,7 @@ public class TexturePackList
 			File[] filesInDir = texturePackDir.listFiles();
 			
 			if(filesInDir != null) {
-				if (Global.BUILD_CHANNEL.isUnstableBuild()) { // Load project resources as an available texture pack
+				if (mc.gameSettings.enableDevResourceLoading.value) { // Load project resources as an available texture pack
 					File[] tempList = new File[filesInDir.length + 1];
 					for (int i = 0; i < tempList.length; i++) {
 						if (i < tempList.length - 1){
diff --git a/src/main/java/net/minecraft/client/sound/SoundEngine.java b/src/main/java/net/minecraft/client/sound/SoundEngine.java
index 7278b5158..7d107b2a6 100644
--- a/src/main/java/net/minecraft/client/sound/SoundEngine.java
+++ b/src/main/java/net/minecraft/client/sound/SoundEngine.java
@@ -6,6 +6,7 @@ import java.util.Random;
 
 import net.betterthanadventure.sound.LibraryLWJGL3OpenAL;
 import net.minecraft.client.Minecraft;
+import net.minecraft.core.Global;
 import net.minecraft.core.entity.Mob;
 import net.minecraft.core.sound.SoundCategory;
 import net.minecraft.core.util.helper.MathHelper;
@@ -145,10 +146,12 @@ public class SoundEngine
         if (!loaded && (gamesettings != null && SoundCategoryHelper.isAnyEnabled(gamesettings))) {
             loadLibrary();
         }
-		loadDevAudio("devResources/sound", soundRepo);
-		loadDevAudio("devResources/streaming", streamingRepo);
-		loadDevAudio("devResources/music", musicRepo);
-		loadDevAudio("devResources/cavemusic", caveRepo);
+		if (gamesettings != null && gamesettings.enableDevResourceLoading.value) {
+			loadDevAudio("devResources/sound", soundRepo);
+			loadDevAudio("devResources/streaming", streamingRepo);
+			loadDevAudio("devResources/music", musicRepo);
+			loadDevAudio("devResources/cavemusic", caveRepo);
+		}
         loadModAudio("minecraft-bta/resources/mod/sound", soundRepo);
         loadModAudio("minecraft-bta/resources/mod/streaming", streamingRepo);
         loadModAudio("minecraft-bta/resources/mod/music", musicRepo);
diff --git a/src/main/java/net/minecraft/core/block/Blocks.java b/src/main/java/net/minecraft/core/block/Blocks.java
index 73ec8fa22..2c7adf37e 100644
--- a/src/main/java/net/minecraft/core/block/Blocks.java
+++ b/src/main/java/net/minecraft/core/block/Blocks.java
@@ -133,6 +133,7 @@ public final class Blocks {
 
     public static Block GLASS;
     public static Block GLASS_TINTED;
+    public static Block GLASS_STEEL;
 
     public static Block GRASS;
     public static Block GRASS_RETRO;
@@ -308,6 +309,7 @@ public final class Blocks {
     public static Block TRAPDOOR_IRON;
     public static Block TRAPDOOR_GLASS;
     public static Block TRAPDOOR_PLANKS_PAINTED;
+    public static Block TRAPDOOR_STEEL;
 
     public static Block TNT;
 
@@ -319,6 +321,8 @@ public final class Blocks {
     public static Block DOOR_PLANKS_PAINTED_TOP;
     public static Block DOOR_GLASS_BOTTOM;
     public static Block DOOR_GLASS_TOP;
+    public static Block DOOR_STEEL_BOTTOM;
+    public static Block DOOR_STEEL_TOP;
 
     public static Block MESH;
     public static Block MESH_GOLD;
@@ -654,6 +658,7 @@ public final class Blocks {
 
         GLASS = new GlassBlock("glass", "minecraft:block/glass", 190, Material.glass).withSound(BlockSounds.GLASS).withHardness(0.3F).withTags(BlockTags.MINEABLE_BY_PICKAXE, BlockTags.EXTENDS_MOTION_SENSOR_RANGE);
         GLASS_TINTED = new TintedGlassBlock("glass.tinted", "minecraft:block/glass_tinted", 191).withSound(BlockSounds.GLASS).withHardness(0.5F).withDisabledNeighborNotifyOnMetadataChange().withTags(BlockTags.MINEABLE_BY_PICKAXE);
+        GLASS_STEEL = new TransparentBlock("glass.steel", "minecraft:block/glass_steel", 192, Material.glass).withSound(BlockSounds.GLASS).withHardness(0.3F).withBlastResistance(2000F).withTags(BlockTags.MINEABLE_BY_PICKAXE, BlockTags.EXTENDS_MOTION_SENSOR_RANGE);
 
         GRASS = new GrassBlock("grass", "minecraft:block/grass", 200, Material.grass).withSound(BlockSounds.GRASS).withHardness(0.6F)
             .withTags(BlockTags.MINEABLE_BY_SHOVEL, BlockTags.GROWS_FLOWERS, BlockTags.GROWS_SUGAR_CANE, BlockTags.PASSIVE_MOBS_SPAWN, BlockTags.FIREFLIES_CAN_SPAWN, BlockTags.GROWS_TREES, BlockTags.CAVES_CUT_THROUGH, BlockTags.CAVE_GEN_REPLACES_SURFACE);
@@ -968,16 +973,18 @@ public final class Blocks {
         TRAPDOOR_PLANKS_PAINTED = new PaintedTrapDoorBlock("trapdoor.planks.oak.painted", "minecraft:block/trapdoor_planks_oak_painted", 573, Material.wood).withSound(BlockSounds.WOOD).withHardness(3F).withDisabledNeighborNotifyOnMetadataChange()
             .setBlockItem((b) -> new PaintedBlockItem(b, true))
             .withTags(BlockTags.MINEABLE_BY_AXE);
+        TRAPDOOR_STEEL = new TrapDoorBlock("trapdoor.steel", "minecraft:block/trapdoor_steel", 574, Material.metal, true).withSound(BlockSounds.METAL).withHardness(5F).withBlastResistance(2000F).withDisabledNeighborNotifyOnMetadataChange().withOverrideColor(MaterialColor.steel)
+            .withTags(BlockTags.MINEABLE_BY_PICKAXE);
 
         TNT = new TNTBlock("tnt", "minecraft:block/tnt", 580).withSound(BlockSounds.GRASS).withHardness(0.0F);
 
-        DOOR_PLANKS_OAK_BOTTOM = new DoorBlock("door.planks.oak.bottom", "minecraft:block/door_planks_oak_bottom", 590, Material.wood, false).withSound(BlockSounds.WOOD).withHardness(3F).withDisabledNeighborNotifyOnMetadataChange().setStatParent(() -> Items.DOOR_OAK)
+        DOOR_PLANKS_OAK_BOTTOM = new DoorBlock("door.planks.oak.bottom", "minecraft:block/door_planks_oak_bottom", 590, Material.wood, false, false, () -> Items.DOOR_OAK).withSound(BlockSounds.WOOD).withHardness(3F).withDisabledNeighborNotifyOnMetadataChange().setStatParent(() -> Items.DOOR_OAK)
             .withTags(BlockTags.NOT_IN_CREATIVE_MENU, BlockTags.MINEABLE_BY_AXE);
-        DOOR_PLANKS_OAK_TOP = new DoorBlock("door.planks.oak.top", "minecraft:block/doors_planks_oak_top", 591, Material.wood, true).withSound(BlockSounds.WOOD).withHardness(3F).withDisabledNeighborNotifyOnMetadataChange().setStatParent(() -> DOOR_PLANKS_OAK_BOTTOM)
+        DOOR_PLANKS_OAK_TOP = new DoorBlock("door.planks.oak.top", "minecraft:block/doors_planks_oak_top", 591, Material.wood, true, false, () -> Items.DOOR_OAK).withSound(BlockSounds.WOOD).withHardness(3F).withDisabledNeighborNotifyOnMetadataChange().setStatParent(() -> DOOR_PLANKS_OAK_BOTTOM)
             .withTags(BlockTags.NOT_IN_CREATIVE_MENU, BlockTags.MINEABLE_BY_AXE);
-        DOOR_IRON_BOTTOM = new DoorBlock("door.iron.bottom", "minecraft:block/door_iron_bottom", 592, Material.metal, false).withSound(BlockSounds.METAL).withHardness(5F).withDisabledNeighborNotifyOnMetadataChange().withOverrideColor(MaterialColor.iron).setStatParent(() -> Items.DOOR_IRON)
+        DOOR_IRON_BOTTOM = new DoorBlock("door.iron.bottom", "minecraft:block/door_iron_bottom", 592, Material.metal, false, true, () -> Items.DOOR_IRON).withSound(BlockSounds.METAL).withHardness(5F).withDisabledNeighborNotifyOnMetadataChange().withOverrideColor(MaterialColor.iron).setStatParent(() -> Items.DOOR_IRON)
             .withTags(BlockTags.NOT_IN_CREATIVE_MENU, BlockTags.MINEABLE_BY_PICKAXE);
-        DOOR_IRON_TOP = new DoorBlock("door.iron.top", "minecraft:block/door_iron_top", 593, Material.metal, true).withSound(BlockSounds.METAL).withHardness(5F).withDisabledNeighborNotifyOnMetadataChange().withOverrideColor(MaterialColor.iron).setStatParent(() -> DOOR_IRON_BOTTOM)
+        DOOR_IRON_TOP = new DoorBlock("door.iron.top", "minecraft:block/door_iron_top", 593, Material.metal, true, true, () -> Items.DOOR_IRON).withSound(BlockSounds.METAL).withHardness(5F).withDisabledNeighborNotifyOnMetadataChange().withOverrideColor(MaterialColor.iron).setStatParent(() -> DOOR_IRON_BOTTOM)
             .withTags(BlockTags.NOT_IN_CREATIVE_MENU, BlockTags.MINEABLE_BY_PICKAXE);
         DOOR_PLANKS_PAINTED_BOTTOM = new DoorPaintedBlock("door.planks.oak.painted.bottom", "minecraft:block/door_planks_oak_painted_bottom", 594, Material.wood, false).withSound(BlockSounds.WOOD).withHardness(3F).withDisabledNeighborNotifyOnMetadataChange().setStatParent(() -> Items.DOOR_OAK_PAINTED)
             .setBlockItem((b) -> new PaintedBlockItem(b, true))
@@ -985,9 +992,13 @@ public final class Blocks {
         DOOR_PLANKS_PAINTED_TOP = new DoorPaintedBlock("door.planks.oak.painted.top", "minecraft:block/door_planks_oak_painted_top", 595, Material.wood, true).withSound(BlockSounds.WOOD).withHardness(3F).withDisabledNeighborNotifyOnMetadataChange().setStatParent(() -> DOOR_PLANKS_PAINTED_BOTTOM)
             .setBlockItem((b) -> new PaintedBlockItem(b, true))
             .withTags(BlockTags.NOT_IN_CREATIVE_MENU, BlockTags.MINEABLE_BY_AXE);
-        DOOR_GLASS_BOTTOM = new GlassDoorBlock("door.glass.bottom", "minecraft:block/door_glass_bottom", 596, Material.glass, false).withSound(BlockSounds.GLASS).withHardness(0.3F).withDisabledNeighborNotifyOnMetadataChange().setStatParent(() -> Items.DOOR_GLASS)
+        DOOR_GLASS_BOTTOM = new DoorBlock("door.glass.bottom", "minecraft:block/door_glass_bottom", 596, Material.glass, false, false, () -> Items.DOOR_GLASS).withSound(BlockSounds.GLASS).withHardness(0.3F).withDisabledNeighborNotifyOnMetadataChange().setStatParent(() -> Items.DOOR_GLASS)
+            .withTags(BlockTags.NOT_IN_CREATIVE_MENU, BlockTags.MINEABLE_BY_PICKAXE);
+        DOOR_GLASS_TOP = new DoorBlock("door.glass.top", "minecraft:block/door_glass_top", 597, Material.glass, true, false, () -> Items.DOOR_GLASS).withSound(BlockSounds.GLASS).withHardness(0.3F).withDisabledNeighborNotifyOnMetadataChange().setStatParent(() -> DOOR_GLASS_BOTTOM)
+            .withTags(BlockTags.NOT_IN_CREATIVE_MENU, BlockTags.MINEABLE_BY_PICKAXE);
+        DOOR_STEEL_BOTTOM = new DoorBlock("door.steel.bottom", "minecraft:block/door_steel_bottom", 598, Material.metal, false, true, () -> Items.DOOR_STEEL).withSound(BlockSounds.METAL).withHardness(5F).withBlastResistance(2000F).withDisabledNeighborNotifyOnMetadataChange().withOverrideColor(MaterialColor.steel).setStatParent(() -> Items.DOOR_STEEL)
             .withTags(BlockTags.NOT_IN_CREATIVE_MENU, BlockTags.MINEABLE_BY_PICKAXE);
-        DOOR_GLASS_TOP = new GlassDoorBlock("door.glass.top", "minecraft:block/door_glass_top", 597, Material.glass, true).withSound(BlockSounds.GLASS).withHardness(0.3F).withDisabledNeighborNotifyOnMetadataChange().setStatParent(() -> DOOR_GLASS_BOTTOM)
+        DOOR_STEEL_TOP = new DoorBlock("door.steel.top", "minecraft:block/door_steel_top", 599, Material.metal, true, true, () -> Items.DOOR_STEEL).withSound(BlockSounds.METAL).withHardness(5F).withBlastResistance(2000F).withDisabledNeighborNotifyOnMetadataChange().withOverrideColor(MaterialColor.steel).setStatParent(() -> DOOR_STEEL_BOTTOM)
             .withTags(BlockTags.NOT_IN_CREATIVE_MENU, BlockTags.MINEABLE_BY_PICKAXE);
 
         MESH = new MeshBlock("mesh", "minecraft:block/mesh", 600).withSound(BlockSounds.METAL).withHardness(1.5F)
diff --git a/src/main/java/net/minecraft/core/block/DoorBlock.java b/src/main/java/net/minecraft/core/block/DoorBlock.java
index 46f984580..395f38b30 100644
--- a/src/main/java/net/minecraft/core/block/DoorBlock.java
+++ b/src/main/java/net/minecraft/core/block/DoorBlock.java
@@ -1,6 +1,7 @@
 package net.minecraft.core.block;
 
 import java.util.Random;
+import java.util.function.Supplier;
 
 import net.minecraft.core.entity.player.Player;
 import net.minecraft.core.util.phys.HitResult;
@@ -16,6 +17,7 @@ import net.minecraft.core.util.phys.AABB;
 import net.minecraft.core.util.phys.Vec3;
 import net.minecraft.core.world.World;
 import net.minecraft.core.world.WorldSource;
+import org.jetbrains.annotations.Nullable;
 
 // Referenced classes of package net.minecraft.src:
 //            Block, Material, IBlockAccess, World, 
@@ -25,12 +27,17 @@ import net.minecraft.core.world.WorldSource;
 public class DoorBlock extends Block
 {
 
-	public final boolean isTop; 
+	public final boolean isTop;
+	public final boolean requireTool;
+    @Nullable
+    public final Supplier<Item> droppedItem;
 	
-	public DoorBlock(String key, String namespaceId, int id, Material material, boolean isTop)
+	public DoorBlock(String key, String namespaceId, int id, Material material, boolean isTop, boolean requireTool, @Nullable Supplier<Item> droppedItem)
     {
         super(key, namespaceId, id, material);
         this.isTop = isTop;
+        this.requireTool = requireTool;
+        this.droppedItem = droppedItem;
         float f = 0.5F;
         if (isTop)
         {
@@ -238,13 +245,14 @@ public class DoorBlock extends Block
     @Override
     public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int x, int y, int z, int meta, BlockEntity blockEntity)
     {
-        if (blockMaterial == Material.metal && dropCause != EnumDropCause.IMPROPER_TOOL)
+        if (droppedItem == null) return null;
+        if (requireTool && dropCause != EnumDropCause.IMPROPER_TOOL)
         {
-            return new ItemStack[] { new ItemStack(Items.DOOR_IRON) };
+            return new ItemStack[] { new ItemStack(droppedItem.get()) };
         }
-        else if (blockMaterial == Material.wood)
+        else if (!requireTool)
         {
-            return new ItemStack[] { new ItemStack(Items.DOOR_OAK) };
+            return new ItemStack[] { new ItemStack(droppedItem.get()) };
         }
 
         return null;
diff --git a/src/main/java/net/minecraft/core/block/DoorPaintedBlock.java b/src/main/java/net/minecraft/core/block/DoorPaintedBlock.java
index 5f4710ab4..a2daae478 100644
--- a/src/main/java/net/minecraft/core/block/DoorPaintedBlock.java
+++ b/src/main/java/net/minecraft/core/block/DoorPaintedBlock.java
@@ -9,7 +9,7 @@ import net.minecraft.core.world.World;
 
 public class DoorPaintedBlock extends DoorBlock {
     public DoorPaintedBlock(String key, String namespaceId, int id, Material material, boolean isTop) {
-        super(key, namespaceId, id, material, isTop);
+        super(key, namespaceId, id, material, isTop, false, null);
     }
     @Override
     public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int x, int y, int z, int meta, BlockEntity blockEntity)
diff --git a/src/main/java/net/minecraft/core/block/GlassDoorBlock.java b/src/main/java/net/minecraft/core/block/GlassDoorBlock.java
deleted file mode 100644
index aba3110d3..000000000
--- a/src/main/java/net/minecraft/core/block/GlassDoorBlock.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package net.minecraft.core.block;
-
-import net.minecraft.core.block.entity.BlockEntity;
-import net.minecraft.core.block.material.Material;
-import net.minecraft.core.enums.EnumDropCause;
-import net.minecraft.core.item.Items;
-import net.minecraft.core.item.ItemStack;
-import net.minecraft.core.world.World;
-
-public class GlassDoorBlock extends DoorBlock {
-    public GlassDoorBlock(String key, String namespaceId, int id, Material material, boolean isTop) {
-        super(key, namespaceId, id, material, isTop);
-    }
-    @Override
-    public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int x, int y, int z, int meta, BlockEntity blockEntity)
-    {
-        return new ItemStack[] { new ItemStack(Items.DOOR_GLASS) };
-    }
-}
diff --git a/src/main/java/net/minecraft/core/block/TransparentBlock.java b/src/main/java/net/minecraft/core/block/TransparentBlock.java
index 85ee513ca..57c3e9d2c 100644
--- a/src/main/java/net/minecraft/core/block/TransparentBlock.java
+++ b/src/main/java/net/minecraft/core/block/TransparentBlock.java
@@ -2,7 +2,7 @@ package net.minecraft.core.block;
 
 import net.minecraft.core.block.material.Material;
 
-public abstract class TransparentBlock extends Block
+public class TransparentBlock extends Block
 {
 
 	public TransparentBlock(String key, String namespaceId, int id, Material material)
diff --git a/src/main/java/net/minecraft/core/data/registry/recipe/adapter/ItemStackJsonAdapter.java b/src/main/java/net/minecraft/core/data/registry/recipe/adapter/ItemStackJsonAdapter.java
index 89b8f86c5..6424f12d0 100644
--- a/src/main/java/net/minecraft/core/data/registry/recipe/adapter/ItemStackJsonAdapter.java
+++ b/src/main/java/net/minecraft/core/data/registry/recipe/adapter/ItemStackJsonAdapter.java
@@ -12,6 +12,8 @@ import net.minecraft.core.block.Blocks;
 import net.minecraft.core.item.Item;
 import net.minecraft.core.item.Items;
 import net.minecraft.core.item.ItemStack;
+import net.minecraft.core.util.HardIllegalArgumentException;
+import net.minecraft.core.util.collection.NamespaceID;
 
 import java.lang.reflect.Type;
 
@@ -36,7 +38,17 @@ public class ItemStackJsonAdapter implements JsonDeserializer<ItemStack>, JsonSe
                 throw new IllegalArgumentException("Failed to find item for key '" + key + "'!\n" + e.getMessage());
             }
         } else {
-            item = Item.itemsList[obj.get("id").getAsInt()];
+            JsonElement e = obj.get("id");
+            try {
+                item = Item.itemsList[e.getAsInt()];
+            } catch (NumberFormatException ignored) { // NumberFormatException thrown if element is not actually convertible to a number
+                try {
+                    item = Item.itemsMap.get(new NamespaceID(e.getAsString()));
+                } catch (HardIllegalArgumentException ex) {
+                    throw new JsonParseException(ex);
+                }
+            }
+
         }
         if(obj.has("amount")){
            stack = new ItemStack(item,obj.get("amount").getAsInt(),obj.get("meta").getAsInt());
@@ -49,7 +61,8 @@ public class ItemStackJsonAdapter implements JsonDeserializer<ItemStack>, JsonSe
     @Override
     public JsonElement serialize(ItemStack src, Type typeOfSrc, JsonSerializationContext context) {
         JsonObject obj = new JsonObject();
-        obj.addProperty("id",src.itemID);
+//        obj.addProperty("id",src.itemID); // Preferring namespace ids over integer ids for readability reasons
+        obj.addProperty("id",src.getItem().namespaceID.toString());
         obj.addProperty("amount",src.stackSize);
         obj.addProperty("meta",src.getMetadata());
         return obj;
diff --git a/src/main/java/net/minecraft/core/entity/FishingBobberEntity.java b/src/main/java/net/minecraft/core/entity/FishingBobberEntity.java
index 34afa481a..8f05a057c 100644
--- a/src/main/java/net/minecraft/core/entity/FishingBobberEntity.java
+++ b/src/main/java/net/minecraft/core/entity/FishingBobberEntity.java
@@ -18,10 +18,10 @@ import java.util.List;
 
 public class FishingBobberEntity extends Entity
 {
+    public static final int ID_BOBBER_BITFIELD = 2;
     private int xTile;
     private int yTile;
     private int zTile;
-    private boolean inGround;
     public Player owner;
     private int ticksInAir;
     private int ticksCatchable;
@@ -79,6 +79,15 @@ public class FishingBobberEntity extends Entity
     @Override
 	protected void defineSynchedData()
     {
+        entityData.define(ID_BOBBER_BITFIELD, (byte)0);
+    }
+
+    public boolean isInGround() {
+        return entityData.getByte(ID_BOBBER_BITFIELD) != 0;
+    }
+
+    public void setInGround(boolean flag) {
+        entityData.set(ID_BOBBER_BITFIELD, flag ? (byte)1 : (byte)0);
     }
 
     @Override
@@ -173,14 +182,14 @@ public class FishingBobberEntity extends Entity
                 }
             }
         }
-        if (inGround) {
+        if (isInGround()) {
             if (world.getBlockId(xTile, yTile, zTile) == Blocks.ROPE.id) {
                 x = xTile + 0.5D;
                 y = yTile + 0.5D;
                 z = zTile + 0.5D;
                 return;
             } else {
-                inGround = false;
+                setInGround(false);
                 xd *= random.nextFloat() * 0.2F;
                 yd *= random.nextFloat() * 0.2F;
                 zd *= random.nextFloat() * 0.2F;
@@ -198,7 +207,7 @@ public class FishingBobberEntity extends Entity
         {
             nextPos = Vec3.getTempVec3(clip.location.x, clip.location.y, clip.location.z);
             if (clip.hitType == HitResult.HitType.TILE && world.getBlockId(clip.x, clip.y, clip.z) == Blocks.ROPE.id) {
-                inGround = true;
+                setInGround(true);
                 xTile = clip.x;
                 yTile = clip.y;
                 zTile = clip.z;
@@ -330,18 +339,10 @@ public class FishingBobberEntity extends Entity
 
     @Override
 	public void addAdditionalSaveData(CompoundTag compoundTag) {
-        compoundTag.putShort("xTile", (short)this.xTile);
-        compoundTag.putShort("yTile", (short)this.yTile);
-        compoundTag.putShort("zTile", (short)this.zTile);
-        compoundTag.putByte("inGround", (byte)(this.inGround ? 1 : 0));
     }
 
     @Override
 	public void readAdditionalSaveData(CompoundTag compoundTag) {
-        this.xTile = compoundTag.getShort("xTile");
-        this.yTile = compoundTag.getShort("yTile");
-        this.zTile = compoundTag.getShort("zTile");
-        this.inGround = (compoundTag.getByte("inGround") == 1);
     }
 
     @Override
@@ -354,7 +355,7 @@ public class FishingBobberEntity extends Entity
     {
         int damage = 0;
 
-        if(inGround)
+        if(isInGround())
         {
             double dx = x - owner.x;
             double dy = y - owner.y;
@@ -400,7 +401,7 @@ public class FishingBobberEntity extends Entity
             owner.addStat(StatList.fishCaughtStat, 1);
             damage = 1;
         }
-        if(inGround)
+        if(isInGround())
         {
             damage = 2;
         }
diff --git a/src/main/java/net/minecraft/core/entity/Mob.java b/src/main/java/net/minecraft/core/entity/Mob.java
index 137609321..f238746cc 100644
--- a/src/main/java/net/minecraft/core/entity/Mob.java
+++ b/src/main/java/net/minecraft/core/entity/Mob.java
@@ -2,6 +2,7 @@ package net.minecraft.core.entity;
 
 import com.b100.utils.StringUtils;
 import com.mojang.nbt.CompoundTag;
+import net.minecraft.client.Minecraft;
 import net.minecraft.core.Global;
 import net.minecraft.core.util.phys.HitResult;
 import net.minecraft.core.WeightedRandomLootObject;
@@ -762,7 +763,16 @@ public abstract class Mob extends Entity
             yd *= 0.8D;
             zd *= 0.8D;
             yd -= 0.02D;
-            if(horizontalCollision && isFree(xd, ((yd + 0.6D) - y) + d, zd))
+            int blockX = MathHelper.floor(x);
+            int blockY = MathHelper.floor(y - heightOffset);
+            int blockZ = MathHelper.floor(z);
+            Block b = world.getBlock(blockX, blockY, blockZ);
+            float depth = 0.6f;
+            if (b != null) {
+                b.setBlockBoundsBasedOnState(world, blockX, blockY, blockZ);
+                depth = 1 - (float) b.maxY;
+            }
+            if(horizontalCollision && isFree(xd, ((yd + depth + 0.2) - y) + d, zd))
             {
                 yd = 0.3D;
             }
@@ -983,15 +993,15 @@ public abstract class Mob extends Entity
         {
             updateAI();
         }
-        boolean flag = isInWater();
-        boolean flag1 = isInLava();
+        boolean inWater = isInWater();
+        boolean inLava = isInLava();
         if(isJumping)
         {
-            if(flag)
+            if(inWater)
             {
                 yd += 0.04D;
             } else
-            if(flag1)
+            if(inLava)
             {
                 yd += 0.04D;
             } else
@@ -1105,9 +1115,9 @@ public abstract class Mob extends Entity
             yRot += randomYawVelocity;
             xRot = defaultPitch;
         }
-        boolean flag = isInWater();
-        boolean flag1 = isInLava();
-        if(flag || flag1)
+        boolean inWater = isInWater();
+        boolean inLava = isInLava();
+        if(inWater || inLava)
         {
             isJumping = random.nextFloat() < 0.8F;
         }
diff --git a/src/main/java/net/minecraft/core/entity/SpawnListEntry.java b/src/main/java/net/minecraft/core/entity/SpawnListEntry.java
index 0e5744d07..103df3edd 100644
--- a/src/main/java/net/minecraft/core/entity/SpawnListEntry.java
+++ b/src/main/java/net/minecraft/core/entity/SpawnListEntry.java
@@ -4,12 +4,12 @@ package net.minecraft.core.entity;
 public class SpawnListEntry
 {
 
-    public SpawnListEntry(Class<?> clazz, int frequency)
+    public SpawnListEntry(Class<? extends Entity> clazz, int frequency)
     {
         entityClass = clazz;
         spawnFrequency = frequency;
     }
 
-    public Class<?> entityClass;
+    public Class<? extends Entity> entityClass;
     public int spawnFrequency;
 }
diff --git a/src/main/java/net/minecraft/core/item/Items.java b/src/main/java/net/minecraft/core/item/Items.java
index 33d079d8b..fecd54aac 100644
--- a/src/main/java/net/minecraft/core/item/Items.java
+++ b/src/main/java/net/minecraft/core/item/Items.java
@@ -187,6 +187,7 @@ public final class Items {
     public static Item ROPE;
     public static Item FOOD_PUMPKIN_PIE;
     public static Item WAND_MONSTER_SPAWNER;
+    public static Item DOOR_STEEL;
     public static void init(){
         setupItems();
         initStats();
@@ -391,5 +392,6 @@ public final class Items {
         ROPE = new RopeItem("rope", "minecraft:item/rope", 16534, Blocks.ROPE);
         FOOD_PUMPKIN_PIE = (new PlaceableItem("food.pumpkin_pie", "minecraft:item/food_pumpkin_pie", 16535, Blocks.PUMPKIN_PIE)).setMaxStackSize(1);
         WAND_MONSTER_SPAWNER = (new SpawnerWandItem("wand.monster", "minecraft:item/wand_monster", 16536)).setMaxStackSize(1);
+        DOOR_STEEL = (new DoorItem("door.steel", "minecraft:item/door_steel", 16537, Blocks.DOOR_STEEL_BOTTOM, Blocks.DOOR_STEEL_TOP));
     }
 }
diff --git a/src/main/java/net/minecraft/core/net/command/Commands.java b/src/main/java/net/minecraft/core/net/command/Commands.java
index 3a28ad487..3825ee241 100644
--- a/src/main/java/net/minecraft/core/net/command/Commands.java
+++ b/src/main/java/net/minecraft/core/net/command/Commands.java
@@ -55,6 +55,7 @@ public final class Commands {
 		commands.add(new SpawnParticleCommand());
 		commands.add(new PlaySoundCommand());
 		commands.add(new HarmCommand());
+		commands.add(new MobSpawningCommand());
 	}
 	
 	public static void initServerCommands(MinecraftServer server) {
diff --git a/src/main/java/net/minecraft/core/net/command/commands/MobSpawningCommand.java b/src/main/java/net/minecraft/core/net/command/commands/MobSpawningCommand.java
new file mode 100644
index 000000000..466ecff29
--- /dev/null
+++ b/src/main/java/net/minecraft/core/net/command/commands/MobSpawningCommand.java
@@ -0,0 +1,77 @@
+package net.minecraft.core.net.command.commands;
+
+import net.minecraft.core.entity.EntityDispatcher;
+import net.minecraft.core.net.command.Command;
+import net.minecraft.core.net.command.CommandHandler;
+import net.minecraft.core.net.command.CommandSender;
+import net.minecraft.core.world.SpawnerMobs;
+import net.minecraft.core.world.World;
+
+import java.util.Collection;
+import java.util.Locale;
+
+public class MobSpawningCommand extends Command {
+    public MobSpawningCommand() {
+        super("mobspawning");
+    }
+
+    @Override
+    public boolean execute(CommandHandler handler, CommandSender sender, String[] args) {
+        if (args.length == 0) return false;
+
+        World world = handler.getWorld(0);
+        SpawnerMobs.SpawnerConfig config = world.spawningConfig;
+        switch (args[0].toLowerCase(Locale.ROOT)) {
+            case "list": // Lists out all mobs and their current spawn state
+            {
+                Collection<String> ids = EntityDispatcher.classToKeyMap.values();
+                for (String s : ids) {
+                    sender.sendMessage(String.format("%s : %s", s, config.canMobSpawn(s)));
+                }
+                sender.sendMessage("Passive Spawning : " + config.canPassiveSpawn(world));
+                sender.sendMessage("Hostile Spawning : " + config.canHostileSpawn(world));
+                return true;
+            }
+            case "set": // Sets the spawning state of a specific mob id
+            {
+                if (args.length != 3) return false;
+                String mobId = args[1];
+                boolean value = Boolean.parseBoolean(args[2].toLowerCase(Locale.ROOT));
+                config.setMobSpawn(mobId, value);
+                sender.sendMessage(String.format("Set '%s' to '%s'", mobId, value));
+                return true;
+            }
+            case "passive": // Special case for setting state of all peaceful mobs
+            {
+                if (args.length != 2) return false;
+                boolean value = Boolean.parseBoolean(args[1].toLowerCase(Locale.ROOT));
+                config.setPassiveSpawning(value);
+                sender.sendMessage(String.format("Passive spawning to '%s'", value));
+                return true;
+            }
+            case "hostile": // Special case for setting state of all hostile mobs
+            {
+                if (args.length != 2) return false;
+                boolean value = Boolean.parseBoolean(args[1].toLowerCase(Locale.ROOT));
+                config.setHostileSpawning(value);
+                sender.sendMessage(String.format("Hostile spawning to '%s'", value));
+                return true;
+            }
+        }
+
+        return false;
+    }
+
+    @Override
+    public boolean opRequired(String[] args) {
+        return true;
+    }
+
+    @Override
+    public void sendCommandSyntax(CommandHandler handler, CommandSender sender) {
+        sender.sendMessage("/mobspawning list");
+        sender.sendMessage("/mobspawning set <id> <value>");
+        sender.sendMessage("/mobspawning passive <value>");
+        sender.sendMessage("/mobspawning hostile <value>");
+    }
+}
diff --git a/src/main/java/net/minecraft/core/net/entity/NetEntityHandler.java b/src/main/java/net/minecraft/core/net/entity/NetEntityHandler.java
index 63ea1ec02..598bcf8ea 100644
--- a/src/main/java/net/minecraft/core/net/entity/NetEntityHandler.java
+++ b/src/main/java/net/minecraft/core/net/entity/NetEntityHandler.java
@@ -3,7 +3,7 @@ package net.minecraft.core.net.entity;
 import net.minecraft.core.net.entity.entries.AnimalNetEntry;
 import net.minecraft.core.net.entity.entries.ArrowNetEntry;
 import net.minecraft.core.net.entity.entries.BoatNetEntry;
-import net.minecraft.core.net.entity.entries.BobberEntry;
+import net.minecraft.core.net.entity.entries.BobberNetEntry;
 import net.minecraft.core.net.entity.entries.CannonballEntry;
 import net.minecraft.core.net.entity.entries.EggNetEntry;
 import net.minecraft.core.net.entity.entries.FallingSandNetEntry;
@@ -146,6 +146,6 @@ public class NetEntityHandler {
         registerNetworkEntry(new FallingSandNetEntry(), 20);
         registerNetworkEntry(new TNTNetEntry(), 21);
 
-        registerNetworkEntry(new BobberEntry(), 30);
+        registerNetworkEntry(new BobberNetEntry(), 30);
     }
 }
diff --git a/src/main/java/net/minecraft/core/net/entity/entries/BobberEntry.java b/src/main/java/net/minecraft/core/net/entity/entries/BobberNetEntry.java
similarity index 70%
rename from src/main/java/net/minecraft/core/net/entity/entries/BobberEntry.java
rename to src/main/java/net/minecraft/core/net/entity/entries/BobberNetEntry.java
index 7ed14118a..51ba03a60 100644
--- a/src/main/java/net/minecraft/core/net/entity/entries/BobberEntry.java
+++ b/src/main/java/net/minecraft/core/net/entity/entries/BobberNetEntry.java
@@ -2,6 +2,7 @@ package net.minecraft.core.net.entity.entries;
 
 import net.minecraft.core.entity.Entity;
 import net.minecraft.core.entity.FishingBobberEntity;
+import net.minecraft.core.entity.player.Player;
 import net.minecraft.core.net.entity.ITrackedEntry;
 import net.minecraft.core.net.entity.IVehicleEntry;
 import net.minecraft.core.net.packet.AddEntityPacket;
@@ -10,7 +11,7 @@ import net.minecraft.server.entity.EntityTracker;
 import net.minecraft.server.entity.EntityTrackerEntry;
 import org.jetbrains.annotations.NotNull;
 
-public class BobberEntry implements IVehicleEntry<FishingBobberEntity>, ITrackedEntry<FishingBobberEntity> {
+public class BobberNetEntry implements IVehicleEntry<FishingBobberEntity>, ITrackedEntry<FishingBobberEntity> {
     @Override
     public @NotNull Class<FishingBobberEntity> getAppliedClass() {
         return FishingBobberEntity.class;
@@ -38,11 +39,16 @@ public class BobberEntry implements IVehicleEntry<FishingBobberEntity>, ITracked
 
     @Override
     public Entity getEntity(World world, double x, double y, double z, int metadata, boolean hasVelocity, double xd, double yd, double zd, Entity owner) {
-        return new FishingBobberEntity(world, x, y, z);
+        FishingBobberEntity bobber = new FishingBobberEntity(world, x, y, z);
+        if (owner != null) {
+            bobber.owner = (Player) owner;
+            ((Player) owner).bobberEntity = bobber;
+        }
+        return bobber;
     }
 
     @Override
-    public AddEntityPacket getSpawnPacket(EntityTrackerEntry tracker, FishingBobberEntity trackedObject) {
-        return new AddEntityPacket(trackedObject);
+    public AddEntityPacket getSpawnPacket(EntityTrackerEntry tracker, FishingBobberEntity bobber) {
+        return new AddEntityPacket(bobber, 0, bobber.owner == null ? -1 : bobber.owner.id);
     }
 }
diff --git a/src/main/java/net/minecraft/core/world/SpawnerMobs.java b/src/main/java/net/minecraft/core/world/SpawnerMobs.java
index 6257ec3c7..e2f6065d4 100644
--- a/src/main/java/net/minecraft/core/world/SpawnerMobs.java
+++ b/src/main/java/net/minecraft/core/world/SpawnerMobs.java
@@ -3,6 +3,7 @@ package net.minecraft.core.world;
 import net.minecraft.core.block.BedBlock;
 import net.minecraft.core.block.material.Material;
 import net.minecraft.core.data.gamerule.GameRules;
+import net.minecraft.core.entity.EntityDispatcher;
 import net.minecraft.core.entity.Mob;
 import net.minecraft.core.entity.SpawnListEntry;
 import net.minecraft.core.entity.monster.SkeletonMob;
@@ -22,11 +23,24 @@ import net.minecraft.core.world.pathfinder.Node;
 import net.minecraft.core.world.pathfinder.Path;
 import net.minecraft.core.world.pathfinder.PathFinder;
 
+import java.util.Collection;
+import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
+import java.util.Locale;
+import java.util.Map;
 import java.util.Set;
 public final class SpawnerMobs
 {
+    private static final Set<ChunkCoordinate> eligibleChunksForSpawning = new HashSet<>();
+    private static final Class<?>[] nightSpawnEntities;
+
+    static
+    {
+        nightSpawnEntities = new Class[] {
+            SpiderMob.class, ZombieMob.class, SkeletonMob.class, ZombieArmoredMob.class
+        };
+    }
 
     public SpawnerMobs()
     {
@@ -40,9 +54,9 @@ public final class SpawnerMobs
         return new ChunkPosition(newX, newY, newZ);
     }
 
-    public static int performSpawning(World world, boolean spawnHostileMobs, boolean spawnPassiveMobs)
+    public static int performSpawning(World world, SpawnerConfig spawnerConfig)
     {
-        if(!spawnHostileMobs && !spawnPassiveMobs) { return 0; }
+        if(!spawnerConfig.canHostileSpawn(world) && !spawnerConfig.canPassiveSpawn(world)) { return 0; }
         eligibleChunksForSpawning.clear();
 
         for (Player player : world.players){
@@ -71,8 +85,8 @@ public final class SpawnerMobs
 
         for (MobCategory creatureType : MobCategory.values()) {
 
-            if (creatureType.isPeaceful() && !spawnPassiveMobs) continue;
-            if (!creatureType.isPeaceful() && !spawnHostileMobs) continue;
+            if (creatureType.isPeaceful() && !spawnerConfig.canPassiveSpawn(world)) continue;
+            if (!creatureType.isPeaceful() && !spawnerConfig.canHostileSpawn(world)) continue;
             if (world.countEntities(creatureType.getBaseClass()) > ((creatureType.getMaxCreaturesPerChunk() * eligibleChunksForSpawning.size()) / 256))
                 continue;
 
@@ -111,6 +125,8 @@ public final class SpawnerMobs
                     }
                 }
 
+                if (!spawnerConfig.canMobSpawn(EntityDispatcher.getEncodeId(spawnListEntry.entityClass))) continue;
+
                 final ChunkPosition pos = getRandomSpawningPointInChunk(world, chunk.x, chunk.z);
                 final int x = pos.x;
                 final int y = pos.y;
@@ -291,14 +307,38 @@ public final class SpawnerMobs
 		}
 		return spawnedEntity;
 	}
+    public static class SpawnerConfig {
+        private boolean allowPassive = true;
+        private boolean allowHostile = true;
+        private final Map<String, Boolean> mobSpawnOverrides = new HashMap<>();
 
-    private static final Set<ChunkCoordinate> eligibleChunksForSpawning = new HashSet<>();
-    private static final Class<?>[] nightSpawnEntities;
+        public boolean canPassiveSpawn(World world) {
+            return allowPassive;
+        }
 
-    static 
-    {
-        nightSpawnEntities = new Class[] {
-            SpiderMob.class, ZombieMob.class, SkeletonMob.class, ZombieArmoredMob.class
-        };
+        public void setPassiveSpawning(boolean flag) {
+            allowPassive = flag;
+        }
+
+        public boolean canHostileSpawn(World world) {
+            return allowHostile && world.difficultySetting > 0;
+        }
+
+        public void setHostileSpawning(boolean flag) {
+            allowHostile = flag;
+        }
+
+        public boolean canMobSpawn(String mobID) {
+            return mobSpawnOverrides.getOrDefault(mobID.toLowerCase(Locale.ROOT), true);
+        }
+
+        public void setMobSpawn(String mobID, boolean flag) {
+            mobSpawnOverrides.put(mobID.toLowerCase(Locale.ROOT), flag);
+        }
+
+        public Collection<Map.Entry<String, Boolean>> getSpawnEntries() {
+            return mobSpawnOverrides.entrySet();
+        }
     }
+
 }
diff --git a/src/main/java/net/minecraft/core/world/World.java b/src/main/java/net/minecraft/core/world/World.java
index 858c08536..29ae30407 100644
--- a/src/main/java/net/minecraft/core/world/World.java
+++ b/src/main/java/net/minecraft/core/world/World.java
@@ -105,7 +105,7 @@ public class World implements WorldSource {
     public final Dimension dimension;
     public final WorldType worldType;
     protected IChunkProvider chunkProvider;
-    protected final LevelStorage saveHandler;
+    public final LevelStorage saveHandler;
     protected LevelData levelData;
     public DimensionData dimensionData;
     public boolean findingSpawnPoint;
@@ -113,8 +113,7 @@ public class World implements WorldSource {
     public SavedDataStorage savedDataStorage;
     private boolean field_31055_L;
     private int lightingUpdatesCounter = 0;
-    protected boolean spawnHostileMobs = true;
-    private boolean spawnPeacefulMobs = true;
+    public final SpawnerMobs.SpawnerConfig spawningConfig;
     static int lightingUpdatesScheduled = 0;
     private int caveSoundCounter = rand.nextInt(12000);
     public boolean isClientSide = false;
@@ -131,11 +130,12 @@ public class World implements WorldSource {
     public final WeatherManager weatherManager;
 
     //Usually called when a world is loaded or generated (Singleplayer & Server)
-    public World(LevelStorage saveHandler, String name, long seed, Dimension dimension, WorldType worldType)
+    public World(LevelStorage saveHandler, String name, long seed, Dimension dimension, WorldType worldType, SpawnerMobs.SpawnerConfig spawningConfig)
     {
         this.saveHandler = saveHandler;
         this.savedDataStorage = new SavedDataStorage(saveHandler);
         this.levelData = saveHandler.getLevelData();
+        this.spawningConfig = spawningConfig;
         this.isNewWorld = levelData == null;
 
         // Attempt to determine the correct dimension for this world
@@ -224,6 +224,7 @@ public class World implements WorldSource {
         saveHandler = world.saveHandler;
 
         levelData = new LevelData(world.levelData);
+        this.spawningConfig = world.spawningConfig;
 
         dimensionData = world.saveHandler.getDimensionData(dimension.id);
         if (dimensionData == null)
@@ -276,6 +277,8 @@ public class World implements WorldSource {
         auroraProvider = new AuroraProvider(this, seed);
 
         biomeProvider = this.worldType.createBiomeProvider(this);
+
+        spawningConfig = new SpawnerMobs.SpawnerConfig();
     }
     // Used for the model viewer
     public World(){
@@ -292,6 +295,8 @@ public class World implements WorldSource {
         auroraProvider = new AuroraProvider(this, 0);
 
         biomeProvider = this.worldType.createBiomeProvider(this);
+
+        spawningConfig = new SpawnerMobs.SpawnerConfig();
     }
 
     public <T> T getGameRuleValue(GameRule<T> gameRule)
@@ -2457,10 +2462,10 @@ public class World implements WorldSource {
         }
     }
 
-    public void setAllowedMobSpawns(boolean flag, boolean flag1)
+    public void setAllowedMobSpawns(boolean spawnHostile, boolean spawnPassive)
     {
-        spawnHostileMobs = flag;
-        spawnPeacefulMobs = flag1;
+        spawningConfig.setPassiveSpawning(spawnPassive);
+        spawningConfig.setHostileSpawning(spawnHostile);
     }
 
     public void allChanged(boolean lightChanged, boolean seasonChanged) {
@@ -2474,7 +2479,7 @@ public class World implements WorldSource {
         if(areEnoughPlayersFullyAsleep())
         {
             boolean wasInterrupted = false;
-            if(spawnHostileMobs && difficultySetting >= 1 && getPlayersRequiredToSkipNight() <= 1)
+            if(spawningConfig.canHostileSpawn(this) && getPlayersRequiredToSkipNight() <= 1)
             {
                 wasInterrupted = SpawnerMobs.performSleepSpawning(this, players);
             }
@@ -2497,7 +2502,7 @@ public class World implements WorldSource {
 		updateSleepingPlayers();
         Debug.change("spawning");
         // TODO mob spawning seems to be the cause of many lag spikes, specifically the checks for is a mob is allowed to spawn at a certain xyz position seem to be the worst offenders
-		SpawnerMobs.performSpawning(this, spawnHostileMobs, spawnPeacefulMobs);
+		SpawnerMobs.performSpawning(this, spawningConfig);
         Debug.change("chunk");
 		chunkProvider.tick();
 
diff --git a/src/main/java/net/minecraft/core/world/chunk/ChunkLoaderLegacy.java b/src/main/java/net/minecraft/core/world/chunk/ChunkLoaderLegacy.java
index f18e68706..d2b82cd93 100644
--- a/src/main/java/net/minecraft/core/world/chunk/ChunkLoaderLegacy.java
+++ b/src/main/java/net/minecraft/core/world/chunk/ChunkLoaderLegacy.java
@@ -152,6 +152,11 @@ public class ChunkLoaderLegacy
         }
     }
 
+    @Override
+    public boolean isSaving() {
+        return false;
+    }
+
     public static void storeChunkInCompound(Chunk chunk, World world, CompoundTag tag)
     {
         world.checkSessionLock();
diff --git a/src/main/java/net/minecraft/core/world/chunk/ChunkLoaderRegion.java b/src/main/java/net/minecraft/core/world/chunk/ChunkLoaderRegion.java
index af5823a5b..0e4f16d97 100644
--- a/src/main/java/net/minecraft/core/world/chunk/ChunkLoaderRegion.java
+++ b/src/main/java/net/minecraft/core/world/chunk/ChunkLoaderRegion.java
@@ -71,4 +71,9 @@ public class ChunkLoaderRegion
             exception.printStackTrace();
         }
     }
+
+    @Override
+    public boolean isSaving() {
+        return false;
+    }
 }
diff --git a/src/main/java/net/minecraft/core/world/chunk/ChunkLoaderRegionAsync.java b/src/main/java/net/minecraft/core/world/chunk/ChunkLoaderRegionAsync.java
index f9d2c0c9a..a3654058e 100644
--- a/src/main/java/net/minecraft/core/world/chunk/ChunkLoaderRegionAsync.java
+++ b/src/main/java/net/minecraft/core/world/chunk/ChunkLoaderRegionAsync.java
@@ -60,6 +60,11 @@ public class ChunkLoaderRegionAsync
         }
     }
 
+    @Override
+    public boolean isSaving() {
+        return !chunksToSave.isEmpty();
+    }
+
     private static class ChunkSaveThread extends Thread
     {
         public volatile boolean shouldStop = false;
diff --git a/src/main/java/net/minecraft/core/world/chunk/IChunkLoader.java b/src/main/java/net/minecraft/core/world/chunk/IChunkLoader.java
index 241ee52f0..8c258a408 100644
--- a/src/main/java/net/minecraft/core/world/chunk/IChunkLoader.java
+++ b/src/main/java/net/minecraft/core/world/chunk/IChunkLoader.java
@@ -29,4 +29,10 @@ public interface IChunkLoader
      */
     void saveChunk(World world, Chunk chunk)
         throws IOException;
+
+
+    /**
+     * @return true if busy saving
+     */
+    boolean isSaving();
 }
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 684464006..3a4b91f02 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -25,6 +25,7 @@ import net.minecraft.core.util.helper.RestHandler;
 import net.minecraft.core.util.phys.AABB;
 import net.minecraft.core.util.phys.Vec3;
 import net.minecraft.core.world.Dimension;
+import net.minecraft.core.world.SpawnerMobs;
 import net.minecraft.core.world.World;
 import net.minecraft.core.world.biome.provider.BiomeProviderOverworld;
 import net.minecraft.core.world.chunk.ChunkCoordinates;
@@ -109,7 +110,8 @@ public class MinecraftServer
         propertyManager = new PropertyManager(new File("server.properties"));
         String s = propertyManager.getStringProperty("server-ip", "");
         onlineMode = propertyManager.getBooleanProperty("online-mode", true);
-        spawnPeacefulMobs = propertyManager.getBooleanProperty("spawn-animals", true);
+        spawnerConfig.setPassiveSpawning(propertyManager.getBooleanProperty("spawn-animals", true));
+        spawnerConfig.setHostileSpawning(propertyManager.getBooleanProperty("spawn-monsters", true));
         pvpOn = propertyManager.getBooleanProperty("pvp", true);
         allowFlight = propertyManager.getBooleanProperty("allow-flight", false);
         statsToken = propertyManager.getStringProperty("stats-token", "only-enter-a-value-if-you-are-a-registered-server");
@@ -346,16 +348,15 @@ public class MinecraftServer
         {
             if (i == 0)
             {
-                dimensionWorlds[i] = new WorldServer(this, saveHandler, worldDirName, i, defaultWorldType, l);
+                dimensionWorlds[i] = new WorldServer(this, saveHandler, worldDirName, i, defaultWorldType, l, spawnerConfig);
             }
             else
             {
-                dimensionWorlds[i] = new WorldServerMulti(this, saveHandler, worldDirName, i, Dimension.getDimensionList().get(i).defaultWorldType, l, dimensionWorlds[0]);
+                dimensionWorlds[i] = new WorldServerMulti(this, saveHandler, worldDirName, i, Dimension.getDimensionList().get(i).defaultWorldType, l, dimensionWorlds[0], spawnerConfig);
             }
             dimensionWorlds[i].addListener(new WorldManager(this, dimensionWorlds[i]));
             dimensionWorlds[i].difficultySetting = difficulty;
             dimensionWorlds[i].sleepPercent = sleepPercentage;
-            dimensionWorlds[i].setAllowedMobSpawns(propertyManager.getBooleanProperty("spawn-monsters", true), spawnPeacefulMobs);
             playerList.setPlayerManager(dimensionWorlds);
         }
 
@@ -794,5 +795,6 @@ public class MinecraftServer
     public int autoSaveInterval = 5;
     public int chunksSavedPerAutosave = 24;
     public boolean forceSaveAllChunksOnAutosave = false;
+    public SpawnerMobs.SpawnerConfig spawnerConfig = new SpawnerMobs.SpawnerConfig();
 
 }
diff --git a/src/main/java/net/minecraft/server/world/WorldServer.java b/src/main/java/net/minecraft/server/world/WorldServer.java
index d691573ab..b0b9c8a24 100644
--- a/src/main/java/net/minecraft/server/world/WorldServer.java
+++ b/src/main/java/net/minecraft/server/world/WorldServer.java
@@ -32,9 +32,9 @@ import net.minecraft.server.MinecraftServer;
 public class WorldServer extends World
 {
 
-    public WorldServer(MinecraftServer minecraftserver, LevelStorage isavehandler, String name, int dimensionId, WorldType worldType, long seed)
+    public WorldServer(MinecraftServer minecraftserver, LevelStorage isavehandler, String name, int dimensionId, WorldType worldType, long seed, SpawnerMobs.SpawnerConfig spawnerConfig)
     {
-        super(isavehandler, name, seed, Dimension.getDimensionList().get(dimensionId), worldType);
+        super(isavehandler, name, seed, Dimension.getDimensionList().get(dimensionId), worldType, spawnerConfig);
         field_819_z = false;
         entityIntHashMap = new IntHashMap<>();
         mcServer = minecraftserver;
@@ -114,7 +114,7 @@ public class WorldServer extends World
         if(areEnoughPlayersFullyAsleep())
         {
             boolean wasInterrupted = false;
-            if(spawnHostileMobs && difficultySetting >= 1 && getPlayersRequiredToSkipNight() <= 1)
+            if(spawningConfig.canHostileSpawn(this) && getPlayersRequiredToSkipNight() <= 1)
             {
                 wasInterrupted = SpawnerMobs.performSleepSpawning(this, players);
             }
diff --git a/src/main/java/net/minecraft/server/world/WorldServerMulti.java b/src/main/java/net/minecraft/server/world/WorldServerMulti.java
index b9228f383..a0b3d1e7b 100644
--- a/src/main/java/net/minecraft/server/world/WorldServerMulti.java
+++ b/src/main/java/net/minecraft/server/world/WorldServerMulti.java
@@ -1,5 +1,6 @@
 package net.minecraft.server.world;
 
+import net.minecraft.core.world.SpawnerMobs;
 import net.minecraft.core.world.type.WorldType;
 import net.minecraft.server.MinecraftServer;
 import net.minecraft.core.world.save.LevelStorage;
@@ -10,9 +11,9 @@ import net.minecraft.core.world.save.LevelStorage;
 public class WorldServerMulti extends WorldServer
 {
 
-    public WorldServerMulti(MinecraftServer minecraftserver, LevelStorage isavehandler, String s, int dimensionId, WorldType worldType, long l, WorldServer worldserver)
+    public WorldServerMulti(MinecraftServer minecraftserver, LevelStorage isavehandler, String name, int dimensionId, WorldType worldType, long seed, WorldServer worldserver, SpawnerMobs.SpawnerConfig spawnerConfig)
     {
-        super(minecraftserver, isavehandler, s, dimensionId, worldType, l);
+        super(minecraftserver, isavehandler, name, dimensionId, worldType, seed, spawnerConfig);
         savedDataStorage = worldserver.savedDataStorage;
     }
 }
diff --git a/src/main/resources/assets/minecraft/textures/block/door_steel_bottom.png b/src/main/resources/assets/minecraft/textures/block/door_steel_bottom.png
new file mode 100644
index 000000000..7ba84563e
Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/block/door_steel_bottom.png differ
diff --git a/src/main/resources/assets/minecraft/textures/block/door_steel_top.png b/src/main/resources/assets/minecraft/textures/block/door_steel_top.png
new file mode 100644
index 000000000..9392cf312
Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/block/door_steel_top.png differ
diff --git a/src/main/resources/assets/minecraft/textures/block/glass_steel.png b/src/main/resources/assets/minecraft/textures/block/glass_steel.png
new file mode 100644
index 000000000..873b2a244
Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/block/glass_steel.png differ
diff --git a/src/main/resources/assets/minecraft/textures/block/trapdoor_steel_side.png b/src/main/resources/assets/minecraft/textures/block/trapdoor_steel_side.png
new file mode 100644
index 000000000..2df48296f
Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/block/trapdoor_steel_side.png differ
diff --git a/src/main/resources/assets/minecraft/textures/block/trapdoor_steel_top.png b/src/main/resources/assets/minecraft/textures/block/trapdoor_steel_top.png
new file mode 100644
index 000000000..61b2b0cd0
Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/block/trapdoor_steel_top.png differ
diff --git a/src/main/resources/assets/minecraft/textures/item/door_steel.png b/src/main/resources/assets/minecraft/textures/item/door_steel.png
new file mode 100644
index 000000000..fb75d2b89
Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/item/door_steel.png differ
