2013-05-09 21:47:58 +02:00
|
|
|
package com.dre.brewery.listeners;
|
|
|
|
|
|
|
|
import org.bukkit.event.EventHandler;
|
|
|
|
import org.bukkit.event.EventPriority;
|
|
|
|
import org.bukkit.event.Listener;
|
|
|
|
import org.bukkit.event.inventory.BrewEvent;
|
2013-08-19 16:23:12 +02:00
|
|
|
import org.bukkit.event.inventory.InventoryClickEvent;
|
2014-01-07 09:44:54 +01:00
|
|
|
import org.bukkit.event.inventory.InventoryPickupItemEvent;
|
2013-08-19 16:23:12 +02:00
|
|
|
import org.bukkit.event.inventory.InventoryType;
|
2013-05-09 21:47:58 +02:00
|
|
|
import org.bukkit.inventory.BrewerInventory;
|
2013-08-19 16:23:12 +02:00
|
|
|
import org.bukkit.inventory.meta.PotionMeta;
|
2013-05-09 21:47:58 +02:00
|
|
|
import org.bukkit.inventory.ItemStack;
|
|
|
|
import org.bukkit.Material;
|
|
|
|
|
|
|
|
import com.dre.brewery.Brew;
|
2014-03-05 12:51:33 +01:00
|
|
|
import com.dre.brewery.P;
|
2013-05-09 21:47:58 +02:00
|
|
|
|
|
|
|
public class InventoryListener implements Listener {
|
|
|
|
|
2014-02-16 17:11:02 +01:00
|
|
|
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
|
2013-05-09 21:47:58 +02:00
|
|
|
public void onBrew(BrewEvent event) {
|
|
|
|
int slot = 0;
|
|
|
|
BrewerInventory inv = event.getContents();
|
|
|
|
ItemStack item;
|
|
|
|
boolean custom = false;
|
2013-07-03 18:06:13 +02:00
|
|
|
Boolean[] contents = new Boolean[3];
|
2013-05-09 21:47:58 +02:00
|
|
|
while (slot < 3) {
|
|
|
|
item = inv.getItem(slot);
|
2013-07-03 18:06:13 +02:00
|
|
|
contents[slot] = false;
|
2013-05-09 21:47:58 +02:00
|
|
|
if (item != null) {
|
|
|
|
if (item.getType() == Material.POTION) {
|
|
|
|
if (item.hasItemMeta()) {
|
2013-07-03 18:06:13 +02:00
|
|
|
int uid = Brew.getUID(item);
|
|
|
|
if (Brew.potions.containsKey(uid)) {
|
2013-05-09 21:47:58 +02:00
|
|
|
// has custom potion in "slot"
|
2013-07-03 18:06:13 +02:00
|
|
|
if (Brew.get(uid).canDistill()) {
|
|
|
|
// is further distillable
|
|
|
|
contents[slot] = true;
|
|
|
|
custom = true;
|
|
|
|
}
|
2013-05-09 21:47:58 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
slot++;
|
|
|
|
}
|
|
|
|
if (custom) {
|
|
|
|
event.setCancelled(true);
|
|
|
|
Brew.distillAll(inv, contents);
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2013-08-19 16:23:12 +02:00
|
|
|
// convert to non colored Lore when taking out of Barrel/Brewer
|
2014-02-16 17:11:02 +01:00
|
|
|
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
|
2013-08-19 16:23:12 +02:00
|
|
|
public void onInventoryClick(InventoryClickEvent event) {
|
|
|
|
if (event.getInventory().getType() == InventoryType.BREWING) {
|
|
|
|
if (event.getSlot() > 2) {
|
|
|
|
return;
|
|
|
|
}
|
2013-08-30 21:19:49 +02:00
|
|
|
} else if (event.getInventory().getType() == InventoryType.CHEST) {
|
2014-03-05 12:51:33 +01:00
|
|
|
if (!event.getInventory().getTitle().equals(P.p.languageReader.get("Etc_Barrel"))) {
|
2013-08-19 16:23:12 +02:00
|
|
|
return;
|
|
|
|
}
|
2013-08-30 21:19:49 +02:00
|
|
|
} else {
|
|
|
|
return;
|
2013-08-19 16:23:12 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
ItemStack item = event.getCurrentItem();
|
|
|
|
if (item != null) {
|
|
|
|
if (item.getTypeId() == 373) {
|
|
|
|
if (item.hasItemMeta()) {
|
|
|
|
PotionMeta meta = (PotionMeta) item.getItemMeta();
|
|
|
|
Brew brew = Brew.get(meta);
|
|
|
|
if (brew != null) {
|
2013-08-30 21:19:49 +02:00
|
|
|
if (Brew.hasColorLore(meta)) {
|
|
|
|
brew.convertLore(meta, false);
|
|
|
|
item.setItemMeta(meta);
|
|
|
|
}
|
2013-08-19 16:23:12 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2014-01-07 09:44:54 +01:00
|
|
|
|
|
|
|
// block the pickup of items where getPickupDelay is > 1000 (puke)
|
2014-02-16 17:11:02 +01:00
|
|
|
@EventHandler(ignoreCancelled = true)
|
2014-01-07 09:44:54 +01:00
|
|
|
public void onInventoryPickupItem(InventoryPickupItemEvent event){
|
2014-04-08 16:11:20 +02:00
|
|
|
if (event.getItem().getPickupDelay() > 1000) {
|
2014-01-07 09:44:54 +01:00
|
|
|
event.setCancelled(true);
|
|
|
|
}
|
|
|
|
}
|
2013-05-09 21:47:58 +02:00
|
|
|
}
|