|
@@ -1,70 +1,19 @@
|
|
|
package com.gmail.nossr50.skills.repair;
|
|
|
|
|
|
-import org.bukkit.Material;
|
|
|
import org.bukkit.inventory.ItemStack;
|
|
|
import org.bukkit.inventory.PlayerInventory;
|
|
|
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.Objects;
|
|
|
-
|
|
|
/**
|
|
|
* Represents one item in a Repair Transaction
|
|
|
*/
|
|
|
-public class RepairCost {
|
|
|
-
|
|
|
- private final ArrayList<ItemStack> compatibleRepairItems;
|
|
|
-
|
|
|
- public RepairCost(ArrayList<ItemStack> compatibleRepairItems) {
|
|
|
- this.compatibleRepairItems = compatibleRepairItems;
|
|
|
- }
|
|
|
-
|
|
|
- public RepairCost(RepairWildcard repairWildcard) {
|
|
|
- compatibleRepairItems = new ArrayList<>();
|
|
|
- compatibleRepairItems.addAll(repairWildcard.getMatchingItems());
|
|
|
- }
|
|
|
-
|
|
|
- public RepairCost(ItemStack repairItem) {
|
|
|
- compatibleRepairItems = new ArrayList<>();
|
|
|
- compatibleRepairItems.add(repairItem);
|
|
|
- }
|
|
|
-
|
|
|
- public ItemStack getCost(PlayerInventory playerInventory, boolean strictMatching) {
|
|
|
- for(ItemStack itemStack : playerInventory.getContents()) {
|
|
|
- if(itemStack == null || itemStack.getType() == Material.AIR) {
|
|
|
- continue;
|
|
|
- }
|
|
|
-
|
|
|
- //Attempt to match the item in the inventory to any of the compatible repair items
|
|
|
- for(ItemStack repairItem : compatibleRepairItems) {
|
|
|
- if(strictMatching) {
|
|
|
- if(itemStack.isSimilar(repairItem))
|
|
|
- return itemStack;
|
|
|
- } else {
|
|
|
- if(itemStack.getType() == repairItem.getType()) {
|
|
|
- return itemStack;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- public ArrayList<ItemStack> getCompatibleRepairItems() {
|
|
|
- return compatibleRepairItems;
|
|
|
- }
|
|
|
+public interface RepairCost {
|
|
|
|
|
|
- @Override
|
|
|
- public boolean equals(Object o) {
|
|
|
- if (this == o) return true;
|
|
|
- if (!(o instanceof RepairCost)) return false;
|
|
|
- RepairCost that = (RepairCost) o;
|
|
|
- return getCompatibleRepairItems().equals(that.getCompatibleRepairItems());
|
|
|
- }
|
|
|
+ /**
|
|
|
+ * Searches a player inventory for a matching ItemStack that can be used to pay for the repair transaction
|
|
|
+ * @param playerInventory inventory of player attempting to pay the cost
|
|
|
+ * @param strictMatching whether or not to match repair cost items strictly with items in a players inventory
|
|
|
+ * @return any compatible payment items if found
|
|
|
+ */
|
|
|
+ ItemStack findPayment(PlayerInventory playerInventory, boolean strictMatching);
|
|
|
|
|
|
- @Override
|
|
|
- public int hashCode() {
|
|
|
- return Objects.hash(getCompatibleRepairItems());
|
|
|
- }
|
|
|
}
|