Alloy furnace - Preserve custom name when removed

... And that should be all for the fucking alloy furnace. Nice (if
true).
This commit is contained in:
Emmanuel BENOîT 2016-06-29 11:49:44 +02:00
parent 63e3c2dbc3
commit fa79a85fd9
5 changed files with 66 additions and 6 deletions

View file

@ -43,8 +43,6 @@ materials.ores No Rock salt
materials.ores No Tin
materials.ores No Zinc
-------------------------------------------------------------------------------------------------------
tech.base No Alloy furnace
-> check item behaviour
tech.base No Coke oven
-------------------------------------------------------------------------------------------------------
animals ??? Goats

View file

@ -5,7 +5,7 @@ import mmm.utils.UNetwork;
import mmm.utils.URegistry;
import mmm.utils.gui.GUIUtils;
import net.minecraft.item.Item;
import net.minecraft.item.ItemBlockSpecial;
import net.minecraft.item.ItemBlock;
import net.minecraftforge.fml.common.registry.GameRegistry;
@ -24,7 +24,7 @@ public enum AlloyFurnace {
this.INACTIVE = new TBAFBlock( false );
this.ACTIVE = new TBAFBlock( true );
this.ITEM = new ItemBlockSpecial( this.INACTIVE )//
this.ITEM = new ItemBlock( this.INACTIVE )//
.setMaxStackSize( 16 )//
.setCreativeTab( this.INACTIVE.getCreativeTabToDisplayOn( ) );
URegistry.setIdentifiers( this.ITEM , "tech" , "base" , "alloy_furnace" );

View file

@ -1,6 +1,7 @@
package mmm.tech.base.alloy_furnace;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
@ -267,6 +268,14 @@ public class TBAFBlock
}
@Override
public List< ItemStack > getDrops( final IBlockAccess world , final BlockPos pos , final IBlockState state ,
final int fortune )
{
return new ArrayList< ItemStack >( );
}
// *************************************************************************************************
// DIRECTION
// *************************************************************************************************
@ -304,6 +313,23 @@ public class TBAFBlock
}
@Override
public void onBlockPlacedBy( final World worldIn , final BlockPos pos , final IBlockState state ,
final EntityLivingBase placer , final ItemStack stack )
{
worldIn.setBlockState( pos , state.withProperty( //
TBAFBlock.FACING , placer.getHorizontalFacing( ).getOpposite( ) ) , 2 );
if ( stack.hasDisplayName( ) ) {
System.err.println( "HAZ A NAME!" );
final TileEntity tileentity = worldIn.getTileEntity( pos );
if ( tileentity instanceof TBAFTileEntity ) {
( (TBAFTileEntity) tileentity ).setCustomName( stack.getDisplayName( ) );
}
}
}
@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 )
@ -368,6 +394,12 @@ public class TBAFBlock
InventoryHelper.dropInventoryItems( worldIn , pos , afte.input );
InventoryHelper.dropInventoryItems( worldIn , pos , afte.fuel );
InventoryHelper.dropInventoryItems( worldIn , pos , afte.output );
final ItemStack stack = new ItemStack( AlloyFurnace.INSTANCE.ITEM , 1 );
if ( afte.hasCustomName( ) ) {
stack.setStackDisplayName( afte.getName( ) );
}
InventoryHelper.spawnItemStack( worldIn , pos.getX( ) , pos.getY( ) , pos.getZ( ) , stack );
}
worldIn.updateComparatorOutputLevel( pos , this );
}

View file

@ -19,6 +19,7 @@ import net.minecraft.util.ITickable;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.MathHelper;
import net.minecraft.world.IWorldNameable;
import net.minecraft.world.World;
import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.common.util.Constants.NBT;
@ -30,7 +31,7 @@ import net.minecraftforge.items.wrapper.InvWrapper;
public class TBAFTileEntity
extends TileEntity
implements ITickable , I_TBConfigurableActivation
implements ITickable , I_TBConfigurableActivation , IWorldNameable
{
/** Input hopper allows invalid input? */
public static final int F_IH_INVALID = 1 << 0;
@ -91,6 +92,8 @@ public class TBAFTileEntity
public final UInventoryGrid fuel;
public final UInventoryGrid output;
private String customName;
public MAlloyRecipe recipe;
private MAlloyRecipe alloying;
@ -122,6 +125,26 @@ public class TBAFTileEntity
}
@Override
public String getName( )
{
return this.hasCustomName( ) ? this.customName : "tile.mmm.tech.base.alloy_furnace.inactive.name";
}
@Override
public boolean hasCustomName( )
{
return this.customName != null && !this.customName.isEmpty( );
}
public void setCustomName( final String name )
{
this.customName = name;
}
@Override
public boolean shouldRefresh( final World world , final BlockPos pos , final IBlockState oldState ,
final IBlockState newSate )
@ -134,6 +157,9 @@ public class TBAFTileEntity
public void readFromNBT( final NBTTagCompound compound )
{
super.readFromNBT( compound );
if ( compound.hasKey( "CustomName" , 8 ) ) {
this.customName = compound.getString( "CustomName" );
}
this.input.deserializeNBT( compound.getTagList( "Input" , NBT.TAG_COMPOUND ) );
this.fuel.deserializeNBT( compound.getTagList( "Fuel" , NBT.TAG_COMPOUND ) );
this.output.deserializeNBT( compound.getTagList( "Output" , NBT.TAG_COMPOUND ) );
@ -145,6 +171,9 @@ public class TBAFTileEntity
public NBTTagCompound writeToNBT( final NBTTagCompound compound )
{
super.writeToNBT( compound );
if ( this.hasCustomName( ) ) {
compound.setString( "CustomName" , this.customName );
}
compound.setTag( "Input" , this.input.serializeNBT( ) );
compound.setTag( "Fuel" , this.fuel.serializeNBT( ) );
compound.setTag( "Output" , this.output.serializeNBT( ) );
@ -650,4 +679,5 @@ public class TBAFTileEntity
final float ratio = total / ( 15.0f * nValues );
return MathHelper.floor_float( ratio * 14.0f ) + ( total == 0 ? 0 : 1 );
}
}

View file

@ -22,7 +22,7 @@ gui.mmm.tech.base.am.powered=Redstone Activates
gui.mmm.tech.base.am.unpowered=Redstone Disables
gui.mmm.tech.base.am.disabled=Deactivated
item.mmm.tech.base.alloy_furnace.name=Alloy Furnace
tile.mmm.tech.base.alloy_furnace.inactive.name=Alloy Furnace
container.mmm.alloy_furnace.contents=Furnace Contents
container.mmm.alloy_furnace.recipe=Alloy Selection
container.mmm.alloy_furnace.select=Select Alloy