自定义蜂巢方块

基本信息

属性 值
注册方式 CustomHives.registerHives()(custom/CustomHives.scala)→ net.bdew.gendustry.blocks.BeeHive
注册名 gendustry:BeeHive<hiveId>(SimpleBlock("BeeHive" + hiveId, ...))
数量 默认 0 个
硬度 1.0(setHardness(1.0f))
收获等级 "scoop" 0(setHarvestLevel("scoop", 0))
材质 MaterialBeehive = Material(MapColor.stoneColor) + setRequiresTool() + setImmovableMobility()
创造标签 GendustryCreativeTabs.main

[!IMPORTANT] 默认注册数为 0 assets/gendustry/config/files.lst 只列出 5 个内部配置文件:tuning.cfg / recipes.cfg / upgrades.cfg / bees_color.cfg / bees_patreon.cfg。hives.cfg 不在其中,也不在 src/main/resources 里 —— 它只作为示例存在于仓库根目录的 example_configs/hives.cfg。 因此纯净安装下 Gendustry 不注册任何蜂巢方块。玩家必须自行把 hive 定义写进 config/gendustry/ 下的 .cfg 文件(按字母序在内部配置之后加载),方块才会出现。

功能

BeeHive 是一个运行时按配置动态生成的方块类,每个 hive 定义实例化一个,注册名与贴图都由 hiveId 决定。

registerHives() 的注册流程:

  1. 建立合法群系列表(BiomeGenBase.getBiomeGenArray 过滤 null 后按小写 biomeName 索引)
  2. 对每条定义先求值 HDSpawnIf 条件,任一不满足就整条跳过(日志 Condition unmet: ... - not registering)
  3. 未写 HDBiomes 或含 all 时视为所有群系
  4. 未写 HDYRange 时默认 HDYRange(0, 255)
  5. 未写 HDSpawnChance 时默认 1f

数值

数值名 值 来源
硬度 1.0 BeeHive.setHardness(1.0f)
收获等级 scoop 0 setHarvestLevel("scoop", 0)
默认 Y 范围 0–255 HDYRange(0, 255) 默认值
默认生成概率乘数 1.0 HDSpawnChance 默认 1f
光照等级 由定义的 LightLevel 决定 lightValue = lightLevel

没有任何爆炸抗性设置 —— BeeHive 及其父类 SimpleBlock 均未调 setResistance。

掉落逻辑

getDrops 覆盖了方块的完整掉落计算,分三轮独立随机(每次都用新的 Random(world.rand) 种子,同一次挖掘三次判定):

  1. 公主 / 蜂后:先按 rng.shuffle 打乱掉落表,find 第一个 rng.nextInt(100) <= drop.getChance 的项;若一个都没选中,退化为「取概率最高的那一项」—— 保证一定掉一只
  2. 雄蜂:同样机制,但没有兜底(find 无结果就不掉)
  3. 额外掉落:同样机制,无兜底

每种掉落内部还区分 ignoble(可育)标记与物品产出(getPrincess / getDrones / getAdditional 三方法,配合 fortune)。

配置指令

example_configs/hives.cfg 给出两个完整示例(HiveGen Test 与 HiveGen Rock),可用指令:

指令 作用
YLevel <min> - <max> 生成 Y 范围(闭区间)
SpawnIf <条件> 前置条件,不满足则整条不注册
SpawnChance <n> 生成概率乘数
SpawnDebug 把每次生成位置写入日志
Biome <名称...> 群系列表,含空格或特殊字符的名称要加引号;多行会合并
Humidity / Temperature 温湿度等级列表
Above / Under / NextTo / Near / Replace 位置条件(支持 Air / Leaves / 物品字典引用)
Drops { ... } 掉落表,格式 <概率> "<物种UID>" (<ignoble 概率>) + <物品>
TopTexture / BottomTexture / SideTexture 贴图覆盖
Color 0xRRGGBB 贴图颜色乘数
LightLevel <n> 发光等级

贴图未指定时默认取 gendustry:beehives/{id}/{top|side}。

相关条目