下面列出了怎么用org.bukkit.event.player.PlayerItemDamageEvent的API类实例代码及写法,或者点击链接到github查看源代码。
@EventHandler(ignoreCancelled = true)
public void onElytraDamage(PlayerItemDamageEvent event) {
if (!event.getPlayer().isGliding()) {
return;
}
if (event.getItem().getType() != Material.ELYTRA) {
return;
}
if (!modManager.isArmorViable(event.getItem())) {
return;
}
Random rand = new Random();
int chance = rand.nextInt(100);
if (chance < ConfigurationManager.getConfig("Elytra.yml").getInt("ExpChanceWhileFlying")) {
modManager.addExp(event.getPlayer(), event.getItem(), MineTinker.getPlugin().getConfig().getInt("ExpPerEntityHit"));
}
}
@SuppressWarnings("deprecation")
@Override
public void onDurabilityChange(PlayerItemDamageEvent event) {
event.setDamage(0);
event.getPlayer().updateInventory();
// LinkedList<ItemDurabilityEntry> entries = CustomItemManager.itemDuraMap.get(player.getName());
//
// if (entries == null) {
// entries = new LinkedList<ItemDurabilityEntry>();
// }
//
// ItemDurabilityEntry entry = new ItemDurabilityEntry();
// entry.stack = stack;
// entry.oldValue = stack.getDurability();
//
// entries.add(entry);
// CustomItemManager.itemDuraMap.put(player.getName(), entries);
//
// if (!CustomItemManager.duraTaskScheduled) {
// TaskMaster.syncTask(new ItemDuraSyncTask());
// }
}
@EventHandler
public void onItemUse(PlayerItemDamageEvent event) {
ItemStack item = event.getItem();
if (modManager.isToolViable(item) && modManager.isArmorViable(item) && modManager.isWandViable(item)) {
return;
}
if (!MineTinker.getPlugin().getConfig().getBoolean("ItemBehaviour.ConvertItemsOnUse", true)) {
return;
}
modManager.convertItemStack(event.getItem(), event.getPlayer());
}
public PlayerCustomItemDamageEvent(PlayerItemDamageEvent event, CustomItem cItem) {
super(event.getPlayer(), event.getItem(), event.getDamage());
if (cItem.isUnbreakable()) {
this.setDamage(0);
}
this.setCancelled(event.isCancelled());
this.cItem = cItem;
}
@EventHandler(priority = EventPriority.HIGHEST)
public void onItemDamage(PlayerItemDamageEvent event) {
if (event.isCancelled())
return;
Player player = event.getPlayer();
Bukkit.getScheduler().scheduleSyncDelayedTask(AdditionsAPI.getInstance(), () -> {
sendDurabilityBossBar(player, player.getInventory().getItemInMainHand(), EquipmentSlot.HAND);
sendDurabilityBossBar(player, player.getInventory().getItemInOffHand(), EquipmentSlot.OFF_HAND);
});
}
/**
* Reduces the durability of the CustomItemStack, whether it's using Fake
* Durability or not. It uses the {@link PlayerCustomItemDamageEvent}, so it
* could be cancelled.
*
* @param durabilityToReduce
* The amount of durability that will be reduced
*/
public CustomItemStack reduceDurability(Player player, int durabilityToReduce) {
GameMode gm = player.getGameMode();
if (itemStack == null)
return this;
if ((gm.equals(GameMode.SURVIVAL) || gm.equals(GameMode.ADVENTURE)))
if (cItem.hasFakeDurability())
Bukkit.getPluginManager()
.callEvent(new PlayerCustomItemDamageEvent(player, getItemStack(), durabilityToReduce, cItem));
else if (!cItem.isUnbreakable())
Bukkit.getPluginManager().callEvent(new PlayerItemDamageEvent(player, itemStack, durabilityToReduce));
return this;
}
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onPlayerItemDamageEvent(PlayerItemDamageEvent event)
{
Player player = event.getPlayer();
ApplicableRegionSet regions = this.plugin.getWorldGuardCommunicator().getRegionContainer().createQuery().getApplicableRegions(player.getLocation());
if (WorldGuardUtils.queryState(player, player.getWorld(), regions.getRegions(), Flags.ITEM_DURABILITY) == State.DENY)
{
event.setCancelled(true);
}
}
@EventHandler(priority = EventPriority.LOW)
public void onItemDurabilityChange(PlayerItemDamageEvent event) {
ItemStack stack = event.getItem();
LoreCraftableMaterial craftMat = LoreCraftableMaterial.getCraftMaterial(stack);
if (craftMat == null) {
return;
}
craftMat.onItemDurabilityChange(event);
}
@EventHandler(ignoreCancelled = true)
public void effect(PlayerItemDamageEvent event) {
if (useMending) {
return;
}
ItemStack tool = event.getItem();
if (!modManager.isToolViable(tool) && !modManager.isArmorViable(tool)) {
return;
}
if (!event.getPlayer().hasPermission("minetinker.modifiers.selfrepair.use")) {
return;
}
if (!modManager.hasMod(tool, this)) {
return;
}
int level = modManager.getModLevel(tool, this);
Random rand = new Random();
int n = rand.nextInt(100);
int c = this.percentagePerLevel * level;
if (n <= c) {
if (tool.getItemMeta() instanceof Damageable) {
Damageable damageable = (Damageable) tool.getItemMeta();
int dura = damageable.getDamage();
int newDura = dura - this.healthRepair;
if (newDura < 0) {
newDura = 0;
}
damageable.setDamage(newDura);
tool.setItemMeta((ItemMeta) damageable);
ChatWriter.logModifier(event.getPlayer(), event, this, tool, String.format("Chance(%d/%d)", n, c),
String.format("Repair(%d -> %d)", dura, newDura));
return;
}
}
ChatWriter.logModifier(event.getPlayer(), event, this, tool, String.format("Chance(%d/%d)", n, c));
}
public PlayerCustomArmorDamageEvent(PlayerItemDamageEvent event, CustomArmor cArmor, DamageCause damageCause, short durability) {
super(event, cArmor);
event.setDamage(durability);
setDamageCause(damageCause);
}
@EventHandler(priority = EventPriority.LOWEST)
public void customItemCheck(PlayerItemDamageEvent event) {
if (AdditionsAPI.isCustomItem(event.getItem()) && !(event instanceof PlayerCustomItemDamageEvent))
event.setCancelled(true);
}
public void onItemDurabilityChange(PlayerItemDamageEvent event) {
for (ItemComponent comp : this.components.values()) {
comp.onDurabilityChange(event);
}
}
public void onDurabilityChange(PlayerItemDamageEvent event) {}