Files
Purpur/patches/server/0048-Add-blacklist-option-for-grindstone.patch
William Blake Galbreath ed7b2022b7 Bringing back Tuinity! \o/
2020-06-20 20:40:30 -05:00

103 lines
5.0 KiB
Diff

From dcf936f4a58a869b127053dbface4407d90ba15b Mon Sep 17 00:00:00 2001
From: William Blake Galbreath <blake.galbreath@gmail.com>
Date: Thu, 1 Aug 2019 19:15:12 -0500
Subject: [PATCH] Add blacklist option for grindstone
---
.../minecraft/server/ContainerGrindstone.java | 17 +++++++++++++++++
.../java/net/minecraft/server/ItemStack.java | 6 ++++++
.../java/net/pl3x/purpur/PurpurWorldConfig.java | 12 ++++++++++++
3 files changed, 35 insertions(+)
diff --git a/src/main/java/net/minecraft/server/ContainerGrindstone.java b/src/main/java/net/minecraft/server/ContainerGrindstone.java
index ed88e208d..fcfb4abdc 100644
--- a/src/main/java/net/minecraft/server/ContainerGrindstone.java
+++ b/src/main/java/net/minecraft/server/ContainerGrindstone.java
@@ -57,12 +57,24 @@ public class ContainerGrindstone extends Container {
this.a(new Slot(this.craftInventory, 0, 49, 19) {
@Override
public boolean isAllowed(ItemStack itemstack) {
+ // Purpur start
+ if (containeraccess.getWorld().purpurConfig.grindstoneBlacklistDisallowPlacement && containeraccess.getWorld().purpurConfig.grindstoneBlacklist.contains(itemstack.getId())) {
+ getBukkitView().getTopInventory().getViewers().forEach(viewer -> ((Player) viewer).updateInventory());
+ return false;
+ }
+ // Purpur end
return itemstack.e() || itemstack.getItem() == Items.ENCHANTED_BOOK || itemstack.hasEnchantments();
}
});
this.a(new Slot(this.craftInventory, 1, 49, 40) {
@Override
public boolean isAllowed(ItemStack itemstack) {
+ // Purpur start
+ if (containeraccess.getWorld().purpurConfig.grindstoneBlacklistDisallowPlacement && containeraccess.getWorld().purpurConfig.grindstoneBlacklist.contains(itemstack.getId())) {
+ getBukkitView().getTopInventory().getViewers().forEach(viewer -> ((Player) viewer).updateInventory());
+ return false;
+ }
+ // Purpur end
return itemstack.e() || itemstack.getItem() == Items.ENCHANTED_BOOK || itemstack.hasEnchantments();
}
});
@@ -106,6 +118,11 @@ public class ContainerGrindstone extends Container {
}
private int e(ItemStack itemstack) {
+ // Purpur start
+ if (containeraccess.getWorld().purpurConfig.grindstoneBlacklistReturnsZeroExp && containeraccess.getWorld().purpurConfig.grindstoneBlacklist.contains(itemstack.getId())) {
+ return 0;
+ }
+ // Purpur end
int j = 0;
Map<Enchantment, Integer> map = EnchantmentManager.a(itemstack);
Iterator iterator = map.entrySet().iterator();
diff --git a/src/main/java/net/minecraft/server/ItemStack.java b/src/main/java/net/minecraft/server/ItemStack.java
index 8c3bbef66..d5e0578b2 100644
--- a/src/main/java/net/minecraft/server/ItemStack.java
+++ b/src/main/java/net/minecraft/server/ItemStack.java
@@ -542,6 +542,12 @@ public final class ItemStack {
return !this.e() ? this.doMaterialsMatch(itemstack) : !itemstack.isEmpty() && this.getItem() == itemstack.getItem();
}
+ // Purpur start
+ public String getId() {
+ return IRegistry.ITEM.getKey(getItem()).toString();
+ }
+ // Purpur end
+
public String j() {
return this.getItem().f(this);
}
diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
index 5318a8e32..9c60855d6 100644
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
@@ -8,6 +8,7 @@ import net.minecraft.server.MinecraftKey;
import org.bukkit.configuration.ConfigurationSection;
import org.spigotmc.SpigotWorldConfig;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -103,6 +104,17 @@ public class PurpurWorldConfig {
farmlandGetsMoistFromBelow = getBoolean("blocks.farmland.gets-moist-from-below", farmlandGetsMoistFromBelow);
}
+ public List<String> grindstoneBlacklist = new ArrayList<>();
+ public boolean grindstoneBlacklistDisallowPlacement = true;
+ public boolean grindstoneBlacklistReturnsZeroExp = true;
+ private void grindstoneBlacklist() {
+ List<String> blacklist = getList("blocks.grindstone.blacklist.blacklisted-items", grindstoneBlacklist);
+ grindstoneBlacklistDisallowPlacement = getBoolean("blocks.grindstone.blacklist.disallow-placement", grindstoneBlacklistDisallowPlacement);
+ grindstoneBlacklistReturnsZeroExp = getBoolean("blocks.grindstone.blacklist.returns-zero-exp", grindstoneBlacklistReturnsZeroExp);
+ grindstoneBlacklist.clear();
+ grindstoneBlacklist.addAll(blacklist);
+ }
+
public boolean signAllowColors = false;
public boolean signRightClickEdit = false;
private void signSettings() {
--
2.26.2