mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-28 07:20:24 +01:00
fix issue in hopper patch
This commit is contained in:
parent
eddf0f40dc
commit
b7cdb5d6c4
1 changed files with 8 additions and 8 deletions
|
@ -117,7 +117,7 @@ index a05acf709735b40ca86f978508c63a86065fd405..71dd26ca6626631b94d53818cd06b93f
|
||||||
|
|
||||||
double getLevelY();
|
double getLevelY();
|
||||||
diff --git a/src/main/java/net/minecraft/world/level/block/entity/HopperBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/HopperBlockEntity.java
|
diff --git a/src/main/java/net/minecraft/world/level/block/entity/HopperBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/HopperBlockEntity.java
|
||||||
index 0ec16d554c2b51a64614c73783505c7b06ff02c7..86c0a477883102e4aebdab7ac28bf9f2ab2f7c48 100644
|
index 0ec16d554c2b51a64614c73783505c7b06ff02c7..3b1442bf4c83650369e925d76f07dc67c6cbbc83 100644
|
||||||
--- a/src/main/java/net/minecraft/world/level/block/entity/HopperBlockEntity.java
|
--- a/src/main/java/net/minecraft/world/level/block/entity/HopperBlockEntity.java
|
||||||
+++ b/src/main/java/net/minecraft/world/level/block/entity/HopperBlockEntity.java
|
+++ b/src/main/java/net/minecraft/world/level/block/entity/HopperBlockEntity.java
|
||||||
@@ -3,7 +3,6 @@ package net.minecraft.world.level.block.entity;
|
@@ -3,7 +3,6 @@ package net.minecraft.world.level.block.entity;
|
||||||
|
@ -145,11 +145,11 @@ index 0ec16d554c2b51a64614c73783505c7b06ff02c7..86c0a477883102e4aebdab7ac28bf9f2
|
||||||
+ private static boolean skipPushModeEventFire = false;
|
+ private static boolean skipPushModeEventFire = false;
|
||||||
+ public static boolean skipHopperEvents = false;
|
+ public static boolean skipHopperEvents = false;
|
||||||
+
|
+
|
||||||
+ private static boolean hopperPush(Level level, BlockPos pos, Container iinventory, Direction enumdirection, HopperBlockEntity hopper) {
|
+ private static boolean hopperPush(Level level, BlockPos pos, Container destination, Direction enumdirection, HopperBlockEntity hopper) {
|
||||||
+ skipPushModeEventFire = skipHopperEvents;
|
+ skipPushModeEventFire = skipHopperEvents;
|
||||||
+ boolean foundItem = false;
|
+ boolean foundItem = false;
|
||||||
+ for (int i = 0; i < iinventory.getContainerSize(); ++i) {
|
+ for (int i = 0; i < hopper.getContainerSize(); ++i) {
|
||||||
+ ItemStack item = iinventory.getItem(i);
|
+ ItemStack item = hopper.getItem(i);
|
||||||
+ if (!item.isEmpty()) {
|
+ if (!item.isEmpty()) {
|
||||||
+ foundItem = true;
|
+ foundItem = true;
|
||||||
+ ItemStack origItemStack = item;
|
+ ItemStack origItemStack = item;
|
||||||
|
@ -162,13 +162,13 @@ index 0ec16d554c2b51a64614c73783505c7b06ff02c7..86c0a477883102e4aebdab7ac28bf9f2
|
||||||
+ // We only need to fire the event once to give protection plugins a chance to cancel this event
|
+ // We only need to fire the event once to give protection plugins a chance to cancel this event
|
||||||
+ // Because nothing uses getItem, every event call should end up the same result.
|
+ // Because nothing uses getItem, every event call should end up the same result.
|
||||||
+ if (!skipPushModeEventFire) {
|
+ if (!skipPushModeEventFire) {
|
||||||
+ itemstack = callPushMoveEvent(iinventory, itemstack, hopper);
|
+ itemstack = callPushMoveEvent(destination, itemstack, hopper);
|
||||||
+ if (itemstack == null) { // cancelled
|
+ if (itemstack == null) { // cancelled
|
||||||
+ origItemStack.setCount(origCount);
|
+ origItemStack.setCount(origCount);
|
||||||
+ return false;
|
+ return false;
|
||||||
+ }
|
+ }
|
||||||
+ }
|
+ }
|
||||||
+ final ItemStack itemstack2 = addItem(hopper, iinventory, itemstack, enumdirection);
|
+ final ItemStack itemstack2 = addItem(hopper, destination, itemstack, enumdirection);
|
||||||
+ final int remaining = itemstack2.getCount();
|
+ final int remaining = itemstack2.getCount();
|
||||||
+ if (remaining != moved) {
|
+ if (remaining != moved) {
|
||||||
+ origItemStack = origItemStack.cloneItemStack(true);
|
+ origItemStack = origItemStack.cloneItemStack(true);
|
||||||
|
@ -177,7 +177,7 @@ index 0ec16d554c2b51a64614c73783505c7b06ff02c7..86c0a477883102e4aebdab7ac28bf9f2
|
||||||
+ origItemStack.setCount(origCount - moved + remaining);
|
+ origItemStack.setCount(origCount - moved + remaining);
|
||||||
+ }
|
+ }
|
||||||
+ hopper.setItem(i, origItemStack);
|
+ hopper.setItem(i, origItemStack);
|
||||||
+ iinventory.setChanged();
|
+ destination.setChanged();
|
||||||
+ return true;
|
+ return true;
|
||||||
+ }
|
+ }
|
||||||
+ origItemStack.setCount(origCount);
|
+ origItemStack.setCount(origCount);
|
||||||
|
@ -300,7 +300,7 @@ index 0ec16d554c2b51a64614c73783505c7b06ff02c7..86c0a477883102e4aebdab7ac28bf9f2
|
||||||
if (HopperBlockEntity.isFullContainer(iinventory1, enumdirection)) {
|
if (HopperBlockEntity.isFullContainer(iinventory1, enumdirection)) {
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
+ return hopperPush(world, blockposition, iinventory, enumdirection, hopper); /* // Paper - disable rest
|
+ return hopperPush(world, blockposition, iinventory1, enumdirection, hopper); /* // Paper - disable rest
|
||||||
for (int i = 0; i < iinventory.getContainerSize(); ++i) {
|
for (int i = 0; i < iinventory.getContainerSize(); ++i) {
|
||||||
if (!iinventory.getItem(i).isEmpty()) {
|
if (!iinventory.getItem(i).isEmpty()) {
|
||||||
ItemStack itemstack = iinventory.getItem(i).copy();
|
ItemStack itemstack = iinventory.getItem(i).copy();
|
||||||
|
|
Loading…
Reference in a new issue