604 lines
19 KiB
Text
604 lines
19 KiB
Text
|
package tk.sznp.thebuttonautoflair;
|
|||
|
|
|||
|
import org.apache.commons.io.FileUtils;
|
|||
|
import org.bukkit.Bukkit;
|
|||
|
import org.bukkit.Location;
|
|||
|
import org.bukkit.Material;
|
|||
|
import org.bukkit.command.BlockCommandSender;
|
|||
|
import org.bukkit.command.Command;
|
|||
|
import org.bukkit.command.CommandExecutor;
|
|||
|
import org.bukkit.command.CommandSender;
|
|||
|
import org.bukkit.entity.Ocelot;
|
|||
|
import org.bukkit.entity.Player;
|
|||
|
import org.bukkit.inventory.ItemStack;
|
|||
|
import org.bukkit.inventory.meta.SkullMeta;
|
|||
|
import org.bukkit.potion.PotionEffect;
|
|||
|
import org.bukkit.potion.PotionEffectType;
|
|||
|
|
|||
|
import com.earth2me.essentials.Mob;
|
|||
|
import com.earth2me.essentials.Mob.MobException;
|
|||
|
|
|||
|
import au.com.mineauz.minigames.MinigamePlayer;
|
|||
|
import au.com.mineauz.minigames.Minigames;
|
|||
|
|
|||
|
import java.io.File;
|
|||
|
import java.io.IOException;
|
|||
|
import java.net.MalformedURLException;
|
|||
|
import java.net.URL;
|
|||
|
import java.util.ArrayList;
|
|||
|
import java.util.Random;
|
|||
|
import java.util.Timer;
|
|||
|
|
|||
|
public class Commands implements CommandExecutor {
|
|||
|
|
|||
|
public static MaybeOfflinePlayer Lastlol = null;
|
|||
|
|
|||
|
// This method is called, when somebody uses our command
|
|||
|
@Override
|
|||
|
public boolean onCommand(CommandSender sender, Command cmd, String label,
|
|||
|
String[] args) {
|
|||
|
if (sender instanceof Player) {
|
|||
|
Player player = (Player) sender;
|
|||
|
switch (cmd.getName()) {
|
|||
|
case "u": {
|
|||
|
if (args.length < 1)
|
|||
|
return false;
|
|||
|
MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(player
|
|||
|
.getUniqueId());
|
|||
|
switch (args[0].toLowerCase()) {
|
|||
|
case "accept": {
|
|||
|
if (args.length < 2 && p.UserNames.size() > 1) {
|
|||
|
player.sendMessage("<22>9Multiple users commented your name. <20>bPlease pick one using /u accept <username>");
|
|||
|
StringBuilder sb = new StringBuilder();
|
|||
|
sb.append("<22>6Usernames:");
|
|||
|
for (String username : p.UserNames)
|
|||
|
sb.append(" ").append(username);
|
|||
|
player.sendMessage(sb.toString());
|
|||
|
return true;
|
|||
|
}
|
|||
|
if (p.FlairState.equals(FlairStates.NoComment)
|
|||
|
|| p.UserNames.size() == 0) {
|
|||
|
player.sendMessage("<22>cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft<66>r");
|
|||
|
return true;
|
|||
|
}
|
|||
|
if (args.length > 1 && !p.UserNames.contains(args[1])) {
|
|||
|
player.sendMessage("<22>cError: Unknown name: " + args[1]
|
|||
|
+ "<22>r");
|
|||
|
return true;
|
|||
|
}
|
|||
|
if (p.Working) {
|
|||
|
player.sendMessage("<22>cError: Something is already in progress.<2E>r");
|
|||
|
return true;
|
|||
|
}
|
|||
|
|
|||
|
if ((args.length > 1 ? args[1] : p.UserNames.get(0))
|
|||
|
.equals(p.UserName)) {
|
|||
|
player.sendMessage("<22>cYou already have this user's flair.<2E>r");
|
|||
|
return true;
|
|||
|
}
|
|||
|
if (args.length > 1)
|
|||
|
p.UserName = args[1];
|
|||
|
else
|
|||
|
p.UserName = p.UserNames.get(0);
|
|||
|
|
|||
|
player.sendMessage("<22>bObtaining flair...");
|
|||
|
p.Working = true;
|
|||
|
Timer timer = new Timer();
|
|||
|
PlayerJoinTimerTask tt = new PlayerJoinTimerTask() {
|
|||
|
@Override
|
|||
|
public void run() {
|
|||
|
try {
|
|||
|
PluginMain.Instance.DownloadFlair(mp);
|
|||
|
} catch (Exception e) {
|
|||
|
e.printStackTrace();
|
|||
|
}
|
|||
|
|
|||
|
Player player = Bukkit.getPlayer(mp.UUID);
|
|||
|
if (mp.FlairState.equals(FlairStates.Commented)) {
|
|||
|
player.sendMessage("Sorry, but your flair isn't recorded. Please ask an admin to set it for you. Also, prepare a comment on /r/thebutton, if possible.");
|
|||
|
return;
|
|||
|
}
|
|||
|
String flair = mp.GetFormattedFlair();
|
|||
|
mp.FlairState = FlairStates.Accepted;
|
|||
|
PluginMain.ConfirmUserMessage(mp);
|
|||
|
player.sendMessage("<22>bYour flair has been set:<3A>r "
|
|||
|
+ flair);
|
|||
|
mp.Working = false;
|
|||
|
}
|
|||
|
};
|
|||
|
tt.mp = p;
|
|||
|
timer.schedule(tt, 20);
|
|||
|
break;
|
|||
|
}
|
|||
|
case "ignore": {
|
|||
|
if (p.FlairState.equals(FlairStates.NoComment)) {
|
|||
|
player.sendMessage("<22>cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft<66>r");
|
|||
|
return true;
|
|||
|
}
|
|||
|
if (p.FlairState.equals(FlairStates.Commented)) {
|
|||
|
player.sendMessage("Sorry, but your flair isn't recorded. Please ask a mod to set it for you.");
|
|||
|
return true;
|
|||
|
}
|
|||
|
if (!p.FlairState.equals(FlairStates.Ignored)) {
|
|||
|
p.FlairState = FlairStates.Ignored;
|
|||
|
p.SetFlairTime("");
|
|||
|
p.UserName = "";
|
|||
|
player.sendMessage("<22>bYou have removed your flair. You can still use /u accept to get one.<2E>r");
|
|||
|
} else
|
|||
|
player.sendMessage("<22>cYou already removed your flair.<2E>r");
|
|||
|
break;
|
|||
|
}
|
|||
|
case "admin": // 2015.08.09.
|
|||
|
DoAdmin(player, args);
|
|||
|
break;
|
|||
|
case "opme": // 2015.08.10.
|
|||
|
player.sendMessage("It would be nice, wouldn't it?"); // Sometimes
|
|||
|
// I'm
|
|||
|
// bored
|
|||
|
// too
|
|||
|
break;
|
|||
|
case "announce":
|
|||
|
DoAnnounce(player, args, null);
|
|||
|
break;
|
|||
|
case "name":
|
|||
|
if (args.length == 1) {
|
|||
|
player.sendMessage("<22>cUsage: /u name <playername><3E>r");
|
|||
|
break;
|
|||
|
}
|
|||
|
MaybeOfflinePlayer mp = MaybeOfflinePlayer
|
|||
|
.GetFromName(args[1]);
|
|||
|
if (mp == null) {
|
|||
|
player.sendMessage("<22>cUnknown user: " + args[1]);
|
|||
|
break;
|
|||
|
}
|
|||
|
player.sendMessage("<22>bUsername of " + args[1] + ": "
|
|||
|
+ mp.UserName);
|
|||
|
break;
|
|||
|
case "enable":
|
|||
|
if (player.getName().equals("NorbiPeti")) {
|
|||
|
PlayerListener.Enable = true;
|
|||
|
player.sendMessage("Enabled.");
|
|||
|
} else
|
|||
|
player.sendMessage("Unknown command: " + cmd.getName());
|
|||
|
break;
|
|||
|
case "disable":
|
|||
|
if (player.getName().equals("NorbiPeti")) {
|
|||
|
PlayerListener.Enable = false;
|
|||
|
player.sendMessage("Disabled.");
|
|||
|
} else
|
|||
|
player.sendMessage("Unknown command: " + cmd.getName());
|
|||
|
break;
|
|||
|
case "kittycannon":
|
|||
|
DoKittyCannon(player, args);
|
|||
|
break;
|
|||
|
default:
|
|||
|
return false;
|
|||
|
}
|
|||
|
return true;
|
|||
|
}
|
|||
|
case "nrp":
|
|||
|
case "ooc":
|
|||
|
if (args.length == 0) {
|
|||
|
return false;
|
|||
|
} else {
|
|||
|
MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = false;
|
|||
|
String message = "";
|
|||
|
for (String arg : args)
|
|||
|
message += arg + " ";
|
|||
|
player.chat(message.substring(0, message.length() - 1));
|
|||
|
MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = true;
|
|||
|
}
|
|||
|
return true;
|
|||
|
case "unlol":
|
|||
|
Player p = null;
|
|||
|
System.out.println("Lastlol: " + Lastlol);
|
|||
|
if (Lastlol != null
|
|||
|
|| (p = Bukkit.getPlayer(Lastlol.UUID)) != null) {
|
|||
|
p.addPotionEffect(new PotionEffect(
|
|||
|
PotionEffectType.BLINDNESS, 10, 5, false, false));
|
|||
|
for (Player pl : PluginMain.GetPlayers())
|
|||
|
pl.sendMessage(player.getDisplayName() + " unlolled "
|
|||
|
+ p.getDisplayName());
|
|||
|
Lastlol = null;
|
|||
|
}
|
|||
|
return true;
|
|||
|
default:
|
|||
|
player.sendMessage("Unknown command: " + cmd.getName());
|
|||
|
break;
|
|||
|
}
|
|||
|
} else if (args.length > 0 && args[0].toLowerCase().equals("admin")) // 2015.08.09.
|
|||
|
{
|
|||
|
DoAdmin(null, args); // 2015.08.09.
|
|||
|
return true; // 2015.08.09.
|
|||
|
} else if (args.length > 0 && args[0].toLowerCase().equals("announce")) {
|
|||
|
if (sender instanceof BlockCommandSender)
|
|||
|
DoAnnounce(null, args, (BlockCommandSender) sender);
|
|||
|
else
|
|||
|
DoAnnounce(null, args, null);
|
|||
|
return true;
|
|||
|
}
|
|||
|
return false;
|
|||
|
}
|
|||
|
|
|||
|
private static void DoReload(Player player) { // 2015.07.20.
|
|||
|
try {
|
|||
|
PluginMain.Console
|
|||
|
.sendMessage("<22>6-- Reloading The Button Minecraft plugin...<2E>r");
|
|||
|
PluginMain.LoadFiles(true); // 2015.08.09.
|
|||
|
for (Player p : PluginMain.GetPlayers()) {
|
|||
|
MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p
|
|||
|
.getUniqueId());
|
|||
|
if (mp.FlairState.equals(FlairStates.Recognised)
|
|||
|
|| mp.FlairState.equals(FlairStates.Commented)) {
|
|||
|
PluginMain.ConfirmUserMessage(mp);
|
|||
|
}
|
|||
|
String msg = "<22>bNote: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.<2E>r"; // 2015.08.09.
|
|||
|
p.sendMessage(msg); // 2015.08.09.
|
|||
|
}
|
|||
|
PluginMain.Console.sendMessage("<22>6-- Reloading done!<21>r");
|
|||
|
} catch (Exception e) {
|
|||
|
System.out.println("Error!\n" + e);
|
|||
|
if (player != null)
|
|||
|
player.sendMessage("<22>cAn error occured. See console for details.<2E>r");
|
|||
|
PluginMain.LastException = e; // 2015.08.09.
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
private static Player ReloadPlayer; // 2015.08.09.
|
|||
|
|
|||
|
private static String DoAdminUsage = "<22>cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin|togglerpshow|toggledebug|savepos|loadpos<6F>r";
|
|||
|
|
|||
|
private static void DoAdmin(Player player, String[] args) { // 2015.08.09.
|
|||
|
if (player == null || player.isOp()
|
|||
|
|| player.getName().equals("NorbiPeti")) {
|
|||
|
if (args.length == 1) {
|
|||
|
String message = DoAdminUsage;
|
|||
|
SendMessage(player, message);
|
|||
|
return;
|
|||
|
}
|
|||
|
// args[0] is "admin"
|
|||
|
switch (args[1].toLowerCase()) {
|
|||
|
case "reload":
|
|||
|
ReloadPlayer = player; // 2015.08.09.
|
|||
|
SendMessage(
|
|||
|
player,
|
|||
|
"<22>bMake sure to save the current settings before you modify and reload them! Type /u admin confirm when done.<2E>r");
|
|||
|
break;
|
|||
|
case "playerinfo":
|
|||
|
DoPlayerInfo(player, args);
|
|||
|
break;
|
|||
|
case "getlasterror":
|
|||
|
DoGetLastError(player, args);
|
|||
|
break; // <-- 2015.08.10.
|
|||
|
case "confirm":
|
|||
|
if (ReloadPlayer == player)
|
|||
|
DoReload(player); // 2015.08.09.
|
|||
|
else
|
|||
|
SendMessage(player,
|
|||
|
"<22>cYou need to do /u admin reload first.<2E>r");
|
|||
|
break;
|
|||
|
case "save":
|
|||
|
PluginMain.SaveFiles(); // 2015.08.09.
|
|||
|
SendMessage(player,
|
|||
|
"<22>bSaved files. Now you can edit them and reload if you want.<2E>r");
|
|||
|
break;
|
|||
|
case "setflair":
|
|||
|
DoSetFlair(player, args);
|
|||
|
break;
|
|||
|
case "updateplugin": // 2015.08.10.
|
|||
|
DoUpdatePlugin(player);
|
|||
|
break;
|
|||
|
case "togglerpshow":
|
|||
|
PlayerListener.ShowRPTag = !PlayerListener.ShowRPTag;
|
|||
|
SendMessage(player, "RP tag showing "
|
|||
|
+ (PlayerListener.ShowRPTag ? "enabled" : "disabled"));
|
|||
|
break;
|
|||
|
case "toggledebug":
|
|||
|
PlayerListener.DebugMode = !PlayerListener.DebugMode;
|
|||
|
SendMessage(player, "DebugMode: " + PlayerListener.DebugMode);
|
|||
|
break;
|
|||
|
case "savepos":
|
|||
|
DoSaveLoadPos(player, args);
|
|||
|
break;
|
|||
|
case "loadpos":
|
|||
|
DoSaveLoadPos(player, args);
|
|||
|
break;
|
|||
|
case "updatedynmap":
|
|||
|
DoUpdateDynmap(player, args);
|
|||
|
default:
|
|||
|
String message = DoAdminUsage;
|
|||
|
SendMessage(player, message);
|
|||
|
return;
|
|||
|
}
|
|||
|
} else
|
|||
|
player.sendMessage("<22>cYou need to be OP to use this command.<2E>r");
|
|||
|
}
|
|||
|
|
|||
|
private static void DoPlayerInfo(Player player, String[] args) { // 2015.08.09.
|
|||
|
// args[0] is "admin" - args[1] is "playerinfo"
|
|||
|
if (args.length == 2) {
|
|||
|
String message = "<22>cUsage: /u admin playerinfo <player><3E>r";
|
|||
|
SendMessage(player, message);
|
|||
|
return;
|
|||
|
}
|
|||
|
MaybeOfflinePlayer p = MaybeOfflinePlayer.GetFromName(args[2]);
|
|||
|
if (p == null) {
|
|||
|
String message = "<22>cPlayer not found: " + args[2] + "<22>r";
|
|||
|
SendMessage(player, message);
|
|||
|
return;
|
|||
|
}
|
|||
|
SendMessage(player, "Player name: " + p.PlayerName);
|
|||
|
SendMessage(player, "User flair: " + p.GetFormattedFlair());
|
|||
|
SendMessage(player, "Username: " + p.UserName);
|
|||
|
SendMessage(player, "Flair state: " + p.FlairState);
|
|||
|
StringBuilder sb = new StringBuilder();
|
|||
|
sb.append("<22>6Usernames:");
|
|||
|
for (String username : p.UserNames)
|
|||
|
sb.append(" ").append(username);
|
|||
|
SendMessage(player, sb.toString());
|
|||
|
}
|
|||
|
|
|||
|
private static void SendMessage(Player player, String message) { // 2015.08.09.
|
|||
|
if (player == null)
|
|||
|
PluginMain.Console.sendMessage(message); // 2015.08.12.
|
|||
|
else
|
|||
|
player.sendMessage(message);
|
|||
|
}
|
|||
|
|
|||
|
private static void DoGetLastError(Player player, String[] args) { // 2015.08.09.
|
|||
|
// args[0] is "admin" - args[1] is "getlasterror"
|
|||
|
if (PluginMain.LastException != null) {
|
|||
|
SendMessage(player, "Last error:");
|
|||
|
SendMessage(player, PluginMain.LastException.toString());
|
|||
|
PluginMain.LastException = null;
|
|||
|
} else
|
|||
|
SendMessage(player, "There were no exceptions.");
|
|||
|
}
|
|||
|
|
|||
|
private static void SetPlayerFlair(Player player,
|
|||
|
MaybeOfflinePlayer targetplayer, short flaircolor, String flairtime) {
|
|||
|
targetplayer.SetFlair(flaircolor, flairtime);
|
|||
|
targetplayer.FlairState = FlairStates.Accepted;
|
|||
|
targetplayer.UserName = "";
|
|||
|
SendMessage(player,
|
|||
|
"<22>bThe flair has been set. Player: " + targetplayer.PlayerName
|
|||
|
+ " Flair: " + targetplayer.GetFormattedFlair() + "<22>r");
|
|||
|
}
|
|||
|
|
|||
|
private static void DoSetFlair(Player player, String[] args) {
|
|||
|
// args[0] is "admin" - args[1] is "setflair"
|
|||
|
if (args.length < 4) {
|
|||
|
SendMessage(player,
|
|||
|
"<22>cUsage: /u admin setflair <playername> <flaircolor> [number]");
|
|||
|
return;
|
|||
|
}
|
|||
|
Player p = Bukkit.getPlayer(args[2]);
|
|||
|
if (p == null) {
|
|||
|
SendMessage(player, "<22>cPLayer not found.&r");
|
|||
|
return;
|
|||
|
}
|
|||
|
short flaircolor = 0x00;
|
|||
|
try {
|
|||
|
flaircolor = Short.parseShort(args[3], 16);
|
|||
|
} catch (Exception e) {
|
|||
|
SendMessage(player,
|
|||
|
"<22>cFlaircolor must be a hexadecimal number (don't include &).");
|
|||
|
return;
|
|||
|
}
|
|||
|
SetPlayerFlair(player,
|
|||
|
MaybeOfflinePlayer.AddPlayerIfNeeded(p.getUniqueId()),
|
|||
|
flaircolor, (args.length < 5 ? "" : args[4]));
|
|||
|
}
|
|||
|
|
|||
|
private static void DoUpdatePlugin(Player player) { // 2015.08.10.
|
|||
|
SendMessage(player, "Updating Auto-Flair plugin...");
|
|||
|
System.out.println("Forced updating of Auto-Flair plugin.");
|
|||
|
URL url;
|
|||
|
try {
|
|||
|
url = new URL(
|
|||
|
"https://github.com/NorbiPeti/thebuttonautoflairmc/raw/master/TheButtonAutoFlair.jar");
|
|||
|
FileUtils.copyURLToFile(url, new File(
|
|||
|
"plugins/TheButtonAutoFlair.jar"));
|
|||
|
SendMessage(player, "Updating done!");
|
|||
|
} catch (MalformedURLException e) {
|
|||
|
System.out.println("Error!\n" + e);
|
|||
|
PluginMain.LastException = e; // 2015.08.09.
|
|||
|
} catch (IOException e) {
|
|||
|
System.out.println("Error!\n" + e);
|
|||
|
PluginMain.LastException = e; // 2015.08.09.
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
private static void DoAnnounce(Player player, String[] args,
|
|||
|
BlockCommandSender commandblock) {
|
|||
|
if (player == null || player.isOp()
|
|||
|
|| player.getName().equals("NorbiPeti")) {
|
|||
|
if (args.length == 1) {
|
|||
|
String message = "<22>cUsage: /u announce add|remove|settime|list|edit<69>r";
|
|||
|
SendMessage(player, message);
|
|||
|
return;
|
|||
|
}
|
|||
|
switch (args[1].toLowerCase()) {
|
|||
|
case "add":
|
|||
|
if (args.length < 3) {
|
|||
|
SendMessage(player, "<22>cUsage: /u announce add <message>");
|
|||
|
return;
|
|||
|
}
|
|||
|
StringBuilder sb = new StringBuilder();
|
|||
|
for (int i = 2; i < args.length; i++) {
|
|||
|
sb.append(args[i]);
|
|||
|
if (i != args.length - 1)
|
|||
|
sb.append(" ");
|
|||
|
}
|
|||
|
String finalmessage = sb.toString().replace('&', '<27>');
|
|||
|
PluginMain.AnnounceMessages.add(finalmessage);
|
|||
|
SendMessage(player, "<22>bAnnouncement added.<2E>r");
|
|||
|
break;
|
|||
|
case "remove":
|
|||
|
if (args.length < 3) {
|
|||
|
SendMessage(player, "<22>cUsage: /u announce remove <index>");
|
|||
|
return;
|
|||
|
}
|
|||
|
PluginMain.AnnounceMessages.remove(Integer.parseInt(args[2]));
|
|||
|
break;
|
|||
|
case "settime":
|
|||
|
if (args.length < 3) {
|
|||
|
SendMessage(player,
|
|||
|
"<22>cUsage: /u announce settime <minutes>");
|
|||
|
return;
|
|||
|
}
|
|||
|
PluginMain.AnnounceTime = Integer.parseInt(args[2]) * 60 * 1000;
|
|||
|
SendMessage(player, "Time set between announce messages");
|
|||
|
break;
|
|||
|
case "list":
|
|||
|
SendMessage(player, "<22>bList of announce messages:<3A>r");
|
|||
|
SendMessage(player, "<22>bFormat: [index] message<67>r");
|
|||
|
int i = 0;
|
|||
|
for (String message : PluginMain.AnnounceMessages)
|
|||
|
SendMessage(player, "[" + i++ + "] " + message);
|
|||
|
SendMessage(player,
|
|||
|
"<22>bCurrent wait time between announcements: "
|
|||
|
+ PluginMain.AnnounceTime / 60 / 1000
|
|||
|
+ " minute(s)<29>r");
|
|||
|
break;
|
|||
|
case "edit":
|
|||
|
if (commandblock == null) {
|
|||
|
SendMessage(
|
|||
|
player,
|
|||
|
"<22>cError: This command can only be used from a command block. Use /u announce remove.");
|
|||
|
break;
|
|||
|
}
|
|||
|
if (args.length < 4) {
|
|||
|
commandblock
|
|||
|
.sendMessage("<22>cUsage: /u announce edit <index> <message>");
|
|||
|
return;
|
|||
|
}
|
|||
|
StringBuilder sb1 = new StringBuilder();
|
|||
|
for (int i1 = 3; i1 < args.length; i1++) {
|
|||
|
sb1.append(args[i1]);
|
|||
|
if (i1 != args.length - 1)
|
|||
|
sb1.append(" ");
|
|||
|
}
|
|||
|
String finalmessage1 = sb1.toString().replace('&', '<27>');
|
|||
|
int index = Integer.parseInt(args[2]);
|
|||
|
if (index > 100)
|
|||
|
break;
|
|||
|
while (PluginMain.AnnounceMessages.size() <= index)
|
|||
|
PluginMain.AnnounceMessages.add("");
|
|||
|
PluginMain.AnnounceMessages.set(Integer.parseInt(args[2]),
|
|||
|
finalmessage1);
|
|||
|
commandblock.sendMessage("Announcement edited.");
|
|||
|
break;
|
|||
|
default:
|
|||
|
String message = "<22>cUsage: /u announce add|remove|settime|list|edit<69>r";
|
|||
|
SendMessage(player, message);
|
|||
|
return;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
@SuppressWarnings("unused")
|
|||
|
private static void DoSaveLoadPos(Player player, String[] args) { // 2015.08.09.
|
|||
|
// args[0] is "admin" - args[1] is "savepos|loadpos"
|
|||
|
if (args.length == 2) {
|
|||
|
String message = "<22>cUsage: /u admin savepos|loadpos <player><3E>r";
|
|||
|
SendMessage(player, message);
|
|||
|
return;
|
|||
|
}
|
|||
|
Player p = null;
|
|||
|
try {
|
|||
|
p = Bukkit.getPlayer(args[2]);
|
|||
|
} catch (Exception e) {
|
|||
|
}
|
|||
|
if (!MaybeOfflinePlayer.AllPlayers.containsKey(p.getUniqueId())) {
|
|||
|
String message = "<22>cPlayer not found: " + args[2] + "<22>r";
|
|||
|
SendMessage(player, message);
|
|||
|
return;
|
|||
|
}
|
|||
|
MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p
|
|||
|
.getUniqueId());
|
|||
|
if (p == null) {
|
|||
|
String message = "<22>cPlayer is not online: " + args[2] + "<22>r";
|
|||
|
SendMessage(player, message);
|
|||
|
return;
|
|||
|
}
|
|||
|
if (args[1].equalsIgnoreCase("savepos")) {
|
|||
|
mp.SavedLocation = p.getLocation();
|
|||
|
} else if (args[1].equalsIgnoreCase("loadpos")) {
|
|||
|
if (mp.SavedLocation != null)
|
|||
|
p.teleport(mp.SavedLocation);
|
|||
|
} else {
|
|||
|
String message = "<22>cUsage: /u admin savepos|loadpos <player><3E>r";
|
|||
|
SendMessage(player, message);
|
|||
|
return;
|
|||
|
}
|
|||
|
// SendMessage(player, "Player " + p.getName() +
|
|||
|
// " position saved/loaded.");s
|
|||
|
}
|
|||
|
|
|||
|
private static void DoUpdateDynmap(Player player, String[] args) {
|
|||
|
// args[0] is "admin" - args[1] is "updatedynmap"
|
|||
|
if (args.length == 2) {
|
|||
|
String message = "<22>cUsage: /u admin updatedynmap <password><3E>r";
|
|||
|
SendMessage(player, message);
|
|||
|
return;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
private static Random random = new Random();
|
|||
|
|
|||
|
public static String KittyCannonMinigame = "KittyCannon";
|
|||
|
|
|||
|
private static void DoKittyCannon(Player player, String[] args) {
|
|||
|
if (player == null) {
|
|||
|
SendMessage(player,
|
|||
|
"<22>cThis command can only be used by a player.<2E>r");
|
|||
|
return;
|
|||
|
}
|
|||
|
MinigamePlayer mp = Minigames.plugin.pdata.getMinigamePlayer(player);
|
|||
|
if (!(mp.isInMinigame() && mp.getMinigame().getName(false)
|
|||
|
.equalsIgnoreCase(Commands.KittyCannonMinigame))) {
|
|||
|
SendMessage(player,
|
|||
|
"<22>cYou can only use KittyCannon in it's minigame!");
|
|||
|
return;
|
|||
|
}
|
|||
|
try {
|
|||
|
final Mob cat = Mob.OCELOT;
|
|||
|
final Ocelot ocelot = (Ocelot) cat.spawn(player.getWorld(),
|
|||
|
player.getServer(), player.getEyeLocation());
|
|||
|
if (ocelot == null) {
|
|||
|
return;
|
|||
|
}
|
|||
|
final ArrayList<String> lore = new ArrayList<>();
|
|||
|
lore.add(player.getName());
|
|||
|
final int i = random.nextInt(Ocelot.Type.values().length);
|
|||
|
ocelot.setCatType(Ocelot.Type.values()[i]);
|
|||
|
ocelot.setTamed(true);
|
|||
|
ocelot.setBaby();
|
|||
|
ocelot.addPotionEffect(new PotionEffect(
|
|||
|
PotionEffectType.DAMAGE_RESISTANCE, 5, 5));
|
|||
|
ocelot.setVelocity(player.getEyeLocation().getDirection()
|
|||
|
.multiply(2));
|
|||
|
Bukkit.getScheduler().scheduleSyncDelayedTask(PluginMain.Instance,
|
|||
|
new Runnable() {
|
|||
|
@SuppressWarnings("deprecation")
|
|||
|
@Override
|
|||
|
public void run() {
|
|||
|
final Location loc = ocelot.getLocation();
|
|||
|
ocelot.remove();
|
|||
|
loc.getWorld().createExplosion(loc, 0F);
|
|||
|
final ItemStack head = new ItemStack(
|
|||
|
Material.SKULL_ITEM, 1, (short) 3, (byte) 3);
|
|||
|
SkullMeta im = (SkullMeta) head.getItemMeta();
|
|||
|
im.setDisplayName("<22>rOcelot Head");
|
|||
|
im.setOwner("MHF_Ocelot");
|
|||
|
im.setLore(lore);
|
|||
|
head.setItemMeta(im);
|
|||
|
loc.getWorld().dropItem(loc, head);
|
|||
|
}
|
|||
|
}, 20);
|
|||
|
} catch (MobException e) {
|
|||
|
}
|
|||
|
}
|
|||
|
}
|