Update gc to 3.3 (#1981)

* replace the deprecated api

* update proto

* delete music game

* fixed codes

* fix costume switch

* fix mail bug

* Bump version number.

* Re-add max boss chest number

Co-authored-by: GanyusLeftHorn <1244229+GanyusLeftHorn@users.noreply.github.com>
This commit is contained in:
Simplxs
2022-12-24 05:12:02 +08:00
committed by GitHub
parent 8b83dbf58c
commit 92fbaa8670
1142 changed files with 474411 additions and 169883 deletions

View File

@@ -3,9 +3,10 @@ package emu.grasscutter.server.http.dispatch;
import com.google.protobuf.ByteString;
import emu.grasscutter.Grasscutter;
import emu.grasscutter.Grasscutter.ServerRunMode;
import emu.grasscutter.net.proto.QueryRegionListHttpRspOuterClass.QueryRegionListHttpRsp;
import emu.grasscutter.net.proto.QueryCurrRegionHttpRspOuterClass.QueryCurrRegionHttpRsp;
import emu.grasscutter.net.proto.RegionInfoOuterClass.RegionInfo;
import emu.grasscutter.net.proto.RegionSimpleInfoOuterClass.RegionSimpleInfo;
import emu.grasscutter.net.proto.RegionInfoOuterClass.RegionInfo;
import emu.grasscutter.server.event.dispatch.QueryAllRegionsEvent;
import emu.grasscutter.server.event.dispatch.QueryCurrentRegionEvent;
import emu.grasscutter.server.http.Router;
@@ -23,7 +24,6 @@ import java.security.Signature;
import java.util.regex.Pattern;
import static emu.grasscutter.config.Configuration.*;
import static emu.grasscutter.net.proto.QueryRegionListHttpRspOuterClass.QueryRegionListHttpRsp;
/**
* Handles requests related to region queries.

View File

@@ -5,8 +5,8 @@ import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.packet.PacketHandler;
import emu.grasscutter.server.game.GameSession;
@Opcodes(PacketOpcodes.AddCustomTeamReq)
public class HandlerAddCustomTeamReq extends PacketHandler {
@Opcodes(PacketOpcodes.AddBackupAvatarTeamReq)
public class HandlerAddBackupAvatarTeamReq extends PacketHandler {
@Override
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
session.getPlayer().getTeamManager().addNewCustomTeam();

View File

@@ -1,26 +0,0 @@
package emu.grasscutter.server.packet.recv;
import emu.grasscutter.net.packet.Opcodes;
import emu.grasscutter.net.packet.PacketHandler;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.Unk2700BEDLIGJANCJClientReq;
import emu.grasscutter.server.game.GameSession;
import emu.grasscutter.server.packet.send.PacketChangeHomeBgmNotify;
import emu.grasscutter.server.packet.send.PacketChangeHomeBgmRsp;
@Opcodes(PacketOpcodes.Unk2700_BEDLIGJANCJ_ClientReq)
public class HandlerChangeHomeBgmReq extends PacketHandler {
@Override
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
var req = Unk2700BEDLIGJANCJClientReq.Unk2700_BEDLIGJANCJ_ClientReq.parseFrom(payload);
int homeBgmId = req.getUnk2700BJHAMKKECEI();
var home = session.getPlayer().getHome();
home.getHomeSceneItem(session.getPlayer().getSceneId()).setHomeBgmId(homeBgmId);
home.save();
session.send(new PacketChangeHomeBgmNotify(homeBgmId));
session.send(new PacketChangeHomeBgmRsp());
}
}

View File

@@ -2,15 +2,15 @@ package emu.grasscutter.server.packet.recv;
import emu.grasscutter.net.packet.Opcodes;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.RemoveCustomTeamReqOuterClass.RemoveCustomTeamReq;
import emu.grasscutter.net.proto.DelBackupAvatarTeamReqOuterClass.DelBackupAvatarTeamReq;
import emu.grasscutter.net.packet.PacketHandler;
import emu.grasscutter.server.game.GameSession;
@Opcodes(PacketOpcodes.RemoveCustomTeamReq)
public class HandlerRemoveCustomTeamReq extends PacketHandler {
@Opcodes(PacketOpcodes.DelBackupAvatarTeamReq)
public class HandlerDelBackupAvatarTeamReq extends PacketHandler {
@Override
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
RemoveCustomTeamReq req = RemoveCustomTeamReq.parseFrom(payload);
session.getPlayer().getTeamManager().removeCustomTeam(req.getId());
DelBackupAvatarTeamReq req = DelBackupAvatarTeamReq.parseFrom(payload);
session.getPlayer().getTeamManager().removeCustomTeam(req.getBackupAvatarTeamId());
}
}

View File

@@ -1,21 +0,0 @@
package emu.grasscutter.server.packet.recv;
import emu.grasscutter.net.packet.Opcodes;
import emu.grasscutter.net.packet.PacketHandler;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.FireWorkReqOuterClass;
import emu.grasscutter.server.game.GameSession;
import emu.grasscutter.server.packet.send.PacketFireworkNotify;
import emu.grasscutter.server.packet.send.PacketFireworkRsp;
@Opcodes(PacketOpcodes.FireworkReq)
public class HandlerFireWorkReq extends PacketHandler {
@Override
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
var req
= FireWorkReqOuterClass.FireWorkReq.parseFrom(payload);
session.send(new PacketFireworkNotify(req.getFireWorkData()));
session.send(new PacketFireworkRsp());
}
}

View File

@@ -1,23 +0,0 @@
package emu.grasscutter.server.packet.recv;
import emu.grasscutter.net.packet.Opcodes;
import emu.grasscutter.net.packet.PacketHandler;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.FireworkSetReqOuterClass;
import emu.grasscutter.server.game.GameSession;
import emu.grasscutter.server.packet.send.PacketFireworkSetNotify;
import emu.grasscutter.server.packet.send.PacketFireworkSetRsp;
@Opcodes(PacketOpcodes.FireworkSetReq)
public class HandlerFireworkSetReq extends PacketHandler {
@Override
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
var req
= FireworkSetReqOuterClass.FireworkSetReq.parseFrom(payload);
session.send(new PacketFireworkSetNotify(req.getData()));
session.send(new PacketFireworkSetRsp());
}
}

View File

@@ -16,6 +16,6 @@ public class HandlerGetAllMailReq extends PacketHandler {
@Override
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
GetAllMailReqOuterClass.GetAllMailReq req = GetAllMailReqOuterClass.GetAllMailReq.parseFrom(payload);
session.send(new PacketGetAllMailRsp(session.getPlayer(), req.getUnk2700OPEHLDAGICF()));
session.send(new PacketGetAllMailRsp(session.getPlayer(), req.getIsCollected()));
}
}

View File

@@ -106,7 +106,7 @@ public class HandlerGetPlayerTokenReq extends PacketHandler {
Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
cipher.init(Cipher.DECRYPT_MODE, Crypto.CUR_SIGNING_KEY);
var client_seed_encrypted = Utils.base64Decode(req.getClientSeed());
var client_seed_encrypted = Utils.base64Decode(req.getClientRandKey());
var client_seed = ByteBuffer.wrap(cipher.doFinal(client_seed_encrypted))
.getLong();
@@ -124,7 +124,7 @@ public class HandlerGetPlayerTokenReq extends PacketHandler {
session.send(new PacketGetPlayerTokenRsp(session, Utils.base64Encode(seed_encrypted), Utils.base64Encode(privateSignature.sign())));
} catch (Exception ignore) {
// Only UA Patch users will have exception
byte[] clientBytes = Utils.base64Decode(req.getClientSeed());
byte[] clientBytes = Utils.base64Decode(req.getClientRandKey());
byte[] seed = ByteHelper.longToBytes(Crypto.ENCRYPT_SEED);
Crypto.xor(clientBytes, seed);

View File

@@ -0,0 +1,26 @@
package emu.grasscutter.server.packet.recv;
import emu.grasscutter.net.packet.Opcodes;
import emu.grasscutter.net.packet.PacketHandler;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.HomeChangeBgmReqOuterClass;
import emu.grasscutter.server.game.GameSession;
import emu.grasscutter.server.packet.send.PacketHomeChangeBgmNotify;
import emu.grasscutter.server.packet.send.PacketHomeChangeBgmRsp;
@Opcodes(PacketOpcodes.HomeChangeBgmReq)
public class HandlerHomeChangeBgmReq extends PacketHandler {
@Override
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
var req = HomeChangeBgmReqOuterClass.HomeChangeBgmReq.parseFrom(payload);
int homeBgmId = req.getBgmId();
var home = session.getPlayer().getHome();
home.getHomeSceneItem(session.getPlayer().getSceneId()).setHomeBgmId(homeBgmId);
home.save();
session.send(new PacketHomeChangeBgmNotify(homeBgmId));
session.send(new PacketHomeChangeBgmRsp());
}
}

View File

@@ -9,12 +9,12 @@ import emu.grasscutter.server.packet.send.*;
@Opcodes(PacketOpcodes.HomeChangeEditModeReq)
public class HandlerHomeChangeEditModeReq extends PacketHandler {
@Override
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
var req = HomeChangeEditModeReqOuterClass.HomeChangeEditModeReq.parseFrom(payload);
session.send(new PacketHomeUnknown1Notify(req.getIsEnterEditMode()));
session.send(new PacketHomePreChangeEditModeNotify(req.getIsEnterEditMode()));
session.send(new PacketHomeBasicInfoNotify(session.getPlayer(), req.getIsEnterEditMode()));
session.send(new PacketHomeComfortInfoNotify(session.getPlayer()));

View File

@@ -4,17 +4,17 @@ import emu.grasscutter.net.packet.Opcodes;
import emu.grasscutter.net.packet.PacketHandler;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.server.game.GameSession;
import emu.grasscutter.server.packet.send.PacketHomeUnknown2Rsp;
import emu.grasscutter.server.packet.send.PacketHomeEnterEditModeFinishRsp;
@Opcodes(PacketOpcodes.Unk2700_ACILPONNGGK_ClientReq)
public class HandlerHomeUnknown2Req extends PacketHandler {
@Opcodes(PacketOpcodes.HomeEnterEditModeFinishReq)
public class HandlerHomeEnterEditModeFinishReq extends PacketHandler {
@Override
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
/*
* This packet is about the edit mode
*/
session.send(new PacketHomeUnknown2Rsp());
session.send(new PacketHomeEnterEditModeFinishRsp());
}
}

