
格莱梅拉农场水域
FarmWater 将 Minecraft 风格的自动作物浇水功能带到了 Hytale。将水放置在距离你的耕地 4 个方块范围内,耕地就会自动保持湿润。适用于水源方块和流动水。无需配置——只需安装并开始耕种!
查看大图💧 FarmWater 💧
水方块会自动保持周围4格半径内的农田湿润。我的世界风格。
当前版本仅适用于 Hytale stable 5!不要错过我其他精彩的项目——请查看 GlymeraCraft 的个人资料 Discord: https://discord.gg/s5NRFWfxgy
◆ FarmWater 是什么?
在原版 Hytale 中,耕种需要你每次作物变干时,手动用喷壶浇水。无法通过简单地在农田附近放置水来实现自动化浇水。如果你玩过 Minecraft,就会知道在农田4格范围内放置一个水源方块,可以让土壤永久保持湿润——无需手动操作。
FarmWater 将这个深受喜爱的 Minecraft 机制带到了 Hytale。在你耕好的农田4格范围内放置任何水方块——无论是水源方块还是流动水——该插件都会自动保持该土壤湿润。无需喷壶。无需手动劳作。只需在农场附近放水,种下作物,然后看着它们生长。
此插件是任何包含耕种玩法的 Hytale 服务器必备的生活质量改进。它消除了手动浇水的重复性劳作,同时仍然要求玩家用渠道建造一个适当的灌溉系统。结果是耕种变得既有回报又有策略性,而不是乏味的工作。
◆ FarmWater 解决的问题
Hytale 的耕种系统需要持续的手动浇水。每次你的作物变干时,你都需要拿起喷壶,装满水,然后逐个给每块农田方块浇水。对于小型私人菜园来说,这还可以管理。但对于大型农场来说,这就变成了一项极其繁琐和重复的任务,足以让玩家完全放弃耕种。
▸ 没有 FarmWater
- 你在耕好的土壤上种植作物
- 一段时间后土壤变干
- 你必须用喷壶手动浇灌每个方块
- 如果忘记浇水,作物会枯萎死亡
- 大型农场变成了一份需要不断浇水的全职工作
- 玩家因为太繁琐而避免耕种
- 当你在探索或建造时,无人照看的农场会死亡
▸ 有 FarmWater
- 你在耕好的农田附近放置水方块
- 插件自动保持4格范围内所有农田湿润
- 同时支持水源方块和流动水
- 只要有水在附近,作物永远不会变干
- 你可以建造带有战略性水渠的大型农场
- 耕种变成一个有趣的建造挑战,而不是一件苦差事
- 即使你外出探索,你的农场也能保持湿润
◆ 工作原理
FarmWater 使用一个高度优化的两阶段扫描系统,完全在后台运行。无需任何命令。无需任何配置。只需安装插件,在农田附近放水,魔法就会发生。
▸ 第一阶段:发现(每 30 秒)
发现阶段扫描服务器上的所有已加载区块,以查找耕好的农田方块。这不仅限于玩家周围的区域——如果一个区块已加载,FarmWater 就会找到其中的任何农田。发现系统使用多级过滤方法来最小化性能影响:
- 区块级过滤器 - 在扫描单个方块之前,插件检查一个区块列是否包含任何耕好的土壤。如果没有,整个区块会立即跳过。这消除了绝大多数的待扫描区块。
- 方块区域级过滤器 - 每个区块列被划分为垂直的方块区域(32格高)。插件在扫描其内容之前,检查每个方块区域是否存在耕好的土壤。空的方块区域和只包含空气的方块区域会立即跳过。
- Y 范围过滤器 - 只考虑 Y=30 到 Y=200 之间的方块。地下水平以下或山峰顶部的农田会被排除在扫描之外。这避免了在不可能存在的位置浪费时间。
- 方块级扫描 - 在符合条件的方块区域内,每个方块位置都会与缓存的耕好土壤方块 ID 进行对比,使用快速的整数比较(没有字符串查找)。发现的农田位置使用位打包坐标存储,以最小化内存使用。
新发现的农田会自动添加到跟踪列表中。已被破坏或变回普通土壤的农田会在灌溉阶段自动移除。
▸ 第二阶段:灌溉(每 10 秒)
灌溉阶段处理所有被跟踪的农田位置,并检查附近是否存在水。对于每个被跟踪的农田方块,插件执行以下步骤:
- 验证 - 确认该方块仍然是耕好的土壤。如果农田已被破坏、踩踏或变回泥土,则将其从跟踪列表中移除。
- 水距离检查 - 在农田周围扫描一个 9x9 的水平区域(每个方向4格)。水会在农田的 同一 Y 高度 和 下方一格 (Y-1) 处被检查。这意味着水可以在土壤表面高度,也可以在农田下方的渠道中。插件会检测水源水和流动水。
- 原生系统检查 - 如果 Hytale 的原生浇水系统(例如,雨水或其他内置机制)已经将该土壤标记为外部浇过水,则插件会跳过它以避免冲突。
- 持续时间检查 - 如果农田最近被喷壶浇过水,且持续时间比插件应用的更长,则插件会跳过它。喷壶的手动浇水始终具有优先级。
- 应用浇水 - 土壤的浇水计时器被设置为当前时间加 20 秒(扫描间隔 + 10 秒缓冲)。只要水仍然在附近,这能确保持续湿润。
- 视觉效果更新 - 农田的视觉状态被更新,以显示深色的、湿润的土壤纹理。插件能正确地区分普通湿润土壤和施肥过的湿润土壤,并应用正确的视觉状态("Watered"(已浇水)或 "Fertilized_Watered"(已施肥和浇水))。
◆ 水检测 - 什么算作水
FarmWater 通过读取世界的流体层(而非方块层)来检测水。这意味着它使用 Hytale 的原生流体系统来确定什么是水,什么不是。插件识别:
- 水源方块 - 你从桶中放出的标准静止水方块。这些是为你农场提供的最可靠、最永久的水源。
- 流动水 - 从水源方块向外流出的水。这意味着一个单一水源方块可以通过其流动的水流灌溉更大的区域。建造创造性的水渠系统,让流动水为你工作!
▸ 水放置
水会在相对于农田的两个 Y 高度被检测到:
- 同一高度 (Y) - 水直接放置在农田旁边,位于同一水平面上。
- 下方一格 (Y-1) - 水位于农田表面下方的渠道或沟渠中。这是经典的 Minecraft 灌溉渠设计,水在作物行之间的1格深渠道中流动。
水平检测范围是每个方向4格,在每个农田方块周围形成一个 9x9 的方形检测区域。这与 Minecraft 的灌溉半径完全一致。
◆ 农场布局示例
FarmWater 旨在支持多种农场布局。以下是一些能完美运行的常见设计:
▸ 经典排状农场(Minecraft 风格)
在你的农场中心放置一排水源。在水源两侧种植作物,最远可达4格。水能永久保持范围内所有土壤湿润。
F F F F W F F F F
F F F F W F F F F
F F F F W F F F F
F F F F W F F F F
F = 农田, W = 水
▸ 单水源方块农场
在 9x9 区域中心放置一个单一水源方块。4格范围内所有方向的农田都会保持湿润。这是最节省空间的设计。
F F F F F F F F F
F F F F F F F F F
F F F F F F F F F
F F F F F F F F F
F F F F W F F F F
F F F F F F F F F
F F F F F F F F F
F F F F F F F F F
F F F F F F F F F
F = 农田, W = 水(中心)
▸ 地下渠道农场
将水直接放置在农田下方。农田位于水方块之上。下方的水可以保持土壤湿润,不占用任何地表空间。非常适合最大化你的作物面积!
侧视图:
F F F F F F F F F (表面 - 农田)
W W W W W W W W W (下方 - 水直接在农田下方)
F = 农田, W = 水(下方1格)
▸ 流动水农场
在一端放置一个水源方块,让水流过一个渠道。流动水可以灌溉渠道沿线任何位置4格范围内的所有农田。一个水源方块可以通过其流动水的覆盖范围,有效地灌溉一个巨大的区域。
F F F F F F F F F F F F F
W ~ ~ ~ ~ ~ ~ ~
F F F F F F F F F F F F F
W = 水源, ~ = 流动水, F = 农田
◆ 性能与优化
FarmWater 从底层设计就注重性能。在可能拥有数千个已加载区块的服务器上运行,该插件使用多种优化策略来最小化 CPU 消耗:
- 直接 BlockSection 访问 - 不使用像 world.getBlockType() 这样昂贵的上层 API 调用,插件直接从区块的内部数据结构中读取方块 ID。对于批量扫描操作,这要快几个数量级。
- 整数方块 ID 缓存 - 方块类型标识符在启动时解析一次,并以整数形式缓存。所有后续比较都使用快速的整数查找,而不是慢速的字符串比较。
- FastUtil 集合 - 插件对所有内部数据结构使用高性能的 FastUtil 库(IntOpenHashSet, LongIterator, LongSet)。这些专用集合对于原始类型的处理速度明显快于 Java 的标准集合。
- 多层区块过滤 - 在扫描单个方块之前,插件在区块级和方块区域级进行过滤。不包含农田的区块和方块区域会被完全跳过,避免了数百万次不必要的方块检查。
- 位打包位置存储 - 农田位置存储为打包的 64 位长整型,而不是完整的坐标对象。这使用了 X(26位)、Y(12位)和 Z(26位)打包,支持水平 ±3300 万方块、垂直高达 4096 方块的世界范围,而每个跟踪位置仅使用 8 字节。
- 交错扫描间隔 - 繁重的发现扫描每 30 秒运行一次,而轻量的灌溉检查每 10 秒运行一次。这确保了处理负载随时间均匀分布。
- 线程安全设计 - 所有世界操作通过 world.execute() 在 Hytale 的世界线程上运行。跟踪数据使用 ConcurrentHashMap 以实现安全的跨线程访问。该插件从不阻塞主服务器线程。
- 自动清理 - 不再存在的农田会在灌溉扫描期间自动从跟踪列表中移除。跟踪数据永远不会无限增长。
- 提前终止 - 一旦在范围内找到第一个水方块,水邻近检查就会停止。插件不会浪费时间扫描剩余区域。
◆ 兼容性
- 与喷壶一起使用 - FarmWater 尊重手动浇水。如果玩家用喷壶给土壤浇水,且浇水持续时间更长,插件不会覆盖它。较长的浇水计时器始终具有优先级。
- 与原生 Hytale 系统一起使用 - 如果 Hytale 的内置机制(例如,雨水)将土壤标记为外部浇过水,插件会完全跳过这些方块。没有冲突,没有重复浇水。
- 与施肥土壤一起使用 - 插件能正确检测施肥过的农田并应用适当的视觉状态(Fertilized_Watered 与 Watered)。你的肥料投入是安全的。
- 多世界支持 - 插件自动扫描服务器上的所有世界。无论你有一个世界还是二十个,每个世界都会得到自动灌溉。
- 无需命令 - 没有需要配置的命令,没有需要设置的权限,没有需要编辑的配置文件。安装插件,它就可以工作了。
◆ 功能摘要
- 自动农田浇水 - 4格内的水方块能永久保持耕好的土壤湿润
- 支持水源和流动水 - 一个单一水源可以通过其流动的水流进行灌溉
- Minecraft 风格的4格半径 - 与 Minecraft 完全相同的灌溉半径,用于熟悉的农场设计
- 检测地表和地下的水 - 支持地表水和地下灌溉渠道
- 土壤视觉效果更新 - 浇过水的农田视觉上会变黑,以显示其湿润状态
- 肥料兼容 - 正确处理施肥过的土壤并应用正确的视觉状态
- 基于区块的扫描 - 作用于所有已加载的区块,而不仅仅是玩家附近——即使你离开,你的农场也能保持湿润
- 无需玩家靠近 - 已加载区块中的农场无论玩家在哪里都会被浇水
- 零配置 - 安装后即可忘记。没有配置文件,没有命令,没有权限
- 高度优化 - 直接方块区域访问、整数 ID 缓存、位打包位置、FastUtil 集合
- 非侵入性 - 尊重喷壶持续时间、Hytale 原生浇水系统和肥料状态
- 多世界支持 - 自动适用于服务器上的所有世界
- 自动清理 - 被破坏的农田会自动从跟踪中移除
- 轻量级 - 没有 ECS 系统、没有事件监听器、没有命令——只有高效的后台扫描
◆ 技术细节
供希望了解底层运行机制的服务器管理员和开发者参考:
▸ 扫描时间
- 发现扫描:每 30 秒 - 扫描所有已加载区块以寻找新农田
- 灌溉扫描:每 10 秒 - 检查被跟踪的农田附近是否有水
- 首次发现扫描在服务器启动后 5 秒 开始 - 给世界加载留出时间
- 浇水持续时间:每个周期 20 秒(10秒间隔 + 10秒缓冲)- 确保扫描之间没有间隙
▸ 扫描范围
- 水平灌溉半径:所有方向 4 格(9x9 区域)
- 垂直水检测:同一 Y 高度 和 Y-1(下方一格)
- Y 扫描范围:Y=30 到 Y=200 - 农田发现限于此垂直范围
- 扫描的区块方块区域:方块区域 0-6(覆盖 Y=0 到 Y=224)
▸ 检测的方块和流体类型
- 农田:Soil_Dirt_Tilled(所有交互状态)
- 水源:Water_Source 流体类型
- 流动水:Water 流体类型
▸ 内存使用
- 每个被跟踪的农田位置使用 8 字节(位打包长整型)
- 10,000 个被跟踪的农田方块 ≈ 80 KB 内存
- 100,000 个被跟踪的农田方块 ≈ 800 KB 内存
- 位置存储在以世界名称为键的 ConcurrentHashMap 中
◆ 安装
- 停止你的 Hytale 服务器
- 将 GlymeraIrrigation-1.2.0.jar 复制到服务器目录的 mods/ 文件夹中
- 你的 mods/ 文件夹现在应包含:
mods/
GlymeraIrrigation-1.2.0.jar
- 启动你的服务器
- 检查服务器日志以确认:"[GlymeraIrrigation] 已启动 - 半径: 4, 扫描: 10秒, 发现: 30秒"
- 在你耕好的农田附近放置水,然后看着它自动保持湿润!
就这样! 没有配置文件,没有命令,没有权限。插件安装后立即可用。
◆ 重要说明
- 仅影响耕好的土壤 - 普通泥土、草地或其他方块不受影响。你仍然需要用锄头先耕地,然后插件才能给它浇水。
- 水必须存在 - 该插件不会凭空创造水或产生水分。你需要在农田范围内放置实际的水方块(水源或流动水)。
- 区块必须已加载 - 插件仅扫描和浇灌已加载区块中的农田。如果一个区块被卸载(附近没有玩家且未强制加载),该区块中的农田将不会被浇水,直到区块重新加载。
- 喷壶仍然有效 - 你仍然可以正常使用喷壶。如果喷壶提供的浇水持续时间比插件更长,则喷壶的计时器具有优先级。
- 没有农田踩踏保护 - 此插件不能防止农田被踩踏。它只处理浇水。如果土壤变回泥土,它会自动从跟踪中移除。
◆ 常见问题
▸ 这适用于流动水还是仅适用于水源方块?
两者都适用!插件同时检测水源方块和流动水。一个单一水源可以通过其流动的水流灌溉一个大面积区域。
▸ 如果我移除水会发生什么?
农田将在 20 秒内(下一个灌溉周期)停止被浇水。浇水计时器到期后,土壤会根据 Hytale 的正常耕种机制自然变干。
▸ 这会影响服务器性能吗?
FarmWater 经过高度优化,使用最少的服务器资源。该插件使用直接方块区域访问、整数 ID 缓存、多层区块过滤和位打包位置存储。在典型服务器上,性能影响可以忽略不计。
▸ 我可以更改灌溉半径吗?
半径目前固定为 4 格(与 Minecraft 的灌溉半径一致)。未来更新中可能会添加带有可自定义设置的配置文件。
▸ 这在所有世界中都有效吗?
是的!该插件自动扫描并浇灌服务器上所有世界中的农田。
▸ 这会与其他耕种插件冲突吗?
FarmWater 设计为非侵入性的。它尊重 Hytale 的原生浇水系统和手动喷壶使用。它应该与影响耕种系统的其他插件兼容。
▸ 我的农场没被浇水——哪里出了问题?
请检查以下几点:
- 土壤是否已耕好?该插件只浇灌耕好的土壤(Soil_Dirt_Tilled)。
- 水是否在4格范围内?数一下格子——水距离农田的水平距离不能超过4格。
- 水是否在正确的高度?水必须与农田处于同一 Y 高度,或在其下方一格。
- 区块是否已加载?农田必须位于已加载的区块中。
- 检查服务器日志中的启动信息,确认插件已正确加载。
◆ 版本历史
▸ v1.2.0(当前版本)
- 重大优化:直接 BlockSection 访问替代 world.getBlockType()
- 添加了方块 ID 缓存以实现更快的查找
- 每个周期进行完整的区块扫描(无部分扫描)
- 多层区块和方块区域过滤
- 位打包位置存储以减少内存使用
▸ v1.1.0
- 切换到基于区块的发现(无需玩家接近)
- 现在可以发现并跟踪所有已加载区块中的农田
▸ v1.0.0
- 初始发布
- 基本的农田浇水,水方块4格半径范围内
◆ 支持
有问题或疑问?在此留言或访问我们的 Discord!
由 GlymeraCraft 开发
正在加载版本记录…

正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。