From a11f712bcd3deff2736f18434f0316cd72bf411a Mon Sep 17 00:00:00 2001 From: StarWishsama Date: Thu, 16 Jan 2025 14:51:13 +0800 Subject: [PATCH] feat: add new option to bypass item length check --- .../plugin/slimefun4/storage/adapter/mysql/MysqlAdapter.java | 5 ++--- .../storage/adapter/postgresql/PostgreSqlAdapter.java | 5 ++--- .../slimefun4/storage/adapter/sqlite/SqliteAdapter.java | 4 ++-- .../mc/plugin/slimefun4/storage/util/DataUtils.java | 3 ++- .../slimefun4/core/commands/subcommands/VersionsCommand.java | 5 +++++ .../slimefun4/core/config/SlimefunConfigManager.java | 4 ++++ src/main/resources/config.yml | 1 + 7 files changed, 18 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/xzavier0722/mc/plugin/slimefun4/storage/adapter/mysql/MysqlAdapter.java b/src/main/java/com/xzavier0722/mc/plugin/slimefun4/storage/adapter/mysql/MysqlAdapter.java index fdb13fa8a6..e66305bf4a 100644 --- a/src/main/java/com/xzavier0722/mc/plugin/slimefun4/storage/adapter/mysql/MysqlAdapter.java +++ b/src/main/java/com/xzavier0722/mc/plugin/slimefun4/storage/adapter/mysql/MysqlAdapter.java @@ -26,7 +26,6 @@ import com.xzavier0722.mc.plugin.slimefun4.storage.common.RecordKey; import com.xzavier0722.mc.plugin.slimefun4.storage.common.RecordSet; import io.github.thebusybiscuit.slimefun4.implementation.Slimefun; - import java.util.List; public class MysqlAdapter extends SqlCommonAdapter { @@ -399,8 +398,8 @@ private void createTableInformationTable() { if (Slimefun.isNewlyInstalled()) { executeSql("INSERT INTO " + tableInformationTable + " (" + FIELD_TABLE_VERSION + ") SELECT '" - + IDataSourceAdapter.DATABASE_VERSION + "' WHERE NOT EXISTS (SELECT 1 FROM " + tableInformationTable - + ")"); + + IDataSourceAdapter.DATABASE_VERSION + "' WHERE NOT EXISTS (SELECT 1 FROM " + tableInformationTable + + ")"); } } } diff --git a/src/main/java/com/xzavier0722/mc/plugin/slimefun4/storage/adapter/postgresql/PostgreSqlAdapter.java b/src/main/java/com/xzavier0722/mc/plugin/slimefun4/storage/adapter/postgresql/PostgreSqlAdapter.java index 7384d48d5c..500fda78de 100644 --- a/src/main/java/com/xzavier0722/mc/plugin/slimefun4/storage/adapter/postgresql/PostgreSqlAdapter.java +++ b/src/main/java/com/xzavier0722/mc/plugin/slimefun4/storage/adapter/postgresql/PostgreSqlAdapter.java @@ -26,7 +26,6 @@ import com.xzavier0722.mc.plugin.slimefun4.storage.common.RecordKey; import com.xzavier0722.mc.plugin.slimefun4.storage.common.RecordSet; import io.github.thebusybiscuit.slimefun4.implementation.Slimefun; - import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -415,8 +414,8 @@ private void createTableInformationTable() { if (Slimefun.isNewlyInstalled()) { executeSql("INSERT INTO " + tableInformationTable + " (" + FIELD_TABLE_VERSION + ") SELECT '" - + IDataSourceAdapter.DATABASE_VERSION + "' WHERE NOT EXISTS (SELECT 1 FROM " + tableInformationTable - + ")"); + + IDataSourceAdapter.DATABASE_VERSION + "' WHERE NOT EXISTS (SELECT 1 FROM " + tableInformationTable + + ")"); } } } diff --git a/src/main/java/com/xzavier0722/mc/plugin/slimefun4/storage/adapter/sqlite/SqliteAdapter.java b/src/main/java/com/xzavier0722/mc/plugin/slimefun4/storage/adapter/sqlite/SqliteAdapter.java index 744b4105ef..c33a6a9cc8 100644 --- a/src/main/java/com/xzavier0722/mc/plugin/slimefun4/storage/adapter/sqlite/SqliteAdapter.java +++ b/src/main/java/com/xzavier0722/mc/plugin/slimefun4/storage/adapter/sqlite/SqliteAdapter.java @@ -394,8 +394,8 @@ private void createTableInformationTable() { if (Slimefun.isNewlyInstalled()) { executeSql("INSERT INTO " + tableInformationTable + " (" + FIELD_TABLE_VERSION + ") SELECT '" - + IDataSourceAdapter.DATABASE_VERSION + "' WHERE NOT EXISTS (SELECT 1 FROM " + tableInformationTable - + ")"); + + IDataSourceAdapter.DATABASE_VERSION + "' WHERE NOT EXISTS (SELECT 1 FROM " + tableInformationTable + + ")"); } } 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 fc9409a01a..e6b9aa1a47 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 @@ -29,7 +29,8 @@ public static String itemStack2String(ItemStack itemStack) { bs.writeObject(itemStack); var itemStr = Base64Coder.encodeLines(stream.toByteArray()); - if (Slimefun.getDatabaseManager().getBlockDataStorageType() != StorageType.SQLITE + if (!Slimefun.getConfigManager().isBypassItemLengthCheck() + && Slimefun.getDatabaseManager().getBlockDataStorageType() != StorageType.SQLITE && itemStr.length() > 65535) { throw new IllegalArgumentException("检测到过大物品, 请联系物品对应插件开发者解决: " + StringUtil.itemStackToString(itemStack) + ", size = " + itemStr.length()); diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/core/commands/subcommands/VersionsCommand.java b/src/main/java/io/github/thebusybiscuit/slimefun4/core/commands/subcommands/VersionsCommand.java index 0730e611df..9ca11acb45 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/core/commands/subcommands/VersionsCommand.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/core/commands/subcommands/VersionsCommand.java @@ -101,6 +101,11 @@ public void onExecute(@Nonnull CommandSender sender, @Nonnull String[] args) { builder.append("\n已禁用环境兼容性检查").color(ChatColor.RED); } + if (Slimefun.getConfigManager().isBypassItemLengthCheck()) { + builder.append("\n").event((HoverEvent) null); + builder.append("\n已禁用物品长度检查").color(ChatColor.RED); + } + builder.append("\n").event((HoverEvent) null); addPluginVersions(builder); diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/core/config/SlimefunConfigManager.java b/src/main/java/io/github/thebusybiscuit/slimefun4/core/config/SlimefunConfigManager.java index f7d045f755..64fe48752f 100644 --- a/src/main/java/io/github/thebusybiscuit/slimefun4/core/config/SlimefunConfigManager.java +++ b/src/main/java/io/github/thebusybiscuit/slimefun4/core/config/SlimefunConfigManager.java @@ -68,6 +68,9 @@ public class SlimefunConfigManager { @Getter private boolean bypassEnvironmentCheck; + @Getter + private boolean bypassItemLengthCheck; + public SlimefunConfigManager(@Nonnull Slimefun plugin) { Validate.notNull(plugin, "The Plugin instance cannot be null"); @@ -118,6 +121,7 @@ public boolean load(boolean reload) { showHiddenItemGroupsInSearch = pluginConfig.getBoolean("guide.show-hidden-item-groups-in-search"); autoUpdate = pluginConfig.getBoolean("options.auto-update"); bypassEnvironmentCheck = pluginConfig.getBoolean("options.bypass-environment-check"); + bypassItemLengthCheck = pluginConfig.getBoolean("options.bypass-item-length-check"); researchesConfig.setDefaultValue("researches.currency-cost-convert-rate", 25.0); researchCurrencyCostConvertRate = researchesConfig.getDouble("researches.currency-cost-convert-rate"); diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index ecf77ee0ac..71963254cd 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -37,6 +37,7 @@ options: backup-data: true drop-block-creative: true bypass-environment-check: false + bypass-item-length-check: false guide: # 是否在指南中展示原版物品合成配方