@ -94,42 +94,26 @@ public class Zone extends AbstractWorldObject {
				@@ -94,42 +94,26 @@ public class Zone extends AbstractWorldObject {
					 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            this . icon3  =  rs . getString ( "icon3" ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            this . min_level  =  rs . getInt ( "min_level" ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            this . max_level  =  rs . getInt ( "max_level" ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            this . major_radius  =  rs . getFloat ( "major_radius" ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            this . minor_radius  =  rs . getFloat ( "minor_radius" ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            this . min_blend  =  rs . getFloat ( "min_blend" ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            this . max_blend  =  rs . getFloat ( "max_blend" ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            this . sea_level_type  =  rs . getString ( "sea_level_type" ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            this . sea_level_offset  =  rs . getFloat ( "sea_level" ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            this . terrain_type  =  rs . getString ( "terrain_type" ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            this . terrain_max_y  =  rs . getFloat ( "terrain_max_y" ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            this . terrain_image  =  rs . getInt ( "terrain_image" ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            if  ( this . guild_zone )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                this . max_blend  =  128 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                this . min_blend  =  128 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                this . terrain_max_y  =  5 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                this . major_radius  =  ( int )  Enum . CityBoundsType . ZONE . halfExtents ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                this . minor_radius  =  ( int )  Enum . CityBoundsType . ZONE . halfExtents ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                this . terrain_type  =  "PLANAR" ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            if  ( this . terrain_type . equals ( "NONE" ) )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                this . terrain  =  null ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            else   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                this . terrain  =  new  Terrain ( this ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            //this needs to be here specifically for new zones created after server boot (e.g. player city zones)
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            Zone  parentZone  =  ZoneManager . getZoneByUUID ( parentZoneID ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            this . setParent ( parentZone ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            if  ( this . min_level  = =  0  & &  parentZone  ! =  null )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                this . min_level  =  parentZone . min_level ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                this . max_level  =  parentZone . max_level ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( parentZone  ! =  null )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            parentZone . addNode ( this ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        this . major_radius  =  rs . getFloat ( "major_radius" ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        this . minor_radius  =  rs . getFloat ( "minor_radius" ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        this . min_blend  =  rs . getFloat ( "min_blend" ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        this . max_blend  =  rs . getFloat ( "max_blend" ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        this . sea_level_type  =  rs . getString ( "sea_level_type" ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        this . sea_level_offset  =  rs . getFloat ( "sea_level" ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        this . terrain_type  =  rs . getString ( "terrain_type" ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        this . terrain_max_y  =  rs . getFloat ( "terrain_max_y" ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        this . terrain_image  =  rs . getInt ( "terrain_image" ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        // Configuration for player cities
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( this . guild_zone )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            this . max_blend  =  128 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            this . min_blend  =  128 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            this . terrain_max_y  =  5 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            this . major_radius  =  ( int )  Enum . CityBoundsType . ZONE . halfExtents ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            this . minor_radius  =  ( int )  Enum . CityBoundsType . ZONE . halfExtents ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            this . terrain_type  =  "PLANAR" ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        // If zone doesn't yet hava a hash then write it back to the zone table
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -141,6 +125,31 @@ public class Zone extends AbstractWorldObject {
				@@ -141,6 +125,31 @@ public class Zone extends AbstractWorldObject {
					 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    @Override   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    public  void  runAfterLoad ( )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        // First zone is always the seafloor
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( ZoneManager . seaFloor  = =  null )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            ZoneManager . seaFloor  =  this ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( this . terrain_type . equals ( "NONE" ) )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            this . terrain  =  null ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        else   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            this . terrain  =  new  Terrain ( this ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        //this needs to be here specifically for new zones created after server boot (e.g. player city zones)
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        Zone  parentZone  =  ZoneManager . getZoneByUUID ( parentZoneID ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        this . setParent ( parentZone ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( this . min_level  = =  0  & &  parentZone  ! =  null )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            this . min_level  =  parentZone . min_level ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            this . max_level  =  parentZone . max_level ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( parentZone  ! =  null )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            parentZone . addNode ( this ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        ZoneManager . populateZoneCollections ( this ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    public  static  void  serializeForClientMsg ( Zone  zone ,  ByteBufferWriter  writer )  {