6.8 KiB
6.8 KiB
dbBlueprintHandler Documentation
Overview
The dbBlueprintHandler is responsible for managing building blueprint data and door number mappings in the Magicbane database. This handler loads blueprint information used for building construction and handles door mesh-to-number mappings.
Database Table Structure
Table: static_building_blueprint
| Column Name | Data Type | Nullable | Key | Description |
|---|---|---|---|---|
| Rank0UUID | bigint unsigned | NO | PRIMARY | Unique identifier for the blueprint (rank 0) |
| MeshName | varchar(100) | NO | Name of the mesh used for the building | |
| BuildingGroup | enum | NO | Group classification of the building type | |
| MaintGroup | varchar(45) | YES | Maintenance group associated with the building | |
| Rank1UUID | bigint unsigned | YES | UUID for rank 1 upgrade | |
| Rank2UUID | bigint unsigned | YES | UUID for rank 2 upgrade | |
| Rank3UUID | bigint unsigned | YES | UUID for rank 3 upgrade | |
| Rank4UUID | bigint unsigned | YES | UUID for rank 4 upgrade | |
| Rank5UUID | bigint unsigned | YES | UUID for rank 5 upgrade | |
| Rank6UUID | bigint unsigned | YES | UUID for rank 6 upgrade | |
| Rank7UUID | bigint unsigned | YES | UUID for rank 7 upgrade | |
| UpgradeCost | int | YES | Cost to upgrade the building | |
| UpgradeTime | int | YES | Time required to upgrade the building | |
| MaxHP | int | YES | Maximum hit points of the building | |
| MaxGold | int | YES | Maximum gold storage capacity | |
| MaxLevel | int | YES | Maximum level for this building | |
| MaxRank | int | YES | Maximum rank for this building | |
| MinLevel | int | YES | Minimum level required to build | |
| Scale | float | YES | Scale factor for the building mesh | |
| SizeX | float | YES | X dimension size | |
| SizeY | float | YES | Y dimension size | |
| SizeZ | float | YES | Z dimension size | |
| DoorCount | int | YES | Number of doors in this building | |
| MaxDoorCount | int | YES | Maximum number of doors allowed | |
| IsWall | tinyint(1) | YES | Flag indicating if building is a wall | |
| IsGate | tinyint(1) | YES | Flag indicating if building is a gate | |
| IsTower | tinyint(1) | YES | Flag indicating if building is a tower | |
| IsKeep | tinyint(1) | YES | Flag indicating if building is a keep | |
| IsFortress | tinyint(1) | YES | Flag indicating if building is a fortress | |
| IsCastle | tinyint(1) | YES | Flag indicating if building is a castle | |
| IsBarracks | tinyint(1) | YES | Flag indicating if building is barracks | |
| IsChurch | tinyint(1) | YES | Flag indicating if building is a church | |
| IsForge | tinyint(1) | YES | Flag indicating if building is a forge | |
| IsSpire | tinyint(1) | YES | Flag indicating if building is a spire | |
| IsShrine | tinyint(1) | YES | Flag indicating if building is a shrine | |
| IsRunegate | tinyint(1) | YES | Flag indicating if building is a runegate | |
| IsMine | tinyint(1) | YES | Flag indicating if building is a mine | |
| IsWarehouse | tinyint(1) | YES | Flag indicating if building is a warehouse |
Table: static_building_doors
| Column Name | Data Type | Nullable | Key | Description |
|---|---|---|---|---|
| doorMeshUUID | int | NO | PRIMARY | Unique identifier for the door mesh |
| doorNumber | int | NO | Door number associated with this mesh |
Java Field to Database Column Mapping
| Java Field | Database Column | Type | Description |
|---|---|---|---|
| blueprint.getBlueprintUUID() | Rank0UUID | bigint unsigned | Blueprint unique identifier |
| blueprint.getMeshName() | MeshName | varchar(100) | Name of the building mesh |
| blueprint.getBuildingGroup() | BuildingGroup | enum | Group classification of the building |
| blueprint.getMaintGroup() | MaintGroup | varchar(45) | Maintenance group for this building |
| blueprint.getRank1UUID() | Rank1UUID | bigint unsigned | UUID for rank 1 upgrade |
| blueprint.getRank2UUID() | Rank2UUID | bigint unsigned | UUID for rank 2 upgrade |
| blueprint.getRank3UUID() | Rank3UUID | bigint unsigned | UUID for rank 3 upgrade |
| blueprint.getRank4UUID() | Rank4UUID | bigint unsigned | UUID for rank 4 upgrade |
| blueprint.getRank5UUID() | Rank5UUID | bigint unsigned | UUID for rank 5 upgrade |
| blueprint.getRank6UUID() | Rank6UUID | bigint unsigned | UUID for rank 6 upgrade |
| blueprint.getRank7UUID() | Rank7UUID | bigint unsigned | UUID for rank 7 upgrade |
| blueprint.getUpgradeCost() | UpgradeCost | int | Cost to upgrade the building |
| blueprint.getUpgradeTime() | UpgradeTime | int | Time required to upgrade |
| blueprint.getMaxHP() | MaxHP | int | Maximum hit points |
| blueprint.getMaxGold() | MaxGold | int | Maximum gold storage |
| blueprint.getMaxLevel() | MaxLevel | int | Maximum level for this building |
| blueprint.getMaxRank() | MaxRank | int | Maximum rank |
| blueprint.getMinLevel() | MinLevel | int | Minimum level required |
| blueprint.getScale() | Scale | float | Scale factor for mesh |
| blueprint.getSizeX() | SizeX | float | X dimension size |
| blueprint.getSizeY() | SizeY | float | Y dimension size |
| blueprint.getSizeZ() | SizeZ | float | Z dimension size |
| blueprint.getDoorCount() | DoorCount | int | Number of doors |
| blueprint.getMaxDoorCount() | MaxDoorCount | int | Maximum number of doors |
| blueprint.getIsWall() | IsWall | tinyint(1) | Wall flag |
| blueprint.getIsGate() | IsGate | tinyint(1) | Gate flag |
| blueprint.getIsTower() | IsTower | tinyint(1) | Tower flag |
| blueprint.getIsKeep() | IsKeep | tinyint(1) | Keep flag |
| blueprint.getIsFortress() | IsFortress | tinyint(1) | Fortress flag |
| blueprint.getIsCastle() | IsCastle | tinyint(1) | Castle flag |
| blueprint.getIsBarracks() | IsBarracks | tinyint(1) | Barracks flag |
| blueprint.getIsChurch() | IsChurch | tinyint(1) | Church flag |
| blueprint.getIsForge() | IsForge | tinyint(1) | Forge flag |
| blueprint.getIsSpire() | IsSpire | tinyint(1) | Spire flag |
| blueprint.getIsShrine() | IsShrine | tinyint(1) | Shrine flag |
| blueprint.getIsRunegate() | IsRunegate | tinyint(1) | Runegate flag |
| blueprint.getIsMine() | IsMine | tinyint(1) | Mine flag |
| blueprint.getIsWarehouse() | IsWarehouse | tinyint(1) | Warehouse flag |
Key Queries
LOAD_ALL_DOOR_NUMBERS
- Query:
SELECT * FROM static_building_doors ORDER BY doorMeshUUID ASC - Note: Loads all door mesh-to-number mappings for building doors
LOAD_ALL_BLUEPRINTS
- Query:
SELECT * FROM static_building_blueprint - Note: Loads all blueprint definitions for buildings
Relationships
Foreign Key Relationships
- None explicitly defined in the handler code (these are likely static lookup tables)
Associated Objects
- Blueprint: Building construction data with mesh information and upgrade paths
- Door: Door mesh mappings used for building construction