Workbench - Default recipe

This commit is contained in:
Emmanuel BENOîT 2016-07-17 18:50:58 +02:00
parent f121e8bd3d
commit 7a964b4e09
3 changed files with 70 additions and 32 deletions

View file

@ -55,7 +55,10 @@ public class TBWBContainer
this.slotGroups.endGroups( ); this.slotGroups.endGroups( );
this.recipeWrapper = RCraftingWrappers.RECIPES.get( 0 ); this.recipeWrapper = RCraftingWrappers.IDENTIFIERS.get( tileEntity.getDefaultRecipe( ) );
if ( this.recipeWrapper == null ) {
this.recipeWrapper = RCraftingWrappers.RECIPES.get( 0 );
}
this.onRecipeChanged( ); this.onRecipeChanged( );
} }
@ -69,24 +72,25 @@ public class TBWBContainer
} }
@Override
@Nullable @Nullable
public ItemStack transferStackInSlot( EntityPlayer playerIn , int index ) public ItemStack transferStackInSlot( final EntityPlayer playerIn , final int index )
{ {
Slot slot = (Slot) this.inventorySlots.get( index ); final Slot slot = this.inventorySlots.get( index );
if ( slot == null || !slot.getHasStack( ) ) { if ( slot == null || !slot.getHasStack( ) ) {
return null; return null;
} }
ItemStack slotStack = slot.getStack( ); final ItemStack slotStack = slot.getStack( );
ItemStack outStack = slotStack.copy( ); final ItemStack outStack = slotStack.copy( );
int group = this.slotGroups.getGroup( index ); final int group = this.slotGroups.getGroup( index );
if ( group == 3 ) { if ( group == 3 ) {
// Craft as many as possible // Craft as many as possible
if ( this.recipeWrapper == null ) { if ( this.recipeWrapper == null ) {
return null; return null;
} }
IInventory storage = this.getStorage( ); final IInventory storage = this.getStorage( );
if ( storage == null ) { if ( storage == null ) {
return null; return null;
} }
@ -140,7 +144,8 @@ public class TBWBContainer
} }
public boolean canMergeSlot( ItemStack stack , Slot slotIn ) @Override
public boolean canMergeSlot( final ItemStack stack , final Slot slotIn )
{ {
return slotIn.inventory != this.recipeOutput && super.canMergeSlot( stack , slotIn ); return slotIn.inventory != this.recipeOutput && super.canMergeSlot( stack , slotIn );
} }
@ -149,11 +154,12 @@ public class TBWBContainer
public void setCurrentRecipe( final I_CraftingRecipeWrapper wrapper , final boolean setDefault ) public void setCurrentRecipe( final I_CraftingRecipeWrapper wrapper , final boolean setDefault )
{ {
this.recipeWrapper = wrapper; this.recipeWrapper = wrapper;
this.onRecipeChanged( );
onRecipeChanged( );
if ( setDefault ) { if ( setDefault ) {
// this.tileEntity.setDefaultRecipe( wrapper.getIdentifier( ) ); final TileEntity te = this.world.getTileEntity( this.position );
if ( te instanceof TBWBTileEntity ) {
( (TBWBTileEntity) te ).setDefaultRecipe( wrapper == null ? "" : wrapper.getIdentifier( ) );
}
} }
} }
@ -172,7 +178,7 @@ public class TBWBContainer
public IInventory getStorage( ) public IInventory getStorage( )
{ {
TileEntity te = this.world.getTileEntity( position ); final TileEntity te = this.world.getTileEntity( this.position );
if ( te instanceof TBWBTileEntity ) { if ( te instanceof TBWBTileEntity ) {
return ( (TBWBTileEntity) te ).storage; return ( (TBWBTileEntity) te ).storage;
} }

View file

@ -50,7 +50,11 @@ public class TBWBGui
this.searchString = ""; this.searchString = "";
this.recipes = RCraftingWrappers.RECIPES; this.recipes = RCraftingWrappers.RECIPES;
this.setRecipe( -1 ); int index = this.recipes.indexOf( this.container.getCurrentRecipe( ) );
if ( index == -1 && !this.recipes.isEmpty( ) ) {
index = 0;
}
this.setRecipe( index );
} }
@ -95,8 +99,8 @@ public class TBWBGui
if ( this.currentRecipe == -1 ) { if ( this.currentRecipe == -1 ) {
canCraft = false; canCraft = false;
} else { } else {
TileEntity te = this.container.world.getTileEntity( this.container.position ); final TileEntity te = this.container.world.getTileEntity( this.container.position );
I_RecipeRequirements requirements = this.recipes.get( this.currentRecipe ).getRequirements( ); final I_RecipeRequirements requirements = this.recipes.get( this.currentRecipe ).getRequirements( );
canCraft = te instanceof TBWBTileEntity && requirements.checkInventory( ( (TBWBTileEntity) te ).storage ); canCraft = te instanceof TBWBTileEntity && requirements.checkInventory( ( (TBWBTileEntity) te ).storage );
} }
if ( !canCraft ) { if ( !canCraft ) {
@ -137,6 +141,13 @@ public class TBWBGui
this.setRecipe( this.currentRecipe + 1 ); this.setRecipe( this.currentRecipe + 1 );
} else if ( button == this.bPrevious && this.currentRecipe > 0 ) { } else if ( button == this.bPrevious && this.currentRecipe > 0 ) {
this.setRecipe( this.currentRecipe - 1 ); this.setRecipe( this.currentRecipe - 1 );
} else if ( button == this.bSetDefault ) {
final I_CraftingRecipeWrapper wrapper = this.currentRecipe == -1
? null
: this.recipes.get( this.currentRecipe );
this.container.setCurrentRecipe( wrapper , true );
CNetwork.sendToServer( new TBWBMessage( wrapper == null ? null : wrapper.getIdentifier( ) , true ) );
this.enableButtons( );
} }
} }
@ -147,7 +158,7 @@ public class TBWBGui
index = 0; index = 0;
} }
this.currentRecipe = index; this.currentRecipe = index;
I_CraftingRecipeWrapper wrapper = index == -1 ? null : this.recipes.get( index ); final I_CraftingRecipeWrapper wrapper = index == -1 ? null : this.recipes.get( index );
this.container.setCurrentRecipe( wrapper , false ); this.container.setCurrentRecipe( wrapper , false );
CNetwork.sendToServer( new TBWBMessage( wrapper == null ? null : wrapper.getIdentifier( ) , false ) ); CNetwork.sendToServer( new TBWBMessage( wrapper == null ? null : wrapper.getIdentifier( ) , false ) );
this.enableButtons( ); this.enableButtons( );
@ -156,9 +167,22 @@ public class TBWBGui
private void enableButtons( ) private void enableButtons( )
{ {
if ( this.bNext != null ) { if ( this.bNext == null ) {
this.bNext.enabled = !this.recipes.isEmpty( ) && this.currentRecipe < this.recipes.size( ) - 1; return;
this.bPrevious.enabled = !this.recipes.isEmpty( ) && this.currentRecipe > 0; }
this.bNext.enabled = !this.recipes.isEmpty( ) && this.currentRecipe < this.recipes.size( ) - 1;
this.bPrevious.enabled = !this.recipes.isEmpty( ) && this.currentRecipe > 0;
this.bSetDefault.enabled = false;
if ( this.currentRecipe == -1 ) {
return;
}
final TileEntity te = this.container.world.getTileEntity( this.container.position );
if ( te instanceof TBWBTileEntity ) {
final I_CraftingRecipeWrapper recipe = RCraftingWrappers.IDENTIFIERS
.get( ( (TBWBTileEntity) te ).getDefaultRecipe( ) );
this.bSetDefault.enabled = recipe != this.recipes.get( this.currentRecipe );
} }
} }
@ -203,7 +227,7 @@ public class TBWBGui
} }
private int getRecipeIndex( I_CraftingRecipeWrapper selected ) private int getRecipeIndex( final I_CraftingRecipeWrapper selected )
{ {
return this.recipes.indexOf( selected ); return this.recipes.indexOf( selected );
} }

View file

@ -37,15 +37,9 @@ public class TBWBTileEntity
} }
public final UInventoryGrid storage; public final UInventoryGrid storage = new Inventory( "Storage" , 3 , 5 );
private String customName; private String customName = "";
private String defaultRecipe = "";
public TBWBTileEntity( )
{
super( );
this.storage = new Inventory( "Storage" , 3 , 5 );
}
@Override @Override
@ -119,7 +113,7 @@ public class TBWBTileEntity
private void readSyncData( final NBTTagCompound compound ) private void readSyncData( final NBTTagCompound compound )
{ {
// TODO Auto-generated method stub this.defaultRecipe = compound.getString( "DefaultRecipe" );
} }
@ -138,6 +132,20 @@ public class TBWBTileEntity
private void writeSyncData( final NBTTagCompound compound ) private void writeSyncData( final NBTTagCompound compound )
{ {
// TODO Auto-generated method stub compound.setString( "DefaultRecipe" , this.defaultRecipe );
} }
public String getDefaultRecipe( )
{
return this.defaultRecipe;
}
public void setDefaultRecipe( final String defaultRecipe )
{
this.defaultRecipe = defaultRecipe;
this.markDirty( );
}
} }