From 2810da8fe199dd51a3f8544801d1d42dcdd5ecb9 Mon Sep 17 00:00:00 2001 From: someaddons Date: Thu, 27 Nov 2025 23:01:04 +0100 Subject: [PATCH] Fix raider fleeing speed reseach amplifier Fix chief sword group speed ability cooldown and difficulty selection Little bit of constants cleanup --- .../effects/fleeingspeedaddition.json | 4 +- .../AbstractEntityMinecoloniesMonster.java | 2 +- .../AbstractEntityMinecoloniesRaider.java | 37 ++++++++----------- .../api/entity/mobs/RaiderMobUtils.java | 2 +- .../mobs/amazons/AbstractEntityAmazon.java | 4 +- .../amazons/AbstractEntityAmazonRaider.java | 4 +- .../barbarians/AbstractEntityBarbarian.java | 4 +- .../AbstractEntityBarbarianRaider.java | 4 +- .../AbstractDrownedEntityPirate.java | 4 +- .../AbstractDrownedEntityPirateRaider.java | 4 +- .../egyptians/AbstractEntityEgyptian.java | 4 +- .../AbstractEntityEgyptianRaider.java | 4 +- .../mobs/pirates/AbstractEntityPirate.java | 4 +- .../pirates/AbstractEntityPirateRaider.java | 4 +- .../mobs/vikings/AbstractEntityNorsemen.java | 4 +- .../vikings/AbstractEntityNorsemenRaider.java | 4 +- .../api/util/constant/Constants.java | 3 -- .../colony/events/raid}/RaiderConstants.java | 32 ++++++++++++---- .../workers/guard/AbstractEntityAIGuard.java | 4 +- .../core/entity/mobs/EntityMercenary.java | 2 +- .../entity/mobs/aitasks/RaiderMeleeAI.java | 24 ++---------- .../entity/mobs/aitasks/RaiderRangedAI.java | 2 +- .../mobs/camp/amazons/EntityAmazonChief.java | 2 +- .../camp/barbarians/EntityChiefBarbarian.java | 2 +- .../EntityDrownedCaptainPirate.java | 2 - .../mobs/camp/egyptians/EntityPharao.java | 4 +- .../camp/norsemen/EntityNorsemenChief.java | 4 +- .../camp/pirates/EntityCaptainPirate.java | 2 - .../amazons/EntityAmazonChiefRaider.java | 2 +- .../EntityChiefBarbarianRaider.java | 2 +- .../raider/egyptians/EntityPharaoRaider.java | 2 +- .../norsemen/EntityNorsemenChiefRaider.java | 2 +- .../entity/mobs/registry/MobAIRegistry.java | 10 ++--- .../defaults/DefaultResearchProvider.java | 2 +- .../core/items/ItemChiefSword.java | 8 ++-- 35 files changed, 93 insertions(+), 111 deletions(-) rename src/main/java/com/minecolonies/{api/util/constant => core/colony/events/raid}/RaiderConstants.java (75%) mode change 100755 => 100644 diff --git a/src/datagen/generated/minecolonies/data/minecolonies/researches/effects/fleeingspeedaddition.json b/src/datagen/generated/minecolonies/data/minecolonies/researches/effects/fleeingspeedaddition.json index 97c4bcacf16..f7176dc8037 100644 --- a/src/datagen/generated/minecolonies/data/minecolonies/researches/effects/fleeingspeedaddition.json +++ b/src/datagen/generated/minecolonies/data/minecolonies/researches/effects/fleeingspeedaddition.json @@ -1,9 +1,9 @@ { "effect": true, "levels": [ + 0.0, 1.0, 2.0, - 3.0, - 5.0 + 3.0 ] } \ No newline at end of file diff --git a/src/main/java/com/minecolonies/api/entity/mobs/AbstractEntityMinecoloniesMonster.java b/src/main/java/com/minecolonies/api/entity/mobs/AbstractEntityMinecoloniesMonster.java index d1aec4c7d7c..f3a9d34bc9c 100644 --- a/src/main/java/com/minecolonies/api/entity/mobs/AbstractEntityMinecoloniesMonster.java +++ b/src/main/java/com/minecolonies/api/entity/mobs/AbstractEntityMinecoloniesMonster.java @@ -38,7 +38,7 @@ import static com.minecolonies.api.entity.citizen.AbstractEntityCitizen.ENTITY_AI_TICKRATE; import static com.minecolonies.api.entity.mobs.RaiderMobUtils.MOB_ATTACK_DAMAGE; import static com.minecolonies.api.util.constant.NbtTagConstants.TAG_SPAWN_POS; -import static com.minecolonies.api.util.constant.RaiderConstants.*; +import static com.minecolonies.core.colony.events.raid.RaiderConstants.*; /** * Abstract for all villain entities. diff --git a/src/main/java/com/minecolonies/api/entity/mobs/AbstractEntityMinecoloniesRaider.java b/src/main/java/com/minecolonies/api/entity/mobs/AbstractEntityMinecoloniesRaider.java index 169c5e05100..cc45d9d99f1 100644 --- a/src/main/java/com/minecolonies/api/entity/mobs/AbstractEntityMinecoloniesRaider.java +++ b/src/main/java/com/minecolonies/api/entity/mobs/AbstractEntityMinecoloniesRaider.java @@ -36,7 +36,7 @@ import static com.minecolonies.api.util.constant.ColonyManagerConstants.NO_COLONY_ID; import static com.minecolonies.api.util.constant.NbtTagConstants.*; -import static com.minecolonies.api.util.constant.RaiderConstants.*; +import static com.minecolonies.core.colony.events.raid.RaiderConstants.*; /** * Abstract for all raider entities. @@ -86,7 +86,7 @@ public abstract class AbstractEntityMinecoloniesRaider extends AbstractEntityMin /** * Current count of ticks. */ - private int currentCount = 0; + private int chiefSpeedCooldown = 0; /** * The world time when the barbarian spawns. @@ -118,11 +118,6 @@ public abstract class AbstractEntityMinecoloniesRaider extends AbstractEntityMin */ private int envDmgCooldown = 0; - /** - * Environmental damage immunity - */ - private boolean envDamageImmunity = false; - /** * Temporary Environmental damage immunity shortly after spawning. */ @@ -302,9 +297,8 @@ public void aiStep() return; } - if (currentTick % (random.nextInt(EVERY_X_TICKS) + 1) == 0) + if (++currentTick % (random.nextInt(EVERY_X_TICKS) + 1) == 0) { - if (worldTimeAtSpawn == 0) { worldTimeAtSpawn = level().getGameTime(); @@ -331,24 +325,23 @@ public void aiStep() registerWithColony(); } - if (currentCount <= 0) + if (--chiefSpeedCooldown <= 0) { - currentCount = COUNTDOWN_SECOND_MULTIPLIER * TIME_TO_COUNTDOWN; + chiefSpeedCooldown = TIME_TO_COUNTDOWN; - if (!this.getMainHandItem().isEmpty() && SPEED_EFFECT != null && this.getMainHandItem().getItem() instanceof IChiefSwordItem - && MinecoloniesAPIProxy.getInstance().getConfig().getServer().raidDifficulty.get() >= BARBARIAN_HORDE_DIFFICULTY_FIVE) + if (!this.getMainHandItem().isEmpty() && this.getMainHandItem().getItem() instanceof IChiefSwordItem + && difficulty > CHIEF_SWORD_SPEED_DIFFICULTY) { - RaiderMobUtils.getBarbariansCloseToEntity(this, SPEED_EFFECT_DISTANCE) - .stream().filter(entity -> !entity.hasEffect(MobEffects.MOVEMENT_SPEED)) - .forEach(entity -> entity.addEffect(new MobEffectInstance(MobEffects.MOVEMENT_SPEED, SPEED_EFFECT_DURATION, SPEED_EFFECT_MULTIPLIER))); + for (AbstractEntityMinecoloniesRaider entity : RaiderMobUtils.getBarbariansCloseToEntity(this, SPEED_EFFECT_DISTANCE)) + { + if (!entity.hasEffect(MobEffects.MOVEMENT_SPEED)) + { + entity.addEffect(new MobEffectInstance(MobEffects.MOVEMENT_SPEED, SPEED_EFFECT_DURATION, SPEED_EFFECT_MULTIPLIER)); + } + } } } - else - { - --currentCount; - } } - currentTick++; if (isRegistered) { @@ -434,7 +427,7 @@ public boolean hurt(@NotNull final DamageSource damageSource, final float damage { if (!(damageSource.getEntity() instanceof LivingEntity) || damageSource.getEntity() instanceof FakePlayer) { - if (envDamageImmunity || tempEnvDamageImmunity) + if (tempEnvDamageImmunity) { return false; } diff --git a/src/main/java/com/minecolonies/api/entity/mobs/RaiderMobUtils.java b/src/main/java/com/minecolonies/api/entity/mobs/RaiderMobUtils.java index 790e9fed15f..5d8b4b2b2b1 100755 --- a/src/main/java/com/minecolonies/api/entity/mobs/RaiderMobUtils.java +++ b/src/main/java/com/minecolonies/api/entity/mobs/RaiderMobUtils.java @@ -30,7 +30,7 @@ import java.util.List; import java.util.Random; -import static com.minecolonies.api.util.constant.RaiderConstants.*; +import static com.minecolonies.core.colony.events.raid.RaiderConstants.*; /** * Util class for raider mobs/spawning diff --git a/src/main/java/com/minecolonies/api/entity/mobs/amazons/AbstractEntityAmazon.java b/src/main/java/com/minecolonies/api/entity/mobs/amazons/AbstractEntityAmazon.java index 9b7cdcf136d..703ef93a140 100755 --- a/src/main/java/com/minecolonies/api/entity/mobs/amazons/AbstractEntityAmazon.java +++ b/src/main/java/com/minecolonies/api/entity/mobs/amazons/AbstractEntityAmazon.java @@ -8,8 +8,8 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; -import static com.minecolonies.api.util.constant.RaiderConstants.ONE; -import static com.minecolonies.api.util.constant.RaiderConstants.OUT_OF_ONE_HUNDRED; +import static com.minecolonies.core.colony.events.raid.RaiderConstants.ONE; +import static com.minecolonies.core.colony.events.raid.RaiderConstants.OUT_OF_ONE_HUNDRED; /** * Abstract for all amazon entities. diff --git a/src/main/java/com/minecolonies/api/entity/mobs/amazons/AbstractEntityAmazonRaider.java b/src/main/java/com/minecolonies/api/entity/mobs/amazons/AbstractEntityAmazonRaider.java index 75f8f6d7fef..f9c81a12081 100755 --- a/src/main/java/com/minecolonies/api/entity/mobs/amazons/AbstractEntityAmazonRaider.java +++ b/src/main/java/com/minecolonies/api/entity/mobs/amazons/AbstractEntityAmazonRaider.java @@ -8,8 +8,8 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; -import static com.minecolonies.api.util.constant.RaiderConstants.ONE; -import static com.minecolonies.api.util.constant.RaiderConstants.OUT_OF_ONE_HUNDRED; +import static com.minecolonies.core.colony.events.raid.RaiderConstants.ONE; +import static com.minecolonies.core.colony.events.raid.RaiderConstants.OUT_OF_ONE_HUNDRED; /** * Abstract for all amazon entities. diff --git a/src/main/java/com/minecolonies/api/entity/mobs/barbarians/AbstractEntityBarbarian.java b/src/main/java/com/minecolonies/api/entity/mobs/barbarians/AbstractEntityBarbarian.java index 5dceae238f6..010a317b175 100755 --- a/src/main/java/com/minecolonies/api/entity/mobs/barbarians/AbstractEntityBarbarian.java +++ b/src/main/java/com/minecolonies/api/entity/mobs/barbarians/AbstractEntityBarbarian.java @@ -6,8 +6,8 @@ import net.minecraft.world.entity.EntityType; import net.minecraft.world.level.Level; -import static com.minecolonies.api.util.constant.RaiderConstants.ONE; -import static com.minecolonies.api.util.constant.RaiderConstants.OUT_OF_ONE_HUNDRED; +import static com.minecolonies.core.colony.events.raid.RaiderConstants.ONE; +import static com.minecolonies.core.colony.events.raid.RaiderConstants.OUT_OF_ONE_HUNDRED; /** * Abstract for all Barbarian entities. diff --git a/src/main/java/com/minecolonies/api/entity/mobs/barbarians/AbstractEntityBarbarianRaider.java b/src/main/java/com/minecolonies/api/entity/mobs/barbarians/AbstractEntityBarbarianRaider.java index bc9108e9e77..029a4c89b28 100755 --- a/src/main/java/com/minecolonies/api/entity/mobs/barbarians/AbstractEntityBarbarianRaider.java +++ b/src/main/java/com/minecolonies/api/entity/mobs/barbarians/AbstractEntityBarbarianRaider.java @@ -6,8 +6,8 @@ import net.minecraft.world.entity.EntityType; import net.minecraft.world.level.Level; -import static com.minecolonies.api.util.constant.RaiderConstants.ONE; -import static com.minecolonies.api.util.constant.RaiderConstants.OUT_OF_ONE_HUNDRED; +import static com.minecolonies.core.colony.events.raid.RaiderConstants.ONE; +import static com.minecolonies.core.colony.events.raid.RaiderConstants.OUT_OF_ONE_HUNDRED; /** * Abstract for all Barbarian entities. diff --git a/src/main/java/com/minecolonies/api/entity/mobs/drownedpirate/AbstractDrownedEntityPirate.java b/src/main/java/com/minecolonies/api/entity/mobs/drownedpirate/AbstractDrownedEntityPirate.java index 83f8c1e89cc..7e63b858a32 100755 --- a/src/main/java/com/minecolonies/api/entity/mobs/drownedpirate/AbstractDrownedEntityPirate.java +++ b/src/main/java/com/minecolonies/api/entity/mobs/drownedpirate/AbstractDrownedEntityPirate.java @@ -14,8 +14,8 @@ import net.minecraft.world.level.LevelReader; import org.jetbrains.annotations.NotNull; -import static com.minecolonies.api.util.constant.RaiderConstants.ONE; -import static com.minecolonies.api.util.constant.RaiderConstants.OUT_OF_ONE_HUNDRED; +import static com.minecolonies.core.colony.events.raid.RaiderConstants.ONE; +import static com.minecolonies.core.colony.events.raid.RaiderConstants.OUT_OF_ONE_HUNDRED; /** * Abstract for all drowned pirate entities. diff --git a/src/main/java/com/minecolonies/api/entity/mobs/drownedpirate/AbstractDrownedEntityPirateRaider.java b/src/main/java/com/minecolonies/api/entity/mobs/drownedpirate/AbstractDrownedEntityPirateRaider.java index d90ba32d27c..1753458ac5b 100755 --- a/src/main/java/com/minecolonies/api/entity/mobs/drownedpirate/AbstractDrownedEntityPirateRaider.java +++ b/src/main/java/com/minecolonies/api/entity/mobs/drownedpirate/AbstractDrownedEntityPirateRaider.java @@ -14,8 +14,8 @@ import net.minecraft.world.level.LevelReader; import org.jetbrains.annotations.NotNull; -import static com.minecolonies.api.util.constant.RaiderConstants.ONE; -import static com.minecolonies.api.util.constant.RaiderConstants.OUT_OF_ONE_HUNDRED; +import static com.minecolonies.core.colony.events.raid.RaiderConstants.ONE; +import static com.minecolonies.core.colony.events.raid.RaiderConstants.OUT_OF_ONE_HUNDRED; /** * Abstract for all drowned pirate entities. diff --git a/src/main/java/com/minecolonies/api/entity/mobs/egyptians/AbstractEntityEgyptian.java b/src/main/java/com/minecolonies/api/entity/mobs/egyptians/AbstractEntityEgyptian.java index 1f79fde0112..1859f03c26a 100755 --- a/src/main/java/com/minecolonies/api/entity/mobs/egyptians/AbstractEntityEgyptian.java +++ b/src/main/java/com/minecolonies/api/entity/mobs/egyptians/AbstractEntityEgyptian.java @@ -8,8 +8,8 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; -import static com.minecolonies.api.util.constant.RaiderConstants.ONE; -import static com.minecolonies.api.util.constant.RaiderConstants.OUT_OF_ONE_HUNDRED; +import static com.minecolonies.core.colony.events.raid.RaiderConstants.ONE; +import static com.minecolonies.core.colony.events.raid.RaiderConstants.OUT_OF_ONE_HUNDRED; /** * Abstract for all egyptian entities. diff --git a/src/main/java/com/minecolonies/api/entity/mobs/egyptians/AbstractEntityEgyptianRaider.java b/src/main/java/com/minecolonies/api/entity/mobs/egyptians/AbstractEntityEgyptianRaider.java index 948cac3807b..ed6dd988705 100755 --- a/src/main/java/com/minecolonies/api/entity/mobs/egyptians/AbstractEntityEgyptianRaider.java +++ b/src/main/java/com/minecolonies/api/entity/mobs/egyptians/AbstractEntityEgyptianRaider.java @@ -8,8 +8,8 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; -import static com.minecolonies.api.util.constant.RaiderConstants.ONE; -import static com.minecolonies.api.util.constant.RaiderConstants.OUT_OF_ONE_HUNDRED; +import static com.minecolonies.core.colony.events.raid.RaiderConstants.ONE; +import static com.minecolonies.core.colony.events.raid.RaiderConstants.OUT_OF_ONE_HUNDRED; /** * Abstract for all egyptian entities. diff --git a/src/main/java/com/minecolonies/api/entity/mobs/pirates/AbstractEntityPirate.java b/src/main/java/com/minecolonies/api/entity/mobs/pirates/AbstractEntityPirate.java index a6b973cf3a0..721415ffbae 100755 --- a/src/main/java/com/minecolonies/api/entity/mobs/pirates/AbstractEntityPirate.java +++ b/src/main/java/com/minecolonies/api/entity/mobs/pirates/AbstractEntityPirate.java @@ -10,8 +10,8 @@ import net.minecraft.world.level.LevelAccessor; import org.jetbrains.annotations.NotNull; -import static com.minecolonies.api.util.constant.RaiderConstants.ONE; -import static com.minecolonies.api.util.constant.RaiderConstants.OUT_OF_ONE_HUNDRED; +import static com.minecolonies.core.colony.events.raid.RaiderConstants.ONE; +import static com.minecolonies.core.colony.events.raid.RaiderConstants.OUT_OF_ONE_HUNDRED; /** * Abstract for all pirate entities. diff --git a/src/main/java/com/minecolonies/api/entity/mobs/pirates/AbstractEntityPirateRaider.java b/src/main/java/com/minecolonies/api/entity/mobs/pirates/AbstractEntityPirateRaider.java index 8fa9fd86087..27036dee694 100755 --- a/src/main/java/com/minecolonies/api/entity/mobs/pirates/AbstractEntityPirateRaider.java +++ b/src/main/java/com/minecolonies/api/entity/mobs/pirates/AbstractEntityPirateRaider.java @@ -12,8 +12,8 @@ import java.util.Random; -import static com.minecolonies.api.util.constant.RaiderConstants.ONE; -import static com.minecolonies.api.util.constant.RaiderConstants.OUT_OF_ONE_HUNDRED; +import static com.minecolonies.core.colony.events.raid.RaiderConstants.ONE; +import static com.minecolonies.core.colony.events.raid.RaiderConstants.OUT_OF_ONE_HUNDRED; /** * Abstract for all pirate entities. diff --git a/src/main/java/com/minecolonies/api/entity/mobs/vikings/AbstractEntityNorsemen.java b/src/main/java/com/minecolonies/api/entity/mobs/vikings/AbstractEntityNorsemen.java index 36f6ca13eb5..d5e62f0c3a3 100755 --- a/src/main/java/com/minecolonies/api/entity/mobs/vikings/AbstractEntityNorsemen.java +++ b/src/main/java/com/minecolonies/api/entity/mobs/vikings/AbstractEntityNorsemen.java @@ -10,8 +10,8 @@ import net.minecraft.world.level.LevelAccessor; import org.jetbrains.annotations.NotNull; -import static com.minecolonies.api.util.constant.RaiderConstants.ONE; -import static com.minecolonies.api.util.constant.RaiderConstants.OUT_OF_ONE_HUNDRED; +import static com.minecolonies.core.colony.events.raid.RaiderConstants.ONE; +import static com.minecolonies.core.colony.events.raid.RaiderConstants.OUT_OF_ONE_HUNDRED; /** * Abstract for all norsemen entities. diff --git a/src/main/java/com/minecolonies/api/entity/mobs/vikings/AbstractEntityNorsemenRaider.java b/src/main/java/com/minecolonies/api/entity/mobs/vikings/AbstractEntityNorsemenRaider.java index 771541fa9c9..ed93a072977 100755 --- a/src/main/java/com/minecolonies/api/entity/mobs/vikings/AbstractEntityNorsemenRaider.java +++ b/src/main/java/com/minecolonies/api/entity/mobs/vikings/AbstractEntityNorsemenRaider.java @@ -10,8 +10,8 @@ import net.minecraft.world.level.LevelAccessor; import org.jetbrains.annotations.NotNull; -import static com.minecolonies.api.util.constant.RaiderConstants.ONE; -import static com.minecolonies.api.util.constant.RaiderConstants.OUT_OF_ONE_HUNDRED; +import static com.minecolonies.core.colony.events.raid.RaiderConstants.ONE; +import static com.minecolonies.core.colony.events.raid.RaiderConstants.OUT_OF_ONE_HUNDRED; /** * Abstract for all norsemen entities. diff --git a/src/main/java/com/minecolonies/api/util/constant/Constants.java b/src/main/java/com/minecolonies/api/util/constant/Constants.java index f9a32b3b702..a6c9b89313d 100755 --- a/src/main/java/com/minecolonies/api/util/constant/Constants.java +++ b/src/main/java/com/minecolonies/api/util/constant/Constants.java @@ -162,13 +162,10 @@ public final class Constants */ public static final int SLOT_PER_LINE = 9; - public static final String SCIMITAR_NAME = "iron_scimitar"; - public static final String CHIEFSWORD_NAME = "chiefsword"; public static final MobEffect LEVITATION_EFFECT = MobEffects.LEVITATION; public static final MobEffect GLOW_EFFECT = MobEffects.GLOWING; public static final int GLOW_EFFECT_DURATION = 20 * 30; - public static final int GLOW_EFFECT_MULTIPLIER = 20; public static final int GLOW_EFFECT_DISTANCE = 60; /** diff --git a/src/main/java/com/minecolonies/api/util/constant/RaiderConstants.java b/src/main/java/com/minecolonies/core/colony/events/raid/RaiderConstants.java old mode 100755 new mode 100644 similarity index 75% rename from src/main/java/com/minecolonies/api/util/constant/RaiderConstants.java rename to src/main/java/com/minecolonies/core/colony/events/raid/RaiderConstants.java index c3fdf58e4f4..c9135c88963 --- a/src/main/java/com/minecolonies/api/util/constant/RaiderConstants.java +++ b/src/main/java/com/minecolonies/core/colony/events/raid/RaiderConstants.java @@ -1,7 +1,6 @@ -package com.minecolonies.api.util.constant; +package com.minecolonies.core.colony.events.raid; -import net.minecraft.world.item.alchemy.Potion; -import net.minecraft.world.item.alchemy.Potions; +import com.minecolonies.api.util.constant.Constants; /** * Barbarian constants class. @@ -23,11 +22,10 @@ public final class RaiderConstants public static final int ONE = 1; /** - * Values used for sword effect. + * Chief sword ability constants */ - public static final Potion SPEED_EFFECT = Potions.STRONG_SWIFTNESS; - public static final int TIME_TO_COUNTDOWN = 240; - public static final int COUNTDOWN_SECOND_MULTIPLIER = 4; + public static final double CHIEF_SWORD_SPEED_DIFFICULTY = 2.0; + public static final int TIME_TO_COUNTDOWN = 120; public static final int SPEED_EFFECT_DISTANCE = 7; public static final int SPEED_EFFECT_DURATION = 60; public static final int SPEED_EFFECT_MULTIPLIER = 1; @@ -86,6 +84,26 @@ public final class RaiderConstants public static final double BARBARIAN_BASE_HEALTH = 10; public static final double BARBARIAN_HEALTH_MULTIPLIER = 0.025; + /** + * Extended melee reach based on difficulty + */ + public static final double EXTENDED_REACH_DIFFICULTY = 1.9; + public static final double EXTENDED_REACH = 0.4; + public static final double MIN_DISTANCE_FOR_ATTACK = 2.5; + + /** + * Attack delay + */ + public static final int MELEE_ATTACK_DELAY = 30; + + /** + * Additional melee movement speed difficulty + */ + public static final double ADD_SPEED_DIFFICULTY = 2.3; + public static final double BONUS_SPEED = 1.2; + public static final double BASE_COMBAT_SPEED = 1.2; + + /** * Private constructor to hide implicit one. */ diff --git a/src/main/java/com/minecolonies/core/entity/ai/workers/guard/AbstractEntityAIGuard.java b/src/main/java/com/minecolonies/core/entity/ai/workers/guard/AbstractEntityAIGuard.java index 7202391cbb9..2c67f78dcc2 100755 --- a/src/main/java/com/minecolonies/core/entity/ai/workers/guard/AbstractEntityAIGuard.java +++ b/src/main/java/com/minecolonies/core/entity/ai/workers/guard/AbstractEntityAIGuard.java @@ -474,7 +474,7 @@ private IAIState rally(final ILocation location) // when they're at half-max, so at about skill60. Therefore, divide the skill by 20. worker.addEffect(new MobEffectInstance(MobEffects.MOVEMENT_SPEED, 5 * TICKS_SECOND, - Mth.clamp((citizenData.getCitizenSkillHandler().getLevel(Skill.Adaptability) / 20), 2, 5), + Mth.clamp((citizenData.getCitizenSkillHandler().getLevel(Skill.Adaptability) / 30), 0, 3), false, false)); } @@ -697,7 +697,7 @@ protected IAIState decide() if (rallyLocation != null || buildingGuards.getTask().equals(GuardTaskSetting.FOLLOW)) { - worker.addEffect(new MobEffectInstance(GLOW_EFFECT, GLOW_EFFECT_DURATION, GLOW_EFFECT_MULTIPLIER, false, false)); + worker.addEffect(new MobEffectInstance(GLOW_EFFECT, GLOW_EFFECT_DURATION, 0, false, false)); } else { diff --git a/src/main/java/com/minecolonies/core/entity/mobs/EntityMercenary.java b/src/main/java/com/minecolonies/core/entity/mobs/EntityMercenary.java index 58fe5f90553..4138c9bc683 100755 --- a/src/main/java/com/minecolonies/core/entity/mobs/EntityMercenary.java +++ b/src/main/java/com/minecolonies/core/entity/mobs/EntityMercenary.java @@ -60,8 +60,8 @@ import static com.minecolonies.api.util.constant.Constants.TICKS_FOURTY_MIN; import static com.minecolonies.api.util.constant.NbtTagConstants.TAG_COLONY_ID; import static com.minecolonies.api.util.constant.NbtTagConstants.TAG_TIME; -import static com.minecolonies.api.util.constant.RaiderConstants.FOLLOW_RANGE; import static com.minecolonies.api.util.constant.TranslationConstants.MESSAGE_INFO_COLONY_MERCENARY_STEAL_CITIZEN; +import static com.minecolonies.core.colony.events.raid.RaiderConstants.FOLLOW_RANGE; import static com.minecolonies.core.entity.ai.minimal.EntityAIInteractToggleAble.*; diff --git a/src/main/java/com/minecolonies/core/entity/mobs/aitasks/RaiderMeleeAI.java b/src/main/java/com/minecolonies/core/entity/mobs/aitasks/RaiderMeleeAI.java index 20e31407873..db312a9ffaa 100644 --- a/src/main/java/com/minecolonies/core/entity/mobs/aitasks/RaiderMeleeAI.java +++ b/src/main/java/com/minecolonies/core/entity/mobs/aitasks/RaiderMeleeAI.java @@ -7,7 +7,7 @@ import com.minecolonies.api.util.BlockPosUtil; import com.minecolonies.api.util.SoundUtils; import com.minecolonies.api.util.constant.Constants; -import com.minecolonies.api.util.constant.RaiderConstants; +import com.minecolonies.core.colony.events.raid.RaiderConstants; import com.minecolonies.core.entity.ai.combat.AttackMoveAI; import com.minecolonies.core.entity.citizen.EntityCitizen; import com.minecolonies.core.entity.pathfinding.navigation.EntityNavigationUtils; @@ -22,31 +22,13 @@ import net.minecraft.world.entity.player.Player; import static com.minecolonies.api.entity.mobs.RaiderMobUtils.MOB_ATTACK_DAMAGE; +import static com.minecolonies.core.colony.events.raid.RaiderConstants.*; /** * Raider AI for melee attacking a target */ public class RaiderMeleeAI extends AttackMoveAI { - /** - * Extended reach based on difficulty - */ - private static final double EXTENDED_REACH_DIFFICULTY = 1.9; - private static final double EXTENDED_REACH = 0.4; - private static final double MIN_DISTANCE_FOR_ATTACK = 2.5; - - /** - * Attack delay - */ - private static final int ATTACK_DELAY = 30; - - /** - * Additional movement speed difficulty - */ - private static final double ADD_SPEED_DIFFICULTY = 2.3; - private static final double BONUS_SPEED = 1.2; - private static final double BASE_COMBAT_SPEED = 1.2; - public RaiderMeleeAI( final T owner, final ITickRateStateMachine stateMachine) @@ -80,7 +62,7 @@ protected double getAttackDistance() @Override protected int getAttackDelay() { - return ATTACK_DELAY; + return MELEE_ATTACK_DELAY; } @Override diff --git a/src/main/java/com/minecolonies/core/entity/mobs/aitasks/RaiderRangedAI.java b/src/main/java/com/minecolonies/core/entity/mobs/aitasks/RaiderRangedAI.java index fcbf304d351..e62a2bae91f 100644 --- a/src/main/java/com/minecolonies/core/entity/mobs/aitasks/RaiderRangedAI.java +++ b/src/main/java/com/minecolonies/core/entity/mobs/aitasks/RaiderRangedAI.java @@ -8,7 +8,7 @@ import com.minecolonies.api.entity.mobs.IRangedMobEntity; import com.minecolonies.api.util.BlockPosUtil; import com.minecolonies.api.util.EntityUtils; -import com.minecolonies.api.util.constant.RaiderConstants; +import com.minecolonies.core.colony.events.raid.RaiderConstants; import com.minecolonies.core.entity.ai.combat.AttackMoveAI; import com.minecolonies.core.entity.ai.combat.CombatUtils; import com.minecolonies.core.entity.citizen.EntityCitizen; diff --git a/src/main/java/com/minecolonies/core/entity/mobs/camp/amazons/EntityAmazonChief.java b/src/main/java/com/minecolonies/core/entity/mobs/camp/amazons/EntityAmazonChief.java index 12047372c4a..b3e49d71857 100755 --- a/src/main/java/com/minecolonies/core/entity/mobs/camp/amazons/EntityAmazonChief.java +++ b/src/main/java/com/minecolonies/core/entity/mobs/camp/amazons/EntityAmazonChief.java @@ -7,7 +7,7 @@ import net.minecraft.world.level.Level; import static com.minecolonies.api.entity.mobs.RaiderMobUtils.MOB_ATTACK_DAMAGE; -import static com.minecolonies.api.util.constant.RaiderConstants.CHIEF_BONUS_ARMOR; +import static com.minecolonies.core.colony.events.raid.RaiderConstants.CHIEF_BONUS_ARMOR; /** * Class for the Amazon Chief entity. diff --git a/src/main/java/com/minecolonies/core/entity/mobs/camp/barbarians/EntityChiefBarbarian.java b/src/main/java/com/minecolonies/core/entity/mobs/camp/barbarians/EntityChiefBarbarian.java index 7de99e970f7..e8120f06939 100755 --- a/src/main/java/com/minecolonies/core/entity/mobs/camp/barbarians/EntityChiefBarbarian.java +++ b/src/main/java/com/minecolonies/core/entity/mobs/camp/barbarians/EntityChiefBarbarian.java @@ -7,7 +7,7 @@ import net.minecraft.world.level.Level; import static com.minecolonies.api.entity.mobs.RaiderMobUtils.MOB_ATTACK_DAMAGE; -import static com.minecolonies.api.util.constant.RaiderConstants.CHIEF_BONUS_ARMOR; +import static com.minecolonies.core.colony.events.raid.RaiderConstants.CHIEF_BONUS_ARMOR; /** * Class for the Chief Barbarian entity. diff --git a/src/main/java/com/minecolonies/core/entity/mobs/camp/drownedpirates/EntityDrownedCaptainPirate.java b/src/main/java/com/minecolonies/core/entity/mobs/camp/drownedpirates/EntityDrownedCaptainPirate.java index 7c70a19e372..e33aceaac7e 100755 --- a/src/main/java/com/minecolonies/core/entity/mobs/camp/drownedpirates/EntityDrownedCaptainPirate.java +++ b/src/main/java/com/minecolonies/core/entity/mobs/camp/drownedpirates/EntityDrownedCaptainPirate.java @@ -1,7 +1,6 @@ package com.minecolonies.core.entity.mobs.camp.drownedpirates; import com.minecolonies.api.entity.mobs.drownedpirate.AbstractDrownedEntityPirate; -import com.minecolonies.api.entity.mobs.drownedpirate.AbstractDrownedEntityPirateRaider; import com.minecolonies.api.entity.mobs.pirates.ICaptainPirateEntity; import com.minecolonies.api.util.MathUtils; import net.minecraft.network.chat.Component; @@ -10,7 +9,6 @@ import net.minecraft.world.level.Level; import static com.minecolonies.api.entity.mobs.RaiderMobUtils.MOB_ATTACK_DAMAGE; -import static com.minecolonies.api.util.constant.RaiderConstants.BASE_ENV_DAMAGE_RESIST; /** * Class for the Chief Pirate entity. diff --git a/src/main/java/com/minecolonies/core/entity/mobs/camp/egyptians/EntityPharao.java b/src/main/java/com/minecolonies/core/entity/mobs/camp/egyptians/EntityPharao.java index 159bcfcb5b2..54f5c5ec08b 100755 --- a/src/main/java/com/minecolonies/core/entity/mobs/camp/egyptians/EntityPharao.java +++ b/src/main/java/com/minecolonies/core/entity/mobs/camp/egyptians/EntityPharao.java @@ -1,15 +1,13 @@ package com.minecolonies.core.entity.mobs.camp.egyptians; import com.minecolonies.api.entity.mobs.egyptians.AbstractEntityEgyptian; -import com.minecolonies.api.entity.mobs.egyptians.AbstractEntityEgyptianRaider; import com.minecolonies.api.entity.mobs.egyptians.IPharaoEntity; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.ai.attributes.Attributes; import net.minecraft.world.level.Level; import static com.minecolonies.api.entity.mobs.RaiderMobUtils.MOB_ATTACK_DAMAGE; -import static com.minecolonies.api.util.constant.RaiderConstants.BASE_ENV_DAMAGE_RESIST; -import static com.minecolonies.api.util.constant.RaiderConstants.CHIEF_BONUS_ARMOR; +import static com.minecolonies.core.colony.events.raid.RaiderConstants.CHIEF_BONUS_ARMOR; /** * Class for the Pharao entity. diff --git a/src/main/java/com/minecolonies/core/entity/mobs/camp/norsemen/EntityNorsemenChief.java b/src/main/java/com/minecolonies/core/entity/mobs/camp/norsemen/EntityNorsemenChief.java index 4ea19f820af..7e9b78074d7 100755 --- a/src/main/java/com/minecolonies/core/entity/mobs/camp/norsemen/EntityNorsemenChief.java +++ b/src/main/java/com/minecolonies/core/entity/mobs/camp/norsemen/EntityNorsemenChief.java @@ -1,15 +1,13 @@ package com.minecolonies.core.entity.mobs.camp.norsemen; import com.minecolonies.api.entity.mobs.vikings.AbstractEntityNorsemen; -import com.minecolonies.api.entity.mobs.vikings.AbstractEntityNorsemenRaider; import com.minecolonies.api.entity.mobs.vikings.INorsemenChiefEntity; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.ai.attributes.Attributes; import net.minecraft.world.level.Level; import static com.minecolonies.api.entity.mobs.RaiderMobUtils.MOB_ATTACK_DAMAGE; -import static com.minecolonies.api.util.constant.RaiderConstants.BASE_ENV_DAMAGE_RESIST; -import static com.minecolonies.api.util.constant.RaiderConstants.CHIEF_BONUS_ARMOR; +import static com.minecolonies.core.colony.events.raid.RaiderConstants.CHIEF_BONUS_ARMOR; /** * Class for the Chief norsemen entity. diff --git a/src/main/java/com/minecolonies/core/entity/mobs/camp/pirates/EntityCaptainPirate.java b/src/main/java/com/minecolonies/core/entity/mobs/camp/pirates/EntityCaptainPirate.java index 2340833f5ff..956097fbc08 100755 --- a/src/main/java/com/minecolonies/core/entity/mobs/camp/pirates/EntityCaptainPirate.java +++ b/src/main/java/com/minecolonies/core/entity/mobs/camp/pirates/EntityCaptainPirate.java @@ -1,14 +1,12 @@ package com.minecolonies.core.entity.mobs.camp.pirates; import com.minecolonies.api.entity.mobs.pirates.AbstractEntityPirate; -import com.minecolonies.api.entity.mobs.pirates.AbstractEntityPirateRaider; import com.minecolonies.api.entity.mobs.pirates.ICaptainPirateEntity; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.ai.attributes.Attributes; import net.minecraft.world.level.Level; import static com.minecolonies.api.entity.mobs.RaiderMobUtils.MOB_ATTACK_DAMAGE; -import static com.minecolonies.api.util.constant.RaiderConstants.BASE_ENV_DAMAGE_RESIST; /** * Class for the Chief Pirate entity. diff --git a/src/main/java/com/minecolonies/core/entity/mobs/raider/amazons/EntityAmazonChiefRaider.java b/src/main/java/com/minecolonies/core/entity/mobs/raider/amazons/EntityAmazonChiefRaider.java index 05520ce282c..d68f5cad19c 100755 --- a/src/main/java/com/minecolonies/core/entity/mobs/raider/amazons/EntityAmazonChiefRaider.java +++ b/src/main/java/com/minecolonies/core/entity/mobs/raider/amazons/EntityAmazonChiefRaider.java @@ -7,7 +7,7 @@ import net.minecraft.world.level.Level; import static com.minecolonies.api.entity.mobs.RaiderMobUtils.MOB_ATTACK_DAMAGE; -import static com.minecolonies.api.util.constant.RaiderConstants.CHIEF_BONUS_ARMOR; +import static com.minecolonies.core.colony.events.raid.RaiderConstants.CHIEF_BONUS_ARMOR; /** * Class for the Amazon Chief entity. diff --git a/src/main/java/com/minecolonies/core/entity/mobs/raider/barbarians/EntityChiefBarbarianRaider.java b/src/main/java/com/minecolonies/core/entity/mobs/raider/barbarians/EntityChiefBarbarianRaider.java index 323f80280cc..07a899ce37a 100755 --- a/src/main/java/com/minecolonies/core/entity/mobs/raider/barbarians/EntityChiefBarbarianRaider.java +++ b/src/main/java/com/minecolonies/core/entity/mobs/raider/barbarians/EntityChiefBarbarianRaider.java @@ -7,7 +7,7 @@ import net.minecraft.world.level.Level; import static com.minecolonies.api.entity.mobs.RaiderMobUtils.MOB_ATTACK_DAMAGE; -import static com.minecolonies.api.util.constant.RaiderConstants.CHIEF_BONUS_ARMOR; +import static com.minecolonies.core.colony.events.raid.RaiderConstants.CHIEF_BONUS_ARMOR; /** * Class for the Chief Barbarian entity. diff --git a/src/main/java/com/minecolonies/core/entity/mobs/raider/egyptians/EntityPharaoRaider.java b/src/main/java/com/minecolonies/core/entity/mobs/raider/egyptians/EntityPharaoRaider.java index 12915560115..23ec01be28c 100755 --- a/src/main/java/com/minecolonies/core/entity/mobs/raider/egyptians/EntityPharaoRaider.java +++ b/src/main/java/com/minecolonies/core/entity/mobs/raider/egyptians/EntityPharaoRaider.java @@ -7,7 +7,7 @@ import net.minecraft.world.level.Level; import static com.minecolonies.api.entity.mobs.RaiderMobUtils.MOB_ATTACK_DAMAGE; -import static com.minecolonies.api.util.constant.RaiderConstants.CHIEF_BONUS_ARMOR; +import static com.minecolonies.core.colony.events.raid.RaiderConstants.CHIEF_BONUS_ARMOR; /** * Class for the Pharao entity. diff --git a/src/main/java/com/minecolonies/core/entity/mobs/raider/norsemen/EntityNorsemenChiefRaider.java b/src/main/java/com/minecolonies/core/entity/mobs/raider/norsemen/EntityNorsemenChiefRaider.java index 0cf574e70ae..b2d9dac56a1 100755 --- a/src/main/java/com/minecolonies/core/entity/mobs/raider/norsemen/EntityNorsemenChiefRaider.java +++ b/src/main/java/com/minecolonies/core/entity/mobs/raider/norsemen/EntityNorsemenChiefRaider.java @@ -7,7 +7,7 @@ import net.minecraft.world.level.Level; import static com.minecolonies.api.entity.mobs.RaiderMobUtils.MOB_ATTACK_DAMAGE; -import static com.minecolonies.api.util.constant.RaiderConstants.CHIEF_BONUS_ARMOR; +import static com.minecolonies.core.colony.events.raid.RaiderConstants.CHIEF_BONUS_ARMOR; /** * Class for the Chief norsemen entity. diff --git a/src/main/java/com/minecolonies/core/entity/mobs/registry/MobAIRegistry.java b/src/main/java/com/minecolonies/core/entity/mobs/registry/MobAIRegistry.java index d448bbab35d..1cbf096ee41 100755 --- a/src/main/java/com/minecolonies/core/entity/mobs/registry/MobAIRegistry.java +++ b/src/main/java/com/minecolonies/core/entity/mobs/registry/MobAIRegistry.java @@ -3,20 +3,20 @@ import com.google.common.collect.Lists; import com.google.common.collect.Multimap; import com.minecolonies.api.entity.ai.IStateAI; -import com.minecolonies.api.entity.mobs.AbstractEntityMinecoloniesRaider; -import com.minecolonies.api.entity.mobs.drownedpirate.AbstractDrownedEntityPirateRaider; -import com.minecolonies.api.entity.mobs.registry.IMobAIRegistry; import com.minecolonies.api.entity.mobs.AbstractEntityMinecoloniesMonster; +import com.minecolonies.api.entity.mobs.AbstractEntityMinecoloniesRaider; import com.minecolonies.api.entity.mobs.IArcherMobEntity; import com.minecolonies.api.entity.mobs.IRangedMobEntity; +import com.minecolonies.api.entity.mobs.drownedpirate.AbstractDrownedEntityPirateRaider; +import com.minecolonies.api.entity.mobs.registry.IMobAIRegistry; import com.minecolonies.core.entity.ai.minimal.EntityAIInteractToggleAble; import com.minecolonies.core.entity.citizen.EntityCitizen; import com.minecolonies.core.entity.mobs.aitasks.*; import com.minecolonies.core.util.MultimapCollector; import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.ai.goal.FloatGoal; import net.minecraft.world.entity.ai.goal.Goal; import net.minecraft.world.entity.ai.goal.LookAtPlayerGoal; -import net.minecraft.world.entity.ai.goal.FloatGoal; import net.minecraft.world.entity.player.Player; import org.jetbrains.annotations.NotNull; @@ -24,7 +24,7 @@ import java.util.function.Function; import java.util.function.Predicate; -import static com.minecolonies.api.util.constant.RaiderConstants.*; +import static com.minecolonies.core.colony.events.raid.RaiderConstants.*; import static com.minecolonies.core.entity.ai.minimal.EntityAIInteractToggleAble.FENCE_TOGGLE; public class MobAIRegistry implements IMobAIRegistry diff --git a/src/main/java/com/minecolonies/core/generation/defaults/DefaultResearchProvider.java b/src/main/java/com/minecolonies/core/generation/defaults/DefaultResearchProvider.java index 05e0f52ed02..81f7bebcebb 100644 --- a/src/main/java/com/minecolonies/core/generation/defaults/DefaultResearchProvider.java +++ b/src/main/java/com/minecolonies/core/generation/defaults/DefaultResearchProvider.java @@ -88,7 +88,7 @@ public Collection getResearchEffectCollection() effects.add(new ResearchEffect(MECHANIC_ENHANCED_GATES).setTranslatedName("Gates Gain +100% Raider Swarm Resistance").setLevels(new double[] {5, 15})); effects.add(new ResearchEffect(FARMING).setTranslatedName("Farmers Harvest +%3$s%% Crops").setLevels(new double[] {0.1, 0.25, 0.5, 0.75, 2})); effects.add(new ResearchEffect(FLEEING_DAMAGE).setTranslatedName("Guards Take -%3$s%% Damage When Fleeing").setLevels(new double[] {0.2, 0.3, 0.4, 0.75})); - effects.add(new ResearchEffect(FLEEING_SPEED).setTranslatedName("Fleeing Guards Gain Swiftness %2$s").setLevels(new double[] {1, 2, 3, 5})); + effects.add(new ResearchEffect(FLEEING_SPEED).setTranslatedName("Fleeing Guards Gain Swiftness %2$s").setLevels(new double[] {0, 1, 2, 3})); effects.add(new ResearchEffect(GROWTH).setTranslatedName("Child Growth Rate +%3$s%%").setLevels(new double[] {0.05, 0.1, 0.25, 0.5, 1})); effects.add(new ResearchEffect(HAPPINESS).setTranslatedName("Citizen Happiness +%3$s%%").setLevels(new double[] {0.05, 0.1, 0.15, 0.2, 0.5})); effects.add(new ResearchEffect(SATLIMIT).setTranslatedName("Healing Saturation Min %s").setLevels(new double[] {-0.5, -1, -1.5, -2, -5})); diff --git a/src/main/java/com/minecolonies/core/items/ItemChiefSword.java b/src/main/java/com/minecolonies/core/items/ItemChiefSword.java index 0d4a9ad0dfa..d10bab1ef43 100755 --- a/src/main/java/com/minecolonies/core/items/ItemChiefSword.java +++ b/src/main/java/com/minecolonies/core/items/ItemChiefSword.java @@ -3,13 +3,13 @@ import com.minecolonies.api.entity.mobs.RaiderMobUtils; import com.minecolonies.api.entity.mobs.barbarians.AbstractEntityBarbarianRaider; import com.minecolonies.api.items.IChiefSwordItem; +import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.Tiers; import net.minecraft.world.item.SwordItem; -import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.item.Tiers; import net.minecraft.world.level.Level; import org.jetbrains.annotations.NotNull; @@ -21,7 +21,7 @@ public class ItemChiefSword extends SwordItem implements IChiefSwordItem { private static final int LEVITATION_EFFECT_DURATION = 20 * 10; - private static final int LEVITATION_EFFECT_MULTIPLIER = 3; + private static final int LEVITATION_EFFECT_MULTIPLIER = 2; /** * Constructor method for the Chief Sword Item @@ -39,7 +39,7 @@ public void inventoryTick(final ItemStack stack, final Level worldIn, final Enti if (entityIn instanceof Player && isSelected) { RaiderMobUtils.getBarbariansCloseToEntity(entityIn, GLOW_EFFECT_DISTANCE) - .forEach(entity -> entity.addEffect(new MobEffectInstance(GLOW_EFFECT, GLOW_EFFECT_DURATION, GLOW_EFFECT_MULTIPLIER))); + .forEach(entity -> entity.addEffect(new MobEffectInstance(GLOW_EFFECT, GLOW_EFFECT_DURATION, 0))); } }