예제 #1
0
  @EventHandler
  public void InvCloseEvent(InventoryCloseEvent event) {
    Inventory closedInv = event.getInventory();
    Player p = (Player) event.getPlayer();
    if (closedInv.getName().equals(ChatColor.GREEN + "" + ChatColor.BOLD + "PLACE ITEMS BELOW")) {
      TradeStats tradestat = null;
      if (trademanager.getTradeStatFromTradingWith(p) != null) {
        tradestat = trademanager.getTradeStatFromTradingWith(p);
      } else {
        tradestat = trademanager.getTradeStatFromWhoSent(p);
      }

      if (tradestat == null) {
        Bukkit.getLogger().warning("TradeStat is null for InvCloseEvent.");
        return;
      }

      if (closingTrade.keySet().contains(p) || closingTrade.values().contains(p)) {
        System.out.println("yes");
        return;
      }

      Player whoSentTrade = tradestat.getWhoSentTrade();
      Player whoTradingWith = tradestat.getWhoTradingWith();

      for (ItemStack item : tradestat.getSentTradeItems()) {
        whoSentTrade.getInventory().addItem(item);
      }
      for (ItemStack item : tradestat.getTradingWithItems()) {
        whoTradingWith.getInventory().addItem(item);
      }

      //            closingTrade.add(p, );
      Messages.Error(p, "You have cancelled the trade.");
      //            if (whoSentTrade.equals(p)) {
      //                Messages.Error(whoTradingWith, p.getDisplayName() + " has cancelled the
      // trade.");
      //                whoTradingWith.closeInventory();
      //                closingTrade.put(p, whoTradingWith);
      //            } else {
      //                Messages.Error(whoSentTrade, p.getDisplayName() + " has cancelled the
      // trade.");
      //                whoSentTrade.closeInventory();
      //                closingTrade.put(p, whoSentTrade);
      //            }
      trademanager.clearTradeFromTradeStat(tradestat);
      final TradeStats tradestatfinal = tradestat;
      Bukkit.getScheduler()
          .scheduleSyncDelayedTask(
              main,
              new Runnable() {
                @Override
                public void run() {
                  //                    for (Player playa : closingTrade.keySet()) {
                  //                        if (playa == p) {
                  //                            closingTrade.remove(p);
                  //                            break;
                  //                        } else if (closingTrade.get(playa).equals(p)) {
                  //                            closingTrade.remove(playa);
                  //                            break;
                  //                        }
                  //                    }
                  if (whoSentTrade.equals(p)) {
                    Messages.Error(
                        whoTradingWith, p.getDisplayName() + " has cancelled the trade.");
                    whoTradingWith.closeInventory();
                    System.out.println("closed2");
                    // closingTrade.put(p, whoTradingWith);
                  } else {
                    Messages.Error(whoSentTrade, p.getDisplayName() + " has cancelled the trade.");
                    whoSentTrade.closeInventory();
                    System.out.println("closed1");
                    // closingTrade.put(p, whoSentTrade);
                  }
                }
              },
              20L);
    }
  }