hypixel/models/
resources.rs1use std::collections::HashMap;
2
3use serde::{Deserialize, Serialize};
4use serde_json::Value;
5
6use super::common::JsonObject;
7
8#[derive(Debug, Clone, Deserialize, Serialize)]
10pub struct Game {
11 #[serde(default)]
12 pub id: i32,
13 #[serde(default)]
14 pub name: String,
15 #[serde(rename = "databaseName", default)]
16 pub database_name: String,
17 #[serde(rename = "modeNames", default)]
18 pub mode_names: HashMap<String, String>,
19 #[serde(default)]
20 pub retired: bool,
21 #[serde(default)]
22 pub legacy: bool,
23}
24
25#[derive(Debug, Clone, Deserialize, Serialize)]
27pub struct SkillsResource {
28 #[serde(default)]
29 pub version: String,
30 #[serde(default)]
31 pub skills: HashMap<String, Skill>,
32}
33
34#[derive(Debug, Clone, Deserialize, Serialize)]
36pub struct Skill {
37 #[serde(default)]
38 pub name: String,
39 #[serde(default)]
40 pub description: String,
41 #[serde(rename = "maxLevel", default)]
42 pub max_level: i32,
43 #[serde(default)]
44 pub levels: Vec<SkillLevel>,
45}
46
47#[derive(Debug, Clone, Deserialize, Serialize)]
49pub struct SkillLevel {
50 #[serde(default)]
51 pub level: i32,
52 #[serde(rename = "totalExpRequired", default)]
53 pub total_exp_required: f64,
54 #[serde(default)]
55 pub unlocks: Vec<String>,
56}
57
58#[derive(Debug, Clone, Deserialize, Serialize)]
60pub struct SkyBlockItem {
61 #[serde(default)]
62 pub id: String,
63 #[serde(default)]
64 pub material: Option<String>,
65 #[serde(default)]
66 pub name: Option<String>,
67 #[serde(default)]
68 pub tier: Option<String>,
69 #[serde(default)]
70 pub npc_sell_price: Option<f64>,
71 #[serde(default)]
72 pub category: Option<String>,
73 #[serde(flatten)]
74 pub extra: JsonObject,
75}
76
77#[derive(Debug, Clone, Deserialize, Serialize)]
79pub struct CollectionsResource {
80 #[serde(default)]
81 pub version: String,
82 #[serde(default)]
83 pub collections: HashMap<String, Value>,
84}
85
86#[derive(Debug, Clone, Deserialize, Serialize)]
88pub struct ResourcePack {
89 #[serde(default)]
90 pub id: String,
91 #[serde(rename = "deployId", default)]
92 pub deploy_id: String,
93 #[serde(rename = "lastUpdated", default)]
94 pub last_updated: i64,
95 #[serde(default)]
96 pub versions: Vec<ResourcePackVersion>,
97 #[serde(flatten)]
98 pub extra: JsonObject,
99}
100
101#[derive(Debug, Clone, Deserialize, Serialize)]
103pub struct ResourcePackVersion {
104 #[serde(rename = "packFormat", default)]
105 pub pack_format: i32,
106 #[serde(default)]
107 pub hash: String,
108 #[serde(default)]
109 pub url: String,
110 #[serde(flatten)]
111 pub extra: JsonObject,
112}
113
114#[derive(Debug, Clone, Deserialize, Serialize)]
116pub struct ElectionResource {
117 #[serde(default)]
118 pub mayor: Option<Value>,
119 #[serde(default)]
120 pub current: Option<Value>,
121}
122
123#[derive(Debug, Clone, Deserialize)]
124pub(crate) struct GamesResponse {
125 #[serde(default)]
126 pub games: HashMap<String, Game>,
127}
128
129#[derive(Debug, Clone, Deserialize)]
130pub(crate) struct ItemsResponse {
131 #[serde(default)]
132 pub items: Vec<SkyBlockItem>,
133}
134
135#[derive(Debug, Clone, Deserialize)]
136pub(crate) struct PacksResponse {
137 #[serde(default)]
138 pub packs: Vec<ResourcePack>,
139}