Added interfaces to energy data, refactored names

This commit is contained in:
Vidal committed 2026-02-03 15:45:45 -03:00
1 parent 87d511c38e
commit 75de803700
24 files changed
+340 -79

No files matched your search

@@ -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);
@@ -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);
@@ -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);
}
}
@@ -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);
@@ -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);
@@ -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);
}
}
@@ -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);
@@ -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];
}
@@ -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);
@@ -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];
}
@@ -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);
@@ -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);
@@ -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[]{
@@ -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];
}
@@ -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;
@@ -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);
@@ -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);
@@ -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);
@@ -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);
@@ -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;
@@ -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) {
@@ -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;
@@ -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;
}