Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,29 @@ index e82bb8f2d2b0e771dc371fd7e709116e1f5f204f..6d522eac417e6d0e21626f412ba5e90d
ItemStack item = this.getItem();
ItemStack item1 = itemEntity.getItem();
if (Objects.equals(this.target, itemEntity.target) && areMergable(item, item1)) {
diff --git a/net/minecraft/world/entity/npc/InventoryCarrier.java b/net/minecraft/world/entity/npc/InventoryCarrier.java
index 585644a1339b477cb38fec7e06848e1a45c1516b..3d7e05bcc7e0c8c108f81a12a7f77b5d3a0b1d40 100644
--- a/net/minecraft/world/entity/npc/InventoryCarrier.java
+++ b/net/minecraft/world/entity/npc/InventoryCarrier.java
@@ -31,7 +31,17 @@ public interface InventoryCarrier {

mob.onItemPickup(itemEntity);
int count = item.getCount();
- ItemStack itemStack = inventory.addItem(item);
+ // Leaves start - item over-stack util
+ int restoreCount = 0;
+ if (org.leavesmc.leaves.util.ItemOverstackUtils.isStackable(item)) {
+ int vanillaMax = item.getMaxStackSize();
+ restoreCount = Math.max(0, count - vanillaMax);
+ item.setCount(count - restoreCount);
+ }
+ ItemStack itemStack = item.copy();
+ itemStack.setCount(inventory.addItem(item).getCount());
+ itemStack.setCount(itemStack.getCount() + restoreCount);
+ // Leaves end - item over-stack util
mob.take(itemEntity, count - itemStack.getCount());
if (itemStack.isEmpty()) {
itemEntity.discard(org.bukkit.event.entity.EntityRemoveEvent.Cause.PICKUP); // CraftBukkit - add Bukkit remove cause
diff --git a/net/minecraft/world/entity/player/Inventory.java b/net/minecraft/world/entity/player/Inventory.java
index 41e59f3739945ca7f6ab710c993b5c0f15fcd529..b849b04f227b43d036f4f6b3ae7accfafc389d9f 100644
--- a/net/minecraft/world/entity/player/Inventory.java
Expand Down Expand Up @@ -444,7 +467,7 @@ index edf3bc4adc9b1700b73f06ea940f17cd55b16860..b1be97f37398240ce564aba6c7003192
}

diff --git a/net/minecraft/world/level/block/entity/HopperBlockEntity.java b/net/minecraft/world/level/block/entity/HopperBlockEntity.java
index cb6a11673d19266925c87b0254a7f66d8e4fb7ca..9b0d26b7a8c0656848cfa659065abae6fc2fdab4 100644
index cb6a11673d19266925c87b0254a7f66d8e4fb7ca..84e4733ab85808d3aa65d8573ea8a99096789d76 100644
--- a/net/minecraft/world/level/block/entity/HopperBlockEntity.java
+++ b/net/minecraft/world/level/block/entity/HopperBlockEntity.java
@@ -114,7 +114,7 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
Expand All @@ -456,7 +479,36 @@ index cb6a11673d19266925c87b0254a7f66d8e4fb7ca..9b0d26b7a8c0656848cfa659065abae6
}

@Override
@@ -693,9 +693,9 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
@@ -645,7 +645,18 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
// CraftBukkit end
} // Paper - Perf: Optimize Hoppers
ItemStack itemStack = item.getItem().copy();
- ItemStack itemStack1 = addItem(null, container, itemStack, null);
+ // Leaves start - item over-stack util
+ int restoreCount = 0;
+ ItemStack itemStack1 = itemStack.copy();
+ if (org.leavesmc.leaves.util.ItemOverstackUtils.isStackable(item.getItem())) {
+ // We need the hopper suck in the item with the vanilla max stack size each time
+ int vanillaMax = itemStack.getMaxStackSize();
+ restoreCount = Math.max(0, itemStack.getCount() - vanillaMax);
+ itemStack.setCount(itemStack.getCount() - restoreCount);
+ }
+ itemStack1.setCount(addItem(null, container, itemStack, null).getCount());
+ itemStack1.setCount(itemStack1.getCount() + restoreCount);
+ // Leaves end - item over-stack util
if (itemStack1.isEmpty()) {
flag = true;
item.setItem(ItemStack.EMPTY);
@@ -654,7 +665,7 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
item.setItem(itemStack1);
}

- return flag;
+ return flag || (restoreCount != 0); // Leaves - item over-stack util
}

public static ItemStack addItem(@Nullable Container source, Container destination, ItemStack stack, @Nullable Direction direction) {
@@ -693,9 +704,9 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
if (item.isEmpty()) {
// Spigot start - SPIGOT-6693, SimpleContainer#setItem
ItemStack leftover = ItemStack.EMPTY; // Paper - Make hoppers respect inventory max stack size
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1424,7 +1424,7 @@ index 775928cfe700202a70b19589ca72afd9768b62f1..c87e57f4f0aa2ffcf5531a55d971c804
+ // Leaves end - Lithium Sleeping Block Entity
}
diff --git a/net/minecraft/world/level/block/entity/HopperBlockEntity.java b/net/minecraft/world/level/block/entity/HopperBlockEntity.java
index 4876c725872674899252d3338868c696eaf31f45..45a9f2413dc5e3487bcfd450b39af52de343e893 100644
index bf681157626ce35b5e91ca8d2de49913bbbe2dff..a0f379fbbc926c219f1274e963d65ea348dfdf26 100644
--- a/net/minecraft/world/level/block/entity/HopperBlockEntity.java
+++ b/net/minecraft/world/level/block/entity/HopperBlockEntity.java
@@ -27,8 +27,29 @@ import net.minecraft.world.level.storage.ValueInput;
Expand Down Expand Up @@ -1548,7 +1548,7 @@ index 4876c725872674899252d3338868c696eaf31f45..45a9f2413dc5e3487bcfd450b39af52d
if (addItem(hopper, itemEntity)) {
return true;
}
@@ -802,7 +850,7 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
@@ -813,7 +861,7 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen

// CraftBukkit start
private static @Nullable Container runHopperInventorySearchEvent(
Expand All @@ -1557,7 +1557,7 @@ index 4876c725872674899252d3338868c696eaf31f45..45a9f2413dc5e3487bcfd450b39af52d
org.bukkit.craftbukkit.block.CraftBlock hopper,
org.bukkit.craftbukkit.block.CraftBlock searchLocation,
org.bukkit.event.inventory.HopperInventorySearchEvent.ContainerType containerType
@@ -923,6 +971,19 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
@@ -934,6 +982,19 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
}

public void setCooldown(int cooldownTime) {
Expand All @@ -1577,15 +1577,15 @@ index 4876c725872674899252d3338868c696eaf31f45..45a9f2413dc5e3487bcfd450b39af52d
this.cooldownTime = cooldownTime;
}

@@ -942,6 +1003,7 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
@@ -953,6 +1014,7 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
@Override
protected void setItems(NonNullList<ItemStack> items) {
this.items = items;
+ if (org.leavesmc.leaves.LeavesConfig.performance.sleepingBlockEntity) this.lithium$emitStackListReplaced(); // Leaves - Lithium Sleeping Block Entity
}

public static void entityInside(Level level, BlockPos pos, BlockState state, Entity entity, HopperBlockEntity blockEntity) {
@@ -956,4 +1018,757 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
@@ -967,4 +1029,757 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
protected AbstractContainerMenu createMenu(int id, Inventory player) {
return new HopperMenu(id, player, this);
}
Expand Down
Loading