mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-17 16:37:43 +01:00
Upstream has released updates that appear to apply and compile correctly Paper Changes: 7232d8f2a EntityLoadCrossbowEvent#shouldConsumeItem 4740bd6c8 Mark PlayerInventory#getItem as nullable bd9ace578 Add a config option to limit the number of entities of each type to load/save in a chunk (#4792) 6bafeb5a9 Move logic from last patch into correct place 9668118fd disable entity ticking flag after watchdog obliteration
78 lines
3.7 KiB
Diff
78 lines
3.7 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/server/EnumDirection.java b/src/main/java/net/minecraft/server/EnumDirection.java
|
|
index c9963c19892c3e408964b72983bc6e26f8b63b67..e3ba447eb7f3023406b71aab97e3d30523540588 100644
|
|
--- a/src/main/java/net/minecraft/server/EnumDirection.java
|
|
+++ b/src/main/java/net/minecraft/server/EnumDirection.java
|
|
@@ -102,6 +102,7 @@ public enum EnumDirection implements INamable {
|
|
return fromType1(this.h);
|
|
}
|
|
|
|
+ public EnumDirection rotateCW() { return g(); } // Purpur - OBFHELPER
|
|
public EnumDirection g() {
|
|
switch (this) {
|
|
case NORTH:
|
|
@@ -117,6 +118,7 @@ public enum EnumDirection implements INamable {
|
|
}
|
|
}
|
|
|
|
+ public EnumDirection rotateCCW() { return h(); } // Purpur - OBFHELPER
|
|
public EnumDirection h() {
|
|
switch (this) {
|
|
case NORTH:
|
|
@@ -148,6 +150,7 @@ public enum EnumDirection implements INamable {
|
|
return this.j;
|
|
}
|
|
|
|
+ public EnumDirection.EnumAxis getAxis() { return n(); } // Purpur - OBFHELPER
|
|
public EnumDirection.EnumAxis n() {
|
|
return this.k;
|
|
}
|
|
diff --git a/src/main/java/net/minecraft/server/IDispenseBehavior.java b/src/main/java/net/minecraft/server/IDispenseBehavior.java
|
|
index 7b8a470d97ccf0fdcdb8eef9368195486e09913b..d1f9d2884d055efbe72b01f86b0bdaf13ed122a5 100644
|
|
--- a/src/main/java/net/minecraft/server/IDispenseBehavior.java
|
|
+++ b/src/main/java/net/minecraft/server/IDispenseBehavior.java
|
|
@@ -915,6 +915,23 @@ public interface IDispenseBehavior {
|
|
}
|
|
}));
|
|
BlockDispenser.a((IMaterial) Items.SHEARS.getItem(), (IDispenseBehavior) (new DispenseBehaviorShears()));
|
|
+ // Purpur start
|
|
+ BlockDispenser.a(Blocks.ANVIL, new DispenseBehaviorMaybe() {
|
|
+ @Override
|
|
+ protected ItemStack a(ISourceBlock dispenser, ItemStack itemstack) {
|
|
+ World world = dispenser.getWorld();
|
|
+ if (!world.purpurConfig.dispenserPlaceAnvils) return super.a(dispenser, itemstack);
|
|
+ EnumDirection facing = dispenser.getBlockData().get(BlockDispenser.FACING);
|
|
+ BlockPosition blockposition = dispenser.getBlockPosition().shift(facing);
|
|
+ IBlockData iblockdata = world.getType(blockposition);
|
|
+ if (iblockdata.isAir()) {
|
|
+ world.setTypeUpdate(blockposition, Blocks.ANVIL.getBlockData().set(BlockAnvil.FACING, facing.getAxis() == EnumDirection.EnumAxis.Y ? EnumDirection.NORTH : facing.rotateCW()));
|
|
+ itemstack.subtract(1);
|
|
+ }
|
|
+ return itemstack;
|
|
+ }
|
|
+ });
|
|
+ // Purpur end
|
|
}
|
|
|
|
static void a(ISourceBlock isourceblock, Entity entity, EnumDirection enumdirection) {
|
|
diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
|
index affab8e21b8643e9965959561d4f125f75b845b9..73b96f608f4e388081f4d7372a0abaed537bf006 100644
|
|
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
|
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
|
@@ -233,8 +233,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;
|