Avoid probable concurrency issues.

This commit is contained in:
MobiusDevelopment 2019-04-05 04:53:07 +00:00
parent eed915b9dc
commit 67cc5e1e45
24 changed files with 59 additions and 47 deletions

View File

@ -69,7 +69,7 @@ public final class InstanceManager implements IXmlReader
// Client instance names
private final Map<Integer, String> _instanceNames = new HashMap<>();
// Instance templates holder
private final Map<Integer, InstanceTemplate> _instanceTemplates = new HashMap<>();
private final Map<Integer, InstanceTemplate> _instanceTemplates = new ConcurrentHashMap<>();
// Created instance worlds
private int _currentInstanceId = 0;
private final Map<Integer, Instance> _instanceWorlds = new ConcurrentHashMap<>();

View File

@ -27,6 +27,7 @@ import java.util.Map;
import java.util.Optional;
import java.util.OptionalInt;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.logging.Level;
import java.util.logging.Logger;
@ -68,7 +69,7 @@ public final class ZoneManager implements IXmlReader
private final Map<Class<? extends ZoneType>, ConcurrentHashMap<Integer, ? extends ZoneType>> _classZones = new ConcurrentHashMap<>();
private final Map<String, SpawnTerritory> _spawnTerritories = new ConcurrentHashMap<>();
private volatile int _lastDynamicId = 300000;
private final AtomicInteger _lastDynamicId = new AtomicInteger(300000);
private List<ItemInstance> _debugItems;
private final ZoneRegion[][] _zoneRegions = new ZoneRegion[(World.MAP_MAX_X >> SHIFT_BY) + OFFSET_X + 1][(World.MAP_MAX_Y >> SHIFT_BY) + OFFSET_Y + 1];
@ -191,7 +192,7 @@ public final class ZoneManager implements IXmlReader
}
else
{
zoneId = zoneType.equalsIgnoreCase("NpcSpawnTerritory") ? 0 : _lastDynamicId++;
zoneId = zoneType.equalsIgnoreCase("NpcSpawnTerritory") ? 0 : _lastDynamicId.incrementAndGet();
}
attribute = attrs.getNamedItem("name");
@ -366,7 +367,7 @@ public final class ZoneManager implements IXmlReader
}
if (checkId(zoneId))
{
LOGGER.config(getClass().getSimpleName() + ": Caution: Zone (" + zoneId + ") from file: " + f.getName() + " overrides previuos definition.");
LOGGER.config(getClass().getSimpleName() + ": Caution: Zone (" + zoneId + ") from file: " + f.getName() + " overrides previous definition.");
}
if ((zoneName != null) && !zoneName.isEmpty())

View File

@ -69,7 +69,7 @@ public final class InstanceManager implements IXmlReader
// Client instance names
private final Map<Integer, String> _instanceNames = new HashMap<>();
// Instance templates holder
private final Map<Integer, InstanceTemplate> _instanceTemplates = new HashMap<>();
private final Map<Integer, InstanceTemplate> _instanceTemplates = new ConcurrentHashMap<>();
// Created instance worlds
private int _currentInstanceId = 0;
private final Map<Integer, Instance> _instanceWorlds = new ConcurrentHashMap<>();

View File

