Files
Purpur/patches/server/0048-Add-blacklist-option-for-grindstone.patch
William Blake Galbreath 05a85435d2 Updated Upstream (Paper)
Upstream has released updates that appears to apply and compile correctly

Paper Changes:
70df8f27 Add PrepareGrindstoneEvent
24b2f54b Fix Player skulls for offline mode servers
ce270e14 Updated Upstream (Bukkit/CraftBukkit/Spigot)
c4ada0e1 Fix many chunk loading issues
37b244b5 Fix not running level updates for light if no pre/post task
e6142995 Add and implement PlayerRecipeBookClickEvent (#3351)
9bb4e930 Fix piston dupe patch creating ghost blocks (#3603)
2020-06-23 14:20:44 -05:00

103 lines
5.0 KiB
Diff

From 5de138cbdf306a02f264c50f32f22c6864d001f1 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 83cb0cd64..2a849d0ec 100644
--- a/src/main/java/net/minecraft/server/ContainerGrindstone.java
+++ b/src/main/java/net/minecraft/server/ContainerGrindstone.java
@@ -61,12 +61,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();
}
});
@@ -110,6 +122,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