Merge branch 'master' into 'crafting'

# Conflicts:
#   src/main/java/net/Indyuce/mmoitems/listener/DurabilityListener.java
This commit is contained in:
Gunging 2021-03-29 07:26:39 -07:00
commit d1d08830fb
3 changed files with 40 additions and 1 deletions

View File

@ -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(),

View File

@ -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()) {

View File

@ -134,3 +134,4 @@ lore-format:
- '#set#'
- '{bar}'
- '#tier#'
- '%durability%'