Newer
Older
ultramine_permissions / src / main / java / org / ultramine / permission / commands / BasicPermissionCommands.java
@vlad20012 vlad20012 on 2 May 2017 4 KB Initial commit
package org.ultramine.permission.commands;

import org.ultramine.commands.Command;
import org.ultramine.commands.CommandContext;
import org.ultramine.core.service.InjectService;
import org.ultramine.permission.IPermissionManager;

public class BasicPermissionCommands
{
	@InjectService
	private static IPermissionManager perms;

	@Command(
			name = "pconfig",
			group = "permissions",
			aliases = {"permissions", "pcfg"},
			permissions = {"permissions.admin"},
			syntax = {"[save reload]"}
	)
	public static void pcofnig(CommandContext ctx)
	{
		if (ctx.actionIs("save"))
		{
			perms.save();
			ctx.notifyAdmins("command.pconfig.success.save");
		}
		else
		{
			perms.reload();
			ctx.notifyAdmins("command.pconfig.success.reload");
		}
	}

	@Command(
			name = "puser",
			group = "permissions",
			permissions = {"permissions.admin.user"},
			syntax = {
					"<player> [group setgroup] <group>",
					"<player> [add remove] <permission>...",
					"<player> [meta] <pmeta> <%value>",
					"<world> <player> [add remove] <permission>...",
					"<world> <player> [meta] <pmeta> <%value>"
			}
	)
	public static void puser(CommandContext ctx)
	{
		String player = ctx.get("player").asString();
		String world = ctx.contains("world")
				? ctx.get("world").asWorld().getWorldInfo().getWorldName()
				: IPermissionManager.GLOBAL_WORLD;

		ctx.checkSenderPermissionInWorld(world, "permissions.admin.world");

		if (ctx.actionIs("group") || ctx.actionIs("setgroup"))
		{
			perms.setUserGroup(player, ctx.get("group").asString());
			ctx.sendMessage("command.puser.success.group", player, ctx.get("group").asString());
		}
		else if (ctx.actionIs("add"))
		{
			for (CommandContext.Argument arg : ctx.get("permission").asArray())
			{
				perms.add(world, player, arg.asString());
				ctx.sendMessage("command.puser.success.add", arg.asString(), player, world);
			}
		}
		else if (ctx.actionIs("remove"))
		{
			for (CommandContext.Argument arg : ctx.get("permission").asArray())
			{
				perms.remove(world, player, arg.asString());
				ctx.sendMessage("command.puser.success.remove", arg.asString(), player, world);
			}
		}
		else
		{
			String key = ctx.get("pmeta").asString();
			String value = ctx.get("value").asString();

			perms.setMeta(world, player, key, value);
			ctx.sendMessage("command.puser.success.meta", key, value, player, world);
		}

		perms.save();
	}


	@Command(
			name = "pmixin",
			group = "permissions",
			permissions = {"permissions.admin.mixin"},
			syntax = {
					"<mixin> [add remove] <permission>...",
					"<mixin> [meta] <pmeta> <%value>"
			}
	)
	public static void pmixin(CommandContext ctx)
	{
		String mixin = ctx.get("mixin").asString();

		if (ctx.actionIs("add"))
		{
			for (CommandContext.Argument arg : ctx.get("permission").asArray())
			{
				perms.addToMixin(mixin, arg.asString());
				ctx.sendMessage("command.pmixin.success.add", arg.asString(), mixin);
			}
		}
		else if (ctx.actionIs("remove"))
		{
			for (CommandContext.Argument arg : ctx.get("permission").asArray())
			{
				perms.removeFromMixin(mixin, arg.asString());
				ctx.sendMessage("command.pmixin.success.remove", arg.asString(), mixin);
			}
		}
		else
		{
			String key = ctx.get("key").asString();
			String value = ctx.get("value").asString();
			perms.setMixinMeta(mixin, key, value);
			ctx.sendMessage("command.pmixin.success.meta", key, value, mixin);
		}

		perms.save();
	}
	
	@Command(
			name = "pgroup",
			group = "permissions",
			permissions = {"permissions.admin.group"},
			syntax = {
					"<group> [parent setparent] <group%parent>",
					"<group> [add remove] <permission>...",
					"<group> [meta] <pmeta> <%value>",
					"<group> <world> [add remove] <permission>...",
					"<group> <world> [meta] <pmeta> <%value>"
			}
	)
	public static void pgroup(CommandContext ctx)
	{
		String group = ctx.get("group").asString();
		String world = ctx.contains("world")
				? ctx.getServer().getMultiWorld().getNameByID(ctx.get("world").asWorld().provider.dimensionId)
				: IPermissionManager.GLOBAL_WORLD;

		if (ctx.actionIs("parent") || ctx.actionIs("setparent"))
		{
			perms.setUserGroup(group, ctx.get("parent").asString());
			ctx.sendMessage("command.pgroup.success.parent", ctx.get("parent").asString(), group);
		}
		if (ctx.actionIs("add"))
		{
			for (CommandContext.Argument arg : ctx.get("permission").asArray())
			{
				perms.addToGroup(group, world, arg.asString());
				ctx.sendMessage("command.pgroup.success.add", arg.asString(), group);
			}
		}
		else if (ctx.actionIs("remove"))
		{
			for (CommandContext.Argument arg : ctx.get("permission").asArray())
			{
				perms.removeFromGroup(group, world, arg.asString());
				ctx.sendMessage("command.pgroup.success.remove", arg.asString(), group);
			}
		}
		else
		{
			String key = ctx.get("key").asString();
			String value = ctx.get("value").asString();
			perms.setGroupMeta(group, world, key, value);
			ctx.sendMessage("command.pgroup.success.meta", key, value, group);
		}

		perms.save();
	}
}