MMOItems 事件 API 知识文档
MMOItems 提供了丰富的事件系统,允许开发者监听和处理各种物品相关的操作。本文档详细介绍了所有可用的事件类及其使用方法。
Overview
MMOItems 事件 API 文档
概述
MMOItems 提供了丰富的事件系统,允许开发者监听和处理各种物品相关的操作。本文档详细介绍了所有可用的事件类及其使用方法。
事件类目录
基础事件类
PlayerDataEvent
包: net.Indyuce.mmoitems.api.event
继承: PlayerEvent, Cancellable
描述: 所有玩家相关事件的基类,包含玩家数据。
| 方法 | 返回类型 | 描述 |
|---|---|---|
getPlayerData() |
PlayerData |
获取玩家数据 |
isCancelled() |
boolean |
检查事件是否被取消 |
setCancelled(boolean) |
void |
设置事件取消状态 |
物品构建相关事件
GenerateLoreEvent
包: net.Indyuce.mmoitems.api.event
继承: Event
状态: 已弃用 – 将在未来版本移除,建议使用脚本替代
描述: 当生成物品Lore时触发。
| 方法 | 返回类型 | 描述 |
|---|---|---|
getItem() |
MMOItem |
获取正在生成Lore的MMOItem |
getBuilder() |
LoreBuilder |
获取用于构建Lore的LoreBuilder |
getLore() |
List<String> |
获取占位符解析前的Lore列表 |
getParsedLore() |
List<String> |
获取占位符解析后的Lore列表 |
setFinalLore(List<String>) |
void |
设置物品的最终Lore |
ItemBuildEvent
包: net.Indyuce.mmoitems.api.event
继承: Event
状态: 已弃用 – 将在未来版本移除,建议使用脚本替代
描述: 当构建物品时触发。
| 方法 | 返回类型 | 描述 |
|---|---|---|
getItemStack() |
ItemStack |
获取物品堆栈 |
setItemStack(ItemStack) |
ItemBuildEvent |
设置物品堆栈 |
物品重铸事件
MMOItemReforgeEvent
包: net.Indyuce.mmoitems.api.event
继承: Event, Cancellable
描述: 当物品正在被重铸时触发。
| 方法 | 返回类型 | 描述 |
|---|---|---|
getReforger() |
MMOItemReforger |
获取重铸器实例 |
getOptions() |
ReforgeOptions |
获取重铸选项 |
getPlayer() |
Player |
获取玩家(可能为null) |
getType() |
Type |
获取物品类型 |
getTypeName() |
String |
获取物品类型名称 |
getID() |
String |
获取物品ID |
getOldMMOItem() |
LiveMMOItem |
获取旧的MMOItem |
getNewMMOItem() |
MMOItem |
获取新的MMOItem |
MMOItemReforgeFinishEvent
包: net.Indyuce.mmoitems.api.event
继承: Event, Cancellable
描述: 当物品重铸完成时触发。
| 方法 | 返回类型 | 描述 |
|---|---|---|
getReforger() |
MMOItemReforger |
获取重铸器实例 |
getOptions() |
ReforgeOptions |
获取重铸选项 |
getFinishedItem() |
ItemStack |
获取完成的重铸物品 |
setFinishedItem(ItemStack) |
void |
设置完成的重铸物品 |
物品掉落事件
ItemDropEvent
包: net.Indyuce.mmoitems.api.event
继承: Event, Cancellable
描述: 当物品掉落时触发。
| 方法 | 返回类型 | 描述 |
|---|---|---|
getDrops() |
List<ItemStack> |
获取掉落物品列表 |
getCause() |
DropCause |
获取掉落原因 |
getWhoDropped() |
LivingEntity |
获取掉落者 |
getMinedBlock() |
Block |
获取挖掘的方块(仅当原因为NORMAL_BLOCK时) |
getKilledEntity() |
Entity |
获取被杀的实体(仅当原因为NORMAL_MONSTER时) |
getKilledMythicMobName() |
String |
获取被杀的神话怪物名称 |
DropCause枚举:
NORMAL_BLOCK: 从普通方块掉落NORMAL_MONSTER: 从普通怪物掉落MYTHIC_MOB: 从神话怪物掉落(已弃用)CUSTOM_BLOCK: 从自定义方块掉落
合成站事件
PlayerUseCraftingStationEvent
包: net.Indyuce.mmoitems.api.event
继承: PlayerDataEvent
描述: 当玩家使用合成站时触发。
| 方法 | 返回类型 | 描述 |
|---|---|---|
getStation() |
CraftingStation |
获取合成站 |
hasRecipeInfo() |
boolean |
检查是否有配方信息 |
getRecipeInfo() |
CheckedRecipe |
获取配方信息 |
hasResult() |
boolean |
检查是否有结果物品 |
getResult() |
ItemStack |
获取结果物品 |
getRecipe() |
Recipe |
获取配方 |
getInteraction() |
StationAction |
获取交互类型 |
StationAction枚举:
UPGRADE_RECIPE: 使用升级配方INTERACT_WITH_RECIPE: 与非即时配方交互INSTANT_RECIPE: 使用即时配方CRAFTING_QUEUE: 从合成队列领取物品CANCEL_QUEUE: 取消队列中的物品
物品交互事件
ApplyGemStoneEvent
包: net.Indyuce.mmoitems.api.event.item
继承: PlayerDataEvent
描述: 当玩家尝试应用宝石到物品上时触发。
| 方法 | 返回类型 | 描述 |
|---|---|---|
getGemStone() |
VolatileMMOItem |
获取宝石 |
getTargetItem() |
MMOItem |
获取目标物品 |
getResult() |
GemStone.ResultType |
获取结果类型 |
setResult(GemStone.ResultType) |
void |
设置结果类型 |
ApplySoulboundEvent
包: net.Indyuce.mmoitems.api.event.item
继承: PlayerDataEvent
描述: 当玩家尝试给物品绑定灵魂时触发。
| 方法 | 返回类型 | 描述 |
|---|---|---|
getConsumable() |
VolatileMMOItem |
获取消耗品 |
getTargetItem() |
NBTItem |
获取目标物品 |
BreakSoulboundEvent
包: net.Indyuce.mmoitems.api.event.item
继承: PlayerDataEvent
描述: 当玩家尝试解除物品的灵魂绑定时触发。
| 方法 | 返回类型 | 描述 |
|---|---|---|
getConsumable() |
VolatileMMOItem |
获取消耗品 |
getTargetItem() |
NBTItem |
获取目标物品 |
ConsumableConsumedEvent
包: net.Indyuce.mmoitems.api.event.item
继承: PlayerDataEvent
描述: 当玩家消耗消耗品时触发。
| 方法 | 返回类型 | 描述 |
|---|---|---|
getMMOItem() |
VolatileMMOItem |
获取MMOItem |
getUseItem() |
Consumable |
获取使用的消耗品 |
isConsume() |
Boolean |
检查是否消耗(可能为null) |
isConsume(boolean) |
boolean |
检查是否消耗(带默认值) |
setConsume(Boolean) |
void |
设置是否消耗 |
DeconstructItemEvent
包: net.Indyuce.mmoitems.api.event.item
继承: PlayerDataEvent
描述: 当玩家分解物品时触发。
| 方法 | 返回类型 | 描述 |
|---|---|---|
getConsumable() |
VolatileMMOItem |
获取消耗品 |
getDeconstructedItem() |
NBTItem |
获取被分解的物品 |
getLoot() |
List<ItemStack> |
获取战利品列表 |
IdentifyItemEvent
包: net.Indyuce.mmoitems.api.event.item
继承: PlayerDataEvent
描述: 当玩家鉴定物品时触发。
| 方法 | 返回类型 | 描述 |
|---|---|---|
getConsumable() |
VolatileMMOItem |
获取消耗品 |
getUnidentifiedItem() |
NBTItem |
获取未鉴定的物品 |
RepairItemEvent
包: net.Indyuce.mmoitems.api.event.item
继承: PlayerDataEvent
描述: 当玩家修复物品时触发。
| 方法 | 返回类型 | 描述 |
|---|---|---|
getConsumable() |
VolatileMMOItem |
获取消耗品 |
getTargetItem() |
NBTItem |
获取目标物品 |
getRepaired() |
int |
获取修复的耐久度 |
setRepaired(int) |
void |
设置修复的耐久度 |
UpgradeItemEvent
包: net.Indyuce.mmoitems.api.event.item
继承: PlayerDataEvent
描述: 当玩家升级物品时触发。
| 方法 | 返回类型 | 描述 |
|---|---|---|
getConsumable() |
VolatileMMOItem |
获取消耗品 |
getTargetItem() |
MMOItem |
获取目标物品 |
getConsumableData() |
UpgradeData |
获取消耗品的升级数据 |
getTargetData() |
UpgradeData |
获取目标物品的升级数据 |
UnsocketGemStoneEvent
包: net.Indyuce.mmoitems.api.event.item
继承: PlayerDataEvent
描述: 当玩家移除宝石时触发。
| 方法 | 返回类型 | 描述 |
|---|---|---|
getConsumable() |
VolatileMMOItem |
获取消耗品 |
getTargetItem() |
MMOItem |
获取目标物品 |
耐久度相关事件
CustomDurabilityDamage
包: net.Indyuce.mmoitems.api.event.item
继承: Event, Cancellable
描述: 当自定义耐久度物品受损时触发。
| 方法 | 返回类型 | 描述 |
|---|---|---|
getItem() |
CustomDurabilityItem |
获取物品 |
getDurabilityDecrease() |
int |
获取耐久度减少值 |
ItemCustomRepairEvent
包: net.Indyuce.mmoitems.api.event.item
继承: Event, Cancellable
描述: 当自定义耐久度物品被修复时触发。
| 方法 | 返回类型 | 描述 |
|---|---|---|
hasPlayer() |
boolean |
检查是否有玩家 |
getPlayer() |
Player |
获取玩家 |
getDurabilityIncrease() |
int |
获取耐久度增加值 |
getSourceItem() |
CustomDurabilityItem |
获取源物品 |
武器使用事件
SpecialWeaponAttackEvent
包: net.Indyuce.mmoitems.api.event.item
继承: PlayerDataEvent, Cancellable
描述: 当玩家使用特殊武器攻击时触发。
| 方法 | 返回类型 | 描述 |
|---|---|---|
getWeapon() |
Weapon |
获取武器 |
getTarget() |
LivingEntity |
获取目标 |
UntargetedWeaponUseEvent
包: net.Indyuce.mmoitems.api.event.item
继承: PlayerDataEvent, Cancellable
描述: 当玩家使用无目标武器时触发。
| 方法 | 返回类型 | 描述 |
|---|---|---|
getWeapon() |
Weapon |
获取武器 |
物品装备事件
ItemEquipEvent
包: net.Indyuce.mmoitems.api.event.item
继承: PlayerDataEvent, Cancellable
描述: 当玩家装备物品时触发。
| 方法 | 返回类型 | 描述 |
|---|---|---|
getItem() |
ItemStack |
获取物品 |
其他事件
BouncingCrackBlockBreakEvent
包: net.Indyuce.mmoitems.api.event
继承: BlockBreakEvent
描述: 当弹跳裂痕方块被破坏时触发。
CraftMMOItemEvent
包: net.Indyuce.mmoitems.api.event
继承: PlayerDataEvent
状态: 已弃用 – 不再使用
描述: 当合成MMOItem时触发。
MMOItemsReloadEvent
包: net.Indyuce.mmoitems.api.event
继承: Event
描述: 当MMOItems重载时触发。
RefreshInventoryEvent
包: net.Indyuce.mmoitems.api.event
继承: Event
状态: 已弃用 – 请使用ItemEquipEvent和ItemUnequipEvent
描述: 当刷新玩家库存时触发。
使用示例
监听物品掉落事件
@EventHandler
public void onItemDrop(ItemDropEvent event) {
if (event.getCause() == ItemDropEvent.DropCause.NORMAL_BLOCK) {
// 处理普通方块掉落
Block block = event.getMinedBlock();
// ... 其他逻辑
}
}
监听物品重铸事件
@EventHandler
public void onReforge(MMOItemReforgeEvent event) {
if (event.getTypeName().equals("SWORD")) {
// 只处理剑类物品
event.setCancelled(true); // 取消重铸
}
}
监听宝石应用事件
@EventHandler
public void onGemApply(ApplyGemStoneEvent event) {
if (event.getResult() == GemStone.ResultType.SUCCESS) {
// 宝石应用成功
Player player = event.getPlayer();
// ... 发送消息或其他逻辑
}
}
监听特殊武器攻击
@EventHandler
public void onSpecialAttack(SpecialWeaponAttackEvent event) {
Weapon weapon = event.getWeapon();
LivingEntity target = event.getTarget();
// 检查武器类型
if (weapon.getType().equals("STAFF")) {
// 处理法杖攻击
}
}
注意事项
- 弃用事件: 标记为
@Deprecated的事件将在未来版本中移除,建议尽快迁移到替代方案 - 异步支持: 部分事件可能不支持异步,请查看事件文档说明
- 取消事件: 实现
Cancellable接口的事件可以被取消,取消后将阻止默认行为 - 线程安全: 确保事件处理器是线程安全的,特别是当事件可能从异步上下文触发时
最佳实践
- 检查事件类型: 在处理事件前,先检查事件的具体类型和属性
- 及时取消: 如果决定取消事件,尽早调用
setCancelled(true) - 避免阻塞: 事件处理器应快速执行,避免长时间阻塞
- 错误处理: 妥善处理可能出现的异常,避免影响其他插件
版本兼容性
请根据使用的MMOItems版本参考对应的事件API文档。不同版本之间的事件API可能有差异,建议在升级前测试事件处理器的兼容性。