Added system for removing consumers in JSON
This commit is contained in:
@@ -445,6 +445,17 @@ public class ContentParser{
|
|||||||
if(value.has("consumes") && value.get("consumes").isObject()){
|
if(value.has("consumes") && value.get("consumes").isObject()){
|
||||||
for(JsonValue child : value.get("consumes")){
|
for(JsonValue child : value.get("consumes")){
|
||||||
switch(child.name){
|
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 "item" -> block.consumeItem(find(ContentType.item, child.asString()));
|
||||||
case "itemCharged" -> block.consume((Consume)parser.readValue(ConsumeItemCharged.class, child));
|
case "itemCharged" -> block.consume((Consume)parser.readValue(ConsumeItemCharged.class, child));
|
||||||
case "itemFlammable" -> block.consume((Consume)parser.readValue(ConsumeItemFlammable.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);
|
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){
|
public ConsumeLiquid consumeLiquid(Liquid liquid, float amount){
|
||||||
return consume(new ConsumeLiquid(liquid, amount));
|
return consume(new ConsumeLiquid(liquid, amount));
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user