mirror of
https://github.com/Anuken/Mindustry.git
synced 2025-03-13 19:39:04 +07:00
Added system for removing consumers in JSON
This commit is contained in:
parent
2ebe8c9f94
commit
01d875da04
@ -445,6 +445,17 @@ public class ContentParser{
|
||||
if(value.has("consumes") && value.get("consumes").isObject()){
|
||||
for(JsonValue child : value.get("consumes")){
|
||||
switch(child.name){
|
||||
case "remove" -> {
|
||||
String[] values = child.isString() ? new String[]{child.asString()} : child.asStringArray();
|
||||
for(String type : values){
|
||||
Class<?> consumeType = resolve("Consume" + Strings.capitalize(type), Consume.class);
|
||||
if(consumeType != Consume.class){
|
||||
block.removeConsumers(b -> consumeType.isAssignableFrom(b.getClass()));
|
||||
}else{
|
||||
Log.warn("Unknown consumer type '@' in consume: remove.", type);
|
||||
}
|
||||
}
|
||||
}
|
||||
case "item" -> block.consumeItem(find(ContentType.item, child.asString()));
|
||||
case "itemCharged" -> block.consume((Consume)parser.readValue(ConsumeItemCharged.class, child));
|
||||
case "itemFlammable" -> block.consume((Consume)parser.readValue(ConsumeItemFlammable.class, child));
|
||||
|
@ -956,6 +956,14 @@ public class Block extends UnlockableContent implements Senseable{
|
||||
consumeBuilder.remove(cons);
|
||||
}
|
||||
|
||||
public void removeConsumers(Boolf<Consume> b){
|
||||
consumeBuilder.removeAll(b);
|
||||
//the power was removed, unassign it
|
||||
if(!consumeBuilder.contains(c -> c instanceof ConsumePower)){
|
||||
consPower = null;
|
||||
}
|
||||
}
|
||||
|
||||
public ConsumeLiquid consumeLiquid(Liquid liquid, float amount){
|
||||
return consume(new ConsumeLiquid(liquid, amount));
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user