manticore sounds

This commit is contained in:
craisinlord committed 2026-09-13 09:26:18 -05:00
1 parent 37e941915d
commit 9116195853
20 files changed
+177 -56

No files matched your search

@@ -101,6 +101,10 @@ public final class AntarchySoundEvents {
public static Supplier<SoundEvent> MANTIS_HURT = (Supplier<SoundEvent>) UNBOUND; public static Supplier<SoundEvent> MANTIS_HURT = (Supplier<SoundEvent>) UNBOUND;
public static Supplier<SoundEvent> MANTIS_ATTACK = (Supplier<SoundEvent>) UNBOUND; public static Supplier<SoundEvent> MANTIS_ATTACK = (Supplier<SoundEvent>) UNBOUND;
public static Supplier<SoundEvent> MANTIS_FLY_LOOP = (Supplier<SoundEvent>) UNBOUND; public static Supplier<SoundEvent> MANTIS_FLY_LOOP = (Supplier<SoundEvent>) UNBOUND;
public static Supplier<SoundEvent> MANTICORE_IDLE = (Supplier<SoundEvent>) UNBOUND;
public static Supplier<SoundEvent> MANTICORE_WALK = (Supplier<SoundEvent>) UNBOUND;
public static Supplier<SoundEvent> MANTICORE_FLY = (Supplier<SoundEvent>) UNBOUND;
public static Supplier<SoundEvent> MANTICORE_BITE = (Supplier<SoundEvent>) UNBOUND;
public static Supplier<SoundEvent> GRAVITY_GUN_PICKUP = (Supplier<SoundEvent>) UNBOUND; public static Supplier<SoundEvent> GRAVITY_GUN_PICKUP = (Supplier<SoundEvent>) UNBOUND;
public static Supplier<SoundEvent> GRAVITY_GUN_DROP = (Supplier<SoundEvent>) UNBOUND; public static Supplier<SoundEvent> GRAVITY_GUN_DROP = (Supplier<SoundEvent>) UNBOUND;
public static Supplier<SoundEvent> GRAVITY_GUN_HOLD_LOOP = (Supplier<SoundEvent>) UNBOUND; public static Supplier<SoundEvent> GRAVITY_GUN_HOLD_LOOP = (Supplier<SoundEvent>) UNBOUND;
@@ -309,6 +313,10 @@ public final class AntarchySoundEvents {
Supplier<SoundEvent> mantisHurt, Supplier<SoundEvent> mantisHurt,
Supplier<SoundEvent> mantisAttack, Supplier<SoundEvent> mantisAttack,
Supplier<SoundEvent> mantisFlyLoop, Supplier<SoundEvent> mantisFlyLoop,
Supplier<SoundEvent> manticoreIdle,
Supplier<SoundEvent> manticoreWalk,
Supplier<SoundEvent> manticoreFly,
Supplier<SoundEvent> manticoreBite,
Supplier<SoundEvent> gravityGunPickup, Supplier<SoundEvent> gravityGunPickup,
Supplier<SoundEvent> gravityGunDrop, Supplier<SoundEvent> gravityGunDrop,
Supplier<SoundEvent> gravityGunHoldLoop, Supplier<SoundEvent> gravityGunHoldLoop,
@@ -513,6 +521,10 @@ public final class AntarchySoundEvents {
MANTIS_HURT = mantisHurt; MANTIS_HURT = mantisHurt;
MANTIS_ATTACK = mantisAttack; MANTIS_ATTACK = mantisAttack;
MANTIS_FLY_LOOP = mantisFlyLoop; MANTIS_FLY_LOOP = mantisFlyLoop;
MANTICORE_IDLE = manticoreIdle;
MANTICORE_WALK = manticoreWalk;
MANTICORE_FLY = manticoreFly;
MANTICORE_BITE = manticoreBite;
GRAVITY_GUN_PICKUP = gravityGunPickup; GRAVITY_GUN_PICKUP = gravityGunPickup;
GRAVITY_GUN_DROP = gravityGunDrop; GRAVITY_GUN_DROP = gravityGunDrop;
GRAVITY_GUN_HOLD_LOOP = gravityGunHoldLoop; GRAVITY_GUN_HOLD_LOOP = gravityGunHoldLoop;
@@ -16,6 +16,7 @@ import net.minecraft.resources.ResourceLocation;
import net.minecraft.util.Mth; import net.minecraft.util.Mth;
import net.minecraft.world.phys.Vec3; import net.minecraft.world.phys.Vec3;
import net.minecraft.client.renderer.texture.OverlayTexture; import net.minecraft.client.renderer.texture.OverlayTexture;
import com.mojang.math.Axis;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import software.bernie.geckolib.cache.object.BakedGeoModel; import software.bernie.geckolib.cache.object.BakedGeoModel;
import software.bernie.geckolib.renderer.GeoEntityRenderer; import software.bernie.geckolib.renderer.GeoEntityRenderer;
@@ -147,13 +148,6 @@ public class RoyalBossRenderer extends GeoEntityRenderer<RoyalBossEntity> {
return; return;
} }
Vec3 dir = axis.scale(1.0D / length); Vec3 dir = axis.scale(1.0D / length);
Vec3 side1 = dir.cross(new Vec3(0.0D, 1.0D, 0.0D));
if (side1.lengthSqr() < 1.0E-4D) {
side1 = dir.cross(new Vec3(1.0D, 0.0D, 0.0D));
}
side1 = side1.normalize();
Vec3 side2 = dir.cross(side1).normalize();
ResourceLocation outer = QUEEN_PURPLE_BEAM_OUTER; ResourceLocation outer = QUEEN_PURPLE_BEAM_OUTER;
ResourceLocation inner = QUEEN_PURPLE_BEAM_INNER; ResourceLocation inner = QUEEN_PURPLE_BEAM_INNER;
ResourceLocation[] endTextures = {QUEEN_PURPLE_BEAM_END_1, QUEEN_PURPLE_BEAM_END_2}; ResourceLocation[] endTextures = {QUEEN_PURPLE_BEAM_END_1, QUEEN_PURPLE_BEAM_END_2};
@@ -196,42 +190,50 @@ public class RoyalBossRenderer extends GeoEntityRenderer<RoyalBossEntity> {
float time = entity.tickCount + partialTick; float time = entity.tickCount + partialTick;
float outerV = -time * 0.25F; float outerV = -time * 0.25F;
var pose = poseStack.last().pose();
float innerV = -time * 0.25F * 0.5F; float innerV = -time * 0.25F * 0.5F;
// Tremorzilla renders the beam in local +Z space. Keeping the mesh in that
// space is important: the beam textures are authored for these exact face
// coordinates and are not interchangeable with a world-space billboard.
float yaw = (float) Math.atan2(dir.z, dir.x);
float pitch = (float) Math.acos(dir.y);
poseStack.pushPose();
poseStack.translate(start.x, start.y, start.z);
poseStack.mulPose(Axis.YP.rotation((float) (Math.PI * 0.5D - yaw)));
poseStack.mulPose(Axis.XP.rotation((float) (-Math.PI * 0.5D + pitch)));
poseStack.mulPose(Axis.ZP.rotationDegrees(45.0F));
org.joml.Matrix4f pose = poseStack.last().pose();
VertexConsumer innerBuffer = bufferSource.getBuffer(RoyalBeamRenderTypes.beam(inner)); VertexConsumer innerBuffer = bufferSource.getBuffer(RoyalBeamRenderTypes.beam(inner));
drawBeamTube(innerBuffer, pose, start, finish, side1, side2, BEAM_INNER_RADIUS, 4, innerV, 0.0F, 0.55F, 0.5F, 255); drawLocalBeam(innerBuffer, pose, length, BEAM_INNER_RADIUS, 4, innerV, 0.5F);
VertexConsumer outerBuffer = bufferSource.getBuffer(RoyalBeamRenderTypes.beam(outer)); VertexConsumer outerBuffer = bufferSource.getBuffer(RoyalBeamRenderTypes.beam(outer));
// Tremorzilla's outer shell stays fully visible all the way to the impact; drawLocalBeam(outerBuffer, pose, length, BEAM_OUTER_RADIUS, 8, outerV, 0.15F);
// fading the far ring makes the beam look like a translucent cone.
drawBeamTube(outerBuffer, pose, start, finish, side1, side2, BEAM_OUTER_RADIUS, 8, outerV, 0.0F, 0.55F, 0.15F, 255);
float impactSize = 1.5F + 0.35F * Mth.sin(time * 0.6F);
ResourceLocation endTexture = endTextures[(entity.tickCount / 2) % endTextures.length]; ResourceLocation endTexture = endTextures[(entity.tickCount / 2) % endTextures.length];
VertexConsumer endBuffer = bufferSource.getBuffer(RoyalBeamRenderTypes.beam(endTexture)); VertexConsumer endBuffer = bufferSource.getBuffer(RoyalBeamRenderTypes.beam(endTexture));
drawBeamImpact(endBuffer, pose, finish.subtract(dir.scale(1.5D)), dir, side1, side2, impactSize); drawBeamImpact(endBuffer, pose, (float) length - 1.5F, BEAM_INNER_RADIUS);
poseStack.popPose();
} }
private static void drawBeamTube(VertexConsumer vertices, org.joml.Matrix4f pose, Vec3 start, Vec3 end, private static void drawLocalBeam(VertexConsumer vertices, org.joml.Matrix4f pose, double length,
Vec3 side1, Vec3 side2, float radius, int sections, float scroll, float phase, float radius, int sections, float scroll, float uvLengthScale) {
float startScale, float uvLengthScale, int endAlpha) { float endV = scroll + (float) length * uvLengthScale;
Vec3[] startRing = new Vec3[sections]; float previousX = -radius;
Vec3[] endRing = new Vec3[sections]; float previousY = 0.0F;
for (int i = 0; i < sections; i++) { float previousU = 0.0F;
double angle = Math.PI * 2.0D * i / sections + phase; for (int i = 0; i <= sections; i++) {
Vec3 offset = side1.scale(Math.cos(angle) * radius).add(side2.scale(Math.sin(angle) * radius)); float angle = (float) (Math.PI + Math.PI * 2.0D * i / sections);
startRing[i] = start.add(offset.scale(startScale)); float currentX = Mth.cos(angle) * radius;
endRing[i] = end.add(offset); float currentY = Mth.sin(angle) * radius;
} Vec3 previousStart = new Vec3(previousX * 0.55D, previousY * 0.55D, 0.0D);
float endV = scroll + (float) start.distanceTo(end) * uvLengthScale; Vec3 previousEnd = new Vec3(previousX, previousY, length);
for (int i = 0; i < sections; i++) { Vec3 currentEnd = new Vec3(currentX, currentY, length);
int next = (i + 1) % sections; Vec3 currentStart = new Vec3(currentX * 0.55D, currentY * 0.55D, 0.0D);
// Alex's beam renderer intentionally uses section indices for U rather emitBeamQuad(vertices, pose, previousStart, previousEnd, currentEnd, currentStart,
// than normalizing them. This is part of the authored 16x16 texture previousU, scroll, i + 1.0F, endV, 255);
// pattern and keeps the strip continuous around the tube. previousX = currentX;
emitBeamQuad(vertices, pose, startRing[i], endRing[i], endRing[next], startRing[next], previousY = currentY;
i, scroll, next, endV, endAlpha); previousU = i + 1.0F;
} }
} }
@@ -244,31 +246,77 @@ public class RoyalBossRenderer extends GeoEntityRenderer<RoyalBossEntity> {
beamVertex(vertices, pose, d, minU, maxV, 255); beamVertex(vertices, pose, d, minU, maxV, 255);
} }
private static void drawBillboard(VertexConsumer vertices, org.joml.Matrix4f pose, Vec3 center, Vec3 left, Vec3 up) { private static void drawBeamImpact(VertexConsumer vertices, org.joml.Matrix4f pose, float z, float size) {
emitQuad(vertices, pose, PoseStack endpoint = new PoseStack();
center.add(left).add(up), center.subtract(left).add(up), endpoint.last().pose().set(pose);
center.subtract(left).subtract(up), center.add(left).subtract(up), endpoint.translate(0.0D, 0.0D, z);
0.0F, 0.0F, 1.0F, 1.0F); endpoint.mulPose(Axis.ZP.rotationDegrees(45.0F));
emitQuad(vertices, pose, endpoint.mulPose(Axis.XP.rotationDegrees(90.0F));
center.subtract(left).add(up), center.add(left).add(up), endpoint.scale(size / 16.0F, size / 16.0F, size / 16.0F);
center.add(left).subtract(up), center.subtract(left).subtract(up), endpoint.translate(0.0D, 24.0D, 0.0D);
0.0F, 0.0F, 1.0F, 1.0F);
org.joml.Matrix4f modelPose = endpoint.last().pose();
emitQuadUv(vertices, modelPose,
new Vec3(-11.0D, 0.0D, -11.0D), new Vec3(11.0D, 0.0D, -11.0D),
new Vec3(11.0D, 0.0D, 11.0D), new Vec3(-11.0D, 0.0D, 11.0D),
0.0F, 0.0F, 22.0F / 128.0F, 22.0F / 128.0F);
endpoint.pushPose();
endpoint.translate(0.0D, 0.0D, -11.0D);
endpoint.mulPose(Axis.XP.rotation(0.3927F));
drawModelPlane(vertices, endpoint.last().pose(), -12, -24, 0, 24, 24, 3, 38);
endpoint.popPose();
endpoint.pushPose();
endpoint.translate(0.0D, 0.0D, -11.0D);
endpoint.mulPose(Axis.XP.rotation(0.7854F));
drawModelPlane(vertices, endpoint.last().pose(), -15, -16, 0, 30, 16, 0, 22);
endpoint.popPose();
endpoint.pushPose();
endpoint.translate(0.0D, 0.0D, 11.0D);
endpoint.mulPose(Axis.XP.rotation(-0.3927F));
drawModelPlane(vertices, endpoint.last().pose(), -12, -24, 0, 24, 24, 3, 38);
endpoint.popPose();
endpoint.pushPose();
endpoint.translate(0.0D, 0.0D, 11.0D);
endpoint.mulPose(Axis.XP.rotation(-0.7854F));
drawModelPlane(vertices, endpoint.last().pose(), -15, -16, 0, 30, 16, 0, 22);
endpoint.popPose();
endpoint.pushPose();
endpoint.translate(11.0D, 0.0D, 0.0D);
endpoint.mulPose(Axis.ZP.rotation(0.3927F));
drawModelPlane(vertices, endpoint.last().pose(), 0, -24, -13, 24, 24, 3, 14);
endpoint.popPose();
endpoint.pushPose();
endpoint.translate(11.0D, 0.0D, 0.0D);
endpoint.mulPose(Axis.ZP.rotation(0.7854F));
drawModelPlane(vertices, endpoint.last().pose(), 0, -16, -15, 16, 30, 0, -8);
endpoint.popPose();
endpoint.pushPose();
endpoint.translate(-11.0D, 0.0D, 0.0D);
endpoint.mulPose(Axis.ZP.rotation(-0.3927F));
drawModelPlane(vertices, endpoint.last().pose(), 0, -24, -12, 24, 24, 3, 14);
endpoint.popPose();
endpoint.pushPose();
endpoint.translate(-11.0D, 0.0D, 0.0D);
endpoint.mulPose(Axis.ZP.rotation(-0.7854F));
drawModelPlane(vertices, endpoint.last().pose(), 0, -16, -15, 16, 30, 0, -8);
endpoint.popPose();
} }
private static void drawBeamImpact(VertexConsumer vertices, org.joml.Matrix4f pose, Vec3 center, Vec3 direction, private static void drawModelPlane(VertexConsumer vertices, org.joml.Matrix4f pose,
Vec3 side1, Vec3 side2, float size) { int x, int y, int z, int width, int height, int u, int v) {
// The end textures are atlas textures used by Tremorzilla's crossed flame emitQuadUv(vertices, pose,
// planes, not a texture meant to be repeated on eight radial billboards. new Vec3(x, y, z), new Vec3(x + width, y, z),
// Two crossed planes preserve the same readable four-point impact without new Vec3(x + width, y + height, z), new Vec3(x, y + height, z),
// stretching the atlas into the noisy starburst the old code produced. u / 128.0F, v / 128.0F, (u + width) / 128.0F, (v + height) / 128.0F);
drawBillboard(vertices, pose, center, side1.scale(size), side2.scale(size));
drawBillboard(vertices, pose, center.subtract(direction.scale(size * 0.35D)),
side1.scale(size * 0.82D), direction.scale(size * 0.82D));
} }
private static void emitQuad(VertexConsumer vertices, org.joml.Matrix4f pose, private static void emitQuadUv(VertexConsumer vertices, org.joml.Matrix4f pose,
Vec3 a, Vec3 b, Vec3 c, Vec3 d, Vec3 a, Vec3 b, Vec3 c, Vec3 d,
float minU, float minV, float maxU, float maxV) { float minU, float minV, float maxU, float maxV) {
vertex(vertices, pose, a, minU, minV); vertex(vertices, pose, a, minU, minV);
vertex(vertices, pose, b, maxU, minV); vertex(vertices, pose, b, maxU, minV);
vertex(vertices, pose, c, maxU, maxV); vertex(vertices, pose, c, maxU, maxV);
@@ -12,6 +12,7 @@ import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction; import net.minecraft.core.Direction;
import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.CompoundTag;
import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerLevel;
import net.minecraft.sounds.SoundEvent;
import net.minecraft.util.RandomSource; import net.minecraft.util.RandomSource;
import net.minecraft.world.Difficulty; import net.minecraft.world.Difficulty;
import net.minecraft.world.DifficultyInstance; import net.minecraft.world.DifficultyInstance;
@@ -222,6 +223,9 @@ public class ManticoreEntity extends Monster implements GeoEntity {
this.triggerAnim("controller", flying ? "fly_start" : "fly_land"); this.triggerAnim("controller", flying ? "fly_start" : "fly_land");
this.wasFlyingLastTick = flying; this.wasFlyingLastTick = flying;
} }
if (flying && this.tickCount % 16 == 0) {
this.playSound(AntarchySoundEvents.MANTICORE_FLY.get(), 0.65F, 0.9F + this.random.nextFloat() * 0.2F);
}
if (this.takeoffCooldown > 0) { if (this.takeoffCooldown > 0) {
this.takeoffCooldown--; this.takeoffCooldown--;
@@ -398,6 +402,7 @@ public class ManticoreEntity extends Monster implements GeoEntity {
void performSting(LivingEntity enemy) { void performSting(LivingEntity enemy) {
this.swing(InteractionHand.MAIN_HAND); this.swing(InteractionHand.MAIN_HAND);
this.playSound(AntarchySoundEvents.MANTICORE_BITE.get(), 0.9F, 0.95F + this.random.nextFloat() * 0.1F);
if (enemy.hurt(this.damageSources().mobAttack(this), (float) this.getAttributeValue(Attributes.ATTACK_DAMAGE))) { if (enemy.hurt(this.damageSources().mobAttack(this), (float) this.getAttributeValue(Attributes.ATTACK_DAMAGE))) {
enemy.addEffect(new MobEffectInstance(MobEffects.POISON, AntarchySettings.manticoreStingPoisonTicks(), 0), this); enemy.addEffect(new MobEffectInstance(MobEffects.POISON, AntarchySettings.manticoreStingPoisonTicks(), 0), this);
} }
@@ -413,11 +418,22 @@ public class ManticoreEntity extends Monster implements GeoEntity {
public boolean doHurtTarget(Entity target) { public boolean doHurtTarget(Entity target) {
boolean hurt = super.doHurtTarget(target); boolean hurt = super.doHurtTarget(target);
if (hurt) { if (hurt) {
this.playSound(AntarchySoundEvents.MANTICORE_BITE.get(), 0.9F, 0.95F + this.random.nextFloat() * 0.1F);
this.triggerAnim("controller", this.onGround() ? "bite" : "fly_bite"); this.triggerAnim("controller", this.onGround() ? "bite" : "fly_bite");
} }
return hurt; return hurt;
} }
@Override
protected SoundEvent getAmbientSound() {
return AntarchySoundEvents.MANTICORE_IDLE.get();
}
@Override
protected void playStepSound(BlockPos pos, BlockState state) {
this.playSound(AntarchySoundEvents.MANTICORE_WALK.get(), 0.55F, 0.9F + this.random.nextFloat() * 0.2F);
}
@Override @Override
public boolean causeFallDamage(float fallDistance, float multiplier, DamageSource source) { public boolean causeFallDamage(float fallDistance, float multiplier, DamageSource source) {
return false; return false;
@@ -312,6 +312,10 @@
"entity.antarchy.flytrap": "Flytrap", "entity.antarchy.flytrap": "Flytrap",
"entity.antarchy.toreterror": "Toreterror", "entity.antarchy.toreterror": "Toreterror",
"entity.antarchy.water_bomb": "Water Bomb", "entity.antarchy.water_bomb": "Water Bomb",
"subtitles.antarchy.manticore_idle": "Manticore growls",
"subtitles.antarchy.manticore_walk": "Manticore walks",
"subtitles.antarchy.manticore_fly": "Manticore flies",
"subtitles.antarchy.manticore_bite": "Manticore bites",
"subtitles.antarchy.mantis_ambient": "Mantis clicks", "subtitles.antarchy.mantis_ambient": "Mantis clicks",
"subtitles.antarchy.mantis_hurt": "Mantis screeches", "subtitles.antarchy.mantis_hurt": "Mantis screeches",
"subtitles.antarchy.mantis_attack": "Mantis snaps", "subtitles.antarchy.mantis_attack": "Mantis snaps",
@@ -1483,6 +1483,39 @@
} }
] ]
}, },
"manticore_idle": {
"subtitle": "subtitles.antarchy.manticore_idle",
"sounds": [
{ "name": "antarchy:mob/manticore/idle1" },
{ "name": "antarchy:mob/manticore/idle2" }
]
},
"manticore_walk": {
"subtitle": "subtitles.antarchy.manticore_walk",
"sounds": [
{ "name": "antarchy:mob/manticore/walk1" },
{ "name": "antarchy:mob/manticore/walk2" },
{ "name": "antarchy:mob/manticore/walk3" },
{ "name": "antarchy:mob/manticore/walk4" },
{ "name": "antarchy:mob/manticore/walk5" }
]
},
"manticore_fly": {
"subtitle": "subtitles.antarchy.manticore_fly",
"sounds": [
{ "name": "antarchy:mob/manticore/fly1" },
{ "name": "antarchy:mob/manticore/fly2" },
{ "name": "antarchy:mob/manticore/fly3" },
{ "name": "antarchy:mob/manticore/fly4" },
{ "name": "antarchy:mob/manticore/fly5" }
]
},
"manticore_bite": {
"subtitle": "subtitles.antarchy.manticore_bite",
"sounds": [
{ "name": "antarchy:mob/manticore/bite1" }
]
},
"mantis_ambient": { "mantis_ambient": {
"subtitle": "subtitles.antarchy.mantis_ambient", "subtitle": "subtitles.antarchy.mantis_ambient",
"sounds": [ "sounds": [
@@ -120,6 +120,10 @@ public class AntarchyNeoforge {
AntarchyNeoforgeSounds.MANTIS_HURT, AntarchyNeoforgeSounds.MANTIS_HURT,
AntarchyNeoforgeSounds.MANTIS_ATTACK, AntarchyNeoforgeSounds.MANTIS_ATTACK,
AntarchyNeoforgeSounds.MANTIS_FLY_LOOP, AntarchyNeoforgeSounds.MANTIS_FLY_LOOP,
AntarchyNeoforgeSounds.MANTICORE_IDLE,
AntarchyNeoforgeSounds.MANTICORE_WALK,
AntarchyNeoforgeSounds.MANTICORE_FLY,
AntarchyNeoforgeSounds.MANTICORE_BITE,
AntarchyNeoforgeSounds.GRAVITY_GUN_PICKUP, AntarchyNeoforgeSounds.GRAVITY_GUN_PICKUP,
AntarchyNeoforgeSounds.GRAVITY_GUN_DROP, AntarchyNeoforgeSounds.GRAVITY_GUN_DROP,
AntarchyNeoforgeSounds.GRAVITY_GUN_HOLD_LOOP, AntarchyNeoforgeSounds.GRAVITY_GUN_HOLD_LOOP,
@@ -112,6 +112,10 @@ public final class AntarchyNeoforgeSounds {
public static final DeferredHolder<SoundEvent, SoundEvent> MANTIS_HURT = registerSoundEvent("mantis_hurt"); public static final DeferredHolder<SoundEvent, SoundEvent> MANTIS_HURT = registerSoundEvent("mantis_hurt");
public static final DeferredHolder<SoundEvent, SoundEvent> MANTIS_ATTACK = registerSoundEvent("mantis_attack"); public static final DeferredHolder<SoundEvent, SoundEvent> MANTIS_ATTACK = registerSoundEvent("mantis_attack");
public static final DeferredHolder<SoundEvent, SoundEvent> MANTIS_FLY_LOOP = registerSoundEvent("mantis_fly_loop"); public static final DeferredHolder<SoundEvent, SoundEvent> MANTIS_FLY_LOOP = registerSoundEvent("mantis_fly_loop");
public static final DeferredHolder<SoundEvent, SoundEvent> MANTICORE_IDLE = registerSoundEvent("manticore_idle");
public static final DeferredHolder<SoundEvent, SoundEvent> MANTICORE_WALK = registerSoundEvent("manticore_walk");
public static final DeferredHolder<SoundEvent, SoundEvent> MANTICORE_FLY = registerSoundEvent("manticore_fly");
public static final DeferredHolder<SoundEvent, SoundEvent> MANTICORE_BITE = registerSoundEvent("manticore_bite");
public static final DeferredHolder<SoundEvent, SoundEvent> GRAVITY_GUN_PICKUP = registerSoundEvent("gravity_gun_pickup"); public static final DeferredHolder<SoundEvent, SoundEvent> GRAVITY_GUN_PICKUP = registerSoundEvent("gravity_gun_pickup");
public static final DeferredHolder<SoundEvent, SoundEvent> GRAVITY_GUN_DROP = registerSoundEvent("gravity_gun_drop"); public static final DeferredHolder<SoundEvent, SoundEvent> GRAVITY_GUN_DROP = registerSoundEvent("gravity_gun_drop");
public static final DeferredHolder<SoundEvent, SoundEvent> GRAVITY_GUN_HOLD_LOOP = registerSoundEvent("gravity_gun_hold_loop"); public static final DeferredHolder<SoundEvent, SoundEvent> GRAVITY_GUN_HOLD_LOOP = registerSoundEvent("gravity_gun_hold_loop");