public static SimpleNpcHolder[] getAllNpcInfoFromReplay(Set<Integer> npcIDs, ReplayHolder... replays)
{
if (replays == null)
{
System.err.println(LOGGER_NAME + "No replay presented");
return null;
}
SimpleNpcHolder[] npcHolders = new SimpleNpcHolder[0];
for (ReplayHolder replay : replays)
{
for (ServerPacketClass packet : replay.getAllReadablePackets())
{
final SimpleNpcHolder npcHolder = getHolderFromPacket(npcIDs, packet);
if (npcHolder == null)
{
continue;
}
npcHolders = ArrayUtils.add(npcHolders, npcHolder);
}
}
return npcHolders;
}
private static SimpleNpcHolder getHolderFromPacket(Set<Integer> npcIDs, ServerPacketClass packet)
{
final SimpleNpcHolder holder;
if (packet instanceof final NpcInfoPacket npcObjectPacket)
{
holder = npcObjectPacket.getHolder().getSimpleNpcHolder();
}
else if (packet instanceof final ServerObjectPacket serverObjectPacket)
{
holder = serverObjectPacket.getHolder().getSimpleNpcHolder();
}
else
{
holder = null;
}
if (holder != null && !npcIDs.isEmpty() && npcIDs.contains(holder.getNpcId()))
{
return null;
}
return holder;
}