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/MobCategory.h | |
| parent | def8cb415354ac390b7e89052a50605285f1aca9 (diff) | |
Initial commit
Diffstat (limited to 'Minecraft.World/MobCategory.h')
| -rw-r--r-- | Minecraft.World/MobCategory.h | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/Minecraft.World/MobCategory.h b/Minecraft.World/MobCategory.h new file mode 100644 index 00000000..a978c40e --- /dev/null +++ b/Minecraft.World/MobCategory.h @@ -0,0 +1,82 @@ +#pragma once +using namespace std; + +class Material; + +class MobCategory +{ +public: + // 4J - putting constants for xbox spawning in one place to tidy things up a bit - all numbers are per level + static const int CONSOLE_MONSTERS_HARD_LIMIT = 50; // Max number of enemies (skeleton, zombie, creeper etc) that the mob spawner will produce + static const int CONSOLE_ANIMALS_HARD_LIMIT = 50; // Max number of animals (cows, sheep, pigs) that the mob spawner will produce + + static const int MAX_XBOX_CHICKENS = 8; // Max number of chickens that the mob spawner will produce + static const int MAX_XBOX_WOLVES = 8; // Max number of wolves that the mob spawner will produce + static const int MAX_XBOX_MUSHROOMCOWS = 2; // Max number of mushroom cows that the mob spawner will produce + static const int MAX_XBOX_SNOWMEN = 16; // Max number of snow golems that can be created by placing blocks - 4J-PB increased limit due to player requests + static const int MAX_XBOX_IRONGOLEM = 16; // Max number of iron golems that can be created by placing blocks - 4J-PB increased limit due to player requests + static const int CONSOLE_SQUID_HARD_LIMIT = 5; + + static const int MAX_XBOX_ANIMALS_WITH_BREEDING = CONSOLE_ANIMALS_HARD_LIMIT + 20; // Max number of animals that we can produce (in total), when breeding + static const int MAX_XBOX_CHICKENS_WITH_BREEDING = MAX_XBOX_CHICKENS + 8; // Max number of chickens that we can produce (in total), when breeding/hatching + static const int MAX_XBOX_MUSHROOMCOWS_WITH_BREEDING = MAX_XBOX_MUSHROOMCOWS + 20; // Max number of mushroom cows that we can produce (in total), when breeding + static const int MAX_XBOX_WOLVES_WITH_BREEDING = MAX_XBOX_WOLVES + 8; // Max number of wolves that we can produce (in total), when breeding + static const int MAX_VILLAGERS_WITH_BREEDING = 35; + + static const int MAX_XBOX_ANIMALS_WITH_SPAWN_EGG = MAX_XBOX_ANIMALS_WITH_BREEDING + 20; + static const int MAX_XBOX_CHICKENS_WITH_SPAWN_EGG = MAX_XBOX_CHICKENS_WITH_BREEDING + 10; + static const int MAX_XBOX_WOLVES_WITH_SPAWN_EGG = MAX_XBOX_WOLVES_WITH_BREEDING + 10; + static const int MAX_XBOX_MONSTERS_WITH_SPAWN_EGG = CONSOLE_MONSTERS_HARD_LIMIT + 20; + static const int MAX_XBOX_VILLAGERS_WITH_SPAWN_EGG = MAX_VILLAGERS_WITH_BREEDING + 15; // 4J-PB - increased this limit due to player requests + static const int MAX_XBOX_MUSHROOMCOWS_WITH_SPAWN_EGG = MAX_XBOX_MUSHROOMCOWS_WITH_BREEDING + 8; + static const int MAX_XBOX_SQUIDS_WITH_SPAWN_EGG = CONSOLE_SQUID_HARD_LIMIT + 8; + + /* + Maximum animals = 50 + 20 + 20 = 90 + Maximum monsters = 50 + 20 = 70 + Maximum chickens = 8 + 8 + 10 = 26 + Maximum wolves = 8 + 8 + 10 = 26 + Maximum mooshrooms = 2 + 20 + 8 = 30 + Maximum snowmen = 16 + Maximum iron golem = 16 + Maximum squid = 5 + 8 = 13 + Maximum villagers = 35 + 15 = 50 + + Maximum natural = 50 + 50 + 8 + 8 + 2 + 5 + 35 = 158 + Total maxium = 90 + 70 + 26 + 26 + 30 + 16 + 16 + 13 + 50 = 337 + */ + + static MobCategory *monster; + static MobCategory *creature; + static MobCategory *waterCreature; + // 4J added extra categories, to break these out of general creatures & give us more control of levels + static MobCategory *creature_wolf; + static MobCategory *creature_chicken; + static MobCategory *creature_mushroomcow; + + // 4J Stu Sometimes we want to access the values by name, other times iterate over all values + // Added these arrays so we can static initialise a collection which we can iterate over + static MobCategoryArray values; + + +private: + const int m_max; + const int m_maxPerLevel; + const Material *spawnPositionMaterial; + const bool m_isFriendly; + const bool m_isSingleType; // 4J Added + const eINSTANCEOF m_eBase; // 4J added + + MobCategory(int maxVar, Material *spawnPositionMaterial, bool isFriendly, eINSTANCEOF eBase, bool isSingleType, int maxPerLevel); + +public: + const type_info getBaseClass(); + const eINSTANCEOF getEnumBaseClass(); // 4J added + int getMaxInstancesPerChunk(); + int getMaxInstancesPerLevel(); // 4J added + Material *getSpawnPositionMaterial(); + bool isFriendly(); + bool isSingleType(); +public: + static void staticCtor(); +}; |
