9
0
mirror of https://github.com/LeavesMC/Leaves.git synced 2026-01-04 15:41:31 +00:00

Update Paper

This commit is contained in:
violetc
2024-01-24 12:37:02 +08:00
parent e016ccd1db
commit fe2d9ed2df
50 changed files with 385 additions and 395 deletions

View File

@@ -6,7 +6,7 @@ Subject: [PATCH] Stackable ShulkerBoxes
This patch is Powered by fabric-carpet(https://github.com/gnembon/fabric-carpet) and plusls-carpet-addition(https://github.com/plusls/plusls-carpet-addition)
diff --git a/src/main/java/net/minecraft/world/entity/item/ItemEntity.java b/src/main/java/net/minecraft/world/entity/item/ItemEntity.java
index 491a521f0e5e272fbad7870fa3adefdea22e179f..5dacb8896d8b78b0c467aa156c497a3eb35df26c 100644
index eb0d6238588efa35fa868f26290547574a08eca2..adc179f85a774c47d386144da6b2291e915a0e1d 100644
--- a/src/main/java/net/minecraft/world/entity/item/ItemEntity.java
+++ b/src/main/java/net/minecraft/world/entity/item/ItemEntity.java
@@ -14,10 +14,12 @@ import net.minecraft.world.entity.Entity;
@@ -48,8 +48,8 @@ index 491a521f0e5e272fbad7870fa3adefdea22e179f..5dacb8896d8b78b0c467aa156c497a3e
private boolean isMergable() {
ItemStack itemstack = this.getItem();
- return this.isAlive() && this.pickupDelay != 32767 && this.age != -32768 && this.age < this.despawnRate && itemstack.getCount() < itemstack.getMaxStackSize(); // Paper - respect despawn rate in pickup check.
+ return this.isAlive() && this.pickupDelay != 32767 && this.age != -32768 && this.age < this.despawnRate && itemstack.getCount() < top.leavesmc.leaves.util.ShulkerBoxUtils.getItemStackMaxCount(itemstack); // Paper - respect despawn rate in pickup check. // Leaves - stackable shulker boxes
- return this.isAlive() && this.pickupDelay != 32767 && this.age != -32768 && this.age < this.despawnRate && itemstack.getCount() < itemstack.getMaxStackSize(); // Paper - Alternative item-despawn-rate
+ return this.isAlive() && this.pickupDelay != 32767 && this.age != -32768 && this.age < this.despawnRate && itemstack.getCount() < top.leavesmc.leaves.util.ShulkerBoxUtils.getItemStackMaxCount(itemstack); // Paper - Alternative item-despawn-rate // Leaves - stackable shulker boxes
}
+ // Leaves end - stackable shulker boxes
@@ -132,7 +132,7 @@ index d2f6027056af9d2816542f4e3d9e278d9ec2c9b4..10db6853dafd8f757499992af84c6b61
if (this.add(i, stack.split(j)) && notifiesClient && this.player instanceof ServerPlayer) {
((ServerPlayer) this.player).connection.send(new ClientboundContainerSetSlotPacket(-2, 0, i, this.getItem(i)));
diff --git a/src/main/java/net/minecraft/world/inventory/AbstractContainerMenu.java b/src/main/java/net/minecraft/world/inventory/AbstractContainerMenu.java
index 067f44d1fb245a315ec1c0fbccfef9b169c02d02..ef00f65f4096436451deeefe9153b86886b1e931 100644
index 7cef5c518207752f7e1bfdd5bbec55fe9fafca6b..925cc4d99d1388bc32cebb5238a322102b6f68e5 100644
--- a/src/main/java/net/minecraft/world/inventory/AbstractContainerMenu.java
+++ b/src/main/java/net/minecraft/world/inventory/AbstractContainerMenu.java
@@ -456,7 +456,7 @@ public abstract class AbstractContainerMenu {
@@ -195,9 +195,9 @@ index 067f44d1fb245a315ec1c0fbccfef9b169c02d02..ef00f65f4096436451deeefe9153b868
+ if (l <= top.leavesmc.leaves.util.ShulkerBoxUtils.getItemStackMaxCount(stack)) { // Leaves - stackable shulker boxes
stack.setCount(0);
itemstack1.setCount(l);
if (!isCheck) { // Paper - dont update if only a check
if (!isCheck) { // Paper - Add PlayerTradeEvent and PlayerPurchaseEvent
slot.setChanged();
} // Paper
} // Paper - Add PlayerTradeEvent and PlayerPurchaseEvent
flag1 = true;
- } else if (itemstack1.getCount() < stack.getMaxStackSize()) {
- stack.shrink(stack.getMaxStackSize() - itemstack1.getCount());
@@ -207,9 +207,9 @@ index 067f44d1fb245a315ec1c0fbccfef9b169c02d02..ef00f65f4096436451deeefe9153b868
+ stack.shrink(top.leavesmc.leaves.util.ShulkerBoxUtils.getItemStackMaxCount(stack) - itemstack1.getCount());
+ itemstack1.setCount(top.leavesmc.leaves.util.ShulkerBoxUtils.getItemStackMaxCount(stack));
+ // Leaves end - stackable shulker boxes
if (!isCheck) { // Paper - dont update if only a check
if (!isCheck) { // Paper - Add PlayerTradeEvent and PlayerPurchaseEvent
slot.setChanged();
} // Paper
} // Paper - Add PlayerTradeEvent and PlayerPurchaseEvent
diff --git a/src/main/java/net/minecraft/world/inventory/Slot.java b/src/main/java/net/minecraft/world/inventory/Slot.java
index e2fd415b69e0213688561e9a19aec2cdcd267211..bb99bdd45efdb52323429565a4e13c07f5ab6d44 100644
--- a/src/main/java/net/minecraft/world/inventory/Slot.java
@@ -257,16 +257,16 @@ index 5780d349f968ea3d05cf569b63531f8e76884827..d30af75de7d146b6bf49814b0eabae94
public VoxelShape getShape(BlockState state, BlockGetter world, BlockPos pos, CollisionContext context) {
return SHAPE;
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 b17b8f2a773fcdd20d26dcdb083d59f6b89af37f..62d1c35e78f84f561deea990b4938258a482fe39 100644
index dfc623059f9c5920883a06f9662f1bf3b7a2c4c6..46eeae81a7cda8fab80a255a57dcf096b37461bd 100644
--- a/src/main/java/net/minecraft/world/level/block/entity/HopperBlockEntity.java
+++ b/src/main/java/net/minecraft/world/level/block/entity/HopperBlockEntity.java
@@ -733,9 +733,9 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
if (itemstack1.isEmpty()) {
// Spigot start - SPIGOT-6693, InventorySubcontainer#setItem
ItemStack leftover = ItemStack.EMPTY; // Paper
ItemStack leftover = ItemStack.EMPTY; // Paper - Make hoppers respect inventory max stack size
- if (!stack.isEmpty() && stack.getCount() > to.getMaxStackSize()) {
+ if (!stack.isEmpty() && (stack.getCount() > to.getMaxStackSize() || stack.getCount() > stack.getMaxStackSize())) { // Leaves - stackable shulker boxes
leftover = stack; // Paper
leftover = stack; // Paper - Make hoppers respect inventory max stack size
- stack = stack.split(to.getMaxStackSize());
+ stack = stack.split(Math.min(to.getMaxStackSize(), stack.getMaxStackSize())); // Leaves - stackable shulker boxes
}