GlymeraLumberTower

GlymeraLumberTower

自动伐木塔,内置4个箱子。每5秒向60格立方范围内的最近树木发射绿色光束,砍伐整根树干,将掉落物吸入其箱子中,并重新种植同种树苗。

食物\农业

GlymeraLumberTower - 自动砍树塔,内置储物箱

放置一个塔方块,它就会向附近的树木发射能量箭、砍倒树木、将木材吸入内置储物箱,并重新种植同种树苗——一切全自动完成。

大多数实际版本仅适用于 Hytale stable 5! 别忘了关注我的其他精彩项目——请查看 GlymeraCraft 的个人主页 Discord: https://discord.gg/s5NRFWfxgy


什么是 GlymeraLumberTower?

GlymeraLumberTower 添加了一座静态的 9 格高塔(17 块金砖 + 4 个内置储物箱),可完全自动化树木采集。放置它,然后走开。每五秒钟,它会扫描自身周围 60 格方块区域,对最近的树木发射绿色能量箭,砍倒整个树干柱,将掉落物吸入自己的箱子,并种下一棵匹配木材类型的替代树苗。当所有箱子都装满时,塔会暂停工作,直到你腾出空间。

单个 JAR 文件,无需设置。 将其放入你的服务器 mods/ 文件夹,然后在工作台制作此塔。


特性

全自动树木采集

  • 每座塔 5 秒发射周期 - 扫描、发射、砍伐、吸取、重新种植
  • 60 格切比雪夫立方体范围(3D 立方体,而非球体 - 符合玩家对方块范围的直觉认知)
  • 选择最近的树木 - 当范围内有多棵树木时
  • 视觉箭矢:从塔尖到树干有亮绿色粒子轨迹,外加命中打击效果,并伴有射击/命中音效

