Browse Source

BETA: Adding some basic methods like isPlayer, isMonster, etc..
Defined in L2Object and overrided in the necessary classes to avoid castings.

Rumen Nikiforov 13 năm trước cách đây
mục cha
commit
d77ebb8630

+ 88 - 0
L2J_Server_BETA/java/com/l2jserver/gameserver/model/L2Object.java

@@ -19,13 +19,21 @@ import com.l2jserver.gameserver.handler.ActionShiftHandler;
 import com.l2jserver.gameserver.handler.IActionHandler;
 import com.l2jserver.gameserver.idfactory.IdFactory;
 import com.l2jserver.gameserver.instancemanager.InstanceManager;
+import com.l2jserver.gameserver.model.actor.L2Attackable;
 import com.l2jserver.gameserver.model.actor.L2Character;
 import com.l2jserver.gameserver.model.actor.L2Npc;
+import com.l2jserver.gameserver.model.actor.L2Playable;
+import com.l2jserver.gameserver.model.actor.L2Summon;
+import com.l2jserver.gameserver.model.actor.instance.L2DoorInstance;
+import com.l2jserver.gameserver.model.actor.instance.L2MonsterInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
+import com.l2jserver.gameserver.model.actor.instance.L2PetInstance;
+import com.l2jserver.gameserver.model.actor.instance.L2TrapInstance;
 import com.l2jserver.gameserver.model.actor.knownlist.ObjectKnownList;
 import com.l2jserver.gameserver.model.actor.poly.ObjectPoly;
 import com.l2jserver.gameserver.model.actor.position.ObjectPosition;
 import com.l2jserver.gameserver.model.entity.Instance;
+import com.l2jserver.gameserver.model.items.instance.L2ItemInstance;
 import com.l2jserver.gameserver.network.SystemMessageId;
 import com.l2jserver.gameserver.network.serverpackets.ActionFailed;
 import com.l2jserver.gameserver.network.serverpackets.ExSendUIEvent;
@@ -705,4 +713,84 @@ public abstract class L2Object
 	{
 		// default implementation
 	}
+
+	/**
+	 * @return {@code true} if object is instance of {@link L2PcInstance}
+	 */
+	public boolean isPlayer()
+	{
+		return false;
+	}
+	
+	/**
+	 * @return {@code true} if object is instance of {@link L2Playable}
+	 */
+	public boolean isPlayable()
+	{
+		return false;
+	}
+	
+	/**
+	 * @return {@code true} if object is instance of {@link L2Summon}
+	 */
+	public boolean isSummon()
+	{
+		return false;
+	}
+
+	/**
+	 * @return {@code true} if object is instance of {@link L2PetInstance}
+	 */
+	public boolean isPet()
+	{
+		return false;
+	}
+	
+	/**
+	 * @return {@code true} if object is instance of {@link L2DoorInstance}
+	 */
+	public boolean isDoor()
+	{
+		return false;
+	}
+	
+	/**
+	 * @return {@code true} if object is instance of {@link L2Npc}
+	 */
+	public boolean isNpc()
+	{
+		return false;
+	}
+	
+	/**
+	 * @return {@code true} if object is instance of {@link L2Attackable}
+	 */
+	public boolean isL2Attackable()
+	{
+		return false;
+	}
+	
+	/**
+	 * @return {@code true} if object is instance of {@link L2MonsterInstance}
+	 */
+	public boolean isMonster()
+	{
+		return false;
+	}
+	
+	/**
+	 * @return {@code true} if object is instance of {@link L2TrapInstance}
+	 */
+	public boolean isTrap()
+	{
+		return false;
+	}
+	
+	/**
+	 * @return {@code true} if object is instance of {@link L2ItemInstance}
+	 */
+	public boolean isItem()
+	{
+		return false;
+	}
 }

+ 6 - 0
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/L2Attackable.java

@@ -2461,4 +2461,10 @@ public class L2Attackable extends L2Npc
 	{
 		return _champion;
 	}
+	
+	@Override
+	public boolean isL2Attackable()
+	{
+		return true;
+	}
 }

+ 6 - 0
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/L2Npc.java

@@ -1699,4 +1699,10 @@ public class L2Npc extends L2Character
 	{
 		_summoner = summoner;
 	}
+	
+	@Override
+	public boolean isNpc()
+	{
+		return true;
+	}
 }

+ 5 - 0
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/L2Playable.java

@@ -336,4 +336,9 @@ public abstract class L2Playable extends L2Character
 	
 	public abstract void restoreEffects();
 	
+	@Override
+	public boolean isPlayable()
+	{
+		return true;
+	}
 }

+ 6 - 0
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/L2Summon.java

@@ -941,4 +941,10 @@ public abstract class L2Summon extends L2Playable
 		if (getOwner() != null)
 			getOwner().sendPacket(id);
 	}
+	
+	@Override
+	public boolean isSummon()
+	{
+		return true;
+	}
 }

+ 6 - 0
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/instance/L2DoorInstance.java

@@ -742,4 +742,10 @@ public class L2DoorInstance extends L2Character
 		
 		activeChar.sendPacket(new StaticObject(this, false));
 	}
+	
+	@Override
+	public boolean isDoor()
+	{
+		return true;
+	}
 }

+ 6 - 0
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/instance/L2MonsterInstance.java

@@ -217,4 +217,10 @@ public class L2MonsterInstance extends L2Attackable
 
 		return _minionList;
 	}
+	
+	@Override
+	public boolean isMonster()
+	{
+		return true;
+	}
 }

+ 6 - 0
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java

@@ -15363,4 +15363,10 @@ public final class L2PcInstance extends L2Playable
 	{
 		_notMoveUntil = System.currentTimeMillis() + Config.PLAYER_MOVEMENT_BLOCK_TIME;
 	}
+	
+	@Override
+	public boolean isPlayer()
+	{
+		return true;
+	}
 }

+ 6 - 0
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/instance/L2PetInstance.java

@@ -1368,4 +1368,10 @@ public class L2PetInstance extends L2Summon
 	{
 		return Util.contains(_data.getFood(), itemId);
 	}
+	
+	@Override
+	public boolean isPet()
+	{
+		return true;
+	}
 }

+ 6 - 0
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/instance/L2TrapInstance.java

@@ -247,4 +247,10 @@ public class L2TrapInstance extends L2Trap
 		
 		return true;
 	}
+	
+	@Override
+	public boolean isTrap()
+	{
+		return true;
+	}
 }

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

@@ -2024,4 +2024,10 @@ public final class L2ItemInstance extends L2Object
 			}
 		}
 	}
+	
+	@Override
+	public boolean isItem()
+	{
+		return true;
+	}
 }