diff --git a/build.gradle.kts b/build.gradle.kts
index d0f6e8c30..39f707195 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -138,6 +138,15 @@ task("runClient", JavaExec::class) {
     systemProperty("java.library.path", layout.buildDirectory.dir("natives").get().asFile.absolutePath)
 }
 
+task("runColorizerGenerator", JavaExec::class) {
+    dependsOn(tasks["copyNatives"])
+    group = "bta"
+    mainClass.set("net.betterthanadventure.utils.ColorizerGenerator")
+    classpath = sourceSets["main"].runtimeClasspath
+
+    systemProperty("java.library.path", layout.buildDirectory.dir("natives").get().asFile.absolutePath)
+}
+
 java {
     sourceCompatibility = JavaVersion.VERSION_1_8
     targetCompatibility = JavaVersion.VERSION_1_8
diff --git a/src/common/resources/lang/en_US/tile.lang b/src/common/resources/lang/en_US/tile.lang
index 08de70238..6ba55f040 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.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.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.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.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.caatinga.name=Caatinga Leaves
tile.leaves.caatinga.desc=Leaves from a caatinga 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.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.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.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.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.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.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.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.trapdoor.glass.tinted.name=Tinted Glass Trapdoor
tile.trapdoor.glass.tinted.desc=Blocks out the sun.

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.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.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.glass.tinted.top.name=Tinted Glass Top Door
tile.door.glass.tinted.top.desc=You shouldn't be seeing this.
tile.door.glass.tinted.bottom.name=Tinted Glass Bottom Door
tile.door.glass.tinted.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.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.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.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.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.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.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.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.trapdoor.glass.tinted.name=Tinted Glass Trapdoor
tile.trapdoor.glass.tinted.desc=Blocks out the sun.

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.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.glass.tinted.top.name=Tinted Glass Top Door
tile.door.glass.tinted.top.desc=You shouldn't be seeing this.
tile.door.glass.tinted.bottom.name=Tinted Glass Bottom Door
tile.door.glass.tinted.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
diff --git a/src/common/resources/recipes/workbench.json b/src/common/resources/recipes/workbench.json
index 6e88b0166..5abd6d63f 100644
--- a/src/common/resources/recipes/workbench.json
+++ b/src/common/resources/recipes/workbench.json
@@ -5297,6 +5297,75 @@
     },
     "consumeContainers": true
   },
+  {
+    "name": "minecraft:workbench/cobbled_permafrost_slab",
+    "type": "minecraft:crafting/shaped",
+    "pattern": [
+      "###"
+    ],
+    "symbols": [
+      {
+        "symbol": "#",
+        "stack": {
+          "key": "tile.cobble.permafrost",
+          "amount": 1,
+          "meta": 0
+        }
+      }
+    ],
+    "result": {
+      "key": "tile.slab.cobble.permafrost",
+      "amount": 6,
+      "meta": 0
+    },
+    "consumeContainers": true
+  },
+  {
+    "name": "minecraft:workbench/brick_sandstone_slab",
+    "type": "minecraft:crafting/shaped",
+    "pattern": [
+      "###"
+    ],
+    "symbols": [
+      {
+        "symbol": "#",
+        "stack": {
+          "key": "tile.brick.sandstone",
+          "amount": 1,
+          "meta": 0
+        }
+      }
+    ],
+    "result": {
+      "key": "tile.slab.brick.sandstone",
+      "amount": 6,
+      "meta": 0
+    },
+    "consumeContainers": true
+  },
+  {
+    "name": "minecraft:workbench/brick_permafrost_slab",
+    "type": "minecraft:crafting/shaped",
+    "pattern": [
+      "###"
+    ],
+    "symbols": [
+      {
+        "symbol": "#",
+        "stack": {
+          "key": "tile.brick.permafrost",
+          "amount": 1,
+          "meta": 0
+        }
+      }
+    ],
+    "result": {
+      "key": "tile.slab.brick.permafrost",
+      "amount": 6,
+      "meta": 0
+    },
+    "consumeContainers": true
+  },
   {
     "name": "minecraft:workbench/polished_stone_brick_slab",
     "type": "minecraft:crafting/shaped",
@@ -5343,6 +5412,29 @@
     },
     "consumeContainers": true
   },
+  {
+    "name": "minecraft:workbench/polished_permafrost_slab",
+    "type": "minecraft:crafting/shaped",
+    "pattern": [
+      "###"
+    ],
+    "symbols": [
+      {
+        "symbol": "#",
+        "stack": {
+          "key": "tile.permafrost.polished",
+          "amount": 1,
+          "meta": 0
+        }
+      }
+    ],
+    "result": {
+      "key": "tile.slab.permafrost.carved",
+      "amount": 6,
+      "meta": 0
+    },
+    "consumeContainers": true
+  },
   {
     "name": "minecraft:workbench/polished_granite_slab",
     "type": "minecraft:crafting/shaped",
@@ -5781,6 +5873,106 @@
     },
     "consumeContainers": true
   },
+  {
+    "name": "minecraft:workbench/cobblestone_permafrost_stairs",
+    "type": "minecraft:crafting/shaped",
+    "pattern": [
+      "#  ",
+      "## ",
+      "###"
+    ],
+    "symbols": [
+      {
+        "symbol": "#",
+        "stack": {
+          "key": "tile.cobble.permafrost",
+          "amount": 1,
+          "meta": 0
+        }
+      }
+    ],
+    "result": {
+      "key": "tile.stairs.cobble.permafrost",
+      "amount": 6,
+      "meta": 0
+    },
+    "consumeContainers": true
+  },
+  {
+    "name": "minecraft:workbench/brick_permafrost_stairs",
+    "type": "minecraft:crafting/shaped",
+    "pattern": [
+      "#  ",
+      "## ",
+      "###"
+    ],
+    "symbols": [
+      {
+        "symbol": "#",
+        "stack": {
+          "key": "tile.brick.permafrost",
+          "amount": 1,
+          "meta": 0
+        }
+      }
+    ],
+    "result": {
+      "key": "tile.stairs.brick.permafrost",
+      "amount": 6,
+      "meta": 0
+    },
+    "consumeContainers": true
+  },
+  {
+    "name": "minecraft:workbench/brick_sandstone_stairs",
+    "type": "minecraft:crafting/shaped",
+    "pattern": [
+      "#  ",
+      "## ",
+      "###"
+    ],
+    "symbols": [
+      {
+        "symbol": "#",
+        "stack": {
+          "key": "tile.brick.sandstone",
+          "amount": 1,
+          "meta": 0
+        }
+      }
+    ],
+    "result": {
+      "key": "tile.stairs.brick.sandstone",
+      "amount": 6,
+      "meta": 0
+    },
+    "consumeContainers": true
+  },
+  {
+    "name": "minecraft:workbench/sandstone_stairs",
+    "type": "minecraft:crafting/shaped",
+    "pattern": [
+      "#  ",
+      "## ",
+      "###"
+    ],
+    "symbols": [
+      {
+        "symbol": "#",
+        "stack": {
+          "key": "tile.sandstone",
+          "amount": 1,
+          "meta": 0
+        }
+      }
+    ],
+    "result": {
+      "key": "tile.stairs.sandstone",
+      "amount": 6,
+      "meta": 0
+    },
+    "consumeContainers": true
+  },
   {
     "name": "minecraft:workbench/polished_stone_brick_stairs",
     "type": "minecraft:crafting/shaped",
@@ -8375,6 +8567,30 @@
     },
     "consumeContainers": true
   },
