aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.World/MobCategory.h
diff options
context:
space:
mode:
authordaoge_cmd <3523206925@qq.com>2026-03-01 12:16:08 +0800
committerdaoge_cmd <3523206925@qq.com>2026-03-01 12:16:08 +0800
commitb691c43c44ff180d10e7d4a9afc83b98551ff586 (patch)
tree3e9849222cbc6ba49f2f1fc6e5fe7179632c7390 /Minecraft.World/MobCategory.h
parentdef8cb415354ac390b7e89052a50605285f1aca9 (diff)
Initial commit
Diffstat (limited to 'Minecraft.World/MobCategory.h')
-rw-r--r--Minecraft.World/MobCategory.h82
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();
+};