View File

@@ -0,0 +1,23 @@
package emu.grasscutter.server.packet.recv;
import emu.grasscutter.net.packet.Opcodes;
import emu.grasscutter.net.packet.PacketHandler;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.LaunchFireworksReqOuterClass;
import emu.grasscutter.server.game.GameSession;
import emu.grasscutter.server.packet.send.PacketFireworksLaunchDataNotify;
import emu.grasscutter.server.packet.send.PacketLaunchFireworksRsp;
@Opcodes(PacketOpcodes.LaunchFireworksReq)
public class HandlerLaunchFireworksReq extends PacketHandler {
@Override
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
var req
= LaunchFireworksReqOuterClass.LaunchFireworksReq.parseFrom(payload);
session.send(new PacketFireworksLaunchDataNotify(req.getSchemeData()));
session.send(new PacketLaunchFireworksRsp());
}
}

View File

@@ -1,66 +1,66 @@
package emu.grasscutter.server.packet.recv;
import emu.grasscutter.database.DatabaseHelper;
import emu.grasscutter.game.activity.musicgame.MusicGameActivityHandler;
import emu.grasscutter.game.activity.musicgame.MusicGameBeatmap;
import emu.grasscutter.game.activity.musicgame.MusicGamePlayerData;
import emu.grasscutter.game.props.ActivityType;
import emu.grasscutter.net.packet.Opcodes;
import emu.grasscutter.net.packet.PacketHandler;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.MusicGameCreateBeatmapReqOuterClass;
import emu.grasscutter.server.game.GameSession;
import emu.grasscutter.server.packet.send.PacketActivityInfoNotify;
import emu.grasscutter.server.packet.send.PacketMusicGameCreateBeatmapRsp;
import emu.grasscutter.utils.Utils;
import java.util.Objects;
@Opcodes(PacketOpcodes.MusicGameCreateBeatmapReq)
public class HandlerMusicGameCreateBeatmapReq extends PacketHandler {
@Override
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
var req = MusicGameCreateBeatmapReqOuterClass.MusicGameCreateBeatmapReq.parseFrom(payload);
var musicGameBeatmap = MusicGameBeatmap.of()
.musicId(req.getMusicBriefInfo().getMusicId())
.musicNoteCount(req.getMusicBriefInfo().getMusicNoteCount())
.savePosition(req.getMusicBriefInfo().getPosition())
.maxScore(req.getMusicBriefInfo().getMaxScore())
.authorUid(session.getPlayer().getUid())
.beatmap(MusicGameBeatmap.parse(req.getMusicRecord().getBeatmapItemListList()))
.createTime(Utils.getCurrentSeconds())
.build();
musicGameBeatmap.save();
var playerData = session.getPlayer().getActivityManager().getPlayerActivityDataByActivityType(ActivityType.NEW_ACTIVITY_MUSIC_GAME);
if(playerData.isEmpty()){
return;
}
var handler = (MusicGameActivityHandler) playerData.get().getActivityHandler();
var musicGamePlayerData = handler.getMusicGamePlayerData(playerData.get());
var oldBeatmap = musicGamePlayerData.getPersonalCustomBeatmapRecord().values().stream()
.map(MusicGamePlayerData.CustomBeatmapRecord::getMusicShareId)
.map(DatabaseHelper::getMusicGameBeatmap)
.filter(Objects::nonNull)
.filter(item -> item.getAuthorUid() == session.getPlayer().getUid())
.filter(item -> item.getMusicId() == req.getMusicBriefInfo().getMusicId())
.filter(item -> item.getSavePosition() == req.getMusicBriefInfo().getPosition())
.findFirst();
// delete old beatmap for player
// the old beatmap is still in database so that others can still play.
oldBeatmap.ifPresent(i -> handler.removePersonalBeatmap(playerData.get(), i));
// link this beatmap to player's personal data
handler.addPersonalBeatmap(playerData.get(), musicGameBeatmap);
session.send(new PacketActivityInfoNotify(handler.toProto(playerData.get())));
session.send(new PacketMusicGameCreateBeatmapRsp(musicGameBeatmap.getMusicShareId(), req.getUnknownEnum1()));
}
}
//package emu.grasscutter.server.packet.recv;
//
//import emu.grasscutter.database.DatabaseHelper;
//import emu.grasscutter.game.activity.musicgame.MusicGameActivityHandler;
//import emu.grasscutter.game.activity.musicgame.MusicGameBeatmap;
//import emu.grasscutter.game.activity.musicgame.MusicGamePlayerData;
//import emu.grasscutter.game.props.ActivityType;
//import emu.grasscutter.net.packet.Opcodes;
//import emu.grasscutter.net.packet.PacketHandler;
//import emu.grasscutter.net.packet.PacketOpcodes;
//import emu.grasscutter.net.proto.MusicGameCreateBeatmapReqOuterClass;
//import emu.grasscutter.server.game.GameSession;
//import emu.grasscutter.server.packet.send.PacketActivityInfoNotify;
//import emu.grasscutter.server.packet.send.PacketMusicGameCreateBeatmapRsp;
//import emu.grasscutter.utils.Utils;
//
//import java.util.Objects;
//
//@Opcodes(PacketOpcodes.MusicGameCreateBeatmapReq)
//public class HandlerMusicGameCreateBeatmapReq extends PacketHandler {
//
// @Override
// public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
// var req = MusicGameCreateBeatmapReqOuterClass.MusicGameCreateBeatmapReq.parseFrom(payload);
//
// var musicGameBeatmap = MusicGameBeatmap.of()
// .musicId(req.getMusicBriefInfo().getMusicId())
// .musicNoteCount(req.getMusicBriefInfo().getMusicNoteCount())
// .savePosition(req.getMusicBriefInfo().getPosition())
// .maxScore(req.getMusicBriefInfo().getMaxScore())
// .authorUid(session.getPlayer().getUid())
// .beatmap(MusicGameBeatmap.parse(req.getMusicRecord().getBeatmapItemListList()))
// .createTime(Utils.getCurrentSeconds())
// .build();
//
// musicGameBeatmap.save();
//
// var playerData = session.getPlayer().getActivityManager().getPlayerActivityDataByActivityType(ActivityType.NEW_ACTIVITY_MUSIC_GAME);
// if(playerData.isEmpty()){
// return;
// }
//
// var handler = (MusicGameActivityHandler) playerData.get().getActivityHandler();
// var musicGamePlayerData = handler.getMusicGamePlayerData(playerData.get());
//
// var oldBeatmap = musicGamePlayerData.getPersonalCustomBeatmapRecord().values().stream()
// .map(MusicGamePlayerData.CustomBeatmapRecord::getMusicShareId)
// .map(DatabaseHelper::getMusicGameBeatmap)
// .filter(Objects::nonNull)
// .filter(item -> item.getAuthorUid() == session.getPlayer().getUid())
// .filter(item -> item.getMusicId() == req.getMusicBriefInfo().getMusicId())
// .filter(item -> item.getSavePosition() == req.getMusicBriefInfo().getPosition())
// .findFirst();
//
// // delete old beatmap for player
// // the old beatmap is still in database so that others can still play.
// oldBeatmap.ifPresent(i -> handler.removePersonalBeatmap(playerData.get(), i));
//
// // link this beatmap to player's personal data
// handler.addPersonalBeatmap(playerData.get(), musicGameBeatmap);
//
// session.send(new PacketActivityInfoNotify(handler.toProto(playerData.get())));
// session.send(new PacketMusicGameCreateBeatmapRsp(musicGameBeatmap.getMusicShareId(), req.getUnknownEnum1()));
// }
//
//}

