Core/src/main/java/eu/univento/core/api/shop/ShopMenu.java

63 lines
1.8 KiB
Java

/*
* Copyright (c) 2017 univento.eu - All rights reserved
* You are not allowed to use, distribute or modify this code
*/
package eu.univento.core.api.shop;
import eu.univento.core.api.player.CustomPlayer;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.plugin.Plugin;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
/**
* @author joethei
* @version 1.0
*/
public class ShopMenu implements Listener{
private String name;
private List<ShopItem> items = new LinkedList<>();
public ShopMenu(Plugin plugin, String name, ShopItem... items) {
this.name = name;
Collections.addAll(this.items, items);
Bukkit.getPluginManager().registerEvents(this, plugin);
}
public Inventory getInventory() {
Inventory inv = Bukkit.createInventory(null, 18, name);
for(ShopItem item : items) inv.addItem(item.getItem());
return inv;
}
@EventHandler
public void onInventoryClick(InventoryClickEvent e) {
CustomPlayer p = CustomPlayer.getPlayer((Player) e.getWhoClicked());
for(ShopItem item : items) {
if(item.getItem().equals(e.getCurrentItem())) {
e.setCancelled(true);
p.getDatabasePlayer().getCurrency(item.getCurrencyType()).whenComplete((integer, throwable) -> {
if(integer >= item.getPrice()) {
p.getDatabasePlayer().buy(item.getCurrencyType(), item.getPrice());
}else {
p.sendMessage("Das ist zu teuer für dich");
}
});
}
}
}
}