+  {
+    "name": "minecraft:workbench/permafrost_to_permafrost_stone",
+    "type": "minecraft:crafting/shaped",
+    "pattern": [
+      "#",
+      "#"
+    ],
+    "symbols": [
+      {
+        "symbol": "#",
+        "stack": {
+          "key": "tile.permafrost",
+          "amount": 1,
+          "meta": 0
+        }
+      }
+    ],
+    "result": {
+      "key": "tile.permafrost.polished",
+      "amount": 2,
+      "meta": 0
+    },
+    "consumeContainers": true
+  },
   {
     "name": "minecraft:workbench/granite_to_polished_granite",
     "type": "minecraft:crafting/shaped",
diff --git a/src/main/java/net/betterthanadventure/utils/ColorizerGenerator.java b/src/main/java/net/betterthanadventure/utils/ColorizerGenerator.java
new file mode 100644
index 000000000..d2c6d8583
--- /dev/null
+++ b/src/main/java/net/betterthanadventure/utils/ColorizerGenerator.java
@@ -0,0 +1,112 @@
+package net.betterthanadventure.utils;
+import net.minecraft.core.util.helper.Color;
+import org.lwjgl.opengl.Display;
+import org.lwjgl.opengl.DisplayMode;
+import static org.lwjgl.opengl.GL11.*;
+
+public class ColorizerGenerator {
+
+    // Desert = 0.749, 0.718, 0.333
+    // Cold = 0.502, 0.706, 0.592
+    // Midpoint = 0.486, 0.741, 0.42
+    // Temperate = 0.278, 0.804, 0.2
+
+    private static float getFloatColor(int color){
+        return (float) color / 255F;
+    }
+    // Summer
+//        static int colorColdI = 0x80b497;
+//        static int colorMidI = 0x7cbd6b;
+//        static int colorTemperateI = 0x47cd33;
+//        static int colorDryI = 0xbfb755;
+
+    //Fall
+//        static int colorColdI = 0x85b088;
+//        static int colorMidI = 0xafbb5d;
+//        static int colorTemperateI = 0x8bc540;
+//        static int colorDryI = 0xbfb755;
+
+    // Winter
+//    static int colorColdI = 0x93b5ac;
+//    static int colorMidI = 0x81b496;
+//    static int colorTemperateI = 0xb0aa72;
+//    static int colorDryI = 0x8cc047;
+
+    static int colorColdI = 0x85be9e;
+    static int colorMidI = 0x82c96f;
+    static int colorTemperateI = 0x4bde36;
+    static int colorDryI = 0x8cc047;
+
+    static Color colorCold = new Color().setARGB(colorColdI);
+    static Color colorMid = new Color().setARGB(colorMidI);
+    static Color colorTemperate = new Color().setARGB(colorTemperateI);
+    static Color colorDry = new Color().setARGB(colorDryI);
+    private static void drawVertex(Color color){
+        glColor3d(getFloatColor(color.getRed()), getFloatColor(color.getGreen()), getFloatColor(color.getBlue()));
+    }
+    public static void main(String[] args) throws Exception {
+        Display.setDisplayMode(new DisplayMode(257, 257));
+        Display.setTitle("Gradient");
+        Display.create();
+        Display.setVSyncEnabled(true);
+
+
+
+        while(!Display.isCloseRequested()) {
+            glClearColor(1.0f, 1.0f, 1.0f, 1.0f);
+            glClear(GL_COLOR_BUFFER_BIT);
+            glLoadIdentity();
+            glOrtho(0, 1, 0, 1, -1, 1);
+
+            System.out.println(colorCold.getRed());
+
+            // Originals
+//            glBegin(GL_TRIANGLES);
+//
+//            glColor3d(0.749, 0.718, 0.333);
+//            glVertex2d(0.0, 0.0);
+//
+//            glColor3d(0.278, 0.804, 0.2);
+//            glVertex2d(0.0, 1.0);
+//
+//            glColor3d(0.486, 0.741, 0.42);
+//            glVertex2d(0.5, 0.5);
+//            glColor3d(0.749, 0.718, 0.333);
+//            glVertex2d(0.0, 0.0);
+//
+//            glColor3d(0.486, 0.741, 0.42);
+//            glVertex2d(0.5, 0.5);
+//
+//            glColor3d(0.502, 0.706, 0.592);
+//            glVertex2d(1.0, 0.0);
+//
+//            glEnd();
+
+            glBegin(GL_TRIANGLES);
+
+            // tri 1
+            drawVertex(colorDry);
+            glVertex2d(0.0, 0.0);
+
+            drawVertex(colorTemperate);
+            glVertex2d(0.0, 1.0);
+
+            drawVertex(colorMid);
+            glVertex2d(0.5, 0.5);
+
+            // tri 2
+            drawVertex(colorDry);
+            glVertex2d(0.0, 0.0);
+
+            drawVertex(colorMid);
+            glVertex2d(0.5, 0.5);
+
+            drawVertex(colorCold);
+            glVertex2d(1.0, 0.0);
+
+            glEnd();
+
+            Display.update();
+        }
+    }
+}
diff --git a/src/main/java/net/minecraft/client/Minecraft.java b/src/main/java/net/minecraft/client/Minecraft.java
index 1165821aa..e6df39416 100644
--- a/src/main/java/net/minecraft/client/Minecraft.java
+++ b/src/main/java/net/minecraft/client/Minecraft.java
@@ -396,8 +396,13 @@ public class Minecraft
         BiomeProviderOverworld.init();
 
         ColorizerWater.updateColorData(renderEngine.getTextureImageData("/misc/watercolor.png"));
-        ColorizerGrass.updateColorData(renderEngine.getTextureImageData("/misc/grasscolor.png"));
+        ColorizerGrass.defaultColor.updateColorData(renderEngine.getTextureImageData("/misc/grasscolor.png"));
+        ColorizerGrass.spring.updateColorData(renderEngine.getTextureImageData("/misc/grasscolor_spring.png"));
+        ColorizerGrass.summer.updateColorData(renderEngine.getTextureImageData("/misc/grasscolor.png"));
+        ColorizerGrass.fall.updateColorData(renderEngine.getTextureImageData("/misc/grasscolor_fall.png"));
+        ColorizerGrass.winter.updateColorData(renderEngine.getTextureImageData("/misc/grasscolor_winter.png"));
         ColorizerFoliage.updateColorData(renderEngine.getTextureImageData("/misc/foliagecolor.png"));
+
         worldRenderer = new WorldRenderer(this);
 
         // I hate initialization issues so much
diff --git a/src/main/java/net/minecraft/client/render/RenderEngine.java b/src/main/java/net/minecraft/client/render/RenderEngine.java
index 989e6590a..30d703bd6 100644
--- a/src/main/java/net/minecraft/client/render/RenderEngine.java
+++ b/src/main/java/net/minecraft/client/render/RenderEngine.java
@@ -36,6 +36,8 @@ import net.minecraft.client.util.helper.Colors;
 import net.minecraft.client.util.helper.TexturePackJsonHelper;
 import net.minecraft.client.util.helper.Textures;
 import net.minecraft.core.util.helper.Buffer;
+import net.minecraft.core.util.helper.Color;
+import net.minecraft.core.world.season.Seasons;
 
 import java.awt.image.BufferedImage;
 import java.io.IOException;
@@ -758,9 +760,13 @@ public class RenderEngine {
 		mc.mainMenuBackground.refresh(errors);
 		
         ColorizerWater.updateColorData(mc.renderEngine.getTextureImageData("/misc/watercolor.png"));
-        ColorizerGrass.updateColorData(mc.renderEngine.getTextureImageData("/misc/grasscolor.png"));
+		ColorizerGrass.defaultColor.updateColorData(mc.renderEngine.getTextureImageData("/misc/grasscolor.png"));
+		ColorizerGrass.spring.updateColorData(mc.renderEngine.getTextureImageData("/misc/grasscolor_spring.png"));
+		ColorizerGrass.summer.updateColorData(mc.renderEngine.getTextureImageData("/misc/grasscolor.png"));
+		ColorizerGrass.fall.updateColorData(mc.renderEngine.getTextureImageData("/misc/grasscolor_fall.png"));
+		ColorizerGrass.winter.updateColorData(mc.renderEngine.getTextureImageData("/misc/grasscolor_winter.png"));
         ColorizerFoliage.updateColorData(mc.renderEngine.getTextureImageData("/misc/foliagecolor.png"));
-        
+        ColorizerGrass.update(true);
         mc.worldRenderer.lightmapHelper.setup();
 	}
 
diff --git a/src/main/java/net/minecraft/client/render/WorldRenderer.java b/src/main/java/net/minecraft/client/render/WorldRenderer.java
index 946e859dd..76eecae66 100644
--- a/src/main/java/net/minecraft/client/render/WorldRenderer.java
+++ b/src/main/java/net/minecraft/client/render/WorldRenderer.java
@@ -3,6 +3,7 @@ package net.minecraft.client.render;
 import java.util.List;
 import java.util.Random;
 
+import net.minecraft.client.render.colorizer.ColorizerGrass;
 import org.lwjgl.input.Mouse;
 import org.lwjgl.opengl.GL11;
 import org.lwjgl.util.glu.GLU;
@@ -603,6 +604,7 @@ public class WorldRenderer
     	Debug.push("misc");
         RenderGlobal renderGlobal = mc.renderGlobal;
         EffectRenderer effectRenderer = mc.effectRenderer;
+        ColorizerGrass.update(false);
 
         GL11.glEnable(GL11.GL_CULL_FACE);
         GL11.glEnable(GL11.GL_DEPTH_TEST);
diff --git a/src/main/java/net/minecraft/client/render/block/color/BlockColorDispatcher.java b/src/main/java/net/minecraft/client/render/block/color/BlockColorDispatcher.java
index 9c50538b1..1ff86d6e8 100644
--- a/src/main/java/net/minecraft/client/render/block/color/BlockColorDispatcher.java
+++ b/src/main/java/net/minecraft/client/render/block/color/BlockColorDispatcher.java
@@ -29,15 +29,15 @@ public final class BlockColorDispatcher
         addDispatch(Block.leavesOak, new BlockColorLeavesOak());
         addDispatch(Block.leavesPine, new BlockColorLeaves("pine"));
         addDispatch(Block.leavesShrub, new BlockColorLeaves("shrub"));
-        addDispatch(Block.leavesCaatinga, new BlockColorLeaves("caatinga"));
+        addDispatch(Block.leavesThorn, new BlockColorLeaves("caatinga"));
         addDispatch(Block.leavesPalm, new BlockColorLeaves("palm"));
         addDispatch(Block.mossStone, new BlockColorGrass());
         addDispatch(Block.mossBasalt, new BlockColorGrass());
         addDispatch(Block.mossLimestone, new BlockColorGrass());
         addDispatch(Block.mossGranite, new BlockColorGrass());
         addDispatch(Block.wireRedstone, new BlockColorRedstoneWire());
-        addDispatch(Block.tallgrass, new BlockColorTallGrass());
-        addDispatch(Block.tallgrassFern, new BlockColorTallGrass());
+        addDispatch(Block.tallgrass, new BlockColorGrass());
+        addDispatch(Block.tallgrassFern, new BlockColorGrass());
     }
 
     @Override
diff --git a/src/main/java/net/minecraft/client/render/block/color/BlockColorGrass.java b/src/main/java/net/minecraft/client/render/block/color/BlockColorGrass.java
index 6a51cb2ca..ee3d07934 100644
--- a/src/main/java/net/minecraft/client/render/block/color/BlockColorGrass.java
+++ b/src/main/java/net/minecraft/client/render/block/color/BlockColorGrass.java
@@ -16,57 +16,13 @@ public class BlockColorGrass
     @Override
     public int getFallbackColor(int meta)
     {
-        return ColorizerGrass.getGrassColor(0.5, 0.5);
+        return ColorizerGrass.grassMap.getGrassColor(0.5, 0.5);
     }
 
     @Override
-    public int getWorldColor(WorldSource world, int x, int y, int z)
-    {
+    public int getWorldColor(WorldSource world, int x, int y, int z) {
         double localTemperature = world.getBlockTemperature(x, z);
         double localHumidity = world.getBlockHumidity(x, z);
-        int baseGrassColor = ColorizerGrass.getGrassColor(localTemperature, localHumidity);
-        Season season = world.getSeasonManager().getCurrentSeason();
-        if (season != null)
-        {
-            boolean isWinter = (season == Seasons.OVERWORLD_WINTER || season == Seasons.OVERWORLD_WINTER_ENDLESS);
-
-            float progress = world.getSeasonManager().getSeasonProgress();
-            if(isWinter){
-                baseGrassColor = ColorizerGrass.getGrassColor((localTemperature*progress), localHumidity);
-            }
-
-            baseGrassColor = season.modifyGrassColorizer(baseGrassColor, progress > 0.5f ? world.getSeasonManager().getNextSeason() : world.getSeasonManager().getPreviousSeason(), Math.abs(progress - 0.5f));
-
-            if(isWinter){
-                float offsetIntensity = 1 - Math.abs((progress) - 1);
-                float red = ((baseGrassColor & 0xFF0000) >> 16) / 255F;
-                float green = ((baseGrassColor & 0x00FF00) >> 8) / 255F;
-                float blue = (baseGrassColor & 0x0000FF) / 255F;
-
-                float gray = red * green * blue / 3;
-                float grayOffset = (float)grassColorPerlin.getValue(x / 30D, y / 30D, z / 30D) * offsetIntensity * 0.5f;
-                if (gray + grayOffset > 0.4f) grayOffset = 0.4f - gray;
-                if (gray + grayOffset < 0.0f) grayOffset = -gray;
-
-                red = ((red + grayOffset));
-                green = ((green + grayOffset));
-                blue = ((blue + grayOffset));
-
-                if (red < 0) red = 0;
-                if (red > 1) red = 1;
-                if (green < 0) green = 0;
-                if (green > 1) green = 1;
-                if (blue < 0) blue = 0;
-                if (blue > 1) blue = 1;
-
-                int newRed = (int) (red * 255) & 0xFF;
-                int newGreen = (int) (green * 255) & 0xFF;
-                int newBlue = (int) (blue * 255) & 0xFF;
-
-                baseGrassColor = ((newRed << 16) | (newGreen << 8) | (newBlue));
-
-            }
-        }
-        return baseGrassColor;
+        return ColorizerGrass.grassMap.getGrassColor(localTemperature, localHumidity);
     }
 }
