diff --git a/src/main/java/com/xzavier0722/mc/plugin/slimefun4/storage/util/DataUtils.java b/src/main/java/com/xzavier0722/mc/plugin/slimefun4/storage/util/DataUtils.java index 38d6f04c13..b7b0275565 100644 --- a/src/main/java/com/xzavier0722/mc/plugin/slimefun4/storage/util/DataUtils.java +++ b/src/main/java/com/xzavier0722/mc/plugin/slimefun4/storage/util/DataUtils.java @@ -26,7 +26,7 @@ public static String itemStack2String(ItemStack itemStack) { var itemStr = Base64Coder.encodeLines(stream.toByteArray()); if (Slimefun.getDatabaseManager().getBlockDataStorageType() != StorageType.SQLITE - && itemStr.length() > 65535) { + && itemStr.length() > 65533) { throw new IllegalArgumentException("检测到过大物品, 请联系物品对应插件开发者解决: " + StringUtil.itemStackToString(itemStack) + ", size = " + itemStr.length()); } diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/BlockListener.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/BlockListener.java index 89080071ed..f9c8849230 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/BlockListener.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/BlockListener.java @@ -119,6 +119,15 @@ public void onBlockPlace(BlockPlaceEvent e) { } if (sfItem != null && !(sfItem instanceof NotPlaceable)) { + /* + 如果这个物品是工具类物品,我们需要检查它是否修改了一个方块 (铲子右键、打火石点火) + 并不要为替换的方块创建一个对应工具 ID 的数据 + 这应该适用于大部分情况,但建议附属开发者们还是显式声明对应物品是不可放置的最好 + */ + if (!e.getBlockReplacedState().getType().isAir()) { + return; + } + if (!sfItem.canUse(e.getPlayer(), true)) { e.setCancelled(true); } else {