#pragma once using namespace std; class InputStream; // This file aims to provide functionality to mimic the subset of java's Class class that we require. Classes that require this // functionality derive from BaseObject, and each contain a unique nested class definition Class. There are #defines here to // simplify declaring classes with this added functionality. // 4J Stu - This Enum can be used as a more lightweight version of the above, without having do dynamic casts // 4J-PB - for replacement of instanceof enum eINSTANCEOF { eTYPE_NOTSET=0, // 4J-RR arranging these pathfinder types in a bitfield fashion so that a single and can determine whether they are derived from // the 3 subclasses of pathfinders (water animals, animals, and monsters) that the mob spawner uses eTYPE_WATERANIMAL = 0x100, eTYPE_SQUID = 0x101, eTYPE_ANIMAL = 0x200, // 4J Stu - These have the ANIMAL, AGABLE_MOB and ANIMALS_SPAWN_LIMIT_CHECK bits set eTYPE_COW = 0x82201, eTYPE_SHEEP = 0x82202, eTYPE_PIG = 0x82203, eTYPE_SNOWMAN = 0x82204, eTYPE_OZELOT = 0x82205, // 4J Stu - When adding new categories, please also update ConsoleSchematicFile::generateSchematicFile so these can be saved out to schematics // 4J Stu- These have the ANIMAL and AGABLE_MOB bits set, but NOT ANIMALS_SPAWN_LIMIT_CHECK eTYPE_CHICKEN = 0x2206, eTYPE_WOLF = 0x2207, eTYPE_MUSHROOMCOW = 0x2208, // 4J Stu - If you add new hostile mobs here you should also update the string lookup function at CConsoleMinecraftApp::getEntityName eTYPE_MONSTER = 0x400, eTYPE_ENEMY = 0x800, eTYPE_CREEPER = 0xC01, eTYPE_GIANT = 0xC02, eTYPE_SKELETON = 0xC03, eTYPE_SPIDER = 0xC04, eTYPE_ZOMBIE = 0xC05, eTYPE_PIGZOMBIE = 0xC06, eTYPE_ENDERMAN = 0xC07, eTYPE_SILVERFISH = 0xC08, eTYPE_CAVESPIDER = 0xC09, eTYPE_BLAZE = 0xC0A, eTYPE_GHAST = 0xC0B, // Now considering as a monster even though class inheritance doesn't work like this - but otherwise breaks mob spawning eTYPE_SLIME = 0xC0C, // Now considering as a monster even though class inheritance doesn't work like this - but otherwise breaks mob spawning eTYPE_LAVASLIME = 0xC0D, eTYPE_VILLAGERGOLEM = 0x1000, eTYPE_AGABLE_MOB = 0x2000, eTYPE_PLAYER = 0x8000, eTYPE_SERVERPLAYER= 0x8001, // Include AGABLE_MOB eTYPE_VILLAGER = 0x12000, eTYPE_PROJECTILE = 0x40000, eTYPE_ARROW = 0x40001, eTYPE_FIREBALL = 0x40002, eTYPE_FISHINGHOOK = 0x40003, eTYPE_SNOWBALL = 0x40004, eTYPE_THROWNEGG = 0x40005, eTYPE_EYEOFENDERSIGNAL = 0x40006, eTYPE_SMALL_FIREBALL = 0x40007, eTYPE_THROWNENDERPEARL = 0x40008, eTYPE_THROWNPOTION = 0x40009, eTYPE_THROWNEXPBOTTLE = 0x4000A, eTYPE_ANIMALS_SPAWN_LIMIT_CHECK = 0x80000, // Never used, exists to ensure all later entities don't match the bitmasks above eTYPE_OTHERS = 0x100000, eTYPE_NETHER_SPHERE, eTYPE_ENDER_CRYSTAL, eTYPE_ENDERDRAGON, eTYPE_BOSS_MOB_PART, eTYPE_ENTITY, eTYPE_MOB, eTYPE_LIGHTNINGBOLT, eTYPE_PAINTING, eTYPE_ITEMENTITY, eTYPE_FALLINGTILE, eTYPE_BOAT, eTYPE_MINECART, eTYPE_PRIMEDTNT, eTYPE_TILEENTITY, eTYPE_CHESTTILEENTITY, eTYPE_DISPENSERTILEENTITY, eTYPE_MOBSPAWNERTILEENTITY, eTYPE_FURNACETILEENTITY, eTYPE_SIGNTILEENTITY, eTYPE_MUSICTILEENTITY, eTYPE_RECORDPLAYERTILE, eTYPE_PISTONPIECEENTITY, eTYPE_BREWINGSTANDTILEENTITY, eTYPE_ENCHANTMENTTABLEENTITY, eTYPE_THEENDPORTALTILEENTITY, eTYPE_SKULLTILEENTITY, eTYPE_ENDERCHESTTILEENTITY, eType_NODE, eType_ITEM, eType_ITEMINSTANCE, eType_MAPITEM, eType_TILE, eType_FIRETILE, eType_BREAKINGITEMPARTICLE, eType_BUBBLEPARTICLE, eType_EXPLODEPARTICLE, eType_FLAMEPARTICLE, eType_FOOTSTEPPARTICLE, eType_HEARTPARTICLE, eType_LAVAPARTICLE, eType_NOTEPARTICLE, eType_NETHERPORTALPARTICLE, eType_REDDUSTPARTICLE, eType_SMOKEPARTICLE, eType_SNOWSHOVELPARTICLE, eType_SPLASHPARTICLE, eType_TAKEANIMATIONPARTICLE, eType_TERRAINPARTICLE, eType_WATERDROPPARTICLE, // 1.8.2 eTYPE_DELAYEDRELEASE, eTYPE_EXPERIENCEORB, eType_CRITPARTICLE, eType_CRITPARTICLE2, eType_HUGEEXPLOSIONPARTICLE, eType_HUGEEXPLOSIONSEEDPARTICLE, eType_PLAYERCLOUDPARTICLEPARTICLE, eType_SUSPENDEDPARTICLE, eType_SUSPENDEDTOWNPARTICLE, //1.0.1 eTYPE_DRIPPARTICLE, eTYPE_ENCHANTMENTTABLEPARTICLE, eTYPE_SPELLPARTICLE, //TU9 eTYPE_HANGING_ENTITY, eTYPE_ITEM_FRAME, eTYPE_DRAGONBREATHPARTICLE, eTYPE_DRAGON_FIREBALL, eType_ENDERPARTICLE, };