同步最新文档10m17d
This commit is contained in:
@@ -57,7 +57,7 @@ selection: true
|
||||
|format_version|str||格式版本,请填写0.0.1|
|
||||
|name|str||指令名称,例如gamemode|
|
||||
|description|str||指令描述,也支持在语言文件(例如zh_CN.lang)中定义|
|
||||
|permission_level|str|game_directors|权限等级,可选game_directors、admin、host、owner、any,具体含义如下<br>game_directors:任何操作员都可以运行此命令,包括命令方块<br>admin:任何操作员都可以运行此命令,但命令方块不能<br>host:任何服务器主机都可以运行此命令<br>owner:只有专用服务器可以运行此命令<br>any:任何人都可以运行此命令|
|
||||
|permission_level|str|权限等级,可选game_directors、admin、host、owner、any,具体含义如下<br>game_directors:任何操作员都可以运行此命令,包括命令方块<br>admin:任何操作员都可以运行此命令,但命令方块不能<br>host:任何服务器主机都可以运行此命令<br>owner:只有专用服务器可以运行此命令<br>any:任何人都可以运行此命令|
|
||||
|
||||
- args是一个包含object的列表,定义指令的参数。每个object都代表一个参数,object的顺序决定指令参数的输入顺序,每个object的参数说明如下
|
||||
|
||||
@@ -124,4 +124,4 @@ selection: true
|
||||
/explode ~~8~ 3 false
|
||||
让发送对象爆炸,爆炸范围为3,破坏方块,产生火焰
|
||||
/explode @s 3 true true
|
||||
```
|
||||
```
|
||||
@@ -92,30 +92,32 @@ playerId = clientApi.GetLocalPlayerId()
|
||||
ClientComp.CreateQueryVariable(levelId).Register("query.mod.ysm_is_create_flying", 0)
|
||||
ClientComp.CreateQueryVariable(levelId).Register("query.mod.ysm_is_elytra_flying", 0)
|
||||
|
||||
# key为需要监听的attr名称,value为需要设置的对应Molang变量名称
|
||||
queryDict = {
|
||||
"playerIsFlying": "query.mod.ysm_is_flying",
|
||||
"playerIsElytraFlying": "query.mod.ysm_is_elytra_flying"
|
||||
}
|
||||
|
||||
# 根据queryDict自动配置监听,简化代码
|
||||
def CreateAttrCallBack(bindQuery):
|
||||
def _eventFuckCallBack(args):
|
||||
ClientComp.CreateQueryVariable(args["entityId"]).Set(bindQuery, args["newValue"])
|
||||
return _eventFuckCallBack
|
||||
|
||||
class PlayerActionClientSystem(ClientSystem):
|
||||
def __init__(self, namespace, systemName):
|
||||
ClientSystem.__init__(self, namespace, systemName)
|
||||
# 注册本地玩家的属性值变化回调函数
|
||||
for attr, query in queryDict.items():
|
||||
ClientComp.CreateModAttr(playerId).RegisterUpdateFunc(attr, CreateAttrCallBack(query))
|
||||
modAttr = ClientComp.CreateModAttr(playerId)
|
||||
modAttr.RegisterUpdateFunc("playerIsCreateFlying", self.PlayerCreateFlyStateChanged)
|
||||
modAttr.RegisterUpdateFunc("playerIsElytraFlying", self.PlayerElytraFlyStateChanged)
|
||||
|
||||
def OnAddPlayerAOIClient(self, args):
|
||||
"""玩家加入游戏或进入视野时触发,注册属性值变化回调"""
|
||||
pId = args["playerId"]
|
||||
for attr, query in queryDict.items():
|
||||
ClientComp.CreateModAttr(pId).RegisterUpdateFunc(attr, CreateAttrCallBack(query))
|
||||
modAttr = ClientComp.CreateModAttr(pId)
|
||||
modAttr.RegisterUpdateFunc("playerIsCreateFlying", self.PlayerCreateFlyStateChanged)
|
||||
modAttr.RegisterUpdateFunc("playerIsElytraFlying", self.PlayerElytraFlyStateChanged)
|
||||
|
||||
def PlayerCreateFlyStateChanged(self, args):
|
||||
"""创造飞行状态变化回调"""
|
||||
molangVar = args["newValue"] # 属性变化后的值
|
||||
pId = args["entityId"] # 属性变化对应的实体Id
|
||||
ClientComp.CreateQueryVariable(pId).Set("query.mod.ysm_is_create_flying", molangVar)
|
||||
|
||||
def PlayerElytraFlyStateChanged(self, args):
|
||||
"""鞘翅飞行状态变化回调"""
|
||||
molangVar = args["newValue"] # 属性变化后的值
|
||||
pId = args["entityId"] # 属性变化对应的实体Id
|
||||
ClientComp.CreateQueryVariable(pId).Set("query.mod.ysm_is_elytra_flying", molangVar)
|
||||
```
|
||||
|
||||
### 工作流程说明
|
||||
|
||||
Reference in New Issue
Block a user