mirror of
https://gitlab.com/phoenix-dvpmt/mmoitems.git
synced 2025-02-23 14:51:21 +01:00
Crossbows trigger abilities
This commit is contained in:
parent
b69303b82c
commit
cf4d00f92c
@ -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;
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -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.
|
||||
|
Loading…
Reference in New Issue
Block a user