aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorbowser0000 <bowser0000@gmail.com>2021-09-02 22:45:50 -0400
committerbowser0000 <bowser0000@gmail.com>2021-09-02 22:45:50 -0400
commit39741480a6321e49dd36f72b41d99478efe88184 (patch)
tree14b6eaa348c1347bd58309aad74b2d8f2bcb2505 /src/main/java
parentaa78d52025faa74568ccdb3d299c0eb51f29aa90 (diff)
downloadSkyblockMod-39741480a6321e49dd36f72b41d99478efe88184.tar.gz
SkyblockMod-39741480a6321e49dd36f72b41d99478efe88184.tar.bz2
SkyblockMod-39741480a6321e49dd36f72b41d99478efe88184.zip
Add /inventory command
Also add returns on API commands when API key is not set
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/me/Danker/DankersSkyblockMod.java9
-rw-r--r--src/main/java/me/Danker/commands/ArmourCommand.java1
-rw-r--r--src/main/java/me/Danker/commands/BankCommand.java1
-rw-r--r--src/main/java/me/Danker/commands/DungeonsCommand.java1
-rw-r--r--src/main/java/me/Danker/commands/FairySoulsCommand.java1
-rw-r--r--src/main/java/me/Danker/commands/GuildOfCommand.java1
-rw-r--r--src/main/java/me/Danker/commands/ImportFishingCommand.java1
-rw-r--r--src/main/java/me/Danker/commands/InventoryCommand.java161
-rw-r--r--src/main/java/me/Danker/commands/PetsCommand.java1
-rw-r--r--src/main/java/me/Danker/commands/SkillsCommand.java1
-rw-r--r--src/main/java/me/Danker/commands/SkyblockPlayersCommand.java1
-rw-r--r--src/main/java/me/Danker/commands/SlayerCommand.java1
12 files changed, 180 insertions, 0 deletions
diff --git a/src/main/java/me/Danker/DankersSkyblockMod.java b/src/main/java/me/Danker/DankersSkyblockMod.java
index d9da871..d1b797f 100644
--- a/src/main/java/me/Danker/DankersSkyblockMod.java
+++ b/src/main/java/me/Danker/DankersSkyblockMod.java
@@ -197,6 +197,7 @@ public class DankersSkyblockMod {
ClientCommandHandler.instance.registerCommand(new GetkeyCommand());
ClientCommandHandler.instance.registerCommand(new GuildOfCommand());
ClientCommandHandler.instance.registerCommand(new ImportFishingCommand());
+ ClientCommandHandler.instance.registerCommand(new InventoryCommand());
ClientCommandHandler.instance.registerCommand(new LobbyBankCommand());
ClientCommandHandler.instance.registerCommand(new LobbySkillsCommand());
ClientCommandHandler.instance.registerCommand(new LootCommand());
@@ -442,6 +443,9 @@ public class DankersSkyblockMod {
case "crystalwaypoints":
mc.displayGuiScreen(new CrystalHollowWaypointsGui(1));
break;
+ case "inventory":
+ mc.displayGuiScreen(InventoryCommand.chest);
+ break;
}
}
guiToOpen = null;
@@ -467,6 +471,11 @@ public class DankersSkyblockMod {
return; // Left click, middle click or right click
if (!Mouse.getEventButtonState()) return;
+ if (event.gui == InventoryCommand.chest) {
+ event.setCanceled(true);
+ return;
+ }
+
if (event.gui instanceof GuiChest) {
Container containerChest = ((GuiChest) event.gui).inventorySlots;
if (containerChest instanceof ContainerChest) {
diff --git a/src/main/java/me/Danker/commands/ArmourCommand.java b/src/main/java/me/Danker/commands/ArmourCommand.java
index 9b6630c..e9a20ee 100644
--- a/src/main/java/me/Danker/commands/ArmourCommand.java
+++ b/src/main/java/me/Danker/commands/ArmourCommand.java
@@ -67,6 +67,7 @@ public class ArmourCommand extends CommandBase {
String key = ConfigHandler.getString("api", "APIKey");
if (key.equals("")) {
player.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + "API key not set. Use /setkey."));
+ return;
}
// Get UUID for Hypixel API requests
diff --git a/src/main/java/me/Danker/commands/BankCommand.java b/src/main/java/me/Danker/commands/BankCommand.java
index 0de6bde..e4a8eee 100644
--- a/src/main/java/me/Danker/commands/BankCommand.java
+++ b/src/main/java/me/Danker/commands/BankCommand.java
@@ -62,6 +62,7 @@ public class BankCommand extends CommandBase {
String key = ConfigHandler.getString("api", "APIKey");
if (key.equals("")) {
player.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + "API key not set. Use /setkey."));
+ return;
}
// Get UUID for Hypixel API requests
diff --git a/src/main/java/me/Danker/commands/DungeonsCommand.java b/src/main/java/me/Danker/commands/DungeonsCommand.java
index 482bcd0..31df680 100644
--- a/src/main/java/me/Danker/commands/DungeonsCommand.java
+++ b/src/main/java/me/Danker/commands/DungeonsCommand.java
@@ -55,6 +55,7 @@ public class DungeonsCommand extends CommandBase {
String key = ConfigHandler.getString("api", "APIKey");
if (key.equals("")) {
player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "API key not set. Use /setkey."));
+ return;
}
// Get UUID for Hypixel API requests
diff --git a/src/main/java/me/Danker/commands/FairySoulsCommand.java b/src/main/java/me/Danker/commands/FairySoulsCommand.java
index 00ac7bb..b0c67b2 100644
--- a/src/main/java/me/Danker/commands/FairySoulsCommand.java
+++ b/src/main/java/me/Danker/commands/FairySoulsCommand.java
@@ -52,6 +52,7 @@ public class FairySoulsCommand extends CommandBase {
String key = ConfigHandler.getString("api", "APIKey");
if(key.equals("")) {
player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "API key not set. Use /setkey."));
+ return;
}
// Get UUID for Hypixel API requests
diff --git a/src/main/java/me/Danker/commands/GuildOfCommand.java b/src/main/java/me/Danker/commands/GuildOfCommand.java
index e9ac8ba..a97196e 100644
--- a/src/main/java/me/Danker/commands/GuildOfCommand.java
+++ b/src/main/java/me/Danker/commands/GuildOfCommand.java
@@ -56,6 +56,7 @@ public class GuildOfCommand extends CommandBase {
String key = ConfigHandler.getString("api", "APIKey");
if (key.equals("")) {
player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "API key not set. Use /setkey."));
+ return;
}
// Get UUID for Hypixel API requests
diff --git a/src/main/java/me/Danker/commands/ImportFishingCommand.java b/src/main/java/me/Danker/commands/ImportFishingCommand.java
index f27aa8a..3ee5ebd 100644
--- a/src/main/java/me/Danker/commands/ImportFishingCommand.java
+++ b/src/main/java/me/Danker/commands/ImportFishingCommand.java
@@ -42,6 +42,7 @@ public class ImportFishingCommand extends CommandBase {
String key = ConfigHandler.getString("api", "APIKey");
if (key.equals("")) {
player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "API key not set. Use /setkey."));
+ return;
}
player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Importing your fishing stats..."));
diff --git a/src/main/java/me/Danker/commands/InventoryCommand.java b/src/main/java/me/Danker/commands/InventoryCommand.java
new file mode 100644
index 0000000..c1f5cbf
--- /dev/null
+++ b/src/main/java/me/Danker/commands/InventoryCommand.java
@@ -0,0 +1,161 @@
+package me.Danker.commands;
+
+import com.google.gson.JsonObject;
+import me.Danker.DankersSkyblockMod;
+import me.Danker.handlers.APIHandler;
+import me.Danker.handlers.ConfigHandler;
+import me.Danker.utils.Utils;
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.gui.inventory.GuiChest;
+import net.minecraft.command.CommandBase;
+import net.minecraft.command.CommandException;
+import net.minecraft.command.ICommandSender;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.init.Blocks;
+import net.minecraft.init.Items;
+import net.minecraft.inventory.IInventory;
+import net.minecraft.inventory.InventoryBasic;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.CompressedStreamTools;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.nbt.NBTTagList;
+import net.minecraft.util.BlockPos;
+import net.minecraft.util.ChatComponentText;
+import net.minecraft.util.EnumChatFormatting;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Base64;
+import java.util.List;
+
+public class InventoryCommand extends CommandBase {
+
+ public static GuiChest chest = null;
+
+ @Override
+ public String getCommandName() {
+ return "inventory";
+ }
+
+ @Override
+ public String getCommandUsage(ICommandSender arg0) {
+ return "/" + getCommandName() + " [name]";
+ }
+
+ public static String usage(ICommandSender arg0) {
+ return new InventoryCommand().getCommandUsage(arg0);
+ }
+
+ @Override
+ public int getRequiredPermissionLevel() {
+ return 0;
+ }
+
+ @Override
+ public List<String> addTabCompletionOptions(ICommandSender sender, String[] args, BlockPos pos) {
+ if (args.length == 1) {
+ return Utils.getMatchingPlayers(args[0]);
+ }
+ return null;
+ }
+
+ @Override
+ public void processCommand(ICommandSender arg0, String[] arg1) throws CommandException {
+ // MULTI THREAD DRIFTING
+ new Thread(() -> {
+ EntityPlayer player = (EntityPlayer) arg0;
+ Minecraft mc = Minecraft.getMinecraft();
+
+ // Check key
+ String key = ConfigHandler.getString("api", "APIKey");
+ if (key.equals("")) {
+ player.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + "API key not set. Use /setkey."));
+ return;
+ }
+
+ // Get UUID for Hypixel API requests
+ String username;
+ String uuid;
+ if (arg1.length == 0) {
+ username = player.getName();
+ uuid = player.getUniqueID().toString().replaceAll("[\\-]", "");
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Checking inventory of " + DankersSkyblockMod.SECONDARY_COLOUR + username));
+ } else {
+ username = arg1[0];
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Checking inventory of " + DankersSkyblockMod.SECONDARY_COLOUR + username));
+ uuid = APIHandler.getUUID(username);
+ }
+
+ // Find stats of latest profile
+ String latestProfile = APIHandler.getLatestProfileID(uuid, key);
+ if (latestProfile == null) return;
+
+ String profileURL = "https://api.hypixel.net/skyblock/profile?profile=" + latestProfile + "&key=" + key;
+ System.out.println("Fetching profile...");
+ JsonObject profileResponse = APIHandler.getResponse(profileURL, true);
+ if (!profileResponse.get("success").getAsBoolean()) {
+ String reason = profileResponse.get("cause").getAsString();
+ player.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + "Failed with reason: " + reason));
+ return;
+ }
+
+ System.out.println("Fetching inventory...");
+ JsonObject userObject = profileResponse.get("profile").getAsJsonObject().get("members").getAsJsonObject().get(uuid).getAsJsonObject();
+
+ IInventory inventory = new InventoryBasic(username + "'s Inventory:", true, 54);
+
+ String armourBase64 = userObject.get("inv_armor").getAsJsonObject().get("data").getAsString();
+ InputStream armourStream = new ByteArrayInputStream(Base64.getDecoder().decode(armourBase64));
+
+ try {
+ // Armour
+ NBTTagCompound armour = CompressedStreamTools.readCompressed(armourStream);
+ NBTTagList armourList = armour.getTagList("i", 10);
+
+ for (int i = 0; i < armourList.tagCount(); i++) {
+ NBTTagCompound item = armourList.getCompoundTagAt(i);
+ if (item.hasNoTags()) continue;
+ inventory.setInventorySlotContents(7 - i * 2, ItemStack.loadItemStackFromNBT(item));
+ }
+
+ ItemStack glass = new ItemStack(Blocks.stained_glass_pane, 1, 15);
+ glass.setStackDisplayName("");
+ for (int i = 0; i < 18; i++) {
+ if (i < 8 && i % 2 == 1) continue;
+ inventory.setInventorySlotContents(i, glass);
+ }
+
+ // Inventory
+ if (userObject.has("inv_contents")) {
+ String invBase64 = userObject.get("inv_contents").getAsJsonObject().get("data").getAsString();
+ InputStream invStream = new ByteArrayInputStream(Base64.getDecoder().decode(invBase64));
+
+ NBTTagCompound inv = CompressedStreamTools.readCompressed(invStream);
+ NBTTagList invList = inv.getTagList("i", 10);
+
+ for (int i = 0; i < invList.tagCount(); i++) {
+ NBTTagCompound item = invList.getCompoundTagAt(i);
+ if (item.hasNoTags()) continue;
+ inventory.setInventorySlotContents(i < 9 ? i + 45 : i + 9, ItemStack.loadItemStackFromNBT(item));
+ }
+ } else {
+ ItemStack notEnabled = new ItemStack(Blocks.barrier, 1, 0);
+ notEnabled.setStackDisplayName(EnumChatFormatting.RED + "Inventory API not enabled.");
+ for (int i = 18; i < 54; i++) {
+ inventory.setInventorySlotContents(i, notEnabled);
+ }
+ }
+ } catch (IOException ex) {
+ player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "An error has occurred while reading inventory data. See logs for more info."));
+ ex.printStackTrace();
+ }
+
+ chest = new GuiChest(player.inventory, inventory);
+ DankersSkyblockMod.guiToOpen = "inventory";
+
+ // mc.displayGuiScreen(new GuiChest(player.inventory, inventory));
+ }).start();
+ }
+
+}
diff --git a/src/main/java/me/Danker/commands/PetsCommand.java b/src/main/java/me/Danker/commands/PetsCommand.java
index f35fee4..e909fab 100644
--- a/src/main/java/me/Danker/commands/PetsCommand.java
+++ b/src/main/java/me/Danker/commands/PetsCommand.java
@@ -155,6 +155,7 @@ public class PetsCommand extends CommandBase {
String key = ConfigHandler.getString("api", "APIKey");
if (key.equals("")) {
player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "API key not set. Use /setkey."));
+ return;
}
// Get UUID for Hypixel API requests
diff --git a/src/main/java/me/Danker/commands/SkillsCommand.java b/src/main/java/me/Danker/commands/SkillsCommand.java
index 533c804..f17c79d 100644
--- a/src/main/java/me/Danker/commands/SkillsCommand.java
+++ b/src/main/java/me/Danker/commands/SkillsCommand.java
@@ -54,6 +54,7 @@ public class SkillsCommand extends CommandBase {
String key = ConfigHandler.getString("api", "APIKey");
if (key.equals("")) {
player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "API key not set. Use /setkey."));
+ return;
}
// Get UUID for Hypixel API requests
diff --git a/src/main/java/me/Danker/commands/SkyblockPlayersCommand.java b/src/main/java/me/Danker/commands/SkyblockPlayersCommand.java
index ced8906..0923b57 100644
--- a/src/main/java/me/Danker/commands/SkyblockPlayersCommand.java
+++ b/src/main/java/me/Danker/commands/SkyblockPlayersCommand.java
@@ -53,6 +53,7 @@ public class SkyblockPlayersCommand extends CommandBase {
String key = ConfigHandler.getString("api", "APIKey");
if (key.equals("")) {
player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "API key not set. Use /setkey."));
+ return;
}
String playersURL = "https://api.hypixel.net/gameCounts?key=" + key;
diff --git a/src/main/java/me/Danker/commands/SlayerCommand.java b/src/main/java/me/Danker/commands/SlayerCommand.java
index 4d17534..5444754 100644
--- a/src/main/java/me/Danker/commands/SlayerCommand.java
+++ b/src/main/java/me/Danker/commands/SlayerCommand.java
@@ -62,6 +62,7 @@ public class SlayerCommand extends CommandBase {
String key = ConfigHandler.getString("api", "APIKey");
if (key.equals("")) {
player.addChatMessage(new ChatComponentText(DankersSkyblockMod.ERROR_COLOUR + "API key not set. Use /setkey."));
+ return;
}
// Get UUID for Hypixel API requests