Skip to content

Commit

Permalink
Started work on material payments
Browse files Browse the repository at this point in the history
  • Loading branch information
sarhatabaot committed Mar 3, 2024
1 parent 79fd057 commit 45a0593
Show file tree
Hide file tree
Showing 3 changed files with 82 additions and 8 deletions.
28 changes: 22 additions & 6 deletions src/main/java/me/tychsen/enchantgui/config/EShopConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,8 @@
import com.github.sarhatabaot.kraken.core.config.ConfigFile;
import lombok.Setter;
import me.tychsen.enchantgui.EnchantGUIPlugin;
import me.tychsen.enchantgui.economy.NullPayment;
import me.tychsen.enchantgui.economy.PaymentStrategy;
import me.tychsen.enchantgui.economy.PlayerPointsPayment;
import me.tychsen.enchantgui.economy.VaultPayment;
import me.tychsen.enchantgui.economy.XPPayment;
import me.tychsen.enchantgui.economy.*;
import org.bukkit.Material;
import org.bukkit.command.CommandSender;
import org.bukkit.enchantments.Enchantment;
import org.jetbrains.annotations.NotNull;
Expand Down Expand Up @@ -94,12 +91,31 @@ public PaymentStrategy getPaymentStrategy() {
case "money" -> setEconomy(new VaultPayment());
case "xp" -> setEconomy(new XPPayment());
case "playerpoints" -> setEconomy(new PlayerPointsPayment());
default -> setEconomy(new NullPayment());
default -> {
final Material possibleMaterial = checkMaterialCurrency();
if(possibleMaterial == Material.AIR) {
setEconomy(new NullPayment());
} else {
setEconomy(new MaterialPayment(possibleMaterial));
}

}
}
}
return economy;
}

private Material checkMaterialCurrency() {
final String paymentType = getPaymentType();
if(paymentType.startsWith("material")) {
final String possibleMaterial = paymentType.split(":")[1];
return Material.matchMaterial(possibleMaterial.toUpperCase());
}

EnchantGUIPlugin.getInstance().getLogger().warning(() -> "Could not find matching material.");
return Material.AIR;
}

public String getLanguage() {
return config.getString("language", "en");
}
Expand Down
55 changes: 55 additions & 0 deletions src/main/java/me/tychsen/enchantgui/economy/MaterialPayment.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
package me.tychsen.enchantgui.economy;

import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.jetbrains.annotations.NotNull;

import java.util.Arrays;

public class MaterialPayment implements PaymentStrategy {
private final Material material;

public MaterialPayment(Material material) {
this.material = material;
}

@Override
public boolean withdraw(@NotNull Player player, int amount) {
if(!hasSufficientFunds(player,amount)) return false;

//do stuff
return true;
}

@Override
public boolean withdraw(@NotNull Player player, double amount) {
return withdraw(player, (int) amount);
}

//todo not precise.
@Override
public boolean hasSufficientFunds(@NotNull Player player, int amount) {
final int count = Arrays.stream(player.getInventory().getContents())
.filter(itemStack -> itemStack.getType() == material)
.mapToInt(ItemStack::getAmount)
.sum();

return count >= amount;
}

@Override
public boolean hasSufficientFunds(@NotNull Player player, double amount) {
return hasSufficientFunds(player, (int) amount);
}

@Override
public String name() {
return "MaterialPayment";
}

@Override
public String getCurrency() {
return material.name().toLowerCase();
}
}
7 changes: 5 additions & 2 deletions src/main/resources/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,11 @@ opt-out: false
# Max 32 characters!
menu-name: "EnchantGUI"

# Payment currency can be one of two. Either 'money' for regular money (using Vault+Economy system)
# or 'xp' for XP levels.
# Payment currency options:
# 1. Either 'money' for regular money (using Vault+Economy system)
# 2. 'xp' for XP levels.
# 3. 'pp' for player points.
# 4. 'material:id' for a specific material, for example, emeralds.
# You can also put 'disable' to disable the economy-aspect of the plugin entirely.
payment-currency: money

Expand Down

0 comments on commit 45a0593

Please sign in to comment.