自动插火把

自动插火把

Automatically places torches in selected areas or near the player, with a client-side light level overlay for identifying mob-spawnable blocks. 在选定区域或玩家附近自动放置火把,并提供客户端光照等级显示,快速定位可能刷怪的位置。(AutoTorch、自动插火把、自动火把)

自动火把

English | 简体中文

一款适用于 Minecraft 1.7.10~26.2 的自动火把放置与光照等级显示模组,支持 NeoForge、Forge 和 Fabric。

开发动机

挖掘边界枯燥乏味,而手动放置火把又容易遗漏位置。现有的光照等级显示模组也没有考虑到溺尸和沼泽史莱姆的特殊生成条件,这使得建造沼泽刷怪塔或为河床照明十分不便。因此,这个模组应运而生。

概述

  • 默认按下 G 键打开选择面板,可在选定区域内或玩家附近配置自动火把放置。
  • 默认按下 F7 键切换光照等级显示,包含针对溺尸和沼泽史莱姆的特殊检测。
附近火把放置 光照等级显示 区域火把放置
仅客户端 仅客户端 客户端与服务器

 

截图

在选定区域内自动放置火把 光照等级显示 设置面板(英文) 设置面板(中文)

使用方法

  • 默认按下 G 键打开选择面板,按下 F7 键切换光照等级显示。两个按键绑定均可更改。
  • 光照等级显示:支持 X 标记和数字方块光照等级,显示范围为 1-64 格(已进行性能优化)。
颜色 含义
红色 怪物随时可能生成
黄色 怪物在夜晚可能生成
绿色 怪物无法生成
紫色 沼泽史莱姆在夜晚可能生成
青色 溺尸可能生成

 

  • 附近自动火把放置:在玩家周围两格内搜索有效位置,并使用原版右键交互从玩家物品栏放置火把。仅当光照等级低于设定阈值时才会放置火把,并可选择是否将天空光照纳入计算。
  • 区域自动火把放置:选择 A、B 两点以定义长方体(对角)或球体(中心/半径),支持木斧选择。将选区设置为照明区域(绿色)或排除区域(红色),然后点击“开始任务”。支持一个照明区域和多个排除区域。(使用默认设置照明一个最大尺寸的普通自然地形区域,通常需要大约半组物品栏,即约 1,000 个火把。)
  • 所有功能均可在上述设置面板中进行配置。

功能特性

附近自动火把放置

  • 此功能完全在客户端运行;服务器无需安装本模组。
  • 启用后,每 10 刻扫描一次玩家周围水平半径 2 格、垂直范围 -2 至 +1 格的区域,优先处理最近的暗处位置。
  • 仅在空气方块(无流体)中放置火把,且火把能够稳固放置并避免与玩家碰撞。
  • 使用副手或快捷栏中的普通火把,并通过原版右键交互放置。因此,放置行为仍受服务器规则约束,如冒险模式限制、领地保护和交互距离。
  • 触发放置的光照阈值可在 1 至 16 之间设置。您还可以选择在评估光照等级时是否包含天空光照。排除天空光照后,室外区域将仅使用方块光照进行评估。
  • 如果模组临时切换快捷栏槽位放置火把,放置完成后会自动切回。放置失败的位置在 40 刻内不会重试。

光照等级显示

  • 此功能完全在客户端运行。默认按下 F7 键切换,或从 G 面板中进行配置。
  • 玩家周围区域采用增量扫描,水平显示范围可配置为 1-64 格。玩家移动时显示会自动刷新,扫描工作会分摊到各帧执行。
  • 同时支持 X 标记和数字光照等级。数字表示方块光照等级,其颜色表示该位置的生成风险。
  • 标准标记会检测脚部和头部空间、下方方块的碰撞表面,以及原版地面怪物生成条件,避免在怪物无法站立的位置产生错误的生成标记。
  • 可选的沼泽史莱姆检测会评估高度、生物群系、方块光照以及原版史莱姆生成条件,将风险位置标记为紫色。
  • 可选的溺尸检测会评估连续水体、生物群系生成列表、海平面和方块光照,将有效水柱的顶部标记为青色。

区域自动火把放置

  • 客户端负责选区和任务设置,服务器负责验证、扫描和放置火把。在多人游戏中,客户端和服务器都必须安装本模组。
  • A、B 两点可以在面板中输入、设置为当前位置,或通过使用木斧左键和右键点击选择。木斧选择功能可禁用;启用时会拦截这些交互,以防止意外破坏方块。
  • 长方体使用 A、B 作为对角。球体使用 A 作为球心,A 到 B 的直线距离作为半径。面板可以在内切球和外接立方体之间转换。
  • 每位玩家可以配置一个绿色照明区域和多个红色排除区域。选区可以渲染为半透明面或轮廓线,也支持平滑球体渲染。
  • 任务仅处理方块光照等级为 0、脚部和头部均为空气、下方有安全站立方块的位置。启用“仅限地下”时,还会跳过有天空光照的位置。
  • 模组首先尝试在每个暗处位置下方放置火把。如果无法放置,则会在附近随机搜索有效放置位置。仅处理已加载的区块;模组绝不会强制加载区块。
  • 扫描分两轮进行。第一轮使用配置的最小间距,第二轮使用更紧凑的间距来填补仍然黑暗的位置。扫描和放置工作每刻均有速率限制,多名玩家的任务会轮流获得可用的处理预算。
  • 每个任务可设置最大火把数量;0 表示无限制。生存模式和创造模式的物品消耗可分别配置。服务器会验证所有任务设置,在多人游戏中以其生存模式消耗规则为准。
  • 每位玩家只能有一个进行中的任务。开始新任务将取代旧任务,重新打开面板可以取消当前进行中的任务。

