package xyz.etztech.qol.commands; import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParser; import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import xyz.etztech.qol.QoL; import xyz.etztech.qol.EtzTechUtil; import xyz.etztech.qol.Lang; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.URL; import java.util.Date; public class WikiCommand implements CommandExecutor { QoL plugin; public WikiCommand(QoL paramQoL) { this.plugin = paramQoL; plugin.getCommand("wiki").setExecutor(this); } @Override public boolean onCommand(CommandSender commandSender, Command command, String s, String[] args) { if (!commandSender.hasPermission("qol.wiki")) { EtzTechUtil.sms(commandSender, Lang.NO_PERMISSION.getDef()); return true; } if (args.length < 1) { EtzTechUtil.sms(commandSender, ChatColor.RED + "Please give a search argument."); return true; } try { Date changedToAt; JsonObject obj; InputStream response = new URL(String.format("https://minecraft.gamepedia.com/api.php?action=opensearch&format=json&formatversion=2&search=%s&namespace=0&limit=1", args[0])).openStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(response)); JsonArray jsonArray = new JsonParser().parse(reader.readLine()).getAsJsonArray(); StringBuilder message = new StringBuilder(ChatColor.GREEN + jsonArray.get(1).getAsJsonArray().get(0).getAsString()); message.append(": "); message.append(ChatColor.WHITE + jsonArray.get(3).getAsJsonArray().get(0).getAsString()); EtzTechUtil.sms(commandSender, message.toString()); } catch (IOException e) { EtzTechUtil.sms(commandSender, ChatColor.RED + "Minecraft wiki API returned nothing."); } catch (IndexOutOfBoundsException e) { EtzTechUtil.sms(commandSender, ChatColor.RED + String.format("Nothing was found on the wiki using: %s", args[0])); } return true; } }