Skip to content

Commit 462e51d

Browse files
committed
feat: more achievements
1 parent 14e8533 commit 462e51d

8 files changed

Lines changed: 41 additions & 14 deletions

File tree

configuration/achievements/bedwars/challenge.yml

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -234,11 +234,11 @@ achievements:
234234

235235
- id: "bedwars.minefield"
236236
name: "Minefield"
237-
description: "Place 10 traps in a single game"
237+
description: "Place 3 traps in a single game"
238238
type: CHALLENGE
239239
points: 10
240240
trigger: "bedwars.traps_placed"
241-
goal: 10
241+
goal: 1
242242
perGame: true
243243

244244
- id: "bedwars.not_today"
@@ -294,6 +294,13 @@ achievements:
294294
goal: 5
295295
perGame: true
296296

297+
- id: "bedwars.sneaky_rusher"
298+
name: "Sneaky Rusher"
299+
description: "Destroy a bed while being invisible"
300+
points: 5
301+
trigger: "bedwars.sneaky_rusher_trigger"
302+
goal: 1
303+
297304
- id: "bedwars.ultimate_defense"
298305
name: "Ultimate Defense"
299306
description: "Have 5 active upgrades at once"
@@ -311,11 +318,11 @@ achievements:
311318
goal: 10
312319
perGame: true
313320

314-
- id: "bed_wars.that_s_a_first"
321+
- id: "bedwars.thats_a_first"
315322
name: "That's a First"
316323
description: "Win your first game of Bed Wars."
317324
type: CHALLENGE
318325
points: 5
319-
trigger: "bedwars.thats_a_first_trigger"
326+
trigger: "bedwars.wins"
320327
goal: 1
321328

settings.gradle.kts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,15 @@ include(":pvp")
1616

1717
include(":type.prototypelobby")
1818
include(":type.thefarmingislands")
19-
include("type.spidersden")
20-
include("type.theend")
21-
include("type.crimsonisle")
19+
include(":type.spidersden")
20+
include(":type.theend")
21+
include(":type.crimsonisle")
2222
include(":type.goldmine")
2323
include(":type.deepcaverns")
2424
include(":type.dwarvenmines")
25-
include("type.thepark")
26-
include("type.galatea")
27-
include("type.backwaterbayou")
25+
include(":type.thepark")
26+
include(":type.galatea")
27+
include(":type.backwaterbayou")
2828
include(":type.island")
2929
include(":type.hub")
3030
include(":type.dungeonhub")

type.bedwarsgame/src/main/java/net/swofty/type/bedwarsgame/events/ActionGameBreak.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import net.minestom.server.event.player.PlayerBlockBreakEvent;
77
import net.minestom.server.instance.block.Block;
88
import net.minestom.server.item.ItemStack;
9+
import net.minestom.server.potion.PotionEffect;
910
import net.minestom.server.tag.Tag;
1011
import net.swofty.commons.bedwars.map.BedWarsMapsConfig;
1112
import net.swofty.commons.bedwars.map.BedWarsMapsConfig.MapTeam;
@@ -63,7 +64,7 @@ public void run(PlayerBlockBreakEvent event) {
6364
return;
6465
}
6566
if (!game.getTeamManager().isBedAlive(teamKey)) {
66-
// Bed already destroyed logically, block might linger if not cleared perfectly
67+
// Bed already destroyed logically; block might linger if not cleared perfectly
6768
event.setCancelled(true);
6869
return;
6970
}
@@ -72,6 +73,10 @@ public void run(PlayerBlockBreakEvent event) {
7273
player.getInstance().setBlock(feetPoint, Block.AIR);
7374
player.getInstance().setBlock(headPoint, Block.AIR);
7475

76+
if (player.hasEffect(PotionEffect.INVISIBILITY)) {
77+
player.getAchievementHandler().completeAchievement("bedwars.sneaky_rusher"); // break an bed while invisible
78+
}
79+
7580
for (BedWarsPlayer p : game.getPlayers()) {
7681
p.sendMessage(String.format("§c§lBED DESTRUCTION §r§cTeam %s's bed was destroyed by %s%s!",
7782
teamKey.getName(), teamKey.chatColor(), player.getUsername()));

type.bedwarsgame/src/main/java/net/swofty/type/bedwarsgame/events/ActionGamePlace.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ public void run(PlayerBlockPlaceEvent event) {
7373
}
7474

7575
event.setBlock(event.getBlock().withTag(TypeBedWarsGameLoader.PLAYER_PLACED_TAG, true));
76+
player.getAchievementHandler().addProgressByTrigger("bedwars.blocks_placed", 1);
7677
}
7778

7879
}

