灌木(BushBlock)
25 种灌木方块,全部由同一个
BushBlock类注册,属性完全一致,差异仅在贴图与语言名。 注册入口:ViriBlocks.registerBush(String)。
基本信息
| 属性 | 值 | 来源 |
|---|---|---|
| Java 类 | net.junedev.viridium.blocks.BushBlock |
blocks/BushBlock.java |
| 注册名 | viridium:<name>(25 个,见下表) |
GameRegistry.registerBlock(bush, name) |
| 材质 | Material.leaves |
构造函数 super(Material.leaves) |
| 硬度 | 0.4F |
setHardness(0.4F) |
| 透光性 | setLightOpacity(1) |
构造函数 |
| 脚步声 | soundTypeGrass |
setStepSound |
| 爆炸抗性 | mod 代码未调用 setResistance() |
— |
| 光照等级 | mod 代码未调用 setLightLevel(),即 0 |
— |
| 最大堆叠 | mod 代码未调用 setMaxStackSize(),即默认 64 |
— |
| 渲染类型 | ViriRenderIds.bushBlockRenderId(运行时由 RenderingRegistry.getNextAvailableRenderId() 分配) |
getRenderType() |
| 创造栏 | Viridium.VTab |
setCreativeTab |
| 贴图 | viridium:bushes/<name>、..._branches、..._leaves、..._leaves_fast |
setBlockName() + registerBlockIcons() |
| TileEntity | 无 | — |
方块列表(25 个)
| 注册名 | 游戏内名称 |
|---|---|
viridium:ainselu |
Ainselu |
viridium:bears_breeches |
Bears Breeches |
viridium:blackberry |
Blackberry |
viridium:creosote_bush |
Creosote Bush |
viridium:croton |
Croton |
viridium:elderberry |
Elderberry Bush |
viridium:false_indigo |
False Indigo |
viridium:golden_wattle |
Golden Wattle |
viridium:honeysuckle |
Honeysuckle |
viridium:japanese_andromeda |
Japanese Andromeda |
viridium:koki_o_ono |
Koki O Ono |
viridium:kudzu |
Kudzu |
viridium:kutjera |
Kutjera |
viridium:ma_o_hau_hele |
Ma’o Hau Hele |
viridium:oldman_saltbush |
Oldman Saltbush |
viridium:poinsettia |
Poinsettia |
viridium:quandong |
Quandong Bush |
viridium:raspberry |
Raspberry Bush |
viridium:rhododendron |
Rhododendron |
viridium:rose_shrub |
Rose Shrub |
viridium:sandhill_wattle |
Sandhill Wattle |
viridium:satsuki_azalea |
Satsuki Azalea |
viridium:silverleaf_hydrangea |
Silverleaf Hydrangea |
viridium:staghorn_sumac |
Staghorn Sumac |
viridium:wedding_bush |
Wedding Bush |
碰撞与移动
灌木没有标准碰撞箱:getCollisionBoundingBoxFromPool() 直接返回 null。
addCollisionBoxesToList 只在实体位于灌木顶面之上并向下运动时补一个平台碰撞盒:
平台高度 PLATFORM_HEIGHT = 0.75
碰撞盒 = (x, y, z) → (x+1.0, y+0.75, z+1.0)
生效条件 = collider.boundingBox.minY >= platform.maxY - 0.01 && collider.motionY <= 0.0
因此玩家可以从下方穿进灌木,但站上去时会被 0.75 格高的平台托住,不会掉进方块内部。
| 物理参数 | 值 | 说明 |
|---|---|---|
movementAttenuation |
0.4D |
在灌木中移动时 motionX/motionZ 乘以 0.4;motionY < 0 时 motionY 也乘以 0.4 |
fallAttenuation |
0.35F |
onFallenUpon 把 entity.fallDistance 乘以 0.35,落地伤害大幅降低 |
getAmbientOcclusionLightValue() |
0.2F |
环境光遮蔽,渲染上灌木显得凹陷 |
两个衰减系数都有 setter(setMovementAttenuation / setFallAttenuation),但 mod 自身从不调用,全部 25 种灌木使用同一组默认值。
渲染
isOpaqueCube()委托给Blocks.leaves.isOpaqueCube()renderAsNormalBlock()返回false- 物品图标固定取
_branches图标(getIcon()无条件返回getBranchIcon()),_leaves/_leaves_fast只在方块渲染时使用 - 环境光遮蔽值 0.2F
掉落
mod 没有覆写 getDrops / onBlockHarvested / breakBlock(全仓库零命中),
因此灌木破坏后按原版方块规则掉落自身,一个灌木 = 一个物品。
配方
本 mod 不注册任何合成配方(见分类页「本 mod 没有 X」章节)。