mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-19 09:27:43 +01:00
86 lines
4.2 KiB
Diff
86 lines
4.2 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/EnumDirection.java b/src/main/java/net/minecraft/core/EnumDirection.java
|
|
index 0a40df2151bd388b6633a6f50b14f1f41ed4ce62..3ff1d8b3dfaeb875e5e70b97abb79a21f671f328 100644
|
|
--- a/src/main/java/net/minecraft/core/EnumDirection.java
|
|
+++ b/src/main/java/net/minecraft/core/EnumDirection.java
|
|
@@ -116,6 +116,7 @@ public enum EnumDirection implements INamable {
|
|
return fromType1(this.h);
|
|
}
|
|
|
|
+ public EnumDirection rotateCW() { return g(); } // Purpur - OBFHELPER
|
|
public EnumDirection g() {
|
|
switch (this) {
|
|
case NORTH:
|
|
@@ -131,6 +132,7 @@ public enum EnumDirection implements INamable {
|
|
}
|
|
}
|
|
|
|
+ public EnumDirection rotateCCW() { return h(); } // Purpur - OBFHELPER
|
|
public EnumDirection h() {
|
|
switch (this) {
|
|
case NORTH:
|
|
@@ -162,6 +164,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/core/dispenser/IDispenseBehavior.java b/src/main/java/net/minecraft/core/dispenser/IDispenseBehavior.java
|
|
index 0055a96b51a1d38d31e129c417c97bcfc9d0b745..31237773907341ee64c71507b5e1bf247ef2c524 100644
|
|
--- a/src/main/java/net/minecraft/core/dispenser/IDispenseBehavior.java
|
|
+++ b/src/main/java/net/minecraft/core/dispenser/IDispenseBehavior.java
|
|
@@ -52,6 +52,7 @@ import net.minecraft.world.level.IMaterial;
|
|
import net.minecraft.world.level.IWorldReader;
|
|
import net.minecraft.world.level.World;
|
|
import net.minecraft.world.level.block.Block;
|
|
+import net.minecraft.world.level.block.BlockAnvil;
|
|
import net.minecraft.world.level.block.BlockBeehive;
|
|
import net.minecraft.world.level.block.BlockCampfire;
|
|
import net.minecraft.world.level.block.BlockDispenser;
|
|
@@ -995,6 +996,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 b328c9f69fd43ca7ed57ee7f5b46ca998f2cb672..54b8021bfac69800d4cec996a94c2fea53249130 100644
|
|
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
|
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
|
@@ -297,8 +297,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;
|