package me.desht.scrollingmenusign; import me.desht.scrollingmenusign.util.SMSUtil; import org.bukkit.configuration.Configuration; import org.bukkit.inventory.ItemStack; import java.util.regex.Matcher; /** * Cache some config values which are accessed very frequently, to reduce * lookup/parsing overheads. */ public class ConfigCache { private String prefixSelected; private String prefixNotSelected; private boolean physicsProtected; private boolean breakProtected; private String submenuBackLabel; private ItemStack submenuBackIcon; private String submenuTitlePrefix; private ItemStack defaultInventoryViewIcon; private String fallbackUserVarSub; public void processConfig(Configuration conf) { setPrefixSelected(conf.getString("sms.item_prefix.selected")); setPrefixNotSelected(conf.getString("sms.item_prefix.not_selected")); setPhysicsProtected(conf.getBoolean("sms.no_physics")); setBreakProtected(conf.getBoolean("sms.no_destroy_signs")); setSubmenuBackLabel(conf.getString("sms.submenus.back_item.label")); setSubmenuBackIcon(conf.getString("sms.submenus.back_item.material")); setSubmenuTitlePrefix(conf.getString("sms.submenus.title_prefix")); setDefaultInventoryViewIcon(conf.getString("sms.inv_view.default_icon")); setFallbackUserVarSub(conf.getString("sms.user_variables.fallback_sub")); } public String getPrefixSelected() { return prefixSelected; } public void setPrefixSelected(String prefixSelected) { this.prefixSelected = SMSUtil.unEscape(prefixSelected.replace("%", "%%")); } public String getPrefixNotSelected() { return prefixNotSelected; } public void setPrefixNotSelected(String prefixNotSelected) { this.prefixNotSelected = SMSUtil.unEscape(prefixNotSelected.replace("%", "%%")); } public boolean isPhysicsProtected() { return physicsProtected; } public void setPhysicsProtected(boolean physicsProtected) { this.physicsProtected = physicsProtected; } public boolean isBreakProtected() { return breakProtected; } public void setBreakProtected(boolean breakProtected) { this.breakProtected = breakProtected; } public String getSubmenuBackLabel() { return submenuBackLabel; } public void setSubmenuBackLabel(String submenuBackLabel) { this.submenuBackLabel = SMSUtil.unEscape(submenuBackLabel); } public ItemStack getSubmenuBackIcon() { return submenuBackIcon; } public void setSubmenuBackIcon(String submenuBackIcon) { this.submenuBackIcon = SMSUtil.parseMaterialSpec(submenuBackIcon); } public String getSubmenuTitlePrefix() { return submenuTitlePrefix; } public void setSubmenuTitlePrefix(String submenuTitlePrefix) { this.submenuTitlePrefix = SMSUtil.unEscape(submenuTitlePrefix); } public ItemStack getDefaultInventoryViewIcon() { return defaultInventoryViewIcon; } public void setDefaultInventoryViewIcon(String defaultInventoryViewIcon) { this.defaultInventoryViewIcon = SMSUtil.parseMaterialSpec(defaultInventoryViewIcon); } public String getFallbackUserVarSub() { return fallbackUserVarSub; } public void setFallbackUserVarSub(String fallbackUserVarSub) { this.fallbackUserVarSub = Matcher.quoteReplacement(fallbackUserVarSub); } }