From 49dc567a89cf5ccaaf4361931f9741c22142bcc1 Mon Sep 17 00:00:00 2001 From: Dmitry Luk Date: Fri, 28 Jun 2024 12:41:49 +0500 Subject: [PATCH] feat: health boost effect --- .../java/org/allaymc/api/entity/Entity.java | 3 ++- .../component/common/EntityBaseComponent.java | 4 ++-- .../allaymc/api/entity/effect/EffectType.java | 4 ++-- .../effect/type/EffectAbsorptionType.java | 4 ++-- .../effect/type/EffectHealthBoostType.java | 17 +++++++++++++++++ .../effect/type/EffectInvisibilityType.java | 1 - .../api/entity/interfaces/EntityVillagerV2.java | 6 +----- 7 files changed, 26 insertions(+), 13 deletions(-) diff --git a/Allay-API/src/main/java/org/allaymc/api/entity/Entity.java b/Allay-API/src/main/java/org/allaymc/api/entity/Entity.java index 66343b02f..eca615f47 100644 --- a/Allay-API/src/main/java/org/allaymc/api/entity/Entity.java +++ b/Allay-API/src/main/java/org/allaymc/api/entity/Entity.java @@ -2,6 +2,7 @@ import org.allaymc.api.datastruct.aabbtree.HasAABB; import org.allaymc.api.datastruct.aabbtree.HasLongId; +import org.allaymc.api.entity.component.common.EntityAttributeComponent; import org.allaymc.api.entity.component.common.EntityBaseComponent; import org.joml.primitives.AABBf; @@ -11,7 +12,7 @@ * @author daoge_cmd */ public interface Entity extends - EntityBaseComponent, + EntityBaseComponent, EntityAttributeComponent, HasAABB, HasLongId { @Override diff --git a/Allay-API/src/main/java/org/allaymc/api/entity/component/common/EntityBaseComponent.java b/Allay-API/src/main/java/org/allaymc/api/entity/component/common/EntityBaseComponent.java index 194b774b8..09579f9bf 100644 --- a/Allay-API/src/main/java/org/allaymc/api/entity/component/common/EntityBaseComponent.java +++ b/Allay-API/src/main/java/org/allaymc/api/entity/component/common/EntityBaseComponent.java @@ -379,7 +379,7 @@ default boolean onInteract(EntityPlayer player, ItemStack itemStack) { return false; } - void setAbsorption(float absorption); - float getAbsorption(); + + void setAbsorption(float absorption); } diff --git a/Allay-API/src/main/java/org/allaymc/api/entity/effect/EffectType.java b/Allay-API/src/main/java/org/allaymc/api/entity/effect/EffectType.java index ecd5908ae..52e059a9c 100644 --- a/Allay-API/src/main/java/org/allaymc/api/entity/effect/EffectType.java +++ b/Allay-API/src/main/java/org/allaymc/api/entity/effect/EffectType.java @@ -31,9 +31,9 @@ default boolean isBad() { return false; } + default void onTick(Entity entity, EffectInstance effectInstance) {} + default void onAdd(Entity entity, EffectInstance effectInstance) {} default void onRemove(Entity entity, EffectInstance effectInstance) {} - - default void onTick(Entity entity, EffectInstance effectInstance) {} } diff --git a/Allay-API/src/main/java/org/allaymc/api/entity/effect/type/EffectAbsorptionType.java b/Allay-API/src/main/java/org/allaymc/api/entity/effect/type/EffectAbsorptionType.java index eff028021..386a7f1bd 100644 --- a/Allay-API/src/main/java/org/allaymc/api/entity/effect/type/EffectAbsorptionType.java +++ b/Allay-API/src/main/java/org/allaymc/api/entity/effect/type/EffectAbsorptionType.java @@ -21,8 +21,8 @@ private EffectAbsorptionType() { @Override public void onAdd(Entity entity, EffectInstance effectInstance) { - var amplifier = effectInstance.getAmplifier(); - int newValue = (amplifier + 1) << 2; + var amplifier = effectInstance.getAmplifier() + 1; + var newValue = amplifier * 4; if (newValue > entity.getAbsorption()) { entity.setAbsorption(newValue); } diff --git a/Allay-API/src/main/java/org/allaymc/api/entity/effect/type/EffectHealthBoostType.java b/Allay-API/src/main/java/org/allaymc/api/entity/effect/type/EffectHealthBoostType.java index b96df1beb..aceedf340 100644 --- a/Allay-API/src/main/java/org/allaymc/api/entity/effect/type/EffectHealthBoostType.java +++ b/Allay-API/src/main/java/org/allaymc/api/entity/effect/type/EffectHealthBoostType.java @@ -1,6 +1,8 @@ package org.allaymc.api.entity.effect.type; +import org.allaymc.api.entity.Entity; import org.allaymc.api.entity.effect.AbstractEffectType; +import org.allaymc.api.entity.effect.EffectInstance; import org.allaymc.api.utils.Identifier; import java.awt.*; @@ -16,4 +18,19 @@ public class EffectHealthBoostType extends AbstractEffectType { private EffectHealthBoostType() { super(21, new Identifier("minecraft:health_boost"), new Color(248, 125, 35)); } + + @Override + public void onAdd(Entity entity, EffectInstance effectInstance) { + var amplifier = effectInstance.getAmplifier() + 1; + entity.setMaxHealth(entity.getMaxHealth() + (amplifier * 4)); + } + + @Override + public void onRemove(Entity entity, EffectInstance effectInstance) { + var amplifier = effectInstance.getAmplifier() + 1; + entity.setMaxHealth(entity.getMaxHealth() - (amplifier * 4)); + if (entity.getHealth() > entity.getMaxHealth()) { + entity.setHealth(entity.getMaxHealth()); + } + } } diff --git a/Allay-API/src/main/java/org/allaymc/api/entity/effect/type/EffectInvisibilityType.java b/Allay-API/src/main/java/org/allaymc/api/entity/effect/type/EffectInvisibilityType.java index f0fbda6c0..1d9be7b7e 100644 --- a/Allay-API/src/main/java/org/allaymc/api/entity/effect/type/EffectInvisibilityType.java +++ b/Allay-API/src/main/java/org/allaymc/api/entity/effect/type/EffectInvisibilityType.java @@ -4,7 +4,6 @@ import org.allaymc.api.entity.effect.AbstractEffectType; import org.allaymc.api.entity.effect.EffectInstance; import org.allaymc.api.utils.Identifier; -import org.cloudburstmc.protocol.bedrock.data.entity.EntityDataTypes; import org.cloudburstmc.protocol.bedrock.data.entity.EntityFlag; import java.awt.*; diff --git a/Allay-API/src/main/java/org/allaymc/api/entity/interfaces/EntityVillagerV2.java b/Allay-API/src/main/java/org/allaymc/api/entity/interfaces/EntityVillagerV2.java index c5c0a980e..063da1a1c 100644 --- a/Allay-API/src/main/java/org/allaymc/api/entity/interfaces/EntityVillagerV2.java +++ b/Allay-API/src/main/java/org/allaymc/api/entity/interfaces/EntityVillagerV2.java @@ -1,15 +1,11 @@ package org.allaymc.api.entity.interfaces; import org.allaymc.api.entity.Entity; -import org.allaymc.api.entity.component.common.EntityAttributeComponent; import org.allaymc.api.entity.component.common.EntityDamageComponent; /** * @author daoge_cmd
* Allay Project
*/ -public interface EntityVillagerV2 extends - Entity, - EntityAttributeComponent, - EntityDamageComponent { +public interface EntityVillagerV2 extends Entity, EntityDamageComponent { }