Facebook
From coremax, 5 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 206
  1. package net.riixo.wcore.listeners;
  2.  
  3. import org.bukkit.entity.*;
  4. import net.riixo.wcore.basic.*;
  5. import net.riixo.wcore.utils.*;
  6. import org.bukkit.scheduler.*;
  7. import net.riixo.wcore.objects.*;
  8. import org.bukkit.plugin.*;
  9. import java.util.*;
  10. import org.bukkit.event.*;
  11. import org.bukkit.event.entity.*;
  12. import org.bukkit.*;
  13. import org.bukkit.event.inventory.*;
  14.  
  15. public class TradeListener implements Listener
  16. {
  17.     @EventHandler
  18.     public void onInventoryDrag(final InventoryDragEvent e) {
  19.         if (e.getWhoClicked() instanceof Player) {
  20.             final Player p = (Player)e.getWhoClicked();
  21.             Trade trade = null;
  22.             if (Main.tradeManager.getTradeFromAccepter(p) != null) {
  23.                 trade = Main.tradeManager.getTradeFromAccepter(p);
  24.             }
  25.             if (Main.tradeManager.getTradeFromRequester(p) != null) {
  26.                 trade = Main.tradeManager.getTradeFromRequester(p);
  27.             }
  28.             if (trade != null && trade.hasTradeWindowOpen(p)) {
  29.                 for (final int rawSlot : e.getRawSlots()) {
  30.                     if (TradeUtil.canPlaceItem(p, rawSlot) && !trade.isCountdownInProgress()) {
  31.                         final Trade finalTrade = trade;
  32.                         new BukkitRunnable() {
  33.                             public void run() {
  34.                                 finalTrade.updateOpenTrade();
  35.                                 Main.tradeManager.addTrade(finalTrade);
  36.                             }
  37.                         }.runTaskLater((Plugin)Main.getMain(), 1L);
  38.                     }
  39.                     else {
  40.                         e.setCancelled(true);
  41.                     }
  42.                 }
  43.             }
  44.         }
  45.     }
  46.    
  47.     @EventHandler
  48.     public void onEntityDamage(final EntityDamageEvent e) {
  49.         if (e.getEntity() instanceof Player && e.getDamage() > 0.0 && !e.isCancelled()) {
  50.             final Player p = (Player)e.getEntity();
  51.             final double startHealth = p.getHealthScale();
  52.             Bukkit.getServer().getScheduler().scheduleSyncDelayedTask((Plugin)Main.getMain(), (Runnable)new Runnable() {
  53.                 @Override
  54.                 public void run() {
  55.                     if (p.getHealthScale() != startHealth) {
  56.                         Trade trade = null;
  57.                         if (Main.tradeManager.getTradeFromAccepter(p) != null) {
  58.                             trade = Main.tradeManager.getTradeFromAccepter(p);
  59.                         }
  60.                         if (Main.tradeManager.getTradeFromRequester(p) != null) {
  61.                             trade = Main.tradeManager.getTradeFromRequester(p);
  62.                         }
  63.                         if (trade != null) {
  64.                             trade.cancelTrade(true);
  65.                         }
  66.                         trade = null;
  67.                     }
  68.                 }
  69.             }, 0L);
  70.         }
  71.     }
  72.    
  73.     @EventHandler
  74.     public void onInventoryClick(final InventoryClickEvent e) {
  75.         if (e.getWhoClicked() instanceof Player) {
  76.             final Player p = (Player)e.getWhoClicked();
  77.             Trade trade = null;
  78.             boolean isRequester = false;
  79.             if (Main.tradeManager.getTradeFromAccepter(p) != null) {
  80.                 trade = Main.tradeManager.getTradeFromAccepter(p);
  81.                 isRequester = false;
  82.             }
  83.             if (Main.tradeManager.getTradeFromRequester(p) != null) {
  84.                 trade = Main.tradeManager.getTradeFromRequester(p);
  85.                 isRequester = true;
  86.             }
  87.             if (trade != null && trade.hasTradeWindowOpen(p)) {
  88.                 if (e.getClick() == ClickType.LEFT || e.getClick() == ClickType.RIGHT) {
  89.                     if (TradeUtil.canPlaceItem(p, e.getRawSlot()) && !trade.isCountdownInProgress()) {
  90.                         final Trade finalTrade = trade;
  91.                         new BukkitRunnable() {
  92.                             public void run() {
  93.                                 finalTrade.updateOpenTrade();
  94.                                 Main.tradeManager.addTrade(finalTrade);
  95.                             }
  96.                         }.runTaskLater((Plugin)Main.getMain(), 1L);
  97.                     }
  98.                     else {
  99.                         if (e.getRawSlot() == 36) {
  100.                             if (isRequester) {
  101.                                 trade.setRequesterReady(true);
  102.                                 Main.tradeManager.addTrade(trade);
  103.                             }
  104.                             else {
  105.                                 trade.setAccepterReady(true);
  106.                                 Main.tradeManager.addTrade(trade);
  107.                             }
  108.                         }
  109.                         else if (e.getRawSlot() == 38) {
  110.                             trade.cancelTrade(true);
  111.                         }
  112.                         e.setCancelled(true);
  113.                     }
  114.                 }
  115.                 else {
  116.                     e.setCancelled(true);
  117.                 }
  118.             }
  119.             trade = null;
  120.         }
  121.     }
  122.    
  123.     @EventHandler
  124.     public void onInventoryClose(final InventoryCloseEvent e) {
  125.         if (e.getPlayer() instanceof Player) {
  126.             final Player p = (Player)e.getPlayer();
  127.             Trade trade = null;
  128.             if (Main.tradeManager.getTradeFromAccepter(p) != null) {
  129.                 trade = Main.tradeManager.getTradeFromAccepter(p);
  130.             }
  131.             if (Main.tradeManager.getTradeFromRequester(p) != null) {
  132.                 trade = Main.tradeManager.getTradeFromRequester(p);
  133.             }
  134.             if (trade != null && trade.hasTradeWindowOpen(p) && !trade.isCancelled()) {
  135.                 trade.cancelTrade(true);
  136.             }
  137.             trade = null;
  138.         }
  139.     }
  140. }
  141.