1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
|
package me.xmrvizzy.skyblocker.skyblock.api;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonObject;
import marcono1234.gson.recordadapter.RecordTypeAdapterFactory;
import me.xmrvizzy.skyblocker.skyblock.api.records.PlayerProfiles;
import me.xmrvizzy.skyblocker.skyblock.itemlist.ItemFixerUpper;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.nbt.*;
import net.minecraft.text.Text;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.UUID;
public class ProfileUtils {
public static PlayerProfiles getProfiles(String name){
try {
URL url = new URL("https://sky.shiiyu.moe/api/v2/profile/" + name);
InputStreamReader reader = new InputStreamReader(url.openStream());
Gson gson = new GsonBuilder()
.registerTypeAdapterFactory(RecordTypeAdapterFactory.builder().allowMissingComponentValues().create())
.serializeNulls()
.create();
return gson.fromJson(reader, PlayerProfiles.class);
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
public static List<ItemStack> itemsFromApiInventory(me.xmrvizzy.skyblocker.skyblock.api.records.Items.Item[] items){
List<ItemStack> inventory = new ArrayList<>();
for (me.xmrvizzy.skyblocker.skyblock.api.records.Items.Item item : items){
try{
if (item.tag() != null){
JsonObject obj = new Gson().fromJson(Files.readString(Path.of("./config/skyblocker/items-repo/items/" + item.tag().extraAttributes().id() + ".json")), JsonObject.class);
NbtCompound root = new NbtCompound();
root.put("Count", NbtByte.of(item.count()));
root.put("id", NbtString.of(ItemFixerUpper.convertItemId(obj.get("itemid").getAsString(), obj.get("damage").getAsInt())));
NbtCompound tag = new NbtCompound();
root.put("tag", tag);
if (item.tag().ench() != null){
NbtList enchantments = new NbtList();
enchantments.add(new NbtCompound());
tag.put("Enchantments", enchantments);
}
NbtCompound extraAttributes = new NbtCompound();
tag.put("ExtraAttributes", extraAttributes);
extraAttributes.put("id", NbtString.of(item.tag().extraAttributes().id()));
if (item.tag().extraAttributes().enchantments() != null){
NbtCompound enchantments = new NbtCompound();
extraAttributes.put("enchantments", enchantments);
for (String enchant : item.tag().extraAttributes().enchantments().keySet()){
enchantments.put(enchant, NbtInt.of(item.tag().extraAttributes().enchantments().get(enchant)));
}
}
NbtCompound display = new NbtCompound();
tag.put("display", display);
display.put("Name", NbtString.of(Text.Serializer.toJson(Text.of(item.tag().display().name()))));
if (item.tag().display().lore() != null){
NbtList lore = new NbtList();
display.put("Lore", lore);
for (int i = 0; i < item.tag().display().lore().length; i++) {
if (i < item.tag().display().lore().length - 1)
lore.add(i, NbtString.of(Text.Serializer.toJson(Text.of(Arrays.stream(item.tag().display().lore()).toArray()[i].toString()))));
}
}
if (item.tag().display().color() != null){
display.put("color", NbtInt.of(item.tag().display().color()));
}
if (item.tag().skullOwner() != null){
NbtCompound skullOwner = new NbtCompound();
tag.put("SkullOwner", skullOwner);
UUID uuid = UUID.fromString(item.tag().skullOwner().id());
skullOwner.put("Id", NbtHelper.fromUuid(uuid));
skullOwner.put("Name", NbtString.of(item.tag().extraAttributes().id()));
NbtCompound properties = new NbtCompound();
skullOwner.put("Properties", properties);
NbtList textures = new NbtList();
properties.put("textures", textures);
NbtCompound texture = new NbtCompound();
textures.add(texture);
texture.put("Value", NbtString.of(item.tag().skullOwner().properties().textures()[0].get("Value")));
}
inventory.add(ItemStack.fromNbt(root));
} else {
inventory.add(Items.AIR.getDefaultStack());
}
} catch (IOException e) {
e.printStackTrace();
}
}
return inventory;
}
}
|