Skip to content
Merged

ike #611

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
77 changes: 58 additions & 19 deletions type.hub/src/main/java/net/swofty/type/hub/gui/GUISeymour.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,59 @@
import net.minestom.server.item.Material;
import net.swofty.commons.StringUtility;
import net.swofty.commons.skyblock.item.ItemType;
import net.swofty.commons.skyblock.statistics.ItemStatistic;
import net.swofty.type.generic.gui.inventory.ItemStackCreator;
import net.swofty.type.generic.gui.inventory.HypixelInventoryGUI;
import net.swofty.type.generic.gui.inventory.item.GUIClickableItem;
import net.swofty.type.skyblockgeneric.item.SkyBlockItem;
import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer;
import net.swofty.type.generic.user.HypixelPlayer;

import java.util.List;

public class GUISeymour extends HypixelInventoryGUI {
private final List<SkyBlockItem> cheapTuxedoSet = List.of(
new SkyBlockItem(ItemType.CHEAP_TUXEDO_CHESTPLATE),
new SkyBlockItem(ItemType.CHEAP_TUXEDO_LEGGINGS),
new SkyBlockItem(ItemType.CHEAP_TUXEDO_BOOTS)
);

private final List<SkyBlockItem> fancyTuxedoSet = List.of(
new SkyBlockItem(ItemType.FANCY_TUXEDO_CHESTPLATE),
new SkyBlockItem(ItemType.FANCY_TUXEDO_LEGGINGS),
new SkyBlockItem(ItemType.FANCY_TUXEDO_BOOTS)
);

private final List<SkyBlockItem> elegantTuxedoSet = List.of(
new SkyBlockItem(ItemType.ELEGANT_TUXEDO_CHESTPLATE),
new SkyBlockItem(ItemType.ELEGANT_TUXEDO_LEGGINGS),
new SkyBlockItem(ItemType.ELEGANT_TUXEDO_BOOTS)
);

private final double cheapTuxedoPrice = 3_000_000;
private final double fancyTuxedoPrice = 20_000_000;
private final double elegantTuxedoPrice = 74_999_999;

private final double cheapTuxedoCritDamage = cheapTuxedoSet.stream()
.mapToDouble(item -> item.getAttributeHandler().getStatistics().getOverall(ItemStatistic.CRIT_DAMAGE))
.sum();
private final double fancyTuxedoCritDamage = cheapTuxedoSet.stream()
.mapToDouble(item -> item.getAttributeHandler().getStatistics().getOverall(ItemStatistic.CRIT_DAMAGE))
.sum();
private final double elegantTuxedoCritDamage = cheapTuxedoSet.stream()
.mapToDouble(item -> item.getAttributeHandler().getStatistics().getOverall(ItemStatistic.CRIT_DAMAGE))
.sum();

private final double cheapTuxedoIntelligence = cheapTuxedoSet.stream()
.mapToDouble(item -> item.getAttributeHandler().getStatistics().getOverall(ItemStatistic.INTELLIGENCE))
.sum();
private final double fancyTuxedoIntelligence = cheapTuxedoSet.stream()
.mapToDouble(item -> item.getAttributeHandler().getStatistics().getOverall(ItemStatistic.INTELLIGENCE))
.sum();
private final double elegantTuxedoIntelligence = cheapTuxedoSet.stream()
.mapToDouble(item -> item.getAttributeHandler().getStatistics().getOverall(ItemStatistic.INTELLIGENCE))
.sum();

public GUISeymour() {
super("Seymour's Fancy Suits", InventoryType.CHEST_4_ROW);
}
Expand All @@ -23,21 +69,16 @@ public void onOpen(InventoryGUIOpenEvent e) {
fill(ItemStackCreator.createNamedItemStack(Material.BLACK_STAINED_GLASS_PANE));
set(GUIClickableItem.getCloseItem(31));

double cheapTuxedoPrice = 3000000;
double fancyTuxedoPrice = 20000000;
double elegantTuxedoPrice = 74999999;

set(new GUIClickableItem(11) {
@Override
public void run(InventoryPreClickEvent e, HypixelPlayer p) {
SkyBlockPlayer player = (SkyBlockPlayer) p;
double coins = player.getCoins();
if (coins < cheapTuxedoPrice) {
player.sendMessage("§cYou don't have enough coins!");
return;
}
player.addAndUpdateItem(ItemType.CHEAP_TUXEDO_CHESTPLATE);
player.addAndUpdateItem(ItemType.CHEAP_TUXEDO_BOOTS);
player.addAndUpdateItem(ItemType.CHEAP_TUXEDO_LEGGINGS);
cheapTuxedoSet.forEach(player::addAndUpdateItem);
player.playSuccessSound();
player.removeCoins(cheapTuxedoPrice);
}
Expand All @@ -48,8 +89,8 @@ public ItemStack.Builder getItem(HypixelPlayer p) {
ItemStack.Builder builder = ItemStackCreator.getStack("§5Cheap Tuxedo", Material.LEATHER_CHESTPLATE, 1,
"",
"§8Complete suit",
"§7Crit Damage: §c+100%",
"§7Intelligence: §a+100",
"§7Crit Damage: §c+" + (int) cheapTuxedoCritDamage + "%",
"§7Intelligence: §a+" + (int) cheapTuxedoIntelligence,
"",
"§6Full Set Bonus: Dashing §7(0/3)",
"§7Max Health set to §c75♥§7.",
Expand All @@ -72,11 +113,10 @@ public void run(InventoryPreClickEvent e, HypixelPlayer p) {
SkyBlockPlayer player = (SkyBlockPlayer) p;
double coins = player.getCoins();
if (coins < fancyTuxedoPrice) {
player.sendMessage("§cYou don't have enough coins!");
return;
}
player.addAndUpdateItem(ItemType.FANCY_TUXEDO_CHESTPLATE);
player.addAndUpdateItem(ItemType.FANCY_TUXEDO_BOOTS);
player.addAndUpdateItem(ItemType.FANCY_TUXEDO_LEGGINGS);
fancyTuxedoSet.forEach(player::addAndUpdateItem);
player.playSuccessSound();
player.removeCoins(fancyTuxedoPrice);
}
Expand All @@ -87,8 +127,8 @@ public ItemStack.Builder getItem(HypixelPlayer p) {
ItemStack.Builder builder = ItemStackCreator.getStack("§6Fancy Tuxedo", Material.LEATHER_CHESTPLATE, 1,
"",
"§8Complete suit",
"§7Crit Damage: §c+150%",
"§7Intelligence: §a+300",
"§7Crit Damage: §c+" + (int) fancyTuxedoCritDamage + "%",
"§7Intelligence: §a+" + (int) fancyTuxedoIntelligence,
"",
"§6Full Set Bonus: Dashing §7(0/3)",
"§7Max Health set to §c150♥§7.",
Expand All @@ -112,11 +152,10 @@ public void run(InventoryPreClickEvent e, HypixelPlayer p) {
SkyBlockPlayer player = (SkyBlockPlayer) p;
double coins = player.getCoins();
if (coins < elegantTuxedoPrice) {
player.sendMessage("§cYou don't have enough coins!");
return;
}
player.addAndUpdateItem(ItemType.ELEGANT_TUXEDO_CHESTPLATE);
player.addAndUpdateItem(ItemType.ELEGANT_TUXEDO_BOOTS);
player.addAndUpdateItem(ItemType.ELEGANT_TUXEDO_LEGGINGS);
elegantTuxedoSet.forEach(player::addAndUpdateItem);
player.playSuccessSound();
player.removeCoins(elegantTuxedoPrice);
}
Expand All @@ -127,8 +166,8 @@ public ItemStack.Builder getItem(HypixelPlayer p) {
ItemStack.Builder builder = ItemStackCreator.getStack("§6Elegant Tuxedo", Material.LEATHER_CHESTPLATE, 1,
"",
"§8Complete suit",
"§7Crit Damage: §c+200%",
"§7Intelligence: §a+500",
"§7Crit Damage: §c+" + (int) elegantTuxedoCritDamage + "%",
"§7Intelligence: §a+" + (int) elegantTuxedoIntelligence,
"",
"§6Full Set Bonus: Dashing §7(0/3)",
"§7Max Health set to §c1250♥§7.",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,13 +22,13 @@ public void onOpen(InventoryGUIOpenEvent e) {
@Override
public void run(InventoryPreClickEvent e, HypixelPlayer p) {
SkyBlockPlayer player = (SkyBlockPlayer) p;
new GUIShopWoolWeaverCool().open(player);
new GUIShopWoolWeaverVibrant().open(player);
}

@Override
public ItemStack.Builder getItem(HypixelPlayer p) {
SkyBlockPlayer player = (SkyBlockPlayer) p;
return ItemStackCreator.createNamedItemStack(Material.ARROW, "§a->");
return ItemStackCreator.getStack("§aPrevious Page", Material.ARROW, 1, "§ePage 1");
}
});
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,14 +21,14 @@ public void onOpen(InventoryGUIOpenEvent e) {
set(new GUIClickableItem(53) {
@Override
public void run(InventoryPreClickEvent e, HypixelPlayer p) {
SkyBlockPlayer player = (SkyBlockPlayer) p;
SkyBlockPlayer player = (SkyBlockPlayer) p;
new GUIShopWoolWeaverCool().open(player);
}

@Override
public ItemStack.Builder getItem(HypixelPlayer p) {
SkyBlockPlayer player = (SkyBlockPlayer) p;
return ItemStackCreator.createNamedItemStack(Material.ARROW, "§a->");
SkyBlockPlayer player = (SkyBlockPlayer) p;
return ItemStackCreator.getStack("§aNext Page", Material.ARROW, 1, "§ePage 2");
}
});
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -438,7 +438,11 @@ DatapointPresentYear.class, new DatapointPresentYear("latest_year_pickup_present
DatapointKat.class, new DatapointKat("kat")),

STASH("stash", false, false, false,
DatapointStash.class, new DatapointStash("stash"));
DatapointStash.class, new DatapointStash("stash")),

COLLECTED_MOB_TYPE_REWARDS("collected_mob_type_rewards", false, false, false,
DatapointCollectedMobTypeRewards.class, new DatapointCollectedMobTypeRewards("collected_mob_type_rewards")),
;

@Getter private final String key;
@Getter private final Boolean isProfilePersistent;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
package net.swofty.type.skyblockgeneric.data.datapoints;

import lombok.Getter;
import lombok.NoArgsConstructor;
import net.swofty.commons.protocol.Serializer;
import net.swofty.type.skyblockgeneric.data.SkyBlockDatapoint;
import org.json.JSONObject;

import java.util.ArrayList;
import java.util.List;

public class DatapointCollectedMobTypeRewards extends SkyBlockDatapoint<DatapointCollectedMobTypeRewards.PlayerCollectedMobTypeRewards> {

public DatapointCollectedMobTypeRewards(String key, PlayerCollectedMobTypeRewards value) {
super(key, value, new Serializer<>() {
@Override
public String serialize(PlayerCollectedMobTypeRewards value) {
JSONObject jsonObject = new JSONObject(value.collectedMobTypes);
return jsonObject.toString();
}

@Override
public PlayerCollectedMobTypeRewards deserialize(String json) {
JSONObject jsonObject = new JSONObject(json);
List<String> collectedMobTypes = new ArrayList<>();

jsonObject.getJSONArray("values").forEach((value) -> {
if (value instanceof String)
collectedMobTypes.add(value.toString());
});

return new PlayerCollectedMobTypeRewards(collectedMobTypes);
}

@Override
public PlayerCollectedMobTypeRewards clone(PlayerCollectedMobTypeRewards value) {
return new PlayerCollectedMobTypeRewards(value.collectedMobTypes == null ? new ArrayList<>() : new ArrayList<>(value.collectedMobTypes));
}
});
}

public DatapointCollectedMobTypeRewards(String key) {
this(key, new PlayerCollectedMobTypeRewards());
}

@NoArgsConstructor
@Getter
public static class PlayerCollectedMobTypeRewards {
private List<String> collectedMobTypes = new ArrayList<>();

public PlayerCollectedMobTypeRewards(List<String> collectedMobTypes) {
this.collectedMobTypes = collectedMobTypes;
}

public boolean hasClaimed(String mobType) {
return collectedMobTypes.contains(mobType);
}

public void claim(String mobType) {
if (collectedMobTypes.contains(mobType)) return;
collectedMobTypes.add(mobType);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import net.swofty.commons.skyblock.item.ItemType;
import net.swofty.type.skyblockgeneric.collection.CollectionCategories;
import net.swofty.type.skyblockgeneric.collection.CollectionCategory;
import net.swofty.type.skyblockgeneric.entity.mob.MobType;
import net.swofty.type.skyblockgeneric.item.SkyBlockItem;
import net.swofty.type.skyblockgeneric.item.components.AccessoryComponent;
import net.swofty.type.skyblockgeneric.levels.abstr.SkyBlockLevelCauseAbstr;
Expand Down Expand Up @@ -60,6 +61,11 @@ public static void initializeCauses() {
CAUSES.put("fairy-soul-exchange-" + i, new FairySoulExchangeLevelCause(i));
}

// Register all collected mob type rewards
for (MobType mobType : MobType.values()) {
CAUSES.put("mob-type-" + mobType.name(), new CollectedMobTypesCause(mobType.name()));
}

// Register all Mission rewards
for (String missionID : MissionData.getAllMissionIDs()) {
CAUSES.put("mission-" + missionID, new MissionLevelCause(missionID));
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package net.swofty.type.skyblockgeneric.levels.causes;

import net.swofty.type.skyblockgeneric.levels.abstr.SkyBlockLevelCauseAbstr;
import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer;

public class CollectedMobTypesCause extends SkyBlockLevelCauseAbstr {
private String mobType;

public CollectedMobTypesCause(String mobType) {
this.mobType = mobType;
}

@Override
public double xpReward() {
return 1;
}

@Override
public boolean shouldDisplayMessage(SkyBlockPlayer player) {
return false;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -916,6 +916,10 @@ public DatapointDeaths.PlayerDeaths getDeathData() {
return getSkyblockDataHandler().get(SkyBlockDataHandler.Data.DEATHS, DatapointDeaths.class).getValue();
}

public DatapointCollectedMobTypeRewards.PlayerCollectedMobTypeRewards getCollectedMobTypesData() {
return getSkyblockDataHandler().get(SkyBlockDataHandler.Data.COLLECTED_MOB_TYPE_REWARDS, DatapointCollectedMobTypeRewards.class).getValue();
}

@Override
public void kill() {
setHealth(getMaxHealth());
Expand Down
Loading