package de.jaschastarke.minecraft.limitedcreative.cmdblocker; import org.bukkit.configuration.ConfigurationSection; import de.jaschastarke.bukkit.lib.configuration.Configuration; import de.jaschastarke.bukkit.lib.configuration.ConfigurationContainer; import de.jaschastarke.configuration.IConfigurationNode; import de.jaschastarke.configuration.IConfigurationSubGroup; import de.jaschastarke.configuration.InvalidValueException; import de.jaschastarke.configuration.annotations.IsConfigurationNode; import de.jaschastarke.maven.ArchiveDocComments; import de.jaschastarke.maven.PluginConfigurations; import de.jaschastarke.minecraft.limitedcreative.Config; import de.jaschastarke.minecraft.limitedcreative.ModCmdBlocker; import de.jaschastarke.modularize.IModule; import de.jaschastarke.modularize.ModuleEntry; /** * CommandBlocker-Feature * * http://dev.bukkit.org/server-mods/limited-creative/pages/features/command-blocker/ */ @ArchiveDocComments @PluginConfigurations(parent = Config.class) public class CmdBlockerConfig extends Configuration implements IConfigurationSubGroup { private CmdBlockList blockList; protected ModCmdBlocker mod; protected ModuleEntry<IModule> entry; public CmdBlockerConfig(ConfigurationContainer container) { super(container); } public CmdBlockerConfig(ModCmdBlocker modCmdBlocker, ModuleEntry<IModule> modEntry) { super(modCmdBlocker.getPlugin().getDocCommentStorage()); mod = modCmdBlocker; entry = modEntry; } @Override public void setValues(ConfigurationSection sect) { blockList = null; super.setValues(sect); entry.setDefaultEnabled(getEnabled()); } @Override public void setValue(IConfigurationNode node, Object pValue) throws InvalidValueException { super.setValue(node, pValue); if (node.getName().equals("enabled")) { entry.setEnabled(getEnabled()); } } @Override public String getName() { return "cmdblock"; } @Override public int getOrder() { return 500; } /** * CmdBlockerEnabled * * Enables the feature for blocking certain commands in creative mode. * * default: true */ @IsConfigurationNode(order = 100) public boolean getEnabled() { return config.getBoolean("enabled", true); } /** * CmdBlockerList * * Defines the list of commands that are blocked while in creative mode. The leading / isn't included. By default * the list-item is treated as simple string as typed in by the user after the /. All commands starting with * this string are blocked, even if more parameteres are entered by the user. * If the first character is ^ the entry is interpreted as a regular expression (including the ^ for begin of the string). * Only use regular expressions if you know them! * * Examples: * - home * - give diamond * - ^home .+ * - ^chest (one|two|three) * - ^(lc|limitedcreative) s(urvival)?\s*$ * * default: [] */ @IsConfigurationNode(order = 200, name = "commands") public CmdBlockList getCommandBlockList() { if (blockList == null) { blockList = new CmdBlockList(); if (config.contains("commands") && config.isList("commands")) { for (Object e : config.getList("commands")) { try { blockList.addSetting(e.toString()); } catch (InvalidValueException e1) { mod.getLog().warn(e1.getMessage()); } } } } return blockList; } }