粒子 · LSE¶
协议层粒子形状:点/线/环/面/框/多面体,支持平移、旋转、缩放、跟随。
粒子形状 · 创建¶
粒子形状按世界坐标定义,创建后由库自己按 tick 发射与重发,你只管控制它。七种形状:
| 函数 | 摆出来的样子 |
|---|---|
particleCreatePoint |
一个点 |
particleCreateLine |
两点之间的一条线 |
particleCreateRect |
矩形边框(环线) |
particleCreatePlane |
填满的矩形面(网格) |
particleCreateBox |
长方体的 12 条边线框 |
particleCreateBoxFaces |
长方体的六个面都填满 |
particleCreatePoly |
自定义多面体(自己给顶点和边) |
创建参数里有几个是共通的:
owner:创建者名字标签。只用于particleGetInfo的诊断显示,不影响谁能看到这个形状 —— 可见性由particleSetVisible决定。dimId:维度,0主世界 /1下界 /2末地。step:采样步长(格),也就是相邻两个粒子之间大约隔多远;小于0.25会按0.25处理。步长越小粒子越密、发包越多。effect:粒子效果名,如minecraft:endrod、minecraft:heart_particle;空串会用默认的minecraft:endrod。interval:整批重发间隔(tick)。粒子本身是瞬态的,靠按这个间隔重发维持"常驻"的观感;小于1会按1处理。lifetime:存活时长(tick);0= 永久,到时间后形状自动消失。
摆一个粒子点¶
particleCreatePoint(owner, dimId, x, y, z, effect, interval, lifetime)
- 参数:
owner:String
创建者名字标签,只用于particleGetInfo的诊断显示,不影响谁能看到这个形状 —— 可见性由particleSetVisible决定dimId:Integer
维度,0主世界 /1下界 /2末地effect:String
粒子效果名,如minecraft:endrod、minecraft:heart_particle;空串会用默认的minecraft:endrodinterval:Integer
整批重发间隔(tick)。粒子本身是瞬态的,靠按这个间隔重发维持"常驻"的观感;小于1会按1处理lifetime:Integer
存活时长(tick);0= 永久,到时间后形状自动消失x:Float
粒子所在的世界坐标 Xy:Float
粒子所在的世界坐标 Yz:Float
粒子所在的世界坐标 Z- 返回值:形状 id(从 1 开始自增);失败返回负数
- 返回值类型:
Integer -
示例:
摆一条粒子线¶
particleCreateLine(owner, dimId, x1, y1, z1, x2, y2, z2, step, effect, interval, lifetime)
- 参数:
owner:String
创建者名字标签,只用于particleGetInfo的诊断显示,不影响谁能看到这个形状 —— 可见性由particleSetVisible决定dimId:Integer
维度,0主世界 /1下界 /2末地step:Float
采样步长(格),也就是相邻两个粒子之间大约隔多远;小于0.25会按0.25处理。步长越小粒子越密、发包越多effect:String
粒子效果名,如minecraft:endrod、minecraft:heart_particle;空串会用默认的minecraft:endrodinterval:Integer
整批重发间隔(tick)。粒子本身是瞬态的,靠按这个间隔重发维持"常驻"的观感;小于1会按1处理lifetime:Integer
存活时长(tick);0= 永久,到时间后形状自动消失x1:Float
第一个端点的世界坐标 Xy1:Float
第一个端点的世界坐标 Yz1:Float
第一个端点的世界坐标 Zx2:Float
第二个端点的世界坐标 Xy2:Float
第二个端点的世界坐标 Yz2:Float
第二个端点的世界坐标 Z- 返回值:形状 id;失败返回负数。锚点是这条线的中点:之后的旋转、缩放都绕中点进行
- 返回值类型:
Integer -
示例:
摆一个粒子矩形边框¶
particleCreateRect(owner, dimId, cx, cy, cz, w, h, axis, step, effect, interval, lifetime)
- 参数:
owner:String
创建者名字标签,只用于particleGetInfo的诊断显示,不影响谁能看到这个形状 —— 可见性由particleSetVisible决定dimId:Integer
维度,0主世界 /1下界 /2末地step:Float
采样步长(格),也就是相邻两个粒子之间大约隔多远;小于0.25会按0.25处理。步长越小粒子越密、发包越多effect:String
粒子效果名,如minecraft:endrod、minecraft:heart_particle;空串会用默认的minecraft:endrodinterval:Integer
整批重发间隔(tick)。粒子本身是瞬态的,靠按这个间隔重发维持"常驻"的观感;小于1会按1处理lifetime:Integer
存活时长(tick);0= 永久,到时间后形状自动消失cx:Float
矩形中心的世界坐标 Xcy:Float
矩形中心的世界坐标 Ycz:Float
矩形中心的世界坐标 Zw:Float
矩形沿平面第一个轴的尺寸(宽);负数按0处理h:Float
矩形沿平面第二个轴的尺寸(高);负数按0处理axis:Integer
矩形所在平面:0=XY(w沿 X、h沿 Y)、1=YZ(w沿 Z、h沿 Y)、2=XZ(w沿 X、h沿 Z);其它值按0处理- 返回值:形状 id;失败返回负数。锚点是矩形中心
- 返回值类型:
Integer -
示例:
摆一个粒子填充面¶
particleCreatePlane(owner, dimId, cx, cy, cz, w, h, axis, step, effect, interval, lifetime)
参数与 particleCreateRect 完全相同。
- 参数:
owner:String
创建者名字标签,只用于particleGetInfo的诊断显示,不影响谁能看到这个形状 —— 可见性由particleSetVisible决定dimId:Integer
维度,0主世界 /1下界 /2末地cx:Float
平面中心的世界坐标 Xcy:Float
平面中心的世界坐标 Ycz:Float
平面中心的世界坐标 Zw:Float
平面第一个轴的尺寸;负数按0处理h:Float
平面第二个轴的尺寸;负数按0处理axis:Integer
平面朝向,0=XY1=YZ2=XZ;其它值按0处理step:Float
采样步长(格),也就是相邻两个粒子之间大约隔多远;小于0.25会按0.25处理。步长越小粒子越密、发包越多。面形状要慎调小step—— 粒子数量按面积增长effect:String
粒子效果名,如minecraft:endrod、minecraft:heart_particle;空串会用默认的minecraft:endrodinterval:Integer
整批重发间隔(tick)。粒子本身是瞬态的,靠按这个间隔重发维持"常驻"的观感;小于1会按1处理lifetime:Integer
存活时长(tick);0= 永久,到时间后形状自动消失- 返回值:形状 id;失败返回负数。锚点是平面中心
- 返回值类型:
Integer -
示例:
摆一个粒子长方体线框¶
particleCreateBox(owner, dimId, cx, cy, cz, hx, hy, hz, step, effect, interval, lifetime)
- 参数:
owner:String
创建者名字标签,只用于particleGetInfo的诊断显示,不影响谁能看到这个形状 —— 可见性由particleSetVisible决定dimId:Integer
维度,0主世界 /1下界 /2末地step:Float
采样步长(格),也就是相邻两个粒子之间大约隔多远;小于0.25会按0.25处理。步长越小粒子越密、发包越多effect:String
粒子效果名,如minecraft:endrod、minecraft:heart_particle;空串会用默认的minecraft:endrodinterval:Integer
整批重发间隔(tick)。粒子本身是瞬态的,靠按这个间隔重发维持"常驻"的观感;小于1会按1处理lifetime:Integer
存活时长(tick);0= 永久,到时间后形状自动消失cx:Float
长方体中心的世界坐标 Xcy:Float
长方体中心的世界坐标 Ycz:Float
长方体中心的世界坐标 Zhx:Float
X 方向的半尺寸(格子数),即边长的一半;负数按0处理hy:Float
Y 方向的半尺寸(格子数),即边长的一半;负数按0处理hz:Float
Z 方向的半尺寸(格子数),即边长的一半;负数按0处理- 返回值:形状 id;失败返回负数。锚点是长方体中心
- 返回值类型:
Integer -
示例:
摆一个粒子六面长方体¶
particleCreateBoxFaces(owner, dimId, cx, cy, cz, hx, hy, hz, step, effect, interval, lifetime)
参数与 particleCreateBox 完全相同。
- 参数:
owner:String
创建者名字标签,只用于particleGetInfo的诊断显示,不影响谁能看到这个形状 —— 可见性由particleSetVisible决定dimId:Integer
维度,0主世界 /1下界 /2末地cx:Float
长方体中心的世界坐标 Xcy:Float
长方体中心的世界坐标 Ycz:Float
长方体中心的世界坐标 Zhx:Float
X 方向的半尺寸;负数按0处理hy:Float
Y 方向的半尺寸;负数按0处理hz:Float
Z 方向的半尺寸;负数按0处理step:Float
采样步长(格),也就是相邻两个粒子之间大约隔多远;小于0.25会按0.25处理。步长越小粒子越密、发包越多。六个面都要填,粒子数量是线框的很多倍effect:String
粒子效果名,如minecraft:endrod、minecraft:heart_particle;空串会用默认的minecraft:endrodinterval:Integer
整批重发间隔(tick)。粒子本身是瞬态的,靠按这个间隔重发维持"常驻"的观感;小于1会按1处理lifetime:Integer
存活时长(tick);0= 永久,到时间后形状自动消失- 返回值:形状 id;失败返回负数。锚点是长方体中心
- 返回值类型:
Integer -
示例:
摆一个自定义多面体¶
particleCreatePoly(owner, dimId, verts, edges, step, effect, interval, lifetime)
- 参数:
owner:String
创建者名字标签,只用于particleGetInfo的诊断显示,不影响谁能看到这个形状 —— 可见性由particleSetVisible决定dimId:Integer
维度,0主世界 /1下界 /2末地step:Float
采样步长(格),也就是相邻两个粒子之间大约隔多远;小于0.25会按0.25处理。步长越小粒子越密、发包越多effect:String
粒子效果名,如minecraft:endrod、minecraft:heart_particle;空串会用默认的minecraft:endrodinterval:Integer
整批重发间隔(tick)。粒子本身是瞬态的,靠按这个间隔重发维持"常驻"的观感;小于1会按1处理lifetime:Integer
存活时长(tick);0= 永久,到时间后形状自动消失verts:String
顶点串,世界坐标,格式"x,y,z;x,y,z;...",至少 2 个顶点edges:String
边串,顶点索引对,格式"i-j;i-j",索引从0开始、必须落在顶点范围内- 返回值:形状 id;顶点少于 2 个、边串里一条可用边都没有、或索引越界时返回
-1。锚点是全部顶点的质心,旋转与缩放绕质心进行 - 返回值类型:
Integer -
示例:
粒子形状 · 移动与变换¶
所有变换都绕形状的锚点进行(线=中点、矩形/面/长方体=中心、多面体=质心)。
瞬移粒子形状¶
particleSetPos(id, x, y, z)
- 参数:
id:Integer
形状 idx:Float
形状锚点的新世界坐标 Xy:Float
形状锚点的新世界坐标 Yz:Float
形状锚点的新世界坐标 Z- 返回值:
true成功;id 不存在false。下一次发射时整批粒子出现在新位置 - 返回值类型:
Boolean -
示例:
相对移动形状¶
particleMoveBy(id, dx, dy, dz)
- 参数:
id:Integer
形状 iddx:Float
X 方向的位移量(格)dy:Float
Y 方向的位移量(格)dz:Float
Z 方向的位移量(格)- 返回值:
true成功;id 不存在false - 返回值类型:
Boolean -
示例:
让形状缓动滑到目标点¶
particleMoveTo(id, x, y, z, durationTicks)
- 参数:
id:Integer
形状 idx:Float
目标锚点世界坐标 Xy:Float
目标锚点世界坐标 Yz:Float
目标锚点世界坐标 ZdurationTicks:Integer
滑行时长(tick);<= 0= 立刻到达(等价particleSetPos)- 返回值:
true表示已经开始移动;id 不存在false。整面、整体一起移动 - 返回值类型:
Boolean -
示例:
设置形状三轴欧拉角¶
particleSetRot(id, rx, ry, rz)
- 参数:
id:Integer
形状 idrx:Float
X 轴的旋转角(度),绕锚点旋转ry:Float
Y 轴的旋转角(度),绕锚点旋转rz:Float
Z 轴的旋转角(度),绕锚点旋转- 返回值:
true成功;id 不存在false。设置的是绝对角度,会覆盖particleSpin已经累计出来的角度 - 返回值类型:
Boolean -
示例:
让形状持续自转¶
particleSpin(id, sx, sy, sz)
- 参数:
id:Integer
形状 idsx:Float
X 轴的自旋速率(度/tick);0,0,0= 停止自转sy:Float
Y 轴的自旋速率(度/tick);0,0,0= 停止自转sz:Float
Z 轴的自旋速率(度/tick);0,0,0= 停止自转- 返回值:
true成功;id 不存在false - 返回值类型:
Boolean -
示例:
以锚点为中心缩放形状¶
particleSetScale(id, s)
- 参数:
id:Integer
形状 ids:Float
缩放倍数;小于等于0.01的值按0.01处理- 返回值:
true成功;id 不存在false - 返回值类型:
Boolean -
示例:
让形状跟随玩家¶
particleFollow(id, uuid, offX, offY, offZ)
- 参数:
id:Integer
形状 iduuid:String
要跟随的玩家 uuid 字符串(不是玩家名);传进来的字符串解析不出 uuid 会被直接拒绝offX:Float
相对玩家的 X 方向偏移量(格),例如脚下光圈用0, 0.3, 0offY:Float
相对玩家的 Y 方向偏移量(格),例如脚下光圈用0, 0.3, 0offZ:Float
相对玩家的 Z 方向偏移量(格),例如脚下光圈用0, 0.3, 0- 返回值:
true成功;uuid不是合法 uuid、或 id 不存在false - 返回值类型:
Boolean -
示例:
解除跟随¶
particleUnfollow(id)
- 参数:
id:Integer
形状 id- 返回值:
true成功;id 不存在false。解除后锚点回到形状自己记录的坐标(跟随时并没有改写它),所以形状会跳回创建/上次particleSetPos的位置 - 返回值类型:
Boolean -
示例:
粒子形状 · 外观与可见性¶
更换粒子效果¶
particleSetEffect(id, effect)
- 参数:
id:Integer
形状 ideffect:String
新的粒子效果名,如minecraft:flame;空串被拒绝- 返回值:
true成功;effect为空或 id 不存在false。从下一次发射开始生效 - 返回值类型:
Boolean -
示例:
限定粒子可见玩家¶
particleSetVisible(id, playersCsv)
- 参数:
id:Integer
形状 idplayersCsv:String
逗号分隔的玩家 uuid 串,如"uuid1,uuid2";空串 = 形状所在维度里所有人都能看到。解析不出 uuid 的项会被丢掉- 返回值:
true成功;id 不存在false - 返回值类型:
Boolean -
示例:
改粒子重发间隔¶
particleSetInterval(id, ticks)
- 参数:
id:Integer
形状 idticks:Integer
新的重发间隔(tick);小于1会按1处理- 返回值:
true成功;id 不存在false - 返回值类型:
Boolean -
示例:
设置粒子逐玩家裁剪半径¶
particleSetViewDistance(id, blocks)
- 参数:
id:Integer
形状 idblocks:Integer
裁剪半径(格),玩家离得远就不发;0= 不裁剪(负值按0处理)- 返回值:
true成功;id 不存在false。创建时的默认值:点形状是0(不裁剪),其余形状是96格 - 返回值类型:
Boolean -
示例:
重设粒子存活时长¶
particleSetLifetime(id, ticks)
- 参数:
id:Integer
形状 idticks:Integer
从现在起还能存活多少 tick;0= 改成永久- 返回值:
true成功;id 不存在false - 返回值类型:
Boolean -
示例:
粒子形状 · 查询与销毁¶
立刻销毁粒子形状并停发¶
particleDestroy(id)
- 参数:
id:Integer
形状 id- 返回值:确实销毁了
true;id 不存在false - 返回值类型:
Boolean -
示例:
读取粒子形状摘要¶
particleGetInfo(id)
- 参数:
id:Integer
形状 id- 返回值:摘要文字(诊断探针;形状类型、
owner、维度、锚点、旋转、自旋、缩放、粒子点数、step、效果名、可见范围、视距、重发间隔、结束时间、是否正在平滑移动);id 不存在返回空字符串"" - 返回值类型:
String -
示例: