Files
MinecraftConsoles/Minecraft.World/ParticleTypes.h
2026-03-01 12:16:08 +08:00

56 lines
2.2 KiB
C

#pragma once
// 4J-PB added to avoid string compares on adding particles
enum ePARTICLE_TYPE
{
eParticleType_bubble,
eParticleType_smoke,
eParticleType_note,
eParticleType_netherportal, // 4J - This particle should only be used by the Nether portal. Everything else should use eParticleType_end
eParticleType_endportal, // 4J - Seperated this from torches and fires
eParticleType_explode,
eParticleType_flame,
eParticleType_lava,
eParticleType_footstep,
eParticleType_splash,
eParticleType_largesmoke,
eParticleType_reddust,
eParticleType_snowballpoof,
eParticleType_snowshovel,
eParticleType_slime,
eParticleType_heart,
eParticleType_suspended,
eParticleType_depthsuspend,
eParticleType_crit,
eParticleType_hugeexplosion,
eParticleType_largeexplode,
eParticleType_townaura,
eParticleType_spell,
eParticleType_mobSpell,
eParticleType_instantSpell,
eParticleType_magicCrit,
eParticleType_dripWater,
eParticleType_dripLava,
eParticleType_enchantmenttable,
eParticleType_dragonbreath,
eParticleType_ender, // 4J Added - These are things that used the "portal" particle but are actually end related entities
eParticleType_angryVillager,
eParticleType_happyVillager,
// 4J-JEV: In the java, the particle name was used to sneak parameters in for the Terrain and IconCrack particle constructors.
eParticleType_iconcrack_base = 0x100000, // There's range of iconcrack particle types based on item id and data.
eParticleType_iconcrack_last = 0x1FFFFF,
eParticleType_tilecrack_base = 0x200000, // There's a range of tilecrack particle types based on tile id and data.
eParticleType_tilecrack_last = 0x2FFFFF,
// 0x0000FF, <- these bits are for storing the data value.
// 0x0FFF00, <- these bits are for encoding tile/item id.
// 0x300000, <- these bits show if its an icon/tile or not.
};
#define PARTICLE_TILECRACK(id,data) ( (ePARTICLE_TYPE) ( ((int) eParticleType_tilecrack_base) | ((0x0FFF & id) << 8) | (0x0FF & data)) )
#define PARTICLE_ICONCRACK(id,data) ( (ePARTICLE_TYPE) ( ((int) eParticleType_iconcrack_base) | ((0x0FFF & id) << 8) | (0x0FF & data)) )
#define PARTICLE_CRACK_ID(ePType) ((0x0FFF00 & (int)ePType) >> 8)
#define PARTICLE_CRACK_DATA(ePType) (0x0FF & (int)ePType)