目标方块 / 风扇 / 洒水器 / 捕兽夹 / 捐赠站 / 旗帜 / 储罐 / 物品炮 / 村庄高亮灯 / 金蛋 / 幻想方块 / 天空方块 / 墓碑 / 奖杯方块
基本信息
这十四个方块各属独立子系统,行为差异极大,没有可共享的实现,因此合并为一页做索引对照。每项都给出源码位置。
| 注册名 | 类 | TileEntity | 材质 | 关键构造参数 | 声明位置 |
|---|---|---|---|---|---|
OpenBlocks:target |
BlockTarget |
TileEntityTarget |
rock |
发光 0.3、FOUR_DIRECTIONS、TESR_ONLY |
OpenBlocks.java:279 |
OpenBlocks:fan |
BlockFan |
TileEntityFan |
circuits |
边界 0.2~0.8、TESR_ONLY |
OpenBlocks.java:323 |
OpenBlocks:sprinkler |
BlockSprinkler |
TileEntitySprinkler |
Material.water |
TWO_DIRECTIONS、TESR_ONLY |
OpenBlocks.java:301 |
OpenBlocks:beartrap |
BlockBearTrap |
TileEntityBearTrap |
rock |
TWO_DIRECTIONS、TESR_ONLY、边界 0.1~0.9 / 高 0.4 |
OpenBlocks.java:298 |
OpenBlocks:donationStation |
BlockDonationStation |
TileEntityDonationStation |
rock |
FOUR_DIRECTIONS、TESR_ONLY、边界 0.2~0.8 / 0.25~0.85 |
OpenBlocks.java:359 |
OpenBlocks:flag |
BlockFlag |
TileEntityFlag |
circuits |
SIX_DIRECTIONS、SURFACE 放置、TESR_ONLY、textureName = NONE |
OpenBlocks.java:286-290 |
OpenBlocks:tank |
BlockTank |
TileEntityTank |
rock |
RenderMode.BOTH |
OpenBlocks.java:292 |
OpenBlocks:cannon |
BlockCannon |
TileEntityCannon |
rock |
边界 0.3~0.6 / 高 0.7、TESR_ONLY |
OpenBlocks.java:304 |
OpenBlocks:village_highlighter |
BlockVillageHighlighter |
TileEntityVillageHighlighter |
— | — | OpenBlocks.java:329 |
OpenBlocks:goldenegg |
BlockGoldenEgg |
TileEntityGoldenEgg |
— | textureName = "egg" |
OpenBlocks.java:398 |
OpenBlocks:imaginary |
BlockImaginary |
TileEntityImaginary |
— | textureName = "pencilBlock" |
OpenBlocks.java:317-321 |
OpenBlocks:sky |
BlockSky |
TileEntitySky |
— | textureName = "sky_inactive"、unlocalizedName = "sky.normal" |
OpenBlocks.java:388-393 |
OpenBlocks:grave |
BlockGrave |
TileEntityGrave |
— | — | OpenBlocks.java:282 |
OpenBlocks:trophy |
BlockTrophy |
TileEntityTrophy |
— | itemBlock = ItemTrophyBlock |
OpenBlocks.java:295 |
功能
目标方块(TileEntityTarget)
记录被投掷物命中的力度 strength(TileEntityTarget.java:41、:113-118),重置为 0 见 :82。方向决定器 setBlockBoundsBasedOnState(BlockTarget.java:113-132)在水平时把边界压成 0.1 高的平板(:124),否则旋转。
风扇(TileEntityFan)
按红石强度把范围内实体吹走。
- 锥半张角
CONE_HALF_APERTURE = 1.2 / 2.0(TileEntityFan.java:23) - 每刻最大力
maxForce = Config.fanForce * redstonePower(:44) - 实体受力随距离线性衰减:
(1.0 - distToOrigin / Config.fanRange) * maxForce(:67) - 只改水平分量
motionX/motionZ(:70-71)——不吹垂直方向 - 选区范围是自身 AABB 按
Config.fanRange三向各扩一次(:93) - 红石:
Config.redstoneActivatedFan为真时读getStrongestIndirectPower,否则恒用 15(:127)——即该配置关闭时风扇永不被红石关闭
洒水器(TileEntitySprinkler)
同时可装水与经验液两种液体(SyncableTank(Config.sprinklerInternalTank, FluidRegistry.WATER, OpenBlocks.Fluids.xpjuice),TileEntitySprinkler.java:79),随机撒骨粉与水。
- 骨粉物品常量
new ItemStack(Items.dye, 1, 15)(:44) - 有效范围
Config.sprinklerEffectiveRange,在正负范围内随机取点(:95-96、:82-84) - 施肥概率有骨粉时用
Config.sprinklerBonemealFertizizeChance,否则Config.sprinklerFertilizeChance(:88-89) - 散布角
SPRAY_SIDE_SCATTER = 25°(:124) - 骨粉与水各有独立消耗速率
Config.sprinklerBonemealConsumeRate/Config.sprinklerWaterConsumeRate(:184、:188)
储罐(TileEntityTank)
可存任意液体的通用储罐,容量按桶数缩放。
- 容量
FluidContainerRegistry.BUCKET_VOLUME * Config.bucketsPerTank(TileEntityTank.java:146) - 同步阈值
SYNC_THRESHOLD = 8、更新阈值UPDATE_THRESHOLD = 20(:104-105) - 渲染走
TankRenderLogic+NeighbourMap(:133、:160),会绘制相邻储罐之间的连通液体 Config.tanksEmitLight为真时储罐自身发光(BlockTank.java:64)Config.displayAllFilledTanks为真时即使装满也在创造模式物品栏显示(BlockTank.java:106)
物品炮(TileEntityCannon)
发射 EntityItemProjectile。弹道计算在 TileEntityCannonLogic,GUI 旋钮参数(TileEntityCannon.java:31-39):
| 常量 | 值 | 含义 |
|---|---|---|
YAW_OFFSET_DEGREES |
-90 | 偏航零点偏移 |
KNOB_YAW_CHANGE_SPEED |
3 | 偏航调速 |
KNOB_PITCH_CHANGE_SPEED |
20 | 俯仰调速 |
KNOB_VEL_CHANGE_SPEED |
20 | 初速调速 |
KNOB_LOB_MINIMUM_VALUE |
20 | 抛射系数下限 |
KNOB_LOB_MAXIMUM_VALUE |
75 | 抛射系数上限 |
KNOB_LOB_VERTICAL_MUL |
4 | 垂直分量倍率 |
KNOB_LOB_HORIZONTAL_MUL |
1 | 水平分量倍率 |
KNOB_LOB_BONUS |
5 | 抛射加成 |
弹道积分器用固定步长 20 Hz(PHYS_STEPS_PER_SECOND = 20D,:286),重力取原版方块重力 PHYS_WORLD_GRAVITY = 0.8D(:296)——注意这是方块更新用的重力,不是实体重力 0.04。源码里有一条自嘲常量 HOURS_WASTED_ON_CANNON_LOGIC = 14(:281)。
奖杯方块
25 种生物奖杯,每种有独立的 ITrophyBehavior 实现。详见奖杯系统。
墓碑(BlockGrave)
玩家死亡时生成的容器方块,行为受游戏规则 openblocks:spawn_graves 控制。详见游戏规则与指令。
天空方块(BlockSky)
textureName = "sky_inactive",激活时切换贴图;由 TileEntitySky 与 ItemSkyBlock 驱动。
村庄高亮灯
生成村庄的辅助设备,方块有 TileEntityVillageHighlighter。
金蛋(BlockGoldenEgg)
由 TileEntityGoldenEgg 驱动。孵化时会生成 EntityMiniMe 克隆体:new EntityMiniMe(worldObj, Objects.firstNonNull(owner, MR_GLITCH))(TileEntityGoldenEgg.java:237),即无主时归属回退到常量 MR_GLITCH。Config.eggCanPickBlocks(默认 true,Config.java:570)控制孵化期间能否放置方块——配置注释自陈「可能导致 glitch」。
幻想方块(BlockImaginary)
textureName = "pencilBlock",与 ItemImaginary 配对。
旗帜(BlockFlag)
SIX_DIRECTIONS + SURFACE 放置,textureName = NONE(贴图全部由 TESR 提供)。
捐赠站(BlockDonationStation)+ 捕兽夹(BlockBearTrap)
TWO_DIRECTIONS 贴地设备。捐赠站打开网页,DonationUrlManager 管理链接。捕兽夹是陷阱方块。
数值
| 数值名 | 来源 | 值 |
|---|---|---|
| 风扇锥半张角 | CONE_HALF_APERTURE |
0.6(TileEntityFan.java:23) |
| 风扇力 | Config.fanForce × 红石强度 |
见配置页(TileEntityFan.java:44) |
| 风扇范围 | Config.fanRange |
见配置页(TileEntityFan.java:67) |
| 目标方块发光 | 硬编码 | 0.3(BlockTarget.java:24) |
| 储罐容量 | BUCKET_VOLUME * Config.bucketsPerTank |
见配置页(TileEntityTank.java:146) |
| 储罐同步阈值 | SYNC_THRESHOLD |
8(TileEntityTank.java:104) |
| 储罐更新阈值 | UPDATE_THRESHOLD |
20(TileEntityTank.java:105) |
| 洒水器散布角 | SPRAY_SIDE_SCATTER |
25°(TileEntitySprinkler.java:124) |
| 洒水器罐容量 | Config.sprinklerInternalTank |
见配置页(TileEntitySprinkler.java:79) |
| 物品炮积分步长 | PHYS_STEPS_PER_SECOND |
20 Hz(TileEntityCannon.java:286) |
| 物品炮重力 | PHYS_WORLD_GRAVITY |
0.8(TileEntityCannon.java:296) |
交互
| 触发 | 行为 |
|---|---|
| 风扇红石信号 | 按信号强度线性施力(TileEntityFan.java:44、:127) |
redstoneActivatedFan 关闭 |
风扇恒为满功率,不响应红石(TileEntityFan.java:127) |
| 洒水器工作 | 随机施肥 + 洒水,各自独立消耗速率 |
| 储罐液位变化超过 8 | 触发同步(TileEntityTank.java:104) |
| 金蛋孵化 | 生成 EntityMiniMe(TileEntityGoldenEgg.java:237) |
| 玩家死亡 | 墓碑是否生成由游戏规则决定(GameRuleManager.GameRule.SPAWN_GRAVES) |
合成配方
目标方块(Config.java:688-702):
oeo
oHo
ooo
| 字符 | 物品 |
|---|---|
o |
Blocks.obsidian 黑曜石 |
H |
Blocks.heavy_weighted_pressure_plate 重质压力板 |
e |
Items.ender_eye 末影之眼 |
风扇(Config.java:814-823):
iii
iLi
iii
| 字符 | 物品 |
|---|---|
i |
ingotIron 铁锭 |
L |
Blocks.lever 拉杆 |
洒水器(Config.java:742-757):
dgd
dWd
dwd
| 字符 | 物品 |
|---|---|
d |
gemDiamond 钻石 |
g |
dustGlowstone 荧石粉 |
w |
Blocks.wool 羊毛 |
W |
Blocks.water_bucket 水桶 |
捕兽夹(Config.java:729-740):
dgd
dWd
dwd
| 字符 | 物品 |
|---|---|
d |
gemDiamond 钻石 |
g |
dustGlowstone 荧石粉 |
w |
Blocks.wool 羊毛 |
W |
Blocks.water_bucket 水桶 |
捐赠站(Config.java:967-978):
gWg
wgw
dwd
| 字符 | 物品 |
|---|---|
g |
blockGold 金块 |
W |
Blocks.water_bucket 水桶 |
w |
Blocks.wool 羊毛 |
d |
gemDiamond 钻石 |
储罐(Config.java:714-726):
iii
i i
iii
| 字符 | 物品 |
|---|---|
i |
ingotIron 铁锭 |
物品炮(Config.java:757-772):
i i
idi
iii
| 字符 | 物品 |
|---|---|
i |
ingotIron 铁锭 |
d |
gemDiamond 钻石 |
村庄高亮灯(Config.java:842-847):
g
gHg
g
| 字符 | 物品 |
|---|---|
g |
blockGlass 玻璃 |
H |
Blocks.heavy_weighted_pressure_plate 重质压力板 |
天空方块(Config.java:1057-1072,共 2 个配方):
gog
oGo
gog
| 字符 | 物品 |
|---|---|
g |
blockGlass 玻璃 |
o |
Blocks.obsidian 黑曜石 |
G |
Blocks.glowstone 荧石 |
金蛋(Config.java:1041-1055):
ggg
geg
ggg
| 字符 | 物品 |
|---|---|
g |
blockGold 金块 |
e |
Items.ender_eye 末影之眼 |
旗帜、墓碑、奖杯方块、幻想方块没有独立合成配方——奖杯方块由 Config.java:702-704 的物品事件发放,幻想方块通过 ItemImaginary 获得。
相关条目
- 奖杯系统 - 25 种奖杯的行为表
- 游戏规则与指令 - 墓碑生成规则
- 实体 / 克隆体与投射物 -
EntityMiniMe与EntityItemProjectile - 配置项全表 -
fan/sprinkler/tank/egg分类