diff --git a/src/main/java/emu/grasscutter/game/gacha/GachaBanner.java b/src/main/java/emu/grasscutter/game/gacha/GachaBanner.java index d4de7f94d..9286c23eb 100644 --- a/src/main/java/emu/grasscutter/game/gacha/GachaBanner.java +++ b/src/main/java/emu/grasscutter/game/gacha/GachaBanner.java @@ -138,13 +138,11 @@ public class GachaBanner { default -> (eventChance > -1) ? eventChance : eventChance5; }; } - - @Deprecated - public GachaInfo toProto() { - return toProto(""); - } - public GachaInfo toProto(String sessionKey) { + public GachaInfo toProto(Player player) { + // TODO: use other Nonce/key insteadof session key to ensure the overall security for the player + String sessionKey = player.getAccount().getSessionKey(); + String record = "http" + (HTTP_ENCRYPTION.useInRouting ? "s" : "") + "://" + lr(HTTP_INFO.accessAddress, HTTP_INFO.bindAddress) + ":" + lr(HTTP_INFO.accessPort, HTTP_INFO.bindPort) @@ -176,9 +174,7 @@ public class GachaBanner { .setGachaTimesLimit(Integer.MAX_VALUE) .setGachaSortId(this.getSortId()); - if(hasEpitomized() && !sessionKey.isEmpty()) { - Account account = DatabaseHelper.getAccountBySessionKey(sessionKey); - Player player = Grasscutter.getGameServer().getPlayerByAccountId(account.getId()); + if(hasEpitomized()) { PlayerGachaBannerInfo gachaInfo = player.getGachaInfo().getBannerInfo(this); info.setWishItemId(gachaInfo.getWishItemId()) diff --git a/src/main/java/emu/grasscutter/game/gacha/GachaManager.java b/src/main/java/emu/grasscutter/game/gacha/GachaManager.java index 84501d186..10cc5dae3 100644 --- a/src/main/java/emu/grasscutter/game/gacha/GachaManager.java +++ b/src/main/java/emu/grasscutter/game/gacha/GachaManager.java @@ -48,8 +48,7 @@ import static emu.grasscutter.Configuration.*; public class GachaManager { private final GameServer server; private final Int2ObjectMap gachaBanners; - private GetGachaInfoRsp cachedProto; - WatchService watchService; + private WatchService watchService; private static final int starglitterId = 221; private static final int stardustId = 222; @@ -88,9 +87,6 @@ public class GachaManager { getGachaBanners().put(banner.getScheduleId(), banner); } Grasscutter.getLogger().info("Banners successfully loaded."); - - - this.cachedProto = createProto(); } else { Grasscutter.getLogger().error("Unable to load banners. Banners size is 0."); } @@ -421,18 +417,7 @@ public class GachaManager { } } - @Deprecated - private synchronized GetGachaInfoRsp createProto() { - GetGachaInfoRsp.Builder proto = GetGachaInfoRsp.newBuilder().setGachaRandom(12345); - - for (GachaBanner banner : getGachaBanners().values()) { - proto.addGachaInfoList(banner.toProto()); - } - - return proto.build(); - } - - private synchronized GetGachaInfoRsp createProto(String sessionKey) { + private synchronized GetGachaInfoRsp createProto(Player player) { GetGachaInfoRsp.Builder proto = GetGachaInfoRsp.newBuilder().setGachaRandom(12345); long currentTime = System.currentTimeMillis() / 1000L; @@ -440,22 +425,14 @@ public class GachaManager { for (GachaBanner banner : getGachaBanners().values()) { if ((banner.getEndTime() >= currentTime && banner.getBeginTime() <= currentTime) || (banner.getBannerType() == BannerType.STANDARD)) { - proto.addGachaInfoList(banner.toProto(sessionKey)); + proto.addGachaInfoList(banner.toProto(player)); } } return proto.build(); } - - @Deprecated - public GetGachaInfoRsp toProto() { - if (this.cachedProto == null) { - this.cachedProto = createProto(); - } - return this.cachedProto; - } - public GetGachaInfoRsp toProto(String sessionKey) { - return createProto(sessionKey); + public GetGachaInfoRsp toProto(Player player) { + return createProto(player); } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetGachaInfoReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetGachaInfoReq.java index cb738a085..b4a9f9fe7 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetGachaInfoReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetGachaInfoReq.java @@ -14,10 +14,7 @@ public class HandlerGetGachaInfoReq extends PacketHandler { @Override public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - session.send(new PacketGetGachaInfoRsp(session.getServer().getGachaManager(), - // TODO: use other Nonce/key insteadof session key to ensure the overall security for the player - session.getPlayer().getAccount().getSessionKey()) - ); + session.send(new PacketGetGachaInfoRsp(session.getServer().getGachaManager(), session.getPlayer())); } } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketGetGachaInfoRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketGetGachaInfoRsp.java index 84d857681..1bd3ea876 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketGetGachaInfoRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketGetGachaInfoRsp.java @@ -1,22 +1,16 @@ package emu.grasscutter.server.packet.send; import emu.grasscutter.game.gacha.GachaManager; +import emu.grasscutter.game.player.Player; import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.PacketOpcodes; public class PacketGetGachaInfoRsp extends BasePacket { - @Deprecated - public PacketGetGachaInfoRsp(GachaManager manager) { + public PacketGetGachaInfoRsp(GachaManager manager, Player player) { super(PacketOpcodes.GetGachaInfoRsp); - this.setData(manager.toProto()); - } - - public PacketGetGachaInfoRsp(GachaManager manager, String sessionKey) { - super(PacketOpcodes.GetGachaInfoRsp); - - this.setData(manager.toProto(sessionKey)); + this.setData(manager.toProto(player)); } }