Core/src/main/java/eu/univento/core/commands/AdminCommands.java

85 lines
4.0 KiB
Java

/*
* Copyright (c) 2018 univento.eu - All rights reserved
* You are not allowed to use, distribute or modify this code
*/
package eu.univento.core.commands;
import eu.univento.commons.player.rank.Rank;
import eu.univento.core.Core;
import eu.univento.core.api.camera.Traveller;
import eu.univento.core.api.command.Command;
import eu.univento.core.api.command.CommandArgs;
import eu.univento.core.api.player.CustomPlayer;
import io.vertx.core.json.JsonObject;
import org.bukkit.Location;
public class AdminCommands {
@Command(name = "setrank", description = "set the ranks of other users", rank = Rank.Admin, inGameOnly = true)
public void setRank(CommandArgs args) {
CustomPlayer p = args.getPlayer();
if(args.length() == 2) {
if(CustomPlayer.getPlayer(args.getArg(0)) != null) {
CustomPlayer target = CustomPlayer.getPlayer(args.getArg(0));
assert target != null;
Rank rank;
try {
rank = Rank.valueOf(args.getArg(1));
if(target.getDatabasePlayer().isAllowed(rank)) {
p.sendMessage("§cDieser Spieler hat diesen Rang schon oder einen höheren");
p.sendMessage("§cÄnderungen müssen in der Datenbank stattfinden");
}else {
target.getDatabasePlayer().setRank(rank);
}
}catch (IllegalArgumentException ex) {
p.sendMessage("§cDiesen Rang gibt es nicht");
}
}else args.getPlayer().sendMessage("§cDu hast keinen Spieler angegeben");
}
}
@Command(name = "camera", description = "control the camera", rank = Rank.Admin, inGameOnly = true)
public void camera(CommandArgs args) {
args.getPlayer().sendMessage("/camera add | add a new location to the route");
args.getPlayer().sendMessage("/camera create <name> <time> | create a new route");
args.getPlayer().sendMessage("/camera start <name> | start a route");
}
@Command(name = "camera.create", description = "control the camera", rank = Rank.Admin, inGameOnly = true)
public void createCameraRoute(CommandArgs args) {
if(args.length() == 2) {
if(Integer.valueOf(args.getArg(1)) != null) {
insertCameraRoute(args.getArg(0), Integer.valueOf(args.getArg(1)));
}else args.getPlayer().sendMessage("§cArgument 2 muss eine Zahl sein");
}else args.getPlayer().sendMessage("§cFalsche Anzahl an Argumenten");
}
@Command(name = "camera.add", description = "add a new location to the route", rank = Rank.Admin, inGameOnly = true)
public void addToCameraRoute(CommandArgs args) {
if(args.length() == 1) {
addToCameraRoute(args.getArg(0), args.getPlayer().getLocation());
}else args.getPlayer().sendMessage("§cFalsche Anzahl an Argumenten");
}
@Command(name = "camera.start", description = "start a route", rank = Rank.Admin, inGameOnly = true)
public void startCameraRoute(CommandArgs args) {
if(args.length() == 1) {
new Traveller(args.getPlayer(), args.getArg(0)).travel();
}else args.getPlayer().sendMessage("§cFalsche Anzahl an Argumenten");
}
private void insertCameraRoute(String name, int time) {
Core.getCommons().getDatabaseManager().getMongoDB().getClient().insert("routes", new JsonObject().put("route", name).put("time", time), event -> {
if(event.failed()) event.cause().printStackTrace();
});
}
private void addToCameraRoute(String name, Location loc) {
JsonObject json = new JsonObject().put("world", loc.getWorld().getName()).put("X", loc.getX()).put("Y", loc.getY()).put("Z", loc.getZ()).put("Yaw", loc.getYaw()).put("Pitch", loc.getPitch());
Core.getCommons().getDatabaseManager().getMongoDB().getClient().findOneAndUpdate("routes", new JsonObject().put("route", name), new JsonObject().put("locations", json), event -> {
});
}
}