From d9c8c42c1cee3095091a3044514281463b20ef91 Mon Sep 17 00:00:00 2001 From: Minh Date: Thu, 15 Feb 2024 12:19:31 +0700 Subject: [PATCH] Flying Speed & Smol Ticking SKill changes. --- gradle.properties | 2 +- .../manasmods/manascore/api/skills/ManasSkill.java | 2 +- .../manascore/api/skills/ManasSkillInstance.java | 4 ++-- .../manascore/api/skills/TickingSkill.java | 7 +++---- .../manascore/attribute/ManasCoreAttributes.java | 3 +++ .../manascore/core/MixinLivingEntity.java | 14 +++++++++----- .../resources/assets/manascore/lang/en_us.json | 1 + 7 files changed, 20 insertions(+), 13 deletions(-) diff --git a/gradle.properties b/gradle.properties index e7c2ccd0..257b1905 100644 --- a/gradle.properties +++ b/gradle.properties @@ -7,7 +7,7 @@ forgeVersion=43.3.5 # Parchment Version parchmentVersion=2022.11.27 # Mod Information see https://mcforge.readthedocs.io/en/1.18.x/gettingstarted/versioning/#examples -modVersion=2.1.3.2 +modVersion=2.1.3.3 modId=manascore # Mixin Extras mixinExtrasVersion=0.3.2 diff --git a/src/main/java/com/github/manasmods/manascore/api/skills/ManasSkill.java b/src/main/java/com/github/manasmods/manascore/api/skills/ManasSkill.java index 81a0650d..d64a37bb 100644 --- a/src/main/java/com/github/manasmods/manascore/api/skills/ManasSkill.java +++ b/src/main/java/com/github/manasmods/manascore/api/skills/ManasSkill.java @@ -108,7 +108,7 @@ public boolean canInteractSkill(ManasSkillInstance instance , LivingEntity livin * @return the maximum number of ticks that this skill can be held down with the skill activation button. *

