组件:调试

此组件由调试卡提供。

仅在创造模式可用的调试卡提供了一套实际上很危险的功能,可用于调试与测试代码。没有进行备份的话切勿使用调试卡,绝对不要。比如有一次我就不小心将竖着的一整片世界都变成了无文字的告示牌。

调试卡的“容器”指装有调试卡的机器人、电脑或平板电脑。

在专用服务器游玩时,调试卡必须绑定到某个玩家身上才能用runCommand回调来运行命令,绑定的方式为手持调试卡潜行右键单击。被绑定的玩家需要有运行提供给runCommand的命令的权限。

组件名:debug

回调函数:

  • changeBuffer(value:number):number
    以指定值作为增量,修改组件网络的能量缓存。

  • connectToBlock(x:number, y:number, z:number):boolean
    将调试卡连接到指定坐标处的可与 OC 兼容的方块。

  • getPlayer(name:string):userdata
    获取玩家对象。

  • getPlayers():table
    获取当前登录玩家列表。

  • getWorld([id:number]):userdata
    获取指定维度ID对应的世界对象,若不指定则为容器的世界。

  • getWorlds():table
    获取所有世界ID的列表,无论是否加载。

  • getX():number
    获取容器在世界中的X坐标。

  • getY():number
    获取容器在世界中的Y坐标。

  • getZ():number
    获取容器在世界中的Z坐标。

  • isModLoaded(name:string):boolean
    获取指定mod或API是否加载。

  • runCommand(command:string):number, string
    使用伪玩家(fake player)执行任意命令。若命令运行成功则第一个返回值为1,失败为0。第二个返回值为指令返回的内容或报错信息。若命令不返回任何内容,例如/me,第二个返回值将为nil

  • test():userdata
    用于转换user-data与通用数值的测试方法。

  • getScoreboard():userdata
    获取世界的计分板对象。

  • sendToDebugCard(address:string, data...)
    向指定地址的调试卡发送数据。

  • sendToClipboard(player:string, text:string)
    若可行的话,向指定玩家的剪切板中发送文本。

  • scanContentsAt(x: number, y: number, z: number[, worldId: number]):boolean, string, table
    返回指定ID对应世界(默认为主世界)指定位置处的内容。此方法与机器人和无人机的运动检测功能行为相同。第一个返回值为布尔型,代表了机器人或无人机能否进入此位置(为true代表会被阻挡,不能进入)。第二个返回值为字符串值,代表障碍类型。可能的取值包括:EntityLivingBaseEntityMinecartairliquidreplaceablepassablesolid。最后一个返回值为此位置扫描到的实体或方块,以序列化的或普通表的形式来表示。下面的代码片段可用于调试获取可能阻挡机器人前进的物体,假设机器人面向X轴负方向。
local debug = require("component").debug
local serialize = require("serialization").serialize
local x, y, z = debug.getX, debug.getY, debug.getZ
local offset_x = -1
local offset_z = 0
local blocking, label, content = debug.scanContentsAt(x() - .5 + offset_x, y() - .5, z() - .5 + offset_z)
print(blocking, label, serialize(content))

世界对象

