Support for custom wood types

+ Log and plank blocks
+ Common recipes (log -> planks, charcoal, various wooden items from
vanilla)
This commit is contained in:
Emmanuel BENOîT 2016-07-08 22:51:54 +02:00
parent 5f43e79474
commit aba216b087
5 changed files with 391 additions and 32 deletions

View file

@ -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 ) );
}
}

View file

@ -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;
}
}
}

View file

@ -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( );
}
}

View file

@ -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 )

View file

@ -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 );
}