*/ - public int getMaxHeldTime() { + public int getMaxHeldTime(ManasSkillInstance instance , LivingEntity living) { return 72000; } diff --git a/src/main/java/com/github/manasmods/manascore/api/skills/ManasSkillInstance.java b/src/main/java/com/github/manasmods/manascore/api/skills/ManasSkillInstance.java index f1f17aa8..3061579d 100644 --- a/src/main/java/com/github/manasmods/manascore/api/skills/ManasSkillInstance.java +++ b/src/main/java/com/github/manasmods/manascore/api/skills/ManasSkillInstance.java @@ -165,8 +165,8 @@ public boolean canInteractSkill(LivingEntity living) { * @return the maximum number of ticks that this skill can be held down with the skill activation button. *

*/ - public int getMaxHeldTime() { - return this.getSkill().getMaxHeldTime(); + public int getMaxHeldTime(LivingEntity living) { + return this.getSkill().getMaxHeldTime(this, living); } /** diff --git a/src/main/java/com/github/manasmods/manascore/api/skills/TickingSkill.java b/src/main/java/com/github/manasmods/manascore/api/skills/TickingSkill.java index 9a52b614..1f21f1ee 100644 --- a/src/main/java/com/github/manasmods/manascore/api/skills/TickingSkill.java +++ b/src/main/java/com/github/manasmods/manascore/api/skills/TickingSkill.java @@ -8,26 +8,25 @@ public class TickingSkill { private int duration = 0; - private final int maxDuration; @Getter private final ManasSkill skill; public TickingSkill(ManasSkill skill) { this.skill = skill; - this.maxDuration = skill.getMaxHeldTime(); } public boolean tick(SkillStorage storage, LivingEntity entity) { Optional optional = storage.getSkill(skill); if (optional.isEmpty()) return false; - if (reachedMaxDuration()) return false; ManasSkillInstance instance = optional.get(); + if (reachedMaxDuration(instance, entity)) return false; if (!instance.canInteractSkill(entity)) return false; return instance.onHeld(entity, this.duration++); } - public boolean reachedMaxDuration() { + public boolean reachedMaxDuration(ManasSkillInstance instance, LivingEntity entity) { + int maxDuration = instance.getMaxHeldTime(entity); if (maxDuration == -1) return false; return duration >= maxDuration; } diff --git a/src/main/java/com/github/manasmods/manascore/attribute/ManasCoreAttributes.java b/src/main/java/com/github/manasmods/manascore/attribute/ManasCoreAttributes.java index 2bb4f5c3..b339503b 100644 --- a/src/main/java/com/github/manasmods/manascore/attribute/ManasCoreAttributes.java +++ b/src/main/java/com/github/manasmods/manascore/attribute/ManasCoreAttributes.java @@ -23,6 +23,8 @@ public class ManasCoreAttributes { () -> new RangedAttribute("manascore.attribute.crit_multiplier.name", 1.5, 0, 1024).setSyncable(true)); public static final RegistryObject JUMP_POWER = registry.register("jump_power", () -> new RangedAttribute("manascore.attribute.jump_power.name", 0.42, 0, 1024).setSyncable(true)); + public static final RegistryObject FLYING_SPEED_MULTIPLIER = registry.register("flying_speed_multiplier", + () -> new RangedAttribute("manascore.attribute.flying_speed.name", 1.0, 0, 1024).setSyncable(true)); public static final RegistryObject MINING_SPEED_MULTIPLIER = registry.register("mining_speed_multiplier", () -> new RangedAttribute("manascore.attribute.mining_speed.name", 1.0, 0, 1024).setSyncable(true)); public static final RegistryObject SPRINTING_SPEED_MULTIPLIER = registry.register("sprinting_speed_multiplier", @@ -43,6 +45,7 @@ private static void applyAttributesToEntities(final EntityAttributeModificationE e.getTypes().forEach(type -> { e.add(type, CRIT_CHANCE.get()); e.add(type, CRIT_MULTIPLIER.get()); + e.add(type, FLYING_SPEED_MULTIPLIER.get()); e.add(type, SPRINTING_SPEED_MULTIPLIER.get()); }); } diff --git a/src/main/java/com/github/manasmods/manascore/core/MixinLivingEntity.java b/src/main/java/com/github/manasmods/manascore/core/MixinLivingEntity.java index bd30cdab..cf89ca08 100644 --- a/src/main/java/com/github/manasmods/manascore/core/MixinLivingEntity.java +++ b/src/main/java/com/github/manasmods/manascore/core/MixinLivingEntity.java @@ -13,10 +13,14 @@ public class MixinLivingEntity { @Inject(method = "getFrictionInfluencedSpeed", at = @At(value = "RETURN"), cancellable = true) private void additionSprintingSpeed(float friction, CallbackInfoReturnable cir) { LivingEntity entity = (LivingEntity) (Object) this; - if (!entity.isOnGround() || !entity.isSprinting()) return; - - AttributeInstance instance = entity.getAttribute(ManasCoreAttributes.SPRINTING_SPEED_MULTIPLIER.get()); - if (instance == null) return; - cir.setReturnValue((float) (cir.getReturnValue() * instance.getValue())); + if (!entity.isOnGround()) { + AttributeInstance instance = entity.getAttribute(ManasCoreAttributes.FLYING_SPEED_MULTIPLIER.get()); + if (instance == null) return; + cir.setReturnValue((float) (cir.getReturnValue() * instance.getValue())); + } else if (entity.isSprinting()) { + AttributeInstance instance = entity.getAttribute(ManasCoreAttributes.SPRINTING_SPEED_MULTIPLIER.get()); + if (instance == null) return; + cir.setReturnValue((float) (cir.getReturnValue() * instance.getValue())); + } } } diff --git a/src/main/resources/assets/manascore/lang/en_us.json b/src/main/resources/assets/manascore/lang/en_us.json index 286d30f4..90804414 100644 --- a/src/main/resources/assets/manascore/lang/en_us.json +++ b/src/main/resources/assets/manascore/lang/en_us.json @@ -2,6 +2,7 @@ "manascore.attribute.crit_chance.name": "% Critical Chance", "manascore.attribute.crit_multiplier.name": "Additional Critical Multiplier", "manascore.attribute.jump_power.name": "Jump Power", + "manascore.attribute.flying_speed.name": "Flying Speed Multiplier", "manascore.attribute.mining_speed.name": "Mining Speed Multiplier", "manascore.attribute.sprinting_speed.name": "Sprinting Speed Multiplier", "manascore.attribute.sweep_chance.name": "Sweeping Chance",