From 6a4f4d18e7bcf54ad65d2be0126dc259711ecb0b Mon Sep 17 00:00:00 2001 From: MobiusDevelopment <8391001+MobiusDevelopment@users.noreply.github.com> Date: Wed, 27 Apr 2022 22:21:29 +0000 Subject: [PATCH] Addition of useful InstanceWorld methods. --- .../model/instancezone/InstanceWorld.java | 51 +++++++++++++++++++ .../model/instancezone/InstanceWorld.java | 51 +++++++++++++++++++ .../model/instancezone/InstanceWorld.java | 51 +++++++++++++++++++ 3 files changed, 153 insertions(+) diff --git a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/instancezone/InstanceWorld.java b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/instancezone/InstanceWorld.java index 80581f09a7..1a1c31408c 100644 --- a/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/instancezone/InstanceWorld.java +++ b/L2J_Mobius_CT_0_Interlude/java/org/l2jmobius/gameserver/model/instancezone/InstanceWorld.java @@ -24,12 +24,14 @@ import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import org.l2jmobius.commons.util.CommonUtil; +import org.l2jmobius.gameserver.enums.TeleportWhereType; import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.instance.Door; +import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; /** * Basic instance zone data transfer object. @@ -109,6 +111,26 @@ public class InstanceWorld return _allowed.contains(player.getObjectId()); } + /** + * Teleport player out of instance. + * @param player player that should be moved out + */ + public void ejectPlayer(Player player) + { + if ((player != null) && (player.getInstanceId() == _instance.getId())) + { + player.setInstanceId(0); + if (_instance.getExitLoc() != null) + { + player.teleToLocation(_instance.getExitLoc(), true); + } + else + { + player.teleToLocation(TeleportWhereType.TOWN); + } + } + } + /** * Set instance world parameter. * @param key parameter name @@ -332,4 +354,33 @@ public class InstanceWorld door.closeMe(); } } + + /** + * Get spawned door by template ID. + * @param doorId template ID of door + * @return instance of door if found, otherwise {@code null} + */ + public Door getDoor(int doorId) + { + return _instance.getDoor(doorId); + } + + /** + * Send packet to each player from instance world. + * @param packets packets to be send + */ + public void broadcastPacket(IClientOutgoingPacket... packets) + { + for (int objectId : _instance.getPlayers()) + { + final Player player = World.getInstance().getPlayer(objectId); + if ((player != null) && (player.getInstanceId() == _instance.getId())) + { + for (IClientOutgoingPacket packet : packets) + { + player.sendPacket(packet); + } + } + } + } } diff --git a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/instancezone/InstanceWorld.java b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/instancezone/InstanceWorld.java index 80581f09a7..1a1c31408c 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/instancezone/InstanceWorld.java +++ b/L2J_Mobius_CT_2.4_Epilogue/java/org/l2jmobius/gameserver/model/instancezone/InstanceWorld.java @@ -24,12 +24,14 @@ import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import org.l2jmobius.commons.util.CommonUtil; +import org.l2jmobius.gameserver.enums.TeleportWhereType; import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.instance.Door; +import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; /** * Basic instance zone data transfer object. @@ -109,6 +111,26 @@ public class InstanceWorld return _allowed.contains(player.getObjectId()); } + /** + * Teleport player out of instance. + * @param player player that should be moved out + */ + public void ejectPlayer(Player player) + { + if ((player != null) && (player.getInstanceId() == _instance.getId())) + { + player.setInstanceId(0); + if (_instance.getExitLoc() != null) + { + player.teleToLocation(_instance.getExitLoc(), true); + } + else + { + player.teleToLocation(TeleportWhereType.TOWN); + } + } + } + /** * Set instance world parameter. * @param key parameter name @@ -332,4 +354,33 @@ public class InstanceWorld door.closeMe(); } } + + /** + * Get spawned door by template ID. + * @param doorId template ID of door + * @return instance of door if found, otherwise {@code null} + */ + public Door getDoor(int doorId) + { + return _instance.getDoor(doorId); + } + + /** + * Send packet to each player from instance world. + * @param packets packets to be send + */ + public void broadcastPacket(IClientOutgoingPacket... packets) + { + for (int objectId : _instance.getPlayers()) + { + final Player player = World.getInstance().getPlayer(objectId); + if ((player != null) && (player.getInstanceId() == _instance.getId())) + { + for (IClientOutgoingPacket packet : packets) + { + player.sendPacket(packet); + } + } + } + } } diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/instancezone/InstanceWorld.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/instancezone/InstanceWorld.java index 80581f09a7..1a1c31408c 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/instancezone/InstanceWorld.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/instancezone/InstanceWorld.java @@ -24,12 +24,14 @@ import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import org.l2jmobius.commons.util.CommonUtil; +import org.l2jmobius.gameserver.enums.TeleportWhereType; import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.actor.instance.Door; +import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket; /** * Basic instance zone data transfer object. @@ -109,6 +111,26 @@ public class InstanceWorld return _allowed.contains(player.getObjectId()); } + /** + * Teleport player out of instance. + * @param player player that should be moved out + */ + public void ejectPlayer(Player player) + { + if ((player != null) && (player.getInstanceId() == _instance.getId())) + { + player.setInstanceId(0); + if (_instance.getExitLoc() != null) + { + player.teleToLocation(_instance.getExitLoc(), true); + } + else + { + player.teleToLocation(TeleportWhereType.TOWN); + } + } + } + /** * Set instance world parameter. * @param key parameter name @@ -332,4 +354,33 @@ public class InstanceWorld door.closeMe(); } } + + /** + * Get spawned door by template ID. + * @param doorId template ID of door + * @return instance of door if found, otherwise {@code null} + */ + public Door getDoor(int doorId) + { + return _instance.getDoor(doorId); + } + + /** + * Send packet to each player from instance world. + * @param packets packets to be send + */ + public void broadcastPacket(IClientOutgoingPacket... packets) + { + for (int objectId : _instance.getPlayers()) + { + final Player player = World.getInstance().getPlayer(objectId); + if ((player != null) && (player.getInstanceId() == _instance.getId())) + { + for (IClientOutgoingPacket packet : packets) + { + player.sendPacket(packet); + } + } + } + } }