diff --git a/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java b/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java index 08fc6402d1..fbddb17df9 100644 --- a/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java +++ b/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java @@ -133,7 +133,12 @@ public class GeoEngine */ private IRegion getRegion(int geoX, int geoY) { - return _regions.get(((geoX / IRegion.REGION_CELLS_X) * GEO_REGIONS_Y) + (geoY / IRegion.REGION_CELLS_Y)); + final int region = ((geoX / IRegion.REGION_CELLS_X) * GEO_REGIONS_Y) + (geoY / IRegion.REGION_CELLS_Y); + if ((region < 0) || (region >= _regions.length())) + { + return null; + } + return _regions.get(region); } /** @@ -167,7 +172,12 @@ public class GeoEngine */ public boolean hasGeoPos(int geoX, int geoY) { - return getRegion(geoX, geoY).hasGeo(); + final IRegion region = getRegion(geoX, geoY); + if (region == null) + { + return false; + } + return region.hasGeo(); } /** @@ -179,7 +189,12 @@ public class GeoEngine */ public boolean checkNearestNswe(int geoX, int geoY, int worldZ, int nswe) { - return getRegion(geoX, geoY).checkNearestNswe(geoX, geoY, worldZ, nswe); + final IRegion region = getRegion(geoX, geoY); + if (region == null) + { + return true; + } + return region.checkNearestNswe(geoX, geoY, worldZ, nswe); } /** diff --git a/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java b/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java index 08fc6402d1..fbddb17df9 100644 --- a/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java +++ b/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java @@ -133,7 +133,12 @@ public class GeoEngine */ private IRegion getRegion(int geoX, int geoY) { - return _regions.get(((geoX / IRegion.REGION_CELLS_X) * GEO_REGIONS_Y) + (geoY / IRegion.REGION_CELLS_Y)); + final int region = ((geoX / IRegion.REGION_CELLS_X) * GEO_REGIONS_Y) + (geoY / IRegion.REGION_CELLS_Y); + if ((region < 0) || (region >= _regions.length())) + { + return null; + } + return _regions.get(region); } /** @@ -167,7 +172,12 @@ public class GeoEngine */ public boolean hasGeoPos(int geoX, int geoY) { - return getRegion(geoX, geoY).hasGeo(); + final IRegion region = getRegion(geoX, geoY); + if (region == null) + { + return false; + } + return region.hasGeo(); } /** @@ -179,7 +189,12 @@ public class GeoEngine */ public boolean checkNearestNswe(int geoX, int geoY, int worldZ, int nswe) { - return getRegion(geoX, geoY).checkNearestNswe(geoX, geoY, worldZ, nswe); + final IRegion region = getRegion(geoX, geoY); + if (region == null) + { + return true; + } + return region.checkNearestNswe(geoX, geoY, worldZ, nswe); } /** diff --git a/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java b/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java index 08fc6402d1..fbddb17df9 100644 --- a/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java +++ b/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java @@ -133,7 +133,12 @@ public class GeoEngine */ private IRegion getRegion(int geoX, int geoY) { - return _regions.get(((geoX / IRegion.REGION_CELLS_X) * GEO_REGIONS_Y) + (geoY / IRegion.REGION_CELLS_Y)); + final int region = ((geoX / IRegion.REGION_CELLS_X) * GEO_REGIONS_Y) + (geoY / IRegion.REGION_CELLS_Y); + if ((region < 0) || (region >= _regions.length())) + { + return null; + } + return _regions.get(region); } /** @@ -167,7 +172,12 @@ public class GeoEngine */ public boolean hasGeoPos(int geoX, int geoY) { - return getRegion(geoX, geoY).hasGeo(); + final IRegion region = getRegion(geoX, geoY); + if (region == null) + { + return false; + } + return region.hasGeo(); } /** @@ -179,7 +189,12 @@ public class GeoEngine */ public boolean checkNearestNswe(int geoX, int geoY, int worldZ, int nswe) { - return getRegion(geoX, geoY).checkNearestNswe(geoX, geoY, worldZ, nswe); + final IRegion region = getRegion(geoX, geoY); + if (region == null) + { + return true; + } + return region.checkNearestNswe(geoX, geoY, worldZ, nswe); } /** diff --git a/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java b/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java index 08fc6402d1..fbddb17df9 100644 --- a/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java +++ b/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java @@ -133,7 +133,12 @@ public class GeoEngine */ private IRegion getRegion(int geoX, int geoY) { - return _regions.get(((geoX / IRegion.REGION_CELLS_X) * GEO_REGIONS_Y) + (geoY / IRegion.REGION_CELLS_Y)); + final int region = ((geoX / IRegion.REGION_CELLS_X) * GEO_REGIONS_Y) + (geoY / IRegion.REGION_CELLS_Y); + if ((region < 0) || (region >= _regions.length())) + { + return null; + } + return _regions.get(region); } /** @@ -167,7 +172,12 @@ public class GeoEngine */ public boolean hasGeoPos(int geoX, int geoY) { - return getRegion(geoX, geoY).hasGeo(); + final IRegion region = getRegion(geoX, geoY); + if (region == null) + { + return false; + } + return region.hasGeo(); } /** @@ -179,7 +189,12 @@ public class GeoEngine */ public boolean checkNearestNswe(int geoX, int geoY, int worldZ, int nswe) { - return getRegion(geoX, geoY).checkNearestNswe(geoX, geoY, worldZ, nswe); + final IRegion region = getRegion(geoX, geoY); + if (region == null) + { + return true; + } + return region.checkNearestNswe(geoX, geoY, worldZ, nswe); } /** diff --git a/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java b/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java index 08fc6402d1..fbddb17df9 100644 --- a/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java +++ b/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java @@ -133,7 +133,12 @@ public class GeoEngine */ private IRegion getRegion(int geoX, int geoY) { - return _regions.get(((geoX / IRegion.REGION_CELLS_X) * GEO_REGIONS_Y) + (geoY / IRegion.REGION_CELLS_Y)); + final int region = ((geoX / IRegion.REGION_CELLS_X) * GEO_REGIONS_Y) + (geoY / IRegion.REGION_CELLS_Y); + if ((region < 0) || (region >= _regions.length())) + { + return null; + } + return _regions.get(region); } /** @@ -167,7 +172,12 @@ public class GeoEngine */ public boolean hasGeoPos(int geoX, int geoY) { - return getRegion(geoX, geoY).hasGeo(); + final IRegion region = getRegion(geoX, geoY); + if (region == null) + { + return false; + } + return region.hasGeo(); } /** @@ -179,7 +189,12 @@ public class GeoEngine */ public boolean checkNearestNswe(int geoX, int geoY, int worldZ, int nswe) { - return getRegion(geoX, geoY).checkNearestNswe(geoX, geoY, worldZ, nswe); + final IRegion region = getRegion(geoX, geoY); + if (region == null) + { + return true; + } + return region.checkNearestNswe(geoX, geoY, worldZ, nswe); } /** diff --git a/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java b/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java index 08fc6402d1..fbddb17df9 100644 --- a/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java +++ b/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java @@ -133,7 +133,12 @@ public class GeoEngine */ private IRegion getRegion(int geoX, int geoY) { - return _regions.get(((geoX / IRegion.REGION_CELLS_X) * GEO_REGIONS_Y) + (geoY / IRegion.REGION_CELLS_Y)); + final int region = ((geoX / IRegion.REGION_CELLS_X) * GEO_REGIONS_Y) + (geoY / IRegion.REGION_CELLS_Y); + if ((region < 0) || (region >= _regions.length())) + { + return null; + } + return _regions.get(region); } /** @@ -167,7 +172,12 @@ public class GeoEngine */ public boolean hasGeoPos(int geoX, int geoY) { - return getRegion(geoX, geoY).hasGeo(); + final IRegion region = getRegion(geoX, geoY); + if (region == null) + { + return false; + } + return region.hasGeo(); } /** @@ -179,7 +189,12 @@ public class GeoEngine */ public boolean checkNearestNswe(int geoX, int geoY, int worldZ, int nswe) { - return getRegion(geoX, geoY).checkNearestNswe(geoX, geoY, worldZ, nswe); + final IRegion region = getRegion(geoX, geoY); + if (region == null) + { + return true; + } + return region.checkNearestNswe(geoX, geoY, worldZ, nswe); } /** diff --git a/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java b/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java index 08fc6402d1..fbddb17df9 100644 --- a/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java +++ b/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java @@ -133,7 +133,12 @@ public class GeoEngine */ private IRegion getRegion(int geoX, int geoY) { - return _regions.get(((geoX / IRegion.REGION_CELLS_X) * GEO_REGIONS_Y) + (geoY / IRegion.REGION_CELLS_Y)); + final int region = ((geoX / IRegion.REGION_CELLS_X) * GEO_REGIONS_Y) + (geoY / IRegion.REGION_CELLS_Y); + if ((region < 0) || (region >= _regions.length())) + { + return null; + } + return _regions.get(region); } /** @@ -167,7 +172,12 @@ public class GeoEngine */ public boolean hasGeoPos(int geoX, int geoY) { - return getRegion(geoX, geoY).hasGeo(); + final IRegion region = getRegion(geoX, geoY); + if (region == null) + { + return false; + } + return region.hasGeo(); } /** @@ -179,7 +189,12 @@ public class GeoEngine */ public boolean checkNearestNswe(int geoX, int geoY, int worldZ, int nswe) { - return getRegion(geoX, geoY).checkNearestNswe(geoX, geoY, worldZ, nswe); + final IRegion region = getRegion(geoX, geoY); + if (region == null) + { + return true; + } + return region.checkNearestNswe(geoX, geoY, worldZ, nswe); } /** diff --git a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java index 08fc6402d1..fbddb17df9 100644 --- a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java +++ b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java @@ -133,7 +133,12 @@ public class GeoEngine */ private IRegion getRegion(int geoX, int geoY) { - return _regions.get(((geoX / IRegion.REGION_CELLS_X) * GEO_REGIONS_Y) + (geoY / IRegion.REGION_CELLS_Y)); + final int region = ((geoX / IRegion.REGION_CELLS_X) * GEO_REGIONS_Y) + (geoY / IRegion.REGION_CELLS_Y); + if ((region < 0) || (region >= _regions.length())) + { + return null; + } + return _regions.get(region); } /** @@ -167,7 +172,12 @@ public class GeoEngine */ public boolean hasGeoPos(int geoX, int geoY) { - return getRegion(geoX, geoY).hasGeo(); + final IRegion region = getRegion(geoX, geoY); + if (region == null) + { + return false; + } + return region.hasGeo(); } /** @@ -179,7 +189,12 @@ public class GeoEngine */ public boolean checkNearestNswe(int geoX, int geoY, int worldZ, int nswe) { - return getRegion(geoX, geoY).checkNearestNswe(geoX, geoY, worldZ, nswe); + final IRegion region = getRegion(geoX, geoY); + if (region == null) + { + return true; + } + return region.checkNearestNswe(geoX, geoY, worldZ, nswe); } /** diff --git a/L2J_Mobius_8.0_Homunculus/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java b/L2J_Mobius_8.0_Homunculus/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java index 08fc6402d1..fbddb17df9 100644 --- a/L2J_Mobius_8.0_Homunculus/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java +++ b/L2J_Mobius_8.0_Homunculus/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java @@ -133,7 +133,12 @@ public class GeoEngine */ private IRegion getRegion(int geoX, int geoY) { - return _regions.get(((geoX / IRegion.REGION_CELLS_X) * GEO_REGIONS_Y) + (geoY / IRegion.REGION_CELLS_Y)); + final int region = ((geoX / IRegion.REGION_CELLS_X) * GEO_REGIONS_Y) + (geoY / IRegion.REGION_CELLS_Y); + if ((region < 0) || (region >= _regions.length())) + { + return null; + } + return _regions.get(region); } /** @@ -167,7 +172,12 @@ public class GeoEngine */ public boolean hasGeoPos(int geoX, int geoY) { - return getRegion(geoX, geoY).hasGeo(); + final IRegion region = getRegion(geoX, geoY); + if (region == null) + { + return false; + } + return region.hasGeo(); } /** @@ -179,7 +189,12 @@ public class GeoEngine */ public boolean checkNearestNswe(int geoX, int geoY, int worldZ, int nswe) { - return getRegion(geoX, geoY).checkNearestNswe(geoX, geoY, worldZ, nswe); + final IRegion region = getRegion(geoX, geoY); + if (region == null) + { + return true; + } + return region.checkNearestNswe(geoX, geoY, worldZ, nswe); } /** diff --git a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java index 9f7c44a9bb..33f2015cc5 100644 --- a/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java +++ b/L2J_Mobius_C4_ScionsOfDestiny/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java @@ -130,7 +130,12 @@ public class GeoEngine */ private IRegion getRegion(int geoX, int geoY) { - return _regions.get(((geoX / IRegion.REGION_CELLS_X) * GEO_REGIONS_Y) + (geoY / IRegion.REGION_CELLS_Y)); + final int region = ((geoX / IRegion.REGION_CELLS_X) * GEO_REGIONS_Y) + (geoY / IRegion.REGION_CELLS_Y); + if ((region < 0) || (region >= _regions.length())) + { + return null; + } + return _regions.get(region); } /** @@ -164,7 +169,12 @@ public class GeoEngine */ public boolean hasGeoPos(int geoX, int geoY) { - return getRegion(geoX, geoY).hasGeo(); + final IRegion region = getRegion(geoX, geoY); + if (region == null) + { + return false; + } + return region.hasGeo(); } /** @@ -176,7 +186,12 @@ public class GeoEngine */ public boolean checkNearestNswe(int geoX, int geoY, int worldZ, int nswe) { - return getRegion(geoX, geoY).checkNearestNswe(geoX, geoY, worldZ, nswe); + final IRegion region = getRegion(geoX, geoY); + if (region == null) + { + return true; + } + return region.checkNearestNswe(geoX, geoY, worldZ, nswe); } /** diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java index 9f7c44a9bb..33f2015cc5 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java @@ -130,7 +130,12 @@ public class GeoEngine */ private IRegion getRegion(int geoX, int geoY) { - return _regions.get(((geoX / IRegion.REGION_CELLS_X) * GEO_REGIONS_Y) + (geoY / IRegion.REGION_CELLS_Y)); + final int region = ((geoX / IRegion.REGION_CELLS_X) * GEO_REGIONS_Y) + (geoY / IRegion.REGION_CELLS_Y); + if ((region < 0) || (region >= _regions.length())) + { + return null; + } + return _regions.get(region); } /** @@ -164,7 +169,12 @@ public class GeoEngine */ public boolean hasGeoPos(int geoX, int geoY) { - return getRegion(geoX, geoY).hasGeo(); + final IRegion region = getRegion(geoX, geoY); + if (region == null) + { + return false; + } + return region.hasGeo(); } /** @@ -176,7 +186,12 @@ public class GeoEngine */ public boolean checkNearestNswe(int geoX, int geoY, int worldZ, int nswe) { - return getRegion(geoX, geoY).checkNearestNswe(geoX, geoY, worldZ, nswe); + final IRegion region = getRegion(geoX, geoY); + if (region == null) + { + return true; + } + return region.checkNearestNswe(geoX, geoY, worldZ, nswe); } /** diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java index 2c424b1f5a..aec1df85d4 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java +++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java @@ -131,7 +131,12 @@ public class GeoEngine */ private IRegion getRegion(int geoX, int geoY) { - return _regions.get(((geoX / IRegion.REGION_CELLS_X) * GEO_REGIONS_Y) + (geoY / IRegion.REGION_CELLS_Y)); + final int region = ((geoX / IRegion.REGION_CELLS_X) * GEO_REGIONS_Y) + (geoY / IRegion.REGION_CELLS_Y); + if ((region < 0) || (region >= _regions.length())) + { + return null; + } + return _regions.get(region); } /** @@ -165,7 +170,12 @@ public class GeoEngine */ public boolean hasGeoPos(int geoX, int geoY) { - return getRegion(geoX, geoY).hasGeo(); + final IRegion region = getRegion(geoX, geoY); + if (region == null) + { + return false; + } + return region.hasGeo(); } /** @@ -177,7 +187,12 @@ public class GeoEngine */ public boolean checkNearestNswe(int geoX, int geoY, int worldZ, int nswe) { - return getRegion(geoX, geoY).checkNearestNswe(geoX, geoY, worldZ, nswe); + final IRegion region = getRegion(geoX, geoY); + if (region == null) + { + return true; + } + return region.checkNearestNswe(geoX, geoY, worldZ, nswe); } /** diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java index 2c424b1f5a..aec1df85d4 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java @@ -131,7 +131,12 @@ public class GeoEngine */ private IRegion getRegion(int geoX, int geoY) { - return _regions.get(((geoX / IRegion.REGION_CELLS_X) * GEO_REGIONS_Y) + (geoY / IRegion.REGION_CELLS_Y)); + final int region = ((geoX / IRegion.REGION_CELLS_X) * GEO_REGIONS_Y) + (geoY / IRegion.REGION_CELLS_Y); + if ((region < 0) || (region >= _regions.length())) + { + return null; + } + return _regions.get(region); } /** @@ -165,7 +170,12 @@ public class GeoEngine */ public boolean hasGeoPos(int geoX, int geoY) { - return getRegion(geoX, geoY).hasGeo(); + final IRegion region = getRegion(geoX, geoY); + if (region == null) + { + return false; + } + return region.hasGeo(); } /** @@ -177,7 +187,12 @@ public class GeoEngine */ public boolean checkNearestNswe(int geoX, int geoY, int worldZ, int nswe) { - return getRegion(geoX, geoY).checkNearestNswe(geoX, geoY, worldZ, nswe); + final IRegion region = getRegion(geoX, geoY); + if (region == null) + { + return true; + } + return region.checkNearestNswe(geoX, geoY, worldZ, nswe); } /** diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java index 08fc6402d1..fbddb17df9 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java @@ -133,7 +133,12 @@ public class GeoEngine */ private IRegion getRegion(int geoX, int geoY) { - return _regions.get(((geoX / IRegion.REGION_CELLS_X) * GEO_REGIONS_Y) + (geoY / IRegion.REGION_CELLS_Y)); + final int region = ((geoX / IRegion.REGION_CELLS_X) * GEO_REGIONS_Y) + (geoY / IRegion.REGION_CELLS_Y); + if ((region < 0) || (region >= _regions.length())) + { + return null; + } + return _regions.get(region); } /** @@ -167,7 +172,12 @@ public class GeoEngine */ public boolean hasGeoPos(int geoX, int geoY) { - return getRegion(geoX, geoY).hasGeo(); + final IRegion region = getRegion(geoX, geoY); + if (region == null) + { + return false; + } + return region.hasGeo(); } /** @@ -179,7 +189,12 @@ public class GeoEngine */ public boolean checkNearestNswe(int geoX, int geoY, int worldZ, int nswe) { - return getRegion(geoX, geoY).checkNearestNswe(geoX, geoY, worldZ, nswe); + final IRegion region = getRegion(geoX, geoY); + if (region == null) + { + return true; + } + return region.checkNearestNswe(geoX, geoY, worldZ, nswe); } /** diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java index 08fc6402d1..fbddb17df9 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java @@ -133,7 +133,12 @@ public class GeoEngine */ private IRegion getRegion(int geoX, int geoY) { - return _regions.get(((geoX / IRegion.REGION_CELLS_X) * GEO_REGIONS_Y) + (geoY / IRegion.REGION_CELLS_Y)); + final int region = ((geoX / IRegion.REGION_CELLS_X) * GEO_REGIONS_Y) + (geoY / IRegion.REGION_CELLS_Y); + if ((region < 0) || (region >= _regions.length())) + { + return null; + } + return _regions.get(region); } /** @@ -167,7 +172,12 @@ public class GeoEngine */ public boolean hasGeoPos(int geoX, int geoY) { - return getRegion(geoX, geoY).hasGeo(); + final IRegion region = getRegion(geoX, geoY); + if (region == null) + { + return false; + } + return region.hasGeo(); } /** @@ -179,7 +189,12 @@ public class GeoEngine */ public boolean checkNearestNswe(int geoX, int geoY, int worldZ, int nswe) { - return getRegion(geoX, geoY).checkNearestNswe(geoX, geoY, worldZ, nswe); + final IRegion region = getRegion(geoX, geoY); + if (region == null) + { + return true; + } + return region.checkNearestNswe(geoX, geoY, worldZ, nswe); } /** diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java index 08fc6402d1..fbddb17df9 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java @@ -133,7 +133,12 @@ public class GeoEngine */ private IRegion getRegion(int geoX, int geoY) { - return _regions.get(((geoX / IRegion.REGION_CELLS_X) * GEO_REGIONS_Y) + (geoY / IRegion.REGION_CELLS_Y)); + final int region = ((geoX / IRegion.REGION_CELLS_X) * GEO_REGIONS_Y) + (geoY / IRegion.REGION_CELLS_Y); + if ((region < 0) || (region >= _regions.length())) + { + return null; + } + return _regions.get(region); } /** @@ -167,7 +172,12 @@ public class GeoEngine */ public boolean hasGeoPos(int geoX, int geoY) { - return getRegion(geoX, geoY).hasGeo(); + final IRegion region = getRegion(geoX, geoY); + if (region == null) + { + return false; + } + return region.hasGeo(); } /** @@ -179,7 +189,12 @@ public class GeoEngine */ public boolean checkNearestNswe(int geoX, int geoY, int worldZ, int nswe) { - return getRegion(geoX, geoY).checkNearestNswe(geoX, geoY, worldZ, nswe); + final IRegion region = getRegion(geoX, geoY); + if (region == null) + { + return true; + } + return region.checkNearestNswe(geoX, geoY, worldZ, nswe); } /** diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java index 08fc6402d1..fbddb17df9 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java @@ -133,7 +133,12 @@ public class GeoEngine */ private IRegion getRegion(int geoX, int geoY) { - return _regions.get(((geoX / IRegion.REGION_CELLS_X) * GEO_REGIONS_Y) + (geoY / IRegion.REGION_CELLS_Y)); + final int region = ((geoX / IRegion.REGION_CELLS_X) * GEO_REGIONS_Y) + (geoY / IRegion.REGION_CELLS_Y); + if ((region < 0) || (region >= _regions.length())) + { + return null; + } + return _regions.get(region); } /** @@ -167,7 +172,12 @@ public class GeoEngine */ public boolean hasGeoPos(int geoX, int geoY) { - return getRegion(geoX, geoY).hasGeo(); + final IRegion region = getRegion(geoX, geoY); + if (region == null) + { + return false; + } + return region.hasGeo(); } /** @@ -179,7 +189,12 @@ public class GeoEngine */ public boolean checkNearestNswe(int geoX, int geoY, int worldZ, int nswe) { - return getRegion(geoX, geoY).checkNearestNswe(geoX, geoY, worldZ, nswe); + final IRegion region = getRegion(geoX, geoY); + if (region == null) + { + return true; + } + return region.checkNearestNswe(geoX, geoY, worldZ, nswe); } /** diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java index 08fc6402d1..fbddb17df9 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java @@ -133,7 +133,12 @@ public class GeoEngine */ private IRegion getRegion(int geoX, int geoY) { - return _regions.get(((geoX / IRegion.REGION_CELLS_X) * GEO_REGIONS_Y) + (geoY / IRegion.REGION_CELLS_Y)); + final int region = ((geoX / IRegion.REGION_CELLS_X) * GEO_REGIONS_Y) + (geoY / IRegion.REGION_CELLS_Y); + if ((region < 0) || (region >= _regions.length())) + { + return null; + } + return _regions.get(region); } /** @@ -167,7 +172,12 @@ public class GeoEngine */ public boolean hasGeoPos(int geoX, int geoY) { - return getRegion(geoX, geoY).hasGeo(); + final IRegion region = getRegion(geoX, geoY); + if (region == null) + { + return false; + } + return region.hasGeo(); } /** @@ -179,7 +189,12 @@ public class GeoEngine */ public boolean checkNearestNswe(int geoX, int geoY, int worldZ, int nswe) { - return getRegion(geoX, geoY).checkNearestNswe(geoX, geoY, worldZ, nswe); + final IRegion region = getRegion(geoX, geoY); + if (region == null) + { + return true; + } + return region.checkNearestNswe(geoX, geoY, worldZ, nswe); } /** diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java index 08fc6402d1..fbddb17df9 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java @@ -133,7 +133,12 @@ public class GeoEngine */ private IRegion getRegion(int geoX, int geoY) { - return _regions.get(((geoX / IRegion.REGION_CELLS_X) * GEO_REGIONS_Y) + (geoY / IRegion.REGION_CELLS_Y)); + final int region = ((geoX / IRegion.REGION_CELLS_X) * GEO_REGIONS_Y) + (geoY / IRegion.REGION_CELLS_Y); + if ((region < 0) || (region >= _regions.length())) + { + return null; + } + return _regions.get(region); } /** @@ -167,7 +172,12 @@ public class GeoEngine */ public boolean hasGeoPos(int geoX, int geoY) { - return getRegion(geoX, geoY).hasGeo(); + final IRegion region = getRegion(geoX, geoY); + if (region == null) + { + return false; + } + return region.hasGeo(); } /** @@ -179,7 +189,12 @@ public class GeoEngine */ public boolean checkNearestNswe(int geoX, int geoY, int worldZ, int nswe) { - return getRegion(geoX, geoY).checkNearestNswe(geoX, geoY, worldZ, nswe); + final IRegion region = getRegion(geoX, geoY); + if (region == null) + { + return true; + } + return region.checkNearestNswe(geoX, geoY, worldZ, nswe); } /** diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java index 08fc6402d1..fbddb17df9 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java @@ -133,7 +133,12 @@ public class GeoEngine */ private IRegion getRegion(int geoX, int geoY) { - return _regions.get(((geoX / IRegion.REGION_CELLS_X) * GEO_REGIONS_Y) + (geoY / IRegion.REGION_CELLS_Y)); + final int region = ((geoX / IRegion.REGION_CELLS_X) * GEO_REGIONS_Y) + (geoY / IRegion.REGION_CELLS_Y); + if ((region < 0) || (region >= _regions.length())) + { + return null; + } + return _regions.get(region); } /** @@ -167,7 +172,12 @@ public class GeoEngine */ public boolean hasGeoPos(int geoX, int geoY) { - return getRegion(geoX, geoY).hasGeo(); + final IRegion region = getRegion(geoX, geoY); + if (region == null) + { + return false; + } + return region.hasGeo(); } /** @@ -179,7 +189,12 @@ public class GeoEngine */ public boolean checkNearestNswe(int geoX, int geoY, int worldZ, int nswe) { - return getRegion(geoX, geoY).checkNearestNswe(geoX, geoY, worldZ, nswe); + final IRegion region = getRegion(geoX, geoY); + if (region == null) + { + return true; + } + return region.checkNearestNswe(geoX, geoY, worldZ, nswe); } /** diff --git a/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java b/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java index 08fc6402d1..fbddb17df9 100644 --- a/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java +++ b/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/geoengine/GeoEngine.java @@ -133,7 +133,12 @@ public class GeoEngine */ private IRegion getRegion(int geoX, int geoY) { - return _regions.get(((geoX / IRegion.REGION_CELLS_X) * GEO_REGIONS_Y) + (geoY / IRegion.REGION_CELLS_Y)); + final int region = ((geoX / IRegion.REGION_CELLS_X) * GEO_REGIONS_Y) + (geoY / IRegion.REGION_CELLS_Y); + if ((region < 0) || (region >= _regions.length())) + { + return null; + } + return _regions.get(region); } /** @@ -167,7 +172,12 @@ public class GeoEngine */ public boolean hasGeoPos(int geoX, int geoY) { - return getRegion(geoX, geoY).hasGeo(); + final IRegion region = getRegion(geoX, geoY); + if (region == null) + { + return false; + } + return region.hasGeo(); } /** @@ -179,7 +189,12 @@ public class GeoEngine */ public boolean checkNearestNswe(int geoX, int geoY, int worldZ, int nswe) { - return getRegion(geoX, geoY).checkNearestNswe(geoX, geoY, worldZ, nswe); + final IRegion region = getRegion(geoX, geoY); + if (region == null) + { + return true; + } + return region.checkNearestNswe(geoX, geoY, worldZ, nswe); } /**