From 44401a581e4919e3bea4531a7cf35851c6184aa5 Mon Sep 17 00:00:00 2001 From: Brokkonaut Date: Fri, 24 Feb 2023 06:09:32 +0100 Subject: [PATCH] do not allow invalid item codes --- src/main/java/com/Acrobot/Breeze/Utils/MaterialUtil.java | 6 +++++- .../java/com/Acrobot/ChestShop/Metadata/ItemDatabase.java | 6 ++++++ .../java/com/Acrobot/ChestShop/Signs/ChestShopSign.java | 6 ++++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/Acrobot/Breeze/Utils/MaterialUtil.java b/src/main/java/com/Acrobot/Breeze/Utils/MaterialUtil.java index 753a039fd..904892977 100644 --- a/src/main/java/com/Acrobot/Breeze/Utils/MaterialUtil.java +++ b/src/main/java/com/Acrobot/Breeze/Utils/MaterialUtil.java @@ -99,7 +99,11 @@ public static String getName(Material material) { public static String getSignName(ItemStack itemStack) { String metaCode = ""; if (itemStack.hasItemMeta()) { - metaCode = "#" + Metadata.getItemCode(itemStack); + metaCode = Metadata.getItemCode(itemStack); + if (metaCode == null) { + return null; + } + metaCode = "#" + metaCode; } return getSignMaterialName(itemStack.getType(), metaCode) + metaCode; } diff --git a/src/main/java/com/Acrobot/ChestShop/Metadata/ItemDatabase.java b/src/main/java/com/Acrobot/ChestShop/Metadata/ItemDatabase.java index cbca2b2c6..e77fac326 100644 --- a/src/main/java/com/Acrobot/ChestShop/Metadata/ItemDatabase.java +++ b/src/main/java/com/Acrobot/ChestShop/Metadata/ItemDatabase.java @@ -60,6 +60,12 @@ public String getItemCode(ItemStack item) { return Base62.encode(itemEntity.getId()); } + // different serialized data every time, encoding will not work + String codeCopy = encodeItemStack(decodeItemStack(code)); + if (!codeCopy.equals(code)) { + return null; + } + itemEntity = new Item(code); itemDao.create(itemEntity); diff --git a/src/main/java/com/Acrobot/ChestShop/Signs/ChestShopSign.java b/src/main/java/com/Acrobot/ChestShop/Signs/ChestShopSign.java index d746dd7ba..61477141a 100644 --- a/src/main/java/com/Acrobot/ChestShop/Signs/ChestShopSign.java +++ b/src/main/java/com/Acrobot/ChestShop/Signs/ChestShopSign.java @@ -103,6 +103,9 @@ public static String getCorrectedItemCode(String itemCode, Sign sign) { if (!MaterialUtil.isEmpty(shulkerContent)) { item = shulkerContent; itemCode = MaterialUtil.getSignName(shulkerContent); + if (itemCode == null) { + item = null; + } break out; } } @@ -115,6 +118,9 @@ public static String getCorrectedItemCode(String itemCode, Sign sign) { if (!MaterialUtil.isEmpty(stack)) { item = stack; itemCode = MaterialUtil.getSignName(stack); + if (itemCode == null) { + item = null; + } break; } }