package net.riixo.wcore.managers;
import net.riixo.wcore.basic.*;
import net.riixo.wcore.objects.*;
import java.util.*;
import org.bukkit.entity.*;
import org.bukkit.inventory.*;
public class TradeManager
{
public Main plugin;
private ArrayList<Trade> tradeList;
public TradeManager(final Main instance) {
this.tradeList = new ArrayList<Trade>();
this.plugin = instance;
}
public ArrayList<Trade> getAllTrades() {
return this.tradeList;
}
public void removeTrade(final Trade trade) {
final ArrayList<Trade> trades = new ArrayList<Trade>();
for (final Trade t : this.tradeList) {
if (!t.getRequester().getName().equalsIgnoreCase(trade.getRequester().getName()) || !t.getAccepter().getName().equalsIgnoreCase(trade.getAccepter().getName())) {
trades.add(t);
}
}
this.tradeList = trades;
}
public void addTrade(final Trade trade) {
this.removeTrade(trade);
this.tradeList.add(trade);
}
public Trade getTradeFromRequester(final Player requester) {
Trade trade = null;
for (final Trade t : this.tradeList) {
if (t.getRequester().getName().equalsIgnoreCase(requester.getName())) {
trade = t;
}
}
return trade;
}
public Trade getTradeFromAccepter(final Player accepter) {
Trade trade = null;
for (final Trade t : this.tradeList) {
if (t.getAccepter().getName().equalsIgnoreCase(accepter.getName())) {
trade = t;
}
}
return trade;
}
public Inventory setItemsLeft(final Inventory inventory, final ItemStack[] itemsArray) {
final ArrayList<ItemStack> items = new ArrayList<ItemStack>();
for (final ItemStack item : itemsArray) {
items.add(item);
}
int slot = 0;
while (items.size() > 0) {
if (slot != 3 && slot != 12 && slot != 21 && slot != 30) {
inventory.setItem(slot, (ItemStack)items.get(0));
items.remove(items.get(0));
++slot;
}
else {
inventory.setItem(slot, (ItemStack)items.get(0));
items.remove(items.get(0));
slot += 6;
}
}
return inventory;
}
public Inventory setItemsRight(final Inventory inventory, final ItemStack[] itemsArray) {
final ArrayList<ItemStack> items = new ArrayList<ItemStack>();
for (final ItemStack item : itemsArray) {
items.add(item);
}
int slot = 5;
while (items.size() > 0) {
if (slot != 8 && slot != 17 && slot != 26 && slot != 35) {
inventory.setItem(slot, (ItemStack)items.get(0));
items.remove(items.get(0));
++slot;
}
else {
inventory.setItem(slot, (ItemStack)items.get(0));
items.remove(items.get(0));
slot += 6;
}
}
return inventory;
}
public ItemStack[] getItemsRequester(final Player p) {
final ArrayList<ItemStack> items = new ArrayList<ItemStack>();
if (this.getTradeFromRequester(p) != null) {
final Trade trade = this.getTradeFromRequester(p);
if (trade.hasTradeWindowOpen(p)) {
final Inventory inv = p.getOpenInventory().getTopInventory();
for (int slot = 0; slot < 4; ++slot) {
if (inv.getItem(slot) != null) {
items.add(inv.getItem(slot));
}
}
for (int slot = 9; slot < 13; ++slot) {
if (inv.getItem(slot) != null) {
items.add(inv.getItem(slot));
}
}
for (int slot = 18; slot < 22; ++slot) {
if (inv.getItem(slot) != null) {
items.add(inv.getItem(slot));
}
}
for (int slot = 27; slot < 31; ++slot) {
if (inv.getItem(slot) != null) {
items.add(inv.getItem(slot));
}
}
}
}
return items.toArray(new ItemStack[items.size()]);
}
public ItemStack[] getItemsAccepter(final Player p) {
final ArrayList<ItemStack> items = new ArrayList<ItemStack>();
if (this.getTradeFromAccepter(p) != null) {
final Trade trade = this.getTradeFromAccepter(p);
if (trade.hasTradeWindowOpen(p)) {
final Inventory inv = p.getOpenInventory().getTopInventory();
for (int slot = 0; slot < 4; ++slot) {
if (inv.getItem(slot) != null) {
items.add(inv.getItem(slot));
}
}
for (int slot = 9; slot < 13; ++slot) {
if (inv.getItem(slot) != null) {
items.add(inv.getItem(slot));
}
}
for (int slot = 18; slot < 22; ++slot) {
if (inv.getItem(slot) != null) {
items.add(inv.getItem(slot));
}
}
for (int slot = 27; slot < 31; ++slot) {
if (inv.getItem(slot) != null) {
items.add(inv.getItem(slot));
}
}
}
}
return items.toArray(new ItemStack[items.size()]);
}
}