feat(hamster-chain-break): 连锁破坏支持自定义方块上限

This commit is contained in:
2023-06-01 11:56:44 +08:00
parent ca0561f0b9
commit 66ff9de502
3 changed files with 22 additions and 7 deletions

View File

@@ -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;

View File

@@ -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;
}
}

View File

@@ -1,11 +1,14 @@
# 方块破坏的间隔时间
# 单位: tick
break-interval: 5
# 最大连锁破坏的方块数量
max-chain-blocks: 300
# 工具组列表
tool-groups:
# 工具组名称
axe:
# 该工具组内的物品名称,支持正则表达式匹配
tool-types:
- ".*_axe"
# 该工具组内可以连锁破坏的方块,支持正则表达式匹配
block-types:
- ".*_wood"
- ".*_log"