Small method change

This commit is contained in:
Indyuce 2022-09-16 01:30:59 +02:00
parent 106aa6aafe
commit 211afef21b
9 changed files with 22 additions and 29 deletions

View File

@ -4,7 +4,6 @@ import io.lumine.mythic.lib.UtilityMethods;
import io.lumine.mythic.lib.comp.target.InteractionType;
import io.lumine.mythic.lib.damage.AttackMetadata;
import io.lumine.mythic.lib.damage.DamageType;
import io.lumine.mythic.lib.player.modifier.ModifierSource;
import io.lumine.mythic.lib.version.VersionSound;
import net.Indyuce.mmoitems.MMOItems;
import net.Indyuce.mmoitems.MMOUtils;
@ -89,7 +88,7 @@ public enum TypeSet {
target.getWorld().spawnParticle(Particle.EXPLOSION_LARGE, target.getLocation().add(0, 1, 0), 0);
double bluntPower = attack.getStat("BLUNT_POWER");
if (bluntPower > 0) {
double bluntRating = weapon.getValue(attack.getStat("BLUNT_RATING"),
double bluntRating = weapon.requireNonZero(attack.getStat("BLUNT_RATING"),
MMOItems.plugin.getConfig().getDouble("default.blunt-rating")) / 100;
for (Entity entity : target.getNearbyEntities(bluntPower, bluntPower, bluntPower))
if (UtilityMethods.canTarget(attack.getPlayer(), entity, InteractionType.OFFENSE_ACTION) && !entity.equals(target))

View File

@ -125,8 +125,10 @@ public class Weapon extends UseItem {
return loc;
}
// returns default getValue if stat equals 0
public double getValue(double a, double def) {
return a <= 0 ? def : a;
/**
* @return First argument, or second if zero or lower
*/
public double requireNonZero(double number, double elseNumber) {
return number <= 0 ? elseNumber : number;
}
}

View File

@ -32,7 +32,7 @@ public class Crossbow extends UntargetedWeapon {
getPlayer().getInventory().removeItem(new ItemStack(Material.ARROW));
final Arrow arrow = getPlayer().launchProjectile(Arrow.class);
arrow.setVelocity(getPlayer().getEyeLocation().getDirection().multiply(3 * getValue(getNBTItem().getStat(ItemStats.ARROW_VELOCITY.getId()), 1)));
arrow.setVelocity(getPlayer().getEyeLocation().getDirection().multiply(3 * requireNonZero(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);

View File

@ -37,8 +37,8 @@ public class Lute extends UntargetedWeapon {
@Override
public void applyAttackEffect(PlayerMetadata stats, EquipmentSlot slot) {
double attackDamage = getValue(stats.getStat("ATTACK_DAMAGE"), 7);
double range = getValue(getNBTItem().getStat(ItemStats.RANGE.getId()), MMOItems.plugin.getConfig().getDouble("default.range"));
double attackDamage = requireNonZero(stats.getStat("ATTACK_DAMAGE"), 7);
double range = requireNonZero(getNBTItem().getStat(ItemStats.RANGE.getId()), MMOItems.plugin.getConfig().getDouble("default.range"));
Vector weight = new Vector(0, -.003 * getNBTItem().getStat(ItemStats.NOTE_WEIGHT.getId()), 0);
LuteAttackEffect effect = LuteAttackEffect.get(getNBTItem());

View File

@ -13,7 +13,6 @@ import org.bukkit.Color;
import org.bukkit.Location;
import org.bukkit.Sound;
import org.bukkit.entity.Player;
import org.bukkit.util.Vector;
public class Musket extends UntargetedWeapon {
public Musket(Player player, NBTItem item) {
@ -27,26 +26,23 @@ public class Musket extends UntargetedWeapon {
@Override
public void applyAttackEffect(PlayerMetadata stats, EquipmentSlot slot) {
double attackDamage = stats.getStat("ATTACK_DAMAGE");
double range = getValue(getNBTItem().getStat(ItemStats.RANGE.getId()), MMOItems.plugin.getConfig().getDouble("default.range"));
double recoil = getValue(getNBTItem().getStat(ItemStats.RECOIL.getId()), MMOItems.plugin.getConfig().getDouble("default.recoil"));
final double range = requireNonZero(getNBTItem().getStat(ItemStats.RANGE.getId()), MMOItems.plugin.getConfig().getDouble("default.range"));
final double recoil = requireNonZero(getNBTItem().getStat(ItemStats.RECOIL.getId()), MMOItems.plugin.getConfig().getDouble("default.recoil"));
// knockback
double knockback = getNBTItem().getStat(ItemStats.KNOCKBACK.getId());
final double knockback = getNBTItem().getStat(ItemStats.KNOCKBACK.getId());
if (knockback > 0)
getPlayer().setVelocity(getPlayer().getVelocity()
.add(getPlayer().getEyeLocation().getDirection().setY(0).normalize().multiply(-1 * knockback).setY(-.2)));
double a = Math.toRadians(getPlayer().getEyeLocation().getYaw() + 90 + 45 * (slot == EquipmentSlot.MAIN_HAND ? 1 : -1));
Location loc = getPlayer().getLocation().add(Math.cos(a) * .5, 1.5, Math.sin(a) * .5);
final double a = Math.toRadians(getPlayer().getEyeLocation().getYaw() + 90 + 45 * (slot == EquipmentSlot.MAIN_HAND ? 1 : -1));
final Location loc = getPlayer().getLocation().add(Math.cos(a) * .5, 1.5, Math.sin(a) * .5);
loc.setPitch((float) (loc.getPitch() + (RANDOM.nextDouble() - .5) * 2 * recoil));
loc.setYaw((float) (loc.getYaw() + (RANDOM.nextDouble() - .5) * 2 * recoil));
Vector vec = loc.getDirection();
RayTrace trace = new RayTrace(loc, vec, range, entity -> UtilityMethods.canTarget(stats.getPlayer(), entity, InteractionType.OFFENSE_ACTION));
final RayTrace trace = new RayTrace(loc, loc.getDirection(), range, entity -> UtilityMethods.canTarget(stats.getPlayer(), entity, InteractionType.OFFENSE_ACTION));
if (trace.hasHit())
stats.attack(trace.getHit(), attackDamage, DamageType.WEAPON, DamageType.PHYSICAL, DamageType.PROJECTILE);
stats.attack(trace.getHit(), stats.getStat("ATTACK_DAMAGE"), DamageType.WEAPON, DamageType.PHYSICAL, DamageType.PROJECTILE);
trace.draw(.5, Color.BLACK);
getPlayer().getWorld().playSound(getPlayer().getLocation(), Sound.ENTITY_ZOMBIE_ATTACK_IRON_DOOR, 2, 2);

View File

@ -4,8 +4,6 @@ import io.lumine.mythic.lib.UtilityMethods;
import io.lumine.mythic.lib.api.item.NBTItem;
import io.lumine.mythic.lib.api.player.EquipmentSlot;
import io.lumine.mythic.lib.comp.target.InteractionType;
import io.lumine.mythic.lib.damage.AttackMetadata;
import io.lumine.mythic.lib.damage.DamageMetadata;
import io.lumine.mythic.lib.damage.DamageType;
import io.lumine.mythic.lib.player.PlayerMetadata;
import io.lumine.mythic.lib.util.RayTrace;
@ -34,8 +32,8 @@ public class Staff extends UntargetedWeapon {
@Override
public void applyAttackEffect(PlayerMetadata stats, EquipmentSlot slot) {
double attackDamage = getValue(stats.getStat("ATTACK_DAMAGE"), 1);
double range = getValue(getNBTItem().getStat(ItemStats.RANGE.getId()), MMOItems.plugin.getConfig().getDouble("default.range"));
double attackDamage = requireNonZero(stats.getStat("ATTACK_DAMAGE"), 1);
double range = requireNonZero(getNBTItem().getStat(ItemStats.RANGE.getId()), MMOItems.plugin.getConfig().getDouble("default.range"));
StaffSpirit spirit = StaffSpirit.get(getNBTItem());
if (spirit != null) {

View File

@ -50,7 +50,7 @@ public abstract class UntargetedWeapon extends Weapon {
return;
// Apply weapon costs
double attackDelay = 1 / getValue(stats.getStat("ATTACK_SPEED"), MMOItems.plugin.getConfig().getDouble("default.attack-speed"));
double attackDelay = 1 / requireNonZero(stats.getStat("ATTACK_SPEED"), MMOItems.plugin.getConfig().getDouble("default.attack-speed"));
applyWeaponCosts(attackDelay, PlayerData.CooldownType.BASIC_ATTACK);
// Specific weapon attack effect

View File

@ -4,8 +4,6 @@ import io.lumine.mythic.lib.UtilityMethods;
import io.lumine.mythic.lib.api.item.NBTItem;
import io.lumine.mythic.lib.api.player.EquipmentSlot;
import io.lumine.mythic.lib.comp.target.InteractionType;
import io.lumine.mythic.lib.damage.AttackMetadata;
import io.lumine.mythic.lib.damage.DamageMetadata;
import io.lumine.mythic.lib.damage.DamageType;
import io.lumine.mythic.lib.player.PlayerMetadata;
import io.lumine.mythic.lib.util.RayTrace;
@ -28,8 +26,8 @@ public class Whip extends UntargetedWeapon {
@Override
public void applyAttackEffect(PlayerMetadata stats, EquipmentSlot slot) {
double attackDamage = getValue(stats.getStat("ATTACK_DAMAGE"), 7);
double range = getValue(getNBTItem().getStat(ItemStats.RANGE.getId()), MMOItems.plugin.getConfig().getDouble("default.range"));
double attackDamage = requireNonZero(stats.getStat("ATTACK_DAMAGE"), 7);
double range = requireNonZero(getNBTItem().getStat(ItemStats.RANGE.getId()), MMOItems.plugin.getConfig().getDouble("default.range"));
RayTrace trace = new RayTrace(getPlayer(), slot, range, entity -> UtilityMethods.canTarget(stats.getPlayer(), entity, InteractionType.OFFENSE_ACTION));
if (trace.hasHit())

View File

@ -75,7 +75,7 @@
<dependency>
<groupId>io.lumine</groupId>
<artifactId>MythicLib-dist</artifactId>
<version>1.4.1-SNAPSHOT</version>
<version>1.4.2-SNAPSHOT</version>
<scope>provided</scope>
</dependency>