REFACTOR ALL THE THINGS!

This commit is contained in:
Emmanuel BENOîT 2016-07-12 14:49:11 +02:00
parent fc0eb1f427
commit 75abf8b9d3
144 changed files with 2223 additions and 1859 deletions

View file

@ -1,7 +1,7 @@
package mmm;
import mmm.proxy.PCommon;
import mmm.core.CProxyCommon;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.SidedProxy;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
@ -15,14 +15,14 @@ public class Mmm
public static final String ID = "mmm";
public static final String NAME = "MMM!";
public static final String VERSION = "0.1-1.9.4";
public static final String VERSION = "1.9-1.10.2";
public static final String PREFIX = Mmm.ID + ".";
@Mod.Instance( Mmm.ID )
private static Mmm instance;
@SidedProxy( clientSide = "mmm.proxy.PClient" , serverSide = "mmm.proxy.PServer" )
private static PCommon proxy = null;
@SidedProxy( clientSide = "mmm.core.CProxyClient" , serverSide = "mmm.core.CProxyCommon" )
private static CProxyCommon proxy = null;
public static Mmm get( )

45
src/java/mmm/MmmDeco.java Normal file
View file

@ -0,0 +1,45 @@
package mmm;
import mmm.deco.DChairs;
import mmm.deco.DSeatEntity;
import mmm.deco.DStairs;
import mmm.deco.DTables;
import mmm.deco.fences.DFences;
import mmm.deco.slabs.DSlabs;
import mmm.deco.thrones.DThrones;
import net.minecraftforge.fml.common.registry.EntityRegistry;
public class MmmDeco
{
public static final DStairs STAIRS;
public static final DSlabs SLAB;
public static final DFences FENCE;
public static final DTables TABLE;
public static final DChairs CHAIR;
public static final DThrones THRONE;
static {
STAIRS = new DStairs( );
SLAB = new DSlabs( );
FENCE = new DFences( );
TABLE = new DTables( );
CHAIR = new DChairs( );
THRONE = new DThrones( );
}
public static void preInit( )
{
// EMPTY
}
public static void init( )
{
EntityRegistry.registerModEntity( DSeatEntity.class , "Seat" , 0 , Mmm.get( ) , 80 , 1 , false );
}
}

22
src/java/mmm/MmmFood.java Normal file
View file

@ -0,0 +1,22 @@
package mmm;
import mmm.food.FMilks;
public class MmmFood
{
public static final FMilks MILK;
static {
MILK = new FMilks( );
}
public static void preInit( )
{
// EMPTY
}
}

View file

