Skip to content

Commit 49d4fa4

Browse files
authored
Merge pull request #611 from ItzKatze/master
ike
2 parents b79c191 + 1c88d7b commit 49d4fa4

10 files changed

Lines changed: 502 additions & 25 deletions

File tree

type.hub/src/main/java/net/swofty/type/hub/gui/GUISeymour.java

Lines changed: 58 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,59 @@
88
import net.minestom.server.item.Material;
99
import net.swofty.commons.StringUtility;
1010
import net.swofty.commons.skyblock.item.ItemType;
11+
import net.swofty.commons.skyblock.statistics.ItemStatistic;
1112
import net.swofty.type.generic.gui.inventory.ItemStackCreator;
1213
import net.swofty.type.generic.gui.inventory.HypixelInventoryGUI;
1314
import net.swofty.type.generic.gui.inventory.item.GUIClickableItem;
15+
import net.swofty.type.skyblockgeneric.item.SkyBlockItem;
1416
import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer;
1517
import net.swofty.type.generic.user.HypixelPlayer;
1618

19+
import java.util.List;
20+
1721
public class GUISeymour extends HypixelInventoryGUI {
22+
private final List<SkyBlockItem> cheapTuxedoSet = List.of(
23+
new SkyBlockItem(ItemType.CHEAP_TUXEDO_CHESTPLATE),
24+
new SkyBlockItem(ItemType.CHEAP_TUXEDO_LEGGINGS),
25+
new SkyBlockItem(ItemType.CHEAP_TUXEDO_BOOTS)
26+
);
27+
28+
private final List<SkyBlockItem> fancyTuxedoSet = List.of(
29+
new SkyBlockItem(ItemType.FANCY_TUXEDO_CHESTPLATE),
30+
new SkyBlockItem(ItemType.FANCY_TUXEDO_LEGGINGS),
31+
new SkyBlockItem(ItemType.FANCY_TUXEDO_BOOTS)
32+
);
33+
34+
private final List<SkyBlockItem> elegantTuxedoSet = List.of(
35+
new SkyBlockItem(ItemType.ELEGANT_TUXEDO_CHESTPLATE),
36+
new SkyBlockItem(ItemType.ELEGANT_TUXEDO_LEGGINGS),
37+
new SkyBlockItem(ItemType.ELEGANT_TUXEDO_BOOTS)
38+
);
39+
40+
private final double cheapTuxedoPrice = 3_000_000;
41+
private final double fancyTuxedoPrice = 20_000_000;
42+
private final double elegantTuxedoPrice = 74_999_999;
43+
44+
private final double cheapTuxedoCritDamage = cheapTuxedoSet.stream()
45+
.mapToDouble(item -> item.getAttributeHandler().getStatistics().getOverall(ItemStatistic.CRIT_DAMAGE))
46+
.sum();
47+
private final double fancyTuxedoCritDamage = cheapTuxedoSet.stream()
48+
.mapToDouble(item -> item.getAttributeHandler().getStatistics().getOverall(ItemStatistic.CRIT_DAMAGE))
49+
.sum();
50+
private final double elegantTuxedoCritDamage = cheapTuxedoSet.stream()
51+
.mapToDouble(item -> item.getAttributeHandler().getStatistics().getOverall(ItemStatistic.CRIT_DAMAGE))
52+
.sum();
53+
54+
private final double cheapTuxedoIntelligence = cheapTuxedoSet.stream()
55+
.mapToDouble(item -> item.getAttributeHandler().getStatistics().getOverall(ItemStatistic.INTELLIGENCE))
56+
.sum();
57+
private final double fancyTuxedoIntelligence = cheapTuxedoSet.stream()
58+
.mapToDouble(item -> item.getAttributeHandler().getStatistics().getOverall(ItemStatistic.INTELLIGENCE))
59+
.sum();
60+
private final double elegantTuxedoIntelligence = cheapTuxedoSet.stream()
61+
.mapToDouble(item -> item.getAttributeHandler().getStatistics().getOverall(ItemStatistic.INTELLIGENCE))
62+
.sum();
63+
1864
public GUISeymour() {
1965
super("Seymour's Fancy Suits", InventoryType.CHEST_4_ROW);
2066
}
@@ -23,21 +69,16 @@ public void onOpen(InventoryGUIOpenEvent e) {
2369
fill(ItemStackCreator.createNamedItemStack(Material.BLACK_STAINED_GLASS_PANE));
2470
set(GUIClickableItem.getCloseItem(31));
2571

26-
double cheapTuxedoPrice = 3000000;
27-
double fancyTuxedoPrice = 20000000;
28-
double elegantTuxedoPrice = 74999999;
29-
3072
set(new GUIClickableItem(11) {
3173
@Override
3274
public void run(InventoryPreClickEvent e, HypixelPlayer p) {
3375
SkyBlockPlayer player = (SkyBlockPlayer) p;
3476
double coins = player.getCoins();
3577
if (coins < cheapTuxedoPrice) {
78+
player.sendMessage("§cYou don't have enough coins!");
3679
return;
3780
}
38-
player.addAndUpdateItem(ItemType.CHEAP_TUXEDO_CHESTPLATE);
39-
player.addAndUpdateItem(ItemType.CHEAP_TUXEDO_BOOTS);
40-
player.addAndUpdateItem(ItemType.CHEAP_TUXEDO_LEGGINGS);
81+
cheapTuxedoSet.forEach(player::addAndUpdateItem);
4182
player.playSuccessSound();
4283
player.removeCoins(cheapTuxedoPrice);
4384
}
@@ -48,8 +89,8 @@ public ItemStack.Builder getItem(HypixelPlayer p) {
4889
ItemStack.Builder builder = ItemStackCreator.getStack("§5Cheap Tuxedo", Material.LEATHER_CHESTPLATE, 1,
4990
"",
5091
"§8Complete suit",
51-
"§7Crit Damage: §c+100%",
52-
"§7Intelligence: §a+100",
92+
"§7Crit Damage: §c+" + (int) cheapTuxedoCritDamage + "%",
93+
"§7Intelligence: §a+" + (int) cheapTuxedoIntelligence,
5394
"",
5495
"§6Full Set Bonus: Dashing §7(0/3)",
5596
"§7Max Health set to §c75♥§7.",
@@ -72,11 +113,10 @@ public void run(InventoryPreClickEvent e, HypixelPlayer p) {
72113
SkyBlockPlayer player = (SkyBlockPlayer) p;
73114
double coins = player.getCoins();
74115
if (coins < fancyTuxedoPrice) {
116+
player.sendMessage("§cYou don't have enough coins!");
75117
return;
76118
}
77-
player.addAndUpdateItem(ItemType.FANCY_TUXEDO_CHESTPLATE);
78-
player.addAndUpdateItem(ItemType.FANCY_TUXEDO_BOOTS);
79-
player.addAndUpdateItem(ItemType.FANCY_TUXEDO_LEGGINGS);
119+
fancyTuxedoSet.forEach(player::addAndUpdateItem);
80120
player.playSuccessSound();
81121
player.removeCoins(fancyTuxedoPrice);
82122
}
@@ -87,8 +127,8 @@ public ItemStack.Builder getItem(HypixelPlayer p) {
87127
ItemStack.Builder builder = ItemStackCreator.getStack("§6Fancy Tuxedo", Material.LEATHER_CHESTPLATE, 1,
88128
"",
89129
"§8Complete suit",
90-
"§7Crit Damage: §c+150%",
91-
"§7Intelligence: §a+300",
130+
"§7Crit Damage: §c+" + (int) fancyTuxedoCritDamage + "%",
131+
"§7Intelligence: §a+" + (int) fancyTuxedoIntelligence,
92132
"",
93133
"§6Full Set Bonus: Dashing §7(0/3)",
94134
"§7Max Health set to §c150♥§7.",
@@ -112,11 +152,10 @@ public void run(InventoryPreClickEvent e, HypixelPlayer p) {
112152
SkyBlockPlayer player = (SkyBlockPlayer) p;
113153
double coins = player.getCoins();
114154
if (coins < elegantTuxedoPrice) {
155+
player.sendMessage("§cYou don't have enough coins!");
115156
return;
116157
}
117-
player.addAndUpdateItem(ItemType.ELEGANT_TUXEDO_CHESTPLATE);
118-
player.addAndUpdateItem(ItemType.ELEGANT_TUXEDO_BOOTS);
119-
player.addAndUpdateItem(ItemType.ELEGANT_TUXEDO_LEGGINGS);
158+
elegantTuxedoSet.forEach(player::addAndUpdateItem);
120159
player.playSuccessSound();
121160
player.removeCoins(elegantTuxedoPrice);
122161
}
@@ -127,8 +166,8 @@ public ItemStack.Builder getItem(HypixelPlayer p) {
127166
ItemStack.Builder builder = ItemStackCreator.getStack("§6Elegant Tuxedo", Material.LEATHER_CHESTPLATE, 1,
128167
"",
129168
"§8Complete suit",
130-
"§7Crit Damage: §c+200%",
131-
"§7Intelligence: §a+500",
169+
"§7Crit Damage: §c+" + (int) elegantTuxedoCritDamage + "%",
170+
"§7Intelligence: §a+" + (int) elegantTuxedoIntelligence,
132171
"",
133172
"§6Full Set Bonus: Dashing §7(0/3)",
134173
"§7Max Health set to §c1250♥§7.",

type.hub/src/main/java/net/swofty/type/hub/gui/GUIShopWoolWeaverCool.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,13 @@ public void onOpen(InventoryGUIOpenEvent e) {
2222
@Override
2323
public void run(InventoryPreClickEvent e, HypixelPlayer p) {
2424
SkyBlockPlayer player = (SkyBlockPlayer) p;
25-
new GUIShopWoolWeaverCool().open(player);
25+
new GUIShopWoolWeaverVibrant().open(player);
2626
}
2727

2828
@Override
2929
public ItemStack.Builder getItem(HypixelPlayer p) {
3030
SkyBlockPlayer player = (SkyBlockPlayer) p;
31-
return ItemStackCreator.createNamedItemStack(Material.ARROW, "§a->");
31+
return ItemStackCreator.getStack("§aPrevious Page", Material.ARROW, 1, "§ePage 1");
3232
}
3333
});
3434
}

type.hub/src/main/java/net/swofty/type/hub/gui/GUIShopWoolWeaverVibrant.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,14 @@ public void onOpen(InventoryGUIOpenEvent e) {
2121
set(new GUIClickableItem(53) {
2222
@Override
2323
public void run(InventoryPreClickEvent e, HypixelPlayer p) {
24-
SkyBlockPlayer player = (SkyBlockPlayer) p;
24+
SkyBlockPlayer player = (SkyBlockPlayer) p;
2525
new GUIShopWoolWeaverCool().open(player);
2626
}
2727

2828
@Override
2929
public ItemStack.Builder getItem(HypixelPlayer p) {
30-
SkyBlockPlayer player = (SkyBlockPlayer) p;
31-
return ItemStackCreator.createNamedItemStack(Material.ARROW, "§a->");
30+
SkyBlockPlayer player = (SkyBlockPlayer) p;
31+
return ItemStackCreator.getStack("§aNext Page", Material.ARROW, 1, "§ePage 2");
3232
}
3333
});
3434
}

type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/data/SkyBlockDataHandler.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -438,7 +438,11 @@ DatapointPresentYear.class, new DatapointPresentYear("latest_year_pickup_present
438438
DatapointKat.class, new DatapointKat("kat")),
439439

440440
STASH("stash", false, false, false,
441-
DatapointStash.class, new DatapointStash("stash"));
441+
DatapointStash.class, new DatapointStash("stash")),
442+
443+
COLLECTED_MOB_TYPE_REWARDS("collected_mob_type_rewards", false, false, false,
444+
DatapointCollectedMobTypeRewards.class, new DatapointCollectedMobTypeRewards("collected_mob_type_rewards")),
445+
;
442446

443447
@Getter private final String key;
444448
@Getter private final Boolean isProfilePersistent;
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
package net.swofty.type.skyblockgeneric.data.datapoints;
2+
3+
import lombok.Getter;
4+
import lombok.NoArgsConstructor;
5+
import net.swofty.commons.protocol.Serializer;
6+
import net.swofty.type.skyblockgeneric.data.SkyBlockDatapoint;
7+
import org.json.JSONObject;
8+
9+
import java.util.ArrayList;
10+
import java.util.List;
11+
12+
public class DatapointCollectedMobTypeRewards extends SkyBlockDatapoint<DatapointCollectedMobTypeRewards.PlayerCollectedMobTypeRewards> {
13+
14+
public DatapointCollectedMobTypeRewards(String key, PlayerCollectedMobTypeRewards value) {
15+
super(key, value, new Serializer<>() {
16+
@Override
17+
public String serialize(PlayerCollectedMobTypeRewards value) {
18+
JSONObject jsonObject = new JSONObject(value.collectedMobTypes);
19+
return jsonObject.toString();
20+
}
21+
22+
@Override
23+
public PlayerCollectedMobTypeRewards deserialize(String json) {
24+
JSONObject jsonObject = new JSONObject(json);
25+
List<String> collectedMobTypes = new ArrayList<>();
26+
27+
jsonObject.getJSONArray("values").forEach((value) -> {
28+
if (value instanceof String)
29+
collectedMobTypes.add(value.toString());
30+
});
31+
32+
return new PlayerCollectedMobTypeRewards(collectedMobTypes);
33+
}
34+
35+
@Override
36+
public PlayerCollectedMobTypeRewards clone(PlayerCollectedMobTypeRewards value) {
37+
return new PlayerCollectedMobTypeRewards(value.collectedMobTypes == null ? new ArrayList<>() : new ArrayList<>(value.collectedMobTypes));
38+
}
39+
});
40+
}
41+
42+
public DatapointCollectedMobTypeRewards(String key) {
43+
this(key, new PlayerCollectedMobTypeRewards());
44+
}
45+
46+
@NoArgsConstructor
47+
@Getter
48+
public static class PlayerCollectedMobTypeRewards {
49+
private List<String> collectedMobTypes = new ArrayList<>();
50+
51+
public PlayerCollectedMobTypeRewards(List<String> collectedMobTypes) {
52+
this.collectedMobTypes = collectedMobTypes;
53+
}
54+
55+
public boolean hasClaimed(String mobType) {
56+
return collectedMobTypes.contains(mobType);
57+
}
58+
59+
public void claim(String mobType) {
60+
if (collectedMobTypes.contains(mobType)) return;
61+
collectedMobTypes.add(mobType);
62+
}
63+
}
64+
}

type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/levels/SkyBlockLevelCause.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import net.swofty.commons.skyblock.item.ItemType;
55
import net.swofty.type.skyblockgeneric.collection.CollectionCategories;
66
import net.swofty.type.skyblockgeneric.collection.CollectionCategory;
7+
import net.swofty.type.skyblockgeneric.entity.mob.MobType;
78
import net.swofty.type.skyblockgeneric.item.SkyBlockItem;
89
import net.swofty.type.skyblockgeneric.item.components.AccessoryComponent;
910
import net.swofty.type.skyblockgeneric.levels.abstr.SkyBlockLevelCauseAbstr;
@@ -60,6 +61,11 @@ public static void initializeCauses() {
6061
CAUSES.put("fairy-soul-exchange-" + i, new FairySoulExchangeLevelCause(i));
6162
}
6263

64+
// Register all collected mob type rewards
65+
for (MobType mobType : MobType.values()) {
66+
CAUSES.put("mob-type-" + mobType.name(), new CollectedMobTypesCause(mobType.name()));
67+
}
68+
6369
// Register all Mission rewards
6470
for (String missionID : MissionData.getAllMissionIDs()) {
6571
CAUSES.put("mission-" + missionID, new MissionLevelCause(missionID));
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package net.swofty.type.skyblockgeneric.levels.causes;
2+
3+
import net.swofty.type.skyblockgeneric.levels.abstr.SkyBlockLevelCauseAbstr;
4+
import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer;
5+
6+
public class CollectedMobTypesCause extends SkyBlockLevelCauseAbstr {
7+
private String mobType;
8+
9+
public CollectedMobTypesCause(String mobType) {
10+
this.mobType = mobType;
11+
}
12+
13+
@Override
14+
public double xpReward() {
15+
return 1;
16+
}
17+
18+
@Override
19+
public boolean shouldDisplayMessage(SkyBlockPlayer player) {
20+
return false;
21+
}
22+
}

type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/user/SkyBlockPlayer.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -916,6 +916,10 @@ public DatapointDeaths.PlayerDeaths getDeathData() {
916916
return getSkyblockDataHandler().get(SkyBlockDataHandler.Data.DEATHS, DatapointDeaths.class).getValue();
917917
}
918918

919+
public DatapointCollectedMobTypeRewards.PlayerCollectedMobTypeRewards getCollectedMobTypesData() {
920+
return getSkyblockDataHandler().get(SkyBlockDataHandler.Data.COLLECTED_MOB_TYPE_REWARDS, DatapointCollectedMobTypeRewards.class).getValue();
921+
}
922+
919923
@Override
920924
public void kill() {
921925
setHealth(getMaxHealth());

0 commit comments

Comments
 (0)