|
|
@ -29,6 +29,8 @@ import java.util.concurrent.ConcurrentHashMap; |
|
|
|
|
|
|
|
|
|
|
|
public class Zone extends AbstractWorldObject { |
|
|
|
public class Zone extends AbstractWorldObject { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public static final Set<Mob> respawnQue = Collections.newSetFromMap(new ConcurrentHashMap<>()); |
|
|
|
|
|
|
|
public static long lastRespawn = 0; |
|
|
|
public final Set<Building> zoneBuildingSet = Collections.newSetFromMap(new ConcurrentHashMap<>()); |
|
|
|
public final Set<Building> zoneBuildingSet = Collections.newSetFromMap(new ConcurrentHashMap<>()); |
|
|
|
public final Set<NPC> zoneNPCSet = Collections.newSetFromMap(new ConcurrentHashMap<>()); |
|
|
|
public final Set<NPC> zoneNPCSet = Collections.newSetFromMap(new ConcurrentHashMap<>()); |
|
|
|
public final Set<Mob> zoneMobSet = Collections.newSetFromMap(new ConcurrentHashMap<>()); |
|
|
|
public final Set<Mob> zoneMobSet = Collections.newSetFromMap(new ConcurrentHashMap<>()); |
|
|
@ -58,8 +60,6 @@ public class Zone extends AbstractWorldObject { |
|
|
|
public float global_height = 0; |
|
|
|
public float global_height = 0; |
|
|
|
public float seaLevel = 0f; |
|
|
|
public float seaLevel = 0f; |
|
|
|
public float sea_level_offset = 0; |
|
|
|
public float sea_level_offset = 0; |
|
|
|
public static final Set<Mob> respawnQue = Collections.newSetFromMap(new ConcurrentHashMap<>()); |
|
|
|
|
|
|
|
public static long lastRespawn = 0; |
|
|
|
|
|
|
|
public float major_radius; |
|
|
|
public float major_radius; |
|
|
|
public float minor_radius; |
|
|
|
public float minor_radius; |
|
|
|
public float min_blend; |
|
|
|
public float min_blend; |
|
|
@ -121,36 +121,6 @@ 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) { |
|
|
|
public static void serializeForClientMsg(Zone zone, ByteBufferWriter writer) { |
|
|
|
|
|
|
|
|
|
|
|
if (zone.template == 0 && zone.playerCityUUID == 0) |
|
|
|
if (zone.template == 0 && zone.playerCityUUID == 0) |
|
|
@ -204,6 +174,30 @@ 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.setParent(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (this.min_level == 0 && this.parent != null) { |
|
|
|
|
|
|
|
this.min_level = this.parent.min_level; |
|
|
|
|
|
|
|
this.max_level = this.parent.max_level; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ZoneManager.populateZoneCollections(this); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/* Method sets a default value for player cities |
|
|
|
/* Method sets a default value for player cities |
|
|
|
* otherwise using values derived from the loadnum |
|
|
|
* otherwise using values derived from the loadnum |
|
|
|
* field in the obj_zone database table. |
|
|
|
* field in the obj_zone database table. |
|
|
@ -217,14 +211,13 @@ public class Zone extends AbstractWorldObject { |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public void setParent(final Zone value) { |
|
|
|
public void setParent() { |
|
|
|
|
|
|
|
|
|
|
|
this.parent = value; |
|
|
|
this.parent = ZoneManager.getZoneByZoneID(parentZoneID); |
|
|
|
this.parentZoneID = (this.parent != null) ? this.parent.getObjectUUID() : 0; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Seafloor
|
|
|
|
// Seafloor
|
|
|
|
|
|
|
|
|
|
|
|
if (this.parent == null) { |
|
|
|
if (ZoneManager.seaFloor.equals(this)) { |
|
|
|
this.absX = this.xOffset; |
|
|
|
this.absX = this.xOffset; |
|
|
|
this.absY = MBServerStatics.SEA_FLOOR_ALTITUDE; |
|
|
|
this.absY = MBServerStatics.SEA_FLOOR_ALTITUDE; |
|
|
|
this.global_height = MBServerStatics.SEA_FLOOR_ALTITUDE; |
|
|
|
this.global_height = MBServerStatics.SEA_FLOOR_ALTITUDE; |
|
|
@ -274,7 +267,7 @@ public class Zone extends AbstractWorldObject { |
|
|
|
|
|
|
|
|
|
|
|
// Macro zones have icons.
|
|
|
|
// Macro zones have icons.
|
|
|
|
|
|
|
|
|
|
|
|
if (this.guild_zone == true) |
|
|
|
if (this.guild_zone) |
|
|
|
return false; |
|
|
|
return false; |
|
|
|
|
|
|
|
|
|
|
|
if (this.parent == null) |
|
|
|
if (this.parent == null) |
|
|
@ -318,6 +311,7 @@ public class Zone extends AbstractWorldObject { |
|
|
|
return this.parent.equals(ZoneManager.seaFloor); |
|
|
|
return this.parent.equals(ZoneManager.seaFloor); |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public void setHash() { |
|
|
|
public void setHash() { |
|
|
|
|
|
|
|
|
|
|
|
this.hash = DataWarehouse.hasher.encrypt(this.getObjectUUID()); |
|
|
|
this.hash = DataWarehouse.hasher.encrypt(this.getObjectUUID()); |
|
|
|