From aba216b08757073cc6c79d631f26345763388a63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emmanuel=20Beno=C3=AEt?= Date: Fri, 8 Jul 2016 22:51:54 +0200 Subject: [PATCH] Support for custom wood types + Log and plank blocks + Common recipes (log -> planks, charcoal, various wooden items from vanilla) --- src/java/mmm/materials/MWood.java | 220 ++++++++++++++++++++++++ src/java/mmm/materials/MWoodLog.java | 93 ++++++++++ src/java/mmm/materials/MWoodPlanks.java | 38 ++++ src/java/mmm/materials/Materials.java | 60 ++++--- src/java/mmm/tech/tools/TechTools.java | 12 +- 5 files changed, 391 insertions(+), 32 deletions(-) create mode 100644 src/java/mmm/materials/MWood.java create mode 100644 src/java/mmm/materials/MWoodLog.java create mode 100644 src/java/mmm/materials/MWoodPlanks.java diff --git a/src/java/mmm/materials/MWood.java b/src/java/mmm/materials/MWood.java new file mode 100644 index 0000000..3e5a243 --- /dev/null +++ b/src/java/mmm/materials/MWood.java @@ -0,0 +1,220 @@ +package mmm.materials; + + +import mmm.utils.I_URecipeRegistrar; +import mmm.utils.URegistry; +import net.minecraft.block.material.MapColor; +import net.minecraft.init.Blocks; +import net.minecraft.init.Items; +import net.minecraft.item.ItemStack; +import net.minecraftforge.fml.common.registry.GameRegistry; + + + +public class MWood + implements I_URecipeRegistrar +{ + + public final String NAME; + public final MWoodLog LOG; + public final MWoodPlanks PLANKS; + + private MapColor barkColor = MapColor.WOOD; + private MapColor plankColor = MapColor.WOOD; + private int baseFireEncouragement = 5; + private int baseFlammability = 5; + + + public MWood( final String name ) + { + this.NAME = name; + this.LOG = new MWoodLog( this ); + this.PLANKS = new MWoodPlanks( this ); + } + + + public MWood setBarkColor( final MapColor barkColor ) + { + this.barkColor = barkColor; + return this; + } + + + public MWood setPlankColor( final MapColor plankColor ) + { + this.plankColor = plankColor; + return this; + } + + + public MWood setBaseFireInfo( final int encouragement , final int flammability ) + { + this.baseFireEncouragement = encouragement; + this.baseFlammability = flammability; + return this; + } + + + public MWood register( ) + { + URegistry.addBlock( this.LOG ); + Blocks.FIRE.setFireInfo( this.LOG , this.baseFireEncouragement , this.baseFlammability ); + URegistry.addBlock( this.PLANKS ); + Blocks.FIRE.setFireInfo( this.PLANKS , this.baseFireEncouragement , this.baseFlammability * 4 ); + + URegistry.addRecipeRegistrar( this ); + return this; + } + + + public MapColor getBarkColor( ) + { + return this.barkColor; + } + + + public MapColor getPlankColor( ) + { + return this.plankColor; + } + + + @Override + public void registerRecipes( ) + { + // Log -> planks + GameRegistry.addShapelessRecipe( new ItemStack( this.PLANKS , 4 ) , new ItemStack( this.LOG ) ); + // Log -> charcoal + GameRegistry.addSmelting( this.LOG , new ItemStack( Items.COAL , 1 , 1 ) , 0.15f ); + + // Planks can be used to make... + // - crafting tables + GameRegistry.addShapedRecipe( new ItemStack( Blocks.CRAFTING_TABLE ) , // + "PP" , // + "PP" , // + 'P' , new ItemStack( this.PLANKS ) ); + // - chests + GameRegistry.addShapedRecipe( new ItemStack( Blocks.CHEST ) , // + "PPP" , // + "P P" , // + "PPP" , // + 'P' , new ItemStack( this.PLANKS ) ); + // - beds + GameRegistry.addShapedRecipe( new ItemStack( Items.BED ) , // + "WWW" , // + "PPP" , // + 'P' , new ItemStack( this.PLANKS ) , // + 'W' , new ItemStack( Blocks.WOOL , 1 , 32767 ) ); + // - sticks + GameRegistry.addShapedRecipe( new ItemStack( Items.STICK , 4 ) , // + "P" , // + "P" , // + 'P' , new ItemStack( this.PLANKS ) ); + // - trap doors + GameRegistry.addShapedRecipe( new ItemStack( Blocks.TRAPDOOR , 2 ) , // + "PPP" , // + "PPP" , // + 'P' , new ItemStack( this.PLANKS ) ); + // - pressure plates + GameRegistry.addShapedRecipe( new ItemStack( Blocks.WOODEN_PRESSURE_PLATE ) , // + "PP" , // + 'P' , new ItemStack( this.PLANKS ) ); + // - pistons + GameRegistry.addShapedRecipe( new ItemStack( Blocks.PISTON ) , // + "PPP" , // + "CIC" , // + "CRC" , // + 'P' , new ItemStack( this.PLANKS ) , // + 'C' , new ItemStack( Blocks.COBBLESTONE ) , // + 'I' , new ItemStack( Items.IRON_INGOT ) , // + 'R' , new ItemStack( Items.REDSTONE ) ); + // - note blocks + GameRegistry.addShapedRecipe( new ItemStack( Blocks.NOTEBLOCK ) , // + "PPP" , // + "PRP" , // + "PPP" , // + 'P' , new ItemStack( this.PLANKS ) , // + 'R' , new ItemStack( Items.REDSTONE ) ); + // - signs + GameRegistry.addShapedRecipe( new ItemStack( Items.SIGN , 3 ) , // + "PPP" , // + "PPP" , // + " S " , // + 'P' , new ItemStack( this.PLANKS ) , // + 'S' , new ItemStack( Items.STICK ) ); + // - bowls + GameRegistry.addShapedRecipe( new ItemStack( Items.BOWL , 4 ) , // + "P P" , // + " P " , // + 'P' , new ItemStack( this.PLANKS ) ); + // - jukeboxes + GameRegistry.addShapedRecipe( new ItemStack( Blocks.JUKEBOX ) , // + "PPP" , // + "PDP" , // + "PPP" , // + 'P' , new ItemStack( this.PLANKS ) , // + 'D' , new ItemStack( Items.DIAMOND ) ); + // - buttons + GameRegistry.addShapelessRecipe( new ItemStack( Blocks.WOODEN_BUTTON ) , // + new ItemStack( this.PLANKS ) ); + // - bookshelves + GameRegistry.addShapedRecipe( new ItemStack( Blocks.BOOKSHELF ) , // + "PPP" , // + "BBB" , // + "PPP" , // + 'P' , new ItemStack( this.PLANKS ) , // + 'B' , new ItemStack( Items.BOOK ) ); + // - tripwire hooks + GameRegistry.addShapedRecipe( new ItemStack( Blocks.TRIPWIRE_HOOK , 2 ) , // + "I" , // + "S" , // + "P" , // + 'P' , new ItemStack( this.PLANKS ) , // + 'I' , new ItemStack( Items.IRON_INGOT ) , // + 'S' , new ItemStack( Items.STICK ) ); + + // - swords + GameRegistry.addShapedRecipe( new ItemStack( Items.WOODEN_SWORD ) , // + "P" , // + "P" , // + "S" , // + 'P' , new ItemStack( this.PLANKS ) , // + 'S' , new ItemStack( Items.STICK ) ); + // - shovels + GameRegistry.addShapedRecipe( new ItemStack( Items.WOODEN_SHOVEL ) , // + "P" , // + "S" , // + "S" , // + 'P' , new ItemStack( this.PLANKS ) , // + 'S' , new ItemStack( Items.STICK ) ); + // - pickaxes + GameRegistry.addShapedRecipe( new ItemStack( Items.WOODEN_PICKAXE ) , // + "PPP" , // + " S " , // + " S " , // + 'P' , new ItemStack( this.PLANKS ) , // + 'S' , new ItemStack( Items.STICK ) ); + // - axes + GameRegistry.addShapedRecipe( new ItemStack( Items.WOODEN_AXE ) , // + "PP" , // + "PS" , // + " S" , // + 'P' , new ItemStack( this.PLANKS ) , // + 'S' , new ItemStack( Items.STICK ) ); + // - hoes + GameRegistry.addShapedRecipe( new ItemStack( Items.WOODEN_HOE ) , // + "PP" , // + " S" , // + " S" , // + 'P' , new ItemStack( this.PLANKS ) , // + 'S' , new ItemStack( Items.STICK ) ); + // - shields + GameRegistry.addShapedRecipe( new ItemStack( Items.SHIELD ) , // + "PIP" , // + "PPP" , // + " P " , // + 'P' , new ItemStack( this.PLANKS ) , // + 'I' , new ItemStack( Items.IRON_INGOT ) ); + } + +} diff --git a/src/java/mmm/materials/MWoodLog.java b/src/java/mmm/materials/MWoodLog.java new file mode 100644 index 0000000..ce8a817 --- /dev/null +++ b/src/java/mmm/materials/MWoodLog.java @@ -0,0 +1,93 @@ +package mmm.materials; + + +import mmm.utils.URegistry; +import net.minecraft.block.BlockLog; +import net.minecraft.block.material.MapColor; +import net.minecraft.block.properties.IProperty; +import net.minecraft.block.state.BlockStateContainer; +import net.minecraft.block.state.IBlockState; + + + +public class MWoodLog + extends BlockLog +{ + + private final MWood wood; + + + public MWoodLog( final MWood wood ) + { + super( ); + this.wood = wood; + + this.setHarvestLevel( "axe" , 0 ); + + this.setDefaultState( this.blockState.getBaseState( )// + .withProperty( BlockLog.LOG_AXIS , BlockLog.EnumAxis.Y ) ); + + URegistry.setIdentifiers( this , "materials" , "log" , wood.NAME ); + } + + + @Override + public MapColor getMapColor( final IBlockState state ) + { + if ( state.getValue( BlockLog.LOG_AXIS ) == BlockLog.EnumAxis.Y ) { + return this.wood.getPlankColor( ); + } + return this.wood.getBarkColor( ); + } + + + @Override + protected BlockStateContainer createBlockState( ) + { + return new BlockStateContainer( this , new IProperty< ? >[] { + BlockLog.LOG_AXIS + } ); + } + + + @Override + public IBlockState getStateFromMeta( final int meta ) + { + final IBlockState iblockstate = this.getDefaultState( ); + + switch ( meta & 12 ) { + case 0: + return iblockstate.withProperty( BlockLog.LOG_AXIS , BlockLog.EnumAxis.Y ); + + case 4: + return iblockstate.withProperty( BlockLog.LOG_AXIS , BlockLog.EnumAxis.X ); + + case 8: + return iblockstate.withProperty( BlockLog.LOG_AXIS , BlockLog.EnumAxis.Z ); + + default: + return iblockstate.withProperty( BlockLog.LOG_AXIS , BlockLog.EnumAxis.NONE ); + } + } + + + @Override + public int getMetaFromState( final IBlockState state ) + { + switch ( state.getValue( BlockLog.LOG_AXIS ) ) { + case X: + return 4; + + case Y: + return 0; + + case Z: + return 8; + + case NONE: + default: + return 12; + } + } + +} diff --git a/src/java/mmm/materials/MWoodPlanks.java b/src/java/mmm/materials/MWoodPlanks.java new file mode 100644 index 0000000..4ed71e6 --- /dev/null +++ b/src/java/mmm/materials/MWoodPlanks.java @@ -0,0 +1,38 @@ +package mmm.materials; + + +import mmm.utils.URegistry; +import net.minecraft.block.Block; +import net.minecraft.block.material.MapColor; +import net.minecraft.block.material.Material; +import net.minecraft.block.state.IBlockState; +import net.minecraft.creativetab.CreativeTabs; + + + +public class MWoodPlanks + extends Block +{ + + private MWood wood; + + + public MWoodPlanks( MWood wood ) + { + super( Material.WOOD ); + this.wood = wood; + + this.setCreativeTab( CreativeTabs.BUILDING_BLOCKS ); + this.setHarvestLevel( "axe" , 0 ); + + URegistry.setIdentifiers( this , "materials" , "planks" , wood.NAME ); + } + + + @Override + public MapColor getMapColor( final IBlockState state ) + { + return this.wood.getPlankColor( ); + } + +} diff --git a/src/java/mmm/materials/Materials.java b/src/java/mmm/materials/Materials.java index da5bec2..51c7c5f 100644 --- a/src/java/mmm/materials/Materials.java +++ b/src/java/mmm/materials/Materials.java @@ -34,16 +34,18 @@ public class Materials public static final MRock ROCK_SLATE; public static final MRock ROCK_BASALT; - public static final MMetal GOLD; - public static final MMetal IRON; - public static final MMetal COPPER; - public static final MMetal TIN; - public static final MMetal ZINC; + public static final MMetal METAL_GOLD; + public static final MMetal METAL_IRON; + public static final MMetal METAL_COPPER; + public static final MMetal METAL_TIN; + public static final MMetal METAL_ZINC; - public static final MMetal BRONZE; - public static final MMetal STEEL; + public static final MMetal METAL_BRONZE; + public static final MMetal METAL_STEEL; // public static final MMetal RED_COPPER; + public static final MWood WOOD_HEVEA; + public static final Item ITEM_SLAG; public static final Item ITEM_COKE; public static final Item ITEM_PIG_IRON_INGOT; @@ -76,21 +78,27 @@ public class Materials ROCK_BASALT = new MRock( "basalt" , MapColor.BLACK ); // Vanilla metals - GOLD = new MMetal( Blocks.GOLD_BLOCK , Items.GOLD_INGOT , Items.GOLD_NUGGET ); - IRON = new MMetal( Blocks.IRON_BLOCK , Items.IRON_INGOT , // + METAL_GOLD = new MMetal( Blocks.GOLD_BLOCK , Items.GOLD_INGOT , Items.GOLD_NUGGET ); + METAL_IRON = new MMetal( Blocks.IRON_BLOCK , Items.IRON_INGOT , // new MMetalItem( E_MMetalItemType.NUGGET , "iron" ) ); // Custom metals - pure - COPPER = new MMetal( "copper" , 0.4f , 4f , 1 , MapColor.DIRT ); - TIN = new MMetal( "tin" , 0.6f , 1f , 0 , MapColor.GRAY ); - ZINC = new MMetal( "zinc" , 0.4f , 4f , 1 , MapColor.GRAY ); + METAL_COPPER = new MMetal( "copper" , 0.4f , 4f , 1 , MapColor.DIRT ); + METAL_TIN = new MMetal( "tin" , 0.6f , 1f , 0 , MapColor.GRAY ); + METAL_ZINC = new MMetal( "zinc" , 0.4f , 4f , 1 , MapColor.GRAY ); // Custom metals - alloys - BRONZE = new MMetal( "bronze" , 0f , 5f , 1 , MapColor.BROWN ); - STEEL = new MMetal( "steel" , 0f , 7f , 2 , MapColor.LIGHT_BLUE ) // + METAL_BRONZE = new MMetal( "bronze" , 0f , 5f , 1 , MapColor.BROWN ); + METAL_STEEL = new MMetal( "steel" , 0f , 7f , 2 , MapColor.LIGHT_BLUE ) // .setBlockResistance( 12f ); // RED_COPPER = new MMetal( "red_copper" , 0f , 2f , 1 , MapColor.RED ); + // Custom wood types + WOOD_HEVEA = new MWood( "hevea" ) // + .setBarkColor( MapColor.GRAY ) // + .setBaseFireInfo( 5 , 8 ) // + .register( ); + // Items that do not correspond to metals or ores ITEM_SLAG = Materials.makeItem( "slag" ); ITEM_COKE = Materials.makeFuel( "coke" , 9600 ); @@ -108,21 +116,21 @@ public class Materials // Actual ores ORE_COPPER = new MOre( "copper" , 1 ) // - .setMetal( Materials.COPPER ); + .setMetal( Materials.METAL_COPPER ); ORE_MALACHITE = new MOre( "malachite" , 1 )// - .setMetal( Materials.COPPER ) // + .setMetal( Materials.METAL_COPPER ) // .setDrops( Materials.ITEM_MALACHITE ) // .setExperience( 1 , 3 ); ORE_CUPRITE = new MOre( "cuprite" , 1 ) // - .setMetal( Materials.COPPER , 2 ) // + .setMetal( Materials.METAL_COPPER , 2 ) // .setDrops( Materials.ITEM_CUPRITE ) // .setExperience( 2 , 5 ); ORE_CASSITERITE = new MOre( "cassiterite" , 0 )// - .setMetal( Materials.TIN , 1 , E_MMetalItemType.NUGGET ) // + .setMetal( Materials.METAL_TIN , 1 , E_MMetalItemType.NUGGET ) // .setDrops( Materials.ITEM_CASSITERITE , 2 , 5 ) // .setExperience( 2 , 5 ); ORE_SPHALERITE = new MOre( "sphalerite" , 1 ) // - .setMetal( Materials.ZINC ) // + .setMetal( Materials.METAL_ZINC ) // .setDrops( Materials.ITEM_SPHALERITE ) // .setExperience( 1 , 3 ); ORE_ROCK_SALT = new MOre( "rock_salt" , 0 ) // @@ -208,14 +216,14 @@ public class Materials // Bronze MAlloyRecipe.build( ).setName( "materials/bronze" ).setBurnTime( 400 ) // - .addInput( Materials.COPPER.INGOT ) // - .addInput( Materials.TIN.NUGGET ) // - .setOutput( Materials.BRONZE.INGOT ).setSlag( 1 ) // + .addInput( Materials.METAL_COPPER.INGOT ) // + .addInput( Materials.METAL_TIN.NUGGET ) // + .setOutput( Materials.METAL_BRONZE.INGOT ).setSlag( 1 ) // .register( ); // Pig iron MAlloyRecipe.build( ).setName( "materials/pig_iron/from_ingot" ).setBurnTime( 1600 ) // - .addInput( Materials.IRON.INGOT ) // + .addInput( Materials.METAL_IRON.INGOT ) // .addInput( Materials.ROCK_LIMESTONE ) // .addInput( Materials.ITEM_COKE ) // .setOutput( Materials.ITEM_PIG_IRON_INGOT , 2 ).setSlag( 3 ) // @@ -229,16 +237,16 @@ public class Materials // Steel MAlloyRecipe.build( ).setName( "materials/steel/from_ingot" ).setBurnTime( 3200 ) // - .addInput( Materials.IRON.INGOT ) // + .addInput( Materials.METAL_IRON.INGOT ) // .addInput( Materials.ROCK_LIMESTONE ) // .addInput( Materials.ITEM_PIG_IRON_INGOT ) // - .setOutput( Materials.STEEL.INGOT , 2 ).setSlag( 3 ) // + .setOutput( Materials.METAL_STEEL.INGOT , 2 ).setSlag( 3 ) // .register( ); MAlloyRecipe.build( ).setName( "materials/steel/from_ore" ).setBurnTime( 3200 ) // .addInput( Blocks.IRON_ORE ) // .addInput( Materials.ROCK_LIMESTONE ) // .addInput( Materials.ITEM_PIG_IRON_INGOT ) // - .setOutput( Materials.STEEL.INGOT ).setSlag( 5 ) // + .setOutput( Materials.METAL_STEEL.INGOT ).setSlag( 5 ) // .register( ); // MAlloyRecipe.build( ).setName( "materials/red_copper" ).setBurnTime( 800 ) diff --git a/src/java/mmm/tech/tools/TechTools.java b/src/java/mmm/tech/tools/TechTools.java index f5db81f..4993651 100644 --- a/src/java/mmm/tech/tools/TechTools.java +++ b/src/java/mmm/tech/tools/TechTools.java @@ -18,18 +18,18 @@ public class TechTools public static final TTArmorSet STEEL_ARMOR; static { - COPPER_TOOLS = new TTToolSet( "copper" , Materials.COPPER.INGOT , 2 , 192 , 5.0f , 1.5f , 16 , 7 , -3 ); - COPPER_ARMOR = new TTArmorSet( "copper" , Materials.COPPER.INGOT , 10 , new int[] { + COPPER_TOOLS = new TTToolSet( "copper" , Materials.METAL_COPPER.INGOT , 2 , 192 , 5.0f , 1.5f , 16 , 7 , -3 ); + COPPER_ARMOR = new TTArmorSet( "copper" , Materials.METAL_COPPER.INGOT , 10 , new int[] { 1 , 3 , 4 , 1 } , 15 , SoundEvents.ITEM_ARMOR_EQUIP_GENERIC , 0 ); - BRONZE_TOOLS = new TTToolSet( "bronze" , Materials.BRONZE.INGOT , 2 , 212 , 5.5f , 1.75f , 20 , 7.5f , -3.1f ); - BRONZE_ARMOR = new TTArmorSet( "bronze" , Materials.BRONZE.INGOT , 13 , new int[] { + BRONZE_TOOLS = new TTToolSet( "bronze" , Materials.METAL_BRONZE.INGOT , 2 , 212 , 5.5f , 1.75f , 20 , 7.5f , -3.1f ); + BRONZE_ARMOR = new TTArmorSet( "bronze" , Materials.METAL_BRONZE.INGOT , 13 , new int[] { 1 , 4 , 5 , 2 } , 20 , SoundEvents.ITEM_ARMOR_EQUIP_GENERIC , 0 ); - STEEL_TOOLS = new TTToolSet( "steel" , Materials.STEEL.INGOT , 3 , 800 , 7f , 2.5f , 12 , 8.0f , -3f ); - STEEL_ARMOR = new TTArmorSet( "steel" , Materials.STEEL.INGOT , 22 , new int[] { + STEEL_TOOLS = new TTToolSet( "steel" , Materials.METAL_STEEL.INGOT , 3 , 800 , 7f , 2.5f , 12 , 8.0f , -3f ); + STEEL_ARMOR = new TTArmorSet( "steel" , Materials.METAL_STEEL.INGOT , 22 , new int[] { 2 , 6 , 7 , 3 } , 9 , SoundEvents.ITEM_ARMOR_EQUIP_GENERIC , 1 ); }