Simplified how complete collections are checked.

This commit is contained in:
MobiusDevelopment
2021-09-09 21:58:29 +00:00
parent 078071e7bf
commit 70599aa1ec
4 changed files with 14 additions and 26 deletions

View File

@@ -14619,13 +14619,12 @@ public class PlayerInstance extends Playable
private void restoreCollectionBonuses() private void restoreCollectionBonuses()
{ {
getCollections().stream().map(PlayerCollectionData::getCollectionId).collect(Collectors.toSet()).forEach(uniqueCollection -> getCollections().stream().map(PlayerCollectionData::getCollectionId).collect(Collectors.toSet()).forEach(collectionId ->
{ {
final List<PlayerCollectionData> currentProgress = getCollections().stream().filter(it -> it.getCollectionId() == uniqueCollection).collect(Collectors.toList()); final CollectionDataHolder collection = CollectionData.getInstance().getCollection(collectionId);
final CollectionDataHolder template = CollectionData.getInstance().getCollection(uniqueCollection); if (getCollections().stream().filter(it -> it.getCollectionId() == collectionId).count() == collection.getItems().size())
if (currentProgress.size() == template.getItems().size())
{ {
final Options options = OptionData.getInstance().getOptions(template.getOptionId()); final Options options = OptionData.getInstance().getOptions(collection.getOptionId());
if (options != null) if (options != null)
{ {
options.apply(this); options.apply(this);

View File

@@ -16,8 +16,6 @@
*/ */
package org.l2jmobius.gameserver.network.clientpackets.collection; package org.l2jmobius.gameserver.network.clientpackets.collection;
import java.util.stream.Collectors;
import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.commons.network.PacketReader;
import org.l2jmobius.gameserver.data.xml.CollectionData; import org.l2jmobius.gameserver.data.xml.CollectionData;
import org.l2jmobius.gameserver.data.xml.OptionData; import org.l2jmobius.gameserver.data.xml.OptionData;
@@ -94,14 +92,11 @@ public class RequestCollectionRegister implements IClientIncomingPacket
player.getCollections().add(new PlayerCollectionData(_collectionId, item.getId(), _index)); player.getCollections().add(new PlayerCollectionData(_collectionId, item.getId(), _index));
if (collection.getItems().size() == player.getCollections().stream().filter(it -> it.getCollectionId() == _collectionId).count()) if (player.getCollections().stream().filter(it -> it.getCollectionId() == _collectionId).count() == collection.getItems().size())
{ {
player.sendPacket(new ExCollectionComplete(_collectionId)); player.sendPacket(new ExCollectionComplete(_collectionId));
}
// Apply collection option if all requirements are met.
// Apply collection option if all requirements are met.
if (player.getCollections().stream().filter(it -> it.getCollectionId() == _collectionId).collect(Collectors.toList()).size() == collection.getItems().size())
{
final Options options = OptionData.getInstance().getOptions(collection.getOptionId()); final Options options = OptionData.getInstance().getOptions(collection.getOptionId());
if (options != null) if (options != null)
{ {

View File

@@ -14880,13 +14880,12 @@ public class PlayerInstance extends Playable
private void restoreCollectionBonuses() private void restoreCollectionBonuses()
{ {
getCollections().stream().map(PlayerCollectionData::getCollectionId).collect(Collectors.toSet()).forEach(uniqueCollection -> getCollections().stream().map(PlayerCollectionData::getCollectionId).collect(Collectors.toSet()).forEach(collectionId ->
{ {
final List<PlayerCollectionData> currentProgress = getCollections().stream().filter(it -> it.getCollectionId() == uniqueCollection).collect(Collectors.toList()); final CollectionDataHolder collection = CollectionData.getInstance().getCollection(collectionId);
final CollectionDataHolder template = CollectionData.getInstance().getCollection(uniqueCollection); if (getCollections().stream().filter(it -> it.getCollectionId() == collectionId).count() == collection.getItems().size())
if (currentProgress.size() == template.getItems().size())
{ {
final Options options = OptionData.getInstance().getOptions(template.getOptionId()); final Options options = OptionData.getInstance().getOptions(collection.getOptionId());
if (options != null) if (options != null)
{ {
options.apply(this); options.apply(this);

View File

@@ -16,8 +16,6 @@
*/ */
package org.l2jmobius.gameserver.network.clientpackets.collection; package org.l2jmobius.gameserver.network.clientpackets.collection;
import java.util.stream.Collectors;
import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.commons.network.PacketReader;
import org.l2jmobius.gameserver.data.xml.CollectionData; import org.l2jmobius.gameserver.data.xml.CollectionData;
import org.l2jmobius.gameserver.data.xml.OptionData; import org.l2jmobius.gameserver.data.xml.OptionData;
@@ -94,14 +92,11 @@ public class RequestCollectionRegister implements IClientIncomingPacket
player.getCollections().add(new PlayerCollectionData(_collectionId, item.getId(), _index)); player.getCollections().add(new PlayerCollectionData(_collectionId, item.getId(), _index));
if (collection.getItems().size() == player.getCollections().stream().filter(it -> it.getCollectionId() == _collectionId).count()) if (player.getCollections().stream().filter(it -> it.getCollectionId() == _collectionId).count() == collection.getItems().size())
{ {
player.sendPacket(new ExCollectionComplete(_collectionId)); player.sendPacket(new ExCollectionComplete(_collectionId));
}
// Apply collection option if all requirements are met.
// Apply collection option if all requirements are met.
if (player.getCollections().stream().filter(it -> it.getCollectionId() == _collectionId).collect(Collectors.toList()).size() == collection.getItems().size())
{
final Options options = OptionData.getInstance().getOptions(collection.getOptionId()); final Options options = OptionData.getInstance().getOptions(collection.getOptionId());
if (options != null) if (options != null)
{ {