Procházet zdrojové kódy

BETA: Removing Point3D class.
* 1 less object created per each L2Object.
* Minor improvements to L2PcInstance.

* Reviewed by: jurchiks
* Tested by: Konstantinos

xban1x před 11 roky
rodič
revize
825574668c
27 změnil soubory, kde provedl 179 přidání a 270 odebrání
  1. 1 1
      L2J_Server_BETA/java/com/l2jserver/gameserver/instancemanager/ItemsOnGroundManager.java
  2. 2 1
      L2J_Server_BETA/java/com/l2jserver/gameserver/instancemanager/SiegeManager.java
  3. 3 4
      L2J_Server_BETA/java/com/l2jserver/gameserver/model/CursedWeapon.java
  4. 108 17
      L2J_Server_BETA/java/com/l2jserver/gameserver/model/L2Object.java
  5. 1 2
      L2J_Server_BETA/java/com/l2jserver/gameserver/model/L2World.java
  6. 4 6
      L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/L2Character.java
  7. 2 2
      L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/L2Vehicle.java
  8. 1 2
      L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/instance/L2AirShipInstance.java
  9. 15 26
      L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java
  10. 3 3
      L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/instance/L2TamedBeastInstance.java
  11. 1 1
      L2J_Server_BETA/java/com/l2jserver/gameserver/model/items/instance/L2ItemInstance.java
  12. 2 2
      L2J_Server_BETA/java/com/l2jserver/gameserver/model/skills/SkillChannelizer.java
  13. 2 2
      L2J_Server_BETA/java/com/l2jserver/gameserver/network/clientpackets/CannotMoveAnymoreInVehicle.java
  14. 2 2
      L2J_Server_BETA/java/com/l2jserver/gameserver/network/clientpackets/MoveToLocationInAirShip.java
  15. 2 2
      L2J_Server_BETA/java/com/l2jserver/gameserver/network/clientpackets/RequestCursedWeaponLocation.java
  16. 2 2
      L2J_Server_BETA/java/com/l2jserver/gameserver/network/clientpackets/RequestExMagicSkillUseGround.java
  17. 3 3
      L2J_Server_BETA/java/com/l2jserver/gameserver/network/clientpackets/RequestGetOnVehicle.java
  18. 3 3
      L2J_Server_BETA/java/com/l2jserver/gameserver/network/clientpackets/RequestMoveToLocationInVehicle.java
  19. 3 3
      L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/ExCursedWeaponLocation.java
  20. 2 2
      L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/ExGetOnAirShip.java
  21. 2 2
      L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/ExMoveToLocationInAirShip.java
  22. 3 3
      L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/GetOnVehicle.java
  23. 4 4
      L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/MagicSkillUse.java
  24. 4 4
      L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/MoveToLocationInVehicle.java
  25. 2 2
      L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/StopMoveInVehicle.java
  26. 2 2
      L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/ValidateLocationInVehicle.java
  27. 0 167
      L2J_Server_BETA/java/com/l2jserver/gameserver/util/Point3D.java

+ 1 - 1
L2J_Server_BETA/java/com/l2jserver/gameserver/instancemanager/ItemsOnGroundManager.java

@@ -118,7 +118,7 @@ public final class ItemsOnGroundManager implements Runnable
 						item.setEnchantLevel(rs.getInt(4));
 					}
 					item.setXYZ(rs.getInt(5), rs.getInt(6), rs.getInt(7));
-					item.setWorldRegion(L2World.getInstance().getRegion(item.getWorldPosition()));
+					item.setWorldRegion(L2World.getInstance().getRegion(item.getLocation()));
 					item.getWorldRegion().addVisibleObject(item);
 					final long dropTime = rs.getLong(8);
 					item.setDropTime(dropTime);

+ 2 - 1
L2J_Server_BETA/java/com/l2jserver/gameserver/instancemanager/SiegeManager.java

@@ -42,6 +42,7 @@ import com.l2jserver.gameserver.model.actor.L2Character;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.entity.Castle;
 import com.l2jserver.gameserver.model.entity.Siege;
+import com.l2jserver.gameserver.model.interfaces.ILocational;
 import com.l2jserver.gameserver.model.skills.L2Skill;
 import com.l2jserver.util.PropertiesParser;
 
@@ -271,7 +272,7 @@ public final class SiegeManager
 		return _flagMaxCount;
 	}
 	
-	public final Siege getSiege(Location loc)
+	public final Siege getSiege(ILocational loc)
 	{
 		return getSiege(loc.getX(), loc.getY(), loc.getZ());
 	}

+ 3 - 4
L2J_Server_BETA/java/com/l2jserver/gameserver/model/CursedWeapon.java

@@ -49,7 +49,6 @@ import com.l2jserver.gameserver.network.serverpackets.SocialAction;
 import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
 import com.l2jserver.gameserver.network.serverpackets.UserInfo;
 import com.l2jserver.gameserver.util.Broadcast;
-import com.l2jserver.gameserver.util.Point3D;
 import com.l2jserver.util.Rnd;
 
 public class CursedWeapon implements INamable
@@ -734,16 +733,16 @@ public class CursedWeapon implements INamable
 		}
 	}
 	
