DebugShape(悬浮字与形状)· LSE¶
协议层形状与悬浮字;不生成实体,直接发形状包。
快速开始¶
const shapeCreateLine = ll.import("HologramLib", "shapeCreateLine");
const shapeSetColor = ll.import("HologramLib", "shapeSetColor");
const shapeDraw = ll.import("HologramLib", "shapeDraw");
// 一条从 (100,65,100) 到 (110,65,110) 的红线,对全体在线玩家显示
const lineId = shapeCreateLine(100, 65, 100, 110, 65, 110);
shapeSetColor(lineId, 1.0, 0.2, 0.2, 1.0); // RGBA,四个分量都是 0.0 ~ 1.0
shapeDraw(lineId);
坐标一律是世界坐标;颜色一律是 0.0 ~ 1.0 的四个分量。
创建¶
创建一个文本形状¶
shapeCreateText(x, y, z, text)
- 参数:
x:Float
文本所在的世界坐标 Xy:Float
文本所在的世界坐标 Yz:Float
文本所在的世界坐标 Ztext:String
要显示的文本,支持§颜色代码与\n换行- 返回值:形状 id(从
1开始递增);<= 0表示创建失败 - 返回值类型:
Integer -
示例:
在两点之间画一条线段¶
shapeCreateLine(x1, y1, z1, x2, y2, z2)
- 参数:
x1:Float
起点世界坐标 Xy1:Float
起点世界坐标 Yz1:Float
起点世界坐标 Zx2:Float
终点世界坐标 Xy2:Float
终点世界坐标 Yz2:Float
终点世界坐标 Z- 返回值:形状 id;
<= 0表示创建失败 - 返回值类型:
Integer -
示例:
用两个对角点创建长方体线框¶
shapeCreateBox(x1, y1, z1, x2, y2, z2)
- 参数:
x1:Float
第一个角的世界坐标 Xy1:Float
第一个角的世界坐标 Yz1:Float
第一个角的世界坐标 Zx2:Float
对角的世界坐标 X(两个点的先后顺序无所谓,边长取两点的坐标差)y2:Float
对角的世界坐标 Yz2:Float
对角的世界坐标 Z- 返回值:形状 id;
<= 0表示创建失败 - 返回值类型:
Integer -
示例:
在指定坐标创建一个圆¶
shapeCreateCircle(x, y, z, scale)
- 参数:
x:Float
圆心世界坐标 Xy:Float
圆心世界坐标 Yz:Float
圆心世界坐标 Zscale:Float
圆的大小,相当于创建时就设好形状缩放,之后也能用shapeSetScale改- 返回值:形状 id;
<= 0表示创建失败 - 返回值类型:
Integer -
示例:
在指定坐标创建一个球¶
shapeCreateSphere(x, y, z, scale)
- 参数:
x:Float
球心世界坐标 Xy:Float
球心世界坐标 Yz:Float
球心世界坐标 Zscale:Float
球的大小,相当于创建时就设好形状缩放,之后也能用shapeSetScale改- 返回值:形状 id;
<= 0表示创建失败 - 返回值类型:
Integer -
示例:
画一个从起点指向终点的箭头¶
shapeCreateArrow(x1, y1, z1, x2, y2, z2)
- 参数:
x1:Float
箭尾世界坐标 Xy1:Float
箭尾世界坐标 Yz1:Float
箭尾世界坐标 Zx2:Float
箭头指向的世界坐标 Xy2:Float
箭头指向的世界坐标 Yz2:Float
箭头指向的世界坐标 Z- 返回值:形状 id;
<= 0表示创建失败 - 返回值类型:
Integer -
示例:
属性¶
修改文本形状的文字¶
shapeSetText(id, text)
- 参数:
id:Integer
形状 idtext:String
新的文本;只在文本形状上有意义,其它类型调了不会有变化- 返回值:写入成功
true;id不存在false - 返回值类型:
Boolean -
示例:
读取文本形状的文字¶
shapeGetText(id)
- 参数:
id:Integer
形状 id- 返回值:当前文本;
id不存在或不是文本形状时是空串"" - 返回值类型:
String -
示例:
移动形状到新的坐标¶
shapeSetLocation(id, x, y, z)
- 参数:
id:Integer
形状 idx:Float
新的世界坐标 Xy:Float
新的世界坐标 Yz:Float
新的世界坐标 Z- 返回值:成功
true;id不存在false - 返回值类型:
Boolean -
示例:
查询形状当前的坐标¶
shapeGetLocation(id)
- 参数:
id:Integer
形状 id- 返回值:
[x, y, z];id不存在时是空数组 - 返回值类型:
Array<Float> -
示例:
设置形状的红绿蓝与透明度¶
shapeSetColor(id, r, g, b, a)
- 参数:
id:Integer
形状 idr:Float
红色分量,0.0 ~ 1.0g:Float
绿色分量,0.0 ~ 1.0b:Float
蓝色分量,0.0 ~ 1.0a:Float
透明度分量,0.0 ~ 1.0- 返回值:成功
true;id不存在false - 返回值类型:
Boolean -
示例:
读回形状当前的颜色¶
shapeGetColor(id)
- 参数:
id:Integer
形状 id- 返回值:
[r, g, b, a],各分量0.0 ~ 1.0;id不存在时是空数组。颜色按 8 位保存,读回值可能与写入值差±1/255 - 返回值类型:
Array<Float> -
示例:
设置形状的缩放倍数¶
shapeSetScale(id, scale)
- 参数:
id:Integer
形状 idscale:Float
缩放倍数,1是创建时的大小- 返回值:成功
true;id不存在false - 返回值类型:
Boolean -
示例:
让形状若干秒后自动消失¶
shapeSetDuration(id, seconds)
- 参数:
id:Integer
形状 idseconds:Float
持续时间,单位秒。不调用这个函数 = 永久显示- 返回值:成功
true;id不存在false - 返回值类型:
Boolean -
示例:
设置形状所属的维度¶
shapeSetDimension(id, dimId)
- 参数:
id:Integer
形状 iddimId:Integer
维度编号 ——0主世界、1下界、2末地- 返回值:成功
true;id不存在false - 返回值类型:
Boolean -
示例:
把形状固定成三轴朝向¶
shapeSetRotation(id, pitch, yaw, roll)
- 参数:
id:Integer
形状 idpitch:Float
绕三个轴的旋转角度之一,单位度yaw:Float
绕三个轴的旋转角度之一,单位度roll:Float
绕三个轴的旋转角度之一,单位度- 返回值:成功
true;id不存在false - 返回值类型:
Boolean -
示例:
清掉旋转让形状面向镜头¶
shapeClearRotation(id)
- 参数:
id:Integer
形状 id- 返回值:成功
true;id不存在false - 返回值类型:
Boolean -
示例:
查询形状当前的旋转角度¶
shapeGetRotation(id)
- 参数:
id:Integer
形状 id- 返回值:
[pitch, yaw, roll](度);没设过旋转(仍然面向镜头)或id不存在时是空数组 - 返回值类型:
Array<Float> -
示例:
查询这个 id 是哪种形状¶
shapeGetShapeType(id)
- 参数:
id:Integer
形状 id- 返回值:类型编号:
0文本、1线、2盒、3圆、4球、5箭头;id不存在返回-1 - 返回值类型:
Integer -
示例:
设置文本底板的颜色¶
shapeSetBackgroundColor(id, r, g, b, a)
- 参数:
id:Integer
形状 idr:Float
底板红色分量,0.0 ~ 1.0g:Float
底板绿色分量,0.0 ~ 1.0b:Float
底板蓝色分量,0.0 ~ 1.0a:Float
底板透明度分量,0.0 ~ 1.0;不设置就是客户端默认色- 返回值:成功
true;id不存在或不是文本形状返回false - 返回值类型:
Boolean -
示例:
把文本底板恢复默认颜色¶
shapeClearBackgroundColor(id)
- 参数:
id:Integer
形状 id- 返回值:成功
true;id不存在或不是文本形状返回false - 返回值类型:
Boolean -
示例:
设置文本是否被方块遮挡¶
shapeSetDepthTest(id, enabled)
- 参数:
id:Integer
形状 idenabled:Booleantrue= 被方块 / 实体遮挡;false= 始终渲染(穿墙可见),也是默认行为- 返回值:成功
true;id不存在或不是文本形状返回false - 返回值类型:
Boolean -
示例:
显示¶
对所有在线玩家显示形状¶
shapeDraw(id)
- 参数:
id:Integer
形状 id- 返回值:已发出
true;id不存在false - 返回值类型:
Boolean -
示例:
只让某一名玩家看到形状¶
shapeDrawToPlayer(id, playerName)
- 参数:
id:Integer
形状 idplayerName:String
玩家名(LSE 的realName)。玩家不在线时不会有任何显示- 返回值:已发出
true;id不存在或玩家不在线false - 返回值类型:
Boolean -
示例:
只对某个维度显示形状¶
shapeDrawToDimension(id, dimId)
- 参数:
id:Integer
形状 iddimId:Integer
维度编号 ——0主世界、1下界、2末地- 返回值:已发出
true;id不存在false - 返回值类型:
Boolean -
示例:
一次显示多个形状¶
shapeDrawBatch(ids)
- 参数:
ids:Array<Integer>
形状 id 数组;数组里的 id 不存在会被跳过(数组为空也返回true)- 返回值:已发出
true - 返回值类型:
Boolean -
示例:
const createText = ll.import("HologramLib", "shapeCreateText"); const createLine = ll.import("HologramLib", "shapeCreateLine"); const drawBatch = ll.import("HologramLib", "shapeDrawBatch"); const a = createText(100, 66, 100, "§eA"); const b = createLine(100, 65, 100, 110, 65, 110); drawBatch([a, b]);
对所有玩家隐藏形状¶
shapeRemove(id)
- 参数:
id:Integer
形状 id- 返回值:成功
true;id不存在false - 返回值类型:
Boolean -
示例:
只让某一名玩家看不到形状¶
shapeRemoveToPlayer(id, playerName)
- 参数:
id:Integer
形状 idplayerName:String
玩家名;玩家不在线返回false- 返回值:成功
true;id不存在或玩家不在线false - 返回值类型:
Boolean -
示例:
让某个维度的玩家看不到形状¶
shapeRemoveToDimension(id, dimId)
- 参数:
id:Integer
形状 iddimId:Integer
维度编号 ——0主世界、1下界、2末地- 返回值:成功
true;id不存在false - 返回值类型:
Boolean -
示例:
把改过的属性重发给观看者¶
shapeUpdate(id)
- 参数:
id:Integer
形状 id- 返回值:
id存在就返回true;形状还没显示过时不做任何事(也不会报错),id不存在返回false - 返回值类型:
Boolean -
示例:
const create = ll.import("HologramLib", "shapeCreateText"); const setText = ll.import("HologramLib", "shapeSetText"); const update = ll.import("HologramLib", "shapeUpdate"); const id = create(100, 66, 100, "§e倒计时: 10"); ll.import("HologramLib", "shapeDraw")(id); setText(id, "§e倒计时: 9"); update(id); // 只改文字不会自己上屏,要重发
把改过的属性重发给某名玩家¶
shapeUpdateToPlayer(id, playerName)
- 参数:
id:Integer
形状 idplayerName:String
玩家名;玩家不在线返回false- 返回值:
id存在返回true(没显示过时不发);id不存在或玩家不在线false - 返回值类型:
Boolean -
示例:
把改过的属性重发给某个维度¶
shapeUpdateToDimension(id, dimId)
- 参数:
id:Integer
形状 iddimId:Integer
维度编号 ——0主世界、1下界、2末地- 返回值:
id存在返回true(没显示过时不发);id不存在false - 返回值类型:
Boolean -
示例:
查询¶
找出某个点附近的文本形状¶
shapeFindTextByLocation(x, y, z, radius)
- 参数:
x:Float
要查询的中心世界坐标 Xy:Float
要查询的中心世界坐标 Yz:Float
要查询的中心世界坐标 Zradius:Float
查询半径(含边界);只有文本形状会参与匹配,线 / 盒 / 圆 / 球 / 箭头不返回- 返回值:命中的文本形状 id 数组;一个都没有时是空数组
- 返回值类型:
Array<Integer> -
示例:
按内容查找附近的文本形状¶
shapeFindTextByLocationAndContent(x, y, z, radius, text)
- 参数:
x:Float
中心世界坐标 Xy:Float
中心世界坐标 Yz:Float
中心世界坐标 Zradius:Float
查询半径(含边界)text:String
要比对的完整文本(完全相等才算命中)- 返回值:第一个命中的文本形状 id;没找到返回
-1 - 返回值类型:
Integer -
示例:
列出当前所有形状的 id¶
shapeGetAllShapeIds()
- 返回值:全部形状 id(所有类型);一个形状都没有时是空数组
- 返回值类型:
Array<Integer> -
示例:
判断形状 id 是否还存在¶
shapeExists(id)
- 参数:
id:Integer
形状 id- 返回值:存在
true;不存在false - 返回值类型:
Boolean -
示例:
销毁¶
从两端一起删掉形状¶
shapeDestroy(id)
- 参数:
id:Integer
形状 id- 返回值:删除成功
true;id不存在false - 返回值类型:
Boolean -
示例:
删掉当前所有形状¶
shapeDestroyAll()
- 返回值:没有返回值;调用后客户端上残留的形状会一并消失
- 返回值类型:
Null -
示例:
一次删掉一批形状¶
shapeDestroyBatch(ids)
- 参数:
ids:Array<Integer>
形状 id 数组;数组里不存在的 id 会被跳过(数组为空也返回true)- 返回值:已处理
true - 返回值类型:
Boolean -
示例:
注意事项¶
- 参数要按签名给全。LSE 侧没有默认值:少给或多给参数,调用会直接拿到失败值(
Boolean得false、Integer得0、String得空串),不会有异常提示。 - 改完属性要重发:
shapeSetText/shapeSetLocation/shapeSetColor/shapeSetScale/shapeSetRotation/shapeSetBackgroundColor/shapeSetDepthTest/shapeSetDimension都只改服务端记的值,已经显示的形状要再调shapeUpdate(或shapeUpdateToPlayer/shapeUpdateToDimension),或者直接再shapeDraw一次。 - 文本形状专属的三项:背景框颜色(
shapeSetBackgroundColor)、穿墙开关(shapeSetDepthTest)、三轴旋转的朝向开关。线 / 盒 / 圆 / 球 / 箭头调前两个会直接返回false。 - 颜色按 8 位保存:写入
0.5后用shapeGetColor读回可能是0.498或0.502,比较颜色时不要用严格相等。 shapeSetDuration是倒计时删除:设了以后客户端会在时间到时自己把形状删掉,要做永久显示就不要调用它。- 可见范围由显示函数决定:
shapeDraw发给所有在线玩家(不限维度),shapeDrawToDimension只发给该维度,shapeDrawToPlayer只发给那名玩家;之后玩家进服时的自动补发也沿用最后一次的设置。 - 玩家进服不用自己补发:这些形状只存在客户端内存里,玩家进服后由库自动补发(进服 1 秒、5 秒各一次,之后每 15 秒兜底重发)。
- 建议在主线程调用(服务端 tick、事件回调里)。
- 库没装或没加载时,
ll.import会返回null,直接调用会报错;可以先判空,或先调ll.hasExported("HologramLib", "shapeDraw")做能力检查。
快速开始¶
const holoCreate = ll.import("HologramLib", "holoCreate");
const holoAddLine = ll.import("HologramLib", "holoAddLine");
const holoSetScale = ll.import("HologramLib", "holoSetScale");
const holoDraw = ll.import("HologramLib", "holoDraw");
const holo = holoCreate(100.5, 66, 100.5);
holoAddLine(holo, "§e欢迎来到主城"); // § 颜色代码只作用于这一行
holoAddLine(holo, "在线: {online}"); // {online} 会替换成当前在线人数
holoSetScale(holo, 1.5); // 整块放大
holoDraw(holo); // 对全体在线玩家显示
渐变线的最小用法:
const gradientCreate = ll.import("HologramLib", "gradientCreate");
const gradientDraw = ll.import("HologramLib", "gradientDraw");
const trail = gradientCreate(100, 65, 100, 130, 70, 130, 20); // 20 段拼出来
gradientDraw(trail); // 默认红 → 蓝
悬浮字:创建¶
在指定坐标创建悬浮字¶
holoCreate(x, y, z)
- 参数:
x:Float
悬浮字所在的世界坐标 Xy:Float
悬浮字所在的世界坐标 Yz:Float
悬浮字所在的世界坐标 Z- 返回值:悬浮字 id(从
1开始递增);<= 0表示创建失败 - 返回值类型:
Integer -
示例:
删掉一块悬浮字并同步客户端¶
holoDestroy(id)
- 参数:
id:Integer
悬浮字 id- 返回值:删除成功
true;id不存在false - 返回值类型:
Boolean -
示例:
删掉当前所有悬浮字¶
holoDestroyAll()
- 返回值:没有返回值
- 返回值类型:
Null -
示例:
悬浮字:行与内容¶
在末尾追加一行文字¶
holoAddLine(id, text)
- 参数:
id:Integer
悬浮字 idtext:String
这一行的文本,可以用§颜色代码和{变量}- 返回值:追加成功
true;id不存在false - 返回值类型:
Boolean -
示例:
修改某一行的文字¶
holoSetLineText(id, lineIndex, text)
- 参数:
id:Integer
悬浮字 idlineIndex:Integer
行号,从0开始text:String
新的文本- 返回值:成功
true;id不存在或行号越界false - 返回值类型:
Boolean -
示例:
给某一行设置轮播内容池¶
holoSetLinePool(id, lineIndex, content, intervalMs)
- 参数:
id:Integer
悬浮字 idlineIndex:Integer
行号,从0开始content:Array<String>
候选内容数组;传空数组 = 清除内容池,这一行回到holoSetLineText设的文本intervalMs:Integer
轮播间隔,单位毫秒。池里只有 1 项、或intervalMs <= 0时不轮播,固定显示第 0 项- 返回值:设置成功
true;id不存在或行号越界false - 返回值类型:
Boolean -
示例:
设置某一行是否解析变量¶
holoSetLineParseVariables(id, lineIndex, enabled)
- 参数:
id:Integer
悬浮字 idlineIndex:Integer
行号,从0开始enabled:Booleantrue= 解析变量(默认);false= 这一行的{}按字面量原样显示- 返回值:设置成功
true;id不存在或行号越界false - 返回值类型:
Boolean -
示例:
删掉某一行并让后续行前移¶
holoRemoveLine(id, lineIndex)
- 参数:
id:Integer
悬浮字 idlineIndex:Integer
要删除的行号,从0开始- 返回值:删除成功
true;id不存在或行号越界false - 返回值类型:
Boolean -
示例:
清空所有行并撤掉显示¶
holoClearLines(id)
- 参数:
id:Integer
悬浮字 id- 返回值:成功
true;id不存在false - 返回值类型:
Boolean -
示例:
查询悬浮字当前的行数¶
holoGetLineCount(id)
- 参数:
id:Integer
悬浮字 id- 返回值:行数;
id不存在返回0 - 返回值类型:
Integer -
示例:
悬浮字:整块样式¶
设置整块文字的颜色¶
holoSetColor(id, r, g, b, a)
- 参数:
id:Integer
悬浮字 idr:Float
红色分量,0.0 ~ 1.0g:Float
绿色分量,0.0 ~ 1.0b:Float
蓝色分量,0.0 ~ 1.0a:Float
透明度分量,0.0 ~ 1.0- 返回值:成功
true;id不存在false - 返回值类型:
Boolean -
示例:
设置整块文字的缩放¶
holoSetScale(id, scale)
- 参数:
id:Integer
悬浮字 idscale:Float
缩放倍数,必须大于 0(1= 原始大小)- 返回值:成功
true;id不存在或scale <= 0返回false - 返回值类型:
Boolean -
示例:
设置文字底板的颜色¶
holoSetBackgroundColor(id, r, g, b, a)
- 参数:
id:Integer
悬浮字 idr:Float
底板红色分量,0.0 ~ 1.0g:Float
底板绿色分量,0.0 ~ 1.0b:Float
底板蓝色分量,0.0 ~ 1.0a:Float
底板透明度分量,0.0 ~ 1.0;不设置就是客户端默认色- 返回值:成功
true;id不存在false - 返回值类型:
Boolean -
示例:
把底板恢复成默认颜色¶
holoClearBackgroundColor(id)
- 参数:
id:Integer
悬浮字 id- 返回值:成功
true;id不存在false - 返回值类型:
Boolean -
示例:
设置悬浮字是否被方块遮挡¶
holoSetDepthTest(id, enabled)
- 参数:
id:Integer
悬浮字 idenabled:Booleantrue= 被方块 / 实体遮挡;false= 始终渲染(穿墙可见),也是默认行为- 返回值:成功
true;id不存在false - 返回值类型:
Boolean -
示例:
把整块文字固定成三轴朝向¶
holoSetRotation(id, pitch, yaw, roll)
- 参数:
id:Integer
悬浮字 idpitch:Float
绕三个轴的旋转角度之一,单位度yaw:Float
绕三个轴的旋转角度之一,单位度roll:Float
绕三个轴的旋转角度之一,单位度- 返回值:成功
true;id不存在false - 返回值类型:
Boolean -
示例:
清掉旋转让文字正对镜头¶
holoClearRotation(id)
- 参数:
id:Integer
悬浮字 id- 返回值:成功
true;id不存在false - 返回值类型:
Boolean -
示例:
悬浮字:位置与跟随¶
把悬浮字挪到新的坐标¶
holoSetLocation(id, x, y, z)
- 参数:
id:Integer
悬浮字 idx:Float
新的世界坐标 Xy:Float
新的世界坐标 Yz:Float
新的世界坐标 Z- 返回值:成功
true;id不存在false - 返回值类型:
Boolean -
示例:
把悬浮字迁到另一个维度¶
holoSetDimension(id, dimId)
- 参数:
id:Integer
悬浮字 iddimId:Integer
目标维度编号 ——0主世界、1下界、2末地- 返回值:成功
true;id不存在false - 返回值类型:
Boolean -
示例:
让悬浮字跟随某位玩家¶
holoSetFollowPlayer(id, playerName, offsetY)
- 参数:
id:Integer
悬浮字 idplayerName:String
要跟随的玩家名(LSE 的realName)offsetY:Float
在玩家脚位 Y 上再加的高度偏移- 返回值:成功
true;id不存在false - 返回值类型:
Boolean -
示例:
取消跟随并停在当前位置¶
holoClearFollowPlayer(id)
- 参数:
id:Integer
悬浮字 id- 返回值:成功
true;id不存在false - 返回值类型:
Boolean -
示例:
悬浮字:显示与刷新¶
对所有在线玩家显示悬浮字¶
holoDraw(id)
- 参数:
id:Integer
悬浮字 id- 返回值:已显示
true;id不存在(或没有内容可显示)false - 返回值类型:
Boolean -
示例:
只对某个维度显示悬浮字¶
holoDrawToDimension(id, dimId)
- 参数:
id:Integer
悬浮字 iddimId:Integer
维度编号 ——0主世界、1下界、2末地- 返回值:已显示
true;id不存在(或没有内容可显示)false - 返回值类型:
Boolean -
示例:
只给某一名玩家显示悬浮字¶
holoDrawToPlayer(id, playerName)
- 参数:
id:Integer
悬浮字 idplayerName:String
玩家名;玩家不在线时不会有任何显示- 返回值:已显示
true;id不存在、玩家不在线或没有内容可显示false - 返回值类型:
Boolean -
示例:
把悬浮字藏起来但保留内容¶
holoRemove(id)
- 参数:
id:Integer
悬浮字 id- 返回值:成功
true;id不存在false - 返回值类型:
Boolean -
示例:
原地重新解析变量与坐标¶
holoRefresh(id)
- 参数:
id:Integer
悬浮字 id- 返回值:刷新成功
true;id不存在、或这块悬浮字还没显示过false - 返回值类型:
Boolean -
示例:
渐变线:创建¶
创建一条多段渐变直线¶
gradientCreate(x1, y1, z1, x2, y2, z2, segments)
- 参数:
x1:Float
起点世界坐标 Xy1:Float
起点世界坐标 Yz1:Float
起点世界坐标 Zx2:Float
终点世界坐标 Xy2:Float
终点世界坐标 Yz2:Float
终点世界坐标 Zsegments:Integer
分段数,段数越多过渡越平滑、线段也越多;低于2按2处理,高于100按100处理,建议 10 ~ 50- 返回值:渐变线 id(从
1开始递增);<= 0表示创建失败 - 返回值类型:
Integer -
示例:
渐变线:颜色¶
设置起点色与终点色¶
gradientSetGradient(id, r1, g1, b1, r2, g2, b2)
- 参数:
id:Integer
渐变线 idr1:Float
起点颜色的红色分量,0.0 ~ 1.0g1:Float
起点颜色的绿色分量,0.0 ~ 1.0b1:Float
起点颜色的蓝色分量,0.0 ~ 1.0r2:Float
终点颜色的红色分量,0.0 ~ 1.0g2:Float
终点颜色的绿色分量,0.0 ~ 1.0b2:Float
终点颜色的蓝色分量,0.0 ~ 1.0- 返回值:成功
true;id不存在false - 返回值类型:
Boolean -
示例:
让渐变线按彩虹色循环¶
gradientSetRainbow(id, speed)
- 参数:
id:Integer
渐变线 idspeed:Float
循环速度,1.0时色相每秒前进 60 度;越大越快- 返回值:成功
true;id不存在false - 返回值类型:
Boolean -
示例:
把整条线设成同一种颜色¶
gradientSetColor(id, r, g, b, a)
- 参数:
id:Integer
渐变线 idr:Float
红色分量,0.0 ~ 1.0g:Float
绿色分量,0.0 ~ 1.0b:Float
蓝色分量,0.0 ~ 1.0a:Float
透明度分量,0.0 ~ 1.0- 返回值:成功
true;id不存在false - 返回值类型:
Boolean -
示例:
改掉渐变线的两个端点¶
gradientSetEndpoints(id, x1, y1, z1, x2, y2, z2)
- 参数:
id:Integer
渐变线 idx1:Float
新的起点世界坐标 Xy1:Float
新的起点世界坐标 Yz1:Float
新的起点世界坐标 Zx2:Float
新的终点世界坐标 Xy2:Float
新的终点世界坐标 Yz2:Float
新的终点世界坐标 Z- 返回值:成功
true;id不存在false - 返回值类型:
Boolean -
示例:
渐变线:显示与销毁¶
对所有在线玩家显示渐变线¶
gradientDraw(id)
- 参数:
id:Integer
渐变线 id- 返回值:已显示
true;id不存在false - 返回值类型:
Boolean -
示例:
只对某个维度显示渐变线¶
gradientDrawToDimension(id, dimId)
- 参数:
id:Integer
渐变线 iddimId:Integer
维度编号 ——0主世界、1下界、2末地- 返回值:已显示
true;id不存在false - 返回值类型:
Boolean -
示例:
隐藏渐变线但保留数据¶
gradientRemove(id)
- 参数:
id:Integer
渐变线 id- 返回值:成功
true;id不存在false - 返回值类型:
Boolean -
示例:
彻底删掉一条渐变线¶
gradientDestroy(id)
- 参数:
id:Integer
渐变线 id- 返回值:删除成功
true;id不存在false - 返回值类型:
Boolean -
示例:
删掉当前所有渐变线¶
gradientDestroyAll()
- 返回值:没有返回值
- 返回值类型:
Null -
示例:
渐变线:动画¶
推进彩虹动画的时间¶
gradientTick(deltaTime)
- 参数:
deltaTime:Float
这一拍过去的时间,单位秒;20 tps 的一拍是0.05。只有彩虹模式的线会被推进,普通渐变线和纯色线不受影响- 返回值:没有返回值
- 返回值类型:
Null -
示例:
注意事项¶
- 参数要按签名给全。LSE 侧没有默认值:少给或多给参数,调用会直接拿到失败值(
Boolean得false、Integer得0、String得空串),不会有异常提示。 - 行级样式不存在:多行共用一份颜色 / 缩放 / 背景框 / 穿墙 / 朝向。某一行要换颜色,就在那一行的文本里写
§颜色代码(例如"§c红字 §a绿字");整块放大用holoSetScale。26.40.8起holoSetLineScale、holoSetLineColor、holoSetLineGradient、holoSetLineRainbow、holoSetLineScroll、holoSetVerticalAnimation、holoSetLineSpacing、holoTick这 8 个行级函数已经移除,ll.import会得到null。 - 变量:文本里的
{player}、{online}、{time}、{tps}、{dimension}、{x}、{y}、{z}会被替换(装了 MeowPAPI 时还支持它提供的外部占位符)。含变量、且显示目标不是单个玩家时,库会为每个观看者各维护一份文字:形状数量会变成观看者数,适合队长视角、任务追踪这类少数人场景,不要用在全服广播的高频刷新上。 - 动态行按时间轮播:内容池用「当前时间 ÷ 间隔」取模选条目,所以多块悬浮字用同一个池、同一个间隔时天然同步;改池内容会立刻反映出来,刷新本身由库按 0.5 秒节流,内容没变就不会重发。
- 跟随不会自己推进:
holoSetFollowPlayer只在调用那一刻取一次玩家坐标,holoDraw、holoRefresh也会各取一次。玩家走动时字不会跟着走,需要自己定时holoRefresh(例如每 2 tick 一次);玩家下线后字停在最后一次解析到的位置。 - 切到单玩家目标会改变变量行为:
holoDrawToPlayer之后只有那一名玩家收到文字,变量也按他一个人解析。 - 渐变线的颜色改动要等下一次重发:
gradientSetGradient、gradientSetColor、gradientSetRainbow、gradientTick只更新线段颜色值,客户端要等重新gradientDraw或库内每 15 秒的兜底重发才看到新颜色。 - 频繁
gradientDraw会闪:它会先销毁旧线段再建新的;gradientSetEndpoints在已显示时也会重建线段。 - 玩家进服不用自己补发:悬浮字和渐变线都只存在客户端内存里,玩家进服后由库自动补发(进服 1 秒、5 秒各一次,之后每 15 秒兜底重发)。
- 建议在主线程调用(服务端 tick、事件回调里)。
- 库没装或没加载时,
ll.import会返回null,直接调用会报错;可以先判空,或先调ll.hasExported("HologramLib", "holoDraw")做能力检查。