Added item price API
This commit is contained in:
@@ -1,7 +1,10 @@
|
||||
package com.willfp.eco.core.integrations.shop;
|
||||
|
||||
import com.willfp.eco.core.integrations.Integration;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
/**
|
||||
@@ -25,4 +28,27 @@ public interface ShopIntegration extends Integration {
|
||||
// Do nothing unless overridden.
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the price of an item.
|
||||
*
|
||||
* @param itemStack The item.
|
||||
* @return The price.
|
||||
*/
|
||||
default double getPrice(@NotNull final ItemStack itemStack) {
|
||||
// Do nothing unless overridden.
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the price of an item.
|
||||
*
|
||||
* @param itemStack The item.
|
||||
* @param player The player.
|
||||
* @return The price.
|
||||
*/
|
||||
default double getPrice(@NotNull final ItemStack itemStack,
|
||||
@NotNull final Player player) {
|
||||
return getPrice(itemStack);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,9 +1,12 @@
|
||||
package com.willfp.eco.core.integrations.shop;
|
||||
|
||||
import com.willfp.eco.core.EcoPlugin;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.jetbrains.annotations.ApiStatus;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
@@ -52,6 +55,40 @@ public final class ShopManager {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the price of an item.
|
||||
*
|
||||
* @param itemStack The item.
|
||||
* @return The price.
|
||||
*/
|
||||
public static double getItemPrice(@Nullable final ItemStack itemStack) {
|
||||
return getItemPrice(itemStack, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the price of an item.
|
||||
*
|
||||
* @param itemStack The item.
|
||||
* @param player The player.
|
||||
* @return The price.
|
||||
*/
|
||||
public static double getItemPrice(@Nullable final ItemStack itemStack,
|
||||
@Nullable final Player player) {
|
||||
if (itemStack == null) {
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
for (ShopIntegration shopIntegration : REGISTERED) {
|
||||
if (player == null) {
|
||||
return shopIntegration.getPrice(itemStack);
|
||||
} else {
|
||||
return shopIntegration.getPrice(itemStack, player);
|
||||
}
|
||||
}
|
||||
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
private ShopManager() {
|
||||
throw new UnsupportedOperationException("This is a utility class and cannot be instantiated");
|
||||
}
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
@file:JvmName("ShopExtensions")
|
||||
|
||||
package com.willfp.eco.core.integrations.shop
|
||||
|
||||
import org.bukkit.entity.Player
|
||||
import org.bukkit.inventory.ItemStack
|
||||
|
||||
/** @see ShopManager.getItemPrice **/
|
||||
val ItemStack.price: Double
|
||||
get() = ShopManager.getItemPrice(this)
|
||||
|
||||
/** @see ShopManager.getItemPrice **/
|
||||
fun ItemStack.getPrice(player: Player): Double =
|
||||
ShopManager.getItemPrice(this, player)
|
||||
Reference in New Issue
Block a user