@ -27,6 +27,7 @@ import java.util.Map;
import java.util.Optional;
import java.util.OptionalInt;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.logging.Level;
import java.util.logging.Logger;
@ -68,7 +69,7 @@ public final class ZoneManager implements IXmlReader
private final Map<Class<? extends ZoneType>, ConcurrentHashMap<Integer, ? extends ZoneType>> _classZones = new ConcurrentHashMap<>();
private final Map<String, SpawnTerritory> _spawnTerritories = new ConcurrentHashMap<>();
private volatile int _lastDynamicId = 300000;
private final AtomicInteger _lastDynamicId = new AtomicInteger(300000);
private List<ItemInstance> _debugItems;
private final ZoneRegion[][] _zoneRegions = new ZoneRegion[(World.MAP_MAX_X >> SHIFT_BY) + OFFSET_X + 1][(World.MAP_MAX_Y >> SHIFT_BY) + OFFSET_Y + 1];
@ -191,7 +192,7 @@ public final class ZoneManager implements IXmlReader
}
else
{
zoneId = zoneType.equalsIgnoreCase("NpcSpawnTerritory") ? 0 : _lastDynamicId++;
zoneId = zoneType.equalsIgnoreCase("NpcSpawnTerritory") ? 0 : _lastDynamicId.incrementAndGet();
}
attribute = attrs.getNamedItem("name");
@ -366,7 +367,7 @@ public final class ZoneManager implements IXmlReader
}
if (checkId(zoneId))
{
LOGGER.config(getClass().getSimpleName() + ": Caution: Zone (" + zoneId + ") from file: " + f.getName() + " overrides previuos definition.");
LOGGER.config(getClass().getSimpleName() + ": Caution: Zone (" + zoneId + ") from file: " + f.getName() + " overrides previous definition.");
}
if ((zoneName != null) && !zoneName.isEmpty())

View File

@ -69,7 +69,7 @@ public final class InstanceManager implements IXmlReader
// Client instance names
private final Map<Integer, String> _instanceNames = new HashMap<>();
// Instance templates holder
private final Map<Integer, InstanceTemplate> _instanceTemplates = new HashMap<>();
private final Map<Integer, InstanceTemplate> _instanceTemplates = new ConcurrentHashMap<>();
// Created instance worlds
private int _currentInstanceId = 0;
private final Map<Integer, Instance> _instanceWorlds = new ConcurrentHashMap<>();

View File

@ -27,6 +27,7 @@ import java.util.Map;
import java.util.Optional;
import java.util.OptionalInt;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.logging.Level;
import java.util.logging.Logger;
@ -68,7 +69,7 @@ public final class ZoneManager implements IXmlReader
private final Map<Class<? extends ZoneType>, ConcurrentHashMap<Integer, ? extends ZoneType>> _classZones = new ConcurrentHashMap<>();
private final Map<String, SpawnTerritory> _spawnTerritories = new ConcurrentHashMap<>();
private volatile int _lastDynamicId = 300000;
private final AtomicInteger _lastDynamicId = new AtomicInteger(300000);
private List<ItemInstance> _debugItems;
private final ZoneRegion[][] _zoneRegions = new ZoneRegion[(World.MAP_MAX_X >> SHIFT_BY) + OFFSET_X + 1][(World.MAP_MAX_Y >> SHIFT_BY) + OFFSET_Y + 1];
@ -191,7 +192,7 @@ public final class ZoneManager implements IXmlReader
}
else
{
zoneId = zoneType.equalsIgnoreCase("NpcSpawnTerritory") ? 0 : _lastDynamicId++;
zoneId = zoneType.equalsIgnoreCase("NpcSpawnTerritory") ? 0 : _lastDynamicId.incrementAndGet();
}
attribute = attrs.getNamedItem("name");
@ -366,7 +367,7 @@ public final class ZoneManager implements IXmlReader
}
if (checkId(zoneId))
{
LOGGER.config(getClass().getSimpleName() + ": Caution: Zone (" + zoneId + ") from file: " + f.getName() + " overrides previuos definition.");
LOGGER.config(getClass().getSimpleName() + ": Caution: Zone (" + zoneId + ") from file: " + f.getName() + " overrides previous definition.");
}
if ((zoneName != null) && !zoneName.isEmpty())

View File

@ -69,7 +69,7 @@ public final class InstanceManager implements IXmlReader
// Client instance names
private final Map<Integer, String> _instanceNames = new HashMap<>();
// Instance templates holder
private final Map<Integer, InstanceTemplate> _instanceTemplates = new HashMap<>();
private final Map<Integer, InstanceTemplate> _instanceTemplates = new ConcurrentHashMap<>();
// Created instance worlds
private int _currentInstanceId = 0;
private final Map<Integer, Instance> _instanceWorlds = new ConcurrentHashMap<>();

View File

