feat(hamster-chain-break): 连锁破坏支持自定义方块上限
This commit is contained in:
@@ -9,24 +9,34 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public final class ConfigManager {
|
||||
private static int maxChainBlocks;
|
||||
private static List<ToolGroup> 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");
|
||||
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<ToolGroup> getToolGroups() {
|
||||
return toolGroups;
|
||||
|
@@ -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;
|
||||
}
|
||||
}
|
||||
|
@@ -1,11 +1,14 @@
|
||||
# 方块破坏的间隔时间
|
||||
# 单位: tick
|
||||
break-interval: 5
|
||||
# 最大连锁破坏的方块数量
|
||||
max-chain-blocks: 300
|
||||
|
||||
# 工具组列表
|
||||
tool-groups:
|
||||
# 工具组名称
|
||||
axe:
|
||||
# 该工具组内的物品名称,支持正则表达式匹配
|
||||
tool-types:
|
||||
- ".*_axe"
|
||||
# 该工具组内可以连锁破坏的方块,支持正则表达式匹配
|
||||
block-types:
|
||||
- ".*_wood"
|
||||
- ".*_log"
|
||||
|
Reference in New Issue
Block a user