Skip to content

玩家库存改变事件

该代码在server脚本里

玩家库存改变事件有两种调取方式

  1. PlayerEvents.inventoryChanged(itemId, event => {}) 第一种是指定物品进入玩家库存捕捉获取事件
  2. PlayerEvents.inventoryChanged(event => {}) 第二种是捕捉所有进入玩家库存事件

可被直接访问的方法

方法名 方法用处 返回类型 直接调用值
getEntity() 获取改变库存的实体,一般指玩家 Entity entity
getItem() 导致玩家库存改变的物品 ItemStack item
getLevel() 玩家库存改变所在的世界 Level level
getPlayer() 改变库存的玩家 Player player
getServer() 改变库存的玩家服务端 MinecraftServer server
getSlot() 玩家库存改变的所在位置 number slot
hasGameStage(String) 是否有阶段 boolean -
removeGameStage(String) 删除阶段 void -
addGameStage(String) 添加阶段 void -

示例

下方示例在玩家背包库存发生改变时,检测导致改变的物品是否为被禁用的物品,如果是则删除该物品

js
const banItems = [
    'minecraft:nether_star',
    'minecraft:lapis_lazuli',
    'minecraft:emerald',
    'minecraft:copper_ingot'
];

PlayerEvents.inventoryChanged(event=>{
    let item = event.getItem()
    if (undefined != banItems.find(value=> value==item.id)){
        event.getPlayer().getInventory().clear(item)
        event.player.tell("发现违禁品 " + item.displayName.getString() + " 已删除!!!")
    }  
})

const banItems = [] 定义一个数组,里面放上我们管控的物品id

使用 banItems.find(value=> value==item.id) 来判断物品是否为管控物品,如果如果部位管控物品会返回undefined

所以这里只需要是否为undefined就可以判断物品是否是禁用的

event.getPlayer().getInventory().clear(item) 这行代码代表清除该物品

并且使用 event.player.tell() 来给玩家发送信息提示告知玩家物品被清除了

贡献者

页面历史

布局切换

调整 VitePress 的布局样式,以适配不同的阅读习惯和屏幕环境。

全部展开
使侧边栏和内容区域占据整个屏幕的全部宽度。
全部展开,但侧边栏宽度可调
侧边栏宽度可调,但内容区域宽度不变,调整后的侧边栏将可以占据整个屏幕的最大宽度。
全部展开,且侧边栏和内容区域宽度均可调
侧边栏宽度可调,但内容区域宽度不变,调整后的侧边栏将可以占据整个屏幕的最大宽度。
原始宽度
原始的 VitePress 默认布局宽度

页面最大宽度

调整 VitePress 布局中页面的宽度,以适配不同的阅读习惯和屏幕环境。

调整页面最大宽度
一个可调整的滑块,用于选择和自定义页面最大宽度。

内容最大宽度

调整 VitePress 布局中内容区域的宽度,以适配不同的阅读习惯和屏幕环境。

调整内容最大宽度
一个可调整的滑块,用于选择和自定义内容最大宽度。

聚光灯

支持在正文中高亮当前鼠标悬停的行和元素,以优化阅读和专注困难的用户的阅读体验。

ON 开启
开启聚光灯。
OFF 关闭
关闭聚光灯。