diff options
| author | Cow <cow@volloeko.de> | 2020-07-31 19:10:56 +0200 |
|---|---|---|
| committer | Cow <cow@volloeko.de> | 2020-07-31 19:10:56 +0200 |
| commit | a9ba18c7178a58a88995af7edd9204cbe02638f8 (patch) | |
| tree | 4a1a8af12cf42945060787f9f9950bccb4f79199 /src/main/java/de/cowtipper/cowlection/data | |
| parent | 86737c14f70bd5936e9492d9f3b53c4702f5aa55 (diff) | |
| download | Cowlection-a9ba18c7178a58a88995af7edd9204cbe02638f8.tar.gz Cowlection-a9ba18c7178a58a88995af7edd9204cbe02638f8.tar.bz2 Cowlection-a9ba18c7178a58a88995af7edd9204cbe02638f8.zip | |
SkyBlock Dungeon Party Finder: Added lookup of joined players' armor
- can be disabled or changed with /moo config
Diffstat (limited to 'src/main/java/de/cowtipper/cowlection/data')
| -rw-r--r-- | src/main/java/de/cowtipper/cowlection/data/HySkyBlockStats.java | 44 |
1 files changed, 43 insertions, 1 deletions
diff --git a/src/main/java/de/cowtipper/cowlection/data/HySkyBlockStats.java b/src/main/java/de/cowtipper/cowlection/data/HySkyBlockStats.java index 86fb0a6..05c1dd6 100644 --- a/src/main/java/de/cowtipper/cowlection/data/HySkyBlockStats.java +++ b/src/main/java/de/cowtipper/cowlection/data/HySkyBlockStats.java @@ -4,7 +4,15 @@ import com.google.common.collect.ComparisonChain; import com.mojang.realmsclient.util.Pair; import com.mojang.util.UUIDTypeAdapter; import de.cowtipper.cowlection.util.Utils; - +import net.minecraft.nbt.CompressedStreamTools; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; +import net.minecraft.util.EnumChatFormatting; +import net.minecraftforge.common.util.Constants; +import org.apache.commons.codec.binary.Base64; + +import java.io.ByteArrayInputStream; +import java.io.IOException; import java.util.*; public class HySkyBlockStats { @@ -101,6 +109,7 @@ public class HySkyBlockStats { private long last_save; private long first_join; private double coin_purse; + private NbtData inv_armor; private List<String> crafted_generators; private int fairy_souls_collected = -1; private double experience_skill_farming = -1; @@ -183,6 +192,39 @@ public class HySkyBlockStats { pets.sort((p1, p2) -> ComparisonChain.start().compare(p2.active, p1.active).compare(p2.getRarity(), p1.getRarity()).compare(p2.exp, p1.exp).result()); return pets; } + + public List<String> getArmor() { + NBTTagCompound nbt = inv_armor.getDecodedData(); + List<String> armorList = new ArrayList<>(); + if (nbt.hasKey("i", Constants.NBT.TAG_LIST)) { + NBTTagList armor = nbt.getTagList("i", Constants.NBT.TAG_COMPOUND); + for (int i = 0; i < armor.tagCount(); i++) { + NBTTagCompound armorPiece = armor.getCompoundTagAt(i); + NBTTagCompound nbtDisplay = armorPiece.getCompoundTag("tag").getCompoundTag("display"); + if (nbtDisplay != null && nbtDisplay.hasKey("Name", Constants.NBT.TAG_STRING)) { + String itemName = nbtDisplay.getString("Name"); + armorList.add(0, itemName); + } else { + armorList.add(0, "" + EnumChatFormatting.GRAY + EnumChatFormatting.ITALIC + "(empty)"); + } + } + } + return armorList; + } + + private static class NbtData { + private int type; + private String data; + + private NBTTagCompound getDecodedData() { + try (ByteArrayInputStream bis = new ByteArrayInputStream(Base64.decodeBase64(this.data))) { + return CompressedStreamTools.readCompressed(bis); + } catch (IOException e) { + e.printStackTrace(); + return new NBTTagCompound(); + } + } + } } private static class SlayerBossDetails { |
