mantis and nightmare overhaul

This commit is contained in:
craisinlord committed 2026-07-05 20:45:01 -05:00
1 parent 02c487f156
commit 33b18c6cd2
7 files changed
+2184 -3386

No files matched your search

@@ -76,15 +76,11 @@ public class NightmareEntity extends Monster implements GeoEntity {
private static final int ANIM_ATTACK = 3;
private static final int ANIM_FLY_ATTACK = 4;
private static final int ANIM_ROAR = 5;
private static final int ANIM_DEATH = 6;
private static final int ANIM_TAKEOFF = 7;
private static final int ANIM_FLY_DAMAGED = 8;
private static final int ATTACK_TOTAL_TICKS = 18;
private static final int ATTACK_DAMAGE_TICK = 9;
private static final int INTRO_ROAR_TICKS = 32;
private static final int COMBAT_ROAR_TICKS = 24;
private static final int DEATH_TICKS = 36;
private static final int ATTACK_TOTAL_TICKS = 20;
private static final int ATTACK_DAMAGE_TICK = 10;
private static final int INTRO_ROAR_TICKS = 30;
private static final int COMBAT_ROAR_TICKS = 30;
private static final int DEATH_TICKS = 30;
private static final int TARGET_RESET_TICKS = 60;
private static final int DREAD_TICKS = 160;
private static final int WEAKNESS_TICKS = 100;
@@ -101,15 +97,12 @@ public class NightmareEntity extends Monster implements GeoEntity {
private static final double FLIGHT_DISENGAGE_RANGE_SQR = 36.0D;
private static final double ROAR_RETRY_DISTANCE_SQR = 400.0D;
private static final RawAnimation IDLE_ANIM = RawAnimation.begin().thenLoop("Idle");
private static final RawAnimation IDLE_ANIM = RawAnimation.begin().thenLoop("idle");
private static final RawAnimation WALK_ANIM = RawAnimation.begin().thenLoop("walk");
private static final RawAnimation TAKEOFF_ANIM = RawAnimation.begin().thenPlay("animation").thenLoop("fly");
private static final RawAnimation FLY_ANIM = RawAnimation.begin().thenLoop("fly");
private static final RawAnimation ATTACK_ANIM = RawAnimation.begin().thenPlay("attack").thenLoop("Idle");
private static final RawAnimation FLY_ATTACK_ANIM = RawAnimation.begin().thenPlay("fly_attack").thenLoop("fly");
private static final RawAnimation ROAR_ANIM = RawAnimation.begin().thenPlay("roar").thenLoop("Idle");
private static final RawAnimation DEATH_ANIM = RawAnimation.begin().thenPlayAndHold("death");
private static final RawAnimation ATTACK_ANIM = RawAnimation.begin().thenPlay("attack").thenLoop("idle");
private static final RawAnimation FLY_ATTACK_ANIM = RawAnimation.begin().thenPlay("attack2").thenLoop("fly");
private static final RawAnimation ROAR_ANIM = RawAnimation.begin().thenPlay("roar").thenLoop("idle");
private final AnimatableInstanceCache geoCache = GeckoLibUtil.createInstanceCache(this);
private int attackCooldown;
@@ -179,18 +172,14 @@ public class NightmareEntity extends Monster implements GeoEntity {
int animState = this.getAnimationState();
state.getController().setAnimationSpeed(switch (animState) {
case ANIM_FLY -> 0.45D;
case ANIM_DEATH -> 0.6D;
default -> 1.0D;
});
return switch (animState) {
case ANIM_WALK -> state.setAndContinue(WALK_ANIM);
case ANIM_TAKEOFF -> state.setAndContinue(TAKEOFF_ANIM);
case ANIM_FLY -> state.setAndContinue(FLY_ANIM);
// case ANIM_FLY_DAMAGED -> state.setAndContinue(FLY_ANIM);
case ANIM_ATTACK -> state.setAndContinue(ATTACK_ANIM);
case ANIM_FLY_ATTACK -> state.setAndContinue(FLY_ATTACK_ANIM);
case ANIM_ROAR -> state.setAndContinue(ROAR_ANIM);
case ANIM_DEATH -> state.setAndContinue(DEATH_ANIM);
default -> state.setAndContinue(IDLE_ANIM);
};
}
@@ -257,7 +246,6 @@ public class NightmareEntity extends Monster implements GeoEntity {
}
if (this.isDeadOrDying()) {
this.setAnimationState(ANIM_DEATH);
this.updateFlightRotation();
return;
}
@@ -375,7 +363,6 @@ public class NightmareEntity extends Monster implements GeoEntity {
@Override
public void die(DamageSource damageSource) {
if (!this.level().isClientSide) {
this.setAnimationState(ANIM_DEATH);
this.attackAnimationTicks = 0;
this.attackCooldown = 0;
this.roarTicks = 0;
@@ -389,9 +376,6 @@ public class NightmareEntity extends Monster implements GeoEntity {
@Override
protected void tickDeath() {
this.deathTime++;
if (this.deathTime == 1) {
this.setAnimationState(ANIM_DEATH);
}
if (this.deathTime >= DEATH_TICKS) {
this.remove(RemovalReason.KILLED);
this.dropExperience(this);
@@ -649,7 +633,6 @@ public class NightmareEntity extends Monster implements GeoEntity {
private void updateAnimationState() {
if (this.isDeadOrDying()) {
this.setAnimationState(ANIM_DEATH);
this.groundMoveTicks = 0;
this.wingFlapCooldown = 0;
return;
@@ -669,7 +652,7 @@ public class NightmareEntity extends Monster implements GeoEntity {
if (this.flyingToTarget) {
this.groundMoveTicks = 0;
if (this.onGround() || this.airborneTicks <= 8) {
this.setAnimationState(ANIM_TAKEOFF);
this.setAnimationState(ANIM_FLY);
this.wingFlapCooldown = 0;
} else {
this.setAnimationState(ANIM_FLY);
File diff suppressed because it is too large. Load diff
@@ -6,7 +6,7 @@
"identifier": "geometry.mantis",
"texture_width": 256,
"texture_height": 256,
"visible_bounds_width": 7,
"visible_bounds_width": 8,
"visible_bounds_height": 5.5,
"visible_bounds_offset": [0, 2.25, 0]
},
@@ -36,7 +36,9 @@
"parent": "body",
"pivot": [0, 48, 0],
"cubes": [
{"origin": [-4, 48, -2], "size": [8, 8, 4], "uv": [26, 104]}
{"origin": [-4, 48, -2], "size": [8, 8, 4], "uv": [26, 104]},
{"origin": [-4, 35, -5], "size": [0, 22, 11], "pivot": [-4, 56, 0], "rotation": [-45, 0, 22.5], "uv": [0, 53]},
{"origin": [4, 35, -5], "size": [0, 22, 11], "pivot": [4, 56, 0], "rotation": [-45, 0, -22.5], "uv": [0, 53], "mirror": true}
]
},
{
@@ -44,6 +46,7 @@
"parent": "neck",
"pivot": [-2, 56, 0],
"cubes": [
{"origin": [-6.5, 59.5, -5], "size": [13, 0, 17], "uv": [75, 65]},
{"origin": [-4, 56, -5], "size": [8, 4, 8], "uv": [84, 92]}
]
},
@@ -196,6 +199,7 @@
"parent": "frontRightLeg",
"pivot": [-22, 31, 1],
"cubes": [
{"origin": [-28, 27.5, 1.25], "size": [6, 7, 0], "uv": [84, 33]},
{"origin": [-46, 30.5, -1], "size": [24, 1, 2], "uv": [80, 44]}
]
},
@@ -220,7 +224,8 @@
"parent": "frontLeftLeg",
"pivot": [22, 31, 1],
"cubes": [
{"origin": [22, 30.5, -1], "size": [24, 1, 2], "uv": [80, 44], "mirror": true}
{"origin": [22, 30.5, -1], "size": [24, 1, 2], "uv": [80, 44], "mirror": true},
{"origin": [22, 27.5, 1.25], "size": [6, 7, 0], "uv": [84, 33], "mirror": true}
]
},
{
@@ -244,7 +249,8 @@
"parent": "backRightLeg",
"pivot": [-22, 26, 1],
"cubes": [
{"origin": [-46, 25.5, -1], "size": [24, 1, 2], "uv": [80, 44]}
{"origin": [-46, 25.5, -1], "size": [24, 1, 2], "uv": [80, 44]},
{"origin": [-28, 22.5, 1.25], "size": [6, 7, 0], "uv": [84, 33]}
]
},
{
@@ -268,7 +274,8 @@
"parent": "backLeftLeg",
"pivot": [22, 26, 1],
"cubes": [
{"origin": [22, 25.5, -1], "size": [24, 1, 2], "uv": [80, 44], "mirror": true}
{"origin": [22, 25.5, -1], "size": [24, 1, 2], "uv": [80, 44], "mirror": true},
{"origin": [22, 22.5, 1.25], "size": [6, 7, 0], "uv": [84, 33], "mirror": true}
]
},
{
@@ -4,23 +4,28 @@
{
"description": {
"identifier": "geometry.unknown",
"texture_width": 128,
"texture_height": 512,
"visible_bounds_width": 15,
"texture_width": 256,
"texture_height": 256,
"visible_bounds_width": 17,
"visible_bounds_height": 4.5,
"visible_bounds_offset": [0, 1.75, 0]
},
"bones": [
{
"name": "Nightmare",
"pivot": [0, 19.5, 15]
"pivot": [0, 0, 0]
},
{
"name": "body",
"parent": "Nightmare",
"pivot": [0, 17.5, 15]
},
{
"name": "R_Tight",
"parent": "Nightmare",
"parent": "body",
"pivot": [-11, 21.25, 18.25],
"cubes": [
{"origin": [-15, 9, 10], "size": [8, 20, 13], "uv": [0, 179], "mirror": true}
{"origin": [-15, 9, 10], "size": [8, 20, 13], "uv": [0, 128], "mirror": true}
]
},
{
@@ -28,7 +33,7 @@
"parent": "R_Tight",
"pivot": [-11, 12, 19.5],
"cubes": [
{"origin": [-14, 2, 16.5], "size": [6, 10, 6], "uv": [58, 135], "mirror": true}
{"origin": [-14, 2, 16.5], "size": [6, 10, 6], "uv": [52, 77], "mirror": true}
]
},
{
@@ -36,17 +41,17 @@
"parent": "R_leg",
"pivot": [-11, 1, 19.5],
"cubes": [
{"origin": [-15, 0, 12.5], "size": [8, 2, 10], "uv": [52, 97], "mirror": true},
{"origin": [-8.5, 0, 5.5], "size": [0, 4, 7], "uv": [31, 80], "mirror": true},
{"origin": [-13.5, 0, 5.5], "size": [0, 4, 7], "uv": [31, 80], "mirror": true}
{"origin": [-15, 0, 12.5], "size": [8, 2, 10], "uv": [51, 0], "mirror": true},
{"origin": [-8.5, 0, 5.5], "size": [0, 4, 7], "uv": [0, -7], "mirror": true},
{"origin": [-13.5, 0, 5.5], "size": [0, 4, 7], "uv": [0, -7], "mirror": true}
]
},
{
"name": "L_Tight",
"parent": "Nightmare",
"parent": "body",
"pivot": [11, 21.25, 18.25],
"cubes": [
{"origin": [7, 9, 10], "size": [8, 20, 13], "uv": [0, 179]}
{"origin": [7, 9, 10], "size": [8, 20, 13], "uv": [0, 128]}
]
},
{
@@ -54,7 +59,7 @@
"parent": "L_Tight",
"pivot": [11, 12, 19.5],
"cubes": [
{"origin": [8, 2, 16.5], "size": [6, 10, 6], "uv": [58, 135]}
{"origin": [8, 2, 16.5], "size": [6, 10, 6], "uv": [52, 77]}
]
},
{
@@ -62,17 +67,17 @@
"parent": "L_leg",
"pivot": [11, 1, 19.5],
"cubes": [
{"origin": [7, 0, 12.5], "size": [8, 2, 10], "uv": [52, 97]},
{"origin": [8.5, 0, 5.5], "size": [0, 4, 7], "uv": [31, 80]},
{"origin": [13.5, 0, 5.5], "size": [0, 4, 7], "uv": [31, 80]}
{"origin": [7, 0, 12.5], "size": [8, 2, 10], "uv": [51, 0]},
{"origin": [8.5, 0, 5.5], "size": [0, 4, 7], "uv": [0, -7]},
{"origin": [13.5, 0, 5.5], "size": [0, 4, 7], "uv": [0, -7]}
]
},
{
"name": "torso",
"parent": "Nightmare",
"parent": "body",
"pivot": [0, 19.5, 15],
"cubes": [
{"origin": [-7, 6, -9], "size": [14, 27, 24], "uv": [5, 128]}
{"origin": [-7, 6, -9], "size": [14, 27, 24], "uv": [0, 77]}
]
},
{
@@ -80,7 +85,7 @@
"parent": "torso",
"pivot": [0, 32, 13.08333],
"cubes": [
{"origin": [-5, 24, 13], "size": [10, 13, 22], "uv": [42, 179]}
{"origin": [-5, 24, 13], "size": [10, 13, 22], "uv": [54, 106]}
]
},
{
@@ -88,7 +93,7 @@
"parent": "Tail",
"pivot": [0, 32.75, 35],
"cubes": [
{"origin": [-4, 27, 35], "size": [8, 10, 21], "uv": [70, 93]}
{"origin": [-4, 27, 35], "size": [8, 10, 21], "uv": [68, 28]}
]
},
{
@@ -96,8 +101,8 @@
"parent": "Tail2",
"pivot": [0, 33.5, 56],
"cubes": [
{"origin": [0, 30, 66], "size": [0, 14, 20], "uv": [82, 199]},
{"origin": [-3, 30, 56], "size": [6, 7, 21], "uv": [70, 19]}
{"origin": [0, 32, 66], "size": [0, 14, 20], "uv": [88, 40]},
{"origin": [-3, 30, 56], "size": [6, 7, 21], "uv": [70, 0]}
]
},
{
@@ -105,50 +110,36 @@
"parent": "torso",
"pivot": [0, 22.5, -8],
"cubes": [
{"origin": [-9, 13, -24], "size": [18, 19, 16], "uv": [0, 93]}
{"origin": [-9, 13, -24], "size": [18, 19, 16], "uv": [0, 42]}
]
},
{
"name": "head",
"parent": "neck",
"pivot": [0, 21.3125, -20.875],
"pivot": [0, 26.3125, -22.875],
"cubes": [
{"origin": [-8, 17, -37], "size": [16, 9, 16], "uv": [0, 0]},
{"origin": [-6.75, 14.75, -31], "size": [0, 3, 2], "uv": [11, 10]},
{"origin": [-6.75, 14.75, -34], "size": [0, 3, 2], "uv": [11, 10]},
{"origin": [-6.75, 14.75, -37], "size": [0, 3, 2], "uv": [11, 10]},
{"origin": [-4.75, 14.75, -38.5], "size": [0, 3, 2], "uv": [11, 10]},
{"origin": [-3.5, 14.75, -40.5], "size": [0, 3, 2], "uv": [11, 10]},
{"origin": [-1.5, 14.75, -40.5], "size": [0, 3, 2], "uv": [11, 10]},
{"origin": [1.5, 14.75, -40.5], "size": [0, 3, 2], "uv": [11, 10], "mirror": true},
{"origin": [3.5, 14.75, -40.5], "size": [0, 3, 2], "uv": [11, 10], "mirror": true},
{"origin": [6.75, 14.75, -31], "size": [0, 3, 2], "uv": [11, 10], "mirror": true},
{"origin": [6.75, 14.75, -34], "size": [0, 3, 2], "uv": [11, 10], "mirror": true},
{"origin": [6.75, 14.75, -37], "size": [0, 3, 2], "uv": [11, 10], "mirror": true},
{"origin": [4.75, 14.75, -38.5], "size": [0, 3, 2], "uv": [11, 10], "mirror": true},
{"origin": [8, 21, -34], "size": [9, 4, 13], "uv": [64, 0]},
{"origin": [15, 21, -37], "size": [5, 5, 16], "uv": [42, 41]},
{"origin": [-17, 21, -34], "size": [9, 4, 13], "uv": [64, 0], "mirror": true},
{"origin": [-20, 21, -37], "size": [5, 5, 16], "uv": [42, 41], "mirror": true},
{"origin": [0, 26, -37], "size": [0, 15, 12], "uv": [4, 66]},
{"origin": [-5, 17, -41], "size": [10, 9, 4], "uv": [76, 62]},
{"origin": [-1.5, 15, -45], "size": [3, 11, 4], "uv": [76, 75]}
{"origin": [-5, 13.075, -34], "size": [0, 9, 11], "uv": [42, 130]},
{"origin": [5, 13.075, -34], "size": [0, 9, 11], "uv": [42, 130], "mirror": true},
{"origin": [-8, 22, -42], "size": [16, 5, 19], "uv": [0, 0]},
{"origin": [0, 27, -42], "size": [0, 13, 9], "uv": [0, 75]},
{"origin": [0, 27, -52], "size": [0, 4, 9], "uv": [0, 70]},
{"origin": [-15, 24, -36], "size": [9, 4, 12], "uv": [0, 202]},
{"origin": [6, 24, -36], "size": [9, 4, 12], "uv": [0, 202], "mirror": true},
{"origin": [-6, 18, -54], "size": [12, 5, 12], "inflate": 0.1, "uv": [68, 179]},
{"origin": [-6, 21, -54], "size": [12, 6, 12], "uv": [0, 24]},
{"origin": [-3, 27, -55], "size": [6, 6, 0], "uv": [53, 51]}
]
},
{
"name": "jaw",
"parent": "head",
"pivot": [0, 17, -21],
"pivot": [0, 20, -23],
"cubes": [
{"origin": [-6, 13, -33], "size": [12, 4, 12], "uv": [0, 25]},
{"origin": [-5, 17, -33], "size": [0, 2, 12], "uv": [26, 30]},
{"origin": [-3.5, 17, -39], "size": [0, 2, 6], "uv": [32, 36]},
{"origin": [-3.5, 17, -38.5], "size": [7, 2, 0], "uv": [26, 44], "mirror": true},
{"origin": [3.5, 17, -39], "size": [0, 2, 6], "uv": [32, 36], "mirror": true},
{"origin": [5, 17, -33], "size": [0, 2, 12], "uv": [26, 30], "mirror": true},
{"origin": [-9, 13, -27], "size": [3, 7, 6], "inflate": 0.1, "uv": [48, 0]},
{"origin": [6, 13, -27], "size": [3, 7, 6], "inflate": 0.1, "uv": [48, 0], "mirror": true},
{"origin": [-5, 13, -39], "size": [10, 4, 6], "uv": [48, 25]}
{"origin": [-10, 11, -37], "size": [20, 9, 14], "inflate": 0.1, "uv": [0, 179]},
{"origin": [-5, 16.075, -53], "size": [10, 4, 16], "uv": [48, 141]},
{"origin": [-4, 20.075, -53], "size": [0, 4, 16], "uv": [30, 186]},
{"origin": [-4, 20.075, -52], "size": [8, 4, 0], "uv": [30, 206], "mirror": true},
{"origin": [4, 20.075, -53], "size": [0, 4, 16], "uv": [30, 186], "mirror": true}
]
},
{
@@ -156,8 +147,7 @@
"parent": "torso",
"pivot": [5.83333, 28, -1.66667],
"cubes": [
{"origin": [5, 23, -5], "size": [11, 9, 9], "uv": [82, 133]},
{"origin": [2, 28, 4], "size": [14, 0, 23], "uv": [77, 158]}
{"origin": [5, 23, -5], "size": [11, 9, 9], "uv": [76, 75]}
]
},
{
@@ -165,8 +155,11 @@
"parent": "L_Wing",
"pivot": [16, 28.25, -2.25],
"cubes": [
{"origin": [16, 26, -5], "size": [43, 4, 7], "uv": [0, 238]},
{"origin": [16, 28, 2], "size": [43, 0, 25], "uv": [-25, 265]}
{"origin": [16, 26, -5], "size": [43, 4, 7], "uv": [0, 161]},
{"origin": [55, 30, 2], "size": [4, 0, 50], "uv": [70, 128]},
{"origin": [55, 28.75, 2], "size": [4, 0, 50], "uv": [70, 128]},
{"origin": [-3, 29, 2], "size": [10, 0, 41], "uv": [87, 128]},
{"origin": [7, 29, 2], "size": [52, 0, 44], "uv": [80, 0]}
]
},
{
@@ -174,8 +167,8 @@
"parent": "L_Wing2",
"pivot": [59, 28.5, -3],
"cubes": [
{"origin": [59, 27, -5], "size": [43, 3, 4], "uv": [0, 255]},
{"origin": [59, 28, -1], "size": [49, 0, 28], "uv": [-28, 292]}
{"origin": [59, 27, -5], "size": [43, 3, 4], "uv": [0, 172]},
{"origin": [59, 29, -5], "size": [69, 0, 51], "uv": [66, 74]}
]
},
{
@@ -183,8 +176,7 @@
"parent": "torso",
"pivot": [-5.83333, 28, -1.66667],
"cubes": [
{"origin": [-16, 23, -5], "size": [11, 9, 9], "uv": [82, 133], "mirror": true},
{"origin": [-16, 28, 4], "size": [14, 0, 23], "uv": [77, 158], "mirror": true}
{"origin": [-16, 23, -5], "size": [11, 9, 9], "uv": [76, 75], "mirror": true}
]
},
{
@@ -192,8 +184,11 @@
"parent": "R_Wing",
"pivot": [-16, 28.25, -2.25],
"cubes": [
{"origin": [-59, 26, -5], "size": [43, 4, 7], "uv": [0, 238], "mirror": true},
{"origin": [-59, 28, 2], "size": [43, 0, 25], "uv": [-25, 265], "mirror": true}
{"origin": [-59, 26, -5], "size": [43, 4, 7], "uv": [0, 161], "mirror": true},
{"origin": [-59, 30, 2], "size": [4, 0, 50], "uv": [70, 128], "mirror": true},
{"origin": [-59, 28.75, 2], "size": [4, 0, 50], "uv": [70, 128], "mirror": true},
{"origin": [-59, 29, 2], "size": [52, 0, 44], "uv": [80, 0], "mirror": true},
{"origin": [-7, 29, 2], "size": [10, 0, 41], "uv": [87, 128], "mirror": true}
]
},
{
@@ -201,8 +196,8 @@
"parent": "R_Wing2",
"pivot": [-59, 28.5, -3],
"cubes": [
{"origin": [-102, 27, -5], "size": [43, 3, 4], "uv": [0, 255], "mirror": true},
{"origin": [-108, 28, -1], "size": [49, 0, 28], "uv": [-28, 292], "mirror": true}
{"origin": [-128, 29, -5], "size": [69, 0, 51], "uv": [66, 74], "mirror": true},
{"origin": [-102, 27, -5], "size": [43, 3, 4], "uv": [0, 172], "mirror": true}
]
}
]
Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 19 KiB