diff --git a/src/main/java/pw/kaboom/extras/commands/CommandSkin.java b/src/main/java/pw/kaboom/extras/commands/CommandSkin.java index a829906..8333062 100644 --- a/src/main/java/pw/kaboom/extras/commands/CommandSkin.java +++ b/src/main/java/pw/kaboom/extras/commands/CommandSkin.java @@ -27,62 +27,6 @@ class CommandSkin implements CommandExecutor { this.main = main; } - private void changeSkin(final Player player, final String name) { - new BukkitRunnable() { - public void run() { - try { - final URL nameUrl = new URL("https://api.mojang.com/users/profiles/minecraft/" + name); - final HttpsURLConnection nameConnection = (HttpsURLConnection) nameUrl.openConnection(); - - if (nameConnection.getResponseCode() == HttpsURLConnection.HTTP_OK) { - final InputStreamReader nameStream = new InputStreamReader(nameConnection.getInputStream()); - final String uuid = new JsonParser().parse(nameStream).getAsJsonObject().get("id").getAsString(); - nameStream.close(); - nameConnection.disconnect(); - - final URL uuidUrl = new URL("https://sessionserver.mojang.com/session/minecraft/profile/" + uuid + "?unsigned=false"); - final HttpsURLConnection uuidConnection = (HttpsURLConnection) uuidUrl.openConnection(); - - if (uuidConnection.getResponseCode() == HttpsURLConnection.HTTP_OK) { - final InputStreamReader uuidStream = new InputStreamReader(uuidConnection.getInputStream()); - final JsonObject response = new JsonParser().parse(uuidStream).getAsJsonObject().get("properties").getAsJsonArray().get(0).getAsJsonObject(); - final String texture = response.get("value").getAsString(); - final String signature = response.get("signature").getAsString(); - uuidStream.close(); - uuidConnection.disconnect(); - - final PlayerProfile textureProfile = player.getPlayerProfile(); - textureProfile.clearProperties(); - textureProfile.setProperty(new ProfileProperty("textures", texture, signature)); - - new BukkitRunnable() { - public void run() { - player.setPlayerProfile(textureProfile); - player.sendMessage("Successfully set your skin to " + name + "'s"); - } - }.runTask(main); - } else { - uuidConnection.disconnect(); - new BukkitRunnable() { - public void run() { - player.sendMessage("Failed to change skin. Try again later"); - } - }.runTask(main); - } - } else { - nameConnection.disconnect(); - new BukkitRunnable() { - public void run() { - player.sendMessage("A player with that username doesn't exist"); - } - }.runTask(main); - } - } catch (Exception exception) { - } - } - }.runTaskAsynchronously(main); - } - public boolean onCommand(CommandSender sender, Command command, String label, final String[] args) { final Player player = (Player) sender; @@ -90,7 +34,40 @@ class CommandSkin implements CommandExecutor { player.sendMessage(ChatColor.RED + "Usage: /" + label + " "); } else { final String name = args[0]; - changeSkin(player, name); + new BukkitRunnable() { + public void run() { + try { + final URL skinUrl = new URL("https://api.ashcon.app/mojang/v2/user/" + name); + final HttpsURLConnection skinConnection = (HttpsURLConnection) skinUrl.openConnection(); + + if (skinConnection.getResponseCode() == HttpsURLConnection.HTTP_OK) { + final InputStreamReader skinStream = new InputStreamReader(skinConnection.getInputStream()); + final JsonObject response = new JsonParser().parse(skinStream).getAsJsonObject(); + final String uuid = response.get("uuid").getAsString(); + final JsonObject rawSkin = response.getAsJsonObject("textures").getAsJsonObject("raw"); + final String texture = rawSkin.get("value").getAsString(); + final String signature = rawSkin.get("signature").getAsString(); + skinStream.close(); + + final PlayerProfile textureProfile = player.getPlayerProfile(); + textureProfile.clearProperties(); + textureProfile.setProperty(new ProfileProperty("textures", texture, signature)); + + player.sendMessage("Successfully set your skin to " + name + "'s"); + new BukkitRunnable() { + public void run() { + player.setPlayerProfile(textureProfile); + } + }.runTask(main); + } else { + player.sendMessage("A player with that username doesn't exist"); + } + + skinConnection.disconnect(); + } catch (Exception exception) { + } + } + }.runTaskAsynchronously(main); } return true; } diff --git a/src/main/java/pw/kaboom/extras/commands/CommandUsername.java b/src/main/java/pw/kaboom/extras/commands/CommandUsername.java index 4f82dd0..3de2806 100644 --- a/src/main/java/pw/kaboom/extras/commands/CommandUsername.java +++ b/src/main/java/pw/kaboom/extras/commands/CommandUsername.java @@ -27,60 +27,6 @@ class CommandUsername implements CommandExecutor { this.main = main; } - private void changeUsernameSkin(final Player player, final String[] name) { - new BukkitRunnable() { - public void run() { - try { - String texture = ""; - String signature = ""; - - final String nameColor = ChatColor.translateAlternateColorCodes('&', String.join(" ", name)); - final String nameShort = nameColor.substring(0, Math.min(16, nameColor.length())); - - final URL nameUrl = new URL("https://api.mojang.com/users/profiles/minecraft/" + nameShort); - final HttpsURLConnection nameConnection = (HttpsURLConnection) nameUrl.openConnection(); - - if (nameConnection.getResponseCode() == HttpsURLConnection.HTTP_OK) { - final InputStreamReader nameStream = new InputStreamReader(nameConnection.getInputStream()); - final String uuid = new JsonParser().parse(nameStream).getAsJsonObject().get("id").getAsString(); - nameStream.close(); - nameConnection.disconnect(); - - final URL uuidUrl = new URL("https://sessionserver.mojang.com/session/minecraft/profile/" + uuid + "?unsigned=false"); - final HttpsURLConnection uuidConnection = (HttpsURLConnection) uuidUrl.openConnection(); - - if (uuidConnection.getResponseCode() == HttpsURLConnection.HTTP_OK) { - final InputStreamReader uuidStream = new InputStreamReader(uuidConnection.getInputStream()); - final JsonObject response = new JsonParser().parse(uuidStream).getAsJsonObject().get("properties").getAsJsonArray().get(0).getAsJsonObject(); - texture = response.get("value").getAsString(); - signature = response.get("signature").getAsString(); - - uuidStream.close(); - uuidConnection.disconnect(); - } - } - - final PlayerProfile profile = player.getPlayerProfile(); - profile.clearProperties(); - profile.setName(nameShort); - - if (!("".equals(texture)) && - !("".equals(signature))) { - profile.setProperty(new ProfileProperty("textures", texture, signature)); - } - - new BukkitRunnable() { - public void run() { - player.setPlayerProfile(profile); - player.sendMessage("Successfully set your username to \"" + nameShort + "\""); - } - }.runTask(main); - } catch (Exception exception) { - } - } - }.runTaskAsynchronously(main); - } - public boolean onCommand(CommandSender sender, Command command, String label, final String[] args) { final Player player = (Player) sender; @@ -88,7 +34,49 @@ class CommandUsername implements CommandExecutor { player.sendMessage(ChatColor.RED + "Usage: /" + label + " "); } else { final String[] name = args; - changeUsernameSkin(player, name); + + new BukkitRunnable() { + public void run() { + try { + String texture = ""; + String signature = ""; + + final String nameColor = ChatColor.translateAlternateColorCodes('&', String.join(" ", name)); + final String nameShort = nameColor.substring(0, Math.min(16, nameColor.length())); + + final URL skinUrl = new URL("https://api.ashcon.app/mojang/v2/user/" + nameShort); + final HttpsURLConnection skinConnection = (HttpsURLConnection) skinUrl.openConnection(); + + if (skinConnection.getResponseCode() == HttpsURLConnection.HTTP_OK) { + final InputStreamReader skinStream = new InputStreamReader(skinConnection.getInputStream()); + final JsonObject response = new JsonParser().parse(skinStream).getAsJsonObject(); + final String uuid = response.get("uuid").getAsString(); + final JsonObject rawSkin = response.getAsJsonObject("textures").getAsJsonObject("raw"); + texture = rawSkin.get("value").getAsString(); + signature = rawSkin.get("signature").getAsString(); + skinStream.close(); + } + + skinConnection.disconnect(); + + final PlayerProfile profile = player.getPlayerProfile(); + profile.setName(nameShort); + + if (!("".equals(texture)) && + !("".equals(signature))) { + profile.setProperty(new ProfileProperty("textures", texture, signature)); + } + + player.sendMessage("Successfully set your username to \"" + nameShort + "\""); + new BukkitRunnable() { + public void run() { + player.setPlayerProfile(profile); + } + }.runTask(main); + } catch (Exception exception) { + } + } + }.runTaskAsynchronously(main); } return true; } diff --git a/src/main/java/pw/kaboom/extras/modules/block/BlockCheck.java b/src/main/java/pw/kaboom/extras/modules/block/BlockCheck.java index b7e1ab8..72ef02f 100644 --- a/src/main/java/pw/kaboom/extras/modules/block/BlockCheck.java +++ b/src/main/java/pw/kaboom/extras/modules/block/BlockCheck.java @@ -1,11 +1,16 @@ package pw.kaboom.extras; +import org.bukkit.block.BlockState; +import org.bukkit.block.CommandBlock; + import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.block.BlockPlaceEvent; import org.bukkit.event.block.SignChangeEvent; +import org.bukkit.event.world.ChunkLoadEvent; + class BlockCheck implements Listener { @EventHandler void onBlockPlace(BlockPlaceEvent event) { @@ -20,6 +25,17 @@ class BlockCheck implements Listener { } } + @EventHandler + void onChunkLoad(ChunkLoadEvent event) { + if (!event.isNewChunk()) { + for (BlockState block : event.getChunk().getTileEntities()) { + if (block instanceof CommandBlock) { + block.update(); + } + } + } + } + @EventHandler void onSignChange(SignChangeEvent event) { try { diff --git a/src/main/java/pw/kaboom/extras/modules/player/PlayerConnection.java b/src/main/java/pw/kaboom/extras/modules/player/PlayerConnection.java index db215aa..63949b8 100644 --- a/src/main/java/pw/kaboom/extras/modules/player/PlayerConnection.java +++ b/src/main/java/pw/kaboom/extras/modules/player/PlayerConnection.java @@ -44,35 +44,26 @@ class PlayerConnection implements Listener { main.interactMillisList.put(event.getUniqueId(), System.currentTimeMillis()); try { - final URL nameUrl = new URL("https://api.mojang.com/users/profiles/minecraft/" + event.getName()); - final HttpsURLConnection nameConnection = (HttpsURLConnection) nameUrl.openConnection(); + final URL skinUrl = new URL("https://api.ashcon.app/mojang/v2/user/" + event.getName()); + final HttpsURLConnection skinConnection = (HttpsURLConnection) skinUrl.openConnection(); - if (nameConnection != null && - nameConnection.getResponseCode() == HttpsURLConnection.HTTP_OK) { - final InputStreamReader nameStream = new InputStreamReader(nameConnection.getInputStream()); - final String uuid = new JsonParser().parse(nameStream).getAsJsonObject().get("id").getAsString(); - nameStream.close(); - nameConnection.disconnect(); + if (skinConnection.getResponseCode() == HttpsURLConnection.HTTP_OK) { + final InputStreamReader skinStream = new InputStreamReader(skinConnection.getInputStream()); + final JsonObject response = new JsonParser().parse(skinStream).getAsJsonObject(); + final String uuid = response.get("uuid").getAsString(); + final JsonObject rawSkin = response.getAsJsonObject("textures").getAsJsonObject("raw"); + final String texture = rawSkin.get("value").getAsString(); + final String signature = rawSkin.get("signature").getAsString(); + skinStream.close(); - final URL uuidUrl = new URL("https://sessionserver.mojang.com/session/minecraft/profile/" + uuid + "?unsigned=false"); - final HttpsURLConnection uuidConnection = (HttpsURLConnection) uuidUrl.openConnection(); + final PlayerProfile textureProfile = event.getPlayerProfile(); + textureProfile.clearProperties(); + textureProfile.setProperty(new ProfileProperty("textures", texture, signature)); - if (uuidConnection != null && - uuidConnection.getResponseCode() == HttpsURLConnection.HTTP_OK) { - final InputStreamReader uuidStream = new InputStreamReader(uuidConnection.getInputStream()); - final JsonObject response = new JsonParser().parse(uuidStream).getAsJsonObject().get("properties").getAsJsonArray().get(0).getAsJsonObject(); - final String texture = response.get("value").getAsString(); - final String signature = response.get("signature").getAsString(); - uuidStream.close(); - uuidConnection.disconnect(); - - final PlayerProfile textureProfile = event.getPlayerProfile(); - textureProfile.clearProperties(); - textureProfile.setProperty(new ProfileProperty("textures", texture, signature)); - - main.playerProfile.put(event.getName(), textureProfile); - } + main.playerProfile.put(event.getName(), textureProfile); } + + skinConnection.disconnect(); } catch (Exception exception) { } } diff --git a/src/main/java/pw/kaboom/extras/modules/player/PlayerDamage.java b/src/main/java/pw/kaboom/extras/modules/player/PlayerDamage.java index 23a17e1..2ff5f20 100644 --- a/src/main/java/pw/kaboom/extras/modules/player/PlayerDamage.java +++ b/src/main/java/pw/kaboom/extras/modules/player/PlayerDamage.java @@ -24,12 +24,8 @@ class PlayerDamage implements Listener { @EventHandler void onEntityDamage(EntityDamageEvent event) { if (event.getEntityType() == EntityType.PLAYER) { - if (((event.getCause() == DamageCause.CUSTOM || - event.getCause() == DamageCause.SUICIDE) && - event.getDamage() == Short.MAX_VALUE) || - (event.getCause() == DamageCause.VOID && - event.getDamage() == Float.MAX_VALUE)) { - event.setDamage(Float.MAX_VALUE); + if (event.getCause() == DamageCause.VOID && + event.getDamage() == Float.MAX_VALUE) { event.setCancelled(true); } } @@ -60,10 +56,7 @@ class PlayerDamage implements Listener { onlinePlayer.sendMessage(event.getDeathMessage()); } - if ((player.getLastDamageCause() != null && - player.getLastDamageCause().getCause() == DamageCause.SUICIDE && - player.getLastDamageCause().getDamage() == Float.MAX_VALUE) || - maxHealthLow) { + if (maxHealthLow) { return; } diff --git a/src/main/java/pw/kaboom/extras/modules/server/ServerCommand.java b/src/main/java/pw/kaboom/extras/modules/server/ServerCommand.java index 264472e..d0a3ca8 100644 --- a/src/main/java/pw/kaboom/extras/modules/server/ServerCommand.java +++ b/src/main/java/pw/kaboom/extras/modules/server/ServerCommand.java @@ -10,6 +10,8 @@ import org.bukkit.event.Listener; import org.bukkit.event.server.ServerCommandEvent; +import org.bukkit.event.world.ChunkLoadEvent; + class ServerCommand implements Listener { private Main main; public ServerCommand(Main main) {