世界对象是容器当前所在的世界(维度)的映射。

  • getMetadata(x:number, y:number, z:number):number
    获取位于指定坐标的方块的元表。

  • getBlockId(x:number, y:number, z:number):number
    获取位于指定坐标的方块的ID。

  • getDimensionId():number
    获取当前维度的数字ID。

  • isLoaded(x:number, y:number, z:number):number
    检查位于指定坐标的方块是否被加载。

  • getSeed():number
    获取世界的种子。

  • removeFluid(amount:number, x:number, y:number, z:number, side:number):boolean
    从位于指定坐标处的流体罐中移除一定量流体。

  • insertFluid(id:string, amount:number, x:number, y:number, z:number, side:number):boolean
    向位于指定坐标处的流体罐中添加一定量流体。

  • getDimensionName():string
    获取当前维度的名称。

  • getTime():number
    获取当前世界时间。

  • setTime(value:number)
    设定当前世界时间。

  • getLightValue(x:number, y:number, z:number):number
    获取位于指定坐标处的方块的光照等级(自身发出的)。

  • isRaining():boolean
    返回当前天气是否为降雨。

  • setRaining(value:boolean)
    设定当前天气是否为降雨。

  • isThundering():boolean
    返回当前天气是否为雷暴。

  • setThundering(value:boolean)
    设定当前天气是否为雷暴。

  • setBlock(x:number, y:number, z:number, id:number or string, meta:number):number
    在指定坐标处放置指定方块。

  • setBlocks(x1:number, y1:number, z1:number, x2:number, y2:number, z2:number, id:number or string, meta:number):number
    在指定范围内填充指定方块,范围为立方体,由两个对角顶点(x1, y1, z1)与(x2, y2, z2)表示。

  • removeItem(x:number, y:number, z:number, slot:number[, count:number]):number
    减少指定坐标处物品容器的指定槽位中物品堆的物品数。

  • insertItem(id:string, count:number, damage:number, nbt:string, x:number, y:number, z:number, side:number):boolean
    将一个物品堆放入到指定坐标处物品容器的指定槽位中。给定的NBT标签需为JSON格式。

  • getSpawnPoint():number, number, number
    获取当前的重生点坐标。

  • setSpawnPoint(x:number, y:number, z:number)
    设定重生点坐标。

  • canSeeSky(x:number, y:number, z:number):number
    获取位于指定坐标处的方块是否直接暴露在天空下。

  • getLightOpacity(x:number, y:number, z:number):number
    获取位于指定坐标处的方块的不透明度。

  • hasTileEntity(x:number, y:number, z:number):number
    检查位于指定坐标处的方块是否具有方块实体。

  • playSoundAt(x:number, y:number, z:number, sound:string, range:number)
    在指定坐标处播放音效。

  • getTileNBT(x:number, y:number, z:number):table
    获取位于指定坐标处的方块的NBT数据。

  • setTileNBT(x:number, y:number, z:number, nbt:table):boolean
    设定位于指定坐标处的方块的NBT数据。

  • getBlockState(x:number, y:number, z:number[, actualState:boolean=false])
    获取位于指定坐标处的方块的状态,可选是否获取额外的有关显示的数据。

玩家对象

玩家对象代表了世界中一个指定玩家。

  • getWorld():userdata
    获取玩家所在世界的世界对象。

  • getGameType():string
    获取玩家的游戏模式。

  • setGameType(gametype:string)
    设定玩家的游戏模式(survival-生存,creative-创造,adventure-冒险)。

  • getHealth():number
    获取玩家的生命值。

  • setHealth(health:number)
    设定玩家的生命值。

  • getMaxHealth():number
    获取玩家的最大生命值。

  • getPosition():number, number, number
    获取玩家的位置。

  • setPosition(x:number, y:number, z:number)
    设定玩家的位置。

  • getExperienceTotal():number
    获取玩家的总经验值。

  • getLevel():number
    获取玩家的等级。

  • addExperienceLevel(level:number)
    为玩家的经验等级增加一级。

  • removeExperienceLevel(level:number)
    为玩家的经验等级减少一级。

  • insertItem(id:string, amount:number, meta:number[, nbt:string]):number
    将一个物品堆添加到玩家的物品栏中。

  • clearInventory()
    清空玩家的物品栏。

计分板对象

  • addObjective(objectiveName:string, objectiveCriteria:string)
    在计分板中创建一个新的对象。

  • removeObjective(objectiveName:string)
    从计分板中移除一个对象。

  • increasePlayerScore(playerName:string, objectiveName:string, score:int)
    增加某计分板对象中某玩家的分数。

  • decreasePlayerScore(playerName:string, objectiveName:string, score:int)
    减少某计分板对象中某玩家的分数。

  • addPlayerToTeam(player:string, team:string):boolean
    将某玩家加入某团队中。

  • removePlayerFromTeam(player:string, team:string):boolean
    将一名玩家从指定团队中移除。

  • removePlayerFromTeams(player:string):boolean
    将一名玩家从所有团队中移除。

  • addTeam(team:string)
    将一个团队添加到计分板中。

  • removeTeam(teamName: string)
    从计分板中移除一个团队。

  • getPlayerScore(playerName:string, objectiveName:string):int
    获取某计分板对象中某玩家的分数。

  • setPlayerScore(playerName:string, objectiveName:string, score:int)
    设定某计分板对象中某玩家的分数。

目录