-	public Point3D getWorldPosition()
+	public Location getWorldPosition()
 	{
 		if (_isActivated && (_player != null))
 		{
-			return _player.getWorldPosition();
+			return _player.getLocation();
 		}
 		
 		if (_isDropped && (_item != null))
 		{
-			return _item.getWorldPosition();
+			return _item.getLocation();
 		}
 		
 		return null;

+ 108 - 17
L2J_Server_BETA/java/com/l2jserver/gameserver/model/L2Object.java

@@ -19,6 +19,7 @@
 package com.l2jserver.gameserver.model;
 
 import java.util.Map;
+import java.util.concurrent.atomic.AtomicInteger;
 
 import javolution.util.FastMap;
 
@@ -39,6 +40,7 @@ import com.l2jserver.gameserver.model.interfaces.IDecayable;
 import com.l2jserver.gameserver.model.interfaces.IIdentifiable;
 import com.l2jserver.gameserver.model.interfaces.ILocational;
 import com.l2jserver.gameserver.model.interfaces.INamable;
+import com.l2jserver.gameserver.model.interfaces.IPositionable;
 import com.l2jserver.gameserver.model.interfaces.ISpawnable;
 import com.l2jserver.gameserver.model.interfaces.IUniqueId;
 import com.l2jserver.gameserver.model.zone.ZoneId;
@@ -46,13 +48,12 @@ import com.l2jserver.gameserver.network.SystemMessageId;
 import com.l2jserver.gameserver.network.serverpackets.ActionFailed;
 import com.l2jserver.gameserver.network.serverpackets.ExSendUIEvent;
 import com.l2jserver.gameserver.network.serverpackets.L2GameServerPacket;
-import com.l2jserver.gameserver.util.Point3D;
 
 /**
  * Base class for all interactive objects.
  * @author unknown
  */
-public abstract class L2Object extends Point3D implements IIdentifiable, INamable, ISpawnable, IUniqueId, IDecayable
+public abstract class L2Object implements IIdentifiable, INamable, ISpawnable, IUniqueId, IDecayable, IPositionable
 {
 	private boolean _isVisible;
 	private ObjectKnownList _knownList;
@@ -62,9 +63,14 @@ public abstract class L2Object extends Point3D implements IIdentifiable, INamabl
 	private InstanceType _instanceType = null;
 	private volatile Map<String, Object> _scripts;
 	
+	private final AtomicInteger _x = new AtomicInteger(0);
+	private final AtomicInteger _y = new AtomicInteger(0);
+	private final AtomicInteger _z = new AtomicInteger(0);
+	private final AtomicInteger _heading = new AtomicInteger(0);
+	private final AtomicInteger _instanceId = new AtomicInteger(0);
+	
 	public L2Object(int objectId)
 	{
-		super(0, 0, 0);
 		setInstanceType(InstanceType.L2Object);
 		_objectId = objectId;
 		initKnownList();
@@ -182,8 +188,7 @@ public abstract class L2Object extends Point3D implements IIdentifiable, INamabl
 			}
 		}
 		
-		super.setInstanceId(instanceId);
-		
+		_instanceId.set(instanceId);
 		if (_isVisible && (_knownList != null))
 		{
 			// We don't want some ugly looking disappear/appear effects, so don't update
@@ -243,13 +248,13 @@ public abstract class L2Object extends Point3D implements IIdentifiable, INamabl
 	@Override
 	public final boolean spawnMe()
 	{
-		assert (getWorldRegion() == null) && (getWorldPosition().getX() != 0) && (getWorldPosition().getY() != 0) && (getWorldPosition().getZ() != 0);
+		assert (getWorldRegion() == null) && (getLocation().getX() != 0) && (getLocation().getY() != 0) && (getLocation().getZ() != 0);
 		
 		synchronized (this)
 		{
 			// Set the x,y,z position of the L2Object spawn and update its _worldregion
 			_isVisible = true;
-			setWorldRegion(L2World.getInstance().getRegion(getWorldPosition()));
+			setWorldRegion(L2World.getInstance().getRegion(getLocation()));
 			
 			// Add the L2Object spawn in the _allobjects of L2World
 			L2World.getInstance().storeObject(this);
@@ -294,7 +299,7 @@ public abstract class L2Object extends Point3D implements IIdentifiable, INamabl
 			}
 			
 			setXYZ(x, y, z);
-			setWorldRegion(L2World.getInstance().getRegion(getWorldPosition()));
+			setWorldRegion(L2World.getInstance().getRegion(getLocation()));
 			
 			// Add the L2Object spawn in the _allobjects of L2World
 		}
@@ -611,11 +616,13 @@ public abstract class L2Object extends Point3D implements IIdentifiable, INamabl
 	{
 		assert getWorldRegion() != null;
 		
-		super.setXYZ(x, y, z);
+		setX(x);
+		setY(y);
+		setZ(z);
 		
 		try
 		{
-			if (L2World.getInstance().getRegion(getWorldPosition()) != getWorldRegion())
+			if (L2World.getInstance().getRegion(getLocation()) != getWorldRegion())
 			{
 				updateWorldRegion();
 			}
@@ -663,7 +670,7 @@ public abstract class L2Object extends Point3D implements IIdentifiable, INamabl
 		this.setIsVisible(false);
 	}
 	
-	public final void setLocationInvisible(Location loc)
+	public final void setLocationInvisible(ILocational loc)
 	{
 		setXYZInvisible(loc.getX(), loc.getY(), loc.getZ());
 	}
@@ -675,7 +682,7 @@ public abstract class L2Object extends Point3D implements IIdentifiable, INamabl
 			return;
 		}
 		
-		L2WorldRegion newRegion = L2World.getInstance().getRegion(getWorldPosition());
+		L2WorldRegion newRegion = L2World.getInstance().getRegion(getLocation());
 		if (newRegion != getWorldRegion())
 		{
 			getWorldRegion().removeVisibleObject(this);
@@ -687,11 +694,6 @@ public abstract class L2Object extends Point3D implements IIdentifiable, INamabl
 		}
 	}
 	
-	public final void setWorldPosition(Point3D newPosition)
-	{
-		setXYZ(newPosition.getX(), newPosition.getY(), newPosition.getZ());
-	}
-	
 	public final L2WorldRegion getWorldRegion()
 	{
 		return _worldRegion;
@@ -741,6 +743,95 @@ public abstract class L2Object extends Point3D implements IIdentifiable, INamabl
 		return calculateDistance(loc.getLocation(this).getX(), loc.getLocation(this).getY(), loc.getLocation(this).getZ(), includeZAxis, squared);
 	}
 	
+	@Override
+	public int getX()
+	{
+		return _x.get();
+	}
+	
+	@Override
+	public int getY()
+	{
+		return _y.get();
+	}
+	
+	@Override
+	public int getZ()
+	{
+		return _z.get();
+	}
+	
+	@Override
+	public int getHeading()
+	{
+		return _heading.get();
+	}
+	
+	@Override
+	public int getInstanceId()
+	{
+		return _instanceId.get();
+	}
+	
+	@Override
+	public Location getLocation()
+	{
+		return new Location(getX(), getY(), getZ(), getHeading(), getInstanceId());
+	}
+	
+	@Override
+	public Location getLocation(L2Object obj)
+	{
+		return getLocation();
+	}
+	
+	@Override
+	public void setX(int x)
+	{
+		_x.set(x);
+	}
+	
+	@Override
+	public void setY(int y)
+	{
+		_y.set(y);
+	}
+	
+	@Override
+	public void setZ(int z)
+	{
+		_z.set(z);
+	}
+	
+	public void setXYZ(ILocational loc)
+	{
+		_x.set(loc.getX());
+		_y.set(loc.getY());
+		_z.set(loc.getZ());
+	}
+	
+	@Override
+	public void setHeading(int heading)
+	{
+		_heading.set(heading);
+	}
+	
+	@Override
+	public void setLocation(Location loc)
+	{
+		_x.set(loc.getX());
+		_y.set(loc.getY());
+		_z.set(loc.getZ());
+		_heading.set(loc.getHeading());
+		_instanceId.set(loc.getInstanceId());
+	}
+	
+	@Override
+	public boolean equals(Object obj)
+	{
+		return ((obj instanceof L2Object) && (((L2Object) obj).getObjectId() == getObjectId()));
+	}
+	
 	@Override
 	public String toString()
 	{

+ 1 - 2
L2J_Server_BETA/java/com/l2jserver/gameserver/model/L2World.java

@@ -35,7 +35,6 @@ import com.l2jserver.gameserver.model.actor.L2Playable;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2PetInstance;
 import com.l2jserver.gameserver.model.interfaces.IL2Procedure;
-import com.l2jserver.gameserver.util.Point3D;
 import com.l2jserver.util.StringUtil;
 
 public final class L2World
@@ -595,7 +594,7 @@ public final class L2World
 	 * @param point position of the object
 	 * @return
 	 */
-	public L2WorldRegion getRegion(Point3D point)
+	public L2WorldRegion getRegion(Location point)
 	{
 		return _worldRegions[(point.getX() >> SHIFT_BY) + OFFSET_X][(point.getY() >> SHIFT_BY) + OFFSET_Y];
 	}

+ 4 - 6
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/L2Character.java

@@ -93,7 +93,6 @@ import com.l2jserver.gameserver.model.holders.SkillUseHolder;
 import com.l2jserver.gameserver.model.interfaces.IChanceSkillTrigger;
 import com.l2jserver.gameserver.model.interfaces.IDeletable;
 import com.l2jserver.gameserver.model.interfaces.ILocational;
-import com.l2jserver.gameserver.model.interfaces.IPositionable;
 import com.l2jserver.gameserver.model.interfaces.ISkillsHolder;
 import com.l2jserver.gameserver.model.itemcontainer.Inventory;
 import com.l2jserver.gameserver.model.items.L2Item;
@@ -140,7 +139,6 @@ import com.l2jserver.gameserver.network.serverpackets.TeleportToLocation;
 import com.l2jserver.gameserver.pathfinding.AbstractNodeLoc;
 import com.l2jserver.gameserver.pathfinding.PathFinding;
 import com.l2jserver.gameserver.taskmanager.AttackStanceTaskManager;
-import com.l2jserver.gameserver.util.Point3D;
 import com.l2jserver.gameserver.util.Util;
 import com.l2jserver.util.Rnd;
 
@@ -745,17 +743,17 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe
 		teleToLocation(x, y, z, 0, -1, 0);
 	}
 	
-	public void teleToLocation(IPositionable loc, int randomOffset)
+	public void teleToLocation(ILocational loc, int randomOffset)
 	{
 		teleToLocation(loc.getX(), loc.getY(), loc.getZ(), loc.getHeading(), loc.getInstanceId(), randomOffset);
 	}
 	
-	public void teleToLocation(IPositionable loc, boolean randomOffset)
+	public void teleToLocation(ILocational loc, boolean randomOffset)
 	{
 		teleToLocation(loc.getX(), loc.getY(), loc.getZ(), loc.getHeading(), loc.getInstanceId(), (randomOffset) ? Config.MAX_OFFSET_ON_TELEPORT : 0);
 	}
 	
-	public void teleToLocation(IPositionable loc)
+	public void teleToLocation(ILocational loc)
 	{
 		teleToLocation(loc.getX(), loc.getY(), loc.getZ(), loc.getHeading(), loc.getInstanceId(), 0);
 	}
@@ -2042,7 +2040,7 @@ public abstract class L2Character extends L2Object implements ISkillsHolder, IDe
 			boolean canCast = true;
 			if ((skill.getTargetType() == L2TargetType.GROUND) && isPlayer())
 			{
-				Point3D wp = getActingPlayer().getCurrentSkillWorldPosition();
+				Location wp = getActingPlayer().getCurrentSkillWorldPosition();
 				if (!region.checkEffectRangeInsidePeaceZone(skill, wp.getX(), wp.getY(), wp.getZ()))
 				{
 					canCast = false;

+ 2 - 2
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/L2Vehicle.java

@@ -41,7 +41,7 @@ import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.actor.knownlist.VehicleKnownList;
 import com.l2jserver.gameserver.model.actor.stat.VehicleStat;
 import com.l2jserver.gameserver.model.actor.templates.L2CharTemplate;
-import com.l2jserver.gameserver.model.interfaces.IPositionable;
+import com.l2jserver.gameserver.model.interfaces.ILocational;
 import com.l2jserver.gameserver.model.items.L2Weapon;
 import com.l2jserver.gameserver.model.items.instance.L2ItemInstance;
 import com.l2jserver.gameserver.network.SystemMessageId;
@@ -360,7 +360,7 @@ public abstract class L2Vehicle extends L2Character
 	}
 	
 	@Override
-	public void teleToLocation(IPositionable loc, boolean allowRandomOffset)
+	public void teleToLocation(ILocational loc, boolean allowRandomOffset)
 	{
 		if (isMoving())
 		{

+ 1 - 2
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/instance/L2AirShipInstance.java

@@ -29,7 +29,6 @@ import com.l2jserver.gameserver.network.serverpackets.ExGetOffAirShip;
 import com.l2jserver.gameserver.network.serverpackets.ExGetOnAirShip;
 import com.l2jserver.gameserver.network.serverpackets.ExMoveToLocationAirShip;
 import com.l2jserver.gameserver.network.serverpackets.ExStopMoveAirShip;
-import com.l2jserver.gameserver.util.Point3D;
 
 /**
  * Flying airships. Very similar to Maktakien boats (see L2BoatInstance) but these do fly :P
@@ -132,7 +131,7 @@ public class L2AirShipInstance extends L2Vehicle
 		}
 		
 		player.setVehicle(this);
-		player.setInVehiclePosition(new Point3D(0, 0, 0));
+		player.setInVehiclePosition(new Location(0, 0, 0));
 		player.broadcastPacket(new ExGetOnAirShip(player, this));
 		player.getKnownList().removeAllKnownObjects();
 		player.setXYZ(getX(), getY(), getZ());

+ 15 - 26
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java

@@ -205,7 +205,7 @@ import com.l2jserver.gameserver.model.fishing.L2Fishing;
 import com.l2jserver.gameserver.model.holders.ItemHolder;
 import com.l2jserver.gameserver.model.holders.PlayerEventHolder;
 import com.l2jserver.gameserver.model.holders.SkillUseHolder;
-import com.l2jserver.gameserver.model.interfaces.IPositionable;
+import com.l2jserver.gameserver.model.interfaces.ILocational;
 import com.l2jserver.gameserver.model.itemcontainer.Inventory;
 import com.l2jserver.gameserver.model.itemcontainer.ItemContainer;
 import com.l2jserver.gameserver.model.itemcontainer.PcFreight;
@@ -330,7 +330,6 @@ import com.l2jserver.gameserver.scripting.scriptengine.listeners.player.Transfor
 import com.l2jserver.gameserver.taskmanager.AttackStanceTaskManager;
 import com.l2jserver.gameserver.util.Broadcast;
 import com.l2jserver.gameserver.util.FloodProtectors;
-import com.l2jserver.gameserver.util.Point3D;
 import com.l2jserver.gameserver.util.Util;
 import com.l2jserver.util.Rnd;
 
@@ -543,7 +542,7 @@ public final class L2PcInstance extends L2Playable
 	
 	/** Boat and AirShip */
 	private L2Vehicle _vehicle = null;
-	private Point3D _inVehiclePosition;
+	private Location _inVehiclePosition;
 	
 	public ScheduledFuture<?> _taskforfish;
 	private MountType _mountType = MountType.NONE;
@@ -576,7 +575,7 @@ public final class L2PcInstance extends L2Playable
 	private boolean _observerMode = false;
 	
 	/** Stored from last ValidatePosition **/
-	private final Point3D _lastServerPosition = new Point3D(0, 0, 0);
+	private final Location _lastServerPosition = new Location(0, 0, 0);
 	
 	/** The number of recommendation obtained by the L2PcInstance */
 	private int _recomHave; // how much I was recommended by others
@@ -703,7 +702,7 @@ public final class L2PcInstance extends L2Playable
 	private ScheduledFuture<?> _soulTask = null;
 	
 	// WorldPosition used by TARGET_SIGNET_GROUND
-	private Point3D _currentSkillWorldPosition;
+	private Location _currentSkillWorldPosition;
 	
 	private L2AccessLevel _accessLevel;
 	
@@ -4353,12 +4352,12 @@ public final class L2PcInstance extends L2Playable
 		}
 	}
 	
-	public Point3D getCurrentSkillWorldPosition()
+	public Location getCurrentSkillWorldPosition()
 	{
 		return _currentSkillWorldPosition;
 	}
 	
-	public void setCurrentSkillWorldPosition(Point3D worldPosition)
+	public void setCurrentSkillWorldPosition(Location worldPosition)
 	{
 		_currentSkillWorldPosition = worldPosition;
 	}
@@ -8895,7 +8894,7 @@ public final class L2PcInstance extends L2Playable
 		// Create and set a L2Object containing the target of the skill
 		L2Object target = null;
 		L2TargetType sklTargetType = skill.getTargetType();
-		Point3D worldPosition = getCurrentSkillWorldPosition();
+		Location worldPosition = getCurrentSkillWorldPosition();
 		
 		if ((sklTargetType == L2TargetType.GROUND) && (worldPosition == null))
 		{
@@ -11138,7 +11137,7 @@ public final class L2PcInstance extends L2Playable
 	}
 	
 	@Override
-	public void teleToLocation(IPositionable loc, boolean allowRandomOffset)
+	public void teleToLocation(ILocational loc, boolean allowRandomOffset)
 	{
 		if ((getVehicle() != null) && !getVehicle().isTeleporting())
 		{
@@ -11147,7 +11146,7 @@ public final class L2PcInstance extends L2Playable
 		
 		if (isFlyingMounted() && (loc.getZ() < -1005))
 		{
-			loc.setZ(-1005);
+			super.teleToLocation(loc.getX(), loc.getY(), -1005, loc.getHeading(), loc.getInstanceId());
 		}
 		
 		super.teleToLocation(loc, allowRandomOffset);
@@ -11237,23 +11236,14 @@ public final class L2PcInstance extends L2Playable
 		_lastServerPosition.setXYZ(x, y, z);
 	}
 	
-	public Point3D getLastServerPosition()
+	public Location getLastServerPosition()
 	{
 		return _lastServerPosition;
 	}
 	
-	public boolean checkLastServerPosition(int x, int y, int z)
-	{
-		return _lastServerPosition.equals(x, y, z);
-	}
-	
 	public int getLastServerDistance(int x, int y, int z)
 	{
-		double dx = (x - _lastServerPosition.getX());
-		double dy = (y - _lastServerPosition.getY());
-		double dz = (z - _lastServerPosition.getZ());
-		
-		return (int) Math.sqrt((dx * dx) + (dy * dy) + (dz * dz));
+		return (int) Util.calculateDistance(x, y, z, _lastServerPosition.getX(), _lastServerPosition.getY(), _lastServerPosition.getZ(), true, false);
 	}
 	
 	@Override
@@ -11526,12 +11516,12 @@ public final class L2PcInstance extends L2Playable
 	/**
 	 * @return
 	 */
-	public Point3D getInVehiclePosition()
+	public Location getInVehiclePosition()
 	{
 		return _inVehiclePosition;
 	}
 	
-	public void setInVehiclePosition(Point3D pt)
+	public void setInVehiclePosition(Location pt)
 	{
 		_inVehiclePosition = pt;
 	}
@@ -13589,7 +13579,7 @@ public final class L2PcInstance extends L2Playable
 	{
 		if (isInBoat())
 		{
-			setWorldPosition(getBoat().getWorldPosition());
+			setXYZ(getBoat().getLocation());
 			
 			activeChar.sendPacket(new CharInfo(this));
 			activeChar.sendPacket(new ExBrExtraUserInfo(this));
@@ -13617,8 +13607,7 @@ public final class L2PcInstance extends L2Playable
 		}
 		else if (isInAirShip())
 		{
-			setWorldPosition(getAirShip().getWorldPosition());
-			
+			setXYZ(getAirShip().getLocation());
 			activeChar.sendPacket(new CharInfo(this));
 			activeChar.sendPacket(new ExBrExtraUserInfo(this));
 			int relation1 = getRelation(activeChar);

+ 3 - 3
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/instance/L2TamedBeastInstance.java

@@ -30,6 +30,7 @@ import com.l2jserver.gameserver.ai.CtrlIntention;
 import com.l2jserver.gameserver.datatables.SkillTable;
 import com.l2jserver.gameserver.enums.InstanceType;
 import com.l2jserver.gameserver.model.L2Object;
+import com.l2jserver.gameserver.model.Location;
 import com.l2jserver.gameserver.model.actor.L2Character;
 import com.l2jserver.gameserver.model.actor.templates.L2NpcTemplate;
 import com.l2jserver.gameserver.model.effects.L2EffectType;
@@ -40,7 +41,6 @@ import com.l2jserver.gameserver.network.serverpackets.AbstractNpcInfo;
 import com.l2jserver.gameserver.network.serverpackets.ActionFailed;
 import com.l2jserver.gameserver.network.serverpackets.SocialAction;
 import com.l2jserver.gameserver.network.serverpackets.StopMove;
-import com.l2jserver.gameserver.util.Point3D;
 import com.l2jserver.util.Rnd;
 
 // While a tamed beast behaves a lot like a pet (ingame) and does have
@@ -113,9 +113,9 @@ public final class L2TamedBeastInstance extends L2FeedableBeastInstance
 		}
 	}
 	
-	public Point3D getHome()
+	public Location getHome()
 	{
-		return new Point3D(_homeX, _homeY, _homeZ);
+		return new Location(_homeX, _homeY, _homeZ);
 	}
 	
 	public void setHome(int x, int y, int z)

+ 1 - 1
L2J_Server_BETA/java/com/l2jserver/gameserver/model/items/instance/L2ItemInstance.java

@@ -1592,7 +1592,7 @@ public final class L2ItemInstance extends L2Object
 				// Set the x,y,z position of the L2ItemInstance dropped and update its _worldregion
 				_itm.setIsVisible(true);
 				_itm.setXYZ(_x, _y, _z);
-				_itm.setWorldRegion(L2World.getInstance().getRegion(getWorldPosition()));
+				_itm.setWorldRegion(L2World.getInstance().getRegion(getLocation()));
 				
 				// Add the L2ItemInstance dropped to _visibleObjects of its L2WorldRegion
 			}

+ 2 - 2
L2J_Server_BETA/java/com/l2jserver/gameserver/model/skills/SkillChannelizer.java

@@ -29,10 +29,10 @@ import com.l2jserver.gameserver.GeoData;
 import com.l2jserver.gameserver.ThreadPoolManager;
 import com.l2jserver.gameserver.datatables.SkillTable;
 import com.l2jserver.gameserver.enums.ShotType;
+import com.l2jserver.gameserver.model.Location;
 import com.l2jserver.gameserver.model.actor.L2Character;
 import com.l2jserver.gameserver.network.SystemMessageId;
 import com.l2jserver.gameserver.network.serverpackets.MagicSkillLaunched;
-import com.l2jserver.gameserver.util.Point3D;
 import com.l2jserver.gameserver.util.Util;
 
 /**
@@ -257,7 +257,7 @@ public class SkillChannelizer implements Runnable
 				
 				if (_channelizer.isPlayer())
 				{
-					final Point3D wordPosition = _channelizer.getActingPlayer().getCurrentSkillWorldPosition();
+					final Location wordPosition = _channelizer.getActingPlayer().getCurrentSkillWorldPosition();
 					if (wordPosition != null)
 					{
 						x = wordPosition.getX();

+ 2 - 2
L2J_Server_BETA/java/com/l2jserver/gameserver/network/clientpackets/CannotMoveAnymoreInVehicle.java

@@ -18,9 +18,9 @@
  */
 package com.l2jserver.gameserver.network.clientpackets;
 
+import com.l2jserver.gameserver.model.Location;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.network.serverpackets.StopMoveInVehicle;
-import com.l2jserver.gameserver.util.Point3D;
 
 /**
  * @author Maktakien
@@ -57,7 +57,7 @@ public final class CannotMoveAnymoreInVehicle extends L2GameClientPacket
 		{
 			if (player.getBoat().getObjectId() == _boatId)
 			{
-				player.setInVehiclePosition(new Point3D(_x, _y, _z));
+				player.setInVehiclePosition(new Location(_x, _y, _z));
 				player.setHeading(_heading);
 				StopMoveInVehicle msg = new StopMoveInVehicle(player, _boatId);
 				player.broadcastPacket(msg);

+ 2 - 2
L2J_Server_BETA/java/com/l2jserver/gameserver/network/clientpackets/MoveToLocationInAirShip.java

@@ -19,13 +19,13 @@
 package com.l2jserver.gameserver.network.clientpackets;
 
 import com.l2jserver.gameserver.TaskPriority;
+import com.l2jserver.gameserver.model.Location;
 import com.l2jserver.gameserver.model.actor.instance.L2AirShipInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.items.type.L2WeaponType;
 import com.l2jserver.gameserver.network.serverpackets.ActionFailed;
 import com.l2jserver.gameserver.network.serverpackets.ExMoveToLocationInAirShip;
 import com.l2jserver.gameserver.network.serverpackets.StopMoveInVehicle;
-import com.l2jserver.gameserver.util.Point3D;
 
 /**
  * format: ddddddd X:%d Y:%d Z:%d OriginX:%d OriginY:%d OriginZ:%d
@@ -100,7 +100,7 @@ public class MoveToLocationInAirShip extends L2GameClientPacket
 			return;
 		}
 		
-		activeChar.setInVehiclePosition(new Point3D(_targetX, _targetY, _targetZ));
+		activeChar.setInVehiclePosition(new Location(_targetX, _targetY, _targetZ));
 		activeChar.broadcastPacket(new ExMoveToLocationInAirShip(activeChar));
 	}
 	

+ 2 - 2
L2J_Server_BETA/java/com/l2jserver/gameserver/network/clientpackets/RequestCursedWeaponLocation.java

@@ -24,10 +24,10 @@ import javolution.util.FastList;
 
 import com.l2jserver.gameserver.instancemanager.CursedWeaponsManager;
 import com.l2jserver.gameserver.model.CursedWeapon;
+import com.l2jserver.gameserver.model.Location;
 import com.l2jserver.gameserver.model.actor.L2Character;
 import com.l2jserver.gameserver.network.serverpackets.ExCursedWeaponLocation;
 import com.l2jserver.gameserver.network.serverpackets.ExCursedWeaponLocation.CursedWeaponInfo;
-import com.l2jserver.gameserver.util.Point3D;
 
 /**
  * Format: (ch)
@@ -60,7 +60,7 @@ public final class RequestCursedWeaponLocation extends L2GameClientPacket
 				continue;
 			}
 			
-			Point3D pos = cw.getWorldPosition();
+			Location pos = cw.getWorldPosition();
 			if (pos != null)
 			{
 				list.add(new CursedWeaponInfo(pos, cw.getItemId(), cw.isActivated() ? 1 : 0));

+ 2 - 2
L2J_Server_BETA/java/com/l2jserver/gameserver/network/clientpackets/RequestExMagicSkillUseGround.java

@@ -19,12 +19,12 @@
 package com.l2jserver.gameserver.network.clientpackets;
 
 import com.l2jserver.gameserver.datatables.SkillTable;
+import com.l2jserver.gameserver.model.Location;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.skills.L2Skill;
 import com.l2jserver.gameserver.network.serverpackets.ActionFailed;
 import com.l2jserver.gameserver.network.serverpackets.ValidateLocation;
 import com.l2jserver.gameserver.util.Broadcast;
-import com.l2jserver.gameserver.util.Point3D;
 import com.l2jserver.gameserver.util.Util;
 
 /**
@@ -77,7 +77,7 @@ public final class RequestExMagicSkillUseGround extends L2GameClientPacket
 		// Check the validity of the skill
 		if (skill != null)
 		{
-			activeChar.setCurrentSkillWorldPosition(new Point3D(_x, _y, _z));
+			activeChar.setCurrentSkillWorldPosition(new Location(_x, _y, _z));
 			
 			// normally magicskilluse packet turns char client side but for these skills, it doesn't (even with correct target)
 			activeChar.setHeading(Util.calculateHeadingFrom(activeChar.getX(), activeChar.getY(), _x, _y));

+ 3 - 3
L2J_Server_BETA/java/com/l2jserver/gameserver/network/clientpackets/RequestGetOnVehicle.java

@@ -19,12 +19,12 @@
 package com.l2jserver.gameserver.network.clientpackets;
 
 import com.l2jserver.gameserver.instancemanager.BoatManager;
+import com.l2jserver.gameserver.model.Location;
 import com.l2jserver.gameserver.model.actor.instance.L2BoatInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.zone.ZoneId;
 import com.l2jserver.gameserver.network.serverpackets.ActionFailed;
 import com.l2jserver.gameserver.network.serverpackets.GetOnVehicle;
-import com.l2jserver.gameserver.util.Point3D;
 
 /**
  * This class ...
@@ -35,7 +35,7 @@ public final class RequestGetOnVehicle extends L2GameClientPacket
 	private static final String _C__53_GETONVEHICLE = "[C] 53 GetOnVehicle";
 	
 	private int _boatId;
-	private Point3D _pos;
+	private Location _pos;
 	
 	@Override
 	protected void readImpl()
@@ -45,7 +45,7 @@ public final class RequestGetOnVehicle extends L2GameClientPacket
 		x = readD();
 		y = readD();
 		z = readD();
-		_pos = new Point3D(x, y, z);
+		_pos = new Location(x, y, z);
 	}
 	
 	@Override

+ 3 - 3
L2J_Server_BETA/java/com/l2jserver/gameserver/network/clientpackets/RequestMoveToLocationInVehicle.java

@@ -21,6 +21,7 @@ package com.l2jserver.gameserver.network.clientpackets;
 import com.l2jserver.Config;
 import com.l2jserver.gameserver.TaskPriority;
 import com.l2jserver.gameserver.instancemanager.BoatManager;
+import com.l2jserver.gameserver.model.Location;
 import com.l2jserver.gameserver.model.actor.instance.L2BoatInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.items.type.L2WeaponType;
@@ -28,7 +29,6 @@ import com.l2jserver.gameserver.network.SystemMessageId;
 import com.l2jserver.gameserver.network.serverpackets.ActionFailed;
 import com.l2jserver.gameserver.network.serverpackets.MoveToLocationInVehicle;
 import com.l2jserver.gameserver.network.serverpackets.StopMoveInVehicle;
-import com.l2jserver.gameserver.util.Point3D;
 
 public final class RequestMoveToLocationInVehicle extends L2GameClientPacket
 {
@@ -128,8 +128,8 @@ public final class RequestMoveToLocationInVehicle extends L2GameClientPacket
 			activeChar.setVehicle(boat);
 		}
 		
-		final Point3D pos = new Point3D(_targetX, _targetY, _targetZ);
-		final Point3D originPos = new Point3D(_originX, _originY, _originZ);
+		final Location pos = new Location(_targetX, _targetY, _targetZ);
+		final Location originPos = new Location(_originX, _originY, _originZ);
 		activeChar.setInVehiclePosition(pos);
 		activeChar.broadcastPacket(new MoveToLocationInVehicle(activeChar, pos, originPos));
 	}

+ 3 - 3
L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/ExCursedWeaponLocation.java

@@ -20,7 +20,7 @@ package com.l2jserver.gameserver.network.serverpackets;
 
 import java.util.List;
 
-import com.l2jserver.gameserver.util.Point3D;
+import com.l2jserver.gameserver.model.Location;
 
 /**
  * Format: (ch) d[ddddd]
@@ -63,11 +63,11 @@ public class ExCursedWeaponLocation extends L2GameServerPacket
 	
 	public static class CursedWeaponInfo
 	{
-		public Point3D pos;
+		public Location pos;
 		public int id;
 		public int activated; // 0 - not activated ? 1 - activated
 		
-		public CursedWeaponInfo(Point3D p, int ID, int status)
+		public CursedWeaponInfo(Location p, int ID, int status)
 		{
 			pos = p;
 			id = ID;

+ 2 - 2
L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/ExGetOnAirShip.java

@@ -18,14 +18,14 @@
  */
 package com.l2jserver.gameserver.network.serverpackets;
 
+import com.l2jserver.gameserver.model.Location;
 import com.l2jserver.gameserver.model.actor.L2Character;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
-import com.l2jserver.gameserver.util.Point3D;
 
 public class ExGetOnAirShip extends L2GameServerPacket
 {
 	private final int _playerId, _airShipId;
-	private final Point3D _pos;
+	private final Location _pos;
 	
 	public ExGetOnAirShip(L2PcInstance player, L2Character ship)
 	{

+ 2 - 2
L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/ExMoveToLocationInAirShip.java

@@ -18,14 +18,14 @@
  */
 package com.l2jserver.gameserver.network.serverpackets;
 
+import com.l2jserver.gameserver.model.Location;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
-import com.l2jserver.gameserver.util.Point3D;
 
 public class ExMoveToLocationInAirShip extends L2GameServerPacket
 {
 	private final int _charObjId;
 	private final int _airShipId;
-	private final Point3D _destination;
+	private final Location _destination;
 	private final int _heading;
 	
 	/**

+ 3 - 3
L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/GetOnVehicle.java

@@ -18,7 +18,7 @@
  */
 package com.l2jserver.gameserver.network.serverpackets;
 
-import com.l2jserver.gameserver.util.Point3D;
+import com.l2jserver.gameserver.model.Location;
 
 /**
  * @author Maktakien
@@ -27,14 +27,14 @@ public class GetOnVehicle extends L2GameServerPacket
 {
 	private final int _charObjId;
 	private final int _boatObjId;
-	private final Point3D _pos;
+	private final Location _pos;
 	
 	/**
 	 * @param charObjId
 	 * @param boatObjId
 	 * @param pos
 	 */
-	public GetOnVehicle(int charObjId, int boatObjId, Point3D pos)
+	public GetOnVehicle(int charObjId, int boatObjId, Location pos)
 	{
 		_charObjId = charObjId;
 		_boatObjId = boatObjId;

+ 4 - 4
L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/MagicSkillUse.java

@@ -22,10 +22,10 @@ import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
 
+import com.l2jserver.gameserver.model.Location;
 import com.l2jserver.gameserver.model.actor.L2Character;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.interfaces.IPositionable;
-import com.l2jserver.gameserver.util.Point3D;
 
 /**
  * @author Unknown, UnAfraid, Nos
@@ -39,7 +39,7 @@ public final class MagicSkillUse extends L2GameServerPacket
 	private final L2Character _activeChar;
 	private final L2Character _target;
 	private final List<Integer> _unknown = Collections.emptyList();
-	private final List<Point3D> _groundLocations;
+	private final List<Location> _groundLocations;
 	
 	public MagicSkillUse(L2Character cha, L2Character target, int skillId, int skillLevel, int hitTime, int reuseDelay)
 	{
@@ -49,7 +49,7 @@ public final class MagicSkillUse extends L2GameServerPacket
 		_skillLevel = skillLevel;
 		_hitTime = hitTime;
 		_reuseDelay = reuseDelay;
-		Point3D skillWorldPos = null;
+		Location skillWorldPos = null;
 		if (cha.isPlayer())
 		{
 			final L2PcInstance player = cha.getActingPlayer();
@@ -58,7 +58,7 @@ public final class MagicSkillUse extends L2GameServerPacket
 				skillWorldPos = player.getCurrentSkillWorldPosition();
 			}
 		}
-		_groundLocations = skillWorldPos != null ? Arrays.asList(skillWorldPos) : Collections.<Point3D> emptyList();
+		_groundLocations = skillWorldPos != null ? Arrays.asList(skillWorldPos) : Collections.<Location> emptyList();
 	}
 	
 	public MagicSkillUse(L2Character cha, int skillId, int skillLevel, int hitTime, int reuseDelay)

+ 4 - 4
L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/MoveToLocationInVehicle.java

@@ -18,8 +18,8 @@
  */
 package com.l2jserver.gameserver.network.serverpackets;
 
+import com.l2jserver.gameserver.model.Location;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
-import com.l2jserver.gameserver.util.Point3D;
 
 /**
  * @author Maktakien
@@ -28,15 +28,15 @@ public class MoveToLocationInVehicle extends L2GameServerPacket
 {
 	private final int _charObjId;
 	private final int _boatId;
-	private final Point3D _destination;
-	private final Point3D _origin;
+	private final Location _destination;
+	private final Location _origin;
 	
 	/**
 	 * @param player
 	 * @param destination
 	 * @param origin
 	 */
-	public MoveToLocationInVehicle(L2PcInstance player, Point3D destination, Point3D origin)
+	public MoveToLocationInVehicle(L2PcInstance player, Location destination, Location origin)
 	{
 		_charObjId = player.getObjectId();
 		_boatId = player.getBoat().getObjectId();

+ 2 - 2
L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/StopMoveInVehicle.java

@@ -18,8 +18,8 @@
  */
 package com.l2jserver.gameserver.network.serverpackets;
 
+import com.l2jserver.gameserver.model.Location;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
-import com.l2jserver.gameserver.util.Point3D;
 
 /**
  * @author Maktakien
@@ -28,7 +28,7 @@ public class StopMoveInVehicle extends L2GameServerPacket
 {
 	private final int _charObjId;
 	private final int _boatId;
-	private final Point3D _pos;
+	private final Location _pos;
 	private final int _heading;
 	
 	public StopMoveInVehicle(L2PcInstance player, int boatId)

+ 2 - 2
L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/ValidateLocationInVehicle.java

@@ -18,15 +18,15 @@
  */
 package com.l2jserver.gameserver.network.serverpackets;
 
+import com.l2jserver.gameserver.model.Location;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
-import com.l2jserver.gameserver.util.Point3D;
 
 public class ValidateLocationInVehicle extends L2GameServerPacket
 {
 	private final int _charObjId;
 	private final int _boatObjId;
 	private final int _heading;
-	private final Point3D _pos;
+	private final Location _pos;
 	
 	/**
 	 * @param player

+ 0 - 167
L2J_Server_BETA/java/com/l2jserver/gameserver/util/Point3D.java

@@ -1,167 +0,0 @@
-/*
- * Copyright (C) 2004-2013 L2J Server
- * 
- * This file is part of L2J Server.
- * 
- * L2J Server is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- * 
- * L2J Server is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-package com.l2jserver.gameserver.util;
-
-import java.util.concurrent.atomic.AtomicInteger;
-
-import com.l2jserver.gameserver.model.L2Object;
-import com.l2jserver.gameserver.model.Location;
-import com.l2jserver.gameserver.model.interfaces.IPositionable;
-
-/**
- * @author Unknown, UnAfraid
- */
-public class Point3D implements IPositionable
-{
-	private final AtomicInteger _x = new AtomicInteger();
-	private final AtomicInteger _y = new AtomicInteger();
-	private final AtomicInteger _z = new AtomicInteger();
-	private final AtomicInteger _heading = new AtomicInteger();
-	private final AtomicInteger _instanceId = new AtomicInteger();
-	
-	public Point3D(int x, int y, int z)
-	{
-		_x.set(x);
-		_y.set(y);
-		_z.set(z);
-	}
-	
-	public Point3D(int x, int y, int z, int heading)
-	{
-		_x.set(x);
-		_y.set(y);
-		_z.set(z);
-		_heading.set(heading);
-	}
-	
-	public Point3D(int x, int y, int z, int heading, int instanceId)
-	{
-		_x.set(x);
-		_y.set(y);
-		_z.set(z);
-		_heading.set(heading);
-		_instanceId.set(instanceId);
-	}
-	
-	public boolean equals(int x, int y, int z)
-	{
-		return (getX() == x) && (getY() == y) && (getZ() == z);
-	}
-	
-	@Override
-	public int getX()
-	{
-		return _x.get();
-	}
-	
-	@Override
-	public int getY()
-	{
-		return _y.get();
-	}
-	
-	@Override
-	public int getZ()
-	{
-		return _z.get();
-	}
-	
-	@Override
-	public int getHeading()
-	{
-		return _heading.get();
-	}
-	
-	@Override
-	public int getInstanceId()
-	{
-		return _instanceId.get();
-	}
-	
-	@Override
-	public Location getLocation()
-	{
-		return new Location(getX(), getY(), getZ(), getHeading(), getInstanceId());
-	}
-	
-	@Override
-	public Location getLocation(L2Object obj)
-	{
-		return getLocation();
-	}
-
-	@Override
-	public void setX(int x)
-	{
-		_x.set(x);
-	}
-	
-	@Override
-	public void setY(int y)
-	{
-		_y.set(y);
-	}
-	
-	@Override
-	public void setZ(int z)
-	{
-		_z.set(z);
-	}
-	
-	@Override
-	public void setHeading(int heading)
-	{
-		_heading.set(heading);
-	}
-	
-	@Override
-	public void setInstanceId(int instanceId)
-	{
-		_instanceId.set(instanceId);
-	}
-	
-	@Override
-	public void setLocation(Location loc)
-	{
-		_x.set(loc.getX());
-		_y.set(loc.getY());
-		_z.set(loc.getZ());
-		_heading.set(loc.getHeading());
-		_instanceId.set(loc.getInstanceId());
-	}
-	
-	@Override
-	public void setXYZ(int x, int y, int z)
-	{
-		_x.set(x);
-		_y.set(y);
-		_z.set(z);
-	}
-	
-	public final Point3D getWorldPosition()
-	{
-		return this;
-	}
-	
-	@Override
-	public String toString()
-	{
-		return "(" + _x + ", " + _y + ", " + _z + ")";
-	}
-}