Skip to content

Commit

Permalink
Dispensers place anvils option
Browse files Browse the repository at this point in the history
  • Loading branch information
BillyGalbreath committed Aug 5, 2020
1 parent ae51c16 commit 930555c
Show file tree
Hide file tree
Showing 2 changed files with 78 additions and 1 deletion.
2 changes: 1 addition & 1 deletion current-paper
@@ -1 +1 @@
1.16.1--6874b340330971b9934941a70410d110383d7e76
1.16.1--57ffa5163aff13683299c03bda1dc3e019c523f4
77 changes: 77 additions & 0 deletions patches/server/0121-Dispensers-place-anvils-option.patch
@@ -0,0 +1,77 @@
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 5a04654657..0ec5ea0659 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 660f44975a..2cf10277ef 100644
--- a/src/main/java/net/minecraft/server/IDispenseBehavior.java
+++ b/src/main/java/net/minecraft/server/IDispenseBehavior.java
@@ -914,6 +914,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 f42af3d9f9..278b100de9 100644
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
@@ -230,8 +230,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;

0 comments on commit 930555c

Please sign in to comment.