Files
Purpur/patches/server/0185-ShulkerBox-allow-oversized-stacks.patch
granny 5424457174 Updated Upstream (Paper & Pufferfish)
Upstream has released updates that appear to apply and compile correctly

Paper Changes:
PaperMC/Paper@c7d4c01 Ignore invalid jars inside of the updates folder (Fixes #7751)
PaperMC/Paper@4ecc338 WorldCreator#keepSpawnLoaded (#7673)
PaperMC/Paper@873bfa6 Remove World#refreshChunk deprecation (#7684)
PaperMC/Paper@76ed156 Grant temporary immunity from EAR to moving entities (Fixes #7637) (#7644)
PaperMC/Paper@567fce6 Don't apply previous potion when item is potion (fixes #7756) (#7757)
PaperMC/Paper@c449f6a Build updates
PaperMC/Paper@ef6a1a5 Revert to old createProfile(UUID, String) logic (#7723)
PaperMC/Paper@0f8aa4e Fix NPE for BlockDataMeta#getBlockData (#7670)
PaperMC/Paper@16f224a Trigger bee_nest_destroyed trigger in the correct place (#7436)
PaperMC/Paper@caf4a6f Remove or replace a few dumb deprecations (#7760)
PaperMC/Paper@47f43da Add missing javadoc deprecation msgs for PlayerProfile (#7688)
PaperMC/Paper@fbbc03a Add EntityDyeEvent and CollarColorable interface (#7625)
PaperMC/Paper@5b85ee3 Fire CauldronLevelChange on initial fill (#7678)
PaperMC/Paper@4dc78ae Fix some team color docs and added hasColor (#7602)
PaperMC/Paper@0bf7c95 Fix opening inv in PlayerRecipeBookClickEvent handler (#7552)
PaperMC/Paper@d70ac03 fix powder snow cauldrons not turning to water (#7229)
PaperMC/Paper@ce059b4 Fix V1451 dataconverter stat types

Pufferfish Changes:
pufferfish-gg/Pufferfish@52e42d7 Updated Upstream (Paper)
pufferfish-gg/Pufferfish@7b760fe Fix method profiler config
pufferfish-gg/Pufferfish@65a83aa Updated Upstream (Paper)
2022-04-27 02:02:01 -07:00

53 lines
3.4 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: William Blake Galbreath <Blake.Galbreath@GMail.com>
Date: Thu, 27 May 2021 04:04:23 -0500
Subject: [PATCH] ShulkerBox allow oversized stacks
This fixes PaperMC/Paper#4748 where breaking a shulkerbox in survival mode
with oversized itemstacks would cause a "chunk ban". This fixes it by always
creating an itemstack using the TileEntity's NBT data (how it handles it for
creative players) instead of routing it through the LootableBuilder.
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java
index 464e304c532c1af48914d3cfad86380e8b4a096d..302203e64277932ecb224edd3768dace07bd9d94 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java
@@ -461,7 +461,7 @@ public class ServerPlayerGameMode {
ItemStack mainHandStack = null; // Paper
boolean isCorrectTool = false; // Paper
- if (this.isCreative()) {
+ if (this.isCreative() || (this.level.purpurConfig.shulkerBoxAllowOversizedStacks && block instanceof net.minecraft.world.level.block.ShulkerBoxBlock)) { // Purpur
// return true; // CraftBukkit
} else {
ItemStack itemstack = this.player.getMainHandItem();
diff --git a/src/main/java/net/minecraft/world/level/block/ShulkerBoxBlock.java b/src/main/java/net/minecraft/world/level/block/ShulkerBoxBlock.java
index 7f1230d915c98b6f30b13a06c2788bc2f7b7e912..d363d79a62c99371e03640814912f86d23108d18 100644
--- a/src/main/java/net/minecraft/world/level/block/ShulkerBoxBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/ShulkerBoxBlock.java
@@ -123,7 +123,7 @@ public class ShulkerBoxBlock extends BaseEntityBlock {
BlockEntity blockEntity = world.getBlockEntity(pos);
if (blockEntity instanceof ShulkerBoxBlockEntity) {
ShulkerBoxBlockEntity shulkerBoxBlockEntity = (ShulkerBoxBlockEntity)blockEntity;
- if (!world.isClientSide && player.isCreative() && !shulkerBoxBlockEntity.isEmpty()) {
+ if (world.purpurConfig.shulkerBoxAllowOversizedStacks || (!world.isClientSide && player.isCreative() && !shulkerBoxBlockEntity.isEmpty())) { // Purpur
ItemStack itemStack = getColoredItemStack(this.getColor());
blockEntity.saveToItem(itemStack);
if (shulkerBoxBlockEntity.hasCustomName()) {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 6ccfbcf813fb2262f4cdf33513cf9d208a7d2a00..476b6018dc378599902d895f05e3e5babcec1a9d 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -653,6 +653,11 @@ public class PurpurWorldConfig {
}
}
+ public boolean shulkerBoxAllowOversizedStacks = false;
+ private void shulkerBoxSettings() {
+ shulkerBoxAllowOversizedStacks = getBoolean("blocks.shulker_box.allow-oversized-stacks", shulkerBoxAllowOversizedStacks);
+ }
+
public boolean signRightClickEdit = false;
private void signSettings() {
signRightClickEdit = getBoolean("blocks.sign.right-click-edit", signRightClickEdit);