From b691c43c44ff180d10e7d4a9afc83b98551ff586 Mon Sep 17 00:00:00 2001 From: daoge_cmd <3523206925@qq.com> Date: Sun, 1 Mar 2026 12:16:08 +0800 Subject: Initial commit --- Minecraft.World/MobEffect.h | 114 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 114 insertions(+) create mode 100644 Minecraft.World/MobEffect.h (limited to 'Minecraft.World/MobEffect.h') diff --git a/Minecraft.World/MobEffect.h b/Minecraft.World/MobEffect.h new file mode 100644 index 00000000..b0460bf1 --- /dev/null +++ b/Minecraft.World/MobEffect.h @@ -0,0 +1,114 @@ +#pragma once +using namespace std; + +class Mob; +class MobEffectInstance; + +class MobEffect +{ +public: + enum EMobEffectIcon + { + e_MobEffectIcon_None, + e_MobEffectIcon_Blindness, + e_MobEffectIcon_FireResistance, + e_MobEffectIcon_Haste, + e_MobEffectIcon_Hunger, + e_MobEffectIcon_Invisiblity, + e_MobEffectIcon_JumpBoost, + e_MobEffectIcon_MiningFatigue, + e_MobEffectIcon_Nausea, + e_MobEffectIcon_NightVision, + e_MobEffectIcon_Poison, + e_MobEffectIcon_Regeneration, + e_MobEffectIcon_Resistance, + e_MobEffectIcon_Slowness, + e_MobEffectIcon_Speed, + e_MobEffectIcon_Strength, + e_MobEffectIcon_WaterBreathing, + e_MobEffectIcon_Weakness, + + e_MobEffectIcon_COUNT, + }; + + static const int NUM_EFFECTS = 32; + static MobEffect *effects[NUM_EFFECTS]; + + static MobEffect *voidEffect; + static MobEffect *movementSpeed; + static MobEffect *movementSlowdown; + static MobEffect *digSpeed; + static MobEffect *digSlowdown; + static MobEffect *damageBoost; + static MobEffect *heal; + static MobEffect *harm; + static MobEffect *jump; + static MobEffect *confusion; + static MobEffect *regeneration; + static MobEffect *damageResistance; + static MobEffect *fireResistance; + static MobEffect *waterBreathing; + static MobEffect *invisibility; + static MobEffect *blindness; + static MobEffect *nightVision; + static MobEffect *hunger; + static MobEffect *weakness; + static MobEffect *poison; + static MobEffect *reserved_20; + static MobEffect *reserved_21; + static MobEffect *reserved_22; + static MobEffect *reserved_23; + static MobEffect *reserved_24; + static MobEffect *reserved_25; + static MobEffect *reserved_26; + static MobEffect *reserved_27; + static MobEffect *reserved_28; + static MobEffect *reserved_29; + static MobEffect *reserved_30; + static MobEffect *reserved_31; + + const int id; + +private: + int descriptionId; + int m_postfixDescriptionId; // 4J added + EMobEffectIcon icon; // 4J changed type + const bool _isHarmful; + double durationModifier; + bool _isDisabled; + const eMinecraftColour color; + +protected: + MobEffect(int id, bool isHarmful, eMinecraftColour color); + + //MobEffect *setIcon(int xPos, int yPos); + MobEffect *setIcon(EMobEffectIcon icon); + +public: + int getId(); + void applyEffectTick(shared_ptr mob, int amplification); + void applyInstantenousEffect(shared_ptr source, shared_ptr mob, int amplification, double scale); + virtual bool isInstantenous(); + virtual bool isDurationEffectTick(int remainingDuration, int amplification); + + MobEffect *setDescriptionId(unsigned int id); + unsigned int getDescriptionId(int iData = -1); + + // 4J Added + MobEffect *setPostfixDescriptionId(unsigned int id); + unsigned int getPostfixDescriptionId(int iData = -1); + + bool hasIcon(); + EMobEffectIcon getIcon(); // 4J changed return type + bool isHarmful(); + static wstring formatDuration(MobEffectInstance *instance); + +protected: + MobEffect *setDurationModifier(double durationModifier); + +public: + double getDurationModifier(); + MobEffect *setDisabled(); + bool isDisabled(); + eMinecraftColour getColor(); +}; \ No newline at end of file -- cgit v1.2.3