|  |  | @ -14,6 +14,7 @@ import engine.InterestManagement.WorldGrid; | 
			
		
	
		
		
			
				
					
					|  |  |  | import engine.job.JobContainer; |  |  |  | import engine.job.JobContainer; | 
			
		
	
		
		
			
				
					
					|  |  |  | import engine.job.JobScheduler; |  |  |  | import engine.job.JobScheduler; | 
			
		
	
		
		
			
				
					
					|  |  |  | import engine.jobs.UpgradeBuildingJob; |  |  |  | import engine.jobs.UpgradeBuildingJob; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | import engine.loot.WorkOrder; | 
			
		
	
		
		
			
				
					
					|  |  |  | import engine.math.Bounds; |  |  |  | import engine.math.Bounds; | 
			
		
	
		
		
			
				
					
					|  |  |  | import engine.math.Vector3fImmutable; |  |  |  | import engine.math.Vector3fImmutable; | 
			
		
	
		
		
			
				
					
					|  |  |  | import engine.mbEnums; |  |  |  | import engine.mbEnums; | 
			
		
	
	
		
		
			
				
					|  |  | @ -49,8 +50,7 @@ public enum BuildingManager { | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         // Some meshes might not have slot locations assigned.
 |  |  |  |         // Some meshes might not have slot locations assigned.
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         if (slotLocations == null || |  |  |  |         if (slotLocations == null || slotLocations.isEmpty()) | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                 slotLocations.isEmpty()) |  |  |  |  | 
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |             return -1; |  |  |  |             return -1; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         int numOfSlots = _slotLocations.get(building.meshUUID).size(); |  |  |  |         int numOfSlots = _slotLocations.get(building.meshUUID).size(); | 
			
		
	
	
		
		
			
				
					|  |  | @ -69,8 +69,7 @@ public enum BuildingManager { | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         // Some meshes might not have slot locations assigned.
 |  |  |  |         // Some meshes might not have slot locations assigned.
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         if (slotLocations == null || |  |  |  |         if (slotLocations == null || slotLocations.isEmpty()) | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                 slotLocations.isEmpty()) |  |  |  |  | 
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |             return -1; |  |  |  |             return -1; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         int numOfSlots = _slotLocations.get(building.meshUUID).size(); |  |  |  |         int numOfSlots = _slotLocations.get(building.meshUUID).size(); | 
			
		
	
	
		
		
			
				
					|  |  | @ -127,22 +126,16 @@ public enum BuildingManager { | 
			
		
	
		
		
			
				
					
					|  |  |  |         if (building.getGuild().isGuildLeader(player.getObjectUUID())) |  |  |  |         if (building.getGuild().isGuildLeader(player.getObjectUUID())) | 
			
		
	
		
		
			
				
					
					|  |  |  |             return true; |  |  |  |             return true; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         if (building.getFriends().get(player.getGuild().getObjectUUID()) != null |  |  |  |         if (building.getFriends().get(player.getGuild().getObjectUUID()) != null && building.getFriends().get(player.getGuild().getObjectUUID()).friendType == 8) | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                 && building.getFriends().get(player.getGuild().getObjectUUID()).friendType == 8) |  |  |  |  | 
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |             return true; |  |  |  |             return true; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         if (building.getFriends().get(player.getGuild().getObjectUUID()) != null |  |  |  |         if (building.getFriends().get(player.getGuild().getObjectUUID()) != null && building.getFriends().get(player.getGuild().getObjectUUID()).friendType == 9 && GuildStatusController.isInnerCouncil(player.getGuildStatus())) | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                 && building.getFriends().get(player.getGuild().getObjectUUID()).friendType == 9 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |                 && GuildStatusController.isInnerCouncil(player.getGuildStatus())) |  |  |  |  | 
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |             return true; |  |  |  |             return true; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         if (Guild.sameGuild(building.getGuild(), player.getGuild()) && GuildStatusController.isInnerCouncil(player.getGuildStatus())) |  |  |  |         if (Guild.sameGuild(building.getGuild(), player.getGuild()) && GuildStatusController.isInnerCouncil(player.getGuildStatus())) | 
			
		
	
		
		
			
				
					
					|  |  |  |             return true; |  |  |  |             return true; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         if (Guild.sameGuild(building.getGuild(), player.getGuild()) && GuildStatusController.isGuildLeader(player.getGuildStatus())) |  |  |  |         return Guild.sameGuild(building.getGuild(), player.getGuild()) && GuildStatusController.isGuildLeader(player.getGuildStatus()); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             return true; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |         return false; |  |  |  |  | 
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         //TODO test friends list once added
 |  |  |  |         //TODO test friends list once added
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         //does not meet above criteria. Cannot access.
 |  |  |  |         //does not meet above criteria. Cannot access.
 | 
			
		
	
	
		
		
			
				
					|  |  | @ -168,7 +161,7 @@ public enum BuildingManager { | 
			
		
	
		
		
			
				
					
					|  |  |  |         //Somehow guild leader check fails? lets check if Player is true Guild GL.
 |  |  |  |         //Somehow guild leader check fails? lets check if Player is true Guild GL.
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         if (building.getGuild() != null && building.getGuild().isGuildLeader(player.getObjectUUID())) |  |  |  |         if (building.getGuild() != null && building.getGuild().isGuildLeader(player.getObjectUUID())) | 
			
		
	
		
		
			
				
					
					|  |  |  |             return true; |  |  |  |             return true; | 
			
		
	
		
		
			
				
					
					|  |  |  |         if (GuildStatusController.isGuildLeader(player.getGuildStatus()) == false && GuildStatusController.isInnerCouncil(player.getGuildStatus()) == false) |  |  |  |         if (!GuildStatusController.isGuildLeader(player.getGuildStatus()) && !GuildStatusController.isInnerCouncil(player.getGuildStatus())) | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |             return false; |  |  |  |             return false; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
	
		
		
			
				
					|  |  | @ -274,9 +267,7 @@ public enum BuildingManager { | 
			
		
	
		
		
			
				
					
					|  |  |  |         // Submit upgrade job for future date or current instant
 |  |  |  |         // Submit upgrade job for future date or current instant
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         if (building.getUpgradeDateTime().isAfter(LocalDateTime.now())) { |  |  |  |         if (building.getUpgradeDateTime().isAfter(LocalDateTime.now())) { | 
			
		
	
		
		
			
				
					
					|  |  |  |             JobContainer jc = JobScheduler.getInstance().scheduleJob(new UpgradeBuildingJob(building), |  |  |  |             JobContainer jc = JobScheduler.getInstance().scheduleJob(new UpgradeBuildingJob(building), building.getUpgradeDateTime().atZone(ZoneId.systemDefault()).toInstant().toEpochMilli()); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                     building.getUpgradeDateTime().atZone(ZoneId.systemDefault()) |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |                             .toInstant().toEpochMilli()); |  |  |  |  | 
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |         } else |  |  |  |         } else | 
			
		
	
		
		
			
				
					
					|  |  |  |             JobScheduler.getInstance().scheduleJob(new UpgradeBuildingJob(building), 0); |  |  |  |             JobScheduler.getInstance().scheduleJob(new UpgradeBuildingJob(building), 0); | 
			
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |     } | 
			
		
	
	
		
		
			
				
					|  |  | @ -335,10 +326,16 @@ public enum BuildingManager { | 
			
		
	
		
		
			
				
					
					|  |  |  |             WorldGrid.RemoveWorldObject(minionMob); |  |  |  |             WorldGrid.RemoveWorldObject(minionMob); | 
			
		
	
		
		
			
				
					
					|  |  |  |             WorldGrid.unloadObject(minionMob); |  |  |  |             WorldGrid.unloadObject(minionMob); | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |             if (minionMob.getParentZone() != null) |  |  |  |             if (minionMob.parentZone != null) | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                 minionMob.getParentZone().zoneMobSet.remove(minionMob); |  |  |  |                 minionMob.parentZone.zoneMobSet.remove(minionMob); | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |         } |  |  |  |         } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         // Clear all workorders for this hireling
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         if (hireling.getObjectType().equals(GameObjectType.NPC)) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             if (ForgeManager.vendorWorkOrderLookup.contains(hireling)) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 for (WorkOrder workOrder : ForgeManager.vendorWorkOrderLookup.get(hireling)) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     DbManager.WarehouseQueries.DELETE_WORKORDER(workOrder); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         // Remove hireling from building
 |  |  |  |         // Remove hireling from building
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         building.getHirelings().remove(hireling); |  |  |  |         building.getHirelings().remove(hireling); | 
			
		
	
	
		
		
			
				
					|  |  | @ -349,9 +346,11 @@ public enum BuildingManager { | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |             Mob hirelingMob = (Mob) hireling; |  |  |  |             Mob hirelingMob = (Mob) hireling; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |             if (hirelingMob.getParentZone() != null) |  |  |  |             if (hirelingMob.parentZone != null) { | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                 if (hirelingMob.getParentZone().zoneMobSet.contains(hirelingMob)) |  |  |  |                 if (hirelingMob.parentZone.zoneMobSet.contains(hirelingMob)) { | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                     hirelingMob.getParentZone().zoneMobSet.remove(hireling); |  |  |  |                     hirelingMob.parentZone.zoneMobSet.remove(hireling); | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         } |  |  |  |         } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
	
		
		
			
				
					|  |  | @ -451,7 +450,7 @@ public enum BuildingManager { | 
			
		
	
		
		
			
				
					
					|  |  |  |         if (!Guild.sameGuild(building.getGuild(), player.getGuild())) |  |  |  |         if (!Guild.sameGuild(building.getGuild(), player.getGuild())) | 
			
		
	
		
		
			
				
					
					|  |  |  |             return false; |  |  |  |             return false; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         return GuildStatusController.isGuildLeader(player.getGuildStatus()) != false || GuildStatusController.isInnerCouncil(player.getGuildStatus()) != false; |  |  |  |         return GuildStatusController.isGuildLeader(player.getGuildStatus()) || GuildStatusController.isInnerCouncil(player.getGuildStatus()); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     //This is mainly used for Rolling and gold sharing between building and warehouse.
 |  |  |  |     //This is mainly used for Rolling and gold sharing between building and warehouse.
 | 
			
		
	
	
		
		
			
				
					|  |  | @ -825,7 +824,7 @@ public enum BuildingManager { | 
			
		
	
		
		
			
				
					
					|  |  |  |         else |  |  |  |         else | 
			
		
	
		
		
			
				
					
					|  |  |  |             success = DbManager.BuildingQueries.updateBuildingRank(building, rank); |  |  |  |             success = DbManager.BuildingQueries.updateBuildingRank(building, rank); | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         if (success == false) { |  |  |  |         if (!success) { | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |             Logger.error("Error writing to database UUID: " + building.getObjectUUID()); |  |  |  |             Logger.error("Error writing to database UUID: " + building.getObjectUUID()); | 
			
		
	
		
		
			
				
					
					|  |  |  |             return; |  |  |  |             return; | 
			
		
	
		
		
			
				
					
					|  |  |  |         } |  |  |  |         } | 
			
		
	
	
		
		
			
				
					|  |  | 
 |