type.bedwarsgame/src/main/java/net/swofty/type/bedwarsgame/events/ActionGamePlayerEvent.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,7 @@ public void run(PlayerStartDiggingEvent event) {
203203
player.sendMessage("§7You deposited x" + itemInHand.amount()
204204
+ " " + itemInHand.material().name().toLowerCase().replace("_", " ")
205205
+ " into your ender chest.");
206-
player.getAchievementHandler().completeAchievement("bedwars.future_is_now");
206+
player.getAchievementHandler().addProgressByTrigger("bedwars.chest_deposit", 1);
207207
} else {
208208
player.sendMessage("§cYour ender chest is full!");
209209
}
@@ -267,7 +267,7 @@ public void run(PlayerStartDiggingEvent event) {
267267

268268
if (itemAdded) {
269269
player.setItemInMainHand(ItemStack.AIR);
270-
player.getAchievementHandler().completeAchievement("bedwars.future_is_now");
270+
player.getAchievementHandler().addProgressByTrigger("bedwars.chest_deposit", 1);
271271
} else {
272272
player.sendMessage("§cThe team chest is full!");
273273
}

type.bedwarsgame/src/main/java/net/swofty/type/bedwarsgame/game/Game.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -518,6 +518,7 @@ private void endGame(TeamKey winningTeam) {
518518
// Record win for players on the winning team
519519
if (finalWinningTeam != null && finalWinningTeam.getName().equalsIgnoreCase(player.getTeamName())) {
520520
BedWarsStatsRecorder.recordWin(player, bedwarsGameType);
521+
player.getAchievementHandler().addProgressByTrigger("bedwars.wins", 1);
521522
}
522523

523524
if (player.getGameMode() != GameMode.SPECTATOR) {

type.bedwarsgame/src/main/java/net/swofty/type/bedwarsgame/game/TeamManager.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import net.swofty.commons.bedwars.map.BedWarsMapsConfig.MapTeam;
1616
import net.swofty.commons.bedwars.map.BedWarsMapsConfig.TeamKey;
1717
import net.swofty.type.bedwarsgame.TypeBedWarsGameLoader;
18+
import net.swofty.type.bedwarsgame.user.BedWarsPlayer;
1819
import org.tinylog.Logger;
1920

2021
import java.util.*;
@@ -174,7 +175,7 @@ public void removeTeamTrap(TeamKey teamKey, String trapKey) {
174175
}
175176
}
176177

177-
public List<Player> getPlayersOnTeam(TeamKey teamKey) {
178+
public List<BedWarsPlayer> getPlayersOnTeam(TeamKey teamKey) {
178179
return game.getPlayers().stream()
179180
.filter(player -> teamKey.getName().equals(player.getTag(Tag.String("team")))
180181
&& player.isOnline()

type.bedwarsgame/src/main/java/net/swofty/type/bedwarsgame/gui/GUITeamShop.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,12 @@ public void run(InventoryPreClickEvent event, HypixelPlayer p) {
163163

164164
Game playerGame = TypeBedWarsGameLoader.getPlayerGame(player);
165165
if (playerGame == null || tag == null) return;
166+
int trapSize = playerGame.getTeamManager().getTeamTraps(tag).size();
167+
if (trapSize >= 3) {
168+
player.sendMessage("§cYou can't have more traps than 3");
169+
playClickSound(player);
170+
}
171+
166172
Trap trap = traps.get(index);
167173
int price = trap.getPrice(playerGame, tag);
168174
int owned = Arrays.stream(player.getInventory().getItemStacks())
@@ -173,11 +179,17 @@ public void run(InventoryPreClickEvent event, HypixelPlayer p) {
173179
playClickSound(player);
174180
return;
175181
}
182+
176183
BedWarsInventoryManipulator.removeItems(player, trap.getCurrency().getMaterial(), price);
177184
playerGame.getTeamManager().addTeamTrap(tag, trap.getKey());
178185
broadcastTeamPurchase(playerGame, tag, player, trap.getName());
179186
playBuySound(player);
180187
updateGUI(player);
188+
if (trapSize == 2) {
189+
for (BedWarsPlayer teamPlayer : game.getTeamManager().getPlayersOnTeam(player.getTeamKey())) {
190+
teamPlayer.getAchievementHandler().completeAchievement("bedwars.minefield");
191+
}
192+
}
181193
}
182194

183195
@Override

0 commit comments

Comments
 (0)