added all the changes and loot tabels
This commit is contained in:
1 parent
313c54e8d6
commit
05c9dd5e66
61 files changed
+738
-108
No files matched your search
@@ -218,13 +218,13 @@ public final class AntarchySettings {
|
||||
private static int basiliskPreyPetrifyTicks = 200;
|
||||
private static boolean diamondMinecartEnabled = true;
|
||||
private static boolean diamondMinecartPlacesRails = true;
|
||||
private static double diamondMinecartCruiseSpeed = 0.6D;
|
||||
private static double diamondMinecartMaxSpeed = 1.0D;
|
||||
private static double diamondMinecartAcceleration = 0.03D;
|
||||
private static double diamondMinecartDeceleration = 0.04D;
|
||||
private static double diamondMinecartCoastDeceleration = 0.01D;
|
||||
private static boolean diamondMinecartMobDamageEnabled = true;
|
||||
private static double diamondMinecartMaxMobDamage = 8.0D;
|
||||
private static double diamondMinecartCruiseSpeed = 0.0D;
|
||||
private static double diamondMinecartMaxSpeed = 0.55D;
|
||||
private static double diamondMinecartAcceleration = 0.02D;
|
||||
private static double diamondMinecartDeceleration = 0.05D;
|
||||
private static double diamondMinecartCoastDeceleration = 0.02D;
|
||||
private static boolean diamondMinecartMobDamageEnabled = false;
|
||||
private static double diamondMinecartMaxMobDamage = 4.0D;
|
||||
private static boolean dreadHallucinationSoundsEnabled = true;
|
||||
private static double dreadHallucinationSoundMinInterval = 3.0D;
|
||||
private static double dreadHallucinationSoundMaxInterval = 10.0D;
|
||||
|
||||
+18
@@ -229,10 +229,17 @@ public class HerculesBeetleEntity extends TamableAnimal implements GeoEntity, Fl
|
||||
@Override
|
||||
public boolean canUse() {
|
||||
return !HerculesBeetleEntity.this.isKnockedDown()
|
||||
&& !HerculesBeetleEntity.this.isLeashed()
|
||||
&& !HerculesBeetleEntity.this.isVehicle()
|
||||
&& !HerculesBeetleEntity.this.isInBusyAnimation()
|
||||
&& super.canUse();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canContinueToUse() {
|
||||
return !HerculesBeetleEntity.this.isLeashed()
|
||||
&& super.canContinueToUse();
|
||||
}
|
||||
});
|
||||
this.goalSelector.addGoal(3, new LookAtPlayerGoal(this, Player.class, 16.0F));
|
||||
this.goalSelector.addGoal(4, new RandomLookAroundGoal(this));
|
||||
@@ -364,6 +371,10 @@ public class HerculesBeetleEntity extends TamableAnimal implements GeoEntity, Fl
|
||||
|
||||
if (this.isKnockedDown()) {
|
||||
this.tickKnockedDown();
|
||||
} else if (this.isLeashed()) {
|
||||
this.getNavigation().stop();
|
||||
this.setTarget(null);
|
||||
this.updateAmbientAnimation();
|
||||
} else if (this.chargeTicksRemaining > 0 || this.getAnimationState() == ANIM_CHARGE) {
|
||||
this.tickCharge();
|
||||
} else if (this.isInBusyAnimation()) {
|
||||
@@ -1402,6 +1413,11 @@ public class HerculesBeetleEntity extends TamableAnimal implements GeoEntity, Fl
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canBeLeashed(Player player) {
|
||||
return this.isTame() && super.canBeLeashed(player);
|
||||
}
|
||||
|
||||
private final class HerculesCombatGoal extends Goal {
|
||||
HerculesCombatGoal() {
|
||||
this.setFlags(EnumSet.of(Flag.MOVE, Flag.LOOK));
|
||||
@@ -1410,6 +1426,7 @@ public class HerculesBeetleEntity extends TamableAnimal implements GeoEntity, Fl
|
||||
@Override
|
||||
public boolean canUse() {
|
||||
return !HerculesBeetleEntity.this.isTame()
|
||||
&& !HerculesBeetleEntity.this.isLeashed()
|
||||
&& !HerculesBeetleEntity.this.isKnockedDown()
|
||||
&& HerculesBeetleEntity.this.getTarget() != null
|
||||
&& HerculesBeetleEntity.this.canAttack(HerculesBeetleEntity.this.getTarget());
|
||||
@@ -1421,6 +1438,7 @@ public class HerculesBeetleEntity extends TamableAnimal implements GeoEntity, Fl
|
||||
return target != null
|
||||
&& target.isAlive()
|
||||
&& !HerculesBeetleEntity.this.isTame()
|
||||
&& !HerculesBeetleEntity.this.isLeashed()
|
||||
&& !HerculesBeetleEntity.this.isKnockedDown()
|
||||
&& HerculesBeetleEntity.this.canAttack(target);
|
||||
}
|
||||
|
||||
+74
@@ -0,0 +1,74 @@
|
||||
package com.craisinlord.antarchy.content.gravity;
|
||||
|
||||
import com.craisinlord.antarchy.content.AntarchyObjects;
|
||||
import net.minecraft.world.entity.Entity;
|
||||
import net.minecraft.world.entity.LivingEntity;
|
||||
|
||||
public final class AntarchyMountedGravityHelper {
|
||||
private static final AntarchyGravityTransition STACK_TRANSITION = new AntarchyGravityTransition(12);
|
||||
|
||||
private AntarchyMountedGravityHelper() {
|
||||
}
|
||||
|
||||
public static void syncConnectedStack(Entity entity) {
|
||||
if (entity == null || entity.level().isClientSide()) {
|
||||
return;
|
||||
}
|
||||
syncRootStack(entity.getRootVehicle(), null);
|
||||
}
|
||||
|
||||
public static void syncConnectedStackIgnoring(Entity entity, LivingEntity ignoredEffectSource) {
|
||||
if (entity == null || entity.level().isClientSide()) {
|
||||
return;
|
||||
}
|
||||
syncRootStack(entity.getRootVehicle(), ignoredEffectSource);
|
||||
}
|
||||
|
||||
public static void syncSeparatedStacks(Entity previousVehicle, Entity detachedEntity) {
|
||||
if (previousVehicle != null && !previousVehicle.level().isClientSide()) {
|
||||
syncRootStack(previousVehicle.getRootVehicle(), null);
|
||||
}
|
||||
if (detachedEntity != null && !detachedEntity.level().isClientSide()) {
|
||||
syncRootStack(detachedEntity.getRootVehicle(), null);
|
||||
}
|
||||
}
|
||||
|
||||
private static void syncRootStack(Entity root, LivingEntity ignoredEffectSource) {
|
||||
boolean shouldInvert = stackHasInvertedEffect(root, ignoredEffectSource);
|
||||
applyGravityState(root, shouldInvert);
|
||||
for (Entity passenger : root.getIndirectPassengers()) {
|
||||
applyGravityState(passenger, shouldInvert);
|
||||
}
|
||||
}
|
||||
|
||||
private static boolean stackHasInvertedEffect(Entity root, LivingEntity ignoredEffectSource) {
|
||||
if (hasInvertedEffect(root, ignoredEffectSource)) {
|
||||
return true;
|
||||
}
|
||||
for (Entity passenger : root.getIndirectPassengers()) {
|
||||
if (hasInvertedEffect(passenger, ignoredEffectSource)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private static boolean hasInvertedEffect(Entity entity, LivingEntity ignoredEffectSource) {
|
||||
return entity instanceof LivingEntity living
|
||||
&& living != ignoredEffectSource
|
||||
&& living.hasEffect(AntarchyObjects.INVERTED_EFFECT.get());
|
||||
}
|
||||
|
||||
private static void applyGravityState(Entity entity, boolean shouldInvert) {
|
||||
if (shouldInvert) {
|
||||
if (AntarchyGravityApi.getGravityDirection(entity) != AntarchyGravityDirection.UP) {
|
||||
AntarchyGravityApi.setForcedGravityDirection(entity, AntarchyGravityDirection.UP, STACK_TRANSITION);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (AntarchyGravityApi.isGravityForced(entity)) {
|
||||
AntarchyGravityApi.setGravityDirection(entity, AntarchyGravityDirection.DOWN, false, STACK_TRANSITION);
|
||||
}
|
||||
}
|
||||
}
|
||||
+8
@@ -34,6 +34,14 @@ public class DiamondMinecartItem extends Item {
|
||||
@Override
|
||||
public void appendHoverText(ItemStack stack, Level level, List<Component> tooltipComponents, TooltipFlag tooltipFlag) {
|
||||
super.appendHoverText(stack, level, tooltipComponents, tooltipFlag);
|
||||
if (!AntarchySettings.diamondMinecartEnabled()) {
|
||||
tooltipComponents.add(Component.literal("Currently behaves like a regular minecart.").withStyle(ChatFormatting.GRAY));
|
||||
return;
|
||||
}
|
||||
tooltipComponents.add(Component.literal("Hold W to accelerate and S to brake.").withStyle(ChatFormatting.GRAY));
|
||||
if (AntarchySettings.diamondMinecartPlacesRails()) {
|
||||
tooltipComponents.add(Component.literal("Places rails from your inventory while ridden.").withStyle(ChatFormatting.DARK_AQUA));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+34
@@ -0,0 +1,34 @@
|
||||
package com.craisinlord.antarchy.mixins.gravity;
|
||||
|
||||
import com.craisinlord.antarchy.content.gravity.AntarchyMountedGravityHelper;
|
||||
import net.minecraft.world.entity.Entity;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.Unique;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||
|
||||
@Mixin(Entity.class)
|
||||
public abstract class EntityMountedGravityMixin {
|
||||
@Unique
|
||||
private Entity antarchy$previousVehicle;
|
||||
|
||||
@Inject(method = "startRiding(Lnet/minecraft/world/entity/Entity;Z)Z", at = @At("RETURN"))
|
||||
private void antarchy$syncMountedStack(Entity vehicle, boolean force, CallbackInfoReturnable<Boolean> cir) {
|
||||
if (cir.getReturnValue()) {
|
||||
AntarchyMountedGravityHelper.syncConnectedStack((Entity) (Object) this);
|
||||
}
|
||||
}
|
||||
|
||||
@Inject(method = "stopRiding", at = @At("HEAD"))
|
||||
private void antarchy$capturePreviousVehicle(CallbackInfo ci) {
|
||||
this.antarchy$previousVehicle = ((Entity) (Object) this).getVehicle();
|
||||
}
|
||||
|
||||
@Inject(method = "stopRiding", at = @At("TAIL"))
|
||||
private void antarchy$syncDismountedStacks(CallbackInfo ci) {
|
||||
AntarchyMountedGravityHelper.syncSeparatedStacks(this.antarchy$previousVehicle, (Entity) (Object) this);
|
||||
this.antarchy$previousVehicle = null;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"category": "building",
|
||||
"key": {
|
||||
"D": {
|
||||
"tag": "c:deepslates"
|
||||
},
|
||||
"B": {
|
||||
"item": "antarchy:broodfruit"
|
||||
}
|
||||
},
|
||||
"pattern": [
|
||||
"DDD",
|
||||
"DBD",
|
||||
"DDD"
|
||||
],
|
||||
"result": {
|
||||
"count": 8,
|
||||
"item": "antarchy:bloodstone"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"category": "building",
|
||||
"key": {
|
||||
"S": {
|
||||
"tag": "c:stones"
|
||||
},
|
||||
"C": {
|
||||
"item": "antarchy:chitin"
|
||||
}
|
||||
},
|
||||
"pattern": [
|
||||
"SSS",
|
||||
"SCS",
|
||||
"SSS"
|
||||
],
|
||||
"result": {
|
||||
"count": 8,
|
||||
"item": "antarchy:myrmite"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"replace": false,
|
||||
"values": [
|
||||
"minecraft:deepslate"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"replace": false,
|
||||
"values": [
|
||||
"minecraft:stone"
|
||||
]
|
||||
}
|
||||
@@ -43,10 +43,10 @@ public final class AntarchySettings {
|
||||
private static double bomberExplosionDamage = 8.0D;
|
||||
private static double bomberExplosionRadius = 4.0D;
|
||||
private static double redAntAttackDamage = 3.0D;
|
||||
private static double ultimateSwordAttackDamage = 30.0D;
|
||||
private static double ultimatePickaxeAttackDamage = 22.0D;
|
||||
private static double ultimateAxeAttackDamage = 38.0D;
|
||||
private static double ultimateShovelAttackDamage = 24.0D;
|
||||
private static double ultimateSwordAttackDamage = 34.0D;
|
||||
private static double ultimatePickaxeAttackDamage = 24.0D;
|
||||
private static double ultimateAxeAttackDamage = 42.0D;
|
||||
private static double ultimateShovelAttackDamage = 26.0D;
|
||||
private static double ultimateHoeAttackDamage = 8.0D;
|
||||
private static double ultimateBowAttackDamage = 18.0D;
|
||||
private static double ultimateBowPlayerHeal = 8.0D;
|
||||
@@ -55,8 +55,8 @@ public final class AntarchySettings {
|
||||
private static double ultimateCrossbowAttackDamage = 8.0D;
|
||||
private static double ultimateCrossbowChargeSpeedMultiplier = 0.25D;
|
||||
private static double ultimateMaceDamageMultiplier = 1.5D;
|
||||
private static double battleAxeAttackDamage = 46.0D;
|
||||
private static double bigBerthaAttackDamage = 55.0D;
|
||||
private static double battleAxeAttackDamage = 50.0D;
|
||||
private static double bigBerthaAttackDamage = 62.0D;
|
||||
private static double bigBerthaReachBonus = 3.0D;
|
||||
private static double bigBerthaAttackSpeed = -3.0D;
|
||||
private static double attitudeAdjusterBaseDamage = 47.0D;
|
||||
@@ -100,23 +100,23 @@ public final class AntarchySettings {
|
||||
private static int ultimateMaceEnchantability = 20;
|
||||
private static boolean ultimateToolsThreeByThreeEnabled = true;
|
||||
private static boolean ultimateArmorComesEnchanted = true;
|
||||
private static int ultimateHelmetArmorValue = 4;
|
||||
private static int ultimateChestplateArmorValue = 9;
|
||||
private static int ultimateLeggingsArmorValue = 7;
|
||||
private static int ultimateBootsArmorValue = 4;
|
||||
private static double ultimateHelmetArmorToughness = 3.0D;
|
||||
private static double ultimateChestplateArmorToughness = 3.0D;
|
||||
private static double ultimateLeggingsArmorToughness = 3.0D;
|
||||
private static double ultimateBootsArmorToughness = 3.0D;
|
||||
private static int ultimateHelmetArmorValue = 6;
|
||||
private static int ultimateChestplateArmorValue = 11;
|
||||
private static int ultimateLeggingsArmorValue = 9;
|
||||
private static int ultimateBootsArmorValue = 6;
|
||||
private static double ultimateHelmetArmorToughness = 4.5D;
|
||||
private static double ultimateChestplateArmorToughness = 4.5D;
|
||||
private static double ultimateLeggingsArmorToughness = 4.5D;
|
||||
private static double ultimateBootsArmorToughness = 4.5D;
|
||||
private static ResourceKey<Level> brownAntDestinationDimension = dimensionKey("antarchy:elythia");
|
||||
private static ResourceKey<Level> redAntDestinationDimension = dimensionKey("antarchy:thoraxis");
|
||||
private static ResourceKey<Level> termiteDestinationDimension = dimensionKey("antarchy:cavaryn");
|
||||
private static ResourceKey<Level> rainbowAntNonInfinityFallbackDimension = dimensionKey("antarchy:elythia");
|
||||
private static double krakenHealth = 1500.0D;
|
||||
private static double krakenHealth = 1800.0D;
|
||||
private static double krakenAttackDamage = 45.0D;
|
||||
private static double octopusBombHealth = 100.0D;
|
||||
private static double octopusBombAttackDamage = 16.0D;
|
||||
private static double brutalflyHealth = 400.0D;
|
||||
private static double brutalflyHealth = 500.0D;
|
||||
private static double brutalflySwipeDamage = 15.0D;
|
||||
private static double brutalflySpitDamage = 5.0D;
|
||||
private static double mantisHealth = 50.0D;
|
||||
@@ -124,7 +124,7 @@ public final class AntarchySettings {
|
||||
private static double mantisMovementSpeed = 0.42D;
|
||||
private static double mantisFlyingSpeed = 0.77D;
|
||||
private static boolean mantisIgnoreLightLevel = false;
|
||||
private static double alphaMantisHealth = 250.0D;
|
||||
private static double alphaMantisHealth = 380.0D;
|
||||
private static double alphaMantisAttackDamage = 18.0D;
|
||||
private static double alphaMantisMovementSpeed = 0.546D;
|
||||
private static double alphaMantisFlyingSpeed = 0.77D;
|
||||
@@ -145,8 +145,8 @@ public final class AntarchySettings {
|
||||
private static double squidzookaLaunchVelocity = 2.1D;
|
||||
private static double rpoLauncherCooldownSeconds = 1.0D;
|
||||
private static double rpoLauncherLaunchVelocity = 1.8D;
|
||||
private static double rpoLauncherExplosionDamage = 30.0D;
|
||||
private static double rpoLauncherExplosionRadius = 13.5D;
|
||||
private static double rpoLauncherExplosionDamage = 34.0D;
|
||||
private static double rpoLauncherExplosionRadius = 14.0D;
|
||||
private static double sizeRayCooldownSeconds = 1.0D;
|
||||
private static boolean invertProjectilesFromInvertedPlayers = false;
|
||||
private static boolean gravityGunEnabled = true;
|
||||
@@ -179,26 +179,26 @@ public final class AntarchySettings {
|
||||
private static double dreamSandEffectDurationSeconds = 7.0D;
|
||||
private static double dreamSandFallingBlockGravityMultiplier = 0.4D;
|
||||
private static boolean ichorWitherEnabled = true;
|
||||
private static int nightmareHelmetArmorValue = 3;
|
||||
private static int nightmareChestplateArmorValue = 8;
|
||||
private static int nightmareLeggingsArmorValue = 6;
|
||||
private static int nightmareBootsArmorValue = 3;
|
||||
private static double nightmareHelmetArmorToughness = 3.0D;
|
||||
private static double nightmareChestplateArmorToughness = 3.0D;
|
||||
private static double nightmareLeggingsArmorToughness = 3.0D;
|
||||
private static double nightmareBootsArmorToughness = 3.0D;
|
||||
private static int nightmareHelmetArmorValue = 4;
|
||||
private static int nightmareChestplateArmorValue = 9;
|
||||
private static int nightmareLeggingsArmorValue = 7;
|
||||
private static int nightmareBootsArmorValue = 4;
|
||||
private static double nightmareHelmetArmorToughness = 4.0D;
|
||||
private static double nightmareChestplateArmorToughness = 4.0D;
|
||||
private static double nightmareLeggingsArmorToughness = 4.0D;
|
||||
private static double nightmareBootsArmorToughness = 4.0D;
|
||||
|
||||
private static double nightmareHelmetDoubleDamageChance = 0.04D;
|
||||
private static double nightmareChestplateDoubleDamageChance = 0.06D;
|
||||
private static double nightmareLeggingsDoubleDamageChance = 0.05D;
|
||||
private static double nightmareBootsDoubleDamageChance = 0.03D;
|
||||
private static double nightmareHelmetDoubleDamageChance = 0.05D;
|
||||
private static double nightmareChestplateDoubleDamageChance = 0.07D;
|
||||
private static double nightmareLeggingsDoubleDamageChance = 0.07D;
|
||||
private static double nightmareBootsDoubleDamageChance = 0.05D;
|
||||
|
||||
private static double nightmareSwordBaseDamage = 15.0D;
|
||||
private static double nightmareSwordBaseDamage = 18.0D;
|
||||
|
||||
private static double nightmareSwordScalingFactor = 1.5D;
|
||||
private static boolean basiliskPetrifyingGazeEnabled = true;
|
||||
private static int basiliskSpawnMaxLightLevel = 5;
|
||||
private static double basiliskHealth = 150.0D;
|
||||
private static double basiliskHealth = 320.0D;
|
||||
private static double basiliskAttackDamage = 36.0D;
|
||||
private static double basiliskMovementSpeed = 0.18D;
|
||||
private static double basiliskArmor = 6.0D;
|
||||
@@ -219,13 +219,13 @@ public final class AntarchySettings {
|
||||
private static int basiliskPreyPetrifyTicks = 200;
|
||||
private static boolean diamondMinecartEnabled = true;
|
||||
private static boolean diamondMinecartPlacesRails = true;
|
||||
private static double diamondMinecartCruiseSpeed = 0.6D;
|
||||
private static double diamondMinecartMaxSpeed = 1.0D;
|
||||
private static double diamondMinecartAcceleration = 0.03D;
|
||||
private static double diamondMinecartDeceleration = 0.04D;
|
||||
private static double diamondMinecartCoastDeceleration = 0.01D;
|
||||
private static boolean diamondMinecartMobDamageEnabled = true;
|
||||
private static double diamondMinecartMaxMobDamage = 8.0D;
|
||||
private static double diamondMinecartCruiseSpeed = 0.0D;
|
||||
private static double diamondMinecartMaxSpeed = 0.55D;
|
||||
private static double diamondMinecartAcceleration = 0.02D;
|
||||
private static double diamondMinecartDeceleration = 0.05D;
|
||||
private static double diamondMinecartCoastDeceleration = 0.02D;
|
||||
private static boolean diamondMinecartMobDamageEnabled = false;
|
||||
private static double diamondMinecartMaxMobDamage = 4.0D;
|
||||
private static boolean dreadHallucinationSoundsEnabled = true;
|
||||
private static double dreadHallucinationSoundMinInterval = 3.0D;
|
||||
private static double dreadHallucinationSoundMaxInterval = 10.0D;
|
||||
@@ -272,7 +272,7 @@ public final class AntarchySettings {
|
||||
private static final int reverieAmbientTargetMaxAgeTicks = 40;
|
||||
private static final int reverieAmbientPulseIntervalMinTicks = 12;
|
||||
private static final int reverieAmbientPulseIntervalMaxTicks = 19;
|
||||
private static double emperorScorpionHealth = 300.0D;
|
||||
private static double emperorScorpionHealth = 420.0D;
|
||||
private static double emperorScorpionAttackDamage = 28.0D;
|
||||
private static double emperorScorpionMovementSpeed = 0.384D;
|
||||
private static double emperorScorpionArmor = 22.0D;
|
||||
@@ -306,7 +306,7 @@ public final class AntarchySettings {
|
||||
private static double jumpyBugPounceDamage = 12.0D;
|
||||
private static double jumpyBugCamouflageAlpha = 0.18D;
|
||||
private static double brutalflyArmor = 10.0D;
|
||||
private static double brutalflyArmorToughness = 4.0D;
|
||||
private static double brutalflyArmorToughness = 5.0D;
|
||||
private static double brutalflyKnockbackResistance = 0.7D;
|
||||
private static double brutalflyMovementSpeed = 0.34D;
|
||||
private static double brutalflyFlyingSpeed = 0.55D;
|
||||
@@ -326,25 +326,25 @@ public final class AntarchySettings {
|
||||
private static double toreterrorDamageRange = 25.0D;
|
||||
private static double brutalflyDamageRange = 25.0D;
|
||||
private static double alphaMantisDamageRange = 25.0D;
|
||||
private static float krakenLightningDamagePhaseOne = 6.0F;
|
||||
private static double lucidHealth = 30.0D;
|
||||
private static float krakenLightningDamagePhaseOne = 12.0F;
|
||||
private static double lucidHealth = 70.0D;
|
||||
private static double lucidAttackDamage = 4.0D;
|
||||
private static double lucidMovementSpeed = 0.22D;
|
||||
private static double lucidFlyingSpeed = 0.35D;
|
||||
private static double lucidKnockbackResistance = 0.5D;
|
||||
private static double missileSquidHealth = 50.0D;
|
||||
private static double missileSquidAttackDamage = 6.0D;
|
||||
private static double missileSquidHealth = 60.0D;
|
||||
private static double missileSquidAttackDamage = 9.0D;
|
||||
private static double missileSquidMovementSpeed = 0.84D;
|
||||
private static double missileSquidFlyingSpeed = 0.84D;
|
||||
private static double missileSquidKnockbackResistance = 0.15D;
|
||||
private static double molewormHealth = 8.0D;
|
||||
private static double molewormAttackDamage = 1.0D;
|
||||
private static double molewormMovementSpeed = 0.25D;
|
||||
private static double triffidHealth = 80.0D;
|
||||
private static double triffidHealth = 160.0D;
|
||||
private static double triffidAttackDamage = 10.0D;
|
||||
private static double triffidGrabDamage = 15.0D;
|
||||
private static int triffidSweepHitCooldownTicks = 10;
|
||||
private static double molevoreHealth = 60.0D;
|
||||
private static double molevoreHealth = 140.0D;
|
||||
private static double molevoreAttackDamage = 10.0D;
|
||||
private static double molevoreMovementSpeed = 0.27D;
|
||||
private static double molevoreArmor = 6.0D;
|
||||
@@ -357,7 +357,7 @@ public final class AntarchySettings {
|
||||
private static double molevoreBreakRange = 1.8D;
|
||||
private static double molevoreBreakVerticalRange = 2.2D;
|
||||
private static double molevoreBreakHalfWidth = 1.1D;
|
||||
private static double nightmareHealth = 180.0D;
|
||||
private static double nightmareHealth = 380.0D;
|
||||
private static double nightmareAttackDamage = 16.0D;
|
||||
private static double nightmareMovementSpeed = 0.28D;
|
||||
private static double nightmareFlyingSpeed = 0.3D;
|
||||
@@ -389,7 +389,7 @@ public final class AntarchySettings {
|
||||
private static int bigBerthaBasiliskParalyzeDurationTicks = 80;
|
||||
private static int bigBerthaKrakenSlowTicks = 80;
|
||||
private static double ductTapeRepairPercentPerUse = 0.25D;
|
||||
private static double ultimateArmorKnockbackResistance = 0.1D;
|
||||
private static double ultimateArmorKnockbackResistance = 0.15D;
|
||||
private static double nightmareArmorKnockbackResistance = 0.1D;
|
||||
private static double primordialArmorKnockbackPerPiece = 0.5D;
|
||||
private static double mogglesVisionRadius = 20.0D;
|
||||
@@ -405,18 +405,18 @@ public final class AntarchySettings {
|
||||
private static int bloodCrystalAppleShieldCount = 2;
|
||||
private static int bloodCrystalAppleDurationTicks = 2400;
|
||||
private static int bloodCrystalAppleShieldRechargeTicks = 600;
|
||||
private static int bloodCrystalHardMaxShields = 8;
|
||||
private static int bloodCrystalHardMaxShields = 10;
|
||||
// Armor stats (iron defense, gold durability, 0 toughness by default)
|
||||
private static int bloodCrystalHelmetDefense = 2;
|
||||
private static int bloodCrystalChestplateDefense = 6;
|
||||
private static int bloodCrystalLeggingsDefense = 5;
|
||||
private static int bloodCrystalBootsDefense = 2;
|
||||
private static double bloodCrystalArmorToughness = 0.0;
|
||||
private static int bloodCrystalHelmetDefense = 3;
|
||||
private static int bloodCrystalChestplateDefense = 7;
|
||||
private static int bloodCrystalLeggingsDefense = 6;
|
||||
private static int bloodCrystalBootsDefense = 3;
|
||||
private static double bloodCrystalArmorToughness = 2.0D;
|
||||
private static int bloodCrystalHelmetDurability = 77;
|
||||
private static int bloodCrystalChestplateDurability = 112;
|
||||
private static int bloodCrystalLeggingsDurability = 105;
|
||||
private static int bloodCrystalBootsDurability = 91;
|
||||
private static double toreterrorHealth = 300.0D;
|
||||
private static double toreterrorHealth = 450.0D;
|
||||
private static double toreterrorJumpAttackDamage = 14.0D;
|
||||
private static double toreterrorJumpAttackKnockback = 2.5D;
|
||||
private static double toreterrorSpinDamage = 6.0D;
|
||||
@@ -441,12 +441,29 @@ public final class AntarchySettings {
|
||||
private static double cheepHealth = 8.0D;
|
||||
private static double cheepAttackDamage = 3.0D;
|
||||
private static double dorrieHealth = 60.0D;
|
||||
private static double herculesBeetleHealth = 500.0D;
|
||||
private static double herculesBeetleHealth = 650.0D;
|
||||
private static double herculesBeetleAttackDamage = 30.0D;
|
||||
private static double herculesBeetleChargeDamage = 40.0D;
|
||||
private static double ouranwoodDeerHealth = 20.0D;
|
||||
private static double glimmerHealth = 20.0D;
|
||||
|
||||
private static double lucidArmorToughness = 2.0D;
|
||||
private static double triffidArmorToughness = 3.0D;
|
||||
private static double basiliskArmorToughness = 5.0D;
|
||||
private static double nightmareMobArmorToughness = 5.0D;
|
||||
private static double alphaMantisArmorToughness = 4.0D;
|
||||
private static double herculesBeetleArmorToughness = 4.0D;
|
||||
private static double krakenArmorToughness = 6.0D;
|
||||
private static double nightmareMobArmor = 10.0D;
|
||||
|
||||
private static double bossMagicPerHitCapFraction = 0.12D;
|
||||
private static int bossMagicWindowTicks = 20;
|
||||
private static double bossMagicWindowCapFraction = 0.20D;
|
||||
private static double bossMagicWardReductionFraction = 0.5D;
|
||||
private static int bossMagicWardDurationTicks = 60;
|
||||
private static int bossMagicWardTriggerBreaches = 2;
|
||||
private static java.util.List<String> magicBurstDamageNamespaces = new java.util.ArrayList<>(java.util.List.of("irons_spellbooks"));
|
||||
|
||||
private AntarchySettings() {
|
||||
}
|
||||
|
||||
@@ -2439,4 +2456,21 @@ public final class AntarchySettings {
|
||||
public static void setOuranwoodDeerHealth(double v) { ouranwoodDeerHealth = v; }
|
||||
public static double glimmerHealth() { return glimmerHealth; }
|
||||
public static void setGlimmerHealth(double v) { glimmerHealth = v; }
|
||||
|
||||
public static double lucidArmorToughness() { return lucidArmorToughness; }
|
||||
public static double triffidArmorToughness() { return triffidArmorToughness; }
|
||||
public static double basiliskArmorToughness() { return basiliskArmorToughness; }
|
||||
public static double nightmareMobArmorToughness() { return nightmareMobArmorToughness; }
|
||||
public static double alphaMantisArmorToughness() { return alphaMantisArmorToughness; }
|
||||
public static double herculesBeetleArmorToughness() { return herculesBeetleArmorToughness; }
|
||||
public static double krakenArmorToughness() { return krakenArmorToughness; }
|
||||
public static double nightmareMobArmor() { return nightmareMobArmor; }
|
||||
|
||||
public static double bossMagicPerHitCapFraction() { return bossMagicPerHitCapFraction; }
|
||||
public static int bossMagicWindowTicks() { return bossMagicWindowTicks; }
|
||||
public static double bossMagicWindowCapFraction() { return bossMagicWindowCapFraction; }
|
||||
public static double bossMagicWardReductionFraction() { return bossMagicWardReductionFraction; }
|
||||
public static int bossMagicWardDurationTicks() { return bossMagicWardDurationTicks; }
|
||||
public static int bossMagicWardTriggerBreaches() { return bossMagicWardTriggerBreaches; }
|
||||
public static java.util.List<String> magicBurstDamageNamespaces() { return magicBurstDamageNamespaces; }
|
||||
}
|
||||
@@ -54,6 +54,8 @@ public final class AntarchyTags {
|
||||
public static final class DamageType {
|
||||
public static final TagKey<net.minecraft.world.damagesource.DamageType> BYPASSES_BLOODGLASS =
|
||||
TagKey.create(net.minecraft.core.registries.Registries.DAMAGE_TYPE, ResourceLocation.fromNamespaceAndPath("antarchy", "bypasses_bloodglass"));
|
||||
public static final TagKey<net.minecraft.world.damagesource.DamageType> ANTARCHY_MAGIC_BURST =
|
||||
TagKey.create(net.minecraft.core.registries.Registries.DAMAGE_TYPE, ResourceLocation.fromNamespaceAndPath("antarchy", "antarchy_magic_burst"));
|
||||
|
||||
private DamageType() {
|
||||
}
|
||||
@@ -61,6 +63,7 @@ public final class AntarchyTags {
|
||||
|
||||
public static final class Entities {
|
||||
public static final TagKey<EntityType<?>> BASILISK_PREY = TagKey.create(Registries.ENTITY_TYPE, id("basilisk_prey"));
|
||||
public static final TagKey<EntityType<?>> SPELL_RESISTANT_BOSS = TagKey.create(Registries.ENTITY_TYPE, id("spell_resistant_boss"));
|
||||
public static final TagKey<EntityType<?>> DREAM_SAND_LOW_GRAVITY_BLACKLIST = TagKey.create(Registries.ENTITY_TYPE, id("dream_sand_low_gravity_blacklist"));
|
||||
public static final TagKey<EntityType<?>> GRAVITY_GUN_BLACKLIST = TagKey.create(Registries.ENTITY_TYPE, id("gravity_gun_blacklist"));
|
||||
public static final TagKey<EntityType<?>> INVERTED_IMMUNE = TagKey.create(Registries.ENTITY_TYPE, id("inverted_immune"));
|
||||
|
||||
@@ -1,11 +1,29 @@
|
||||
package com.craisinlord.antarchy.content.boss;
|
||||
|
||||
import com.craisinlord.antarchy.config.AntarchySettings;
|
||||
import com.craisinlord.antarchy.content.AntarchyTags;
|
||||
import net.minecraft.resources.ResourceKey;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.damagesource.DamageSource;
|
||||
import net.minecraft.world.entity.LivingEntity;
|
||||
import net.minecraft.world.entity.Mob;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
public final class BossCombatUtil {
|
||||
private BossCombatUtil() {}
|
||||
|
||||
private static final Map<UUID, MagicWindowState> MAGIC_WINDOWS = new HashMap<>();
|
||||
private static final Map<UUID, Long> MAGIC_WARD_EXPIRY_TICK = new HashMap<>();
|
||||
private static final Map<UUID, Integer> MAGIC_WARD_BREACH_COUNTS = new HashMap<>();
|
||||
|
||||
private static final class MagicWindowState {
|
||||
long windowStartTick;
|
||||
float accumulated;
|
||||
}
|
||||
|
||||
public static boolean isOutOfDamageRange(Mob boss, double range) {
|
||||
if (range <= 0.0D) {
|
||||
return false;
|
||||
@@ -19,4 +37,57 @@ public final class BossCombatUtil {
|
||||
boss.setHealth(halfHealth);
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean isMagicBurstSource(DamageSource source) {
|
||||
if (source.is(AntarchyTags.DamageType.ANTARCHY_MAGIC_BURST)) {
|
||||
return true;
|
||||
}
|
||||
ResourceLocation typeId = source.typeHolder().unwrapKey().map(ResourceKey::location).orElse(null);
|
||||
if (typeId == null) {
|
||||
return false;
|
||||
}
|
||||
for (String namespace : AntarchySettings.magicBurstDamageNamespaces()) {
|
||||
if (typeId.getNamespace().equals(namespace)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static float trackMagicBurstWindow(LivingEntity boss, float amount, int windowTicks) {
|
||||
long now = boss.level().getGameTime();
|
||||
MagicWindowState state = MAGIC_WINDOWS.computeIfAbsent(boss.getUUID(), id -> new MagicWindowState());
|
||||
if (now - state.windowStartTick >= windowTicks) {
|
||||
state.windowStartTick = now;
|
||||
state.accumulated = 0.0F;
|
||||
}
|
||||
state.accumulated += amount;
|
||||
return state.accumulated;
|
||||
}
|
||||
|
||||
public static float remainingWindowBudget(LivingEntity boss, float windowCap) {
|
||||
MagicWindowState state = MAGIC_WINDOWS.get(boss.getUUID());
|
||||
if (state == null) {
|
||||
return windowCap;
|
||||
}
|
||||
long now = boss.level().getGameTime();
|
||||
if (now - state.windowStartTick >= AntarchySettings.bossMagicWindowTicks()) {
|
||||
return windowCap;
|
||||
}
|
||||
return Math.max(0.0F, windowCap - state.accumulated);
|
||||
}
|
||||
|
||||
public static boolean isMagicWarded(LivingEntity boss) {
|
||||
Long expiryTick = MAGIC_WARD_EXPIRY_TICK.get(boss.getUUID());
|
||||
return expiryTick != null && boss.level().getGameTime() < expiryTick;
|
||||
}
|
||||
|
||||
public static void triggerMagicWard(LivingEntity boss, int durationTicks) {
|
||||
MAGIC_WARD_EXPIRY_TICK.put(boss.getUUID(), boss.level().getGameTime() + durationTicks);
|
||||
MAGIC_WARD_BREACH_COUNTS.remove(boss.getUUID());
|
||||
}
|
||||
|
||||
public static int recordMagicWindowBreach(LivingEntity boss) {
|
||||
return MAGIC_WARD_BREACH_COUNTS.merge(boss.getUUID(), 1, Integer::sum);
|
||||
}
|
||||
}
|
||||
+4
@@ -68,6 +68,7 @@ public class AlphaMantisEntity extends MantisEntity {
|
||||
.add(Attributes.FLYING_SPEED, AntarchySettings.alphaMantisFlyingSpeed())
|
||||
.add(Attributes.FOLLOW_RANGE, 48.0D)
|
||||
.add(Attributes.ARMOR, 8.0D)
|
||||
.add(Attributes.ARMOR_TOUGHNESS, AntarchySettings.alphaMantisArmorToughness())
|
||||
.add(Attributes.KNOCKBACK_RESISTANCE, 0.8D);
|
||||
}
|
||||
|
||||
@@ -81,6 +82,9 @@ public class AlphaMantisEntity extends MantisEntity {
|
||||
|
||||
@Override
|
||||
public boolean hurt(DamageSource source, float amount) {
|
||||
if (BossCombatUtil.isMagicWarded(this) && BossCombatUtil.isMagicBurstSource(source)) {
|
||||
amount *= (1.0F - (float) AntarchySettings.bossMagicWardReductionFraction());
|
||||
}
|
||||
float preHealth = this.getHealth();
|
||||
boolean hurt = super.hurt(source, amount);
|
||||
if (hurt) {
|
||||
|
||||
+3
@@ -185,6 +185,9 @@ public class EmperorScorpionEntity extends Monster implements GeoEntity {
|
||||
|
||||
@Override
|
||||
public boolean hurt(DamageSource source, float amount) {
|
||||
if (BossCombatUtil.isMagicWarded(this) && BossCombatUtil.isMagicBurstSource(source)) {
|
||||
amount *= (1.0F - (float) AntarchySettings.bossMagicWardReductionFraction());
|
||||
}
|
||||
if (this.isHardenedStateActive()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
+23
-1
@@ -203,7 +203,8 @@ public class HerculesBeetleEntity extends TamableAnimal implements GeoEntity, Fl
|
||||
.add(Attributes.FLYING_SPEED, FLIGHT_SPEED)
|
||||
.add(Attributes.FOLLOW_RANGE, 48.0D)
|
||||
.add(Attributes.KNOCKBACK_RESISTANCE, 0.9D)
|
||||
.add(Attributes.ARMOR, 12.0D);
|
||||
.add(Attributes.ARMOR, 12.0D)
|
||||
.add(Attributes.ARMOR_TOUGHNESS, AntarchySettings.herculesBeetleArmorToughness());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -239,10 +240,17 @@ public class HerculesBeetleEntity extends TamableAnimal implements GeoEntity, Fl
|
||||
@Override
|
||||
public boolean canUse() {
|
||||
return !HerculesBeetleEntity.this.isKnockedDown()
|
||||
&& !HerculesBeetleEntity.this.isLeashed()
|
||||
&& !HerculesBeetleEntity.this.isVehicle()
|
||||
&& !HerculesBeetleEntity.this.isInBusyAnimation()
|
||||
&& super.canUse();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canContinueToUse() {
|
||||
return !HerculesBeetleEntity.this.isLeashed()
|
||||
&& super.canContinueToUse();
|
||||
}
|
||||
});
|
||||
this.goalSelector.addGoal(3, new LookAtPlayerGoal(this, Player.class, 16.0F));
|
||||
this.goalSelector.addGoal(4, new RandomLookAroundGoal(this));
|
||||
@@ -376,6 +384,10 @@ public class HerculesBeetleEntity extends TamableAnimal implements GeoEntity, Fl
|
||||
|
||||
if (this.isKnockedDown()) {
|
||||
this.tickKnockedDown();
|
||||
} else if (this.isLeashed()) {
|
||||
this.getNavigation().stop();
|
||||
this.setTarget(null);
|
||||
this.updateAmbientAnimation();
|
||||
} else if (this.chargeTicksRemaining > 0 || this.getAnimationState() == ANIM_CHARGE) {
|
||||
this.tickCharge();
|
||||
} else if (this.isInBusyAnimation()) {
|
||||
@@ -593,6 +605,9 @@ public class HerculesBeetleEntity extends TamableAnimal implements GeoEntity, Fl
|
||||
|
||||
@Override
|
||||
public boolean hurt(DamageSource source, float amount) {
|
||||
if (BossCombatUtil.isMagicWarded(this) && BossCombatUtil.isMagicBurstSource(source)) {
|
||||
amount *= (1.0F - (float) AntarchySettings.bossMagicWardReductionFraction());
|
||||
}
|
||||
if (source.is(DamageTypeTags.IS_FALL)) {
|
||||
return false;
|
||||
}
|
||||
@@ -1429,6 +1444,11 @@ public class HerculesBeetleEntity extends TamableAnimal implements GeoEntity, Fl
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canBeLeashed() {
|
||||
return this.isTame() && super.canBeLeashed();
|
||||
}
|
||||
|
||||
private final class HerculesCombatGoal extends Goal {
|
||||
HerculesCombatGoal() {
|
||||
this.setFlags(EnumSet.of(Flag.MOVE, Flag.LOOK));
|
||||
@@ -1437,6 +1457,7 @@ public class HerculesBeetleEntity extends TamableAnimal implements GeoEntity, Fl
|
||||
@Override
|
||||
public boolean canUse() {
|
||||
return !HerculesBeetleEntity.this.isKnockedDown()
|
||||
&& !HerculesBeetleEntity.this.isLeashed()
|
||||
&& !HerculesBeetleEntity.this.isVehicle()
|
||||
&& HerculesBeetleEntity.this.getTarget() != null
|
||||
&& HerculesBeetleEntity.this.canAttack(HerculesBeetleEntity.this.getTarget());
|
||||
@@ -1448,6 +1469,7 @@ public class HerculesBeetleEntity extends TamableAnimal implements GeoEntity, Fl
|
||||
return target != null
|
||||
&& target.isAlive()
|
||||
&& !HerculesBeetleEntity.this.isKnockedDown()
|
||||
&& !HerculesBeetleEntity.this.isLeashed()
|
||||
&& !HerculesBeetleEntity.this.isVehicle()
|
||||
&& HerculesBeetleEntity.this.canAttack(target);
|
||||
}
|
||||
|
||||
+3
@@ -270,6 +270,9 @@ public class ToreterrorEntity extends Monster implements GeoEntity {
|
||||
|
||||
@Override
|
||||
public boolean hurt(DamageSource source, float amount) {
|
||||
if (BossCombatUtil.isMagicWarded(this) && BossCombatUtil.isMagicBurstSource(source)) {
|
||||
amount *= (1.0F - (float) AntarchySettings.bossMagicWardReductionFraction());
|
||||
}
|
||||
if (source.is(net.minecraft.world.damagesource.DamageTypes.DROWN)) return false;
|
||||
if (source.is(DamageTypeTags.IS_PROJECTILE)) {
|
||||
amount *= (float) AntarchySettings.toreterrorProjectileDamageMultiplier();
|
||||
|
||||
+2
-1
@@ -99,7 +99,8 @@ public class TriffidEntity extends Monster implements GeoEntity {
|
||||
.add(Attributes.ATTACK_DAMAGE, AntarchySettings.triffidAttackDamage())
|
||||
.add(Attributes.FOLLOW_RANGE, FOLLOW_RANGE)
|
||||
.add(Attributes.KNOCKBACK_RESISTANCE, 1.0D)
|
||||
.add(Attributes.MOVEMENT_SPEED, 0.0D);
|
||||
.add(Attributes.MOVEMENT_SPEED, 0.0D)
|
||||
.add(Attributes.ARMOR_TOUGHNESS, AntarchySettings.triffidArmorToughness());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+11
-1
@@ -4,6 +4,7 @@ import com.craisinlord.antarchy.config.AntarchySettings;
|
||||
import com.craisinlord.antarchy.content.AntarchyObjects;
|
||||
import com.craisinlord.antarchy.content.AntarchySoundEvents;
|
||||
import com.craisinlord.antarchy.content.AntarchyTags;
|
||||
import com.craisinlord.antarchy.content.boss.BossCombatUtil;
|
||||
import com.craisinlord.antarchy.content.damage.AntarchyDamageSources;
|
||||
|
||||
import net.minecraft.core.BlockPos;
|
||||
@@ -112,7 +113,16 @@ public class BasiliskEntity extends Monster implements GeoEntity {
|
||||
.add(Attributes.ATTACK_DAMAGE, AntarchySettings.basiliskAttackDamage())
|
||||
.add(Attributes.ARMOR, AntarchySettings.basiliskArmor())
|
||||
.add(Attributes.KNOCKBACK_RESISTANCE, AntarchySettings.basiliskKnockbackResistance())
|
||||
.add(Attributes.FOLLOW_RANGE, AntarchySettings.basiliskFollowRange());
|
||||
.add(Attributes.FOLLOW_RANGE, AntarchySettings.basiliskFollowRange())
|
||||
.add(Attributes.ARMOR_TOUGHNESS, AntarchySettings.basiliskArmorToughness());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hurt(DamageSource source, float amount) {
|
||||
if (BossCombatUtil.isMagicWarded(this) && BossCombatUtil.isMagicBurstSource(source)) {
|
||||
amount *= (1.0F - (float) AntarchySettings.bossMagicWardReductionFraction());
|
||||
}
|
||||
return super.hurt(source, amount);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+3
@@ -370,6 +370,9 @@ public class BrutalflyEntity extends Monster implements GeoEntity {
|
||||
|
||||
@Override
|
||||
public boolean hurt(DamageSource source, float amount) {
|
||||
if (BossCombatUtil.isMagicWarded(this) && BossCombatUtil.isMagicBurstSource(source)) {
|
||||
amount *= (1.0F - (float) AntarchySettings.bossMagicWardReductionFraction());
|
||||
}
|
||||
if (this.postCocoonInvulnerableTicks > 0) {
|
||||
return false;
|
||||
}
|
||||
|
||||
+5
-1
@@ -153,7 +153,8 @@ public class KrakenEntity extends Monster implements GeoEntity, MultipartEntityO
|
||||
.add(Attributes.FLYING_SPEED, AntarchySettings.krakenFlyingSpeed())
|
||||
.add(Attributes.FOLLOW_RANGE, AntarchySettings.krakenFollowRange())
|
||||
.add(Attributes.KNOCKBACK_RESISTANCE, AntarchySettings.krakenKnockbackResistance())
|
||||
.add(Attributes.ARMOR, AntarchySettings.krakenArmor());
|
||||
.add(Attributes.ARMOR, AntarchySettings.krakenArmor())
|
||||
.add(Attributes.ARMOR_TOUGHNESS, AntarchySettings.krakenArmorToughness());
|
||||
}
|
||||
|
||||
public static boolean canSpawn(EntityType<KrakenEntity> entityType, ServerLevelAccessor level, MobSpawnType spawnReason, BlockPos pos, RandomSource random) {
|
||||
@@ -365,6 +366,9 @@ public class KrakenEntity extends Monster implements GeoEntity, MultipartEntityO
|
||||
|
||||
@Override
|
||||
public boolean hurt(DamageSource source, float amount) {
|
||||
if (BossCombatUtil.isMagicWarded(this) && BossCombatUtil.isMagicBurstSource(source)) {
|
||||
amount *= (1.0F - (float) AntarchySettings.bossMagicWardReductionFraction());
|
||||
}
|
||||
if (source.is(DamageTypeTags.IS_FIRE)
|
||||
|| source.is(DamageTypes.IN_WALL)
|
||||
|| source.is(DamageTypes.LIGHTNING_BOLT)
|
||||
|
||||
+2
-1
@@ -101,7 +101,8 @@ public class LucidEntity extends Monster implements GeoEntity {
|
||||
.add(Attributes.MOVEMENT_SPEED, AntarchySettings.lucidMovementSpeed())
|
||||
.add(Attributes.FLYING_SPEED, AntarchySettings.lucidFlyingSpeed())
|
||||
.add(Attributes.FOLLOW_RANGE, 40.0D)
|
||||
.add(Attributes.KNOCKBACK_RESISTANCE, AntarchySettings.lucidKnockbackResistance());
|
||||
.add(Attributes.KNOCKBACK_RESISTANCE, AntarchySettings.lucidKnockbackResistance())
|
||||
.add(Attributes.ARMOR_TOUGHNESS, AntarchySettings.lucidArmorToughness());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+6
-1
@@ -4,6 +4,7 @@ import com.craisinlord.antarchy.config.AntarchySettings;
|
||||
import com.craisinlord.antarchy.content.AntarchyObjects;
|
||||
import com.craisinlord.antarchy.content.AntarchySoundEvents;
|
||||
import com.craisinlord.antarchy.content.AntarchyTags;
|
||||
import com.craisinlord.antarchy.content.boss.BossCombatUtil;
|
||||
import com.craisinlord.antarchy.content.damage.AntarchyDamageSources;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
@@ -243,7 +244,8 @@ public class NightmareEntity extends Monster implements GeoEntity {
|
||||
.add(Attributes.FLYING_SPEED, 0.375D)
|
||||
.add(Attributes.FOLLOW_RANGE, 48.0D)
|
||||
.add(Attributes.KNOCKBACK_RESISTANCE, 0.75D)
|
||||
.add(Attributes.ARMOR, 8.0D);
|
||||
.add(Attributes.ARMOR, AntarchySettings.nightmareMobArmor())
|
||||
.add(Attributes.ARMOR_TOUGHNESS, AntarchySettings.nightmareMobArmorToughness());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -421,6 +423,9 @@ public class NightmareEntity extends Monster implements GeoEntity {
|
||||
|
||||
@Override
|
||||
public boolean hurt(DamageSource source, float amount) {
|
||||
if (BossCombatUtil.isMagicWarded(this) && BossCombatUtil.isMagicBurstSource(source)) {
|
||||
amount *= (1.0F - (float) AntarchySettings.bossMagicWardReductionFraction());
|
||||
}
|
||||
if (this.isPhaseTransitioning() || this.portalTravelTicks > 0 || this.portalAttackTicks > 0) {
|
||||
return false;
|
||||
}
|
||||
|
||||
+74
@@ -0,0 +1,74 @@
|
||||
package com.craisinlord.antarchy.content.gravity;
|
||||
|
||||
import com.craisinlord.antarchy.content.AntarchyObjects;
|
||||
import net.minecraft.world.entity.Entity;
|
||||
import net.minecraft.world.entity.LivingEntity;
|
||||
|
||||
public final class AntarchyMountedGravityHelper {
|
||||
private static final AntarchyGravityTransition STACK_TRANSITION = new AntarchyGravityTransition(12);
|
||||
|
||||
private AntarchyMountedGravityHelper() {
|
||||
}
|
||||
|
||||
public static void syncConnectedStack(Entity entity) {
|
||||
if (entity == null || entity.level().isClientSide()) {
|
||||
return;
|
||||
}
|
||||
syncRootStack(entity.getRootVehicle(), null);
|
||||
}
|
||||
|
||||
public static void syncConnectedStackIgnoring(Entity entity, LivingEntity ignoredEffectSource) {
|
||||
if (entity == null || entity.level().isClientSide()) {
|
||||
return;
|
||||
}
|
||||
syncRootStack(entity.getRootVehicle(), ignoredEffectSource);
|
||||
}
|
||||
|
||||
public static void syncSeparatedStacks(Entity previousVehicle, Entity detachedEntity) {
|
||||
if (previousVehicle != null && !previousVehicle.level().isClientSide()) {
|
||||
syncRootStack(previousVehicle.getRootVehicle(), null);
|
||||
}
|
||||
if (detachedEntity != null && !detachedEntity.level().isClientSide()) {
|
||||
syncRootStack(detachedEntity.getRootVehicle(), null);
|
||||
}
|
||||
}
|
||||
|
||||
private static void syncRootStack(Entity root, LivingEntity ignoredEffectSource) {
|
||||
boolean shouldInvert = stackHasInvertedEffect(root, ignoredEffectSource);
|
||||
applyGravityState(root, shouldInvert);
|
||||
for (Entity passenger : root.getIndirectPassengers()) {
|
||||
applyGravityState(passenger, shouldInvert);
|
||||
}
|
||||
}
|
||||
|
||||
private static boolean stackHasInvertedEffect(Entity root, LivingEntity ignoredEffectSource) {
|
||||
if (hasInvertedEffect(root, ignoredEffectSource)) {
|
||||
return true;
|
||||
}
|
||||
for (Entity passenger : root.getIndirectPassengers()) {
|
||||
if (hasInvertedEffect(passenger, ignoredEffectSource)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private static boolean hasInvertedEffect(Entity entity, LivingEntity ignoredEffectSource) {
|
||||
return entity instanceof LivingEntity living
|
||||
&& living != ignoredEffectSource
|
||||
&& living.hasEffect(AntarchyObjects.INVERTED_EFFECT.get());
|
||||
}
|
||||
|
||||
private static void applyGravityState(Entity entity, boolean shouldInvert) {
|
||||
if (shouldInvert) {
|
||||
if (AntarchyGravityApi.getGravityDirection(entity) != AntarchyGravityDirection.UP) {
|
||||
AntarchyGravityApi.setForcedGravityDirection(entity, AntarchyGravityDirection.UP, STACK_TRANSITION);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (AntarchyGravityApi.isGravityForced(entity)) {
|
||||
AntarchyGravityApi.setGravityDirection(entity, AntarchyGravityDirection.DOWN, false, STACK_TRANSITION);
|
||||
}
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -356,7 +356,7 @@ public class BigBerthaItem extends SwordItem implements GeoItem {
|
||||
}
|
||||
|
||||
private void applyHerculesHit(Player attacker, LivingEntity target, ServerLevel level) {
|
||||
float bonusDamage = (float) (attacker.getAttributeValue(Attributes.ATTACK_DAMAGE) * 0.5D);
|
||||
float bonusDamage = (float) (attacker.getAttributeValue(Attributes.ATTACK_DAMAGE) * 0.6D);
|
||||
Vec3 push = target.position().subtract(attacker.position()).multiply(1.0D, 0.0D, 1.0D);
|
||||
if (push.lengthSqr() < 1.0E-4D) {
|
||||
push = attacker.getLookAngle().multiply(1.0D, 0.0D, 1.0D);
|
||||
|
||||
+8
@@ -35,6 +35,14 @@ public class DiamondMinecartItem extends Item {
|
||||
@Override
|
||||
public void appendHoverText(ItemStack stack, Item.TooltipContext context, List<Component> tooltipComponents, TooltipFlag tooltipFlag) {
|
||||
super.appendHoverText(stack, context, tooltipComponents, tooltipFlag);
|
||||
if (!AntarchySettings.diamondMinecartEnabled()) {
|
||||
tooltipComponents.add(Component.literal("Currently behaves like a regular minecart.").withStyle(ChatFormatting.GRAY));
|
||||
return;
|
||||
}
|
||||
tooltipComponents.add(Component.literal("Hold W to accelerate and S to brake.").withStyle(ChatFormatting.GRAY));
|
||||
if (AntarchySettings.diamondMinecartPlacesRails()) {
|
||||
tooltipComponents.add(Component.literal("Places rails from your inventory while ridden.").withStyle(ChatFormatting.DARK_AQUA));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+34
@@ -0,0 +1,34 @@
|
||||
package com.craisinlord.antarchy.mixins.gravity;
|
||||
|
||||
import com.craisinlord.antarchy.content.gravity.AntarchyMountedGravityHelper;
|
||||
import net.minecraft.world.entity.Entity;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.Unique;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||
|
||||
@Mixin(Entity.class)
|
||||
public abstract class EntityMountedGravityMixin {
|
||||
@Unique
|
||||
private Entity antarchy$previousVehicle;
|
||||
|
||||
@Inject(method = "startRiding(Lnet/minecraft/world/entity/Entity;Z)Z", at = @At("RETURN"))
|
||||
private void antarchy$syncMountedStack(Entity vehicle, boolean force, CallbackInfoReturnable<Boolean> cir) {
|
||||
if (cir.getReturnValueZ()) {
|
||||
AntarchyMountedGravityHelper.syncConnectedStack((Entity) (Object) this);
|
||||
}
|
||||
}
|
||||
|
||||
@Inject(method = "stopRiding", at = @At("HEAD"))
|
||||
private void antarchy$capturePreviousVehicle(CallbackInfo ci) {
|
||||
this.antarchy$previousVehicle = ((Entity) (Object) this).getVehicle();
|
||||
}
|
||||
|
||||
@Inject(method = "stopRiding", at = @At("TAIL"))
|
||||
private void antarchy$syncDismountedStacks(CallbackInfo ci) {
|
||||
AntarchyMountedGravityHelper.syncSeparatedStacks(this.antarchy$previousVehicle, (Entity) (Object) this);
|
||||
this.antarchy$previousVehicle = null;
|
||||
}
|
||||
}
|
||||
Whitespace-only changes.
Whitespace-only changes.
Whitespace-only changes.
Whitespace-only changes.
Whitespace-only changes.
Whitespace-only changes.
Whitespace-only changes.
Whitespace-only changes.
Binary file not shown.
|
After Width: | Height: | Size: 87 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 81 KiB |
BIN
Binary file not shown.
|
After Width: | Height: | Size: 8.9 KiB |
+12
@@ -0,0 +1,12 @@
|
||||
{"type":"minecraft:chest","pools":[{"rolls":{"type":"minecraft:uniform","min":6,"max":9},"entries":[
|
||||
{"type":"minecraft:item","name":"minecraft:diamond_sword","weight":8,"functions":[{"function":"minecraft:enchant_with_levels","levels":{"type":"minecraft:uniform","min":18,"max":30},"options":"#minecraft:on_random_loot"}]},
|
||||
{"type":"minecraft:item","name":"minecraft:diamond_pickaxe","weight":7,"functions":[{"function":"minecraft:enchant_with_levels","levels":{"type":"minecraft:uniform","min":18,"max":30},"options":"#minecraft:on_random_loot"}]},
|
||||
{"type":"minecraft:item","name":"antarchy:blood_crystal_helmet","weight":2},{"type":"minecraft:item","name":"antarchy:blood_crystal_chestplate","weight":2},{"type":"minecraft:item","name":"antarchy:blood_crystal_leggings","weight":2},{"type":"minecraft:item","name":"antarchy:blood_crystal_boots","weight":2},
|
||||
{"type":"minecraft:item","name":"antarchy:bluestone","weight":14,"functions":[{"function":"minecraft:set_count","count":{"type":"minecraft:uniform","min":8,"max":20}}]},
|
||||
{"type":"minecraft:item","name":"antarchy:nyxite","weight":10,"functions":[{"function":"minecraft:set_count","count":{"type":"minecraft:uniform","min":2,"max":6}}]},
|
||||
{"type":"minecraft:item","name":"antarchy:blood_crystal_shard","weight":12,"functions":[{"function":"minecraft:set_count","count":{"type":"minecraft:uniform","min":2,"max":5}}]},
|
||||
{"type":"minecraft:item","name":"antarchy:blood_crystal_apple","weight":20,"functions":[{"function":"minecraft:set_count","count":{"type":"minecraft:uniform","min":1,"max":3}}]},
|
||||
{"type":"minecraft:item","name":"antarchy:lucid_pearl","weight":4},{"type":"minecraft:item","name":"minecraft:golden_apple","weight":5},
|
||||
{"type":"minecraft:item","name":"minecraft:potion","weight":8,"functions":[{"function":"minecraft:set_potion","id":"antarchy:inversion"}]},{"type":"minecraft:item","name":"minecraft:tipped_arrow","weight":8,"functions":[{"function":"minecraft:set_count","count":{"type":"minecraft:uniform","min":4,"max":12}},{"function":"minecraft:set_potion","id":"antarchy:inversion"}]},
|
||||
{"type":"minecraft:item","name":"minecraft:book","weight":10,"functions":[{"function":"minecraft:enchant_randomly","options":["minecraft:mending","minecraft:unbreaking","minecraft:protection","minecraft:efficiency"]}]}
|
||||
]}],"random_sequence":"antarchy:chests/queen_castle/generic"}
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
{"type":"minecraft:chest","pools":[{"rolls":{"type":"minecraft:uniform","min":7,"max":10},"entries":[
|
||||
{"type":"minecraft:item","name":"antarchy:ultimate_helmet","weight":2},{"type":"minecraft:item","name":"antarchy:ultimate_chestplate","weight":2},{"type":"minecraft:item","name":"antarchy:ultimate_leggings","weight":2},{"type":"minecraft:item","name":"antarchy:ultimate_boots","weight":2},
|
||||
{"type":"minecraft:item","name":"antarchy:blood_crystal_katana","weight":5},{"type":"minecraft:item","name":"antarchy:lucid_pearl","weight":8},
|
||||
{"type":"minecraft:item","name":"antarchy:blood_crystal_shard","weight":14,"functions":[{"function":"minecraft:set_count","count":{"type":"minecraft:uniform","min":3,"max":8}}]},
|
||||
{"type":"minecraft:item","name":"antarchy:blood_crystal_apple","weight":20,"functions":[{"function":"minecraft:set_count","count":{"type":"minecraft:uniform","min":1,"max":4}}]},
|
||||
{"type":"minecraft:item","name":"antarchy:bluestone","weight":14,"functions":[{"function":"minecraft:set_count","count":{"type":"minecraft:uniform","min":10,"max":24}}]},
|
||||
{"type":"minecraft:item","name":"antarchy:nyxite","weight":10,"functions":[{"function":"minecraft:set_count","count":{"type":"minecraft:uniform","min":4,"max":10}}]},
|
||||
{"type":"minecraft:item","name":"antarchy:potent_nyxite","weight":4},{"type":"minecraft:item","name":"minecraft:enchanted_golden_apple","weight":2},
|
||||
{"type":"minecraft:item","name":"minecraft:book","weight":14,"functions":[{"function":"minecraft:enchant_randomly","options":["minecraft:mending","minecraft:unbreaking","minecraft:protection","minecraft:efficiency","minecraft:fortune"]}]},
|
||||
{"type":"minecraft:item","name":"minecraft:potion","weight":8,"functions":[{"function":"minecraft:set_potion","id":"antarchy:inversion"}]},{"type":"minecraft:item","name":"minecraft:tipped_arrow","weight":8,"functions":[{"function":"minecraft:set_count","count":{"type":"minecraft:uniform","min":6,"max":16}},{"function":"minecraft:set_potion","id":"antarchy:inversion"}]},
|
||||
{"type":"minecraft:item","name":"antarchy:titanium_ingot","weight":1},{"type":"minecraft:item","name":"antarchy:uranium_ingot","weight":1}
|
||||
]}],"random_sequence":"antarchy:chests/queen_castle/treasure"}
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
{"type":"minecraft:chest","pools":[{"rolls":{"type":"minecraft:uniform","min":5,"max":8},"entries":[
|
||||
{"type":"minecraft:item","name":"minecraft:arrow","weight":18,"functions":[{"function":"minecraft:set_count","count":{"type":"minecraft:uniform","min":12,"max":32}}]},
|
||||
{"type":"minecraft:item","name":"minecraft:tipped_arrow","weight":8,"functions":[{"function":"minecraft:set_count","count":{"type":"minecraft:uniform","min":2,"max":6}},{"function":"minecraft:set_potion","id":"antarchy:inversion"}]},
|
||||
{"type":"minecraft:item","name":"minecraft:bow","weight":10,"functions":[{"function":"minecraft:enchant_with_levels","levels":{"type":"minecraft:uniform","min":6,"max":18},"options":"#minecraft:on_random_loot"}]},
|
||||
{"type":"minecraft:item","name":"minecraft:iron_sword","weight":8},{"type":"minecraft:item","name":"minecraft:shield","weight":8},
|
||||
{"type":"minecraft:item","name":"antarchy:bluestone","weight":15,"functions":[{"function":"minecraft:set_count","count":{"type":"minecraft:uniform","min":3,"max":10}}]},
|
||||
{"type":"minecraft:item","name":"antarchy:blood_crystal_shard","weight":10,"functions":[{"function":"minecraft:set_count","count":{"type":"minecraft:uniform","min":1,"max":3}}]},
|
||||
{"type":"minecraft:item","name":"antarchy:blood_crystal_apple","weight":14,"functions":[{"function":"minecraft:set_count","count":{"type":"minecraft:uniform","min":1,"max":2}}]},
|
||||
{"type":"minecraft:item","name":"antarchy:scorpion_whip","weight":3},{"type":"minecraft:item","name":"minecraft:golden_apple","weight":3},
|
||||
{"type":"minecraft:item","name":"minecraft:potion","weight":7,"functions":[{"function":"minecraft:set_potion","id":"antarchy:inversion"}]},
|
||||
{"type":"minecraft:item","name":"minecraft:book","weight":5,"functions":[{"function":"minecraft:enchant_randomly","options":["minecraft:mending","minecraft:unbreaking","minecraft:sharpness"]}]}
|
||||
]}],"random_sequence":"antarchy:chests/scorpion_arena/generic"}
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
{"type":"minecraft:chest","pools":[{"rolls":{"type":"minecraft:uniform","min":6,"max":9},"entries":[
|
||||
{"type":"minecraft:item","name":"antarchy:scorpion_whip","weight":8},{"type":"minecraft:item","name":"antarchy:blood_crystal_katana","weight":4},
|
||||
{"type":"minecraft:item","name":"antarchy:blood_crystal_helmet","weight":2},{"type":"minecraft:item","name":"antarchy:blood_crystal_chestplate","weight":2},{"type":"minecraft:item","name":"antarchy:blood_crystal_leggings","weight":2},{"type":"minecraft:item","name":"antarchy:blood_crystal_boots","weight":2},
|
||||
{"type":"minecraft:item","name":"antarchy:lucid_pearl","weight":3},{"type":"minecraft:item","name":"antarchy:blood_crystal_shard","weight":12,"functions":[{"function":"minecraft:set_count","count":{"type":"minecraft:uniform","min":2,"max":6}}]},
|
||||
{"type":"minecraft:item","name":"antarchy:blood_crystal_apple","weight":16,"functions":[{"function":"minecraft:set_count","count":{"type":"minecraft:uniform","min":1,"max":3}}]},
|
||||
{"type":"minecraft:item","name":"antarchy:bluestone","weight":12,"functions":[{"function":"minecraft:set_count","count":{"type":"minecraft:uniform","min":8,"max":18}}]},
|
||||
{"type":"minecraft:item","name":"antarchy:nyxite","weight":8,"functions":[{"function":"minecraft:set_count","count":{"type":"minecraft:uniform","min":2,"max":6}}]},
|
||||
{"type":"minecraft:item","name":"minecraft:diamond_sword","weight":7,"functions":[{"function":"minecraft:enchant_with_levels","levels":{"type":"minecraft:uniform","min":18,"max":30},"options":"#minecraft:on_random_loot"}]},
|
||||
{"type":"minecraft:item","name":"minecraft:book","weight":8,"functions":[{"function":"minecraft:enchant_randomly","options":["minecraft:mending","minecraft:unbreaking","minecraft:sharpness","minecraft:protection"]}]},
|
||||
{"type":"minecraft:item","name":"minecraft:tipped_arrow","weight":6,"functions":[{"function":"minecraft:set_count","count":{"type":"minecraft:uniform","min":4,"max":10}},{"function":"minecraft:set_potion","id":"antarchy:inversion"}]},
|
||||
{"type":"minecraft:item","name":"minecraft:potion","weight":6,"functions":[{"function":"minecraft:set_potion","id":"antarchy:inversion"}]},
|
||||
{"type":"minecraft:item","name":"antarchy:titanium_ingot","weight":1},{"type":"minecraft:item","name":"antarchy:uranium_ingot","weight":1}
|
||||
]}],"random_sequence":"antarchy:chests/scorpion_arena/treasure"}
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
{"type":"minecraft:chest","pools":[{"rolls":{"type":"minecraft:uniform","min":5,"max":8},"entries":[
|
||||
{"type":"minecraft:item","name":"minecraft:arrow","weight":16,"functions":[{"function":"minecraft:set_count","count":{"type":"minecraft:uniform","min":10,"max":28}}]},
|
||||
{"type":"minecraft:item","name":"minecraft:tipped_arrow","weight":9,"functions":[{"function":"minecraft:set_count","count":{"type":"minecraft:uniform","min":2,"max":6}},{"function":"minecraft:set_potion","id":"antarchy:inversion"}]},
|
||||
{"type":"minecraft:item","name":"minecraft:iron_pickaxe","weight":10},{"type":"minecraft:item","name":"minecraft:iron_sword","weight":8},
|
||||
{"type":"minecraft:item","name":"antarchy:bluestone","weight":15,"functions":[{"function":"minecraft:set_count","count":{"type":"minecraft:uniform","min":4,"max":12}}]},
|
||||
{"type":"minecraft:item","name":"antarchy:nyxite","weight":10,"functions":[{"function":"minecraft:set_count","count":{"type":"minecraft:uniform","min":1,"max":4}}]},
|
||||
{"type":"minecraft:item","name":"antarchy:lucid_eye","weight":8,"functions":[{"function":"minecraft:set_count","count":{"type":"minecraft:uniform","min":1,"max":2}}]},
|
||||
{"type":"minecraft:item","name":"antarchy:blood_crystal_shard","weight":9,"functions":[{"function":"minecraft:set_count","count":{"type":"minecraft:uniform","min":1,"max":3}}]},
|
||||
{"type":"minecraft:item","name":"antarchy:blood_crystal_apple","weight":15,"functions":[{"function":"minecraft:set_count","count":{"type":"minecraft:uniform","min":1,"max":2}}]},
|
||||
{"type":"minecraft:item","name":"minecraft:potion","weight":8,"functions":[{"function":"minecraft:set_potion","id":"antarchy:inversion"}]},
|
||||
{"type":"minecraft:item","name":"minecraft:book","weight":6,"functions":[{"function":"minecraft:enchant_randomly","options":["minecraft:mending","minecraft:unbreaking","minecraft:efficiency"]}]}
|
||||
]}],"random_sequence":"antarchy:chests/underside_ruins/generic"}
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
{"type":"minecraft:chest","pools":[{"rolls":{"type":"minecraft:uniform","min":6,"max":9},"entries":[
|
||||
{"type":"minecraft:item","name":"antarchy:lucid_pearl","weight":8},{"type":"minecraft:item","name":"antarchy:blood_crystal_katana","weight":3},
|
||||
{"type":"minecraft:item","name":"antarchy:blood_crystal_helmet","weight":2},{"type":"minecraft:item","name":"antarchy:blood_crystal_chestplate","weight":2},{"type":"minecraft:item","name":"antarchy:blood_crystal_leggings","weight":2},{"type":"minecraft:item","name":"antarchy:blood_crystal_boots","weight":2},
|
||||
{"type":"minecraft:item","name":"antarchy:potent_nyxite","weight":4},{"type":"minecraft:item","name":"antarchy:nyxite","weight":10,"functions":[{"function":"minecraft:set_count","count":{"type":"minecraft:uniform","min":3,"max":8}}]},
|
||||
{"type":"minecraft:item","name":"antarchy:bluestone","weight":13,"functions":[{"function":"minecraft:set_count","count":{"type":"minecraft:uniform","min":8,"max":20}}]},
|
||||
{"type":"minecraft:item","name":"antarchy:blood_crystal_shard","weight":12,"functions":[{"function":"minecraft:set_count","count":{"type":"minecraft:uniform","min":2,"max":6}}]},
|
||||
{"type":"minecraft:item","name":"antarchy:blood_crystal_apple","weight":16,"functions":[{"function":"minecraft:set_count","count":{"type":"minecraft:uniform","min":1,"max":3}}]},
|
||||
{"type":"minecraft:item","name":"minecraft:diamond_pickaxe","weight":8,"functions":[{"function":"minecraft:enchant_with_levels","levels":{"type":"minecraft:uniform","min":18,"max":30},"options":"#minecraft:on_random_loot"}]},
|
||||
{"type":"minecraft:item","name":"minecraft:book","weight":10,"functions":[{"function":"minecraft:enchant_randomly","options":["minecraft:mending","minecraft:unbreaking","minecraft:efficiency","minecraft:protection"]}]},
|
||||
{"type":"minecraft:item","name":"minecraft:tipped_arrow","weight":7,"functions":[{"function":"minecraft:set_count","count":{"type":"minecraft:uniform","min":4,"max":10}},{"function":"minecraft:set_potion","id":"antarchy:inversion"}]},
|
||||
{"type":"minecraft:item","name":"minecraft:potion","weight":7,"functions":[{"function":"minecraft:set_potion","id":"antarchy:inversion"}]},
|
||||
{"type":"minecraft:item","name":"antarchy:titanium_ingot","weight":1},{"type":"minecraft:item","name":"antarchy:uranium_ingot","weight":1}
|
||||
]}],"random_sequence":"antarchy:chests/underside_ruins/treasure"}
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
{"type":"minecraft:chest","pools":[{"rolls":{"type":"minecraft:uniform","min":6,"max":9},"entries":[
|
||||
{"type":"minecraft:item","name":"minecraft:diamond_sword","weight":8,"functions":[{"function":"minecraft:enchant_with_levels","levels":{"type":"minecraft:uniform","min":24,"max":35},"options":"#minecraft:on_random_loot"}]},{"type":"minecraft:item","name":"minecraft:diamond_pickaxe","weight":8,"functions":[{"function":"minecraft:enchant_with_levels","levels":{"type":"minecraft:uniform","min":24,"max":35},"options":"#minecraft:on_random_loot"}]},
|
||||
{"type":"minecraft:item","name":"antarchy:blood_crystal_katana","weight":6},{"type":"minecraft:item","name":"antarchy:blood_crystal_helmet","weight":2},{"type":"minecraft:item","name":"antarchy:blood_crystal_chestplate","weight":2},{"type":"minecraft:item","name":"antarchy:blood_crystal_leggings","weight":2},{"type":"minecraft:item","name":"antarchy:blood_crystal_boots","weight":2},{"type":"minecraft:item","name":"antarchy:lucid_pearl","weight":5},
|
||||
{"type":"minecraft:item","name":"antarchy:blood_crystal_shard","weight":14,"functions":[{"function":"minecraft:set_count","count":{"type":"minecraft:uniform","min":3,"max":8}}]},{"type":"minecraft:item","name":"antarchy:blood_crystal_apple","weight":22,"functions":[{"function":"minecraft:set_count","count":{"type":"minecraft:uniform","min":1,"max":4}}]},
|
||||
{"type":"minecraft:item","name":"antarchy:bluestone","weight":14,"functions":[{"function":"minecraft:set_count","count":{"type":"minecraft:uniform","min":10,"max":24}}]},{"type":"minecraft:item","name":"antarchy:nyxite","weight":10,"functions":[{"function":"minecraft:set_count","count":{"type":"minecraft:uniform","min":4,"max":10}}]},
|
||||
{"type":"minecraft:item","name":"minecraft:enchanted_golden_apple","weight":2},{"type":"minecraft:item","name":"minecraft:potion","weight":9,"functions":[{"function":"minecraft:set_potion","id":"antarchy:inversion"}]},{"type":"minecraft:item","name":"minecraft:tipped_arrow","weight":9,"functions":[{"function":"minecraft:set_count","count":{"type":"minecraft:uniform","min":6,"max":16}},{"function":"minecraft:set_potion","id":"antarchy:inversion"}]},{"type":"minecraft:item","name":"minecraft:book","weight":14,"functions":[{"function":"minecraft:enchant_randomly","options":["minecraft:mending","minecraft:unbreaking","minecraft:protection","minecraft:efficiency","minecraft:fortune"]}]},{"type":"minecraft:item","name":"antarchy:titanium_ingot","weight":1},{"type":"minecraft:item","name":"antarchy:uranium_ingot","weight":1}
|
||||
]}],"random_sequence":"antarchy:spawners/queen_castle/hard"}
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
{"type":"minecraft:chest","pools":[{"rolls":{"type":"minecraft:uniform","min":5,"max":8},"entries":[
|
||||
{"type":"minecraft:item","name":"minecraft:diamond_sword","weight":8,"functions":[{"function":"minecraft:enchant_with_levels","levels":{"type":"minecraft:uniform","min":18,"max":28},"options":"#minecraft:on_random_loot"}]},{"type":"minecraft:item","name":"minecraft:diamond_pickaxe","weight":7,"functions":[{"function":"minecraft:enchant_with_levels","levels":{"type":"minecraft:uniform","min":18,"max":28},"options":"#minecraft:on_random_loot"}]},
|
||||
{"type":"minecraft:item","name":"antarchy:blood_crystal_katana","weight":4},{"type":"minecraft:item","name":"antarchy:blood_crystal_chestplate","weight":2},{"type":"minecraft:item","name":"antarchy:blood_crystal_leggings","weight":2},
|
||||
{"type":"minecraft:item","name":"antarchy:bluestone","weight":15,"functions":[{"function":"minecraft:set_count","count":{"type":"minecraft:uniform","min":8,"max":18}}]},{"type":"minecraft:item","name":"antarchy:nyxite","weight":10,"functions":[{"function":"minecraft:set_count","count":{"type":"minecraft:uniform","min":2,"max":6}}]},
|
||||
{"type":"minecraft:item","name":"antarchy:blood_crystal_shard","weight":12,"functions":[{"function":"minecraft:set_count","count":{"type":"minecraft:uniform","min":2,"max":5}}]},{"type":"minecraft:item","name":"antarchy:blood_crystal_apple","weight":21,"functions":[{"function":"minecraft:set_count","count":{"type":"minecraft:uniform","min":1,"max":3}}]},
|
||||
{"type":"minecraft:item","name":"minecraft:potion","weight":9,"functions":[{"function":"minecraft:set_potion","id":"antarchy:inversion"}]},{"type":"minecraft:item","name":"minecraft:tipped_arrow","weight":9,"functions":[{"function":"minecraft:set_count","count":{"type":"minecraft:uniform","min":4,"max":12}},{"function":"minecraft:set_potion","id":"antarchy:inversion"}]},{"type":"minecraft:item","name":"minecraft:book","weight":11,"functions":[{"function":"minecraft:enchant_randomly","options":["minecraft:mending","minecraft:unbreaking","minecraft:protection","minecraft:efficiency"]}]}
|
||||
]}],"random_sequence":"antarchy:spawners/queen_castle/medium"}
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
{"type":"minecraft:chest","pools":[{"rolls":{"type":"minecraft:uniform","min":5,"max":8},"entries":[
|
||||
{"type":"minecraft:item","name":"minecraft:diamond_sword","weight":8,"functions":[{"function":"minecraft:enchant_with_levels","levels":{"type":"minecraft:uniform","min":20,"max":30},"options":"#minecraft:on_random_loot"}]},{"type":"minecraft:item","name":"minecraft:diamond_pickaxe","weight":7,"functions":[{"function":"minecraft:enchant_with_levels","levels":{"type":"minecraft:uniform","min":20,"max":30},"options":"#minecraft:on_random_loot"}]},
|
||||
{"type":"minecraft:item","name":"antarchy:blood_crystal_katana","weight":5},{"type":"minecraft:item","name":"antarchy:blood_crystal_chestplate","weight":2},{"type":"minecraft:item","name":"antarchy:blood_crystal_leggings","weight":2},
|
||||
{"type":"minecraft:item","name":"antarchy:bluestone","weight":14,"functions":[{"function":"minecraft:set_count","count":{"type":"minecraft:uniform","min":8,"max":20}}]},
|
||||
{"type":"minecraft:item","name":"antarchy:blood_crystal_shard","weight":12,"functions":[{"function":"minecraft:set_count","count":{"type":"minecraft:uniform","min":2,"max":6}}]},
|
||||
{"type":"minecraft:item","name":"antarchy:blood_crystal_apple","weight":20,"functions":[{"function":"minecraft:set_count","count":{"type":"minecraft:uniform","min":1,"max":3}}]},
|
||||
{"type":"minecraft:item","name":"minecraft:tipped_arrow","weight":8,"functions":[{"function":"minecraft:set_count","count":{"type":"minecraft:uniform","min":4,"max":10}},{"function":"minecraft:set_potion","id":"antarchy:inversion"}]},{"type":"minecraft:item","name":"minecraft:potion","weight":8,"functions":[{"function":"minecraft:set_potion","id":"antarchy:inversion"}]},
|
||||
{"type":"minecraft:item","name":"minecraft:book","weight":10,"functions":[{"function":"minecraft:enchant_randomly","options":["minecraft:mending","minecraft:unbreaking","minecraft:sharpness","minecraft:protection"]}]},{"type":"minecraft:item","name":"antarchy:titanium_ingot","weight":1},{"type":"minecraft:item","name":"antarchy:uranium_ingot","weight":1}
|
||||
]}],"random_sequence":"antarchy:spawners/scorpion_arena/hard"}
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
{"type":"minecraft:chest","pools":[{"rolls":{"type":"minecraft:uniform","min":4,"max":7},"entries":[
|
||||
{"type":"minecraft:item","name":"minecraft:arrow","weight":16,"functions":[{"function":"minecraft:set_count","count":{"type":"minecraft:uniform","min":14,"max":36}}]},
|
||||
{"type":"minecraft:item","name":"minecraft:tipped_arrow","weight":8,"functions":[{"function":"minecraft:set_count","count":{"type":"minecraft:uniform","min":2,"max":6}},{"function":"minecraft:set_potion","id":"antarchy:inversion"}]},
|
||||
{"type":"minecraft:item","name":"minecraft:iron_sword","weight":9},{"type":"minecraft:item","name":"antarchy:blood_crystal_katana","weight":2},
|
||||
{"type":"minecraft:item","name":"antarchy:blood_crystal_helmet","weight":2},{"type":"minecraft:item","name":"antarchy:blood_crystal_boots","weight":2},
|
||||
{"type":"minecraft:item","name":"antarchy:bluestone","weight":14,"functions":[{"function":"minecraft:set_count","count":{"type":"minecraft:uniform","min":5,"max":14}}]},
|
||||
{"type":"minecraft:item","name":"antarchy:blood_crystal_shard","weight":10,"functions":[{"function":"minecraft:set_count","count":{"type":"minecraft:uniform","min":1,"max":3}}]},
|
||||
{"type":"minecraft:item","name":"antarchy:blood_crystal_apple","weight":18,"functions":[{"function":"minecraft:set_count","count":{"type":"minecraft:uniform","min":1,"max":2}}]},
|
||||
{"type":"minecraft:item","name":"minecraft:potion","weight":8,"functions":[{"function":"minecraft:set_potion","id":"antarchy:inversion"}]},{"type":"minecraft:item","name":"minecraft:book","weight":6,"functions":[{"function":"minecraft:enchant_randomly","options":["minecraft:mending","minecraft:unbreaking","minecraft:sharpness"]}]}
|
||||
]}],"random_sequence":"antarchy:spawners/scorpion_arena/medium"}
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
{"type":"minecraft:chest","pools":[{"rolls":{"type":"minecraft:uniform","min":5,"max":8},"entries":[
|
||||
{"type":"minecraft:item","name":"minecraft:diamond_pickaxe","weight":8,"functions":[{"function":"minecraft:enchant_with_levels","levels":{"type":"minecraft:uniform","min":20,"max":30},"options":"#minecraft:on_random_loot"}]},{"type":"minecraft:item","name":"minecraft:diamond_sword","weight":7,"functions":[{"function":"minecraft:enchant_with_levels","levels":{"type":"minecraft:uniform","min":20,"max":30},"options":"#minecraft:on_random_loot"}]},
|
||||
{"type":"minecraft:item","name":"antarchy:blood_crystal_katana","weight":4},{"type":"minecraft:item","name":"antarchy:blood_crystal_chestplate","weight":2},{"type":"minecraft:item","name":"antarchy:blood_crystal_leggings","weight":2},{"type":"minecraft:item","name":"antarchy:lucid_pearl","weight":4},
|
||||
{"type":"minecraft:item","name":"antarchy:bluestone","weight":14,"functions":[{"function":"minecraft:set_count","count":{"type":"minecraft:uniform","min":8,"max":20}}]},{"type":"minecraft:item","name":"antarchy:nyxite","weight":10,"functions":[{"function":"minecraft:set_count","count":{"type":"minecraft:uniform","min":3,"max":8}}]},
|
||||
{"type":"minecraft:item","name":"antarchy:blood_crystal_apple","weight":20,"functions":[{"function":"minecraft:set_count","count":{"type":"minecraft:uniform","min":1,"max":3}}]},
|
||||
{"type":"minecraft:item","name":"minecraft:tipped_arrow","weight":8,"functions":[{"function":"minecraft:set_count","count":{"type":"minecraft:uniform","min":4,"max":10}},{"function":"minecraft:set_potion","id":"antarchy:inversion"}]},{"type":"minecraft:item","name":"minecraft:potion","weight":8,"functions":[{"function":"minecraft:set_potion","id":"antarchy:inversion"}]},{"type":"minecraft:item","name":"minecraft:book","weight":10,"functions":[{"function":"minecraft:enchant_randomly","options":["minecraft:mending","minecraft:unbreaking","minecraft:efficiency","minecraft:fortune"]}]},{"type":"minecraft:item","name":"antarchy:titanium_ingot","weight":1},{"type":"minecraft:item","name":"antarchy:uranium_ingot","weight":1}
|
||||
]}],"random_sequence":"antarchy:spawners/underside_ruins/hard"}
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
{"type":"minecraft:chest","pools":[{"rolls":{"type":"minecraft:uniform","min":4,"max":7},"entries":[
|
||||
{"type":"minecraft:item","name":"minecraft:iron_pickaxe","weight":10},{"type":"minecraft:item","name":"minecraft:arrow","weight":15,"functions":[{"function":"minecraft:set_count","count":{"type":"minecraft:uniform","min":12,"max":32}}]},
|
||||
{"type":"minecraft:item","name":"minecraft:tipped_arrow","weight":9,"functions":[{"function":"minecraft:set_count","count":{"type":"minecraft:uniform","min":2,"max":6}},{"function":"minecraft:set_potion","id":"antarchy:inversion"}]},
|
||||
{"type":"minecraft:item","name":"antarchy:blood_crystal_katana","weight":2},{"type":"minecraft:item","name":"antarchy:blood_crystal_helmet","weight":2},{"type":"minecraft:item","name":"antarchy:blood_crystal_boots","weight":2},
|
||||
{"type":"minecraft:item","name":"antarchy:bluestone","weight":15,"functions":[{"function":"minecraft:set_count","count":{"type":"minecraft:uniform","min":5,"max":14}}]},
|
||||
{"type":"minecraft:item","name":"antarchy:nyxite","weight":10,"functions":[{"function":"minecraft:set_count","count":{"type":"minecraft:uniform","min":1,"max":4}}]},
|
||||
{"type":"minecraft:item","name":"antarchy:blood_crystal_apple","weight":18,"functions":[{"function":"minecraft:set_count","count":{"type":"minecraft:uniform","min":1,"max":2}}]},
|
||||
{"type":"minecraft:item","name":"minecraft:potion","weight":9,"functions":[{"function":"minecraft:set_potion","id":"antarchy:inversion"}]},{"type":"minecraft:item","name":"minecraft:book","weight":7,"functions":[{"function":"minecraft:enchant_randomly","options":["minecraft:mending","minecraft:unbreaking","minecraft:efficiency"]}]}
|
||||
]}],"random_sequence":"antarchy:spawners/underside_ruins/medium"}
|
||||
Whitespace-only changes.
Whitespace-only changes.
+6
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"values": [
|
||||
"minecraft:magic",
|
||||
"minecraft:indirect_magic"
|
||||
]
|
||||
}
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"values": [
|
||||
"antarchy:basilisk",
|
||||
"antarchy:nightmare",
|
||||
"antarchy:emperor_scorpion",
|
||||
"antarchy:kraken",
|
||||
"antarchy:toreterror",
|
||||
"antarchy:brutalfly",
|
||||
"antarchy:alpha_mantis",
|
||||
"antarchy:hercules_beetle"
|
||||
]
|
||||
}
|
||||
Whitespace-only changes.
Whitespace-only changes.
+1
-1
@@ -236,7 +236,7 @@ public final class AntarchyFabricMisc {
|
||||
SoundEvents.ARMOR_EQUIP_NETHERITE,
|
||||
() -> Ingredient.of(AntarchyFabricItems.PRIMORDIAL_SCUTE.get()),
|
||||
List.of(new ArmorMaterial.Layer(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "primordial"))),
|
||||
3.0F,
|
||||
3.5F,
|
||||
0.1F
|
||||
));
|
||||
|
||||
|
||||
@@ -129,15 +129,15 @@ public final class AntarchyMiscConfig {
|
||||
// Diamond Minecart
|
||||
|
||||
b.push("diamondMinecart");
|
||||
DIAMOND_MINECART_ENABLED = b.comment("Master toggle. If false, acts like a regular minecart.") .define("enabled", true);
|
||||
DIAMOND_MINECART_PLACES_RAILS = b.comment("Whether the cart automatically places rails from the rider's inventory.") .define("placesRails", true);
|
||||
DIAMOND_MINECART_CRUISE_SPEED = b.comment("Cruise speed in blocks/tick while ridden (even without holding W).") .defineInRange("cruiseSpeed", 0.6D, 0.05D, 2.0D);
|
||||
DIAMOND_MINECART_MAX_SPEED = b.comment("Maximum boosted speed in blocks/tick when W is held. Vanilla cap is 0.4.") .defineInRange("maxSpeed", 1.0D, 0.05D, 2.0D);
|
||||
DIAMOND_MINECART_ACCELERATION = b.comment("Speed gained per tick while accelerating.") .defineInRange("acceleration", 0.03D, 0.001D, 0.5D);
|
||||
DIAMOND_MINECART_DECELERATION = b.comment("Speed lost per tick while S is held (active braking).") .defineInRange("deceleration", 0.04D, 0.001D, 0.5D);
|
||||
DIAMOND_MINECART_COAST_DECELERATION = b.comment("Speed lost per tick when neither W nor S is held (coasting friction).") .defineInRange("coastDeceleration", 0.01D, 0.001D, 0.5D);
|
||||
DIAMOND_MINECART_MOB_DAMAGE_ENABLED = b.comment("Whether the cart deals damage to mobs it collides with at speed.") .define("mobDamageEnabled", true);
|
||||
DIAMOND_MINECART_MAX_MOB_DAMAGE = b.comment("Maximum damage dealt at full speed. Scales linearly with current speed.") .defineInRange("maxMobDamage", 8.0D, 0.0D, 200.0D);
|
||||
DIAMOND_MINECART_ENABLED = b.comment("Master toggle for the diamond minecart's custom propulsion and rail-laying behavior.") .define("enabled", true);
|
||||
DIAMOND_MINECART_PLACES_RAILS = b.comment("Whether the cart automatically places normal rails from the rider's inventory.") .define("placesRails", true);
|
||||
DIAMOND_MINECART_CRUISE_SPEED = b.comment("Minimum maintained speed while ridden without holding W. Set to 0 for manual control.") .defineInRange("cruiseSpeed", 0.0D, 0.0D, 2.0D);
|
||||
DIAMOND_MINECART_MAX_SPEED = b.comment("Maximum speed in blocks/tick when W is held. Vanilla rideable minecarts cap at 0.4.") .defineInRange("maxSpeed", 0.55D, 0.05D, 2.0D);
|
||||
DIAMOND_MINECART_ACCELERATION = b.comment("Speed gained per tick while accelerating.") .defineInRange("acceleration", 0.02D, 0.001D, 0.5D);
|
||||
DIAMOND_MINECART_DECELERATION = b.comment("Speed lost per tick while S is held (active braking).") .defineInRange("deceleration", 0.05D, 0.001D, 0.5D);
|
||||
DIAMOND_MINECART_COAST_DECELERATION = b.comment("Speed lost per tick when neither W nor S is held.") .defineInRange("coastDeceleration", 0.02D, 0.001D, 0.5D);
|
||||
DIAMOND_MINECART_MOB_DAMAGE_ENABLED = b.comment("Whether the cart damages mobs it hits while moving.") .define("mobDamageEnabled", false);
|
||||
DIAMOND_MINECART_MAX_MOB_DAMAGE = b.comment("Maximum collision damage dealt at full speed if mob damage is enabled.") .defineInRange("maxMobDamage", 4.0D, 0.0D, 200.0D);
|
||||
b.pop();
|
||||
|
||||
|
||||
|
||||
+2
-8
@@ -1090,10 +1090,7 @@ public final class AntarchyForgeEvents {
|
||||
if (event.getEffectInstance().getEffect() != AntarchyForgeMisc.INVERTED.get()) return;
|
||||
LivingEntity entity = event.getEntity();
|
||||
if (!entity.level().isClientSide()) {
|
||||
com.craisinlord.antarchy.content.gravity.AntarchyGravityApi.setGravityDirection(
|
||||
entity,
|
||||
com.craisinlord.antarchy.content.gravity.AntarchyGravityDirection.DOWN,
|
||||
new com.craisinlord.antarchy.content.gravity.AntarchyGravityTransition(12));
|
||||
com.craisinlord.antarchy.content.gravity.AntarchyMountedGravityHelper.syncConnectedStackIgnoring(entity, entity);
|
||||
if (entity instanceof Player player) {
|
||||
notifyNearbyReveriesOfInversionChange(player);
|
||||
}
|
||||
@@ -1232,10 +1229,7 @@ public final class AntarchyForgeEvents {
|
||||
if (event.getEffect() != AntarchyForgeMisc.INVERTED.get()) return;
|
||||
LivingEntity entity = event.getEntity();
|
||||
if (!entity.level().isClientSide()) {
|
||||
com.craisinlord.antarchy.content.gravity.AntarchyGravityApi.setGravityDirection(
|
||||
entity,
|
||||
com.craisinlord.antarchy.content.gravity.AntarchyGravityDirection.DOWN,
|
||||
new com.craisinlord.antarchy.content.gravity.AntarchyGravityTransition(12));
|
||||
com.craisinlord.antarchy.content.gravity.AntarchyMountedGravityHelper.syncConnectedStackIgnoring(entity, entity);
|
||||
if (entity instanceof Player player) {
|
||||
notifyNearbyReveriesOfInversionChange(player);
|
||||
}
|
||||
|
||||
+9
-9
@@ -129,15 +129,15 @@ public final class AntarchyMiscConfig {
|
||||
// Diamond Minecart
|
||||
|
||||
b.push("diamondMinecart");
|
||||
DIAMOND_MINECART_ENABLED = b.comment("Master toggle. If false, acts like a regular minecart.") .define("enabled", true);
|
||||
DIAMOND_MINECART_PLACES_RAILS = b.comment("Whether the cart automatically places rails from the rider's inventory.") .define("placesRails", true);
|
||||
DIAMOND_MINECART_CRUISE_SPEED = b.comment("Cruise speed in blocks/tick while ridden (even without holding W).") .defineInRange("cruiseSpeed", 0.6D, 0.05D, 2.0D);
|
||||
DIAMOND_MINECART_MAX_SPEED = b.comment("Maximum boosted speed in blocks/tick when W is held. Vanilla cap is 0.4.") .defineInRange("maxSpeed", 1.0D, 0.05D, 2.0D);
|
||||
DIAMOND_MINECART_ACCELERATION = b.comment("Speed gained per tick while accelerating.") .defineInRange("acceleration", 0.03D, 0.001D, 0.5D);
|
||||
DIAMOND_MINECART_DECELERATION = b.comment("Speed lost per tick while S is held (active braking).") .defineInRange("deceleration", 0.04D, 0.001D, 0.5D);
|
||||
DIAMOND_MINECART_COAST_DECELERATION = b.comment("Speed lost per tick when neither W nor S is held (coasting friction).") .defineInRange("coastDeceleration", 0.01D, 0.001D, 0.5D);
|
||||
DIAMOND_MINECART_MOB_DAMAGE_ENABLED = b.comment("Whether the cart deals damage to mobs it collides with at speed.") .define("mobDamageEnabled", true);
|
||||
DIAMOND_MINECART_MAX_MOB_DAMAGE = b.comment("Maximum damage dealt at full speed. Scales linearly with current speed.") .defineInRange("maxMobDamage", 8.0D, 0.0D, 200.0D);
|
||||
DIAMOND_MINECART_ENABLED = b.comment("Master toggle for the diamond minecart's custom propulsion and rail-laying behavior.") .define("enabled", true);
|
||||
DIAMOND_MINECART_PLACES_RAILS = b.comment("Whether the cart automatically places normal rails from the rider's inventory.") .define("placesRails", true);
|
||||
DIAMOND_MINECART_CRUISE_SPEED = b.comment("Minimum maintained speed while ridden without holding W. Set to 0 for manual control.") .defineInRange("cruiseSpeed", 0.0D, 0.0D, 2.0D);
|
||||
DIAMOND_MINECART_MAX_SPEED = b.comment("Maximum speed in blocks/tick when W is held. Vanilla rideable minecarts cap at 0.4.") .defineInRange("maxSpeed", 0.55D, 0.05D, 2.0D);
|
||||
DIAMOND_MINECART_ACCELERATION = b.comment("Speed gained per tick while accelerating.") .defineInRange("acceleration", 0.02D, 0.001D, 0.5D);
|
||||
DIAMOND_MINECART_DECELERATION = b.comment("Speed lost per tick while S is held (active braking).") .defineInRange("deceleration", 0.05D, 0.001D, 0.5D);
|
||||
DIAMOND_MINECART_COAST_DECELERATION = b.comment("Speed lost per tick when neither W nor S is held.") .defineInRange("coastDeceleration", 0.02D, 0.001D, 0.5D);
|
||||
DIAMOND_MINECART_MOB_DAMAGE_ENABLED = b.comment("Whether the cart damages mobs it hits while moving.") .define("mobDamageEnabled", false);
|
||||
DIAMOND_MINECART_MAX_MOB_DAMAGE = b.comment("Maximum collision damage dealt at full speed if mob damage is enabled.") .defineInRange("maxMobDamage", 4.0D, 0.0D, 200.0D);
|
||||
b.pop();
|
||||
|
||||
|
||||
|
||||
+35
-8
@@ -97,6 +97,7 @@ public final class AntarchyNeoForgeEvents {
|
||||
NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeEvents::handleUltimateBowDamage);
|
||||
NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeEvents::handleUltimateCrossbowDamage);
|
||||
NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeEvents::handleNightmareArmorDoubleDamage);
|
||||
NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeEvents::handleBossMagicBurstMitigation);
|
||||
NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeEvents::handleScorpionWhipAttackEntity);
|
||||
NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeEvents::handleAttitudeAdjusterAttackEntity);
|
||||
NeoForge.EVENT_BUS.addListener(AntarchyNeoForgeEvents::handleScorpionWhipLeftClickBlock);
|
||||
@@ -844,6 +845,38 @@ public final class AntarchyNeoForgeEvents {
|
||||
}
|
||||
}
|
||||
|
||||
static void handleBossMagicBurstMitigation(LivingIncomingDamageEvent event) {
|
||||
LivingEntity boss = event.getEntity();
|
||||
if (!boss.getType().is(AntarchyTags.Entities.SPELL_RESISTANT_BOSS)) return;
|
||||
if (!com.craisinlord.antarchy.content.boss.BossCombatUtil.isMagicBurstSource(event.getSource())) return;
|
||||
|
||||
float maxHealth = boss.getMaxHealth();
|
||||
float amount = event.getAmount();
|
||||
|
||||
float perHitCap = maxHealth * (float) AntarchySettings.bossMagicPerHitCapFraction();
|
||||
if (amount > perHitCap) {
|
||||
amount = perHitCap;
|
||||
}
|
||||
|
||||
float windowCap = maxHealth * (float) AntarchySettings.bossMagicWindowCapFraction();
|
||||
float remainingBudget = com.craisinlord.antarchy.content.boss.BossCombatUtil.remainingWindowBudget(boss, windowCap);
|
||||
boolean breachedWindow = amount > remainingBudget;
|
||||
if (breachedWindow) {
|
||||
amount = Math.max(0.0F, remainingBudget);
|
||||
}
|
||||
|
||||
com.craisinlord.antarchy.content.boss.BossCombatUtil.trackMagicBurstWindow(boss, amount, AntarchySettings.bossMagicWindowTicks());
|
||||
|
||||
if (breachedWindow) {
|
||||
int breaches = com.craisinlord.antarchy.content.boss.BossCombatUtil.recordMagicWindowBreach(boss);
|
||||
if (breaches >= AntarchySettings.bossMagicWardTriggerBreaches()) {
|
||||
com.craisinlord.antarchy.content.boss.BossCombatUtil.triggerMagicWard(boss, AntarchySettings.bossMagicWardDurationTicks());
|
||||
}
|
||||
}
|
||||
|
||||
event.setAmount(amount);
|
||||
}
|
||||
|
||||
static void handleAntiwaterDamage(LivingIncomingDamageEvent event) {
|
||||
if (!event.getSource().is(DamageTypes.FALL)) {
|
||||
return;
|
||||
@@ -1103,10 +1136,7 @@ public final class AntarchyNeoForgeEvents {
|
||||
if (!event.getEffectInstance().is(AntarchyNeoforgeMisc.INVERTED)) return;
|
||||
LivingEntity entity = event.getEntity();
|
||||
if (!entity.level().isClientSide()) {
|
||||
com.craisinlord.antarchy.content.gravity.AntarchyGravityApi.setGravityDirection(
|
||||
entity,
|
||||
com.craisinlord.antarchy.content.gravity.AntarchyGravityDirection.DOWN,
|
||||
new com.craisinlord.antarchy.content.gravity.AntarchyGravityTransition(12));
|
||||
com.craisinlord.antarchy.content.gravity.AntarchyMountedGravityHelper.syncConnectedStackIgnoring(entity, entity);
|
||||
if (entity instanceof Player player) {
|
||||
notifyNearbyReveriesOfInversionChange(player);
|
||||
}
|
||||
@@ -1227,10 +1257,7 @@ public final class AntarchyNeoForgeEvents {
|
||||
if (!event.getEffect().is(AntarchyNeoforgeMisc.INVERTED)) return;
|
||||
LivingEntity entity = event.getEntity();
|
||||
if (!entity.level().isClientSide()) {
|
||||
com.craisinlord.antarchy.content.gravity.AntarchyGravityApi.setGravityDirection(
|
||||
entity,
|
||||
com.craisinlord.antarchy.content.gravity.AntarchyGravityDirection.DOWN,
|
||||
new com.craisinlord.antarchy.content.gravity.AntarchyGravityTransition(12));
|
||||
com.craisinlord.antarchy.content.gravity.AntarchyMountedGravityHelper.syncConnectedStackIgnoring(entity, entity);
|
||||
if (entity instanceof Player player) {
|
||||
notifyNearbyReveriesOfInversionChange(player);
|
||||
}
|
||||
|
||||
+1
-1
@@ -134,7 +134,7 @@ public final class AntarchyNeoforgeItems {
|
||||
SoundEvents.ARMOR_EQUIP_NETHERITE,
|
||||
() -> Ingredient.of(PRIMORDIAL_SCUTE.get()),
|
||||
List.of(new ArmorMaterial.Layer(ResourceLocation.fromNamespaceAndPath(Antarchy.MODID, "primordial"))),
|
||||
3.0F,
|
||||
3.5F,
|
||||
0.1F
|
||||
));
|
||||
private static final DeferredHolder<ArmorMaterial, ArmorMaterial> JUMPY_BOOTS_ARMOR_MATERIAL = ARMOR_MATERIALS.register("jumpy_boots",
|
||||
|
||||
Reference in new issue
Block a user