Hopper-distillery compatibility

This commit is contained in:
Thorinwasher 2023-11-23 22:59:59 +01:00
parent ba75403f3b
commit 2cbe1c7d84
2 changed files with 57 additions and 29 deletions

View File

@ -14,6 +14,7 @@ import org.bukkit.scheduler.BukkitRunnable;
import java.util.HashMap;
import java.util.Map;
import java.util.logging.Level;
/**
* Updated for 1.9 to replicate the "Brewing" process for distilling.
@ -48,8 +49,7 @@ public class BDistiller {
taskId = new DistillRunnable().runTaskTimer(P.p, 2L, 1L).getTaskId();
}
public static void distillerClick(InventoryClickEvent event) {
BrewerInventory standInv = (BrewerInventory) event.getInventory();
public static void distillerClick(BrewerInventory standInv) {
final Block standBlock = standInv.getHolder().getBlock();
// If we were already tracking the brewer, cancel any ongoing event due to the click.

View File

@ -1,6 +1,11 @@
package com.dre.brewery.listeners;
import com.dre.brewery.*;
import com.dre.brewery.BDistiller;
import com.dre.brewery.BSealer;
import com.dre.brewery.Barrel;
import com.dre.brewery.Brew;
import com.dre.brewery.MCBarrel;
import com.dre.brewery.P;
import com.dre.brewery.filedata.BConfig;
import com.dre.brewery.lore.BrewLore;
import org.bukkit.Material;
@ -9,7 +14,16 @@ import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.*;
import org.bukkit.event.inventory.BrewEvent;
import org.bukkit.event.inventory.ClickType;
import org.bukkit.event.inventory.InventoryAction;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.inventory.InventoryCloseEvent;
import org.bukkit.event.inventory.InventoryDragEvent;
import org.bukkit.event.inventory.InventoryMoveItemEvent;
import org.bukkit.event.inventory.InventoryOpenEvent;
import org.bukkit.event.inventory.InventoryPickupItemEvent;
import org.bukkit.event.inventory.InventoryType;
import org.bukkit.inventory.BrewerInventory;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.InventoryHolder;
@ -20,6 +34,7 @@ import org.bukkit.inventory.meta.PotionMeta;
import java.util.HashSet;
import java.util.Iterator;
import java.util.UUID;
import java.util.logging.Level;
public class InventoryListener implements Listener {
@ -82,7 +97,7 @@ public class InventoryListener implements Listener {
if (InventoryType.BREWING != inv.getType()) return;
if (event.getAction() == InventoryAction.NOTHING) return; // Ignore clicks that do nothing
BDistiller.distillerClick(event);
BDistiller.distillerClick((BrewerInventory) event.getInventory());
}
@EventHandler(priority = EventPriority.LOW, ignoreCancelled = true)
@ -258,7 +273,7 @@ public class InventoryListener implements Listener {
// block the pickup of items where getPickupDelay is > 1000 (puke)
@EventHandler(ignoreCancelled = true)
public void onHopperPickupPuke(InventoryPickupItemEvent event){
public void onHopperPickupPuke(InventoryPickupItemEvent event) {
if (event.getItem().getPickupDelay() > 1000 && event.getItem().getItemStack().getType() == BConfig.pukeItem) {
event.setCancelled(true);
}
@ -267,22 +282,31 @@ public class InventoryListener implements Listener {
// Block taking out items from running distillers,
// Convert Color Lore from MC Barrels back into normal color on taking out
@EventHandler(ignoreCancelled = true, priority = EventPriority.HIGH)
public void onHopperMove(InventoryMoveItemEvent event){
if (event.getSource() instanceof BrewerInventory) {
if (BDistiller.isTrackingDistiller(((BrewerInventory) event.getSource()).getHolder().getBlock())) {
event.setCancelled(true);
}
return;
public void onHopperMove(InventoryMoveItemEvent event) {
if (event.getDestination().getType() == InventoryType.BREWING) {
dealWithBrewery(event.getItem(), (BrewerInventory) event.getDestination());
}
if (!P.use1_14) return;
if (event.getSource().getType() == InventoryType.BREWING) {
dealWithBrewery(event.getItem(), (BrewerInventory) event.getSource());
}
if (event.getSource().getType() == InventoryType.BARREL) {
dealWithBarrel(event);
}
}
private void dealWithBarrel(InventoryMoveItemEvent event){
if (!P.use1_14) return;
ItemStack item = event.getItem();
if (item.getType() == Material.POTION && Brew.isBrew(item)) {
if (item.getType() != Material.POTION || !Brew.isBrew(item)) {
return;
}
PotionMeta meta = (PotionMeta) item.getItemMeta();
assert meta != null;
if (BrewLore.hasColorLore(meta)) {
if (!BrewLore.hasColorLore(meta)) {
return;
}
// has color lore, convert lore back to normal
Brew brew = Brew.get(meta);
if (brew != null) {
@ -293,8 +317,12 @@ public class InventoryListener implements Listener {
event.setItem(item);
}
}
private void dealWithBrewery(ItemStack item, BrewerInventory inventory){
if (item.getType() != Material.POTION || !Brew.isBrew(item)) {
return;
}
}
BDistiller.distillerClick(inventory);
}
@EventHandler