diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/client/model/LucidBoltModel.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/client/model/LucidBoltModel.java new file mode 100644 index 00000000..58ad6864 --- /dev/null +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/client/model/LucidBoltModel.java @@ -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 { + @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"); + } +} diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/client/particle/LucidBoltImpactParticle.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/client/particle/LucidBoltImpactParticle.java new file mode 100644 index 00000000..dc2b3ade --- /dev/null +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/client/particle/LucidBoltImpactParticle.java @@ -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 { + 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 { + 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); + } + } +} diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/client/renderer/LucidBoltRenderer.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/client/renderer/LucidBoltRenderer.java new file mode 100644 index 00000000..975b8660 --- /dev/null +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/client/renderer/LucidBoltRenderer.java @@ -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 { + 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)); + } +} diff --git a/common-1.20.1/src/main/resources/assets/antarchy/particles/lucid_bolt_impact_large.json b/common-1.20.1/src/main/resources/assets/antarchy/particles/lucid_bolt_impact_large.json new file mode 100644 index 00000000..0501893a --- /dev/null +++ b/common-1.20.1/src/main/resources/assets/antarchy/particles/lucid_bolt_impact_large.json @@ -0,0 +1,5 @@ +{ + "textures": [ + "antarchy:lucid_bolt_impact_large" + ] +} diff --git a/common-1.20.1/src/main/resources/assets/antarchy/particles/lucid_bolt_impact_small.json b/common-1.20.1/src/main/resources/assets/antarchy/particles/lucid_bolt_impact_small.json new file mode 100644 index 00000000..d1f0d4e7 --- /dev/null +++ b/common-1.20.1/src/main/resources/assets/antarchy/particles/lucid_bolt_impact_small.json @@ -0,0 +1,5 @@ +{ + "textures": [ + "antarchy:lucid_bolt_impact_small" + ] +} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/config/AntarchySettings.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/config/AntarchySettings.java index 0ca17d44..ce1ec642 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/config/AntarchySettings.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/config/AntarchySettings.java @@ -68,9 +68,9 @@ public final class AntarchySettings { private static boolean krakensGraspInnateLoyalty = true; private static int krakensGraspInnateLoyaltyLevel = 3; private static int krakensGraspTentacleDurationTicks = 100; - private static double krakensGraspTentacleDamage = 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 scorpionWhipReachBonus = 5.0D; private static int scorpionWhipPoisonDurationTicks = 100; @@ -87,6 +87,8 @@ public final class AntarchySettings { private static double bigBerthaBasiliskCooldownSeconds = 7.0D; private static double bigBerthaLucidInvertedDurationSeconds = 3.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 int ultimateToolEnchantability = 25; private static int ultimateArmorEnchantability = 10; @@ -288,6 +290,8 @@ public final class AntarchySettings { private static int emperorScorpionMaxSummonedScorpions = 4; private static int emperorScorpionMaxNearbyScorpions = 3; 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 scorpionAttackDamage = 5.0D; private static double scorpionMovementSpeed = 0.29D; @@ -317,6 +321,12 @@ public final class AntarchySettings { private static double krakenArmor = 8.0D; private static double krakenProjectileDamageTakenMultiplier = 0.5D; 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 double lucidHealth = 30.0D; private static double lucidAttackDamage = 4.0D; @@ -662,6 +672,14 @@ public final class AntarchySettings { return bigBerthaLucidInvertedDamageBonusPercent; } + public static double bigBerthaNoneModeDamageBonusPercent() { + return bigBerthaNoneModeDamageBonusPercent; + } + + public static double bigBerthaNightmareDamageBonusPercent() { + return bigBerthaNightmareDamageBonusPercent; + } + public static double potentNyxiteInvertedDurationSeconds() { return potentNyxiteInvertedDurationSeconds; } @@ -756,9 +774,9 @@ public final class AntarchySettings { public static boolean krakensGraspInnateLoyalty() { return krakensGraspInnateLoyalty; } public static int krakensGraspInnateLoyaltyLevel() { return krakensGraspInnateLoyaltyLevel; } public static int krakensGraspTentacleDurationTicks() { return krakensGraspTentacleDurationTicks; } - public static double krakensGraspTentacleDamage() { return krakensGraspTentacleDamage; } 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() { return octopusBombHealth; @@ -1255,6 +1273,14 @@ public final class AntarchySettings { bigBerthaLucidInvertedDamageBonusPercent = value; } + public static void setBigBerthaNoneModeDamageBonusPercent(double value) { + bigBerthaNoneModeDamageBonusPercent = value; + } + + public static void setBigBerthaNightmareDamageBonusPercent(double value) { + bigBerthaNightmareDamageBonusPercent = value; + } + public static void setPotentNyxiteInvertedDurationSeconds(double value) { potentNyxiteInvertedDurationSeconds = value; } @@ -1350,9 +1376,9 @@ public final class AntarchySettings { public static void setKrakensGraspInnateLoyalty(boolean value) { krakensGraspInnateLoyalty = value; } public static void setKrakensGraspInnateLoyaltyLevel(int value) { krakensGraspInnateLoyaltyLevel = 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 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) { brutalflyHealth = value; @@ -2057,6 +2083,12 @@ public final class AntarchySettings { public static int emperorScorpionHardenCooldownTicks() { return emperorScorpionHardenCooldownTicks; } 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 void setScorpionHealth(double value) { scorpionHealth = value; } @@ -2142,6 +2174,24 @@ public final class AntarchySettings { public static double krakenBossBarRange() { return krakenBossBarRange; } 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 void setKrakenLightningDamagePhaseOne(float value) { krakenLightningDamagePhaseOne = value; } diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/AntarchyObjects.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/AntarchyObjects.java index dfdd8fab..f2fc7719 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/AntarchyObjects.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/AntarchyObjects.java @@ -335,6 +335,10 @@ public final class AntarchyObjects { @SuppressWarnings("unchecked") public static Supplier LOTUS_POLLEN = (Supplier) UNBOUND; @SuppressWarnings("unchecked") + public static Supplier LUCID_BOLT_IMPACT_SMALL = (Supplier) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier LUCID_BOLT_IMPACT_LARGE = (Supplier) UNBOUND; + @SuppressWarnings("unchecked") public static Supplier> AMERICAN_COMPONENT = (Supplier>) UNBOUND; @SuppressWarnings("unchecked") @@ -697,6 +701,14 @@ public final class AntarchyObjects { LOTUS_POLLEN = supplier; } + public static void setLucidBoltImpactSmall(Supplier supplier) { + LUCID_BOLT_IMPACT_SMALL = supplier; + } + + public static void setLucidBoltImpactLarge(Supplier supplier) { + LUCID_BOLT_IMPACT_LARGE = supplier; + } + public static void setPeachLeavesParticle(Supplier supplier) { PEACH_LEAVES_PARTICLE = supplier; } diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/client/model/LucidBoltModel.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/client/model/LucidBoltModel.java new file mode 100644 index 00000000..e9dea8ad --- /dev/null +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/client/model/LucidBoltModel.java @@ -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 { + @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"); + } +} diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/client/renderer/LucidBoltRenderer.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/client/renderer/LucidBoltRenderer.java index 3722cfa6..c546a8f3 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/client/renderer/LucidBoltRenderer.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/client/renderer/LucidBoltRenderer.java @@ -1,144 +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.blaze3d.vertex.VertexConsumer; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.entity.EntityRenderer; +import com.mojang.math.Axis; 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.world.phys.Vec3; -import org.joml.Matrix4f; - -public class LucidBoltRenderer extends EntityRenderer { - 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); +import software.bernie.geckolib.renderer.GeoEntityRenderer; +public class LucidBoltRenderer extends GeoEntityRenderer { public LucidBoltRenderer(EntityRendererProvider.Context context) { - super(context); + super(context, new LucidBoltModel()); + this.shadowRadius = 0.0F; } @Override - protected int getBlockLightLevel(LucidBoltEntity entity, BlockPos pos) { - return 15; - } - - @Override - 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; + protected void applyRotations(LucidBoltEntity animatable, PoseStack poseStack, float ageInTicks, float rotationYaw, float partialTick, float nativeScale) { + 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)); + poseStack.mulPose(Axis.XP.rotationDegrees(-appliedPitch)); } } diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/effect/DreadMobEffect.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/effect/DreadMobEffect.java index 37a4c136..2b7eba54 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/effect/DreadMobEffect.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/effect/DreadMobEffect.java @@ -1,10 +1,37 @@ 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.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 DreadMobEffect() { 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; + } } diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/AlphaMantisEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/AlphaMantisEntity.java index 57c4c461..5d8692d8 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/AlphaMantisEntity.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/AlphaMantisEntity.java @@ -3,6 +3,7 @@ package com.craisinlord.antarchy.content.entity; import com.craisinlord.antarchy.config.AntarchySettings; import com.craisinlord.antarchy.content.AntarchyObjects; import com.craisinlord.antarchy.content.AntarchyTags; +import com.craisinlord.antarchy.content.boss.BossCombatUtil; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.network.chat.Component; @@ -12,6 +13,7 @@ import net.minecraft.server.level.ServerPlayer; import net.minecraft.util.RandomSource; import net.minecraft.world.BossEvent; import net.minecraft.world.Difficulty; +import net.minecraft.world.damagesource.DamageSource; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.LivingEntity; @@ -51,6 +53,19 @@ public class AlphaMantisEntity extends MantisEntity { .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 entityType, ServerLevelAccessor level, MobSpawnType spawnReason, BlockPos pos, RandomSource random) { if (spawnReason == MobSpawnType.SPAWN_EGG || spawnReason == MobSpawnType.SPAWNER diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/EmperorScorpionEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/EmperorScorpionEntity.java index 4b9a3e9a..fcf5885e 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/EmperorScorpionEntity.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/EmperorScorpionEntity.java @@ -4,6 +4,7 @@ import com.craisinlord.antarchy.Antarchy; import com.craisinlord.antarchy.config.AntarchySettings; import com.craisinlord.antarchy.content.AntarchySoundEvents; 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.entity.ScorpionEntity; import net.minecraft.core.BlockPos; @@ -142,6 +143,7 @@ public class EmperorScorpionEntity extends Monster implements GeoEntity { @Nullable private BlockPos encounterHome; @Nullable private LivingEntity attackTarget; private final Set summonedScorpionIds = new HashSet<>(); + private boolean hasTakenDamage; public EmperorScorpionEntity(EntityType entityType, Level level) { super(entityType, level); @@ -195,12 +197,28 @@ public class EmperorScorpionEntity extends Monster implements GeoEntity { if (this.isHardenedStateActive()) { 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 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 @@ -684,6 +702,7 @@ public class EmperorScorpionEntity extends Monster implements GeoEntity { tag.putInt("HardenDurationTicks", this.hardenDurationTicks); tag.putInt("HardenHealTicks", this.hardenHealTicks); tag.putInt("HardenSummonedScorpions", this.hardenSummonedScorpions); + tag.putBoolean("HasTakenDamage", this.hasTakenDamage); if (this.encounterHome != null) { tag.putInt("EncounterHomeX", this.encounterHome.getX()); tag.putInt("EncounterHomeY", this.encounterHome.getY()); @@ -720,6 +739,9 @@ public class EmperorScorpionEntity extends Monster implements GeoEntity { if (tag.contains("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")) { this.encounterHome = new BlockPos(tag.getInt("EncounterHomeX"), tag.getInt("EncounterHomeY"), tag.getInt("EncounterHomeZ")); } diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/HerculesBeetleEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/HerculesBeetleEntity.java index f265b488..035c3763 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/HerculesBeetleEntity.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/HerculesBeetleEntity.java @@ -1,6 +1,7 @@ package com.craisinlord.antarchy.content.entity; import com.craisinlord.antarchy.config.AntarchySettings; +import com.craisinlord.antarchy.content.boss.BossCombatUtil; import com.craisinlord.antarchy.content.AntarchyGameRules; import com.craisinlord.antarchy.content.AntarchySoundEvents; import com.craisinlord.antarchy.content.AntarchyTags; @@ -593,6 +594,8 @@ public class HerculesBeetleEntity extends TamableAnimal implements GeoEntity, Fl amount *= 0.5F; } + amount = BossCombatUtil.capSingleHitAtHalfHealth(this, amount); + if (!this.level().isClientSide && !this.isTame() && !this.isKnockedDown() && !this.isDeadOrDying()) { float knockThreshold = Math.max(1.0F, this.getMaxHealth() * 0.05F); if (this.getHealth() - amount <= knockThreshold) { @@ -608,6 +611,14 @@ public class HerculesBeetleEntity extends TamableAnimal implements GeoEntity, Fl 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() { if (this.isKnockedDown()) { return; diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/ToreterrorEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/ToreterrorEntity.java index e5414f58..f7b0b742 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/ToreterrorEntity.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/ToreterrorEntity.java @@ -1,6 +1,7 @@ package com.craisinlord.antarchy.content.entity; import com.craisinlord.antarchy.config.AntarchySettings; +import com.craisinlord.antarchy.content.boss.BossCombatUtil; import com.craisinlord.antarchy.content.AntarchyObjects; import com.craisinlord.antarchy.content.AntarchySoundEvents; import com.craisinlord.antarchy.content.damage.AntarchyDamageSources; @@ -285,6 +286,14 @@ public class ToreterrorEntity extends Monster implements GeoEntity { 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() { this.entityData.set(PHASE_2, true); } diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/brutalfly/BrutalflyEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/brutalfly/BrutalflyEntity.java index dce82e1e..ec932890 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/brutalfly/BrutalflyEntity.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/brutalfly/BrutalflyEntity.java @@ -1,6 +1,7 @@ package com.craisinlord.antarchy.content.entity.brutalfly; import com.craisinlord.antarchy.config.AntarchySettings; +import com.craisinlord.antarchy.content.boss.BossCombatUtil; import com.craisinlord.antarchy.content.AntarchyObjects; import com.craisinlord.antarchy.content.AntarchySoundEvents; import java.util.EnumSet; @@ -383,12 +384,15 @@ public class BrutalflyEntity extends Monster implements GeoEntity { } return true; } - return super.hurt(source, amount); + return super.hurt(source, BossCombatUtil.capSingleHitAtHalfHealth(this, amount)); } @Override 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) { diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/flying_squirrel/FlyingSquirrelEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/flying_squirrel/FlyingSquirrelEntity.java index cd253311..26e66a99 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/flying_squirrel/FlyingSquirrelEntity.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/flying_squirrel/FlyingSquirrelEntity.java @@ -130,9 +130,9 @@ public class FlyingSquirrelEntity extends TamableAnimal implements GeoEntity { private static final double SHOULDER_HEAD_Y_OFFSET = 0.26D; 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 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 String QUIRK_CONTROLLER = "quirk_controller"; private static final String QUIRK_1_TRIGGER = "quirk1"; @@ -2146,10 +2146,10 @@ public class FlyingSquirrelEntity extends TamableAnimal implements GeoEntity { @Nullable protected Vec3 getPosition() { BlockPos target = this.findBestArborealDestination(); - if (target == null) { - return null; + if (target != null) { + return Vec3.atBottomCenterOf(target); } - return Vec3.atBottomCenterOf(target); + return super.getPosition(); } @Override diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/kraken/KrakenEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/kraken/KrakenEntity.java index 7b976530..315c6fb9 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/kraken/KrakenEntity.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/kraken/KrakenEntity.java @@ -4,6 +4,7 @@ import com.craisinlord.antarchy.Antarchy; import com.craisinlord.antarchy.config.AntarchySettings; import com.craisinlord.antarchy.content.AntarchyObjects; 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.entity.MissileSquidEntity; 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.MOVEMENT_SPEED, AntarchySettings.krakenMovementSpeed()) .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.ARMOR, AntarchySettings.krakenArmor()); } @@ -368,7 +369,15 @@ public class KrakenEntity extends Monster implements GeoEntity, MultipartEntityO 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 diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/kraken/TentacleEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/kraken/TentacleEntity.java index 0f301535..ad7b170d 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/kraken/TentacleEntity.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/kraken/TentacleEntity.java @@ -128,27 +128,23 @@ public class TentacleEntity extends Mob implements GeoEntity { return; } - int interval = Math.max(1, AntarchySettings.krakensGraspTentacleDamageIntervalTicks()); - if (this.lifetimeTicks % interval == 0) { - this.grabNearbyEntities(); + int refreshTicks = Math.max(1, AntarchySettings.krakensGraspTentacleSlownessRefreshTicks()); + if (this.lifetimeTicks % refreshTicks == 0) { + this.slowNearbyEntities(refreshTicks); } } - private void grabNearbyEntities() { + private void slowNearbyEntities(int refreshTicks) { double radius = AntarchySettings.krakensGraspTentacleRadius(); AABB area = this.getBoundingBox().inflate(radius, radius * 0.6D, radius); List victims = this.level().getEntitiesOfClass(LivingEntity.class, area, entity -> entity.isAlive() && !entity.isSpectator() && !entity.getUUID().equals(this.ownerId) && !(entity instanceof Player player && player.isCreative())); - for (LivingEntity victim : victims) { - 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); - } + int amplifier = Math.max(0, AntarchySettings.krakensGraspTentacleSlownessAmplifier()); - 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); if (pull.lengthSqr() > 1.0E-4D) { diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/lucid/LucidBoltEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/lucid/LucidBoltEntity.java index 07753f1f..4cef0665 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/lucid/LucidBoltEntity.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/lucid/LucidBoltEntity.java @@ -1,6 +1,7 @@ package com.craisinlord.antarchy.content.entity.lucid; import com.craisinlord.antarchy.content.AntarchySoundEvents; +import com.craisinlord.antarchy.content.AntarchyObjects; import com.craisinlord.antarchy.content.AntarchyTags; import net.minecraft.core.Holder; 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.LivingEntity; import net.minecraft.world.entity.projectile.ThrowableProjectile; +import net.minecraft.server.level.ServerLevel; import net.minecraft.world.level.Level; import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.EntityHitResult; +import net.minecraft.world.phys.Vec3; 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 INVERTED_EFFECT_DURATION = 100; private static final double BASE_DAMAGE = 3.0D; + private static final RawAnimation IDLE_ANIM = RawAnimation.begin().thenLoop("idle"); public static Supplier> invertedEffectSupplier; + private final AnimatableInstanceCache geoCache = GeckoLibUtil.createInstanceCache(this); public LucidBoltEntity(EntityType entityType, Level level) { super(entityType, level); @@ -36,6 +49,7 @@ public class LucidBoltEntity extends ThrowableProjectile { private void configureBolt() { this.setNoGravity(true); + this.noCulling = true; } @Override @@ -54,26 +68,29 @@ public class LucidBoltEntity extends ThrowableProjectile { return; } super.tick(); + this.realignToMotion(); } @Override protected void onHitEntity(EntityHitResult result) { - if (!this.level().isClientSide() && result.getEntity() instanceof LivingEntity target - && target.getType().is(AntarchyTags.Entities.LUCID_BOLT_IMMUNE)) { - this.discard(); - return; - } - - if (!this.level().isClientSide() && result.getEntity() instanceof LivingEntity target) { - Entity owner = this.getOwner(); - if (owner instanceof LivingEntity shooter) { - target.hurt(this.damageSources().mobAttack(shooter), (float) BASE_DAMAGE); - } else { - target.hurt(this.damageSources().magic(), (float) BASE_DAMAGE); + if (!this.level().isClientSide() && this.level() instanceof ServerLevel serverLevel) { + spawnImpactParticles(serverLevel, result.getLocation()); + if (result.getEntity() instanceof LivingEntity target && target.getType().is(AntarchyTags.Entities.LUCID_BOLT_IMMUNE)) { + this.discard(); + return; } - if (invertedEffectSupplier != null) { - target.addEffect(new MobEffectInstance(invertedEffectSupplier.get(), INVERTED_EFFECT_DURATION, 0, false, true)); + if (result.getEntity() instanceof LivingEntity target) { + Entity owner = this.getOwner(); + if (owner instanceof LivingEntity shooter) { + target.hurt(this.damageSources().mobAttack(shooter), (float) BASE_DAMAGE); + } else { + target.hurt(this.damageSources().magic(), (float) BASE_DAMAGE); + } + + if (invertedEffectSupplier != null) { + target.addEffect(new MobEffectInstance(invertedEffectSupplier.get(), INVERTED_EFFECT_DURATION, 0, false, true)); + } } } @@ -82,9 +99,40 @@ public class LucidBoltEntity extends ThrowableProjectile { @Override 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.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 state) { + return state.setAndContinue(IDLE_ANIM); + } + + @Override + public AnimatableInstanceCache getAnimatableInstanceCache() { + return this.geoCache; + } } diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/nightmare/NightmareEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/nightmare/NightmareEntity.java index 284bf514..db148401 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/nightmare/NightmareEntity.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/nightmare/NightmareEntity.java @@ -102,7 +102,9 @@ public class NightmareEntity extends Monster implements GeoEntity { private static final int SPECIAL_ROAR = 5; private static final int SPECIAL_ROAR_P2 = 6; 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_DAMAGE_TICK = 10; 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 PORTAL_RANGE = 32.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_TRANSPORT_RADIUS = 1.25D; 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_PHASE_TWO = 0.8D; 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 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_P2_TRIGGER = "roar_P2"; 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_P2_ANIM = RawAnimation.begin().thenPlayAndHold("attack_P2"); 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_P2_ANIM = RawAnimation.begin().thenPlayAndHold("roar_P2"); 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); @@ -264,7 +271,9 @@ public class NightmareEntity extends Monster implements GeoEntity { .triggerableAnim(SPECIAL_ROAR_TRIGGER, ROAR_ANIM) .triggerableAnim(SPECIAL_ROAR_P2_TRIGGER, ROAR_P2_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 state) { @@ -555,6 +564,9 @@ public class NightmareEntity extends Monster implements GeoEntity { @Override protected void tickDeath() { this.deathTime++; + if (this.deathTime == 1) { + this.selectSpecialAnimation(SPECIAL_DEATH); + } if (this.deathTime >= DEATH_TICKS) { this.remove(RemovalReason.KILLED); this.dropExperience(this); @@ -678,7 +690,6 @@ public class NightmareEntity extends Monster implements GeoEntity { if (!this.attackHitApplied && elapsed >= ATTACK_DAMAGE_TICK) { this.attackHitApplied = true; this.playNightmareBiteSound(); - this.spawnBiteEffect(); this.performAttackHit(); } if (--this.attackAnimationTicks <= 0) { @@ -731,14 +742,16 @@ public class NightmareEntity extends Monster implements GeoEntity { } 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.hasLineOfSight(target) || this.distanceToSqr(target) > PORTAL_RANGE * PORTAL_RANGE) 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) { - Vec3 exitPos = this.findPortalExitPos(target); + Vec3 entryPos = this.getPortalEntryPosition(); + Vec3 exitPos = this.findPortalExitPos(target, entryPos); if (exitPos == null || !(this.level() instanceof ServerLevel serverLevel)) return; this.clearNightmarePortals(); this.portalExitPos = exitPos; @@ -749,9 +762,9 @@ public class NightmareEntity extends Monster implements GeoEntity { this.attackHitApplied = false; this.attackCooldown = 24; this.portalCooldown = 180 + this.random.nextInt(100); - this.selectSpecialAnimation(SPECIAL_PORTAL); + this.selectSpecialAnimation(SPECIAL_PORTAL_ENTER); 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); if (this.entryPortal != null && this.exitPortal != null) { this.entryPortal.linkTo(this.exitPortal); @@ -771,7 +784,6 @@ public class NightmareEntity extends Monster implements GeoEntity { } if (!this.portalAttackHitApplied && elapsed >= PORTAL_DAMAGE_TICK) { this.portalAttackHitApplied = true; - this.spawnBiteEffect(); this.performPortalExitHit(); } if (--this.portalAttackTicks <= 0) { @@ -786,6 +798,7 @@ public class NightmareEntity extends Monster implements GeoEntity { if (this.portalExitPos == null) return; this.portalTravelTicks = PORTAL_TRAVEL_INVULNERABLE_TICKS; this.setPortalCooldown(); + this.selectSpecialAnimation(SPECIAL_PORTAL_EXIT); this.teleportTo(this.portalExitPos.x, this.portalExitPos.y, this.portalExitPos.z); if (target != null) { this.faceTowardTarget(target, 180.0F); @@ -820,7 +833,6 @@ public class NightmareEntity extends Monster implements GeoEntity { List victims = this.level().getEntitiesOfClass(LivingEntity.class, hitBox, this::canTargetEntity); for (LivingEntity victim : victims) { if (victim.hurt(this.nightmareDamageSource(), damage)) { - this.spawnBiteEffectAt(victim); this.applyNightmareStrikeEffects(victim); 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() { 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); 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 horizontalDistanceSqr = this.horizontalDistanceToSqr(target); + double overheadGap = this.getY() - target.getY(); 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)); } return new Vec3(anchor.x, target.getEyeY() + height, anchor.z); @@ -985,8 +989,12 @@ public class NightmareEntity extends Monster implements GeoEntity { return false; } + private Vec3 getPortalEntryPosition() { + return this.position().add(this.getViewVector(1.0F).multiply(1.6D, 0.0D, 1.6D)); + } + @Nullable - private Vec3 findPortalExitPos(LivingEntity target) { + private Vec3 findPortalExitPos(LivingEntity target, Vec3 entryPos) { Vec3 forward = target.getLookAngle().multiply(1.0D, 0.0D, 1.0D); if (forward.lengthSqr() < 1.0E-4D) { 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) { 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; } } @@ -1172,7 +1182,9 @@ public class NightmareEntity extends Monster implements GeoEntity { case SPECIAL_ROAR -> SPECIAL_ROAR_TRIGGER; case SPECIAL_ROAR_P2 -> SPECIAL_ROAR_P2_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; }; } diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/nightmare/NightmarePortalEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/nightmare/NightmarePortalEntity.java index 87516662..5b39f941 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/nightmare/NightmarePortalEntity.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/nightmare/NightmarePortalEntity.java @@ -9,9 +9,7 @@ import net.minecraft.server.level.ServerLevel; import net.minecraft.world.damagesource.DamageSource; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntityType; -import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.level.Level; -import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; import software.bernie.geckolib.animatable.GeoEntity; 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.util.GeckoLibUtil; -import java.util.List; import java.util.UUID; public class NightmarePortalEntity extends Entity implements GeoEntity { @@ -103,26 +100,6 @@ public class NightmarePortalEntity extends Entity implements GeoEntity { this.discard(); 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 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) { @@ -130,14 +107,6 @@ public class NightmarePortalEntity extends Entity implements GeoEntity { 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() { return this.getEntityData().get(CLOSING); } diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/BigBerthaItem.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/BigBerthaItem.java index be8e1bb0..391fcab0 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/BigBerthaItem.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/BigBerthaItem.java @@ -156,9 +156,10 @@ public class BigBerthaItem extends SwordItem implements GeoItem { } switch (getMode(stack)) { + case NONE -> applyNoneHit(player, target); case BASILISK -> applyBasiliskHit(target, 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 HERCULES -> applyHerculesHit(player, target, serverLevel); case MOLEVORE, TORETERROR -> { @@ -249,6 +250,22 @@ public class BigBerthaItem extends SwordItem implements GeoItem { 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) { target.addEffect(new MobEffectInstance( MobEffects.POISON, @@ -273,7 +290,9 @@ public class BigBerthaItem extends SwordItem implements GeoItem { 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)) { return; } @@ -293,11 +312,22 @@ public class BigBerthaItem extends SwordItem implements GeoItem { target.hurtMarked = true; } - private void applyNightmareHit(LivingEntity target, ServerLevel level) { + private void applyNightmareHit(Player attacker, LivingEntity target, ServerLevel level) { if (target instanceof Player) { target.addEffect(new MobEffectInstance(AntarchyObjects.DREAD.get(), AntarchySettings.nightmareDreadTicks(), 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.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) { CustomData.update(DataComponents.CUSTOM_DATA, stack, tag -> { - if (mode == BossMode.BASILISK) { + if (mode == BossMode.NONE) { tag.remove(MODE_TAG); } else { tag.putInt(MODE_TAG, mode.id); @@ -616,7 +646,8 @@ public class BigBerthaItem extends SwordItem implements GeoItem { } 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"), 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"), @@ -636,13 +667,14 @@ public class BigBerthaItem extends SwordItem implements GeoItem { private BossMode next() { return switch (this) { + case NONE -> BASILISK; case BASILISK -> LUCID; case LUCID -> NIGHTMARE; case NIGHTMARE -> KRAKEN; case KRAKEN -> HERCULES; case HERCULES -> MOLEVORE; case MOLEVORE -> TORETERROR; - case TORETERROR -> BASILISK; + case TORETERROR -> NONE; }; } @@ -652,7 +684,7 @@ public class BigBerthaItem extends SwordItem implements GeoItem { return mode; } } - return BASILISK; + return NONE; } } } diff --git a/common-1.21.1/src/main/resources/assets/antarchy/animations/flying_squirrel.animation.json b/common-1.21.1/src/main/resources/assets/antarchy/animations/flying_squirrel.animation.json index 29f908b9..689fc81e 100644 --- a/common-1.21.1/src/main/resources/assets/antarchy/animations/flying_squirrel.animation.json +++ b/common-1.21.1/src/main/resources/assets/antarchy/animations/flying_squirrel.animation.json @@ -7,72 +7,72 @@ "bones": { "left_leg": { "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": { - "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": { "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": { - "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": { "rotation": { - "vector": ["-math.cos(query.anim_time*2-60)", 0, 0] + "vector": ["-math.cos(q.anim_time*90*2-60)", 0, 0] }, "position": { - "vector": [0, "math.cos(query.anim_time*2)/5", 0] + "vector": [0, "math.cos(q.anim_time*90*2)/5", 0] } }, "head": { "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": { "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": { "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": { "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": { "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": { - "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": { "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": { - "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": { "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": { "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] }, "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": { "vector": [0, 0, 0] @@ -1491,7 +1491,7 @@ "vector": [0, 0, 0] }, "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": { "vector": [0, 0, 0] @@ -1500,7 +1500,7 @@ "vector": [0, 0, 0] }, "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": { "vector": [0, 0, 0] @@ -1547,13 +1547,13 @@ }, "1.0": { "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" }, "1.1667": { "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" }, @@ -2145,13 +2145,13 @@ }, "0.5": { "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" }, "1.0": { "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" }, @@ -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] + } + } + } } } -} \ No newline at end of file +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/animations/nightmare.animation.json b/common-1.21.1/src/main/resources/assets/antarchy/animations/nightmare.animation.json index 44c1d72e..e8e200bc 100644 --- a/common-1.21.1/src/main/resources/assets/antarchy/animations/nightmare.animation.json +++ b/common-1.21.1/src/main/resources/assets/antarchy/animations/nightmare.animation.json @@ -7984,7 +7984,7 @@ }, "0.2917": { "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" }, @@ -8014,7 +8014,7 @@ }, "0.7917": { "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" }, @@ -8044,7 +8044,7 @@ }, "1.2917": { "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" }, @@ -9176,13 +9176,13 @@ }, "1.6667": { "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" }, "1.875": { "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" }, @@ -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" + } + } + } + } } } } \ No newline at end of file diff --git a/common-1.21.1/src/main/resources/assets/antarchy/geo/flying_squirrel.geo.json b/common-1.21.1/src/main/resources/assets/antarchy/geo/flying_squirrel.geo.json index b7ce482a..b6d48118 100644 --- a/common-1.21.1/src/main/resources/assets/antarchy/geo/flying_squirrel.geo.json +++ b/common-1.21.1/src/main/resources/assets/antarchy/geo/flying_squirrel.geo.json @@ -13,37 +13,56 @@ "bones": [ { "name": "squirrel", - "pivot": [0, 1, 0] + "pivot": [0, 0, 0] + }, + { + "name": "body", + "parent": "squirrel", + "pivot": [0, 6, 0] }, { "name": "left_leg", - "parent": "squirrel", + "parent": "body", "pivot": [3, 5, 3.25], "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]} ] }, { "name": "right_leg", - "parent": "squirrel", + "parent": "body", "pivot": [-3, 5, 3.25], "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} ] }, { - "name": "body", - "parent": "squirrel", - "pivot": [0, 4, 2], + "name": "torso", + "parent": "body", + "pivot": [0, 4, 3], "cubes": [ {"origin": [0, 8.5, -6], "size": [0, 3, 11], "uv": [23, 30]} ] }, { "name": "body_2", - "parent": "body", + "parent": "torso", "pivot": [0, 6, -0.5], "cubes": [ {"origin": [-3, 3.5, -6], "size": [6, 5, 11], "uv": [0, 0]}, @@ -52,7 +71,7 @@ }, { "name": "head", - "parent": "body", + "parent": "torso", "pivot": [0, 7.33333, -5.91667], "cubes": [ {"origin": [-2, 4.5, -11], "size": [4, 5, 5], "uv": [17, 17]}, @@ -78,7 +97,7 @@ { "name": "left_ear", "parent": "head", - "pivot": [1, 9.5, -6.5], + "pivot": [1, 9.5, -7], "cubes": [ {"origin": [1, 9.5, -7], "size": [2, 2, 0], "uv": [36, 13]} ] @@ -86,14 +105,14 @@ { "name": "right_ear", "parent": "head", - "pivot": [-1, 9.5, -6.5], + "pivot": [-1, 9.5, -7], "cubes": [ {"origin": [-3, 9.5, -7], "size": [2, 2, 0], "uv": [36, 13], "mirror": true} ] }, { "name": "tail", - "parent": "body", + "parent": "torso", "pivot": [0, 6, 5], "cubes": [ {"origin": [-1.5, 5, 5], "size": [3, 11, 3], "uv": [14, 27]}, @@ -103,7 +122,7 @@ }, { "name": "left_arm", - "parent": "body", + "parent": "torso", "pivot": [3, 5, -4.5], "cubes": [ {"origin": [2, 0, -5.5], "size": [2, 5, 2], "uv": [35, 0]} @@ -112,14 +131,14 @@ { "name": "left_flying_part", "parent": "left_arm", - "pivot": [3, 5, -1], + "pivot": [3, 1, -3.5], "cubes": [ {"origin": [3, 0, -3.5], "size": [0, 5, 5], "inflate": 0.01, "uv": [26, 22]} ] }, { "name": "right_arm", - "parent": "body", + "parent": "torso", "pivot": [-3, 5, -4.5], "cubes": [ {"origin": [-4, 0, -5.5], "size": [2, 5, 2], "uv": [35, 0], "mirror": true} @@ -128,7 +147,7 @@ { "name": "right_flying_part", "parent": "right_arm", - "pivot": [-3, 5, -1], + "pivot": [-3, 1, -3.5], "cubes": [ {"origin": [-3, 0, -3.5], "size": [0, 5, 5], "inflate": 0.01, "uv": [26, 22], "mirror": true} ] diff --git a/common-1.21.1/src/main/resources/assets/antarchy/lang/en_us.json b/common-1.21.1/src/main/resources/assets/antarchy/lang/en_us.json index ef545166..4b6f6c5b 100644 --- a/common-1.21.1/src/main/resources/assets/antarchy/lang/en_us.json +++ b/common-1.21.1/src/main/resources/assets/antarchy/lang/en_us.json @@ -554,6 +554,7 @@ "death.attack.jumpy_bug_jump": "%1$s was jumped by Jumpy Bug", "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.none": "None", "message.antarchy.big_bertha.mode.basilisk": "Basilisk", "message.antarchy.big_bertha.mode.lucid": "Lucid", "message.antarchy.big_bertha.mode.nightmare": "Nightmare", @@ -591,9 +592,10 @@ "potion.antarchy.strong_haste": "Strong Haste Potion", "tooltip.antarchy.big_bertha.mode": "Mode: %s", "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.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.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.", @@ -1044,6 +1046,8 @@ "music.antarchy.lucid_lullaby.credit": "hewo_", "music.antarchy.venenatus": "Venenatus", "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.path": "Projects Inverted downward while it has an unobstructed path to the world below" } diff --git a/common-1.21.1/src/main/resources/assets/antarchy/sounds.json b/common-1.21.1/src/main/resources/assets/antarchy/sounds.json index cfdb304d..af447a9e 100644 --- a/common-1.21.1/src/main/resources/assets/antarchy/sounds.json +++ b/common-1.21.1/src/main/resources/assets/antarchy/sounds.json @@ -924,6 +924,14 @@ } ] }, + "music.game.thoraxis": { + "sounds": [ + { + "name": "antarchy:lucid_lullaby", + "stream": true + } + ] + }, "venenatus": { "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": { "subtitle": "subtitles.antarchy.lucid_ambient", "sounds": [ diff --git a/common-1.21.1/src/main/resources/assets/antarchy/sounds/music/game/elythia/wistful_wanderings.ogg b/common-1.21.1/src/main/resources/assets/antarchy/sounds/music/game/elythia/wistful_wanderings.ogg new file mode 100644 index 00000000..abe69653 Binary files /dev/null and b/common-1.21.1/src/main/resources/assets/antarchy/sounds/music/game/elythia/wistful_wanderings.ogg differ diff --git a/common-1.21.1/src/main/resources/data/antarchy/tags/block/infinity_dimension_rare_ores.json b/common-1.21.1/src/main/resources/data/antarchy/tags/block/infinity_dimension_rare_ores.json new file mode 100644 index 00000000..639de1a7 --- /dev/null +++ b/common-1.21.1/src/main/resources/data/antarchy/tags/block/infinity_dimension_rare_ores.json @@ -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" + ] +} diff --git a/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/biowart_caves.json b/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/biowart_caves.json index 282f26fd..70d7e637 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/biowart_caves.json +++ b/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/biowart_caves.json @@ -23,7 +23,7 @@ } }, "music": { - "sound": "antarchy:venenatus", + "sound": "antarchy:music.game.cavaryn", "min_delay": 12000, "max_delay": 24000, "replace_current_music": true diff --git a/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/brooding_tunnels.json b/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/brooding_tunnels.json index 3b891866..0c641197 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/brooding_tunnels.json +++ b/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/brooding_tunnels.json @@ -22,7 +22,7 @@ } }, "music": { - "sound": "antarchy:venenatus", + "sound": "antarchy:music.game.cavaryn", "min_delay": 12000, "max_delay": 24000, "replace_current_music": true diff --git a/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/butterfly_fields.json b/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/butterfly_fields.json index 1137b44c..a3e16359 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/butterfly_fields.json +++ b/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/butterfly_fields.json @@ -15,6 +15,12 @@ "tick_delay": 8000, "block_search_extent": 8, "offset": 2.0 + }, + "music": { + "sound": "antarchy:music.game.elythia", + "min_delay": 12000, + "max_delay": 24000, + "replace_current_music": true } }, "spawn_costs": { diff --git a/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/cavaryn.json b/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/cavaryn.json index d8893daa..fdd06ec7 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/cavaryn.json +++ b/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/cavaryn.json @@ -22,7 +22,7 @@ } }, "music": { - "sound": "antarchy:venenatus", + "sound": "antarchy:music.game.cavaryn", "min_delay": 12000, "max_delay": 24000, "replace_current_music": true diff --git a/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/cavaryn_moleworm_caves.json b/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/cavaryn_moleworm_caves.json index 6527b4f1..30cbfb7e 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/cavaryn_moleworm_caves.json +++ b/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/cavaryn_moleworm_caves.json @@ -17,7 +17,7 @@ } }, "music": { - "sound": "antarchy:venenatus", + "sound": "antarchy:music.game.cavaryn", "min_delay": 12000, "max_delay": 24000, "replace_current_music": true diff --git a/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/dream_dunes.json b/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/dream_dunes.json index 61f0be87..c938a238 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/dream_dunes.json +++ b/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/dream_dunes.json @@ -25,7 +25,7 @@ "offset": 2.0 }, "music": { - "sound": "antarchy:lucid_lullaby", + "sound": "antarchy:music.game.thoraxis", "min_delay": 12000, "max_delay": 24000, "replace_current_music": true diff --git a/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/elythia_beach.json b/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/elythia_beach.json index 00681984..a213bdd9 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/elythia_beach.json +++ b/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/elythia_beach.json @@ -17,7 +17,7 @@ "offset": 2.0 }, "music": { - "sound": "minecraft:music.game", + "sound": "antarchy:music.game.elythia", "min_delay": 12000, "max_delay": 24000, "replace_current_music": true diff --git a/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/elythia_coral_spikes.json b/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/elythia_coral_spikes.json index c5bf77d3..c001dd55 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/elythia_coral_spikes.json +++ b/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/elythia_coral_spikes.json @@ -17,7 +17,7 @@ "offset": 2.0 }, "music": { - "sound": "minecraft:music.game", + "sound": "antarchy:music.game.elythia", "min_delay": 12000, "max_delay": 24000, "replace_current_music": true diff --git a/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/elythia_lush_caves.json b/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/elythia_lush_caves.json index 43edad79..6323cc83 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/elythia_lush_caves.json +++ b/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/elythia_lush_caves.json @@ -23,7 +23,7 @@ "offset": 2.0 }, "music": { - "sound": "minecraft:music.game", + "sound": "antarchy:music.game.elythia", "min_delay": 12000, "max_delay": 24000, "replace_current_music": true diff --git a/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/elythia_meadow.json b/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/elythia_meadow.json index 6f1dd61b..afe0e436 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/elythia_meadow.json +++ b/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/elythia_meadow.json @@ -17,7 +17,7 @@ "offset": 2.0 }, "music": { - "sound": "minecraft:music.game", + "sound": "antarchy:music.game.elythia", "min_delay": 12000, "max_delay": 24000, "replace_current_music": true diff --git a/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/elythia_ocean.json b/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/elythia_ocean.json index 97b97bfd..585bfd88 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/elythia_ocean.json +++ b/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/elythia_ocean.json @@ -17,7 +17,7 @@ "offset": 2.0 }, "music": { - "sound": "minecraft:music.game", + "sound": "antarchy:music.game.elythia", "min_delay": 12000, "max_delay": 24000, "replace_current_music": true diff --git a/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/elythia_river.json b/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/elythia_river.json index ae74314c..23d3b265 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/elythia_river.json +++ b/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/elythia_river.json @@ -17,7 +17,7 @@ "offset": 2.0 }, "music": { - "sound": "minecraft:music.game", + "sound": "antarchy:music.game.elythia", "min_delay": 12000, "max_delay": 24000, "replace_current_music": true diff --git a/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/fungal_ouranwood_forest.json b/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/fungal_ouranwood_forest.json index 640f61b8..911b65dc 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/fungal_ouranwood_forest.json +++ b/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/fungal_ouranwood_forest.json @@ -23,7 +23,7 @@ "offset": 2.0 }, "music": { - "sound": "minecraft:music.game", + "sound": "antarchy:music.game.elythia", "min_delay": 12000, "max_delay": 24000, "replace_current_music": true diff --git a/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/glimmering_pools.json b/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/glimmering_pools.json index 300543e7..b4fc2d1f 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/glimmering_pools.json +++ b/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/glimmering_pools.json @@ -17,7 +17,7 @@ "offset": 2.0 }, "music": { - "sound": "minecraft:music.game", + "sound": "antarchy:music.game.elythia", "min_delay": 12000, "max_delay": 24000, "replace_current_music": true diff --git a/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/glowcap_caves.json b/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/glowcap_caves.json index e08f3352..11f0638d 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/glowcap_caves.json +++ b/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/glowcap_caves.json @@ -23,7 +23,7 @@ } }, "music": { - "sound": "antarchy:venenatus", + "sound": "antarchy:music.game.cavaryn", "min_delay": 12000, "max_delay": 24000, "replace_current_music": true diff --git a/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/lucid_pools.json b/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/lucid_pools.json index cd2ba45b..bfa64674 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/lucid_pools.json +++ b/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/lucid_pools.json @@ -25,7 +25,7 @@ "offset": 2.0 }, "music": { - "sound": "antarchy:lucid_lullaby", + "sound": "antarchy:music.game.thoraxis", "min_delay": 12000, "max_delay": 24000, "replace_current_music": true diff --git a/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/moleworm_caves.json b/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/moleworm_caves.json index 693e4356..c51f9103 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/moleworm_caves.json +++ b/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/moleworm_caves.json @@ -17,7 +17,7 @@ } }, "music": { - "sound": "minecraft:music.game", + "sound": "antarchy:music.game.elythia", "min_delay": 12000, "max_delay": 24000, "replace_current_music": true diff --git a/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/nightmare_wastes.json b/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/nightmare_wastes.json index 314d5549..60dac76d 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/nightmare_wastes.json +++ b/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/nightmare_wastes.json @@ -25,7 +25,7 @@ "offset": 2.0 }, "music": { - "sound": "antarchy:lucid_lullaby", + "sound": "antarchy:music.game.thoraxis", "min_delay": 12000, "max_delay": 24000, "replace_current_music": true diff --git a/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/ouranwood_forest.json b/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/ouranwood_forest.json index 4891f0d6..06698280 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/ouranwood_forest.json +++ b/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/ouranwood_forest.json @@ -23,7 +23,7 @@ "offset": 2.0 }, "music": { - "sound": "minecraft:music.game", + "sound": "antarchy:music.game.elythia", "min_delay": 12000, "max_delay": 24000, "replace_current_music": true diff --git a/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/peach_forest.json b/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/peach_forest.json index 63f4cf94..232bbaad 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/peach_forest.json +++ b/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/peach_forest.json @@ -17,7 +17,7 @@ "offset": 2.0 }, "music": { - "sound": "minecraft:music.game", + "sound": "antarchy:music.game.elythia", "min_delay": 12000, "max_delay": 24000, "replace_current_music": true diff --git a/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/rolly_caves.json b/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/rolly_caves.json index 195a8563..75f5ce81 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/rolly_caves.json +++ b/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/rolly_caves.json @@ -22,7 +22,7 @@ } }, "music": { - "sound": "antarchy:venenatus", + "sound": "antarchy:music.game.cavaryn", "min_delay": 12000, "max_delay": 24000, "replace_current_music": true diff --git a/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/sparse_ouranwood_forest.json b/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/sparse_ouranwood_forest.json index a29da3e7..e839be16 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/sparse_ouranwood_forest.json +++ b/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/sparse_ouranwood_forest.json @@ -23,7 +23,7 @@ "offset": 2.0 }, "music": { - "sound": "minecraft:music.game", + "sound": "antarchy:music.game.elythia", "min_delay": 12000, "max_delay": 24000, "replace_current_music": true diff --git a/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/umbral_hills.json b/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/umbral_hills.json index 48773b92..4a5be616 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/umbral_hills.json +++ b/common-1.21.1/src/main/resources/data/antarchy/worldgen/biome/umbral_hills.json @@ -25,7 +25,7 @@ "offset": 2.0 }, "music": { - "sound": "antarchy:lucid_lullaby", + "sound": "antarchy:music.game.thoraxis", "min_delay": 12000, "max_delay": 24000, "replace_current_music": true diff --git a/fabric-1.20.1/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricContent.java b/fabric-1.20.1/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricContent.java index 6898eeac..5fd70830 100644 --- a/fabric-1.20.1/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricContent.java +++ b/fabric-1.20.1/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricContent.java @@ -308,6 +308,8 @@ public final class AntarchyFabricContent { AntarchyObjects.setLumenFroglight(() -> AntarchyFabricBlocks.LUMEN_FROGLIGHT.get()); AntarchyObjects.setPeachLeavesParticle(() -> AntarchyFabricMisc.PEACH_LEAVES_PARTICLE.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.setCritterCage(() -> AntarchyFabricItems.CRITTER_CAGE.get()); AntarchyObjects.setCritterCageBlock(() -> AntarchyFabricBlocks.CRITTER_CAGE_BLOCK.get()); diff --git a/fabric-1.20.1/src/main/java/com/craisinlord/antarchy/fabric/client/AntarchyFabricClientBootstrap.java b/fabric-1.20.1/src/main/java/com/craisinlord/antarchy/fabric/client/AntarchyFabricClientBootstrap.java index 40afd7a7..217b4da8 100644 --- a/fabric-1.20.1/src/main/java/com/craisinlord/antarchy/fabric/client/AntarchyFabricClientBootstrap.java +++ b/fabric-1.20.1/src/main/java/com/craisinlord/antarchy/fabric/client/AntarchyFabricClientBootstrap.java @@ -288,6 +288,8 @@ public final class AntarchyFabricClientBootstrap { registry.register(AntarchyFabricMisc.INVERTED_GEYSER_ERUPTION.get(), new InvertedGeyserEruptionParticle.Provider()); registry.register(AntarchyFabricMisc.FIREFLY.get(), FireflyParticle.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() { diff --git a/fabric-1.20.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricMisc.java b/fabric-1.20.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricMisc.java index 33c50574..ea89be2f 100644 --- a/fabric-1.20.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricMisc.java +++ b/fabric-1.20.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricMisc.java @@ -314,6 +314,12 @@ public final class AntarchyFabricMisc { public static final DeferredHolder, SimpleParticleType> ORANGE_ASH = PARTICLE_TYPES.register("orange_ash", () -> simpleParticleType()); + public static final DeferredHolder, SimpleParticleType> LUCID_BOLT_IMPACT_SMALL = PARTICLE_TYPES.register("lucid_bolt_impact_small", + () -> simpleParticleType()); + + public static final DeferredHolder, SimpleParticleType> LUCID_BOLT_IMPACT_LARGE = PARTICLE_TYPES.register("lucid_bolt_impact_large", + () -> simpleParticleType()); + public static final DeferredHolder, ParticleType> INVERTED_GEYSER_BASE = PARTICLE_TYPES.register("inverted_geyser_base", () -> particleType(InvertedGeyserBaseParticleOptions.deserializer())); diff --git a/fabric-1.20.1/src/main/resources/antarchy-fabric.mixins.json b/fabric-1.20.1/src/main/resources/antarchy-fabric.mixins.json index 16066d9b..790c3d5f 100644 --- a/fabric-1.20.1/src/main/resources/antarchy-fabric.mixins.json +++ b/fabric-1.20.1/src/main/resources/antarchy-fabric.mixins.json @@ -4,6 +4,7 @@ "refmap": "antarchy.mixins.refmap.json", "compatibilityLevel": "JAVA_17", "mixins": [ + "infinity.AmendmentRareOresMixin" ], "client": [ ], diff --git a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricContent.java b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricContent.java index 577ffbec..97fae301 100644 --- a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricContent.java +++ b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricContent.java @@ -322,6 +322,8 @@ public final class AntarchyFabricContent { AntarchyObjects.setLumenFroglight(() -> AntarchyFabricBlocks.LUMEN_FROGLIGHT.get()); AntarchyObjects.setPeachLeavesParticle(() -> AntarchyFabricMisc.PEACH_LEAVES_PARTICLE.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.setCritterCage(() -> AntarchyFabricItems.CRITTER_CAGE.get()); AntarchyObjects.setCritterCageBlock(() -> AntarchyFabricBlocks.CRITTER_CAGE_BLOCK.get()); diff --git a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/client/AntarchyFabricClientBootstrap.java b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/client/AntarchyFabricClientBootstrap.java index 17b45669..dbe64c49 100644 --- a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/client/AntarchyFabricClientBootstrap.java +++ b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/client/AntarchyFabricClientBootstrap.java @@ -288,6 +288,8 @@ public final class AntarchyFabricClientBootstrap { registry.register(AntarchyFabricMisc.INVERTED_GEYSER_ERUPTION.get(), new InvertedGeyserEruptionParticle.Provider()); registry.register(AntarchyFabricMisc.FIREFLY.get(), FireflyParticle.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() { diff --git a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricMisc.java b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricMisc.java index 7f63b415..546dbc1f 100644 --- a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricMisc.java +++ b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricMisc.java @@ -327,6 +327,12 @@ public final class AntarchyFabricMisc { public static final DeferredHolder, SimpleParticleType> ORANGE_ASH = PARTICLE_TYPES.register("orange_ash", () -> simpleParticleType()); + public static final DeferredHolder, SimpleParticleType> LUCID_BOLT_IMPACT_SMALL = PARTICLE_TYPES.register("lucid_bolt_impact_small", + () -> simpleParticleType()); + + public static final DeferredHolder, SimpleParticleType> LUCID_BOLT_IMPACT_LARGE = PARTICLE_TYPES.register("lucid_bolt_impact_large", + () -> simpleParticleType()); + public static final DeferredHolder, ParticleType> INVERTED_GEYSER_BASE = PARTICLE_TYPES.register("inverted_geyser_base", () -> particleType(InvertedGeyserBaseParticleOptions::codec, InvertedGeyserBaseParticleOptions::streamCodec)); diff --git a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricSounds.java b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricSounds.java index 656c8e13..87f991f2 100644 --- a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricSounds.java +++ b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricSounds.java @@ -160,6 +160,18 @@ public final class AntarchyFabricSounds { public static final DeferredHolder LUCID_LULLABY = registerSoundEvent("lucid_lullaby"); + public static final DeferredHolder MUSIC_GAME_THORAXIS = registerSoundEvent("music.game.thoraxis"); + + + public static final DeferredHolder MUSIC_GAME_CAVARYN = registerSoundEvent("music.game.cavaryn"); + + + public static final DeferredHolder WISTFUL_WANDERINGS = registerSoundEvent("wistful_wanderings"); + + + public static final DeferredHolder MUSIC_GAME_ELYTHIA = registerSoundEvent("music.game.elythia"); + + public static final DeferredHolder LUCID_AMBIENT = registerSoundEvent("lucid_ambient"); diff --git a/fabric-1.21.1/src/main/resources/antarchy-fabric.mixins.json b/fabric-1.21.1/src/main/resources/antarchy-fabric.mixins.json index dba65f86..1d545645 100644 --- a/fabric-1.21.1/src/main/resources/antarchy-fabric.mixins.json +++ b/fabric-1.21.1/src/main/resources/antarchy-fabric.mixins.json @@ -20,7 +20,8 @@ "JumpyBootsFallDamageMixin", "entity.MultipartEntityLevelRegistryMixin", "WoodTypeInvoker", - "infinity.PortalCreatorMixin" + "infinity.PortalCreatorMixin", + "infinity.AmendmentRareOresMixin" ], "client": [ "client.CameraShakeMixin", diff --git a/forge-1.20.1/src/main/java/com/craisinlord/antarchy/forge/AntarchyConfigModuleForge.java b/forge-1.20.1/src/main/java/com/craisinlord/antarchy/forge/AntarchyConfigModuleForge.java index 80e08840..9aa08529 100644 --- a/forge-1.20.1/src/main/java/com/craisinlord/antarchy/forge/AntarchyConfigModuleForge.java +++ b/forge-1.20.1/src/main/java/com/craisinlord/antarchy/forge/AntarchyConfigModuleForge.java @@ -101,16 +101,22 @@ public final class AntarchyConfigModuleForge { AntarchySettings.setJumpyBugLatchDamage(AntarchyMobsConfig.jumpyBugLatchDamage()); AntarchySettings.setJumpyBugCamouflageAlpha(AntarchyMobsConfig.jumpyBugCamouflageAlpha()); + AntarchySettings.setEmperorScorpionDamageRange(AntarchyMobsConfig.emperorScorpionDamageRange()); + AntarchySettings.setEmperorScorpionMinDespawnTicks(AntarchyMobsConfig.emperorScorpionMinDespawnTicks()); + AntarchySettings.setKrakenHealth(AntarchyMobsConfig.krakenHealth()); AntarchySettings.setKrakenAttackDamage(AntarchyMobsConfig.krakenAttackDamage()); AntarchySettings.setKrakenProjectileDamageTakenMultiplier(AntarchyMobsConfig.krakenProjectileDamageTakenMultiplier()); AntarchySettings.setKrakenSquidSpawnEnabled(AntarchyMobsConfig.krakenSquidSpawnEnabled()); AntarchySettings.setKrakenMassSpawnEnabled(AntarchyMobsConfig.krakenMassSpawnEnabled()); AntarchySettings.setKrakenRequireBadOmenToSummon(AntarchyMobsConfig.krakenRequireBadOmenToSummon()); + AntarchySettings.setKrakenFollowRange(AntarchyMobsConfig.krakenFollowRange()); + AntarchySettings.setKrakenDamageRange(AntarchyMobsConfig.krakenDamageRange()); AntarchySettings.setBrutalflyHealth(AntarchyMobsConfig.brutalflyHealth()); AntarchySettings.setBrutalflySwipeDamage(AntarchyMobsConfig.brutalflySwipeDamage()); AntarchySettings.setBrutalflySpitDamage(AntarchyMobsConfig.brutalflySpitDamage()); + AntarchySettings.setBrutalflyDamageRange(AntarchyMobsConfig.brutalflyDamageRange()); AntarchySettings.setMantisHealth(AntarchyMobsConfig.mantisHealth()); AntarchySettings.setMantisAttackDamage(AntarchyMobsConfig.mantisAttackDamage()); @@ -124,6 +130,7 @@ public final class AntarchyConfigModuleForge { AntarchySettings.setAlphaMantisFlyingSpeed(AntarchyMobsConfig.alphaMantisFlyingSpeed()); AntarchySettings.setAlphaMantisSummonIntervalTicks(AntarchyMobsConfig.alphaMantisSummonIntervalTicks()); AntarchySettings.setAlphaMantisMaxMinions(AntarchyMobsConfig.alphaMantisMaxMinions()); + AntarchySettings.setAlphaMantisDamageRange(AntarchyMobsConfig.alphaMantisDamageRange()); AntarchySettings.setRollyPollyHealth(AntarchyMobsConfig.rollyPollyHealth()); AntarchySettings.setRollyPollyMovementSpeed(AntarchyMobsConfig.rollyPollyMovementSpeed()); @@ -190,6 +197,7 @@ public final class AntarchyConfigModuleForge { AntarchySettings.setDreadHallucinationMobMaxInterval(AntarchyMobsConfig.dreadHallucinationMobMaxInterval()); AntarchySettings.setToreterrorHealth(AntarchyMobsConfig.toreterrorHealth()); + AntarchySettings.setToreterrorDamageRange(AntarchyMobsConfig.toreterrorDamageRange()); AntarchySettings.setToreterrorJumpAttackDamage(AntarchyMobsConfig.toreterrorJumpAttackDamage()); AntarchySettings.setToreterrorJumpAttackKnockback(AntarchyMobsConfig.toreterrorJumpAttackKnockback()); AntarchySettings.setToreterrorSpinDamage(AntarchyMobsConfig.toreterrorSpinDamage()); @@ -220,6 +228,7 @@ public final class AntarchyConfigModuleForge { AntarchySettings.setHerculesBeetleHealth(AntarchyMobsConfig.herculesBeetleHealth()); AntarchySettings.setHerculesBeetleAttackDamage(AntarchyMobsConfig.herculesBeetleAttackDamage()); AntarchySettings.setHerculesBeetleChargeDamage(AntarchyMobsConfig.herculesBeetleChargeDamage()); + AntarchySettings.setHerculesBeetleDamageRange(AntarchyMobsConfig.herculesBeetleDamageRange()); AntarchySettings.setOuranwoodDeerHealth(AntarchyMobsConfig.ouranwoodDeerHealth()); AntarchySettings.setGlimmerHealth(AntarchyMobsConfig.glimmerHealth()); } @@ -282,6 +291,8 @@ public final class AntarchyConfigModuleForge { AntarchySettings.setBigBerthaBasiliskCooldownSeconds(AntarchyToolsConfig.bigBerthaBasiliskCooldownSeconds()); AntarchySettings.setBigBerthaLucidInvertedDurationSeconds(AntarchyToolsConfig.bigBerthaLucidInvertedDurationSeconds()); AntarchySettings.setBigBerthaLucidInvertedDamageBonusPercent(AntarchyToolsConfig.bigBerthaLucidInvertedDamageBonusPercent()); + AntarchySettings.setBigBerthaNoneModeDamageBonusPercent(AntarchyToolsConfig.bigBerthaNoneModeDamageBonusPercent()); + AntarchySettings.setBigBerthaNightmareDamageBonusPercent(AntarchyToolsConfig.bigBerthaNightmareDamageBonusPercent()); AntarchySettings.setKrakensGraspAttackDamage(AntarchyToolsConfig.krakensGraspAttackDamage()); AntarchySettings.setKrakensGraspAttackSpeed(AntarchyToolsConfig.krakensGraspAttackSpeed()); AntarchySettings.setKrakensGraspThrownDamage(AntarchyToolsConfig.krakensGraspThrownDamage()); @@ -289,9 +300,9 @@ public final class AntarchyConfigModuleForge { AntarchySettings.setKrakensGraspInnateLoyalty(AntarchyToolsConfig.krakensGraspInnateLoyalty()); AntarchySettings.setKrakensGraspInnateLoyaltyLevel(AntarchyToolsConfig.krakensGraspInnateLoyaltyLevel()); AntarchySettings.setKrakensGraspTentacleDurationTicks(AntarchyToolsConfig.krakensGraspTentacleDurationTicks()); - AntarchySettings.setKrakensGraspTentacleDamage(AntarchyToolsConfig.krakensGraspTentacleDamage()); AntarchySettings.setKrakensGraspTentacleRadius(AntarchyToolsConfig.krakensGraspTentacleRadius()); - AntarchySettings.setKrakensGraspTentacleDamageIntervalTicks(AntarchyToolsConfig.krakensGraspTentacleDamageIntervalTicks()); + AntarchySettings.setKrakensGraspTentacleSlownessAmplifier(AntarchyToolsConfig.krakensGraspTentacleSlownessAmplifier()); + AntarchySettings.setKrakensGraspTentacleSlownessRefreshTicks(AntarchyToolsConfig.krakensGraspTentacleSlownessRefreshTicks()); AntarchySettings.setScorpionWhipBaseDamage(AntarchyToolsConfig.scorpionWhipBaseDamage()); AntarchySettings.setScorpionWhipReachBonus(AntarchyToolsConfig.scorpionWhipReachBonus()); AntarchySettings.setScorpionWhipPoisonDurationTicks(AntarchyToolsConfig.scorpionWhipPoisonDurationTicks()); diff --git a/forge-1.20.1/src/main/java/com/craisinlord/antarchy/forge/AntarchyForge.java b/forge-1.20.1/src/main/java/com/craisinlord/antarchy/forge/AntarchyForge.java index ba6e3435..e2a4db61 100644 --- a/forge-1.20.1/src/main/java/com/craisinlord/antarchy/forge/AntarchyForge.java +++ b/forge-1.20.1/src/main/java/com/craisinlord/antarchy/forge/AntarchyForge.java @@ -376,6 +376,8 @@ public class AntarchyForge { AntarchyObjects.setLumenFroglight(() -> AntarchyForgeBlocks.LUMEN_FROGLIGHT.get()); AntarchyObjects.setPeachLeavesParticle(() -> AntarchyForgeMisc.PEACH_LEAVES_PARTICLE.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.setCritterCage(() -> AntarchyForgeItems.CRITTER_CAGE.get()); AntarchyObjects.setCritterCageBlock(() -> AntarchyForgeBlocks.CRITTER_CAGE_BLOCK.get()); diff --git a/forge-1.20.1/src/main/java/com/craisinlord/antarchy/forge/AntarchyMobsConfig.java b/forge-1.20.1/src/main/java/com/craisinlord/antarchy/forge/AntarchyMobsConfig.java index 75927b00..d5a5cb75 100644 --- a/forge-1.20.1/src/main/java/com/craisinlord/antarchy/forge/AntarchyMobsConfig.java +++ b/forge-1.20.1/src/main/java/com/craisinlord/antarchy/forge/AntarchyMobsConfig.java @@ -69,6 +69,12 @@ public final class AntarchyMobsConfig { 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 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_MASS_SPAWN_ENABLED; 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 @@ -84,6 +92,7 @@ public final class AntarchyMobsConfig { private static final ForgeConfigSpec.DoubleValue BRUTALFLY_HEALTH; private static final ForgeConfigSpec.DoubleValue BRUTALFLY_SWIPE_DAMAGE; private static final ForgeConfigSpec.DoubleValue BRUTALFLY_SPIT_DAMAGE; + private static final ForgeConfigSpec.DoubleValue BRUTALFLY_DAMAGE_RANGE; // Mantis @@ -103,6 +112,7 @@ public final class AntarchyMobsConfig { 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_MAX_MINIONS; + private static final ForgeConfigSpec.DoubleValue ALPHA_MANTIS_DAMAGE_RANGE; // Rolly Polly @@ -185,6 +195,7 @@ public final class AntarchyMobsConfig { // Toreterror 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_KNOCKBACK; 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_ATTACK_DAMAGE; private static final ForgeConfigSpec.DoubleValue HERCULES_BEETLE_CHARGE_DAMAGE; + private static final ForgeConfigSpec.DoubleValue HERCULES_BEETLE_DAMAGE_RANGE; // Lucid @@ -398,6 +410,18 @@ public final class AntarchyMobsConfig { 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 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_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_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(); @@ -416,6 +442,7 @@ public final class AntarchyMobsConfig { 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_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(); @@ -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_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_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(); @@ -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_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_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.push("toreterror"); 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_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); @@ -686,16 +716,22 @@ public final class AntarchyMobsConfig { static double jumpyBugLatchDamage() { return JUMPY_BUG_LATCH_DAMAGE.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 krakenAttackDamage() { return KRAKEN_ATTACK_DAMAGE.get(); } static double krakenProjectileDamageTakenMultiplier() { return KRAKEN_PROJECTILE_DAMAGE_TAKEN_MULTIPLIER.get(); } static boolean krakenSquidSpawnEnabled() { return KRAKEN_SQUID_SPAWN_ENABLED.get(); } static boolean krakenMassSpawnEnabled() { return KRAKEN_MASS_SPAWN_ENABLED.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 brutalflySwipeDamage() { return BRUTALFLY_SWIPE_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 mantisAttackDamage() { return MANTIS_ATTACK_DAMAGE.get(); } @@ -708,6 +744,7 @@ public final class AntarchyMobsConfig { static double alphaMantisFlyingSpeed() { return ALPHA_MANTIS_FLYING_SPEED.get(); } static int alphaMantisSummonIntervalTicks() { return ALPHA_MANTIS_SUMMON_INTERVAL_TICKS.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 rollyPollyMovementSpeed() { return ROLLY_POLLY_MOVEMENT_SPEED.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 toreterrorHealth() { return TORETERROR_HEALTH.get(); } + static double toreterrorDamageRange() { return TORETERROR_DAMAGE_RANGE.get(); } static double toreterrorJumpAttackDamage() { return TORETERROR_JUMP_ATTACK_DAMAGE.get(); } static double toreterrorJumpAttackKnockback() { return TORETERROR_JUMP_ATTACK_KNOCKBACK.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 herculesBeetleAttackDamage() { return HERCULES_BEETLE_ATTACK_DAMAGE.get(); } static double herculesBeetleChargeDamage() { return HERCULES_BEETLE_CHARGE_DAMAGE.get(); } + static double herculesBeetleDamageRange() { return HERCULES_BEETLE_DAMAGE_RANGE.get(); } } diff --git a/forge-1.20.1/src/main/java/com/craisinlord/antarchy/forge/AntarchyToolsConfig.java b/forge-1.20.1/src/main/java/com/craisinlord/antarchy/forge/AntarchyToolsConfig.java index e1a97622..4627b4e4 100644 --- a/forge-1.20.1/src/main/java/com/craisinlord/antarchy/forge/AntarchyToolsConfig.java +++ b/forge-1.20.1/src/main/java/com/craisinlord/antarchy/forge/AntarchyToolsConfig.java @@ -88,14 +88,16 @@ public final class AntarchyToolsConfig { 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_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.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_KRAKEN_SLOW_TICKS; 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_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_REACH_BONUS; 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_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_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.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_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_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 damage.") .defineInRange("tentacleRadius", 3.0D, 0.0D, 32.0D); - 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_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_SLOWNESS_AMPLIFIER = b.comment("Slowness amplifier applied to entities held by a tentacle (0 = Slowness I).").defineInRange("tentacleSlownessAmplifier", 8, 0, 255); + 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.push("scorpionWhip"); @@ -593,6 +597,8 @@ public final class AntarchyToolsConfig { static double bigBerthaBasiliskCooldownSeconds() { return BIG_BERTHA_BASILISK_COOLDOWN_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 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 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 int krakensGraspInnateLoyaltyLevel() { return KRAKENS_GRASP_INNATE_LOYALTY_LEVEL.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 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 scorpionWhipReachBonus() { return SCORPION_WHIP_REACH_BONUS.get(); } static int scorpionWhipPoisonDurationTicks() { return SCORPION_WHIP_POISON_DURATION_TICKS.get(); } diff --git a/forge-1.20.1/src/main/java/com/craisinlord/antarchy/forge/client/AntarchyForgeClient.java b/forge-1.20.1/src/main/java/com/craisinlord/antarchy/forge/client/AntarchyForgeClient.java index e9869373..3d388e71 100644 --- a/forge-1.20.1/src/main/java/com/craisinlord/antarchy/forge/client/AntarchyForgeClient.java +++ b/forge-1.20.1/src/main/java/com/craisinlord/antarchy/forge/client/AntarchyForgeClient.java @@ -293,6 +293,8 @@ public final class AntarchyForgeClient { event.registerSpecial(AntarchyForgeMisc.INVERTED_GEYSER_ERUPTION.get(), new InvertedGeyserEruptionParticle.Provider()); event.registerSpriteSet(AntarchyForgeMisc.FIREFLY.get(), FireflyParticle.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 diff --git a/forge-1.20.1/src/main/java/com/craisinlord/antarchy/forge/registry/AntarchyForgeMisc.java b/forge-1.20.1/src/main/java/com/craisinlord/antarchy/forge/registry/AntarchyForgeMisc.java index c9450dbb..ca557e16 100644 --- a/forge-1.20.1/src/main/java/com/craisinlord/antarchy/forge/registry/AntarchyForgeMisc.java +++ b/forge-1.20.1/src/main/java/com/craisinlord/antarchy/forge/registry/AntarchyForgeMisc.java @@ -176,6 +176,10 @@ public final class AntarchyForgeMisc { AntarchyForgeMisc::simpleParticleType); public static final RegistryObject ORANGE_ASH = PARTICLE_TYPES.register("orange_ash", AntarchyForgeMisc::simpleParticleType); + public static final RegistryObject LUCID_BOLT_IMPACT_SMALL = PARTICLE_TYPES.register("lucid_bolt_impact_small", + AntarchyForgeMisc::simpleParticleType); + public static final RegistryObject LUCID_BOLT_IMPACT_LARGE = PARTICLE_TYPES.register("lucid_bolt_impact_large", + AntarchyForgeMisc::simpleParticleType); public static final RegistryObject> INVERTED_GEYSER_BASE = PARTICLE_TYPES.register("inverted_geyser_base", () -> particleType(InvertedGeyserBaseParticleOptions.deserializer())); public static final RegistryObject> INVERTED_GEYSER_PLUME = PARTICLE_TYPES.register("inverted_geyser_plume", diff --git a/forge-1.20.1/src/main/resources/antarchy-forge.mixins.json b/forge-1.20.1/src/main/resources/antarchy-forge.mixins.json index 7b2955b0..bdb58de0 100644 --- a/forge-1.20.1/src/main/resources/antarchy-forge.mixins.json +++ b/forge-1.20.1/src/main/resources/antarchy-forge.mixins.json @@ -7,6 +7,7 @@ "entity.MultipartEntityBridgeMixin", "entity.MultipartEntityLevelRegistryMixin", "entity.ParalyzedMobFreezeMixin", + "infinity.AmendmentRareOresMixin", "infinity.ConfigGenInvocationMixin", "item.BucketItemThoraxisWaterMixin", "level.ClientLevelPartEntitiesAccessor", diff --git a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyConfigModuleNeoforge.java b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyConfigModuleNeoforge.java index 2e58dcf3..2101eba4 100644 --- a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyConfigModuleNeoforge.java +++ b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyConfigModuleNeoforge.java @@ -101,16 +101,22 @@ public final class AntarchyConfigModuleNeoforge { AntarchySettings.setJumpyBugLatchDamage(AntarchyMobsConfig.jumpyBugLatchDamage()); AntarchySettings.setJumpyBugCamouflageAlpha(AntarchyMobsConfig.jumpyBugCamouflageAlpha()); + AntarchySettings.setEmperorScorpionDamageRange(AntarchyMobsConfig.emperorScorpionDamageRange()); + AntarchySettings.setEmperorScorpionMinDespawnTicks(AntarchyMobsConfig.emperorScorpionMinDespawnTicks()); + AntarchySettings.setKrakenHealth(AntarchyMobsConfig.krakenHealth()); AntarchySettings.setKrakenAttackDamage(AntarchyMobsConfig.krakenAttackDamage()); AntarchySettings.setKrakenProjectileDamageTakenMultiplier(AntarchyMobsConfig.krakenProjectileDamageTakenMultiplier()); AntarchySettings.setKrakenSquidSpawnEnabled(AntarchyMobsConfig.krakenSquidSpawnEnabled()); AntarchySettings.setKrakenMassSpawnEnabled(AntarchyMobsConfig.krakenMassSpawnEnabled()); AntarchySettings.setKrakenRequireBadOmenToSummon(AntarchyMobsConfig.krakenRequireBadOmenToSummon()); + AntarchySettings.setKrakenFollowRange(AntarchyMobsConfig.krakenFollowRange()); + AntarchySettings.setKrakenDamageRange(AntarchyMobsConfig.krakenDamageRange()); AntarchySettings.setBrutalflyHealth(AntarchyMobsConfig.brutalflyHealth()); AntarchySettings.setBrutalflySwipeDamage(AntarchyMobsConfig.brutalflySwipeDamage()); AntarchySettings.setBrutalflySpitDamage(AntarchyMobsConfig.brutalflySpitDamage()); + AntarchySettings.setBrutalflyDamageRange(AntarchyMobsConfig.brutalflyDamageRange()); AntarchySettings.setMantisHealth(AntarchyMobsConfig.mantisHealth()); AntarchySettings.setMantisAttackDamage(AntarchyMobsConfig.mantisAttackDamage()); @@ -124,6 +130,7 @@ public final class AntarchyConfigModuleNeoforge { AntarchySettings.setAlphaMantisFlyingSpeed(AntarchyMobsConfig.alphaMantisFlyingSpeed()); AntarchySettings.setAlphaMantisSummonIntervalTicks(AntarchyMobsConfig.alphaMantisSummonIntervalTicks()); AntarchySettings.setAlphaMantisMaxMinions(AntarchyMobsConfig.alphaMantisMaxMinions()); + AntarchySettings.setAlphaMantisDamageRange(AntarchyMobsConfig.alphaMantisDamageRange()); AntarchySettings.setRollyPollyHealth(AntarchyMobsConfig.rollyPollyHealth()); AntarchySettings.setRollyPollyMovementSpeed(AntarchyMobsConfig.rollyPollyMovementSpeed()); @@ -190,6 +197,7 @@ public final class AntarchyConfigModuleNeoforge { AntarchySettings.setDreadHallucinationMobMaxInterval(AntarchyMobsConfig.dreadHallucinationMobMaxInterval()); AntarchySettings.setToreterrorHealth(AntarchyMobsConfig.toreterrorHealth()); + AntarchySettings.setToreterrorDamageRange(AntarchyMobsConfig.toreterrorDamageRange()); AntarchySettings.setToreterrorJumpAttackDamage(AntarchyMobsConfig.toreterrorJumpAttackDamage()); AntarchySettings.setToreterrorJumpAttackKnockback(AntarchyMobsConfig.toreterrorJumpAttackKnockback()); AntarchySettings.setToreterrorSpinDamage(AntarchyMobsConfig.toreterrorSpinDamage()); @@ -220,6 +228,7 @@ public final class AntarchyConfigModuleNeoforge { AntarchySettings.setHerculesBeetleHealth(AntarchyMobsConfig.herculesBeetleHealth()); AntarchySettings.setHerculesBeetleAttackDamage(AntarchyMobsConfig.herculesBeetleAttackDamage()); AntarchySettings.setHerculesBeetleChargeDamage(AntarchyMobsConfig.herculesBeetleChargeDamage()); + AntarchySettings.setHerculesBeetleDamageRange(AntarchyMobsConfig.herculesBeetleDamageRange()); AntarchySettings.setOuranwoodDeerHealth(AntarchyMobsConfig.ouranwoodDeerHealth()); AntarchySettings.setGlimmerHealth(AntarchyMobsConfig.glimmerHealth()); } @@ -282,6 +291,8 @@ public final class AntarchyConfigModuleNeoforge { AntarchySettings.setBigBerthaBasiliskCooldownSeconds(AntarchyToolsConfig.bigBerthaBasiliskCooldownSeconds()); AntarchySettings.setBigBerthaLucidInvertedDurationSeconds(AntarchyToolsConfig.bigBerthaLucidInvertedDurationSeconds()); AntarchySettings.setBigBerthaLucidInvertedDamageBonusPercent(AntarchyToolsConfig.bigBerthaLucidInvertedDamageBonusPercent()); + AntarchySettings.setBigBerthaNoneModeDamageBonusPercent(AntarchyToolsConfig.bigBerthaNoneModeDamageBonusPercent()); + AntarchySettings.setBigBerthaNightmareDamageBonusPercent(AntarchyToolsConfig.bigBerthaNightmareDamageBonusPercent()); AntarchySettings.setKrakensGraspAttackDamage(AntarchyToolsConfig.krakensGraspAttackDamage()); AntarchySettings.setKrakensGraspAttackSpeed(AntarchyToolsConfig.krakensGraspAttackSpeed()); AntarchySettings.setKrakensGraspThrownDamage(AntarchyToolsConfig.krakensGraspThrownDamage()); @@ -289,9 +300,9 @@ public final class AntarchyConfigModuleNeoforge { AntarchySettings.setKrakensGraspInnateLoyalty(AntarchyToolsConfig.krakensGraspInnateLoyalty()); AntarchySettings.setKrakensGraspInnateLoyaltyLevel(AntarchyToolsConfig.krakensGraspInnateLoyaltyLevel()); AntarchySettings.setKrakensGraspTentacleDurationTicks(AntarchyToolsConfig.krakensGraspTentacleDurationTicks()); - AntarchySettings.setKrakensGraspTentacleDamage(AntarchyToolsConfig.krakensGraspTentacleDamage()); AntarchySettings.setKrakensGraspTentacleRadius(AntarchyToolsConfig.krakensGraspTentacleRadius()); - AntarchySettings.setKrakensGraspTentacleDamageIntervalTicks(AntarchyToolsConfig.krakensGraspTentacleDamageIntervalTicks()); + AntarchySettings.setKrakensGraspTentacleSlownessAmplifier(AntarchyToolsConfig.krakensGraspTentacleSlownessAmplifier()); + AntarchySettings.setKrakensGraspTentacleSlownessRefreshTicks(AntarchyToolsConfig.krakensGraspTentacleSlownessRefreshTicks()); AntarchySettings.setScorpionWhipBaseDamage(AntarchyToolsConfig.scorpionWhipBaseDamage()); AntarchySettings.setScorpionWhipReachBonus(AntarchyToolsConfig.scorpionWhipReachBonus()); AntarchySettings.setScorpionWhipPoisonDurationTicks(AntarchyToolsConfig.scorpionWhipPoisonDurationTicks()); diff --git a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyMobsConfig.java b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyMobsConfig.java index 2858e34e..9f92e0da 100644 --- a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyMobsConfig.java +++ b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyMobsConfig.java @@ -69,6 +69,12 @@ public final class AntarchyMobsConfig { 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 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_MASS_SPAWN_ENABLED; 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 @@ -84,6 +92,7 @@ public final class AntarchyMobsConfig { private static final ModConfigSpec.DoubleValue BRUTALFLY_HEALTH; private static final ModConfigSpec.DoubleValue BRUTALFLY_SWIPE_DAMAGE; private static final ModConfigSpec.DoubleValue BRUTALFLY_SPIT_DAMAGE; + private static final ModConfigSpec.DoubleValue BRUTALFLY_DAMAGE_RANGE; // Mantis @@ -103,6 +112,7 @@ public final class AntarchyMobsConfig { 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_MAX_MINIONS; + private static final ModConfigSpec.DoubleValue ALPHA_MANTIS_DAMAGE_RANGE; // Rolly Polly @@ -185,6 +195,7 @@ public final class AntarchyMobsConfig { // Toreterror 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_KNOCKBACK; 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_ATTACK_DAMAGE; private static final ModConfigSpec.DoubleValue HERCULES_BEETLE_CHARGE_DAMAGE; + private static final ModConfigSpec.DoubleValue HERCULES_BEETLE_DAMAGE_RANGE; // Lucid @@ -398,6 +410,18 @@ public final class AntarchyMobsConfig { 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 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_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_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(); @@ -416,6 +442,7 @@ public final class AntarchyMobsConfig { 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_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(); @@ -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_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_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(); @@ -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_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_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.push("toreterror"); 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_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); @@ -686,16 +716,22 @@ public final class AntarchyMobsConfig { static double jumpyBugLatchDamage() { return JUMPY_BUG_LATCH_DAMAGE.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 krakenAttackDamage() { return KRAKEN_ATTACK_DAMAGE.get(); } static double krakenProjectileDamageTakenMultiplier() { return KRAKEN_PROJECTILE_DAMAGE_TAKEN_MULTIPLIER.get(); } static boolean krakenSquidSpawnEnabled() { return KRAKEN_SQUID_SPAWN_ENABLED.get(); } static boolean krakenMassSpawnEnabled() { return KRAKEN_MASS_SPAWN_ENABLED.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 brutalflySwipeDamage() { return BRUTALFLY_SWIPE_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 mantisAttackDamage() { return MANTIS_ATTACK_DAMAGE.get(); } @@ -708,6 +744,7 @@ public final class AntarchyMobsConfig { static double alphaMantisFlyingSpeed() { return ALPHA_MANTIS_FLYING_SPEED.get(); } static int alphaMantisSummonIntervalTicks() { return ALPHA_MANTIS_SUMMON_INTERVAL_TICKS.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 rollyPollyMovementSpeed() { return ROLLY_POLLY_MOVEMENT_SPEED.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 toreterrorHealth() { return TORETERROR_HEALTH.get(); } + static double toreterrorDamageRange() { return TORETERROR_DAMAGE_RANGE.get(); } static double toreterrorJumpAttackDamage() { return TORETERROR_JUMP_ATTACK_DAMAGE.get(); } static double toreterrorJumpAttackKnockback() { return TORETERROR_JUMP_ATTACK_KNOCKBACK.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 herculesBeetleAttackDamage() { return HERCULES_BEETLE_ATTACK_DAMAGE.get(); } static double herculesBeetleChargeDamage() { return HERCULES_BEETLE_CHARGE_DAMAGE.get(); } + static double herculesBeetleDamageRange() { return HERCULES_BEETLE_DAMAGE_RANGE.get(); } } diff --git a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyNeoforge.java b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyNeoforge.java index 5aaaa82b..980bf73e 100644 --- a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyNeoforge.java +++ b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyNeoforge.java @@ -390,6 +390,8 @@ public class AntarchyNeoforge { AntarchyObjects.setLumenFroglight(() -> AntarchyNeoforgeBlocks.LUMEN_FROGLIGHT.get()); AntarchyObjects.setPeachLeavesParticle(() -> AntarchyNeoforgeMisc.PEACH_LEAVES_PARTICLE.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.setCritterCage(() -> AntarchyNeoforgeItems.CRITTER_CAGE.get()); AntarchyObjects.setCritterCageBlock(() -> AntarchyNeoforgeBlocks.CRITTER_CAGE_BLOCK.get()); diff --git a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyToolsConfig.java b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyToolsConfig.java index e6bf5650..3e82ab89 100644 --- a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyToolsConfig.java +++ b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyToolsConfig.java @@ -88,14 +88,16 @@ public final class AntarchyToolsConfig { 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_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.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_KRAKEN_SLOW_TICKS; 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_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_REACH_BONUS; 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_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_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.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_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_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 damage.") .defineInRange("tentacleRadius", 3.0D, 0.0D, 32.0D); - 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_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_SLOWNESS_AMPLIFIER = b.comment("Slowness amplifier applied to entities held by a tentacle (0 = Slowness I).").defineInRange("tentacleSlownessAmplifier", 8, 0, 255); + 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.push("scorpionWhip"); @@ -593,6 +597,8 @@ public final class AntarchyToolsConfig { static double bigBerthaBasiliskCooldownSeconds() { return BIG_BERTHA_BASILISK_COOLDOWN_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 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 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 int krakensGraspInnateLoyaltyLevel() { return KRAKENS_GRASP_INNATE_LOYALTY_LEVEL.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 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 scorpionWhipReachBonus() { return SCORPION_WHIP_REACH_BONUS.get(); } static int scorpionWhipPoisonDurationTicks() { return SCORPION_WHIP_POISON_DURATION_TICKS.get(); } diff --git a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/client/AntarchyNeoForgeClient.java b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/client/AntarchyNeoForgeClient.java index 6f5b95c6..ef166456 100644 --- a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/client/AntarchyNeoForgeClient.java +++ b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/client/AntarchyNeoForgeClient.java @@ -296,6 +296,8 @@ public final class AntarchyNeoForgeClient { event.registerSpecial(AntarchyNeoforgeMisc.INVERTED_GEYSER_ERUPTION.get(), new InvertedGeyserEruptionParticle.Provider()); event.registerSpriteSet(AntarchyNeoforgeMisc.FIREFLY.get(), FireflyParticle.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 diff --git a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeMisc.java b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeMisc.java index 3e399d2a..f8df592e 100644 --- a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeMisc.java +++ b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeMisc.java @@ -204,6 +204,10 @@ public final class AntarchyNeoforgeMisc { () -> new SimpleParticleType(true)); public static final DeferredHolder, SimpleParticleType> ORANGE_ASH = PARTICLE_TYPES.register("orange_ash", () -> new SimpleParticleType(true)); + public static final DeferredHolder, SimpleParticleType> LUCID_BOLT_IMPACT_SMALL = PARTICLE_TYPES.register("lucid_bolt_impact_small", + () -> new SimpleParticleType(true)); + public static final DeferredHolder, SimpleParticleType> LUCID_BOLT_IMPACT_LARGE = PARTICLE_TYPES.register("lucid_bolt_impact_large", + () -> new SimpleParticleType(true)); public static final DeferredHolder, ParticleType> INVERTED_GEYSER_BASE = PARTICLE_TYPES.register("inverted_geyser_base", () -> particleType(InvertedGeyserBaseParticleOptions::codec, InvertedGeyserBaseParticleOptions::streamCodec)); public static final DeferredHolder, ParticleType> INVERTED_GEYSER_PLUME = PARTICLE_TYPES.register("inverted_geyser_plume", diff --git a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeSounds.java b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeSounds.java index db1c939d..ffe73340 100644 --- a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeSounds.java +++ b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeSounds.java @@ -61,6 +61,10 @@ public final class AntarchyNeoforgeSounds { public static final DeferredHolder THORAXIS_LUCID_POOLS_ADDITIONS = registerSoundEvent("thoraxis_lucid_pools_additions"); public static final DeferredHolder THORAXIS_LUCID_POOLS_MOOD = registerSoundEvent("thoraxis_lucid_pools_mood"); public static final DeferredHolder LUCID_LULLABY = registerSoundEvent("lucid_lullaby"); + public static final DeferredHolder MUSIC_GAME_THORAXIS = registerSoundEvent("music.game.thoraxis"); + public static final DeferredHolder MUSIC_GAME_CAVARYN = registerSoundEvent("music.game.cavaryn"); + public static final DeferredHolder WISTFUL_WANDERINGS = registerSoundEvent("wistful_wanderings"); + public static final DeferredHolder MUSIC_GAME_ELYTHIA = registerSoundEvent("music.game.elythia"); public static final DeferredHolder LUCID_AMBIENT = registerSoundEvent("lucid_ambient"); public static final DeferredHolder LUCID_FLYING = registerSoundEvent("lucid_flying"); public static final DeferredHolder LUCID_ATTACK = registerSoundEvent("lucid_attack"); diff --git a/neoforge-1.21.1/src/main/resources/antarchy-neoforge.mixins.json b/neoforge-1.21.1/src/main/resources/antarchy-neoforge.mixins.json index 30c33c5c..0f558385 100644 --- a/neoforge-1.21.1/src/main/resources/antarchy-neoforge.mixins.json +++ b/neoforge-1.21.1/src/main/resources/antarchy-neoforge.mixins.json @@ -9,6 +9,7 @@ "entity.MultipartEntityBridgeMixin", "entity.MultipartEntityLevelRegistryMixin", "entity.ParalyzedMobFreezeMixin", + "infinity.AmendmentRareOresMixin", "infinity.ConfigGenInvocationMixin", "infinity.PortalCreatorMixin", "level.ClientLevelPartEntitiesAccessor",