Skip to content

Skinning

HoshinoYumeka edited this page Sep 7, 2026 · 2 revisions

换肤(资源包)

首页使用手册 | 下一页:服主须知

44 个贴图位、九宫格元数据、App 与天气图标。

界面上的每个视觉元素都能用贴图替换。放了贴图就用贴图,没放就用内置配色,功能完全不受影响——不会出现缺图变紫黑格子的情况。

把 PNG 放进资源包的 assets/mcphone/textures/,路径按下面几张表(相对该目录)。改完按 F3+T 重载资源包即可看到效果,不用重启游戏。

phone/ —— 机身、导航、主屏

文件名 画的是什么 建议尺寸 没放时
phone/frame.png 手机外壳边框 136×216(含边框的整机)。中间 120×200 必须透明——外壳画在最上层,不透明会糊掉整个屏幕;反过来你在中间画的内圆角、刘海都会显示 画纯色边框
phone/status_bar.png 顶部状态栏底 120×10 纯色
phone/nav_bar.png 底部导航栏底 120×14 纯色
phone/nav_back.png 导航栏返回键 40×14 画 ◁ 字符
phone/nav_home.png 导航栏主页键 40×14 画 ○ 字符
phone/nav_tasks.png 导航栏多任务键 40×14 画 □ 字符
phone/drop_slot.png 主屏拖动排序时「松手落这儿」的空槽 20×20 半透明纯色
phone/page_dot.png 主屏底部的页码点(不是当前页) 3×3 半透明纯色
phone/page_dot_active.png 页码点(当前页) 3×3 纯白
phone/page_edge.png 拖着图标停在屏幕边上时的翻页提示条 10×176(竖条) 半透明纯色
phone/toast.png 收到消息时右上角的通知底 160×32(原版通知的槽位尺寸,照这个画才不会和其他模组的通知挤在一起错位) 纯色加一圈描边
phone/unread_badge.png 未读条数的角标底。两处共用:会话列表里的未读数与消息通知右上角的计数是同一张图,换一次两处都变 12×9 纯色

chat/ —— 美西螈

文件名 画的是什么 建议尺寸 没放时
chat/bubble_self.png 自己发出的聊天气泡底(只有文字消息用,图片不套气泡) 随内容拉伸 纯色
chat/bubble_peer.png 对方发来的聊天气泡底(同上) 随内容拉伸 纯色
chat/input_bar.png 会话界面输入栏底 90×14 纯色
chat/teleport.png 会话列表里在线好友那一行右下角的「传送到他身边」小图标 7×7(按实际绘制尺寸画,这里不做平滑缩放) 画 → 字符
chat/attach.png 会话界面输入栏左边那个「+」(点开是图片 / 表情) 9×9 画 + 字符

music/ —— 音乐

文件名 画的是什么 建议尺寸 没放时
music/prev.png 「上一首」 9×9 画 ⏮ 字符
music/play.png 「播放」 9×9 画 ▶ 字符
music/pause.png 「暂停」 9×9 画 ⏸ 字符
music/next.png 「下一首」 9×9 画 ⏭ 字符
music/eject.png 唱片仓的「取出」 9×9 画 ⏏ 字符
music/backpack.png 唱片仓的「从背包放」(只在仓是空的时候出现) 9×9 画 ▤ 字符
music/mode_list_loop.png 循环模式:列表循环 9×9 画 ↻ 字符
music/mode_single_loop.png 循环模式:单曲循环 9×9 画 ① 字符
music/mode_shuffle.png 循环模式:随机播放 9×9 画 ⇄ 字符

gallery/ · store/ —— 相册与商店

文件名 画的是什么 建议尺寸 没放时
gallery/delete.png 相册单张查看里的「删除」键(点过一次之后变成文字「再点一次确认」,那一态不走贴图) 9×9 画「删除」两个字
store/button.png 应用详情页上可点的按钮底(购买 / 下载) 100×16 纯色
store/button_disabled.png 点不动时的按钮底(已安装 / 买不起) 100×16 纯色
store/companion.png 商店里「联动App」入口格的图标 20×20 纯色底加三个小方块

store/button_disabled.png 是单独一张,而不是把可点的那张调暗——调暗是我们替美术做的决定,「不可点」该长什么样应该由画贴图的人说了算。

browser/ —— 浏览器

文件名 画的是什么 建议尺寸 没放时
browser/panel.png 浏览器那块大面板的底 320×200 纯色
browser/bar.png 浏览器工具条那一条的底 320×22 纯色
browser/back.png 「后退」键 22×18(整个键框,不是居中的小图标) 画 ◀ 字符
browser/forward.png 「前进」键 22×18 画 ▶ 字符
browser/reload.png 「刷新」键 22×18 画 ↻ 字符

browser/panel.png 绝大部分会被网页盖住,真正看得见的只有加载中的空白期,纯色就够。 browser/bar.png 那一条在面板外面,浮在面板上方的留白里,不占网页高度。

reader/ —— 阅读

文件名 画的是什么 建议尺寸 没放时
reader/book.png 书架列表里那本兜底的书(只在书源画不出那本书自己的图标时用得上) 16×16(按实际绘制尺寸画,这里不做平滑缩放) 纯色
reader/search_bar.png 阅读页顶上那条搜索栏的底 112×12 纯色
reader/shelved.png 书已收进书架时行右端那颗星 9×9(按实际绘制尺寸画) 画 ★ 字符
reader/unshelved.png 书还没收进书架时那颗星 9×9 画 ☆ 字符
reader/tab.png 底部「书架 / 书城」当前那一页的底 54×12 纯色(另一页不画底)

