Flag Pole
基本信息
| 属性 | 值 |
|---|---|
| 注册名 | 方块 battlegear2:flagpole(7 个 metadata 子类型) |
| 类 | mods.battlegear2.heraldry.BlockFlagPole |
| TileEntity | mods.battlegear2.heraldry.TileEntityFlagPole |
| 方块物品 | mods.battlegear2.heraldry.ItemBlockFlagPole |
| 材质 | Material.wood(BlockFlagPole.java:47) |
| 注册方式 | GameRegistry.registerBlock(banner, ItemBlockFlagPole.class, "flagpole")(BattlegearConfig.java:200) |
| 配置键 | itemNames[10] = "flagpole"(BattlegearConfig.java:60-61) |
| 子类型数 | 7(BlockFlagPole.java:52-56) |
功能
旗杆是本模组唯一注册的方块,用于在世界中展示纹章旗帜。
核心特性:
- TileEntity 存储旗帜:
hasTileEntity恒返回 true,createTileEntity返回TileEntityFlagPole(BlockFlagPole.java:130-138) - 自定义渲染:
getRenderType返回 -1,即没有方块渲染器;视觉完全由FlagPoleTileRenderer绘制(BlockFlagPole.java:116-119、ClientProxy.java:108) - 非实心方块:
isOpaqueCube与renderAsNormalBlock均返回 false(BlockFlagPole.java:121-129) - 破坏返还旗帜:
breakBlock遍历 TileEntity 中的旗帜并逐个生成EntityItem,随后清空(BlockFlagPole.java:150-162) - 物品渲染器:
ItemBlockFlagPole注册FlagPoleItemRenderer(ClientProxy.java:106-107)
碰撞箱
碰撞箱由 TileEntity 的朝向决定(BlockFlagPole.java:74-105):
| 朝向 | 碰撞箱(局部坐标) |
|---|---|
| 0 | (6/16, 0, 6/16) → (10/16, 1, 10/16)(4×16 细柱) |
| 1 | (6/16, 13/16, 0) → (10/16, 1, 1) |
| 2 | (0, 13/16, 6/16) → (1, 1, 10/16) |
贴图复用
方块图标直接借用原版方块,不使用本模组贴图(BlockFlagPole.java:142-146):
| metadata | 图标来源 |
|---|---|
0–3 |
Blocks.log.getIcon(face, meta)(橡木 / 云杉 / 白桦 / 丛林原木) |
4 |
Blocks.iron_block.getIcon(face, 0) |
5–6 |
Blocks.log2.getIcon(face, meta - 5)(雪松 / 金合欢原木) |
getTextDim 用两组偏移量选择模型上的贴图切片:木杆用 0 / 4 / 8 / 12 / 16,铁杆用 1 / 4.5 / 8 / 11.5 / 15(BlockFlagPole.java:29-44, 107-113)。
硬度与爆炸抗性无法核实。 全仓库检索
setHardness/setResistance0 处匹配:grep -rn 'setHardness\|setResistance' --include='*.java' src/ # 无输出
BlockFlagPole构造函数仅调用super(Material.wood),未覆写任何硬度属性(BlockFlagPole.java:46-48),因此沿用net.minecraft.block.Block的字段默认值。该默认值由原版实现,不在本仓库中,故不给出具体数字。
数值
| 数值 | 值 | 来源 |
|---|---|---|
| 子类型数 | 7 | BlockFlagPole.java:52-56 |
| 掉落 metadata | par1 % 7 |
BlockFlagPole.java:58-60 |
| 渲染类型 | -1(无方块渲染器) | BlockFlagPole.java:116-119 |
| 创造标签 | BattlegearConfig.customTab |
BattlegearConfig.java:199 |
| 硬度 / 爆炸抗性 | 无法核实(未调用 setHardness / setResistance) |
见上 |
交互
| 触发 | 行为 |
|---|---|
| 破坏 | TileEntity 中所有旗帜散落为 EntityItem,随后清空(BlockFlagPole.java:150-162) |
| 比较器 | 无法核实 —— 本仓库中未见 onNeighborChanged / 比较器处理覆写 |
合成配方
7 个 metadata 各 1 个 ShapedOreRecipe,每次产出 4 个旗杆(BattlegearConfig.java:523-529):
W
W
W
| metadata | 字符 W |
|---|---|
| 0 | Blocks.log meta 0(橡木原木) |
| 1 | Blocks.log meta 1(云杉原木) |
| 2 | Blocks.log meta 2(白桦原木) |
| 3 | Blocks.log meta 3(丛林原木) |
| 4 | "ingotIron"(物品字典) |
| 5 | Blocks.log2 meta 0(雪杉原木) |
| 6 | Blocks.log2 meta 1(金合欢原木) |
材料选取逻辑:i < 4 ? log(i) : (i == 4 ? ingotIron : log2(i - 5))(BattlegearConfig.java:525-526)。可由 Disabled Recipies 中的 flagpole 关闭。
相关条目
- Heraldic Crest - 绘制并保存纹章的编辑器入口
- 渲染配置 -
flagpole渲染器可被单独关闭 - 禁用内容配置 -
flagpole方块与配方可分别关闭