Minor Siege improvements.

Contributed by Liamxroy.
This commit is contained in:
MobiusDev 2017-11-12 01:30:17 +00:00
parent 1365c7bd5e
commit 8045531015
10 changed files with 200 additions and 525 deletions

View File

@ -24,6 +24,7 @@ import java.util.Collection;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Objects;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentSkipListMap; import java.util.concurrent.ConcurrentSkipListMap;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
@ -663,6 +664,7 @@ public class L2Clan implements IIdentifiable, INamable
.filter(member -> member.getObjectId() != exclude) .filter(member -> member.getObjectId() != exclude)
.filter(L2ClanMember::isOnline) .filter(L2ClanMember::isOnline)
.map(L2ClanMember::getPlayerInstance) .map(L2ClanMember::getPlayerInstance)
.filter(Objects::nonNull)
.collect(Collectors.toList()); .collect(Collectors.toList());
//@formatter:on //@formatter:on
} }

View File

@ -24,11 +24,13 @@ import java.util.Calendar;
import java.util.Collections; import java.util.Collections;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Objects;
import java.util.Set; import java.util.Set;
import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.ScheduledFuture; import java.util.concurrent.ScheduledFuture;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
import java.util.stream.Collectors;
import com.l2jmobius.Config; import com.l2jmobius.Config;
import com.l2jmobius.commons.database.DatabaseFactory; import com.l2jmobius.commons.database.DatabaseFactory;
@ -545,12 +547,9 @@ public class Siege implements Siegable
for (L2SiegeClan siegeClans : getDefenderClans()) for (L2SiegeClan siegeClans : getDefenderClans())
{ {
final L2Clan clan = ClanTable.getInstance().getClan(siegeClans.getClanId()); final L2Clan clan = ClanTable.getInstance().getClan(siegeClans.getClanId());
for (L2PcInstance member : clan.getOnlineMembers(0)) if (clan != null)
{ {
if (member != null) clan.getOnlineMembers(0).forEach(message::sendTo);
{
member.sendPacket(message);
}
} }
} }
@ -559,12 +558,9 @@ public class Siege implements Siegable
for (L2SiegeClan siegeClans : getAttackerClans()) for (L2SiegeClan siegeClans : getAttackerClans())
{ {
final L2Clan clan = ClanTable.getInstance().getClan(siegeClans.getClanId()); final L2Clan clan = ClanTable.getInstance().getClan(siegeClans.getClanId());
for (L2PcInstance member : clan.getOnlineMembers(0)) if (clan != null)
{ {
if (member != null) clan.getOnlineMembers(0).forEach(message::sendTo);
{
member.sendPacket(message);
}
} }
} }
} }
@ -583,11 +579,6 @@ public class Siege implements Siegable
clan = ClanTable.getInstance().getClan(siegeclan.getClanId()); clan = ClanTable.getInstance().getClan(siegeclan.getClanId());
for (L2PcInstance member : clan.getOnlineMembers(0)) for (L2PcInstance member : clan.getOnlineMembers(0))
{ {
if (member == null)
{
continue;
}
if (clear) if (clear)
{ {
member.setSiegeState((byte) 0); member.setSiegeState((byte) 0);
@ -648,11 +639,6 @@ public class Siege implements Siegable
clan = ClanTable.getInstance().getClan(siegeclan.getClanId()); clan = ClanTable.getInstance().getClan(siegeclan.getClanId());
for (L2PcInstance member : clan.getOnlineMembers(0)) for (L2PcInstance member : clan.getOnlineMembers(0))
{ {
if (member == null)
{
continue;
}
if (clear) if (clear)
{ {
member.setSiegeState((byte) 0); member.setSiegeState((byte) 0);
@ -820,25 +806,14 @@ public class Siege implements Siegable
@Override @Override
public List<L2PcInstance> getAttackersInZone() public List<L2PcInstance> getAttackersInZone()
{ {
final List<L2PcInstance> players = new ArrayList<>(); //@formatter:off
L2Clan clan; return getAttackerClans().stream()
for (L2SiegeClan siegeclan : getAttackerClans()) .map(siegeclan -> ClanTable.getInstance().getClan(siegeclan.getClanId()))
{ .filter(Objects::nonNull)
clan = ClanTable.getInstance().getClan(siegeclan.getClanId()); .flatMap(clan -> clan.getOnlineMembers(0).stream())
for (L2PcInstance player : clan.getOnlineMembers(0)) .filter(L2PcInstance::isInSiege)
{ .collect(Collectors.toList());
if (player == null) //@formatter:on
{
continue;
}
if (player.isInSiege())
{
players.add(player);
}
}
}
return players;
} }
/** /**
@ -854,29 +829,15 @@ public class Siege implements Siegable
*/ */
public List<L2PcInstance> getOwnersInZone() public List<L2PcInstance> getOwnersInZone()
{ {
final List<L2PcInstance> players = new ArrayList<>(); //@formatter:off
L2Clan clan; return getDefenderClans().stream()
for (L2SiegeClan siegeclan : getDefenderClans()) .filter(siegeclan -> siegeclan.getClanId() == _castle.getOwnerId())
{ .map(siegeclan -> ClanTable.getInstance().getClan(siegeclan.getClanId()))
clan = ClanTable.getInstance().getClan(siegeclan.getClanId()); .filter(Objects::nonNull)
if (clan.getId() != getCastle().getOwnerId()) .flatMap(clan -> clan.getOnlineMembers(0).stream())
{ .filter(L2PcInstance::isInSiege)
continue; .collect(Collectors.toList());
} //@formatter:on
for (L2PcInstance player : clan.getOnlineMembers(0))
{
if (player == null)
{
continue;
}
if (player.isInSiege())
{
players.add(player);
}
}
}
return players;
} }
/** /**
@ -884,21 +845,7 @@ public class Siege implements Siegable
*/ */
public List<L2PcInstance> getSpectatorsInZone() public List<L2PcInstance> getSpectatorsInZone()
{ {
final List<L2PcInstance> players = new ArrayList<>(); return getCastle().getZone().getPlayersInside().stream().filter(p -> !p.isInSiege()).collect(Collectors.toList());
for (L2PcInstance player : getCastle().getZone().getPlayersInside())
{
if (player == null)
{
continue;
}
if (!player.isInSiege())
{
players.add(player);
}
}
return players;
} }
/** /**
@ -907,11 +854,7 @@ public class Siege implements Siegable
*/ */
public void killedCT(L2Npc ct) public void killedCT(L2Npc ct)
{ {
_controlTowerCount--; _controlTowerCount = Math.max(_controlTowerCount - 1, 0);
if (_controlTowerCount < 0)
{
_controlTowerCount = 0;
}
} }
/** /**
@ -920,17 +863,7 @@ public class Siege implements Siegable
*/ */
public void killedFlag(L2Npc flag) public void killedFlag(L2Npc flag)
{ {
if (flag == null) getAttackerClans().forEach(siegeClan -> siegeClan.removeFlag(flag));
{
return;
}
for (L2SiegeClan clan : getAttackerClans())
{
if (clan.removeFlag(flag))
{
return;
}
}
} }
/** /**
@ -1537,20 +1470,20 @@ public class Siege implements Siegable
* Spawn control tower. * Spawn control tower.
*/ */
private void spawnControlTower() private void spawnControlTower()
{
for (TowerSpawn ts : SiegeManager.getInstance().getControlTowers(getCastle().getResidenceId()))
{ {
try try
{
for (TowerSpawn ts : SiegeManager.getInstance().getControlTowers(getCastle().getResidenceId()))
{ {
final L2Spawn spawn = new L2Spawn(ts.getId()); final L2Spawn spawn = new L2Spawn(ts.getId());
spawn.setLocation(ts.getLocation()); spawn.setLocation(ts.getLocation());
_controlTowers.add((L2ControlTowerInstance) spawn.doSpawn()); _controlTowers.add((L2ControlTowerInstance) spawn.doSpawn());
} }
}
catch (Exception e) catch (Exception e)
{ {
_log.warning(getClass().getSimpleName() + ": Cannot spawn control tower! " + e); _log.warning(getClass().getSimpleName() + ": Cannot spawn control tower! " + e);
} }
}
_controlTowerCount = _controlTowers.size(); _controlTowerCount = _controlTowers.size();
} }
@ -1558,10 +1491,10 @@ public class Siege implements Siegable
* Spawn flame tower. * Spawn flame tower.
*/ */
private void spawnFlameTower() private void spawnFlameTower()
{
for (TowerSpawn ts : SiegeManager.getInstance().getFlameTowers(getCastle().getResidenceId()))
{ {
try try
{
for (TowerSpawn ts : SiegeManager.getInstance().getFlameTowers(getCastle().getResidenceId()))
{ {
final L2Spawn spawn = new L2Spawn(ts.getId()); final L2Spawn spawn = new L2Spawn(ts.getId());
spawn.setLocation(ts.getLocation()); spawn.setLocation(ts.getLocation());
@ -1570,12 +1503,12 @@ public class Siege implements Siegable
tower.setZoneList(ts.getZoneList()); tower.setZoneList(ts.getZoneList());
_flameTowers.add(tower); _flameTowers.add(tower);
} }
}
catch (Exception e) catch (Exception e)
{ {
_log.warning(getClass().getSimpleName() + ": Cannot spawn flame tower! " + e); _log.warning(getClass().getSimpleName() + ": Cannot spawn flame tower! " + e);
} }
} }
}
/** /**
* Spawn siege guard. * Spawn siege guard.

View File

@ -24,6 +24,7 @@ import java.util.Collection;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Objects;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentSkipListMap; import java.util.concurrent.ConcurrentSkipListMap;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
@ -664,6 +665,7 @@ public class L2Clan implements IIdentifiable, INamable
.filter(member -> member.getObjectId() != exclude) .filter(member -> member.getObjectId() != exclude)
.filter(L2ClanMember::isOnline) .filter(L2ClanMember::isOnline)
.map(L2ClanMember::getPlayerInstance) .map(L2ClanMember::getPlayerInstance)
.filter(Objects::nonNull)
.collect(Collectors.toList()); .collect(Collectors.toList());
//@formatter:on //@formatter:on
} }

View File

@ -24,11 +24,13 @@ import java.util.Calendar;
import java.util.Collections; import java.util.Collections;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Objects;
import java.util.Set; import java.util.Set;
import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.ScheduledFuture; import java.util.concurrent.ScheduledFuture;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
import java.util.stream.Collectors;
import com.l2jmobius.Config; import com.l2jmobius.Config;
import com.l2jmobius.commons.database.DatabaseFactory; import com.l2jmobius.commons.database.DatabaseFactory;
@ -545,12 +547,9 @@ public class Siege implements Siegable
for (L2SiegeClan siegeClans : getDefenderClans()) for (L2SiegeClan siegeClans : getDefenderClans())
{ {
final L2Clan clan = ClanTable.getInstance().getClan(siegeClans.getClanId()); final L2Clan clan = ClanTable.getInstance().getClan(siegeClans.getClanId());
for (L2PcInstance member : clan.getOnlineMembers(0)) if (clan != null)
{ {
if (member != null) clan.getOnlineMembers(0).forEach(message::sendTo);
{
member.sendPacket(message);
}
} }
} }
@ -559,12 +558,9 @@ public class Siege implements Siegable
for (L2SiegeClan siegeClans : getAttackerClans()) for (L2SiegeClan siegeClans : getAttackerClans())
{ {
final L2Clan clan = ClanTable.getInstance().getClan(siegeClans.getClanId()); final L2Clan clan = ClanTable.getInstance().getClan(siegeClans.getClanId());
for (L2PcInstance member : clan.getOnlineMembers(0)) if (clan != null)
{ {
if (member != null) clan.getOnlineMembers(0).forEach(message::sendTo);
{
member.sendPacket(message);
}
} }
} }
} }
@ -583,11 +579,6 @@ public class Siege implements Siegable
clan = ClanTable.getInstance().getClan(siegeclan.getClanId()); clan = ClanTable.getInstance().getClan(siegeclan.getClanId());
for (L2PcInstance member : clan.getOnlineMembers(0)) for (L2PcInstance member : clan.getOnlineMembers(0))
{ {
if (member == null)
{
continue;
}
if (clear) if (clear)
{ {
member.setSiegeState((byte) 0); member.setSiegeState((byte) 0);
@ -648,11 +639,6 @@ public class Siege implements Siegable
clan = ClanTable.getInstance().getClan(siegeclan.getClanId()); clan = ClanTable.getInstance().getClan(siegeclan.getClanId());
for (L2PcInstance member : clan.getOnlineMembers(0)) for (L2PcInstance member : clan.getOnlineMembers(0))
{ {
if (member == null)
{
continue;
}
if (clear) if (clear)
{ {
member.setSiegeState((byte) 0); member.setSiegeState((byte) 0);
@ -820,25 +806,14 @@ public class Siege implements Siegable
@Override @Override
public List<L2PcInstance> getAttackersInZone() public List<L2PcInstance> getAttackersInZone()
{ {
final List<L2PcInstance> players = new ArrayList<>(); //@formatter:off
L2Clan clan; return getAttackerClans().stream()
for (L2SiegeClan siegeclan : getAttackerClans()) .map(siegeclan -> ClanTable.getInstance().getClan(siegeclan.getClanId()))
{ .filter(Objects::nonNull)
clan = ClanTable.getInstance().getClan(siegeclan.getClanId()); .flatMap(clan -> clan.getOnlineMembers(0).stream())
for (L2PcInstance player : clan.getOnlineMembers(0)) .filter(L2PcInstance::isInSiege)
{ .collect(Collectors.toList());
if (player == null) //@formatter:on
{
continue;
}
if (player.isInSiege())
{
players.add(player);
}
}
}
return players;
} }
/** /**
@ -854,29 +829,15 @@ public class Siege implements Siegable
*/ */
public List<L2PcInstance> getOwnersInZone() public List<L2PcInstance> getOwnersInZone()
{ {
final List<L2PcInstance> players = new ArrayList<>(); //@formatter:off
L2Clan clan; return getDefenderClans().stream()
for (L2SiegeClan siegeclan : getDefenderClans()) .filter(siegeclan -> siegeclan.getClanId() == _castle.getOwnerId())
{ .map(siegeclan -> ClanTable.getInstance().getClan(siegeclan.getClanId()))
clan = ClanTable.getInstance().getClan(siegeclan.getClanId()); .filter(Objects::nonNull)
if (clan.getId() != getCastle().getOwnerId()) .flatMap(clan -> clan.getOnlineMembers(0).stream())
{ .filter(L2PcInstance::isInSiege)
continue; .collect(Collectors.toList());
} //@formatter:on
for (L2PcInstance player : clan.getOnlineMembers(0))
{
if (player == null)
{
continue;
}
if (player.isInSiege())
{
players.add(player);
}
}
}
return players;
} }
/** /**
@ -884,21 +845,7 @@ public class Siege implements Siegable
*/ */
public List<L2PcInstance> getSpectatorsInZone() public List<L2PcInstance> getSpectatorsInZone()
{ {
final List<L2PcInstance> players = new ArrayList<>(); return getCastle().getZone().getPlayersInside().stream().filter(p -> !p.isInSiege()).collect(Collectors.toList());
for (L2PcInstance player : getCastle().getZone().getPlayersInside())
{
if (player == null)
{
continue;
}
if (!player.isInSiege())
{
players.add(player);
}
}
return players;
} }
/** /**
@ -907,11 +854,7 @@ public class Siege implements Siegable
*/ */
public void killedCT(L2Npc ct) public void killedCT(L2Npc ct)
{ {
_controlTowerCount--; _controlTowerCount = Math.max(_controlTowerCount - 1, 0);
if (_controlTowerCount < 0)
{
_controlTowerCount = 0;
}
} }
/** /**
@ -920,17 +863,7 @@ public class Siege implements Siegable
*/ */
public void killedFlag(L2Npc flag) public void killedFlag(L2Npc flag)
{ {
if (flag == null) getAttackerClans().forEach(siegeClan -> siegeClan.removeFlag(flag));
{
return;
}
for (L2SiegeClan clan : getAttackerClans())
{
if (clan.removeFlag(flag))
{
return;
}
}
} }
/** /**
@ -1537,20 +1470,20 @@ public class Siege implements Siegable
* Spawn control tower. * Spawn control tower.
*/ */
private void spawnControlTower() private void spawnControlTower()
{
for (TowerSpawn ts : SiegeManager.getInstance().getControlTowers(getCastle().getResidenceId()))
{ {
try try
{
for (TowerSpawn ts : SiegeManager.getInstance().getControlTowers(getCastle().getResidenceId()))
{ {
final L2Spawn spawn = new L2Spawn(ts.getId()); final L2Spawn spawn = new L2Spawn(ts.getId());
spawn.setLocation(ts.getLocation()); spawn.setLocation(ts.getLocation());
_controlTowers.add((L2ControlTowerInstance) spawn.doSpawn()); _controlTowers.add((L2ControlTowerInstance) spawn.doSpawn());
} }
}
catch (Exception e) catch (Exception e)
{ {
_log.warning(getClass().getSimpleName() + ": Cannot spawn control tower! " + e); _log.warning(getClass().getSimpleName() + ": Cannot spawn control tower! " + e);
} }
}
_controlTowerCount = _controlTowers.size(); _controlTowerCount = _controlTowers.size();
} }
@ -1558,10 +1491,10 @@ public class Siege implements Siegable
* Spawn flame tower. * Spawn flame tower.
*/ */
private void spawnFlameTower() private void spawnFlameTower()
{
for (TowerSpawn ts : SiegeManager.getInstance().getFlameTowers(getCastle().getResidenceId()))
{ {
try try
{
for (TowerSpawn ts : SiegeManager.getInstance().getFlameTowers(getCastle().getResidenceId()))
{ {
final L2Spawn spawn = new L2Spawn(ts.getId()); final L2Spawn spawn = new L2Spawn(ts.getId());
spawn.setLocation(ts.getLocation()); spawn.setLocation(ts.getLocation());
@ -1570,12 +1503,12 @@ public class Siege implements Siegable
tower.setZoneList(ts.getZoneList()); tower.setZoneList(ts.getZoneList());
_flameTowers.add(tower); _flameTowers.add(tower);
} }
}
catch (Exception e) catch (Exception e)
{ {
_log.warning(getClass().getSimpleName() + ": Cannot spawn flame tower! " + e); _log.warning(getClass().getSimpleName() + ": Cannot spawn flame tower! " + e);
} }
} }
}
/** /**
* Spawn siege guard. * Spawn siege guard.

View File

@ -24,6 +24,7 @@ import java.util.Collection;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Objects;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentSkipListMap; import java.util.concurrent.ConcurrentSkipListMap;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
@ -664,6 +665,7 @@ public class L2Clan implements IIdentifiable, INamable
.filter(member -> member.getObjectId() != exclude) .filter(member -> member.getObjectId() != exclude)
.filter(L2ClanMember::isOnline) .filter(L2ClanMember::isOnline)
.map(L2ClanMember::getPlayerInstance) .map(L2ClanMember::getPlayerInstance)
.filter(Objects::nonNull)
.collect(Collectors.toList()); .collect(Collectors.toList());
//@formatter:on //@formatter:on
} }

View File

@ -24,11 +24,13 @@ import java.util.Calendar;
import java.util.Collections; import java.util.Collections;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Objects;
import java.util.Set; import java.util.Set;
import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.ScheduledFuture; import java.util.concurrent.ScheduledFuture;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
import java.util.stream.Collectors;
import com.l2jmobius.Config; import com.l2jmobius.Config;
import com.l2jmobius.commons.database.DatabaseFactory; import com.l2jmobius.commons.database.DatabaseFactory;
@ -545,12 +547,9 @@ public class Siege implements Siegable
for (L2SiegeClan siegeClans : getDefenderClans()) for (L2SiegeClan siegeClans : getDefenderClans())
{ {
final L2Clan clan = ClanTable.getInstance().getClan(siegeClans.getClanId()); final L2Clan clan = ClanTable.getInstance().getClan(siegeClans.getClanId());
for (L2PcInstance member : clan.getOnlineMembers(0)) if (clan != null)
{ {
if (member != null) clan.getOnlineMembers(0).forEach(message::sendTo);
{
member.sendPacket(message);
}
} }
} }
@ -559,12 +558,9 @@ public class Siege implements Siegable
for (L2SiegeClan siegeClans : getAttackerClans()) for (L2SiegeClan siegeClans : getAttackerClans())
{ {
final L2Clan clan = ClanTable.getInstance().getClan(siegeClans.getClanId()); final L2Clan clan = ClanTable.getInstance().getClan(siegeClans.getClanId());
for (L2PcInstance member : clan.getOnlineMembers(0)) if (clan != null)
{ {
if (member != null) clan.getOnlineMembers(0).forEach(message::sendTo);
{
member.sendPacket(message);
}
} }
} }
} }
@ -583,11 +579,6 @@ public class Siege implements Siegable
clan = ClanTable.getInstance().getClan(siegeclan.getClanId()); clan = ClanTable.getInstance().getClan(siegeclan.getClanId());
for (L2PcInstance member : clan.getOnlineMembers(0)) for (L2PcInstance member : clan.getOnlineMembers(0))
{ {
if (member == null)
{
continue;
}
if (clear) if (clear)
{ {
member.setSiegeState((byte) 0); member.setSiegeState((byte) 0);
@ -648,11 +639,6 @@ public class Siege implements Siegable
clan = ClanTable.getInstance().getClan(siegeclan.getClanId()); clan = ClanTable.getInstance().getClan(siegeclan.getClanId());
for (L2PcInstance member : clan.getOnlineMembers(0)) for (L2PcInstance member : clan.getOnlineMembers(0))
{ {
if (member == null)
{
continue;
}
if (clear) if (clear)
{ {
member.setSiegeState((byte) 0); member.setSiegeState((byte) 0);
@ -820,25 +806,14 @@ public class Siege implements Siegable
@Override @Override
public List<L2PcInstance> getAttackersInZone() public List<L2PcInstance> getAttackersInZone()
{ {
final List<L2PcInstance> players = new ArrayList<>(); //@formatter:off
L2Clan clan; return getAttackerClans().stream()
for (L2SiegeClan siegeclan : getAttackerClans()) .map(siegeclan -> ClanTable.getInstance().getClan(siegeclan.getClanId()))
{ .filter(Objects::nonNull)
clan = ClanTable.getInstance().getClan(siegeclan.getClanId()); .flatMap(clan -> clan.getOnlineMembers(0).stream())
for (L2PcInstance player : clan.getOnlineMembers(0)) .filter(L2PcInstance::isInSiege)
{ .collect(Collectors.toList());
if (player == null) //@formatter:on
{
continue;
}
if (player.isInSiege())
{
players.add(player);
}
}
}
return players;
} }
/** /**
@ -854,29 +829,15 @@ public class Siege implements Siegable
*/ */
public List<L2PcInstance> getOwnersInZone() public List<L2PcInstance> getOwnersInZone()
{ {
final List<L2PcInstance> players = new ArrayList<>(); //@formatter:off
L2Clan clan; return getDefenderClans().stream()
for (L2SiegeClan siegeclan : getDefenderClans()) .filter(siegeclan -> siegeclan.getClanId() == _castle.getOwnerId())
{ .map(siegeclan -> ClanTable.getInstance().getClan(siegeclan.getClanId()))
clan = ClanTable.getInstance().getClan(siegeclan.getClanId()); .filter(Objects::nonNull)
if (clan.getId() != getCastle().getOwnerId()) .flatMap(clan -> clan.getOnlineMembers(0).stream())
{ .filter(L2PcInstance::isInSiege)
continue; .collect(Collectors.toList());
} //@formatter:on
for (L2PcInstance player : clan.getOnlineMembers(0))
{
if (player == null)
{
continue;
}
if (player.isInSiege())
{
players.add(player);
}
}
}
return players;
} }
/** /**
@ -884,21 +845,7 @@ public class Siege implements Siegable
*/ */
public List<L2PcInstance> getSpectatorsInZone() public List<L2PcInstance> getSpectatorsInZone()
{ {
final List<L2PcInstance> players = new ArrayList<>(); return getCastle().getZone().getPlayersInside().stream().filter(p -> !p.isInSiege()).collect(Collectors.toList());
for (L2PcInstance player : getCastle().getZone().getPlayersInside())
{
if (player == null)
{
continue;
}
if (!player.isInSiege())
{
players.add(player);
}
}
return players;
} }
/** /**
@ -907,11 +854,7 @@ public class Siege implements Siegable
*/ */
public void killedCT(L2Npc ct) public void killedCT(L2Npc ct)
{ {
_controlTowerCount--; _controlTowerCount = Math.max(_controlTowerCount - 1, 0);
if (_controlTowerCount < 0)
{
_controlTowerCount = 0;
}
} }
/** /**
@ -920,17 +863,7 @@ public class Siege implements Siegable
*/ */
public void killedFlag(L2Npc flag) public void killedFlag(L2Npc flag)
{ {
if (flag == null) getAttackerClans().forEach(siegeClan -> siegeClan.removeFlag(flag));
{
return;
}
for (L2SiegeClan clan : getAttackerClans())
{
if (clan.removeFlag(flag))
{
return;
}
}
} }
/** /**
@ -1537,20 +1470,20 @@ public class Siege implements Siegable
* Spawn control tower. * Spawn control tower.
*/ */
private void spawnControlTower() private void spawnControlTower()
{
for (TowerSpawn ts : SiegeManager.getInstance().getControlTowers(getCastle().getResidenceId()))
{ {
try try
{
for (TowerSpawn ts : SiegeManager.getInstance().getControlTowers(getCastle().getResidenceId()))
{ {
final L2Spawn spawn = new L2Spawn(ts.getId()); final L2Spawn spawn = new L2Spawn(ts.getId());
spawn.setLocation(ts.getLocation()); spawn.setLocation(ts.getLocation());
_controlTowers.add((L2ControlTowerInstance) spawn.doSpawn()); _controlTowers.add((L2ControlTowerInstance) spawn.doSpawn());
} }
}
catch (Exception e) catch (Exception e)
{ {
_log.warning(getClass().getSimpleName() + ": Cannot spawn control tower! " + e); _log.warning(getClass().getSimpleName() + ": Cannot spawn control tower! " + e);
} }
}
_controlTowerCount = _controlTowers.size(); _controlTowerCount = _controlTowers.size();
} }
@ -1558,10 +1491,10 @@ public class Siege implements Siegable
* Spawn flame tower. * Spawn flame tower.
*/ */
private void spawnFlameTower() private void spawnFlameTower()
{
for (TowerSpawn ts : SiegeManager.getInstance().getFlameTowers(getCastle().getResidenceId()))
{ {
try try
{
for (TowerSpawn ts : SiegeManager.getInstance().getFlameTowers(getCastle().getResidenceId()))
{ {
final L2Spawn spawn = new L2Spawn(ts.getId()); final L2Spawn spawn = new L2Spawn(ts.getId());
spawn.setLocation(ts.getLocation()); spawn.setLocation(ts.getLocation());
@ -1570,12 +1503,12 @@ public class Siege implements Siegable
tower.setZoneList(ts.getZoneList()); tower.setZoneList(ts.getZoneList());
_flameTowers.add(tower); _flameTowers.add(tower);
} }
}
catch (Exception e) catch (Exception e)
{ {
_log.warning(getClass().getSimpleName() + ": Cannot spawn flame tower! " + e); _log.warning(getClass().getSimpleName() + ": Cannot spawn flame tower! " + e);
} }
} }
}
/** /**
* Spawn siege guard. * Spawn siege guard.

View File

@ -24,6 +24,7 @@ import java.util.Collection;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Objects;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentSkipListMap; import java.util.concurrent.ConcurrentSkipListMap;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
@ -664,6 +665,7 @@ public class L2Clan implements IIdentifiable, INamable
.filter(member -> member.getObjectId() != exclude) .filter(member -> member.getObjectId() != exclude)
.filter(L2ClanMember::isOnline) .filter(L2ClanMember::isOnline)
.map(L2ClanMember::getPlayerInstance) .map(L2ClanMember::getPlayerInstance)
.filter(Objects::nonNull)
.collect(Collectors.toList()); .collect(Collectors.toList());
//@formatter:on //@formatter:on
} }

View File

@ -24,11 +24,13 @@ import java.util.Calendar;
import java.util.Collections; import java.util.Collections;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Objects;
import java.util.Set; import java.util.Set;
import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.ScheduledFuture; import java.util.concurrent.ScheduledFuture;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
import java.util.stream.Collectors;
import com.l2jmobius.Config; import com.l2jmobius.Config;
import com.l2jmobius.commons.database.DatabaseFactory; import com.l2jmobius.commons.database.DatabaseFactory;
@ -545,12 +547,9 @@ public class Siege implements Siegable
for (L2SiegeClan siegeClans : getDefenderClans()) for (L2SiegeClan siegeClans : getDefenderClans())
{ {
final L2Clan clan = ClanTable.getInstance().getClan(siegeClans.getClanId()); final L2Clan clan = ClanTable.getInstance().getClan(siegeClans.getClanId());
for (L2PcInstance member : clan.getOnlineMembers(0)) if (clan != null)
{ {
if (member != null) clan.getOnlineMembers(0).forEach(message::sendTo);
{
member.sendPacket(message);
}
} }
} }
@ -559,12 +558,9 @@ public class Siege implements Siegable
for (L2SiegeClan siegeClans : getAttackerClans()) for (L2SiegeClan siegeClans : getAttackerClans())
{ {
final L2Clan clan = ClanTable.getInstance().getClan(siegeClans.getClanId()); final L2Clan clan = ClanTable.getInstance().getClan(siegeClans.getClanId());
for (L2PcInstance member : clan.getOnlineMembers(0)) if (clan != null)
{ {
if (member != null) clan.getOnlineMembers(0).forEach(message::sendTo);
{
member.sendPacket(message);
}
} }
} }
} }
@ -583,11 +579,6 @@ public class Siege implements Siegable
clan = ClanTable.getInstance().getClan(siegeclan.getClanId()); clan = ClanTable.getInstance().getClan(siegeclan.getClanId());
for (L2PcInstance member : clan.getOnlineMembers(0)) for (L2PcInstance member : clan.getOnlineMembers(0))
{ {
if (member == null)
{
continue;
}
if (clear) if (clear)
{ {
member.setSiegeState((byte) 0); member.setSiegeState((byte) 0);
@ -648,11 +639,6 @@ public class Siege implements Siegable
clan = ClanTable.getInstance().getClan(siegeclan.getClanId()); clan = ClanTable.getInstance().getClan(siegeclan.getClanId());
for (L2PcInstance member : clan.getOnlineMembers(0)) for (L2PcInstance member : clan.getOnlineMembers(0))
{ {
if (member == null)
{
continue;
}
if (clear) if (clear)
{ {
member.setSiegeState((byte) 0); member.setSiegeState((byte) 0);
@ -820,25 +806,14 @@ public class Siege implements Siegable
@Override @Override
public List<L2PcInstance> getAttackersInZone() public List<L2PcInstance> getAttackersInZone()
{ {
final List<L2PcInstance> players = new ArrayList<>(); //@formatter:off
L2Clan clan; return getAttackerClans().stream()
for (L2SiegeClan siegeclan : getAttackerClans()) .map(siegeclan -> ClanTable.getInstance().getClan(siegeclan.getClanId()))
{ .filter(Objects::nonNull)
clan = ClanTable.getInstance().getClan(siegeclan.getClanId()); .flatMap(clan -> clan.getOnlineMembers(0).stream())
for (L2PcInstance player : clan.getOnlineMembers(0)) .filter(L2PcInstance::isInSiege)
{ .collect(Collectors.toList());
if (player == null) //@formatter:on
{
continue;
}
if (player.isInSiege())
{
players.add(player);
}
}
}
return players;
} }
/** /**
@ -854,29 +829,15 @@ public class Siege implements Siegable
*/ */
public List<L2PcInstance> getOwnersInZone() public List<L2PcInstance> getOwnersInZone()
{ {
final List<L2PcInstance> players = new ArrayList<>(); //@formatter:off
L2Clan clan; return getDefenderClans().stream()
for (L2SiegeClan siegeclan : getDefenderClans()) .filter(siegeclan -> siegeclan.getClanId() == _castle.getOwnerId())
{ .map(siegeclan -> ClanTable.getInstance().getClan(siegeclan.getClanId()))
clan = ClanTable.getInstance().getClan(siegeclan.getClanId()); .filter(Objects::nonNull)
if (clan.getId() != getCastle().getOwnerId()) .flatMap(clan -> clan.getOnlineMembers(0).stream())
{ .filter(L2PcInstance::isInSiege)
continue; .collect(Collectors.toList());
} //@formatter:on
for (L2PcInstance player : clan.getOnlineMembers(0))
{
if (player == null)
{
continue;
}
if (player.isInSiege())
{
players.add(player);
}
}
}
return players;
} }
/** /**
@ -884,21 +845,7 @@ public class Siege implements Siegable
*/ */
public List<L2PcInstance> getSpectatorsInZone() public List<L2PcInstance> getSpectatorsInZone()
{ {
final List<L2PcInstance> players = new ArrayList<>(); return getCastle().getZone().getPlayersInside().stream().filter(p -> !p.isInSiege()).collect(Collectors.toList());
for (L2PcInstance player : getCastle().getZone().getPlayersInside())
{
if (player == null)
{
continue;
}
if (!player.isInSiege())
{
players.add(player);
}
}
return players;
} }
/** /**
@ -907,11 +854,7 @@ public class Siege implements Siegable
*/ */
public void killedCT(L2Npc ct) public void killedCT(L2Npc ct)
{ {
_controlTowerCount--; _controlTowerCount = Math.max(_controlTowerCount - 1, 0);
if (_controlTowerCount < 0)
{
_controlTowerCount = 0;
}
} }
/** /**
@ -920,17 +863,7 @@ public class Siege implements Siegable
*/ */
public void killedFlag(L2Npc flag) public void killedFlag(L2Npc flag)
{ {
if (flag == null) getAttackerClans().forEach(siegeClan -> siegeClan.removeFlag(flag));
{
return;
}
for (L2SiegeClan clan : getAttackerClans())
{
if (clan.removeFlag(flag))
{
return;
}
}
} }
/** /**
@ -1537,20 +1470,20 @@ public class Siege implements Siegable
* Spawn control tower. * Spawn control tower.
*/ */
private void spawnControlTower() private void spawnControlTower()
{
for (TowerSpawn ts : SiegeManager.getInstance().getControlTowers(getCastle().getResidenceId()))
{ {
try try
{
for (TowerSpawn ts : SiegeManager.getInstance().getControlTowers(getCastle().getResidenceId()))
{ {
final L2Spawn spawn = new L2Spawn(ts.getId()); final L2Spawn spawn = new L2Spawn(ts.getId());
spawn.setLocation(ts.getLocation()); spawn.setLocation(ts.getLocation());
_controlTowers.add((L2ControlTowerInstance) spawn.doSpawn()); _controlTowers.add((L2ControlTowerInstance) spawn.doSpawn());
} }
}
catch (Exception e) catch (Exception e)
{ {
_log.warning(getClass().getSimpleName() + ": Cannot spawn control tower! " + e); _log.warning(getClass().getSimpleName() + ": Cannot spawn control tower! " + e);
} }
}
_controlTowerCount = _controlTowers.size(); _controlTowerCount = _controlTowers.size();
} }
@ -1558,10 +1491,10 @@ public class Siege implements Siegable
* Spawn flame tower. * Spawn flame tower.
*/ */
private void spawnFlameTower() private void spawnFlameTower()
{
for (TowerSpawn ts : SiegeManager.getInstance().getFlameTowers(getCastle().getResidenceId()))
{ {
try try
{
for (TowerSpawn ts : SiegeManager.getInstance().getFlameTowers(getCastle().getResidenceId()))
{ {
final L2Spawn spawn = new L2Spawn(ts.getId()); final L2Spawn spawn = new L2Spawn(ts.getId());
spawn.setLocation(ts.getLocation()); spawn.setLocation(ts.getLocation());
@ -1570,12 +1503,12 @@ public class Siege implements Siegable
tower.setZoneList(ts.getZoneList()); tower.setZoneList(ts.getZoneList());
_flameTowers.add(tower); _flameTowers.add(tower);
} }
}
catch (Exception e) catch (Exception e)
{ {
_log.warning(getClass().getSimpleName() + ": Cannot spawn flame tower! " + e); _log.warning(getClass().getSimpleName() + ": Cannot spawn flame tower! " + e);
} }
} }
}
/** /**
* Spawn siege guard. * Spawn siege guard.

View File

@ -24,6 +24,7 @@ import java.util.Collection;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Objects;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentSkipListMap; import java.util.concurrent.ConcurrentSkipListMap;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
@ -664,6 +665,7 @@ public class L2Clan implements IIdentifiable, INamable
.filter(member -> member.getObjectId() != exclude) .filter(member -> member.getObjectId() != exclude)
.filter(L2ClanMember::isOnline) .filter(L2ClanMember::isOnline)
.map(L2ClanMember::getPlayerInstance) .map(L2ClanMember::getPlayerInstance)
.filter(Objects::nonNull)
.collect(Collectors.toList()); .collect(Collectors.toList());
//@formatter:on //@formatter:on
} }

View File

@ -24,11 +24,13 @@ import java.util.Calendar;
import java.util.Collections; import java.util.Collections;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Objects;
import java.util.Set; import java.util.Set;
import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.ScheduledFuture; import java.util.concurrent.ScheduledFuture;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
import java.util.stream.Collectors;
import com.l2jmobius.Config; import com.l2jmobius.Config;
import com.l2jmobius.commons.database.DatabaseFactory; import com.l2jmobius.commons.database.DatabaseFactory;
@ -545,12 +547,9 @@ public class Siege implements Siegable
for (L2SiegeClan siegeClans : getDefenderClans()) for (L2SiegeClan siegeClans : getDefenderClans())
{ {
final L2Clan clan = ClanTable.getInstance().getClan(siegeClans.getClanId()); final L2Clan clan = ClanTable.getInstance().getClan(siegeClans.getClanId());
for (L2PcInstance member : clan.getOnlineMembers(0)) if (clan != null)
{ {
if (member != null) clan.getOnlineMembers(0).forEach(message::sendTo);
{
member.sendPacket(message);
}
} }
} }
@ -559,12 +558,9 @@ public class Siege implements Siegable
for (L2SiegeClan siegeClans : getAttackerClans()) for (L2SiegeClan siegeClans : getAttackerClans())
{ {
final L2Clan clan = ClanTable.getInstance().getClan(siegeClans.getClanId()); final L2Clan clan = ClanTable.getInstance().getClan(siegeClans.getClanId());
for (L2PcInstance member : clan.getOnlineMembers(0)) if (clan != null)
{ {
if (member != null) clan.getOnlineMembers(0).forEach(message::sendTo);
{
member.sendPacket(message);
}
} }
} }
} }
@ -583,11 +579,6 @@ public class Siege implements Siegable
clan = ClanTable.getInstance().getClan(siegeclan.getClanId()); clan = ClanTable.getInstance().getClan(siegeclan.getClanId());
for (L2PcInstance member : clan.getOnlineMembers(0)) for (L2PcInstance member : clan.getOnlineMembers(0))
{ {
if (member == null)
{
continue;
}
if (clear) if (clear)
{ {
member.setSiegeState((byte) 0); member.setSiegeState((byte) 0);
@ -648,11 +639,6 @@ public class Siege implements Siegable
clan = ClanTable.getInstance().getClan(siegeclan.getClanId()); clan = ClanTable.getInstance().getClan(siegeclan.getClanId());
for (L2PcInstance member : clan.getOnlineMembers(0)) for (L2PcInstance member : clan.getOnlineMembers(0))
{ {
if (member == null)
{
continue;
}
if (clear) if (clear)
{ {
member.setSiegeState((byte) 0); member.setSiegeState((byte) 0);
@ -820,25 +806,14 @@ public class Siege implements Siegable
@Override @Override
public List<L2PcInstance> getAttackersInZone() public List<L2PcInstance> getAttackersInZone()
{ {
final List<L2PcInstance> players = new ArrayList<>(); //@formatter:off
L2Clan clan; return getAttackerClans().stream()
for (L2SiegeClan siegeclan : getAttackerClans()) .map(siegeclan -> ClanTable.getInstance().getClan(siegeclan.getClanId()))
{ .filter(Objects::nonNull)
clan = ClanTable.getInstance().getClan(siegeclan.getClanId()); .flatMap(clan -> clan.getOnlineMembers(0).stream())
for (L2PcInstance player : clan.getOnlineMembers(0)) .filter(L2PcInstance::isInSiege)
{ .collect(Collectors.toList());
if (player == null) //@formatter:on
{
continue;
}
if (player.isInSiege())
{
players.add(player);
}
}
}
return players;
} }
/** /**
@ -854,29 +829,15 @@ public class Siege implements Siegable
*/ */
public List<L2PcInstance> getOwnersInZone() public List<L2PcInstance> getOwnersInZone()
{ {
final List<L2PcInstance> players = new ArrayList<>(); //@formatter:off
L2Clan clan; return getDefenderClans().stream()
for (L2SiegeClan siegeclan : getDefenderClans()) .filter(siegeclan -> siegeclan.getClanId() == _castle.getOwnerId())
{ .map(siegeclan -> ClanTable.getInstance().getClan(siegeclan.getClanId()))
clan = ClanTable.getInstance().getClan(siegeclan.getClanId()); .filter(Objects::nonNull)
if (clan.getId() != getCastle().getOwnerId()) .flatMap(clan -> clan.getOnlineMembers(0).stream())
{ .filter(L2PcInstance::isInSiege)
continue; .collect(Collectors.toList());
} //@formatter:on
for (L2PcInstance player : clan.getOnlineMembers(0))
{
if (player == null)
{
continue;
}
if (player.isInSiege())
{
players.add(player);
}
}
}
return players;
} }
/** /**
@ -884,21 +845,7 @@ public class Siege implements Siegable
*/ */
public List<L2PcInstance> getSpectatorsInZone() public List<L2PcInstance> getSpectatorsInZone()
{ {
final List<L2PcInstance> players = new ArrayList<>(); return getCastle().getZone().getPlayersInside().stream().filter(p -> !p.isInSiege()).collect(Collectors.toList());
for (L2PcInstance player : getCastle().getZone().getPlayersInside())
{
if (player == null)
{
continue;
}
if (!player.isInSiege())
{
players.add(player);
}
}
return players;
} }
/** /**
@ -907,11 +854,7 @@ public class Siege implements Siegable
*/ */
public void killedCT(L2Npc ct) public void killedCT(L2Npc ct)
{ {
_controlTowerCount--; _controlTowerCount = Math.max(_controlTowerCount - 1, 0);
if (_controlTowerCount < 0)
{
_controlTowerCount = 0;
}
} }
/** /**
@ -920,17 +863,7 @@ public class Siege implements Siegable
*/ */
public void killedFlag(L2Npc flag) public void killedFlag(L2Npc flag)
{ {
if (flag == null) getAttackerClans().forEach(siegeClan -> siegeClan.removeFlag(flag));
{
return;
}
for (L2SiegeClan clan : getAttackerClans())
{
if (clan.removeFlag(flag))
{
return;
}
}
} }
/** /**
@ -1537,20 +1470,20 @@ public class Siege implements Siegable
* Spawn control tower. * Spawn control tower.
*/ */
private void spawnControlTower() private void spawnControlTower()
{
for (TowerSpawn ts : SiegeManager.getInstance().getControlTowers(getCastle().getResidenceId()))
{ {
try try
{
for (TowerSpawn ts : SiegeManager.getInstance().getControlTowers(getCastle().getResidenceId()))
{ {
final L2Spawn spawn = new L2Spawn(ts.getId()); final L2Spawn spawn = new L2Spawn(ts.getId());
spawn.setLocation(ts.getLocation()); spawn.setLocation(ts.getLocation());
_controlTowers.add((L2ControlTowerInstance) spawn.doSpawn()); _controlTowers.add((L2ControlTowerInstance) spawn.doSpawn());
} }
}
catch (Exception e) catch (Exception e)
{ {
_log.warning(getClass().getSimpleName() + ": Cannot spawn control tower! " + e); _log.warning(getClass().getSimpleName() + ": Cannot spawn control tower! " + e);
} }
}
_controlTowerCount = _controlTowers.size(); _controlTowerCount = _controlTowers.size();
} }
@ -1558,10 +1491,10 @@ public class Siege implements Siegable
* Spawn flame tower. * Spawn flame tower.
*/ */
private void spawnFlameTower() private void spawnFlameTower()
{
for (TowerSpawn ts : SiegeManager.getInstance().getFlameTowers(getCastle().getResidenceId()))
{ {
try try
{
for (TowerSpawn ts : SiegeManager.getInstance().getFlameTowers(getCastle().getResidenceId()))
{ {
final L2Spawn spawn = new L2Spawn(ts.getId()); final L2Spawn spawn = new L2Spawn(ts.getId());
spawn.setLocation(ts.getLocation()); spawn.setLocation(ts.getLocation());
@ -1570,12 +1503,12 @@ public class Siege implements Siegable
tower.setZoneList(ts.getZoneList()); tower.setZoneList(ts.getZoneList());
_flameTowers.add(tower); _flameTowers.add(tower);
} }
}
catch (Exception e) catch (Exception e)
{ {
_log.warning(getClass().getSimpleName() + ": Cannot spawn flame tower! " + e); _log.warning(getClass().getSimpleName() + ": Cannot spawn flame tower! " + e);
} }
} }
}
/** /**
* Spawn siege guard. * Spawn siege guard.