package forgeperms.impl;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.server.MinecraftServer;
import net.minecraftforge.event.ForgeEventFactory;
import forgeperms.api.IEconomyManager;
public class ItemEconomy implements IEconomyManager {
@Override
public boolean load() {
return true; // Will always successfully load
}
@Override
public String getLoadError() {
return null; // No need for an error since it will always successfully
// load
}
@Override
public String getName() {
return "ItemEcon";
}
@Override
public double playerBalance(String playerName, String itemID, String world) {
String[] itemInfo = itemID.split(":");
EntityPlayer player = MinecraftServer.getServer().getConfigurationManager().getPlayerForUsername(playerName);
for (ItemStack item : player.inventory.mainInventory) {
if (item.itemID == Integer.parseInt(itemInfo[0]) && item.getItemDamage() == Integer.parseInt(itemInfo[1])) {
return item.stackSize;
}
}
return 0;
}
@Override
public boolean playerHas(String playerName, String world, String itemID, double amount) {
return true; // Pretend the player always has enough, since it is item
// based
}
@Override
public boolean playerWithdraw(String playerName, String world, String itemID, double amount) {
String[] itemInfo = itemID.split(":");
EntityPlayer player = MinecraftServer.getServer().getConfigurationManager().getPlayerForUsername(playerName);
ItemStack held = player.getHeldItem();
ItemStack item = new ItemStack(Integer.parseInt(itemInfo[0]), (int) amount, Integer.parseInt(itemInfo[1]));
if (held == null || held.itemID != item.itemID || held.getItemDamage() != item.getItemDamage()) { // Makes sure the player has the correct item in their hand
return false;
}
if (held.stackSize < item.stackSize) {
return false;
}
held.stackSize -= item.stackSize; // Removes specific amount of items from players inventory
if (held.stackSize <= 0) {
ForgeEventFactory.onPlayerDestroyItem(player, held); // Removes the item completely from the players inventory
}
return true; // Withdraw was successful!
}
@Override
public boolean playerDeposit(String playerName, String world, String itemID, double amount) {
String[] itemInfo = itemID.split(":");
EntityPlayer player = MinecraftServer.getServer().getConfigurationManager().getPlayerForUsername(playerName);
ItemStack item = new ItemStack(Integer.parseInt(itemInfo[0]), (int) amount, Integer.parseInt(itemInfo[1]));
if (!player.inventory.addItemStackToInventory(item)) {
return false; // Players inventory was full, deposit failed!
}
return true; // Deposit was successful!
}
@Override
public boolean hasBankSupport() {
return false;
}
@Override
public String format(String itemID, double amount) {
String[] itemInfo = itemID.split(":");
ItemStack item = new ItemStack(Integer.parseInt(itemInfo[0]), (int) amount, Integer.parseInt(itemInfo[1]));
return Double.toString(amount) + " " + item.getDisplayName();
}
@Override
public boolean rightClickToPay() {
return true;
}
@Override
public double bankBalance(String name, String itemID) {
return 0;
}
@Override
public boolean bankHas(String name, String itemID, double amount) {
return false;
}
@Override
public boolean bankWithdraw(String name, String itemID, double amount) {
return false;
}
@Override
public boolean bankDeposit(String name, String itemID, double amount) {
return false;
}
}