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

105 lines
4.5 KiB
Java

/*
* Copyright (c) 2017 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.command.Command;
import eu.univento.core.api.command.CommandArgs;
import eu.univento.core.api.command.Completer;
import eu.univento.core.api.player.CustomPlayer;
import eu.univento.core.api.server.ServerSettings;
import org.bukkit.Bukkit;
import org.bukkit.GameMode;
import org.bukkit.Location;
import org.bukkit.craftbukkit.v1_12_R1.entity.CraftEntity;
import org.bukkit.entity.ArmorStand;
import org.bukkit.scheduler.BukkitRunnable;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author joethei
* @version 1.0
*/
public class DevCommands {
private ArrayList<CustomPlayer> trolledPlayers = new ArrayList<>();
@Command(name = "runas", description = "run commands as other players", usage = "runas", rank = Rank.SrDeveloper, inGameOnly = true)
public void runAs(CommandArgs args) {
if (args.length() >= 2) {
CustomPlayer t = CustomPlayer.getPlayer(args.getArg(0));
if (t != null) {
StringBuilder msg = new StringBuilder();
for (int i = 1; i < args.length(); i++) {
msg.append(args.getArg(i)).append(" ");
}
t.chat(msg.toString());
}
}
}
@Completer(name = "runas")
public List<String> runAsCompleter(CommandArgs args) {
return Core.getOnlinePlayers().stream().map(CustomPlayer::getDisplayName).collect(Collectors.toList());
}
@Command(name = "systeminfo", description = "some infos about the system", usage = "/systeminfo", rank = Rank.JrDeveloper, inGameOnly = true)
public void systemInfo(CommandArgs args) {
CustomPlayer p = args.getPlayer();
Runtime run = Runtime.getRuntime();
p.sendMessage("§6§l===SystemInfo <" + Bukkit.getServerName() + ">===");
try {
p.sendMessage("§6Server: " + InetAddress.getLocalHost().getHostName());
} catch (UnknownHostException e) {
e.printStackTrace();
}
p.sendMessage("§6TPS: " + Bukkit.getTPS()[0]);
p.sendMessage("§6Spigot version: " + Bukkit.getVersion());
p.sendMessage("§6Java version: " + System.getProperty("java.version"));
p.sendMessage("§6used memory: " + (run.totalMemory() - run.freeMemory() / 1048576L) + " MB");
p.sendMessage("§6free memory: " + run.freeMemory() / 1048576L + " MB");
p.sendMessage("§6total memory: " + run.maxMemory() / 1048576L + " MB");
}
@Command(name = "troll", description = "troll other players", usage = "/troll <Troll to execute> <player>", rank = Rank.SrDeveloper, inGameOnly = true)
public void troll(CommandArgs args) {
args.getPlayer().sendMessage("§eavailable trolls: flip");
}
@Command(name = "troll.flip", description = "flip other players around", usage = "/troll flip <player>", rank = Rank.SrDeveloper, inGameOnly = true)
public void trollFlip(CommandArgs args) {
if (args.length() == 3) {
CustomPlayer t = CustomPlayer.getPlayer(args.getArg(2));
if (t != null && t != args.getPlayer()) {
if(trolledPlayers.contains(t)) {
t.getSpectatorTarget().remove();
t.setGameMode(ServerSettings.getGameMode());
trolledPlayers.remove(t);
}else {
trolledPlayers.add(t);
ArmorStand armorStand = t.getWorld().spawn(t.getLocation(), ArmorStand.class);
Location armorStandLocation = armorStand.getLocation();
t.setGameMode(GameMode.SPECTATOR);
t.setSpectatorTarget(armorStand);
new BukkitRunnable() {
public void run() {
armorStandLocation.setPitch(armorStandLocation.getPitch() + 0.5F);
armorStandLocation.setYaw(armorStandLocation.getYaw() - 0.5F);
((CraftEntity) armorStand).getHandle().setPositionRotation(armorStandLocation.getX(), armorStandLocation.getY(), armorStandLocation.getZ(), armorStandLocation.getYaw(), armorStandLocation.getPitch());
}
}.runTaskTimer(Core.getInstance(), 0, 5);
}
}
}
}
}