settings/ —— 滑条

文件名 画的是什么 建议尺寸 没放时
settings/slider_track.png 滑条的槽(「界面大小」那一条,将来的音量条也用它) 100×6,整张横向拉伸 纯色
settings/slider_fill.png 滑条已填充的那一段 100×6 纯色
settings/slider_knob.png 滑块 4×14(比槽高,压在槽上) 纯色
settings/step_button.png 滑条两端 − + 键的底 14×14 纯色,悬停时提亮

这四件刻意起的是通用名字:以后别的滑条(比如音量)也会用同一组,画一次就够。

App 图标与天气图标

App 图标单独放在 app/ 下,文件名就是 App 的短名,都是 20×20:

app/settings.png   app/app_store.png  app/chat.png       app/camera.png
app/gallery.png    app/music.png      app/ender_chest.png app/notes.png
app/waystone.png   app/browser.png    app/clock.png      app/weather.png
app/reader.png     app/quests.png

附属模组的 App 图标路径由它自己决定,见附属接口文档

天气页那张大图标weather/ 下,六张 32×32:clear.pngrain.pngsnow.pngthunder.pngdry.pngnone.png,按当前是什么天各显其一。

这六张和上面几张表不是一回事——它们没有兜底色,因为模组自带全套,资源包只是覆盖。要换就六张一起换,只换一两张会出现画风打架。

玩家头像不在换肤范围内 —— 那是玩家自己的皮肤,取自 Tab 玩家列表,资源包不该覆盖。

尺寸与拉伸

尺寸不必精确匹配,贴图会被拉伸到目标区域。想要不变形,按建议尺寸或其等比放大画即可。

建议尺寸是「画在屏幕上有多大」,不是「文件必须多大」。 整数倍放大的图一样能用,而且线条细、有弧度的图案这么做更清楚:模组自带的 phone/frame.png 是 2 倍(272×432),导航栏那三个键是 10 倍(400×140),书架那两颗星、浏览器那三个键、滑块与 − + 键都是 4 倍。

放大倍数取整数——非整数倍在低 GUI 缩放下会掉线条。

九宫格:.png.mcmeta

默认整张拉伸。 不带元数据的贴图行为和以前一样——整张被拉到实际大小,带圆角的图在宽气泡上抻长、在窄气泡上压扁,所以纯色或纵向渐变最稳妥。

想要圆角不变形,在 PNG 旁边放一份同名的 .png.mcmeta

{"mcphone_skin": {"border": 3}}

这张图就改走九宫格:四角按源图上那 3 个像素原样画,只有四条边和中间被拉伸,气泡多宽多高,四个角都一样大。

border 大于源图短边的一半时忽略,退回整张拉伸;老资源包不写这份元数据,什么都不用改。

自带图里用了九宫格的有五张:两种气泡与输入栏是 border: 3,滑条的槽与填充是 border: 2——让两端的圆头不跟着条一起抻长。

状态只能靠亮度或透明度

贴图改不了颜色。 悬停、点不动这类状态,在没有贴图的年代是换一个颜色画出来的;这个位上一旦有了贴图,那个颜色就再也看不见。

所以模组在有贴图时改用别的表达:

状态 表达
导航键、商店按钮悬停 整张按倍数提亮(资源包画的是什么颜色,亮起来还是那个颜色)
浏览器那三个键点不动 整张压暗
音乐键、聊天的「+」 把高亮块画在贴图底下

画贴图时不必自己去表达这些状态。

半透明是有效的:贴图里 alpha 介于 0 与 255 之间的像素会正常混合,抗锯齿边缘、整块半透明的底(做"壁纸上压一层暗色"这种效果)都可以画。

1.7.40 之前这类像素会被当成不透明画出来,边缘发硬、半透明的底变成实心——那是模组的 bug,不是你的图有问题。

几件杂事

上面那些表里的 44 个位,模组现在全都自带——一个不缺。最后补上的是浏览器工具条那三个键与滑条那四件;在那之前补齐的十三张是状态栏、拖动空槽、两颗页码点、翻页提示条、商店的两个按钮底、浏览器的面板与工具条、阅读的搜索栏 / 标签 / 收藏与未收藏两颗星。

资源包放同路径的图仍然照常覆盖,只是「没放时」那一列的兜底色平时已经轮不到出场了——它还留在表里,是因为资源包塞进来一张坏 PNG 时仍然会退到那一档,而不是变成紫黑格子。

放进去的文件不是合法 PNG 时会退回纯色,并在日志里记一条警告,不会崩。

完整的贴图位清单(含每个位现有的图长什么样、缺图时退回哪个颜色)可以自己生成:

python3 docs/make_texture_manifest.py

出一张 HTML。

不在文档里存一份静态清单,是因为那种清单必然过期——PhoneTheme 头部那张就是这么烂掉的。

老路径仍然认。 1.2.7 之前所有贴图平铺在 textures/gui/ 下(phone_frame.pngapp_icon_chat.png 这种)。按那套做的资源包不用改也能继续用——新路径找不到时会自动回退,并在日志里提一句。新做的资源包请按上面几张表。


首页使用手册 | 上一页:⚙️ 设置 | 下一页:服主须知

Clone this wiki locally