@ -27,6 +27,7 @@ import java.util.Map;
import java.util.Optional;
import java.util.OptionalInt;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.logging.Level;
import java.util.logging.Logger;
@ -68,7 +69,7 @@ public final class ZoneManager implements IXmlReader
private final Map<Class<? extends ZoneType>, ConcurrentHashMap<Integer, ? extends ZoneType>> _classZones = new ConcurrentHashMap<>();
private final Map<String, SpawnTerritory> _spawnTerritories = new ConcurrentHashMap<>();
private volatile int _lastDynamicId = 300000;
private final AtomicInteger _lastDynamicId = new AtomicInteger(300000);
private List<ItemInstance> _debugItems;
private final ZoneRegion[][] _zoneRegions = new ZoneRegion[(World.MAP_MAX_X >> SHIFT_BY) + OFFSET_X + 1][(World.MAP_MAX_Y >> SHIFT_BY) + OFFSET_Y + 1];
@ -191,7 +192,7 @@ public final class ZoneManager implements IXmlReader
}
else
{
zoneId = zoneType.equalsIgnoreCase("NpcSpawnTerritory") ? 0 : _lastDynamicId++;
zoneId = zoneType.equalsIgnoreCase("NpcSpawnTerritory") ? 0 : _lastDynamicId.incrementAndGet();
}
attribute = attrs.getNamedItem("name");
@ -366,7 +367,7 @@ public final class ZoneManager implements IXmlReader
}
if (checkId(zoneId))
{
LOGGER.config(getClass().getSimpleName() + ": Caution: Zone (" + zoneId + ") from file: " + f.getName() + " overrides previuos definition.");
LOGGER.config(getClass().getSimpleName() + ": Caution: Zone (" + zoneId + ") from file: " + f.getName() + " overrides previous definition.");
}
if ((zoneName != null) && !zoneName.isEmpty())

View File

@ -69,7 +69,7 @@ public final class InstanceManager implements IXmlReader
// Client instance names
private final Map<Integer, String> _instanceNames = new HashMap<>();
// Instance templates holder
private final Map<Integer, InstanceTemplate> _instanceTemplates = new HashMap<>();
private final Map<Integer, InstanceTemplate> _instanceTemplates = new ConcurrentHashMap<>();
// Created instance worlds
private int _currentInstanceId = 0;
private final Map<Integer, Instance> _instanceWorlds = new ConcurrentHashMap<>();

View File

@ -27,6 +27,7 @@ import java.util.Map;
import java.util.Optional;
import java.util.OptionalInt;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.logging.Level;
import java.util.logging.Logger;
@ -68,7 +69,7 @@ public final class ZoneManager implements IXmlReader
private final Map<Class<? extends ZoneType>, ConcurrentHashMap<Integer, ? extends ZoneType>> _classZones = new ConcurrentHashMap<>();
private final Map<String, SpawnTerritory> _spawnTerritories = new ConcurrentHashMap<>();
private volatile int _lastDynamicId = 300000;
private final AtomicInteger _lastDynamicId = new AtomicInteger(300000);
private List<ItemInstance> _debugItems;
private final ZoneRegion[][] _zoneRegions = new ZoneRegion[(World.MAP_MAX_X >> SHIFT_BY) + OFFSET_X + 1][(World.MAP_MAX_Y >> SHIFT_BY) + OFFSET_Y + 1];
@ -191,7 +192,7 @@ public final class ZoneManager implements IXmlReader
}
else
{
zoneId = zoneType.equalsIgnoreCase("NpcSpawnTerritory") ? 0 : _lastDynamicId++;
zoneId = zoneType.equalsIgnoreCase("NpcSpawnTerritory") ? 0 : _lastDynamicId.incrementAndGet();
}
attribute = attrs.getNamedItem("name");
@ -366,7 +367,7 @@ public final class ZoneManager implements IXmlReader
}
if (checkId(zoneId))
{
LOGGER.config(getClass().getSimpleName() + ": Caution: Zone (" + zoneId + ") from file: " + f.getName() + " overrides previuos definition.");
LOGGER.config(getClass().getSimpleName() + ": Caution: Zone (" + zoneId + ") from file: " + f.getName() + " overrides previous definition.");
}
if ((zoneName != null) && !zoneName.isEmpty())

