diff options
| author | daoge_cmd <3523206925@qq.com> | 2026-03-01 12:16:08 +0800 |
|---|---|---|
| committer | daoge_cmd <3523206925@qq.com> | 2026-03-01 12:16:08 +0800 |
| commit | b691c43c44ff180d10e7d4a9afc83b98551ff586 (patch) | |
| tree | 3e9849222cbc6ba49f2f1fc6e5fe7179632c7390 /Minecraft.World/MobEffect.h | |
| parent | def8cb415354ac390b7e89052a50605285f1aca9 (diff) | |
Initial commit
Diffstat (limited to 'Minecraft.World/MobEffect.h')
| -rw-r--r-- | Minecraft.World/MobEffect.h | 114 |
1 files changed, 114 insertions, 0 deletions
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> mob, int amplification); + void applyInstantenousEffect(shared_ptr<Mob> source, shared_ptr<Mob> 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 |