智能树干砍伐

  • 一次射击砍断整个树干柱,不仅仅是底部方块
  • 触发 Hytale 原生物理连锁反应来处理树枝和树叶(breakBlock(x, y, z, 0x100)
  • 生成树干自身的自然掉落物(程序化破坏路径原本会丢失这些掉落物)

掉落物吸取

  • 命中后 1.5 秒,塔扫描其射击半径内的所有物品实体
  • 树木掉落物过滤器:仅拾取木材、树叶、树枝和树苗 - 地面上无关的掉落物会保持原样
  • 在四个内置储物箱之间轮询插入,自动跳过已满的箱子
  • 视觉反馈:每次成功吸取时,塔尖会爆出绿色粒子

自动重新种植

  • 每次成功砍伐后,在最近的土壤方块(Type=Soil 标签,范围比仅 Soil_* 更广)上种植 Plant_Sapling_<木材类型>
  • 每棵树一种树苗规则:如果 10 格范围内已有树苗,则跳过重新种植 - 这样对一棵树多次射击也不会产生一片树苗森林
  • 树种匹配:橡木树干重新种植橡木,风暴树皮重新种植风暴树皮等(没有匹配树苗的树种 - 如烧焦木、冷杉 - 会被静默跳过)

整塔拆除防漏洞保护

  • 四个箱子方块及其正下方的地板受到保护,无法被破坏或受损 - 否则挖掉地板会导致箱子作为物品因物理而掉落
  • 破坏塔的任何方块(箱子、金砖、装饰顶部)将原子性地拆除整座塔,并向玩家返还一个单独的塔物品
  • 所有箱子内容物会在塔基处生成物品掉落 - 生存模式玩家在收起塔时不会丢失存放的物品
  • 非所有者无法破坏塔;OP 权限可覆盖

内置储物箱

  • 4 个 Furniture_Dungeon_Chest_Epic 方块组成塔的底座 - 右键点击即可像原版箱子一样打开
  • 当所有四个箱子完全装满时,塔会暂停发射 - 不会因塔溢出而销毁物品
  • 箱子内容物在服务器重启后仍会保留(Hytale 原生持久化机制)

配方开关

  • 默认启用工作台配方
  • config.json 中设置 recipesEnabled: false 以禁用制作,让管理员通过 /give 分发

制作

此塔在工作台(制作 → 生存工作台 类别)中制作:

材料 数量
浓缩生命精华(Ingredient_Life_Essence_Concentrated 3
金锭(Ingredient_Bar_Gold 5

输出:1 × GlymeraLumberTower(5 秒制作时间)

管理员也可以使用 /give <玩家> GlymeraLumberTower 直接发放。


命令

/lumbertower 的所有子命令默认均为仅 OP 可用(用于修改世界或管理的命令)。

命令 描述
/lumbertower spawn 在你脚下放置一座塔(西北角底部箱子为锚点)
/lumbertower remove 移除该世界中最近的塔(干净移除,不会掉落物品)
/lumbertower list 显示该世界中的塔数量(你的 / 总数量)
/lumbertower capture <半宽> <高度> 重新捕获你周围的结构作为新的塔模板
/lumbertower captureat <x> <y> <z> <半宽> <高度> 同上,但指定明确的锚点位置

配置

配置文件:mods/de.glymera_GlymeraLumberTower/config.json(首次启动时自动生成)

{
  "_info": "GlymeraLumberTower v1.0.0 - 自动砍树塔。",
  "fireRadius": 60,
  "cooldownMs": 5000,
  "fireTickMs": 1000,
  "maxTreeHeight": 32,
  "projectileSpeed": 50.0,
  "recipesEnabled": true
}
字段 描述
fireRadius 3D 切比雪夫半边长,以方块为单位(默认 60 → 121×121×121 搜索立方体)
cooldownMs 每座塔每次射击之间的毫秒数(默认 5000 = 5 秒)
fireTickMs 塔的发射循环运行的频率(默认 1000 = 1 秒)
maxTreeHeight 砍伐时遍历的最大树干柱高度(默认 32)
projectileSpeed 能量箭飞行速度,以方块/秒为单位(默认 50 → 在 60 格距离下约 1.2 秒)
recipesEnabled 如果为 false,工作台配方将被禁用 - 管理员通过 /give 分发

安装

将单个 JAR 文件放入你服务器的 mods/ 文件夹:

mods/GlymeraLumberTower-1.0.0.jar

大功告成。JAR 文件包含所有内容:插件代码、默认塔模板、方块和配方定义、粒子系统、音效、图标和语言文件。配置文件、模板和塔数据文件会在首次启动时自动生成到 mods/de.glymera_GlymeraLumberTower/ 目录下。


技术细节

  • 一体化 JAR 文件,包含 IncludesAssetPack: true - 无需单独的资源包文件夹
  • 默认塔模板作为 /default-template.json 内置于 JAR 中,首次启动时提取到数据目录(遵循 GlymeraObelisk 模式)
  • 树干砍伐使用 world.breakBlock(x, y, z, 0x100) 来触发 Hytale 原生的邻居更新连锁反应(setBlock("Empty") 低级路径会静默删除方块,不会向树枝和树叶传播更新)
  • 树干掉落物通过 ItemComponent.generateItemDrops 手动生成,因为程序化破坏路径不会产生自然的掉落管线输出
  • 底部树干检测会过滤掉其下方方块不是同一树干类型的树干(Hytale 自然树木的底部原木下方有 Wood_*_Roots,且 Material:Empty
  • 土壤检测使用 Type=Soil 标签,而非 Soil_* 名称前缀 - 这也能捕获 Pathway_* 和其他树苗可接受的带标签方块
  • 树苗重新验证间隔:Hytale 在 setBlock 时不会验证 Support.Down,仅在第一个生长刻时才验证。对现有树苗的 10 格半径检查确保一棵树对应一棵树苗,无论被击中多少次
  • 原子性保护在两个映射中跟踪:blockPosToLumberTower(21 个塔方块)和 supportPosToLumberTower(箱子下方的 4 个地板位置)。对任一映射的破坏/伤害事件都会触发原子性拆除;拆除时,所有箱子内容物通过 ItemContainerBlock.getItemContainer().getItemStack(i) 提取并生成为物品掉落物
  • 持久化是原子性的(.tmp + ATOMIC_MOVE),防止崩溃时产生零字节文件

注意事项

  • 塔不会跨世界瞄准。 每座塔仅扫描其自身所在的世界。
  • 塔不会瞄准树枝或树叶。 仅针对底部树干方块 - 树枝和树叶会在树干被破坏后通过物理连锁反应倒下。
  • 彼此范围重叠的多座塔会独立发射。如果两座塔吸取相同的掉落物,箱子内容物可能会出现冗余填充 - 这没问题,物品不会被复制。
  • 塔放置使用玩家的脚部位置作为西北角底部箱子的锚点。 使用 /lumbertower spawn 时,请确保你的脚下有 3×3 的空地。
  • 配方与 GlymeraObelisk 配方相同(3 个浓缩生命精华 + 5 个金锭,在生存工作台制作)。两个物品在工作台中显示为单独的可制作条目 - 玩家选择制作哪一个。

由 Glymera 为 Hytale 社区精心制作