Created a system to load default groups into machines

This commit is contained in:
DarkGuardsman 2013-10-26 18:55:19 -04:00
parent dbf141b7e5
commit 13ee4eb594
2 changed files with 68 additions and 31 deletions

View file

@ -17,6 +17,7 @@ import dark.api.access.ISpecialAccess;
import dark.core.interfaces.IExternalInv;
import dark.core.interfaces.IInvBox;
import dark.core.prefab.invgui.InvChest;
import dark.core.prefab.terminal.TerminalCommandRegistry;
/** Prefab for simple object who only need basic inv support and nothing more
*
@ -29,6 +30,11 @@ public class TileEntityInv extends TileEntityAdvanced implements IExternalInv, I
/** A list of user access data. */
protected List<AccessGroup> groups = new ArrayList<AccessGroup>();
public TileEntityInv()
{
TerminalCommandRegistry.loadNewGroupSet(this);
}
@Override
public IInvBox getInventory()
{

View file

@ -3,10 +3,12 @@ package dark.core.prefab.terminal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map.Entry;
import net.minecraft.entity.player.EntityPlayer;
import dark.api.ITerminal;
import dark.api.access.AccessGroup;
import dark.api.access.ISpecialAccess;
import dark.api.access.ITerminalCommand;
/** @author DarkGuardsman */
@ -15,6 +17,7 @@ public class TerminalCommandRegistry
public static final List<ITerminalCommand> COMMANDS = new ArrayList<ITerminalCommand>();
public static final List<String> nodes = new ArrayList<String>();
public static final HashMap<String, List<String>> groupDefaultNodes = new HashMap();
public static final HashMap<String, String> groupDefaultExtends = new HashMap();
static
{
@ -23,7 +26,7 @@ public class TerminalCommandRegistry
list.add("group.owner");
list.add("inv.disable");
list.add("inv.enable");
groupDefaultNodes.put("owner", list);
createDefaultGroup("owner", "admin", list);
//Admin group defaults
list.clear();
list.add("group.admin");
@ -31,53 +34,81 @@ public class TerminalCommandRegistry
list.add("inv.lock");
list.add("inv.unlock");
list.add("inv.change");
groupDefaultNodes.put("admin", list);
createDefaultGroup("admin", "user", list);
//User group defaults
list.clear();
list.add("group.user");
list.add("inv.open");
list.add("inv.take");
list.add("inv.give");
groupDefaultNodes.put("user", list);
createDefaultGroup("user", null, list);
}
/** Creates a default group for all machines to use. Only add a group if there is no option to
* really manage the group's settings
*
* @param name - group name
* @param prefabGroup - group this should extend. Make sure it exists.
* @param nodes - all commands or custom nodes */
public static void createDefaultGroup(String name, String prefabGroup, List<String> nodes)
{
if (name != null)
{
groupDefaultNodes.put(name, nodes);
groupDefaultExtends.put(name, prefabGroup);
}
}
/** Creates a default group for all machines to use. Only add a group if there is no option to
* really manage the group's settings
*
* @param name - group name
* @param prefabGroup - group this should extend. Make sure it exists.
* @param nodes - all commands or custom nodes */
public static void createDefaultGroup(String name, String prefabGroup, String... nodes)
{
List<String> nodeList = new ArrayList<String>();
if (nodes != null)
{
for (String node : nodes)
{
nodeList.add(node);
}
}
createDefaultGroup(name, prefabGroup, nodeList);
}
/** Builds a new default group list for a basic machine */
public static List<AccessGroup> createDefaultGroups()
public static List<AccessGroup> getNewGroupSet()
{
List<AccessGroup> groups = new ArrayList<AccessGroup>();
AccessGroup ownerPrefab = new AccessGroup("owner");
AccessGroup adminPrefab = new AccessGroup("admin");
AccessGroup userPrefab = new AccessGroup("user");
ownerPrefab.setToExtend(adminPrefab);
adminPrefab.setToExtend(userPrefab);
List<String> groupNodes = groupDefaultNodes.get("owner");
if (groupNodes != null)
for (Entry<String, List<String>> entry : groupDefaultNodes.entrySet())
{
for (String stra : groupNodes)
AccessGroup group = new AccessGroup(entry.getKey());
if (entry.getValue() != null)
{
ownerPrefab.addNode(stra);
for (String string : entry.getValue())
{
group.addNode(string);
}
}
}
groupNodes = groupDefaultNodes.get("admin");
if (groupNodes != null)
{
for (String stra : groupNodes)
{
adminPrefab.addNode(stra);
}
}
groupNodes = groupDefaultNodes.get("user");
if (groupNodes != null)
{
for (String stra : groupNodes)
{
userPrefab.addNode(stra);
}
}
return groups;
}
/** Builds then loaded a new default group set into the terminal */
public static void loadNewGroupSet(ISpecialAccess terminal)
{
if (terminal != null)
{
List<AccessGroup> groups = getNewGroupSet();
for (AccessGroup group : groups)
{
terminal.addGroup(group);
}
}
}
/** @param prefix - what the command starts with for example /time
* @param cmd - Cmd instance that will execute the command */
public static void register(ITerminalCommand cmd, String group)
@ -105,7 +136,7 @@ public class TerminalCommandRegistry
}
/** When a player uses a command in any CMD machine it pass threw here first
*
*
* @param terminal - The terminal, can be cast to TileEntity. */
public static boolean onCommand(EntityPlayer player, ITerminal terminal, String cmd)
{