View File

@ -69,7 +69,7 @@ public final class InstanceManager implements IXmlReader
// Client instance names
private final Map<Integer, String> _instanceNames = new HashMap<>();
// Instance templates holder
private final Map<Integer, InstanceTemplate> _instanceTemplates = new HashMap<>();
private final Map<Integer, InstanceTemplate> _instanceTemplates = new ConcurrentHashMap<>();
// Created instance worlds
private int _currentInstanceId = 0;
private final Map<Integer, Instance> _instanceWorlds = new ConcurrentHashMap<>();

View File

@ -27,6 +27,7 @@ import java.util.Map;
import java.util.Optional;
import java.util.OptionalInt;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.logging.Level;
import java.util.logging.Logger;
@ -68,7 +69,7 @@ public final class ZoneManager implements IXmlReader
private final Map<Class<? extends ZoneType>, ConcurrentHashMap<Integer, ? extends ZoneType>> _classZones = new ConcurrentHashMap<>();
private final Map<String, SpawnTerritory> _spawnTerritories = new ConcurrentHashMap<>();
private volatile int _lastDynamicId = 300000;
private final AtomicInteger _lastDynamicId = new AtomicInteger(300000);
private List<ItemInstance> _debugItems;
private final ZoneRegion[][] _zoneRegions = new ZoneRegion[(World.MAP_MAX_X >> SHIFT_BY) + OFFSET_X + 1][(World.MAP_MAX_Y >> SHIFT_BY) + OFFSET_Y + 1];
@ -191,7 +192,7 @@ public final class ZoneManager implements IXmlReader
}
else
{
zoneId = zoneType.equalsIgnoreCase("NpcSpawnTerritory") ? 0 : _lastDynamicId++;
zoneId = zoneType.equalsIgnoreCase("NpcSpawnTerritory") ? 0 : _lastDynamicId.incrementAndGet();
}
attribute = attrs.getNamedItem("name");
@ -366,7 +367,7 @@ public final class ZoneManager implements IXmlReader
}
if (checkId(zoneId))
{
LOGGER.config(getClass().getSimpleName() + ": Caution: Zone (" + zoneId + ") from file: " + f.getName() + " overrides previuos definition.");
LOGGER.config(getClass().getSimpleName() + ": Caution: Zone (" + zoneId + ") from file: " + f.getName() + " overrides previous definition.");
}
if ((zoneName != null) && !zoneName.isEmpty())

View File

@ -69,7 +69,7 @@ public final class InstanceManager implements IXmlReader
// Client instance names
private final Map<Integer, String> _instanceNames = new HashMap<>();
// Instance templates holder
private final Map<Integer, InstanceTemplate> _instanceTemplates = new HashMap<>();
private final Map<Integer, InstanceTemplate> _instanceTemplates = new ConcurrentHashMap<>();
// Created instance worlds
private int _currentInstanceId = 0;
private final Map<Integer, Instance> _instanceWorlds = new ConcurrentHashMap<>();

View File

@ -27,6 +27,7 @@ import java.util.Map;
import java.util.Optional;
import java.util.OptionalInt;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.logging.Level;
import java.util.logging.Logger;
@ -68,7 +69,7 @@ public final class ZoneManager implements IXmlReader
private final Map<Class<? extends ZoneType>, ConcurrentHashMap<Integer, ? extends ZoneType>> _classZones = new ConcurrentHashMap<>();
private final Map<String, SpawnTerritory> _spawnTerritories = new ConcurrentHashMap<>();
private volatile int _lastDynamicId = 300000;
private final AtomicInteger _lastDynamicId = new AtomicInteger(300000);
private List<ItemInstance> _debugItems;
private final ZoneRegion[][] _zoneRegions = new ZoneRegion[(World.MAP_MAX_X >> SHIFT_BY) + OFFSET_X + 1][(World.MAP_MAX_Y >> SHIFT_BY) + OFFSET_Y + 1];
@ -191,7 +192,7 @@ public final class ZoneManager implements IXmlReader
}
else
{
zoneId = zoneType.equalsIgnoreCase("NpcSpawnTerritory") ? 0 : _lastDynamicId++;
zoneId = zoneType.equalsIgnoreCase("NpcSpawnTerritory") ? 0 : _lastDynamicId.incrementAndGet();
}
attribute = attrs.getNamedItem("name");
@ -366,7 +367,7 @@ public final class ZoneManager implements IXmlReader
}
if (checkId(zoneId))
{
LOGGER.config(getClass().getSimpleName() + ": Caution: Zone (" + zoneId + ") from file: " + f.getName() + " overrides previuos definition.");
LOGGER.config(getClass().getSimpleName() + ": Caution: Zone (" + zoneId + ") from file: " + f.getName() + " overrides previous definition.");
}
if ((zoneName != null) && !zoneName.isEmpty())

