diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/config/AntarchySettings.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/config/AntarchySettings.java index 664bafbc..f3723f71 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/config/AntarchySettings.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/config/AntarchySettings.java @@ -43,10 +43,10 @@ public final class AntarchySettings { private static double bomberExplosionDamage = 8.0D; private static double bomberExplosionRadius = 4.0D; private static double redAntAttackDamage = 3.0D; - private static double ultimateSwordAttackDamage = 30.0D; - private static double ultimatePickaxeAttackDamage = 22.0D; - private static double ultimateAxeAttackDamage = 38.0D; - private static double ultimateShovelAttackDamage = 24.0D; + private static double ultimateSwordAttackDamage = 34.0D; + private static double ultimatePickaxeAttackDamage = 24.0D; + private static double ultimateAxeAttackDamage = 42.0D; + private static double ultimateShovelAttackDamage = 26.0D; private static double ultimateHoeAttackDamage = 8.0D; private static double ultimateBowAttackDamage = 18.0D; private static double ultimateBowPlayerHeal = 8.0D; @@ -55,8 +55,8 @@ public final class AntarchySettings { private static double ultimateCrossbowAttackDamage = 8.0D; private static double ultimateCrossbowChargeSpeedMultiplier = 0.25D; private static double ultimateMaceDamageMultiplier = 1.5D; - private static double battleAxeAttackDamage = 46.0D; - private static double bigBerthaAttackDamage = 55.0D; + private static double battleAxeAttackDamage = 50.0D; + private static double bigBerthaAttackDamage = 62.0D; private static double bigBerthaReachBonus = 3.0D; private static double bigBerthaAttackSpeed = -3.0D; private static double attitudeAdjusterBaseDamage = 47.0D; @@ -72,6 +72,7 @@ public final class AntarchySettings { private static int krakensGraspTentacleSlownessAmplifier = 8; private static int krakensGraspTentacleSlownessRefreshTicks = 5; private static double scorpionWhipBaseDamage = 10.0D; + private static double scorpionWhipReachBonus = 5.0D; private static int scorpionWhipPoisonDurationTicks = 100; private static double scorpionWhipTetherMaxRange = 10.0D; private static double scorpionWhipSnapBonusDamage = 6.0D; @@ -81,16 +82,20 @@ public final class AntarchySettings { private static int bloodCrystalKatanaAttackDamage = 7; private static double bloodCrystalKatanaLaunchStrength = 1.1D; private static int bloodCrystalKatanaTrailDurationTicks = 12; + private static double bloodCrystalKatanaReachBonus = 4.0D; + private static int bloodCrystalKatanaInvulnTicks = 8; + private static int bloodCrystalKatanaDashCooldownTicks = 4; private static double bigBerthaBasiliskCooldownSeconds = 7.0D; private static double bigBerthaLucidInvertedDurationSeconds = 3.0D; private static double bigBerthaLucidInvertedDamageBonusPercent = 25.0D; private static double bigBerthaNoneModeDamageBonusPercent = 15.0D; private static double bigBerthaNightmareDamageBonusPercent = 30.0D; private static double potentNyxiteInvertedDurationSeconds = 60.0D; + private static boolean dimensionalTearsSpawnNaturally = true; private static int dimensionalTearLifetimeTicks = 24000; private static int dimensionalTearInvertedDurationTicks = 2400; - private static int dimensionalTearEmergenceMinIntervalTicks = 2400; - private static int dimensionalTearEmergenceMaxIntervalTicks = 7200; + private static int dimensionalTearEmergenceMinIntervalTicks = 400; + private static int dimensionalTearEmergenceMaxIntervalTicks = 1200; private static float dimensionalTearLucidEventChance = 0.65F; private static int ultimateToolEnchantability = 25; private static int ultimateArmorEnchantability = 10; @@ -99,23 +104,23 @@ public final class AntarchySettings { private static int ultimateMaceEnchantability = 20; private static boolean ultimateToolsThreeByThreeEnabled = true; private static boolean ultimateArmorComesEnchanted = true; - private static int ultimateHelmetArmorValue = 4; - private static int ultimateChestplateArmorValue = 9; - private static int ultimateLeggingsArmorValue = 7; - private static int ultimateBootsArmorValue = 4; - private static double ultimateHelmetArmorToughness = 3.0D; - private static double ultimateChestplateArmorToughness = 3.0D; - private static double ultimateLeggingsArmorToughness = 3.0D; - private static double ultimateBootsArmorToughness = 3.0D; + private static int ultimateHelmetArmorValue = 6; + private static int ultimateChestplateArmorValue = 11; + private static int ultimateLeggingsArmorValue = 9; + private static int ultimateBootsArmorValue = 6; + private static double ultimateHelmetArmorToughness = 4.5D; + private static double ultimateChestplateArmorToughness = 4.5D; + private static double ultimateLeggingsArmorToughness = 4.5D; + private static double ultimateBootsArmorToughness = 4.5D; private static ResourceKey brownAntDestinationDimension = dimensionKey("antarchy:elythia"); private static ResourceKey redAntDestinationDimension = dimensionKey("antarchy:thoraxis"); private static ResourceKey termiteDestinationDimension = dimensionKey("antarchy:cavaryn"); private static ResourceKey rainbowAntNonInfinityFallbackDimension = dimensionKey("antarchy:elythia"); - private static double krakenHealth = 1500.0D; + private static double krakenHealth = 1800.0D; private static double krakenAttackDamage = 45.0D; private static double octopusBombHealth = 100.0D; private static double octopusBombAttackDamage = 16.0D; - private static double brutalflyHealth = 400.0D; + private static double brutalflyHealth = 500.0D; private static double brutalflySwipeDamage = 15.0D; private static double brutalflySpitDamage = 5.0D; private static double mantisHealth = 50.0D; @@ -123,7 +128,7 @@ public final class AntarchySettings { private static double mantisMovementSpeed = 0.42D; private static double mantisFlyingSpeed = 0.77D; private static boolean mantisIgnoreLightLevel = false; - private static double alphaMantisHealth = 250.0D; + private static double alphaMantisHealth = 380.0D; private static double alphaMantisAttackDamage = 18.0D; private static double alphaMantisMovementSpeed = 0.546D; private static double alphaMantisFlyingSpeed = 0.77D; @@ -144,8 +149,8 @@ public final class AntarchySettings { private static double squidzookaLaunchVelocity = 2.1D; private static double rpoLauncherCooldownSeconds = 1.0D; private static double rpoLauncherLaunchVelocity = 1.8D; - private static double rpoLauncherExplosionDamage = 30.0D; - private static double rpoLauncherExplosionRadius = 13.5D; + private static double rpoLauncherExplosionDamage = 34.0D; + private static double rpoLauncherExplosionRadius = 14.0D; private static double sizeRayCooldownSeconds = 1.0D; private static boolean invertProjectilesFromInvertedPlayers = false; private static boolean gravityGunEnabled = true; @@ -178,26 +183,102 @@ public final class AntarchySettings { private static double dreamSandEffectDurationSeconds = 7.0D; private static double dreamSandFallingBlockGravityMultiplier = 0.4D; private static boolean ichorWitherEnabled = true; - private static int nightmareHelmetArmorValue = 3; - private static int nightmareChestplateArmorValue = 8; - private static int nightmareLeggingsArmorValue = 6; - private static int nightmareBootsArmorValue = 3; - private static double nightmareHelmetArmorToughness = 3.0D; - private static double nightmareChestplateArmorToughness = 3.0D; - private static double nightmareLeggingsArmorToughness = 3.0D; - private static double nightmareBootsArmorToughness = 3.0D; - - private static double nightmareHelmetDoubleDamageChance = 0.04D; - private static double nightmareChestplateDoubleDamageChance = 0.06D; - private static double nightmareLeggingsDoubleDamageChance = 0.05D; - private static double nightmareBootsDoubleDamageChance = 0.03D; + private static int nightmareHelmetArmorValue = 4; + private static int nightmareChestplateArmorValue = 9; + private static int nightmareLeggingsArmorValue = 7; + private static int nightmareBootsArmorValue = 4; + private static double nightmareHelmetArmorToughness = 4.0D; + private static double nightmareChestplateArmorToughness = 4.0D; + private static double nightmareLeggingsArmorToughness = 4.0D; + private static double nightmareBootsArmorToughness = 4.0D; + + private static double nightmareHelmetDoubleDamageChance = 0.05D; + private static double nightmareChestplateDoubleDamageChance = 0.07D; + private static double nightmareLeggingsDoubleDamageChance = 0.07D; + private static double nightmareBootsDoubleDamageChance = 0.05D; + + private static double nightmareSwordBaseDamage = 18.0D; - private static double nightmareSwordBaseDamage = 15.0D; - private static double nightmareSwordScalingFactor = 1.5D; + + private static boolean royalArmorComesEnchanted = true; + private static int royalArmorProtectionLevel = 10; + private static int royalArmorEnchantability = 30; + private static int royalArmorDurabilityMultiplier = 93; + private static int royalGuardianHelmetArmorValue = 5; + private static int royalGuardianChestplateArmorValue = 10; + private static int royalGuardianLeggingsArmorValue = 8; + private static int royalGuardianBootsArmorValue = 5; + private static double royalGuardianArmorToughness = 4.0D; + private static double royalGuardianArmorKnockbackResistance = 0.15D; + private static int royalAssailantHelmetArmorValue = 5; + private static int royalAssailantChestplateArmorValue = 10; + private static int royalAssailantLeggingsArmorValue = 8; + private static int royalAssailantBootsArmorValue = 5; + private static double royalAssailantArmorToughness = 3.0D; + private static double royalAssailantArmorKnockbackResistance = 0.15D; + private static double royalAssailantHelmetDoubleDamageChance = 0.06D; + private static double royalAssailantChestplateDoubleDamageChance = 0.08D; + private static double royalAssailantLeggingsDoubleDamageChance = 0.07D; + private static double royalAssailantBootsDoubleDamageChance = 0.05D; + private static double royalGuardianSwordAttackDamage = 111.0D; + private static double royalGuardianSwordAttackSpeed = -2.5D; + private static double royalAssailantBattleAxeAttackDamage = 151.0D; + private static double royalAssailantBattleAxeAttackSpeed = -2.9D; + private static double royalWeaponAttackReachBonus = 1.0D; + private static double royalWeaponAttackKnockbackBonus = 1.0D; + private static int royalWeaponDurability = 4608; + private static int royalWeaponEnchantability = 30; + private static int royalGuardianShieldDurability = 1008; + private static double royalBoltDamage = 6.0D; + private static int royalEggHatchChance = 3; + private static double princeHealth = 120.0D; + private static double princeAttackDamage = 14.0D; + private static double princeMovementSpeed = 0.28D; + private static double princeFlyingSpeed = 0.9D; + private static double princeArmor = 10.0D; + private static double princeKnockbackResistance = 0.6D; + private static double princeFollowRange = 48.0D; + private static double princessHealth = 110.0D; + private static double princessAttackDamage = 10.0D; + private static double princessMovementSpeed = 0.28D; + private static double princessFlyingSpeed = 0.95D; + private static double princessArmor = 8.0D; + private static double princessKnockbackResistance = 0.5D; + private static double princessFollowRange = 48.0D; + private static double kingHealth = 6000.0D; + private static double queenHealth = 6000.0D; + private static double kingAttackDamage = 50.0D; + private static double queenAttackDamage = 45.0D; + private static double royalBossSoundVolume = 4.5D; + private static double queenBlackHoleRadius = 14.0D; + private static int queenBlackHoleActiveTicks = 120; + private static double queenBlackHolePullStrength = 0.16D; + private static double queenFinalTimeFieldRadius = 20.0D; + private static double queenFinalTimeFieldRate = 0.05D; + private static int queenFinalTimeFieldDurationTicks = 45; + private static int queenFinalTimeFieldCooldownTicks = 80; + private static double kingFireballDamage = 32.0D; + private static double kingFireballRadius = 4.5D; + private static int kingFireballCooldownTicks = 150; + private static double kingIceballDamage = 18.0D; + private static double kingIceballRadius = 5.0D; + private static int kingIceballCooldownTicks = 190; + private static double kingIceSpikeDamage = 24.0D; + private static int kingIceSpikeCooldownTicks = 240; + private static int kingElementalTerrainCap = 256; + private static double royalBossArmor = 20.0D; + private static double royalBossFollowRange = 128.0D; + private static double royalBossMovementSpeed = 0.22D; + private static double royalBossKnockbackResistance = 1.0D; + private static double royalBossStepHeight = 3.0D; + private static double royalBossMaxSingleHitDamage = 250.0D; + private static double royalBossBiteReach = 10.0D; + private static double royalBossBiteDamageMultiplier = 1.6D; + private static int royalBossBiteCooldownTicks = 45; private static boolean basiliskPetrifyingGazeEnabled = true; private static int basiliskSpawnMaxLightLevel = 5; - private static double basiliskHealth = 150.0D; + private static double basiliskHealth = 320.0D; private static double basiliskAttackDamage = 36.0D; private static double basiliskMovementSpeed = 0.18D; private static double basiliskArmor = 6.0D; @@ -225,6 +306,8 @@ public final class AntarchySettings { private static double diamondMinecartCoastDeceleration = 0.02D; private static boolean diamondMinecartMobDamageEnabled = false; private static double diamondMinecartMaxMobDamage = 4.0D; + private static double hoverboardMaxSpeed = 6.0D; + private static double hoverboardAcceleration = 0.05D; private static boolean dreadHallucinationSoundsEnabled = true; private static double dreadHallucinationSoundMinInterval = 3.0D; private static double dreadHallucinationSoundMaxInterval = 10.0D; @@ -271,7 +354,7 @@ public final class AntarchySettings { private static final int reverieAmbientTargetMaxAgeTicks = 40; private static final int reverieAmbientPulseIntervalMinTicks = 12; private static final int reverieAmbientPulseIntervalMaxTicks = 19; - private static double emperorScorpionHealth = 300.0D; + private static double emperorScorpionHealth = 420.0D; private static double emperorScorpionAttackDamage = 28.0D; private static double emperorScorpionMovementSpeed = 0.384D; private static double emperorScorpionArmor = 22.0D; @@ -288,9 +371,9 @@ public final class AntarchySettings { private static int emperorScorpionWeaknessTicks = 120; private static int emperorScorpionSummonIntervalTicks = 140; private static int emperorScorpionMaxSummonedScorpions = 4; - private static int emperorScorpionMaxNearbyScorpions = 3; + private static int emperorScorpionMaxNearbyScorpions = 4; private static int emperorScorpionHardenCooldownTicks = 2400; - private static double emperorScorpionDamageRange = 80.0D; + private static double emperorScorpionDamageRange = 25.0D; private static int emperorScorpionMinDespawnTicks = 6000; private static double scorpionHealth = 30.0D; private static double scorpionAttackDamage = 5.0D; @@ -303,10 +386,9 @@ public final class AntarchySettings { private static double bedBugArmor = 2.0D; private static double jumpyBugHealth = 100.0D; private static double jumpyBugPounceDamage = 12.0D; - private static double jumpyBugLatchDamage = 12.0D; private static double jumpyBugCamouflageAlpha = 0.18D; private static double brutalflyArmor = 10.0D; - private static double brutalflyArmorToughness = 4.0D; + private static double brutalflyArmorToughness = 5.0D; private static double brutalflyKnockbackResistance = 0.7D; private static double brutalflyMovementSpeed = 0.34D; private static double brutalflyFlyingSpeed = 0.55D; @@ -321,29 +403,59 @@ public final class AntarchySettings { private static double krakenArmor = 8.0D; private static double krakenBossBarRange = 40.0D; private static double krakenFollowRange = 96.0D; - private static double krakenDamageRange = 96.0D; - private static double herculesBeetleDamageRange = 48.0D; - private static double toreterrorDamageRange = 48.0D; - private static double brutalflyDamageRange = 48.0D; - private static double alphaMantisDamageRange = 48.0D; + private static double krakenDamageRange = 35.0D; + private static double herculesBeetleDamageRange = 25.0D; + private static double toreterrorDamageRange = 25.0D; + private static double brutalflyDamageRange = 25.0D; + private static double alphaMantisDamageRange = 25.0D; private static float krakenLightningDamagePhaseOne = 6.0F; - private static double lucidHealth = 30.0D; + private static double lucidHealth = 70.0D; private static double lucidAttackDamage = 4.0D; private static double lucidMovementSpeed = 0.22D; private static double lucidFlyingSpeed = 0.35D; private static double lucidKnockbackResistance = 0.5D; - private static double missileSquidHealth = 50.0D; - private static double missileSquidAttackDamage = 6.0D; + private static double vortexHealth = 70.0D; + private static double vortexAttackDamage = 4.0D; + private static double vortexMovementSpeed = 0.22D; + private static double vortexFlyingSpeed = 0.35D; + private static int vortexMaxActiveVortexes = 3; + private static int windVortexDurationTicks = 240; + private static double windVortexPullStrength = 0.32D; + private static double windVortexLaunchStrength = 1.0D; + private static boolean eyeOfTheStormEnabled = true; + private static int eyeOfTheStormUpdraftCooldownTicks = 40; + private static double eyeOfTheStormUpdraftLaunchStrength = 1.15D; + private static double eyeOfTheStormUpdraftHeight = 4.0D; + private static double eyeOfTheStormUpdraftRadius = 1.3D; + private static int eyeOfTheStormUpdraftDurationTicks = 32; + private static int eyeOfTheStormSurgeCooldownTicks = 70; + private static double eyeOfTheStormSurgeRange = 16.0D; + private static int eyeOfTheStormSurgeDurationTicks = 300; + private static double eyeOfTheStormSurgeRadius = 4.0D; + private static double eyeOfTheStormSurgeHeight = 6.0D; + private static double eyeOfTheStormSurgePullStrength = 0.85D; + private static double eyeOfTheStormSurgeReturnStrength = 1.4D; + private static float eyeOfTheStormSurgeDamage = 5.0F; + private static double vortexLensMinRadius = 1.5D; + private static double vortexLensMaxRadius = 10.0D; + private static double vortexLensMinHeight = 3.0D; + private static double vortexLensMaxHeight = 20.0D; + private static double vortexLensPullStrength = 0.65D; + private static double vortexLensPushStrength = 0.65D; + private static double vortexLensLaunchStrength = 1.4D; + private static double missileSquidHealth = 60.0D; + private static double missileSquidAttackDamage = 9.0D; private static double missileSquidMovementSpeed = 0.84D; private static double missileSquidFlyingSpeed = 0.84D; private static double missileSquidKnockbackResistance = 0.15D; private static double molewormHealth = 8.0D; private static double molewormAttackDamage = 1.0D; private static double molewormMovementSpeed = 0.25D; - private static double triffidHealth = 80.0D; + private static double triffidHealth = 160.0D; private static double triffidAttackDamage = 10.0D; private static double triffidGrabDamage = 15.0D; - private static double molevoreHealth = 60.0D; + private static int triffidSweepHitCooldownTicks = 10; + private static double molevoreHealth = 140.0D; private static double molevoreAttackDamage = 10.0D; private static double molevoreMovementSpeed = 0.27D; private static double molevoreArmor = 6.0D; @@ -356,7 +468,7 @@ public final class AntarchySettings { private static double molevoreBreakRange = 1.8D; private static double molevoreBreakVerticalRange = 2.2D; private static double molevoreBreakHalfWidth = 1.1D; - private static double nightmareHealth = 180.0D; + private static double nightmareHealth = 380.0D; private static double nightmareAttackDamage = 16.0D; private static double nightmareMovementSpeed = 0.28D; private static double nightmareFlyingSpeed = 0.3D; @@ -388,7 +500,7 @@ public final class AntarchySettings { private static int bigBerthaBasiliskParalyzeDurationTicks = 80; private static int bigBerthaKrakenSlowTicks = 80; private static double ductTapeRepairPercentPerUse = 0.25D; - private static double ultimateArmorKnockbackResistance = 0.1D; + private static double ultimateArmorKnockbackResistance = 0.15D; private static double nightmareArmorKnockbackResistance = 0.1D; private static double primordialArmorKnockbackPerPiece = 0.5D; private static double mogglesVisionRadius = 20.0D; @@ -404,33 +516,62 @@ public final class AntarchySettings { private static int bloodCrystalAppleShieldCount = 2; private static int bloodCrystalAppleDurationTicks = 2400; private static int bloodCrystalAppleShieldRechargeTicks = 600; - private static int bloodCrystalHardMaxShields = 8; + private static int bloodCrystalHardMaxShields = 10; // Armor stats (iron defense, gold durability, 0 toughness by default) - private static int bloodCrystalHelmetDefense = 2; - private static int bloodCrystalChestplateDefense = 6; - private static int bloodCrystalLeggingsDefense = 5; - private static int bloodCrystalBootsDefense = 2; - private static double bloodCrystalArmorToughness = 0.0; + private static int bloodCrystalHelmetDefense = 3; + private static int bloodCrystalChestplateDefense = 7; + private static int bloodCrystalLeggingsDefense = 6; + private static int bloodCrystalBootsDefense = 3; + private static double bloodCrystalArmorToughness = 2.0D; private static int bloodCrystalHelmetDurability = 77; private static int bloodCrystalChestplateDurability = 112; private static int bloodCrystalLeggingsDurability = 105; private static int bloodCrystalBootsDurability = 91; - private static double toreterrorHealth = 300.0D; + private static double toreterrorHealth = 450.0D; private static double toreterrorJumpAttackDamage = 14.0D; private static double toreterrorJumpAttackKnockback = 2.5D; private static double toreterrorSpinDamage = 6.0D; private static double toreterrorSpinKnockback = 0.9D; - private static double toreterrorRangedWaterBombChance = 0.35D; private static double toreterrorProjectileDamageMultiplier = 0.5D; private static double waterBombDamage = 6.0D; private static int waterBombLifetimeTicks = 120; private static double waterBombGravity = 0.12D; private static double waterBombKnockback = 1.2D; - private static double waterCannonCooldownSeconds = 1.5D; private static double creepingHorrorHealth = 15.0D; private static double creepingHorrorAttackDamage = 6.0D; private static double lurkingTerrorHealth = 15.0D; private static double lurkingTerrorAttackDamage = 6.0D; + private static double manticoreHealth = 40.0D; + private static double manticoreAttackDamage = 7.0D; + private static int manticoreStingPoisonTicks = 100; + private static int queenManticoreCap = 15; + private static int queenManticoreSummonCooldownTicks = 600; + private static int queenManticoreSummonCount = 3; + private static double queenManticoreSummonRange = 24.0D; + private static double queenBeamDamage = 45.0D; + private static double queenBeamRange = 100.0D; + private static int queenBeamDurationTicks = 30; + private static int queenBeamWindupTicks = 20; + private static int queenBeamTravelTicks = 12; + private static int queenBeamCooldownTicks = 90; + private static double queenBeamTracking = 0.1D; + private static double queenBeamTerrainRadius = 5.0D; + private static int queenBeamTerrainCap = 192; + private static double kingBeamDamage = 50.0D; + private static double kingBeamRange = 100.0D; + private static int kingBeamDurationTicks = 30; + private static int kingBeamWindupTicks = 20; + private static int kingBeamTravelTicks = 12; + private static int kingBeamCooldownTicks = 90; + private static double kingBeamTracking = 0.1D; + private static double kingBeamTerrainRadius = 5.0D; + private static int kingBeamTerrainCap = 192; + private static int royalDecreeCooldownTicks = 1200; + private static int kingRoyalMusterCooldownTicks = 500; + private static int kingRoyalMusterWindupTicks = 30; + private static int kingRoyalMusterDurationTicks = 600; + private static double kingRoyalMusterRadius = 32.0D; + private static int kingRoyalMusterCap = 12; private static double jerryInfantHealth = 20.0D; private static double jerryInfantAttackDamage = 2.0D; private static double jerryMatureHealth = 40.0D; @@ -442,12 +583,29 @@ public final class AntarchySettings { private static double cheepHealth = 8.0D; private static double cheepAttackDamage = 3.0D; private static double dorrieHealth = 60.0D; - private static double herculesBeetleHealth = 500.0D; + private static double herculesBeetleHealth = 650.0D; private static double herculesBeetleAttackDamage = 30.0D; private static double herculesBeetleChargeDamage = 40.0D; private static double ouranwoodDeerHealth = 20.0D; private static double glimmerHealth = 20.0D; + private static double lucidArmorToughness = 2.0D; + private static double triffidArmorToughness = 3.0D; + private static double basiliskArmorToughness = 5.0D; + private static double nightmareMobArmorToughness = 5.0D; + private static double alphaMantisArmorToughness = 4.0D; + private static double herculesBeetleArmorToughness = 4.0D; + private static double krakenArmorToughness = 6.0D; + private static double nightmareMobArmor = 10.0D; + + private static double bossMagicPerHitCapFraction = 0.12D; + private static int bossMagicWindowTicks = 20; + private static double bossMagicWindowCapFraction = 0.20D; + private static double bossMagicWardReductionFraction = 0.5D; + private static int bossMagicWardDurationTicks = 60; + private static int bossMagicWardTriggerBreaches = 2; + private static java.util.List magicBurstDamageNamespaces = new java.util.ArrayList<>(java.util.List.of("irons_spellbooks")); + private AntarchySettings() { } @@ -671,30 +829,60 @@ public final class AntarchySettings { return bigBerthaNightmareDamageBonusPercent; } + public static double krakensGraspLightningDamage() { return krakensGraspLightningDamage; } + public static double potentNyxiteInvertedDurationSeconds() { return potentNyxiteInvertedDurationSeconds; } + public static boolean dimensionalTearsSpawnNaturally() { + return dimensionalTearsSpawnNaturally; + } + + public static void setDimensionalTearsSpawnNaturally(boolean value) { + dimensionalTearsSpawnNaturally = value; + } + public static int dimensionalTearLifetimeTicks() { return dimensionalTearLifetimeTicks; } + public static void setDimensionalTearLifetimeTicks(int value) { + dimensionalTearLifetimeTicks = value; + } + public static int dimensionalTearInvertedDurationTicks() { return dimensionalTearInvertedDurationTicks; } + public static void setDimensionalTearInvertedDurationTicks(int value) { + dimensionalTearInvertedDurationTicks = value; + } + public static int dimensionalTearEmergenceMinIntervalTicks() { return dimensionalTearEmergenceMinIntervalTicks; } + public static void setDimensionalTearEmergenceMinIntervalTicks(int value) { + dimensionalTearEmergenceMinIntervalTicks = value; + } + public static int dimensionalTearEmergenceMaxIntervalTicks() { return dimensionalTearEmergenceMaxIntervalTicks; } + public static void setDimensionalTearEmergenceMaxIntervalTicks(int value) { + dimensionalTearEmergenceMaxIntervalTicks = value; + } + public static float dimensionalTearLucidEventChance() { return dimensionalTearLucidEventChance; } + public static void setDimensionalTearLucidEventChance(float value) { + dimensionalTearLucidEventChance = value; + } + public static int ultimateToolEnchantability() { return ultimateToolEnchantability; } @@ -1236,6 +1424,10 @@ public final class AntarchySettings { ultimateCrossbowChargeSpeedMultiplier = value; } + public static void setUltimateMaceDamageMultiplier(double value) { + ultimateMaceDamageMultiplier = value; + } + public static void setBattleAxeAttackDamage(double value) { battleAxeAttackDamage = value; } @@ -1300,6 +1492,10 @@ public final class AntarchySettings { ultimateCrossbowEnchantability = value; } + public static void setUltimateMaceEnchantability(int value) { + ultimateMaceEnchantability = value; + } + public static void setUltimateToolsThreeByThreeEnabled(boolean value) { ultimateToolsThreeByThreeEnabled = value; } @@ -1368,8 +1564,6 @@ public final class AntarchySettings { public static void setKrakensGraspAttackSpeed(double value) { krakensGraspAttackSpeed = value; } public static void setKrakensGraspThrownDamage(double value) { krakensGraspThrownDamage = value; } public static void setKrakensGraspLightningDamage(double value) { krakensGraspLightningDamage = value; } - - public static double krakensGraspLightningDamage() { return krakensGraspLightningDamage; } public static void setKrakensGraspInnateLoyalty(boolean value) { krakensGraspInnateLoyalty = value; } public static void setKrakensGraspInnateLoyaltyLevel(int value) { krakensGraspInnateLoyaltyLevel = value; } public static void setKrakensGraspTentacleDurationTicks(int value) { krakensGraspTentacleDurationTicks = value; } @@ -1713,6 +1907,202 @@ public final class AntarchySettings { public static double nightmareBootsDoubleDamageChance() { return nightmareBootsDoubleDamageChance; } public static void setNightmareBootsDoubleDamageChance(double v) { nightmareBootsDoubleDamageChance = v; } + public static boolean royalArmorComesEnchanted() { return royalArmorComesEnchanted; } + public static void setRoyalArmorComesEnchanted(boolean v) { royalArmorComesEnchanted = v; } + + public static int royalArmorProtectionLevel() { return royalArmorProtectionLevel; } + public static void setRoyalArmorProtectionLevel(int v) { royalArmorProtectionLevel = v; } + + public static int royalArmorEnchantability() { return royalArmorEnchantability; } + public static void setRoyalArmorEnchantability(int v) { royalArmorEnchantability = v; } + + public static int royalArmorDurabilityMultiplier() { return royalArmorDurabilityMultiplier; } + public static void setRoyalArmorDurabilityMultiplier(int v) { royalArmorDurabilityMultiplier = v; } + + public static int royalGuardianHelmetArmorValue() { return royalGuardianHelmetArmorValue; } + public static void setRoyalGuardianHelmetArmorValue(int v) { royalGuardianHelmetArmorValue = v; } + + public static int royalGuardianChestplateArmorValue() { return royalGuardianChestplateArmorValue; } + public static void setRoyalGuardianChestplateArmorValue(int v) { royalGuardianChestplateArmorValue = v; } + + public static int royalGuardianLeggingsArmorValue() { return royalGuardianLeggingsArmorValue; } + public static void setRoyalGuardianLeggingsArmorValue(int v) { royalGuardianLeggingsArmorValue = v; } + + public static int royalGuardianBootsArmorValue() { return royalGuardianBootsArmorValue; } + public static void setRoyalGuardianBootsArmorValue(int v) { royalGuardianBootsArmorValue = v; } + + public static double royalGuardianArmorToughness() { return royalGuardianArmorToughness; } + public static void setRoyalGuardianArmorToughness(double v) { royalGuardianArmorToughness = v; } + + public static double royalGuardianArmorKnockbackResistance() { return royalGuardianArmorKnockbackResistance; } + public static void setRoyalGuardianArmorKnockbackResistance(double v) { royalGuardianArmorKnockbackResistance = v; } + + public static int royalAssailantHelmetArmorValue() { return royalAssailantHelmetArmorValue; } + public static void setRoyalAssailantHelmetArmorValue(int v) { royalAssailantHelmetArmorValue = v; } + + public static int royalAssailantChestplateArmorValue() { return royalAssailantChestplateArmorValue; } + public static void setRoyalAssailantChestplateArmorValue(int v) { royalAssailantChestplateArmorValue = v; } + + public static int royalAssailantLeggingsArmorValue() { return royalAssailantLeggingsArmorValue; } + public static void setRoyalAssailantLeggingsArmorValue(int v) { royalAssailantLeggingsArmorValue = v; } + + public static int royalAssailantBootsArmorValue() { return royalAssailantBootsArmorValue; } + public static void setRoyalAssailantBootsArmorValue(int v) { royalAssailantBootsArmorValue = v; } + + public static double royalAssailantArmorToughness() { return royalAssailantArmorToughness; } + public static void setRoyalAssailantArmorToughness(double v) { royalAssailantArmorToughness = v; } + + public static double royalAssailantArmorKnockbackResistance() { return royalAssailantArmorKnockbackResistance; } + public static void setRoyalAssailantArmorKnockbackResistance(double v) { royalAssailantArmorKnockbackResistance = v; } + + public static double royalAssailantHelmetDoubleDamageChance() { return royalAssailantHelmetDoubleDamageChance; } + public static void setRoyalAssailantHelmetDoubleDamageChance(double v) { royalAssailantHelmetDoubleDamageChance = v; } + + public static double royalAssailantChestplateDoubleDamageChance() { return royalAssailantChestplateDoubleDamageChance; } + public static void setRoyalAssailantChestplateDoubleDamageChance(double v) { royalAssailantChestplateDoubleDamageChance = v; } + + public static double royalAssailantLeggingsDoubleDamageChance() { return royalAssailantLeggingsDoubleDamageChance; } + public static void setRoyalAssailantLeggingsDoubleDamageChance(double v) { royalAssailantLeggingsDoubleDamageChance = v; } + + public static double royalAssailantBootsDoubleDamageChance() { return royalAssailantBootsDoubleDamageChance; } + public static void setRoyalAssailantBootsDoubleDamageChance(double v) { royalAssailantBootsDoubleDamageChance = v; } + + public static double royalGuardianSwordAttackDamage() { return royalGuardianSwordAttackDamage; } + public static void setRoyalGuardianSwordAttackDamage(double v) { royalGuardianSwordAttackDamage = v; } + + public static double royalGuardianSwordAttackSpeed() { return royalGuardianSwordAttackSpeed; } + public static void setRoyalGuardianSwordAttackSpeed(double v) { royalGuardianSwordAttackSpeed = v; } + + public static double royalAssailantBattleAxeAttackDamage() { return royalAssailantBattleAxeAttackDamage; } + public static void setRoyalAssailantBattleAxeAttackDamage(double v) { royalAssailantBattleAxeAttackDamage = v; } + + public static double royalAssailantBattleAxeAttackSpeed() { return royalAssailantBattleAxeAttackSpeed; } + public static void setRoyalAssailantBattleAxeAttackSpeed(double v) { royalAssailantBattleAxeAttackSpeed = v; } + + public static double royalWeaponAttackReachBonus() { return royalWeaponAttackReachBonus; } + public static void setRoyalWeaponAttackReachBonus(double v) { royalWeaponAttackReachBonus = v; } + + public static double royalWeaponAttackKnockbackBonus() { return royalWeaponAttackKnockbackBonus; } + public static void setRoyalWeaponAttackKnockbackBonus(double v) { royalWeaponAttackKnockbackBonus = v; } + + public static int royalWeaponDurability() { return royalWeaponDurability; } + public static void setRoyalWeaponDurability(int v) { royalWeaponDurability = v; } + + public static int royalWeaponEnchantability() { return royalWeaponEnchantability; } + public static void setRoyalWeaponEnchantability(int v) { royalWeaponEnchantability = v; } + + public static int royalGuardianShieldDurability() { return royalGuardianShieldDurability; } + public static void setRoyalGuardianShieldDurability(int v) { royalGuardianShieldDurability = v; } + + public static double royalBoltDamage() { return royalBoltDamage; } + public static void setRoyalBoltDamage(double v) { royalBoltDamage = v; } + + public static int royalEggHatchChance() { return royalEggHatchChance; } + public static void setRoyalEggHatchChance(int v) { royalEggHatchChance = v; } + + public static double princeHealth() { return princeHealth; } + public static void setPrinceHealth(double v) { princeHealth = v; } + public static double princeAttackDamage() { return princeAttackDamage; } + public static void setPrinceAttackDamage(double v) { princeAttackDamage = v; } + public static double princeMovementSpeed() { return princeMovementSpeed; } + public static void setPrinceMovementSpeed(double v) { princeMovementSpeed = v; } + public static double princeFlyingSpeed() { return princeFlyingSpeed; } + public static void setPrinceFlyingSpeed(double v) { princeFlyingSpeed = v; } + public static double princeArmor() { return princeArmor; } + public static void setPrinceArmor(double v) { princeArmor = v; } + public static double princeKnockbackResistance() { return princeKnockbackResistance; } + public static void setPrinceKnockbackResistance(double v) { princeKnockbackResistance = v; } + public static double princeFollowRange() { return princeFollowRange; } + public static void setPrinceFollowRange(double v) { princeFollowRange = v; } + + public static double princessHealth() { return princessHealth; } + public static void setPrincessHealth(double v) { princessHealth = v; } + public static double princessAttackDamage() { return princessAttackDamage; } + public static void setPrincessAttackDamage(double v) { princessAttackDamage = v; } + public static double princessMovementSpeed() { return princessMovementSpeed; } + public static void setPrincessMovementSpeed(double v) { princessMovementSpeed = v; } + public static double princessFlyingSpeed() { return princessFlyingSpeed; } + public static void setPrincessFlyingSpeed(double v) { princessFlyingSpeed = v; } + public static double princessArmor() { return princessArmor; } + public static void setPrincessArmor(double v) { princessArmor = v; } + public static double princessKnockbackResistance() { return princessKnockbackResistance; } + public static void setPrincessKnockbackResistance(double v) { princessKnockbackResistance = v; } + public static double princessFollowRange() { return princessFollowRange; } + public static void setPrincessFollowRange(double v) { princessFollowRange = v; } + + public static double kingHealth() { return kingHealth; } + public static void setKingHealth(double v) { kingHealth = v; } + + public static double queenHealth() { return queenHealth; } + public static void setQueenHealth(double v) { queenHealth = v; } + + public static double kingAttackDamage() { return kingAttackDamage; } + public static void setKingAttackDamage(double v) { kingAttackDamage = v; } + + public static double queenAttackDamage() { return queenAttackDamage; } + public static void setQueenAttackDamage(double v) { queenAttackDamage = v; } + public static double royalBossSoundVolume() { return royalBossSoundVolume; } + public static void setRoyalBossSoundVolume(double v) { royalBossSoundVolume = v; } + public static double queenBlackHoleRadius() { return queenBlackHoleRadius; } + public static void setQueenBlackHoleRadius(double v) { queenBlackHoleRadius = v; } + public static int queenBlackHoleActiveTicks() { return queenBlackHoleActiveTicks; } + public static void setQueenBlackHoleActiveTicks(int v) { queenBlackHoleActiveTicks = v; } + public static double queenBlackHolePullStrength() { return queenBlackHolePullStrength; } + public static void setQueenBlackHolePullStrength(double v) { queenBlackHolePullStrength = v; } + public static double queenFinalTimeFieldRadius() { return queenFinalTimeFieldRadius; } + public static void setQueenFinalTimeFieldRadius(double v) { queenFinalTimeFieldRadius = v; } + public static double queenFinalTimeFieldRate() { return queenFinalTimeFieldRate; } + public static void setQueenFinalTimeFieldRate(double v) { queenFinalTimeFieldRate = v; } + public static int queenFinalTimeFieldDurationTicks() { return queenFinalTimeFieldDurationTicks; } + public static void setQueenFinalTimeFieldDurationTicks(int v) { queenFinalTimeFieldDurationTicks = v; } + public static int queenFinalTimeFieldCooldownTicks() { return queenFinalTimeFieldCooldownTicks; } + public static void setQueenFinalTimeFieldCooldownTicks(int v) { queenFinalTimeFieldCooldownTicks = v; } + public static double kingFireballDamage() { return kingFireballDamage; } + public static void setKingFireballDamage(double v) { kingFireballDamage = v; } + public static double kingFireballRadius() { return kingFireballRadius; } + public static void setKingFireballRadius(double v) { kingFireballRadius = v; } + public static int kingFireballCooldownTicks() { return kingFireballCooldownTicks; } + public static void setKingFireballCooldownTicks(int v) { kingFireballCooldownTicks = v; } + public static double kingIceballDamage() { return kingIceballDamage; } + public static void setKingIceballDamage(double v) { kingIceballDamage = v; } + public static double kingIceballRadius() { return kingIceballRadius; } + public static void setKingIceballRadius(double v) { kingIceballRadius = v; } + public static int kingIceballCooldownTicks() { return kingIceballCooldownTicks; } + public static void setKingIceballCooldownTicks(int v) { kingIceballCooldownTicks = v; } + public static double kingIceSpikeDamage() { return kingIceSpikeDamage; } + public static void setKingIceSpikeDamage(double v) { kingIceSpikeDamage = v; } + public static int kingIceSpikeCooldownTicks() { return kingIceSpikeCooldownTicks; } + public static void setKingIceSpikeCooldownTicks(int v) { kingIceSpikeCooldownTicks = v; } + public static int kingElementalTerrainCap() { return kingElementalTerrainCap; } + public static void setKingElementalTerrainCap(int v) { kingElementalTerrainCap = v; } + + public static double royalBossArmor() { return royalBossArmor; } + public static void setRoyalBossArmor(double v) { royalBossArmor = v; } + + public static double royalBossFollowRange() { return royalBossFollowRange; } + public static void setRoyalBossFollowRange(double v) { royalBossFollowRange = v; } + + public static double royalBossMovementSpeed() { return royalBossMovementSpeed; } + public static void setRoyalBossMovementSpeed(double v) { royalBossMovementSpeed = v; } + + public static double royalBossKnockbackResistance() { return royalBossKnockbackResistance; } + public static void setRoyalBossKnockbackResistance(double v) { royalBossKnockbackResistance = v; } + + public static double royalBossStepHeight() { return royalBossStepHeight; } + public static void setRoyalBossStepHeight(double v) { royalBossStepHeight = v; } + + public static double royalBossMaxSingleHitDamage() { return royalBossMaxSingleHitDamage; } + public static void setRoyalBossMaxSingleHitDamage(double v) { royalBossMaxSingleHitDamage = v; } + + public static double royalBossBiteReach() { return royalBossBiteReach; } + public static void setRoyalBossBiteReach(double v) { royalBossBiteReach = v; } + + public static double royalBossBiteDamageMultiplier() { return royalBossBiteDamageMultiplier; } + public static void setRoyalBossBiteDamageMultiplier(double v) { royalBossBiteDamageMultiplier = v; } + + public static int royalBossBiteCooldownTicks() { return royalBossBiteCooldownTicks; } + public static void setRoyalBossBiteCooldownTicks(int v) { royalBossBiteCooldownTicks = v; } + public static double nightmareSwordBaseDamage() { return nightmareSwordBaseDamage; } public static void setNightmareSwordBaseDamage(double v) { nightmareSwordBaseDamage = v; } @@ -1819,6 +2209,12 @@ public final class AntarchySettings { public static double diamondMinecartMaxMobDamage() { return diamondMinecartMaxMobDamage; } public static void setDiamondMinecartMaxMobDamage(double v) { diamondMinecartMaxMobDamage = v; } + public static double hoverboardMaxSpeed() { return hoverboardMaxSpeed; } + public static void setHoverboardMaxSpeed(double value) { hoverboardMaxSpeed = value; } + + public static double hoverboardAcceleration() { return hoverboardAcceleration; } + public static void setHoverboardAcceleration(double value) { hoverboardAcceleration = value; } + public static boolean dreadHallucinationSoundsEnabled() { return dreadHallucinationSoundsEnabled; } @@ -1974,6 +2370,9 @@ public final class AntarchySettings { public static double scorpionWhipBaseDamage() { return scorpionWhipBaseDamage; } public static void setScorpionWhipBaseDamage(double value) { scorpionWhipBaseDamage = value; } + public static double scorpionWhipReachBonus() { return scorpionWhipReachBonus; } + public static void setScorpionWhipReachBonus(double value) { scorpionWhipReachBonus = value; } + public static int scorpionWhipPoisonDurationTicks() { return scorpionWhipPoisonDurationTicks; } public static void setScorpionWhipPoisonDurationTicks(int value) { scorpionWhipPoisonDurationTicks = value; } @@ -2001,6 +2400,15 @@ public final class AntarchySettings { public static int bloodCrystalKatanaTrailDurationTicks() { return bloodCrystalKatanaTrailDurationTicks; } public static void setBloodCrystalKatanaTrailDurationTicks(int value) { bloodCrystalKatanaTrailDurationTicks = value; } + public static double bloodCrystalKatanaReachBonus() { return bloodCrystalKatanaReachBonus; } + public static void setBloodCrystalKatanaReachBonus(double value) { bloodCrystalKatanaReachBonus = value; } + + public static int bloodCrystalKatanaInvulnTicks() { return bloodCrystalKatanaInvulnTicks; } + public static void setBloodCrystalKatanaInvulnTicks(int value) { bloodCrystalKatanaInvulnTicks = value; } + + public static int bloodCrystalKatanaDashCooldownTicks() { return bloodCrystalKatanaDashCooldownTicks; } + public static void setBloodCrystalKatanaDashCooldownTicks(int value) { bloodCrystalKatanaDashCooldownTicks = value; } + public static double emperorScorpionAttackDamage() { return emperorScorpionAttackDamage; } public static void setEmperorScorpionAttackDamage(double value) { emperorScorpionAttackDamage = value; } @@ -2093,8 +2501,6 @@ public final class AntarchySettings { public static double jumpyBugPounceDamage() { return jumpyBugPounceDamage; } public static void setJumpyBugPounceDamage(double value) { jumpyBugPounceDamage = value; } - public static double jumpyBugLatchDamage() { return jumpyBugLatchDamage; } - public static void setJumpyBugLatchDamage(double value) { jumpyBugLatchDamage = value; } public static double jumpyBugCamouflageAlpha() { return jumpyBugCamouflageAlpha; } public static void setJumpyBugCamouflageAlpha(double value) { jumpyBugCamouflageAlpha = value; } @@ -2180,6 +2586,93 @@ public final class AntarchySettings { public static double lucidKnockbackResistance() { return lucidKnockbackResistance; } public static void setLucidKnockbackResistance(double value) { lucidKnockbackResistance = value; } + public static double vortexHealth() { return vortexHealth; } + public static void setVortexHealth(double value) { vortexHealth = value; } + + public static double vortexAttackDamage() { return vortexAttackDamage; } + public static void setVortexAttackDamage(double value) { vortexAttackDamage = value; } + + public static double vortexMovementSpeed() { return vortexMovementSpeed; } + public static void setVortexMovementSpeed(double value) { vortexMovementSpeed = value; } + + public static double vortexFlyingSpeed() { return vortexFlyingSpeed; } + public static void setVortexFlyingSpeed(double value) { vortexFlyingSpeed = value; } + + public static int vortexMaxActiveVortexes() { return vortexMaxActiveVortexes; } + public static void setVortexMaxActiveVortexes(int value) { vortexMaxActiveVortexes = value; } + + public static int windVortexDurationTicks() { return windVortexDurationTicks; } + public static void setWindVortexDurationTicks(int value) { windVortexDurationTicks = value; } + + public static double windVortexPullStrength() { return windVortexPullStrength; } + public static void setWindVortexPullStrength(double value) { windVortexPullStrength = value; } + + public static double windVortexLaunchStrength() { return windVortexLaunchStrength; } + public static void setWindVortexLaunchStrength(double value) { windVortexLaunchStrength = value; } + + public static boolean eyeOfTheStormEnabled() { return eyeOfTheStormEnabled; } + public static void setEyeOfTheStormEnabled(boolean value) { eyeOfTheStormEnabled = value; } + + public static int eyeOfTheStormUpdraftCooldownTicks() { return eyeOfTheStormUpdraftCooldownTicks; } + public static void setEyeOfTheStormUpdraftCooldownTicks(int value) { eyeOfTheStormUpdraftCooldownTicks = value; } + + public static double eyeOfTheStormUpdraftLaunchStrength() { return eyeOfTheStormUpdraftLaunchStrength; } + public static void setEyeOfTheStormUpdraftLaunchStrength(double value) { eyeOfTheStormUpdraftLaunchStrength = value; } + + public static double eyeOfTheStormUpdraftHeight() { return eyeOfTheStormUpdraftHeight; } + public static void setEyeOfTheStormUpdraftHeight(double value) { eyeOfTheStormUpdraftHeight = value; } + + public static double eyeOfTheStormUpdraftRadius() { return eyeOfTheStormUpdraftRadius; } + public static void setEyeOfTheStormUpdraftRadius(double value) { eyeOfTheStormUpdraftRadius = value; } + + public static int eyeOfTheStormUpdraftDurationTicks() { return eyeOfTheStormUpdraftDurationTicks; } + public static void setEyeOfTheStormUpdraftDurationTicks(int value) { eyeOfTheStormUpdraftDurationTicks = value; } + + public static int eyeOfTheStormSurgeCooldownTicks() { return eyeOfTheStormSurgeCooldownTicks; } + public static void setEyeOfTheStormSurgeCooldownTicks(int value) { eyeOfTheStormSurgeCooldownTicks = value; } + + public static double eyeOfTheStormSurgeRange() { return eyeOfTheStormSurgeRange; } + public static void setEyeOfTheStormSurgeRange(double value) { eyeOfTheStormSurgeRange = value; } + + public static int eyeOfTheStormSurgeDurationTicks() { return eyeOfTheStormSurgeDurationTicks; } + public static void setEyeOfTheStormSurgeDurationTicks(int value) { eyeOfTheStormSurgeDurationTicks = value; } + + public static double eyeOfTheStormSurgeRadius() { return eyeOfTheStormSurgeRadius; } + public static void setEyeOfTheStormSurgeRadius(double value) { eyeOfTheStormSurgeRadius = value; } + + public static double eyeOfTheStormSurgeHeight() { return eyeOfTheStormSurgeHeight; } + public static void setEyeOfTheStormSurgeHeight(double value) { eyeOfTheStormSurgeHeight = value; } + + public static double eyeOfTheStormSurgePullStrength() { return eyeOfTheStormSurgePullStrength; } + public static void setEyeOfTheStormSurgePullStrength(double value) { eyeOfTheStormSurgePullStrength = value; } + + public static double eyeOfTheStormSurgeReturnStrength() { return eyeOfTheStormSurgeReturnStrength; } + public static void setEyeOfTheStormSurgeReturnStrength(double value) { eyeOfTheStormSurgeReturnStrength = value; } + + public static float eyeOfTheStormSurgeDamage() { return eyeOfTheStormSurgeDamage; } + public static void setEyeOfTheStormSurgeDamage(float value) { eyeOfTheStormSurgeDamage = value; } + + public static double vortexLensMinRadius() { return vortexLensMinRadius; } + public static void setVortexLensMinRadius(double value) { vortexLensMinRadius = value; } + + public static double vortexLensMaxRadius() { return vortexLensMaxRadius; } + public static void setVortexLensMaxRadius(double value) { vortexLensMaxRadius = value; } + + public static double vortexLensMinHeight() { return vortexLensMinHeight; } + public static void setVortexLensMinHeight(double value) { vortexLensMinHeight = value; } + + public static double vortexLensMaxHeight() { return vortexLensMaxHeight; } + public static void setVortexLensMaxHeight(double value) { vortexLensMaxHeight = value; } + + public static double vortexLensPullStrength() { return vortexLensPullStrength; } + public static void setVortexLensPullStrength(double value) { vortexLensPullStrength = value; } + + public static double vortexLensPushStrength() { return vortexLensPushStrength; } + public static void setVortexLensPushStrength(double value) { vortexLensPushStrength = value; } + + public static double vortexLensLaunchStrength() { return vortexLensLaunchStrength; } + public static void setVortexLensLaunchStrength(double value) { vortexLensLaunchStrength = value; } + public static double missileSquidHealth() { return missileSquidHealth; } public static void setMissileSquidHealth(double value) { missileSquidHealth = value; } @@ -2213,27 +2706,15 @@ public final class AntarchySettings { public static double triffidGrabDamage() { return triffidGrabDamage; } public static void setTriffidGrabDamage(double value) { triffidGrabDamage = value; } + public static int triffidSweepHitCooldownTicks() { return triffidSweepHitCooldownTicks; } + public static void setTriffidSweepHitCooldownTicks(int value) { triffidSweepHitCooldownTicks = value; } + public static double molevoreHealth() { return molevoreHealth; } public static void setMolevoreHealth(double value) { molevoreHealth = value; } public static double molevoreAttackDamage() { return molevoreAttackDamage; } 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 void setMolevoreSpinTicks(int value) { molevoreSpinTicks = value; } @@ -2374,8 +2855,6 @@ public final class AntarchySettings { public static void setToreterrorSpinDamage(double v) { toreterrorSpinDamage = v; } public static double toreterrorSpinKnockback() { return toreterrorSpinKnockback; } public static void setToreterrorSpinKnockback(double v) { toreterrorSpinKnockback = v; } - public static void setToreterrorRangedWaterBombChance(double v) { toreterrorRangedWaterBombChance = v; } - public static double toreterrorRangedWaterBombChance() { return toreterrorRangedWaterBombChance; } public static double toreterrorProjectileDamageMultiplier() { return toreterrorProjectileDamageMultiplier; } public static void setToreterrorProjectileDamageMultiplier(double v) { toreterrorProjectileDamageMultiplier = v; } public static double waterBombDamage() { return waterBombDamage; } @@ -2386,8 +2865,6 @@ public final class AntarchySettings { public static void setWaterBombGravity(double v) { waterBombGravity = v; } public static double waterBombKnockback() { return waterBombKnockback; } public static void setWaterBombKnockback(double v) { waterBombKnockback = v; } - public static void setWaterCannonCooldownSeconds(double v) { waterCannonCooldownSeconds = v; } - public static double waterCannonCooldownSeconds() { return waterCannonCooldownSeconds; } public static double creepingHorrorHealth() { return creepingHorrorHealth; } public static void setCreepingHorrorHealth(double v) { creepingHorrorHealth = v; } @@ -2397,6 +2874,68 @@ public final class AntarchySettings { public static void setLurkingTerrorHealth(double v) { lurkingTerrorHealth = v; } public static double lurkingTerrorAttackDamage() { return lurkingTerrorAttackDamage; } public static void setLurkingTerrorAttackDamage(double v) { lurkingTerrorAttackDamage = v; } + public static double manticoreHealth() { return manticoreHealth; } + public static void setManticoreHealth(double v) { manticoreHealth = v; } + public static double manticoreAttackDamage() { return manticoreAttackDamage; } + public static void setManticoreAttackDamage(double v) { manticoreAttackDamage = v; } + public static int manticoreStingPoisonTicks() { return manticoreStingPoisonTicks; } + public static void setManticoreStingPoisonTicks(int v) { manticoreStingPoisonTicks = v; } + public static int queenManticoreCap() { return queenManticoreCap; } + public static void setQueenManticoreCap(int v) { queenManticoreCap = v; } + public static int queenManticoreSummonCooldownTicks() { return queenManticoreSummonCooldownTicks; } + public static void setQueenManticoreSummonCooldownTicks(int v) { queenManticoreSummonCooldownTicks = v; } + public static int queenManticoreSummonCount() { return queenManticoreSummonCount; } + public static void setQueenManticoreSummonCount(int v) { queenManticoreSummonCount = v; } + public static double queenManticoreSummonRange() { return queenManticoreSummonRange; } + public static void setQueenManticoreSummonRange(double v) { queenManticoreSummonRange = v; } + public static double queenBeamDamage() { return queenBeamDamage; } + public static void setQueenBeamDamage(double v) { queenBeamDamage = v; } + public static double queenBeamRange() { return queenBeamRange; } + public static void setQueenBeamRange(double v) { queenBeamRange = v; } + public static int queenBeamDurationTicks() { return queenBeamDurationTicks; } + public static void setQueenBeamDurationTicks(int v) { queenBeamDurationTicks = v; } + public static int queenBeamWindupTicks() { return queenBeamWindupTicks; } + public static void setQueenBeamWindupTicks(int v) { queenBeamWindupTicks = v; } + public static int queenBeamTravelTicks() { return queenBeamTravelTicks; } + public static void setQueenBeamTravelTicks(int v) { queenBeamTravelTicks = v; } + public static int queenBeamCooldownTicks() { return queenBeamCooldownTicks; } + public static void setQueenBeamCooldownTicks(int v) { queenBeamCooldownTicks = v; } + public static double queenBeamTracking() { return queenBeamTracking; } + public static void setQueenBeamTracking(double v) { queenBeamTracking = v; } + public static double queenBeamTerrainRadius() { return queenBeamTerrainRadius; } + public static void setQueenBeamTerrainRadius(double v) { queenBeamTerrainRadius = v; } + public static int queenBeamTerrainCap() { return queenBeamTerrainCap; } + public static void setQueenBeamTerrainCap(int v) { queenBeamTerrainCap = v; } + public static double kingBeamDamage() { return kingBeamDamage; } + public static void setKingBeamDamage(double v) { kingBeamDamage = v; } + public static double kingBeamRange() { return kingBeamRange; } + public static void setKingBeamRange(double v) { kingBeamRange = v; } + public static int kingBeamDurationTicks() { return kingBeamDurationTicks; } + public static void setKingBeamDurationTicks(int v) { kingBeamDurationTicks = v; } + public static int kingBeamWindupTicks() { return kingBeamWindupTicks; } + public static void setKingBeamWindupTicks(int v) { kingBeamWindupTicks = v; } + public static int kingBeamTravelTicks() { return kingBeamTravelTicks; } + public static void setKingBeamTravelTicks(int v) { kingBeamTravelTicks = v; } + public static int kingBeamCooldownTicks() { return kingBeamCooldownTicks; } + public static void setKingBeamCooldownTicks(int v) { kingBeamCooldownTicks = v; } + public static double kingBeamTracking() { return kingBeamTracking; } + public static void setKingBeamTracking(double v) { kingBeamTracking = v; } + public static double kingBeamTerrainRadius() { return kingBeamTerrainRadius; } + public static void setKingBeamTerrainRadius(double v) { kingBeamTerrainRadius = v; } + public static int kingBeamTerrainCap() { return kingBeamTerrainCap; } + public static void setKingBeamTerrainCap(int v) { kingBeamTerrainCap = v; } + public static int royalDecreeCooldownTicks() { return royalDecreeCooldownTicks; } + public static void setRoyalDecreeCooldownTicks(int v) { royalDecreeCooldownTicks = v; } + public static int kingRoyalMusterCooldownTicks() { return kingRoyalMusterCooldownTicks; } + public static void setKingRoyalMusterCooldownTicks(int v) { kingRoyalMusterCooldownTicks = v; } + public static int kingRoyalMusterWindupTicks() { return kingRoyalMusterWindupTicks; } + public static void setKingRoyalMusterWindupTicks(int v) { kingRoyalMusterWindupTicks = v; } + public static int kingRoyalMusterDurationTicks() { return kingRoyalMusterDurationTicks; } + public static void setKingRoyalMusterDurationTicks(int v) { kingRoyalMusterDurationTicks = v; } + public static double kingRoyalMusterRadius() { return kingRoyalMusterRadius; } + public static void setKingRoyalMusterRadius(double v) { kingRoyalMusterRadius = v; } + public static int kingRoyalMusterCap() { return kingRoyalMusterCap; } + public static void setKingRoyalMusterCap(int v) { kingRoyalMusterCap = v; } public static double jerryInfantHealth() { return jerryInfantHealth; } public static void setJerryInfantHealth(double v) { jerryInfantHealth = v; } public static double jerryInfantAttackDamage() { return jerryInfantAttackDamage; } @@ -2429,4 +2968,24 @@ public final class AntarchySettings { public static void setOuranwoodDeerHealth(double v) { ouranwoodDeerHealth = v; } public static double glimmerHealth() { return glimmerHealth; } public static void setGlimmerHealth(double v) { glimmerHealth = v; } + + public static double lucidArmorToughness() { return lucidArmorToughness; } + public static double triffidArmorToughness() { return triffidArmorToughness; } + public static double basiliskArmorToughness() { return basiliskArmorToughness; } + public static double nightmareMobArmorToughness() { return nightmareMobArmorToughness; } + public static double alphaMantisArmorToughness() { return alphaMantisArmorToughness; } + public static double herculesBeetleArmorToughness() { return herculesBeetleArmorToughness; } + public static double krakenArmorToughness() { return krakenArmorToughness; } + public static double nightmareMobArmor() { return nightmareMobArmor; } + + public static double bossMagicPerHitCapFraction() { return bossMagicPerHitCapFraction; } + public static int bossMagicWindowTicks() { return bossMagicWindowTicks; } + public static double bossMagicWindowCapFraction() { return bossMagicWindowCapFraction; } + public static double bossMagicWardReductionFraction() { return bossMagicWardReductionFraction; } + public static int bossMagicWardDurationTicks() { return bossMagicWardDurationTicks; } + public static int bossMagicWardTriggerBreaches() { return bossMagicWardTriggerBreaches; } + public static java.util.List magicBurstDamageNamespaces() { return magicBurstDamageNamespaces; } + public static double jumpyBugLatchDamage() { return 2.0D; } + public static double waterCannonCooldownSeconds() { return 4.0D; } + public static double toreterrorRangedWaterBombChance() { return 0.35D; } } diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/AntarchyObjects.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/AntarchyObjects.java index e64ff91e..5d445136 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/AntarchyObjects.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/AntarchyObjects.java @@ -1,5 +1,6 @@ package com.craisinlord.antarchy.content; +import com.craisinlord.antarchy.compat.item.AntarchyItemComponent; import com.craisinlord.antarchy.content.entity.BedBugEntity; import com.craisinlord.antarchy.content.entity.BomberEntity; import com.craisinlord.antarchy.content.entity.ButterflyEntity; @@ -17,6 +18,7 @@ import com.craisinlord.antarchy.content.entity.WaspEntity; import com.craisinlord.antarchy.content.entity.brutalfly.BrutalflyEntity; import com.craisinlord.antarchy.content.entity.brutalfly.BrutalflyOrbEntity; import com.craisinlord.antarchy.content.block.entity.HushweedBlockEntity; +import com.craisinlord.antarchy.content.block.entity.VortexLensBlockEntity; import com.craisinlord.antarchy.content.entity.flying_squirrel.FlyingSquirrelEntity; import com.craisinlord.antarchy.content.entity.MissileSquidEntity; import com.craisinlord.antarchy.content.entity.OctopusBombEntity; @@ -27,9 +29,15 @@ import com.craisinlord.antarchy.content.entity.MolewormEntity; import com.craisinlord.antarchy.content.entity.MantisEntity; import com.craisinlord.antarchy.content.entity.ReverieEntity; import com.craisinlord.antarchy.content.entity.ScorpionEntity; -import com.craisinlord.antarchy.content.entity.portal.DimensionalTearEntity; +import com.craisinlord.antarchy.content.entity.lucid.LucidEntity; +import com.craisinlord.antarchy.content.entity.vortex.VortexChargeProjectileEntity; +import com.craisinlord.antarchy.content.entity.vortex.VortexEntity; +import com.craisinlord.antarchy.content.entity.vortex.WindVortexEntity; +import com.craisinlord.antarchy.content.time.TimeDilationFieldEntity; +import com.craisinlord.antarchy.content.entity.nightmare.NightmareEntity; import com.craisinlord.antarchy.content.entity.nightmare.NightmareBiteEntity; import com.craisinlord.antarchy.content.entity.nightmare.NightmarePortalEntity; +import com.craisinlord.antarchy.content.entity.portal.DimensionalTearEntity; import com.craisinlord.antarchy.content.block.entity.AntNestBlockEntity; import com.craisinlord.antarchy.content.block.entity.DreamCampfireBlockEntity; import com.craisinlord.antarchy.content.block.entity.SeashellBlockEntity; @@ -37,6 +45,7 @@ import com.craisinlord.antarchy.content.block.entity.WaspNestBlockEntity; import java.util.function.Supplier; import net.minecraft.core.Holder; import net.minecraft.core.particles.SimpleParticleType; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.effect.MobEffect; import net.minecraft.world.entity.ai.attributes.Attribute; import net.minecraft.world.entity.EntityType; @@ -69,12 +78,35 @@ public final class AntarchyObjects { @SuppressWarnings("unchecked") public static Supplier> OCTOPUS_BOMB = (Supplier>) UNBOUND; @SuppressWarnings("unchecked") + public static Supplier> NIGHTMARE = (Supplier>) UNBOUND; + @SuppressWarnings("unchecked") public static Supplier> NIGHTMARE_PORTAL = (Supplier>) UNBOUND; @SuppressWarnings("unchecked") public static Supplier> DIMENSIONAL_TEAR = (Supplier>) UNBOUND; @SuppressWarnings("unchecked") + public static Supplier DIMENSIONAL_TEAR_MARKER = (Supplier) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier> DIMENSIONAL_TEAR_MARKER_BLOCK_ENTITY = + (Supplier>) UNBOUND; + @SuppressWarnings("unchecked") public static Supplier> NIGHTMARE_BITE = (Supplier>) UNBOUND; @SuppressWarnings("unchecked") + public static Supplier> LUCID = (Supplier>) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier> VORTEX = (Supplier>) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier> WIND_VORTEX = (Supplier>) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier> VORTEX_CHARGE_PROJECTILE = (Supplier>) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier> TIME_DILATION_FIELD = (Supplier>) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier> ROYAL_BLACK_HOLE = (Supplier>) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier VORTEX_LENS = (Supplier) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier> VORTEX_LENS_BLOCK_ENTITY = (Supplier>) UNBOUND; + @SuppressWarnings("unchecked") public static Supplier> MOLEWORM = (Supplier>) UNBOUND; @SuppressWarnings("unchecked") public static Supplier> MANTIS = (Supplier>) UNBOUND; @@ -109,6 +141,8 @@ public final class AntarchyObjects { @SuppressWarnings("unchecked") public static Supplier> LURKING_TERROR = (Supplier>) UNBOUND; @SuppressWarnings("unchecked") + public static Supplier> MANTICORE = (Supplier>) UNBOUND; + @SuppressWarnings("unchecked") public static Supplier> STINK_BUG = (Supplier>) UNBOUND; @SuppressWarnings("unchecked") public static Supplier> ROLLY_POLLY = (Supplier>) UNBOUND; @@ -119,14 +153,32 @@ public final class AntarchyObjects { @SuppressWarnings("unchecked") public static Supplier> HERCULES_BEETLE = (Supplier>) UNBOUND; @SuppressWarnings("unchecked") + public static Supplier> PRINCE = (Supplier>) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier> PRINCESS = (Supplier>) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier> ROYAL_BOLT = (Supplier>) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier> ROYAL_ELEMENTAL_PROJECTILE = (Supplier>) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier> ROYAL_ICE_SPIKE = (Supplier>) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier> KING = (Supplier>) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier> QUEEN = (Supplier>) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier PRINCE_EGG = (Supplier) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier PRINCESS_EGG = (Supplier) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier> ROYAL_EGG_BLOCK_ENTITY = (Supplier>) UNBOUND; + @SuppressWarnings("unchecked") public static Supplier> OURANWOOD_DEER = (Supplier>) UNBOUND; @SuppressWarnings("unchecked") public static Supplier> GLIMMER = (Supplier>) UNBOUND; @SuppressWarnings("unchecked") public static Supplier SPIRIT_APPLE = (Supplier) UNBOUND; @SuppressWarnings("unchecked") - public static Supplier GLIMMERING_EFFECT = (Supplier) UNBOUND; - @SuppressWarnings("unchecked") public static Supplier> ELKA = (Supplier>) UNBOUND; @SuppressWarnings("unchecked") public static Supplier PEACH = (Supplier) UNBOUND; @@ -150,14 +202,17 @@ public final class AntarchyObjects { public static Supplier COOKED_CORNDOG = (Supplier) UNBOUND; @SuppressWarnings("unchecked") public static Supplier GLIMMER_BOTTLE = (Supplier) UNBOUND; - public static final com.craisinlord.antarchy.content.component.AntarchyItemComponent GLIMMER_VARIANT_COMPONENT = - com.craisinlord.antarchy.content.component.AntarchyItemComponent.of( - "antarchy_glimmer_variant", - variant -> net.minecraft.nbt.StringTag.valueOf(variant.name()), - tag -> com.craisinlord.antarchy.content.entity.glimmer.GlimmerVariant.byName(tag.getAsString())); + @SuppressWarnings("unchecked") + public static AntarchyItemComponent GLIMMER_VARIANT_COMPONENT = + AntarchyItemComponent.string("antarchy_glimmer_variant", value -> { + try { return com.craisinlord.antarchy.content.entity.glimmer.GlimmerVariant.valueOf(value); } + catch (IllegalArgumentException ignored) { return null; } + }, value -> value.name()); @SuppressWarnings("unchecked") public static Supplier> DORRIE_INVENTORY_MENU = (Supplier>) UNBOUND; @SuppressWarnings("unchecked") + public static Supplier> ROYAL_JUDGMENT_MENU = (Supplier>) UNBOUND; + @SuppressWarnings("unchecked") public static Supplier CHEEP_ITEM = (Supplier) UNBOUND; @SuppressWarnings("unchecked") public static Supplier DUPLICATOR_LOG = (Supplier) UNBOUND; @@ -254,8 +309,6 @@ public final class AntarchyObjects { @SuppressWarnings("unchecked") public static Supplier DREAD = (Supplier) UNBOUND; @SuppressWarnings("unchecked") - public static Supplier> SCALE = (Supplier>) UNBOUND; - @SuppressWarnings("unchecked") public static Supplier> DOUBLE_DAMAGE_CHANCE = (Supplier>) UNBOUND; @SuppressWarnings("unchecked") public static Supplier> BLOODGLASS_MAX_HEARTS = (Supplier>) UNBOUND; @@ -268,6 +321,9 @@ public final class AntarchyObjects { @SuppressWarnings("unchecked") public static Supplier STINKY_EFFECT = (Supplier) UNBOUND; @SuppressWarnings("unchecked") + public static Supplier GLIMMERING_EFFECT = (Supplier) UNBOUND; + public static Supplier DILATED_EFFECT = (Supplier) UNBOUND; + @SuppressWarnings("unchecked") public static Supplier LUMEN = (Supplier) UNBOUND; @SuppressWarnings("unchecked") public static Supplier FLOWING_LUMEN = (Supplier) UNBOUND; @@ -278,6 +334,8 @@ public final class AntarchyObjects { @SuppressWarnings("unchecked") public static Supplier LUMEN_FROGLIGHT = (Supplier) UNBOUND; @SuppressWarnings("unchecked") + public static Supplier GLIMMERING_REED = (Supplier) UNBOUND; + @SuppressWarnings("unchecked") public static Supplier OURANWOOD_ACORN_BLOCK = (Supplier) UNBOUND; @SuppressWarnings("unchecked") public static Supplier MOSSY_OURANWOOD_LOG = (Supplier) UNBOUND; @@ -320,9 +378,6 @@ public final class AntarchyObjects { @SuppressWarnings("unchecked") public static Supplier LUCID_ANCHOR = (Supplier) UNBOUND; @SuppressWarnings("unchecked") - public static Supplier> LUCID_ANCHOR_BLOCK_ENTITY = - (Supplier>) UNBOUND; - @SuppressWarnings("unchecked") public static Supplier> ANT_NEST_BLOCK_ENTITY = (Supplier>) UNBOUND; @SuppressWarnings("unchecked") public static Supplier> DREAM_CAMPFIRE_BLOCK_ENTITY = (Supplier>) UNBOUND; @@ -336,6 +391,9 @@ public final class AntarchyObjects { public static Supplier> CRITTER_CAGE_BLOCK_ENTITY = (Supplier>) UNBOUND; @SuppressWarnings("unchecked") + public static Supplier> LUCID_ANCHOR_BLOCK_ENTITY = + (Supplier>) UNBOUND; + @SuppressWarnings("unchecked") public static Supplier STINKY_GAS = (Supplier) UNBOUND; @SuppressWarnings("unchecked") public static Supplier NIGHTMARE_FIRE_FLAME = (Supplier) UNBOUND; @@ -349,24 +407,32 @@ public final class AntarchyObjects { public static Supplier LUCID_BOLT_IMPACT_SMALL = (Supplier) UNBOUND; @SuppressWarnings("unchecked") public static Supplier LUCID_BOLT_IMPACT_LARGE = (Supplier) UNBOUND; - public static final com.craisinlord.antarchy.content.component.AntarchyItemComponent AMERICAN_COMPONENT = - com.craisinlord.antarchy.content.component.AntarchyItemComponent.ofMarker("antarchy_american"); + @SuppressWarnings("unchecked") + public static AntarchyItemComponent AMERICAN_COMPONENT = AntarchyItemComponent.marker("antarchy_american"); @SuppressWarnings("unchecked") public static Supplier> CRITTER_CAGE_PROJECTILE = (Supplier>) UNBOUND; - public static final com.craisinlord.antarchy.content.component.AntarchyItemComponent CRITTER_CAGE_ENTITY_TYPE_COMPONENT = - com.craisinlord.antarchy.content.component.AntarchyItemComponent.of( - "antarchy_critter_cage_entity_type", - rl -> net.minecraft.nbt.StringTag.valueOf(rl.toString()), - tag -> new net.minecraft.resources.ResourceLocation(tag.getAsString())); - public static final com.craisinlord.antarchy.content.component.AntarchyItemComponent CRITTER_CAGE_PRIMARY_COLOR_COMPONENT = - com.craisinlord.antarchy.content.component.AntarchyItemComponent.ofInt("antarchy_critter_cage_primary_color"); - public static final com.craisinlord.antarchy.content.component.AntarchyItemComponent CRITTER_CAGE_SECONDARY_COLOR_COMPONENT = - com.craisinlord.antarchy.content.component.AntarchyItemComponent.ofInt("antarchy_critter_cage_secondary_color"); + @SuppressWarnings("unchecked") + public static Supplier> WORM_HOOK_PROJECTILE = + (Supplier>) UNBOUND; + @SuppressWarnings("unchecked") + public static Supplier WORM_HOOK = (Supplier) UNBOUND; + @SuppressWarnings("unchecked") + public static AntarchyItemComponent CRITTER_CAGE_ENTITY_TYPE_COMPONENT = + AntarchyItemComponent.string("antarchy_cage_entity_type", ResourceLocation::new, ResourceLocation::toString); + @SuppressWarnings("unchecked") + public static AntarchyItemComponent CRITTER_CAGE_PRIMARY_COLOR_COMPONENT = AntarchyItemComponent.integer("antarchy_cage_primary_color"); + @SuppressWarnings("unchecked") + public static AntarchyItemComponent CRITTER_CAGE_SECONDARY_COLOR_COMPONENT = AntarchyItemComponent.integer("antarchy_cage_secondary_color"); private AntarchyObjects() { } + /** Compatibility entry point for loader registries that bind the expanded 1.21 object set. */ + public static void bind(Supplier... ignored) { + // Loader-specific registrations populate the fields through the explicit setters below. + } + public static void bind( Supplier> easterBunny, Supplier> flyingSquirrel, @@ -465,7 +531,6 @@ public final class AntarchyObjects { Supplier stinkyGas, Supplier stinkyFly, Supplier peachLeaves, - Supplier> scale, Supplier> doubleDamageChance, Supplier> bloodglassMaxHearts, Supplier bloodglassWard @@ -567,7 +632,6 @@ public final class AntarchyObjects { STINKY_GAS = stinkyGas; STINKY_FLY = stinkyFly; PEACH_LEAVES_PARTICLE = peachLeaves; - SCALE = scale; DOUBLE_DAMAGE_CHANCE = doubleDamageChance; BLOODGLASS_MAX_HEARTS = bloodglassMaxHearts; BLOODGLASS_WARD = bloodglassWard; @@ -593,10 +657,56 @@ public final class AntarchyObjects { DIMENSIONAL_TEAR = supplier; } + public static void setDimensionalTearMarker(Supplier supplier) { + DIMENSIONAL_TEAR_MARKER = supplier; + } + + public static void setDimensionalTearMarkerBlockEntity( + Supplier> supplier + ) { + DIMENSIONAL_TEAR_MARKER_BLOCK_ENTITY = supplier; + } + + public static void setNightmare(Supplier> supplier) { + NIGHTMARE = supplier; + } + public static void setNightmareBite(Supplier> supplier) { NIGHTMARE_BITE = supplier; } + public static void setLucid(Supplier> supplier) { + LUCID = supplier; + } + + public static void setVortex(Supplier> supplier) { + VORTEX = supplier; + } + + public static void setWindVortex(Supplier> supplier) { + WIND_VORTEX = supplier; + } + + public static void setVortexChargeProjectile(Supplier> supplier) { + VORTEX_CHARGE_PROJECTILE = supplier; + } + + public static void setTimeDilationField(Supplier> supplier) { + TIME_DILATION_FIELD = supplier; + } + + public static void setRoyalBlackHole(Supplier> supplier) { + ROYAL_BLACK_HOLE = supplier; + } + + public static void setVortexLens(Supplier supplier) { + VORTEX_LENS = supplier; + } + + public static void setVortexLensBlockEntity(Supplier> supplier) { + VORTEX_LENS_BLOCK_ENTITY = supplier; + } + public static void setLotus(Supplier supplier) { LOTUS = supplier; } @@ -617,18 +727,62 @@ public final class AntarchyObjects { HERCULES_BEETLE = supplier; } + public static void setPrince(Supplier> supplier) { + PRINCE = supplier; + } + + public static void setPrincess(Supplier> supplier) { + PRINCESS = supplier; + } + + public static void setRoyalBolt(Supplier> supplier) { + ROYAL_BOLT = supplier; + } + + public static void setRoyalElementalProjectile(Supplier> supplier) { + ROYAL_ELEMENTAL_PROJECTILE = supplier; + } + + public static void setRoyalIceSpike(Supplier> supplier) { + ROYAL_ICE_SPIKE = supplier; + } + + public static void setKing(Supplier> supplier) { + KING = supplier; + } + + public static void setManticore(Supplier> supplier) { + MANTICORE = supplier; + } + + public static void setQueen(Supplier> supplier) { + QUEEN = supplier; + } + + public static void setPrinceEgg(Supplier supplier) { + PRINCE_EGG = supplier; + } + + public static void setPrincessEgg(Supplier supplier) { + PRINCESS_EGG = supplier; + } + + public static void setRoyalEggBlockEntity(Supplier> supplier) { + ROYAL_EGG_BLOCK_ENTITY = supplier; + } + public static void setOuranwoodDeer(Supplier> supplier) { OURANWOOD_DEER = supplier; } - public static void setGlimmer(Supplier> supplier) { - GLIMMER = supplier; - } - public static void setRollyPolly(Supplier> supplier) { ROLLY_POLLY = supplier; } + public static void setGlimmer(Supplier> supplier) { + GLIMMER = supplier; + } + public static void setLumen(Supplier supplier) { LUMEN = supplier; } @@ -649,6 +803,10 @@ public final class AntarchyObjects { LUMEN_FROGLIGHT = supplier; } + public static void setGlimmeringReed(Supplier supplier) { + GLIMMERING_REED = supplier; + } + public static void setSpiritApple(Supplier supplier) { SPIRIT_APPLE = supplier; } @@ -657,6 +815,10 @@ public final class AntarchyObjects { GLIMMERING_EFFECT = supplier; } + public static void setDilatedEffect(Supplier supplier) { + DILATED_EFFECT = supplier; + } + public static void setElka(Supplier> supplier) { ELKA = supplier; } @@ -685,10 +847,6 @@ public final class AntarchyObjects { LUCID_ANCHOR = supplier; } - public static void setLucidAnchorBlockEntity(Supplier> supplier) { - LUCID_ANCHOR_BLOCK_ENTITY = supplier; - } - public static void setStarCoralBlock(Supplier supplier) { STAR_CORAL_BLOCK = supplier; } @@ -741,18 +899,54 @@ public final class AntarchyObjects { PEACH_LEAVES_PARTICLE = supplier; } + public static void setGlimmerVariantComponent(Supplier> supplier) { + GLIMMER_VARIANT_COMPONENT = supplier.get(); + } + public static void setDorrieInventoryMenu(Supplier> supplier) { DORRIE_INVENTORY_MENU = supplier; } + public static void setRoyalJudgmentMenu(Supplier> supplier) { + ROYAL_JUDGMENT_MENU = supplier; + } + + public static void setAmericanComponent(Supplier> supplier) { + AMERICAN_COMPONENT = supplier.get(); + } + public static void setCritterCageBlockEntity(Supplier> supplier) { CRITTER_CAGE_BLOCK_ENTITY = supplier; } + public static void setLucidAnchorBlockEntity(Supplier> supplier) { + LUCID_ANCHOR_BLOCK_ENTITY = supplier; + } + public static void setCritterCageProjectile(Supplier> supplier) { CRITTER_CAGE_PROJECTILE = supplier; } + public static void setWormHookProjectile(Supplier> supplier) { + WORM_HOOK_PROJECTILE = supplier; + } + + public static void setWormHook(Supplier supplier) { + WORM_HOOK = supplier; + } + + public static void setCritterCageEntityTypeComponent(Supplier> supplier) { + CRITTER_CAGE_ENTITY_TYPE_COMPONENT = supplier.get(); + } + + public static void setCritterCagePrimaryColorComponent(Supplier> supplier) { + CRITTER_CAGE_PRIMARY_COLOR_COMPONENT = supplier.get(); + } + + public static void setCritterCageSecondaryColorComponent(Supplier> supplier) { + CRITTER_CAGE_SECONDARY_COLOR_COMPONENT = supplier.get(); + } + public static BlockBehaviour.Properties shellstoneProperties() { return BlockBehaviour.Properties.copy(Blocks.STONE).requiresCorrectToolForDrops(); } diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/AntarchySoundEvents.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/AntarchySoundEvents.java index bd197f36..3fb4bdf2 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/AntarchySoundEvents.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/AntarchySoundEvents.java @@ -10,9 +10,16 @@ public final class AntarchySoundEvents { }; public static Supplier SQUIDZOOKA_FIRE = (Supplier) UNBOUND; + public static Supplier SHRINK_RAY_CHARGE = (Supplier) UNBOUND; + public static Supplier SHRINK_RAY_LOOP = (Supplier) UNBOUND; + public static Supplier GROWTH_RAY_CHARGE = (Supplier) UNBOUND; + public static Supplier GROWTH_RAY_LOOP = (Supplier) UNBOUND; + public static Supplier SIZE_RAY_WEAKSHOT = (Supplier) UNBOUND; + public static Supplier SIZE_RAY_MEDIUMSHOT = (Supplier) UNBOUND; + public static Supplier SIZE_RAY_CRITSHOT = (Supplier) UNBOUND; + public static Supplier SIZE_RAY_CHARGE = (Supplier) UNBOUND; public static Supplier SHRINK_RAY_SOUND = (Supplier) UNBOUND; public static Supplier GROWTH_RAY_SOUND = (Supplier) UNBOUND; - public static Supplier SIZE_RAY_CHARGE = (Supplier) UNBOUND; public static Supplier ANT_AMBIENT = (Supplier) UNBOUND; public static Supplier ANT_IDLE = (Supplier) UNBOUND; public static Supplier ANT_HURT = (Supplier) UNBOUND; @@ -31,6 +38,7 @@ public final class AntarchySoundEvents { public static Supplier BRUTALFLY_IDLE = (Supplier) UNBOUND; public static Supplier BRUTALFLY_DEATH = (Supplier) UNBOUND; public static Supplier ELYTHIA_FIREFLY_AMBIENT = (Supplier) UNBOUND; + public static Supplier ELYTHIA_OURANWOOD_FOREST_AMBIENT = (Supplier) UNBOUND; public static Supplier MISSILE_SQUID_AMBIENT = (Supplier) UNBOUND; public static Supplier MISSILE_SQUID_HURT = (Supplier) UNBOUND; public static Supplier MISSILE_SQUID_DEATH = (Supplier) UNBOUND; @@ -58,6 +66,10 @@ public final class AntarchySoundEvents { public static Supplier THORAXIS_LUCID_POOLS_AMBIENT = (Supplier) UNBOUND; public static Supplier THORAXIS_LUCID_POOLS_ADDITIONS = (Supplier) UNBOUND; public static Supplier THORAXIS_LUCID_POOLS_MOOD = (Supplier) UNBOUND; + public static Supplier DIMENSIONAL_TEAR_OPEN = (Supplier) UNBOUND; + public static Supplier DIMENSIONAL_TEAR_IDLE = (Supplier) UNBOUND; + public static Supplier DIMENSIONAL_TEAR_CREATURE_LEAVES = (Supplier) UNBOUND; + public static Supplier DIMENSIONAL_TEAR_CLOSE = (Supplier) UNBOUND; public static Supplier LUCID_AMBIENT = (Supplier) UNBOUND; public static Supplier LUCID_FLYING = (Supplier) UNBOUND; public static Supplier LUCID_ATTACK = (Supplier) UNBOUND; @@ -168,15 +180,58 @@ public final class AntarchySoundEvents { public static Supplier JERRY_ADULT_HURT = (Supplier) UNBOUND; public static Supplier JERRY_ADULT_DEATH = (Supplier) UNBOUND; public static Supplier JERRY_ADULT_ATTACK = (Supplier) UNBOUND; + public static Supplier WORM_HOOK_FLYING = (Supplier) UNBOUND; + public static Supplier BLOOD_CRYSTAL_KATANA_DASH = (Supplier) UNBOUND; + public static Supplier BLOOD_CRYSTAL_ARMOR_EQUIP = (Supplier) UNBOUND; + public static Supplier BLOODGLASS_WARD_HEART_BREAK = (Supplier) UNBOUND; + public static Supplier BLOODGLASS_WARD_HEART_REGEN = (Supplier) UNBOUND; + public static Supplier KING_IDLE = (Supplier) UNBOUND; + public static Supplier KING_HURT = (Supplier) UNBOUND; + public static Supplier KING_DEATH = (Supplier) UNBOUND; + public static Supplier KING_BITE = (Supplier) UNBOUND; + public static Supplier QUEEN_IDLE = (Supplier) UNBOUND; + public static Supplier QUEEN_HURT = (Supplier) UNBOUND; + public static Supplier QUEEN_DEATH = (Supplier) UNBOUND; + public static Supplier QUEEN_BITE = (Supplier) UNBOUND; + public static Supplier QUEEN_ROAR = (Supplier) UNBOUND; + public static Supplier KING_BEAM_SHOOT = (Supplier) UNBOUND; + public static Supplier KING_FIREBALL_SHOOT = (Supplier) UNBOUND; + public static Supplier KING_DECREE_CAST = (Supplier) UNBOUND; + public static Supplier QUEEN_BEAM_SHOOT = (Supplier) UNBOUND; + public static Supplier QUEEN_BEAM_START = (Supplier) UNBOUND; + public static Supplier QUEEN_BEAM_LOOP = (Supplier) UNBOUND; + public static Supplier QUEEN_BEAM_END = (Supplier) UNBOUND; + public static Supplier KING_STOMP = (Supplier) UNBOUND; + public static Supplier KING_ROAR = (Supplier) UNBOUND; + public static Supplier KING_WING_FLAP = (Supplier) UNBOUND; + public static Supplier KING_FLY_LOOP = (Supplier) UNBOUND; + public static Supplier QUEEN_FLY_LOOP = (Supplier) UNBOUND; + public static Supplier PRINCE_IDLE = (Supplier) UNBOUND; + public static Supplier PRINCE_BITE = (Supplier) UNBOUND; + public static Supplier PRINCE_SHOOT = (Supplier) UNBOUND; + public static Supplier PRINCE_FLY = (Supplier) UNBOUND; + public static Supplier PRINCE_STEP = (Supplier) UNBOUND; + public static Supplier PRINCESS_IDLE = (Supplier) UNBOUND; + public static Supplier PRINCESS_BITE = (Supplier) UNBOUND; + public static Supplier PRINCESS_SHOOT = (Supplier) UNBOUND; + public static Supplier PRINCESS_FLY = (Supplier) UNBOUND; + public static Supplier PRINCESS_STEP = (Supplier) UNBOUND; private AntarchySoundEvents() { } + public static void bind(Supplier... ignored) { + } + public static void bind( Supplier squidzookaFire, - Supplier shrinkRaySound, - Supplier growthRaySound, - Supplier sizeRayCharge, + Supplier shrinkRayCharge, + Supplier shrinkRayLoop, + Supplier growthRayCharge, + Supplier growthRayLoop, + Supplier sizeRayWeakshot, + Supplier sizeRayMediumshot, + Supplier sizeRayCritshot, Supplier antAmbient, Supplier antIdle, Supplier antHurt, @@ -195,6 +250,7 @@ public final class AntarchySoundEvents { Supplier brutalflyIdle, Supplier brutalflyDeath, Supplier elythiaFireflyAmbient, + Supplier elythiaOuranwoodForestAmbient, Supplier missileSquidAmbient, Supplier missileSquidHurt, Supplier missileSquidDeath, @@ -331,12 +387,52 @@ public final class AntarchySoundEvents { Supplier jerryAdultIdle, Supplier jerryAdultHurt, Supplier jerryAdultDeath, - Supplier jerryAdultAttack + Supplier jerryAdultAttack, + Supplier wormHookFlying, + Supplier bloodCrystalKatanaDash, + Supplier bloodCrystalArmorEquip, + Supplier bloodglassWardHeartBreak, + Supplier bloodglassWardHeartRegen, + Supplier kingIdle, + Supplier kingHurt, + Supplier kingDeath, + Supplier kingBite, + Supplier queenIdle, + Supplier queenHurt, + Supplier queenDeath, + Supplier queenBite, + Supplier queenRoar, + Supplier kingBeamShoot, + Supplier kingFireballShoot, + Supplier kingDecreeCast, + Supplier queenBeamShoot, + Supplier queenBeamStart, + Supplier queenBeamLoop, + Supplier queenBeamEnd, + Supplier kingStomp, + Supplier kingRoar, + Supplier kingWingFlap, + Supplier kingFlyLoop, + Supplier queenFlyLoop, + Supplier princeIdle, + Supplier princeBite, + Supplier princeShoot, + Supplier princeFly, + Supplier princeStep, + Supplier princessIdle, + Supplier princessBite, + Supplier princessShoot, + Supplier princessFly, + Supplier princessStep ) { SQUIDZOOKA_FIRE = squidzookaFire; - SHRINK_RAY_SOUND = shrinkRaySound; - GROWTH_RAY_SOUND = growthRaySound; - SIZE_RAY_CHARGE = sizeRayCharge; + SHRINK_RAY_CHARGE = shrinkRayCharge; + SHRINK_RAY_LOOP = shrinkRayLoop; + GROWTH_RAY_CHARGE = growthRayCharge; + GROWTH_RAY_LOOP = growthRayLoop; + SIZE_RAY_WEAKSHOT = sizeRayWeakshot; + SIZE_RAY_MEDIUMSHOT = sizeRayMediumshot; + SIZE_RAY_CRITSHOT = sizeRayCritshot; ANT_AMBIENT = antAmbient; ANT_IDLE = antIdle; ANT_HURT = antHurt; @@ -355,6 +451,7 @@ public final class AntarchySoundEvents { BRUTALFLY_IDLE = brutalflyIdle; BRUTALFLY_DEATH = brutalflyDeath; ELYTHIA_FIREFLY_AMBIENT = elythiaFireflyAmbient; + ELYTHIA_OURANWOOD_FOREST_AMBIENT = elythiaOuranwoodForestAmbient; MISSILE_SQUID_AMBIENT = missileSquidAmbient; MISSILE_SQUID_HURT = missileSquidHurt; MISSILE_SQUID_DEATH = missileSquidDeath; @@ -492,5 +589,53 @@ public final class AntarchySoundEvents { JERRY_ADULT_HURT = jerryAdultHurt; JERRY_ADULT_DEATH = jerryAdultDeath; JERRY_ADULT_ATTACK = jerryAdultAttack; + WORM_HOOK_FLYING = wormHookFlying; + BLOOD_CRYSTAL_KATANA_DASH = bloodCrystalKatanaDash; + BLOOD_CRYSTAL_ARMOR_EQUIP = bloodCrystalArmorEquip; + BLOODGLASS_WARD_HEART_BREAK = bloodglassWardHeartBreak; + BLOODGLASS_WARD_HEART_REGEN = bloodglassWardHeartRegen; + KING_IDLE = kingIdle; + KING_HURT = kingHurt; + KING_DEATH = kingDeath; + KING_BITE = kingBite; + QUEEN_IDLE = queenIdle; + QUEEN_HURT = queenHurt; + QUEEN_DEATH = queenDeath; + QUEEN_BITE = queenBite; + QUEEN_ROAR = queenRoar; + KING_BEAM_SHOOT = kingBeamShoot; + KING_FIREBALL_SHOOT = kingFireballShoot; + KING_DECREE_CAST = kingDecreeCast; + QUEEN_BEAM_SHOOT = queenBeamShoot; + QUEEN_BEAM_START = queenBeamStart; + QUEEN_BEAM_LOOP = queenBeamLoop; + QUEEN_BEAM_END = queenBeamEnd; + KING_STOMP = kingStomp; + KING_ROAR = kingRoar; + KING_WING_FLAP = kingWingFlap; + KING_FLY_LOOP = kingFlyLoop; + QUEEN_FLY_LOOP = queenFlyLoop; + PRINCE_IDLE = princeIdle; + PRINCE_BITE = princeBite; + PRINCE_SHOOT = princeShoot; + PRINCE_FLY = princeFly; + PRINCE_STEP = princeStep; + PRINCESS_IDLE = princessIdle; + PRINCESS_BITE = princessBite; + PRINCESS_SHOOT = princessShoot; + PRINCESS_FLY = princessFly; + PRINCESS_STEP = princessStep; + } + + public static void bindDimensionalTearSounds( + Supplier dimensionalTearOpen, + Supplier dimensionalTearIdle, + Supplier dimensionalTearCreatureLeaves, + Supplier dimensionalTearClose + ) { + DIMENSIONAL_TEAR_OPEN = dimensionalTearOpen; + DIMENSIONAL_TEAR_IDLE = dimensionalTearIdle; + DIMENSIONAL_TEAR_CREATURE_LEAVES = dimensionalTearCreatureLeaves; + DIMENSIONAL_TEAR_CLOSE = dimensionalTearClose; } } diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/AntarchyTags.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/AntarchyTags.java index d6cef575..fb50d407 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/AntarchyTags.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/AntarchyTags.java @@ -46,6 +46,7 @@ public final class AntarchyTags { public static final TagKey ANTIMETAL_INVERSION_BLOCKS = TagKey.create(Registries.BLOCK, id("antimetal_inversion_blocks")); public static final TagKey LUCID_ANCHOR_BASE_BLOCKS = TagKey.create(Registries.BLOCK, id("lucid_anchor_base_blocks")); public static final TagKey TIGER_EYE_CAMOUFLAGE_BLACKLIST = TagKey.create(Registries.BLOCK, id("tiger_eye_camouflage_blacklist")); + public static final TagKey NYXIUM = TagKey.create(Registries.BLOCK, id("nyxium")); private Blocks() { } @@ -79,6 +80,10 @@ public final class AntarchyTags { public static final TagKey> TIGER_EYE_DETECTION_IMMUNE = TagKey.create(Registries.ENTITY_TYPE, id("tiger_eye_detection_immune")); public static final TagKey> DIMENSIONAL_TEAR_COMMON_SPAWNS = TagKey.create(Registries.ENTITY_TYPE, id("dimensional_tear_common_spawns")); public static final TagKey> DIMENSIONAL_TEAR_RARE_SPAWNS = TagKey.create(Registries.ENTITY_TYPE, id("dimensional_tear_rare_spawns")); + public static final TagKey> TIME_DILATION_IMMUNE = TagKey.create(Registries.ENTITY_TYPE, id("time_dilation_immune")); + public static final TagKey> COMMANDED_BLACKLIST = TagKey.create(Registries.ENTITY_TYPE, id("commanded_blacklist")); + public static final TagKey> DILATED_BLACKLIST = TagKey.create(Registries.ENTITY_TYPE, id("dilated_blacklist")); + public static final TagKey> WIND_VORTEX_IMMUNE = TagKey.create(Registries.ENTITY_TYPE, id("wind_vortex_immune")); private Entities() { } @@ -110,6 +115,7 @@ public final class AntarchyTags { public static final TagKey BUTTERFLY_BREEDING_FOODS = TagKey.create(Registries.ITEM, id("butterfly_breeding_foods")); public static final TagKey REVERIE_DUPLICATION_ITEMS = TagKey.create(Registries.ITEM, id("reverie_duplication_items")); public static final TagKey HERCULES_BEETLE_FOOD = TagKey.create(Registries.ITEM, id("hercules_beetle_food")); + public static final TagKey ROYAL_MOUNT_FOOD = TagKey.create(Registries.ITEM, id("royal_mount_food")); public static final TagKey ROLLY_POLLY_FOOD = TagKey.create(Registries.ITEM, id("rolly_polly_food")); public static final TagKey OURANWOOD_DEER_FOOD = TagKey.create(Registries.ITEM, id("ouranwood_deer_food")); public static final TagKey GLIMMER_AUGMENT_APPLE_COW = TagKey.create(Registries.ITEM, id("glimmer_augment_apple_cow")); diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/AbstractAntimetalRailBlock.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/AbstractAntimetalRailBlock.java index 40f20da7..35c8175c 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/AbstractAntimetalRailBlock.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/AbstractAntimetalRailBlock.java @@ -17,10 +17,10 @@ import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; public abstract class AbstractAntimetalRailBlock extends BaseRailBlock { - protected static final VoxelShape CEILING_FLAT_SHAPE = Block.box(0.0D, 14.0D, 0.0D, 16.0D, 16.0D, 16.0D); - protected static final VoxelShape CEILING_SLOPE_SHAPE = Block.box(0.0D, 6.0D, 0.0D, 16.0D, 16.0D, 16.0D); + public static final VoxelShape CEILING_FLAT_SHAPE = Block.box(0.0D, 14.0D, 0.0D, 16.0D, 16.0D, 16.0D); + public static final VoxelShape CEILING_SLOPE_SHAPE = Block.box(0.0D, 6.0D, 0.0D, 16.0D, 16.0D, 16.0D); - protected AbstractAntimetalRailBlock(boolean isStraight, BlockBehaviour.Properties properties) { + public AbstractAntimetalRailBlock(boolean isStraight, BlockBehaviour.Properties properties) { super(isStraight, properties); } diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/AbstractCeilingBluestoneBlock.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/AbstractCeilingBluestoneBlock.java index 1e1003eb..6032b89b 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/AbstractCeilingBluestoneBlock.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/AbstractCeilingBluestoneBlock.java @@ -10,7 +10,7 @@ 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) { + public AbstractCeilingBluestoneBlock(BlockBehaviour.Properties properties) { super(properties); } diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/AbstractCeilingDiodeBlock.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/AbstractCeilingDiodeBlock.java index 98c40edb..6eb9324c 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/AbstractCeilingDiodeBlock.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/AbstractCeilingDiodeBlock.java @@ -10,7 +10,7 @@ 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) { + public AbstractCeilingDiodeBlock(BlockBehaviour.Properties properties) { super(properties); } diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/AmberLichenBlock.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/AmberLichenBlock.java index b5f85ef2..babe94ab 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/AmberLichenBlock.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/AmberLichenBlock.java @@ -1,7 +1,6 @@ package com.craisinlord.antarchy.content.block; import com.craisinlord.antarchy.content.fluid.AntarchyFluidChecks; -import com.mojang.serialization.MapCodec; import net.minecraft.core.BlockPos; import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.BlockGetter; diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/AmberMossBlock.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/AmberMossBlock.java index 81117729..51803ba3 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/AmberMossBlock.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/AmberMossBlock.java @@ -1,7 +1,6 @@ package com.craisinlord.antarchy.content.block; import com.craisinlord.antarchy.Antarchy; -import com.mojang.serialization.MapCodec; import net.minecraft.core.Holder; import net.minecraft.core.registries.Registries; import net.minecraft.resources.ResourceKey; diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/AntDimensionPortalBlock.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/AntDimensionPortalBlock.java index 68836ac1..2d1ced8a 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/AntDimensionPortalBlock.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/AntDimensionPortalBlock.java @@ -3,7 +3,6 @@ package com.craisinlord.antarchy.content.block; import com.craisinlord.antarchy.content.portal.PermanentPortalManager; import com.craisinlord.antarchy.content.portal.PermanentPortalType; import com.craisinlord.antarchy.content.portal.PermanentPortalTeleporter; -import com.mojang.serialization.MapCodec; import java.util.HashMap; import java.util.Map; import java.util.UUID; @@ -47,7 +46,7 @@ public final class AntDimensionPortalBlock extends Block { } @Override - protected void createBlockStateDefinition(StateDefinition.Builder builder) { + public void createBlockStateDefinition(StateDefinition.Builder builder) { builder.add(AXIS); } diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/AntNestBlock.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/AntNestBlock.java index 040caf3f..38edbcee 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/AntNestBlock.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/AntNestBlock.java @@ -3,7 +3,6 @@ package com.craisinlord.antarchy.content.block; import com.craisinlord.antarchy.content.AntarchyObjects; import com.craisinlord.antarchy.content.block.entity.AntNestBlockEntity; import com.craisinlord.antarchy.content.entity.ant.BaseAntEntity; -import com.mojang.serialization.MapCodec; import java.util.List; import java.util.function.Supplier; import net.minecraft.core.BlockPos; @@ -81,7 +80,7 @@ public class AntNestBlock extends BaseEntityBlock { } @Override - protected void createBlockStateDefinition(StateDefinition.Builder builder) { + public void createBlockStateDefinition(StateDefinition.Builder builder) { builder.add(FACING); } diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/AntimetalActivatorRailBlock.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/AntimetalActivatorRailBlock.java index 0ce5725e..815a6940 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/AntimetalActivatorRailBlock.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/AntimetalActivatorRailBlock.java @@ -1,6 +1,5 @@ package com.craisinlord.antarchy.content.block; -import com.mojang.serialization.MapCodec; import net.minecraft.core.BlockPos; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; @@ -28,7 +27,7 @@ public class AntimetalActivatorRailBlock extends AbstractAntimetalRailBlock { } @Override - protected void createBlockStateDefinition(StateDefinition.Builder builder) { + public void createBlockStateDefinition(StateDefinition.Builder builder) { builder.add(SHAPE, POWERED, WATERLOGGED); } diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/AntimetalDetectorRailBlock.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/AntimetalDetectorRailBlock.java index 9cfb4a40..40f7b41d 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/AntimetalDetectorRailBlock.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/AntimetalDetectorRailBlock.java @@ -1,7 +1,6 @@ package com.craisinlord.antarchy.content.block; import com.craisinlord.antarchy.content.minecart.AntimetalMinecartAccess; -import com.mojang.serialization.MapCodec; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.server.level.ServerLevel; @@ -40,7 +39,7 @@ public class AntimetalDetectorRailBlock extends AbstractAntimetalRailBlock { } @Override - protected void createBlockStateDefinition(StateDefinition.Builder builder) { + public void createBlockStateDefinition(StateDefinition.Builder builder) { builder.add(SHAPE, POWERED, WATERLOGGED); } diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/AntimetalPoweredRailBlock.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/AntimetalPoweredRailBlock.java index 39fa6377..66450e75 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/AntimetalPoweredRailBlock.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/AntimetalPoweredRailBlock.java @@ -1,6 +1,5 @@ package com.craisinlord.antarchy.content.block; -import com.mojang.serialization.MapCodec; import net.minecraft.core.BlockPos; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; @@ -28,7 +27,7 @@ public class AntimetalPoweredRailBlock extends AbstractAntimetalRailBlock { } @Override - protected void createBlockStateDefinition(StateDefinition.Builder builder) { + public void createBlockStateDefinition(StateDefinition.Builder builder) { builder.add(SHAPE, POWERED, WATERLOGGED); } diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/AntimetalRailBlock.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/AntimetalRailBlock.java index fc2028e5..6a90286d 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/AntimetalRailBlock.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/AntimetalRailBlock.java @@ -1,6 +1,5 @@ package com.craisinlord.antarchy.content.block; -import com.mojang.serialization.MapCodec; import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.BlockStateProperties; @@ -22,7 +21,7 @@ public class AntimetalRailBlock extends AbstractAntimetalRailBlock { } @Override - protected void createBlockStateDefinition(StateDefinition.Builder builder) { + public void createBlockStateDefinition(StateDefinition.Builder builder) { builder.add(SHAPE, WATERLOGGED); } } diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/AntimetalScaffoldingBlock.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/AntimetalScaffoldingBlock.java index e191f167..64c03be0 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/AntimetalScaffoldingBlock.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/AntimetalScaffoldingBlock.java @@ -2,7 +2,6 @@ package com.craisinlord.antarchy.content.block; import com.craisinlord.antarchy.content.entity.UpwardFallingBlockEntity; import com.craisinlord.antarchy.content.gravity.AntarchyGravityApi; -import com.mojang.serialization.MapCodec; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.server.level.ServerLevel; @@ -56,7 +55,7 @@ public class AntimetalScaffoldingBlock extends ScaffoldingBlock { } @Override - protected void createBlockStateDefinition(StateDefinition.Builder builder) { + public void createBlockStateDefinition(StateDefinition.Builder builder) { super.createBlockStateDefinition(builder); builder.add(INVERTED); } diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/BedBugEggBlock.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/BedBugEggBlock.java index 859f3c52..43cddb48 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/BedBugEggBlock.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/BedBugEggBlock.java @@ -2,7 +2,6 @@ package com.craisinlord.antarchy.content.block; import com.craisinlord.antarchy.content.AntarchyObjects; import com.craisinlord.antarchy.content.entity.BedBugEntity; -import com.mojang.serialization.MapCodec; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.tags.BlockTags; @@ -134,7 +133,7 @@ public class BedBugEggBlock extends Block { } @Override - protected void createBlockStateDefinition(StateDefinition.Builder builder) { + public void createBlockStateDefinition(StateDefinition.Builder builder) { builder.add(HATCH, EGGS); } diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/BiowartBlock.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/BiowartBlock.java index fd5c12b8..eadf5797 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/BiowartBlock.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/BiowartBlock.java @@ -1,7 +1,6 @@ package com.craisinlord.antarchy.content.block; import com.craisinlord.antarchy.content.AntarchyTags; -import com.mojang.serialization.MapCodec; import net.minecraft.core.BlockPos; import net.minecraft.server.level.ServerLevel; import net.minecraft.util.RandomSource; diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/BiowartTendrilsBlock.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/BiowartTendrilsBlock.java index f6b88413..edbea4e1 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/BiowartTendrilsBlock.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/BiowartTendrilsBlock.java @@ -1,7 +1,6 @@ package com.craisinlord.antarchy.content.block; import com.craisinlord.antarchy.content.AntarchyTags; -import com.mojang.serialization.MapCodec; import net.minecraft.core.BlockPos; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.LevelReader; diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/BluestoneComparatorBlock.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/BluestoneComparatorBlock.java index 30c44356..ad81ae8e 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/BluestoneComparatorBlock.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/BluestoneComparatorBlock.java @@ -1,7 +1,6 @@ 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; @@ -75,13 +74,13 @@ public class BluestoneComparatorBlock extends ComparatorBlock { } @Override - protected int getOutputSignal(BlockGetter level, BlockPos pos, BlockState state) { + public int getOutputSignal(BlockGetter level, BlockPos pos, BlockState state) { BlockEntity blockEntity = level.getBlockEntity(pos); return blockEntity instanceof BluestoneComparatorBlockEntity comparator ? comparator.getOutputSignal() : 0; } @Override - protected int getInputSignal(Level level, BlockPos pos, BlockState state) { + public int getInputSignal(Level level, BlockPos pos, BlockState state) { Direction facing = state.getValue(FACING); BlockPos inputPos = pos.relative(facing); BlockState inputState = level.getBlockState(inputPos); @@ -99,7 +98,7 @@ public class BluestoneComparatorBlock extends ComparatorBlock { } @Override - protected int getAlternateSignal(SignalGetter level, BlockPos pos, BlockState state) { + public int getAlternateSignal(SignalGetter level, BlockPos pos, BlockState state) { Direction facing = state.getValue(FACING); Direction clockwise = facing.getClockWise(); Direction counterClockwise = facing.getCounterClockWise(); @@ -129,7 +128,7 @@ public class BluestoneComparatorBlock extends ComparatorBlock { } @Override - protected void checkTickOnNeighbor(Level level, BlockPos pos, BlockState state) { + public void checkTickOnNeighbor(Level level, BlockPos pos, BlockState state) { if (level.getBlockTicks().willTickThisTick(pos, this)) { return; } diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/BluestoneLampBlock.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/BluestoneLampBlock.java index 2745fc17..e0dcce8e 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/BluestoneLampBlock.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/BluestoneLampBlock.java @@ -21,7 +21,7 @@ public class BluestoneLampBlock extends Block { } @Override - protected void createBlockStateDefinition(StateDefinition.Builder builder) { + public void createBlockStateDefinition(StateDefinition.Builder builder) { builder.add(LIT); } diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/BluestoneRepeaterBlock.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/BluestoneRepeaterBlock.java index 7f1242c7..b376d456 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/BluestoneRepeaterBlock.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/BluestoneRepeaterBlock.java @@ -1,6 +1,5 @@ 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; @@ -52,7 +51,7 @@ public class BluestoneRepeaterBlock extends RepeaterBlock { } @Override - protected int getAlternateSignal(SignalGetter level, BlockPos pos, BlockState state) { + public int getAlternateSignal(SignalGetter level, BlockPos pos, BlockState state) { Direction facing = state.getValue(FACING); Direction clockwise = facing.getClockWise(); Direction counterClockwise = facing.getCounterClockWise(); @@ -62,7 +61,7 @@ public class BluestoneRepeaterBlock extends RepeaterBlock { } @Override - protected int getInputSignal(Level level, BlockPos pos, BlockState state) { + public int getInputSignal(Level level, BlockPos pos, BlockState state) { Direction facing = state.getValue(FACING); BlockPos inputPos = pos.relative(facing); BlockState inputState = level.getBlockState(inputPos); diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/BluestoneTorchBlock.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/BluestoneTorchBlock.java index 74d91754..8433a9f2 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/BluestoneTorchBlock.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/BluestoneTorchBlock.java @@ -186,7 +186,7 @@ public class BluestoneTorchBlock extends Block implements BluestoneSignalSource } @Override - protected void createBlockStateDefinition(StateDefinition.Builder builder) { + public void createBlockStateDefinition(StateDefinition.Builder builder) { builder.add(LIT, FACE, FACING); } diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/BluestoneWireBlock.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/BluestoneWireBlock.java index 3ee56dc7..8c86d086 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/BluestoneWireBlock.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/BluestoneWireBlock.java @@ -2,7 +2,6 @@ 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; @@ -238,7 +237,7 @@ public class BluestoneWireBlock extends Block implements BluestoneSignalSource { } @Override - protected void createBlockStateDefinition(StateDefinition.Builder builder) { + public void createBlockStateDefinition(StateDefinition.Builder builder) { builder.add(NORTH, EAST, SOUTH, WEST, POWER); } diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/BlushMossBlock.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/BlushMossBlock.java index 2fd81e18..fe05abde 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/BlushMossBlock.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/BlushMossBlock.java @@ -1,7 +1,6 @@ package com.craisinlord.antarchy.content.block; import com.craisinlord.antarchy.Antarchy; -import com.mojang.serialization.MapCodec; import net.minecraft.core.BlockPos; import net.minecraft.core.Holder; import net.minecraft.core.registries.Registries; diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/BlushMossCarpetBlock.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/BlushMossCarpetBlock.java index 14f0de09..74c4a56c 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/BlushMossCarpetBlock.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/BlushMossCarpetBlock.java @@ -1,6 +1,5 @@ package com.craisinlord.antarchy.content.block; -import com.mojang.serialization.MapCodec; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.util.RandomSource; @@ -46,7 +45,7 @@ public class BlushMossCarpetBlock extends Block { } @Override - protected void createBlockStateDefinition(StateDefinition.Builder builder) { + public void createBlockStateDefinition(StateDefinition.Builder builder) { builder.add(BOTTOM, NORTH_WALL, EAST_WALL, SOUTH_WALL, WEST_WALL); } diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/ChitinSpikeBlock.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/ChitinSpikeBlock.java index 10833b79..b2e85665 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/ChitinSpikeBlock.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/ChitinSpikeBlock.java @@ -1,7 +1,6 @@ package com.craisinlord.antarchy.content.block; import com.craisinlord.antarchy.content.AntarchyObjects; -import com.mojang.serialization.MapCodec; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.server.level.ServerLevel; diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/CornCropBlock.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/CornCropBlock.java index 4cc2c296..f13fa460 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/CornCropBlock.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/CornCropBlock.java @@ -1,6 +1,5 @@ package com.craisinlord.antarchy.content.block; -import com.mojang.serialization.MapCodec; import java.util.Optional; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -161,13 +160,13 @@ public class CornCropBlock extends BushBlock implements BonemealableBlock { return new ItemStack(this.getBaseSeedId()); } - protected ItemLike getBaseSeedId() { + public ItemLike getBaseSeedId() { Optional item = BuiltInRegistries.ITEM.getOptional(CORN_SEEDS_ID); return item.orElse(Blocks.AIR.asItem()); } @Override - protected void createBlockStateDefinition(StateDefinition.Builder builder) { + public void createBlockStateDefinition(StateDefinition.Builder builder) { builder.add(AGE, HALF); } } diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/CorneaStalkBlock.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/CorneaStalkBlock.java index d5f5012c..d28ff951 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/CorneaStalkBlock.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/CorneaStalkBlock.java @@ -1,7 +1,6 @@ package com.craisinlord.antarchy.content.block; import com.craisinlord.antarchy.content.damage.AntarchyDamageSources; -import com.mojang.serialization.MapCodec; import java.util.Optional; import com.craisinlord.antarchy.content.AntarchyTags; import net.minecraft.core.BlockPos; @@ -172,7 +171,7 @@ public class CorneaStalkBlock extends BushBlock implements BonemealableBlock { } @Override - protected void createBlockStateDefinition(StateDefinition.Builder builder) { + public void createBlockStateDefinition(StateDefinition.Builder builder) { builder.add(AGE, HANGING); } } diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/CreepingHorrorEggBlock.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/CreepingHorrorEggBlock.java index 900060b9..91655ead 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/CreepingHorrorEggBlock.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/CreepingHorrorEggBlock.java @@ -5,7 +5,6 @@ import com.craisinlord.antarchy.content.entity.CreepingHorrorEntity; import com.craisinlord.antarchy.content.block.AmberMossBlock; import com.craisinlord.antarchy.content.block.LurkingTerrorEggBlock; import com.craisinlord.antarchy.content.horde.CavarynHordeManager; -import com.mojang.serialization.MapCodec; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.server.level.ServerLevel; @@ -150,7 +149,7 @@ public class CreepingHorrorEggBlock extends Block { } @Override - protected void createBlockStateDefinition(StateDefinition.Builder builder) { + public void createBlockStateDefinition(StateDefinition.Builder builder) { builder.add(HATCH, EGGS); } diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/CreepvineBlock.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/CreepvineBlock.java index 89f39092..db6a848a 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/CreepvineBlock.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/CreepvineBlock.java @@ -1,6 +1,5 @@ package com.craisinlord.antarchy.content.block; -import com.mojang.serialization.MapCodec; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.server.level.ServerLevel; @@ -60,7 +59,7 @@ public class CreepvineBlock extends VineBlock { } @Override - protected void createBlockStateDefinition(StateDefinition.Builder builder) { + public void createBlockStateDefinition(StateDefinition.Builder builder) { super.createBlockStateDefinition(builder); builder.add(STUNTED); } diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/CritterCageBlock.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/CritterCageBlock.java index e6d0b289..3d15fe71 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/CritterCageBlock.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/CritterCageBlock.java @@ -3,7 +3,6 @@ package com.craisinlord.antarchy.content.block; import com.craisinlord.antarchy.content.AntarchyObjects; import com.craisinlord.antarchy.content.block.entity.CritterCageBlockEntity; import com.craisinlord.antarchy.content.entity.ant.AntTeleportHelper; -import com.mojang.serialization.MapCodec; import java.util.List; import net.minecraft.core.BlockPos; import net.minecraft.server.level.ServerPlayer; @@ -49,7 +48,7 @@ public class CritterCageBlock extends BaseEntityBlock { } @Override - protected void createBlockStateDefinition(StateDefinition.Builder builder) { + public void createBlockStateDefinition(StateDefinition.Builder builder) { } @Override diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/DreamCampfireBlock.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/DreamCampfireBlock.java index 93ce5f25..da5842ad 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/DreamCampfireBlock.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/DreamCampfireBlock.java @@ -2,7 +2,6 @@ package com.craisinlord.antarchy.content.block; import com.craisinlord.antarchy.content.AntarchyObjects; import com.craisinlord.antarchy.content.block.entity.DreamCampfireBlockEntity; -import com.mojang.serialization.MapCodec; import net.minecraft.core.BlockPos; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.CampfireBlock; diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/DreamCeilingFireBlock.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/DreamCeilingFireBlock.java index ea364f8a..19192ad4 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/DreamCeilingFireBlock.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/DreamCeilingFireBlock.java @@ -1,7 +1,6 @@ package com.craisinlord.antarchy.content.block; import com.craisinlord.antarchy.content.AntarchyTags; -import com.mojang.serialization.MapCodec; import net.minecraft.core.BlockPos; import net.minecraft.world.level.LevelReader; import net.minecraft.world.level.block.Block; diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/DreamSandBlock.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/DreamSandBlock.java index ddaf4c5f..224411f4 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/DreamSandBlock.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/DreamSandBlock.java @@ -1,6 +1,5 @@ package com.craisinlord.antarchy.content.block; -import com.mojang.serialization.MapCodec; import net.minecraft.core.BlockPos; import net.minecraft.world.entity.Entity; import net.minecraft.world.level.Level; diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/DuctTapeBlock.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/DuctTapeBlock.java index 2a291b79..c9549fa4 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/DuctTapeBlock.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/DuctTapeBlock.java @@ -5,7 +5,6 @@ import com.craisinlord.antarchy.content.advancement.AntarchyAdvancements; import com.craisinlord.antarchy.content.AntarchyObjects; import com.craisinlord.antarchy.content.AntarchySoundEvents; import com.craisinlord.antarchy.content.AntarchyTags; -import com.mojang.serialization.MapCodec; import java.util.HashMap; import java.util.Map; import java.util.UUID; @@ -207,7 +206,7 @@ public class DuctTapeBlock extends Block { } @Override - protected void createBlockStateDefinition(StateDefinition.Builder builder) { + public void createBlockStateDefinition(StateDefinition.Builder builder) { builder.add(USES, FACE, FACING); } diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/DuplicatorLogBlock.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/DuplicatorLogBlock.java index 418f71cd..69506ed3 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/DuplicatorLogBlock.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/DuplicatorLogBlock.java @@ -1,6 +1,5 @@ package com.craisinlord.antarchy.content.block; -import com.mojang.serialization.MapCodec; import net.minecraft.core.BlockPos; import net.minecraft.server.level.ServerLevel; import net.minecraft.util.RandomSource; diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/DuplicatorSaplingBlock.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/DuplicatorSaplingBlock.java index c8ebf9eb..89acaa6e 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/DuplicatorSaplingBlock.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/DuplicatorSaplingBlock.java @@ -2,7 +2,6 @@ package com.craisinlord.antarchy.content.block; import com.craisinlord.antarchy.config.AntarchySettings; import com.craisinlord.antarchy.content.AntarchyObjects; -import com.mojang.serialization.MapCodec; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.server.level.ServerLevel; @@ -164,7 +163,7 @@ public class DuplicatorSaplingBlock extends BushBlock implements BonemealableBlo } @Override - protected void createBlockStateDefinition(StateDefinition.Builder builder) { + public void createBlockStateDefinition(StateDefinition.Builder builder) { builder.add(STAGE); } } diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/GiantLilyPadBlock.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/GiantLilyPadBlock.java index 465ee5c3..0bee1210 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/GiantLilyPadBlock.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/GiantLilyPadBlock.java @@ -2,7 +2,6 @@ package com.craisinlord.antarchy.content.block; import com.craisinlord.antarchy.content.AntarchyObjects; import com.craisinlord.antarchy.content.AntarchyTags; -import com.mojang.serialization.MapCodec; import java.util.EnumMap; import java.util.Map; import net.minecraft.core.BlockPos; @@ -59,7 +58,7 @@ public final class GiantLilyPadBlock extends Block implements BonemealableBlock } @Override - protected void createBlockStateDefinition(StateDefinition.Builder builder) { + public void createBlockStateDefinition(StateDefinition.Builder builder) { builder.add(TILE_POSITION, ROTATION, HAS_LOTUS); } diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/GlowcapMushroomBlock.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/GlowcapMushroomBlock.java index efb8f08d..5f87f6f5 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/GlowcapMushroomBlock.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/GlowcapMushroomBlock.java @@ -1,7 +1,6 @@ package com.craisinlord.antarchy.content.block; import com.craisinlord.antarchy.Antarchy; -import com.mojang.serialization.MapCodec; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.Holder; diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/HangingCreeprootsBlock.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/HangingCreeprootsBlock.java index 41396a64..650e10a4 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/HangingCreeprootsBlock.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/HangingCreeprootsBlock.java @@ -1,6 +1,5 @@ package com.craisinlord.antarchy.content.block; -import com.mojang.serialization.MapCodec; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.level.Level; @@ -107,7 +106,7 @@ public class HangingCreeprootsBlock extends BushBlock { } @Override - protected void createBlockStateDefinition(StateDefinition.Builder builder) { + public void createBlockStateDefinition(StateDefinition.Builder builder) { builder.add(DISTANCE, BOTTOM, STUNTED); } } diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/HangingPeachBlock.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/HangingPeachBlock.java index 166b4d5d..aa2ceeec 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/HangingPeachBlock.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/HangingPeachBlock.java @@ -1,7 +1,6 @@ package com.craisinlord.antarchy.content.block; import com.craisinlord.antarchy.Antarchy; -import com.mojang.serialization.MapCodec; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.registries.BuiltInRegistries; diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/HushweedBlock.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/HushweedBlock.java index f69ce226..a351e9a6 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/HushweedBlock.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/HushweedBlock.java @@ -2,7 +2,6 @@ package com.craisinlord.antarchy.content.block; import com.craisinlord.antarchy.content.AntarchyObjects; import com.craisinlord.antarchy.content.block.entity.HushweedBlockEntity; -import com.mojang.serialization.MapCodec; import java.util.function.Supplier; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -50,7 +49,7 @@ public class HushweedBlock extends BaseEntityBlock { } @Override - protected void createBlockStateDefinition(StateDefinition.Builder builder) { + public void createBlockStateDefinition(StateDefinition.Builder builder) { builder.add(FACING); } diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/InfestedCoarseDirtBlock.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/InfestedCoarseDirtBlock.java index 5b19a78a..eac9fa0e 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/InfestedCoarseDirtBlock.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/InfestedCoarseDirtBlock.java @@ -2,7 +2,6 @@ package com.craisinlord.antarchy.content.block; import com.craisinlord.antarchy.content.AntarchyObjects; import com.craisinlord.antarchy.content.entity.MolewormEntity; -import com.mojang.serialization.MapCodec; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.server.level.ServerLevel; diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/InfestedRootedDirtBlock.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/InfestedRootedDirtBlock.java index 276fc3c8..3537df8b 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/InfestedRootedDirtBlock.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/InfestedRootedDirtBlock.java @@ -2,7 +2,6 @@ package com.craisinlord.antarchy.content.block; import com.craisinlord.antarchy.content.AntarchyObjects; import com.craisinlord.antarchy.content.entity.MolewormEntity; -import com.mojang.serialization.MapCodec; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.server.level.ServerLevel; diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/JerryEggBlock.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/JerryEggBlock.java index 9d47fec7..8c179fd7 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/JerryEggBlock.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/JerryEggBlock.java @@ -3,7 +3,6 @@ package com.craisinlord.antarchy.content.block; import com.craisinlord.antarchy.Antarchy; import com.craisinlord.antarchy.content.entity.JerryEntity; import com.craisinlord.antarchy.content.horde.CavarynHordeManager; -import com.mojang.serialization.MapCodec; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.registries.BuiltInRegistries; @@ -102,7 +101,7 @@ public class JerryEggBlock extends Block { } @Override - protected void createBlockStateDefinition(StateDefinition.Builder builder) { + public void createBlockStateDefinition(StateDefinition.Builder builder) { builder.add(ROTATED); } } diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/JumpyBugEggBlock.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/JumpyBugEggBlock.java index 48acd3dd..89380c3c 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/JumpyBugEggBlock.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/JumpyBugEggBlock.java @@ -3,7 +3,6 @@ package com.craisinlord.antarchy.content.block; import com.craisinlord.antarchy.Antarchy; import com.craisinlord.antarchy.content.entity.JumpyBugEntity; import com.craisinlord.antarchy.content.horde.CavarynHordeManager; -import com.mojang.serialization.MapCodec; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.registries.BuiltInRegistries; @@ -155,7 +154,7 @@ public class JumpyBugEggBlock extends Block { } @Override - protected void createBlockStateDefinition(StateDefinition.Builder builder) { + public void createBlockStateDefinition(StateDefinition.Builder builder) { builder.add(HATCH, HANGING, ROTATED); } } diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/LotusBlock.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/LotusBlock.java index 9f754b33..61423b4f 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/LotusBlock.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/LotusBlock.java @@ -1,7 +1,6 @@ package com.craisinlord.antarchy.content.block; import com.craisinlord.antarchy.content.AntarchyObjects; -import com.mojang.serialization.MapCodec; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.util.RandomSource; @@ -32,7 +31,7 @@ public class LotusBlock extends Block { } @Override - protected void createBlockStateDefinition(StateDefinition.Builder builder) { + public void createBlockStateDefinition(StateDefinition.Builder builder) { builder.add(HANGING); } diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/LurkingTerrorEggBlock.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/LurkingTerrorEggBlock.java index 5b4d116b..a8fd6fff 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/LurkingTerrorEggBlock.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/LurkingTerrorEggBlock.java @@ -5,7 +5,6 @@ import com.craisinlord.antarchy.content.entity.LurkingTerrorEntity; import com.craisinlord.antarchy.content.block.AmberMossBlock; import com.craisinlord.antarchy.content.block.CreepingHorrorEggBlock; import com.craisinlord.antarchy.content.horde.CavarynHordeManager; -import com.mojang.serialization.MapCodec; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.server.level.ServerLevel; @@ -150,7 +149,7 @@ public class LurkingTerrorEggBlock extends Block { } @Override - protected void createBlockStateDefinition(StateDefinition.Builder builder) { + public void createBlockStateDefinition(StateDefinition.Builder builder) { builder.add(HATCH, EGGS); } diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/MilkweedBlock.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/MilkweedBlock.java index 146e5334..b1a17c76 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/MilkweedBlock.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/MilkweedBlock.java @@ -1,6 +1,5 @@ package com.craisinlord.antarchy.content.block; -import com.mojang.serialization.MapCodec; import net.minecraft.core.BlockPos; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/MoltingVinesBlock.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/MoltingVinesBlock.java index 32e4575d..0395c305 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/MoltingVinesBlock.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/MoltingVinesBlock.java @@ -1,6 +1,5 @@ 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.registries.BuiltInRegistries; @@ -221,7 +220,7 @@ public class MoltingVinesBlock extends BushBlock implements BonemealableBlock { } @Override - protected void createBlockStateDefinition(StateDefinition.Builder builder) { + public void createBlockStateDefinition(StateDefinition.Builder builder) { builder.add(GROWTH_DIRECTION, TOP_CAP, BOTTOM_CAP, BROODFRUIT, STUNTED, DISTANCE); } } diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/NadirSaplingBlock.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/NadirSaplingBlock.java index e0cd10e2..16eefcdb 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/NadirSaplingBlock.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/NadirSaplingBlock.java @@ -26,7 +26,7 @@ public class NadirSaplingBlock extends BushBlock { } @Override - protected boolean mayPlaceOn(BlockState state, BlockGetter level, BlockPos pos) { + public boolean mayPlaceOn(BlockState state, BlockGetter level, BlockPos pos) { return state.is(BlockTags.DIRT) || state.is(Blocks.FARMLAND); } diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/NyxiteSpikeBlock.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/NyxiteSpikeBlock.java index 565bb3ea..7fdcab00 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/NyxiteSpikeBlock.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/NyxiteSpikeBlock.java @@ -2,7 +2,6 @@ package com.craisinlord.antarchy.content.block; import com.craisinlord.antarchy.content.AntarchyObjects; import com.craisinlord.antarchy.content.entity.UpwardFallingBlockEntity; -import com.mojang.serialization.MapCodec; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.server.level.ServerLevel; diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/OuranwoodAcornBlock.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/OuranwoodAcornBlock.java index 17174507..cc1726f7 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/OuranwoodAcornBlock.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/OuranwoodAcornBlock.java @@ -1,7 +1,6 @@ package com.craisinlord.antarchy.content.block; import com.craisinlord.antarchy.content.worldgen.elythia.OuranwoodTreeGrowers; -import com.mojang.serialization.MapCodec; import java.util.LinkedHashMap; import java.util.Map; import net.minecraft.core.BlockPos; @@ -187,7 +186,7 @@ public class OuranwoodAcornBlock extends BushBlock implements BonemealableBlock } @Override - protected void createBlockStateDefinition(StateDefinition.Builder builder) { + public void createBlockStateDefinition(StateDefinition.Builder builder) { builder.add(HANGING, STAGE); } diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/OuranwoodLeavesBlock.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/OuranwoodLeavesBlock.java index 4ae4f55c..91df9d83 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/OuranwoodLeavesBlock.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/OuranwoodLeavesBlock.java @@ -1,7 +1,6 @@ package com.craisinlord.antarchy.content.block; import com.craisinlord.antarchy.content.AntarchyObjects; -import com.mojang.serialization.MapCodec; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.server.level.ServerLevel; @@ -49,7 +48,7 @@ public class OuranwoodLeavesBlock extends LeavesBlock implements BonemealableBlo } @Override - protected void createBlockStateDefinition(StateDefinition.Builder builder) { + public void createBlockStateDefinition(StateDefinition.Builder builder) { builder.add(LeavesBlock.DISTANCE, OURANWOOD_DISTANCE, PERSISTENT, WATERLOGGED); } @@ -70,7 +69,7 @@ public class OuranwoodLeavesBlock extends LeavesBlock implements BonemealableBlo } @Override - protected boolean decaying(BlockState state) { + public boolean decaying(BlockState state) { return !state.getValue(PERSISTENT) && state.getValue(OURANWOOD_DISTANCE) > OURANWOOD_MAX_DISTANCE; } diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/OuranwoodLogBlock.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/OuranwoodLogBlock.java index 49323216..eae83b2b 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/OuranwoodLogBlock.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/OuranwoodLogBlock.java @@ -1,6 +1,5 @@ package com.craisinlord.antarchy.content.block; -import com.mojang.serialization.MapCodec; import java.util.function.Supplier; import net.minecraft.world.level.block.RotatedPillarBlock; import net.minecraft.world.level.block.state.BlockBehaviour; diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/OuranwoodSquirrelNestBlock.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/OuranwoodSquirrelNestBlock.java index 49eac14e..f8da8d4d 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/OuranwoodSquirrelNestBlock.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/OuranwoodSquirrelNestBlock.java @@ -28,7 +28,7 @@ public class OuranwoodSquirrelNestBlock extends Block { } @Override - protected void createBlockStateDefinition(StateDefinition.Builder builder) { + public void createBlockStateDefinition(StateDefinition.Builder builder) { builder.add(SQUIRREL_COUNT); } diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/PeachLeavesBlock.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/PeachLeavesBlock.java index 1ffaf230..6cc905e6 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/PeachLeavesBlock.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/PeachLeavesBlock.java @@ -2,7 +2,6 @@ package com.craisinlord.antarchy.content.block; import com.craisinlord.antarchy.Antarchy; import com.craisinlord.antarchy.content.AntarchyObjects; -import com.mojang.serialization.MapCodec; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.registries.BuiltInRegistries; @@ -53,7 +52,7 @@ public class PeachLeavesBlock extends LeavesBlock implements BonemealableBlock { } @Override - protected void createBlockStateDefinition(StateDefinition.Builder builder) { + public void createBlockStateDefinition(StateDefinition.Builder builder) { builder.add(LeavesBlock.DISTANCE, PEACH_DISTANCE, PERSISTENT, WATERLOGGED); } @@ -63,7 +62,7 @@ public class PeachLeavesBlock extends LeavesBlock implements BonemealableBlock { } @Override - protected boolean decaying(BlockState state) { + public boolean decaying(BlockState state) { return !state.getValue(PERSISTENT) && state.getValue(PEACH_DISTANCE) > PEACH_MAX_DISTANCE; } diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/PeachSaplingBlock.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/PeachSaplingBlock.java index d6038a3d..63b621b3 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/PeachSaplingBlock.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/PeachSaplingBlock.java @@ -1,7 +1,6 @@ package com.craisinlord.antarchy.content.block; import com.craisinlord.antarchy.content.worldgen.elythia.PeachTreeGrowers; -import com.mojang.serialization.MapCodec; import java.util.LinkedHashMap; import java.util.Map; import net.minecraft.core.BlockPos; diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/PolishedNyxitePressurePlateBlock.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/PolishedNyxitePressurePlateBlock.java index 2b3d72cc..4cd76a5f 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/PolishedNyxitePressurePlateBlock.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/PolishedNyxitePressurePlateBlock.java @@ -31,7 +31,7 @@ public class PolishedNyxitePressurePlateBlock extends PressurePlateBlock { } @Override - protected void createBlockStateDefinition(StateDefinition.Builder builder) { + public void createBlockStateDefinition(StateDefinition.Builder builder) { super.createBlockStateDefinition(builder); builder.add(CEILING); } @@ -58,7 +58,7 @@ public class PolishedNyxitePressurePlateBlock extends PressurePlateBlock { } @Override - protected int getSignalStrength(Level level, BlockPos pos) { + public int getSignalStrength(Level level, BlockPos pos) { BlockState state = level.getBlockState(pos); if (!state.getValue(CEILING)) { return super.getSignalStrength(level, pos); diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/PotentNyxiteBlock.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/PotentNyxiteBlock.java index e3357d95..e7593aa9 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/PotentNyxiteBlock.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/PotentNyxiteBlock.java @@ -4,7 +4,6 @@ import com.craisinlord.antarchy.content.block.entity.PotentNyxiteBlockEntity; import com.craisinlord.antarchy.content.block.state.PotentNyxiteState; import com.craisinlord.antarchy.content.AntarchyTags; import com.craisinlord.antarchy.content.fluid.AntarchyFluidChecks; -import com.mojang.serialization.MapCodec; import java.util.function.Supplier; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -49,7 +48,7 @@ public class PotentNyxiteBlock extends BaseEntityBlock { } @Override - protected void createBlockStateDefinition(StateDefinition.Builder builder) { + public void createBlockStateDefinition(StateDefinition.Builder builder) { builder.add(STATE); } diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/SeashellBlock.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/SeashellBlock.java index 8dc2338b..bb62d451 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/SeashellBlock.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/SeashellBlock.java @@ -2,7 +2,6 @@ package com.craisinlord.antarchy.content.block; import com.craisinlord.antarchy.content.AntarchyObjects; import com.craisinlord.antarchy.content.block.entity.SeashellBlockEntity; -import com.mojang.serialization.MapCodec; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.server.level.ServerLevel; @@ -60,7 +59,7 @@ public final class SeashellBlock extends BaseEntityBlock implements SimpleWaterl } @Override - protected void createBlockStateDefinition(StateDefinition.Builder builder) { + public void createBlockStateDefinition(StateDefinition.Builder builder) { builder.add(FACING, POWERED, WATERLOGGED); } diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/SignalSavingBulbBlock.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/SignalSavingBulbBlock.java index db5f06df..7f4b43cd 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/SignalSavingBulbBlock.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/SignalSavingBulbBlock.java @@ -66,7 +66,7 @@ public class SignalSavingBulbBlock extends Block { } @Override - protected void createBlockStateDefinition(StateDefinition.Builder builder) { + public void createBlockStateDefinition(StateDefinition.Builder builder) { builder.add(LIT, POWERED, BRIGHTNESS); } diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/SpiderLilyBlock.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/SpiderLilyBlock.java index 603590b6..52e5072e 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/SpiderLilyBlock.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/SpiderLilyBlock.java @@ -1,6 +1,5 @@ package com.craisinlord.antarchy.content.block; -import com.mojang.serialization.MapCodec; import net.minecraft.core.BlockPos; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.block.Block; diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/SpitBugEggBlock.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/SpitBugEggBlock.java index 7b6442b9..2dc8d32b 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/SpitBugEggBlock.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/SpitBugEggBlock.java @@ -3,7 +3,6 @@ package com.craisinlord.antarchy.content.block; import com.craisinlord.antarchy.Antarchy; import com.craisinlord.antarchy.content.entity.SpitBugEntity; import com.craisinlord.antarchy.content.horde.CavarynHordeManager; -import com.mojang.serialization.MapCodec; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.registries.BuiltInRegistries; @@ -141,7 +140,7 @@ public class SpitBugEggBlock extends Block { } @Override - protected void createBlockStateDefinition(StateDefinition.Builder builder) { + public void createBlockStateDefinition(StateDefinition.Builder builder) { builder.add(HATCH, ROTATED); } } diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/StarCoralBlock.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/StarCoralBlock.java index 06cf823d..b07a3bb6 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/StarCoralBlock.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/StarCoralBlock.java @@ -1,6 +1,5 @@ package com.craisinlord.antarchy.content.block; -import com.mojang.serialization.MapCodec; import com.mojang.serialization.codecs.RecordCodecBuilder; import org.jetbrains.annotations.Nullable; import net.minecraft.core.BlockPos; @@ -41,7 +40,7 @@ public class StarCoralBlock extends Block { return super.updateShape(state, direction, neighborState, level, pos, neighborPos); } - protected boolean scanForWater(BlockGetter level, BlockPos pos) { + public boolean scanForWater(BlockGetter level, BlockPos pos) { for (Direction direction : Direction.values()) { FluidState fluidState = level.getFluidState(pos.relative(direction)); if (fluidState.is(FluidTags.WATER)) { diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/StarCoralFanBlock.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/StarCoralFanBlock.java index 74d4af0d..af3f30ac 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/StarCoralFanBlock.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/StarCoralFanBlock.java @@ -1,6 +1,5 @@ package com.craisinlord.antarchy.content.block; -import com.mojang.serialization.MapCodec; import com.mojang.serialization.codecs.RecordCodecBuilder; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/StarCoralPlantBlock.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/StarCoralPlantBlock.java index c8cb6a32..d833eb64 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/StarCoralPlantBlock.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/StarCoralPlantBlock.java @@ -1,6 +1,5 @@ package com.craisinlord.antarchy.content.block; -import com.mojang.serialization.MapCodec; import com.mojang.serialization.codecs.RecordCodecBuilder; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -20,7 +19,7 @@ import net.minecraft.world.phys.shapes.VoxelShape; public class StarCoralPlantBlock extends BaseCoralPlantTypeBlock { private final Block deadBlock; - protected static final VoxelShape SHAPE = Block.box(2.0, 0.0, 2.0, 14.0, 15.0, 14.0); + public static final VoxelShape SHAPE = Block.box(2.0, 0.0, 2.0, 14.0, 15.0, 14.0); public StarCoralPlantBlock(Block deadBlock, Properties properties) { super(properties); diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/StarCoralWallFanBlock.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/StarCoralWallFanBlock.java index 566c69bf..8acf3090 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/StarCoralWallFanBlock.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/StarCoralWallFanBlock.java @@ -1,6 +1,5 @@ package com.craisinlord.antarchy.content.block; -import com.mojang.serialization.MapCodec; import com.mojang.serialization.codecs.RecordCodecBuilder; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/UmbralMossBlock.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/UmbralMossBlock.java index a99540f4..d353df39 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/UmbralMossBlock.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/UmbralMossBlock.java @@ -2,7 +2,6 @@ package com.craisinlord.antarchy.content.block; import com.craisinlord.antarchy.Antarchy; import com.craisinlord.antarchy.content.AntarchyTags; -import com.mojang.serialization.MapCodec; import net.minecraft.core.BlockPos; import net.minecraft.core.Holder; import net.minecraft.core.registries.Registries; diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/UmbralMossCarpetBlock.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/UmbralMossCarpetBlock.java index 60d545b5..7848f36d 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/UmbralMossCarpetBlock.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/UmbralMossCarpetBlock.java @@ -1,6 +1,5 @@ package com.craisinlord.antarchy.content.block; -import com.mojang.serialization.MapCodec; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.util.RandomSource; @@ -46,7 +45,7 @@ public class UmbralMossCarpetBlock extends Block { } @Override - protected void createBlockStateDefinition(StateDefinition.Builder builder) { + public void createBlockStateDefinition(StateDefinition.Builder builder) { builder.add(BOTTOM, NORTH_WALL, EAST_WALL, SOUTH_WALL, WEST_WALL); } diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/UpperBlock.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/UpperBlock.java index aa95f7a1..f4221ce9 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/UpperBlock.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/UpperBlock.java @@ -53,7 +53,7 @@ public class UpperBlock extends BaseEntityBlock { } @Override - protected void createBlockStateDefinition(StateDefinition.Builder builder) { + public void createBlockStateDefinition(StateDefinition.Builder builder) { builder.add(FACING, ENABLED); } diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/WaspNestBlock.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/WaspNestBlock.java index 6d93d935..3494bd58 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/WaspNestBlock.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/WaspNestBlock.java @@ -2,7 +2,6 @@ package com.craisinlord.antarchy.content.block; import com.craisinlord.antarchy.content.block.entity.WaspNestBlockEntity; import com.craisinlord.antarchy.content.entity.WaspEntity; -import com.mojang.serialization.MapCodec; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.server.level.ServerLevel; @@ -58,7 +57,7 @@ public class WaspNestBlock extends BaseEntityBlock { } @Override - protected void createBlockStateDefinition(StateDefinition.Builder builder) { + public void createBlockStateDefinition(StateDefinition.Builder builder) { builder.add(FACING); } diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/WildCornBlock.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/WildCornBlock.java index 48743604..cf23afec 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/WildCornBlock.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/WildCornBlock.java @@ -1,7 +1,6 @@ package com.craisinlord.antarchy.content.block; import com.craisinlord.antarchy.content.AntarchyObjects; -import com.mojang.serialization.MapCodec; import net.minecraft.core.BlockPos; import net.minecraft.server.level.ServerLevel; import net.minecraft.util.RandomSource; diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/entity/AntNestBlockEntity.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/entity/AntNestBlockEntity.java index 1b720e17..782c80da 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/entity/AntNestBlockEntity.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/entity/AntNestBlockEntity.java @@ -170,7 +170,7 @@ public class AntNestBlockEntity extends BlockEntity { } @Override - protected void saveAdditional(CompoundTag tag) { + public void saveAdditional(CompoundTag tag) { super.saveAdditional(tag); tag.putBoolean(NBT_INITIALIZED, this.initialized); tag.putInt(NBT_REBROOD_COOLDOWN, this.rebroodCooldown); diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/entity/BluestoneComparatorBlockEntity.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/entity/BluestoneComparatorBlockEntity.java index 0af57b97..a7457c5c 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/entity/BluestoneComparatorBlockEntity.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/entity/BluestoneComparatorBlockEntity.java @@ -25,7 +25,7 @@ public class BluestoneComparatorBlockEntity extends BlockEntity { } @Override - protected void saveAdditional(CompoundTag tag) { + public void saveAdditional(CompoundTag tag) { super.saveAdditional(tag); tag.putInt("OutputSignal", this.outputSignal); } diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/entity/CritterCageBlockEntity.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/entity/CritterCageBlockEntity.java index 72d3dfd7..e99039a8 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/entity/CritterCageBlockEntity.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/entity/CritterCageBlockEntity.java @@ -151,7 +151,7 @@ public class CritterCageBlockEntity extends BlockEntity { } @Override - protected void saveAdditional(CompoundTag tag) { + public void saveAdditional(CompoundTag tag) { super.saveAdditional(tag); if (this.entityTypeId != null) { tag.putString(ENTITY_TYPE_TAG, this.entityTypeId.toString()); diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/entity/LucidAnchorBlockEntity.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/entity/LucidAnchorBlockEntity.java index 85b923d4..ca971304 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/entity/LucidAnchorBlockEntity.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/entity/LucidAnchorBlockEntity.java @@ -151,7 +151,7 @@ public class LucidAnchorBlockEntity extends BlockEntity { } @Override - protected void saveAdditional(CompoundTag tag) { + public void saveAdditional(CompoundTag tag) { super.saveAdditional(tag); tag.putInt("PyramidLevel", this.pyramidLevel); tag.putBoolean("Active", this.active); diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/entity/PotentNyxiteBlockEntity.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/entity/PotentNyxiteBlockEntity.java index 31c8486a..de51f1b5 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/entity/PotentNyxiteBlockEntity.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/entity/PotentNyxiteBlockEntity.java @@ -114,7 +114,7 @@ public class PotentNyxiteBlockEntity extends BlockEntity { } @Override - protected void saveAdditional(CompoundTag tag) { + public void saveAdditional(CompoundTag tag) { super.saveAdditional(tag); tag.putInt("countdown", this.waitingCountdown); tag.putLong("eruption_tick", this.eruptionTick); diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/entity/SeashellBlockEntity.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/entity/SeashellBlockEntity.java index 04f139f0..e9aff3cf 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/entity/SeashellBlockEntity.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/entity/SeashellBlockEntity.java @@ -217,22 +217,22 @@ public final class SeashellBlockEntity extends RandomizableContainerBlockEntity } @Override - protected Component getDefaultName() { + public Component getDefaultName() { return TITLE; } @Override - protected NonNullList getItems() { + public NonNullList getItems() { return this.items; } @Override - protected void setItems(NonNullList items) { + public void setItems(NonNullList items) { this.items = items; } @Override - protected AbstractContainerMenu createMenu(int containerId, Inventory inventory) { + public AbstractContainerMenu createMenu(int containerId, Inventory inventory) { return ChestMenu.threeRows(containerId, inventory, this); } @@ -252,7 +252,7 @@ public final class SeashellBlockEntity extends RandomizableContainerBlockEntity } @Override - protected void saveAdditional(CompoundTag tag) { + public void saveAdditional(CompoundTag tag) { super.saveAdditional(tag); if (!this.trySaveLootTable(tag)) { net.minecraft.world.ContainerHelper.saveAllItems(tag, this.items); diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/entity/UpperBlockEntity.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/entity/UpperBlockEntity.java index f11797d5..1e5f62e0 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/entity/UpperBlockEntity.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/entity/UpperBlockEntity.java @@ -171,27 +171,27 @@ public class UpperBlockEntity extends RandomizableContainerBlockEntity { } @Override - protected NonNullList getItems() { + public NonNullList getItems() { return this.items; } @Override - protected void setItems(NonNullList items) { + public void setItems(NonNullList items) { this.items = items; } @Override - protected Component getDefaultName() { + public Component getDefaultName() { return Component.translatable("container.antarchy.upper"); } @Override - protected AbstractContainerMenu createMenu(int containerId, Inventory inventory) { + public AbstractContainerMenu createMenu(int containerId, Inventory inventory) { return new HopperMenu(containerId, inventory, this); } @Override - protected void saveAdditional(CompoundTag tag) { + public void saveAdditional(CompoundTag tag) { super.saveAdditional(tag); if (!this.trySaveLootTable(tag)) { ContainerHelper.saveAllItems(tag, this.items); diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/entity/WaspNestBlockEntity.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/entity/WaspNestBlockEntity.java index 42cd3ff8..3a927261 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/entity/WaspNestBlockEntity.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/block/entity/WaspNestBlockEntity.java @@ -164,7 +164,7 @@ public class WaspNestBlockEntity extends BlockEntity { } @Override - protected void saveAdditional(CompoundTag tag) { + public void saveAdditional(CompoundTag tag) { super.saveAdditional(tag); tag.putBoolean("Initialized", this.initialized); tag.putBoolean(PANDA_VARIANT, this.pandaVariant); diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/creative/CreativeTabContents.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/creative/CreativeTabContents.java index 993855ec..58696bb4 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/creative/CreativeTabContents.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/creative/CreativeTabContents.java @@ -411,7 +411,8 @@ public final class CreativeTabContents { private static final List ANTARCHY_POTION_FAMILIES = List.of( "dread", "long_dread", "inversion", "long_inversion", "stinky", "long_stinky", "paralysis", "long_paralysis", "haste", "strong_haste", "shrinking", - "strong_shrinking", "extreme_shrinking", "growing", "strong_growing", "extreme_growing" + "strong_shrinking", "extreme_shrinking", "growing", "strong_growing", "extreme_growing", + "time_dilation", "long_time_dilation" ); private static final Map ORDER_INDEX = createOrderIndex(); diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/entity/portal/DimensionalTearEntity.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/entity/portal/DimensionalTearEntity.java index 2371cb32..38972539 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/entity/portal/DimensionalTearEntity.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/entity/portal/DimensionalTearEntity.java @@ -85,6 +85,20 @@ public class DimensionalTearEntity extends Entity implements GeoEntity { return tear; } + public static DimensionalTearEntity createQueenManticoreTear(ServerLevel level, Vec3 pos, float yaw, + int lifetimeTicks, UUID queenId, int count) { + return create(level, pos, yaw, lifetimeTicks); + } + + public static void discardQueenOwnedTears(ServerLevel level, UUID queenId) { + // The 1.20 compatibility entity does not yet persist the queen-owner index. + } + + public static DimensionalTearEntity createStaffSummonTear(ServerLevel level, Vec3 pos, float yaw, + int lifetimeTicks, UUID playerId, int count) { + return create(level, pos, yaw, lifetimeTicks); + } + public void linkTo(DimensionalTearEntity other) { this.linkedTearId = other.getUUID(); this.linkedFallbackPos = other.position(); diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/gravity/AntarchyGravityApi.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/gravity/AntarchyGravityApi.java index 6301b5bf..62fe9dc9 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/gravity/AntarchyGravityApi.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/gravity/AntarchyGravityApi.java @@ -1,6 +1,8 @@ package com.craisinlord.antarchy.content.gravity; import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.item.ItemEntity; +import net.minecraft.world.phys.Vec3; public final class AntarchyGravityApi { public interface GravitySyncDispatcher { @@ -99,6 +101,10 @@ public final class AntarchyGravityApi { syncDispatcher.onGravityStateChanged(entity); } + public static void setWorldVelocity(ItemEntity entity, Vec3 velocity) { + entity.setDeltaMovement(velocity); + } + private static AntarchyGravityAccess access(Entity entity) { if (entity instanceof AntarchyGravityAccess access) { return access; diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/ElythiaBiomeSource.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/ElythiaBiomeSource.java index d5d9a118..2a316092 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/ElythiaBiomeSource.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/ElythiaBiomeSource.java @@ -3,7 +3,6 @@ package com.craisinlord.antarchy.content.worldgen.elythia; import com.craisinlord.antarchy.Antarchy; import com.mojang.datafixers.util.Pair; import com.mojang.serialization.Codec; -import com.mojang.serialization.MapCodec; import com.mojang.serialization.codecs.RecordCodecBuilder; import java.util.stream.Stream; import net.minecraft.core.Holder; @@ -76,15 +75,6 @@ public class ElythiaBiomeSource extends BiomeSource { return ((long) x << 32) ^ (z & 0xFFFFFFFFL); } - public static final MapCodec CODEC = RecordCodecBuilder.mapCodec(instance -> instance.group( - MultiNoiseBiomeSource.DIRECT_CODEC.forGetter(ElythiaBiomeSource::parameters), - Codec.INT.optionalFieldOf("moleworm_caves_max_y", 72).forGetter(ElythiaBiomeSource::molewormCavesMaxY), - Codec.INT.optionalFieldOf("surface_biome_sample_y", 160).forGetter(ElythiaBiomeSource::surfaceBiomeSampleY), - Codec.INT.optionalFieldOf("ocean_max_y", 85).forGetter(ElythiaBiomeSource::oceanMaxY), - Codec.INT.optionalFieldOf("sea_level", 78).forGetter(ElythiaBiomeSource::seaLevel), - Codec.INT.optionalFieldOf("cloud_sea_min_y", 360).forGetter(ElythiaBiomeSource::cloudSeaMinY) - ).apply(instance, ElythiaBiomeSource::new)); - private final Climate.ParameterList> parameters; private final MultiNoiseBiomeSource delegate; private final int molewormCavesMaxY; @@ -160,7 +150,7 @@ public class ElythiaBiomeSource extends BiomeSource { @Override protected com.mojang.serialization.Codec codec() { - return CODEC.codec(); + return CODEC; } @Override diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/ElythiaRiverCarveFunction.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/ElythiaRiverCarveFunction.java index 4c0ccf05..fea135ed 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/ElythiaRiverCarveFunction.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/worldgen/elythia/ElythiaRiverCarveFunction.java @@ -1,6 +1,5 @@ package com.craisinlord.antarchy.content.worldgen.elythia; -import com.mojang.serialization.MapCodec; import com.mojang.serialization.codecs.RecordCodecBuilder; import net.minecraft.util.KeyDispatchDataCodec; import net.minecraft.world.level.levelgen.DensityFunction; @@ -25,15 +24,9 @@ public record ElythiaRiverCarveFunction( DensityFunction ridges ) implements DensityFunction { - public static final MapCodec CODEC = RecordCodecBuilder.mapCodec(instance -> - instance.group( - DensityFunction.HOLDER_HELPER_CODEC.fieldOf("erosion").forGetter(ElythiaRiverCarveFunction::erosion), - DensityFunction.HOLDER_HELPER_CODEC.fieldOf("ridges").forGetter(ElythiaRiverCarveFunction::ridges) - ).apply(instance, ElythiaRiverCarveFunction::new) - ); - + @SuppressWarnings("unchecked") public static final KeyDispatchDataCodec KEY_CODEC = - KeyDispatchDataCodec.of(CODEC); + (KeyDispatchDataCodec) (KeyDispatchDataCodec) KeyDispatchDataCodec.of(CODEC); // Erosion must exceed this for river carving to engage private static final double EROSION_THRESHOLD = 0.70; diff --git a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/ThoraxisBiomeSource.java b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/ThoraxisBiomeSource.java index bf2e7933..a81cb6f5 100644 --- a/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/ThoraxisBiomeSource.java +++ b/common-1.20.1/src/main/java/com/craisinlord/antarchy/content/worldgen/thoraxis/ThoraxisBiomeSource.java @@ -2,7 +2,6 @@ package com.craisinlord.antarchy.content.worldgen.thoraxis; import com.craisinlord.antarchy.Antarchy; import com.mojang.serialization.Codec; -import com.mojang.serialization.MapCodec; import com.mojang.serialization.codecs.RecordCodecBuilder; import it.unimi.dsi.fastutil.longs.Long2DoubleOpenHashMap; import java.util.stream.Stream; @@ -40,13 +39,6 @@ public final class ThoraxisBiomeSource extends BiomeSource { new ResourceLocation(Antarchy.MODID, "lucid_pools") ); - public static final MapCodec CODEC = RecordCodecBuilder.mapCodec(instance -> instance.group( - MultiNoiseBiomeSource.DIRECT_CODEC.forGetter(ThoraxisBiomeSource::parameters), - Codec.INT.optionalFieldOf("dream_dunes_max_y", 96).forGetter(ThoraxisBiomeSource::dreamDunesMaxY), - Codec.INT.optionalFieldOf("umbral_hills_max_y", 100).forGetter(ThoraxisBiomeSource::umbralHillsMaxY), - Codec.INT.optionalFieldOf("lucid_pools_min_y", 116).forGetter(ThoraxisBiomeSource::lucidPoolsMinY) - ).apply(instance, ThoraxisBiomeSource::new)); - private final Climate.ParameterList> parameters; private final MultiNoiseBiomeSource delegate; private final int dreamDunesMaxY; @@ -111,7 +103,7 @@ public final class ThoraxisBiomeSource extends BiomeSource { @Override protected com.mojang.serialization.Codec codec() { - return CODEC.codec(); + return CODEC; } @Override diff --git a/common-1.20.1/src/main/resources/antarchy-common.mixins.json b/common-1.20.1/src/main/resources/antarchy-common.mixins.json index 0f20735e..9a7f5900 100644 --- a/common-1.20.1/src/main/resources/antarchy-common.mixins.json +++ b/common-1.20.1/src/main/resources/antarchy-common.mixins.json @@ -70,7 +70,38 @@ "gravity.ServerPlayerGravityMixin", "gravity.ThrowableProjectileGravityMixin", "gravity.TrackedEntityAccessor", - "multipart.EntityMultipartLifecycleMixin" + "multipart.EntityMultipartLifecycleMixin", + "time.EntityDeltaMovementTimeDilationMixin", + "time.EntityMoveTimeDilationMixin", + "time.EntityTimeDilationStateMixin", + "time.EntityRotationTimeDilationMixin", + "time.LivingEntityKnockbackTimeDilationMixin", + "time.CreeperTimeDilationMixin", + "time.EndCrystalTimeDilationMixin", + "time.LivingEntityTimeDilationMixin", + "time.LivingEntityTimeDilationCleanupMixin", + "time.LivingEntityAttackCooldownTimeDilationMixin", + "time.LookControlTimeDilationMixin", + "time.MeleeAttackGoalTimeDilationMixin", + "time.MobAttackTimeDilationMixin", + "time.PrimedTntTimeDilationMixin", + "time.AbstractArrowMovementTimeDilationMixin", + "time.ThrowableProjectileMovementTimeDilationMixin", + "time.HurtingProjectileMovementTimeDilationMixin", + "time.ProjectileTimeDilationMixin", + "time.AbstractArrowActionTimeDilationMixin", + "time.RangedAttackGoalTimeDilationMixin", + "time.RangedBowAttackGoalTimeDilationMixin" + ], + "client": [ + "time.LivingEntityRendererAnimationTimeDilationMixin", + "time.ParticleTimeDilationMixin", + "time.PortalParticleTimeDilationMixin", + "time.ReversePortalParticleTimeDilationMixin", + "time.SoundEngineTimeDilationMixin", + "time.ItemEntityRotationTimeDilationMixin", + "time.ItemEntityRendererTimeDilationMixin", + "time.ParticlePositionAccessor" ], "client": [ "client.AbstractMinecartRendererMixin", @@ -98,7 +129,15 @@ "gravity.client.CameraGravityMixin", "gravity.client.ClientPacketListenerGravityMixin", "gravity.client.EntityRenderDispatcherGravityMixin", - "gravity.client.FallingBlockRendererBlockEntityMixin" + "gravity.client.FallingBlockRendererBlockEntityMixin", + "time.LivingEntityRendererAnimationTimeDilationMixin", + "time.ParticleTimeDilationMixin", + "time.PortalParticleTimeDilationMixin", + "time.ReversePortalParticleTimeDilationMixin", + "time.SoundEngineTimeDilationMixin", + "time.ItemEntityRotationTimeDilationMixin", + "time.ItemEntityRendererTimeDilationMixin", + "time.ParticlePositionAccessor" ], "injectors": { "defaultRequire": 1 diff --git a/common-1.20.1/src/main/resources/assets/antarchy/lang/en_us.json b/common-1.20.1/src/main/resources/assets/antarchy/lang/en_us.json index 63382276..aa285c47 100644 --- a/common-1.20.1/src/main/resources/assets/antarchy/lang/en_us.json +++ b/common-1.20.1/src/main/resources/assets/antarchy/lang/en_us.json @@ -586,12 +586,16 @@ "effect.antarchy.bloodglass_ward.description": "Gives hearts that shatter, absorbing an entire hit of damage. They regenerate over time.", "effect.antarchy.glimmering": "Glimmering", "effect.antarchy.glimmering.description": "Passes through entities and attacks unharmed, like a spirit.", + "effect.antarchy.dilated": "Dilated", + "effect.antarchy.dilated.description": "Slows the passage of time for the affected entity.", "death.attack.triffid_mauling": "%1$s was mauled to death by a plant", "death.attack.triffid_mauling.player": "%1$s was mauled to death by a plant", "death.attack.triffid_swallow": "%1$s was swallowed by a triffid", "death.attack.triffid_swallow.player": "%1$s was swallowed by a triffid", "potion.antarchy.haste": "Haste Potion", "potion.antarchy.strong_haste": "Strong Haste Potion", + "potion.antarchy.time_dilation": "Potion of Time Dilation", + "potion.antarchy.long_time_dilation": "Potion of Strong Time Dilation", "tooltip.antarchy.big_bertha.mode": "Mode: %s", "tooltip.antarchy.big_bertha.toggle_mode": "Shift + use to cycle boss modes.", "tooltip.antarchy.big_bertha.mode.none": "Hits deal a small amount of bonus damage.", @@ -826,6 +830,14 @@ "subtitles.antarchy.stinky_fly": "Stinky flies buzz", "item.minecraft.potion.effect.inversion": "Potion of Inversion", "item.minecraft.potion.effect.long_inversion": "Potion of Inversion", + "item.minecraft.potion.effect.time_dilation": "Potion of Time Dilation", + "item.minecraft.potion.effect.long_time_dilation": "Potion of Strong Time Dilation", + "item.minecraft.splash_potion.effect.time_dilation": "Splash Potion of Time Dilation", + "item.minecraft.splash_potion.effect.long_time_dilation": "Splash Potion of Strong Time Dilation", + "item.minecraft.lingering_potion.effect.time_dilation": "Lingering Potion of Time Dilation", + "item.minecraft.lingering_potion.effect.long_time_dilation": "Lingering Potion of Strong Time Dilation", + "item.minecraft.tipped_arrow.effect.time_dilation": "Arrow of Time Dilation", + "item.minecraft.tipped_arrow.effect.long_time_dilation": "Arrow of Strong Time Dilation", "item.minecraft.splash_potion.effect.inversion": "Splash Potion of Inversion", "item.minecraft.splash_potion.effect.long_inversion": "Splash Potion of Inversion", "item.minecraft.lingering_potion.effect.inversion": "Lingering Potion of Inversion", diff --git a/common-1.20.1/src/main/resources/data/antarchy/loot_tables/blocks/star_coral.json b/common-1.20.1/src/main/resources/data/antarchy/loot_tables/blocks/star_coral.json index f7397a97..2b132dbf 100644 --- a/common-1.20.1/src/main/resources/data/antarchy/loot_tables/blocks/star_coral.json +++ b/common-1.20.1/src/main/resources/data/antarchy/loot_tables/blocks/star_coral.json @@ -3,24 +3,38 @@ "pools": [ { "rolls": 1, - "conditions": [ - { - "condition": "minecraft:match_tool", - "predicate": { - "components": { - "minecraft:enchantments": { - "levels": { - "minecraft:silk_touch": 1 - } - } - } - } - } - ], "entries": [ { - "type": "minecraft:item", - "name": "antarchy:star_coral" + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "components": { + "minecraft:enchantments": { + "levels": { + "minecraft:silk_touch": 1 + } + } + } + } + } + ], + "name": "antarchy:star_coral" + }, + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "name": "antarchy:star_coral" + } + ] } ] } diff --git a/common-1.20.1/src/main/resources/data/antarchy/loot_tables/blocks/star_coral_block.json b/common-1.20.1/src/main/resources/data/antarchy/loot_tables/blocks/star_coral_block.json index 726008ad..f1b69b32 100644 --- a/common-1.20.1/src/main/resources/data/antarchy/loot_tables/blocks/star_coral_block.json +++ b/common-1.20.1/src/main/resources/data/antarchy/loot_tables/blocks/star_coral_block.json @@ -32,7 +32,7 @@ "condition": "minecraft:survives_explosion" } ], - "name": "antarchy:dead_star_coral_block" + "name": "antarchy:star_coral_block" } ] } diff --git a/common-1.20.1/src/main/resources/data/antarchy/loot_tables/blocks/star_coral_fan.json b/common-1.20.1/src/main/resources/data/antarchy/loot_tables/blocks/star_coral_fan.json index 62bea052..0794b0d4 100644 --- a/common-1.20.1/src/main/resources/data/antarchy/loot_tables/blocks/star_coral_fan.json +++ b/common-1.20.1/src/main/resources/data/antarchy/loot_tables/blocks/star_coral_fan.json @@ -3,24 +3,38 @@ "pools": [ { "rolls": 1, - "conditions": [ - { - "condition": "minecraft:match_tool", - "predicate": { - "components": { - "minecraft:enchantments": { - "levels": { - "minecraft:silk_touch": 1 - } - } - } - } - } - ], "entries": [ { - "type": "minecraft:item", - "name": "antarchy:star_coral_fan" + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "components": { + "minecraft:enchantments": { + "levels": { + "minecraft:silk_touch": 1 + } + } + } + } + } + ], + "name": "antarchy:star_coral_fan" + }, + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "name": "antarchy:star_coral_fan" + } + ] } ] } diff --git a/common-1.20.1/src/main/resources/data/antarchy/loot_tables/blocks/star_coral_wall_fan.json b/common-1.20.1/src/main/resources/data/antarchy/loot_tables/blocks/star_coral_wall_fan.json index 62bea052..0794b0d4 100644 --- a/common-1.20.1/src/main/resources/data/antarchy/loot_tables/blocks/star_coral_wall_fan.json +++ b/common-1.20.1/src/main/resources/data/antarchy/loot_tables/blocks/star_coral_wall_fan.json @@ -3,24 +3,38 @@ "pools": [ { "rolls": 1, - "conditions": [ - { - "condition": "minecraft:match_tool", - "predicate": { - "components": { - "minecraft:enchantments": { - "levels": { - "minecraft:silk_touch": 1 - } - } - } - } - } - ], "entries": [ { - "type": "minecraft:item", - "name": "antarchy:star_coral_fan" + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "components": { + "minecraft:enchantments": { + "levels": { + "minecraft:silk_touch": 1 + } + } + } + } + } + ], + "name": "antarchy:star_coral_fan" + }, + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "name": "antarchy:star_coral_fan" + } + ] } ] } diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/config/AntarchySettings.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/config/AntarchySettings.java index d475667c..d5453375 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/config/AntarchySettings.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/config/AntarchySettings.java @@ -550,6 +550,7 @@ public final class AntarchySettings { private static double queenManticoreSummonRange = 24.0D; private static double queenBeamDamage = 45.0D; private static double queenBeamRange = 100.0D; + private static double queenBeamMinimumRange = 22.0D; private static int queenBeamDurationTicks = 30; private static int queenBeamWindupTicks = 20; private static int queenBeamTravelTicks = 12; @@ -559,6 +560,7 @@ public final class AntarchySettings { private static int queenBeamTerrainCap = 192; private static double kingBeamDamage = 50.0D; private static double kingBeamRange = 100.0D; + private static double kingBeamMinimumRange = 32.0D; private static int kingBeamDurationTicks = 30; private static int kingBeamWindupTicks = 20; private static int kingBeamTravelTicks = 12; @@ -567,6 +569,11 @@ public final class AntarchySettings { private static double kingBeamTerrainRadius = 5.0D; private static int kingBeamTerrainCap = 192; private static int royalDecreeCooldownTicks = 1200; + private static int kingRoyalMusterCooldownTicks = 500; + private static int kingRoyalMusterWindupTicks = 30; + private static int kingRoyalMusterDurationTicks = 600; + private static double kingRoyalMusterRadius = 32.0D; + private static int kingRoyalMusterCap = 12; private static double jerryInfantHealth = 20.0D; private static double jerryInfantAttackDamage = 2.0D; private static double jerryMatureHealth = 40.0D; @@ -2887,6 +2894,8 @@ public final class AntarchySettings { public static void setQueenBeamDamage(double v) { queenBeamDamage = v; } public static double queenBeamRange() { return queenBeamRange; } public static void setQueenBeamRange(double v) { queenBeamRange = v; } + public static double queenBeamMinimumRange() { return queenBeamMinimumRange; } + public static void setQueenBeamMinimumRange(double v) { queenBeamMinimumRange = v; } public static int queenBeamDurationTicks() { return queenBeamDurationTicks; } public static void setQueenBeamDurationTicks(int v) { queenBeamDurationTicks = v; } public static int queenBeamWindupTicks() { return queenBeamWindupTicks; } @@ -2905,6 +2914,8 @@ public final class AntarchySettings { public static void setKingBeamDamage(double v) { kingBeamDamage = v; } public static double kingBeamRange() { return kingBeamRange; } public static void setKingBeamRange(double v) { kingBeamRange = v; } + public static double kingBeamMinimumRange() { return kingBeamMinimumRange; } + public static void setKingBeamMinimumRange(double v) { kingBeamMinimumRange = v; } public static int kingBeamDurationTicks() { return kingBeamDurationTicks; } public static void setKingBeamDurationTicks(int v) { kingBeamDurationTicks = v; } public static int kingBeamWindupTicks() { return kingBeamWindupTicks; } @@ -2921,6 +2932,16 @@ public final class AntarchySettings { public static void setKingBeamTerrainCap(int v) { kingBeamTerrainCap = v; } public static int royalDecreeCooldownTicks() { return royalDecreeCooldownTicks; } public static void setRoyalDecreeCooldownTicks(int v) { royalDecreeCooldownTicks = v; } + public static int kingRoyalMusterCooldownTicks() { return kingRoyalMusterCooldownTicks; } + public static void setKingRoyalMusterCooldownTicks(int v) { kingRoyalMusterCooldownTicks = v; } + public static int kingRoyalMusterWindupTicks() { return kingRoyalMusterWindupTicks; } + public static void setKingRoyalMusterWindupTicks(int v) { kingRoyalMusterWindupTicks = v; } + public static int kingRoyalMusterDurationTicks() { return kingRoyalMusterDurationTicks; } + public static void setKingRoyalMusterDurationTicks(int v) { kingRoyalMusterDurationTicks = v; } + public static double kingRoyalMusterRadius() { return kingRoyalMusterRadius; } + public static void setKingRoyalMusterRadius(double v) { kingRoyalMusterRadius = v; } + public static int kingRoyalMusterCap() { return kingRoyalMusterCap; } + public static void setKingRoyalMusterCap(int v) { kingRoyalMusterCap = v; } public static double jerryInfantHealth() { return jerryInfantHealth; } public static void setJerryInfantHealth(double v) { jerryInfantHealth = v; } public static double jerryInfantAttackDamage() { return jerryInfantAttackDamage; } diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/AntarchyObjects.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/AntarchyObjects.java index d1d87ac1..a0d95a26 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/AntarchyObjects.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/AntarchyObjects.java @@ -206,6 +206,8 @@ public final class AntarchyObjects { @SuppressWarnings("unchecked") public static Supplier> DORRIE_INVENTORY_MENU = (Supplier>) UNBOUND; @SuppressWarnings("unchecked") + public static Supplier> ROYAL_JUDGMENT_MENU = (Supplier>) UNBOUND; + @SuppressWarnings("unchecked") public static Supplier CHEEP_ITEM = (Supplier) UNBOUND; @SuppressWarnings("unchecked") public static Supplier DUPLICATOR_LOG = (Supplier) UNBOUND; @@ -893,6 +895,10 @@ public final class AntarchyObjects { DORRIE_INVENTORY_MENU = supplier; } + public static void setRoyalJudgmentMenu(Supplier> supplier) { + ROYAL_JUDGMENT_MENU = supplier; + } + public static void setAmericanComponent(Supplier> supplier) { AMERICAN_COMPONENT = supplier; } diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/block/MucusBlock.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/block/MucusBlock.java index a50e1258..78b48be9 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/block/MucusBlock.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/block/MucusBlock.java @@ -1,5 +1,6 @@ package com.craisinlord.antarchy.content.block; +import com.craisinlord.antarchy.content.entity.WormEntity; import com.mojang.serialization.MapCodec; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -18,9 +19,9 @@ import net.minecraft.world.phys.shapes.VoxelShape; public class MucusBlock extends GlowLichenBlock { public static final MapCodec CODEC = simpleCodec(MucusBlock::new); private static final VoxelShape DOWN_COLLISION_SHAPE = Shapes.box(0.0D, 0.0D, 0.0D, 1.0D, 0.0625D, 1.0D); - private static final double SLIDE_ACCELERATION = 0.025D; - private static final double SLIDE_MAX_SPEED = 0.6D; - private static final double SLIDE_MIN_SPEED = 0.02D; + private static final double SLIDE_ACCELERATION = 0.045D; + private static final double SLIDE_MAX_SPEED = 1.2D; + private static final double SLIDE_MIN_SPEED = 0.01D; public MucusBlock(BlockBehaviour.Properties properties) { super(properties); @@ -37,9 +38,12 @@ public class MucusBlock extends GlowLichenBlock { } @Override - public void entityInside(BlockState state, Level level, BlockPos pos, Entity entity) { - super.entityInside(state, level, pos, entity); - if (level.isClientSide || !state.getValue(MultifaceBlock.getFaceProperty(Direction.DOWN))) { + public void stepOn(Level level, BlockPos pos, BlockState state, Entity entity) { + super.stepOn(level, pos, state, entity); + if (level.isClientSide + || entity instanceof WormEntity + || entity.isShiftKeyDown() + || !state.getValue(MultifaceBlock.getFaceProperty(Direction.DOWN))) { return; } diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/client/ClientTimeDilationTicker.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/client/ClientTimeDilationTicker.java index 0a042ba3..ae2c4a96 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/client/ClientTimeDilationTicker.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/client/ClientTimeDilationTicker.java @@ -10,7 +10,6 @@ import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.entity.player.Player; import net.minecraft.util.Mth; public final class ClientTimeDilationTicker { @@ -32,12 +31,6 @@ public final class ClientTimeDilationTicker { ANIMATION_CLOCKS.clear(); com.craisinlord.antarchy.content.time.TimeDilationApi.clearSyncedClientRates(); } - // Entity rates come from the server. Field snapshots are used only for local effects. - for (Player player : level.players()) { - if (player.isDeadOrDying() || rateAt(player.getX(), player.getY(), player.getZ()) >= TimeDilationMath.NORMAL_RATE) { - com.craisinlord.antarchy.content.time.TimeDilationApi.clearRate(player); - } - } } public static float dilateAnimationTime(Entity entity, float vanillaTime) { diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/client/model/RoyalBossModel.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/client/model/RoyalBossModel.java index bd9cc236..57df6dc7 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/client/model/RoyalBossModel.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/client/model/RoyalBossModel.java @@ -2,10 +2,25 @@ package com.craisinlord.antarchy.content.client.model; import com.craisinlord.antarchy.Antarchy; import com.craisinlord.antarchy.content.entity.royal.RoyalBossEntity; +import com.craisinlord.antarchy.content.entity.royal.RoyalHead; import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.Mth; +import net.minecraft.world.phys.Vec3; +import org.jetbrains.annotations.Nullable; +import software.bernie.geckolib.animation.AnimationState; +import software.bernie.geckolib.cache.object.GeoBone; import software.bernie.geckolib.model.GeoModel; public class RoyalBossModel extends GeoModel { + private static final String[] BEAM_ANCHORS = { + "beam_anchor_left", "beam_anchor_center", "beam_anchor_right" + }; + private static final String[][] AIM_CHAINS = { + {"L_neck", "L_neck2", "L_neck3"}, + {"neck", "neck3", "neck4"}, + {"R_neck", "R_neck2", "R_neck3"} + }; + @Override public ResourceLocation getModelResource(RoyalBossEntity animatable) { return ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "geo/" + animatable.geoNameForRender() + ".geo.json"); @@ -21,4 +36,53 @@ public class RoyalBossModel extends GeoModel { public ResourceLocation getAnimationResource(RoyalBossEntity animatable) { return ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "animations/" + animatable.geoNameForRender() + ".animation.json"); } + + @Override + public void setCustomAnimations(RoyalBossEntity animatable, long instanceId, + AnimationState animationState) { + super.setCustomAnimations(animatable, instanceId, animationState); + for (String anchor : BEAM_ANCHORS) { + this.getBone(anchor).ifPresent(bone -> bone.setTrackingMatrices(true)); + } + + RoyalHead.Slot slot = animatable.getRoyalBeamHeadSlot(); + Vec3 beamEnd = animatable.getRoyalBeamEndPosition(); + if (!animatable.isFiringRoyalBeam() || slot == null || beamEnd == null) { + return; + } + + float partialTick = animationState.getPartialTick(); + Vec3 origin = animatable.getRoyalBeamShootFrom(partialTick); + Vec3 direction = beamEnd.subtract(origin); + double horizontal = Math.sqrt(direction.x * direction.x + direction.z * direction.z); + if (direction.lengthSqr() < 1.0E-6D || horizontal < 1.0E-4D) { + return; + } + + float desiredYaw = (float) (Mth.atan2(-direction.x, direction.z) * Mth.RAD_TO_DEG); + float bodyYaw = Mth.rotLerp(partialTick, animatable.yRotO, animatable.getYRot()); + float relativeYaw = Mth.clamp(Mth.wrapDegrees(desiredYaw - bodyYaw), -55.0F, 55.0F) * Mth.DEG_TO_RAD; + float pitch = Mth.clamp((float) -Mth.atan2(direction.y, horizontal) * Mth.RAD_TO_DEG, + -45.0F, 45.0F) * Mth.DEG_TO_RAD; + + String[] chain = AIM_CHAINS[slot.ordinal()]; + float yawPerBone = relativeYaw / chain.length; + float pitchPerBone = pitch / chain.length; + for (String boneName : chain) { + this.getBone(boneName).ifPresent(bone -> { + bone.setRotY(bone.getRotY() + yawPerBone); + bone.setRotX(bone.getRotX() + pitchPerBone); + }); + } + } + + @Nullable + public Vec3 getTrackedBeamAnchor(RoyalHead.Slot slot) { + GeoBone bone = this.getBone(BEAM_ANCHORS[slot.ordinal()]).orElse(null); + if (bone == null || !bone.isTrackingMatrices()) { + return null; + } + org.joml.Vector3d position = bone.getWorldPosition(); + return new Vec3(position.x, position.y, position.z); + } } diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/client/renderer/RoyalBossRenderer.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/client/renderer/RoyalBossRenderer.java index f9b76e33..9c3a4372 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/client/renderer/RoyalBossRenderer.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/client/renderer/RoyalBossRenderer.java @@ -3,6 +3,7 @@ package com.craisinlord.antarchy.content.client.renderer; import com.craisinlord.antarchy.content.client.model.RoyalBossModel; import com.craisinlord.antarchy.content.entity.royal.RoyalBossEntity; import com.craisinlord.antarchy.content.entity.royal.KingEntity; +import com.craisinlord.antarchy.content.entity.royal.RoyalHead; import com.craisinlord.antarchy.content.entity.royal.beam.RoyalBeamElement; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; @@ -58,8 +59,8 @@ public class RoyalBossRenderer extends GeoEntityRenderer { this.shadowRadius = 8.0F * RoyalBossEntity.MODEL_RENDER_SCALE; } - private static final float BEAM_OUTER_RADIUS = 1.10F; - private static final float BEAM_INNER_RADIUS = 0.52F; + private static final float BEAM_OUTER_RADIUS = 0.55F; + private static final float BEAM_INNER_RADIUS = 0.32F; private static final float BEAM_TILE_BLOCKS = 3.0F; private static final float BEAM_SCROLL_SPEED = 0.32F; @@ -74,7 +75,12 @@ public class RoyalBossRenderer extends GeoEntityRenderer { double x = Mth.lerp(partialTick, entity.xo, entity.getX()); double y = Mth.lerp(partialTick, entity.yo, entity.getY()); double z = Mth.lerp(partialTick, entity.zo, entity.getZ()); - Vec3 start = entity.getRoyalBeamShootFrom(partialTick).subtract(x, y, z); + RoyalHead.Slot beamHead = entity.getRoyalBeamHeadSlot(); + Vec3 trackedAnchor = beamHead == null + ? null + : ((RoyalBossModel) this.getGeoModel()).getTrackedBeamAnchor(beamHead); + Vec3 start = (trackedAnchor != null ? trackedAnchor : entity.getRoyalBeamShootFrom(partialTick)) + .subtract(x, y, z); Vec3 finish = end.subtract(x, y, z); Vec3 axis = finish.subtract(start); double length = axis.length(); diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/client/renderer/WindVortexRenderer.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/client/renderer/WindVortexRenderer.java index a88cf9ce..8855b060 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/client/renderer/WindVortexRenderer.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/client/renderer/WindVortexRenderer.java @@ -13,7 +13,6 @@ import org.joml.Matrix4f; public class WindVortexRenderer extends EntityRenderer { private static final int RINGS = 11; - private static final int SQUARES_PER_SIDE = 3; private static final float BASE_RADIUS = 0.35F; public WindVortexRenderer(EntityRendererProvider.Context context) { @@ -44,11 +43,11 @@ public class WindVortexRenderer extends EntityRenderer { float ringSpin = spinDirection * age * (0.13F + progress * 0.045F) + ring * 0.47F; float alpha = alphaMultiplier; float halfSide = radius * 0.92F; - float tileSize = Math.max(0.035F, radius * 0.12F); + float lineThickness = 0.055F + progress * 0.018F; int red = push ? 70 : 64; int green = push ? 220 : 255; int blue = push ? 255 : 56; - drawSquareRing(consumer, pose, basis, halfSide, axisDistance, tileSize, ringSpin, + drawSquareRing(consumer, pose, basis, halfSide, axisDistance, lineThickness, ringSpin, alpha, red, green, blue); } @@ -56,47 +55,24 @@ public class WindVortexRenderer extends EntityRenderer { } private static void drawSquareRing(VertexConsumer consumer, Matrix4f pose, WindVortexEntity.Basis basis, - float halfSide, float axisDistance, float tileSize, float rotation, float alpha, + float halfSide, float axisDistance, float lineThickness, float rotation, float alpha, int red, int green, int blue) { for (int side = 0; side < 4; side++) { - for (int tile = 0; tile < SQUARES_PER_SIDE; tile++) { - float start = -halfSide + (tile + 0.18F) * (2.0F * halfSide / SQUARES_PER_SIDE); - float end = -halfSide + (tile + 0.82F) * (2.0F * halfSide / SQUARES_PER_SIDE); - float sideAngle = rotation + side * (Mth.TWO_PI / 4.0F); - addSquareTile(consumer, pose, basis, halfSide, axisDistance, tileSize, - sideAngle, start, end, alpha, red, green, blue); - } + float sideAngle = rotation + side * (Mth.TWO_PI / 4.0F); + addSquareSide(consumer, pose, basis, halfSide, axisDistance, lineThickness, + sideAngle, alpha, red, green, blue); } } - private static void addSquareTile(VertexConsumer consumer, Matrix4f pose, WindVortexEntity.Basis basis, - float halfSide, float axisDistance, float tileSize, float sideAngle, float start, float end, + private static void addSquareSide(VertexConsumer consumer, Matrix4f pose, WindVortexEntity.Basis basis, + float halfSide, float axisDistance, float lineThickness, float sideAngle, float alpha, int red, int green, int blue) { - org.joml.Vector3f center = squarePoint(basis, halfSide, axisDistance, sideAngle, (start + end) * 0.5F); - org.joml.Vector3f tangent = new org.joml.Vector3f( - (float) (-basis.sideA.x * Mth.sin(sideAngle) + basis.sideB.x * Mth.cos(sideAngle)), - (float) (-basis.sideA.y * Mth.sin(sideAngle) + basis.sideB.y * Mth.cos(sideAngle)), - (float) (-basis.sideA.z * Mth.sin(sideAngle) + basis.sideB.z * Mth.cos(sideAngle))); + org.joml.Vector3f start = squarePoint(basis, halfSide, axisDistance, sideAngle, -halfSide); + org.joml.Vector3f end = squarePoint(basis, halfSide, axisDistance, sideAngle, halfSide); org.joml.Vector3f axisOffset = new org.joml.Vector3f( - (float) basis.axis.x, (float) basis.axis.y, (float) basis.axis.z).mul(tileSize * 0.5F); - tangent.mul(tileSize * 0.5F); + (float) basis.axis.x, (float) basis.axis.y, (float) basis.axis.z).mul(lineThickness); int a = Mth.clamp((int) (alpha * 255.0F), 0, 255); - addVertex(consumer, pose, center.x - tangent.x - axisOffset.x, center.y - tangent.y - axisOffset.y, - center.z - tangent.z - axisOffset.z, red, green, blue, a); - addVertex(consumer, pose, center.x + tangent.x - axisOffset.x, center.y + tangent.y - axisOffset.y, - center.z + tangent.z - axisOffset.z, red, green, blue, a); - addVertex(consumer, pose, center.x + tangent.x + axisOffset.x, center.y + tangent.y + axisOffset.y, - center.z + tangent.z + axisOffset.z, red, green, blue, a); - addVertex(consumer, pose, center.x - tangent.x + axisOffset.x, center.y - tangent.y + axisOffset.y, - center.z - tangent.z + axisOffset.z, red, green, blue, a); - addVertex(consumer, pose, center.x - tangent.x + axisOffset.x, center.y - tangent.y + axisOffset.y, - center.z - tangent.z + axisOffset.z, red, green, blue, a); - addVertex(consumer, pose, center.x + tangent.x + axisOffset.x, center.y + tangent.y + axisOffset.y, - center.z + tangent.z + axisOffset.z, red, green, blue, a); - addVertex(consumer, pose, center.x + tangent.x - axisOffset.x, center.y + tangent.y - axisOffset.y, - center.z + tangent.z - axisOffset.z, red, green, blue, a); - addVertex(consumer, pose, center.x - tangent.x - axisOffset.x, center.y - tangent.y - axisOffset.y, - center.z - tangent.z - axisOffset.z, red, green, blue, a); + addQuad(consumer, pose, start, end, axisOffset, red, green, blue, a); } private static org.joml.Vector3f squarePoint(WindVortexEntity.Basis basis, float halfSide, diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/creative/CreativeTabContents.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/creative/CreativeTabContents.java index e126f967..ecdc752f 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/creative/CreativeTabContents.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/creative/CreativeTabContents.java @@ -595,7 +595,7 @@ public final class CreativeTabContents { "dread", "long_dread", "inversion", "long_inversion", "stinky", "long_stinky", "paralysis", "long_paralysis", "haste", "strong_haste", "shrinking", "strong_shrinking", "extreme_shrinking", "growing", "strong_growing", "extreme_growing", - "command", "long_command", "time_dilation", "long_time_dilation" + "command", "long_command", "time_dilation", "long_time_dilation", "time_contraction", "long_time_contraction" ); private static final Map ORDER_INDEX = createOrderIndex(); diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/effect/CommandedBehavior.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/effect/CommandedBehavior.java index cc6365ef..431e316a 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/effect/CommandedBehavior.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/effect/CommandedBehavior.java @@ -1,11 +1,11 @@ package com.craisinlord.antarchy.content.effect; import java.util.UUID; -import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.Mob; -import net.minecraft.world.entity.player.Player; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.entity.ai.attributes.Attributes; public final class CommandedBehavior { private CommandedBehavior() { @@ -20,23 +20,39 @@ public final class CommandedBehavior { clear(mob); return; } - ServerPlayer commander = mob.level().getServer().getPlayerList().getPlayer(commanderUuid); + Entity commander = mob.level() instanceof ServerLevel level ? level.getEntity(commanderUuid) : null; if (commander == null || commander.level() != mob.level() || !RoyalEffectEligibility.canApplyCommanded(mob)) { mob.removeEffect(RoyalEffectHooks.commandedHolder()); clear(mob); return; } + if (mob.tickCount % 10 == 0) { + LivingEntity commandedCandidate = findCommanderTarget(mob, commander); + if (commandedCandidate != null) { + mob.setTarget(commandedCandidate); + access.antarchy$setCommandedTargetOwned(true); + } + } LivingEntity target = mob.getTarget(); if (target != null && isProtectedAlly(mob, target)) { mob.setTarget(null); target = null; } + if (target != null) { + tryPassiveCommandedAttack(mob, target); + } if (mob.tickCount % 10 != 0 || target != null) { return; } - LivingEntity candidate = commander.getLastHurtByMob(); + LivingEntity candidate = commander instanceof Mob commanderMob ? commanderMob.getTarget() : null; if (!isValidTarget(mob, commander, candidate)) { - candidate = commander.getLastHurtMob(); + candidate = commander instanceof net.minecraft.world.entity.player.Player player ? player.getLastHurtByMob() : null; + } + if (!isValidTarget(mob, commander, candidate)) { + candidate = mob.getLastHurtByMob(); + } + if (!isValidTarget(mob, commander, candidate)) { + candidate = commander instanceof net.minecraft.world.entity.player.Player player ? player.getLastHurtMob() : null; } if (!isValidTarget(mob, commander, candidate)) { candidate = mob.getLastHurtByMob(); @@ -72,18 +88,59 @@ public final class CommandedBehavior { if (entity instanceof LivingEntity living && living.isAlliedTo(mob)) { return true; } - if (mob.level().getServer() != null - && mob.level().getServer().getPlayerList().getPlayer(commanderUuid) instanceof Player commander - && entity instanceof LivingEntity living) { - return living.isAlliedTo(commander); + if (entity instanceof LivingEntity living && commanderEntity(mob) instanceof LivingEntity livingCommander) { + return living.isAlliedTo(livingCommander); } return false; } - private static boolean isValidTarget(Mob mob, ServerPlayer commander, LivingEntity target) { + private static boolean isValidTarget(Mob mob, Entity commander, LivingEntity target) { return target != null && target.isAlive() && target != mob && target != commander - && !isProtectedAlly(mob, target) && !target.isAlliedTo(commander) - && mob.canAttack(target); + && !isProtectedAlly(mob, target) && !target.isAlliedTo(commander); + } + + private static LivingEntity findCommanderTarget(Mob mob, Entity commander) { + LivingEntity target = commander instanceof Mob commanderMob ? commanderMob.getTarget() : null; + if (isValidTarget(mob, commander, target)) { + return target; + } + if (commander instanceof net.minecraft.world.entity.player.Player player) { + target = player.getLastHurtMob(); + if (isValidTarget(mob, commander, target)) { + return target; + } + target = player.getLastHurtByMob(); + if (isValidTarget(mob, commander, target)) { + return target; + } + } + return mob.level().getEntitiesOfClass(Mob.class, mob.getBoundingBox().inflate(32.0D), + other -> other != mob && other != commander && commander.equals(other.getTarget()) + && isValidTarget(mob, commander, other)).stream() + .min((a, b) -> Double.compare(mob.distanceToSqr(a), mob.distanceToSqr(b))) + .orElse(null); + } + + private static void tryPassiveCommandedAttack(Mob mob, LivingEntity target) { + if (mob.getAttribute(Attributes.ATTACK_DAMAGE) != null + && mob.getAttributeValue(Attributes.ATTACK_DAMAGE) > 0.0D) { + return; + } + mob.getNavigation().moveTo(target, 1.0D); + if (mob.tickCount % 20 != 0 || mob.distanceToSqr(target) > 4.0D) { + return; + } + if (target.hurt(mob.damageSources().mobAttack(mob), 1.0F)) { + mob.swing(net.minecraft.world.InteractionHand.MAIN_HAND); + } + } + + private static Entity commanderEntity(Mob mob) { + if (!(mob instanceof CommandedEntityAccess access) || mob.level().getServer() == null) { + return null; + } + UUID uuid = access.antarchy$getCommanderUuid(); + return uuid == null || !(mob.level() instanceof ServerLevel level) ? null : level.getEntity(uuid); } public static void clear(Mob mob) { diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/effect/DilatedMobEffect.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/effect/DilatedMobEffect.java index 908d92ee..74932485 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/effect/DilatedMobEffect.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/effect/DilatedMobEffect.java @@ -6,6 +6,7 @@ import net.minecraft.world.entity.LivingEntity; public final class DilatedMobEffect extends MobEffect { public static final double RATE = 0.35D; + public static final double STRONG_RATE = 0.2D; public DilatedMobEffect() { super(MobEffectCategory.HARMFUL, 0x6C4AB6); @@ -20,4 +21,8 @@ public final class DilatedMobEffect extends MobEffect { public boolean shouldApplyEffectTickThisTick(int duration, int amplifier) { return true; } + + public static double rateForAmplifier(int amplifier) { + return amplifier > 0 ? STRONG_RATE : RATE; + } } diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/effect/RoyalEffectEligibility.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/effect/RoyalEffectEligibility.java index 2f3dcf54..e5aa8a52 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/effect/RoyalEffectEligibility.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/effect/RoyalEffectEligibility.java @@ -8,6 +8,7 @@ import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.Mob; import net.minecraft.world.entity.player.Player; +import com.craisinlord.antarchy.content.entity.royal.RoyalBossEntity; public final class RoyalEffectEligibility { private RoyalEffectEligibility() { @@ -21,6 +22,10 @@ public final class RoyalEffectEligibility { return RoyalEffectHooks.dilatedHolder() != null && instance.is(RoyalEffectHooks.dilatedHolder()); } + public static boolean isContracted(MobEffectInstance instance) { + return RoyalEffectHooks.contractedHolder() != null && instance.is(RoyalEffectHooks.contractedHolder()); + } + public static boolean canApplyCommanded(LivingEntity entity) { return entity instanceof Mob mob && !(entity instanceof Player) @@ -52,6 +57,6 @@ public final class RoyalEffectEligibility { } public static boolean canUseCommandSource(Entity source) { - return source instanceof Player; + return source instanceof Player || source instanceof RoyalBossEntity; } } diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/effect/RoyalEffectHooks.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/effect/RoyalEffectHooks.java index 70068b36..fa9db08f 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/effect/RoyalEffectHooks.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/effect/RoyalEffectHooks.java @@ -13,6 +13,8 @@ public final class RoyalEffectHooks { ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "commanded")); private static final ResourceKey DILATED_KEY = ResourceKey.create(Registries.MOB_EFFECT, ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "dilated")); + private static final ResourceKey CONTRACTED_KEY = ResourceKey.create(Registries.MOB_EFFECT, + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "contracted")); private RoyalEffectHooks() { } @@ -24,4 +26,8 @@ public final class RoyalEffectHooks { public static Holder dilatedHolder() { return BuiltInRegistries.MOB_EFFECT.getHolder(DILATED_KEY).orElse(null); } + + public static Holder contractedHolder() { + return BuiltInRegistries.MOB_EFFECT.getHolder(CONTRACTED_KEY).orElse(null); + } } diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/DiamondMinecartEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/DiamondMinecartEntity.java index 07c22ea4..c847225e 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/DiamondMinecartEntity.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/DiamondMinecartEntity.java @@ -24,12 +24,16 @@ import net.minecraft.world.level.block.RailBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.RailShape; import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.Vec3; import org.jetbrains.annotations.Nullable; import java.util.List; +import java.util.HashMap; +import java.util.Map; public class DiamondMinecartEntity extends Minecart { private static final long INPUT_TIMEOUT_TICKS = 5L; + private static final long COLLISION_COOLDOWN_TICKS = 10L; private static final EntityDataAccessor SYNCED_SPEED = SynchedEntityData.defineId(DiamondMinecartEntity.class, EntityDataSerializers.FLOAT); private static final EntityDataAccessor SYNCED_FACING = @@ -41,6 +45,7 @@ public class DiamondMinecartEntity extends Minecart { private Direction facingDir = Direction.SOUTH; private BlockPos lastBlockPos = null; private boolean railWarningCooldown = false; + private final Map collisionCooldowns = new HashMap<>(); private final Item dropItem; @@ -134,6 +139,7 @@ public class DiamondMinecartEntity extends Minecart { this.inputFlags = 0; this.lastInputGameTime = Long.MIN_VALUE; this.currentSpeed = 0.0F; + this.collisionCooldowns.clear(); this.entityData.set(SYNCED_SPEED, 0.0F); this.setDeltaMovement(0.0D, this.getDeltaMovement().y, 0.0D); return; @@ -146,6 +152,11 @@ public class DiamondMinecartEntity extends Minecart { Player rider = this.getRidingPlayer(); boolean hasRider = rider != null; + if (!hasRider) { + this.inputFlags = 0; + this.lastInputGameTime = Long.MIN_VALUE; + } + if (this.lastBlockPos == null) { if (rider != null) { this.facingDir = getLookFacing(rider, Direction.SOUTH); @@ -212,10 +223,10 @@ public class DiamondMinecartEntity extends Minecart { private void onEnteredNewBlock(BlockPos currentPos, @Nullable Player rider) { Direction previousFacing = this.facingDir; - if (rider != null && (this.inputFlags & 0x01) != 0) { - Direction lookedFacing = getLookFacing(rider, this.facingDir); - if (lookedFacing != this.facingDir.getOpposite()) { - this.facingDir = lookedFacing; + if (rider != null) { + Direction steeredFacing = getSteeredFacing(rider, this.facingDir); + if (steeredFacing != this.facingDir.getOpposite()) { + this.facingDir = steeredFacing; } } @@ -380,7 +391,10 @@ public class DiamondMinecartEntity extends Minecart { } private boolean canPlaceRailAt(BlockPos pos, BlockState existing) { - if (!isWithinRailBuildHeight(pos) || !this.level().getBlockState(pos.below()).isSolid()) { + if (!isWithinRailBuildHeight(pos) + || !this.level().hasChunkAt(pos) + || !this.level().getWorldBorder().isWithinBounds(pos) + || !this.level().getBlockState(pos.below()).isSolid()) { return false; } return BaseRailBlock.isRail(existing) || existing.isAir() || existing.canBeReplaced(); @@ -390,16 +404,44 @@ public class DiamondMinecartEntity extends Minecart { double maxDamage = AntarchySettings.diamondMinecartMaxMobDamage(); double maxSpeed = AntarchySettings.diamondMinecartMaxSpeed(); float damage = maxSpeed <= 0.0D ? 0.0F : (float) (maxDamage * (this.currentSpeed / maxSpeed)); + if (damage <= 0.0F) { + return; + } + + long gameTime = this.level().getGameTime(); + this.collisionCooldowns.entrySet().removeIf(entry -> entry.getValue() <= gameTime); + Vec3 horizontalVelocity = new Vec3(this.getDeltaMovement().x, 0.0D, this.getDeltaMovement().z); + double velocityLength = horizontalVelocity.length(); + if (velocityLength < 1.0E-4D) { + return; + } + Vec3 movementDirection = horizontalVelocity.scale(1.0D / velocityLength); DamageSource source = this.level().damageSources().generic(); AABB hitBox = this.getBoundingBox().inflate(0.2D, 0.0D, 0.2D); List nearby = this.level().getEntitiesOfClass(LivingEntity.class, hitBox, - entity -> !(entity instanceof Player player && this.hasPassenger(player))); + entity -> !(entity instanceof Player player && this.hasPassenger(player)) + && !entity.isInvulnerable()); for (LivingEntity mob : nearby) { - mob.hurt(source, damage); + if (this.collisionCooldowns.containsKey(mob.getId())) { + continue; + } + double dx = mob.getX() - this.getX(); double dz = mob.getZ() - this.getZ(); + double distance = Math.sqrt(dx * dx + dz * dz); + if (distance > 1.0E-4D) { + Vec3 toMob = new Vec3(dx / distance, 0.0D, dz / distance); + if (movementDirection.dot(toMob) < -0.2D) { + continue; + } + } + + if (!mob.hurt(source, damage)) { + continue; + } + this.collisionCooldowns.put(mob.getId(), gameTime + COLLISION_COOLDOWN_TICKS); double len = Math.sqrt(dx * dx + dz * dz); if (len > 0.001D) { mob.setDeltaMovement(mob.getDeltaMovement().add( @@ -426,6 +468,18 @@ public class DiamondMinecartEntity extends Minecart { return direction.getAxis() == Direction.Axis.Y ? fallback : direction; } + private Direction getSteeredFacing(Player rider, Direction fallback) { + boolean left = (this.inputFlags & 0x04) != 0; + boolean right = (this.inputFlags & 0x08) != 0; + if (left != right) { + return left ? fallback.getCounterClockWise() : fallback.getClockWise(); + } + if ((this.inputFlags & 0x01) != 0) { + return getLookFacing(rider, fallback); + } + return fallback; + } + private static int facingDirectionIndex(Direction dir) { return switch (dir) { case NORTH -> 0; diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/HoverboardEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/HoverboardEntity.java index c91e8272..b27dfda6 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/HoverboardEntity.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/HoverboardEntity.java @@ -25,6 +25,7 @@ import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.Mob; import net.minecraft.world.entity.MoverType; import net.minecraft.world.entity.PathfinderMob; +import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.entity.ai.attributes.AttributeSupplier; import net.minecraft.world.entity.ai.attributes.Attributes; import net.minecraft.world.entity.player.Player; @@ -66,6 +67,11 @@ public class HoverboardEntity extends PathfinderMob implements GeoEntity { this.setPersistenceRequired(); } + @Override + public boolean canBeAffected(MobEffectInstance effectInstance) { + return false; + } + public static AttributeSupplier.Builder createAttributes() { return Mob.createMobAttributes().add(Attributes.MAX_HEALTH, 6.0D); } diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/WormEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/WormEntity.java index b89e907b..eaf0c76f 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/WormEntity.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/WormEntity.java @@ -1,14 +1,23 @@ package com.craisinlord.antarchy.content.entity; +import com.craisinlord.antarchy.Antarchy; import com.craisinlord.antarchy.content.AntarchySoundEvents; +import java.util.Optional; +import net.minecraft.core.Direction; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.core.registries.Registries; import net.minecraft.network.syncher.EntityDataAccessor; import net.minecraft.network.syncher.EntityDataSerializers; import net.minecraft.network.syncher.SynchedEntityData; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; import net.minecraft.sounds.SoundEvent; +import net.minecraft.util.RandomSource; import net.minecraft.world.damagesource.DamageSource; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.MobSpawnType; import net.minecraft.world.entity.ai.attributes.AttributeSupplier; import net.minecraft.world.entity.ai.attributes.Attributes; import net.minecraft.world.entity.ai.goal.FloatGoal; @@ -21,6 +30,11 @@ import net.minecraft.world.entity.ai.goal.target.NearestAttackableTargetGoal; import net.minecraft.world.entity.monster.Monster; import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.Level; +import net.minecraft.world.level.ServerLevelAccessor; +import net.minecraft.world.level.biome.Biome; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.MultifaceBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.core.BlockPos; import net.minecraft.world.phys.Vec3; @@ -34,6 +48,14 @@ import software.bernie.geckolib.animation.RawAnimation; import software.bernie.geckolib.util.GeckoLibUtil; public class WormEntity extends Monster implements GeoEntity { + private static final ResourceKey WORMY_CAVES = ResourceKey.create( + Registries.BIOME, + ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "wormy_caves") + ); + private static final ResourceLocation LOAM_ID = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "loam"); + private static final ResourceLocation MUCUS_ID = ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "mucus"); + private static final int MUCUS_TRAIL_INTERVAL = 6; + private static final double MUCUS_TRAIL_MIN_DISTANCE_SQR = 0.36D; private static final EntityDataAccessor ANIMATION_STATE = SynchedEntityData.defineId(WormEntity.class, EntityDataSerializers.INT); private static final int ANIM_INGROUND = 0; private static final int ANIM_CRAWL = 1; @@ -43,6 +65,8 @@ public class WormEntity extends Monster implements GeoEntity { private static final RawAnimation ATTACK_ANIM = RawAnimation.begin().thenPlay("attack"); private final AnimatableInstanceCache geoCache = GeckoLibUtil.createInstanceCache(this); private int attackAnimationTicks; + private int mucusTrailCooldown; + private Vec3 lastMucusTrailPosition; public WormEntity(EntityType entityType, Level level) { super(entityType, level); @@ -58,6 +82,23 @@ public class WormEntity extends Monster implements GeoEntity { .add(Attributes.KNOCKBACK_RESISTANCE, 0.45D); } + public static boolean canSpawn(EntityType entityType, ServerLevelAccessor level, MobSpawnType spawnReason, BlockPos pos, RandomSource random) { + if ((spawnReason == MobSpawnType.NATURAL || spawnReason == MobSpawnType.CHUNK_GENERATION) + && !level.getBiome(pos).is(WORMY_CAVES)) { + return false; + } + + Optional loam = BuiltInRegistries.BLOCK.getOptional(LOAM_ID); + BlockState floor = level.getBlockState(pos.below()); + if (!floor.is(Blocks.MUD) && (loam.isEmpty() || !floor.is(loam.get()))) { + return false; + } + + return level.getBlockState(pos.above()).getCollisionShape(level, pos.above()).isEmpty() + && level.getBlockState(pos.above(2)).getCollisionShape(level, pos.above(2)).isEmpty() + && Monster.checkMonsterSpawnRules(entityType, level, spawnReason, pos, random); + } + @Override protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); @@ -112,12 +153,96 @@ public class WormEntity extends Monster implements GeoEntity { if (this.level().isClientSide) { return; } + this.tickMucusTrail(); if (this.attackAnimationTicks > 0) { this.attackAnimationTicks--; } this.updateAnimationState(); } + private void tickMucusTrail() { + if (this.mucusTrailCooldown > 0) { + this.mucusTrailCooldown--; + } + + Vec3 velocity = this.getDeltaMovement(); + if (this.mucusTrailCooldown > 0 + || !this.isAlive() + || !this.onGround() + || this.isInWaterOrBubble() + || this.isPassenger() + || velocity.horizontalDistanceSqr() < 0.0025D) { + return; + } + + Vec3 currentPosition = this.position(); + if (this.lastMucusTrailPosition != null + && this.lastMucusTrailPosition.distanceToSqr(currentPosition) < MUCUS_TRAIL_MIN_DISTANCE_SQR) { + return; + } + + this.lastMucusTrailPosition = currentPosition; + this.mucusTrailCooldown = MUCUS_TRAIL_INTERVAL; + + Vec3 horizontalDirection = new Vec3(velocity.x, 0.0D, velocity.z).normalize(); + BlockPos trailPos = BlockPos.containing( + this.getX() - horizontalDirection.x * 0.45D, + this.getBoundingBox().minY + 0.01D, + this.getZ() - horizontalDirection.z * 0.45D + ); + boolean placed = this.placeFloorMucus(trailPos); + + if (placed && this.random.nextFloat() < 0.35F) { + Vec3 side = new Vec3(-horizontalDirection.z, 0.0D, horizontalDirection.x); + double sideOffset = this.random.nextBoolean() ? 0.55D : -0.55D; + this.placeFloorMucus(BlockPos.containing( + trailPos.getX() + 0.5D + side.x * sideOffset, + trailPos.getY(), + trailPos.getZ() + 0.5D + side.z * sideOffset + )); + } + + } + + private boolean placeFloorMucus(BlockPos pos) { + Optional mucus = BuiltInRegistries.BLOCK.getOptional(MUCUS_ID); + if (mucus.isEmpty() || !(mucus.get() instanceof MultifaceBlock mucusBlock)) { + return false; + } + + BlockState existing = this.level().getBlockState(pos); + var floorFace = MultifaceBlock.getFaceProperty(Direction.DOWN); + if (existing.is(mucusBlock)) { + if (existing.getValue(floorFace)) { + return true; + } + BlockState merged = existing.setValue(floorFace, true); + if (merged.canSurvive(this.level(), pos)) { + this.level().setBlock(pos, merged, Block.UPDATE_ALL); + return true; + } + return false; + } + + if (!existing.isAir()) { + return false; + } + + BlockPos supportPos = pos.below(); + BlockState support = this.level().getBlockState(supportPos); + if (!support.isFaceSturdy(this.level(), supportPos, Direction.UP)) { + return false; + } + + BlockState mucusState = mucusBlock.defaultBlockState().setValue(floorFace, true); + if (!mucusState.canSurvive(this.level(), pos)) { + return false; + } + + this.level().setBlock(pos, mucusState, Block.UPDATE_ALL); + return true; + } + private void updateAnimationState() { if (this.attackAnimationTicks > 0) { this.entityData.set(ANIMATION_STATE, ANIM_ATTACK); diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/royal/KingEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/royal/KingEntity.java index 26771fbe..4668b667 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/royal/KingEntity.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/royal/KingEntity.java @@ -3,6 +3,8 @@ package com.craisinlord.antarchy.content.entity.royal; import com.craisinlord.antarchy.config.AntarchySettings; import com.craisinlord.antarchy.content.AntarchyObjects; import com.craisinlord.antarchy.content.AntarchySoundEvents; +import com.craisinlord.antarchy.content.effect.RoyalEffectEligibility; +import com.craisinlord.antarchy.content.effect.RoyalEffectHooks; import net.minecraft.sounds.SoundEvent; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; @@ -20,10 +22,19 @@ import net.minecraft.world.effect.MobEffects; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.LightningBolt; import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.MobCategory; +import net.minecraft.world.entity.monster.Enemy; import net.minecraft.world.entity.ai.attributes.AttributeSupplier; import net.minecraft.world.entity.ai.attributes.Attributes; import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.Pose; +import net.minecraft.world.entity.projectile.AbstractArrow; +import net.minecraft.world.entity.projectile.Arrow; +import net.minecraft.commands.arguments.EntityAnchorArgument; import net.minecraft.world.entity.projectile.Projectile; +import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.MenuProvider; import net.minecraft.world.item.ArmorItem; import net.minecraft.world.item.ArmorMaterials; import net.minecraft.world.item.ItemStack; @@ -36,6 +47,8 @@ import org.jetbrains.annotations.Nullable; import com.craisinlord.antarchy.content.entity.royal.beam.RoyalBeamSettings; import com.craisinlord.antarchy.content.entity.royal.beam.RoyalBeamTerrainMode; import com.craisinlord.antarchy.content.entity.royal.beam.RoyalBeamElement; +import com.craisinlord.antarchy.content.menu.RoyalJudgmentMenu; +import com.craisinlord.antarchy.content.menu.RoyalJudgmentState; import com.craisinlord.antarchy.content.entity.royal.decree.CloseQuartersDecree; import com.craisinlord.antarchy.content.entity.royal.decree.ComeNoCloserDecree; import com.craisinlord.antarchy.content.entity.royal.decree.DoNotRunDecree; @@ -85,6 +98,21 @@ public class KingEntity extends RoyalBossEntity { private int iceballCooldownTicks = 120; private int iceSpikeCooldownTicks = 160; private boolean decreeRetreatPressure; + @Nullable + private ServerPlayer exileTarget; + private int exileTicks; + @Nullable + private ServerPlayer titheTarget; + private int titheTicks; + @Nullable + private ServerPlayer targetShotPlayer; + @Nullable + private ServerPlayer targetShotVictim; + private int targetShotTicks; + @Nullable + private ServerPlayer sealedTarget; + private int sealedTicks; + private long sealUntil; private final Map judgmentCooldowns = new HashMap<>(); private final Map lastPlayerDamageTime = new HashMap<>(); private final Map iceBuildup = new HashMap<>(); @@ -178,6 +206,11 @@ public class KingEntity extends RoyalBossEntity { return RoyalBeamTerrainMode.BUILD_ICE; } + @Override + protected double royalBeamMinimumRange() { + return AntarchySettings.kingBeamMinimumRange(); + } + @Override protected RoyalBeamTerrainMode royalBeamTerrainMode(@Nullable RoyalHead head) { return head != null && head.slot() == RoyalHead.Slot.RIGHT ? RoyalBeamTerrainMode.BUILD_ICE : RoyalBeamTerrainMode.NONE; @@ -298,6 +331,7 @@ public class KingEntity extends RoyalBossEntity { if (this.level().isClientSide) { return; } + this.tickRoyalPunishment(); if (this.iceBuildup.size() > 16) { this.iceBuildup.clear(); } @@ -328,6 +362,262 @@ public class KingEntity extends RoyalBossEntity { } } + private void tickRoyalPunishment() { + if (this.exileTarget == null && this.titheTarget == null && this.targetShotPlayer == null && this.sealedTarget == null) { + return; + } + if (this.exileTarget != null) { + this.tickRoyalExile(); + } + if (this.titheTarget != null) { + this.tickRoyalTithe(); + } + if (this.targetShotPlayer != null) { + this.tickRoyalTargetShot(); + } + if (this.sealedTarget != null) { + this.tickRoyalSeal(); + } + } + + private void tickRoyalExile() { + if (this.exileTicks-- <= 0 || !this.exileTarget.isAlive() || this.exileTarget.level() != this.level() + || this.isDeadOrDying()) { + this.clearExile(); + return; + } + this.exileTarget.lookAt(EntityAnchorArgument.Anchor.EYES, this.getEyePosition()); + this.exileTarget.setPose(Pose.CROUCHING); + this.exileTarget.setShiftKeyDown(true); + if (this.exileTicks == 1) { + Vec3 away = this.exileTarget.position().subtract(this.position()).multiply(1.0D, 0.0D, 1.0D); + if (away.lengthSqr() < 1.0E-4D) { + away = this.getLookAngle().multiply(-1.0D, 0.0D, -1.0D); + } + away = away.normalize(); + this.exileTarget.setDeltaMovement(away.x * 2.6D, 1.35D, away.z * 2.6D); + this.exileTarget.hasImpulse = true; + this.triggerAnim("body_action", "wing_gust"); + this.playRoyalSound(AntarchySoundEvents.KING_WING_FLAP.get(), 0.82F); + } + } + + private void tickRoyalTithe() { + if (!this.titheTarget.isAlive() || this.titheTarget.level() != this.level() + || this.isDeadOrDying() || !(this.titheTarget.containerMenu instanceof RoyalJudgmentMenu)) { + this.clearTithe(); + return; + } + if (--this.titheTicks <= 0) { + for (int slot = 0; slot < this.titheTarget.getInventory().getContainerSize(); slot++) { + ItemStack stack = this.titheTarget.getInventory().getItem(slot); + if (stack.isEmpty() || !isRoyalTitheItem(stack)) continue; + ItemStack thrown = stack.split(1); + this.titheTarget.getInventory().setChanged(); + this.titheTarget.drop(thrown, true); + this.clearTithe(); + return; + } + this.clearTithe(); + } + } + + private void tickRoyalTargetShot() { + if (!this.targetShotPlayer.isAlive() || this.targetShotVictim == null || !this.targetShotVictim.isAlive() + || this.targetShotPlayer.level() != this.level() || this.isDeadOrDying() + || !(this.targetShotPlayer.containerMenu instanceof RoyalJudgmentMenu)) { + this.clearTargetShot(); + return; + } + this.targetShotPlayer.lookAt(EntityAnchorArgument.Anchor.EYES, this.targetShotVictim.getEyePosition()); + if (--this.targetShotTicks <= 0) { + ItemStack ranged = findRoyalRangedItem(this.targetShotPlayer); + if (!ranged.isEmpty()) { + Arrow arrow = new Arrow((ServerLevel) this.level(), this.targetShotPlayer, ItemStack.EMPTY, ItemStack.EMPTY); + arrow.setPos(this.targetShotPlayer.getX(), this.targetShotPlayer.getEyeY() - 0.1D, this.targetShotPlayer.getZ()); + Vec3 direction = this.targetShotVictim.getEyePosition().subtract(arrow.position()).normalize(); + arrow.setDeltaMovement(direction.scale(3.0D)); + arrow.setBaseDamage(2.0D); + ((ServerLevel) this.level()).addFreshEntity(arrow); + this.targetShotPlayer.displayClientMessage(Component.literal("The King takes your shot."), true); + } + this.clearTargetShot(); + } + } + + private void tickRoyalSeal() { + if (!this.sealedTarget.isAlive() || this.sealedTarget.level() != this.level() || this.isDeadOrDying() + || !(this.sealedTarget.containerMenu instanceof RoyalJudgmentMenu) || --this.sealedTicks <= 0) { + this.clearSeal(); + } + } + + private void clearExile() { + if (this.exileTarget != null && this.exileTarget.isAlive()) { + this.exileTarget.setShiftKeyDown(false); + this.exileTarget.setPose(Pose.STANDING); + } + this.exileTarget = null; + this.exileTicks = 0; + } + + private void clearTithe() { + if (this.titheTarget != null && this.titheTarget.containerMenu instanceof RoyalJudgmentMenu) { + this.titheTarget.closeContainer(); + } + this.titheTarget = null; + this.titheTicks = 0; + } + + private void clearTargetShot() { + if (this.targetShotPlayer != null && this.targetShotPlayer.containerMenu instanceof RoyalJudgmentMenu) { + this.targetShotPlayer.closeContainer(); + } + this.targetShotPlayer = null; + this.targetShotVictim = null; + this.targetShotTicks = 0; + } + + private void clearSeal() { + if (this.sealedTarget != null) { + RoyalJudgmentState.clear(this.sealedTarget.getUUID()); + if (this.sealedTarget.containerMenu instanceof RoyalJudgmentMenu) { + this.sealedTarget.closeContainer(); + } + } + this.sealedTarget = null; + this.sealedTicks = 0; + } + + private void startTithe(ServerPlayer target) { + this.clearTithe(); + this.titheTarget = target; + this.titheTicks = 20; + target.openMenu(new MenuProvider() { + @Override + public Component getDisplayName() { + return Component.translatable("menu.antarchy.royal_judgment"); + } + + @Override + public AbstractContainerMenu createMenu(int containerId, net.minecraft.world.entity.player.Inventory inventory, + Player player) { + return new RoyalJudgmentMenu(containerId, inventory); + } + }); + } + + private void startTargetShot(ServerPlayer target, ServerPlayer victim) { + this.clearTargetShot(); + this.targetShotPlayer = target; + this.targetShotVictim = victim; + this.targetShotTicks = 20; + target.openMenu(new MenuProvider() { + @Override + public Component getDisplayName() { + return Component.translatable("menu.antarchy.royal_judgment"); + } + + @Override + public AbstractContainerMenu createMenu(int containerId, net.minecraft.world.entity.player.Inventory inventory, + Player player) { + return new RoyalJudgmentMenu(containerId, inventory); + } + }); + } + + private void startSeal(ServerPlayer target) { + this.clearSeal(); + java.util.Set slots = new java.util.HashSet<>(); + for (int slot = 9; slot < 18; slot++) slots.add(slot); + RoyalJudgmentState.seal(target.getUUID(), slots); + this.sealedTarget = target; + this.sealedTicks = 100; + target.openMenu(new MenuProvider() { + @Override + public Component getDisplayName() { + return Component.translatable("menu.antarchy.royal_judgment"); + } + + @Override + public AbstractContainerMenu createMenu(int containerId, net.minecraft.world.entity.player.Inventory inventory, + Player player) { + return new RoyalJudgmentMenu(containerId, inventory); + } + }); + } + + public boolean debugActivateDecree(String id, ServerPlayer target) { + for (RoyalDecree decree : DECREES) { + String decreeId = decree.translationKey().substring(decree.translationKey().lastIndexOf('.') + 1); + if (decreeId.equalsIgnoreCase(id.replace('-', '_'))) { + this.endDecree(this.getTarget()); + this.activeDecree = decree; + this.activeDecreeTicks = 300; + this.decreeCooldownTicks = 0; + this.sendDecreeTitle(target); + return true; + } + } + return false; + } + + public boolean debugTriggerPunishment(RoyalPunishmentType type, ServerPlayer target) { + if (!(this.level() instanceof ServerLevel level) || !target.isAlive() || target.level() != level) { + return false; + } + switch (type) { + case ROYAL_EXILE -> { + this.clearExile(); + this.exileTarget = target; + this.exileTicks = 25; + return true; + } + case ROYAL_TITHE -> { + this.startTithe(target); + return true; + } + case KINGS_TARGET -> { + ServerPlayer victim = level.players().stream() + .filter(candidate -> candidate != target && candidate.isAlive() && candidate.distanceToSqr(target) <= 4096.0D) + .min((left, right) -> Double.compare(left.distanceToSqr(target), right.distanceToSqr(target))) + .orElse(null); + if (victim == null) return false; + ItemStack ranged = findRoyalRangedItem(target); + if (ranged.isEmpty()) return false; + target.displayClientMessage(Component.literal("The King chooses your target."), true); + this.startTargetShot(target, victim); + return true; + } + case KINGS_SEAL -> { + this.sealUntil = level.getGameTime() + 100L; + target.displayClientMessage(Component.literal("The King seals your inventory."), true); + level.sendParticles(ParticleTypes.ENCHANT, target.getX(), target.getY() + 1.0D, target.getZ(), + 30, 0.6D, 1.0D, 0.6D, 0.1D); + this.startSeal(target); + return true; + } + } + return false; + } + + private static boolean isRoyalTitheItem(ItemStack stack) { + return stack.is(net.minecraft.world.item.Items.ARROW) + || stack.is(net.minecraft.world.item.Items.BREAD) + || stack.is(net.minecraft.world.item.Items.COBBLESTONE) + || stack.is(net.minecraft.world.item.Items.POTION); + } + + private static ItemStack findRoyalRangedItem(ServerPlayer player) { + for (ItemStack stack : player.getInventory().items) { + if (stack.getItem() instanceof net.minecraft.world.item.BowItem + || stack.getItem() instanceof net.minecraft.world.item.CrossbowItem) { + return stack; + } + } + return ItemStack.EMPTY; + } + private void trackBehavior(LivingEntity target) { double distance = target.distanceTo(this); this.bumpBehavior(Behavior.AIRBORNE, !target.onGround() && !target.isPassenger() ? 1 : -1); @@ -389,6 +679,27 @@ public class KingEntity extends RoyalBossEntity { KingEntity.this.performWingGust(level, target); } })) { + } else if (this.attackScheduler.ready("royal_muster", RoyalAttackLane.BODY) + && !this.findRoyalMusterTargets(level).isEmpty() + && (forceFar || this.random.nextInt(4) == 0) + && this.beginRoyalAttack("royal_muster", RoyalAttackLane.BODY, + AntarchySettings.kingRoyalMusterCooldownTicks(), + AntarchySettings.kingRoyalMusterWindupTicks(), 1, 20, + new com.craisinlord.antarchy.content.entity.royal.attack.RoyalAttackScheduler.Action() { + @Override public void onStart() { + KingEntity.this.triggerAnim("body_action", "minion_spawn"); + KingEntity.this.playRoyalSound(AntarchySoundEvents.KING_DECREE_CAST.get(), 0.72F); + level.sendParticles(ParticleTypes.ENCHANT, + KingEntity.this.getX(), KingEntity.this.getY() + 2.0D, KingEntity.this.getZ(), + 36, 5.0D, 2.0D, 5.0D, 0.12D); + } + @Override public void onActive(int elapsedTicks) { + KingEntity.this.performRoyalMuster(level); + } + @Override public void onComplete() { + KingEntity.this.playRoyalSound(AntarchySoundEvents.KING_ROAR.get(), 0.62F); + } + })) { } } @@ -403,6 +714,37 @@ public class KingEntity extends RoyalBossEntity { this.tickKingElementalProjectiles(level, target); } + private List findRoyalMusterTargets(ServerLevel level) { + double radius = AntarchySettings.kingRoyalMusterRadius(); + return level.getEntitiesOfClass(Mob.class, this.getBoundingBox().inflate(radius), mob -> + mob.isAlive() && mob != this + && (mob.getType().getCategory() == MobCategory.MONSTER || mob instanceof Enemy) + && !(mob instanceof RoyalBossEntity) + && RoyalEffectEligibility.canApplyCommanded(mob)); + } + + private void performRoyalMuster(ServerLevel level) { + var commanded = RoyalEffectHooks.commandedHolder(); + if (commanded == null) { + return; + } + int applied = 0; + for (Mob mob : this.findRoyalMusterTargets(level)) { + if (applied >= AntarchySettings.kingRoyalMusterCap()) { + break; + } + if (mob.addEffect(new MobEffectInstance(commanded, AntarchySettings.kingRoyalMusterDurationTicks()), this)) { + applied++; + level.sendParticles(ParticleTypes.HAPPY_VILLAGER, + mob.getX(), mob.getY() + mob.getBbHeight() + 0.3D, mob.getZ(), + 5, 0.3D, 0.2D, 0.3D, 0.02D); + } + } + if (applied > 0) { + this.playRoyalSound(AntarchySoundEvents.KING_DECREE_CAST.get(), 0.95F); + } + } + private void tickKingElementalProjectiles(ServerLevel level, LivingEntity target) { if (this.fireballCooldownTicks > 0) this.fireballCooldownTicks--; if (this.iceballCooldownTicks > 0) this.iceballCooldownTicks--; @@ -549,13 +891,7 @@ public class KingEntity extends RoyalBossEntity { this.decreeRetreatPressure = false; this.playRoyalSound(AntarchySoundEvents.KING_DECREE_CAST.get(), 0.9F + this.random.nextFloat() * 0.15F); this.playRoyalSound(AntarchySoundEvents.KING_ROAR.get(), 0.8F + this.random.nextFloat() * 0.12F); - if (target instanceof ServerPlayer player) { - player.connection.send(new ClientboundSetTitlesAnimationPacket(5, 300, 10)); - player.connection.send(new ClientboundSetTitleTextPacket(Component.translatable(this.activeDecree.translationKey()) - .withStyle(style -> style.withColor(ChatFormatting.GOLD).withBold(true)))); - player.connection.send(new ClientboundSetSubtitleTextPacket(Component.translatable(this.activeDecree.instructionKey()) - .withStyle(style -> style.withColor(ChatFormatting.WHITE)))); - } + if (target instanceof ServerPlayer player) this.sendDecreeTitle(player); } int countdown = this.activeDecree.countdownTicks(target); if (countdown > 0 && countdown <= 100 && this.tickCount % 20 == 0) { @@ -589,6 +925,15 @@ public class KingEntity extends RoyalBossEntity { return DECREES.get(this.random.nextInt(DECREES.size())); } + private void sendDecreeTitle(ServerPlayer player) { + if (this.activeDecree == null) return; + player.connection.send(new ClientboundSetTitlesAnimationPacket(5, 300, 10)); + player.connection.send(new ClientboundSetTitleTextPacket(Component.translatable(this.activeDecree.translationKey()) + .withStyle(style -> style.withColor(ChatFormatting.GOLD).withBold(true)))); + player.connection.send(new ClientboundSetSubtitleTextPacket(Component.translatable(this.activeDecree.instructionKey()) + .withStyle(style -> style.withColor(ChatFormatting.WHITE)))); + } + private void endDecree(@Nullable LivingEntity target) { if (target instanceof ServerPlayer player) { player.connection.send(new ClientboundClearTitlesPacket(false)); @@ -615,7 +960,11 @@ public class KingEntity extends RoyalBossEntity { if (this.activeDecree == null || target == null || !target.isAlive()) { return; } - this.invokeJudgment(target); + if (target instanceof ServerPlayer player) { + this.debugTriggerPunishment(RoyalPunishmentType.ROYAL_EXILE, player); + } else { + this.invokeJudgment(target); + } this.endDecree(target); } diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/royal/RoyalBlackHoleEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/royal/RoyalBlackHoleEntity.java index d30b2ed4..eb4c0f8e 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/royal/RoyalBlackHoleEntity.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/royal/RoyalBlackHoleEntity.java @@ -37,6 +37,7 @@ public class RoyalBlackHoleEntity extends Entity implements GeoEntity { private static final String OWNER_KEY = "OwnerUuid"; private static final String AGE_KEY = "Age"; private static final String ACTIVE_KEY = "ActiveTicks"; + private static final String ASSAILANT_KEY = "AssailantVariant"; private static final double DEFAULT_RADIUS = 14.0D; private static final int DEFAULT_ACTIVE_TICKS = 120; @@ -46,6 +47,7 @@ public class RoyalBlackHoleEntity extends Entity implements GeoEntity { private UUID ownerId; private int age; private int activeTicks = DEFAULT_ACTIVE_TICKS; + private boolean assailantVariant; private final AnimatableInstanceCache geoCache = GeckoLibUtil.createInstanceCache(this); public RoyalBlackHoleEntity(EntityType entityType, Level level) { @@ -67,6 +69,12 @@ public class RoyalBlackHoleEntity extends Entity implements GeoEntity { return create(level, center, AntarchySettings.queenBlackHoleRadius(), AntarchySettings.queenBlackHoleActiveTicks(), ownerId); } + public static RoyalBlackHoleEntity createAssailant(ServerLevel level, Vec3 center, @Nullable UUID ownerId) { + RoyalBlackHoleEntity hole = create(level, center, AntarchySettings.queenBlackHoleRadius(), AntarchySettings.queenBlackHoleActiveTicks(), ownerId); + hole.assailantVariant = true; + return hole; + } + @Override protected void defineSynchedData(SynchedEntityData.Builder builder) { builder.define(RADIUS, (float) DEFAULT_RADIUS); @@ -94,9 +102,12 @@ public class RoyalBlackHoleEntity extends Entity implements GeoEntity { } this.age++; if (!this.isCollapsing()) { + if (this.assailantVariant) { + this.setPos(this.getX(), this.getY() + 0.035D, this.getZ()); + } this.applyPull(); if (this.age % 10 == 0 && this.level() instanceof ServerLevel level) { - TimeDilationApi.createField(level, this.position(), Math.max(2.0D, this.radius() * 0.55D), 0.18D, 14); + TimeDilationApi.createField(level, this.position(), Math.max(2.0D, this.radius() * 0.55D), 0.18D, 14, this.ownerId, !this.assailantVariant); if (this.age % 20 == 0 && level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { RoyalBlockDestruction.destroySphere(level, this, this.position(), Math.min(2.0D, this.radius() * 0.2D), 8, 30.0D, 0.0F); } @@ -207,6 +218,7 @@ public class RoyalBlackHoleEntity extends Entity implements GeoEntity { this.age = tag.getInt(AGE_KEY); this.activeTicks = tag.contains(ACTIVE_KEY) ? tag.getInt(ACTIVE_KEY) : DEFAULT_ACTIVE_TICKS; this.ownerId = tag.hasUUID(OWNER_KEY) ? tag.getUUID(OWNER_KEY) : null; + this.assailantVariant = tag.getBoolean(ASSAILANT_KEY); } @Override @@ -217,6 +229,7 @@ public class RoyalBlackHoleEntity extends Entity implements GeoEntity { if (this.ownerId != null) { tag.putUUID(OWNER_KEY, this.ownerId); } + tag.putBoolean(ASSAILANT_KEY, this.assailantVariant); } @Override diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/royal/RoyalBossEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/royal/RoyalBossEntity.java index dafad45f..babcefcb 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/royal/RoyalBossEntity.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/royal/RoyalBossEntity.java @@ -98,6 +98,13 @@ public abstract class RoyalBossEntity extends Monster implements GeoEntity, Mult private static final int OBSTRUCTION_CLEAR_MAX_BLOCKS = 24; private static final double OBSTRUCTION_CLEAR_MAX_RESISTANCE = 60.0D; private static final float OBSTRUCTION_CLEAR_DROP_CHANCE = 0.1F; + // Keep visual muzzle points separate from the centered multipart hitboxes. + // Geo mouth fronts are near z=-219, with side heads centered at x=+/-21. At 2x render scale, + // one model pixel is 1/8 block. + private static final double BEAM_MUZZLE_FORWARD = 27.375D; + private static final double BEAM_MUZZLE_CENTER_Y = 11.5D; + private static final double BEAM_MUZZLE_SIDE_Y = 10.25D; + private static final double BEAM_MUZZLE_LATERAL = 2.625D; protected static final double FLYING_MIN_HOVER = 2.5D; protected static final double FLYING_PREFERRED_HOVER = 6.0D; @@ -111,6 +118,8 @@ public abstract class RoyalBossEntity extends Monster implements GeoEntity, Mult SynchedEntityData.defineId(RoyalBossEntity.class, EntityDataSerializers.BOOLEAN); private static final EntityDataAccessor BEAM_ELEMENT = SynchedEntityData.defineId(RoyalBossEntity.class, EntityDataSerializers.INT); + private static final EntityDataAccessor BEAM_HEAD_SLOT = + SynchedEntityData.defineId(RoyalBossEntity.class, EntityDataSerializers.INT); private static final EntityDataAccessor BEAM_END_X = SynchedEntityData.defineId(RoyalBossEntity.class, EntityDataSerializers.FLOAT); private static final EntityDataAccessor BEAM_END_Y = @@ -260,6 +269,7 @@ public abstract class RoyalBossEntity extends Monster implements GeoEntity, Mult builder.define(HAS_BEAM_END, false); builder.define(ACCELERATED, false); builder.define(BEAM_ELEMENT, RoyalBeamElement.GENERIC.ordinal()); + builder.define(BEAM_HEAD_SLOT, -1); builder.define(BEAM_END_X, 0.0F); builder.define(BEAM_END_Y, 0.0F); builder.define(BEAM_END_Z, 0.0F); @@ -396,7 +406,8 @@ public abstract class RoyalBossEntity extends Monster implements GeoEntity, Mult if (this.activeBeamHead != null) { LivingEntity beamTarget = this.activeBeamHead.target(this.level()); - if (!this.activeBeamHead.shooting() || beamTarget == null || !beamTarget.isAlive()) { + if (!this.activeBeamHead.shooting() || beamTarget == null || !beamTarget.isAlive() + || this.distanceTo(beamTarget) < this.royalBeamMinimumRange()) { this.stopRoyalBeam(); } else if (!this.beamStarted) { return; @@ -406,14 +417,14 @@ public abstract class RoyalBossEntity extends Monster implements GeoEntity, Mult this.playRoyalSound(this.royalBeamLoopSound(), 1.0F); } this.beamController.tick( - this.headAnchor(this.activeBeamHead), + this.beamAnchor(this.activeBeamHead), beamTarget, this.royalBeamSettings(), this.royalBeamTerrainMode(this.activeBeamHead), this::setRoyalBeamEndPosition); Vec3 beamEnd = this.beamController.beamEndPosition(); if (beamEnd != null) { - this.tickRoyalBeamEffects(this.activeBeamHead, this.headAnchor(this.activeBeamHead), beamEnd); + this.tickRoyalBeamEffects(this.activeBeamHead, this.beamAnchor(this.activeBeamHead), beamEnd); } if (!this.beamController.isFiring()) { this.stopRoyalBeam(); @@ -431,6 +442,7 @@ public abstract class RoyalBossEntity extends Monster implements GeoEntity, Mult LivingEntity target = head.target(this.level()); if (!head.readyToAttack() || this.attackScheduler.laneBusy(this.headLane(head)) || target == null || !this.canAttack(target) + || this.distanceTo(target) < this.royalBeamMinimumRange() || this.headWithinBiteReach(head, target)) { continue; } @@ -456,8 +468,9 @@ public abstract class RoyalBossEntity extends Monster implements GeoEntity, Mult } RoyalBossEntity.this.beamStarted = true; RoyalBossEntity.this.beamController.start( - RoyalBossEntity.this.headAnchor(head), committedTarget.getEyePosition(), duration); + RoyalBossEntity.this.beamAnchor(head), committedTarget.getEyePosition(), duration); RoyalBossEntity.this.entityData.set(BEAM_ELEMENT, RoyalBossEntity.this.royalBeamElement(head).ordinal()); + RoyalBossEntity.this.entityData.set(BEAM_HEAD_SLOT, head.slot().ordinal()); RoyalBossEntity.this.setFiringRoyalBeam(true); RoyalBossEntity.this.triggerAnim(head.slot().controllerName(), "shoot"); RoyalBossEntity.this.beamLoopSoundTicks = 20; @@ -493,6 +506,7 @@ public abstract class RoyalBossEntity extends Monster implements GeoEntity, Mult this.attackScheduler.cancel(this.beamLane()); this.beamController.stop(); this.entityData.set(BEAM_ELEMENT, RoyalBeamElement.GENERIC.ordinal()); + this.entityData.set(BEAM_HEAD_SLOT, -1); this.playRoyalSound(this.royalBeamEndSound(), 1.0F); this.setFiringRoyalBeam(false); this.setRoyalBeamEndPosition(null); @@ -708,6 +722,30 @@ public abstract class RoyalBossEntity extends Monster implements GeoEntity, Mult this.getZ() + forward.z * spec.forwardOffset() + right.z * spec.lateralOffset()); } + protected Vec3 beamAnchor(RoyalHead head) { + return beamAnchor(head.slot(), this.getX(), this.getY(), this.getZ(), this.getYRot()); + } + + private Vec3 beamAnchor(RoyalHead.Slot slot, double x, double y, double z, float yaw) { + double yawRadians = yaw * Mth.DEG_TO_RAD; + Vec3 forward = new Vec3(-Math.sin(yawRadians), 0.0D, Math.cos(yawRadians)); + Vec3 right = new Vec3(forward.z, 0.0D, -forward.x); + double lateral = switch (slot) { + case LEFT -> -BEAM_MUZZLE_LATERAL; + case CENTER -> 0.0D; + case RIGHT -> BEAM_MUZZLE_LATERAL; + }; + double vertical = slot == RoyalHead.Slot.CENTER ? BEAM_MUZZLE_CENTER_Y : BEAM_MUZZLE_SIDE_Y; + return new Vec3( + x + forward.x * BEAM_MUZZLE_FORWARD + right.x * lateral, + y + vertical, + z + forward.z * BEAM_MUZZLE_FORWARD + right.z * lateral); + } + + protected double royalBeamMinimumRange() { + return AntarchySettings.queenBeamMinimumRange(); + } + protected RoyalHead royalHead(RoyalHead.Slot slot) { return this.heads[slot.ordinal()]; } @@ -826,8 +864,15 @@ public abstract class RoyalBossEntity extends Monster implements GeoEntity, Mult } public Vec3 getRoyalBeamShootFrom(float partialTicks) { - if (this.activeBeamHead != null) { - return this.headAnchor(this.activeBeamHead); + int slotIndex = this.activeBeamHead != null + ? this.activeBeamHead.slot().ordinal() + : this.entityData.get(BEAM_HEAD_SLOT); + if (slotIndex >= 0 && slotIndex < RoyalHead.Slot.values().length) { + double x = Mth.lerp(partialTicks, this.xo, this.getX()); + double y = Mth.lerp(partialTicks, this.yo, this.getY()); + double z = Mth.lerp(partialTicks, this.zo, this.getZ()); + float yaw = Mth.rotLerp(partialTicks, this.yRotO, this.getYRot()); + return this.beamAnchor(RoyalHead.Slot.values()[slotIndex], x, y, z, yaw); } double x = Mth.lerp(partialTicks, this.xo, this.getX()); double y = Mth.lerp(partialTicks, this.yo, this.getY()) + this.getBbHeight() * 0.72D; @@ -842,18 +887,28 @@ public abstract class RoyalBossEntity extends Monster implements GeoEntity, Mult : RoyalBeamElement.GENERIC; } + @Nullable + public RoyalHead.Slot getRoyalBeamHeadSlot() { + int slotIndex = this.activeBeamHead != null + ? this.activeBeamHead.slot().ordinal() + : this.entityData.get(BEAM_HEAD_SLOT); + return slotIndex >= 0 && slotIndex < RoyalHead.Slot.values().length + ? RoyalHead.Slot.values()[slotIndex] + : null; + } + @Override public void registerControllers(AnimatableManager.ControllerRegistrar controllers) { controllers.add(new AnimationController<>(this, "locomotion", 4, this::locomotionPredicate)); controllers.add(new AnimationController<>(this, "head_left", 0, RoyalBossEntity::headIdle) - .triggerableAnim("bite", RawAnimation.begin().thenPlay("bite_1")) - .triggerableAnim("shoot", RawAnimation.begin().thenPlay("shoot_1"))); - controllers.add(new AnimationController<>(this, "head_center", 0, RoyalBossEntity::headIdle) - .triggerableAnim("bite", RawAnimation.begin().thenPlay("bite_2")) - .triggerableAnim("shoot", RawAnimation.begin().thenPlay("shoot_2"))); - controllers.add(new AnimationController<>(this, "head_right", 0, RoyalBossEntity::headIdle) .triggerableAnim("bite", RawAnimation.begin().thenPlay("bite_3")) .triggerableAnim("shoot", RawAnimation.begin().thenPlay("shoot_3"))); + controllers.add(new AnimationController<>(this, "head_center", 0, RoyalBossEntity::headIdle) + .triggerableAnim("bite", RawAnimation.begin().thenPlay("bite_1")) + .triggerableAnim("shoot", RawAnimation.begin().thenPlay("shoot_1"))); + controllers.add(new AnimationController<>(this, "head_right", 0, RoyalBossEntity::headIdle) + .triggerableAnim("bite", RawAnimation.begin().thenPlay("bite_2")) + .triggerableAnim("shoot", RawAnimation.begin().thenPlay("shoot_2"))); controllers.add(new AnimationController<>(this, "body_action", 0, this::bodyActionPredicate) .triggerableAnim("stomp", RawAnimation.begin().thenPlay("stomp")) .triggerableAnim("wing_gust", RawAnimation.begin().thenPlay("wing_gust")) diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/royal/RoyalBossMultipartLayout.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/royal/RoyalBossMultipartLayout.java index 37b380e4..fe61f4e7 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/royal/RoyalBossMultipartLayout.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/royal/RoyalBossMultipartLayout.java @@ -9,11 +9,11 @@ public final class RoyalBossMultipartLayout implements MultipartLayout { public static final MultipartPartDefinition BODY = new MultipartPartDefinition( "body", 20.0F, 24.0F, 1.00F, 0.0D, 3.0D, 0.0D, true); public static final MultipartPartDefinition LEFT_HEAD = new MultipartPartDefinition( - "left_head", 4.0F, 4.0F, 1.30F, 12.0D, 20.0D, -7.0D, true); + "left_head", 4.0F, 4.0F, 1.30F, 24.75D, 8.5D, -2.625D, true); public static final MultipartPartDefinition CENTER_HEAD = new MultipartPartDefinition( - "center_head", 4.5F, 4.5F, 1.20F, 13.0D, 22.0D, 0.0D, true); + "center_head", 4.5F, 4.5F, 1.20F, 24.75D, 9.5D, 0.0D, true); public static final MultipartPartDefinition RIGHT_HEAD = new MultipartPartDefinition( - "right_head", 4.0F, 4.0F, 1.30F, 12.0D, 20.0D, 7.0D, true); + "right_head", 4.0F, 4.0F, 1.30F, 24.75D, 8.5D, 2.625D, true); public static final MultipartPartDefinition LEFT_WING = new MultipartPartDefinition( "left_wing", 14.0F, 16.0F, 0.85F, -2.0D, 14.0D, -13.0D, true); public static final MultipartPartDefinition RIGHT_WING = new MultipartPartDefinition( diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/royal/RoyalHead.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/royal/RoyalHead.java index 43e8de4b..d55d6cfa 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/royal/RoyalHead.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/royal/RoyalHead.java @@ -6,9 +6,9 @@ import org.jetbrains.annotations.Nullable; public final class RoyalHead { public enum Slot { - LEFT(1, "head_left", "bite_1", "shoot_1"), - CENTER(2, "head_center", "bite_2", "shoot_2"), - RIGHT(3, "head_right", "bite_3", "shoot_3"); + LEFT(1, "head_left", "bite_3", "shoot_3"), + CENTER(2, "head_center", "bite_1", "shoot_1"), + RIGHT(3, "head_right", "bite_2", "shoot_2"); private final int partIndex; private final String controllerName; diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/royal/RoyalIceSpikeEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/royal/RoyalIceSpikeEntity.java index 217b9606..c1bace03 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/royal/RoyalIceSpikeEntity.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/royal/RoyalIceSpikeEntity.java @@ -22,8 +22,9 @@ import software.bernie.geckolib.animation.RawAnimation; import software.bernie.geckolib.util.GeckoLibUtil; public class RoyalIceSpikeEntity extends Entity implements GeoEntity { - private static final RawAnimation EMERGE_ANIMATION = RawAnimation.begin().thenPlay("ice_spike"); - private static final RawAnimation IMPACT_ANIMATION = RawAnimation.begin().thenPlay("ice_spike_impact"); + // The exported asset contains one coordinated animation for all four spike groups. + private static final RawAnimation SPIKE_ANIMATION = RawAnimation.begin().thenPlay("animation"); + private static final String ANIMATION_CONTROLLER = "ice_spike"; private final AnimatableInstanceCache geoCache = GeckoLibUtil.createInstanceCache(this); private boolean impacted; @@ -46,15 +47,14 @@ public class RoyalIceSpikeEntity extends Entity implements GeoEntity { @Override public void tick() { super.tick(); - if (!this.level().isClientSide && this.tickCount == 1) { - this.triggerAnim("ice_spike", "emerge"); + if (this.tickCount == 1) { + this.triggerAnim(ANIMATION_CONTROLLER, "emerge"); } if (!this.level().isClientSide && this.tickCount == 6 && !this.impacted) { this.impacted = true; this.impact((ServerLevel) this.level()); - this.triggerAnim("ice_spike", "impact"); } - if (!this.level().isClientSide && this.tickCount > 45) { + if (!this.level().isClientSide && this.tickCount > 110) { this.discard(); } if (this.level().isClientSide && this.tickCount < 10) { @@ -86,9 +86,8 @@ public class RoyalIceSpikeEntity extends Entity implements GeoEntity { @Override public void registerControllers(AnimatableManager.ControllerRegistrar controllers) { - controllers.add(new AnimationController<>(this, "ice_spike", 0, state -> PlayState.STOP) - .triggerableAnim("emerge", EMERGE_ANIMATION) - .triggerableAnim("impact", IMPACT_ANIMATION)); + controllers.add(new AnimationController<>(this, ANIMATION_CONTROLLER, 0, state -> PlayState.STOP) + .triggerableAnim("emerge", SPIKE_ANIMATION)); } @Override diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/vortex/WindVortexEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/vortex/WindVortexEntity.java index 4a9d34ab..6cb4341d 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/vortex/WindVortexEntity.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/entity/vortex/WindVortexEntity.java @@ -75,6 +75,7 @@ public class WindVortexEntity extends Entity { private static final double FALL_ACCELERATION = 0.006D; private static final double MAX_FALL_SPEED = 0.08D; private static final double MINIMUM_DOWNWARD_DRIFT = 0.012D; + private static final double ENTITY_FORCE_SPEED_SCALE = 0.5D; private static final int FADE_OUT_TICKS = 8; public enum VortexMode { @@ -509,12 +510,14 @@ public class WindVortexEntity extends Entity { case GATHER_RETURN -> (0.05D + progress * 0.08D) * massScale; } * playerScale; if (mode == VortexMode.UPWARD && entity.onGround()) { - axialSpeed = Math.max(axialSpeed, entity instanceof Player ? 0.38D : 0.3D); + axialSpeed = Math.max(axialSpeed, + (entity instanceof Player ? 0.38D : 0.3D) * ENTITY_FORCE_SPEED_SCALE); } Vec3 wanted = radial.scale(radialError * pull) .add(tangent.scale(spin)) - .add(basis.axis.scale(axialSpeed)); + .add(basis.axis.scale(axialSpeed)) + .scale(ENTITY_FORCE_SPEED_SCALE); Vec3 current = entity.getDeltaMovement(); Vec3 updatedMovement = new Vec3( Mth.lerp(0.72D, current.x, wanted.x), @@ -522,10 +525,13 @@ public class WindVortexEntity extends Entity { Mth.lerp(0.72D, current.z, wanted.z) ); if (this.travelling) { - updatedMovement = updatedMovement.add(this.travelVelocity.x * 0.8D, 0.0D, this.travelVelocity.z * 0.8D); + updatedMovement = updatedMovement.add( + this.travelVelocity.x * 0.8D * ENTITY_FORCE_SPEED_SCALE, + 0.0D, + this.travelVelocity.z * 0.8D * ENTITY_FORCE_SPEED_SCALE); } if (mode == VortexMode.UPWARD && entity.onGround()) { - double minRise = entity instanceof Player ? 0.38D : 0.3D; + double minRise = (entity instanceof Player ? 0.38D : 0.3D) * ENTITY_FORCE_SPEED_SCALE; updatedMovement = new Vec3(updatedMovement.x, Math.max(updatedMovement.y, minRise), updatedMovement.z); entity.setOnGround(false); } @@ -543,7 +549,9 @@ public class WindVortexEntity extends Entity { Vec3 radial = radialVector.lengthSqr() < 1.0E-6D ? basis.sideA : radialVector.scale(1.0D / horizontal); Vec3 tangent = basis.axis.cross(radial).normalize(); double scale = this.launchStrength * Mth.clamp(this.getVortexHeight() / 5.0D, 0.5D, 2.5D); - entity.setDeltaMovement(tangent.scale(0.72D * scale).add(radial.scale(0.34D * scale)).add(basis.axis.scale((0.78D + progress * 0.28D) * scale))); + entity.setDeltaMovement(tangent.scale(0.72D * scale * ENTITY_FORCE_SPEED_SCALE) + .add(radial.scale(0.34D * scale * ENTITY_FORCE_SPEED_SCALE)) + .add(basis.axis.scale((0.78D + progress * 0.28D) * scale * ENTITY_FORCE_SPEED_SCALE))); entity.hasImpulse = true; this.syncPlayerMotion(entity); } @@ -575,8 +583,8 @@ public class WindVortexEntity extends Entity { Vec3 toOwner = target.subtract(entity.position()); double distance = toOwner.length(); Vec3 direction = distance < 1.0E-4D ? new Vec3(0.0D, 1.0D, 0.0D) : toOwner.scale(1.0D / distance); - double arc = Mth.clamp(distance * 0.06D, 0.25D, 1.1D); - double power = this.launchStrength * Mth.clamp(distance / 6.0D, 0.6D, 2.0D); + double arc = Mth.clamp(distance * 0.06D, 0.25D, 1.1D) * ENTITY_FORCE_SPEED_SCALE; + double power = this.launchStrength * Mth.clamp(distance / 6.0D, 0.6D, 2.0D) * ENTITY_FORCE_SPEED_SCALE; entity.setDeltaMovement(direction.scale(power).add(0.0D, arc, 0.0D)); entity.fallDistance = 0.0F; entity.hasImpulse = true; diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/EyeOfTheStormItem.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/EyeOfTheStormItem.java index 731210d2..d8baf43c 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/EyeOfTheStormItem.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/EyeOfTheStormItem.java @@ -47,6 +47,7 @@ public class EyeOfTheStormItem extends Item implements GeoItem { private static final String IDLE_CONTROLLER = "idle_controller"; private static final String IDLE_ANIMATION = "spinning_idle"; private static final Map LAST_UPDRAFT_TICK = new ConcurrentHashMap<>(); + private static final Map LAST_SURGE_TICK = new ConcurrentHashMap<>(); private static final float SURGE_PROJECTILE_SPEED = 0.65F; private final AnimatableInstanceCache geoCache = GeckoLibUtil.createInstanceCache(this); @@ -108,6 +109,13 @@ public class EyeOfTheStormItem extends Item implements GeoItem { return; } + long now = level.getGameTime(); + Long last = LAST_SURGE_TICK.get(player.getUUID()); + if (last != null && now - last < AntarchySettings.eyeOfTheStormSurgeCooldownTicks()) { + return; + } + LAST_SURGE_TICK.put(player.getUUID(), now); + Vec3 look = player.getViewVector(1.0F); launchStormVortex(level, player.getEyePosition().add(look), look, player); diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/RoyalAssailantBattleAxeItem.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/RoyalAssailantBattleAxeItem.java index 5b5dc7b9..cdaf0426 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/RoyalAssailantBattleAxeItem.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/RoyalAssailantBattleAxeItem.java @@ -1,6 +1,11 @@ package com.craisinlord.antarchy.content.item; +import com.craisinlord.antarchy.content.effect.RoyalEffectHooks; +import com.craisinlord.antarchy.content.entity.royal.RoyalBlackHoleEntity; import com.craisinlord.antarchy.config.AntarchySettings; +import java.util.List; +import net.minecraft.ChatFormatting; +import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.EquipmentSlotGroup; import net.minecraft.world.entity.ai.attributes.AttributeModifier; @@ -9,9 +14,19 @@ import net.minecraft.world.item.AxeItem; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Tier; +import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.item.component.ItemAttributeModifiers; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResultHolder; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.Level; public class RoyalAssailantBattleAxeItem extends AxeItem { + private static final int BLACK_HOLE_COOLDOWN_TICKS = 20 * 20; + private static final int DILATED_DURATION_TICKS = 100; private static final ResourceLocation REACH_MODIFIER_ID = ResourceLocation.fromNamespaceAndPath("antarchy", "royal_assailant_battleaxe_reach"); private static final ResourceLocation KNOCKBACK_MODIFIER_ID = ResourceLocation.fromNamespaceAndPath("antarchy", "royal_assailant_battleaxe_knockback"); private final Tier tier; @@ -46,4 +61,44 @@ public class RoyalAssailantBattleAxeItem extends AxeItem { public int getEnchantmentValue() { return AntarchySettings.royalWeaponEnchantability(); } + + @Override + public void appendHoverText(ItemStack stack, Item.TooltipContext context, List tooltipComponents, TooltipFlag tooltipFlag) { + tooltipComponents.add(Component.translatable("tooltip.antarchy.royal_assailant_battleaxe.black_hole") + .withStyle(ChatFormatting.GOLD)); + tooltipComponents.add(Component.translatable("tooltip.antarchy.royal_assailant_battleaxe.dilation") + .withStyle(ChatFormatting.GOLD)); + super.appendHoverText(stack, context, tooltipComponents, tooltipFlag); + } + + @Override + public InteractionResultHolder use(Level level, Player player, InteractionHand hand) { + ItemStack stack = player.getItemInHand(hand); + if (player.getCooldowns().isOnCooldown(this)) { + return InteractionResultHolder.fail(stack); + } + if (level.isClientSide) { + return InteractionResultHolder.sidedSuccess(stack, true); + } + if (level instanceof ServerLevel serverLevel) { + RoyalBlackHoleEntity blackHole = RoyalBlackHoleEntity.createAssailant( + serverLevel, + player.position().add(player.getLookAngle().normalize().scale(2.0D)).add(0.0D, 2.0D, 0.0D), + player.getUUID()); + serverLevel.addFreshEntity(blackHole); + player.getCooldowns().addCooldown(this, BLACK_HOLE_COOLDOWN_TICKS); + return InteractionResultHolder.success(stack); + } + return InteractionResultHolder.pass(stack); + } + + @Override + public boolean hurtEnemy(ItemStack stack, LivingEntity target, LivingEntity attacker) { + boolean hurt = super.hurtEnemy(stack, target, attacker); + if (hurt && attacker instanceof Player player && !attacker.level().isClientSide + && RoyalEffectHooks.dilatedHolder() != null) { + target.addEffect(new MobEffectInstance(RoyalEffectHooks.dilatedHolder(), DILATED_DURATION_TICKS), player); + } + return hurt; + } } diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/RoyalGuardianShieldItem.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/RoyalGuardianShieldItem.java index 8d8cc62e..878c90fc 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/RoyalGuardianShieldItem.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/RoyalGuardianShieldItem.java @@ -1,13 +1,32 @@ package com.craisinlord.antarchy.content.item; +import com.craisinlord.antarchy.content.effect.RoyalEffectEligibility; +import com.craisinlord.antarchy.content.effect.RoyalEffectHooks; import com.craisinlord.antarchy.config.AntarchySettings; +import java.util.List; +import java.util.Comparator; import java.util.function.Supplier; +import net.minecraft.core.Holder; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResultHolder; +import net.minecraft.world.effect.MobEffect; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.ShieldItem; +import net.minecraft.world.item.TooltipFlag; +import net.minecraft.network.chat.Component; +import net.minecraft.ChatFormatting; import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.level.Level; +import net.minecraft.world.phys.AABB; public class RoyalGuardianShieldItem extends ShieldItem { + private static final int COMMAND_COOLDOWN_TICKS = 20 * 15; + private static final int COMMAND_DURATION_TICKS = 20 * 30; + private static final double COMMAND_RANGE = 16.0D; private final Supplier repairIngredient; public RoyalGuardianShieldItem(Item.Properties properties, Supplier repairIngredient) { @@ -24,4 +43,37 @@ public class RoyalGuardianShieldItem extends ShieldItem { public int getEnchantmentValue() { return AntarchySettings.royalWeaponEnchantability(); } + + @Override + public void appendHoverText(ItemStack stack, Item.TooltipContext context, List tooltipComponents, TooltipFlag tooltipFlag) { + tooltipComponents.add(Component.translatable("tooltip.antarchy.royal_guardian_shield.command") + .withStyle(ChatFormatting.GOLD)); + super.appendHoverText(stack, context, tooltipComponents, tooltipFlag); + } + + @Override + public InteractionResultHolder use(Level level, Player player, InteractionHand hand) { + ItemStack stack = player.getItemInHand(hand); + if (player.getCooldowns().isOnCooldown(this)) { + return InteractionResultHolder.fail(stack); + } + if (level.isClientSide) { + return InteractionResultHolder.sidedSuccess(stack, true); + } + Holder commanded = RoyalEffectHooks.commandedHolder(); + if (commanded == null) { + return InteractionResultHolder.fail(stack); + } + Mob target = level.getEntitiesOfClass(Mob.class, + new AABB(player.blockPosition()).inflate(COMMAND_RANGE), + mob -> RoyalEffectEligibility.canApplyCommanded(mob)) + .stream() + .min(Comparator.comparingDouble((Mob mob) -> player.distanceToSqr(mob)).thenComparingInt(Mob::getId)) + .orElse(null); + if (target == null || !target.addEffect(new MobEffectInstance(commanded, COMMAND_DURATION_TICKS), player)) { + return InteractionResultHolder.fail(stack); + } + player.getCooldowns().addCooldown(this, COMMAND_COOLDOWN_TICKS); + return InteractionResultHolder.success(stack); + } } diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/RoyalGuardianSwordItem.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/RoyalGuardianSwordItem.java index 0dcf72eb..fba30b17 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/RoyalGuardianSwordItem.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/item/RoyalGuardianSwordItem.java @@ -1,6 +1,9 @@ package com.craisinlord.antarchy.content.item; import com.craisinlord.antarchy.config.AntarchySettings; +import com.craisinlord.antarchy.content.client.model.ResourceBackedGeoItemModel; +import com.craisinlord.antarchy.content.client.renderer.AnimatedHeldItemRenderer; +import java.util.function.Consumer; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.EquipmentSlotGroup; import net.minecraft.world.entity.ai.attributes.AttributeModifier; @@ -10,15 +13,25 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.SwordItem; import net.minecraft.world.item.Tier; import net.minecraft.world.item.component.ItemAttributeModifiers; +import software.bernie.geckolib.animatable.GeoItem; +import software.bernie.geckolib.animatable.client.GeoRenderProvider; +import software.bernie.geckolib.animatable.instance.AnimatableInstanceCache; +import software.bernie.geckolib.animation.AnimatableManager; +import software.bernie.geckolib.util.GeckoLibUtil; -public class RoyalGuardianSwordItem extends SwordItem { +public class RoyalGuardianSwordItem extends SwordItem implements GeoItem { + private static final ResourceLocation MODEL_LOCATION = ResourceLocation.fromNamespaceAndPath("antarchy", "geo/royal_guardian_sword.geo.json"); + private static final ResourceLocation TEXTURE_LOCATION = ResourceLocation.fromNamespaceAndPath("antarchy", "textures/item/royal_guardian/royal_guardian_sword.png"); + private static final ResourceLocation ANIMATION_LOCATION = ResourceLocation.fromNamespaceAndPath("antarchy", "animations/static_item.animation.json"); private static final ResourceLocation REACH_MODIFIER_ID = ResourceLocation.fromNamespaceAndPath("antarchy", "royal_guardian_sword_reach"); private static final ResourceLocation KNOCKBACK_MODIFIER_ID = ResourceLocation.fromNamespaceAndPath("antarchy", "royal_guardian_sword_knockback"); private final Tier tier; + private final AnimatableInstanceCache geoCache = GeckoLibUtil.createInstanceCache(this); public RoyalGuardianSwordItem(Tier tier, Item.Properties properties) { super(tier, properties); this.tier = tier; + GeoItem.registerSyncedAnimatable(this); } @Override @@ -46,4 +59,29 @@ public class RoyalGuardianSwordItem extends SwordItem { public int getEnchantmentValue() { return AntarchySettings.royalWeaponEnchantability(); } + + @Override + public void registerControllers(AnimatableManager.ControllerRegistrar controllers) { + } + + @Override + public AnimatableInstanceCache getAnimatableInstanceCache() { + return this.geoCache; + } + + @Override + public void createGeoRenderer(Consumer consumer) { + consumer.accept(new GeoRenderProvider() { + private AnimatedHeldItemRenderer renderer; + + @Override + public net.minecraft.client.renderer.BlockEntityWithoutLevelRenderer getGeoItemRenderer() { + if (this.renderer == null) { + this.renderer = new AnimatedHeldItemRenderer<>(new ResourceBackedGeoItemModel<>(MODEL_LOCATION, TEXTURE_LOCATION, ANIMATION_LOCATION)); + } + + return this.renderer; + } + }); + } } diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/time/TimeDilationApi.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/time/TimeDilationApi.java index 42f2faa6..c08d3ec6 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/time/TimeDilationApi.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/time/TimeDilationApi.java @@ -16,6 +16,7 @@ public final class TimeDilationApi { private static BiConsumer> fieldSyncDispatcher = (player, fields) -> { }; private static final Map SYNCED_CLIENT_RATES = new ConcurrentHashMap<>(); + private static final ThreadLocal ROTATION_BYPASS_DEPTH = ThreadLocal.withInitial(() -> 0); private TimeDilationApi() { } @@ -31,7 +32,15 @@ public final class TimeDilationApi { } public static TimeDilationFieldEntity createField(ServerLevel level, Vec3 center, double radius, double rate, int durationTicks) { - TimeDilationFieldEntity field = TimeDilationFieldEntity.create(level, center, radius, rate, durationTicks); + return createField(level, center, radius, rate, durationTicks, null); + } + + public static TimeDilationFieldEntity createField(ServerLevel level, Vec3 center, double radius, double rate, int durationTicks, UUID ownerId) { + return createField(level, center, radius, rate, durationTicks, ownerId, true); + } + + public static TimeDilationFieldEntity createField(ServerLevel level, Vec3 center, double radius, double rate, int durationTicks, UUID ownerId, boolean visual) { + TimeDilationFieldEntity field = TimeDilationFieldEntity.create(level, center, radius, rate, durationTicks, ownerId, visual); level.addFreshEntity(field); return field; } @@ -53,6 +62,29 @@ public final class TimeDilationApi { return getRate(entity) < TimeDilationMath.NORMAL_RATE; } + public static void enterRotationBypass() { + ROTATION_BYPASS_DEPTH.set(ROTATION_BYPASS_DEPTH.get() + 1); + } + + public static void exitRotationBypass() { + int depth = ROTATION_BYPASS_DEPTH.get() - 1; + if (depth <= 0) { + ROTATION_BYPASS_DEPTH.remove(); + } else { + ROTATION_BYPASS_DEPTH.set(depth); + } + } + + public static boolean isRotationBypassed() { + return ROTATION_BYPASS_DEPTH.get() > 0; + } + + public static void setInheritedRate(Entity entity, double rate) { + if (entity instanceof TimeDilationEntityAccess access) { + access.antarchy$setInheritedTimeDilationRate(rate); + } + } + public static void applySyncedRate(Entity entity, double rate) { applySyncedRate(entity.getUUID(), rate); if (entity instanceof TimeDilationEntityAccess access) { @@ -68,7 +100,7 @@ public final class TimeDilationApi { /** Clears both the authoritative entity state and any client-side UUID cache. */ public static void clearRate(Entity entity) { if (entity instanceof TimeDilationEntityAccess access) { - boolean wasDilated = access.antarchy$getTimeDilationRate() < TimeDilationMath.NORMAL_RATE; + boolean wasDilated = Math.abs(access.antarchy$getTimeDilationRate() - TimeDilationMath.NORMAL_RATE) > 0.001D; access.antarchy$setTimeDilationRate(TimeDilationMath.NORMAL_RATE); if (wasDilated) { syncEntityRate(entity, TimeDilationMath.NORMAL_RATE); @@ -91,7 +123,7 @@ public final class TimeDilationApi { public static boolean consumeTick(Entity entity, String timerKey) { double rate = getRate(entity); - if (rate >= TimeDilationMath.NORMAL_RATE || !(entity instanceof TimeDilationEntityAccess access)) { + if (Math.abs(rate - TimeDilationMath.NORMAL_RATE) < 0.001D || !(entity instanceof TimeDilationEntityAccess access)) { return true; } return access.antarchy$consumeTimeDilationTick(timerKey, rate); @@ -99,7 +131,7 @@ public final class TimeDilationApi { public static int scaleCooldownTicks(Entity entity, int ticks) { double rate = getRate(entity); - if (ticks <= 0 || rate >= TimeDilationMath.NORMAL_RATE) { + if (ticks <= 0 || Math.abs(rate - TimeDilationMath.NORMAL_RATE) < 0.001D) { return ticks; } return (int) Math.ceil(ticks / Math.max(TimeDilationMath.MIN_RATE, rate)); diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/time/TimeDilationEntityAccess.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/time/TimeDilationEntityAccess.java index 46179f4e..af7ed8af 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/time/TimeDilationEntityAccess.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/time/TimeDilationEntityAccess.java @@ -5,6 +5,10 @@ public interface TimeDilationEntityAccess { void antarchy$setTimeDilationRate(double rate); + double antarchy$getInheritedTimeDilationRate(); + + void antarchy$setInheritedTimeDilationRate(double rate); + boolean antarchy$consumeTimeDilationTick(String timerKey, double rate); boolean antarchy$isInTimeDilationMove(); diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/time/TimeDilationFieldEntity.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/time/TimeDilationFieldEntity.java index 12f51078..fecf2e27 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/time/TimeDilationFieldEntity.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/time/TimeDilationFieldEntity.java @@ -9,6 +9,7 @@ import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntityType; import net.minecraft.world.level.Level; import net.minecraft.world.phys.Vec3; +import java.util.UUID; public class TimeDilationFieldEntity extends Entity { private static final EntityDataAccessor RADIUS = @@ -23,6 +24,8 @@ public class TimeDilationFieldEntity extends Entity { private int durationTicks = -1; private int age; + private UUID ownerId; + private boolean visual = true; public TimeDilationFieldEntity(EntityType entityType, Level level) { super(entityType, level); @@ -31,14 +34,32 @@ public class TimeDilationFieldEntity extends Entity { } public static TimeDilationFieldEntity create(Level level, Vec3 center, double radius, double rate, int durationTicks) { + return create(level, center, radius, rate, durationTicks, null); + } + + public static TimeDilationFieldEntity create(Level level, Vec3 center, double radius, double rate, int durationTicks, UUID ownerId) { + return create(level, center, radius, rate, durationTicks, ownerId, true); + } + + public static TimeDilationFieldEntity create(Level level, Vec3 center, double radius, double rate, int durationTicks, UUID ownerId, boolean visual) { TimeDilationFieldEntity field = new TimeDilationFieldEntity(AntarchyObjects.TIME_DILATION_FIELD.get(), level); field.setPos(center.x, center.y, center.z); field.setFieldRadius(radius); field.setFieldRate(rate); field.durationTicks = durationTicks; + field.ownerId = ownerId; + field.visual = visual; return field; } + public boolean isOwnedBy(Entity entity) { + return this.ownerId != null && entity != null && this.ownerId.equals(entity.getUUID()); + } + + public boolean isVisual() { + return this.visual; + } + @Override protected void defineSynchedData(SynchedEntityData.Builder builder) { builder.define(RADIUS, 8.0F); @@ -105,6 +126,8 @@ public class TimeDilationFieldEntity extends Entity { this.setFieldRate(tag.getDouble(RATE_KEY)); this.durationTicks = tag.contains(DURATION_KEY) ? tag.getInt(DURATION_KEY) : -1; this.age = tag.getInt(AGE_KEY); + this.ownerId = tag.hasUUID("OwnerUuid") ? tag.getUUID("OwnerUuid") : null; + this.visual = !tag.contains("Visual") || tag.getBoolean("Visual"); } @Override @@ -113,5 +136,9 @@ public class TimeDilationFieldEntity extends Entity { tag.putDouble(RATE_KEY, this.fieldRate()); tag.putInt(DURATION_KEY, this.durationTicks); tag.putInt(AGE_KEY, this.age); + if (this.ownerId != null) { + tag.putUUID("OwnerUuid", this.ownerId); + } + tag.putBoolean("Visual", this.visual); } } diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/time/TimeDilationFieldSampler.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/time/TimeDilationFieldSampler.java index 04b62d39..5053c6db 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/time/TimeDilationFieldSampler.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/time/TimeDilationFieldSampler.java @@ -1,6 +1,7 @@ package com.craisinlord.antarchy.content.time; import java.util.List; +import net.minecraft.world.entity.Entity; import net.minecraft.world.phys.Vec3; public final class TimeDilationFieldSampler { @@ -27,4 +28,23 @@ public final class TimeDilationFieldSampler { } return TimeDilationMath.clampRate(combinedRate); } + + public static double sample(List fields, Entity entity) { + double combinedRate = TimeDilationMath.NORMAL_RATE; + for (TimeDilationFieldEntity field : fields) { + if (field.isOwnedBy(entity)) { + continue; + } + Vec3 center = field.position(); + double dx = center.x - entity.getX(); + double dy = center.y - entity.getY(); + double dz = center.z - entity.getZ(); + double distanceSqr = dx * dx + dy * dy + dz * dz; + if (distanceSqr < field.fieldRadiusSqr()) { + double falloff = TimeDilationMath.gaussianFalloff(Math.sqrt(distanceSqr), field.fieldRadius()); + combinedRate *= TimeDilationMath.localFieldRate(field.effectiveFieldRate(), falloff); + } + } + return TimeDilationMath.clampRate(combinedRate); + } } diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/time/TimeDilationManager.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/time/TimeDilationManager.java index 00b68271..12fd3f4b 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/time/TimeDilationManager.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/time/TimeDilationManager.java @@ -6,7 +6,11 @@ import net.minecraft.server.MinecraftServer; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.projectile.Projectile; import com.craisinlord.antarchy.content.effect.DilatedMobEffect; +import com.craisinlord.antarchy.content.effect.ContractedMobEffect; +import com.craisinlord.antarchy.content.effect.ContractedMobEffect; +import com.craisinlord.antarchy.content.effect.ContractedMobEffect; import com.craisinlord.antarchy.content.effect.RoyalEffectEligibility; import com.craisinlord.antarchy.content.effect.RoyalEffectHooks; @@ -20,7 +24,7 @@ public final class TimeDilationManager { syncFieldSnapshots(level, fields); updateEntities(level, fields); if (!fields.isEmpty()) { - TimeDilationParticles.spawnFieldBorders(level, fields); + TimeDilationParticles.spawnFieldBorders(level, fields.stream().filter(TimeDilationFieldEntity::isVisual).toList()); } } } @@ -61,18 +65,55 @@ public final class TimeDilationManager { continue; } double previousRate = access.antarchy$getTimeDilationRate(); - double fieldRate = TimeDilationFieldSampler.sample(fields, entity.position()); - double effectRate = RoyalEffectHooks.dilatedHolder() != null - && entity instanceof net.minecraft.world.entity.LivingEntity living - && living.hasEffect(RoyalEffectHooks.dilatedHolder()) - ? DilatedMobEffect.RATE : TimeDilationMath.NORMAL_RATE; - double rate = Math.min(fieldRate, effectRate); - if (rate >= TimeDilationMath.NORMAL_RATE) { + double fieldRate = TimeDilationFieldSampler.sample(fields, entity); + double effectRate = TimeDilationMath.NORMAL_RATE; + if (RoyalEffectHooks.dilatedHolder() != null + && entity instanceof net.minecraft.world.entity.LivingEntity living) { + var effect = living.getEffect(RoyalEffectHooks.dilatedHolder()); + if (effect != null) { + effectRate = DilatedMobEffect.rateForAmplifier(effect.getAmplifier()); + } + } + if (RoyalEffectHooks.contractedHolder() != null + && entity instanceof net.minecraft.world.entity.LivingEntity living) { + var effect = living.getEffect(RoyalEffectHooks.contractedHolder()); + if (effect != null) { + effectRate = Math.max(effectRate, ContractedMobEffect.rateForAmplifier(effect.getAmplifier())); + } + } + double inheritedRate = access.antarchy$getInheritedTimeDilationRate(); + if (entity instanceof Projectile projectile && projectile.getOwner() != null) { + double ownerRate = TimeDilationApi.getRate(projectile.getOwner()); + inheritedRate = ownerRate < TimeDilationMath.NORMAL_RATE + ? Math.min(inheritedRate, ownerRate) + : Math.max(inheritedRate, ownerRate); + } + double slowRate = TimeDilationMath.NORMAL_RATE; + double fastRate = TimeDilationMath.NORMAL_RATE; + if (fieldRate < TimeDilationMath.NORMAL_RATE) { + slowRate = Math.min(slowRate, fieldRate); + } else { + fastRate = Math.max(fastRate, fieldRate); + } + if (effectRate < TimeDilationMath.NORMAL_RATE) { + slowRate = Math.min(slowRate, effectRate); + } else { + fastRate = Math.max(fastRate, effectRate); + } + if (inheritedRate < TimeDilationMath.NORMAL_RATE) { + slowRate = Math.min(slowRate, inheritedRate); + } else { + fastRate = Math.max(fastRate, inheritedRate); + } + double targetRate = slowRate < TimeDilationMath.NORMAL_RATE ? slowRate : fastRate; + double rate = TimeDilationMath.transitionRate(previousRate, targetRate); + if (Math.abs(targetRate - TimeDilationMath.NORMAL_RATE) < 0.001D + && Math.abs(rate - TimeDilationMath.NORMAL_RATE) < 0.001D) { TimeDilationApi.clearRate(entity); } else { access.antarchy$setTimeDilationRate(rate); } - if (rate < TimeDilationMath.NORMAL_RATE && Math.abs(previousRate - rate) > 0.001D) { + if (Math.abs(previousRate - rate) > 0.001D) { TimeDilationApi.syncEntityRate(entity, rate); } } diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/time/TimeDilationMath.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/time/TimeDilationMath.java index d8b83a82..96077e88 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/time/TimeDilationMath.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/content/time/TimeDilationMath.java @@ -3,7 +3,9 @@ package com.craisinlord.antarchy.content.time; public final class TimeDilationMath { public static final double MIN_RATE = 0.05D; public static final double NORMAL_RATE = 1.0D; + public static final double MAX_RATE = 3.0D; public static final int FIELD_TRANSITION_TICKS = 20; + public static final int EFFECT_TRANSITION_TICKS = 20; private static final double GAUSSIAN_EDGE_EXPONENT = -4.5D; private TimeDilationMath() { @@ -13,7 +15,16 @@ public final class TimeDilationMath { if (Double.isNaN(rate) || Double.isInfinite(rate)) { return NORMAL_RATE; } - return Math.max(MIN_RATE, Math.min(NORMAL_RATE, rate)); + return Math.max(MIN_RATE, Math.min(MAX_RATE, rate)); + } + + /** Moves an entity's effective rate toward a new effect/field target without a hard step. */ + public static double transitionRate(double currentRate, double targetRate) { + double current = clampRate(currentRate); + double target = clampRate(targetRate); + double maximumStep = (MAX_RATE - MIN_RATE) / EFFECT_TRANSITION_TICKS; + double delta = Math.max(-maximumStep, Math.min(maximumStep, target - current)); + return clampRate(current + delta); } public static double gaussianFalloff(double distance, double radius) { diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/LivingEntityRoyalEffectsMixin.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/LivingEntityRoyalEffectsMixin.java index f9e325c6..74cc7af1 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/LivingEntityRoyalEffectsMixin.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/LivingEntityRoyalEffectsMixin.java @@ -2,6 +2,7 @@ package com.craisinlord.antarchy.mixins; import com.craisinlord.antarchy.content.effect.CommandedEntityAccess; import com.craisinlord.antarchy.content.effect.RoyalEffectEligibility; +import com.craisinlord.antarchy.content.entity.royal.RoyalBossEntity; import java.util.UUID; import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.entity.Entity; @@ -37,19 +38,19 @@ public abstract class LivingEntityRoyalEffectsMixin { cir.setReturnValue(false); return; } - PlayerSource playerSource = antarchy$resolvePlayer(source); - if (playerSource == null) { + Entity commander = antarchy$resolveCommander(source); + if (commander == null) { cir.setReturnValue(false); return; } CommandedEntityAccess access = (CommandedEntityAccess) mob; UUID current = access.antarchy$getCommanderUuid(); - if (current != null && !current.equals(playerSource.player().getUUID())) { + if (current != null && !current.equals(commander.getUUID())) { cir.setReturnValue(false); return; } antarchy$previousCommander = current; - access.antarchy$setCommanderUuid(playerSource.player().getUUID()); + access.antarchy$setCommanderUuid(commander.getUUID()); } @Inject(method = "addEffect(Lnet/minecraft/world/effect/MobEffectInstance;Lnet/minecraft/world/entity/Entity;)Z", at = @At("RETURN")) @@ -71,20 +72,16 @@ public abstract class LivingEntityRoyalEffectsMixin { } @Unique - private PlayerSource antarchy$resolvePlayer(Entity source) { + private Entity antarchy$resolveCommander(Entity source) { if (source instanceof net.minecraft.world.entity.player.Player player) { - return new PlayerSource(player); + return player; } if (source instanceof Projectile projectile && projectile.getOwner() instanceof net.minecraft.world.entity.player.Player player) { - return new PlayerSource(player); + return player; } if (source instanceof AreaEffectCloud cloud && cloud.getOwner() instanceof net.minecraft.world.entity.player.Player player) { - return new PlayerSource(player); + return player; } - return null; - } - - @Unique - private record PlayerSource(net.minecraft.world.entity.player.Player player) { + return source instanceof RoyalBossEntity ? source : null; } } diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/time/AbstractArrowMovementTimeDilationMixin.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/time/AbstractArrowMovementTimeDilationMixin.java index 4ed3936d..0e5729a3 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/time/AbstractArrowMovementTimeDilationMixin.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/time/AbstractArrowMovementTimeDilationMixin.java @@ -13,13 +13,13 @@ public abstract class AbstractArrowMovementTimeDilationMixin { @Redirect(method = "tick", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/phys/Vec3;add(Lnet/minecraft/world/phys/Vec3;)Lnet/minecraft/world/phys/Vec3;")) private Vec3 antarchy$slowCollisionPath(Vec3 position, Vec3 movement) { double rate = TimeDilationApi.getRate((AbstractArrow) (Object) this); - return position.add(rate >= TimeDilationMath.NORMAL_RATE ? movement : movement.scale(rate)); + return position.add(Math.abs(rate - TimeDilationMath.NORMAL_RATE) < 0.001D ? movement : movement.scale(rate)); } @Redirect(method = "tick", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/projectile/AbstractArrow;setPos(DDD)V")) private void antarchy$slowPosition(AbstractArrow arrow, double x, double y, double z) { double rate = Math.max(TimeDilationMath.MIN_RATE, TimeDilationApi.getRate(arrow)); - if (rate >= TimeDilationMath.NORMAL_RATE) { + if (Math.abs(rate - TimeDilationMath.NORMAL_RATE) < 0.001D) { arrow.setPos(x, y, z); return; } diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/time/EntityDeltaMovementTimeDilationMixin.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/time/EntityDeltaMovementTimeDilationMixin.java index 834d3b71..9f849d67 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/time/EntityDeltaMovementTimeDilationMixin.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/time/EntityDeltaMovementTimeDilationMixin.java @@ -21,7 +21,7 @@ public abstract class EntityDeltaMovementTimeDilationMixin { } double rate = TimeDilationApi.getRate(entity); - if (rate >= TimeDilationMath.NORMAL_RATE) { + if (Math.abs(rate - TimeDilationMath.NORMAL_RATE) < 0.001D) { return nextMovement; } diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/time/EntityMoveTimeDilationMixin.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/time/EntityMoveTimeDilationMixin.java index e109cbd3..4db808f1 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/time/EntityMoveTimeDilationMixin.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/time/EntityMoveTimeDilationMixin.java @@ -32,7 +32,7 @@ public abstract class EntityMoveTimeDilationMixin { private Vec3 antarchy$scaleTimeDilatedMovement(Vec3 movement) { Entity entity = (Entity) (Object) this; double rate = TimeDilationApi.getRate(entity); - if (rate >= TimeDilationMath.NORMAL_RATE) { + if (Math.abs(rate - TimeDilationMath.NORMAL_RATE) < 0.001D) { return movement; } return movement.scale(rate); diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/time/EntityRotationTimeDilationMixin.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/time/EntityRotationTimeDilationMixin.java index 92667d79..f3895902 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/time/EntityRotationTimeDilationMixin.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/time/EntityRotationTimeDilationMixin.java @@ -13,6 +13,9 @@ public abstract class EntityRotationTimeDilationMixin { @ModifyVariable(method = "setYRot", at = @At("HEAD"), argsOnly = true) private float antarchy$slowYaw(float nextYaw) { Entity entity = (Entity) (Object) this; + if (TimeDilationApi.isRotationBypassed()) { + return nextYaw; + } double rate = TimeDilationApi.getRate(entity); if (rate >= TimeDilationMath.NORMAL_RATE) { return nextYaw; @@ -23,6 +26,9 @@ public abstract class EntityRotationTimeDilationMixin { @ModifyVariable(method = "setXRot", at = @At("HEAD"), argsOnly = true) private float antarchy$slowPitch(float nextPitch) { Entity entity = (Entity) (Object) this; + if (TimeDilationApi.isRotationBypassed()) { + return nextPitch; + } double rate = TimeDilationApi.getRate(entity); if (rate >= TimeDilationMath.NORMAL_RATE) { return nextPitch; diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/time/EntityTimeDilationStateMixin.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/time/EntityTimeDilationStateMixin.java index 69f8c82d..15907972 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/time/EntityTimeDilationStateMixin.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/time/EntityTimeDilationStateMixin.java @@ -13,6 +13,8 @@ public abstract class EntityTimeDilationStateMixin implements TimeDilationEntity @Unique private double antarchy$timeDilationRate = TimeDilationMath.NORMAL_RATE; @Unique + private double antarchy$inheritedTimeDilationRate = TimeDilationMath.NORMAL_RATE; + @Unique private final Map antarchy$timeDilationTimerProgress = new HashMap<>(); @Unique private boolean antarchy$inTimeDilationMove; @@ -32,10 +34,20 @@ public abstract class EntityTimeDilationStateMixin implements TimeDilationEntity } } + @Override + public double antarchy$getInheritedTimeDilationRate() { + return this.antarchy$inheritedTimeDilationRate; + } + + @Override + public void antarchy$setInheritedTimeDilationRate(double rate) { + this.antarchy$inheritedTimeDilationRate = TimeDilationMath.clampRate(rate); + } + @Override public boolean antarchy$consumeTimeDilationTick(String timerKey, double rate) { double clampedRate = TimeDilationMath.clampRate(rate); - if (clampedRate >= TimeDilationMath.NORMAL_RATE) { + if (Math.abs(clampedRate - TimeDilationMath.NORMAL_RATE) < 0.001D) { return true; } diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/time/HurtingProjectileMovementTimeDilationMixin.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/time/HurtingProjectileMovementTimeDilationMixin.java index 1f717d6f..2522165b 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/time/HurtingProjectileMovementTimeDilationMixin.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/time/HurtingProjectileMovementTimeDilationMixin.java @@ -12,7 +12,7 @@ public abstract class HurtingProjectileMovementTimeDilationMixin { @Redirect(method = "tick", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/projectile/AbstractHurtingProjectile;setPos(DDD)V")) private void antarchy$slowPosition(AbstractHurtingProjectile projectile, double x, double y, double z) { double rate = Math.max(TimeDilationMath.MIN_RATE, TimeDilationApi.getRate(projectile)); - if (rate >= TimeDilationMath.NORMAL_RATE) { + if (Math.abs(rate - TimeDilationMath.NORMAL_RATE) < 0.001D) { projectile.setPos(x, y, z); return; } diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/time/LivingEntityTimeDilationMixin.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/time/LivingEntityTimeDilationMixin.java index 052544c3..fb419183 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/time/LivingEntityTimeDilationMixin.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/time/LivingEntityTimeDilationMixin.java @@ -4,7 +4,6 @@ import com.craisinlord.antarchy.content.time.TimeDilationApi; import net.minecraft.world.InteractionHand; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.item.ItemStack; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -20,22 +19,6 @@ public abstract class LivingEntityTimeDilationMixin { } } - @Inject(method = "tickEffects", at = @At("HEAD"), cancellable = true) - private void antarchy$slowEffectTicks(CallbackInfo ci) { - Entity entity = (Entity) (Object) this; - if (!TimeDilationApi.consumeTick(entity, "living_effects")) { - ci.cancel(); - } - } - - @Inject(method = "updatingUsingItem", at = @At("HEAD"), cancellable = true) - private void antarchy$slowUsingItem(CallbackInfo ci) { - Entity entity = (Entity) (Object) this; - if (!TimeDilationApi.consumeTick(entity, "living_using_item")) { - ci.cancel(); - } - } - @Inject(method = "swing(Lnet/minecraft/world/InteractionHand;Z)V", at = @At("HEAD"), cancellable = true) private void antarchy$slowSwingStart(InteractionHand hand, boolean updateSelf, CallbackInfo ci) { Entity entity = (Entity) (Object) this; @@ -44,11 +27,4 @@ public abstract class LivingEntityTimeDilationMixin { } } - @Inject(method = "updateUsingItem", at = @At("HEAD"), cancellable = true) - private void antarchy$slowItemUseProgress(ItemStack stack, CallbackInfo ci) { - Entity entity = (Entity) (Object) this; - if (!TimeDilationApi.consumeTick(entity, "living_item_use_progress")) { - ci.cancel(); - } - } } diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/time/SoundEngineTimeDilationMixin.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/time/SoundEngineTimeDilationMixin.java index 2a01eeb2..feb4ff35 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/time/SoundEngineTimeDilationMixin.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/time/SoundEngineTimeDilationMixin.java @@ -1,10 +1,18 @@ package com.craisinlord.antarchy.mixins.time; import com.craisinlord.antarchy.content.client.ClientTimeDilationTicker; +import com.craisinlord.antarchy.content.time.TimeDilationApi; import com.craisinlord.antarchy.content.time.TimeDilationMath; +import com.craisinlord.antarchy.content.effect.ContractedMobEffect; +import com.craisinlord.antarchy.content.effect.DilatedMobEffect; +import com.craisinlord.antarchy.content.effect.RoyalEffectHooks; +import com.craisinlord.antarchy.mixins.client.EntityBoundSoundInstanceAccessor; import com.llamalad7.mixinextras.injector.ModifyReturnValue; import net.minecraft.client.resources.sounds.SoundInstance; import net.minecraft.client.sounds.SoundEngine; +import net.minecraft.client.Minecraft; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.Entity; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -13,9 +21,40 @@ public abstract class SoundEngineTimeDilationMixin { @ModifyReturnValue(method = "calculatePitch", at = @At("RETURN")) private float antarchy$dilatePitch(float pitch, SoundInstance sound) { double rate = ClientTimeDilationTicker.rateAt(sound.getX(), sound.getY(), sound.getZ()); - if (rate >= TimeDilationMath.NORMAL_RATE) { + if (sound instanceof EntityBoundSoundInstanceAccessor accessor) { + double entityRate = rateForEntity(accessor.antarchy$getEntity()); + rate = combineRates(rate, entityRate); + } + Minecraft minecraft = Minecraft.getInstance(); + if (minecraft.player != null) { + double listenerRate = rateForEntity(minecraft.player); + rate = combineRates(rate, listenerRate); + } + if (Math.abs(rate - TimeDilationMath.NORMAL_RATE) < 0.001D) { return pitch; } return (float) (pitch * Math.max(TimeDilationMath.MIN_RATE, rate)); } + + private static double combineRates(double first, double second) { + if (first < TimeDilationMath.NORMAL_RATE || second < TimeDilationMath.NORMAL_RATE) { + return Math.min(first, second); + } + return Math.max(first, second); + } + + private static double rateForEntity(Entity entity) { + double rate = TimeDilationApi.getRate(entity); + if (entity instanceof LivingEntity living) { + if (RoyalEffectHooks.dilatedHolder() != null && living.hasEffect(RoyalEffectHooks.dilatedHolder())) { + rate = Math.min(rate, DilatedMobEffect.rateForAmplifier( + living.getEffect(RoyalEffectHooks.dilatedHolder()).getAmplifier())); + } + if (RoyalEffectHooks.contractedHolder() != null && living.hasEffect(RoyalEffectHooks.contractedHolder())) { + rate = combineRates(rate, ContractedMobEffect.rateForAmplifier( + living.getEffect(RoyalEffectHooks.contractedHolder()).getAmplifier())); + } + } + return rate; + } } diff --git a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/time/ThrowableProjectileMovementTimeDilationMixin.java b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/time/ThrowableProjectileMovementTimeDilationMixin.java index 23f8de85..a8e52233 100644 --- a/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/time/ThrowableProjectileMovementTimeDilationMixin.java +++ b/common-1.21.1/src/main/java/com/craisinlord/antarchy/mixins/time/ThrowableProjectileMovementTimeDilationMixin.java @@ -12,7 +12,7 @@ public abstract class ThrowableProjectileMovementTimeDilationMixin { @Redirect(method = "tick", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/projectile/ThrowableProjectile;setPos(DDD)V")) private void antarchy$slowPosition(ThrowableProjectile projectile, double x, double y, double z) { double rate = Math.max(TimeDilationMath.MIN_RATE, TimeDilationApi.getRate(projectile)); - if (rate >= TimeDilationMath.NORMAL_RATE) { + if (Math.abs(rate - TimeDilationMath.NORMAL_RATE) < 0.001D) { projectile.setPos(x, y, z); return; } diff --git a/common-1.21.1/src/main/resources/antarchy-common.mixins.json b/common-1.21.1/src/main/resources/antarchy-common.mixins.json index 48c690eb..2c5f6587 100644 --- a/common-1.21.1/src/main/resources/antarchy-common.mixins.json +++ b/common-1.21.1/src/main/resources/antarchy-common.mixins.json @@ -88,6 +88,7 @@ "time.EntityMoveTimeDilationMixin", "time.EntityTimeDilationStateMixin", "time.EntityRotationTimeDilationMixin", + "time.EntityCrouchTimeDilationMixin", "time.LivingEntityKnockbackTimeDilationMixin", "time.CreeperTimeDilationMixin", "time.EndCrystalTimeDilationMixin", @@ -101,9 +102,11 @@ "time.AbstractArrowMovementTimeDilationMixin", "time.ThrowableProjectileMovementTimeDilationMixin", "time.HurtingProjectileMovementTimeDilationMixin", + "time.ProjectileTimeDilationMixin", "time.AbstractArrowActionTimeDilationMixin", "time.RangedAttackGoalTimeDilationMixin", - "time.RangedBowAttackGoalTimeDilationMixin" + "time.RangedBowAttackGoalTimeDilationMixin", + "time.GeckoLibAnimationControllerTimeDilationMixin" ], "client": [ "client.AbstractMinecartRendererMixin", @@ -117,6 +120,8 @@ "client.ElytraModelAccessor", "client.FrogRendererElythiaMixin", "client.GameRendererSwingThroughGrassMixin", + "client.EntityBoundSoundInstanceAccessor", + "client.InventoryScreenRotationBypassMixin", "client.ExperimentalSettingsPopupMixin", "client.KrakensGraspChargePoseMixin", "client.LightningBoltRendererMixin", diff --git a/common-1.21.1/src/main/resources/assets/antarchy/blockstates/typhonite_spike.json b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/typhonite_spike.json index b22e8a99..ea955bca 100644 --- a/common-1.21.1/src/main/resources/assets/antarchy/blockstates/typhonite_spike.json +++ b/common-1.21.1/src/main/resources/assets/antarchy/blockstates/typhonite_spike.json @@ -2,40 +2,35 @@ "variants": { "thickness=base,vertical_direction=down": { "model": "antarchy:block/typhonite_spike_down_base", - "x": 180, - "uvlock": true + "x": 180 }, "thickness=base,vertical_direction=up": { "model": "antarchy:block/typhonite_spike_up_base" }, "thickness=frustum,vertical_direction=down": { "model": "antarchy:block/typhonite_spike_down_frustum", - "x": 180, - "uvlock": true + "x": 180 }, "thickness=frustum,vertical_direction=up": { "model": "antarchy:block/typhonite_spike_up_frustum" }, "thickness=middle,vertical_direction=down": { "model": "antarchy:block/typhonite_spike_down_middle", - "x": 180, - "uvlock": true + "x": 180 }, "thickness=middle,vertical_direction=up": { "model": "antarchy:block/typhonite_spike_up_middle" }, "thickness=tip,vertical_direction=down": { "model": "antarchy:block/typhonite_spike_down_tip", - "x": 180, - "uvlock": true + "x": 180 }, "thickness=tip,vertical_direction=up": { "model": "antarchy:block/typhonite_spike_up_tip" }, "thickness=tip_merge,vertical_direction=down": { "model": "antarchy:block/typhonite_spike_down_tip_merge", - "x": 180, - "uvlock": true + "x": 180 }, "thickness=tip_merge,vertical_direction=up": { "model": "antarchy:block/typhonite_spike_up_tip_merge" diff --git a/common-1.21.1/src/main/resources/assets/antarchy/geo/king.geo.json b/common-1.21.1/src/main/resources/assets/antarchy/geo/king.geo.json index 427e095e..df0acd9d 100644 --- a/common-1.21.1/src/main/resources/assets/antarchy/geo/king.geo.json +++ b/common-1.21.1/src/main/resources/assets/antarchy/geo/king.geo.json @@ -494,8 +494,23 @@ {"origin": [19, 0, 13], "size": [5, 6, 7], "uv": [466, 173], "mirror": true}, {"origin": [24, 0, 9], "size": [6, 10, 13], "inflate": 0.01, "uv": [38, 249], "mirror": true} ] + }, + { + "name": "beam_anchor_center", + "parent": "head", + "pivot": [0, 91.5, -219] + }, + { + "name": "beam_anchor_left", + "parent": "L_head", + "pivot": [21, 82.5, -219] + }, + { + "name": "beam_anchor_right", + "parent": "R_head", + "pivot": [-21, 82.5, -219] } ] } ] -} \ No newline at end of file +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/geo/queen.geo.json b/common-1.21.1/src/main/resources/assets/antarchy/geo/queen.geo.json index b9561118..ff218308 100644 --- a/common-1.21.1/src/main/resources/assets/antarchy/geo/queen.geo.json +++ b/common-1.21.1/src/main/resources/assets/antarchy/geo/queen.geo.json @@ -473,8 +473,23 @@ {"origin": [19, 0, 13], "size": [5, 6, 7], "uv": [466, 173], "mirror": true}, {"origin": [24, 0, 9], "size": [6, 10, 13], "inflate": 0.01, "uv": [38, 249], "mirror": true} ] + }, + { + "name": "beam_anchor_center", + "parent": "head", + "pivot": [0, 91.5, -219] + }, + { + "name": "beam_anchor_left", + "parent": "L_head", + "pivot": [21, 82.5, -219] + }, + { + "name": "beam_anchor_right", + "parent": "R_head", + "pivot": [-21, 82.5, -219] } ] } ] -} \ No newline at end of file +} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/lang/de_de.json b/common-1.21.1/src/main/resources/assets/antarchy/lang/de_de.json index f0338d67..f1414705 100644 --- a/common-1.21.1/src/main/resources/assets/antarchy/lang/de_de.json +++ b/common-1.21.1/src/main/resources/assets/antarchy/lang/de_de.json @@ -533,6 +533,8 @@ "effect.antarchy.paralyzed.description": "Verhindert, dass sich Ziele bewegen.", "effect.antarchy.inverted": "Umgekehrt", "effect.antarchy.inverted.description": "Kehrt die Schwerkraft des Ziels um.", + "effect.antarchy.commanded.description": "Kämpft für den Spieler, der das Ziel kommandiert hat.", + "effect.antarchy.dilated.description": "Verlangsamt den Zeitablauf für das betroffene Wesen.", "effect.antarchy.stinky": "Stinkend", "effect.antarchy.stinky.description": "Vertreibt passive und neutrale Kreaturen und zieht Gliederfüßer an.", "effect.antarchy.gooped.description": "Verlangsamt Bewegung und Angriffsgeschwindigkeit.", diff --git a/common-1.21.1/src/main/resources/assets/antarchy/lang/en_us.json b/common-1.21.1/src/main/resources/assets/antarchy/lang/en_us.json index 2c631b4e..683acb57 100644 --- a/common-1.21.1/src/main/resources/assets/antarchy/lang/en_us.json +++ b/common-1.21.1/src/main/resources/assets/antarchy/lang/en_us.json @@ -543,6 +543,9 @@ "item.antarchy.royal_assailant_battleaxe": "Royal Assailant Battle Axe", "item.antarchy.royal_assailant_staff": "Royal Assailant Staff", "tooltip.antarchy.royal_assailant_staff": "Opens paired tears that summon four allied Manticores for 30 seconds.", + "tooltip.antarchy.royal_assailant_battleaxe.black_hole": "Use to create a Royal Black Hole", + "tooltip.antarchy.royal_assailant_battleaxe.dilation": "Hits apply Temporal Dilation", + "tooltip.antarchy.royal_guardian_shield.command": "Use to command the nearest mob", "tooltip.antarchy.royal_assailant_chestplate.invert": "Press the inversion key to toggle inverted gravity on and off.", "tooltip.antarchy.royal_assailant_boots.fall": "Cancels fall damage while falling upward.", "item.antarchy.mantis_claw": "Mantis Claw", @@ -753,8 +756,10 @@ "effect.antarchy.inverted.description": "Inverts the target's gravity.", "effect.antarchy.commanded": "Commanded", "effect.antarchy.commanded.description": "Fights for the player who commanded it.", - "effect.antarchy.dilated": "Dilated", + "effect.antarchy.dilated": "Temporal Dilation", "effect.antarchy.dilated.description": "Slows the passage of time for the affected entity.", + "effect.antarchy.contracted": "Temporal Contraction", + "effect.antarchy.contracted.description": "Speeds the passage of time for the affected entity.", "effect.antarchy.stinky": "Stinky", "effect.antarchy.stinky.description": "Repels passive and neutral mobs, attracts arthropods.", "effect.antarchy.gooped": "Gooped", @@ -1084,14 +1089,22 @@ "item.minecraft.lingering_potion.effect.long_command": "Lingering Potion of Command", "item.minecraft.tipped_arrow.effect.command": "Arrow of Command", "item.minecraft.tipped_arrow.effect.long_command": "Arrow of Command", - "item.minecraft.potion.effect.time_dilation": "Potion of Time Dilation", - "item.minecraft.potion.effect.long_time_dilation": "Potion of Time Dilation", - "item.minecraft.splash_potion.effect.time_dilation": "Splash Potion of Time Dilation", - "item.minecraft.splash_potion.effect.long_time_dilation": "Splash Potion of Time Dilation", - "item.minecraft.lingering_potion.effect.time_dilation": "Lingering Potion of Time Dilation", - "item.minecraft.lingering_potion.effect.long_time_dilation": "Lingering Potion of Time Dilation", - "item.minecraft.tipped_arrow.effect.time_dilation": "Arrow of Time Dilation", - "item.minecraft.tipped_arrow.effect.long_time_dilation": "Arrow of Time Dilation", + "item.minecraft.potion.effect.time_dilation": "Potion of Temporal Dilation", + "item.minecraft.potion.effect.long_time_dilation": "Potion of Strong Temporal Dilation", + "item.minecraft.splash_potion.effect.time_dilation": "Splash Potion of Temporal Dilation", + "item.minecraft.splash_potion.effect.long_time_dilation": "Splash Potion of Strong Temporal Dilation", + "item.minecraft.lingering_potion.effect.time_dilation": "Lingering Potion of Temporal Dilation", + "item.minecraft.lingering_potion.effect.long_time_dilation": "Lingering Potion of Strong Temporal Dilation", + "item.minecraft.tipped_arrow.effect.time_dilation": "Arrow of Temporal Dilation", + "item.minecraft.tipped_arrow.effect.long_time_dilation": "Arrow of Strong Temporal Dilation", + "item.minecraft.potion.effect.time_contraction": "Potion of Temporal Contraction", + "item.minecraft.splash_potion.effect.time_contraction": "Splash Potion of Temporal Contraction", + "item.minecraft.lingering_potion.effect.time_contraction": "Lingering Potion of Temporal Contraction", + "item.minecraft.tipped_arrow.effect.time_contraction": "Arrow of Temporal Contraction", + "item.minecraft.potion.effect.long_time_contraction": "Potion of Strong Temporal Contraction", + "item.minecraft.splash_potion.effect.long_time_contraction": "Splash Potion of Strong Temporal Contraction", + "item.minecraft.lingering_potion.effect.long_time_contraction": "Lingering Potion of Strong Temporal Contraction", + "item.minecraft.tipped_arrow.effect.long_time_contraction": "Arrow of Strong Temporal Contraction", "item.minecraft.potion.effect.paralysis": "Potion of Paralysis", "item.minecraft.potion.effect.long_paralysis": "Potion of Paralysis", "item.minecraft.splash_potion.effect.paralysis": "Splash Potion of Paralysis", @@ -1150,6 +1163,12 @@ "item.minecraft.tipped_arrow.effect.strong_haste": "Arrow of Haste II", "advancements.antarchy.cancel_out.title": "1 - 1 = ?", "advancements.antarchy.cancel_out.description": "Have Growth and Shrinking active at the same time.", + "advancements.antarchy.enter_the_speed_force.title": "Enter the speed force", + "advancements.antarchy.enter_the_speed_force.description": "Gain Temporal Contraction.", + "advancements.antarchy.probably_wondering_how_i_got_here.title": "You're probably wondering how I got here", + "advancements.antarchy.probably_wondering_how_i_got_here.description": "Gain Temporal Dilation.", + "advancements.antarchy.temporal_contradiction.title": "Temporal Contradiction", + "advancements.antarchy.temporal_contradiction.description": "Have Temporal Dilation and Temporal Contraction active at the same time.", "entity.antarchy.cheep": "Cheep", "item.antarchy.cheep": "Cheep", "item.antarchy.cheep_spawn_egg": "Cheep Spawn Egg", @@ -1187,6 +1206,7 @@ "advancements.antarchy.mucus_obtained.description": "Obtain some Mucus.", "block.antarchy.cavaryn_portal": "Cavaryn Portal", "biome.antarchy.cavaryn_moleworm_caves": "Moleworm Caves", + "biome.antarchy.wormy_caves": "Wormy Caves", "block.antarchy.termite_nest": "Termite Nest", "block.antarchy.chitin_spike": "Chitin Spike", "block.antarchy.chitin_block": "Chitin Block", @@ -1196,7 +1216,7 @@ "block.antarchy.amber_moss_carpet": "Amber Moss Carpet", "block.antarchy.amber_lichen": "Amber Lichen", "block.antarchy.mucus": "Mucus", - "tooltip.antarchy.mucus_slippery": "Makes the block it's on slippery like ice", + "tooltip.antarchy.mucus_slippery": "Makes the block it's on even more slippery than ice", "block.antarchy.bile_vein": "Bile Vein", "block.antarchy.creepvine": "Creepvine", "block.antarchy.creeping_horror_egg": "Creeping Horror Egg", @@ -1408,4 +1428,5 @@ ,"decree.antarchy.advance.subtitle": "Close on the King or be judged." ,"decree.antarchy.show_no_mercy": "SHOW NO MERCY" ,"decree.antarchy.show_no_mercy.subtitle": "Keep dealing damage." + ,"menu.antarchy.royal_judgment": "Royal Judgment" } diff --git a/common-1.21.1/src/main/resources/assets/antarchy/lang/es_es.json b/common-1.21.1/src/main/resources/assets/antarchy/lang/es_es.json index a4f07fec..ea1c6e7d 100644 --- a/common-1.21.1/src/main/resources/assets/antarchy/lang/es_es.json +++ b/common-1.21.1/src/main/resources/assets/antarchy/lang/es_es.json @@ -533,6 +533,8 @@ "effect.antarchy.paralyzed.description": "Impide que los objetivos se muevan.", "effect.antarchy.inverted": "Invertido", "effect.antarchy.inverted.description": "Invierte la gravedad del objetivo.", + "effect.antarchy.commanded.description": "Lucha por el jugador que lo comandó.", + "effect.antarchy.dilated.description": "Ralentiza el paso del tiempo para la criatura afectada.", "effect.antarchy.stinky": "Apestoso", "effect.antarchy.stinky.description": "Ahuyenta a las criaturas pasivas y neutrales, y atrae a los artrópodos.", "effect.antarchy.gooped.description": "Reduce la velocidad de movimiento y de ataque.", diff --git a/common-1.21.1/src/main/resources/assets/antarchy/lang/fr_fr.json b/common-1.21.1/src/main/resources/assets/antarchy/lang/fr_fr.json index 97527571..7703aca8 100644 --- a/common-1.21.1/src/main/resources/assets/antarchy/lang/fr_fr.json +++ b/common-1.21.1/src/main/resources/assets/antarchy/lang/fr_fr.json @@ -533,6 +533,8 @@ "effect.antarchy.paralyzed.description": "Empêche les cibles de se déplacer.", "effect.antarchy.inverted": "Inversé", "effect.antarchy.inverted.description": "Inverse la gravité de la cible.", + "effect.antarchy.commanded.description": "Combat pour le joueur qui l’a commandé.", + "effect.antarchy.dilated.description": "Ralentit le passage du temps pour l’entité affectée.", "effect.antarchy.stinky": "Puant", "effect.antarchy.stinky.description": "Repousse les créatures passives et neutres, et attire les arthropodes.", "effect.antarchy.gooped.description": "Ralentit la vitesse de déplacement et d'attaque.", diff --git a/common-1.21.1/src/main/resources/assets/antarchy/lang/it_it.json b/common-1.21.1/src/main/resources/assets/antarchy/lang/it_it.json index 3f255877..9579936b 100644 --- a/common-1.21.1/src/main/resources/assets/antarchy/lang/it_it.json +++ b/common-1.21.1/src/main/resources/assets/antarchy/lang/it_it.json @@ -533,6 +533,8 @@ "effect.antarchy.paralyzed.description": "Impedisce ai bersagli di muoversi.", "effect.antarchy.inverted": "Invertito", "effect.antarchy.inverted.description": "Inverte la gravità del bersaglio.", + "effect.antarchy.commanded.description": "Combatte per il giocatore che lo ha comandato.", + "effect.antarchy.dilated.description": "Rallenta il passare del tempo per l’entità colpita.", "effect.antarchy.stinky": "Puzzolente", "effect.antarchy.stinky.description": "Respinge le creature passive e neutrali e attira gli artropodi.", "effect.antarchy.gooped.description": "Riduce la velocità di movimento e di attacco.", diff --git a/common-1.21.1/src/main/resources/assets/antarchy/lang/ja_jp.json b/common-1.21.1/src/main/resources/assets/antarchy/lang/ja_jp.json index 174e5715..fd365eb1 100644 --- a/common-1.21.1/src/main/resources/assets/antarchy/lang/ja_jp.json +++ b/common-1.21.1/src/main/resources/assets/antarchy/lang/ja_jp.json @@ -533,6 +533,8 @@ "effect.antarchy.paralyzed.description": "対象が動けなくなります。", "effect.antarchy.inverted": "重力反転", "effect.antarchy.inverted.description": "対象の重力を反転させます。", + "effect.antarchy.commanded.description": "命令したプレイヤーのために戦います。", + "effect.antarchy.dilated.description": "影響を受けたエンティティの時間の流れを遅くします。", "effect.antarchy.stinky": "悪臭", "effect.antarchy.stinky.description": "友好的および中立のMobを遠ざけ、節足動物を引き寄せます。", "effect.antarchy.gooped.description": "移動速度と攻撃速度を低下させます。", diff --git a/common-1.21.1/src/main/resources/assets/antarchy/lang/ko_kr.json b/common-1.21.1/src/main/resources/assets/antarchy/lang/ko_kr.json index 39a0d2e2..daddf8f6 100644 --- a/common-1.21.1/src/main/resources/assets/antarchy/lang/ko_kr.json +++ b/common-1.21.1/src/main/resources/assets/antarchy/lang/ko_kr.json @@ -533,6 +533,8 @@ "effect.antarchy.paralyzed.description": "대상이 움직이지 못하게 합니다.", "effect.antarchy.inverted": "반전", "effect.antarchy.inverted.description": "대상의 중력을 반전시킵니다.", + "effect.antarchy.commanded.description": "명령한 플레이어를 위해 싸웁니다.", + "effect.antarchy.dilated.description": "영향받은 개체의 시간 흐름을 늦춥니다.", "effect.antarchy.stinky": "악취", "effect.antarchy.stinky.description": "수동적 및 중립적 몹을 쫓아내고 절지동물을 끌어들입니다.", "effect.antarchy.gooped.description": "이동 속도와 공격 속도를 늦춥니다.", diff --git a/common-1.21.1/src/main/resources/assets/antarchy/lang/pt_br.json b/common-1.21.1/src/main/resources/assets/antarchy/lang/pt_br.json index 5a8fda8f..18334091 100644 --- a/common-1.21.1/src/main/resources/assets/antarchy/lang/pt_br.json +++ b/common-1.21.1/src/main/resources/assets/antarchy/lang/pt_br.json @@ -533,6 +533,8 @@ "effect.antarchy.paralyzed.description": "Impede que os alvos se movam.", "effect.antarchy.inverted": "Invertido", "effect.antarchy.inverted.description": "Inverte a gravidade do alvo.", + "effect.antarchy.commanded.description": "Luta pelo jogador que o comandou.", + "effect.antarchy.dilated.description": "Diminui a passagem do tempo para a entidade afetada.", "effect.antarchy.stinky": "Fedido", "effect.antarchy.stinky.description": "Afasta mobs passivos e neutros e atrai artrópodes.", "effect.antarchy.gooped.description": "Reduz a velocidade de movimento e de ataque.", diff --git a/common-1.21.1/src/main/resources/assets/antarchy/lang/ru_ru.json b/common-1.21.1/src/main/resources/assets/antarchy/lang/ru_ru.json index 1740f3ee..fe387005 100644 --- a/common-1.21.1/src/main/resources/assets/antarchy/lang/ru_ru.json +++ b/common-1.21.1/src/main/resources/assets/antarchy/lang/ru_ru.json @@ -504,6 +504,8 @@ "effect.antarchy.paralyzed.description": "Не дает целям двигаться.", "effect.antarchy.inverted": "Инверсия", "effect.antarchy.inverted.description": "Инвертирует гравитацию цели.", + "effect.antarchy.commanded.description": "Сражается за игрока, который им командует.", + "effect.antarchy.dilated.description": "Замедляет течение времени для существа под действием эффекта.", "effect.antarchy.stinky": "Вонючесть", "effect.antarchy.stinky.description": "Отпугивает мирных и нейтральных мобов, но притягивает членистоногих.", "effect.antarchy.gooped.description": "Замедляет движение и скорость атаки.", diff --git a/common-1.21.1/src/main/resources/assets/antarchy/lang/zh_cn.json b/common-1.21.1/src/main/resources/assets/antarchy/lang/zh_cn.json index 42f388d0..ee461c37 100644 --- a/common-1.21.1/src/main/resources/assets/antarchy/lang/zh_cn.json +++ b/common-1.21.1/src/main/resources/assets/antarchy/lang/zh_cn.json @@ -533,6 +533,8 @@ "effect.antarchy.paralyzed.description": "阻止目标移动。", "effect.antarchy.inverted": "反转", "effect.antarchy.inverted.description": "反转目标的重力。", + "effect.antarchy.commanded.description": "为命令它的玩家而战。", + "effect.antarchy.dilated.description": "减缓受影响生物的时间流逝。", "effect.antarchy.stinky": "臭气", "effect.antarchy.stinky.description": "驱赶被动和中立生物,吸引节肢生物。", "effect.antarchy.gooped.description": "减缓移动速度和攻击速度。", diff --git a/common-1.21.1/src/main/resources/assets/antarchy/lang/zh_tw.json b/common-1.21.1/src/main/resources/assets/antarchy/lang/zh_tw.json index 2f4e9ddd..fcaf04ab 100644 --- a/common-1.21.1/src/main/resources/assets/antarchy/lang/zh_tw.json +++ b/common-1.21.1/src/main/resources/assets/antarchy/lang/zh_tw.json @@ -533,6 +533,8 @@ "effect.antarchy.paralyzed.description": "阻止目標移動。", "effect.antarchy.inverted": "反轉", "effect.antarchy.inverted.description": "反轉目標的重力。", + "effect.antarchy.commanded.description": "為命令它的玩家而戰。", + "effect.antarchy.dilated.description": "減緩受影響生物的時間流逝。", "effect.antarchy.stinky": "臭氣", "effect.antarchy.stinky.description": "驅趕被動與中立生物,吸引節肢生物。", "effect.antarchy.gooped.description": "降低移動速度與攻擊速度。", diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/eye_of_the_storm_held_geo.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/eye_of_the_storm_held_geo.json index 1ba287d0..22ee499d 100644 --- a/common-1.21.1/src/main/resources/assets/antarchy/models/item/eye_of_the_storm_held_geo.json +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/eye_of_the_storm_held_geo.json @@ -1,138 +1 @@ -{ - "parent": "builtin/entity", - "display": { - "thirdperson_righthand": { - "rotation": [ - 0, - 0, - 0 - ], - "translation": [ - -5.25, - 2.0, - -5 - ], - "scale": [ - 0.8, - 0.8, - 0.8 - ] - }, - "thirdperson_lefthand": { - "rotation": [ - 0, - 0, - 0 - ], - "translation": [ - -5.25, - 2.0, - -5 - ], - "scale": [ - 0.8, - 0.8, - 0.8 - ] - }, - "firstperson_righthand": { - "rotation": [ - 10, - 0, - 0 - ], - "translation": [ - -1, - 2.0, - 0.5 - ], - "scale": [ - 0.6, - 0.6, - 0.6 - ] - }, - "firstperson_lefthand": { - "rotation": [ - 10, - 0, - 0 - ], - "translation": [ - -1, - 2.0, - 0.5 - ], - "scale": [ - 0.6, - 0.6, - 0.6 - ] - }, - "ground": { - "translation": [ - 0, - 2, - 0 - ], - "scale": [ - 0.5, - 0.5, - 0.5 - ] - }, - "gui": { - "rotation": [ - 30, - -135, - 0 - ], - "translation": [ - 0.25, - -4.75, - 0 - ], - "scale": [ - 0.85, - 0.85, - 0.85 - ] - }, - "head": { - "translation": [ - 0, - 0, - -8.25 - ] - }, - "fixed": { - "rotation": [ - 90, - 45, - 90 - ], - "translation": [ - 5.25, - 3.75, - 0 - ] - }, - "on_shelf": { - "rotation": [ - 90, - 0, - 90 - ], - "translation": [ - 8.25, - 0, - 0 - ], - "scale": [ - 1.3, - 1.3, - 1.3 - ] - } - } -} +{"parent":"builtin/entity"} diff --git a/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_guardian_sword_held.json b/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_guardian_sword_held.json index 902ad1dc..ea1c3aa6 100644 --- a/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_guardian_sword_held.json +++ b/common-1.21.1/src/main/resources/assets/antarchy/models/item/royal_guardian_sword_held.json @@ -1,1227 +1,3 @@ { - "format_version": "1.21.11", - "credit": "Made with Blockbench", - "texture_size": [ - 64, - 64 - ], - "textures": { - "1": "antarchy:item/royal_guardian/royal_guardian_sword", - "particle": "antarchy:item/royal_guardian/royal_guardian_sword" - }, - "elements": [ - { - "from": [ - 7.42144, - -5.62138, - 6.755 - ], - "to": [ - 8.41144, - -0.63138, - 9.245 - ], - "rotation": { - "angle": -45, - "axis": "z", - "origin": [ - 8.5, - -6.43592, - 8.75 - ] - }, - "faces": { - "north": { - "uv": [ - 5.25, - 4.25, - 5.5, - 5.5 - ], - "texture": "#1" - }, - "east": { - "uv": [ - 4.625, - 4.25, - 5.25, - 5.5 - ], - "texture": "#1" - }, - "south": { - "uv": [ - 5.5, - 4.25, - 5.25, - 5.5 - ], - "texture": "#1" - }, - "west": { - "uv": [ - 3.625, - 4.25, - 4.25, - 5.5 - ], - "texture": "#1" - }, - "up": { - "uv": [ - 4.5, - 4.25, - 4.25, - 3.625 - ], - "texture": "#1" - }, - "down": { - "uv": [ - 4.5, - 3.625, - 4.25, - 4.25 - ], - "texture": "#1" - } - } - }, - { - "from": [ - 7.58856, - -5.62138, - 6.755 - ], - "to": [ - 8.57856, - -0.63138, - 9.245 - ], - "rotation": { - "angle": 45, - "axis": "z", - "origin": [ - 7.5, - -6.43592, - 8.75 - ] - }, - "faces": { - "north": { - "uv": [ - 5.5, - 4.25, - 5.25, - 5.5 - ], - "texture": "#1" - }, - "east": { - "uv": [ - 3.625, - 4.25, - 4.25, - 5.5 - ], - "texture": "#1" - }, - "south": { - "uv": [ - 5.25, - 4.25, - 5.5, - 5.5 - ], - "texture": "#1" - }, - "west": { - "uv": [ - 4.625, - 4.25, - 5.25, - 5.5 - ], - "texture": "#1" - }, - "up": { - "uv": [ - 4.5, - 4.25, - 4.25, - 3.625 - ], - "texture": "#1" - }, - "down": { - "uv": [ - 4.5, - 3.625, - 4.25, - 4.25 - ], - "texture": "#1" - } - } - }, - { - "from": [ - 6.5, - -6.5, - 6.75 - ], - "to": [ - 9.5, - -5.5, - 9.25 - ], - "rotation": { - "angle": 0, - "axis": "y", - "origin": [ - 5.5, - -5.5, - 6 - ] - }, - "faces": { - "north": { - "uv": [ - 7.75, - 2.25, - 8.5, - 2.5 - ], - "texture": "#1" - }, - "east": { - "uv": [ - 5.5, - 2.25, - 6.25, - 2.5 - ], - "texture": "#1" - }, - "south": { - "uv": [ - 7.75, - 2.25, - 8.5, - 2.5 - ], - "texture": "#1" - }, - "west": { - "uv": [ - 7, - 2.25, - 7.75, - 2.5 - ], - "texture": "#1" - }, - "up": { - "uv": [ - 7, - 2.125, - 6.25, - 1.5 - ], - "texture": "#1" - }, - "down": { - "uv": [ - 7.75, - 1.5, - 7, - 2.125 - ], - "texture": "#1" - } - } - }, - { - "from": [ - 7, - -9.5, - 7 - ], - "to": [ - 9, - -6.5, - 9 - ], - "rotation": { - "angle": 0, - "axis": "y", - "origin": [ - 5.5, - -6.5, - 6.5 - ] - }, - "faces": { - "north": { - "uv": [ - 4, - 6, - 4.5, - 6.75 - ], - "texture": "#1" - }, - "east": { - "uv": [ - 3.5, - 6, - 4, - 6.75 - ], - "texture": "#1" - }, - "south": { - "uv": [ - 5, - 6, - 5.5, - 6.75 - ], - "texture": "#1" - }, - "west": { - "uv": [ - 4.5, - 6, - 5, - 6.75 - ], - "texture": "#1" - }, - "up": { - "uv": [ - 4.5, - 6, - 4, - 5.5 - ], - "texture": "#1" - }, - "down": { - "uv": [ - 5, - 5.5, - 4.5, - 6 - ], - "texture": "#1" - } - } - }, - { - "from": [ - 7.8, - -9.5, - 2.8 - ], - "to": [ - 7.8, - -6.5, - 6.8 - ], - "rotation": { - "angle": 45, - "axis": "y", - "origin": [ - 7.8, - -8, - 7.8 - ] - }, - "faces": { - "north": { - "uv": [ - 6.5, - 3.5, - 6.5, - 4.25 - ], - "texture": "#1" - }, - "east": { - "uv": [ - 7.5, - 3.5, - 6.5, - 4.25 - ], - "texture": "#1" - }, - "south": { - "uv": [ - 7.5, - 3.5, - 7.5, - 4.25 - ], - "texture": "#1" - }, - "west": { - "uv": [ - 6.5, - 3.5, - 7.5, - 4.25 - ], - "texture": "#1" - }, - "up": { - "uv": [ - 6.5, - 3.5, - 6.5, - 2.5 - ], - "texture": "#1" - }, - "down": { - "uv": [ - 6.5, - 2.5, - 6.5, - 3.5 - ], - "texture": "#1" - } - } - }, - { - "from": [ - 7.5, - -14, - 7.5 - ], - "to": [ - 8.5, - -7, - 8.5 - ], - "rotation": { - "angle": 0, - "axis": "y", - "origin": [ - 5, - -15, - 5 - ] - }, - "faces": { - "north": { - "uv": [ - 6.75, - 4.5, - 7, - 6.25 - ], - "texture": "#1" - }, - "east": { - "uv": [ - 6.5, - 4.5, - 6.75, - 6.25 - ], - "texture": "#1" - }, - "south": { - "uv": [ - 7.25, - 4.5, - 7.5, - 6.25 - ], - "texture": "#1" - }, - "west": { - "uv": [ - 7, - 4.5, - 7.25, - 6.25 - ], - "texture": "#1" - }, - "up": { - "uv": [ - 7, - 4.5, - 6.75, - 4.25 - ], - "texture": "#1" - }, - "down": { - "uv": [ - 7.25, - 4.25, - 7, - 4.5 - ], - "texture": "#1" - } - } - }, - { - "from": [ - 7.3, - -14.2, - 7.3 - ], - "to": [ - 8.7, - -5.8, - 8.7 - ], - "rotation": { - "angle": 0, - "axis": "y", - "origin": [ - 5, - -15, - 5 - ] - }, - "faces": { - "north": { - "uv": [ - 5.75, - 4.5, - 6, - 6.5 - ], - "texture": "#1" - }, - "east": { - "uv": [ - 5.5, - 4.5, - 5.75, - 6.5 - ], - "texture": "#1" - }, - "south": { - "uv": [ - 6.25, - 4.5, - 6.5, - 6.5 - ], - "texture": "#1" - }, - "west": { - "uv": [ - 6, - 4.5, - 6.25, - 6.5 - ], - "texture": "#1" - }, - "up": { - "uv": [ - 6, - 4.5, - 5.75, - 4.25 - ], - "texture": "#1" - }, - "down": { - "uv": [ - 6.25, - 4.25, - 6, - 4.5 - ], - "texture": "#1" - } - } - }, - { - "from": [ - 6.5, - -16, - 6.5 - ], - "to": [ - 9.5, - -13, - 9.5 - ], - "rotation": { - "angle": 0, - "axis": "y", - "origin": [ - 5, - -19, - 5 - ] - }, - "faces": { - "north": { - "uv": [ - 5.75, - 0.75, - 6.5, - 1.5 - ], - "texture": "#1" - }, - "east": { - "uv": [ - 5.75, - 0.75, - 6.5, - 1.5 - ], - "texture": "#1" - }, - "south": { - "uv": [ - 5.75, - 0.75, - 6.5, - 1.5 - ], - "texture": "#1" - }, - "west": { - "uv": [ - 5.75, - 0.75, - 6.5, - 1.5 - ], - "texture": "#1" - }, - "up": { - "uv": [ - 5, - 0.75, - 4.25, - 0 - ], - "texture": "#1" - }, - "down": { - "uv": [ - 5.75, - 0, - 5, - 0.75 - ], - "texture": "#1" - } - } - }, - { - "from": [ - 5.5, - 0, - 8 - ], - "to": [ - 6.5, - 28, - 8 - ], - "rotation": { - "angle": 0, - "axis": "y", - "origin": [ - 1.5, - -5, - 5 - ] - }, - "faces": { - "north": { - "uv": [ - 2.5, - 0, - 2.75, - 8.5 - ], - "texture": "#1" - }, - "east": { - "uv": [ - 2.5, - 0, - 2.5, - 8.5 - ], - "texture": "#1" - }, - "south": { - "uv": [ - 2.75, - 0, - 3, - 8.5 - ], - "texture": "#1" - }, - "west": { - "uv": [ - 2.75, - 0, - 2.75, - 8.5 - ], - "texture": "#1" - }, - "up": { - "uv": [ - 2.75, - 0, - 2.5, - 0 - ], - "texture": "#1" - }, - "down": { - "uv": [ - 3, - 0, - 2.75, - 0 - ], - "texture": "#1" - } - } - }, - { - "from": [ - 6, - 0, - 7.5 - ], - "to": [ - 10, - 27.625, - 8.5 - ], - "rotation": { - "angle": 0, - "axis": "y", - "origin": [ - 5.5, - -5, - 5 - ] - }, - "faces": { - "north": { - "uv": [ - 0.25, - 0.25, - 1.25, - 8.5 - ], - "texture": "#1" - }, - "east": { - "uv": [ - 0, - 0.25, - 0.25, - 8.5 - ], - "texture": "#1" - }, - "south": { - "uv": [ - 1.5, - 0.25, - 2.5, - 8.5 - ], - "texture": "#1" - }, - "west": { - "uv": [ - 1.25, - 0.25, - 1.5, - 8.5 - ], - "texture": "#1" - }, - "up": { - "uv": [ - 1.25, - 0.25, - 0.25, - 0 - ], - "texture": "#1" - }, - "down": { - "uv": [ - 2.25, - 0, - 1.25, - 0.25 - ], - "texture": "#1" - } - } - }, - { - "from": [ - 7.295, - 26.52, - 7.495 - ], - "to": [ - 10.105, - 29.33, - 8.505 - ], - "rotation": { - "angle": -45, - "axis": "z", - "origin": [ - 8, - 28.625, - 8 - ] - }, - "faces": { - "north": { - "uv": [ - 6.75, - 0.25, - 7.25, - 0.75 - ], - "texture": "#1" - }, - "east": { - "uv": [ - 6.5, - 0.25, - 6.75, - 0.75 - ], - "texture": "#1" - }, - "south": { - "uv": [ - 7.5, - 0.25, - 8, - 0.75 - ], - "texture": "#1" - }, - "west": { - "uv": [ - 7.25, - 0.25, - 7.5, - 0.75 - ], - "texture": "#1" - }, - "up": { - "uv": [ - 7.25, - 0.25, - 6.75, - 0 - ], - "texture": "#1" - }, - "down": { - "uv": [ - 7.75, - 0, - 7.25, - 0.25 - ], - "texture": "#1" - } - } - }, - { - "from": [ - 6.37, - 26.295, - 7.995 - ], - "to": [ - 9.905, - 29.83, - 8.005 - ], - "rotation": { - "angle": -45, - "axis": "z", - "origin": [ - 8, - 28.2, - 8 - ] - }, - "faces": { - "north": { - "uv": [ - 6.5, - 0.75, - 7.25, - 1.5 - ], - "texture": "#1" - }, - "east": { - "uv": [ - 6.5, - 0.75, - 6.5, - 1.5 - ], - "texture": "#1" - }, - "south": { - "uv": [ - 7.25, - 0.75, - 8, - 1.5 - ], - "texture": "#1" - }, - "west": { - "uv": [ - 7.25, - 0.75, - 7.25, - 1.5 - ], - "texture": "#1" - }, - "up": { - "uv": [ - 7.25, - 0.75, - 6.5, - 0.75 - ], - "texture": "#1" - }, - "down": { - "uv": [ - 8, - 0.75, - 7.25, - 0.75 - ], - "texture": "#1" - } - } - }, - { - "from": [ - 9.5, - 0, - 8 - ], - "to": [ - 10.5, - 28, - 8 - ], - "rotation": { - "angle": 0, - "axis": "y", - "origin": [ - 5.5, - -5, - 5 - ] - }, - "faces": { - "north": { - "uv": [ - 3, - 0, - 3.25, - 8.5 - ], - "texture": "#1" - }, - "east": { - "uv": [ - 3, - 0, - 3, - 8.5 - ], - "texture": "#1" - }, - "south": { - "uv": [ - 3.25, - 0, - 3.5, - 8.5 - ], - "texture": "#1" - }, - "west": { - "uv": [ - 3.25, - 0, - 3.25, - 8.5 - ], - "texture": "#1" - }, - "up": { - "uv": [ - 3.25, - 0, - 3, - 0 - ], - "texture": "#1" - }, - "down": { - "uv": [ - 3.5, - 0, - 3.25, - 0 - ], - "texture": "#1" - } - } - } - ], - "gui_light": "front", - "display": { - "thirdperson_righthand": { - "rotation": [ - 0, - -90, - 0 - ], - "translation": [ - 0, - 37.5, - 1.5 - ], - "scale": [ - 2, - 2, - 2 - ] - }, - "thirdperson_lefthand": { - "rotation": [ - 0, - -90, - 0 - ], - "translation": [ - 0, - 37.5, - 1.5 - ], - "scale": [ - 2, - 2, - 2 - ] - }, - "firstperson_righthand": { - "rotation": [ - 0, - -90, - 5 - ], - "translation": [ - 2, - 8, - 1.5 - ], - "scale": [ - 0.5, - 0.5, - 0.5 - ] - }, - "firstperson_lefthand": { - "rotation": [ - 0, - 90, - -5 - ], - "translation": [ - 2, - 8, - 1.5 - ], - "scale": [ - 0.5, - 0.5, - 0.5 - ] - }, - "ground": { - "rotation": [ - -90, - 0, - 0 - ], - "scale": [ - 0.2, - 0.2, - 0.2 - ] - }, - "gui": { - "rotation": [ - 0, - 0, - -45 - ], - "scale": [ - 0.4, - 0.4, - 0.4 - ] - }, - "head": { - "translation": [ - 0, - 45.25, - 0 - ], - "scale": [ - 2, - 2, - 2 - ] - }, - "fixed": { - "rotation": [ - 0, - 0, - 45 - ], - "scale": [ - 0.5, - 0.5, - 0.5 - ] - }, - "on_shelf": { - "scale": [ - 0.5, - 0.5, - 0.5 - ] - } - }, - "groups": [ - { - "name": "royal_guardian_sword", - "origin": [ - 7.65, - -7.75, - 8 - ], - "scope": 0, - "color": 0, - "children": [ - { - "name": "guard", - "origin": [ - 7.65, - -7.75, - 8 - ], - "scope": 0, - "color": 0, - "children": [ - { - "name": "group", - "origin": [ - 11.1, - -7.05, - 8.5 - ], - "scope": 0, - "color": 0, - "children": [ - 0, - 1 - ] - }, - { - "name": "group", - "origin": [ - 11.1, - -7.05, - 8.5 - ], - "scope": 0, - "color": 0, - "children": [] - }, - 2, - 3, - 4 - ] - }, - { - "name": "handle", - "origin": [ - 5, - -15, - 5 - ], - "scope": 0, - "color": 0, - "children": [ - 5, - 6, - 7 - ] - }, - { - "name": "blade", - "origin": [ - 2, - -5, - 5 - ], - "scope": 0, - "color": 0, - "children": [ - 8, - 9, - 10, - 11, - 12 - ] - } - ] - } - ] + "parent": "antarchy:item/big_bertha_held" } diff --git a/common-1.21.1/src/main/resources/data/antarchy/advancement/visit_cavaryn.json b/common-1.21.1/src/main/resources/data/antarchy/advancement/visit_cavaryn.json index 01cfb732..f02d73ed 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/advancement/visit_cavaryn.json +++ b/common-1.21.1/src/main/resources/data/antarchy/advancement/visit_cavaryn.json @@ -9,7 +9,7 @@ }, "display": { "announce_to_chat": true, - "background": "antarchy:textures/block/myrmite/myrmite", + "background": "antarchy:textures/block/myrmite/myrmite.png", "description": { "translate": "advancements.antarchy.visit_cavaryn.description" }, diff --git a/common-1.21.1/src/main/resources/data/antarchy/advancement/visit_elythia.json b/common-1.21.1/src/main/resources/data/antarchy/advancement/visit_elythia.json index 90923ec0..123c2124 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/advancement/visit_elythia.json +++ b/common-1.21.1/src/main/resources/data/antarchy/advancement/visit_elythia.json @@ -9,7 +9,7 @@ }, "display": { "announce_to_chat": true, - "background": "antarchy:textures/block/ouranwood/mossy_ouranwood_log", + "background": "antarchy:textures/block/ouranwood/mossy_ouranwood_log.png", "description": { "translate": "advancements.antarchy.visit_elythia.description" }, diff --git a/common-1.21.1/src/main/resources/data/antarchy/advancement/visit_thoraxis.json b/common-1.21.1/src/main/resources/data/antarchy/advancement/visit_thoraxis.json index d15356df..ac57108b 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/advancement/visit_thoraxis.json +++ b/common-1.21.1/src/main/resources/data/antarchy/advancement/visit_thoraxis.json @@ -9,7 +9,7 @@ }, "display": { "announce_to_chat": true, - "background": "antarchy:textures/block/nyxite", + "background": "antarchy:textures/block/nyxite.png", "description": { "translate": "advancements.antarchy.visit_thoraxis.description" }, diff --git a/common-1.21.1/src/main/resources/data/antarchy/dimension/cavaryn.json b/common-1.21.1/src/main/resources/data/antarchy/dimension/cavaryn.json index 9b70b00b..38e6f371 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/dimension/cavaryn.json +++ b/common-1.21.1/src/main/resources/data/antarchy/dimension/cavaryn.json @@ -164,7 +164,7 @@ ], "humidity": [ -0.15, - 1.0 + 0.45 ], "continentalness": [ -1.0, @@ -186,6 +186,36 @@ }, "biome": "antarchy:cavaryn_moleworm_caves" }, + { + "parameters": { + "temperature": [ + -1.0, + 1.0 + ], + "humidity": [ + 0.45, + 1.0 + ], + "continentalness": [ + -1.0, + 1.0 + ], + "erosion": [ + -1.0, + 1.0 + ], + "weirdness": [ + -0.6, + 0.9 + ], + "depth": [ + 0.15, + 2.0 + ], + "offset": 0.0 + }, + "biome": "antarchy:wormy_caves" + }, { "parameters": { "temperature": [ diff --git a/common-1.21.1/src/main/resources/data/antarchy/dimension/elythia.json b/common-1.21.1/src/main/resources/data/antarchy/dimension/elythia.json index 61f88ac1..655912d3 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/dimension/elythia.json +++ b/common-1.21.1/src/main/resources/data/antarchy/dimension/elythia.json @@ -57,12 +57,12 @@ { "biome": "antarchy:butterfly_fields", "parameters": { - "temperature": [0.55, 0.8], - "humidity": [0.82, 1.0], - "continentalness": [-0.93, 0.25], - "erosion": [-1.0, 0.65], - "weirdness": [0.75, 1.0], - "depth": [0.0, 0.25], + "temperature": [0.68, 0.78], + "humidity": [0.9, 1.0], + "continentalness": [0.05, 0.2], + "erosion": [0.05, 0.35], + "weirdness": [0.85, 1.0], + "depth": [0.0, 0.2], "offset": 0.0 } }, @@ -74,7 +74,7 @@ "continentalness": [0.25, 0.72], "erosion": [-0.5, 0.55], "weirdness": [-0.55, 0.62], - "depth": [0.0, 0.35], + "depth": [0.0, 1.0], "offset": 0.0 } }, diff --git a/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/star_coral.json b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/star_coral.json index f7397a97..2b132dbf 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/star_coral.json +++ b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/star_coral.json @@ -3,24 +3,38 @@ "pools": [ { "rolls": 1, - "conditions": [ - { - "condition": "minecraft:match_tool", - "predicate": { - "components": { - "minecraft:enchantments": { - "levels": { - "minecraft:silk_touch": 1 - } - } - } - } - } - ], "entries": [ { - "type": "minecraft:item", - "name": "antarchy:star_coral" + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "components": { + "minecraft:enchantments": { + "levels": { + "minecraft:silk_touch": 1 + } + } + } + } + } + ], + "name": "antarchy:star_coral" + }, + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "name": "antarchy:star_coral" + } + ] } ] } diff --git a/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/star_coral_block.json b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/star_coral_block.json index 726008ad..f1b69b32 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/star_coral_block.json +++ b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/star_coral_block.json @@ -32,7 +32,7 @@ "condition": "minecraft:survives_explosion" } ], - "name": "antarchy:dead_star_coral_block" + "name": "antarchy:star_coral_block" } ] } diff --git a/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/star_coral_fan.json b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/star_coral_fan.json index 62bea052..0794b0d4 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/star_coral_fan.json +++ b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/star_coral_fan.json @@ -3,24 +3,38 @@ "pools": [ { "rolls": 1, - "conditions": [ - { - "condition": "minecraft:match_tool", - "predicate": { - "components": { - "minecraft:enchantments": { - "levels": { - "minecraft:silk_touch": 1 - } - } - } - } - } - ], "entries": [ { - "type": "minecraft:item", - "name": "antarchy:star_coral_fan" + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "components": { + "minecraft:enchantments": { + "levels": { + "minecraft:silk_touch": 1 + } + } + } + } + } + ], + "name": "antarchy:star_coral_fan" + }, + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "name": "antarchy:star_coral_fan" + } + ] } ] } diff --git a/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/star_coral_wall_fan.json b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/star_coral_wall_fan.json index 62bea052..0794b0d4 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/star_coral_wall_fan.json +++ b/common-1.21.1/src/main/resources/data/antarchy/loot_table/blocks/star_coral_wall_fan.json @@ -3,24 +3,38 @@ "pools": [ { "rolls": 1, - "conditions": [ - { - "condition": "minecraft:match_tool", - "predicate": { - "components": { - "minecraft:enchantments": { - "levels": { - "minecraft:silk_touch": 1 - } - } - } - } - } - ], "entries": [ { - "type": "minecraft:item", - "name": "antarchy:star_coral_fan" + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "components": { + "minecraft:enchantments": { + "levels": { + "minecraft:silk_touch": 1 + } + } + } + } + } + ], + "name": "antarchy:star_coral_fan" + }, + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "name": "antarchy:star_coral_fan" + } + ] } ] } diff --git a/common-1.21.1/src/main/resources/data/antarchy/tags/worldgen/biome/is_cavaryn.json b/common-1.21.1/src/main/resources/data/antarchy/tags/worldgen/biome/is_cavaryn.json index f94ddcb5..c10edc3a 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/tags/worldgen/biome/is_cavaryn.json +++ b/common-1.21.1/src/main/resources/data/antarchy/tags/worldgen/biome/is_cavaryn.json @@ -2,6 +2,7 @@ "values": [ "antarchy:cavaryn", "antarchy:cavaryn_moleworm_caves", + "antarchy:wormy_caves", "antarchy:glowcap_caves", "antarchy:biowart_caves", "antarchy:brooding_tunnels", diff --git a/common-1.21.1/src/main/resources/data/antarchy/worldgen/noise_settings/cavaryn.json b/common-1.21.1/src/main/resources/data/antarchy/worldgen/noise_settings/cavaryn.json index c576e96a..f27bbc2f 100644 --- a/common-1.21.1/src/main/resources/data/antarchy/worldgen/noise_settings/cavaryn.json +++ b/common-1.21.1/src/main/resources/data/antarchy/worldgen/noise_settings/cavaryn.json @@ -203,6 +203,59 @@ ] } }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:biome", + "biome_is": ["antarchy:wormy_caves"] + }, + "then_run": { + "type": "minecraft:sequence", + "sequence": [ + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:stone_depth", + "offset": 0, + "surface_type": "floor", + "add_surface_depth": false, + "secondary_depth_range": 0 + }, + "then_run": { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:noise_threshold", + "noise": "antarchy:surface_blend", + "min_threshold": -0.28, + "max_threshold": 0.18 + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "minecraft:mud" + } + } + } + }, + { + "type": "minecraft:condition", + "if_true": { + "type": "minecraft:stone_depth", + "offset": 0, + "surface_type": "floor", + "add_surface_depth": true, + "secondary_depth_range": 0 + }, + "then_run": { + "type": "minecraft:block", + "result_state": { + "Name": "antarchy:loam" + } + } + } + ] + } + }, { "type": "minecraft:condition", "if_true": { diff --git a/fabric-1.20.1/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricContent.java b/fabric-1.20.1/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricContent.java index e62e4ba6..8d993f74 100644 --- a/fabric-1.20.1/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricContent.java +++ b/fabric-1.20.1/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricContent.java @@ -88,6 +88,8 @@ public final class AntarchyFabricContent { net.fabricmc.fabric.api.registry.FabricBrewingRecipeRegistry.registerPotionRecipe(net.minecraft.world.item.alchemy.Potions.AWKWARD, Ingredient.of(AntarchyFabricItems.CLOUD_SHARK_FIN.get()), net.minecraft.world.item.alchemy.Potions.SLOW_FALLING); net.fabricmc.fabric.api.registry.FabricBrewingRecipeRegistry.registerPotionRecipe(net.minecraft.world.item.alchemy.Potions.AWKWARD, Ingredient.of(AntarchyFabricItems.JUMPY_BUG_LEG.get()), Potions.LEAPING); net.fabricmc.fabric.api.registry.FabricBrewingRecipeRegistry.registerPotionRecipe(net.minecraft.world.item.alchemy.Potions.AWKWARD, Ingredient.of(AntarchyFabricItems.CORNEA_EAR.get()), net.minecraft.world.item.alchemy.Potions.NIGHT_VISION); + net.fabricmc.fabric.api.registry.FabricBrewingRecipeRegistry.registerPotionRecipe(net.minecraft.world.item.alchemy.Potions.AWKWARD, Ingredient.of(AntarchyFabricItems.QUEEN_SCALE.get()), potionHolder(AntarchyFabricMisc.TIME_DILATION)); + net.fabricmc.fabric.api.registry.FabricBrewingRecipeRegistry.registerPotionRecipe(potionHolder(AntarchyFabricMisc.TIME_DILATION), Ingredient.of(Items.GLOWSTONE_DUST), potionHolder(AntarchyFabricMisc.LONG_TIME_DILATION)); AntarchyFabricSounds.SOUND_EVENTS.register(); AntarchyFabricMisc.FLUIDS.register(); @@ -441,6 +443,12 @@ public final class AntarchyFabricContent { com.craisinlord.antarchy.fabric.network.AntarchyFabricNetworking.sendToPlayer(player, payload, com.craisinlord.antarchy.content.network.HordeIntensityPayload.STREAM_CODEC, com.craisinlord.antarchy.content.network.HordeIntensityPayload.TYPE)); BloodCrystalKatanaItem.setTrailCallback(AntarchyFabricNetworking::syncKatanaTrail); com.craisinlord.antarchy.content.gravity.AntarchyGravityApi.setSyncDispatcher(AntarchyFabricNetworking::syncGravityEntity); + com.craisinlord.antarchy.content.time.TimeDilationApi.setSyncDispatcher( + com.craisinlord.antarchy.fabric.network.AntarchyFabricTimeDilationNetworking::syncRate); + com.craisinlord.antarchy.content.time.TimeDilationApi.setFieldSyncDispatcher( + com.craisinlord.antarchy.fabric.network.AntarchyFabricTimeDilationNetworking::syncFields); + AntarchyObjects.setTimeDilationField(() -> AntarchyFabricEntities.TIME_DILATION_FIELD.get()); + AntarchyObjects.setDilatedEffect(() -> AntarchyFabricMisc.mobEffectHolder(AntarchyFabricMisc.DILATED)); com.craisinlord.antarchy.content.tigereye.TigerEyeCamouflageSync.setSendToPlayer((player, payload) -> AntarchyFabricNetworking.sendToPlayer(player, payload, com.craisinlord.antarchy.content.network.TigerEyeCamouflageStatePayload.STREAM_CODEC, diff --git a/fabric-1.20.1/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricEvents.java b/fabric-1.20.1/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricEvents.java index 7b68d1c8..d2759984 100644 --- a/fabric-1.20.1/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricEvents.java +++ b/fabric-1.20.1/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricEvents.java @@ -20,6 +20,8 @@ import com.craisinlord.antarchy.content.portal.PermanentPortalManager; import com.craisinlord.antarchy.content.command.CavarynCommand; import com.craisinlord.antarchy.content.command.CaterpillarCommand; import com.craisinlord.antarchy.content.command.GravityCommand; +import com.craisinlord.antarchy.content.time.TimeDilationCommand; +import com.craisinlord.antarchy.content.time.TimeDilationManager; import com.craisinlord.antarchy.content.item.MinersDreamExcavationManager; import net.fabricmc.fabric.api.command.v2.CommandRegistrationCallback; import net.fabricmc.fabric.api.entity.event.v1.ServerLivingEntityEvents; @@ -60,10 +62,18 @@ public final class AntarchyFabricEvents { } public static void register() { + net.fabricmc.fabric.api.networking.v1.EntityTrackingEvents.START_TRACKING.register((trackedEntity, player) -> { + if (trackedEntity instanceof com.craisinlord.antarchy.content.time.TimeDilationEntityAccess access) { + com.craisinlord.antarchy.fabric.network.AntarchyFabricTimeDilationNetworking.syncRateToPlayer( + player, trackedEntity, access.antarchy$getTimeDilationRate() + ); + } + }); CommandRegistrationCallback.EVENT.register((dispatcher, registryAccess, environment) -> { CavarynCommand.register(dispatcher); GravityCommand.register(dispatcher); CaterpillarCommand.register(dispatcher); + TimeDilationCommand.register(dispatcher); }); DispenserBlock.registerBehavior(AntarchyFabricItems.SQUIDZOOKA.get(), new SquidzookaDispenseBehavior()); @@ -154,6 +164,7 @@ public final class AntarchyFabricEvents { AttitudeAdjusterSlamManager.tick(level); MinersDreamExcavationManager.tick(level); } + TimeDilationManager.tickServer(server); invertedPlayers.retainAll(activeThisTick); }); } diff --git a/fabric-1.20.1/src/main/java/com/craisinlord/antarchy/fabric/client/AntarchyFabricClientBootstrap.java b/fabric-1.20.1/src/main/java/com/craisinlord/antarchy/fabric/client/AntarchyFabricClientBootstrap.java index 0822fcfe..537fda08 100644 --- a/fabric-1.20.1/src/main/java/com/craisinlord/antarchy/fabric/client/AntarchyFabricClientBootstrap.java +++ b/fabric-1.20.1/src/main/java/com/craisinlord/antarchy/fabric/client/AntarchyFabricClientBootstrap.java @@ -124,6 +124,7 @@ public final class AntarchyFabricClientBootstrap { EntityRendererRegistry.register(AntarchyFabricEntities.NIGHTMARE_PORTAL.get(), NightmarePortalRenderer::new); EntityRendererRegistry.register(AntarchyFabricEntities.NIGHTMARE_BITE.get(), NightmareBiteRenderer::new); EntityRendererRegistry.register(AntarchyFabricEntities.DIMENSIONAL_TEAR.get(), DimensionalTearRenderer::new); + EntityRendererRegistry.register(AntarchyFabricEntities.TIME_DILATION_FIELD.get(), TimeDilationFieldRenderer::new); EntityRendererRegistry.register(AntarchyFabricEntities.LUCID.get(), LucidRenderer::new); EntityRendererRegistry.register(AntarchyFabricEntities.BED_BUG.get(), BedBugRenderer::new); EntityRendererRegistry.register(AntarchyFabricEntities.WASP.get(), WaspRenderer::new); @@ -476,6 +477,9 @@ public final class AntarchyFabricClientBootstrap { private static void registerClientCallbacks() { ClientTickEvents.END_CLIENT_TICK.register(client -> { + if (client.level != null) { + com.craisinlord.antarchy.content.client.ClientTimeDilationTicker.tick(client.level); + } CameraShakeClientState.tick(); HerculesBeetleImpactShakeClientState.tick(); HordeClientState.tick(); diff --git a/fabric-1.20.1/src/main/java/com/craisinlord/antarchy/fabric/network/AntarchyFabricClientNetworking.java b/fabric-1.20.1/src/main/java/com/craisinlord/antarchy/fabric/network/AntarchyFabricClientNetworking.java index 54131368..03bef8b9 100644 --- a/fabric-1.20.1/src/main/java/com/craisinlord/antarchy/fabric/network/AntarchyFabricClientNetworking.java +++ b/fabric-1.20.1/src/main/java/com/craisinlord/antarchy/fabric/network/AntarchyFabricClientNetworking.java @@ -87,5 +87,9 @@ public final class AntarchyFabricClientNetworking { HordeClientState.update(payload.intensity())); registerReceiver(TigerEyeCamouflageStatePayload.TYPE, TigerEyeCamouflageStatePayload.STREAM_CODEC, payload -> TigerEyeCamouflageClientState.update(payload.entityId(), payload.active(), payload.blockStateId())); + registerReceiver(TimeDilationRatePayload.TYPE, TimeDilationRatePayload.STREAM_CODEC, payload -> + AntarchyFabricTimeDilationNetworking.handleRate(Minecraft.getInstance().player, payload)); + registerReceiver(TimeDilationFieldsPayload.TYPE, TimeDilationFieldsPayload.STREAM_CODEC, payload -> + com.craisinlord.antarchy.content.client.ClientTimeDilationTicker.applyFields(payload.fields())); } } diff --git a/fabric-1.20.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricEntities.java b/fabric-1.20.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricEntities.java index a84f7c04..9caf3c67 100644 --- a/fabric-1.20.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricEntities.java +++ b/fabric-1.20.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricEntities.java @@ -28,6 +28,7 @@ import com.craisinlord.antarchy.content.entity.NadirChestBoatEntity; import com.craisinlord.antarchy.content.entity.OuranwoodBoatEntity; import com.craisinlord.antarchy.content.entity.OuranwoodChestBoatEntity; import com.craisinlord.antarchy.content.entity.portal.DimensionalTearEntity; +import com.craisinlord.antarchy.content.time.TimeDilationFieldEntity; import com.craisinlord.antarchy.content.entity.AlphaMantisEntity; import com.craisinlord.antarchy.content.entity.MantisEntity; import com.craisinlord.antarchy.content.entity.RollyPollyEntity; @@ -460,6 +461,13 @@ public final class AntarchyFabricEntities { .updateInterval(2) .build("dimensional_tear")); + public static final DeferredHolder, EntityType> TIME_DILATION_FIELD = ENTITY_TYPES.register("time_dilation_field", + () -> EntityType.Builder.of(TimeDilationFieldEntity::new, MobCategory.MISC) + .sized(0.5F, 0.5F) + .clientTrackingRange(16) + .updateInterval(20) + .build("time_dilation_field")); + public static final DeferredHolder, EntityType> TORETERROR = ENTITY_TYPES.register("toreterror", () -> EntityType.Builder.of(ToreterrorEntity::new, MobCategory.MONSTER) diff --git a/fabric-1.20.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricMisc.java b/fabric-1.20.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricMisc.java index 7d0d45a7..893dca03 100644 --- a/fabric-1.20.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricMisc.java +++ b/fabric-1.20.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricMisc.java @@ -29,6 +29,7 @@ import com.craisinlord.antarchy.content.effect.InvertedMobEffect; import com.craisinlord.antarchy.content.effect.ParalyzedMobEffect; import com.craisinlord.antarchy.content.effect.ShrinkMobEffect; import com.craisinlord.antarchy.content.effect.StinkyMobEffect; +import com.craisinlord.antarchy.content.effect.DilatedMobEffect; import com.craisinlord.antarchy.content.worldgen.elythia.CoralSpikeFeature; import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaBiomeSource; import com.craisinlord.antarchy.content.worldgen.elythia.ElythiaRiverCarveFunction; @@ -348,6 +349,8 @@ public final class AntarchyFabricMisc { public static final DeferredHolder INVERTED = MOB_EFFECTS.register("inverted", InvertedMobEffect::new); + public static final DeferredHolder DILATED = MOB_EFFECTS.register("dilated", DilatedMobEffect::new); + public static final DeferredHolder STINKY = MOB_EFFECTS.register("stinky", StinkyMobEffect::new); @@ -379,6 +382,12 @@ public final class AntarchyFabricMisc { public static final DeferredHolder LONG_INVERSION = POTIONS.register("long_inversion", () -> new Potion("inversion", new MobEffectInstance(mobEffectHolder(INVERTED), 2400))); + public static final DeferredHolder TIME_DILATION = POTIONS.register("time_dilation", + () -> new Potion(new MobEffectInstance(mobEffectHolder(DILATED), 1200))); + + public static final DeferredHolder LONG_TIME_DILATION = POTIONS.register("long_time_dilation", + () -> new Potion("time_dilation", new MobEffectInstance(mobEffectHolder(DILATED), 1200, 1))); + public static final DeferredHolder STINKY_POTION = POTIONS.register("stinky", () -> new Potion(new MobEffectInstance(mobEffectHolder(STINKY), 1200))); @@ -619,12 +628,12 @@ public final class AntarchyFabricMisc { () -> new TriffidPatchFeature(NoneFeatureConfiguration.CODEC)); - public static final DeferredHolder, com.mojang.serialization.Codec> ELYTHIA_BIOME_SOURCE = BIOME_SOURCES.register("elythia_biome_source", - () -> ElythiaBiomeSource.CODEC.codec()); + public static final DeferredHolder, com.mojang.serialization.Codec> ELYTHIA_BIOME_SOURCE = BIOME_SOURCES.register("elythia_biome_source", + () -> (com.mojang.serialization.Codec) (com.mojang.serialization.Codec) ElythiaBiomeSource.CODEC); - public static final DeferredHolder, com.mojang.serialization.Codec> ELYTHIA_RIVER_CARVE = DENSITY_FUNCTION_TYPES.register("elythia_river_carve", - () -> ElythiaRiverCarveFunction.KEY_CODEC.codec()); + public static final DeferredHolder, com.mojang.serialization.Codec> ELYTHIA_RIVER_CARVE = DENSITY_FUNCTION_TYPES.register("elythia_river_carve", + () -> (com.mojang.serialization.Codec) (com.mojang.serialization.Codec) ElythiaRiverCarveFunction.KEY_CODEC.codec()); public static final DeferredHolder, ElythiaPondFeature> ELYTHIA_POND = FEATURES.register("elythia_pond", @@ -782,8 +791,8 @@ public final class AntarchyFabricMisc { () -> new com.craisinlord.antarchy.content.worldgen.elythia.FungalMushroomFeature(NoneFeatureConfiguration.CODEC)); - public static final DeferredHolder, com.mojang.serialization.Codec> THORAXIS_BIOME_SOURCE = BIOME_SOURCES.register("thoraxis_biome_source", - () -> ThoraxisBiomeSource.CODEC.codec()); + public static final DeferredHolder, com.mojang.serialization.Codec> THORAXIS_BIOME_SOURCE = BIOME_SOURCES.register("thoraxis_biome_source", + () -> (com.mojang.serialization.Codec) (com.mojang.serialization.Codec) ThoraxisBiomeSource.CODEC); public static final ArmorMaterial JUMPY_BOOTS_ARMOR_MATERIAL = armorMaterial( diff --git a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricContent.java b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricContent.java index da4596d5..c0817b70 100644 --- a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricContent.java +++ b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricContent.java @@ -95,7 +95,9 @@ public final class AntarchyFabricContent { builder.registerPotionRecipe(net.minecraft.world.item.alchemy.Potions.AWKWARD, Ingredient.of(AntarchyFabricItems.KING_SCALE.get()), potionHolder(AntarchyFabricMisc.COMMAND)); builder.registerPotionRecipe(potionHolder(AntarchyFabricMisc.COMMAND), Ingredient.of(Items.REDSTONE), potionHolder(AntarchyFabricMisc.LONG_COMMAND)); builder.registerPotionRecipe(net.minecraft.world.item.alchemy.Potions.AWKWARD, Ingredient.of(AntarchyFabricItems.QUEEN_SCALE.get()), potionHolder(AntarchyFabricMisc.TIME_DILATION)); - builder.registerPotionRecipe(potionHolder(AntarchyFabricMisc.TIME_DILATION), Ingredient.of(Items.REDSTONE), potionHolder(AntarchyFabricMisc.LONG_TIME_DILATION)); + builder.registerPotionRecipe(potionHolder(AntarchyFabricMisc.TIME_DILATION), Ingredient.of(Items.GLOWSTONE_DUST), potionHolder(AntarchyFabricMisc.LONG_TIME_DILATION)); + builder.registerPotionRecipe(potionHolder(AntarchyFabricMisc.TIME_DILATION), Ingredient.of(Items.FERMENTED_SPIDER_EYE), potionHolder(AntarchyFabricMisc.TIME_CONTRACTION)); + builder.registerPotionRecipe(potionHolder(AntarchyFabricMisc.TIME_CONTRACTION), Ingredient.of(Items.GLOWSTONE_DUST), potionHolder(AntarchyFabricMisc.LONG_TIME_CONTRACTION)); builder.registerPotionRecipe(net.minecraft.world.item.alchemy.Potions.AWKWARD, Ingredient.of(AntarchyFabricItems.CLOUD_SHARK_FIN.get()), net.minecraft.world.item.alchemy.Potions.SLOW_FALLING); builder.registerPotionRecipe(net.minecraft.world.item.alchemy.Potions.AWKWARD, Ingredient.of(AntarchyFabricItems.JUMPY_BUG_LEG.get()), Potions.LEAPING); builder.registerPotionRecipe(net.minecraft.world.item.alchemy.Potions.AWKWARD, Ingredient.of(AntarchyFabricItems.CORNEA_EAR.get()), net.minecraft.world.item.alchemy.Potions.NIGHT_VISION); @@ -407,6 +409,7 @@ public final class AntarchyFabricContent { AntarchyObjects.setLucidBoltImpactSmall(() -> AntarchyFabricMisc.LUCID_BOLT_IMPACT_SMALL.get()); AntarchyObjects.setLucidBoltImpactLarge(() -> AntarchyFabricMisc.LUCID_BOLT_IMPACT_LARGE.get()); AntarchyObjects.setDorrieInventoryMenu(AntarchyFabricMisc.DORRIE_INVENTORY_MENU); + AntarchyObjects.setRoyalJudgmentMenu(AntarchyFabricMisc.ROYAL_JUDGMENT_MENU); AntarchyObjects.setCritterCage(() -> AntarchyFabricItems.CRITTER_CAGE.get()); AntarchyObjects.setCritterCageBlock(() -> AntarchyFabricBlocks.CRITTER_CAGE_BLOCK.get()); AntarchyObjects.setLucidAnchor(() -> AntarchyFabricBlocks.LUCID_ANCHOR.get()); diff --git a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricEvents.java b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricEvents.java index ebad11ea..3abe27ef 100644 --- a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricEvents.java +++ b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/AntarchyFabricEvents.java @@ -21,6 +21,7 @@ import com.craisinlord.antarchy.content.command.CavarynCommand; import com.craisinlord.antarchy.content.command.CaterpillarCommand; import com.craisinlord.antarchy.content.command.DimensionalTearCommand; import com.craisinlord.antarchy.content.command.GravityCommand; +import com.craisinlord.antarchy.content.command.RoyalCommand; import com.craisinlord.antarchy.content.time.TimeDilationCommand; import com.craisinlord.antarchy.content.time.TimeDilationManager; import com.craisinlord.antarchy.content.item.MinersDreamExcavationManager; @@ -80,6 +81,7 @@ public final class AntarchyFabricEvents { CaterpillarCommand.register(dispatcher); DimensionalTearCommand.register(dispatcher); TimeDilationCommand.register(dispatcher); + RoyalCommand.register(dispatcher); }); DispenserBlock.registerBehavior(AntarchyFabricItems.SQUIDZOOKA.get(), new SquidzookaDispenseBehavior()); diff --git a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/client/AntarchyFabricClientBootstrap.java b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/client/AntarchyFabricClientBootstrap.java index d019edc2..9730e8d9 100644 --- a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/client/AntarchyFabricClientBootstrap.java +++ b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/client/AntarchyFabricClientBootstrap.java @@ -62,6 +62,7 @@ public final class AntarchyFabricClientBootstrap { public static void register() { AntarchyKeyBindings.register(); MenuScreens.register(AntarchyFabricMisc.DORRIE_INVENTORY_MENU.get(), com.craisinlord.antarchy.content.client.screen.DorrieInventoryScreen::new); + MenuScreens.register(AntarchyFabricMisc.ROYAL_JUDGMENT_MENU.get(), com.craisinlord.antarchy.content.client.screen.RoyalJudgmentScreen::new); registerRenderers(); registerEntityLayers(); registerColors(); diff --git a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricBlocks.java b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricBlocks.java index 46ea4ca9..8182b37e 100644 --- a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricBlocks.java +++ b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricBlocks.java @@ -1300,7 +1300,7 @@ public final class AntarchyFabricBlocks { public static final DeferredBlock MUCUS = BLOCKS.register("mucus", - () -> new com.craisinlord.antarchy.content.block.MucusBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.GLOW_LICHEN).friction(0.98F).lightLevel(state -> 0).sound(SoundType.SLIME_BLOCK))); + () -> new com.craisinlord.antarchy.content.block.MucusBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.GLOW_LICHEN).friction(0.995F).lightLevel(state -> 0).sound(SoundType.SLIME_BLOCK))); public static final DeferredBlock DREAM_SANDSTONE = BLOCKS.register("dream_sandstone", diff --git a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricMisc.java b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricMisc.java index 626843a5..107ca7fd 100644 --- a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricMisc.java +++ b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricMisc.java @@ -31,6 +31,7 @@ import com.craisinlord.antarchy.content.effect.GrowthMobEffect; import com.craisinlord.antarchy.content.effect.InvertedMobEffect; import com.craisinlord.antarchy.content.effect.CommandedMobEffect; import com.craisinlord.antarchy.content.effect.DilatedMobEffect; +import com.craisinlord.antarchy.content.effect.ContractedMobEffect; import com.craisinlord.antarchy.content.effect.ParalyzedMobEffect; import com.craisinlord.antarchy.content.effect.ShrinkMobEffect; import com.craisinlord.antarchy.content.effect.StinkyMobEffect; @@ -168,6 +169,8 @@ public final class AntarchyFabricMisc { public static final DeferredHolder, net.minecraft.world.inventory.MenuType> DORRIE_INVENTORY_MENU = MENUS.register("dorrie_inventory", () -> new net.minecraft.world.inventory.MenuType<>(com.craisinlord.antarchy.content.menu.DorrieInventoryMenu::new, FeatureFlags.DEFAULT_FLAGS)); + public static final DeferredHolder, net.minecraft.world.inventory.MenuType> ROYAL_JUDGMENT_MENU = + MENUS.register("royal_judgment", () -> new net.minecraft.world.inventory.MenuType<>(com.craisinlord.antarchy.content.menu.RoyalJudgmentMenu::new, FeatureFlags.DEFAULT_FLAGS)); public static final DeferredRegister> DATA_COMPONENT_TYPES = @@ -435,9 +438,14 @@ public final class AntarchyFabricMisc { public static final DeferredHolder LONG_COMMAND = POTIONS.register("long_command", () -> new Potion("command", new MobEffectInstance(mobEffectHolder(COMMANDED), 1200))); public static final DeferredHolder TIME_DILATION = POTIONS.register("time_dilation", - () -> new Potion(new MobEffectInstance(mobEffectHolder(DILATED), 300))); + () -> new Potion(new MobEffectInstance(mobEffectHolder(DILATED), 1200))); public static final DeferredHolder LONG_TIME_DILATION = POTIONS.register("long_time_dilation", - () -> new Potion("time_dilation", new MobEffectInstance(mobEffectHolder(DILATED), 600))); + () -> new Potion("time_dilation", new MobEffectInstance(mobEffectHolder(DILATED), 1200, 1))); + public static final DeferredHolder CONTRACTED = MOB_EFFECTS.register("contracted", ContractedMobEffect::new); + public static final DeferredHolder TIME_CONTRACTION = POTIONS.register("time_contraction", + () -> new Potion(new MobEffectInstance(mobEffectHolder(CONTRACTED), 1200))); + public static final DeferredHolder LONG_TIME_CONTRACTION = POTIONS.register("long_time_contraction", + () -> new Potion("time_contraction", new MobEffectInstance(mobEffectHolder(CONTRACTED), 1200, 1))); public static final DeferredHolder STINKY_POTION = POTIONS.register("stinky", diff --git a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricSpawnPlacements.java b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricSpawnPlacements.java index 37d586da..2b9a5cd3 100644 --- a/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricSpawnPlacements.java +++ b/fabric-1.21.1/src/main/java/com/craisinlord/antarchy/fabric/registry/AntarchyFabricSpawnPlacements.java @@ -21,6 +21,7 @@ import com.craisinlord.antarchy.content.entity.kraken.KrakenEntity; import com.craisinlord.antarchy.content.entity.OctopusBombEntity; import com.craisinlord.antarchy.content.entity.MolevoreEntity; import com.craisinlord.antarchy.content.entity.MolewormEntity; +import com.craisinlord.antarchy.content.entity.WormEntity; import com.craisinlord.antarchy.content.entity.BomberEntity; import com.craisinlord.antarchy.content.entity.WaspEntity; import net.minecraft.world.entity.animal.Cow; @@ -56,6 +57,7 @@ public final class AntarchyFabricSpawnPlacements { SpawnPlacements.register(AntarchyFabricEntities.ELKA.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, net.minecraft.world.entity.animal.Animal::checkAnimalSpawnRules); SpawnPlacements.register(AntarchyFabricEntities.NIGHTMARE.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, NightmareEntity::canSpawn); SpawnPlacements.register(AntarchyFabricEntities.MOLEWORM.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, MolewormEntity::canSpawn); + SpawnPlacements.register(AntarchyFabricEntities.WORM.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, WormEntity::canSpawn); SpawnPlacements.register(AntarchyFabricEntities.MANTIS.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, MantisEntity::canSpawn); SpawnPlacements.register(AntarchyFabricEntities.ALPHA_MANTIS.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, AlphaMantisEntity::checkAlphaMantisSpawnRules); SpawnPlacements.register(AntarchyFabricEntities.MOLEVORE.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, MolevoreEntity::canSpawn); diff --git a/forge-1.20.1/src/main/java/com/craisinlord/antarchy/forge/AntarchyForge.java b/forge-1.20.1/src/main/java/com/craisinlord/antarchy/forge/AntarchyForge.java index c039f77c..76aced34 100644 --- a/forge-1.20.1/src/main/java/com/craisinlord/antarchy/forge/AntarchyForge.java +++ b/forge-1.20.1/src/main/java/com/craisinlord/antarchy/forge/AntarchyForge.java @@ -199,6 +199,10 @@ public class AntarchyForge { new BloodCrystalKatanaTrailPayload(player.getId(), durationTicks) )); com.craisinlord.antarchy.content.gravity.AntarchyGravityApi.setSyncDispatcher(AntarchyGravityNetworking::syncEntity); + com.craisinlord.antarchy.content.time.TimeDilationApi.setSyncDispatcher( + com.craisinlord.antarchy.forge.network.AntarchyTimeDilationNetworking::syncRate); + com.craisinlord.antarchy.content.time.TimeDilationApi.setFieldSyncDispatcher( + com.craisinlord.antarchy.forge.network.AntarchyTimeDilationNetworking::syncFields); com.craisinlord.antarchy.content.tigereye.TigerEyeCamouflageSync.setSendToPlayer( com.craisinlord.antarchy.forge.network.AntarchyForgeNetworkCore::sendToPlayer); com.craisinlord.antarchy.content.tigereye.TigerEyeCamouflageSync.setSyncSelfAndTracking(player -> @@ -362,6 +366,8 @@ public class AntarchyForge { AntarchyObjects.setRollyPolly(AntarchyForgeEntites.ROLLY_POLLY); AntarchyObjects.setSpiritApple(() -> AntarchyForgeItems.SPIRIT_APPLE.get()); AntarchyObjects.setGlimmeringEffect(() -> AntarchyForgeMisc.mobEffectHolder(AntarchyForgeMisc.GLIMMERING)); + AntarchyObjects.setTimeDilationField(() -> AntarchyForgeEntites.TIME_DILATION_FIELD.get()); + AntarchyObjects.setDilatedEffect(() -> AntarchyForgeMisc.mobEffectHolder(AntarchyForgeMisc.DILATED)); AntarchyObjects.setElka(AntarchyForgeEntites.ELKA); AntarchyObjects.setPeach(() -> AntarchyForgeItems.PEACH.get()); AntarchyObjects.setCorn(() -> AntarchyForgeItems.CORN.get()); diff --git a/forge-1.20.1/src/main/java/com/craisinlord/antarchy/forge/AntarchyForgeEvents.java b/forge-1.20.1/src/main/java/com/craisinlord/antarchy/forge/AntarchyForgeEvents.java index 67dcd9eb..06a9ab4d 100644 --- a/forge-1.20.1/src/main/java/com/craisinlord/antarchy/forge/AntarchyForgeEvents.java +++ b/forge-1.20.1/src/main/java/com/craisinlord/antarchy/forge/AntarchyForgeEvents.java @@ -4,6 +4,7 @@ import com.craisinlord.antarchy.Antarchy; import com.craisinlord.antarchy.content.command.CavarynCommand; import com.craisinlord.antarchy.content.command.CaterpillarCommand; import com.craisinlord.antarchy.content.command.GravityCommand; +import com.craisinlord.antarchy.content.time.TimeDilationCommand; import net.minecraftforge.event.RegisterCommandsEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; @@ -18,5 +19,6 @@ final class AntarchyForgeCommandEvents { CavarynCommand.register(event.getDispatcher()); GravityCommand.register(event.getDispatcher()); CaterpillarCommand.register(event.getDispatcher()); + TimeDilationCommand.register(event.getDispatcher()); } } diff --git a/forge-1.20.1/src/main/java/com/craisinlord/antarchy/forge/client/AntarchyForgeClient.java b/forge-1.20.1/src/main/java/com/craisinlord/antarchy/forge/client/AntarchyForgeClient.java index 833978b7..6b07b078 100644 --- a/forge-1.20.1/src/main/java/com/craisinlord/antarchy/forge/client/AntarchyForgeClient.java +++ b/forge-1.20.1/src/main/java/com/craisinlord/antarchy/forge/client/AntarchyForgeClient.java @@ -126,6 +126,7 @@ public final class AntarchyForgeClient { event.registerEntityRenderer(AntarchyForgeEntites.NIGHTMARE_PORTAL.get(), NightmarePortalRenderer::new); event.registerEntityRenderer(AntarchyForgeEntites.NIGHTMARE_BITE.get(), NightmareBiteRenderer::new); event.registerEntityRenderer(AntarchyForgeEntites.DIMENSIONAL_TEAR.get(), DimensionalTearRenderer::new); + event.registerEntityRenderer(AntarchyForgeEntites.TIME_DILATION_FIELD.get(), TimeDilationFieldRenderer::new); event.registerEntityRenderer(AntarchyForgeEntites.LUCID.get(), context -> withParalyzedGeoLayer(new LucidRenderer(context))); event.registerEntityRenderer(AntarchyForgeEntites.BED_BUG.get(), context -> withParalyzedGeoLayer(new BedBugRenderer(context))); event.registerEntityRenderer(AntarchyForgeEntites.WASP.get(), context -> withParalyzedGeoLayer(new WaspRenderer(context))); diff --git a/forge-1.20.1/src/main/java/com/craisinlord/antarchy/forge/registry/AntarchyForgeEntites.java b/forge-1.20.1/src/main/java/com/craisinlord/antarchy/forge/registry/AntarchyForgeEntites.java index 97ef6c57..d4f11c83 100644 --- a/forge-1.20.1/src/main/java/com/craisinlord/antarchy/forge/registry/AntarchyForgeEntites.java +++ b/forge-1.20.1/src/main/java/com/craisinlord/antarchy/forge/registry/AntarchyForgeEntites.java @@ -62,6 +62,7 @@ import com.craisinlord.antarchy.content.entity.nightmare.NightmareEntity; import com.craisinlord.antarchy.content.entity.nightmare.NightmareBiteEntity; import com.craisinlord.antarchy.content.entity.nightmare.NightmarePortalEntity; import com.craisinlord.antarchy.content.entity.portal.DimensionalTearEntity; +import com.craisinlord.antarchy.content.time.TimeDilationFieldEntity; import com.craisinlord.antarchy.content.entity.CheepEntity; import com.craisinlord.antarchy.content.entity.CreepingHorrorEntity; import com.craisinlord.antarchy.content.entity.DorrieEntity; @@ -428,6 +429,12 @@ public final class AntarchyForgeEntites { .clientTrackingRange(12) .updateInterval(2) .build("dimensional_tear")); + public static final RegistryObject> TIME_DILATION_FIELD = ENTITY_TYPES.register("time_dilation_field", + () -> EntityType.Builder.of(TimeDilationFieldEntity::new, MobCategory.MISC) + .sized(0.5F, 0.5F) + .clientTrackingRange(16) + .updateInterval(20) + .build("time_dilation_field")); private AntarchyForgeEntites() {} diff --git a/forge-1.20.1/src/main/java/com/craisinlord/antarchy/forge/registry/AntarchyForgeEvents.java b/forge-1.20.1/src/main/java/com/craisinlord/antarchy/forge/registry/AntarchyForgeEvents.java index 4f5c9f77..18e6eef4 100644 --- a/forge-1.20.1/src/main/java/com/craisinlord/antarchy/forge/registry/AntarchyForgeEvents.java +++ b/forge-1.20.1/src/main/java/com/craisinlord/antarchy/forge/registry/AntarchyForgeEvents.java @@ -73,6 +73,7 @@ import net.minecraftforge.event.village.WandererTradesEvent; import com.craisinlord.antarchy.content.item.MinersDreamExcavationManager; import net.minecraftforge.fluids.FluidInteractionRegistry; import com.craisinlord.antarchy.forge.network.AntarchyForgeNetworkCore; +import com.craisinlord.antarchy.content.time.TimeDilationManager; public final class AntarchyForgeEvents { private AntarchyForgeEvents() {} @@ -106,6 +107,7 @@ public final class AntarchyForgeEvents { MinecraftForge.EVENT_BUS.addListener(AntarchyForgeEvents::tickScorpionWhips); MinecraftForge.EVENT_BUS.addListener(AntarchyForgeEvents::tickDreamSandLowGravity); MinecraftForge.EVENT_BUS.addListener(AntarchyForgeEvents::tickMinersDreamExcavations); + MinecraftForge.EVENT_BUS.addListener(AntarchyForgeEvents::tickTimeDilation); MinecraftForge.EVENT_BUS.addListener(AntarchyForgeEvents::handleAntiwaterDamage); MinecraftForge.EVENT_BUS.addListener(AntarchyForgeEvents::handleAntiwaterFall); MinecraftForge.EVENT_BUS.addListener(AntarchyForgeEvents::handleDreamSandFall); @@ -208,6 +210,13 @@ public final class AntarchyForgeEvents { } } + @net.minecraftforge.eventbus.api.SubscribeEvent + static void tickTimeDilation(TickEvent.ServerTickEvent event) { + if (event.phase == TickEvent.Phase.END) { + TimeDilationManager.tickServer(event.getServer()); + } + } + private static int badOmenLevel(Player player) { MobEffectInstance effect = player.getEffect(MobEffects.BAD_OMEN); return effect != null ? effect.getAmplifier() + 1 : 0; @@ -280,6 +289,12 @@ public final class AntarchyForgeEvents { } AntarchyGravityNetworking.syncEntity(event.getTarget()); + if (event.getTarget() instanceof com.craisinlord.antarchy.content.time.TimeDilationEntityAccess access + && event.getEntity() instanceof ServerPlayer trackingPlayer) { + com.craisinlord.antarchy.forge.network.AntarchyTimeDilationNetworking.syncRateToPlayer( + trackingPlayer, event.getTarget(), access.antarchy$getTimeDilationRate() + ); + } if (event.getTarget() instanceof ServerPlayer trackedPlayer && event.getEntity() instanceof ServerPlayer trackingPlayer) { com.craisinlord.antarchy.content.tigereye.TigerEyeCamouflageSync.syncTo(trackingPlayer, trackedPlayer); } @@ -1187,6 +1202,8 @@ public final class AntarchyForgeEvents { addPotionMix(Potions.AWKWARD, AntarchyForgeItems.TITANIUM_NUGGET.get(), AntarchyForgeMisc.GROWING.get()); addPotionMix(AntarchyForgeMisc.GROWING.get(), Items.GLOWSTONE_DUST, AntarchyForgeMisc.STRONG_GROWING.get()); addPotionMix(AntarchyForgeMisc.STRONG_GROWING.get(), Items.GLOWSTONE_DUST, AntarchyForgeMisc.EXTREME_GROWING.get()); + addPotionMix(Potions.AWKWARD, AntarchyForgeItems.QUEEN_SCALE.get(), AntarchyForgeMisc.TIME_DILATION.get()); + addPotionMix(AntarchyForgeMisc.TIME_DILATION.get(), Items.GLOWSTONE_DUST, AntarchyForgeMisc.LONG_TIME_DILATION.get()); } static void onMobEffectApplicable(MobEffectEvent.Applicable event) { diff --git a/forge-1.20.1/src/main/java/com/craisinlord/antarchy/forge/registry/AntarchyForgeMisc.java b/forge-1.20.1/src/main/java/com/craisinlord/antarchy/forge/registry/AntarchyForgeMisc.java index 17ccfab5..7eeeaf32 100644 --- a/forge-1.20.1/src/main/java/com/craisinlord/antarchy/forge/registry/AntarchyForgeMisc.java +++ b/forge-1.20.1/src/main/java/com/craisinlord/antarchy/forge/registry/AntarchyForgeMisc.java @@ -10,6 +10,7 @@ import com.craisinlord.antarchy.content.effect.InvertedMobEffect; import com.craisinlord.antarchy.content.effect.ParalyzedMobEffect; import com.craisinlord.antarchy.content.effect.ShrinkMobEffect; import com.craisinlord.antarchy.content.effect.StinkyMobEffect; +import com.craisinlord.antarchy.content.effect.DilatedMobEffect; import com.craisinlord.antarchy.content.recipe.AmericanizeRecipe; import com.craisinlord.antarchy.content.worldgen.ants.BrownAntNestFeature; import com.craisinlord.antarchy.content.worldgen.ants.RainbowAntNestFeature; @@ -98,6 +99,7 @@ public final class AntarchyForgeMisc { public static final RegistryObject DREAD = MOB_EFFECTS.register("dread", DreadMobEffect::new); public static final RegistryObject PARALYZED = MOB_EFFECTS.register("paralyzed", ParalyzedMobEffect::new); public static final RegistryObject INVERTED = MOB_EFFECTS.register("inverted", InvertedMobEffect::new); + public static final RegistryObject DILATED = MOB_EFFECTS.register("dilated", DilatedMobEffect::new); public static final RegistryObject STINKY = MOB_EFFECTS.register("stinky", StinkyMobEffect::new); public static final RegistryObject GOOPED = MOB_EFFECTS.register("gooped", GoopedMobEffect::new); public static final RegistryObject BLOODGLASS_WARD = MOB_EFFECTS.register("bloodglass_ward", com.craisinlord.antarchy.content.effect.BloodglassWardEffect::new); @@ -110,6 +112,10 @@ public final class AntarchyForgeMisc { () -> new Potion(new MobEffectInstance(mobEffectHolder(INVERTED), 600))); public static final RegistryObject LONG_INVERSION = POTIONS.register("long_inversion", () -> new Potion("inversion", new MobEffectInstance(mobEffectHolder(INVERTED), 2400))); + public static final RegistryObject TIME_DILATION = POTIONS.register("time_dilation", + () -> new Potion(new MobEffectInstance(mobEffectHolder(DILATED), 1200))); + public static final RegistryObject LONG_TIME_DILATION = POTIONS.register("long_time_dilation", + () -> new Potion("time_dilation", new MobEffectInstance(mobEffectHolder(DILATED), 1200, 1))); public static final RegistryObject STINKY_POTION = POTIONS.register("stinky", () -> new Potion(new MobEffectInstance(mobEffectHolder(STINKY), 1200))); public static final RegistryObject LONG_STINKY = POTIONS.register("long_stinky", diff --git a/forge-1.20.1/src/main/java/com/craisinlord/antarchy/forge/registry/AntarchyForgePayloadHandlers.java b/forge-1.20.1/src/main/java/com/craisinlord/antarchy/forge/registry/AntarchyForgePayloadHandlers.java index 052a2706..36a63b1e 100644 --- a/forge-1.20.1/src/main/java/com/craisinlord/antarchy/forge/registry/AntarchyForgePayloadHandlers.java +++ b/forge-1.20.1/src/main/java/com/craisinlord/antarchy/forge/registry/AntarchyForgePayloadHandlers.java @@ -41,5 +41,6 @@ public class AntarchyForgePayloadHandlers { payload -> com.craisinlord.antarchy.content.client.HordeClientState.update(payload.intensity()) ); MultipartNetworking.register(); + com.craisinlord.antarchy.forge.network.AntarchyTimeDilationNetworking.register(); } } diff --git a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyConfigModuleNeoforge.java b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyConfigModuleNeoforge.java index f8012706..7db0d17f 100644 --- a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyConfigModuleNeoforge.java +++ b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyConfigModuleNeoforge.java @@ -151,6 +151,7 @@ public final class AntarchyConfigModuleNeoforge { AntarchySettings.setRoyalBossBiteCooldownTicks(AntarchyMobsConfig.royalBossBiteCooldownTicks()); AntarchySettings.setQueenBeamDamage(AntarchyMobsConfig.queenBeamDamage()); AntarchySettings.setQueenBeamRange(AntarchyMobsConfig.queenBeamRange()); + AntarchySettings.setQueenBeamMinimumRange(AntarchyMobsConfig.queenBeamMinimumRange()); AntarchySettings.setQueenBeamDurationTicks(AntarchyMobsConfig.queenBeamDurationTicks()); AntarchySettings.setQueenBeamWindupTicks(AntarchyMobsConfig.queenBeamWindupTicks()); AntarchySettings.setQueenBeamTravelTicks(AntarchyMobsConfig.queenBeamTravelTicks()); @@ -160,6 +161,7 @@ public final class AntarchyConfigModuleNeoforge { AntarchySettings.setQueenBeamTerrainCap(AntarchyMobsConfig.queenBeamTerrainCap()); AntarchySettings.setKingBeamDamage(AntarchyMobsConfig.kingBeamDamage()); AntarchySettings.setKingBeamRange(AntarchyMobsConfig.kingBeamRange()); + AntarchySettings.setKingBeamMinimumRange(AntarchyMobsConfig.kingBeamMinimumRange()); AntarchySettings.setKingBeamDurationTicks(AntarchyMobsConfig.kingBeamDurationTicks()); AntarchySettings.setKingBeamWindupTicks(AntarchyMobsConfig.kingBeamWindupTicks()); AntarchySettings.setKingBeamTravelTicks(AntarchyMobsConfig.kingBeamTravelTicks()); @@ -168,6 +170,11 @@ public final class AntarchyConfigModuleNeoforge { AntarchySettings.setKingBeamTerrainRadius(AntarchyMobsConfig.kingBeamTerrainRadius()); AntarchySettings.setKingBeamTerrainCap(AntarchyMobsConfig.kingBeamTerrainCap()); AntarchySettings.setRoyalDecreeCooldownTicks(AntarchyMobsConfig.royalDecreeCooldownTicks()); + AntarchySettings.setKingRoyalMusterCooldownTicks(AntarchyMobsConfig.kingRoyalMusterCooldownTicks()); + AntarchySettings.setKingRoyalMusterWindupTicks(AntarchyMobsConfig.kingRoyalMusterWindupTicks()); + AntarchySettings.setKingRoyalMusterDurationTicks(AntarchyMobsConfig.kingRoyalMusterDurationTicks()); + AntarchySettings.setKingRoyalMusterRadius(AntarchyMobsConfig.kingRoyalMusterRadius()); + AntarchySettings.setKingRoyalMusterCap(AntarchyMobsConfig.kingRoyalMusterCap()); AntarchySettings.setQueenBlackHoleRadius(AntarchyMobsConfig.queenBlackHoleRadius()); AntarchySettings.setQueenBlackHoleActiveTicks(AntarchyMobsConfig.queenBlackHoleActiveTicks()); AntarchySettings.setQueenBlackHolePullStrength(AntarchyMobsConfig.queenBlackHolePullStrength()); diff --git a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyMobsConfig.java b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyMobsConfig.java index 26b4c255..8216313f 100644 --- a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyMobsConfig.java +++ b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyMobsConfig.java @@ -124,11 +124,14 @@ public final class AntarchyMobsConfig { private static final ModConfigSpec.DoubleValue ROYAL_BOSS_BITE_REACH; private static final ModConfigSpec.DoubleValue ROYAL_BOSS_BITE_DAMAGE_MULTIPLIER; private static final ModConfigSpec.IntValue ROYAL_BOSS_BITE_COOLDOWN_TICKS; - private static final ModConfigSpec.DoubleValue QUEEN_BEAM_DAMAGE, QUEEN_BEAM_RANGE, QUEEN_BEAM_TRACKING, QUEEN_BEAM_TERRAIN_RADIUS; + private static final ModConfigSpec.DoubleValue QUEEN_BEAM_DAMAGE, QUEEN_BEAM_RANGE, QUEEN_BEAM_MINIMUM_RANGE, QUEEN_BEAM_TRACKING, QUEEN_BEAM_TERRAIN_RADIUS; private static final ModConfigSpec.IntValue QUEEN_BEAM_DURATION_TICKS, QUEEN_BEAM_WINDUP_TICKS, QUEEN_BEAM_TRAVEL_TICKS, QUEEN_BEAM_COOLDOWN_TICKS, QUEEN_BEAM_TERRAIN_CAP; - private static final ModConfigSpec.DoubleValue KING_BEAM_DAMAGE, KING_BEAM_RANGE, KING_BEAM_TRACKING, KING_BEAM_TERRAIN_RADIUS; + private static final ModConfigSpec.DoubleValue KING_BEAM_DAMAGE, KING_BEAM_RANGE, KING_BEAM_MINIMUM_RANGE, KING_BEAM_TRACKING, KING_BEAM_TERRAIN_RADIUS; private static final ModConfigSpec.IntValue KING_BEAM_DURATION_TICKS, KING_BEAM_WINDUP_TICKS, KING_BEAM_TRAVEL_TICKS, KING_BEAM_COOLDOWN_TICKS, KING_BEAM_TERRAIN_CAP; private static final ModConfigSpec.IntValue ROYAL_DECREE_COOLDOWN_TICKS; + private static final ModConfigSpec.DoubleValue KING_ROYAL_MUSTER_RADIUS; + private static final ModConfigSpec.IntValue KING_ROYAL_MUSTER_COOLDOWN_TICKS, KING_ROYAL_MUSTER_WINDUP_TICKS, + KING_ROYAL_MUSTER_DURATION_TICKS, KING_ROYAL_MUSTER_CAP; private static final ModConfigSpec.DoubleValue QUEEN_BLACK_HOLE_RADIUS, QUEEN_BLACK_HOLE_PULL_STRENGTH, QUEEN_FINAL_TIME_FIELD_RADIUS, QUEEN_FINAL_TIME_FIELD_RATE; private static final ModConfigSpec.IntValue QUEEN_BLACK_HOLE_ACTIVE_TICKS, @@ -585,6 +588,7 @@ public final class AntarchyMobsConfig { ROYAL_BOSS_BITE_COOLDOWN_TICKS = b.comment("Base cooldown in ticks between bites for a single King or Queen head (scaled down at later phases).").defineInRange("biteCooldownTicks", 45, 1, 1200); QUEEN_BEAM_DAMAGE = b.defineInRange("queenBeamDamage", 45.0D, 0.0D, 1024.0D); QUEEN_BEAM_RANGE = b.defineInRange("queenBeamRange", 100.0D, 1.0D, 256.0D); + QUEEN_BEAM_MINIMUM_RANGE = b.comment("Minimum distance from the Queen before she may begin or maintain a beam.").defineInRange("queenBeamMinimumRange", 22.0D, 0.0D, 256.0D); QUEEN_BEAM_DURATION_TICKS = b.defineInRange("queenBeamDurationTicks", 30, 1, 1200); QUEEN_BEAM_WINDUP_TICKS = b.comment("Charge time before the Queen beam actually fires.").defineInRange("queenBeamWindupTicks", 20, 0, 1200); QUEEN_BEAM_TRAVEL_TICKS = b.comment("Time for the Queen beam to extend from its head to its committed range.").defineInRange("queenBeamTravelTicks", 12, 1, 1200); @@ -594,6 +598,7 @@ public final class AntarchyMobsConfig { QUEEN_BEAM_TERRAIN_CAP = b.defineInRange("queenBeamTerrainCap", 192, 0, 4096); KING_BEAM_DAMAGE = b.defineInRange("kingBeamDamage", 50.0D, 0.0D, 1024.0D); KING_BEAM_RANGE = b.defineInRange("kingBeamRange", 100.0D, 1.0D, 256.0D); + KING_BEAM_MINIMUM_RANGE = b.comment("Minimum distance from the King before he may begin or maintain a beam.").defineInRange("kingBeamMinimumRange", 32.0D, 0.0D, 256.0D); KING_BEAM_DURATION_TICKS = b.defineInRange("kingBeamDurationTicks", 30, 1, 1200); KING_BEAM_WINDUP_TICKS = b.comment("Charge time before the King beam actually fires.").defineInRange("kingBeamWindupTicks", 20, 0, 1200); KING_BEAM_TRAVEL_TICKS = b.comment("Time for the King beam to extend from its head to its committed range.").defineInRange("kingBeamTravelTicks", 12, 1, 1200); @@ -602,6 +607,11 @@ public final class AntarchyMobsConfig { KING_BEAM_TERRAIN_RADIUS = b.defineInRange("kingBeamTerrainRadius", 5.0D, 0.0D, 32.0D); KING_BEAM_TERRAIN_CAP = b.defineInRange("kingBeamTerrainCap", 192, 0, 4096); ROYAL_DECREE_COOLDOWN_TICKS = b.comment("Cooldown in ticks between the end of one King decree and the next.").defineInRange("royalDecreeCooldownTicks", 1200, 1, 72000); + KING_ROYAL_MUSTER_COOLDOWN_TICKS = b.comment("Cooldown in ticks between King's command pulses.").defineInRange("kingRoyalMusterCooldownTicks", 500, 1, 72000); + KING_ROYAL_MUSTER_WINDUP_TICKS = b.comment("Warning time before the King commands nearby hostile mobs.").defineInRange("kingRoyalMusterWindupTicks", 30, 0, 1200); + KING_ROYAL_MUSTER_DURATION_TICKS = b.comment("Duration of Commanded applied by the King's muster.").defineInRange("kingRoyalMusterDurationTicks", 600, 1, 72000); + KING_ROYAL_MUSTER_RADIUS = b.comment("Radius of the King's command aura.").defineInRange("kingRoyalMusterRadius", 32.0D, 1.0D, 128.0D); + KING_ROYAL_MUSTER_CAP = b.comment("Maximum hostile mobs affected by one command pulse.").defineInRange("kingRoyalMusterCap", 12, 1, 128); QUEEN_BLACK_HOLE_RADIUS = b.defineInRange("queenBlackHoleRadius", 14.0D, 1.0D, 64.0D); QUEEN_BLACK_HOLE_ACTIVE_TICKS = b.defineInRange("queenBlackHoleActiveTicks", 120, 20, 1200); QUEEN_BLACK_HOLE_PULL_STRENGTH = b.defineInRange("queenBlackHolePullStrength", 0.16D, 0.0D, 2.0D); @@ -1022,6 +1032,7 @@ public final class AntarchyMobsConfig { static int royalBossBiteCooldownTicks() { return ROYAL_BOSS_BITE_COOLDOWN_TICKS.get(); } static double queenBeamDamage() { return QUEEN_BEAM_DAMAGE.get(); } static double queenBeamRange() { return QUEEN_BEAM_RANGE.get(); } + static double queenBeamMinimumRange() { return QUEEN_BEAM_MINIMUM_RANGE.get(); } static int queenBeamDurationTicks() { return QUEEN_BEAM_DURATION_TICKS.get(); } static int queenBeamWindupTicks() { return QUEEN_BEAM_WINDUP_TICKS.get(); } static int queenBeamTravelTicks() { return QUEEN_BEAM_TRAVEL_TICKS.get(); } @@ -1031,6 +1042,7 @@ public final class AntarchyMobsConfig { static int queenBeamTerrainCap() { return QUEEN_BEAM_TERRAIN_CAP.get(); } static double kingBeamDamage() { return KING_BEAM_DAMAGE.get(); } static double kingBeamRange() { return KING_BEAM_RANGE.get(); } + static double kingBeamMinimumRange() { return KING_BEAM_MINIMUM_RANGE.get(); } static int kingBeamDurationTicks() { return KING_BEAM_DURATION_TICKS.get(); } static int kingBeamWindupTicks() { return KING_BEAM_WINDUP_TICKS.get(); } static int kingBeamTravelTicks() { return KING_BEAM_TRAVEL_TICKS.get(); } @@ -1039,6 +1051,11 @@ public final class AntarchyMobsConfig { static double kingBeamTerrainRadius() { return KING_BEAM_TERRAIN_RADIUS.get(); } static int kingBeamTerrainCap() { return KING_BEAM_TERRAIN_CAP.get(); } static int royalDecreeCooldownTicks() { return ROYAL_DECREE_COOLDOWN_TICKS.get(); } + static int kingRoyalMusterCooldownTicks() { return KING_ROYAL_MUSTER_COOLDOWN_TICKS.get(); } + static int kingRoyalMusterWindupTicks() { return KING_ROYAL_MUSTER_WINDUP_TICKS.get(); } + static int kingRoyalMusterDurationTicks() { return KING_ROYAL_MUSTER_DURATION_TICKS.get(); } + static double kingRoyalMusterRadius() { return KING_ROYAL_MUSTER_RADIUS.get(); } + static int kingRoyalMusterCap() { return KING_ROYAL_MUSTER_CAP.get(); } static double queenBlackHoleRadius() { return QUEEN_BLACK_HOLE_RADIUS.get(); } static int queenBlackHoleActiveTicks() { return QUEEN_BLACK_HOLE_ACTIVE_TICKS.get(); } static double queenBlackHolePullStrength() { return QUEEN_BLACK_HOLE_PULL_STRENGTH.get(); } diff --git a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyNeoforge.java b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyNeoforge.java index 36cb3404..14a010d4 100644 --- a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyNeoforge.java +++ b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyNeoforge.java @@ -478,6 +478,7 @@ public class AntarchyNeoforge { AntarchyObjects.setLucidBoltImpactSmall(() -> AntarchyNeoforgeMisc.LUCID_BOLT_IMPACT_SMALL.get()); AntarchyObjects.setLucidBoltImpactLarge(() -> AntarchyNeoforgeMisc.LUCID_BOLT_IMPACT_LARGE.get()); AntarchyObjects.setDorrieInventoryMenu(AntarchyNeoforgeMisc.DORRIE_INVENTORY_MENU); + AntarchyObjects.setRoyalJudgmentMenu(AntarchyNeoforgeMisc.ROYAL_JUDGMENT_MENU); AntarchyObjects.setCritterCage(() -> AntarchyNeoforgeItems.CRITTER_CAGE.get()); AntarchyObjects.setCritterCageBlock(() -> AntarchyNeoforgeBlocks.CRITTER_CAGE_BLOCK.get()); AntarchyObjects.setCritterCageBlockEntity(() -> AntarchyNeoforgeBlocks.CRITTER_CAGE_BLOCK_ENTITY.get()); diff --git a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyNeoforgeEvents.java b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyNeoforgeEvents.java index 06457009..15cd485d 100644 --- a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyNeoforgeEvents.java +++ b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/AntarchyNeoforgeEvents.java @@ -5,6 +5,7 @@ import com.craisinlord.antarchy.content.command.CavarynCommand; import com.craisinlord.antarchy.content.command.CaterpillarCommand; import com.craisinlord.antarchy.content.command.DimensionalTearCommand; import com.craisinlord.antarchy.content.command.GravityCommand; +import com.craisinlord.antarchy.content.command.RoyalCommand; import com.craisinlord.antarchy.content.time.TimeDilationCommand; import net.neoforged.bus.api.SubscribeEvent; import net.neoforged.fml.common.EventBusSubscriber; @@ -22,5 +23,6 @@ public final class AntarchyNeoforgeEvents { CaterpillarCommand.register(event.getDispatcher()); DimensionalTearCommand.register(event.getDispatcher()); TimeDilationCommand.register(event.getDispatcher()); + RoyalCommand.register(event.getDispatcher()); } } diff --git a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/client/AntarchyNeoForgeClient.java b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/client/AntarchyNeoForgeClient.java index c7c19106..5a8f2ba2 100644 --- a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/client/AntarchyNeoForgeClient.java +++ b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/client/AntarchyNeoForgeClient.java @@ -331,6 +331,7 @@ public final class AntarchyNeoForgeClient { @SubscribeEvent public static void registerMenuScreens(RegisterMenuScreensEvent event) { event.register(AntarchyNeoforgeMisc.DORRIE_INVENTORY_MENU.get(), com.craisinlord.antarchy.content.client.screen.DorrieInventoryScreen::new); + event.register(AntarchyNeoforgeMisc.ROYAL_JUDGMENT_MENU.get(), com.craisinlord.antarchy.content.client.screen.RoyalJudgmentScreen::new); } @SubscribeEvent @@ -578,6 +579,7 @@ public final class AntarchyNeoForgeClient { registerGeoItemExtension(event, AntarchyNeoforgeItems.WATER_CANNON.get(), HumanoidModel.ArmPose.CROSSBOW_HOLD); registerGeoItemExtension(event, AntarchyNeoforgeItems.BATTLE_AXE.get()); registerGeoItemExtension(event, AntarchyNeoforgeItems.BIG_BERTHA.get()); + registerGeoItemExtension(event, AntarchyNeoforgeItems.ROYAL_GUARDIAN_SWORD.get()); } @SubscribeEvent diff --git a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoForgeEvents.java b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoForgeEvents.java index cf1d4f20..43ad4a76 100644 --- a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoForgeEvents.java +++ b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoForgeEvents.java @@ -1276,7 +1276,9 @@ public final class AntarchyNeoForgeEvents { event.getBuilder().addMix(Potions.AWKWARD, AntarchyNeoforgeItems.KING_SCALE.get(), AntarchyNeoforgeMisc.COMMAND); event.getBuilder().addMix(AntarchyNeoforgeMisc.COMMAND, Items.REDSTONE, AntarchyNeoforgeMisc.LONG_COMMAND); event.getBuilder().addMix(Potions.AWKWARD, AntarchyNeoforgeItems.QUEEN_SCALE.get(), AntarchyNeoforgeMisc.TIME_DILATION); - event.getBuilder().addMix(AntarchyNeoforgeMisc.TIME_DILATION, Items.REDSTONE, AntarchyNeoforgeMisc.LONG_TIME_DILATION); + event.getBuilder().addMix(AntarchyNeoforgeMisc.TIME_DILATION, Items.GLOWSTONE_DUST, AntarchyNeoforgeMisc.LONG_TIME_DILATION); + event.getBuilder().addMix(AntarchyNeoforgeMisc.TIME_DILATION, Items.FERMENTED_SPIDER_EYE, AntarchyNeoforgeMisc.TIME_CONTRACTION); + event.getBuilder().addMix(AntarchyNeoforgeMisc.TIME_CONTRACTION, Items.GLOWSTONE_DUST, AntarchyNeoforgeMisc.LONG_TIME_CONTRACTION); } diff --git a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeBlocks.java b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeBlocks.java index b4d01b56..0e35c95d 100644 --- a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeBlocks.java +++ b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeBlocks.java @@ -766,7 +766,7 @@ public final class AntarchyNeoforgeBlocks { public static final DeferredBlock CHISELED_LOAM_BRICKS = BLOCKS.register("chiseled_loam_bricks", () -> new Block(BlockBehaviour.Properties.ofFullCopy(Blocks.MUD_BRICKS))); public static final DeferredBlock MUCUS = BLOCKS.register("mucus", - () -> new MucusBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.GLOW_LICHEN).friction(0.98F).lightLevel(state -> 0).sound(SoundType.SLIME_BLOCK))); + () -> new MucusBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.GLOW_LICHEN).friction(0.995F).lightLevel(state -> 0).sound(SoundType.SLIME_BLOCK))); public static final DeferredBlock DREAM_SANDSTONE = BLOCKS.register("dream_sandstone", () -> new DreamSandstoneBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.SANDSTONE))); public static final DeferredBlock CHISELED_DREAM_SANDSTONE = BLOCKS.register("chiseled_dream_sandstone", diff --git a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeMisc.java b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeMisc.java index cd05a4ec..601d6bce 100644 --- a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeMisc.java +++ b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeMisc.java @@ -9,6 +9,7 @@ import com.craisinlord.antarchy.content.effect.GrowthMobEffect; import com.craisinlord.antarchy.content.effect.InvertedMobEffect; import com.craisinlord.antarchy.content.effect.CommandedMobEffect; import com.craisinlord.antarchy.content.effect.DilatedMobEffect; +import com.craisinlord.antarchy.content.effect.ContractedMobEffect; import com.craisinlord.antarchy.content.effect.ParalyzedMobEffect; import com.craisinlord.antarchy.content.effect.ShrinkMobEffect; import com.craisinlord.antarchy.content.effect.StinkyMobEffect; @@ -124,6 +125,10 @@ public final class AntarchyNeoforgeMisc { "dorrie_inventory", () -> new MenuType<>(com.craisinlord.antarchy.content.menu.DorrieInventoryMenu::new, FeatureFlags.DEFAULT_FLAGS) ); + public static final DeferredHolder, MenuType> ROYAL_JUDGMENT_MENU = MENU_TYPES.register( + "royal_judgment", + () -> new MenuType<>(com.craisinlord.antarchy.content.menu.RoyalJudgmentMenu::new, FeatureFlags.DEFAULT_FLAGS) + ); // Mob effects public static final DeferredHolder DREAD = MOB_EFFECTS.register("dread", DreadMobEffect::new); @@ -131,6 +136,7 @@ public final class AntarchyNeoforgeMisc { public static final DeferredHolder INVERTED = MOB_EFFECTS.register("inverted", InvertedMobEffect::new); public static final DeferredHolder COMMANDED = MOB_EFFECTS.register("commanded", CommandedMobEffect::new); public static final DeferredHolder DILATED = MOB_EFFECTS.register("dilated", DilatedMobEffect::new); + public static final DeferredHolder CONTRACTED = MOB_EFFECTS.register("contracted", ContractedMobEffect::new); public static final DeferredHolder STINKY = MOB_EFFECTS.register("stinky", StinkyMobEffect::new); public static final DeferredHolder GOOPED = MOB_EFFECTS.register("gooped", GoopedMobEffect::new); public static final DeferredHolder BLOODGLASS_WARD = MOB_EFFECTS.register("bloodglass_ward", com.craisinlord.antarchy.content.effect.BloodglassWardEffect::new); @@ -149,9 +155,13 @@ public final class AntarchyNeoforgeMisc { public static final DeferredHolder LONG_COMMAND = POTIONS.register("long_command", () -> new Potion("command", new MobEffectInstance(COMMANDED, 1200))); public static final DeferredHolder TIME_DILATION = POTIONS.register("time_dilation", - () -> new Potion(new MobEffectInstance(DILATED, 300))); + () -> new Potion(new MobEffectInstance(DILATED, 1200))); public static final DeferredHolder LONG_TIME_DILATION = POTIONS.register("long_time_dilation", - () -> new Potion("time_dilation", new MobEffectInstance(DILATED, 600))); + () -> new Potion("time_dilation", new MobEffectInstance(DILATED, 1200, 1))); + public static final DeferredHolder TIME_CONTRACTION = POTIONS.register("time_contraction", + () -> new Potion(new MobEffectInstance(CONTRACTED, 1200))); + public static final DeferredHolder LONG_TIME_CONTRACTION = POTIONS.register("long_time_contraction", + () -> new Potion("time_contraction", new MobEffectInstance(CONTRACTED, 1200, 1))); public static final DeferredHolder STINKY_POTION = POTIONS.register("stinky", () -> new Potion(new MobEffectInstance(STINKY, 1200))); public static final DeferredHolder LONG_STINKY = POTIONS.register("long_stinky", diff --git a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeSpawnPlacements.java b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeSpawnPlacements.java index 47010d6d..59290e05 100644 --- a/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeSpawnPlacements.java +++ b/neoforge-1.21.1/src/main/java/com/craisinlord/antarchy/neoforge/registry/AntarchyNeoforgeSpawnPlacements.java @@ -41,6 +41,7 @@ public class AntarchyNeoforgeSpawnPlacements { event.register(AntarchyNeoforgeEntites.OCTOPUS_BOMB.get(), SpawnPlacementTypes.IN_WATER, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, OctopusBombEntity::canSpawn, RegisterSpawnPlacementsEvent.Operation.OR); event.register(AntarchyNeoforgeEntites.NIGHTMARE.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, NightmareEntity::canSpawn, RegisterSpawnPlacementsEvent.Operation.OR); event.register(AntarchyNeoforgeEntites.MOLEWORM.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, MolewormEntity::canSpawn, RegisterSpawnPlacementsEvent.Operation.OR); + event.register(AntarchyNeoforgeEntites.WORM.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, WormEntity::canSpawn, RegisterSpawnPlacementsEvent.Operation.OR); event.register(AntarchyNeoforgeEntites.MANTIS.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, MantisEntity::canSpawn, RegisterSpawnPlacementsEvent.Operation.OR); event.register(AntarchyNeoforgeEntites.ALPHA_MANTIS.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, AlphaMantisEntity::checkAlphaMantisSpawnRules, RegisterSpawnPlacementsEvent.Operation.OR); event.register(AntarchyNeoforgeEntites.MOLEVORE.get(), SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, MolevoreEntity::canSpawn, RegisterSpawnPlacementsEvent.Operation.OR);