# 行为
# EntityUseItemToPos
服务端
method in mod.server.component.gameCompServer.GameComponentServer
描述
模拟实体对某个坐标使用指定物品。
参数
参数名 数据类型说明 entityId str 使用物品的实体id,实体的位置会影响摆放方块的朝向 itemDict dict 使用的物品字典数据 pos tuple(int,int,int) 方块坐标 facing int 点击方块的面向,详见Facing枚举 返回值
数据类型说明 dict 成功:返回使用过后的物品字典; 失败:返回None 备注
- 如果物品使用后会返还新物品,则会优先放入entity的背包,如果背包满了,则会在entity位置掉落出来。如水桶、水瓶等。
- 如果方块、物品的逻辑涉及到玩家,则会使用失败。如拴绳、磁石指针等,以及容器类方块、床、告示牌等;其中方块是可以摆放,但无法使用。
- 如果方块本身有使用的功能、且不依赖物品,则该接口返回的itemDict不会有变化。如按钮、拉杆等。
- 使用失败的情况可能如下:实体不存在,itemDict为空物品或错误物品字典,坐标方块为空气,坐标区块未加载,无法对方块使用该物品等等。
- 如果entityId传入的是playerId,则当该玩家处于创造模式、冒险模式下,返回的itemDict的重要数据(如newItemName、count、durability等等不会有变化,即不会扣除物品数量、不会掉耐久。在必须使用playerId时需注意。
- 对某些方块使用物品成功后,接口返回的itemDict的重要数据(如newItemName、count、durability等等)没有发生变化,此时的意思是接口使用成功,但物品没有发生更改,需开发者注意甄别。
- 如 物品展示框,堆肥桶,蛋糕,按钮,拉杆,比较器,中继器,阳光传感器,纹饰陶罐,门,活板门,栅栏门,唱片机,龙蛋,等等。
- 使用打火石激活传送门时,会返回None,需开发者自行做判断。
- 该接口会触发ActorUseItemServerEvent。
示例
import mod.server.extraServerApi as serverApi
levelId = serverApi.GetLevelId()
comp = serverApi.GetEngineCompFactory().CreateGame(levelId)
itemDict = {
"newItemName": "minecraft:water_bucket",
"newAuxValue": 0,
"count": 1
}
print(comp.EntityUseItemToPos(entityId, itemDict, (30, 64, 30), 1))
# UseItemAttackEntity
服务端
method in mod.server.component.gameCompServer.GameComponentServer
描述
使用指定物品攻击某个实体。
参数
参数名 数据类型说明 itemDict dict 物品字典数据 entityId str 攻击实体id cause str 伤害类型,默认值是EntityAttack,详见Minecraft枚举值文档的ActorDamageCause attackerPos tuple(float,float,float) 伤害来源坐标,默认值为None,该参数会影响击退效果的计算 knocked bool 是否击退,默认值为False,如果设置为True,需同时设置attackerPos customTag str 标识自定义伤害来源,只在cause为Custom生效,可在ActorHurtServerEvent、ActuallyHurtServerEvent、DamageEvent、PlayerHurtEvent、PlayerDieEvent、MobDieEvent监听到标识 damageFormula str 伤害计算公式的字符串,公式格式参考以下备注,默认值为None 返回值
数据类型说明 dict 成功:返回使用过后的物品字典;失败:返回None 备注
- 无攻击力的物品,将会没有伤害(接口调用返回None)。
- 有耐久的物品在攻击后,将会扣除部分耐久。
- 可通过DamageEvent等事件修改伤害值。
- 如果itemDict写入了不可添加到该物品的附魔,该附魔效果将不会生效,返回的itemDict也不会带有该附魔信息。如果有需求,可考虑将附魔信息写入userData。
- 公式参考:
(%value% * 2 + 10.5),其中%value%表示初始的伤害值,仅能使用+-*/以及(),仅能使用单条公式,数值是做浮点运算。公式字符串的长度必须小于256。 - 如果公式解析失败,则会返回None。
示例
import mod.server.extraServerApi as serverApi
levelId = serverApi.GetLevelId()
comp = serverApi.GetEngineCompFactory().CreateGame(levelId)
itemDict = {
"newItemName": "minecraft:iron_sword",
"newAuxValue": 0,
"count": 1,
"durability": 256,
"enchantData": [(9,1)]
}
print(comp.UseItemAttackEntity(itemDict, entityId))
# UseItemToEntity
服务端
method in mod.server.component.gameCompServer.GameComponentServer
描述
模拟对某个实体使用物品。
参数
参数名 数据类型说明 itemDict dict 物品字典数据 entityId str 目标实体id 返回值
数据类型说明 dict 成功:返回使用过后的物品字典;失败:返回None 备注
- 部分需要使用者的行为,调用该接口会失败。如对实体使用拴绳、驯服、交易、乘骑、让宠物坐下、让动物信任自己等等
示例
import mod.server.extraServerApi as serverApi
levelId = serverApi.GetLevelId()
gameComp = serverApi.GetEngineCompFactory().CreateGame(levelId)
itemDict = {
"newItemName": "minecraft:carrot",
"newAuxValue": 0,
"count": 1
}
print( gameComp.UseItemToEntity(itemDict, entityId) )