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