Check how this is done, maybe it'll give you an idea
Code:
public void closeTrade(CloseTradeStage stage) { synchronized (this) {
synchronized (target.getTrade()) {
Player oldTarget = target;
target = null;
tradeModified = false;
accepted = false;
if (CloseTradeStage.DONE != stage) {
player.getInventory().getItems().addAll(items);
player.getInventory().init();
items.clear();
} else {
archiveTrade(player, oldTarget, items,
oldTarget.getTrade().items);
archiveTrade(oldTarget, player, oldTarget.getTrade().items,
items);
player.getPackets().sendGameMessage("Accepted trade.");
ItemsContainer<Item> items = oldTarget.getTrade().items;
for (Item tradedItems : items.getItems()) {
if (tradedItems == null)
continue;
if (tradedItems.getId() == 995)
player.getMoneyPouch().addMoney(
tradedItems.getAmount(), false);
else
player.getInventory().addItem(tradedItems);
}
/*
* player.getInventory().getItems()
* .addAll(oldTarget.getTrade().items);
*/
player.getInventory().init();
oldTarget.getTrade().items.clear();
}
if (oldTarget.getTrade().isTrading()) {
oldTarget.setCloseInterfacesEvent(null);
oldTarget.closeInterfaces();
oldTarget.getTrade().closeTrade(stage);
if (CloseTradeStage.CANCEL == stage)
oldTarget.getPackets().sendGameMessage(
"<col=ff0000>Other player declined trade!");
else if (CloseTradeStage.NO_SPACE == stage) {
player.getPackets()
.sendGameMessage(
"You don't have enough space in your inventory for this trade.");
oldTarget
.getPackets()
.sendGameMessage(
"Other player doesn't have enough space in their inventory for this trade.");
}
}
}
}
}