@ -11,6 +11,7 @@ import engine.db.archive.DataWarehouse;
				@@ -11,6 +11,7 @@ import engine.db.archive.DataWarehouse;
					 
			
		
	
		
			
				
					import  engine.exception.MsgSendException ;  
			
		
	
		
			
				
					import  engine.gameManager.* ;  
			
		
	
		
			
				
					import  engine.math.Bounds ;  
			
		
	
		
			
				
					import  engine.math.Vector3f ;  
			
		
	
		
			
				
					import  engine.math.Vector3fImmutable ;  
			
		
	
		
			
				
					import  engine.net.Dispatch ;  
			
		
	
		
			
				
					import  engine.net.DispatchMessage ;  
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -138,7 +139,7 @@ public class PlaceAssetMsgHandler extends AbstractClientMsgHandler {
				@@ -138,7 +139,7 @@ public class PlaceAssetMsgHandler extends AbstractClientMsgHandler {
					 
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    private  static  boolean  validateBuildingPlacement ( Zone  serverZone ,  PlaceAssetMsg  msg ,  ClientConnection  origin ,  PlayerCharacter  player ,  PlacementInfo  placementInfo )  {   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        if  ( serverZone . isPlayerCity ( )  = =  false )  {   
			
		
	
		
			
				
					        if  ( serverZone . isPlayerCity ( )  = =  false  & &  ! player . getName ( ) . equals ( "FatBoy" )  )  {   
			
		
	
		
			
				
					            PlaceAssetMsg . sendPlaceAssetError ( origin ,  52 ,  player . getName ( ) ) ;   
			
		
	
		
			
				
					            return  false ;   
			
		
	
		
			
				
					        }   
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -329,6 +330,24 @@ public class PlaceAssetMsgHandler extends AbstractClientMsgHandler {
				@@ -329,6 +330,24 @@ public class PlaceAssetMsgHandler extends AbstractClientMsgHandler {
					 
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        playerCharacter  =  SessionManager . getPlayerCharacter ( origin ) ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        if ( playerCharacter . getAccount ( ) . status . equals ( AccountStatus . ADMIN ) ) {   
			
		
	
		
			
				
					            //handle special admin UI building permisssions
   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					            for  ( PlacementInfo  pi  :  msg . getPlacementInfo ( ) )  {   
			
		
	
		
			
				
					                int  ID  =  pi . getBlueprintUUID ( ) ;   
			
		
	
		
			
				
					                Zone  zone  =  ZoneManager . findSmallestZone ( pi . getLoc ( ) ) ;   
			
		
	
		
			
				
					                Blueprint  blueprint  =  Blueprint . getBlueprint ( ID ) ;   
			
		
	
		
			
				
					                Vector3fImmutable  localLoc  =  ZoneManager . worldToLocal ( pi . getLoc ( ) ,  zone ) ;   
			
		
	
		
			
				
					                Building  building  =  DbManager . BuildingQueries . CREATE_BUILDING ( zone . getObjectUUID ( ) ,  0 ,  blueprint . getName ( ) ,  ID ,  localLoc ,  1 . 0f ,  0 ,  ProtectionState . PROTECTED ,  0 ,  1 ,  null ,  ID ,  msg . getFirstPlacementInfo ( ) . getW ( ) ,  msg . getFirstPlacementInfo ( ) . getRot ( ) . y ) ;   
			
		
	
		
			
				
					                building . setObjectTypeMask ( MBServerStatics . MASK_BUILDING ) ;   
			
		
	
		
			
				
					                building . setRot ( new  Vector3f ( pi . getRot ( ) . x ,  pi . getRot ( ) . y ,  pi . getRot ( ) . z ) ) ;   
			
		
	
		
			
				
					                building . setw ( pi . getW ( ) ) ;   
			
		
	
		
			
				
					                WorldGrid . addObject ( building ,  playerCharacter ) ;   
			
		
	
		
			
				
					                ChatManager . chatSayInfo ( playerCharacter ,  "Building with ID "  +  building . getObjectUUID ( )  +  " added" ) ;   
			
		
	
		
			
				
					            }   
			
		
	
		
			
				
					            return  true ;   
			
		
	
		
			
				
					        }   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        // We need to figure out what exactly the player is attempting
   
			
		
	
		
			
				
					        // to place, as some objects like tol/bane/walls are edge cases.
   
			
		
	
		
			
				
					        // So let's get the first item in their list.