geforkt von Mirrors/Paper
bffb08c2f9
The Paper method was chosen for deprecation because it was more restrictive in that it has an isGliding check.
28 Zeilen
1.6 KiB
Diff
28 Zeilen
1.6 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: lexikiq <noellekiq@gmail.com>
|
|
Date: Mon, 21 Jun 2021 23:21:58 -0400
|
|
Subject: [PATCH] Preserve overstacked loot
|
|
|
|
Preserves overstacked items in loot tables, such as shulker box drops, to prevent the items
|
|
from being deleted (as they'd overflow past the bounds of the container)-- or worse, causing
|
|
chunk bans via the large amount of NBT created by unstacking the items.
|
|
|
|
Fixes GH-5140 and GH-4748.
|
|
|
|
diff --git a/src/main/java/net/minecraft/world/level/storage/loot/LootTable.java b/src/main/java/net/minecraft/world/level/storage/loot/LootTable.java
|
|
index 214215d203892b8009595539f25ce26e8752debd..05af6fa0585406c4922d2eb174f7e53f4269acd6 100644
|
|
--- a/src/main/java/net/minecraft/world/level/storage/loot/LootTable.java
|
|
+++ b/src/main/java/net/minecraft/world/level/storage/loot/LootTable.java
|
|
@@ -68,9 +68,10 @@ public class LootTable {
|
|
}
|
|
|
|
public static Consumer<ItemStack> createStackSplitter(ServerLevel world, Consumer<ItemStack> consumer) {
|
|
+ boolean skipSplitter = world != null && !world.paperConfig().fixes.splitOverstackedLoot; // Paper - preserve overstacked items
|
|
return (itemstack) -> {
|
|
if (itemstack.isItemEnabled(world.enabledFeatures())) {
|
|
- if (itemstack.getCount() < itemstack.getMaxStackSize()) {
|
|
+ if (skipSplitter || itemstack.getCount() < itemstack.getMaxStackSize()) { // Paper - preserve overstacked items
|
|
consumer.accept(itemstack);
|
|
} else {
|
|
int i = itemstack.getCount();
|