Files
Server/src/engine/documentation/Handler Specific Documentation/dbBlueprintHandler_Documentation.md
T

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