From 6577cbf62858c9658ff442b647c4bc2ae5a3e3ed Mon Sep 17 00:00:00 2001 From: Sn0wStorm Date: Wed, 27 Nov 2019 13:52:19 +0100 Subject: [PATCH] Added Barrel Check for GamemodeInventories --- resources/config/v13/de/config.yml | 1 + resources/config/v13/en/config.yml | 1 + src/com/dre/brewery/Barrel.java | 1 - src/com/dre/brewery/filedata/BConfig.java | 2 ++ .../integration/IntegrationListener.java | 35 +++++++++++++++++-- 5 files changed, 37 insertions(+), 3 deletions(-) diff --git a/resources/config/v13/de/config.yml b/resources/config/v13/de/config.yml index be39ba1..cbd5763 100644 --- a/resources/config/v13/de/config.yml +++ b/resources/config/v13/de/config.yml @@ -409,6 +409,7 @@ recipes: useWorldGuard: true useLWC: true useGriefPrevention: true +useGMInventories: true # Änderungen an Fassinventaren mit LogBlock aufzeichen [true] useLogBlock: true diff --git a/resources/config/v13/en/config.yml b/resources/config/v13/en/config.yml index 2704767..5717cce 100644 --- a/resources/config/v13/en/config.yml +++ b/resources/config/v13/en/config.yml @@ -411,6 +411,7 @@ recipes: useWorldGuard: true useLWC: true useGriefPrevention: true +useGMInventories: true # Enable the Logging of Barrel Inventories to LogBlock [true] useLogBlock: true diff --git a/src/com/dre/brewery/Barrel.java b/src/com/dre/brewery/Barrel.java index a25468d..caf3314 100644 --- a/src/com/dre/brewery/Barrel.java +++ b/src/com/dre/brewery/Barrel.java @@ -119,7 +119,6 @@ public class Barrel implements InventoryHolder { // Listened to by WGBarrel7, WGBarrelNew, WGBarrelOld, GriefPreventionBarrel (IntegrationListener) P.p.getServer().getPluginManager().callEvent(accessEvent); if (accessEvent.isCancelled()) { - P.p.msg(player, P.p.languageReader.get("Error_NoBarrelAccess")); return false; } diff --git a/src/com/dre/brewery/filedata/BConfig.java b/src/com/dre/brewery/filedata/BConfig.java index e63def2..3c698dd 100644 --- a/src/com/dre/brewery/filedata/BConfig.java +++ b/src/com/dre/brewery/filedata/BConfig.java @@ -48,6 +48,7 @@ public class BConfig { public static boolean useGP; //GriefPrevention public static boolean hasVault; // Vault public static boolean useCitadel; // CivCraft/DevotedMC Citadel + public static boolean useGMInventories; // GamemodeInventories public static Boolean hasSlimefun = null; // Slimefun ; Null if not checked public static Boolean hasMMOItems = null; // MMOItems ; Null if not checked @@ -194,6 +195,7 @@ public class BConfig { useLWC = config.getBoolean("useLWC", true) && plMan.isPluginEnabled("LWC"); useGP = config.getBoolean("useGriefPrevention", true) && plMan.isPluginEnabled("GriefPrevention"); useLB = config.getBoolean("useLogBlock", false) && plMan.isPluginEnabled("LogBlock"); + useGMInventories = config.getBoolean("useGMInventories", false); useCitadel = config.getBoolean("useCitadel", false) && plMan.isPluginEnabled("Citadel"); // The item util has been removed in Vault 1.7+ hasVault = plMan.isPluginEnabled("Vault") diff --git a/src/com/dre/brewery/integration/IntegrationListener.java b/src/com/dre/brewery/integration/IntegrationListener.java index 7b77de1..c4c8a19 100644 --- a/src/com/dre/brewery/integration/IntegrationListener.java +++ b/src/com/dre/brewery/integration/IntegrationListener.java @@ -15,6 +15,7 @@ import com.dre.brewery.recipe.RecipeItem; import com.dre.brewery.utility.LegacyUtil; import net.Indyuce.mmoitems.MMOItems; import net.Indyuce.mmoitems.api.item.NBTItem; +import org.bukkit.GameMode; import org.bukkit.Material; import org.bukkit.block.Block; import org.bukkit.entity.Player; @@ -37,6 +38,7 @@ public class IntegrationListener implements Listener { try { if (!BConfig.wg.checkAccess(event.getPlayer(), event.getSpigot(), plugin)) { event.setCancelled(true); + P.p.msg(event.getPlayer(), P.p.languageReader.get("Error_NoBarrelAccess")); } } catch (Throwable e) { event.setCancelled(true); @@ -58,10 +60,37 @@ public class IntegrationListener implements Listener { @EventHandler(priority = EventPriority.LOW, ignoreCancelled = true) public void onBarrelAccess(BarrelAccessEvent event) { + if (BConfig.useGMInventories) { + Plugin pl = P.p.getServer().getPluginManager().getPlugin("GameModeInventories"); + if (pl != null && pl.isEnabled()) { + try { + if (pl.getConfig().getBoolean("restrict_creative")) { + Player player = event.getPlayer(); + if (player.getGameMode() == GameMode.CREATIVE) { + if (!pl.getConfig().getBoolean("bypass.inventories") || (!player.hasPermission("gamemodeinventories.bypass") && !player.isOp())) { + event.setCancelled(true); + if (!pl.getConfig().getBoolean("dont_spam_chat")) { + P.p.msg(event.getPlayer(), P.p.languageReader.get("Error_NoBarrelAccess")); + } + return; + } + } + } + } catch (Throwable e) { + P.p.errorLog("Failed to Check GameModeInventories for Barrel Open Permissions!"); + P.p.errorLog("Players will be able to open Barrel with GameMode Creative"); + e.printStackTrace(); + BConfig.useGMInventories = false; + } + } else { + BConfig.useGMInventories = false; + } + } if (BConfig.useGP) { if (P.p.getServer().getPluginManager().isPluginEnabled("GriefPrevention")) { try { if (!GriefPreventionBarrel.checkAccess(event)) { + P.p.msg(event.getPlayer(), P.p.languageReader.get("Error_NoBarrelAccess")); event.setCancelled(true); return; } @@ -94,9 +123,11 @@ public class IntegrationListener implements Listener { Player player = event.getPlayer(); try { if (!LWCBarrel.checkAccess(player, sign, plugin)) { + P.p.msg(event.getPlayer(), P.p.languageReader.get("Error_NoBarrelAccess")); event.setCancelled(true); } } catch (Throwable e) { + event.setCancelled(true); P.p.errorLog("Failed to Check LWC for Barrel Open Permissions!"); P.p.errorLog("Brewery was tested with version 4.5.0 of LWC!"); P.p.errorLog("Disable the LWC support in the config and do /brew reload"); @@ -105,7 +136,7 @@ public class IntegrationListener implements Listener { P.p.msg(player, "&cLWC check Error, Brewery was tested with up to v4.5.0 of LWC"); P.p.msg(player, "&cSet &7useLWC: false &cin the config and /brew reload"); } else { - P.p.msg(player, "&cError breaking Barrel, please report to an Admin!"); + P.p.msg(player, "&cError opening Barrel, please report to an Admin!"); } } } @@ -134,7 +165,7 @@ public class IntegrationListener implements Listener { P.p.msg(player, "&cLWC check Error, Brewery was tested with up to v4.5.0 of LWC"); P.p.msg(player, "&cSet &7useLWC: false &cin the config and /brew reload"); } else { - P.p.msg(player, "&cError opening Barrel, please report to an Admin!"); + P.p.msg(player, "&cError breaking Barrel, please report to an Admin!"); } } } else {