add permissions to commands

This commit is contained in:
dfsek 2021-12-19 22:43:12 -07:00
parent cfc7960c70
commit 30b02a03c4

View File

@ -45,6 +45,7 @@ public class InternalAddon implements BaseAddon {
CommandManager<CommandSender> manager = event.getCommandManager(); CommandManager<CommandSender> manager = event.getCommandManager();
manager.command( manager.command(
manager.commandBuilder("addons", ArgumentDescription.of("List installed Terra addons")) manager.commandBuilder("addons", ArgumentDescription.of("List installed Terra addons"))
.permission("terra.addons")
.handler(context -> { .handler(context -> {
StringBuilder addons = new StringBuilder("Installed addons:\n"); StringBuilder addons = new StringBuilder("Installed addons:\n");
platform.getAddons() platform.getAddons()
@ -60,6 +61,7 @@ public class InternalAddon implements BaseAddon {
.command( .command(
manager.commandBuilder("addons") manager.commandBuilder("addons")
.argument(RegistryArgument.of("addon", platform.getAddons())) .argument(RegistryArgument.of("addon", platform.getAddons()))
.permission("terra.addons.info")
.handler(context -> { .handler(context -> {
BaseAddon addon = context.get("addon"); BaseAddon addon = context.get("addon");
StringBuilder addonInfo = new StringBuilder("Addon ").append(addon.getID()).append('\n'); StringBuilder addonInfo = new StringBuilder("Addon ").append(addon.getID()).append('\n');
@ -76,75 +78,93 @@ public class InternalAddon implements BaseAddon {
context.getSender().sendMessage(addonInfo.toString()); context.getSender().sendMessage(addonInfo.toString());
}) })
) )
.command(manager.commandBuilder("packs", ArgumentDescription.of("List installed config packs")) .command(
.handler(context -> { manager.commandBuilder("packs", ArgumentDescription.of("List installed config packs"))
StringBuilder packs = new StringBuilder("Installed packs:\n"); .permission("terra.packs")
platform.getConfigRegistry().forEach(pack -> packs.append(" - ") .handler(context -> {
.append(pack.getID()) StringBuilder packs = new StringBuilder("Installed packs:\n");
.append('@') platform.getConfigRegistry().forEach(pack -> packs.append(" - ")
.append(pack.getVersion().getFormatted())); .append(pack.getID())
context.getSender().sendMessage(packs.toString()); .append('@')
}) .append(pack.getVersion().getFormatted()));
context.getSender().sendMessage(packs.toString());
})
) )
.command(manager.commandBuilder("packs") .command(
.literal("info", ArgumentDescription.of("Get information about a pack")) manager.commandBuilder("packs")
.argument(RegistryArgument.of("pack", platform.getConfigRegistry())) .literal("info", ArgumentDescription.of("Get information about a pack"))
.handler(context -> { .permission("terra.packs.info")
ConfigPack pack = context.get("pack"); .argument(RegistryArgument.of("pack", platform.getConfigRegistry()))
StringBuilder packInfo = new StringBuilder("Pack ").append(pack.getID()).append('\n'); .handler(context -> {
ConfigPack pack = context.get("pack");
packInfo.append("Version: ").append(pack.getVersion().getFormatted()).append('\n'); StringBuilder packInfo = new StringBuilder("Pack ").append(pack.getID()).append('\n');
packInfo.append("Author: ").append(pack.getAuthor()).append('\n');
packInfo.append("Version: ").append(pack.getVersion().getFormatted()).append('\n');
packInfo.append("Addon Dependencies:\n"); packInfo.append("Author: ").append(pack.getAuthor()).append('\n');
pack.addons().forEach((id, versions) -> packInfo
.append(" - ") packInfo.append("Addon Dependencies:\n");
.append(id.getID()) pack.addons().forEach((id, versions) -> packInfo
.append('@') .append(" - ")
.append(versions.getFormatted()) .append(id.getID())
.append('\n')); .append('@')
context.getSender().sendMessage(packInfo.toString()); .append(versions.getFormatted())
})) .append('\n'));
.command(manager.commandBuilder("packs") context.getSender().sendMessage(packInfo.toString());
.literal("reload", ArgumentDescription.of("Reload config packs")) }))
.handler(context -> { .command(
context.getSender().sendMessage("Reloading Terra..."); manager.commandBuilder("packs")
logger.info("Reloading Terra..."); .literal("reload", ArgumentDescription.of("Reload config packs"))
if(platform.reload()) { .permission("terra.packs.reload")
logger.info("Terra reloaded successfully."); .handler(context -> {
context.getSender().sendMessage("Terra reloaded successfully."); context.getSender().sendMessage("Reloading Terra...");
} else { logger.info("Reloading Terra...");
logger.error("Terra failed to reload."); if(platform.reload()) {
context.getSender().sendMessage("Terra failed to reload. See logs for more information."); logger.info("Terra reloaded successfully.");
} context.getSender().sendMessage("Terra reloaded successfully.");
})) } else {
.command(manager.commandBuilder("profiler", ArgumentDescription.of("Access the profiler")) logger.error("Terra failed to reload.");
.literal("start", ArgumentDescription.of("Start profiling"), "st") context.getSender().sendMessage(
.handler(context -> { "Terra failed to reload. See logs for more information.");
platform.getProfiler().start(); }
context.getSender().sendMessage("Profiling started."); }))
})) .command(
.command(manager.commandBuilder("profiler", ArgumentDescription.of("Access the profiler")) manager.commandBuilder("profiler", ArgumentDescription.of("Access the profiler"))
.literal("stop", ArgumentDescription.of("Stop profiling"), "s") .literal("start", ArgumentDescription.of("Start profiling"), "st")
.handler(context -> { .permission("terra.profiler.start")
platform.getProfiler().stop(); .handler(context -> {
context.getSender().sendMessage("Profiling stopped."); platform.getProfiler().start();
})) context.getSender().sendMessage("Profiling started.");
.command(manager.commandBuilder("profiler", ArgumentDescription.of("Access the profiler")) }))
.literal("query", ArgumentDescription.of("Query profiler results"), "q") .command(
.handler(context -> { manager.commandBuilder("profiler", ArgumentDescription.of("Access the profiler"))
StringBuilder data = new StringBuilder("Terra Profiler data: \n"); .literal("stop", ArgumentDescription.of("Stop profiling"), "s")
platform.getProfiler().getTimings().forEach((id, timings) -> data.append(id).append(": ").append(timings.toString()).append('\n')); .permission("terra.profiler.stop")
logger.info(data.toString()); .handler(context -> {
context.getSender().sendMessage("Profiling data dumped to console."); platform.getProfiler().stop();
})) context.getSender().sendMessage("Profiling stopped.");
.command(manager.commandBuilder("profiler", ArgumentDescription.of("Access the profiler")) }))
.literal("reset", ArgumentDescription.of("Reset the profiler"), "r") .command(
.handler(context -> { manager.commandBuilder("profiler", ArgumentDescription.of("Access the profiler"))
platform.getProfiler().reset(); .literal("query", ArgumentDescription.of("Query profiler results"), "q")
context.getSender().sendMessage("Profiler reset."); .permission("terra.profiler.query")
})) .handler(context -> {
; StringBuilder data = new StringBuilder("Terra Profiler data: \n");
platform.getProfiler().getTimings().forEach((id, timings) -> data.append(id)
.append(": ")
.append(timings.toString())
.append('\n'));
logger.info(data.toString());
context.getSender().sendMessage("Profiling data dumped to console.");
}))
.command(
manager.commandBuilder("profiler", ArgumentDescription.of("Access the profiler"))
.literal("reset", ArgumentDescription.of("Reset the profiler"), "r")
.permission("terra.profiler.reset")
.handler(context -> {
platform.getProfiler().reset();
context.getSender().sendMessage("Profiler reset.");
}))
;
}); });