diff --git a/hamster-chain-break/src/main/java/cn/hamster3/mc/plugin/chain/breaks/core/ConfigManager.java b/hamster-chain-break/src/main/java/cn/hamster3/mc/plugin/chain/breaks/core/ConfigManager.java index f23bc79..2b58d85 100644 --- a/hamster-chain-break/src/main/java/cn/hamster3/mc/plugin/chain/breaks/core/ConfigManager.java +++ b/hamster-chain-break/src/main/java/cn/hamster3/mc/plugin/chain/breaks/core/ConfigManager.java @@ -9,25 +9,35 @@ import java.util.ArrayList; import java.util.List; public final class ConfigManager { + private static int maxChainBlocks; private static List toolGroups; private ConfigManager() { } + @SuppressWarnings("DataFlowIssue") public static void init() { ChainBreakPlugin plugin = ChainBreakPlugin.getInstance(); plugin.saveDefaultConfig(); plugin.reloadConfig(); FileConfiguration pluginConfig = plugin.getConfig(); + maxChainBlocks = pluginConfig.getInt("max-chain-blocks", 300); + toolGroups = new ArrayList<>(); ConfigurationSection toolGroupsConfig = pluginConfig.getConfigurationSection("tool-groups"); - for (String key : toolGroupsConfig.getKeys(false)) { - ToolGroup group = new ToolGroup(toolGroupsConfig.getConfigurationSection(key)); - toolGroups.add(group); + if (toolGroupsConfig != null) { + for (String key : toolGroupsConfig.getKeys(false)) { + ToolGroup group = new ToolGroup(toolGroupsConfig.getConfigurationSection(key)); + toolGroups.add(group); + } } } + public static int getMaxChainBlocks() { + return maxChainBlocks; + } + public static List getToolGroups() { return toolGroups; } diff --git a/hamster-chain-break/src/main/java/cn/hamster3/mc/plugin/chain/breaks/listener/MainListener.java b/hamster-chain-break/src/main/java/cn/hamster3/mc/plugin/chain/breaks/listener/MainListener.java index e5ffa2d..d0a1585 100644 --- a/hamster-chain-break/src/main/java/cn/hamster3/mc/plugin/chain/breaks/listener/MainListener.java +++ b/hamster-chain-break/src/main/java/cn/hamster3/mc/plugin/chain/breaks/listener/MainListener.java @@ -1,6 +1,7 @@ package cn.hamster3.mc.plugin.chain.breaks.listener; import cn.hamster3.mc.plugin.chain.breaks.config.ToolGroup; +import cn.hamster3.mc.plugin.chain.breaks.core.ConfigManager; import cn.hamster3.mc.plugin.chain.breaks.util.ChainBreakUtils; import org.bukkit.GameMode; import org.bukkit.Material; @@ -32,6 +33,7 @@ public final class MainListener implements Listener { private MainListener() { } + @SuppressWarnings("deprecation") @EventHandler(ignoreCancelled = true) public void onBlockBreak(BlockBreakEvent event) { Player player = event.getPlayer(); @@ -92,7 +94,7 @@ public final class MainListener implements Listener { } result.add(relative); nextSearchBlocks.add(relative); - if (result.size() > 300) { + if (result.size() > ConfigManager.getMaxChainBlocks()) { return; } } diff --git a/hamster-chain-break/src/main/resources/config.yml b/hamster-chain-break/src/main/resources/config.yml index fddca96..d3dca2d 100644 --- a/hamster-chain-break/src/main/resources/config.yml +++ b/hamster-chain-break/src/main/resources/config.yml @@ -1,11 +1,14 @@ -# 方块破坏的间隔时间 -# 单位: tick -break-interval: 5 +# 最大连锁破坏的方块数量 +max-chain-blocks: 300 +# 工具组列表 tool-groups: + # 工具组名称 axe: + # 该工具组内的物品名称,支持正则表达式匹配 tool-types: - ".*_axe" + # 该工具组内可以连锁破坏的方块,支持正则表达式匹配 block-types: - ".*_wood" - ".*_log"