Fixed hopper transactions not always detecting invalid events

This commit is contained in:
Intelli 2021-07-22 13:17:40 -06:00
parent 3f0291e0d5
commit 6fce87386d
2 changed files with 19 additions and 2 deletions

View File

@ -7,6 +7,7 @@ import java.util.Set;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.inventory.BrewerInventory;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.InventoryHolder;
import org.bukkit.inventory.ItemStack;
@ -48,6 +49,17 @@ public final class HopperPullListener {
boolean abort = false;
if (ConfigHandler.isPaper) {
for (ItemStack itemStack : sourceHolder.getInventory().getContents()) {
if (itemStack != null && Util.getItemStackHashCode(itemStack) == itemHash) {
if (itemHash != Util.getItemStackHashCode(movedItem) || destinationHolder.getInventory().firstEmpty() == -1 || destinationHolder.getInventory() instanceof BrewerInventory) {
abort = true;
}
break;
}
}
/*
for (ItemStack itemStack : sourceHolder.getInventory().getContents()) {
if (itemStack != null && Util.getItemStackHashCode(itemStack) == itemHash) {
abort = true;
@ -58,11 +70,15 @@ public final class HopperPullListener {
if (abort) {
for (ItemStack itemStack : destinationHolder.getInventory().getContents()) {
if (itemStack != null && Util.getItemStackHashCode(itemStack) == Util.getItemStackHashCode(movedItem)) {
abort = false;
if (itemHash == Util.getItemStackHashCode(itemStack) && destinationHolder.getInventory().firstEmpty() > -1) {
abort = false;
}
break;
}
}
}
*/
}
else {
ItemStack[] sourceContents = sourceHolder.getInventory().getContents();

View File

@ -7,6 +7,7 @@ import java.util.Set;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.inventory.BrewerInventory;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.InventoryHolder;
import org.bukkit.inventory.ItemStack;
@ -49,7 +50,7 @@ public final class HopperPushListener {
if (ConfigHandler.isPaper) {
for (ItemStack itemStack : sourceHolder.getInventory().getContents()) {
if (itemStack != null && Util.getItemStackHashCode(itemStack) == itemHash) {
if (itemHash != Util.getItemStackHashCode(movedItem) || destinationHolder.getInventory().firstEmpty() == -1) {
if (itemHash != Util.getItemStackHashCode(movedItem) || destinationHolder.getInventory().firstEmpty() == -1 || destinationHolder.getInventory() instanceof BrewerInventory) {
abort = true;
}