diff --git a/SpongeAPI b/SpongeAPI index 29ae211255e..0e0e6ee133f 160000 --- a/SpongeAPI +++ b/SpongeAPI @@ -1 +1 @@ -Subproject commit 29ae211255e73dfe02122f72f266c655a4a78eb5 +Subproject commit 0e0e6ee133f163b1794ab5520700474875d10372 diff --git a/src/main/java/org/spongepowered/common/data/holder/SpongeDataHolder.java b/src/main/java/org/spongepowered/common/data/holder/SpongeDataHolder.java index 41606b06318..17f1557765c 100644 --- a/src/main/java/org/spongepowered/common/data/holder/SpongeDataHolder.java +++ b/src/main/java/org/spongepowered/common/data/holder/SpongeDataHolder.java @@ -113,7 +113,8 @@ default > Optional getValue(final Key key) { default Set> getKeys() { return this.impl$delegateDataHolder().stream() .flatMap(dh -> this.impl$getAllProviders(dh).stream() - .filter(provider -> provider.get(dh).isPresent()).map(DataProvider::key)) + .map(DataProvider::key)) + .filter(this::supports) .collect(ImmutableSet.toImmutableSet()); } diff --git a/src/main/java/org/spongepowered/common/item/SpongeItemStackSnapshot.java b/src/main/java/org/spongepowered/common/item/SpongeItemStackSnapshot.java index 989ec9f0261..5c387a6579e 100644 --- a/src/main/java/org/spongepowered/common/item/SpongeItemStackSnapshot.java +++ b/src/main/java/org/spongepowered/common/item/SpongeItemStackSnapshot.java @@ -73,8 +73,8 @@ public class SpongeItemStackSnapshot implements ItemStackSnapshot { private final int damageValue; private final ImmutableList manipulators; private final transient ItemStack privateStack; // only for internal use since the processors have a huge say - private final ImmutableSet> keys; - private final ImmutableSet> values; + private final Set> keys; + private final Set> values; private final DataComponentPatch components; private @Nullable UUID creatorUniqueId; @@ -95,17 +95,13 @@ public SpongeItemStackSnapshot(final ItemStack itemStack) { this.itemType = itemStack.type(); this.quantity = itemStack.quantity(); final ImmutableList.Builder builder = ImmutableList.builder(); - final ImmutableSet.Builder> keyBuilder = ImmutableSet.builder(); - final ImmutableSet.Builder> valueBuilder = ImmutableSet.builder(); final DataManipulator.Mutable customData = ((SpongeDataHolderBridge) itemStack).bridge$getManipulator(); builder.add(customData.asImmutable()); - keyBuilder.addAll(customData.getKeys()); - valueBuilder.addAll(customData.getValues()); this.damageValue = ItemStackUtil.toNative(itemStack).getDamageValue(); this.manipulators = builder.build(); this.privateStack = itemStack.copy(); - this.keys = keyBuilder.build(); - this.values = valueBuilder.build(); + this.keys = itemStack.getKeys(); + this.values = itemStack.getValues(); this.components = ItemStackUtil.toNative(this.privateStack).getComponentsPatch(); }