# MapperPlugin **Repository Path**: TasteSteak/mapper-plugin ## Basic Information - **Project Name**: MapperPlugin - **Description**: MapperPlugin模组使用说明 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2024-10-12 - **Last Updated**: 2025-08-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # MapperPlugin 文档 If you need the English documentation, please refer to [English Documentation](README.md). >为造图提供更多元素以及功能。该插件旨在通过扩展功能和增强灵活性。它基于作者在学习过程中的经验和探索,致力于为用户提供更多创作选择和优化工具。 版本 1.4.4-fabric+1.21 [更新日志](#更新日志) ** * ## 功能 该模组主要提供了 Command指令 来实现. 注意:对于部分指令,如果执行者不是 玩家对象 ,则需要利用execute来更改执行者.
考虑到基于造图师使用,所有指令仅需权限2级.
** * ### 游戏规则 实体伤害间隔 `mobDamageInvulnerable`(默认true) 若更改此游戏规则,则实体不再拥有伤害无敌间隔. 玩家伤害间隔 `playerDamageInvulnerable`(默认true) 若更改此游戏规则,则玩家不再拥有伤害无敌间隔. 展示实体类`DisplayEntity` 的`Pitch`值不再受原版限制([-90F,90F]),您可以随意地更改! 现指令 `/data` 可修改玩家数据 ### 玩家属性值 多段跳能力 `mapperplugin:player.multi_jump` (默认1.0, 最小1.0, 最大6.0) 玩家的多段跳能力,若更改此选项,只对整数型生效. ### NBT 标签 玩家的鼠标输入将会被监听并存储到自身NBT中(只读). 例: {Options: {attack:0, use:0, space:0, sneak:0}} int型表示: `0 未按下按键` `1 按下了按键` `2 按住了按键` `3 松开了按键` ``` #示例代码 execute as @a[nbt={Options:{attack:2,use:3}}] run say 按住了攻击键且松开了交互键 ``` 对于 `WitherEntity` 新增NBT标签 `BossbarVisible` ,用于更改凋灵实体是否展示boss栏(默认true) ### DataComponent 物品组件 新增物品组件 `mapperplugin:attack_event` `mapperplugin:use_event` ``` #手持物品攻击实体时,将执行函数tutorial:attack give @s minecraft:diamond[mapperplugin:attack_event:{function:"tutorial:attack"}] #主手使用物品时,将执行函数tutorial:use give @s minecraft:diamond[mapperplugin:use_event:{function:"tutorial:use"}] #副手使用物品时,将执行函数tutorial:use give @s minecraft:diamond[mapperplugin:use_event:{function:"tutorial:use", main_hand:false}] ``` ### 自定义粒子 此粒子 `mapperplugin:abstract_custom_particle` 是一个用于自定义粒子的模板,允许您为粒子设置多个属性。 通过该粒子,您可以自由配置粒子的颜色变化、缩放、光照、重力影响、生命周期等参数. ``` { name: "minecraft:end_rod", // 粒子的名称 (默认"minecraft:end_rod") from_color: [0.5f, 0.0f, 0.0f, 1.0f], // 粒子起始颜色 (RGBA 格式) (默认[1.0f, 1.0f, 1.0f, 1.0f]) to_color: [0.3f, 1.0f, 1.0f, 1.0f], // 粒子结束颜色 (RGBA 格式) (默认[1.0f, 1.0f, 1.0f, 1.0f]) scale: 1.0, // 粒子缩放比例 (0.01 ~ 10.0) (默认1.0f) light_sky: 15, // 粒子对天空的光照强度 (0 ~ 15) (默认15) light_block: 15, // 粒子对方块的光照强度 (0 ~ 15) (默认15) gravity: 0.1, // 粒子的重力影响程度 (-1.0 ~ 1.0) (默认0.0f) life_time: 60, // 粒子的生命周期 (0~200 tick) (默认60) min_life_time: 20 // 粒子的最小生命周期 (0~40 tick) (默认20) } ``` ``` #示例代码 particle mapperplugin:abstract_custom_particle{name:"minecraft:end_rod",from_color:[0.5f,0.0f,0.0f,1.0f],to_color:[0.3f,1.0f,1.0f,1.0f],scale:0.6,light_sky:15,light_block:15,gravity:0.1,life_time:60,min_life_time:20} ~ ~ ~ 0 0 0 0.1 500 normal ``` ### 模组配置界面 该界面用于配置客户端某些内容. -游戏启动时是否显示预启动图标 -渲染末地折跃门光束 -更改粒子数量上限 -声音监听器接收来源 -Cef浏览器接收来自MC发送的JS最大等待时间(需要MCEF库) ** * ### mp:camera 该指令实现了自定义相机功能. 用法: ``` mp:camera set ``` ``: 玩家相机的坐标位置 ``: 玩家相机的朝向 ``: 是否允许相机进行x轴移动 ``: 是否允许相机进行y轴移动 ``: 是否允许相机进行z轴移动 ``: 是否允许相机进行水平轴(yaw)移动 ``: 是否允许相机进行垂直轴(pitch)移动 ``: 从玩家视角到相机目标位置移动动画时长(秒) ``: 滑动类型. ``` easing(滑动类型) ├── linear(线性) │ └── 描述: 匀速滑动,速率不变 │ ├── ease_in(缓入) │ └── 描述: 开始时速度较慢,然后逐渐加速 │ ├── ease_out(缓出) │ └── 描述: 开始时速度较快,逐渐减慢 │ └── ease_in_out(缓进出) └── 描述: 开始和结束时较慢,中间较快 ``` ``` #示例代码(玩家为执行者) mp:camera set ~ ~ ~-6 0 0 true false false false false 1.2 ease_in_out #示例代码(非玩家为执行者) execute as @p run mp:camera set 0 0 -6 0 0 true true false false false 0.6 linear ``` 用法: ``` mp:camera option raycast mp:camera option restrict mp:camera option zoom mp:camera option lock_rotation mp:camera option shake mp:camera option roll mp:camera option fov_effect_scale mp:camera option normalize ``` `raycast` ``: 相机射线距离,使用需要相机的使用`set` `restrict` ` `: 相机被约束的活动范围,使用需要相机的使用`set` `zoom` ` `: 相机缩放比率(0.1~16.0)、动画时长以及滑动类型(参考camera set ) `lock_rotation` ` `: 玩家视角朝向锁定,默认(true true) `shake` ` `: 相机的摇晃强度、持续时长以及摇晃类型 `roll` ` `: 相机翻滚角度、动画时长以及滑动类型(参考camera set ) `normalize`: 归一化相机目标实体的朝向[-180,180) `offset` ``: 相机相对偏移量,使用需要相机的使用`set` (测试) `fov_eeffect_scale` ``: 相机的视场角效果 ``` shake_type(摇晃类型) ├── positional(坐标) │ └── 描述: 摇晃相机在空间中的位置,导致相机的位置发生变化 │ └── rotational(朝向) └── 描述: 摇晃相机的朝向,导致相机的视角或旋转发生变化 ``` ``` #示例代码(玩家为执行者) mp:camera option raycast 4 mp:camera option restrict ~-5 ~-5 ~-5 ~5 ~5 ~5 mp:camera option zoom 2 ease_out mp:camera option lock_rotation false true mp:camera option shake 1 5 postional mp:camera option fov_effect_scale 1.0 mp:camera normalize ``` 如果需要重置,输入 ``` #重置相机的set配置 mp:camera set #重置相机的所有option配置 mp:camera option #重置相机射线距离 mp:camera option raycast #重置相机约束范围(默认无) mp:camera option restrict #重置相机缩放比率 mp:camera option zoom #重置玩家视角锁定朝向 mp:camera option lock_rotation #清空玩家相机摇晃效果 mp:camera option shake #重置相机翻滚效果 mp:camera option roll #恢复相机视场角效果至默认 mp:camera option fov_effect_scale #重置相机所有配置 mp:camera ``` ### mp:chatclear 该指令用于清空玩家聊天栏历史记录(相当于`F3 + D`). 用法: ``` mp:chatclear ``` ### mp:gui 该指令用于打开自定义界面(浏览器). 注意:调用此功能需要安装依赖库模组 `MCEF` ,否则无法使用(不会影响其他游戏正常打开和其他功能使用) 用法: ``` mp:gui create [ ] mp:gui send (direct | filename ) ( | ) ``` `create `: 传入URL,协议可以为`http://` `https://` `file:///` `mc://`(mc://代表导航至.minecraft文件夹为根目录) `create `: (可选)设置窗口大小时 水平预留位置大小 `create `: (可选)设置窗口大小时 垂直预留位置大小 ``` value(单位) ├── (无单位,将自动转为绝对值) ├── px(绝对值) └── v(比例) ``` `create `: (可选) 是否禁用`Esc`以关闭界面(默认false) 并提供关闭按钮(右上角) `create `: (可选) 是否禁用`Esc`以背景界面模糊(默认false) `send ( | )`: 向处于打开自定义GUI(浏览器)中的玩家传递需要执行的JS或通过存储Storage传入JS方法名中执行 `send direct`: 直接进行传递 `send filename `: 筛选网页文件名相同的玩家进行传递 ``` #示例代码(玩家为执行者) mp:gui create 'https://www.bing.com' 0px 10v false true #示例代码(非玩家为执行者) execute as @p run mp:gui create 'mc:///logs/' 2 10px true false #向所有打开了网页文件名为demo.html的玩家传递JS execute as @a run mp:gui send filename 'demo.html' document.write('