diff --git a/src/main/java/net/minecraft/client/render/block/color/BlockColorTallGrass.java b/src/main/java/net/minecraft/client/render/block/color/BlockColorTallGrass.java
index ab82b1af7..fc4131b05 100644
--- a/src/main/java/net/minecraft/client/render/block/color/BlockColorTallGrass.java
+++ b/src/main/java/net/minecraft/client/render/block/color/BlockColorTallGrass.java
@@ -29,76 +29,6 @@ public class BlockColorTallGrass
         localTemperature += offsetT;
         localHumidity += offsetH;
 
-        int baseGrassColor = ColorizerGrass.getGrassColor(localTemperature, localHumidity);
-        if (world.getBlockBiome(x, y - 1, z) == Biomes.OVERWORLD_CAATINGA || world.getBlockBiome(x, y - 1, z) == Biomes.OVERWORLD_CAATINGA_PLAINS) {
-
-            Season season = world.getSeasonManager().getCurrentSeason();
-            if (season != null) {
-                boolean ishumid = (season == Seasons.OVERWORLD_WINTER || season == Seasons.OVERWORLD_WINTER_ENDLESS || season == Seasons.OVERWORLD_SPRING);
-                float progress = world.getSeasonManager().getSeasonProgress();
-
-                if (ishumid) {
-                    baseGrassColor = ColorizerGrass.getGrassColor(0.95, 0.78);
-                } else {
-                    baseGrassColor = ColorizerGrass.getGrassColor(0.95, 0.1);
-                }
-                baseGrassColor = season.modifyGrassColorizer(baseGrassColor, progress > 0.5f ? world.getSeasonManager().getNextSeason() : world.getSeasonManager().getPreviousSeason(), Math.abs(progress - 0.5f));
-            }
-            return baseGrassColor;
-        }
-
-        int blockBelow = world.getBlockId(x, y - 1, z);
-        if(blockBelow == Block.grassScorched.id || blockBelow == Block.dirtScorched.id || blockBelow == Block.dirtScorchedRich.id ){
-
-            return 0xffcc58;
-        }
-        Season season = world.getSeasonManager().getCurrentSeason();
-        if (season != null)
-        {
-
-            boolean isWinter = (season == Seasons.OVERWORLD_WINTER || season == Seasons.OVERWORLD_WINTER_ENDLESS);
-
-
-            float progress = world.getSeasonManager().getSeasonProgress();
-
-            if(isWinter){
-                baseGrassColor = ColorizerGrass.getGrassColor(localTemperature*progress, localHumidity);
-            }
-
-            baseGrassColor = season.modifyGrassColorizer(baseGrassColor, progress > 0.5f ? world.getSeasonManager().getNextSeason() : world.getSeasonManager().getPreviousSeason(), Math.abs(progress - 0.5f));
-
-            if(isWinter){
-                float offsetIntensity = 1 - Math.abs((progress*2F) - 1);
-                float red = ((baseGrassColor & 0xFF0000) >> 16) / 255F;
-                float green = ((baseGrassColor & 0x00FF00) >> 8) / 255F;
-                float blue = (baseGrassColor & 0x0000FF) / 255F;
-
-                float gray = red * green * blue / 3;
-                float grayOffset = (float)grassColorPerlin.getValue(x / 30D, y / 50D, z / 30D) * offsetIntensity * 0.5f;
-                if (gray + grayOffset > 0.4f) grayOffset = 0.4f - gray;
-                if (gray + grayOffset < 0.0f) grayOffset = -gray;
-
-                red = ((red + grayOffset));
-                green = ((green + grayOffset));
-                blue = ((blue + grayOffset));
-
-                if (red < 0) red = 0;
-                if (red > 1) red = 1;
-                if (green < 0) green = 0;
-                if (green > 1) green = 1;
-                if (blue < 0) blue = 0;
-                if (blue > 1) blue = 1;
-
-                int newRed = (int) (red * 255) & 0xFF;
-                int newGreen = (int) (green * 255) & 0xFF;
-                int newBlue = (int) (blue * 255) & 0xFF;
-
-
-                baseGrassColor = ((newRed << 16) | (newGreen << 8) | (newBlue));
-
-            }
-
-        }
-        return baseGrassColor;
+        return ColorizerGrass.defaultColor.getGrassColor(localTemperature, localHumidity);
     }
 }
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 6e19ebf27..bf7c3ad7d 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
@@ -53,6 +53,7 @@ public class BlockModelDispatcher
         addDispatch(new BlockModelStandard<>(Block.limestonePolished).withTextures("minecraft:block/polished_limestone_top", "minecraft:block/polished_limestone_side"));
         addDispatch(new BlockModelStandard<>(Block.basaltPolished).withTextures("minecraft:block/polished_basalt_top", "minecraft:block/polished_basalt_side"));
         addDispatch(new BlockModelStandard<>(Block.slatePolished).withTextures("minecraft:block/polished_slate_top", "minecraft:block/polished_slate_side"));
+        addDispatch(new BlockModelStandard<>(Block.permafrostPolished).withTextures("minecraft:block/polished_permafrost_top", "minecraft:block/polished_permafrost_side"));
 
         addDispatch(new BlockModelAxisAligned<>(Block.pillarMarble).withTextures("minecraft:block/pillar_marble_top", "minecraft:block/pillar_marble_side"));
         addDispatch(new BlockModelStandard<>(Block.capstoneMarble).withTextures("minecraft:block/capstone_marble_top", "minecraft:block/capstone_marble_side"));
@@ -63,6 +64,7 @@ public class BlockModelDispatcher
         addDispatch(new BlockModelStandard<>(Block.graniteCarved).withTextures("minecraft:block/polished_granite_top", "minecraft:block/carved_granite"));
         addDispatch(new BlockModelStandard<>(Block.limestoneCarved).withTextures("minecraft:block/polished_limestone_top", "minecraft:block/carved_limestone"));
         addDispatch(new BlockModelStandard<>(Block.basaltCarved).withTextures("minecraft:block/polished_basalt_top", "minecraft:block/carved_basalt"));
+        addDispatch(new BlockModelStandard<>(Block.permafrostCarved).withTextures("minecraft:block/polished_permafrost_top", "minecraft:block/carved_permafrost"));
 
         addDispatch(new BlockModelStandard<>(Block.planksOak).withTextures("minecraft:block/planks_oak"));
         addDispatch(new BlockModelPlanksPainted<>(Block.planksOakPainted));
@@ -117,6 +119,10 @@ public class BlockModelDispatcher
         addDispatch(new BlockModelSlab<>(Block.slabGranitePolished));
         addDispatch(new BlockModelSlab<>(Block.slabLimestonePolished));
         addDispatch(new BlockModelSlab<>(Block.slabBasaltPolished));
+        addDispatch(new BlockModelSlab<>(Block.slabPermafrostPolished));
+        addDispatch(new BlockModelSlab<>(Block.slabCobblePermafrost));
+        addDispatch(new BlockModelSlab<>(Block.slabBrickSandstone));
+        addDispatch(new BlockModelSlab<>(Block.slabBrickPermafrost));
 
         addDispatch(new BlockModelStairs<>(Block.stairsPlanksOak));
         addDispatch(new BlockModelStairs<>(Block.stairsCobbleStone));
@@ -132,6 +138,10 @@ public class BlockModelDispatcher
         addDispatch(new BlockModelStairsPainted<>(Block.stairsPlanksOakPainted));
         addDispatch(new BlockModelStairs<>(Block.stairsBrickSlate));
         addDispatch(new BlockModelStairs<>(Block.stairsBrickStone));
+        addDispatch(new BlockModelStairs<>(Block.stairsSandstone));
+        addDispatch(new BlockModelStairs<>(Block.stairsCobblePermafrost));
+        addDispatch(new BlockModelStairs<>(Block.stairsBrickSandstone));
+        addDispatch(new BlockModelStairs<>(Block.stairsBrickPermafrost));
 
         addDispatch(new BlockModelStandard<>(Block.obsidian).withTextures("minecraft:block/obsidian"));
 
@@ -176,7 +186,7 @@ public class BlockModelDispatcher
         addDispatch(new BlockModelAxisAligned<>(Block.logCherry).withTextures("minecraft:block/log_cherry_top", "minecraft:block/log_cherry_side"));
         addDispatch(new BlockModelAxisAligned<>(Block.logEucalyptus).withTextures("minecraft:block/log_eucalyptus_top", "minecraft:block/log_eucalyptus_side"));
         addDispatch(new BlockModelAxisAligned<>(Block.logOakMossy).withTextures("minecraft:block/log_oak_mossy_top", "minecraft:block/log_oak_mossy_side"));
-        addDispatch(new BlockModelAxisAligned<>(Block.logThorn).withTextures("minecraft:block/log_brazilwood_top", "minecraft:block/log_brazilwood_side"));
+        addDispatch(new BlockModelAxisAligned<>(Block.logThorn).withTextures("minecraft:block/log_thorn_top", "minecraft:block/log_thorn_side"));
         addDispatch(new BlockModelAxisAligned<>(Block.logPalm).withTextures("minecraft:block/log_palm_top", "minecraft:block/log_palm_side"));
 
         addDispatch(new BlockModelLeaves<>(Block.leavesOak, "minecraft:block/leaves_oak"));
@@ -188,7 +198,7 @@ public class BlockModelDispatcher
         addDispatch(new BlockModelLeaves<>(Block.leavesShrub, "minecraft:block/leaves_shrub"));
         addDispatch(new BlockModelCherryLeavesBloom<>(Block.leavesCherryFlowering));
         addDispatch(new BlockModelCacaoLeaves<>(Block.leavesCacao));
-        addDispatch(new BlockModelLeaves<>(Block.leavesCaatinga, "minecraft:block/leaves_caatinga"));
+        addDispatch(new BlockModelLeaves<>(Block.leavesThorn, "minecraft:block/leaves_caatinga"));
         addDispatch(new BlockModelLeaves<>(Block.leavesPalm, "minecraft:block/leaves_palm"));
 
         addDispatch(new BlockModelCrossedSquares<>(Block.saplingOak).withTextures("minecraft:block/sapling_oak"));
@@ -199,7 +209,7 @@ public class BlockModelDispatcher
         addDispatch(new BlockModelCrossedSquares<>(Block.saplingEucalyptus).withTextures("minecraft:block/sapling_eucalyptus"));
         addDispatch(new BlockModelCrossedSquares<>(Block.saplingShrub).withTextures("minecraft:block/sapling_shrub"));
         addDispatch(new BlockModelCrossedSquares<>(Block.saplingCacao).withTextures("minecraft:block/sapling_cacao"));
