Skip to content

Commit afe2042

Browse files
committed
Merge remote-tracking branch 'midstream/featgoldminedeepcaverns' into feat/npc-refactor
2 parents 4044c47 + 9dea904 commit afe2042

14 files changed

Lines changed: 209 additions & 81 deletions

File tree

configuration/skyblock/items/mining/dwarven.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@ items:
1313
components:
1414
- id: SELLABLE
1515
value: 8.0
16+
- id: SKILLABLE_MINE
17+
category: MINING
18+
mining_value: 6.0
1619
- id: PLASMA
1720
rarity: COMMON
1821
components:

type.deepcaverns/src/main/java/net/swofty/type/deepcaverns/gui/GUILiftOperator.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,7 @@ public void run(InventoryPreClickEvent e, HypixelPlayer p) {
5050
DatapointStringList.class
5151
);
5252
List<String> discoveredZonesList = discoveredZones.getValue();
53-
54-
if (!discoveredZonesList.contains(location.name()) && location != LiftLocation.DWARVEN_MINES) {
53+
if (!discoveredZonesList.contains(location.prettyName()) && location != LiftLocation.DWARVEN_MINES) {
5554
player.sendMessage("§cYou have not discovered the " + location.prettyName() + " yet!");
5655
return;
5756
}

type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/data/datapoints/DatapointCollection.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,10 @@ public void increase(ItemType type) {
7878
items.put(type, get(type) + 1);
7979
}
8080

81+
public void increase(ItemType type, int amount) {
82+
items.put(type, get(type) + amount);
83+
}
84+
8185
public void set(ItemType type, int amount) {
8286
items.put(type, amount);
8387
}

type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/event/actions/custom/ActionPlayerDamageBlock.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
public class ActionPlayerDamageBlock implements HypixelEventClass {
2626
public static final Map<UUID, BreakingTask> CLICKING = new HashMap<>();
2727

28-
2928
@HypixelEvent(node = EventNodes.CUSTOM, requireDataLoaded = true)
3029
public void run(PlayerDamageSkyBlockBlockEvent event) {
3130
SkyBlockPlayer player = (SkyBlockPlayer) event.getPlayer();
@@ -55,11 +54,9 @@ public void run(PlayerDamageSkyBlockBlockEvent event) {
5554
}
5655

5756
if (CLICKING.containsKey(player.getUuid())) {
58-
System.out.println("Already clicking");
5957
return;
6058
}
6159

62-
6360
// Ensure that the player isn't just using their hand
6461
SkyBlockItem item = new SkyBlockItem(player.getItemInMainHand());
6562
if (!item.hasComponent(PickaxeComponent.class) && !item.hasComponent(DrillComponent.class)) return;
@@ -69,7 +66,8 @@ public void run(PlayerDamageSkyBlockBlockEvent event) {
6966
new BreakingTask.PositionedBlock(
7067
player.getInstance().getBlock(event.getBlockPosition()),
7168
event.getBlockPosition().asPos()),
72-
item);
69+
item,
70+
event.getSequence());
7371
MinecraftServer.getSchedulerManager().submitTask(task::run);
7472
CLICKING.put(player.getUuid(), task);
7573
}

type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/event/actions/custom/collection/ActionCollectionAdd.java

Lines changed: 69 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -26,77 +26,84 @@ public void run(CustomBlockBreakEvent event) {
2626
if (event.getPlayerPlaced()) return;
2727

2828
SkyBlockPlayer player = event.getPlayer();
29-
ItemType type = ItemType.fromMaterial(event.getMaterial());
3029

31-
if (type == null) return;
32-
int oldAmount = player.getCollection().get(type);
33-
player.getCollection().increase(type);
30+
// Process each dropped item for collection
31+
for (net.swofty.type.skyblockgeneric.item.SkyBlockItem drop : event.getDrops()) {
32+
ItemType type = drop.getAttributeHandler().getPotentialType();
33+
if (type == null) continue;
3434

35-
HypixelEventHandler.callCustomEvent(new CollectionUpdateEvent(player, type, oldAmount));
35+
int oldAmount = player.getCollection().get(type);
36+
int dropAmount = drop.getAmount();
37+
player.getCollection().increase(type, dropAmount);
3638

37-
player.getSkyblockDataHandler().get(net.swofty.type.skyblockgeneric.data.SkyBlockDataHandler.Data.COLLECTION, DatapointCollection.class).setValue(
38-
player.getCollection()
39-
);
39+
HypixelEventHandler.callCustomEvent(new CollectionUpdateEvent(player, type, oldAmount));
4040

41-
if (player.isCoop()) {
42-
CoopDatabase.Coop coop = player.getCoop();
43-
44-
coop.getOnlineMembers().forEach(member -> {
45-
if (member.getUuid().equals(player.getUuid())) return;
46-
HypixelEventHandler.callCustomEvent(new CollectionUpdateEvent(member, type, oldAmount));
47-
});
48-
49-
coop.members().removeIf(
50-
uuid -> SkyBlockGenericLoader.getFromUUID(uuid) != null
41+
player.getSkyblockDataHandler().get(net.swofty.type.skyblockgeneric.data.SkyBlockDataHandler.Data.COLLECTION, DatapointCollection.class).setValue(
42+
player.getCollection()
5143
);
5244

53-
ProxyPlayerSet proxyPlayerSet = new ProxyPlayerSet(coop.members());
54-
proxyPlayerSet.asProxyPlayers().forEach(proxyPlayer -> {
55-
if (!proxyPlayer.isOnline().join()) return;
45+
if (player.isCoop()) {
46+
CoopDatabase.Coop coop = player.getCoop();
5647

57-
proxyPlayer.runEvent(new CollectionUpdateEvent(null, type, oldAmount));
58-
});
59-
}
48+
coop.getOnlineMembers().forEach(member -> {
49+
if (member.getUuid().equals(player.getUuid())) return;
50+
HypixelEventHandler.callCustomEvent(new CollectionUpdateEvent(member, type, oldAmount));
51+
});
6052

61-
CollectionCategory category = CollectionCategories.getCategory(type);
62-
if (category == null) return;
63-
CollectionCategory.ItemCollection collection = category.getCollection(type);
64-
65-
MathUtility.delay(() -> {
66-
SkyBlockActionBar bar = SkyBlockActionBar.getFor(player);
67-
int startingPriority = 5;
68-
int addedAmount = 1;
69-
70-
SkyBlockActionBar.DisplayReplacement existingReplacement = bar.getReplacement(SkyBlockActionBar.BarSection.DEFENSE);
71-
if (existingReplacement != null) {
72-
startingPriority = existingReplacement.priority() + 1;
73-
try {
74-
addedAmount = Integer.parseInt(existingReplacement.display().substring(2, existingReplacement.display().indexOf(" "))) + 1;
75-
} catch (NumberFormatException ignored) {}
76-
}
77-
if (player.getCollection().getReward(collection) != null) {
78-
bar.addReplacement(
79-
SkyBlockActionBar.BarSection.DEFENSE,
80-
new SkyBlockActionBar.DisplayReplacement(
81-
"§2+" + addedAmount + " " + type.getDisplayName() +
82-
" §7(" + StringUtility.commaify(player.getCollection().get(type)) +
83-
"/" +
84-
StringUtility.shortenNumber(player.getCollection().getReward(collection).requirement()) + ")",
85-
20,
86-
startingPriority
87-
)
88-
);
89-
} else { //if Collection is maxed
90-
bar.addReplacement(
91-
SkyBlockActionBar.BarSection.DEFENSE,
92-
new SkyBlockActionBar.DisplayReplacement(
93-
"§2+" + addedAmount + " " + type.getDisplayName() +
94-
" §7(" + StringUtility.commaify(player.getCollection().get(type)) + ")",
95-
20,
96-
startingPriority
97-
)
53+
coop.members().removeIf(
54+
uuid -> SkyBlockGenericLoader.getFromUUID(uuid) != null
9855
);
56+
57+
ProxyPlayerSet proxyPlayerSet = new ProxyPlayerSet(coop.members());
58+
proxyPlayerSet.asProxyPlayers().forEach(proxyPlayer -> {
59+
if (!proxyPlayer.isOnline().join()) return;
60+
61+
proxyPlayer.runEvent(new CollectionUpdateEvent(null, type, oldAmount));
62+
});
9963
}
100-
}, 5);
64+
65+
CollectionCategory category = CollectionCategories.getCategory(type);
66+
if (category == null) continue;
67+
CollectionCategory.ItemCollection collection = category.getCollection(type);
68+
69+
final int finalDropAmount = dropAmount;
70+
final ItemType finalType = type;
71+
MathUtility.delay(() -> {
72+
SkyBlockActionBar bar = SkyBlockActionBar.getFor(player);
73+
int startingPriority = 5;
74+
int addedAmount = finalDropAmount;
75+
76+
SkyBlockActionBar.DisplayReplacement existingReplacement = bar.getReplacement(SkyBlockActionBar.BarSection.DEFENSE);
77+
if (existingReplacement != null) {
78+
startingPriority = existingReplacement.priority() + 1;
79+
try {
80+
addedAmount = Integer.parseInt(existingReplacement.display().substring(2, existingReplacement.display().indexOf(" "))) + finalDropAmount;
81+
} catch (NumberFormatException ignored) {}
82+
}
83+
if (player.getCollection().getReward(collection) != null) {
84+
bar.addReplacement(
85+
SkyBlockActionBar.BarSection.DEFENSE,
86+
new SkyBlockActionBar.DisplayReplacement(
87+
"§2+" + addedAmount + " " + finalType.getDisplayName() +
88+
" §7(" + StringUtility.commaify(player.getCollection().get(finalType)) +
89+
"/" +
90+
StringUtility.shortenNumber(player.getCollection().getReward(collection).requirement()) + ")",
91+
20,
92+
startingPriority
93+
)
94+
);
95+
} else { //if Collection is maxed
96+
bar.addReplacement(
97+
SkyBlockActionBar.BarSection.DEFENSE,
98+
new SkyBlockActionBar.DisplayReplacement(
99+
"§2+" + addedAmount + " " + finalType.getDisplayName() +
100+
" §7(" + StringUtility.commaify(player.getCollection().get(finalType)) + ")",
101+
20,
102+
startingPriority
103+
)
104+
);
105+
}
106+
}, 5);
107+
}
101108
}
102109
}

type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/event/actions/player/region/ActionRegionBlockBreak.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,17 @@ else if (region != null) {
5757
return;
5858
}
5959

60+
// Check if player has sufficient breaking power
61+
MineableBlock mineableBlock = MineableBlock.get(block);
62+
if (mineableBlock != null) {
63+
SkyBlockItem heldItem = new SkyBlockItem(player.getItemInMainHand());
64+
int playerBreakingPower = heldItem.getAttributeHandler().getBreakingPower();
65+
if (playerBreakingPower < mineableBlock.getMiningPowerRequirement()) {
66+
event.setCancelled(true);
67+
return;
68+
}
69+
}
70+
6071
// Queue block for mining if in valid region
6172
if (mining != null && material != null) {
6273
mining.addToQueue(player, event.getBlockPosition().asPos(), (SharedInstance) player.getInstance());

type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/event/custom/PlayerDamageSkyBlockBlockEvent.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,16 @@ public class PlayerDamageSkyBlockBlockEvent implements PlayerInstanceEvent {
1313
private final Point blockPosition;
1414
@Getter
1515
private final ClientPlayerActionPacket.Status status;
16+
@Getter
17+
private final int sequence;
1618

17-
public PlayerDamageSkyBlockBlockEvent(Player player, Point blockPosition, ClientPlayerActionPacket.Status status) {
19+
public PlayerDamageSkyBlockBlockEvent(Player player, Point blockPosition,
20+
ClientPlayerActionPacket.Status status,
21+
int sequence) {
1822
this.player = player;
1923
this.blockPosition = blockPosition;
2024
this.status = status;
25+
this.sequence = sequence;
2126
}
2227

2328
@Override
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package net.swofty.type.skyblockgeneric.mission.missions.lazyminer;
2+
3+
import net.swofty.type.skyblockgeneric.mission.MissionData;
4+
import net.swofty.type.skyblockgeneric.mission.SkyBlockMission;
5+
import net.swofty.type.skyblockgeneric.region.RegionType;
6+
import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer;
7+
8+
import java.util.HashMap;
9+
import java.util.Map;
10+
import java.util.Set;
11+
12+
public class MissionFindLazyMinerPickaxe extends SkyBlockMission {
13+
@Override
14+
public String getID() {
15+
return "find_lazy_miner_pickaxe";
16+
}
17+
18+
@Override
19+
public String getName() {
20+
return "Find Lazy Miner's Pickaxe";
21+
}
22+
23+
@Override
24+
public Map<String, Object> onStart(SkyBlockPlayer player, MissionData.ActiveMission mission) {
25+
mission.getNewObjectiveText().forEach(player::sendMessage);
26+
return new HashMap<>();
27+
}
28+
29+
@Override
30+
public void onEnd(SkyBlockPlayer player, Map<String, Object> customData, MissionData.ActiveMission mission) {
31+
player.getMissionData().startMission(MissionTalkToLazyMiner.class);
32+
}
33+
34+
@Override
35+
public Set<RegionType> getValidRegions() {
36+
return Set.of(RegionType.GOLD_MINE);
37+
}
38+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package net.swofty.type.skyblockgeneric.mission.missions.lazyminer;
2+
3+
import net.swofty.type.skyblockgeneric.mission.MissionData;
4+
import net.swofty.type.skyblockgeneric.mission.SkyBlockMission;
5+
import net.swofty.type.skyblockgeneric.region.RegionType;
6+
import net.swofty.type.skyblockgeneric.skill.SkillCategories;
7+
import net.swofty.type.skyblockgeneric.user.SkyBlockPlayer;
8+
9+
import java.util.ArrayList;
10+
import java.util.HashMap;
11+
import java.util.List;
12+
import java.util.Map;
13+
import java.util.Set;
14+
15+
public class MissionTalkToLazyMiner extends SkyBlockMission {
16+
@Override
17+
public String getID() {
18+
return "talk_to_lazy_miner";
19+
}
20+
21+
@Override
22+
public String getName() {
23+
return "Talk to Lazy Miner";
24+
}
25+
26+
@Override
27+
public Map<String, Object> onStart(SkyBlockPlayer player, MissionData.ActiveMission mission) {
28+
mission.getNewObjectiveText().forEach(player::sendMessage);
29+
return new HashMap<>();
30+
}
31+
32+
@Override
33+
public void onEnd(SkyBlockPlayer player, Map<String, Object> customData, MissionData.ActiveMission mission) {
34+
mission.getObjectiveCompleteText(new ArrayList<>(List.of("§b10 Mining XP"))).forEach(player::sendMessage);
35+
player.getSkills().increase(player, SkillCategories.MINING, 10D);
36+
}
37+
38+
@Override
39+
public Set<RegionType> getValidRegions() {
40+
return Set.of(RegionType.GOLD_MINE);
41+
}
42+
}

type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/packets/client/PacketListenerPlayerDig.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@ public void run(PlayerPacketEvent event, ClientPacket packet, HypixelPlayer play
2020
HypixelEventHandler.callCustomEvent(new PlayerDamageSkyBlockBlockEvent(
2121
player,
2222
digPacket.blockPosition(),
23-
digPacket.status()));
23+
digPacket.status(),
24+
digPacket.sequence()));
2425
}
2526

2627
@Override

0 commit comments

Comments
 (0)