15.2 实体生成 & RayTraceResultJS & ItemStackJS及其他
本节内容:实体生成,RayTraceResultJS ,ItemStackJS,InventoryJS,PlayerStatsJS
一、实体生成
实体生成较为简单,你需要先新建一个实体,然后设置属性,再在合适的时间生成它即可
以下代码会在玩家在聊天栏发送内容时在玩家位置生成一个火球
createEntity的返回值为EntityJS,所以绝大多数15.1中的东西都是可以应用于实体生成的,这里就不再赘述了。
二、RayTraceResultJS
RayTraceResultJS 会返回玩家所看的方向、方块、实体等内容。
fromEntity
返回"视线"的来源
EntityJS
type
返回玩家看到的内容类型
字符串[1]
distance
返回目标距离玩家距离
浮点型
hitX
返回"视线"目标的X坐标
浮点型
hitY
返回"视线"目标的Y坐标
浮点型
hitZ
返回"视线"目标的Z坐标
浮点型
block
返回视线目标方块
BlockContainerJS
facing
返回视线的方向
Direction
entity[2]
返回视线目标实体
EntityJS
[1]:该值可以为"block"、"entity"和"miss"
[2]:因为KubeJS的特性,有关实体的内容仅在客户端侧可用且距离不得大于玩家的攻击距离。
值得注意的是,绝大多数的属性在玩家没有面向对象时均为null,也就是说在使用RayTraceResultJS时,必须先判断其值是否为null或者利用type来判断类型(否则你得到一堆报错)
以下例子为指南针添加了一个实用功能:返回其右键点击的方块id和属性并生成对应/setblock指令供玩家复制
三、ItemStackJS
1、属性
id
返回该物品组的id
字符串
tags
返回该物品组的tags
Collection tags
count
设置/返回该物品组中物品数量
int
block
返回当前物品是否为方块
布尔值
nbt
返回当前物品组的nbt
CompoundTag
nbtString
返回字符串形式的nbt
字符串
name
返回当前物品组的名称
Text
enchantments
返回当前物品组的附魔
MapJS
harvestSpeed
返回当前物品组的破坏速度
浮点型
itemGroup
返回当前物品组在创造物品栏的位置
字符串
vanillaPredicate
获取当前物品谓词(?)
Predicate
empty
返回当前物品组是否为空
布尔值
2、函数
hasTag(tag)
判断物品是否有指定tag
布尔值
withCount(整形 数量)
返回一个指定数量的物品组
ItemStackJS
hasNBT()
判断是否具有NBT
布尔值
removeNBT()
移除物品的NBT
void
withNBT(CompoundTag nbt)
返回具有指定NBT的物品组
ItemStackJS
withName(Text 名称)
返回一个具有指定名称的物品组
ItemStackJS
strongEquals(any)
将当前物品组与给定内容对比(同时比较数量等)
布尔值
hasEnchantment(字符串 附魔ID, 整形 等级)
判断当前物品组是否有给定的附魔
布尔值
enchant(字符串 附魔ID, 整形 等级)
返回一个添加了指定附魔的物品组
ItemStackJS
enchant(MapJS 附魔内容)
返回一个添加了指定附魔的物品组
ItemStackJS
ignoreNBT()
返回忽略的NBT的原料(配方相关)
IngredientJS
weakNBT()
返回部分忽略的NBT的原料(配方相关)
IngredientJS
areItemsEqual(ItemStackJS 对比对象)
将当前物品组与给定物品组对比
布尔值
isNBTEqual(ItemStackJS 对比对象)
将当前物品组与给定物品组的NBT对比
布尔值
getHarvestLevel(ToolType 工具类型, nullable PlayerJS 玩家, nullable BlockContainerJS 方块)
返回其挖掘等级
整形
getHarvestSpeed(nullable BlockContainerJS 方块)
返回其挖掘速度
浮点型
四、InventoryJS
你可以使用InventoryJS来快捷地操作玩家物品栏
get(int 格子编号)
返回指定格子的物品
ItemStackJS
set(int 格子编号,ItemStackJS 物品)
设置指定格子的物品
void
clear()
清空玩家背包
void
clear(ItemStackJS 物品)
清空玩家背包中指定物品
void
find()
返回玩家背包中有物品的格子编号[3]
整形
find(ItemStackJS 物品)
返回玩家背包中有指定物品的格子编号[3]
整形
count()
返回物品背包中物品总数[4]
整形
count(ItemStackJS 物品)
返回玩家背包中指定物品数[4]
整形
[3] 当无该物品时会返回 -1,有则为最小编号
[4] 当无物品时会返回 0
下图是玩家物品栏格子编号(图源:Minecraft Wiki)
五、PlayerStatsJS
PlayerStatsJS 允许你操作玩家的统计信息中的数据
get(命名空间)
返回玩家指定项的统计信息
整形
set(命名空间, 整形 值)
设置玩家指定项的统计信息
void
add(命名空间, 整形 值)
为玩家指定项的统计信息添加值
void
getBlocksMined(命名空间)
返回玩家破坏指定方块的统计信息的值
整形
getItemsCrafted(命名空间)
返回玩家合成指定物品的统计信息的值
整形
getItemsUsed(命名空间)
返回玩家使用指定物品的统计信息的值
整形
getItemsBroken(命名空间)
返回玩家用坏指定物品的统计信息的值
整形
getItemsPickedUp(命名空间)
返回玩家捡起指定物品的统计信息的值
整形
getItemsDropped(命名空间)
返回玩家丢弃指定物品的统计信息的值
整形
getKilled(命名空间)
返回玩家杀死指定生物的统计信息的值
整形
getKilledBy(命名空间)
返回玩家被指定生物杀死的统计信息的值
整形
这有帮助吗?