View File

@ -363,7 +363,7 @@ public final class InstanceManager implements IXmlReader
* @param templateId the instance template id
* @return
*/
public Instance createDynamicInstance(int templateId)
public synchronized Instance createDynamicInstance(int templateId)
{
while (getInstance(_dynamic) != null)
{

View File

@ -27,6 +27,7 @@ import java.util.Map;
import java.util.Optional;
import java.util.OptionalInt;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.logging.Level;
import java.util.logging.Logger;
@ -69,7 +70,7 @@ public final class ZoneManager implements IXmlReader
private final Map<Class<? extends ZoneType>, ConcurrentHashMap<Integer, ? extends ZoneType>> _classZones = new ConcurrentHashMap<>();
private final Map<String, NpcSpawnTerritory> _spawnTerritories = new ConcurrentHashMap<>();
private volatile int _lastDynamicId = 300000;
private final AtomicInteger _lastDynamicId = new AtomicInteger(300000);
private List<ItemInstance> _debugItems;
private final ZoneRegion[][] _zoneRegions = new ZoneRegion[(World.MAP_MAX_X >> SHIFT_BY) + OFFSET_X + 1][(World.MAP_MAX_Y >> SHIFT_BY) + OFFSET_Y + 1];
@ -187,7 +188,7 @@ public final class ZoneManager implements IXmlReader
}
else
{
zoneId = zoneType.equalsIgnoreCase("NpcSpawnTerritory") ? 0 : _lastDynamicId++;
zoneId = zoneType.equalsIgnoreCase("NpcSpawnTerritory") ? 0 : _lastDynamicId.incrementAndGet();
}
attribute = attrs.getNamedItem("name");

View File

@ -69,7 +69,7 @@ public final class InstanceManager implements IXmlReader
// Client instance names
private final Map<Integer, String> _instanceNames = new HashMap<>();
// Instance templates holder
private final Map<Integer, InstanceTemplate> _instanceTemplates = new HashMap<>();
private final Map<Integer, InstanceTemplate> _instanceTemplates = new ConcurrentHashMap<>();
// Created instance worlds
private int _currentInstanceId = 0;
private final Map<Integer, Instance> _instanceWorlds = new ConcurrentHashMap<>();

View File

@ -27,6 +27,7 @@ import java.util.Map;
import java.util.Optional;
import java.util.OptionalInt;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.logging.Level;
import java.util.logging.Logger;
@ -68,7 +69,7 @@ public final class ZoneManager implements IXmlReader
private final Map<Class<? extends ZoneType>, ConcurrentHashMap<Integer, ? extends ZoneType>> _classZones = new ConcurrentHashMap<>();
private final Map<String, SpawnTerritory> _spawnTerritories = new ConcurrentHashMap<>();
private volatile int _lastDynamicId = 300000;
private final AtomicInteger _lastDynamicId = new AtomicInteger(300000);
private List<ItemInstance> _debugItems;
private final ZoneRegion[][] _zoneRegions = new ZoneRegion[(World.MAP_MAX_X >> SHIFT_BY) + OFFSET_X + 1][(World.MAP_MAX_Y >> SHIFT_BY) + OFFSET_Y + 1];
@ -191,7 +192,7 @@ public final class ZoneManager implements IXmlReader
}
else
{
zoneId = zoneType.equalsIgnoreCase("NpcSpawnTerritory") ? 0 : _lastDynamicId++;
zoneId = zoneType.equalsIgnoreCase("NpcSpawnTerritory") ? 0 : _lastDynamicId.incrementAndGet();
}
attribute = attrs.getNamedItem("name");
@ -366,7 +367,7 @@ public final class ZoneManager implements IXmlReader
}
if (checkId(zoneId))
{
LOGGER.config(getClass().getSimpleName() + ": Caution: Zone (" + zoneId + ") from file: " + f.getName() + " overrides previuos definition.");
LOGGER.config(getClass().getSimpleName() + ": Caution: Zone (" + zoneId + ") from file: " + f.getName() + " overrides previous definition.");
}
if ((zoneName != null) && !zoneName.isEmpty())

