diff --git a/src/main/java/net/Indyuce/mmoitems/api/event/AbilityUseEvent.java b/src/main/java/net/Indyuce/mmoitems/api/event/AbilityUseEvent.java deleted file mode 100644 index f55b7bee..00000000 --- a/src/main/java/net/Indyuce/mmoitems/api/event/AbilityUseEvent.java +++ /dev/null @@ -1,41 +0,0 @@ -package net.Indyuce.mmoitems.api.event; - -import org.bukkit.entity.LivingEntity; -import org.bukkit.event.HandlerList; - -import net.Indyuce.mmoitems.api.player.PlayerData; -import net.Indyuce.mmoitems.stat.data.AbilityData; - -@Deprecated -public class AbilityUseEvent extends PlayerDataEvent { - private static final HandlerList handlers = new HandlerList(); - - private final AbilityData ability; - private final LivingEntity target; - - public AbilityUseEvent(PlayerData playerData, AbilityData ability) { - this(playerData, ability, null); - } - - public AbilityUseEvent(PlayerData playerData, AbilityData ability, LivingEntity target) { - super(playerData); - this.ability = ability; - this.target = target; - } - - public AbilityData getAbility() { - return ability; - } - - public LivingEntity getTarget() { - return target; - } - - public HandlerList getHandlers() { - return handlers; - } - - public static HandlerList getHandlerList() { - return handlers; - } -} diff --git a/src/main/java/net/Indyuce/mmoitems/api/interaction/weapon/untargeted/Crossbow.java b/src/main/java/net/Indyuce/mmoitems/api/interaction/weapon/untargeted/Crossbow.java index c5b455a8..51db8b55 100644 --- a/src/main/java/net/Indyuce/mmoitems/api/interaction/weapon/untargeted/Crossbow.java +++ b/src/main/java/net/Indyuce/mmoitems/api/interaction/weapon/untargeted/Crossbow.java @@ -3,6 +3,8 @@ package net.Indyuce.mmoitems.api.interaction.weapon.untargeted; import io.lumine.mythic.lib.api.item.NBTItem; import io.lumine.mythic.lib.api.player.EquipmentSlot; import io.lumine.mythic.lib.player.PlayerMetadata; +import io.lumine.mythic.lib.skill.trigger.TriggerType; +import io.lumine.mythic.lib.util.ProjectileTrigger; import net.Indyuce.mmoitems.ItemStats; import net.Indyuce.mmoitems.MMOItems; import org.bukkit.GameMode; @@ -29,12 +31,16 @@ public class Crossbow extends UntargetedWeapon { if (getPlayer().getGameMode() != GameMode.CREATIVE) getPlayer().getInventory().removeItem(new ItemStack(Material.ARROW)); - getPlayer().getWorld().playSound(getPlayer().getLocation(), Sound.ENTITY_ARROW_SHOOT, 1, 1); - Arrow arrow = getPlayer().launchProjectile(Arrow.class); - arrow.setVelocity( - getPlayer().getEyeLocation().getDirection().multiply(3 * getValue(getNBTItem().getStat(ItemStats.ARROW_VELOCITY.getId()), 1))); + final Arrow arrow = getPlayer().launchProjectile(Arrow.class); + arrow.setVelocity(getPlayer().getEyeLocation().getDirection().multiply(3 * getValue(getNBTItem().getStat(ItemStats.ARROW_VELOCITY.getId()), 1))); getPlayer().setVelocity(getPlayer().getVelocity().setX(0).setZ(0)); + getPlayer().getWorld().playSound(getPlayer().getLocation(), Sound.ENTITY_ARROW_SHOOT, 1, 1); + // Register custom projectile MMOItems.plugin.getEntities().registerCustomProjectile(getNBTItem(), stats, arrow, true, 1); + + // Trigger abilities + stats.getData().triggerSkills(TriggerType.SHOOT_BOW, arrow); + new ProjectileTrigger(stats.getData(), ProjectileTrigger.ProjectileType.ARROW, arrow, slot); } } diff --git a/src/main/java/net/Indyuce/mmoitems/listener/PlayerListener.java b/src/main/java/net/Indyuce/mmoitems/listener/PlayerListener.java index 9dfdbb76..b3d83365 100644 --- a/src/main/java/net/Indyuce/mmoitems/listener/PlayerListener.java +++ b/src/main/java/net/Indyuce/mmoitems/listener/PlayerListener.java @@ -1,36 +1,18 @@ package net.Indyuce.mmoitems.listener; import io.lumine.mythic.lib.MythicLib; -import io.lumine.mythic.lib.api.event.skill.PlayerCastSkillEvent; import io.lumine.mythic.lib.api.item.NBTItem; import io.lumine.mythic.lib.api.player.EquipmentSlot; -import io.lumine.mythic.lib.api.util.ui.SilentNumbers; -import io.lumine.mythic.lib.skill.trigger.TriggerType; import io.lumine.mythic.utils.Schedulers; import io.lumine.mythic.utils.events.extra.ArmorEquipEvent; -import net.Indyuce.mmoitems.ItemStats; import net.Indyuce.mmoitems.MMOItems; -import net.Indyuce.mmoitems.MMOUtils; import net.Indyuce.mmoitems.api.SoulboundInfo; import net.Indyuce.mmoitems.api.Type; -import net.Indyuce.mmoitems.api.event.AbilityUseEvent; -import net.Indyuce.mmoitems.api.interaction.util.DurabilityItem; import net.Indyuce.mmoitems.api.interaction.util.InteractItem; import net.Indyuce.mmoitems.api.interaction.weapon.Weapon; -import net.Indyuce.mmoitems.api.item.mmoitem.LiveMMOItem; import net.Indyuce.mmoitems.api.player.PlayerData; -import net.Indyuce.mmoitems.api.player.inventory.EditableEquippedItem; -import net.Indyuce.mmoitems.api.player.inventory.EquippedPlayerItem; -import net.Indyuce.mmoitems.api.player.inventory.InventoryUpdateHandler; import net.Indyuce.mmoitems.api.util.DeathDowngrading; -import net.Indyuce.mmoitems.api.util.message.Message; -import net.Indyuce.mmoitems.skill.RegisteredSkill; -import net.Indyuce.mmoitems.stat.data.AbilityData; -import net.Indyuce.mmoitems.stat.data.UpgradeData; -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; import org.bukkit.Material; -import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; import org.bukkit.entity.Trident; import org.bukkit.event.Cancellable; @@ -200,33 +182,6 @@ public class PlayerListener implements Listener { PlayerData.get(event.getPlayer()).getInventory().scheduleUpdate(); } - @Deprecated - @EventHandler - public void registerOldEvent(PlayerCastSkillEvent event) { - - // Find caster - PlayerData playerData = PlayerData.get(event.getPlayer().getUniqueId()); - - // Create registered skill - RegisteredSkill registeredSkill = new RegisteredSkill(event.getCast().getHandler(), event.getCast().getHandler().getId()); - for (String mod : event.getCast().getHandler().getModifiers()) { - registeredSkill.setDefaultValue(mod, event.getMetadata().getModifier(mod)); - registeredSkill.setName(mod, MMOUtils.caseOnWords(mod.toLowerCase().replace("-", " ").replace("_", " "))); - } - - // Create ability data - AbilityData abilityData = new AbilityData(registeredSkill, TriggerType.CAST); - for (String mod : event.getCast().getHandler().getModifiers()) - abilityData.setModifier(mod, event.getMetadata().getModifier(mod)); - - // Find ability target - LivingEntity target = event.getMetadata().hasTargetEntity() && event.getMetadata().getTargetEntityOrNull() instanceof LivingEntity ? - (LivingEntity) event.getMetadata().getTargetEntityOrNull() : null; - - // Call event for compatibility - Bukkit.getPluginManager().callEvent(new AbilityUseEvent(playerData, abilityData, target)); - } - /** * Some plugins like to interfere with dropping items when the * player dies, or whatever of that sort.