EnchantItemEvent

EnchantItemEvent

继承关系

=> org.bukkit.event.Event
​
=> org.bukkit.event.inventory.InventoryEvent
​
=> org.bukkit.event.enchantment.EnchantItemEvent

类描述

Called when an ItemStack is successfully enchanted (currently at
enchantment table)
当玩家为某物品堆完成附魔时触发(目前本事件仅会在玩家使用附魔台附魔时触发)。
译注:所谓“仅会在玩家使用附魔台附魔时触发”,指使用铁砧附魔时不触发本事件。
PrepareItemEnchantEvent 是在附魔备选项生成时触发的。比如玩家向周遭环绕着充足有效书架的附魔台中放入一件物品,则会生成三个备选项,触发 PrepareItemEnchantEvent ,此时不会消耗经验。玩家可以将很多种不同的物品(如不同材质的剑、镐等)放入附魔台中,查看预期得到的附魔,多次触发 PrepareItemEnchantEvent 。而 EnchantItemEvent 则是在玩家点击了某个备选项,消耗了经验等级,实际完成附魔时触发的。

方法列表

getEnchanter

方法声明: public Player getEnchanter()
方法签名: ()Lorg/bukkit/entity/Player;
Gets the player enchanting the item
@return enchanting player
该方法用于获取附魔物品的玩家。
@return 附魔物品的玩家。

getEnchantBlock

方法声明: public Block getEnchantBlock()
方法签名: ()Lorg/bukkit/block/Block;
Gets the block being used to enchant the item
@return the block used for enchanting
该方法用于获取附魔所用的附魔台方块。
@return 附魔所用的附魔台方块。

getItem

方法声明: public ItemStack getItem()
方法签名: ()Lorg/bukkit/inventory/ItemStack;
Gets the item to be enchanted (can be modified)
@return ItemStack of item
该方法用于获取将被附魔的物品堆对象(该对象可以直接修改)。
@return 将被附魔的物品堆对象。
译注:本方法所返回的物品堆还没有被附魔。当所有监听器被调用完毕后,将会以本方法所返回的物品堆为基础,添加附魔。本事件没有 setItem(ItemStack) 方法,因此需要直接修改 getItem() 方法所返回的物品堆对象,比如对返回值调用 setItemMeta(ItemMeta) 方法等。

getExpLevelCost

方法声明: public int getExpLevelCost()
方法签名: ()I
Gets the cost (minimum level) which is displayed as a number on the right
hand side of the enchantment offer.
@return experience level cost
该方法用于获取界面右侧所显示的附魔需求的最低经验等级。
@return 附魔需求的最低经验等级。
译注:本方法所返回的是十级、二十级、三十级这样的附魔所需最低等级。玩家附魔实际消耗的等级是固定的(十级附魔消耗一级经验等级,二十级附魔消耗二级经验等级,三十级附魔消耗三级经验等级)。但是随着书架数量的增减,玩家附魔所需要达到的等级会发生变化。如果需要获取实际消耗的等级,可以使用 whichButton() 方法进行计算。

setExpLevelCost

方法声明: public void setExpLevelCost(int level)
方法签名: (I)V
Sets the cost (minimum level) which is displayed as a number on the right
hand side of the enchantment offer.
@param level - cost in levels
该方法用于设置界面右侧所显示的附魔需求的最低经验等级。
@param level 附魔需求的最低经验等级。
译注:见上。

getEnchantsToAdd

方法声明: public Map<Enchantment, Integer> getEnchantsToAdd()
方法签名: ()Ljava/util/Map;
Get map of enchantment (levels, keyed by type) to be added to item
(modify map returned to change values). Note: Any enchantments not
allowed for the item will be ignored
@return map of enchantment levels, keyed by enchantment
该方法用于获取一个 Map ,其键为附魔类型,值为附魔等级,用于存储将要添加到物品堆上的全部附魔。可以修改本方法的返回值来修改附魔结果。注意,如果向该 Map 中添加某种不可被附魔到涉事物品堆上的附魔,则该附魔会被忽略。
@return 一个 Map ,其键为附魔类型,值为附魔等级。
译注:比如将要给钻石镐添加五级效率附魔,则该方法返回的 Map 中,将存在一个键值对,其键为 Enchantment.DIG_SPEED ,值为 5 。

whichButton

方法声明: public int whichButton()
方法签名: ()I
Which button was pressed to initiate the enchanting.
@return The button index (0, 1, or 2).
该方法用于获取附魔时所点击的按钮序号。
@return 按钮序号(返回零、一或二)。
译注:即附魔台界面右侧的三个附魔选项,每个选项对应不同的经验等级消耗。玩家附魔实际消耗的等级是固定的(十级附魔消耗一级经验等级,二十级附魔消耗二级经验等级,三十级附魔消耗三级经验等级)。本方法返回值加一,即为玩家实际消耗的经验等级数。随着书架数量的增减,玩家附魔所需要达到的等级会发生变化。如果需要获取附魔最低所需等级,可以调用 getExpLevelCost() 方法。

isCancelled

方法声明: public boolean isCancelled()
方法签名: ()Z

setCancelled

方法声明: public void setCancelled(boolean cancel)
方法签名: (Z)V

getHandlers

方法声明: public HandlerList getHandlers()
方法签名: ()Lorg/bukkit/event/HandlerList;

getHandlerList

方法声明: public static HandlerList getHandlerList()
方法签名: ()Lorg/bukkit/event/HandlerList;