diff --git a/TODO.txt b/TODO.txt
index 54cc6e2..89fc9a5 100644
--- a/TODO.txt
+++ b/TODO.txt
@@ -9,7 +9,7 @@ deco			No		Stone - Smooth + stairs + slabs
 							Limestone
 							Slate
 							Basalt
-deco			No		Wood - Doors + fences + chairs + tables + thrones
+deco			No		Wood - Doors + fences + chairs + thrones
 							Hevea
 							Bamboo
 -------------------------------------------------------------------------------------------------------
diff --git a/src/java/mmm/deco/DChair.java b/src/java/mmm/deco/DChair.java
index 810cbcf..0168cb7 100644
--- a/src/java/mmm/deco/DChair.java
+++ b/src/java/mmm/deco/DChair.java
@@ -52,17 +52,17 @@ public class DChair
 	private static final AxisAlignedBB COLLISION_TOP_SOUTH = UMaths.makeBlockAABB( 2 , 8 , 12 , 14 , 16 , 14 );
 	private static final AxisAlignedBB COLLISION_TOP_WEST = UMaths.makeBlockAABB( 2 , 8 , 2 , 4 , 16 , 14 );
 
-	public final E_DWoodType type;
+	public final DWoodType type;
 
 
-	public DChair( final E_DWoodType type )
+	public DChair( final DWoodType type )
 	{
-		super( Material.WOOD , type.mapColor );
+		super( Material.WOOD , type.getMapColor() );
 		this.type = type;
 		this.setDefaultState( this.blockState.getBaseState( ).withProperty( DChair.FACING , EnumFacing.NORTH ) );
 
 		this.setCreativeTab( CreativeTabs.DECORATIONS );
-		URegistry.setIdentifiers( this , "deco" , "chair" , type.suffix );
+		URegistry.setIdentifiers( this , "deco" , "chair" , type.getSuffix() );
 
 		this.lightOpacity = 0;
 		this.translucent = false;
@@ -126,7 +126,7 @@ public class DChair
 				"B " , //
 				"BB" , //
 				"SS" , //
-				'B' , new ItemStack( this.type.slab , 1 , this.type.metaData ) , //
+				'B' , new ItemStack( this.type.getSlabBlock() , 1 , this.type.getMetaData() ) , //
 				'S' , Items.STICK //
 		);
 	}
diff --git a/src/java/mmm/deco/DTable.java b/src/java/mmm/deco/DTable.java
index 9fc8a7a..a04ecc3 100644
--- a/src/java/mmm/deco/DTable.java
+++ b/src/java/mmm/deco/DTable.java
@@ -58,12 +58,12 @@ public class DTable
 			DTable.SW , DTable.WEST , DTable.NW//
 	};
 
-	public final E_DWoodType type;
+	public final DWoodType type;
 
 
-	public DTable( final E_DWoodType type )
+	public DTable( final DWoodType type )
 	{
-		super( Material.WOOD , type.mapColor );
+		super( Material.WOOD , type.getMapColor() );
 		this.type = type;
 
 		this.setDefaultState( this.blockState.getBaseState( )//
@@ -77,7 +77,7 @@ public class DTable
 				.withProperty( DTable.SE , Boolean.valueOf( false ) ) );
 
 		this.setCreativeTab( CreativeTabs.DECORATIONS );
-		URegistry.setIdentifiers( this , "deco" , "table" , type.suffix );
+		URegistry.setIdentifiers( this , "deco" , "table" , type.getSuffix() );
 
 		this.lightOpacity = 0;
 		this.translucent = false;
@@ -97,7 +97,7 @@ public class DTable
 		GameRegistry.addShapedRecipe( new ItemStack( this ) , //
 				"BBB" , //
 				"S S" , //
-				'B' , new ItemStack( this.type.block , 1 , this.type.metaData ) , //
+				'B' , new ItemStack( this.type.getPlanksBlock() , 1 , this.type.getMetaData() ) , //
 				'S' , Items.STICK //
 		);
 	}
diff --git a/src/java/mmm/deco/DThrone.java b/src/java/mmm/deco/DThrone.java
index b549a02..55e65da 100644
--- a/src/java/mmm/deco/DThrone.java
+++ b/src/java/mmm/deco/DThrone.java
@@ -15,11 +15,11 @@ public class DThrone
 	public final Item ITEM;
 
 
-	public DThrone( final E_DWoodType woodType )
+	public DThrone( final DWoodType woodType )
 	{
 		URegistry.addBlock( this.BOTTOM = new DThroneBlock( this , woodType , false ) , null );
 		URegistry.addBlock( this.TOP = new DThroneBlock( this , woodType , true ) , null );
-		this.ITEM = new UBlockItemWithVariants( this.BOTTOM , "deco" , "throne" , woodType.suffix ) //
+		this.ITEM = new UBlockItemWithVariants( this.BOTTOM , "deco" , "throne" , woodType.getSuffix() ) //
 				.useColorVariants( ) //
 				.register( );
 	}
diff --git a/src/java/mmm/deco/DThroneBlock.java b/src/java/mmm/deco/DThroneBlock.java
index a5e5da1..97b3b5c 100644
--- a/src/java/mmm/deco/DThroneBlock.java
+++ b/src/java/mmm/deco/DThroneBlock.java
@@ -65,12 +65,12 @@ public class DThroneBlock
 		COLOR = PropertyEnum.< EnumDyeColor > create( "color" , EnumDyeColor.class );
 	}
 
