From e388bf01f153da726be9f48205f5914971835b01 Mon Sep 17 00:00:00 2001 From: Poslovitch Date: Thu, 22 Jun 2017 22:16:22 +0200 Subject: [PATCH] Added a State enum for SlimefunItem Related to https://github.com/TheBusyBiscuit/Slimefun4/pull/337, https://github.com/TheBusyBiscuit/Slimefun4/issues/231 --- .../Objects/SlimefunItem/SlimefunItem.java | 50 +++++++++++++------ .../mrCookieSlime/Slimefun/api/Slimefun.java | 8 +-- 2 files changed, 38 insertions(+), 20 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java index 2ae69d196..17e17b80e 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java @@ -64,6 +64,14 @@ public class SlimefunItem { EnergyTicker energy; public String hash; + State state; + + public enum State { + ENABLED, + DISABLED, + VANILLA; + } + int month = -1; public int getMonth() { @@ -97,7 +105,6 @@ public class SlimefunItem { this.replacing = false; this.enchantable = true; this.disenchantable = true; - itemhandlers = new HashSet(); urid = URID.nextURID(this, false); @@ -206,6 +213,9 @@ public class SlimefunItem { } else if (SlimefunStartup.getItemCfg().getBoolean(this.name + ".enabled")) { if (!Category.list().contains(category)) category.register(); + + this.state = State.ENABLED; + this.replacing = SlimefunStartup.getItemCfg().getBoolean(this.name + ".can-be-used-in-workbenches"); this.enchantable = SlimefunStartup.getItemCfg().getBoolean(this.name + ".allow-enchanting"); this.disenchantable = SlimefunStartup.getItemCfg().getBoolean(this.name + ".allow-disenchanting"); @@ -220,6 +230,9 @@ public class SlimefunItem { } if (SlimefunStartup.getCfg().getBoolean("options.print-out-loading")) System.out.println("[Slimefun] Loaded Item \"" + this.getName() + "\""); + } else if (!SlimefunStartup.getItemCfg().getBoolean(this.name + ".enabled")) { + if (this instanceof VanillaItem) this.state = State.VANILLA; + else this.state = State.DISABLED; } } catch(Exception x) { System.err.println("[Slimefun] Item Registration failed: " + this.name); @@ -305,25 +318,30 @@ public class SlimefunItem { } } + public static State getState(ItemStack item) { + for (SlimefunItem i: all) { + if (i.isItem(item)) { + return i.getState(); + } + } + return State.DISABLED; + } + public static boolean isDisabled(ItemStack item) { - boolean contains1 = false; - boolean contains2 = false; - - for (SlimefunItem i: all) { + for (SlimefunItem i: all) { if (i.isItem(item)) { - contains1 = true; - break; + return i.isDisabled(); } } - - for (SlimefunItem i: items) { - if (i.isItem(item)) { - contains2 = true; - break; - } - } - - return contains1 && !contains2; + return false; + } + + public State getState(){ + return state; + } + + public boolean isDisabled(){ + return state != State.ENABLED; } public void install() {} diff --git a/src/me/mrCookieSlime/Slimefun/api/Slimefun.java b/src/me/mrCookieSlime/Slimefun/api/Slimefun.java index aff65f668..76e117926 100644 --- a/src/me/mrCookieSlime/Slimefun/api/Slimefun.java +++ b/src/me/mrCookieSlime/Slimefun/api/Slimefun.java @@ -15,7 +15,7 @@ import me.mrCookieSlime.Slimefun.GPS.GPSNetwork; import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.Research; import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem; -import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.VanillaItem; +import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem.State; import me.mrCookieSlime.Slimefun.Setup.Messages; public class Slimefun { @@ -62,7 +62,7 @@ public class Slimefun { SlimefunItem sfItem = SlimefunItem.getByItem(item); if (sfItem == null) { if (SlimefunItem.isDisabled(item)) { - if (message && !(sfItem instanceof VanillaItem)) Messages.local.sendTranslation(p, "messages.disabled-item", true); + if (message && SlimefunItem.getState(item).equals(State.DISABLED)) Messages.local.sendTranslation(p, "messages.disabled-item", true); return false; } else return true; @@ -71,7 +71,7 @@ public class Slimefun { if (sfItem.getResearch() == null) return true; else if (sfItem.getResearch().hasUnlocked(p)) return true; else { - if (message && !(sfItem instanceof VanillaItem)) Messages.local.sendTranslation(p, "messages.not-researched", true); + if (message && sfItem.getState().equals(State.DISABLED)) Messages.local.sendTranslation(p, "messages.not-researched", true); return false; } } @@ -83,7 +83,7 @@ public class Slimefun { if (sfItem.getResearch() == null) return true; else if (sfItem.getResearch().hasUnlocked(p)) return true; else { - if (message && !(sfItem instanceof VanillaItem)) Messages.local.sendTranslation(p, "messages.not-researched", true); + if (message && sfItem.getState().equals(State.DISABLED)) Messages.local.sendTranslation(p, "messages.not-researched", true); return false; } }