added wistful wanderings, nightmare reowork, lucid bolt, etc

This commit is contained in:
craisinlord committed 2026-08-05 22:44:41 -05:00
1 parent 68a823d5ff
commit b81dcc3bef
76 files changed
+1905 -319

No files matched your search

@@ -0,0 +1,23 @@
package com.craisinlord.antarchy.content.client.model;
import com.craisinlord.antarchy.Antarchy;
import com.craisinlord.antarchy.content.entity.lucid.LucidBoltEntity;
import net.minecraft.resources.ResourceLocation;
import software.bernie.geckolib.model.GeoModel;
public class LucidBoltModel extends GeoModel<LucidBoltEntity> {
@Override
public ResourceLocation getModelResource(LucidBoltEntity animatable) {
return new ResourceLocation(Antarchy.MODID, "geo/lucid_bolt.geo.json");
}
@Override
public ResourceLocation getTextureResource(LucidBoltEntity animatable) {
return new ResourceLocation(Antarchy.MODID, "textures/vfx/lucid_bolt.png");
}
@Override
public ResourceLocation getAnimationResource(LucidBoltEntity animatable) {
return new ResourceLocation(Antarchy.MODID, "animations/lucid_bolt.animation.json");
}
}
@@ -0,0 +1,75 @@
package com.craisinlord.antarchy.content.client.particle;
import net.minecraft.client.multiplayer.ClientLevel;
import net.minecraft.client.particle.Particle;
import net.minecraft.client.particle.ParticleProvider;
import net.minecraft.client.particle.ParticleRenderType;
import net.minecraft.client.particle.SpriteSet;
import net.minecraft.client.particle.TextureSheetParticle;
import net.minecraft.client.renderer.LightTexture;
import net.minecraft.core.particles.SimpleParticleType;
import net.minecraft.util.Mth;
public final class LucidBoltImpactParticle extends TextureSheetParticle {
private final SpriteSet sprites;
private LucidBoltImpactParticle(ClientLevel level, double x, double y, double z, double xd, double yd, double zd, SpriteSet sprites, float baseScale, int minLifetime, int randomLifetime) {
super(level, x, y, z, xd, yd, zd);
this.sprites = sprites;
this.friction = 0.88F;
this.gravity = 0.0F;
this.hasPhysics = false;
this.xd = xd;
this.yd = yd;
this.zd = zd;
this.quadSize = baseScale * (0.85F + this.random.nextFloat() * 0.3F);
this.lifetime = minLifetime + this.random.nextInt(randomLifetime);
this.setColor(0.94F, 0.95F, 1.0F);
this.setAlpha(0.95F);
this.pickSprite(sprites);
}
@Override
public void tick() {
super.tick();
this.pickSprite(this.sprites);
float life = (float) this.age / (float) this.lifetime;
this.setAlpha(Mth.clamp(1.0F - life, 0.0F, 1.0F) * 0.95F);
}
@Override
public int getLightColor(float partialTick) {
return LightTexture.FULL_BRIGHT;
}
@Override
public ParticleRenderType getRenderType() {
return ParticleRenderType.PARTICLE_SHEET_TRANSLUCENT;
}
public static final class SmallProvider implements ParticleProvider<SimpleParticleType> {
private final SpriteSet sprites;
public SmallProvider(SpriteSet sprites) {
this.sprites = sprites;
}
@Override
public Particle createParticle(SimpleParticleType type, ClientLevel level, double x, double y, double z, double xd, double yd, double zd) {
return new LucidBoltImpactParticle(level, x, y, z, xd, yd, zd, this.sprites, 0.1F, 8, 4);
}
}
public static final class LargeProvider implements ParticleProvider<SimpleParticleType> {
private final SpriteSet sprites;
public LargeProvider(SpriteSet sprites) {
this.sprites = sprites;
}
@Override
public Particle createParticle(SimpleParticleType type, ClientLevel level, double x, double y, double z, double xd, double yd, double zd) {
return new LucidBoltImpactParticle(level, x, y, z, xd, yd, zd, this.sprites, 0.22F, 10, 4);
}
}
}
@@ -0,0 +1,24 @@
package com.craisinlord.antarchy.content.client.renderer;
import com.craisinlord.antarchy.content.client.model.LucidBoltModel;
import com.craisinlord.antarchy.content.entity.lucid.LucidBoltEntity;
import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.math.Axis;
import net.minecraft.client.renderer.entity.EntityRendererProvider;
import net.minecraft.util.Mth;
import software.bernie.geckolib.renderer.GeoEntityRenderer;
public class LucidBoltRenderer extends GeoEntityRenderer<LucidBoltEntity> {
public LucidBoltRenderer(EntityRendererProvider.Context context) {
super(context, new LucidBoltModel());
this.shadowRadius = 0.0F;
}
@Override
protected void applyRotations(LucidBoltEntity animatable, PoseStack poseStack, float ageInTicks, float rotationYaw, float partialTick) {
float appliedYaw = Mth.rotLerp(partialTick, animatable.yRotO, animatable.getYRot());
float appliedPitch = Mth.lerp(partialTick, animatable.xRotO, animatable.getXRot());
super.applyRotations(animatable, poseStack, ageInTicks, appliedYaw, partialTick);
poseStack.mulPose(Axis.XP.rotationDegrees(-appliedPitch));
}
}
@@ -0,0 +1,5 @@
{
"textures": [
"antarchy:lucid_bolt_impact_large"
]
}
@@ -0,0 +1,5 @@
{
"textures": [
"antarchy:lucid_bolt_impact_small"
]
}
@@ -68,9 +68,9 @@ public final class AntarchySettings {
private static boolean krakensGraspInnateLoyalty = true; private static boolean krakensGraspInnateLoyalty = true;
private static int krakensGraspInnateLoyaltyLevel = 3; private static int krakensGraspInnateLoyaltyLevel = 3;
private static int krakensGraspTentacleDurationTicks = 100; private static int krakensGraspTentacleDurationTicks = 100;
private static double krakensGraspTentacleDamage = 3.0D;
private static double krakensGraspTentacleRadius = 3.0D; private static double krakensGraspTentacleRadius = 3.0D;
private static int krakensGraspTentacleDamageIntervalTicks = 20; private static int krakensGraspTentacleSlownessAmplifier = 8;
private static int krakensGraspTentacleSlownessRefreshTicks = 5;
private static double scorpionWhipBaseDamage = 10.0D; private static double scorpionWhipBaseDamage = 10.0D;
private static double scorpionWhipReachBonus = 5.0D; private static double scorpionWhipReachBonus = 5.0D;
private static int scorpionWhipPoisonDurationTicks = 100; private static int scorpionWhipPoisonDurationTicks = 100;
@@ -87,6 +87,8 @@ public final class AntarchySettings {
private static double bigBerthaBasiliskCooldownSeconds = 7.0D; private static double bigBerthaBasiliskCooldownSeconds = 7.0D;
private static double bigBerthaLucidInvertedDurationSeconds = 3.0D; private static double bigBerthaLucidInvertedDurationSeconds = 3.0D;
private static double bigBerthaLucidInvertedDamageBonusPercent = 25.0D; private static double bigBerthaLucidInvertedDamageBonusPercent = 25.0D;
private static double bigBerthaNoneModeDamageBonusPercent = 15.0D;
private static double bigBerthaNightmareDamageBonusPercent = 30.0D;
private static double potentNyxiteInvertedDurationSeconds = 60.0D; private static double potentNyxiteInvertedDurationSeconds = 60.0D;
private static int ultimateToolEnchantability = 25; private static int ultimateToolEnchantability = 25;
private static int ultimateArmorEnchantability = 10; private static int ultimateArmorEnchantability = 10;
@@ -288,6 +290,8 @@ public final class AntarchySettings {
private static int emperorScorpionMaxSummonedScorpions = 4; private static int emperorScorpionMaxSummonedScorpions = 4;
private static int emperorScorpionMaxNearbyScorpions = 3; private static int emperorScorpionMaxNearbyScorpions = 3;
private static int emperorScorpionHardenCooldownTicks = 2400; private static int emperorScorpionHardenCooldownTicks = 2400;
private static double emperorScorpionDamageRange = 80.0D;
private static int emperorScorpionMinDespawnTicks = 6000;
private static double scorpionHealth = 30.0D; private static double scorpionHealth = 30.0D;
private static double scorpionAttackDamage = 5.0D; private static double scorpionAttackDamage = 5.0D;
private static double scorpionMovementSpeed = 0.29D; private static double scorpionMovementSpeed = 0.29D;
@@ -317,6 +321,12 @@ public final class AntarchySettings {
private static double krakenArmor = 8.0D; private static double krakenArmor = 8.0D;
private static double krakenProjectileDamageTakenMultiplier = 0.5D; private static double krakenProjectileDamageTakenMultiplier = 0.5D;
private static double krakenBossBarRange = 40.0D; private static double krakenBossBarRange = 40.0D;
private static double krakenFollowRange = 96.0D;
private static double krakenDamageRange = 96.0D;
private static double herculesBeetleDamageRange = 48.0D;
private static double toreterrorDamageRange = 48.0D;
private static double brutalflyDamageRange = 48.0D;
private static double alphaMantisDamageRange = 48.0D;
private static float krakenLightningDamagePhaseOne = 6.0F; private static float krakenLightningDamagePhaseOne = 6.0F;
private static double lucidHealth = 30.0D; private static double lucidHealth = 30.0D;
private static double lucidAttackDamage = 4.0D; private static double lucidAttackDamage = 4.0D;
@@ -662,6 +672,14 @@ public final class AntarchySettings {
return bigBerthaLucidInvertedDamageBonusPercent; return bigBerthaLucidInvertedDamageBonusPercent;
} }
public static double bigBerthaNoneModeDamageBonusPercent() {
return bigBerthaNoneModeDamageBonusPercent;
}
public static double bigBerthaNightmareDamageBonusPercent() {
return bigBerthaNightmareDamageBonusPercent;
}
public static double potentNyxiteInvertedDurationSeconds() { public static double potentNyxiteInvertedDurationSeconds() {
return potentNyxiteInvertedDurationSeconds; return potentNyxiteInvertedDurationSeconds;
} }
@@ -756,9 +774,9 @@ public final class AntarchySettings {
public static boolean krakensGraspInnateLoyalty() { return krakensGraspInnateLoyalty; } public static boolean krakensGraspInnateLoyalty() { return krakensGraspInnateLoyalty; }
public static int krakensGraspInnateLoyaltyLevel() { return krakensGraspInnateLoyaltyLevel; } public static int krakensGraspInnateLoyaltyLevel() { return krakensGraspInnateLoyaltyLevel; }
public static int krakensGraspTentacleDurationTicks() { return krakensGraspTentacleDurationTicks; } public static int krakensGraspTentacleDurationTicks() { return krakensGraspTentacleDurationTicks; }
public static double krakensGraspTentacleDamage() { return krakensGraspTentacleDamage; }
public static double krakensGraspTentacleRadius() { return krakensGraspTentacleRadius; } public static double krakensGraspTentacleRadius() { return krakensGraspTentacleRadius; }
public static int krakensGraspTentacleDamageIntervalTicks() { return krakensGraspTentacleDamageIntervalTicks; } public static int krakensGraspTentacleSlownessAmplifier() { return krakensGraspTentacleSlownessAmplifier; }
public static int krakensGraspTentacleSlownessRefreshTicks() { return krakensGraspTentacleSlownessRefreshTicks; }
public static double octopusBombHealth() { public static double octopusBombHealth() {
return octopusBombHealth; return octopusBombHealth;
@@ -1255,6 +1273,14 @@ public final class AntarchySettings {
bigBerthaLucidInvertedDamageBonusPercent = value; bigBerthaLucidInvertedDamageBonusPercent = value;
} }
public static void setBigBerthaNoneModeDamageBonusPercent(double value) {
bigBerthaNoneModeDamageBonusPercent = value;
}
public static void setBigBerthaNightmareDamageBonusPercent(double value) {
bigBerthaNightmareDamageBonusPercent = value;
}
public static void setPotentNyxiteInvertedDurationSeconds(double value) { public static void setPotentNyxiteInvertedDurationSeconds(double value) {
potentNyxiteInvertedDurationSeconds = value; potentNyxiteInvertedDurationSeconds = value;
} }
@@ -1350,9 +1376,9 @@ public final class AntarchySettings {
public static void setKrakensGraspInnateLoyalty(boolean value) { krakensGraspInnateLoyalty = value; } public static void setKrakensGraspInnateLoyalty(boolean value) { krakensGraspInnateLoyalty = value; }
public static void setKrakensGraspInnateLoyaltyLevel(int value) { krakensGraspInnateLoyaltyLevel = value; } public static void setKrakensGraspInnateLoyaltyLevel(int value) { krakensGraspInnateLoyaltyLevel = value; }
public static void setKrakensGraspTentacleDurationTicks(int value) { krakensGraspTentacleDurationTicks = value; } public static void setKrakensGraspTentacleDurationTicks(int value) { krakensGraspTentacleDurationTicks = value; }
public static void setKrakensGraspTentacleDamage(double value) { krakensGraspTentacleDamage = value; }
public static void setKrakensGraspTentacleRadius(double value) { krakensGraspTentacleRadius = value; } public static void setKrakensGraspTentacleRadius(double value) { krakensGraspTentacleRadius = value; }
public static void setKrakensGraspTentacleDamageIntervalTicks(int value) { krakensGraspTentacleDamageIntervalTicks = value; } public static void setKrakensGraspTentacleSlownessAmplifier(int value) { krakensGraspTentacleSlownessAmplifier = value; }
public static void setKrakensGraspTentacleSlownessRefreshTicks(int value) { krakensGraspTentacleSlownessRefreshTicks = value; }
public static void setBrutalflyHealth(double value) { public static void setBrutalflyHealth(double value) {
brutalflyHealth = value; brutalflyHealth = value;
@@ -2057,6 +2083,12 @@ public final class AntarchySettings {
public static int emperorScorpionHardenCooldownTicks() { return emperorScorpionHardenCooldownTicks; } public static int emperorScorpionHardenCooldownTicks() { return emperorScorpionHardenCooldownTicks; }
public static void setEmperorScorpionHardenCooldownTicks(int value) { emperorScorpionHardenCooldownTicks = value; } public static void setEmperorScorpionHardenCooldownTicks(int value) { emperorScorpionHardenCooldownTicks = value; }
public static double emperorScorpionDamageRange() { return emperorScorpionDamageRange; }
public static void setEmperorScorpionDamageRange(double value) { emperorScorpionDamageRange = value; }
public static int emperorScorpionMinDespawnTicks() { return emperorScorpionMinDespawnTicks; }
public static void setEmperorScorpionMinDespawnTicks(int value) { emperorScorpionMinDespawnTicks = value; }
public static double scorpionHealth() { return scorpionHealth; } public static double scorpionHealth() { return scorpionHealth; }
public static void setScorpionHealth(double value) { scorpionHealth = value; } public static void setScorpionHealth(double value) { scorpionHealth = value; }
@@ -2142,6 +2174,24 @@ public final class AntarchySettings {
public static double krakenBossBarRange() { return krakenBossBarRange; } public static double krakenBossBarRange() { return krakenBossBarRange; }
public static void setKrakenBossBarRange(double value) { krakenBossBarRange = value; } public static void setKrakenBossBarRange(double value) { krakenBossBarRange = value; }
public static double krakenFollowRange() { return krakenFollowRange; }
public static void setKrakenFollowRange(double value) { krakenFollowRange = value; }
public static double krakenDamageRange() { return krakenDamageRange; }
public static void setKrakenDamageRange(double value) { krakenDamageRange = value; }
public static double herculesBeetleDamageRange() { return herculesBeetleDamageRange; }
public static void setHerculesBeetleDamageRange(double value) { herculesBeetleDamageRange = value; }
public static double toreterrorDamageRange() { return toreterrorDamageRange; }
public static void setToreterrorDamageRange(double value) { toreterrorDamageRange = value; }
public static double brutalflyDamageRange() { return brutalflyDamageRange; }
public static void setBrutalflyDamageRange(double value) { brutalflyDamageRange = value; }
public static double alphaMantisDamageRange() { return alphaMantisDamageRange; }
public static void setAlphaMantisDamageRange(double value) { alphaMantisDamageRange = value; }
public static float krakenLightningDamagePhaseOne() { return krakenLightningDamagePhaseOne; } public static float krakenLightningDamagePhaseOne() { return krakenLightningDamagePhaseOne; }
public static void setKrakenLightningDamagePhaseOne(float value) { krakenLightningDamagePhaseOne = value; } public static void setKrakenLightningDamagePhaseOne(float value) { krakenLightningDamagePhaseOne = value; }
@@ -335,6 +335,10 @@ public final class AntarchyObjects {
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public static Supplier<SimpleParticleType> LOTUS_POLLEN = (Supplier<SimpleParticleType>) UNBOUND; public static Supplier<SimpleParticleType> LOTUS_POLLEN = (Supplier<SimpleParticleType>) UNBOUND;
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public static Supplier<SimpleParticleType> LUCID_BOLT_IMPACT_SMALL = (Supplier<SimpleParticleType>) UNBOUND;
@SuppressWarnings("unchecked")
public static Supplier<SimpleParticleType> LUCID_BOLT_IMPACT_LARGE = (Supplier<SimpleParticleType>) UNBOUND;
@SuppressWarnings("unchecked")
public static Supplier<net.minecraft.core.component.DataComponentType<net.minecraft.util.Unit>> AMERICAN_COMPONENT = public static Supplier<net.minecraft.core.component.DataComponentType<net.minecraft.util.Unit>> AMERICAN_COMPONENT =
(Supplier<net.minecraft.core.component.DataComponentType<net.minecraft.util.Unit>>) UNBOUND; (Supplier<net.minecraft.core.component.DataComponentType<net.minecraft.util.Unit>>) UNBOUND;
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
@@ -697,6 +701,14 @@ public final class AntarchyObjects {
LOTUS_POLLEN = supplier; LOTUS_POLLEN = supplier;
} }
public static void setLucidBoltImpactSmall(Supplier<SimpleParticleType> supplier) {
LUCID_BOLT_IMPACT_SMALL = supplier;
}
public static void setLucidBoltImpactLarge(Supplier<SimpleParticleType> supplier) {
LUCID_BOLT_IMPACT_LARGE = supplier;
}
public static void setPeachLeavesParticle(Supplier<SimpleParticleType> supplier) { public static void setPeachLeavesParticle(Supplier<SimpleParticleType> supplier) {
PEACH_LEAVES_PARTICLE = supplier; PEACH_LEAVES_PARTICLE = supplier;
} }
@@ -0,0 +1,23 @@
package com.craisinlord.antarchy.content.client.model;
import com.craisinlord.antarchy.Antarchy;
import com.craisinlord.antarchy.content.entity.lucid.LucidBoltEntity;
import net.minecraft.resources.ResourceLocation;
import software.bernie.geckolib.model.GeoModel;
public class LucidBoltModel extends GeoModel<LucidBoltEntity> {
@Override
public ResourceLocation getModelResource(LucidBoltEntity animatable) {
return ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "geo/lucid_bolt.geo.json");
}
@Override
public ResourceLocation getTextureResource(LucidBoltEntity animatable) {
return ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "textures/vfx/lucid_bolt.png");
}
@Override
public ResourceLocation getAnimationResource(LucidBoltEntity animatable) {
return ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "animations/lucid_bolt.animation.json");
}
}
@@ -1,144 +1,24 @@
package com.craisinlord.antarchy.content.client.renderer; package com.craisinlord.antarchy.content.client.renderer;
import com.craisinlord.antarchy.content.client.model.LucidBoltModel;
import com.craisinlord.antarchy.content.entity.lucid.LucidBoltEntity; import com.craisinlord.antarchy.content.entity.lucid.LucidBoltEntity;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.VertexConsumer; import com.mojang.math.Axis;
import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.RenderType;
import net.minecraft.client.renderer.entity.EntityRenderer;
import net.minecraft.client.renderer.entity.EntityRendererProvider; import net.minecraft.client.renderer.entity.EntityRendererProvider;
import net.minecraft.client.renderer.texture.OverlayTexture;
import net.minecraft.core.BlockPos;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.util.Mth; import net.minecraft.util.Mth;
import net.minecraft.world.phys.Vec3; import software.bernie.geckolib.renderer.GeoEntityRenderer;
import org.joml.Matrix4f;
public class LucidBoltRenderer extends EntityRenderer<LucidBoltEntity> {
private static final ResourceLocation BEAM_TEXTURE = ResourceLocation.withDefaultNamespace("textures/entity/beacon_beam.png");
private static final Vec3 WORLD_UP = new Vec3(0.0D, 1.0D, 0.0D);
private static final Vec3 WORLD_RIGHT = new Vec3(1.0D, 0.0D, 0.0D);
private static final Vec3 WORLD_FORWARD = new Vec3(0.0D, 0.0D, 1.0D);
public class LucidBoltRenderer extends GeoEntityRenderer<LucidBoltEntity> {
public LucidBoltRenderer(EntityRendererProvider.Context context) { public LucidBoltRenderer(EntityRendererProvider.Context context) {
super(context); super(context, new LucidBoltModel());
this.shadowRadius = 0.0F;
} }
@Override @Override
protected int getBlockLightLevel(LucidBoltEntity entity, BlockPos pos) { protected void applyRotations(LucidBoltEntity animatable, PoseStack poseStack, float ageInTicks, float rotationYaw, float partialTick, float nativeScale) {
return 15; float appliedYaw = Mth.rotLerp(partialTick, animatable.yRotO, animatable.getYRot());
} float appliedPitch = Mth.lerp(partialTick, animatable.xRotO, animatable.getXRot());
poseStack.mulPose(Axis.YP.rotationDegrees(180.0F - appliedYaw));
@Override poseStack.mulPose(Axis.XP.rotationDegrees(-appliedPitch));
public void render(LucidBoltEntity entity, float entityYaw, float partialTick, PoseStack poseStack, MultiBufferSource buffer, int packedLight) {
poseStack.pushPose();
Vec3 forward = getRenderDirection(entity, partialTick);
Vec3 right = createPerpendicular(forward, WORLD_UP);
Vec3 up = forward.cross(right);
if (up.lengthSqr() < 1.0E-6D) {
up = WORLD_UP;
} else {
up = up.normalize();
}
float pulse = 0.85F + 0.15F * Mth.sin((entity.tickCount + partialTick) * 0.55F);
float alpha = 0.92F * pulse;
Vec3 delta = entity.getDeltaMovement();
float length = (float) Mth.clamp(delta.length() * 2.3D + 0.95D, 0.9D, 2.5D);
VertexConsumer vertexConsumer = buffer.getBuffer(RenderType.entityTranslucent(BEAM_TEXTURE));
PoseStack.Pose pose = poseStack.last();
renderBeamRibbon(pose, vertexConsumer, packedLight, 1.0F, 0.18F, 0.08F, alpha, 0.13F, forward, right, length);
renderBeamRibbon(pose, vertexConsumer, packedLight, 1.0F, 0.48F, 0.18F, alpha * 0.58F, 0.24F, forward, up, length);
poseStack.popPose();
super.render(entity, entityYaw, partialTick, poseStack, buffer, packedLight);
}
private static Vec3 getRenderDirection(LucidBoltEntity entity, float partialTick) {
Vec3 delta = entity.getDeltaMovement();
if (delta.lengthSqr() > 1.0E-6D) {
return delta.normalize();
}
float yaw = Mth.rotLerp(partialTick, entity.yRotO, entity.getYRot()) * ((float) Math.PI / 180.0F);
float pitch = Mth.lerp(partialTick, entity.xRotO, entity.getXRot()) * ((float) Math.PI / 180.0F);
float cosPitch = Mth.cos(pitch);
Vec3 direction = new Vec3(
-Mth.sin(yaw) * cosPitch,
-Mth.sin(pitch),
Mth.cos(yaw) * cosPitch
);
return direction.lengthSqr() > 1.0E-6D ? direction.normalize() : WORLD_FORWARD;
}
private static Vec3 createPerpendicular(Vec3 forward, Vec3 preferredAxis) {
Vec3 perpendicular = forward.cross(preferredAxis);
if (perpendicular.lengthSqr() < 1.0E-6D) {
perpendicular = forward.cross(WORLD_RIGHT);
}
if (perpendicular.lengthSqr() < 1.0E-6D) {
perpendicular = WORLD_UP;
}
return perpendicular.normalize();
}
private static void renderBeamRibbon(
PoseStack.Pose pose,
VertexConsumer vertexConsumer,
int packedLight,
float red,
float green,
float blue,
float alpha,
float halfWidth,
Vec3 forward,
Vec3 sideways,
float length
) {
Matrix4f matrix4f = pose.pose();
Vec3 offset = sideways.scale(halfWidth);
Vec3 end = forward.scale(length);
Vec3 normal = sideways.cross(forward);
if (normal.lengthSqr() < 1.0E-6D) {
normal = WORLD_UP;
} else {
normal = normal.normalize();
}
emitVertex(vertexConsumer, pose, matrix4f, offset.scale(-1.0D), red, green, blue, alpha, 0.0F, 0.0F, normal, packedLight);
emitVertex(vertexConsumer, pose, matrix4f, offset, red, green, blue, alpha, 1.0F, 0.0F, normal, packedLight);
emitVertex(vertexConsumer, pose, matrix4f, end.add(offset), red, green, blue, alpha, 1.0F, 1.0F, normal, packedLight);
emitVertex(vertexConsumer, pose, matrix4f, end.add(offset.scale(-1.0D)), red, green, blue, alpha, 0.0F, 1.0F, normal, packedLight);
}
private static void emitVertex(
VertexConsumer vertexConsumer,
PoseStack.Pose pose,
Matrix4f matrix4f,
Vec3 position,
float red,
float green,
float blue,
float alpha,
float u,
float v,
Vec3 normal,
int packedLight
) {
vertexConsumer
.addVertex(matrix4f, (float) position.x, (float) position.y, (float) position.z)
.setColor(red, green, blue, alpha)
.setUv(u, v)
.setOverlay(OverlayTexture.NO_OVERLAY)
.setLight(packedLight)
.setNormal(pose, (float) normal.x, (float) normal.y, (float) normal.z);
}
@Override
public ResourceLocation getTextureLocation(LucidBoltEntity entity) {
return BEAM_TEXTURE;
} }
} }
@@ -1,10 +1,37 @@
package com.craisinlord.antarchy.content.effect; package com.craisinlord.antarchy.content.effect;
import com.craisinlord.antarchy.config.AntarchySettings;
import com.craisinlord.antarchy.content.entity.nightmare.NightmareBiteEntity;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.world.effect.MobEffect; import net.minecraft.world.effect.MobEffect;
import net.minecraft.world.effect.MobEffectCategory; import net.minecraft.world.effect.MobEffectCategory;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.phys.Vec3;
public final class DreadMobEffect extends MobEffect { public final class DreadMobEffect extends MobEffect {
public DreadMobEffect() { public DreadMobEffect() {
super(MobEffectCategory.HARMFUL, 0x1A0A1A); super(MobEffectCategory.HARMFUL, 0x1A0A1A);
} }
@Override
public boolean applyEffectTick(LivingEntity entity, int amplifier) {
if (AntarchySettings.dreadHallucinationMobsEnabled()
&& entity instanceof Player player
&& entity.level() instanceof ServerLevel serverLevel) {
int minTicks = Math.max(1, (int) Math.round(AntarchySettings.dreadHallucinationMobMinInterval() * 20.0D));
int maxTicks = Math.max(minTicks, (int) Math.round(AntarchySettings.dreadHallucinationMobMaxInterval() * 20.0D));
int averageTicks = (minTicks + maxTicks) / 2;
if (player.getRandom().nextInt(averageTicks) == 0) {
Vec3 spawnPos = player.position().add(0.0D, player.getBbHeight() * 0.6D, 0.0D);
NightmareBiteEntity.spawnAt(serverLevel, spawnPos, player.getYRot(), false);
}
}
return true;
}
@Override
public boolean shouldApplyEffectTickThisTick(int duration, int amplifier) {
return true;
}
} }
@@ -3,6 +3,7 @@ package com.craisinlord.antarchy.content.entity;
import com.craisinlord.antarchy.config.AntarchySettings; import com.craisinlord.antarchy.config.AntarchySettings;
import com.craisinlord.antarchy.content.AntarchyObjects; import com.craisinlord.antarchy.content.AntarchyObjects;
import com.craisinlord.antarchy.content.AntarchyTags; import com.craisinlord.antarchy.content.AntarchyTags;
import com.craisinlord.antarchy.content.boss.BossCombatUtil;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction; import net.minecraft.core.Direction;
import net.minecraft.network.chat.Component; import net.minecraft.network.chat.Component;
@@ -12,6 +13,7 @@ import net.minecraft.server.level.ServerPlayer;
import net.minecraft.util.RandomSource; import net.minecraft.util.RandomSource;
import net.minecraft.world.BossEvent; import net.minecraft.world.BossEvent;
import net.minecraft.world.Difficulty; import net.minecraft.world.Difficulty;
import net.minecraft.world.damagesource.DamageSource;
import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.LivingEntity;
@@ -51,6 +53,19 @@ public class AlphaMantisEntity extends MantisEntity {
.add(Attributes.KNOCKBACK_RESISTANCE, 0.8D); .add(Attributes.KNOCKBACK_RESISTANCE, 0.8D);
} }
@Override
public boolean isInvulnerableTo(DamageSource source) {
if (super.isInvulnerableTo(source)) {
return true;
}
return BossCombatUtil.isOutOfDamageRange(this, AntarchySettings.alphaMantisDamageRange());
}
@Override
public boolean hurt(DamageSource source, float amount) {
return super.hurt(source, BossCombatUtil.capSingleHitAtHalfHealth(this, amount));
}
public static boolean checkAlphaMantisSpawnRules(EntityType<AlphaMantisEntity> entityType, ServerLevelAccessor level, MobSpawnType spawnReason, BlockPos pos, RandomSource random) { public static boolean checkAlphaMantisSpawnRules(EntityType<AlphaMantisEntity> entityType, ServerLevelAccessor level, MobSpawnType spawnReason, BlockPos pos, RandomSource random) {
if (spawnReason == MobSpawnType.SPAWN_EGG if (spawnReason == MobSpawnType.SPAWN_EGG
|| spawnReason == MobSpawnType.SPAWNER || spawnReason == MobSpawnType.SPAWNER
@@ -4,6 +4,7 @@ import com.craisinlord.antarchy.Antarchy;
import com.craisinlord.antarchy.config.AntarchySettings; import com.craisinlord.antarchy.config.AntarchySettings;
import com.craisinlord.antarchy.content.AntarchySoundEvents; import com.craisinlord.antarchy.content.AntarchySoundEvents;
import com.craisinlord.antarchy.content.AntarchyObjects; import com.craisinlord.antarchy.content.AntarchyObjects;
import com.craisinlord.antarchy.content.boss.BossCombatUtil;
import com.craisinlord.antarchy.content.damage.AntarchyDamageSources; import com.craisinlord.antarchy.content.damage.AntarchyDamageSources;
import com.craisinlord.antarchy.content.entity.ScorpionEntity; import com.craisinlord.antarchy.content.entity.ScorpionEntity;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
@@ -142,6 +143,7 @@ public class EmperorScorpionEntity extends Monster implements GeoEntity {
@Nullable private BlockPos encounterHome; @Nullable private BlockPos encounterHome;
@Nullable private LivingEntity attackTarget; @Nullable private LivingEntity attackTarget;
private final Set<UUID> summonedScorpionIds = new HashSet<>(); private final Set<UUID> summonedScorpionIds = new HashSet<>();
private boolean hasTakenDamage;
public EmperorScorpionEntity(EntityType<? extends EmperorScorpionEntity> entityType, Level level) { public EmperorScorpionEntity(EntityType<? extends EmperorScorpionEntity> entityType, Level level) {
super(entityType, level); super(entityType, level);
@@ -195,12 +197,28 @@ public class EmperorScorpionEntity extends Monster implements GeoEntity {
if (this.isHardenedStateActive()) { if (this.isHardenedStateActive()) {
return false; return false;
} }
return super.hurt(source, amount); amount = BossCombatUtil.capSingleHitAtHalfHealth(this, amount);
boolean hurt = super.hurt(source, amount);
if (hurt) {
this.hasTakenDamage = true;
}
return hurt;
} }
@Override @Override
public boolean isInvulnerableTo(DamageSource source) { public boolean isInvulnerableTo(DamageSource source) {
return this.isHardenedStateActive() || super.isInvulnerableTo(source); if (this.isHardenedStateActive() || super.isInvulnerableTo(source)) {
return true;
}
return BossCombatUtil.isOutOfDamageRange(this, AntarchySettings.emperorScorpionDamageRange());
}
@Override
public boolean removeWhenFarAway(double distanceToClosestPlayer) {
if (this.hasTakenDamage || this.tickCount < AntarchySettings.emperorScorpionMinDespawnTicks()) {
return false;
}
return super.removeWhenFarAway(distanceToClosestPlayer);
} }
@Override @Override
@@ -684,6 +702,7 @@ public class EmperorScorpionEntity extends Monster implements GeoEntity {
tag.putInt("HardenDurationTicks", this.hardenDurationTicks); tag.putInt("HardenDurationTicks", this.hardenDurationTicks);
tag.putInt("HardenHealTicks", this.hardenHealTicks); tag.putInt("HardenHealTicks", this.hardenHealTicks);
tag.putInt("HardenSummonedScorpions", this.hardenSummonedScorpions); tag.putInt("HardenSummonedScorpions", this.hardenSummonedScorpions);
tag.putBoolean("HasTakenDamage", this.hasTakenDamage);
if (this.encounterHome != null) { if (this.encounterHome != null) {
tag.putInt("EncounterHomeX", this.encounterHome.getX()); tag.putInt("EncounterHomeX", this.encounterHome.getX());
tag.putInt("EncounterHomeY", this.encounterHome.getY()); tag.putInt("EncounterHomeY", this.encounterHome.getY());
@@ -720,6 +739,9 @@ public class EmperorScorpionEntity extends Monster implements GeoEntity {
if (tag.contains("HardenSummonedScorpions")) { if (tag.contains("HardenSummonedScorpions")) {
this.hardenSummonedScorpions = tag.getInt("HardenSummonedScorpions"); this.hardenSummonedScorpions = tag.getInt("HardenSummonedScorpions");
} }
if (tag.contains("HasTakenDamage")) {
this.hasTakenDamage = tag.getBoolean("HasTakenDamage");
}
if (tag.contains("EncounterHomeX") && tag.contains("EncounterHomeY") && tag.contains("EncounterHomeZ")) { if (tag.contains("EncounterHomeX") && tag.contains("EncounterHomeY") && tag.contains("EncounterHomeZ")) {
this.encounterHome = new BlockPos(tag.getInt("EncounterHomeX"), tag.getInt("EncounterHomeY"), tag.getInt("EncounterHomeZ")); this.encounterHome = new BlockPos(tag.getInt("EncounterHomeX"), tag.getInt("EncounterHomeY"), tag.getInt("EncounterHomeZ"));
} }
@@ -1,6 +1,7 @@
package com.craisinlord.antarchy.content.entity; package com.craisinlord.antarchy.content.entity;
import com.craisinlord.antarchy.config.AntarchySettings; import com.craisinlord.antarchy.config.AntarchySettings;
import com.craisinlord.antarchy.content.boss.BossCombatUtil;
import com.craisinlord.antarchy.content.AntarchyGameRules; import com.craisinlord.antarchy.content.AntarchyGameRules;
import com.craisinlord.antarchy.content.AntarchySoundEvents; import com.craisinlord.antarchy.content.AntarchySoundEvents;
import com.craisinlord.antarchy.content.AntarchyTags; import com.craisinlord.antarchy.content.AntarchyTags;
@@ -593,6 +594,8 @@ public class HerculesBeetleEntity extends TamableAnimal implements GeoEntity, Fl
amount *= 0.5F; amount *= 0.5F;
} }
amount = BossCombatUtil.capSingleHitAtHalfHealth(this, amount);
if (!this.level().isClientSide && !this.isTame() && !this.isKnockedDown() && !this.isDeadOrDying()) { if (!this.level().isClientSide && !this.isTame() && !this.isKnockedDown() && !this.isDeadOrDying()) {
float knockThreshold = Math.max(1.0F, this.getMaxHealth() * 0.05F); float knockThreshold = Math.max(1.0F, this.getMaxHealth() * 0.05F);
if (this.getHealth() - amount <= knockThreshold) { if (this.getHealth() - amount <= knockThreshold) {
@@ -608,6 +611,14 @@ public class HerculesBeetleEntity extends TamableAnimal implements GeoEntity, Fl
return super.hurt(source, amount); return super.hurt(source, amount);
} }
@Override
public boolean isInvulnerableTo(DamageSource source) {
if (super.isInvulnerableTo(source)) {
return true;
}
return BossCombatUtil.isOutOfDamageRange(this, AntarchySettings.herculesBeetleDamageRange());
}
private void enterKnockedDown() { private void enterKnockedDown() {
if (this.isKnockedDown()) { if (this.isKnockedDown()) {
return; return;
@@ -1,6 +1,7 @@
package com.craisinlord.antarchy.content.entity; package com.craisinlord.antarchy.content.entity;
import com.craisinlord.antarchy.config.AntarchySettings; import com.craisinlord.antarchy.config.AntarchySettings;
import com.craisinlord.antarchy.content.boss.BossCombatUtil;
import com.craisinlord.antarchy.content.AntarchyObjects; import com.craisinlord.antarchy.content.AntarchyObjects;
import com.craisinlord.antarchy.content.AntarchySoundEvents; import com.craisinlord.antarchy.content.AntarchySoundEvents;
import com.craisinlord.antarchy.content.damage.AntarchyDamageSources; import com.craisinlord.antarchy.content.damage.AntarchyDamageSources;
@@ -285,6 +286,14 @@ public class ToreterrorEntity extends Monster implements GeoEntity {
return super.hurt(source, amount); return super.hurt(source, amount);
} }
@Override
public boolean isInvulnerableTo(DamageSource source) {
if (super.isInvulnerableTo(source)) {
return true;
}
return BossCombatUtil.isOutOfDamageRange(this, AntarchySettings.toreterrorDamageRange());
}
private void enterPhase2() { private void enterPhase2() {
this.entityData.set(PHASE_2, true); this.entityData.set(PHASE_2, true);
} }
@@ -1,6 +1,7 @@
package com.craisinlord.antarchy.content.entity.brutalfly; package com.craisinlord.antarchy.content.entity.brutalfly;
import com.craisinlord.antarchy.config.AntarchySettings; import com.craisinlord.antarchy.config.AntarchySettings;
import com.craisinlord.antarchy.content.boss.BossCombatUtil;
import com.craisinlord.antarchy.content.AntarchyObjects; import com.craisinlord.antarchy.content.AntarchyObjects;
import com.craisinlord.antarchy.content.AntarchySoundEvents; import com.craisinlord.antarchy.content.AntarchySoundEvents;
import java.util.EnumSet; import java.util.EnumSet;
@@ -383,12 +384,15 @@ public class BrutalflyEntity extends Monster implements GeoEntity {
} }
return true; return true;
} }
return super.hurt(source, amount); return super.hurt(source, BossCombatUtil.capSingleHitAtHalfHealth(this, amount));
} }
@Override @Override
public boolean isInvulnerableTo(DamageSource source) { public boolean isInvulnerableTo(DamageSource source) {
return this.postCocoonInvulnerableTicks > 0 || super.isInvulnerableTo(source); if (this.postCocoonInvulnerableTicks > 0 || super.isInvulnerableTo(source)) {
return true;
}
return BossCombatUtil.isOutOfDamageRange(this, AntarchySettings.brutalflyDamageRange());
} }
private void tickCombat(LivingEntity target) { private void tickCombat(LivingEntity target) {
@@ -130,9 +130,9 @@ public class FlyingSquirrelEntity extends TamableAnimal implements GeoEntity {
private static final double SHOULDER_HEAD_Y_OFFSET = 0.26D; private static final double SHOULDER_HEAD_Y_OFFSET = 0.26D;
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("walking"); private static final RawAnimation WALK_ANIM = RawAnimation.begin().thenLoop("walk");
private static final RawAnimation CLIMB_ANIM = RawAnimation.begin().thenLoop("climbing"); private static final RawAnimation CLIMB_ANIM = RawAnimation.begin().thenLoop("climbing");
private static final RawAnimation GLIDE_ANIM = RawAnimation.begin().thenLoop("gliding"); private static final RawAnimation GLIDE_ANIM = RawAnimation.begin().thenLoop("fly");
private static final RawAnimation PICKUP_ANIM = RawAnimation.begin().thenPlay("item_pickup"); private static final RawAnimation PICKUP_ANIM = RawAnimation.begin().thenPlay("item_pickup");
private static final String QUIRK_CONTROLLER = "quirk_controller"; private static final String QUIRK_CONTROLLER = "quirk_controller";
private static final String QUIRK_1_TRIGGER = "quirk1"; private static final String QUIRK_1_TRIGGER = "quirk1";
@@ -2146,11 +2146,11 @@ public class FlyingSquirrelEntity extends TamableAnimal implements GeoEntity {
@Nullable @Nullable
protected Vec3 getPosition() { protected Vec3 getPosition() {
BlockPos target = this.findBestArborealDestination(); BlockPos target = this.findBestArborealDestination();
if (target == null) { if (target != null) {
return null;
}
return Vec3.atBottomCenterOf(target); return Vec3.atBottomCenterOf(target);
} }
return super.getPosition();
}
@Override @Override
public void start() { public void start() {
@@ -4,6 +4,7 @@ import com.craisinlord.antarchy.Antarchy;
import com.craisinlord.antarchy.config.AntarchySettings; import com.craisinlord.antarchy.config.AntarchySettings;
import com.craisinlord.antarchy.content.AntarchyObjects; import com.craisinlord.antarchy.content.AntarchyObjects;
import com.craisinlord.antarchy.content.AntarchySoundEvents; import com.craisinlord.antarchy.content.AntarchySoundEvents;
import com.craisinlord.antarchy.content.boss.BossCombatUtil;
import com.craisinlord.antarchy.content.damage.AntarchyDamageSources; import com.craisinlord.antarchy.content.damage.AntarchyDamageSources;
import com.craisinlord.antarchy.content.entity.MissileSquidEntity; import com.craisinlord.antarchy.content.entity.MissileSquidEntity;
import com.craisinlord.antarchy.content.entity.OctopusBombEntity; import com.craisinlord.antarchy.content.entity.OctopusBombEntity;
@@ -150,7 +151,7 @@ public class KrakenEntity extends Monster implements GeoEntity, MultipartEntityO
.add(Attributes.ATTACK_DAMAGE, AntarchySettings.krakenAttackDamage()) .add(Attributes.ATTACK_DAMAGE, AntarchySettings.krakenAttackDamage())
.add(Attributes.MOVEMENT_SPEED, AntarchySettings.krakenMovementSpeed()) .add(Attributes.MOVEMENT_SPEED, AntarchySettings.krakenMovementSpeed())
.add(Attributes.FLYING_SPEED, AntarchySettings.krakenFlyingSpeed()) .add(Attributes.FLYING_SPEED, AntarchySettings.krakenFlyingSpeed())
.add(Attributes.FOLLOW_RANGE, 64.0D) .add(Attributes.FOLLOW_RANGE, AntarchySettings.krakenFollowRange())
.add(Attributes.KNOCKBACK_RESISTANCE, AntarchySettings.krakenKnockbackResistance()) .add(Attributes.KNOCKBACK_RESISTANCE, AntarchySettings.krakenKnockbackResistance())
.add(Attributes.ARMOR, AntarchySettings.krakenArmor()); .add(Attributes.ARMOR, AntarchySettings.krakenArmor());
} }
@@ -368,7 +369,15 @@ public class KrakenEntity extends Monster implements GeoEntity, MultipartEntityO
return false; return false;
} }
return super.hurt(source, amount); return super.hurt(source, BossCombatUtil.capSingleHitAtHalfHealth(this, amount));
}
@Override
public boolean isInvulnerableTo(DamageSource source) {
if (super.isInvulnerableTo(source)) {
return true;
}
return BossCombatUtil.isOutOfDamageRange(this, AntarchySettings.krakenDamageRange());
} }
@Override @Override
@@ -128,27 +128,23 @@ public class TentacleEntity extends Mob implements GeoEntity {
return; return;
} }
int interval = Math.max(1, AntarchySettings.krakensGraspTentacleDamageIntervalTicks()); int refreshTicks = Math.max(1, AntarchySettings.krakensGraspTentacleSlownessRefreshTicks());
if (this.lifetimeTicks % interval == 0) { if (this.lifetimeTicks % refreshTicks == 0) {
this.grabNearbyEntities(); this.slowNearbyEntities(refreshTicks);
} }
} }
private void grabNearbyEntities() { private void slowNearbyEntities(int refreshTicks) {
double radius = AntarchySettings.krakensGraspTentacleRadius(); double radius = AntarchySettings.krakensGraspTentacleRadius();
AABB area = this.getBoundingBox().inflate(radius, radius * 0.6D, radius); AABB area = this.getBoundingBox().inflate(radius, radius * 0.6D, radius);
List<LivingEntity> victims = this.level().getEntitiesOfClass(LivingEntity.class, area, List<LivingEntity> victims = this.level().getEntitiesOfClass(LivingEntity.class, area,
entity -> entity.isAlive() && !entity.isSpectator() && !entity.getUUID().equals(this.ownerId) entity -> entity.isAlive() && !entity.isSpectator() && !entity.getUUID().equals(this.ownerId)
&& !(entity instanceof Player player && player.isCreative())); && !(entity instanceof Player player && player.isCreative()));
for (LivingEntity victim : victims) { int amplifier = Math.max(0, AntarchySettings.krakensGraspTentacleSlownessAmplifier());
if (this.level() instanceof ServerLevel serverLevel) {
victim.hurt(this.damageSources().mobAttack(this), (float) AntarchySettings.krakensGraspTentacleDamage());
serverLevel.sendParticles(net.minecraft.core.particles.ParticleTypes.SPLASH,
victim.getX(), victim.getY(0.6D), victim.getZ(), 8, 0.2D, 0.2D, 0.2D, 0.05D);
}
victim.addEffect(new MobEffectInstance(MobEffects.MOVEMENT_SLOWDOWN, AntarchySettings.krakensGraspTentacleDamageIntervalTicks() + 10, 1, false, true, true)); for (LivingEntity victim : victims) {
victim.addEffect(new MobEffectInstance(MobEffects.MOVEMENT_SLOWDOWN, refreshTicks + 4, amplifier, false, true, true));
Vec3 pull = this.position().subtract(victim.position()).multiply(1.0D, 0.0D, 1.0D); Vec3 pull = this.position().subtract(victim.position()).multiply(1.0D, 0.0D, 1.0D);
if (pull.lengthSqr() > 1.0E-4D) { if (pull.lengthSqr() > 1.0E-4D) {
@@ -1,6 +1,7 @@
package com.craisinlord.antarchy.content.entity.lucid; package com.craisinlord.antarchy.content.entity.lucid;
import com.craisinlord.antarchy.content.AntarchySoundEvents; import com.craisinlord.antarchy.content.AntarchySoundEvents;
import com.craisinlord.antarchy.content.AntarchyObjects;
import com.craisinlord.antarchy.content.AntarchyTags; import com.craisinlord.antarchy.content.AntarchyTags;
import net.minecraft.core.Holder; import net.minecraft.core.Holder;
import net.minecraft.network.syncher.SynchedEntityData; import net.minecraft.network.syncher.SynchedEntityData;
@@ -11,18 +12,30 @@ import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.projectile.ThrowableProjectile; import net.minecraft.world.entity.projectile.ThrowableProjectile;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.BlockHitResult;
import net.minecraft.world.phys.EntityHitResult; import net.minecraft.world.phys.EntityHitResult;
import net.minecraft.world.phys.Vec3;
import java.util.function.Supplier; import java.util.function.Supplier;
import software.bernie.geckolib.animatable.GeoEntity;
import software.bernie.geckolib.animatable.instance.AnimatableInstanceCache;
import software.bernie.geckolib.animation.AnimatableManager;
import software.bernie.geckolib.animation.AnimationController;
import software.bernie.geckolib.animation.AnimationState;
import software.bernie.geckolib.animation.PlayState;
import software.bernie.geckolib.animation.RawAnimation;
import software.bernie.geckolib.util.GeckoLibUtil;
public class LucidBoltEntity extends ThrowableProjectile { public class LucidBoltEntity extends ThrowableProjectile implements GeoEntity {
private static final int MAX_LIFETIME_TICKS = 40; private static final int MAX_LIFETIME_TICKS = 40;
private static final int INVERTED_EFFECT_DURATION = 100; private static final int INVERTED_EFFECT_DURATION = 100;
private static final double BASE_DAMAGE = 3.0D; private static final double BASE_DAMAGE = 3.0D;
private static final RawAnimation IDLE_ANIM = RawAnimation.begin().thenLoop("idle");
public static Supplier<Holder<MobEffect>> invertedEffectSupplier; public static Supplier<Holder<MobEffect>> invertedEffectSupplier;
private final AnimatableInstanceCache geoCache = GeckoLibUtil.createInstanceCache(this);
public LucidBoltEntity(EntityType<? extends LucidBoltEntity> entityType, Level level) { public LucidBoltEntity(EntityType<? extends LucidBoltEntity> entityType, Level level) {
super(entityType, level); super(entityType, level);
@@ -36,6 +49,7 @@ public class LucidBoltEntity extends ThrowableProjectile {
private void configureBolt() { private void configureBolt() {
this.setNoGravity(true); this.setNoGravity(true);
this.noCulling = true;
} }
@Override @Override
@@ -54,17 +68,19 @@ public class LucidBoltEntity extends ThrowableProjectile {
return; return;
} }
super.tick(); super.tick();
this.realignToMotion();
} }
@Override @Override
protected void onHitEntity(EntityHitResult result) { protected void onHitEntity(EntityHitResult result) {
if (!this.level().isClientSide() && result.getEntity() instanceof LivingEntity target if (!this.level().isClientSide() && this.level() instanceof ServerLevel serverLevel) {
&& target.getType().is(AntarchyTags.Entities.LUCID_BOLT_IMMUNE)) { spawnImpactParticles(serverLevel, result.getLocation());
if (result.getEntity() instanceof LivingEntity target && target.getType().is(AntarchyTags.Entities.LUCID_BOLT_IMMUNE)) {
this.discard(); this.discard();
return; return;
} }
if (!this.level().isClientSide() && result.getEntity() instanceof LivingEntity target) { if (result.getEntity() instanceof LivingEntity target) {
Entity owner = this.getOwner(); Entity owner = this.getOwner();
if (owner instanceof LivingEntity shooter) { if (owner instanceof LivingEntity shooter) {
target.hurt(this.damageSources().mobAttack(shooter), (float) BASE_DAMAGE); target.hurt(this.damageSources().mobAttack(shooter), (float) BASE_DAMAGE);
@@ -76,15 +92,47 @@ public class LucidBoltEntity extends ThrowableProjectile {
target.addEffect(new MobEffectInstance(invertedEffectSupplier.get(), INVERTED_EFFECT_DURATION, 0, false, true)); target.addEffect(new MobEffectInstance(invertedEffectSupplier.get(), INVERTED_EFFECT_DURATION, 0, false, true));
} }
} }
}
this.discard(); this.discard();
} }
@Override @Override
protected void onHitBlock(BlockHitResult result) { protected void onHitBlock(BlockHitResult result) {
if (!this.level().isClientSide()) { if (!this.level().isClientSide() && this.level() instanceof ServerLevel serverLevel) {
spawnImpactParticles(serverLevel, result.getLocation());
this.level().playSound(null, result.getBlockPos(), AntarchySoundEvents.LUCID_BOLT_SOUND.get(), SoundSource.HOSTILE, 0.8F, 1.0F); this.level().playSound(null, result.getBlockPos(), AntarchySoundEvents.LUCID_BOLT_SOUND.get(), SoundSource.HOSTILE, 0.8F, 1.0F);
} }
this.discard(); this.discard();
} }
public static void spawnImpactParticles(ServerLevel level, Vec3 position) {
level.sendParticles(AntarchyObjects.LUCID_BOLT_IMPACT_LARGE.get(), position.x, position.y, position.z, 2, 0.08D, 0.08D, 0.08D, 0.01D);
level.sendParticles(AntarchyObjects.LUCID_BOLT_IMPACT_SMALL.get(), position.x, position.y, position.z, 10, 0.16D, 0.16D, 0.16D, 0.065D);
}
private void realignToMotion() {
net.minecraft.world.phys.Vec3 motion = this.getDeltaMovement();
if (motion.lengthSqr() < 1.0E-6D) {
return;
}
double horizontal = Math.sqrt(motion.x * motion.x + motion.z * motion.z);
this.setYRot((float) (net.minecraft.util.Mth.atan2(motion.z, motion.x) * (180.0D / Math.PI)) - 90.0F);
this.setXRot((float) (-(net.minecraft.util.Mth.atan2(motion.y, horizontal) * (180.0D / Math.PI))));
}
@Override
public void registerControllers(AnimatableManager.ControllerRegistrar controllers) {
controllers.add(new AnimationController<>(this, "bolt_controller", 0, this::boltController));
}
private PlayState boltController(AnimationState<LucidBoltEntity> state) {
return state.setAndContinue(IDLE_ANIM);
}
@Override
public AnimatableInstanceCache getAnimatableInstanceCache() {
return this.geoCache;
}
} }
@@ -102,7 +102,9 @@ public class NightmareEntity extends Monster implements GeoEntity {
private static final int SPECIAL_ROAR = 5; private static final int SPECIAL_ROAR = 5;
private static final int SPECIAL_ROAR_P2 = 6; private static final int SPECIAL_ROAR_P2 = 6;
private static final int SPECIAL_PHASE_TWO = 7; private static final int SPECIAL_PHASE_TWO = 7;
private static final int SPECIAL_PORTAL = 8; private static final int SPECIAL_PORTAL_ENTER = 8;
private static final int SPECIAL_PORTAL_EXIT = 9;
private static final int SPECIAL_DEATH = 10;
private static final int ATTACK_TOTAL_TICKS = 20; private static final int ATTACK_TOTAL_TICKS = 20;
private static final int ATTACK_DAMAGE_TICK = 10; private static final int ATTACK_DAMAGE_TICK = 10;
private static final int INTRO_ROAR_TICKS = 30; private static final int INTRO_ROAR_TICKS = 30;
@@ -136,12 +138,14 @@ public class NightmareEntity extends Monster implements GeoEntity {
private static final double PHASE_TWO_HEALTH_FRACTION = 0.5D; private static final double PHASE_TWO_HEALTH_FRACTION = 0.5D;
private static final double PORTAL_RANGE = 32.0D; private static final double PORTAL_RANGE = 32.0D;
private static final double PORTAL_MIN_RANGE_SQR = 49.0D; private static final double PORTAL_MIN_RANGE_SQR = 49.0D;
private static final double PORTAL_ENTRY_EXIT_MIN_RANGE_SQR = 49.0D;
private static final double PORTAL_EXIT_OFFSET = 2.35D; private static final double PORTAL_EXIT_OFFSET = 2.35D;
private static final double PORTAL_TRANSPORT_RADIUS = 1.25D;
private static final double FLYING_APPROACH_STRAFE_OFFSET = 2.1D; private static final double FLYING_APPROACH_STRAFE_OFFSET = 2.1D;
private static final double FLYING_APPROACH_HEIGHT = 0.45D; private static final double FLYING_APPROACH_HEIGHT = 0.45D;
private static final double FLYING_APPROACH_HEIGHT_PHASE_TWO = 0.8D; private static final double FLYING_APPROACH_HEIGHT_PHASE_TWO = 0.8D;
private static final double FLYING_APPROACH_TOO_CLOSE_RANGE_SQR = 9.0D; private static final double FLYING_APPROACH_TOO_CLOSE_RANGE_SQR = 9.0D;
private static final double FLYING_OVERHEAD_STALL_RANGE_SQR = 4.0D;
private static final double FLYING_OVERHEAD_STALL_HEIGHT = 2.1D;
private static final double ANIMATION_MOVEMENT_THRESHOLD_SQR = 0.01D; private static final double ANIMATION_MOVEMENT_THRESHOLD_SQR = 0.01D;
private static final RawAnimation IDLE_ANIM = RawAnimation.begin().thenLoop("idle"); private static final RawAnimation IDLE_ANIM = RawAnimation.begin().thenLoop("idle");
@@ -159,7 +163,8 @@ public class NightmareEntity extends Monster implements GeoEntity {
private static final String SPECIAL_ROAR_TRIGGER = "roar"; private static final String SPECIAL_ROAR_TRIGGER = "roar";
private static final String SPECIAL_ROAR_P2_TRIGGER = "roar_P2"; private static final String SPECIAL_ROAR_P2_TRIGGER = "roar_P2";
private static final String SPECIAL_PHASE_TWO_TRIGGER = "phase2"; private static final String SPECIAL_PHASE_TWO_TRIGGER = "phase2";
private static final String SPECIAL_PORTAL_TRIGGER = "portal_out"; private static final String SPECIAL_PORTAL_ENTER_TRIGGER = "portal_enter";
private static final String SPECIAL_PORTAL_EXIT_TRIGGER = "portal_out";
private static final RawAnimation ATTACK_ANIM = RawAnimation.begin().thenPlayAndHold("attack"); private static final RawAnimation ATTACK_ANIM = RawAnimation.begin().thenPlayAndHold("attack");
private static final RawAnimation ATTACK_P2_ANIM = RawAnimation.begin().thenPlayAndHold("attack_P2"); private static final RawAnimation ATTACK_P2_ANIM = RawAnimation.begin().thenPlayAndHold("attack_P2");
private static final RawAnimation FLY_ATTACK_ANIM = RawAnimation.begin().thenPlayAndHold("attack2"); private static final RawAnimation FLY_ATTACK_ANIM = RawAnimation.begin().thenPlayAndHold("attack2");
@@ -167,7 +172,9 @@ public class NightmareEntity extends Monster implements GeoEntity {
private static final RawAnimation ROAR_ANIM = RawAnimation.begin().thenPlayAndHold("roar"); private static final RawAnimation ROAR_ANIM = RawAnimation.begin().thenPlayAndHold("roar");
private static final RawAnimation ROAR_P2_ANIM = RawAnimation.begin().thenPlayAndHold("roar_P2"); private static final RawAnimation ROAR_P2_ANIM = RawAnimation.begin().thenPlayAndHold("roar_P2");
private static final RawAnimation PHASE_TWO_TRANSITION_ANIM = RawAnimation.begin().thenPlayAndHold("phase2"); private static final RawAnimation PHASE_TWO_TRANSITION_ANIM = RawAnimation.begin().thenPlayAndHold("phase2");
private static final RawAnimation PORTAL_ATTACK_ANIM = RawAnimation.begin().thenPlayAndHold("portal_out"); private static final RawAnimation PORTAL_ENTER_ANIM = RawAnimation.begin().thenPlayAndHold("portal_enter");
private static final RawAnimation PORTAL_EXIT_ANIM = RawAnimation.begin().thenPlayAndHold("portal_out");
private static final RawAnimation DEATH_ANIM = RawAnimation.begin().thenPlayAndHold("death");
private final AnimatableInstanceCache geoCache = GeckoLibUtil.createInstanceCache(this); private final AnimatableInstanceCache geoCache = GeckoLibUtil.createInstanceCache(this);
@@ -264,7 +271,9 @@ public class NightmareEntity extends Monster implements GeoEntity {
.triggerableAnim(SPECIAL_ROAR_TRIGGER, ROAR_ANIM) .triggerableAnim(SPECIAL_ROAR_TRIGGER, ROAR_ANIM)
.triggerableAnim(SPECIAL_ROAR_P2_TRIGGER, ROAR_P2_ANIM) .triggerableAnim(SPECIAL_ROAR_P2_TRIGGER, ROAR_P2_ANIM)
.triggerableAnim(SPECIAL_PHASE_TWO_TRIGGER, PHASE_TWO_TRANSITION_ANIM) .triggerableAnim(SPECIAL_PHASE_TWO_TRIGGER, PHASE_TWO_TRANSITION_ANIM)
.triggerableAnim(SPECIAL_PORTAL_TRIGGER, PORTAL_ATTACK_ANIM)); .triggerableAnim(SPECIAL_PORTAL_ENTER_TRIGGER, PORTAL_ENTER_ANIM)
.triggerableAnim(SPECIAL_PORTAL_EXIT_TRIGGER, PORTAL_EXIT_ANIM)
.triggerableAnim("death", DEATH_ANIM));
} }
private PlayState mainAnimController(AnimationState<NightmareEntity> state) { private PlayState mainAnimController(AnimationState<NightmareEntity> state) {
@@ -555,6 +564,9 @@ public class NightmareEntity extends Monster implements GeoEntity {
@Override @Override
protected void tickDeath() { protected void tickDeath() {
this.deathTime++; this.deathTime++;
if (this.deathTime == 1) {
this.selectSpecialAnimation(SPECIAL_DEATH);
}
if (this.deathTime >= DEATH_TICKS) { if (this.deathTime >= DEATH_TICKS) {
this.remove(RemovalReason.KILLED); this.remove(RemovalReason.KILLED);
this.dropExperience(this); this.dropExperience(this);
@@ -678,7 +690,6 @@ public class NightmareEntity extends Monster implements GeoEntity {
if (!this.attackHitApplied && elapsed >= ATTACK_DAMAGE_TICK) { if (!this.attackHitApplied && elapsed >= ATTACK_DAMAGE_TICK) {
this.attackHitApplied = true; this.attackHitApplied = true;
this.playNightmareBiteSound(); this.playNightmareBiteSound();
this.spawnBiteEffect();
this.performAttackHit(); this.performAttackHit();
} }
if (--this.attackAnimationTicks <= 0) { if (--this.attackAnimationTicks <= 0) {
@@ -731,14 +742,16 @@ public class NightmareEntity extends Monster implements GeoEntity {
} }
private boolean canStartPortalAttack(LivingEntity target) { private boolean canStartPortalAttack(LivingEntity target) {
Vec3 entryPos = this.getPortalEntryPosition();
if (!this.isPhaseTwo() || this.isPhaseTransitioning() || this.portalCooldown > 0 || this.attackAnimationTicks > 0 || this.roarTicks > 0) return false; if (!this.isPhaseTwo() || this.isPhaseTransitioning() || this.portalCooldown > 0 || this.attackAnimationTicks > 0 || this.roarTicks > 0) return false;
if (!this.hasLineOfSight(target) || this.distanceToSqr(target) > PORTAL_RANGE * PORTAL_RANGE) return false; if (!this.hasLineOfSight(target) || this.distanceToSqr(target) > PORTAL_RANGE * PORTAL_RANGE) return false;
if (this.horizontalDistanceToSqr(target) < PORTAL_MIN_RANGE_SQR) return false; if (this.horizontalDistanceToSqr(target) < PORTAL_MIN_RANGE_SQR) return false;
return this.portalAttackTicks <= 0 && this.findPortalExitPos(target) != null; return this.portalAttackTicks <= 0 && this.findPortalExitPos(target, entryPos) != null;
} }
private void startPortalAttack(LivingEntity target) { private void startPortalAttack(LivingEntity target) {
Vec3 exitPos = this.findPortalExitPos(target); Vec3 entryPos = this.getPortalEntryPosition();
Vec3 exitPos = this.findPortalExitPos(target, entryPos);
if (exitPos == null || !(this.level() instanceof ServerLevel serverLevel)) return; if (exitPos == null || !(this.level() instanceof ServerLevel serverLevel)) return;
this.clearNightmarePortals(); this.clearNightmarePortals();
this.portalExitPos = exitPos; this.portalExitPos = exitPos;
@@ -749,9 +762,9 @@ public class NightmareEntity extends Monster implements GeoEntity {
this.attackHitApplied = false; this.attackHitApplied = false;
this.attackCooldown = 24; this.attackCooldown = 24;
this.portalCooldown = 180 + this.random.nextInt(100); this.portalCooldown = 180 + this.random.nextInt(100);
this.selectSpecialAnimation(SPECIAL_PORTAL); this.selectSpecialAnimation(SPECIAL_PORTAL_ENTER);
this.getNavigation().stop(); this.getNavigation().stop();
this.entryPortal = NightmarePortalEntity.spawnAt(serverLevel, this.position().add(this.getViewVector(1.0F).multiply(1.6D, 0.0D, 1.6D)), this, this.position(), PORTAL_LIFETIME_TICKS); this.entryPortal = NightmarePortalEntity.spawnAt(serverLevel, entryPos, this, this.position(), PORTAL_LIFETIME_TICKS);
this.exitPortal = NightmarePortalEntity.spawnAt(serverLevel, exitPos, this, this.position(), PORTAL_LIFETIME_TICKS); this.exitPortal = NightmarePortalEntity.spawnAt(serverLevel, exitPos, this, this.position(), PORTAL_LIFETIME_TICKS);
if (this.entryPortal != null && this.exitPortal != null) { if (this.entryPortal != null && this.exitPortal != null) {
this.entryPortal.linkTo(this.exitPortal); this.entryPortal.linkTo(this.exitPortal);
@@ -771,7 +784,6 @@ public class NightmareEntity extends Monster implements GeoEntity {
} }
if (!this.portalAttackHitApplied && elapsed >= PORTAL_DAMAGE_TICK) { if (!this.portalAttackHitApplied && elapsed >= PORTAL_DAMAGE_TICK) {
this.portalAttackHitApplied = true; this.portalAttackHitApplied = true;
this.spawnBiteEffect();
this.performPortalExitHit(); this.performPortalExitHit();
} }
if (--this.portalAttackTicks <= 0) { if (--this.portalAttackTicks <= 0) {
@@ -786,6 +798,7 @@ public class NightmareEntity extends Monster implements GeoEntity {
if (this.portalExitPos == null) return; if (this.portalExitPos == null) return;
this.portalTravelTicks = PORTAL_TRAVEL_INVULNERABLE_TICKS; this.portalTravelTicks = PORTAL_TRAVEL_INVULNERABLE_TICKS;
this.setPortalCooldown(); this.setPortalCooldown();
this.selectSpecialAnimation(SPECIAL_PORTAL_EXIT);
this.teleportTo(this.portalExitPos.x, this.portalExitPos.y, this.portalExitPos.z); this.teleportTo(this.portalExitPos.x, this.portalExitPos.y, this.portalExitPos.z);
if (target != null) { if (target != null) {
this.faceTowardTarget(target, 180.0F); this.faceTowardTarget(target, 180.0F);
@@ -820,7 +833,6 @@ public class NightmareEntity extends Monster implements GeoEntity {
List<LivingEntity> victims = this.level().getEntitiesOfClass(LivingEntity.class, hitBox, this::canTargetEntity); List<LivingEntity> victims = this.level().getEntitiesOfClass(LivingEntity.class, hitBox, this::canTargetEntity);
for (LivingEntity victim : victims) { for (LivingEntity victim : victims) {
if (victim.hurt(this.nightmareDamageSource(), damage)) { if (victim.hurt(this.nightmareDamageSource(), damage)) {
this.spawnBiteEffectAt(victim);
this.applyNightmareStrikeEffects(victim); this.applyNightmareStrikeEffects(victim);
this.knockAway(victim, 1.35D, 0.35D); this.knockAway(victim, 1.35D, 0.35D);
} }
@@ -831,20 +843,6 @@ public class NightmareEntity extends Monster implements GeoEntity {
} }
} }
private void spawnBiteEffect() {
if (!(this.level() instanceof ServerLevel serverLevel)) return;
Vec3 forward = this.getViewVector(1.0F).normalize();
Vec3 spawnPos = this.getEyePosition().add(forward.scale(this.getBbWidth() * 0.65D)).add(0.0D, -0.45D, 0.0D);
NightmareBiteEntity.spawnAt(serverLevel, spawnPos, this.getYRot(), this.isPhaseTwo());
}
private void spawnBiteEffectAt(LivingEntity target) {
if (!(this.level() instanceof ServerLevel serverLevel)) return;
float yaw = target.getYRot() + 180.0F;
Vec3 spawnPos = target.getEyePosition().add(0.0D, -0.35D, 0.0D);
NightmareBiteEntity.spawnAt(serverLevel, spawnPos, yaw, this.isPhaseTwo());
}
private void playNightmareBiteSound() { private void playNightmareBiteSound() {
this.playSound(AntarchySoundEvents.NIGHTMARE_BITE.get(), 1.3F, 0.72F + this.random.nextFloat() * 0.08F); this.playSound(AntarchySoundEvents.NIGHTMARE_BITE.get(), 1.3F, 0.72F + this.random.nextFloat() * 0.08F);
} }
@@ -941,8 +939,14 @@ public class NightmareEntity extends Monster implements GeoEntity {
Vec3 right = new Vec3(-forward.z, 0.0D, forward.x); Vec3 right = new Vec3(-forward.z, 0.0D, forward.x);
double strafe = this.tickCount % 32 < 16 ? FLYING_APPROACH_STRAFE_OFFSET : -FLYING_APPROACH_STRAFE_OFFSET; double strafe = this.tickCount % 32 < 16 ? FLYING_APPROACH_STRAFE_OFFSET : -FLYING_APPROACH_STRAFE_OFFSET;
double height = this.isPhaseTwo() ? FLYING_APPROACH_HEIGHT_PHASE_TWO : FLYING_APPROACH_HEIGHT; double height = this.isPhaseTwo() ? FLYING_APPROACH_HEIGHT_PHASE_TWO : FLYING_APPROACH_HEIGHT;
double horizontalDistanceSqr = this.horizontalDistanceToSqr(target);
double overheadGap = this.getY() - target.getY();
Vec3 anchor = target.position().subtract(forward.scale(1.4D)).add(right.scale(strafe)); Vec3 anchor = target.position().subtract(forward.scale(1.4D)).add(right.scale(strafe));
if (this.horizontalDistanceToSqr(target) <= FLYING_APPROACH_TOO_CLOSE_RANGE_SQR) { if (horizontalDistanceSqr <= FLYING_OVERHEAD_STALL_RANGE_SQR && overheadGap >= FLYING_OVERHEAD_STALL_HEIGHT) {
anchor = target.position().add(right.scale(strafe * 1.4D)).subtract(forward.scale(0.6D));
return new Vec3(anchor.x, target.getEyeY() + 0.15D, anchor.z);
}
if (horizontalDistanceSqr <= FLYING_APPROACH_TOO_CLOSE_RANGE_SQR) {
anchor = target.position().subtract(forward.scale(2.4D)); anchor = target.position().subtract(forward.scale(2.4D));
} }
return new Vec3(anchor.x, target.getEyeY() + height, anchor.z); return new Vec3(anchor.x, target.getEyeY() + height, anchor.z);
@@ -985,8 +989,12 @@ public class NightmareEntity extends Monster implements GeoEntity {
return false; return false;
} }
private Vec3 getPortalEntryPosition() {
return this.position().add(this.getViewVector(1.0F).multiply(1.6D, 0.0D, 1.6D));
}
@Nullable @Nullable
private Vec3 findPortalExitPos(LivingEntity target) { private Vec3 findPortalExitPos(LivingEntity target, Vec3 entryPos) {
Vec3 forward = target.getLookAngle().multiply(1.0D, 0.0D, 1.0D); Vec3 forward = target.getLookAngle().multiply(1.0D, 0.0D, 1.0D);
if (forward.lengthSqr() < 1.0E-4D) { if (forward.lengthSqr() < 1.0E-4D) {
forward = this.getViewVector(1.0F).multiply(1.0D, 0.0D, 1.0D); forward = this.getViewVector(1.0F).multiply(1.0D, 0.0D, 1.0D);
@@ -1004,7 +1012,9 @@ public class NightmareEntity extends Monster implements GeoEntity {
}; };
for (Vec3 candidate : candidates) { for (Vec3 candidate : candidates) {
Vec3 adjusted = this.findValidPortalPosition(candidate); Vec3 adjusted = this.findValidPortalPosition(candidate);
if (adjusted != null && adjusted.distanceToSqr(this.position()) <= PORTAL_RANGE * PORTAL_RANGE) { if (adjusted != null
&& adjusted.distanceToSqr(this.position()) <= PORTAL_RANGE * PORTAL_RANGE
&& adjusted.distanceToSqr(entryPos) >= PORTAL_ENTRY_EXIT_MIN_RANGE_SQR) {
return adjusted; return adjusted;
} }
} }
@@ -1172,7 +1182,9 @@ public class NightmareEntity extends Monster implements GeoEntity {
case SPECIAL_ROAR -> SPECIAL_ROAR_TRIGGER; case SPECIAL_ROAR -> SPECIAL_ROAR_TRIGGER;
case SPECIAL_ROAR_P2 -> SPECIAL_ROAR_P2_TRIGGER; case SPECIAL_ROAR_P2 -> SPECIAL_ROAR_P2_TRIGGER;
case SPECIAL_PHASE_TWO -> SPECIAL_PHASE_TWO_TRIGGER; case SPECIAL_PHASE_TWO -> SPECIAL_PHASE_TWO_TRIGGER;
case SPECIAL_PORTAL -> SPECIAL_PORTAL_TRIGGER; case SPECIAL_PORTAL_ENTER -> SPECIAL_PORTAL_ENTER_TRIGGER;
case SPECIAL_PORTAL_EXIT -> SPECIAL_PORTAL_EXIT_TRIGGER;
case SPECIAL_DEATH -> "death";
default -> null; default -> null;
}; };
} }
@@ -9,9 +9,7 @@ import net.minecraft.server.level.ServerLevel;
import net.minecraft.world.damagesource.DamageSource; import net.minecraft.world.damagesource.DamageSource;
import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import net.minecraft.world.phys.AABB;
import net.minecraft.world.phys.Vec3; import net.minecraft.world.phys.Vec3;
import software.bernie.geckolib.animatable.GeoEntity; import software.bernie.geckolib.animatable.GeoEntity;
import software.bernie.geckolib.animatable.instance.AnimatableInstanceCache; import software.bernie.geckolib.animatable.instance.AnimatableInstanceCache;
@@ -22,7 +20,6 @@ import software.bernie.geckolib.animation.PlayState;
import software.bernie.geckolib.animation.RawAnimation; import software.bernie.geckolib.animation.RawAnimation;
import software.bernie.geckolib.util.GeckoLibUtil; import software.bernie.geckolib.util.GeckoLibUtil;
import java.util.List;
import java.util.UUID; import java.util.UUID;
public class NightmarePortalEntity extends Entity implements GeoEntity { public class NightmarePortalEntity extends Entity implements GeoEntity {
@@ -103,26 +100,6 @@ public class NightmarePortalEntity extends Entity implements GeoEntity {
this.discard(); this.discard();
return; return;
} }
this.transportEntities();
}
private void transportEntities() {
NightmarePortalEntity other = this.getLinkedPortal();
Vec3 destination = other != null ? other.position() : this.fallbackDestination;
AABB area = this.getBoundingBox().inflate(1.05D, 0.75D, 1.05D);
List<LivingEntity> entities = this.level().getEntitiesOfClass(LivingEntity.class, area, entity -> entity.isAlive() && !entity.isSpectator());
for (LivingEntity entity : entities) {
if (entity.getUUID().equals(this.ownerId)) {
continue;
}
if (entity.isOnPortalCooldown()) {
continue;
}
entity.teleportTo(destination.x, destination.y, destination.z);
entity.setPortalCooldown();
entity.setDeltaMovement(entity.getDeltaMovement().multiply(1.0D, 0.0D, 1.0D));
entity.hurtMarked = true;
}
} }
public void linkTo(NightmarePortalEntity other) { public void linkTo(NightmarePortalEntity other) {
@@ -130,14 +107,6 @@ public class NightmarePortalEntity extends Entity implements GeoEntity {
this.fallbackDestination = other.position(); this.fallbackDestination = other.position();
} }
private NightmarePortalEntity getLinkedPortal() {
if (!(this.level() instanceof ServerLevel serverLevel) || this.linkedPortalId == null) {
return null;
}
Entity entity = serverLevel.getEntity(this.linkedPortalId);
return entity instanceof NightmarePortalEntity portal ? portal : null;
}
public boolean isClosing() { public boolean isClosing() {
return this.getEntityData().get(CLOSING); return this.getEntityData().get(CLOSING);
} }
@@ -156,9 +156,10 @@ public class BigBerthaItem extends SwordItem implements GeoItem {
} }
switch (getMode(stack)) { switch (getMode(stack)) {
case NONE -> applyNoneHit(player, target);
case BASILISK -> applyBasiliskHit(target, serverLevel); case BASILISK -> applyBasiliskHit(target, serverLevel);
case LUCID -> applyLucidHit(target, player, serverLevel); case LUCID -> applyLucidHit(target, player, serverLevel);
case NIGHTMARE -> applyNightmareHit(target, serverLevel); case NIGHTMARE -> applyNightmareHit(player, target, serverLevel);
case KRAKEN -> applyKrakenHit(player, target, serverLevel); case KRAKEN -> applyKrakenHit(player, target, serverLevel);
case HERCULES -> applyHerculesHit(player, target, serverLevel); case HERCULES -> applyHerculesHit(player, target, serverLevel);
case MOLEVORE, TORETERROR -> { case MOLEVORE, TORETERROR -> {
@@ -249,6 +250,22 @@ public class BigBerthaItem extends SwordItem implements GeoItem {
player.awardStat(Stats.ITEM_USED.get(this)); player.awardStat(Stats.ITEM_USED.get(this));
} }
private void applyNoneHit(Player attacker, LivingEntity target) {
double bonusPercent = AntarchySettings.bigBerthaNoneModeDamageBonusPercent();
if (bonusPercent <= 0.0D) {
return;
}
float bonusDamage = (float) (attacker.getAttributeValue(Attributes.ATTACK_DAMAGE) * (bonusPercent / 100.0D));
if (bonusDamage <= 0.0F) {
return;
}
target.invulnerableTime = 0;
target.hurt(attacker.damageSources().playerAttack(attacker), bonusDamage);
target.hurtMarked = true;
}
private void applyBasiliskHit(LivingEntity target, ServerLevel level) { private void applyBasiliskHit(LivingEntity target, ServerLevel level) {
target.addEffect(new MobEffectInstance( target.addEffect(new MobEffectInstance(
MobEffects.POISON, MobEffects.POISON,
@@ -273,7 +290,9 @@ public class BigBerthaItem extends SwordItem implements GeoItem {
true)); true));
} }
level.sendParticles(ParticleTypes.PORTAL, target.getX(), target.getY(0.8D), target.getZ(), 12, 0.25D, 0.25D, 0.25D, 0.08D); Vec3 impactPos = new Vec3(target.getX(), target.getY(0.8D), target.getZ());
LucidBoltEntity.spawnImpactParticles(level, impactPos);
level.sendParticles(ParticleTypes.PORTAL, impactPos.x, impactPos.y, impactPos.z, 12, 0.25D, 0.25D, 0.25D, 0.08D);
if (!AntarchyGravityApi.isGravityInverted(player)) { if (!AntarchyGravityApi.isGravityInverted(player)) {
return; return;
} }
@@ -293,11 +312,22 @@ public class BigBerthaItem extends SwordItem implements GeoItem {
target.hurtMarked = true; target.hurtMarked = true;
} }
private void applyNightmareHit(LivingEntity target, ServerLevel level) { private void applyNightmareHit(Player attacker, LivingEntity target, ServerLevel level) {
if (target instanceof Player) { if (target instanceof Player) {
target.addEffect(new MobEffectInstance(AntarchyObjects.DREAD.get(), AntarchySettings.nightmareDreadTicks(), 0)); target.addEffect(new MobEffectInstance(AntarchyObjects.DREAD.get(), AntarchySettings.nightmareDreadTicks(), 0));
} }
target.addEffect(new MobEffectInstance(MobEffects.WEAKNESS, AntarchySettings.nightmareWeaknessTicks(), 0)); target.addEffect(new MobEffectInstance(MobEffects.WEAKNESS, AntarchySettings.nightmareWeaknessTicks(), 0));
double bonusPercent = AntarchySettings.bigBerthaNightmareDamageBonusPercent();
if (bonusPercent > 0.0D) {
float bonusDamage = (float) (attacker.getAttributeValue(Attributes.ATTACK_DAMAGE) * (bonusPercent / 100.0D));
if (bonusDamage > 0.0F) {
target.invulnerableTime = 0;
target.hurt(attacker.damageSources().playerAttack(attacker), bonusDamage);
target.hurtMarked = true;
}
}
level.sendParticles(ParticleTypes.SOUL_FIRE_FLAME, target.getX(), target.getY(0.8D), target.getZ(), 12, 0.3D, 0.3D, 0.3D, 0.01D); level.sendParticles(ParticleTypes.SOUL_FIRE_FLAME, target.getX(), target.getY(0.8D), target.getZ(), 12, 0.3D, 0.3D, 0.3D, 0.01D);
level.sendParticles(ParticleTypes.SMOKE, target.getX(), target.getY(0.8D), target.getZ(), 6, 0.2D, 0.2D, 0.2D, 0.02D); level.sendParticles(ParticleTypes.SMOKE, target.getX(), target.getY(0.8D), target.getZ(), 6, 0.2D, 0.2D, 0.2D, 0.02D);
} }
@@ -545,7 +575,7 @@ public class BigBerthaItem extends SwordItem implements GeoItem {
private static void setMode(ItemStack stack, BossMode mode) { private static void setMode(ItemStack stack, BossMode mode) {
CustomData.update(DataComponents.CUSTOM_DATA, stack, tag -> { CustomData.update(DataComponents.CUSTOM_DATA, stack, tag -> {
if (mode == BossMode.BASILISK) { if (mode == BossMode.NONE) {
tag.remove(MODE_TAG); tag.remove(MODE_TAG);
} else { } else {
tag.putInt(MODE_TAG, mode.id); tag.putInt(MODE_TAG, mode.id);
@@ -616,7 +646,8 @@ public class BigBerthaItem extends SwordItem implements GeoItem {
} }
private enum BossMode { private enum BossMode {
BASILISK(0, "tooltip.antarchy.big_bertha.mode.basilisk", "message.antarchy.big_bertha.mode.basilisk"), NONE(0, "tooltip.antarchy.big_bertha.mode.none", "message.antarchy.big_bertha.mode.none"),
BASILISK(7, "tooltip.antarchy.big_bertha.mode.basilisk", "message.antarchy.big_bertha.mode.basilisk"),
NIGHTMARE(1, "tooltip.antarchy.big_bertha.mode.nightmare", "message.antarchy.big_bertha.mode.nightmare"), NIGHTMARE(1, "tooltip.antarchy.big_bertha.mode.nightmare", "message.antarchy.big_bertha.mode.nightmare"),
KRAKEN(2, "tooltip.antarchy.big_bertha.mode.kraken", "message.antarchy.big_bertha.mode.kraken"), KRAKEN(2, "tooltip.antarchy.big_bertha.mode.kraken", "message.antarchy.big_bertha.mode.kraken"),
MOLEVORE(3, "tooltip.antarchy.big_bertha.mode.molevore", "message.antarchy.big_bertha.mode.molevore"), MOLEVORE(3, "tooltip.antarchy.big_bertha.mode.molevore", "message.antarchy.big_bertha.mode.molevore"),
@@ -636,13 +667,14 @@ public class BigBerthaItem extends SwordItem implements GeoItem {
private BossMode next() { private BossMode next() {
return switch (this) { return switch (this) {
case NONE -> BASILISK;
case BASILISK -> LUCID; case BASILISK -> LUCID;
case LUCID -> NIGHTMARE; case LUCID -> NIGHTMARE;
case NIGHTMARE -> KRAKEN; case NIGHTMARE -> KRAKEN;
case KRAKEN -> HERCULES; case KRAKEN -> HERCULES;
case HERCULES -> MOLEVORE; case HERCULES -> MOLEVORE;
case MOLEVORE -> TORETERROR; case MOLEVORE -> TORETERROR;
case TORETERROR -> BASILISK; case TORETERROR -> NONE;
}; };
} }
@@ -652,7 +684,7 @@ public class BigBerthaItem extends SwordItem implements GeoItem {
return mode; return mode;
} }
} }
return BASILISK; return NONE;
} }
} }
} }
@@ -7,72 +7,72 @@
"bones": { "bones": {
"left_leg": { "left_leg": {
"rotation": { "rotation": {
"vector": ["5+math.cos(query.anim_time*2)*2", 0, -2.5] "vector": ["5+math.cos(q.anim_time*90*2)*2", 0, -2.5]
}, },
"position": { "position": {
"vector": [0, "0.15+math.cos(query.anim_time*2)/14", "-math.cos(query.anim_time*2)/5"] "vector": [0, "0.15+math.cos(q.anim_time*90*2)/14", "-math.cos(q.anim_time*90*2)/5"]
} }
}, },
"right_leg": { "right_leg": {
"rotation": { "rotation": {
"vector": ["5+math.cos(query.anim_time*2)*2", 0, 2.5] "vector": ["5+math.cos(q.anim_time*90*2)*2", 0, 2.5]
}, },
"position": { "position": {
"vector": [0, "0.15+math.cos(query.anim_time*2)/14", "-math.cos(query.anim_time*2)/5"] "vector": [0, "0.15+math.cos(q.anim_time*90*2)/14", "-math.cos(q.anim_time*90*2)/5"]
} }
}, },
"torso": { "torso": {
"rotation": { "rotation": {
"vector": ["-math.cos(query.anim_time*2-60)", 0, 0] "vector": ["-math.cos(q.anim_time*90*2-60)", 0, 0]
}, },
"position": { "position": {
"vector": [0, "math.cos(query.anim_time*2)/5", 0] "vector": [0, "math.cos(q.anim_time*90*2)/5", 0]
} }
}, },
"head": { "head": {
"rotation": { "rotation": {
"vector": ["-math.cos(query.anim_time*2-160)*2", 0, 0] "vector": ["-math.cos(q.anim_time*90*2-160)*2", 0, 0]
} }
}, },
"left_ear": { "left_ear": {
"rotation": { "rotation": {
"vector": ["math.cos(query.anim_time*2)*6", "math.cos(query.anim_time*2-40)*5", "7.5+math.cos(query.anim_time*2+30)*5"] "vector": ["math.cos(q.anim_time*90*2)*6", "math.cos(q.anim_time*90*2-40)*5", "7.5+math.cos(q.anim_time*90*2+30)*5"]
} }
}, },
"right_ear": { "right_ear": {
"rotation": { "rotation": {
"vector": ["math.cos(query.anim_time*2)*6", "-math.cos(query.anim_time*2-40)*5", "-7.5-math.cos(query.anim_time*2+30)*5"] "vector": ["math.cos(q.anim_time*90*2)*6", "-math.cos(q.anim_time*90*2-40)*5", "-7.5-math.cos(q.anim_time*90*2+30)*5"]
} }
}, },
"tail": { "tail": {
"rotation": { "rotation": {
"vector": ["math.cos(query.anim_time*2+50)*4", 0, 0] "vector": ["math.cos(q.anim_time*90*2+50)*4", 0, 0]
} }
}, },
"left_arm": { "left_arm": {
"rotation": { "rotation": {
"vector": ["math.cos(query.anim_time*2-60)*3-3", 0, -5] "vector": ["math.cos(q.anim_time*90*2-60)*3-3", 0, -5]
}, },
"position": { "position": {
"vector": [0, "-math.cos(query.anim_time*2-30)/4", "-math.cos(query.anim_time*2-50)/5"] "vector": [0, "-math.cos(q.anim_time*90*2-30)/4", "-math.cos(q.anim_time*90*2-50)/5"]
} }
}, },
"right_arm": { "right_arm": {
"rotation": { "rotation": {
"vector": ["math.cos(query.anim_time*2-60)*3-3", 0, 5] "vector": ["math.cos(q.anim_time*90*2-60)*3-3", 0, 5]
}, },
"position": { "position": {
"vector": [0, "-math.cos(query.anim_time*2-30)/4", "-math.cos(query.anim_time*2-50)/5"] "vector": [0, "-math.cos(q.anim_time*90*2-30)/4", "-math.cos(q.anim_time*90*2-50)/5"]
} }
}, },
"left_leg2": { "left_leg2": {
"rotation": { "rotation": {
"vector": ["-5-math.cos(query.anim_time*2)*2", 0, 2.5] "vector": ["-5-math.cos(q.anim_time*90*2)*2", 0, 2.5]
} }
}, },
"right_leg2": { "right_leg2": {
"rotation": { "rotation": {
"vector": ["-5-math.cos(query.anim_time*2)*2", 0, -2.5] "vector": ["-5-math.cos(q.anim_time*90*2)*2", 0, -2.5]
} }
} }
} }
@@ -1478,7 +1478,7 @@
"vector": [0, 0, 0] "vector": [0, 0, 0]
}, },
"0.7917": { "0.7917": {
"vector": ["-math.cos(query.anim_time*32-60)*20", "-math.cos(query.anim_time*32)*20", "math.cos(query.anim_time*32-50)*20"] "vector": ["-math.cos(q.anim_time*90*32-60)*20", "-math.cos(q.anim_time*90*32)*20", "math.cos(q.anim_time*90*32-50)*20"]
}, },
"0.9167": { "0.9167": {
"vector": [0, 0, 0] "vector": [0, 0, 0]
@@ -1491,7 +1491,7 @@
"vector": [0, 0, 0] "vector": [0, 0, 0]
}, },
"0.4583": { "0.4583": {
"vector": ["-math.cos(query.anim_time*32-60)*20", "math.cos(query.anim_time*32)*20", "-math.cos(query.anim_time*32-50)*20"] "vector": ["-math.cos(q.anim_time*90*32-60)*20", "math.cos(q.anim_time*90*32)*20", "-math.cos(q.anim_time*90*32-50)*20"]
}, },
"0.5833": { "0.5833": {
"vector": [0, 0, 0] "vector": [0, 0, 0]
@@ -1500,7 +1500,7 @@
"vector": [0, 0, 0] "vector": [0, 0, 0]
}, },
"1.2917": { "1.2917": {
"vector": ["-math.cos(query.anim_time*32-60)*20", "math.cos(query.anim_time*32)*20", "-math.cos(query.anim_time*32-50)*20"] "vector": ["-math.cos(q.anim_time*90*32-60)*20", "math.cos(q.anim_time*90*32)*20", "-math.cos(q.anim_time*90*32-50)*20"]
}, },
"1.4167": { "1.4167": {
"vector": [0, 0, 0] "vector": [0, 0, 0]
@@ -1547,13 +1547,13 @@
}, },
"1.0": { "1.0": {
"post": { "post": {
"vector": [67.5, "-math.cos(query.anim_time*16)*10", "-17.5+math.cos(query.anim_time*16-60)*10"] "vector": [67.5, "-math.cos(q.anim_time*90*16)*10", "-17.5+math.cos(q.anim_time*90*16-60)*10"]
}, },
"lerp_mode": "catmullrom" "lerp_mode": "catmullrom"
}, },
"1.1667": { "1.1667": {
"post": { "post": {
"vector": [67.5, "-math.cos(query.anim_time*16)*10", "-17.5+math.cos(query.anim_time*16-60)*10"] "vector": [67.5, "-math.cos(q.anim_time*90*16)*10", "-17.5+math.cos(q.anim_time*90*16-60)*10"]
}, },
"lerp_mode": "catmullrom" "lerp_mode": "catmullrom"
}, },
@@ -2145,13 +2145,13 @@
}, },
"0.5": { "0.5": {
"post": { "post": {
"vector": ["85-math.clamp(math.cos(query.anim_time*10-80)*10,0,10)", "math.cos(query.anim_time*8)*20", "math.cos(query.anim_time*8-80)*10"] "vector": [78, 14, 4]
}, },
"lerp_mode": "catmullrom" "lerp_mode": "catmullrom"
}, },
"1.0": { "1.0": {
"post": { "post": {
"vector": ["85-math.clamp(math.cos(query.anim_time*10-80)*10,0,10)", "math.cos(query.anim_time*8)*20", "math.cos(query.anim_time*8-80)*10"] "vector": [78, 14, 4]
}, },
"lerp_mode": "catmullrom" "lerp_mode": "catmullrom"
}, },
@@ -2740,6 +2740,635 @@
} }
} }
} }
},
"item_pickup": {
"animation_length": 3,
"bones": {
"body": {
"rotation": {
"0.0": {
"post": {
"vector": [-65, 0, 0]
},
"lerp_mode": "catmullrom"
},
"0.5": {
"post": {
"vector": [-15, 0, 0]
},
"lerp_mode": "catmullrom"
},
"1.0": {
"post": {
"vector": [-65, 0, 0]
},
"lerp_mode": "catmullrom"
}
}
},
"left_arm": {
"rotation": {
"0.25": {
"pre": {
"vector": [0, 0, 0]
},
"post": {
"vector": [0, 0, 0]
},
"lerp_mode": "catmullrom"
},
"0.5": {
"post": {
"vector": [0, 0, 22.5]
},
"lerp_mode": "catmullrom"
},
"0.75": {
"post": {
"vector": [0, 0, 22.5]
},
"lerp_mode": "catmullrom"
},
"1.0": {
"post": {
"vector": [0, 0, 22.5]
},
"lerp_mode": "catmullrom"
},
"1.25": {
"post": {
"vector": [-44.8924, 3.2116, 26.3342]
},
"lerp_mode": "catmullrom"
},
"1.375": {
"post": {
"vector": [-49.8924, 3.2116, 26.3342]
},
"lerp_mode": "catmullrom"
},
"1.5": {
"post": {
"vector": [-42.3924, 3.2116, 26.3342]
},
"lerp_mode": "catmullrom"
},
"1.625": {
"post": {
"vector": [-44.8924, 3.2116, 26.3342]
},
"lerp_mode": "catmullrom"
},
"1.75": {
"post": {
"vector": [-49.8924, 3.2116, 26.3342]
},
"lerp_mode": "catmullrom"
},
"1.875": {
"post": {
"vector": [-42.3924, 3.2116, 26.3342]
},
"lerp_mode": "catmullrom"
},
"2.0": {
"post": {
"vector": [-44.8924, 3.2116, 26.3342]
},
"lerp_mode": "catmullrom"
},
"2.25": {
"post": {
"vector": [0, 0, 0]
},
"lerp_mode": "catmullrom"
}
},
"position": {
"0.25": {
"pre": {
"vector": [0, 0, 0]
},
"post": {
"vector": [0, 0, 0]
},
"lerp_mode": "catmullrom"
}
}
},
"tail": {
"rotation": {
"0.0": {
"post": {
"vector": [42.5, 0, 0]
},
"lerp_mode": "catmullrom"
}
}
},
"head": {
"rotation": {
"0.0": {
"post": {
"vector": [60, 0, 0]
},
"lerp_mode": "catmullrom"
}
},
"position": {
"0.0": {
"post": {
"vector": [0, -1.0425, -1.31366]
},
"lerp_mode": "catmullrom"
}
}
},
"left_flying_part": {
"scale": {
"0.0": {
"post": {
"vector": [0, 0, 0]
},
"lerp_mode": "catmullrom"
}
}
},
"right_arm": {
"rotation": {
"0.25": {
"pre": {
"vector": [0, 0, 0]
},
"post": {
"vector": [0, 0, 0]
},
"lerp_mode": "catmullrom"
},
"0.5": {
"post": {
"vector": [0, 0, -22.5]
},
"lerp_mode": "catmullrom"
},
"0.75": {
"post": {
"vector": [0, 0, -22.5]
},
"lerp_mode": "catmullrom"
},
"1.0": {
"post": {
"vector": [0, 0, -22.5]
},
"lerp_mode": "catmullrom"
},
"1.25": {
"post": {
"vector": [-44.8924, -3.2116, -26.3342]
},
"lerp_mode": "catmullrom"
},
"1.375": {
"post": {
"vector": [-49.8924, -3.2116, -26.3342]
},
"lerp_mode": "catmullrom"
},
"1.5": {
"post": {
"vector": [-42.3924, -3.2116, -26.3342]
},
"lerp_mode": "catmullrom"
},
"1.625": {
"post": {
"vector": [-44.8924, -3.2116, -26.3342]
},
"lerp_mode": "catmullrom"
},
"1.75": {
"post": {
"vector": [-49.8924, -3.2116, -26.3342]
},
"lerp_mode": "catmullrom"
},
"1.875": {
"post": {
"vector": [-42.3924, -3.2116, -26.3342]
},
"lerp_mode": "catmullrom"
},
"2.0": {
"post": {
"vector": [-44.8924, -3.2116, -26.3342]
},
"lerp_mode": "catmullrom"
},
"2.25": {
"post": {
"vector": [0, 0, 0]
},
"lerp_mode": "catmullrom"
}
},
"position": {
"0.25": {
"pre": {
"vector": [0, 0, 0]
},
"post": {
"vector": [0, 0, 0]
},
"lerp_mode": "catmullrom"
}
}
},
"right_flying_part": {
"scale": {
"0.0": {
"post": {
"vector": [0, 0, 0]
},
"lerp_mode": "catmullrom"
}
}
},
"left_cheeks": {
"scale": {
"0.0": {
"post": {
"vector": [0, 0, 0]
},
"lerp_mode": "catmullrom"
},
"1.25": {
"post": {
"vector": [0, 0, 0]
},
"lerp_mode": "catmullrom"
},
"2.125": {
"post": {
"vector": [1, 1, 1]
},
"lerp_mode": "catmullrom"
}
}
},
"right_cheeks": {
"scale": {
"0.0": {
"post": {
"vector": [0, 0, 0]
},
"lerp_mode": "catmullrom"
},
"1.25": {
"post": {
"vector": [0, 0, 0]
},
"lerp_mode": "catmullrom"
},
"2.125": {
"post": {
"vector": [1, 1, 1]
},
"lerp_mode": "catmullrom"
}
}
}
}
},
"climbing": {
"loop": true,
"animation_length": 1,
"bones": {
"left_leg": {
"rotation": {
"0.25": {
"pre": {
"vector": [108.1133, 33.6443, 10.272]
},
"post": {
"vector": [108.1133, 33.6443, 10.272]
},
"lerp_mode": "catmullrom"
},
"0.5": {
"post": {
"vector": [118.1133, 33.6443, 10.272]
},
"lerp_mode": "catmullrom"
},
"0.75": {
"post": {
"vector": [108.1133, 33.6443, 10.272]
},
"lerp_mode": "catmullrom"
},
"1.0": {
"post": {
"vector": [108.1133, 33.6443, 10.272]
},
"lerp_mode": "catmullrom"
}
},
"position": {
"0.25": {
"pre": {
"vector": [0, 0, 0]
},
"post": {
"vector": [0, 0, 0]
},
"lerp_mode": "catmullrom"
},
"0.5": {
"post": {
"vector": [0, -1, -2]
},
"lerp_mode": "catmullrom"
},
"0.75": {
"post": {
"vector": [0, 0, 0]
},
"lerp_mode": "catmullrom"
},
"1.0": {
"post": {
"vector": [0, 0, 0]
},
"lerp_mode": "catmullrom"
}
}
},
"right_leg": {
"rotation": {
"0.0": {
"post": {
"vector": [108.1133, -33.6443, -10.272]
},
"lerp_mode": "catmullrom"
},
"0.25": {
"post": {
"vector": [118.1133, -33.6443, -10.272]
},
"lerp_mode": "catmullrom"
},
"0.5": {
"post": {
"vector": [108.1133, -33.6443, -10.272]
},
"lerp_mode": "catmullrom"
},
"0.75": {
"post": {
"vector": [108.1133, -33.6443, -10.272]
},
"lerp_mode": "catmullrom"
}
},
"position": {
"0.0": {
"post": {
"vector": [0, 0, 0]
},
"lerp_mode": "catmullrom"
},
"0.25": {
"post": {
"vector": [0, -1, -2]
},
"lerp_mode": "catmullrom"
},
"0.5": {
"post": {
"vector": [0, 0, 0]
},
"lerp_mode": "catmullrom"
},
"0.75": {
"post": {
"vector": [0, 0, 0]
},
"lerp_mode": "catmullrom"
}
}
},
"head": {
"rotation": {
"0.0": {
"post": {
"vector": [0, 0, 0]
},
"lerp_mode": "catmullrom"
},
"0.25": {
"post": {
"vector": [-5, 0, 0]
},
"lerp_mode": "catmullrom"
},
"0.5": {
"post": {
"vector": [0, 0, 0]
},
"lerp_mode": "catmullrom"
},
"0.75": {
"post": {
"vector": [-5, 0, 0]
},
"lerp_mode": "catmullrom"
},
"1.0": {
"post": {
"vector": [0, 0, 0]
},
"lerp_mode": "catmullrom"
}
}
},
"left_cheeks": {
"scale": {
"vector": [0, 0, 0]
}
},
"right_cheeks": {
"scale": {
"vector": [0, 0, 0]
}
},
"tail": {
"rotation": {
"0.0": {
"post": {
"vector": [0, 0, 0]
},
"lerp_mode": "catmullrom"
},
"0.25": {
"post": {
"vector": [-5, 0, 0]
},
"lerp_mode": "catmullrom"
},
"0.5": {
"post": {
"vector": [0, 0, 0]
},
"lerp_mode": "catmullrom"
},
"0.75": {
"post": {
"vector": [-5, 0, 0]
},
"lerp_mode": "catmullrom"
},
"1.0": {
"post": {
"vector": [0, 0, 0]
},
"lerp_mode": "catmullrom"
}
}
},
"left_arm": {
"rotation": {
"0.0": {
"post": {
"vector": [-90, 0, 0]
},
"lerp_mode": "catmullrom"
},
"0.25": {
"post": {
"vector": [-110, 0, 0]
},
"lerp_mode": "catmullrom"
},
"0.5": {
"post": {
"vector": [-90, 0, 0]
},
"lerp_mode": "catmullrom"
},
"0.75": {
"post": {
"vector": [-90, 0, 0]
},
"lerp_mode": "catmullrom"
}
},
"position": {
"0.0": {
"post": {
"vector": [0, -2, 0]
},
"lerp_mode": "catmullrom"
},
"0.25": {
"post": {
"vector": [0, -1.06031, 0.34202]
},
"lerp_mode": "catmullrom"
},
"0.5": {
"post": {
"vector": [0, -2.06, -0.66]
},
"lerp_mode": "catmullrom"
},
"0.75": {
"post": {
"vector": [0, -2, 0]
},
"lerp_mode": "catmullrom"
}
}
},
"left_flying_part": {
"scale": {
"vector": [0, 0, 0]
}
},
"right_arm": {
"rotation": {
"0.25": {
"pre": {
"vector": [-90, 0, 0]
},
"post": {
"vector": [-90, 0, 0]
},
"lerp_mode": "catmullrom"
},
"0.5": {
"post": {
"vector": [-110, 0, 0]
},
"lerp_mode": "catmullrom"
},
"0.75": {
"post": {
"vector": [-90, 0, 0]
},
"lerp_mode": "catmullrom"
},
"1.0": {
"post": {
"vector": [-90, 0, 0]
},
"lerp_mode": "catmullrom"
}
},
"position": {
"0.25": {
"pre": {
"vector": [0, -2, 0]
},
"post": {
"vector": [0, -2, 0]
},
"lerp_mode": "catmullrom"
},
"0.5": {
"post": {
"vector": [0, -1.06031, 0.34202]
},
"lerp_mode": "catmullrom"
},
"0.75": {
"post": {
"vector": [0, -2.06, -0.66]
},
"lerp_mode": "catmullrom"
},
"1.0": {
"post": {
"vector": [0, -2, 0]
},
"lerp_mode": "catmullrom"
}
}
},
"right_flying_part": {
"scale": {
"vector": [0, 0, 0]
}
},
"squirrel": {
"rotation": {
"vector": [-90, 0, 0]
},
"position": {
"vector": [0, 6.75, 7]
}
}
}
} }
} }
} }
@@ -7984,7 +7984,7 @@
}, },
"0.2917": { "0.2917": {
"post": { "post": {
"vector": [0, "-1+math.cos(query.anim_time*32)*2", 6] "vector": [0, "-1+math.cos(q.anim_time*90*32)*2", 6]
}, },
"lerp_mode": "catmullrom" "lerp_mode": "catmullrom"
}, },
@@ -8014,7 +8014,7 @@
}, },
"0.7917": { "0.7917": {
"post": { "post": {
"vector": [0, "-1+math.cos(query.anim_time*32)*2", 6] "vector": [0, "-1+math.cos(q.anim_time*90*32)*2", 6]
}, },
"lerp_mode": "catmullrom" "lerp_mode": "catmullrom"
}, },
@@ -8044,7 +8044,7 @@
}, },
"1.2917": { "1.2917": {
"post": { "post": {
"vector": [0, "-1+math.cos(query.anim_time*32)*2", 6] "vector": [0, "-1+math.cos(q.anim_time*90*32)*2", 6]
}, },
"lerp_mode": "catmullrom" "lerp_mode": "catmullrom"
}, },
@@ -9176,13 +9176,13 @@
}, },
"1.6667": { "1.6667": {
"post": { "post": {
"vector": ["35-math.cos(query.anim_time*32-50)*5", 0, 0] "vector": ["35-math.cos(q.anim_time*90*32-50)*5", 0, 0]
}, },
"lerp_mode": "catmullrom" "lerp_mode": "catmullrom"
}, },
"1.875": { "1.875": {
"post": { "post": {
"vector": ["35-math.cos(query.anim_time*32-50)*5", 0, 0] "vector": ["35-math.cos(q.anim_time*90*32-50)*5", 0, 0]
}, },
"lerp_mode": "catmullrom" "lerp_mode": "catmullrom"
}, },
@@ -11470,6 +11470,470 @@
} }
} }
} }
},
"death": {
"animation_length": 1,
"bones": {
"head": {
"rotation": {
"0.0": {
"post": {
"vector": [22.5, 0, 0]
},
"lerp_mode": "catmullrom"
},
"0.1667": {
"post": {
"vector": [-55, 0, 0]
},
"lerp_mode": "catmullrom"
},
"0.4167": {
"post": {
"vector": [7.5, 0, 0]
},
"lerp_mode": "catmullrom"
},
"0.5417": {
"post": {
"vector": [7.15656, 2.24944, -17.35932]
},
"lerp_mode": "catmullrom"
}
}
},
"neck": {
"rotation": {
"0.0": {
"post": {
"vector": [15, 0, 0]
},
"lerp_mode": "catmullrom"
},
"0.1667": {
"post": {
"vector": [-40, 0, 0]
},
"lerp_mode": "catmullrom"
},
"0.4167": {
"post": {
"vector": [2.5, 0, 0]
},
"lerp_mode": "catmullrom"
},
"0.5417": {
"post": {
"vector": [22.01816, 4.75113, -11.57518]
},
"lerp_mode": "catmullrom"
}
}
},
"torso": {
"rotation": {
"0.0": {
"post": {
"vector": [-27.5, 0, 0]
},
"lerp_mode": "catmullrom"
},
"0.1667": {
"vector": [-90, 0, 0]
},
"0.4167": {
"vector": [-65, 0, 0]
},
"0.5417": {
"vector": [0, 0, 0]
}
},
"position": {
"0.0": {
"post": {
"vector": [0, 0, 0]
},
"lerp_mode": "catmullrom"
}
}
},
"L_Tight": {
"rotation": {
"0.0": {
"post": {
"vector": [-27.5, -20, 0]
},
"lerp_mode": "catmullrom"
},
"0.1667": {
"post": {
"vector": [-27.5, -37.5, 0]
},
"lerp_mode": "catmullrom"
},
"0.4167": {
"post": {
"vector": [-27.5, -37.5, 0]
},
"lerp_mode": "catmullrom"
},
"0.5417": {
"post": {
"vector": [55.06424, 30.58184, -17.91705]
},
"lerp_mode": "catmullrom"
}
}
},
"L_leg": {
"rotation": {
"0.0": {
"post": {
"vector": [27.5, 0, 0]
},
"lerp_mode": "catmullrom"
}
}
},
"Tail": {
"rotation": {
"0.0": {
"post": {
"vector": [20, 0, 0]
},
"lerp_mode": "catmullrom"
},
"0.1667": {
"post": {
"vector": [37.5, 0, -52.5]
},
"lerp_mode": "catmullrom"
},
"0.4167": {
"post": {
"vector": [37.5, 0, 0]
},
"lerp_mode": "catmullrom"
},
"0.5417": {
"post": {
"vector": [-25, 0, 0]
},
"lerp_mode": "catmullrom"
}
}
},
"Tail2": {
"rotation": {
"0.0": {
"post": {
"vector": [20, 0, 0]
},
"lerp_mode": "catmullrom"
},
"0.1667": {
"post": {
"vector": [36.39498, -17.72091, -24.60981]
},
"lerp_mode": "catmullrom"
},
"0.4167": {
"post": {
"vector": [32.5, 0, 0]
},
"lerp_mode": "catmullrom"
},
"0.5417": {
"post": {
"vector": [0, 0, 0]
},
"lerp_mode": "catmullrom"
}
}
},
"Tail3": {
"rotation": {
"0.0": {
"post": {
"vector": [20, 0, 0]
},
"lerp_mode": "catmullrom"
},
"0.1667": {
"post": {
"vector": [53.55239, -54.46865, -30.64234]
},
"lerp_mode": "catmullrom"
},
"0.4167": {
"post": {
"vector": [37.5, 0, 0]
},
"lerp_mode": "catmullrom"
},
"0.5417": {
"post": {
"vector": [17.5, 0, 0]
},
"lerp_mode": "catmullrom"
}
}
},
"R_Tight": {
"rotation": {
"0.0": {
"post": {
"vector": [-27.5, 20, 0]
},
"lerp_mode": "catmullrom"
},
"0.1667": {
"post": {
"vector": [-80, 20, 0]
},
"lerp_mode": "catmullrom"
},
"0.4167": {
"post": {
"vector": [-80, 20, 0]
},
"lerp_mode": "catmullrom"
},
"0.5417": {
"post": {
"vector": [44.19476, -22.13991, 4.11405]
},
"lerp_mode": "catmullrom"
}
}
},
"R_leg": {
"rotation": {
"0.0": {
"post": {
"vector": [27.5, 0, 0]
},
"lerp_mode": "catmullrom"
},
"0.1667": {
"post": {
"vector": [62.5, 0, 0]
},
"lerp_mode": "catmullrom"
},
"0.4167": {
"post": {
"vector": [62.5, 0, 0]
},
"lerp_mode": "catmullrom"
}
}
},
"R_foot": {
"rotation": {
"0.0": {
"vector": [0, 0, 0]
},
"0.1667": {
"vector": [40, 0, 0]
},
"0.4167": {
"vector": [40, 0, 0]
}
}
},
"L_Wing": {
"rotation": {
"0.0": {
"post": {
"vector": [-2.56152, 6.42053, -28.46504]
},
"lerp_mode": "catmullrom"
},
"0.5417": {
"post": {
"vector": [-2.56152, 6.42053, 16.53496]
},
"lerp_mode": "catmullrom"
}
}
},
"L_Wing2": {
"rotation": {
"0.0": {
"post": {
"vector": [0, -17.5, 7.5]
},
"lerp_mode": "catmullrom"
},
"0.1667": {
"post": {
"vector": [16.24074, -6.60796, -60.94387]
},
"lerp_mode": "catmullrom"
},
"0.4167": {
"post": {
"vector": [2.14498, 17.78381, 79.71688]
},
"lerp_mode": "catmullrom"
},
"0.5417": {
"post": {
"vector": [-5.14352, -8.08642, 3.86612]
},
"lerp_mode": "catmullrom"
}
}
},
"L_Wing3": {
"rotation": {
"0.0": {
"post": {
"vector": [-6.15491, -16.41371, 35.88852]
},
"lerp_mode": "catmullrom"
},
"0.4167": {
"post": {
"vector": [16.63598, -5.01987, 94.75926]
},
"lerp_mode": "catmullrom"
},
"0.5417": {
"post": {
"vector": [-2.83416, 4.94206, -18.16209]
},
"lerp_mode": "catmullrom"
}
}
},
"R_Wing": {
"rotation": {
"0.0": {
"post": {
"vector": [-2.56152, -6.42053, 28.46504]
},
"lerp_mode": "catmullrom"
},
"0.5417": {
"post": {
"vector": [-2.56152, -6.42053, -16.53496]
},
"lerp_mode": "catmullrom"
}
}
},
"R_Wing2": {
"rotation": {
"0.0": {
"post": {
"vector": [0, 17.5, -7.5]
},
"lerp_mode": "catmullrom"
},
"0.1667": {
"post": {
"vector": [16.24074, 6.60796, 60.94387]
},
"lerp_mode": "catmullrom"
},
"0.4167": {
"post": {
"vector": [2.14498, -17.78381, -79.71688]
},
"lerp_mode": "catmullrom"
},
"0.5417": {
"post": {
"vector": [-5.14352, 8.08642, -3.86612]
},
"lerp_mode": "catmullrom"
}
}
},
"R_Wing3": {
"rotation": {
"0.0": {
"post": {
"vector": [-6.15491, 16.41371, -35.88852]
},
"lerp_mode": "catmullrom"
},
"0.4167": {
"post": {
"vector": [16.63598, 5.01987, -94.75926]
},
"lerp_mode": "catmullrom"
},
"0.5417": {
"post": {
"vector": [-2.83416, -4.94206, 18.16209]
},
"lerp_mode": "catmullrom"
}
}
},
"jaw": {
"rotation": {
"0.0": {
"post": {
"vector": [12.5, 0, 0]
},
"lerp_mode": "catmullrom"
},
"0.1667": {
"post": {
"vector": [45, 0, 0]
},
"lerp_mode": "catmullrom"
},
"0.4583": {
"post": {
"vector": [43.931, 4.14085, 0.75952]
},
"lerp_mode": "catmullrom"
},
"0.5417": {
"post": {
"vector": [10, 0, 0]
},
"lerp_mode": "catmullrom"
}
}
},
"Nightmare": {
"rotation": {
"vector": [0, 0, 0]
},
"position": {
"0.0": {
"post": {
"vector": [0, -0.5, -6]
},
"lerp_mode": "catmullrom"
},
"0.1667": {
"post": {
"vector": [0, -0.5, -2]
},
"lerp_mode": "catmullrom"
},
"0.5417": {
"post": {
"vector": [0, -10.5, -21]
},
"lerp_mode": "catmullrom"
},
"0.5833": {
"post": {
"vector": [0, -8.5, -21]
},
"lerp_mode": "catmullrom"
}
}
}
}
} }
} }
} }
@@ -13,37 +13,56 @@
"bones": [ "bones": [
{ {
"name": "squirrel", "name": "squirrel",
"pivot": [0, 1, 0] "pivot": [0, 0, 0]
},
{
"name": "body",
"parent": "squirrel",
"pivot": [0, 6, 0]
}, },
{ {
"name": "left_leg", "name": "left_leg",
"parent": "squirrel", "parent": "body",
"pivot": [3, 5, 3.25], "pivot": [3, 5, 3.25],
"cubes": [ "cubes": [
{"origin": [2, 0, 1.25], "size": [2, 5, 4], "uv": [0, 30]}, {"origin": [2, 0, 1.25], "size": [2, 5, 4], "uv": [0, 30]}
]
},
{
"name": "left_leg2",
"parent": "left_leg",
"pivot": [3, 0, 1.25],
"cubes": [
{"origin": [2, 0, -0.75], "size": [2, 1, 2], "uv": [35, 8]} {"origin": [2, 0, -0.75], "size": [2, 1, 2], "uv": [35, 8]}
] ]
}, },
{ {
"name": "right_leg", "name": "right_leg",
"parent": "squirrel", "parent": "body",
"pivot": [-3, 5, 3.25], "pivot": [-3, 5, 3.25],
"cubes": [ "cubes": [
{"origin": [-4, 0, 1.25], "size": [2, 5, 4], "uv": [0, 30], "mirror": true}, {"origin": [-4, 0, 1.25], "size": [2, 5, 4], "uv": [0, 30], "mirror": true}
]
},
{
"name": "right_leg2",
"parent": "right_leg",
"pivot": [-3, 0, 1.25],
"cubes": [
{"origin": [-4, 0, -0.75], "size": [2, 1, 2], "uv": [35, 8], "mirror": true} {"origin": [-4, 0, -0.75], "size": [2, 1, 2], "uv": [35, 8], "mirror": true}
] ]
}, },
{ {
"name": "body", "name": "torso",
"parent": "squirrel", "parent": "body",
"pivot": [0, 4, 2], "pivot": [0, 4, 3],
"cubes": [ "cubes": [
{"origin": [0, 8.5, -6], "size": [0, 3, 11], "uv": [23, 30]} {"origin": [0, 8.5, -6], "size": [0, 3, 11], "uv": [23, 30]}
] ]
}, },
{ {
"name": "body_2", "name": "body_2",
"parent": "body", "parent": "torso",
"pivot": [0, 6, -0.5], "pivot": [0, 6, -0.5],
"cubes": [ "cubes": [
{"origin": [-3, 3.5, -6], "size": [6, 5, 11], "uv": [0, 0]}, {"origin": [-3, 3.5, -6], "size": [6, 5, 11], "uv": [0, 0]},
@@ -52,7 +71,7 @@
}, },
{ {
"name": "head", "name": "head",
"parent": "body", "parent": "torso",
"pivot": [0, 7.33333, -5.91667], "pivot": [0, 7.33333, -5.91667],
"cubes": [ "cubes": [
{"origin": [-2, 4.5, -11], "size": [4, 5, 5], "uv": [17, 17]}, {"origin": [-2, 4.5, -11], "size": [4, 5, 5], "uv": [17, 17]},
@@ -78,7 +97,7 @@
{ {
"name": "left_ear", "name": "left_ear",
"parent": "head", "parent": "head",
"pivot": [1, 9.5, -6.5], "pivot": [1, 9.5, -7],
"cubes": [ "cubes": [
{"origin": [1, 9.5, -7], "size": [2, 2, 0], "uv": [36, 13]} {"origin": [1, 9.5, -7], "size": [2, 2, 0], "uv": [36, 13]}
] ]
@@ -86,14 +105,14 @@
{ {
"name": "right_ear", "name": "right_ear",
"parent": "head", "parent": "head",
"pivot": [-1, 9.5, -6.5], "pivot": [-1, 9.5, -7],
"cubes": [ "cubes": [
{"origin": [-3, 9.5, -7], "size": [2, 2, 0], "uv": [36, 13], "mirror": true} {"origin": [-3, 9.5, -7], "size": [2, 2, 0], "uv": [36, 13], "mirror": true}
] ]
}, },
{ {
"name": "tail", "name": "tail",
"parent": "body", "parent": "torso",
"pivot": [0, 6, 5], "pivot": [0, 6, 5],
"cubes": [ "cubes": [
{"origin": [-1.5, 5, 5], "size": [3, 11, 3], "uv": [14, 27]}, {"origin": [-1.5, 5, 5], "size": [3, 11, 3], "uv": [14, 27]},
@@ -103,7 +122,7 @@
}, },
{ {
"name": "left_arm", "name": "left_arm",
"parent": "body", "parent": "torso",
"pivot": [3, 5, -4.5], "pivot": [3, 5, -4.5],
"cubes": [ "cubes": [
{"origin": [2, 0, -5.5], "size": [2, 5, 2], "uv": [35, 0]} {"origin": [2, 0, -5.5], "size": [2, 5, 2], "uv": [35, 0]}
@@ -112,14 +131,14 @@
{ {
"name": "left_flying_part", "name": "left_flying_part",
"parent": "left_arm", "parent": "left_arm",
"pivot": [3, 5, -1], "pivot": [3, 1, -3.5],
"cubes": [ "cubes": [
{"origin": [3, 0, -3.5], "size": [0, 5, 5], "inflate": 0.01, "uv": [26, 22]} {"origin": [3, 0, -3.5], "size": [0, 5, 5], "inflate": 0.01, "uv": [26, 22]}
] ]
}, },
{ {
"name": "right_arm", "name": "right_arm",
"parent": "body", "parent": "torso",
"pivot": [-3, 5, -4.5], "pivot": [-3, 5, -4.5],
"cubes": [ "cubes": [
{"origin": [-4, 0, -5.5], "size": [2, 5, 2], "uv": [35, 0], "mirror": true} {"origin": [-4, 0, -5.5], "size": [2, 5, 2], "uv": [35, 0], "mirror": true}
@@ -128,7 +147,7 @@
{ {
"name": "right_flying_part", "name": "right_flying_part",
"parent": "right_arm", "parent": "right_arm",
"pivot": [-3, 5, -1], "pivot": [-3, 1, -3.5],
"cubes": [ "cubes": [
{"origin": [-3, 0, -3.5], "size": [0, 5, 5], "inflate": 0.01, "uv": [26, 22], "mirror": true} {"origin": [-3, 0, -3.5], "size": [0, 5, 5], "inflate": 0.01, "uv": [26, 22], "mirror": true}
] ]
@@ -554,6 +554,7 @@
"death.attack.jumpy_bug_jump": "%1$s was jumped by Jumpy Bug", "death.attack.jumpy_bug_jump": "%1$s was jumped by Jumpy Bug",
"death.attack.hercules_beetle_obliteration": "%1$s was obliterated by Hercules Beetle", "death.attack.hercules_beetle_obliteration": "%1$s was obliterated by Hercules Beetle",
"message.antarchy.big_bertha.mode": "Big Bertha Mode: %s", "message.antarchy.big_bertha.mode": "Big Bertha Mode: %s",
"message.antarchy.big_bertha.mode.none": "None",
"message.antarchy.big_bertha.mode.basilisk": "Basilisk", "message.antarchy.big_bertha.mode.basilisk": "Basilisk",
"message.antarchy.big_bertha.mode.lucid": "Lucid", "message.antarchy.big_bertha.mode.lucid": "Lucid",
"message.antarchy.big_bertha.mode.nightmare": "Nightmare", "message.antarchy.big_bertha.mode.nightmare": "Nightmare",
@@ -591,9 +592,10 @@
"potion.antarchy.strong_haste": "Strong Haste Potion", "potion.antarchy.strong_haste": "Strong Haste Potion",
"tooltip.antarchy.big_bertha.mode": "Mode: %s", "tooltip.antarchy.big_bertha.mode": "Mode: %s",
"tooltip.antarchy.big_bertha.toggle_mode": "Shift + use to cycle boss modes.", "tooltip.antarchy.big_bertha.toggle_mode": "Shift + use to cycle boss modes.",
"tooltip.antarchy.big_bertha.mode.none": "Hits deal a small amount of bonus damage.",
"tooltip.antarchy.big_bertha.mode.basilisk": "Usage paralyzes a target. Hits inflict poison and slow.", "tooltip.antarchy.big_bertha.mode.basilisk": "Usage paralyzes a target. Hits inflict poison and slow.",
"tooltip.antarchy.big_bertha.mode.lucid": "Hits invert targets for a few seconds. Hits deal more damage while you are inverted.", "tooltip.antarchy.big_bertha.mode.lucid": "Hits invert targets for a few seconds. Hits deal more damage while you are inverted.",
"tooltip.antarchy.big_bertha.mode.nightmare": "Players suffer Dread; hits inflict weakness.", "tooltip.antarchy.big_bertha.mode.nightmare": "Hits deal bonus damage; players suffer Dread and hits inflict weakness.",
"tooltip.antarchy.big_bertha.mode.kraken": "Hits slam targets back and call lightning.", "tooltip.antarchy.big_bertha.mode.kraken": "Hits slam targets back and call lightning.",
"tooltip.antarchy.big_bertha.mode.hercules": "Hits deal bonus damage and launch targets high into the air.", "tooltip.antarchy.big_bertha.mode.hercules": "Hits deal bonus damage and launch targets high into the air.",
"tooltip.antarchy.big_bertha.mode.molevore": "Use to spin forward and drill through Molevore blocks.", "tooltip.antarchy.big_bertha.mode.molevore": "Use to spin forward and drill through Molevore blocks.",
@@ -1044,6 +1046,8 @@
"music.antarchy.lucid_lullaby.credit": "hewo_", "music.antarchy.lucid_lullaby.credit": "hewo_",
"music.antarchy.venenatus": "Venenatus", "music.antarchy.venenatus": "Venenatus",
"music.antarchy.venenatus.credit": "hewo_", "music.antarchy.venenatus.credit": "hewo_",
"music.antarchy.wistful_wanderings": "Wistful Wanderings",
"music.antarchy.wistful_wanderings.credit": "hewo_",
"tooltip.antarchy.lucid_anchor.pyramid": "Requires an Antimetal Beacon pyramid above it", "tooltip.antarchy.lucid_anchor.pyramid": "Requires an Antimetal Beacon pyramid above it",
"tooltip.antarchy.lucid_anchor.path": "Projects Inverted downward while it has an unobstructed path to the world below" "tooltip.antarchy.lucid_anchor.path": "Projects Inverted downward while it has an unobstructed path to the world below"
} }
@@ -924,6 +924,14 @@
} }
] ]
}, },
"music.game.thoraxis": {
"sounds": [
{
"name": "antarchy:lucid_lullaby",
"stream": true
}
]
},
"venenatus": { "venenatus": {
"sounds": [ "sounds": [
{ {
@@ -932,6 +940,30 @@
} }
] ]
}, },
"music.game.cavaryn": {
"sounds": [
{
"name": "antarchy:venenatus",
"stream": true
}
]
},
"wistful_wanderings": {
"sounds": [
{
"name": "antarchy:music/game/elythia/wistful_wanderings",
"stream": true
}
]
},
"music.game.elythia": {
"sounds": [
{
"name": "antarchy:wistful_wanderings",
"stream": true
}
]
},
"lucid_ambient": { "lucid_ambient": {
"subtitle": "subtitles.antarchy.lucid_ambient", "subtitle": "subtitles.antarchy.lucid_ambient",
"sounds": [ "sounds": [
@@ -0,0 +1,13 @@
{
"replace": false,
"values": [
"antarchy:uranium_ore",
"antarchy:deepslate_uranium_ore",
"antarchy:broodstone_uranium_ore",
"antarchy:titanium_ore",
"antarchy:deepslate_titanium_ore",
"antarchy:broodstone_titanium_ore",
"antarchy:uranium_block",
"antarchy:titanium_block"
]
}
@@ -23,7 +23,7 @@
} }
}, },
"music": { "music": {
"sound": "antarchy:venenatus", "sound": "antarchy:music.game.cavaryn",
"min_delay": 12000, "min_delay": 12000,
"max_delay": 24000, "max_delay": 24000,
"replace_current_music": true "replace_current_music": true
@@ -22,7 +22,7 @@
} }
}, },
"music": { "music": {
"sound": "antarchy:venenatus", "sound": "antarchy:music.game.cavaryn",
"min_delay": 12000, "min_delay": 12000,
"max_delay": 24000, "max_delay": 24000,
"replace_current_music": true "replace_current_music": true
@@ -15,6 +15,12 @@
"tick_delay": 8000, "tick_delay": 8000,
"block_search_extent": 8, "block_search_extent": 8,
"offset": 2.0 "offset": 2.0
},
"music": {
"sound": "antarchy:music.game.elythia",
"min_delay": 12000,
"max_delay": 24000,
"replace_current_music": true
} }
}, },
"spawn_costs": { "spawn_costs": {
@@ -22,7 +22,7 @@
} }
}, },
"music": { "music": {
"sound": "antarchy:venenatus", "sound": "antarchy:music.game.cavaryn",
"min_delay": 12000, "min_delay": 12000,
"max_delay": 24000, "max_delay": 24000,
"replace_current_music": true "replace_current_music": true
@@ -17,7 +17,7 @@
} }
}, },
"music": { "music": {
"sound": "antarchy:venenatus", "sound": "antarchy:music.game.cavaryn",
"min_delay": 12000, "min_delay": 12000,
"max_delay": 24000, "max_delay": 24000,
"replace_current_music": true "replace_current_music": true
@@ -25,7 +25,7 @@
"offset": 2.0 "offset": 2.0
}, },
"music": { "music": {
"sound": "antarchy:lucid_lullaby", "sound": "antarchy:music.game.thoraxis",
"min_delay": 12000, "min_delay": 12000,
"max_delay": 24000, "max_delay": 24000,
"replace_current_music": true "replace_current_music": true
@@ -17,7 +17,7 @@
"offset": 2.0 "offset": 2.0
}, },
"music": { "music": {
"sound": "minecraft:music.game", "sound": "antarchy:music.game.elythia",
"min_delay": 12000, "min_delay": 12000,
"max_delay": 24000, "max_delay": 24000,
"replace_current_music": true "replace_current_music": true
@@ -17,7 +17,7 @@
"offset": 2.0 "offset": 2.0
}, },
"music": { "music": {
"sound": "minecraft:music.game", "sound": "antarchy:music.game.elythia",
"min_delay": 12000, "min_delay": 12000,
"max_delay": 24000, "max_delay": 24000,
"replace_current_music": true "replace_current_music": true
@@ -23,7 +23,7 @@
"offset": 2.0 "offset": 2.0
}, },
"music": { "music": {
"sound": "minecraft:music.game", "sound": "antarchy:music.game.elythia",
"min_delay": 12000, "min_delay": 12000,
"max_delay": 24000, "max_delay": 24000,
"replace_current_music": true "replace_current_music": true
@@ -17,7 +17,7 @@
"offset": 2.0 "offset": 2.0
}, },
"music": { "music": {
"sound": "minecraft:music.game", "sound": "antarchy:music.game.elythia",
"min_delay": 12000, "min_delay": 12000,
"max_delay": 24000, "max_delay": 24000,
"replace_current_music": true "replace_current_music": true
@@ -17,7 +17,7 @@
"offset": 2.0 "offset": 2.0
}, },
"music": { "music": {
"sound": "minecraft:music.game", "sound": "antarchy:music.game.elythia",
"min_delay": 12000, "min_delay": 12000,
"max_delay": 24000, "max_delay": 24000,
"replace_current_music": true "replace_current_music": true
@@ -17,7 +17,7 @@
"offset": 2.0 "offset": 2.0
}, },
"music": { "music": {
"sound": "minecraft:music.game", "sound": "antarchy:music.game.elythia",
"min_delay": 12000, "min_delay": 12000,
"max_delay": 24000, "max_delay": 24000,
"replace_current_music": true "replace_current_music": true
@@ -23,7 +23,7 @@
"offset": 2.0 "offset": 2.0
}, },
"music": { "music": {
"sound": "minecraft:music.game", "sound": "antarchy:music.game.elythia",
"min_delay": 12000, "min_delay": 12000,
"max_delay": 24000, "max_delay": 24000,
"replace_current_music": true "replace_current_music": true
@@ -17,7 +17,7 @@
"offset": 2.0 "offset": 2.0
}, },
"music": { "music": {
"sound": "minecraft:music.game", "sound": "antarchy:music.game.elythia",
"min_delay": 12000, "min_delay": 12000,
"max_delay": 24000, "max_delay": 24000,
"replace_current_music": true "replace_current_music": true
@@ -23,7 +23,7 @@
} }
}, },
"music": { "music": {
"sound": "antarchy:venenatus", "sound": "antarchy:music.game.cavaryn",
"min_delay": 12000, "min_delay": 12000,
"max_delay": 24000, "max_delay": 24000,
"replace_current_music": true "replace_current_music": true
@@ -25,7 +25,7 @@
"offset": 2.0 "offset": 2.0
}, },
"music": { "music": {
"sound": "antarchy:lucid_lullaby", "sound": "antarchy:music.game.thoraxis",
"min_delay": 12000, "min_delay": 12000,
"max_delay": 24000, "max_delay": 24000,
"replace_current_music": true "replace_current_music": true
@@ -17,7 +17,7 @@
} }
}, },
"music": { "music": {
"sound": "minecraft:music.game", "sound": "antarchy:music.game.elythia",
"min_delay": 12000, "min_delay": 12000,
"max_delay": 24000, "max_delay": 24000,
"replace_current_music": true "replace_current_music": true
@@ -25,7 +25,7 @@
"offset": 2.0 "offset": 2.0
}, },
"music": { "music": {
"sound": "antarchy:lucid_lullaby", "sound": "antarchy:music.game.thoraxis",
"min_delay": 12000, "min_delay": 12000,
"max_delay": 24000, "max_delay": 24000,
"replace_current_music": true "replace_current_music": true
@@ -23,7 +23,7 @@
"offset": 2.0 "offset": 2.0
}, },
"music": { "music": {
"sound": "minecraft:music.game", "sound": "antarchy:music.game.elythia",
"min_delay": 12000, "min_delay": 12000,
"max_delay": 24000, "max_delay": 24000,
"replace_current_music": true "replace_current_music": true
@@ -17,7 +17,7 @@
"offset": 2.0 "offset": 2.0
}, },
"music": { "music": {
"sound": "minecraft:music.game", "sound": "antarchy:music.game.elythia",
"min_delay": 12000, "min_delay": 12000,
"max_delay": 24000, "max_delay": 24000,
"replace_current_music": true "replace_current_music": true
@@ -22,7 +22,7 @@
} }
}, },
"music": { "music": {
"sound": "antarchy:venenatus", "sound": "antarchy:music.game.cavaryn",
"min_delay": 12000, "min_delay": 12000,
"max_delay": 24000, "max_delay": 24000,
"replace_current_music": true "replace_current_music": true
@@ -23,7 +23,7 @@
"offset": 2.0 "offset": 2.0
}, },
"music": { "music": {
"sound": "minecraft:music.game", "sound": "antarchy:music.game.elythia",
"min_delay": 12000, "min_delay": 12000,
"max_delay": 24000, "max_delay": 24000,
"replace_current_music": true "replace_current_music": true
@@ -25,7 +25,7 @@
"offset": 2.0 "offset": 2.0
}, },
"music": { "music": {
"sound": "antarchy:lucid_lullaby", "sound": "antarchy:music.game.thoraxis",
"min_delay": 12000, "min_delay": 12000,
"max_delay": 24000, "max_delay": 24000,
"replace_current_music": true "replace_current_music": true
@@ -308,6 +308,8 @@ public final class AntarchyFabricContent {
AntarchyObjects.setLumenFroglight(() -> AntarchyFabricBlocks.LUMEN_FROGLIGHT.get()); AntarchyObjects.setLumenFroglight(() -> AntarchyFabricBlocks.LUMEN_FROGLIGHT.get());
AntarchyObjects.setPeachLeavesParticle(() -> AntarchyFabricMisc.PEACH_LEAVES_PARTICLE.get()); AntarchyObjects.setPeachLeavesParticle(() -> AntarchyFabricMisc.PEACH_LEAVES_PARTICLE.get());
AntarchyObjects.setLotusPollen(() -> AntarchyFabricMisc.LOTUS_POLLEN.get()); AntarchyObjects.setLotusPollen(() -> AntarchyFabricMisc.LOTUS_POLLEN.get());
AntarchyObjects.setLucidBoltImpactSmall(() -> AntarchyFabricMisc.LUCID_BOLT_IMPACT_SMALL.get());
AntarchyObjects.setLucidBoltImpactLarge(() -> AntarchyFabricMisc.LUCID_BOLT_IMPACT_LARGE.get());
AntarchyObjects.setDorrieInventoryMenu(AntarchyFabricMisc.DORRIE_INVENTORY_MENU); AntarchyObjects.setDorrieInventoryMenu(AntarchyFabricMisc.DORRIE_INVENTORY_MENU);
AntarchyObjects.setCritterCage(() -> AntarchyFabricItems.CRITTER_CAGE.get()); AntarchyObjects.setCritterCage(() -> AntarchyFabricItems.CRITTER_CAGE.get());
AntarchyObjects.setCritterCageBlock(() -> AntarchyFabricBlocks.CRITTER_CAGE_BLOCK.get()); AntarchyObjects.setCritterCageBlock(() -> AntarchyFabricBlocks.CRITTER_CAGE_BLOCK.get());
@@ -288,6 +288,8 @@ public final class AntarchyFabricClientBootstrap {
registry.register(AntarchyFabricMisc.INVERTED_GEYSER_ERUPTION.get(), new InvertedGeyserEruptionParticle.Provider()); registry.register(AntarchyFabricMisc.INVERTED_GEYSER_ERUPTION.get(), new InvertedGeyserEruptionParticle.Provider());
registry.register(AntarchyFabricMisc.FIREFLY.get(), FireflyParticle.Provider::new); registry.register(AntarchyFabricMisc.FIREFLY.get(), FireflyParticle.Provider::new);
registry.register(AntarchyFabricMisc.ORANGE_ASH.get(), OrangeAshParticle.Provider::new); registry.register(AntarchyFabricMisc.ORANGE_ASH.get(), OrangeAshParticle.Provider::new);
registry.register(AntarchyFabricMisc.LUCID_BOLT_IMPACT_SMALL.get(), LucidBoltImpactParticle.SmallProvider::new);
registry.register(AntarchyFabricMisc.LUCID_BOLT_IMPACT_LARGE.get(), LucidBoltImpactParticle.LargeProvider::new);
} }
private static void registerRenderLayers() { private static void registerRenderLayers() {
@@ -314,6 +314,12 @@ public final class AntarchyFabricMisc {
public static final DeferredHolder<ParticleType<?>, SimpleParticleType> ORANGE_ASH = PARTICLE_TYPES.register("orange_ash", public static final DeferredHolder<ParticleType<?>, SimpleParticleType> ORANGE_ASH = PARTICLE_TYPES.register("orange_ash",
() -> simpleParticleType()); () -> simpleParticleType());
public static final DeferredHolder<ParticleType<?>, SimpleParticleType> LUCID_BOLT_IMPACT_SMALL = PARTICLE_TYPES.register("lucid_bolt_impact_small",
() -> simpleParticleType());
public static final DeferredHolder<ParticleType<?>, SimpleParticleType> LUCID_BOLT_IMPACT_LARGE = PARTICLE_TYPES.register("lucid_bolt_impact_large",
() -> simpleParticleType());
public static final DeferredHolder<ParticleType<?>, ParticleType<InvertedGeyserBaseParticleOptions>> INVERTED_GEYSER_BASE = PARTICLE_TYPES.register("inverted_geyser_base", public static final DeferredHolder<ParticleType<?>, ParticleType<InvertedGeyserBaseParticleOptions>> INVERTED_GEYSER_BASE = PARTICLE_TYPES.register("inverted_geyser_base",
() -> particleType(InvertedGeyserBaseParticleOptions.deserializer())); () -> particleType(InvertedGeyserBaseParticleOptions.deserializer()));
@@ -4,6 +4,7 @@
"refmap": "antarchy.mixins.refmap.json", "refmap": "antarchy.mixins.refmap.json",
"compatibilityLevel": "JAVA_17", "compatibilityLevel": "JAVA_17",
"mixins": [ "mixins": [
"infinity.AmendmentRareOresMixin"
], ],
"client": [ "client": [
], ],
@@ -322,6 +322,8 @@ public final class AntarchyFabricContent {
AntarchyObjects.setLumenFroglight(() -> AntarchyFabricBlocks.LUMEN_FROGLIGHT.get()); AntarchyObjects.setLumenFroglight(() -> AntarchyFabricBlocks.LUMEN_FROGLIGHT.get());
AntarchyObjects.setPeachLeavesParticle(() -> AntarchyFabricMisc.PEACH_LEAVES_PARTICLE.get()); AntarchyObjects.setPeachLeavesParticle(() -> AntarchyFabricMisc.PEACH_LEAVES_PARTICLE.get());
AntarchyObjects.setLotusPollen(() -> AntarchyFabricMisc.LOTUS_POLLEN.get()); AntarchyObjects.setLotusPollen(() -> AntarchyFabricMisc.LOTUS_POLLEN.get());
AntarchyObjects.setLucidBoltImpactSmall(() -> AntarchyFabricMisc.LUCID_BOLT_IMPACT_SMALL.get());
AntarchyObjects.setLucidBoltImpactLarge(() -> AntarchyFabricMisc.LUCID_BOLT_IMPACT_LARGE.get());
AntarchyObjects.setDorrieInventoryMenu(AntarchyFabricMisc.DORRIE_INVENTORY_MENU); AntarchyObjects.setDorrieInventoryMenu(AntarchyFabricMisc.DORRIE_INVENTORY_MENU);
AntarchyObjects.setCritterCage(() -> AntarchyFabricItems.CRITTER_CAGE.get()); AntarchyObjects.setCritterCage(() -> AntarchyFabricItems.CRITTER_CAGE.get());
AntarchyObjects.setCritterCageBlock(() -> AntarchyFabricBlocks.CRITTER_CAGE_BLOCK.get()); AntarchyObjects.setCritterCageBlock(() -> AntarchyFabricBlocks.CRITTER_CAGE_BLOCK.get());
@@ -288,6 +288,8 @@ public final class AntarchyFabricClientBootstrap {
registry.register(AntarchyFabricMisc.INVERTED_GEYSER_ERUPTION.get(), new InvertedGeyserEruptionParticle.Provider()); registry.register(AntarchyFabricMisc.INVERTED_GEYSER_ERUPTION.get(), new InvertedGeyserEruptionParticle.Provider());
registry.register(AntarchyFabricMisc.FIREFLY.get(), FireflyParticle.Provider::new); registry.register(AntarchyFabricMisc.FIREFLY.get(), FireflyParticle.Provider::new);
registry.register(AntarchyFabricMisc.ORANGE_ASH.get(), OrangeAshParticle.Provider::new); registry.register(AntarchyFabricMisc.ORANGE_ASH.get(), OrangeAshParticle.Provider::new);
registry.register(AntarchyFabricMisc.LUCID_BOLT_IMPACT_SMALL.get(), LucidBoltImpactParticle.SmallProvider::new);
registry.register(AntarchyFabricMisc.LUCID_BOLT_IMPACT_LARGE.get(), LucidBoltImpactParticle.LargeProvider::new);
} }
private static void registerRenderLayers() { private static void registerRenderLayers() {
@@ -327,6 +327,12 @@ public final class AntarchyFabricMisc {
public static final DeferredHolder<ParticleType<?>, SimpleParticleType> ORANGE_ASH = PARTICLE_TYPES.register("orange_ash", public static final DeferredHolder<ParticleType<?>, SimpleParticleType> ORANGE_ASH = PARTICLE_TYPES.register("orange_ash",
() -> simpleParticleType()); () -> simpleParticleType());
public static final DeferredHolder<ParticleType<?>, SimpleParticleType> LUCID_BOLT_IMPACT_SMALL = PARTICLE_TYPES.register("lucid_bolt_impact_small",
() -> simpleParticleType());
public static final DeferredHolder<ParticleType<?>, SimpleParticleType> LUCID_BOLT_IMPACT_LARGE = PARTICLE_TYPES.register("lucid_bolt_impact_large",
() -> simpleParticleType());
public static final DeferredHolder<ParticleType<?>, ParticleType<InvertedGeyserBaseParticleOptions>> INVERTED_GEYSER_BASE = PARTICLE_TYPES.register("inverted_geyser_base", public static final DeferredHolder<ParticleType<?>, ParticleType<InvertedGeyserBaseParticleOptions>> INVERTED_GEYSER_BASE = PARTICLE_TYPES.register("inverted_geyser_base",
() -> particleType(InvertedGeyserBaseParticleOptions::codec, InvertedGeyserBaseParticleOptions::streamCodec)); () -> particleType(InvertedGeyserBaseParticleOptions::codec, InvertedGeyserBaseParticleOptions::streamCodec));
@@ -160,6 +160,18 @@ public final class AntarchyFabricSounds {
public static final DeferredHolder<SoundEvent, SoundEvent> LUCID_LULLABY = registerSoundEvent("lucid_lullaby"); public static final DeferredHolder<SoundEvent, SoundEvent> LUCID_LULLABY = registerSoundEvent("lucid_lullaby");
public static final DeferredHolder<SoundEvent, SoundEvent> MUSIC_GAME_THORAXIS = registerSoundEvent("music.game.thoraxis");
public static final DeferredHolder<SoundEvent, SoundEvent> MUSIC_GAME_CAVARYN = registerSoundEvent("music.game.cavaryn");
public static final DeferredHolder<SoundEvent, SoundEvent> WISTFUL_WANDERINGS = registerSoundEvent("wistful_wanderings");
public static final DeferredHolder<SoundEvent, SoundEvent> MUSIC_GAME_ELYTHIA = registerSoundEvent("music.game.elythia");
public static final DeferredHolder<SoundEvent, SoundEvent> LUCID_AMBIENT = registerSoundEvent("lucid_ambient"); public static final DeferredHolder<SoundEvent, SoundEvent> LUCID_AMBIENT = registerSoundEvent("lucid_ambient");
@@ -20,7 +20,8 @@
"JumpyBootsFallDamageMixin", "JumpyBootsFallDamageMixin",
"entity.MultipartEntityLevelRegistryMixin", "entity.MultipartEntityLevelRegistryMixin",
"WoodTypeInvoker", "WoodTypeInvoker",
"infinity.PortalCreatorMixin" "infinity.PortalCreatorMixin",
"infinity.AmendmentRareOresMixin"
], ],
"client": [ "client": [
"client.CameraShakeMixin", "client.CameraShakeMixin",
@@ -101,16 +101,22 @@ public final class AntarchyConfigModuleForge {
AntarchySettings.setJumpyBugLatchDamage(AntarchyMobsConfig.jumpyBugLatchDamage()); AntarchySettings.setJumpyBugLatchDamage(AntarchyMobsConfig.jumpyBugLatchDamage());
AntarchySettings.setJumpyBugCamouflageAlpha(AntarchyMobsConfig.jumpyBugCamouflageAlpha()); AntarchySettings.setJumpyBugCamouflageAlpha(AntarchyMobsConfig.jumpyBugCamouflageAlpha());
AntarchySettings.setEmperorScorpionDamageRange(AntarchyMobsConfig.emperorScorpionDamageRange());
AntarchySettings.setEmperorScorpionMinDespawnTicks(AntarchyMobsConfig.emperorScorpionMinDespawnTicks());
AntarchySettings.setKrakenHealth(AntarchyMobsConfig.krakenHealth()); AntarchySettings.setKrakenHealth(AntarchyMobsConfig.krakenHealth());
AntarchySettings.setKrakenAttackDamage(AntarchyMobsConfig.krakenAttackDamage()); AntarchySettings.setKrakenAttackDamage(AntarchyMobsConfig.krakenAttackDamage());
AntarchySettings.setKrakenProjectileDamageTakenMultiplier(AntarchyMobsConfig.krakenProjectileDamageTakenMultiplier()); AntarchySettings.setKrakenProjectileDamageTakenMultiplier(AntarchyMobsConfig.krakenProjectileDamageTakenMultiplier());
AntarchySettings.setKrakenSquidSpawnEnabled(AntarchyMobsConfig.krakenSquidSpawnEnabled()); AntarchySettings.setKrakenSquidSpawnEnabled(AntarchyMobsConfig.krakenSquidSpawnEnabled());
AntarchySettings.setKrakenMassSpawnEnabled(AntarchyMobsConfig.krakenMassSpawnEnabled()); AntarchySettings.setKrakenMassSpawnEnabled(AntarchyMobsConfig.krakenMassSpawnEnabled());
AntarchySettings.setKrakenRequireBadOmenToSummon(AntarchyMobsConfig.krakenRequireBadOmenToSummon()); AntarchySettings.setKrakenRequireBadOmenToSummon(AntarchyMobsConfig.krakenRequireBadOmenToSummon());
AntarchySettings.setKrakenFollowRange(AntarchyMobsConfig.krakenFollowRange());
AntarchySettings.setKrakenDamageRange(AntarchyMobsConfig.krakenDamageRange());
AntarchySettings.setBrutalflyHealth(AntarchyMobsConfig.brutalflyHealth()); AntarchySettings.setBrutalflyHealth(AntarchyMobsConfig.brutalflyHealth());
AntarchySettings.setBrutalflySwipeDamage(AntarchyMobsConfig.brutalflySwipeDamage()); AntarchySettings.setBrutalflySwipeDamage(AntarchyMobsConfig.brutalflySwipeDamage());
AntarchySettings.setBrutalflySpitDamage(AntarchyMobsConfig.brutalflySpitDamage()); AntarchySettings.setBrutalflySpitDamage(AntarchyMobsConfig.brutalflySpitDamage());
AntarchySettings.setBrutalflyDamageRange(AntarchyMobsConfig.brutalflyDamageRange());
AntarchySettings.setMantisHealth(AntarchyMobsConfig.mantisHealth()); AntarchySettings.setMantisHealth(AntarchyMobsConfig.mantisHealth());
AntarchySettings.setMantisAttackDamage(AntarchyMobsConfig.mantisAttackDamage()); AntarchySettings.setMantisAttackDamage(AntarchyMobsConfig.mantisAttackDamage());
@@ -124,6 +130,7 @@ public final class AntarchyConfigModuleForge {
AntarchySettings.setAlphaMantisFlyingSpeed(AntarchyMobsConfig.alphaMantisFlyingSpeed()); AntarchySettings.setAlphaMantisFlyingSpeed(AntarchyMobsConfig.alphaMantisFlyingSpeed());
AntarchySettings.setAlphaMantisSummonIntervalTicks(AntarchyMobsConfig.alphaMantisSummonIntervalTicks()); AntarchySettings.setAlphaMantisSummonIntervalTicks(AntarchyMobsConfig.alphaMantisSummonIntervalTicks());
AntarchySettings.setAlphaMantisMaxMinions(AntarchyMobsConfig.alphaMantisMaxMinions()); AntarchySettings.setAlphaMantisMaxMinions(AntarchyMobsConfig.alphaMantisMaxMinions());
AntarchySettings.setAlphaMantisDamageRange(AntarchyMobsConfig.alphaMantisDamageRange());
AntarchySettings.setRollyPollyHealth(AntarchyMobsConfig.rollyPollyHealth()); AntarchySettings.setRollyPollyHealth(AntarchyMobsConfig.rollyPollyHealth());
AntarchySettings.setRollyPollyMovementSpeed(AntarchyMobsConfig.rollyPollyMovementSpeed()); AntarchySettings.setRollyPollyMovementSpeed(AntarchyMobsConfig.rollyPollyMovementSpeed());
@@ -190,6 +197,7 @@ public final class AntarchyConfigModuleForge {
AntarchySettings.setDreadHallucinationMobMaxInterval(AntarchyMobsConfig.dreadHallucinationMobMaxInterval()); AntarchySettings.setDreadHallucinationMobMaxInterval(AntarchyMobsConfig.dreadHallucinationMobMaxInterval());
AntarchySettings.setToreterrorHealth(AntarchyMobsConfig.toreterrorHealth()); AntarchySettings.setToreterrorHealth(AntarchyMobsConfig.toreterrorHealth());
AntarchySettings.setToreterrorDamageRange(AntarchyMobsConfig.toreterrorDamageRange());
AntarchySettings.setToreterrorJumpAttackDamage(AntarchyMobsConfig.toreterrorJumpAttackDamage()); AntarchySettings.setToreterrorJumpAttackDamage(AntarchyMobsConfig.toreterrorJumpAttackDamage());
AntarchySettings.setToreterrorJumpAttackKnockback(AntarchyMobsConfig.toreterrorJumpAttackKnockback()); AntarchySettings.setToreterrorJumpAttackKnockback(AntarchyMobsConfig.toreterrorJumpAttackKnockback());
AntarchySettings.setToreterrorSpinDamage(AntarchyMobsConfig.toreterrorSpinDamage()); AntarchySettings.setToreterrorSpinDamage(AntarchyMobsConfig.toreterrorSpinDamage());
@@ -220,6 +228,7 @@ public final class AntarchyConfigModuleForge {
AntarchySettings.setHerculesBeetleHealth(AntarchyMobsConfig.herculesBeetleHealth()); AntarchySettings.setHerculesBeetleHealth(AntarchyMobsConfig.herculesBeetleHealth());
AntarchySettings.setHerculesBeetleAttackDamage(AntarchyMobsConfig.herculesBeetleAttackDamage()); AntarchySettings.setHerculesBeetleAttackDamage(AntarchyMobsConfig.herculesBeetleAttackDamage());
AntarchySettings.setHerculesBeetleChargeDamage(AntarchyMobsConfig.herculesBeetleChargeDamage()); AntarchySettings.setHerculesBeetleChargeDamage(AntarchyMobsConfig.herculesBeetleChargeDamage());
AntarchySettings.setHerculesBeetleDamageRange(AntarchyMobsConfig.herculesBeetleDamageRange());
AntarchySettings.setOuranwoodDeerHealth(AntarchyMobsConfig.ouranwoodDeerHealth()); AntarchySettings.setOuranwoodDeerHealth(AntarchyMobsConfig.ouranwoodDeerHealth());
AntarchySettings.setGlimmerHealth(AntarchyMobsConfig.glimmerHealth()); AntarchySettings.setGlimmerHealth(AntarchyMobsConfig.glimmerHealth());
} }
@@ -282,6 +291,8 @@ public final class AntarchyConfigModuleForge {
AntarchySettings.setBigBerthaBasiliskCooldownSeconds(AntarchyToolsConfig.bigBerthaBasiliskCooldownSeconds()); AntarchySettings.setBigBerthaBasiliskCooldownSeconds(AntarchyToolsConfig.bigBerthaBasiliskCooldownSeconds());
AntarchySettings.setBigBerthaLucidInvertedDurationSeconds(AntarchyToolsConfig.bigBerthaLucidInvertedDurationSeconds()); AntarchySettings.setBigBerthaLucidInvertedDurationSeconds(AntarchyToolsConfig.bigBerthaLucidInvertedDurationSeconds());
AntarchySettings.setBigBerthaLucidInvertedDamageBonusPercent(AntarchyToolsConfig.bigBerthaLucidInvertedDamageBonusPercent()); AntarchySettings.setBigBerthaLucidInvertedDamageBonusPercent(AntarchyToolsConfig.bigBerthaLucidInvertedDamageBonusPercent());
AntarchySettings.setBigBerthaNoneModeDamageBonusPercent(AntarchyToolsConfig.bigBerthaNoneModeDamageBonusPercent());
AntarchySettings.setBigBerthaNightmareDamageBonusPercent(AntarchyToolsConfig.bigBerthaNightmareDamageBonusPercent());
AntarchySettings.setKrakensGraspAttackDamage(AntarchyToolsConfig.krakensGraspAttackDamage()); AntarchySettings.setKrakensGraspAttackDamage(AntarchyToolsConfig.krakensGraspAttackDamage());
AntarchySettings.setKrakensGraspAttackSpeed(AntarchyToolsConfig.krakensGraspAttackSpeed()); AntarchySettings.setKrakensGraspAttackSpeed(AntarchyToolsConfig.krakensGraspAttackSpeed());
AntarchySettings.setKrakensGraspThrownDamage(AntarchyToolsConfig.krakensGraspThrownDamage()); AntarchySettings.setKrakensGraspThrownDamage(AntarchyToolsConfig.krakensGraspThrownDamage());
@@ -289,9 +300,9 @@ public final class AntarchyConfigModuleForge {
AntarchySettings.setKrakensGraspInnateLoyalty(AntarchyToolsConfig.krakensGraspInnateLoyalty()); AntarchySettings.setKrakensGraspInnateLoyalty(AntarchyToolsConfig.krakensGraspInnateLoyalty());
AntarchySettings.setKrakensGraspInnateLoyaltyLevel(AntarchyToolsConfig.krakensGraspInnateLoyaltyLevel()); AntarchySettings.setKrakensGraspInnateLoyaltyLevel(AntarchyToolsConfig.krakensGraspInnateLoyaltyLevel());
AntarchySettings.setKrakensGraspTentacleDurationTicks(AntarchyToolsConfig.krakensGraspTentacleDurationTicks()); AntarchySettings.setKrakensGraspTentacleDurationTicks(AntarchyToolsConfig.krakensGraspTentacleDurationTicks());
AntarchySettings.setKrakensGraspTentacleDamage(AntarchyToolsConfig.krakensGraspTentacleDamage());
AntarchySettings.setKrakensGraspTentacleRadius(AntarchyToolsConfig.krakensGraspTentacleRadius()); AntarchySettings.setKrakensGraspTentacleRadius(AntarchyToolsConfig.krakensGraspTentacleRadius());
AntarchySettings.setKrakensGraspTentacleDamageIntervalTicks(AntarchyToolsConfig.krakensGraspTentacleDamageIntervalTicks()); AntarchySettings.setKrakensGraspTentacleSlownessAmplifier(AntarchyToolsConfig.krakensGraspTentacleSlownessAmplifier());
AntarchySettings.setKrakensGraspTentacleSlownessRefreshTicks(AntarchyToolsConfig.krakensGraspTentacleSlownessRefreshTicks());
AntarchySettings.setScorpionWhipBaseDamage(AntarchyToolsConfig.scorpionWhipBaseDamage()); AntarchySettings.setScorpionWhipBaseDamage(AntarchyToolsConfig.scorpionWhipBaseDamage());
AntarchySettings.setScorpionWhipReachBonus(AntarchyToolsConfig.scorpionWhipReachBonus()); AntarchySettings.setScorpionWhipReachBonus(AntarchyToolsConfig.scorpionWhipReachBonus());
AntarchySettings.setScorpionWhipPoisonDurationTicks(AntarchyToolsConfig.scorpionWhipPoisonDurationTicks()); AntarchySettings.setScorpionWhipPoisonDurationTicks(AntarchyToolsConfig.scorpionWhipPoisonDurationTicks());
@@ -376,6 +376,8 @@ public class AntarchyForge {
AntarchyObjects.setLumenFroglight(() -> AntarchyForgeBlocks.LUMEN_FROGLIGHT.get()); AntarchyObjects.setLumenFroglight(() -> AntarchyForgeBlocks.LUMEN_FROGLIGHT.get());
AntarchyObjects.setPeachLeavesParticle(() -> AntarchyForgeMisc.PEACH_LEAVES_PARTICLE.get()); AntarchyObjects.setPeachLeavesParticle(() -> AntarchyForgeMisc.PEACH_LEAVES_PARTICLE.get());
AntarchyObjects.setLotusPollen(() -> AntarchyForgeMisc.LOTUS_POLLEN.get()); AntarchyObjects.setLotusPollen(() -> AntarchyForgeMisc.LOTUS_POLLEN.get());
AntarchyObjects.setLucidBoltImpactSmall(() -> AntarchyForgeMisc.LUCID_BOLT_IMPACT_SMALL.get());
AntarchyObjects.setLucidBoltImpactLarge(() -> AntarchyForgeMisc.LUCID_BOLT_IMPACT_LARGE.get());
AntarchyObjects.setDorrieInventoryMenu(AntarchyForgeMisc.DORRIE_INVENTORY_MENU); AntarchyObjects.setDorrieInventoryMenu(AntarchyForgeMisc.DORRIE_INVENTORY_MENU);
AntarchyObjects.setCritterCage(() -> AntarchyForgeItems.CRITTER_CAGE.get()); AntarchyObjects.setCritterCage(() -> AntarchyForgeItems.CRITTER_CAGE.get());
AntarchyObjects.setCritterCageBlock(() -> AntarchyForgeBlocks.CRITTER_CAGE_BLOCK.get()); AntarchyObjects.setCritterCageBlock(() -> AntarchyForgeBlocks.CRITTER_CAGE_BLOCK.get());
@@ -69,6 +69,12 @@ public final class AntarchyMobsConfig {
private static final ForgeConfigSpec.DoubleValue JUMPY_BUG_CAMOUFLAGE_ALPHA; private static final ForgeConfigSpec.DoubleValue JUMPY_BUG_CAMOUFLAGE_ALPHA;
// Emperor Scorpion
private static final ForgeConfigSpec.DoubleValue EMPEROR_SCORPION_DAMAGE_RANGE;
private static final ForgeConfigSpec.IntValue EMPEROR_SCORPION_MIN_DESPAWN_TICKS;
// Kraken // Kraken
private static final ForgeConfigSpec.DoubleValue KRAKEN_HEALTH; private static final ForgeConfigSpec.DoubleValue KRAKEN_HEALTH;
@@ -77,6 +83,8 @@ public final class AntarchyMobsConfig {
private static final ForgeConfigSpec.BooleanValue KRAKEN_SQUID_SPAWN_ENABLED; private static final ForgeConfigSpec.BooleanValue KRAKEN_SQUID_SPAWN_ENABLED;
private static final ForgeConfigSpec.BooleanValue KRAKEN_MASS_SPAWN_ENABLED; private static final ForgeConfigSpec.BooleanValue KRAKEN_MASS_SPAWN_ENABLED;
private static final ForgeConfigSpec.BooleanValue KRAKEN_REQUIRE_BAD_OMEN_TO_SUMMON; private static final ForgeConfigSpec.BooleanValue KRAKEN_REQUIRE_BAD_OMEN_TO_SUMMON;
private static final ForgeConfigSpec.DoubleValue KRAKEN_FOLLOW_RANGE;
private static final ForgeConfigSpec.DoubleValue KRAKEN_DAMAGE_RANGE;
// Brutalfly // Brutalfly
@@ -84,6 +92,7 @@ public final class AntarchyMobsConfig {
private static final ForgeConfigSpec.DoubleValue BRUTALFLY_HEALTH; private static final ForgeConfigSpec.DoubleValue BRUTALFLY_HEALTH;
private static final ForgeConfigSpec.DoubleValue BRUTALFLY_SWIPE_DAMAGE; private static final ForgeConfigSpec.DoubleValue BRUTALFLY_SWIPE_DAMAGE;
private static final ForgeConfigSpec.DoubleValue BRUTALFLY_SPIT_DAMAGE; private static final ForgeConfigSpec.DoubleValue BRUTALFLY_SPIT_DAMAGE;
private static final ForgeConfigSpec.DoubleValue BRUTALFLY_DAMAGE_RANGE;
// Mantis // Mantis
@@ -103,6 +112,7 @@ public final class AntarchyMobsConfig {
private static final ForgeConfigSpec.DoubleValue ALPHA_MANTIS_FLYING_SPEED; private static final ForgeConfigSpec.DoubleValue ALPHA_MANTIS_FLYING_SPEED;
private static final ForgeConfigSpec.IntValue ALPHA_MANTIS_SUMMON_INTERVAL_TICKS; private static final ForgeConfigSpec.IntValue ALPHA_MANTIS_SUMMON_INTERVAL_TICKS;
private static final ForgeConfigSpec.IntValue ALPHA_MANTIS_MAX_MINIONS; private static final ForgeConfigSpec.IntValue ALPHA_MANTIS_MAX_MINIONS;
private static final ForgeConfigSpec.DoubleValue ALPHA_MANTIS_DAMAGE_RANGE;
// Rolly Polly // Rolly Polly
@@ -185,6 +195,7 @@ public final class AntarchyMobsConfig {
// Toreterror // Toreterror
private static final ForgeConfigSpec.DoubleValue TORETERROR_HEALTH; private static final ForgeConfigSpec.DoubleValue TORETERROR_HEALTH;
private static final ForgeConfigSpec.DoubleValue TORETERROR_DAMAGE_RANGE;
private static final ForgeConfigSpec.DoubleValue TORETERROR_JUMP_ATTACK_DAMAGE; private static final ForgeConfigSpec.DoubleValue TORETERROR_JUMP_ATTACK_DAMAGE;
private static final ForgeConfigSpec.DoubleValue TORETERROR_JUMP_ATTACK_KNOCKBACK; private static final ForgeConfigSpec.DoubleValue TORETERROR_JUMP_ATTACK_KNOCKBACK;
private static final ForgeConfigSpec.DoubleValue TORETERROR_SPIN_DAMAGE; private static final ForgeConfigSpec.DoubleValue TORETERROR_SPIN_DAMAGE;
@@ -247,6 +258,7 @@ public final class AntarchyMobsConfig {
private static final ForgeConfigSpec.DoubleValue HERCULES_BEETLE_HEALTH; private static final ForgeConfigSpec.DoubleValue HERCULES_BEETLE_HEALTH;
private static final ForgeConfigSpec.DoubleValue HERCULES_BEETLE_ATTACK_DAMAGE; private static final ForgeConfigSpec.DoubleValue HERCULES_BEETLE_ATTACK_DAMAGE;
private static final ForgeConfigSpec.DoubleValue HERCULES_BEETLE_CHARGE_DAMAGE; private static final ForgeConfigSpec.DoubleValue HERCULES_BEETLE_CHARGE_DAMAGE;
private static final ForgeConfigSpec.DoubleValue HERCULES_BEETLE_DAMAGE_RANGE;
// Lucid // Lucid
@@ -398,6 +410,18 @@ public final class AntarchyMobsConfig {
b.pop(); b.pop();
// Emperor Scorpion
b.push("emperorScorpion");
EMPEROR_SCORPION_DAMAGE_RANGE = b
.comment("Range in blocks a player must be within for the Emperor Scorpion to be able to take damage. Prevents cheesing it from outside its aggro range.")
.defineInRange("damageRange", 80.0D, 1.0D, 256.0D);
EMPEROR_SCORPION_MIN_DESPAWN_TICKS = b
.comment("Minimum ticks after spawning before the Emperor Scorpion can despawn from being far away. It also never despawns once it has taken damage. 6000 ticks = 5 minutes.")
.defineInRange("minDespawnTicks", 6000, 0, 1000000);
b.pop();
// Kraken // Kraken
b.push("kraken"); b.push("kraken");
@@ -407,6 +431,8 @@ public final class AntarchyMobsConfig {
KRAKEN_SQUID_SPAWN_ENABLED = b.comment("If true, a player killing a Missile Squid has a 1/100 chance to spawn a single Kraken nearby.") .define("squidSpawnEnabled", true); KRAKEN_SQUID_SPAWN_ENABLED = b.comment("If true, a player killing a Missile Squid has a 1/100 chance to spawn a single Kraken nearby.") .define("squidSpawnEnabled", true);
KRAKEN_MASS_SPAWN_ENABLED = b.comment("If true, a player killing a Missile Squid has a 1/500 chance to spawn 10 Krakens. Independent from the single spawn.").define("massSpawnEnabled", true); KRAKEN_MASS_SPAWN_ENABLED = b.comment("If true, a player killing a Missile Squid has a 1/500 chance to spawn 10 Krakens. Independent from the single spawn.").define("massSpawnEnabled", true);
KRAKEN_REQUIRE_BAD_OMEN_TO_SUMMON = b.comment("If true, the killer must have Bad Omen to summon a single Kraken; chance scales with Bad Omen level. Mass spawn is unaffected by level but still requires Bad Omen when this is on.").define("requireBadOmenToSummon", true); KRAKEN_REQUIRE_BAD_OMEN_TO_SUMMON = b.comment("If true, the killer must have Bad Omen to summon a single Kraken; chance scales with Bad Omen level. Mass spawn is unaffected by level but still requires Bad Omen when this is on.").define("requireBadOmenToSummon", true);
KRAKEN_FOLLOW_RANGE = b.comment("How far the Kraken can see/target players.").defineInRange("followRange", 96.0D, 1.0D, 256.0D);
KRAKEN_DAMAGE_RANGE = b.comment("Range in blocks a player must be within for the Kraken to be able to take damage. Prevents cheesing it from outside its aggro range.").defineInRange("damageRange", 96.0D, 1.0D, 256.0D);
b.pop(); b.pop();
@@ -416,6 +442,7 @@ public final class AntarchyMobsConfig {
BRUTALFLY_HEALTH = b.comment("Base max health.") .defineInRange("health", 200.0D, 1.0D, 32768.0D); BRUTALFLY_HEALTH = b.comment("Base max health.") .defineInRange("health", 200.0D, 1.0D, 32768.0D);
BRUTALFLY_SWIPE_DAMAGE = b.comment("Damage dealt by a claw swipe.") .defineInRange("swipeDamage", 15.0D, 0.0D, 1024.0D); BRUTALFLY_SWIPE_DAMAGE = b.comment("Damage dealt by a claw swipe.") .defineInRange("swipeDamage", 15.0D, 0.0D, 1024.0D);
BRUTALFLY_SPIT_DAMAGE = b.comment("Direct hit damage from a spit orb before lingering effect.").defineInRange("spitDamage", 5.0D, 0.0D, 1024.0D); BRUTALFLY_SPIT_DAMAGE = b.comment("Direct hit damage from a spit orb before lingering effect.").defineInRange("spitDamage", 5.0D, 0.0D, 1024.0D);
BRUTALFLY_DAMAGE_RANGE = b.comment("Range in blocks a player must be within for the Brutalfly to be able to take damage. Prevents cheesing it from outside its aggro range.").defineInRange("damageRange", 48.0D, 1.0D, 256.0D);
b.pop(); b.pop();
@@ -439,6 +466,7 @@ public final class AntarchyMobsConfig {
ALPHA_MANTIS_FLYING_SPEED = b.comment("Base flying speed.") .defineInRange("flyingSpeed", 0.77D, 0.0D, 10.0D); ALPHA_MANTIS_FLYING_SPEED = b.comment("Base flying speed.") .defineInRange("flyingSpeed", 0.77D, 0.0D, 10.0D);
ALPHA_MANTIS_SUMMON_INTERVAL_TICKS = b.comment("Ticks between mantis minion summons while in combat.") .defineInRange("summonIntervalTicks", 300, 20, 72000); ALPHA_MANTIS_SUMMON_INTERVAL_TICKS = b.comment("Ticks between mantis minion summons while in combat.") .defineInRange("summonIntervalTicks", 300, 20, 72000);
ALPHA_MANTIS_MAX_MINIONS = b.comment("Maximum summoned mantises alive near the alpha at once.") .defineInRange("maxMinions", 4, 0, 32); ALPHA_MANTIS_MAX_MINIONS = b.comment("Maximum summoned mantises alive near the alpha at once.") .defineInRange("maxMinions", 4, 0, 32);
ALPHA_MANTIS_DAMAGE_RANGE = b.comment("Range in blocks a player must be within for the Alpha Mantis to be able to take damage. Prevents cheesing it from outside its aggro range.").defineInRange("damageRange", 48.0D, 1.0D, 256.0D);
b.pop(); b.pop();
@@ -612,10 +640,12 @@ public final class AntarchyMobsConfig {
HERCULES_BEETLE_HEALTH = b.comment("Base max health.").defineInRange("health", 500.0D, 1.0D, 32768.0D); HERCULES_BEETLE_HEALTH = b.comment("Base max health.").defineInRange("health", 500.0D, 1.0D, 32768.0D);
HERCULES_BEETLE_ATTACK_DAMAGE = b.comment("Base melee damage for ground and flying attacks.").defineInRange("attackDamage", 30.0D, 0.0D, 1024.0D); HERCULES_BEETLE_ATTACK_DAMAGE = b.comment("Base melee damage for ground and flying attacks.").defineInRange("attackDamage", 30.0D, 0.0D, 1024.0D);
HERCULES_BEETLE_CHARGE_DAMAGE = b.comment("AOE impact damage dealt when a charge collides.").defineInRange("chargeDamage", 40.0D, 0.0D, 1024.0D); HERCULES_BEETLE_CHARGE_DAMAGE = b.comment("AOE impact damage dealt when a charge collides.").defineInRange("chargeDamage", 40.0D, 0.0D, 1024.0D);
HERCULES_BEETLE_DAMAGE_RANGE = b.comment("Range in blocks a player must be within for the Hercules Beetle to be able to take damage. Prevents cheesing it from outside its aggro range.").defineInRange("damageRange", 48.0D, 1.0D, 256.0D);
b.pop(); b.pop();
b.push("toreterror"); b.push("toreterror");
TORETERROR_HEALTH = b.comment("Base max health.").defineInRange("health", 300.0D, 1.0D, 32768.0D); TORETERROR_HEALTH = b.comment("Base max health.").defineInRange("health", 300.0D, 1.0D, 32768.0D);
TORETERROR_DAMAGE_RANGE = b.comment("Range in blocks a player must be within for the Toreterror to be able to take damage. Prevents cheesing it from outside its aggro range.").defineInRange("damageRange", 48.0D, 1.0D, 256.0D);
TORETERROR_JUMP_ATTACK_DAMAGE = b.comment("Damage dealt by the jump shockwave.").defineInRange("jumpAttackDamage", 14.0D, 0.0D, 1024.0D); TORETERROR_JUMP_ATTACK_DAMAGE = b.comment("Damage dealt by the jump shockwave.").defineInRange("jumpAttackDamage", 14.0D, 0.0D, 1024.0D);
TORETERROR_JUMP_ATTACK_KNOCKBACK = b.comment("Knockback strength of the jump shockwave.").defineInRange("jumpAttackKnockback", 2.5D, 0.0D, 10.0D); TORETERROR_JUMP_ATTACK_KNOCKBACK = b.comment("Knockback strength of the jump shockwave.").defineInRange("jumpAttackKnockback", 2.5D, 0.0D, 10.0D);
TORETERROR_SPIN_DAMAGE = b.comment("Damage per spin-attack tick.").defineInRange("spinDamage", 8.0D, 0.0D, 1024.0D); TORETERROR_SPIN_DAMAGE = b.comment("Damage per spin-attack tick.").defineInRange("spinDamage", 8.0D, 0.0D, 1024.0D);
@@ -686,16 +716,22 @@ public final class AntarchyMobsConfig {
static double jumpyBugLatchDamage() { return JUMPY_BUG_LATCH_DAMAGE.get(); } static double jumpyBugLatchDamage() { return JUMPY_BUG_LATCH_DAMAGE.get(); }
static double jumpyBugCamouflageAlpha() { return JUMPY_BUG_CAMOUFLAGE_ALPHA.get(); } static double jumpyBugCamouflageAlpha() { return JUMPY_BUG_CAMOUFLAGE_ALPHA.get(); }
static double emperorScorpionDamageRange() { return EMPEROR_SCORPION_DAMAGE_RANGE.get(); }
static int emperorScorpionMinDespawnTicks() { return EMPEROR_SCORPION_MIN_DESPAWN_TICKS.get(); }
static double krakenHealth() { return KRAKEN_HEALTH.get(); } static double krakenHealth() { return KRAKEN_HEALTH.get(); }
static double krakenAttackDamage() { return KRAKEN_ATTACK_DAMAGE.get(); } static double krakenAttackDamage() { return KRAKEN_ATTACK_DAMAGE.get(); }
static double krakenProjectileDamageTakenMultiplier() { return KRAKEN_PROJECTILE_DAMAGE_TAKEN_MULTIPLIER.get(); } static double krakenProjectileDamageTakenMultiplier() { return KRAKEN_PROJECTILE_DAMAGE_TAKEN_MULTIPLIER.get(); }
static boolean krakenSquidSpawnEnabled() { return KRAKEN_SQUID_SPAWN_ENABLED.get(); } static boolean krakenSquidSpawnEnabled() { return KRAKEN_SQUID_SPAWN_ENABLED.get(); }
static boolean krakenMassSpawnEnabled() { return KRAKEN_MASS_SPAWN_ENABLED.get(); } static boolean krakenMassSpawnEnabled() { return KRAKEN_MASS_SPAWN_ENABLED.get(); }
static boolean krakenRequireBadOmenToSummon() { return KRAKEN_REQUIRE_BAD_OMEN_TO_SUMMON.get(); } static boolean krakenRequireBadOmenToSummon() { return KRAKEN_REQUIRE_BAD_OMEN_TO_SUMMON.get(); }
static double krakenFollowRange() { return KRAKEN_FOLLOW_RANGE.get(); }
static double krakenDamageRange() { return KRAKEN_DAMAGE_RANGE.get(); }
static double brutalflyHealth() { return BRUTALFLY_HEALTH.get(); } static double brutalflyHealth() { return BRUTALFLY_HEALTH.get(); }
static double brutalflySwipeDamage() { return BRUTALFLY_SWIPE_DAMAGE.get(); } static double brutalflySwipeDamage() { return BRUTALFLY_SWIPE_DAMAGE.get(); }
static double brutalflySpitDamage() { return BRUTALFLY_SPIT_DAMAGE.get(); } static double brutalflySpitDamage() { return BRUTALFLY_SPIT_DAMAGE.get(); }
static double brutalflyDamageRange() { return BRUTALFLY_DAMAGE_RANGE.get(); }
static double mantisHealth() { return MANTIS_HEALTH.get(); } static double mantisHealth() { return MANTIS_HEALTH.get(); }
static double mantisAttackDamage() { return MANTIS_ATTACK_DAMAGE.get(); } static double mantisAttackDamage() { return MANTIS_ATTACK_DAMAGE.get(); }
@@ -708,6 +744,7 @@ public final class AntarchyMobsConfig {
static double alphaMantisFlyingSpeed() { return ALPHA_MANTIS_FLYING_SPEED.get(); } static double alphaMantisFlyingSpeed() { return ALPHA_MANTIS_FLYING_SPEED.get(); }
static int alphaMantisSummonIntervalTicks() { return ALPHA_MANTIS_SUMMON_INTERVAL_TICKS.get(); } static int alphaMantisSummonIntervalTicks() { return ALPHA_MANTIS_SUMMON_INTERVAL_TICKS.get(); }
static int alphaMantisMaxMinions() { return ALPHA_MANTIS_MAX_MINIONS.get(); } static int alphaMantisMaxMinions() { return ALPHA_MANTIS_MAX_MINIONS.get(); }
static double alphaMantisDamageRange() { return ALPHA_MANTIS_DAMAGE_RANGE.get(); }
static double rollyPollyHealth() { return ROLLY_POLLY_HEALTH.get(); } static double rollyPollyHealth() { return ROLLY_POLLY_HEALTH.get(); }
static double rollyPollyMovementSpeed() { return ROLLY_POLLY_MOVEMENT_SPEED.get(); } static double rollyPollyMovementSpeed() { return ROLLY_POLLY_MOVEMENT_SPEED.get(); }
static double rollyPollyRollSpeedMultiplier() { return ROLLY_POLLY_ROLL_SPEED_MULTIPLIER.get(); } static double rollyPollyRollSpeedMultiplier() { return ROLLY_POLLY_ROLL_SPEED_MULTIPLIER.get(); }
@@ -767,6 +804,7 @@ public final class AntarchyMobsConfig {
static double lucidPearlInvertedDurationSeconds() { return LUCID_PEARL_INVERTED_DURATION_SECONDS.get(); } static double lucidPearlInvertedDurationSeconds() { return LUCID_PEARL_INVERTED_DURATION_SECONDS.get(); }
static double toreterrorHealth() { return TORETERROR_HEALTH.get(); } static double toreterrorHealth() { return TORETERROR_HEALTH.get(); }
static double toreterrorDamageRange() { return TORETERROR_DAMAGE_RANGE.get(); }
static double toreterrorJumpAttackDamage() { return TORETERROR_JUMP_ATTACK_DAMAGE.get(); } static double toreterrorJumpAttackDamage() { return TORETERROR_JUMP_ATTACK_DAMAGE.get(); }
static double toreterrorJumpAttackKnockback() { return TORETERROR_JUMP_ATTACK_KNOCKBACK.get(); } static double toreterrorJumpAttackKnockback() { return TORETERROR_JUMP_ATTACK_KNOCKBACK.get(); }
static double toreterrorSpinDamage() { return TORETERROR_SPIN_DAMAGE.get(); } static double toreterrorSpinDamage() { return TORETERROR_SPIN_DAMAGE.get(); }
@@ -806,4 +844,5 @@ public final class AntarchyMobsConfig {
static double herculesBeetleHealth() { return HERCULES_BEETLE_HEALTH.get(); } static double herculesBeetleHealth() { return HERCULES_BEETLE_HEALTH.get(); }
static double herculesBeetleAttackDamage() { return HERCULES_BEETLE_ATTACK_DAMAGE.get(); } static double herculesBeetleAttackDamage() { return HERCULES_BEETLE_ATTACK_DAMAGE.get(); }
static double herculesBeetleChargeDamage() { return HERCULES_BEETLE_CHARGE_DAMAGE.get(); } static double herculesBeetleChargeDamage() { return HERCULES_BEETLE_CHARGE_DAMAGE.get(); }
static double herculesBeetleDamageRange() { return HERCULES_BEETLE_DAMAGE_RANGE.get(); }
} }
@@ -88,14 +88,16 @@ public final class AntarchyToolsConfig {
private static final ForgeConfigSpec.BooleanValue KRAKENS_GRASP_INNATE_LOYALTY; private static final ForgeConfigSpec.BooleanValue KRAKENS_GRASP_INNATE_LOYALTY;
private static final ForgeConfigSpec.IntValue KRAKENS_GRASP_INNATE_LOYALTY_LEVEL; private static final ForgeConfigSpec.IntValue KRAKENS_GRASP_INNATE_LOYALTY_LEVEL;
private static final ForgeConfigSpec.IntValue KRAKENS_GRASP_TENTACLE_DURATION_TICKS; private static final ForgeConfigSpec.IntValue KRAKENS_GRASP_TENTACLE_DURATION_TICKS;
private static final ForgeConfigSpec.DoubleValue KRAKENS_GRASP_TENTACLE_DAMAGE;
private static final ForgeConfigSpec.DoubleValue KRAKENS_GRASP_TENTACLE_RADIUS; private static final ForgeConfigSpec.DoubleValue KRAKENS_GRASP_TENTACLE_RADIUS;
private static final ForgeConfigSpec.IntValue KRAKENS_GRASP_TENTACLE_DAMAGE_INTERVAL_TICKS; private static final ForgeConfigSpec.IntValue KRAKENS_GRASP_TENTACLE_SLOWNESS_AMPLIFIER;
private static final ForgeConfigSpec.IntValue KRAKENS_GRASP_TENTACLE_SLOWNESS_REFRESH_TICKS;
private static final ForgeConfigSpec.IntValue BIG_BERTHA_BASILISK_PARALYZE_DURATION_TICKS; private static final ForgeConfigSpec.IntValue BIG_BERTHA_BASILISK_PARALYZE_DURATION_TICKS;
private static final ForgeConfigSpec.IntValue BIG_BERTHA_KRAKEN_SLOW_TICKS; private static final ForgeConfigSpec.IntValue BIG_BERTHA_KRAKEN_SLOW_TICKS;
private static final ForgeConfigSpec.DoubleValue BIG_BERTHA_BASILISK_COOLDOWN_SECONDS; private static final ForgeConfigSpec.DoubleValue BIG_BERTHA_BASILISK_COOLDOWN_SECONDS;
private static final ForgeConfigSpec.DoubleValue BIG_BERTHA_LUCID_INVERTED_DURATION_SECONDS; private static final ForgeConfigSpec.DoubleValue BIG_BERTHA_LUCID_INVERTED_DURATION_SECONDS;
private static final ForgeConfigSpec.DoubleValue BIG_BERTHA_LUCID_INVERTED_DAMAGE_BONUS_PERCENT; private static final ForgeConfigSpec.DoubleValue BIG_BERTHA_LUCID_INVERTED_DAMAGE_BONUS_PERCENT;
private static final ForgeConfigSpec.DoubleValue BIG_BERTHA_NONE_MODE_DAMAGE_BONUS_PERCENT;
private static final ForgeConfigSpec.DoubleValue BIG_BERTHA_NIGHTMARE_DAMAGE_BONUS_PERCENT;
private static final ForgeConfigSpec.DoubleValue SCORPION_WHIP_BASE_DAMAGE; private static final ForgeConfigSpec.DoubleValue SCORPION_WHIP_BASE_DAMAGE;
private static final ForgeConfigSpec.DoubleValue SCORPION_WHIP_REACH_BONUS; private static final ForgeConfigSpec.DoubleValue SCORPION_WHIP_REACH_BONUS;
private static final ForgeConfigSpec.IntValue SCORPION_WHIP_POISON_DURATION_TICKS; private static final ForgeConfigSpec.IntValue SCORPION_WHIP_POISON_DURATION_TICKS;
@@ -321,6 +323,8 @@ public final class AntarchyToolsConfig {
BIG_BERTHA_BASILISK_COOLDOWN_SECONDS = b.comment("Cooldown in seconds after using Basilisk mode's right-click paralyze.") .defineInRange("basiliskModeCooldownSeconds", 7.0D, 0.0D, 3600.0D); BIG_BERTHA_BASILISK_COOLDOWN_SECONDS = b.comment("Cooldown in seconds after using Basilisk mode's right-click paralyze.") .defineInRange("basiliskModeCooldownSeconds", 7.0D, 0.0D, 3600.0D);
BIG_BERTHA_LUCID_INVERTED_DURATION_SECONDS = b.comment("How long Lucid mode's inversion lasts on a target, in seconds.") .defineInRange("lucidModeInvertedDurationSeconds", 3.0D, 0.0D, 3600.0D); BIG_BERTHA_LUCID_INVERTED_DURATION_SECONDS = b.comment("How long Lucid mode's inversion lasts on a target, in seconds.") .defineInRange("lucidModeInvertedDurationSeconds", 3.0D, 0.0D, 3600.0D);
BIG_BERTHA_LUCID_INVERTED_DAMAGE_BONUS_PERCENT = b.comment("Bonus damage percent from Lucid mode while the wielder is inverted.") .defineInRange("lucidModeInvertedDamageBonusPercent", 25.0D, 0.0D, 1000.0D); BIG_BERTHA_LUCID_INVERTED_DAMAGE_BONUS_PERCENT = b.comment("Bonus damage percent from Lucid mode while the wielder is inverted.") .defineInRange("lucidModeInvertedDamageBonusPercent", 25.0D, 0.0D, 1000.0D);
BIG_BERTHA_NONE_MODE_DAMAGE_BONUS_PERCENT = b.comment("Bonus damage percent dealt while no boss mode is selected (the default mode).").defineInRange("noneModeDamageBonusPercent", 15.0D, 0.0D, 1000.0D);
BIG_BERTHA_NIGHTMARE_DAMAGE_BONUS_PERCENT = b.comment("Bonus damage percent from Nightmare mode hits.") .defineInRange("nightmareModeDamageBonusPercent", 30.0D, 0.0D, 1000.0D);
b.pop(); b.pop();
b.push("attitudeAdjuster"); b.push("attitudeAdjuster");
@@ -336,9 +340,9 @@ public final class AntarchyToolsConfig {
KRAKENS_GRASP_INNATE_LOYALTY = b.comment("Whether Kraken's Grasp automatically returns to its thrower like an enchanted Loyalty trident.").define("innateLoyalty", true); KRAKENS_GRASP_INNATE_LOYALTY = b.comment("Whether Kraken's Grasp automatically returns to its thrower like an enchanted Loyalty trident.").define("innateLoyalty", true);
KRAKENS_GRASP_INNATE_LOYALTY_LEVEL = b.comment("Effective Loyalty level used for the innate return, from 1 to 3.") .defineInRange("innateLoyaltyLevel", 3, 1, 3); KRAKENS_GRASP_INNATE_LOYALTY_LEVEL = b.comment("Effective Loyalty level used for the innate return, from 1 to 3.") .defineInRange("innateLoyaltyLevel", 3, 1, 3);
KRAKENS_GRASP_TENTACLE_DURATION_TICKS = b.comment("How long a summoned tentacle lasts, in ticks.") .defineInRange("tentacleDurationTicks", 100, 1, 72000); KRAKENS_GRASP_TENTACLE_DURATION_TICKS = b.comment("How long a summoned tentacle lasts, in ticks.") .defineInRange("tentacleDurationTicks", 100, 1, 72000);
KRAKENS_GRASP_TENTACLE_DAMAGE = b.comment("Damage a tentacle deals per damage interval to nearby entities.") .defineInRange("tentacleDamage", 3.0D, 0.0D, 4096.0D); KRAKENS_GRASP_TENTACLE_RADIUS = b.comment("Radius in blocks around a tentacle that it can grab and slow.") .defineInRange("tentacleRadius", 3.0D, 0.0D, 32.0D);
KRAKENS_GRASP_TENTACLE_RADIUS = b.comment("Radius in blocks around a tentacle that it can grab and damage.") .defineInRange("tentacleRadius", 3.0D, 0.0D, 32.0D); KRAKENS_GRASP_TENTACLE_SLOWNESS_AMPLIFIER = b.comment("Slowness amplifier applied to entities held by a tentacle (0 = Slowness I).").defineInRange("tentacleSlownessAmplifier", 8, 0, 255);
KRAKENS_GRASP_TENTACLE_DAMAGE_INTERVAL_TICKS = b.comment("How often, in ticks, a tentacle damages nearby entities.") .defineInRange("tentacleDamageIntervalTicks", 20, 1, 2000); KRAKENS_GRASP_TENTACLE_SLOWNESS_REFRESH_TICKS = b.comment("How often, in ticks, a tentacle refreshes its slowness effect on nearby entities. Kept low so the effect fades quickly once an entity leaves.").defineInRange("tentacleSlownessRefreshTicks", 5, 1, 2000);
b.pop(); b.pop();
b.push("scorpionWhip"); b.push("scorpionWhip");
@@ -593,6 +597,8 @@ public final class AntarchyToolsConfig {
static double bigBerthaBasiliskCooldownSeconds() { return BIG_BERTHA_BASILISK_COOLDOWN_SECONDS.get(); } static double bigBerthaBasiliskCooldownSeconds() { return BIG_BERTHA_BASILISK_COOLDOWN_SECONDS.get(); }
static double bigBerthaLucidInvertedDurationSeconds() { return BIG_BERTHA_LUCID_INVERTED_DURATION_SECONDS.get(); } static double bigBerthaLucidInvertedDurationSeconds() { return BIG_BERTHA_LUCID_INVERTED_DURATION_SECONDS.get(); }
static double bigBerthaLucidInvertedDamageBonusPercent(){ return BIG_BERTHA_LUCID_INVERTED_DAMAGE_BONUS_PERCENT.get(); } static double bigBerthaLucidInvertedDamageBonusPercent(){ return BIG_BERTHA_LUCID_INVERTED_DAMAGE_BONUS_PERCENT.get(); }
static double bigBerthaNoneModeDamageBonusPercent() { return BIG_BERTHA_NONE_MODE_DAMAGE_BONUS_PERCENT.get(); }
static double bigBerthaNightmareDamageBonusPercent() { return BIG_BERTHA_NIGHTMARE_DAMAGE_BONUS_PERCENT.get(); }
static double krakensGraspAttackDamage() { return KRAKENS_GRASP_ATTACK_DAMAGE.get(); } static double krakensGraspAttackDamage() { return KRAKENS_GRASP_ATTACK_DAMAGE.get(); }
static double krakensGraspAttackSpeed() { return KRAKENS_GRASP_ATTACK_SPEED.get(); } static double krakensGraspAttackSpeed() { return KRAKENS_GRASP_ATTACK_SPEED.get(); }
@@ -601,9 +607,9 @@ public final class AntarchyToolsConfig {
static boolean krakensGraspInnateLoyalty() { return KRAKENS_GRASP_INNATE_LOYALTY.get(); } static boolean krakensGraspInnateLoyalty() { return KRAKENS_GRASP_INNATE_LOYALTY.get(); }
static int krakensGraspInnateLoyaltyLevel() { return KRAKENS_GRASP_INNATE_LOYALTY_LEVEL.get(); } static int krakensGraspInnateLoyaltyLevel() { return KRAKENS_GRASP_INNATE_LOYALTY_LEVEL.get(); }
static int krakensGraspTentacleDurationTicks() { return KRAKENS_GRASP_TENTACLE_DURATION_TICKS.get(); } static int krakensGraspTentacleDurationTicks() { return KRAKENS_GRASP_TENTACLE_DURATION_TICKS.get(); }
static double krakensGraspTentacleDamage() { return KRAKENS_GRASP_TENTACLE_DAMAGE.get(); }
static double krakensGraspTentacleRadius() { return KRAKENS_GRASP_TENTACLE_RADIUS.get(); } static double krakensGraspTentacleRadius() { return KRAKENS_GRASP_TENTACLE_RADIUS.get(); }
static int krakensGraspTentacleDamageIntervalTicks() { return KRAKENS_GRASP_TENTACLE_DAMAGE_INTERVAL_TICKS.get(); } static int krakensGraspTentacleSlownessAmplifier() { return KRAKENS_GRASP_TENTACLE_SLOWNESS_AMPLIFIER.get(); }
static int krakensGraspTentacleSlownessRefreshTicks() { return KRAKENS_GRASP_TENTACLE_SLOWNESS_REFRESH_TICKS.get(); }
static double scorpionWhipBaseDamage() { return SCORPION_WHIP_BASE_DAMAGE.get(); } static double scorpionWhipBaseDamage() { return SCORPION_WHIP_BASE_DAMAGE.get(); }
static double scorpionWhipReachBonus() { return SCORPION_WHIP_REACH_BONUS.get(); } static double scorpionWhipReachBonus() { return SCORPION_WHIP_REACH_BONUS.get(); }
static int scorpionWhipPoisonDurationTicks() { return SCORPION_WHIP_POISON_DURATION_TICKS.get(); } static int scorpionWhipPoisonDurationTicks() { return SCORPION_WHIP_POISON_DURATION_TICKS.get(); }
@@ -293,6 +293,8 @@ public final class AntarchyForgeClient {
event.registerSpecial(AntarchyForgeMisc.INVERTED_GEYSER_ERUPTION.get(), new InvertedGeyserEruptionParticle.Provider()); event.registerSpecial(AntarchyForgeMisc.INVERTED_GEYSER_ERUPTION.get(), new InvertedGeyserEruptionParticle.Provider());
event.registerSpriteSet(AntarchyForgeMisc.FIREFLY.get(), FireflyParticle.Provider::new); event.registerSpriteSet(AntarchyForgeMisc.FIREFLY.get(), FireflyParticle.Provider::new);
event.registerSpriteSet(AntarchyForgeMisc.ORANGE_ASH.get(), OrangeAshParticle.Provider::new); event.registerSpriteSet(AntarchyForgeMisc.ORANGE_ASH.get(), OrangeAshParticle.Provider::new);
event.registerSpriteSet(AntarchyForgeMisc.LUCID_BOLT_IMPACT_SMALL.get(), LucidBoltImpactParticle.SmallProvider::new);
event.registerSpriteSet(AntarchyForgeMisc.LUCID_BOLT_IMPACT_LARGE.get(), LucidBoltImpactParticle.LargeProvider::new);
} }
@SubscribeEvent @SubscribeEvent
@@ -176,6 +176,10 @@ public final class AntarchyForgeMisc {
AntarchyForgeMisc::simpleParticleType); AntarchyForgeMisc::simpleParticleType);
public static final RegistryObject<SimpleParticleType> ORANGE_ASH = PARTICLE_TYPES.register("orange_ash", public static final RegistryObject<SimpleParticleType> ORANGE_ASH = PARTICLE_TYPES.register("orange_ash",
AntarchyForgeMisc::simpleParticleType); AntarchyForgeMisc::simpleParticleType);
public static final RegistryObject<SimpleParticleType> LUCID_BOLT_IMPACT_SMALL = PARTICLE_TYPES.register("lucid_bolt_impact_small",
AntarchyForgeMisc::simpleParticleType);
public static final RegistryObject<SimpleParticleType> LUCID_BOLT_IMPACT_LARGE = PARTICLE_TYPES.register("lucid_bolt_impact_large",
AntarchyForgeMisc::simpleParticleType);
public static final RegistryObject<ParticleType<InvertedGeyserBaseParticleOptions>> INVERTED_GEYSER_BASE = PARTICLE_TYPES.register("inverted_geyser_base", public static final RegistryObject<ParticleType<InvertedGeyserBaseParticleOptions>> INVERTED_GEYSER_BASE = PARTICLE_TYPES.register("inverted_geyser_base",
() -> particleType(InvertedGeyserBaseParticleOptions.deserializer())); () -> particleType(InvertedGeyserBaseParticleOptions.deserializer()));
public static final RegistryObject<ParticleType<InvertedGeyserParticleOptions>> INVERTED_GEYSER_PLUME = PARTICLE_TYPES.register("inverted_geyser_plume", public static final RegistryObject<ParticleType<InvertedGeyserParticleOptions>> INVERTED_GEYSER_PLUME = PARTICLE_TYPES.register("inverted_geyser_plume",
@@ -7,6 +7,7 @@
"entity.MultipartEntityBridgeMixin", "entity.MultipartEntityBridgeMixin",
"entity.MultipartEntityLevelRegistryMixin", "entity.MultipartEntityLevelRegistryMixin",
"entity.ParalyzedMobFreezeMixin", "entity.ParalyzedMobFreezeMixin",
"infinity.AmendmentRareOresMixin",
"infinity.ConfigGenInvocationMixin", "infinity.ConfigGenInvocationMixin",
"item.BucketItemThoraxisWaterMixin", "item.BucketItemThoraxisWaterMixin",
"level.ClientLevelPartEntitiesAccessor", "level.ClientLevelPartEntitiesAccessor",
@@ -101,16 +101,22 @@ public final class AntarchyConfigModuleNeoforge {
AntarchySettings.setJumpyBugLatchDamage(AntarchyMobsConfig.jumpyBugLatchDamage()); AntarchySettings.setJumpyBugLatchDamage(AntarchyMobsConfig.jumpyBugLatchDamage());
AntarchySettings.setJumpyBugCamouflageAlpha(AntarchyMobsConfig.jumpyBugCamouflageAlpha()); AntarchySettings.setJumpyBugCamouflageAlpha(AntarchyMobsConfig.jumpyBugCamouflageAlpha());
AntarchySettings.setEmperorScorpionDamageRange(AntarchyMobsConfig.emperorScorpionDamageRange());
AntarchySettings.setEmperorScorpionMinDespawnTicks(AntarchyMobsConfig.emperorScorpionMinDespawnTicks());
AntarchySettings.setKrakenHealth(AntarchyMobsConfig.krakenHealth()); AntarchySettings.setKrakenHealth(AntarchyMobsConfig.krakenHealth());
AntarchySettings.setKrakenAttackDamage(AntarchyMobsConfig.krakenAttackDamage()); AntarchySettings.setKrakenAttackDamage(AntarchyMobsConfig.krakenAttackDamage());
AntarchySettings.setKrakenProjectileDamageTakenMultiplier(AntarchyMobsConfig.krakenProjectileDamageTakenMultiplier()); AntarchySettings.setKrakenProjectileDamageTakenMultiplier(AntarchyMobsConfig.krakenProjectileDamageTakenMultiplier());
AntarchySettings.setKrakenSquidSpawnEnabled(AntarchyMobsConfig.krakenSquidSpawnEnabled()); AntarchySettings.setKrakenSquidSpawnEnabled(AntarchyMobsConfig.krakenSquidSpawnEnabled());
AntarchySettings.setKrakenMassSpawnEnabled(AntarchyMobsConfig.krakenMassSpawnEnabled()); AntarchySettings.setKrakenMassSpawnEnabled(AntarchyMobsConfig.krakenMassSpawnEnabled());
AntarchySettings.setKrakenRequireBadOmenToSummon(AntarchyMobsConfig.krakenRequireBadOmenToSummon()); AntarchySettings.setKrakenRequireBadOmenToSummon(AntarchyMobsConfig.krakenRequireBadOmenToSummon());
AntarchySettings.setKrakenFollowRange(AntarchyMobsConfig.krakenFollowRange());
AntarchySettings.setKrakenDamageRange(AntarchyMobsConfig.krakenDamageRange());
AntarchySettings.setBrutalflyHealth(AntarchyMobsConfig.brutalflyHealth()); AntarchySettings.setBrutalflyHealth(AntarchyMobsConfig.brutalflyHealth());
AntarchySettings.setBrutalflySwipeDamage(AntarchyMobsConfig.brutalflySwipeDamage()); AntarchySettings.setBrutalflySwipeDamage(AntarchyMobsConfig.brutalflySwipeDamage());
AntarchySettings.setBrutalflySpitDamage(AntarchyMobsConfig.brutalflySpitDamage()); AntarchySettings.setBrutalflySpitDamage(AntarchyMobsConfig.brutalflySpitDamage());
AntarchySettings.setBrutalflyDamageRange(AntarchyMobsConfig.brutalflyDamageRange());
AntarchySettings.setMantisHealth(AntarchyMobsConfig.mantisHealth()); AntarchySettings.setMantisHealth(AntarchyMobsConfig.mantisHealth());
AntarchySettings.setMantisAttackDamage(AntarchyMobsConfig.mantisAttackDamage()); AntarchySettings.setMantisAttackDamage(AntarchyMobsConfig.mantisAttackDamage());
@@ -124,6 +130,7 @@ public final class AntarchyConfigModuleNeoforge {
AntarchySettings.setAlphaMantisFlyingSpeed(AntarchyMobsConfig.alphaMantisFlyingSpeed()); AntarchySettings.setAlphaMantisFlyingSpeed(AntarchyMobsConfig.alphaMantisFlyingSpeed());
AntarchySettings.setAlphaMantisSummonIntervalTicks(AntarchyMobsConfig.alphaMantisSummonIntervalTicks()); AntarchySettings.setAlphaMantisSummonIntervalTicks(AntarchyMobsConfig.alphaMantisSummonIntervalTicks());
AntarchySettings.setAlphaMantisMaxMinions(AntarchyMobsConfig.alphaMantisMaxMinions()); AntarchySettings.setAlphaMantisMaxMinions(AntarchyMobsConfig.alphaMantisMaxMinions());
AntarchySettings.setAlphaMantisDamageRange(AntarchyMobsConfig.alphaMantisDamageRange());
AntarchySettings.setRollyPollyHealth(AntarchyMobsConfig.rollyPollyHealth()); AntarchySettings.setRollyPollyHealth(AntarchyMobsConfig.rollyPollyHealth());
AntarchySettings.setRollyPollyMovementSpeed(AntarchyMobsConfig.rollyPollyMovementSpeed()); AntarchySettings.setRollyPollyMovementSpeed(AntarchyMobsConfig.rollyPollyMovementSpeed());
@@ -190,6 +197,7 @@ public final class AntarchyConfigModuleNeoforge {
AntarchySettings.setDreadHallucinationMobMaxInterval(AntarchyMobsConfig.dreadHallucinationMobMaxInterval()); AntarchySettings.setDreadHallucinationMobMaxInterval(AntarchyMobsConfig.dreadHallucinationMobMaxInterval());
AntarchySettings.setToreterrorHealth(AntarchyMobsConfig.toreterrorHealth()); AntarchySettings.setToreterrorHealth(AntarchyMobsConfig.toreterrorHealth());
AntarchySettings.setToreterrorDamageRange(AntarchyMobsConfig.toreterrorDamageRange());
AntarchySettings.setToreterrorJumpAttackDamage(AntarchyMobsConfig.toreterrorJumpAttackDamage()); AntarchySettings.setToreterrorJumpAttackDamage(AntarchyMobsConfig.toreterrorJumpAttackDamage());
AntarchySettings.setToreterrorJumpAttackKnockback(AntarchyMobsConfig.toreterrorJumpAttackKnockback()); AntarchySettings.setToreterrorJumpAttackKnockback(AntarchyMobsConfig.toreterrorJumpAttackKnockback());
AntarchySettings.setToreterrorSpinDamage(AntarchyMobsConfig.toreterrorSpinDamage()); AntarchySettings.setToreterrorSpinDamage(AntarchyMobsConfig.toreterrorSpinDamage());
@@ -220,6 +228,7 @@ public final class AntarchyConfigModuleNeoforge {
AntarchySettings.setHerculesBeetleHealth(AntarchyMobsConfig.herculesBeetleHealth()); AntarchySettings.setHerculesBeetleHealth(AntarchyMobsConfig.herculesBeetleHealth());
AntarchySettings.setHerculesBeetleAttackDamage(AntarchyMobsConfig.herculesBeetleAttackDamage()); AntarchySettings.setHerculesBeetleAttackDamage(AntarchyMobsConfig.herculesBeetleAttackDamage());
AntarchySettings.setHerculesBeetleChargeDamage(AntarchyMobsConfig.herculesBeetleChargeDamage()); AntarchySettings.setHerculesBeetleChargeDamage(AntarchyMobsConfig.herculesBeetleChargeDamage());
AntarchySettings.setHerculesBeetleDamageRange(AntarchyMobsConfig.herculesBeetleDamageRange());
AntarchySettings.setOuranwoodDeerHealth(AntarchyMobsConfig.ouranwoodDeerHealth()); AntarchySettings.setOuranwoodDeerHealth(AntarchyMobsConfig.ouranwoodDeerHealth());
AntarchySettings.setGlimmerHealth(AntarchyMobsConfig.glimmerHealth()); AntarchySettings.setGlimmerHealth(AntarchyMobsConfig.glimmerHealth());
} }
@@ -282,6 +291,8 @@ public final class AntarchyConfigModuleNeoforge {
AntarchySettings.setBigBerthaBasiliskCooldownSeconds(AntarchyToolsConfig.bigBerthaBasiliskCooldownSeconds()); AntarchySettings.setBigBerthaBasiliskCooldownSeconds(AntarchyToolsConfig.bigBerthaBasiliskCooldownSeconds());
AntarchySettings.setBigBerthaLucidInvertedDurationSeconds(AntarchyToolsConfig.bigBerthaLucidInvertedDurationSeconds()); AntarchySettings.setBigBerthaLucidInvertedDurationSeconds(AntarchyToolsConfig.bigBerthaLucidInvertedDurationSeconds());
AntarchySettings.setBigBerthaLucidInvertedDamageBonusPercent(AntarchyToolsConfig.bigBerthaLucidInvertedDamageBonusPercent()); AntarchySettings.setBigBerthaLucidInvertedDamageBonusPercent(AntarchyToolsConfig.bigBerthaLucidInvertedDamageBonusPercent());
AntarchySettings.setBigBerthaNoneModeDamageBonusPercent(AntarchyToolsConfig.bigBerthaNoneModeDamageBonusPercent());
AntarchySettings.setBigBerthaNightmareDamageBonusPercent(AntarchyToolsConfig.bigBerthaNightmareDamageBonusPercent());
AntarchySettings.setKrakensGraspAttackDamage(AntarchyToolsConfig.krakensGraspAttackDamage()); AntarchySettings.setKrakensGraspAttackDamage(AntarchyToolsConfig.krakensGraspAttackDamage());
AntarchySettings.setKrakensGraspAttackSpeed(AntarchyToolsConfig.krakensGraspAttackSpeed()); AntarchySettings.setKrakensGraspAttackSpeed(AntarchyToolsConfig.krakensGraspAttackSpeed());
AntarchySettings.setKrakensGraspThrownDamage(AntarchyToolsConfig.krakensGraspThrownDamage()); AntarchySettings.setKrakensGraspThrownDamage(AntarchyToolsConfig.krakensGraspThrownDamage());
@@ -289,9 +300,9 @@ public final class AntarchyConfigModuleNeoforge {
AntarchySettings.setKrakensGraspInnateLoyalty(AntarchyToolsConfig.krakensGraspInnateLoyalty()); AntarchySettings.setKrakensGraspInnateLoyalty(AntarchyToolsConfig.krakensGraspInnateLoyalty());
AntarchySettings.setKrakensGraspInnateLoyaltyLevel(AntarchyToolsConfig.krakensGraspInnateLoyaltyLevel()); AntarchySettings.setKrakensGraspInnateLoyaltyLevel(AntarchyToolsConfig.krakensGraspInnateLoyaltyLevel());
AntarchySettings.setKrakensGraspTentacleDurationTicks(AntarchyToolsConfig.krakensGraspTentacleDurationTicks()); AntarchySettings.setKrakensGraspTentacleDurationTicks(AntarchyToolsConfig.krakensGraspTentacleDurationTicks());
AntarchySettings.setKrakensGraspTentacleDamage(AntarchyToolsConfig.krakensGraspTentacleDamage());
AntarchySettings.setKrakensGraspTentacleRadius(AntarchyToolsConfig.krakensGraspTentacleRadius()); AntarchySettings.setKrakensGraspTentacleRadius(AntarchyToolsConfig.krakensGraspTentacleRadius());
AntarchySettings.setKrakensGraspTentacleDamageIntervalTicks(AntarchyToolsConfig.krakensGraspTentacleDamageIntervalTicks()); AntarchySettings.setKrakensGraspTentacleSlownessAmplifier(AntarchyToolsConfig.krakensGraspTentacleSlownessAmplifier());
AntarchySettings.setKrakensGraspTentacleSlownessRefreshTicks(AntarchyToolsConfig.krakensGraspTentacleSlownessRefreshTicks());
AntarchySettings.setScorpionWhipBaseDamage(AntarchyToolsConfig.scorpionWhipBaseDamage()); AntarchySettings.setScorpionWhipBaseDamage(AntarchyToolsConfig.scorpionWhipBaseDamage());
AntarchySettings.setScorpionWhipReachBonus(AntarchyToolsConfig.scorpionWhipReachBonus()); AntarchySettings.setScorpionWhipReachBonus(AntarchyToolsConfig.scorpionWhipReachBonus());
AntarchySettings.setScorpionWhipPoisonDurationTicks(AntarchyToolsConfig.scorpionWhipPoisonDurationTicks()); AntarchySettings.setScorpionWhipPoisonDurationTicks(AntarchyToolsConfig.scorpionWhipPoisonDurationTicks());
@@ -69,6 +69,12 @@ public final class AntarchyMobsConfig {
private static final ModConfigSpec.DoubleValue JUMPY_BUG_CAMOUFLAGE_ALPHA; private static final ModConfigSpec.DoubleValue JUMPY_BUG_CAMOUFLAGE_ALPHA;
// Emperor Scorpion
private static final ModConfigSpec.DoubleValue EMPEROR_SCORPION_DAMAGE_RANGE;
private static final ModConfigSpec.IntValue EMPEROR_SCORPION_MIN_DESPAWN_TICKS;
// Kraken // Kraken
private static final ModConfigSpec.DoubleValue KRAKEN_HEALTH; private static final ModConfigSpec.DoubleValue KRAKEN_HEALTH;
@@ -77,6 +83,8 @@ public final class AntarchyMobsConfig {
private static final ModConfigSpec.BooleanValue KRAKEN_SQUID_SPAWN_ENABLED; private static final ModConfigSpec.BooleanValue KRAKEN_SQUID_SPAWN_ENABLED;
private static final ModConfigSpec.BooleanValue KRAKEN_MASS_SPAWN_ENABLED; private static final ModConfigSpec.BooleanValue KRAKEN_MASS_SPAWN_ENABLED;
private static final ModConfigSpec.BooleanValue KRAKEN_REQUIRE_BAD_OMEN_TO_SUMMON; private static final ModConfigSpec.BooleanValue KRAKEN_REQUIRE_BAD_OMEN_TO_SUMMON;
private static final ModConfigSpec.DoubleValue KRAKEN_FOLLOW_RANGE;
private static final ModConfigSpec.DoubleValue KRAKEN_DAMAGE_RANGE;
// Brutalfly // Brutalfly
@@ -84,6 +92,7 @@ public final class AntarchyMobsConfig {
private static final ModConfigSpec.DoubleValue BRUTALFLY_HEALTH; private static final ModConfigSpec.DoubleValue BRUTALFLY_HEALTH;
private static final ModConfigSpec.DoubleValue BRUTALFLY_SWIPE_DAMAGE; private static final ModConfigSpec.DoubleValue BRUTALFLY_SWIPE_DAMAGE;
private static final ModConfigSpec.DoubleValue BRUTALFLY_SPIT_DAMAGE; private static final ModConfigSpec.DoubleValue BRUTALFLY_SPIT_DAMAGE;
private static final ModConfigSpec.DoubleValue BRUTALFLY_DAMAGE_RANGE;
// Mantis // Mantis
@@ -103,6 +112,7 @@ public final class AntarchyMobsConfig {
private static final ModConfigSpec.DoubleValue ALPHA_MANTIS_FLYING_SPEED; private static final ModConfigSpec.DoubleValue ALPHA_MANTIS_FLYING_SPEED;
private static final ModConfigSpec.IntValue ALPHA_MANTIS_SUMMON_INTERVAL_TICKS; private static final ModConfigSpec.IntValue ALPHA_MANTIS_SUMMON_INTERVAL_TICKS;
private static final ModConfigSpec.IntValue ALPHA_MANTIS_MAX_MINIONS; private static final ModConfigSpec.IntValue ALPHA_MANTIS_MAX_MINIONS;
private static final ModConfigSpec.DoubleValue ALPHA_MANTIS_DAMAGE_RANGE;
// Rolly Polly // Rolly Polly
@@ -185,6 +195,7 @@ public final class AntarchyMobsConfig {
// Toreterror // Toreterror
private static final ModConfigSpec.DoubleValue TORETERROR_HEALTH; private static final ModConfigSpec.DoubleValue TORETERROR_HEALTH;
private static final ModConfigSpec.DoubleValue TORETERROR_DAMAGE_RANGE;
private static final ModConfigSpec.DoubleValue TORETERROR_JUMP_ATTACK_DAMAGE; private static final ModConfigSpec.DoubleValue TORETERROR_JUMP_ATTACK_DAMAGE;
private static final ModConfigSpec.DoubleValue TORETERROR_JUMP_ATTACK_KNOCKBACK; private static final ModConfigSpec.DoubleValue TORETERROR_JUMP_ATTACK_KNOCKBACK;
private static final ModConfigSpec.DoubleValue TORETERROR_SPIN_DAMAGE; private static final ModConfigSpec.DoubleValue TORETERROR_SPIN_DAMAGE;
@@ -247,6 +258,7 @@ public final class AntarchyMobsConfig {
private static final ModConfigSpec.DoubleValue HERCULES_BEETLE_HEALTH; private static final ModConfigSpec.DoubleValue HERCULES_BEETLE_HEALTH;
private static final ModConfigSpec.DoubleValue HERCULES_BEETLE_ATTACK_DAMAGE; private static final ModConfigSpec.DoubleValue HERCULES_BEETLE_ATTACK_DAMAGE;
private static final ModConfigSpec.DoubleValue HERCULES_BEETLE_CHARGE_DAMAGE; private static final ModConfigSpec.DoubleValue HERCULES_BEETLE_CHARGE_DAMAGE;
private static final ModConfigSpec.DoubleValue HERCULES_BEETLE_DAMAGE_RANGE;
// Lucid // Lucid
@@ -398,6 +410,18 @@ public final class AntarchyMobsConfig {
b.pop(); b.pop();
// Emperor Scorpion
b.push("emperorScorpion");
EMPEROR_SCORPION_DAMAGE_RANGE = b
.comment("Range in blocks a player must be within for the Emperor Scorpion to be able to take damage. Prevents cheesing it from outside its aggro range.")
.defineInRange("damageRange", 80.0D, 1.0D, 256.0D);
EMPEROR_SCORPION_MIN_DESPAWN_TICKS = b
.comment("Minimum ticks after spawning before the Emperor Scorpion can despawn from being far away. It also never despawns once it has taken damage. 6000 ticks = 5 minutes.")
.defineInRange("minDespawnTicks", 6000, 0, 1000000);
b.pop();
// Kraken // Kraken
b.push("kraken"); b.push("kraken");
@@ -407,6 +431,8 @@ public final class AntarchyMobsConfig {
KRAKEN_SQUID_SPAWN_ENABLED = b.comment("If true, a player killing a Missile Squid has a 1/100 chance to spawn a single Kraken nearby.") .define("squidSpawnEnabled", true); KRAKEN_SQUID_SPAWN_ENABLED = b.comment("If true, a player killing a Missile Squid has a 1/100 chance to spawn a single Kraken nearby.") .define("squidSpawnEnabled", true);
KRAKEN_MASS_SPAWN_ENABLED = b.comment("If true, a player killing a Missile Squid has a 1/500 chance to spawn 10 Krakens. Independent from the single spawn.").define("massSpawnEnabled", true); KRAKEN_MASS_SPAWN_ENABLED = b.comment("If true, a player killing a Missile Squid has a 1/500 chance to spawn 10 Krakens. Independent from the single spawn.").define("massSpawnEnabled", true);
KRAKEN_REQUIRE_BAD_OMEN_TO_SUMMON = b.comment("If true, the killer must have Bad Omen to summon a single Kraken; chance scales with Bad Omen level. Mass spawn is unaffected by level but still requires Bad Omen when this is on.").define("requireBadOmenToSummon", true); KRAKEN_REQUIRE_BAD_OMEN_TO_SUMMON = b.comment("If true, the killer must have Bad Omen to summon a single Kraken; chance scales with Bad Omen level. Mass spawn is unaffected by level but still requires Bad Omen when this is on.").define("requireBadOmenToSummon", true);
KRAKEN_FOLLOW_RANGE = b.comment("How far the Kraken can see/target players.").defineInRange("followRange", 96.0D, 1.0D, 256.0D);
KRAKEN_DAMAGE_RANGE = b.comment("Range in blocks a player must be within for the Kraken to be able to take damage. Prevents cheesing it from outside its aggro range.").defineInRange("damageRange", 96.0D, 1.0D, 256.0D);
b.pop(); b.pop();
@@ -416,6 +442,7 @@ public final class AntarchyMobsConfig {
BRUTALFLY_HEALTH = b.comment("Base max health.") .defineInRange("health", 200.0D, 1.0D, 32768.0D); BRUTALFLY_HEALTH = b.comment("Base max health.") .defineInRange("health", 200.0D, 1.0D, 32768.0D);
BRUTALFLY_SWIPE_DAMAGE = b.comment("Damage dealt by a claw swipe.") .defineInRange("swipeDamage", 15.0D, 0.0D, 1024.0D); BRUTALFLY_SWIPE_DAMAGE = b.comment("Damage dealt by a claw swipe.") .defineInRange("swipeDamage", 15.0D, 0.0D, 1024.0D);
BRUTALFLY_SPIT_DAMAGE = b.comment("Direct hit damage from a spit orb before lingering effect.").defineInRange("spitDamage", 5.0D, 0.0D, 1024.0D); BRUTALFLY_SPIT_DAMAGE = b.comment("Direct hit damage from a spit orb before lingering effect.").defineInRange("spitDamage", 5.0D, 0.0D, 1024.0D);
BRUTALFLY_DAMAGE_RANGE = b.comment("Range in blocks a player must be within for the Brutalfly to be able to take damage. Prevents cheesing it from outside its aggro range.").defineInRange("damageRange", 48.0D, 1.0D, 256.0D);
b.pop(); b.pop();
@@ -439,6 +466,7 @@ public final class AntarchyMobsConfig {
ALPHA_MANTIS_FLYING_SPEED = b.comment("Base flying speed.") .defineInRange("flyingSpeed", 0.77D, 0.0D, 10.0D); ALPHA_MANTIS_FLYING_SPEED = b.comment("Base flying speed.") .defineInRange("flyingSpeed", 0.77D, 0.0D, 10.0D);
ALPHA_MANTIS_SUMMON_INTERVAL_TICKS = b.comment("Ticks between mantis minion summons while in combat.") .defineInRange("summonIntervalTicks", 300, 20, 72000); ALPHA_MANTIS_SUMMON_INTERVAL_TICKS = b.comment("Ticks between mantis minion summons while in combat.") .defineInRange("summonIntervalTicks", 300, 20, 72000);
ALPHA_MANTIS_MAX_MINIONS = b.comment("Maximum summoned mantises alive near the alpha at once.") .defineInRange("maxMinions", 4, 0, 32); ALPHA_MANTIS_MAX_MINIONS = b.comment("Maximum summoned mantises alive near the alpha at once.") .defineInRange("maxMinions", 4, 0, 32);
ALPHA_MANTIS_DAMAGE_RANGE = b.comment("Range in blocks a player must be within for the Alpha Mantis to be able to take damage. Prevents cheesing it from outside its aggro range.").defineInRange("damageRange", 48.0D, 1.0D, 256.0D);
b.pop(); b.pop();
@@ -612,10 +640,12 @@ public final class AntarchyMobsConfig {
HERCULES_BEETLE_HEALTH = b.comment("Base max health.").defineInRange("health", 500.0D, 1.0D, 32768.0D); HERCULES_BEETLE_HEALTH = b.comment("Base max health.").defineInRange("health", 500.0D, 1.0D, 32768.0D);
HERCULES_BEETLE_ATTACK_DAMAGE = b.comment("Base melee damage for ground and flying attacks.").defineInRange("attackDamage", 30.0D, 0.0D, 1024.0D); HERCULES_BEETLE_ATTACK_DAMAGE = b.comment("Base melee damage for ground and flying attacks.").defineInRange("attackDamage", 30.0D, 0.0D, 1024.0D);
HERCULES_BEETLE_CHARGE_DAMAGE = b.comment("AOE impact damage dealt when a charge collides.").defineInRange("chargeDamage", 40.0D, 0.0D, 1024.0D); HERCULES_BEETLE_CHARGE_DAMAGE = b.comment("AOE impact damage dealt when a charge collides.").defineInRange("chargeDamage", 40.0D, 0.0D, 1024.0D);
HERCULES_BEETLE_DAMAGE_RANGE = b.comment("Range in blocks a player must be within for the Hercules Beetle to be able to take damage. Prevents cheesing it from outside its aggro range.").defineInRange("damageRange", 48.0D, 1.0D, 256.0D);
b.pop(); b.pop();
b.push("toreterror"); b.push("toreterror");
TORETERROR_HEALTH = b.comment("Base max health.").defineInRange("health", 300.0D, 1.0D, 32768.0D); TORETERROR_HEALTH = b.comment("Base max health.").defineInRange("health", 300.0D, 1.0D, 32768.0D);
TORETERROR_DAMAGE_RANGE = b.comment("Range in blocks a player must be within for the Toreterror to be able to take damage. Prevents cheesing it from outside its aggro range.").defineInRange("damageRange", 48.0D, 1.0D, 256.0D);
TORETERROR_JUMP_ATTACK_DAMAGE = b.comment("Damage dealt by the jump shockwave.").defineInRange("jumpAttackDamage", 14.0D, 0.0D, 1024.0D); TORETERROR_JUMP_ATTACK_DAMAGE = b.comment("Damage dealt by the jump shockwave.").defineInRange("jumpAttackDamage", 14.0D, 0.0D, 1024.0D);
TORETERROR_JUMP_ATTACK_KNOCKBACK = b.comment("Knockback strength of the jump shockwave.").defineInRange("jumpAttackKnockback", 2.5D, 0.0D, 10.0D); TORETERROR_JUMP_ATTACK_KNOCKBACK = b.comment("Knockback strength of the jump shockwave.").defineInRange("jumpAttackKnockback", 2.5D, 0.0D, 10.0D);
TORETERROR_SPIN_DAMAGE = b.comment("Damage per spin-attack tick.").defineInRange("spinDamage", 8.0D, 0.0D, 1024.0D); TORETERROR_SPIN_DAMAGE = b.comment("Damage per spin-attack tick.").defineInRange("spinDamage", 8.0D, 0.0D, 1024.0D);
@@ -686,16 +716,22 @@ public final class AntarchyMobsConfig {
static double jumpyBugLatchDamage() { return JUMPY_BUG_LATCH_DAMAGE.get(); } static double jumpyBugLatchDamage() { return JUMPY_BUG_LATCH_DAMAGE.get(); }
static double jumpyBugCamouflageAlpha() { return JUMPY_BUG_CAMOUFLAGE_ALPHA.get(); } static double jumpyBugCamouflageAlpha() { return JUMPY_BUG_CAMOUFLAGE_ALPHA.get(); }
static double emperorScorpionDamageRange() { return EMPEROR_SCORPION_DAMAGE_RANGE.get(); }
static int emperorScorpionMinDespawnTicks() { return EMPEROR_SCORPION_MIN_DESPAWN_TICKS.get(); }
static double krakenHealth() { return KRAKEN_HEALTH.get(); } static double krakenHealth() { return KRAKEN_HEALTH.get(); }
static double krakenAttackDamage() { return KRAKEN_ATTACK_DAMAGE.get(); } static double krakenAttackDamage() { return KRAKEN_ATTACK_DAMAGE.get(); }
static double krakenProjectileDamageTakenMultiplier() { return KRAKEN_PROJECTILE_DAMAGE_TAKEN_MULTIPLIER.get(); } static double krakenProjectileDamageTakenMultiplier() { return KRAKEN_PROJECTILE_DAMAGE_TAKEN_MULTIPLIER.get(); }
static boolean krakenSquidSpawnEnabled() { return KRAKEN_SQUID_SPAWN_ENABLED.get(); } static boolean krakenSquidSpawnEnabled() { return KRAKEN_SQUID_SPAWN_ENABLED.get(); }
static boolean krakenMassSpawnEnabled() { return KRAKEN_MASS_SPAWN_ENABLED.get(); } static boolean krakenMassSpawnEnabled() { return KRAKEN_MASS_SPAWN_ENABLED.get(); }
static boolean krakenRequireBadOmenToSummon() { return KRAKEN_REQUIRE_BAD_OMEN_TO_SUMMON.get(); } static boolean krakenRequireBadOmenToSummon() { return KRAKEN_REQUIRE_BAD_OMEN_TO_SUMMON.get(); }
static double krakenFollowRange() { return KRAKEN_FOLLOW_RANGE.get(); }
static double krakenDamageRange() { return KRAKEN_DAMAGE_RANGE.get(); }
static double brutalflyHealth() { return BRUTALFLY_HEALTH.get(); } static double brutalflyHealth() { return BRUTALFLY_HEALTH.get(); }
static double brutalflySwipeDamage() { return BRUTALFLY_SWIPE_DAMAGE.get(); } static double brutalflySwipeDamage() { return BRUTALFLY_SWIPE_DAMAGE.get(); }
static double brutalflySpitDamage() { return BRUTALFLY_SPIT_DAMAGE.get(); } static double brutalflySpitDamage() { return BRUTALFLY_SPIT_DAMAGE.get(); }
static double brutalflyDamageRange() { return BRUTALFLY_DAMAGE_RANGE.get(); }
static double mantisHealth() { return MANTIS_HEALTH.get(); } static double mantisHealth() { return MANTIS_HEALTH.get(); }
static double mantisAttackDamage() { return MANTIS_ATTACK_DAMAGE.get(); } static double mantisAttackDamage() { return MANTIS_ATTACK_DAMAGE.get(); }
@@ -708,6 +744,7 @@ public final class AntarchyMobsConfig {
static double alphaMantisFlyingSpeed() { return ALPHA_MANTIS_FLYING_SPEED.get(); } static double alphaMantisFlyingSpeed() { return ALPHA_MANTIS_FLYING_SPEED.get(); }
static int alphaMantisSummonIntervalTicks() { return ALPHA_MANTIS_SUMMON_INTERVAL_TICKS.get(); } static int alphaMantisSummonIntervalTicks() { return ALPHA_MANTIS_SUMMON_INTERVAL_TICKS.get(); }
static int alphaMantisMaxMinions() { return ALPHA_MANTIS_MAX_MINIONS.get(); } static int alphaMantisMaxMinions() { return ALPHA_MANTIS_MAX_MINIONS.get(); }
static double alphaMantisDamageRange() { return ALPHA_MANTIS_DAMAGE_RANGE.get(); }
static double rollyPollyHealth() { return ROLLY_POLLY_HEALTH.get(); } static double rollyPollyHealth() { return ROLLY_POLLY_HEALTH.get(); }
static double rollyPollyMovementSpeed() { return ROLLY_POLLY_MOVEMENT_SPEED.get(); } static double rollyPollyMovementSpeed() { return ROLLY_POLLY_MOVEMENT_SPEED.get(); }
static double rollyPollyRollSpeedMultiplier() { return ROLLY_POLLY_ROLL_SPEED_MULTIPLIER.get(); } static double rollyPollyRollSpeedMultiplier() { return ROLLY_POLLY_ROLL_SPEED_MULTIPLIER.get(); }
@@ -767,6 +804,7 @@ public final class AntarchyMobsConfig {
static double lucidPearlInvertedDurationSeconds() { return LUCID_PEARL_INVERTED_DURATION_SECONDS.get(); } static double lucidPearlInvertedDurationSeconds() { return LUCID_PEARL_INVERTED_DURATION_SECONDS.get(); }
static double toreterrorHealth() { return TORETERROR_HEALTH.get(); } static double toreterrorHealth() { return TORETERROR_HEALTH.get(); }
static double toreterrorDamageRange() { return TORETERROR_DAMAGE_RANGE.get(); }
static double toreterrorJumpAttackDamage() { return TORETERROR_JUMP_ATTACK_DAMAGE.get(); } static double toreterrorJumpAttackDamage() { return TORETERROR_JUMP_ATTACK_DAMAGE.get(); }
static double toreterrorJumpAttackKnockback() { return TORETERROR_JUMP_ATTACK_KNOCKBACK.get(); } static double toreterrorJumpAttackKnockback() { return TORETERROR_JUMP_ATTACK_KNOCKBACK.get(); }
static double toreterrorSpinDamage() { return TORETERROR_SPIN_DAMAGE.get(); } static double toreterrorSpinDamage() { return TORETERROR_SPIN_DAMAGE.get(); }
@@ -806,4 +844,5 @@ public final class AntarchyMobsConfig {
static double herculesBeetleHealth() { return HERCULES_BEETLE_HEALTH.get(); } static double herculesBeetleHealth() { return HERCULES_BEETLE_HEALTH.get(); }
static double herculesBeetleAttackDamage() { return HERCULES_BEETLE_ATTACK_DAMAGE.get(); } static double herculesBeetleAttackDamage() { return HERCULES_BEETLE_ATTACK_DAMAGE.get(); }
static double herculesBeetleChargeDamage() { return HERCULES_BEETLE_CHARGE_DAMAGE.get(); } static double herculesBeetleChargeDamage() { return HERCULES_BEETLE_CHARGE_DAMAGE.get(); }
static double herculesBeetleDamageRange() { return HERCULES_BEETLE_DAMAGE_RANGE.get(); }
} }
@@ -390,6 +390,8 @@ public class AntarchyNeoforge {
AntarchyObjects.setLumenFroglight(() -> AntarchyNeoforgeBlocks.LUMEN_FROGLIGHT.get()); AntarchyObjects.setLumenFroglight(() -> AntarchyNeoforgeBlocks.LUMEN_FROGLIGHT.get());
AntarchyObjects.setPeachLeavesParticle(() -> AntarchyNeoforgeMisc.PEACH_LEAVES_PARTICLE.get()); AntarchyObjects.setPeachLeavesParticle(() -> AntarchyNeoforgeMisc.PEACH_LEAVES_PARTICLE.get());
AntarchyObjects.setLotusPollen(() -> AntarchyNeoforgeMisc.LOTUS_POLLEN.get()); AntarchyObjects.setLotusPollen(() -> AntarchyNeoforgeMisc.LOTUS_POLLEN.get());
AntarchyObjects.setLucidBoltImpactSmall(() -> AntarchyNeoforgeMisc.LUCID_BOLT_IMPACT_SMALL.get());
AntarchyObjects.setLucidBoltImpactLarge(() -> AntarchyNeoforgeMisc.LUCID_BOLT_IMPACT_LARGE.get());
AntarchyObjects.setDorrieInventoryMenu(AntarchyNeoforgeMisc.DORRIE_INVENTORY_MENU); AntarchyObjects.setDorrieInventoryMenu(AntarchyNeoforgeMisc.DORRIE_INVENTORY_MENU);
AntarchyObjects.setCritterCage(() -> AntarchyNeoforgeItems.CRITTER_CAGE.get()); AntarchyObjects.setCritterCage(() -> AntarchyNeoforgeItems.CRITTER_CAGE.get());
AntarchyObjects.setCritterCageBlock(() -> AntarchyNeoforgeBlocks.CRITTER_CAGE_BLOCK.get()); AntarchyObjects.setCritterCageBlock(() -> AntarchyNeoforgeBlocks.CRITTER_CAGE_BLOCK.get());
@@ -88,14 +88,16 @@ public final class AntarchyToolsConfig {
private static final ModConfigSpec.BooleanValue KRAKENS_GRASP_INNATE_LOYALTY; private static final ModConfigSpec.BooleanValue KRAKENS_GRASP_INNATE_LOYALTY;
private static final ModConfigSpec.IntValue KRAKENS_GRASP_INNATE_LOYALTY_LEVEL; private static final ModConfigSpec.IntValue KRAKENS_GRASP_INNATE_LOYALTY_LEVEL;
private static final ModConfigSpec.IntValue KRAKENS_GRASP_TENTACLE_DURATION_TICKS; private static final ModConfigSpec.IntValue KRAKENS_GRASP_TENTACLE_DURATION_TICKS;
private static final ModConfigSpec.DoubleValue KRAKENS_GRASP_TENTACLE_DAMAGE;
private static final ModConfigSpec.DoubleValue KRAKENS_GRASP_TENTACLE_RADIUS; private static final ModConfigSpec.DoubleValue KRAKENS_GRASP_TENTACLE_RADIUS;
private static final ModConfigSpec.IntValue KRAKENS_GRASP_TENTACLE_DAMAGE_INTERVAL_TICKS; private static final ModConfigSpec.IntValue KRAKENS_GRASP_TENTACLE_SLOWNESS_AMPLIFIER;
private static final ModConfigSpec.IntValue KRAKENS_GRASP_TENTACLE_SLOWNESS_REFRESH_TICKS;
private static final ModConfigSpec.IntValue BIG_BERTHA_BASILISK_PARALYZE_DURATION_TICKS; private static final ModConfigSpec.IntValue BIG_BERTHA_BASILISK_PARALYZE_DURATION_TICKS;
private static final ModConfigSpec.IntValue BIG_BERTHA_KRAKEN_SLOW_TICKS; private static final ModConfigSpec.IntValue BIG_BERTHA_KRAKEN_SLOW_TICKS;
private static final ModConfigSpec.DoubleValue BIG_BERTHA_BASILISK_COOLDOWN_SECONDS; private static final ModConfigSpec.DoubleValue BIG_BERTHA_BASILISK_COOLDOWN_SECONDS;
private static final ModConfigSpec.DoubleValue BIG_BERTHA_LUCID_INVERTED_DURATION_SECONDS; private static final ModConfigSpec.DoubleValue BIG_BERTHA_LUCID_INVERTED_DURATION_SECONDS;
private static final ModConfigSpec.DoubleValue BIG_BERTHA_LUCID_INVERTED_DAMAGE_BONUS_PERCENT; private static final ModConfigSpec.DoubleValue BIG_BERTHA_LUCID_INVERTED_DAMAGE_BONUS_PERCENT;
private static final ModConfigSpec.DoubleValue BIG_BERTHA_NONE_MODE_DAMAGE_BONUS_PERCENT;
private static final ModConfigSpec.DoubleValue BIG_BERTHA_NIGHTMARE_DAMAGE_BONUS_PERCENT;
private static final ModConfigSpec.DoubleValue SCORPION_WHIP_BASE_DAMAGE; private static final ModConfigSpec.DoubleValue SCORPION_WHIP_BASE_DAMAGE;
private static final ModConfigSpec.DoubleValue SCORPION_WHIP_REACH_BONUS; private static final ModConfigSpec.DoubleValue SCORPION_WHIP_REACH_BONUS;
private static final ModConfigSpec.IntValue SCORPION_WHIP_POISON_DURATION_TICKS; private static final ModConfigSpec.IntValue SCORPION_WHIP_POISON_DURATION_TICKS;
@@ -321,6 +323,8 @@ public final class AntarchyToolsConfig {
BIG_BERTHA_BASILISK_COOLDOWN_SECONDS = b.comment("Cooldown in seconds after using Basilisk mode's right-click paralyze.") .defineInRange("basiliskModeCooldownSeconds", 7.0D, 0.0D, 3600.0D); BIG_BERTHA_BASILISK_COOLDOWN_SECONDS = b.comment("Cooldown in seconds after using Basilisk mode's right-click paralyze.") .defineInRange("basiliskModeCooldownSeconds", 7.0D, 0.0D, 3600.0D);
BIG_BERTHA_LUCID_INVERTED_DURATION_SECONDS = b.comment("How long Lucid mode's inversion lasts on a target, in seconds.") .defineInRange("lucidModeInvertedDurationSeconds", 3.0D, 0.0D, 3600.0D); BIG_BERTHA_LUCID_INVERTED_DURATION_SECONDS = b.comment("How long Lucid mode's inversion lasts on a target, in seconds.") .defineInRange("lucidModeInvertedDurationSeconds", 3.0D, 0.0D, 3600.0D);
BIG_BERTHA_LUCID_INVERTED_DAMAGE_BONUS_PERCENT = b.comment("Bonus damage percent from Lucid mode while the wielder is inverted.") .defineInRange("lucidModeInvertedDamageBonusPercent", 25.0D, 0.0D, 1000.0D); BIG_BERTHA_LUCID_INVERTED_DAMAGE_BONUS_PERCENT = b.comment("Bonus damage percent from Lucid mode while the wielder is inverted.") .defineInRange("lucidModeInvertedDamageBonusPercent", 25.0D, 0.0D, 1000.0D);
BIG_BERTHA_NONE_MODE_DAMAGE_BONUS_PERCENT = b.comment("Bonus damage percent dealt while no boss mode is selected (the default mode).").defineInRange("noneModeDamageBonusPercent", 15.0D, 0.0D, 1000.0D);
BIG_BERTHA_NIGHTMARE_DAMAGE_BONUS_PERCENT = b.comment("Bonus damage percent from Nightmare mode hits.") .defineInRange("nightmareModeDamageBonusPercent", 30.0D, 0.0D, 1000.0D);
b.pop(); b.pop();
b.push("attitudeAdjuster"); b.push("attitudeAdjuster");
@@ -336,9 +340,9 @@ public final class AntarchyToolsConfig {
KRAKENS_GRASP_INNATE_LOYALTY = b.comment("Whether Kraken's Grasp automatically returns to its thrower like an enchanted Loyalty trident.").define("innateLoyalty", true); KRAKENS_GRASP_INNATE_LOYALTY = b.comment("Whether Kraken's Grasp automatically returns to its thrower like an enchanted Loyalty trident.").define("innateLoyalty", true);
KRAKENS_GRASP_INNATE_LOYALTY_LEVEL = b.comment("Effective Loyalty level used for the innate return, from 1 to 3.") .defineInRange("innateLoyaltyLevel", 3, 1, 3); KRAKENS_GRASP_INNATE_LOYALTY_LEVEL = b.comment("Effective Loyalty level used for the innate return, from 1 to 3.") .defineInRange("innateLoyaltyLevel", 3, 1, 3);
KRAKENS_GRASP_TENTACLE_DURATION_TICKS = b.comment("How long a summoned tentacle lasts, in ticks.") .defineInRange("tentacleDurationTicks", 100, 1, 72000); KRAKENS_GRASP_TENTACLE_DURATION_TICKS = b.comment("How long a summoned tentacle lasts, in ticks.") .defineInRange("tentacleDurationTicks", 100, 1, 72000);
KRAKENS_GRASP_TENTACLE_DAMAGE = b.comment("Damage a tentacle deals per damage interval to nearby entities.") .defineInRange("tentacleDamage", 3.0D, 0.0D, 4096.0D); KRAKENS_GRASP_TENTACLE_RADIUS = b.comment("Radius in blocks around a tentacle that it can grab and slow.") .defineInRange("tentacleRadius", 3.0D, 0.0D, 32.0D);
KRAKENS_GRASP_TENTACLE_RADIUS = b.comment("Radius in blocks around a tentacle that it can grab and damage.") .defineInRange("tentacleRadius", 3.0D, 0.0D, 32.0D); KRAKENS_GRASP_TENTACLE_SLOWNESS_AMPLIFIER = b.comment("Slowness amplifier applied to entities held by a tentacle (0 = Slowness I).").defineInRange("tentacleSlownessAmplifier", 8, 0, 255);
KRAKENS_GRASP_TENTACLE_DAMAGE_INTERVAL_TICKS = b.comment("How often, in ticks, a tentacle damages nearby entities.") .defineInRange("tentacleDamageIntervalTicks", 20, 1, 2000); KRAKENS_GRASP_TENTACLE_SLOWNESS_REFRESH_TICKS = b.comment("How often, in ticks, a tentacle refreshes its slowness effect on nearby entities. Kept low so the effect fades quickly once an entity leaves.").defineInRange("tentacleSlownessRefreshTicks", 5, 1, 2000);
b.pop(); b.pop();
b.push("scorpionWhip"); b.push("scorpionWhip");
@@ -593,6 +597,8 @@ public final class AntarchyToolsConfig {
static double bigBerthaBasiliskCooldownSeconds() { return BIG_BERTHA_BASILISK_COOLDOWN_SECONDS.get(); } static double bigBerthaBasiliskCooldownSeconds() { return BIG_BERTHA_BASILISK_COOLDOWN_SECONDS.get(); }
static double bigBerthaLucidInvertedDurationSeconds() { return BIG_BERTHA_LUCID_INVERTED_DURATION_SECONDS.get(); } static double bigBerthaLucidInvertedDurationSeconds() { return BIG_BERTHA_LUCID_INVERTED_DURATION_SECONDS.get(); }
static double bigBerthaLucidInvertedDamageBonusPercent(){ return BIG_BERTHA_LUCID_INVERTED_DAMAGE_BONUS_PERCENT.get(); } static double bigBerthaLucidInvertedDamageBonusPercent(){ return BIG_BERTHA_LUCID_INVERTED_DAMAGE_BONUS_PERCENT.get(); }
static double bigBerthaNoneModeDamageBonusPercent() { return BIG_BERTHA_NONE_MODE_DAMAGE_BONUS_PERCENT.get(); }
static double bigBerthaNightmareDamageBonusPercent() { return BIG_BERTHA_NIGHTMARE_DAMAGE_BONUS_PERCENT.get(); }
static double krakensGraspAttackDamage() { return KRAKENS_GRASP_ATTACK_DAMAGE.get(); } static double krakensGraspAttackDamage() { return KRAKENS_GRASP_ATTACK_DAMAGE.get(); }
static double krakensGraspAttackSpeed() { return KRAKENS_GRASP_ATTACK_SPEED.get(); } static double krakensGraspAttackSpeed() { return KRAKENS_GRASP_ATTACK_SPEED.get(); }
@@ -601,9 +607,9 @@ public final class AntarchyToolsConfig {
static boolean krakensGraspInnateLoyalty() { return KRAKENS_GRASP_INNATE_LOYALTY.get(); } static boolean krakensGraspInnateLoyalty() { return KRAKENS_GRASP_INNATE_LOYALTY.get(); }
static int krakensGraspInnateLoyaltyLevel() { return KRAKENS_GRASP_INNATE_LOYALTY_LEVEL.get(); } static int krakensGraspInnateLoyaltyLevel() { return KRAKENS_GRASP_INNATE_LOYALTY_LEVEL.get(); }
static int krakensGraspTentacleDurationTicks() { return KRAKENS_GRASP_TENTACLE_DURATION_TICKS.get(); } static int krakensGraspTentacleDurationTicks() { return KRAKENS_GRASP_TENTACLE_DURATION_TICKS.get(); }
static double krakensGraspTentacleDamage() { return KRAKENS_GRASP_TENTACLE_DAMAGE.get(); }
static double krakensGraspTentacleRadius() { return KRAKENS_GRASP_TENTACLE_RADIUS.get(); } static double krakensGraspTentacleRadius() { return KRAKENS_GRASP_TENTACLE_RADIUS.get(); }
static int krakensGraspTentacleDamageIntervalTicks() { return KRAKENS_GRASP_TENTACLE_DAMAGE_INTERVAL_TICKS.get(); } static int krakensGraspTentacleSlownessAmplifier() { return KRAKENS_GRASP_TENTACLE_SLOWNESS_AMPLIFIER.get(); }
static int krakensGraspTentacleSlownessRefreshTicks() { return KRAKENS_GRASP_TENTACLE_SLOWNESS_REFRESH_TICKS.get(); }
static double scorpionWhipBaseDamage() { return SCORPION_WHIP_BASE_DAMAGE.get(); } static double scorpionWhipBaseDamage() { return SCORPION_WHIP_BASE_DAMAGE.get(); }
static double scorpionWhipReachBonus() { return SCORPION_WHIP_REACH_BONUS.get(); } static double scorpionWhipReachBonus() { return SCORPION_WHIP_REACH_BONUS.get(); }
static int scorpionWhipPoisonDurationTicks() { return SCORPION_WHIP_POISON_DURATION_TICKS.get(); } static int scorpionWhipPoisonDurationTicks() { return SCORPION_WHIP_POISON_DURATION_TICKS.get(); }
@@ -296,6 +296,8 @@ public final class AntarchyNeoForgeClient {
event.registerSpecial(AntarchyNeoforgeMisc.INVERTED_GEYSER_ERUPTION.get(), new InvertedGeyserEruptionParticle.Provider()); event.registerSpecial(AntarchyNeoforgeMisc.INVERTED_GEYSER_ERUPTION.get(), new InvertedGeyserEruptionParticle.Provider());
event.registerSpriteSet(AntarchyNeoforgeMisc.FIREFLY.get(), FireflyParticle.Provider::new); event.registerSpriteSet(AntarchyNeoforgeMisc.FIREFLY.get(), FireflyParticle.Provider::new);
event.registerSpriteSet(AntarchyNeoforgeMisc.ORANGE_ASH.get(), OrangeAshParticle.Provider::new); event.registerSpriteSet(AntarchyNeoforgeMisc.ORANGE_ASH.get(), OrangeAshParticle.Provider::new);
event.registerSpriteSet(AntarchyNeoforgeMisc.LUCID_BOLT_IMPACT_SMALL.get(), LucidBoltImpactParticle.SmallProvider::new);
event.registerSpriteSet(AntarchyNeoforgeMisc.LUCID_BOLT_IMPACT_LARGE.get(), LucidBoltImpactParticle.LargeProvider::new);
} }
@SubscribeEvent @SubscribeEvent
@@ -204,6 +204,10 @@ public final class AntarchyNeoforgeMisc {
() -> new SimpleParticleType(true)); () -> new SimpleParticleType(true));
public static final DeferredHolder<ParticleType<?>, SimpleParticleType> ORANGE_ASH = PARTICLE_TYPES.register("orange_ash", public static final DeferredHolder<ParticleType<?>, SimpleParticleType> ORANGE_ASH = PARTICLE_TYPES.register("orange_ash",
() -> new SimpleParticleType(true)); () -> new SimpleParticleType(true));
public static final DeferredHolder<ParticleType<?>, SimpleParticleType> LUCID_BOLT_IMPACT_SMALL = PARTICLE_TYPES.register("lucid_bolt_impact_small",
() -> new SimpleParticleType(true));
public static final DeferredHolder<ParticleType<?>, SimpleParticleType> LUCID_BOLT_IMPACT_LARGE = PARTICLE_TYPES.register("lucid_bolt_impact_large",
() -> new SimpleParticleType(true));
public static final DeferredHolder<ParticleType<?>, ParticleType<InvertedGeyserBaseParticleOptions>> INVERTED_GEYSER_BASE = PARTICLE_TYPES.register("inverted_geyser_base", public static final DeferredHolder<ParticleType<?>, ParticleType<InvertedGeyserBaseParticleOptions>> INVERTED_GEYSER_BASE = PARTICLE_TYPES.register("inverted_geyser_base",
() -> particleType(InvertedGeyserBaseParticleOptions::codec, InvertedGeyserBaseParticleOptions::streamCodec)); () -> particleType(InvertedGeyserBaseParticleOptions::codec, InvertedGeyserBaseParticleOptions::streamCodec));
public static final DeferredHolder<ParticleType<?>, ParticleType<InvertedGeyserParticleOptions>> INVERTED_GEYSER_PLUME = PARTICLE_TYPES.register("inverted_geyser_plume", public static final DeferredHolder<ParticleType<?>, ParticleType<InvertedGeyserParticleOptions>> INVERTED_GEYSER_PLUME = PARTICLE_TYPES.register("inverted_geyser_plume",
@@ -61,6 +61,10 @@ public final class AntarchyNeoforgeSounds {
public static final DeferredHolder<SoundEvent, SoundEvent> THORAXIS_LUCID_POOLS_ADDITIONS = registerSoundEvent("thoraxis_lucid_pools_additions"); public static final DeferredHolder<SoundEvent, SoundEvent> THORAXIS_LUCID_POOLS_ADDITIONS = registerSoundEvent("thoraxis_lucid_pools_additions");
public static final DeferredHolder<SoundEvent, SoundEvent> THORAXIS_LUCID_POOLS_MOOD = registerSoundEvent("thoraxis_lucid_pools_mood"); public static final DeferredHolder<SoundEvent, SoundEvent> THORAXIS_LUCID_POOLS_MOOD = registerSoundEvent("thoraxis_lucid_pools_mood");
public static final DeferredHolder<SoundEvent, SoundEvent> LUCID_LULLABY = registerSoundEvent("lucid_lullaby"); public static final DeferredHolder<SoundEvent, SoundEvent> LUCID_LULLABY = registerSoundEvent("lucid_lullaby");
public static final DeferredHolder<SoundEvent, SoundEvent> MUSIC_GAME_THORAXIS = registerSoundEvent("music.game.thoraxis");
public static final DeferredHolder<SoundEvent, SoundEvent> MUSIC_GAME_CAVARYN = registerSoundEvent("music.game.cavaryn");
public static final DeferredHolder<SoundEvent, SoundEvent> WISTFUL_WANDERINGS = registerSoundEvent("wistful_wanderings");
public static final DeferredHolder<SoundEvent, SoundEvent> MUSIC_GAME_ELYTHIA = registerSoundEvent("music.game.elythia");
public static final DeferredHolder<SoundEvent, SoundEvent> LUCID_AMBIENT = registerSoundEvent("lucid_ambient"); public static final DeferredHolder<SoundEvent, SoundEvent> LUCID_AMBIENT = registerSoundEvent("lucid_ambient");
public static final DeferredHolder<SoundEvent, SoundEvent> LUCID_FLYING = registerSoundEvent("lucid_flying"); public static final DeferredHolder<SoundEvent, SoundEvent> LUCID_FLYING = registerSoundEvent("lucid_flying");
public static final DeferredHolder<SoundEvent, SoundEvent> LUCID_ATTACK = registerSoundEvent("lucid_attack"); public static final DeferredHolder<SoundEvent, SoundEvent> LUCID_ATTACK = registerSoundEvent("lucid_attack");
@@ -9,6 +9,7 @@
"entity.MultipartEntityBridgeMixin", "entity.MultipartEntityBridgeMixin",
"entity.MultipartEntityLevelRegistryMixin", "entity.MultipartEntityLevelRegistryMixin",
"entity.ParalyzedMobFreezeMixin", "entity.ParalyzedMobFreezeMixin",
"infinity.AmendmentRareOresMixin",
"infinity.ConfigGenInvocationMixin", "infinity.ConfigGenInvocationMixin",
"infinity.PortalCreatorMixin", "infinity.PortalCreatorMixin",
"level.ClientLevelPartEntitiesAccessor", "level.ClientLevelPartEntitiesAccessor",