diff --git a/src/main/java/org/spongepowered/common/item/inventory/adapter/impl/MinecraftInventoryAdapter.java b/src/main/java/org/spongepowered/common/item/inventory/adapter/impl/MinecraftInventoryAdapter.java index 32eb5040f5c..fd8c0eef5a0 100644 --- a/src/main/java/org/spongepowered/common/item/inventory/adapter/impl/MinecraftInventoryAdapter.java +++ b/src/main/java/org/spongepowered/common/item/inventory/adapter/impl/MinecraftInventoryAdapter.java @@ -36,12 +36,14 @@ import org.spongepowered.api.text.translation.Translation; import org.spongepowered.common.item.inventory.InventoryIterator; import org.spongepowered.common.item.inventory.adapter.InventoryAdapter; +import org.spongepowered.common.item.inventory.custom.CustomInventory; import org.spongepowered.common.item.inventory.query.Query; import java.util.Collection; import java.util.Collections; import java.util.Iterator; import java.util.Optional; +import java.util.stream.Collectors; public interface MinecraftInventoryAdapter extends InventoryAdapter { @@ -143,7 +145,11 @@ default void setMaxStackSize(int size) { @Override default > Collection getProperties(Class property) { if (this.parent() == this) { - return Collections.emptyList(); // TODO top level inventory properties + if (this instanceof CustomInventory) { + return ((CustomInventory) this).getProperties().values().stream().filter(p -> property.equals(p.getClass())) + .map(p -> property.cast(p)).collect(Collectors.toList()); + } + return Collections.emptyList(); // TODO properties of top level inventory? } return this.parent().getProperties(this, property); } @@ -153,7 +159,7 @@ default void setMaxStackSize(int size) { default > Optional getProperty(Inventory child, Class property, Object key) { for (InventoryProperty prop : Adapter.Logic.getProperties(this, child, property)) { if (key.equals(prop.getKey())) { - return Optional.of(((T) prop)); + return Optional.of((T)prop); } } return Optional.empty(); @@ -162,7 +168,13 @@ default void setMaxStackSize(int size) { @Override default > Optional getProperty(Class property, Object key) { if (this.parent() == this) { - return Optional.empty(); // TODO top level inventory properties + if (this instanceof CustomInventory) { + InventoryProperty forKey = ((CustomInventory) this).getProperties().get(key); + if (property.equals(forKey.getClass())) { + return Optional.of((T) forKey); + } + } + return Optional.empty(); // TODO properties of top level inventory? } return this.parent().getProperty(this, property, key); }