-const int Inventory_groups_minor = 8; // exactly 1 byte
-const int Inventory_groups_major = 3; // ceil(Items_MAX / Inventory_groups_minor)
+const int Inventory_groups_minor = 8; // must be a multiple of 8 (one byte) to optimize bandwidth usage
+const int Inventory_groups_major = 4; // must be >= ceil(REGISTRY_COUNT(Items) / Inventory_groups_minor)
+#endif
+
+// no need to perform these checks on both server and client
+#ifdef CSQC
+STATIC_INIT(Inventory)
+{
+ if (Inventory_groups_minor / 8 != floor(Inventory_groups_minor / 8))
+ error("Inventory_groups_minor is not a multiple of 8.");
+ int min_major_value = ceil(REGISTRY_COUNT(Items) / Inventory_groups_minor);
+ if (Inventory_groups_major < min_major_value)
+ error(sprintf("Inventory_groups_major can not be < %d.", min_major_value));
+}
+#endif