From 5fde04fa7eb04056763689b50cd583be287fd33c Mon Sep 17 00:00:00 2001 From: William Blake Galbreath 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 ++++++ src/main/java/net/pl3x/purpur/PurpurConfig.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 ed88e208d0..0a5abd2e10 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 (net.pl3x.purpur.PurpurConfig.grindstoneBlacklistDisallowPlacement && net.pl3x.purpur.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 (net.pl3x.purpur.PurpurConfig.grindstoneBlacklistDisallowPlacement && net.pl3x.purpur.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 (net.pl3x.purpur.PurpurConfig.grindstoneBlacklistReturnsZeroExp && net.pl3x.purpur.PurpurConfig.grindstoneBlacklist.contains(itemstack.getId())) { + return 0; + } + // Purpur end int j = 0; Map 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 43e89b99b1..e538ba3991 100644 --- a/src/main/java/net/minecraft/server/ItemStack.java +++ b/src/main/java/net/minecraft/server/ItemStack.java @@ -538,6 +538,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/PurpurConfig.java b/src/main/java/net/pl3x/purpur/PurpurConfig.java index 22df3577cc..0fa7faa996 100644 --- a/src/main/java/net/pl3x/purpur/PurpurConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurConfig.java @@ -1,6 +1,7 @@ package net.pl3x.purpur; import com.google.common.base.Throwables; +import com.google.common.collect.Lists; import net.minecraft.server.Block; import net.minecraft.server.IRegistry; import net.minecraft.server.MinecraftKey; @@ -171,6 +172,17 @@ public class PurpurConfig { updatePermissionsOnWorldChange = getBoolean("settings.update-perms-on-world-change", updatePermissionsOnWorldChange); } + public static boolean grindstoneBlacklistDisallowPlacement = true; + public static boolean grindstoneBlacklistReturnsZeroExp = true; + public static List grindstoneBlacklist = Lists.newArrayList("minecraft:tripwire_hook"); + private static void grindstoneBlacklist() { + grindstoneBlacklistDisallowPlacement = getBoolean("settings.grindstone.disallow-placement", grindstoneBlacklistDisallowPlacement); + grindstoneBlacklistReturnsZeroExp = getBoolean("settings.grindstone.returns-zero-exp", grindstoneBlacklistReturnsZeroExp); + List blacklist = getList("settings.grindstone.blacklisted-items", grindstoneBlacklist); + grindstoneBlacklist.clear(); + grindstoneBlacklist.addAll(blacklist); + } + public static boolean requireShiftToMount = true; private static void requireShiftToMount() { requireShiftToMount = getBoolean("settings.mobs.require-shift-to-mount", requireShiftToMount); -- 2.24.0.rc1