use of me.deecaad.weaponmechanics.weapon.weaponevents.WeaponEquipEvent in project MechanicsMain by WeaponMechanics.
the class WeaponListeners method equip.
@EventHandler
public void equip(EntityEquipmentEvent e) {
if (e.isArmor())
return;
LivingEntity entity = (LivingEntity) e.getEntity();
EntityWrapper entityWrapper = WeaponMechanics.getEntityWrapper(entity);
ItemStack weaponStack = e.getEquipped();
// Also try auto converting to weapon
String weaponTitle = weaponHandler.getInfoHandler().getWeaponTitle(weaponStack, true);
boolean alreadyUsedEquipMechanics = false;
boolean mainhand = e.getSlot() == EquipmentSlot.HAND;
HandData handData = mainhand ? entityWrapper.getMainHandData() : entityWrapper.getOffHandData();
handData.setCurrentWeaponTitle(weaponTitle);
if (weaponTitle != null) {
if (e.getEntityType() == EntityType.PLAYER) {
WeaponInfoDisplay weaponInfoDisplay = getConfigurations().getObject(weaponTitle + ".Info.Weapon_Info_Display", WeaponInfoDisplay.class);
if (weaponInfoDisplay != null)
weaponInfoDisplay.send((PlayerWrapper) entityWrapper, e.getSlot());
}
weaponHandler.getSkinHandler().tryUse(entityWrapper, weaponTitle, weaponStack, e.getSlot());
Mechanics equipMechanics = getConfigurations().getObject(weaponTitle + ".Info.Weapon_Equip_Mechanics", Mechanics.class);
if (equipMechanics != null) {
equipMechanics.use(new CastData(entityWrapper, weaponTitle, weaponStack));
alreadyUsedEquipMechanics = true;
}
handData.setLastEquipTime(System.currentTimeMillis());
if (getConfigurations().getBool(weaponTitle + ".Info.Show_Cooldown.Weapon_Equip_Delay") && e.getEntityType() == EntityType.PLAYER) {
CompatibilityAPI.getEntityCompatibility().setCooldown((Player) entity, weaponStack.getType(), getConfigurations().getInt(weaponTitle + ".Info.Weapon_Equip_Delay") / 50);
} else if (CompatibilityAPI.getEntityCompatibility().hasCooldown((Player) entity, weaponStack.getType())) {
CompatibilityAPI.getEntityCompatibility().setCooldown((Player) entity, weaponStack.getType(), 0);
}
Bukkit.getPluginManager().callEvent(new WeaponEquipEvent(weaponTitle, weaponStack, entity, e.getSlot() == EquipmentSlot.HAND));
}
ItemStack dequipped = e.getDequipped();
String dequippedWeapon = weaponHandler.getInfoHandler().getWeaponTitle(dequipped, false);
if (dequippedWeapon != null) {
// Don't use holster mechanics is equip mechanics were already used
if (!alreadyUsedEquipMechanics) {
Mechanics holsterMechanics = getConfigurations().getObject(dequippedWeapon + ".Info.Weapon_Holster_Mechanics", Mechanics.class);
if (holsterMechanics != null)
holsterMechanics.use(new CastData(entityWrapper, dequippedWeapon, dequipped));
}
if (weaponTitle == null && CompatibilityAPI.getEntityCompatibility().hasCooldown((Player) entity, dequipped.getType())) {
CompatibilityAPI.getEntityCompatibility().setCooldown((Player) entity, dequipped.getType(), 0);
}
}
}
Aggregations