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);
}
}
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);
}
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);
}
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);
}
}
}
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);
}
Aggregations