!Update RDW compatibility

This commit is contained in:
Indyuce 2019-11-03 14:53:55 +01:00
parent 4f1913fa24
commit e559741d5b

View File

@ -22,13 +22,19 @@ public class RealDualWieldHook implements Listener {
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
public void a(PlayerDamageEntityWithOffhandEvent event) {
// check for npc
// safety checks
if (event.getEntity().hasMetadata("NPC") || !(event.getEntity() instanceof LivingEntity) || event.getDamage() == 0)
/*
* Citizens and Sentinels NPC support; damage = 0 check to ignore safety
* checks; check for entity attack
*/
if (event.getDamage() == 0 || !(event.getEntity() instanceof LivingEntity) || event.getEntity().hasMetadata("NPC"))
return;
// custom damage check
LivingEntity target = (LivingEntity) event.getEntity();
Player player = (Player) event.getPlayer();
if (MMOItems.plugin.getDamage().findInfo(target) != null)
return;
Player player = event.getPlayer();
TemporaryStats stats = null;
/*
@ -36,8 +42,10 @@ public class RealDualWieldHook implements Listener {
* be cancelled before anything is applied
*/
PlayerData playerData = PlayerData.get(player);
NBTItem item = MMOItems.plugin.getNMS().getNBTItem(event.getItemInOffhand());
NBTItem item = MMOItems.plugin.getNMS().getNBTItem(player.getInventory().getItemInMainHand());
NBTItem offhandItem = MMOItems.plugin.getNMS().getNBTItem(player.getInventory().getItemInOffHand());
AttackResult result = new AttackResult(event.getDamage(), DamageType.WEAPON, DamageType.PHYSICAL);
if (item.hasType()) {
Weapon weapon = new Weapon(playerData, item, item.getType());
@ -57,6 +65,19 @@ public class RealDualWieldHook implements Listener {
return;
}
}
if (offhandItem.hasType()) {
Weapon weapon = new Weapon(playerData, offhandItem, offhandItem.getType());
if (weapon.getMMOItem().getType().getItemSet() == TypeSet.RANGE) {
event.setCancelled(true);
return;
}
if (!weapon.canBeUsed()) {
event.setCancelled(true);
return;
}
}
/*
* cast on-hit abilities and add the extra damage to the damage event