Patcher requirement re-initialization fixes

This commit is contained in:
Anuken
2025-11-04 18:05:17 -05:00
parent 38d9bc83a3
commit 03f6a7f590
3 changed files with 70 additions and 31 deletions

View File

@@ -355,17 +355,19 @@ public class ContentPatcher{
}, value, true);
}else if(value instanceof JsonValue jsv && object instanceof Block bl && jsv.isObject() && field.equals("consumes")){
modifiedField(bl, "consumeBuilder", Reflect.<Seq<Consume>>get(Block.class, bl, "consumeBuilder").copy());
modifiedField(bl, "consumers", Reflect.<Consume[]>get(Block.class, bl, "consumers"));
boolean hadItems = bl.hasItems, hadLiquids = bl.hasLiquids, hadPower = bl.hasPower, acceptedItems = bl.acceptsItems;
reset(() -> {
bl.reinitializeConsumers();
bl.hasItems = hadItems;
bl.hasLiquids = hadLiquids;
bl.hasPower = hadPower;
bl.acceptsItems = acceptedItems;
});
after(bl::reinitializeConsumers);
try{
parser.readBlockConsumers(bl, jsv);
bl.reinitializeConsumers();
}catch(Throwable e){
Log.err(e);
warn("Failed to read consumers for '@': @", bl, Strings.getSimpleMessage(e));

View File

@@ -716,6 +716,8 @@ public class Block extends UnlockableContent implements Senseable{
super.afterPatch();
barMap.clear();
setBars();
offset = ((size + 1) % 2) * tilesize / 2f;
sizeOffset = -((size - 1) / 2);
}
public boolean consumesItem(Item item){