From 2b82d9a988e17fce301d3b5fa35dfdae3a222a44 Mon Sep 17 00:00:00 2001 From: Anselm Brehme Date: Sun, 23 Oct 2016 20:29:26 +0200 Subject: [PATCH] enables retrieving Properties from CustomInventories --- .../impl/MinecraftInventoryAdapter.java | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) 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 37a0057b3db..e1e8e2bc6cc 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 @@ -35,12 +35,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 { @@ -137,7 +139,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); } @@ -146,7 +152,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(); @@ -155,7 +161,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); }