More work to the inventory util.
This commit is contained in:
parent
c12c1ac765
commit
90f2c1059b
@ -3,7 +3,10 @@ package com.massivecraft.mcore.util;
|
||||
import java.util.HashMap;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||
import org.bukkit.event.inventory.InventoryType;
|
||||
import org.bukkit.event.inventory.InventoryType.SlotType;
|
||||
import org.bukkit.inventory.Inventory;
|
||||
import org.bukkit.inventory.InventoryHolder;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
@ -16,6 +19,9 @@ public class InventoryUtil
|
||||
|
||||
public static boolean isGiving(InventoryClickEvent event)
|
||||
{
|
||||
// Outside inventory?
|
||||
if (event.getRawSlot() < 0) return false;
|
||||
|
||||
// Was the upper inventory clicked?
|
||||
boolean upperClicked = event.getRawSlot() < event.getInventory().getSize();
|
||||
|
||||
@ -35,6 +41,9 @@ public class InventoryUtil
|
||||
|
||||
public static boolean isTaking(InventoryClickEvent event)
|
||||
{
|
||||
// Outside inventory?
|
||||
if (event.getRawSlot() < 0) return false;
|
||||
|
||||
// Was the upper inventory clicked?
|
||||
boolean upperClicked = event.getRawSlot() < event.getInventory().getSize();
|
||||
|
||||
@ -48,6 +57,57 @@ public class InventoryUtil
|
||||
return ret;
|
||||
}
|
||||
|
||||
public static boolean isAltering(InventoryClickEvent event)
|
||||
{
|
||||
return isGiving(event) || isTaking(event);
|
||||
}
|
||||
|
||||
/**
|
||||
* This method will return the ItemStack the player is trying to equip.
|
||||
* If the click event would not result in equipping something null will be returned.
|
||||
* Note that this algorithm is not perfect. It's an adequate guess.
|
||||
*
|
||||
* @param event The InventoryClickEvent to analyze.
|
||||
* @return The ItemStack the player is trying to equip.
|
||||
*/
|
||||
public static ItemStack isEquipping(InventoryClickEvent event)
|
||||
{
|
||||
/*
|
||||
System.out.println("---");
|
||||
System.out.println("getInventory().getType() "+event.getInventory().getType());
|
||||
System.out.println("getView().getTopInventory().getType() "+event.getView().getTopInventory().getType());
|
||||
System.out.println("getView().getType() "+event.getView().getType());
|
||||
System.out.println("getView().getBottomInventory().getType() "+event.getView().getBottomInventory().getType());
|
||||
System.out.println("event.getSlotType() "+event.getSlotType());
|
||||
System.out.println("event.getRawSlot() "+event.getRawSlot());
|
||||
System.out.println("event.getSlot() "+event.getSlot());
|
||||
*/
|
||||
|
||||
boolean isShiftClick = event.isShiftClick();
|
||||
InventoryType inventoryType = event.getInventory().getType();
|
||||
SlotType slotType = event.getSlotType();
|
||||
ItemStack cursor = event.getCursor();
|
||||
ItemStack currentItem = event.getCurrentItem();
|
||||
|
||||
if (isShiftClick)
|
||||
{
|
||||
if (inventoryType != InventoryType.CRAFTING) return null;
|
||||
if (slotType == SlotType.CRAFTING) return null;
|
||||
if (slotType == SlotType.ARMOR) return null;
|
||||
if (slotType == SlotType.RESULT) return null;
|
||||
if (currentItem.getType() == Material.AIR) return null;
|
||||
return currentItem;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (slotType == SlotType.ARMOR)
|
||||
{
|
||||
return cursor;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
// -------------------------------------------- //
|
||||
// IS EMPTY?
|
||||
// -------------------------------------------- //
|
||||
|
@ -34,13 +34,9 @@ import org.bukkit.event.block.Action;
|
||||
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
||||
import org.bukkit.event.entity.EntityDamageEvent;
|
||||
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
|
||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||
import org.bukkit.event.inventory.InventoryType;
|
||||
import org.bukkit.event.inventory.InventoryType.SlotType;
|
||||
import org.bukkit.event.player.PlayerInteractEvent;
|
||||
import org.bukkit.event.player.PlayerMoveEvent;
|
||||
import org.bukkit.event.player.PlayerQuitEvent;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import com.massivecraft.mcore.InternalListener;
|
||||
import com.massivecraft.mcore.MCore;
|
||||
@ -235,53 +231,6 @@ public class MUtil
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* This method will return the ItemStack the player is trying to equip.
|
||||
* If the click event would not result in equipping something null will be returned.
|
||||
* Note that this algorithm is not perfect. It's an adequate guess.
|
||||
*
|
||||
* @param event The InventoryClickEvent to analyze.
|
||||
* @return The ItemStack the player is trying to equip.
|
||||
*/
|
||||
public static ItemStack getEquipping(InventoryClickEvent event)
|
||||
{
|
||||
/*
|
||||
System.out.println("---");
|
||||
System.out.println("getInventory().getType() "+event.getInventory().getType());
|
||||
System.out.println("getView().getTopInventory().getType() "+event.getView().getTopInventory().getType());
|
||||
System.out.println("getView().getType() "+event.getView().getType());
|
||||
System.out.println("getView().getBottomInventory().getType() "+event.getView().getBottomInventory().getType());
|
||||
System.out.println("event.getSlotType() "+event.getSlotType());
|
||||
System.out.println("event.getRawSlot() "+event.getRawSlot());
|
||||
System.out.println("event.getSlot() "+event.getSlot());
|
||||
*/
|
||||
|
||||
boolean isShiftClick = event.isShiftClick();
|
||||
InventoryType inventoryType = event.getInventory().getType();
|
||||
SlotType slotType = event.getSlotType();
|
||||
ItemStack cursor = event.getCursor();
|
||||
ItemStack currentItem = event.getCurrentItem();
|
||||
|
||||
if (isShiftClick)
|
||||
{
|
||||
if (inventoryType != InventoryType.CRAFTING) return null;
|
||||
if (slotType == SlotType.CRAFTING) return null;
|
||||
if (slotType == SlotType.ARMOR) return null;
|
||||
if (slotType == SlotType.RESULT) return null;
|
||||
if (currentItem.getType() == Material.AIR) return null;
|
||||
return currentItem;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (slotType == SlotType.ARMOR)
|
||||
{
|
||||
return cursor;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static boolean isCombatEvent(EntityDamageEvent event)
|
||||
{
|
||||
if (event.getCause() != DamageCause.ENTITY_ATTACK && event.getCause() != DamageCause.PROJECTILE) return false;
|
||||
|
Loading…
Reference in New Issue
Block a user