你好JS!

'); #传入Storage demo:test 给名为 storageMethod 的js方法并执行 mp:gui send direct storageMethod demo:test #JS function storageMethod(nbt) { console.log(nbt); } ``` **对于GUI开发者** 此功能基于JCEF浏览器 Chrome内核,如果你想自定义GUI,则需要一定的`HTML`基础知识. JS接口: ```js //具体实现方式由自己调整 //关闭 GUI界面 window.cefQuery({ request: "closeGUI", persistent: false, }); //调用 Minecraft指令 function queryMinecraftCommand(str) { window.cefQuery({ "request": "command:" + str, "persistent": false }); } //获取在线玩家列表 window.cefQuery({ request: "playerList", persistent: false, onSuccess: function (response) { console.log(response) } }); ``` ```js //请不要使用这种操作! //错误案例,会导致死循环并占用网络通信 const cmd = 'mp:gui send direct queeryMinecraftCommand();'; function queryMinecraftCommand() { window.cefQuery({ "request": "command:" + cmd, "persistent": false }); } queryMinecraftCommand(); ``` 如果客户端调用GUI时无法响应JS请求,请尝试输入 `/mp:reconfig_cef` 指令以重新配置. ### mp:kick 该指令用于 踢出玩家,类似于`kick`指令,但它提供 Text文本 并允许任何选择器调用,包括`CommandBlock` `Server` `主机`等. 用法: ``` mp:kick ``` ``: (可选) 踢出原因 ``` #示例代码 mp:kick ["\u00a7c你没虫Q币"] ``` ### mp:motion 该指令允许修改生物的`Motion`值. 用法: ``` mp:motion (set | append) [] [] ``` `(set | append)`: 矢量修改类型(设置/添加) ``: x轴向量值 ``: y轴向量值 ``: z轴向量值 `[]`: 是否使用局部坐标,默认false `[]`: 是否受Y轴参数影响,默认false ``` #示例代码 mp:motion 0 0 2 true true ``` ### mp:pathfinder 该指令用于寻路导航,需要使用`循环调用` 用法: ``` mp:pathfinder ``` ``: 传入一个坐标点,支持`~`和`^`(不建议) `>`: 传入一个或多个坐标点 ``` #示例代码 execute as @p run mp:pathfinder ~ ~ ~ ~ ~2 ~5 execute as @p run mp:pathfinder ~ 10 ~ ~5 ~14 ~ ~-8 12 ~9 ~1 ~ ~4 ``` ### mp:perspective 该指令用于修改玩家视角,相当于`F5`(默认按键)进行切换. 用法: ``` mp:perspective ``` ``: 传入视角类型 ``` perspective_type(视角类型) ├── FIRST_PERSON(第一人称) ├── THIRD_PERSON_BACK(第三人称背后) └── THIRD_PERSON_FRONT(第三人称前方) ``` ``` #示例代码 execute as @p run mp:perspective THIRD_PERSON_FRONT ``` ### mp:pose 该指令用于修改生物动作, 可能会有奇怪的事情发生. 用法: ``` mp:pose ``` ``: 动作类型,注意,不能保证玩家能够有效执行该动作 ``` pose(动作类型) ├── standing(站立) ├── fall_flying(下落/飞行) ├── sleeping(睡觉) ├── swimming(游泳) ├── spin_attack(旋转攻击) ├── crouching(蹲下) ├── long_jumping(长跳) ├── dying(死亡) ├── croaking(呱呱叫) ├── using_tongue(使用舌头) ├── sitting(坐下) ├── roaring(咆哮) ├── sniffing(嗅探) ├── emerging(出现) ├── digging(挖掘) ├── sliding(滑行) ├── shooting(射击) ├── inhaling(吸气) ``` ``` #示例代码 mp:pose swimming ``` ### mp:shader 该指令允许更改玩家渲染的 `后期着色器` `shaders/post` ,并允许叠加(最多不超过10个,若超过则将清除最先前的着色器) 用法: ``` mp:shader add mp:shader clear [] mp:shader uniform (add | remove | set) ``` ``:传入有效的着色器路径,且文件要求为`JSON`文件 `uniform (add | remove | set) `: 添加/减少/设置 目标着色器的Uniform的值(可自定义Uniform) 若 `clear []`中未传入 ``,则表示重置所有已加载的后期着色器 ``` #示例代码 mp:shader add minecraft:creeper mp:shader clear rain_g:wasted mp:shader uniform test:demo CustomUniform 0.2 ``` ### mp:particle 该指令用于绘画线段以及椭球体等 (当前版本`1.1.9`),注意!在不确定的情况下请勿一次性频繁地生成大规模粒子,会导致客户端无法响应需求甚至崩溃! 用法: ``` mp:particle lines mp:particle sphere mp:particle arc ``` ``:传入粒子类型和效果 ``: 传入Yaw偏转角度(Y轴偏转) ``: 传入Pitch偏转角度(X轴偏转) ``: 传入Z偏转角度(Z轴偏转) ``: 额外粒子速度(局部定位),受朝向影响 ``:每个粒子之间的间隔 ``:绘画完成所需动画时长,以毫秒为单位(1000即为1秒,但跟随客户端线程)(如果时间过短建议设置0减少性能损耗) `lines `:粒子之间的随机偏移量 `lines >`:绘画线段类型的坐标点,支持多个坐标点 `[sphere | arc] `: 球体/圆弧中心点 `[sphere | arc] `:图案生成时使用的移动动画类型 `sphere `:椭球体X轴半径大小 `sphere `:椭球体Y轴半径大小 `sphere `:椭球体Z轴半径大小 `arc `:圆弧半径大小 `arc `: 圆弧角度(0~360) ``` motion_style(移动动画类型) ├── none(无) ├── shrink(收缩生成) ├── sphere(扩散生成) ├── incomplete_shrink(无序收缩生成) └── incomplete_sphere(无序扩散生成) ``` 注:偏转lines图案的旋转轴为执行位置处,若需要调整,可使用`execute [positioned | at]`等. ``` #示例代码 #生成五角星 execute as @p positioned ~ ~3 ~ run mp:particle minecraft:end_rod lines 0 0 0 0.0 0 0.0 0 0.1 1000 ~ ~3 ~-3 ~ ~3 ~3 ~ ~ ~-1.8 ~ ~5 ~ ~ ~ ~1.8 ~ ~3 ~-3 #生成爆发型球体 execute as @p positioned ~ ~3 ~ run mp:particle minecraft:end_rod sphere ~ ~ ~ 0 0 0 0.0 0 0.0 5 5 5 0.4 1000 incomplete_spread #生成扩散型圆环 execute as @p at @s run mp:particle minecraft:end_rod sphere ~ ~ ~ 0 0 0 0.0 0 0.0 15 0 15 0.1 0 spread #生成向前移动的线段,速度方向为执行位置方向 execute as @a rotated as @s run mp:particle minecraft:end_rod lines ~ ~ 0.0 0.0 0.0 0.4 0 0.1 0 ~ ~1 ~ ~ ~1 ~3 #生成喷发型球体,速度方向为执行位置方向 execute as @a positioned ~ ~2 ~ rotated as @s run mp:particle minecraft:end_rod sphere ~ ~ ~ ~ ~ 0 0.0 0.0 0.6 2 2 2 0.2 2000 incomplete_spread #生成向前移动的圆弧,速度方向为执行位置方向 execute as @a at @s run mp:particle minecraft:end_rod arc ~ ~ ~ ~ ~ -45 0.0 0.0 0.7 2 180 0.1 0 none ``` ### mp:mapgenerator 该指令用于将图片转换成地图画. 用法: ``` mp:mapgenerator create ``` ``:传入的图片url路径,支持本地文件(玩家执行者的本地文件)、`HTTP`等 ``:裁剪图片时的宽度数量(1~16) ``:裁剪图片时的高度数量(1~16) ``:渲染模式,不同生成模式会有不同的结果 ``` mode(渲染模式) ├── minecraft_common(使用Minecraft原生渲染地图画) │ └── 描述: 可能会丢失图片原有颜色 │ ├── minecraft_grayscale(使用Minecraft原生渲染灰度图) │ └── 描述: 牺牲更多色彩换取更高的精准度 │ └── mod_fix_compress(牺牲分辨率换取更高色彩) └── 描述: 只有在安装MapperPlugin时才能正常渲染应有效果 ``` ``` #示例代码 #以MINECRAFT_COMMON模式生成2x1(2张)在系统D盘中的test.png文件 mp:mapgeneractor create "file:///D:/test.png" 2 1 minecraft_common #以MOD_FIX_COMPRESS模式生成3x3(9张)在网上中的abc.jpg文件 mp:mapgeneractor create "https://url.example.com/abc.jpg" 3 3 mod_fix_compress ``` ### mp:stats (测试) 该指令用来更新玩家状态. 用法: ``` mp:stats ``` ``:状态类型 ``` #示例代码 mp:stats jump ``` ### mp:input 该指令用于控制玩家操作权限和控制. 用法: ``` mp:input permission (disabled | enabled) mp:input cooldown mp:input operate ``` `permission `: 权限类型. ``` permission(权限类型) ├──all (全部) │ ├── movement (移动) │ │ ├── lateral_move (按键移动) │ │ │ ├── move_forward (前进) │ │ │ ├── move_backward (后退) │ │ │ ├── move_left (左移) │ │ │ └── move_right (右移) │ │ ├── jump (跳跃) │ │ └── sneak (潜行) │ ├── rotation (旋转) │ │ ├── rotation_horizontal (水平旋转) │ │ └── rotation_vertical (垂直旋转) │ ├── mouse (鼠标) │ │ ├── mouse_attack (鼠标攻击) │ │ ├── mouse_use (鼠标使用) │ │ └── mouse_pick_item (鼠标拾取物品) │ ├── perspective (视角) │ ├── smooth_camera (平滑相机) │ ├── hotbar_keys (快捷栏按键) │ ├── social_interaction (社交互动) │ ├── inventory (背包) │ ├── advancement (成就) │ ├── swap_hand (交换手) │ ├── drop_item (丢弃物品) │ └── chat (聊天) ``` `cooldown `: 冷却目标 ``` cooldown(冷却目标) ├── attack(攻击[实体]) ├── use(放置/交互) ├── space(空格键) └── all(全部) ``` `cooldown `: 最大冷却时间(0~10000s)(独立) `operate `: 执行操作 ``` #示例代码 mp:input permission movement disabled mp:input cooldown attack 10 ``` 重置:将所需参数填空即可,或 ``` mp:input ``` ### mp:aimassist 该指令用于更改辅助瞄准功能. 注意:启用后,将监听 `破坏/攻击键` `放置/交互键`. 用法: ``` mp:aimassist [] ``` ``: 指定 Yaw 角度 (5.0~180.0) ``: 指定 Pitch 角度 (5.0~90.0) ``: 指定最大距离 (1.0~16.0) ``: 指定瞄准模式(优先级) `angle`(角度优先) `distance`(距离优先) ``` target_mode(瞄准模式) ├── angle(角度优先) └── distance(距离优先) ``` `[FocusTime: long]`: (可选)在相机锁定视角时玩家受辅助瞄准标记的时长(默认0L, 0~2000L 毫秒) ``` mp:aimassist 20 20 5 distance ``` 重置(关闭)辅助瞄准: ``` mp:aimassist ``` ### mp:hotbar 该指令用于设置玩家选中的槽位栏. 用法: ``` mp:hotbar ``` ``: 选中的槽位栏(1~9) ``: 是否锁定(锁定后,玩家无法更换槽位栏) ``` #示例代码 mp:hotbar 1 true ``` 重置方法 ``` mp:hotbar ``` ### mp:target 此指令用于标记实体或者寻路导航. 注意:某些实体拥有独特的机制,对于某些生物标记将不会长期生效,如`Piglin` `Hoglin`. 用法: ``` mp:target entity [force] mp:target navigation ( | ) ``` ``: 执行者,要求为 `MobEntity` 类 `entity `: 标记实体,目标 `entity [force]`: (可选)强制标记,直到目标不存在为止 `navigation ( | )`: 导航抵达终点位置,可以是实体也可以是坐标 `navigation `: 导航最长有效时间(0~600 tick),超时将会停止导航 ``` #示例代码 mp:target @n[type=zombie] entity @n[type=pig] force mp:target @n[type=!player] navigation @s ~ ~ ~ 100 ``` 重置方法 ``` #注:如果标记的是玩家,则执行者重置标记可能无效. mp:target entity mp:target navigation ``` ### mp:animate 此指令用于播放玩家动画. 此功能依赖于库(您无需再次安装) `PlayerAnimator`, 当前导入的版本:`player-animation-lib-fabric-2.0.0+1.21.1`, 作者`KosmX` 动画数据文件将在数据包中加载 `data//animations/`. 用法: ``` mp:animate play mp:animate stop ``` `play `: 播放动画数据文件的资源位置 `play `: 播放动作时玩家移动是否会中断动画(默认 false) `stop`: 停止播放动画 ``` #示例代码 #假设有数据包templete data/namespace/animations/waving.json mp:animate play namespace:waving ``` ### mp:hud 此指令用于自定义绘制HUD。 本模组提供了通过json文件来实现自定义绘制HUD(后续会介绍如何编写自定义数据文件),您只需要将准备好的文件放入对应位置后调用即可。 HUD数据文件将在数据包中加载 `data//hud/`. 用法: ``` mp:hud add mp:hud clear [] mp:hud send ``` `add `: 需要加载的HUD配置文件 `clear []`: 需要清除的HUD文件,不填则清除所有已加载的HUD配置文件 `send `: 需要传输给目标HUD的信息(参考`function ... with`) ``` #示例代码 #假设有数据包templete data/namespace/hud/abc.json mp:hud add namespace:abc ``` 以下是如何自定义HUD文件: ```json lines //这里包含了一个HUD文件,整个内容为LayerDraw { "name": "Example HUD", //文件名,必填 "version": "1.2.1", //文件版本,必填 "component": [ //包含一个或多个渲染图层组件,必填 渲染图层组件1..., 渲染图层组件2..., 渲染图层组件3..., 渲染图层组件4..., ... ], "resource": [ //包含一个或多个纹理资源,在渲染时将使用预设好的资源,选填 纹理资源1..., 纹理资源2..., 纹理资源3..., 纹理资源4..., ... ], "replacement": { //初始化时可变更文本的默认文本,如 $(key1) 在初始化后被显示为 value1 "key1": "value1", "key2": "value2", "key3": "value3", "name": "@s" //如果可变更文本为@s,则返回玩家原始名 } } //纹理资源的数据格式,整个内容为TextureResource { "id": "BLACK", //纹理资源ID,必填 "path": [ //纹理资源的资源位置,若存在多个,则会根据数组大小以及分数追踪器提供的分数来返回对应的纹理,必填 "minecraft:hud/heart/withered_hardcore_half", "minecraft:hud/heart/withered_hardcore_full" ], "width": 11, //纹理的宽度大小,必填 "height": 11, //纹理的高度大小,必填 "offsetX": -1, //纹理的外边框宽度增加量,必填 "offsetY": -1, //纹理的外边框高度增加量,必填 "sprite": true //是否为精灵图类型,如果为false,则需要提供完整的纹理资源路径,默认为false,选填 } { "id": "COIN", "path": "minecraft:textures/item/emerald.png", //不是精灵图类型,返回的纹理资源路径为完整路径,且带有文件名 "width": 10, "height": 10, "offsetX": -1, "offsetY": -1 } //渲染图层组件数据格式,整个内容为LayerDrawComponent { "style": { //组件的样式设置,必填 "position": "TOP_LEFT", //组件渲染基本位置,必须是这些选项之一:(TOP_LEFT TOP_CENTER TOP_RIGHT CENTER_LEFT CENTER CENTER_RIGHT BOTTOM_LEFT BOTTOM_CENTER BOTTOM_RIGHT) "offsetX": 2, //宽度位置偏移量,需要填入整数型,选填 "offsetY": 3, //高度位置偏移量,需要填入整数型,选填 "background": 491300000, //组件的背景颜色,传入rgba十进制数,选填,默认透明(0) "scale": 1.0, //组件整体渲染时的放大倍率,选填 "opacity": 1.0 //组件的可见透明度,选填 }, "context": [ //包含一个或多个绘制部分,每个绘制部分有不同的功能,必填 绘制部分1..., 绘制部分2..., 绘制部分3..., 绘制部分4..., ... ], "animation": { //组件的动画帧配置,选填 "0": { //在第0时刻(tick)时的动画关键帧 "pos": [0, 0], //偏移量,分别是x轴、y轴,选填 "scale": 1.0, //缩放倍率,选填 "opacity": 1.0, //透明度,选填 "easing": "EASE_OUT" //滑动类型,选填(默认LINEAR) }, "50": { "pos": [50, 0], "scale": 2.0, "opacity": 0.5, "easing": "LINEAR" }, "100": { "pos": [50, 30], "scale": 5.0, "opacity": 1.0, "easing": "EASE_IN" }, "200": { "pos": [0, 0], "scale": 0.5, "easing": "LINEAR" }, "loop": true //是否循环动画,可选,默认false } } //绘制部分的数据格式,每个类型会有不同的写入方式,整个内容为PartContext { "type": "text", //绘制类型,必须是这些选项之一: (text player_head fetters item progress) "value": [ //绘制部分包含的值,必填 {"text":"$(name)"}, //与Minecraft原本的文本组件一致,其中$(key)为可变更文本,@s表示玩家自己 {"text":"","color":"#FFDD50","objective":"coin"} //如果需要展示分数,可以在原有的文本组件上简写,如"score": {"objective":"coin"} 可以直接写成{"objective":"coin"} ], "sort": "FOLLOW", //绘制部分的排序方式,必须是这些选项之一: (FOLLOW WRAP),选填,默认为FOLLOW "shadow": true //是否启用阴影文本,选填,默认false } { "type": "player_head", "value": { "player": "Steve", //绘制头像的玩家,可以填 @s 玩家ID 玩家UUID,可以使用可变更文本$(key),如果找不到对应值,则返回默认皮肤头像,必填 "size": 24, //绘制头像的尺寸,代表宽度和高度,必填 "playerHat": true //是否渲染玩家帽子部分,选填 }, "sort": "FOLLOW" } { "type": "fetters", //根据分数追踪器的值来重复绘制纹理 "value": { "id": "HEALTH", //纹理资源ID "objective": "heart", //分数追踪器的计分板对象,如果没有给定值,则获取该计分板值,默认为0,必须有(objective 或 value)之一 "value": 14, //分数追踪器的固定值,如果有该键值,则优先返回该值,而不是计分板对象,必须有(objective 或 value)之一 "container": { //绘制纹理前的容器,会优先绘制容器内的纹理,选填 "id": "HEALTH_BACKGROUND", //容器纹理资源ID "value": 6 //与上面描述一致,为分数追踪器,返回结果 } } } { "type": "item", //绘制物品部分 "value": { "item": "#selected", //物品目标,需要填入玩家背包内的槽位(如 hotbar.1) 或 #selected(主手手持物品),否则返回空,必填 "count": { //物品数量,根据分数追踪器提供的值返回数量 "objective": "coin" }, "custom_model_data": 0 //物品自定义模型数据,选填 }, "sort": "FOLLOW" } { "type": "progress", //绘制进度条部分 "value": { "width": 240, //进度条的总长度,必填 "height": 8, //进度条的总宽度,必填 "value": { //当前进度条的值,由分数追踪器返回,必填 "objective": "coin" }, "max_value": { //进度条的最大值,由分数追踪器返回,必填 "value": 100 }, "progress": { //进度条的纹理设置,必填 "current": "minecraft:textures/gui/sprites/boss_bar/purple_progress.png", //当前值进度条,可以是纹理位置也可以是十进制颜色,必填 "alter": "minecraft:textures/gui/sprites/boss_bar/red_progress.png", //进度条时变化,可以是纹理位置也可以是十进制颜色,选填 "background": "minecraft:textures/gui/sprites/boss_bar/purple_background.png" //进度条背景,可以是纹理位置也可以是十进制颜色,必填 }, "transition": { //变换动画配置,必填 "delay": 3500, //动画持续时长(毫秒,1s=1000ms),必填 "easing": "EASE_OUT", //滑动函数类型,参考上文,必填 "vertical": false //进度条是否为垂直样式(默认为false),选填 } }, "sort": "WRAP" } ``` ### mp:testfor 此指令用于检测或返回某些功能. 用法: ``` mp:testfor raycast entity [as target] run ] mp:testfor raycast block [at (pos | block_pos)] run mp:testfor raycast miss [at target] run mp:testfor distance entity mp:testfor distance pos mp:testfor collision (block | blocks) run ``` `raycast`: 检测实体的射线 `raycast `: 发射射线的实体 `raycast (entity | block | miss)`: 射线目标类型,分别是实体、方块、未命中 `raycast `: 射线检测的最大范围(0 ~ 64) `[as target run ]`: 若射线检测成功,则运行的指令,指令执行源以target(目标)为执行者 `[at (pos | block_pos) run ]`: 若射线检测成功,则运行的指令,指令执行源以(pos(位置) | block_pos(方块位置))为执行位置 `[at target run ]`: 若射线检测成功,则运行的指令,指令执行源以target(目标)为执行位置 `distance`: 返回实体与位置之间的距离 `distance `: 距离中心 `distance entity `: 目标实体,返回实体与实体之间的距离 `distance pos `: 目标位置,返回实体与位置之间的距离 `collision `: 检测碰撞的实体对象 `collosion `: 与方块碰撞的朝向 ``` facing (Facing) ├── all (所有) │ ├── horizontal (水平朝向) │ │ ├── east (东面) │ │ └── south (南面) │ │ ├── west (西面) │ │ └── north (北面) │ ├── vertical (垂直朝向) │ │ ├── top (顶面) │ │ └── ground (底面) ``` `collision block `: 指定目标的方块 `collision blocks`: 指定所有目标方块 `collision run `: 若检测成功,将以方块目标为执行位置,执行指令 ``` #示例代码 #若射线击中16范围内的目标,则目标将执行指令say Hello mp:testfor raycast @s entity 16 as target run say Hello #返回最近的玩家实体到最近的实体之间的距离,并存储到storage test:distance中的result键中 execute store result storage test:distance result int 1 run mp:testfor distance @p entity @n[type=!player] ``` ### mp:player 此指令用于更改与玩家相关的内容 用法: ``` mp:player skin set mp:player skin reset mp:player name set mp:player name reset ``` `skin set `: 设置玩家的皮肤外观 `skin reset`: 重置为原来的皮肤外观 `name set `: 设置玩家的显示名称 `name reset`: 重置为原来的名称 ``` #示例代码 mp:player skin set Steve mp:player name set Pig ``` ### mp:mouse 此指令用于实现鼠标相关功能 用法: ``` mp:mouse cursor (default | lock | unlock) mp:mouse icon (set [ ] | reset) mp:mouse event (left_click | middle_click | right_click) [as target | at (pos | block_pos) | facing (target | pos | block_pos)] run ``` `cursor (default | lock | unlock)`: 设置鼠标是否显示(default默认) (lock锁定,不显示) (unlock解锁,显示) `icon set [ ]`: 设置鼠标图标,设置图标XY的偏移量以及尺寸大小`[1~4]`(可选) `icon reset`: 重置鼠标图标 `event (left_click | middle_click | right_click) run `: 鼠标点击(左键/中键/右键)时触发执行的指令 `event (...) [as target | at (pos | block_pos) | facing (target | pos | block_pos)] run `: 在执行指令时携带(执行者 / 执行位置(坐标/方块坐标) / 朝向(实体目标/坐标/方块坐标)) ``` #示例代码 #解锁鼠标光标 mp:mouse cursor unlock #设置鼠标图标为金苹果,且2倍大小 mp:mouse icon set minecraft:textures/item/golden_apple.png 0 0 2 #当鼠标右键到实体时,将执行/say hello! mp:mouse event right_click as target run say hello! #当鼠标左键到方块上时,将摧毁方块 mp:mouse event left_click at block_pos run setblock ~ ~ ~ air destroy ``` ### mp:rotate 此方法与原版Minecraft 1.21.2 的相似 https://minecraft.wiki/w/Commands/rotate ### mp:sound 此指令与`/playsound`相似,但提供了更多的可选项 用法: ``` mp:sound static [] [] [] [] mp:sound stereo [] [] [] [] ``` ``: 指定播放的声音事件,与原版相同 ``: 指定播放声音所属的类别,对应于游戏选项中“音乐和声音”设置的分类,与原版相同 `static`: 指定播放为静态声音,例如游戏中的背景音乐 `stereo `: 指定播放为立体声音,例如音符盒,需要填入坐标,以及是否受距离音量衰减(注意:音频需要支持立体音,否则与静态音无区别) `[] [] [] []`: 播放声音时的音量(默认1.0F)、音调大小(默认1.0F)、是否重复播放(默认false)、重复直接的间隔(默认0) ### mp:schedule 此指令可执行比原版`schedule`更强大的调度任务,它允许携带命令执行源,并使用命令块以更高效地完成任务。 不仅如此,它还支持持久化数据,不会因为更新游戏周期而消失 用法: ``` mp:schedule (append | replace | loop) ``` ``: 调度任务名称,如果需要清除任务,可使用`/schedule clear mapperplugin:` ``: 指定等待的时间 `(append | replace | loop)`: 指定是否取代还在等待执行的函数或函数标签。(append:添加新的计划) (replace:取代现有计划) (loop:重复计划) ``: 命令块参数类型 ``` #命令块格式 #通过{}以及;进行命令组合,如: execute as @n[type=minecraft:pig] run mp:schedule demo 10t append { say 1; say 2; } #它将在10tick后以@n[type=minecraft:pig]为执行者,分别执行 'say 1' 以及 'say 2' #你也可以在命令块内嵌套多个命令块,如: mp:schedule demo 10t append { say 1; say 2; mp:schedule demo1 10t append { say 3; say 4; mp:schedule demo2 10t append { say 5; say 6; }; }; say happy;} #执行结果顺序如下: #---10t--- say 1 say 2 say happy #---20t--- say 3 say 4 #---30t--- say 5 say 6 #在 mcfunction 中,填写命令块时可以不写 '\' 来进行换行(仅在命令块内) #如: demo.mcfunction tellraw @a ["begin"] mp:schedule demo 10t append { say 1; say 2; mp:schedule demo1 10t append { say 3; say 4; }; } tellraw @a ["middle \ "] tellraw @a ["end"] #请注意:请不要在命令块内输入特殊文本字符 '{' '}'(除非你能确保他们能完整) 以及 ';' #下面是错误示范 mp:schedule error 10t append { say >>{ DEMO; say this;that; }; #它将错误解析 ?Unclosed brackets: say >>{ DEMO ?Unkown command: that ``` 清除调度任务与原版一致,但多了一个标识符`mapperplugin:` ``` #假设您执行了下面这行命令: mp:schedule demo_loop 10t loop {say 1;} #你需要调用此代码来清除,否则它将保持循环 schedule clear mapperplugin:demo_loop ``` ** * ## 更新日志 `2025/05/15` `1.4.4` - 修复 `mp:schedule` 在执行 `LOOP` 任务计划时可以以0时刻执行 - 补充 `mp:schedule` 执行时的命令反馈 - 补充 文档缺失的部分详解等(`mp:camera` `mp:gui` `mp:testfor`) `2025/05/11` `1.4.3` - 新增 `mp:schedule` 可执行比原版更强大的调度任务 - 补充 `` 参数提供解析和建议 `2025/04/21` `1.4.2` - 修复 `mp:mouse event ... as target` 无法选中屏幕上半部分实体的问题 - 修复 `mp:input` 可能导致与部分模组不兼容的问题 - 补充 `mp:rotate` 中的用法(/rotate ) `2025/04/15` `1.4.1` - 新增 `mp:camera fov_effect_scale` 用于修改视场角效果 - 修改 `mp:motion` 指令树结构,新增`set`以及`append` - 修改 `mp:sound` 中`Volume`与`Pitch`参数阈值由原来的`[0.5f,1.5f]`改为`[0.0f,2.0f]` - 修复 `mp:shader` 中`Path`参数错误导致无效的问题 - 移除 开发过程遗留的调试代码 `2025/04/10` `1.4.0` - 新增 `mp:mouse` 提供有关光标功能 - 新增 `mp:sound` 相比原版 `/playsound` 提供更多的参数调整 - 新增 `mp:camera normalize` 使相机实体朝向归一化 - 新增 `mp:camera option offset` 使相机偏移位置(测试) - 新增 `mp:rotate` 与新版本`/rotate` 有相似功能 - 新增 `mp:input permission` 中添加 `PLAYER_LIST` 以及 `SPRINT` - 新增 `mp:input operate` 相关选项 - 新增 `mp:hud send` `PlayerHeadPart` 现在已支持可变更文本`$(key)` - 修改 `mp:testfor raycast` 最大距离由原来的 `64` 改为 `128`,同时移除冗杂的命令树 - 修改 `mp:shader` 优化了填入 `Path` 的参数并提供了建议 - 修复 `mp:camera` 与 `mp:particle` 输入部分参数时会自动补正的问题 - 修复 多段跳在空中落下时无法跳跃的问题 `2025/03/26` `1.3.3` - 修复 `mp:gui` 指定`mc://`协议时对于MacOS用户无法正常传入的问题 - 修复 `mp:camera` 特定情况下移动时出现坐标偏移的问题 `2025/03/15` `1.3.2` - 新增 `mp:shader unifornm` 功能,用于实现传入uniform值 - 新增 `mp:player` 用于更改与玩家相关的内容 `2025/03/01` `1.2.3` - 修复 `mp:gui` 指令来关闭玩家界面时,出现的小问题 - 新增 `mp:gui` 指令部分,现在可以通过 `服务器storage `传入js函数中,同时新增JS接口 `playerList` - 新增 `mp:testfor` 用于检测或返回某些功能 - 新增 如果MCEF初始化时出现问题,将在游戏初始化完毕后弹出警告 - 新增 模组配置界面新增两项更改 `2025/02/17` `1.2.2` 纠正了文档中的错误,并补充了一些缺失的信息 - 新增 物品组件 `mapperplugin:attack_event` `mapperplugin:use_event` - 修复 `自定义HUD配置文件` 中,选填但是会出现错误的问题,`ItemPart` 新增自定义物品模型数据,并且修复了LayerDrawComponent的 `animation` - 修复 `mp:animate` 无法停止动画的问题 - 修复 `mp:pose` 的服务端与客户端未同步问题 - 修复 游戏规则 `playerDamageInvulnerable` 更改无效的问题 - 修改 简化了粒子 `mapperplugin:abstract_custom_particle` 的参数需求,现在有默认值 - 修改 重写了 `mp:particle sphere` 图形生成的算法 - 移除 `mp:nbt` ,现 `/data` 允许修改玩家数据 - 移除 `mp:ride` ,现 `/ride` 允许骑乘玩家(但取消骑乘时仍然有未同步的问题) `2025/01/30` `1.2.1` - 新增 `mp:hud`,渲染自定义HUD给玩家,并以数据包的形式储存 - 优化了自定义GUI渲染 `2024/12/23` `1.2.0` 现在如果玩家重进世界,则经服务端更改的一切客户端相关配置将会重置(如 `mp:camera`). - 新增 `mp:animate` 允许播放玩家动画,支持 `GeckoLib` `EmoteCraft` `Minecraft BE Animation` 动画解析. - 新增 `mp:reconfig_cef` 客户端指令,用于重新配置Cef. - 修改 `mp:shader` 所需的 `` 改为更标准的格式. `2024/12/09` `1.1.9` 优化相关网络通信逻辑,以及文档描述 - 修改 `NBT Options` 键名,并新增 `sneak` - 补充 `mp:aimassist` 参数 `FocusTime(0~2000L ms)` ,针对`mp:camera` 标记瞄准时的聚焦时间(影响玩家的移动轨迹) - 新增 `mp:gui send` 用于传递执行JS,更改了原有指令树结构 - 新增 `mp:camera roll` 用于修改相机翻滚角度 - 新增 模组配置界面,需要安装`ModMenu` 删改了一些代码逻辑 `2024/11/27` `1.1.8` 修复了未装`MCEF`时会一直警告信息的漏洞 - 新增 `mp:target` 用于标记实体或进行寻路导航 `2024/11/22` `1.1.7` - 新增 `mapperplugin:abstract_custom_particle` 粒子,用于自定义粒子的模板. - 新增 `mp:hotbar` 用来控制玩家的槽位栏状态. 重写了`mp:input` 输入权限逻辑 修复了一小部分BUG `2024/11/09` `1.1.6` - 新增 `mp:camera option shake`,用于设置相机抖动效果. - 新增 对于`mp:camera`中的 `set` `option zoom`中添加了新参数需求`easing`. - 新增 `mp:input`,用于控制玩家操作权限等. - 新增 `mp:aimassist`,用于更改辅助瞄准功能. `2024/10/13` `1.1.5` mp:motion 指令添加了新参数需求. 补充了更全面的指令提示和反馈. - 新增 `mp:mapgenerator` 指令以生成地图画. - 新增 `mp:stats` 指令以更新玩家状态 `JUMP` `2024/10/12` `1.1.4` 修复了对于未安装`MCEF (Minecraft Chromium Embedded Framework)`前置模组会导致客户端崩溃且无法启动的情况. ?优化了部分代码内容. - 新增 `mp:camera option lock_rotation`,用于锁定玩家视角朝向. - 新增 展示实体类`DisplayEntity` 的`Pitch`值不再受原版限制([-90F,90F]). `2024/10/06` `1.1.3` - 新增 `mp:particle` 用于绘画线段、椭球体等 删改了部分代码 `2024/10/01` `1.1.2` - 玩家属性`mapperplugin:player.multi_jump` 用于更改多段跳能力(默认1.0,低于1.0无效,返回整数型,最大值6.0),替换原来的`mapperplugin:generic.double_jump`. 优化了自定义GUI渲染逻辑,且现在使用`JS接口`时不再需要第一次初始化. - 现已兼容服务端,而不是仅支持单人和主机. `2024/09/27` `1.1.1` - 新增 mp:camera 更多的选项,提供更多功能 - 游戏规则 `mobDamageInvulnerable` 更改生物实体是否启用伤害间隔(默认 true) (不针对玩家) `playerDamageInvulnerable` 更改玩家实体是否启用伤害间隔(默认 true) (针对玩家) `2024/09/08` `1.1.0` - 新增 mp:ride 该指令除了拥有`ride`原有功能外,还允许了玩家作为被骑乘者. - 新增 mp:shader 该指令用于自定义设置客户端渲染画面的 `shader`. - 新增 游戏规则 `mobDamageInvulnerable` 用于修改实体是否拥有伤害无敌间隔. - 暂定(未完成) 新增玩家属性 `mapperplugin:generic.double_jump` 用于更改玩家多段跳能力. - 优化 `Commands` 现在大多数指令将会有命令执行反馈 `sendFeedBack()`. `2024/08/30` `1.0.9` camera -修复了玩家朝向与摄像机朝向设置逻辑 gui -修复了在启用时有小概率因为`.getRender()`问题导致的游戏崩溃 其他 -... `2024/08/27` `1.0.8` pathfinder -在寻路前进行了安全检查 -优化算法逻辑 camera -修复了玩家朝向与摄像机朝向不同导致选择点不同的bug gui -在执行请求时