配置文件

首次启动后会自动生成两类配置文件。

配置文件中的布尔选项使用 true 或 false,不带引号。

客户端配置

文件:config/autotorch-client.toml

 

[nearbyAutoTorch]
# 是否启用附近自动火把放置。
enabled = false
# 当光照等级低于此值时尝试放置火把。范围:1-16。
lightThreshold = 4
# true:使用方块光照和天空光照中较大者;false:仅使用方块光照。
includeSkyLight = true

[lightOverlay]
# 是否启用光照等级显示。
enabled = false
# 以玩家为中心的水平显示范围。范围:1-64 格。
horizontalRange = 16
# true:显示数字光照等级;false:显示 X 标记。
showNumbers = false
# 是否标记满足原版沼泽史莱姆生成条件的位置。
detectSwampSlimes = false
# 是否标记满足原版溺尸生成条件的位置。
detectDrowned = false

[selectionOverlay]
# 是否显示照明区域和排除区域。
enabled = true
# true:仅显示轮廓线;false:显示半透明面。
linesOnly = false
# 是否对球形选区使用更平滑的渲染。
smoothSpheres = false

[lightingTaskDefaults]
# 每个任务的默认最大火把数量。范围:0-4096;0 表示无限制。
maxTorches = 0
# 火把之间的默认最小间距。范围:3-12 格。
minSpacing = 8
# 默认是否仅处理没有天空光照的位置。
undergroundOnly = true
# 默认情况下,创造模式是否从物品栏消耗火把。
creativeConsumeTorches = false
# 单机游戏中,默认情况下生存模式是否从物品栏消耗火把。
# 在多人游戏中,以服务器的 gameplay.survivalConsumesTorches 设置为准。
survivalConsumeTorches = true
# 是否使用木斧左键和右键点击选择 A、B 点。
woodenAxeSelectionEnabled = true

服务器配置

文件:<世界目录>/serverconfig/autotorch-server.toml

[limits]
# 长方体任意一边的最大允许长度。范围:1-257 格。
maxBoxAxisLength = 257
# 球形选区的最大允许半径。范围:1-160 格。
maxSphereRadius = 160
# 单个任务中允许的最大排除区域数量。范围:0-32。
maxExclusions = 32
# 单个任务可设置的最大火把数量。范围:1-4096。
maxTorchesPerTask = 4096
# 客户端是否可将最大火把数量设置为 0(无限制)。
allowUnlimitedTorches = true
# 客户端可配置的火把间距下限和上限。两者范围均为 3-12。
minSpacing = 3
maxSpacing = 12
# 整个服务器上可同时运行的最大任务数量。范围:1-1024。
maxConcurrentTasks = 64

[gameplay]
# 生存模式任务是否必须消耗玩家物品栏中的普通火把。
survivalConsumesTorches = true

[performance]
# 每个任务每刻扫描的最大方块数量。范围:1-120000。
scanBudgetPerTaskTick = 12000
# 每个任务每刻放置的最大火把数量。范围:1-64。
placeBudgetPerTaskTick = 8
# 服务器每刻所有任务扫描的方块总数上限。范围:1-240000。
globalScanBudgetPerTick = 24000
# 服务器每刻所有任务放置的火把总数上限。范围:1-256。
globalPlaceBudgetPerTick = 16
# 在每个暗处位置附近搜索有效火把位置的最大尝试次数。范围:1-128。
randomPlacementAttempts = 32

降低 scanBudgetPerTaskTick 和 globalScanBudgetPerTick 会减少扫描导致的每刻负载,但会增加任务耗时。放置预算同理。服务器级预算是硬性限制,每个任务实际获得的预算也会根据并发运行的任务数量进行分配。

 

限制与安全

  • 默认情况下,长方体的每条边限制为 257 格,球体限制为半径 160 格(直径 320 格)。服务器管理员可以在配置中调整这些限制。
  • 模组不会强制加载区块;扫描过程中遇到的未加载区块会被跳过。(渲染距离至少为 8 个区块时,相关区域通常会处于已加载状态。)
  • 可生成性检查采用适用于常见原版敌对怪物的保守规则,不包含对其他模组的特殊处理。
  • 不支持领地插件。放置使用原版 /setblock 行为。