Created a system to load default groups into machines
This commit is contained in:
parent
dbf141b7e5
commit
13ee4eb594
2 changed files with 68 additions and 31 deletions
|
@ -17,6 +17,7 @@ import dark.api.access.ISpecialAccess;
|
||||||
import dark.core.interfaces.IExternalInv;
|
import dark.core.interfaces.IExternalInv;
|
||||||
import dark.core.interfaces.IInvBox;
|
import dark.core.interfaces.IInvBox;
|
||||||
import dark.core.prefab.invgui.InvChest;
|
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
|
/** 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. */
|
/** A list of user access data. */
|
||||||
protected List<AccessGroup> groups = new ArrayList<AccessGroup>();
|
protected List<AccessGroup> groups = new ArrayList<AccessGroup>();
|
||||||
|
|
||||||
|
public TileEntityInv()
|
||||||
|
{
|
||||||
|
TerminalCommandRegistry.loadNewGroupSet(this);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public IInvBox getInventory()
|
public IInvBox getInventory()
|
||||||
{
|
{
|
||||||
|
|
|
@ -3,10 +3,12 @@ package dark.core.prefab.terminal;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map.Entry;
|
||||||
|
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import dark.api.ITerminal;
|
import dark.api.ITerminal;
|
||||||
import dark.api.access.AccessGroup;
|
import dark.api.access.AccessGroup;
|
||||||
|
import dark.api.access.ISpecialAccess;
|
||||||
import dark.api.access.ITerminalCommand;
|
import dark.api.access.ITerminalCommand;
|
||||||
|
|
||||||
/** @author DarkGuardsman */
|
/** @author DarkGuardsman */
|
||||||
|
@ -15,6 +17,7 @@ public class TerminalCommandRegistry
|
||||||
public static final List<ITerminalCommand> COMMANDS = new ArrayList<ITerminalCommand>();
|
public static final List<ITerminalCommand> COMMANDS = new ArrayList<ITerminalCommand>();
|
||||||
public static final List<String> nodes = new ArrayList<String>();
|
public static final List<String> nodes = new ArrayList<String>();
|
||||||
public static final HashMap<String, List<String>> groupDefaultNodes = new HashMap();
|
public static final HashMap<String, List<String>> groupDefaultNodes = new HashMap();
|
||||||
|
public static final HashMap<String, String> groupDefaultExtends = new HashMap();
|
||||||
|
|
||||||
static
|
static
|
||||||
{
|
{
|
||||||
|
@ -23,7 +26,7 @@ public class TerminalCommandRegistry
|
||||||
list.add("group.owner");
|
list.add("group.owner");
|
||||||
list.add("inv.disable");
|
list.add("inv.disable");
|
||||||
list.add("inv.enable");
|
list.add("inv.enable");
|
||||||
groupDefaultNodes.put("owner", list);
|
createDefaultGroup("owner", "admin", list);
|
||||||
//Admin group defaults
|
//Admin group defaults
|
||||||
list.clear();
|
list.clear();
|
||||||
list.add("group.admin");
|
list.add("group.admin");
|
||||||
|
@ -31,51 +34,79 @@ public class TerminalCommandRegistry
|
||||||
list.add("inv.lock");
|
list.add("inv.lock");
|
||||||
list.add("inv.unlock");
|
list.add("inv.unlock");
|
||||||
list.add("inv.change");
|
list.add("inv.change");
|
||||||
groupDefaultNodes.put("admin", list);
|
createDefaultGroup("admin", "user", list);
|
||||||
//User group defaults
|
//User group defaults
|
||||||
list.clear();
|
list.clear();
|
||||||
list.add("group.user");
|
list.add("group.user");
|
||||||
list.add("inv.open");
|
list.add("inv.open");
|
||||||
list.add("inv.take");
|
list.add("inv.take");
|
||||||
list.add("inv.give");
|
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 */
|
/** 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>();
|
List<AccessGroup> groups = new ArrayList<AccessGroup>();
|
||||||
AccessGroup ownerPrefab = new AccessGroup("owner");
|
for (Entry<String, List<String>> entry : groupDefaultNodes.entrySet())
|
||||||
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 (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;
|
||||||
}
|
}
|
||||||
|
|
||||||
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 prefix - what the command starts with for example /time
|
||||||
|
|
Loading…
Reference in a new issue