Alloy furnace - Basic hoppers

This commit is contained in:
Emmanuel BENOîT 2016-06-24 09:39:03 +02:00
parent 66e39a0e29
commit 99f1736614
2 changed files with 44 additions and 5 deletions

View file

@ -41,11 +41,12 @@ materials.ores No Tin
materials.ores No Zinc materials.ores No Zinc
------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------
tech.base No Alloy furnace tech.base No Alloy furnace
-> support hoppers
-> comparator output -> comparator output
-> search recipe -> search recipe
-> crafting recipe
-> I18n -> I18n
-> XP -> XP
-> let output hoppers take empty buckets / invalid input
-> code clean-up -> code clean-up
tech.base No Coke oven tech.base No Coke oven
------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------

View file

@ -11,9 +11,14 @@ import net.minecraft.network.NetworkManager;
import net.minecraft.network.play.server.SPacketUpdateTileEntity; import net.minecraft.network.play.server.SPacketUpdateTileEntity;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.tileentity.TileEntityFurnace; import net.minecraft.tileentity.TileEntityFurnace;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.ITickable; import net.minecraft.util.ITickable;
import net.minecraft.util.ResourceLocation; import net.minecraft.util.ResourceLocation;
import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.common.util.Constants.NBT; import net.minecraftforge.common.util.Constants.NBT;
import net.minecraftforge.items.CapabilityItemHandler;
import net.minecraftforge.items.IItemHandler;
import net.minecraftforge.items.wrapper.InvWrapper;
@ -33,6 +38,10 @@ public class TBAlloyFurnaceTileEntity
private int burnCurrent; private int burnCurrent;
private int burnTotal; private int burnTotal;
private final IItemHandler inputHopper;
private final IItemHandler fuelHopper;
private final IItemHandler outputHopper;
public TBAlloyFurnaceTileEntity( ) public TBAlloyFurnaceTileEntity( )
{ {
@ -40,6 +49,10 @@ public class TBAlloyFurnaceTileEntity
this.fuel = new UInventoryGrid( "Fuel" , 2 , 2 ); this.fuel = new UInventoryGrid( "Fuel" , 2 , 2 );
this.output = new UInventoryGrid( "Output" , 2 , 5 ); this.output = new UInventoryGrid( "Output" , 2 , 5 );
this.recipe = MAlloyRecipe.REGISTRY.getRecipes( ).get( 0 ); this.recipe = MAlloyRecipe.REGISTRY.getRecipes( ).get( 0 );
this.inputHopper = new InvWrapper( this.input );
this.fuelHopper = new InvWrapper( this.fuel );
this.outputHopper = new InvWrapper( this.output );
} }
@ -127,7 +140,7 @@ public class TBAlloyFurnaceTileEntity
if ( this.burnCurrent == 0 ) { if ( this.burnCurrent == 0 ) {
if ( this.alloying != null ) { if ( this.alloying != null ) {
if ( !this.startBurning( this.alloyCurrent ) ) { if ( !this.startBurning( this.alloyCurrent ) ) {
cancelAlloying( ); this.cancelAlloying( );
this.burnCurrent = this.burnTotal = 0; this.burnCurrent = this.burnTotal = 0;
} }
} else { } else {
@ -152,6 +165,31 @@ public class TBAlloyFurnaceTileEntity
} }
@Override
public boolean hasCapability( final Capability< ? > capability , final EnumFacing facing )
{
return capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY && facing != null
|| super.hasCapability( capability , facing );
}
@SuppressWarnings( "unchecked" )
@Override
public < T > T getCapability( final Capability< T > capability , final EnumFacing facing )
{
if ( facing != null && capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY ) {
if ( facing == EnumFacing.DOWN ) {
return (T) this.outputHopper;
} else if ( facing == EnumFacing.UP ) {
return (T) this.inputHopper;
} else {
return (T) this.fuelHopper;
}
}
return super.getCapability( capability , facing );
}
public void cancelAlloying( ) public void cancelAlloying( )
{ {
if ( this.alloying != null ) { if ( this.alloying != null ) {
@ -188,7 +226,7 @@ public class TBAlloyFurnaceTileEntity
} }
public int getBurnProgress( int max ) public int getBurnProgress( final int max )
{ {
int t = this.burnTotal; int t = this.burnTotal;
if ( t == 0 ) { if ( t == 0 ) {
@ -286,7 +324,7 @@ public class TBAlloyFurnaceTileEntity
} }
public int getAlloyingProgress( int max ) public int getAlloyingProgress( final int max )
{ {
if ( this.alloying == null ) { if ( this.alloying == null ) {
return max; return max;
@ -337,7 +375,7 @@ public class TBAlloyFurnaceTileEntity
} }
private void addOutput( ItemStack wanted ) private void addOutput( final ItemStack wanted )
{ {
final int maxStackSize = Math.min( this.output.getInventoryStackLimit( ) , wanted.getMaxStackSize( ) ); final int maxStackSize = Math.min( this.output.getInventoryStackLimit( ) , wanted.getMaxStackSize( ) );
int added = 0; int added = 0;