mirror of
https://gitlab.com/phoenix-dvpmt/mmoitems.git
synced 2025-03-31 17:35:43 +02:00
Merge branch 'master' into 'crafting'
# Conflicts: # src/main/java/net/Indyuce/mmoitems/listener/DurabilityListener.java
This commit is contained in:
commit
d1d08830fb
@ -103,6 +103,7 @@ public class ItemStats {
|
||||
MAX_DURABILITY = new MaximumDurability(),
|
||||
DURABILITY_BAR = new DurabilityBar(),
|
||||
WILL_BREAK = new LostWhenBroken(),
|
||||
DURABILITY_BAR = new DurabilityBar(),
|
||||
NAME = new DisplayName(),
|
||||
LORE = new Lore(),
|
||||
NBT_TAGS = new NBTTags(),
|
||||
|
@ -8,6 +8,7 @@ import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
|
||||
import org.bukkit.event.entity.EntityShootBowEvent;
|
||||
import org.bukkit.event.player.PlayerItemDamageEvent;
|
||||
import org.bukkit.event.player.PlayerItemMendEvent;
|
||||
import org.bukkit.inventory.EquipmentSlot;
|
||||
@ -19,11 +20,13 @@ import java.util.List;
|
||||
public class DurabilityListener implements Listener {
|
||||
private final List<DamageCause> ignoredCauses = Arrays.asList(DamageCause.DROWNING, DamageCause.SUICIDE, DamageCause.FALL, DamageCause.VOID,
|
||||
DamageCause.FIRE_TICK, DamageCause.SUFFOCATION, DamageCause.POISON, DamageCause.WITHER, DamageCause.STARVATION, DamageCause.MAGIC);
|
||||
|
||||
private final EquipmentSlot[] slots = { EquipmentSlot.HEAD, EquipmentSlot.CHEST, EquipmentSlot.LEGS, EquipmentSlot.FEET };
|
||||
|
||||
/**
|
||||
* Handles custom durability for non-'vanilla durability' items
|
||||
*/
|
||||
<<<<<<< src/main/java/net/Indyuce/mmoitems/listener/DurabilityListener.java
|
||||
// @EventHandler(ignoreCancelled = true)
|
||||
// public void playerDamage(EntityDamageEvent event) {
|
||||
// if (event.getEntityType() != EntityType.PLAYER || ignoredCauses.contains(event.getCause()))
|
||||
@ -56,6 +59,40 @@ public class DurabilityListener implements Listener {
|
||||
//
|
||||
// handleVanillaDamage(item, player, EquipmentSlot.HAND, 1);
|
||||
// }
|
||||
=======
|
||||
@EventHandler(ignoreCancelled = true)
|
||||
public void playerDamage(EntityDamageEvent event) {
|
||||
if (event.getEntityType() != EntityType.PLAYER || ignoredCauses.contains(event.getCause()))
|
||||
return;
|
||||
|
||||
Player player = (Player) event.getEntity();
|
||||
int damage = Math.max((int) event.getDamage() / 4, 1);
|
||||
for(EquipmentSlot slot : slots)
|
||||
if(hasItem(player, slot))
|
||||
handleVanillaDamage(player.getInventory().getItem(slot), player, slot, damage);
|
||||
}
|
||||
|
||||
@EventHandler(ignoreCancelled = true)
|
||||
public void playerMeleeAttack(EntityDamageByEntityEvent event) {
|
||||
if (event.getDamage() == 0 || event.getCause() != DamageCause.ENTITY_ATTACK || !(event.getEntity() instanceof LivingEntity)
|
||||
|| !(event.getDamager() instanceof Player) || event.getEntity().hasMetadata("NPC") || event.getDamager().hasMetadata("NPC"))
|
||||
return;
|
||||
Player player = (Player) event.getDamager();
|
||||
ItemStack item = player.getInventory().getItemInMainHand();
|
||||
|
||||
handleVanillaDamage(item, player, EquipmentSlot.HAND, 1);
|
||||
}
|
||||
|
||||
@EventHandler(ignoreCancelled = true)
|
||||
public void playerBowAttack(EntityShootBowEvent event) {
|
||||
if (!(event.getEntity() instanceof Player))
|
||||
return;
|
||||
Player player = (Player) event.getEntity();
|
||||
ItemStack item = event.getBow();
|
||||
|
||||
handleVanillaDamage(item, player, EquipmentSlot.HAND, 1);
|
||||
}
|
||||
>>>>>>> src/main/java/net/Indyuce/mmoitems/listener/DurabilityListener.java
|
||||
|
||||
@EventHandler(ignoreCancelled = true)
|
||||
public void itemDamage(PlayerItemDamageEvent event) {
|
||||
@ -93,7 +130,7 @@ public class DurabilityListener implements Listener {
|
||||
private void handleVanillaDamage(ItemStack stack, Player player, EquipmentSlot slot, int damage) {
|
||||
DurabilityItem item = new DurabilityItem(player, stack);
|
||||
|
||||
if (item.isValid()) {
|
||||
if (item.isValid() && stack.getType().getMaxDurability() == 0) {
|
||||
item.decreaseDurability(damage);
|
||||
|
||||
if (item.isBroken() && item.isLostWhenBroken()) {
|
||||
|
@ -134,3 +134,4 @@ lore-format:
|
||||
- '#set#'
|
||||
- '{bar}'
|
||||
- '#tier#'
|
||||
- '%durability%'
|
Loading…
Reference in New Issue
Block a user