Appearance
GQ自定义命令文档
GQ自定义命令
"GQ自定义命令"是一个适用于我的世界中国版基岩版的addon,提供了许多便捷的功能,最早可追溯到2021年发布的"[命令工具]检测手持物品",我们仍在不断改进,欢迎提出你的意见:
QQ群:1140494074
网易资源中心:叫我GQ吧
哔哩哔哩(抖音,快手等):叫我GQ吧
快速链接
- GQ自定义命令介绍与安装
- 基础部分:对象
- 基础部分:变量
- 基础部分:常量
- 基础部分:属性
- 基础部分:GQ属性
- 基础部分:记分板
- 基础部分:转义字符
- 基础部分:gkrun命令(自定义选择器)
- 基础部分:名词释义
- 1.设置实体仇恨目标
- 2.检测实体背包物品
- 3.检测实体状态以及控制输入量,长按(右键)
- 4.修改手持物品描述
- 5.设定玩家命令权限
- 6.设置实体瞬时加速度
- 7.自定义侧边栏
- 8.伤害与击杀检测
- 9.创作者工具
- 10.设置名字前后缀
- 11.GQ表达式
- 12.强制清理实体
- 13.检测玩家聊天内容
- 14.设置实体名称(如果可命名)
- 15.BOSSbar
GQ自定义命令介绍与安装
GQ自定义命令是一个网易基岩版我的世界的Addon,可以在资源中心下载,随后加载到地图中即可
资源中心搜索:GQ自定义命令
基础部分:对象
对象可以理解为游戏中的实体,这个实体有许多属性以及功能组成,例如我们的玩家,有生命,攻击,贴图,模型等属性,又包含挖掘,放置等功能
在自定义命令中的对象大致分为两种,一是前面提到的实体,另一个比较抽象,就是这个存档,或者叫做这个世界
实体对象:
实体对象是指存档内的每一个实体,他们都拥有各自的属性,即时是同类型实体他们的属性值都是独立的
世界对象:
世界对象在一个存档中只有一个,他的属性是唯一的,包括存档名,纬度id,世界类型,默认游戏模式等等
基础部分:变量
变量类似于记分板,由一个变量名与变量值组成
每一个对象都可以创建若干变量,变量是储存在对象中的,退出游戏后会被保存并且不依赖组件
变量可以使用gkentityvar或者gkworldvar命令创建,具体请查看命令部分
变量在取用时非常方便,可以直接穿插在命令中,只不过在运行原版命令时需要嵌套gkrun命令
例如为最近玩家创建a变量,赋值为10:
execute as @p run gkentityvar a "10"
也许你会有疑问,这里的10为什么加了双引号,这是因为这个位置设定变量值,变量值可以为数字或者字符串(也可以设置两条命令参数,但是这个目前有些小问题,所以暂时使用这种方法)总之记得使用双引号
刚刚我们顺利创建了一个实体变量a,它的值为10
那么如何取用变量呢,也非常简单,变量取用格式为:
一个空格 + $+变量类型(self/world)+var+变量名
在命令中取用变量需要将原版命令嵌套到gkrun命令中执行,gkrun语法十分简单(自2025.6.8之后,更新自定义选择器,详情请看文档):
gkrun "原版命令"
例如在say命令中显示a:
execute as @p run gkrun "say 变量a的值为: $self.var.a"
1.首先将命令执行者转换为最近的玩家
2.执行gkrun命令,将say命令嵌套进去
3.在命令执行时会查询self(自身)的变量中是否包含a,如果包含a则会将a的值替换变量处
如上命令则等价于:
execute as @p run gkrun "say 变量a的值为: 10"
如果创建一个世界变量(全局变量)并且在聊天框显示:
plaintext
execute as @p run gkworldvar b "100"
execute as @p run gkrun "say 变量b的值为: $world.var.b"修改变量需要使用命令修改
/gkoperate [变量类型:字符串] [变量名:字符串] [表达式:字符串]
| 可选参数 | 参数释义 |
|---|---|
| [变量类型:string] | world:全局变量 self:实体变量 目前只支持对该对象的var进行操作 |
| [变量名:string] | 变量名 |
| [表达式:string] | 表达式是一行运算式,建议提前编辑好复制到游戏内,支持四则运算等并且在无"()"干预情况下有优先级,在不被gkrun嵌套情况下可以解析变量,属性等,但是不需要添加$符号,具体请看附录与示例 |
附录
| 运算符 | 运算符说明 |
|---|---|
| + | 加法运算 |
| – | 减法运算 |
| * | 乘法运算 |
| / | 除法运算,在无浮点情况是整除 |
| % | 取余 |
| ** | 幂运算 |
| // | 整除 |
| and | 与运算,返还布尔值,当左侧运算值的布尔值为True时返回右侧运算值的布尔值,当左侧布尔值为False时直接返回0 |
| or | 或运算,当左侧为布尔值为False时直接返回右侧布尔值,当左侧为True时直接返回1 |
| not | 非运算,取反 |
| == | 判断是否相等 |
| > | 判断左侧是否大于右侧,返还布尔值 |
| < | 判断左侧是否小于右侧,返还布尔值 |
| >= | 判断左侧是否大于等于右侧,返还布尔值 |
| <= | 判断左侧是否小于等于右侧,返还布尔值 |
| != | 判断两侧是否不相等 |
| () | 被括号包裹的表达式优先计算 |
示例
plaintext
/gkoperate world ab "(2 +1) *5 + 1.7 + self.attr.health"
//world.var.ab的结果为36.7我们一步步看,首先算括号2+1=3
然后3*5=15
接下来15+1.7=16.7
然后16.7+self.attr.health(也就是20)=36.7
plaintext
/gkoperate world ab "1 > 2"
//world.var.ab的结果为0当表达式为真(正确)时,结果为True,反之False
plaintext
/gkoperate world ab "1>2 and 1<2"
//world.var.ab的结果为0
/gkoperate world ab "1>2 or 1<2"
//world.var.ab的结果为1
/gkoperate world ab "not 1 > 2"
//world.var.ab的结果为1基础部分:常量
现在我们已经了解对象与变量的概念,在2025.5.25之后,GQ自定义命令再次引入新的概念,就是常量与数据库,这两个功能是根据运行原理来命名的,可以理解为世界常量和实体常量,但是此时不能再叫做成员常量与全局常量了(后面会解释歧义)
(顺带一提,本章节的概念与我们平时常用的概念有所不同,请以全新的角度看待与理解)
那么首先介绍常量的概念,常量与变量相似,都是储存的数据,但是相对于变量,常量的值不可修改,只可以获取调用,常量只存在于世界对象中(存档),其实就是加入了一些数学常数,例如圆周率,根号2的值,自然底数等等
常量的关键词为con并且只存在于世界存档中,所以要通过$world.con.xxx来取值
plaintext
//取圆周率(pi)
$world.con.pi目前支持的常量:
| 常量名 | 常数 |
|---|---|
| pi | 圆周率 |
| rst | 根号2 |
| e | 自然对数的底数 |
| gr | 黄金分割率 |
| emf | 欧拉常数 |
基础部分:属性
属性是一些特别的变量,他们与游戏中实际属性双向关联,可以取用或者修改(部分属性不可修改)
取用属性与变量语法相同,细节上稍许不同:
一个空格+$+属性类型(self/world)+attr+属性名
例如将玩家生命值(属性名:health)显示到聊天框:
execute as @p run gkrun "say 我的生命值为: $self.attr.health"
修改属性与修改变量语法相同,使用gkoperate命令来操作
下面是属性与属性名的对应关系:
实体属性:
| 属性名 | 属性释义 |
|---|---|
| health | 生命值 |
| speed | 移速 |
| damage | 伤害 |
| hunger | 饥饿值 |
| saturation | 饱和值 |
| absorption | 伤害吸收值 |
| armor | 护甲值 |
| jump_strength | 跳跃能力 |
| lava_speed | 岩浆中移速 |
| luck | 幸运值 |
| follow_range | 仇恨距离 |
| knockback_resistance | 击退抵抗 |
| underwater_speed | 水中移速 |
世界属性:
| 属性名 | 属性释义 |
|---|---|
| 暂未更新 | 玩家数 |
| 暂未更新 | 攻击cd |
| 暂未更新 | 活塞推动范围 |
基础部分:GQ属性
除了原版的基础属性外,还额外增加了一些实用属性,他们仍然是变量,可以调用,可以使用gkoperate命令修改这些属性(变量的概念以及详细操作请看前面章节)
扩展的实体属性如下:($self.var.xxx)
| 属性名 | 属性含义 |
|---|---|
| gkhtc | 玩家名字颜色 |
| gkhtfc | 前缀颜色 |
| gkhtft | 前缀 |
| gkhtbc | 后缀颜色 |
| gkhtbt | 后缀 |
| gkhidename | 玩家名字是否显示 |
| gkfly | 玩家是否可飞行 |
| gkposx | 该实体坐标x |
| gkposy | 该实体坐标y |
| gkposz | 该实体坐标z |
| gkdim | 该实体所在维度id |
| gkname | 该实体的自定义名字,若未设置名字则返还该实体类型id |
| 实体体型 | |
| 实体碰撞箱X | |
| 实体碰撞箱Y | |
| gkatkt | 该实体最后一次对造成伤害实体的uid |
| gkonatk | 该实体最后一次受伤来源实体的uid |
| gkkillt | 该实体最后一次击杀实体的uid |
| gkonkill | 该实体最后一次被击杀者的uid |
| gquid | 该实体的uid,该属性具有延伸功能,详情请查看文档 |
| gkdsbx | 该实体最后一次破坏方块坐标x |
| gkdsby | 该实体最后一次破坏方块坐标y |
| gkdsbz | 该实体最后一次破坏方块坐标z |
| gkdsbid | 该实体最后一次破坏方块的id |
| gkdsbaux | 该实体最后一次破坏方块的特殊值 |
| gkdsbdim | 该实体最后一次破坏方块的维度 |
| gkfhealth | 设置实体当前生命值,不会修改最大生命值,当超出最大生命值时,会舍去超出部分 |
| gkmhealth | 设置实体最大生命值,当小于当前生命值时会覆盖当前生命值,而大于当前生命值时不会增加生命值 |
| gkchattext0 | 该实体最后一次聊天框输出内容(全部值) |
另外,世界属性如下:(world.var.xxx)
| 属性名 | 属性含义 |
|---|---|
| gklockcmd | 是否强制开启命令方块 |
基础部分:记分板
记分板是原版有的功能,但是使用"对象.变量"的形式也可以直接调用其记分项的值
例如原版记分板moeny的值为100
plaintext
scoreboard objectives add money dummy
scoreboard players set @p money 100然后我希望使用tp到y轴为money值的地方
plaintext
execute as @p run gkrun "tp ~ $self.scb.money ~"
(在该玩家money为100时其等价于
execute as @p run gkrun "tp ~ 100 ~"注意:world没有.scb
基础部分:转义字符
在使用gkrun命令调用变量时常常希望变量值嵌入到一些格式化文本中,例如json格式,亦或是使用gksidebar时,所以提供了转义字符,转义字符在使用时前后均需要添加空格(并不是全部命令都支持转义字符,但是gkrun命令与gksetsidebarvalue命令支持)
转义字符如下:
| @n | 会转换为\n,进行换行 |
|---|---|
| @sp | 会转换为" ",一个空格 |
| @b | 会转换为",一个双引号,在json文本中使用 |
如果希望actionbar换行:
execute as @a run gkrun "title @s actionbar ni @n hao"
则ni与hao会在上下两行
如果使用json格式时:
execute as @p run gkrun "tellraw @a { @b rawtext @b :[{ @b text @b : @b 你好啊 @b }]}"
注意:一部分命令在嵌套gkrun时需要加入双引号,这时候就需要转义字符了
基础部分:gkrun命令(自定义选择器)
前面你一定经常看到gkrun命令,现在我们来看下语法
命令格式为:
/gkrun [自定义选择器(可选):选择器] [任何命令:字符串]
| 可选参数 | 参数释义 |
|---|---|
| [自定义选择器(可选):target] | 该参数可忽略,直接写后面的命令; 当该参数存在时,需要写一个被引号包裹的选择器及其参数(也可无参数),选择器为原版游戏的选择器,参数格式也与原版一致,参数支持原版选择器参数,也支持全部gq属性(由于历史遗留,部分属性采用attr.xxx的格式,也兼容选择器参数)以及gq变量(以后统称为自定义选择器参数),在使用自定义选择器参数时,参数名为var.xxx或attr.xxx以及未来会支持的sql.xxx,即无需添加$self.部分,详情请看后面示例 |
| [任何命令:string] | 原版命令或gq自定义命令,支持转义字符(事实上转义字符只在这里有效),变量,常量,数据库(未来会支持),属性的取用; 另外注意,当带有自定义选择器时,此处命令执行者将会被改变为选择器所选实体 |
plaintext
//让所有生命值为10的实体说"hi"
/gkrun "@e[attr.health=10.0]" "execute as @s run say hi"有这么几点需要强调一下:
1.自定义选择器及其参数需要被双引号包裹
2.自定义选择器参数名无需使用"$self."部分
3.参数值需要使用浮点型,即10.0
4.最后命令部分可以不使用execute嵌套,但是为了让say命令带有实体名,所以使用execute嵌套say
5.如果自定义参数值使用了变量,self取值对象对执行者,所以必要时须使用execute嵌套gkrun
plaintext
//假设将玩家变量test值设为11
/gkentityvar test "10"
//然后使test变量为10的实体说hello
/gkrun "@e[var.test=11]" "execute as @s say hello"plaintext
//自定义选择器参数值也可以使用调用变量
//击杀刚刚攻击我的实体
/gkrun "@e[var.gquid=$self.var.gkonatk]" "kill @s"plaintext
//实现全部玩家一击必杀
RCB:
/execute as @a run gkrun "@e[var.gquid=$self.var.gkatkt]" "execute as @s run kill @s"
或者:
/execute as @a run gkrun "@e[var.gquid=$self.var.gkatkt]" "kill @s"特别说明:
由于该命令作用对象为全体玩家,所以使用execute嵌套gkrun执行
Q:如果我想要在其他地方使用使用自定义选择器?
A:严格来说,自定义选择器只能在gkrun命令使用,但是可以将对应属性值通过tag给予实体,然后使用原版选择器选择该tag(注意转义字符)
基础部分:名词释义
| 名词 | 释义 |
|---|---|
| ICB (Impulse Command Block) | 脉冲命令方块 |
| CCB (Chain Command Block) | 连锁命令方块 |
| RCB (Repeat Command Block) | 重复命令方块 |
1.设置实体仇恨目标
暂未启用
2.检测实体背包物品
提供了一个自定义命令来检测实体是否具有符合条件的物品
支持背包,主手,副手,装备槽位
基本语法:
/gktestforinv [位置:字符串] [槽位:整数] [物品:字符串] [特殊值:整数] [数量:整数]
参数:位置(字符串)
| 可选参数 | 参数释义 |
|---|---|
| inventory | 背包位置 |
| offhand | 副手位置 |
| carried | 主手位置 |
| armor | 装备位置 |
参数:槽位(整数)
| 可选参数 | 参数释义 |
|---|---|
| [槽位:int] | 此处输入一个整数,是背包格子的槽位index(例如装备栏是0~4) |
| [物品:str] | 此处输入一个命名空间:物品ID,例如原版的草方块就是: minecraft:grass |
| [特殊值:int] | 此处输入一个整数,用来表示该物品特殊值,使用-1来无条件匹配 |
| [数量:int] | 此处输入一个整数,用来表示该物品堆叠数量,使用-1来无条件匹配 |
当检测到符合条件物品时会返还True,当该位置物品不符合条件会返回False
3.检测实体状态以及控制输入量,长按(右键)
当玩家处于当前状态时,会赋予相应的标签
| 状态标签 | 标签释义 |
|---|---|
| onmove | 在移动 |
| onsprinting | 在疾跑 |
| onwater | 在水中 |
| onflying | 在飞行 |
| ongliding | 鞘翅飞行 |
| onsneaking | 在潜行 |
| onswimming | 在游泳 |
| onblocking | 使用盾牌 |
| onriding | 在骑乘 |
控制的输入量会同步到变量当中,分别是self.var.movex与self.var.movey
| 变量名称 | 变量解释 |
|---|---|
| movey | 方向键或轮盘垂直(前后)输入量,向前为正数,向后为负数 |
| movex | 方向键或轮盘水平(左右)输入量,向左为正数,向右为负数 |
在长按屏幕(PC模式下鼠标右键)会尝试为该玩家添加一个tag:onclick
在解释长按(PC模式下鼠标松开右键)会尝试为该玩家删除一个tag:onclick
4.修改手持物品描述
到0.3版本为止,仅支持修改物品custom tips(物品描述)
这个功能可支持换行,但目前暂未开放
语法如下:
/gkchangeitemtag [背包位置类型:字符串] [槽位:整数] [自定义TIPs:字符串]
背包位置类型有四个部分:
| 可选参数 | 参数释义 |
|---|---|
| [背包位置类型:string] | inventory:背包,即玩家背包栏位 offhand:副手,玩家副手位置,槽位只有一个(0) carried:主手,玩家手持位置,槽位只有一个(0) armor:装备,装备位置,只有四个槽位(0~3) |
| [槽位:int] | 该值为槽位index,不同的位置有不同的槽位数,槽位都是从0开始 |
| [自定义TIPs:string] | 该值为一个字符串,写入物品描述,会覆盖物品的默认名字,可使用转义字符换行,可使用格式字符串调用物品属性(如下表所示) |
自定义tips附录(在自定义tips部分加入如下字符串,会被转义为该物品的某些属性):
| 字符串 | 转义 |
|---|---|
| %name% | 物品名 |
| %category% | 物品类型 |
| %enchanting% | 附魔属性 |
| %attack_damage% | 攻击伤害 |
5.设定玩家命令权限
在0.5版本新增一个权限管理系统,他可以控制玩家执行命令,主要用于限制管理员的权限,在某些情况下,可以给予普通玩家管理员权限,然后设置命令白名单,来开放玩法!
基本语法如下:
/gkexeper [目标:选择器] [操作方式:字符串] [集合:字符串] [值:字符串]
| 可选参数 | 参数释义 |
|---|---|
| [目标:target] | 原版目标选择器 |
| [操作方式:string] | add:添加命名名称到集合 remove:将命令名称从集合中删除 list:显示该玩家某集合的内容 mode:切换该玩家命令权限方式 |
| [集合:string] | 可选 blacklist(黑名单):黑名单模式下,在黑名单集合中的命令都不会被执行 whitelist(白名单):白名单模式下,只有在白民单中的命令才会被执行,该集合默认gkexeper(防止切换到该模式上无法在聊天框执行权限命令,tellraw(防止一些反馈看不到),setcb(防止无法编辑命令方块) 在add和remove方式下,向该集合添加或删除命令名称 在list方式下显示该集合的全部值 在mode模式下则将该玩家模式改为白名单或黑名单 |
| [值:string] | 命令名称,仅在add和remove模式下需要设置 |
特性说明:
玩家默认为黑名单模式,黑名单集合为空,白名单默认带有tellraw,setcb,gkexeper三条内容,集合与模式在0.5版本不存档(防止单人玩家设置了白名单且移除了gkexeper与setcb权限,这样会导致无法管理权限且无法使用命令)
plaintext
禁用玩家tp权限:
假设玩家处于黑名单模式
/gkexeper @p add blacklist tp
使玩家仅能使用tp命令:
先将玩家模式设为白名单模式
/gkexeper @p mode whitelist
设置玩家权限
/gkexeper @p add whitelist tp
有些时候我们想要玩家可以使用命令,但是又要防止玩家破坏规则
我们可以将玩家设为管理员(op),并启用白名单模式,将可以执行的命令添加进去,并且限制他们编辑命令方块
假设需要玩家任意使用tp命令
1.设置白名单集合,只保留tp命令
/gkexeper "playerid" remove whitelist setcb
/gkexeper "playerid" remove whitelist tellraw
/gkexeper "playerid" remove whitelist gkexeper(谨慎使用该命令)
/gkexeper "playerid" add whitelist tp
2.现在设置玩家权限模式为白名单
/gkexeper "playerid" mode whitelist
3.设置该玩家为管理员(op)
/op "playerid"
此时"playerid"玩家无法再使用其他命令,只能使用tp,并且无法破坏和编辑命令方块(命令方块矿车不受影响)6.设置实体瞬时加速度
可根据实体朝向,给予一个加速度,实际效果为冲刺并且会被方块挡住
模式1命令格式为:
/gksev [加速度:数值]
| 可选参数 | 参数释义 |
|---|---|
| [加速度:float] | 此处输入一个数值,为该执行者加速度的倍数,可以为负数 |
| [是否基于视角:bool] | 可选参数,若设为true,则基于视角方向设置加速度倍数,若为否则基于世界位置 |
例如将执行者向前冲刺(5倍):
execute as @p run gksev 5
如果需要调用变量则需要:
execute as @p run gkrun "gksev $self.var.sev"
若需要反方向冲刺:
execute as @p run gksev -5
模式2:
/gksev [x轴加速度:数值] [y轴加速度:数值] [z轴加速度:数值] [是否基于视角:布尔(可选)]
| 可选参数 | 参数释义 |
|---|---|
| [x轴加速度:float] | x轴方向加速度 |
| [y轴加速度:float] | y轴方向加速度 |
| [z轴加速度:float] | z轴方向加速度 |
| [是否基于视角:bool] | 可选参数;默认为false,若设置为true则会视为视角方向加速度 |
若使用追加参数主动设定角度
plaintext
//面向x轴正方向,右侧为z轴正方向,向右上方位移
execute as @p run gksev 1.5 1.5 1.5使用追加参数设定向视角方向冲刺(5倍):
execute as @p run gksev 5 5 5 true
模式3:
/gksev [加速度倍率:数值] [加速度朝向实体:目标选择器]
| 可选参数 | 参数释义 |
|---|---|
| [加速度倍率:float] | 加速度倍率,可以是负数,小数 |
| [加速度朝向实体:target] | 该参数可以将加速度方向设置为选择器选择到的第一个实体相对执行者所在方向,但不会改变执行者本身朝向 |
若需向某实体方向冲刺:
plaintext
//某实体name为test
/gksev 10 @e[name=test]若需远离某实体:
plaintext
//某实体name为tom
/gksev -10 @e[name=tom]7.自定义侧边栏
侧边栏功能可以在玩家右侧显示多行文本,文本通过gksetsidebardisplay来控制显示,通过gksetsidebarvalue来控制内容
显示侧边栏语法:
/gksetsidebardisplay [是否显示:数值]
| 可选参数 | 参数释义 |
|---|---|
| 0 | 当值为0时则关闭该显示(仅对执行者) |
| 1 | 当值为1时则开启该显示(仅对执行者) |
注意:无论是开启或者关闭该显示,都不影响对该玩家执行gksetsidebarvalue命令
假如要显示侧边栏:
/gksetsidebardisplay 1
设置侧边栏内容语法:
/gksetsidebarvalue [内容:字符串]
假如要设置一个带有欢迎信息的侧边栏:
plaintext
execute as @p run gkrun "gksetsidebarvalue 欢迎进入此服务器"
execute as @p run gkrun "gksetsidebardisplay 1"
//这会在侧边显示一行欢迎词同时侧边栏提供了两个转义字符,可供换行与空格:
转义字符在使用时需前后加入空格,也就是 一个空格+转义字符+一个空格
| 转义字符 | 字符释义 |
|---|---|
| @n | 提供一个换行功能 |
| @sp | 提供一个空格功能 |
小技巧:如果你想要侧边栏实时更新属性值或者变量,只需要设置一个循环命令方块
plaintext
RCB:
execute as @p run gkrun "gksetsidebarvalue 个人信息 @n 生命值: $self.attr.health"
//@n提供了换行功能这样该玩家生命值减少时,会同步体现在侧边栏
8.伤害与击杀检测
在0.6版本后加入了自定义选择器,支持精确检测伤害与击杀(在继续后面的内容之前,请先学习自定义选择器的使用方法)
首先来回顾几个gq属性
| gquid | 该实体uid |
|---|---|
| gkatkt | 该实体最后一次对造成伤害实体的uid |
| gkonatk | 该实体最后一次受伤来源实体的uid |
| gkkillt | 该实体最后一次击杀实体的uid |
| gkonkill | 该实体最后一次被击杀者的uid |
1.也就是说实体A攻击实体B后,实体A的gkatkt为实体B的uid,实体B的gkonatk为实体A的uid
2.当实体A击杀实体B后(实体B若不可复活已被移除则无属性),实体A的gkkillt为实体B的uid,实体B的gkonkill为实体A的uid
接下来我们假设一个情景,玩家A攻击了一下玩家B:
plaintext
//首先我们设计选择器,通过玩家A选择到玩家B,也就是执行方是玩家A
@a[var.gquid=$self.var.gkatkt]我们来一步步解析这个选择器:
1.首先选择器使用@a,将范围限制为玩家
2.参数使用了gquid,这样会精确选择到某一个玩家,根据自定义选择器语法,参数名为var.gquid
3.参数值使用了变量的取值运算,取了执行者的gkatkt属性,前面回顾过,这个属性记录上次攻击实体的uid
4.如此一来,就可以精确无误选择到受击的玩家了
plaintext
//我们现在组合命令,假设执行者为玩家A
/gkrun "@a[var.gquid=$self.var.gkatkt]" "execute as @s run say 我被打了"如此以来,玩家B会输出一句"我被打了"
击杀检测也是如此原理,替换下变量即可
/gkrun "@a[var.gquid=$self.var.gkkillt]" "execute as @s run say 我被杀了"
9.创作者工具
创作者工具可以快捷查看实体熟悉以及命令方块,只能通过命令方式获取(gknewcmd:gktools)
10.设置名字前后缀
名字前后缀需要提供五个参数,但这些可以选择性设置
如果需要设置前缀为"§6你好",后缀为"§a世界",并且玩家名词颜色设置为"§c"
plaintext
//设置玩家名称颜色
execute as @p run gkentityvar gkhtc "§c"
//设置前缀颜色
execute as @p run gkentityvar gkhtfc "§6"
//设置后缀颜色
execute as @p run gkentityvar gkhtbc "§c"
//设置前缀内容
execute as @p run gkentityvar gkhtft "你好 "
//设置后缀内容
execute as @p run gkentityvar gkhtbt " 世界"
//注意,前缀与后缀的内容都在适当位置增加了空格11.GQ表达式
gq表达式目的是用来替代gkoperatevar命令,相较于gkoperatevar命令,可以连续运算,增加逻辑运算等等
基础语法
/gkoperate [变量类型:字符串] [变量名:字符串] [表达式:字符串]
| 可选参数 | 参数释义 |
|---|---|
| [变量类型:string] | world:全局变量 self:实体变量 目前只支持对该对象的var进行操作 |
| [变量名:string] | 变量名 |
| [表达式:string] | 表达式是一行运算式,建议提前编辑好复制到游戏内,支持四则运算等并且在无"()"干预情况下有优先级,在不被gkrun嵌套情况下可以解析变量,属性等,但是不需要添加$符号,具体请看附录与示例 |
表达式附录
| 运算符 | 运算符说明 |
|---|---|
| + | 加法运算 |
| – | 减法运算 |
| * | 乘法运算 |
| / | 除法运算,在无浮点情况是整除 |
| % | 取余 |
| ** | 幂运算 |
| // | 整除 |
| and | 与运算,返还布尔值,当左侧运算值的布尔值为True时返回右侧运算值的布尔值,当左侧布尔值为False时直接返回0 |
| or | 或运算,当左侧为布尔值为False时直接返回右侧布尔值,当左侧为True时直接返回1 |
| not | 非运算,取反 |
| == | 判断是否相等 |
| > | 判断左侧是否大于右侧,返还布尔值 |
| < | 判断左侧是否小于右侧,返还布尔值 |
| >= | 判断左侧是否大于等于右侧,返还布尔值 |
| <= | 判断左侧是否小于等于右侧,返还布尔值 |
| != | 判断两侧是否不相等 |
| () | 被括号包裹的表达式优先计算 |
示例:
plaintext
/gkoperate world ab "(2 +1) *5 + 1.7 + self.attr.health"
//world.var.ab的结果为36.7我们一步步看,首先算括号2+1=3
然后3*5=15
接下来15+1.7=16.7
然后16.7+self.attr.health(也就是20)=36.7
plaintext
/gkoperate world ab "1 > 2"
//world.var.ab的结果为0当表达式为真(正确)时,结果为True,反之False
plaintext
/gkoperate world ab "1>2 and 1<2"
//world.var.ab的结果为0
/gkoperate world ab "1>2 or 1<2"
//world.var.ab的结果为1
//gkoperate world ab "not 1 > 2"
//world.var.ab的结果为112.强制清理实体
提供了一个强制清理实体的命令,但该命令不一定会成功,语法如下:
/gkkill [目标:选择器]
13.检测玩家聊天内容
0.9版本新增GQ属性"gkchattext0″,用于获取玩家最后一次聊天框输出内容(全部值),可使用自定义选择器选择
若玩家A最后一次在聊天框发送"回城",我们想要传送所有发送回城的玩家
plaintext
RCB:
/gkrun "@a[var.gkchattext0=回城]" "tp @s 114 28 182"14.设置实体名称(如果可命名)
现已支持使用gksetentityname命令对实体进行命名(如果该实体可被命名)
基本语法如下:
/gksetentityname [目标:选择器] [名字:字符串]
| 可选参数 | 参数释义 |
|---|---|
| [目标:target] | 原版目标选择器 |
| [名字:string] | 被设定的名字,使用gkrun命令支持调用变量,scb等,注意:在使用gkrun命令嵌套该命令时,名字参数需要在前后增加双引号转义字符,请看下方示例 |
在使用gkrun命令时需要注意加入转义字符:
plaintext
/execute as @p run gkrun "gksetentityname @e @b 玩家生命值: $self.attr.health @b"
#当执行者生命为20时,该命令等价于
gksetentityname @e "玩家生命值: 20"15.BOSSbar
设置顶部ProGressBar,可以自定义名称,值,颜色,控制是否可见
gkpgbar [目标:选择器] [操作模式:字符串] [操作值:布尔/浮点/字符串]
| 可选参数 | 参数释义 |
|---|---|
| [目标:target] | 作用的目标选择器,每个玩家的设置是独立的 |
| [操作模式:string] | visible:设置progressbar是否可见 text:设置progressbar上方的标题,可以使用样式代码,暂不支持调整大小 value:设置progressbar的进度 color:设置progressbar的颜色,不包括上方标题与底色 |
| [操作值:bool/float/string] | 操作模式为: -visible:布尔值,true为可见,false反之 -text:字符串,支持样式代码 -value:浮点型,区间为[0.0,1.0],1.0时为全满 -color:浮点型x4,该参数分解为四个参数,分别对应RGBA,其中取值为[0.0,1.0],可以不输入A参数,默认为完全不透明 |
设置玩家显示progressbar
/gkpgbar @p visible true
设置progressbar的标题为BOSS
/gkpgbar @p text BOSS
设置progressbar的颜色为蓝色不添加透明度 [RGB (0.2,0.67,1.0)] RGB选择器
/gkpgbar @p color 0.2 0.67 1
设置progressbar的颜色为蓝色半透明
/gkpgbar @p color 0.2 0.67 1 0.5
设置progressbar的进度为60%(0.6)
/gkpgbar @p value 0.6