diff --git a/src/main/java/emu/lunarcore/Config.java b/src/main/java/emu/lunarcore/Config.java index 33bea63..6d5a454 100644 --- a/src/main/java/emu/lunarcore/Config.java +++ b/src/main/java/emu/lunarcore/Config.java @@ -86,6 +86,7 @@ public class Config { public boolean autoCreateAccount = true; public int entitySceneLimit = 2000; public boolean spendStamina = true; + public boolean unlockAllChallenges = true; public int staminaRecoveryRate = 5 * 60; public int staminaReserveRecoveryRate = 18 * 60; public Set defaultPermissions = Set.of("*"); diff --git a/src/main/java/emu/lunarcore/server/packet/send/PacketGetChallengeScRsp.java b/src/main/java/emu/lunarcore/server/packet/send/PacketGetChallengeScRsp.java index 87b11ef..85406c2 100644 --- a/src/main/java/emu/lunarcore/server/packet/send/PacketGetChallengeScRsp.java +++ b/src/main/java/emu/lunarcore/server/packet/send/PacketGetChallengeScRsp.java @@ -1,6 +1,9 @@ package emu.lunarcore.server.packet.send; +import emu.lunarcore.LunarCore; +import emu.lunarcore.data.GameData; import emu.lunarcore.game.player.Player; +import emu.lunarcore.proto.ChallengeOuterClass.Challenge; import emu.lunarcore.proto.GetChallengeScRspOuterClass.GetChallengeScRsp; import emu.lunarcore.server.packet.BasePacket; import emu.lunarcore.server.packet.CmdId; @@ -12,8 +15,22 @@ public class PacketGetChallengeScRsp extends BasePacket { var data = GetChallengeScRsp.newInstance(); - for (var history : player.getChallengeManager().getHistory().values()) { - data.addChallengeList(history.toProto()); + if (LunarCore.getConfig().getServerOptions().unlockAllChallenges) { + // Add all challenge excels to our challenge list + // TODO find out which challenge groups are active so we dont have to send old challenge ids to the client + for (var challengeExcel : GameData.getChallengeExcelMap().values()) { + var history = player.getChallengeManager().getHistory().get(challengeExcel.getId()); + + if (history != null) { + data.addChallengeList(history.toProto()); + } else { + data.addChallengeList(Challenge.newInstance().setChallengeId(challengeExcel.getId())); + } + } + } else { + for (var history : player.getChallengeManager().getHistory().values()) { + data.addChallengeList(history.toProto()); + } } for (var reward : player.getChallengeManager().getTakenRewards().values()) {