summaryrefslogtreewikicommitdiff
path: root/src/main/java/net/tylermurphy/hideAndSeek/util
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/net/tylermurphy/hideAndSeek/util')
-rw-r--r--src/main/java/net/tylermurphy/hideAndSeek/util/Board.java4
-rw-r--r--src/main/java/net/tylermurphy/hideAndSeek/util/CommandHandler.java6
-rw-r--r--src/main/java/net/tylermurphy/hideAndSeek/util/UUIDFetcher.java84
-rw-r--r--src/main/java/net/tylermurphy/hideAndSeek/util/Util.java21
4 files changed, 114 insertions, 1 deletions
diff --git a/src/main/java/net/tylermurphy/hideAndSeek/util/Board.java b/src/main/java/net/tylermurphy/hideAndSeek/util/Board.java
index 6b0c7b5..6b61f16 100644
--- a/src/main/java/net/tylermurphy/hideAndSeek/util/Board.java
+++ b/src/main/java/net/tylermurphy/hideAndSeek/util/Board.java
@@ -72,6 +72,10 @@ public class Board {
public List<Player> getSeekers(){
return Seeker.stream().map(playerName -> playerList.get(playerName)).collect(Collectors.toList());
}
+
+ public Player getFirstSeeker(){
+ return playerList.get(Seeker.get(0));
+ }
public List<Player> getSpectators(){
return Spectator.stream().map(playerName -> playerList.get(playerName)).collect(Collectors.toList());
diff --git a/src/main/java/net/tylermurphy/hideAndSeek/util/CommandHandler.java b/src/main/java/net/tylermurphy/hideAndSeek/util/CommandHandler.java
index 18a2c8c..e66f7ed 100644
--- a/src/main/java/net/tylermurphy/hideAndSeek/util/CommandHandler.java
+++ b/src/main/java/net/tylermurphy/hideAndSeek/util/CommandHandler.java
@@ -3,6 +3,8 @@ package net.tylermurphy.hideAndSeek.util;
import static net.tylermurphy.hideAndSeek.configuration.Config.*;
import static net.tylermurphy.hideAndSeek.configuration.Localization.*;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
import java.util.Arrays;
import java.util.LinkedHashMap;
import java.util.Map;
@@ -38,6 +40,8 @@ public class CommandHandler {
registerCommand(new SetBounds());
registerCommand(new Join());
registerCommand(new Leave());
+ registerCommand(new Top());
+ registerCommand(new Wins());
}
public static boolean handleCommand(CommandSender sender, Command cmd, String label, String[] args) {
@@ -65,5 +69,5 @@ public class CommandHandler {
}
return true;
}
-
+
}
diff --git a/src/main/java/net/tylermurphy/hideAndSeek/util/UUIDFetcher.java b/src/main/java/net/tylermurphy/hideAndSeek/util/UUIDFetcher.java
new file mode 100644
index 0000000..8a5406a
--- /dev/null
+++ b/src/main/java/net/tylermurphy/hideAndSeek/util/UUIDFetcher.java
@@ -0,0 +1,84 @@
+package net.tylermurphy.hideAndSeek.util;
+
+import net.tylermurphy.hideAndSeek.Main;
+
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.net.URL;
+import java.net.URLConnection;
+import java.nio.charset.Charset;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
+public final class UUIDFetcher {
+
+ private static final Map<String,UUID> CACHE = new HashMap<>();
+
+ private static final String UUID_URL = "https://api.mojang.com/users/profiles/minecraft/";
+ private static int cacheTask;
+
+ public static void init(){
+ cacheTask = Main.plugin.getServer().getScheduler().scheduleSyncRepeatingTask(Main.plugin, CACHE::clear,600*20, 600*20);
+ }
+
+ public static void cleanup(){
+ Main.plugin.getServer().getScheduler().cancelTask(cacheTask);
+ }
+
+ public static UUID getUUID(String playername) {
+
+ if(CACHE.containsKey(playername)) return CACHE.get(playername);
+
+ String output = callURL(UUID_URL + playername);
+ StringBuilder result = new StringBuilder();
+ readData(output, result);
+ String u = result.toString();
+ StringBuilder uuid = new StringBuilder();
+ for (int i = 0; i <= 31; i++) {
+ uuid.append(u.charAt(i));
+ if (i == 7 || i == 11 || i == 15 || i == 19) {
+ uuid.append('-');
+ }
+ }
+ return UUID.fromString(uuid.toString());
+ }
+
+ private static void readData(String toRead, StringBuilder result) {
+ for (int i = toRead.length() - 3; i >= 0; i--) {
+ if (toRead.charAt(i) != '"') {
+ result.insert(0, toRead.charAt(i));
+ } else {
+ break;
+ }
+ }
+ }
+
+ private static String callURL(String urlStr) {
+ StringBuilder sb = new StringBuilder();
+ URLConnection urlConn;
+ InputStreamReader in;
+ try {
+ URL url = new URL(urlStr);
+ urlConn = url.openConnection();
+ if (urlConn != null) {
+ urlConn.setReadTimeout(60 * 1000);
+ }
+ if (urlConn != null && urlConn.getInputStream() != null) {
+ in = new InputStreamReader(urlConn.getInputStream(),
+ Charset.defaultCharset());
+ BufferedReader bufferedReader = new BufferedReader(in);
+ int cp;
+ while ((cp = bufferedReader.read()) != -1) {
+ sb.append((char) cp);
+ }
+ bufferedReader.close();
+ in.close();
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return sb.toString();
+ }
+
+}
diff --git a/src/main/java/net/tylermurphy/hideAndSeek/util/Util.java b/src/main/java/net/tylermurphy/hideAndSeek/util/Util.java
index 513ac16..8112f74 100644
--- a/src/main/java/net/tylermurphy/hideAndSeek/util/Util.java
+++ b/src/main/java/net/tylermurphy/hideAndSeek/util/Util.java
@@ -3,10 +3,13 @@ package net.tylermurphy.hideAndSeek.util;
import static net.tylermurphy.hideAndSeek.configuration.Config.*;
import java.io.*;
+import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
+import java.util.UUID;
+import com.google.common.io.ByteStreams;
import net.md_5.bungee.api.ChatColor;
import net.tylermurphy.hideAndSeek.configuration.Items;
import net.tylermurphy.hideAndSeek.configuration.LocalizationString;
@@ -92,4 +95,22 @@ public class Util {
for(ItemStack i : player.getInventory().getContents())
if(hi.isSimilar(i)) player.getInventory().remove(i);
}
+
+ public static InputStream convertUniqueId(UUID uuid) {
+ byte[] bytes = new byte[16];
+ ByteBuffer.wrap(bytes)
+ .putLong(uuid.getMostSignificantBits())
+ .putLong(uuid.getLeastSignificantBits());
+ return new ByteArrayInputStream(bytes);
+ }
+
+ public static UUID convertBinaryStream(InputStream stream) {
+ ByteBuffer buffer = ByteBuffer.allocate(16);
+ try {
+ buffer.put(ByteStreams.toByteArray(stream));
+ buffer.flip();
+ return new UUID(buffer.getLong(), buffer.getLong());
+ } catch (IOException e) {}
+ return null;
+ }
} \ No newline at end of file