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",