View File

@@ -1,31 +1,31 @@
package emu.grasscutter.server.packet.recv;
import emu.grasscutter.game.activity.musicgame.MusicGameBeatmap;
import emu.grasscutter.net.packet.Opcodes;
import emu.grasscutter.net.packet.PacketHandler;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.MusicGameGetBeatmapReqOuterClass;
import emu.grasscutter.server.game.GameSession;
import emu.grasscutter.server.packet.send.PacketMusicGameGetBeatmapRsp;
@Opcodes(PacketOpcodes.MusicGameGetBeatmapReq)
public class HandlerMusicGameGetBeatmapReq extends PacketHandler {
@Override
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
var req = MusicGameGetBeatmapReqOuterClass.MusicGameGetBeatmapReq.parseFrom(payload);
var musicGameBeatmap = MusicGameBeatmap.getByShareId(req.getMusicShareId());
if(musicGameBeatmap == null){
return;
}
session.send(new PacketMusicGameGetBeatmapRsp(
musicGameBeatmap.toBriefProto().build(),
musicGameBeatmap.toProto(),
req
));
}
}
//package emu.grasscutter.server.packet.recv;
//
//import emu.grasscutter.game.activity.musicgame.MusicGameBeatmap;
//import emu.grasscutter.net.packet.Opcodes;
//import emu.grasscutter.net.packet.PacketHandler;
//import emu.grasscutter.net.packet.PacketOpcodes;
//import emu.grasscutter.net.proto.MusicGameGetBeatmapReqOuterClass;
//import emu.grasscutter.server.game.GameSession;
//import emu.grasscutter.server.packet.send.PacketMusicGameGetBeatmapRsp;
//
//@Opcodes(PacketOpcodes.MusicGameGetBeatmapReq)
//public class HandlerMusicGameGetBeatmapReq extends PacketHandler {
//
// @Override
// public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
// var req = MusicGameGetBeatmapReqOuterClass.MusicGameGetBeatmapReq.parseFrom(payload);
//
// var musicGameBeatmap = MusicGameBeatmap.getByShareId(req.getMusicShareId());
//
// if(musicGameBeatmap == null){
// return;
// }
//
// session.send(new PacketMusicGameGetBeatmapRsp(
// musicGameBeatmap.toBriefProto().build(),
// musicGameBeatmap.toProto(),
// req
// ));
// }
//
//}

View File

@@ -1,28 +1,28 @@
package emu.grasscutter.server.packet.recv;
import emu.grasscutter.game.activity.musicgame.MusicGameBeatmap;
import emu.grasscutter.net.packet.Opcodes;
import emu.grasscutter.net.packet.PacketHandler;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.MusicGameSearchBeatmapReqOuterClass;
import emu.grasscutter.server.game.GameSession;
import emu.grasscutter.server.packet.send.PacketMusicGameSearchBeatmapRsp;
@Opcodes(PacketOpcodes.MusicGameSearchBeatmapReq)
public class HandlerMusicGameSearchBeatmapReq extends PacketHandler {
@Override
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
var req = MusicGameSearchBeatmapReqOuterClass.MusicGameSearchBeatmapReq.parseFrom(payload);
var musicGameBeatmap = MusicGameBeatmap.getByShareId(req.getMusicShareId());
if(musicGameBeatmap == null){
session.send(new PacketMusicGameSearchBeatmapRsp(11153, req.getUnknownEnum1()));
return;
}
session.send(new PacketMusicGameSearchBeatmapRsp(musicGameBeatmap.toBriefProto().build(), req.getUnknownEnum1()));
}
}
//package emu.grasscutter.server.packet.recv;
//
//import emu.grasscutter.game.activity.musicgame.MusicGameBeatmap;
//import emu.grasscutter.net.packet.Opcodes;
//import emu.grasscutter.net.packet.PacketHandler;
//import emu.grasscutter.net.packet.PacketOpcodes;
//import emu.grasscutter.net.proto.MusicGameSearchBeatmapReqOuterClass;
//import emu.grasscutter.server.game.GameSession;
//import emu.grasscutter.server.packet.send.PacketMusicGameSearchBeatmapRsp;
//
//@Opcodes(PacketOpcodes.MusicGameSearchBeatmapReq)
//public class HandlerMusicGameSearchBeatmapReq extends PacketHandler {
//
// @Override
// public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
// var req = MusicGameSearchBeatmapReqOuterClass.MusicGameSearchBeatmapReq.parseFrom(payload);
//
// var musicGameBeatmap = MusicGameBeatmap.getByShareId(req.getMusicShareId());
//
// if(musicGameBeatmap == null){
// session.send(new PacketMusicGameSearchBeatmapRsp(11153, req.getUnknownEnum1()));
// return;
// }
//
// session.send(new PacketMusicGameSearchBeatmapRsp(musicGameBeatmap.toBriefProto().build(), req.getUnknownEnum1()));
// }
//
//}

View File

@@ -27,12 +27,7 @@ public class HandlerMusicGameSettleReq extends PacketHandler {
boolean isNewRecord = false;
// check if custom beatmap
// TODO: PROTO IS OBFUSCATED, NEED TO GET PROPER VALUES.
// Discovered: 23/08/2022.
// Probably was an issue in 2.8 but was discovered in 3.0 port.
// - Benj
/*if (req.getMusicShareId() == 0) {
if (req.getUgcGuid() == 0) {
session.getPlayer().getActivityManager().triggerWatcher(
WatcherTriggerType.TRIGGER_FLEUR_FAIR_MUSIC_GAME_REACH_SCORE,
String.valueOf(req.getMusicBasicId()),
@@ -51,14 +46,14 @@ public class HandlerMusicGameSettleReq extends PacketHandler {
}else {
handler.setMusicGameCustomBeatmapRecord(playerData.get(),
MusicGamePlayerData.CustomBeatmapRecord.of()
.musicShareId(req.getMusicShareId())
.musicShareId(req.getUgcGuid())
.score(req.getMaxCombo())
.settle(req.getSuccess())
// .settle(req.getSuccess())
.build());
}
session.send(new PacketMusicGameSettleRsp(req.getMusicBasicId(), req.getMusicShareId(), isNewRecord));*/
session.send(new PacketMusicGameSettleRsp(req.getMusicBasicId(), req.getUgcGuid(), isNewRecord));
}
}

View File

@@ -14,7 +14,7 @@ public class HandlerMusicGameStartReq extends PacketHandler {
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
var req = MusicGameStartReqOuterClass.MusicGameStartReq.parseFrom(payload);
session.send(new PacketMusicGameStartRsp(req.getMusicBasicId(), req.getMusicShareId()));
session.send(new PacketMusicGameStartRsp(req.getMusicBasicId(), req.getUgcGuid()));
}
}

View File

@@ -1,20 +1,20 @@
package emu.grasscutter.server.packet.recv;
import emu.grasscutter.net.packet.Opcodes;
import emu.grasscutter.net.packet.PacketHandler;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.MusicGameStartToPlayOthersBeatmapReqOuterClass;
import emu.grasscutter.server.game.GameSession;
import emu.grasscutter.server.packet.send.PacketMusicGameStartToPlayOthersBeatmapRsp;
@Opcodes(PacketOpcodes.MusicGameStartToPlayOthersBeatmapReq)
public class HandlerMusicGameStartToPlayOthersBeatmapReq extends PacketHandler {
@Override
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
var req = MusicGameStartToPlayOthersBeatmapReqOuterClass.MusicGameStartToPlayOthersBeatmapReq.parseFrom(payload);
session.send(new PacketMusicGameStartToPlayOthersBeatmapRsp(req.getUnknownEnum1()));
}
}
//package emu.grasscutter.server.packet.recv;
//
//import emu.grasscutter.net.packet.Opcodes;
//import emu.grasscutter.net.packet.PacketHandler;
//import emu.grasscutter.net.packet.PacketOpcodes;
//import emu.grasscutter.net.proto.MusicGameStartToPlayOthersBeatmapReqOuterClass;
//import emu.grasscutter.server.game.GameSession;
//import emu.grasscutter.server.packet.send.PacketMusicGameStartToPlayOthersBeatmapRsp;
//
//@Opcodes(PacketOpcodes.MusicGameStartToPlayOthersBeatmapReq)
//public class HandlerMusicGameStartToPlayOthersBeatmapReq extends PacketHandler {
//
// @Override
// public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
// var req = MusicGameStartToPlayOthersBeatmapReqOuterClass.MusicGameStartToPlayOthersBeatmapReq.parseFrom(payload);
//
// session.send(new PacketMusicGameStartToPlayOthersBeatmapRsp(req.getUnknownEnum1()));
// }
//
//}

