From f754a7b6161f5fb0c0c8342cef75727ad0e8c7b5 Mon Sep 17 00:00:00 2001 From: BillyGalbreath Date: Sun, 21 Mar 2021 23:20:54 -0500 Subject: [PATCH] Sneak to bulk process composter --- build.gradle.kts | 4 -- ...0186-Sneak-to-bulk-process-composter.patch | 61 +++++++++++++++++++ 2 files changed, 61 insertions(+), 4 deletions(-) create mode 100644 patches/server/0186-Sneak-to-bulk-process-composter.patch diff --git a/build.gradle.kts b/build.gradle.kts index 41b2351b9..efdcb2a97 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -52,7 +52,3 @@ subprojects { credentials(PasswordCredentials::class) } } - -tasks.withType { - applyCommand("am", "--no-3way", "--ignore-whitespace", "--reject", "-C0") -} diff --git a/patches/server/0186-Sneak-to-bulk-process-composter.patch b/patches/server/0186-Sneak-to-bulk-process-composter.patch new file mode 100644 index 000000000..4195347f0 --- /dev/null +++ b/patches/server/0186-Sneak-to-bulk-process-composter.patch @@ -0,0 +1,61 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: BillyGalbreath +Date: Sun, 21 Mar 2021 15:49:15 -0500 +Subject: [PATCH] Sneak to bulk process composter + + +diff --git a/src/main/java/net/minecraft/world/level/block/BlockComposter.java b/src/main/java/net/minecraft/world/level/block/BlockComposter.java +index e4e519ba773388b8d26a8f794a6eff51e3d8f72e..c0b235d5edf3cd14021696d1b4f76ce3de41f5d5 100644 +--- a/src/main/java/net/minecraft/world/level/block/BlockComposter.java ++++ b/src/main/java/net/minecraft/world/level/block/BlockComposter.java +@@ -44,7 +44,7 @@ import org.bukkit.craftbukkit.util.DummyGeneratorAccess; + + public class BlockComposter extends Block implements IInventoryHolder { + +- public static final BlockStateInteger a = BlockProperties.as; ++ public static final BlockStateInteger a = BlockProperties.as; public static BlockStateInteger level() { return BlockComposter.a; } // Purpur - OBFHELPER + public static final Object2FloatMap b = new Object2FloatOpenHashMap(); + private static final VoxelShape c = VoxelShapes.b(); + private static final VoxelShape[] d = (VoxelShape[]) SystemUtils.a((new VoxelShape[9]), (avoxelshape) -> { // CraftBukkit - decompile error +@@ -203,6 +203,25 @@ public class BlockComposter extends Block implements IInventoryHolder { + public static IBlockData a(IBlockData iblockdata, WorldServer worldserver, ItemStack itemstack, BlockPosition blockposition, Entity entity) { // CraftBukkit + int i = (Integer) iblockdata.get(BlockComposter.a); + ++ // Purpur start ++ IBlockData newState = process(i, iblockdata, worldserver, itemstack, blockposition, entity); ++ ++ if (worldserver.purpurConfig.composterBulkProcess && entity.isSneaking()) { ++ IBlockData oldState; ++ int oldCount, newCount, oldLevel, newLevel; ++ do { ++ oldState = newState; ++ oldCount = itemstack.getCount(); ++ oldLevel = oldState.get(BlockComposter.level()); ++ newState = process(oldLevel, oldState, worldserver, itemstack, blockposition, entity); ++ newCount = itemstack.getCount(); ++ newLevel = newState.get(BlockComposter.level()); ++ } while (newCount > 0 && (newCount != oldCount || newLevel != oldLevel || newState != oldState)); ++ } ++ return newState; ++ } ++ private static IBlockData process(int i, IBlockData iblockdata, WorldServer worldserver, ItemStack itemstack, BlockPosition blockposition, Entity entity) { ++ // Purpur end + if (i < 7 && BlockComposter.b.containsKey(itemstack.getItem())) { + // CraftBukkit start + double rand = worldserver.getRandom().nextDouble(); +diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +index 94f975521e9770577975810bb2c6c40d96303392..546d10217ffdf6de4c0c76ad4a55911b9fb6e903 100644 +--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java ++++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +@@ -444,6 +444,11 @@ public class PurpurWorldConfig { + chestOpenWithBlockOnTop = getBoolean("blocks.chest.open-with-solid-block-on-top", chestOpenWithBlockOnTop); + } + ++ public boolean composterBulkProcess = false; ++ private void composterSettings() { ++ composterBulkProcess = getBoolean("blocks.composter.sneak-to-bulk-process", composterBulkProcess); ++ } ++ + public boolean dispenserApplyCursedArmor = true; + public boolean dispenserPlaceAnvils = false; + private void dispenserSettings() {