feat(hamster-chain-break): 连锁破坏支持自定义方块上限
This commit is contained in:
@@ -9,24 +9,34 @@ import java.util.ArrayList;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public final class ConfigManager {
|
public final class ConfigManager {
|
||||||
|
private static int maxChainBlocks;
|
||||||
private static List<ToolGroup> toolGroups;
|
private static List<ToolGroup> toolGroups;
|
||||||
|
|
||||||
private ConfigManager() {
|
private ConfigManager() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("DataFlowIssue")
|
||||||
public static void init() {
|
public static void init() {
|
||||||
ChainBreakPlugin plugin = ChainBreakPlugin.getInstance();
|
ChainBreakPlugin plugin = ChainBreakPlugin.getInstance();
|
||||||
plugin.saveDefaultConfig();
|
plugin.saveDefaultConfig();
|
||||||
plugin.reloadConfig();
|
plugin.reloadConfig();
|
||||||
FileConfiguration pluginConfig = plugin.getConfig();
|
FileConfiguration pluginConfig = plugin.getConfig();
|
||||||
|
|
||||||
|
maxChainBlocks = pluginConfig.getInt("max-chain-blocks", 300);
|
||||||
|
|
||||||
toolGroups = new ArrayList<>();
|
toolGroups = new ArrayList<>();
|
||||||
ConfigurationSection toolGroupsConfig = pluginConfig.getConfigurationSection("tool-groups");
|
ConfigurationSection toolGroupsConfig = pluginConfig.getConfigurationSection("tool-groups");
|
||||||
|
if (toolGroupsConfig != null) {
|
||||||
for (String key : toolGroupsConfig.getKeys(false)) {
|
for (String key : toolGroupsConfig.getKeys(false)) {
|
||||||
ToolGroup group = new ToolGroup(toolGroupsConfig.getConfigurationSection(key));
|
ToolGroup group = new ToolGroup(toolGroupsConfig.getConfigurationSection(key));
|
||||||
toolGroups.add(group);
|
toolGroups.add(group);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int getMaxChainBlocks() {
|
||||||
|
return maxChainBlocks;
|
||||||
|
}
|
||||||
|
|
||||||
public static List<ToolGroup> getToolGroups() {
|
public static List<ToolGroup> getToolGroups() {
|
||||||
return toolGroups;
|
return toolGroups;
|
||||||
|
@@ -1,6 +1,7 @@
|
|||||||
package cn.hamster3.mc.plugin.chain.breaks.listener;
|
package cn.hamster3.mc.plugin.chain.breaks.listener;
|
||||||
|
|
||||||
import cn.hamster3.mc.plugin.chain.breaks.config.ToolGroup;
|
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 cn.hamster3.mc.plugin.chain.breaks.util.ChainBreakUtils;
|
||||||
import org.bukkit.GameMode;
|
import org.bukkit.GameMode;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
@@ -32,6 +33,7 @@ public final class MainListener implements Listener {
|
|||||||
private MainListener() {
|
private MainListener() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("deprecation")
|
||||||
@EventHandler(ignoreCancelled = true)
|
@EventHandler(ignoreCancelled = true)
|
||||||
public void onBlockBreak(BlockBreakEvent event) {
|
public void onBlockBreak(BlockBreakEvent event) {
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
@@ -92,7 +94,7 @@ public final class MainListener implements Listener {
|
|||||||
}
|
}
|
||||||
result.add(relative);
|
result.add(relative);
|
||||||
nextSearchBlocks.add(relative);
|
nextSearchBlocks.add(relative);
|
||||||
if (result.size() > 300) {
|
if (result.size() > ConfigManager.getMaxChainBlocks()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1,11 +1,14 @@
|
|||||||
# 方块破坏的间隔时间
|
# 最大连锁破坏的方块数量
|
||||||
# 单位: tick
|
max-chain-blocks: 300
|
||||||
break-interval: 5
|
|
||||||
|
|
||||||
|
# 工具组列表
|
||||||
tool-groups:
|
tool-groups:
|
||||||
|
# 工具组名称
|
||||||
axe:
|
axe:
|
||||||
|
# 该工具组内的物品名称,支持正则表达式匹配
|
||||||
tool-types:
|
tool-types:
|
||||||
- ".*_axe"
|
- ".*_axe"
|
||||||
|
# 该工具组内可以连锁破坏的方块,支持正则表达式匹配
|
||||||
block-types:
|
block-types:
|
||||||
- ".*_wood"
|
- ".*_wood"
|
||||||
- ".*_log"
|
- ".*_log"
|
||||||
|
Reference in New Issue
Block a user