Also some further changes like avoiding to match a recipe without any input.
This commit is contained in:
@@ -281,13 +281,16 @@ public class TileInscriber extends AENetworkPowerTile implements IGridTickable,
|
|||||||
@Nullable
|
@Nullable
|
||||||
public IInscriberRecipe getTask()
|
public IInscriberRecipe getTask()
|
||||||
{
|
{
|
||||||
return getTask( this.sideItemHandler.getStackInSlot( 0 ), this.topItemHandler.getStackInSlot( 0 ), this.bottomItemHandler.getStackInSlot( 0 ) );
|
return this.getTask( this.sideItemHandler.getStackInSlot( 0 ), this.topItemHandler.getStackInSlot( 0 ), this.bottomItemHandler.getStackInSlot( 0 ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
private IInscriberRecipe getTask( final ItemStack input, final ItemStack plateA, final ItemStack plateB )
|
private IInscriberRecipe getTask( final ItemStack input, final ItemStack plateA, final ItemStack plateB )
|
||||||
{
|
{
|
||||||
ItemStack renamedItem = input;
|
if( input.isEmpty() || input.getCount() > 1 )
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
if( !plateA.isEmpty() && plateA.getCount() > 1 )
|
if( !plateA.isEmpty() && plateA.getCount() > 1 )
|
||||||
{
|
{
|
||||||
@@ -299,71 +302,17 @@ public class TileInscriber extends AENetworkPowerTile implements IGridTickable,
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( !renamedItem.isEmpty() && renamedItem.getCount() > 1 )
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
final IComparableDefinition namePress = AEApi.instance().definitions().materials().namePress();
|
final IComparableDefinition namePress = AEApi.instance().definitions().materials().namePress();
|
||||||
final boolean isNameA = namePress.isSameAs( plateA );
|
final boolean isNameA = namePress.isSameAs( plateA );
|
||||||
final boolean isNameB = namePress.isSameAs( plateB );
|
final boolean isNameB = namePress.isSameAs( plateB );
|
||||||
|
|
||||||
if( ( isNameA || isNameB ) && ( isNameA || plateA.isEmpty() ) && ( isNameB || plateB.isEmpty() ) )
|
if( ( isNameA && isNameB ) || isNameA && plateB.isEmpty() )
|
||||||
{
|
{
|
||||||
if( !renamedItem.isEmpty() )
|
return this.makeNamePressRecipe( input, plateA, plateB );
|
||||||
{
|
}
|
||||||
String name = "";
|
else if( plateA.isEmpty() && isNameB )
|
||||||
|
{
|
||||||
if( !plateA.isEmpty() )
|
return this.makeNamePressRecipe( input, plateB, plateA );
|
||||||
{
|
|
||||||
final NBTTagCompound tag = Platform.openNbtData( plateA );
|
|
||||||
name += tag.getString( "InscribeName" );
|
|
||||||
}
|
|
||||||
|
|
||||||
if( !plateB.isEmpty() )
|
|
||||||
{
|
|
||||||
final NBTTagCompound tag = Platform.openNbtData( plateB );
|
|
||||||
if( name.length() > 0 )
|
|
||||||
{
|
|
||||||
name += " ";
|
|
||||||
}
|
|
||||||
name += tag.getString( "InscribeName" );
|
|
||||||
}
|
|
||||||
|
|
||||||
final ItemStack startingItem = renamedItem.copy();
|
|
||||||
renamedItem = renamedItem.copy();
|
|
||||||
final NBTTagCompound tag = Platform.openNbtData( renamedItem );
|
|
||||||
|
|
||||||
final NBTTagCompound display = tag.getCompoundTag( "display" );
|
|
||||||
tag.setTag( "display", display );
|
|
||||||
|
|
||||||
if( name.length() > 0 )
|
|
||||||
{
|
|
||||||
display.setString( "Name", name );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
display.removeTag( "Name" );
|
|
||||||
}
|
|
||||||
|
|
||||||
final List<ItemStack> inputs = Lists.newArrayList( startingItem );
|
|
||||||
final InscriberProcessType type = InscriberProcessType.INSCRIBE;
|
|
||||||
|
|
||||||
final IInscriberRecipeBuilder builder = AEApi.instance().registries().inscriber().builder();
|
|
||||||
builder.withInputs( inputs ).withOutput( renamedItem ).withProcessType( type );
|
|
||||||
|
|
||||||
if( isNameA )
|
|
||||||
{
|
|
||||||
builder.withTopOptional( plateA );
|
|
||||||
}
|
|
||||||
|
|
||||||
if( isNameB )
|
|
||||||
{
|
|
||||||
builder.withBottomOptional( plateB );
|
|
||||||
}
|
|
||||||
|
|
||||||
return builder.build();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for( final IInscriberRecipe recipe : AEApi.instance().registries().inscriber().getRecipes() )
|
for( final IInscriberRecipe recipe : AEApi.instance().registries().inscriber().getRecipes() )
|
||||||
@@ -390,6 +339,7 @@ public class TileInscriber extends AENetworkPowerTile implements IGridTickable,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -570,6 +520,57 @@ public class TileInscriber extends AENetworkPowerTile implements IGridTickable,
|
|||||||
this.processingTime = processingTime;
|
this.processingTime = processingTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private IInscriberRecipe makeNamePressRecipe( ItemStack input, ItemStack plateA, ItemStack plateB )
|
||||||
|
{
|
||||||
|
String name = "";
|
||||||
|
|
||||||
|
if( !plateA.isEmpty() )
|
||||||
|
{
|
||||||
|
final NBTTagCompound tag = Platform.openNbtData( plateA );
|
||||||
|
name += tag.getString( "InscribeName" );
|
||||||
|
}
|
||||||
|
|
||||||
|
if( !plateB.isEmpty() )
|
||||||
|
{
|
||||||
|
final NBTTagCompound tag = Platform.openNbtData( plateB );
|
||||||
|
name += " " + tag.getString( "InscribeName" );
|
||||||
|
}
|
||||||
|
|
||||||
|
final ItemStack startingItem = input.copy();
|
||||||
|
final ItemStack renamedItem = input.copy();
|
||||||
|
final NBTTagCompound tag = Platform.openNbtData( renamedItem );
|
||||||
|
|
||||||
|
final NBTTagCompound display = tag.getCompoundTag( "display" );
|
||||||
|
tag.setTag( "display", display );
|
||||||
|
|
||||||
|
if( name.length() > 0 )
|
||||||
|
{
|
||||||
|
display.setString( "Name", name );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
display.removeTag( "Name" );
|
||||||
|
}
|
||||||
|
|
||||||
|
final List<ItemStack> inputs = Lists.newArrayList( startingItem );
|
||||||
|
final InscriberProcessType type = InscriberProcessType.INSCRIBE;
|
||||||
|
|
||||||
|
final IInscriberRecipeBuilder builder = AEApi.instance().registries().inscriber().builder();
|
||||||
|
builder.withInputs( inputs ).withOutput( renamedItem ).withProcessType( type );
|
||||||
|
|
||||||
|
if( !plateA.isEmpty() )
|
||||||
|
{
|
||||||
|
builder.withTopOptional( plateA );
|
||||||
|
}
|
||||||
|
|
||||||
|
if( !plateB.isEmpty() )
|
||||||
|
{
|
||||||
|
builder.withBottomOptional( plateB );
|
||||||
|
}
|
||||||
|
|
||||||
|
return builder.build();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This is an item handler that exposes the inscribers inventory while providing simulation capabilities that do not
|
* This is an item handler that exposes the inscribers inventory while providing simulation capabilities that do not
|
||||||
* reset the progress if there's already an item in a slot. Previously, the progress of the inscriber was reset when
|
* reset the progress if there's already an item in a slot. Previously, the progress of the inscriber was reset when
|
||||||
|
|||||||
Reference in New Issue
Block a user