View File

@@ -0,0 +1,21 @@
package emu.grasscutter.server.packet.recv;
import emu.grasscutter.net.packet.Opcodes;
import emu.grasscutter.net.packet.PacketHandler;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.ReformFireworksReqOuterClass;
import emu.grasscutter.server.game.GameSession;
import emu.grasscutter.server.packet.send.PacketFireworksReformDataNotify;
import emu.grasscutter.server.packet.send.PacketReformFireworksRsp;
@Opcodes(PacketOpcodes.ReformFireworksReq)
public class HandlerReformFireworksReq extends PacketHandler {
@Override
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
var req
= ReformFireworksReqOuterClass.ReformFireworksReq.parseFrom(payload);
session.send(new PacketFireworksReformDataNotify(req.getFireworksReformData()));
session.send(new PacketReformFireworksRsp());
}
}

View File

@@ -0,0 +1,22 @@
package emu.grasscutter.server.packet.send;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.RetcodeOuterClass.Retcode;
import emu.grasscutter.net.proto.AddBackupAvatarTeamRspOuterClass.AddBackupAvatarTeamRsp;
public class PacketAddBackupAvatarTeamRsp extends BasePacket {
public PacketAddBackupAvatarTeamRsp(Retcode retcode) {
super(PacketOpcodes.AddBackupAvatarTeamRsp);
AddBackupAvatarTeamRsp proto = AddBackupAvatarTeamRsp.newBuilder()
.setRetcode(retcode.getNumber())
.build();
this.setData(proto);
}
public PacketAddBackupAvatarTeamRsp() {
this(Retcode.RET_SUCC);
}
}

View File

@@ -1,22 +0,0 @@
package emu.grasscutter.server.packet.send;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.RetcodeOuterClass.Retcode;
import emu.grasscutter.net.proto.AddCustomTeamRspOuterClass.AddCustomTeamRsp;
public class PacketAddCustomTeamRsp extends BasePacket {
public PacketAddCustomTeamRsp(Retcode retcode) {
super(PacketOpcodes.AddCustomTeamRsp);
AddCustomTeamRsp proto = AddCustomTeamRsp.newBuilder()
.setRetcode(retcode.getNumber())
.build();
this.setData(proto);
}
public PacketAddCustomTeamRsp() {
this(Retcode.RET_SUCC);
}
}

View File

@@ -23,7 +23,7 @@ public class PacketAllWidgetDataNotify extends BasePacket {
LunchBoxDataOuterClass.LunchBoxData.newBuilder().build()
)
// Maybe it's a little difficult, or it makes you upset :(
.addAllOneofGatherPointDetectorDataList(List.of())
.addAllOneoffGatherPointDetectorDataList(List.of())
// So, goodbye, and hopefully sometime in the future o(* ̄▽ ̄*)ブ
.addAllCoolDownGroupDataList(List.of())
// I'll see your PR with a title that says (・∀・(・∀・(・∀・*)

View File

