fix blocks having unsafe nbt values

This commit is contained in:
IThundxr 2024-09-16 17:29:10 -04:00
parent 11787d845f
commit ac61d249cc
Failed to generate hash of commit

View file

@ -58,7 +58,7 @@ public final class NBTProcessors {
addProcessor(AllBlockEntityTypes.CREATIVE_CRATE.get(), itemProcessor("Filter")); addProcessor(AllBlockEntityTypes.CREATIVE_CRATE.get(), itemProcessor("Filter"));
addProcessor(AllBlockEntityTypes.PLACARD.get(), itemProcessor("Item")); addProcessor(AllBlockEntityTypes.PLACARD.get(), itemProcessor("Item"));
} }
// Triggered by block tag, not BE type // Triggered by block tag, not BE type
private static final UnaryOperator<CompoundTag> signProcessor = data -> { private static final UnaryOperator<CompoundTag> signProcessor = data -> {
for (int i = 0; i < 4; ++i) for (int i = 0; i < 4; ++i)
@ -86,14 +86,22 @@ public final class NBTProcessors {
} }
public static ItemStack withUnsafeNBTDiscarded(ItemStack stack) { public static ItemStack withUnsafeNBTDiscarded(ItemStack stack) {
if (stack.getTag() == null) CompoundTag tag = stack.getTag();
if (tag == null)
return stack; return stack;
ItemStack copy = stack.copy(); ItemStack copy = stack.copy();
stack.getTag() copy.setTag(withUnsafeNBTDiscarded(tag));
.getAllKeys() return copy;
}
public static CompoundTag withUnsafeNBTDiscarded(CompoundTag tag) {
if (tag == null)
return null;
CompoundTag copy = tag.copy();
tag.getAllKeys()
.stream() .stream()
.filter(NBTProcessors::isUnsafeItemNBTKey) .filter(NBTProcessors::isUnsafeItemNBTKey)
.forEach(copy::removeTagKey); .forEach(copy::remove);
return copy; return copy;
} }
@ -136,7 +144,7 @@ public final class NBTProcessors {
return signProcessor.apply(compound); return signProcessor.apply(compound);
if (blockEntity.onlyOpCanSetNbt()) if (blockEntity.onlyOpCanSetNbt())
return null; return null;
return compound; return withUnsafeNBTDiscarded(compound);
} }
} }