Skip to main content

hypixel/models/skyblock/
extras.rs

1use serde::{Deserialize, Serialize};
2use serde_json::Value;
3
4use crate::models::common::JsonObject;
5
6/// A player's museum, as returned by `skyblock/museum`.
7#[derive(Debug, Clone, Deserialize, Serialize)]
8pub struct Museum {
9    #[serde(default)]
10    pub value: i64,
11    #[serde(default)]
12    pub appraisal: bool,
13    #[serde(default)]
14    pub items: Value,
15    #[serde(default)]
16    pub special: Vec<Value>,
17    #[serde(flatten)]
18    pub extra: JsonObject,
19}
20
21/// A profile's garden, as returned by `skyblock/garden`.
22#[derive(Debug, Clone, Deserialize, Serialize)]
23pub struct Garden {
24    #[serde(default)]
25    pub uuid: String,
26    #[serde(rename = "garden_experience", default)]
27    pub garden_experience: i64,
28    #[serde(default)]
29    pub commission_data: Option<Value>,
30    #[serde(default)]
31    pub composter_data: Option<Value>,
32    #[serde(default)]
33    pub active_commissions: Option<Value>,
34    #[serde(default)]
35    pub resources_collected: Option<Value>,
36    #[serde(default)]
37    pub crop_upgrade_levels: Option<Value>,
38    #[serde(default)]
39    pub unlocked_plots_ids: Vec<String>,
40    #[serde(default)]
41    pub unlocked_barn_skins: Vec<String>,
42    #[serde(default)]
43    pub selected_barn_skin: Option<String>,
44    #[serde(flatten)]
45    pub extra: JsonObject,
46}
47
48/// An item on sale during a SkyBlock fire sale, from `skyblock/firesales`.
49#[derive(Debug, Clone, Deserialize, Serialize)]
50pub struct FireSale {
51    #[serde(default)]
52    pub item_id: String,
53    #[serde(default)]
54    pub start: i64,
55    #[serde(default)]
56    pub end: i64,
57    #[serde(default)]
58    pub amount: i64,
59    #[serde(default)]
60    pub price: i64,
61    #[serde(flatten)]
62    pub extra: JsonObject,
63}
64
65/// A SkyBlock news item, as returned by `skyblock/news`.
66#[derive(Debug, Clone, Deserialize, Serialize)]
67pub struct NewsItem {
68    #[serde(default)]
69    pub item: Value,
70    #[serde(default)]
71    pub link: String,
72    #[serde(default)]
73    pub title: String,
74    #[serde(default)]
75    pub text: String,
76    #[serde(flatten)]
77    pub extra: JsonObject,
78}
79
80#[derive(Debug, Clone, Deserialize)]
81pub(crate) struct MuseumResponse {
82    pub profile: Option<Museum>,
83}
84
85#[derive(Debug, Clone, Deserialize)]
86pub(crate) struct GardenResponse {
87    pub garden: Option<Garden>,
88}
89
90#[derive(Debug, Clone, Deserialize)]
91pub(crate) struct FireSalesResponse {
92    #[serde(default)]
93    pub sales: Vec<FireSale>,
94}
95
96#[derive(Debug, Clone, Deserialize)]
97pub(crate) struct NewsResponse {
98    #[serde(default)]
99    pub items: Vec<NewsItem>,
100}
101
102#[derive(Debug, Clone, Deserialize)]
103pub(crate) struct BingoEventsResponse {
104    #[serde(default)]
105    pub events: Vec<Value>,
106}