GlymeraCropSpread

GlymeraCropSpread

成熟的作物会自动扩散到相邻的空农田方块上。

食物\农业

🌾 GlymeraCropSpread v1.1.0 🌾

成熟作物会自动扩散到邻近的空耕地方块。无需玩家干预,农场自然扩张!

大多数当前版本仅适用于 Hytale 稳定版 5!别错过我的其他精彩项目——查看 GlymeraCraft 的个人资料 Discord:https://discord.gg/s5NRFWfxgy


◆ 什么是 GlymeraCropSpread?

GlymeraCropSpread 是一个用于 Hytale 服务器的农场自动化插件。当作物达到完全成熟(最终阶段)时,它有机会扩散到邻近的空耕地方块——就像自然中草地的蔓延一样。新放置的作物会以幼苗形式开始生长,并通过 Hytale 内置的 FarmingBlock 系统自然成长。没有自定义的生长追踪,没有刻操作——只有自然的农场扩张。

种植几颗种子,等待,然后看着你的农场自行生长。

◆ 工作原理

该插件会以可配置的间隔(默认:每 60 秒)运行一个扫描周期。在每个周期中:

  1. 扫描所有已加载区块中成熟的作物(最终阶段)
  2. 对于每个发现的成熟作物,进行一次随机判定(默认:25%)
  3. 如果判定成功,插件会检查其 4 个相邻方块(北、南、东、西)
  4. 一个有效的扩散目标必须在其上方为空空气,下方为犁过的耕地
  5. 选择一个有效的随机目标,并放置一个相同类型的新幼苗作物
  6. Hytale 原生的 FarmingBlock 系统会接管并自然地培育新植物

▸ 扩散规则

  • 只有成熟作物才会扩散 - 生长中的作物(阶段1、阶段2等)不会扩散。只有完全生长的最终阶段植物才会触发扩散。
  • 需要耕地 - 源作物和目标位置下方都必须有犁过的耕地(Soil_Dirt_Tilled)。已浇水或已施肥的耕地变体也会被识别。
  • 需要空空间 - 目标方块必须为空(空气)。作物不会覆盖现有方块。
  • 仅限基本方向 - 作物会向北、南、东或西扩散。没有对角线扩散。
  • 跨区块扩散 - 在区块边界处的作物可以扩散到相邻的已加载区块。
  • 随机目标选择 - 如果有多个相邻方块有效,会随机选择一个。
  • 每周期最大扩散次数 - 可配置的上限可防止大型农场出现性能问题(默认:每周期 50 次)。

◆ 支持的作物(16 种)

所有 16 种作物类型默认启用。每种作物都可以在配置中单独启用或禁用。

  • 小麦
  • 玉米
  • 胡萝卜
  • 土豆
  • 番茄
  • 洋葱
  • 莴苣
  • 花椰菜
  • 茄子
  • 辣椒
  • 芜菁
  • 南瓜
  • 水稻
  • 棉花
  • 浆果
  • 苹果

◆ 配置

首次启动时,配置文件会自动创建在:mods/GlymeraCropSpread/config.json

停止服务器,使用任意文本编辑器编辑该文件,然后重启服务器以应用更改。默认配置如下:

{
  "spreadIntervalSeconds": 60,
  "spreadChancePercent": 25,
  "maxSpreadsPerCycle": 50,
  "crops": {
    "Plant_Crop_Wheat_Block": true,
    "Plant_Crop_Corn_Block": true,
    "Plant_Crop_Carrot_Block": true,
    "Plant_Crop_Potato_Block": true,
    "Plant_Crop_Tomato_Block": true,
    "Plant_Crop_Onion_Block": true,
    "Plant_Crop_Lettuce_Block": true,
    "Plant_Crop_Cauliflower_Block": true,
    "Plant_Crop_Aubergine_Block": true,
    "Plant_Crop_Chilli_Block": true,
    "Plant_Crop_Turnip_Block": true,
    "Plant_Crop_Pumpkin_Block": true,
    "Plant_Crop_Rice_Block": true,
    "Plant_Crop_Cotton_Block": true,
    "Plant_Crop_Berry_Block": true,
    "Plant_Crop_Apple_Block": true
  }
}

▸ spreadIntervalSeconds

插件扫描成熟作物并尝试扩散的频率。值越低,扩散越快,但服务器负载会略微增加。默认值:60 | 最小值:5

▸ spreadChancePercent

在每个扫描周期中,每个成熟作物尝试扩散的百分比几率。在 25% 时,大约每 4 个成熟作物中就有 1 个会在每个周期尝试扩散。默认值:25 | 范围:1-100

▸ maxSpreadsPerCycle