-        addDispatch(new BlockModelCrossedSquares<>(Block.saplingThorn).withTextures("minecraft:block/sapling_brazilwood"));
+        addDispatch(new BlockModelCrossedSquares<>(Block.saplingThorn).withTextures("minecraft:block/sapling_thorn"));
         addDispatch(new BlockModelCrossedSquares<>(Block.saplingPalm).withTextures("minecraft:block/sapling_palm"));
 
         addDispatch(new BlockModelCrossedSquares<>(Block.tallgrass).withTextures("minecraft:block/tallgrass"));
diff --git a/src/main/java/net/minecraft/client/render/colorizer/ColorizerGrass.java b/src/main/java/net/minecraft/client/render/colorizer/ColorizerGrass.java
index a3f41f2a3..a00534d69 100644
--- a/src/main/java/net/minecraft/client/render/colorizer/ColorizerGrass.java
+++ b/src/main/java/net/minecraft/client/render/colorizer/ColorizerGrass.java
@@ -1,36 +1,73 @@
 package net.minecraft.client.render.colorizer;
 
 
+import net.minecraft.client.Minecraft;
+import net.minecraft.core.world.World;
+import net.minecraft.core.world.season.Season;
+import net.minecraft.core.world.season.Seasons;
+
 public class ColorizerGrass
 {
-
+    private static Minecraft mc = Minecraft.getMinecraft(ColorizerGrass.class);
     public ColorizerGrass()
     {
     }
 
-    public static void updateColorData(int ai[])
-    {
-        grassBuffer = ai;
+    public static void update(boolean force){
+        World world = mc.theWorld;
+        if(world == null) {
+            lastTickWorld = null;
+            return;
+        }
+        Season season = world.getSeasonManager().getCurrentSeason();
+        int dayInSeason = world.seasonManager.getDayInSeason();
+        float progress = world.getSeasonManager().getSeasonProgress();
+        boolean update = force || lastTickWorld != world || lastTickSeason != season || lastTickDayInSeason != dayInSeason;
+        if(update) {
+            lastTickSeason = season;
+            lastTickDayInSeason = dayInSeason;
+            lastTickWorld = world;
+            if (season == null) {
+                grassMap.updateColorData(defaultColor.buffer);
+            } else {
+                updateColor(season, progress > 0.5f ? world.getSeasonManager().getNextSeason() : world.getSeasonManager().getPreviousSeason(), Math.abs(progress));
+            }
+        }
     }
 
-    public static int getGrassColor(double d, double d1)
-    {
-        if (d < 0.0D)
-            d = 0.0D;
-        else if(d > 1.0D)
-            d = 1.0D;
-        if (d1 < 0.0D)
-            d1 = 0.0D;
-        else if(d1 > 1.0D)
-            d1 = 1.0D;
-
-        d1 *= d;
-
-        int i = (int)((1.0D - d) * 255D);
-        int j = (int)((1.0D - d1) * 255D);
-        return grassBuffer[j << 8 | i];
+    private static void updateColor(Season season1, Season season2, float blend) {
+        GrassColorMap colormap1 = getSeasonalColorizer(season1);
+        GrassColorMap colormap2 = getSeasonalColorizer(season2);
+        int[] buffer1 = colormap1.buffer;
+        int[] buffer2 = colormap2.buffer;
+        int[] data = grassMap.buffer;
+
+        for(int i = 0; i < data.length; ++i) {
+            data[i] = Season.blendColors(buffer1[i], buffer2[i], blend);
+        }
     }
 
-    private static int grassBuffer[] = new int[0x10000];
+    private static GrassColorMap getSeasonalColorizer(Season season) {
+        if (season == Seasons.OVERWORLD_SPRING) {
+            return spring;
+        } else if (season == Seasons.OVERWORLD_SUMMER) {
+            return summer;
+        } else if (season == Seasons.OVERWORLD_FALL) {
+            return fall;
+        } else if (season == Seasons.OVERWORLD_WINTER) {
+            return winter;
+        } else {
+            return grassMap;
+        }
+    }
+    public static GrassColorMap defaultColor = new GrassColorMap();
+    public static GrassColorMap spring = new GrassColorMap();
+    public static GrassColorMap summer = new GrassColorMap();
+    public static GrassColorMap fall = new GrassColorMap();
+    public static GrassColorMap winter = new GrassColorMap();
+    public static GrassColorMap grassMap = new GrassColorMap();
+    private static World lastTickWorld;
+    private static Season lastTickSeason;
+    private static float lastTickDayInSeason;
 
 }
diff --git a/src/main/java/net/minecraft/client/render/colorizer/GrassColorMap.java b/src/main/java/net/minecraft/client/render/colorizer/GrassColorMap.java
new file mode 100644
index 000000000..a33b38607
--- /dev/null
+++ b/src/main/java/net/minecraft/client/render/colorizer/GrassColorMap.java
@@ -0,0 +1,31 @@
+package net.minecraft.client.render.colorizer;
+
+public class GrassColorMap {
+    public GrassColorMap()
+    {
+    }
+    public void updateColorData(int[] map)
+    {
+        buffer = map;
+    }
+
+    public int getGrassColor(double temp, double humid)
+    {
+        if (temp < 0.0D)
+            temp = 0.0D;
+        else if(temp > 1.0D)
+            temp = 1.0D;
+        if (humid < 0.0D)
+            humid = 0.0D;
+        else if(humid > 1.0D)
+            humid = 1.0D;
+
+        humid *= temp;
+
+        int x = (int)((1.0D - temp) * 255D);
+        int y = (int)((1.0D - humid) * 255D);
+        return buffer[y << 8 | x];
+    }
+
+    public int[] buffer = new int[0x10000];
+}
diff --git a/src/main/java/net/minecraft/core/block/Block.java b/src/main/java/net/minecraft/core/block/Block.java
index fceddd6cd..4fe6b586e 100644
--- a/src/main/java/net/minecraft/core/block/Block.java
+++ b/src/main/java/net/minecraft/core/block/Block.java
@@ -1,7 +1,13 @@
 package net.minecraft.core.block;
 
 
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Random;
+
 import com.b100.utils.Utils;
+
 import net.minecraft.core.HitResult;
 import net.minecraft.core.achievement.stat.StatList;
 import net.minecraft.core.block.entity.TileEntity;
@@ -43,11 +49,6 @@ import net.minecraft.core.util.phys.Vec3d;
 import net.minecraft.core.world.World;
 import net.minecraft.core.world.WorldSource;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Random;
-
 public class Block
     implements ITaggable<Block>, IItemConvertible
 {
@@ -781,6 +782,8 @@ public class Block
             .withTags(BlockTags.MINEABLE_BY_PICKAXE);
     public static final Block slatePolished = new Block("slate.polished", 864, Material.stone).withHardness(1.0F).withBlastResistance(10F).withDisabledNeighborNotifyOnMetadataChange()
             .withTags(BlockTags.MINEABLE_BY_PICKAXE);
+    public static final Block permafrostPolished = new Block("permafrost.polished", 865, Material.stone).withHardness(1.0F).withBlastResistance(10F).withDisabledNeighborNotifyOnMetadataChange()
+            .withTags(BlockTags.MINEABLE_BY_PICKAXE);
 
     public static final Block pillarMarble = new BlockAxisAligned("pillar.marble", 20, Material.stone).withHardness(1.0F).withBlastResistance(10F).withDisabledNeighborNotifyOnMetadataChange()
             .withTags(BlockTags.MINEABLE_BY_PICKAXE);
@@ -798,6 +801,8 @@ public class Block
             .withTags(BlockTags.NOT_IN_CREATIVE_MENU, BlockTags.MINEABLE_BY_PICKAXE);
     public static final Block basaltCarved = new Block("basalt.carved", 43, Material.stone).withHardness(2.0F).withBlastResistance(10F)
             .withTags(BlockTags.NOT_IN_CREATIVE_MENU, BlockTags.MINEABLE_BY_PICKAXE);
+    public static final Block permafrostCarved = new Block("permafrost.carved", 44, Material.stone).withHardness(2.0F).withBlastResistance(10F)
+            .withTags(BlockTags.NOT_IN_CREATIVE_MENU, BlockTags.MINEABLE_BY_PICKAXE);
 
     public static final Block planksOak = new Block("planks.oak", 50, Material.wood).withHardness(2.0F).withBlastResistance(5F).withDisabledNeighborNotifyOnMetadataChange()
             .withTags(BlockTags.FENCES_CONNECT, BlockTags.MINEABLE_BY_AXE);
@@ -928,6 +933,14 @@ public class Block
             .withTags(BlockTags.MINEABLE_BY_PICKAXE);
     public static final Block stairsBrickStone = new BlockStairs(brickStone, 173).withDisabledNeighborNotifyOnMetadataChange().withLitInteriorSurface(true)
             .withTags(BlockTags.MINEABLE_BY_PICKAXE);
+    public static final Block stairsSandstone = new BlockStairs(sandstone, 174).withDisabledNeighborNotifyOnMetadataChange().withLitInteriorSurface(true)
+            .withTags(BlockTags.MINEABLE_BY_PICKAXE);
+    public static final Block stairsBrickSandstone = new BlockStairs(brickSandstone, 175).withDisabledNeighborNotifyOnMetadataChange().withLitInteriorSurface(true)
+            .withTags(BlockTags.MINEABLE_BY_PICKAXE);
+    public static final Block stairsCobblePermafrost = new BlockStairs(cobblePermafrost, 176).withDisabledNeighborNotifyOnMetadataChange().withLitInteriorSurface(true)
+            .withTags(BlockTags.MINEABLE_BY_PICKAXE);
+    public static final Block stairsBrickPermafrost = new BlockStairs(Block.brickPermafrost, 177).withDisabledNeighborNotifyOnMetadataChange().withLitInteriorSurface(true)
+            .withTags(BlockTags.MINEABLE_BY_PICKAXE);
 
     public static final Block obsidian = new Block("obsidian", 180, Material.stone).withHardness(10F).withBlastResistance(2000F)
             .withTags(BlockTags.MINEABLE_BY_PICKAXE);
@@ -1022,9 +1035,9 @@ public class Block
             .withTags(BlockTags.MINEABLE_BY_AXE, BlockTags.MINEABLE_BY_HOE, BlockTags.MINEABLE_BY_SWORD, BlockTags.MINEABLE_BY_SHEARS);
     public static final Block leavesCacao = new BlockLeavesCacao("leaves.cacao", 298).withHardness(0.2F).withLightBlock(1).withDisabledStats().withDisabledNeighborNotifyOnMetadataChange()
             .withTags(BlockTags.SHEARS_DO_SILK_TOUCH, BlockTags.MINEABLE_BY_AXE, BlockTags.MINEABLE_BY_HOE, BlockTags.MINEABLE_BY_SWORD, BlockTags.MINEABLE_BY_SHEARS);
-    public static final Block leavesCaatinga = new BlockLeavesThorn("leaves.caatinga", 299).withHardness(0.2F).withLightBlock(1).withDisabledStats().withDisabledNeighborNotifyOnMetadataChange()
+    public static final Block leavesThorn = new BlockLeavesThorn("leaves.thorn", 299).withHardness(0.2F).withLightBlock(1).withDisabledStats().withDisabledNeighborNotifyOnMetadataChange()
             .withTags(BlockTags.MINEABLE_BY_AXE, BlockTags.MINEABLE_BY_HOE, BlockTags.MINEABLE_BY_SWORD, BlockTags.MINEABLE_BY_SHEARS);
-    public static final Block leavesPalm = new BlockLeavesThorn("leaves.palm", 300).withHardness(0.2F).withLightBlock(1).withDisabledStats().withDisabledNeighborNotifyOnMetadataChange()
+    public static final Block leavesPalm = new BlockLeavesPalm("leaves.palm", 300).withHardness(0.2F).withLightBlock(1).withDisabledStats().withDisabledNeighborNotifyOnMetadataChange()
             .withTags(BlockTags.MINEABLE_BY_AXE, BlockTags.MINEABLE_BY_HOE, BlockTags.MINEABLE_BY_SWORD, BlockTags.MINEABLE_BY_SHEARS);
 
 
@@ -1411,6 +1424,15 @@ public class Block
     public static final Block paperWall = new Block("paper_wall", 910, Material.cloth).withHardness(0.7F)
             .withTags(BlockTags.MINEABLE_BY_SHEARS, BlockTags.FENCES_CONNECT, BlockTags.CAN_HANG_OFF, BlockTags.MINEABLE_BY_AXE);
 
+    public static final Block slabBrickSandstone = new BlockSlab(Block.brickSandstone, 1000).withDisabledNeighborNotifyOnMetadataChange().withLitInteriorSurface(true)
+            .withTags(BlockTags.MINEABLE_BY_PICKAXE);
+    public static final Block slabCobblePermafrost = new BlockSlab(cobblePermafrost, 1001).withDisabledNeighborNotifyOnMetadataChange().withLitInteriorSurface(true)
+            .withTags(BlockTags.MINEABLE_BY_PICKAXE);
+    public static final Block slabBrickPermafrost = new BlockSlab(brickPermafrost, 1002).withDisabledNeighborNotifyOnMetadataChange().withLitInteriorSurface(true)
+            .withTags(BlockTags.MINEABLE_BY_PICKAXE);
+    public static final Block slabPermafrostPolished = new BlockSlab(permafrostCarved, 1003).withDisabledNeighborNotifyOnMetadataChange().withLitInteriorSurface(true)
+            .withTags(BlockTags.MINEABLE_BY_PICKAXE);
+
 
     public int[] atlasIndices = new int[6];
     public final int id;
@@ -1472,13 +1494,6 @@ public class Block
         Item.itemsList[layerLeavesOak.id] = new ItemBlockLayerLeaves(layerLeavesOak);
         Item.itemsList[ladderOak.id] = new ItemBlockLadder((BlockLadder) ladderOak);
 
-        for (int i = slabPlanksOak.id; i <= slabBasaltPolished.id; i++)
-        {
-        	if (blocksList[i] != null && i != slabPlanksOakPainted.id)
-        	{
-        		Item.itemsList[i] = new ItemBlockSlab(blocksList[i]);
-        	}
-        }
         Item.itemsList[slabPlanksOakPainted.id] = new ItemBlockSlabPainted(slabPlanksOakPainted);
         Item.itemsList[stairsPlanksOakPainted.id] = new ItemBlockStairsPainted(stairsPlanksOakPainted);
 
@@ -1494,6 +1509,10 @@ public class Block
                 {
                     Item.itemsList[i] = new ItemBlockLayer(blocksList[i]);
                 }
+                else if (blocksList[i] instanceof BlockSlab)
+                {
+                    Item.itemsList[i] = new ItemBlockSlab(blocksList[i]);
+                }
                 else
                 {
                     Item.itemsList[i] = new ItemBlock(blocksList[i]);
diff --git a/src/main/java/net/minecraft/core/block/BlockLeavesBase.java b/src/main/java/net/minecraft/core/block/BlockLeavesBase.java
index 8e0b0207d..c28493488 100644
--- a/src/main/java/net/minecraft/core/block/BlockLeavesBase.java
+++ b/src/main/java/net/minecraft/core/block/BlockLeavesBase.java
@@ -49,6 +49,9 @@ public abstract class BlockLeavesBase extends Block
     @Override
     public void onBlockRemoved(World world, int x, int y, int z, int data)
     {
+    	if(!enableDecay) {
+    		return;
+    	}
         int radius = 1;
         int chunkRadius = radius + 1;
         if(world.areBlocksLoaded(x - chunkRadius, y - chunkRadius, z - chunkRadius, x + chunkRadius,
@@ -64,9 +67,9 @@ public abstract class BlockLeavesBase extends Block
                         if(Block.blocksList[blockId] instanceof BlockLeavesBase)
                         {
                             int meta = world.getBlockMetadata(x + dx, y + dy, z + dz);
-                            if ((meta & 1) == 0)
+                            if (!isPermanent(meta))
                             {
-                                world.setBlockMetadata(x + dx, y + dy, z + dz, meta | 8);
+                                world.setBlockMetadata(x + dx, y + dy, z + dz, setDecaying(meta, true));
                             }
                         }
                     }
@@ -82,7 +85,7 @@ public abstract class BlockLeavesBase extends Block
             return;
         }
         int meta = world.getBlockMetadata(x, y, z);
-        if((meta & 0x08) != 0 && !isPermanent(meta))
+        if(isDecaying(meta) && !isPermanent(meta))
         {
             byte byte0 = 4;
             int offset = byte0 + 1;
@@ -168,7 +171,7 @@ public abstract class BlockLeavesBase extends Block
             int j2 = adjacentTreeBlocks[halfLength * xSpan + halfLength * ySpan + halfLength];
             if(j2 >= 0)
             {
-                world.setBlockMetadata(x, y, z, meta & -9);
+                world.setBlockMetadata(x, y, z, setDecaying(meta, false));
             } else
             {
                 removeLeaves(world, x, y, z);
@@ -183,7 +186,19 @@ public abstract class BlockLeavesBase extends Block
     }
 
     public static boolean isPermanent(int meta) {
-    	return (meta & 0b1) > 0;
+    	return (meta & 1) != 0;
+    }
+    
+    public static boolean isDecaying(int meta) {
+    	return (meta & 8) != 0;
+    }
+    
+    public static int setDecaying(int meta, boolean decaying) {
+    	if(decaying) {
+    		return meta | 8;
+    	}else {
+    		return meta & ~8;
+    	}
     }
     
     @Override
@@ -192,5 +207,6 @@ public abstract class BlockLeavesBase extends Block
     }
 
     public static boolean enableTreeShadowing = false;
+    public static boolean enableDecay = true;
     int[] adjacentTreeBlocks;
 }
diff --git a/src/main/java/net/minecraft/core/block/BlockLeavesPalm.java b/src/main/java/net/minecraft/core/block/BlockLeavesPalm.java
index 06ce81f86..2ebaca07b 100644
--- a/src/main/java/net/minecraft/core/block/BlockLeavesPalm.java
+++ b/src/main/java/net/minecraft/core/block/BlockLeavesPalm.java
@@ -4,8 +4,8 @@ import net.minecraft.core.block.material.Material;
 
 public class BlockLeavesPalm extends BlockLeavesBase {
 
-	public BlockLeavesPalm(String key, int id, Material material) {
-		super(key, id, material);
+	public BlockLeavesPalm(String key, int id) {
+		super(key, id, Material.leaves);
 	}
 
 	@Override
diff --git a/src/main/java/net/minecraft/core/block/BlockSaplingPalm.java b/src/main/java/net/minecraft/core/block/BlockSaplingPalm.java
index 1f08fd772..84f5e824b 100644
--- a/src/main/java/net/minecraft/core/block/BlockSaplingPalm.java
+++ b/src/main/java/net/minecraft/core/block/BlockSaplingPalm.java
@@ -3,7 +3,6 @@ package net.minecraft.core.block;
 import java.util.Random;
 
 import net.minecraft.core.world.World;
-import net.minecraft.core.world.generate.feature.WorldFeature;
 import net.minecraft.core.world.generate.feature.tree.WorldFeatureTreePalm;
 
 public class BlockSaplingPalm extends BlockSaplingBase {
@@ -11,20 +10,14 @@ public class BlockSaplingPalm extends BlockSaplingBase {
 	public BlockSaplingPalm(String key, int id) {
 		super(key, id);
 		
-		canGrowOnSand = true;
+		this.canGrowOnSand = true;
 	}
 	
 	@Override
 	public void growTree(World world, int x, int y, int z, Random random) {
-		int blockBelow = world.getBlockId(x, y - 1, z);
-		
-    	boolean big = blockBelow != Block.sand.id;
-    	WorldFeature worldFeature = new WorldFeatureTreePalm(Block.logPalm, Block.leavesPalm, big, true);
+    	boolean big = world.getBlockId(x, y - 1, z) != Block.sand.id;
     	
-    	world.setBlock(x, y, z, 0);
-    	if(!worldFeature.generate(world, random, x, y, z)) {
-    		world.setBlock(x, y, z, id);
-    	}
+    	new WorldFeatureTreePalm(Block.logPalm, Block.leavesPalm, big, true).generate(world, random, x, y, z);
 	}
 
 }
diff --git a/src/main/java/net/minecraft/core/block/BlockSaplingThorn.java b/src/main/java/net/minecraft/core/block/BlockSaplingThorn.java
index 307cd47f4..a0006e8ed 100644
--- a/src/main/java/net/minecraft/core/block/BlockSaplingThorn.java
+++ b/src/main/java/net/minecraft/core/block/BlockSaplingThorn.java
@@ -21,7 +21,7 @@ public class BlockSaplingThorn extends BlockSaplingBase
         WorldFeature treeFeature = null;
 
         world.setBlock(x, y, z, 0);
-        treeFeature = new WorldFeatureTreeThorn(1, Block.logThorn.id, 0, Block.leavesCaatinga.id, 0);
+        treeFeature = new WorldFeatureTreeThorn(1, Block.logThorn.id, 0, Block.leavesThorn.id, 0);
 
         if(!treeFeature.generate(world, random, x, y, z))
         {
diff --git a/src/main/java/net/minecraft/core/block/entity/TileEntitySign.java b/src/main/java/net/minecraft/core/block/entity/TileEntitySign.java
index 15162a7e5..939c74685 100644
--- a/src/main/java/net/minecraft/core/block/entity/TileEntitySign.java
+++ b/src/main/java/net/minecraft/core/block/entity/TileEntitySign.java
@@ -1,11 +1,10 @@
 package net.minecraft.core.block.entity;
 
+import com.mojang.nbt.CompoundTag;
 import net.minecraft.core.entity.player.EntityPlayer;
 import net.minecraft.core.enums.EnumSignPicture;
-import com.mojang.nbt.CompoundTag;
 import net.minecraft.core.net.command.TextFormatting;
 import net.minecraft.core.net.packet.Packet;
-import net.minecraft.core.net.packet.Packet130UpdateSign;
 import net.minecraft.core.net.packet.Packet140TileEntityData;
 
 public class TileEntitySign extends TileEntity
@@ -48,7 +47,7 @@ public class TileEntitySign extends TileEntity
     
     public boolean getIsEditable(EntityPlayer player)
     {
-        return player.username.equals(owner) || owner.isEmpty();
+        return player.username.equals(owner);
     }
     public void setOwner(EntityPlayer player){
         this.owner = player.username;
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 442b983f5..2c616ad98 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
@@ -1,10 +1,15 @@
 package net.minecraft.core.data.registry.recipe.adapter;
 
-import com.google.gson.*;
+import com.google.gson.JsonDeserializationContext;
+import com.google.gson.JsonDeserializer;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParseException;
+import com.google.gson.JsonSerializationContext;
+import com.google.gson.JsonSerializer;
 import net.minecraft.core.block.Block;
 import net.minecraft.core.item.Item;
 import net.minecraft.core.item.ItemStack;
-import net.minecraft.core.net.command.commands.GiveCommand;
 
 import java.lang.reflect.Type;
 
@@ -26,7 +31,7 @@ public class ItemStackJsonAdapter implements JsonDeserializer<ItemStack>, JsonSe
                 }
             } catch (Exception e){
                 System.out.println("Failed to find item for key '" + key + "'!");
-                throw e;
+                throw new IllegalArgumentException("Failed to find item for key '" + key + "'!\n" + e.getMessage());
             }
         } else {
             item = Item.itemsList[obj.get("id").getAsInt()];
diff --git a/src/main/java/net/minecraft/core/entity/animal/EntityFireflyCluster.java b/src/main/java/net/minecraft/core/entity/animal/EntityFireflyCluster.java
index ccd871241..434fda998 100644
--- a/src/main/java/net/minecraft/core/entity/animal/EntityFireflyCluster.java
+++ b/src/main/java/net/minecraft/core/entity/animal/EntityFireflyCluster.java
@@ -437,7 +437,9 @@ public class EntityFireflyCluster extends EntityFlying
 		public static FireflyColor ORANGE = register(new FireflyColor(1, "fireflyOrange", new Biome[] {
 				Biomes.OVERWORLD_DESERT,
 				Biomes.OVERWORLD_OUTBACK,
-				Biomes.OVERWORLD_OUTBACK_GRASSY
+				Biomes.OVERWORLD_OUTBACK_GRASSY,
+				Biomes.OVERWORLD_CAATINGA,
+				Biomes.OVERWORLD_CAATINGA_PLAINS,
 		},
 				new float[]{1f, 0.9f, 0.58f}));
 		public static FireflyColor BLUE = register(new FireflyColor(2, "fireflyBlue", new Biome[] {
diff --git a/src/main/java/net/minecraft/core/item/ItemSign.java b/src/main/java/net/minecraft/core/item/ItemSign.java
index be7ae04ea..6cfd7192b 100644
--- a/src/main/java/net/minecraft/core/item/ItemSign.java
+++ b/src/main/java/net/minecraft/core/item/ItemSign.java
@@ -58,7 +58,7 @@ public class ItemSign extends Item
         }
         itemstack.consumeItem(entityplayer);
         TileEntitySign tileentitysign = (TileEntitySign)world.getBlockTileEntity(blockX, blockY, blockZ);
-        if(tileentitysign != null && tileentitysign.getIsEditable(entityplayer))
+        if(tileentitysign != null)
         {
             tileentitysign.setOwner(entityplayer);
             entityplayer.displayGUIEditSign(tileentitysign);
diff --git a/src/main/java/net/minecraft/core/sound/BlockSoundDispatcher.java b/src/main/java/net/minecraft/core/sound/BlockSoundDispatcher.java
index 0bb356b3c..f04e8a360 100644
--- a/src/main/java/net/minecraft/core/sound/BlockSoundDispatcher.java
+++ b/src/main/java/net/minecraft/core/sound/BlockSoundDispatcher.java
@@ -35,6 +35,7 @@ public class BlockSoundDispatcher
         addDispatch(Block.limestonePolished, BlockSounds.STONE);
         addDispatch(Block.basaltPolished, BlockSounds.STONE);
         addDispatch(Block.slatePolished, BlockSounds.STONE);
+        addDispatch(Block.permafrostPolished, BlockSounds.STONE);
 
         addDispatch(Block.pillarMarble, BlockSounds.STONE);
         addDispatch(Block.capstoneMarble, BlockSounds.STONE);
@@ -45,6 +46,7 @@ public class BlockSoundDispatcher
         addDispatch(Block.graniteCarved, BlockSounds.STONE);
         addDispatch(Block.limestoneCarved, BlockSounds.STONE);
         addDispatch(Block.basaltCarved, BlockSounds.STONE);
+        addDispatch(Block.permafrostCarved, BlockSounds.STONE);
 
         addDispatch(Block.planksOak, BlockSounds.WOOD);
         addDispatch(Block.planksOakPainted, BlockSounds.WOOD);
@@ -100,6 +102,10 @@ public class BlockSoundDispatcher
         addDispatch(Block.slabGranitePolished, BlockSounds.STONE);
         addDispatch(Block.slabLimestonePolished, BlockSounds.STONE);
         addDispatch(Block.slabBasaltPolished, BlockSounds.STONE);
+        addDispatch(Block.slabPermafrostPolished, BlockSounds.STONE);
+        addDispatch(Block.slabCobblePermafrost, BlockSounds.STONE);
+        addDispatch(Block.slabBrickSandstone, BlockSounds.STONE);
+        addDispatch(Block.slabBrickPermafrost, BlockSounds.STONE);
 
         addDispatch(Block.stairsPlanksOak, BlockSounds.WOOD);
         addDispatch(Block.stairsCobbleStone, BlockSounds.STONE);
@@ -115,6 +121,10 @@ public class BlockSoundDispatcher
         addDispatch(Block.stairsPlanksOakPainted, BlockSounds.WOOD);
         addDispatch(Block.stairsBrickSlate, BlockSounds.STONE);
         addDispatch(Block.stairsBrickStone, BlockSounds.STONE);
+        addDispatch(Block.stairsSandstone, BlockSounds.STONE);
+        addDispatch(Block.stairsCobblePermafrost, BlockSounds.STONE);
+        addDispatch(Block.stairsBrickSandstone, BlockSounds.STONE);
+        addDispatch(Block.stairsBrickPermafrost, BlockSounds.STONE);
 
         addDispatch(Block.obsidian, BlockSounds.STONE);
 
@@ -170,7 +180,7 @@ public class BlockSoundDispatcher
         addDispatch(Block.leavesShrub, BlockSounds.GRASS);
         addDispatch(Block.leavesCherryFlowering, BlockSounds.GRASS);
         addDispatch(Block.leavesCacao, BlockSounds.GRASS);
-        addDispatch(Block.leavesCaatinga, BlockSounds.GRASS);
+        addDispatch(Block.leavesThorn, BlockSounds.GRASS);
         addDispatch(Block.leavesPalm, BlockSounds.GRASS);
 
         addDispatch(Block.saplingOak, BlockSounds.GRASS);
diff --git a/src/main/java/net/minecraft/core/world/World.java b/src/main/java/net/minecraft/core/world/World.java
index f76962f25..56552794e 100644
--- a/src/main/java/net/minecraft/core/world/World.java
+++ b/src/main/java/net/minecraft/core/world/World.java
@@ -123,7 +123,7 @@ public class World implements WorldSource {
 
     public AuroraProvider auroraProvider;
 
-    private final SeasonManager seasonManager;
+    public final SeasonManager seasonManager;
 
     public final WeatherManager weatherManager;
 
diff --git a/src/main/java/net/minecraft/core/world/biome/BiomeCaatinga.java b/src/main/java/net/minecraft/core/world/biome/BiomeCaatinga.java
index a91468a70..b83e37492 100644
--- a/src/main/java/net/minecraft/core/world/biome/BiomeCaatinga.java
+++ b/src/main/java/net/minecraft/core/world/biome/BiomeCaatinga.java
@@ -24,12 +24,12 @@ public class BiomeCaatinga extends Biome
     @Override
     public WorldFeature getRandomWorldGenForTrees(Random random)
     {
-        if(random.nextInt(5) != 0)
+        if(random.nextInt(3) != 0)
         {
-            return new WorldFeatureTreeShrub(Block.leavesCaatinga.id, Block.logOak.id);
+            return new WorldFeatureTreeShrub(Block.leavesThorn.id, Block.logOak.id);
         } else
         {
-            return new WorldFeatureTreeThorn(2, Block.logThorn.id, 0, Block.leavesCaatinga.id, 0);
+            return new WorldFeatureTreeThorn(4, Block.logThorn.id, 0, Block.leavesThorn.id, 0);
         }
     }
 }
diff --git a/src/main/java/net/minecraft/core/world/biome/BiomeDesert.java b/src/main/java/net/minecraft/core/world/biome/BiomeDesert.java
new file mode 100644
index 000000000..53940e9a1
--- /dev/null
+++ b/src/main/java/net/minecraft/core/world/biome/BiomeDesert.java
@@ -0,0 +1,23 @@
+package net.minecraft.core.world.biome;
+
+import net.minecraft.core.block.Block;
+import net.minecraft.core.world.generate.feature.WorldFeature;
+import net.minecraft.core.world.generate.feature.tree.WorldFeatureTree;
+import net.minecraft.core.world.generate.feature.tree.WorldFeatureTreePalm;
+import net.minecraft.core.world.generate.feature.tree.WorldFeatureTreeShrub;
+
+import java.util.Random;
+
+public class BiomeDesert extends Biome
+{
+
+    public BiomeDesert(String key)
+    {
+        super(key);
+    }
+    @Override
+    public WorldFeature getRandomWorldGenForTrees(Random random) {
+
+        return new WorldFeatureTreePalm(Block.logPalm, Block.leavesPalm, random.nextInt(10) == 0, false);
+    }
+}
diff --git a/src/main/java/net/minecraft/core/world/biome/Biomes.java b/src/main/java/net/minecraft/core/world/biome/Biomes.java
index 450145efe..4c8e67595 100644
--- a/src/main/java/net/minecraft/core/world/biome/Biomes.java
+++ b/src/main/java/net/minecraft/core/world/biome/Biomes.java
@@ -16,7 +16,7 @@ public class Biomes
     public static final Biome OVERWORLD_SHRUBLAND = register("minecraft:overworld.shrubland", new BiomeShrubland("shrubland").setColor(0xbaba38));
     public static final Biome OVERWORLD_TAIGA = register("minecraft:overworld.taiga", new BiomeTaiga("taiga").setColor(0x8abcff).setSurfaceSnow());
     public static final Biome OVERWORLD_BOREAL_FOREST = register("minecraft:overworld.boreal_forest", new BiomeBorealForest("boreal_forest").setColor(0x148564));
-    public static final Biome OVERWORLD_DESERT = register("minecraft:overworld.desert", new Biome("desert").setColor(0xEDE26F).setBlockedWeathers(Weather.overworldRain, Weather.overworldSnow, Weather.overworldStorm).setTopBlock(Block.sand.id).setFillerBlock(Block.sand.id));
+    public static final Biome OVERWORLD_DESERT = register("minecraft:overworld.desert", new BiomeDesert("desert").setColor(0xEDE26F).setBlockedWeathers(Weather.overworldRain, Weather.overworldSnow, Weather.overworldStorm).setTopBlock(Block.sand.id).setFillerBlock(Block.sand.id));
     public static final Biome OVERWORLD_PLAINS = register("minecraft:overworld.plains", new BiomePlains("plains").setColor(0xA3C649));
     public static final Biome OVERWORLD_GLACIER = register("minecraft:overworld.glacier", new Biome("glacier").setColor(0xcbf6ff).setSurfaceSnow().setTopBlock(Block.blockSnow.id).setFillerBlock(Block.blockSnow.id));
     public static final Biome OVERWORLD_TUNDRA = register("minecraft:overworld.tundra", new Biome("tundra").setColor(0x57e0ff).setSurfaceSnow());
@@ -28,8 +28,8 @@ public class Biomes
     public static final Biome OVERWORLD_HELL = register("minecraft:overworld.hell", new Biome("hell").setColor(0xD96223).setTopBlock(Block.dirtScorched.id).setTopBlock(Block.dirtScorched.id));
     public static final Biome OVERWORLD_SWAMPLAND_MUDDY = register("minecraft:overworld.swampland.muddy", new BiomeSwamp("swampland.muddy").setColor(0x522700));
     public static final Biome OVERWORLD_OUTBACK_GRASSY = register("minecraft:overworld.outback.grassy", new BiomeOutback("outback.grassy").setColor(0xf09037).setBlockedWeathers(Weather.overworldSnow).setTopBlock(Block.grassScorched.id).setFillerBlock(Block.dirtScorched.id));
-    public static final Biome OVERWORLD_CAATINGA = register("minecraft:overworld.caatinga", new BiomeCaatinga("caatinga").setColor(0xdecda6).setTopBlock(Block.mudBaked.id).setFillerBlock(Block.mudBaked.id).setBlockedWeathers(Weather.overworldSnow));
-    public static final Biome OVERWORLD_CAATINGA_PLAINS = register("minecraft:overworld.caatinga.plains", new Biome("caatinga.plains").setColor(0xa19477).setTopBlock(Block.mudBaked.id).setFillerBlock(Block.mudBaked.id).setBlockedWeathers(Weather.overworldSnow));
+    public static final Biome OVERWORLD_CAATINGA = register("minecraft:overworld.caatinga", new BiomeCaatinga("caatinga").setColor(0xdecda6).setTopBlock(Block.grass.id).setFillerBlock(Block.dirt.id).setBlockedWeathers(Weather.overworldSnow));
+    public static final Biome OVERWORLD_CAATINGA_PLAINS = register("minecraft:overworld.caatinga.plains", new Biome("caatinga.plains").setColor(0xa19477).setTopBlock(Block.grass.id).setFillerBlock(Block.dirt.id).setBlockedWeathers(Weather.overworldSnow));
     public static final Biome OVERWORLD_FOREST_DRY = register("minecraft:overworld.forest.dry", new BiomeDryForest("forest.dry").setColor(0x85c472));
 
     public static Biome register(String key, Biome biome)
diff --git a/src/main/java/net/minecraft/core/world/biome/provider/BiomeProviderOverworld.java b/src/main/java/net/minecraft/core/world/biome/provider/BiomeProviderOverworld.java
index b836ee2f6..751cf0cbf 100644
--- a/src/main/java/net/minecraft/core/world/biome/provider/BiomeProviderOverworld.java
+++ b/src/main/java/net/minecraft/core/world/biome/provider/BiomeProviderOverworld.java
@@ -367,12 +367,6 @@ public final class BiomeProviderOverworld
         brm.addRange(Biomes.OVERWORLD_DESERT,
                 new BiomeRange(0.95, 1.0, 0.0, 0.1, 0.0, 1.0, 0.0, 1.0)
         );
-        brm.addRange(Biomes.OVERWORLD_OUTBACK,
-                new BiomeRange(0.75, 0.95, 0.0, 0.1, 0.0, 1.0, 0.15, 1.0)
-        );
-       brm.addRange(Biomes.OVERWORLD_OUTBACK_GRASSY,
-               new BiomeRange(0.75, 0.95, 0.0, 0.1, 0.0, 1.0, 0.0, 0.25)
-        );
 
         brm.addRange(Biomes.OVERWORLD_SEASONAL_FOREST,
                 new BiomeRange(0.5, 0.75, 0.4, 1.0, 0.0, 1.0, 0.0, 1.0)
@@ -385,16 +379,19 @@ public final class BiomeProviderOverworld
                 new BiomeRange(0.95, 1.0, 0.4, 0.85, 0.0, 1.0, 0.0, 1)
         );
         brm.addRange(Biomes.OVERWORLD_FOREST_DRY,
-                new BiomeRange(0.75, 0.95, 0.2, 0.4, 0.0, 1.0, 0.0, 0.95)
+                new BiomeRange(0.75, 1.0, 0.1, 0.4, 0.0, 1.0, 0.0, 1.0)
         );
-        brm.addRange(Biomes.OVERWORLD_CAATINGA,
-                new BiomeRange(0.95, 1.0, 0.1, 0.4, 0.0, 1.0, 0.0, 0.75)
+        brm.addRange(Biomes.OVERWORLD_OUTBACK,
+                new BiomeRange(0.98, 1.0, 0.1, 0.4, 0.0, 1.0, 0.0, 0.75)
         );
-        brm.addRange(Biomes.OVERWORLD_CAATINGA_PLAINS,
-                new BiomeRange(0.95, 1.0, 0.1, 0.4, 0.0, 1.0, 0.75, 1.0)
+        brm.addRange(Biomes.OVERWORLD_OUTBACK_GRASSY,
+                new BiomeRange(0.98, 1.0, 0.1, 0.4, 0.0, 1.0, 0.75, 1.0)
         );
         brm.addRange(Biomes.OVERWORLD_CAATINGA,
-                new BiomeRange(0.95, 1.0, 0.2, 0.4, 0.0, 1.0, 0.0, 1.0)
+                new BiomeRange(0.75, 0.95, 0.0, 0.1, 0.0, 1.0, 0.15, 1.0)
+        );
+        brm.addRange(Biomes.OVERWORLD_CAATINGA_PLAINS,
+                new BiomeRange(0.75, 0.95, 0.0, 0.1, 0.0, 1.0, 0.0, 0.25)
         );
         brm.addRange(Biomes.OVERWORLD_RAINFOREST,
                 new BiomeRange(0.95, 1.0, 0.85, 1.0, 0.0, 1.0, 0.0, 1.0)
diff --git a/src/main/java/net/minecraft/core/world/generate/chunk/perlin/overworld/ChunkDecoratorOverworld.java b/src/main/java/net/minecraft/core/world/generate/chunk/perlin/overworld/ChunkDecoratorOverworld.java
index 9df5b50f4..4ba3aaaf4 100644
--- a/src/main/java/net/minecraft/core/world/generate/chunk/perlin/overworld/ChunkDecoratorOverworld.java
+++ b/src/main/java/net/minecraft/core/world/generate/chunk/perlin/overworld/ChunkDecoratorOverworld.java
@@ -1,6 +1,7 @@
 package net.minecraft.core.world.generate.chunk.perlin.overworld;
 
 import net.minecraft.core.block.Block;
+import net.minecraft.core.block.BlockLeavesBase;
 import net.minecraft.core.block.BlockSand;
 import net.minecraft.core.block.material.Material;
 import net.minecraft.core.world.World;
@@ -235,7 +236,7 @@ public class ChunkDecoratorOverworld
             treeDensity += k4 + 5;
         }
         if (biome == Biomes.OVERWORLD_FOREST_DRY) {
-            treeDensity += k4;
+            treeDensity += k4 + 1;
         }
         if (biome == Biomes.OVERWORLD_BIRCH_FOREST) {
             treeDensity += k4 + 4;
@@ -258,8 +259,11 @@ public class ChunkDecoratorOverworld
         if (biome == Biomes.OVERWORLD_TUNDRA) {
             treeDensity -= 20;
         }
+        if (biome == Biomes.OVERWORLD_DESERT) {
+            treeDensity += k4;
+        }
         if (biome == Biomes.OVERWORLD_CAATINGA) {
-            treeDensity += k4 + 10;
+            treeDensity += k4 + 4;
         }
         if (biome == Biomes.OVERWORLD_SWAMPLAND) {
             treeDensity += k4 + 4;
@@ -268,12 +272,17 @@ public class ChunkDecoratorOverworld
             treeDensity += k4;
         }
         if (treeDensityOverride != -1) treeDensity = treeDensityOverride;
-        for (int i11 = 0; i11 < treeDensity; i11++) {
-            int l13 = x + rand.nextInt(16) + 8;
-            int j14 = z + rand.nextInt(16) + 8;
-            WorldFeature feature = biome.getRandomWorldGenForTrees(rand);
-            feature.func_517_a(1.0D, 1.0D, 1.0D);
-            feature.generate(world, rand, l13, world.getHeightValue(l13, j14), j14);
+        try {
+        	BlockLeavesBase.enableDecay = false;
+            for (int i11 = 0; i11 < treeDensity; i11++) {
+                int l13 = x + rand.nextInt(16) + 8;
+                int j14 = z + rand.nextInt(16) + 8;
+                WorldFeature feature = biome.getRandomWorldGenForTrees(rand);
+                feature.func_517_a(1.0D, 1.0D, 1.0D);
+                feature.generate(world, rand, l13, world.getHeightValue(l13, j14), j14);
+            }
+        }finally {
+        	BlockLeavesBase.enableDecay = true;
         }
         byte byteReeds = 0;
         if (biome == Biomes.OVERWORLD_RAINFOREST) {
diff --git a/src/main/java/net/minecraft/core/world/generate/feature/tree/WorldFeatureTreePalm.java b/src/main/java/net/minecraft/core/world/generate/feature/tree/WorldFeatureTreePalm.java
index 317bc2c8e..5de93e4ce 100644
--- a/src/main/java/net/minecraft/core/world/generate/feature/tree/WorldFeatureTreePalm.java
+++ b/src/main/java/net/minecraft/core/world/generate/feature/tree/WorldFeatureTreePalm.java
@@ -7,6 +7,9 @@ import java.util.Random;
 import java.util.Set;
 
 import net.minecraft.core.block.Block;
+import net.minecraft.core.block.BlockFlower;
+import net.minecraft.core.block.BlockLeavesBase;
+import net.minecraft.core.block.BlockLog;
 import net.minecraft.core.block.tag.BlockTags;
 import net.minecraft.core.util.helper.Direction;
 import net.minecraft.core.util.helper.MathHelper;
@@ -44,6 +47,8 @@ public class WorldFeatureTreePalm extends WorldFeature {
 	 */
 	protected float[] leafAnglesUpper;
 	
+	protected int logHeight;
+	
 	protected Set<Integer> intSet = new HashSet<>();
 	protected List<Integer> intList = new ArrayList<>();
 	
@@ -61,23 +66,23 @@ public class WorldFeatureTreePalm extends WorldFeature {
 		this.basePos = new ChunkPosition(x, y, z);
 		
 		int blockBelow = world.getBlockId(x, y - 1, z);
-		if(!canGrowOnThisBlock(blockBelow)) {
+		if(!canGrowOnThisBlock(blockBelow) || !(blockBelow == Block.sand.id && waterNearby(x, y, z))) {
+			return false;
+		}
+		if(!generateTrunkIfPossible()) {
 			return false;
 		}
-		
-		// TODO Check if location is valid
 		
 		WorldFeatureTree.onTreeGrown(world, x, y, z);
 		
-		generateTrunk();
-		
 		calculateLeafAngles();
 		
 		generateLeaves();
 		return true;
 	}
 	
-	public void generateTrunk() {
+	public boolean generateTrunkIfPossible() {
+		// Setup values for trunk generation
 		int height;
 		if(big) {
 			height = 11 + random.nextInt(7);	
@@ -94,32 +99,112 @@ public class WorldFeatureTreePalm extends WorldFeature {
 		}
 		Direction direction = Direction.horizontalDirections[random.nextInt(4)];
 		
-		generateTrunk(height, angle, bend, direction);
+		return generateTrunkIfPossible(height, angle, bend, direction);
 	}
 	
-	public void generateTrunk(int height, float angle, float bend, Direction direction) {
-		int x = basePos.x;
-		int y = basePos.y;
-		int z = basePos.z;
+	public boolean generateTrunkIfPossible(int height, float angle, float bend, Direction direction) {
+		intList.clear();
+		intSet.clear();
 		
+		// Generate all log block positions
 		for(int i=0; i < height; i++) {
-			y = basePos.y + i;
-			
 			float yFactor = i / (float) height;
 			int offset = MathHelper.floor_double(Math.pow(yFactor, angle + 1.0f) * bend);
 			
-			x = basePos.x + direction.getOffsetX() * offset;
-			z = basePos.z + direction.getOffsetZ() * offset;
+			int offsetX = direction.getOffsetX() * offset;
+			int offsetY = i;
+			int offsetZ = direction.getOffsetZ() * offset;
+			
+			intList.add(encode(offsetX, offsetY, offsetZ));
+		}
+		
+		// Check if any blocks are in the way
+		int lastPossibleBlockIndex = intList.size() - 1;
+		for(int i=0; i < intList.size(); i++) {
+			int offset = intList.get(i);
+			int x = basePos.x + decodeX(offset);
+			int y = basePos.y + decodeY(offset);
+			int z = basePos.z + decodeZ(offset);
+			
+			if(!isClear(x, y, z)) {
+				lastPossibleBlockIndex = i - 1;
+				break;
+			}
+		}
+		
+		for(int i = lastPossibleBlockIndex; i >= 0; i--) {
+			int offset = intList.get(i);
+			int x = basePos.x + decodeX(offset);
+			int y = basePos.y + decodeY(offset);
+			int z = basePos.z + decodeZ(offset);
+			
+			if(isClearRange(x, y, z, 2, 2, 2)) {
+				break;
+			}
+			lastPossibleBlockIndex = i - 1;
+		}
+		
+		int minHeight = Math.min(6, height - 2);
+		if(lastPossibleBlockIndex < minHeight) {
+			return false;
+		}
+
+		int x = 0;
+		int y = 0;
+		int z = 0;
+		logHeight = lastPossibleBlockIndex + 1;
+		for(int i=0; i < logHeight; i++) {
+			int offset = intList.get(i);
+			x = basePos.x + decodeX(offset);
+			y = basePos.y + decodeY(offset);
+			z = basePos.z + decodeZ(offset);
 			
 			generateBlock(x, y, z, log);
 		}
 		
 		this.endPos = new ChunkPosition(x, y, z);
+		
+		return true;
+	}
+	
+	public boolean isClear(int x, int y, int z) {
+		int id = world.getBlockId(x, y, z);
+		if(id == 0) {
+			return true;
+		}
+		Block block = Block.getBlock(id);
+		
+		// TODO Create BlockTag and apply to all trees
+		if(block instanceof BlockLog) {
+			return true;
+		}
+		if(block instanceof BlockLeavesBase) {
+			return true;
+		}
+		if(block instanceof BlockFlower) {
+			return true;
+		}
+		return false;
+	}
+	
+	public boolean isClearRange(int x, int y, int z, int w, int h, int d) {
+		for(int i = -w; i <= w; i++) {
+			for(int j = -h; j <= h; j++) {
+				for(int k = -d; k <= d; k++) {
+					int x1 = x + i;
+					int y1 = y + j;
+					int z1 = z + k;
+					if(!isClear(x1, y1, z1)) {
+						return false;
+					}
+				}
+			}
+		}
+		return true;
 	}
 	
 	public void calculateLeafAngles() {
-		//int leafCount = random.nextInt(2) + 4;
-		int leafCount = 5;
+		int leafCount = 6;
 		float baseAngle = 360.0f / leafCount;
 		float offset = random.nextFloat() * baseAngle;
 		
@@ -146,7 +231,7 @@ public class WorldFeatureTreePalm extends WorldFeature {
 	}
 	
 	public void generateLeaves() {
-		float leafLength = big ? 5.0f : 4.0f;
+		float leafLength = logHeight >= 10 ? 5.0f : 4.0f;
 		
 		for(int i=0; i < leafAngles.length; i++) {
 			float angle = leafAngles[i];
@@ -222,6 +307,19 @@ public class WorldFeatureTreePalm extends WorldFeature {
 			}
 		}
 	}
+
+	private boolean waterNearby(int x, int y, int z){
+		int distance = 1;
+		for(int xi = x - distance; xi< x + distance; xi++){
+			for(int zi = z - distance; zi< z + distance; zi++){
+				Block blockAtRange = world.getBlock(xi, y-1, zi);
+				if(blockAtRange != null && blockAtRange.hasTag(BlockTags.IS_WATER)){
+					return true;
+				}
+			}
+		}
+		return false;
+	}
 	
 	public void generateBlock(int x, int y, int z, Block block) {
 		if(update) {
@@ -232,7 +330,7 @@ public class WorldFeatureTreePalm extends WorldFeature {
 	}
 	
 	public boolean canGrowOnThisBlock(int id) {
-		return Block.hasTag(id, BlockTags.GROWS_TREES) || id == Block.sand.id;
+		return Block.hasTag(id, BlockTags.GROWS_TREES);
 	}
 	
 	public static int encode(int x, int y, int z) {
diff --git a/src/main/java/net/minecraft/core/world/season/SeasonManagerCycle.java b/src/main/java/net/minecraft/core/world/season/SeasonManagerCycle.java
index d2ecf7cba..a4380a8b1 100644
--- a/src/main/java/net/minecraft/core/world/season/SeasonManagerCycle.java
+++ b/src/main/java/net/minecraft/core/world/season/SeasonManagerCycle.java
@@ -32,7 +32,7 @@ public final class SeasonManagerCycle
         return config;
     }
 
-    private int getSeasonLengthTicks(Season season)
+    public int getSeasonLengthTicks(Season season)
     {
         return config.getSeasonLength(season) * Global.DAY_LENGTH_TICKS;
     }
diff --git a/src/main/resources/assets/minecraft/textures/block/carved_permafrost.png b/src/main/resources/assets/minecraft/textures/block/carved_permafrost.png
new file mode 100644
index 000000000..eb686403a
Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/block/carved_permafrost.png differ
diff --git a/src/main/resources/assets/minecraft/textures/block/log_brazilwood_side.png b/src/main/resources/assets/minecraft/textures/block/log_thorn_side.png
similarity index 100%
rename from src/main/resources/assets/minecraft/textures/block/log_brazilwood_side.png
rename to src/main/resources/assets/minecraft/textures/block/log_thorn_side.png
diff --git a/src/main/resources/assets/minecraft/textures/block/log_brazilwood_top.png b/src/main/resources/assets/minecraft/textures/block/log_thorn_top.png
similarity index 100%
rename from src/main/resources/assets/minecraft/textures/block/log_brazilwood_top.png
rename to src/main/resources/assets/minecraft/textures/block/log_thorn_top.png
diff --git a/src/main/resources/assets/minecraft/textures/block/polished_permafrost_side.png b/src/main/resources/assets/minecraft/textures/block/polished_permafrost_side.png
new file mode 100644
index 000000000..9dc603c90
Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/block/polished_permafrost_side.png differ
diff --git a/src/main/resources/assets/minecraft/textures/block/polished_permafrost_top.png b/src/main/resources/assets/minecraft/textures/block/polished_permafrost_top.png
new file mode 100644
index 000000000..f105b69f0
Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/block/polished_permafrost_top.png differ
diff --git a/src/main/resources/assets/minecraft/textures/block/sapling_brazilwood.png b/src/main/resources/assets/minecraft/textures/block/sapling_thorn.png
similarity index 100%
rename from src/main/resources/assets/minecraft/textures/block/sapling_brazilwood.png
rename to src/main/resources/assets/minecraft/textures/block/sapling_thorn.png
diff --git a/src/main/resources/misc/grasscolor_fall.png b/src/main/resources/misc/grasscolor_fall.png
new file mode 100644
index 000000000..c2bb17620
Binary files /dev/null and b/src/main/resources/misc/grasscolor_fall.png differ
diff --git a/src/main/resources/misc/grasscolor_spring.png b/src/main/resources/misc/grasscolor_spring.png
new file mode 100644
index 000000000..68fc750c5
Binary files /dev/null and b/src/main/resources/misc/grasscolor_spring.png differ
diff --git a/src/main/resources/misc/grasscolor_winter.png b/src/main/resources/misc/grasscolor_winter.png
new file mode 100644
index 000000000..dad315d8c
Binary files /dev/null and b/src/main/resources/misc/grasscolor_winter.png differ
