boosCooldowns/src/cz/boosik/boosCooldown/BoosItemCostManager.java

115 lines
3.5 KiB
Java
Raw Blame History

package cz.boosik.boosCooldown;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import util.boosChat;
/**
* Tøída obsahuje veškeré metody potøebné k øízení poplatkù za pøíkazy.
*
* @author Jakub Koláø
*
*/
public class BoosItemCostManager {
private static String msg = "";
/**
* Metoda zajiš<69>uje funkci platby za pøíkaz. Vrací hodnotu v závislosti na
* úspìšnosti platby.
*
* @param player
* specifikovaný hráè
* @param regexCommand
* pøíkaz z konfigurace vyhovující originálnímu pøíkazu
* @param originalCommand
* originální pøíkaz použitý hráèem
* @param item
* @param price
* cena použití pøíkazu
* @param name
* jméno specifického hráèe
* @return true pokud byl úspìšnì zaplacen poplatek, nebo pokud nebyl
* nalezen ekonomický plugin; false pokud došlo k chybì nebo hráè
* nemìl dostatek financí
*/
static boolean payItemForCommand(Player player, String regexCommand,
String originalCommand, String item, int count, String name) {
Material material = Material.getMaterial(item);
Inventory inventory = player.getInventory();
Boolean trans = false;
if (inventory.contains(material, count)) {
ItemStack itemstack = new ItemStack(material, count);
inventory.removeItem(itemstack);
trans = true;
}
if (trans) {
msg = String.format(
BoosConfigManager.getPaidItemsForCommandMessage(), count
+ " " + item);
msg = msg.replaceAll("&command&", originalCommand);
boosChat.sendMessageToPlayer(player, msg);
return true;
} else {
// msg = String.format(
// BoosConfigManager.getInsufficientItemsMessage(), (count
// + " " + item));
// msg = msg.replaceAll("&command&", originalCommand);
// boosChat.sendMessageToPlayer(player, msg);
return false;
}
}
/**
* Metoda ukonèuje/neukonèuje událost použití pøíkazu v závislosti na tom,
* jakou hodnotu vrátila metoda payForCommand(Player player, String
* regexCommand, String originalCommand, double price, String name);.
*
* @param event
* událost PlayerCommandPreprocessEvent
* @param player
* specifický hráè
* @param regexCommand
* pøíkaz z konfigurace vyhovující originálnímu pøíkazu
* @param originalCommand
* originální pøíkaz použitý hráèem
* @param item
* @param price
* cena použití pøíkazu
*/
static void payItemForCommand(PlayerCommandPreprocessEvent event,
Player player, String regexCommand, String originalCommand,
String item, int count) {
String name = player.getName();
if (count > 0) {
if (!player.hasPermission("booscooldowns.noitemcost")
&& !player.hasPermission("booscooldowns.noitemcost."
+ originalCommand)) {
if (payItemForCommand(player, regexCommand, originalCommand,
item, count, name)) {
return;
} else {
BoosCoolDownManager.cancelCooldown(player, regexCommand);
event.setCancelled(true);
return;
}
}
}
}
public static boolean has(Player player, String item, int count) {
if (item.equals("")) {
return true;
}
Material material = Material.getMaterial(item);
Inventory inventory = player.getInventory();
if (inventory.contains(material, count)) {
return true;
}
return false;
}
}