单个扫描周期中最多可以放置的新作物数量。这可以防止在拥有非常大农场的服务器上出现性能问题。默认值:50 | 最小值:1

▸ crops

按作物开关。将任何作物设置为 false 以阻止其扩散。如果你只想让某些作物自动扩展,这会很有用。示例 - 禁用小麦和玉米扩散:

"crops": {
    "Plant_Crop_Wheat_Block": false,
    "Plant_Crop_Corn_Block": false,
    ...
}

◆ 性能

GlymeraCropSpread 旨在将对服务器的影响降至最低:

  • 区块级过滤 - 在开始任何方块级扫描之前,会完全跳过没有成熟作物的区块
  • 区域级过滤 - 在区块内,没有成熟作物的区域(32x32x32)也会被跳过
  • FastUtil 集合 - 使用高性能整数哈希集进行方块 ID 查找,而非标准 Java 集合
  • 扩散上限 - maxSpreadsPerCycle 设置确保扫描周期在达到上限后提前终止
  • 限制 Y 轴范围 - 仅扫描 Y=30 至 Y=200 之间的区域,跳过地下和天空区域
  • 无刻操作 - 不修改 Hytale 的内部刻速率或农场系统。放置后的生长完全是原生的。

◆ 安装

  1. 停止你的 Hytale 服务器
  2. GlymeraCropSpread-1.1.0.jar 复制到你服务器的 mods/ 文件夹中
  3. 启动服务器
  4. 配置文件将自动创建在 mods/GlymeraCropSpread/config.json
  5. 查看服务器日志以获取信息:"[GlymeraCropSpread] Started v1.1.0 - Interval: 60s, Chance: 25%, Max/Cycle: 50"
server/
└── mods/
    └── GlymeraCropSpread-1.1.0.jar

无需资源包。无需依赖。仅一个 JAR 文件。

◆ 服务器日志输出

日志消息示例:

[GlymeraCropSpread] Config loaded
[GlymeraCropSpread] Farmland 'Soil_Dirt_Tilled' -> ID 3421
[GlymeraCropSpread] Crop 'Plant_Crop_Wheat_Block' -> StageFinal ID 5102
[GlymeraCropSpread] Crop 'Plant_Crop_Corn_Block' -> StageFinal ID 5118
[GlymeraCropSpread] Resolved 16 crop types, 4 farmland IDs
[GlymeraCropSpread] Started v1.1.0 - Interval: 60s, Chance: 25%, Max/Cycle: 50, Crops: 16, Farmland IDs: 4
[GlymeraCropSpread] Spread 12 new plants
[GlymeraCropSpread] Spread 8 new plants
[GlymeraCropSpread] Stopped.

◆ 技术细节

  • 未注册 ECS 系统 - 该插件使用一个独立于 Hytale 实体系统的计划执行器任务
  • 通过 BlockAccessor.setBlock() 使用基础作物方块名称进行方块放置 - Hytale 的 FarmingBlock 系统原生处理所有生长阶段
  • 成熟作物通过其最终阶段交互状态方块 ID(例如 *Plant_Crop_Wheat_Block_State_Definitions_StageFinal)检测
  • 耕地检测包括所有犁过的土壤变体:基础、已浇水、已施肥、已施肥+已浇水
  • 方块操作通过 world.execute() 推迟到世界线程执行,以避免并发问题
  • 所有方块 ID 查找均使用 FastUtil IntOpenHashSet 和 Int2ObjectOpenHashMap 以实现 O(1) 性能
  • 扫描范围限制在 Y=30-200,并进行区域级预过滤(区域高 32 个方块)

◆ 总结

  • 支持 16 种作物类型,均可单独切换
  • 自动扩散 - 成熟作物扩散到邻近的空耕地
  • 原生生长 - 新植物通过 Hytale 内置的 FarmingBlock 系统生长
  • 可配置 - 间隔、几率、最大扩散次数、按作物开关
  • 性能优化 - 区块和区域预过滤、FastUtil 集合、扩散上限
  • 支持跨区块 - 区块边界处的作物可扩散到相邻区块
  • 零依赖 - 一个 JAR,无需资源包,无需外部库
  • 可识别耕地 - 识别基础、已浇水、已施肥和已施肥+已浇水耕地

◆ 更新日志

▸ v1.1.0

  • 添加了区域级预过滤以提高扫描性能
  • 添加了耕地变体检测(已浇水、已施肥)
  • 配置验证并强制执行最小值

▸ v1.0.0 - 初始发布

  • 自动作物扩散,具有可配置的间隔、几率和上限
  • 16 种作物类型,支持按作物开关
  • JSON 配置,自动生成

◆ 支持

遇到问题或有疑问?在此处留言或访问我们的 Discord!


由 GlymeraCraft 开发