Skip to content

Commit

Permalink
fix blocks having unsafe nbt values
Browse files Browse the repository at this point in the history
  • Loading branch information
IThundxr committed Sep 16, 2024
1 parent 11787d8 commit ac61d24
Showing 1 changed file with 14 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ public static synchronized void addSurvivalProcessor(BlockEntityType<?> type,
addProcessor(AllBlockEntityTypes.CREATIVE_CRATE.get(), itemProcessor("Filter"));
addProcessor(AllBlockEntityTypes.PLACARD.get(), itemProcessor("Item"));
}

// Triggered by block tag, not BE type
private static final UnaryOperator<CompoundTag> signProcessor = data -> {
for (int i = 0; i < 4; ++i)
Expand Down Expand Up @@ -86,14 +86,22 @@ public static UnaryOperator<CompoundTag> itemProcessor(String tagKey) {
}

public static ItemStack withUnsafeNBTDiscarded(ItemStack stack) {
if (stack.getTag() == null)
CompoundTag tag = stack.getTag();
if (tag == null)
return stack;
ItemStack copy = stack.copy();
stack.getTag()
.getAllKeys()
copy.setTag(withUnsafeNBTDiscarded(tag));
return copy;
}

public static CompoundTag withUnsafeNBTDiscarded(CompoundTag tag) {
if (tag == null)
return null;
CompoundTag copy = tag.copy();
tag.getAllKeys()
.stream()
.filter(NBTProcessors::isUnsafeItemNBTKey)
.forEach(copy::removeTagKey);
.forEach(copy::remove);
return copy;
}

Expand Down Expand Up @@ -136,7 +144,7 @@ public static CompoundTag process(BlockState blockState, BlockEntity blockEntity
return signProcessor.apply(compound);
if (blockEntity.onlyOpCanSetNbt())
return null;
return compound;
return withUnsafeNBTDiscarded(compound);
}

}

0 comments on commit ac61d24

Please sign in to comment.