From 75de803700a7aa9e32488eb94081a921ad9eb507 Mon Sep 17 00:00:00 2001 From: Vidal Date: Tue, 3 Feb 2026 15:45:45 -0300 Subject: [PATCH] Added interfaces to energy data, refactored names --- src/api | 2 +- .../data/ability/data/EnergyAnchorData.java | 43 ++++++++++- .../data/ability/data/EnergyCombatData.java | 63 +++++++++++++++- ...yColorData.java => EnergyDisplayData.java} | 75 +++++++++++++++++-- .../data/ability/data/EnergyLifespanData.java | 23 +++++- .../ability/data/EnergyLightningData.java | 43 ++++++++++- ...ingData.java => EnergyTrajectoryData.java} | 51 +++++++++++-- .../data/ability/type/AbilityBeam.java | 4 +- .../data/ability/type/AbilityBeamDual.java | 10 +-- .../data/ability/type/AbilityDisc.java | 4 +- .../data/ability/type/AbilityDiscDual.java | 10 +-- .../data/ability/type/AbilityLaserShot.java | 2 +- .../data/ability/type/AbilityOrb.java | 4 +- .../data/ability/type/AbilityOrbBarrage.java | 4 +- .../data/ability/type/AbilityOrbDual.java | 8 +- .../data/ability/type/AbilitySweeper.java | 6 +- .../npcs/entity/EntityAbilityBeam.java | 14 ++-- .../npcs/entity/EntityAbilityDisc.java | 15 ++-- .../npcs/entity/EntityAbilityLaser.java | 12 +-- .../kamkeel/npcs/entity/EntityAbilityOrb.java | 6 +- .../npcs/entity/EntityAbilityProjectile.java | 9 +-- .../npcs/entity/EntityAbilitySweeper.java | 4 +- .../java/noppes/npcs/items/ItemStaff.java | 6 +- .../npcs/scripted/constants/EntityType.java | 1 + 24 files changed, 340 insertions(+), 79 deletions(-) rename src/main/java/kamkeel/npcs/controllers/data/ability/data/{EnergyColorData.java => EnergyDisplayData.java} (50%) rename src/main/java/kamkeel/npcs/controllers/data/ability/data/{EnergyHomingData.java => EnergyTrajectoryData.java} (50%) diff --git a/src/api b/src/api index 03be7a5ca..5fd3b7cb4 160000 --- a/src/api +++ b/src/api @@ -1 +1 @@ -Subproject commit 03be7a5cac601cd19509df9dc7bac17081aea591 +Subproject commit 5fd3b7cb4044f1037fe2aae99868513dea347bda diff --git a/src/main/java/kamkeel/npcs/controllers/data/ability/data/EnergyAnchorData.java b/src/main/java/kamkeel/npcs/controllers/data/ability/data/EnergyAnchorData.java index 66983f89b..e6c36fe48 100644 --- a/src/main/java/kamkeel/npcs/controllers/data/ability/data/EnergyAnchorData.java +++ b/src/main/java/kamkeel/npcs/controllers/data/ability/data/EnergyAnchorData.java @@ -2,8 +2,9 @@ package kamkeel.npcs.controllers.data.ability.data; import kamkeel.npcs.controllers.data.ability.AnchorPoint; import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.api.ability.data.IEnergyAnchorData; -public class EnergyAnchorData { +public class EnergyAnchorData implements IEnergyAnchorData { public AnchorPoint anchorPoint = AnchorPoint.FRONT; public float anchorOffsetX = 0; public float anchorOffsetY = 0; @@ -34,6 +35,46 @@ public class EnergyAnchorData { this.anchorOffsetZ = anchorOffsetZ; } + @Override + public AnchorPoint getAnchorPoint() { + return anchorPoint; + } + + @Override + public void setAnchorPoint(AnchorPoint anchorPoint) { + this.anchorPoint = anchorPoint; + } + + @Override + public float getAnchorOffsetX() { + return anchorOffsetX; + } + + @Override + public void setAnchorOffsetX(float anchorOffsetX) { + this.anchorOffsetX = anchorOffsetX; + } + + @Override + public float getAnchorOffsetY() { + return anchorOffsetY; + } + + @Override + public void setAnchorOffsetY(float anchorOffsetY) { + this.anchorOffsetY = anchorOffsetY; + } + + @Override + public float getAnchorOffsetZ() { + return anchorOffsetZ; + } + + @Override + public void setAnchorOffsetZ(float anchorOffsetZ) { + this.anchorOffsetZ = anchorOffsetZ; + } + public void writeNBT(NBTTagCompound nbt) { nbt.setInteger("anchorPoint", anchorPoint.ordinal()); nbt.setFloat("anchorOffsetX", anchorOffsetX); diff --git a/src/main/java/kamkeel/npcs/controllers/data/ability/data/EnergyCombatData.java b/src/main/java/kamkeel/npcs/controllers/data/ability/data/EnergyCombatData.java index fa09645a6..52f5368f0 100644 --- a/src/main/java/kamkeel/npcs/controllers/data/ability/data/EnergyCombatData.java +++ b/src/main/java/kamkeel/npcs/controllers/data/ability/data/EnergyCombatData.java @@ -1,12 +1,13 @@ package kamkeel.npcs.controllers.data.ability.data; import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.api.ability.data.IEnergyCombatData; /** * Groups combat properties shared by energy projectile abilities. * Used as a parameter object for entity constructors and ability configuration. */ -public class EnergyCombatData { +public class EnergyCombatData implements IEnergyCombatData { public float damage = 7.0f; public float knockback = 1.0f; public float knockbackUp = 0.1f; @@ -26,6 +27,66 @@ public class EnergyCombatData { this.explosionDamageFalloff = explosionDamageFalloff; } + @Override + public float getDamage() { + return damage; + } + + @Override + public void setDamage(float damage) { + this.damage = damage; + } + + @Override + public float getKnockback() { + return knockback; + } + + @Override + public void setKnockback(float knockback) { + this.knockback = knockback; + } + + @Override + public float getKnockbackUp() { + return knockbackUp; + } + + @Override + public void setKnockbackUp(float knockbackUp) { + this.knockbackUp = knockbackUp; + } + + @Override + public boolean isExplosive() { + return explosive; + } + + @Override + public void setExplosive(boolean explosive) { + this.explosive = explosive; + } + + @Override + public float getExplosionRadius() { + return explosionRadius; + } + + @Override + public void setExplosionRadius(float explosionRadius) { + this.explosionRadius = explosionRadius; + } + + @Override + public float getExplosionDamageFalloff() { + return explosionDamageFalloff; + } + + @Override + public void setExplosionDamageFalloff(float explosionDamageFalloff) { + this.explosionDamageFalloff = explosionDamageFalloff; + } + public void writeNBT(NBTTagCompound nbt) { nbt.setFloat("damage", damage); nbt.setFloat("knockback", knockback); diff --git a/src/main/java/kamkeel/npcs/controllers/data/ability/data/EnergyColorData.java b/src/main/java/kamkeel/npcs/controllers/data/ability/data/EnergyDisplayData.java similarity index 50% rename from src/main/java/kamkeel/npcs/controllers/data/ability/data/EnergyColorData.java rename to src/main/java/kamkeel/npcs/controllers/data/ability/data/EnergyDisplayData.java index 9ed99e22e..0d91e1012 100644 --- a/src/main/java/kamkeel/npcs/controllers/data/ability/data/EnergyColorData.java +++ b/src/main/java/kamkeel/npcs/controllers/data/ability/data/EnergyDisplayData.java @@ -1,12 +1,13 @@ package kamkeel.npcs.controllers.data.ability.data; import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.api.ability.data.IEnergyDisplayData; /** * Groups visual color properties shared by all energy abilities. * Used as a parameter object for entity constructors and ability configuration. */ -public class EnergyColorData { +public class EnergyDisplayData implements IEnergyDisplayData { public int innerColor = 0xFFFFFF; public int outerColor = 0x8888FF; public boolean outerColorEnabled = true; @@ -14,15 +15,15 @@ public class EnergyColorData { public float outerColorAlpha = 0.5f; public float rotationSpeed = 4.0f; - public EnergyColorData() {} + public EnergyDisplayData() {} - public EnergyColorData(int innerColor, int outerColor) { + public EnergyDisplayData(int innerColor, int outerColor) { this.innerColor = innerColor; this.outerColor = outerColor; } - public EnergyColorData(int innerColor, int outerColor, boolean outerColorEnabled, - float outerColorWidth, float outerColorAlpha, float rotationSpeed) { + public EnergyDisplayData(int innerColor, int outerColor, boolean outerColorEnabled, + float outerColorWidth, float outerColorAlpha, float rotationSpeed) { this.innerColor = innerColor; this.outerColor = outerColor; this.outerColorEnabled = outerColorEnabled; @@ -31,6 +32,66 @@ public class EnergyColorData { this.rotationSpeed = rotationSpeed; } + @Override + public int getInnerColor() { + return innerColor; + } + + @Override + public void setInnerColor(int innerColor) { + this.innerColor = innerColor; + } + + @Override + public int getOuterColor() { + return outerColor; + } + + @Override + public void setOuterColor(int outerColor) { + this.outerColor = outerColor; + } + + @Override + public boolean isOuterColorEnabled() { + return outerColorEnabled; + } + + @Override + public void setOuterColorEnabled(boolean outerColorEnabled) { + this.outerColorEnabled = outerColorEnabled; + } + + @Override + public float getOuterColorWidth() { + return outerColorWidth; + } + + @Override + public void setOuterColorWidth(float outerColorWidth) { + this.outerColorWidth = outerColorWidth; + } + + @Override + public float getOuterColorAlpha() { + return outerColorAlpha; + } + + @Override + public void setOuterColorAlpha(float outerColorAlpha) { + this.outerColorAlpha = outerColorAlpha; + } + + @Override + public float getRotationSpeed() { + return rotationSpeed; + } + + @Override + public void setRotationSpeed(float rotationSpeed) { + this.rotationSpeed = rotationSpeed; + } + public void writeNBT(NBTTagCompound nbt) { nbt.setInteger("innerColor", innerColor); nbt.setInteger("outerColor", outerColor); @@ -49,7 +110,7 @@ public class EnergyColorData { rotationSpeed = nbt.hasKey("rotationSpeed") ? nbt.getFloat("rotationSpeed") : 4.0f; } - public EnergyColorData copy() { - return new EnergyColorData(innerColor, outerColor, outerColorEnabled, outerColorWidth, outerColorAlpha, rotationSpeed); + public EnergyDisplayData copy() { + return new EnergyDisplayData(innerColor, outerColor, outerColorEnabled, outerColorWidth, outerColorAlpha, rotationSpeed); } } diff --git a/src/main/java/kamkeel/npcs/controllers/data/ability/data/EnergyLifespanData.java b/src/main/java/kamkeel/npcs/controllers/data/ability/data/EnergyLifespanData.java index f8f0122e8..9e017e2a5 100644 --- a/src/main/java/kamkeel/npcs/controllers/data/ability/data/EnergyLifespanData.java +++ b/src/main/java/kamkeel/npcs/controllers/data/ability/data/EnergyLifespanData.java @@ -1,12 +1,13 @@ package kamkeel.npcs.controllers.data.ability.data; import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.api.ability.data.IEnergyLifespanData; /** * Groups lifespan/range properties for energy projectile abilities. * Used as a parameter object for entity constructors and ability configuration. */ -public class EnergyLifespanData { +public class EnergyLifespanData implements IEnergyLifespanData { public float maxDistance = 30.0f; public int maxLifetime = 200; @@ -17,6 +18,26 @@ public class EnergyLifespanData { this.maxLifetime = maxLifetime; } + @Override + public float getMaxDistance() { + return maxDistance; + } + + @Override + public void setMaxDistance(float maxDistance) { + this.maxDistance = maxDistance; + } + + @Override + public int getMaxLifetime() { + return maxLifetime; + } + + @Override + public void setMaxLifetime(int maxLifetime) { + this.maxLifetime = maxLifetime; + } + public void writeNBT(NBTTagCompound nbt) { nbt.setFloat("maxDistance", maxDistance); nbt.setInteger("maxLifetime", maxLifetime); diff --git a/src/main/java/kamkeel/npcs/controllers/data/ability/data/EnergyLightningData.java b/src/main/java/kamkeel/npcs/controllers/data/ability/data/EnergyLightningData.java index 30d4ea6d8..00d0eaa96 100644 --- a/src/main/java/kamkeel/npcs/controllers/data/ability/data/EnergyLightningData.java +++ b/src/main/java/kamkeel/npcs/controllers/data/ability/data/EnergyLightningData.java @@ -1,12 +1,13 @@ package kamkeel.npcs.controllers.data.ability.data; import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.api.ability.data.IEnergyLightningData; /** * Groups lightning visual effect properties for energy abilities. * Used as a parameter object for entity constructors and ability configuration. */ -public class EnergyLightningData { +public class EnergyLightningData implements IEnergyLightningData { public boolean lightningEffect = false; public float lightningDensity = 0.15f; public float lightningRadius = 0.5f; @@ -22,6 +23,46 @@ public class EnergyLightningData { this.lightningFadeTime = lightningFadeTime; } + @Override + public boolean isLightningEffect() { + return lightningEffect; + } + + @Override + public void setLightningEffect(boolean lightningEffect) { + this.lightningEffect = lightningEffect; + } + + @Override + public float getLightningDensity() { + return lightningDensity; + } + + @Override + public void setLightningDensity(float lightningDensity) { + this.lightningDensity = lightningDensity; + } + + @Override + public float getLightningRadius() { + return lightningRadius; + } + + @Override + public void setLightningRadius(float lightningRadius) { + this.lightningRadius = lightningRadius; + } + + @Override + public int getLightningFadeTime() { + return lightningFadeTime; + } + + @Override + public void setLightningFadeTime(int lightningFadeTime) { + this.lightningFadeTime = lightningFadeTime; + } + public void writeNBT(NBTTagCompound nbt) { nbt.setBoolean("lightningEffect", lightningEffect); nbt.setFloat("lightningDensity", lightningDensity); diff --git a/src/main/java/kamkeel/npcs/controllers/data/ability/data/EnergyHomingData.java b/src/main/java/kamkeel/npcs/controllers/data/ability/data/EnergyTrajectoryData.java similarity index 50% rename from src/main/java/kamkeel/npcs/controllers/data/ability/data/EnergyHomingData.java rename to src/main/java/kamkeel/npcs/controllers/data/ability/data/EnergyTrajectoryData.java index 5b90bafce..11b5ef50c 100644 --- a/src/main/java/kamkeel/npcs/controllers/data/ability/data/EnergyHomingData.java +++ b/src/main/java/kamkeel/npcs/controllers/data/ability/data/EnergyTrajectoryData.java @@ -1,26 +1,67 @@ package kamkeel.npcs.controllers.data.ability.data; import net.minecraft.nbt.NBTTagCompound; +import noppes.npcs.api.ability.data.IEnergyTrajectoryData; /** * Groups homing/movement properties for energy projectile abilities. * Used by Orb, Disc, and Beam (not Laser or Sweeper). */ -public class EnergyHomingData { +public class EnergyTrajectoryData implements IEnergyTrajectoryData { public float speed = 0.5f; public boolean homing = true; public float homingStrength = 0.15f; public float homingRange = 20.0f; - public EnergyHomingData() {} + public EnergyTrajectoryData() {} - public EnergyHomingData(float speed, boolean homing, float homingStrength, float homingRange) { + public EnergyTrajectoryData(float speed, boolean homing, float homingStrength, float homingRange) { this.speed = speed; this.homing = homing; this.homingStrength = homingStrength; this.homingRange = homingRange; } + @Override + public float getSpeed() { + return speed; + } + + @Override + public void setSpeed(float speed) { + this.speed = speed; + } + + @Override + public boolean isHoming() { + return homing; + } + + @Override + public void setHoming(boolean homing) { + this.homing = homing; + } + + @Override + public float getHomingStrength() { + return homingStrength; + } + + @Override + public void setHomingStrength(float homingStrength) { + this.homingStrength = homingStrength; + } + + @Override + public float getHomingRange() { + return homingRange; + } + + @Override + public void setHomingRange(float homingRange) { + this.homingRange = homingRange; + } + public void writeNBT(NBTTagCompound nbt) { nbt.setFloat("speed", speed); nbt.setBoolean("homing", homing); @@ -35,7 +76,7 @@ public class EnergyHomingData { homingRange = nbt.hasKey("homingRange") ? nbt.getFloat("homingRange") : 20.0f; } - public EnergyHomingData copy() { - return new EnergyHomingData(speed, homing, homingStrength, homingRange); + public EnergyTrajectoryData copy() { + return new EnergyTrajectoryData(speed, homing, homingStrength, homingRange); } } diff --git a/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityBeam.java b/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityBeam.java index 25a4edf76..568d57baf 100644 --- a/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityBeam.java +++ b/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityBeam.java @@ -37,9 +37,9 @@ public class AbilityBeam extends Ability implements IAbilityEnergyBeam { private float headSize = 0.6f; // Data classes - private EnergyColorData colorData = new EnergyColorData(0xFFFFFF, 0x00AAFF, true, 0.4f, 0.5f, 6.0f); + private EnergyDisplayData colorData = new EnergyDisplayData(0xFFFFFF, 0x00AAFF, true, 0.4f, 0.5f, 6.0f); private EnergyCombatData combatData = new EnergyCombatData(10.0f, 1.5f, 0.2f, false, 4.0f, 0.5f); - private EnergyHomingData homingData = new EnergyHomingData(0.4f, true, 0.1f, 15.0f); + private EnergyTrajectoryData homingData = new EnergyTrajectoryData(0.4f, true, 0.1f, 15.0f); private EnergyLightningData lightningData = new EnergyLightningData(); private EnergyLifespanData lifespanData = new EnergyLifespanData(25.0f, 200); private EnergyAnchorData anchorData = new EnergyAnchorData(AnchorPoint.RIGHT_HAND); diff --git a/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityBeamDual.java b/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityBeamDual.java index b02279ba1..13db46d24 100644 --- a/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityBeamDual.java +++ b/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityBeamDual.java @@ -32,12 +32,12 @@ public class AbilityBeamDual extends Ability { private int dualFireDelay = 0; // Data classes - private EnergyColorData[] colorData = new EnergyColorData[]{ - new EnergyColorData(0xFFFFFF, 0x00AAFF, true, 0.4f, 0.5f, 6.0f), - new EnergyColorData(0xFFFFFF, 0xFF0000, true, 0.4f, 0.5f, 6.0f), + private EnergyDisplayData[] colorData = new EnergyDisplayData[]{ + new EnergyDisplayData(0xFFFFFF, 0x00AAFF, true, 0.4f, 0.5f, 6.0f), + new EnergyDisplayData(0xFFFFFF, 0xFF0000, true, 0.4f, 0.5f, 6.0f), }; private EnergyCombatData combatData = new EnergyCombatData(10.0f, 1.5f, 0.2f, false, 4.0f, 0.5f); - private EnergyHomingData homingData = new EnergyHomingData(0.4f, true, 0.1f, 15.0f); + private EnergyTrajectoryData homingData = new EnergyTrajectoryData(0.4f, true, 0.1f, 15.0f); private EnergyLightningData[] lightningData = new EnergyLightningData[]{ new EnergyLightningData(), new EnergyLightningData() }; @@ -261,7 +261,7 @@ public class AbilityBeamDual extends Ability { public int getDualFireDelay() { return dualFireDelay; } public void setDualFireDelay(int dualFireDelay) { this.dualFireDelay = dualFireDelay; } - private EnergyColorData getColorData(int beam) { + private EnergyDisplayData getColorData(int beam) { beam = ValueUtil.clamp(beam, 0, 1); return colorData[beam]; } diff --git a/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityDisc.java b/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityDisc.java index 7ee8a9260..0a713ba2b 100644 --- a/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityDisc.java +++ b/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityDisc.java @@ -40,9 +40,9 @@ public class AbilityDisc extends Ability implements IAbilityDisc { private int boomerangDelay = 40; // Energy data classes - private EnergyColorData colorData = new EnergyColorData(0xFFFFFF, 0xFF8800, true, 0.4f, 0.5f, 5.0f); + private EnergyDisplayData colorData = new EnergyDisplayData(0xFFFFFF, 0xFF8800, true, 0.4f, 0.5f, 5.0f); private EnergyCombatData combatData = new EnergyCombatData(8.0f, 1.2f, 0.15f, false, 3.0f, 0.5f); - private EnergyHomingData homingData = new EnergyHomingData(0.6f, true, 0.12f, 18.0f); + private EnergyTrajectoryData homingData = new EnergyTrajectoryData(0.6f, true, 0.12f, 18.0f); private EnergyLightningData lightningData = new EnergyLightningData(); private EnergyLifespanData lifespanData = new EnergyLifespanData(35.0f, 200); private EnergyAnchorData anchorData = new EnergyAnchorData(AnchorPoint.RIGHT_HAND); diff --git a/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityDiscDual.java b/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityDiscDual.java index f3da8c819..f3e80f564 100644 --- a/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityDiscDual.java +++ b/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityDiscDual.java @@ -40,12 +40,12 @@ public class AbilityDiscDual extends Ability { private int dualFireDelay = 10; // Energy data classes - private EnergyColorData[] colorData = new EnergyColorData[]{ - new EnergyColorData(0xFFFFFF, 0xFF8800, true, 0.4f, 0.5f, 5.0f), - new EnergyColorData(0xFFFFFF, 0x8800FF, true, 0.4f, 0.5f, 5.0f) + private EnergyDisplayData[] colorData = new EnergyDisplayData[]{ + new EnergyDisplayData(0xFFFFFF, 0xFF8800, true, 0.4f, 0.5f, 5.0f), + new EnergyDisplayData(0xFFFFFF, 0x8800FF, true, 0.4f, 0.5f, 5.0f) }; private EnergyCombatData combatData = new EnergyCombatData(8.0f, 1.2f, 0.15f, false, 3.0f, 0.5f); - private EnergyHomingData homingData = new EnergyHomingData(0.6f, true, 0.12f, 18.0f); + private EnergyTrajectoryData homingData = new EnergyTrajectoryData(0.6f, true, 0.12f, 18.0f); public final EnergyLightningData[] lightningData = new EnergyLightningData[]{ new EnergyLightningData(), new EnergyLightningData() }; @@ -265,7 +265,7 @@ public class AbilityDiscDual extends Ability { } // Getters & Setters - private EnergyColorData getColorData(int orb) { + private EnergyDisplayData getColorData(int orb) { orb = ValueUtil.clamp(orb, 0, 1); return colorData[orb]; } diff --git a/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityLaserShot.java b/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityLaserShot.java index 031598207..884afc683 100644 --- a/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityLaserShot.java +++ b/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityLaserShot.java @@ -36,7 +36,7 @@ public class AbilityLaserShot extends Ability implements IAbilityLaserShot { private int lingerTicks = 8; // Data classes - private final EnergyColorData colorData = new EnergyColorData(0xFFFFFF, 0xFF0000, true, 0.4f, 0.5f, 0.0f); + private final EnergyDisplayData colorData = new EnergyDisplayData(0xFFFFFF, 0xFF0000, true, 0.4f, 0.5f, 0.0f); private final EnergyCombatData combatData = new EnergyCombatData(6.0f, 0.5f, 0.05f, false, 2.0f, 0.5f); private final EnergyLightningData lightningData = new EnergyLightningData(); private final EnergyLifespanData lifespanData = new EnergyLifespanData(40.0f, 100); diff --git a/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityOrb.java b/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityOrb.java index b45bf87af..86202039c 100644 --- a/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityOrb.java +++ b/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityOrb.java @@ -36,9 +36,9 @@ public class AbilityOrb extends Ability implements IAbilityOrb { private float orbSize = 1.0f; // Data classes for energy properties - private final EnergyColorData colorData = new EnergyColorData(); + private final EnergyDisplayData colorData = new EnergyDisplayData(); private final EnergyCombatData combatData = new EnergyCombatData(); - private final EnergyHomingData homingData = new EnergyHomingData(); + private final EnergyTrajectoryData homingData = new EnergyTrajectoryData(); private final EnergyLightningData lightningData = new EnergyLightningData(); private final EnergyLifespanData lifespanData = new EnergyLifespanData(); private final EnergyAnchorData anchorData = new EnergyAnchorData(AnchorPoint.RIGHT_HAND); diff --git a/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityOrbBarrage.java b/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityOrbBarrage.java index 79641ae41..1888a69c5 100644 --- a/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityOrbBarrage.java +++ b/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityOrbBarrage.java @@ -37,9 +37,9 @@ public class AbilityOrbBarrage extends Ability { private boolean dualCharging = true; // Data classes for energy properties - private final EnergyColorData colorData = new EnergyColorData(); + private final EnergyDisplayData colorData = new EnergyDisplayData(); private final EnergyCombatData combatData = new EnergyCombatData(4.0f, 0.0f, 0.0f, false, 1.5f, 0.5f); - private final EnergyHomingData homingData = new EnergyHomingData(); + private final EnergyTrajectoryData homingData = new EnergyTrajectoryData(); private final EnergyLightningData lightningData = new EnergyLightningData(); private final EnergyLifespanData lifespanData = new EnergyLifespanData(); private final EnergyAnchorData[] anchorData = new EnergyAnchorData[]{ diff --git a/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityOrbDual.java b/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityOrbDual.java index 9be9e0e9a..cc6ff2b22 100644 --- a/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityOrbDual.java +++ b/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityOrbDual.java @@ -32,11 +32,11 @@ public class AbilityOrbDual extends Ability { private int dualFireDelay = 5; // Data classes for energy properties - public final EnergyColorData[] colorData = new EnergyColorData[]{ - new EnergyColorData(), new EnergyColorData() + public final EnergyDisplayData[] colorData = new EnergyDisplayData[]{ + new EnergyDisplayData(), new EnergyDisplayData() }; public final EnergyCombatData combatData = new EnergyCombatData(); - public final EnergyHomingData homingData = new EnergyHomingData(); + public final EnergyTrajectoryData homingData = new EnergyTrajectoryData(); public final EnergyLightningData[] lightningData = new EnergyLightningData[]{ new EnergyLightningData(), new EnergyLightningData() }; @@ -253,7 +253,7 @@ public class AbilityOrbDual extends Ability { } // Getters & Setters - private EnergyColorData getColorData(int orb) { + private EnergyDisplayData getColorData(int orb) { orb = ValueUtil.clamp(orb, 0, 1); return colorData[orb]; } diff --git a/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilitySweeper.java b/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilitySweeper.java index 1ef4f7df4..1aa6fa139 100644 --- a/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilitySweeper.java +++ b/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilitySweeper.java @@ -5,7 +5,7 @@ import cpw.mods.fml.relauncher.SideOnly; import kamkeel.npcs.controllers.data.ability.Ability; import kamkeel.npcs.controllers.data.ability.LockMovementType; import kamkeel.npcs.controllers.data.ability.TargetingMode; -import kamkeel.npcs.controllers.data.ability.data.EnergyColorData; +import kamkeel.npcs.controllers.data.ability.data.EnergyDisplayData; import noppes.npcs.client.gui.builder.FieldDef; import kamkeel.npcs.controllers.data.ability.gui.AbilityFieldDefs; import kamkeel.npcs.controllers.data.telegraph.Telegraph; @@ -15,12 +15,10 @@ import kamkeel.npcs.entity.EntityAbilitySweeper; import net.minecraft.entity.EntityLivingBase; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; -import noppes.npcs.LogWriter; import noppes.npcs.api.ability.type.IAbilitySweeper; import java.util.Arrays; import java.util.List; -import noppes.npcs.entity.EntityNPCInterface; /** * Sweeper ability: A low sweeping beam that rotates around the NPC. @@ -44,7 +42,7 @@ public class AbilitySweeper extends Ability implements IAbilitySweeper { private boolean lockOnTarget = false; // Visual properties - private EnergyColorData colorData = new EnergyColorData(0xFF6600, 0xFF0000, true, 1.8f, 0.5f, 0.0f); + private EnergyDisplayData colorData = new EnergyDisplayData(0xFF6600, 0xFF0000, true, 1.8f, 0.5f, 0.0f); // Runtime state (transient) private transient EntityAbilitySweeper activeEntity = null; diff --git a/src/main/java/kamkeel/npcs/entity/EntityAbilityBeam.java b/src/main/java/kamkeel/npcs/entity/EntityAbilityBeam.java index 6aed40c3f..8580f9421 100644 --- a/src/main/java/kamkeel/npcs/entity/EntityAbilityBeam.java +++ b/src/main/java/kamkeel/npcs/entity/EntityAbilityBeam.java @@ -110,12 +110,12 @@ public class EntityAbilityBeam extends EntityAbilityProjectile { * If false, beam is free-moving with trailing length (no tail orb). */ public EntityAbilityBeam(World world, EntityLivingBase owner, EntityLivingBase target, - double x, double y, double z, - float beamWidth, float headSize, - EnergyColorData color, EnergyCombatData combat, - EnergyHomingData homing, EnergyLightningData lightning, - EnergyLifespanData lifespan, - boolean anchoredMode) { + double x, double y, double z, + float beamWidth, float headSize, + EnergyDisplayData color, EnergyCombatData combat, + EnergyTrajectoryData homing, EnergyLightningData lightning, + EnergyLifespanData lifespan, + boolean anchoredMode) { super(world); // Initialize base properties via parent @@ -180,7 +180,7 @@ public class EntityAbilityBeam extends EntityAbilityProjectile { this.motionZ = 0; } - public void setupPreview(EntityLivingBase owner, float beamWidth, float headSize, EnergyColorData color, EnergyLightningData lightning, EnergyAnchorData anchor, int chargeDuration, float chargeOffsetDistance) { + public void setupPreview(EntityLivingBase owner, float beamWidth, float headSize, EnergyDisplayData color, EnergyLightningData lightning, EnergyAnchorData anchor, int chargeDuration, float chargeOffsetDistance) { this.setPreviewMode(true); this.setPreviewOwner(owner); diff --git a/src/main/java/kamkeel/npcs/entity/EntityAbilityDisc.java b/src/main/java/kamkeel/npcs/entity/EntityAbilityDisc.java index 04afb2224..eba82ac03 100644 --- a/src/main/java/kamkeel/npcs/entity/EntityAbilityDisc.java +++ b/src/main/java/kamkeel/npcs/entity/EntityAbilityDisc.java @@ -1,6 +1,5 @@ package kamkeel.npcs.entity; -import kamkeel.npcs.controllers.data.ability.AnchorPoint; import kamkeel.npcs.controllers.data.ability.data.*; import kamkeel.npcs.util.AnchorPointHelper; import net.minecraft.entity.Entity; @@ -87,12 +86,12 @@ public class EntityAbilityDisc extends EntityAbilityProjectile { * Full constructor with all parameters using data classes. */ public EntityAbilityDisc(World world, EntityLivingBase owner, EntityLivingBase target, - double x, double y, double z, - float discRadius, float discThickness, - EnergyColorData color, EnergyCombatData combat, - EnergyHomingData homing, EnergyLightningData lightning, - EnergyLifespanData lifespan, - boolean boomerang, int boomerangDelay) { + double x, double y, double z, + float discRadius, float discThickness, + EnergyDisplayData color, EnergyCombatData combat, + EnergyTrajectoryData homing, EnergyLightningData lightning, + EnergyLifespanData lifespan, + boolean boomerang, int boomerangDelay) { super(world); // Initialize base properties @@ -157,7 +156,7 @@ public class EntityAbilityDisc extends EntityAbilityProjectile { * Follows anchor point and animations like in the real game. * Can be fired when transitioning to active phase. */ - public void setupPreview(EntityLivingBase owner, float discRadius, float discThickness, EnergyColorData color, EnergyLightningData lightning, EnergyAnchorData anchor, int chargeDuration) { + public void setupPreview(EntityLivingBase owner, float discRadius, float discThickness, EnergyDisplayData color, EnergyLightningData lightning, EnergyAnchorData anchor, int chargeDuration) { this.setPreviewMode(true); this.setPreviewOwner(owner); diff --git a/src/main/java/kamkeel/npcs/entity/EntityAbilityLaser.java b/src/main/java/kamkeel/npcs/entity/EntityAbilityLaser.java index e93ea5a77..a6b5ec6ed 100644 --- a/src/main/java/kamkeel/npcs/entity/EntityAbilityLaser.java +++ b/src/main/java/kamkeel/npcs/entity/EntityAbilityLaser.java @@ -88,11 +88,11 @@ public class EntityAbilityLaser extends EntityAbilityProjectile { * Full constructor with all parameters using data classes. */ public EntityAbilityLaser(World world, EntityLivingBase owner, EntityLivingBase target, - double x, double y, double z, - float laserWidth, - EnergyColorData color, EnergyCombatData combat, - EnergyLightningData lightning, EnergyLifespanData lifespan, - float expansionSpeed, int lingerTicks) { + double x, double y, double z, + float laserWidth, + EnergyDisplayData color, EnergyCombatData combat, + EnergyLightningData lightning, EnergyLifespanData lifespan, + float expansionSpeed, int lingerTicks) { super(world); // Initialize base properties (laser doesn't rotate) @@ -481,7 +481,7 @@ public class EntityAbilityLaser extends EntityAbilityProjectile { * Setup this laser in preview mode for GUI display. * Laser doesn't have charging state - spawns at active phase and fires immediately. */ - public void setupPreview(EntityLivingBase owner, float laserWidth, EnergyColorData color, + public void setupPreview(EntityLivingBase owner, float laserWidth, EnergyDisplayData color, EnergyLightningData lightning, float expansionSpeed, float maxDistance) { this.setPreviewMode(true); this.setPreviewOwner(owner); diff --git a/src/main/java/kamkeel/npcs/entity/EntityAbilityOrb.java b/src/main/java/kamkeel/npcs/entity/EntityAbilityOrb.java index 3c5895206..c036364c4 100644 --- a/src/main/java/kamkeel/npcs/entity/EntityAbilityOrb.java +++ b/src/main/java/kamkeel/npcs/entity/EntityAbilityOrb.java @@ -77,8 +77,8 @@ public class EntityAbilityOrb extends EntityAbilityProjectile { */ public EntityAbilityOrb(World world, EntityLivingBase owner, EntityLivingBase target, double x, double y, double z, float orbSize, - EnergyColorData color, EnergyCombatData combat, - EnergyHomingData homing, EnergyLightningData lightning, + EnergyDisplayData color, EnergyCombatData combat, + EnergyTrajectoryData homing, EnergyLightningData lightning, EnergyLifespanData lifespan) { super(world); @@ -136,7 +136,7 @@ public class EntityAbilityOrb extends EntityAbilityProjectile { * Follows anchor point and animations like in the real game. * Can be fired when transitioning to active phase. */ - public void setupPreview(EntityLivingBase owner, float orbSize, EnergyColorData color, EnergyLightningData lightning, EnergyAnchorData anchor, int chargeDuration) { + public void setupPreview(EntityLivingBase owner, float orbSize, EnergyDisplayData color, EnergyLightningData lightning, EnergyAnchorData anchor, int chargeDuration) { this.setPreviewMode(true); this.setPreviewOwner(owner); diff --git a/src/main/java/kamkeel/npcs/entity/EntityAbilityProjectile.java b/src/main/java/kamkeel/npcs/entity/EntityAbilityProjectile.java index 10dd0d953..6e6ecefc9 100644 --- a/src/main/java/kamkeel/npcs/entity/EntityAbilityProjectile.java +++ b/src/main/java/kamkeel/npcs/entity/EntityAbilityProjectile.java @@ -5,7 +5,7 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; import kamkeel.npcs.controllers.data.ability.AbilityEffect; -import kamkeel.npcs.controllers.data.ability.data.EnergyColorData; +import kamkeel.npcs.controllers.data.ability.data.EnergyDisplayData; import kamkeel.npcs.controllers.data.ability.data.EnergyCombatData; import kamkeel.npcs.controllers.data.ability.data.EnergyLifespanData; import kamkeel.npcs.controllers.data.ability.data.EnergyLightningData; @@ -16,7 +16,6 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.DamageSource; -import net.minecraft.util.Vec3; import net.minecraft.world.World; import noppes.npcs.NpcDamageSource; import noppes.npcs.entity.EntityNPCInterface; @@ -104,9 +103,9 @@ public abstract class EntityAbilityProjectile extends Entity implements IEntityA * Initialize common properties using data classes. Call from subclass constructors. */ protected void initProjectile(EntityLivingBase owner, EntityLivingBase target, - double x, double y, double z, float size, - EnergyColorData color, EnergyCombatData combat, - EnergyLightningData lightning, EnergyLifespanData lifespan) { + double x, double y, double z, float size, + EnergyDisplayData color, EnergyCombatData combat, + EnergyLightningData lightning, EnergyLifespanData lifespan) { this.setPosition(x, y, z); this.startX = x; this.startY = y; diff --git a/src/main/java/kamkeel/npcs/entity/EntityAbilitySweeper.java b/src/main/java/kamkeel/npcs/entity/EntityAbilitySweeper.java index 8540d4df9..001e7c62a 100644 --- a/src/main/java/kamkeel/npcs/entity/EntityAbilitySweeper.java +++ b/src/main/java/kamkeel/npcs/entity/EntityAbilitySweeper.java @@ -4,7 +4,7 @@ import cpw.mods.fml.common.registry.IEntityAdditionalSpawnData; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; -import kamkeel.npcs.controllers.data.ability.data.EnergyColorData; +import kamkeel.npcs.controllers.data.ability.data.EnergyDisplayData; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; @@ -74,7 +74,7 @@ public class EntityAbilitySweeper extends Entity implements IEntityAdditionalSpa public EntityAbilitySweeper(World world, EntityLivingBase owner, EntityLivingBase target, float beamLength, float beamWidth, float beamHeight, - EnergyColorData colorData, + EnergyDisplayData colorData, float sweepSpeed, int numberOfRotations, float damage, int damageInterval, boolean piercing, boolean lockOnTarget) { diff --git a/src/main/java/noppes/npcs/items/ItemStaff.java b/src/main/java/noppes/npcs/items/ItemStaff.java index 9957b195b..75387c58f 100644 --- a/src/main/java/noppes/npcs/items/ItemStaff.java +++ b/src/main/java/noppes/npcs/items/ItemStaff.java @@ -12,14 +12,12 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; -import net.minecraft.util.MathHelper; import net.minecraft.world.World; import net.minecraft.world.WorldServer; import noppes.npcs.CustomItems; import noppes.npcs.CustomNpcs; import noppes.npcs.constants.EnumNpcToolMaterial; import noppes.npcs.enchants.EnchantInterface; -import noppes.npcs.entity.EntityMagicProjectile; import noppes.npcs.entity.EntityProjectile; import noppes.npcs.util.IProjectileCallback; import org.lwjgl.opengl.GL11; @@ -108,10 +106,10 @@ public class ItemStaff extends ItemNpcInterface implements IProjectileCallback { combat.damage = damage; combat.explosive = true; - EnergyColorData colorData = new EnergyColorData(getOrbColor(stack, false), getOrbColor(stack, true)); + EnergyDisplayData colorData = new EnergyDisplayData(getOrbColor(stack, false), getOrbColor(stack, true)); EnergyLightningData lightning = new EnergyLightningData(); EnergyLifespanData lifespan = new EnergyLifespanData(100, 72000); - EnergyHomingData homing = new EnergyHomingData(); + EnergyTrajectoryData homing = new EnergyTrajectoryData(); homing.speed = 0.5f; homing.homingStrength = 0.35f; diff --git a/src/main/java/noppes/npcs/scripted/constants/EntityType.java b/src/main/java/noppes/npcs/scripted/constants/EntityType.java index bfe576856..995969682 100644 --- a/src/main/java/noppes/npcs/scripted/constants/EntityType.java +++ b/src/main/java/noppes/npcs/scripted/constants/EntityType.java @@ -14,4 +14,5 @@ public class EntityType { public static final int ARROW = 10; public static final int THROWABLE = 11; public static final int FISH_HOOK = 12; + public static final int ENERGY_PROJECTILE = 13; }