Fixed #11612
This commit is contained in:
@@ -384,20 +384,22 @@ public class DataPatcher{
|
|||||||
}else if(value instanceof JsonValue jsv && object instanceof Block bl && jsv.isObject() && field.equals("consumes")){
|
}else if(value instanceof JsonValue jsv && object instanceof Block bl && jsv.isObject() && field.equals("consumes")){
|
||||||
Seq<Consume> prevBuilder = Reflect.<Seq<Consume>>get(Block.class, bl, "consumeBuilder").copy();
|
Seq<Consume> prevBuilder = Reflect.<Seq<Consume>>get(Block.class, bl, "consumeBuilder").copy();
|
||||||
boolean hadItems = bl.hasItems, hadLiquids = bl.hasLiquids, hadPower = bl.hasPower, acceptedItems = bl.acceptsItems;
|
boolean hadItems = bl.hasItems, hadLiquids = bl.hasLiquids, hadPower = bl.hasPower, acceptedItems = bl.acceptsItems;
|
||||||
reset(() -> {
|
Runnable resetCons = () -> {
|
||||||
Reflect.set(Block.class, bl, "consumeBuilder", prevBuilder);
|
Reflect.set(Block.class, bl, "consumeBuilder", prevBuilder);
|
||||||
bl.reinitializeConsumers();
|
bl.reinitializeConsumers();
|
||||||
bl.hasItems = hadItems;
|
bl.hasItems = hadItems;
|
||||||
bl.hasLiquids = hadLiquids;
|
bl.hasLiquids = hadLiquids;
|
||||||
bl.hasPower = hadPower;
|
bl.hasPower = hadPower;
|
||||||
bl.acceptsItems = acceptedItems;
|
bl.acceptsItems = acceptedItems;
|
||||||
});
|
};
|
||||||
|
reset(resetCons);
|
||||||
|
|
||||||
try{
|
try{
|
||||||
bl.hasPower = false; //if a block doesn't have a power consumer, hasPower should be false. if it does, it will get set to true in reinitializeConsumers
|
bl.hasPower = false; //if a block doesn't have a power consumer, hasPower should be false. if it does, it will get set to true in reinitializeConsumers
|
||||||
parser.readBlockConsumers(bl, jsv);
|
parser.readBlockConsumers(bl, jsv);
|
||||||
bl.reinitializeConsumers();
|
bl.reinitializeConsumers();
|
||||||
}catch(Throwable e){
|
}catch(Throwable e){
|
||||||
|
resetCons.run();
|
||||||
Log.err(e);
|
Log.err(e);
|
||||||
warn("Failed to read consumers for '@': @", bl, Strings.getSimpleMessage(e));
|
warn("Failed to read consumers for '@': @", bl, Strings.getSimpleMessage(e));
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user