added languages, summonign kraken now requires bad omen, fix villager trade crash

This commit is contained in:
craisinlord committed 2026-07-18 12:09:24 -05:00
1 parent 6ce167decb
commit cb278b04c6
19 files changed
+8582 -36

No files matched your search

@@ -100,6 +100,7 @@ public final class AntarchyConfigModuleNeoforge {
AntarchySettings.setKrakenProjectileDamageTakenMultiplier(AntarchyMobsConfig.krakenProjectileDamageTakenMultiplier());
AntarchySettings.setKrakenSquidSpawnEnabled(AntarchyMobsConfig.krakenSquidSpawnEnabled());
AntarchySettings.setKrakenMassSpawnEnabled(AntarchyMobsConfig.krakenMassSpawnEnabled());
AntarchySettings.setKrakenRequireBadOmenToSummon(AntarchyMobsConfig.krakenRequireBadOmenToSummon());
AntarchySettings.setBrutalflyHealth(AntarchyMobsConfig.brutalflyHealth());
AntarchySettings.setBrutalflySwipeDamage(AntarchyMobsConfig.brutalflySwipeDamage());
@@ -72,6 +72,7 @@ public final class AntarchyMobsConfig {
private static final ModConfigSpec.DoubleValue KRAKEN_PROJECTILE_DAMAGE_TAKEN_MULTIPLIER;
private static final ModConfigSpec.BooleanValue KRAKEN_SQUID_SPAWN_ENABLED;
private static final ModConfigSpec.BooleanValue KRAKEN_MASS_SPAWN_ENABLED;
private static final ModConfigSpec.BooleanValue KRAKEN_REQUIRE_BAD_OMEN_TO_SUMMON;
// Brutalfly
@@ -374,6 +375,7 @@ public final class AntarchyMobsConfig {
KRAKEN_PROJECTILE_DAMAGE_TAKEN_MULTIPLIER = b.comment("Damage multiplier from projectiles. 0.5 means 50% damage.") .defineInRange("projectileDamageTakenMultiplier", 0.5D, 0.0D, 10.0D);
KRAKEN_SQUID_SPAWN_ENABLED = b.comment("If true, a player killing a Missile Squid has a 1/100 chance to spawn a single Kraken nearby.") .define("squidSpawnEnabled", true);
KRAKEN_MASS_SPAWN_ENABLED = b.comment("If true, a player killing a Missile Squid has a 1/500 chance to spawn 10 Krakens. Independent from the single spawn.").define("massSpawnEnabled", true);
KRAKEN_REQUIRE_BAD_OMEN_TO_SUMMON = b.comment("If true, the killer must have Bad Omen to summon a single Kraken; chance scales with Bad Omen level. Mass spawn is unaffected by level but still requires Bad Omen when this is on.").define("requireBadOmenToSummon", true);
b.pop();
@@ -639,6 +641,7 @@ public final class AntarchyMobsConfig {
static double krakenProjectileDamageTakenMultiplier() { return KRAKEN_PROJECTILE_DAMAGE_TAKEN_MULTIPLIER.get(); }
static boolean krakenSquidSpawnEnabled() { return KRAKEN_SQUID_SPAWN_ENABLED.get(); }
static boolean krakenMassSpawnEnabled() { return KRAKEN_MASS_SPAWN_ENABLED.get(); }
static boolean krakenRequireBadOmenToSummon() { return KRAKEN_REQUIRE_BAD_OMEN_TO_SUMMON.get(); }
static double brutalflyHealth() { return BRUTALFLY_HEALTH.get(); }
static double brutalflySwipeDamage() { return BRUTALFLY_SWIPE_DAMAGE.get(); }
@@ -156,12 +156,19 @@ public final class AntarchyNeoForgeEvents {
return;
}
if (!(event.getEntity().level() instanceof ServerLevel serverLevel)) return;
if (!(event.getEntity().getKillCredit() instanceof net.minecraft.world.entity.player.Player)) return;
if (!(event.getEntity().getKillCredit() instanceof Player killer)) return;
boolean requireBadOmen = AntarchySettings.krakenRequireBadOmenToSummon();
int badOmenLevel = badOmenLevel(killer);
if (requireBadOmen && badOmenLevel <= 0) return;
BlockPos deathPos = event.getEntity().blockPosition();
if (AntarchySettings.krakenSquidSpawnEnabled() && serverLevel.random.nextInt(100) == 0) {
spawnKrakens(serverLevel, deathPos, 1);
if (AntarchySettings.krakenSquidSpawnEnabled()) {
int chanceDenominator = requireBadOmen ? Math.max(1, 100 / badOmenLevel) : 100;
if (serverLevel.random.nextInt(chanceDenominator) == 0) {
spawnKrakens(serverLevel, deathPos, 1);
}
}
if (AntarchySettings.krakenMassSpawnEnabled() && serverLevel.random.nextInt(500) == 0) {
@@ -169,6 +176,11 @@ public final class AntarchyNeoForgeEvents {
}
}
private static int badOmenLevel(Player player) {
MobEffectInstance effect = player.getEffect(MobEffects.BAD_OMEN);
return effect != null ? effect.getAmplifier() + 1 : 0;
}
public static void onPermanentPortalSacrifice(LivingDeathEvent event) {
PermanentPortalManager.handleSacrifice(event.getEntity());
}