房间段(Segment)

基本信息

属性 值
枚举 greymerk.roguelike.dungeon.segment.Segment(dungeon/segment/Segment.java:38)
常量数 34
工厂方法 Segment.getSegment(Segment)(dungeon/segment/Segment.java:75)
实现类数 34 个(dungeon/segment/part/ 共 35 个 .java,减去抽象基类 SegmentBase)
抽象基类 SegmentBase implements ISegment(dungeon/segment/part/SegmentBase.java:12)
一致性 34 个常量 ↔ 34 个 import ↔ 34 个 case ↔ 34 条 new Segment*

功能

段(Segment)填充地牢房间之间的空白,用来在两层楼板之间造拱门、开壁龛、铺书架、点火把等。它与房间的关键区别是:段一定会读取当前主题(level.getSettings().getTheme()),因此外观随地牢主题变化;房间也读主题,但段用得更密集。

Segment.getSegment 的真实调用点共 8 处,全部集中在两个生成器里:

  • dungeon/segment/SegmentGenerator.java:82,84,89,91
  • dungeon/segment/SegmentGeneratorBase.java:62,64,69,71

两个生成器都遵循同一模式:若当前位置在已建墙体的正下方则放对应的拱门变体(arch),否则从当前段的池中随机取:

if (...) return Segment.getSegment(arch);
return Segment.getSegment(this.segments.get(rand));

段表

行数为各实现类 .java 的总行数。

常量 实现类 行数 备注
ARCH SegmentArch 46 通用石拱
FIREARCH SegmentFireArch 61 壁炉拱
FIREPLACE SegmentFirePlace 85 完整壁炉
SHELF SegmentShelf 52 书架
INSET SegmentInset 64 墙面内凹
MOSSYARCH SegmentMossyArch 77 苔石拱
MUSHROOM SegmentMushrooms 63 蘑菇丛
NETHERARCH SegmentNetherArch 60 下界砖拱
NETHERSTRIPE SegmentNetherStripes 71 下界条纹
NETHERWART SegmentNetherWart 65 下界疣
NETHERLAVA SegmentNetherLava 74 下界岩浆
JUNGLE SegmentJungle 60 丛林植被
BOOKS SegmentBooks 58 成堆书籍
SPAWNER SegmentSpawner 71 刷怪笼
WHEAT SegmentWheat 78 麦田
TOMB SegmentTomb 102 墓室构件
CHEST SegmentChest 81 战利品箱
SILVERFISH SegmentSilverfish 72 蠹鱼窝
SKULL SegmentSkull 79 头颅墙
FLOWERS SegmentFlowers 65 花丛
DOOR SegmentDoor 62 门
ANKH SegmentAnkh 73 安卡十字饰
CAVE SegmentCave 51 天然洞口
SEWER SegmentSewer 49 下水道壁面
SEWERARCH SegmentSewerArch 77 下水道拱
SEWERDOOR SegmentSewerDoor 94 下水道门
SEWERDRAIN SegmentSewerDrain 77 下水道排水口
MINESHAFT SegmentMineShaft 59 矿井支护
LAMP SegmentLamp 122 灯(最长实现)
ARROW SegmentTrap 108 陷阱发射器
SQUAREARCH SegmentSquareArch 48 方柱拱
CELL SegmentPrisonCell 69 牢房
WALL SegmentWall 65 墙
PLANT SegmentPlant 73 植物

⚠️ 常量名与实现类名并非逐一对应:ARROW → SegmentTrap、CELL → SegmentPrisonCell、MUSHROOM → SegmentMushrooms(复数)、NETHERSTRIPE → SegmentNetherStripes(复数)。按常量名去猜文件名会漏掉这 4 个。

数值

数值名 值 来源
段常量数 34 dungeon/segment/Segment.java:39-72
实现类行数区间 46(SegmentArch)– 122(SegmentLamp) 上表
壁龛(Alcove)实现数 2 dungeon/segment/alcove/:PrisonCell.java、SilverfishNest.java
getSegment 调用点数 8 4 个在 SegmentGenerator.java,4 个在 SegmentGeneratorBase.java

陷阱段与喷溅药水

SegmentTrap(常量 ARROW)会发射用本 mod 自带药水系统生成的喷溅药水:

  • dungeon/segment/part/SegmentTrap.java:101 —— Potion.getSpecific(rand, PotionType.SPLASH, Potion.POISON, false, false)
  • dungeon/segment/part/SegmentTrap.java:103 —— Potion.getSpecific(rand, PotionType.SPLASH, Potion.HARM, false, false)

此处 Potion 是 mod 自己的枚举 greymerk.roguelike.treasure.loot.Potion(由 SegmentTrap.java:10 显式 import),不是 net.minecraft.potion.Potion。其药水 ID 映射存在问题,详见 药水与药剂。

相关条目