View File

@ -69,7 +69,7 @@ public final class InstanceManager implements IXmlReader
// Client instance names
private final Map<Integer, String> _instanceNames = new HashMap<>();
// Instance templates holder
private final Map<Integer, InstanceTemplate> _instanceTemplates = new HashMap<>();
private final Map<Integer, InstanceTemplate> _instanceTemplates = new ConcurrentHashMap<>();
// Created instance worlds
private int _currentInstanceId = 0;
private final Map<Integer, Instance> _instanceWorlds = new ConcurrentHashMap<>();

View File

@ -27,6 +27,7 @@ import java.util.Map;
import java.util.Optional;
import java.util.OptionalInt;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.logging.Level;
import java.util.logging.Logger;
@ -68,7 +69,7 @@ public final class ZoneManager implements IXmlReader
private final Map<Class<? extends ZoneType>, ConcurrentHashMap<Integer, ? extends ZoneType>> _classZones = new ConcurrentHashMap<>();
private final Map<String, SpawnTerritory> _spawnTerritories = new ConcurrentHashMap<>();
private volatile int _lastDynamicId = 300000;
private final AtomicInteger _lastDynamicId = new AtomicInteger(300000);
private List<ItemInstance> _debugItems;
private final ZoneRegion[][] _zoneRegions = new ZoneRegion[(World.MAP_MAX_X >> SHIFT_BY) + OFFSET_X + 1][(World.MAP_MAX_Y >> SHIFT_BY) + OFFSET_Y + 1];
@ -191,7 +192,7 @@ public final class ZoneManager implements IXmlReader
}
else
{
zoneId = zoneType.equalsIgnoreCase("NpcSpawnTerritory") ? 0 : _lastDynamicId++;
zoneId = zoneType.equalsIgnoreCase("NpcSpawnTerritory") ? 0 : _lastDynamicId.incrementAndGet();
}
attribute = attrs.getNamedItem("name");
@ -366,7 +367,7 @@ public final class ZoneManager implements IXmlReader
}
if (checkId(zoneId))
{
LOGGER.config(getClass().getSimpleName() + ": Caution: Zone (" + zoneId + ") from file: " + f.getName() + " overrides previuos definition.");
LOGGER.config(getClass().getSimpleName() + ": Caution: Zone (" + zoneId + ") from file: " + f.getName() + " overrides previous definition.");
}
if ((zoneName != null) && !zoneName.isEmpty())

View File

@ -69,7 +69,7 @@ public final class InstanceManager implements IXmlReader
// Client instance names
private final Map<Integer, String> _instanceNames = new HashMap<>();
// Instance templates holder
private final Map<Integer, InstanceTemplate> _instanceTemplates = new HashMap<>();
private final Map<Integer, InstanceTemplate> _instanceTemplates = new ConcurrentHashMap<>();
// Created instance worlds
private int _currentInstanceId = 0;
private final Map<Integer, Instance> _instanceWorlds = new ConcurrentHashMap<>();

View File