@ -1,7 +1,17 @@
package mmm.materials;
package mmm;
import mmm.utils.URegistry;
import mmm.core.CRegistry;
import mmm.materials.I_MRock;
import mmm.materials.MAlloys;
import mmm.materials.MItems;
import mmm.materials.MMetals;
import mmm.materials.MOres;
import mmm.materials.MRocks;
import mmm.materials.MTraps;
import mmm.materials.MTrees;
import mmm.materials.MWoodAchievementHandler;
import mmm.materials.MWoods;
import net.minecraft.block.Block;
import net.minecraft.block.BlockStone;
import net.minecraft.block.state.IBlockState;
@ -12,12 +22,13 @@ import net.minecraftforge.common.MinecraftForge;
public class Materials
public class MmmMaterials
{
public static final MRocks ROCK;
public static final MMetals METAL;
public static final MAlloys ALLOY;
public static final MTrees TREE;
public static final MWoods WOOD;
public static final MItems ITEM;
public static final MOres ORE;
public static final MTraps TRAP;
@ -27,6 +38,7 @@ public class Materials
METAL = new MMetals( );
ALLOY = new MAlloys( );
TREE = new MTrees( );
WOOD = new MWoods( );
ITEM = new MItems( );
ORE = new MOres( );
TRAP = new MTraps( );
@ -37,8 +49,8 @@ public class Materials
public static Item makeFuel( final String name , final int burnTime )
{
final Item fuel = Materials.makeItem( name );
URegistry.setFuel( fuel , burnTime );
final Item fuel = MmmMaterials.makeItem( name );
CRegistry.setFuel( fuel , burnTime );
return fuel;
}
@ -46,19 +58,13 @@ public class Materials
public static Item makeItem( final String name )
{
final Item stone = new Item( );
URegistry.setIdentifiers( stone , "materials" , "stone" , name );
CRegistry.setIdentifiers( stone , "materials" , "stone" , name );
stone.setCreativeTab( CreativeTabs.MATERIALS );
URegistry.addItem( stone );
CRegistry.addItem( stone );
return stone;
}
public static void preInit( )
{
// EMPTY
}
public static boolean isRock( final IBlockState bs )
{
final Block block = bs.getBlock( );
@ -74,7 +80,7 @@ public class Materials
}
private Materials( )
public static void preInit( )
{
// EMPTY
}

31
src/java/mmm/MmmTech.java Normal file
View file

@ -0,0 +1,31 @@
package mmm;
import mmm.core.CNetwork;
import mmm.tech.TActivationModeMessage;
import mmm.tech.base.TBMachines;
import mmm.tech.tools.TTArmors;
import mmm.tech.tools.TTTools;
public class MmmTech
{
public static final TBMachines MACHINES;
public static final TTTools TOOL;
public static final TTArmors ARMOR;
static {
CNetwork.addServerMessage( TActivationModeMessage.class );
MACHINES = new TBMachines( );
TOOL = new TTTools( );
ARMOR = new TTArmors( );
}
public static void preInit( )
{
// EMPTY
}
}

View file

@ -0,0 +1,45 @@
package mmm;
import java.util.ArrayList;
import mmm.core.CRegistry;
import mmm.core.api.I_OreGenerationRegistrar;
import mmm.world.WDefaultGenWatcher;
import mmm.world.biome.WBiomes;
import mmm.world.gen.WGOre;
import mmm.world.gen.WGOreCondition;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.fml.common.registry.GameRegistry;
public class MmmWorld
{
public static final WBiomes BIOME;
static {
final WDefaultGenWatcher dgw = new WDefaultGenWatcher( );
MinecraftForge.TERRAIN_GEN_BUS.register( dgw );
MinecraftForge.EVENT_BUS.register( dgw );
BIOME = new WBiomes( );
}
public static void preInit( )
{
// EMPTY
}
public static void init( )
{
final ArrayList< WGOreCondition > conditions = new ArrayList<>( );
for ( final I_OreGenerationRegistrar registrar : CRegistry.getOreGenerationRegistrars( ) ) {
registrar.addConditions( conditions );
}
GameRegistry.registerWorldGenerator( new WGOre( conditions ) , 0 );
}
}

View file

@ -1,4 +1,4 @@
package mmm.utils;
package mmm.core;
import java.lang.invoke.MethodHandle;
@ -11,14 +11,14 @@ import net.minecraft.launchwrapper.Launch;
/** Accessors for various Minecraft fields */
public class UAccessors
public class CAccessors
{
private static final boolean isDeobfuscated;
private static MethodHandle createGetter( final Class< ? > cls , final String fnForge , final String fnSearge )
{
final String fn = UAccessors.isDeobfuscated ? fnForge : fnSearge;
final String fn = CAccessors.isDeobfuscated ? fnForge : fnSearge;
Field f;
try {
f = cls.getDeclaredField( fn );
@ -40,8 +40,8 @@ public class UAccessors
static {
isDeobfuscated = (Boolean) Launch.blackboard.get( "fml.deobfuscatedEnvironment" );
fg_Block_blockHardness = UAccessors.createGetter( Block.class , "blockHardness" , "field_149782_v" );
fg_Block_blockResistance = UAccessors.createGetter( Block.class , "blockResistance" , "field_149781_w" );
fg_Block_blockHardness = CAccessors.createGetter( Block.class , "blockHardness" , "field_149782_v" );
fg_Block_blockResistance = CAccessors.createGetter( Block.class , "blockResistance" , "field_149781_w" );
}
@ -54,13 +54,13 @@ public class UAccessors
public static float getBlockHardness( final Block block )
throws Throwable
{
return (float) UAccessors.fg_Block_blockHardness.invokeExact( block );
return (float) CAccessors.fg_Block_blockHardness.invokeExact( block );
}
public static float getBlockResistance( final Block block )
throws Throwable
{
return (float) UAccessors.fg_Block_blockResistance.invokeExact( block );
return (float) CAccessors.fg_Block_blockResistance.invokeExact( block );
}
}

View file

@ -1,13 +1,10 @@
package mmm.utils.gui;
package mmm.core;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.util.HashMap;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import com.google.common.collect.Maps;
import mmm.Mmm;
@ -15,7 +12,6 @@ import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.Container;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import net.minecraftforge.fml.common.asm.transformers.deobf.FMLDeobfuscatingRemapper;
@ -27,44 +23,27 @@ import net.minecraftforge.fml.relauncher.SideOnly;
public enum GUIUtils
implements IGuiHandler {
INSTANCE;
public static final int TAB_TEXTURE_X = 0;
public static final int TAB_TEXTURE_Y = 0;
public static final int TAB_WIDTH = 26;
public static final int TAB_HEIGHT = 26;
public static final int ABT_TEXTURE_X = 26;
public static final int ABT_TEXTURE_Y = 0;
public static final int ABT_WIDTH = 10;
public static final int ABT_HEIGHT = 15;
public static final int TAB_BORDER = 4;
public static final int TAB_ICON_X = 5;
public static final int TAB_ICON_Y = 5;
public static final int TAB_ICON_WIDTH = 16;
public static final int TAB_ICON_HEIGHT = 16;
public class CGui
implements IGuiHandler
{
private static final HashMap< Class< ? extends TileEntity > , Constructor< ? > > SERVER_SIDE //
= Maps.newHashMap( );
private static final HashMap< Class< ? extends TileEntity > , Constructor< ? > > CLIENT_SIDE //
= Maps.newHashMap( );
static final Logger LOGGER = LogManager.getLogger( );
public static final ResourceLocation GUI_TEXTURE = new ResourceLocation( "mmm" , "textures/gui/gui-common.png" );
static {
new CGui( );
}
public static void registerTileEntityGUI( final Class< ? extends TileEntity > teClass ,
final String containerClassName , final String guiClassName )
{
if ( GUIUtils.SERVER_SIDE.containsKey( teClass ) ) {
if ( CGui.SERVER_SIDE.containsKey( teClass ) ) {
throw new IllegalArgumentException( "duplicate GUI registration for tile entity class " + teClass );
}
GUIUtils.addTileEntityConstructor( GUIUtils.SERVER_SIDE , teClass , Container.class , containerClassName ,
CGui.addTileEntityConstructor( CGui.SERVER_SIDE , teClass , Container.class , containerClassName ,
"container" );
if ( FMLLaunchHandler.side( ) == Side.CLIENT ) {
String clsName = "net.minecraft.client.gui.inventory.GuiContainer";
@ -77,7 +56,7 @@ public enum GUIUtils
} catch ( final ClassNotFoundException e ) {
throw new IllegalArgumentException( "couldn't find GUI class" , e );
}
GUIUtils.addTileEntityConstructor( GUIUtils.CLIENT_SIDE , teClass , guiClass , guiClassName , "GUI" );
CGui.addTileEntityConstructor( CGui.CLIENT_SIDE , teClass , guiClass , guiClassName , "GUI" );
}
}
@ -102,7 +81,7 @@ public enum GUIUtils
if ( !parent.isAssignableFrom( klass ) ) {
throw new IllegalArgumentException( "class " + className + " is not a " + designation + " sub-class" );
}
output.put( teClass , GUIUtils.findConstructor( teClass , klass ) );
output.put( teClass , CGui.findConstructor( teClass , klass ) );
}
@ -121,7 +100,7 @@ public enum GUIUtils
}
private GUIUtils( )
private CGui( )
{
NetworkRegistry.INSTANCE.registerGuiHandler( Mmm.get( ) , this );
}
@ -132,7 +111,7 @@ public enum GUIUtils
final int y , final int z )
{
if ( ID == 0 ) {
return this.getObjectForTE( player , world , x , y , z , GUIUtils.SERVER_SIDE , "container" );
return this.getObjectForTE( player , world , x , y , z , CGui.SERVER_SIDE , "container" );
}
return null;
}
@ -144,7 +123,7 @@ public enum GUIUtils
final int y , final int z )
{
if ( ID == 0 ) {
return this.getObjectForTE( player , world , x , y , z , GUIUtils.CLIENT_SIDE , "GUI" );
return this.getObjectForTE( player , world , x , y , z , CGui.CLIENT_SIDE , "GUI" );
}
return null;
}

View file

@ -1,7 +1,8 @@
package mmm.utils;
package mmm.core;
import mmm.Mmm;
import mmm.core.api.I_Message;
import net.minecraft.client.Minecraft;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.util.IThreadListener;
@ -12,50 +13,50 @@ import net.minecraftforge.fml.relauncher.Side;
public class UNetwork
public class CNetwork
{
private static final SimpleNetworkWrapper NET = new SimpleNetworkWrapper( Mmm.ID );
private static int nextPacketDiscriminator = 0;
public static void addClientMessage( final Class< ? extends I_UMessage > message )
public static void addClientMessage( final Class< ? extends I_Message > message )
{
UNetwork.NET.registerMessage( //
( final I_UMessage m , final MessageContext ctx ) -> {
CNetwork.NET.registerMessage( //
( final I_Message m , final MessageContext ctx ) -> {
final IThreadListener main = Minecraft.getMinecraft( );
main.addScheduledTask( ( ) -> m.handleOnClient( Minecraft.getMinecraft( ).thePlayer ) );
return null;
} , //
message , UNetwork.nextPacketDiscriminator++ , Side.CLIENT );
message , CNetwork.nextPacketDiscriminator++ , Side.CLIENT );
}
public static void addServerMessage( final Class< ? extends I_UMessage > message )
public static void addServerMessage( final Class< ? extends I_Message > message )
{
UNetwork.NET.registerMessage( //
( final I_UMessage m , final MessageContext ctx ) -> {
CNetwork.NET.registerMessage( //
( final I_Message m , final MessageContext ctx ) -> {
final IThreadListener main = (WorldServer) ctx.getServerHandler( ).playerEntity.worldObj;
main.addScheduledTask( ( ) -> m.handleOnServer( ctx.getServerHandler( ).playerEntity ) );
return null;
} , //
message , UNetwork.nextPacketDiscriminator++ , Side.SERVER );
message , CNetwork.nextPacketDiscriminator++ , Side.SERVER );
}
public static void sendToServer( final I_UMessage msg )
public static void sendToServer( final I_Message msg )
{
UNetwork.NET.sendToServer( msg );
CNetwork.NET.sendToServer( msg );
}
public static void sendTo( final I_UMessage msg , final EntityPlayerMP player )
public static void sendTo( final I_Message msg , final EntityPlayerMP player )
{
UNetwork.NET.sendTo( msg , player );
CNetwork.NET.sendTo( msg , player );
}
public static void sendToAll( final I_UMessage msg )
public static void sendToAll( final I_Message msg )
{
UNetwork.NET.sendToAll( msg );
CNetwork.NET.sendToAll( msg );
}
}

View file

@ -1,29 +1,28 @@
package mmm.proxy;
package mmm.core;
import mmm.utils.URegistry;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
public class PClient
extends PCommon
public class CProxyClient
extends CProxyCommon
{
@Override
public void preInit( final FMLPreInitializationEvent event )
{
super.preInit( event );
URegistry.preInitClient( );
CRegistry.preInitClient( );
}
@Override
public void init( FMLInitializationEvent event )
public void init( final FMLInitializationEvent event )
{
super.init( event );
URegistry.initClient( );
CRegistry.initClient( );
}
}

View file

@ -0,0 +1,37 @@
package mmm.core;
import mmm.MmmDeco;
import mmm.MmmFood;
import mmm.MmmMaterials;
import mmm.MmmTech;
import mmm.MmmWorld;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
public class CProxyCommon
{
public void preInit( final FMLPreInitializationEvent event )
{
CAccessors.preInit( );
MmmMaterials.preInit( );
MmmWorld.preInit( );
MmmTech.preInit( );
MmmFood.preInit( );
MmmDeco.preInit( );
CRegistry.registerRecipes( );
}
public void init( final FMLInitializationEvent event )
{
MmmWorld.init( );
MmmDeco.init( );
}
}

View file

@ -1,4 +1,4 @@
package mmm.utils;
package mmm.core;
import java.util.ArrayList;
@ -8,6 +8,19 @@ import java.util.HashMap;
import java.util.HashSet;
import mmm.Mmm;
import mmm.core.api.I_OreGenerationRegistrar;
import mmm.core.api.I_RecipeRegistrar;
import mmm.core.api.I_RequiresClientInit;
import mmm.core.api.I_RequiresClientPreInit;
import mmm.core.api.blocks.I_ColoredBlock;
import mmm.core.api.blocks.I_StateMapperProvider;
import mmm.core.api.blocks.I_TintedBlock;
import mmm.core.api.blocks.I_TrapBlock;
import mmm.core.api.items.I_ItemModelProvider;
import mmm.core.api.items.I_ItemModelProviderBasic;
import mmm.core.api.items.I_ItemWithVariants;
import mmm.core.api.items.I_TintedItem;
import mmm.materials.MTrapBlocks;
import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
@ -28,7 +41,7 @@ import scala.actors.threadpool.Arrays;
public class URegistry
public class CRegistry
{
private static class FuelHandler
@ -39,7 +52,7 @@ public class URegistry
public int getBurnTime( final ItemStack fuel )
{
final Item item = fuel.getItem( );
final Object fuelInfo = URegistry.FUELS.get( item );
final Object fuelInfo = CRegistry.FUELS.get( item );
if ( fuelInfo != null ) {
if ( item.getHasSubtypes( ) ) {
return ( (int[]) fuelInfo )[ fuel.getItemDamage( ) ];
@ -51,8 +64,8 @@ public class URegistry
}
private static final HashSet< I_URecipeRegistrar > RECIPE_REGISTRARS = new HashSet<>( );
private static final HashSet< I_UOreGenerationRegistrar > ORE_GEN_REGISTRARS = new HashSet<>( );
private static final HashSet< I_RecipeRegistrar > RECIPE_REGISTRARS = new HashSet<>( );
private static final HashSet< I_OreGenerationRegistrar > ORE_GEN_REGISTRARS = new HashSet<>( );
private static final HashSet< Item > ITEMS = new HashSet< Item >( );
private static final HashSet< Block > BLOCKS = new HashSet< Block >( );
@ -64,7 +77,7 @@ public class URegistry
private static final FuelHandler FUEL_HANDLER = new FuelHandler( );
static {
GameRegistry.registerFuelHandler( URegistry.FUEL_HANDLER );
GameRegistry.registerFuelHandler( CRegistry.FUEL_HANDLER );
}
@ -101,11 +114,11 @@ public class URegistry
public static void addItem( final Item item )
{
if ( URegistry.ITEMS.add( item ) ) {
if ( CRegistry.ITEMS.add( item ) ) {
GameRegistry.register( item );
URegistry.addRecipeRegistrar( item );
if ( item instanceof I_URequiresClientInit ) {
URegistry.ITEMS_CLIENT_INIT.add( item );
CRegistry.addRecipeRegistrar( item );
if ( item instanceof I_RequiresClientInit ) {
CRegistry.ITEMS_CLIENT_INIT.add( item );
}
}
}
@ -114,34 +127,34 @@ public class URegistry
public static Item addBlock( final Block block )
{
Item item;
if ( block instanceof I_UColoredBlock ) {
if ( block instanceof I_ColoredBlock ) {
item = new ItemCloth( block );
} else {
item = new ItemBlock( block );
}
item.setRegistryName( block.getRegistryName( ) );
return URegistry.addBlock( block , item );
return CRegistry.addBlock( block , item );
}
public static Item addBlock( final Block block , final Item blockItem )
{
if ( URegistry.BLOCKS.add( block ) ) {
if ( CRegistry.BLOCKS.add( block ) ) {
GameRegistry.register( block );
URegistry.addRecipeRegistrar( block );
URegistry.addOreGenerationRegistrar( block );
if ( block instanceof I_UTrapBlock ) {
UTrapBlocks.INSTANCE.register( (I_UTrapBlock) block );
CRegistry.addRecipeRegistrar( block );
CRegistry.addOreGenerationRegistrar( block );
if ( block instanceof I_TrapBlock ) {
MTrapBlocks.INSTANCE.register( (I_TrapBlock) block );
}
if ( block instanceof I_URequiresClientPreInit ) {
URegistry.BLOCKS_CLIENT_PREINIT.add( block );
if ( block instanceof I_RequiresClientPreInit ) {
CRegistry.BLOCKS_CLIENT_PREINIT.add( block );
}
if ( block instanceof I_URequiresClientInit ) {
URegistry.BLOCKS_CLIENT_INIT.add( block );
if ( block instanceof I_RequiresClientInit ) {
CRegistry.BLOCKS_CLIENT_INIT.add( block );
}
if ( blockItem != null ) {
URegistry.addItem( blockItem );
CRegistry.addItem( blockItem );
}
}
return blockItem;
@ -158,7 +171,7 @@ public class URegistry
} else {
obj = Integer.valueOf( value );
}
URegistry.FUELS.put( item , obj );
CRegistry.FUELS.put( item , obj );
}
@ -168,10 +181,10 @@ public class URegistry
throw new IllegalArgumentException( "item " + item + " has no subtypes" );
}
Object obj = URegistry.FUELS.get( item );
Object obj = CRegistry.FUELS.get( item );
if ( obj == null ) {
obj = new int[ 16 ];
URegistry.FUELS.put( item , obj );
CRegistry.FUELS.put( item , obj );
}
( (int[]) obj )[ meta ] = value;
@ -180,29 +193,29 @@ public class URegistry
public static void addRecipeRegistrar( final Object object )
{
if ( object instanceof I_URecipeRegistrar ) {
URegistry.RECIPE_REGISTRARS.add( (I_URecipeRegistrar) object );
if ( object instanceof I_RecipeRegistrar ) {
CRegistry.RECIPE_REGISTRARS.add( (I_RecipeRegistrar) object );
}
}
public static void addOreGenerationRegistrar( final Object object )
{
if ( object instanceof I_UOreGenerationRegistrar ) {
URegistry.ORE_GEN_REGISTRARS.add( (I_UOreGenerationRegistrar) object );
if ( object instanceof I_OreGenerationRegistrar ) {
CRegistry.ORE_GEN_REGISTRARS.add( (I_OreGenerationRegistrar) object );
}
}
public static Collection< I_UOreGenerationRegistrar > getOreGenerationRegistrars( )
public static Collection< I_OreGenerationRegistrar > getOreGenerationRegistrars( )
{
return Collections.unmodifiableCollection( URegistry.ORE_GEN_REGISTRARS );
return Collections.unmodifiableCollection( CRegistry.ORE_GEN_REGISTRARS );
}
public static void registerRecipes( )
{
for ( final I_URecipeRegistrar registrar : URegistry.RECIPE_REGISTRARS ) {
for ( final I_RecipeRegistrar registrar : CRegistry.RECIPE_REGISTRARS ) {
registrar.registerRecipes( );
}
}
@ -211,33 +224,33 @@ public class URegistry
@SideOnly( Side.CLIENT )
public static void preInitClient( )
{
for ( final Item item : URegistry.ITEMS ) {
for ( final Item item : CRegistry.ITEMS ) {
// Automatic model location unless there's a provider
if ( ! ( item instanceof I_UItemModelProvider ) ) {
if ( ! ( item instanceof I_ItemModelProvider ) ) {
final ModelResourceLocation location = new ModelResourceLocation( item.getRegistryName( ) ,
"inventory" );
ModelLoader.setCustomModelResourceLocation( item , 0 , location );
}
if ( ! ( item instanceof I_URequiresClientPreInit ) ) {
if ( ! ( item instanceof I_RequiresClientPreInit ) ) {
continue;
}
// Item models
if ( item instanceof I_UItemModelProviderBasic ) {
if ( item instanceof I_ItemModelProviderBasic ) {
ModelLoader.setCustomModelResourceLocation( item , 0 ,
( (I_UItemModelProviderBasic) item ).getModelResourceLocation( ) );
} else if ( item instanceof I_UItemWithVariants ) {
final I_UItemWithVariants iwv = (I_UItemWithVariants) item;
( (I_ItemModelProviderBasic) item ).getModelResourceLocation( ) );
} else if ( item instanceof I_ItemWithVariants ) {
final I_ItemWithVariants iwv = (I_ItemWithVariants) item;
for ( int i = 0 ; i < iwv.getVariantsCount( ) ; i++ ) {
ModelLoader.setCustomModelResourceLocation( item , i , iwv.getModelResourceLocation( i ) );
}
}
}
for ( final Block block : URegistry.BLOCKS_CLIENT_PREINIT ) {
if ( block instanceof I_UStateMapperProvider ) {
ModelLoader.setCustomStateMapper( block , ( (I_UStateMapperProvider) block ).getStateMapper( ) );
for ( final Block block : CRegistry.BLOCKS_CLIENT_PREINIT ) {
if ( block instanceof I_StateMapperProvider ) {
ModelLoader.setCustomStateMapper( block , ( (I_StateMapperProvider) block ).getStateMapper( ) );
}
}
}
@ -249,22 +262,22 @@ public class URegistry
final BlockColors blockColors = Minecraft.getMinecraft( ).getBlockColors( );
final ItemColors itemColors = Minecraft.getMinecraft( ).getItemColors( );
for ( final Block block : URegistry.BLOCKS_CLIENT_INIT ) {
for ( final Block block : CRegistry.BLOCKS_CLIENT_INIT ) {
// Register tinted blocks
if ( block instanceof I_UTintedBlock ) {
blockColors.registerBlockColorHandler( ( (I_UTintedBlock) block ).getBlockTint( ) , block );
if ( block instanceof I_TintedBlock ) {
blockColors.registerBlockColorHandler( ( (I_TintedBlock) block ).getBlockTint( ) , block );
}
// Register tinted block items
if ( block instanceof I_UTintedItem ) {
itemColors.registerItemColorHandler( ( (I_UTintedItem) block ).getItemTint( ) , block );
if ( block instanceof I_TintedItem ) {
itemColors.registerItemColorHandler( ( (I_TintedItem) block ).getItemTint( ) , block );
}
}
for ( final Item item : URegistry.ITEMS_CLIENT_INIT ) {
for ( final Item item : CRegistry.ITEMS_CLIENT_INIT ) {
// Register tinted items
if ( item instanceof I_UTintedItem ) {
itemColors.registerItemColorHandler( ( (I_UTintedItem) item ).getItemTint( ) , item );
if ( item instanceof I_TintedItem ) {
itemColors.registerItemColorHandler( ( (I_TintedItem) item ).getItemTint( ) , item );
}
}
}

View file

@ -1,4 +1,4 @@
package mmm.utils;
package mmm.core.api;
import net.minecraft.client.entity.EntityPlayerSP;
@ -9,7 +9,7 @@ import net.minecraftforge.fml.relauncher.SideOnly;
public interface I_UMessage
public interface I_Message
extends IMessage
{

View file

@ -1,4 +1,4 @@
package mmm.utils;
package mmm.core.api;
import java.util.List;
@ -7,7 +7,7 @@ import mmm.world.gen.WGOreCondition;
public interface I_UOreGenerationRegistrar
public interface I_OreGenerationRegistrar
{
public void addConditions( List< WGOreCondition > conditions );

View file

@ -0,0 +1,9 @@
package mmm.core.api;
public interface I_RecipeRegistrar
{
public void registerRecipes( );
}

View file

@ -0,0 +1,7 @@
package mmm.core.api;
public interface I_RequiresClientInit
{
// EMPTY
}

View file

@ -0,0 +1,7 @@
package mmm.core.api;
public interface I_RequiresClientPreInit
{
// EMPTY
}

View file

@ -0,0 +1,7 @@
package mmm.core.api.blocks;
public interface I_ColoredBlock
{
// EMPTY
}

View file

@ -0,0 +1,7 @@
package mmm.core.api.blocks;
public interface I_SeatBlock
{
// EMPTY
}

View file

@ -1,14 +1,15 @@
package mmm.utils;
package mmm.core.api.blocks;
import mmm.core.api.I_RequiresClientPreInit;
import net.minecraft.client.renderer.block.statemap.IStateMapper;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
public interface I_UStateMapperProvider
extends I_URequiresClientPreInit
public interface I_StateMapperProvider
extends I_RequiresClientPreInit
{
@SideOnly( Side.CLIENT )

View file

@ -1,4 +1,4 @@
package mmm.utils;
package mmm.core.api.blocks;
import net.minecraft.block.Block;
@ -11,7 +11,7 @@ import net.minecraft.world.World;
public interface I_USupportBlock
public interface I_SupportBlock
{
public static boolean check( final IBlockAccess worldIn , final BlockPos pos )
@ -23,14 +23,14 @@ public interface I_USupportBlock
}
final Block downBlock = downState.getBlock( );
return downBlock == Blocks.GLASS || downBlock == Blocks.STAINED_GLASS || downBlock instanceof I_USupportBlock;
return downBlock == Blocks.GLASS || downBlock == Blocks.STAINED_GLASS || downBlock instanceof I_SupportBlock;
}
public static boolean dropIfUnsupported( final IBlockState state , final World worldIn , final BlockPos pos ,
final Block block )
{
final boolean rv = !I_USupportBlock.check( worldIn , pos );
final boolean rv = !I_SupportBlock.check( worldIn , pos );
if ( rv ) {
block.dropBlockAsItem( worldIn , pos , state , 0 );
worldIn.setBlockToAir( pos );

View file

@ -1,6 +1,7 @@
package mmm.utils;
package mmm.core.api.blocks;
import mmm.core.api.I_RequiresClientInit;
import net.minecraft.client.renderer.color.IBlockColor;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
@ -8,8 +9,8 @@ import net.minecraftforge.fml.relauncher.SideOnly;
/** For blocks that need to register a tint */
public interface I_UTintedBlock
extends I_URequiresClientInit
public interface I_TintedBlock
extends I_RequiresClientInit
{
@SideOnly( Side.CLIENT )

View file

@ -1,11 +1,11 @@
package mmm.utils;
package mmm.core.api.blocks;
import net.minecraft.block.state.IBlockState;
public interface I_UTrapBlock
public interface I_TrapBlock
{
public String getTrapType( );

View file

@ -0,0 +1,14 @@
package mmm.core.api.items;
import mmm.core.api.I_RequiresClientPreInit;
public interface I_ItemModelProvider
extends I_RequiresClientPreInit
{
// EMPTY
}

View file

@ -1,4 +1,4 @@
package mmm.utils;
package mmm.core.api.items;
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
@ -7,8 +7,8 @@ import net.minecraftforge.fml.relauncher.SideOnly;
public interface I_UItemModelProviderBasic
extends I_UItemModelProvider
public interface I_ItemModelProviderBasic
extends I_ItemModelProvider
{
@SideOnly( Side.CLIENT )

View file

@ -1,4 +1,4 @@
package mmm.utils;
package mmm.core.api.items;
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
@ -7,8 +7,8 @@ import net.minecraftforge.fml.relauncher.SideOnly;
public interface I_UItemWithVariants
extends I_UItemModelProvider
public interface I_ItemWithVariants
extends I_ItemModelProvider
{
public int getVariantsCount( );

View file

@ -1,6 +1,7 @@
package mmm.utils;
package mmm.core.api.items;
import mmm.core.api.I_RequiresClientInit;
import net.minecraft.client.renderer.color.IItemColor;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
@ -11,8 +12,8 @@ import net.minecraftforge.fml.relauncher.SideOnly;
* For items that need to register a tint, or blocks with automatically registered items that need
* to be tinted.
*/
public interface I_UTintedItem
extends I_URequiresClientInit
public interface I_TintedItem
extends I_RequiresClientInit
{
@SideOnly( Side.CLIENT )

View file

@ -0,0 +1,24 @@
package mmm.core.api.tech;
public enum E_ActivationMode {
ALWAYS_ACTIVE ,
POWERED ,
UNPOWERED ,
DISABLED;
private static final E_ActivationMode[] VALUES = E_ActivationMode.values( );
public String getDisplayName( )
{
return "gui.mmm.tech.base.am." + this.toString( ).toLowerCase( );
}
public E_ActivationMode next( )
{
return E_ActivationMode.VALUES[ ( this.ordinal( ) + 1 ) % E_ActivationMode.VALUES.length ];
}
}

View file

@ -0,0 +1,12 @@
package mmm.core.api.tech;
public interface I_ConfigurableActivation
{
public E_ActivationMode getActivationMode( );
public void setActivationMode( E_ActivationMode mode );
}

View file

@ -1,4 +1,4 @@
package mmm.world;
package mmm.core.api.world;
import mmm.world.gen.WGOreParameters;
@ -6,7 +6,7 @@ import net.minecraft.world.World;
public interface I_WBiomeWithOres
public interface I_BiomeWithOres
{
public WGOreParameters[] getBiomeOres( final World world );

View file

@ -1,10 +1,13 @@
package mmm.world;
package mmm.core.api.world;
import net.minecraftforge.event.terraingen.PopulateChunkEvent;
public interface I_WDefaultPopulateHandler
public interface I_DefaultPopulateHandler
{
public boolean onDefaultPopulate( PopulateChunkEvent.Populate event );
}

View file

@ -1,4 +1,4 @@
package mmm.world;
package mmm.core.api.world;
import net.minecraft.world.World;
@ -6,16 +6,16 @@ import net.minecraft.world.chunk.IChunkProvider;
public interface I_WLocationCheck
public interface I_LocationCheck
{
public boolean checkLocation( World world , int chunkX , int chunkZ , IChunkProvider provider );
default I_WLocationCheck and( final I_WLocationCheck other )
default I_LocationCheck and( final I_LocationCheck other )
{
final I_WLocationCheck self = this;
return new I_WLocationCheck( ) {
final I_LocationCheck self = this;
return new I_LocationCheck( ) {
@Override
public boolean checkLocation( final World world , final int chunkX , final int chunkZ ,
final IChunkProvider provider )
@ -27,10 +27,10 @@ public interface I_WLocationCheck
}
default I_WLocationCheck or( final I_WLocationCheck other )
default I_LocationCheck or( final I_LocationCheck other )
{
final I_WLocationCheck self = this;
return new I_WLocationCheck( ) {
final I_LocationCheck self = this;
return new I_LocationCheck( ) {
@Override
public boolean checkLocation( final World world , final int chunkX , final int chunkZ ,
final IChunkProvider provider )
@ -42,10 +42,10 @@ public interface I_WLocationCheck
}
default I_WLocationCheck invert( )
default I_LocationCheck invert( )
{
final I_WLocationCheck self = this;
return new I_WLocationCheck( ) {
final I_LocationCheck self = this;
return new I_LocationCheck( ) {
@Override
public boolean checkLocation( final World world , final int chunkX , final int chunkZ ,
final IChunkProvider provider )

View file

@ -0,0 +1,7 @@
package mmm.core.api.world;
public interface I_TrappedBiome
{
public float getTrapBlockChance( );
}

View file

@ -1,230 +0,0 @@
package mmm.deco;
import java.util.List;
import mmm.utils.I_UBlockSeat;
import mmm.utils.I_URecipeRegistrar;
import mmm.utils.I_USupportBlock;
import mmm.utils.UMaths;
import mmm.utils.URegistry;
import mmm.utils.USeat;
import net.minecraft.block.Block;
import net.minecraft.block.BlockHorizontal;
import net.minecraft.block.SoundType;
import net.minecraft.block.material.EnumPushReaction;
import net.minecraft.block.material.Material;
import net.minecraft.block.properties.IProperty;
import net.minecraft.block.properties.PropertyDirection;
import net.minecraft.block.state.BlockStateContainer;
import net.minecraft.block.state.IBlockState;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Items;
import net.minecraft.item.ItemStack;
import net.minecraft.util.BlockRenderLayer;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand;
import net.minecraft.util.Mirror;
import net.minecraft.util.Rotation;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.fml.common.registry.GameRegistry;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
public class DChair
extends Block
implements I_URecipeRegistrar , I_UBlockSeat
{
public static final PropertyDirection FACING = BlockHorizontal.FACING;
private static final AxisAlignedBB BOUNDING_BOX = UMaths.makeBlockAABB( 1 , 0 , 1 , 15 , 16 , 15 );
private static final AxisAlignedBB COLLISION_BOTTOM = UMaths.makeBlockAABB( 1 , 0 , 1 , 15 , 8 , 15 );
private static final AxisAlignedBB COLLISION_TOP_NORTH = UMaths.makeBlockAABB( 2 , 8 , 2 , 14 , 16 , 4 );
private static final AxisAlignedBB COLLISION_TOP_EAST = UMaths.makeBlockAABB( 12 , 8 , 2 , 14 , 16 , 14 );
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 DWoodType type;
public DChair( final DWoodType type )
{
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.getSuffix() );
this.lightOpacity = 0;
this.translucent = false;
this.fullBlock = false;
this.blockHardness = 2.5f;
this.blockResistance = 12.5f;
this.blockSoundType = SoundType.LADDER;
this.enableStats = false;
this.setHarvestLevel( "axe" , 0 );
}
@Override
public AxisAlignedBB getBoundingBox( final IBlockState state , final IBlockAccess source , final BlockPos pos )
{
return DChair.BOUNDING_BOX;
}
@Override
public void addCollisionBoxToList( final IBlockState state , final World worldIn , final BlockPos pos ,
final AxisAlignedBB container , final List< AxisAlignedBB > output , final Entity entity )
{
Block.addCollisionBoxToList( pos , container , output , DChair.COLLISION_BOTTOM );
AxisAlignedBB back;
switch ( state.getValue( DChair.FACING ) ) {
case EAST:
back = DChair.COLLISION_TOP_EAST;
break;
case NORTH:
back = DChair.COLLISION_TOP_NORTH;
break;
case SOUTH:
back = DChair.COLLISION_TOP_SOUTH;
break;
case WEST:
back = DChair.COLLISION_TOP_WEST;
break;
default:
// TODO log problem
return;
}
Block.addCollisionBoxToList( pos , container , output , back );
}
@Override
public EnumPushReaction getMobilityFlag( final IBlockState state )
{
return EnumPushReaction.DESTROY;
}
@Override
public void registerRecipes( )
{
GameRegistry.addShapedRecipe( new ItemStack( this ) , //
"B " , //
"BB" , //
"SS" , //
'B' , new ItemStack( this.type.getSlabBlock() , 1 , this.type.getMetaData() ) , //
'S' , Items.STICK //
);
}
@Override
public boolean isOpaqueCube( final IBlockState state )
{
return false;
}
@Override
public boolean isFullCube( final IBlockState state )
{
return false;
}
@Override
@SideOnly( Side.CLIENT )
public BlockRenderLayer getBlockLayer( )
{
return BlockRenderLayer.CUTOUT;
}
@Override
protected BlockStateContainer createBlockState( )
{
return new BlockStateContainer( this , new IProperty[] {
DChair.FACING
} );
}
@Override
public IBlockState withRotation( final IBlockState state , final Rotation rot )
{
return state.withProperty( DChair.FACING , rot.rotate( state.getValue( DChair.FACING ) ) );
}
@Override
public IBlockState withMirror( final IBlockState state , final Mirror mirrorIn )
{
return state.withRotation( mirrorIn.toRotation( state.getValue( DChair.FACING ) ) );
}
@Override
public IBlockState getStateFromMeta( final int meta )
{
EnumFacing enumfacing = EnumFacing.getFront( meta );
if ( enumfacing.getAxis( ) == EnumFacing.Axis.Y ) {
enumfacing = EnumFacing.NORTH;
}
return this.getDefaultState( ).withProperty( DChair.FACING , enumfacing );
}
@Override
public int getMetaFromState( final IBlockState state )
{
return state.getValue( DChair.FACING ).getIndex( );
}
@Override
public IBlockState onBlockPlaced( final World worldIn , final BlockPos pos , final EnumFacing facing ,
final float hitX , final float hitY , final float hitZ , final int meta , final EntityLivingBase placer )
{
return this.getDefaultState( ).withProperty( DChair.FACING , placer.getHorizontalFacing( ) );
}
@Override
public boolean onBlockActivated( final World worldIn , final BlockPos pos , final IBlockState state ,
final EntityPlayer playerIn , final EnumHand hand , final ItemStack heldItem , final EnumFacing side ,
final float hitX , final float hitY , final float hitZ )
{
return USeat.sit( worldIn , pos , playerIn , 0.25 );
}
@Override
public void neighborChanged( final IBlockState state , final World worldIn , final BlockPos pos ,
final Block blockIn )
{
I_USupportBlock.dropIfUnsupported( state , worldIn , pos , this );
}
@Override
public boolean canPlaceBlockAt( final World worldIn , final BlockPos pos )
{
return super.canPlaceBlockAt( worldIn , pos ) && I_USupportBlock.check( worldIn , pos );
}
}

View file

@ -0,0 +1,259 @@
package mmm.deco;
import java.util.List;
import mmm.MmmMaterials;
import mmm.core.CRegistry;
import mmm.core.api.I_RecipeRegistrar;
import mmm.core.api.blocks.I_SeatBlock;
import mmm.core.api.blocks.I_SupportBlock;
import mmm.materials.MWood;
import mmm.utils.UMaths;
import net.minecraft.block.Block;
import net.minecraft.block.BlockHorizontal;
import net.minecraft.block.SoundType;
import net.minecraft.block.material.EnumPushReaction;
import net.minecraft.block.material.Material;
import net.minecraft.block.properties.IProperty;
import net.minecraft.block.properties.PropertyDirection;
import net.minecraft.block.state.BlockStateContainer;
import net.minecraft.block.state.IBlockState;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Items;
import net.minecraft.item.ItemStack;
import net.minecraft.util.BlockRenderLayer;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand;
import net.minecraft.util.Mirror;
import net.minecraft.util.Rotation;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.fml.common.registry.GameRegistry;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
public class DChairs
{
public static class ChairBlock
extends Block
implements I_RecipeRegistrar , I_SeatBlock
{
public static final PropertyDirection FACING = BlockHorizontal.FACING;
private static final AxisAlignedBB BOUNDING_BOX = UMaths.makeBlockAABB( 1 , 0 , 1 , 15 , 16 , 15 );
private static final AxisAlignedBB COLLISION_BOTTOM = UMaths.makeBlockAABB( 1 , 0 , 1 , 15 , 8 , 15 );
private static final AxisAlignedBB COLLISION_TOP_NORTH = UMaths.makeBlockAABB( 2 , 8 , 2 , 14 , 16 , 4 );
private static final AxisAlignedBB COLLISION_TOP_EAST = UMaths.makeBlockAABB( 12 , 8 , 2 , 14 , 16 , 14 );
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 MWood type;
public ChairBlock( final MWood type )
{
super( Material.WOOD , type.getMapColor( ) );
this.type = type;
this.setDefaultState(
this.blockState.getBaseState( ).withProperty( ChairBlock.FACING , EnumFacing.NORTH ) );
this.setCreativeTab( CreativeTabs.DECORATIONS );
CRegistry.setIdentifiers( this , "deco" , "chair" , type.getSuffix( ) );
this.lightOpacity = 0;
this.translucent = false;
this.fullBlock = false;
this.blockHardness = 2.5f;
this.blockResistance = 12.5f;
this.blockSoundType = SoundType.LADDER;
this.enableStats = false;
this.setHarvestLevel( "axe" , 0 );
}
@Override
public AxisAlignedBB getBoundingBox( final IBlockState state , final IBlockAccess source , final BlockPos pos )
{
return ChairBlock.BOUNDING_BOX;
}
@Override
public void addCollisionBoxToList( final IBlockState state , final World worldIn , final BlockPos pos ,
final AxisAlignedBB container , final List< AxisAlignedBB > output , final Entity entity )
{
Block.addCollisionBoxToList( pos , container , output , ChairBlock.COLLISION_BOTTOM );
AxisAlignedBB back;
switch ( state.getValue( ChairBlock.FACING ) ) {
case EAST:
back = ChairBlock.COLLISION_TOP_EAST;
break;
case NORTH:
back = ChairBlock.COLLISION_TOP_NORTH;
break;
case SOUTH:
back = ChairBlock.COLLISION_TOP_SOUTH;
break;
case WEST:
back = ChairBlock.COLLISION_TOP_WEST;
break;
default:
// TODO log problem
return;
}
Block.addCollisionBoxToList( pos , container , output , back );
}
@Override
public EnumPushReaction getMobilityFlag( final IBlockState state )
{
return EnumPushReaction.DESTROY;
}
@Override
public void registerRecipes( )
{
GameRegistry.addShapedRecipe( new ItemStack( this ) , //
"B " , //
"BB" , //
"SS" , //
'B' , new ItemStack( this.type.getSlabBlock( ) , 1 , this.type.getMetaData( ) ) , //
'S' , Items.STICK //
);
}
@Override
public boolean isOpaqueCube( final IBlockState state )
{
return false;
}
@Override
public boolean isFullCube( final IBlockState state )
{
return false;
}
@Override
@SideOnly( Side.CLIENT )
public BlockRenderLayer getBlockLayer( )
{
return BlockRenderLayer.CUTOUT;
}
@Override
protected BlockStateContainer createBlockState( )
{
return new BlockStateContainer( this , new IProperty[] {
ChairBlock.FACING
} );
}
@Override
public IBlockState withRotation( final IBlockState state , final Rotation rot )
{
return state.withProperty( ChairBlock.FACING , rot.rotate( state.getValue( ChairBlock.FACING ) ) );
}
@Override
public IBlockState withMirror( final IBlockState state , final Mirror mirrorIn )
{
return state.withRotation( mirrorIn.toRotation( state.getValue( ChairBlock.FACING ) ) );
}
@Override
public IBlockState getStateFromMeta( final int meta )
{
EnumFacing enumfacing = EnumFacing.getFront( meta );
if ( enumfacing.getAxis( ) == EnumFacing.Axis.Y ) {
enumfacing = EnumFacing.NORTH;
}
return this.getDefaultState( ).withProperty( ChairBlock.FACING , enumfacing );
}
@Override
public int getMetaFromState( final IBlockState state )
{
return state.getValue( ChairBlock.FACING ).getIndex( );
}
@Override
public IBlockState onBlockPlaced( final World worldIn , final BlockPos pos , final EnumFacing facing ,
final float hitX , final float hitY , final float hitZ , final int meta ,
final EntityLivingBase placer )
{
return this.getDefaultState( ).withProperty( ChairBlock.FACING , placer.getHorizontalFacing( ) );
}
@Override
public boolean onBlockActivated( final World worldIn , final BlockPos pos , final IBlockState state ,
final EntityPlayer playerIn , final EnumHand hand , final ItemStack heldItem , final EnumFacing side ,
final float hitX , final float hitY , final float hitZ )
{
return DSeatEntity.sit( worldIn , pos , playerIn , 0.25 );
}
@Override
public void neighborChanged( final IBlockState state , final World worldIn , final BlockPos pos ,
final Block blockIn )
{
I_SupportBlock.dropIfUnsupported( state , worldIn , pos , this );
}
@Override
public boolean canPlaceBlockAt( final World worldIn , final BlockPos pos )
{
return super.canPlaceBlockAt( worldIn , pos ) && I_SupportBlock.check( worldIn , pos );
}
}
public final ChairBlock OAK;
public final ChairBlock BIRCH;
public final ChairBlock SPRUCE;
public final ChairBlock JUNGLE;
public final ChairBlock DARK_OAK;
public final ChairBlock ACACIA;
public final ChairBlock HEVEA;
public final ChairBlock BAMBOO;
public DChairs( )
{
CRegistry.addBlock( this.OAK = new ChairBlock( MmmMaterials.WOOD.OAK ) );
CRegistry.addBlock( this.BIRCH = new ChairBlock( MmmMaterials.WOOD.BIRCH ) );
CRegistry.addBlock( this.SPRUCE = new ChairBlock( MmmMaterials.WOOD.SPRUCE ) );
CRegistry.addBlock( this.JUNGLE = new ChairBlock( MmmMaterials.WOOD.JUNGLE ) );
CRegistry.addBlock( this.DARK_OAK = new ChairBlock( MmmMaterials.WOOD.DARK_OAK ) );
CRegistry.addBlock( this.ACACIA = new ChairBlock( MmmMaterials.WOOD.ACACIA ) );
CRegistry.addBlock( this.HEVEA = new ChairBlock( MmmMaterials.WOOD.HEVEA ) );
CRegistry.addBlock( this.BAMBOO = new ChairBlock( MmmMaterials.WOOD.BAMBOO ) );
}
}

View file

@ -1,20 +0,0 @@
package mmm.deco;
import mmm.utils.URegistry;
public class DFence
{
public final DFenceBlock BLOCK;
public final DFenceGate GATE;
public DFence( DWoodType woodType )
{
URegistry.addBlock( this.BLOCK = new DFenceBlock( woodType ) );
URegistry.addBlock( this.GATE = new DFenceGate( woodType ) );
}
}

View file

@ -1,16 +0,0 @@
package mmm.deco;
public class DFences
{
public final DFence BAMBOO;
public final DFence HEVEA;
DFences( )
{
this.BAMBOO = new DFence( DWoodType.BAMBOO );
this.HEVEA = new DFence( DWoodType.HEVEA );
}
}

View file

@ -1,9 +1,10 @@
package mmm.utils;
package mmm.deco;
import java.util.List;
import mmm.Mmm;
import mmm.core.api.blocks.I_SeatBlock;
import net.minecraft.block.Block;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
@ -15,13 +16,13 @@ import net.minecraftforge.fml.common.registry.EntityRegistry;
public class USeat
public class DSeatEntity
extends Entity
{
public static void register( final Mmm mmm )
{
EntityRegistry.registerModEntity( USeat.class , "Seat" , 0 , mmm , 80 , 1 , false );
EntityRegistry.registerModEntity( DSeatEntity.class , "Seat" , 0 , mmm , 80 , 1 , false );
}
@ -32,10 +33,10 @@ public class USeat
return true;
}
final List< USeat > seats = world.getEntitiesWithinAABB( USeat.class ,
final List< DSeatEntity > seats = world.getEntitiesWithinAABB( DSeatEntity.class ,
new AxisAlignedBB( pos ).expand( 1 , 1 , 1 ) );
USeat seat = null;
for ( final USeat existingSeat : seats ) {
DSeatEntity seat = null;
for ( final DSeatEntity existingSeat : seats ) {
if ( !existingSeat.pos.equals( pos ) ) {
continue;
}
@ -47,7 +48,7 @@ public class USeat
}
if ( seat == null ) {
seat = new USeat( world , pos , yOffset );
seat = new DSeatEntity( world , pos , yOffset );
world.spawnEntityInWorld( seat );
}
player.startRiding( seat );
@ -61,7 +62,7 @@ public class USeat
public double yOffset;
public USeat( final World world )
public DSeatEntity( final World world )
{
super( world );
@ -73,7 +74,7 @@ public class USeat
}
public USeat( final World world , final BlockPos pos , final double yOffset )
public DSeatEntity( final World world , final BlockPos pos , final double yOffset )
{
this( world );
@ -149,7 +150,7 @@ public class USeat
}
final Block block = this.worldObj.getBlockState( this.pos ).getBlock( );
if ( ! ( block instanceof I_UBlockSeat ) ) {
if ( ! ( block instanceof I_SeatBlock ) ) {
this.setDead( );
return;
}

View file

@ -1,9 +1,10 @@
package mmm.deco;
import mmm.MmmMaterials;
import mmm.core.CRegistry;
import mmm.core.api.I_RecipeRegistrar;
import mmm.materials.MTree;
import mmm.utils.I_URecipeRegistrar;
import mmm.utils.URegistry;
import net.minecraft.block.Block;
import net.minecraft.block.BlockStairs;
import net.minecraft.block.BlockStone;
@ -15,56 +16,76 @@ import net.minecraftforge.fml.common.registry.GameRegistry;
public class DStairs
extends BlockStairs
implements I_URecipeRegistrar
{
public static DStairs fromVanillaSmoothStone( final BlockStone.EnumType type )
{
final IBlockState bs = Blocks.STONE.getDefaultState( ).withProperty( BlockStone.VARIANT , type );
final DStairs stairs = new DStairs( bs , type.getName( ).replace( "smooth_" , "" ) );
URegistry.addBlock( stairs );
return stairs;
}
public static DStairs fromWood( final MTree materials )
public static class StairsBlock
extends BlockStairs
implements I_RecipeRegistrar
{
final DStairs stairs = new DStairs( materials.PLANKS.getDefaultState( ) , materials.NAME );
URegistry.addBlock( stairs );
if ( materials.getBaseFlammability( ) != 0 ) {
Blocks.FIRE.setFireInfo( stairs , materials.getBaseFireEncouragement( ) ,
materials.getBaseFlammability( ) * 4 );
public static StairsBlock fromVanillaSmoothStone( final BlockStone.EnumType type )
{
final IBlockState bs = Blocks.STONE.getDefaultState( ).withProperty( BlockStone.VARIANT , type );
final StairsBlock stairs = new StairsBlock( bs , type.getName( ).replace( "smooth_" , "" ) );
CRegistry.addBlock( stairs );
return stairs;
}
return stairs;
public static StairsBlock fromWood( final MTree materials )
{
final StairsBlock stairs = new StairsBlock( materials.PLANKS.getDefaultState( ) , materials.NAME );
CRegistry.addBlock( stairs );
if ( materials.getBaseFlammability( ) != 0 ) {
Blocks.FIRE.setFireInfo( stairs , materials.getBaseFireEncouragement( ) ,
materials.getBaseFlammability( ) * 4 );
}
return stairs;
}
public final IBlockState modelState;
public final Block modelBlock;
public StairsBlock( final Block modelBlock , final String name )
{
this( modelBlock.getDefaultState( ) , name );
}
public StairsBlock( final IBlockState modelState , final String name )
{
super( modelState );
this.modelState = modelState;
this.modelBlock = modelState.getBlock( );
CRegistry.setIdentifiers( this , "deco" , "stairs" , name );
}
@Override
public void registerRecipes( )
{
GameRegistry.addShapedRecipe( new ItemStack( this ) , //
"B " , //
"BB " , //
"BBB" , //
'B' , new ItemStack( this.modelBlock , 4 , this.modelBlock.getMetaFromState( this.modelState ) ) );
}
}
public final IBlockState modelState;
public final Block modelBlock;
public final StairsBlock GRANITE;
public final StairsBlock DIORITE;
public final StairsBlock ANDESITE;
public final StairsBlock HEVEA;
public final StairsBlock BAMBOO;
public DStairs( final Block modelBlock , final String name )
public DStairs( )
{
this( modelBlock.getDefaultState( ) , name );
this.GRANITE = StairsBlock.fromVanillaSmoothStone( BlockStone.EnumType.GRANITE_SMOOTH );
this.DIORITE = StairsBlock.fromVanillaSmoothStone( BlockStone.EnumType.DIORITE_SMOOTH );
this.ANDESITE = StairsBlock.fromVanillaSmoothStone( BlockStone.EnumType.ANDESITE_SMOOTH );
this.HEVEA = StairsBlock.fromWood( MmmMaterials.TREE.HEVEA );
this.BAMBOO = StairsBlock.fromWood( MmmMaterials.TREE.BAMBOO );
}
public DStairs( final IBlockState modelState , final String name )
{
super( modelState );
this.modelState = modelState;
this.modelBlock = modelState.getBlock( );
URegistry.setIdentifiers( this , "deco" , "stairs" , name );
}
@Override
public void registerRecipes( )
{
GameRegistry.addShapedRecipe( new ItemStack( this ) , //
"B " , //
"BB " , //
"BBB" , //
'B' , new ItemStack( this.modelBlock , 4 , this.modelBlock.getMetaFromState( this.modelState ) ) );
}
}

View file

@ -1,291 +0,0 @@
package mmm.deco;
import java.util.List;
import mmm.utils.I_URecipeRegistrar;
import mmm.utils.I_USupportBlock;
import mmm.utils.UMaths;
import mmm.utils.URegistry;
import net.minecraft.block.Block;
import net.minecraft.block.SoundType;
import net.minecraft.block.material.Material;
import net.minecraft.block.properties.IProperty;
import net.minecraft.block.properties.PropertyBool;
import net.minecraft.block.state.BlockStateContainer;
import net.minecraft.block.state.IBlockState;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.Entity;
import net.minecraft.init.Items;
import net.minecraft.item.ItemStack;
import net.minecraft.util.BlockRenderLayer;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.Mirror;
import net.minecraft.util.Rotation;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.fml.common.registry.GameRegistry;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
public class DTable
extends Block
implements I_URecipeRegistrar
{
protected static final AxisAlignedBB COLLISION_TOP = UMaths.makeBlockAABB( 0 , 12 , 0 , 16 , 16 , 16 );
protected static final AxisAlignedBB COLLISION_LEGS[] = { //
UMaths.makeBlockAABB( 1 , 0 , 1 , 3 , 12 , 3 ) , //
UMaths.makeBlockAABB( 13 , 0 , 1 , 15 , 12 , 3 ) , //
UMaths.makeBlockAABB( 13 , 0 , 13 , 15 , 12 , 15 ) , //
UMaths.makeBlockAABB( 1 , 0 , 13 , 3 , 12 , 15 ), //
};
public static final PropertyBool NORTH = PropertyBool.create( "north" );
public static final PropertyBool EAST = PropertyBool.create( "east" );
public static final PropertyBool SOUTH = PropertyBool.create( "south" );
public static final PropertyBool WEST = PropertyBool.create( "west" );
public static final PropertyBool NW = PropertyBool.create( "nw" );
public static final PropertyBool NE = PropertyBool.create( "ne" );
public static final PropertyBool SW = PropertyBool.create( "sw" );
public static final PropertyBool SE = PropertyBool.create( "se" );
private static final PropertyBool[] DIRECTIONS = { //
DTable.NORTH , DTable.NE , DTable.EAST , DTable.SE , DTable.SOUTH ,
DTable.SW , DTable.WEST , DTable.NW//
};
public final DWoodType type;
public DTable( final DWoodType type )
{
super( Material.WOOD , type.getMapColor() );
this.type = type;
this.setDefaultState( this.blockState.getBaseState( )//
.withProperty( DTable.NORTH , Boolean.valueOf( false ) )//
.withProperty( DTable.EAST , Boolean.valueOf( false ) )//
.withProperty( DTable.SOUTH , Boolean.valueOf( false ) )//
.withProperty( DTable.WEST , Boolean.valueOf( false ) )//
.withProperty( DTable.NW , Boolean.valueOf( false ) )//
.withProperty( DTable.NE , Boolean.valueOf( false ) )//
.withProperty( DTable.SW , Boolean.valueOf( false ) )//
.withProperty( DTable.SE , Boolean.valueOf( false ) ) );
this.setCreativeTab( CreativeTabs.DECORATIONS );
URegistry.setIdentifiers( this , "deco" , "table" , type.getSuffix() );
this.lightOpacity = 0;
this.translucent = false;
this.fullBlock = false;
this.blockHardness = 2.5f;
this.blockResistance = 12.5f;
this.blockSoundType = SoundType.LADDER;
this.enableStats = false;
this.setHarvestLevel( "axe" , 0 );
}
@Override
public void registerRecipes( )
{
GameRegistry.addShapedRecipe( new ItemStack( this ) , //
"BBB" , //
"S S" , //
'B' , new ItemStack( this.type.getPlanksBlock() , 1 , this.type.getMetaData() ) , //
'S' , Items.STICK //
);
}
@Override
public boolean isOpaqueCube( final IBlockState state )
{
return false;
}
@Override
public boolean isFullCube( final IBlockState state )
{
return false;
}
public boolean canConnectTo( final IBlockAccess worldIn , final BlockPos pos )
{
return worldIn.getBlockState( pos ).getBlock( ) == this;
}
@Override
protected BlockStateContainer createBlockState( )
{
return new BlockStateContainer( this , new IProperty[] {
DTable.NORTH , DTable.EAST , DTable.WEST , DTable.SOUTH , DTable.NE ,
DTable.NW , DTable.SE , DTable.SW
} );
}
@Override
public int getMetaFromState( final IBlockState state )
{
return 0;
}
@Override
public IBlockState getActualState( final IBlockState state , final IBlockAccess worldIn , final BlockPos pos )
{
final BlockPos n = pos.north( );
final BlockPos s = pos.south( );
final BlockPos w = pos.west( );
final BlockPos e = pos.east( );
return state.withProperty( DTable.NORTH , Boolean.valueOf( this.canConnectTo( worldIn , n ) ) )//
.withProperty( DTable.EAST , Boolean.valueOf( this.canConnectTo( worldIn , e ) ) )//
.withProperty( DTable.SOUTH , Boolean.valueOf( this.canConnectTo( worldIn , s ) ) )//
.withProperty( DTable.WEST , Boolean.valueOf( this.canConnectTo( worldIn , w ) ) )//
.withProperty( DTable.NW , Boolean.valueOf( this.canConnectTo( worldIn , n.west( ) ) ) )//
.withProperty( DTable.NE , Boolean.valueOf( this.canConnectTo( worldIn , n.east( ) ) ) )//
.withProperty( DTable.SW , Boolean.valueOf( this.canConnectTo( worldIn , s.west( ) ) ) )//
.withProperty( DTable.SE , Boolean.valueOf( this.canConnectTo( worldIn , s.east( ) ) ) )//
;
}
@Override
public IBlockState withRotation( final IBlockState state , final Rotation rot )
{
switch ( rot ) {
case CLOCKWISE_180:
return state.withProperty( DTable.NORTH , state.getValue( DTable.SOUTH ) )//
.withProperty( DTable.EAST , state.getValue( DTable.WEST ) )//
.withProperty( DTable.SOUTH , state.getValue( DTable.NORTH ) )//
.withProperty( DTable.WEST , state.getValue( DTable.EAST ) )//
.withProperty( DTable.NW , state.getValue( DTable.SE ) )//
.withProperty( DTable.NE , state.getValue( DTable.SW ) )//
.withProperty( DTable.SE , state.getValue( DTable.NW ) )//
.withProperty( DTable.SW , state.getValue( DTable.NE ) )//
;
case COUNTERCLOCKWISE_90:
return state.withProperty( DTable.NORTH , state.getValue( DTable.EAST ) )//
.withProperty( DTable.EAST , state.getValue( DTable.SOUTH ) )//
.withProperty( DTable.SOUTH , state.getValue( DTable.WEST ) )//
.withProperty( DTable.WEST , state.getValue( DTable.NORTH ) )//
.withProperty( DTable.NW , state.getValue( DTable.NE ) )//
.withProperty( DTable.NE , state.getValue( DTable.SE ) )//
.withProperty( DTable.SE , state.getValue( DTable.SW ) )//
.withProperty( DTable.SW , state.getValue( DTable.NW ) )//
;
case CLOCKWISE_90:
return state.withProperty( DTable.NORTH , state.getValue( DTable.WEST ) )//
.withProperty( DTable.EAST , state.getValue( DTable.NORTH ) )//
.withProperty( DTable.SOUTH , state.getValue( DTable.EAST ) )//
.withProperty( DTable.WEST , state.getValue( DTable.SOUTH ) )//
.withProperty( DTable.NW , state.getValue( DTable.SW ) )//
.withProperty( DTable.NE , state.getValue( DTable.NW ) )//
.withProperty( DTable.SE , state.getValue( DTable.NE ) )//
.withProperty( DTable.SW , state.getValue( DTable.SE ) )//
;
default:
return state;
}
}
@Override
public IBlockState withMirror( final IBlockState state , final Mirror mirrorIn )
{
switch ( mirrorIn ) {
case LEFT_RIGHT:
return state.withProperty( DTable.NORTH , state.getValue( DTable.SOUTH ) )//
.withProperty( DTable.SOUTH , state.getValue( DTable.NORTH ) )//
.withProperty( DTable.NW , state.getValue( DTable.SW ) )//
.withProperty( DTable.NE , state.getValue( DTable.SE ) )//
.withProperty( DTable.SW , state.getValue( DTable.NW ) )//
.withProperty( DTable.SE , state.getValue( DTable.NE ) )//
;
case FRONT_BACK:
return state.withProperty( DTable.EAST , state.getValue( DTable.WEST ) )//
.withProperty( DTable.WEST , state.getValue( DTable.EAST ) )//
.withProperty( DTable.NW , state.getValue( DTable.NE ) )//
.withProperty( DTable.NE , state.getValue( DTable.NW ) )//
.withProperty( DTable.SW , state.getValue( DTable.SE ) )//
.withProperty( DTable.SE , state.getValue( DTable.SW ) )//
;
default:
return state;
}
}
@Override
public AxisAlignedBB getBoundingBox( final IBlockState state , final IBlockAccess source , final BlockPos pos )
{
final IBlockState actual = this.getActualState( state , source , pos );
for ( int i = 0 , dir = 0 ; i < 4 ; i++ , dir += 2 ) {
final boolean c0 = actual.getValue( DTable.DIRECTIONS[ dir ] );
final boolean c1 = actual.getValue( DTable.DIRECTIONS[ ( dir + 6 ) % 8 ] );
final boolean c10 = actual.getValue( DTable.DIRECTIONS[ ( dir + 7 ) % 8 ] );
if ( ! ( c0 || c1 ) || c0 && c1 && !c10 ) {
return Block.FULL_BLOCK_AABB;
}
}
return DTable.COLLISION_TOP;
}
@Override
public void addCollisionBoxToList( final IBlockState state , final World worldIn , final BlockPos pos ,
final AxisAlignedBB container , final List< AxisAlignedBB > output , final Entity entity )
{
final IBlockState actual = this.getActualState( state , worldIn , pos );
Block.addCollisionBoxToList( pos , container , output , DTable.COLLISION_TOP );
for ( int i = 0 , dir = 0 ; i < 4 ; i++ , dir += 2 ) {
final boolean c0 = actual.getValue( DTable.DIRECTIONS[ dir ] );
final boolean c1 = actual.getValue( DTable.DIRECTIONS[ ( dir + 6 ) % 8 ] );
final boolean c10 = actual.getValue( DTable.DIRECTIONS[ ( dir + 7 ) % 8 ] );
if ( ! ( c0 || c1 ) || c0 && c1 && !c10 ) {
Block.addCollisionBoxToList( pos , container , output , DTable.COLLISION_LEGS[ i ] );
}
}
}
@Override
@SideOnly( Side.CLIENT )
public BlockRenderLayer getBlockLayer( )
{
return BlockRenderLayer.CUTOUT;
}
@Override
public boolean isSideSolid( final IBlockState base_state , final IBlockAccess world , final BlockPos pos ,
final EnumFacing side )
{
return side == EnumFacing.UP;
}
@Override
public void neighborChanged( final IBlockState state , final World worldIn , final BlockPos pos ,
final Block blockIn )
{
I_USupportBlock.dropIfUnsupported( state , worldIn , pos , this );
}
@Override
public boolean canPlaceBlockAt( final World worldIn , final BlockPos pos )
{
return super.canPlaceBlockAt( worldIn , pos ) && I_USupportBlock.check( worldIn , pos );
}
}

View file

@ -0,0 +1,321 @@
package mmm.deco;
import java.util.List;
import mmm.MmmMaterials;
import mmm.core.CRegistry;
import mmm.core.api.I_RecipeRegistrar;
import mmm.core.api.blocks.I_SupportBlock;
import mmm.materials.MWood;
import mmm.utils.UMaths;
import net.minecraft.block.Block;
import net.minecraft.block.SoundType;
import net.minecraft.block.material.Material;
import net.minecraft.block.properties.IProperty;
import net.minecraft.block.properties.PropertyBool;
import net.minecraft.block.state.BlockStateContainer;
import net.minecraft.block.state.IBlockState;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.Entity;
import net.minecraft.init.Items;
import net.minecraft.item.ItemStack;
import net.minecraft.util.BlockRenderLayer;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.Mirror;
import net.minecraft.util.Rotation;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.fml.common.registry.GameRegistry;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
public class DTables
{
public static class TableBlock
extends Block
implements I_RecipeRegistrar
{
protected static final AxisAlignedBB COLLISION_TOP = UMaths.makeBlockAABB( 0 , 12 , 0 , 16 , 16 , 16 );
protected static final AxisAlignedBB COLLISION_LEGS[] = { //
UMaths.makeBlockAABB( 1 , 0 , 1 , 3 , 12 , 3 ) , //
UMaths.makeBlockAABB( 13 , 0 , 1 , 15 , 12 , 3 ) , //
UMaths.makeBlockAABB( 13 , 0 , 13 , 15 , 12 , 15 ) , //
UMaths.makeBlockAABB( 1 , 0 , 13 , 3 , 12 , 15 ), //
};
public static final PropertyBool NORTH = PropertyBool.create( "north" );
public static final PropertyBool EAST = PropertyBool.create( "east" );
public static final PropertyBool SOUTH = PropertyBool.create( "south" );
public static final PropertyBool WEST = PropertyBool.create( "west" );
public static final PropertyBool NW = PropertyBool.create( "nw" );
public static final PropertyBool NE = PropertyBool.create( "ne" );
public static final PropertyBool SW = PropertyBool.create( "sw" );
public static final PropertyBool SE = PropertyBool.create( "se" );
private static final PropertyBool[] DIRECTIONS = { //
TableBlock.NORTH , TableBlock.NE , //
TableBlock.EAST , TableBlock.SE , //
TableBlock.SOUTH , TableBlock.SW , //
TableBlock.WEST , TableBlock.NW//
};
public final MWood type;
public TableBlock( final MWood type )
{
super( Material.WOOD , type.getMapColor( ) );
this.type = type;
this.setDefaultState( this.blockState.getBaseState( )//
.withProperty( TableBlock.NORTH , Boolean.valueOf( false ) )//
.withProperty( TableBlock.EAST , Boolean.valueOf( false ) )//
.withProperty( TableBlock.SOUTH , Boolean.valueOf( false ) )//
.withProperty( TableBlock.WEST , Boolean.valueOf( false ) )//
.withProperty( TableBlock.NW , Boolean.valueOf( false ) )//
.withProperty( TableBlock.NE , Boolean.valueOf( false ) )//
.withProperty( TableBlock.SW , Boolean.valueOf( false ) )//
.withProperty( TableBlock.SE , Boolean.valueOf( false ) ) );
this.setCreativeTab( CreativeTabs.DECORATIONS );
CRegistry.setIdentifiers( this , "deco" , "table" , type.getSuffix( ) );
this.lightOpacity = 0;
this.translucent = false;
this.fullBlock = false;
this.blockHardness = 2.5f;
this.blockResistance = 12.5f;
this.blockSoundType = SoundType.LADDER;
this.enableStats = false;
this.setHarvestLevel( "axe" , 0 );
}
@Override
public void registerRecipes( )
{
GameRegistry.addShapedRecipe( new ItemStack( this ) , //
"BBB" , //
"S S" , //
'B' , new ItemStack( this.type.getPlanksBlock( ) , 1 , this.type.getMetaData( ) ) , //
'S' , Items.STICK //
);
}
@Override
public boolean isOpaqueCube( final IBlockState state )
{
return false;
}
@Override
public boolean isFullCube( final IBlockState state )
{
return false;
}
public boolean canConnectTo( final IBlockAccess worldIn , final BlockPos pos )
{
return worldIn.getBlockState( pos ).getBlock( ) == this;
}
@Override
protected BlockStateContainer createBlockState( )
{
return new BlockStateContainer( this , new IProperty[] {
TableBlock.NORTH , TableBlock.EAST , TableBlock.WEST , TableBlock.SOUTH , TableBlock.NE ,
TableBlock.NW , TableBlock.SE , TableBlock.SW
} );
}
@Override
public int getMetaFromState( final IBlockState state )
{
return 0;
}
@Override
public IBlockState getActualState( final IBlockState state , final IBlockAccess worldIn , final BlockPos pos )
{
final BlockPos n = pos.north( );
final BlockPos s = pos.south( );
final BlockPos w = pos.west( );
final BlockPos e = pos.east( );
return state.withProperty( TableBlock.NORTH , Boolean.valueOf( this.canConnectTo( worldIn , n ) ) )//
.withProperty( TableBlock.EAST , Boolean.valueOf( this.canConnectTo( worldIn , e ) ) )//
.withProperty( TableBlock.SOUTH , Boolean.valueOf( this.canConnectTo( worldIn , s ) ) )//
.withProperty( TableBlock.WEST , Boolean.valueOf( this.canConnectTo( worldIn , w ) ) )//
.withProperty( TableBlock.NW , Boolean.valueOf( this.canConnectTo( worldIn , n.west( ) ) ) )//
.withProperty( TableBlock.NE , Boolean.valueOf( this.canConnectTo( worldIn , n.east( ) ) ) )//
.withProperty( TableBlock.SW , Boolean.valueOf( this.canConnectTo( worldIn , s.west( ) ) ) )//
.withProperty( TableBlock.SE , Boolean.valueOf( this.canConnectTo( worldIn , s.east( ) ) ) )//
;
}
@Override
public IBlockState withRotation( final IBlockState state , final Rotation rot )
{
switch ( rot ) {
case CLOCKWISE_180:
return state.withProperty( TableBlock.NORTH , state.getValue( TableBlock.SOUTH ) )//
.withProperty( TableBlock.EAST , state.getValue( TableBlock.WEST ) )//
.withProperty( TableBlock.SOUTH , state.getValue( TableBlock.NORTH ) )//
.withProperty( TableBlock.WEST , state.getValue( TableBlock.EAST ) )//
.withProperty( TableBlock.NW , state.getValue( TableBlock.SE ) )//
.withProperty( TableBlock.NE , state.getValue( TableBlock.SW ) )//
.withProperty( TableBlock.SE , state.getValue( TableBlock.NW ) )//
.withProperty( TableBlock.SW , state.getValue( TableBlock.NE ) )//
;
case COUNTERCLOCKWISE_90:
return state.withProperty( TableBlock.NORTH , state.getValue( TableBlock.EAST ) )//
.withProperty( TableBlock.EAST , state.getValue( TableBlock.SOUTH ) )//
.withProperty( TableBlock.SOUTH , state.getValue( TableBlock.WEST ) )//
.withProperty( TableBlock.WEST , state.getValue( TableBlock.NORTH ) )//
.withProperty( TableBlock.NW , state.getValue( TableBlock.NE ) )//
.withProperty( TableBlock.NE , state.getValue( TableBlock.SE ) )//
.withProperty( TableBlock.SE , state.getValue( TableBlock.SW ) )//
.withProperty( TableBlock.SW , state.getValue( TableBlock.NW ) )//
;
case CLOCKWISE_90:
return state.withProperty( TableBlock.NORTH , state.getValue( TableBlock.WEST ) )//
.withProperty( TableBlock.EAST , state.getValue( TableBlock.NORTH ) )//
.withProperty( TableBlock.SOUTH , state.getValue( TableBlock.EAST ) )//
.withProperty( TableBlock.WEST , state.getValue( TableBlock.SOUTH ) )//
.withProperty( TableBlock.NW , state.getValue( TableBlock.SW ) )//
.withProperty( TableBlock.NE , state.getValue( TableBlock.NW ) )//
.withProperty( TableBlock.SE , state.getValue( TableBlock.NE ) )//
.withProperty( TableBlock.SW , state.getValue( TableBlock.SE ) )//
;
default:
return state;
}
}
@Override
public IBlockState withMirror( final IBlockState state , final Mirror mirrorIn )
{
switch ( mirrorIn ) {
case LEFT_RIGHT:
return state.withProperty( TableBlock.NORTH , state.getValue( TableBlock.SOUTH ) )//
.withProperty( TableBlock.SOUTH , state.getValue( TableBlock.NORTH ) )//
.withProperty( TableBlock.NW , state.getValue( TableBlock.SW ) )//
.withProperty( TableBlock.NE , state.getValue( TableBlock.SE ) )//
.withProperty( TableBlock.SW , state.getValue( TableBlock.NW ) )//
.withProperty( TableBlock.SE , state.getValue( TableBlock.NE ) )//
;
case FRONT_BACK:
return state.withProperty( TableBlock.EAST , state.getValue( TableBlock.WEST ) )//
.withProperty( TableBlock.WEST , state.getValue( TableBlock.EAST ) )//
.withProperty( TableBlock.NW , state.getValue( TableBlock.NE ) )//
.withProperty( TableBlock.NE , state.getValue( TableBlock.NW ) )//
.withProperty( TableBlock.SW , state.getValue( TableBlock.SE ) )//
.withProperty( TableBlock.SE , state.getValue( TableBlock.SW ) )//
;
default:
return state;
}
}
@Override
public AxisAlignedBB getBoundingBox( final IBlockState state , final IBlockAccess source , final BlockPos pos )
{
final IBlockState actual = this.getActualState( state , source , pos );
for ( int i = 0 , dir = 0 ; i < 4 ; i++ , dir += 2 ) {
final boolean c0 = actual.getValue( TableBlock.DIRECTIONS[ dir ] );
final boolean c1 = actual.getValue( TableBlock.DIRECTIONS[ ( dir + 6 ) % 8 ] );
final boolean c10 = actual.getValue( TableBlock.DIRECTIONS[ ( dir + 7 ) % 8 ] );
if ( ! ( c0 || c1 ) || c0 && c1 && !c10 ) {
return Block.FULL_BLOCK_AABB;
}
}
return TableBlock.COLLISION_TOP;
}
@Override
public void addCollisionBoxToList( final IBlockState state , final World worldIn , final BlockPos pos ,
final AxisAlignedBB container , final List< AxisAlignedBB > output , final Entity entity )
{
final IBlockState actual = this.getActualState( state , worldIn , pos );
Block.addCollisionBoxToList( pos , container , output , TableBlock.COLLISION_TOP );
for ( int i = 0 , dir = 0 ; i < 4 ; i++ , dir += 2 ) {
final boolean c0 = actual.getValue( TableBlock.DIRECTIONS[ dir ] );
final boolean c1 = actual.getValue( TableBlock.DIRECTIONS[ ( dir + 6 ) % 8 ] );
final boolean c10 = actual.getValue( TableBlock.DIRECTIONS[ ( dir + 7 ) % 8 ] );
if ( ! ( c0 || c1 ) || c0 && c1 && !c10 ) {
Block.addCollisionBoxToList( pos , container , output , TableBlock.COLLISION_LEGS[ i ] );
}
}
}
@Override
@SideOnly( Side.CLIENT )
public BlockRenderLayer getBlockLayer( )
{
return BlockRenderLayer.CUTOUT;
}
@Override
public boolean isSideSolid( final IBlockState base_state , final IBlockAccess world , final BlockPos pos ,
final EnumFacing side )
{
return side == EnumFacing.UP;
}
@Override
public void neighborChanged( final IBlockState state , final World worldIn , final BlockPos pos ,
final Block blockIn )
{
I_SupportBlock.dropIfUnsupported( state , worldIn , pos , this );
}
@Override
public boolean canPlaceBlockAt( final World worldIn , final BlockPos pos )
{
return super.canPlaceBlockAt( worldIn , pos ) && I_SupportBlock.check( worldIn , pos );
}
}
public final TableBlock OAK;
public final TableBlock BIRCH;
public final TableBlock SPRUCE;
public final TableBlock JUNGLE;
public final TableBlock DARK_OAK;
public final TableBlock ACACIA;
public final TableBlock HEVEA;
public final TableBlock BAMBOO;
public DTables( )
{
CRegistry.addBlock( this.OAK = new TableBlock( MmmMaterials.WOOD.OAK ) );
CRegistry.addBlock( this.BIRCH = new TableBlock( MmmMaterials.WOOD.BIRCH ) );
CRegistry.addBlock( this.SPRUCE = new TableBlock( MmmMaterials.WOOD.SPRUCE ) );
CRegistry.addBlock( this.JUNGLE = new TableBlock( MmmMaterials.WOOD.JUNGLE ) );
CRegistry.addBlock( this.DARK_OAK = new TableBlock( MmmMaterials.WOOD.DARK_OAK ) );
CRegistry.addBlock( this.ACACIA = new TableBlock( MmmMaterials.WOOD.ACACIA ) );
CRegistry.addBlock( this.HEVEA = new TableBlock( MmmMaterials.WOOD.HEVEA ) );
CRegistry.addBlock( this.BAMBOO = new TableBlock( MmmMaterials.WOOD.BAMBOO ) );
}
}

View file

@ -1,111 +0,0 @@
package mmm.deco;
import mmm.materials.Materials;
import mmm.utils.URegistry;
import net.minecraft.block.BlockStone;
public class DecorativeBlocks
{
public static final DStairs STAIRS_GRANITE;
public static final DStairs STAIRS_DIORITE;
public static final DStairs STAIRS_ANDESITE;
public static final DStairs STAIRS_HEVEA;
public static final DStairs STAIRS_BAMBOO;
public static final DSlab SLAB_GRANITE;
public static final DSlab SLAB_DIORITE;
public static final DSlab SLAB_ANDESITE;
public static final DSlab SLAB_HEVEA;
public static final DSlab SLAB_BAMBOO;
public static final DTable TABLE_OAK;
public static final DTable TABLE_BIRCH;
public static final DTable TABLE_SPRUCE;
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;
public static final DChair CHAIR_SPRUCE;
public static final DChair CHAIR_JUNGLE;
public static final DChair CHAIR_DARK_OAK;
public static final DChair CHAIR_ACACIA;
public static final DChair CHAIR_HEVEA;
public static final DChair CHAIR_BAMBOO;
public static final DThrone THRONE_OAK;
public static final DThrone THRONE_BIRCH;
public static final DThrone THRONE_SPRUCE;
public static final DThrone THRONE_JUNGLE;
public static final DThrone THRONE_DARK_OAK;
public static final DThrone THRONE_ACACIA;
public static final DThrone THRONE_HEVEA;
public static final DThrone THRONE_BAMBOO;
public static final DFences FENCE;
static {
final BlockStone.EnumType granite = BlockStone.EnumType.GRANITE_SMOOTH;
final BlockStone.EnumType diorite = BlockStone.EnumType.DIORITE_SMOOTH;
final BlockStone.EnumType andesite = BlockStone.EnumType.ANDESITE_SMOOTH;
// Stairs
STAIRS_GRANITE = DStairs.fromVanillaSmoothStone( granite );
STAIRS_DIORITE = DStairs.fromVanillaSmoothStone( diorite );
STAIRS_ANDESITE = DStairs.fromVanillaSmoothStone( andesite );
STAIRS_HEVEA = DStairs.fromWood( Materials.TREE.HEVEA );
STAIRS_BAMBOO = DStairs.fromWood( Materials.TREE.BAMBOO );
// Slabs
SLAB_GRANITE = DSlab.fromVanillaSmoothStone( granite );
SLAB_DIORITE = DSlab.fromVanillaSmoothStone( diorite );
SLAB_ANDESITE = DSlab.fromVanillaSmoothStone( andesite );
SLAB_HEVEA = DSlab.fromWood( Materials.TREE.HEVEA );
SLAB_BAMBOO = DSlab.fromWood( Materials.TREE.BAMBOO );
// Tables
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( 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 ) );
URegistry.addBlock( CHAIR_HEVEA = new DChair( DWoodType.HEVEA ) );
URegistry.addBlock( CHAIR_BAMBOO = new DChair( DWoodType.BAMBOO ) );
// Thrones
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 );
THRONE_HEVEA = new DThrone( DWoodType.HEVEA);
THRONE_BAMBOO = new DThrone( DWoodType.BAMBOO );
FENCE = new DFences( );
}
public static void preInit( )
{
// EMPTY
}
}

View file

@ -0,0 +1,21 @@
package mmm.deco.fences;
import mmm.core.CRegistry;
import mmm.materials.MWood;
public class DFence
{
public final DFenceBlock BLOCK;
public final DFenceGate GATE;
public DFence( final MWood woodType )
{
CRegistry.addBlock( this.BLOCK = new DFenceBlock( woodType ) );
CRegistry.addBlock( this.GATE = new DFenceGate( woodType ) );
}
}

View file

@ -1,8 +1,9 @@
package mmm.deco;
package mmm.deco.fences;
import mmm.utils.I_URecipeRegistrar;
import mmm.utils.URegistry;
import mmm.core.CRegistry;
import mmm.core.api.I_RecipeRegistrar;
import mmm.materials.MWood;
import net.minecraft.block.BlockFence;
import net.minecraft.block.SoundType;
import net.minecraft.block.material.Material;
@ -14,13 +15,13 @@ import net.minecraftforge.fml.common.registry.GameRegistry;
public class DFenceBlock
extends BlockFence
implements I_URecipeRegistrar
implements I_RecipeRegistrar
{
private DWoodType woodType;
private final MWood woodType;
public DFenceBlock( DWoodType woodType )
public DFenceBlock( final MWood woodType )
{
super( Material.WOOD , woodType.getMapColor( ) );
this.woodType = woodType;
@ -28,7 +29,7 @@ public class DFenceBlock
this.setResistance( 5.f );
this.setSoundType( SoundType.WOOD );
this.setHarvestLevel( "axe" , 0 );
URegistry.setIdentifiers( this , "deco" , "fence" , woodType.getSuffix( ) );
CRegistry.setIdentifiers( this , "deco" , "fence" , woodType.getSuffix( ) );
}

View file

@ -1,9 +1,10 @@
package mmm.deco;
package mmm.deco.fences;
import mmm.utils.I_URecipeRegistrar;
import mmm.utils.I_UStateMapperProvider;
import mmm.utils.URegistry;
import mmm.core.CRegistry;
import mmm.core.api.I_RecipeRegistrar;
import mmm.core.api.blocks.I_StateMapperProvider;
import mmm.materials.MWood;
import mmm.utils.UStateMapper;
import net.minecraft.block.BlockFenceGate;
import net.minecraft.block.BlockPlanks;
@ -19,13 +20,13 @@ import net.minecraftforge.fml.common.registry.GameRegistry;
public class DFenceGate
extends BlockFenceGate
implements I_URecipeRegistrar , I_UStateMapperProvider
implements I_RecipeRegistrar , I_StateMapperProvider
{
private final DWoodType woodType;
private final MWood woodType;
public DFenceGate( DWoodType woodType )
public DFenceGate( final MWood woodType )
{
super( BlockPlanks.EnumType.OAK );
this.woodType = woodType;
@ -33,12 +34,12 @@ public class DFenceGate
this.setResistance( 5.f );
this.setSoundType( SoundType.WOOD );
this.setHarvestLevel( "axe" , 0 );
URegistry.setIdentifiers( this , "deco" , "fence" , "gate" , woodType.getSuffix( ) );
CRegistry.setIdentifiers( this , "deco" , "fence" , "gate" , woodType.getSuffix( ) );
}
@Override
public MapColor getMapColor( IBlockState state )
public MapColor getMapColor( final IBlockState state )
{
return this.woodType.getMapColor( );
}

View file

@ -0,0 +1,20 @@
package mmm.deco.fences;
import mmm.MmmMaterials;
public class DFences
{
public final DFence BAMBOO;
public final DFence HEVEA;
public DFences( )
{
this.BAMBOO = new DFence( MmmMaterials.WOOD.BAMBOO );
this.HEVEA = new DFence( MmmMaterials.WOOD.HEVEA );
}
}

View file

@ -1,8 +1,8 @@
package mmm.deco;
package mmm.deco.slabs;
import mmm.utils.UAccessors;
import mmm.utils.URegistry;
import mmm.core.CAccessors;
import mmm.core.CRegistry;
import net.minecraft.block.Block;
import net.minecraft.block.BlockSlab;
import net.minecraft.block.properties.IProperty;
@ -45,8 +45,8 @@ public abstract class A_DSlabBlock
this.setSoundType( this.modelBlock.getSoundType( ) );
try {
this.setHardness( UAccessors.getBlockHardness( this.modelBlock ) );
this.setResistance( UAccessors.getBlockResistance( this.modelBlock ) + 0.5f );
this.setHardness( CAccessors.getBlockHardness( this.modelBlock ) );
this.setResistance( CAccessors.getBlockResistance( this.modelBlock ) + 0.5f );
} catch ( final Throwable e ) {
if ( e instanceof RuntimeException ) {
throw (RuntimeException) e;
@ -61,7 +61,7 @@ public abstract class A_DSlabBlock
}
this.setDefaultState( state.withProperty( A_DSlabBlock.VARIANT , E_Variant.DEFAULT ) );
URegistry.setIdentifiers( this , "deco" , "slabs" , name );
CRegistry.setIdentifiers( this , "deco" , "slabs" , name );
}

View file

@ -1,4 +1,4 @@
package mmm.deco;
package mmm.deco.slabs;
import java.util.Random;

View file

@ -1,4 +1,4 @@
package mmm.deco;
package mmm.deco.slabs;
import net.minecraft.block.state.IBlockState;

View file

@ -1,9 +1,9 @@
package mmm.deco;
package mmm.deco.slabs;
import mmm.core.CRegistry;
import mmm.core.api.I_RecipeRegistrar;
import mmm.materials.MTree;
import mmm.utils.I_URecipeRegistrar;
import mmm.utils.URegistry;
import net.minecraft.block.Block;
import net.minecraft.block.BlockStone;
import net.minecraft.block.state.IBlockState;
@ -14,20 +14,20 @@ import net.minecraftforge.fml.common.registry.GameRegistry;
public class DSlab
implements I_URecipeRegistrar
public class DSlabParts
implements I_RecipeRegistrar
{
public static DSlab fromVanillaSmoothStone( final BlockStone.EnumType type )
public static DSlabParts fromVanillaSmoothStone( final BlockStone.EnumType type )
{
final IBlockState bs = Blocks.STONE.getDefaultState( ).withProperty( BlockStone.VARIANT , type );
final String name = type.getName( ).replace( "smooth_" , "" );
return new DSlab( bs , name );
return new DSlabParts( bs , name );
}
public static DSlab fromWood( final MTree materials )
public static DSlabParts fromWood( final MTree materials )
{
final DSlab slab = new DSlab( materials.PLANKS.getDefaultState( ) , materials.NAME );
final DSlabParts slab = new DSlabParts( materials.PLANKS.getDefaultState( ) , materials.NAME );
if ( materials.getBaseFlammability( ) != 0 ) {
Blocks.FIRE.setFireInfo( slab.HALF , materials.getBaseFireEncouragement( ) ,
materials.getBaseFlammability( ) * 4 );
@ -42,22 +42,22 @@ public class DSlab
public final ItemSlab ITEM;
public DSlab( final Block modelBlock , final String name )
public DSlabParts( final Block modelBlock , final String name )
{
this( modelBlock.getDefaultState( ) , name );
}
public DSlab( final IBlockState modelState , final String name )
public DSlabParts( final IBlockState modelState , final String name )
{
this.HALF = new DSlabHalf( modelState , name );
this.DOUBLE = new DSlabDouble( this.HALF , name );
this.ITEM = new ItemSlab( this.HALF , this.HALF , this.DOUBLE );
URegistry.setIdentifiers( this.ITEM , "deco" , "slabs" , name );
CRegistry.setIdentifiers( this.ITEM , "deco" , "slabs" , name );
URegistry.addBlock( this.HALF , this.ITEM );
URegistry.addBlock( this.DOUBLE , null );
URegistry.addRecipeRegistrar( this );
CRegistry.addBlock( this.HALF , this.ITEM );
CRegistry.addBlock( this.DOUBLE , null );
CRegistry.addRecipeRegistrar( this );
}

View file

@ -0,0 +1,26 @@
package mmm.deco.slabs;
import mmm.MmmMaterials;
import net.minecraft.block.BlockStone;
public class DSlabs
{
public final DSlabParts GRANITE;
public final DSlabParts DIORITE;
public final DSlabParts ANDESITE;
public final DSlabParts HEVEA;
public final DSlabParts BAMBOO;
public DSlabs( )
{
this.GRANITE = DSlabParts.fromVanillaSmoothStone( BlockStone.EnumType.GRANITE_SMOOTH );
this.DIORITE = DSlabParts.fromVanillaSmoothStone( BlockStone.EnumType.DIORITE_SMOOTH );
this.ANDESITE = DSlabParts.fromVanillaSmoothStone( BlockStone.EnumType.ANDESITE_SMOOTH );
this.HEVEA = DSlabParts.fromWood( MmmMaterials.TREE.HEVEA );
this.BAMBOO = DSlabParts.fromWood( MmmMaterials.TREE.BAMBOO );
}
}

View file

@ -1,8 +1,9 @@
package mmm.deco;
package mmm.deco.thrones;
import mmm.core.CRegistry;
import mmm.materials.MWood;
import mmm.utils.UBlockItemWithVariants;
import mmm.utils.URegistry;
import net.minecraft.item.Item;
@ -15,11 +16,11 @@ public class DThrone
public final Item ITEM;
public DThrone( final DWoodType woodType )
public DThrone( final MWood 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.getSuffix() ) //
CRegistry.addBlock( this.BOTTOM = new DThroneBlock( this , woodType , false ) , null );
CRegistry.addBlock( this.TOP = new DThroneBlock( this , woodType , true ) , null );
this.ITEM = new UBlockItemWithVariants( this.BOTTOM , "deco" , "throne" , woodType.getSuffix( ) ) //
.useColorVariants( ) //
.register( );
}

View file

@ -1,15 +1,16 @@
package mmm.deco;
package mmm.deco.thrones;
import java.util.List;
import java.util.Random;
import mmm.utils.I_UBlockSeat;
import mmm.utils.I_UColoredBlock;
import mmm.utils.I_URecipeRegistrar;
import mmm.utils.I_USupportBlock;
import mmm.core.api.I_RecipeRegistrar;
import mmm.core.api.blocks.I_ColoredBlock;
import mmm.core.api.blocks.I_SeatBlock;
import mmm.core.api.blocks.I_SupportBlock;
import mmm.deco.DSeatEntity;
import mmm.materials.MWood;
import mmm.utils.UMaths;
import mmm.utils.USeat;
import net.minecraft.block.Block;
import net.minecraft.block.BlockHorizontal;
import net.minecraft.block.SoundType;
@ -47,7 +48,7 @@ import net.minecraftforge.fml.relauncher.SideOnly;
public class DThroneBlock
extends Block
implements I_UColoredBlock , I_UBlockSeat , I_URecipeRegistrar
implements I_ColoredBlock , I_SeatBlock , I_RecipeRegistrar
{
public static final PropertyDirection FACING;
@ -65,12 +66,12 @@ public class DThroneBlock
COLOR = PropertyEnum.< EnumDyeColor > create( "color" , EnumDyeColor.class );
}
public final DWoodType woodType;
public final MWood woodType;
public final DThrone parts;
public final boolean isTop;
public DThroneBlock( final DThrone throne , final DWoodType woodType , final boolean isTop )
public DThroneBlock( final DThrone throne , final MWood woodType , final boolean isTop )
{
super( Material.WOOD );
this.woodType = woodType;
@ -78,8 +79,8 @@ public class DThroneBlock
this.isTop = isTop;
this.setCreativeTab( CreativeTabs.DECORATIONS );
this.setRegistryName( "mmm:deco/throne/" + woodType.getSuffix() + "/" + ( isTop ? "top" : "bottom" ) );
this.setUnlocalizedName( "mmm.deco.throne." + woodType.getSuffix() );
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( ) //
@ -131,7 +132,7 @@ public class DThroneBlock
public AxisAlignedBB getBoundingBox( final IBlockState state , final IBlockAccess source , final BlockPos pos )
{
if ( this.isTop ) {
switch ( state.getValue( DChair.FACING ) ) {
switch ( state.getValue( DThroneBlock.FACING ) ) {
case EAST:
return DThroneBlock.COLLISION_TOP_EAST;
case NORTH:
@ -226,7 +227,7 @@ public class DThroneBlock
public boolean canPlaceBlockAt( final World worldIn , final BlockPos pos )
{
return pos.getY( ) < worldIn.getHeight( ) - 1 && super.canPlaceBlockAt( worldIn , pos )
&& super.canPlaceBlockAt( worldIn , pos.up( ) ) && I_USupportBlock.check( worldIn , pos );
&& super.canPlaceBlockAt( worldIn , pos.up( ) ) && I_SupportBlock.check( worldIn , pos );
}
@ -252,7 +253,8 @@ public class DThroneBlock
// BLOCK REMOVAL AND PICKING
// *************************************************************************************************
public Item getItemDropped( IBlockState state , Random rand , int fortune )
@Override
public Item getItemDropped( final IBlockState state , final Random rand , final int fortune )
{
return this.parts.ITEM;
}
@ -303,7 +305,7 @@ public class DThroneBlock
{
DThroneBlock.dropping = true;
final BlockPos otherPos = this.isTop ? pos.down( ) : pos.up( );
Block otherBlock = world.getBlockState( otherPos ).getBlock( );
final Block otherBlock = world.getBlockState( otherPos ).getBlock( );
if ( otherBlock instanceof DThroneBlock && ( (DThroneBlock) otherBlock ).isTop == !this.isTop ) {
world.setBlockToAir( otherPos );
}
@ -335,7 +337,7 @@ public class DThroneBlock
final Block blockIn )
{
if ( ! ( this.isTop || DThroneBlock.dropping ) ) {
I_USupportBlock.dropIfUnsupported( state , worldIn , pos , this );
I_SupportBlock.dropIfUnsupported( state , worldIn , pos , this );
}
}
@ -362,7 +364,7 @@ public class DThroneBlock
} else {
p = pos;
}
return USeat.sit( worldIn , p , playerIn , 0.25 );
return DSeatEntity.sit( worldIn , p , playerIn , 0.25 );
}
@ -392,7 +394,7 @@ public class DThroneBlock
"GWG" , //
"BBB" , //
'W' , new ItemStack( Blocks.WOOL , 1 , dyeColor.getMetadata( ) ) , //
'B' , new ItemStack( this.woodType.getPlanksBlock() , 1 , this.woodType.getMetaData() ) , //
'B' , new ItemStack( this.woodType.getPlanksBlock( ) , 1 , this.woodType.getMetaData( ) ) , //
'G' , Items.GOLD_INGOT , //
'E' , Items.EMERALD //
);

View file

@ -0,0 +1,31 @@
package mmm.deco.thrones;
import mmm.MmmMaterials;
public class DThrones
{
public final DThrone OAK;
public final DThrone BIRCH;
public final DThrone SPRUCE;
public final DThrone JUNGLE;
public final DThrone DARK_OAK;
public final DThrone ACACIA;
public final DThrone HEVEA;
public final DThrone BAMBOO;
public DThrones( )
{
this.OAK = new DThrone( MmmMaterials.WOOD.OAK );
this.BIRCH = new DThrone( MmmMaterials.WOOD.BIRCH );
this.SPRUCE = new DThrone( MmmMaterials.WOOD.SPRUCE );
this.JUNGLE = new DThrone( MmmMaterials.WOOD.JUNGLE );
this.DARK_OAK = new DThrone( MmmMaterials.WOOD.DARK_OAK );
this.ACACIA = new DThrone( MmmMaterials.WOOD.ACACIA );
this.HEVEA = new DThrone( MmmMaterials.WOOD.HEVEA );
this.BAMBOO = new DThrone( MmmMaterials.WOOD.BAMBOO );
}
}

View file

@ -1,8 +1,8 @@
package mmm.food;
import mmm.utils.I_UItemModelProviderBasic;
import mmm.utils.URegistry;
import mmm.core.CRegistry;
import mmm.core.api.items.I_ItemModelProviderBasic;
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.init.Items;
@ -12,7 +12,7 @@ import net.minecraft.item.Item;
public class FMilkBucket
extends Item
implements I_UItemModelProviderBasic
implements I_ItemModelProviderBasic
{
public final FMilkType milkType;
@ -22,7 +22,7 @@ public class FMilkBucket
{
super( );
this.milkType = milkType;
URegistry.setIdentifiers( this , "food" , "milk" , milkType.name );
CRegistry.setIdentifiers( this , "food" , "milk" , milkType.name );
this.setMaxStackSize( 1 );
this.setCreativeTab( CreativeTabs.MISC );
}

View file

@ -3,15 +3,9 @@ package mmm.food;
import java.util.function.Predicate;
import com.google.common.collect.HashMultimap;
import mmm.utils.URegistry;
import mmm.core.CRegistry;
import net.minecraft.entity.passive.EntityAnimal;
import net.minecraft.entity.passive.EntityCow;
import net.minecraft.entity.passive.EntityHorse;
import net.minecraft.entity.passive.EntityPig;
import net.minecraft.entity.passive.EntitySheep;
import net.minecraft.entity.passive.HorseType;
import net.minecraft.init.Items;
import net.minecraft.item.Item;
@ -19,35 +13,6 @@ import net.minecraft.item.Item;
public class FMilkType
{
public static final HashMultimap< Class< ? extends EntityAnimal > , FMilkType > MILK_TYPES;
public static final FMilkType COW;
public static final FMilkType SHEEP;
public static final FMilkType PIG;
public static final FMilkType HORSE;
public static final FMilkType DONKEY;
static {
MILK_TYPES = HashMultimap.create( );
COW = new FMilkType( );
SHEEP = new FMilkType( "sheep" , EntitySheep.class );
PIG = new FMilkType( "pig" , EntityPig.class ) //
.setPeriod( 48000 );
HORSE = new FMilkType( "horse" , EntityHorse.class ) //
.setExtraCheck( a -> ( (EntityHorse) a ).getType( ) == HorseType.HORSE ) //
.setPeriod( 24000 );
DONKEY = new FMilkType( "donkey" , EntityHorse.class )
.setExtraCheck( a -> ( (EntityHorse) a ).getType( ) == HorseType.DONKEY ) //
.setPeriod( 36000 );
}
public static void preInit( )
{
// EMPTY
}
public final String name;
public final boolean isVanilla;
public final Class< ? extends EntityAnimal > animal;
@ -56,7 +21,7 @@ public class FMilkType
private Predicate< EntityAnimal > extraCheck;
private FMilkType( )
public FMilkType( )
{
this( "cow" , true , EntityCow.class , Items.MILK_BUCKET );
}
@ -76,10 +41,10 @@ public class FMilkType
this.animal = animal;
if ( bucket == null ) {
bucket = new FMilkBucket( this );
URegistry.addItem( bucket );
CRegistry.addItem( bucket );
}
this.bucket = bucket;
FMilkType.MILK_TYPES.put( animal , this );
}
@ -92,11 +57,11 @@ public class FMilkType
public int getPeriod( )
{
return period;
return this.period;
}
public FMilkType setPeriod( int period )
public FMilkType setPeriod( final int period )
{
this.period = period;
return this;

View file

@ -5,8 +5,9 @@ import java.util.Set;
import io.netty.buffer.ByteBuf;
import mmm.Mmm;
import mmm.utils.I_UMessage;
import mmm.utils.UNetwork;
import mmm.MmmFood;
import mmm.core.CNetwork;
import mmm.core.api.I_Message;
import net.minecraft.client.entity.EntityPlayerSP;
import net.minecraft.entity.Entity;
import net.minecraft.entity.passive.EntityAnimal;
@ -19,10 +20,8 @@ import net.minecraft.nbt.NBTBase;
import net.minecraft.nbt.NBTTagLong;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.common.capabilities.CapabilityInject;
import net.minecraftforge.common.capabilities.CapabilityManager;
import net.minecraftforge.common.capabilities.ICapabilitySerializable;
import net.minecraftforge.event.AttachCapabilitiesEvent;
import net.minecraftforge.event.entity.player.PlayerEvent;
@ -105,7 +104,7 @@ public class FMilkable
// *************************************************************************************************************
public static class Message
implements I_UMessage
implements I_Message
{
private int entityId;
private long lastMilking;
@ -160,7 +159,7 @@ public class FMilkable
@SubscribeEvent
public void attachCapability( final AttachCapabilitiesEvent.Entity event )
{
if ( FMilkType.MILK_TYPES.containsKey( event.getEntity( ).getClass( ) ) ) {
if ( MmmFood.MILK.TYPES.containsKey( event.getEntity( ).getClass( ) ) ) {
event.addCapability( FMilkable.ID , new Provider( ) );
}
}
@ -175,7 +174,7 @@ public class FMilkable
}
final Entity entity = event.getTarget( );
if ( entity.hasCapability( FMilkable.CAPABILITY , null ) ) {
UNetwork.sendTo( new Message( entity ) , (EntityPlayerMP) player );
CNetwork.sendTo( new Message( entity ) , (EntityPlayerMP) player );
}
}
@ -202,7 +201,7 @@ public class FMilkable
}
// Find actual milk type
final Set< FMilkType > milkTypes = FMilkType.MILK_TYPES.get( animal.getClass( ) );
final Set< FMilkType > milkTypes = MmmFood.MILK.TYPES.get( animal.getClass( ) );
FMilkType milkType = null;
for ( final FMilkType type : milkTypes ) {
if ( type.check( animal ) ) {
@ -229,7 +228,7 @@ public class FMilkable
// Send updates to players
if ( !player.worldObj.isRemote ) {
UNetwork.sendToAll( new Message( animal ) );
CNetwork.sendToAll( new Message( animal ) );
}
// Actually milk the animal
@ -245,16 +244,6 @@ public class FMilkable
}
}
// *************************************************************************************************************
public static void register( )
{
CapabilityManager.INSTANCE.register( FMilkable.class , new Storage( ) , FMilkable::new );
MinecraftForge.EVENT_BUS.register( new EventHandler( ) );
UNetwork.addClientMessage( Message.class );
}
// *************************************************************************************************************
private long lastMilking = -500000;

View file

@ -0,0 +1,57 @@
package mmm.food;
import com.google.common.collect.HashMultimap;
import mmm.core.CNetwork;
import mmm.food.FMilkable.EventHandler;
import mmm.food.FMilkable.Message;
import mmm.food.FMilkable.Storage;
import net.minecraft.entity.passive.EntityAnimal;
import net.minecraft.entity.passive.EntityHorse;
import net.minecraft.entity.passive.EntityPig;
import net.minecraft.entity.passive.EntitySheep;
import net.minecraft.entity.passive.HorseType;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.common.capabilities.CapabilityManager;
public class FMilks
{
public final HashMultimap< Class< ? extends EntityAnimal > , FMilkType > TYPES;
public final FMilkType COW;
public final FMilkType SHEEP;
public final FMilkType PIG;
public final FMilkType HORSE;
public final FMilkType DONKEY;
public FMilks( )
{
this.TYPES = HashMultimap.create( );
this.COW = this.addMilk( new FMilkType( ) );
this.SHEEP = this.addMilk( new FMilkType( "sheep" , EntitySheep.class ) );
this.PIG = this.addMilk( new FMilkType( "pig" , EntityPig.class ) //
.setPeriod( 48000 ) );
this.HORSE = this.addMilk( new FMilkType( "horse" , EntityHorse.class ) //
.setExtraCheck( a -> ( (EntityHorse) a ).getType( ) == HorseType.HORSE ) //
.setPeriod( 24000 ) );
this.DONKEY = this.addMilk( new FMilkType( "donkey" , EntityHorse.class )
.setExtraCheck( a -> ( (EntityHorse) a ).getType( ) == HorseType.DONKEY ) //
.setPeriod( 36000 ) );
CapabilityManager.INSTANCE.register( FMilkable.class , new Storage( ) , FMilkable::new );
MinecraftForge.EVENT_BUS.register( new EventHandler( ) );
CNetwork.addClientMessage( Message.class );
}
private FMilkType addMilk( final FMilkType type )
{
this.TYPES.put( type.animal , type );
return type;
}
}

View file

@ -1,17 +0,0 @@
package mmm.food;
public class Food
{
static {
FMilkType.preInit( );
FMilkable.register( );
}
public static void preInit( )
{
// EMPTY
}
}

View file

@ -281,7 +281,7 @@ public class MAlloyRecipe
}
public boolean hasInput( ItemStack stack )
public boolean hasInput( final ItemStack stack )
{
for ( int i = 0 ; i < this.inputs.length ; i++ ) {
if ( this.inputs[ i ].isItemEqual( stack ) ) {

View file

@ -1,8 +1,9 @@
package mmm.materials;
import mmm.utils.I_URecipeRegistrar;
import mmm.utils.URegistry;
import mmm.MmmMaterials;
import mmm.core.CRegistry;
import mmm.core.api.I_RecipeRegistrar;
import net.minecraft.block.material.MapColor;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
@ -10,19 +11,19 @@ import net.minecraft.init.Items;
public class MAlloys
implements I_URecipeRegistrar
implements I_RecipeRegistrar
{
public final MMetal BRONZE;
public final MMetal STEEL;
// public static final MMetal RED_COPPER;
MAlloys( )
public MAlloys( )
{
URegistry.addRecipeRegistrar( this );
CRegistry.addRecipeRegistrar( this );
BRONZE = new MMetal( "bronze" , 0f , 5f , 1 , MapColor.BROWN );
STEEL = new MMetal( "steel" , 0f , 7f , 2 , MapColor.LIGHT_BLUE ) //
this.BRONZE = new MMetal( "bronze" , 0f , 5f , 1 , MapColor.BROWN );
this.STEEL = new MMetal( "steel" , 0f , 7f , 2 , MapColor.LIGHT_BLUE ) //
.setBlockResistance( 12f );
// RED_COPPER = new MMetal( "red_copper" , 0f , 2f , 1 , MapColor.RED );
}
@ -33,36 +34,36 @@ public class MAlloys
{
// Bronze
MAlloyRecipe.build( ).setName( "materials/bronze" ).setBurnTime( 400 ) //
.addInput( Materials.METAL.COPPER.INGOT ) //
.addInput( Materials.METAL.TIN.NUGGET ) //
.addInput( MmmMaterials.METAL.COPPER.INGOT ) //
.addInput( MmmMaterials.METAL.TIN.NUGGET ) //
.setOutput( this.BRONZE.INGOT ).setSlag( 1 ) //
.register( );
// Pig iron
MAlloyRecipe.build( ).setName( "materials/pig_iron/from_ingot" ).setBurnTime( 1600 ) //
.addInput( Materials.METAL.IRON.INGOT ) //
.addInput( Materials.ROCK.LIMESTONE ) //
.addInput( Materials.ITEM.COKE ) //
.setOutput( Materials.ITEM.PIG_IRON_INGOT , 2 ).setSlag( 3 ) //
.addInput( MmmMaterials.METAL.IRON.INGOT ) //
.addInput( MmmMaterials.ROCK.LIMESTONE ) //
.addInput( MmmMaterials.ITEM.COKE ) //
.setOutput( MmmMaterials.ITEM.PIG_IRON_INGOT , 2 ).setSlag( 3 ) //
.register( );
MAlloyRecipe.build( ).setName( "materials/pig_iron/from_ore" ).setBurnTime( 1600 ) //
.addInput( Blocks.IRON_ORE ) //
.addInput( Materials.ROCK.LIMESTONE ) //
.addInput( Materials.ITEM.COKE ) //
.setOutput( Materials.ITEM.PIG_IRON_INGOT ).setSlag( 5 ) //
.addInput( MmmMaterials.ROCK.LIMESTONE ) //
.addInput( MmmMaterials.ITEM.COKE ) //
.setOutput( MmmMaterials.ITEM.PIG_IRON_INGOT ).setSlag( 5 ) //
.register( );
// Steel
MAlloyRecipe.build( ).setName( "materials/steel/from_ingot" ).setBurnTime( 3200 ) //
.addInput( Materials.METAL.IRON.INGOT ) //
.addInput( Materials.ROCK.LIMESTONE ) //
.addInput( Materials.ITEM.PIG_IRON_INGOT ) //
.addInput( MmmMaterials.METAL.IRON.INGOT ) //
.addInput( MmmMaterials.ROCK.LIMESTONE ) //
.addInput( MmmMaterials.ITEM.PIG_IRON_INGOT ) //
.setOutput( this.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 ) //
.addInput( MmmMaterials.ROCK.LIMESTONE ) //
.addInput( MmmMaterials.ITEM.PIG_IRON_INGOT ) //
.setOutput( this.STEEL.INGOT ).setSlag( 5 ) //
.register( );
@ -72,6 +73,6 @@ public class MAlloys
// XXX coke is not an alloy
MAlloyRecipe.build( ).setName( "materials/coke" ).setBurnTime( 3200 ).addInput( Items.COAL , 2 )
.setOutput( Materials.ITEM.COKE ).setSlag( 1 ).register( );
.setOutput( MmmMaterials.ITEM.COKE ).setSlag( 1 ).register( );
}
}

View file

@ -1,8 +1,9 @@
package mmm.materials;
import mmm.utils.I_URecipeRegistrar;
import mmm.utils.URegistry;
import mmm.MmmMaterials;
import mmm.core.CRegistry;
import mmm.core.api.I_RecipeRegistrar;
import net.minecraft.init.Items;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
@ -11,7 +12,7 @@ import net.minecraftforge.fml.common.registry.GameRegistry;
public class MItems
implements I_URecipeRegistrar
implements I_RecipeRegistrar
{
public final Item SLAG;
public final Item COKE;
@ -25,24 +26,24 @@ public class MItems
public final Item SALTPETER;
MItems( )
public MItems( )
{
URegistry.addRecipeRegistrar( this );
CRegistry.addRecipeRegistrar( this );
// Items that do not correspond to metals or ores
SLAG = Materials.makeItem( "slag" );
COKE = Materials.makeFuel( "coke" , 9600 );
PIG_IRON_INGOT = new MMetalItem( E_MMetalItemType.INGOT , "pig_iron" );
URegistry.addItem( PIG_IRON_INGOT );
this.SLAG = MmmMaterials.makeItem( "slag" );
this.COKE = MmmMaterials.makeFuel( "coke" , 9600 );
this.PIG_IRON_INGOT = new MMetalItem( E_MMetalItemType.INGOT , "pig_iron" );
CRegistry.addItem( this.PIG_IRON_INGOT );
// Ore drops
MALACHITE = Materials.makeItem( "malachite" );
CUPRITE = Materials.makeItem( "cuprite" );
CASSITERITE = Materials.makeItem( "cassiterite" );
SPHALERITE = Materials.makeItem( "sphalerite" );
ROCK_SALT = Materials.makeItem( "rock_salt" );
SULPHUR_POWDER = Materials.makeItem( "sulphur_powder" );
SALTPETER = Materials.makeItem( "saltpeter_powder" );
this.MALACHITE = MmmMaterials.makeItem( "malachite" );
this.CUPRITE = MmmMaterials.makeItem( "cuprite" );
this.CASSITERITE = MmmMaterials.makeItem( "cassiterite" );
this.SPHALERITE = MmmMaterials.makeItem( "sphalerite" );
this.ROCK_SALT = MmmMaterials.makeItem( "rock_salt" );
this.SULPHUR_POWDER = MmmMaterials.makeItem( "sulphur_powder" );
this.SALTPETER = MmmMaterials.makeItem( "saltpeter_powder" );
}
@ -51,12 +52,12 @@ public class MItems
{
// Green dye from malachite
GameRegistry.addShapelessRecipe( new ItemStack( Items.DYE , 1 , 2 ) ,
new ItemStack( Materials.ITEM.MALACHITE ) );
new ItemStack( MmmMaterials.ITEM.MALACHITE ) );
// Gunpowder from saltpeter, sulphur and charcoal
GameRegistry.addShapelessRecipe( new ItemStack( Items.GUNPOWDER ) , //
new ItemStack( Materials.ITEM.SALTPETER ) , //
new ItemStack( Materials.ITEM.SULPHUR_POWDER ) , //
new ItemStack( MmmMaterials.ITEM.SALTPETER ) , //
new ItemStack( MmmMaterials.ITEM.SULPHUR_POWDER ) , //
new ItemStack( Items.COAL , 1 , 1 ) );
}

View file

@ -5,9 +5,9 @@ import java.util.Arrays;
import java.util.List;
import java.util.Random;
import mmm.utils.I_UTintedBlock;
import mmm.utils.I_UTintedItem;
import mmm.utils.URegistry;
import mmm.core.CRegistry;
import mmm.core.api.blocks.I_TintedBlock;
import mmm.core.api.items.I_TintedItem;
import net.minecraft.block.Block;
import net.minecraft.block.BlockLeaves;
import net.minecraft.block.BlockPlanks;
@ -34,7 +34,7 @@ import net.minecraftforge.fml.relauncher.SideOnly;
public class MLeaves
extends BlockLeaves
implements I_UTintedBlock , I_UTintedItem
implements I_TintedBlock , I_TintedItem
{
private final MTree wood;
@ -48,7 +48,7 @@ public class MLeaves
.withProperty( BlockLeaves.CHECK_DECAY , true )//
.withProperty( BlockLeaves.DECAYABLE , true ) );
URegistry.setIdentifiers( this , "materials" , "leaves" , wood.NAME );
CRegistry.setIdentifiers( this , "materials" , "leaves" , wood.NAME );
}

View file

@ -1,7 +1,7 @@
package mmm.materials;
import mmm.utils.URegistry;
import mmm.core.CRegistry;
import net.minecraft.block.Block;
import net.minecraft.block.BlockLog;
import net.minecraft.block.material.MapColor;
@ -34,7 +34,7 @@ public class MLog
this.setDefaultState( this.blockState.getBaseState( )//
.withProperty( BlockLog.LOG_AXIS , BlockLog.EnumAxis.Y ) );
URegistry.setIdentifiers( this , "materials" , "log" , wood.NAME );
CRegistry.setIdentifiers( this , "materials" , "log" , wood.NAME );
}

View file

@ -1,8 +1,8 @@
package mmm.materials;
import mmm.utils.I_URecipeRegistrar;
import mmm.utils.URegistry;
import mmm.core.CRegistry;
import mmm.core.api.I_RecipeRegistrar;
import net.minecraft.block.Block;
import net.minecraft.block.material.MapColor;
import net.minecraft.item.Item;
@ -12,7 +12,7 @@ import net.minecraftforge.fml.common.registry.GameRegistry;
public class MMetal
implements I_URecipeRegistrar
implements I_RecipeRegistrar
{
public final float SMELTING_XP;
@ -36,7 +36,7 @@ public class MMetal
}
public MMetal setBlockResistance( float resistance )
public MMetal setBlockResistance( final float resistance )
{
this.BLOCK.setResistance( resistance );
return this;
@ -57,19 +57,19 @@ public class MMetal
{
boolean custom = false;
if ( this.BLOCK instanceof MMetalBlock ) {
URegistry.addBlock( this.BLOCK );
CRegistry.addBlock( this.BLOCK );
custom = true;
}
if ( this.INGOT instanceof MMetalItem ) {
URegistry.addItem( this.INGOT );
CRegistry.addItem( this.INGOT );
custom = true;
}
if ( this.NUGGET instanceof MMetalItem ) {
URegistry.addItem( this.NUGGET );
CRegistry.addItem( this.NUGGET );
custom = true;
}
if ( custom ) {
URegistry.addRecipeRegistrar( this );
CRegistry.addRecipeRegistrar( this );
}
return this;
}

View file

@ -1,7 +1,7 @@
package mmm.materials;
import mmm.utils.URegistry;
import mmm.core.CRegistry;
import net.minecraft.block.Block;
import net.minecraft.block.SoundType;
import net.minecraft.block.material.MapColor;
@ -22,7 +22,7 @@ public class MMetalBlock
this.setSoundType( SoundType.METAL );
this.setCreativeTab( CreativeTabs.BUILDING_BLOCKS );
this.setHarvestLevel( "pickaxe" , harvestLevel );
URegistry.setIdentifiers( this , "materials" , "block" , name );
CRegistry.setIdentifiers( this , "materials" , "block" , name );
}
}

View file

@ -1,7 +1,7 @@
package mmm.materials;
import mmm.utils.URegistry;
import mmm.core.CRegistry;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item;
@ -14,7 +14,7 @@ public class MMetalItem
{
super( );
this.setCreativeTab( CreativeTabs.MATERIALS );
URegistry.setIdentifiers( this , "materials" , type.name , name );
CRegistry.setIdentifiers( this , "materials" , type.name , name );
}
}

View file

@ -16,15 +16,15 @@ public class MMetals
public final MMetal ZINC;
MMetals( )
public MMetals( )
{
GOLD = new MMetal( Blocks.GOLD_BLOCK , Items.GOLD_INGOT , Items.GOLD_NUGGET );
IRON = new MMetal( Blocks.IRON_BLOCK , Items.IRON_INGOT , //
this.GOLD = new MMetal( Blocks.GOLD_BLOCK , Items.GOLD_INGOT , Items.GOLD_NUGGET );
this.IRON = new MMetal( Blocks.IRON_BLOCK , Items.IRON_INGOT , //
new MMetalItem( E_MMetalItemType.NUGGET , "iron" ) );
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 );
this.COPPER = new MMetal( "copper" , 0.4f , 4f , 1 , MapColor.DIRT );
this.TIN = new MMetal( "tin" , 0.6f , 1f , 0 , MapColor.GRAY );
this.ZINC = new MMetal( "zinc" , 0.4f , 4f , 1 , MapColor.GRAY );
}
}

View file

@ -1,9 +1,9 @@
package mmm.materials;
import mmm.utils.I_UTrapBlock;
import mmm.core.CRegistry;
import mmm.core.api.blocks.I_TrapBlock;
import mmm.utils.UMaths;
import mmm.utils.URegistry;
import net.minecraft.block.Block;
import net.minecraft.block.SoundType;
import net.minecraft.block.material.Material;
@ -19,7 +19,7 @@ import net.minecraft.world.World;
public class MMud
extends Block
implements I_UTrapBlock
implements I_TrapBlock
{
private static final AxisAlignedBB MUD_AABB = UMaths.makeBlockAABB( 0 , 0 , 0 , 16 , 15 , 16 );
@ -31,7 +31,7 @@ public class MMud
this.setHarvestLevel( "shovel" , 0 );
this.setSoundType( SoundType.GROUND );
this.setCreativeTab( CreativeTabs.BUILDING_BLOCKS );
URegistry.setIdentifiers( this , "materials" , "trap" , "mud" );
CRegistry.setIdentifiers( this , "materials" , "trap" , "mud" );
}

View file

@ -5,8 +5,8 @@ import java.util.Random;
import javax.annotation.Nullable;
import mmm.utils.I_URecipeRegistrar;
import mmm.utils.URegistry;
import mmm.core.CRegistry;
import mmm.core.api.I_RecipeRegistrar;
import net.minecraft.block.Block;
import net.minecraft.block.SoundType;
import net.minecraft.block.material.MapColor;
@ -25,7 +25,7 @@ import net.minecraftforge.fml.common.registry.GameRegistry;
public class MOre
extends Block
implements I_URecipeRegistrar
implements I_RecipeRegistrar
{
private int dropMin , dropMax;
private Item dropItems;
@ -52,12 +52,12 @@ public class MOre
this.setHardness( 3.0f );
this.setResistance( 5.0f );
this.setHarvestLevel( "pickaxe" , harvestLevel );
URegistry.setIdentifiers( this , "materials" , "ore" , name );
CRegistry.setIdentifiers( this , "materials" , "ore" , name );
this.dropMin = this.dropMax = 1;
this.expMin = this.expMax = 0;
this.metal = null;
this.genQuantity = 0;
URegistry.addBlock( this );
CRegistry.addBlock( this );
}

View file

@ -3,8 +3,9 @@ package mmm.materials;
import java.util.List;
import mmm.utils.I_UOreGenerationRegistrar;
import mmm.utils.URegistry;
import mmm.MmmMaterials;
import mmm.core.CRegistry;
import mmm.core.api.I_OreGenerationRegistrar;
import mmm.world.WLocation;
import mmm.world.gen.WGOreCondition;
import mmm.world.gen.WGOreParameters;
@ -14,7 +15,7 @@ import net.minecraft.init.Blocks;
public class MOres
implements I_UOreGenerationRegistrar
implements I_OreGenerationRegistrar
{
public final MOre COPPER;
public final MOre MALACHITE;
@ -30,42 +31,42 @@ public class MOres
public final MOre SALTPETER;
MOres( )
public MOres( )
{
URegistry.addOreGenerationRegistrar( this );
CRegistry.addOreGenerationRegistrar( this );
COPPER = new MOre( "copper" , 1 ) //
.setMetal( Materials.METAL.COPPER );
MALACHITE = new MOre( "malachite" , 1 )//
.setMetal( Materials.METAL.COPPER ) //
.setDrops( Materials.ITEM.MALACHITE ) //
this.COPPER = new MOre( "copper" , 1 ) //
.setMetal( MmmMaterials.METAL.COPPER );
this.MALACHITE = new MOre( "malachite" , 1 )//
.setMetal( MmmMaterials.METAL.COPPER ) //
.setDrops( MmmMaterials.ITEM.MALACHITE ) //
.setExperience( 1 , 3 );
CUPRITE = new MOre( "cuprite" , 1 ) //
.setMetal( Materials.METAL.COPPER , 2 ) //
.setDrops( Materials.ITEM.CUPRITE ) //
this.CUPRITE = new MOre( "cuprite" , 1 ) //
.setMetal( MmmMaterials.METAL.COPPER , 2 ) //
.setDrops( MmmMaterials.ITEM.CUPRITE ) //
.setExperience( 2 , 5 );
CASSITERITE = new MOre( "cassiterite" , 0 )//
.setMetal( Materials.METAL.TIN , 1 , E_MMetalItemType.NUGGET ) //
.setDrops( Materials.ITEM.CASSITERITE , 2 , 5 ) //
this.CASSITERITE = new MOre( "cassiterite" , 0 )//
.setMetal( MmmMaterials.METAL.TIN , 1 , E_MMetalItemType.NUGGET ) //
.setDrops( MmmMaterials.ITEM.CASSITERITE , 2 , 5 ) //
.setExperience( 2 , 5 );
SPHALERITE = new MOre( "sphalerite" , 1 ) //
.setMetal( Materials.METAL.ZINC ) //
.setDrops( Materials.ITEM.SPHALERITE ) //
this.SPHALERITE = new MOre( "sphalerite" , 1 ) //
.setMetal( MmmMaterials.METAL.ZINC ) //
.setDrops( MmmMaterials.ITEM.SPHALERITE ) //
.setExperience( 1 , 3 );
ROCK_SALT = new MOre( "rock_salt" , 0 ) //
.setDrops( Materials.ITEM.ROCK_SALT , 2 , 5 ) //
this.ROCK_SALT = new MOre( "rock_salt" , 0 ) //
.setDrops( MmmMaterials.ITEM.ROCK_SALT , 2 , 5 ) //
.setExperience( 0 , 1 );
BAUXITE = new MOre( "bauxite" , 1 );
GALENA = new MOre( "galena" , 1 );
CINNABAR = new MOre( "cinnabar" , 1 );
SULPHUR = new MOre( "sulphur" , 0 ) //
this.BAUXITE = new MOre( "bauxite" , 1 );
this.GALENA = new MOre( "galena" , 1 );
this.CINNABAR = new MOre( "cinnabar" , 1 );
this.SULPHUR = new MOre( "sulphur" , 0 ) //
.setResistance( 2.0f ) //
.setHardness( 1.0f ) //
.setDrops( Materials.ITEM.SULPHUR_POWDER , 3 , 6 ) //
.setDrops( MmmMaterials.ITEM.SULPHUR_POWDER , 3 , 6 ) //
.setExperience( 1 , 2 );
SILVER = new MOre( "silver" , 2 );
SALTPETER = new MOre( "saltpeter" , 0 ) //
.setDrops( Materials.ITEM.SALTPETER , 4 , 8 ) //
this.SILVER = new MOre( "silver" , 2 );
this.SALTPETER = new MOre( "saltpeter" , 0 ) //
.setDrops( MmmMaterials.ITEM.SALTPETER , 4 , 8 ) //
.setExperience( 0 , 1 );
}

View file

@ -1,7 +1,7 @@
package mmm.materials;
import mmm.utils.URegistry;
import mmm.core.CRegistry;
import net.minecraft.block.Block;
import net.minecraft.block.material.MapColor;
import net.minecraft.block.material.Material;
@ -25,7 +25,7 @@ public class MPlanks
this.setCreativeTab( CreativeTabs.BUILDING_BLOCKS );
this.setHarvestLevel( "axe" , 0 );
URegistry.setIdentifiers( this , "materials" , "planks" , wood.NAME );
CRegistry.setIdentifiers( this , "materials" , "planks" , wood.NAME );
}

View file

@ -1,8 +1,8 @@
package mmm.materials;
import mmm.utils.I_UTrapBlock;
import mmm.utils.URegistry;
import mmm.core.CRegistry;
import mmm.core.api.blocks.I_TrapBlock;
import net.minecraft.block.Block;
import net.minecraft.block.BlockFalling;
import net.minecraft.block.SoundType;
@ -22,12 +22,12 @@ import net.minecraftforge.common.IPlantable;
public class MQuicksand
extends BlockFalling
implements I_UTrapBlock
implements I_TrapBlock
{
public final IBlockState forType;
public MQuicksand( String name , IBlockState forType )
public MQuicksand( final String name , final IBlockState forType )
{
super( Material.SAND );
this.forType = forType;
@ -35,7 +35,7 @@ public class MQuicksand
this.setSoundType( SoundType.SAND );
this.setCreativeTab( CreativeTabs.BUILDING_BLOCKS );
this.setHarvestLevel( "shovel" , 0 );
URegistry.setIdentifiers( this , "materials" , "trap" , name );
CRegistry.setIdentifiers( this , "materials" , "trap" , name );
}
@ -56,7 +56,7 @@ public class MQuicksand
@Override
public MapColor getMapColor( IBlockState state )
public MapColor getMapColor( final IBlockState state )
{
return this.forType.getMapColor( );
}
@ -79,8 +79,8 @@ public class MQuicksand
@Override
public boolean canSustainPlant( IBlockState state , IBlockAccess world , BlockPos pos , EnumFacing direction ,
IPlantable plantable )
public boolean canSustainPlant( final IBlockState state , final IBlockAccess world , final BlockPos pos ,
final EnumFacing direction , final IPlantable plantable )
{
switch ( plantable.getPlantType( world , pos.offset( direction ) ) ) {

View file

@ -1,7 +1,7 @@
package mmm.materials;
import mmm.utils.URegistry;
import mmm.core.CRegistry;
import net.minecraft.block.Block;
import net.minecraft.block.SoundType;
import net.minecraft.block.material.MapColor;
@ -36,8 +36,8 @@ public class MRock
this.setResistance( resistance );
this.setSoundType( SoundType.STONE );
this.setHarvestLevel( "pickaxe" , harvestLevel );
URegistry.setIdentifiers( this , "materials" , "rock" , name );
URegistry.addBlock( this );
CRegistry.setIdentifiers( this , "materials" , "rock" , name );
CRegistry.addBlock( this );
}
}

View file

@ -3,10 +3,11 @@ package mmm.materials;
import java.util.List;
import mmm.utils.I_UOreGenerationRegistrar;
import mmm.utils.URegistry;
import mmm.MmmMaterials;
import mmm.core.CRegistry;
import mmm.core.api.I_OreGenerationRegistrar;
import mmm.world.WLocation;
import mmm.world.WLocationInBiome;
import mmm.world.WLocationInBiomeClass;
import mmm.world.gen.WGOreCondition;
import mmm.world.gen.WGOreParameters;
import net.minecraft.block.material.MapColor;
@ -16,7 +17,7 @@ import net.minecraft.world.biome.BiomeSwamp;
public class MRocks
implements I_UOreGenerationRegistrar
implements I_OreGenerationRegistrar
{
public final MRock LIMESTONE;
@ -25,9 +26,9 @@ public class MRocks
public final MRock BASALT;
MRocks( )
public MRocks( )
{
URegistry.addOreGenerationRegistrar( this );
CRegistry.addOreGenerationRegistrar( this );
this.LIMESTONE = new MRock( "limestone" , MapColor.SNOW , 0 , 1f , 7.5f );
this.CHALK = new MRock( "chalk" , MapColor.SNOW , 0 , 1f , 5f );
@ -41,13 +42,13 @@ public class MRocks
{
conditions.add( new WGOreCondition( //
WLocation.inOverworld( ) , //
new WGOreParameters( Materials.ROCK.LIMESTONE , 15 , 40 ) ) );
new WGOreParameters( MmmMaterials.ROCK.LIMESTONE , 15 , 40 ) ) );
conditions.add( new WGOreCondition( //
new WLocationInBiome<>( BiomePlains.class ) , //
new WGOreParameters( Materials.ROCK.SLATE , 15 , 40 ) ) );
new WLocationInBiomeClass<>( BiomePlains.class ) , //
new WGOreParameters( MmmMaterials.ROCK.SLATE , 15 , 40 ) ) );
conditions.add( new WGOreCondition( //
new WLocationInBiome<>( BiomeSwamp.class ) , //
new WGOreParameters( Materials.ROCK.SLATE , 20 , 60 ) ) );
new WLocationInBiomeClass<>( BiomeSwamp.class ) , //
new WGOreParameters( MmmMaterials.ROCK.SLATE , 20 , 60 ) ) );
}
}

View file

@ -3,7 +3,7 @@ package mmm.materials;
import java.util.Random;
import mmm.utils.URegistry;
import mmm.core.CRegistry;
import net.minecraft.block.Block;
import net.minecraft.block.IGrowable;
import net.minecraft.block.SoundType;
@ -46,7 +46,7 @@ public class MSapling
this.setDefaultState( this.blockState.getBaseState( ).withProperty( MSapling.STAGE , 0 ) );
URegistry.setIdentifiers( this , "materials" , "sapling" , wood.NAME );
CRegistry.setIdentifiers( this , "materials" , "sapling" , wood.NAME );
}

View file

@ -1,8 +1,8 @@
package mmm.materials;
import mmm.utils.I_UTintedBlock;
import mmm.utils.I_UTintedItem;
import mmm.core.api.blocks.I_TintedBlock;
import mmm.core.api.items.I_TintedItem;
import net.minecraft.block.state.IBlockState;
import net.minecraft.client.renderer.color.IBlockColor;
import net.minecraft.client.renderer.color.IItemColor;
@ -21,7 +21,7 @@ import net.minecraftforge.fml.relauncher.SideOnly;
public class MSwampPit
extends MQuicksand
implements I_UTintedBlock , I_UTintedItem
implements I_TintedBlock , I_TintedItem
{
public MSwampPit( )
@ -40,8 +40,8 @@ public class MSwampPit
@Override
public boolean canSustainPlant( IBlockState state , IBlockAccess world , BlockPos pos , EnumFacing direction ,
IPlantable plantable )
public boolean canSustainPlant( final IBlockState state , final IBlockAccess world , final BlockPos pos ,
final EnumFacing direction , final IPlantable plantable )
{
return false;
}

View file

@ -1,4 +1,4 @@
package mmm.utils;
package mmm.materials;
import java.util.ArrayList;
@ -8,22 +8,23 @@ import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.LinkedHashMultimap;
import com.google.common.collect.Lists;
import mmm.core.api.blocks.I_TrapBlock;
import net.minecraft.block.Block;
import net.minecraft.block.state.IBlockState;
public enum UTrapBlocks {
public enum MTrapBlocks {
INSTANCE;
private final ArrayListMultimap< IBlockState , I_UTrapBlock > traps = ArrayListMultimap.create( );
private final ArrayListMultimap< IBlockState , I_TrapBlock > traps = ArrayListMultimap.create( );
private final ArrayListMultimap< IBlockState , IBlockState > replacements = ArrayListMultimap.create( );
private final LinkedHashMultimap< IBlockState , String > trapTypes = LinkedHashMultimap.create( );
public void register( final I_UTrapBlock block )
public void register( final I_TrapBlock block )
{
for ( IBlockState state : block.getReplacedBlocks( ) ) {
for ( final IBlockState state : block.getReplacedBlocks( ) ) {
this.traps.put( state , block );
this.trapTypes.put( state , block.getTrapType( ) );
this.replacements.put( state , ( (Block) block ).getDefaultState( ) );
@ -39,11 +40,11 @@ public enum UTrapBlocks {
public List< IBlockState > getReplacements( final IBlockState blockState , final String trapType )
{
ArrayList< IBlockState > out = Lists.newArrayList( );
List< I_UTrapBlock > traps = this.traps.get( blockState );
int nTraps = traps.size( );
final ArrayList< IBlockState > out = Lists.newArrayList( );
final List< I_TrapBlock > traps = this.traps.get( blockState );
final int nTraps = traps.size( );
for ( int i = 0 ; i < nTraps ; i++ ) {
I_UTrapBlock trap = traps.get( i );
final I_TrapBlock trap = traps.get( i );
if ( trap.getTrapType( ).equals( trapType ) ) {
out.add( ( (Block) trap ).getDefaultState( ) );
}

View file

@ -1,7 +1,7 @@
package mmm.materials;
import mmm.utils.URegistry;
import mmm.core.CRegistry;
import net.minecraft.block.BlockSand;
import net.minecraft.init.Blocks;
@ -15,16 +15,16 @@ public class MTraps
public final MMud MUD;
MTraps( )
public MTraps( )
{
// FIXME recipes to convert quicksand into sand or mud into dirt
URegistry.addBlock( this.QUICKSAND = new MQuicksand( "sand" , //
CRegistry.addBlock( this.QUICKSAND = new MQuicksand( "sand" , //
Blocks.SAND.getDefaultState( ) //
.withProperty( BlockSand.VARIANT , BlockSand.EnumType.SAND ) ) );
URegistry.addBlock( this.RED_QUICKSAND = new MQuicksand( "red_sand" , //
CRegistry.addBlock( this.RED_QUICKSAND = new MQuicksand( "red_sand" , //
Blocks.SAND.getDefaultState( ) //
.withProperty( BlockSand.VARIANT , BlockSand.EnumType.RED_SAND ) ) );
URegistry.addBlock( this.SWAMP_PIT = new MSwampPit( ) );
URegistry.addBlock( this.MUD = new MMud( ) );
CRegistry.addBlock( this.SWAMP_PIT = new MSwampPit( ) );
CRegistry.addBlock( this.MUD = new MMud( ) );
}
}

View file

@ -3,8 +3,8 @@ package mmm.materials;
import java.util.Random;
import mmm.utils.I_URecipeRegistrar;
import mmm.utils.URegistry;
import mmm.core.CRegistry;
import mmm.core.api.I_RecipeRegistrar;
import mmm.world.trees.A_WTTreeGenerator;
import net.minecraft.block.Block;
import net.minecraft.block.BlockLog;
@ -25,7 +25,7 @@ import net.minecraftforge.fml.common.registry.GameRegistry;
public class MTree
implements I_URecipeRegistrar
implements I_RecipeRegistrar
{
public static interface I_SaplingChecker
{
@ -215,20 +215,20 @@ public class MTree
public MTree register( )
{
URegistry.addBlock( this.LOG );
URegistry.addBlock( this.LEAVES );
URegistry.addBlock( this.PLANKS );
final Item sapling = URegistry.addBlock( this.SAPLING );
CRegistry.addBlock( this.LOG );
CRegistry.addBlock( this.LEAVES );
CRegistry.addBlock( this.PLANKS );
final Item sapling = CRegistry.addBlock( this.SAPLING );
if ( this.baseFlammability != 0 ) {
Blocks.FIRE.setFireInfo( this.LOG , this.baseFireEncouragement , this.baseFlammability );
Blocks.FIRE.setFireInfo( this.LEAVES , this.baseFireEncouragement * 6 , this.baseFlammability * 12 );
Blocks.FIRE.setFireInfo( this.PLANKS , this.baseFireEncouragement , this.baseFlammability * 4 );
Blocks.FIRE.setFireInfo( this.SAPLING , this.baseFireEncouragement * 2 , this.baseFlammability * 8 );
URegistry.setFuel( sapling , this.baseFlammability * 30 );
CRegistry.setFuel( sapling , this.baseFlammability * 30 );
}
URegistry.addRecipeRegistrar( this );
CRegistry.addRecipeRegistrar( this );
return this;
}
@ -266,13 +266,13 @@ public class MTree
public int getBaseFireEncouragement( )
{
return baseFireEncouragement;
return this.baseFireEncouragement;
}
public int getBaseFlammability( )
{
return baseFlammability;
return this.baseFlammability;
}

View file

@ -3,9 +3,9 @@ package mmm.materials;
import mmm.utils.UMaths;
import mmm.world.trees.WTBamboo;
import mmm.world.trees.WTHevea;
import mmm.world.trees.WTHeveaBig;
import mmm.world.trees.WTHeveaMega;
import mmm.world.trees.WTHevea;
import net.minecraft.block.material.MapColor;
@ -17,7 +17,7 @@ public class MTrees
public final MTree BAMBOO;
MTrees( )
public MTrees( )
{
this.HEVEA = new MTree( "hevea" ) //
.setBarkColor( MapColor.GRAY ) //

View file

@ -1,9 +1,7 @@
package mmm.deco;
package mmm.materials;
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;
@ -12,18 +10,8 @@ import net.minecraft.util.ResourceLocation;
public abstract class DWoodType
public abstract class MWood
{
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( );
@ -44,13 +32,13 @@ public abstract class DWoodType
// *******************************************************************************************
public static final class Vanilla
extends DWoodType
extends MWood
{
private final String suffix;
private final BlockPlanks.EnumType type;
private Vanilla( final String suffix , final BlockPlanks.EnumType type )
public Vanilla( final String suffix , final BlockPlanks.EnumType type )
{
this.suffix = suffix;
this.type = type;
@ -97,13 +85,13 @@ public abstract class DWoodType
// *******************************************************************************************
public static final class MmmTree
extends DWoodType
extends MWood
{
private final MTree materials;
private final ResourceLocation slabName;
private MmmTree( final MTree materials )
public MmmTree( final MTree materials )
{
this.materials = materials;
this.slabName = new ResourceLocation( Mmm.ID , "deco/slabs/" + materials.NAME );

View file

@ -0,0 +1,35 @@
package mmm.materials;
import mmm.MmmMaterials;
import net.minecraft.block.BlockPlanks;
public class MWoods
{
public final MWood OAK;
public final MWood BIRCH;
public final MWood SPRUCE;
public final MWood JUNGLE;
public final MWood DARK_OAK;
public final MWood ACACIA;
public final MWood HEVEA;
public final MWood BAMBOO;
public MWoods( )
{
this.OAK = new MWood.Vanilla( "oak" , BlockPlanks.EnumType.OAK );
this.BIRCH = new MWood.Vanilla( "birch" , BlockPlanks.EnumType.BIRCH );
this.SPRUCE = new MWood.Vanilla( "spruce" , BlockPlanks.EnumType.SPRUCE );
this.JUNGLE = new MWood.Vanilla( "jungle" , BlockPlanks.EnumType.JUNGLE );
this.DARK_OAK = new MWood.Vanilla( "dark_oak" , BlockPlanks.EnumType.DARK_OAK );
this.ACACIA = new MWood.Vanilla( "acacia" , BlockPlanks.EnumType.ACACIA );
this.HEVEA = new MWood.MmmTree( MmmMaterials.TREE.HEVEA );
this.BAMBOO = new MWood.MmmTree( MmmMaterials.TREE.BAMBOO );
}
}

View file

@ -1,40 +0,0 @@
package mmm.proxy;
import mmm.Mmm;
import mmm.deco.DecorativeBlocks;
import mmm.food.Food;
import mmm.materials.Materials;
import mmm.tech.Tech;
import mmm.utils.UAccessors;
import mmm.utils.URegistry;
import mmm.utils.USeat;
import mmm.world.World;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
public abstract class PCommon
{
public void preInit( final FMLPreInitializationEvent event )
{
UAccessors.preInit( );
Materials.preInit( );
World.preInit( );
Tech.preInit( );
Food.preInit( );
DecorativeBlocks.preInit( );
URegistry.registerRecipes( );
}
public void init( final FMLInitializationEvent event )
{
USeat.register( Mmm.get( ) );
World.init( );
}
}

View file

@ -1,8 +0,0 @@
package mmm.proxy;
public class PServer
extends PCommon
{
// EMPTY
}

View file

@ -0,0 +1,69 @@
package mmm.tech;
import io.netty.buffer.ByteBuf;
import mmm.core.api.I_Message;
import mmm.core.api.tech.E_ActivationMode;
import mmm.core.api.tech.I_ConfigurableActivation;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.inventory.Container;
public class TActivationModeMessage
implements I_Message
{
private E_ActivationMode mode;
public TActivationModeMessage( )
{
// EMPTY
}
public TActivationModeMessage( final E_ActivationMode mode )
{
this.mode = mode;
}
@Override
public void fromBytes( final ByteBuf buf )
{
switch ( buf.readByte( ) ) {
default:
// XXX warning
case 0:
this.mode = E_ActivationMode.ALWAYS_ACTIVE;
break;
case 1:
this.mode = E_ActivationMode.POWERED;
break;
case 2:
this.mode = E_ActivationMode.UNPOWERED;
break;
case 3:
this.mode = E_ActivationMode.DISABLED;
break;
}
}
@Override
public void toBytes( final ByteBuf buf )
{
buf.writeByte( this.mode.ordinal( ) );
}
@Override
public void handleOnServer( final EntityPlayerMP player )
{
final Container curCont = player.openContainer;
if ( curCont instanceof I_ConfigurableActivation ) {
( (I_ConfigurableActivation) curCont ).setActivationMode( this.mode );
}
}
}

View file

@ -1,22 +0,0 @@
package mmm.tech;
import mmm.tech.base.TechBase;
import mmm.tech.tools.TechTools;
public class Tech
{
static {
TechBase.preInit( );
TechTools.preInit( );
}
public static void preInit( )
{
// EMPTY
}
}

View file

@ -1,24 +0,0 @@
package mmm.tech.base;
public enum E_TBActivationMode {
ALWAYS_ACTIVE ,
POWERED ,
UNPOWERED ,
DISABLED;
private static final E_TBActivationMode[] VALUES = E_TBActivationMode.values( );
public String getDisplayName( )
{
return "gui.mmm.tech.base.am." + this.toString( ).toLowerCase( );
}
public E_TBActivationMode next( )
{
return E_TBActivationMode.VALUES[ ( this.ordinal( ) + 1 ) % E_TBActivationMode.VALUES.length ];
}
}

View file

@ -1,12 +0,0 @@
package mmm.tech.base;
public interface I_TBConfigurableActivation
{
public E_TBActivationMode getActivationMode( );
public void setActivationMode( E_TBActivationMode mode );
}

View file

@ -1,67 +0,0 @@
package mmm.tech.base;
import io.netty.buffer.ByteBuf;
import mmm.utils.I_UMessage;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.inventory.Container;
public class TBActivationModeMessage
implements I_UMessage
{
private E_TBActivationMode mode;
public TBActivationModeMessage( )
{
// EMPTY
}
public TBActivationModeMessage( final E_TBActivationMode mode )
{
this.mode = mode;
}
@Override
public void fromBytes( final ByteBuf buf )
{
switch ( buf.readByte( ) ) {
default:
// XXX warning
case 0:
this.mode = E_TBActivationMode.ALWAYS_ACTIVE;
break;
case 1:
this.mode = E_TBActivationMode.POWERED;
break;
case 2:
this.mode = E_TBActivationMode.UNPOWERED;
break;
case 3:
this.mode = E_TBActivationMode.DISABLED;
break;
}
}
@Override
public void toBytes( final ByteBuf buf )
{
buf.writeByte( this.mode.ordinal( ) );
}
@Override
public void handleOnServer( final EntityPlayerMP player )
{
final Container curCont = player.openContainer;
if ( curCont instanceof I_TBConfigurableActivation ) {
( (I_TBConfigurableActivation) curCont ).setActivationMode( this.mode );
}
}
}

View file

@ -0,0 +1,24 @@
package mmm.tech.base;
import mmm.tech.base.alloy_furnace.TBAlloyFurnace;
public class TBMachines
{
public final TBAlloyFurnace ALLOY_FURNACE;
public TBMachines( )
{
this.ALLOY_FURNACE = new TBAlloyFurnace( );
}
public static void preInit( )
{
// EMPTY
}
}

View file

@ -1,24 +0,0 @@
package mmm.tech.base;
import mmm.tech.base.alloy_furnace.AlloyFurnace;
import mmm.utils.UNetwork;
public class TechBase
{
public static final AlloyFurnace ALLOY_FURNACE;
static {
UNetwork.addServerMessage( TBActivationModeMessage.class );
ALLOY_FURNACE = AlloyFurnace.INSTANCE;
}
public static void preInit( )
{
// EMPTY
}
}

View file

@ -7,10 +7,11 @@ import java.util.Random;
import javax.annotation.Nullable;
import mmm.utils.I_URecipeRegistrar;
import mmm.MmmTech;
import mmm.core.CGui;
import mmm.core.CRegistry;
import mmm.core.api.I_RecipeRegistrar;
import mmm.utils.UMaths;
import mmm.utils.URegistry;
import mmm.utils.gui.GUIUtils;
import net.minecraft.block.Block;
import net.minecraft.block.BlockContainer;
import net.minecraft.block.BlockHorizontal;
@ -49,7 +50,7 @@ import net.minecraftforge.fml.relauncher.SideOnly;
public class TBAFBlock
extends BlockContainer
implements I_URecipeRegistrar
implements I_RecipeRegistrar
{
private static final AxisAlignedBB AABB_BOTTOM = UMaths.makeBlockAABB( 0 , 0 , 0 , 16 , 10 , 16 );
private static final AxisAlignedBB AABB_TOP = UMaths.makeBlockAABB( 4 , 10 , 4 , 12 , 16 , 12 );
@ -80,7 +81,7 @@ public class TBAFBlock
.withProperty( TBAFBlock.FACING , EnumFacing.NORTH ) //
.withProperty( TBAFBlock.POWERED , Boolean.valueOf( false ) ) );
URegistry.setIdentifiers( this , "tech" , "base" , "alloy_furnace" , active ? "active" : "inactive" );
CRegistry.setIdentifiers( this , "tech" , "base" , "alloy_furnace" , active ? "active" : "inactive" );
}
@ -88,7 +89,7 @@ public class TBAFBlock
public void registerRecipes( )
{
if ( !this.active ) {
GameRegistry.addShapedRecipe( new ItemStack( AlloyFurnace.INSTANCE.ITEM ) , //
GameRegistry.addShapedRecipe( new ItemStack( MmmTech.MACHINES.ALLOY_FURNACE.ITEM ) , //
"BBB" , //
"BFB" , //
"BBB" , //
@ -118,9 +119,9 @@ public class TBAFBlock
IBlockState nState;
Block nBlock;
if ( burning ) {
nBlock = AlloyFurnace.INSTANCE.ACTIVE;
nBlock = MmmTech.MACHINES.ALLOY_FURNACE.ACTIVE;
} else {
nBlock = AlloyFurnace.INSTANCE.INACTIVE;
nBlock = MmmTech.MACHINES.ALLOY_FURNACE.INACTIVE;
}
nState = nBlock.getDefaultState( ) //
.withProperty( TBAFBlock.FACING , iblockstate.getValue( TBAFBlock.FACING ) ) //
@ -261,7 +262,7 @@ public class TBAFBlock
@Nullable
public Item getItemDropped( final IBlockState state , final Random rand , final int fortune )
{
return AlloyFurnace.INSTANCE.ITEM;
return MmmTech.MACHINES.ALLOY_FURNACE.ITEM;
}
@ -375,7 +376,7 @@ public class TBAFBlock
if ( ! ( te instanceof TBAFTileEntity ) || playerIn.isSneaking( ) ) {
return false;
}
GUIUtils.openTileEntityGUI( playerIn , worldIn , pos );
CGui.openTileEntityGUI( playerIn , worldIn , pos );
return true;
}
@ -392,7 +393,7 @@ public class TBAFBlock
InventoryHelper.dropInventoryItems( worldIn , pos , afte.fuel );
InventoryHelper.dropInventoryItems( worldIn , pos , afte.output );
final ItemStack stack = new ItemStack( AlloyFurnace.INSTANCE.ITEM , 1 );
final ItemStack stack = new ItemStack( MmmTech.MACHINES.ALLOY_FURNACE.ITEM , 1 );
if ( afte.hasCustomName( ) ) {
stack.setStackDisplayName( afte.getName( ) );
}

View file

@ -1,13 +1,13 @@
package mmm.tech.base.alloy_furnace;
import mmm.core.CNetwork;
import mmm.core.api.tech.E_ActivationMode;
import mmm.core.api.tech.I_ConfigurableActivation;
import mmm.materials.MAlloyRecipe;
import mmm.tech.base.E_TBActivationMode;
import mmm.tech.base.I_TBConfigurableActivation;
import mmm.tech.base.TBActivationModeMessage;
import mmm.tech.TActivationModeMessage;
import mmm.utils.UInventoryDisplay;
import mmm.utils.UInventoryGrid;
import mmm.utils.UNetwork;
import mmm.utils.gui.UGContainer;
import mmm.utils.gui.UGSlotDisplay;
import mmm.utils.gui.UGSlotFuel;
@ -26,7 +26,7 @@ import net.minecraft.world.World;
public class TBAFContainer
extends UGContainer
implements I_TBConfigurableActivation
implements I_ConfigurableActivation
{
public final TBAFTileEntity tileEntity;
public final World world;
@ -154,25 +154,25 @@ public class TBAFContainer
@Override
public E_TBActivationMode getActivationMode( )
public E_ActivationMode getActivationMode( )
{
final TileEntity te = this.world.getTileEntity( this.position );
if ( te instanceof TBAFTileEntity ) {
return ( (TBAFTileEntity) te ).getActivationMode( );
}
return E_TBActivationMode.DISABLED;
return E_ActivationMode.DISABLED;
}
@Override
public void setActivationMode( final E_TBActivationMode mode )
public void setActivationMode( final E_ActivationMode mode )
{
if ( this.world.isRemote ) {
final TileEntity te = this.world.getTileEntity( this.position );
if ( te instanceof TBAFTileEntity ) {
( (TBAFTileEntity) te ).setActivationMode( mode );
}
UNetwork.sendToServer( new TBActivationModeMessage( mode ) );
CNetwork.sendToServer( new TActivationModeMessage( mode ) );
} else {
this.tileEntity.setActivationMode( mode );
this.tileEntity.forceUpdate( );
@ -196,7 +196,7 @@ public class TBAFContainer
final TileEntity te = this.world.getTileEntity( this.position );
if ( te instanceof TBAFTileEntity ) {
( (TBAFTileEntity) te ).flags = flags;
UNetwork.sendToServer( new TBAFMessage( flags ) );
CNetwork.sendToServer( new TBAFMessage( flags ) );
}
} else {
this.tileEntity.flags = flags;

View file

@ -4,8 +4,8 @@ package mmm.tech.base.alloy_furnace;
import java.util.ArrayList;
import mmm.Mmm;
import mmm.core.CNetwork;
import mmm.materials.MAlloyRecipe;
import mmm.utils.UNetwork;
import mmm.utils.gui.A_UGTab;
import mmm.utils.gui.A_UGTabbedContainerScreen;
import mmm.utils.gui.UGArrowButton;
@ -177,7 +177,7 @@ public class TBAFGui
gui.setRecipe( gui.currentRecipe - 1 );
} else if ( button == this.bConfirm ) {
final MAlloyRecipe recipe = gui.recipes.get( gui.currentRecipe );
UNetwork.sendToServer( new TBAFMessage( recipe.name , true ) );
CNetwork.sendToServer( new TBAFMessage( recipe.name , true ) );
gui.container.tileEntity.recipe = recipe;
} else {
return false;
@ -342,7 +342,7 @@ public class TBAFGui
}
this.container.setCurrentRecipe( rName , false );
UNetwork.sendToServer( new TBAFMessage( rName , false ) );
CNetwork.sendToServer( new TBAFMessage( rName , false ) );
( (RecipeTab) this.tabs[ 1 ] ).enableButtons( );
}

View file

@ -2,7 +2,7 @@ package mmm.tech.base.alloy_furnace;
import io.netty.buffer.ByteBuf;
import mmm.utils.I_UMessage;
import mmm.core.api.I_Message;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.inventory.Container;
import net.minecraft.util.ResourceLocation;
@ -11,7 +11,7 @@ import net.minecraftforge.fml.common.network.ByteBufUtils;
public class TBAFMessage
implements I_UMessage
implements I_Message
{
private static final int MT_RECIPE = 0;
private static final int MT_SET_RECIPE = 1;

View file

@ -1,10 +1,10 @@
package mmm.tech.base.alloy_furnace;
import mmm.MmmMaterials;
import mmm.core.api.tech.E_ActivationMode;
import mmm.core.api.tech.I_ConfigurableActivation;
import mmm.materials.MAlloyRecipe;
import mmm.materials.Materials;
import mmm.tech.base.E_TBActivationMode;
import mmm.tech.base.I_TBConfigurableActivation;
import mmm.utils.UInventoryGrid;
import net.minecraft.block.state.IBlockState;
import net.minecraft.inventory.Container;
@ -31,7 +31,7 @@ import net.minecraftforge.items.wrapper.InvWrapper;
public class TBAFTileEntity
extends TileEntity
implements ITickable , I_TBConfigurableActivation , IWorldNameable
implements ITickable , I_ConfigurableActivation , IWorldNameable
{
/** Input hopper allows invalid input? */
public static final int F_IH_INVALID = 1 << 0;
@ -100,7 +100,7 @@ public class TBAFTileEntity
private int alloyCurrent;
private int burnCurrent;
private int burnTotal;
private E_TBActivationMode activationMode;
private E_ActivationMode activationMode;
public int flags;
@ -115,7 +115,7 @@ public class TBAFTileEntity
this.fuel = new FuelInventory( "Fuel" , 2 , 2 );
this.output = new Inventory( "Output" , 2 , 5 );
this.recipe = MAlloyRecipe.REGISTRY.getRecipes( ).get( 0 );
this.activationMode = E_TBActivationMode.ALWAYS_ACTIVE;
this.activationMode = E_ActivationMode.ALWAYS_ACTIVE;
this.flags = TBAFTileEntity.F_OH_INVALID_INPUT | TBAFTileEntity.F_OH_INVALID_FUEL
| TBAFTileEntity.F_CMP_INPUT_VALID;
@ -230,7 +230,7 @@ public class TBAFTileEntity
if ( this.alloyCurrent == 0 ) {
this.addOutput( this.alloying.output );
if ( this.alloying.slag != 0 ) {
this.addOutput( new ItemStack( Materials.ITEM.SLAG , this.alloying.slag ) );
this.addOutput( new ItemStack( MmmMaterials.ITEM.SLAG , this.alloying.slag ) );
}
this.alloying = null;
}
@ -309,14 +309,14 @@ public class TBAFTileEntity
@Override
public E_TBActivationMode getActivationMode( )
public E_ActivationMode getActivationMode( )
{
return this.activationMode;
}
@Override
public void setActivationMode( final E_TBActivationMode mode )
public void setActivationMode( final E_ActivationMode mode )
{
this.activationMode = mode;
}
@ -325,7 +325,7 @@ public class TBAFTileEntity
public void cancelAlloying( )
{
if ( this.alloying != null ) {
this.addOutput( new ItemStack( Materials.ITEM.SLAG , this.alloying.getTotalInputItems( ) ) );
this.addOutput( new ItemStack( MmmMaterials.ITEM.SLAG , this.alloying.getTotalInputItems( ) ) );
this.alloying = null;
this.alloyCurrent = 0;
}
@ -559,16 +559,16 @@ public class TBAFTileEntity
default:
// XXX log
case 0:
this.activationMode = E_TBActivationMode.ALWAYS_ACTIVE;
this.activationMode = E_ActivationMode.ALWAYS_ACTIVE;
break;
case 1:
this.activationMode = E_TBActivationMode.POWERED;
this.activationMode = E_ActivationMode.POWERED;
break;
case 2:
this.activationMode = E_TBActivationMode.UNPOWERED;
this.activationMode = E_ActivationMode.UNPOWERED;
break;
case 3:
this.activationMode = E_TBActivationMode.DISABLED;
this.activationMode = E_ActivationMode.DISABLED;
break;
}
this.flags = compound.getShort( "Flags" );

View file

@ -1,9 +1,9 @@
package mmm.tech.base.alloy_furnace;
import mmm.utils.UNetwork;
import mmm.utils.URegistry;
import mmm.utils.gui.GUIUtils;
import mmm.core.CGui;
import mmm.core.CNetwork;
import mmm.core.CRegistry;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item;
import net.minecraft.item.ItemBlock;
@ -11,10 +11,8 @@ import net.minecraftforge.fml.common.registry.GameRegistry;
public enum AlloyFurnace {
INSTANCE;
public class TBAlloyFurnace
{
public final CreativeTabs CREATIVE_TAB = CreativeTabs.DECORATIONS;
public final TBAFBlock INACTIVE;
@ -22,7 +20,7 @@ public enum AlloyFurnace {
public final Item ITEM;
private AlloyFurnace( )
public TBAlloyFurnace( )
{
this.INACTIVE = new TBAFBlock( false );
this.INACTIVE.setCreativeTab( this.CREATIVE_TAB );
@ -33,15 +31,16 @@ public enum AlloyFurnace {
this.ITEM = new ItemBlock( this.INACTIVE )//
.setMaxStackSize( 16 )//
.setCreativeTab( this.CREATIVE_TAB );
URegistry.setIdentifiers( this.ITEM , "tech" , "base" , "alloy_furnace" );
CRegistry.setIdentifiers( this.ITEM , "tech" , "base" , "alloy_furnace" );
URegistry.addBlock( this.INACTIVE , this.ITEM );
URegistry.addBlock( this.ACTIVE , null );
CRegistry.addBlock( this.INACTIVE , this.ITEM );
CRegistry.addBlock( this.ACTIVE , null );
GameRegistry.registerTileEntity( TBAFTileEntity.class , "mmm:tech/base/alloy_furnace" );
GUIUtils.registerTileEntityGUI( TBAFTileEntity.class , "mmm.tech.base.alloy_furnace.TBAFContainer" ,
CGui.registerTileEntityGUI( TBAFTileEntity.class , //
"mmm.tech.base.alloy_furnace.TBAFContainer" , //
"mmm.tech.base.alloy_furnace.TBAFGui" );
UNetwork.addServerMessage( TBAFMessage.class );
CNetwork.addServerMessage( TBAFMessage.class );
}
}

View file

@ -1,8 +1,8 @@
package mmm.tech.tools;
import mmm.utils.I_URecipeRegistrar;
import mmm.utils.URegistry;
import mmm.core.CRegistry;
import mmm.core.api.I_RecipeRegistrar;
import net.minecraft.inventory.EntityEquipmentSlot;
import net.minecraft.item.ItemArmor;
import net.minecraft.item.ItemStack;
@ -12,13 +12,13 @@ import net.minecraftforge.fml.common.registry.GameRegistry;
public class TTArmor
extends ItemArmor
implements I_URecipeRegistrar
implements I_RecipeRegistrar
{
public TTArmor( final ArmorMaterial materialIn , final EntityEquipmentSlot equipmentSlotIn )
{
super( materialIn , materialIn.ordinal( ) , equipmentSlotIn );
URegistry.setIdentifiers( this , "tech" , "tools" , materialIn.toString( ).toLowerCase( ) , "armor" ,
CRegistry.setIdentifiers( this , "tech" , "tools" , materialIn.toString( ).toLowerCase( ) , "armor" ,
equipmentSlotIn.getName( ) );
}

View file

@ -1,7 +1,7 @@
package mmm.tech.tools;
import mmm.utils.URegistry;
import mmm.core.CRegistry;
import net.minecraft.inventory.EntityEquipmentSlot;
import net.minecraft.item.Item;
import net.minecraft.item.ItemArmor.ArmorMaterial;
@ -28,9 +28,9 @@ public class TTArmorSet
reductionAmounts , enchantability , soundOnEquip , toughness );
this.ARMOR_MATERIAL.customCraftingMaterial = material;
URegistry.addItem( this.HELMET = new TTArmor( this.ARMOR_MATERIAL , EntityEquipmentSlot.HEAD ) );
URegistry.addItem( this.CHESTPLATE = new TTArmor( this.ARMOR_MATERIAL , EntityEquipmentSlot.CHEST ) );
URegistry.addItem( this.LEGGINGS = new TTArmor( this.ARMOR_MATERIAL , EntityEquipmentSlot.LEGS ) );
URegistry.addItem( this.BOOTS = new TTArmor( this.ARMOR_MATERIAL , EntityEquipmentSlot.FEET ) );
CRegistry.addItem( this.HELMET = new TTArmor( this.ARMOR_MATERIAL , EntityEquipmentSlot.HEAD ) );
CRegistry.addItem( this.CHESTPLATE = new TTArmor( this.ARMOR_MATERIAL , EntityEquipmentSlot.CHEST ) );
CRegistry.addItem( this.LEGGINGS = new TTArmor( this.ARMOR_MATERIAL , EntityEquipmentSlot.LEGS ) );
CRegistry.addItem( this.BOOTS = new TTArmor( this.ARMOR_MATERIAL , EntityEquipmentSlot.FEET ) );
}
}

Some files were not shown because too many files have changed in this diff Show more