mirror of
https://github.com/Grasscutters/Grasscutter.git
synced 2025-12-22 03:45:10 +01:00
Create files from Grasscutter-Quests
these files are NOT directly compatible with Grasscutter, and require additional modifications to the codebase to work.
This commit is contained in:
@@ -0,0 +1,14 @@
|
||||
package emu.grasscutter.server.packet.recv;
|
||||
|
||||
import emu.grasscutter.net.packet.Opcodes;
|
||||
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 {
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
session.getPlayer().getTeamManager().addNewCustomTeam();
|
||||
}
|
||||
}
|
||||
@@ -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.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());
|
||||
}
|
||||
}
|
||||
@@ -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.CheckUgcStateReqOuterClass.CheckUgcStateReq;
|
||||
import emu.grasscutter.net.proto.RetcodeOuterClass.Retcode;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketCheckUgcStateRsp;
|
||||
import lombok.val;
|
||||
|
||||
@Opcodes(PacketOpcodes.CheckUgcStateReq)
|
||||
public class HandlerCheckUgcStateReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
val req = CheckUgcStateReq.parseFrom(payload);
|
||||
|
||||
session.send(new PacketCheckUgcStateRsp(Retcode.RET_SUCC));
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +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.CheckUgcUpdateReqOuterClass.CheckUgcUpdateReq;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketCheckUgcUpdateRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.CheckUgcUpdateReq)
|
||||
public class HandlerCheckUgcUpdateReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
var req = CheckUgcUpdateReq.parseFrom(payload);
|
||||
|
||||
session.send(new PacketCheckUgcUpdateRsp(req.getUgcType()));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
|
||||
package emu.grasscutter.server.packet.recv;
|
||||
|
||||
import emu.grasscutter.game.player.Player;
|
||||
import emu.grasscutter.net.packet.Opcodes;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.DungeonPlayerDieReqOuterClass.DungeonPlayerDieReq;
|
||||
import emu.grasscutter.net.packet.PacketHandler;
|
||||
import emu.grasscutter.net.proto.RetcodeOuterClass.Retcode;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketDungeonPlayerDieRsp;
|
||||
import lombok.val;
|
||||
|
||||
@Opcodes(PacketOpcodes.DungeonPlayerDieReq)
|
||||
public class HandlerDungeonPlayerDieReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
DungeonPlayerDieReq req = DungeonPlayerDieReq.parseFrom(payload);
|
||||
|
||||
Player player = session.getPlayer();
|
||||
|
||||
boolean result = player.getScene().respawnPlayer(player);
|
||||
|
||||
player.sendPacket(new PacketDungeonPlayerDieRsp(result ? Retcode.RET_SUCC : Retcode.RET_FAIL));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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.DungeonSlipRevivePointActivateReqOuterClass.DungeonSlipRevivePointActivateReq;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketDungeonSlipRevivePointActivateRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.DungeonSlipRevivePointActivateReq)
|
||||
public class HandlerDungeonSlipRevivePointActivateReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
var req = DungeonSlipRevivePointActivateReq.parseFrom(payload);
|
||||
var dungeonManager = session.getPlayer().getScene().getDungeonManager();
|
||||
|
||||
boolean success = false;
|
||||
if (dungeonManager != null) {
|
||||
success = dungeonManager.activateRespawnPoint(req.getSlipRevivePointId());
|
||||
}
|
||||
|
||||
session.send(new PacketDungeonSlipRevivePointActivateRsp(success, req.getSlipRevivePointId()));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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.DungeonWayPointActivateReqOuterClass.DungeonWayPointActivateReq;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketDungeonWayPointActivateRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.DungeonWayPointActivateReq)
|
||||
public class HandlerDungeonWayPointActivateReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
var req = DungeonWayPointActivateReq.parseFrom(payload);
|
||||
var dungeonManager = session.getPlayer().getScene().getDungeonManager();
|
||||
|
||||
boolean success = false;
|
||||
if(dungeonManager != null){
|
||||
success = dungeonManager.activateRespawnPoint(req.getWayPointId());
|
||||
}
|
||||
|
||||
session.send(new PacketDungeonWayPointActivateRsp(success, req.getWayPointId()));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
package emu.grasscutter.server.packet.recv;
|
||||
|
||||
import emu.grasscutter.game.activity.trialavatar.TrialAvatarActivityHandler;
|
||||
import emu.grasscutter.game.props.ActivityType;
|
||||
import emu.grasscutter.net.packet.Opcodes;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.packet.PacketHandler;
|
||||
import emu.grasscutter.server.packet.send.PacketEnterTrialAvatarActivityDungeonRsp;
|
||||
import emu.grasscutter.server.packet.send.PacketScenePlayerLocationNotify;
|
||||
import emu.grasscutter.net.proto.RetcodeOuterClass.Retcode;
|
||||
import emu.grasscutter.net.proto.EnterTrialAvatarActivityDungeonReqOuterClass.EnterTrialAvatarActivityDungeonReq;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import lombok.val;
|
||||
|
||||
@Opcodes(PacketOpcodes.EnterTrialAvatarActivityDungeonReq)
|
||||
public class HandlerEnterTrialAvatarActivityDungeonReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
val req = EnterTrialAvatarActivityDungeonReq.parseFrom(payload);
|
||||
|
||||
val handler = session.getPlayer().getActivityManager()
|
||||
.getActivityHandlerAs(ActivityType.NEW_ACTIVITY_TRIAL_AVATAR, TrialAvatarActivityHandler.class);
|
||||
|
||||
boolean result = handler.isPresent() && handler.get().enterTrialDungeon(session.getPlayer(), req.getTrialAvatarIndexId(), req.getEnterPointId());
|
||||
|
||||
session.getPlayer().sendPacket(new PacketEnterTrialAvatarActivityDungeonRsp(
|
||||
req.getActivityId(),
|
||||
req.getTrialAvatarIndexId(),
|
||||
result));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
package emu.grasscutter.server.packet.recv;
|
||||
|
||||
import emu.grasscutter.Grasscutter;
|
||||
import emu.grasscutter.game.entity.EntityGadget;
|
||||
import emu.grasscutter.game.entity.GameEntity;
|
||||
import emu.grasscutter.game.player.Player;
|
||||
import emu.grasscutter.net.packet.Opcodes;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.ExecuteGadgetLuaReqOuterClass.ExecuteGadgetLuaReq;
|
||||
import emu.grasscutter.net.packet.PacketHandler;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketExecuteGadgetLuaRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.ExecuteGadgetLuaReq)
|
||||
public class HandlerExecuteGadgetLuaReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
ExecuteGadgetLuaReq req = ExecuteGadgetLuaReq.parseFrom(payload);
|
||||
|
||||
Player player = session.getPlayer();
|
||||
GameEntity entity = player.getScene().getEntities().get(req.getSourceEntityId());
|
||||
|
||||
int result = 1;
|
||||
if(entity instanceof EntityGadget gadget) result = gadget.onClientExecuteRequest(req.getParam1(), req.getParam2(), req.getParam3());
|
||||
|
||||
player.sendPacket(new PacketExecuteGadgetLuaRsp(result));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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.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());
|
||||
}
|
||||
}
|
||||
@@ -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.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());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
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.GetUgcBriefInfoReqOuterClass;
|
||||
import emu.grasscutter.net.proto.RetcodeOuterClass.Retcode;
|
||||
import emu.grasscutter.net.proto.UgcTypeOuterClass;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketGetUgcBriefInfoRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.GetUgcBriefInfoReq)
|
||||
public class HandlerGetUgcBriefInfoReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
var req = GetUgcBriefInfoReqOuterClass.GetUgcBriefInfoReq.parseFrom(payload);
|
||||
|
||||
if(req.getUgcType() == UgcTypeOuterClass.UgcType.UGC_TYPE_MUSIC_GAME){
|
||||
var musicGameBeatmap = MusicGameBeatmap.getByShareId(req.getUgcGuid());
|
||||
|
||||
if(musicGameBeatmap != null){
|
||||
session.send(new PacketGetUgcBriefInfoRsp(musicGameBeatmap.toBriefProto().build(), req.getUgcType()));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
session.send(new PacketGetUgcBriefInfoRsp(Retcode.RET_UGC_BRIEF_NOT_FOUND, req.getUgcType()));
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
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.RetcodeOuterClass;
|
||||
import emu.grasscutter.net.proto.UgcTypeOuterClass;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketGetUgcRsp;
|
||||
import emu.grasscutter.net.proto.GetUgcReqOuterClass.GetUgcReq;
|
||||
import lombok.val;
|
||||
|
||||
@Opcodes(PacketOpcodes.GetUgcReq)
|
||||
public class HandlerGetUgcReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
val req = GetUgcReq.parseFrom(payload);
|
||||
|
||||
PacketGetUgcRsp rsp = null;
|
||||
|
||||
if(req.getUgcType() == UgcTypeOuterClass.UgcType.UGC_TYPE_MUSIC_GAME) {
|
||||
val musicGameBeatmap = MusicGameBeatmap.getByShareId(req.getUgcGuid());
|
||||
|
||||
if (musicGameBeatmap != null) {
|
||||
rsp = new PacketGetUgcRsp(
|
||||
musicGameBeatmap.toBriefProto().build(),
|
||||
musicGameBeatmap.toProto(),
|
||||
req
|
||||
);
|
||||
} else {
|
||||
rsp = new PacketGetUgcRsp(
|
||||
RetcodeOuterClass.Retcode.RET_UGC_DATA_NOT_FOUND,
|
||||
req
|
||||
);
|
||||
}
|
||||
}else {
|
||||
rsp = new PacketGetUgcRsp(
|
||||
RetcodeOuterClass.Retcode.RET_UGC_DISABLED,
|
||||
req
|
||||
);
|
||||
}
|
||||
|
||||
session.send(rsp);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +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.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketHomeUnknown2Rsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.Unk2700_ACILPONNGGK_ClientReq)
|
||||
public class HandlerHomeUnknown2Req 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());
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
package emu.grasscutter.server.packet.recv;
|
||||
|
||||
import emu.grasscutter.data.GameData;
|
||||
import emu.grasscutter.data.excels.GadgetData;
|
||||
import emu.grasscutter.data.excels.ItemData;
|
||||
import emu.grasscutter.data.excels.MonsterData;
|
||||
import emu.grasscutter.game.entity.*;
|
||||
import emu.grasscutter.net.packet.Opcodes;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.packet.PacketHandler;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketQuestCreateEntityRsp;
|
||||
import emu.grasscutter.utils.Position;
|
||||
import lombok.val;
|
||||
import emu.grasscutter.net.proto.QuestCreateEntityReqOuterClass.QuestCreateEntityReq;
|
||||
|
||||
@Opcodes(PacketOpcodes.QuestCreateEntityReq)
|
||||
public class HandlerQuestCreateEntityReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
val req = QuestCreateEntityReq.parseFrom(payload);
|
||||
val entity = req.getEntity();
|
||||
val scene = session.getPlayer().getWorld().getSceneById(entity.getSceneId());
|
||||
|
||||
val pos = new Position(entity.getPos());
|
||||
val rot = new Position(entity.getRot());
|
||||
GameEntity gameEntity = null;
|
||||
switch (entity.getEntityCase()){
|
||||
case GADGET_ID -> {
|
||||
val gadgetId = entity.getGadgetId();
|
||||
val gadgetInfo = entity.getGadget();
|
||||
GadgetData gadgetData = GameData.getGadgetDataMap().get(gadgetId);
|
||||
gameEntity = switch (gadgetData.getType()){
|
||||
case Vehicle -> new EntityVehicle(scene, session.getPlayer(), gadgetId, 0, pos, rot);
|
||||
default -> new EntityGadget(scene, gadgetId, pos, rot);
|
||||
};
|
||||
}
|
||||
case ITEM_ID -> {
|
||||
val itemId = entity.getItemId();
|
||||
ItemData itemData = GameData.getItemDataMap().get(itemId);
|
||||
gameEntity = new EntityItem(scene, null, itemData, pos, 1, true);
|
||||
}
|
||||
case MONSTER_ID -> {
|
||||
val monsterId = entity.getMonsterId();
|
||||
val level = entity.getLevel();
|
||||
MonsterData monsterData = GameData.getMonsterDataMap().get(monsterId);
|
||||
gameEntity = new EntityMonster(scene, monsterData, pos, level);
|
||||
}
|
||||
case NPC_ID -> {
|
||||
}
|
||||
}
|
||||
|
||||
if(gameEntity != null){
|
||||
scene.addEntity(gameEntity);
|
||||
}
|
||||
|
||||
val createdEntityId = gameEntity!=null ? gameEntity.getId() : -1;
|
||||
|
||||
session.send(new PacketQuestCreateEntityRsp(createdEntityId, req));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
package emu.grasscutter.server.packet.recv;
|
||||
|
||||
import emu.grasscutter.net.packet.Opcodes;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.packet.PacketHandler;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketQuestDestroyEntityRsp;
|
||||
import lombok.val;
|
||||
import emu.grasscutter.net.proto.QuestDestroyEntityReqOuterClass.QuestDestroyEntityReq;
|
||||
|
||||
@Opcodes(PacketOpcodes.QuestDestroyEntityReq)
|
||||
public class HandlerQuestDestroyEntityReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
val req = QuestDestroyEntityReq.parseFrom(payload);
|
||||
val scene = session.getPlayer().getWorld().getSceneById(req.getSceneId());
|
||||
val entity = scene.getEntityById(req.getEntityId());
|
||||
|
||||
if(entity!=null){
|
||||
scene.removeEntity(entity);
|
||||
}
|
||||
|
||||
session.send(new PacketQuestDestroyEntityRsp(entity!=null, req));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package emu.grasscutter.server.packet.recv;
|
||||
|
||||
import emu.grasscutter.game.entity.EntityNPC;
|
||||
import emu.grasscutter.net.packet.Opcodes;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.packet.PacketHandler;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketQuestDestroyNpcRsp;
|
||||
import lombok.val;
|
||||
import emu.grasscutter.net.proto.QuestDestroyNpcReqOuterClass.QuestDestroyNpcReq;
|
||||
|
||||
@Opcodes(PacketOpcodes.QuestDestroyNpcReq)
|
||||
public class HandlerQuestDestroyNpcReq extends PacketHandler {
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
val req = QuestDestroyNpcReq.parseFrom(payload);
|
||||
|
||||
session.send(new PacketQuestDestroyNpcRsp(req.getNpcId(), req.getParentQuestId(), 0));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
package emu.grasscutter.server.packet.recv;
|
||||
|
||||
import emu.grasscutter.data.GameData;
|
||||
import emu.grasscutter.game.quest.GameMainQuest;
|
||||
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.PacketQuestTransmitRsp;
|
||||
import emu.grasscutter.utils.Position;
|
||||
import emu.grasscutter.net.proto.QuestTransmitReqOuterClass.QuestTransmitReq;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.ArrayList;
|
||||
import lombok.val;
|
||||
|
||||
@Opcodes(PacketOpcodes.QuestTransmitReq)
|
||||
public class HandlerQuestTransmitReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
val req = QuestTransmitReq.parseFrom(payload);
|
||||
GameMainQuest mainQuest = session.getPlayer().getQuestManager().getMainQuestById(req.getQuestId() / 100);
|
||||
List<Position> posAndRot = new ArrayList<>();
|
||||
boolean result = false;
|
||||
if(mainQuest.hasTeleportPostion(req.getQuestId(), posAndRot)){
|
||||
int sceneId = GameData.getTeleportDataMap().get(req.getQuestId()).getTransmit_points().get(0).getScene_id();
|
||||
result = session.getPlayer().getWorld().transferPlayerToScene(session.getPlayer(), sceneId, posAndRot.get(0));
|
||||
}
|
||||
session.send(new PacketQuestTransmitRsp(result, req));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
package emu.grasscutter.server.packet.recv;
|
||||
|
||||
import emu.grasscutter.game.activity.trialavatar.TrialAvatarActivityHandler;
|
||||
import emu.grasscutter.game.props.ActivityType;
|
||||
import emu.grasscutter.net.packet.Opcodes;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.packet.PacketHandler;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.net.proto.RetcodeOuterClass.Retcode;
|
||||
import emu.grasscutter.net.proto.ReceivedTrialAvatarActivityRewardReqOuterClass.ReceivedTrialAvatarActivityRewardReq;
|
||||
import emu.grasscutter.server.packet.send.PacketReceivedTrialAvatarActivityRewardRsp;
|
||||
|
||||
import lombok.val;
|
||||
|
||||
@Opcodes(PacketOpcodes.ReceivedTrialAvatarActivityRewardReq)
|
||||
public class HandlerReceivedTrialAvatarActivityRewardReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
val req = ReceivedTrialAvatarActivityRewardReq.parseFrom(payload);
|
||||
val player = session.getPlayer();
|
||||
val handler = player.getActivityManager().getActivityHandlerAs(ActivityType.NEW_ACTIVITY_TRIAL_AVATAR, TrialAvatarActivityHandler.class);
|
||||
|
||||
boolean result = handler.isPresent() && handler.get().getReward(player, req.getTrialAvatarIndexId());
|
||||
|
||||
session.getPlayer().sendPacket(new PacketReceivedTrialAvatarActivityRewardRsp(
|
||||
5002, // trial activity id
|
||||
req.getTrialAvatarIndexId(),
|
||||
result));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
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.packet.PacketHandler;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
|
||||
@Opcodes(PacketOpcodes.RemoveCustomTeamReq)
|
||||
public class HandlerRemoveCustomTeamReq 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());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,84 @@
|
||||
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.RetcodeOuterClass;
|
||||
import emu.grasscutter.net.proto.SaveUgcReqOuterClass;
|
||||
import emu.grasscutter.net.proto.UgcTypeOuterClass;
|
||||
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 lombok.val;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
@Opcodes(PacketOpcodes.SaveUgcReq)
|
||||
public class HandlerSaveUgcReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
val req = SaveUgcReqOuterClass.SaveUgcReq.parseFrom(payload);
|
||||
|
||||
// We only support music game user generated content
|
||||
if(req.getUgcType() != UgcTypeOuterClass.UgcType.UGC_TYPE_MUSIC_GAME){
|
||||
session.send(new PacketMusicGameCreateBeatmapRsp(RetcodeOuterClass.Retcode.RET_UGC_DISABLED, req.getUgcType()));
|
||||
return;
|
||||
}
|
||||
val briefInfo = req.getMusicBriefInfo();
|
||||
|
||||
val musicGameBeatmap = MusicGameBeatmap.of()
|
||||
.musicId(briefInfo.getMusicId())
|
||||
.musicNoteCount(briefInfo.getNoteCount())
|
||||
.savePosition(briefInfo.getSaveIdx())
|
||||
.savePageType(briefInfo.getSavePageType())
|
||||
.version(briefInfo.getVersion())
|
||||
.afterNoteList(briefInfo.getAfterNoteListList())
|
||||
.beforeNoteList(briefInfo.getBeforeNoteListList())
|
||||
.timeLineEditTime(briefInfo.getTimeLineEditTime())
|
||||
.publishTime(briefInfo.getPublishTime())
|
||||
.realTimeEditTime(briefInfo.getRealTimeEditTime())
|
||||
.maxScore(briefInfo.getMaxScore())
|
||||
.authorUid(session.getPlayer().getUid())
|
||||
.beatmap(MusicGameBeatmap.parse(req.getMusicRecord().getMusicTrackListList()))
|
||||
.createTime(Utils.getCurrentSeconds())
|
||||
.build();
|
||||
|
||||
musicGameBeatmap.save();
|
||||
|
||||
val playerData = session.getPlayer().getActivityManager().getPlayerActivityDataByActivityType(ActivityType.NEW_ACTIVITY_MUSIC_GAME);
|
||||
if(playerData.isEmpty()){
|
||||
session.send(new PacketMusicGameCreateBeatmapRsp(RetcodeOuterClass.Retcode.RET_UGC_DATA_NOT_FOUND, req.getUgcType()));
|
||||
return;
|
||||
}
|
||||
|
||||
val handler = (MusicGameActivityHandler) playerData.get().getActivityHandler();
|
||||
val musicGamePlayerData = handler.getMusicGamePlayerData(playerData.get());
|
||||
|
||||
val 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().getSaveIdx())
|
||||
.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.getPlayer().getActivityManager().getConditionExecutor())));
|
||||
session.send(new PacketMusicGameCreateBeatmapRsp(musicGameBeatmap.getMusicShareId(), req.getUgcType()));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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.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);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
package emu.grasscutter.server.packet.send;
|
||||
|
||||
import emu.grasscutter.game.avatar.Avatar;
|
||||
import emu.grasscutter.game.inventory.GameItem;
|
||||
import emu.grasscutter.game.props.ActionReason;
|
||||
|
||||
import emu.grasscutter.net.packet.BasePacket;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.AddNoGachaAvatarCardNotifyOuterClass.AddNoGachaAvatarCardNotify;
|
||||
|
||||
public class PacketAddNoGachaAvatarCardNotify extends BasePacket {
|
||||
|
||||
public PacketAddNoGachaAvatarCardNotify(Avatar avatar, ActionReason reason, GameItem item) {
|
||||
super(PacketOpcodes.AddNoGachaAvatarCardNotify, true);
|
||||
|
||||
AddNoGachaAvatarCardNotify proto = AddNoGachaAvatarCardNotify.newBuilder()
|
||||
.setAvatarId(avatar.getAvatarId())
|
||||
.setReason(reason.getValue())
|
||||
.setInitialLevel(1)
|
||||
.setItemId(item.getItemId())
|
||||
.setInitialPromoteLevel(0)
|
||||
.build();
|
||||
|
||||
this.setData(proto);
|
||||
}
|
||||
|
||||
public PacketAddNoGachaAvatarCardNotify(int avatarId, ActionReason reason, GameItem item) {
|
||||
super(PacketOpcodes.AddNoGachaAvatarCardNotify, true);
|
||||
|
||||
AddNoGachaAvatarCardNotify proto = AddNoGachaAvatarCardNotify.newBuilder()
|
||||
.setAvatarId(avatarId)
|
||||
.setReason(reason.getValue())
|
||||
.setInitialLevel(1)
|
||||
.setItemId(item.getItemId())
|
||||
.setInitialPromoteLevel(0)
|
||||
.build();
|
||||
|
||||
this.setData(proto);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +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.AvatarDelNotifyOuterClass.AvatarDelNotify;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class PacketAvatarDelNotify extends BasePacket {
|
||||
|
||||
public PacketAvatarDelNotify(List<Long> avatarGuidList) {
|
||||
super(PacketOpcodes.AvatarDelNotify);
|
||||
|
||||
AvatarDelNotify proto = AvatarDelNotify.newBuilder()
|
||||
.addAllAvatarGuidList(avatarGuidList)
|
||||
.build();
|
||||
|
||||
this.setData(proto);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
package emu.grasscutter.server.packet.send;
|
||||
|
||||
import emu.grasscutter.net.packet.BasePacket;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.BeginCameraSceneLookNotifyOuterClass.BeginCameraSceneLookNotify;
|
||||
import emu.grasscutter.utils.Position;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.val;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
|
||||
public class PacketBeginCameraSceneLookNotify extends BasePacket {
|
||||
|
||||
public PacketBeginCameraSceneLookNotify(CameraSceneLookNotify parameters) {
|
||||
super(PacketOpcodes.BeginCameraSceneLookNotify);
|
||||
val builder = BeginCameraSceneLookNotify.newBuilder()
|
||||
.setLookPos(parameters.lookPos.toProto())
|
||||
.setFollowPos(parameters.followPos.toProto())
|
||||
.setDuration(parameters.duration)
|
||||
.setIsAllowInput(parameters.isAllowInput)
|
||||
.setIsSetFollowPos(parameters.setFollowPos)
|
||||
.setIsSetScreenXy(parameters.isScreenXY)
|
||||
.setIsRecoverKeepCurrent(parameters.recoverKeepCurrent)
|
||||
.setIsChangePlayMode(parameters.isChangePlayMode)
|
||||
.setScreenY(parameters.screenY)
|
||||
.setScreenX(parameters.screenX)
|
||||
.setIsForce(parameters.isForce)
|
||||
.setIsForce(parameters.isForceWalk)
|
||||
.setEntityId(parameters.entityId)
|
||||
.addAllOtherParams(parameters.otherParams);
|
||||
this.setData(builder);
|
||||
}
|
||||
|
||||
// TODO check default values
|
||||
// todo find missing field usages:
|
||||
// enum Unk2700_HIAKNNCKHJB (Unk2700_LNCHDDOOECD)
|
||||
// Unk3000_MNLLCJMPMNH (uint32)
|
||||
// Unk2700_DHAHEKOGHBJ (float)
|
||||
// Unk3000_IEFIKMHCKDH (uint32)
|
||||
// Unk3000_OGCLMFFADBD (float)
|
||||
|
||||
@Data @NoArgsConstructor
|
||||
public static class CameraSceneLookNotify{
|
||||
Position lookPos = new Position();
|
||||
Position followPos = new Position();
|
||||
float duration = 0.0f;
|
||||
boolean isAllowInput = true;
|
||||
boolean setFollowPos = false;
|
||||
boolean isScreenXY = false;
|
||||
boolean recoverKeepCurrent = true;
|
||||
boolean isForceWalk = false;
|
||||
boolean isForce = false;
|
||||
boolean isChangePlayMode = false;
|
||||
float screenY = 0.0f;
|
||||
float screenX = 0.0f;
|
||||
int entityId = 0;
|
||||
Collection<String> otherParams = new ArrayList<>(0);
|
||||
}
|
||||
}
|
||||
@@ -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.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);
|
||||
}
|
||||
}
|
||||
@@ -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.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);
|
||||
}
|
||||
}
|
||||
@@ -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.CheckUgcStateRspOuterClass.CheckUgcStateRsp;
|
||||
import emu.grasscutter.net.proto.RetcodeOuterClass;
|
||||
|
||||
public class PacketCheckUgcStateRsp extends BasePacket {
|
||||
|
||||
public PacketCheckUgcStateRsp(RetcodeOuterClass.Retcode ret) {
|
||||
super(PacketOpcodes.CheckUgcStateRsp);
|
||||
|
||||
this.setData(CheckUgcStateRsp.newBuilder()
|
||||
.setRetcode(ret.getNumber())
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +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.CheckUgcUpdateRspOuterClass.CheckUgcUpdateRsp;
|
||||
import emu.grasscutter.net.proto.UgcTypeOuterClass.UgcType;
|
||||
|
||||
public class PacketCheckUgcUpdateRsp extends BasePacket {
|
||||
|
||||
public PacketCheckUgcUpdateRsp(UgcType ugcType) {
|
||||
super(PacketOpcodes.CheckUgcUpdateRsp);
|
||||
|
||||
var proto = CheckUgcUpdateRsp.newBuilder();
|
||||
|
||||
proto.setUgcType(ugcType);
|
||||
|
||||
this.setData(proto);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package emu.grasscutter.server.packet.send;
|
||||
|
||||
import emu.grasscutter.net.packet.BasePacket;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.CloseCommonTipsNotifyOuterClass.CloseCommonTipsNotify;
|
||||
|
||||
public class PacketCloseCommonTipsNotify extends BasePacket {
|
||||
|
||||
public PacketCloseCommonTipsNotify() {
|
||||
super(PacketOpcodes.CloseCommonTipsNotify);
|
||||
this.setData(CloseCommonTipsNotify.newBuilder().build());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
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;
|
||||
|
||||
public class PacketCustomTeamListNotify extends BasePacket {
|
||||
public PacketCustomTeamListNotify(Player player) {
|
||||
super(PacketOpcodes.CustomTeamListNotify);
|
||||
|
||||
CustomTeamListNotify.Builder proto = CustomTeamListNotify.newBuilder();
|
||||
|
||||
// Add the id list for custom teams.
|
||||
for (int id : player.getTeamManager().getTeams().keySet()) {
|
||||
if (id > 4) {
|
||||
proto.addCustomTeamIds(id);
|
||||
}
|
||||
}
|
||||
|
||||
// Add the avatar lists for all the teams the player has.
|
||||
player.getTeamManager().getTeams().forEach((id, teamInfo) -> proto.putAvatarTeamMap(id, teamInfo.toProto(player)));
|
||||
|
||||
this.setData(proto);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package emu.grasscutter.server.packet.send;
|
||||
|
||||
import emu.grasscutter.net.packet.BasePacket;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.CutSceneBeginNotifyOuterClass.CutSceneBeginNotify;
|
||||
|
||||
public class PacketCutsceneBeginNotify extends BasePacket {
|
||||
|
||||
public PacketCutsceneBeginNotify(int cutsceneId) {
|
||||
super(PacketOpcodes.CutSceneBeginNotify);
|
||||
|
||||
setData(CutSceneBeginNotify.newBuilder()
|
||||
.setCutsceneId(cutsceneId));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
package emu.grasscutter.server.packet.send;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import emu.grasscutter.net.packet.BasePacket;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.QuestDelNotifyOuterClass.QuestDelNotify;
|
||||
|
||||
public class PacketDelQuestNotify extends BasePacket {
|
||||
|
||||
public PacketDelQuestNotify(int questId) {
|
||||
super(PacketOpcodes.QuestDelNotify);
|
||||
|
||||
QuestDelNotify proto = QuestDelNotify.newBuilder()
|
||||
.setQuestId(questId)
|
||||
.build();
|
||||
|
||||
this.setData(proto);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package emu.grasscutter.server.packet.send;
|
||||
|
||||
import emu.grasscutter.net.packet.BasePacket;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.PlayerDieTypeOuterClass.PlayerDieType;
|
||||
import emu.grasscutter.net.proto.DungeonPlayerDieNotifyOuterClass.DungeonPlayerDieNotify;
|
||||
|
||||
public class PacketDungeonPlayerDieNotify extends BasePacket {
|
||||
|
||||
public PacketDungeonPlayerDieNotify(PlayerDieType playerDieType, int killerId, int dungeonId, int waitTime, int reviveCount, boolean isGadget) {
|
||||
super(PacketOpcodes.DungeonPlayerDieNotify);
|
||||
|
||||
DungeonPlayerDieNotify.Builder proto = DungeonPlayerDieNotify.newBuilder()
|
||||
.setDieType(playerDieType)
|
||||
.setReviveCount(reviveCount)
|
||||
.setWaitTime(waitTime)
|
||||
.setDungeonId(dungeonId)
|
||||
.setMurdererEntityId(killerId);
|
||||
|
||||
if(isGadget) proto.setGadgetId(killerId);
|
||||
else proto.setMonsterId(killerId);
|
||||
|
||||
this.setData(proto.build());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +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.DungeonPlayerDieRspOuterClass.DungeonPlayerDieRsp;
|
||||
import emu.grasscutter.net.proto.RetcodeOuterClass.Retcode;
|
||||
|
||||
public class PacketDungeonPlayerDieRsp extends BasePacket {
|
||||
|
||||
public PacketDungeonPlayerDieRsp(Retcode retcode) {
|
||||
super(PacketOpcodes.DungeonPlayerDieRsp);
|
||||
|
||||
DungeonPlayerDieRsp proto = DungeonPlayerDieRsp.newBuilder()
|
||||
.setRetcode(retcode.getNumber())
|
||||
.build();
|
||||
|
||||
this.setData(proto);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package emu.grasscutter.server.packet.send;
|
||||
|
||||
import emu.grasscutter.net.packet.BasePacket;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.DungeonSlipRevivePointActivateRspOuterClass.DungeonSlipRevivePointActivateRsp;
|
||||
import emu.grasscutter.net.proto.RetcodeOuterClass;
|
||||
|
||||
public class PacketDungeonSlipRevivePointActivateRsp extends BasePacket {
|
||||
public PacketDungeonSlipRevivePointActivateRsp(boolean success, int pointId) {
|
||||
super(PacketOpcodes.DungeonSlipRevivePointActivateRsp);
|
||||
|
||||
this.setData(DungeonSlipRevivePointActivateRsp.newBuilder()
|
||||
.setSlipRevivePointId(pointId)
|
||||
.setRetcode(success ? RetcodeOuterClass.Retcode.RET_SUCC_VALUE : RetcodeOuterClass.Retcode.RET_FAIL_VALUE));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package emu.grasscutter.server.packet.send;
|
||||
|
||||
import emu.grasscutter.net.packet.BasePacket;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.DungeonWayPointActivateRspOuterClass;
|
||||
import emu.grasscutter.net.proto.RetcodeOuterClass;
|
||||
|
||||
public class PacketDungeonWayPointActivateRsp extends BasePacket {
|
||||
public PacketDungeonWayPointActivateRsp(boolean success, int pointId) {
|
||||
super(PacketOpcodes.DungeonWayPointActivateRsp);
|
||||
|
||||
this.setData(DungeonWayPointActivateRspOuterClass.DungeonWayPointActivateRsp.newBuilder()
|
||||
.setWayPointId(pointId)
|
||||
.setRetcode(success ? RetcodeOuterClass.Retcode.RET_SUCC_VALUE : RetcodeOuterClass.Retcode.RET_FAIL_VALUE));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +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.DungeonWayPointActivateRspOuterClass;
|
||||
import emu.grasscutter.net.proto.DungeonWayPointNotifyOuterClass;
|
||||
import emu.grasscutter.net.proto.RetcodeOuterClass;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
public class PacketDungeonWayPointNotify extends BasePacket {
|
||||
public PacketDungeonWayPointNotify(boolean added, Set<Integer> activePointIds) {
|
||||
super(PacketOpcodes.DungeonWayPointNotify);
|
||||
|
||||
this.setData(DungeonWayPointNotifyOuterClass.DungeonWayPointNotify.newBuilder()
|
||||
.addAllActiveWayPointList(activePointIds)
|
||||
.setIsAdd(added));
|
||||
}
|
||||
}
|
||||
@@ -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.EndCameraSceneLookNotifyOuterClass.EndCameraSceneLookNotify;
|
||||
|
||||
public class PacketEndCameraSceneLookNotify extends BasePacket {
|
||||
|
||||
public PacketEndCameraSceneLookNotify() {
|
||||
super(PacketOpcodes.EndCameraSceneLookNotify);
|
||||
|
||||
this.setData(EndCameraSceneLookNotify.newBuilder());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +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.EnterTrialAvatarActivityDungeonRspOuterClass.EnterTrialAvatarActivityDungeonRsp;
|
||||
import emu.grasscutter.net.proto.RetcodeOuterClass;
|
||||
|
||||
public class PacketEnterTrialAvatarActivityDungeonRsp extends BasePacket {
|
||||
|
||||
public PacketEnterTrialAvatarActivityDungeonRsp(int activityId, int trialAvatarIndexId, boolean success) {
|
||||
this(activityId, trialAvatarIndexId, success ? RetcodeOuterClass.Retcode.RET_SUCC_VALUE : RetcodeOuterClass.Retcode.RET_FAIL_VALUE);
|
||||
}
|
||||
public PacketEnterTrialAvatarActivityDungeonRsp(int activityId, int trialAvatarIndexId, int retcodeVal) {
|
||||
super(PacketOpcodes.EnterTrialAvatarActivityDungeonRsp);
|
||||
this.setData(EnterTrialAvatarActivityDungeonRsp.newBuilder()
|
||||
.setActivityId(activityId)
|
||||
.setTrialAvatarIndexId(trialAvatarIndexId)
|
||||
.setRetcode(retcodeVal));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +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.ExecuteGadgetLuaRspOuterClass.ExecuteGadgetLuaRsp;
|
||||
|
||||
public class PacketExecuteGadgetLuaRsp extends BasePacket {
|
||||
|
||||
public PacketExecuteGadgetLuaRsp(int result) {
|
||||
super(PacketOpcodes.ExecuteGadgetLuaRsp, true);
|
||||
|
||||
ExecuteGadgetLuaRsp proto = ExecuteGadgetLuaRsp.newBuilder()
|
||||
.setRetcode(result)
|
||||
.build();
|
||||
|
||||
this.setData(proto);
|
||||
}
|
||||
}
|
||||
@@ -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.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());
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
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);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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.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());
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package emu.grasscutter.server.packet.send;
|
||||
|
||||
import emu.grasscutter.net.packet.BasePacket;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
|
||||
public class PacketFireworkSetRsp extends BasePacket {
|
||||
|
||||
public PacketFireworkSetRsp() {
|
||||
super(PacketOpcodes.FireworkSetRsp);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
package emu.grasscutter.server.packet.send;
|
||||
|
||||
import emu.grasscutter.net.packet.BasePacket;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.GetUgcBriefInfoRspOuterClass.GetUgcBriefInfoRsp;
|
||||
import emu.grasscutter.net.proto.RetcodeOuterClass;
|
||||
import emu.grasscutter.net.proto.UgcMusicBriefInfoOuterClass.UgcMusicBriefInfo;
|
||||
import emu.grasscutter.net.proto.UgcTypeOuterClass.UgcType;
|
||||
|
||||
public class PacketGetUgcBriefInfoRsp extends BasePacket {
|
||||
|
||||
public PacketGetUgcBriefInfoRsp(RetcodeOuterClass.Retcode ret, UgcType unknownEnum1) {
|
||||
super(PacketOpcodes.GetUgcBriefInfoRsp);
|
||||
|
||||
var proto = GetUgcBriefInfoRsp.newBuilder();
|
||||
|
||||
proto.setRetcode(ret.getNumber())
|
||||
.setUgcType(unknownEnum1);
|
||||
|
||||
this.setData(proto);
|
||||
}
|
||||
|
||||
public PacketGetUgcBriefInfoRsp(UgcMusicBriefInfo briefInfo, UgcType ugcType) {
|
||||
super(PacketOpcodes.GetUgcBriefInfoRsp);
|
||||
|
||||
var proto = GetUgcBriefInfoRsp.newBuilder();
|
||||
|
||||
proto.setMusicBriefInfo(briefInfo)
|
||||
.setUgcType(ugcType);
|
||||
|
||||
this.setData(proto);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
package emu.grasscutter.server.packet.send;
|
||||
|
||||
import emu.grasscutter.net.packet.BasePacket;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.GetUgcReqOuterClass.GetUgcReq;
|
||||
import emu.grasscutter.net.proto.GetUgcRspOuterClass.GetUgcRsp;
|
||||
import emu.grasscutter.net.proto.RetcodeOuterClass.Retcode;
|
||||
import emu.grasscutter.net.proto.UgcMusicBriefInfoOuterClass.UgcMusicBriefInfo;
|
||||
import emu.grasscutter.net.proto.UgcMusicRecordOuterClass.UgcMusicRecord;
|
||||
|
||||
public class PacketGetUgcRsp extends BasePacket {
|
||||
|
||||
public PacketGetUgcRsp(UgcMusicBriefInfo briefInfo, UgcMusicRecord musicRecord, GetUgcReq req) {
|
||||
super(PacketOpcodes.GetUgcRsp);
|
||||
|
||||
var proto = GetUgcRsp.newBuilder();
|
||||
|
||||
proto
|
||||
.setUgcGuid(briefInfo.getUgcGuid())
|
||||
.setUgcType(req.getUgcType())
|
||||
.setUgcRecordUsageValue(req.getUgcRecordUsageValue())
|
||||
.setMusicRecord(musicRecord)
|
||||
.setMusicBriefInfo(briefInfo);
|
||||
|
||||
this.setData(proto);
|
||||
}
|
||||
public PacketGetUgcRsp(Retcode errorCode, GetUgcReq req) {
|
||||
super(PacketOpcodes.GetUgcRsp);
|
||||
|
||||
var proto = GetUgcRsp.newBuilder();
|
||||
|
||||
proto
|
||||
.setUgcGuid(req.getUgcGuid())
|
||||
.setUgcType(req.getUgcType())
|
||||
.setUgcRecordUsageValue(req.getUgcRecordUsageValue())
|
||||
.setRetcode(errorCode.getNumber());
|
||||
|
||||
this.setData(proto);
|
||||
}
|
||||
}
|
||||
@@ -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.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);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
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);
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
package emu.grasscutter.server.packet.send;
|
||||
|
||||
import emu.grasscutter.game.entity.EntityGadget;
|
||||
import emu.grasscutter.net.packet.BasePacket;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.PlatformChangeRouteNotifyOuterClass.PlatformChangeRouteNotify;
|
||||
import lombok.val;
|
||||
|
||||
public class PacketPlatformChangeRouteNotify extends BasePacket {
|
||||
|
||||
public PacketPlatformChangeRouteNotify(EntityGadget gadgetEntity) {
|
||||
super(PacketOpcodes.PlatformChangeRouteNotify);
|
||||
|
||||
val proto = PlatformChangeRouteNotify.newBuilder()
|
||||
.setEntityId(gadgetEntity.getId())
|
||||
.setSceneTime(gadgetEntity.getScene().getSceneTime())
|
||||
.setPlatform(gadgetEntity.getPlatformInfo())
|
||||
.build();
|
||||
|
||||
this.setData(proto);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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.QuestCreateEntityReqOuterClass.QuestCreateEntityReq;
|
||||
import emu.grasscutter.net.proto.QuestCreateEntityRspOuterClass.QuestCreateEntityRsp;
|
||||
|
||||
public class PacketQuestCreateEntityRsp extends BasePacket {
|
||||
|
||||
public PacketQuestCreateEntityRsp(int entityId, QuestCreateEntityReq req) {
|
||||
super(PacketOpcodes.QuestCreateEntityRsp);
|
||||
|
||||
this.setData(QuestCreateEntityRsp.newBuilder()
|
||||
.setQuestId(req.getQuestId())
|
||||
.setEntity(req.getEntity())
|
||||
.setParentQuestId(req.getParentQuestId())
|
||||
.setIsRewind(req.getIsRewind())
|
||||
.setEntityId(entityId).setRetcode(
|
||||
entityId!=-1 ? Retcode.RET_SUCC_VALUE : Retcode.RET_FAIL_VALUE));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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.RetcodeOuterClass.Retcode;
|
||||
import emu.grasscutter.net.proto.QuestDestroyEntityRspOuterClass.QuestDestroyEntityRsp;
|
||||
import emu.grasscutter.net.proto.QuestDestroyEntityReqOuterClass.QuestDestroyEntityReq;
|
||||
|
||||
public class PacketQuestDestroyEntityRsp extends BasePacket {
|
||||
|
||||
public PacketQuestDestroyEntityRsp(boolean success, QuestDestroyEntityReq req) {
|
||||
super(PacketOpcodes.QuestDestroyEntityRsp);
|
||||
|
||||
this.setData(QuestDestroyEntityRsp.newBuilder()
|
||||
.setQuestId(req.getQuestId())
|
||||
.setEntityId(req.getEntityId())
|
||||
.setSceneId(req.getSceneId())
|
||||
.setRetcode(success ? Retcode.RET_SUCC_VALUE : Retcode.RET_FAIL_VALUE));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +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.QuestDestroyNpcRspOuterClass.QuestDestroyNpcRsp;
|
||||
|
||||
public class PacketQuestDestroyNpcRsp extends BasePacket {
|
||||
|
||||
public PacketQuestDestroyNpcRsp(int npcId, int parentQuestId, int retCode) {
|
||||
super(PacketOpcodes.QuestDestroyNpcRsp, true);
|
||||
|
||||
QuestDestroyNpcRsp proto = QuestDestroyNpcRsp.newBuilder()
|
||||
.setNpcId(npcId)
|
||||
.setParentQuestId(parentQuestId)
|
||||
.setRetcode(retCode)
|
||||
.build();
|
||||
|
||||
this.setData(proto);
|
||||
}
|
||||
}
|
||||
@@ -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.RetcodeOuterClass.Retcode;
|
||||
import emu.grasscutter.net.proto.QuestTransmitRspOuterClass.QuestTransmitRsp;
|
||||
import emu.grasscutter.net.proto.QuestTransmitReqOuterClass.QuestTransmitReq;
|
||||
|
||||
public class PacketQuestTransmitRsp extends BasePacket {
|
||||
|
||||
public PacketQuestTransmitRsp(boolean result, QuestTransmitReq req) {
|
||||
super(PacketOpcodes.QuestTransmitRsp);
|
||||
this.setData(QuestTransmitRsp.newBuilder()
|
||||
.setQuestId(req.getQuestId())
|
||||
.setPointId(req.getPointId())
|
||||
.setRetcode(result ? Retcode.RET_SUCC_VALUE : Retcode.RET_FAIL_VALUE));
|
||||
}
|
||||
}
|
||||
@@ -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.RetcodeOuterClass.Retcode;
|
||||
import emu.grasscutter.net.proto.ReceivedTrialAvatarActivityRewardRspOuterClass.ReceivedTrialAvatarActivityRewardRsp;
|
||||
|
||||
public class PacketReceivedTrialAvatarActivityRewardRsp extends BasePacket {
|
||||
|
||||
public PacketReceivedTrialAvatarActivityRewardRsp(int activityId, int trialAvatarId, boolean success) {
|
||||
this(activityId, trialAvatarId, success ? Retcode.RET_SUCC_VALUE : Retcode.RET_FAIL_VALUE);
|
||||
}
|
||||
public PacketReceivedTrialAvatarActivityRewardRsp(int activityId, int trialAvatarId, int retcodeVal) {
|
||||
super(PacketOpcodes.ReceivedTrialAvatarActivityRewardRsp);
|
||||
this.setData(ReceivedTrialAvatarActivityRewardRsp.newBuilder()
|
||||
.setActivityId(activityId)
|
||||
.setTrialAvatarIndexId(trialAvatarId)
|
||||
.setRetcode(retcodeVal)
|
||||
.build());
|
||||
}
|
||||
}
|
||||
@@ -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.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);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package emu.grasscutter.server.packet.send;
|
||||
|
||||
import emu.grasscutter.net.packet.BasePacket;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.SceneForceLockNotifyOuterClass.SceneForceLockNotify;
|
||||
import lombok.val;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
public class PacketSceneForceLockNotify extends BasePacket {
|
||||
public PacketSceneForceLockNotify(Collection<Integer> locked) {
|
||||
super(PacketOpcodes.SceneForceLockNotify);
|
||||
val builder = SceneForceLockNotify.newBuilder()
|
||||
.addAllForceIdList(locked);
|
||||
|
||||
this.setData(builder);
|
||||
}
|
||||
public PacketSceneForceLockNotify(int locked) {
|
||||
super(PacketOpcodes.SceneForceLockNotify);
|
||||
val builder = SceneForceLockNotify.newBuilder()
|
||||
.addForceIdList(locked);
|
||||
|
||||
this.setData(builder);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
package emu.grasscutter.server.packet.send;
|
||||
|
||||
import emu.grasscutter.net.packet.BasePacket;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.SceneForceUnlockNotifyOuterClass.SceneForceUnlockNotify;
|
||||
import lombok.val;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
public class PacketSceneForceUnlockNotify extends BasePacket {
|
||||
public PacketSceneForceUnlockNotify(Collection<Integer> unlocked, boolean isAdd) {
|
||||
super(PacketOpcodes.SceneForceUnlockNotify);
|
||||
|
||||
val builder = SceneForceUnlockNotify.newBuilder()
|
||||
.addAllForceIdList(unlocked)
|
||||
.setIsAdd(isAdd);
|
||||
|
||||
this.setData(builder);
|
||||
}
|
||||
|
||||
public PacketSceneForceUnlockNotify(int unlocked, boolean isAdd) {
|
||||
super(PacketOpcodes.SceneForceUnlockNotify);
|
||||
|
||||
val builder = SceneForceUnlockNotify.newBuilder()
|
||||
.addForceIdList(unlocked)
|
||||
.setIsAdd(isAdd);
|
||||
|
||||
this.setData(builder);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
package emu.grasscutter.server.packet.send;
|
||||
|
||||
import emu.grasscutter.net.packet.BasePacket;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.utils.Position;
|
||||
import emu.grasscutter.net.proto.ScenePlayerSoundNotifyOuterClass.ScenePlayerSoundNotify;
|
||||
import emu.grasscutter.net.proto.ScenePlayerSoundNotifyOuterClass.ScenePlayerSoundNotify.PlaySoundType;
|
||||
import emu.grasscutter.net.proto.VectorOuterClass.Vector;
|
||||
import java.util.Objects;
|
||||
|
||||
public class PacketScenePlayerSoundNotify extends BasePacket {
|
||||
|
||||
public PacketScenePlayerSoundNotify(Position playPosition, String soundName, int playType) {
|
||||
super(PacketOpcodes.ScenePlayerSoundNotify, true);
|
||||
|
||||
ScenePlayerSoundNotify.Builder proto = ScenePlayerSoundNotify.newBuilder();
|
||||
if (!Objects.equals(playPosition, null)) {
|
||||
proto.setPlayPos(Vector.newBuilder()
|
||||
.setX(playPosition.getX())
|
||||
.setY(playPosition.getY())
|
||||
.setZ(playPosition.getZ())
|
||||
.build());
|
||||
}
|
||||
if (!Objects.equals(soundName, null)) {
|
||||
proto.setSoundName(soundName);
|
||||
}
|
||||
proto.setPlayType(PlaySoundType.forNumber(playType));
|
||||
|
||||
this.setData(proto.build());
|
||||
}
|
||||
}
|
||||
@@ -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.ShowClientGuideNotifyOuterClass.ShowClientGuideNotify;
|
||||
|
||||
public class PacketShowClientGuideNotify extends BasePacket {
|
||||
|
||||
public PacketShowClientGuideNotify(String guideName) {
|
||||
super(PacketOpcodes.ShowClientGuideNotify, true);
|
||||
|
||||
ShowClientGuideNotify proto = ShowClientGuideNotify.newBuilder()
|
||||
.setGuideName(guideName)
|
||||
.build();
|
||||
this.setData(proto);
|
||||
}
|
||||
}
|
||||
@@ -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.ShowCommonTipsNotifyOuterClass.ShowCommonTipsNotify;
|
||||
|
||||
public class PacketShowCommonTipsNotify extends BasePacket {
|
||||
|
||||
public PacketShowCommonTipsNotify(String title, String content, int closeTime) {
|
||||
super(PacketOpcodes.ShowCommonTipsNotify);
|
||||
this.setData(ShowCommonTipsNotify.newBuilder()
|
||||
.setTitle(title)
|
||||
.setContent(content)
|
||||
.setCloseTime(closeTime)
|
||||
.build());
|
||||
}
|
||||
}
|
||||
@@ -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.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);
|
||||
}
|
||||
}
|
||||
@@ -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.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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user