package org.ultramine.mods.umcommands; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.item.ItemStack; import net.minecraft.util.ChatComponentText; import net.minecraft.util.ChatComponentTranslation; import net.minecraft.util.ChatStyle; import net.minecraft.util.MathHelper; import net.minecraft.world.WorldSettings; import net.minecraft.world.storage.WorldInfo; import org.ultramine.commands.Command; import org.ultramine.commands.CommandContext; import org.ultramine.server.ConfigurationHandler; import org.ultramine.server.Teleporter; import org.ultramine.server.data.player.PlayerData; import org.ultramine.server.util.BasicTypeFormatter; import org.ultramine.server.util.InventoryUtil; import org.ultramine.server.util.WarpLocation; import java.util.Map; import static net.minecraft.util.EnumChatFormatting.GOLD; import static net.minecraft.util.EnumChatFormatting.GREEN; import static net.minecraft.util.EnumChatFormatting.RED; public class BasicCommands { @Command( name = "home", group = "basic", aliases = {"дом", "хата"}, permissions = {"command.basic.home", "command.basic.home.multi", "command.basic.home.other"}, syntax = { "", "<%name>", "<player%dst> <%name>", "<player%target> <player%dst> <%name>" } ) public static void home(CommandContext ctx) { ctx.checkPermissionIfArg("name", "command.basic.home.multi", "command.basic.home.multi.fail"); ctx.checkPermissionIfArg("dst", "command.basic.home.other", "command.basic.home.other.fail"); EntityPlayerMP target = ctx.contains("target") ? ctx.get("target").asPlayer() : ctx.getSenderAsPlayer(); PlayerData data = ctx.contains("dst") ? ctx.get("dst").asPlayerData() : ctx.getSenderAsPlayer().getData(); WarpLocation home = data.core().getHome(ctx.contains("name") ? ctx.get("name").asString() : "home"); ctx.check(home != null, "command.home.fail.notset"); if(home.dimension != target.dimension && !ConfigurationHandler.getServerConfig().settings.teleportation.interWorldHome) ctx.checkSenderPermission("ability.admin.ignoreInterworldHome", "command.home.fail.interworld"); Teleporter.tpLaterOrNow(target, home, ctx.contains("target")); } @Command( name = "sethome", group = "basic", aliases = {"здесьдом"}, permissions = {"command.basic.sethome", "command.basic.sethome.multi", "command.basic.sethome.other"}, syntax = { "", "<%name>", "<player%target> <%name>", "<warp%dst> <player%target> <%name>" } ) public static void sethome(CommandContext ctx) { ctx.checkPermissionIfArg("name", "command.basic.sethome.multi", "command.home.multi.fail"); ctx.checkPermissionIfArg("target", "command.basic.sethome.other", "command.home.other.fail"); PlayerData data = ctx.contains("target") ? ctx.get("target").asPlayerData() : ctx.getSenderAsPlayer().getData(); WarpLocation dst = ctx.contains("dst") ? ctx.getServerData().getWarp(ctx.get("dst").asString()) : WarpLocation.getFromPlayer(ctx.getSenderAsPlayer()); ctx.check(dst != null, "command.warp.fail"); data.core().setHome(ctx.contains("name") ? ctx.get("name").asString() : "home", dst); ctx.sendMessage("command.sethome.success"); } @Command( name = "removehome", group = "basic", aliases = {"rmhome"}, permissions = {"command.basic.removehome"}, syntax = {"<%name>"} ) public static void removehome(CommandContext ctx) { String name = ctx.get("name").asString(); WarpLocation home = ctx.getSenderAsPlayer().getData().core().getHome(name); ctx.check(home != null, "command.removehome.fail"); ctx.getSenderAsPlayer().getData().core().getHomes().remove(name); ctx.sendMessage("command.removehome.success"); } @Command( name = "homelist", group = "basic", permissions = {"command.basic.homelist"}, isUsableFromServer = false ) public static void homelist(CommandContext ctx) { ctx.sendMessage("command.homelist.head"); for(Map.Entry<String, WarpLocation> ent : ctx.getSenderAsPlayer().getData().core().getHomes().entrySet()) ctx.sendMessage(GOLD, " - %s [%s](%s, %s, %s)", ent.getKey(), ent.getValue().dimension, (int)ent.getValue().x, (int)ent.getValue().y, (int)ent.getValue().z); } @Command( name = "warp", aliases = {"go", "пойти", "на", "в"}, group = "basic", permissions = {"command.basic.warp", "command.basic.warp.other"}, syntax = { "<warp%name>", "<player%target> <warp%name>" } ) public static void warp(CommandContext ctx) { ctx.checkPermissionIfArg("target", "command.basic.warp.other", "command.warp.noperm.other"); EntityPlayerMP target = ctx.contains("target") ? ctx.get("target").asPlayer() : ctx.getSenderAsPlayer(); WarpLocation warp = ctx.getServerData().getWarp(ctx.get("name").asString()); ctx.check(warp != null, "command.warp.fail"); if(warp.dimension != target.dimension && !ConfigurationHandler.getServerConfig().settings.teleportation.interWorldWarp) ctx.checkSenderPermission("ability.admin.ignoreInterworldHome", "command.warp.fail.interworld"); Teleporter.tpLaterOrNow(target, warp, ctx.contains("target")); } @Command( name = "setwarp", group = "basic", permissions = {"command.basic.setwarp"}, syntax = {"<%name>", "<%name> <%radius>"} ) public static void setwarp(CommandContext ctx) { ctx.check(ctx.getServerData().getWarp(ctx.get("name").asString()) == null, "command.setwarp.fail"); WarpLocation warp = WarpLocation.getFromPlayer(ctx.getSenderAsPlayer()); if(ctx.contains("radius")) warp.randomRadius = ctx.get("radius").asDouble(); ctx.getServerData().setWarp(ctx.get("name").asString(), warp); ctx.sendMessage("command.setwarp.success"); } @Command( name = "resetwarp", group = "basic", permissions = {"command.basic.resetwarp"}, syntax = {"<%name>", "<%name> <%radius>"} ) public static void resetwarp(CommandContext ctx) { WarpLocation warp = WarpLocation.getFromPlayer(ctx.getSenderAsPlayer()); if(ctx.contains("radius")) warp.randomRadius = ctx.get("radius").asDouble(); ctx.getServerData().setWarp(ctx.get("name").asString(), warp); ctx.sendMessage("command.resetwarp.success"); } @Command( name = "removewarp", group = "basic", aliases = {"rmwarp"}, permissions = {"command.basic.removewarp"}, syntax = {"<%name>"} ) public static void removewarp(CommandContext ctx) { String name = ctx.get("name").asString(); ctx.check(!name.equals("spawn"), "command.removewarp.fail.spawn"); ctx.check(ctx.getServerData().removeWarp(name), "command.removewarp.fail.nowarp"); ctx.getServerData().removeFastWarp(name); ctx.sendMessage("command.removewarp.success"); } @Command( name = "warplist", group = "basic", permissions = {"command.basic.warplist"} ) public static void warplist(CommandContext ctx) { ctx.sendMessage("command.warplist.head"); for(Map.Entry<String, WarpLocation> ent : ctx.getServerData().getWarps().entrySet()) ctx.sendMessage(GOLD, " - %s [%s](%s, %s, %s)", ent.getKey(), ent.getValue().dimension, (int)ent.getValue().x, (int)ent.getValue().y, (int)ent.getValue().z); } @Command( name = "back", group = "basic", permissions = {"command.basic.back"} ) public static void back(CommandContext ctx) { WarpLocation loc = ctx.getSenderAsPlayer().getData().core().getLastLocation(); ctx.check(loc != null, "command.back.fail"); Teleporter.tpLater(ctx.getSenderAsPlayer(), loc); } @Command( name = "fastwarp", group = "basic", permissions = {"command.basic.fastwarp"}, syntax = {"[add remove] <%name>"} ) public static void fastwarp(CommandContext ctx) { String name = ctx.get("name").asString(); ctx.check(!name.equals("spawn"), "command.fastwarp.fail.spawn"); if(ctx.getAction().equals("add")) { ctx.check(ctx.getServerData().getWarp(name) != null, "command.fastwarp.fail.nowarp"); ctx.check(!ctx.getServerData().getFastWarps().contains(name), "command.fastwarp.fail.already"); ctx.getServerData().addFastWarp(name); } else if(ctx.getAction().equals("remove")) { ctx.check(ctx.getServerData().removeFastWarp(name), "command.fastwarp.fail.nofastwarp"); } ctx.sendMessage("command.fastwarp.success."+ctx.getAction()); } @Command( name = "tphere", group = "basic", permissions = {"command.basic.tphere"}, syntax = {"<player%target>"} ) public static void tphere(CommandContext ctx) { Teleporter.tpNow(ctx.get("target").asPlayer(), ctx.getSenderAsPlayer()); ctx.sendMessage("command.tp.success.player", ctx.get("target").asPlayer().func_145748_c_(), ctx.getSenderAsPlayer().func_145748_c_()); } @Command( name = "setspawn", group = "basic", permissions = {"command.basic.setspawn"}, syntax = {"", "<%radius>"} ) public static void setspawn(CommandContext ctx) { WarpLocation warp = WarpLocation.getFromPlayer(ctx.getSenderAsPlayer()); if(ctx.contains("radius")) warp.randomRadius = ctx.get("radius").asDouble(); ctx.getServerData().setWarp("spawn", warp); ctx.sendMessage("command.setspawn.success"); } @Command( name = "setlocalspawn", group = "basic", permissions = {"command.basic.setlocalspawn"} ) public static void setlocalspawn(CommandContext ctx) { EntityPlayerMP player = ctx.getSenderAsPlayer(); WorldInfo wi = player.worldObj.getWorldInfo(); wi.setSpawnPosition(MathHelper.floor_double(player.posX), MathHelper.floor_double(player.posY), MathHelper.floor_double(player.posZ)); ctx.sendMessage("command.setlocalspawn.success"); } @Command( name = "localspawn", group = "basic", permissions = {"command.basic.localspawn"} ) public static void localspawn(CommandContext ctx) { EntityPlayerMP player = ctx.getSenderAsPlayer(); WorldInfo wi = player.worldObj.getWorldInfo(); Teleporter.tpNow(player, wi.getSpawnX(), wi.getSpawnY(), wi.getSpawnZ()); } @Command( name = "heal", group = "basic", permissions = {"command.basic.heal", "command.basic.heal.other"}, syntax = {"", "<player>"} ) public static void heal(CommandContext ctx) { ctx.checkPermissionIfArg("player", "command.admin.heal.other", "command.heal.noperm.other"); EntityPlayerMP player = ctx.contains("player") ? ctx.get("player").asPlayer() : ctx.getSenderAsPlayer(); player.setHealth(player.getMaxHealth()); player.getFoodStats().addStats(20, 0.5F); player.addChatComponentMessage(new ChatComponentTranslation("command.heal.success").setChatStyle(new ChatStyle().setColor(GOLD))); if(ctx.contains("player")) ctx.sendMessage("command.heal.success.other", player.getCommandSenderName()); } @Command( name = "dropall", group = "basic", permissions = {"command.basic.dropall"}, syntax = {"", "<player>"} ) public static void dropall(CommandContext ctx) { ctx.checkPermissionIfArg("player", "command.admin.dropall.other", "command.dropall.noperm.other"); EntityPlayerMP player = ctx.contains("player") ? ctx.get("player").asPlayer() : ctx.getSenderAsPlayer(); player.inventory.dropAllItems(); } @Command( name = "item", group = "basic", aliases = {"i"}, permissions = {"command.basic.item"}, syntax = { "<item>", "<item> <int%size>", "<player> <item>..." } ) public static void item(CommandContext ctx) { ItemStack is = ctx.get("item").asItemStack(); EntityPlayerMP player = ctx.contains("player") ? ctx.get("player").asPlayer() : ctx.getSenderAsPlayer(); if(ctx.contains("size")) is.stackSize = ctx.get("size").asInt(); InventoryUtil.addItem(player.inventory, is); } @Command( name = "dupe", group = "basic", permissions = {"command.basic.dupe"}, syntax = {"", "<%count>"} ) public static void dupe(CommandContext ctx) { ItemStack is = ctx.getSenderAsPlayer().inventory.getCurrentItem(); ctx.check(is != null, "command.dupe.fail"); is = is.copy(); if(ctx.contains("count")) is.stackSize *= ctx.get("count").asInt(); InventoryUtil.addItem(ctx.getSenderAsPlayer().inventory, is); } @Command( name = "gm", group = "basic", permissions = {"command.basic.gm"}, syntax = {""} ) public static void gm(CommandContext ctx) { EntityPlayerMP player = ctx.getSenderAsPlayer(); WorldSettings.GameType type = player.theItemInWorldManager.getGameType(); WorldSettings.GameType newtype = WorldSettings.GameType.SURVIVAL; if(type == WorldSettings.GameType.SURVIVAL) newtype = WorldSettings.GameType.CREATIVE; player.setGameType(newtype); } @Command( name = "custmsg", group = "basic", permissions = {"command.basic.custmsg"}, syntax = { "[all] <msg>...", "<player> <msg>..." } ) public static void custmsg(CommandContext ctx) { String msg = ctx.get("msg").asString().replace('&', '\u00a7'); if(ctx.getAction().equals("all")) ctx.broadcast(new ChatComponentText(msg)); else ctx.get("player").asPlayer().addChatMessage(new ChatComponentText(msg)); } @Command( name = "mute", group = "basic", permissions = {"command.basic.mute"}, syntax = { "<player>", "<player> <time>" } ) public static void mute(CommandContext ctx) { long time = ctx.contains("time") ? ctx.get("time").asTimeMills() : Long.MAX_VALUE; PlayerData data = ctx.get("player").asPlayerData(); data.core().mute(time); ctx.get("player").asOfflinePlayer().sendMessage(RED, RED, "command.mute.notify"); if(time != Long.MAX_VALUE) ctx.broadcast("command.mute.broadcast", data.getProfile().getName(), BasicTypeFormatter.formatTime(time, true)); else ctx.broadcast("command.mute.broadcast.forever", data.getProfile().getName()); } @Command( name = "commandmute", aliases= {"cmdmute", "hardmute"}, group = "basic", permissions = {"command.basic.commandmute"}, syntax = { "<player>", "<player> <time>" } ) public static void commandmute(CommandContext ctx) { long time = ctx.contains("time") ? ctx.get("time").asTimeMills() : Long.MAX_VALUE; PlayerData data = ctx.get("player").asPlayerData(); data.core().mute(time, true); ctx.get("player").asOfflinePlayer().sendMessage(RED, RED, "command.commandmute.notify"); if(time != Long.MAX_VALUE) ctx.broadcast("command.commandmute.broadcast", data.getProfile().getName(), BasicTypeFormatter.formatTime(time, true)); else ctx.broadcast("command.commandmute.broadcast.forever", data.getProfile().getName()); } @Command( name = "unmute", group = "basic", permissions = {"command.basic.unmute"}, syntax = {"<player>"} ) public static void unmute(CommandContext ctx) { PlayerData data = ctx.get("player").asPlayerData(); ctx.check(data.core().isMuted(), "command.unmute.fail"); data.core().unmute(); ctx.get("player").asOfflinePlayer().sendMessage(GREEN, GREEN, "command.unmute.notify"); ctx.sendMessage("command.unmute.success", data.getProfile().getName()); } @Command( name = "vanish", group = "basic", aliases = {"hide"}, permissions = {"command.basic.vanish"}, syntax = {""} ) public static void vanish(CommandContext ctx) { EntityPlayerMP player = ctx.getSenderAsPlayer(); if(player.isHidden()) { player.show(); ctx.sendMessage("command.vanish.success.show"); ctx.notifyOtherAdmins("command.vanish.notify.show"); } else { player.hide(); ctx.sendMessage("command.vanish.success.hide"); ctx.notifyOtherAdmins("command.vanish.notify.hide"); } } }