diff --git a/src/api b/src/api
index ae4b84f3b..ca2980909 160000
--- a/src/api
+++ b/src/api
@@ -1 +1 @@
-Subproject commit ae4b84f3baf19c2998449e4b40ac33bc6a92555f
+Subproject commit ca2980909ee597fa5b062ca945a2cce533277afc
diff --git a/src/main/java/kamkeel/npcs/client/renderer/RenderAbilityBeam.java b/src/main/java/kamkeel/npcs/client/renderer/RenderAbilityBeam.java
index 725e440e5..d1b969921 100644
--- a/src/main/java/kamkeel/npcs/client/renderer/RenderAbilityBeam.java
+++ b/src/main/java/kamkeel/npcs/client/renderer/RenderAbilityBeam.java
@@ -14,12 +14,12 @@ import java.util.List;
/**
* Renders the AbilityBeam entity with a head, tail orb, and curving trail.
* The trail shows the path the head has traveled using laser-style rectangular segments.
- *
+ *
* IMPORTANT: Trail points are stored RELATIVE to the origin position.
* We render by translating to the origin first, then drawing all points relative to that.
- *
+ *
* Trail segments now share vertices at connection points to prevent gaps during curves.
- *
+ *
* Design inspired by LouisXIV's energy rendering system.
*/
@SideOnly(Side.CLIENT)
@@ -182,7 +182,7 @@ public class RenderAbilityBeam extends RenderEnergyAbility {
* Uses averaged perpendicular vectors at connection points to prevent gaps.
*/
private void renderSmoothTrail(List trail, float width, int innerColor, int outerColor,
- boolean outerColorEnabled, float outerColorWidth) {
+ boolean outerColorEnabled, float outerColorWidth) {
if (trail.size() < 2) return;
int trailSize = trail.size();
@@ -213,7 +213,7 @@ public class RenderAbilityBeam extends RenderEnergyAbility {
* Older trail points fade out based on their age.
*/
private void renderFadingTrail(EntityAbilityBeam beam, List trail, float width, int innerColor, int outerColor,
- boolean outerColorEnabled, float outerColorWidth) {
+ boolean outerColorEnabled, float outerColorWidth) {
if (trail.size() < 2) return;
List ages = beam.getTrailPointAges();
@@ -242,7 +242,7 @@ public class RenderAbilityBeam extends RenderEnergyAbility {
* Render trail tube with age-based fading.
*/
private void renderFadingTrailTube(List trail, List perpFrames, List ages,
- int fadeTime, float width, int color, float baseAlpha) {
+ int fadeTime, float width, int color, float baseAlpha) {
float[] rgb = extractRGB(color);
float r = rgb[0], g = rgb[1], b = rgb[2];
float halfWidth = width * 0.5f;
@@ -392,13 +392,17 @@ public class RenderAbilityBeam extends RenderEnergyAbility {
dy /= len;
dz /= len;
} else {
- dx = 0; dy = 0; dz = 1;
+ dx = 0;
+ dy = 0;
+ dz = 1;
}
// Calculate perpendicular vectors using consistent up reference
double upX = 0, upY = 1, upZ = 0;
if (Math.abs(dy) > 0.9) {
- upX = 1; upY = 0; upZ = 0;
+ upX = 1;
+ upY = 0;
+ upZ = 0;
}
// Cross product for horizontal perpendicular
@@ -417,8 +421,12 @@ public class RenderAbilityBeam extends RenderEnergyAbility {
double vertY = dz * horzX - dx * horzZ;
double vertZ = dx * horzY - dy * horzX;
- frame[0] = horzX; frame[1] = horzY; frame[2] = horzZ;
- frame[3] = vertX; frame[4] = vertY; frame[5] = vertZ;
+ frame[0] = horzX;
+ frame[1] = horzY;
+ frame[2] = horzZ;
+ frame[3] = vertX;
+ frame[4] = vertY;
+ frame[5] = vertZ;
frames.add(frame);
}
@@ -429,7 +437,7 @@ public class RenderAbilityBeam extends RenderEnergyAbility {
* Render the trail as a continuous tube using pre-computed perpendicular frames.
*/
private void renderTrailTube(List trail, List perpFrames,
- float width, int color, float baseAlpha, boolean fadeFromStart) {
+ float width, int color, float baseAlpha, boolean fadeFromStart) {
float[] rgb = extractRGB(color);
float r = rgb[0], g = rgb[1], b = rgb[2];
float halfWidth = width * 0.5f;
diff --git a/src/main/java/kamkeel/npcs/client/renderer/RenderAbilityDisc.java b/src/main/java/kamkeel/npcs/client/renderer/RenderAbilityDisc.java
index 76ffc6cfb..7f1a2e12c 100644
--- a/src/main/java/kamkeel/npcs/client/renderer/RenderAbilityDisc.java
+++ b/src/main/java/kamkeel/npcs/client/renderer/RenderAbilityDisc.java
@@ -9,7 +9,7 @@ import org.lwjgl.opengl.GL11;
/**
* Renders the AbilityDisc entity as a flat spinning square.
* Rotates only on Y axis (flat spin like a saw blade).
- *
+ *
* Design inspired by LouisXIV's energy rendering system.
*/
@SideOnly(Side.CLIENT)
diff --git a/src/main/java/kamkeel/npcs/client/renderer/RenderAbilityLaser.java b/src/main/java/kamkeel/npcs/client/renderer/RenderAbilityLaser.java
index e26f33489..543dba44c 100644
--- a/src/main/java/kamkeel/npcs/client/renderer/RenderAbilityLaser.java
+++ b/src/main/java/kamkeel/npcs/client/renderer/RenderAbilityLaser.java
@@ -10,7 +10,7 @@ import org.lwjgl.opengl.GL11;
/**
* Renders the AbilityLaser entity as a rectangular beam with clear inner/outer colors.
- *
+ *
* Design inspired by LouisXIV's energy rendering system.
*/
@SideOnly(Side.CLIENT)
@@ -69,7 +69,9 @@ public class RenderAbilityLaser extends RenderEnergyAbility {
// Calculate perpendicular vectors (one horizontal, one vertical relative to beam)
double upX = 0, upY = 1, upZ = 0;
if (Math.abs(dy) > 0.9) {
- upX = 1; upY = 0; upZ = 0;
+ upX = 1;
+ upY = 0;
+ upZ = 0;
}
// Cross product for horizontal perpendicular
@@ -98,29 +100,29 @@ public class RenderAbilityLaser extends RenderEnergyAbility {
float outerWidth = innerWidth + laser.getOuterColorWidth() * width;
GL11.glDepthMask(false);
renderBeamRectangle(renderStartX, renderStartY, renderStartZ,
- renderEndX, renderEndY, renderEndZ,
- horzX, horzY, horzZ, vertX, vertY, vertZ,
- outerWidth, laser.getOuterColor(), alpha * 0.4f);
+ renderEndX, renderEndY, renderEndZ,
+ horzX, horzY, horzZ, vertX, vertY, vertZ,
+ outerWidth, laser.getOuterColor(), alpha * 0.4f);
// Render middle layer (halfway between inner and outer)
float midWidth = innerWidth + (outerWidth - innerWidth) * 0.5f;
renderBeamRectangle(renderStartX, renderStartY, renderStartZ,
- renderEndX, renderEndY, renderEndZ,
- horzX, horzY, horzZ, vertX, vertY, vertZ,
- midWidth, laser.getOuterColor(), alpha * 0.7f);
+ renderEndX, renderEndY, renderEndZ,
+ horzX, horzY, horzZ, vertX, vertY, vertZ,
+ midWidth, laser.getOuterColor(), alpha * 0.7f);
GL11.glDepthMask(true);
}
// Render inner core (solid)
renderBeamRectangle(renderStartX, renderStartY, renderStartZ,
- renderEndX, renderEndY, renderEndZ,
- horzX, horzY, horzZ, vertX, vertY, vertZ,
- innerWidth, laser.getInnerColor(), alpha);
+ renderEndX, renderEndY, renderEndZ,
+ horzX, horzY, horzZ, vertX, vertY, vertZ,
+ innerWidth, laser.getInnerColor(), alpha);
// Render lightning along the laser beam
if (laser.hasLightningEffect() && laser.getCurrentLength() > 0.1f) {
renderLaserLightning(laser, renderStartX, renderStartY, renderStartZ,
- renderEndX, renderEndY, renderEndZ, width);
+ renderEndX, renderEndY, renderEndZ, width);
}
restoreRenderState();
@@ -179,8 +181,8 @@ public class RenderAbilityLaser extends RenderEnergyAbility {
* Render lightning effects along the laser beam at multiple points.
*/
private void renderLaserLightning(EntityAbilityLaser laser,
- double startX, double startY, double startZ,
- double endX, double endY, double endZ, float width) {
+ double startX, double startY, double startZ,
+ double endX, double endY, double endZ, float width) {
AttachedLightningRenderer.LightningState state = getLightningState(laser);
float density = laser.getLightningDensity();
@@ -229,10 +231,10 @@ public class RenderAbilityLaser extends RenderEnergyAbility {
* Render a beam as a 3D rectangular prism (box along a line).
*/
private void renderBeamRectangle(double x1, double y1, double z1,
- double x2, double y2, double z2,
- double horzX, double horzY, double horzZ,
- double vertX, double vertY, double vertZ,
- float width, int color, float alpha) {
+ double x2, double y2, double z2,
+ double horzX, double horzY, double horzZ,
+ double vertX, double vertY, double vertZ,
+ float width, int color, float alpha) {
float[] rgb = extractRGB(color);
float r = rgb[0], g = rgb[1], b = rgb[2];
diff --git a/src/main/java/kamkeel/npcs/client/renderer/RenderAbilitySweeper.java b/src/main/java/kamkeel/npcs/client/renderer/RenderAbilitySweeper.java
index 10705d762..2dbeac3c0 100644
--- a/src/main/java/kamkeel/npcs/client/renderer/RenderAbilitySweeper.java
+++ b/src/main/java/kamkeel/npcs/client/renderer/RenderAbilitySweeper.java
@@ -104,8 +104,8 @@ public class RenderAbilitySweeper extends Render {
* Uses the same approach as RenderAbilityBeam.renderBeamRectangle.
*/
private void renderBeamSegment(double x1, double y1, double z1,
- double x2, double y2, double z2,
- float width, float r, float g, float b, float a) {
+ double x2, double y2, double z2,
+ float width, float r, float g, float b, float a) {
// Calculate direction
double dx = x2 - x1;
double dy = y2 - y1;
@@ -121,7 +121,9 @@ public class RenderAbilitySweeper extends Render {
// Calculate perpendicular vectors
double upX = 0, upY = 1, upZ = 0;
if (Math.abs(dy) > 0.9) {
- upX = 1; upY = 0; upZ = 0;
+ upX = 1;
+ upY = 0;
+ upZ = 0;
}
// Cross product for horizontal perpendicular
diff --git a/src/main/java/kamkeel/npcs/client/renderer/RenderAbilityZone.java b/src/main/java/kamkeel/npcs/client/renderer/RenderAbilityZone.java
index e9775c542..ec21a268a 100644
--- a/src/main/java/kamkeel/npcs/client/renderer/RenderAbilityZone.java
+++ b/src/main/java/kamkeel/npcs/client/renderer/RenderAbilityZone.java
@@ -8,13 +8,13 @@ import kamkeel.npcs.entity.EntityAbilityZone.AccentStyle;
import kamkeel.npcs.entity.EntityAbilityZone.ParticleMotion;
import kamkeel.npcs.entity.EntityAbilityZone.ZoneShape;
import kamkeel.npcs.entity.EntityAbilityZone.ZoneType;
-import noppes.npcs.client.fx.CustomFX;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.entity.Render;
import net.minecraft.entity.Entity;
import net.minecraft.util.ResourceLocation;
+import noppes.npcs.client.fx.CustomFX;
import noppes.npcs.client.fx.ZoneParticleFX;
import org.lwjgl.opengl.GL11;
@@ -373,11 +373,21 @@ public class RenderAbilityZone extends Render {
}
}
- private float ringR(Ctx c) { return c.outerEnabled ? c.outerR : c.ir; }
- private float ringG(Ctx c) { return c.outerEnabled ? c.outerG : c.ig; }
- private float ringB(Ctx c) { return c.outerEnabled ? c.outerB : c.ib; }
+ private float ringR(Ctx c) {
+ return c.outerEnabled ? c.outerR : c.ir;
+ }
- private static float sin(double v) { return (float) Math.sin(v); }
+ private float ringG(Ctx c) {
+ return c.outerEnabled ? c.outerG : c.ig;
+ }
+
+ private float ringB(Ctx c) {
+ return c.outerEnabled ? c.outerB : c.ib;
+ }
+
+ private static float sin(double v) {
+ return (float) Math.sin(v);
+ }
private void renderSwayingAccents(Ctx c, float r, float g, float b, float a, float height) {
if (height <= 0.1f) return;
@@ -413,10 +423,22 @@ public class RenderAbilityZone extends Render {
float frac = (j + 0.5f) / perSide;
double lx, lz;
switch (side) {
- case 0: lx = -c.radius + frac * 2 * c.radius; lz = -c.radius; break;
- case 1: lx = c.radius; lz = -c.radius + frac * 2 * c.radius; break;
- case 2: lx = c.radius - frac * 2 * c.radius; lz = c.radius; break;
- default: lx = -c.radius; lz = c.radius - frac * 2 * c.radius; break;
+ case 0:
+ lx = -c.radius + frac * 2 * c.radius;
+ lz = -c.radius;
+ break;
+ case 1:
+ lx = c.radius;
+ lz = -c.radius + frac * 2 * c.radius;
+ break;
+ case 2:
+ lx = c.radius - frac * 2 * c.radius;
+ lz = c.radius;
+ break;
+ default:
+ lx = -c.radius;
+ lz = c.radius - frac * 2 * c.radius;
+ break;
}
float swayX = 0.15f * sin(c.time * 0.08f + idx * 1.7f);
float swayZ = 0.15f * sin(c.time * 0.06f + idx * 2.3f);
@@ -467,10 +489,22 @@ public class RenderAbilityZone extends Render {
float frac = (j + 0.5f) / perSide;
double lx, lz;
switch (side) {
- case 0: lx = -c.radius + frac * 2 * c.radius; lz = -c.radius; break;
- case 1: lx = c.radius; lz = -c.radius + frac * 2 * c.radius; break;
- case 2: lx = c.radius - frac * 2 * c.radius; lz = c.radius; break;
- default: lx = -c.radius; lz = c.radius - frac * 2 * c.radius; break;
+ case 0:
+ lx = -c.radius + frac * 2 * c.radius;
+ lz = -c.radius;
+ break;
+ case 1:
+ lx = c.radius;
+ lz = -c.radius + frac * 2 * c.radius;
+ break;
+ case 2:
+ lx = c.radius - frac * 2 * c.radius;
+ lz = c.radius;
+ break;
+ default:
+ lx = -c.radius;
+ lz = c.radius - frac * 2 * c.radius;
+ break;
}
float flicker = 0.3f + 0.7f * Math.abs(sin(c.time * 0.7f + idx * 3.14f));
float lineAlpha = baseAlpha * flicker;
@@ -506,10 +540,14 @@ public class RenderAbilityZone extends Render {
int side = RANDOM.nextInt(4);
double frac = RANDOM.nextDouble() * 2 - 1;
switch (side) {
- case 0: return new double[]{frac * c.radius, -c.radius};
- case 1: return new double[]{frac * c.radius, c.radius};
- case 2: return new double[]{-c.radius, frac * c.radius};
- default: return new double[]{c.radius, frac * c.radius};
+ case 0:
+ return new double[]{frac * c.radius, -c.radius};
+ case 1:
+ return new double[]{frac * c.radius, c.radius};
+ case 2:
+ return new double[]{-c.radius, frac * c.radius};
+ default:
+ return new double[]{c.radius, frac * c.radius};
}
} else {
double angle = RANDOM.nextDouble() * Math.PI * 2;
@@ -519,9 +557,9 @@ public class RenderAbilityZone extends Render {
}
private void spawnParticle(EntityAbilityZone zone, double offsetX, double offsetY, double offsetZ,
- double mx, double my, double mz,
- float r, float g, float b, float alpha,
- float scale, int maxAge, float gravity, boolean glow) {
+ double mx, double my, double mz,
+ float r, float g, float b, float alpha,
+ float scale, int maxAge, float gravity, boolean glow) {
ZoneParticleFX particle = new ZoneParticleFX(
zone.worldObj,
zone.posX + offsetX, zone.posY + offsetY, zone.posZ + offsetZ,
@@ -587,7 +625,7 @@ public class RenderAbilityZone extends Render {
}
private void renderRingLine(ZoneShape shape, float radius,
- float r, float g, float b, float a, float yOffset) {
+ float r, float g, float b, float a, float yOffset) {
switch (shape) {
case CIRCLE:
renderCircleRingLine(radius, r, g, b, a, yOffset);
@@ -621,8 +659,8 @@ public class RenderAbilityZone extends Render {
}
private void renderRotatingBorder(ZoneShape shape, float radius,
- float r, float g, float b, float a,
- float rotationDeg, float yOffset) {
+ float r, float g, float b, float a,
+ float rotationDeg, float yOffset) {
int dashCount = 16;
if (shape == ZoneShape.SQUARE) {
@@ -688,8 +726,8 @@ public class RenderAbilityZone extends Render {
}
private void renderVerticalAccents(ZoneShape shape, float radius,
- float r, float g, float b, float a,
- float height, float rotationDeg) {
+ float r, float g, float b, float a,
+ float height, float rotationDeg) {
if (height <= 0.1f) return;
Tessellator tess = Tessellator.instance;
@@ -701,10 +739,22 @@ public class RenderAbilityZone extends Render {
float frac = (j + 0.5f) / perSide;
double lx, lz;
switch (side) {
- case 0: lx = -radius + frac * 2 * radius; lz = -radius; break;
- case 1: lx = radius; lz = -radius + frac * 2 * radius; break;
- case 2: lx = radius - frac * 2 * radius; lz = radius; break;
- default: lx = -radius; lz = radius - frac * 2 * radius; break;
+ case 0:
+ lx = -radius + frac * 2 * radius;
+ lz = -radius;
+ break;
+ case 1:
+ lx = radius;
+ lz = -radius + frac * 2 * radius;
+ break;
+ case 2:
+ lx = radius - frac * 2 * radius;
+ lz = radius;
+ break;
+ default:
+ lx = -radius;
+ lz = radius - frac * 2 * radius;
+ break;
}
tess.startDrawing(GL11.GL_LINES);
tess.setColorRGBA_F(r, g, b, a);
diff --git a/src/main/java/kamkeel/npcs/client/renderer/RenderEnergyAbility.java b/src/main/java/kamkeel/npcs/client/renderer/RenderEnergyAbility.java
index f4aa9c318..9496f06a5 100644
--- a/src/main/java/kamkeel/npcs/client/renderer/RenderEnergyAbility.java
+++ b/src/main/java/kamkeel/npcs/client/renderer/RenderEnergyAbility.java
@@ -15,7 +15,7 @@ import org.lwjgl.opengl.GL12;
/**
* Base renderer for ability projectiles.
* Provides common GL state setup and rendering utilities.
- *
+ *
* Design inspired by LouisXIV's energy rendering system.
*/
@SideOnly(Side.CLIENT)
@@ -212,8 +212,8 @@ public abstract class RenderEnergyAbility extends Render {
* Render a line segment as a quad billboard facing the camera.
*/
protected void renderLineSegment(double x1, double y1, double z1,
- double x2, double y2, double z2,
- float width, int color, float alpha) {
+ double x2, double y2, double z2,
+ float width, int color, float alpha) {
float[] rgb = extractRGB(color);
float r = rgb[0], g = rgb[1], b = rgb[2];
@@ -270,9 +270,10 @@ public abstract class RenderEnergyAbility extends Render {
/**
* Render attached lightning arcs around an energy entity.
- * @param entity the energy entity
+ *
+ * @param entity the energy entity
* @param innerScale multiplier for inner radius (e.g. 0.3f for projectiles, 0.95f for dome)
- * @param baseSize the entity's current render size/scale
+ * @param baseSize the entity's current render size/scale
*/
protected void renderAttachedLightning(EntityEnergyAbility entity, float innerScale, float baseSize) {
AttachedLightningRenderer.LightningState state = getLightningState(entity);
diff --git a/src/main/java/kamkeel/npcs/client/renderer/RenderEnergyDome.java b/src/main/java/kamkeel/npcs/client/renderer/RenderEnergyDome.java
index ecdba16eb..8653bb27d 100644
--- a/src/main/java/kamkeel/npcs/client/renderer/RenderEnergyDome.java
+++ b/src/main/java/kamkeel/npcs/client/renderer/RenderEnergyDome.java
@@ -95,7 +95,11 @@ public class RenderEnergyDome extends RenderEnergyBarrier {
float ny = (y1 + y1 + y2 + y2) * 0.25f;
float nz = (z1 + z2 + z3 + z4) * 0.25f;
float nLen = (float) Math.sqrt(nx * nx + ny * ny + nz * nz);
- if (nLen > 0) { nx /= nLen; ny /= nLen; nz /= nLen; }
+ if (nLen > 0) {
+ nx /= nLen;
+ ny /= nLen;
+ nz /= nLen;
+ }
tess.setNormal(nx, ny, nz);
tess.addVertex(x1, y1, z1);
diff --git a/src/main/java/kamkeel/npcs/client/renderer/TelegraphRenderer.java b/src/main/java/kamkeel/npcs/client/renderer/TelegraphRenderer.java
index 78ba58aed..9bcf473ac 100644
--- a/src/main/java/kamkeel/npcs/client/renderer/TelegraphRenderer.java
+++ b/src/main/java/kamkeel/npcs/client/renderer/TelegraphRenderer.java
@@ -299,8 +299,8 @@ public class TelegraphRenderer {
* @param partialTicks Partial ticks for interpolation
*/
public void renderTelegraphInGUI(TelegraphInstance instance,
- double centerX, double centerY, double centerZ,
- float scale, float partialTicks) {
+ double centerX, double centerY, double centerZ,
+ float scale, float partialTicks) {
if (instance == null) return;
Telegraph telegraph = instance.getTelegraph();
diff --git a/src/main/java/kamkeel/npcs/client/renderer/lightning/AttachedLightningRenderer.java b/src/main/java/kamkeel/npcs/client/renderer/lightning/AttachedLightningRenderer.java
index 2910a9566..5e9e2342b 100644
--- a/src/main/java/kamkeel/npcs/client/renderer/lightning/AttachedLightningRenderer.java
+++ b/src/main/java/kamkeel/npcs/client/renderer/lightning/AttachedLightningRenderer.java
@@ -165,8 +165,8 @@ public class AttachedLightningRenderer {
* Generate a jagged lightning path between two points.
*/
private static List generateLightningPath(double x1, double y1, double z1,
- double x2, double y2, double z2,
- int segments, float displacement) {
+ double x2, double y2, double z2,
+ int segments, float displacement) {
List points = new ArrayList<>();
points.add(new double[]{x1, y1, z1});
@@ -257,8 +257,8 @@ public class AttachedLightningRenderer {
* Create a lightning arc between two arbitrary points.
*/
public static LightningArc createArcBetween(double x1, double y1, double z1,
- double x2, double y2, double z2,
- float displacement, int outerColor, int innerColor, int maxAge) {
+ double x2, double y2, double z2,
+ float displacement, int outerColor, int innerColor, int maxAge) {
int segments = 4 + rand.nextInt(3);
List points = generateLightningPath(x1, y1, z1, x2, y2, z2, segments, displacement);
return new LightningArc(points, maxAge, outerColor, innerColor);
diff --git a/src/main/java/kamkeel/npcs/client/renderer/lightning/LightningBolt.java b/src/main/java/kamkeel/npcs/client/renderer/lightning/LightningBolt.java
index 6cf6e7d3a..e077189ab 100644
--- a/src/main/java/kamkeel/npcs/client/renderer/lightning/LightningBolt.java
+++ b/src/main/java/kamkeel/npcs/client/renderer/lightning/LightningBolt.java
@@ -243,7 +243,7 @@ public class LightningBolt {
public Segment(Vec3d start, Vec3d end) {
this(new BoltPoint(start, new Vec3d(0, 0, 0)),
- new BoltPoint(end, new Vec3d(0, 0, 0)), 1, 0, 0);
+ new BoltPoint(end, new Vec3d(0, 0, 0)), 1, 0, 0);
}
public void calcDiff() {
diff --git a/src/main/java/kamkeel/npcs/client/renderer/lightning/LightningHandler.java b/src/main/java/kamkeel/npcs/client/renderer/lightning/LightningHandler.java
index 1951666e4..d3f9aeedd 100644
--- a/src/main/java/kamkeel/npcs/client/renderer/lightning/LightningHandler.java
+++ b/src/main/java/kamkeel/npcs/client/renderer/lightning/LightningHandler.java
@@ -5,7 +5,6 @@ import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import kamkeel.npcs.client.renderer.lightning.LightningBolt.Segment;
import net.minecraft.client.Minecraft;
-import net.minecraft.client.renderer.ActiveRenderInfo;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.texture.TextureManager;
import net.minecraft.entity.Entity;
@@ -19,7 +18,7 @@ import java.awt.Color;
/**
* Handles rendering of lightning bolts in the world.
* Adapted from Botania's LightningHandler by Vazkii/ChickenBones.
- *
+ *
* Register this handler with: MinecraftForge.EVENT_BUS.register(new LightningHandler());
*/
@SideOnly(Side.CLIENT)
@@ -168,13 +167,13 @@ public class LightningHandler {
/**
* Spawn a lightning bolt between two points.
*
- * @param world The world
- * @param start Start position
- * @param end End position
+ * @param world The world
+ * @param start Start position
+ * @param end End position
* @param ticksPerMeter Speed of bolt expansion
- * @param seed Random seed for consistent appearance
- * @param colorOuter Outer glow color (ARGB)
- * @param colorInner Inner core color (ARGB)
+ * @param seed Random seed for consistent appearance
+ * @param colorOuter Outer glow color (ARGB)
+ * @param colorInner Inner core color (ARGB)
*/
public static void spawnLightningBolt(World world, Vec3d start, Vec3d end, float ticksPerMeter, long seed, int colorOuter, int colorInner) {
LightningBolt bolt = new LightningBolt(world, start, end, ticksPerMeter, seed, colorOuter, colorInner);
diff --git a/src/main/java/kamkeel/npcs/command/AbilityCommand.java b/src/main/java/kamkeel/npcs/command/AbilityCommand.java
index 5c5a69f88..9be809697 100644
--- a/src/main/java/kamkeel/npcs/command/AbilityCommand.java
+++ b/src/main/java/kamkeel/npcs/command/AbilityCommand.java
@@ -1,7 +1,7 @@
package kamkeel.npcs.command;
-import kamkeel.npcs.controllers.data.ability.Ability;
import kamkeel.npcs.controllers.AbilityController;
+import kamkeel.npcs.controllers.data.ability.Ability;
import kamkeel.npcs.controllers.data.ability.ChainedAbility;
import kamkeel.npcs.controllers.data.ability.UserType;
import net.minecraft.command.ICommandSender;
diff --git a/src/main/java/kamkeel/npcs/command/CommandKamkeelBase.java b/src/main/java/kamkeel/npcs/command/CommandKamkeelBase.java
index df4d34998..c6ffe7ec1 100644
--- a/src/main/java/kamkeel/npcs/command/CommandKamkeelBase.java
+++ b/src/main/java/kamkeel/npcs/command/CommandKamkeelBase.java
@@ -11,7 +11,13 @@ import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.lang.reflect.Method;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
public abstract class CommandKamkeelBase extends CommandBase {
public Map subcommands = new HashMap();
diff --git a/src/main/java/kamkeel/npcs/controllers/AbilityController.java b/src/main/java/kamkeel/npcs/controllers/AbilityController.java
index 4356ac271..e872251e5 100644
--- a/src/main/java/kamkeel/npcs/controllers/AbilityController.java
+++ b/src/main/java/kamkeel/npcs/controllers/AbilityController.java
@@ -9,7 +9,19 @@ import kamkeel.npcs.controllers.data.ability.IAbilityExtender;
import kamkeel.npcs.controllers.data.ability.IAbilityFieldProvider;
import kamkeel.npcs.controllers.data.ability.IChainedAbilityFieldProvider;
import kamkeel.npcs.controllers.data.ability.UserType;
-import kamkeel.npcs.controllers.data.ability.type.*;
+import kamkeel.npcs.controllers.data.ability.type.AbilityCharge;
+import kamkeel.npcs.controllers.data.ability.type.AbilityCutter;
+import kamkeel.npcs.controllers.data.ability.type.AbilityDash;
+import kamkeel.npcs.controllers.data.ability.type.AbilityGuard;
+import kamkeel.npcs.controllers.data.ability.type.AbilityHazard;
+import kamkeel.npcs.controllers.data.ability.type.AbilityHeal;
+import kamkeel.npcs.controllers.data.ability.type.AbilityHeavyHit;
+import kamkeel.npcs.controllers.data.ability.type.AbilityProjectile;
+import kamkeel.npcs.controllers.data.ability.type.AbilityShockwave;
+import kamkeel.npcs.controllers.data.ability.type.AbilitySlam;
+import kamkeel.npcs.controllers.data.ability.type.AbilityTeleport;
+import kamkeel.npcs.controllers.data.ability.type.AbilityTrap;
+import kamkeel.npcs.controllers.data.ability.type.AbilityVortex;
import kamkeel.npcs.controllers.data.ability.type.energy.AbilityBeam;
import kamkeel.npcs.controllers.data.ability.type.energy.AbilityDisc;
import kamkeel.npcs.controllers.data.ability.type.energy.AbilityDome;
@@ -20,16 +32,22 @@ import kamkeel.npcs.controllers.data.ability.type.energy.AbilitySlicer;
import kamkeel.npcs.controllers.data.ability.type.energy.AbilitySweeper;
import kamkeel.npcs.controllers.data.ability.type.energy.AbilityWall;
import net.minecraft.entity.EntityLivingBase;
+import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.nbt.NBTTagCompound;
import noppes.npcs.CustomNpcs;
import noppes.npcs.LogWriter;
import noppes.npcs.api.handler.IAbilityHandler;
import noppes.npcs.util.NBTJsonUtil;
-import net.minecraft.entity.player.EntityPlayer;
-
import java.io.File;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.LinkedHashMap;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.UUID;
import java.util.function.Predicate;
import java.util.function.Supplier;
import java.util.regex.Pattern;
@@ -794,7 +812,8 @@ public class AbilityController implements IAbilityHandler {
// If no built-in variants exist but external ones do,
// inject a "Base" variant so the user always gets a choice
if (result.isEmpty()) {
- result.add(new AbilityVariant("ability.variant.base", a -> {}));
+ result.add(new AbilityVariant("ability.variant.base", a -> {
+ }));
}
result.addAll(ext);
}
@@ -880,7 +899,7 @@ public class AbilityController implements IAbilityHandler {
double knockbackDirX, double knockbackDirZ) {
for (IAbilityExtender ext : extenders) {
if (ext.onAbilityDamage(ability, caster, target, damage, knockback, knockbackUp,
- knockbackDirX, knockbackDirZ)) {
+ knockbackDirX, knockbackDirZ)) {
return true;
}
}
diff --git a/src/main/java/kamkeel/npcs/controllers/SyncController.java b/src/main/java/kamkeel/npcs/controllers/SyncController.java
index 014568af3..af7366a3f 100644
--- a/src/main/java/kamkeel/npcs/controllers/SyncController.java
+++ b/src/main/java/kamkeel/npcs/controllers/SyncController.java
@@ -5,6 +5,8 @@ import cpw.mods.fml.relauncher.SideOnly;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import kamkeel.npcs.addon.DBCAddon;
+import kamkeel.npcs.controllers.data.ability.Ability;
+import kamkeel.npcs.controllers.data.ability.ChainedAbility;
import kamkeel.npcs.network.LargeAbstractPacket;
import kamkeel.npcs.network.PacketHandler;
import kamkeel.npcs.network.enums.EnumSyncAction;
@@ -39,8 +41,6 @@ import noppes.npcs.controllers.data.Quest;
import noppes.npcs.controllers.data.QuestCategory;
import noppes.npcs.controllers.data.RecipeAnvil;
import noppes.npcs.controllers.data.RecipeCarpentry;
-import kamkeel.npcs.controllers.data.ability.Ability;
-import kamkeel.npcs.controllers.data.ability.ChainedAbility;
import java.io.IOException;
import java.util.EnumMap;
diff --git a/src/main/java/kamkeel/npcs/controllers/data/ability/Ability.java b/src/main/java/kamkeel/npcs/controllers/data/ability/Ability.java
index 54529b7f3..c44f1bd47 100644
--- a/src/main/java/kamkeel/npcs/controllers/data/ability/Ability.java
+++ b/src/main/java/kamkeel/npcs/controllers/data/ability/Ability.java
@@ -7,38 +7,36 @@ import kamkeel.npcs.controllers.data.telegraph.Telegraph;
import kamkeel.npcs.controllers.data.telegraph.TelegraphInstance;
import kamkeel.npcs.controllers.data.telegraph.TelegraphType;
import net.minecraft.block.Block;
+import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
-import net.minecraft.util.AxisAlignedBB;
+import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
+import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.DamageSource;
import net.minecraft.world.World;
import noppes.npcs.DataAbilities;
import noppes.npcs.NpcDamageSource;
import noppes.npcs.api.INbt;
import noppes.npcs.api.ability.IAbility;
+import noppes.npcs.api.entity.IPlayer;
import noppes.npcs.client.gui.advanced.SubGuiAbilityConfig;
+import noppes.npcs.client.gui.builder.FieldDef;
import noppes.npcs.client.gui.util.IAbilityConfigCallback;
import noppes.npcs.controllers.AnimationController;
-import noppes.npcs.controllers.data.Animation;
-import net.minecraft.entity.player.EntityPlayer;
-import noppes.npcs.controllers.data.Frame;
-import noppes.npcs.entity.EntityNPCInterface;
-import noppes.npcs.api.entity.IPlayer;
import noppes.npcs.controllers.ScriptController;
+import noppes.npcs.controllers.data.Animation;
+import noppes.npcs.controllers.data.Frame;
import noppes.npcs.controllers.data.PlayerDataScript;
+import noppes.npcs.entity.EntityNPCInterface;
import noppes.npcs.scripted.NpcAPI;
import noppes.npcs.scripted.event.AbilityEvent;
import noppes.npcs.scripted.event.player.PlayerAbilityEvent;
-import noppes.npcs.client.gui.builder.FieldDef;
-
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
-import net.minecraft.entity.Entity;
-
public abstract class Ability implements IAbility, IAbilityAction {
// ═══════════════════════════════════════════════════════════════════
@@ -115,10 +113,14 @@ public abstract class Ability implements IAbility, IAbilityAction {
// TOGGLE CONFIGURATION (saved to NBT for custom abilities)
// ═══════════════════════════════════════════════════════════════════
- /** Whether this ability is a toggle (ON/OFF) rather than a phased execution */
+ /**
+ * Whether this ability is a toggle (ON/OFF) rather than a phased execution
+ */
protected boolean toggleable = false;
- /** Whether the toggled-ON state ticks each game tick (e.g., Kaioken drains ki per tick) */
+ /**
+ * Whether the toggled-ON state ticks each game tick (e.g., Kaioken drains ki per tick)
+ */
protected boolean hasActiveToggle = false;
// Configurable potion effects
@@ -232,17 +234,20 @@ public abstract class Ability implements IAbility, IAbilityAction {
* Called when this toggle ability is turned ON for an entity.
* Override to apply effects (e.g., set a DBC flag, apply a buff).
*/
- public void onToggleOn(EntityLivingBase caster) {}
+ public void onToggleOn(EntityLivingBase caster) {
+ }
/**
* Called when this toggle ability is turned OFF for an entity.
* Override to remove effects (e.g., clear a DBC flag, remove a buff).
*/
- public void onToggleOff(EntityLivingBase caster) {}
+ public void onToggleOff(EntityLivingBase caster) {
+ }
/**
* Called every tick while this toggle is active (only if hasActiveToggle is true).
* Override for per-tick effects (e.g., ki drain for Kaioken).
+ *
* @return true to keep the toggle active, false to auto-deactivate
*/
public boolean onToggleTick(EntityLivingBase caster, int tickCount) {
@@ -252,6 +257,7 @@ public abstract class Ability implements IAbility, IAbilityAction {
/**
* Whether this ability is ready for auto-completion during burst overlap mode.
* Override to delay auto-completion until all staggered projectiles have been fired.
+ *
* @param activeTick the current tick within the ACTIVE phase
*/
public boolean isReadyForBurstCompletion(int activeTick) {
@@ -554,27 +560,36 @@ public abstract class Ability implements IAbility, IAbilityAction {
() -> this.getLockMovement().getDisplayKey(),
v -> {
for (LockMovementType t : LockMovementType.values()) {
- if (t.getDisplayKey().equals(v)) { this.setLockMovement(t); break; }
+ if (t.getDisplayKey().equals(v)) {
+ this.setLockMovement(t);
+ break;
+ }
}
})
- .hover("ability.hover.lockMovement")
- .tab("General"));
+ .hover("ability.hover.lockMovement")
+ .tab("General"));
defs.add(FieldDef.row(
FieldDef.stringEnumField("ability.rotationMode", RotationMode.getDisplayKeys(),
- () -> this.getRotationMode().getDisplayKey(),
- v -> {
- for (RotationMode m : RotationMode.values()) {
- if (m.getDisplayKey().equals(v)) { this.setRotationMode(m); break; }
- }
- })
+ () -> this.getRotationMode().getDisplayKey(),
+ v -> {
+ for (RotationMode m : RotationMode.values()) {
+ if (m.getDisplayKey().equals(v)) {
+ this.setRotationMode(m);
+ break;
+ }
+ }
+ })
.hover("ability.hover.rotationMode"),
FieldDef.stringEnumField("ability.rotationPhase", getRotationPhaseKeys(),
- () -> this.getRotationPhase().getDisplayKey(),
- v -> {
- for (LockMovementType t : LockMovementType.values()) {
- if (t.getDisplayKey().equals(v)) { this.setRotationPhase(t); break; }
- }
- })
+ () -> this.getRotationPhase().getDisplayKey(),
+ v -> {
+ for (LockMovementType t : LockMovementType.values()) {
+ if (t.getDisplayKey().equals(v)) {
+ this.setRotationPhase(t);
+ break;
+ }
+ }
+ })
.hover("ability.hover.rotationPhase")
.visibleWhen(() -> this.rotationMode != RotationMode.FREE)
).tab("General"));
@@ -617,15 +632,17 @@ public abstract class Ability implements IAbility, IAbilityAction {
allowedKeys[i] = allowed[i].name();
}
defs.add(FieldDef.stringEnumField("ability.targetingMode", allowedKeys,
- () -> this.getTargetingMode().name(),
- v -> {
- try { this.setTargetingMode(TargetingMode.valueOf(v)); }
- catch (Exception ignored) {}
- })
+ () -> this.getTargetingMode().name(),
+ v -> {
+ try {
+ this.setTargetingMode(TargetingMode.valueOf(v));
+ } catch (Exception ignored) {
+ }
+ })
.tab("Target").hover("ability.hover.targeting"));
} else {
defs.add(FieldDef.enumField("ability.targetingMode", TargetingMode.class,
- this::getTargetingMode, this::setTargetingMode)
+ this::getTargetingMode, this::setTargetingMode)
.tab("Target").hover("ability.hover.targeting"));
}
}
@@ -638,12 +655,12 @@ public abstract class Ability implements IAbility, IAbilityAction {
.tab("Effects"));
defs.add(FieldDef.section("ability.section.animations").tab("Effects"));
defs.add(FieldDef.animSubGui("ability.windUpAnimation",
- this::getWindUpAnimationId, this::setWindUpAnimationId,
- this::getWindUpAnimationName, this::setWindUpAnimationName)
+ this::getWindUpAnimationId, this::setWindUpAnimationId,
+ this::getWindUpAnimationName, this::setWindUpAnimationName)
.tab("Effects"));
defs.add(FieldDef.animSubGui("ability.activeAnimation",
- this::getActiveAnimationId, this::setActiveAnimationId,
- this::getActiveAnimationName, this::setActiveAnimationName)
+ this::getActiveAnimationId, this::setActiveAnimationId,
+ this::getActiveAnimationName, this::setActiveAnimationName)
.tab("Effects"));
defs.add(FieldDef.animSubGui("ability.dazedAnimation",
this::getDazedAnimationId, this::setDazedAnimationId,
@@ -699,7 +716,7 @@ public abstract class Ability implements IAbility, IAbilityAction {
* Create a telegraph instance for this ability.
* Override for custom telegraph shapes.
*
- * @param caster The caster
+ * @param caster The caster
* @param target The target (for position calculation)
* @return The telegraph instance, or null if no telegraph
*/
@@ -1514,6 +1531,7 @@ public abstract class Ability implements IAbility, IAbilityAction {
/**
* API method: Get lock movement type as integer.
+ *
* @return 0=NO, 1=WINDUP, 2=ACTIVE, 3=WINDUP_AND_ACTIVE
*/
@Override
@@ -1523,6 +1541,7 @@ public abstract class Ability implements IAbility, IAbilityAction {
/**
* API method: Set lock movement type from integer.
+ *
* @param type 0=NO, 1=WINDUP, 2=ACTIVE, 3=WINDUP_AND_ACTIVE
*/
@Override
@@ -1532,6 +1551,7 @@ public abstract class Ability implements IAbility, IAbilityAction {
/**
* API method: Get rotation mode as integer.
+ *
* @return 0=FREE, 1=LOCKED, 2=TRACK
*/
@Override
@@ -1541,6 +1561,7 @@ public abstract class Ability implements IAbility, IAbilityAction {
/**
* API method: Set rotation mode from integer.
+ *
* @param type 0=FREE, 1=LOCKED, 2=TRACK
*/
@Override
@@ -1550,6 +1571,7 @@ public abstract class Ability implements IAbility, IAbilityAction {
/**
* API method: Get rotation phase as integer.
+ *
* @return 0=NO, 1=WINDUP, 2=ACTIVE, 3=WINDUP_AND_ACTIVE
*/
@Override
@@ -1559,6 +1581,7 @@ public abstract class Ability implements IAbility, IAbilityAction {
/**
* API method: Set rotation phase from integer.
+ *
* @param type 0=NO, 1=WINDUP, 2=ACTIVE, 3=WINDUP_AND_ACTIVE
*/
@Override
diff --git a/src/main/java/kamkeel/npcs/controllers/data/ability/AbilityAction.java b/src/main/java/kamkeel/npcs/controllers/data/ability/AbilityAction.java
index e42c52980..830d5d0ec 100644
--- a/src/main/java/kamkeel/npcs/controllers/data/ability/AbilityAction.java
+++ b/src/main/java/kamkeel/npcs/controllers/data/ability/AbilityAction.java
@@ -24,14 +24,17 @@ public class AbilityAction {
private ChainedAbility inlineChain;
private String referenceId;
- /** Per-slot enabled override for reference slots (null = use master's default). */
+ /**
+ * Per-slot enabled override for reference slots (null = use master's default).
+ */
private Boolean enabledOverride;
// Cache
private transient IAbilityAction cachedAction;
private transient int cachedRevision = -1;
- private AbilityAction() {}
+ private AbilityAction() {
+ }
// ═══════════════════════════════════════════════════════════════════
// FACTORY METHODS
diff --git a/src/main/java/kamkeel/npcs/controllers/data/ability/AbilitySlot.java b/src/main/java/kamkeel/npcs/controllers/data/ability/AbilitySlot.java
index 07295aaf7..1afbf0906 100644
--- a/src/main/java/kamkeel/npcs/controllers/data/ability/AbilitySlot.java
+++ b/src/main/java/kamkeel/npcs/controllers/data/ability/AbilitySlot.java
@@ -18,13 +18,16 @@ public class AbilitySlot {
private Ability inlineAbility;
private String referenceId;
- /** Per-slot enabled override for reference slots (null = use master's default). */
+ /**
+ * Per-slot enabled override for reference slots (null = use master's default).
+ */
private Boolean enabledOverride;
private transient Ability cachedAbility;
private transient int cachedVersion = -1;
- private AbilitySlot() {}
+ private AbilitySlot() {
+ }
/**
* Create a slot with an inline (embedded) ability.
diff --git a/src/main/java/kamkeel/npcs/controllers/data/ability/AbilityVariant.java b/src/main/java/kamkeel/npcs/controllers/data/ability/AbilityVariant.java
index 797e6b20b..0ef3b9692 100644
--- a/src/main/java/kamkeel/npcs/controllers/data/ability/AbilityVariant.java
+++ b/src/main/java/kamkeel/npcs/controllers/data/ability/AbilityVariant.java
@@ -6,7 +6,7 @@ import java.util.function.Consumer;
* Represents a variant/template for an ability type.
* When a user creates an ability that has registered variants,
* they are presented with a selection dialog before the ability is created.
- *
+ *
* Each variant has a display name (lang key) and a configurator that
* applies preset values to the newly created ability.
*/
diff --git a/src/main/java/kamkeel/npcs/controllers/data/ability/AnchorPoint.java b/src/main/java/kamkeel/npcs/controllers/data/ability/AnchorPoint.java
index 58e54b5aa..959aa2cf4 100644
--- a/src/main/java/kamkeel/npcs/controllers/data/ability/AnchorPoint.java
+++ b/src/main/java/kamkeel/npcs/controllers/data/ability/AnchorPoint.java
@@ -50,14 +50,22 @@ public enum AnchorPoint {
@Override
public String toString() {
switch (this) {
- case FRONT: return "ability.anchor.front";
- case CENTER: return "ability.anchor.center";
- case RIGHT_HAND: return "ability.anchor.rightHand";
- case LEFT_HAND: return "ability.anchor.leftHand";
- case ABOVE_HEAD: return "ability.anchor.aboveHead";
- case CHEST: return "ability.anchor.chest";
- case EYE: return "ability.anchor.eye";
- default: return name();
+ case FRONT:
+ return "ability.anchor.front";
+ case CENTER:
+ return "ability.anchor.center";
+ case RIGHT_HAND:
+ return "ability.anchor.rightHand";
+ case LEFT_HAND:
+ return "ability.anchor.leftHand";
+ case ABOVE_HEAD:
+ return "ability.anchor.aboveHead";
+ case CHEST:
+ return "ability.anchor.chest";
+ case EYE:
+ return "ability.anchor.eye";
+ default:
+ return name();
}
}
}
diff --git a/src/main/java/kamkeel/npcs/controllers/data/ability/ChainedAbility.java b/src/main/java/kamkeel/npcs/controllers/data/ability/ChainedAbility.java
index eff65e8a9..5de37416e 100644
--- a/src/main/java/kamkeel/npcs/controllers/data/ability/ChainedAbility.java
+++ b/src/main/java/kamkeel/npcs/controllers/data/ability/ChainedAbility.java
@@ -29,31 +29,48 @@ public class ChainedAbility implements IChainedAbility, IAbilityAction {
private boolean enabled = true;
- /** Weight for NPC weighted random selection. */
+ /**
+ * Weight for NPC weighted random selection.
+ */
private int weight = 10;
- /** Whether each ability in the chain uses its own windup phase. */
+ /**
+ * Whether each ability in the chain uses its own windup phase.
+ */
private boolean windUpAll = true;
- /** Chain-level cooldown in ticks (applied after entire chain completes). */
+ /**
+ * Chain-level cooldown in ticks (applied after entire chain completes).
+ */
private int cooldownTicks = 100;
- /** Minimum range for NPC eligibility check. */
+ /**
+ * Minimum range for NPC eligibility check.
+ */
private float minRange = 0;
- /** Maximum range for NPC eligibility check. */
+ /**
+ * Maximum range for NPC eligibility check.
+ */
private float maxRange = 20;
- /** Chain-level conditions (individual ability conditions are ignored). */
+ /**
+ * Chain-level conditions (individual ability conditions are ignored).
+ */
private List conditions = new ArrayList<>();
- /** Ordered list of ability entries to execute. */
+ /**
+ * Ordered list of ability entries to execute.
+ */
private List entries = new ArrayList<>();
- /** Extension data for external mods (e.g., icons, DBC stats). */
+ /**
+ * Extension data for external mods (e.g., icons, DBC stats).
+ */
private NBTTagCompound customData = new NBTTagCompound();
- public ChainedAbility() {}
+ public ChainedAbility() {
+ }
public ChainedAbility(String name) {
this.name = name != null ? name : "";
diff --git a/src/main/java/kamkeel/npcs/controllers/data/ability/ChainedAbilityEntry.java b/src/main/java/kamkeel/npcs/controllers/data/ability/ChainedAbilityEntry.java
index 887d85571..be8528ed0 100644
--- a/src/main/java/kamkeel/npcs/controllers/data/ability/ChainedAbilityEntry.java
+++ b/src/main/java/kamkeel/npcs/controllers/data/ability/ChainedAbilityEntry.java
@@ -12,20 +12,27 @@ import net.minecraft.nbt.NBTTagCompound;
*/
public class ChainedAbilityEntry {
- public enum EntryType { REFERENCE, INLINE }
+ public enum EntryType {REFERENCE, INLINE}
private EntryType entryType = EntryType.REFERENCE;
- /** Reference key (built-in name or custom ability name). Used when entryType == REFERENCE. */
+ /**
+ * Reference key (built-in name or custom ability name). Used when entryType == REFERENCE.
+ */
private String abilityReference = "";
- /** Inline ability data. Used when entryType == INLINE. */
+ /**
+ * Inline ability data. Used when entryType == INLINE.
+ */
private Ability inlineAbility = null;
- /** Delay in ticks BEFORE this ability starts (after previous entry completes). */
+ /**
+ * Delay in ticks BEFORE this ability starts (after previous entry completes).
+ */
private int delayTicks = 0;
- public ChainedAbilityEntry() {}
+ public ChainedAbilityEntry() {
+ }
public ChainedAbilityEntry(String abilityReference, int delayTicks) {
this.entryType = EntryType.REFERENCE;
diff --git a/src/main/java/kamkeel/npcs/controllers/data/ability/PreviewEntityHandler.java b/src/main/java/kamkeel/npcs/controllers/data/ability/PreviewEntityHandler.java
index 77fae9774..13c8bc526 100644
--- a/src/main/java/kamkeel/npcs/controllers/data/ability/PreviewEntityHandler.java
+++ b/src/main/java/kamkeel/npcs/controllers/data/ability/PreviewEntityHandler.java
@@ -9,5 +9,6 @@ import net.minecraft.entity.Entity;
*/
public interface PreviewEntityHandler {
void onEntitySpawned(Entity entity);
+
void onEntityRemoved(Entity entity);
}
diff --git a/src/main/java/kamkeel/npcs/controllers/data/ability/TargetingMode.java b/src/main/java/kamkeel/npcs/controllers/data/ability/TargetingMode.java
index 9bdbdac6f..7e84c6a14 100644
--- a/src/main/java/kamkeel/npcs/controllers/data/ability/TargetingMode.java
+++ b/src/main/java/kamkeel/npcs/controllers/data/ability/TargetingMode.java
@@ -27,11 +27,16 @@ public enum TargetingMode {
@Override
public String toString() {
switch (this) {
- case AGGRO_TARGET: return "ability.target.aggro_target";
- case SELF: return "ability.target.self";
- case AOE_SELF: return "ability.target.aoe_self";
- case AOE_TARGET: return "ability.target.aoe_target";
- default: return name();
+ case AGGRO_TARGET:
+ return "ability.target.aggro_target";
+ case SELF:
+ return "ability.target.self";
+ case AOE_SELF:
+ return "ability.target.aoe_self";
+ case AOE_TARGET:
+ return "ability.target.aoe_target";
+ default:
+ return name();
}
}
}
diff --git a/src/main/java/kamkeel/npcs/controllers/data/ability/data/EnergyBarrierData.java b/src/main/java/kamkeel/npcs/controllers/data/ability/data/EnergyBarrierData.java
index 2d65b6228..f31466329 100644
--- a/src/main/java/kamkeel/npcs/controllers/data/ability/data/EnergyBarrierData.java
+++ b/src/main/java/kamkeel/npcs/controllers/data/ability/data/EnergyBarrierData.java
@@ -22,7 +22,9 @@ public class EnergyBarrierData {
// Knockback settings
public boolean knockbackEnabled = false;
public float knockbackStrength = 1.0f;
- /** 0=Both, 1=Player only, 2=NPC only */
+ /**
+ * 0=Both, 1=Player only, 2=NPC only
+ */
public int knockbackTarget = 0;
// Melee settings
@@ -36,7 +38,8 @@ public class EnergyBarrierData {
*/
private Map damageMultipliers = new HashMap<>();
- public EnergyBarrierData() {}
+ public EnergyBarrierData() {
+ }
public EnergyBarrierData(float maxHealth, boolean useHealth, int durationTicks, boolean useDuration) {
this.maxHealth = maxHealth;
@@ -70,23 +73,50 @@ public class EnergyBarrierData {
// ==================== GETTERS & SETTERS ====================
- public float getMaxHealth() { return maxHealth; }
- public void setMaxHealth(float maxHealth) { this.maxHealth = Math.max(0, maxHealth); }
+ public float getMaxHealth() {
+ return maxHealth;
+ }
- public boolean isUseHealth() { return useHealth; }
- public void setUseHealth(boolean useHealth) { this.useHealth = useHealth; }
+ public void setMaxHealth(float maxHealth) {
+ this.maxHealth = Math.max(0, maxHealth);
+ }
- public int getDurationTicks() { return durationTicks; }
- public void setDurationTicks(int durationTicks) { this.durationTicks = Math.max(1, durationTicks); }
+ public boolean isUseHealth() {
+ return useHealth;
+ }
- public boolean isUseDuration() { return useDuration; }
- public void setUseDuration(boolean useDuration) { this.useDuration = useDuration; }
+ public void setUseHealth(boolean useHealth) {
+ this.useHealth = useHealth;
+ }
- public float getDefaultMultiplier() { return defaultMultiplier; }
- public void setDefaultMultiplier(float defaultMultiplier) { this.defaultMultiplier = defaultMultiplier; }
+ public int getDurationTicks() {
+ return durationTicks;
+ }
+
+ public void setDurationTicks(int durationTicks) {
+ this.durationTicks = Math.max(1, durationTicks);
+ }
+
+ public boolean isUseDuration() {
+ return useDuration;
+ }
+
+ public void setUseDuration(boolean useDuration) {
+ this.useDuration = useDuration;
+ }
+
+ public float getDefaultMultiplier() {
+ return defaultMultiplier;
+ }
+
+ public void setDefaultMultiplier(float defaultMultiplier) {
+ this.defaultMultiplier = defaultMultiplier;
+ }
// Knockback target key helpers
- public static String[] getKnockbackTargetKeys() { return KNOCKBACK_TARGET_KEYS; }
+ public static String[] getKnockbackTargetKeys() {
+ return KNOCKBACK_TARGET_KEYS;
+ }
public String getKnockbackTargetKey() {
return KNOCKBACK_TARGET_KEYS[Math.max(0, Math.min(knockbackTarget, 2))];
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 e6ccf15a1..2ecbf7cc5 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
@@ -15,7 +15,8 @@ public class EnergyCombatData implements IEnergyCombatData {
public float explosionRadius = 3.0f;
public float explosionDamageFalloff = 0.5f;
- public EnergyCombatData() {}
+ public EnergyCombatData() {
+ }
public EnergyCombatData(float damage, float knockback, float knockbackUp,
boolean explosive, float explosionRadius, float explosionDamageFalloff) {
diff --git a/src/main/java/kamkeel/npcs/controllers/data/ability/data/EnergyDisplayData.java b/src/main/java/kamkeel/npcs/controllers/data/ability/data/EnergyDisplayData.java
index 415c5796c..3b0998602 100644
--- a/src/main/java/kamkeel/npcs/controllers/data/ability/data/EnergyDisplayData.java
+++ b/src/main/java/kamkeel/npcs/controllers/data/ability/data/EnergyDisplayData.java
@@ -20,7 +20,8 @@ public class EnergyDisplayData implements IEnergyDisplayData {
// public boolean skyboxEnabled = false;
// public String skyboxTexture = "";
- public EnergyDisplayData() {}
+ public EnergyDisplayData() {
+ }
public EnergyDisplayData(int innerColor, int outerColor) {
this.innerColor = innerColor;
diff --git a/src/main/java/kamkeel/npcs/controllers/data/ability/data/EnergyHomingData.java b/src/main/java/kamkeel/npcs/controllers/data/ability/data/EnergyHomingData.java
index d385c06e7..a03e70525 100644
--- a/src/main/java/kamkeel/npcs/controllers/data/ability/data/EnergyHomingData.java
+++ b/src/main/java/kamkeel/npcs/controllers/data/ability/data/EnergyHomingData.java
@@ -14,7 +14,8 @@ public class EnergyHomingData implements IEnergyHomingData {
public float homingStrength = 0.15f;
public float homingRange = 20.0f;
- public EnergyHomingData() {}
+ public EnergyHomingData() {
+ }
public EnergyHomingData(float speed, boolean homing, float homingStrength, float homingRange) {
this.speed = speed;
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 f320acdb0..a18a91021 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
@@ -11,7 +11,8 @@ public class EnergyLifespanData implements IEnergyLifespanData {
public float maxDistance = 30.0f;
public int maxLifetime = 200;
- public EnergyLifespanData() {}
+ public EnergyLifespanData() {
+ }
public EnergyLifespanData(float maxDistance, int maxLifetime) {
this.maxDistance = maxDistance;
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 66786a14a..1eb2b001a 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
@@ -13,7 +13,8 @@ public class EnergyLightningData implements IEnergyLightningData {
public float lightningRadius = 0.5f;
public int lightningFadeTime = 6;
- public EnergyLightningData() {}
+ public EnergyLightningData() {
+ }
public EnergyLightningData(boolean lightningEffect, float lightningDensity,
float lightningRadius, int lightningFadeTime) {
diff --git a/src/main/java/kamkeel/npcs/controllers/data/ability/data/EnergyPanelData.java b/src/main/java/kamkeel/npcs/controllers/data/ability/data/EnergyPanelData.java
index 1fa8586fe..3a5206f21 100644
--- a/src/main/java/kamkeel/npcs/controllers/data/ability/data/EnergyPanelData.java
+++ b/src/main/java/kamkeel/npcs/controllers/data/ability/data/EnergyPanelData.java
@@ -17,7 +17,8 @@ public class EnergyPanelData {
public float launchDamage = 8.0f;
public float launchKnockback = 2.0f;
- public EnergyPanelData() {}
+ public EnergyPanelData() {
+ }
public EnergyPanelData(float panelWidth, float panelHeight, float heightOffset) {
this.panelWidth = panelWidth;
@@ -27,26 +28,61 @@ public class EnergyPanelData {
// ==================== GETTERS & SETTERS ====================
- public float getPanelWidth() { return panelWidth; }
- public void setPanelWidth(float panelWidth) { this.panelWidth = Math.max(0.5f, panelWidth); }
+ public float getPanelWidth() {
+ return panelWidth;
+ }
- public float getPanelHeight() { return panelHeight; }
- public void setPanelHeight(float panelHeight) { this.panelHeight = Math.max(0.5f, panelHeight); }
+ public void setPanelWidth(float panelWidth) {
+ this.panelWidth = Math.max(0.5f, panelWidth);
+ }
- public float getHeightOffset() { return heightOffset; }
- public void setHeightOffset(float heightOffset) { this.heightOffset = heightOffset; }
+ public float getPanelHeight() {
+ return panelHeight;
+ }
- public boolean isLaunching() { return launching; }
- public void setLaunching(boolean launching) { this.launching = launching; }
+ public void setPanelHeight(float panelHeight) {
+ this.panelHeight = Math.max(0.5f, panelHeight);
+ }
- public float getLaunchSpeed() { return launchSpeed; }
- public void setLaunchSpeed(float launchSpeed) { this.launchSpeed = Math.max(0.1f, launchSpeed); }
+ public float getHeightOffset() {
+ return heightOffset;
+ }
- public float getLaunchDamage() { return launchDamage; }
- public void setLaunchDamage(float launchDamage) { this.launchDamage = Math.max(0, launchDamage); }
+ public void setHeightOffset(float heightOffset) {
+ this.heightOffset = heightOffset;
+ }
- public float getLaunchKnockback() { return launchKnockback; }
- public void setLaunchKnockback(float launchKnockback) { this.launchKnockback = Math.max(0, launchKnockback); }
+ public boolean isLaunching() {
+ return launching;
+ }
+
+ public void setLaunching(boolean launching) {
+ this.launching = launching;
+ }
+
+ public float getLaunchSpeed() {
+ return launchSpeed;
+ }
+
+ public void setLaunchSpeed(float launchSpeed) {
+ this.launchSpeed = Math.max(0.1f, launchSpeed);
+ }
+
+ public float getLaunchDamage() {
+ return launchDamage;
+ }
+
+ public void setLaunchDamage(float launchDamage) {
+ this.launchDamage = Math.max(0, launchDamage);
+ }
+
+ public float getLaunchKnockback() {
+ return launchKnockback;
+ }
+
+ public void setLaunchKnockback(float launchKnockback) {
+ this.launchKnockback = Math.max(0, launchKnockback);
+ }
// ==================== NBT ====================
diff --git a/src/main/java/kamkeel/npcs/controllers/data/ability/data/EnergyTrajectoryData.java b/src/main/java/kamkeel/npcs/controllers/data/ability/data/EnergyTrajectoryData.java
index 15adb3062..ea7735e11 100644
--- a/src/main/java/kamkeel/npcs/controllers/data/ability/data/EnergyTrajectoryData.java
+++ b/src/main/java/kamkeel/npcs/controllers/data/ability/data/EnergyTrajectoryData.java
@@ -15,7 +15,8 @@ public class EnergyTrajectoryData implements IEnergyTrajectoryData {
public int currentPath = 0;
private final List trajectory = new ArrayList<>();
- public EnergyTrajectoryData() {}
+ public EnergyTrajectoryData() {
+ }
public EnergyTrajectoryData(int startingPath, Path... paths) {
trajectory.addAll(Arrays.asList(paths));
@@ -85,6 +86,7 @@ public class EnergyTrajectoryData implements IEnergyTrajectoryData {
IPath p = getPath(path);
return p == null ? 0 : p.getZ();
}
+
@Override
public void setX(int path, double x) {
IPath p = getPath(path);
@@ -126,8 +128,8 @@ public class EnergyTrajectoryData implements IEnergyTrajectoryData {
@Override
public void setPath(int path, double x, double y, double z, int delay) {
Path newPath = new Path(
- NpcAPI.Instance().getIPos(x, y, z),
- delay
+ NpcAPI.Instance().getIPos(x, y, z),
+ delay
);
while (trajectory.size() <= path) {
@@ -196,7 +198,7 @@ public class EnergyTrajectoryData implements IEnergyTrajectoryData {
}
}
- public static class Path implements IEnergyTrajectoryData.IPath{
+ public static class Path implements IEnergyTrajectoryData.IPath {
public IPos pos;
public int delayTicks;
public boolean concluded;
diff --git a/src/main/java/kamkeel/npcs/controllers/data/ability/gui/AbilityFieldBuilder.java b/src/main/java/kamkeel/npcs/controllers/data/ability/gui/AbilityFieldBuilder.java
index d41418d91..2456b161d 100644
--- a/src/main/java/kamkeel/npcs/controllers/data/ability/gui/AbilityFieldBuilder.java
+++ b/src/main/java/kamkeel/npcs/controllers/data/ability/gui/AbilityFieldBuilder.java
@@ -199,5 +199,7 @@ public class AbilityFieldBuilder extends GuiFieldBuilder {
return super.handleTextFieldEvent(textFieldId, field);
}
- public Map getEffectWidgetMeta() { return effectWidgetMeta; }
+ public Map getEffectWidgetMeta() {
+ return effectWidgetMeta;
+ }
}
diff --git a/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityCharge.java b/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityCharge.java
index 780ddc050..9f063ff72 100644
--- a/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityCharge.java
+++ b/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityCharge.java
@@ -4,6 +4,7 @@ import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import kamkeel.npcs.controllers.data.ability.LockMovementType;
import kamkeel.npcs.controllers.data.ability.TargetingMode;
+import kamkeel.npcs.controllers.data.ability.gui.AbilityFieldDefs;
import kamkeel.npcs.controllers.data.telegraph.Telegraph;
import kamkeel.npcs.controllers.data.telegraph.TelegraphInstance;
import kamkeel.npcs.controllers.data.telegraph.TelegraphType;
@@ -11,10 +12,8 @@ import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.AxisAlignedBB;
-
-import noppes.npcs.client.gui.builder.FieldDef;
-import kamkeel.npcs.controllers.data.ability.gui.AbilityFieldDefs;
import noppes.npcs.api.ability.type.IAbilityCharge;
+import noppes.npcs.client.gui.builder.FieldDef;
import java.util.Arrays;
import java.util.HashSet;
diff --git a/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityCutter.java b/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityCutter.java
index 58c92009f..bac7cc234 100644
--- a/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityCutter.java
+++ b/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityCutter.java
@@ -1,8 +1,11 @@
package kamkeel.npcs.controllers.data.ability.type;
+import cpw.mods.fml.relauncher.Side;
+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.gui.AbilityFieldDefs;
import kamkeel.npcs.controllers.data.telegraph.Telegraph;
import kamkeel.npcs.controllers.data.telegraph.TelegraphInstance;
import kamkeel.npcs.controllers.data.telegraph.TelegraphType;
@@ -11,15 +14,8 @@ import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.DamageSource;
import net.minecraft.world.World;
-import noppes.npcs.entity.EntityNPCInterface;
-
import noppes.npcs.api.ability.type.IAbilityCutter;
-
import noppes.npcs.client.gui.builder.FieldDef;
-import kamkeel.npcs.controllers.data.ability.gui.AbilityFieldDefs;
-
-import cpw.mods.fml.relauncher.Side;
-import cpw.mods.fml.relauncher.SideOnly;
import java.util.Arrays;
import java.util.HashSet;
@@ -40,9 +36,12 @@ public class AbilityCutter extends Ability implements IAbilityCutter {
@Override
public String toString() {
switch (this) {
- case SWIPE: return "ability.sweep.swipe";
- case SPIN: return "ability.sweep.spin";
- default: return name();
+ case SWIPE:
+ return "ability.sweep.swipe";
+ case SPIN:
+ return "ability.sweep.spin";
+ default:
+ return name();
}
}
}
@@ -232,7 +231,7 @@ public class AbilityCutter extends Ability implements IAbilityCutter {
* For SWIPE mode, this covers the continuous arc from startAngle to endAngle.
*/
private void performSweepDamageRange(EntityLivingBase caster, World world, float minDist, float maxDist,
- float startAngle, float endAngle) {
+ float startAngle, float endAngle) {
// Calculate the angular range covered this tick
float minAngle = Math.min(startAngle, endAngle);
float maxAngle = Math.max(startAngle, endAngle);
diff --git a/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityDash.java b/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityDash.java
index 41c5faaa1..84df55642 100644
--- a/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityDash.java
+++ b/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityDash.java
@@ -8,9 +8,8 @@ import kamkeel.npcs.controllers.data.telegraph.TelegraphType;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.DamageSource;
-
-import noppes.npcs.client.gui.builder.FieldDef;
import noppes.npcs.api.ability.type.IAbilityDash;
+import noppes.npcs.client.gui.builder.FieldDef;
import java.util.Arrays;
import java.util.List;
@@ -32,9 +31,12 @@ public class AbilityDash extends AbilityMovement implements IAbilityDash {
@Override
public String toString() {
switch (this) {
- case AGGRESSIVE: return "ability.dash.aggressive";
- case DEFENSIVE: return "ability.dash.defensive";
- default: return name();
+ case AGGRESSIVE:
+ return "ability.dash.aggressive";
+ case DEFENSIVE:
+ return "ability.dash.defensive";
+ default:
+ return name();
}
}
}
diff --git a/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityGuard.java b/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityGuard.java
index 331ed0de4..24489b9eb 100644
--- a/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityGuard.java
+++ b/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityGuard.java
@@ -1,25 +1,26 @@
package kamkeel.npcs.controllers.data.ability.type;
-import kamkeel.npcs.controllers.data.ability.*;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+import kamkeel.npcs.controllers.data.ability.Ability;
+import kamkeel.npcs.controllers.data.ability.AbilityPhase;
+import kamkeel.npcs.controllers.data.ability.LockMovementType;
+import kamkeel.npcs.controllers.data.ability.TargetingMode;
+import kamkeel.npcs.controllers.data.ability.UserType;
+import kamkeel.npcs.controllers.data.ability.gui.AbilityFieldDefs;
import kamkeel.npcs.controllers.data.telegraph.TelegraphType;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.DamageSource;
import net.minecraft.world.World;
+import noppes.npcs.api.ability.type.IAbilityGuard;
import noppes.npcs.api.handler.data.IAnimation;
+import noppes.npcs.client.gui.builder.FieldDef;
import noppes.npcs.controllers.AnimationController;
import noppes.npcs.controllers.data.Animation;
import noppes.npcs.controllers.data.PlayerData;
import noppes.npcs.entity.EntityNPCInterface;
-
-import noppes.npcs.api.ability.type.IAbilityGuard;
-
-import noppes.npcs.client.gui.builder.FieldDef;
-import kamkeel.npcs.controllers.data.ability.gui.AbilityFieldDefs;
-
-import cpw.mods.fml.relauncher.Side;
-import cpw.mods.fml.relauncher.SideOnly;
import noppes.npcs.util.ValueUtil;
import java.util.Arrays;
@@ -77,9 +78,12 @@ public class AbilityGuard extends Ability implements IAbilityGuard {
@Override
public String toString() {
switch (this) {
- case FLAT: return "ability.counter.flat";
- case PERCENT: return "ability.counter.percent";
- default: return name();
+ case FLAT:
+ return "ability.counter.flat";
+ case PERCENT:
+ return "ability.counter.percent";
+ default:
+ return name();
}
}
}
diff --git a/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityHazard.java b/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityHazard.java
index 7ca81c95a..a23e38963 100644
--- a/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityHazard.java
+++ b/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityHazard.java
@@ -1,19 +1,15 @@
package kamkeel.npcs.controllers.data.ability.type;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
import kamkeel.npcs.controllers.data.ability.data.EnergyDisplayData;
+import kamkeel.npcs.controllers.data.ability.gui.AbilityFieldDefs;
import kamkeel.npcs.entity.EntityAbilityZone;
import kamkeel.npcs.entity.EntityAbilityZone.ZoneShape;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.nbt.NBTTagCompound;
-
-
import noppes.npcs.api.ability.type.IAbilityHazard;
-
import noppes.npcs.client.gui.builder.FieldDef;
-import kamkeel.npcs.controllers.data.ability.gui.AbilityFieldDefs;
-
-import cpw.mods.fml.relauncher.Side;
-import cpw.mods.fml.relauncher.SideOnly;
import java.util.ArrayList;
import java.util.Arrays;
@@ -106,20 +102,45 @@ public class AbilityHazard extends AbilityZone implements IAbilityHazard {
this.affectsCaster = nbt.getBoolean("affectsCaster");
}
- public float getRadius() { return radius; }
- public void setRadius(float radius) { this.radius = radius; }
+ public float getRadius() {
+ return radius;
+ }
- public float getDamagePerSecond() { return damagePerSecond; }
- public void setDamagePerSecond(float damagePerSecond) { this.damagePerSecond = damagePerSecond; }
+ public void setRadius(float radius) {
+ this.radius = radius;
+ }
- public int getDamageInterval() { return damageInterval; }
- public void setDamageInterval(int damageInterval) { this.damageInterval = damageInterval; }
+ public float getDamagePerSecond() {
+ return damagePerSecond;
+ }
- public boolean isIgnoreInvulnFrames() { return ignoreInvulnFrames; }
- public void setIgnoreInvulnFrames(boolean ignoreInvulnFrames) { this.ignoreInvulnFrames = ignoreInvulnFrames; }
+ public void setDamagePerSecond(float damagePerSecond) {
+ this.damagePerSecond = damagePerSecond;
+ }
- public boolean isAffectsCaster() { return affectsCaster; }
- public void setAffectsCaster(boolean affectsCaster) { this.affectsCaster = affectsCaster; }
+ public int getDamageInterval() {
+ return damageInterval;
+ }
+
+ public void setDamageInterval(int damageInterval) {
+ this.damageInterval = damageInterval;
+ }
+
+ public boolean isIgnoreInvulnFrames() {
+ return ignoreInvulnFrames;
+ }
+
+ public void setIgnoreInvulnFrames(boolean ignoreInvulnFrames) {
+ this.ignoreInvulnFrames = ignoreInvulnFrames;
+ }
+
+ public boolean isAffectsCaster() {
+ return affectsCaster;
+ }
+
+ public void setAffectsCaster(boolean affectsCaster) {
+ this.affectsCaster = affectsCaster;
+ }
@SideOnly(Side.CLIENT)
@Override
diff --git a/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityHeal.java b/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityHeal.java
index 6119e1340..89cfd2dbf 100644
--- a/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityHeal.java
+++ b/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityHeal.java
@@ -1,5 +1,7 @@
package kamkeel.npcs.controllers.data.ability.type;
+import cpw.mods.fml.relauncher.Side;
+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;
@@ -9,13 +11,9 @@ import net.minecraft.entity.EntityLivingBase;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.world.World;
-import noppes.npcs.entity.EntityNPCInterface;
-
-import noppes.npcs.client.gui.builder.FieldDef;
import noppes.npcs.api.ability.type.IAbilityHeal;
-
-import cpw.mods.fml.relauncher.Side;
-import cpw.mods.fml.relauncher.SideOnly;
+import noppes.npcs.client.gui.builder.FieldDef;
+import noppes.npcs.entity.EntityNPCInterface;
import java.util.ArrayList;
import java.util.Arrays;
diff --git a/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityHeavyHit.java b/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityHeavyHit.java
index 7c85826a2..d7314b707 100644
--- a/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityHeavyHit.java
+++ b/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityHeavyHit.java
@@ -5,13 +5,13 @@ 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.gui.AbilityFieldDefs;
import kamkeel.npcs.controllers.data.telegraph.TelegraphType;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.nbt.NBTTagCompound;
-import noppes.npcs.client.gui.builder.FieldDef;
-import kamkeel.npcs.controllers.data.ability.gui.AbilityFieldDefs;
import noppes.npcs.api.ability.type.IAbilityHeavyHit;
+import noppes.npcs.client.gui.builder.FieldDef;
import java.util.Arrays;
import java.util.List;
diff --git a/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityProjectile.java b/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityProjectile.java
index 46242fc71..1aba9ff3c 100644
--- a/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityProjectile.java
+++ b/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityProjectile.java
@@ -5,18 +5,15 @@ 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.gui.AbilityFieldDefs;
import kamkeel.npcs.controllers.data.telegraph.TelegraphType;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.Vec3;
import net.minecraft.world.World;
-import noppes.npcs.entity.EntityNPCInterface;
-
import noppes.npcs.api.ability.type.IAbilityProjectile;
-
import noppes.npcs.client.gui.builder.FieldDef;
-import kamkeel.npcs.controllers.data.ability.gui.AbilityFieldDefs;
import java.util.Arrays;
import java.util.List;
@@ -94,7 +91,11 @@ public class AbilityProjectile extends Ability implements IAbilityProjectile {
double dy = (target.posY + target.height / 2) - (caster.posY + caster.getEyeHeight());
double dz = target.posZ - caster.posZ;
double len = Math.sqrt(dx * dx + dy * dy + dz * dz);
- if (len > 0) { dx /= len; dy /= len; dz /= len; }
+ if (len > 0) {
+ dx /= len;
+ dy /= len;
+ dz /= len;
+ }
applyAbilityDamageWithDirection(caster, target, damage, knockback, dx, dz);
world.playSoundAtEntity(caster, "random.bow", 1.0f, 0.8f);
@@ -167,7 +168,7 @@ public class AbilityProjectile extends Ability implements IAbilityProjectile {
* Apply explosion splash damage around a point.
*/
private void applyExplosionDamage(EntityLivingBase caster, EntityLivingBase primaryTarget, World world,
- double x, double y, double z) {
+ double x, double y, double z) {
@SuppressWarnings("unchecked")
List entities = world.getEntitiesWithinAABBExcludingEntity(primaryTarget,
primaryTarget.boundingBox.expand(explosionRadius, explosionRadius, explosionRadius));
diff --git a/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityShockwave.java b/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityShockwave.java
index 1eebdab99..4cca57508 100644
--- a/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityShockwave.java
+++ b/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityShockwave.java
@@ -5,16 +5,13 @@ 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.gui.AbilityFieldDefs;
import kamkeel.npcs.controllers.data.telegraph.TelegraphType;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.AxisAlignedBB;
-import net.minecraft.util.DamageSource;
-import noppes.npcs.entity.EntityNPCInterface;
-
-import noppes.npcs.client.gui.builder.FieldDef;
-import kamkeel.npcs.controllers.data.ability.gui.AbilityFieldDefs;
import noppes.npcs.api.ability.type.IAbilityShockwave;
+import noppes.npcs.client.gui.builder.FieldDef;
import java.util.Arrays;
import java.util.List;
diff --git a/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilitySlam.java b/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilitySlam.java
index f8a6559ca..1e844271f 100644
--- a/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilitySlam.java
+++ b/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilitySlam.java
@@ -5,6 +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.gui.AbilityFieldDefs;
import kamkeel.npcs.controllers.data.telegraph.Telegraph;
import kamkeel.npcs.controllers.data.telegraph.TelegraphInstance;
import kamkeel.npcs.controllers.data.telegraph.TelegraphType;
@@ -13,13 +14,10 @@ import net.minecraft.entity.EntityLivingBase;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.DamageSource;
import net.minecraft.world.World;
+import noppes.npcs.api.ability.type.IAbilitySlam;
+import noppes.npcs.client.gui.builder.FieldDef;
import noppes.npcs.entity.EntityNPCInterface;
-import noppes.npcs.api.ability.type.IAbilitySlam;
-import somehussar.gui.annotationHandling.GuiEditable;
-
-import noppes.npcs.client.gui.builder.FieldDef;
-import kamkeel.npcs.controllers.data.ability.gui.AbilityFieldDefs;
import java.util.Arrays;
import java.util.List;
diff --git a/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityTeleport.java b/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityTeleport.java
index 70228652e..cc2deb4ea 100644
--- a/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityTeleport.java
+++ b/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityTeleport.java
@@ -1,9 +1,12 @@
package kamkeel.npcs.controllers.data.ability.type;
+import cpw.mods.fml.relauncher.Side;
+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.UserType;
+import kamkeel.npcs.controllers.data.ability.gui.AbilityFieldDefs;
import kamkeel.npcs.controllers.data.telegraph.TelegraphType;
import net.minecraft.block.Block;
import net.minecraft.entity.Entity;
@@ -13,15 +16,8 @@ import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.MathHelper;
import net.minecraft.util.Vec3;
import net.minecraft.world.World;
-import noppes.npcs.entity.EntityNPCInterface;
-
import noppes.npcs.api.ability.type.IAbilityTeleport;
-
import noppes.npcs.client.gui.builder.FieldDef;
-import kamkeel.npcs.controllers.data.ability.gui.AbilityFieldDefs;
-
-import cpw.mods.fml.relauncher.Side;
-import cpw.mods.fml.relauncher.SideOnly;
import java.util.Arrays;
import java.util.List;
@@ -43,10 +39,14 @@ public class AbilityTeleport extends Ability implements IAbilityTeleport {
@Override
public String toString() {
switch (this) {
- case BLINK: return "ability.teleport.blink";
- case BEHIND: return "ability.teleport.behind";
- case SINGLE: return "ability.teleport.single";
- default: return name();
+ case BLINK:
+ return "ability.teleport.blink";
+ case BEHIND:
+ return "ability.teleport.behind";
+ case SINGLE:
+ return "ability.teleport.single";
+ default:
+ return name();
}
}
}
diff --git a/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityTrap.java b/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityTrap.java
index a8782122f..d875353f6 100644
--- a/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityTrap.java
+++ b/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityTrap.java
@@ -1,5 +1,7 @@
package kamkeel.npcs.controllers.data.ability.type;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
import kamkeel.npcs.controllers.data.ability.AbilityPotionEffect;
import kamkeel.npcs.controllers.data.ability.data.EnergyDisplayData;
import kamkeel.npcs.controllers.data.ability.gui.AbilityFieldDefs;
@@ -12,9 +14,6 @@ import noppes.npcs.client.gui.SubGuiTrapPresetSelector;
import noppes.npcs.client.gui.builder.FieldDef;
import noppes.npcs.constants.EnumPotionType;
-import cpw.mods.fml.relauncher.Side;
-import cpw.mods.fml.relauncher.SideOnly;
-
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@@ -115,51 +114,80 @@ public class AbilityTrap extends AbilityZone implements IAbilityTrap {
switch (preset) {
case "VENOM":
groundAlpha = 0.04f;
- particles = true; particleDensity = 0.3f; particleScale = 0.5f;
- particleMotion = 1; particleDir = "mc:mobSpell";
- colorData.innerColor = 0x44DD44; colorData.outerColor = 0x116611;
- windUpColor = 0x6044DD44; activeColor = 0xC044FF44;
+ particles = true;
+ particleDensity = 0.3f;
+ particleScale = 0.5f;
+ particleMotion = 1;
+ particleDir = "mc:mobSpell";
+ colorData.innerColor = 0x44DD44;
+ colorData.outerColor = 0x116611;
+ windUpColor = 0x6044DD44;
+ activeColor = 0xC044FF44;
effects.add(new AbilityPotionEffect(EnumPotionType.Poison, 100, 0));
break;
case "EXPLOSIVE":
groundAlpha = 0.04f;
- particles = true; particleDensity = 0.3f; particleScale = 0.6f;
- particleMotion = 0; particleDir = "mc:smoke";
- colorData.innerColor = 0xFF6611; colorData.outerColor = 0xCC2200;
- windUpColor = 0x60FF6611; activeColor = 0xC0FF4400;
+ particles = true;
+ particleDensity = 0.3f;
+ particleScale = 0.6f;
+ particleMotion = 0;
+ particleDir = "mc:smoke";
+ colorData.innerColor = 0xFF6611;
+ colorData.outerColor = 0xCC2200;
+ windUpColor = 0x60FF6611;
+ activeColor = 0xC0FF4400;
effects.add(new AbilityPotionEffect(EnumPotionType.Fire, 60, 0));
break;
case "CURSED":
groundAlpha = 0.04f;
- particles = true; particleDensity = 0.3f; particleScale = 0.5f;
- particleMotion = 1; particleDir = "mc:portal";
- colorData.innerColor = 0xAA44FF; colorData.outerColor = 0x6622BB;
- windUpColor = 0x60AA44FF; activeColor = 0xC0CC66FF;
+ particles = true;
+ particleDensity = 0.3f;
+ particleScale = 0.5f;
+ particleMotion = 1;
+ particleDir = "mc:portal";
+ colorData.innerColor = 0xAA44FF;
+ colorData.outerColor = 0x6622BB;
+ windUpColor = 0x60AA44FF;
+ activeColor = 0xC0CC66FF;
effects.add(new AbilityPotionEffect(EnumPotionType.Weakness, 100, 0));
break;
case "SHOCK":
groundAlpha = 0.04f;
- particles = true; particleDensity = 0.3f; particleScale = 0.4f;
- particleMotion = 2; particleDir = "mc:enchantmenttable";
- colorData.innerColor = 0x4488FF; colorData.outerColor = 0x2244BB;
- windUpColor = 0x604488FF; activeColor = 0xC066AAFF;
+ particles = true;
+ particleDensity = 0.3f;
+ particleScale = 0.4f;
+ particleMotion = 2;
+ particleDir = "mc:enchantmenttable";
+ colorData.innerColor = 0x4488FF;
+ colorData.outerColor = 0x2244BB;
+ windUpColor = 0x604488FF;
+ activeColor = 0xC066AAFF;
effects.add(new AbilityPotionEffect(EnumPotionType.MiningFatigue, 80, 1));
break;
case "SNARE":
groundAlpha = 0.04f;
- particles = true; particleDensity = 0.3f; particleScale = 0.5f;
- particleMotion = 1; particleDir = "mc:snowshovel";
- colorData.innerColor = 0x88CCFF; colorData.outerColor = 0x4488CC;
- windUpColor = 0x6088CCFF; activeColor = 0xC0AADDFF;
+ particles = true;
+ particleDensity = 0.3f;
+ particleScale = 0.5f;
+ particleMotion = 1;
+ particleDir = "mc:snowshovel";
+ colorData.innerColor = 0x88CCFF;
+ colorData.outerColor = 0x4488CC;
+ windUpColor = 0x6088CCFF;
+ activeColor = 0xC0AADDFF;
effects.add(new AbilityPotionEffect(EnumPotionType.Slowness, 100, 1));
break;
case "HIDDEN":
default:
groundAlpha = 0.03f;
- particles = false; particleDensity = 0.0f; particleScale = 1.0f;
+ particles = false;
+ particleDensity = 0.0f;
+ particleScale = 1.0f;
particleMotion = 0;
- colorData.innerColor = 0x888888; colorData.outerColor = 0x444444;
- windUpColor = 0x60888888; activeColor = 0xC0AAAAAA;
+ colorData.innerColor = 0x888888;
+ colorData.outerColor = 0x444444;
+ windUpColor = 0x60888888;
+ activeColor = 0xC0AAAAAA;
break;
}
}
@@ -190,22 +218,69 @@ public class AbilityTrap extends AbilityZone implements IAbilityTrap {
this.visible = nbt.getBoolean("visible");
}
- public float getTriggerRadius() { return triggerRadius; }
- public void setTriggerRadius(float triggerRadius) { this.triggerRadius = triggerRadius; }
- public int getArmTime() { return armTime; }
- public void setArmTime(int armTime) { this.armTime = armTime; }
- public int getMaxTriggers() { return maxTriggers; }
- public void setMaxTriggers(int maxTriggers) { this.maxTriggers = maxTriggers; }
- public int getTriggerCooldown() { return triggerCooldown; }
- public void setTriggerCooldown(int triggerCooldown) { this.triggerCooldown = triggerCooldown; }
- public float getDamage() { return damage; }
- public void setDamage(float damage) { this.damage = damage; }
- public float getDamageRadius() { return damageRadius; }
- public void setDamageRadius(float damageRadius) { this.damageRadius = damageRadius; }
- public float getKnockback() { return knockback; }
- public void setKnockback(float knockback) { this.knockback = knockback; }
- public boolean isVisible() { return visible; }
- public void setVisible(boolean visible) { this.visible = visible; }
+ public float getTriggerRadius() {
+ return triggerRadius;
+ }
+
+ public void setTriggerRadius(float triggerRadius) {
+ this.triggerRadius = triggerRadius;
+ }
+
+ public int getArmTime() {
+ return armTime;
+ }
+
+ public void setArmTime(int armTime) {
+ this.armTime = armTime;
+ }
+
+ public int getMaxTriggers() {
+ return maxTriggers;
+ }
+
+ public void setMaxTriggers(int maxTriggers) {
+ this.maxTriggers = maxTriggers;
+ }
+
+ public int getTriggerCooldown() {
+ return triggerCooldown;
+ }
+
+ public void setTriggerCooldown(int triggerCooldown) {
+ this.triggerCooldown = triggerCooldown;
+ }
+
+ public float getDamage() {
+ return damage;
+ }
+
+ public void setDamage(float damage) {
+ this.damage = damage;
+ }
+
+ public float getDamageRadius() {
+ return damageRadius;
+ }
+
+ public void setDamageRadius(float damageRadius) {
+ this.damageRadius = damageRadius;
+ }
+
+ public float getKnockback() {
+ return knockback;
+ }
+
+ public void setKnockback(float knockback) {
+ this.knockback = knockback;
+ }
+
+ public boolean isVisible() {
+ return visible;
+ }
+
+ public void setVisible(boolean visible) {
+ this.visible = visible;
+ }
@SideOnly(Side.CLIENT)
@Override
diff --git a/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityVortex.java b/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityVortex.java
index f969c27cd..d5f68e013 100644
--- a/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityVortex.java
+++ b/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityVortex.java
@@ -1,21 +1,18 @@
package kamkeel.npcs.controllers.data.ability.type;
+import cpw.mods.fml.relauncher.Side;
+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.gui.AbilityFieldDefs;
import kamkeel.npcs.controllers.data.telegraph.TelegraphType;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.world.World;
-import noppes.npcs.entity.EntityNPCInterface;
-
-import noppes.npcs.client.gui.builder.FieldDef;
-import kamkeel.npcs.controllers.data.ability.gui.AbilityFieldDefs;
import noppes.npcs.api.ability.type.IAbilityVortex;
-
-import cpw.mods.fml.relauncher.Side;
-import cpw.mods.fml.relauncher.SideOnly;
+import noppes.npcs.client.gui.builder.FieldDef;
import java.util.Arrays;
import java.util.HashSet;
diff --git a/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityZone.java b/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityZone.java
index b75e41c3e..0b233a637 100644
--- a/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityZone.java
+++ b/src/main/java/kamkeel/npcs/controllers/data/ability/type/AbilityZone.java
@@ -1,5 +1,7 @@
package kamkeel.npcs.controllers.data.ability.type;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
import kamkeel.npcs.controllers.data.ability.Ability;
import kamkeel.npcs.controllers.data.ability.AbilityPotionEffect;
import kamkeel.npcs.controllers.data.ability.LockMovementType;
@@ -14,15 +16,10 @@ import kamkeel.npcs.entity.EntityAbilityZone.ParticleMotion;
import kamkeel.npcs.entity.EntityAbilityZone.ZoneShape;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.nbt.NBTTagCompound;
-import noppes.npcs.constants.EnumPotionType;
import net.minecraft.util.DamageSource;
-
-
import noppes.npcs.client.gui.SubGuiZonePresetSelector;
import noppes.npcs.client.gui.builder.FieldDef;
-
-import cpw.mods.fml.relauncher.Side;
-import cpw.mods.fml.relauncher.SideOnly;
+import noppes.npcs.constants.EnumPotionType;
import java.util.ArrayList;
import java.util.Arrays;
@@ -213,57 +210,134 @@ public abstract class AbilityZone extends Ability {
particleDir = "";
switch (styleName) {
case "TOXIC":
- groundFill = true; groundAlpha = 0.30f; rings = true; ringCount = 3;
- border = false; borderSpeed = 1.0f; accents = true; accentStyle = 1;
- lightning = false; particles = true; particleDensity = 1.5f; particleScale = 0.8f;
- particleMotion = 1; particleGlow = true; particleDir = "mc:mobSpell";
- colorData.innerColor = 0x44DD44; colorData.outerColor = 0x116611;
- windUpColor = 0x6044DD44; activeColor = 0xC044FF44;
+ groundFill = true;
+ groundAlpha = 0.30f;
+ rings = true;
+ ringCount = 3;
+ border = false;
+ borderSpeed = 1.0f;
+ accents = true;
+ accentStyle = 1;
+ lightning = false;
+ particles = true;
+ particleDensity = 1.5f;
+ particleScale = 0.8f;
+ particleMotion = 1;
+ particleGlow = true;
+ particleDir = "mc:mobSpell";
+ colorData.innerColor = 0x44DD44;
+ colorData.outerColor = 0x116611;
+ windUpColor = 0x6044DD44;
+ activeColor = 0xC044FF44;
effects.add(new AbilityPotionEffect(EnumPotionType.Poison, 100, 0));
break;
case "INFERNO":
- groundFill = true; groundAlpha = 0.35f; rings = true; ringCount = 3;
- border = true; borderSpeed = 2.0f; accents = true; accentStyle = 2;
- lightning = false; particles = true; particleDensity = 2.0f; particleScale = 1.2f;
- particleMotion = 0; particleGlow = true; particleDir = "mc:flame";
- colorData.innerColor = 0xFF6611; colorData.outerColor = 0xCC2200;
- windUpColor = 0x60FF6611; activeColor = 0xC0FF4400;
+ groundFill = true;
+ groundAlpha = 0.35f;
+ rings = true;
+ ringCount = 3;
+ border = true;
+ borderSpeed = 2.0f;
+ accents = true;
+ accentStyle = 2;
+ lightning = false;
+ particles = true;
+ particleDensity = 2.0f;
+ particleScale = 1.2f;
+ particleMotion = 0;
+ particleGlow = true;
+ particleDir = "mc:flame";
+ colorData.innerColor = 0xFF6611;
+ colorData.outerColor = 0xCC2200;
+ windUpColor = 0x60FF6611;
+ activeColor = 0xC0FF4400;
effects.add(new AbilityPotionEffect(EnumPotionType.Fire, 60, 0));
break;
case "ARCANE":
- groundFill = true; groundAlpha = 0.20f; rings = true; ringCount = 1;
- border = true; borderSpeed = 0.8f; accents = true; accentStyle = 0;
- lightning = false; particles = true; particleDensity = 1.0f; particleScale = 1.0f;
- particleMotion = 1; particleGlow = true; particleDir = "mc:portal";
- colorData.innerColor = 0xAA44FF; colorData.outerColor = 0x6622BB;
- windUpColor = 0x60AA44FF; activeColor = 0xC0CC66FF;
+ groundFill = true;
+ groundAlpha = 0.20f;
+ rings = true;
+ ringCount = 1;
+ border = true;
+ borderSpeed = 0.8f;
+ accents = true;
+ accentStyle = 0;
+ lightning = false;
+ particles = true;
+ particleDensity = 1.0f;
+ particleScale = 1.0f;
+ particleMotion = 1;
+ particleGlow = true;
+ particleDir = "mc:portal";
+ colorData.innerColor = 0xAA44FF;
+ colorData.outerColor = 0x6622BB;
+ windUpColor = 0x60AA44FF;
+ activeColor = 0xC0CC66FF;
effects.add(new AbilityPotionEffect(EnumPotionType.Weakness, 100, 0));
break;
case "ELECTRIC":
- groundFill = true; groundAlpha = 0.15f; rings = false; ringCount = 1;
- border = false; borderSpeed = 1.0f; accents = false; accentStyle = 0;
- lightning = true; particles = true; particleDensity = 0.8f; particleScale = 0.6f;
- particleMotion = 2; particleGlow = true; particleDir = "mc:enchantmenttable";
- colorData.innerColor = 0x4488FF; colorData.outerColor = 0x2244BB;
- windUpColor = 0x604488FF; activeColor = 0xC066AAFF;
+ groundFill = true;
+ groundAlpha = 0.15f;
+ rings = false;
+ ringCount = 1;
+ border = false;
+ borderSpeed = 1.0f;
+ accents = false;
+ accentStyle = 0;
+ lightning = true;
+ particles = true;
+ particleDensity = 0.8f;
+ particleScale = 0.6f;
+ particleMotion = 2;
+ particleGlow = true;
+ particleDir = "mc:enchantmenttable";
+ colorData.innerColor = 0x4488FF;
+ colorData.outerColor = 0x2244BB;
+ windUpColor = 0x604488FF;
+ activeColor = 0xC066AAFF;
effects.add(new AbilityPotionEffect(EnumPotionType.MiningFatigue, 80, 1));
break;
case "FROST":
- groundFill = true; groundAlpha = 0.25f; rings = true; ringCount = 3;
- border = true; borderSpeed = 0.3f; accents = true; accentStyle = 0;
- lightning = false; particles = true; particleDensity = 1.5f; particleScale = 1.0f;
- particleMotion = 1; particleGlow = true; particleDir = "mc:snowshovel";
- colorData.innerColor = 0x88CCFF; colorData.outerColor = 0x4488CC;
- windUpColor = 0x6088CCFF; activeColor = 0xC0AADDFF;
+ groundFill = true;
+ groundAlpha = 0.25f;
+ rings = true;
+ ringCount = 3;
+ border = true;
+ borderSpeed = 0.3f;
+ accents = true;
+ accentStyle = 0;
+ lightning = false;
+ particles = true;
+ particleDensity = 1.5f;
+ particleScale = 1.0f;
+ particleMotion = 1;
+ particleGlow = true;
+ particleDir = "mc:snowshovel";
+ colorData.innerColor = 0x88CCFF;
+ colorData.outerColor = 0x4488CC;
+ windUpColor = 0x6088CCFF;
+ activeColor = 0xC0AADDFF;
effects.add(new AbilityPotionEffect(EnumPotionType.Slowness, 100, 1));
break;
case "DEFAULT":
- groundFill = true; groundAlpha = 0.25f; rings = true; ringCount = 3;
- border = true; borderSpeed = 1.0f; accents = true; accentStyle = 0;
- lightning = false; particles = false; particleDensity = 1.0f; particleScale = 1.0f;
- particleMotion = 0; particleGlow = true;
- colorData.innerColor = 0xCCCCCC; colorData.outerColor = 0x666666;
- windUpColor = 0x60CCCCCC; activeColor = 0xC0FFFFFF;
+ groundFill = true;
+ groundAlpha = 0.25f;
+ rings = true;
+ ringCount = 3;
+ border = true;
+ borderSpeed = 1.0f;
+ accents = true;
+ accentStyle = 0;
+ lightning = false;
+ particles = false;
+ particleDensity = 1.0f;
+ particleScale = 1.0f;
+ particleMotion = 0;
+ particleGlow = true;
+ colorData.innerColor = 0xCCCCCC;
+ colorData.outerColor = 0x666666;
+ windUpColor = 0x60CCCCCC;
+ activeColor = 0xC0FFFFFF;
break;
default:
break;
@@ -310,8 +384,11 @@ public abstract class AbilityZone extends Ability {
protected void readZoneNBT(NBTTagCompound nbt, int defaultDuration) {
this.durationTicks = nbt.getInteger("durationTicks");
- try { this.zoneShape = ZoneShape.valueOf(nbt.getString("zoneShape")); }
- catch (Exception e) { this.zoneShape = ZoneShape.CIRCLE; }
+ try {
+ this.zoneShape = ZoneShape.valueOf(nbt.getString("zoneShape"));
+ } catch (Exception e) {
+ this.zoneShape = ZoneShape.CIRCLE;
+ }
this.spawnRadius = nbt.getFloat("spawnRadius");
this.zoneCount = nbt.getInteger("zoneCount");
this.zoneHeight = nbt.getFloat("zoneHeight");
@@ -337,73 +414,238 @@ public abstract class AbilityZone extends Ability {
this.particleGlow = nbt.getBoolean("particleGlow");
}
- public int getDurationTicks() { return durationTicks; }
- public void setDurationTicks(int durationTicks) { this.durationTicks = Math.max(1, durationTicks); }
+ public int getDurationTicks() {
+ return durationTicks;
+ }
- public ZoneShape getZoneShapeEnum() { return zoneShape; }
- public void setZoneShapeEnum(ZoneShape shape) { this.zoneShape = shape; }
+ public void setDurationTicks(int durationTicks) {
+ this.durationTicks = Math.max(1, durationTicks);
+ }
+
+ public ZoneShape getZoneShapeEnum() {
+ return zoneShape;
+ }
+
+ public void setZoneShapeEnum(ZoneShape shape) {
+ this.zoneShape = shape;
+ }
+
+ public int getZoneShapeOrdinal() {
+ return zoneShape.ordinal();
+ }
- public int getZoneShapeOrdinal() { return zoneShape.ordinal(); }
public void setZoneShapeOrdinal(int shape) {
ZoneShape[] values = ZoneShape.values();
this.zoneShape = shape >= 0 && shape < values.length ? values[shape] : ZoneShape.CIRCLE;
}
- public float getSpawnRadius() { return spawnRadius; }
- public void setSpawnRadius(float spawnRadius) { this.spawnRadius = Math.max(0, spawnRadius); }
- public int getZoneCount() { return zoneCount; }
- public void setZoneCount(int zoneCount) { this.zoneCount = Math.max(1, zoneCount); }
- public float getZoneHeight() { return zoneHeight; }
- public void setZoneHeight(float zoneHeight) { this.zoneHeight = Math.max(0.5f, zoneHeight); }
+ public float getSpawnRadius() {
+ return spawnRadius;
+ }
- public float getParticleDensity() { return particleDensity; }
- public void setParticleDensity(float v) { this.particleDensity = Math.max(0, Math.min(5, v)); }
- public float getParticleScale() { return particleScale; }
- public void setParticleScale(float v) { this.particleScale = Math.max(0.1f, Math.min(5, v)); }
- public float getAnimSpeed() { return animSpeed; }
- public void setAnimSpeed(float v) { this.animSpeed = Math.max(0.1f, Math.min(5, v)); }
- public float getLightningDensity() { return lightningDensity; }
- public void setLightningDensity(float v) { this.lightningDensity = Math.max(0, Math.min(3, v)); }
+ public void setSpawnRadius(float spawnRadius) {
+ this.spawnRadius = Math.max(0, spawnRadius);
+ }
- public int getInnerColor() { return colorData.innerColor; }
- public void setInnerColor(int color) { colorData.innerColor = color; }
- public int getOuterColor() { return colorData.outerColor; }
- public void setOuterColor(int color) { colorData.outerColor = color; }
- public boolean isOuterColorEnabled() { return colorData.outerColorEnabled; }
- public void setOuterColorEnabled(boolean enabled) { colorData.outerColorEnabled = enabled; }
+ public int getZoneCount() {
+ return zoneCount;
+ }
- public boolean isGroundFill() { return groundFill; }
- public void setGroundFill(boolean v) { this.groundFill = v; }
- public float getGroundAlpha() { return groundAlpha; }
- public void setGroundAlpha(float v) { this.groundAlpha = Math.max(0, Math.min(1, v)); }
- public boolean isRings() { return rings; }
- public void setRings(boolean v) { this.rings = v; }
- public int getRingCount() { return ringCount; }
- public void setRingCount(int v) { this.ringCount = Math.max(1, Math.min(5, v)); }
- public boolean isBorder() { return border; }
- public void setBorder(boolean v) { this.border = v; }
- public float getBorderSpeed() { return borderSpeed; }
- public void setBorderSpeed(float v) { this.borderSpeed = Math.max(0.1f, Math.min(5, v)); }
- public boolean isAccents() { return accents; }
- public void setAccents(boolean v) { this.accents = v; }
- public int getAccentStyle() { return accentStyle; }
- public void setAccentStyle(int v) { this.accentStyle = Math.max(0, Math.min(AccentStyle.values().length - 1, v)); }
- public AccentStyle getAccentStyleEnum() { return AccentStyle.values()[Math.max(0, Math.min(accentStyle, AccentStyle.values().length - 1))]; }
- public void setAccentStyleEnum(AccentStyle s) { this.accentStyle = s.ordinal(); }
- public boolean isLightning() { return lightning; }
- public void setLightning(boolean v) { this.lightning = v; }
- public boolean isParticles() { return particles; }
- public void setParticles(boolean v) { this.particles = v; }
- public int getParticleMotion() { return particleMotion; }
- public void setParticleMotion(int v) { this.particleMotion = Math.max(0, Math.min(ParticleMotion.values().length - 1, v)); }
- public ParticleMotion getParticleMotionEnum() { return ParticleMotion.values()[Math.max(0, Math.min(particleMotion, ParticleMotion.values().length - 1))]; }
- public void setParticleMotionEnum(ParticleMotion m) { this.particleMotion = m.ordinal(); }
- public String getParticleDir() { return particleDir; }
- public void setParticleDir(String v) { this.particleDir = v != null ? v : ""; }
- public int getParticleSize() { return particleSize; }
- public void setParticleSize(int v) { this.particleSize = Math.max(1, Math.min(256, v)); }
- public boolean isParticleGlow() { return particleGlow; }
- public void setParticleGlow(boolean v) { this.particleGlow = v; }
+ public void setZoneCount(int zoneCount) {
+ this.zoneCount = Math.max(1, zoneCount);
+ }
+
+ public float getZoneHeight() {
+ return zoneHeight;
+ }
+
+ public void setZoneHeight(float zoneHeight) {
+ this.zoneHeight = Math.max(0.5f, zoneHeight);
+ }
+
+ public float getParticleDensity() {
+ return particleDensity;
+ }
+
+ public void setParticleDensity(float v) {
+ this.particleDensity = Math.max(0, Math.min(5, v));
+ }
+
+ public float getParticleScale() {
+ return particleScale;
+ }
+
+ public void setParticleScale(float v) {
+ this.particleScale = Math.max(0.1f, Math.min(5, v));
+ }
+
+ public float getAnimSpeed() {
+ return animSpeed;
+ }
+
+ public void setAnimSpeed(float v) {
+ this.animSpeed = Math.max(0.1f, Math.min(5, v));
+ }
+
+ public float getLightningDensity() {
+ return lightningDensity;
+ }
+
+ public void setLightningDensity(float v) {
+ this.lightningDensity = Math.max(0, Math.min(3, v));
+ }
+
+ public int getInnerColor() {
+ return colorData.innerColor;
+ }
+
+ public void setInnerColor(int color) {
+ colorData.innerColor = color;
+ }
+
+ public int getOuterColor() {
+ return colorData.outerColor;
+ }
+
+ public void setOuterColor(int color) {
+ colorData.outerColor = color;
+ }
+
+ public boolean isOuterColorEnabled() {
+ return colorData.outerColorEnabled;
+ }
+
+ public void setOuterColorEnabled(boolean enabled) {
+ colorData.outerColorEnabled = enabled;
+ }
+
+ public boolean isGroundFill() {
+ return groundFill;
+ }
+
+ public void setGroundFill(boolean v) {
+ this.groundFill = v;
+ }
+
+ public float getGroundAlpha() {
+ return groundAlpha;
+ }
+
+ public void setGroundAlpha(float v) {
+ this.groundAlpha = Math.max(0, Math.min(1, v));
+ }
+
+ public boolean isRings() {
+ return rings;
+ }
+
+ public void setRings(boolean v) {
+ this.rings = v;
+ }
+
+ public int getRingCount() {
+ return ringCount;
+ }
+
+ public void setRingCount(int v) {
+ this.ringCount = Math.max(1, Math.min(5, v));
+ }
+
+ public boolean isBorder() {
+ return border;
+ }
+
+ public void setBorder(boolean v) {
+ this.border = v;
+ }
+
+ public float getBorderSpeed() {
+ return borderSpeed;
+ }
+
+ public void setBorderSpeed(float v) {
+ this.borderSpeed = Math.max(0.1f, Math.min(5, v));
+ }
+
+ public boolean isAccents() {
+ return accents;
+ }
+
+ public void setAccents(boolean v) {
+ this.accents = v;
+ }
+
+ public int getAccentStyle() {
+ return accentStyle;
+ }
+
+ public void setAccentStyle(int v) {
+ this.accentStyle = Math.max(0, Math.min(AccentStyle.values().length - 1, v));
+ }
+
+ public AccentStyle getAccentStyleEnum() {
+ return AccentStyle.values()[Math.max(0, Math.min(accentStyle, AccentStyle.values().length - 1))];
+ }
+
+ public void setAccentStyleEnum(AccentStyle s) {
+ this.accentStyle = s.ordinal();
+ }
+
+ public boolean isLightning() {
+ return lightning;
+ }
+
+ public void setLightning(boolean v) {
+ this.lightning = v;
+ }
+
+ public boolean isParticles() {
+ return particles;
+ }
+
+ public void setParticles(boolean v) {
+ this.particles = v;
+ }
+
+ public int getParticleMotion() {
+ return particleMotion;
+ }
+
+ public void setParticleMotion(int v) {
+ this.particleMotion = Math.max(0, Math.min(ParticleMotion.values().length - 1, v));
+ }
+
+ public ParticleMotion getParticleMotionEnum() {
+ return ParticleMotion.values()[Math.max(0, Math.min(particleMotion, ParticleMotion.values().length - 1))];
+ }
+
+ public void setParticleMotionEnum(ParticleMotion m) {
+ this.particleMotion = m.ordinal();
+ }
+
+ public String getParticleDir() {
+ return particleDir;
+ }
+
+ public void setParticleDir(String v) {
+ this.particleDir = v != null ? v : "";
+ }
+
+ public int getParticleSize() {
+ return particleSize;
+ }
+
+ public void setParticleSize(int v) {
+ this.particleSize = Math.max(1, Math.min(256, v));
+ }
+
+ public boolean isParticleGlow() {
+ return particleGlow;
+ }
+
+ public void setParticleGlow(boolean v) {
+ this.particleGlow = v;
+ }
@SideOnly(Side.CLIENT)
protected void addPresetFieldDef(List defs) {
diff --git a/src/main/java/kamkeel/npcs/controllers/data/ability/type/energy/AbilityBeam.java b/src/main/java/kamkeel/npcs/controllers/data/ability/type/energy/AbilityBeam.java
index 66e5ef4ac..c565ac9fc 100644
--- a/src/main/java/kamkeel/npcs/controllers/data/ability/type/energy/AbilityBeam.java
+++ b/src/main/java/kamkeel/npcs/controllers/data/ability/type/energy/AbilityBeam.java
@@ -6,7 +6,11 @@ import kamkeel.npcs.controllers.data.ability.AbilityVariant;
import kamkeel.npcs.controllers.data.ability.LockMovementType;
import kamkeel.npcs.controllers.data.ability.RotationMode;
import kamkeel.npcs.controllers.data.ability.TargetingMode;
-import kamkeel.npcs.controllers.data.ability.data.*;
+import kamkeel.npcs.controllers.data.ability.data.EnergyCombatData;
+import kamkeel.npcs.controllers.data.ability.data.EnergyDisplayData;
+import kamkeel.npcs.controllers.data.ability.data.EnergyHomingData;
+import kamkeel.npcs.controllers.data.ability.data.EnergyLifespanData;
+import kamkeel.npcs.controllers.data.ability.data.ProjectileData;
import kamkeel.npcs.controllers.data.ability.gui.AbilityFieldDefs;
import kamkeel.npcs.controllers.data.telegraph.TelegraphType;
import kamkeel.npcs.entity.EntityAbilityBeam;
@@ -56,7 +60,7 @@ public class AbilityBeam extends AbilityEnergyProjectile impl
@Override
protected EntityAbilityBeam createEntity(EntityLivingBase caster, EntityLivingBase target,
- Vec3 spawnPos, EnergyDisplayData resolved, int index) {
+ Vec3 spawnPos, EnergyDisplayData resolved, int index) {
return new EntityAbilityBeam(
caster.worldObj, caster, target,
spawnPos.xCoord, spawnPos.yCoord, spawnPos.zCoord,
@@ -81,7 +85,7 @@ public class AbilityBeam extends AbilityEnergyProjectile impl
@Override
protected void setupEntityPreview(EntityAbilityBeam beam, EntityLivingBase caster,
- EnergyDisplayData resolved, ProjectileData projData, int index) {
+ EnergyDisplayData resolved, ProjectileData projData, int index) {
beam.setupPreview(caster, beamWidth, headSize, resolved, lightningData, projData.anchor, windUpTicks, 1.0f);
}
@@ -139,14 +143,29 @@ public class AbilityBeam extends AbilityEnergyProjectile impl
// ==================== TYPE-SPECIFIC GETTERS ====================
- public float getSpeed() { return homingData.speed; }
- public void setSpeed(float speed) { homingData.speed = speed; }
+ public float getSpeed() {
+ return homingData.speed;
+ }
- public float getBeamWidth() { return beamWidth; }
- public void setBeamWidth(float beamWidth) { this.beamWidth = beamWidth; }
+ public void setSpeed(float speed) {
+ homingData.speed = speed;
+ }
- public float getHeadSize() { return headSize; }
- public void setHeadSize(float headSize) { this.headSize = headSize; }
+ public float getBeamWidth() {
+ return beamWidth;
+ }
+
+ public void setBeamWidth(float beamWidth) {
+ this.beamWidth = beamWidth;
+ }
+
+ public float getHeadSize() {
+ return headSize;
+ }
+
+ public void setHeadSize(float headSize) {
+ this.headSize = headSize;
+ }
// ==================== TYPE-SPECIFIC GUI ====================
diff --git a/src/main/java/kamkeel/npcs/controllers/data/ability/type/energy/AbilityDisc.java b/src/main/java/kamkeel/npcs/controllers/data/ability/type/energy/AbilityDisc.java
index cd36eeab3..dc6b18add 100644
--- a/src/main/java/kamkeel/npcs/controllers/data/ability/type/energy/AbilityDisc.java
+++ b/src/main/java/kamkeel/npcs/controllers/data/ability/type/energy/AbilityDisc.java
@@ -5,7 +5,11 @@ import cpw.mods.fml.relauncher.SideOnly;
import kamkeel.npcs.controllers.data.ability.AbilityVariant;
import kamkeel.npcs.controllers.data.ability.LockMovementType;
import kamkeel.npcs.controllers.data.ability.TargetingMode;
-import kamkeel.npcs.controllers.data.ability.data.*;
+import kamkeel.npcs.controllers.data.ability.data.EnergyCombatData;
+import kamkeel.npcs.controllers.data.ability.data.EnergyDisplayData;
+import kamkeel.npcs.controllers.data.ability.data.EnergyHomingData;
+import kamkeel.npcs.controllers.data.ability.data.EnergyLifespanData;
+import kamkeel.npcs.controllers.data.ability.data.ProjectileData;
import kamkeel.npcs.controllers.data.ability.gui.AbilityFieldDefs;
import kamkeel.npcs.controllers.data.telegraph.TelegraphType;
import kamkeel.npcs.entity.EntityAbilityDisc;
@@ -56,7 +60,7 @@ public class AbilityDisc extends AbilityEnergyProjectile impl
@Override
protected EntityAbilityDisc createEntity(EntityLivingBase caster, EntityLivingBase target,
- Vec3 spawnPos, EnergyDisplayData resolved, int index) {
+ Vec3 spawnPos, EnergyDisplayData resolved, int index) {
return new EntityAbilityDisc(
caster.worldObj, caster, target,
spawnPos.xCoord, spawnPos.yCoord, spawnPos.zCoord,
@@ -81,7 +85,7 @@ public class AbilityDisc extends AbilityEnergyProjectile impl
@Override
protected void setupEntityPreview(EntityAbilityDisc disc, EntityLivingBase caster,
- EnergyDisplayData resolved, ProjectileData projData, int index) {
+ EnergyDisplayData resolved, ProjectileData projData, int index) {
disc.setupPreview(caster, discRadius, discThickness, resolved, lightningData, projData.anchor, windUpTicks, vertical);
}
@@ -139,23 +143,53 @@ public class AbilityDisc extends AbilityEnergyProjectile impl
// ==================== TYPE-SPECIFIC GETTERS ====================
- public float getSpeed() { return homingData.speed; }
- public void setSpeed(float speed) { homingData.speed = speed; }
+ public float getSpeed() {
+ return homingData.speed;
+ }
- public float getDiscRadius() { return discRadius; }
- public void setDiscRadius(float discRadius) { this.discRadius = discRadius; }
+ public void setSpeed(float speed) {
+ homingData.speed = speed;
+ }
- public float getDiscThickness() { return discThickness; }
- public void setDiscThickness(float discThickness) { this.discThickness = discThickness; }
+ public float getDiscRadius() {
+ return discRadius;
+ }
- public boolean isVertical() { return vertical; }
- public void setVertical(boolean vertical) { this.vertical = vertical; }
+ public void setDiscRadius(float discRadius) {
+ this.discRadius = discRadius;
+ }
- public boolean isBoomerang() { return boomerang; }
- public void setBoomerang(boolean boomerang) { this.boomerang = boomerang; }
+ public float getDiscThickness() {
+ return discThickness;
+ }
- public int getBoomerangDelay() { return boomerangDelay; }
- public void setBoomerangDelay(int boomerangDelay) { this.boomerangDelay = boomerangDelay; }
+ public void setDiscThickness(float discThickness) {
+ this.discThickness = discThickness;
+ }
+
+ public boolean isVertical() {
+ return vertical;
+ }
+
+ public void setVertical(boolean vertical) {
+ this.vertical = vertical;
+ }
+
+ public boolean isBoomerang() {
+ return boomerang;
+ }
+
+ public void setBoomerang(boolean boomerang) {
+ this.boomerang = boomerang;
+ }
+
+ public int getBoomerangDelay() {
+ return boomerangDelay;
+ }
+
+ public void setBoomerangDelay(int boomerangDelay) {
+ this.boomerangDelay = boomerangDelay;
+ }
// ==================== TYPE-SPECIFIC GUI ====================
diff --git a/src/main/java/kamkeel/npcs/controllers/data/ability/type/energy/AbilityDome.java b/src/main/java/kamkeel/npcs/controllers/data/ability/type/energy/AbilityDome.java
index b6bb57e96..2fe0c4572 100644
--- a/src/main/java/kamkeel/npcs/controllers/data/ability/type/energy/AbilityDome.java
+++ b/src/main/java/kamkeel/npcs/controllers/data/ability/type/energy/AbilityDome.java
@@ -10,7 +10,6 @@ import kamkeel.npcs.controllers.data.ability.data.EnergyDisplayData;
import kamkeel.npcs.controllers.data.telegraph.TelegraphType;
import kamkeel.npcs.entity.EntityEnergyBarrier;
import kamkeel.npcs.entity.EntityEnergyDome;
-import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.nbt.NBTTagCompound;
import noppes.npcs.client.gui.builder.FieldDef;
@@ -111,11 +110,21 @@ public class AbilityDome extends AbilityEnergyBarrier {
// ==================== GETTERS & SETTERS ====================
- public float getDomeRadius() { return domeRadius; }
- public void setDomeRadius(float radius) { this.domeRadius = Math.max(1.0f, radius); }
+ public float getDomeRadius() {
+ return domeRadius;
+ }
- public boolean isFollowCaster() { return followCaster; }
- public void setFollowCaster(boolean follow) { this.followCaster = follow; }
+ public void setDomeRadius(float radius) {
+ this.domeRadius = Math.max(1.0f, radius);
+ }
+
+ public boolean isFollowCaster() {
+ return followCaster;
+ }
+
+ public void setFollowCaster(boolean follow) {
+ this.followCaster = follow;
+ }
// ==================== TYPE-SPECIFIC GUI ====================
diff --git a/src/main/java/kamkeel/npcs/controllers/data/ability/type/energy/AbilityEnergy.java b/src/main/java/kamkeel/npcs/controllers/data/ability/type/energy/AbilityEnergy.java
index 3e0747160..59917889e 100644
--- a/src/main/java/kamkeel/npcs/controllers/data/ability/type/energy/AbilityEnergy.java
+++ b/src/main/java/kamkeel/npcs/controllers/data/ability/type/energy/AbilityEnergy.java
@@ -26,40 +26,95 @@ public abstract class AbilityEnergy extends Ability {
// ==================== DISPLAY DATA ====================
- public int getInnerColor() { return displayData.innerColor; }
- public void setInnerColor(int color) { displayData.innerColor = color; }
+ public int getInnerColor() {
+ return displayData.innerColor;
+ }
- public float getInnerAlpha() { return displayData.innerAlpha; }
- public void setInnerAlpha(float alpha) { displayData.innerAlpha = alpha; }
+ public void setInnerColor(int color) {
+ displayData.innerColor = color;
+ }
- public int getOuterColor() { return displayData.outerColor; }
- public void setOuterColor(int color) { displayData.outerColor = color; }
+ public float getInnerAlpha() {
+ return displayData.innerAlpha;
+ }
- public boolean isOuterColorEnabled() { return displayData.outerColorEnabled; }
- public void setOuterColorEnabled(boolean enabled) { displayData.outerColorEnabled = enabled; }
+ public void setInnerAlpha(float alpha) {
+ displayData.innerAlpha = alpha;
+ }
- public float getOuterColorWidth() { return displayData.outerColorWidth; }
- public void setOuterColorWidth(float width) { displayData.outerColorWidth = width; }
+ public int getOuterColor() {
+ return displayData.outerColor;
+ }
- public float getOuterColorAlpha() { return displayData.outerColorAlpha; }
- public void setOuterColorAlpha(float alpha) { displayData.outerColorAlpha = alpha; }
+ public void setOuterColor(int color) {
+ displayData.outerColor = color;
+ }
- public float getRotationSpeed() { return displayData.rotationSpeed; }
- public void setRotationSpeed(float speed) { displayData.rotationSpeed = speed; }
+ public boolean isOuterColorEnabled() {
+ return displayData.outerColorEnabled;
+ }
+
+ public void setOuterColorEnabled(boolean enabled) {
+ displayData.outerColorEnabled = enabled;
+ }
+
+ public float getOuterColorWidth() {
+ return displayData.outerColorWidth;
+ }
+
+ public void setOuterColorWidth(float width) {
+ displayData.outerColorWidth = width;
+ }
+
+ public float getOuterColorAlpha() {
+ return displayData.outerColorAlpha;
+ }
+
+ public void setOuterColorAlpha(float alpha) {
+ displayData.outerColorAlpha = alpha;
+ }
+
+ public float getRotationSpeed() {
+ return displayData.rotationSpeed;
+ }
+
+ public void setRotationSpeed(float speed) {
+ displayData.rotationSpeed = speed;
+ }
// ==================== LIGHTNING DATA ====================
- public boolean hasLightningEffect() { return lightningData.lightningEffect; }
- public void setLightningEffect(boolean enabled) { lightningData.lightningEffect = enabled; }
+ public boolean hasLightningEffect() {
+ return lightningData.lightningEffect;
+ }
- public float getLightningDensity() { return lightningData.lightningDensity; }
- public void setLightningDensity(float density) { lightningData.lightningDensity = density; }
+ public void setLightningEffect(boolean enabled) {
+ lightningData.lightningEffect = enabled;
+ }
- public float getLightningRadius() { return lightningData.lightningRadius; }
- public void setLightningRadius(float radius) { lightningData.lightningRadius = radius; }
+ public float getLightningDensity() {
+ return lightningData.lightningDensity;
+ }
- public int getLightningFadeTime() { return lightningData.lightningFadeTime; }
- public void setLightningFadeTime(int fadeTime) { lightningData.lightningFadeTime = fadeTime; }
+ public void setLightningDensity(float density) {
+ lightningData.lightningDensity = density;
+ }
+
+ public float getLightningRadius() {
+ return lightningData.lightningRadius;
+ }
+
+ public void setLightningRadius(float radius) {
+ lightningData.lightningRadius = radius;
+ }
+
+ public int getLightningFadeTime() {
+ return lightningData.lightningFadeTime;
+ }
+
+ public void setLightningFadeTime(int fadeTime) {
+ lightningData.lightningFadeTime = fadeTime;
+ }
// ==================== NBT HELPERS ====================
diff --git a/src/main/java/kamkeel/npcs/controllers/data/ability/type/energy/AbilityEnergyBarrier.java b/src/main/java/kamkeel/npcs/controllers/data/ability/type/energy/AbilityEnergyBarrier.java
index 7909f5a56..3319b7dc6 100644
--- a/src/main/java/kamkeel/npcs/controllers/data/ability/type/energy/AbilityEnergyBarrier.java
+++ b/src/main/java/kamkeel/npcs/controllers/data/ability/type/energy/AbilityEnergyBarrier.java
@@ -142,37 +142,95 @@ public abstract class AbilityEnergyBarrier extends AbilityEnergy {
// Display and lightning data inherited from AbilityEnergy
// Barrier data
- public float getBarrierMaxHealth() { return barrierData.maxHealth; }
- public void setBarrierMaxHealth(float maxHealth) { barrierData.setMaxHealth(maxHealth); }
+ public float getBarrierMaxHealth() {
+ return barrierData.maxHealth;
+ }
- public boolean isUseHealth() { return barrierData.useHealth; }
- public void setUseHealth(boolean useHealth) { barrierData.useHealth = useHealth; }
+ public void setBarrierMaxHealth(float maxHealth) {
+ barrierData.setMaxHealth(maxHealth);
+ }
- public int getBarrierDuration() { return barrierData.durationTicks; }
- public void setBarrierDuration(int ticks) { barrierData.setDurationTicks(ticks); }
+ public boolean isUseHealth() {
+ return barrierData.useHealth;
+ }
- public boolean isUseDuration() { return barrierData.useDuration; }
- public void setUseDuration(boolean useDuration) { barrierData.useDuration = useDuration; }
+ public void setUseHealth(boolean useHealth) {
+ barrierData.useHealth = useHealth;
+ }
- public float getDefaultMultiplier() { return barrierData.defaultMultiplier; }
- public void setDefaultMultiplier(float mult) { barrierData.defaultMultiplier = mult; }
+ public int getBarrierDuration() {
+ return barrierData.durationTicks;
+ }
- public void setDamageMultiplier(String typeId, float mult) { barrierData.setMultiplier(typeId, mult); }
- public float getDamageMultiplier(String typeId) { return barrierData.getMultiplier(typeId); }
+ public void setBarrierDuration(int ticks) {
+ barrierData.setDurationTicks(ticks);
+ }
+
+ public boolean isUseDuration() {
+ return barrierData.useDuration;
+ }
+
+ public void setUseDuration(boolean useDuration) {
+ barrierData.useDuration = useDuration;
+ }
+
+ public float getDefaultMultiplier() {
+ return barrierData.defaultMultiplier;
+ }
+
+ public void setDefaultMultiplier(float mult) {
+ barrierData.defaultMultiplier = mult;
+ }
+
+ public void setDamageMultiplier(String typeId, float mult) {
+ barrierData.setMultiplier(typeId, mult);
+ }
+
+ public float getDamageMultiplier(String typeId) {
+ return barrierData.getMultiplier(typeId);
+ }
// Knockback data
- public boolean isKnockbackEnabled() { return barrierData.knockbackEnabled; }
- public void setKnockbackEnabled(boolean enabled) { barrierData.knockbackEnabled = enabled; }
- public float getKnockbackStrength() { return barrierData.knockbackStrength; }
- public void setKnockbackStrength(float strength) { barrierData.knockbackStrength = strength; }
- public String getKnockbackTargetKey() { return barrierData.getKnockbackTargetKey(); }
- public void setKnockbackTargetKey(String key) { barrierData.setKnockbackTargetFromKey(key); }
+ public boolean isKnockbackEnabled() {
+ return barrierData.knockbackEnabled;
+ }
+
+ public void setKnockbackEnabled(boolean enabled) {
+ barrierData.knockbackEnabled = enabled;
+ }
+
+ public float getKnockbackStrength() {
+ return barrierData.knockbackStrength;
+ }
+
+ public void setKnockbackStrength(float strength) {
+ barrierData.knockbackStrength = strength;
+ }
+
+ public String getKnockbackTargetKey() {
+ return barrierData.getKnockbackTargetKey();
+ }
+
+ public void setKnockbackTargetKey(String key) {
+ barrierData.setKnockbackTargetFromKey(key);
+ }
// Melee data
- public boolean isMeleeEnabled() { return barrierData.meleeEnabled; }
- public void setMeleeEnabled(boolean enabled) { barrierData.meleeEnabled = enabled; }
- public float getMeleeDamageMultiplier() { return barrierData.meleeDamageMultiplier; }
- public void setMeleeDamageMultiplier(float mult) { barrierData.meleeDamageMultiplier = mult; }
+ public boolean isMeleeEnabled() {
+ return barrierData.meleeEnabled;
+ }
+
+ public void setMeleeEnabled(boolean enabled) {
+ barrierData.meleeEnabled = enabled;
+ }
+
+ public float getMeleeDamageMultiplier() {
+ return barrierData.meleeDamageMultiplier;
+ }
+
+ public void setMeleeDamageMultiplier(float mult) {
+ barrierData.meleeDamageMultiplier = mult;
+ }
// ==================== GUI ====================
@@ -199,7 +257,7 @@ public abstract class AbilityEnergyBarrier extends AbilityEnergy {
FieldDef.floatField("ability.knockbackStrength", this::getKnockbackStrength, this::setKnockbackStrength)
.range(0, 10).visibleWhen(this::isKnockbackEnabled),
FieldDef.stringEnumField("ability.knockbackTarget", EnergyBarrierData.getKnockbackTargetKeys(),
- this::getKnockbackTargetKey, this::setKnockbackTargetKey)
+ this::getKnockbackTargetKey, this::setKnockbackTargetKey)
.visibleWhen(this::isKnockbackEnabled)
));
diff --git a/src/main/java/kamkeel/npcs/controllers/data/ability/type/energy/AbilityEnergyProjectile.java b/src/main/java/kamkeel/npcs/controllers/data/ability/type/energy/AbilityEnergyProjectile.java
index d9ab67646..6575b29c0 100644
--- a/src/main/java/kamkeel/npcs/controllers/data/ability/type/energy/AbilityEnergyProjectile.java
+++ b/src/main/java/kamkeel/npcs/controllers/data/ability/type/energy/AbilityEnergyProjectile.java
@@ -2,10 +2,14 @@ package kamkeel.npcs.controllers.data.ability.type.energy;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
-import kamkeel.npcs.controllers.data.ability.Ability;
import kamkeel.npcs.controllers.data.ability.AnchorPoint;
import kamkeel.npcs.controllers.data.ability.TargetingMode;
-import kamkeel.npcs.controllers.data.ability.data.*;
+import kamkeel.npcs.controllers.data.ability.data.EnergyCombatData;
+import kamkeel.npcs.controllers.data.ability.data.EnergyDisplayData;
+import kamkeel.npcs.controllers.data.ability.data.EnergyHomingData;
+import kamkeel.npcs.controllers.data.ability.data.EnergyLifespanData;
+import kamkeel.npcs.controllers.data.ability.data.EnergyTrajectoryData;
+import kamkeel.npcs.controllers.data.ability.data.ProjectileData;
import kamkeel.npcs.controllers.data.telegraph.Telegraph;
import kamkeel.npcs.controllers.data.telegraph.TelegraphInstance;
import kamkeel.npcs.controllers.data.telegraph.TelegraphType;
@@ -24,7 +28,7 @@ import java.util.List;
* Abstract base for energy projectile abilities (Orb, Disc, Beam, LaserShot).
* Handles shared lifecycle (windup → execute → active → completion), multi-projectile
* support with staggered firing, telegraph creation, NBT persistence, and GUI definitions.
- *
+ *
* Subclasses provide entity creation/firing/charging logic and type-specific fields.
*
* @param The entity type this ability spawns
@@ -74,7 +78,7 @@ public abstract class AbilityEnergyProjectile
* Called during windup (tick 1) and burst refire (onExecute when entities are null).
*/
protected abstract E createEntity(EntityLivingBase caster, EntityLivingBase target,
- Vec3 spawnPos, EnergyDisplayData resolved, int index);
+ Vec3 spawnPos, EnergyDisplayData resolved, int index);
/**
* Fire an entity (start moving toward target). Entity is guaranteed non-null and alive.
@@ -90,7 +94,7 @@ public abstract class AbilityEnergyProjectile
* Setup entity for preview mode during windup.
*/
protected abstract void setupEntityPreview(E entity, EntityLivingBase caster,
- EnergyDisplayData resolved, ProjectileData projData, int index);
+ EnergyDisplayData resolved, ProjectileData projData, int index);
/**
* Create typed array (Java generics can't create generic arrays).
@@ -129,9 +133,12 @@ public abstract class AbilityEnergyProjectile
*/
protected AnchorPoint getDefaultAnchor(int index) {
switch (index) {
- case 0: return AnchorPoint.RIGHT_HAND;
- case 1: return AnchorPoint.LEFT_HAND;
- default: return AnchorPoint.FRONT;
+ case 0:
+ return AnchorPoint.RIGHT_HAND;
+ case 1:
+ return AnchorPoint.LEFT_HAND;
+ default:
+ return AnchorPoint.FRONT;
}
}
@@ -168,15 +175,31 @@ public abstract class AbilityEnergyProjectile
}
}
- public int getProjectileCount() { return projectileCount; }
+ public int getProjectileCount() {
+ return projectileCount;
+ }
- public int getFireDelay() { return fireDelay; }
- public void setFireDelay(int delay) { this.fireDelay = Math.max(0, delay); }
+ public int getFireDelay() {
+ return fireDelay;
+ }
- /** @deprecated Use {@link #getFireDelay()} */
- public int getDualFireDelay() { return fireDelay; }
- /** @deprecated Use {@link #setFireDelay(int)} */
- public void setDualFireDelay(int delay) { setFireDelay(delay); }
+ public void setFireDelay(int delay) {
+ this.fireDelay = Math.max(0, delay);
+ }
+
+ /**
+ * @deprecated Use {@link #getFireDelay()}
+ */
+ public int getDualFireDelay() {
+ return fireDelay;
+ }
+
+ /**
+ * @deprecated Use {@link #setFireDelay(int)}
+ */
+ public void setDualFireDelay(int delay) {
+ setFireDelay(delay);
+ }
protected int clampIndex(int index) {
return Math.max(0, Math.min(index, projectileCount - 1));
@@ -317,7 +340,7 @@ public abstract class AbilityEnergyProjectile
// Check if entity was removed from world (chunk unload, etc.)
// Skip this check for preview entities - they're not registered in the world
if (!isPreview() && tick > 5 && entity.worldObj != null
- && entity.worldObj.getEntityByID(entity.getEntityId()) != entity) {
+ && entity.worldObj.getEntityByID(entity.getEntityId()) != entity) {
entity.setDead();
continue;
}
@@ -449,64 +472,163 @@ public abstract class AbilityEnergyProjectile
// ==================== API GETTERS & SETTERS ====================
// Combat data
- @Override public float getDamage() { return combatData.damage; }
- @Override public void setDamage(float damage) { combatData.damage = damage; }
+ @Override
+ public float getDamage() {
+ return combatData.damage;
+ }
- @Override public float getKnockback() { return combatData.knockback; }
- @Override public void setKnockback(float knockback) { combatData.knockback = knockback; }
+ @Override
+ public void setDamage(float damage) {
+ combatData.damage = damage;
+ }
- @Override public float getKnockbackUp() { return combatData.knockbackUp; }
- @Override public void setKnockbackUp(float knockbackUp) { combatData.knockbackUp = knockbackUp; }
+ @Override
+ public float getKnockback() {
+ return combatData.knockback;
+ }
- @Override public boolean isExplosive() { return combatData.explosive; }
- @Override public void setExplosive(boolean explosive) { combatData.explosive = explosive; }
+ @Override
+ public void setKnockback(float knockback) {
+ combatData.knockback = knockback;
+ }
- @Override public float getExplosionRadius() { return combatData.explosionRadius; }
- @Override public void setExplosionRadius(float explosionRadius) { combatData.explosionRadius = explosionRadius; }
+ @Override
+ public float getKnockbackUp() {
+ return combatData.knockbackUp;
+ }
- @Override public float getExplosionDamageFalloff() { return combatData.explosionDamageFalloff; }
- @Override public void setExplosionDamageFalloff(float falloff) { combatData.explosionDamageFalloff = falloff; }
+ @Override
+ public void setKnockbackUp(float knockbackUp) {
+ combatData.knockbackUp = knockbackUp;
+ }
+
+ @Override
+ public boolean isExplosive() {
+ return combatData.explosive;
+ }
+
+ @Override
+ public void setExplosive(boolean explosive) {
+ combatData.explosive = explosive;
+ }
+
+ @Override
+ public float getExplosionRadius() {
+ return combatData.explosionRadius;
+ }
+
+ @Override
+ public void setExplosionRadius(float explosionRadius) {
+ combatData.explosionRadius = explosionRadius;
+ }
+
+ @Override
+ public float getExplosionDamageFalloff() {
+ return combatData.explosionDamageFalloff;
+ }
+
+ @Override
+ public void setExplosionDamageFalloff(float falloff) {
+ combatData.explosionDamageFalloff = falloff;
+ }
// Lifespan data
- @Override public float getMaxDistance() { return lifespanData.maxDistance; }
- @Override public void setMaxDistance(float maxDistance) { lifespanData.maxDistance = maxDistance; }
+ @Override
+ public float getMaxDistance() {
+ return lifespanData.maxDistance;
+ }
- @Override public int getMaxLifetime() { return lifespanData.maxLifetime; }
- @Override public void setMaxLifetime(int maxLifetime) { lifespanData.maxLifetime = maxLifetime; }
+ @Override
+ public void setMaxDistance(float maxDistance) {
+ lifespanData.maxDistance = maxDistance;
+ }
+
+ @Override
+ public int getMaxLifetime() {
+ return lifespanData.maxLifetime;
+ }
+
+ @Override
+ public void setMaxLifetime(int maxLifetime) {
+ lifespanData.maxLifetime = maxLifetime;
+ }
// Homing data
- public boolean isHoming() { return homingData.homing; }
- public void setHoming(boolean homing) { homingData.homing = homing; }
+ public boolean isHoming() {
+ return homingData.homing;
+ }
- public float getHomingStrength() { return homingData.homingStrength; }
- public void setHomingStrength(float strength) { homingData.homingStrength = strength; }
+ public void setHoming(boolean homing) {
+ homingData.homing = homing;
+ }
- public float getHomingRange() { return homingData.homingRange; }
- public void setHomingRange(float range) { homingData.homingRange = range; }
+ public float getHomingStrength() {
+ return homingData.homingStrength;
+ }
+
+ public void setHomingStrength(float strength) {
+ homingData.homingStrength = strength;
+ }
+
+ public float getHomingRange() {
+ return homingData.homingRange;
+ }
+
+ public void setHomingRange(float range) {
+ homingData.homingRange = range;
+ }
// Display and lightning data inherited from AbilityEnergy
// Anchor - default to projectile 0
- public AnchorPoint getAnchorPointEnum() { return projectiles[0].anchor.anchorPoint; }
- public void setAnchorPointEnum(AnchorPoint point) { projectiles[0].anchor.anchorPoint = point; }
+ public AnchorPoint getAnchorPointEnum() {
+ return projectiles[0].anchor.anchorPoint;
+ }
- public float getAnchorOffsetX() { return projectiles[0].anchor.anchorOffsetX; }
- public void setAnchorOffsetX(float x) { projectiles[0].anchor.anchorOffsetX = x; }
+ public void setAnchorPointEnum(AnchorPoint point) {
+ projectiles[0].anchor.anchorPoint = point;
+ }
- public float getAnchorOffsetY() { return projectiles[0].anchor.anchorOffsetY; }
- public void setAnchorOffsetY(float y) { projectiles[0].anchor.anchorOffsetY = y; }
+ public float getAnchorOffsetX() {
+ return projectiles[0].anchor.anchorOffsetX;
+ }
- public float getAnchorOffsetZ() { return projectiles[0].anchor.anchorOffsetZ; }
- public void setAnchorOffsetZ(float z) { projectiles[0].anchor.anchorOffsetZ = z; }
+ public void setAnchorOffsetX(float x) {
+ projectiles[0].anchor.anchorOffsetX = x;
+ }
- @Override public int getAnchorPoint() { return projectiles[0].anchor.anchorPoint.ordinal(); }
- @Override public void setAnchorPoint(int point) { projectiles[0].anchor.anchorPoint = AnchorPoint.fromOrdinal(point); }
+ public float getAnchorOffsetY() {
+ return projectiles[0].anchor.anchorOffsetY;
+ }
+
+ public void setAnchorOffsetY(float y) {
+ projectiles[0].anchor.anchorOffsetY = y;
+ }
+
+ public float getAnchorOffsetZ() {
+ return projectiles[0].anchor.anchorOffsetZ;
+ }
+
+ public void setAnchorOffsetZ(float z) {
+ projectiles[0].anchor.anchorOffsetZ = z;
+ }
+
+ @Override
+ public int getAnchorPoint() {
+ return projectiles[0].anchor.anchorPoint.ordinal();
+ }
+
+ @Override
+ public void setAnchorPoint(int point) {
+ projectiles[0].anchor.anchorPoint = AnchorPoint.fromOrdinal(point);
+ }
// Indexed API methods
public int getInnerColor(int index) {
ProjectileData p = projectiles[clampIndex(index)];
return p.colorOverride ? p.innerColor : displayData.innerColor;
}
+
public void setInnerColor(int index, int color) {
ProjectileData p = projectiles[clampIndex(index)];
p.colorOverride = true;
@@ -517,17 +639,32 @@ public abstract class AbilityEnergyProjectile
ProjectileData p = projectiles[clampIndex(index)];
return p.colorOverride ? p.outerColor : displayData.outerColor;
}
+
public void setOuterColor(int index, int color) {
ProjectileData p = projectiles[clampIndex(index)];
p.colorOverride = true;
p.outerColor = color;
}
- public int getAnchorPoint(int index) { return projectiles[clampIndex(index)].anchor.anchorPoint.ordinal(); }
- public void setAnchorPoint(int index, int point) { projectiles[clampIndex(index)].anchor.anchorPoint = AnchorPoint.fromOrdinal(point); }
- public void setAnchorOffsetX(int index, float offset) { projectiles[clampIndex(index)].anchor.anchorOffsetX = offset; }
- public void setAnchorOffsetY(int index, float offset) { projectiles[clampIndex(index)].anchor.anchorOffsetY = offset; }
- public void setAnchorOffsetZ(int index, float offset) { projectiles[clampIndex(index)].anchor.anchorOffsetZ = offset; }
+ public int getAnchorPoint(int index) {
+ return projectiles[clampIndex(index)].anchor.anchorPoint.ordinal();
+ }
+
+ public void setAnchorPoint(int index, int point) {
+ projectiles[clampIndex(index)].anchor.anchorPoint = AnchorPoint.fromOrdinal(point);
+ }
+
+ public void setAnchorOffsetX(int index, float offset) {
+ projectiles[clampIndex(index)].anchor.anchorOffsetX = offset;
+ }
+
+ public void setAnchorOffsetY(int index, float offset) {
+ projectiles[clampIndex(index)].anchor.anchorOffsetY = offset;
+ }
+
+ public void setAnchorOffsetZ(int index, float offset) {
+ projectiles[clampIndex(index)].anchor.anchorOffsetZ = offset;
+ }
// ==================== GUI FIELD DEFINITIONS ====================
@@ -555,7 +692,7 @@ public abstract class AbilityEnergyProjectile
.visibleWhen(() -> idx < projectileCount));
defs.add(FieldDef.enumField("ability.anchorPoint", AnchorPoint.class,
- () -> projectiles[idx].anchor.anchorPoint, v -> projectiles[idx].anchor.anchorPoint = v)
+ () -> projectiles[idx].anchor.anchorPoint, v -> projectiles[idx].anchor.anchorPoint = v)
.tab("ability.tab.visual").visibleWhen(() -> idx < projectileCount));
defs.add(FieldDef.row(
FieldDef.floatField("ability.anchor.offsetX", () -> projectiles[idx].anchor.anchorOffsetX, v -> projectiles[idx].anchor.anchorOffsetX = v)
diff --git a/src/main/java/kamkeel/npcs/controllers/data/ability/type/energy/AbilityLaserShot.java b/src/main/java/kamkeel/npcs/controllers/data/ability/type/energy/AbilityLaserShot.java
index c62c886e7..51f3da8ca 100644
--- a/src/main/java/kamkeel/npcs/controllers/data/ability/type/energy/AbilityLaserShot.java
+++ b/src/main/java/kamkeel/npcs/controllers/data/ability/type/energy/AbilityLaserShot.java
@@ -6,7 +6,11 @@ import kamkeel.npcs.controllers.data.ability.AnchorPoint;
import kamkeel.npcs.controllers.data.ability.LockMovementType;
import kamkeel.npcs.controllers.data.ability.RotationMode;
import kamkeel.npcs.controllers.data.ability.TargetingMode;
-import kamkeel.npcs.controllers.data.ability.data.*;
+import kamkeel.npcs.controllers.data.ability.data.EnergyCombatData;
+import kamkeel.npcs.controllers.data.ability.data.EnergyDisplayData;
+import kamkeel.npcs.controllers.data.ability.data.EnergyHomingData;
+import kamkeel.npcs.controllers.data.ability.data.EnergyLifespanData;
+import kamkeel.npcs.controllers.data.ability.data.ProjectileData;
import kamkeel.npcs.controllers.data.ability.gui.AbilityFieldDefs;
import kamkeel.npcs.controllers.data.telegraph.Telegraph;
import kamkeel.npcs.controllers.data.telegraph.TelegraphInstance;
@@ -111,7 +115,7 @@ public class AbilityLaserShot extends AbilityEnergyProjectile implem
@Override
protected EntityAbilityOrb createEntity(EntityLivingBase caster, EntityLivingBase target,
- Vec3 spawnPos, EnergyDisplayData resolved, int index) {
+ Vec3 spawnPos, EnergyDisplayData resolved, int index) {
return new EntityAbilityOrb(
caster.worldObj, caster, target,
spawnPos.xCoord, spawnPos.yCoord, spawnPos.zCoord, orbSize,
@@ -74,7 +78,7 @@ public class AbilityOrb extends AbilityEnergyProjectile implem
@Override
protected void setupEntityPreview(EntityAbilityOrb orb, EntityLivingBase caster,
- EnergyDisplayData resolved, ProjectileData projData, int index) {
+ EnergyDisplayData resolved, ProjectileData projData, int index) {
orb.setupPreview(caster, orbSize, resolved, lightningData, projData.anchor, windUpTicks);
}
@@ -137,11 +141,21 @@ public class AbilityOrb extends AbilityEnergyProjectile implem
// ==================== TYPE-SPECIFIC GETTERS ====================
- public float getOrbSpeed() { return homingData.speed; }
- public void setOrbSpeed(float speed) { homingData.speed = speed; }
+ public float getOrbSpeed() {
+ return homingData.speed;
+ }
- public float getOrbSize() { return orbSize; }
- public void setOrbSize(float size) { this.orbSize = size; }
+ public void setOrbSpeed(float speed) {
+ homingData.speed = speed;
+ }
+
+ public float getOrbSize() {
+ return orbSize;
+ }
+
+ public void setOrbSize(float size) {
+ this.orbSize = size;
+ }
// ==================== TYPE-SPECIFIC GUI ====================
diff --git a/src/main/java/kamkeel/npcs/controllers/data/ability/type/energy/AbilityShield.java b/src/main/java/kamkeel/npcs/controllers/data/ability/type/energy/AbilityShield.java
index 3cb407ef3..5d78e8c1d 100644
--- a/src/main/java/kamkeel/npcs/controllers/data/ability/type/energy/AbilityShield.java
+++ b/src/main/java/kamkeel/npcs/controllers/data/ability/type/energy/AbilityShield.java
@@ -12,7 +12,6 @@ import kamkeel.npcs.controllers.data.ability.data.EnergyPanelData;
import kamkeel.npcs.controllers.data.telegraph.TelegraphType;
import kamkeel.npcs.entity.EntityEnergyBarrier;
import kamkeel.npcs.entity.EntityEnergyPanel;
-import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.nbt.NBTTagCompound;
import noppes.npcs.client.gui.builder.FieldDef;
@@ -124,11 +123,21 @@ public class AbilityShield extends AbilityEnergyBarrier {
// ==================== GETTERS & SETTERS ====================
- public float getShieldWidth() { return shieldWidth; }
- public void setShieldWidth(float width) { this.shieldWidth = Math.max(0.5f, width); }
+ public float getShieldWidth() {
+ return shieldWidth;
+ }
- public float getShieldHeight() { return shieldHeight; }
- public void setShieldHeight(float height) { this.shieldHeight = Math.max(0.5f, height); }
+ public void setShieldWidth(float width) {
+ this.shieldWidth = Math.max(0.5f, width);
+ }
+
+ public float getShieldHeight() {
+ return shieldHeight;
+ }
+
+ public void setShieldHeight(float height) {
+ this.shieldHeight = Math.max(0.5f, height);
+ }
// ==================== TYPE-SPECIFIC GUI ====================
diff --git a/src/main/java/kamkeel/npcs/controllers/data/ability/type/energy/AbilitySlicer.java b/src/main/java/kamkeel/npcs/controllers/data/ability/type/energy/AbilitySlicer.java
index c79822f52..387762c9b 100644
--- a/src/main/java/kamkeel/npcs/controllers/data/ability/type/energy/AbilitySlicer.java
+++ b/src/main/java/kamkeel/npcs/controllers/data/ability/type/energy/AbilitySlicer.java
@@ -5,7 +5,11 @@ import cpw.mods.fml.relauncher.SideOnly;
import kamkeel.npcs.controllers.data.ability.AbilityVariant;
import kamkeel.npcs.controllers.data.ability.LockMovementType;
import kamkeel.npcs.controllers.data.ability.TargetingMode;
-import kamkeel.npcs.controllers.data.ability.data.*;
+import kamkeel.npcs.controllers.data.ability.data.EnergyCombatData;
+import kamkeel.npcs.controllers.data.ability.data.EnergyDisplayData;
+import kamkeel.npcs.controllers.data.ability.data.EnergyHomingData;
+import kamkeel.npcs.controllers.data.ability.data.EnergyLifespanData;
+import kamkeel.npcs.controllers.data.ability.data.ProjectileData;
import kamkeel.npcs.controllers.data.ability.gui.AbilityFieldDefs;
import kamkeel.npcs.controllers.data.telegraph.TelegraphType;
import kamkeel.npcs.entity.EntityEnergySlicer;
@@ -53,7 +57,7 @@ public class AbilitySlicer extends AbilityEnergyProjectile {
@Override
protected EntityEnergySlicer createEntity(EntityLivingBase caster, EntityLivingBase target,
- Vec3 spawnPos, EnergyDisplayData resolved, int index) {
+ Vec3 spawnPos, EnergyDisplayData resolved, int index) {
return new EntityEnergySlicer(
caster.worldObj, caster, target,
spawnPos.xCoord, spawnPos.yCoord, spawnPos.zCoord,
@@ -79,7 +83,7 @@ public class AbilitySlicer extends AbilityEnergyProjectile {
@Override
protected void setupEntityPreview(EntityEnergySlicer slicer, EntityLivingBase caster,
- EnergyDisplayData resolved, ProjectileData projData, int index) {
+ EnergyDisplayData resolved, ProjectileData projData, int index) {
slicer.setupPreview(caster, sliceWidth, sliceThickness, resolved, lightningData, projData.anchor, windUpTicks);
}
@@ -130,17 +134,37 @@ public class AbilitySlicer extends AbilityEnergyProjectile {
// ==================== TYPE-SPECIFIC GETTERS ====================
- public float getSlicerSpeed() { return homingData.speed; }
- public void setSlicerSpeed(float speed) { homingData.speed = speed; }
+ public float getSlicerSpeed() {
+ return homingData.speed;
+ }
- public float getSliceWidth() { return sliceWidth; }
- public void setSliceWidth(float width) { this.sliceWidth = Math.max(0.5f, width); }
+ public void setSlicerSpeed(float speed) {
+ homingData.speed = speed;
+ }
- public float getSliceThickness() { return sliceThickness; }
- public void setSliceThickness(float thickness) { this.sliceThickness = Math.max(0.05f, thickness); }
+ public float getSliceWidth() {
+ return sliceWidth;
+ }
- public boolean isPiercing() { return piercing; }
- public void setPiercing(boolean piercing) { this.piercing = piercing; }
+ public void setSliceWidth(float width) {
+ this.sliceWidth = Math.max(0.5f, width);
+ }
+
+ public float getSliceThickness() {
+ return sliceThickness;
+ }
+
+ public void setSliceThickness(float thickness) {
+ this.sliceThickness = Math.max(0.05f, thickness);
+ }
+
+ public boolean isPiercing() {
+ return piercing;
+ }
+
+ public void setPiercing(boolean piercing) {
+ this.piercing = piercing;
+ }
// ==================== TYPE-SPECIFIC GUI ====================
diff --git a/src/main/java/kamkeel/npcs/controllers/data/ability/type/energy/AbilitySweeper.java b/src/main/java/kamkeel/npcs/controllers/data/ability/type/energy/AbilitySweeper.java
index 67f9643d3..1e0302522 100644
--- a/src/main/java/kamkeel/npcs/controllers/data/ability/type/energy/AbilitySweeper.java
+++ b/src/main/java/kamkeel/npcs/controllers/data/ability/type/energy/AbilitySweeper.java
@@ -22,7 +22,7 @@ import java.util.List;
* Sweeper ability: A low sweeping beam that rotates around the NPC.
* Players can jump over it. The beam completes a set number of rotations before ending.
* Telegraph shows a large circle on the ground indicating range.
- *
+ *
* All damage logic is handled by the EntityAbilitySweeper entity to ensure
* visual and damage hitbox alignment.
*/
@@ -173,24 +173,77 @@ public class AbilitySweeper extends AbilityEnergy implements IAbilitySweeper {
}
// Getters & Setters (type-specific only; color/lightning inherited from AbilityEnergy)
- public float getBeamLength() { return beamLength; }
- public void setBeamLength(float beamLength) { this.beamLength = beamLength; }
- public float getBeamWidth() { return beamWidth; }
- public void setBeamWidth(float beamWidth) { this.beamWidth = beamWidth; }
- public float getBeamHeight() { return beamHeight; }
- public void setBeamHeight(float beamHeight) { this.beamHeight = beamHeight; }
- public float getDamage() { return damage; }
- public void setDamage(float damage) { this.damage = damage; }
- public int getDamageInterval() { return damageInterval; }
- public void setDamageInterval(int damageInterval) { this.damageInterval = damageInterval; }
- public boolean isPiercing() { return piercing; }
- public void setPiercing(boolean piercing) { this.piercing = piercing; }
- public float getSweepSpeed() { return sweepSpeed; }
- public void setSweepSpeed(float sweepSpeed) { this.sweepSpeed = sweepSpeed; }
- public int getNumberOfRotations() { return numberOfRotations; }
- public void setNumberOfRotations(int numberOfRotations) { this.numberOfRotations = numberOfRotations; }
- public boolean isLockOnTarget() { return lockOnTarget; }
- public void setLockOnTarget(boolean lockOnTarget) { this.lockOnTarget = lockOnTarget; }
+ public float getBeamLength() {
+ return beamLength;
+ }
+
+ public void setBeamLength(float beamLength) {
+ this.beamLength = beamLength;
+ }
+
+ public float getBeamWidth() {
+ return beamWidth;
+ }
+
+ public void setBeamWidth(float beamWidth) {
+ this.beamWidth = beamWidth;
+ }
+
+ public float getBeamHeight() {
+ return beamHeight;
+ }
+
+ public void setBeamHeight(float beamHeight) {
+ this.beamHeight = beamHeight;
+ }
+
+ public float getDamage() {
+ return damage;
+ }
+
+ public void setDamage(float damage) {
+ this.damage = damage;
+ }
+
+ public int getDamageInterval() {
+ return damageInterval;
+ }
+
+ public void setDamageInterval(int damageInterval) {
+ this.damageInterval = damageInterval;
+ }
+
+ public boolean isPiercing() {
+ return piercing;
+ }
+
+ public void setPiercing(boolean piercing) {
+ this.piercing = piercing;
+ }
+
+ public float getSweepSpeed() {
+ return sweepSpeed;
+ }
+
+ public void setSweepSpeed(float sweepSpeed) {
+ this.sweepSpeed = sweepSpeed;
+ }
+
+ public int getNumberOfRotations() {
+ return numberOfRotations;
+ }
+
+ public void setNumberOfRotations(int numberOfRotations) {
+ this.numberOfRotations = numberOfRotations;
+ }
+
+ public boolean isLockOnTarget() {
+ return lockOnTarget;
+ }
+
+ public void setLockOnTarget(boolean lockOnTarget) {
+ this.lockOnTarget = lockOnTarget;
+ }
@Override
public int getMaxPreviewDuration() {
diff --git a/src/main/java/kamkeel/npcs/controllers/data/ability/type/energy/AbilityWall.java b/src/main/java/kamkeel/npcs/controllers/data/ability/type/energy/AbilityWall.java
index f6bc037a4..60680888f 100644
--- a/src/main/java/kamkeel/npcs/controllers/data/ability/type/energy/AbilityWall.java
+++ b/src/main/java/kamkeel/npcs/controllers/data/ability/type/energy/AbilityWall.java
@@ -11,7 +11,6 @@ import kamkeel.npcs.controllers.data.ability.data.EnergyPanelData;
import kamkeel.npcs.controllers.data.telegraph.TelegraphType;
import kamkeel.npcs.entity.EntityEnergyBarrier;
import kamkeel.npcs.entity.EntityEnergyPanel;
-import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.nbt.NBTTagCompound;
import noppes.npcs.client.gui.builder.FieldDef;
@@ -139,28 +138,65 @@ public class AbilityWall extends AbilityEnergyBarrier {
// ==================== GETTERS & SETTERS ====================
- public EnergyPanelData getPanelData() { return panelData; }
+ public EnergyPanelData getPanelData() {
+ return panelData;
+ }
- public float getPanelWidth() { return panelData.panelWidth; }
- public void setPanelWidth(float width) { panelData.setPanelWidth(width); }
+ public float getPanelWidth() {
+ return panelData.panelWidth;
+ }
- public float getPanelHeight() { return panelData.panelHeight; }
- public void setPanelHeight(float height) { panelData.setPanelHeight(height); }
+ public void setPanelWidth(float width) {
+ panelData.setPanelWidth(width);
+ }
- public float getHeightOffset() { return panelData.heightOffset; }
- public void setHeightOffset(float offset) { panelData.heightOffset = offset; }
+ public float getPanelHeight() {
+ return panelData.panelHeight;
+ }
- public boolean isLaunching() { return panelData.launching; }
- public void setLaunching(boolean launching) { panelData.launching = launching; }
+ public void setPanelHeight(float height) {
+ panelData.setPanelHeight(height);
+ }
- public float getLaunchSpeed() { return panelData.launchSpeed; }
- public void setLaunchSpeed(float speed) { panelData.setLaunchSpeed(speed); }
+ public float getHeightOffset() {
+ return panelData.heightOffset;
+ }
- public float getLaunchDamage() { return panelData.launchDamage; }
- public void setLaunchDamage(float damage) { panelData.setLaunchDamage(damage); }
+ public void setHeightOffset(float offset) {
+ panelData.heightOffset = offset;
+ }
- public float getLaunchKnockback() { return panelData.launchKnockback; }
- public void setLaunchKnockback(float kb) { panelData.setLaunchKnockback(kb); }
+ public boolean isLaunching() {
+ return panelData.launching;
+ }
+
+ public void setLaunching(boolean launching) {
+ panelData.launching = launching;
+ }
+
+ public float getLaunchSpeed() {
+ return panelData.launchSpeed;
+ }
+
+ public void setLaunchSpeed(float speed) {
+ panelData.setLaunchSpeed(speed);
+ }
+
+ public float getLaunchDamage() {
+ return panelData.launchDamage;
+ }
+
+ public void setLaunchDamage(float damage) {
+ panelData.setLaunchDamage(damage);
+ }
+
+ public float getLaunchKnockback() {
+ return panelData.launchKnockback;
+ }
+
+ public void setLaunchKnockback(float kb) {
+ panelData.setLaunchKnockback(kb);
+ }
// ==================== TYPE-SPECIFIC GUI ====================
diff --git a/src/main/java/kamkeel/npcs/entity/EntityAbilityBeam.java b/src/main/java/kamkeel/npcs/entity/EntityAbilityBeam.java
index 4b6b6e18d..87cddc415 100644
--- a/src/main/java/kamkeel/npcs/entity/EntityAbilityBeam.java
+++ b/src/main/java/kamkeel/npcs/entity/EntityAbilityBeam.java
@@ -1,9 +1,14 @@
package kamkeel.npcs.entity;
-import kamkeel.npcs.controllers.data.ability.data.*;
+import kamkeel.npcs.controllers.data.ability.data.EnergyAnchorData;
+import kamkeel.npcs.controllers.data.ability.data.EnergyCombatData;
+import kamkeel.npcs.controllers.data.ability.data.EnergyDisplayData;
+import kamkeel.npcs.controllers.data.ability.data.EnergyHomingData;
+import kamkeel.npcs.controllers.data.ability.data.EnergyLifespanData;
+import kamkeel.npcs.controllers.data.ability.data.EnergyLightningData;
+import kamkeel.npcs.controllers.data.ability.data.EnergyTrajectoryData;
import kamkeel.npcs.util.AnchorPointHelper;
import net.minecraft.entity.Entity;
-import noppes.npcs.EventHooks;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
@@ -11,6 +16,7 @@ import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.MovingObjectPosition;
import net.minecraft.util.Vec3;
import net.minecraft.world.World;
+import noppes.npcs.EventHooks;
import noppes.npcs.LogWriter;
import java.util.ArrayList;
@@ -19,10 +25,10 @@ import java.util.List;
/**
* Beam projectile - head with trailing path that curves with homing.
* Stays attached to origin point, trail shows path of head.
- *
+ *
* IMPORTANT: Trail points are stored RELATIVE to startX/Y/Z (origin).
* This ensures rendering is stable regardless of entity position interpolation.
- *
+ *
* Design inspired by LouisXIV's energy attack system.
*/
public class EntityAbilityBeam extends EntityEnergyProjectile {
@@ -63,6 +69,7 @@ public class EntityAbilityBeam extends EntityEnergyProjectile {
/**
* Full constructor with all parameters using data classes.
+ *
* @param anchoredMode If true, origin follows owner and tail orb is rendered.
* If false, beam is free-moving with trailing length (no tail orb).
*/
@@ -214,7 +221,7 @@ public class EntityAbilityBeam extends EntityEnergyProjectile {
/**
* Start the beam firing (exit charging mode).
* Called by ability when windup ends.
- *
+ *
* For anchored beams: origin follows owner, head starts at charged position
* For non-anchored beams: origin fixed at charged position, head starts there
*/
@@ -281,8 +288,8 @@ public class EntityAbilityBeam extends EntityEnergyProjectile {
// Check distance using head offset (distance from origin)
double distFromOrigin = Math.sqrt(
headOffsetX * headOffsetX +
- headOffsetY * headOffsetY +
- headOffsetZ * headOffsetZ
+ headOffsetY * headOffsetY +
+ headOffsetZ * headOffsetZ
);
boolean exceeded = distFromOrigin >= getMaxDistance();
if (exceeded && !worldObj.isRemote && DEBUG_LOGGING) {
@@ -440,8 +447,8 @@ public class EntityAbilityBeam extends EntityEnergyProjectile {
Vec3 lastPoint = trailPoints.get(trailPoints.size() - 1);
double dist = Math.sqrt(
(headOffsetX - lastPoint.xCoord) * (headOffsetX - lastPoint.xCoord) +
- (headOffsetY - lastPoint.yCoord) * (headOffsetY - lastPoint.yCoord) +
- (headOffsetZ - lastPoint.zCoord) * (headOffsetZ - lastPoint.zCoord)
+ (headOffsetY - lastPoint.yCoord) * (headOffsetY - lastPoint.yCoord) +
+ (headOffsetZ - lastPoint.zCoord) * (headOffsetZ - lastPoint.zCoord)
);
if (dist >= MIN_POINT_DISTANCE) {
diff --git a/src/main/java/kamkeel/npcs/entity/EntityAbilityDisc.java b/src/main/java/kamkeel/npcs/entity/EntityAbilityDisc.java
index 72ebe29ae..2b8a99d07 100644
--- a/src/main/java/kamkeel/npcs/entity/EntityAbilityDisc.java
+++ b/src/main/java/kamkeel/npcs/entity/EntityAbilityDisc.java
@@ -1,22 +1,28 @@
package kamkeel.npcs.entity;
-import kamkeel.npcs.controllers.data.ability.data.*;
+import kamkeel.npcs.controllers.data.ability.data.EnergyAnchorData;
+import kamkeel.npcs.controllers.data.ability.data.EnergyCombatData;
+import kamkeel.npcs.controllers.data.ability.data.EnergyDisplayData;
+import kamkeel.npcs.controllers.data.ability.data.EnergyHomingData;
+import kamkeel.npcs.controllers.data.ability.data.EnergyLifespanData;
+import kamkeel.npcs.controllers.data.ability.data.EnergyLightningData;
+import kamkeel.npcs.controllers.data.ability.data.EnergyTrajectoryData;
import kamkeel.npcs.util.AnchorPointHelper;
import net.minecraft.entity.Entity;
-import noppes.npcs.EventHooks;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.MovingObjectPosition;
import net.minecraft.util.Vec3;
import net.minecraft.world.World;
+import noppes.npcs.EventHooks;
import java.util.List;
/**
* Disc projectile - flat spinning disc with optional boomerang behavior.
* Has a wider, thinner hitbox compared to Orb.
- *
+ *
* Design inspired by LouisXIV's energy attack system.
*/
public class EntityAbilityDisc extends EntityEnergyProjectile {
@@ -252,8 +258,8 @@ public class EntityAbilityDisc extends EntityEnergyProjectile {
protected boolean checkMaxDistance() {
double distTraveled = Math.sqrt(
(posX - startX) * (posX - startX) +
- (posY - startY) * (posY - startY) +
- (posZ - startZ) * (posZ - startZ)
+ (posY - startY) * (posY - startY) +
+ (posZ - startZ) * (posZ - startZ)
);
if (boomerang) {
@@ -270,8 +276,8 @@ public class EntityAbilityDisc extends EntityEnergyProjectile {
if (owner != null) {
double distToOwner = Math.sqrt(
(posX - owner.posX) * (posX - owner.posX) +
- (posY - owner.posY) * (posY - owner.posY) +
- (posZ - owner.posZ) * (posZ - owner.posZ)
+ (posY - owner.posY) * (posY - owner.posY) +
+ (posZ - owner.posZ) * (posZ - owner.posZ)
);
return distToOwner < 1.5;
}
diff --git a/src/main/java/kamkeel/npcs/entity/EntityAbilityLaser.java b/src/main/java/kamkeel/npcs/entity/EntityAbilityLaser.java
index 391d9466c..1a13c1060 100644
--- a/src/main/java/kamkeel/npcs/entity/EntityAbilityLaser.java
+++ b/src/main/java/kamkeel/npcs/entity/EntityAbilityLaser.java
@@ -1,15 +1,19 @@
package kamkeel.npcs.entity;
-import kamkeel.npcs.controllers.data.ability.data.*;
+import kamkeel.npcs.controllers.data.ability.data.EnergyCombatData;
+import kamkeel.npcs.controllers.data.ability.data.EnergyDisplayData;
+import kamkeel.npcs.controllers.data.ability.data.EnergyLifespanData;
+import kamkeel.npcs.controllers.data.ability.data.EnergyLightningData;
+import kamkeel.npcs.controllers.data.ability.data.EnergyTrajectoryData;
import kamkeel.npcs.util.AnchorPointHelper;
import net.minecraft.entity.Entity;
-import noppes.npcs.EventHooks;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.MovingObjectPosition;
import net.minecraft.util.Vec3;
import net.minecraft.world.World;
+import noppes.npcs.EventHooks;
import java.util.HashSet;
import java.util.List;
@@ -18,7 +22,7 @@ import java.util.Set;
/**
* Laser projectile - fast expanding thin line that pierces through multiple targets.
* No homing, travels in a straight line from origin to max distance.
- *
+ *
* Design inspired by LouisXIV's energy attack system.
*/
public class EntityAbilityLaser extends EntityEnergyProjectile {
@@ -246,8 +250,8 @@ public class EntityAbilityLaser extends EntityEnergyProjectile {
// Laser stops at block
currentLength = (float) Math.sqrt(
(blockHit.hitVec.xCoord - startX) * (blockHit.hitVec.xCoord - startX) +
- (blockHit.hitVec.yCoord - startY) * (blockHit.hitVec.yCoord - startY) +
- (blockHit.hitVec.zCoord - startZ) * (blockHit.hitVec.zCoord - startZ)
+ (blockHit.hitVec.yCoord - startY) * (blockHit.hitVec.yCoord - startY) +
+ (blockHit.hitVec.zCoord - startZ) * (blockHit.hitVec.zCoord - startZ)
);
endX = blockHit.hitVec.xCoord;
endY = blockHit.hitVec.yCoord;
diff --git a/src/main/java/kamkeel/npcs/entity/EntityAbilityOrb.java b/src/main/java/kamkeel/npcs/entity/EntityAbilityOrb.java
index 61cbe7a0b..82447edd2 100644
--- a/src/main/java/kamkeel/npcs/entity/EntityAbilityOrb.java
+++ b/src/main/java/kamkeel/npcs/entity/EntityAbilityOrb.java
@@ -1,22 +1,28 @@
package kamkeel.npcs.entity;
-import kamkeel.npcs.controllers.data.ability.data.*;
+import kamkeel.npcs.controllers.data.ability.data.EnergyAnchorData;
+import kamkeel.npcs.controllers.data.ability.data.EnergyCombatData;
+import kamkeel.npcs.controllers.data.ability.data.EnergyDisplayData;
+import kamkeel.npcs.controllers.data.ability.data.EnergyHomingData;
+import kamkeel.npcs.controllers.data.ability.data.EnergyLifespanData;
+import kamkeel.npcs.controllers.data.ability.data.EnergyLightningData;
+import kamkeel.npcs.controllers.data.ability.data.EnergyTrajectoryData;
import kamkeel.npcs.util.AnchorPointHelper;
import net.minecraft.entity.Entity;
-import noppes.npcs.EventHooks;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.MovingObjectPosition;
import net.minecraft.util.Vec3;
import net.minecraft.world.World;
+import noppes.npcs.EventHooks;
import java.util.List;
/**
* Orb projectile - spherical homing energy ball.
* Extends EntityEnergyAbility for shared functionality.
- *
+ *
* Design inspired by LouisXIV's energy attack system.
*/
public class EntityAbilityOrb extends EntityEnergyProjectile {
diff --git a/src/main/java/kamkeel/npcs/entity/EntityAbilitySweeper.java b/src/main/java/kamkeel/npcs/entity/EntityAbilitySweeper.java
index f8b0aaac1..f215ca6d6 100644
--- a/src/main/java/kamkeel/npcs/entity/EntityAbilitySweeper.java
+++ b/src/main/java/kamkeel/npcs/entity/EntityAbilitySweeper.java
@@ -23,7 +23,7 @@ import java.util.Set;
* Unlike other projectiles, this handles its own damage logic since it's
* attached to and rotates around the caster.
* Extends EntityEnergyAbility for shared visual/owner/charging state.
- *
+ *
* Design: Similar to Beam trail visuals but rotating around origin.
*/
public class EntityAbilitySweeper extends EntityEnergyAbility {
@@ -65,11 +65,11 @@ public class EntityAbilitySweeper extends EntityEnergyAbility {
}
public EntityAbilitySweeper(World world, EntityLivingBase owner, EntityLivingBase target,
- float beamLength, float beamWidth, float beamHeight,
- EnergyDisplayData displayData,
- float sweepSpeed, int numberOfRotations,
- float damage, int damageInterval, boolean piercing,
- boolean lockOnTarget) {
+ float beamLength, float beamWidth, float beamHeight,
+ EnergyDisplayData displayData,
+ float sweepSpeed, int numberOfRotations,
+ float damage, int damageInterval, boolean piercing,
+ boolean lockOnTarget) {
this(world);
this.ownerEntityId = owner.getEntityId();
diff --git a/src/main/java/kamkeel/npcs/entity/EntityAbilityZone.java b/src/main/java/kamkeel/npcs/entity/EntityAbilityZone.java
index 11eaade79..ac42b3b1d 100644
--- a/src/main/java/kamkeel/npcs/entity/EntityAbilityZone.java
+++ b/src/main/java/kamkeel/npcs/entity/EntityAbilityZone.java
@@ -34,16 +34,20 @@ public class EntityAbilityZone extends Entity implements IEntityAdditionalSpawnD
// ENUMS
// ═══════════════════════════════════════════════════════════════════
- public enum ZoneType { TRAP, HAZARD }
+ public enum ZoneType {TRAP, HAZARD}
+
public enum ZoneShape {
CIRCLE, SQUARE;
@Override
public String toString() {
switch (this) {
- case CIRCLE: return "ability.shape.circle";
- case SQUARE: return "ability.shape.square";
- default: return name();
+ case CIRCLE:
+ return "ability.shape.circle";
+ case SQUARE:
+ return "ability.shape.square";
+ default:
+ return name();
}
}
}
@@ -54,10 +58,14 @@ public class EntityAbilityZone extends Entity implements IEntityAdditionalSpawnD
@Override
public String toString() {
switch (this) {
- case STATIC: return "ability.accentStyle.static";
- case SWAYING: return "ability.accentStyle.swaying";
- case FLICKERING: return "ability.accentStyle.flickering";
- default: return name();
+ case STATIC:
+ return "ability.accentStyle.static";
+ case SWAYING:
+ return "ability.accentStyle.swaying";
+ case FLICKERING:
+ return "ability.accentStyle.flickering";
+ default:
+ return name();
}
}
}
@@ -68,10 +76,14 @@ public class EntityAbilityZone extends Entity implements IEntityAdditionalSpawnD
@Override
public String toString() {
switch (this) {
- case RISING: return "ability.particleMotion.rising";
- case DRIFTING: return "ability.particleMotion.drifting";
- case SPARKS: return "ability.particleMotion.sparks";
- default: return name();
+ case RISING:
+ return "ability.particleMotion.rising";
+ case DRIFTING:
+ return "ability.particleMotion.drifting";
+ case SPARKS:
+ return "ability.particleMotion.sparks";
+ default:
+ return name();
}
}
}
@@ -174,7 +186,7 @@ public class EntityAbilityZone extends Entity implements IEntityAdditionalSpawnD
}
private EntityAbilityZone(World world, ZoneType type, EntityLivingBase owner,
- double x, double y, double z) {
+ double x, double y, double z) {
this(world);
this.zoneType = type;
this.ownerEntityId = owner.getEntityId();
@@ -184,17 +196,17 @@ public class EntityAbilityZone extends Entity implements IEntityAdditionalSpawnD
}
public static EntityAbilityZone createTrap(World world, EntityLivingBase owner,
- double x, double y, double z,
- ZoneShape shape,
- float triggerRadius, int armTime, int maxTriggers,
- int triggerCooldown, float damage, float damageRadius,
- float knockback, int durationTicks,
- int innerColor, int outerColor, boolean outerColorEnabled,
- float zoneHeight,
- float particleDensity, float particleScale,
- float animSpeed, float lightningDensity,
- boolean visible,
- List effects) {
+ double x, double y, double z,
+ ZoneShape shape,
+ float triggerRadius, int armTime, int maxTriggers,
+ int triggerCooldown, float damage, float damageRadius,
+ float knockback, int durationTicks,
+ int innerColor, int outerColor, boolean outerColorEnabled,
+ float zoneHeight,
+ float particleDensity, float particleScale,
+ float animSpeed, float lightningDensity,
+ boolean visible,
+ List effects) {
EntityAbilityZone zone = new EntityAbilityZone(world, ZoneType.TRAP, owner, x, y, z);
zone.shape = shape;
zone.radius = triggerRadius;
@@ -226,17 +238,17 @@ public class EntityAbilityZone extends Entity implements IEntityAdditionalSpawnD
}
public static EntityAbilityZone createHazard(World world, EntityLivingBase owner,
- double x, double y, double z,
- ZoneShape shape,
- float radius,
- float damagePerSecond, int damageInterval,
- boolean ignoreInvulnFrames, boolean affectsCaster,
- int durationTicks,
- int innerColor, int outerColor, boolean outerColorEnabled,
- float zoneHeight,
- float particleDensity, float particleScale,
- float animSpeed, float lightningDensity,
- List effects) {
+ double x, double y, double z,
+ ZoneShape shape,
+ float radius,
+ float damagePerSecond, int damageInterval,
+ boolean ignoreInvulnFrames, boolean affectsCaster,
+ int durationTicks,
+ int innerColor, int outerColor, boolean outerColorEnabled,
+ float zoneHeight,
+ float particleDensity, float particleScale,
+ float animSpeed, float lightningDensity,
+ List effects) {
EntityAbilityZone zone = new EntityAbilityZone(world, ZoneType.HAZARD, owner, x, y, z);
zone.shape = shape;
zone.radius = radius;
@@ -268,7 +280,8 @@ public class EntityAbilityZone extends Entity implements IEntityAdditionalSpawnD
// ═══════════════════════════════════════════════════════════════════
@Override
- protected void entityInit() {}
+ protected void entityInit() {
+ }
@Override
public void handleHealthUpdate(byte id) {
@@ -549,45 +562,133 @@ public class EntityAbilityZone extends Entity implements IEntityAdditionalSpawnD
// GETTERS FOR RENDERER
// ═══════════════════════════════════════════════════════════════════
- public ZoneType getZoneType() { return zoneType; }
- public ZoneShape getShape() { return shape; }
- public float getRadius() { return radius; }
- public int getInnerColor() { return innerColor; }
- public int getOuterColor() { return outerColor; }
- public boolean isOuterColorEnabled() { return outerColorEnabled; }
- public float getZoneHeight() { return zoneHeight; }
- public boolean isArmed() { return armed || ticksExisted >= armTime; }
- public boolean isVisible() { return visible; }
- public int getTriggerFlashTick() { return triggerFlashTick; }
- public int getDurationTicks() { return durationTicks; }
- public int getMaxTicks() { return maxTicks; }
- public float getParticleDensity() { return particleDensity; }
- public float getParticleScale() { return particleScale; }
- public float getAnimSpeed() { return animSpeed; }
- public float getLightningDensity() { return lightningDensity; }
+ public ZoneType getZoneType() {
+ return zoneType;
+ }
- public boolean isGroundFill() { return groundFill; }
- public float getGroundAlpha() { return groundAlpha; }
- public boolean isRings() { return rings; }
- public int getRingCount() { return ringCount; }
- public boolean isBorder() { return border; }
- public float getBorderSpeed() { return borderSpeed; }
- public boolean isAccents() { return accents; }
- public int getAccentStyle() { return accentStyle; }
- public boolean isLightning() { return lightning; }
- public boolean isParticles() { return particles; }
- public int getParticleMotion() { return particleMotion; }
- public String getParticleDir() { return particleDir; }
- public int getParticleSize() { return particleSize; }
- public boolean isParticleGlow() { return particleGlow; }
+ public ZoneShape getShape() {
+ return shape;
+ }
+
+ public float getRadius() {
+ return radius;
+ }
+
+ public int getInnerColor() {
+ return innerColor;
+ }
+
+ public int getOuterColor() {
+ return outerColor;
+ }
+
+ public boolean isOuterColorEnabled() {
+ return outerColorEnabled;
+ }
+
+ public float getZoneHeight() {
+ return zoneHeight;
+ }
+
+ public boolean isArmed() {
+ return armed || ticksExisted >= armTime;
+ }
+
+ public boolean isVisible() {
+ return visible;
+ }
+
+ public int getTriggerFlashTick() {
+ return triggerFlashTick;
+ }
+
+ public int getDurationTicks() {
+ return durationTicks;
+ }
+
+ public int getMaxTicks() {
+ return maxTicks;
+ }
+
+ public float getParticleDensity() {
+ return particleDensity;
+ }
+
+ public float getParticleScale() {
+ return particleScale;
+ }
+
+ public float getAnimSpeed() {
+ return animSpeed;
+ }
+
+ public float getLightningDensity() {
+ return lightningDensity;
+ }
+
+ public boolean isGroundFill() {
+ return groundFill;
+ }
+
+ public float getGroundAlpha() {
+ return groundAlpha;
+ }
+
+ public boolean isRings() {
+ return rings;
+ }
+
+ public int getRingCount() {
+ return ringCount;
+ }
+
+ public boolean isBorder() {
+ return border;
+ }
+
+ public float getBorderSpeed() {
+ return borderSpeed;
+ }
+
+ public boolean isAccents() {
+ return accents;
+ }
+
+ public int getAccentStyle() {
+ return accentStyle;
+ }
+
+ public boolean isLightning() {
+ return lightning;
+ }
+
+ public boolean isParticles() {
+ return particles;
+ }
+
+ public int getParticleMotion() {
+ return particleMotion;
+ }
+
+ public String getParticleDir() {
+ return particleDir;
+ }
+
+ public int getParticleSize() {
+ return particleSize;
+ }
+
+ public boolean isParticleGlow() {
+ return particleGlow;
+ }
public void applyVisual(boolean groundFill, float groundAlpha,
- boolean rings, int ringCount,
- boolean border, float borderSpeed,
- boolean accents, int accentStyle,
- boolean lightning,
- boolean particles, int particleMotion,
- String particleDir, int particleSize, boolean particleGlow) {
+ boolean rings, int ringCount,
+ boolean border, float borderSpeed,
+ boolean accents, int accentStyle,
+ boolean lightning,
+ boolean particles, int particleMotion,
+ String particleDir, int particleSize, boolean particleGlow) {
this.groundFill = groundFill;
this.groundAlpha = groundAlpha;
this.rings = rings;
diff --git a/src/main/java/kamkeel/npcs/entity/EntityEnergyAbility.java b/src/main/java/kamkeel/npcs/entity/EntityEnergyAbility.java
index c98fae96a..9721fb60e 100644
--- a/src/main/java/kamkeel/npcs/entity/EntityEnergyAbility.java
+++ b/src/main/java/kamkeel/npcs/entity/EntityEnergyAbility.java
@@ -30,7 +30,9 @@ public abstract class EntityEnergyAbility extends Entity implements IEntityAddit
protected int ownerEntityId = -1;
// ==================== STATE ====================
- /** The ability that spawned this entity. Transient, not saved to NBT. */
+ /**
+ * The ability that spawned this entity. Transient, not saved to NBT.
+ */
protected transient Ability sourceAbility = null;
protected boolean previewMode = false;
protected EntityLivingBase previewOwner = null;
@@ -98,59 +100,137 @@ public abstract class EntityEnergyAbility extends Entity implements IEntityAddit
return worldObj.getEntityByID(ownerEntityId);
}
- public int getOwnerEntityId() { return ownerEntityId; }
- public void setOwnerEntityId(int id) { this.ownerEntityId = id; }
+ public int getOwnerEntityId() {
+ return ownerEntityId;
+ }
+
+ public void setOwnerEntityId(int id) {
+ this.ownerEntityId = id;
+ }
// ==================== SOURCE ABILITY ====================
- public Ability getSourceAbility() { return sourceAbility; }
- public void setSourceAbility(Ability ability) { this.sourceAbility = ability; }
+ public Ability getSourceAbility() {
+ return sourceAbility;
+ }
+
+ public void setSourceAbility(Ability ability) {
+ this.sourceAbility = ability;
+ }
// ==================== PREVIEW MODE ====================
- public boolean isPreviewMode() { return previewMode; }
- public void setPreviewMode(boolean preview) { this.previewMode = preview; }
- public void setPreviewOwner(EntityLivingBase owner) { this.previewOwner = owner; }
+ public boolean isPreviewMode() {
+ return previewMode;
+ }
+
+ public void setPreviewMode(boolean preview) {
+ this.previewMode = preview;
+ }
+
+ public void setPreviewOwner(EntityLivingBase owner) {
+ this.previewOwner = owner;
+ }
// ==================== DISPLAY GETTERS & SETTERS ====================
- public EnergyDisplayData getDisplayData() { return displayData; }
- public EnergyLightningData getLightningData() { return lightningData; }
+ public EnergyDisplayData getDisplayData() {
+ return displayData;
+ }
- public int getInnerColor() { return displayData.getInnerColor(); }
- public void setInnerColor(int color) { displayData.setInnerColor(color); }
+ public EnergyLightningData getLightningData() {
+ return lightningData;
+ }
- public float getInnerAlpha() { return displayData.getInnerAlpha(); }
- public void setInnerAlpha(float alpha) { displayData.setInnerAlpha(alpha); }
+ public int getInnerColor() {
+ return displayData.getInnerColor();
+ }
- public int getOuterColor() { return displayData.getOuterColor(); }
- public void setOuterColor(int color) { displayData.setOuterColor(color); }
+ public void setInnerColor(int color) {
+ displayData.setInnerColor(color);
+ }
- public boolean isOuterColorEnabled() { return displayData.isOuterColorEnabled(); }
- public void setOuterColorEnabled(boolean enabled) { displayData.setOuterColorEnabled(enabled); }
+ public float getInnerAlpha() {
+ return displayData.getInnerAlpha();
+ }
- public float getOuterColorWidth() { return displayData.getOuterColorWidth(); }
- public void setOuterColorWidth(float width) { displayData.setOuterColorWidth(width); }
+ public void setInnerAlpha(float alpha) {
+ displayData.setInnerAlpha(alpha);
+ }
- public float getOuterColorAlpha() { return displayData.getOuterColorAlpha(); }
- public void setOuterColorAlpha(float alpha) { displayData.setOuterColorAlpha(alpha); }
+ public int getOuterColor() {
+ return displayData.getOuterColor();
+ }
- public float getRotationSpeed() { return displayData.getRotationSpeed(); }
- public void setRotationSpeed(float speed) { displayData.setRotationSpeed(speed); }
+ public void setOuterColor(int color) {
+ displayData.setOuterColor(color);
+ }
+
+ public boolean isOuterColorEnabled() {
+ return displayData.isOuterColorEnabled();
+ }
+
+ public void setOuterColorEnabled(boolean enabled) {
+ displayData.setOuterColorEnabled(enabled);
+ }
+
+ public float getOuterColorWidth() {
+ return displayData.getOuterColorWidth();
+ }
+
+ public void setOuterColorWidth(float width) {
+ displayData.setOuterColorWidth(width);
+ }
+
+ public float getOuterColorAlpha() {
+ return displayData.getOuterColorAlpha();
+ }
+
+ public void setOuterColorAlpha(float alpha) {
+ displayData.setOuterColorAlpha(alpha);
+ }
+
+ public float getRotationSpeed() {
+ return displayData.getRotationSpeed();
+ }
+
+ public void setRotationSpeed(float speed) {
+ displayData.setRotationSpeed(speed);
+ }
// ==================== LIGHTNING GETTERS & SETTERS ====================
- public boolean hasLightningEffect() { return lightningData.isLightningEffect(); }
- public void setLightningEffect(boolean enabled) { lightningData.setLightningEffect(enabled); }
+ public boolean hasLightningEffect() {
+ return lightningData.isLightningEffect();
+ }
- public float getLightningDensity() { return lightningData.getLightningDensity(); }
- public void setLightningDensity(float density) { lightningData.setLightningDensity(density); }
+ public void setLightningEffect(boolean enabled) {
+ lightningData.setLightningEffect(enabled);
+ }
- public float getLightningRadius() { return lightningData.getLightningRadius(); }
- public void setLightningRadius(float radius) { lightningData.setLightningRadius(radius); }
+ public float getLightningDensity() {
+ return lightningData.getLightningDensity();
+ }
- public int getLightningFadeTime() { return lightningData.getLightningFadeTime(); }
- public void setLightningFadeTime(int ticks) { lightningData.setLightningFadeTime(ticks); }
+ public void setLightningDensity(float density) {
+ lightningData.setLightningDensity(density);
+ }
+
+ public float getLightningRadius() {
+ return lightningData.getLightningRadius();
+ }
+
+ public void setLightningRadius(float radius) {
+ lightningData.setLightningRadius(radius);
+ }
+
+ public int getLightningFadeTime() {
+ return lightningData.getLightningFadeTime();
+ }
+
+ public void setLightningFadeTime(int ticks) {
+ lightningData.setLightningFadeTime(ticks);
+ }
// ==================== BRIGHTNESS ====================
diff --git a/src/main/java/kamkeel/npcs/entity/EntityEnergyBarrier.java b/src/main/java/kamkeel/npcs/entity/EntityEnergyBarrier.java
index c295f586d..7ff4b04c2 100644
--- a/src/main/java/kamkeel/npcs/entity/EntityEnergyBarrier.java
+++ b/src/main/java/kamkeel/npcs/entity/EntityEnergyBarrier.java
@@ -1,10 +1,6 @@
package kamkeel.npcs.entity;
-import cpw.mods.fml.relauncher.Side;
-import cpw.mods.fml.relauncher.SideOnly;
import kamkeel.npcs.controllers.data.ability.data.EnergyBarrierData;
-import kamkeel.npcs.controllers.data.ability.data.EnergyDisplayData;
-import kamkeel.npcs.controllers.data.ability.data.EnergyLightningData;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
@@ -144,6 +140,7 @@ public abstract class EntityEnergyBarrier extends EntityEnergyAbility {
* Shared barrier tick logic for onUpdate(). Handles spawned event, owner death,
* duration check, hit flash decay, and tick event.
* Call this after incrementing ticksAlive in subclass onUpdate().
+ *
* @return true if barrier died this tick (caller should return early)
*/
protected boolean updateBarrierTick() {
@@ -223,18 +220,33 @@ public abstract class EntityEnergyBarrier extends EntityEnergyAbility {
protected boolean isKnockbackTarget(EntityLivingBase entity) {
switch (barrierData.knockbackTarget) {
- case 1: return entity instanceof EntityPlayer;
- case 2: return entity instanceof EntityNPCInterface;
- default: return entity instanceof EntityPlayer || entity instanceof EntityNPCInterface;
+ case 1:
+ return entity instanceof EntityPlayer;
+ case 2:
+ return entity instanceof EntityNPCInterface;
+ default:
+ return entity instanceof EntityPlayer || entity instanceof EntityNPCInterface;
}
}
// ==================== GETTERS ====================
- public EnergyBarrierData getBarrierData() { return barrierData; }
- public float getCurrentHealth() { return currentHealth; }
- public void setCurrentHealth(float health) { this.currentHealth = health; syncHealthPercent(); }
- public int getTicksAlive() { return ticksAlive; }
+ public EnergyBarrierData getBarrierData() {
+ return barrierData;
+ }
+
+ public float getCurrentHealth() {
+ return currentHealth;
+ }
+
+ public void setCurrentHealth(float health) {
+ this.currentHealth = health;
+ syncHealthPercent();
+ }
+
+ public int getTicksAlive() {
+ return ticksAlive;
+ }
// ==================== NBT HELPERS ====================
diff --git a/src/main/java/kamkeel/npcs/entity/EntityEnergyDome.java b/src/main/java/kamkeel/npcs/entity/EntityEnergyDome.java
index d0a2a8a96..6ba436914 100644
--- a/src/main/java/kamkeel/npcs/entity/EntityEnergyDome.java
+++ b/src/main/java/kamkeel/npcs/entity/EntityEnergyDome.java
@@ -195,10 +195,21 @@ public class EntityEnergyDome extends EntityEnergyBarrier {
// ==================== GETTERS ====================
- public float getDomeRadius() { return domeRadius; }
- public void setDomeRadius(float radius) { this.domeRadius = Math.max(0.1f, radius); }
- public boolean isFollowCaster() { return followCaster; }
- public void setFollowCaster(boolean follow) { this.followCaster = follow; }
+ public float getDomeRadius() {
+ return domeRadius;
+ }
+
+ public void setDomeRadius(float radius) {
+ this.domeRadius = Math.max(0.1f, radius);
+ }
+
+ public boolean isFollowCaster() {
+ return followCaster;
+ }
+
+ public void setFollowCaster(boolean follow) {
+ this.followCaster = follow;
+ }
// ==================== NBT ====================
diff --git a/src/main/java/kamkeel/npcs/entity/EntityEnergyPanel.java b/src/main/java/kamkeel/npcs/entity/EntityEnergyPanel.java
index 909e0dda8..98145836e 100644
--- a/src/main/java/kamkeel/npcs/entity/EntityEnergyPanel.java
+++ b/src/main/java/kamkeel/npcs/entity/EntityEnergyPanel.java
@@ -343,9 +343,17 @@ public class EntityEnergyPanel extends EntityEnergyBarrier {
// ==================== GETTERS ====================
- public PanelMode getMode() { return mode; }
- public float getPanelYaw() { return panelYaw; }
- public EnergyPanelData getPanelData() { return panelData; }
+ public PanelMode getMode() {
+ return mode;
+ }
+
+ public float getPanelYaw() {
+ return panelYaw;
+ }
+
+ public EnergyPanelData getPanelData() {
+ return panelData;
+ }
// ==================== NBT ====================
diff --git a/src/main/java/kamkeel/npcs/entity/EntityEnergyProjectile.java b/src/main/java/kamkeel/npcs/entity/EntityEnergyProjectile.java
index b4e63bace..b65439f83 100644
--- a/src/main/java/kamkeel/npcs/entity/EntityEnergyProjectile.java
+++ b/src/main/java/kamkeel/npcs/entity/EntityEnergyProjectile.java
@@ -5,7 +5,13 @@ import cpw.mods.fml.relauncher.SideOnly;
import kamkeel.npcs.controllers.AbilityController;
import kamkeel.npcs.controllers.data.ability.AbilityPotionEffect;
import kamkeel.npcs.controllers.data.ability.AnchorPoint;
-import kamkeel.npcs.controllers.data.ability.data.*;
+import kamkeel.npcs.controllers.data.ability.data.EnergyAnchorData;
+import kamkeel.npcs.controllers.data.ability.data.EnergyCombatData;
+import kamkeel.npcs.controllers.data.ability.data.EnergyDisplayData;
+import kamkeel.npcs.controllers.data.ability.data.EnergyHomingData;
+import kamkeel.npcs.controllers.data.ability.data.EnergyLifespanData;
+import kamkeel.npcs.controllers.data.ability.data.EnergyLightningData;
+import kamkeel.npcs.controllers.data.ability.data.EnergyTrajectoryData;
import kamkeel.npcs.util.AnchorPointHelper;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
@@ -37,7 +43,7 @@ import java.util.Map;
* Base class for all ability projectiles (Orb, Disc, Beam, Laser, Slicer).
* Provides common functionality for combat, effects, homing, and interpolation.
* Extends EntityEnergyAbility for shared visual/owner/charging state.
- *
+ *
* Design inspired by LouisXIV's energy attack system.
*/
public abstract class EntityEnergyProjectile extends EntityEnergyAbility {
@@ -274,13 +280,14 @@ public abstract class EntityEnergyProjectile extends EntityEnergyAbility {
/**
* Check if projectile has exceeded max distance.
+ *
* @return true if should die
*/
protected boolean checkMaxDistance() {
double distTraveled = Math.sqrt(
(posX - startX) * (posX - startX) +
- (posY - startY) * (posY - startY) +
- (posZ - startZ) * (posZ - startZ)
+ (posY - startY) * (posY - startY) +
+ (posZ - startZ) * (posZ - startZ)
);
return distTraveled >= getMaxDistance();
}
@@ -295,6 +302,7 @@ public abstract class EntityEnergyProjectile extends EntityEnergyAbility {
/**
* Check for collision with energy barrier entities.
* Barriers only block incoming projectiles from enemies.
+ *
* @return true if projectile was absorbed (caller should stop processing)
*/
protected boolean checkBarrierCollision() {
@@ -455,8 +463,8 @@ public abstract class EntityEnergyProjectile extends EntityEnergyAbility {
double dist = Math.sqrt(
Math.pow(target.posX - posX, 2) +
- Math.pow(target.posY - posY, 2) +
- Math.pow(target.posZ - posZ, 2)
+ Math.pow(target.posY - posY, 2) +
+ Math.pow(target.posZ - posZ, 2)
);
float radius = getExplosionRadius();
@@ -518,7 +526,7 @@ public abstract class EntityEnergyProjectile extends EntityEnergyAbility {
* Update during charging state - grow size and follow anchor.
* Default implementation grows {@code size} from 0 to {@code targetSize}.
* Override in subclasses for type-specific charging (Disc, Beam).
- *
+ *
* Note: Owner death checks are handled by onUpdate() before this is called.
*/
protected void updateCharging() {
@@ -580,7 +588,7 @@ public abstract class EntityEnergyProjectile extends EntityEnergyAbility {
* Call from subclass constructors after initProjectile().
*/
protected void calculateInitialVelocity(EntityLivingBase owner, EntityLivingBase target,
- double x, double y, double z) {
+ double x, double y, double z) {
if (target != null) {
double dx = target.posX - x;
double dy = (target.posY + target.getEyeHeight()) - y;
@@ -701,7 +709,10 @@ public abstract class EntityEnergyProjectile extends EntityEnergyAbility {
// ==================== VISUAL GETTERS & SETTERS ====================
- public float getSize() { return size; }
+ public float getSize() {
+ return size;
+ }
+
public void setProjectileSize(float size) {
this.size = size;
this.renderCurrentSize = size;
@@ -738,64 +749,147 @@ public abstract class EntityEnergyProjectile extends EntityEnergyAbility {
// ==================== LIFESPAN GETTERS & SETTERS ====================
- public float getMaxDistance() { return lifespanData.getMaxDistance(); }
- public void setMaxDistance(float distance) { lifespanData.setMaxDistance(distance); }
+ public float getMaxDistance() {
+ return lifespanData.getMaxDistance();
+ }
- public int getMaxLifetime() { return lifespanData.getMaxLifetime(); }
- public void setMaxLifetime(int ticks) { lifespanData.setMaxLifetime(ticks); }
+ public void setMaxDistance(float distance) {
+ lifespanData.setMaxDistance(distance);
+ }
+
+ public int getMaxLifetime() {
+ return lifespanData.getMaxLifetime();
+ }
+
+ public void setMaxLifetime(int ticks) {
+ lifespanData.setMaxLifetime(ticks);
+ }
// ==================== COMBAT GETTERS & SETTERS ====================
- public float getDamage() { return combatData.getDamage(); }
- public void setCombatDamage(float damage) { combatData.setDamage(damage); }
+ public float getDamage() {
+ return combatData.getDamage();
+ }
- public float getKnockback() { return combatData.knockback; }
- public void setCombatKnockback(float knockback) { combatData.setKnockback(knockback); }
+ public void setCombatDamage(float damage) {
+ combatData.setDamage(damage);
+ }
- public float getKnockbackUp() { return combatData.knockbackUp; }
- public void setCombatKnockbackUp(float knockbackUp) { combatData.setKnockbackUp(knockbackUp); }
+ public float getKnockback() {
+ return combatData.knockback;
+ }
- public boolean isExplosive() { return combatData.isExplosive(); }
- public void setExplosive(boolean explosive) { combatData.setExplosive(explosive); }
+ public void setCombatKnockback(float knockback) {
+ combatData.setKnockback(knockback);
+ }
- public float getExplosionRadius() { return combatData.explosionRadius; }
- public void setExplosionRadius(float radius) { combatData.setExplosionRadius(radius); }
+ public float getKnockbackUp() {
+ return combatData.knockbackUp;
+ }
- public float getExplosionDamageFalloff() { return combatData.explosionDamageFalloff; }
- public void setExplosionDamageFalloff(float falloff) { combatData.setExplosionDamageFalloff(falloff); }
+ public void setCombatKnockbackUp(float knockbackUp) {
+ combatData.setKnockbackUp(knockbackUp);
+ }
+
+ public boolean isExplosive() {
+ return combatData.isExplosive();
+ }
+
+ public void setExplosive(boolean explosive) {
+ combatData.setExplosive(explosive);
+ }
+
+ public float getExplosionRadius() {
+ return combatData.explosionRadius;
+ }
+
+ public void setExplosionRadius(float radius) {
+ combatData.setExplosionRadius(radius);
+ }
+
+ public float getExplosionDamageFalloff() {
+ return combatData.explosionDamageFalloff;
+ }
+
+ public void setExplosionDamageFalloff(float falloff) {
+ combatData.setExplosionDamageFalloff(falloff);
+ }
// ==================== HOMING GETTERS & SETTERS ====================
- public boolean isHoming() { return homingData.isHoming(); }
- public void setHomingEnabled(boolean homing) { homingData.setHoming(homing); }
+ public boolean isHoming() {
+ return homingData.isHoming();
+ }
- public float getHomingStrength() { return homingData.getHomingStrength(); }
- public void setHomingStrength(float strength) { homingData.setHomingStrength(strength); }
+ public void setHomingEnabled(boolean homing) {
+ homingData.setHoming(homing);
+ }
- public float getHomingRange() { return homingData.getHomingRange(); }
- public void setHomingRange(float range) { homingData.setHomingRange(range); }
+ public float getHomingStrength() {
+ return homingData.getHomingStrength();
+ }
+
+ public void setHomingStrength(float strength) {
+ homingData.setHomingStrength(strength);
+ }
+
+ public float getHomingRange() {
+ return homingData.getHomingRange();
+ }
+
+ public void setHomingRange(float range) {
+ homingData.setHomingRange(range);
+ }
// ==================== SPEED & ANCHOR GETTERS & SETTERS ====================
- public float getSpeed() { return homingData.getSpeed(); }
- public void setSpeed(float speed) { homingData.setSpeed(speed); }
+ public float getSpeed() {
+ return homingData.getSpeed();
+ }
- public AnchorPoint getAnchorPoint() { return anchorData.getAnchorPoint(); }
+ public void setSpeed(float speed) {
+ homingData.setSpeed(speed);
+ }
- public int getAnchor() { return anchorData.getAnchor(); }
- public float getAnchorOffsetX() { return anchorData.getAnchorOffsetX(); }
- public float getAnchorOffsetY() { return anchorData.getAnchorOffsetY(); }
- public float getAnchorOffsetZ() { return anchorData.getAnchorOffsetZ(); }
+ public AnchorPoint getAnchorPoint() {
+ return anchorData.getAnchorPoint();
+ }
+
+ public int getAnchor() {
+ return anchorData.getAnchor();
+ }
+
+ public float getAnchorOffsetX() {
+ return anchorData.getAnchorOffsetX();
+ }
+
+ public float getAnchorOffsetY() {
+ return anchorData.getAnchorOffsetY();
+ }
+
+ public float getAnchorOffsetZ() {
+ return anchorData.getAnchorOffsetZ();
+ }
// ==================== MOVEMENT GETTERS ====================
- public double getStartX() { return startX; }
- public double getStartY() { return startY; }
- public double getStartZ() { return startZ; }
+ public double getStartX() {
+ return startX;
+ }
+
+ public double getStartY() {
+ return startY;
+ }
+
+ public double getStartZ() {
+ return startZ;
+ }
// ==================== STATE GETTERS ====================
- public boolean getHasHit() { return hasHit; }
+ public boolean getHasHit() {
+ return hasHit;
+ }
// ==================== NBT ====================
diff --git a/src/main/java/kamkeel/npcs/entity/EntityEnergySlicer.java b/src/main/java/kamkeel/npcs/entity/EntityEnergySlicer.java
index c76fc7bad..34fc986e6 100644
--- a/src/main/java/kamkeel/npcs/entity/EntityEnergySlicer.java
+++ b/src/main/java/kamkeel/npcs/entity/EntityEnergySlicer.java
@@ -1,6 +1,12 @@
package kamkeel.npcs.entity;
-import kamkeel.npcs.controllers.data.ability.data.*;
+import kamkeel.npcs.controllers.data.ability.data.EnergyAnchorData;
+import kamkeel.npcs.controllers.data.ability.data.EnergyCombatData;
+import kamkeel.npcs.controllers.data.ability.data.EnergyDisplayData;
+import kamkeel.npcs.controllers.data.ability.data.EnergyHomingData;
+import kamkeel.npcs.controllers.data.ability.data.EnergyLifespanData;
+import kamkeel.npcs.controllers.data.ability.data.EnergyLightningData;
+import kamkeel.npcs.controllers.data.ability.data.EnergyTrajectoryData;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.nbt.NBTTagCompound;
@@ -293,14 +299,29 @@ public class EntityEnergySlicer extends EntityEnergyProjectile {
// ==================== GETTERS ====================
- public float getSliceWidth() { return sliceWidth; }
- public void setSliceWidth(float width) { this.sliceWidth = width; }
+ public float getSliceWidth() {
+ return sliceWidth;
+ }
- public float getSliceThickness() { return sliceThickness; }
- public void setSliceThickness(float thickness) { this.sliceThickness = thickness; }
+ public void setSliceWidth(float width) {
+ this.sliceWidth = width;
+ }
- public boolean isPiercing() { return piercing; }
- public void setPiercing(boolean piercing) { this.piercing = piercing; }
+ public float getSliceThickness() {
+ return sliceThickness;
+ }
+
+ public void setSliceThickness(float thickness) {
+ this.sliceThickness = thickness;
+ }
+
+ public boolean isPiercing() {
+ return piercing;
+ }
+
+ public void setPiercing(boolean piercing) {
+ this.piercing = piercing;
+ }
// ==================== NBT ====================
diff --git a/src/main/java/kamkeel/npcs/network/PacketHandler.java b/src/main/java/kamkeel/npcs/network/PacketHandler.java
index eca69684d..c3c555d48 100644
--- a/src/main/java/kamkeel/npcs/network/PacketHandler.java
+++ b/src/main/java/kamkeel/npcs/network/PacketHandler.java
@@ -28,8 +28,6 @@ import kamkeel.npcs.network.packets.data.UpdateAnimationsPacket;
import kamkeel.npcs.network.packets.data.VillagerListPacket;
import kamkeel.npcs.network.packets.data.ability.PlayerAbilityStatePacket;
import kamkeel.npcs.network.packets.data.ability.PlayerAbilitySyncPacket;
-import kamkeel.npcs.network.packets.data.telegraph.TelegraphRemovePacket;
-import kamkeel.npcs.network.packets.data.telegraph.TelegraphSpawnPacket;
import kamkeel.npcs.network.packets.data.gui.GuiClosePacket;
import kamkeel.npcs.network.packets.data.gui.GuiErrorPacket;
import kamkeel.npcs.network.packets.data.gui.GuiOpenBookPacket;
@@ -53,6 +51,9 @@ import kamkeel.npcs.network.packets.data.npc.WeaponNpcPacket;
import kamkeel.npcs.network.packets.data.script.ScriptOverlayClosePacket;
import kamkeel.npcs.network.packets.data.script.ScriptOverlayDataPacket;
import kamkeel.npcs.network.packets.data.script.ScriptedParticlePacket;
+import kamkeel.npcs.network.packets.data.telegraph.TelegraphRemovePacket;
+import kamkeel.npcs.network.packets.data.telegraph.TelegraphSpawnPacket;
+import kamkeel.npcs.network.packets.player.AuctionActionPacket;
import kamkeel.npcs.network.packets.player.BankActionPacket;
import kamkeel.npcs.network.packets.player.CheckPlayerValue;
import kamkeel.npcs.network.packets.player.CompanionActionPacket;
@@ -61,7 +62,6 @@ import kamkeel.npcs.network.packets.player.FollowerPacket;
import kamkeel.npcs.network.packets.player.GetNPCRole;
import kamkeel.npcs.network.packets.player.GetTraderData;
import kamkeel.npcs.network.packets.player.InputDevicePacket;
-import kamkeel.npcs.network.packets.player.AuctionActionPacket;
import kamkeel.npcs.network.packets.player.MailActionPacket;
import kamkeel.npcs.network.packets.player.SaveBookPacket;
import kamkeel.npcs.network.packets.player.SaveSignPacket;
@@ -94,14 +94,14 @@ import kamkeel.npcs.network.packets.request.TraderMarketSavePacket;
import kamkeel.npcs.network.packets.request.ability.AbilitiesGetAllPacket;
import kamkeel.npcs.network.packets.request.ability.AbilitiesNpcGetPacket;
import kamkeel.npcs.network.packets.request.ability.AbilitiesNpcSavePacket;
-import kamkeel.npcs.network.packets.request.ability.CustomAbilitiesGetPacket;
-import kamkeel.npcs.network.packets.request.ability.CustomAbilityGetPacket;
-import kamkeel.npcs.network.packets.request.ability.CustomAbilityRemovePacket;
import kamkeel.npcs.network.packets.request.ability.BuiltInAbilityGetPacket;
import kamkeel.npcs.network.packets.request.ability.ChainedAbilitiesGetPacket;
import kamkeel.npcs.network.packets.request.ability.ChainedAbilityGetPacket;
import kamkeel.npcs.network.packets.request.ability.ChainedAbilityRemovePacket;
import kamkeel.npcs.network.packets.request.ability.ChainedAbilitySavePacket;
+import kamkeel.npcs.network.packets.request.ability.CustomAbilitiesGetPacket;
+import kamkeel.npcs.network.packets.request.ability.CustomAbilityGetPacket;
+import kamkeel.npcs.network.packets.request.ability.CustomAbilityRemovePacket;
import kamkeel.npcs.network.packets.request.ability.CustomAbilitySavePacket;
import kamkeel.npcs.network.packets.request.animation.AnimationGetPacket;
import kamkeel.npcs.network.packets.request.animation.AnimationRemovePacket;
@@ -116,8 +116,8 @@ import kamkeel.npcs.network.packets.request.clone.CloneAllTagsPacket;
import kamkeel.npcs.network.packets.request.clone.CloneAllTagsShortPacket;
import kamkeel.npcs.network.packets.request.clone.CloneFolderCrudPacket;
import kamkeel.npcs.network.packets.request.clone.CloneFolderListPacket;
-import kamkeel.npcs.network.packets.request.clone.CloneMovePacket;
import kamkeel.npcs.network.packets.request.clone.CloneListPacket;
+import kamkeel.npcs.network.packets.request.clone.CloneMovePacket;
import kamkeel.npcs.network.packets.request.clone.ClonePreSavePacket;
import kamkeel.npcs.network.packets.request.clone.CloneRemovePacket;
import kamkeel.npcs.network.packets.request.clone.CloneSavePacket;
diff --git a/src/main/java/kamkeel/npcs/network/packets/data/LoginPacket.java b/src/main/java/kamkeel/npcs/network/packets/data/LoginPacket.java
index 75e0c40ae..da9eb9aa2 100644
--- a/src/main/java/kamkeel/npcs/network/packets/data/LoginPacket.java
+++ b/src/main/java/kamkeel/npcs/network/packets/data/LoginPacket.java
@@ -15,8 +15,8 @@ import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.nbt.NBTTagCompound;
import noppes.npcs.client.AuctionClientConfig;
import noppes.npcs.client.ClientCacheHandler;
-import noppes.npcs.config.ConfigMain;
import noppes.npcs.client.ScriptClientConfig;
+import noppes.npcs.config.ConfigMain;
import noppes.npcs.controllers.AuctionConfigSync;
import noppes.npcs.controllers.ScriptConfigSync;
diff --git a/src/main/java/kamkeel/npcs/network/packets/data/ability/PlayerAbilityStatePacket.java b/src/main/java/kamkeel/npcs/network/packets/data/ability/PlayerAbilityStatePacket.java
index 03c0b82b4..6de87cb22 100644
--- a/src/main/java/kamkeel/npcs/network/packets/data/ability/PlayerAbilityStatePacket.java
+++ b/src/main/java/kamkeel/npcs/network/packets/data/ability/PlayerAbilityStatePacket.java
@@ -16,7 +16,7 @@ import java.io.IOException;
/**
* Lightweight packet syncing ability lock state from server to client.
* Sent every tick during ability execution when flags change, and once when ability ends.
- *
+ *
* Flags byte layout:
* bit 0: movement locked (suppress WASD, zero motion)
* bit 1: rotation locked (freeze yaw/pitch)
diff --git a/src/main/java/kamkeel/npcs/network/packets/player/AuctionActionPacket.java b/src/main/java/kamkeel/npcs/network/packets/player/AuctionActionPacket.java
index b15ff8992..5eed2aa93 100644
--- a/src/main/java/kamkeel/npcs/network/packets/player/AuctionActionPacket.java
+++ b/src/main/java/kamkeel/npcs/network/packets/player/AuctionActionPacket.java
@@ -40,7 +40,8 @@ public class AuctionActionPacket extends AbstractPacket {
private long amount;
private NBTTagCompound data;
- public AuctionActionPacket() {}
+ public AuctionActionPacket() {
+ }
private AuctionActionPacket(Action action) {
this.action = action;
@@ -58,7 +59,9 @@ public class AuctionActionPacket extends AbstractPacket {
}
@Override
- public boolean needsNPC() { return false; } // Allow opening via command without NPC
+ public boolean needsNPC() {
+ return false;
+ } // Allow opening via command without NPC
// =========================================
// Client-side static methods
@@ -117,7 +120,9 @@ public class AuctionActionPacket extends AbstractPacket {
PacketClient.sendClient(packet);
}
- /** Request listings from server with filter and page */
+ /**
+ * Request listings from server with filter and page
+ */
@SideOnly(Side.CLIENT)
public static void requestListings(AuctionFilter filter, int page) {
AuctionActionPacket packet = new AuctionActionPacket(Action.RequestListings);
@@ -131,10 +136,14 @@ public class AuctionActionPacket extends AbstractPacket {
// =========================================
@Override
- public Enum getType() { return EnumPlayerPacket.AuctionAction; }
+ public Enum getType() {
+ return EnumPlayerPacket.AuctionAction;
+ }
@Override
- public PacketChannel getChannel() { return PacketHandler.PLAYER_PACKET; }
+ public PacketChannel getChannel() {
+ return PacketHandler.PLAYER_PACKET;
+ }
@Override
@SideOnly(Side.CLIENT)
@@ -291,7 +300,10 @@ public class AuctionActionPacket extends AbstractPacket {
long startingPrice = in.readLong();
String buyoutStr = ByteBufUtils.readString(in);
long buyoutPrice = 0;
- try { buyoutPrice = Long.parseLong(buyoutStr); } catch (NumberFormatException ignored) {}
+ try {
+ buyoutPrice = Long.parseLong(buyoutStr);
+ } catch (NumberFormatException ignored) {
+ }
NBTTagCompound itemNBT = ByteBufUtils.readNBT(in);
if (itemNBT == null) return "No item data received.";
@@ -329,7 +341,9 @@ public class AuctionActionPacket extends AbstractPacket {
}
}
- /** Send full trades data to player (listings, bids, claims) */
+ /**
+ * Send full trades data to player (listings, bids, claims)
+ */
private void sendTradesData(EntityPlayerMP player, AuctionController controller) {
NBTTagCompound response = new NBTTagCompound();
response.setBoolean("TradesData", true);
diff --git a/src/main/java/kamkeel/npcs/network/packets/request/ability/BuiltInAbilityGetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/ability/BuiltInAbilityGetPacket.java
index 14f22d983..67a8f8241 100644
--- a/src/main/java/kamkeel/npcs/network/packets/request/ability/BuiltInAbilityGetPacket.java
+++ b/src/main/java/kamkeel/npcs/network/packets/request/ability/BuiltInAbilityGetPacket.java
@@ -3,8 +3,8 @@ package kamkeel.npcs.network.packets.request.ability;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import io.netty.buffer.ByteBuf;
-import kamkeel.npcs.controllers.data.ability.Ability;
import kamkeel.npcs.controllers.AbilityController;
+import kamkeel.npcs.controllers.data.ability.Ability;
import kamkeel.npcs.network.AbstractPacket;
import kamkeel.npcs.network.PacketChannel;
import kamkeel.npcs.network.PacketHandler;
diff --git a/src/main/java/kamkeel/npcs/network/packets/request/ability/ChainedAbilityGetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/ability/ChainedAbilityGetPacket.java
index 9772bc4ad..da8ca9d9f 100644
--- a/src/main/java/kamkeel/npcs/network/packets/request/ability/ChainedAbilityGetPacket.java
+++ b/src/main/java/kamkeel/npcs/network/packets/request/ability/ChainedAbilityGetPacket.java
@@ -3,8 +3,8 @@ package kamkeel.npcs.network.packets.request.ability;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import io.netty.buffer.ByteBuf;
-import kamkeel.npcs.controllers.data.ability.ChainedAbility;
import kamkeel.npcs.controllers.AbilityController;
+import kamkeel.npcs.controllers.data.ability.ChainedAbility;
import kamkeel.npcs.network.AbstractPacket;
import kamkeel.npcs.network.PacketChannel;
import kamkeel.npcs.network.PacketHandler;
diff --git a/src/main/java/kamkeel/npcs/network/packets/request/ability/ChainedAbilitySavePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/ability/ChainedAbilitySavePacket.java
index aaaf8d6a9..ca9925bbf 100644
--- a/src/main/java/kamkeel/npcs/network/packets/request/ability/ChainedAbilitySavePacket.java
+++ b/src/main/java/kamkeel/npcs/network/packets/request/ability/ChainedAbilitySavePacket.java
@@ -3,8 +3,8 @@ package kamkeel.npcs.network.packets.request.ability;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import io.netty.buffer.ByteBuf;
-import kamkeel.npcs.controllers.data.ability.ChainedAbility;
import kamkeel.npcs.controllers.AbilityController;
+import kamkeel.npcs.controllers.data.ability.ChainedAbility;
import kamkeel.npcs.network.AbstractPacket;
import kamkeel.npcs.network.PacketChannel;
import kamkeel.npcs.network.PacketHandler;
diff --git a/src/main/java/kamkeel/npcs/network/packets/request/ability/CustomAbilityGetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/ability/CustomAbilityGetPacket.java
index e53d53d49..b4588935b 100644
--- a/src/main/java/kamkeel/npcs/network/packets/request/ability/CustomAbilityGetPacket.java
+++ b/src/main/java/kamkeel/npcs/network/packets/request/ability/CustomAbilityGetPacket.java
@@ -3,8 +3,8 @@ package kamkeel.npcs.network.packets.request.ability;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import io.netty.buffer.ByteBuf;
-import kamkeel.npcs.controllers.data.ability.Ability;
import kamkeel.npcs.controllers.AbilityController;
+import kamkeel.npcs.controllers.data.ability.Ability;
import kamkeel.npcs.network.AbstractPacket;
import kamkeel.npcs.network.PacketChannel;
import kamkeel.npcs.network.PacketHandler;
diff --git a/src/main/java/kamkeel/npcs/network/packets/request/ability/CustomAbilitySavePacket.java b/src/main/java/kamkeel/npcs/network/packets/request/ability/CustomAbilitySavePacket.java
index b1662e246..f360b0eff 100644
--- a/src/main/java/kamkeel/npcs/network/packets/request/ability/CustomAbilitySavePacket.java
+++ b/src/main/java/kamkeel/npcs/network/packets/request/ability/CustomAbilitySavePacket.java
@@ -3,8 +3,8 @@ package kamkeel.npcs.network.packets.request.ability;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import io.netty.buffer.ByteBuf;
-import kamkeel.npcs.controllers.data.ability.Ability;
import kamkeel.npcs.controllers.AbilityController;
+import kamkeel.npcs.controllers.data.ability.Ability;
import kamkeel.npcs.network.AbstractPacket;
import kamkeel.npcs.network.PacketChannel;
import kamkeel.npcs.network.PacketHandler;
diff --git a/src/main/java/kamkeel/npcs/network/packets/request/animation/BuiltInAnimationGetPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/animation/BuiltInAnimationGetPacket.java
index e214689d8..d25935892 100644
--- a/src/main/java/kamkeel/npcs/network/packets/request/animation/BuiltInAnimationGetPacket.java
+++ b/src/main/java/kamkeel/npcs/network/packets/request/animation/BuiltInAnimationGetPacket.java
@@ -15,7 +15,6 @@ import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.nbt.NBTTagCompound;
import noppes.npcs.controllers.AnimationController;
-import noppes.npcs.controllers.data.Animation;
import noppes.npcs.controllers.data.BuiltInAnimation;
import java.io.IOException;
diff --git a/src/main/java/kamkeel/npcs/network/packets/request/clone/CloneTagListPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/clone/CloneTagListPacket.java
index 926c5519c..158896eaf 100644
--- a/src/main/java/kamkeel/npcs/network/packets/request/clone/CloneTagListPacket.java
+++ b/src/main/java/kamkeel/npcs/network/packets/request/clone/CloneTagListPacket.java
@@ -10,10 +10,10 @@ import kamkeel.npcs.network.PacketUtil;
import kamkeel.npcs.network.enums.EnumItemPacketType;
import kamkeel.npcs.network.enums.EnumRequestPacket;
import kamkeel.npcs.network.packets.data.large.GuiDataPacket;
+import kamkeel.npcs.util.ByteBufUtils;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.nbt.NBTTagCompound;
-import kamkeel.npcs.util.ByteBufUtils;
import noppes.npcs.controllers.ServerTagMapController;
import noppes.npcs.controllers.data.TagMap;
diff --git a/src/main/java/kamkeel/npcs/network/packets/request/script/ScriptFilesPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/script/ScriptFilesPacket.java
index d025fcb26..8930fabc3 100644
--- a/src/main/java/kamkeel/npcs/network/packets/request/script/ScriptFilesPacket.java
+++ b/src/main/java/kamkeel/npcs/network/packets/request/script/ScriptFilesPacket.java
@@ -1,7 +1,5 @@
package kamkeel.npcs.network.packets.request.script;
-import cpw.mods.fml.relauncher.Side;
-import cpw.mods.fml.relauncher.SideOnly;
import io.netty.buffer.ByteBuf;
import kamkeel.npcs.network.AbstractPacket;
import kamkeel.npcs.network.PacketChannel;
diff --git a/src/main/java/kamkeel/npcs/util/AnchorPointHelper.java b/src/main/java/kamkeel/npcs/util/AnchorPointHelper.java
index 3c9b10f1d..6a1a17c76 100644
--- a/src/main/java/kamkeel/npcs/util/AnchorPointHelper.java
+++ b/src/main/java/kamkeel/npcs/util/AnchorPointHelper.java
@@ -411,6 +411,7 @@ public class AnchorPointHelper {
/**
* Rotate an offset vector by the entity's body yaw so offsets are entity-relative.
* +X = entity's right, +Y = up, +Z = entity's forward.
+ *
* @param bodyYawRad body yaw in radians
*/
private static Vec3 rotateOffsetByYaw(double offsetX, double offsetY, double offsetZ, float bodyYawRad) {
@@ -444,19 +445,19 @@ public class AnchorPointHelper {
* Apply FULL_MODEL rotation to a world-space offset from entity position.
* Converts the offset to model space, applies FULL_MODEL rotation and pivots,
* then converts back to world space.
- *
+ *
* The rendering pipeline is: entity_pos * body_yaw * scale(-1,-1,1) * FULL_MODEL * parts
* Combined body_yaw + scale maps model space to world space:
- * worldX = mx*cos(yaw) + mz*sin(yaw)
- * worldY = -my (model Y-down → world Y-up)
- * worldZ = mx*sin(yaw) - mz*cos(yaw)
+ * worldX = mx*cos(yaw) + mz*sin(yaw)
+ * worldY = -my (model Y-down → world Y-up)
+ * worldZ = mx*sin(yaw) - mz*cos(yaw)
* This transform is its own inverse for X,Z.
- *
+ *
* FULL_MODEL rotation order matches renderer: vertex sees Z, then Y, then X.
*/
private static Vec3 applyFullModelToWorldOffset(FramePart fullModel, EntityLivingBase entity,
- double worldDX, double worldDY, double worldDZ,
- float bodyYaw, float scale) {
+ double worldDX, double worldDY, double worldDZ,
+ float bodyYaw, float scale) {
float[] rotations = getRotations(fullModel, entity);
float[] pivots = getPivots(fullModel, entity);
diff --git a/src/main/java/kamkeel/npcs/util/BukkitUtil.java b/src/main/java/kamkeel/npcs/util/BukkitUtil.java
index 29f4a522f..1252fc67c 100644
--- a/src/main/java/kamkeel/npcs/util/BukkitUtil.java
+++ b/src/main/java/kamkeel/npcs/util/BukkitUtil.java
@@ -98,6 +98,7 @@ public class BukkitUtil {
/**
* Checks if a specific Bukkit plugin is enabled.
+ *
* @param pluginName the plugin name to check
* @return true if the plugin is enabled
*/
@@ -115,6 +116,7 @@ public class BukkitUtil {
/**
* Gets a Bukkit OfflinePlayer by name.
+ *
* @param playerName the player name
* @return the OfflinePlayer object, or null if not available
*/
@@ -131,6 +133,7 @@ public class BukkitUtil {
/**
* Gets a Bukkit Player by name (online players only).
+ *
* @param playerName the player name
* @return the Player object, or null if not online or not available
*/
@@ -147,6 +150,7 @@ public class BukkitUtil {
/**
* Gets a service provider from Bukkit's ServicesManager.
+ *
* @param serviceClass the service class to get
* @return the service provider, or null if not available
*/
diff --git a/src/main/java/kamkeel/npcs/util/Register.java b/src/main/java/kamkeel/npcs/util/Register.java
index 4a0d2bb78..5c28d5e1d 100644
--- a/src/main/java/kamkeel/npcs/util/Register.java
+++ b/src/main/java/kamkeel/npcs/util/Register.java
@@ -1,13 +1,19 @@
package kamkeel.npcs.util;
-import kamkeel.npcs.controllers.data.ability.Ability;
import kamkeel.npcs.controllers.AbilityController;
+import kamkeel.npcs.controllers.data.ability.Ability;
import kamkeel.npcs.controllers.data.ability.AbilityVariant;
import noppes.npcs.LogWriter;
import noppes.npcs.controllers.AnimationController;
import noppes.npcs.controllers.data.Animation;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
import java.util.function.Consumer;
import java.util.function.Supplier;
diff --git a/src/main/java/kamkeel/npcs/util/VaultUtil.java b/src/main/java/kamkeel/npcs/util/VaultUtil.java
index c25ea3f3a..47e294e57 100644
--- a/src/main/java/kamkeel/npcs/util/VaultUtil.java
+++ b/src/main/java/kamkeel/npcs/util/VaultUtil.java
@@ -178,6 +178,7 @@ public class VaultUtil {
/**
* Checks if a player has an account in the economy system.
+ *
* @param player the player to check
* @return true if the player has an account
*/
@@ -187,6 +188,7 @@ public class VaultUtil {
/**
* Checks if a player has an account in the economy system.
+ *
* @param playerName the player name to check
* @return true if the player has an account
*/
@@ -207,6 +209,7 @@ public class VaultUtil {
/**
* Gets the balance of a player.
+ *
* @param player the player
* @return the player's balance, or 0 if not available
*/
@@ -216,6 +219,7 @@ public class VaultUtil {
/**
* Gets the balance of a player by name.
+ *
* @param playerName the player name
* @return the player's balance, or 0 if not available
*/
@@ -236,6 +240,7 @@ public class VaultUtil {
/**
* Checks if a player has at least the specified amount.
+ *
* @param player the player
* @param amount the amount to check
* @return true if the player has at least the specified amount
@@ -246,8 +251,9 @@ public class VaultUtil {
/**
* Checks if a player has at least the specified amount.
+ *
* @param playerName the player name
- * @param amount the amount to check
+ * @param amount the amount to check
* @return true if the player has at least the specified amount
*/
public static boolean has(String playerName, double amount) {
@@ -267,6 +273,7 @@ public class VaultUtil {
/**
* Withdraws money from a player's account.
+ *
* @param player the player
* @param amount the amount to withdraw
* @return true if the transaction was successful
@@ -277,8 +284,9 @@ public class VaultUtil {
/**
* Withdraws money from a player's account.
+ *
* @param playerName the player name
- * @param amount the amount to withdraw
+ * @param amount the amount to withdraw
* @return true if the transaction was successful
*/
public static boolean withdrawMoney(String playerName, double amount) {
@@ -301,6 +309,7 @@ public class VaultUtil {
/**
* Adds money to a player's account (deposit).
+ *
* @param player the player
* @param amount the amount to add
* @return true if the transaction was successful
@@ -311,8 +320,9 @@ public class VaultUtil {
/**
* Adds money to a player's account (deposit).
+ *
* @param playerName the player name
- * @param amount the amount to add
+ * @param amount the amount to add
* @return true if the transaction was successful
*/
public static boolean addMoney(String playerName, double amount) {
@@ -336,6 +346,7 @@ public class VaultUtil {
/**
* Sets a player's balance to the specified amount.
* This withdraws all money first, then deposits the new amount.
+ *
* @param player the player
* @param amount the new balance
* @return true if the transaction was successful
@@ -347,8 +358,9 @@ public class VaultUtil {
/**
* Sets a player's balance to the specified amount.
* This withdraws all money first, then deposits the new amount.
+ *
* @param playerName the player name
- * @param amount the new balance
+ * @param amount the new balance
* @return true if the transaction was successful
*/
public static boolean setBalance(String playerName, double amount) {
@@ -368,6 +380,7 @@ public class VaultUtil {
/**
* Formats an amount according to the economy plugin's settings.
+ *
* @param amount the amount to format
* @return the formatted string, or the raw number as string if not available
*/
@@ -384,6 +397,7 @@ public class VaultUtil {
/**
* Gets the plural currency name (e.g., "Dollars").
+ *
* @return the plural currency name, or "coins" if not available
*/
public static String getCurrencyNamePlural() {
@@ -399,6 +413,7 @@ public class VaultUtil {
/**
* Gets the singular currency name (e.g., "Dollar").
+ *
* @return the singular currency name, or "coin" if not available
*/
public static String getCurrencyNameSingular() {
@@ -414,6 +429,7 @@ public class VaultUtil {
/**
* Creates an account for the player if one doesn't exist.
+ *
* @param player the player
* @return true if the account was created or already exists
*/
@@ -423,6 +439,7 @@ public class VaultUtil {
/**
* Creates an account for the player if one doesn't exist.
+ *
* @param playerName the player name
* @return true if the account was created or already exists
*/
@@ -459,6 +476,7 @@ public class VaultUtil {
/**
* Gets a list of all bank names.
+ *
* @return list of bank names, or empty list if not available
*/
@SuppressWarnings("unchecked")
@@ -475,6 +493,7 @@ public class VaultUtil {
/**
* Gets the balance of a bank.
+ *
* @param bankName the bank name
* @return the bank balance, or 0 if not available
*/
@@ -492,8 +511,9 @@ public class VaultUtil {
/**
* Checks if a bank has at least the specified amount.
+ *
* @param bankName the bank name
- * @param amount the amount to check
+ * @param amount the amount to check
* @return true if the bank has at least the specified amount
*/
public static boolean bankHas(String bankName, double amount) {
@@ -510,8 +530,9 @@ public class VaultUtil {
/**
* Withdraws money from a bank.
+ *
* @param bankName the bank name
- * @param amount the amount to withdraw
+ * @param amount the amount to withdraw
* @return true if the transaction was successful
*/
public static boolean bankWithdraw(String bankName, double amount) {
@@ -528,8 +549,9 @@ public class VaultUtil {
/**
* Deposits money into a bank.
+ *
* @param bankName the bank name
- * @param amount the amount to deposit
+ * @param amount the amount to deposit
* @return true if the transaction was successful
*/
public static boolean bankDeposit(String bankName, double amount) {
@@ -546,8 +568,9 @@ public class VaultUtil {
/**
* Transfers money from one player to another.
- * @param from the player to take money from
- * @param to the player to give money to
+ *
+ * @param from the player to take money from
+ * @param to the player to give money to
* @param amount the amount to transfer
* @return true if the transfer was successful
*/
@@ -557,9 +580,10 @@ public class VaultUtil {
/**
* Transfers money from one player to another.
+ *
* @param fromPlayerName the player name to take money from
- * @param toPlayerName the player name to give money to
- * @param amount the amount to transfer
+ * @param toPlayerName the player name to give money to
+ * @param amount the amount to transfer
* @return true if the transfer was successful
*/
public static boolean transfer(String fromPlayerName, String toPlayerName, double amount) {
diff --git a/src/main/java/noppes/npcs/AbstractDataAbilities.java b/src/main/java/noppes/npcs/AbstractDataAbilities.java
index 341ed4e08..dea49be68 100644
--- a/src/main/java/noppes/npcs/AbstractDataAbilities.java
+++ b/src/main/java/noppes/npcs/AbstractDataAbilities.java
@@ -1,7 +1,7 @@
package noppes.npcs;
-import kamkeel.npcs.controllers.data.ability.Ability;
import kamkeel.npcs.controllers.AbilityController;
+import kamkeel.npcs.controllers.data.ability.Ability;
import kamkeel.npcs.controllers.data.ability.AbilityPhase;
import kamkeel.npcs.controllers.data.ability.ChainedAbility;
import kamkeel.npcs.controllers.data.ability.ChainedAbilityEntry;
@@ -12,7 +12,12 @@ import net.minecraft.util.DamageSource;
import noppes.npcs.controllers.AnimationController;
import noppes.npcs.controllers.data.Animation;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
/**
* Shared base class for NPC and Player ability data management.
@@ -31,81 +36,119 @@ public abstract class AbstractDataAbilities {
// SHARED RUNTIME STATE (not saved to NBT)
// ═══════════════════════════════════════════════════════════════════
- /** Currently executing ability (null if none) */
+ /**
+ * Currently executing ability (null if none)
+ */
protected Ability currentAbility;
- /** World time when cooldown ends */
+ /**
+ * World time when cooldown ends
+ */
protected long cooldownEndTime = 0;
- /** Rotation lock state */
+ /**
+ * Rotation lock state
+ */
protected boolean rotationLocked = false;
protected float lockedYaw = 0;
protected float lockedPitch = 0;
- /** Position lock state */
+ /**
+ * Position lock state
+ */
protected boolean positionLocked = false;
protected double lockedPosX = 0;
protected double lockedPosY = 0;
protected double lockedPosZ = 0;
- /** Chained ability execution state */
+ /**
+ * Chained ability execution state
+ */
protected ChainedAbility currentChain;
protected int chainEntryIndex = -1;
protected int chainDelayRemaining = -1;
- /** Set when interrupt already rolled cooldown (prevents double cooldown on NPC dazed completion). */
+ /**
+ * Set when interrupt already rolled cooldown (prevents double cooldown on NPC dazed completion).
+ */
protected boolean interruptCooldownRolled = false;
// ═══════════════════════════════════════════════════════════════════
// ABSTRACT METHODS - Subclasses must implement
// ═══════════════════════════════════════════════════════════════════
- /** Get the entity this ability data belongs to (NPC or Player). */
+ /**
+ * Get the entity this ability data belongs to (NPC or Player).
+ */
protected abstract EntityLivingBase getEntity();
- /** Get the current target for ability execution. */
+ /**
+ * Get the current target for ability execution.
+ */
protected abstract EntityLivingBase getTarget();
- /** Get the current world time. */
+ /**
+ * Get the current world time.
+ */
protected abstract long getWorldTime();
// -- Event Firing --
- /** Fire tick event. Implementation differs between NPC (NpcAPI) and Player (ScriptController). */
+ /**
+ * Fire tick event. Implementation differs between NPC (NpcAPI) and Player (ScriptController).
+ */
protected abstract void fireTickEvent(Ability ability, EntityLivingBase target);
- /** Fire execute event. Returns true if cancelled. */
+ /**
+ * Fire execute event. Returns true if cancelled.
+ */
protected abstract boolean fireExecuteEvent(Ability ability, EntityLivingBase target);
- /** Fire complete event. */
+ /**
+ * Fire complete event.
+ */
protected abstract void fireCompleteEvent(Ability ability, EntityLivingBase target);
- /** Fire interrupt event. */
+ /**
+ * Fire interrupt event.
+ */
protected abstract void fireInterruptEvent(Ability ability, EntityLivingBase target,
DamageSource source, float damage);
// -- Telegraph --
- /** Spawn telegraphs for an ability. */
+ /**
+ * Spawn telegraphs for an ability.
+ */
protected abstract void spawnTelegraph(Ability ability, EntityLivingBase target);
- /** Remove telegraphs for an ability. */
+ /**
+ * Remove telegraphs for an ability.
+ */
protected abstract void removeTelegraph(Ability ability);
// -- Animation/Sound Data Access --
- /** Set animation data on the entity. */
+ /**
+ * Set animation data on the entity.
+ */
protected abstract void setAnimationData(Animation animation);
- /** Clear animation data on the entity. */
+ /**
+ * Clear animation data on the entity.
+ */
protected abstract void clearAnimationData();
- /** Play a sound at the entity's location. */
+ /**
+ * Play a sound at the entity's location.
+ */
protected abstract void playAbilitySound(String sound);
// -- Rotation (subclass handles extra fields and application) --
- /** Capture rotation values for locking. NPC captures 4 fields, Player captures 2. */
+ /**
+ * Capture rotation values for locking. NPC captures 4 fields, Player captures 2.
+ */
protected abstract void captureLockedRotation();
// -- Completion --
@@ -116,7 +159,9 @@ public abstract class AbstractDataAbilities {
*/
protected abstract void rollCooldown(Ability ability);
- /** Additional completion logic (NPC clears lastTarget, Player clears key/target and syncs). */
+ /**
+ * Additional completion logic (NPC clears lastTarget, Player clears key/target and syncs).
+ */
protected abstract void onAbilityComplete();
/**
@@ -128,17 +173,30 @@ public abstract class AbstractDataAbilities {
// -- Hooks (optional overrides) --
- /** Called before onExecute in ACTIVE phase. NPC uses this for faceTarget/hitScan. */
- protected void onPreExecute(Ability ability, EntityLivingBase target) {}
+ /**
+ * Called before onExecute in ACTIVE phase. NPC uses this for faceTarget/hitScan.
+ */
+ protected void onPreExecute(Ability ability, EntityLivingBase target) {
+ }
- /** Called after the phase switch. NPC uses this for hit scan updates and movement control. */
- protected void onPostPhaseTick(Ability ability, EntityLivingBase target) {}
+ /**
+ * Called after the phase switch. NPC uses this for hit scan updates and movement control.
+ */
+ protected void onPostPhaseTick(Ability ability, EntityLivingBase target) {
+ }
- /** Additional lock releases in BURST_DELAY. NPC releases hitScan. */
- protected void onBurstDelayReleaseLocks() {}
+ /**
+ * Additional lock releases in BURST_DELAY. NPC releases hitScan.
+ */
+ protected void onBurstDelayReleaseLocks() {
+ }
- /** Hook for retargeting during chain execution when target dies. NPC overrides, Player returns null. */
- protected EntityLivingBase retargetForChain() { return null; }
+ /**
+ * Hook for retargeting during chain execution when target dies. NPC overrides, Player returns null.
+ */
+ protected EntityLivingBase retargetForChain() {
+ return null;
+ }
// ═══════════════════════════════════════════════════════════════════
// SHARED ANIMATION METHODS
@@ -178,22 +236,30 @@ public abstract class AbstractDataAbilities {
// STATE QUERIES
// ═══════════════════════════════════════════════════════════════════
- /** Check if an ability is currently executing. */
+ /**
+ * Check if an ability is currently executing.
+ */
public boolean isExecutingAbility() {
return currentAbility != null && currentAbility.isExecuting();
}
- /** Get the currently executing ability. */
+ /**
+ * Get the currently executing ability.
+ */
public Ability getCurrentAbility() {
return currentAbility;
}
- /** Check if a chained ability is currently executing. */
+ /**
+ * Check if a chained ability is currently executing.
+ */
public boolean isExecutingChain() {
return currentChain != null;
}
- /** Get the currently executing chained ability. */
+ /**
+ * Get the currently executing chained ability.
+ */
public ChainedAbility getCurrentChain() {
return currentChain;
}
@@ -202,11 +268,14 @@ public abstract class AbstractDataAbilities {
// TOGGLE STATE (active toggles, independent of currentAbility)
// ═══════════════════════════════════════════════════════════════════
- /** Currently active toggles. Key = ability key, Value = toggle entry with tick counter. */
+ /**
+ * Currently active toggles. Key = ability key, Value = toggle entry with tick counter.
+ */
protected Map activeToggles = new LinkedHashMap<>();
/**
* Toggle an ability ON or OFF. If currently on, turns off; if off, turns on.
+ *
* @param key The ability key (e.g., "npcdbc:ki_fist")
* @return true if the toggle is now ON, false if OFF
*/
@@ -221,8 +290,9 @@ public abstract class AbstractDataAbilities {
/**
* Set a toggle to a specific state.
+ *
* @param key The ability key
- * @param on true to activate, false to deactivate
+ * @param on true to activate, false to deactivate
*/
public void setAbilityToggled(String key, boolean on) {
if (on && !activeToggles.containsKey(key)) {
@@ -300,8 +370,11 @@ public abstract class AbstractDataAbilities {
}
}
- /** Hook for subclass to react to toggle state changes (sync packets, script events). */
- protected void onToggleStateChanged(String key, boolean active) {}
+ /**
+ * Hook for subclass to react to toggle state changes (sync packets, script events).
+ */
+ protected void onToggleStateChanged(String key, boolean active) {
+ }
/**
* Clear all active toggles (e.g., on death/reset).
@@ -336,23 +409,31 @@ public abstract class AbstractDataAbilities {
// COOLDOWN MANAGEMENT
// ═══════════════════════════════════════════════════════════════════
- /** Check if on cooldown. */
+ /**
+ * Check if on cooldown.
+ */
public boolean isOnCooldown() {
return getWorldTime() < cooldownEndTime;
}
- /** Get remaining cooldown ticks. */
+ /**
+ * Get remaining cooldown ticks.
+ */
public long getRemainingCooldown() {
long remaining = cooldownEndTime - getWorldTime();
return remaining > 0 ? remaining : 0;
}
- /** Reset cooldown (allow immediate ability use). */
+ /**
+ * Reset cooldown (allow immediate ability use).
+ */
public void resetCooldown() {
cooldownEndTime = 0;
}
- /** Set the cooldown end time directly. */
+ /**
+ * Set the cooldown end time directly.
+ */
public void setCooldownEndTime(long endTime) {
cooldownEndTime = endTime;
}
@@ -381,8 +462,11 @@ public abstract class AbstractDataAbilities {
onPositionLockChanged(false);
}
- /** Hook for subclass to react to position lock state changes (e.g., NPC sets data watcher flag). */
- protected void onPositionLockChanged(boolean locked) {}
+ /**
+ * Hook for subclass to react to position lock state changes (e.g., NPC sets data watcher flag).
+ */
+ protected void onPositionLockChanged(boolean locked) {
+ }
// ═══════════════════════════════════════════════════════════════════
// ROTATION LOCKING
@@ -396,8 +480,11 @@ public abstract class AbstractDataAbilities {
onRotationLockChanged(false);
}
- /** Hook for subclass to react to rotation lock state changes (e.g., NPC sets flag, clears hitScan). */
- protected void onRotationLockChanged(boolean locked) {}
+ /**
+ * Hook for subclass to react to rotation lock state changes (e.g., NPC sets flag, clears hitScan).
+ */
+ protected void onRotationLockChanged(boolean locked) {
+ }
// ═══════════════════════════════════════════════════════════════════
// CORE TICK - Phase transition logic shared between NPC and Player
@@ -441,7 +528,7 @@ public abstract class AbstractDataAbilities {
// Fire extender tick hook (e.g., per-tick resource drain)
if (!AbilityController.Instance.fireOnAbilityTick(currentAbility, entity, target,
- currentAbility.getPhase(), currentAbility.getCurrentTick())) {
+ currentAbility.getPhase(), currentAbility.getCurrentTick())) {
interruptCurrentAbility(null, 0);
return;
}
@@ -711,7 +798,8 @@ public abstract class AbstractDataAbilities {
* Hook called after interrupt completes. Subclass handles clearing state and syncing.
* NPC: keeps currentAbility (ticks through DAZED). Player: clears immediately.
*/
- protected void onInterruptComplete() {}
+ protected void onInterruptComplete() {
+ }
// ═══════════════════════════════════════════════════════════════════
// CHAINED ABILITY EXECUTION
diff --git a/src/main/java/noppes/npcs/CommonProxy.java b/src/main/java/noppes/npcs/CommonProxy.java
index ee65ad6a5..e059e9104 100644
--- a/src/main/java/noppes/npcs/CommonProxy.java
+++ b/src/main/java/noppes/npcs/CommonProxy.java
@@ -13,13 +13,13 @@ import net.minecraft.world.World;
import net.minecraftforge.common.util.FakePlayer;
import noppes.npcs.api.IWorld;
import noppes.npcs.blocks.tiles.TileNpcContainer;
+import noppes.npcs.config.ConfigScript;
import noppes.npcs.constants.EnumGuiType;
-import noppes.npcs.containers.ContainerAuction;
+import noppes.npcs.containers.ContainerAnvilRepair;
import noppes.npcs.containers.ContainerAuctionBidding;
-import noppes.npcs.containers.ContainerAuctionTrades;
import noppes.npcs.containers.ContainerAuctionListing;
import noppes.npcs.containers.ContainerAuctionSell;
-import noppes.npcs.containers.ContainerAnvilRepair;
+import noppes.npcs.containers.ContainerAuctionTrades;
import noppes.npcs.containers.ContainerCarpentryBench;
import noppes.npcs.containers.ContainerCrate;
import noppes.npcs.containers.ContainerCustomGui;
@@ -43,7 +43,6 @@ import noppes.npcs.containers.ContainerNpcQuestReward;
import noppes.npcs.containers.ContainerNpcQuestTypeItem;
import noppes.npcs.controllers.data.AnimationData;
import noppes.npcs.controllers.data.PlayerData;
-import noppes.npcs.config.ConfigScript;
import noppes.npcs.entity.EntityNPCInterface;
public class CommonProxy implements IGuiHandler {
diff --git a/src/main/java/noppes/npcs/CustomNpcs.java b/src/main/java/noppes/npcs/CustomNpcs.java
index b063c790d..185131a15 100644
--- a/src/main/java/noppes/npcs/CustomNpcs.java
+++ b/src/main/java/noppes/npcs/CustomNpcs.java
@@ -21,13 +21,22 @@ import io.github.somehussar.janinoloader.api.IDynamicCompilerBuilder;
import kamkeel.npcs.addon.AddonManager;
import kamkeel.npcs.command.CommandKamkeel;
import kamkeel.npcs.command.profile.CommandProfile;
+import kamkeel.npcs.controllers.AbilityController;
import kamkeel.npcs.controllers.AttributeController;
import kamkeel.npcs.controllers.ProfileController;
import kamkeel.npcs.controllers.SyncController;
import kamkeel.npcs.controllers.TelegraphController;
-import kamkeel.npcs.controllers.AbilityController;
import kamkeel.npcs.controllers.data.profile.CNPCData;
import kamkeel.npcs.developer.Developer;
+import kamkeel.npcs.entity.EntityAbilityBeam;
+import kamkeel.npcs.entity.EntityAbilityDisc;
+import kamkeel.npcs.entity.EntityAbilityLaser;
+import kamkeel.npcs.entity.EntityAbilityOrb;
+import kamkeel.npcs.entity.EntityAbilitySweeper;
+import kamkeel.npcs.entity.EntityAbilityZone;
+import kamkeel.npcs.entity.EntityEnergyDome;
+import kamkeel.npcs.entity.EntityEnergyPanel;
+import kamkeel.npcs.entity.EntityEnergySlicer;
import kamkeel.npcs.network.PacketHandler;
import kamkeel.npcs.util.BukkitUtil;
import net.minecraft.block.Block;
@@ -86,15 +95,6 @@ import noppes.npcs.entity.EntityNpcDragon;
import noppes.npcs.entity.EntityNpcPony;
import noppes.npcs.entity.EntityNpcSlime;
import noppes.npcs.entity.EntityProjectile;
-import kamkeel.npcs.entity.EntityAbilityOrb;
-import kamkeel.npcs.entity.EntityAbilityDisc;
-import kamkeel.npcs.entity.EntityAbilityLaser;
-import kamkeel.npcs.entity.EntityAbilityBeam;
-import kamkeel.npcs.entity.EntityAbilitySweeper;
-import kamkeel.npcs.entity.EntityAbilityZone;
-import kamkeel.npcs.entity.EntityEnergyDome;
-import kamkeel.npcs.entity.EntityEnergyPanel;
-import kamkeel.npcs.entity.EntityEnergySlicer;
import noppes.npcs.entity.old.EntityNPCDwarfFemale;
import noppes.npcs.entity.old.EntityNPCDwarfMale;
import noppes.npcs.entity.old.EntityNPCElfFemale;
diff --git a/src/main/java/noppes/npcs/DataAbilities.java b/src/main/java/noppes/npcs/DataAbilities.java
index 29e4822b1..1caca740a 100644
--- a/src/main/java/noppes/npcs/DataAbilities.java
+++ b/src/main/java/noppes/npcs/DataAbilities.java
@@ -1,9 +1,9 @@
package noppes.npcs;
-import kamkeel.npcs.controllers.data.ability.Ability;
import kamkeel.npcs.controllers.AbilityController;
-import kamkeel.npcs.controllers.data.ability.AbilityPhase;
+import kamkeel.npcs.controllers.data.ability.Ability;
import kamkeel.npcs.controllers.data.ability.AbilityAction;
+import kamkeel.npcs.controllers.data.ability.AbilityPhase;
import kamkeel.npcs.controllers.data.ability.ChainedAbility;
import kamkeel.npcs.controllers.data.ability.IAbilityAction;
import kamkeel.npcs.controllers.data.ability.type.AbilityGuard;
@@ -86,10 +86,14 @@ public class DataAbilities extends AbstractDataAbilities {
private transient boolean hitScanActive = false;
private transient EntityLivingBase hitScanTarget = null;
- /** Bit flag for rotation control (LOCKED or TRACK) in data watcher slot 15 */
+ /**
+ * Bit flag for rotation control (LOCKED or TRACK) in data watcher slot 15
+ */
private static final int ROTATION_CONTROLLED_FLAG = 16;
- /** Bit flag for position lock in data watcher slot 15 */
+ /**
+ * Bit flag for position lock in data watcher slot 15
+ */
private static final int POSITION_LOCKED_FLAG = 32;
// ═══════════════════════════════════════════════════════════════════
@@ -143,7 +147,7 @@ public class DataAbilities extends AbstractDataAbilities {
@Override
protected void fireInterruptEvent(Ability ability, EntityLivingBase target,
- DamageSource source, float damage) {
+ DamageSource source, float damage) {
AbilityEvent.InterruptEvent interruptEvent = new AbilityEvent.InterruptEvent(
npc.wrappedNPC, ability, target, source, damage);
NpcAPI.EVENT_BUS.post(interruptEvent);
@@ -247,7 +251,7 @@ public class DataAbilities extends AbstractDataAbilities {
// Update hit scan state - actual facing is deferred to applyRotationControl()
// which runs AFTER super.onLivingUpdate() to override AI look helper
if (ability != null && ability.isExecuting()
- && ability.isHitScanForCurrentPhase() && target != null) {
+ && ability.isHitScanForCurrentPhase() && target != null) {
enableHitScan(target);
} else if (hitScanActive) {
releaseRotationControl();
@@ -613,7 +617,7 @@ public class DataAbilities extends AbstractDataAbilities {
* If an ability is currently executing, it will be cancelled.
*
* @param ability The ability to start
- * @param target The target entity (can be null for self-targeted abilities)
+ * @param target The target entity (can be null for self-targeted abilities)
* @return true if the ability was started successfully
*/
public boolean forceStartAbility(Ability ability, EntityLivingBase target) {
@@ -640,7 +644,7 @@ public class DataAbilities extends AbstractDataAbilities {
* Execute an ability on this NPC by key (built-in name or custom UUID).
* The NPC does NOT need to have this ability assigned.
*
- * @param key The ability key (built-in name or custom UUID)
+ * @param key The ability key (built-in name or custom UUID)
* @param target The target entity (can be null for self-targeted abilities)
* @return true if the ability was started successfully
*/
@@ -729,7 +733,9 @@ public class DataAbilities extends AbstractDataAbilities {
// ACTION SLOT MANAGEMENT
// ═══════════════════════════════════════════════════════════════════
- /** Get the unified action slot list. */
+ /**
+ * Get the unified action slot list.
+ */
public List getAbilityActions() {
return actionSlots;
}
@@ -748,17 +754,23 @@ public class DataAbilities extends AbstractDataAbilities {
return resolved;
}
- /** Add an inline ability. */
+ /**
+ * Add an inline ability.
+ */
public void addAbility(Ability ability) {
actionSlots.add(AbilityAction.inline(ability));
}
- /** Add a reference ability by key (built-in name or custom ability name). */
+ /**
+ * Add a reference ability by key (built-in name or custom ability name).
+ */
public void addAbilityReference(String key) {
actionSlots.add(AbilityAction.abilityReference(key));
}
- /** Add a chained ability reference by name. */
+ /**
+ * Add a chained ability reference by name.
+ */
public void addChainReference(String name) {
if (name != null && !name.isEmpty()) {
for (AbilityAction slot : actionSlots) {
@@ -770,7 +782,9 @@ public class DataAbilities extends AbstractDataAbilities {
}
}
- /** Remove an action slot by index. */
+ /**
+ * Remove an action slot by index.
+ */
public void removeAction(int index) {
if (index >= 0 && index < actionSlots.size()) {
actionSlots.remove(index);
@@ -804,13 +818,17 @@ public class DataAbilities extends AbstractDataAbilities {
return null;
}
- /** Check if a slot at a given index is a reference. */
+ /**
+ * Check if a slot at a given index is a reference.
+ */
public boolean isSlotReference(int index) {
if (index < 0 || index >= actionSlots.size()) return false;
return actionSlots.get(index).isReference();
}
- /** Convert a reference slot to inline. Returns false if resolution fails or is a chain. */
+ /**
+ * Convert a reference slot to inline. Returns false if resolution fails or is a chain.
+ */
public boolean convertToInline(int index) {
if (index < 0 || index >= actionSlots.size()) return false;
return actionSlots.get(index).convertToInline();
@@ -934,7 +952,7 @@ public class DataAbilities extends AbstractDataAbilities {
/**
* Apply rotation control after super.onLivingUpdate() and super.onUpdate().
* Handles both LOCKED (freeze at captured values) and TRACK (face target) modes.
- *
+ *
* Server: computes the correct rotation (locked values or target facing).
* Client: trusts the server-synced rotation values and prevents body smoothing override.
*/
diff --git a/src/main/java/noppes/npcs/EventHooks.java b/src/main/java/noppes/npcs/EventHooks.java
index 2d2496fc6..2b9ebaabe 100644
--- a/src/main/java/noppes/npcs/EventHooks.java
+++ b/src/main/java/noppes/npcs/EventHooks.java
@@ -20,9 +20,9 @@ import net.minecraftforge.event.world.WorldEvent;
import noppes.npcs.api.IBlock;
import noppes.npcs.api.IPos;
import noppes.npcs.api.IWorld;
-import noppes.npcs.api.entity.IEnergyProjectile;
import noppes.npcs.api.entity.IAnimatable;
import noppes.npcs.api.entity.ICustomNpc;
+import noppes.npcs.api.entity.IEnergyProjectile;
import noppes.npcs.api.entity.IEntity;
import noppes.npcs.api.entity.IPlayer;
import noppes.npcs.api.entity.IProjectile;
@@ -64,10 +64,10 @@ import noppes.npcs.scripted.event.NpcEvent;
import noppes.npcs.scripted.event.PartyEvent;
import noppes.npcs.scripted.event.ProjectileEvent;
import noppes.npcs.scripted.event.RecipeScriptEvent;
+import noppes.npcs.scripted.event.player.AuctionEvent;
import noppes.npcs.scripted.event.player.CustomGuiEvent;
import noppes.npcs.scripted.event.player.DialogEvent;
import noppes.npcs.scripted.event.player.FactionEvent;
-import noppes.npcs.scripted.event.player.AuctionEvent;
import noppes.npcs.scripted.event.player.PlayerAbilityEvent;
import noppes.npcs.scripted.event.player.PlayerEvent;
import noppes.npcs.scripted.event.player.PlayerEvent.ChatEvent;
@@ -561,7 +561,7 @@ public class EventHooks {
// ==================== ENERGY BARRIER EVENTS ====================
private static void dispatchBarrierEvent(net.minecraft.entity.Entity barrierEntity, int ownerEntityId,
- noppes.npcs.scripted.event.EnergyBarrierEvent event, EnumScriptType type) {
+ noppes.npcs.scripted.event.EnergyBarrierEvent event, EnumScriptType type) {
ScriptController.Instance.globalNpcScripts.callScript(type, event);
net.minecraft.entity.Entity owner = barrierEntity.worldObj.getEntityByID(ownerEntityId);
diff --git a/src/main/java/noppes/npcs/ScriptPlayerEventHandler.java b/src/main/java/noppes/npcs/ScriptPlayerEventHandler.java
index a0c2ad0cc..d793dcea9 100644
--- a/src/main/java/noppes/npcs/ScriptPlayerEventHandler.java
+++ b/src/main/java/noppes/npcs/ScriptPlayerEventHandler.java
@@ -6,10 +6,10 @@ import cpw.mods.fml.common.gameevent.PlayerEvent;
import cpw.mods.fml.common.gameevent.TickEvent;
import cpw.mods.fml.relauncher.Side;
import kamkeel.npcs.addon.DBCAddon;
+import kamkeel.npcs.controllers.AbilityController;
import kamkeel.npcs.controllers.AttributeController;
import kamkeel.npcs.controllers.SyncController;
import kamkeel.npcs.controllers.data.ability.Ability;
-import kamkeel.npcs.controllers.AbilityController;
import kamkeel.npcs.util.AttributeAttackUtil;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
diff --git a/src/main/java/noppes/npcs/ServerTickHandler.java b/src/main/java/noppes/npcs/ServerTickHandler.java
index 2639c6ab5..220a0e6ef 100644
--- a/src/main/java/noppes/npcs/ServerTickHandler.java
+++ b/src/main/java/noppes/npcs/ServerTickHandler.java
@@ -6,9 +6,9 @@ import cpw.mods.fml.common.gameevent.TickEvent;
import cpw.mods.fml.common.gameevent.TickEvent.Phase;
import kamkeel.npcs.controllers.ProfileController;
import kamkeel.npcs.controllers.SyncController;
-import noppes.npcs.controllers.AuctionController;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.world.WorldServer;
+import noppes.npcs.controllers.AuctionController;
import noppes.npcs.controllers.ScriptController;
import noppes.npcs.controllers.data.PlayerData;
import noppes.npcs.controllers.data.action.ActionManager;
diff --git a/src/main/java/noppes/npcs/ai/CombatHandler.java b/src/main/java/noppes/npcs/ai/CombatHandler.java
index ff81e4821..97d9a90eb 100644
--- a/src/main/java/noppes/npcs/ai/CombatHandler.java
+++ b/src/main/java/noppes/npcs/ai/CombatHandler.java
@@ -1,7 +1,6 @@
package noppes.npcs.ai;
import kamkeel.npcs.addon.DBCAddon;
-import kamkeel.npcs.controllers.data.ability.type.AbilityGuard;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
diff --git a/src/main/java/noppes/npcs/blocks/BlockWaypoint.java b/src/main/java/noppes/npcs/blocks/BlockWaypoint.java
index 7e2dd87d3..e91f43d25 100644
--- a/src/main/java/noppes/npcs/blocks/BlockWaypoint.java
+++ b/src/main/java/noppes/npcs/blocks/BlockWaypoint.java
@@ -12,10 +12,8 @@ import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import noppes.npcs.CustomItems;
-import noppes.npcs.CustomNpcs;
import noppes.npcs.CustomNpcsPermissions;
import noppes.npcs.blocks.tiles.TileWaypoint;
-import noppes.npcs.constants.EnumGuiType;
public class BlockWaypoint extends BlockContainer {
diff --git a/src/main/java/noppes/npcs/client/AuctionClientConfig.java b/src/main/java/noppes/npcs/client/AuctionClientConfig.java
index f993318ed..a94bab504 100644
--- a/src/main/java/noppes/npcs/client/AuctionClientConfig.java
+++ b/src/main/java/noppes/npcs/client/AuctionClientConfig.java
@@ -7,7 +7,7 @@ import net.minecraft.nbt.NBTTagCompound;
/**
* Client-side cache for auction configuration synced from server.
* Prevents client from using local ConfigMarket which may differ from server settings.
- *
+ *
* IMPORTANT: This class is CLIENT-ONLY. Server-side NBT writing is done in
* AuctionConfigSync to avoid @SideOnly crashes on dedicated servers.
*/
@@ -56,11 +56,31 @@ public class AuctionClientConfig {
}
// Getters
- public static boolean isAuctionEnabled() { return auctionEnabled; }
- public static long getListingFee() { return listingFee; }
- public static String getCurrencyName() { return currencyName; }
- public static int getAuctionDurationHours() { return auctionDurationHours; }
- public static double getMinBidIncrement() { return minBidIncrement; }
- public static int getMaxActiveListings() { return maxActiveListings; }
- public static int getClaimExpirationDays() { return claimExpirationDays; }
+ public static boolean isAuctionEnabled() {
+ return auctionEnabled;
+ }
+
+ public static long getListingFee() {
+ return listingFee;
+ }
+
+ public static String getCurrencyName() {
+ return currencyName;
+ }
+
+ public static int getAuctionDurationHours() {
+ return auctionDurationHours;
+ }
+
+ public static double getMinBidIncrement() {
+ return minBidIncrement;
+ }
+
+ public static int getMaxActiveListings() {
+ return maxActiveListings;
+ }
+
+ public static int getClaimExpirationDays() {
+ return claimExpirationDays;
+ }
}
diff --git a/src/main/java/noppes/npcs/client/ClientEventHandler.java b/src/main/java/noppes/npcs/client/ClientEventHandler.java
index 6fc690b5a..a73ccf707 100644
--- a/src/main/java/noppes/npcs/client/ClientEventHandler.java
+++ b/src/main/java/noppes/npcs/client/ClientEventHandler.java
@@ -20,12 +20,12 @@ import net.minecraftforge.client.event.RenderHandEvent;
import net.minecraftforge.client.event.RenderLivingEvent;
import net.minecraftforge.client.event.RenderPlayerEvent;
import net.minecraftforge.event.entity.player.ItemTooltipEvent;
-import noppes.npcs.client.gui.player.AuctionTooltipHandler;
import noppes.npcs.client.gui.customoverlay.OverlayCustom;
import noppes.npcs.client.gui.hud.ClientHudManager;
import noppes.npcs.client.gui.hud.CompassHudComponent;
import noppes.npcs.client.gui.hud.EnumHudComponent;
import noppes.npcs.client.gui.hud.QuestTrackingComponent;
+import noppes.npcs.client.gui.player.AuctionTooltipHandler;
import noppes.npcs.client.renderer.MarkRenderer;
import noppes.npcs.client.renderer.RenderCNPCPlayer;
import noppes.npcs.constants.EnumAnimationPart;
@@ -91,9 +91,9 @@ public class ClientEventHandler {
// Block mouse movement during ability rotation lock.
// Allow clicks (button >= 0) and scroll (dwheel != 0) to pass through.
if (mc.theWorld != null && mc.thePlayer != null
- && ClientAbilityState.shouldLockRotation()
- && (event.dx != 0 || event.dy != 0)
- && event.button == -1 && event.dwheel == 0) {
+ && ClientAbilityState.shouldLockRotation()
+ && (event.dx != 0 || event.dy != 0)
+ && event.button == -1 && event.dwheel == 0) {
event.setCanceled(true);
return;
}
diff --git a/src/main/java/noppes/npcs/client/ClientProxy.java b/src/main/java/noppes/npcs/client/ClientProxy.java
index 28e028afe..a0a5ce060 100644
--- a/src/main/java/noppes/npcs/client/ClientProxy.java
+++ b/src/main/java/noppes/npcs/client/ClientProxy.java
@@ -6,8 +6,27 @@ import cpw.mods.fml.client.registry.RenderingRegistry;
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.common.ObfuscationReflectionHelper;
import kamkeel.npcs.addon.client.DBCClient;
+import kamkeel.npcs.client.renderer.RenderAbilityBeam;
+import kamkeel.npcs.client.renderer.RenderAbilityDisc;
+import kamkeel.npcs.client.renderer.RenderAbilityLaser;
+import kamkeel.npcs.client.renderer.RenderAbilityOrb;
+import kamkeel.npcs.client.renderer.RenderAbilitySweeper;
+import kamkeel.npcs.client.renderer.RenderAbilityZone;
+import kamkeel.npcs.client.renderer.RenderEnergyDome;
+import kamkeel.npcs.client.renderer.RenderEnergyPanel;
+import kamkeel.npcs.client.renderer.RenderEnergySlicer;
import kamkeel.npcs.client.renderer.TelegraphRenderer;
+import kamkeel.npcs.client.renderer.lightning.LightningHandler;
import kamkeel.npcs.controllers.data.telegraph.TelegraphManager;
+import kamkeel.npcs.entity.EntityAbilityBeam;
+import kamkeel.npcs.entity.EntityAbilityDisc;
+import kamkeel.npcs.entity.EntityAbilityLaser;
+import kamkeel.npcs.entity.EntityAbilityOrb;
+import kamkeel.npcs.entity.EntityAbilitySweeper;
+import kamkeel.npcs.entity.EntityAbilityZone;
+import kamkeel.npcs.entity.EntityEnergyDome;
+import kamkeel.npcs.entity.EntityEnergyPanel;
+import kamkeel.npcs.entity.EntityEnergySlicer;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.model.ModelBiped;
@@ -88,12 +107,12 @@ import noppes.npcs.client.gui.global.GuiNPCManageAnimations;
import noppes.npcs.client.gui.global.GuiNPCManageBanks;
import noppes.npcs.client.gui.global.GuiNPCManageDialogs;
import noppes.npcs.client.gui.global.GuiNPCManageEffects;
-import noppes.npcs.client.gui.global.GuiNpcManageAbilities;
import noppes.npcs.client.gui.global.GuiNPCManageFactions;
import noppes.npcs.client.gui.global.GuiNPCManageLinked;
import noppes.npcs.client.gui.global.GuiNPCManageQuest;
import noppes.npcs.client.gui.global.GuiNPCManageTags;
import noppes.npcs.client.gui.global.GuiNPCManageTransporters;
+import noppes.npcs.client.gui.global.GuiNpcManageAbilities;
import noppes.npcs.client.gui.global.GuiNpcManageMagic;
import noppes.npcs.client.gui.global.GuiNpcManageRecipes;
import noppes.npcs.client.gui.global.GuiNpcQuestReward;
@@ -105,15 +124,15 @@ import noppes.npcs.client.gui.mainmenu.GuiNpcAI;
import noppes.npcs.client.gui.mainmenu.GuiNpcAdvanced;
import noppes.npcs.client.gui.mainmenu.GuiNpcDisplay;
import noppes.npcs.client.gui.mainmenu.GuiNpcStats;
+import noppes.npcs.client.gui.player.GuiAuctionBidding;
+import noppes.npcs.client.gui.player.GuiAuctionListing;
+import noppes.npcs.client.gui.player.GuiAuctionSell;
+import noppes.npcs.client.gui.player.GuiAuctionTrades;
import noppes.npcs.client.gui.player.GuiBigSign;
import noppes.npcs.client.gui.player.GuiCrate;
import noppes.npcs.client.gui.player.GuiMailbox;
import noppes.npcs.client.gui.player.GuiMailmanWrite;
import noppes.npcs.client.gui.player.GuiNPCBankChest;
-import noppes.npcs.client.gui.player.GuiAuctionBidding;
-import noppes.npcs.client.gui.player.GuiAuctionTrades;
-import noppes.npcs.client.gui.player.GuiAuctionListing;
-import noppes.npcs.client.gui.player.GuiAuctionSell;
import noppes.npcs.client.gui.player.GuiNPCTrader;
import noppes.npcs.client.gui.player.GuiNpcAnvil;
import noppes.npcs.client.gui.player.GuiNpcCarpentryBench;
@@ -146,25 +165,6 @@ import noppes.npcs.client.renderer.RenderNpcCrystal;
import noppes.npcs.client.renderer.RenderNpcDragon;
import noppes.npcs.client.renderer.RenderNpcSlime;
import noppes.npcs.client.renderer.RenderProjectile;
-import kamkeel.npcs.client.renderer.RenderAbilityOrb;
-import kamkeel.npcs.client.renderer.RenderAbilityDisc;
-import kamkeel.npcs.client.renderer.RenderAbilityLaser;
-import kamkeel.npcs.client.renderer.RenderAbilityBeam;
-import kamkeel.npcs.client.renderer.RenderAbilitySweeper;
-import kamkeel.npcs.client.renderer.RenderAbilityZone;
-import kamkeel.npcs.client.renderer.RenderEnergyDome;
-import kamkeel.npcs.client.renderer.RenderEnergyPanel;
-import kamkeel.npcs.client.renderer.RenderEnergySlicer;
-import kamkeel.npcs.client.renderer.lightning.LightningHandler;
-import kamkeel.npcs.entity.EntityAbilityOrb;
-import kamkeel.npcs.entity.EntityAbilityDisc;
-import kamkeel.npcs.entity.EntityAbilityLaser;
-import kamkeel.npcs.entity.EntityAbilityBeam;
-import kamkeel.npcs.entity.EntityAbilitySweeper;
-import kamkeel.npcs.entity.EntityAbilityZone;
-import kamkeel.npcs.entity.EntityEnergyDome;
-import kamkeel.npcs.entity.EntityEnergyPanel;
-import kamkeel.npcs.entity.EntityEnergySlicer;
import noppes.npcs.client.renderer.blocks.BlockBannerRenderer;
import noppes.npcs.client.renderer.blocks.BlockBarrelRenderer;
import noppes.npcs.client.renderer.blocks.BlockBeamRenderer;
@@ -200,13 +200,16 @@ import noppes.npcs.client.renderer.items.ItemShortLampRenderer;
import noppes.npcs.client.renderer.items.ItemTallLampRenderer;
import noppes.npcs.client.renderer.items.ItemToolRenderer;
import noppes.npcs.client.renderer.items.ScriptedBlockItemRenderer;
-import noppes.npcs.client.ScriptClientConfig;
import noppes.npcs.config.ConfigClient;
import noppes.npcs.config.ConfigItem;
import noppes.npcs.config.ConfigMain;
import noppes.npcs.config.StringCache;
import noppes.npcs.constants.EnumGuiType;
import noppes.npcs.containers.ContainerAnvilRepair;
+import noppes.npcs.containers.ContainerAuctionBidding;
+import noppes.npcs.containers.ContainerAuctionListing;
+import noppes.npcs.containers.ContainerAuctionSell;
+import noppes.npcs.containers.ContainerAuctionTrades;
import noppes.npcs.containers.ContainerCarpentryBench;
import noppes.npcs.containers.ContainerCrate;
import noppes.npcs.containers.ContainerCustomGui;
@@ -219,11 +222,6 @@ import noppes.npcs.containers.ContainerNPCFollower;
import noppes.npcs.containers.ContainerNPCFollowerHire;
import noppes.npcs.containers.ContainerNPCFollowerSetup;
import noppes.npcs.containers.ContainerNPCInv;
-import noppes.npcs.containers.ContainerAuction;
-import noppes.npcs.containers.ContainerAuctionBidding;
-import noppes.npcs.containers.ContainerAuctionTrades;
-import noppes.npcs.containers.ContainerAuctionListing;
-import noppes.npcs.containers.ContainerAuctionSell;
import noppes.npcs.containers.ContainerNPCTrader;
import noppes.npcs.containers.ContainerNPCTraderSetup;
import noppes.npcs.containers.ContainerNpcItemGiver;
@@ -525,9 +523,7 @@ public class ClientProxy extends CommonProxy {
abilityNpc.width = 0.6f;
}
return new GuiNpcManageAbilities(abilityNpc, npc != null);
- }
-
- else if (gui == EnumGuiType.MainMenuGlobal)
+ } else if (gui == EnumGuiType.MainMenuGlobal)
return new GuiNPCGlobalMainMenu(npc);
else if (gui == EnumGuiType.MainMenuAI)
diff --git a/src/main/java/noppes/npcs/client/ClientTickHandler.java b/src/main/java/noppes/npcs/client/ClientTickHandler.java
index 05af02800..5a59461b7 100644
--- a/src/main/java/noppes/npcs/client/ClientTickHandler.java
+++ b/src/main/java/noppes/npcs/client/ClientTickHandler.java
@@ -136,8 +136,8 @@ public class ClientTickHandler {
// Prevent jumping when locked (allow gravity only if not flying)
if ((ClientAbilityState.movementLocked || ClientAbilityState.positionLocked)
- && !ClientAbilityState.hasAbilityMovement
- && !AbilityController.Instance.isPlayerFlying(mc.thePlayer)) {
+ && !ClientAbilityState.hasAbilityMovement
+ && !AbilityController.Instance.isPlayerFlying(mc.thePlayer)) {
mc.thePlayer.motionY = Math.min(mc.thePlayer.motionY, 0);
}
}
@@ -226,7 +226,7 @@ public class ClientTickHandler {
// Block movement keys during ability lock (only when no GUI is open and world exists).
// Non-movement keys (ESC, chat, inventory, etc.) always pass through.
if (mc.theWorld != null && mc.currentScreen == null && keyDown
- && ClientAbilityState.shouldSuppressMovementInput() && isMovementKey(key)) {
+ && ClientAbilityState.shouldSuppressMovementInput() && isMovementKey(key)) {
// Unpress the keybind so vanilla doesn't process it
KeyBinding.setKeyBindState(key, false);
return;
diff --git a/src/main/java/noppes/npcs/client/ScriptClientConfig.java b/src/main/java/noppes/npcs/client/ScriptClientConfig.java
index 863f991ba..2af091723 100644
--- a/src/main/java/noppes/npcs/client/ScriptClientConfig.java
+++ b/src/main/java/noppes/npcs/client/ScriptClientConfig.java
@@ -7,7 +7,7 @@ import net.minecraft.nbt.NBTTagCompound;
/**
* Client-side cache for script configuration synced from server.
* Prevents client from using local ConfigScript which may differ from server settings.
- *
+ *
* IMPORTANT: This class is CLIENT-ONLY. Server-side NBT writing is done in
* ScriptConfigSync to avoid @SideOnly crashes on dedicated servers.
*/
@@ -46,16 +46,44 @@ public class ScriptClientConfig {
}
// Setters for individual packet updates
- public static void setScriptingEnabled(boolean value) { scriptingEnabled = value; }
- public static void setRunLoadedScriptsFirst(boolean value) { runLoadedScriptsFirst = value; }
- public static void setGlobalPlayerScripts(boolean value) { globalPlayerScripts = value; }
- public static void setGlobalForgeScripts(boolean value) { globalForgeScripts = value; }
- public static void setGlobalNPCScripts(boolean value) { globalNPCScripts = value; }
+ public static void setScriptingEnabled(boolean value) {
+ scriptingEnabled = value;
+ }
+
+ public static void setRunLoadedScriptsFirst(boolean value) {
+ runLoadedScriptsFirst = value;
+ }
+
+ public static void setGlobalPlayerScripts(boolean value) {
+ globalPlayerScripts = value;
+ }
+
+ public static void setGlobalForgeScripts(boolean value) {
+ globalForgeScripts = value;
+ }
+
+ public static void setGlobalNPCScripts(boolean value) {
+ globalNPCScripts = value;
+ }
// Getters
- public static boolean isScriptingEnabled() { return scriptingEnabled; }
- public static boolean isRunLoadedScriptsFirst() { return runLoadedScriptsFirst; }
- public static boolean isGlobalPlayerScripts() { return globalPlayerScripts; }
- public static boolean isGlobalForgeScripts() { return globalForgeScripts; }
- public static boolean isGlobalNPCScripts() { return globalNPCScripts; }
+ public static boolean isScriptingEnabled() {
+ return scriptingEnabled;
+ }
+
+ public static boolean isRunLoadedScriptsFirst() {
+ return runLoadedScriptsFirst;
+ }
+
+ public static boolean isGlobalPlayerScripts() {
+ return globalPlayerScripts;
+ }
+
+ public static boolean isGlobalForgeScripts() {
+ return globalForgeScripts;
+ }
+
+ public static boolean isGlobalNPCScripts() {
+ return globalNPCScripts;
+ }
}
diff --git a/src/main/java/noppes/npcs/client/fx/ZoneParticleFX.java b/src/main/java/noppes/npcs/client/fx/ZoneParticleFX.java
index 80f6f687b..eb04c2159 100644
--- a/src/main/java/noppes/npcs/client/fx/ZoneParticleFX.java
+++ b/src/main/java/noppes/npcs/client/fx/ZoneParticleFX.java
@@ -16,9 +16,9 @@ public class ZoneParticleFX extends EntityFX {
private final boolean glow;
public ZoneParticleFX(World world, double x, double y, double z,
- double motionX, double motionY, double motionZ,
- float r, float g, float b, float alpha,
- float scale, int maxAge, float gravity, boolean glow) {
+ double motionX, double motionY, double motionZ,
+ float r, float g, float b, float alpha,
+ float scale, int maxAge, float gravity, boolean glow) {
super(world, x, y, z, 0, 0, 0);
this.motionX = motionX;
this.motionY = motionY;
diff --git a/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawnerFullscreen.java b/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawnerFullscreen.java
index 4919ccbae..80e0a971f 100644
--- a/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawnerFullscreen.java
+++ b/src/main/java/noppes/npcs/client/gui/GuiNpcMobSpawnerFullscreen.java
@@ -74,10 +74,10 @@ public class GuiNpcMobSpawnerFullscreen extends GuiDirectory implements IGuiData
this.posZ = posZ;
// Configure GuiDirectory layout percentages
- leftPanelPercent = 0.15f;
+ leftPanelPercent = 0.15f;
rightPanelPercent = 0.08f;
- minLeftPanelW = 120;
- minRightPanelW = 62;
+ minLeftPanelW = 120;
+ minRightPanelW = 62;
PacketClient.sendClient(new CloneAllTagsPacket());
if (GuiNpcMobSpawner.showingClones == 2) {
diff --git a/src/main/java/noppes/npcs/client/gui/SubGuiNpcDialogVisual.java b/src/main/java/noppes/npcs/client/gui/SubGuiNpcDialogVisual.java
index 86f174bc4..17996759e 100644
--- a/src/main/java/noppes/npcs/client/gui/SubGuiNpcDialogVisual.java
+++ b/src/main/java/noppes/npcs/client/gui/SubGuiNpcDialogVisual.java
@@ -1,9 +1,6 @@
package noppes.npcs.client.gui;
-import kamkeel.npcs.network.PacketClient;
-import kamkeel.npcs.network.packets.request.dialog.DialogSavePacket;
import net.minecraft.client.gui.GuiButton;
-import net.minecraft.nbt.NBTTagCompound;
import noppes.npcs.client.NoppesUtil;
import noppes.npcs.client.gui.util.GuiCustomScroll;
import noppes.npcs.client.gui.util.GuiMenuTopButton;
diff --git a/src/main/java/noppes/npcs/client/gui/advanced/GuiNPCAbilities.java b/src/main/java/noppes/npcs/client/gui/advanced/GuiNPCAbilities.java
index 8e0db5e71..e95b2c97b 100644
--- a/src/main/java/noppes/npcs/client/gui/advanced/GuiNPCAbilities.java
+++ b/src/main/java/noppes/npcs/client/gui/advanced/GuiNPCAbilities.java
@@ -1,7 +1,7 @@
package noppes.npcs.client.gui.advanced;
-import kamkeel.npcs.controllers.data.ability.Ability;
import kamkeel.npcs.controllers.AbilityController;
+import kamkeel.npcs.controllers.data.ability.Ability;
import kamkeel.npcs.controllers.data.ability.AbilityAction;
import kamkeel.npcs.controllers.data.ability.AbilityVariant;
import kamkeel.npcs.controllers.data.ability.ChainedAbility;
@@ -33,7 +33,14 @@ import noppes.npcs.client.gui.util.SubGuiInterface;
import noppes.npcs.constants.EnumScrollData;
import noppes.npcs.entity.EntityNPCInterface;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.UUID;
+import java.util.Vector;
/**
* GUI for managing NPC abilities.
@@ -42,30 +49,30 @@ import java.util.*;
public class GuiNPCAbilities extends GuiNPCInterface2 implements IScrollData, ICustomScrollListener, IGuiData, ITextfieldListener, ISubGuiListener, IAbilityConfigCallback, IChainedAbilityConfigCallback {
// ── Button IDs ────────────────────────────────────────────────────────────
- private static final int BTN_SCROLL_TYPE = 50;
- private static final int BTN_ADD_ABILITY = 70;
- private static final int BTN_REMOVE = 71;
- private static final int BTN_EDIT = 72;
- private static final int BTN_MOVE_UP = 73;
- private static final int BTN_MOVE_DOWN = 74;
- private static final int BTN_LOAD = 75;
- private static final int BTN_SAVE_PRESET = 76;
- private static final int BTN_TOGGLE_SLOT = 77;
- private static final int BTN_ADD_CHAIN = 78;
- private static final int BTN_ENABLED = 100;
+ private static final int BTN_SCROLL_TYPE = 50;
+ private static final int BTN_ADD_ABILITY = 70;
+ private static final int BTN_REMOVE = 71;
+ private static final int BTN_EDIT = 72;
+ private static final int BTN_MOVE_UP = 73;
+ private static final int BTN_MOVE_DOWN = 74;
+ private static final int BTN_LOAD = 75;
+ private static final int BTN_SAVE_PRESET = 76;
+ private static final int BTN_TOGGLE_SLOT = 77;
+ private static final int BTN_ADD_CHAIN = 78;
+ private static final int BTN_ENABLED = 100;
// ── Scroll IDs ────────────────────────────────────────────────────────────
- private static final int SCROLL_TYPES = 0;
- private static final int SCROLL_NPC = 1;
+ private static final int SCROLL_TYPES = 0;
+ private static final int SCROLL_NPC = 1;
// ── TextField / Label IDs ─────────────────────────────────────────────────
- private static final int TF_MIN_COOLDOWN = 101;
- private static final int TF_MAX_COOLDOWN = 102;
- private static final int TF_SEARCH = 4;
- private static final int LBL_TYPES = 1;
- private static final int LBL_NPC = 2;
- private static final int LBL_MIN_COOLDOWN = 101;
- private static final int LBL_MAX_COOLDOWN = 102;
+ private static final int TF_MIN_COOLDOWN = 101;
+ private static final int TF_MAX_COOLDOWN = 102;
+ private static final int TF_SEARCH = 4;
+ private static final int LBL_TYPES = 1;
+ private static final int LBL_NPC = 2;
+ private static final int LBL_MIN_COOLDOWN = 101;
+ private static final int LBL_MAX_COOLDOWN = 102;
// ── Scroll lists ──────────────────────────────────────────────────────────
private GuiCustomScroll availableTypesScroll;
@@ -127,7 +134,8 @@ public class GuiNPCAbilities extends GuiNPCInterface2 implements IScrollData, IC
@Override
public String toString() {
switch (this) {
- case CNPC: return "CustomNPCs";
+ case CNPC:
+ return "CustomNPCs";
case MODDED:
if (Register.isEmpty("ability"))
return "modded";
@@ -135,8 +143,10 @@ public class GuiNPCAbilities extends GuiNPCInterface2 implements IScrollData, IC
String namespace = Register.REGISTERED_NAMESPACES.get("ability").get(modIndex);
String displayName = Register.NAMESPACE_DISPLAY_NAMES.get(namespace);
return displayName != null ? displayName : namespace;
- case ALL: return "filter.all";
- default: return name();
+ case ALL:
+ return "filter.all";
+ default:
+ return name();
}
}
}
@@ -855,13 +865,37 @@ public class GuiNPCAbilities extends GuiNPCInterface2 implements IScrollData, IC
@Override
public void subGuiClosed(SubGuiInterface subgui) {
- if (subgui instanceof SubGuiAbilityVariantSelect) { handleVariantSelectClosed((SubGuiAbilityVariantSelect) subgui); initGui(); return; }
- if (subgui instanceof SubGuiChainedAbilityConfig) { handleChainConfigClosed(); initGui(); return; }
- if (subgui instanceof SubGuiAbilityEditMode) { handleEditModeClosed((SubGuiAbilityEditMode) subgui); return; }
- if (subgui instanceof SubGuiAbilitySaveConfirm) { handleSaveConfirmClosed((SubGuiAbilitySaveConfirm) subgui); initGui(); return; }
- if (subgui instanceof SubGuiLoadTypeChoice) { handleLoadTypeChoiceClosed((SubGuiLoadTypeChoice) subgui); return; }
- if (subgui instanceof SubGuiChainSelect) { handleChainSelectClosed((SubGuiChainSelect) subgui); return; }
- if (subgui instanceof SubGuiAbilityConfig) { handleAbilityConfigClosed(); return; }
+ if (subgui instanceof SubGuiAbilityVariantSelect) {
+ handleVariantSelectClosed((SubGuiAbilityVariantSelect) subgui);
+ initGui();
+ return;
+ }
+ if (subgui instanceof SubGuiChainedAbilityConfig) {
+ handleChainConfigClosed();
+ initGui();
+ return;
+ }
+ if (subgui instanceof SubGuiAbilityEditMode) {
+ handleEditModeClosed((SubGuiAbilityEditMode) subgui);
+ return;
+ }
+ if (subgui instanceof SubGuiAbilitySaveConfirm) {
+ handleSaveConfirmClosed((SubGuiAbilitySaveConfirm) subgui);
+ initGui();
+ return;
+ }
+ if (subgui instanceof SubGuiLoadTypeChoice) {
+ handleLoadTypeChoiceClosed((SubGuiLoadTypeChoice) subgui);
+ return;
+ }
+ if (subgui instanceof SubGuiChainSelect) {
+ handleChainSelectClosed((SubGuiChainSelect) subgui);
+ return;
+ }
+ if (subgui instanceof SubGuiAbilityConfig) {
+ handleAbilityConfigClosed();
+ return;
+ }
}
private void handleVariantSelectClosed(SubGuiAbilityVariantSelect gui) {
diff --git a/src/main/java/noppes/npcs/client/gui/advanced/SubGuiAbilityConfig.java b/src/main/java/noppes/npcs/client/gui/advanced/SubGuiAbilityConfig.java
index bcfce7687..f0b610d19 100644
--- a/src/main/java/noppes/npcs/client/gui/advanced/SubGuiAbilityConfig.java
+++ b/src/main/java/noppes/npcs/client/gui/advanced/SubGuiAbilityConfig.java
@@ -3,10 +3,10 @@ package noppes.npcs.client.gui.advanced;
import kamkeel.npcs.controllers.data.ability.Ability;
import kamkeel.npcs.controllers.data.ability.Condition;
import kamkeel.npcs.controllers.data.ability.gui.AbilityFieldBuilder;
-import noppes.npcs.client.gui.builder.FieldDef;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.StatCollector;
+import noppes.npcs.client.gui.builder.FieldDef;
import noppes.npcs.client.gui.util.GuiMenuTopButton;
import noppes.npcs.client.gui.util.GuiNpcButton;
import noppes.npcs.client.gui.util.GuiNpcLabel;
@@ -75,11 +75,11 @@ public class SubGuiAbilityConfig extends SubGuiInterface implements ITextfieldLi
for (FieldDef def : fieldDefs) {
String tab = def.getTab();
if (tab != null
- && !TAB_NAME_GENERAL.equals(tab)
- && !TAB_NAME_TYPE.equals(tab)
- && !TAB_NAME_TARGET.equals(tab)
- && !TAB_NAME_EFFECTS.equals(tab)
- && !customTabNames.contains(tab)) {
+ && !TAB_NAME_GENERAL.equals(tab)
+ && !TAB_NAME_TYPE.equals(tab)
+ && !TAB_NAME_TARGET.equals(tab)
+ && !TAB_NAME_EFFECTS.equals(tab)
+ && !customTabNames.contains(tab)) {
customTabNames.add(tab);
}
}
@@ -187,11 +187,21 @@ public class SubGuiAbilityConfig extends SubGuiInterface implements ITextfieldLi
}
} else {
switch (tabIndex) {
- case TAB_GENERAL: tabName = TAB_NAME_GENERAL; break;
- case TAB_TYPE: tabName = TAB_NAME_TYPE; break;
- case TAB_TARGET: tabName = TAB_NAME_TARGET; break;
- case TAB_EFFECTS: tabName = TAB_NAME_EFFECTS; break;
- default: tabName = TAB_NAME_TYPE; break;
+ case TAB_GENERAL:
+ tabName = TAB_NAME_GENERAL;
+ break;
+ case TAB_TYPE:
+ tabName = TAB_NAME_TYPE;
+ break;
+ case TAB_TARGET:
+ tabName = TAB_NAME_TARGET;
+ break;
+ case TAB_EFFECTS:
+ tabName = TAB_NAME_EFFECTS;
+ break;
+ default:
+ tabName = TAB_NAME_TYPE;
+ break;
}
}
@@ -264,17 +274,36 @@ public class SubGuiAbilityConfig extends SubGuiInterface implements ITextfieldLi
int id = guibutton.id;
// Tab switching — fixed tabs
- if (id == 90) { activeTab = TAB_GENERAL; initGui(); return; }
- if (id == 91) { activeTab = TAB_TYPE; initGui(); return; }
- if (id == 92) { activeTab = TAB_TARGET; initGui(); return; }
- if (id == 93) { activeTab = TAB_EFFECTS; initGui(); return; }
+ if (id == 90) {
+ activeTab = TAB_GENERAL;
+ initGui();
+ return;
+ }
+ if (id == 91) {
+ activeTab = TAB_TYPE;
+ initGui();
+ return;
+ }
+ if (id == 92) {
+ activeTab = TAB_TARGET;
+ initGui();
+ return;
+ }
+ if (id == 93) {
+ activeTab = TAB_EFFECTS;
+ initGui();
+ return;
+ }
// Custom tabs (94+)
if (id >= 94 && id < 94 + customTabNames.size()) {
activeTab = 4 + (id - 94);
initGui();
return;
}
- if (id == -1000) { close(); return; }
+ if (id == -1000) {
+ close();
+ return;
+ }
// Condition buttons (50-80)
if (handleConditionButton(id)) return;
diff --git a/src/main/java/noppes/npcs/client/gui/advanced/SubGuiAbilityLoad.java b/src/main/java/noppes/npcs/client/gui/advanced/SubGuiAbilityLoad.java
index 595f5a773..dda5ee8e6 100644
--- a/src/main/java/noppes/npcs/client/gui/advanced/SubGuiAbilityLoad.java
+++ b/src/main/java/noppes/npcs/client/gui/advanced/SubGuiAbilityLoad.java
@@ -1,7 +1,7 @@
package noppes.npcs.client.gui.advanced;
-import kamkeel.npcs.controllers.data.ability.Ability;
import kamkeel.npcs.controllers.AbilityController;
+import kamkeel.npcs.controllers.data.ability.Ability;
import kamkeel.npcs.network.PacketClient;
import kamkeel.npcs.network.packets.request.ability.CustomAbilitiesGetPacket;
import kamkeel.npcs.network.packets.request.ability.CustomAbilityGetPacket;
diff --git a/src/main/java/noppes/npcs/client/gui/advanced/SubGuiChainedAbilityConfig.java b/src/main/java/noppes/npcs/client/gui/advanced/SubGuiChainedAbilityConfig.java
index ccef30b0d..090d86dbb 100644
--- a/src/main/java/noppes/npcs/client/gui/advanced/SubGuiChainedAbilityConfig.java
+++ b/src/main/java/noppes/npcs/client/gui/advanced/SubGuiChainedAbilityConfig.java
@@ -43,37 +43,37 @@ public class SubGuiChainedAbilityConfig extends SubGuiInterface implements IText
private static final int LABEL_ID_START = 3000;
// ── Tab constants (core tabs) ────────────────────────────────────────────
- private static final int TAB_GENERAL = 0;
- private static final int TAB_ENTRIES = 1;
+ private static final int TAB_GENERAL = 0;
+ private static final int TAB_ENTRIES = 1;
private static final int TAB_CONDITIONS = 2;
private static final int CORE_TAB_COUNT = 3;
// ── Tab button IDs ────────────────────────────────────────────────────────
- private static final int BTN_TAB_GENERAL = 90;
- private static final int BTN_TAB_ENTRIES = 91;
+ private static final int BTN_TAB_GENERAL = 90;
+ private static final int BTN_TAB_ENTRIES = 91;
private static final int BTN_TAB_CONDITIONS = 92;
private static final int BTN_TAB_EXTRA_BASE = 93;
- private static final int BTN_CLOSE = -1000;
+ private static final int BTN_CLOSE = -1000;
// ── Entries tab: per-entry ID encoding ─────────────────────────────────────
// Actual ID = ENTRY_BASE + i * ENTRY_STRIDE + offset
// offset 0 = name/select button, 1 = delay text field, 2 = up, 3 = down, 4 = delete
- private static final int ENTRY_BASE = 100;
- private static final int ENTRY_END = 200;
- private static final int ENTRY_STRIDE = 10;
+ private static final int ENTRY_BASE = 100;
+ private static final int ENTRY_END = 200;
+ private static final int ENTRY_STRIDE = 10;
private static final int BTN_ADD_ENTRY = 200;
// ── Conditions tab: per-condition ID encoding ─────────────────────────────
// Actual ID = COND_BASE + i * COND_STRIDE + offset
// offset 0 = name/click, 1 = edit, 2 = delete
- private static final int COND_BASE = 50;
- private static final int COND_END = 80;
- private static final int COND_STRIDE = 10;
- private static final int BTN_ADD_COND = 80;
+ private static final int COND_BASE = 50;
+ private static final int COND_END = 80;
+ private static final int COND_STRIDE = 10;
+ private static final int BTN_ADD_COND = 80;
// ── Layout constants ──────────────────────────────────────────────────────
- private static final int L_LABEL_X = 5;
- private static final int ROW_H = 24;
+ private static final int L_LABEL_X = 5;
+ private static final int ROW_H = 24;
private static final int MAX_ENTRIES = 10;
private final ChainedAbility chain;
@@ -109,7 +109,7 @@ public class SubGuiChainedAbilityConfig extends SubGuiInterface implements IText
}
public SubGuiChainedAbilityConfig(ChainedAbility chain, IChainedAbilityConfigCallback callback,
- boolean npcContext, List npcSlots) {
+ boolean npcContext, List npcSlots) {
this.chain = chain;
this.callback = callback;
this.npcContext = npcContext;
@@ -417,10 +417,26 @@ public class SubGuiChainedAbilityConfig extends SubGuiInterface implements IText
int id = guibutton.id;
// Tab switching — core tabs
- if (id == BTN_TAB_GENERAL) { activeTab = TAB_GENERAL; initGui(); return; }
- if (id == BTN_TAB_ENTRIES) { activeTab = TAB_ENTRIES; initGui(); return; }
- if (id == BTN_TAB_CONDITIONS) { activeTab = TAB_CONDITIONS; initGui(); return; }
- if (id == BTN_CLOSE) { saveOnClose = true; close(); return; }
+ if (id == BTN_TAB_GENERAL) {
+ activeTab = TAB_GENERAL;
+ initGui();
+ return;
+ }
+ if (id == BTN_TAB_ENTRIES) {
+ activeTab = TAB_ENTRIES;
+ initGui();
+ return;
+ }
+ if (id == BTN_TAB_CONDITIONS) {
+ activeTab = TAB_CONDITIONS;
+ initGui();
+ return;
+ }
+ if (id == BTN_CLOSE) {
+ saveOnClose = true;
+ close();
+ return;
+ }
// Tab switching — extra tabs
if (id >= BTN_TAB_EXTRA_BASE && id < BTN_TAB_EXTRA_BASE + extraTabs.size()) {
@@ -575,12 +591,35 @@ public class SubGuiChainedAbilityConfig extends SubGuiInterface implements IText
}
}
- if (subgui instanceof SubGuiAbilitySelect) { handleAbilitySelectClosed((SubGuiAbilitySelect) subgui); initGui(); return; }
- if (subgui instanceof SubGuiChainedEntrySource) { handleEntrySourceClosed((SubGuiChainedEntrySource) subgui); return; }
- if (subgui instanceof SubGuiNpcSlotPicker) { handleSlotPickerClosed((SubGuiNpcSlotPicker) subgui); initGui(); return; }
- if (subgui instanceof SubGuiAbilityTypeSelect) { handleTypeSelectClosed((SubGuiAbilityTypeSelect) subgui); if (!hasSubGui()) initGui(); return; }
- if (subgui instanceof SubGuiAbilityConfig) { editingEntryIndex = -1; initGui(); return; }
- if (subgui instanceof SubGuiConditionEdit) { handleConditionEditClosed((SubGuiConditionEdit) subgui); initGui(); return; }
+ if (subgui instanceof SubGuiAbilitySelect) {
+ handleAbilitySelectClosed((SubGuiAbilitySelect) subgui);
+ initGui();
+ return;
+ }
+ if (subgui instanceof SubGuiChainedEntrySource) {
+ handleEntrySourceClosed((SubGuiChainedEntrySource) subgui);
+ return;
+ }
+ if (subgui instanceof SubGuiNpcSlotPicker) {
+ handleSlotPickerClosed((SubGuiNpcSlotPicker) subgui);
+ initGui();
+ return;
+ }
+ if (subgui instanceof SubGuiAbilityTypeSelect) {
+ handleTypeSelectClosed((SubGuiAbilityTypeSelect) subgui);
+ if (!hasSubGui()) initGui();
+ return;
+ }
+ if (subgui instanceof SubGuiAbilityConfig) {
+ editingEntryIndex = -1;
+ initGui();
+ return;
+ }
+ if (subgui instanceof SubGuiConditionEdit) {
+ handleConditionEditClosed((SubGuiConditionEdit) subgui);
+ initGui();
+ return;
+ }
}
private void handleAbilitySelectClosed(SubGuiAbilitySelect gui) {
diff --git a/src/main/java/noppes/npcs/client/gui/builder/FieldDef.java b/src/main/java/noppes/npcs/client/gui/builder/FieldDef.java
index aec4b766a..66e433f45 100644
--- a/src/main/java/noppes/npcs/client/gui/builder/FieldDef.java
+++ b/src/main/java/noppes/npcs/client/gui/builder/FieldDef.java
@@ -2,12 +2,12 @@ package noppes.npcs.client.gui.builder;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
-import noppes.npcs.controllers.AnimationController;
-import noppes.npcs.controllers.data.Animation;
import noppes.npcs.client.gui.SubGuiColorSelector;
import noppes.npcs.client.gui.select.GuiAnimationSelection;
import noppes.npcs.client.gui.select.GuiSoundSelection;
import noppes.npcs.client.gui.util.SubGuiInterface;
+import noppes.npcs.controllers.AnimationController;
+import noppes.npcs.controllers.data.Animation;
import java.util.List;
import java.util.function.BooleanSupplier;
@@ -175,8 +175,8 @@ public class FieldDef {
}
public static FieldDef animSubGui(String label,
- Supplier idGetter, Consumer idSetter,
- Supplier nameGetter, Consumer nameSetter) {
+ Supplier idGetter, Consumer idSetter,
+ Supplier nameGetter, Consumer nameSetter) {
return subGuiField(label,
() -> new GuiAnimationSelection(idGetter.get(), nameGetter.get()),
gui -> {
@@ -202,7 +202,10 @@ public class FieldDef {
}
return "gui.none";
})
- .clearable(() -> { idSetter.accept(-1); nameSetter.accept(""); });
+ .clearable(() -> {
+ idSetter.accept(-1);
+ nameSetter.accept("");
+ });
}
// ═══════════════════════════════════════════════════════════════════
@@ -264,21 +267,65 @@ public class FieldDef {
// GETTERS
// ═══════════════════════════════════════════════════════════════════
- public String getLabel() { return label; }
- public FieldType getType() { return type; }
- public String getTab() { return tab; }
- public boolean isVisible() { return visibleWhen.getAsBoolean(); }
- public boolean isEnabled() { return enabledWhen.getAsBoolean(); }
- public String getHoverText() { return hoverText; }
- public float getMin() { return min; }
- public float getMax() { return max; }
- public boolean hasRange() { return min != Float.NEGATIVE_INFINITY || max != Float.POSITIVE_INFINITY; }
- public Class extends Enum>> getEnumClass() { return enumClass; }
- public String[] getStringEnumValues() { return stringEnumValues; }
- public Supplier getSubGuiFactory() { return subGuiFactory; }
- public Consumer getSubGuiResultHandler() { return subGuiResultHandler; }
- public boolean hasClearAction() { return clearAction != null; }
- public Runnable getClearAction() { return clearAction; }
+ public String getLabel() {
+ return label;
+ }
+
+ public FieldType getType() {
+ return type;
+ }
+
+ public String getTab() {
+ return tab;
+ }
+
+ public boolean isVisible() {
+ return visibleWhen.getAsBoolean();
+ }
+
+ public boolean isEnabled() {
+ return enabledWhen.getAsBoolean();
+ }
+
+ public String getHoverText() {
+ return hoverText;
+ }
+
+ public float getMin() {
+ return min;
+ }
+
+ public float getMax() {
+ return max;
+ }
+
+ public boolean hasRange() {
+ return min != Float.NEGATIVE_INFINITY || max != Float.POSITIVE_INFINITY;
+ }
+
+ public Class extends Enum>> getEnumClass() {
+ return enumClass;
+ }
+
+ public String[] getStringEnumValues() {
+ return stringEnumValues;
+ }
+
+ public Supplier getSubGuiFactory() {
+ return subGuiFactory;
+ }
+
+ public Consumer getSubGuiResultHandler() {
+ return subGuiResultHandler;
+ }
+
+ public boolean hasClearAction() {
+ return clearAction != null;
+ }
+
+ public Runnable getClearAction() {
+ return clearAction;
+ }
public Object getValue() {
return getter != null ? getter.get() : null;
@@ -305,8 +352,13 @@ public class FieldDef {
return buttonTextColorSupplier != null ? buttonTextColorSupplier.get() : null;
}
- public FieldDef getLeftChild() { return leftChild; }
- public FieldDef getRightChild() { return rightChild; }
+ public FieldDef getLeftChild() {
+ return leftChild;
+ }
+
+ public FieldDef getRightChild() {
+ return rightChild;
+ }
// ═══════════════════════════════════════════════════════════════════
// LIST MANIPULATION (for mod injection)
@@ -356,7 +408,7 @@ public class FieldDef {
*
* @param fields The field list to modify
* @param targetLabel The label of the field to modify
- * @param condition The condition to replace
+ * @param condition The condition to replace
* @return true if the target was found and the condition was modified
*/
public static boolean modifyVisibility(List fields, String targetLabel, BooleanSupplier condition) {
diff --git a/src/main/java/noppes/npcs/client/gui/builder/GuiFieldBuilder.java b/src/main/java/noppes/npcs/client/gui/builder/GuiFieldBuilder.java
index 1ef3d52e5..bb069b8f5 100644
--- a/src/main/java/noppes/npcs/client/gui/builder/GuiFieldBuilder.java
+++ b/src/main/java/noppes/npcs/client/gui/builder/GuiFieldBuilder.java
@@ -69,13 +69,32 @@ public class GuiFieldBuilder {
// CONFIG CHAINING
// ═══════════════════════════════════════════════════════════════════
- public GuiFieldBuilder scrollWindowId(int id) { this.scrollWindowId = id; return this; }
- public GuiFieldBuilder contentRight(int v) { this.contentRight = v; return this; }
- public GuiFieldBuilder startIds(int widget, int clear, int label) {
- this.widgetId = widget; this.clearId = clear; this.labelId = label; return this;
+ public GuiFieldBuilder scrollWindowId(int id) {
+ this.scrollWindowId = id;
+ return this;
+ }
+
+ public GuiFieldBuilder contentRight(int v) {
+ this.contentRight = v;
+ return this;
+ }
+
+ public GuiFieldBuilder startIds(int widget, int clear, int label) {
+ this.widgetId = widget;
+ this.clearId = clear;
+ this.labelId = label;
+ return this;
+ }
+
+ public GuiFieldBuilder startY(int y) {
+ this.startY = y;
+ return this;
+ }
+
+ public GuiFieldBuilder rowHeight(int h) {
+ this.rowHeight = h;
+ return this;
}
- public GuiFieldBuilder startY(int y) { this.startY = y; return this; }
- public GuiFieldBuilder rowHeight(int h) { this.rowHeight = h; return this; }
// ═══════════════════════════════════════════════════════════════════
// BUILD
@@ -98,6 +117,7 @@ public class GuiFieldBuilder {
/**
* Processes all fields and adds widgets to the scroll window.
+ *
* @return the final Y position after all fields
*/
protected int build(List fields) {
@@ -173,8 +193,14 @@ public class GuiFieldBuilder {
}
private int lastHandledIndex = -1;
- protected void setLastHandledIndex(int index) { this.lastHandledIndex = index; }
- protected int getLastHandledIndex() { return lastHandledIndex; }
+
+ protected void setLastHandledIndex(int index) {
+ this.lastHandledIndex = index;
+ }
+
+ protected int getLastHandledIndex() {
+ return lastHandledIndex;
+ }
// ═══════════════════════════════════════════════════════════════════
// FIELD RENDERING
@@ -268,7 +294,10 @@ public class GuiFieldBuilder {
String curVal = def.getStringEnumValue();
int selected = 0;
for (int i = 0; i < values.length; i++) {
- if (values[i].equals(curVal)) { selected = i; break; }
+ if (values[i].equals(curVal)) {
+ selected = i;
+ break;
+ }
}
GuiNpcButton btn = new GuiNpcButton(widgetId, fieldX, y, fieldW, 20, values, selected);
if (!def.isEnabled()) btn.setEnabled(false);
@@ -321,14 +350,21 @@ public class GuiFieldBuilder {
protected int getFullFieldWidth(FieldDef def) {
switch (def.getType()) {
case FLOAT:
- case INT: return 60;
- case STRING: return 200;
- case BOOLEAN: return 50;
- case LABEL: return 60;
+ case INT:
+ return 60;
+ case STRING:
+ return 200;
+ case BOOLEAN:
+ return 50;
+ case LABEL:
+ return 60;
case ENUM:
- case STRING_ENUM: return 120;
- case SUB_GUI: return def.hasClearAction() ? 175 : 200;
- default: return 80;
+ case STRING_ENUM:
+ return 120;
+ case SUB_GUI:
+ return def.hasClearAction() ? 175 : 200;
+ default:
+ return 80;
}
}
@@ -410,7 +446,8 @@ public class GuiFieldBuilder {
def.setValue(newVal);
return true;
}
- } catch (NumberFormatException ignored) {}
+ } catch (NumberFormatException ignored) {
+ }
return false;
case INT:
try {
@@ -421,7 +458,8 @@ public class GuiFieldBuilder {
def.setValue(newVal);
return true;
}
- } catch (NumberFormatException ignored) {}
+ } catch (NumberFormatException ignored) {
+ }
return false;
case STRING:
String newVal = field.getText();
@@ -453,10 +491,27 @@ public class GuiFieldBuilder {
// GETTERS
// ═══════════════════════════════════════════════════════════════════
- public Map getButtonFieldMap() { return buttonFieldMap; }
- public Map getTextFieldMap() { return textFieldMap; }
- public Map getClearFieldMap() { return clearFieldMap; }
- public GuiScrollWindow getScrollWindow() { return sw; }
- public int getLastBuildY() { return lastBuildY; }
- public int getNextLabelId() { return labelId; }
+ public Map getButtonFieldMap() {
+ return buttonFieldMap;
+ }
+
+ public Map getTextFieldMap() {
+ return textFieldMap;
+ }
+
+ public Map getClearFieldMap() {
+ return clearFieldMap;
+ }
+
+ public GuiScrollWindow getScrollWindow() {
+ return sw;
+ }
+
+ public int getLastBuildY() {
+ return lastBuildY;
+ }
+
+ public int getNextLabelId() {
+ return labelId;
+ }
}
diff --git a/src/main/java/noppes/npcs/client/gui/global/GuiNpcManageAbilities.java b/src/main/java/noppes/npcs/client/gui/global/GuiNpcManageAbilities.java
index fef120604..52ddbba9d 100644
--- a/src/main/java/noppes/npcs/client/gui/global/GuiNpcManageAbilities.java
+++ b/src/main/java/noppes/npcs/client/gui/global/GuiNpcManageAbilities.java
@@ -1,7 +1,8 @@
package noppes.npcs.client.gui.global;
-import kamkeel.npcs.controllers.data.ability.Ability;
import kamkeel.npcs.controllers.AbilityController;
+import kamkeel.npcs.controllers.data.ability.Ability;
+import kamkeel.npcs.controllers.data.ability.AbilityVariant;
import kamkeel.npcs.controllers.data.ability.ChainedAbility;
import kamkeel.npcs.network.PacketClient;
import kamkeel.npcs.network.packets.request.ability.BuiltInAbilityGetPacket;
@@ -19,7 +20,6 @@ import net.minecraft.client.gui.GuiYesNoCallback;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.StatCollector;
import noppes.npcs.client.NoppesUtil;
-import kamkeel.npcs.controllers.data.ability.AbilityVariant;
import noppes.npcs.client.gui.advanced.SubGuiAbilityTypeSelect;
import noppes.npcs.client.gui.advanced.SubGuiAbilityVariantSelect;
import noppes.npcs.client.gui.advanced.SubGuiChainedAbilityConfig;
@@ -50,7 +50,7 @@ import java.util.Vector;
/**
* Global GUI for managing saved ability presets with 3D preview.
- *
+ *
* Features:
* - Left side: 3D preview of NPC with ability effects
* - Right side: Ability list with search
@@ -58,29 +58,29 @@ import java.util.Vector;
* - Toggle between Custom and Built-in ability views
*/
public class GuiNpcManageAbilities extends GuiAbilityInterface
- implements ICustomScrollListener, ISubGuiListener, IAbilityConfigCallback,
- IChainedAbilityConfigCallback, ITextfieldListener, GuiYesNoCallback,
- IScrollData, IGuiData {
+ implements ICustomScrollListener, ISubGuiListener, IAbilityConfigCallback,
+ IChainedAbilityConfigCallback, ITextfieldListener, GuiYesNoCallback,
+ IScrollData, IGuiData {
// ── Button IDs ────────────────────────────────────────────────────────────
- private static final int BTN_REMOVE = 1;
- private static final int BTN_ADD = 2;
- private static final int BTN_TOGGLE_VIEW = 10;
- private static final int BTN_EDIT = 100;
- private static final int BTN_PREVIEW_PLAY = 91;
- private static final int BTN_PREVIEW_PAUSE = 92;
- private static final int BTN_PREVIEW_STOP = 93;
+ private static final int BTN_REMOVE = 1;
+ private static final int BTN_ADD = 2;
+ private static final int BTN_TOGGLE_VIEW = 10;
+ private static final int BTN_EDIT = 100;
+ private static final int BTN_PREVIEW_PLAY = 91;
+ private static final int BTN_PREVIEW_PAUSE = 92;
+ private static final int BTN_PREVIEW_STOP = 93;
// ── TextField / Label IDs ─────────────────────────────────────────────────
- private static final int TF_SEARCH = 55;
+ private static final int TF_SEARCH = 55;
private static final int LBL_PREVIEW_STATUS = 90;
// ── Scroll IDs ────────────────────────────────────────────────────────────
- private static final int SCROLL_MAIN = 0;
+ private static final int SCROLL_MAIN = 0;
// ── Confirm dialog IDs ────────────────────────────────────────────────────
private static final int CONFIRM_REMOVE_ABILITY = 1;
- private static final int CONFIRM_REMOVE_CHAIN = 2;
+ private static final int CONFIRM_REMOVE_CHAIN = 2;
// ==================== DATA ====================
private GuiCustomScroll scroll;
@@ -474,11 +474,20 @@ public class GuiNpcManageAbilities extends GuiAbilityInterface
@Override
public void subGuiClosed(SubGuiInterface subgui) {
- if (subgui instanceof SubGuiChainedAbilityConfig) { handleChainConfigClosed(); initGui(); return; }
- if (subgui instanceof SubGuiAbilityVariantSelect) { if (handleVariantSelectClosed((SubGuiAbilityVariantSelect) subgui)) return; }
- else if (subgui instanceof SubGuiAbilityTypeSelect) { if (handleTypeSelectClosed((SubGuiAbilityTypeSelect) subgui)) return; }
- else if (subgui instanceof SubGuiDuplicateNameConfirm) { if (handleDuplicateNameClosed((SubGuiDuplicateNameConfirm) subgui)) return; }
- else if (pendingSaveAbility != null) { if (handlePendingSave()) return; }
+ if (subgui instanceof SubGuiChainedAbilityConfig) {
+ handleChainConfigClosed();
+ initGui();
+ return;
+ }
+ if (subgui instanceof SubGuiAbilityVariantSelect) {
+ if (handleVariantSelectClosed((SubGuiAbilityVariantSelect) subgui)) return;
+ } else if (subgui instanceof SubGuiAbilityTypeSelect) {
+ if (handleTypeSelectClosed((SubGuiAbilityTypeSelect) subgui)) return;
+ } else if (subgui instanceof SubGuiDuplicateNameConfirm) {
+ if (handleDuplicateNameClosed((SubGuiDuplicateNameConfirm) subgui)) return;
+ } else if (pendingSaveAbility != null) {
+ if (handlePendingSave()) return;
+ }
initGui();
}
@@ -491,7 +500,9 @@ public class GuiNpcManageAbilities extends GuiAbilityInterface
}
}
- /** @return true if a SubGui was opened (caller should return early, skipping initGui) */
+ /**
+ * @return true if a SubGui was opened (caller should return early, skipping initGui)
+ */
private boolean handleVariantSelectClosed(SubGuiAbilityVariantSelect gui) {
int idx = gui.getSelectedIndex();
if (idx >= 0 && pendingTypeId != null) {
@@ -514,7 +525,9 @@ public class GuiNpcManageAbilities extends GuiAbilityInterface
return false;
}
- /** @return true if a SubGui was opened (caller should return early, skipping initGui) */
+ /**
+ * @return true if a SubGui was opened (caller should return early, skipping initGui)
+ */
private boolean handleTypeSelectClosed(SubGuiAbilityTypeSelect gui) {
String typeId = gui.getSelectedTypeId();
if (typeId != null) {
@@ -542,7 +555,9 @@ public class GuiNpcManageAbilities extends GuiAbilityInterface
return false;
}
- /** @return true if a SubGui was opened (caller should return early, skipping initGui) */
+ /**
+ * @return true if a SubGui was opened (caller should return early, skipping initGui)
+ */
private boolean handleDuplicateNameClosed(SubGuiDuplicateNameConfirm gui) {
if (gui.isConfirmed() && pendingSaveAbility != null) {
if (pendingNewCreation) {
@@ -569,7 +584,9 @@ public class GuiNpcManageAbilities extends GuiAbilityInterface
return false;
}
- /** @return true if a SubGui was opened (caller should return early, skipping initGui) */
+ /**
+ * @return true if a SubGui was opened (caller should return early, skipping initGui)
+ */
private boolean handlePendingSave() {
if (hasDuplicateName(pendingSaveAbility)) {
pendingNewCreation = false;
diff --git a/src/main/java/noppes/npcs/client/gui/player/AuctionTooltipHandler.java b/src/main/java/noppes/npcs/client/gui/player/AuctionTooltipHandler.java
index a9473f2e9..f07cb5ac6 100644
--- a/src/main/java/noppes/npcs/client/gui/player/AuctionTooltipHandler.java
+++ b/src/main/java/noppes/npcs/client/gui/player/AuctionTooltipHandler.java
@@ -12,20 +12,20 @@ import net.minecraft.util.StatCollector;
import net.minecraftforge.event.entity.player.ItemTooltipEvent;
import noppes.npcs.client.AuctionClientConfig;
import noppes.npcs.constants.EnumClaimType;
-import noppes.npcs.util.AuctionFormatUtil;
import noppes.npcs.containers.ContainerAuctionListing;
import noppes.npcs.containers.ContainerAuctionSell;
import noppes.npcs.containers.ContainerAuctionTrades;
import noppes.npcs.containers.SlotAuctionDisplay;
import noppes.npcs.controllers.data.AuctionClaim;
import noppes.npcs.controllers.data.AuctionListing;
+import noppes.npcs.util.AuctionFormatUtil;
import java.util.List;
/**
* Handles adding auction information to item tooltips when viewing auction GUIs.
* Called from ItemTooltipEvent in ClientEventHandler.
- *
+ *
* Uses slot-based lookup (slot index) instead of ItemStack comparison to correctly
* handle duplicate items with different auction data (e.g., two porkchops at different prices).
*/
diff --git a/src/main/java/noppes/npcs/client/gui/player/GuiAuctionBidding.java b/src/main/java/noppes/npcs/client/gui/player/GuiAuctionBidding.java
index f74a354df..61634bb0a 100644
--- a/src/main/java/noppes/npcs/client/gui/player/GuiAuctionBidding.java
+++ b/src/main/java/noppes/npcs/client/gui/player/GuiAuctionBidding.java
@@ -82,7 +82,9 @@ public class GuiAuctionBidding extends GuiAuctionInterface implements ISubGuiLis
return -1;
}
- /** Update button visibility based on listing state */
+ /**
+ * Update button visibility based on listing state
+ */
private void updateButtonState() {
if (listing == null) {
if (btnBid != null) btnBid.setVisible(false);
@@ -185,7 +187,9 @@ public class GuiAuctionBidding extends GuiAuctionInterface implements ISubGuiLis
drawAuctionInfo();
}
- /** Draw auction listing information on the right side */
+ /**
+ * Draw auction listing information on the right side
+ */
private void drawAuctionInfo() {
int x = guiLeft + infoX;
int y = guiTop + infoY;
@@ -226,7 +230,7 @@ public class GuiAuctionBidding extends GuiAuctionInterface implements ISubGuiLis
label = AuctionFormatUtil.formatCurrency(listing.startingPrice);
length = fontRendererObj.getStringWidth(label);
- fontRendererObj.drawString(EnumChatFormatting.GOLD + label, xRight - length, y, 0xFFFFFF);
+ fontRendererObj.drawString(EnumChatFormatting.GOLD + label, xRight - length, y, 0xFFFFFF);
y += lineHeight + 4;
}
@@ -237,7 +241,7 @@ public class GuiAuctionBidding extends GuiAuctionInterface implements ISubGuiLis
label = AuctionFormatUtil.formatCurrency(listing.buyoutPrice);
length = fontRendererObj.getStringWidth(label);
- fontRendererObj.drawString(EnumChatFormatting.GREEN + label, xRight - length, y, 0xFFFFFF);
+ fontRendererObj.drawString(EnumChatFormatting.GREEN + label, xRight - length, y, 0xFFFFFF);
y += lineHeight + 4;
}
@@ -306,5 +310,7 @@ public class GuiAuctionBidding extends GuiAuctionInterface implements ISubGuiLis
// Block all slot interactions - view only
}
- public AuctionListing getListing() { return listing; }
+ public AuctionListing getListing() {
+ return listing;
+ }
}
diff --git a/src/main/java/noppes/npcs/client/gui/player/GuiAuctionInterface.java b/src/main/java/noppes/npcs/client/gui/player/GuiAuctionInterface.java
index e6e87383a..048260d4c 100644
--- a/src/main/java/noppes/npcs/client/gui/player/GuiAuctionInterface.java
+++ b/src/main/java/noppes/npcs/client/gui/player/GuiAuctionInterface.java
@@ -69,7 +69,9 @@ public abstract class GuiAuctionInterface extends GuiContainerNPCInterface {
initNavigationButtons();
}
- /** Initialize navigation buttons */
+ /**
+ * Initialize navigation buttons
+ */
protected void initNavigationButtons() {
int page = getCurrentPage();
@@ -89,7 +91,9 @@ public abstract class GuiAuctionInterface extends GuiContainerNPCInterface {
addButton(btnClaims);
}
- /** Returns current page constant - implement in subclass */
+ /**
+ * Returns current page constant - implement in subclass
+ */
protected abstract int getCurrentPage();
@Override
@@ -136,7 +140,9 @@ public abstract class GuiAuctionInterface extends GuiContainerNPCInterface {
}
}
- /** Draw navigation button tooltips */
+ /**
+ * Draw navigation button tooltips
+ */
protected void drawNavButtonTooltips(int mouseX, int mouseY) {
List tooltip = null;
if (btnListings != null && btnListings.isHovered()) tooltip = btnListings.getTooltipLines();
@@ -154,14 +160,18 @@ public abstract class GuiAuctionInterface extends GuiContainerNPCInterface {
// ========== Slot Drawing Utilities ==========
- /** Draw auction slot background (18x18) */
+ /**
+ * Draw auction slot background (18x18)
+ */
protected void drawAuctionSlot(int x, int y) {
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
mc.renderEngine.bindTexture(AUCTION_SLOT);
Gui.func_146110_a(x, y, 0, 0, 18, 18, 18, 18);
}
- /** Draw colored overlay on slot (ARGB format) */
+ /**
+ * Draw colored overlay on slot (ARGB format)
+ */
protected void drawColoredOverlay(int x, int y, int color) {
GL11.glDisable(GL11.GL_LIGHTING);
GL11.glDisable(GL11.GL_DEPTH_TEST);
@@ -173,12 +183,16 @@ public abstract class GuiAuctionInterface extends GuiContainerNPCInterface {
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
}
- /** Draw dark overlay for unavailable slots */
+ /**
+ * Draw dark overlay for unavailable slots
+ */
protected void drawDarkenedOverlay(int x, int y) {
drawColoredOverlay(x, y, OVERLAY_DARK);
}
- /** Draw icon texture on slot (16x16) */
+ /**
+ * Draw icon texture on slot (16x16)
+ */
protected void drawIconOverlay(int x, int y, ResourceLocation icon) {
GL11.glPushMatrix();
GL11.glPushAttrib(GL11.GL_ALL_ATTRIB_BITS);
@@ -192,7 +206,9 @@ public abstract class GuiAuctionInterface extends GuiContainerNPCInterface {
GL11.glPopMatrix();
}
- /** Subclasses implement this to draw specific content */
+ /**
+ * Subclasses implement this to draw specific content
+ */
protected abstract void drawAuctionContent(float partialTicks, int mouseX, int mouseY);
@Override
diff --git a/src/main/java/noppes/npcs/client/gui/player/GuiAuctionListing.java b/src/main/java/noppes/npcs/client/gui/player/GuiAuctionListing.java
index c08569598..85312f5ad 100644
--- a/src/main/java/noppes/npcs/client/gui/player/GuiAuctionListing.java
+++ b/src/main/java/noppes/npcs/client/gui/player/GuiAuctionListing.java
@@ -98,12 +98,16 @@ public class GuiAuctionListing extends GuiAuctionInterface implements ISubGuiLis
return PAGE_LISTINGS;
}
- /** Request listings from server */
+ /**
+ * Request listings from server
+ */
private void requestListings() {
AuctionActionPacket.requestListings(filter, currentPage);
}
- /** Update pagination button visibility based on current page state */
+ /**
+ * Update pagination button visibility based on current page state
+ */
private void updatePaginationVisibility() {
if (btnPageUp != null) {
btnPageUp.setVisible(currentPage > 0);
@@ -193,7 +197,8 @@ public class GuiAuctionListing extends GuiAuctionInterface implements ISubGuiLis
}
@Override
- public void subGuiClosed(SubGuiInterface subgui) {}
+ public void subGuiClosed(SubGuiInterface subgui) {
+ }
// ========== Data Handling ==========
@@ -294,6 +299,11 @@ public class GuiAuctionListing extends GuiAuctionInterface implements ISubGuiLis
// Block other slot interactions
}
- public AuctionFilter getFilter() { return filter; }
- public ContainerAuctionListing getListingContainer() { return listingContainer; }
+ public AuctionFilter getFilter() {
+ return filter;
+ }
+
+ public ContainerAuctionListing getListingContainer() {
+ return listingContainer;
+ }
}
diff --git a/src/main/java/noppes/npcs/client/gui/player/GuiAuctionSell.java b/src/main/java/noppes/npcs/client/gui/player/GuiAuctionSell.java
index 5b514cff6..af87ab39b 100644
--- a/src/main/java/noppes/npcs/client/gui/player/GuiAuctionSell.java
+++ b/src/main/java/noppes/npcs/client/gui/player/GuiAuctionSell.java
@@ -7,16 +7,16 @@ import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.StatCollector;
+import noppes.npcs.client.AuctionClientConfig;
import noppes.npcs.client.NoppesUtil;
import noppes.npcs.client.gui.util.GuiAuctionNavButton;
import noppes.npcs.client.gui.util.GuiNpcButton;
import noppes.npcs.client.gui.util.GuiNpcLabel;
import noppes.npcs.client.gui.util.GuiNpcTextField;
import noppes.npcs.client.gui.util.ITextfieldListener;
-import noppes.npcs.client.AuctionClientConfig;
import noppes.npcs.containers.ContainerAuctionSell;
-import noppes.npcs.util.AuctionFormatUtil;
import noppes.npcs.entity.EntityNPCInterface;
+import noppes.npcs.util.AuctionFormatUtil;
import org.lwjgl.opengl.GL11;
import java.util.ArrayList;
@@ -105,7 +105,9 @@ public class GuiAuctionSell extends GuiAuctionInterface implements ITextfieldLis
return PAGE_SELL;
}
- /** Update visibility of buyout price field based on toggle state */
+ /**
+ * Update visibility of buyout price field based on toggle state
+ */
private void updateBuyoutVisibility() {
if (lblBuyout != null) {
lblBuyout.enabled = allowBuyout;
@@ -119,7 +121,9 @@ public class GuiAuctionSell extends GuiAuctionInterface implements ITextfieldLis
}
}
- /** Update the buyout toggle button tooltip */
+ /**
+ * Update the buyout toggle button tooltip
+ */
private void updateBuyoutTooltip() {
if (btnAllowBuyout == null) return;
@@ -252,7 +256,9 @@ public class GuiAuctionSell extends GuiAuctionInterface implements ITextfieldLis
drawSellSlotIndicator(slotX, slotY);
}
- /** Draw indicator showing staged vs available items */
+ /**
+ * Draw indicator showing staged vs available items
+ */
private void drawSellSlotIndicator(int slotX, int slotY) {
ItemStack sellItem = sellContainer.getItemToSell();
if (sellItem != null) {
@@ -310,7 +316,9 @@ public class GuiAuctionSell extends GuiAuctionInterface implements ITextfieldLis
drawSellPageTooltips(mouseX, mouseY);
}
- /** Draw tooltips for sell page buttons */
+ /**
+ * Draw tooltips for sell page buttons
+ */
private void drawSellPageTooltips(int mouseX, int mouseY) {
List tooltip = null;
diff --git a/src/main/java/noppes/npcs/client/gui/player/GuiAuctionTrades.java b/src/main/java/noppes/npcs/client/gui/player/GuiAuctionTrades.java
index f52d5fa63..45a527dca 100644
--- a/src/main/java/noppes/npcs/client/gui/player/GuiAuctionTrades.java
+++ b/src/main/java/noppes/npcs/client/gui/player/GuiAuctionTrades.java
@@ -50,7 +50,7 @@ public class GuiAuctionTrades extends GuiAuctionInterface implements IGuiData {
private int pendingSlot = -1;
private PendingOp pendingOp = PendingOp.NONE;
- private enum PendingOp { NONE, CANCEL, CLAIM }
+ private enum PendingOp {NONE, CANCEL, CLAIM}
public GuiAuctionTrades(EntityNPCInterface npc, ContainerAuctionTrades container) {
super(npc, container);
@@ -117,7 +117,9 @@ public class GuiAuctionTrades extends GuiAuctionInterface implements IGuiData {
}
}
- /** Handle click on pending operation slot */
+ /**
+ * Handle click on pending operation slot
+ */
private void handlePendingClick(int mouseButton) {
if (pendingOp == PendingOp.CANCEL && mouseButton == 1) {
// Right-click confirms cancel
@@ -159,14 +161,18 @@ public class GuiAuctionTrades extends GuiAuctionInterface implements IGuiData {
}
}
- /** Set pending operation and hide slot item */
+ /**
+ * Set pending operation and hide slot item
+ */
private void setPending(int slot, PendingOp op) {
pendingSlot = slot;
pendingOp = op;
tradesContainer.setHiddenSlot(slot);
}
- /** Clear pending operation and restore slot */
+ /**
+ * Clear pending operation and restore slot
+ */
private void clearPending() {
if (pendingSlot >= 0) {
tradesContainer.clearHiddenSlot();
@@ -175,13 +181,17 @@ public class GuiAuctionTrades extends GuiAuctionInterface implements IGuiData {
pendingOp = PendingOp.NONE;
}
- /** Play confirmation sound */
+ /**
+ * Play confirmation sound
+ */
private void playConfirmSound() {
mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(
new ResourceLocation("random.orb"), 1.0F));
}
- /** Get slot index at mouse position */
+ /**
+ * Get slot index at mouse position
+ */
private int getSlotAt(int mouseX, int mouseY) {
int relX = mouseX - guiLeft - GRID_X;
int relY = mouseY - guiTop - GRID_Y;
@@ -239,7 +249,9 @@ public class GuiAuctionTrades extends GuiAuctionInterface implements IGuiData {
}
}
- /** Get tint color for slot based on contents */
+ /**
+ * Get tint color for slot based on contents
+ */
private int getSlotTint(int slot) {
AuctionListing listing = tradesContainer.getListingAt(slot);
AuctionClaim claim = tradesContainer.getClaimAt(slot);
@@ -281,7 +293,9 @@ public class GuiAuctionTrades extends GuiAuctionInterface implements IGuiData {
}
}
- /** Draw tooltip for a trade slot */
+ /**
+ * Draw tooltip for a trade slot
+ */
private void drawTradeTooltip(int slot, int x, int y) {
List tooltip = new ArrayList<>();
diff --git a/src/main/java/noppes/npcs/client/gui/select/GuiAnimationSelection.java b/src/main/java/noppes/npcs/client/gui/select/GuiAnimationSelection.java
index 7161722d5..e6f2ce61c 100644
--- a/src/main/java/noppes/npcs/client/gui/select/GuiAnimationSelection.java
+++ b/src/main/java/noppes/npcs/client/gui/select/GuiAnimationSelection.java
@@ -5,7 +5,6 @@ import kamkeel.npcs.network.packets.request.animation.AnimationsGetPacket;
import net.minecraft.client.gui.GuiButton;
import noppes.npcs.client.gui.util.GuiCustomScroll;
import noppes.npcs.client.gui.util.GuiNpcButton;
-import noppes.npcs.client.gui.util.GuiNpcLabel;
import noppes.npcs.client.gui.util.GuiNpcTextField;
import noppes.npcs.client.gui.util.ICustomScrollListener;
import noppes.npcs.client.gui.util.IScrollData;
diff --git a/src/main/java/noppes/npcs/client/gui/util/AbilityPreviewExecutor.java b/src/main/java/noppes/npcs/client/gui/util/AbilityPreviewExecutor.java
index 6ed26666f..6d2534633 100644
--- a/src/main/java/noppes/npcs/client/gui/util/AbilityPreviewExecutor.java
+++ b/src/main/java/noppes/npcs/client/gui/util/AbilityPreviewExecutor.java
@@ -19,10 +19,10 @@ import java.util.List;
/**
* Client-side executor for previewing abilities in the GUI.
- *
+ *
* Uses unified execution: calls the REAL ability methods (onWindUpTick, onExecute, onActiveTick)
* with previewMode=true. Abilities skip damage/effects/sounds when isPreview() returns true.
- *
+ *
* Lifecycle:
* 1. WINDUP phase - real onWindUpTick() called, telegraph shown, entities may spawn
* 2. ACTIVE phase - real onExecute() then onActiveTick() called, physics simulated
@@ -36,8 +36,11 @@ public class AbilityPreviewExecutor implements PreviewEntityHandler {
private Ability previewAbility;
private EntityNPCInterface previewNpc;
- /** Executor's own phase tracking (separate from ability.getPhase()) */
- private enum ExecutorPhase { IDLE, WINDUP, ACTIVE, EXTENDED }
+ /**
+ * Executor's own phase tracking (separate from ability.getPhase())
+ */
+ private enum ExecutorPhase {IDLE, WINDUP, ACTIVE, EXTENDED}
+
private ExecutorPhase executorPhase = ExecutorPhase.IDLE;
private int currentTick = 0;
@@ -424,21 +427,48 @@ public class AbilityPreviewExecutor implements PreviewEntityHandler {
// ==================== GETTERS ====================
- public boolean isPlaying() { return playing; }
- public boolean isPaused() { return paused; }
- public boolean isActive() { return playing || paused; }
+ public boolean isPlaying() {
+ return playing;
+ }
+
+ public boolean isPaused() {
+ return paused;
+ }
+
+ public boolean isActive() {
+ return playing || paused;
+ }
+
public AbilityPhase getPhase() {
switch (executorPhase) {
- case WINDUP: return AbilityPhase.WINDUP;
- case ACTIVE: return AbilityPhase.ACTIVE;
- default: return AbilityPhase.IDLE;
+ case WINDUP:
+ return AbilityPhase.WINDUP;
+ case ACTIVE:
+ return AbilityPhase.ACTIVE;
+ default:
+ return AbilityPhase.IDLE;
}
}
- public int getCurrentTick() { return currentTick; }
- public TelegraphInstance getTelegraph() { return previewTelegraph; }
- public List getPreviewEntities() { return previewEntities; }
- public Ability getPreviewAbility() { return previewAbility; }
- public EntityNPCInterface getPreviewNpc() { return previewNpc; }
+
+ public int getCurrentTick() {
+ return currentTick;
+ }
+
+ public TelegraphInstance getTelegraph() {
+ return previewTelegraph;
+ }
+
+ public List getPreviewEntities() {
+ return previewEntities;
+ }
+
+ public Ability getPreviewAbility() {
+ return previewAbility;
+ }
+
+ public EntityNPCInterface getPreviewNpc() {
+ return previewNpc;
+ }
public String getStatusString() {
if (!playing && !paused) {
diff --git a/src/main/java/noppes/npcs/client/gui/util/GuiAbilityInterface.java b/src/main/java/noppes/npcs/client/gui/util/GuiAbilityInterface.java
index 74bc3abd0..4bf2ffd58 100644
--- a/src/main/java/noppes/npcs/client/gui/util/GuiAbilityInterface.java
+++ b/src/main/java/noppes/npcs/client/gui/util/GuiAbilityInterface.java
@@ -21,7 +21,7 @@ import java.util.List;
/**
* Base GUI class for ability preview with fixed camera.
- *
+ *
* Key concepts:
* - NPC positioned on left side of preview area
* - NPC faces a fixed direction (NPC_FACING_YAW)
@@ -33,15 +33,23 @@ import java.util.List;
public class GuiAbilityInterface extends GuiNPCInterface2 {
// ==================== FIXED CAMERA SETTINGS ====================
- /** Fixed camera zoom level (higher = more zoomed in) */
+ /**
+ * Fixed camera zoom level (higher = more zoomed in)
+ */
protected static float CAMERA_ZOOM = 45.0f;
- /** NPC facing direction - affects anchor points and visual facing */
+ /**
+ * NPC facing direction - affects anchor points and visual facing
+ */
protected static float NPC_FACING_YAW = 160.0f;
- /** Camera pitch (slight downward angle) */
+ /**
+ * Camera pitch (slight downward angle)
+ */
protected static float CAMERA_PITCH = 10.0f;
// ==================== VIEWING ROTATION ====================
- /** Viewing direction rotation (rotates entire 3D space) */
+ /**
+ * Viewing direction rotation (rotates entire 3D space)
+ */
protected static float viewRotation = 0.0f;
private GuiNpcButton btnLeft, btnRight;
@@ -49,21 +57,33 @@ public class GuiAbilityInterface extends GuiNPCInterface2 {
// ==================== NPC STATE ====================
public EntityNPCInterface npc;
- /** NPC starting position (saved when preview starts, used to track movement) */
+ /**
+ * NPC starting position (saved when preview starts, used to track movement)
+ */
protected double npcStartX, npcStartY, npcStartZ;
- /** Whether we're tracking NPC movement */
+ /**
+ * Whether we're tracking NPC movement
+ */
protected boolean trackingNpcMovement = false;
- /** Entities to render in preview space */
+ /**
+ * Entities to render in preview space
+ */
protected List previewEntities = new ArrayList<>();
- /** Current telegraph to render in preview */
+ /**
+ * Current telegraph to render in preview
+ */
protected TelegraphInstance previewTelegraph;
// ==================== LAYOUT ====================
- /** Preview area bounds */
+ /**
+ * Preview area bounds
+ */
protected int previewX, previewY, previewWidth, previewHeight;
- /** NPC render position on screen */
+ /**
+ * NPC render position on screen
+ */
protected int npcScreenX, npcScreenY;
public int xOffset = 0;
@@ -74,7 +94,7 @@ public class GuiAbilityInterface extends GuiNPCInterface2 {
}
/**
- * @param npc The NPC for preview rendering
+ * @param npc The NPC for preview rendering
* @param hasMenuNpc If false, the top menu tabs (Display, Stats, etc.) are hidden.
* Use false when opened from the global menu without a real NPC.
*/
@@ -99,8 +119,8 @@ public class GuiAbilityInterface extends GuiNPCInterface2 {
previewHeight = 180;
// NPC position: left side of preview, slightly below center
- npcScreenX = previewX + (int)(previewWidth * 0.33f) + xOffset;
- npcScreenY = previewY + (int)(previewHeight * 0.85f) + yOffset;
+ npcScreenX = previewX + (int) (previewWidth * 0.33f) + xOffset;
+ npcScreenY = previewY + (int) (previewHeight * 0.85f) + yOffset;
// Viewing rotation buttons (below preview area)
int btnY = guiTop + 192;
@@ -351,7 +371,7 @@ public class GuiAbilityInterface extends GuiNPCInterface2 {
super.drawBackground();
drawGradientRect(previewX, previewY, previewX + previewWidth, previewY + previewHeight,
- 0xc0101010, 0xd0101010);
+ 0xc0101010, 0xd0101010);
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
}
diff --git a/src/main/java/noppes/npcs/client/gui/util/GuiAuctionNavButton.java b/src/main/java/noppes/npcs/client/gui/util/GuiAuctionNavButton.java
index 665dd2259..a71c9762f 100644
--- a/src/main/java/noppes/npcs/client/gui/util/GuiAuctionNavButton.java
+++ b/src/main/java/noppes/npcs/client/gui/util/GuiAuctionNavButton.java
@@ -64,14 +64,14 @@ public class GuiAuctionNavButton extends GuiNpcButton {
/**
* Create a fully customizable button.
*
- * @param id Button ID
- * @param x X position
- * @param y Y position
- * @param buttonSize Size of the button background texture (e.g., 18 for 18x18, 10 for 10x10)
- * @param iconSize Size of the icon texture (e.g., 16 for 16x16, 8 for 8x8)
- * @param tooltipKey Lang key for tooltip
- * @param iconTexture Icon texture to draw inside the button
- * @param textureNormal Background texture for normal state
+ * @param id Button ID
+ * @param x X position
+ * @param y Y position
+ * @param buttonSize Size of the button background texture (e.g., 18 for 18x18, 10 for 10x10)
+ * @param iconSize Size of the icon texture (e.g., 16 for 16x16, 8 for 8x8)
+ * @param tooltipKey Lang key for tooltip
+ * @param iconTexture Icon texture to draw inside the button
+ * @param textureNormal Background texture for normal state
* @param texturePressed Background texture for pressed/hover state
*/
public GuiAuctionNavButton(int id, int x, int y, int buttonSize, int iconSize, String tooltipKey,
diff --git a/src/main/java/noppes/npcs/client/gui/util/GuiDirectory.java b/src/main/java/noppes/npcs/client/gui/util/GuiDirectory.java
index 750c60668..957237610 100644
--- a/src/main/java/noppes/npcs/client/gui/util/GuiDirectory.java
+++ b/src/main/java/noppes/npcs/client/gui/util/GuiDirectory.java
@@ -4,29 +4,29 @@ package noppes.npcs.client.gui.util;
* Abstract base class for fullscreen directory-browsing GUIs.
* Provides a configurable three-panel layout (left nav, center content, right actions)
* with percentage-based sizing, panel backgrounds/borders, and an optional resizable divider.
- *
+ *
* Subclasses override abstract hooks to populate each panel region.
* Designed for reuse across Cloner, Quest Manager, Dialog Manager, etc.
*/
public abstract class GuiDirectory extends GuiNPCInterface implements ICustomScrollListener, ISubGuiListener {
// ===== LAYOUT CONFIG (subclasses may override in constructor) =====
- protected float leftPanelPercent = 0.20f;
+ protected float leftPanelPercent = 0.20f;
protected float rightPanelPercent = 0.10f;
- protected int minLeftPanelW = 80;
+ protected int minLeftPanelW = 80;
protected int minRightPanelW = 40;
- protected int minCenterW = 100;
+ protected int minCenterW = 100;
// ===== LAYOUT CONSTANTS =====
- protected int pad = 10;
+ protected int pad = 10;
protected int topBarH = 24;
- protected int gap = 4;
- protected int btnH = 20;
+ protected int gap = 4;
+ protected int btnH = 20;
// ===== PANEL COLORS =====
- protected int panelBg = 0xC0101010;
+ protected int panelBg = 0xC0101010;
protected int panelBorder = 0xFF333333;
- protected int topBarBg = 0xC0181818;
+ protected int topBarBg = 0xC0181818;
// ===== COMPUTED LAYOUT (populated by computeLayout) =====
protected int originX, originY, usableW, usableH;
@@ -35,10 +35,10 @@ public abstract class GuiDirectory extends GuiNPCInterface implements ICustomScr
protected int rightX;
// ===== OPTIONAL RESIZABLE DIVIDER (between left and center) =====
- protected boolean enableDivider = false;
- protected int dividerWidth = 5;
- protected int dividerLineHeight = 20;
- protected int minDividerPanelW = 50;
+ protected boolean enableDivider = false;
+ protected int dividerWidth = 5;
+ protected int dividerLineHeight = 20;
+ protected int minDividerPanelW = 50;
private int dividerOffset;
private boolean isDragging = false;
private int dragStartX;
@@ -57,8 +57,8 @@ public abstract class GuiDirectory extends GuiNPCInterface implements ICustomScr
usableW = width - 2 * pad;
usableH = height - 2 * pad;
- leftPanelW = Math.max(minLeftPanelW, (int)(usableW * leftPanelPercent));
- rightPanelW = Math.max(minRightPanelW, (int)(usableW * rightPanelPercent));
+ leftPanelW = Math.max(minLeftPanelW, (int) (usableW * leftPanelPercent));
+ rightPanelW = Math.max(minRightPanelW, (int) (usableW * rightPanelPercent));
if (rightPanelPercent <= 0) {
rightPanelW = 0;
@@ -73,7 +73,7 @@ public abstract class GuiDirectory extends GuiNPCInterface implements ICustomScr
contentX = originX + leftPanelW + gap;
contentY = originY + topBarH + gap;
contentH = usableH - topBarH - gap;
- rightX = contentX + contentW + gap;
+ rightX = contentX + contentW + gap;
if (enableDivider && dividerOffset == 0) {
dividerOffset = leftPanelW;
@@ -128,7 +128,9 @@ public abstract class GuiDirectory extends GuiNPCInterface implements ICustomScr
drawRect(divX + 1, handleTop, divX + dividerWidth - 1, handleTop + dividerLineHeight, 0xFF707070);
}
- /** Override for extra drawing after super.drawScreen (e.g. status text) */
+ /**
+ * Override for extra drawing after super.drawScreen (e.g. status text)
+ */
protected void drawOverlay(int mouseX, int mouseY, float partialTicks) {
}
@@ -177,7 +179,9 @@ public abstract class GuiDirectory extends GuiNPCInterface implements ICustomScr
super.mouseMovedOrUp(mouseX, mouseY, state);
}
- /** Called when divider is dragged. Override to update scroll sizes. */
+ /**
+ * Called when divider is dragged. Override to update scroll sizes.
+ */
protected void onDividerMoved(int newOffset) {
}
@@ -192,15 +196,23 @@ public abstract class GuiDirectory extends GuiNPCInterface implements ICustomScr
// ===== ABSTRACT HOOKS (subclass must implement) =====
- /** Populate top bar buttons. topBtnY is the y-coordinate for the button row. */
+ /**
+ * Populate top bar buttons. topBtnY is the y-coordinate for the button row.
+ */
protected abstract void initTopBar(int topBtnY);
- /** Populate the left navigation panel (scrolls, search fields, buttons). */
+ /**
+ * Populate the left navigation panel (scrolls, search fields, buttons).
+ */
protected abstract void initLeftPanel();
- /** Populate the center content panel (main scroll list). */
+ /**
+ * Populate the center content panel (main scroll list).
+ */
protected abstract void initCenterPanel();
- /** Populate the right action panel. startY is the first button y-coordinate. */
+ /**
+ * Populate the right action panel. startY is the first button y-coordinate.
+ */
protected abstract void initRightPanel(int startY);
}
diff --git a/src/main/java/noppes/npcs/client/gui/util/GuiModelInterface2.java b/src/main/java/noppes/npcs/client/gui/util/GuiModelInterface2.java
index df6651521..37ce2b789 100644
--- a/src/main/java/noppes/npcs/client/gui/util/GuiModelInterface2.java
+++ b/src/main/java/noppes/npcs/client/gui/util/GuiModelInterface2.java
@@ -34,7 +34,7 @@ public class GuiModelInterface2 extends GuiNPCInterface2 {
}
/**
- * @param npc The NPC for preview rendering
+ * @param npc The NPC for preview rendering
* @param hasMenuNpc If false, the top menu tabs (Display, Stats, etc.) are hidden.
* Use false when opened from the global menu without a real NPC.
*/
diff --git a/src/main/java/noppes/npcs/client/gui/util/GuiNpcLabel.java b/src/main/java/noppes/npcs/client/gui/util/GuiNpcLabel.java
index 60b4afdb6..4a1ac4b24 100644
--- a/src/main/java/noppes/npcs/client/gui/util/GuiNpcLabel.java
+++ b/src/main/java/noppes/npcs/client/gui/util/GuiNpcLabel.java
@@ -60,12 +60,13 @@ public class GuiNpcLabel extends Gui {
/**
* Draws hover tooltip if the mouse is over this label.
- * @param localMouseX Mouse X in scroll-local coordinates (for hit testing)
- * @param localMouseY Mouse Y in scroll-local coordinates (for hit testing)
+ *
+ * @param localMouseX Mouse X in scroll-local coordinates (for hit testing)
+ * @param localMouseY Mouse Y in scroll-local coordinates (for hit testing)
* @param screenMouseX Mouse X in screen coordinates (for tooltip positioning)
* @param screenMouseY Mouse Y in screen coordinates (for tooltip positioning)
- * @param hasSubGui Whether a sub-gui is open
- * @param fr FontRenderer for measuring label width
+ * @param hasSubGui Whether a sub-gui is open
+ * @param fr FontRenderer for measuring label width
*/
public void drawHover(int localMouseX, int localMouseY, int screenMouseX, int screenMouseY, boolean hasSubGui, FontRenderer fr) {
if (hasSubGui || hoverableText.isEmpty()) return;
diff --git a/src/main/java/noppes/npcs/client/gui/util/GuiNpcTextField.java b/src/main/java/noppes/npcs/client/gui/util/GuiNpcTextField.java
index a30b53fa8..e6e02d10e 100644
--- a/src/main/java/noppes/npcs/client/gui/util/GuiNpcTextField.java
+++ b/src/main/java/noppes/npcs/client/gui/util/GuiNpcTextField.java
@@ -1,17 +1,17 @@
package noppes.npcs.client.gui.util;
+import kamkeel.npcs.util.TextSplitter;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.gui.GuiTextField;
-import net.minecraft.util.StatCollector;
import net.minecraft.client.gui.ScaledResolution;
+import net.minecraft.client.renderer.RenderHelper;
+import net.minecraft.util.StatCollector;
import org.lwjgl.opengl.GL11;
import org.lwjgl.opengl.GL12;
-import net.minecraft.client.renderer.RenderHelper;
-import kamkeel.npcs.util.TextSplitter;
+
import java.util.List;
-import java.util.Iterator;
public class GuiNpcTextField extends GuiTextField {
public boolean enabled = true;
@@ -224,7 +224,7 @@ public class GuiNpcTextField extends GuiTextField {
public boolean isMouseOver(int mouseX, int mouseY) {
return mouseX >= xPosition && mouseX < xPosition + width &&
- mouseY >= yPosition && mouseY < yPosition + height;
+ mouseY >= yPosition && mouseY < yPosition + height;
}
public void drawHover(int mouseX, int mouseY, boolean hasSubGui) {
@@ -334,14 +334,14 @@ public class GuiNpcTextField extends GuiTextField {
}
protected void drawGradientRect(int left, int top, int right, int bottom, int startColor, int endColor, int zLevel) {
- float f = (float)(startColor >> 24 & 255) / 255.0F;
- float f1 = (float)(startColor >> 16 & 255) / 255.0F;
- float f2 = (float)(startColor >> 8 & 255) / 255.0F;
- float f3 = (float)(startColor & 255) / 255.0F;
- float f4 = (float)(endColor >> 24 & 255) / 255.0F;
- float f5 = (float)(endColor >> 16 & 255) / 255.0F;
- float f6 = (float)(endColor >> 8 & 255) / 255.0F;
- float f7 = (float)(endColor & 255) / 255.0F;
+ float f = (float) (startColor >> 24 & 255) / 255.0F;
+ float f1 = (float) (startColor >> 16 & 255) / 255.0F;
+ float f2 = (float) (startColor >> 8 & 255) / 255.0F;
+ float f3 = (float) (startColor & 255) / 255.0F;
+ float f4 = (float) (endColor >> 24 & 255) / 255.0F;
+ float f5 = (float) (endColor >> 16 & 255) / 255.0F;
+ float f6 = (float) (endColor >> 8 & 255) / 255.0F;
+ float f7 = (float) (endColor & 255) / 255.0F;
GL11.glDisable(GL11.GL_TEXTURE_2D);
GL11.glEnable(GL11.GL_BLEND);
GL11.glDisable(GL11.GL_ALPHA_TEST);
@@ -350,11 +350,11 @@ public class GuiNpcTextField extends GuiTextField {
net.minecraft.client.renderer.Tessellator tessellator = net.minecraft.client.renderer.Tessellator.instance;
tessellator.startDrawingQuads();
tessellator.setColorRGBA_F(f1, f2, f3, f);
- tessellator.addVertex((double)right, (double)top, (double)zLevel);
- tessellator.addVertex((double)left, (double)top, (double)zLevel);
+ tessellator.addVertex((double) right, (double) top, (double) zLevel);
+ tessellator.addVertex((double) left, (double) top, (double) zLevel);
tessellator.setColorRGBA_F(f5, f6, f7, f4);
- tessellator.addVertex((double)left, (double)bottom, (double)zLevel);
- tessellator.addVertex((double)right, (double)bottom, (double)zLevel);
+ tessellator.addVertex((double) left, (double) bottom, (double) zLevel);
+ tessellator.addVertex((double) right, (double) bottom, (double) zLevel);
tessellator.draw();
GL11.glShadeModel(GL11.GL_FLAT);
GL11.glDisable(GL11.GL_BLEND);
diff --git a/src/main/java/noppes/npcs/client/gui/util/IClonerGui.java b/src/main/java/noppes/npcs/client/gui/util/IClonerGui.java
index db4989b56..60346560a 100644
--- a/src/main/java/noppes/npcs/client/gui/util/IClonerGui.java
+++ b/src/main/java/noppes/npcs/client/gui/util/IClonerGui.java
@@ -8,6 +8,8 @@ import java.util.UUID;
public interface IClonerGui {
int getShowingClones();
+
HashMap getTags();
+
TagMap getTagMap();
}
diff --git a/src/main/java/noppes/npcs/config/ConfigMarket.java b/src/main/java/noppes/npcs/config/ConfigMarket.java
index 2909ec2a6..976452d08 100644
--- a/src/main/java/noppes/npcs/config/ConfigMarket.java
+++ b/src/main/java/noppes/npcs/config/ConfigMarket.java
@@ -135,11 +135,11 @@ public class ConfigMarket {
// =========================================
config.setCategoryComment(AUCTION_BLACKLIST,
"Item Blacklist settings for the Auction House.\n" +
- "Prevents specific items, mods, or items with certain NBT tags from being listed.\n\n" +
- "ITEM FORMAT: Use 'modid:itemname' format (e.g., 'minecraft:bedrock', 'customnpcs:npcWand')\n" +
- "WILDCARDS: Use * for wildcards (e.g., 'customnpcs:npc*' blocks all items starting with 'npc')\n" +
- "MOD FORMAT: Use just the mod ID (e.g., 'projecte' blocks all items from that mod)\n" +
- "NBT FORMAT: Use the NBT tag key name (e.g., 'AdminOnly' blocks items with that tag)");
+ "Prevents specific items, mods, or items with certain NBT tags from being listed.\n\n" +
+ "ITEM FORMAT: Use 'modid:itemname' format (e.g., 'minecraft:bedrock', 'customnpcs:npcWand')\n" +
+ "WILDCARDS: Use * for wildcards (e.g., 'customnpcs:npc*' blocks all items starting with 'npc')\n" +
+ "MOD FORMAT: Use just the mod ID (e.g., 'projecte' blocks all items from that mod)\n" +
+ "NBT FORMAT: Use the NBT tag key name (e.g., 'AdminOnly' blocks items with that tag)");
BlacklistEnabled = config.get(AUCTION_BLACKLIST, "Enable Blacklist", true,
"Enable item blacklist checking when creating listings").getBoolean(true);
@@ -157,17 +157,17 @@ public class ConfigMarket {
"customnpcs:npcSoulstoneFilled"
},
"Items that cannot be listed on the Auction House.\n" +
- "Format: modid:itemname (supports * wildcards)\n" +
- "Example: 'minecraft:diamond_sword' or 'customnpcs:npc*'").getStringList();
+ "Format: modid:itemname (supports * wildcards)\n" +
+ "Example: 'minecraft:diamond_sword' or 'customnpcs:npc*'").getStringList();
BlacklistedMods = config.get(AUCTION_BLACKLIST, "Blacklisted Mods", new String[]{},
"All items from these mods are blocked from the Auction House.\n" +
- "Format: modid (e.g., 'projecte', 'thaumcraft')").getStringList();
+ "Format: modid (e.g., 'projecte', 'thaumcraft')").getStringList();
BlacklistedNBTTags = config.get(AUCTION_BLACKLIST, "Blacklisted NBT Tags", new String[]{},
"Items containing any of these NBT tag keys are blocked.\n" +
- "Checks the root level of the item's NBT compound.\n" +
- "Example: 'AdminOnly', 'CreativeMode'").getStringList();
+ "Checks the root level of the item's NBT compound.\n" +
+ "Example: 'AdminOnly', 'CreativeMode'").getStringList();
// =========================================
// Auction Logging Settings
diff --git a/src/main/java/noppes/npcs/constants/EnumAuctionLogAction.java b/src/main/java/noppes/npcs/constants/EnumAuctionLogAction.java
index 7e48589f4..6c6fdce44 100644
--- a/src/main/java/noppes/npcs/constants/EnumAuctionLogAction.java
+++ b/src/main/java/noppes/npcs/constants/EnumAuctionLogAction.java
@@ -16,19 +16,29 @@ public enum EnumAuctionLogAction {
CLAIMED,
CLAIM_EXPIRED;
- /** Check if this action should be logged based on config settings */
+ /**
+ * Check if this action should be logged based on config settings
+ */
public boolean shouldLog() {
if (!ConfigMarket.AuctionLoggingEnabled) return false;
switch (this) {
- case CREATED: return ConfigMarket.LogAuctionCreated;
- case BID: return ConfigMarket.LogAuctionBid;
- case BUYOUT: return ConfigMarket.LogAuctionBuyout;
- case SOLD: return ConfigMarket.LogAuctionSold;
- case EXPIRED: return ConfigMarket.LogAuctionExpired;
- case CANCELLED: return ConfigMarket.LogAuctionCancelled;
+ case CREATED:
+ return ConfigMarket.LogAuctionCreated;
+ case BID:
+ return ConfigMarket.LogAuctionBid;
+ case BUYOUT:
+ return ConfigMarket.LogAuctionBuyout;
+ case SOLD:
+ return ConfigMarket.LogAuctionSold;
+ case EXPIRED:
+ return ConfigMarket.LogAuctionExpired;
+ case CANCELLED:
+ return ConfigMarket.LogAuctionCancelled;
case CLAIMED:
- case CLAIM_EXPIRED: return ConfigMarket.LogAuctionClaimed;
- default: return false;
+ case CLAIM_EXPIRED:
+ return ConfigMarket.LogAuctionClaimed;
+ default:
+ return false;
}
}
}
diff --git a/src/main/java/noppes/npcs/constants/EnumAuctionPage.java b/src/main/java/noppes/npcs/constants/EnumAuctionPage.java
index c6c2c2a36..7f98cb2f0 100644
--- a/src/main/java/noppes/npcs/constants/EnumAuctionPage.java
+++ b/src/main/java/noppes/npcs/constants/EnumAuctionPage.java
@@ -1,7 +1,5 @@
package noppes.npcs.constants;
-import noppes.npcs.constants.EnumGuiType;
-
/**
* Enum for auction GUI page navigation.
* Maps page indices to GUI types for packet-based navigation.
diff --git a/src/main/java/noppes/npcs/containers/ContainerAuction.java b/src/main/java/noppes/npcs/containers/ContainerAuction.java
index 2ccaa2e52..0741fdd9a 100644
--- a/src/main/java/noppes/npcs/containers/ContainerAuction.java
+++ b/src/main/java/noppes/npcs/containers/ContainerAuction.java
@@ -71,6 +71,7 @@ public class ContainerAuction extends ContainerNpcInterface {
/**
* Get the ItemStack in a player inventory slot.
+ *
* @param containerSlotIndex The container slot index (0-35 for player inv)
*/
public ItemStack getPlayerInventoryStack(int containerSlotIndex) {
diff --git a/src/main/java/noppes/npcs/containers/ContainerAuctionBidding.java b/src/main/java/noppes/npcs/containers/ContainerAuctionBidding.java
index 0e46b6b9b..2b6f9a67f 100644
--- a/src/main/java/noppes/npcs/containers/ContainerAuctionBidding.java
+++ b/src/main/java/noppes/npcs/containers/ContainerAuctionBidding.java
@@ -28,9 +28,14 @@ public class ContainerAuctionBidding extends ContainerAuction {
// Display slot (read-only)
addSlotToContainer(new Slot(displayInventory, 0, ITEM_SLOT_X, ITEM_SLOT_Y) {
@Override
- public boolean isItemValid(ItemStack stack) { return false; }
+ public boolean isItemValid(ItemStack stack) {
+ return false;
+ }
+
@Override
- public boolean canTakeStack(EntityPlayer player) { return false; }
+ public boolean canTakeStack(EntityPlayer player) {
+ return false;
+ }
});
}
diff --git a/src/main/java/noppes/npcs/containers/ContainerAuctionSell.java b/src/main/java/noppes/npcs/containers/ContainerAuctionSell.java
index e5a01dd6f..f703a206d 100644
--- a/src/main/java/noppes/npcs/containers/ContainerAuctionSell.java
+++ b/src/main/java/noppes/npcs/containers/ContainerAuctionSell.java
@@ -27,9 +27,14 @@ public class ContainerAuctionSell extends ContainerAuction {
// Sell slot blocks direct interaction
addSlotToContainer(new Slot(sellInventory, 0, SELL_SLOT_X, SELL_SLOT_Y) {
@Override
- public boolean isItemValid(ItemStack stack) { return false; }
+ public boolean isItemValid(ItemStack stack) {
+ return false;
+ }
+
@Override
- public boolean canTakeStack(EntityPlayer player) { return false; }
+ public boolean canTakeStack(EntityPlayer player) {
+ return false;
+ }
});
}
@@ -44,8 +49,9 @@ public class ContainerAuctionSell extends ContainerAuction {
/**
* Add items from inventory to sell slot.
* Not limited by inventory - just stages items for sale. Validation on submit.
+ *
* @param sourceSlot Inventory slot index
- * @param fullStack True=full stack, False=1 item
+ * @param fullStack True=full stack, False=1 item
*/
public void addToSellSlot(int sourceSlot, boolean fullStack) {
if (!isPlayerInventorySlot(sourceSlot)) return;
@@ -78,6 +84,7 @@ public class ContainerAuctionSell extends ContainerAuction {
/**
* Remove items from sell slot.
+ *
* @param removeAll True=clear slot, False=remove 1 item
*/
public void removeFromSellSlot(boolean removeAll) {
@@ -91,12 +98,16 @@ public class ContainerAuctionSell extends ContainerAuction {
}
}
- /** Check if sell slot is this container slot index */
+ /**
+ * Check if sell slot is this container slot index
+ */
public boolean isSellSlot(int slotIndex) {
return slotIndex == SELL_SLOT_INDEX;
}
- /** Check if two stacks match using NoppesUtilPlayer.compareItems (same item, damage, and NBT) */
+ /**
+ * Check if two stacks match using NoppesUtilPlayer.compareItems (same item, damage, and NBT)
+ */
private boolean itemsMatch(ItemStack a, ItemStack b) {
return NoppesUtilPlayer.compareItems(a, b, false, false);
}
diff --git a/src/main/java/noppes/npcs/containers/ContainerAuctionTrades.java b/src/main/java/noppes/npcs/containers/ContainerAuctionTrades.java
index 43e91f428..187d50d13 100644
--- a/src/main/java/noppes/npcs/containers/ContainerAuctionTrades.java
+++ b/src/main/java/noppes/npcs/containers/ContainerAuctionTrades.java
@@ -5,8 +5,8 @@ import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import noppes.npcs.constants.EnumClaimType;
-import noppes.npcs.controllers.AuctionController;
import noppes.npcs.constants.EnumTradeSlotType;
+import noppes.npcs.controllers.AuctionController;
import noppes.npcs.controllers.data.AuctionClaim;
import noppes.npcs.controllers.data.AuctionListing;
import noppes.npcs.entity.EntityNPCInterface;
@@ -55,7 +55,9 @@ public class ContainerAuctionTrades extends ContainerAuction {
refreshData();
}
- /** Refresh data from controller (server-side only) */
+ /**
+ * Refresh data from controller (server-side only)
+ */
public void refreshData() {
// Clear existing data
clearData();
@@ -70,7 +72,9 @@ public class ContainerAuctionTrades extends ContainerAuction {
populateDisplay(newListings, newBids, newClaims);
}
- /** Set data from NBT received from server (client-side) */
+ /**
+ * Set data from NBT received from server (client-side)
+ */
public void setTradesData(NBTTagCompound compound) {
// Clear existing data
clearData();
@@ -111,7 +115,9 @@ public class ContainerAuctionTrades extends ContainerAuction {
populateDisplay(newListings, newBids, newClaims);
}
- /** Clear all data and reset display */
+ /**
+ * Clear all data and reset display
+ */
private void clearData() {
activeListings.clear();
activeBids.clear();
@@ -125,7 +131,9 @@ public class ContainerAuctionTrades extends ContainerAuction {
}
}
- /** Populate display from provided data lists */
+ /**
+ * Populate display from provided data lists
+ */
private void populateDisplay(List newListings, List newBids, List allClaims) {
activeListings = new ArrayList<>(newListings);
activeBids = new ArrayList<>(newBids);
@@ -218,7 +226,9 @@ public class ContainerAuctionTrades extends ContainerAuction {
// ========== Slot Data Accessors ==========
- /** Get listing at slot (or null if claim/empty) */
+ /**
+ * Get listing at slot (or null if claim/empty)
+ */
public AuctionListing getListingAt(int slot) {
if (slot < 0 || slot >= SLOT_COUNT) return null;
EnumTradeSlotType type = slotTypes[slot];
@@ -233,7 +243,9 @@ public class ContainerAuctionTrades extends ContainerAuction {
return null;
}
- /** Get claim at slot (or null if listing/empty) */
+ /**
+ * Get claim at slot (or null if listing/empty)
+ */
public AuctionClaim getClaimAt(int slot) {
if (slot < 0 || slot >= SLOT_COUNT) return null;
if (slotTypes[slot] == EnumTradeSlotType.CLAIM) {
@@ -245,17 +257,23 @@ public class ContainerAuctionTrades extends ContainerAuction {
return null;
}
- /** Check if slot is player's active listing */
+ /**
+ * Check if slot is player's active listing
+ */
public boolean isSellingAt(int slot) {
return slot >= 0 && slot < SLOT_COUNT && slotTypes[slot] == EnumTradeSlotType.SELLING;
}
- /** Check if slot is player's active bid */
+ /**
+ * Check if slot is player's active bid
+ */
public boolean isBiddingAt(int slot) {
return slot >= 0 && slot < SLOT_COUNT && slotTypes[slot] == EnumTradeSlotType.BIDDING;
}
- /** Find listing matching item (searches both selling and bidding) */
+ /**
+ * Find listing matching item (searches both selling and bidding)
+ */
public AuctionListing getListingForItem(ItemStack stack) {
if (stack == null) return null;
for (AuctionListing listing : activeListings) {
@@ -267,7 +285,9 @@ public class ContainerAuctionTrades extends ContainerAuction {
return null;
}
- /** Find listing in selling list */
+ /**
+ * Find listing in selling list
+ */
public AuctionListing getSellingListingForItem(ItemStack stack) {
if (stack == null) return null;
for (AuctionListing listing : activeListings) {
@@ -276,7 +296,9 @@ public class ContainerAuctionTrades extends ContainerAuction {
return null;
}
- /** Find listing in bidding list */
+ /**
+ * Find listing in bidding list
+ */
public AuctionListing getBiddingListingForItem(ItemStack stack) {
if (stack == null) return null;
for (AuctionListing bid : activeBids) {
@@ -285,7 +307,9 @@ public class ContainerAuctionTrades extends ContainerAuction {
return null;
}
- /** Find claim matching item */
+ /**
+ * Find claim matching item
+ */
public AuctionClaim getClaimForItem(ItemStack stack) {
if (stack == null) return null;
for (AuctionClaim claim : claims) {
@@ -296,14 +320,27 @@ public class ContainerAuctionTrades extends ContainerAuction {
// ========== List Getters ==========
- public List getActiveListings() { return activeListings; }
- public List getActiveBids() { return activeBids; }
- public List getClaims() { return claims; }
- public int getTotalTradeCount() { return activeListings.size() + activeBids.size() + claims.size(); }
+ public List getActiveListings() {
+ return activeListings;
+ }
+
+ public List getActiveBids() {
+ return activeBids;
+ }
+
+ public List getClaims() {
+ return claims;
+ }
+
+ public int getTotalTradeCount() {
+ return activeListings.size() + activeBids.size() + claims.size();
+ }
// ========== Slot Hiding (for pending operations) ==========
- /** Hide slot for pending operation display */
+ /**
+ * Hide slot for pending operation display
+ */
public void setHiddenSlot(int slot) {
if (hiddenSlot >= 0 && hiddenSlot < SLOT_COUNT) {
restoreSlotItem(hiddenSlot);
@@ -314,7 +351,9 @@ public class ContainerAuctionTrades extends ContainerAuction {
}
}
- /** Restore hidden slot */
+ /**
+ * Restore hidden slot
+ */
public void clearHiddenSlot() {
if (hiddenSlot >= 0 && hiddenSlot < SLOT_COUNT) {
restoreSlotItem(hiddenSlot);
@@ -322,7 +361,9 @@ public class ContainerAuctionTrades extends ContainerAuction {
hiddenSlot = -1;
}
- /** Restore item at slot from data using slot tracking */
+ /**
+ * Restore item at slot from data using slot tracking
+ */
private void restoreSlotItem(int slot) {
if (slot < 0 || slot >= SLOT_COUNT) return;
@@ -348,8 +389,14 @@ public class ContainerAuctionTrades extends ContainerAuction {
}
}
- public int getHiddenSlot() { return hiddenSlot; }
+ public int getHiddenSlot() {
+ return hiddenSlot;
+ }
- /** Get player's max trade slots (synced from server based on permissions) */
- public int getMaxTradeSlots() { return maxTradeSlots; }
+ /**
+ * Get player's max trade slots (synced from server based on permissions)
+ */
+ public int getMaxTradeSlots() {
+ return maxTradeSlots;
+ }
}
diff --git a/src/main/java/noppes/npcs/controllers/AnimationController.java b/src/main/java/noppes/npcs/controllers/AnimationController.java
index e7c29f324..bfbf978d2 100644
--- a/src/main/java/noppes/npcs/controllers/AnimationController.java
+++ b/src/main/java/noppes/npcs/controllers/AnimationController.java
@@ -22,14 +22,17 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URI;
-import java.net.URISyntaxException;
import java.net.URL;
import java.nio.file.FileSystem;
import java.nio.file.FileSystems;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.Map;
import java.util.stream.Stream;
import java.util.zip.GZIPInputStream;
@@ -364,6 +367,7 @@ public class AnimationController implements IAnimationHandler {
/**
* Get a built-in animation by name.
+ *
* @param name The animation name (case-insensitive)
* @return The built-in animation, or null if not found
*/
@@ -395,6 +399,7 @@ public class AnimationController implements IAnimationHandler {
/**
* Check if an animation name is a built-in animation.
+ *
* @param name The animation name to check
* @return true if this is a built-in animation
*/
diff --git a/src/main/java/noppes/npcs/controllers/AuctionConfigSync.java b/src/main/java/noppes/npcs/controllers/AuctionConfigSync.java
index 2b921aad6..dae214f5c 100644
--- a/src/main/java/noppes/npcs/controllers/AuctionConfigSync.java
+++ b/src/main/java/noppes/npcs/controllers/AuctionConfigSync.java
@@ -7,7 +7,7 @@ import noppes.npcs.config.ConfigMarket;
/**
* Server-side utility for syncing auction configuration to clients.
* Handles Vault integration for currency name resolution.
- *
+ *
* This class is SERVER-SIDE ONLY. Client reads via AuctionClientConfig.
*/
public class AuctionConfigSync {
@@ -15,7 +15,7 @@ public class AuctionConfigSync {
/**
* Write auction config to NBT for sending to client.
* Called on server side when building login packet.
- *
+ *
* Currency name is resolved from Vault if enabled and available,
* otherwise falls back to ConfigMarket.CurrencyName.
*/
diff --git a/src/main/java/noppes/npcs/controllers/AuctionController.java b/src/main/java/noppes/npcs/controllers/AuctionController.java
index 2d02cd9ce..7ea79baeb 100644
--- a/src/main/java/noppes/npcs/controllers/AuctionController.java
+++ b/src/main/java/noppes/npcs/controllers/AuctionController.java
@@ -6,7 +6,6 @@ import net.minecraft.item.ItemStack;
import net.minecraft.nbt.CompressedStreamTools;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
-import net.minecraft.server.MinecraftServer;
import net.minecraft.util.ChatComponentText;
import net.minecraft.util.EnumChatFormatting;
import noppes.npcs.CustomNpcs;
@@ -23,12 +22,12 @@ import noppes.npcs.constants.EnumAuctionSort;
import noppes.npcs.constants.EnumAuctionStatus;
import noppes.npcs.constants.EnumClaimType;
import noppes.npcs.constants.EnumNotificationType;
-import noppes.npcs.controllers.data.PlayerDataScript;
import noppes.npcs.controllers.data.AuctionBlacklist;
import noppes.npcs.controllers.data.AuctionClaim;
import noppes.npcs.controllers.data.AuctionFilter;
import noppes.npcs.controllers.data.AuctionListing;
import noppes.npcs.controllers.data.PlayerData;
+import noppes.npcs.controllers.data.PlayerDataScript;
import noppes.npcs.controllers.data.PlayerTradeData;
import noppes.npcs.scripted.NpcAPI;
import noppes.npcs.scripted.event.player.AuctionEvent;
@@ -37,18 +36,23 @@ import noppes.npcs.util.CustomNPCsThreader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicBoolean;
/**
* Main controller for the Auction system.
- *
+ *
* Thread Safety:
* - Uses ConcurrentHashMap for all data stores - no locking required
* - Claims are stored in PlayerData, not here - reduces contention
* - Saves are performed asynchronously on the CNPC+ thread
- *
+ *
* Performance:
* - Auction processing runs every 30 seconds (600 ticks)
* - Save interval is every 30 seconds (600 ticks)
@@ -65,29 +69,41 @@ public class AuctionController implements IAuctionHandler {
// Player Indices for O(1) Lookups
// =========================================
- /** Listings by seller UUID - for quick "my listings" lookups */
+ /**
+ * Listings by seller UUID - for quick "my listings" lookups
+ */
private final Map> playerListingIds = new ConcurrentHashMap<>();
- /** Listings where player is current high bidder */
+ /**
+ * Listings where player is current high bidder
+ */
private final Map> playerBidIds = new ConcurrentHashMap<>();
- /** Cached max trade slots per player - computed on login, cleared on logout */
+ /**
+ * Cached max trade slots per player - computed on login, cleared on logout
+ */
private final Map playerMaxTradesCache = new ConcurrentHashMap<>();
// =========================================
// Threading & State
// =========================================
- /** Flag indicating data needs to be saved */
+ /**
+ * Flag indicating data needs to be saved
+ */
private final AtomicBoolean dirty = new AtomicBoolean(false);
- /** Flag to prevent concurrent saves */
+ /**
+ * Flag to prevent concurrent saves
+ */
private final AtomicBoolean saving = new AtomicBoolean(false);
private String filePath = "";
private int tickCounter = 0;
- /** Process auctions and save every 30 seconds (600 ticks) */
+ /**
+ * Process auctions and save every 30 seconds (600 ticks)
+ */
private static final int TICK_INTERVAL = 600;
public AuctionController() {
@@ -375,7 +391,7 @@ public class AuctionController implements IAuctionHandler {
logAuction(EnumAuctionLogAction.CANCELLED, listing.sellerName, listing.item.getDisplayName(), listing.currentBid,
"Penalty: " + penalty + ", Bidder refunded: " + listing.highBidderName +
- (isAdmin ? ", Cancelled by admin: " + player.getCommandSenderName() : ""));
+ (isAdmin ? ", Cancelled by admin: " + player.getCommandSenderName() : ""));
} else {
// No bids - just return item
AuctionClaim itemClaim = AuctionClaim.createItemReturnedClaim(
@@ -1126,12 +1142,16 @@ public class AuctionController implements IAuctionHandler {
// Save / Load - Async on CNPC+ Thread
// =========================================
- /** Mark data as dirty - will be saved on next save cycle */
+ /**
+ * Mark data as dirty - will be saved on next save cycle
+ */
private void markDirty() {
dirty.set(true);
}
- /** Save synchronously - used for server shutdown */
+ /**
+ * Save synchronously - used for server shutdown
+ */
public void save() {
if (!dirty.compareAndSet(true, false)) {
return; // Nothing to save
@@ -1139,7 +1159,9 @@ public class AuctionController implements IAuctionHandler {
saveInternal();
}
- /** Save asynchronously on CNPC+ thread */
+ /**
+ * Save asynchronously on CNPC+ thread
+ */
public void saveAsync() {
if (!dirty.compareAndSet(true, false)) {
return; // Nothing to save
@@ -1167,7 +1189,9 @@ public class AuctionController implements IAuctionHandler {
});
}
- /** Internal synchronous save */
+ /**
+ * Internal synchronous save
+ */
private void saveInternal() {
try {
NBTTagCompound compound = writeToNBT(new NBTTagCompound());
@@ -1236,7 +1260,9 @@ public class AuctionController implements IAuctionHandler {
}
}
- /** Rebuild all indices from loaded data */
+ /**
+ * Rebuild all indices from loaded data
+ */
private void rebuildIndices() {
playerListingIds.clear();
playerBidIds.clear();
@@ -1460,8 +1486,8 @@ public class AuctionController implements IAuctionHandler {
// Remove ended/cancelled listings (claims are in PlayerData now)
listings.entrySet().removeIf(entry ->
entry.getValue().status == EnumAuctionStatus.CLAIMED ||
- entry.getValue().status == EnumAuctionStatus.ENDED ||
- entry.getValue().status == EnumAuctionStatus.CANCELLED);
+ entry.getValue().status == EnumAuctionStatus.ENDED ||
+ entry.getValue().status == EnumAuctionStatus.CANCELLED);
// Rebuild indices
rebuildIndices();
diff --git a/src/main/java/noppes/npcs/controllers/ScriptConfigSync.java b/src/main/java/noppes/npcs/controllers/ScriptConfigSync.java
index 5a9d32ed3..9e322ea10 100644
--- a/src/main/java/noppes/npcs/controllers/ScriptConfigSync.java
+++ b/src/main/java/noppes/npcs/controllers/ScriptConfigSync.java
@@ -5,7 +5,7 @@ import noppes.npcs.config.ConfigScript;
/**
* Server-side utility for syncing script configuration to clients.
- *
+ *
* This class is SERVER-SIDE ONLY. Client reads via ScriptClientConfig.
*/
public class ScriptConfigSync {
diff --git a/src/main/java/noppes/npcs/controllers/ScriptHookController.java b/src/main/java/noppes/npcs/controllers/ScriptHookController.java
index 3b79637d8..dd8c18550 100644
--- a/src/main/java/noppes/npcs/controllers/ScriptHookController.java
+++ b/src/main/java/noppes/npcs/controllers/ScriptHookController.java
@@ -3,12 +3,11 @@ package noppes.npcs.controllers;
import noppes.npcs.api.event.IAbilityEvent;
import noppes.npcs.api.event.IAnimationEvent;
import noppes.npcs.api.event.IAuctionEvent;
-import noppes.npcs.api.event.IEnergyBarrierEvent;
-import noppes.npcs.api.event.IPlayerAbilityEvent;
import noppes.npcs.api.event.IBlockEvent;
import noppes.npcs.api.event.ICustomGuiEvent;
import noppes.npcs.api.event.ICustomNPCsEvent;
import noppes.npcs.api.event.IDialogEvent;
+import noppes.npcs.api.event.IEnergyBarrierEvent;
import noppes.npcs.api.event.IEnergyProjectileEvent;
import noppes.npcs.api.event.IFactionEvent;
import noppes.npcs.api.event.IForgeEvent;
@@ -16,6 +15,7 @@ import noppes.npcs.api.event.IItemEvent;
import noppes.npcs.api.event.ILinkedItemEvent;
import noppes.npcs.api.event.INpcEvent;
import noppes.npcs.api.event.IPartyEvent;
+import noppes.npcs.api.event.IPlayerAbilityEvent;
import noppes.npcs.api.event.IPlayerEvent;
import noppes.npcs.api.event.IProjectileEvent;
import noppes.npcs.api.event.IQuestEvent;
diff --git a/src/main/java/noppes/npcs/controllers/data/AuctionBlacklist.java b/src/main/java/noppes/npcs/controllers/data/AuctionBlacklist.java
index 5a950816c..1f4d331a4 100644
--- a/src/main/java/noppes/npcs/controllers/data/AuctionBlacklist.java
+++ b/src/main/java/noppes/npcs/controllers/data/AuctionBlacklist.java
@@ -10,10 +10,10 @@ import noppes.npcs.config.ConfigMarket;
import java.util.ArrayList;
import java.util.HashSet;
+import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.regex.Pattern;
-import java.util.Iterator;
public class AuctionBlacklist {
private static volatile Set blacklistedItems = new HashSet<>();
diff --git a/src/main/java/noppes/npcs/controllers/data/AuctionClaim.java b/src/main/java/noppes/npcs/controllers/data/AuctionClaim.java
index c76aece11..604ff1023 100644
--- a/src/main/java/noppes/npcs/controllers/data/AuctionClaim.java
+++ b/src/main/java/noppes/npcs/controllers/data/AuctionClaim.java
@@ -33,7 +33,9 @@ public class AuctionClaim implements IAuctionClaim {
this.otherPlayerName = "";
}
- /** Create claim for winning an item (buyer won auction or buyout) */
+ /**
+ * Create claim for winning an item (buyer won auction or buyout)
+ */
public static AuctionClaim createItemWonClaim(UUID playerUUID, String playerName, String listingId, ItemStack item) {
AuctionClaim claim = new AuctionClaim();
claim.playerUUID = playerUUID;
@@ -46,7 +48,9 @@ public class AuctionClaim implements IAuctionClaim {
return claim;
}
- /** Create claim for returned item (seller's expired/cancelled listing) */
+ /**
+ * Create claim for returned item (seller's expired/cancelled listing)
+ */
public static AuctionClaim createItemReturnedClaim(UUID playerUUID, String playerName, String listingId, ItemStack item) {
AuctionClaim claim = new AuctionClaim();
claim.playerUUID = playerUUID;
@@ -59,7 +63,9 @@ public class AuctionClaim implements IAuctionClaim {
return claim;
}
- /** Create claim for seller's proceeds (stores item name for tooltip, not full item) */
+ /**
+ * Create claim for seller's proceeds (stores item name for tooltip, not full item)
+ */
public static AuctionClaim createCurrencyClaim(UUID playerUUID, String playerName, String listingId, long currency, String itemName, String buyerName) {
AuctionClaim claim = new AuctionClaim();
claim.playerUUID = playerUUID;
@@ -74,7 +80,9 @@ public class AuctionClaim implements IAuctionClaim {
return claim;
}
- /** Create claim for outbid refund (stores item for display and rebid option) */
+ /**
+ * Create claim for outbid refund (stores item for display and rebid option)
+ */
public static AuctionClaim createRefundClaim(UUID playerUUID, String playerName, String listingId, long currency, String itemName, String outbidderName, ItemStack item) {
AuctionClaim claim = new AuctionClaim();
claim.playerUUID = playerUUID;
diff --git a/src/main/java/noppes/npcs/controllers/data/AuctionFilter.java b/src/main/java/noppes/npcs/controllers/data/AuctionFilter.java
index 5018ec2e0..e6841fcea 100644
--- a/src/main/java/noppes/npcs/controllers/data/AuctionFilter.java
+++ b/src/main/java/noppes/npcs/controllers/data/AuctionFilter.java
@@ -25,14 +25,18 @@ public class AuctionFilter {
return searchText != null && !searchText.trim().isEmpty();
}
- /** Normalize string for search (strip colors, lowercase, trim) */
+ /**
+ * Normalize string for search (strip colors, lowercase, trim)
+ */
public static String normalizeForSearch(String input) {
if (input == null || input.isEmpty()) return "";
String stripped = EnumChatFormatting.getTextWithoutFormattingCodes(input);
return stripped != null ? stripped.toLowerCase().trim() : input.toLowerCase().trim();
}
- /** Check if item name or seller name matches search text */
+ /**
+ * Check if item name or seller name matches search text
+ */
public boolean matchesSearch(String itemName, String sellerName) {
if (!hasSearchText()) return true;
String normalizedItem = normalizeForSearch(itemName);
@@ -41,12 +45,16 @@ public class AuctionFilter {
return normalizedItem.contains(normalizedSearch) || normalizedSeller.contains(normalizedSearch);
}
- /** Legacy method - only checks item name */
+ /**
+ * Legacy method - only checks item name
+ */
public boolean matchesSearch(String itemName) {
return matchesSearch(itemName, "");
}
- /** Advanced search - all words must be present in item name OR seller name */
+ /**
+ * Advanced search - all words must be present in item name OR seller name
+ */
public boolean matchesSearchAdvanced(String itemName, String sellerName) {
if (!hasSearchText()) return true;
String normalizedItem = normalizeForSearch(itemName);
@@ -63,7 +71,9 @@ public class AuctionFilter {
return true;
}
- /** Legacy method - only checks item name */
+ /**
+ * Legacy method - only checks item name
+ */
public boolean matchesSearchAdvanced(String itemName) {
return matchesSearchAdvanced(itemName, "");
}
@@ -101,13 +111,20 @@ public class AuctionFilter {
}
// Getters and setters
- public String getSearchText() { return searchText; }
+ public String getSearchText() {
+ return searchText;
+ }
public void setSearchText(String searchText) {
this.searchText = searchText;
this.normalizedSearch = normalizeForSearch(searchText);
}
- public EnumAuctionSort getSortBy() { return sortBy; }
- public void setSortBy(EnumAuctionSort sortBy) { this.sortBy = sortBy; }
+ public EnumAuctionSort getSortBy() {
+ return sortBy;
+ }
+
+ public void setSortBy(EnumAuctionSort sortBy) {
+ this.sortBy = sortBy;
+ }
}
diff --git a/src/main/java/noppes/npcs/controllers/data/BuiltInAnimation.java b/src/main/java/noppes/npcs/controllers/data/BuiltInAnimation.java
index a30923eac..50ef13c0e 100644
--- a/src/main/java/noppes/npcs/controllers/data/BuiltInAnimation.java
+++ b/src/main/java/noppes/npcs/controllers/data/BuiltInAnimation.java
@@ -23,6 +23,7 @@ public class BuiltInAnimation extends Animation {
/**
* Built-in animations cannot be saved.
+ *
* @return this animation unchanged
*/
@Override
@@ -33,6 +34,7 @@ public class BuiltInAnimation extends Animation {
/**
* Built-in animations have no valid ID.
+ *
* @return always -1
*/
@Override
@@ -50,6 +52,7 @@ public class BuiltInAnimation extends Animation {
/**
* Check if this is a built-in animation.
+ *
* @return always true for BuiltInAnimation
*/
public boolean isBuiltIn() {
diff --git a/src/main/java/noppes/npcs/controllers/data/PlayerAbilityData.java b/src/main/java/noppes/npcs/controllers/data/PlayerAbilityData.java
index d3add842c..a11483bc0 100644
--- a/src/main/java/noppes/npcs/controllers/data/PlayerAbilityData.java
+++ b/src/main/java/noppes/npcs/controllers/data/PlayerAbilityData.java
@@ -1,12 +1,14 @@
package noppes.npcs.controllers.data;
-import kamkeel.npcs.controllers.data.ability.Ability;
import kamkeel.npcs.controllers.AbilityController;
+import kamkeel.npcs.controllers.data.ability.Ability;
import kamkeel.npcs.controllers.data.ability.AbilityPhase;
import kamkeel.npcs.controllers.data.ability.ChainedAbility;
import kamkeel.npcs.controllers.data.ability.IAbilityAction;
import kamkeel.npcs.controllers.data.ability.type.AbilityGuard;
import kamkeel.npcs.controllers.data.telegraph.TelegraphInstance;
+import kamkeel.npcs.network.packets.data.ability.PlayerAbilityStatePacket;
+import kamkeel.npcs.network.packets.data.ability.PlayerAbilitySyncPacket;
import kamkeel.npcs.network.packets.data.telegraph.TelegraphRemovePacket;
import kamkeel.npcs.network.packets.data.telegraph.TelegraphSpawnPacket;
import net.minecraft.entity.EntityLivingBase;
@@ -17,17 +19,14 @@ import net.minecraft.nbt.NBTTagList;
import net.minecraft.nbt.NBTTagString;
import net.minecraft.util.DamageSource;
import noppes.npcs.AbstractDataAbilities;
-import noppes.npcs.LogWriter;
import noppes.npcs.EventHooks;
+import noppes.npcs.LogWriter;
import noppes.npcs.api.ability.IPlayerAbilityData;
import noppes.npcs.api.entity.IPlayer;
import noppes.npcs.controllers.ScriptController;
import noppes.npcs.scripted.NpcAPI;
import noppes.npcs.scripted.event.player.PlayerAbilityEvent;
-import kamkeel.npcs.network.packets.data.ability.PlayerAbilityStatePacket;
-import kamkeel.npcs.network.packets.data.ability.PlayerAbilitySyncPacket;
-
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
@@ -152,7 +151,7 @@ public class PlayerAbilityData extends AbstractDataAbilities implements IPlayerA
@Override
protected void fireInterruptEvent(Ability ability, EntityLivingBase target,
- DamageSource source, float damage) {
+ DamageSource source, float damage) {
EntityPlayer player = playerData.player;
if (ScriptController.Instance == null || player == null) return;
PlayerDataScript handler = ScriptController.Instance.getPlayerScripts(player);
@@ -310,7 +309,9 @@ public class PlayerAbilityData extends AbstractDataAbilities implements IPlayerA
return activateAbility(player, key);
}
- /** Prefix used to identify chained ability keys in the unlocked list. */
+ /**
+ * Prefix used to identify chained ability keys in the unlocked list.
+ */
public static final String CHAIN_PREFIX = "chain:";
/**
diff --git a/src/main/java/noppes/npcs/controllers/data/PlayerData.java b/src/main/java/noppes/npcs/controllers/data/PlayerData.java
index 7f326a344..9052811cf 100644
--- a/src/main/java/noppes/npcs/controllers/data/PlayerData.java
+++ b/src/main/java/noppes/npcs/controllers/data/PlayerData.java
@@ -18,13 +18,13 @@ import noppes.npcs.LogWriter;
import noppes.npcs.api.ability.IPlayerAbilityData;
import noppes.npcs.api.entity.ICustomNpc;
import noppes.npcs.api.handler.IPlayerBankData;
-import noppes.npcs.api.handler.IPlayerTradeData;
import noppes.npcs.api.handler.IPlayerData;
import noppes.npcs.api.handler.IPlayerDialogData;
import noppes.npcs.api.handler.IPlayerFactionData;
import noppes.npcs.api.handler.IPlayerItemGiverData;
import noppes.npcs.api.handler.IPlayerMailData;
import noppes.npcs.api.handler.IPlayerQuestData;
+import noppes.npcs.api.handler.IPlayerTradeData;
import noppes.npcs.api.handler.IPlayerTransportData;
import noppes.npcs.config.ConfigMain;
import noppes.npcs.constants.EnumRoleType;
@@ -47,8 +47,6 @@ import java.io.FileOutputStream;
import java.util.HashSet;
import java.util.UUID;
-import static noppes.npcs.util.CustomNPCsThreader.customNPCThread;
-
public class PlayerData implements IExtendedEntityProperties, IPlayerData {
public PlayerDialogData dialogData = new PlayerDialogData(this);
public PlayerBankData bankData = new PlayerBankData(this);
diff --git a/src/main/java/noppes/npcs/controllers/data/action/Action.java b/src/main/java/noppes/npcs/controllers/data/action/Action.java
index cb2af9454..cfa80afc6 100644
--- a/src/main/java/noppes/npcs/controllers/data/action/Action.java
+++ b/src/main/java/noppes/npcs/controllers/data/action/Action.java
@@ -345,10 +345,10 @@ public class Action implements IAction {
try {
onStart.accept(this);
} catch (Throwable t) {
- String err = "IAction" + getName() + " onStart threw an exception:";
+ String err = "IAction" + getName() + " onStart threw an exception:";
if (reportTo != null)
reportTo.appendConsole(err + "\n" + ExceptionUtils.getStackTrace(t));
-
+
manager.LOGGER.error("onStart Task of " + this + " threw an exception:", t);
}
@@ -384,7 +384,7 @@ public class Action implements IAction {
try {
onDone.accept(this);
} catch (Throwable t) {
- String err = "IAction" + getName() + " onDone threw an exception:";
+ String err = "IAction" + getName() + " onDone threw an exception:";
if (reportTo != null)
reportTo.appendConsole(err + "\n" + ExceptionUtils.getStackTrace(t));
diff --git a/src/main/java/noppes/npcs/controllers/data/action/action/ConditionalAction.java b/src/main/java/noppes/npcs/controllers/data/action/action/ConditionalAction.java
index 427749e33..035003cfe 100644
--- a/src/main/java/noppes/npcs/controllers/data/action/action/ConditionalAction.java
+++ b/src/main/java/noppes/npcs/controllers/data/action/action/ConditionalAction.java
@@ -134,7 +134,7 @@ public class ConditionalAction extends Action implements IConditionalAction {
String err = "IConditionalAction '" + getName() + "' threw an exception:";
if (reportTo != null)
reportTo.appendConsole(err + "\n" + ExceptionUtils.getStackTrace(t));
-
+
manager.LOGGER.error("Task of " + this + " threw an exception:", t);
markDone();
}
@@ -151,7 +151,7 @@ public class ConditionalAction extends Action implements IConditionalAction {
try {
onTermination.accept(this);
} catch (Throwable t) {
- String err = "IConditionalAction" + getName() + " onTermination threw an exception:";
+ String err = "IConditionalAction" + getName() + " onTermination threw an exception:";
if (reportTo != null)
reportTo.appendConsole(err + "\n" + ExceptionUtils.getStackTrace(t));
diff --git a/src/main/java/noppes/npcs/items/ItemStaff.java b/src/main/java/noppes/npcs/items/ItemStaff.java
index 2a54c49a3..5891df2e1 100644
--- a/src/main/java/noppes/npcs/items/ItemStaff.java
+++ b/src/main/java/noppes/npcs/items/ItemStaff.java
@@ -1,7 +1,13 @@
package noppes.npcs.items;
import kamkeel.npcs.controllers.data.ability.AnchorPoint;
-import kamkeel.npcs.controllers.data.ability.data.*;
+import kamkeel.npcs.controllers.data.ability.data.EnergyAnchorData;
+import kamkeel.npcs.controllers.data.ability.data.EnergyCombatData;
+import kamkeel.npcs.controllers.data.ability.data.EnergyDisplayData;
+import kamkeel.npcs.controllers.data.ability.data.EnergyHomingData;
+import kamkeel.npcs.controllers.data.ability.data.EnergyLifespanData;
+import kamkeel.npcs.controllers.data.ability.data.EnergyLightningData;
+import kamkeel.npcs.controllers.data.ability.data.EnergyTrajectoryData;
import kamkeel.npcs.entity.EntityAbilityOrb;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
@@ -22,7 +28,7 @@ import noppes.npcs.entity.EntityProjectile;
import noppes.npcs.util.IProjectileCallback;
import org.lwjgl.opengl.GL11;
-import java.awt.*;
+import java.awt.Color;
public class ItemStaff extends ItemNpcInterface implements IProjectileCallback {
@@ -33,7 +39,8 @@ public class ItemStaff extends ItemNpcInterface implements IProjectileCallback {
public ItemStaff(int par1, EnumNpcToolMaterial material) {
super(par1);
this.material = material;
- this.color = OrbColor.get(material.ordinal());;
+ this.color = OrbColor.get(material.ordinal());
+ ;
setCreativeTab(CustomItems.tabWeapon);
}
diff --git a/src/main/java/noppes/npcs/scripted/NpcAPI.java b/src/main/java/noppes/npcs/scripted/NpcAPI.java
index d1d041c8e..aebc9321d 100644
--- a/src/main/java/noppes/npcs/scripted/NpcAPI.java
+++ b/src/main/java/noppes/npcs/scripted/NpcAPI.java
@@ -3,10 +3,10 @@ package noppes.npcs.scripted;
import cpw.mods.fml.common.Loader;
import cpw.mods.fml.common.eventhandler.EventBus;
import foxz.command.ScriptedCommand;
+import kamkeel.npcs.controllers.AbilityController;
import kamkeel.npcs.controllers.AttributeController;
import kamkeel.npcs.controllers.ProfileController;
import kamkeel.npcs.controllers.TelegraphController;
-import kamkeel.npcs.controllers.AbilityController;
import kamkeel.npcs.entity.EntityAbilityBeam;
import kamkeel.npcs.entity.EntityAbilityDisc;
import kamkeel.npcs.entity.EntityAbilityLaser;
@@ -58,9 +58,9 @@ import noppes.npcs.api.IContainer;
import noppes.npcs.api.IDamageSource;
import noppes.npcs.api.INbt;
import noppes.npcs.api.IParticle;
-import noppes.npcs.api.ITelegraph;
import noppes.npcs.api.IPos;
import noppes.npcs.api.ISkinOverlay;
+import noppes.npcs.api.ITelegraph;
import noppes.npcs.api.ITileEntity;
import noppes.npcs.api.IWorld;
import noppes.npcs.api.entity.ICustomNpc;
@@ -70,8 +70,8 @@ import noppes.npcs.api.gui.ICustomGui;
import noppes.npcs.api.handler.IAbilityHandler;
import noppes.npcs.api.handler.IActionManager;
import noppes.npcs.api.handler.IAnimationHandler;
-import noppes.npcs.api.handler.IAuctionHandler;
import noppes.npcs.api.handler.IAttributeHandler;
+import noppes.npcs.api.handler.IAuctionHandler;
import noppes.npcs.api.handler.ICloneHandler;
import noppes.npcs.api.handler.ICustomEffectHandler;
import noppes.npcs.api.handler.IDialogHandler;
diff --git a/src/main/java/noppes/npcs/scripted/ScriptWorld.java b/src/main/java/noppes/npcs/scripted/ScriptWorld.java
index b827315d2..5bbe3909a 100644
--- a/src/main/java/noppes/npcs/scripted/ScriptWorld.java
+++ b/src/main/java/noppes/npcs/scripted/ScriptWorld.java
@@ -1,5 +1,9 @@
package noppes.npcs.scripted;
+import kamkeel.npcs.entity.EntityAbilityBeam;
+import kamkeel.npcs.entity.EntityAbilityDisc;
+import kamkeel.npcs.entity.EntityAbilityLaser;
+import kamkeel.npcs.entity.EntityAbilityOrb;
import net.minecraft.block.Block;
import net.minecraft.block.BlockAir;
import net.minecraft.entity.Entity;
@@ -21,10 +25,6 @@ import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.common.util.BlockSnapshot;
import net.minecraftforge.common.util.FakePlayer;
import net.minecraftforge.event.world.BlockEvent;
-import kamkeel.npcs.entity.EntityAbilityBeam;
-import kamkeel.npcs.entity.EntityAbilityDisc;
-import kamkeel.npcs.entity.EntityAbilityLaser;
-import kamkeel.npcs.entity.EntityAbilityOrb;
import noppes.npcs.CustomNpcs;
import noppes.npcs.NoppesUtilServer;
import noppes.npcs.api.IBlock;
diff --git a/src/main/java/noppes/npcs/scripted/entity/ScriptEnergyAbility.java b/src/main/java/noppes/npcs/scripted/entity/ScriptEnergyAbility.java
index b84c2bf4b..86bae44b3 100644
--- a/src/main/java/noppes/npcs/scripted/entity/ScriptEnergyAbility.java
+++ b/src/main/java/noppes/npcs/scripted/entity/ScriptEnergyAbility.java
@@ -29,40 +29,95 @@ public abstract class ScriptEnergyAbility extends
// ==================== DISPLAY ====================
- public int getInnerColor() { return entity.getInnerColor(); }
- public void setInnerColor(int color) { entity.setInnerColor(color); }
+ public int getInnerColor() {
+ return entity.getInnerColor();
+ }
- public float getInnerAlpha() { return entity.getInnerAlpha(); }
- public void setInnerAlpha(float alpha) { entity.setInnerAlpha(alpha); }
+ public void setInnerColor(int color) {
+ entity.setInnerColor(color);
+ }
- public int getOuterColor() { return entity.getOuterColor(); }
- public void setOuterColor(int color) { entity.setOuterColor(color); }
+ public float getInnerAlpha() {
+ return entity.getInnerAlpha();
+ }
- public boolean isOuterColorEnabled() { return entity.isOuterColorEnabled(); }
- public void setOuterColorEnabled(boolean enabled) { entity.setOuterColorEnabled(enabled); }
+ public void setInnerAlpha(float alpha) {
+ entity.setInnerAlpha(alpha);
+ }
- public float getOuterColorWidth() { return entity.getOuterColorWidth(); }
- public void setOuterColorWidth(float width) { entity.setOuterColorWidth(width); }
+ public int getOuterColor() {
+ return entity.getOuterColor();
+ }
- public float getOuterColorAlpha() { return entity.getOuterColorAlpha(); }
- public void setOuterColorAlpha(float alpha) { entity.setOuterColorAlpha(alpha); }
+ public void setOuterColor(int color) {
+ entity.setOuterColor(color);
+ }
+
+ public boolean isOuterColorEnabled() {
+ return entity.isOuterColorEnabled();
+ }
+
+ public void setOuterColorEnabled(boolean enabled) {
+ entity.setOuterColorEnabled(enabled);
+ }
+
+ public float getOuterColorWidth() {
+ return entity.getOuterColorWidth();
+ }
+
+ public void setOuterColorWidth(float width) {
+ entity.setOuterColorWidth(width);
+ }
+
+ public float getOuterColorAlpha() {
+ return entity.getOuterColorAlpha();
+ }
+
+ public void setOuterColorAlpha(float alpha) {
+ entity.setOuterColorAlpha(alpha);
+ }
// ==================== LIGHTNING ====================
- public boolean hasLightningEffect() { return entity.hasLightningEffect(); }
- public void setLightningEffect(boolean enabled) { entity.setLightningEffect(enabled); }
+ public boolean hasLightningEffect() {
+ return entity.hasLightningEffect();
+ }
- public float getLightningDensity() { return entity.getLightningDensity(); }
- public void setLightningDensity(float density) { entity.setLightningDensity(density); }
+ public void setLightningEffect(boolean enabled) {
+ entity.setLightningEffect(enabled);
+ }
- public float getLightningRadius() { return entity.getLightningRadius(); }
- public void setLightningRadius(float radius) { entity.setLightningRadius(radius); }
+ public float getLightningDensity() {
+ return entity.getLightningDensity();
+ }
- public int getLightningFadeTime() { return entity.getLightningFadeTime(); }
- public void setLightningFadeTime(int ticks) { entity.setLightningFadeTime(ticks); }
+ public void setLightningDensity(float density) {
+ entity.setLightningDensity(density);
+ }
+
+ public float getLightningRadius() {
+ return entity.getLightningRadius();
+ }
+
+ public void setLightningRadius(float radius) {
+ entity.setLightningRadius(radius);
+ }
+
+ public int getLightningFadeTime() {
+ return entity.getLightningFadeTime();
+ }
+
+ public void setLightningFadeTime(int ticks) {
+ entity.setLightningFadeTime(ticks);
+ }
// ==================== STATE ====================
- public boolean isCharging() { return entity.isCharging(); }
- public float getChargeProgress() { return entity.getChargeProgress(); }
+ public boolean isCharging() {
+ return entity.isCharging();
+ }
+
+ public float getChargeProgress() {
+ return entity.getChargeProgress();
+ }
}
diff --git a/src/main/java/noppes/npcs/scripted/entity/ScriptEnergyBarrier.java b/src/main/java/noppes/npcs/scripted/entity/ScriptEnergyBarrier.java
index 9455b28cd..29f330ff7 100644
--- a/src/main/java/noppes/npcs/scripted/entity/ScriptEnergyBarrier.java
+++ b/src/main/java/noppes/npcs/scripted/entity/ScriptEnergyBarrier.java
@@ -81,17 +81,37 @@ public class ScriptEnergyBarrier extends ScriptEn
// ==================== BARRIER ====================
- public float getDefaultMultiplier() { return entity.getBarrierData().defaultMultiplier; }
- public void setDefaultMultiplier(float multiplier) { entity.getBarrierData().defaultMultiplier = multiplier; }
+ public float getDefaultMultiplier() {
+ return entity.getBarrierData().defaultMultiplier;
+ }
- public boolean isKnockbackEnabled() { return entity.getBarrierData().knockbackEnabled; }
- public void setKnockbackEnabled(boolean enabled) { entity.getBarrierData().knockbackEnabled = enabled; }
+ public void setDefaultMultiplier(float multiplier) {
+ entity.getBarrierData().defaultMultiplier = multiplier;
+ }
- public float getKnockbackStrength() { return entity.getBarrierData().knockbackStrength; }
- public void setKnockbackStrength(float strength) { entity.getBarrierData().knockbackStrength = strength; }
+ public boolean isKnockbackEnabled() {
+ return entity.getBarrierData().knockbackEnabled;
+ }
- public int getKnockbackTarget() { return entity.getBarrierData().knockbackTarget; }
- public void setKnockbackTarget(int target) { entity.getBarrierData().knockbackTarget = target; }
+ public void setKnockbackEnabled(boolean enabled) {
+ entity.getBarrierData().knockbackEnabled = enabled;
+ }
+
+ public float getKnockbackStrength() {
+ return entity.getBarrierData().knockbackStrength;
+ }
+
+ public void setKnockbackStrength(float strength) {
+ entity.getBarrierData().knockbackStrength = strength;
+ }
+
+ public int getKnockbackTarget() {
+ return entity.getBarrierData().knockbackTarget;
+ }
+
+ public void setKnockbackTarget(int target) {
+ entity.getBarrierData().knockbackTarget = target;
+ }
public int getBarrierType() {
return entity instanceof EntityEnergyDome ? 0 : 1;
diff --git a/src/main/java/noppes/npcs/scripted/entity/ScriptEnergyBeam.java b/src/main/java/noppes/npcs/scripted/entity/ScriptEnergyBeam.java
index b42a32b1d..9c5a8b8be 100644
--- a/src/main/java/noppes/npcs/scripted/entity/ScriptEnergyBeam.java
+++ b/src/main/java/noppes/npcs/scripted/entity/ScriptEnergyBeam.java
@@ -29,16 +29,33 @@ public class ScriptEnergyBeam extends ScriptEnergyP
// ==================== BEAM-SPECIFIC ====================
- public float getBeamWidth() { return entity.getBeamWidth(); }
- public void setBeamWidth(float width) { entity.setBeamWidth(width); }
+ public float getBeamWidth() {
+ return entity.getBeamWidth();
+ }
- public float getHeadSize() { return entity.getHeadSize(); }
- public void setHeadSize(float size) { entity.setHeadSize(size); }
+ public void setBeamWidth(float width) {
+ entity.setBeamWidth(width);
+ }
- public boolean isAttachedToOwner() { return entity.isAttachedToOwner(); }
- public void setAttachedToOwner(boolean attached) { entity.setAttachedToOwner(attached); }
+ public float getHeadSize() {
+ return entity.getHeadSize();
+ }
- public boolean shouldRenderTailOrb() { return entity.shouldRenderTailOrb(); }
+ public void setHeadSize(float size) {
+ entity.setHeadSize(size);
+ }
+
+ public boolean isAttachedToOwner() {
+ return entity.isAttachedToOwner();
+ }
+
+ public void setAttachedToOwner(boolean attached) {
+ entity.setAttachedToOwner(attached);
+ }
+
+ public boolean shouldRenderTailOrb() {
+ return entity.shouldRenderTailOrb();
+ }
// ==================== FIRE ====================
diff --git a/src/main/java/noppes/npcs/scripted/entity/ScriptEnergyDisc.java b/src/main/java/noppes/npcs/scripted/entity/ScriptEnergyDisc.java
index 62dde7979..c02fdad31 100644
--- a/src/main/java/noppes/npcs/scripted/entity/ScriptEnergyDisc.java
+++ b/src/main/java/noppes/npcs/scripted/entity/ScriptEnergyDisc.java
@@ -29,22 +29,49 @@ public class ScriptEnergyDisc extends ScriptEnergyP
// ==================== DISC-SPECIFIC ====================
- public float getDiscRadius() { return entity.getDiscRadius(); }
- public void setDiscRadius(float radius) { entity.setDiscRadius(radius); }
+ public float getDiscRadius() {
+ return entity.getDiscRadius();
+ }
- public float getDiscThickness() { return entity.getDiscThickness(); }
- public void setDiscThickness(float thickness) { entity.setDiscThickness(thickness); }
+ public void setDiscRadius(float radius) {
+ entity.setDiscRadius(radius);
+ }
- public boolean isVertical() { return entity.isVertical(); }
- public void setVertical(boolean vertical) { entity.setVertical(vertical); }
+ public float getDiscThickness() {
+ return entity.getDiscThickness();
+ }
- public boolean isBoomerang() { return entity.isBoomerang(); }
- public void setBoomerang(boolean boomerang) { entity.setBoomerang(boomerang); }
+ public void setDiscThickness(float thickness) {
+ entity.setDiscThickness(thickness);
+ }
- public int getBoomerangDelay() { return entity.getBoomerangDelay(); }
- public void setBoomerangDelay(int ticks) { entity.setBoomerangDelay(ticks); }
+ public boolean isVertical() {
+ return entity.isVertical();
+ }
- public boolean isReturning() { return entity.isReturning(); }
+ public void setVertical(boolean vertical) {
+ entity.setVertical(vertical);
+ }
+
+ public boolean isBoomerang() {
+ return entity.isBoomerang();
+ }
+
+ public void setBoomerang(boolean boomerang) {
+ entity.setBoomerang(boomerang);
+ }
+
+ public int getBoomerangDelay() {
+ return entity.getBoomerangDelay();
+ }
+
+ public void setBoomerangDelay(int ticks) {
+ entity.setBoomerangDelay(ticks);
+ }
+
+ public boolean isReturning() {
+ return entity.isReturning();
+ }
// ==================== FIRE ====================
diff --git a/src/main/java/noppes/npcs/scripted/entity/ScriptEnergyDome.java b/src/main/java/noppes/npcs/scripted/entity/ScriptEnergyDome.java
index 8d331c170..e022118f7 100644
--- a/src/main/java/noppes/npcs/scripted/entity/ScriptEnergyDome.java
+++ b/src/main/java/noppes/npcs/scripted/entity/ScriptEnergyDome.java
@@ -27,6 +27,11 @@ public class ScriptEnergyDome extends ScriptEnergyBa
// ==================== DOME-SPECIFIC ====================
- public float getDomeRadius() { return entity.getDomeRadius(); }
- public void setDomeRadius(float radius) { entity.setDomeRadius(radius); }
+ public float getDomeRadius() {
+ return entity.getDomeRadius();
+ }
+
+ public void setDomeRadius(float radius) {
+ entity.setDomeRadius(radius);
+ }
}
diff --git a/src/main/java/noppes/npcs/scripted/entity/ScriptEnergyLaser.java b/src/main/java/noppes/npcs/scripted/entity/ScriptEnergyLaser.java
index 976fd948d..3963794fc 100644
--- a/src/main/java/noppes/npcs/scripted/entity/ScriptEnergyLaser.java
+++ b/src/main/java/noppes/npcs/scripted/entity/ScriptEnergyLaser.java
@@ -29,31 +29,77 @@ public class ScriptEnergyLaser extends ScriptEnerg
// ==================== LASER-SPECIFIC ====================
- public float getLaserWidth() { return entity.getLaserWidth(); }
- public void setLaserWidth(float width) { entity.setLaserWidth(width); }
+ public float getLaserWidth() {
+ return entity.getLaserWidth();
+ }
- public float getExpansionSpeed() { return entity.getExpansionSpeed(); }
- public void setExpansionSpeed(float speed) { entity.setExpansionSpeed(speed); }
+ public void setLaserWidth(float width) {
+ entity.setLaserWidth(width);
+ }
- public int getLingerTicks() { return entity.getLingerTicks(); }
- public void setLingerTicks(int ticks) { entity.setLingerTicks(ticks); }
+ public float getExpansionSpeed() {
+ return entity.getExpansionSpeed();
+ }
- public float getCurrentLength() { return entity.getCurrentLength(); }
- public boolean isFullyExtended() { return entity.isFullyExtended(); }
+ public void setExpansionSpeed(float speed) {
+ entity.setExpansionSpeed(speed);
+ }
- public double getDirX() { return entity.getDirX(); }
- public double getDirY() { return entity.getDirY(); }
- public double getDirZ() { return entity.getDirZ(); }
- public void setDirection(double x, double y, double z) { entity.setDirection(x, y, z); }
+ public int getLingerTicks() {
+ return entity.getLingerTicks();
+ }
- public double getEndX() { return entity.getEndX(); }
- public double getEndY() { return entity.getEndY(); }
- public double getEndZ() { return entity.getEndZ(); }
+ public void setLingerTicks(int ticks) {
+ entity.setLingerTicks(ticks);
+ }
- public float getLingerAlpha() { return entity.getLingerAlpha(); }
+ public float getCurrentLength() {
+ return entity.getCurrentLength();
+ }
- public boolean isLockVerticalDirection() { return entity.isLockVerticalDirection(); }
- public void setLockVerticalDirection(boolean lock) { entity.setLockVerticalDirection(lock); }
+ public boolean isFullyExtended() {
+ return entity.isFullyExtended();
+ }
+
+ public double getDirX() {
+ return entity.getDirX();
+ }
+
+ public double getDirY() {
+ return entity.getDirY();
+ }
+
+ public double getDirZ() {
+ return entity.getDirZ();
+ }
+
+ public void setDirection(double x, double y, double z) {
+ entity.setDirection(x, y, z);
+ }
+
+ public double getEndX() {
+ return entity.getEndX();
+ }
+
+ public double getEndY() {
+ return entity.getEndY();
+ }
+
+ public double getEndZ() {
+ return entity.getEndZ();
+ }
+
+ public float getLingerAlpha() {
+ return entity.getLingerAlpha();
+ }
+
+ public boolean isLockVerticalDirection() {
+ return entity.isLockVerticalDirection();
+ }
+
+ public void setLockVerticalDirection(boolean lock) {
+ entity.setLockVerticalDirection(lock);
+ }
// ==================== FIRE ====================
diff --git a/src/main/java/noppes/npcs/scripted/entity/ScriptEnergyPanel.java b/src/main/java/noppes/npcs/scripted/entity/ScriptEnergyPanel.java
index 5da93dc4a..04c730fad 100644
--- a/src/main/java/noppes/npcs/scripted/entity/ScriptEnergyPanel.java
+++ b/src/main/java/noppes/npcs/scripted/entity/ScriptEnergyPanel.java
@@ -27,15 +27,31 @@ public class ScriptEnergyPanel extends ScriptEnergy
// ==================== PANEL-SPECIFIC ====================
- public float getPanelWidth() { return entity.getPanelData().panelWidth; }
- public void setPanelWidth(float width) { entity.getPanelData().setPanelWidth(width); }
+ public float getPanelWidth() {
+ return entity.getPanelData().panelWidth;
+ }
- public float getPanelHeight() { return entity.getPanelData().panelHeight; }
- public void setPanelHeight(float height) { entity.getPanelData().setPanelHeight(height); }
+ public void setPanelWidth(float width) {
+ entity.getPanelData().setPanelWidth(width);
+ }
- public float getPanelYaw() { return entity.getPanelYaw(); }
+ public float getPanelHeight() {
+ return entity.getPanelData().panelHeight;
+ }
- public int getPanelMode() { return entity.getMode().ordinal(); }
+ public void setPanelHeight(float height) {
+ entity.getPanelData().setPanelHeight(height);
+ }
- public boolean isLaunched() { return entity.getMode() == EntityEnergyPanel.PanelMode.LAUNCHED; }
+ public float getPanelYaw() {
+ return entity.getPanelYaw();
+ }
+
+ public int getPanelMode() {
+ return entity.getMode().ordinal();
+ }
+
+ public boolean isLaunched() {
+ return entity.getMode() == EntityEnergyPanel.PanelMode.LAUNCHED;
+ }
}
diff --git a/src/main/java/noppes/npcs/scripted/entity/ScriptEnergyProjectile.java b/src/main/java/noppes/npcs/scripted/entity/ScriptEnergyProjectile.java
index 9da13936f..38a95db0c 100644
--- a/src/main/java/noppes/npcs/scripted/entity/ScriptEnergyProjectile.java
+++ b/src/main/java/noppes/npcs/scripted/entity/ScriptEnergyProjectile.java
@@ -3,10 +3,10 @@ package noppes.npcs.scripted.entity;
import kamkeel.npcs.entity.EntityEnergyProjectile;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
+import noppes.npcs.EventHooks;
import noppes.npcs.api.entity.IEnergyProjectile;
import noppes.npcs.api.entity.IEntity;
import noppes.npcs.api.entity.IEntityLivingBase;
-import noppes.npcs.EventHooks;
import noppes.npcs.scripted.constants.EntityType;
public class ScriptEnergyProjectile extends ScriptEnergyAbility implements IEnergyProjectile {
@@ -67,74 +67,171 @@ public class ScriptEnergyProjectile extends Sc
// ==================== DISPLAY (PROJECTILE-SPECIFIC) ====================
- public float getRotationSpeed() { return entity.getRotationSpeed(); }
- public void setRotationSpeed(float speed) { entity.setRotationSpeed(speed); }
+ public float getRotationSpeed() {
+ return entity.getRotationSpeed();
+ }
+
+ public void setRotationSpeed(float speed) {
+ entity.setRotationSpeed(speed);
+ }
// ==================== INTERPOLATION ====================
- public float getInterpolatedRotationX(float partialTicks) { return entity.getInterpolatedRotationX(partialTicks); }
- public float getInterpolatedRotationY(float partialTicks) { return entity.getInterpolatedRotationY(partialTicks); }
- public float getInterpolatedRotationZ(float partialTicks) { return entity.getInterpolatedRotationZ(partialTicks); }
- public float getInterpolatedSize(float partialTicks) { return entity.getInterpolatedSize(partialTicks); }
+ public float getInterpolatedRotationX(float partialTicks) {
+ return entity.getInterpolatedRotationX(partialTicks);
+ }
+
+ public float getInterpolatedRotationY(float partialTicks) {
+ return entity.getInterpolatedRotationY(partialTicks);
+ }
+
+ public float getInterpolatedRotationZ(float partialTicks) {
+ return entity.getInterpolatedRotationZ(partialTicks);
+ }
+
+ public float getInterpolatedSize(float partialTicks) {
+ return entity.getInterpolatedSize(partialTicks);
+ }
// ==================== LIFESPAN ====================
- public float getMaxDistance() { return entity.getMaxDistance(); }
- public void setMaxDistance(float distance) { entity.setMaxDistance(distance); }
+ public float getMaxDistance() {
+ return entity.getMaxDistance();
+ }
- public int getMaxLifetime() { return entity.getMaxLifetime(); }
- public void setMaxLifetime(int ticks) { entity.setMaxLifetime(ticks); }
+ public void setMaxDistance(float distance) {
+ entity.setMaxDistance(distance);
+ }
+
+ public int getMaxLifetime() {
+ return entity.getMaxLifetime();
+ }
+
+ public void setMaxLifetime(int ticks) {
+ entity.setMaxLifetime(ticks);
+ }
// ==================== COMBAT ====================
- public float getDamage() { return entity.getDamage(); }
- public void setDamage(float damage) { entity.setCombatDamage(damage); }
+ public float getDamage() {
+ return entity.getDamage();
+ }
- public float getKnockback() { return entity.getKnockback(); }
- public void setKnockback(float knockback) { entity.setCombatKnockback(knockback); }
+ public void setDamage(float damage) {
+ entity.setCombatDamage(damage);
+ }
- public float getKnockbackUp() { return entity.getKnockbackUp(); }
- public void setKnockbackUp(float knockbackUp) { entity.setCombatKnockbackUp(knockbackUp); }
+ public float getKnockback() {
+ return entity.getKnockback();
+ }
- public boolean isExplosive() { return entity.isExplosive(); }
- public void setExplosive(boolean explosive) { entity.setExplosive(explosive); }
+ public void setKnockback(float knockback) {
+ entity.setCombatKnockback(knockback);
+ }
- public float getExplosionRadius() { return entity.getExplosionRadius(); }
- public void setExplosionRadius(float radius) { entity.setExplosionRadius(radius); }
+ public float getKnockbackUp() {
+ return entity.getKnockbackUp();
+ }
- public float getExplosionDamageFalloff() { return entity.getExplosionDamageFalloff(); }
- public void setExplosionDamageFalloff(float falloff) { entity.setExplosionDamageFalloff(falloff); }
+ public void setKnockbackUp(float knockbackUp) {
+ entity.setCombatKnockbackUp(knockbackUp);
+ }
+
+ public boolean isExplosive() {
+ return entity.isExplosive();
+ }
+
+ public void setExplosive(boolean explosive) {
+ entity.setExplosive(explosive);
+ }
+
+ public float getExplosionRadius() {
+ return entity.getExplosionRadius();
+ }
+
+ public void setExplosionRadius(float radius) {
+ entity.setExplosionRadius(radius);
+ }
+
+ public float getExplosionDamageFalloff() {
+ return entity.getExplosionDamageFalloff();
+ }
+
+ public void setExplosionDamageFalloff(float falloff) {
+ entity.setExplosionDamageFalloff(falloff);
+ }
// ==================== MOVEMENT ====================
- public float getSpeed() { return entity.getSpeed(); }
- public void setSpeed(float speed) { entity.setSpeed(speed); }
+ public float getSpeed() {
+ return entity.getSpeed();
+ }
- public boolean isHoming() { return entity.isHoming(); }
- public void setHoming(boolean homing) { entity.setHomingEnabled(homing); }
+ public void setSpeed(float speed) {
+ entity.setSpeed(speed);
+ }
- public float getHomingStrength() { return entity.getHomingStrength(); }
- public void setHomingStrength(float strength) { entity.setHomingStrength(strength); }
+ public boolean isHoming() {
+ return entity.isHoming();
+ }
- public float getHomingRange() { return entity.getHomingRange(); }
- public void setHomingRange(float range) { entity.setHomingRange(range); }
+ public void setHoming(boolean homing) {
+ entity.setHomingEnabled(homing);
+ }
+
+ public float getHomingStrength() {
+ return entity.getHomingStrength();
+ }
+
+ public void setHomingStrength(float strength) {
+ entity.setHomingStrength(strength);
+ }
+
+ public float getHomingRange() {
+ return entity.getHomingRange();
+ }
+
+ public void setHomingRange(float range) {
+ entity.setHomingRange(range);
+ }
// ==================== ANCHOR ====================
- public int getAnchor() { return entity.getAnchor(); }
- public float getAnchorOffsetX() { return entity.getAnchorOffsetX(); }
- public float getAnchorOffsetY() { return entity.getAnchorOffsetY(); }
- public float getAnchorOffsetZ() { return entity.getAnchorOffsetZ(); }
+ public int getAnchor() {
+ return entity.getAnchor();
+ }
+
+ public float getAnchorOffsetX() {
+ return entity.getAnchorOffsetX();
+ }
+
+ public float getAnchorOffsetY() {
+ return entity.getAnchorOffsetY();
+ }
+
+ public float getAnchorOffsetZ() {
+ return entity.getAnchorOffsetZ();
+ }
// ==================== POSITION ====================
- public double getStartX() { return entity.getStartX(); }
- public double getStartY() { return entity.getStartY(); }
- public double getStartZ() { return entity.getStartZ(); }
+ public double getStartX() {
+ return entity.getStartX();
+ }
+
+ public double getStartY() {
+ return entity.getStartY();
+ }
+
+ public double getStartZ() {
+ return entity.getStartZ();
+ }
// ==================== STATE ====================
- public boolean hasHit() { return entity.getHasHit(); }
+ public boolean hasHit() {
+ return entity.getHasHit();
+ }
// ==================== FIRE ====================
diff --git a/src/main/java/noppes/npcs/scripted/entity/ScriptEnergySlicer.java b/src/main/java/noppes/npcs/scripted/entity/ScriptEnergySlicer.java
index 270266123..f0105cdd9 100644
--- a/src/main/java/noppes/npcs/scripted/entity/ScriptEnergySlicer.java
+++ b/src/main/java/noppes/npcs/scripted/entity/ScriptEnergySlicer.java
@@ -29,14 +29,29 @@ public class ScriptEnergySlicer extends ScriptEner
// ==================== SLICER-SPECIFIC ====================
- public float getSliceWidth() { return entity.getSliceWidth(); }
- public void setSliceWidth(float width) { entity.setSliceWidth(width); }
+ public float getSliceWidth() {
+ return entity.getSliceWidth();
+ }
- public float getSliceThickness() { return entity.getSliceThickness(); }
- public void setSliceThickness(float thickness) { entity.setSliceThickness(thickness); }
+ public void setSliceWidth(float width) {
+ entity.setSliceWidth(width);
+ }
- public boolean isPiercing() { return entity.isPiercing(); }
- public void setPiercing(boolean piercing) { entity.setPiercing(piercing); }
+ public float getSliceThickness() {
+ return entity.getSliceThickness();
+ }
+
+ public void setSliceThickness(float thickness) {
+ entity.setSliceThickness(thickness);
+ }
+
+ public boolean isPiercing() {
+ return entity.isPiercing();
+ }
+
+ public void setPiercing(boolean piercing) {
+ entity.setPiercing(piercing);
+ }
// ==================== FIRE ====================
diff --git a/src/main/java/noppes/npcs/scripted/entity/ScriptNpc.java b/src/main/java/noppes/npcs/scripted/entity/ScriptNpc.java
index 78134a3fc..25734b7e4 100644
--- a/src/main/java/noppes/npcs/scripted/entity/ScriptNpc.java
+++ b/src/main/java/noppes/npcs/scripted/entity/ScriptNpc.java
@@ -1,5 +1,6 @@
package noppes.npcs.scripted.entity;
+import kamkeel.npcs.entity.EntityEnergyProjectile;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import noppes.npcs.NoppesUtilServer;
@@ -29,7 +30,6 @@ import noppes.npcs.constants.EnumMovingType;
import noppes.npcs.constants.EnumNavType;
import noppes.npcs.constants.EnumRoleType;
import noppes.npcs.constants.EnumStandingType;
-import kamkeel.npcs.entity.EntityEnergyProjectile;
import noppes.npcs.controllers.FactionController;
import noppes.npcs.controllers.data.DialogOption;
import noppes.npcs.controllers.data.Line;
diff --git a/src/main/java/noppes/npcs/scripted/event/player/AuctionEvent.java b/src/main/java/noppes/npcs/scripted/event/player/AuctionEvent.java
index 8cebf5a6c..fc3a121e1 100644
--- a/src/main/java/noppes/npcs/scripted/event/player/AuctionEvent.java
+++ b/src/main/java/noppes/npcs/scripted/event/player/AuctionEvent.java
@@ -38,13 +38,19 @@ public class AuctionEvent extends PlayerEvent implements IAuctionEvent {
}
@Override
- public IItemStack getItem() { return item; }
+ public IItemStack getItem() {
+ return item;
+ }
@Override
- public long getStartingPrice() { return startingPrice; }
+ public long getStartingPrice() {
+ return startingPrice;
+ }
@Override
- public long getBuyoutPrice() { return buyoutPrice; }
+ public long getBuyoutPrice() {
+ return buyoutPrice;
+ }
}
@Cancelable
@@ -64,10 +70,14 @@ public class AuctionEvent extends PlayerEvent implements IAuctionEvent {
}
@Override
- public IAuctionListing getListing() { return listing; }
+ public IAuctionListing getListing() {
+ return listing;
+ }
@Override
- public long getBidAmount() { return bidAmount; }
+ public long getBidAmount() {
+ return bidAmount;
+ }
}
@Cancelable
@@ -85,7 +95,9 @@ public class AuctionEvent extends PlayerEvent implements IAuctionEvent {
}
@Override
- public IAuctionListing getListing() { return listing; }
+ public IAuctionListing getListing() {
+ return listing;
+ }
}
@Cancelable
@@ -105,10 +117,14 @@ public class AuctionEvent extends PlayerEvent implements IAuctionEvent {
}
@Override
- public IAuctionListing getListing() { return listing; }
+ public IAuctionListing getListing() {
+ return listing;
+ }
@Override
- public boolean isAdmin() { return admin; }
+ public boolean isAdmin() {
+ return admin;
+ }
}
@Cancelable
@@ -126,6 +142,8 @@ public class AuctionEvent extends PlayerEvent implements IAuctionEvent {
}
@Override
- public IAuctionClaim getClaim() { return claim; }
+ public IAuctionClaim getClaim() {
+ return claim;
+ }
}
}
diff --git a/src/main/java/noppes/npcs/scripted/wrapper/ScriptDataAbilities.java b/src/main/java/noppes/npcs/scripted/wrapper/ScriptDataAbilities.java
index f6b9379c1..8e0bda906 100644
--- a/src/main/java/noppes/npcs/scripted/wrapper/ScriptDataAbilities.java
+++ b/src/main/java/noppes/npcs/scripted/wrapper/ScriptDataAbilities.java
@@ -1,7 +1,7 @@
package noppes.npcs.scripted.wrapper;
-import kamkeel.npcs.controllers.data.ability.Ability;
import kamkeel.npcs.controllers.AbilityController;
+import kamkeel.npcs.controllers.data.ability.Ability;
import kamkeel.npcs.controllers.data.ability.AbilityAction;
import net.minecraft.entity.EntityLivingBase;
import noppes.npcs.DataAbilities;
diff --git a/src/main/java/noppes/npcs/scripted/wrapper/ScriptPlayerAbilityData.java b/src/main/java/noppes/npcs/scripted/wrapper/ScriptPlayerAbilityData.java
index 8d3d068d5..c66a12a48 100644
--- a/src/main/java/noppes/npcs/scripted/wrapper/ScriptPlayerAbilityData.java
+++ b/src/main/java/noppes/npcs/scripted/wrapper/ScriptPlayerAbilityData.java
@@ -1,7 +1,7 @@
package noppes.npcs.scripted.wrapper;
-import kamkeel.npcs.controllers.data.ability.Ability;
import kamkeel.npcs.controllers.AbilityController;
+import kamkeel.npcs.controllers.data.ability.Ability;
import net.minecraft.entity.player.EntityPlayer;
import noppes.npcs.api.ability.IAbility;
import noppes.npcs.api.ability.IPlayerAbilityData;
diff --git a/src/main/java/somehussar/gui/AnnotatedGui.java b/src/main/java/somehussar/gui/AnnotatedGui.java
index 8cdf224d5..7a1244f89 100644
--- a/src/main/java/somehussar/gui/AnnotatedGui.java
+++ b/src/main/java/somehussar/gui/AnnotatedGui.java
@@ -33,7 +33,7 @@ public class AnnotatedGui extends SubGuiInterface {
int i = 0;
for (EditableField field : metadata.getParent().getDeclaredFields()) {
- addLabel(new GuiNpcLabel(i++, field.getName(), guiLeft+8, guiTop+i*15+5));
+ addLabel(new GuiNpcLabel(i++, field.getName(), guiLeft + 8, guiTop + i * 15 + 5));
}
}
diff --git a/src/main/java/somehussar/gui/ImmediateTextField.java b/src/main/java/somehussar/gui/ImmediateTextField.java
index 5f49a9d84..fba3c5a4d 100644
--- a/src/main/java/somehussar/gui/ImmediateTextField.java
+++ b/src/main/java/somehussar/gui/ImmediateTextField.java
@@ -5,7 +5,7 @@ import net.minecraft.client.gui.FontRenderer;
import noppes.npcs.client.gui.util.GuiNpcTextField;
import somehussar.gui.annotationHandling.field.EditableField;
-public class ImmediateTextField extends GuiNpcTextField{
+public class ImmediateTextField extends GuiNpcTextField {
private final EditableField editableField;
//
// private final GuiNpcTextField encapsulatedField;
@@ -13,6 +13,7 @@ public class ImmediateTextField extends GuiNpcTextField{
public ImmediateTextField(int id, EditableField field, int xPos, int yPos) {
this(id, field, Minecraft.getMinecraft().fontRenderer, xPos, yPos);
}
+
public ImmediateTextField(int id, EditableField field, FontRenderer fontRenderer, int xPos, int yPos) {
super(id, null, fontRenderer, xPos, yPos, 0, 0, null);
diff --git a/src/main/java/somehussar/gui/annotationHandling/GuiEditable.java b/src/main/java/somehussar/gui/annotationHandling/GuiEditable.java
index 596f3ab2f..95a74658e 100644
--- a/src/main/java/somehussar/gui/annotationHandling/GuiEditable.java
+++ b/src/main/java/somehussar/gui/annotationHandling/GuiEditable.java
@@ -27,6 +27,7 @@ public @interface GuiEditable {
@Retention(RetentionPolicy.RUNTIME)
@interface Size {
int labelWidth() default 60;
+
int fieldWidth() default 50;
GuiEditable.Size DEFAULT_SIZE = new GuiEditable.Size() {
@@ -39,7 +40,11 @@ public @interface GuiEditable {
public int fieldWidth() {
return 50;
}
- @Override public Class extends Annotation> annotationType() { return GuiEditable.Size.class; }
+
+ @Override
+ public Class extends Annotation> annotationType() {
+ return GuiEditable.Size.class;
+ }
};
}
diff --git a/src/main/java/somehussar/gui/annotationHandling/GuiFieldHandler.java b/src/main/java/somehussar/gui/annotationHandling/GuiFieldHandler.java
index c6b7f3625..b54e70e52 100644
--- a/src/main/java/somehussar/gui/annotationHandling/GuiFieldHandler.java
+++ b/src/main/java/somehussar/gui/annotationHandling/GuiFieldHandler.java
@@ -26,7 +26,8 @@ public final class GuiFieldHandler {
}
- private GuiFieldHandler() {}
+ private GuiFieldHandler() {
+ }
public static ClassMetadata getMetadata(Class> type) {
return CACHE.computeIfAbsent(type, GuiFieldHandler::scanClass);
@@ -69,7 +70,8 @@ public final class GuiFieldHandler {
if (Modifier.isFinal(field.getModifiers())) return null;
GuiEditable.Size size = field.getAnnotation(GuiEditable.Size.class);
- if (size == null) size = GuiEditable.Size.DEFAULT_SIZE;;
+ if (size == null) size = GuiEditable.Size.DEFAULT_SIZE;
+ ;
field.setAccessible(true);
EditableField.Builder builder = new EditableField.Builder()
diff --git a/src/main/java/somehussar/gui/annotationHandling/constraints/NumericConstraint.java b/src/main/java/somehussar/gui/annotationHandling/constraints/NumericConstraint.java
index 3b9268a30..faccc6418 100644
--- a/src/main/java/somehussar/gui/annotationHandling/constraints/NumericConstraint.java
+++ b/src/main/java/somehussar/gui/annotationHandling/constraints/NumericConstraint.java
@@ -9,5 +9,6 @@ import java.lang.annotation.Target;
@Target(ElementType.FIELD)
public @interface NumericConstraint {
double min() default Double.NEGATIVE_INFINITY;
+
double max() default Double.POSITIVE_INFINITY;
}
diff --git a/src/main/java/somehussar/gui/annotationHandling/field/EditableField.java b/src/main/java/somehussar/gui/annotationHandling/field/EditableField.java
index 73172ef42..97e8500f1 100644
--- a/src/main/java/somehussar/gui/annotationHandling/field/EditableField.java
+++ b/src/main/java/somehussar/gui/annotationHandling/field/EditableField.java
@@ -46,7 +46,9 @@ public final class EditableField {
return this.constraints;
}
- public int getOrder() { return this.order; }
+ public int getOrder() {
+ return this.order;
+ }
EditableField(Builder b) {
this.name = b.name;
@@ -69,14 +71,45 @@ public final class EditableField {
private String group = null;
private GuiEditable.Size size;
- public Builder name(String v) { this.name = v; return this; }
- public Builder type(Class v) { this.type = v; return this; }
- public Builder getter(MethodHandle v) { this.getter = v; return this; }
- public Builder setter(MethodHandle v) { this.setter = v; return this; }
- public Builder constraints(FieldConstraints v) { this.constraints = v; return this; }
- public Builder order(int order) { this.order = order; return this; }
- public Builder group(String value) { this.group = value; return this; }
- public Builder size(GuiEditable.Size size) { this.size = size; return this; }
+ public Builder name(String v) {
+ this.name = v;
+ return this;
+ }
+
+ public Builder type(Class v) {
+ this.type = v;
+ return this;
+ }
+
+ public Builder getter(MethodHandle v) {
+ this.getter = v;
+ return this;
+ }
+
+ public Builder setter(MethodHandle v) {
+ this.setter = v;
+ return this;
+ }
+
+ public Builder constraints(FieldConstraints v) {
+ this.constraints = v;
+ return this;
+ }
+
+ public Builder order(int order) {
+ this.order = order;
+ return this;
+ }
+
+ public Builder group(String value) {
+ this.group = value;
+ return this;
+ }
+
+ public Builder size(GuiEditable.Size size) {
+ this.size = size;
+ return this;
+ }
public EditableField build() {
return new EditableField<>(this);