@ -27,6 +27,7 @@ import java.util.Map;
import java.util.Optional;
import java.util.OptionalInt;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.logging.Level;
import java.util.logging.Logger;
@ -68,7 +69,7 @@ public final class ZoneManager implements IXmlReader
private final Map<Class<? extends ZoneType>, ConcurrentHashMap<Integer, ? extends ZoneType>> _classZones = new ConcurrentHashMap<>();
private final Map<String, SpawnTerritory> _spawnTerritories = new ConcurrentHashMap<>();
private volatile int _lastDynamicId = 300000;
private final AtomicInteger _lastDynamicId = new AtomicInteger(300000);
private List<ItemInstance> _debugItems;
private final ZoneRegion[][] _zoneRegions = new ZoneRegion[(World.MAP_MAX_X >> SHIFT_BY) + OFFSET_X + 1][(World.MAP_MAX_Y >> SHIFT_BY) + OFFSET_Y + 1];
@ -191,7 +192,7 @@ public final class ZoneManager implements IXmlReader
}
else
{
zoneId = zoneType.equalsIgnoreCase("NpcSpawnTerritory") ? 0 : _lastDynamicId++;
zoneId = zoneType.equalsIgnoreCase("NpcSpawnTerritory") ? 0 : _lastDynamicId.incrementAndGet();
}
attribute = attrs.getNamedItem("name");
@ -366,7 +367,7 @@ public final class ZoneManager implements IXmlReader
}
if (checkId(zoneId))
{
LOGGER.config(getClass().getSimpleName() + ": Caution: Zone (" + zoneId + ") from file: " + f.getName() + " overrides previuos definition.");
LOGGER.config(getClass().getSimpleName() + ": Caution: Zone (" + zoneId + ") from file: " + f.getName() + " overrides previous definition.");
}
if ((zoneName != null) && !zoneName.isEmpty())

View File

@ -69,7 +69,7 @@ public final class InstanceManager implements IXmlReader
// Client instance names
private final Map<Integer, String> _instanceNames = new HashMap<>();
// Instance templates holder
private final Map<Integer, InstanceTemplate> _instanceTemplates = new HashMap<>();
private final Map<Integer, InstanceTemplate> _instanceTemplates = new ConcurrentHashMap<>();
// Created instance worlds
private int _currentInstanceId = 0;
private final Map<Integer, Instance> _instanceWorlds = new ConcurrentHashMap<>();

View File

@ -27,6 +27,7 @@ import java.util.Map;
import java.util.Optional;
import java.util.OptionalInt;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.logging.Level;
import java.util.logging.Logger;
@ -68,7 +69,7 @@ public final class ZoneManager implements IXmlReader
private final Map<Class<? extends ZoneType>, ConcurrentHashMap<Integer, ? extends ZoneType>> _classZones = new ConcurrentHashMap<>();
private final Map<String, SpawnTerritory> _spawnTerritories = new ConcurrentHashMap<>();
private volatile int _lastDynamicId = 300000;
private final AtomicInteger _lastDynamicId = new AtomicInteger(300000);
private List<ItemInstance> _debugItems;
private final ZoneRegion[][] _zoneRegions = new ZoneRegion[(World.MAP_MAX_X >> SHIFT_BY) + OFFSET_X + 1][(World.MAP_MAX_Y >> SHIFT_BY) + OFFSET_Y + 1];
@ -191,7 +192,7 @@ public final class ZoneManager implements IXmlReader
}
else
{
zoneId = zoneType.equalsIgnoreCase("NpcSpawnTerritory") ? 0 : _lastDynamicId++;
zoneId = zoneType.equalsIgnoreCase("NpcSpawnTerritory") ? 0 : _lastDynamicId.incrementAndGet();
}
attribute = attrs.getNamedItem("name");
@ -366,7 +367,7 @@ public final class ZoneManager implements IXmlReader
}
if (checkId(zoneId))
{
LOGGER.config(getClass().getSimpleName() + ": Caution: Zone (" + zoneId + ") from file: " + f.getName() + " overrides previuos definition.");
LOGGER.config(getClass().getSimpleName() + ": Caution: Zone (" + zoneId + ") from file: " + f.getName() + " overrides previous definition.");
}
if ((zoneName != null) && !zoneName.isEmpty())