网格编辑器

基本信息

属性 值
界面类 journeymap.client.ui.dialog.GridEditor(GridEditor.java:35),继承 JmUI
打开方式 UIManager.openGridEditor(JmUI)(UIManager.java:264)
规格模型 journeymap.client.model.GridSpec / GridSpecs
网格渲染器 journeymap.client.render.map.GridRenderer(GridRenderer.java:42)
网格样式数 3(Squares / Dots / Checkers)
默认规格组 3(DEFAULT_DAY / DEFAULT_NIGHT / DEFAULT_UNDERGROUND)
界面按钮数 约 9

功能

网格是在地图上叠加的坐标参考线。GridEditor 让你为白天、夜间、地下三种地图类型分别设定网格的样式与颜色——因为夜间需要更亮、地下需要更暗的网格才看得清。

3 种样式

GridSpec.Style 枚举(GridSpec.java:117-121)每项绑定一个语言键与一张贴图:

样式 语言键 贴图名
Squares jm.common.grid_style_squares TextureCache.Name.GridSquares
Dots jm.common.grid_style_dots TextureCache.Name.GridDots
Checkers jm.common.grid_style_checkers TextureCache.Name.GridCheckers

displayName()(:131-134)用 Constants.getString(key) 取本地化名称。

3 个默认规格

GridSpecs(GridSpecs.java:11)为三种地图类型各定义一个默认网格,参数为 (style, red, green, blue, alpha):

常量 样式 RGB alpha 源码
DEFAULT_DAY Squares (.5, .5, .5) 灰 .5 :13
DEFAULT_NIGHT Squares (.5, .5, 1f) 偏蓝 .3 :14
DEFAULT_UNDERGROUND Squares (.5, .5, .5) 灰 .3 :15

夜间规格把蓝色分量提到 1f 而 alpha 降到 .3——夜间网格偏蓝且更淡,与地图的夜间色调一致。

GridSpec 的数据与渲染

GridSpec(GridSpec.java:21)是不可变值对象,4 个 final 分量字段(red / green / blue / alpha,:25-28)加一个 final Style style(:24)。两个构造器:接受 Color 对象(:33)或直接接受 4 个 float(:52)。

渲染相关的实例方法:

方法 作用 源码
beginTexture(int textureWrap, float mapAlpha) 开始生成网格贴图 :72
finishTexture() 完成并缓存 :96
getTexture() 取 TextureImpl :86
clone() 深拷贝 :91
getColor() / getColorX() / getColorY() 基础色 / X 轴色 / Y 轴色 :102、:107、:112
setColorCoords(int x, int y) 设定 X/Y 轴的强调色 :62

即网格可以给 X 与 Y 轴分别着色(坐标轴线通常要更醒目)。

GridSpecs 的按类型存取

GridSpecs 持有三种规格并按 MapType 索引:

方法 作用 源码
getSpec(MapType) 取对应类型的规格 :33
setSpec(MapType, GridSpec) 设置 :48
clone() 深拷贝 :74
updateFrom(GridSpecs other) 从另一组覆盖 :79

它作为 CoreProperties.gridSpecs(非 @Config 字段,CoreProperties.java:143)持久化在 journeymap.core.config 中。

GridRenderer

GridRenderer(GridRenderer.java:42)负责实际绘制网格,关键方法:

方法 作用 源码
setViewPort(Rectangle2D.Double) 设置视口 :114
move(deltaBlockX, deltaBlockZ) 移动视图 :141
center() / center(MapType, blockX, blockZ, zoom) 居中到指定坐标 :146、:189
updateTiles(mapType, zoom, highQuality, width, height, fullUpdate, xOffset, yOffset) 更新切片 :233
hasUnloadedTile() / hasUnloadedTile(boolean preview) 是否还有未加载切片 :151、:172
getBlockUnderMouse(mouseX, mouseY, screenWidth, screenHeight) 鼠标所指方块 :325
getCenterPixelOffset() 中心像素偏移 :320
setEnabled(boolean) 静态开关 :105

GridRenderer 还带一套静态调试消息接口:addDebugMessage(key, message)(:85)、removeDebugMessage(key, message)(:90)、clearDebugMessages()(95)。

数值

数值名 值
网格样式数 3
默认规格数 3(Day / Night / Underground)
GridSpec 的 final 字段数 5(style + RGBA)
GridSpec 构造器数 2
默认网格 alpha(Day / Night / Underground) 0.5 / 0.3 / 0.3
夜间默认网格蓝色分量 1.0f(其余为 0.5f)
GridRenderer 静态开关 setEnabled(boolean)
轴向独立着色 支持(getColorX() / getColorY())

交互

触发 行为
从 Options Manager 打开网格编辑器 UIManager.openGridEditor()
选择地图类型(昼/夜/地下) 编辑对应的 GridSpec
切换样式 在 Squares / Dots / Checkers 间选择,贴图随之更换
调整颜色 / alpha 立即重绘网格预览
关闭编辑器 onGuiClosed()(GridEditor.java:464)写回 CoreProperties.gridSpecs
地图缩放 Fullscreen 调 gridRenderer.setZoom(...)(Fullscreen.java:717)
showGrid 关闭 网格整体不显示(见 地图显示选项)

相关条目