-	public final E_DWoodType woodType;
+	public final DWoodType woodType;
 	public final DThrone parts;
 	public final boolean isTop;
 
 
-	public DThroneBlock( final DThrone throne , final E_DWoodType woodType , final boolean isTop )
+	public DThroneBlock( final DThrone throne , final DWoodType woodType , final boolean isTop )
 	{
 		super( Material.WOOD );
 		this.woodType = woodType;
@@ -78,8 +78,8 @@ public class DThroneBlock
 		this.isTop = isTop;
 
 		this.setCreativeTab( CreativeTabs.DECORATIONS );
-		this.setRegistryName( "mmm:deco/throne/" + woodType.suffix + "/" + ( isTop ? "top" : "bottom" ) );
-		this.setUnlocalizedName( "mmm.deco.throne." + woodType.suffix );
+		this.setRegistryName( "mmm:deco/throne/" + woodType.getSuffix() + "/" + ( isTop ? "top" : "bottom" ) );
+		this.setUnlocalizedName( "mmm.deco.throne." + woodType.getSuffix() );
 
 		if ( this.isTop ) {
 			this.setDefaultState( this.blockState.getBaseState( ) //
@@ -392,7 +392,7 @@ public class DThroneBlock
 					"GWG" , //
 					"BBB" , //
 					'W' , new ItemStack( Blocks.WOOL , 1 , dyeColor.getMetadata( ) ) , //
-					'B' , new ItemStack( this.woodType.block , 1 , this.woodType.metaData ) , //
+					'B' , new ItemStack( this.woodType.getPlanksBlock() , 1 , this.woodType.getMetaData() ) , //
 					'G' , Items.GOLD_INGOT , //
 					'E' , Items.EMERALD //
 			);
diff --git a/src/java/mmm/deco/DWoodType.java b/src/java/mmm/deco/DWoodType.java
new file mode 100644
index 0000000..03c005d
--- /dev/null
+++ b/src/java/mmm/deco/DWoodType.java
@@ -0,0 +1,147 @@
+package mmm.deco;
+
+
+import mmm.Mmm;
+import mmm.materials.MTree;
+import mmm.materials.Materials;
+import net.minecraft.block.Block;
+import net.minecraft.block.BlockPlanks;
+import net.minecraft.block.material.MapColor;
+import net.minecraft.init.Blocks;
+import net.minecraft.util.ResourceLocation;
+
+
+
+public abstract class DWoodType
+{
+	public static final DWoodType OAK = new DWoodType.Vanilla( "oak" , BlockPlanks.EnumType.OAK );
+	public static final DWoodType BIRCH = new DWoodType.Vanilla( "birch" , BlockPlanks.EnumType.BIRCH );
+	public static final DWoodType SPRUCE = new DWoodType.Vanilla( "spruce" , BlockPlanks.EnumType.SPRUCE );
+	public static final DWoodType JUNGLE = new DWoodType.Vanilla( "jungle" , BlockPlanks.EnumType.JUNGLE );
+	public static final DWoodType DARK_OAK = new DWoodType.Vanilla( "dark_oak" , BlockPlanks.EnumType.DARK_OAK );
+	public static final DWoodType ACACIA = new DWoodType.Vanilla( "acacia" , BlockPlanks.EnumType.ACACIA );
+
+	public static final DWoodType HEVEA = new DWoodType.MmmTree( Materials.TREE.HEVEA );
+	public static final DWoodType BAMBOO = new DWoodType.MmmTree( Materials.TREE.BAMBOO );
+
+
+	public abstract String getSuffix( );
+
+
+	public abstract MapColor getMapColor( );
+
+
+	public abstract Block getPlanksBlock( );
+
+
+	public abstract Block getSlabBlock( );
+
+
+	public abstract int getMetaData( );
+
+	// *******************************************************************************************
+	// * VANILLA WOOD SUPPORT ********************************************************************
+	// *******************************************************************************************
+
+	public static final class Vanilla
+			extends DWoodType
+	{
+		private final String suffix;
+		private final BlockPlanks.EnumType type;
+
+
+		private Vanilla( final String suffix , final BlockPlanks.EnumType type )
+		{
+			this.suffix = suffix;
+			this.type = type;
+		}
+
+
+		@Override
+		public String getSuffix( )
+		{
+			return this.suffix;
+		}
+
+
+		@Override
+		public MapColor getMapColor( )
+		{
+			return this.type.getMapColor( );
+		}
+
+
+		@Override
+		public Block getPlanksBlock( )
+		{
+			return Blocks.PLANKS;
+		}
+
+
+		@Override
+		public Block getSlabBlock( )
+		{
+			return Blocks.WOODEN_SLAB;
+		}
+
+
+		@Override
+		public int getMetaData( )
+		{
+			return this.type.getMetadata( );
+		}
+	}
+
+	// *******************************************************************************************
+	// * MMM WOOD SUPPORT ************************************************************************
+	// *******************************************************************************************
+
+	public static final class MmmTree
+			extends DWoodType
+	{
+		private final MTree materials;
+		private final ResourceLocation slabName;
+
+
+		private MmmTree( final MTree materials )
+		{
+			this.materials = materials;
+			this.slabName = new ResourceLocation( Mmm.ID , "deco/slabs/" + materials.NAME );
+		}
+
+
+		@Override
+		public String getSuffix( )
+		{
+			return this.materials.NAME;
+		}
+
+
+		@Override
+		public MapColor getMapColor( )
+		{
+			return this.materials.getPlankColor( );
+		}
+
+
+		@Override
+		public Block getPlanksBlock( )
+		{
+			return this.materials.PLANKS;
+		}
+
+
+		@Override
+		public Block getSlabBlock( )
+		{
+			return Block.REGISTRY.getObject( this.slabName );
+		}
+
+
+		@Override
+		public int getMetaData( )
+		{
+			return 0;
+		}
+	}
+}
\ No newline at end of file
diff --git a/src/java/mmm/deco/DecorativeBlocks.java b/src/java/mmm/deco/DecorativeBlocks.java
index 5b636fa..3090f4a 100644
--- a/src/java/mmm/deco/DecorativeBlocks.java
+++ b/src/java/mmm/deco/DecorativeBlocks.java
@@ -27,6 +27,8 @@ public class DecorativeBlocks
 	public static final DTable TABLE_JUNGLE;
 	public static final DTable TABLE_DARK_OAK;
 	public static final DTable TABLE_ACACIA;
+	public static final DTable TABLE_HEVEA;
+	public static final DTable TABLE_BAMBOO;
 
 	public static final DChair CHAIR_OAK;
 	public static final DChair CHAIR_BIRCH;
@@ -62,28 +64,30 @@ public class DecorativeBlocks
 		SLAB_BAMBOO = DSlab.fromWood( Materials.TREE.BAMBOO );
 
 		// Tables
-		URegistry.addBlock( TABLE_OAK = new DTable( E_DWoodType.OAK ) );
-		URegistry.addBlock( TABLE_BIRCH = new DTable( E_DWoodType.BIRCH ) );
-		URegistry.addBlock( TABLE_SPRUCE = new DTable( E_DWoodType.SPRUCE ) );
-		URegistry.addBlock( TABLE_JUNGLE = new DTable( E_DWoodType.JUNGLE ) );
-		URegistry.addBlock( TABLE_DARK_OAK = new DTable( E_DWoodType.DARK_OAK ) );
-		URegistry.addBlock( TABLE_ACACIA = new DTable( E_DWoodType.ACACIA ) );
+		URegistry.addBlock( TABLE_OAK = new DTable( DWoodType.OAK ) );
+		URegistry.addBlock( TABLE_BIRCH = new DTable( DWoodType.BIRCH ) );
+		URegistry.addBlock( TABLE_SPRUCE = new DTable( DWoodType.SPRUCE ) );
+		URegistry.addBlock( TABLE_JUNGLE = new DTable( DWoodType.JUNGLE ) );
+		URegistry.addBlock( TABLE_DARK_OAK = new DTable( DWoodType.DARK_OAK ) );
+		URegistry.addBlock( TABLE_ACACIA = new DTable( DWoodType.ACACIA ) );
+		URegistry.addBlock( TABLE_HEVEA = new DTable( DWoodType.HEVEA ) );
+		URegistry.addBlock( TABLE_BAMBOO = new DTable( DWoodType.BAMBOO ) );
 
 		// Chairs
-		URegistry.addBlock( CHAIR_OAK = new DChair( E_DWoodType.OAK ) );
-		URegistry.addBlock( CHAIR_BIRCH = new DChair( E_DWoodType.BIRCH ) );
-		URegistry.addBlock( CHAIR_SPRUCE = new DChair( E_DWoodType.SPRUCE ) );
-		URegistry.addBlock( CHAIR_JUNGLE = new DChair( E_DWoodType.JUNGLE ) );
-		URegistry.addBlock( CHAIR_DARK_OAK = new DChair( E_DWoodType.DARK_OAK ) );
-		URegistry.addBlock( CHAIR_ACACIA = new DChair( E_DWoodType.ACACIA ) );
+		URegistry.addBlock( CHAIR_OAK = new DChair( DWoodType.OAK ) );
+		URegistry.addBlock( CHAIR_BIRCH = new DChair( DWoodType.BIRCH ) );
+		URegistry.addBlock( CHAIR_SPRUCE = new DChair( DWoodType.SPRUCE ) );
+		URegistry.addBlock( CHAIR_JUNGLE = new DChair( DWoodType.JUNGLE ) );
+		URegistry.addBlock( CHAIR_DARK_OAK = new DChair( DWoodType.DARK_OAK ) );
+		URegistry.addBlock( CHAIR_ACACIA = new DChair( DWoodType.ACACIA ) );
 
 		// Thrones
-		THRONE_OAK = new DThrone( E_DWoodType.OAK );
-		THRONE_BIRCH = new DThrone( E_DWoodType.BIRCH );
-		THRONE_SPRUCE = new DThrone( E_DWoodType.SPRUCE );
-		THRONE_JUNGLE = new DThrone( E_DWoodType.JUNGLE );
-		THRONE_DARK_OAK = new DThrone( E_DWoodType.DARK_OAK );
-		THRONE_ACACIA = new DThrone( E_DWoodType.ACACIA );
+		THRONE_OAK = new DThrone( DWoodType.OAK );
+		THRONE_BIRCH = new DThrone( DWoodType.BIRCH );
+		THRONE_SPRUCE = new DThrone( DWoodType.SPRUCE );
+		THRONE_JUNGLE = new DThrone( DWoodType.JUNGLE );
+		THRONE_DARK_OAK = new DThrone( DWoodType.DARK_OAK );
+		THRONE_ACACIA = new DThrone( DWoodType.ACACIA );
 	}
 
 
diff --git a/src/java/mmm/deco/E_DWoodType.java b/src/java/mmm/deco/E_DWoodType.java
deleted file mode 100644
index 8c48ea7..0000000
--- a/src/java/mmm/deco/E_DWoodType.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package mmm.deco;
-
-
-import net.minecraft.block.Block;
-import net.minecraft.block.BlockPlanks;
-import net.minecraft.block.material.MapColor;
-import net.minecraft.init.Blocks;
-
-
-
-public enum E_DWoodType {
-	OAK( "oak" , BlockPlanks.EnumType.OAK ) , //
-	BIRCH( "birch" , BlockPlanks.EnumType.BIRCH ) , //
-	SPRUCE( "spruce" , BlockPlanks.EnumType.SPRUCE ) , //
-	JUNGLE( "jungle" , BlockPlanks.EnumType.JUNGLE ) , //
-	DARK_OAK( "dark_oak" , BlockPlanks.EnumType.DARK_OAK ) , //
-	ACACIA( "acacia" , BlockPlanks.EnumType.ACACIA );
-
-	public final String suffix;
-	public final MapColor mapColor;
-	public final Block block;
-	public final Block slab;
-	public final int metaData;
-
-
-	private E_DWoodType( final String suffix , final BlockPlanks.EnumType planks )
-	{
-		this.suffix = suffix;
-		this.mapColor = planks.getMapColor( );
-		this.block = Blocks.PLANKS;
-		this.slab = Blocks.WOODEN_SLAB;
-		this.metaData = planks.getMetadata( );
-	}
-}
\ No newline at end of file
diff --git a/src/resources/assets/mmm/blockstates/deco/table/bamboo.json b/src/resources/assets/mmm/blockstates/deco/table/bamboo.json
new file mode 100644
index 0000000..8b72cf1
--- /dev/null
+++ b/src/resources/assets/mmm/blockstates/deco/table/bamboo.json
@@ -0,0 +1,144 @@
+{
+    "multipart": [
+    	{
+    		"apply": { "model": "mmm:deco/table/bamboo/top" }
+    	} ,
+
+    	{
+    		"when": { "OR": [
+    			{ "north": "false" , "west": "false" } ,
+    			{ "north": "true" , "west": "true", "nw": "false" }
+    		] } ,
+    		"apply": { "model": "mmm:deco/table/bamboo/leg" }
+    	} ,
+    	{
+    		"when": { "OR": [
+    			{ "north": "false" , "east": "false" } ,
+    			{ "north": "true" , "east": "true", "ne": "false" }
+    		] } ,
+    		"apply": { "model": "mmm:deco/table/bamboo/leg", "y": 90 }
+    	} ,
+    	{
+    		"when": { "OR": [
+    			{ "south": "false" , "east": "false" } ,
+    			{ "south": "true" , "east": "true", "se": "false" }
+    		] } ,
+    		"apply": { "model": "mmm:deco/table/bamboo/leg", "y": 180 }
+    	} ,
+    	{
+    		"when": { "OR": [
+    			{ "south": "false" , "west": "false" } ,
+    			{ "south": "true" , "west": "true", "sw": "false" }
+    		] } ,
+    		"apply": { "model": "mmm:deco/table/bamboo/leg", "y": 270 }
+    	} ,
+
+    	{
+    		"when": { "OR": [
+    			{ "north": "false" } ,
+    			{ "west": "false" } ,
+    			{ "nw": "false" }
+    		] } ,
+    		"apply": { "model": "mmm:deco/table/bamboo/legtop" }
+    	} ,
+    	{
+    		"when": { "OR": [
+    			{ "north": "false" } ,
+    			{ "east": "false" } ,
+    			{ "ne": "false" }
+    		] } ,
+    		"apply": { "model": "mmm:deco/table/bamboo/legtop", "y": 90 }
+    	} ,
+    	{
+    		"when": { "OR": [
+    			{ "south": "false" } ,
+    			{ "east": "false" } ,
+    			{ "se": "false" }
+    		] } ,
+    		"apply": { "model": "mmm:deco/table/bamboo/legtop", "y": 180 }
+    	} ,
+    	{
+    		"when": { "OR": [
+    			{ "south": "false" } ,
+    			{ "west": "false" } ,
+    			{ "sw": "false" }
+    		] } ,
+    		"apply": { "model": "mmm:deco/table/bamboo/legtop", "y": 270 }
+    	} ,
+
+    	{
+    		"when": { "north": "false" } ,
+    		"apply": { "model": "mmm:deco/table/bamboo/support_main" }
+    	} ,
+    	{
+    		"when": { "east": "false" } ,
+    		"apply": { "model": "mmm:deco/table/bamboo/support_main" , "y": 90 }
+    	} ,
+    	{
+    		"when": { "south": "false" } ,
+    		"apply": { "model": "mmm:deco/table/bamboo/support_main" , "y": 180 }
+    	} ,
+    	{
+    		"when": { "west": "false" } ,
+    		"apply": { "model": "mmm:deco/table/bamboo/support_main" , "y": 270 }
+    	} ,
+
+    	{
+    		"when": { "OR" : [
+    			{ "north": "true" , "nw": false } ,
+    			{ "north": "true" , "west": false }
+    		] } ,
+    		"apply": { "model": "mmm:deco/table/bamboo/support_north" }
+    	} ,
+    	{
+    		"when": { "OR" : [
+    			{ "east": "true" , "ne": false } ,
+    			{ "east": "true" , "north": false }
+    		] } ,
+    		"apply": { "model": "mmm:deco/table/bamboo/support_north" , "y": 90 }
+    	} ,
+    	{
+    		"when": { "OR" : [
+    			{ "south": "true" , "se": false } ,
+    			{ "south": "true" , "east": false }
+    		] } ,
+    		"apply": { "model": "mmm:deco/table/bamboo/support_north" , "y": 180 }
+    	} ,
+    	{
+    		"when": { "OR" : [
+    			{ "west": "true" , "sw": false } ,
+    			{ "west": "true" , "south": false }
+    		] } ,
+    		"apply": { "model": "mmm:deco/table/bamboo/support_north" , "y": 270 }
+    	} ,
+
+    	{
+    		"when": { "OR" : [
+    			{ "west": "true" , "nw": false } ,
+    			{ "west": "true" , "north": false }
+    		] } ,
+    		"apply": { "model": "mmm:deco/table/bamboo/support_west" }
+    	} ,
+    	{
+    		"when": { "OR" : [
+    			{ "north": "true" , "ne": false } ,
+    			{ "north": "true" , "east": false }
+    		] } ,
+    		"apply": { "model": "mmm:deco/table/bamboo/support_west" , "y": 90 }
+    	} ,
+    	{
+    		"when": { "OR" : [
+    			{ "east": "true" , "se": false } ,
+    			{ "east": "true" , "south": false }
+    		] } ,
+    		"apply": { "model": "mmm:deco/table/bamboo/support_west" , "y": 180 }
+    	} ,
+    	{
+    		"when": { "OR" : [
+    			{ "south": "true" , "sw": false } ,
+    			{ "south": "true" , "west": false }
+    		] } ,
+    		"apply": { "model": "mmm:deco/table/bamboo/support_west" , "y": 270 }
+    	}
+    ]
+}
diff --git a/src/resources/assets/mmm/blockstates/deco/table/hevea.json b/src/resources/assets/mmm/blockstates/deco/table/hevea.json
new file mode 100644
index 0000000..e9fe4dd
--- /dev/null
+++ b/src/resources/assets/mmm/blockstates/deco/table/hevea.json
@@ -0,0 +1,144 @@
+{
+    "multipart": [
+    	{
+    		"apply": { "model": "mmm:deco/table/hevea/top" }
+    	} ,
+
+    	{
+    		"when": { "OR": [
+    			{ "north": "false" , "west": "false" } ,
+    			{ "north": "true" , "west": "true", "nw": "false" }
+    		] } ,
+    		"apply": { "model": "mmm:deco/table/hevea/leg" }
+    	} ,
+    	{
+    		"when": { "OR": [
+    			{ "north": "false" , "east": "false" } ,
+    			{ "north": "true" , "east": "true", "ne": "false" }
+    		] } ,
+    		"apply": { "model": "mmm:deco/table/hevea/leg", "y": 90 }
+    	} ,
+    	{
+    		"when": { "OR": [
+    			{ "south": "false" , "east": "false" } ,
+    			{ "south": "true" , "east": "true", "se": "false" }
+    		] } ,
+    		"apply": { "model": "mmm:deco/table/hevea/leg", "y": 180 }
+    	} ,
+    	{
+    		"when": { "OR": [
+    			{ "south": "false" , "west": "false" } ,
+    			{ "south": "true" , "west": "true", "sw": "false" }
+    		] } ,
+    		"apply": { "model": "mmm:deco/table/hevea/leg", "y": 270 }
+    	} ,
+
+    	{
+    		"when": { "OR": [
+    			{ "north": "false" } ,
+    			{ "west": "false" } ,
+    			{ "nw": "false" }
+    		] } ,
+    		"apply": { "model": "mmm:deco/table/hevea/legtop" }
+    	} ,
+    	{
+    		"when": { "OR": [
+    			{ "north": "false" } ,
+    			{ "east": "false" } ,
+    			{ "ne": "false" }
+    		] } ,
+    		"apply": { "model": "mmm:deco/table/hevea/legtop", "y": 90 }
+    	} ,
+    	{
+    		"when": { "OR": [
+    			{ "south": "false" } ,
+    			{ "east": "false" } ,
+    			{ "se": "false" }
+    		] } ,
+    		"apply": { "model": "mmm:deco/table/hevea/legtop", "y": 180 }
+    	} ,
+    	{
+    		"when": { "OR": [
+    			{ "south": "false" } ,
+    			{ "west": "false" } ,
+    			{ "sw": "false" }
+    		] } ,
+    		"apply": { "model": "mmm:deco/table/hevea/legtop", "y": 270 }
+    	} ,
+
+    	{
+    		"when": { "north": "false" } ,
+    		"apply": { "model": "mmm:deco/table/hevea/support_main" }
+    	} ,
+    	{
+    		"when": { "east": "false" } ,
+    		"apply": { "model": "mmm:deco/table/hevea/support_main" , "y": 90 }
+    	} ,
+    	{
+    		"when": { "south": "false" } ,
+    		"apply": { "model": "mmm:deco/table/hevea/support_main" , "y": 180 }
+    	} ,
+    	{
+    		"when": { "west": "false" } ,
+    		"apply": { "model": "mmm:deco/table/hevea/support_main" , "y": 270 }
+    	} ,
+
+    	{
+    		"when": { "OR" : [
+    			{ "north": "true" , "nw": false } ,
+    			{ "north": "true" , "west": false }
+    		] } ,
+    		"apply": { "model": "mmm:deco/table/hevea/support_north" }
+    	} ,
+    	{
+    		"when": { "OR" : [
+    			{ "east": "true" , "ne": false } ,
+    			{ "east": "true" , "north": false }
+    		] } ,
+    		"apply": { "model": "mmm:deco/table/hevea/support_north" , "y": 90 }
+    	} ,
+    	{
+    		"when": { "OR" : [
+    			{ "south": "true" , "se": false } ,
+    			{ "south": "true" , "east": false }
+    		] } ,
+    		"apply": { "model": "mmm:deco/table/hevea/support_north" , "y": 180 }
+    	} ,
+    	{
+    		"when": { "OR" : [
+    			{ "west": "true" , "sw": false } ,
+    			{ "west": "true" , "south": false }
+    		] } ,
+    		"apply": { "model": "mmm:deco/table/hevea/support_north" , "y": 270 }
+    	} ,
+
+    	{
+    		"when": { "OR" : [
+    			{ "west": "true" , "nw": false } ,
+    			{ "west": "true" , "north": false }
+    		] } ,
+    		"apply": { "model": "mmm:deco/table/hevea/support_west" }
+    	} ,
+    	{
+    		"when": { "OR" : [
+    			{ "north": "true" , "ne": false } ,
+    			{ "north": "true" , "east": false }
+    		] } ,
+    		"apply": { "model": "mmm:deco/table/hevea/support_west" , "y": 90 }
+    	} ,
+    	{
+    		"when": { "OR" : [
+    			{ "east": "true" , "se": false } ,
+    			{ "east": "true" , "south": false }
+    		] } ,
+    		"apply": { "model": "mmm:deco/table/hevea/support_west" , "y": 180 }
+    	} ,
+    	{
+    		"when": { "OR" : [
+    			{ "south": "true" , "sw": false } ,
+    			{ "south": "true" , "west": false }
+    		] } ,
+    		"apply": { "model": "mmm:deco/table/hevea/support_west" , "y": 270 }
+    	}
+    ]
+}
diff --git a/src/resources/assets/mmm/lang/en_US.lang b/src/resources/assets/mmm/lang/en_US.lang
index 5ec1c2d..22a3c76 100644
--- a/src/resources/assets/mmm/lang/en_US.lang
+++ b/src/resources/assets/mmm/lang/en_US.lang
@@ -151,6 +151,8 @@ tile.mmm.deco.table.spruce.name=Spruce Table
 tile.mmm.deco.table.acacia.name=Acacia Table
 tile.mmm.deco.table.jungle.name=Jungle Wood Table
 tile.mmm.deco.table.dark_oak.name=Dark Oak Table
+tile.mmm.deco.table.hevea.name=Hevea Table
+tile.mmm.deco.table.bamboo.name=Bamboo Table
 
 tile.mmm.deco.chair.oak.name=Oak Chair
 tile.mmm.deco.chair.birch.name=Birch Chair
diff --git a/src/resources/assets/mmm/models/block/deco/table/bamboo/leg.json b/src/resources/assets/mmm/models/block/deco/table/bamboo/leg.json
new file mode 100644
index 0000000..582f9cf
--- /dev/null
+++ b/src/resources/assets/mmm/models/block/deco/table/bamboo/leg.json
@@ -0,0 +1,19 @@
+{
+    "textures": {
+        "body": "mmm:blocks/materials/planks/bamboo",
+        "leg": "mmm:blocks/materials/log/side/bamboo"
+    } ,
+    "elements": [
+    	{
+    		"from": [ 1, 0, 1 ],
+    		"to": [ 3, 12, 3 ],
+             "faces": {
+                "down":  { "texture": "#leg", "cullface": "down" },
+                "north": { "texture": "#leg" , "uv": [ 4 , 0 , 12 , 16 ] },
+                "south": { "texture": "#leg" , "uv": [ 4 , 0 , 12 , 16 ] },
+                "west":  { "texture": "#leg" , "uv": [ 4 , 0 , 12 , 16 ] },
+                "east":  { "texture": "#leg" , "uv": [ 4 , 0 , 12 , 16 ] }
+            }
+    	}
+    ]
+}
diff --git a/src/resources/assets/mmm/models/block/deco/table/bamboo/legtop.json b/src/resources/assets/mmm/models/block/deco/table/bamboo/legtop.json
new file mode 100644
index 0000000..93a9fde
--- /dev/null
+++ b/src/resources/assets/mmm/models/block/deco/table/bamboo/legtop.json
@@ -0,0 +1,7 @@
+{
+	"parent": "mmm:block/deco/table/legtop",
+    "textures": {
+        "body": "mmm:blocks/materials/planks/bamboo",
+        "leg": "mmm:blocks/materials/log/side/bamboo"
+    }
+}
diff --git a/src/resources/assets/mmm/models/block/deco/table/bamboo/support_main.json b/src/resources/assets/mmm/models/block/deco/table/bamboo/support_main.json
new file mode 100644
index 0000000..d3f17f1
--- /dev/null
+++ b/src/resources/assets/mmm/models/block/deco/table/bamboo/support_main.json
@@ -0,0 +1,7 @@
+{
+	"parent": "mmm:block/deco/table/support_main",
+    "textures": {
+        "body": "mmm:blocks/materials/planks/bamboo",
+        "leg": "mmm:blocks/materials/log/side/bamboo"
+    }
+}
diff --git a/src/resources/assets/mmm/models/block/deco/table/bamboo/support_north.json b/src/resources/assets/mmm/models/block/deco/table/bamboo/support_north.json
new file mode 100644
index 0000000..c4395e6
--- /dev/null
+++ b/src/resources/assets/mmm/models/block/deco/table/bamboo/support_north.json
@@ -0,0 +1,7 @@
+{
+	"parent": "mmm:block/deco/table/support_north",
+    "textures": {
+        "body": "mmm:blocks/materials/planks/bamboo",
+        "leg": "mmm:blocks/materials/log/side/bamboo"
+    }
+}
diff --git a/src/resources/assets/mmm/models/block/deco/table/bamboo/support_west.json b/src/resources/assets/mmm/models/block/deco/table/bamboo/support_west.json
new file mode 100644
index 0000000..900d1d1
--- /dev/null
+++ b/src/resources/assets/mmm/models/block/deco/table/bamboo/support_west.json
@@ -0,0 +1,7 @@
+{
+	"parent": "mmm:block/deco/table/support_west",
+    "textures": {
+        "body": "mmm:blocks/materials/planks/bamboo",
+        "leg": "mmm:blocks/materials/log/side/bamboo"
+    }
+}
diff --git a/src/resources/assets/mmm/models/block/deco/table/bamboo/top.json b/src/resources/assets/mmm/models/block/deco/table/bamboo/top.json
new file mode 100644
index 0000000..9fd74ce
--- /dev/null
+++ b/src/resources/assets/mmm/models/block/deco/table/bamboo/top.json
@@ -0,0 +1,7 @@
+{
+	"parent": "mmm:block/deco/table/top",
+    "textures": {
+        "body": "mmm:blocks/materials/planks/bamboo",
+        "leg": "mmm:blocks/materials/log/side/bamboo"
+    }
+}
diff --git a/src/resources/assets/mmm/models/block/deco/table/hevea/leg.json b/src/resources/assets/mmm/models/block/deco/table/hevea/leg.json
new file mode 100644
index 0000000..14e7b96
--- /dev/null
+++ b/src/resources/assets/mmm/models/block/deco/table/hevea/leg.json
@@ -0,0 +1,7 @@
+{
+	"parent": "mmm:block/deco/table/leg",
+    "textures": {
+        "body": "mmm:blocks/materials/planks/hevea",
+        "leg": "mmm:blocks/materials/log/side/hevea"
+    }
+}
diff --git a/src/resources/assets/mmm/models/block/deco/table/hevea/legtop.json b/src/resources/assets/mmm/models/block/deco/table/hevea/legtop.json
new file mode 100644
index 0000000..3413402
--- /dev/null
+++ b/src/resources/assets/mmm/models/block/deco/table/hevea/legtop.json
@@ -0,0 +1,7 @@
+{
+	"parent": "mmm:block/deco/table/legtop",
+    "textures": {
+        "body": "mmm:blocks/materials/planks/hevea",
+        "leg": "mmm:blocks/materials/log/side/hevea"
+    }
+}
diff --git a/src/resources/assets/mmm/models/block/deco/table/hevea/support_main.json b/src/resources/assets/mmm/models/block/deco/table/hevea/support_main.json
new file mode 100644
index 0000000..6c72d1e
--- /dev/null
+++ b/src/resources/assets/mmm/models/block/deco/table/hevea/support_main.json
@@ -0,0 +1,7 @@
+{
+	"parent": "mmm:block/deco/table/support_main",
+    "textures": {
+        "body": "mmm:blocks/materials/planks/hevea",
+        "leg": "mmm:blocks/materials/log/side/hevea"
+    }
+}
diff --git a/src/resources/assets/mmm/models/block/deco/table/hevea/support_north.json b/src/resources/assets/mmm/models/block/deco/table/hevea/support_north.json
new file mode 100644
index 0000000..329179c
--- /dev/null
+++ b/src/resources/assets/mmm/models/block/deco/table/hevea/support_north.json
@@ -0,0 +1,7 @@
+{
+	"parent": "mmm:block/deco/table/support_north",
+    "textures": {
+        "body": "mmm:blocks/materials/planks/hevea",
+        "leg": "mmm:blocks/materials/log/side/hevea"
+    }
+}
diff --git a/src/resources/assets/mmm/models/block/deco/table/hevea/support_west.json b/src/resources/assets/mmm/models/block/deco/table/hevea/support_west.json
new file mode 100644
index 0000000..954cbd9
--- /dev/null
+++ b/src/resources/assets/mmm/models/block/deco/table/hevea/support_west.json
@@ -0,0 +1,7 @@
+{
+	"parent": "mmm:block/deco/table/support_west",
+    "textures": {
+        "body": "mmm:blocks/materials/planks/hevea",
+        "leg": "mmm:blocks/materials/log/side/hevea"
+    }
+}
diff --git a/src/resources/assets/mmm/models/block/deco/table/hevea/top.json b/src/resources/assets/mmm/models/block/deco/table/hevea/top.json
new file mode 100644
index 0000000..88bda3e
--- /dev/null
+++ b/src/resources/assets/mmm/models/block/deco/table/hevea/top.json
@@ -0,0 +1,7 @@
+{
+	"parent": "mmm:block/deco/table/top",
+    "textures": {
+        "body": "mmm:blocks/materials/planks/hevea",
+        "leg": "mmm:blocks/materials/log/side/hevea"
+    }
+}
diff --git a/src/resources/assets/mmm/models/item/deco/table/bamboo.json b/src/resources/assets/mmm/models/item/deco/table/bamboo.json
new file mode 100644
index 0000000..bec4125
--- /dev/null
+++ b/src/resources/assets/mmm/models/item/deco/table/bamboo.json
@@ -0,0 +1,110 @@
+{
+	"parent": "mmm:item/deco/table",
+    "textures": {
+        "body": "mmm:blocks/materials/planks/bamboo",
+        "legs": "mmm:blocks/materials/log/side/bamboo"
+    } ,
+    "elements": [
+    	{
+    		"from": [ 1, 0, 1 ],
+    		"to": [ 3, 12, 3 ],
+             "faces": {
+                "down":  { "texture": "#legs" , "cullface": "down" },
+                "up":    { "texture": "#legs" , "uv": [ 4 , 0 , 12 , 16 ]  },
+                "north": { "texture": "#legs" , "uv": [ 4 , 0 , 12 , 16 ]  },
+                "south": { "texture": "#legs" , "uv": [ 4 , 0 , 12 , 16 ]  },
+                "west":  { "texture": "#legs" , "uv": [ 4 , 0 , 12 , 16 ]  },
+                "east":  { "texture": "#legs" , "uv": [ 4 , 0 , 12 , 16 ]  }
+            }
+    	},
+    	{
+    		"from": [ 13, 0, 1 ],
+    		"to": [ 15, 12, 3 ],
+             "faces": {
+                "down":  { "texture": "#legs", "cullface": "down" },
+                "north": { "texture": "#legs" , "uv": [ 4 , 0 , 12 , 16 ]  },
+                "south": { "texture": "#legs" , "uv": [ 4 , 0 , 12 , 16 ]  },
+                "west":  { "texture": "#legs" , "uv": [ 4 , 0 , 12 , 16 ]  },
+                "east":  { "texture": "#legs" , "uv": [ 4 , 0 , 12 , 16 ]  }
+            }
+    	},
+    	{
+    		"from": [ 1, 0, 13 ],
+    		"to": [ 3, 12, 15 ],
+             "faces": {
+                "down":  { "texture": "#legs", "cullface": "down" },
+                "north": { "texture": "#legs" , "uv": [ 4 , 0 , 12 , 16 ]  },
+                "south": { "texture": "#legs" , "uv": [ 4 , 0 , 12 , 16 ]  },
+                "west":  { "texture": "#legs" , "uv": [ 4 , 0 , 12 , 16 ]  },
+                "east":  { "texture": "#legs" , "uv": [ 4 , 0 , 12 , 16 ]  }
+            }
+    	},
+    	{
+    		"from": [ 13, 0, 13 ],
+    		"to": [ 15, 12, 15 ],
+             "faces": {
+                "down":  { "texture": "#legs", "cullface": "down" },
+                "north": { "texture": "#legs" , "uv": [ 4 , 0 , 12 , 16 ]  },
+                "south": { "texture": "#legs" , "uv": [ 4 , 0 , 12 , 16 ]  },
+                "west":  { "texture": "#legs" , "uv": [ 4 , 0 , 12 , 16 ]  },
+                "east":  { "texture": "#legs" , "uv": [ 4 , 0 , 12 , 16 ]  }
+            }
+        },
+    	{
+    		"from": [ 1, 12, 1 ],
+    		"to": [ 3, 15, 15 ],
+             "faces": {
+                "down":  { "texture": "#body" },
+                "north": { "texture": "#body" },
+                "south": { "texture": "#body" },
+                "west":  { "texture": "#body" },
+                "east":  { "texture": "#body" }
+            }
+    	},
+    	{
+    		"from": [ 13, 12, 1 ],
+    		"to": [ 15, 15, 15 ],
+             "faces": {
+                "down":  { "texture": "#body" },
+                "north": { "texture": "#body" },
+                "south": { "texture": "#body" },
+                "west":  { "texture": "#body" },
+                "east":  { "texture": "#body" }
+            }
+    	},
+    	{
+    		"from": [ 3, 12, 1 ],
+    		"to": [ 13, 15, 3 ],
+             "faces": {
+                "down":  { "texture": "#body" },
+                "north": { "texture": "#body" },
+                "south": { "texture": "#body" },
+                "west":  { "texture": "#body" },
+                "east":  { "texture": "#body" }
+            }
+    	},
+    	{
+    		"from": [ 3, 12, 13 ],
+    		"to": [ 13, 15, 15 ],
+             "faces": {
+                "down":  { "texture": "#body" },
+                "north": { "texture": "#body" },
+                "south": { "texture": "#body" },
+                "west":  { "texture": "#body" },
+                "east":  { "texture": "#body" }
+            }
+    	},
+    	{
+    		"from": [ 0, 15, 0 ],
+    		"to": [ 16, 16, 16 ],
+             "faces": {
+                "down":  { "texture": "#body" },
+                "up":    { "texture": "#body", "cullface": "up" },
+                "north": { "texture": "#body", "cullface": "north" },
+                "south": { "texture": "#body", "cullface": "south" },
+                "west":  { "texture": "#body", "cullface": "west" },
+                "east":  { "texture": "#body", "cullface": "east" }
+            }
+    	}
+    ]
+}
diff --git a/src/resources/assets/mmm/models/item/deco/table/hevea.json b/src/resources/assets/mmm/models/item/deco/table/hevea.json
new file mode 100644
index 0000000..c88de07
--- /dev/null
+++ b/src/resources/assets/mmm/models/item/deco/table/hevea.json
@@ -0,0 +1,7 @@
+{
+	"parent": "mmm:item/deco/table",
+    "textures": {
+        "body": "mmm:blocks/materials/planks/hevea",
+        "legs": "mmm:blocks/materials/log/side/hevea"
+    }
+}