Files
Purpur/patches/server/0081-Dispensers-place-anvils-option.patch
granny b0a7353a70 Updated Upstream (Paper)
Upstream has released updates that appear to apply and compile correctly

Paper Changes:
PaperMC/Paper@eb60bff Create raw chat type as resource file instead of in source (#9226)
PaperMC/Paper@99b311d [ci skip] Clarify where furnace-related events are called (#8753)
PaperMC/Paper@83cfeb1 Improve java version check (#9692)
PaperMC/Paper@deb92c2 Add ItemStack#isEmpty and related methods (#9664)
PaperMC/Paper@0c8e84c Enforce sign line nullability when setting line with Adventure Method (#9689)
PaperMC/Paper@ede9c06 Fix Projectile#setOwner(null) not clearing owner (#9715)
PaperMC/Paper@e312ebb Add DISPLAY tracking range type (#9668)
PaperMC/Paper@06a741d Fix leashed pets teleporting to owner when loaded (#9686)
PaperMC/Paper@064fb50 Cleanup old async commands patch (#8895)
PaperMC/Paper@d8af99a Fix silent equipment change for mobs (#9677)
PaperMC/Paper@3cec9c9 [ci skip] Add missing javadoc links (#9497)
PaperMC/Paper@ba0e1f5 Fix sapling observer detection and grow event (#9654)
PaperMC/Paper@a856073 Fix two beacon bugs (#9675)
PaperMC/Paper@581b683 Fix spigot's Forced-Stats (#9663)
2023-09-16 21:48:13 -07:00

50 lines
2.6 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: William Blake Galbreath <Blake.Galbreath@GMail.com>
Date: Tue, 4 Aug 2020 21:11:03 -0500
Subject: [PATCH] Dispensers place anvils option
diff --git a/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java b/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java
index 8c2750de3be202122ccf9923a9fa32fcb8bdb743..7961a69d3e70a8ae1d74c732cd97a9cbd824a8d0 100644
--- a/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java
+++ b/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java
@@ -1187,6 +1187,23 @@ public interface DispenseItemBehavior {
}
}
});
+ // Purpur start
+ DispenserBlock.registerBehavior(Items.ANVIL, (new OptionalDispenseItemBehavior() {
+ @Override
+ public ItemStack execute(BlockSource dispenser, ItemStack stack) {
+ Level level = dispenser.getLevel();
+ if (!level.purpurConfig.dispenserPlaceAnvils) return super.execute(dispenser, stack);
+ Direction facing = dispenser.getBlockState().getValue(DispenserBlock.FACING);
+ BlockPos pos = dispenser.getPos().relative(facing);
+ BlockState state = level.getBlockState(pos);
+ if (state.isAir()) {
+ level.setBlockAndUpdate(pos, Blocks.ANVIL.defaultBlockState().setValue(net.minecraft.world.level.block.AnvilBlock.FACING, facing.getAxis() == Direction.Axis.Y ? Direction.NORTH : facing.getClockWise()));
+ stack.shrink(1);
+ }
+ return stack;
+ }
+ }));
+ // Purpur end
}
static void setEntityPokingOutOfBlock(BlockSource pointer, Entity entity, Direction direction) {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 1b7d8a8fc241e096fc4fd5b65d8444779d1deae5..0e473df153cfd9090b74b5fa2b5568220d61ae98 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -319,8 +319,10 @@ public class PurpurWorldConfig {
}
public boolean dispenserApplyCursedArmor = true;
+ public boolean dispenserPlaceAnvils = false;
private void dispenserSettings() {
dispenserApplyCursedArmor = getBoolean("blocks.dispenser.apply-cursed-to-armor-slots", dispenserApplyCursedArmor);
+ dispenserPlaceAnvils = getBoolean("blocks.dispenser.place-anvils", dispenserPlaceAnvils);
}
public boolean farmlandGetsMoistFromBelow = false;