This commit is contained in:
@@ -15,7 +15,10 @@ import mindustry.world.draw.*;
|
|||||||
import mindustry.world.meta.*;
|
import mindustry.world.meta.*;
|
||||||
|
|
||||||
public class GenericCrafter extends Block{
|
public class GenericCrafter extends Block{
|
||||||
|
/** Written to outputItems as a single-element array if outputItems is null. */
|
||||||
public @Nullable ItemStack outputItem;
|
public @Nullable ItemStack outputItem;
|
||||||
|
/** Overwrites outputItem if not null. */
|
||||||
|
public @Nullable ItemStack[] outputItems;
|
||||||
public @Nullable LiquidStack outputLiquid;
|
public @Nullable LiquidStack outputLiquid;
|
||||||
|
|
||||||
public float craftTime = 80;
|
public float craftTime = 80;
|
||||||
@@ -45,8 +48,8 @@ public class GenericCrafter extends Block{
|
|||||||
super.setStats();
|
super.setStats();
|
||||||
stats.add(Stat.productionTime, craftTime / 60f, StatUnit.seconds);
|
stats.add(Stat.productionTime, craftTime / 60f, StatUnit.seconds);
|
||||||
|
|
||||||
if(outputItem != null){
|
if(outputItems != null){
|
||||||
stats.add(Stat.output, StatValues.items(craftTime, outputItem));
|
stats.add(Stat.output, StatValues.items(craftTime, outputItems));
|
||||||
}
|
}
|
||||||
|
|
||||||
if(outputLiquid != null){
|
if(outputLiquid != null){
|
||||||
@@ -64,6 +67,9 @@ public class GenericCrafter extends Block{
|
|||||||
@Override
|
@Override
|
||||||
public void init(){
|
public void init(){
|
||||||
outputsLiquid = outputLiquid != null;
|
outputsLiquid = outputLiquid != null;
|
||||||
|
if(outputItems == null && outputItem != null){
|
||||||
|
outputItems = new ItemStack[]{outputItem};
|
||||||
|
}
|
||||||
super.init();
|
super.init();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -74,7 +80,7 @@ public class GenericCrafter extends Block{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean outputsItems(){
|
public boolean outputsItems(){
|
||||||
return outputItem != null;
|
return outputItems != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public class GenericCrafterBuild extends Building{
|
public class GenericCrafterBuild extends Building{
|
||||||
@@ -95,8 +101,12 @@ public class GenericCrafter extends Block{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean shouldConsume(){
|
public boolean shouldConsume(){
|
||||||
if(outputItem != null && items.get(outputItem.item) + outputItem.amount > itemCapacity){
|
if(outputItems != null){
|
||||||
return false;
|
for(ItemStack output : outputItems){
|
||||||
|
if(items.get(output.item) + output.amount > itemCapacity){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return (outputLiquid == null || !(liquids.get(outputLiquid.liquid) >= liquidCapacity - 0.001f)) && enabled;
|
return (outputLiquid == null || !(liquids.get(outputLiquid.liquid) >= liquidCapacity - 0.001f)) && enabled;
|
||||||
}
|
}
|
||||||
@@ -119,9 +129,11 @@ public class GenericCrafter extends Block{
|
|||||||
if(progress >= 1f){
|
if(progress >= 1f){
|
||||||
consume();
|
consume();
|
||||||
|
|
||||||
if(outputItem != null){
|
if(outputItems != null){
|
||||||
for(int i = 0; i < outputItem.amount; i++){
|
for(ItemStack output : outputItems){
|
||||||
offload(outputItem.item);
|
for(int i = 0; i < output.amount; i++){
|
||||||
|
offload(output.item);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -133,8 +145,10 @@ public class GenericCrafter extends Block{
|
|||||||
progress %= 1f;
|
progress %= 1f;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(outputItem != null && timer(timerDump, dumpTime / timeScale)){
|
if(outputItems != null && timer(timerDump, dumpTime / timeScale)){
|
||||||
dump(outputItem.item);
|
for(ItemStack output : outputItems){
|
||||||
|
dump(output.item);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(outputLiquid != null){
|
if(outputLiquid != null){
|
||||||
|
|||||||
Reference in New Issue
Block a user