fixed krakens graps missing tags

improved upward falling block entity
started bluestone
fixed herc beetle mounted behavior
This commit is contained in:
craisinlord committed 2026-07-23 02:10:50 -05:00
1 parent db93a3ced9
commit b37b49dff1
163 files changed
+2903 -2417

No files matched your search

@@ -1,6 +1,6 @@
package com.craisinlord.antarchy; package com.craisinlord.antarchy;
import com.craisinlord.antarchy.content.AttributeRangeInit; import com.craisinlord.antarchy.content.util.AttributeRangeInit;
import com.craisinlord.integrated_api.events.lifecycle.ServerGoingToStartEvent; import com.craisinlord.integrated_api.events.lifecycle.ServerGoingToStartEvent;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
@@ -16,4 +16,4 @@ public class Antarchy {
} }
private static void serverAboutToStart(final ServerGoingToStartEvent event) { private static void serverAboutToStart(final ServerGoingToStartEvent event) {
} }
} }
@@ -15,7 +15,6 @@ public final class AntarchySettings {
private static boolean termiteRequiresReagent = false; private static boolean termiteRequiresReagent = false;
private static boolean antsStealFromChests = true; private static boolean antsStealFromChests = true;
private static boolean duplicatorTreeEnabled = true; private static boolean duplicatorTreeEnabled = true;
private static boolean glowingTorchflowers = true;
private static boolean glowVinesUnderLeaves = true; private static boolean glowVinesUnderLeaves = true;
private static boolean swingThroughGrassEnabled = true; private static boolean swingThroughGrassEnabled = true;
private static boolean fabricKeybindingConflictFixEnabled = true; private static boolean fabricKeybindingConflictFixEnabled = true;
@@ -71,12 +70,12 @@ public final class AntarchySettings {
private static double scorpionWhipReachBonus = 5.0D; private static double scorpionWhipReachBonus = 5.0D;
private static int scorpionWhipPoisonDurationTicks = 100; private static int scorpionWhipPoisonDurationTicks = 100;
private static double scorpionWhipTetherMaxRange = 10.0D; private static double scorpionWhipTetherMaxRange = 10.0D;
private static int scorpionWhipReelCooldownTicks = 10;
private static double scorpionWhipSnapBonusDamage = 6.0D; private static double scorpionWhipSnapBonusDamage = 6.0D;
private static int scorpionWhipSnapCooldownTicks = 30;
private static double scorpionWhipPullStrength = 0.75D; private static double scorpionWhipPullStrength = 0.75D;
private static double scorpionWhipHeavyPullMultiplier = 0.25D; private static double scorpionWhipHeavyPullMultiplier = 0.25D;
private static double scorpionWhipSelfPullMultiplier = 0.45D; private static double scorpionWhipSelfPullMultiplier = 0.45D;
private static int scorpionWhipReelCooldownTicks = 10;
private static int scorpionWhipSnapCooldownTicks = 30;
private static int bloodCrystalKatanaAttackDamage = 7; private static int bloodCrystalKatanaAttackDamage = 7;
private static double bloodCrystalKatanaLaunchStrength = 1.1D; private static double bloodCrystalKatanaLaunchStrength = 1.1D;
private static int bloodCrystalKatanaTrailDurationTicks = 12; private static int bloodCrystalKatanaTrailDurationTicks = 12;
@@ -124,13 +123,12 @@ public final class AntarchySettings {
private static double rollyPollyHealth = 25.0D; private static double rollyPollyHealth = 25.0D;
private static double rollyPollyMovementSpeed = 0.3D; private static double rollyPollyMovementSpeed = 0.3D;
private static double rollyPollyRollSpeedMultiplier = 2.2D; private static double rollyPollyRollSpeedMultiplier = 2.2D;
private static double rollyPollyTumbleDamage = 1.0D;
private static int rollyPollyTameChance = 3; private static int rollyPollyTameChance = 3;
private static double rollyPollyBowlingDamage = 3.0D; private static double rollyPollyBowlingDamage = 3.0D;
private static double rollyPollyTumbleDamage = 3.0D;
private static double rollyPollyBowlingKnockback = 0.8D; private static double rollyPollyBowlingKnockback = 0.8D;
private static double rollyPollyArmor = 2.0D; private static double rollyPollyArmor = 2.0D;
private static double rollyPollyRolledArmorBonus = 16.0D; private static double rollyPollyRolledArmorBonus = 16.0D;
private static double krakenProjectileDamageTakenMultiplier = 0.5D;
private static boolean krakenSquidSpawnEnabled = true; private static boolean krakenSquidSpawnEnabled = true;
private static boolean krakenMassSpawnEnabled = true; private static boolean krakenMassSpawnEnabled = true;
private static boolean krakenRequireBadOmenToSummon = true; private static boolean krakenRequireBadOmenToSummon = true;
@@ -165,15 +163,12 @@ public final class AntarchySettings {
private static double americanBonusSaturation = 1.0D; private static double americanBonusSaturation = 1.0D;
private static int americanRegenerationDurationTicks = 60; private static int americanRegenerationDurationTicks = 60;
private static int americanRegenerationAmplifier = 0; private static int americanRegenerationAmplifier = 0;
private static int mogglesVisionRadius = 2;
private static int mogglesVisionMaxLight = 7;
private static float mogglesVisionAlpha = 0.35f;
private static boolean dreamSandEnabled = true; private static boolean dreamSandEnabled = true;
private static boolean entitySpecificFireOverlayEnabled = true; private static boolean entitySpecificFireOverlayEnabled = true;
private static double dreamSandJumpVelocityMultiplier = 1.3D; private static double dreamSandJumpVelocityMultiplier = 1.3D;
private static double dreamSandGravityMultiplier = 0.45D; private static double dreamSandGravityMultiplier = 0.45D;
private static double dreamSandFallDamageMultiplier = 0.35D;
private static double dreamSandEffectDurationSeconds = 7.0D; private static double dreamSandEffectDurationSeconds = 7.0D;
private static double dreamSandFallDamageMultiplier = 0.4D;
private static double dreamSandFallingBlockGravityMultiplier = 0.4D; private static double dreamSandFallingBlockGravityMultiplier = 0.4D;
private static boolean ichorWitherEnabled = true; private static boolean ichorWitherEnabled = true;
private static int nightmareHelmetArmorValue = 3; private static int nightmareHelmetArmorValue = 3;
@@ -185,7 +180,6 @@ public final class AntarchySettings {
private static double nightmareLeggingsArmorToughness = 3.0D; private static double nightmareLeggingsArmorToughness = 3.0D;
private static double nightmareBootsArmorToughness = 3.0D; private static double nightmareBootsArmorToughness = 3.0D;
private static double nightmareArmorDreadAuraRangePerPiece = 1.25D;
private static double nightmareHelmetDoubleDamageChance = 0.04D; private static double nightmareHelmetDoubleDamageChance = 0.04D;
private static double nightmareChestplateDoubleDamageChance = 0.06D; private static double nightmareChestplateDoubleDamageChance = 0.06D;
private static double nightmareLeggingsDoubleDamageChance = 0.05D; private static double nightmareLeggingsDoubleDamageChance = 0.05D;
@@ -239,32 +233,27 @@ public final class AntarchySettings {
private static double termiteAttackDamage = 1.0D; private static double termiteAttackDamage = 1.0D;
private static double flyingSquirrelHealth = 10.0D; private static double flyingSquirrelHealth = 10.0D;
private static double flyingSquirrelMovementSpeed = 0.35D; private static double flyingSquirrelMovementSpeed = 0.35D;
private static double flyingSquirrelFollowRange = 16.0D;
private static double caterpillarHealth = 6.0D; private static double caterpillarHealth = 6.0D;
private static double caterpillarMovementSpeed = 0.24D; private static double caterpillarMovementSpeed = 0.24D;
private static double caterpillarFollowRange = 14.0D;
private static double caterpillarPupationTimeSeconds = 600.0D; private static double caterpillarPupationTimeSeconds = 600.0D;
private static double butterflyHealth = 6.0D; private static double butterflyHealth = 6.0D;
private static double butterflyMovementSpeed = 0.3D; private static double butterflyMovementSpeed = 0.3D;
private static double butterflyFlyingSpeed = 0.55D; private static double butterflyFlyingSpeed = 0.55D;
private static double butterflyFollowRange = 32.0D;
private static double reverieHealth = 20.0D; private static double reverieHealth = 20.0D;
private static double reverieInterestRadius = 16.0D; private static double reverieInterestRadius = 16.0D;
private static double reverieAbandonPlayerDistance = 24.0D; private static double reverieAbandonPlayerDistance = 24.0D;
private static int reverieNoticeDurationTicks = 20; private static int reverieNoticeDurationTicks = 20;
private static int reverieInterestDurationTicks = 360; private static int reverieInterestDurationTicks = 360;
private static int reverieRebindCooldownTicks = 100; private static int reverieRebindCooldownTicks = 100;
private static int reverieDamageReactionDurationTicks = 40; private static int reverieDamageReactionDurationTicks = 60;
private static double reverieDangerousFallDistance = 4.0D; private static double reverieDangerousFallDistance = 4.0D;
private static double reverieDangerousFallSpeed = 0.18D; private static double reverieDangerousFallSpeed = 0.18D;
private static double reverieWarningThreatRadius = 10.0D; private static double reverieWarningThreatRadius = 10.0D;
private static double reverieWarningThreatVerticalRange = 5.0D; private static double reverieWarningThreatVerticalRange = 5.0D;
private static int reverieDuplicationCooldownTicks = 6000; private static int reverieDuplicationCooldownTicks = 6000;
private static final boolean reverieOnlyPlayerDamage = true;
private static final double reveriePreferredFollowMinDistance = 2.5D; private static final double reveriePreferredFollowMinDistance = 2.5D;
private static final double reveriePreferredFollowMaxDistance = 2.5D; private static final double reveriePreferredFollowMaxDistance = 2.5D;
private static final double reverieCatchUpDistance = 12.0D; private static final double reverieCatchUpDistance = 12.0D;
private static final double reveriePurpleProtectRadius = 2.7D;
private static final int reverieWarningApproachTicks = 8; private static final int reverieWarningApproachTicks = 8;
private static final int reverieWarningHoverTicks = 6; private static final int reverieWarningHoverTicks = 6;
private static final int reverieWarningReturnTicks = 8; private static final int reverieWarningReturnTicks = 8;
@@ -299,126 +288,44 @@ public final class AntarchySettings {
private static double scorpionMovementSpeed = 0.29D; private static double scorpionMovementSpeed = 0.29D;
private static double scorpionArmor = 2.0D; private static double scorpionArmor = 2.0D;
private static double scorpionKnockbackResistance = 0.2D; private static double scorpionKnockbackResistance = 0.2D;
private static double scorpionFollowRange = 24.0D;
private static int scorpionXpReward = 5;
private static int scorpionAttackAnimTicks = 12;
private static int scorpionAttackHitTick = 6;
private static int scorpionAttackCooldownTicks = 16;
private static int scorpionPoisonTicks = 80;
private static double bedBugHealth = 18.0D; private static double bedBugHealth = 18.0D;
private static double bedBugAttackDamage = 4.0D; private static double bedBugAttackDamage = 4.0D;
private static double bedBugMovementSpeed = 0.24D; private static double bedBugMovementSpeed = 0.24D;
private static double bedBugArmor = 2.0D; private static double bedBugArmor = 2.0D;
private static double bedBugFollowRange = 20.0D;
private static int bedBugXpReward = 4;
private static int bedBugBiteAnimTicks = 10;
private static int bedBugAttackHitTick = 5;
private static int bedBugAttackCooldownTicks = 12;
private static int bedBugMinLayEggDelay = 80;
private static int bedBugMaxLayEggDelay = 160;
private static double bedBugFoodSearchRadius = 10.0D;
private static double bedBugEggGuardRadius = 7.0D;
private static double bedBugAttackStartReachBuffer = 1.15D;
private static double bedBugAttackReachBuffer = 0.3D;
private static double bedBugAttackLungeHorizontalSpeed = 0.42D;
private static double bedBugAttackLungeVerticalSpeed = 0.1D;
private static float bedBugHealAmount = 2.0F;
private static double jumpyBugHealth = 100.0D; private static double jumpyBugHealth = 100.0D;
private static double jumpyBugPounceDamage = 12.0D; private static double jumpyBugPounceDamage = 12.0D;
private static double jumpyBugLatchDamage = 1.0D; private static double jumpyBugLatchDamage = 12.0D;
private static double jumpyBugCamouflageAlpha = 0.18D; private static double jumpyBugCamouflageAlpha = 0.18D;
private static double brutalflyArmor = 10.0D; private static double brutalflyArmor = 10.0D;
private static double brutalflyArmorToughness = 4.0D; private static double brutalflyArmorToughness = 4.0D;
private static double brutalflyKnockbackResistance = 0.7D; private static double brutalflyKnockbackResistance = 0.7D;
private static double brutalflyMovementSpeed = 0.34D; private static double brutalflyMovementSpeed = 0.34D;
private static double brutalflyFlyingSpeed = 0.55D; private static double brutalflyFlyingSpeed = 0.55D;
private static double brutalflyFollowRange = 48.0D;
private static int brutalflyXpReward = 80;
private static int brutalflyDeathSpawnCountMin = 5;
private static int brutalflyDeathSpawnCountMax = 10;
private static int brutalflySpitWindupTicks = 16;
private static int brutalflySwipeTicks = 18;
private static float brutalflySwipeKnockback = 2.8F;
private static int brutalflyPhaseOneSpitCooldownMin = 70;
private static int brutalflyPhaseOneSpitCooldownMax = 95;
private static int brutalflyPhaseTwoSpitCooldownMin = 42;
private static int brutalflyPhaseTwoSpitCooldownMax = 60;
private static int brutalflyPhaseThreeSpitCooldownMin = 26;
private static int brutalflyPhaseThreeSpitCooldownMax = 40;
private static int brutalflyPhaseOneMeleeCooldownMin = 42;
private static int brutalflyPhaseOneMeleeCooldownMax = 51;
private static int brutalflyPhaseTwoMeleeCooldownMin = 30;
private static int brutalflyPhaseTwoMeleeCooldownMax = 37;
private static int brutalflyPhaseThreeMeleeCooldownMin = 20;
private static int brutalflyPhaseThreeMeleeCooldownMax = 26;
private static double cloudSharkHealth = 40.0D; private static double cloudSharkHealth = 40.0D;
private static double cloudSharkAttackDamage = 5.0D; private static double cloudSharkAttackDamage = 5.0D;
private static double cloudSharkMovementSpeed = 0.34D; private static double cloudSharkMovementSpeed = 0.34D;
private static double cloudSharkFlyingSpeed = 0.5D; private static double cloudSharkFlyingSpeed = 0.5D;
private static double cloudSharkFollowRange = 40.0D;
private static double cloudSharkKnockbackResistance = 0.2D; private static double cloudSharkKnockbackResistance = 0.2D;
private static int cloudSharkXpReward = 8;
private static double krakenMovementSpeed = 0.24D; private static double krakenMovementSpeed = 0.24D;
private static double krakenFlyingSpeed = 0.24D; private static double krakenFlyingSpeed = 0.24D;
private static double krakenFollowRange = 64.0D;
private static double krakenKnockbackResistance = 0.8D; private static double krakenKnockbackResistance = 0.8D;
private static double krakenArmor = 8.0D; private static double krakenArmor = 8.0D;
private static int krakenXpReward = 60; private static double krakenProjectileDamageTakenMultiplier = 0.5D;
private static double krakenPhaseTwoSpeedBonus = 0.15D;
private static double krakenPhaseTwoFlyingSpeedBonus = 0.15D;
private static double krakenPhaseTwoDamageBonus = 4.0D;
private static double krakenBossBarRange = 40.0D; private static double krakenBossBarRange = 40.0D;
private static float krakenLightningDamagePhaseOne = 8.0F; private static float krakenLightningDamagePhaseOne = 8.0F;
private static float krakenLightningDamagePhaseTwo = 12.0F;
private static int krakenLightningAmbientCooldownPhaseOneMin = 80;
private static int krakenLightningAmbientCooldownPhaseOneMax = 160;
private static int krakenLightningAmbientCooldownPhaseTwoMin = 35;
private static int krakenLightningAmbientCooldownPhaseTwoMax = 70;
private static int krakenLightningStrikeCooldownPhaseOneMin = 60;
private static int krakenLightningStrikeCooldownPhaseOneMax = 140;
private static int krakenLightningStrikeCooldownPhaseTwoMin = 26;
private static int krakenLightningStrikeCooldownPhaseTwoMax = 46;
private static int krakenPhaseSummonCooldownPhaseOneMin = 90;
private static int krakenPhaseSummonCooldownPhaseOneMax = 140;
private static int krakenPhaseSummonCooldownPhaseTwoMin = 90;
private static int krakenPhaseSummonCooldownPhaseTwoMax = 140;
private static int krakenPhaseSummonedMinionsMin = 1;
private static int krakenPhaseSummonedMinionsMax = 2;
private static int krakenPhaseTwoMinionsNearbyCap = 12;
private static int krakenPhaseTwoMinionSpawnAttempts = 18;
private static double lucidHealth = 30.0D; private static double lucidHealth = 30.0D;
private static double lucidAttackDamage = 4.0D; private static double lucidAttackDamage = 4.0D;
private static double lucidMovementSpeed = 0.22D; private static double lucidMovementSpeed = 0.22D;
private static double lucidFlyingSpeed = 0.35D; private static double lucidFlyingSpeed = 0.35D;
private static double lucidFollowRange = 40.0D;
private static double lucidKnockbackResistance = 0.5D; private static double lucidKnockbackResistance = 0.5D;
private static int lucidXpReward = 10;
private static int lucidAttackWindupTicks = 16;
private static int lucidAttackRecoveryTicks = 8;
private static int lucidBurstShots = 3;
private static int lucidBurstIntervalTicks = 6;
private static int lucidAttackCooldownTicks = 52;
private static double lucidMinEffectiveAttackRange = 10.0D;
private static double lucidMinHoverRange = 6.5D;
private static double lucidCloseRange = 4.5D;
private static double lucidDefaultHoverHeight = 2.75D;
private static double lucidHitboxWidthScale = 1.3D;
private static double lucidHitboxHeightScale = 1.48D;
private static double lucidHitboxYOffset = 1.08D;
private static double missileSquidHealth = 50.0D; private static double missileSquidHealth = 50.0D;
private static double missileSquidAttackDamage = 6.0D; private static double missileSquidAttackDamage = 6.0D;
private static double missileSquidMovementSpeed = 0.84D; private static double missileSquidMovementSpeed = 0.84D;
private static double missileSquidFlyingSpeed = 0.84D; private static double missileSquidFlyingSpeed = 0.84D;
private static double missileSquidFollowRange = 20.0D;
private static double missileSquidKnockbackResistance = 0.15D; private static double missileSquidKnockbackResistance = 0.15D;
private static int missileSquidXpReward = 6;
private static int missileSquidLatchDamageInterval = 15;
private static float missileSquidLatchDamage = 2.0F;
private static double missileSquidAttachRangeSqr = 2.25D;
private static double molewormHealth = 8.0D; private static double molewormHealth = 8.0D;
private static double molewormAttackDamage = 1.0D; private static double molewormAttackDamage = 1.0D;
private static double molewormMovementSpeed = 0.25D; private static double molewormMovementSpeed = 0.25D;
private static int molewormXpReward = 0;
private static double triffidHealth = 80.0D; private static double triffidHealth = 80.0D;
private static double triffidAttackDamage = 10.0D; private static double triffidAttackDamage = 10.0D;
private static double triffidGrabDamage = 15.0D; private static double triffidGrabDamage = 15.0D;
@@ -452,19 +359,6 @@ public final class AntarchySettings {
private static int nightmareBedBugEggSearchInterval = 30; private static int nightmareBedBugEggSearchInterval = 30;
private static int nightmareDreadTicks = 160; private static int nightmareDreadTicks = 160;
private static int nightmareWeaknessTicks = 100; private static int nightmareWeaknessTicks = 100;
private static double nightmarePatrolSpeed = 0.34D;
private static double nightmareCombatFlightSpeed = 0.58D;
private static double nightmareGroundApproachSpeed = 0.82D;
private static double nightmareAttackStartRangeSqr = 42.25D;
private static double nightmareGroundApproachRangeSqr = 16.0D * 16.0D;
private static double nightmareAttackReachRadius = 2.65D;
private static double nightmareAttackCommitHorizontalRange = 4.2D;
private static double nightmareAttackCommitVerticalRange = 2.8D;
private static double nightmareFlightReengageRangeSqr = 10.0D * 10.0D;
private static double nightmareCloseApproachRangeSqr = 6.0D * 6.0D;
private static double nightmareRoarRetryDistanceSqr = 20.0D * 20.0D;
private static double nightmareBedBugEggBreakRangeSqr = 2.8D * 2.8D;
private static float nightmareAirPatrolChance = 0.2F;
private static double battleAxeAttackSpeed = -3.1D; private static double battleAxeAttackSpeed = -3.1D;
private static double basiliskDaggerAttackDamage = 6.0D; private static double basiliskDaggerAttackDamage = 6.0D;
private static double basiliskDaggerAttackSpeed = -1.8D; private static double basiliskDaggerAttackSpeed = -1.8D;
@@ -482,7 +376,11 @@ public final class AntarchySettings {
private static double ductTapeRepairPercentPerUse = 0.25D; private static double ductTapeRepairPercentPerUse = 0.25D;
private static double ultimateArmorKnockbackResistance = 0.1D; private static double ultimateArmorKnockbackResistance = 0.1D;
private static double nightmareArmorKnockbackResistance = 0.1D; private static double nightmareArmorKnockbackResistance = 0.1D;
private static double nightmareArmorDreadAuraRangePerPiece = 2.0D;
private static double primordialArmorKnockbackPerPiece = 0.5D; private static double primordialArmorKnockbackPerPiece = 0.5D;
private static double mogglesVisionRadius = 20.0D;
private static int mogglesVisionMaxLight = 7;
private static double mogglesVisionAlpha = 0.65D;
private static int fallenKingCrownArmorValue = 2; private static int fallenKingCrownArmorValue = 2;
private static double fallenKingCrownArmorToughness = 0.0D; private static double fallenKingCrownArmorToughness = 0.0D;
private static boolean permanentPortalsEnabled = true; private static boolean permanentPortalsEnabled = true;
@@ -491,6 +389,7 @@ public final class AntarchySettings {
private static boolean thoraxisPortalEnabled = true; private static boolean thoraxisPortalEnabled = true;
private static boolean cavarynPortalEnabled = true; private static boolean cavarynPortalEnabled = true;
private static boolean elythiaFireflyParticlesEnabled = true; private static boolean elythiaFireflyParticlesEnabled = true;
private static boolean glowingTorchflowers = true;
private static int bloodCrystalArmorShieldRechargeTicks = 600; private static int bloodCrystalArmorShieldRechargeTicks = 600;
private static int bloodCrystalAppleShieldCount = 2; private static int bloodCrystalAppleShieldCount = 2;
private static int bloodCrystalAppleDurationTicks = 2400; private static int bloodCrystalAppleDurationTicks = 2400;
@@ -511,7 +410,7 @@ public final class AntarchySettings {
private static double toreterrorJumpAttackKnockback = 2.5D; private static double toreterrorJumpAttackKnockback = 2.5D;
private static double toreterrorSpinDamage = 6.0D; private static double toreterrorSpinDamage = 6.0D;
private static double toreterrorSpinKnockback = 0.9D; private static double toreterrorSpinKnockback = 0.9D;
private static double toreterrorRangedWaterBombChance = 0.5D; private static double toreterrorRangedWaterBombChance = 0.35D;
private static double toreterrorProjectileDamageMultiplier = 0.5D; private static double toreterrorProjectileDamageMultiplier = 0.5D;
private static double waterBombDamage = 6.0D; private static double waterBombDamage = 6.0D;
private static int waterBombLifetimeTicks = 120; private static int waterBombLifetimeTicks = 120;
@@ -586,14 +485,14 @@ public final class AntarchySettings {
return duplicatorTreeEnabled; return duplicatorTreeEnabled;
} }
public static boolean glowingTorchflowers() {
return glowingTorchflowers;
}
public static boolean glowVinesUnderLeaves() { public static boolean glowVinesUnderLeaves() {
return glowVinesUnderLeaves; return glowVinesUnderLeaves;
} }
public static boolean glowingTorchflowers() {
return glowingTorchflowers;
}
public static boolean swingThroughGrassEnabled() { public static boolean swingThroughGrassEnabled() {
return swingThroughGrassEnabled; return swingThroughGrassEnabled;
} }
@@ -829,7 +728,6 @@ public final class AntarchySettings {
public static double krakensGraspAttackDamage() { return krakensGraspAttackDamage; } public static double krakensGraspAttackDamage() { return krakensGraspAttackDamage; }
public static double krakensGraspAttackSpeed() { return krakensGraspAttackSpeed; } public static double krakensGraspAttackSpeed() { return krakensGraspAttackSpeed; }
public static double krakensGraspThrownDamage() { return krakensGraspThrownDamage; } public static double krakensGraspThrownDamage() { return krakensGraspThrownDamage; }
public static double krakensGraspLightningDamage() { return krakensGraspLightningDamage; }
public static boolean krakensGraspInnateLoyalty() { return krakensGraspInnateLoyalty; } public static boolean krakensGraspInnateLoyalty() { return krakensGraspInnateLoyalty; }
public static int krakensGraspInnateLoyaltyLevel() { return krakensGraspInnateLoyaltyLevel; } public static int krakensGraspInnateLoyaltyLevel() { return krakensGraspInnateLoyaltyLevel; }
public static int krakensGraspTentacleDurationTicks() { return krakensGraspTentacleDurationTicks; } public static int krakensGraspTentacleDurationTicks() { return krakensGraspTentacleDurationTicks; }
@@ -921,10 +819,6 @@ public final class AntarchySettings {
return rollyPollyRollSpeedMultiplier; return rollyPollyRollSpeedMultiplier;
} }
public static double rollyPollyTumbleDamage() {
return rollyPollyTumbleDamage;
}
public static int rollyPollyTameChance() { public static int rollyPollyTameChance() {
return rollyPollyTameChance; return rollyPollyTameChance;
} }
@@ -933,6 +827,10 @@ public final class AntarchySettings {
return rollyPollyBowlingDamage; return rollyPollyBowlingDamage;
} }
public static double rollyPollyTumbleDamage() {
return rollyPollyTumbleDamage;
}
public static double rollyPollyBowlingKnockback() { public static double rollyPollyBowlingKnockback() {
return rollyPollyBowlingKnockback; return rollyPollyBowlingKnockback;
} }
@@ -977,10 +875,6 @@ public final class AntarchySettings {
return bomberExplosionRadius; return bomberExplosionRadius;
} }
public static double krakenProjectileDamageTakenMultiplier() {
return krakenProjectileDamageTakenMultiplier;
}
public static boolean krakenSquidSpawnEnabled() { public static boolean krakenSquidSpawnEnabled() {
return krakenSquidSpawnEnabled; return krakenSquidSpawnEnabled;
} }
@@ -1140,14 +1034,14 @@ public final class AntarchySettings {
duplicatorTreeEnabled = value; duplicatorTreeEnabled = value;
} }
public static void setGlowingTorchflowers(boolean value) {
glowingTorchflowers = value;
}
public static void setGlowVinesUnderLeaves(boolean value) { public static void setGlowVinesUnderLeaves(boolean value) {
glowVinesUnderLeaves = value; glowVinesUnderLeaves = value;
} }
public static void setGlowingTorchflowers(boolean value) {
glowingTorchflowers = value;
}
public static void setSwingThroughGrassEnabled(boolean value) { public static void setSwingThroughGrassEnabled(boolean value) {
swingThroughGrassEnabled = value; swingThroughGrassEnabled = value;
} }
@@ -1479,10 +1373,6 @@ public final class AntarchySettings {
rollyPollyRollSpeedMultiplier = value; rollyPollyRollSpeedMultiplier = value;
} }
public static void setRollyPollyTumbleDamage(double value) {
rollyPollyTumbleDamage = value;
}
public static void setRollyPollyTameChance(int value) { public static void setRollyPollyTameChance(int value) {
rollyPollyTameChance = value; rollyPollyTameChance = value;
} }
@@ -1491,6 +1381,10 @@ public final class AntarchySettings {
rollyPollyBowlingDamage = value; rollyPollyBowlingDamage = value;
} }
public static void setRollyPollyTumbleDamage(double value) {
rollyPollyTumbleDamage = value;
}
public static void setRollyPollyBowlingKnockback(double value) { public static void setRollyPollyBowlingKnockback(double value) {
rollyPollyBowlingKnockback = value; rollyPollyBowlingKnockback = value;
} }
@@ -1503,10 +1397,6 @@ public final class AntarchySettings {
rollyPollyRolledArmorBonus = value; rollyPollyRolledArmorBonus = value;
} }
public static void setKrakenProjectileDamageTakenMultiplier(double value) {
krakenProjectileDamageTakenMultiplier = value;
}
public static void setKrakenSquidSpawnEnabled(boolean value) { public static void setKrakenSquidSpawnEnabled(boolean value) {
krakenSquidSpawnEnabled = value; krakenSquidSpawnEnabled = value;
} }
@@ -1664,30 +1554,6 @@ public final class AntarchySettings {
americanRegenerationAmplifier = value; americanRegenerationAmplifier = value;
} }
public static int mogglesVisionRadius() {
return mogglesVisionRadius;
}
public static void setMogglesVisionRadius(int value) {
mogglesVisionRadius = value;
}
public static int mogglesVisionMaxLight() {
return mogglesVisionMaxLight;
}
public static void setMogglesVisionMaxLight(int value) {
mogglesVisionMaxLight = value;
}
public static float mogglesVisionAlpha() {
return mogglesVisionAlpha;
}
public static void setMogglesVisionAlpha(float value) {
mogglesVisionAlpha = value;
}
public static boolean dreamSandEnabled() { public static boolean dreamSandEnabled() {
return dreamSandEnabled; return dreamSandEnabled;
} }
@@ -1720,14 +1586,6 @@ public final class AntarchySettings {
dreamSandGravityMultiplier = value; dreamSandGravityMultiplier = value;
} }
public static double dreamSandFallDamageMultiplier() {
return dreamSandFallDamageMultiplier;
}
public static void setDreamSandFallDamageMultiplier(double value) {
dreamSandFallDamageMultiplier = value;
}
public static double dreamSandEffectDurationSeconds() { public static double dreamSandEffectDurationSeconds() {
return dreamSandEffectDurationSeconds; return dreamSandEffectDurationSeconds;
} }
@@ -1736,6 +1594,14 @@ public final class AntarchySettings {
dreamSandEffectDurationSeconds = value; dreamSandEffectDurationSeconds = value;
} }
public static double dreamSandFallDamageMultiplier() {
return dreamSandFallDamageMultiplier;
}
public static void setDreamSandFallDamageMultiplier(double value) {
dreamSandFallDamageMultiplier = value;
}
public static double dreamSandFallingBlockGravityMultiplier() { public static double dreamSandFallingBlockGravityMultiplier() {
return dreamSandFallingBlockGravityMultiplier; return dreamSandFallingBlockGravityMultiplier;
} }
@@ -1776,8 +1642,14 @@ public final class AntarchySettings {
public static double nightmareBootsArmorToughness() { return nightmareBootsArmorToughness; } public static double nightmareBootsArmorToughness() { return nightmareBootsArmorToughness; }
public static void setNightmareBootsArmorToughness(double v) { nightmareBootsArmorToughness = v; } public static void setNightmareBootsArmorToughness(double v) { nightmareBootsArmorToughness = v; }
public static double nightmareArmorDreadAuraRangePerPiece() { return nightmareArmorDreadAuraRangePerPiece; }
public static void setNightmareArmorDreadAuraRangePerPiece(double v) { nightmareArmorDreadAuraRangePerPiece = v; } public static void setNightmareArmorDreadAuraRangePerPiece(double v) { nightmareArmorDreadAuraRangePerPiece = v; }
public static double nightmareArmorDreadAuraRangePerPiece() { return nightmareArmorDreadAuraRangePerPiece; }
public static void setMogglesVisionRadius(double v) { mogglesVisionRadius = v; }
public static double mogglesVisionRadius() { return mogglesVisionRadius; }
public static void setMogglesVisionMaxLight(int v) { mogglesVisionMaxLight = v; }
public static int mogglesVisionMaxLight() { return mogglesVisionMaxLight; }
public static void setMogglesVisionAlpha(double v) { mogglesVisionAlpha = v; }
public static double mogglesVisionAlpha() { return mogglesVisionAlpha; }
public static double nightmareHelmetDoubleDamageChance() { return nightmareHelmetDoubleDamageChance; } public static double nightmareHelmetDoubleDamageChance() { return nightmareHelmetDoubleDamageChance; }
public static void setNightmareHelmetDoubleDamageChance(double v) { nightmareHelmetDoubleDamageChance = v; } public static void setNightmareHelmetDoubleDamageChance(double v) { nightmareHelmetDoubleDamageChance = v; }
@@ -1972,18 +1844,12 @@ public final class AntarchySettings {
public static double flyingSquirrelMovementSpeed() { return flyingSquirrelMovementSpeed; } public static double flyingSquirrelMovementSpeed() { return flyingSquirrelMovementSpeed; }
public static void setFlyingSquirrelMovementSpeed(double value) { flyingSquirrelMovementSpeed = value; } public static void setFlyingSquirrelMovementSpeed(double value) { flyingSquirrelMovementSpeed = value; }
public static double flyingSquirrelFollowRange() { return flyingSquirrelFollowRange; }
public static void setFlyingSquirrelFollowRange(double value) { flyingSquirrelFollowRange = value; }
public static double caterpillarHealth() { return caterpillarHealth; } public static double caterpillarHealth() { return caterpillarHealth; }
public static void setCaterpillarHealth(double value) { caterpillarHealth = value; } public static void setCaterpillarHealth(double value) { caterpillarHealth = value; }
public static double caterpillarMovementSpeed() { return caterpillarMovementSpeed; } public static double caterpillarMovementSpeed() { return caterpillarMovementSpeed; }
public static void setCaterpillarMovementSpeed(double value) { caterpillarMovementSpeed = value; } public static void setCaterpillarMovementSpeed(double value) { caterpillarMovementSpeed = value; }
public static double caterpillarFollowRange() { return caterpillarFollowRange; }
public static void setCaterpillarFollowRange(double value) { caterpillarFollowRange = value; }
public static double caterpillarPupationTimeSeconds() { return caterpillarPupationTimeSeconds; } public static double caterpillarPupationTimeSeconds() { return caterpillarPupationTimeSeconds; }
public static void setCaterpillarPupationTimeSeconds(double value) { caterpillarPupationTimeSeconds = value; } public static void setCaterpillarPupationTimeSeconds(double value) { caterpillarPupationTimeSeconds = value; }
public static int caterpillarPupationTimeTicks() { return Math.max(1, (int)Math.round(caterpillarPupationTimeSeconds * 20.0D)); } public static int caterpillarPupationTimeTicks() { return Math.max(1, (int)Math.round(caterpillarPupationTimeSeconds * 20.0D)); }
@@ -2002,9 +1868,6 @@ public final class AntarchySettings {
public static double butterflyFlyingSpeed() { return butterflyFlyingSpeed; } public static double butterflyFlyingSpeed() { return butterflyFlyingSpeed; }
public static void setButterflyFlyingSpeed(double value) { butterflyFlyingSpeed = value; } public static void setButterflyFlyingSpeed(double value) { butterflyFlyingSpeed = value; }
public static double butterflyFollowRange() { return butterflyFollowRange; }
public static void setButterflyFollowRange(double value) { butterflyFollowRange = value; }
public static double reverieHealth() { return reverieHealth; } public static double reverieHealth() { return reverieHealth; }
public static void setReverieHealth(double value) { reverieHealth = value; } public static void setReverieHealth(double value) { reverieHealth = value; }
@@ -2022,9 +1885,8 @@ public final class AntarchySettings {
public static int reverieRebindCooldownTicks() { return reverieRebindCooldownTicks; } public static int reverieRebindCooldownTicks() { return reverieRebindCooldownTicks; }
public static void setReverieRebindCooldownTicks(int v) { reverieRebindCooldownTicks = v; } public static void setReverieRebindCooldownTicks(int v) { reverieRebindCooldownTicks = v; }
public static int reverieDamageReactionDurationTicks() { return reverieDamageReactionDurationTicks; } public static int reverieDamageReactionDurationTicks() { return reverieDamageReactionDurationTicks; }
public static void setReverieDamageReactionDurationTicks(int v){ reverieDamageReactionDurationTicks = v; } public static void setReverieDamageReactionDurationTicks(int v) { reverieDamageReactionDurationTicks = v; }
public static double reverieDangerousFallDistance() { return reverieDangerousFallDistance; } public static double reverieDangerousFallDistance() { return reverieDangerousFallDistance; }
public static void setReverieDangerousFallDistance(double v){ reverieDangerousFallDistance = v; } public static void setReverieDangerousFallDistance(double v){ reverieDangerousFallDistance = v; }
@@ -2042,11 +1904,9 @@ public final class AntarchySettings {
public static void setReverieDuplicationCooldownTicks(int v){ reverieDuplicationCooldownTicks = v; } public static void setReverieDuplicationCooldownTicks(int v){ reverieDuplicationCooldownTicks = v; }
// Hardcoded AI tuning — getters only, no config wiring // Hardcoded AI tuning — getters only, no config wiring
public static boolean reverieOnlyPlayerDamage() { return reverieOnlyPlayerDamage; }
public static double reveriePreferredFollowMinDistance() { return reveriePreferredFollowMinDistance; } public static double reveriePreferredFollowMinDistance() { return reveriePreferredFollowMinDistance; }
public static double reveriePreferredFollowMaxDistance() { return reveriePreferredFollowMaxDistance; } public static double reveriePreferredFollowMaxDistance() { return reveriePreferredFollowMaxDistance; }
public static double reverieCatchUpDistance() { return reverieCatchUpDistance; } public static double reverieCatchUpDistance() { return reverieCatchUpDistance; }
public static double reveriePurpleProtectRadius() { return reveriePurpleProtectRadius; }
public static int reverieWarningApproachTicks() { return reverieWarningApproachTicks; } public static int reverieWarningApproachTicks() { return reverieWarningApproachTicks; }
public static int reverieWarningHoverTicks() { return reverieWarningHoverTicks; } public static int reverieWarningHoverTicks() { return reverieWarningHoverTicks; }
public static int reverieWarningReturnTicks() { return reverieWarningReturnTicks; } public static int reverieWarningReturnTicks() { return reverieWarningReturnTicks; }
@@ -2073,15 +1933,9 @@ public final class AntarchySettings {
public static double scorpionWhipTetherMaxRange() { return scorpionWhipTetherMaxRange; } public static double scorpionWhipTetherMaxRange() { return scorpionWhipTetherMaxRange; }
public static void setScorpionWhipTetherMaxRange(double value) { scorpionWhipTetherMaxRange = value; } public static void setScorpionWhipTetherMaxRange(double value) { scorpionWhipTetherMaxRange = value; }
public static int scorpionWhipReelCooldownTicks() { return scorpionWhipReelCooldownTicks; }
public static void setScorpionWhipReelCooldownTicks(int value) { scorpionWhipReelCooldownTicks = value; }
public static double scorpionWhipSnapBonusDamage() { return scorpionWhipSnapBonusDamage; } public static double scorpionWhipSnapBonusDamage() { return scorpionWhipSnapBonusDamage; }
public static void setScorpionWhipSnapBonusDamage(double value) { scorpionWhipSnapBonusDamage = value; } public static void setScorpionWhipSnapBonusDamage(double value) { scorpionWhipSnapBonusDamage = value; }
public static int scorpionWhipSnapCooldownTicks() { return scorpionWhipSnapCooldownTicks; }
public static void setScorpionWhipSnapCooldownTicks(int value) { scorpionWhipSnapCooldownTicks = value; }
public static double scorpionWhipPullStrength() { return scorpionWhipPullStrength; } public static double scorpionWhipPullStrength() { return scorpionWhipPullStrength; }
public static void setScorpionWhipPullStrength(double value) { scorpionWhipPullStrength = value; } public static void setScorpionWhipPullStrength(double value) { scorpionWhipPullStrength = value; }
@@ -2090,6 +1944,10 @@ public final class AntarchySettings {
public static double scorpionWhipSelfPullMultiplier() { return scorpionWhipSelfPullMultiplier; } public static double scorpionWhipSelfPullMultiplier() { return scorpionWhipSelfPullMultiplier; }
public static void setScorpionWhipSelfPullMultiplier(double value) { scorpionWhipSelfPullMultiplier = value; } public static void setScorpionWhipSelfPullMultiplier(double value) { scorpionWhipSelfPullMultiplier = value; }
public static int scorpionWhipReelCooldownTicks() { return scorpionWhipReelCooldownTicks; }
public static void setScorpionWhipReelCooldownTicks(int value) { scorpionWhipReelCooldownTicks = value; }
public static int scorpionWhipSnapCooldownTicks() { return scorpionWhipSnapCooldownTicks; }
public static void setScorpionWhipSnapCooldownTicks(int value) { scorpionWhipSnapCooldownTicks = value; }
public static int bloodCrystalKatanaAttackDamage() { return bloodCrystalKatanaAttackDamage; } public static int bloodCrystalKatanaAttackDamage() { return bloodCrystalKatanaAttackDamage; }
public static void setBloodCrystalKatanaAttackDamage(int value) { bloodCrystalKatanaAttackDamage = value; } public static void setBloodCrystalKatanaAttackDamage(int value) { bloodCrystalKatanaAttackDamage = value; }
@@ -2169,24 +2027,6 @@ public final class AntarchySettings {
public static double scorpionKnockbackResistance() { return scorpionKnockbackResistance; } public static double scorpionKnockbackResistance() { return scorpionKnockbackResistance; }
public static void setScorpionKnockbackResistance(double value) { scorpionKnockbackResistance = value; } public static void setScorpionKnockbackResistance(double value) { scorpionKnockbackResistance = value; }
public static double scorpionFollowRange() { return scorpionFollowRange; }
public static void setScorpionFollowRange(double value) { scorpionFollowRange = value; }
public static int scorpionXpReward() { return scorpionXpReward; }
public static void setScorpionXpReward(int value) { scorpionXpReward = value; }
public static int scorpionAttackAnimTicks() { return scorpionAttackAnimTicks; }
public static void setScorpionAttackAnimTicks(int value) { scorpionAttackAnimTicks = value; }
public static int scorpionAttackHitTick() { return scorpionAttackHitTick; }
public static void setScorpionAttackHitTick(int value) { scorpionAttackHitTick = value; }
public static int scorpionAttackCooldownTicks() { return scorpionAttackCooldownTicks; }
public static void setScorpionAttackCooldownTicks(int value) { scorpionAttackCooldownTicks = value; }
public static int scorpionPoisonTicks() { return scorpionPoisonTicks; }
public static void setScorpionPoisonTicks(int value) { scorpionPoisonTicks = value; }
public static double bedBugHealth() { return bedBugHealth; } public static double bedBugHealth() { return bedBugHealth; }
public static void setBedBugHealth(double value) { bedBugHealth = value; } public static void setBedBugHealth(double value) { bedBugHealth = value; }
@@ -2199,54 +2039,11 @@ public final class AntarchySettings {
public static double bedBugArmor() { return bedBugArmor; } public static double bedBugArmor() { return bedBugArmor; }
public static void setBedBugArmor(double value) { bedBugArmor = value; } public static void setBedBugArmor(double value) { bedBugArmor = value; }
public static double bedBugFollowRange() { return bedBugFollowRange; }
public static void setBedBugFollowRange(double value) { bedBugFollowRange = value; }
public static int bedBugXpReward() { return bedBugXpReward; }
public static void setBedBugXpReward(int value) { bedBugXpReward = value; }
public static int bedBugBiteAnimTicks() { return bedBugBiteAnimTicks; }
public static void setBedBugBiteAnimTicks(int value) { bedBugBiteAnimTicks = value; }
public static int bedBugAttackHitTick() { return bedBugAttackHitTick; }
public static void setBedBugAttackHitTick(int value) { bedBugAttackHitTick = value; }
public static int bedBugAttackCooldownTicks() { return bedBugAttackCooldownTicks; }
public static void setBedBugAttackCooldownTicks(int value) { bedBugAttackCooldownTicks = value; }
public static int bedBugMinLayEggDelay() { return bedBugMinLayEggDelay; }
public static void setBedBugMinLayEggDelay(int value) { bedBugMinLayEggDelay = value; }
public static int bedBugMaxLayEggDelay() { return bedBugMaxLayEggDelay; }
public static void setBedBugMaxLayEggDelay(int value) { bedBugMaxLayEggDelay = value; }
public static double bedBugFoodSearchRadius() { return bedBugFoodSearchRadius; }
public static void setBedBugFoodSearchRadius(double value) { bedBugFoodSearchRadius = value; }
public static double bedBugEggGuardRadius() { return bedBugEggGuardRadius; }
public static void setBedBugEggGuardRadius(double value) { bedBugEggGuardRadius = value; }
public static double bedBugAttackStartReachBuffer() { return bedBugAttackStartReachBuffer; }
public static void setBedBugAttackStartReachBuffer(double value) { bedBugAttackStartReachBuffer = value; }
public static double bedBugAttackReachBuffer() { return bedBugAttackReachBuffer; }
public static void setBedBugAttackReachBuffer(double value) { bedBugAttackReachBuffer = value; }
public static double bedBugAttackLungeHorizontalSpeed() { return bedBugAttackLungeHorizontalSpeed; }
public static void setBedBugAttackLungeHorizontalSpeed(double value) { bedBugAttackLungeHorizontalSpeed = value; }
public static double bedBugAttackLungeVerticalSpeed() { return bedBugAttackLungeVerticalSpeed; }
public static void setBedBugAttackLungeVerticalSpeed(double value) { bedBugAttackLungeVerticalSpeed = value; }
public static float bedBugHealAmount() { return bedBugHealAmount; }
public static void setBedBugHealAmount(float value) { bedBugHealAmount = value; }
public static double jumpyBugHealth() { return jumpyBugHealth; } public static double jumpyBugHealth() { return jumpyBugHealth; }
public static void setJumpyBugHealth(double value) { jumpyBugHealth = value; } public static void setJumpyBugHealth(double value) { jumpyBugHealth = value; }
public static double jumpyBugPounceDamage() { return jumpyBugPounceDamage; } public static double jumpyBugPounceDamage() { return jumpyBugPounceDamage; }
public static void setJumpyBugPounceDamage(double value) { jumpyBugPounceDamage = value; } public static void setJumpyBugPounceDamage(double value) { jumpyBugPounceDamage = value; }
public static double jumpyBugLatchDamage() { return jumpyBugLatchDamage; } public static double jumpyBugLatchDamage() { return jumpyBugLatchDamage; }
public static void setJumpyBugLatchDamage(double value) { jumpyBugLatchDamage = value; } public static void setJumpyBugLatchDamage(double value) { jumpyBugLatchDamage = value; }
@@ -2268,63 +2065,6 @@ public final class AntarchySettings {
public static double brutalflyFlyingSpeed() { return brutalflyFlyingSpeed; } public static double brutalflyFlyingSpeed() { return brutalflyFlyingSpeed; }
public static void setBrutalflyFlyingSpeed(double value) { brutalflyFlyingSpeed = value; } public static void setBrutalflyFlyingSpeed(double value) { brutalflyFlyingSpeed = value; }
public static double brutalflyFollowRange() { return brutalflyFollowRange; }
public static void setBrutalflyFollowRange(double value) { brutalflyFollowRange = value; }
public static int brutalflyXpReward() { return brutalflyXpReward; }
public static void setBrutalflyXpReward(int value) { brutalflyXpReward = value; }
public static int brutalflyDeathSpawnCountMin() { return brutalflyDeathSpawnCountMin; }
public static void setBrutalflyDeathSpawnCountMin(int value) { brutalflyDeathSpawnCountMin = value; }
public static int brutalflyDeathSpawnCountMax() { return brutalflyDeathSpawnCountMax; }
public static void setBrutalflyDeathSpawnCountMax(int value) { brutalflyDeathSpawnCountMax = value; }
public static int brutalflySpitWindupTicks() { return brutalflySpitWindupTicks; }
public static void setBrutalflySpitWindupTicks(int value) { brutalflySpitWindupTicks = value; }
public static int brutalflySwipeTicks() { return brutalflySwipeTicks; }
public static void setBrutalflySwipeTicks(int value) { brutalflySwipeTicks = value; }
public static float brutalflySwipeKnockback() { return brutalflySwipeKnockback; }
public static void setBrutalflySwipeKnockback(float value) { brutalflySwipeKnockback = value; }
public static int brutalflyPhaseOneSpitCooldownMin() { return brutalflyPhaseOneSpitCooldownMin; }
public static void setBrutalflyPhaseOneSpitCooldownMin(int value) { brutalflyPhaseOneSpitCooldownMin = value; }
public static int brutalflyPhaseOneSpitCooldownMax() { return brutalflyPhaseOneSpitCooldownMax; }
public static void setBrutalflyPhaseOneSpitCooldownMax(int value) { brutalflyPhaseOneSpitCooldownMax = value; }
public static int brutalflyPhaseTwoSpitCooldownMin() { return brutalflyPhaseTwoSpitCooldownMin; }
public static void setBrutalflyPhaseTwoSpitCooldownMin(int value) { brutalflyPhaseTwoSpitCooldownMin = value; }
public static int brutalflyPhaseTwoSpitCooldownMax() { return brutalflyPhaseTwoSpitCooldownMax; }
public static void setBrutalflyPhaseTwoSpitCooldownMax(int value) { brutalflyPhaseTwoSpitCooldownMax = value; }
public static int brutalflyPhaseThreeSpitCooldownMin() { return brutalflyPhaseThreeSpitCooldownMin; }
public static void setBrutalflyPhaseThreeSpitCooldownMin(int value) { brutalflyPhaseThreeSpitCooldownMin = value; }
public static int brutalflyPhaseThreeSpitCooldownMax() { return brutalflyPhaseThreeSpitCooldownMax; }
public static void setBrutalflyPhaseThreeSpitCooldownMax(int value) { brutalflyPhaseThreeSpitCooldownMax = value; }
public static int brutalflyPhaseOneMeleeCooldownMin() { return brutalflyPhaseOneMeleeCooldownMin; }
public static void setBrutalflyPhaseOneMeleeCooldownMin(int value) { brutalflyPhaseOneMeleeCooldownMin = value; }
public static int brutalflyPhaseOneMeleeCooldownMax() { return brutalflyPhaseOneMeleeCooldownMax; }
public static void setBrutalflyPhaseOneMeleeCooldownMax(int value) { brutalflyPhaseOneMeleeCooldownMax = value; }
public static int brutalflyPhaseTwoMeleeCooldownMin() { return brutalflyPhaseTwoMeleeCooldownMin; }
public static void setBrutalflyPhaseTwoMeleeCooldownMin(int value) { brutalflyPhaseTwoMeleeCooldownMin = value; }
public static int brutalflyPhaseTwoMeleeCooldownMax() { return brutalflyPhaseTwoMeleeCooldownMax; }
public static void setBrutalflyPhaseTwoMeleeCooldownMax(int value) { brutalflyPhaseTwoMeleeCooldownMax = value; }
public static int brutalflyPhaseThreeMeleeCooldownMin() { return brutalflyPhaseThreeMeleeCooldownMin; }
public static void setBrutalflyPhaseThreeMeleeCooldownMin(int value) { brutalflyPhaseThreeMeleeCooldownMin = value; }
public static int brutalflyPhaseThreeMeleeCooldownMax() { return brutalflyPhaseThreeMeleeCooldownMax; }
public static void setBrutalflyPhaseThreeMeleeCooldownMax(int value) { brutalflyPhaseThreeMeleeCooldownMax = value; }
public static double cloudSharkHealth() { return cloudSharkHealth; } public static double cloudSharkHealth() { return cloudSharkHealth; }
public static void setCloudSharkHealth(double value) { cloudSharkHealth = value; } public static void setCloudSharkHealth(double value) { cloudSharkHealth = value; }
@@ -2337,41 +2077,22 @@ public final class AntarchySettings {
public static double cloudSharkFlyingSpeed() { return cloudSharkFlyingSpeed; } public static double cloudSharkFlyingSpeed() { return cloudSharkFlyingSpeed; }
public static void setCloudSharkFlyingSpeed(double value) { cloudSharkFlyingSpeed = value; } public static void setCloudSharkFlyingSpeed(double value) { cloudSharkFlyingSpeed = value; }
public static double cloudSharkFollowRange() { return cloudSharkFollowRange; }
public static void setCloudSharkFollowRange(double value) { cloudSharkFollowRange = value; }
public static double cloudSharkKnockbackResistance() { return cloudSharkKnockbackResistance; } public static double cloudSharkKnockbackResistance() { return cloudSharkKnockbackResistance; }
public static void setCloudSharkKnockbackResistance(double value) { cloudSharkKnockbackResistance = value; } public static void setCloudSharkKnockbackResistance(double value) { cloudSharkKnockbackResistance = value; }
public static int cloudSharkXpReward() { return cloudSharkXpReward; }
public static void setCloudSharkXpReward(int value) { cloudSharkXpReward = value; }
public static double krakenMovementSpeed() { return krakenMovementSpeed; } public static double krakenMovementSpeed() { return krakenMovementSpeed; }
public static void setKrakenMovementSpeed(double value) { krakenMovementSpeed = value; } public static void setKrakenMovementSpeed(double value) { krakenMovementSpeed = value; }
public static double krakenFlyingSpeed() { return krakenFlyingSpeed; } public static double krakenFlyingSpeed() { return krakenFlyingSpeed; }
public static void setKrakenFlyingSpeed(double value) { krakenFlyingSpeed = value; } public static void setKrakenFlyingSpeed(double value) { krakenFlyingSpeed = value; }
public static double krakenFollowRange() { return krakenFollowRange; }
public static void setKrakenFollowRange(double value) { krakenFollowRange = value; }
public static double krakenKnockbackResistance() { return krakenKnockbackResistance; } public static double krakenKnockbackResistance() { return krakenKnockbackResistance; }
public static void setKrakenKnockbackResistance(double value) { krakenKnockbackResistance = value; } public static void setKrakenKnockbackResistance(double value) { krakenKnockbackResistance = value; }
public static double krakenArmor() { return krakenArmor; } public static double krakenArmor() { return krakenArmor; }
public static void setKrakenArmor(double value) { krakenArmor = value; } public static void setKrakenArmor(double value) { krakenArmor = value; }
public static double krakenProjectileDamageTakenMultiplier() { return krakenProjectileDamageTakenMultiplier; }
public static int krakenXpReward() { return krakenXpReward; } public static void setKrakenProjectileDamageTakenMultiplier(double value) { krakenProjectileDamageTakenMultiplier = value; }
public static void setKrakenXpReward(int value) { krakenXpReward = value; }
public static double krakenPhaseTwoSpeedBonus() { return krakenPhaseTwoSpeedBonus; }
public static void setKrakenPhaseTwoSpeedBonus(double value) { krakenPhaseTwoSpeedBonus = value; }
public static double krakenPhaseTwoFlyingSpeedBonus() { return krakenPhaseTwoFlyingSpeedBonus; }
public static void setKrakenPhaseTwoFlyingSpeedBonus(double value) { krakenPhaseTwoFlyingSpeedBonus = value; }
public static double krakenPhaseTwoDamageBonus() { return krakenPhaseTwoDamageBonus; }
public static void setKrakenPhaseTwoDamageBonus(double value) { krakenPhaseTwoDamageBonus = value; }
public static double krakenBossBarRange() { return krakenBossBarRange; } public static double krakenBossBarRange() { return krakenBossBarRange; }
public static void setKrakenBossBarRange(double value) { krakenBossBarRange = value; } public static void setKrakenBossBarRange(double value) { krakenBossBarRange = value; }
@@ -2379,57 +2100,6 @@ public final class AntarchySettings {
public static float krakenLightningDamagePhaseOne() { return krakenLightningDamagePhaseOne; } public static float krakenLightningDamagePhaseOne() { return krakenLightningDamagePhaseOne; }
public static void setKrakenLightningDamagePhaseOne(float value) { krakenLightningDamagePhaseOne = value; } public static void setKrakenLightningDamagePhaseOne(float value) { krakenLightningDamagePhaseOne = value; }
public static float krakenLightningDamagePhaseTwo() { return krakenLightningDamagePhaseTwo; }
public static void setKrakenLightningDamagePhaseTwo(float value) { krakenLightningDamagePhaseTwo = value; }
public static int krakenLightningAmbientCooldownPhaseOneMin() { return krakenLightningAmbientCooldownPhaseOneMin; }
public static void setKrakenLightningAmbientCooldownPhaseOneMin(int value) { krakenLightningAmbientCooldownPhaseOneMin = value; }
public static int krakenLightningAmbientCooldownPhaseOneMax() { return krakenLightningAmbientCooldownPhaseOneMax; }
public static void setKrakenLightningAmbientCooldownPhaseOneMax(int value) { krakenLightningAmbientCooldownPhaseOneMax = value; }
public static int krakenLightningAmbientCooldownPhaseTwoMin() { return krakenLightningAmbientCooldownPhaseTwoMin; }
public static void setKrakenLightningAmbientCooldownPhaseTwoMin(int value) { krakenLightningAmbientCooldownPhaseTwoMin = value; }
public static int krakenLightningAmbientCooldownPhaseTwoMax() { return krakenLightningAmbientCooldownPhaseTwoMax; }
public static void setKrakenLightningAmbientCooldownPhaseTwoMax(int value) { krakenLightningAmbientCooldownPhaseTwoMax = value; }
public static int krakenLightningStrikeCooldownPhaseOneMin() { return krakenLightningStrikeCooldownPhaseOneMin; }
public static void setKrakenLightningStrikeCooldownPhaseOneMin(int value) { krakenLightningStrikeCooldownPhaseOneMin = value; }
public static int krakenLightningStrikeCooldownPhaseOneMax() { return krakenLightningStrikeCooldownPhaseOneMax; }
public static void setKrakenLightningStrikeCooldownPhaseOneMax(int value) { krakenLightningStrikeCooldownPhaseOneMax = value; }
public static int krakenLightningStrikeCooldownPhaseTwoMin() { return krakenLightningStrikeCooldownPhaseTwoMin; }
public static void setKrakenLightningStrikeCooldownPhaseTwoMin(int value) { krakenLightningStrikeCooldownPhaseTwoMin = value; }
public static int krakenLightningStrikeCooldownPhaseTwoMax() { return krakenLightningStrikeCooldownPhaseTwoMax; }
public static void setKrakenLightningStrikeCooldownPhaseTwoMax(int value) { krakenLightningStrikeCooldownPhaseTwoMax = value; }
public static int krakenPhaseSummonCooldownPhaseOneMin() { return krakenPhaseSummonCooldownPhaseOneMin; }
public static void setKrakenPhaseSummonCooldownPhaseOneMin(int value) { krakenPhaseSummonCooldownPhaseOneMin = value; }
public static int krakenPhaseSummonCooldownPhaseOneMax() { return krakenPhaseSummonCooldownPhaseOneMax; }
public static void setKrakenPhaseSummonCooldownPhaseOneMax(int value) { krakenPhaseSummonCooldownPhaseOneMax = value; }
public static int krakenPhaseSummonCooldownPhaseTwoMin() { return krakenPhaseSummonCooldownPhaseTwoMin; }
public static void setKrakenPhaseSummonCooldownPhaseTwoMin(int value) { krakenPhaseSummonCooldownPhaseTwoMin = value; }
public static int krakenPhaseSummonCooldownPhaseTwoMax() { return krakenPhaseSummonCooldownPhaseTwoMax; }
public static void setKrakenPhaseSummonCooldownPhaseTwoMax(int value) { krakenPhaseSummonCooldownPhaseTwoMax = value; }
public static int krakenPhaseSummonedMinionsMin() { return krakenPhaseSummonedMinionsMin; }
public static void setKrakenPhaseSummonedMinionsMin(int value) { krakenPhaseSummonedMinionsMin = value; }
public static int krakenPhaseSummonedMinionsMax() { return krakenPhaseSummonedMinionsMax; }
public static void setKrakenPhaseSummonedMinionsMax(int value) { krakenPhaseSummonedMinionsMax = value; }
public static int krakenPhaseTwoMinionsNearbyCap() { return krakenPhaseTwoMinionsNearbyCap; }
public static void setKrakenPhaseTwoMinionsNearbyCap(int value) { krakenPhaseTwoMinionsNearbyCap = value; }
public static int krakenPhaseTwoMinionSpawnAttempts() { return krakenPhaseTwoMinionSpawnAttempts; }
public static void setKrakenPhaseTwoMinionSpawnAttempts(int value) { krakenPhaseTwoMinionSpawnAttempts = value; }
public static double lucidHealth() { return lucidHealth; } public static double lucidHealth() { return lucidHealth; }
public static void setLucidHealth(double value) { lucidHealth = value; } public static void setLucidHealth(double value) { lucidHealth = value; }
@@ -2442,51 +2112,9 @@ public final class AntarchySettings {
public static double lucidFlyingSpeed() { return lucidFlyingSpeed; } public static double lucidFlyingSpeed() { return lucidFlyingSpeed; }
public static void setLucidFlyingSpeed(double value) { lucidFlyingSpeed = value; } public static void setLucidFlyingSpeed(double value) { lucidFlyingSpeed = value; }
public static double lucidFollowRange() { return lucidFollowRange; }
public static void setLucidFollowRange(double value) { lucidFollowRange = value; }
public static double lucidKnockbackResistance() { return lucidKnockbackResistance; } public static double lucidKnockbackResistance() { return lucidKnockbackResistance; }
public static void setLucidKnockbackResistance(double value) { lucidKnockbackResistance = value; } public static void setLucidKnockbackResistance(double value) { lucidKnockbackResistance = value; }
public static int lucidXpReward() { return lucidXpReward; }
public static void setLucidXpReward(int value) { lucidXpReward = value; }
public static int lucidAttackWindupTicks() { return lucidAttackWindupTicks; }
public static void setLucidAttackWindupTicks(int value) { lucidAttackWindupTicks = value; }
public static int lucidAttackRecoveryTicks() { return lucidAttackRecoveryTicks; }
public static void setLucidAttackRecoveryTicks(int value) { lucidAttackRecoveryTicks = value; }
public static int lucidBurstShots() { return lucidBurstShots; }
public static void setLucidBurstShots(int value) { lucidBurstShots = value; }
public static int lucidBurstIntervalTicks() { return lucidBurstIntervalTicks; }
public static void setLucidBurstIntervalTicks(int value) { lucidBurstIntervalTicks = value; }
public static int lucidAttackCooldownTicks() { return lucidAttackCooldownTicks; }
public static void setLucidAttackCooldownTicks(int value) { lucidAttackCooldownTicks = value; }
public static double lucidMinEffectiveAttackRange() { return lucidMinEffectiveAttackRange; }
public static void setLucidMinEffectiveAttackRange(double value) { lucidMinEffectiveAttackRange = value; }
public static double lucidMinHoverRange() { return lucidMinHoverRange; }
public static void setLucidMinHoverRange(double value) { lucidMinHoverRange = value; }
public static double lucidCloseRange() { return lucidCloseRange; }
public static void setLucidCloseRange(double value) { lucidCloseRange = value; }
public static double lucidDefaultHoverHeight() { return lucidDefaultHoverHeight; }
public static void setLucidDefaultHoverHeight(double value) { lucidDefaultHoverHeight = value; }
public static double lucidHitboxWidthScale() { return lucidHitboxWidthScale; }
public static void setLucidHitboxWidthScale(double value) { lucidHitboxWidthScale = value; }
public static double lucidHitboxHeightScale() { return lucidHitboxHeightScale; }
public static void setLucidHitboxHeightScale(double value) { lucidHitboxHeightScale = value; }
public static double lucidHitboxYOffset() { return lucidHitboxYOffset; }
public static void setLucidHitboxYOffset(double value) { lucidHitboxYOffset = value; }
public static double missileSquidHealth() { return missileSquidHealth; } public static double missileSquidHealth() { return missileSquidHealth; }
public static void setMissileSquidHealth(double value) { missileSquidHealth = value; } public static void setMissileSquidHealth(double value) { missileSquidHealth = value; }
@@ -2499,24 +2127,9 @@ public final class AntarchySettings {
public static double missileSquidFlyingSpeed() { return missileSquidFlyingSpeed; } public static double missileSquidFlyingSpeed() { return missileSquidFlyingSpeed; }
public static void setMissileSquidFlyingSpeed(double value) { missileSquidFlyingSpeed = value; } public static void setMissileSquidFlyingSpeed(double value) { missileSquidFlyingSpeed = value; }
public static double missileSquidFollowRange() { return missileSquidFollowRange; }
public static void setMissileSquidFollowRange(double value) { missileSquidFollowRange = value; }
public static double missileSquidKnockbackResistance() { return missileSquidKnockbackResistance; } public static double missileSquidKnockbackResistance() { return missileSquidKnockbackResistance; }
public static void setMissileSquidKnockbackResistance(double value) { missileSquidKnockbackResistance = value; } public static void setMissileSquidKnockbackResistance(double value) { missileSquidKnockbackResistance = value; }
public static int missileSquidXpReward() { return missileSquidXpReward; }
public static void setMissileSquidXpReward(int value) { missileSquidXpReward = value; }
public static int missileSquidLatchDamageInterval() { return missileSquidLatchDamageInterval; }
public static void setMissileSquidLatchDamageInterval(int value) { missileSquidLatchDamageInterval = value; }
public static float missileSquidLatchDamage() { return missileSquidLatchDamage; }
public static void setMissileSquidLatchDamage(float value) { missileSquidLatchDamage = value; }
public static double missileSquidAttachRangeSqr() { return missileSquidAttachRangeSqr; }
public static void setMissileSquidAttachRangeSqr(double value) { missileSquidAttachRangeSqr = value; }
public static double molewormHealth() { return molewormHealth; } public static double molewormHealth() { return molewormHealth; }
public static void setMolewormHealth(double value) { molewormHealth = value; } public static void setMolewormHealth(double value) { molewormHealth = value; }
@@ -2526,9 +2139,6 @@ public final class AntarchySettings {
public static double molewormMovementSpeed() { return molewormMovementSpeed; } public static double molewormMovementSpeed() { return molewormMovementSpeed; }
public static void setMolewormMovementSpeed(double value) { molewormMovementSpeed = value; } public static void setMolewormMovementSpeed(double value) { molewormMovementSpeed = value; }
public static int molewormXpReward() { return molewormXpReward; }
public static void setMolewormXpReward(int value) { molewormXpReward = value; }
public static double triffidHealth() { return triffidHealth; } public static double triffidHealth() { return triffidHealth; }
public static void setTriffidHealth(double value) { triffidHealth = value; } public static void setTriffidHealth(double value) { triffidHealth = value; }
@@ -2544,21 +2154,6 @@ public final class AntarchySettings {
public static double molevoreAttackDamage() { return molevoreAttackDamage; } public static double molevoreAttackDamage() { return molevoreAttackDamage; }
public static void setMolevoreAttackDamage(double value) { molevoreAttackDamage = value; } public static void setMolevoreAttackDamage(double value) { molevoreAttackDamage = value; }
public static double molevoreMovementSpeed() { return molevoreMovementSpeed; }
public static void setMolevoreMovementSpeed(double value) { molevoreMovementSpeed = value; }
public static double molevoreArmor() { return molevoreArmor; }
public static void setMolevoreArmor(double value) { molevoreArmor = value; }
public static double molevoreKnockbackResistance() { return molevoreKnockbackResistance; }
public static void setMolevoreKnockbackResistance(double value) { molevoreKnockbackResistance = value; }
public static double molevoreFollowRange() { return molevoreFollowRange; }
public static void setMolevoreFollowRange(double value) { molevoreFollowRange = value; }
public static int molevoreXpReward() { return molevoreXpReward; }
public static void setMolevoreXpReward(int value) { molevoreXpReward = value; }
public static int molevoreSpinTicks() { return molevoreSpinTicks; } public static int molevoreSpinTicks() { return molevoreSpinTicks; }
public static void setMolevoreSpinTicks(int value) { molevoreSpinTicks = value; } public static void setMolevoreSpinTicks(int value) { molevoreSpinTicks = value; }
@@ -2586,87 +2181,12 @@ public final class AntarchySettings {
public static double nightmareMovementSpeed() { return nightmareMovementSpeed; } public static double nightmareMovementSpeed() { return nightmareMovementSpeed; }
public static void setNightmareMovementSpeed(double value) { nightmareMovementSpeed = value; } public static void setNightmareMovementSpeed(double value) { nightmareMovementSpeed = value; }
public static double nightmareFlyingSpeed() { return nightmareFlyingSpeed; }
public static void setNightmareFlyingSpeed(double value) { nightmareFlyingSpeed = value; }
public static double nightmareFollowRange() { return nightmareFollowRange; }
public static void setNightmareFollowRange(double value) { nightmareFollowRange = value; }
public static double nightmareKnockbackResistance() { return nightmareKnockbackResistance; }
public static void setNightmareKnockbackResistance(double value) { nightmareKnockbackResistance = value; }
public static double nightmareArmor() { return nightmareArmor; }
public static void setNightmareArmor(double value) { nightmareArmor = value; }
public static int nightmareXpReward() { return nightmareXpReward; }
public static void setNightmareXpReward(int value) { nightmareXpReward = value; }
public static int nightmareAttackTotalTicks() { return nightmareAttackTotalTicks; }
public static void setNightmareAttackTotalTicks(int value) { nightmareAttackTotalTicks = value; }
public static int nightmareAttackDamageTick() { return nightmareAttackDamageTick; }
public static void setNightmareAttackDamageTick(int value) { nightmareAttackDamageTick = value; }
public static int nightmareIntroRoarTicks() { return nightmareIntroRoarTicks; }
public static void setNightmareIntroRoarTicks(int value) { nightmareIntroRoarTicks = value; }
public static int nightmareCombatRoarTicks() { return nightmareCombatRoarTicks; }
public static void setNightmareCombatRoarTicks(int value) { nightmareCombatRoarTicks = value; }
public static int nightmareDeathTicks() { return nightmareDeathTicks; }
public static void setNightmareDeathTicks(int value) { nightmareDeathTicks = value; }
public static int nightmareTargetResetTicks() { return nightmareTargetResetTicks; }
public static void setNightmareTargetResetTicks(int value) { nightmareTargetResetTicks = value; }
public static int nightmareBedBugEggSearchInterval() { return nightmareBedBugEggSearchInterval; }
public static void setNightmareBedBugEggSearchInterval(int value) { nightmareBedBugEggSearchInterval = value; }
public static int nightmareDreadTicks() { return nightmareDreadTicks; } public static int nightmareDreadTicks() { return nightmareDreadTicks; }
public static void setNightmareDreadTicks(int value) { nightmareDreadTicks = value; } public static void setNightmareDreadTicks(int value) { nightmareDreadTicks = value; }
public static int nightmareWeaknessTicks() { return nightmareWeaknessTicks; } public static int nightmareWeaknessTicks() { return nightmareWeaknessTicks; }
public static void setNightmareWeaknessTicks(int value) { nightmareWeaknessTicks = value; } public static void setNightmareWeaknessTicks(int value) { nightmareWeaknessTicks = value; }
public static double nightmarePatrolSpeed() { return nightmarePatrolSpeed; }
public static void setNightmarePatrolSpeed(double value) { nightmarePatrolSpeed = value; }
public static double nightmareCombatFlightSpeed() { return nightmareCombatFlightSpeed; }
public static void setNightmareCombatFlightSpeed(double value) { nightmareCombatFlightSpeed = value; }
public static double nightmareGroundApproachSpeed() { return nightmareGroundApproachSpeed; }
public static void setNightmareGroundApproachSpeed(double value) { nightmareGroundApproachSpeed = value; }
public static double nightmareAttackStartRangeSqr() { return nightmareAttackStartRangeSqr; }
public static void setNightmareAttackStartRangeSqr(double value) { nightmareAttackStartRangeSqr = value; }
public static double nightmareGroundApproachRangeSqr() { return nightmareGroundApproachRangeSqr; }
public static void setNightmareGroundApproachRangeSqr(double value) { nightmareGroundApproachRangeSqr = value; }
public static double nightmareAttackReachRadius() { return nightmareAttackReachRadius; }
public static void setNightmareAttackReachRadius(double value) { nightmareAttackReachRadius = value; }
public static double nightmareAttackCommitHorizontalRange() { return nightmareAttackCommitHorizontalRange; }
public static void setNightmareAttackCommitHorizontalRange(double value) { nightmareAttackCommitHorizontalRange = value; }
public static double nightmareAttackCommitVerticalRange() { return nightmareAttackCommitVerticalRange; }
public static void setNightmareAttackCommitVerticalRange(double value) { nightmareAttackCommitVerticalRange = value; }
public static double nightmareFlightReengageRangeSqr() { return nightmareFlightReengageRangeSqr; }
public static void setNightmareFlightReengageRangeSqr(double value) { nightmareFlightReengageRangeSqr = value; }
public static double nightmareCloseApproachRangeSqr() { return nightmareCloseApproachRangeSqr; }
public static void setNightmareCloseApproachRangeSqr(double value) { nightmareCloseApproachRangeSqr = value; }
public static double nightmareRoarRetryDistanceSqr() { return nightmareRoarRetryDistanceSqr; }
public static void setNightmareRoarRetryDistanceSqr(double value) { nightmareRoarRetryDistanceSqr = value; }
public static double nightmareBedBugEggBreakRangeSqr() { return nightmareBedBugEggBreakRangeSqr; }
public static void setNightmareBedBugEggBreakRangeSqr(double value) { nightmareBedBugEggBreakRangeSqr = value; }
public static float nightmareAirPatrolChance() { return nightmareAirPatrolChance; }
public static void setNightmareAirPatrolChance(float value) { nightmareAirPatrolChance = value; }
public static double battleAxeAttackSpeed() { return battleAxeAttackSpeed; } public static double battleAxeAttackSpeed() { return battleAxeAttackSpeed; }
public static void setBattleAxeAttackSpeed(double value) { battleAxeAttackSpeed = value; } public static void setBattleAxeAttackSpeed(double value) { battleAxeAttackSpeed = value; }
@@ -2774,8 +2294,8 @@ public final class AntarchySettings {
public static void setToreterrorSpinDamage(double v) { toreterrorSpinDamage = v; } public static void setToreterrorSpinDamage(double v) { toreterrorSpinDamage = v; }
public static double toreterrorSpinKnockback() { return toreterrorSpinKnockback; } public static double toreterrorSpinKnockback() { return toreterrorSpinKnockback; }
public static void setToreterrorSpinKnockback(double v) { toreterrorSpinKnockback = v; } public static void setToreterrorSpinKnockback(double v) { toreterrorSpinKnockback = v; }
public static double toreterrorRangedWaterBombChance() { return toreterrorRangedWaterBombChance; }
public static void setToreterrorRangedWaterBombChance(double v) { toreterrorRangedWaterBombChance = v; } public static void setToreterrorRangedWaterBombChance(double v) { toreterrorRangedWaterBombChance = v; }
public static double toreterrorRangedWaterBombChance() { return toreterrorRangedWaterBombChance; }
public static double toreterrorProjectileDamageMultiplier() { return toreterrorProjectileDamageMultiplier; } public static double toreterrorProjectileDamageMultiplier() { return toreterrorProjectileDamageMultiplier; }
public static void setToreterrorProjectileDamageMultiplier(double v) { toreterrorProjectileDamageMultiplier = v; } public static void setToreterrorProjectileDamageMultiplier(double v) { toreterrorProjectileDamageMultiplier = v; }
public static double waterBombDamage() { return waterBombDamage; } public static double waterBombDamage() { return waterBombDamage; }
@@ -2786,8 +2306,8 @@ public final class AntarchySettings {
public static void setWaterBombGravity(double v) { waterBombGravity = v; } public static void setWaterBombGravity(double v) { waterBombGravity = v; }
public static double waterBombKnockback() { return waterBombKnockback; } public static double waterBombKnockback() { return waterBombKnockback; }
public static void setWaterBombKnockback(double v) { waterBombKnockback = v; } public static void setWaterBombKnockback(double v) { waterBombKnockback = v; }
public static double waterCannonCooldownSeconds() { return waterCannonCooldownSeconds; }
public static void setWaterCannonCooldownSeconds(double v) { waterCannonCooldownSeconds = v; } public static void setWaterCannonCooldownSeconds(double v) { waterCannonCooldownSeconds = v; }
public static double waterCannonCooldownSeconds() { return waterCannonCooldownSeconds; }
public static double creepingHorrorHealth() { return creepingHorrorHealth; } public static double creepingHorrorHealth() { return creepingHorrorHealth; }
public static void setCreepingHorrorHealth(double v) { creepingHorrorHealth = v; } public static void setCreepingHorrorHealth(double v) { creepingHorrorHealth = v; }
@@ -0,0 +1,28 @@
package com.craisinlord.antarchy.content;
import net.minecraft.world.level.GameRules;
public final class AntarchyGameRules {
public static GameRules.Key<GameRules.BooleanValue> RULE_DO_ANT_GREIFING;
public static GameRules.Key<GameRules.BooleanValue> RULE_DO_HERCULES_BEETLE_GREIFING;
public static GameRules.Key<GameRules.BooleanValue> RULE_DO_TERMITE_GREIFING;
public static GameRules.Key<GameRules.BooleanValue> RULE_DO_CAVARYN_HORDES;
private AntarchyGameRules() {
}
public static void bootstrap(BooleanRuleRegistrar registrar) {
if (RULE_DO_ANT_GREIFING != null) {
return;
}
RULE_DO_ANT_GREIFING = registrar.register("doAntGreifing", GameRules.Category.MOBS, true);
RULE_DO_HERCULES_BEETLE_GREIFING = registrar.register("doHerculesBeetleGreifing", GameRules.Category.MOBS, true);
RULE_DO_TERMITE_GREIFING = registrar.register("doTermiteGreifing", GameRules.Category.MOBS, true);
RULE_DO_CAVARYN_HORDES = registrar.register("doCavarynHordes", GameRules.Category.MOBS, true);
}
@FunctionalInterface
public interface BooleanRuleRegistrar {
GameRules.Key<GameRules.BooleanValue> register(String name, GameRules.Category category, boolean defaultValue);
}
}
@@ -40,6 +40,8 @@ public final class AntarchyTags {
public static final TagKey<Block> CAVARYN_PORTAL_FRAMES = TagKey.create(Registries.BLOCK, id("cavaryn_portal_frames")); public static final TagKey<Block> CAVARYN_PORTAL_FRAMES = TagKey.create(Registries.BLOCK, id("cavaryn_portal_frames"));
public static final TagKey<Block> ROLLY_CAVERN_CARVEABLE = TagKey.create(Registries.BLOCK, id("rolly_cavern_carveable")); public static final TagKey<Block> ROLLY_CAVERN_CARVEABLE = TagKey.create(Registries.BLOCK, id("rolly_cavern_carveable"));
public static final TagKey<Block> MINERS_DREAM_CARVABLE = TagKey.create(Registries.BLOCK, id("miners_dream_carvable")); public static final TagKey<Block> MINERS_DREAM_CARVABLE = TagKey.create(Registries.BLOCK, id("miners_dream_carvable"));
public static final TagKey<Block> BLUESTONE_COMPONENTS = TagKey.create(Registries.BLOCK, id("bluestone_components"));
public static final TagKey<Block> BLUESTONE_CONNECTABLE = TagKey.create(Registries.BLOCK, id("bluestone_connectable"));
private Blocks() { private Blocks() {
} }
@@ -0,0 +1,34 @@
package com.craisinlord.antarchy.content.block;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.world.item.context.BlockPlaceContext;
import net.minecraft.world.level.LevelReader;
import net.minecraft.world.level.LevelAccessor;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.state.BlockBehaviour;
import net.minecraft.world.level.block.state.BlockState;
public abstract class AbstractCeilingBluestoneBlock extends Block {
protected AbstractCeilingBluestoneBlock(BlockBehaviour.Properties properties) {
super(properties);
}
@Override
protected boolean canSurvive(BlockState state, LevelReader level, BlockPos pos) {
return BluestonePlacementHelper.hasCeilingSupport(level, pos);
}
@Override
public BlockState getStateForPlacement(BlockPlaceContext context) {
return BluestonePlacementHelper.canPlaceOnCeiling(context) ? this.defaultBlockState() : null;
}
@Override
protected BlockState updateShape(BlockState state, Direction direction, BlockState neighborState, LevelAccessor level, BlockPos pos, BlockPos neighborPos) {
if (!state.canSurvive(level, pos)) {
return net.minecraft.world.level.block.Blocks.AIR.defaultBlockState();
}
return super.updateShape(state, direction, neighborState, level, pos, neighborPos);
}
}
@@ -0,0 +1,34 @@
package com.craisinlord.antarchy.content.block;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.world.item.context.BlockPlaceContext;
import net.minecraft.world.level.LevelReader;
import net.minecraft.world.level.LevelAccessor;
import net.minecraft.world.level.block.DiodeBlock;
import net.minecraft.world.level.block.state.BlockBehaviour;
import net.minecraft.world.level.block.state.BlockState;
public abstract class AbstractCeilingDiodeBlock extends DiodeBlock {
protected AbstractCeilingDiodeBlock(BlockBehaviour.Properties properties) {
super(properties);
}
@Override
protected boolean canSurvive(BlockState state, LevelReader level, BlockPos pos) {
return BluestonePlacementHelper.hasCeilingSupport(level, pos);
}
@Override
public BlockState getStateForPlacement(BlockPlaceContext context) {
return BluestonePlacementHelper.canPlaceOnCeiling(context) ? super.getStateForPlacement(context) : null;
}
@Override
protected BlockState updateShape(BlockState state, Direction direction, BlockState neighborState, LevelAccessor level, BlockPos pos, BlockPos neighborPos) {
if (!state.canSurvive(level, pos)) {
return net.minecraft.world.level.block.Blocks.AIR.defaultBlockState();
}
return super.updateShape(state, direction, neighborState, level, pos, neighborPos);
}
}
@@ -0,0 +1,48 @@
package com.craisinlord.antarchy.content.block;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.state.BlockBehaviour;
import net.minecraft.world.level.block.state.BlockState;
public class BluestoneBlock extends Block implements BluestoneSignalSource {
public BluestoneBlock(BlockBehaviour.Properties properties) {
super(properties);
}
@Override
protected boolean isSignalSource(BlockState state) {
return true;
}
@Override
protected int getSignal(BlockState state, net.minecraft.world.level.BlockGetter level, BlockPos pos, Direction direction) {
return 15;
}
@Override
protected int getDirectSignal(BlockState state, net.minecraft.world.level.BlockGetter level, BlockPos pos, Direction direction) {
return 15;
}
@Override
protected void onPlace(BlockState state, Level level, BlockPos pos, BlockState oldState, boolean moving) {
super.onPlace(state, level, pos, oldState, moving);
BluestoneSignalHelper.updateBluestoneNeighbors(level, pos);
}
@Override
protected void onRemove(BlockState state, Level level, BlockPos pos, BlockState newState, boolean movedByPiston) {
super.onRemove(state, level, pos, newState, movedByPiston);
if (!state.is(newState.getBlock())) {
BluestoneSignalHelper.updateBluestoneNeighbors(level, pos);
}
}
@Override
public int getBluestoneSignal(net.minecraft.world.level.LevelReader level, BlockPos pos, BlockState state, Direction direction) {
return 15;
}
}
@@ -0,0 +1,82 @@
package com.craisinlord.antarchy.content.block;
import com.craisinlord.antarchy.content.block.entity.BluestoneComparatorBlockEntity;
import com.mojang.serialization.MapCodec;
import java.util.function.Supplier;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.core.particles.DustParticleOptions;
import net.minecraft.world.item.context.BlockPlaceContext;
import net.minecraft.world.level.BlockGetter;
import net.minecraft.world.level.LevelAccessor;
import net.minecraft.world.level.LevelReader;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.ComparatorBlock;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockBehaviour;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.phys.shapes.CollisionContext;
import net.minecraft.world.phys.shapes.VoxelShape;
import net.minecraft.util.RandomSource;
import org.joml.Vector3f;
public class BluestoneComparatorBlock extends ComparatorBlock {
public static final MapCodec<BluestoneComparatorBlock> CODEC = simpleCodec(BluestoneComparatorBlock::new);
private static final VoxelShape SHAPE = Block.box(0.0D, 14.0D, 0.0D, 16.0D, 16.0D, 16.0D);
private static final DustParticleOptions BLUESTONE_PARTICLE = new DustParticleOptions(new Vector3f(0.18F, 0.54F, 1.0F), 1.0F);
private final Supplier<? extends BlockEntityType<BluestoneComparatorBlockEntity>> blockEntityTypeSupplier;
public BluestoneComparatorBlock(BlockBehaviour.Properties properties) {
this(properties, null);
}
public BluestoneComparatorBlock(BlockBehaviour.Properties properties, Supplier<? extends BlockEntityType<BluestoneComparatorBlockEntity>> blockEntityTypeSupplier) {
super(properties);
this.blockEntityTypeSupplier = blockEntityTypeSupplier;
}
@Override
public MapCodec<ComparatorBlock> codec() {
return (MapCodec<ComparatorBlock>) (MapCodec<?>) CODEC;
}
@Override
protected VoxelShape getShape(BlockState state, BlockGetter level, BlockPos pos, CollisionContext context) {
return SHAPE;
}
@Override
protected boolean canSurvive(BlockState state, LevelReader level, BlockPos pos) {
return BluestonePlacementHelper.hasCeilingSupport(level, pos);
}
@Override
public BlockState getStateForPlacement(BlockPlaceContext context) {
return BluestonePlacementHelper.canPlaceOnCeiling(context) ? super.getStateForPlacement(context) : null;
}
@Override
public BlockState updateShape(BlockState state, Direction direction, BlockState neighborState, LevelAccessor level, BlockPos pos, BlockPos neighborPos) {
if (!state.canSurvive(level, pos)) {
return net.minecraft.world.level.block.Blocks.AIR.defaultBlockState();
}
return super.updateShape(state, direction, neighborState, level, pos, neighborPos);
}
@Override
public BlockEntity newBlockEntity(BlockPos pos, BlockState state) {
return new BluestoneComparatorBlockEntity(pos, state, this.blockEntityTypeSupplier);
}
@Override
public void animateTick(BlockState state, net.minecraft.world.level.Level level, BlockPos pos, RandomSource random) {
if (!state.getValue(POWERED)) {
return;
}
double x = pos.getX() + 0.5D + (random.nextDouble() - 0.5D) * 0.2D;
double y = pos.getY() + 0.8D;
double z = pos.getZ() + 0.5D + (random.nextDouble() - 0.5D) * 0.2D;
level.addParticle(BLUESTONE_PARTICLE, x, y, z, 0.0D, 0.0D, 0.0D);
}
}
@@ -0,0 +1,71 @@
package com.craisinlord.antarchy.content.block;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.core.particles.DustParticleOptions;
import net.minecraft.util.RandomSource;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.ItemInteractionResult;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.RedStoneOreBlock;
import net.minecraft.world.level.block.state.BlockBehaviour;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.block.state.properties.BlockStateProperties;
import net.minecraft.world.phys.BlockHitResult;
import org.joml.Vector3f;
public class BluestoneOreBlock extends RedStoneOreBlock {
private static final DustParticleOptions BLUESTONE_PARTICLE = new DustParticleOptions(new Vector3f(0.18F, 0.54F, 1.0F), 1.0F);
public BluestoneOreBlock(BlockBehaviour.Properties properties) {
super(properties);
}
@Override
public void attack(BlockState state, Level level, BlockPos pos, Player player) {
activate(state, level, pos);
}
@Override
public void stepOn(Level level, BlockPos pos, BlockState state, Entity entity) {
activate(state, level, pos);
}
@Override
protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hitResult) {
activate(state, level, pos);
return ItemInteractionResult.sidedSuccess(level.isClientSide);
}
@Override
public void animateTick(BlockState state, Level level, BlockPos pos, RandomSource random) {
if (state.getValue(BlockStateProperties.LIT)) {
spawnBluestoneParticles(level, pos);
}
}
private static void activate(BlockState state, Level level, BlockPos pos) {
spawnBluestoneParticles(level, pos);
if (!state.getValue(BlockStateProperties.LIT)) {
level.setBlock(pos, state.setValue(BlockStateProperties.LIT, true), 3);
}
}
private static void spawnBluestoneParticles(Level level, BlockPos pos) {
RandomSource random = level.random;
for (Direction direction : Direction.values()) {
BlockPos neighborPos = pos.relative(direction);
if (level.getBlockState(neighborPos).isSolidRender(level, neighborPos)) {
continue;
}
Direction.Axis axis = direction.getAxis();
double x = axis == Direction.Axis.X ? 0.5D + 0.5625D * direction.getStepX() : random.nextFloat();
double y = axis == Direction.Axis.Y ? 0.5D + 0.5625D * direction.getStepY() : random.nextFloat();
double z = axis == Direction.Axis.Z ? 0.5D + 0.5625D * direction.getStepZ() : random.nextFloat();
level.addParticle(BLUESTONE_PARTICLE, pos.getX() + x, pos.getY() + y, pos.getZ() + z, 0.0D, 0.0D, 0.0D);
}
}
}
@@ -0,0 +1,21 @@
package com.craisinlord.antarchy.content.block;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.world.item.context.BlockPlaceContext;
import net.minecraft.world.level.LevelReader;
import net.minecraft.world.level.block.Block;
public final class BluestonePlacementHelper {
private BluestonePlacementHelper() {
}
public static boolean hasCeilingSupport(LevelReader level, BlockPos pos) {
BlockPos supportPos = pos.above();
return Block.canSupportCenter(level, supportPos, Direction.DOWN);
}
public static boolean canPlaceOnCeiling(BlockPlaceContext context) {
return context.getClickedFace() == Direction.DOWN && hasCeilingSupport(context.getLevel(), context.getClickedPos());
}
}
@@ -0,0 +1,67 @@
package com.craisinlord.antarchy.content.block;
import com.mojang.serialization.MapCodec;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.core.particles.DustParticleOptions;
import net.minecraft.world.item.context.BlockPlaceContext;
import net.minecraft.world.level.BlockGetter;
import net.minecraft.world.level.LevelAccessor;
import net.minecraft.world.level.LevelReader;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.RepeaterBlock;
import net.minecraft.world.level.block.state.BlockBehaviour;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.phys.shapes.CollisionContext;
import net.minecraft.world.phys.shapes.VoxelShape;
import net.minecraft.util.RandomSource;
import org.joml.Vector3f;
public class BluestoneRepeaterBlock extends RepeaterBlock {
public static final MapCodec<BluestoneRepeaterBlock> CODEC = simpleCodec(BluestoneRepeaterBlock::new);
private static final VoxelShape SHAPE = Block.box(0.0D, 14.0D, 0.0D, 16.0D, 16.0D, 16.0D);
private static final DustParticleOptions BLUESTONE_PARTICLE = new DustParticleOptions(new Vector3f(0.18F, 0.54F, 1.0F), 1.0F);
public BluestoneRepeaterBlock(BlockBehaviour.Properties properties) {
super(properties);
}
@Override
public MapCodec<RepeaterBlock> codec() {
return (MapCodec<RepeaterBlock>) (MapCodec<?>) CODEC;
}
@Override
protected VoxelShape getShape(BlockState state, BlockGetter level, BlockPos pos, CollisionContext context) {
return SHAPE;
}
@Override
protected boolean canSurvive(BlockState state, LevelReader level, BlockPos pos) {
return BluestonePlacementHelper.hasCeilingSupport(level, pos);
}
@Override
public BlockState getStateForPlacement(BlockPlaceContext context) {
return BluestonePlacementHelper.canPlaceOnCeiling(context) ? super.getStateForPlacement(context) : null;
}
@Override
public BlockState updateShape(BlockState state, Direction direction, BlockState neighborState, LevelAccessor level, BlockPos pos, BlockPos neighborPos) {
if (!state.canSurvive(level, pos)) {
return net.minecraft.world.level.block.Blocks.AIR.defaultBlockState();
}
return super.updateShape(state, direction, neighborState, level, pos, neighborPos);
}
@Override
public void animateTick(BlockState state, net.minecraft.world.level.Level level, BlockPos pos, RandomSource random) {
if (!state.getValue(POWERED)) {
return;
}
double x = pos.getX() + 0.5D + (random.nextDouble() - 0.5D) * 0.2D;
double y = pos.getY() + 0.8D;
double z = pos.getZ() + 0.5D + (random.nextDouble() - 0.5D) * 0.2D;
level.addParticle(BLUESTONE_PARTICLE, x, y, z, 0.0D, 0.0D, 0.0D);
}
}
@@ -0,0 +1,20 @@
package com.craisinlord.antarchy.content.block;
import net.minecraft.util.StringRepresentable;
public enum BluestoneSide implements StringRepresentable {
NONE("none"),
SIDE("side"),
DOWN("down");
private final String name;
BluestoneSide(String name) {
this.name = name;
}
@Override
public String getSerializedName() {
return this.name;
}
}
@@ -0,0 +1,55 @@
package com.craisinlord.antarchy.content.block;
import com.craisinlord.antarchy.content.AntarchyTags;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.LevelReader;
import net.minecraft.world.level.block.state.BlockState;
public final class BluestoneSignalHelper {
private BluestoneSignalHelper() {
}
public static int getBestNeighborSignal(LevelReader level, BlockPos pos) {
int signal = 0;
for (Direction direction : Direction.values()) {
signal = Math.max(signal, getDirectBluestoneSignal(level, pos.relative(direction), direction));
if (signal >= 15) {
return 15;
}
}
return signal;
}
public static int getDirectBluestoneSignal(LevelReader level, BlockPos pos, Direction direction) {
BlockState state = level.getBlockState(pos);
if (state.getBlock() instanceof BluestoneSignalSource source) {
return source.getBluestoneSignal(level, pos, state, direction);
}
return 0;
}
public static int getWireSignal(LevelReader level, BlockPos pos) {
BlockState state = level.getBlockState(pos);
if (state.getBlock() instanceof BluestoneSignalSource source) {
return source.getBluestoneSignal(level, pos, state, Direction.DOWN);
}
return 0;
}
public static boolean canBluestoneConnectTo(BlockState state) {
return state.is(AntarchyTags.Blocks.BLUESTONE_CONNECTABLE);
}
public static boolean isBluestoneComponent(BlockState state) {
return state.is(AntarchyTags.Blocks.BLUESTONE_COMPONENTS);
}
public static void updateBluestoneNeighbors(Level level, BlockPos pos) {
level.updateNeighborsAt(pos, level.getBlockState(pos).getBlock());
for (Direction direction : Direction.values()) {
level.updateNeighborsAt(pos.relative(direction), level.getBlockState(pos).getBlock());
}
}
}
@@ -0,0 +1,10 @@
package com.craisinlord.antarchy.content.block;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.world.level.LevelReader;
import net.minecraft.world.level.block.state.BlockState;
public interface BluestoneSignalSource {
int getBluestoneSignal(LevelReader level, BlockPos pos, BlockState state, Direction direction);
}
@@ -0,0 +1,154 @@
package com.craisinlord.antarchy.content.block;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.WeakHashMap;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.core.particles.DustParticleOptions;
import net.minecraft.core.particles.ParticleTypes;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.sounds.SoundEvents;
import net.minecraft.sounds.SoundSource;
import net.minecraft.util.RandomSource;
import net.minecraft.world.level.BlockGetter;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.LevelReader;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.state.BlockBehaviour;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.block.state.StateDefinition;
import net.minecraft.world.level.block.state.properties.BlockStateProperties;
import net.minecraft.world.level.block.state.properties.BooleanProperty;
import net.minecraft.world.phys.shapes.CollisionContext;
import net.minecraft.world.phys.shapes.VoxelShape;
import org.joml.Vector3f;
public class BluestoneTorchBlock extends AbstractCeilingBluestoneBlock implements BluestoneSignalSource {
public static final BooleanProperty LIT = BlockStateProperties.LIT;
private static final VoxelShape SHAPE = Block.box(6.0D, 6.0D, 6.0D, 10.0D, 16.0D, 10.0D);
private static final DustParticleOptions BLUESTONE_PARTICLE = new DustParticleOptions(new Vector3f(0.18F, 0.54F, 1.0F), 1.0F);
private static final Map<Level, List<Toggle>> RECENT_TOGGLES = new WeakHashMap<>();
public BluestoneTorchBlock(BlockBehaviour.Properties properties) {
super(properties);
this.registerDefaultState(this.defaultBlockState().setValue(LIT, true));
}
@Override
protected VoxelShape getShape(BlockState state, BlockGetter level, BlockPos pos, CollisionContext context) {
return SHAPE;
}
@Override
protected boolean isSignalSource(BlockState state) {
return true;
}
@Override
protected int getSignal(BlockState state, BlockGetter level, BlockPos pos, Direction direction) {
if (direction == Direction.DOWN) {
return 0;
}
return state.getValue(LIT) ? 15 : 0;
}
@Override
protected int getDirectSignal(BlockState state, BlockGetter level, BlockPos pos, Direction direction) {
return this.getSignal(state, level, pos, direction);
}
@Override
protected void onPlace(BlockState state, Level level, BlockPos pos, BlockState oldState, boolean moving) {
super.onPlace(state, level, pos, oldState, moving);
BluestoneSignalHelper.updateBluestoneNeighbors(level, pos);
}
@Override
protected void onRemove(BlockState state, Level level, BlockPos pos, BlockState newState, boolean movedByPiston) {
super.onRemove(state, level, pos, newState, movedByPiston);
if (!state.is(newState.getBlock())) {
BluestoneSignalHelper.updateBluestoneNeighbors(level, pos);
}
}
@Override
protected void neighborChanged(BlockState state, Level level, BlockPos pos, Block block, BlockPos fromPos, boolean moving) {
if (!level.isClientSide) {
boolean powered = this.hasInputSignal(level, pos);
if (state.getValue(LIT) == powered) {
level.scheduleTick(pos, this, 2);
}
}
}
@Override
protected void tick(BlockState state, ServerLevel level, BlockPos pos, RandomSource random) {
boolean powered = this.hasInputSignal(level, pos);
boolean lit = state.getValue(LIT);
if (lit) {
if (powered) {
level.setBlock(pos, state.setValue(LIT, false), 3);
if (this.isToggledTooFrequently(level, pos, true)) {
level.levelEvent(1502, pos, 0);
level.playSound(null, pos, SoundEvents.REDSTONE_TORCH_BURNOUT, SoundSource.BLOCKS, 0.5F, 2.6F + (level.random.nextFloat() - level.random.nextFloat()) * 0.8F);
level.scheduleTick(pos, this, 160);
}
}
} else if (!powered && !this.isToggledTooFrequently(level, pos, false)) {
level.setBlock(pos, state.setValue(LIT, true), 3);
}
}
@Override
public void animateTick(BlockState state, Level level, BlockPos pos, RandomSource random) {
if (!state.getValue(LIT)) {
return;
}
double x = pos.getX() + 0.5D;
double y = pos.getY() + 0.3D;
double z = pos.getZ() + 0.5D;
level.addParticle(ParticleTypes.SMOKE, x, y, z, 0.0D, 0.0D, 0.0D);
level.addParticle(BLUESTONE_PARTICLE, x, y, z, 0.0D, 0.0D, 0.0D);
}
@Override
protected void createBlockStateDefinition(StateDefinition.Builder<Block, BlockState> builder) {
builder.add(LIT);
}
@Override
public int getBluestoneSignal(LevelReader level, BlockPos pos, BlockState state, Direction direction) {
return direction == Direction.DOWN ? 0 : state.getValue(LIT) ? 15 : 0;
}
private boolean hasInputSignal(Level level, BlockPos pos) {
return level.hasNeighborSignal(pos.above());
}
private boolean isToggledTooFrequently(Level level, BlockPos pos, boolean addNew) {
List<Toggle> toggles = RECENT_TOGGLES.computeIfAbsent(level, ignored -> new ArrayList<>());
if (addNew) {
toggles.add(new Toggle(pos.immutable(), level.getGameTime()));
}
long cutoff = level.getGameTime() - 60L;
toggles.removeIf(toggle -> toggle.gameTime < cutoff);
int count = 0;
for (Toggle toggle : toggles) {
if (toggle.pos.equals(pos)) {
count++;
if (count >= 8) {
return true;
}
}
}
return false;
}
private record Toggle(BlockPos pos, long gameTime) {
}
}
@@ -0,0 +1,319 @@
package com.craisinlord.antarchy.content.block;
import com.craisinlord.antarchy.content.AntarchyTags;
import com.google.common.collect.ImmutableMap;
import com.mojang.serialization.MapCodec;
import java.util.Map;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.util.RandomSource;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.context.BlockPlaceContext;
import net.minecraft.world.level.BlockGetter;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.LevelAccessor;
import net.minecraft.world.level.LevelReader;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.HorizontalDirectionalBlock;
import net.minecraft.world.level.block.Mirror;
import net.minecraft.world.level.block.Rotation;
import net.minecraft.world.level.block.SoundType;
import net.minecraft.world.level.block.state.BlockBehaviour;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.block.state.StateDefinition;
import net.minecraft.world.level.block.state.properties.EnumProperty;
import net.minecraft.world.level.block.state.properties.IntegerProperty;
import net.minecraft.world.phys.BlockHitResult;
import net.minecraft.world.phys.shapes.CollisionContext;
import net.minecraft.world.phys.shapes.Shapes;
import net.minecraft.world.phys.shapes.VoxelShape;
public class BluestoneWireBlock extends Block implements BluestoneSignalSource {
public static final MapCodec<BluestoneWireBlock> CODEC = simpleCodec(BluestoneWireBlock::new);
public static final EnumProperty<BluestoneSide> NORTH = EnumProperty.create("north", BluestoneSide.class);
public static final EnumProperty<BluestoneSide> EAST = EnumProperty.create("east", BluestoneSide.class);
public static final EnumProperty<BluestoneSide> SOUTH = EnumProperty.create("south", BluestoneSide.class);
public static final EnumProperty<BluestoneSide> WEST = EnumProperty.create("west", BluestoneSide.class);
public static final IntegerProperty POWER = IntegerProperty.create("power", 0, 15);
public static final Map<Direction, EnumProperty<BluestoneSide>> PROPERTY_BY_DIRECTION = ImmutableMap.of(
Direction.NORTH, NORTH,
Direction.EAST, EAST,
Direction.SOUTH, SOUTH,
Direction.WEST, WEST
);
private static final VoxelShape DOT_SHAPE = Block.box(3.0D, 14.0D, 3.0D, 13.0D, 16.0D, 13.0D);
private static final VoxelShape NORTH_SHAPE = Block.box(3.0D, 14.0D, 0.0D, 13.0D, 16.0D, 13.0D);
private static final VoxelShape SOUTH_SHAPE = Block.box(3.0D, 14.0D, 3.0D, 13.0D, 16.0D, 16.0D);
private static final VoxelShape WEST_SHAPE = Block.box(0.0D, 14.0D, 3.0D, 13.0D, 16.0D, 13.0D);
private static final VoxelShape EAST_SHAPE = Block.box(3.0D, 14.0D, 3.0D, 16.0D, 16.0D, 13.0D);
private static boolean shouldSignal = true;
public BluestoneWireBlock() {
this(BlockBehaviour.Properties.of().noCollission().instabreak().sound(SoundType.WOOL));
}
public BluestoneWireBlock(BlockBehaviour.Properties properties) {
super(properties);
this.registerDefaultState(this.defaultBlockState()
.setValue(NORTH, BluestoneSide.NONE)
.setValue(EAST, BluestoneSide.NONE)
.setValue(SOUTH, BluestoneSide.NONE)
.setValue(WEST, BluestoneSide.NONE)
.setValue(POWER, 0));
}
public MapCodec<BluestoneWireBlock> codec() {
return CODEC;
}
@Override
protected boolean canSurvive(BlockState state, LevelReader level, BlockPos pos) {
return BluestonePlacementHelper.hasCeilingSupport(level, pos);
}
@Override
public BlockState getStateForPlacement(BlockPlaceContext context) {
if (!BluestonePlacementHelper.canPlaceOnCeiling(context)) {
return null;
}
return this.updatePowerFromNeighbors(context.getLevel(), context.getClickedPos(), this.calculateShape(context.getLevel(), context.getClickedPos(), this.defaultBlockState()));
}
@Override
protected VoxelShape getShape(BlockState state, BlockGetter level, BlockPos pos, CollisionContext context) {
VoxelShape shape = DOT_SHAPE;
if (state.getValue(NORTH) != BluestoneSide.NONE) {
shape = Shapes.or(shape, NORTH_SHAPE);
}
if (state.getValue(EAST) != BluestoneSide.NONE) {
shape = Shapes.or(shape, EAST_SHAPE);
}
if (state.getValue(SOUTH) != BluestoneSide.NONE) {
shape = Shapes.or(shape, SOUTH_SHAPE);
}
if (state.getValue(WEST) != BluestoneSide.NONE) {
shape = Shapes.or(shape, WEST_SHAPE);
}
return shape;
}
@Override
protected VoxelShape getCollisionShape(BlockState state, BlockGetter level, BlockPos pos, CollisionContext context) {
return Shapes.empty();
}
@Override
protected BlockState updateShape(BlockState state, Direction direction, BlockState neighborState, LevelAccessor level, BlockPos pos, BlockPos neighborPos) {
if (!state.canSurvive(level, pos)) {
return net.minecraft.world.level.block.Blocks.AIR.defaultBlockState();
}
if (direction.getAxis().isHorizontal() || direction == Direction.UP || direction == Direction.DOWN) {
return this.calculateShape(level, pos, state);
}
return super.updateShape(state, direction, neighborState, level, pos, neighborPos);
}
@Override
protected void onPlace(BlockState state, Level level, BlockPos pos, BlockState oldState, boolean moving) {
if (!oldState.is(state.getBlock())) {
this.updateNeighbors(level, pos, state);
}
}
@Override
protected void onRemove(BlockState state, Level level, BlockPos pos, BlockState newState, boolean movedByPiston) {
if (!state.is(newState.getBlock())) {
BluestoneSignalHelper.updateBluestoneNeighbors(level, pos);
for (Direction direction : Direction.Plane.HORIZONTAL) {
BlockPos neighborPos = pos.relative(direction);
BlockState neighborState = level.getBlockState(neighborPos);
if (neighborState.is(this)) {
this.updateNeighbors(level, neighborPos, neighborState);
}
}
}
super.onRemove(state, level, pos, newState, movedByPiston);
}
@Override
protected void neighborChanged(BlockState state, Level level, BlockPos pos, Block block, BlockPos fromPos, boolean moving) {
if (!level.isClientSide) {
this.updateNeighbors(level, pos, state);
}
}
@Override
protected boolean isSignalSource(BlockState state) {
return shouldSignal;
}
@Override
protected int getSignal(BlockState state, BlockGetter level, BlockPos pos, Direction direction) {
if (!shouldSignal || direction == Direction.UP) {
return 0;
}
if (direction.getAxis().isHorizontal()) {
EnumProperty<BluestoneSide> property = PROPERTY_BY_DIRECTION.get(direction);
if (property != null && state.getValue(property) == BluestoneSide.NONE) {
return 0;
}
}
return state.getValue(POWER);
}
@Override
protected int getDirectSignal(BlockState state, BlockGetter level, BlockPos pos, Direction direction) {
return this.getSignal(state, level, pos, direction);
}
@Override
protected InteractionResult useWithoutItem(BlockState state, Level level, BlockPos pos, Player player, BlockHitResult hitResult) {
if (level.isClientSide) {
return InteractionResult.SUCCESS;
}
boolean isDot = state.getValue(NORTH) == BluestoneSide.NONE
&& state.getValue(EAST) == BluestoneSide.NONE
&& state.getValue(SOUTH) == BluestoneSide.NONE
&& state.getValue(WEST) == BluestoneSide.NONE;
BlockState updated = isDot
? this.calculateShape(level, pos, state)
: state.setValue(NORTH, BluestoneSide.NONE)
.setValue(EAST, BluestoneSide.NONE)
.setValue(SOUTH, BluestoneSide.NONE)
.setValue(WEST, BluestoneSide.NONE);
level.setBlock(pos, updated, 3);
this.updateNeighbors(level, pos, updated);
return InteractionResult.SUCCESS;
}
@Override
protected BlockState rotate(BlockState state, Rotation rotation) {
return switch (rotation) {
case CLOCKWISE_180 -> state.setValue(NORTH, state.getValue(SOUTH))
.setValue(EAST, state.getValue(WEST))
.setValue(SOUTH, state.getValue(NORTH))
.setValue(WEST, state.getValue(EAST));
case COUNTERCLOCKWISE_90 -> state.setValue(NORTH, state.getValue(EAST))
.setValue(EAST, state.getValue(SOUTH))
.setValue(SOUTH, state.getValue(WEST))
.setValue(WEST, state.getValue(NORTH));
case CLOCKWISE_90 -> state.setValue(NORTH, state.getValue(WEST))
.setValue(EAST, state.getValue(NORTH))
.setValue(SOUTH, state.getValue(EAST))
.setValue(WEST, state.getValue(SOUTH));
default -> state;
};
}
@Override
protected BlockState mirror(BlockState state, Mirror mirror) {
return switch (mirror) {
case LEFT_RIGHT -> state.setValue(NORTH, state.getValue(SOUTH)).setValue(SOUTH, state.getValue(NORTH));
case FRONT_BACK -> state.setValue(EAST, state.getValue(WEST)).setValue(WEST, state.getValue(EAST));
default -> super.mirror(state, mirror);
};
}
@Override
public void animateTick(BlockState state, Level level, BlockPos pos, RandomSource random) {
}
@Override
protected void createBlockStateDefinition(StateDefinition.Builder<Block, BlockState> builder) {
builder.add(NORTH, EAST, SOUTH, WEST, POWER);
}
@Override
public int getBluestoneSignal(LevelReader level, BlockPos pos, BlockState state, Direction direction) {
return direction == Direction.UP ? 0 : state.getValue(POWER);
}
private void updateNeighbors(Level level, BlockPos pos, BlockState state) {
if (!state.is(this)) {
return;
}
BlockState shaped = this.calculateShape(level, pos, state);
BlockState powered = this.updatePowerFromNeighbors(level, pos, shaped);
if (!powered.equals(state)) {
level.setBlock(pos, powered, 3);
}
BluestoneSignalHelper.updateBluestoneNeighbors(level, pos);
}
private BlockState updatePowerFromNeighbors(Level level, BlockPos pos, BlockState state) {
int newPower = this.calculateTargetStrength(level, pos);
return state.getValue(POWER) == newPower ? state : state.setValue(POWER, newPower);
}
private int calculateTargetStrength(Level level, BlockPos pos) {
int external = this.getExternalSignal(level, pos);
int neighborWirePower = 0;
for (Direction direction : Direction.Plane.HORIZONTAL) {
BlockPos sidePos = pos.relative(direction);
neighborWirePower = Math.max(neighborWirePower, BluestoneSignalHelper.getWireSignal(level, sidePos));
neighborWirePower = Math.max(neighborWirePower, BluestoneSignalHelper.getWireSignal(level, sidePos.below()));
if (level.getBlockState(sidePos).isRedstoneConductor(level, sidePos)) {
neighborWirePower = Math.max(neighborWirePower, BluestoneSignalHelper.getWireSignal(level, sidePos.above()));
}
}
return Math.max(external, Math.max(0, neighborWirePower - 1));
}
private int getExternalSignal(Level level, BlockPos pos) {
int signal = 0;
for (Direction direction : Direction.values()) {
BlockPos neighborPos = pos.relative(direction);
BlockState neighborState = level.getBlockState(neighborPos);
if (neighborState.is(net.minecraft.world.level.block.Blocks.REDSTONE_WIRE)) {
continue;
}
if (neighborState.getBlock() instanceof BluestoneWireBlock) {
continue;
}
signal = Math.max(signal, neighborState.getSignal(level, neighborPos, direction));
if (signal >= 15) {
return 15;
}
}
return signal;
}
private BlockState calculateShape(LevelReader level, BlockPos pos, BlockState state) {
return state.setValue(NORTH, this.getConnectingSide(level, pos, Direction.NORTH))
.setValue(EAST, this.getConnectingSide(level, pos, Direction.EAST))
.setValue(SOUTH, this.getConnectingSide(level, pos, Direction.SOUTH))
.setValue(WEST, this.getConnectingSide(level, pos, Direction.WEST));
}
private BluestoneSide getConnectingSide(LevelReader level, BlockPos pos, Direction direction) {
BlockPos sidePos = pos.relative(direction);
BlockState sideState = level.getBlockState(sidePos);
if (this.canConnectTo(sideState, direction)) {
return BluestoneSide.SIDE;
}
if (!sideState.isRedstoneConductor(level, sidePos) && this.canConnectTo(level.getBlockState(sidePos.below()), direction)) {
return BluestoneSide.DOWN;
}
if (sideState.isRedstoneConductor(level, sidePos) && this.canConnectTo(level.getBlockState(sidePos.above()), direction)) {
return BluestoneSide.SIDE;
}
return BluestoneSide.NONE;
}
private boolean canConnectTo(BlockState state, Direction direction) {
if (state.getBlock() instanceof BluestoneWireBlock || state.getBlock() instanceof BluestoneTorchBlock || state.getBlock() instanceof BluestoneBlock) {
return true;
}
if (state.getBlock() instanceof BluestoneRepeaterBlock || state.getBlock() instanceof BluestoneComparatorBlock) {
Direction facing = state.getValue(HorizontalDirectionalBlock.FACING);
return facing == direction || facing == direction.getOpposite();
}
return state.is(AntarchyTags.Blocks.BLUESTONE_CONNECTABLE);
}
}
@@ -0,0 +1,53 @@
package com.craisinlord.antarchy.content.block;
import com.craisinlord.antarchy.Antarchy;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.core.particles.ParticleOptions;
import net.minecraft.core.particles.ParticleTypes;
import net.minecraft.core.registries.BuiltInRegistries;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.util.RandomSource;
import net.minecraft.world.level.BlockGetter;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.LevelReader;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.TorchBlock;
import net.minecraft.world.level.block.state.BlockBehaviour;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.phys.shapes.CollisionContext;
import net.minecraft.world.phys.shapes.VoxelShape;
public class DreamCeilingTorchBlock extends TorchBlock {
private static final ResourceLocation DREAM_FIRE_FLAME_ID = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "dream_fire_flame");
private static final VoxelShape SHAPE = Block.box(6.0D, 6.0D, 6.0D, 10.0D, 16.0D, 10.0D);
public DreamCeilingTorchBlock(BlockBehaviour.Properties properties) {
super(ParticleTypes.SOUL_FIRE_FLAME, properties);
}
@Override
protected VoxelShape getShape(BlockState state, BlockGetter level, BlockPos pos, CollisionContext context) {
return SHAPE;
}
@Override
protected boolean canSurvive(BlockState state, LevelReader level, BlockPos pos) {
return Block.canSupportCenter(level, pos.above(), Direction.DOWN);
}
@Override
public void animateTick(BlockState state, Level level, BlockPos pos, RandomSource random) {
double x = pos.getX() + 0.5D;
double y = pos.getY() + 0.3D;
double z = pos.getZ() + 0.5D;
level.addParticle(ParticleTypes.SMOKE, x, y, z, 0.0D, 0.0D, 0.0D);
level.addParticle(getDreamFlameParticle(), x, y, z, 0.0D, 0.0D, 0.0D);
}
private static ParticleOptions getDreamFlameParticle() {
return BuiltInRegistries.PARTICLE_TYPE.get(DREAM_FIRE_FLAME_ID) instanceof ParticleOptions particleOptions
? particleOptions
: ParticleTypes.SOUL_FIRE_FLAME;
}
}
@@ -0,0 +1,38 @@
package com.craisinlord.antarchy.content.block.entity;
import java.util.function.Supplier;
import net.minecraft.core.BlockPos;
import net.minecraft.core.HolderLookup;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState;
public class BluestoneComparatorBlockEntity extends BlockEntity {
private int outputSignal;
public BluestoneComparatorBlockEntity(BlockPos pos, BlockState state, Supplier<? extends BlockEntityType<BluestoneComparatorBlockEntity>> blockEntityTypeSupplier) {
super(blockEntityTypeSupplier.get(), pos, state);
}
public int getOutputSignal() {
return this.outputSignal;
}
public void setOutputSignal(int outputSignal) {
this.outputSignal = outputSignal;
this.setChanged();
}
@Override
protected void saveAdditional(CompoundTag tag, HolderLookup.Provider registries) {
super.saveAdditional(tag, registries);
tag.putInt("OutputSignal", this.outputSignal);
}
@Override
protected void loadAdditional(CompoundTag tag, HolderLookup.Provider registries) {
super.loadAdditional(tag, registries);
this.outputSignal = tag.getInt("OutputSignal");
}
}
@@ -1,4 +1,4 @@
package com.craisinlord.antarchy.content; package com.craisinlord.antarchy.content.creative;
import com.craisinlord.antarchy.Antarchy; import com.craisinlord.antarchy.Antarchy;
import com.craisinlord.antarchy.content.entity.glimmer.GlimmerVariant; import com.craisinlord.antarchy.content.entity.glimmer.GlimmerVariant;
@@ -170,6 +170,10 @@ public final class CreativeTabContents {
entry("uranium_trapdoor", "building_blocks"), entry("uranium_trapdoor", "building_blocks"),
entry("uranium_bars", "building_blocks"), entry("uranium_bars", "building_blocks"),
entry("uranium_bulb", "building_blocks"), entry("uranium_bulb", "building_blocks"),
entry("bluestone_block", "building_blocks"),
entry("bluestone_repeater", "building_blocks"),
entry("bluestone_comparator", "building_blocks"),
entry("bluestone_torch", "building_blocks"),
entry("titanium_block", "building_blocks"), entry("titanium_block", "building_blocks"),
entry("raw_titanium_block", "building_blocks"), entry("raw_titanium_block", "building_blocks"),
entry("cut_titanium", "building_blocks"), entry("cut_titanium", "building_blocks"),
@@ -218,6 +222,7 @@ public final class CreativeTabContents {
entry("deepslate_uranium_ore", "natural_blocks"), entry("deepslate_uranium_ore", "natural_blocks"),
entry("titanium_ore", "natural_blocks"), entry("titanium_ore", "natural_blocks"),
entry("deepslate_titanium_ore", "natural_blocks"), entry("deepslate_titanium_ore", "natural_blocks"),
entry("bluestone_ore", "natural_blocks"),
entry("corn_seeds", "natural_blocks"), entry("corn_seeds", "natural_blocks"),
entry("star_coral", "natural_blocks"), entry("star_coral", "natural_blocks"),
entry("star_coral_fan", "natural_blocks"), entry("star_coral_fan", "natural_blocks"),
@@ -279,6 +284,7 @@ public final class CreativeTabContents {
entry("jumpy_boots", "combat"), entry("jumpy_boots", "combat"),
entry("raw_uranium_scrap", "ingredients"), entry("raw_uranium_scrap", "ingredients"),
entry("raw_titanium_scrap", "ingredients"), entry("raw_titanium_scrap", "ingredients"),
entry("bluestone", "ingredients"),
entry("raw_uranium", "ingredients"), entry("raw_uranium", "ingredients"),
entry("raw_titanium", "ingredients"), entry("raw_titanium", "ingredients"),
entry("uranium_nugget", "ingredients"), entry("uranium_nugget", "ingredients"),
@@ -1,4 +1,4 @@
package com.craisinlord.antarchy.content; package com.craisinlord.antarchy.content.creative;
import java.util.Comparator; import java.util.Comparator;
import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.core.registries.BuiltInRegistries;
@@ -1,5 +1,6 @@
package com.craisinlord.antarchy.content.entity; package com.craisinlord.antarchy.content.entity;
import com.craisinlord.antarchy.config.AntarchySettings;
import com.craisinlord.antarchy.content.AntarchySoundEvents; import com.craisinlord.antarchy.content.AntarchySoundEvents;
import com.craisinlord.antarchy.content.AntarchyObjects; import com.craisinlord.antarchy.content.AntarchyObjects;
import com.craisinlord.antarchy.content.block.BedBugEggBlock; import com.craisinlord.antarchy.content.block.BedBugEggBlock;
@@ -103,11 +104,11 @@ public class BedBugEntity extends Animal implements GeoEntity {
public static AttributeSupplier.Builder createAttributes() { public static AttributeSupplier.Builder createAttributes() {
return Mob.createMobAttributes() return Mob.createMobAttributes()
.add(Attributes.MAX_HEALTH, 18.0D) .add(Attributes.MAX_HEALTH, AntarchySettings.bedBugHealth())
.add(Attributes.MOVEMENT_SPEED, 0.24D) .add(Attributes.MOVEMENT_SPEED, AntarchySettings.bedBugMovementSpeed())
.add(Attributes.ATTACK_DAMAGE, 4.0D) .add(Attributes.ATTACK_DAMAGE, AntarchySettings.bedBugAttackDamage())
.add(Attributes.FOLLOW_RANGE, 20.0D) .add(Attributes.FOLLOW_RANGE, 20.0D)
.add(Attributes.ARMOR, 2.0D); .add(Attributes.ARMOR, AntarchySettings.bedBugArmor());
} }
public static boolean canSpawn(EntityType<BedBugEntity> entityType, ServerLevelAccessor level, MobSpawnType spawnReason, BlockPos pos, RandomSource random) { public static boolean canSpawn(EntityType<BedBugEntity> entityType, ServerLevelAccessor level, MobSpawnType spawnReason, BlockPos pos, RandomSource random) {
@@ -1,6 +1,7 @@
package com.craisinlord.antarchy.content.entity; package com.craisinlord.antarchy.content.entity;
import com.craisinlord.antarchy.Antarchy; import com.craisinlord.antarchy.Antarchy;
import com.craisinlord.antarchy.config.AntarchySettings;
import com.craisinlord.antarchy.content.AntarchyObjects; import com.craisinlord.antarchy.content.AntarchyObjects;
import com.craisinlord.antarchy.content.AntarchyTags; import com.craisinlord.antarchy.content.AntarchyTags;
import com.craisinlord.antarchy.content.AntarchySoundEvents; import com.craisinlord.antarchy.content.AntarchySoundEvents;
@@ -143,9 +144,9 @@ public class ButterflyEntity extends Animal implements FlyingAnimal, GeoEntity {
public static AttributeSupplier.Builder createAttributes() { public static AttributeSupplier.Builder createAttributes() {
return Mob.createMobAttributes() return Mob.createMobAttributes()
.add(Attributes.MAX_HEALTH, 6.0D) .add(Attributes.MAX_HEALTH, AntarchySettings.butterflyHealth())
.add(Attributes.FLYING_SPEED, 0.55D) .add(Attributes.FLYING_SPEED, AntarchySettings.butterflyFlyingSpeed())
.add(Attributes.MOVEMENT_SPEED, 0.3D) .add(Attributes.MOVEMENT_SPEED, AntarchySettings.butterflyMovementSpeed())
.add(Attributes.FOLLOW_RANGE, 16.0D); .add(Attributes.FOLLOW_RANGE, 16.0D);
} }
@@ -123,8 +123,8 @@ public class CaterpillarEntity extends Animal implements GeoEntity {
public static AttributeSupplier.Builder createAttributes() { public static AttributeSupplier.Builder createAttributes() {
return Mob.createMobAttributes() return Mob.createMobAttributes()
.add(Attributes.MAX_HEALTH, 6.0D) .add(Attributes.MAX_HEALTH, AntarchySettings.caterpillarHealth())
.add(Attributes.MOVEMENT_SPEED, 0.156D) .add(Attributes.MOVEMENT_SPEED, AntarchySettings.caterpillarMovementSpeed())
.add(Attributes.FOLLOW_RANGE, 14.0D); .add(Attributes.FOLLOW_RANGE, 14.0D);
} }
@@ -1,6 +1,7 @@
package com.craisinlord.antarchy.content.entity; package com.craisinlord.antarchy.content.entity;
import com.craisinlord.antarchy.config.AntarchySettings; import com.craisinlord.antarchy.config.AntarchySettings;
import com.craisinlord.antarchy.content.AntarchyGameRules;
import com.craisinlord.antarchy.content.AntarchySoundEvents; import com.craisinlord.antarchy.content.AntarchySoundEvents;
import com.craisinlord.antarchy.content.AntarchyTags; import com.craisinlord.antarchy.content.AntarchyTags;
import com.craisinlord.antarchy.content.damage.AntarchyDamageSources; import com.craisinlord.antarchy.content.damage.AntarchyDamageSources;
@@ -172,11 +173,11 @@ public class HerculesBeetleEntity extends TamableAnimal implements GeoEntity, Fl
private int mountedChargeTicks; private int mountedChargeTicks;
private boolean attackDamageApplied; private boolean attackDamageApplied;
private boolean riderJumpPressed; private boolean riderJumpPressed;
private boolean riderJumpPressedLastTick;
private boolean mountedChargeActive; private boolean mountedChargeActive;
private boolean combatCryDone; private boolean combatCryDone;
private boolean pendingChargeStart; private boolean pendingChargeStart;
private boolean pendingMountedCharge; private boolean pendingMountedCharge;
private boolean groundedMountedCharge;
private int pendingChargeDuration; private int pendingChargeDuration;
@Nullable @Nullable
private UUID attackTargetId; private UUID attackTargetId;
@@ -372,8 +373,9 @@ public class HerculesBeetleEntity extends TamableAnimal implements GeoEntity, Fl
this.tickMountedMotion(); this.tickMountedMotion();
} }
this.setNoGravity(this.isFlying() || this.chargeTicksRemaining > 0); boolean airborneCharge = this.chargeTicksRemaining > 0 && !this.groundedMountedCharge;
if (this.isFlying() || this.chargeTicksRemaining > 0) { this.setNoGravity(this.isFlying() || airborneCharge);
if (this.isFlying() || airborneCharge) {
this.fallDistance = 0.0F; this.fallDistance = 0.0F;
} }
@@ -450,8 +452,10 @@ public class HerculesBeetleEntity extends TamableAnimal implements GeoEntity, Fl
if (this.getAnimationState() != ANIM_CHARGE) { if (this.getAnimationState() != ANIM_CHARGE) {
this.setAnimationState(ANIM_CHARGE); this.setAnimationState(ANIM_CHARGE);
} }
this.setFlying(true); if (!this.groundedMountedCharge) {
this.setNoGravity(true); this.setFlying(true);
this.setNoGravity(true);
}
this.noPhysics = true; this.noPhysics = true;
this.fallDistance = 0.0F; this.fallDistance = 0.0F;
@@ -481,14 +485,13 @@ public class HerculesBeetleEntity extends TamableAnimal implements GeoEntity, Fl
} }
private void tickFlightState() { private void tickFlightState() {
if (this.isFlying() && this.onGround() && this.groundedTicks > 10 && this.getTarget() == null && !this.riderJumpPressed) { if (!this.isVehicle() && this.isFlying() && this.onGround() && this.groundedTicks > 10 && this.getTarget() == null && !this.riderJumpPressed) {
this.requestFlightStop(); this.requestFlightStop();
} }
} }
private void tickMountedMotion() { private void tickMountedMotion() {
if (!(this.getControllingPassenger() instanceof Player rider) || this.isKnockedDown()) { if (!(this.getControllingPassenger() instanceof Player rider) || this.isKnockedDown()) {
this.riderJumpPressedLastTick = false;
return; return;
} }
if (this.chargeTicksRemaining > 0 || this.getAnimationState() == ANIM_CHARGE_START || this.getAnimationState() == ANIM_OPEN_WINGS) { if (this.chargeTicksRemaining > 0 || this.getAnimationState() == ANIM_CHARGE_START || this.getAnimationState() == ANIM_OPEN_WINGS) {
@@ -498,37 +501,19 @@ public class HerculesBeetleEntity extends TamableAnimal implements GeoEntity, Fl
this.setYRot(rider.getYHeadRot()); this.setYRot(rider.getYHeadRot());
this.yHeadRot = this.getYRot(); this.yHeadRot = this.getYRot();
this.yBodyRot = this.getYRot(); this.yBodyRot = this.getYRot();
if (this.isFlying() && this.onGround()) {
this.forceMountedFlightStop();
return;
}
if (this.isFlying()) { if (this.isFlying()) {
this.riderJumpPressedLastTick = this.riderJumpPressed; this.setNoGravity(true);
return; this.noPhysics = false;
} this.fallDistance = 0.0F;
if (this.onGround() && this.getDeltaMovement().y <= 0.0D) {
boolean jumpPressedThisTick = this.riderJumpPressed; Vec3 motion = this.getDeltaMovement();
boolean jumpPressedEdge = jumpPressedThisTick && !this.riderJumpPressedLastTick; this.setDeltaMovement(motion.x, MOUNTED_FLIGHT_LIFT, motion.z);
this.hasImpulse = true;
if (jumpPressedEdge && this.onGround()) {
if (this.flightCooldown <= 0) {
this.requestFlightStart();
} }
} else {
this.setNoGravity(false);
this.noPhysics = false;
} }
this.riderJumpPressedLastTick = jumpPressedThisTick;
}
private void forceMountedFlightStop() {
this.setFlying(false);
this.actionTicks = 0;
this.flightCooldown = 8;
if (this.getAnimationState() == ANIM_OPEN_WINGS || this.getAnimationState() == ANIM_CLOSE_WINGS) {
this.setAnimationState(ANIM_IDLE);
}
this.updateAmbientAnimation();
} }
private void updateAmbientAnimation() { private void updateAmbientAnimation() {
@@ -625,6 +610,7 @@ public class HerculesBeetleEntity extends TamableAnimal implements GeoEntity, Fl
this.setNoGravity(false); this.setNoGravity(false);
this.noPhysics = false; this.noPhysics = false;
this.pendingChargeStart = false; this.pendingChargeStart = false;
this.groundedMountedCharge = false;
this.chargeTicksRemaining = 0; this.chargeTicksRemaining = 0;
this.attackCooldown = 0; this.attackCooldown = 0;
this.getNavigation().stop(); this.getNavigation().stop();
@@ -716,6 +702,32 @@ public class HerculesBeetleEntity extends TamableAnimal implements GeoEntity, Fl
} }
} }
private boolean isMountedFlightPoseActive() {
return this.isFlying() && (!this.onGround() || this.getDeltaMovement().y > 0.08D);
}
private void startMountedFlight() {
this.pendingChargeStart = false;
this.setFlying(true);
this.setNoGravity(true);
this.noPhysics = false;
this.fallDistance = 0.0F;
this.groundedTicks = 0;
Vec3 motion = this.getDeltaMovement();
this.setDeltaMovement(motion.x, Math.max(motion.y, MOUNTED_FLIGHT_LIFT), motion.z);
this.hasImpulse = true;
this.setAnimationState(ANIM_FLY);
}
private void stopMountedFlight() {
this.setFlying(false);
this.setNoGravity(false);
this.noPhysics = false;
this.fallDistance = 0.0F;
this.flightCooldown = 8;
this.updateAmbientAnimation();
}
public boolean isKnockedDown() { public boolean isKnockedDown() {
return this.entityData.get(KNOCKED_DOWN); return this.entityData.get(KNOCKED_DOWN);
} }
@@ -830,7 +842,7 @@ public class HerculesBeetleEntity extends TamableAnimal implements GeoEntity, Fl
this.pendingChargeDuration = Mth.clamp(durationTicks, MIN_MOUNTED_CHARGE_TICKS, MAX_CHARGE_TICKS); this.pendingChargeDuration = Mth.clamp(durationTicks, MIN_MOUNTED_CHARGE_TICKS, MAX_CHARGE_TICKS);
this.pendingMountedCharge = mountedCharge; this.pendingMountedCharge = mountedCharge;
if (!this.isFlying()) { if (!this.isFlying() && !mountedCharge) {
this.pendingChargeStart = true; this.pendingChargeStart = true;
this.requestFlightStart(); this.requestFlightStart();
return; return;
@@ -854,11 +866,15 @@ public class HerculesBeetleEntity extends TamableAnimal implements GeoEntity, Fl
this.chargeDistanceTarget = CHARGE_DISTANCE; this.chargeDistanceTarget = CHARGE_DISTANCE;
this.chargeCooldown = CHARGE_COOLDOWN_TICKS; this.chargeCooldown = CHARGE_COOLDOWN_TICKS;
this.pendingChargeDuration = 0; this.pendingChargeDuration = 0;
this.groundedMountedCharge = this.pendingMountedCharge && !this.isFlying();
this.pendingMountedCharge = false; this.pendingMountedCharge = false;
this.setFlying(true); if (!this.groundedMountedCharge) {
this.setFlying(true);
}
} }
private void finishChargeImpact() { private void finishChargeImpact() {
this.groundedMountedCharge = false;
if (!(this.level() instanceof ServerLevel serverLevel)) { if (!(this.level() instanceof ServerLevel serverLevel)) {
this.chargeTicksRemaining = 0; this.chargeTicksRemaining = 0;
this.noPhysics = false; this.noPhysics = false;
@@ -901,7 +917,7 @@ public class HerculesBeetleEntity extends TamableAnimal implements GeoEntity, Fl
} }
private void breakBlocksForChargeImpact(ServerLevel level) { private void breakBlocksForChargeImpact(ServerLevel level) {
if (!level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { if (!this.isHerculesBeetleGriefingEnabled(level)) {
return; return;
} }
@@ -929,7 +945,7 @@ public class HerculesBeetleEntity extends TamableAnimal implements GeoEntity, Fl
} }
private void breakBlocksForChargePath(Vec3 nextPosition) { private void breakBlocksForChargePath(Vec3 nextPosition) {
if (!(this.level() instanceof ServerLevel serverLevel) || !serverLevel.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { if (!(this.level() instanceof ServerLevel serverLevel) || !this.isHerculesBeetleGriefingEnabled(serverLevel)) {
return; return;
} }
@@ -957,7 +973,7 @@ public class HerculesBeetleEntity extends TamableAnimal implements GeoEntity, Fl
} }
private void breakBlocksForSuffocation() { private void breakBlocksForSuffocation() {
if (!(this.level() instanceof ServerLevel serverLevel) || !serverLevel.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { if (!(this.level() instanceof ServerLevel serverLevel) || !this.isHerculesBeetleGriefingEnabled(serverLevel)) {
return; return;
} }
@@ -1005,6 +1021,11 @@ public class HerculesBeetleEntity extends TamableAnimal implements GeoEntity, Fl
return false; return false;
} }
private boolean isHerculesBeetleGriefingEnabled(ServerLevel level) {
return level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)
&& level.getGameRules().getBoolean(AntarchyGameRules.RULE_DO_HERCULES_BEETLE_GREIFING);
}
private void broadcastImpactShake(ServerLevel level) { private void broadcastImpactShake(ServerLevel level) {
for (ServerPlayer player : level.players()) { for (ServerPlayer player : level.players()) {
if (player.distanceToSqr(this) <= 48.0D * 48.0D) { if (player.distanceToSqr(this) <= 48.0D * 48.0D) {
@@ -1029,6 +1050,17 @@ public class HerculesBeetleEntity extends TamableAnimal implements GeoEntity, Fl
this.startRegularAttack(this.isFlying(), target); this.startRegularAttack(this.isFlying(), target);
} }
public void toggleMountedFlight(ServerPlayer player) {
if (!this.canPlayerControl(player) || this.isKnockedDown() || this.chargeTicksRemaining > 0 || this.isInBusyAnimation()) {
return;
}
if (this.isFlying()) {
this.stopMountedFlight();
return;
}
this.startMountedFlight();
}
public void startMountedCharge(ServerPlayer player) { public void startMountedCharge(ServerPlayer player) {
if (!this.canPlayerControl(player) || this.chargeCooldown > 0 || this.isKnockedDown() || this.isInBusyAnimation() || this.chargeTicksRemaining > 0) { if (!this.canPlayerControl(player) || this.chargeCooldown > 0 || this.isKnockedDown() || this.isInBusyAnimation() || this.chargeTicksRemaining > 0) {
this.resetMountedChargeState(); this.resetMountedChargeState();
@@ -1077,8 +1109,13 @@ public class HerculesBeetleEntity extends TamableAnimal implements GeoEntity, Fl
protected void positionRider(Entity passenger, MoveFunction moveFunction) { protected void positionRider(Entity passenger, MoveFunction moveFunction) {
if (this.hasPassenger(passenger)) { if (this.hasPassenger(passenger)) {
Vec3 forward = this.getLookAngle().multiply(1.0D, 0.0D, 1.0D); Vec3 forward = this.getLookAngle().multiply(1.0D, 0.0D, 1.0D);
double yOffset = this.isFlying() ? 5.3D : 0.5D; boolean mountedFlightPose = this.isMountedFlightPoseActive();
double forwardOffset = this.isFlying() ? 2.2D : 0.0D; double yOffset = mountedFlightPose ? 5.3D : 3.0D;
double forwardOffset = mountedFlightPose ? 2.2D : 1.25D;
if (!this.isFlying()) {
yOffset -= 0.25D;
forwardOffset += 0.25D;
}
moveFunction.accept( moveFunction.accept(
passenger, passenger,
this.getX() + forward.x * forwardOffset, this.getX() + forward.x * forwardOffset,
@@ -1108,15 +1145,11 @@ public class HerculesBeetleEntity extends TamableAnimal implements GeoEntity, Fl
this.setSpeed(this.getRiddenSpeed(rider)); this.setSpeed(this.getRiddenSpeed(rider));
if (!this.isFlying()) { if (!this.isFlying()) {
Vec3 currentMotion = this.getDeltaMovement(); super.travel(new Vec3(riddenInput.x, travelVector.y, riddenInput.z));
Vec3 horizontalMotion = new Vec3(currentMotion.x, 0.0D, currentMotion.z).scale(MOUNTED_GROUND_BRAKE);
this.setDeltaMovement(horizontalMotion.x, currentMotion.y, horizontalMotion.z);
this.moveRelative(this.getSpeed(), new Vec3(riddenInput.x, 0.0D, riddenInput.z));
this.move(MoverType.SELF, this.getDeltaMovement());
if (Math.abs(rider.zza) < 0.05F && Math.abs(rider.xxa) < 0.05F && this.onGround()) { if (Math.abs(rider.zza) < 0.05F && Math.abs(rider.xxa) < 0.05F && this.onGround()) {
Vec3 dampedMotion = this.getDeltaMovement(); Vec3 dampedMotion = this.getDeltaMovement();
this.setDeltaMovement(dampedMotion.x * 0.35D, dampedMotion.y, dampedMotion.z * 0.35D); this.setDeltaMovement(dampedMotion.x * MOUNTED_GROUND_BRAKE, dampedMotion.y, dampedMotion.z * MOUNTED_GROUND_BRAKE);
} }
} else { } else {
Vec3 motion = new Vec3(0.0D, this.getDeltaMovement().y, 0.0D); Vec3 motion = new Vec3(0.0D, this.getDeltaMovement().y, 0.0D);
@@ -1125,14 +1158,6 @@ public class HerculesBeetleEntity extends TamableAnimal implements GeoEntity, Fl
this.setDeltaMovement(motion); this.setDeltaMovement(motion);
this.move(MoverType.SELF, this.getDeltaMovement()); this.move(MoverType.SELF, this.getDeltaMovement());
} }
if (!this.isFlying() && rider.zza > 0.0F && this.horizontalCollision) {
Vec3 stepUpPos = this.position().add(0.0D, 1.0D, 0.0D);
this.setPos(stepUpPos.x, stepUpPos.y, stepUpPos.z);
this.setDeltaMovement(Vec3.ZERO);
this.moveRelative(this.getSpeed(), new Vec3(riddenInput.x, 0.0D, riddenInput.z));
this.move(MoverType.SELF, this.getDeltaMovement());
}
} }
@Override @Override
@@ -1166,6 +1191,11 @@ public class HerculesBeetleEntity extends TamableAnimal implements GeoEntity, Fl
return this.entityData.get(FLYING); return this.entityData.get(FLYING);
} }
@Override
public float maxUpStep() {
return this.isFlying() ? 0.6F : 1.5F;
}
@Override @Override
public EntityDimensions getDefaultDimensions(Pose pose) { public EntityDimensions getDefaultDimensions(Pose pose) {
return DEFAULT_DIMENSIONS; return DEFAULT_DIMENSIONS;
@@ -1,5 +1,6 @@
package com.craisinlord.antarchy.content.entity; package com.craisinlord.antarchy.content.entity;
import com.craisinlord.antarchy.config.AntarchySettings;
import com.craisinlord.antarchy.content.AntarchySoundEvents; import com.craisinlord.antarchy.content.AntarchySoundEvents;
import com.craisinlord.antarchy.content.entity.kraken.KrakenEntity; import com.craisinlord.antarchy.content.entity.kraken.KrakenEntity;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
@@ -100,12 +101,12 @@ public class MissileSquidEntity extends Monster implements GeoEntity {
public static AttributeSupplier.Builder createAttributes() { public static AttributeSupplier.Builder createAttributes() {
return Mob.createMobAttributes() return Mob.createMobAttributes()
.add(Attributes.MAX_HEALTH, 50.0D) .add(Attributes.MAX_HEALTH, AntarchySettings.missileSquidHealth())
.add(Attributes.ATTACK_DAMAGE, 6.0D) .add(Attributes.ATTACK_DAMAGE, AntarchySettings.missileSquidAttackDamage())
.add(Attributes.MOVEMENT_SPEED, 0.84D) .add(Attributes.MOVEMENT_SPEED, AntarchySettings.missileSquidMovementSpeed())
.add(Attributes.FLYING_SPEED, 0.84D) .add(Attributes.FLYING_SPEED, AntarchySettings.missileSquidFlyingSpeed())
.add(Attributes.FOLLOW_RANGE, 20.0D) .add(Attributes.FOLLOW_RANGE, 20.0D)
.add(Attributes.KNOCKBACK_RESISTANCE, 0.15D); .add(Attributes.KNOCKBACK_RESISTANCE, AntarchySettings.missileSquidKnockbackResistance());
} }
public static boolean canSpawn(EntityType<MissileSquidEntity> entityType, ServerLevelAccessor level, MobSpawnType spawnReason, BlockPos pos, RandomSource random) { public static boolean canSpawn(EntityType<MissileSquidEntity> entityType, ServerLevelAccessor level, MobSpawnType spawnReason, BlockPos pos, RandomSource random) {
@@ -1,6 +1,7 @@
package com.craisinlord.antarchy.content.entity; package com.craisinlord.antarchy.content.entity;
import com.craisinlord.antarchy.Antarchy; import com.craisinlord.antarchy.Antarchy;
import com.craisinlord.antarchy.config.AntarchySettings;
import com.craisinlord.antarchy.content.AntarchyTags; import com.craisinlord.antarchy.content.AntarchyTags;
import com.craisinlord.antarchy.content.AntarchySoundEvents; import com.craisinlord.antarchy.content.AntarchySoundEvents;
import java.util.HashSet; import java.util.HashSet;
@@ -108,9 +109,9 @@ public class MolevoreEntity extends Monster implements GeoEntity {
public static AttributeSupplier.Builder createAttributes() { public static AttributeSupplier.Builder createAttributes() {
return Monster.createMonsterAttributes() return Monster.createMonsterAttributes()
.add(Attributes.MAX_HEALTH, 60.0D) .add(Attributes.MAX_HEALTH, AntarchySettings.molevoreHealth())
.add(Attributes.MOVEMENT_SPEED, 0.27D) .add(Attributes.MOVEMENT_SPEED, 0.27D)
.add(Attributes.ATTACK_DAMAGE, 10.0D) .add(Attributes.ATTACK_DAMAGE, AntarchySettings.molevoreAttackDamage())
.add(Attributes.ARMOR, 6.0D) .add(Attributes.ARMOR, 6.0D)
.add(Attributes.KNOCKBACK_RESISTANCE, 0.65D) .add(Attributes.KNOCKBACK_RESISTANCE, 0.65D)
.add(Attributes.FOLLOW_RANGE, 28.0D); .add(Attributes.FOLLOW_RANGE, 28.0D);
@@ -1,5 +1,6 @@
package com.craisinlord.antarchy.content.entity; package com.craisinlord.antarchy.content.entity;
import com.craisinlord.antarchy.config.AntarchySettings;
import com.craisinlord.antarchy.content.AntarchyObjects; import com.craisinlord.antarchy.content.AntarchyObjects;
import com.craisinlord.antarchy.content.AntarchySoundEvents; import com.craisinlord.antarchy.content.AntarchySoundEvents;
import java.util.EnumSet; import java.util.EnumSet;
@@ -74,9 +75,9 @@ public class MolewormEntity extends Monster implements GeoEntity {
public static AttributeSupplier.Builder createAttributes() { public static AttributeSupplier.Builder createAttributes() {
return Monster.createMonsterAttributes() return Monster.createMonsterAttributes()
.add(Attributes.MAX_HEALTH, 8.0D) .add(Attributes.MAX_HEALTH, AntarchySettings.molewormHealth())
.add(Attributes.MOVEMENT_SPEED, 0.25D) .add(Attributes.MOVEMENT_SPEED, AntarchySettings.molewormMovementSpeed())
.add(Attributes.ATTACK_DAMAGE, 1.0D); .add(Attributes.ATTACK_DAMAGE, AntarchySettings.molewormAttackDamage());
} }
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
@@ -1,5 +1,6 @@
package com.craisinlord.antarchy.content.entity; package com.craisinlord.antarchy.content.entity;
import com.craisinlord.antarchy.config.AntarchySettings;
import com.craisinlord.antarchy.content.AntarchySoundEvents; import com.craisinlord.antarchy.content.AntarchySoundEvents;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.CompoundTag;
@@ -74,12 +75,12 @@ public class ScorpionEntity extends Monster implements GeoEntity {
public static AttributeSupplier.Builder createAttributes() { public static AttributeSupplier.Builder createAttributes() {
return Mob.createMobAttributes() return Mob.createMobAttributes()
.add(Attributes.MAX_HEALTH, 30.0D) .add(Attributes.MAX_HEALTH, AntarchySettings.scorpionHealth())
.add(Attributes.MOVEMENT_SPEED, 0.29D) .add(Attributes.MOVEMENT_SPEED, AntarchySettings.scorpionMovementSpeed())
.add(Attributes.ATTACK_DAMAGE, 5.0D) .add(Attributes.ATTACK_DAMAGE, AntarchySettings.scorpionAttackDamage())
.add(Attributes.FOLLOW_RANGE, 24.0D) .add(Attributes.FOLLOW_RANGE, 24.0D)
.add(Attributes.ARMOR, 2.0D) .add(Attributes.ARMOR, AntarchySettings.scorpionArmor())
.add(Attributes.KNOCKBACK_RESISTANCE, 0.2D); .add(Attributes.KNOCKBACK_RESISTANCE, AntarchySettings.scorpionKnockbackResistance());
} }
public static boolean canSpawn(EntityType<ScorpionEntity> entityType, ServerLevelAccessor level, public static boolean canSpawn(EntityType<ScorpionEntity> entityType, ServerLevelAccessor level,
@@ -62,23 +62,29 @@ public class UpwardFallingBlockEntity extends Entity {
@Override @Override
public void tick() { public void tick() {
super.tick(); super.tick();
this.setOldPosAndRot();
if (level().isClientSide) return;
BlockState blockState = getBlockState(); BlockState blockState = getBlockState();
if (blockState.isAir()) { if (blockState.isAir()) {
discard(); if (!level().isClientSide) {
discard();
}
return; return;
} }
// Move upward directly — noPhysics=true means move() just calls setPos().
// Runs on both sides so the client simulates the same deterministic rise
// instead of relying on interpolated network updates, matching vanilla FallingBlockEntity.
setPos(getX(), getY() + RISE_SPEED, getZ());
if (level().isClientSide) return;
time++; time++;
if (time > MAX_TICKS || getY() >= level().getMaxBuildHeight()) { if (time > MAX_TICKS || getY() >= level().getMaxBuildHeight()) {
dropAndRemove(blockState); dropAndRemove(blockState);
return; return;
} }
// Move upward directly — noPhysics=true means move() just calls setPos()
setPos(getX(), getY() + RISE_SPEED, getZ());
damageEntitiesAlongPath(blockState); damageEntitiesAlongPath(blockState);
BlockPos headPos = BlockPos.containing(getX(), getY() + getBbHeight(), getZ()); BlockPos headPos = BlockPos.containing(getX(), getY() + getBbHeight(), getZ());
@@ -13,6 +13,7 @@ import java.util.UUID;
import java.util.WeakHashMap; import java.util.WeakHashMap;
final class AntMarchManager { final class AntMarchManager {
private static final Object INSTANCES_LOCK = new Object();
private static final WeakHashMap<ServerLevel, AntMarchManager> INSTANCES = new WeakHashMap<>(); private static final WeakHashMap<ServerLevel, AntMarchManager> INSTANCES = new WeakHashMap<>();
@@ -21,16 +22,18 @@ final class AntMarchManager {
private AntMarchManager() {} private AntMarchManager() {}
static AntMarchManager get(ServerLevel level) { static AntMarchManager get(ServerLevel level) {
return INSTANCES.computeIfAbsent(level, l -> new AntMarchManager()); synchronized (INSTANCES_LOCK) {
return INSTANCES.computeIfAbsent(level, l -> new AntMarchManager());
}
} }
void register(UUID leaderUuid, int marchOrder, BaseAntEntity ant) { synchronized void register(UUID leaderUuid, int marchOrder, BaseAntEntity ant) {
marches.computeIfAbsent(leaderUuid, k -> new TreeMap<>()).put(marchOrder, ant); marches.computeIfAbsent(leaderUuid, k -> new TreeMap<>()).put(marchOrder, ant);
} }
void unregister(UUID leaderUuid, int marchOrder) { synchronized void unregister(UUID leaderUuid, int marchOrder) {
TreeMap<Integer, BaseAntEntity> march = marches.get(leaderUuid); TreeMap<Integer, BaseAntEntity> march = marches.get(leaderUuid);
if (march == null) return; if (march == null) return;
march.remove(marchOrder); march.remove(marchOrder);
@@ -39,25 +42,25 @@ final class AntMarchManager {
@Nullable @Nullable
BaseAntEntity getLeader(UUID leaderUuid) { synchronized BaseAntEntity getLeader(UUID leaderUuid) {
return getByOrder(leaderUuid, 0); return getByOrder(leaderUuid, 0);
} }
@Nullable @Nullable
BaseAntEntity getPredecessor(UUID leaderUuid, int order) { synchronized BaseAntEntity getPredecessor(UUID leaderUuid, int order) {
return order > 0 ? getByOrder(leaderUuid, order - 1) : null; return order > 0 ? getByOrder(leaderUuid, order - 1) : null;
} }
int getNextOrder(UUID leaderUuid) { synchronized int getNextOrder(UUID leaderUuid) {
TreeMap<Integer, BaseAntEntity> march = marches.get(leaderUuid); TreeMap<Integer, BaseAntEntity> march = marches.get(leaderUuid);
if (march == null || march.isEmpty()) return 1; if (march == null || march.isEmpty()) return 1;
return march.lastKey() + 1; return march.lastKey() + 1;
} }
List<BaseAntEntity> getParticipantsNear(BaseAntEntity seeker, double radius, double verticalRange) { synchronized List<BaseAntEntity> getParticipantsNear(BaseAntEntity seeker, double radius, double verticalRange) {
double radiusSqr = radius * radius; double radiusSqr = radius * radius;
List<BaseAntEntity> result = new ArrayList<>(); List<BaseAntEntity> result = new ArrayList<>();
for (TreeMap<Integer, BaseAntEntity> march : marches.values()) { for (TreeMap<Integer, BaseAntEntity> march : marches.values()) {
@@ -76,7 +79,7 @@ final class AntMarchManager {
} }
void cleanup() { synchronized void cleanup() {
Iterator<Map.Entry<UUID, TreeMap<Integer, BaseAntEntity>>> marchIter = marches.entrySet().iterator(); Iterator<Map.Entry<UUID, TreeMap<Integer, BaseAntEntity>>> marchIter = marches.entrySet().iterator();
while (marchIter.hasNext()) { while (marchIter.hasNext()) {
Map.Entry<UUID, TreeMap<Integer, BaseAntEntity>> entry = marchIter.next(); Map.Entry<UUID, TreeMap<Integer, BaseAntEntity>> entry = marchIter.next();
@@ -1,6 +1,7 @@
package com.craisinlord.antarchy.content.entity.ant; package com.craisinlord.antarchy.content.entity.ant;
import com.craisinlord.antarchy.Antarchy; import com.craisinlord.antarchy.Antarchy;
import com.craisinlord.antarchy.content.AntarchyGameRules;
import com.craisinlord.antarchy.content.block.entity.AntNestBlockEntity; import com.craisinlord.antarchy.content.block.entity.AntNestBlockEntity;
import com.craisinlord.antarchy.config.AntarchySettings; import com.craisinlord.antarchy.config.AntarchySettings;
import com.craisinlord.antarchy.content.AntarchySoundEvents; import com.craisinlord.antarchy.content.AntarchySoundEvents;
@@ -47,6 +48,7 @@ import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Items; import net.minecraft.world.item.Items;
import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.item.crafting.Ingredient;
import net.minecraft.world.level.GameRules;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntity;
@@ -474,6 +476,10 @@ public abstract class BaseAntEntity extends Animal implements GeoEntity {
protected boolean canGroupWithNestmates() { return true; } protected boolean canGroupWithNestmates() { return true; }
protected boolean canMarch() { return true; } protected boolean canMarch() { return true; }
protected boolean canTraverseFluidFloor(FluidState fluidState) { return false; } protected boolean canTraverseFluidFloor(FluidState fluidState) { return false; }
protected boolean isAntGriefingEnabled() {
return this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)
&& this.level().getGameRules().getBoolean(AntarchyGameRules.RULE_DO_ANT_GREIFING);
}
protected boolean handlePriorityForaging() { return false; } protected boolean handlePriorityForaging() { return false; }
@@ -606,7 +612,7 @@ public abstract class BaseAntEntity extends Animal implements GeoEntity {
} }
private boolean handleGroundFoodForaging() { private boolean handleGroundFoodForaging() {
if (!this.canForageGroundFood() || this.isCarryingFood() || this.isInLove()) { if (!this.isAntGriefingEnabled() || !this.canForageGroundFood() || this.isCarryingFood() || this.isInLove()) {
return false; return false;
} }
@@ -626,7 +632,7 @@ public abstract class BaseAntEntity extends Animal implements GeoEntity {
} }
private boolean handleChestFoodForaging() { private boolean handleChestFoodForaging() {
if (!AntarchySettings.antsStealFromChests()) { if (!this.isAntGriefingEnabled() || !AntarchySettings.antsStealFromChests()) {
return false; return false;
} }
@@ -647,7 +653,7 @@ public abstract class BaseAntEntity extends Animal implements GeoEntity {
} }
private boolean handleSharedMarchChestForaging() { private boolean handleSharedMarchChestForaging() {
if (this.isCarryingFood() || this.isInLove() || !AntarchySettings.antsStealFromChests()) { if (!this.isAntGriefingEnabled() || this.isCarryingFood() || this.isInLove() || !AntarchySettings.antsStealFromChests()) {
return false; return false;
} }
@@ -669,7 +675,7 @@ public abstract class BaseAntEntity extends Animal implements GeoEntity {
} }
private boolean handleSharedMarchGroundFoodForaging() { private boolean handleSharedMarchGroundFoodForaging() {
if (this.isCarryingFood() || this.isInLove()) { if (!this.isAntGriefingEnabled() || this.isCarryingFood() || this.isInLove()) {
return false; return false;
} }
@@ -1051,7 +1057,8 @@ public abstract class BaseAntEntity extends Animal implements GeoEntity {
} }
private boolean hasForageTarget() { private boolean hasForageTarget() {
return this.nearestGroundFood() != null || this.getCurrentFoodChestPos() != null; return this.isAntGriefingEnabled()
&& (this.nearestGroundFood() != null || this.getCurrentFoodChestPos() != null);
} }
private boolean sharesNestWith(BaseAntEntity otherAnt) { private boolean sharesNestWith(BaseAntEntity otherAnt) {
@@ -2,6 +2,7 @@ package com.craisinlord.antarchy.content.entity.ant;
import com.craisinlord.antarchy.content.AntarchySoundEvents; import com.craisinlord.antarchy.content.AntarchySoundEvents;
import com.craisinlord.antarchy.content.AntarchyTags; import com.craisinlord.antarchy.content.AntarchyTags;
import com.craisinlord.antarchy.content.AntarchyGameRules;
import com.craisinlord.antarchy.config.AntarchySettings; import com.craisinlord.antarchy.config.AntarchySettings;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction; import net.minecraft.core.Direction;
@@ -100,6 +101,11 @@ public class TermiteEntity extends BaseAntEntity implements GeoEntity {
return false; return false;
} }
@Override
protected boolean canMarch() {
return false;
}
@Override @Override
protected boolean shouldUseBiteAnimation() { protected boolean shouldUseBiteAnimation() {
return true; return true;
@@ -107,7 +113,8 @@ public class TermiteEntity extends BaseAntEntity implements GeoEntity {
@Override @Override
protected boolean handlePriorityForaging() { protected boolean handlePriorityForaging() {
if (!this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { if (!this.level().getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)
|| !this.level().getGameRules().getBoolean(AntarchyGameRules.RULE_DO_TERMITE_GREIFING)) {
this.targetWoodPos = null; this.targetWoodPos = null;
return false; return false;
} }
@@ -128,11 +128,11 @@ public class BrutalflyEntity extends Monster implements GeoEntity {
return Mob.createMobAttributes() return Mob.createMobAttributes()
.add(Attributes.MAX_HEALTH, AntarchySettings.brutalflyHealth()) .add(Attributes.MAX_HEALTH, AntarchySettings.brutalflyHealth())
.add(Attributes.ATTACK_DAMAGE, AntarchySettings.brutalflySwipeDamage()) .add(Attributes.ATTACK_DAMAGE, AntarchySettings.brutalflySwipeDamage())
.add(Attributes.ARMOR, 10.0D) .add(Attributes.ARMOR, AntarchySettings.brutalflyArmor())
.add(Attributes.ARMOR_TOUGHNESS, 4.0D) .add(Attributes.ARMOR_TOUGHNESS, AntarchySettings.brutalflyArmorToughness())
.add(Attributes.KNOCKBACK_RESISTANCE, 0.7D) .add(Attributes.KNOCKBACK_RESISTANCE, AntarchySettings.brutalflyKnockbackResistance())
.add(Attributes.MOVEMENT_SPEED, 0.34D) .add(Attributes.MOVEMENT_SPEED, AntarchySettings.brutalflyMovementSpeed())
.add(Attributes.FLYING_SPEED, 0.55D) .add(Attributes.FLYING_SPEED, AntarchySettings.brutalflyFlyingSpeed())
.add(Attributes.FOLLOW_RANGE, 48.0D); .add(Attributes.FOLLOW_RANGE, 48.0D);
} }
@@ -1,5 +1,6 @@
package com.craisinlord.antarchy.content.entity.cloud_shark; package com.craisinlord.antarchy.content.entity.cloud_shark;
import com.craisinlord.antarchy.config.AntarchySettings;
import com.craisinlord.antarchy.content.AntarchySoundEvents; import com.craisinlord.antarchy.content.AntarchySoundEvents;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.core.particles.ParticleTypes; import net.minecraft.core.particles.ParticleTypes;
@@ -102,12 +103,12 @@ public class CloudSharkEntity extends Monster implements GeoEntity {
public static AttributeSupplier.Builder createAttributes() { public static AttributeSupplier.Builder createAttributes() {
return Mob.createMobAttributes() return Mob.createMobAttributes()
.add(Attributes.MAX_HEALTH, 40.0D) .add(Attributes.MAX_HEALTH, AntarchySettings.cloudSharkHealth())
.add(Attributes.ATTACK_DAMAGE, 5.0D) .add(Attributes.ATTACK_DAMAGE, AntarchySettings.cloudSharkAttackDamage())
.add(Attributes.MOVEMENT_SPEED, 0.34D) .add(Attributes.MOVEMENT_SPEED, AntarchySettings.cloudSharkMovementSpeed())
.add(Attributes.FLYING_SPEED, 0.5D) .add(Attributes.FLYING_SPEED, AntarchySettings.cloudSharkFlyingSpeed())
.add(Attributes.FOLLOW_RANGE, 40.0D) .add(Attributes.FOLLOW_RANGE, 40.0D)
.add(Attributes.KNOCKBACK_RESISTANCE, 0.2D); .add(Attributes.KNOCKBACK_RESISTANCE, AntarchySettings.cloudSharkKnockbackResistance());
} }
public static boolean canSpawn(EntityType<CloudSharkEntity> entityType, ServerLevelAccessor level, public static boolean canSpawn(EntityType<CloudSharkEntity> entityType, ServerLevelAccessor level,
@@ -1,6 +1,7 @@
package com.craisinlord.antarchy.content.entity.flying_squirrel; package com.craisinlord.antarchy.content.entity.flying_squirrel;
import com.craisinlord.antarchy.Antarchy; import com.craisinlord.antarchy.Antarchy;
import com.craisinlord.antarchy.config.AntarchySettings;
import com.craisinlord.antarchy.content.AntarchyTags; import com.craisinlord.antarchy.content.AntarchyTags;
import com.craisinlord.antarchy.content.AntarchySoundEvents; import com.craisinlord.antarchy.content.AntarchySoundEvents;
import com.craisinlord.antarchy.content.block.OuranwoodAcornBlock; import com.craisinlord.antarchy.content.block.OuranwoodAcornBlock;
@@ -177,8 +178,8 @@ public class FlyingSquirrelEntity extends TamableAnimal implements GeoEntity {
public static AttributeSupplier.Builder createAttributes() { public static AttributeSupplier.Builder createAttributes() {
return Mob.createMobAttributes() return Mob.createMobAttributes()
.add(Attributes.MAX_HEALTH, 10.0D) .add(Attributes.MAX_HEALTH, AntarchySettings.flyingSquirrelHealth())
.add(Attributes.MOVEMENT_SPEED, 0.35D) .add(Attributes.MOVEMENT_SPEED, AntarchySettings.flyingSquirrelMovementSpeed())
.add(Attributes.FOLLOW_RANGE, 16.0D); .add(Attributes.FOLLOW_RANGE, 16.0D);
} }
@@ -1,6 +1,7 @@
package com.craisinlord.antarchy.content.entity.kraken; package com.craisinlord.antarchy.content.entity.kraken;
import com.craisinlord.antarchy.Antarchy; import com.craisinlord.antarchy.Antarchy;
import com.craisinlord.antarchy.config.AntarchySettings;
import com.craisinlord.antarchy.content.AntarchyObjects; import com.craisinlord.antarchy.content.AntarchyObjects;
import com.craisinlord.antarchy.content.AntarchySoundEvents; import com.craisinlord.antarchy.content.AntarchySoundEvents;
import com.craisinlord.antarchy.content.damage.AntarchyDamageSources; import com.craisinlord.antarchy.content.damage.AntarchyDamageSources;
@@ -144,13 +145,13 @@ public class KrakenEntity extends Monster implements GeoEntity, MultipartEntityO
public static AttributeSupplier.Builder createAttributes() { public static AttributeSupplier.Builder createAttributes() {
return Mob.createMobAttributes() return Mob.createMobAttributes()
.add(Attributes.MAX_HEALTH, 750.0D) .add(Attributes.MAX_HEALTH, AntarchySettings.krakenHealth())
.add(Attributes.ATTACK_DAMAGE, 45.0D) .add(Attributes.ATTACK_DAMAGE, AntarchySettings.krakenAttackDamage())
.add(Attributes.MOVEMENT_SPEED, 0.24D) .add(Attributes.MOVEMENT_SPEED, AntarchySettings.krakenMovementSpeed())
.add(Attributes.FLYING_SPEED, 0.24D) .add(Attributes.FLYING_SPEED, AntarchySettings.krakenFlyingSpeed())
.add(Attributes.FOLLOW_RANGE, 64.0D) .add(Attributes.FOLLOW_RANGE, 64.0D)
.add(Attributes.KNOCKBACK_RESISTANCE, 0.8D) .add(Attributes.KNOCKBACK_RESISTANCE, AntarchySettings.krakenKnockbackResistance())
.add(Attributes.ARMOR, 8.0D); .add(Attributes.ARMOR, AntarchySettings.krakenArmor());
} }
public static boolean canSpawn(EntityType<KrakenEntity> entityType, ServerLevelAccessor level, MobSpawnType spawnReason, BlockPos pos, RandomSource random) { public static boolean canSpawn(EntityType<KrakenEntity> entityType, ServerLevelAccessor level, MobSpawnType spawnReason, BlockPos pos, RandomSource random) {
@@ -97,11 +97,11 @@ public class LucidEntity extends Monster implements GeoEntity {
public static AttributeSupplier.Builder createAttributes() { public static AttributeSupplier.Builder createAttributes() {
return Mob.createMobAttributes() return Mob.createMobAttributes()
.add(Attributes.MAX_HEALTH, AntarchySettings.lucidHealth()) .add(Attributes.MAX_HEALTH, AntarchySettings.lucidHealth())
.add(Attributes.ATTACK_DAMAGE, 4.0D) .add(Attributes.ATTACK_DAMAGE, AntarchySettings.lucidAttackDamage())
.add(Attributes.MOVEMENT_SPEED, 0.22D) .add(Attributes.MOVEMENT_SPEED, AntarchySettings.lucidMovementSpeed())
.add(Attributes.FLYING_SPEED, 0.35D) .add(Attributes.FLYING_SPEED, AntarchySettings.lucidFlyingSpeed())
.add(Attributes.FOLLOW_RANGE, 40.0D) .add(Attributes.FOLLOW_RANGE, 40.0D)
.add(Attributes.KNOCKBACK_RESISTANCE, 0.5D); .add(Attributes.KNOCKBACK_RESISTANCE, AntarchySettings.lucidKnockbackResistance());
} }
public static boolean canSpawn(EntityType<LucidEntity> entityType, ServerLevelAccessor level, public static boolean canSpawn(EntityType<LucidEntity> entityType, ServerLevelAccessor level,
@@ -1,5 +1,6 @@
package com.craisinlord.antarchy.content.entity.nightmare; package com.craisinlord.antarchy.content.entity.nightmare;
import com.craisinlord.antarchy.config.AntarchySettings;
import com.craisinlord.antarchy.content.AntarchyObjects; import com.craisinlord.antarchy.content.AntarchyObjects;
import com.craisinlord.antarchy.content.AntarchySoundEvents; import com.craisinlord.antarchy.content.AntarchySoundEvents;
import com.craisinlord.antarchy.content.AntarchyTags; import com.craisinlord.antarchy.content.AntarchyTags;
@@ -128,9 +129,9 @@ public class NightmareEntity extends Monster implements GeoEntity {
public static AttributeSupplier.Builder createAttributes() { public static AttributeSupplier.Builder createAttributes() {
return Mob.createMobAttributes() return Mob.createMobAttributes()
.add(Attributes.MAX_HEALTH, 180.0D) .add(Attributes.MAX_HEALTH, AntarchySettings.nightmareHealth())
.add(Attributes.ATTACK_DAMAGE, 14.0D) .add(Attributes.ATTACK_DAMAGE, AntarchySettings.nightmareAttackDamage())
.add(Attributes.MOVEMENT_SPEED, 0.28D) .add(Attributes.MOVEMENT_SPEED, AntarchySettings.nightmareMovementSpeed())
.add(Attributes.FLYING_SPEED, 0.375D) .add(Attributes.FLYING_SPEED, 0.375D)
.add(Attributes.FOLLOW_RANGE, 48.0D) .add(Attributes.FOLLOW_RANGE, 48.0D)
.add(Attributes.KNOCKBACK_RESISTANCE, 0.75D) .add(Attributes.KNOCKBACK_RESISTANCE, 0.75D)
@@ -1,6 +1,7 @@
package com.craisinlord.antarchy.content.horde; package com.craisinlord.antarchy.content.horde;
import com.craisinlord.antarchy.Antarchy; import com.craisinlord.antarchy.Antarchy;
import com.craisinlord.antarchy.content.AntarchyGameRules;
import com.craisinlord.antarchy.content.AntarchySoundEvents; import com.craisinlord.antarchy.content.AntarchySoundEvents;
import com.craisinlord.antarchy.content.AntarchyTags; import com.craisinlord.antarchy.content.AntarchyTags;
import com.craisinlord.antarchy.content.entity.JerryEntity; import com.craisinlord.antarchy.content.entity.JerryEntity;
@@ -96,6 +97,10 @@ public final class CavarynHordeManager {
} }
HordeData data = get(level); HordeData data = get(level);
if (!hordesEnabled(level)) {
clearDisabledState(level, data);
return;
}
long gameTime = level.getGameTime(); long gameTime = level.getGameTime();
if (gameTime % PLAYER_CHECK_INTERVAL == 0L) { if (gameTime % PLAYER_CHECK_INTERVAL == 0L) {
tickPlayers(level, data, gameTime); tickPlayers(level, data, gameTime);
@@ -107,10 +112,10 @@ public final class CavarynHordeManager {
} }
public static void recordMobKill(ServerPlayer player, LivingEntity killed) { public static void recordMobKill(ServerPlayer player, LivingEntity killed) {
if (!(player.level() instanceof ServerLevel level) || !level.dimension().equals(CAVARYN)) { if (!(player.level() instanceof ServerLevel level) || !level.dimension().equals(CAVARYN) || !hordesEnabled(level)) {
return; return;
} }
if (!isHordeBiome(level, player.blockPosition())) { if (!isValidHordeTarget(player) || !isHordeBiome(level, player.blockPosition())) {
return; return;
} }
if (isPlayerInActiveEncounter(level, player)) { if (isPlayerInActiveEncounter(level, player)) {
@@ -120,10 +125,10 @@ public final class CavarynHordeManager {
} }
public static void recordBlockBreak(ServerPlayer player, BlockState brokenState, BlockPos pos) { public static void recordBlockBreak(ServerPlayer player, BlockState brokenState, BlockPos pos) {
if (!(player.level() instanceof ServerLevel level) || !level.dimension().equals(CAVARYN)) { if (!(player.level() instanceof ServerLevel level) || !level.dimension().equals(CAVARYN) || !hordesEnabled(level)) {
return; return;
} }
if (!isHordeBiome(level, pos) || isPlayerInActiveEncounter(level, player)) { if (!isValidHordeTarget(player) || !isHordeBiome(level, pos) || isPlayerInActiveEncounter(level, player)) {
return; return;
} }
addAttention(level, player, scaleActionAttention(level, isEggOrNest(brokenState) ? EGG_OR_NEST_BREAK_ATTENTION : BLOCK_BREAK_ATTENTION)); addAttention(level, player, scaleActionAttention(level, isEggOrNest(brokenState) ? EGG_OR_NEST_BREAK_ATTENTION : BLOCK_BREAK_ATTENTION));
@@ -147,7 +152,7 @@ public final class CavarynHordeManager {
} }
public static boolean shouldAccelerateNearbyEggHatching(ServerLevel level, BlockPos pos, double playerRadius, RandomSource random) { public static boolean shouldAccelerateNearbyEggHatching(ServerLevel level, BlockPos pos, double playerRadius, RandomSource random) {
if (!level.dimension().equals(CAVARYN) || !isHordeBiome(level, pos)) { if (!level.dimension().equals(CAVARYN) || !hordesEnabled(level) || !isHordeBiome(level, pos)) {
return false; return false;
} }
@@ -178,10 +183,18 @@ public final class CavarynHordeManager {
if (!(player.level() instanceof ServerLevel level) || !level.dimension().equals(CAVARYN)) { if (!(player.level() instanceof ServerLevel level) || !level.dimension().equals(CAVARYN)) {
return -1; return -1;
} }
if (!isValidHordeTarget(player)) {
return -1;
}
HordeData data = get(level); HordeData data = get(level);
PlayerAttention attention = data.players.computeIfAbsent(player.getUUID(), ignored -> new PlayerAttention()); PlayerAttention attention = data.players.computeIfAbsent(player.getUUID(), ignored -> new PlayerAttention());
attention.attention = Mth.clamp(levelValue, 0, ATTENTION_THRESHOLD); int currentAttention = attention.attention;
int clampedLevel = Mth.clamp(levelValue, 0, ATTENTION_THRESHOLD);
if (!hordesEnabled(level) && clampedLevel > currentAttention) {
return currentAttention;
}
attention.attention = clampedLevel;
attention.areaKey = areaKey(player.blockPosition()); attention.areaKey = areaKey(player.blockPosition());
attention.areaTicks = 0; attention.areaTicks = 0;
attention.lastSeenGameTime = level.getGameTime(); attention.lastSeenGameTime = level.getGameTime();
@@ -196,7 +209,13 @@ public final class CavarynHordeManager {
private static void tickPlayers(ServerLevel level, HordeData data, long gameTime) { private static void tickPlayers(ServerLevel level, HordeData data, long gameTime) {
Set<UUID> seen = new HashSet<>(); Set<UUID> seen = new HashSet<>();
for (ServerPlayer player : level.players()) { for (ServerPlayer player : level.players()) {
if (player.isSpectator()) { if (player.isSpectator() || player.isCreative()) {
HordeIntensitySync.send(player, 0.0F);
PlayerAttention attention = data.players.get(player.getUUID());
if (attention != null && attention.attention > 0) {
attention.fade(10);
data.setDirty();
}
continue; continue;
} }
@@ -612,6 +631,24 @@ public final class CavarynHordeManager {
} }
} }
private static boolean hordesEnabled(ServerLevel level) {
return level.getGameRules().getBoolean(AntarchyGameRules.RULE_DO_CAVARYN_HORDES);
}
private static void clearDisabledState(ServerLevel level, HordeData data) {
boolean dirty = false;
if (!data.encounters.isEmpty()) {
data.encounters.clear();
dirty = true;
}
for (ServerPlayer player : level.players()) {
HordeIntensitySync.send(player, 0.0F);
}
if (dirty) {
data.setDirty();
}
}
private static boolean isPlayerInActiveEncounter(ServerLevel level, ServerPlayer player) { private static boolean isPlayerInActiveEncounter(ServerLevel level, ServerPlayer player) {
HordeData data = get(level); HordeData data = get(level);
Encounter encounter = findNearbyEncounter(data, player.blockPosition()); Encounter encounter = findNearbyEncounter(data, player.blockPosition());
@@ -0,0 +1,63 @@
package com.craisinlord.antarchy.content.item;
import com.craisinlord.antarchy.content.block.BluestoneWireBlock;
import java.util.List;
import net.minecraft.ChatFormatting;
import net.minecraft.core.BlockPos;
import net.minecraft.network.chat.Component;
import net.minecraft.sounds.SoundSource;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.TooltipFlag;
import net.minecraft.world.item.context.BlockPlaceContext;
import net.minecraft.world.item.context.UseOnContext;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.SoundType;
import net.minecraft.world.level.block.state.BlockState;
public class BluestoneDustItem extends Item {
private final BluestoneWireBlock wireBlock;
public BluestoneDustItem(BluestoneWireBlock wireBlock, Properties properties) {
super(properties);
this.wireBlock = wireBlock;
}
@Override
public void appendHoverText(ItemStack stack, Item.TooltipContext context, List<Component> tooltipComponents, TooltipFlag tooltipFlag) {
tooltipComponents.add(Component.translatable("tooltip.antarchy.bluestone_placement").withStyle(ChatFormatting.BLUE));
super.appendHoverText(stack, context, tooltipComponents, tooltipFlag);
}
@Override
public InteractionResult useOn(UseOnContext context) {
if (context.getClickedFace() != net.minecraft.core.Direction.DOWN) {
return InteractionResult.FAIL;
}
Level level = context.getLevel();
BlockPos targetPos = context.getClickedPos().relative(context.getClickedFace());
BlockState existing = level.getBlockState(targetPos);
if (!existing.canBeReplaced() && !existing.isAir()) {
return InteractionResult.FAIL;
}
BlockPlaceContext placeContext = BlockPlaceContext.at(new BlockPlaceContext(context), targetPos, context.getClickedFace());
BlockState placeState = this.wireBlock.getStateForPlacement(placeContext);
if (placeState == null) {
return InteractionResult.FAIL;
}
if (!level.setBlock(targetPos, placeState, 11)) {
return InteractionResult.FAIL;
}
SoundType soundType = placeState.getSoundType();
level.playSound(context.getPlayer(), targetPos, soundType.getPlaceSound(), SoundSource.BLOCKS, (soundType.getVolume() + 1.0F) / 2.0F, soundType.getPitch() * 0.8F);
if (context.getPlayer() == null || !context.getPlayer().getAbilities().instabuild) {
context.getItemInHand().shrink(1);
}
return InteractionResult.sidedSuccess(level.isClientSide);
}
}
@@ -0,0 +1,22 @@
package com.craisinlord.antarchy.content.item;
import java.util.List;
import net.minecraft.ChatFormatting;
import net.minecraft.network.chat.Component;
import net.minecraft.world.item.BlockItem;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.TooltipFlag;
import net.minecraft.world.level.block.Block;
public class CeilingPlacementTooltipBlockItem extends BlockItem {
public CeilingPlacementTooltipBlockItem(Block block, Properties properties) {
super(block, properties);
}
@Override
public void appendHoverText(ItemStack stack, Item.TooltipContext context, List<Component> tooltipComponents, TooltipFlag tooltipFlag) {
tooltipComponents.add(Component.translatable("tooltip.antarchy.bluestone_placement").withStyle(ChatFormatting.BLUE));
super.appendHoverText(stack, context, tooltipComponents, tooltipFlag);
}
}
@@ -0,0 +1,20 @@
package com.craisinlord.antarchy.content.item;
import java.util.List;
import net.minecraft.ChatFormatting;
import net.minecraft.network.chat.Component;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.TooltipFlag;
public class CeilingPlacementTooltipItem extends Item {
public CeilingPlacementTooltipItem(Properties properties) {
super(properties);
}
@Override
public void appendHoverText(ItemStack stack, Item.TooltipContext context, List<Component> tooltipComponents, TooltipFlag tooltipFlag) {
tooltipComponents.add(Component.translatable("tooltip.antarchy.bluestone_placement").withStyle(ChatFormatting.BLUE));
super.appendHoverText(stack, context, tooltipComponents, tooltipFlag);
}
}
@@ -0,0 +1,69 @@
package com.craisinlord.antarchy.content.item;
import java.util.Map;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.world.item.BlockItem;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.context.BlockPlaceContext;
import net.minecraft.world.level.LevelReader;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.state.BlockState;
public class DreamTorchItem extends BlockItem {
private final Block standingBlock;
private final Block wallBlock;
private final Block ceilingBlock;
public DreamTorchItem(Block standingBlock, Block wallBlock, Block ceilingBlock, Item.Properties properties) {
super(standingBlock, properties);
this.standingBlock = standingBlock;
this.wallBlock = wallBlock;
this.ceilingBlock = ceilingBlock;
}
@Override
protected BlockState getPlacementState(BlockPlaceContext context) {
Direction clickedFace = context.getClickedFace();
LevelReader level = context.getLevel();
BlockPos pos = context.getClickedPos();
if (clickedFace == Direction.DOWN) {
BlockState ceilingState = this.ceilingBlock.defaultBlockState();
if (ceilingState.canSurvive(level, pos)) {
return ceilingState;
}
}
if (clickedFace == Direction.UP) {
BlockState standingState = this.standingBlock.defaultBlockState();
if (standingState.canSurvive(level, pos)) {
return standingState;
}
}
BlockState wallState = this.wallBlock.getStateForPlacement(context);
if (wallState != null && wallState.canSurvive(level, pos)) {
return wallState;
}
BlockState standingState = this.standingBlock.defaultBlockState();
if (standingState.canSurvive(level, pos)) {
return standingState;
}
BlockState ceilingState = this.ceilingBlock.defaultBlockState();
if (ceilingState.canSurvive(level, pos)) {
return ceilingState;
}
return null;
}
@Override
public void registerBlocks(Map<Block, Item> blockToItemMap, Item item) {
super.registerBlocks(blockToItemMap, item);
blockToItemMap.put(this.wallBlock, item);
blockToItemMap.put(this.ceilingBlock, item);
}
}
@@ -9,13 +9,19 @@ import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.SwordItem; import net.minecraft.world.item.SwordItem;
import net.minecraft.world.item.Tier; import net.minecraft.world.item.Tier;
import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.item.TooltipFlag;
import net.minecraft.world.item.component.ItemAttributeModifiers;
public class MantisClawItem extends SwordItem { public class MantisClawItem extends SwordItem {
public static final double WALL_CLING_FALL_SPEED = -0.02D; public static final double WALL_CLING_FALL_SPEED = -0.02D;
public static final double WALL_CLIMB_JUMP_VELOCITY = 0.42D; public static final double WALL_CLIMB_JUMP_VELOCITY = 0.42D;
private static final int DEFAULT_ATTACK_DAMAGE = 7;
private static final float DEFAULT_ATTACK_SPEED = -2.4F;
private final Tier tier;
public MantisClawItem(Tier tier, Item.Properties properties) { public MantisClawItem(Tier tier, Item.Properties properties) {
super(tier, properties); super(tier, properties);
this.tier = tier;
} }
public static boolean isDualWielding(LivingEntity entity) { public static boolean isDualWielding(LivingEntity entity) {
@@ -23,6 +29,11 @@ public class MantisClawItem extends SwordItem {
&& entity.getOffhandItem().getItem() instanceof MantisClawItem; && entity.getOffhandItem().getItem() instanceof MantisClawItem;
} }
@Override
public ItemAttributeModifiers getDefaultAttributeModifiers() {
return SwordItem.createAttributes(this.tier, DEFAULT_ATTACK_DAMAGE, DEFAULT_ATTACK_SPEED);
}
@Override @Override
public void appendHoverText(ItemStack stack, Item.TooltipContext context, List<Component> tooltipComponents, TooltipFlag tooltipFlag) { public void appendHoverText(ItemStack stack, Item.TooltipContext context, List<Component> tooltipComponents, TooltipFlag tooltipFlag) {
tooltipComponents.add(Component.translatable("tooltip.antarchy.mantis_claw.wall_cling").withStyle(ChatFormatting.GRAY)); tooltipComponents.add(Component.translatable("tooltip.antarchy.mantis_claw.wall_cling").withStyle(ChatFormatting.GRAY));
@@ -0,0 +1,19 @@
package com.craisinlord.antarchy.content.network;
import com.craisinlord.antarchy.Antarchy;
import io.netty.buffer.ByteBuf;
import net.minecraft.network.codec.StreamCodec;
import net.minecraft.network.protocol.common.custom.CustomPacketPayload;
import net.minecraft.resources.ResourceLocation;
public record HerculesBeetleFlightTogglePayload() implements CustomPacketPayload {
public static final Type<HerculesBeetleFlightTogglePayload> TYPE =
new Type<>(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "hercules_beetle_flight_toggle"));
public static final StreamCodec<ByteBuf, HerculesBeetleFlightTogglePayload> STREAM_CODEC =
StreamCodec.unit(new HerculesBeetleFlightTogglePayload());
@Override
public Type<HerculesBeetleFlightTogglePayload> type() {
return TYPE;
}
}
@@ -1,4 +1,4 @@
package com.craisinlord.antarchy.content; package com.craisinlord.antarchy.content.util;
import com.craisinlord.antarchy.mixins.AccessorRangedAttribute; import com.craisinlord.antarchy.mixins.AccessorRangedAttribute;
import com.google.common.collect.ImmutableSet; import com.google.common.collect.ImmutableSet;
@@ -1,10 +1,14 @@
package com.craisinlord.antarchy.mixins; package com.craisinlord.antarchy.mixins;
import com.craisinlord.antarchy.content.item.MantisClawItem; import com.craisinlord.antarchy.content.item.MantisClawItem;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundEvents;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.EquipmentSlot;
import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.player.Player; import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import net.minecraft.world.phys.Vec3; import net.minecraft.world.phys.Vec3;
import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mixin;
@@ -15,10 +19,14 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@Mixin(Player.class) @Mixin(Player.class)
public abstract class MantisClawWallClimbMixin extends LivingEntity { public abstract class MantisClawWallClimbMixin extends LivingEntity {
@Unique
private static final int antarchy$MANTIS_CLAW_CLIMB_DURABILITY_INTERVAL = 20;
@Unique @Unique
private boolean antarchy$mantisClinging; private boolean antarchy$mantisClinging;
@Unique @Unique
private int antarchy$mantisWallJumpCooldown; private int antarchy$mantisWallJumpCooldown;
@Unique
private int antarchy$mantisClingDurabilityTicks;
protected MantisClawWallClimbMixin(EntityType<? extends LivingEntity> entityType, Level level) { protected MantisClawWallClimbMixin(EntityType<? extends LivingEntity> entityType, Level level) {
super(entityType, level); super(entityType, level);
@@ -32,6 +40,7 @@ public abstract class MantisClawWallClimbMixin extends LivingEntity {
if (!this.antarchy$canMantisCling()) { if (!this.antarchy$canMantisCling()) {
this.antarchy$mantisClinging = false; this.antarchy$mantisClinging = false;
this.antarchy$mantisClingDurabilityTicks = 0;
return; return;
} }
@@ -54,6 +63,7 @@ public abstract class MantisClawWallClimbMixin extends LivingEntity {
this.hasImpulse = true; this.hasImpulse = true;
this.fallDistance = 0.0F; this.fallDistance = 0.0F;
this.antarchy$mantisClinging = true; this.antarchy$mantisClinging = true;
this.antarchy$damageMantisClawsWhileClimbing();
} }
@Unique @Unique
@@ -68,4 +78,47 @@ public abstract class MantisClawWallClimbMixin extends LivingEntity {
&& !player.getAbilities().flying && !player.getAbilities().flying
&& !player.isSpectator(); && !player.isSpectator();
} }
@Unique
private void antarchy$damageMantisClawsWhileClimbing() {
if (this.level().isClientSide()) {
return;
}
this.antarchy$mantisClingDurabilityTicks++;
if (this.antarchy$mantisClingDurabilityTicks < antarchy$MANTIS_CLAW_CLIMB_DURABILITY_INTERVAL) {
return;
}
this.antarchy$mantisClingDurabilityTicks = 0;
Player player = (Player) (Object) this;
this.antarchy$damageClaw(player.getMainHandItem(), player, InteractionHand.MAIN_HAND);
this.antarchy$damageClaw(player.getOffhandItem(), player, InteractionHand.OFF_HAND);
}
@Unique
private void antarchy$damageClaw(ItemStack stack, Player player, InteractionHand hand) {
if (!(stack.getItem() instanceof MantisClawItem)) {
return;
}
EquipmentSlot slot = hand == InteractionHand.MAIN_HAND ? EquipmentSlot.MAINHAND : EquipmentSlot.OFFHAND;
if (!stack.isDamageableItem()) {
return;
}
ItemStack updatedStack = stack.copy();
int nextDamage = updatedStack.getDamageValue() + 1;
if (nextDamage < updatedStack.getMaxDamage()) {
updatedStack.setDamageValue(nextDamage);
player.setItemSlot(slot, updatedStack);
} else {
player.setItemSlot(slot, ItemStack.EMPTY);
player.onEquippedItemBroken(updatedStack.getItem(), slot);
}
if (player instanceof ServerPlayer serverPlayer) {
serverPlayer.containerMenu.broadcastChanges();
}
}
} }
@@ -0,0 +1,27 @@
package com.craisinlord.antarchy.mixins;
import com.craisinlord.antarchy.content.AntarchyTags;
import net.minecraft.core.Direction;
import net.minecraft.world.level.block.RedStoneWireBlock;
import net.minecraft.world.level.block.state.BlockState;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
@Mixin(RedStoneWireBlock.class)
public class RedStoneWireBlockMixin {
@Inject(method = "shouldConnectTo(Lnet/minecraft/world/level/block/state/BlockState;)Z", at = @At("HEAD"), cancellable = true)
private static void antarchy$rejectBluestone(BlockState state, CallbackInfoReturnable<Boolean> cir) {
if (state.is(AntarchyTags.Blocks.BLUESTONE_COMPONENTS)) {
cir.setReturnValue(false);
}
}
@Inject(method = "shouldConnectTo(Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/core/Direction;)Z", at = @At("HEAD"), cancellable = true)
private static void antarchy$rejectBluestone(BlockState state, Direction direction, CallbackInfoReturnable<Boolean> cir) {
if (state.is(AntarchyTags.Blocks.BLUESTONE_COMPONENTS)) {
cir.setReturnValue(false);
}
}
}
@@ -26,6 +26,7 @@
"ExperimentalSettingsLevelSummaryMixin", "ExperimentalSettingsLevelSummaryMixin",
"NightmareSwordDamageMixin", "NightmareSwordDamageMixin",
"PotionBrewingMixin", "PotionBrewingMixin",
"RedStoneWireBlockMixin",
"StinkyCrouchMixin", "StinkyCrouchMixin",
"VillagerTradesMixin", "VillagerTradesMixin",
"WaterlilyLumenMixin", "WaterlilyLumenMixin",
@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "antarchy:block/bluestone_block"
}
}
}
@@ -0,0 +1,176 @@
{
"multipart": [
{
"when": {
"facing": "north",
"mode": "compare",
"powered": "false"
},
"apply": {
"model": "antarchy:block/bluestone_comparator"
}
},
{
"when": {
"facing": "east",
"mode": "compare",
"powered": "false"
},
"apply": {
"model": "antarchy:block/bluestone_comparator",
"y": 90
}
},
{
"when": {
"facing": "south",
"mode": "compare",
"powered": "false"
},
"apply": {
"model": "antarchy:block/bluestone_comparator",
"y": 180
}
},
{
"when": {
"facing": "west",
"mode": "compare",
"powered": "false"
},
"apply": {
"model": "antarchy:block/bluestone_comparator",
"y": 270
}
},
{
"when": {
"facing": "north",
"mode": "compare",
"powered": "true"
},
"apply": {
"model": "antarchy:block/bluestone_comparator_on"
}
},
{
"when": {
"facing": "east",
"mode": "compare",
"powered": "true"
},
"apply": {
"model": "antarchy:block/bluestone_comparator_on",
"y": 90
}
},
{
"when": {
"facing": "south",
"mode": "compare",
"powered": "true"
},
"apply": {
"model": "antarchy:block/bluestone_comparator_on",
"y": 180
}
},
{
"when": {
"facing": "west",
"mode": "compare",
"powered": "true"
},
"apply": {
"model": "antarchy:block/bluestone_comparator_on",
"y": 270
}
},
{
"when": {
"facing": "north",
"mode": "subtract",
"powered": "false"
},
"apply": {
"model": "antarchy:block/bluestone_comparator_subtract"
}
},
{
"when": {
"facing": "east",
"mode": "subtract",
"powered": "false"
},
"apply": {
"model": "antarchy:block/bluestone_comparator_subtract",
"y": 90
}
},
{
"when": {
"facing": "south",
"mode": "subtract",
"powered": "false"
},
"apply": {
"model": "antarchy:block/bluestone_comparator_subtract",
"y": 180
}
},
{
"when": {
"facing": "west",
"mode": "subtract",
"powered": "false"
},
"apply": {
"model": "antarchy:block/bluestone_comparator_subtract",
"y": 270
}
},
{
"when": {
"facing": "north",
"mode": "subtract",
"powered": "true"
},
"apply": {
"model": "antarchy:block/bluestone_comparator_subtract_on"
}
},
{
"when": {
"facing": "east",
"mode": "subtract",
"powered": "true"
},
"apply": {
"model": "antarchy:block/bluestone_comparator_subtract_on",
"y": 90
}
},
{
"when": {
"facing": "south",
"mode": "subtract",
"powered": "true"
},
"apply": {
"model": "antarchy:block/bluestone_comparator_subtract_on",
"y": 180
}
},
{
"when": {
"facing": "west",
"mode": "subtract",
"powered": "true"
},
"apply": {
"model": "antarchy:block/bluestone_comparator_subtract_on",
"y": 270
}
}
]
}
@@ -0,0 +1,10 @@
{
"variants": {
"lit=false": {
"model": "antarchy:block/bluestone_ore"
},
"lit=true": {
"model": "antarchy:block/bluestone_ore"
}
}
}
@@ -0,0 +1,82 @@
{
"multipart": [
{
"when": {
"facing": "north",
"powered": "false"
},
"apply": {
"model": "antarchy:block/bluestone_repeater"
}
},
{
"when": {
"facing": "east",
"powered": "false"
},
"apply": {
"model": "antarchy:block/bluestone_repeater",
"y": 90
}
},
{
"when": {
"facing": "south",
"powered": "false"
},
"apply": {
"model": "antarchy:block/bluestone_repeater",
"y": 180
}
},
{
"when": {
"facing": "west",
"powered": "false"
},
"apply": {
"model": "antarchy:block/bluestone_repeater",
"y": 270
}
},
{
"when": {
"facing": "north",
"powered": "true"
},
"apply": {
"model": "antarchy:block/bluestone_repeater_on"
}
},
{
"when": {
"facing": "east",
"powered": "true"
},
"apply": {
"model": "antarchy:block/bluestone_repeater_on",
"y": 90
}
},
{
"when": {
"facing": "south",
"powered": "true"
},
"apply": {
"model": "antarchy:block/bluestone_repeater_on",
"y": 180
}
},
{
"when": {
"facing": "west",
"powered": "true"
},
"apply": {
"model": "antarchy:block/bluestone_repeater_on",
"y": 270
}
}
]
}
@@ -0,0 +1,10 @@
{
"variants": {
"lit=false": {
"model": "antarchy:block/bluestone_torch_off"
},
"lit=true": {
"model": "antarchy:block/bluestone_torch"
}
}
}
@@ -0,0 +1,48 @@
{
"multipart": [
{
"apply": {
"model": "antarchy:block/bluestone_wire_dot",
"x": 180
}
},
{
"when": {
"north": "side|down"
},
"apply": {
"model": "antarchy:block/bluestone_wire_line0",
"x": 180
}
},
{
"when": {
"east": "side|down"
},
"apply": {
"model": "antarchy:block/bluestone_wire_line1",
"x": 180
}
},
{
"when": {
"south": "side|down"
},
"apply": {
"model": "antarchy:block/bluestone_wire_line0",
"x": 180,
"y": 180
}
},
{
"when": {
"west": "side|down"
},
"apply": {
"model": "antarchy:block/bluestone_wire_line1",
"x": 180,
"y": 180
}
}
]
}
@@ -0,0 +1,8 @@
{
"variants": {
"": {
"model": "antarchy:block/dream_torch",
"x": 180
}
}
}
@@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "antarchy:item/bluestone"
}
}
@@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "antarchy:item/bluestone_block"
}
}
@@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "antarchy:item/bluestone_comparator"
}
}
@@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "antarchy:item/bluestone_ore"
}
}
@@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "antarchy:item/bluestone_repeater"
}
}
@@ -0,0 +1,6 @@
{
"model": {
"type": "minecraft:model",
"model": "antarchy:item/bluestone_torch"
}
}
@@ -131,6 +131,11 @@
"block.antarchy.deepslate_uranium_ore": "Deepslate Uranium Ore", "block.antarchy.deepslate_uranium_ore": "Deepslate Uranium Ore",
"block.antarchy.titanium_ore": "Titanium Ore", "block.antarchy.titanium_ore": "Titanium Ore",
"block.antarchy.deepslate_titanium_ore": "Deepslate Titanium Ore", "block.antarchy.deepslate_titanium_ore": "Deepslate Titanium Ore",
"block.antarchy.bluestone_ore": "Bluestone Ore",
"block.antarchy.bluestone_block": "Bluestone Block",
"block.antarchy.bluestone_repeater": "Bluestone Repeater",
"block.antarchy.bluestone_comparator": "Bluestone Comparator",
"block.antarchy.bluestone_torch": "Bluestone Torch",
"block.antarchy.uranium_block": "Block of Uranium", "block.antarchy.uranium_block": "Block of Uranium",
"block.antarchy.titanium_block": "Block of Titanium", "block.antarchy.titanium_block": "Block of Titanium",
"block.antarchy.raw_uranium_block": "Block of Raw Uranium", "block.antarchy.raw_uranium_block": "Block of Raw Uranium",
@@ -152,6 +157,7 @@
"block.antarchy.uranium_bars": "Uranium Bars", "block.antarchy.uranium_bars": "Uranium Bars",
"block.antarchy.titanium_bars": "Titanium Bars", "block.antarchy.titanium_bars": "Titanium Bars",
"tooltip.antarchy.signal_saving_bulb": "Toggles on/off. Has light level equal to the signal strength stored on it.", "tooltip.antarchy.signal_saving_bulb": "Toggles on/off. Has light level equal to the signal strength stored on it.",
"tooltip.antarchy.bluestone_placement": "Places below blocks",
"block.antarchy.bile": "Bile", "block.antarchy.bile": "Bile",
"block.antarchy.ichor": "Ichor", "block.antarchy.ichor": "Ichor",
"block.antarchy.antiwater": "Antiwater", "block.antarchy.antiwater": "Antiwater",
@@ -201,6 +207,7 @@
"subtitles.antarchy.mantis_attack": "Mantis snaps", "subtitles.antarchy.mantis_attack": "Mantis snaps",
"subtitles.antarchy.mantis_fly_loop": "Mantis wings buzz", "subtitles.antarchy.mantis_fly_loop": "Mantis wings buzz",
"item.antarchy.big_bertha": "Big Bertha", "item.antarchy.big_bertha": "Big Bertha",
"item.antarchy.bluestone": "Bluestone Dust",
"item.antarchy.wasp_nest": "Wasp Nest", "item.antarchy.wasp_nest": "Wasp Nest",
"item.antarchy.stink_bug": "Stink Bug", "item.antarchy.stink_bug": "Stink Bug",
"item.antarchy.wasp_spawn_egg": "Wasp Spawn Egg", "item.antarchy.wasp_spawn_egg": "Wasp Spawn Egg",
@@ -356,6 +363,7 @@
"tooltip.antarchy.jerry_nucleus.hatch": "Right-click any bug egg or turtle egg to hatch it instantly.", "tooltip.antarchy.jerry_nucleus.hatch": "Right-click any bug egg or turtle egg to hatch it instantly.",
"key.antarchy.dorrie_charge_jump": "Dorrie Charge Jump", "key.antarchy.dorrie_charge_jump": "Dorrie Charge Jump",
"key.antarchy.hercules_beetle_charge": "Hercules Beetle Charge", "key.antarchy.hercules_beetle_charge": "Hercules Beetle Charge",
"key.antarchy.hercules_beetle_flight_toggle": "Hercules Beetle Flight Toggle",
"item.antarchy.carapace": "Carapace", "item.antarchy.carapace": "Carapace",
"item.antarchy.jumpy_bug_leg": "Jumpy Bug Leg", "item.antarchy.jumpy_bug_leg": "Jumpy Bug Leg",
"item.antarchy.jumpy_boots": "Jumpy Boots", "item.antarchy.jumpy_boots": "Jumpy Boots",
@@ -0,0 +1,6 @@
{
"parent": "minecraft:block/cube_all",
"textures": {
"all": "antarchy:block/bluestone/bluestone_block"
}
}
@@ -0,0 +1,57 @@
{
"ambientocclusion": false,
"textures": {
"particle": "antarchy:block/bluestone/bluestone_comparator",
"slab": "minecraft:block/smooth_stone",
"top": "antarchy:block/bluestone/bluestone_comparator",
"unlit": "antarchy:block/bluestone/bluestone_torch_off",
"lit": "antarchy:block/bluestone/bluestone_torch"
},
"elements": [
{
"from": [0, 14, 0],
"to": [16, 16, 16],
"faces": {
"down": { "uv": [0, 0, 16, 16], "texture": "#top", "cullface": "down" },
"up": { "uv": [0, 0, 16, 16], "texture": "#slab", "cullface": "up" },
"north": { "uv": [0, 14, 16, 16], "texture": "#slab", "cullface": "north" },
"south": { "uv": [0, 14, 16, 16], "texture": "#slab", "cullface": "south" },
"west": { "uv": [0, 14, 16, 16], "texture": "#slab", "cullface": "west" },
"east": { "uv": [0, 14, 16, 16], "texture": "#slab", "cullface": "east" }
}
},
{
"from": [4, 9, 11],
"to": [6, 14, 13],
"faces": {
"down": { "uv": [7, 6, 9, 8], "texture": "#unlit" },
"north": { "uv": [7, 6, 9, 11], "texture": "#unlit" },
"south": { "uv": [7, 6, 9, 11], "texture": "#unlit" },
"west": { "uv": [7, 6, 9, 11], "texture": "#unlit" },
"east": { "uv": [7, 6, 9, 11], "texture": "#unlit" }
}
},
{
"from": [10, 9, 11],
"to": [12, 14, 13],
"faces": {
"down": { "uv": [7, 6, 9, 8], "texture": "#unlit" },
"north": { "uv": [7, 6, 9, 11], "texture": "#unlit" },
"south": { "uv": [7, 6, 9, 11], "texture": "#unlit" },
"west": { "uv": [7, 6, 9, 11], "texture": "#unlit" },
"east": { "uv": [7, 6, 9, 11], "texture": "#unlit" }
}
},
{
"from": [7, 11, 2],
"to": [9, 14, 4],
"faces": {
"down": { "uv": [7, 6, 9, 8], "texture": "#unlit" },
"north": { "uv": [7, 6, 9, 9], "texture": "#unlit" },
"south": { "uv": [7, 6, 9, 9], "texture": "#unlit" },
"west": { "uv": [7, 6, 9, 9], "texture": "#unlit" },
"east": { "uv": [7, 6, 9, 9], "texture": "#unlit" }
}
}
]
}
@@ -0,0 +1,60 @@
{
"ambientocclusion": false,
"textures": {
"particle": "antarchy:block/bluestone/bluestone_comparator_on",
"slab": "minecraft:block/smooth_stone",
"top": "antarchy:block/bluestone/bluestone_comparator_on",
"unlit": "antarchy:block/bluestone/bluestone_torch_off",
"lit": "antarchy:block/bluestone/bluestone_torch"
},
"elements": [
{
"from": [0, 14, 0],
"to": [16, 16, 16],
"faces": {
"down": { "uv": [0, 0, 16, 16], "texture": "#top", "cullface": "down" },
"up": { "uv": [0, 0, 16, 16], "texture": "#slab", "cullface": "up" },
"north": { "uv": [0, 14, 16, 16], "texture": "#slab", "cullface": "north" },
"south": { "uv": [0, 14, 16, 16], "texture": "#slab", "cullface": "south" },
"west": { "uv": [0, 14, 16, 16], "texture": "#slab", "cullface": "west" },
"east": { "uv": [0, 14, 16, 16], "texture": "#slab", "cullface": "east" }
}
},
{
"from": [4, 9, 11],
"to": [6, 14, 13],
"shade": false,
"faces": {
"down": { "uv": [7, 6, 9, 8], "texture": "#lit" },
"north": { "uv": [7, 6, 9, 11], "texture": "#lit" },
"south": { "uv": [7, 6, 9, 11], "texture": "#lit" },
"west": { "uv": [7, 6, 9, 11], "texture": "#lit" },
"east": { "uv": [7, 6, 9, 11], "texture": "#lit" }
}
},
{
"from": [10, 9, 11],
"to": [12, 14, 13],
"shade": false,
"faces": {
"down": { "uv": [7, 6, 9, 8], "texture": "#lit" },
"north": { "uv": [7, 6, 9, 11], "texture": "#lit" },
"south": { "uv": [7, 6, 9, 11], "texture": "#lit" },
"west": { "uv": [7, 6, 9, 11], "texture": "#lit" },
"east": { "uv": [7, 6, 9, 11], "texture": "#lit" }
}
},
{
"from": [7, 11, 2],
"to": [9, 14, 4],
"shade": false,
"faces": {
"down": { "uv": [7, 6, 9, 8], "texture": "#unlit" },
"north": { "uv": [7, 6, 9, 9], "texture": "#unlit" },
"south": { "uv": [7, 6, 9, 9], "texture": "#unlit" },
"west": { "uv": [7, 6, 9, 9], "texture": "#unlit" },
"east": { "uv": [7, 6, 9, 9], "texture": "#unlit" }
}
}
]
}
@@ -0,0 +1,3 @@
{
"parent": "antarchy:block/bluestone_comparator"
}
@@ -0,0 +1,3 @@
{
"parent": "antarchy:block/bluestone_comparator_on"
}
@@ -0,0 +1,6 @@
{
"parent": "minecraft:block/cube_all",
"textures": {
"all": "antarchy:block/bluestone/bluestone_ore"
}
}
@@ -0,0 +1,46 @@
{
"ambientocclusion": false,
"textures": {
"particle": "antarchy:block/bluestone/bluestone_repeater",
"slab": "minecraft:block/smooth_stone",
"top": "antarchy:block/bluestone/bluestone_repeater",
"unlit": "antarchy:block/bluestone/bluestone_torch_off",
"lit": "antarchy:block/bluestone/bluestone_torch"
},
"elements": [
{
"from": [0, 14, 0],
"to": [16, 16, 16],
"faces": {
"down": { "uv": [0, 0, 16, 16], "texture": "#top", "cullface": "down" },
"up": { "uv": [0, 0, 16, 16], "texture": "#slab", "cullface": "up" },
"north": { "uv": [0, 14, 16, 16], "texture": "#slab", "cullface": "north" },
"south": { "uv": [0, 14, 16, 16], "texture": "#slab", "cullface": "south" },
"west": { "uv": [0, 14, 16, 16], "texture": "#slab", "cullface": "west" },
"east": { "uv": [0, 14, 16, 16], "texture": "#slab", "cullface": "east" }
}
},
{
"from": [7, 9, 11],
"to": [9, 14, 13],
"faces": {
"down": { "uv": [7, 6, 9, 8], "texture": "#unlit" },
"north": { "uv": [7, 6, 9, 11], "texture": "#unlit" },
"south": { "uv": [7, 6, 9, 11], "texture": "#unlit" },
"west": { "uv": [7, 6, 9, 11], "texture": "#unlit" },
"east": { "uv": [7, 6, 9, 11], "texture": "#unlit" }
}
},
{
"from": [7, 11, 4],
"to": [9, 14, 6],
"faces": {
"down": { "uv": [7, 6, 9, 8], "texture": "#unlit" },
"north": { "uv": [7, 6, 9, 9], "texture": "#unlit" },
"south": { "uv": [7, 6, 9, 9], "texture": "#unlit" },
"west": { "uv": [7, 6, 9, 9], "texture": "#unlit" },
"east": { "uv": [7, 6, 9, 9], "texture": "#unlit" }
}
}
]
}
@@ -0,0 +1,48 @@
{
"ambientocclusion": false,
"textures": {
"particle": "antarchy:block/bluestone/bluestone_repeater_on",
"slab": "minecraft:block/smooth_stone",
"top": "antarchy:block/bluestone/bluestone_repeater_on",
"unlit": "antarchy:block/bluestone/bluestone_torch_off",
"lit": "antarchy:block/bluestone/bluestone_torch"
},
"elements": [
{
"from": [0, 14, 0],
"to": [16, 16, 16],
"faces": {
"down": { "uv": [0, 0, 16, 16], "texture": "#top", "cullface": "down" },
"up": { "uv": [0, 0, 16, 16], "texture": "#slab", "cullface": "up" },
"north": { "uv": [0, 14, 16, 16], "texture": "#slab", "cullface": "north" },
"south": { "uv": [0, 14, 16, 16], "texture": "#slab", "cullface": "south" },
"west": { "uv": [0, 14, 16, 16], "texture": "#slab", "cullface": "west" },
"east": { "uv": [0, 14, 16, 16], "texture": "#slab", "cullface": "east" }
}
},
{
"from": [7, 9, 11],
"to": [9, 14, 13],
"shade": false,
"faces": {
"down": { "uv": [7, 6, 9, 8], "texture": "#lit" },
"north": { "uv": [7, 6, 9, 11], "texture": "#lit" },
"south": { "uv": [7, 6, 9, 11], "texture": "#lit" },
"west": { "uv": [7, 6, 9, 11], "texture": "#lit" },
"east": { "uv": [7, 6, 9, 11], "texture": "#lit" }
}
},
{
"from": [7, 11, 4],
"to": [9, 14, 6],
"shade": false,
"faces": {
"down": { "uv": [7, 6, 9, 8], "texture": "#lit" },
"north": { "uv": [7, 6, 9, 9], "texture": "#lit" },
"south": { "uv": [7, 6, 9, 9], "texture": "#lit" },
"west": { "uv": [7, 6, 9, 9], "texture": "#lit" },
"east": { "uv": [7, 6, 9, 9], "texture": "#lit" }
}
}
]
}
@@ -0,0 +1,22 @@
{
"ambientocclusion": false,
"textures": {
"torch": "antarchy:block/bluestone/bluestone_torch",
"particle": "antarchy:block/bluestone/bluestone_torch"
},
"elements": [
{
"from": [7, 6, 7],
"to": [9, 16, 9],
"shade": false,
"faces": {
"down": { "uv": [7, 6, 9, 8], "texture": "#torch" },
"up": { "uv": [7, 13, 9, 15], "texture": "#torch", "cullface": "up" },
"north": { "uv": [7, 6, 9, 16], "texture": "#torch" },
"east": { "uv": [7, 6, 9, 16], "texture": "#torch" },
"south": { "uv": [7, 6, 9, 16], "texture": "#torch" },
"west": { "uv": [7, 6, 9, 16], "texture": "#torch" }
}
}
]
}
@@ -0,0 +1,22 @@
{
"ambientocclusion": false,
"textures": {
"torch": "antarchy:block/bluestone/bluestone_torch_off",
"particle": "antarchy:block/bluestone/bluestone_torch_off"
},
"elements": [
{
"from": [7, 6, 7],
"to": [9, 16, 9],
"shade": false,
"faces": {
"down": { "uv": [7, 6, 9, 8], "texture": "#torch" },
"up": { "uv": [7, 13, 9, 15], "texture": "#torch", "cullface": "up" },
"north": { "uv": [7, 6, 9, 16], "texture": "#torch" },
"east": { "uv": [7, 6, 9, 16], "texture": "#torch" },
"south": { "uv": [7, 6, 9, 16], "texture": "#torch" },
"west": { "uv": [7, 6, 9, 16], "texture": "#torch" }
}
}
]
}
@@ -0,0 +1,7 @@
{
"parent": "minecraft:block/redstone_dust_dot",
"textures": {
"cross": "antarchy:block/bluestone/bluestone_dust_dot",
"overlay": "antarchy:block/bluestone/bluestone_dust_overlay"
}
}
@@ -0,0 +1,7 @@
{
"parent": "minecraft:block/redstone_dust_line0",
"textures": {
"line": "antarchy:block/bluestone/bluestone_dust_line0",
"overlay": "antarchy:block/bluestone/bluestone_dust_overlay"
}
}
@@ -0,0 +1,7 @@
{
"parent": "minecraft:block/redstone_dust_line1",
"textures": {
"line": "antarchy:block/bluestone/bluestone_dust_line1",
"overlay": "antarchy:block/bluestone/bluestone_dust_overlay"
}
}
@@ -0,0 +1,3 @@
{
"parent": "antarchy:block/bluestone_block"
}
@@ -0,0 +1,6 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "antarchy:item/bluestone/bluestone_comparator"
}
}
@@ -0,0 +1,6 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "antarchy:item/bluestone/bluestone"
}
}
@@ -0,0 +1,3 @@
{
"parent": "antarchy:block/bluestone_ore"
}
@@ -0,0 +1,6 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "antarchy:item/bluestone/bluestone_repeater"
}
}
@@ -0,0 +1,6 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "antarchy:block/bluestone/bluestone_torch"
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 487 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 499 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 455 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 455 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 522 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 523 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 388 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 463 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 426 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 531 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 535 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 113 B

@@ -0,0 +1,5 @@
{
"texture": {
"mipmap_strategy": "mean"
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 111 B

@@ -0,0 +1,5 @@
{
"texture": {
"mipmap_strategy": "mean"
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 116 B

@@ -0,0 +1,5 @@
{
"texture": {
"mipmap_strategy": "mean"
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 71 B

Loaded 100 of 163 files, more files were not shown because too many files have changed in this diff. Show more