@@ -13,7 +13,7 @@ public class PacketAvatarDataNotify extends BasePacket {
AvatarDataNotify.Builder proto = AvatarDataNotify.newBuilder()
.setCurAvatarTeamId(player.getTeamManager().getCurrentTeamId())
//.setChooseAvatarGuid(player.getTeamManager().getCurrentCharacterGuid())
.setChooseAvatarGuid(player.getTeamManager().getCurrentCharacterGuid())
.addAllOwnedFlycloakList(player.getFlyCloakList())
.addAllOwnedCostumeList(player.getCostumeList());
@@ -22,7 +22,7 @@ public class PacketAvatarDataNotify extends BasePacket {
player.getTeamManager().getTeams().forEach((id, teamInfo) -> {
proto.putAvatarTeamMap(id, teamInfo.toProto(player));
if (id > 4) { // Add the id list for custom teams.
proto.addCustomTeamIds(id);
proto.addBackupAvatarTeamOrderList(id);
}
});

View File

@@ -3,18 +3,18 @@ package emu.grasscutter.server.packet.send;
import emu.grasscutter.game.player.Player;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.CustomTeamListNotifyOuterClass.CustomTeamListNotify;
import emu.grasscutter.net.proto.AvatarTeamAllDataNotifyOuterClass.AvatarTeamAllDataNotify;
public class PacketCustomTeamListNotify extends BasePacket {
public PacketCustomTeamListNotify(Player player) {
super(PacketOpcodes.CustomTeamListNotify);
public class PacketAvatarTeamAllDataNotify extends BasePacket {
public PacketAvatarTeamAllDataNotify(Player player) {
super(PacketOpcodes.AvatarTeamAllDataNotify);
CustomTeamListNotify.Builder proto = CustomTeamListNotify.newBuilder();
AvatarTeamAllDataNotify.Builder proto = AvatarTeamAllDataNotify.newBuilder();
// Add the id list for custom teams.
for (int id : player.getTeamManager().getTeams().keySet()) {
if (id > 4) {
proto.addCustomTeamIds(id);
proto.addBackupAvatarTeamOrderList(id);
}
}

View File

@@ -1,17 +0,0 @@
package emu.grasscutter.server.packet.send;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.Unk2700FJEHHCPCBLGServerNotify;
public class PacketChangeHomeBgmNotify extends BasePacket {
public PacketChangeHomeBgmNotify(int homeBgmId) {
super(PacketOpcodes.Unk2700_FJEHHCPCBLG_ServerNotify);
var notify = Unk2700FJEHHCPCBLGServerNotify.Unk2700_FJEHHCPCBLG_ServerNotify.newBuilder()
.setUnk2700BJHAMKKECEI(homeBgmId)
.build();
this.setData(notify);
}
}

View File

@@ -1,17 +0,0 @@
package emu.grasscutter.server.packet.send;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.Unk2700OGHMHELMBNNServerRsp;
public class PacketChangeHomeBgmRsp extends BasePacket {
public PacketChangeHomeBgmRsp() {
super(PacketOpcodes.Unk2700_OGHMHELMBNN_ServerRsp);
var rsp = Unk2700OGHMHELMBNNServerRsp.Unk2700_OGHMHELMBNN_ServerRsp.newBuilder()
.setRetcode(0)
.build();
this.setData(rsp);
}
}

View File

@@ -14,7 +14,7 @@ public class PacketCompoundDataNotify extends BasePacket {
super(PacketOpcodes.CompoundDataNotify);
var proto= CompoundDataNotify.newBuilder()
.addAllUnlockCompoundList(unlockedCompounds)
.addAllCompoundQueDataList(compoundQueueData)
.addAllCompoundQueueDataList(compoundQueueData)
.build();
this.setData(proto);
}

View File

@@ -0,0 +1,23 @@
package emu.grasscutter.server.packet.send;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.RetcodeOuterClass.Retcode;
import emu.grasscutter.net.proto.DelBackupAvatarTeamRspOuterClass.DelBackupAvatarTeamRsp;
public class PacketDelBackupAvatarTeamRsp extends BasePacket {
public PacketDelBackupAvatarTeamRsp(Retcode retcode, int id) {
super(PacketOpcodes.DelBackupAvatarTeamRsp);
DelBackupAvatarTeamRsp proto = DelBackupAvatarTeamRsp.newBuilder()
.setRetcode(retcode.getNumber())
.setBackupAvatarTeamId(id)
.build();
this.setData(proto);
}
public PacketDelBackupAvatarTeamRsp(int id) {
this(Retcode.RET_SUCC, id);
}
}

View File

@@ -12,27 +12,27 @@ import emu.grasscutter.net.proto.PropChangeReasonOuterClass.PropChangeReason;
import java.util.List;
public class PacketEntityFightPropChangeReasonNotify extends BasePacket {
public PacketEntityFightPropChangeReasonNotify(GameEntity entity, FightProperty prop, Float value, List<Integer> param, PropChangeReason reason, ChangeHpReason changeHpReason) {
super(PacketOpcodes.EntityFightPropChangeReasonNotify);
EntityFightPropChangeReasonNotify.Builder proto = EntityFightPropChangeReasonNotify.newBuilder()
.setEntityId(entity.getId())
.setPropType(prop.getId())
.setPropDelta(value)
.setReason(reason)
.setChangeHpReason(changeHpReason);
for(int p : param){
proto.addParamList(p);
}
this.setData(proto);
}
public PacketEntityFightPropChangeReasonNotify(GameEntity entity, FightProperty prop, Float value, PropChangeReason reason, ChangeHpReason changeHpReason) {
super(PacketOpcodes.EntityFightPropChangeReasonNotify);
EntityFightPropChangeReasonNotify proto = EntityFightPropChangeReasonNotify.newBuilder()
.setEntityId(entity.getId())
.setPropType(prop.getId())
@@ -40,33 +40,33 @@ public class PacketEntityFightPropChangeReasonNotify extends BasePacket {
.setReason(reason)
.setChangeHpReason(changeHpReason)
.build();
this.setData(proto);
}
public PacketEntityFightPropChangeReasonNotify(GameEntity entity, FightProperty prop, Float value, PropChangeReason reason) {
super(PacketOpcodes.EntityFightPropChangeReasonNotify);
EntityFightPropChangeReasonNotify proto = EntityFightPropChangeReasonNotify.newBuilder()
.setEntityId(entity.getId())
.setPropType(prop.getId())
.setPropDelta(value)
.setReason(reason)
.build();
this.setData(proto);
}
public PacketEntityFightPropChangeReasonNotify(GameEntity entity, FightProperty prop, Float value, ChangeEnergyReason reason) {
super(PacketOpcodes.EntityFightPropChangeReasonNotify);
EntityFightPropChangeReasonNotify proto = EntityFightPropChangeReasonNotify.newBuilder()
.setEntityId(entity.getId())
.setPropType(prop.getId())
.setPropDelta(value)
.setChangeEnergyReson(reason)
.setChangeEnergyReason(reason)
.build();
this.setData(proto);
}
}

View File

@@ -1,21 +0,0 @@
package emu.grasscutter.server.packet.send;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.FireWorkNotifyOuterClass;
import emu.grasscutter.net.proto.FireWorkDataOuterClass;
public class PacketFireworkNotify extends BasePacket {
public PacketFireworkNotify(FireWorkDataOuterClass.FireWorkData pinfo) {
super(PacketOpcodes.FireworkNotify);
var proto
= FireWorkNotifyOuterClass.FireWorkNotify.newBuilder();
proto.addFireWorkData(pinfo);
setData(proto.build());
}
}

View File

@@ -1,12 +0,0 @@
package emu.grasscutter.server.packet.send;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
public class PacketFireworkRsp extends BasePacket {
public PacketFireworkRsp() {
super(PacketOpcodes.FireworkRsp);
}
}

View File

@@ -1,21 +0,0 @@
package emu.grasscutter.server.packet.send;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.FireworkSetNotifyOuterClass;
import emu.grasscutter.net.proto.FireworkSetDataOuterClass;
public class PacketFireworkSetNotify extends BasePacket {
public PacketFireworkSetNotify(FireworkSetDataOuterClass.FireworkSetData notify) {
super(PacketOpcodes.FireworkSetNotify);
var proto
= FireworkSetNotifyOuterClass.FireworkSetNotify.newBuilder();
proto.setCode(1).addData(notify);
setData(proto.build());
}
}

View File

@@ -0,0 +1,21 @@
package emu.grasscutter.server.packet.send;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.FireworksLaunchDataNotifyOuterClass;
import emu.grasscutter.net.proto.FireworksLaunchSchemeDataOuterClass;
public class PacketFireworksLaunchDataNotify extends BasePacket {
public PacketFireworksLaunchDataNotify(FireworksLaunchSchemeDataOuterClass.FireworksLaunchSchemeData notify) {
super(PacketOpcodes.FireworksLaunchDataNotify);
var proto
= FireworksLaunchDataNotifyOuterClass.FireworksLaunchDataNotify.newBuilder();
proto.setLastUseSchemeId(1).addSchemeDataList(notify);
setData(proto.build());
}
}

View File

@@ -0,0 +1,21 @@
package emu.grasscutter.server.packet.send;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.FireworksReformDataNotifyOuterClass;
import emu.grasscutter.net.proto.FireworksReformDataOuterClass;
public class PacketFireworksReformDataNotify extends BasePacket {
public PacketFireworksReformDataNotify(FireworksReformDataOuterClass.FireworksReformData fireworksReformData) {
super(PacketOpcodes.FireworksReformDataNotify);
var proto
= FireworksReformDataNotifyOuterClass.FireworksReformDataNotify.newBuilder();
proto.addFireworksReformDataList(fireworksReformData);
setData(proto.build());
}
}

View File

@@ -18,14 +18,14 @@ public class PacketForgeQueueManipulateRsp extends BasePacket {
ForgeQueueManipulateRsp.Builder builder = ForgeQueueManipulateRsp.newBuilder()
.setRetcode(retcode.getNumber())
.setManipulateType(type);
for (GameItem item : output) {
ItemParam toAdd = ItemParam.newBuilder()
.setItemId(item.getItemId())
.setCount(item.getCount())
.build();
builder.addOutputItemList(toAdd);
builder.addExtraOutputItemList(toAdd);
}
for (GameItem item : refund) {
@@ -41,4 +41,4 @@ public class PacketForgeQueueManipulateRsp extends BasePacket {
this.setData(builder.build());
}
}
}

View File

@@ -24,9 +24,9 @@ public class PacketGetAllMailRsp extends BasePacket {
GetAllMailRsp.Builder proto = GetAllMailRsp.newBuilder();
if (isGiftMail) {
proto.setUnk2700OPEHLDAGICF(true);
proto.setIsCollected(true);
} else {
proto.setUnk2700OPEHLDAGICF(false);
proto.setIsCollected(false);
if (player.getAllMail().size() != 0) { // Make sure the player has mail
List<MailData> mailDataList = new ArrayList<MailData>();
@@ -61,7 +61,7 @@ public class PacketGetAllMailRsp extends BasePacket {
mailData.setImportance(message.importance);
mailData.setIsRead(message.isRead);
mailData.setIsAttachmentGot(message.isAttachmentGot);
mailData.setUnk2700NDPPGJKJOMHValue(1);
mailData.setCollectStateValue(1);
mailDataList.add(mailData.build());
}
@@ -70,7 +70,7 @@ public class PacketGetAllMailRsp extends BasePacket {
}
proto.addAllMailList(mailDataList);
proto.setIsTruncated(mailDataList.size() <= 1000 ? false : true); // When enabled this will send a notification to the user telling them their inbox is full and they should delete old messages when opening the mailbox.
proto.setIsTruncated(mailDataList.size() > 1000); // When enabled this will send a notification to the user telling them their inbox is full and they should delete old messages when opening the mailbox.
}
}
this.setData(proto.build());

View File

@@ -14,7 +14,7 @@ public class PacketGetCompoundDataRsp extends BasePacket {
super(PacketOpcodes.GetCompoundDataRsp);
var proto = GetCompoundDataRsp.newBuilder()
.addAllUnlockCompoundList(unlockedCompounds)
.addAllCompoundQueDataList(compoundQueueData)
.addAllCompoundQueueDataList(compoundQueueData)
.setRetcode(Retcode.RET_SUCC_VALUE)
.build();
setData(proto);

View File

@@ -70,8 +70,8 @@ public class PacketGetPlayerTokenRsp extends BasePacket {
.setClientVersionRandomKey("c25-314dd05b0b5f")
.setRegPlatform(3)
.setClientIpStr(session.getAddress().getAddress().getHostAddress())
.setEncryptedSeed(encryptedSeed)
.setSeedSignature(encryptedSeedSign)
.setServerRandKey(encryptedSeed)
.setSign(encryptedSeedSign)
.build();
this.setData(p.toByteArray());

View File

@@ -0,0 +1,24 @@
package emu.grasscutter.server.packet.send;
import emu.grasscutter.game.player.Player;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.HomeAllUnlockedBgmIdListNotifyOuterClass;
public class PacketHomeAllUnlockedBgmIdListNotify extends BasePacket {
public PacketHomeAllUnlockedBgmIdListNotify(Player player) {
super(PacketOpcodes.HomeAllUnlockedBgmIdListNotify);
if (player.getRealmList() == null) {
return;
}
var unlocked = player.getHome().getUnlockedHomeBgmList();
var notify = HomeAllUnlockedBgmIdListNotifyOuterClass.HomeAllUnlockedBgmIdListNotify.newBuilder()
.addAllAllUnlockedBgmIdList(unlocked)
.build();
this.setData(notify);
}
}

View File

@@ -0,0 +1,17 @@
package emu.grasscutter.server.packet.send;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.HomeChangeBgmNotifyOuterClass;
public class PacketHomeChangeBgmNotify extends BasePacket {
public PacketHomeChangeBgmNotify(int homeBgmId) {
super(PacketOpcodes.HomeChangeBgmNotify);
var notify = HomeChangeBgmNotifyOuterClass.HomeChangeBgmNotify.newBuilder()
.setBgmId(homeBgmId)
.build();
this.setData(notify);
}
}

View File

@@ -0,0 +1,17 @@
package emu.grasscutter.server.packet.send;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.HomeChangeBgmRspOuterClass;
public class PacketHomeChangeBgmRsp extends BasePacket {
public PacketHomeChangeBgmRsp() {
super(PacketOpcodes.HomeChangeBgmRsp);
var rsp = HomeChangeBgmRspOuterClass.HomeChangeBgmRsp.newBuilder()
.setRetcode(0)
.build();
this.setData(rsp);
}
}

View File

@@ -0,0 +1,12 @@
package emu.grasscutter.server.packet.send;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
public class PacketHomeEnterEditModeFinishRsp extends BasePacket {
public PacketHomeEnterEditModeFinishRsp() {
super(PacketOpcodes.HomeEnterEditModeFinishRsp);
}
}

View File

@@ -0,0 +1,17 @@
package emu.grasscutter.server.packet.send;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.HomeNewUnlockedBgmIdListNotifyOuterClass;
public class PacketHomeNewUnlockedBgmIdListNotify extends BasePacket {
public PacketHomeNewUnlockedBgmIdListNotify(int homeBgmId) {
super(PacketOpcodes.HomeNewUnlockedBgmIdListNotify);
var notify = HomeNewUnlockedBgmIdListNotifyOuterClass.HomeNewUnlockedBgmIdListNotify.newBuilder()
.addNewUnlockedBgmIdList(homeBgmId)
.build();
this.setData(notify);
}
}

View File

@@ -0,0 +1,18 @@
package emu.grasscutter.server.packet.send;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.HomePreChangeEditModeNotifyOuterClass;
public class PacketHomePreChangeEditModeNotify extends BasePacket {
public PacketHomePreChangeEditModeNotify(boolean isEnterEditMode) {
super(PacketOpcodes.HomePreChangeEditModeNotify);
var proto = HomePreChangeEditModeNotifyOuterClass.HomePreChangeEditModeNotify.newBuilder();
proto.setIsEnterEditMode(isEnterEditMode);
this.setData(proto);
}
}

View File

@@ -1,18 +0,0 @@
package emu.grasscutter.server.packet.send;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.HomeUnknown1NotifyOuterClass;
public class PacketHomeUnknown1Notify extends BasePacket {
public PacketHomeUnknown1Notify(boolean isEnterEditMode) {
super(PacketOpcodes.Unk2700_JDMPECKFGIG_ServerNotify);
var proto = HomeUnknown1NotifyOuterClass.HomeUnknown1Notify.newBuilder();
proto.setIsEnterEditMode(isEnterEditMode);
this.setData(proto);
}
}

View File

@@ -1,12 +0,0 @@
package emu.grasscutter.server.packet.send;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
public class PacketHomeUnknown2Rsp extends BasePacket {
public PacketHomeUnknown2Rsp() {
super(PacketOpcodes.Unk2700_KIIOGMKFNNP_ServerRsp);
}
}

View File

@@ -3,10 +3,10 @@ package emu.grasscutter.server.packet.send;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
public class PacketFireworkSetRsp extends BasePacket {
public class PacketLaunchFireworksRsp extends BasePacket {
public PacketFireworkSetRsp() {
super(PacketOpcodes.FireworkSetRsp);
public PacketLaunchFireworksRsp() {
super(PacketOpcodes.LaunchFireworksRsp);
}

View File

@@ -6,7 +6,12 @@ import emu.grasscutter.game.mail.Mail;
import emu.grasscutter.game.player.Player;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.*;
import emu.grasscutter.net.proto.MailChangeNotifyOuterClass.MailChangeNotify;
import emu.grasscutter.net.proto.MailTextContentOuterClass.MailTextContent;
import emu.grasscutter.net.proto.MailItemOuterClass.MailItem;
import emu.grasscutter.net.proto.MailDataOuterClass.MailData;
import emu.grasscutter.net.proto.EquipParamOuterClass.EquipParam;
import java.util.ArrayList;
import java.util.List;
@@ -24,20 +29,20 @@ public class PacketMailChangeNotify extends BasePacket {
public PacketMailChangeNotify(Player player, List<Mail> mailList, List<Integer> delMailIdList) {
super(PacketOpcodes.MailChangeNotify);
MailChangeNotifyOuterClass.MailChangeNotify.Builder proto = MailChangeNotifyOuterClass.MailChangeNotify.newBuilder();
var proto = MailChangeNotify.newBuilder();
if (mailList != null) {
for (Mail message : mailList) {
MailTextContentOuterClass.MailTextContent.Builder mailTextContent = MailTextContentOuterClass.MailTextContent.newBuilder();
var mailTextContent = MailTextContent.newBuilder();
mailTextContent.setTitle(message.mailContent.title);
mailTextContent.setContent(message.mailContent.content);
mailTextContent.setSender(message.mailContent.sender);
List<MailItemOuterClass.MailItem> mailItems = new ArrayList<MailItemOuterClass.MailItem>();
List<MailItem> mailItems = new ArrayList<>();
for (Mail.MailItem item : message.itemList) {
MailItemOuterClass.MailItem.Builder mailItem = MailItemOuterClass.MailItem.newBuilder();
EquipParamOuterClass.EquipParam.Builder itemParam = EquipParamOuterClass.EquipParam.newBuilder();
var mailItem = MailItem.newBuilder();
var itemParam = EquipParam.newBuilder();
itemParam.setItemId(item.itemId);
itemParam.setItemNum(item.itemCount);
mailItem.setEquipParam(itemParam.build());
@@ -45,7 +50,7 @@ public class PacketMailChangeNotify extends BasePacket {
mailItems.add(mailItem.build());
}
MailDataOuterClass.MailData.Builder mailData = MailDataOuterClass.MailData.newBuilder();
var mailData = MailData.newBuilder();
mailData.setMailId(player.getMailId(message));
mailData.setMailTextContent(mailTextContent.build());
mailData.addAllItemList(mailItems);
@@ -54,7 +59,7 @@ public class PacketMailChangeNotify extends BasePacket {
mailData.setImportance(message.importance);
mailData.setIsRead(message.isRead);
mailData.setIsAttachmentGot(message.isAttachmentGot);
mailData.setUnk2700NDPPGJKJOMHValue(message.stateValue);
mailData.setCollectStateValue(message.stateValue);
proto.addMailList(mailData.build());
}

View File

@@ -3,7 +3,8 @@ package emu.grasscutter.server.packet.send;
import emu.grasscutter.game.managers.mapmark.MapMark;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.*;
import emu.grasscutter.net.proto.MarkMapRspOuterClass.MarkMapRsp;
import emu.grasscutter.net.proto.MapMarkPointOuterClass.MapMarkPoint;
import java.util.*;
@@ -12,12 +13,12 @@ public class PacketMarkMapRsp extends BasePacket {
public PacketMarkMapRsp(Map<String, MapMark> mapMarks) {
super(PacketOpcodes.MarkMapRsp);
MarkMapRspOuterClass.MarkMapRsp.Builder proto = MarkMapRspOuterClass.MarkMapRsp.newBuilder();
var proto = MarkMapRsp.newBuilder();
proto.setRetcode(0);
if (mapMarks != null) {
for (MapMark mapMark: mapMarks.values()) {
MapMarkPointOuterClass.MapMarkPoint.Builder markPoint = MapMarkPointOuterClass.MapMarkPoint.newBuilder();
var markPoint = MapMarkPoint.newBuilder();
markPoint.setSceneId(mapMark.getSceneId());
markPoint.setName(mapMark.getName());
markPoint.setPos(mapMark.getPosition().toProto());
@@ -29,8 +30,6 @@ public class PacketMarkMapRsp extends BasePacket {
proto.addMarkList(markPoint.build());
}
}
MarkMapRspOuterClass.MarkMapRsp data = proto.build();
this.setData(data);
this.setData(proto.build());
}
}

View File

@@ -1,25 +1,22 @@
package emu.grasscutter.server.packet.send;
import emu.grasscutter.game.player.Player;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.*;
import java.util.ArrayList;
import java.util.List;
public class PacketMarkNewNotify extends BasePacket {
public PacketMarkNewNotify(Player player, int markNewType, ArrayList<Integer> idList) {
super(PacketOpcodes.MarkNewNotify);
MarkNewNotifyOuterClass.MarkNewNotify.Builder proto = MarkNewNotifyOuterClass.MarkNewNotify.newBuilder();
proto.setMarkNewType(markNewType);
for (Integer id: idList) {
proto.addIdList(id);
}
MarkNewNotifyOuterClass.MarkNewNotify data = proto.build();
this.setData(data);
}
}
package emu.grasscutter.server.packet.send;
import emu.grasscutter.game.player.Player;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.MarkNewNotifyOuterClass.MarkNewNotify;
import java.util.ArrayList;
import java.util.List;
public class PacketMarkNewNotify extends BasePacket {
public PacketMarkNewNotify(Player player, int markNewType, ArrayList<Integer> idList) {
super(PacketOpcodes.MarkNewNotify);
var proto = MarkNewNotify.newBuilder();
proto.setMarkNewType(markNewType);
proto.addAllIdList(idList);
this.setData(proto.build());
}
}

View File

@@ -1,20 +1,20 @@
package emu.grasscutter.server.packet.send;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.MusicGameCreateBeatmapRspOuterClass;
import emu.grasscutter.net.proto.MusicGameUnknown1EnumOuterClass;
public class PacketMusicGameCreateBeatmapRsp extends BasePacket {
public PacketMusicGameCreateBeatmapRsp(long musicShareId, MusicGameUnknown1EnumOuterClass.MusicGameUnknown1Enum unknownEnum1) {
super(PacketOpcodes.MusicGameCreateBeatmapRsp);
var proto = MusicGameCreateBeatmapRspOuterClass.MusicGameCreateBeatmapRsp.newBuilder();
proto.setMusicShareId(musicShareId)
.setUnknownEnum1(unknownEnum1);
this.setData(proto);
}
}
//package emu.grasscutter.server.packet.send;
//
//import emu.grasscutter.net.packet.BasePacket;
//import emu.grasscutter.net.packet.PacketOpcodes;
//import emu.grasscutter.net.proto.MusicGameCreateBeatmapRspOuterClass;
//import emu.grasscutter.net.proto.MusicGameUnknown1EnumOuterClass;
//
//public class PacketMusicGameCreateBeatmapRsp extends BasePacket {
//
// public PacketMusicGameCreateBeatmapRsp(long musicShareId, MusicGameUnknown1EnumOuterClass.MusicGameUnknown1Enum unknownEnum1) {
// super(PacketOpcodes.MusicGameCreateBeatmapRsp);
//
// var proto = MusicGameCreateBeatmapRspOuterClass.MusicGameCreateBeatmapRsp.newBuilder();
//
// proto.setMusicShareId(musicShareId)
// .setUnknownEnum1(unknownEnum1);
//
// this.setData(proto);
// }
//}

View File

@@ -1,27 +1,27 @@
package emu.grasscutter.server.packet.send;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.MusicBeatmapOuterClass;
import emu.grasscutter.net.proto.MusicBriefInfoOuterClass;
import emu.grasscutter.net.proto.MusicGameGetBeatmapReqOuterClass;
import emu.grasscutter.net.proto.MusicGameGetBeatmapRspOuterClass;
public class PacketMusicGameGetBeatmapRsp extends BasePacket {
public PacketMusicGameGetBeatmapRsp(MusicBriefInfoOuterClass.MusicBriefInfo briefInfo, MusicBeatmapOuterClass.MusicBeatmap musicRecord, MusicGameGetBeatmapReqOuterClass.MusicGameGetBeatmapReq req) {
super(PacketOpcodes.MusicGameGetBeatmapRsp);
var proto = MusicGameGetBeatmapRspOuterClass.MusicGameGetBeatmapRsp.newBuilder();
proto.setMusicBriefInfo(briefInfo)
.setMusicShareId(briefInfo.getMusicShareId())
.setMusicRecord(musicRecord)
.setUnknownEnum1(req.getUnknownEnum1())
.setReqType(req.getReqType())
;
this.setData(proto);
}
}
//package emu.grasscutter.server.packet.send;
//
//import emu.grasscutter.net.packet.BasePacket;
//import emu.grasscutter.net.packet.PacketOpcodes;
//import emu.grasscutter.net.proto.MusicBeatmapOuterClass;
//import emu.grasscutter.net.proto.MusicBriefInfoOuterClass;
//import emu.grasscutter.net.proto.MusicGameGetBeatmapReqOuterClass;
//import emu.grasscutter.net.proto.MusicGameGetBeatmapRspOuterClass;
//
//public class PacketMusicGameGetBeatmapRsp extends BasePacket {
//
// public PacketMusicGameGetBeatmapRsp(MusicBriefInfoOuterClass.MusicBriefInfo briefInfo, MusicBeatmapOuterClass.MusicBeatmap musicRecord, MusicGameGetBeatmapReqOuterClass.MusicGameGetBeatmapReq req) {
// super(PacketOpcodes.MusicGameGetBeatmapRsp);
//
// var proto = MusicGameGetBeatmapRspOuterClass.MusicGameGetBeatmapRsp.newBuilder();
//
// proto.setMusicBriefInfo(briefInfo)
// .setMusicShareId(briefInfo.getMusicShareId())
// .setMusicRecord(musicRecord)
// .setUnknownEnum1(req.getUnknownEnum1())
// .setReqType(req.getReqType())
// ;
//
//
// this.setData(proto);
// }
//}

View File

@@ -1,34 +1,34 @@
package emu.grasscutter.server.packet.send;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.MusicBriefInfoOuterClass;
import emu.grasscutter.net.proto.MusicGameSearchBeatmapRspOuterClass;
import emu.grasscutter.net.proto.MusicGameUnknown1EnumOuterClass;
public class PacketMusicGameSearchBeatmapRsp extends BasePacket {
public PacketMusicGameSearchBeatmapRsp(int ret, MusicGameUnknown1EnumOuterClass.MusicGameUnknown1Enum unknownEnum1) {
super(PacketOpcodes.MusicGameSearchBeatmapRsp);
var proto = MusicGameSearchBeatmapRspOuterClass.MusicGameSearchBeatmapRsp.newBuilder();
proto.setRetcode(ret)
.setUnknownEnum1(unknownEnum1);
this.setData(proto);
}
public PacketMusicGameSearchBeatmapRsp(MusicBriefInfoOuterClass.MusicBriefInfo briefInfo, MusicGameUnknown1EnumOuterClass.MusicGameUnknown1Enum unknownEnum1) {
super(PacketOpcodes.MusicGameSearchBeatmapRsp);
var proto = MusicGameSearchBeatmapRspOuterClass.MusicGameSearchBeatmapRsp.newBuilder();
proto.setMusicBriefInfo(briefInfo)
.setUnknownEnum1(unknownEnum1);
this.setData(proto);
}
}
//package emu.grasscutter.server.packet.send;
//
//import emu.grasscutter.net.packet.BasePacket;
//import emu.grasscutter.net.packet.PacketOpcodes;
//import emu.grasscutter.net.proto.MusicBriefInfoOuterClass;
//import emu.grasscutter.net.proto.MusicGameSearchBeatmapRspOuterClass;
//import emu.grasscutter.net.proto.MusicGameUnknown1EnumOuterClass;
//
//public class PacketMusicGameSearchBeatmapRsp extends BasePacket {
//
// public PacketMusicGameSearchBeatmapRsp(int ret, MusicGameUnknown1EnumOuterClass.MusicGameUnknown1Enum unknownEnum1) {
// super(PacketOpcodes.MusicGameSearchBeatmapRsp);
//
// var proto = MusicGameSearchBeatmapRspOuterClass.MusicGameSearchBeatmapRsp.newBuilder();
//
// proto.setRetcode(ret)
// .setUnknownEnum1(unknownEnum1);
//
// this.setData(proto);
// }
//
// public PacketMusicGameSearchBeatmapRsp(MusicBriefInfoOuterClass.MusicBriefInfo briefInfo, MusicGameUnknown1EnumOuterClass.MusicGameUnknown1Enum unknownEnum1) {
// super(PacketOpcodes.MusicGameSearchBeatmapRsp);
//
// var proto = MusicGameSearchBeatmapRspOuterClass.MusicGameSearchBeatmapRsp.newBuilder();
//
// proto.setMusicBriefInfo(briefInfo)
// .setUnknownEnum1(unknownEnum1);
//
// this.setData(proto);
// }
//
//
//}

View File

@@ -12,7 +12,7 @@ public class PacketMusicGameSettleRsp extends BasePacket {
var proto = MusicGameSettleRspOuterClass.MusicGameSettleRsp.newBuilder();
proto.setMusicBasicId(musicBasicId)
.setMusicShareId(musicShareId)
.setUgcGuid(musicShareId)
.setIsNewRecord(isNewRecord);
this.setData(proto);

View File

@@ -12,7 +12,7 @@ public class PacketMusicGameStartRsp extends BasePacket {
var proto = MusicGameStartRspOuterClass.MusicGameStartRsp.newBuilder();
proto.setMusicBasicId(musicBasicId)
.setMusicShareId(musicShareId);
.setUgcGuid(musicShareId);
this.setData(proto);
}

View File

@@ -1,19 +1,19 @@
package emu.grasscutter.server.packet.send;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.MusicGameStartToPlayOthersBeatmapRspOuterClass;
import emu.grasscutter.net.proto.MusicGameUnknown1EnumOuterClass;
public class PacketMusicGameStartToPlayOthersBeatmapRsp extends BasePacket {
public PacketMusicGameStartToPlayOthersBeatmapRsp(MusicGameUnknown1EnumOuterClass.MusicGameUnknown1Enum unknownEnum1) {
super(PacketOpcodes.MusicGameStartToPlayOthersBeatmapRsp);
var proto = MusicGameStartToPlayOthersBeatmapRspOuterClass.MusicGameStartToPlayOthersBeatmapRsp.newBuilder();
proto.setUnknownEnum1(unknownEnum1);
this.setData(proto);
}
}
//package emu.grasscutter.server.packet.send;
//
//import emu.grasscutter.net.packet.BasePacket;
//import emu.grasscutter.net.packet.PacketOpcodes;
//import emu.grasscutter.net.proto.MusicGameStartToPlayOthersBeatmapRspOuterClass;
//import emu.grasscutter.net.proto.MusicGameUnknown1EnumOuterClass;
//
//public class PacketMusicGameStartToPlayOthersBeatmapRsp extends BasePacket {
//
// public PacketMusicGameStartToPlayOthersBeatmapRsp(MusicGameUnknown1EnumOuterClass.MusicGameUnknown1Enum unknownEnum1) {
// super(PacketOpcodes.MusicGameStartToPlayOthersBeatmapRsp);
//
// var proto = MusicGameStartToPlayOthersBeatmapRspOuterClass.MusicGameStartToPlayOthersBeatmapRsp.newBuilder();
//
// proto.setUnknownEnum1(unknownEnum1);
//
// this.setData(proto);
// }
//}

View File

@@ -3,12 +3,11 @@ package emu.grasscutter.server.packet.send;
import emu.grasscutter.game.player.Player;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.PlayerApplyEnterMpReasonOuterClass.PlayerApplyEnterMpReason;
import emu.grasscutter.net.proto.PlayerApplyEnterMpResultNotifyOuterClass;
import emu.grasscutter.net.proto.PlayerApplyEnterMpResultNotifyOuterClass.PlayerApplyEnterMpResultNotify;
public class PacketPlayerApplyEnterMpResultNotify extends BasePacket {
public PacketPlayerApplyEnterMpResultNotify(Player target, boolean isAgreed, PlayerApplyEnterMpResultNotifyOuterClass.PlayerApplyEnterMpResultNotify.Reason reason) {
super(PacketOpcodes.PlayerApplyEnterMpResultNotify);
@@ -18,10 +17,10 @@ public class PacketPlayerApplyEnterMpResultNotify extends BasePacket {
.setIsAgreed(isAgreed)
.setReason(reason)
.build();
this.setData(proto);
}
public PacketPlayerApplyEnterMpResultNotify(int targetId, String targetName, boolean isAgreed, PlayerApplyEnterMpResultNotify.Reason reason) {
super(PacketOpcodes.PlayerApplyEnterMpResultNotify);
@@ -31,7 +30,7 @@ public class PacketPlayerApplyEnterMpResultNotify extends BasePacket {
.setIsAgreed(isAgreed)
.setReason(reason)
.build();
this.setData(proto);
}
}

View File

@@ -5,58 +5,57 @@ import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.ChatInfoOuterClass.ChatInfo;
import emu.grasscutter.net.proto.PlayerChatNotifyOuterClass.PlayerChatNotify;
import emu.grasscutter.net.proto.SystemHintOuterClass.SystemHint;
public class PacketPlayerChatNotify extends BasePacket {
public PacketPlayerChatNotify(Player sender, int channelId, String message) {
super(PacketOpcodes.PlayerChatNotify);
ChatInfo info = ChatInfo.newBuilder()
.setTime((int) (System.currentTimeMillis() / 1000))
.setUid(sender.getUid())
.setText(message)
.build();
PlayerChatNotify proto = PlayerChatNotify.newBuilder()
.setChannelId(channelId)
.setChatInfo(info)
.build();
this.setData(proto);
}
public PacketPlayerChatNotify(Player sender, int channelId, int emote) {
super(PacketOpcodes.PlayerChatNotify);
ChatInfo info = ChatInfo.newBuilder()
.setTime((int) (System.currentTimeMillis() / 1000))
.setUid(sender.getUid())
.setIcon(emote)
.build();
PlayerChatNotify proto = PlayerChatNotify.newBuilder()
.setChannelId(channelId)
.setChatInfo(info)
.build();
this.setData(proto);
}
public PacketPlayerChatNotify(Player sender, int channelId, ChatInfo.SystemHint systemHint) {
super(PacketOpcodes.PlayerChatNotify);
ChatInfo info = ChatInfo.newBuilder()
.setTime((int) (System.currentTimeMillis() / 1000))
.setUid(sender.getUid())
.setSystemHint(systemHint)
.build();
PlayerChatNotify proto = PlayerChatNotify.newBuilder()
.setChannelId(channelId)
.setChatInfo(info)
.build();
this.setData(proto);
}
}

View File

@@ -15,7 +15,7 @@ public class PacketPlayerCompoundMaterialRsp extends BasePacket {
public PacketPlayerCompoundMaterialRsp(CompoundQueueData compoundQueueData) {
super(PacketOpcodes.PlayerCompoundMaterialRsp);
PlayerCompoundMaterialRsp proto = PlayerCompoundMaterialRsp.newBuilder()
.setCompoundQueData(compoundQueueData)
.setCompoundQueueData(compoundQueueData)
.setRetcode(Retcode.RET_SUCC_VALUE)
.build();
setData(proto);

View File

@@ -28,7 +28,7 @@ public class PacketPlayerCookRsp extends BasePacket {
.setRecipeData(
CookRecipeData.newBuilder()
.setRecipeId(recipeId)
.setProficiency(proficiency)
.setProficiency(proficiency)
)
.setQteQuality(quality)
.setCookCount(count);

View File

@@ -17,7 +17,7 @@ public class PacketQueryCodexMonsterBeKilledNumRsp extends BasePacket {
if (player.getCodex().getUnlockedAnimal().containsKey(animal)) {
proto.addCodexIdList(animal)
.addBeKilledNumList(player.getCodex().getUnlockedAnimal().get(animal))
.addUnk2700MKOBMGGPNMI(0);
.addBeCapturedNumList(0);
}
});

View File

@@ -0,0 +1,14 @@
package emu.grasscutter.server.packet.send;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.ReformFireworksRspOuterClass;
public class PacketReformFireworksRsp extends BasePacket {
public PacketReformFireworksRsp() {
super(PacketOpcodes.ReformFireworksRsp);
var proto = ReformFireworksRspOuterClass.ReformFireworksRsp.newBuilder()
.build();
this.setData(proto);
}
}

View File

@@ -1,23 +0,0 @@
package emu.grasscutter.server.packet.send;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.RetcodeOuterClass.Retcode;
import emu.grasscutter.net.proto.RemoveCustomTeamRspOuterClass.RemoveCustomTeamRsp;
public class PacketRemoveCustomTeamRsp extends BasePacket {
public PacketRemoveCustomTeamRsp(Retcode retcode, int id) {
super(PacketOpcodes.RemoveCustomTeamRsp);
RemoveCustomTeamRsp proto = RemoveCustomTeamRsp.newBuilder()
.setRetcode(retcode.getNumber())
.setId(id)
.build();
this.setData(proto);
}
public PacketRemoveCustomTeamRsp(int id) {
this(Retcode.RET_SUCC, id);
}
}

View File

@@ -2,8 +2,6 @@ package emu.grasscutter.server.packet.send;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.AchievementInfoOuterClass;
import emu.grasscutter.net.proto.AchievementInfoOuterClass.AchievementInfo;
import emu.grasscutter.net.proto.TakeAchievementRewardReqOuterClass.TakeAchievementRewardReq;
import emu.grasscutter.server.game.GameSession;
@@ -20,4 +18,4 @@ public class PacketTakeAchievementRewardReq extends BasePacket {
this.setData(proto);
}
}
}

View File

@@ -17,7 +17,7 @@ public class PacketTowerCurLevelRecordChangeNotify extends BasePacket {
// TODO team info
.build())
.build();
this.setData(proto);
}
}

View File

@@ -26,7 +26,7 @@ public class PacketTowerLevelStarCondNotify extends BasePacket {
.build()
)
.build();
this.setData(proto);
}
}

View File

@@ -1,17 +0,0 @@
package emu.grasscutter.server.packet.send;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.Unk2700MEBFPBDNPGOServerNotify;
public class PacketUnlockHomeBgmNotify extends BasePacket {
public PacketUnlockHomeBgmNotify(int homeBgmId) {
super(PacketOpcodes.Unk2700_MEBFPBDNPGO_ServerNotify);
var notify = Unk2700MEBFPBDNPGOServerNotify.Unk2700_MEBFPBDNPGO_ServerNotify.newBuilder()
.addUnk2700ELJPLMIHNIP(homeBgmId)
.build();
this.setData(notify);
}
}

View File

@@ -1,24 +0,0 @@
package emu.grasscutter.server.packet.send;
import emu.grasscutter.game.player.Player;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.Unk2700LOHBMOKOPLHServerNotify;
public class PacketUnlockedHomeBgmNotify extends BasePacket {
public PacketUnlockedHomeBgmNotify(Player player) {
super(PacketOpcodes.Unk2700_LOHBMOKOPLH_ServerNotify);
if (player.getRealmList() == null) {
return;
}
var unlocked = player.getHome().getUnlockedHomeBgmList();
var notify = Unk2700LOHBMOKOPLHServerNotify.Unk2700_LOHBMOKOPLH_ServerNotify.newBuilder()
.addAllUnk2700KMEKMNONMGE(unlocked)
.build();
this.setData(notify);
}
}