Search in sources :

Example 1 with Mechanics

use of me.deecaad.weaponmechanics.mechanics.Mechanics in project MechanicsMain by WeaponMechanics.

the class DamageHandler method useMechanics.

private void useMechanics(Configuration config, CastData shooter, CastData victim, String path) {
    Mechanics mechanics = config.getObject(path + ".Shooter_Mechanics", Mechanics.class);
    if (mechanics != null) {
        mechanics.use(shooter);
    }
    mechanics = config.getObject(path + ".Victim_Mechanics", Mechanics.class);
    if (mechanics != null) {
        mechanics.use(victim);
    }
}
Also used : WeaponMechanics(me.deecaad.weaponmechanics.WeaponMechanics) Mechanics(me.deecaad.weaponmechanics.mechanics.Mechanics)

Example 2 with Mechanics

use of me.deecaad.weaponmechanics.mechanics.Mechanics in project MechanicsMain by WeaponMechanics.

the class AirStrike method serialize.

@Override
@Nonnull
public AirStrike serialize(SerializeData data) throws SerializerException {
    int min = data.of("Minimum_Bombs").assertExists().assertPositive().getInt();
    int max = data.of("Maximum_Bombs").assertExists().assertPositive().getInt();
    Projectile projectile = data.of("Dropped_Projectile").assertExists().serialize(Projectile.class);
    double yOffset = data.of("Height").assertPositive().getDouble(60.0);
    double yNoise = data.of("Vertical_Randomness").assertPositive().getDouble(5.0);
    double separation = data.of("Distance_Between_Bombs").assertPositive().getDouble(3.0);
    double range = data.of("Maximum_Distance_From_Center").assertPositive().getDouble(25.0);
    int layers = data.of("Layers").assertPositive().getInt(1);
    int interval = data.of("Delay_Between_Layers").assertPositive().getInt(40);
    Detonation detonation = data.of("Detonation").serialize(Detonation.class);
    Mechanics mechanics = data.of("Mechanics").serialize(Mechanics.class);
    return new AirStrike(projectile, min, max, yOffset, yNoise, separation, range, layers, interval, detonation, mechanics);
}
Also used : WeaponMechanics(me.deecaad.weaponmechanics.WeaponMechanics) Mechanics(me.deecaad.weaponmechanics.mechanics.Mechanics) WeaponProjectile(me.deecaad.weaponmechanics.weapon.projectile.weaponprojectile.WeaponProjectile) Projectile(me.deecaad.weaponmechanics.weapon.projectile.weaponprojectile.Projectile) Nonnull(javax.annotation.Nonnull)

Example 3 with Mechanics

use of me.deecaad.weaponmechanics.mechanics.Mechanics in project MechanicsMain by WeaponMechanics.

the class Flashbang method serialize.

@Override
@Nonnull
public Flashbang serialize(SerializeData data) throws SerializerException {
    double distance = data.of("Effect_Distance").assertExists().assertPositive().getDouble();
    Mechanics mechanics = data.of("Mechanics").assertExists().serialize(Mechanics.class);
    return new Flashbang(distance, mechanics);
}
Also used : WeaponMechanics(me.deecaad.weaponmechanics.WeaponMechanics) Mechanics(me.deecaad.weaponmechanics.mechanics.Mechanics) Nonnull(javax.annotation.Nonnull)

Example 4 with Mechanics

use of me.deecaad.weaponmechanics.mechanics.Mechanics 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);
        }
    }
}
Also used : LivingEntity(org.bukkit.entity.LivingEntity) CastData(me.deecaad.weaponmechanics.mechanics.CastData) Player(org.bukkit.entity.Player) WeaponEquipEvent(me.deecaad.weaponmechanics.weapon.weaponevents.WeaponEquipEvent) EntityWrapper(me.deecaad.weaponmechanics.wrappers.EntityWrapper) Mechanics(me.deecaad.weaponmechanics.mechanics.Mechanics) WeaponMechanics(me.deecaad.weaponmechanics.WeaponMechanics) WeaponInfoDisplay(me.deecaad.weaponmechanics.weapon.info.WeaponInfoDisplay) PlayerWrapper(me.deecaad.weaponmechanics.wrappers.PlayerWrapper) ItemStack(org.bukkit.inventory.ItemStack) HandData(me.deecaad.weaponmechanics.wrappers.HandData) EventHandler(org.bukkit.event.EventHandler)

Example 5 with Mechanics

use of me.deecaad.weaponmechanics.mechanics.Mechanics in project MechanicsMain by WeaponMechanics.

the class ReloadHandler method finishReload.

public void finishReload(EntityWrapper entityWrapper, String weaponTitle, ItemStack weaponStack, HandData handData, EquipmentSlot slot) {
    handData.finishReload();
    Mechanics reloadFinishMechanics = getConfigurations().getObject(weaponTitle + ".Reload.Finish_Mechanics", Mechanics.class);
    if (reloadFinishMechanics != null)
        reloadFinishMechanics.use(new CastData(entityWrapper, weaponTitle, weaponStack));
    if (entityWrapper instanceof PlayerWrapper) {
        WeaponInfoDisplay weaponInfoDisplay = getConfigurations().getObject(weaponTitle + ".Info.Weapon_Info_Display", WeaponInfoDisplay.class);
        if (weaponInfoDisplay != null)
            weaponInfoDisplay.send((PlayerWrapper) entityWrapper, slot);
    }
    weaponHandler.getSkinHandler().tryUse(entityWrapper, weaponTitle, weaponStack, slot);
}
Also used : CastData(me.deecaad.weaponmechanics.mechanics.CastData) Mechanics(me.deecaad.weaponmechanics.mechanics.Mechanics) WeaponMechanics(me.deecaad.weaponmechanics.WeaponMechanics) WeaponInfoDisplay(me.deecaad.weaponmechanics.weapon.info.WeaponInfoDisplay) PlayerWrapper(me.deecaad.weaponmechanics.wrappers.PlayerWrapper)

Aggregations

Mechanics (me.deecaad.weaponmechanics.mechanics.Mechanics)18 WeaponMechanics (me.deecaad.weaponmechanics.WeaponMechanics)14 CastData (me.deecaad.weaponmechanics.mechanics.CastData)10 Nonnull (javax.annotation.Nonnull)7 WeaponInfoDisplay (me.deecaad.weaponmechanics.weapon.info.WeaponInfoDisplay)7 PlayerWrapper (me.deecaad.weaponmechanics.wrappers.PlayerWrapper)7 Configuration (me.deecaad.core.file.Configuration)6 LivingEntity (org.bukkit.entity.LivingEntity)6 HandData (me.deecaad.weaponmechanics.wrappers.HandData)5 Projectile (me.deecaad.weaponmechanics.weapon.projectile.weaponprojectile.Projectile)4 WeaponProjectile (me.deecaad.weaponmechanics.weapon.projectile.weaponprojectile.WeaponProjectile)4 AmmoTypes (me.deecaad.weaponmechanics.weapon.reload.ammo.AmmoTypes)2 WeaponScopeEvent (me.deecaad.weaponmechanics.weapon.weaponevents.WeaponScopeEvent)2 WeaponShootEvent (me.deecaad.weaponmechanics.weapon.weaponevents.WeaponShootEvent)2 Location (org.bukkit.Location)2 Player (org.bukkit.entity.Player)2 ItemStack (org.bukkit.inventory.ItemStack)2 Vector (org.bukkit.util.Vector)2 HashSet (java.util.HashSet)1 SerializerException (me.deecaad.core.file.SerializerException)1