- package net.riixo.wcore.listeners;
- import org.bukkit.entity.*;
- import net.riixo.wcore.basic.*;
- import net.riixo.wcore.utils.*;
- import org.bukkit.scheduler.*;
- import net.riixo.wcore.objects.*;
- import org.bukkit.plugin.*;
- import java.util.*;
- import org.bukkit.event.*;
- import org.bukkit.event.entity.*;
- import org.bukkit.*;
- import org.bukkit.event.inventory.*;
- public class TradeListener implements Listener
- {
- @EventHandler
- public void onInventoryDrag(final InventoryDragEvent e) {
- if (e.getWhoClicked() instanceof Player) {
- final Player p = (Player)e.getWhoClicked();
- Trade trade = null;
- if (Main.tradeManager.getTradeFromAccepter(p) != null) {
- trade = Main.tradeManager.getTradeFromAccepter(p);
- }
- if (Main.tradeManager.getTradeFromRequester(p) != null) {
- trade = Main.tradeManager.getTradeFromRequester(p);
- }
- if (trade != null && trade.hasTradeWindowOpen(p)) {
- for (final int rawSlot : e.getRawSlots()) {
- if (TradeUtil.canPlaceItem(p, rawSlot) && !trade.isCountdownInProgress()) {
- final Trade finalTrade = trade;
- new BukkitRunnable() {
- public void run() {
- finalTrade.updateOpenTrade();
- Main.tradeManager.addTrade(finalTrade);
- }
- }.runTaskLater((Plugin)Main.getMain(), 1L);
- }
- else {
- e.setCancelled(true);
- }
- }
- }
- }
- }
- @EventHandler
- public void onEntityDamage(final EntityDamageEvent e) {
- if (e.getEntity() instanceof Player && e.getDamage() > 0.0 && !e.isCancelled()) {
- final Player p = (Player)e.getEntity();
- final double startHealth = p.getHealthScale();
- Bukkit.getServer().getScheduler().scheduleSyncDelayedTask((Plugin)Main.getMain(), (Runnable)new Runnable() {
- @Override
- public void run() {
- if (p.getHealthScale() != startHealth) {
- Trade trade = null;
- if (Main.tradeManager.getTradeFromAccepter(p) != null) {
- trade = Main.tradeManager.getTradeFromAccepter(p);
- }
- if (Main.tradeManager.getTradeFromRequester(p) != null) {
- trade = Main.tradeManager.getTradeFromRequester(p);
- }
- if (trade != null) {
- trade.cancelTrade(true);
- }
- trade = null;
- }
- }
- }, 0L);
- }
- }
- @EventHandler
- public void onInventoryClick(final InventoryClickEvent e) {
- if (e.getWhoClicked() instanceof Player) {
- final Player p = (Player)e.getWhoClicked();
- Trade trade = null;
- boolean isRequester = false;
- if (Main.tradeManager.getTradeFromAccepter(p) != null) {
- trade = Main.tradeManager.getTradeFromAccepter(p);
- isRequester = false;
- }
- if (Main.tradeManager.getTradeFromRequester(p) != null) {
- trade = Main.tradeManager.getTradeFromRequester(p);
- isRequester = true;
- }
- if (trade != null && trade.hasTradeWindowOpen(p)) {
- if (e.getClick() == ClickType.LEFT || e.getClick() == ClickType.RIGHT) {
- if (TradeUtil.canPlaceItem(p, e.getRawSlot()) && !trade.isCountdownInProgress()) {
- final Trade finalTrade = trade;
- new BukkitRunnable() {
- public void run() {
- finalTrade.updateOpenTrade();
- Main.tradeManager.addTrade(finalTrade);
- }
- }.runTaskLater((Plugin)Main.getMain(), 1L);
- }
- else {
- if (e.getRawSlot() == 36) {
- if (isRequester) {
- trade.setRequesterReady(true);
- Main.tradeManager.addTrade(trade);
- }
- else {
- trade.setAccepterReady(true);
- Main.tradeManager.addTrade(trade);
- }
- }
- else if (e.getRawSlot() == 38) {
- trade.cancelTrade(true);
- }
- e.setCancelled(true);
- }
- }
- else {
- e.setCancelled(true);
- }
- }
- trade = null;
- }
- }
- @EventHandler
- public void onInventoryClose(final InventoryCloseEvent e) {
- if (e.getPlayer() instanceof Player) {
- final Player p = (Player)e.getPlayer();
- Trade trade = null;
- if (Main.tradeManager.getTradeFromAccepter(p) != null) {
- trade = Main.tradeManager.getTradeFromAccepter(p);
- }
- if (Main.tradeManager.getTradeFromRequester(p) != null) {
- trade = Main.tradeManager.getTradeFromRequester(p);
- }
- if (trade != null && trade.hasTradeWindowOpen(p) && !trade.isCancelled()) {
- trade.cancelTrade(true);
- }
- trade = null;
- }
- }
- }