Copy some files from Grasscutter-Quests

NOT completely finished, nor is it completely done. Protocol issues remain! (including lack of packet IDs)
This commit is contained in:
KingRainbow44
2023-04-01 18:06:30 -04:00
parent 262ee38ded
commit daa51e53b7
381 changed files with 10285 additions and 9150 deletions

View File

@@ -1,14 +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();
}
}
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;
@Opcodes(PacketOpcodes.AddCustomTeamReq)
public class HandlerAddCustomTeamReq extends PacketHandler {
@Override
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
session.getPlayer().getTeamManager().addNewCustomTeam();
}
}

View File

@@ -2,8 +2,8 @@ package emu.grasscutter.server.packet.recv;
import emu.grasscutter.GameConstants;
import emu.grasscutter.data.GameData;
import emu.grasscutter.data.excels.AvatarSkillDepotData;
import emu.grasscutter.data.excels.WorldAreaData;
import emu.grasscutter.data.excels.avatar.AvatarSkillDepotData;
import emu.grasscutter.data.excels.world.WorldAreaData;
import emu.grasscutter.game.avatar.Avatar;
import emu.grasscutter.game.entity.EntityAvatar;
import emu.grasscutter.net.packet.Opcodes;

View File

@@ -1,6 +1,5 @@
package emu.grasscutter.server.packet.recv;
import emu.grasscutter.game.quest.enums.QuestTrigger;
import emu.grasscutter.net.packet.Opcodes;
import emu.grasscutter.net.packet.PacketHandler;
import emu.grasscutter.net.packet.PacketOpcodes;
@@ -13,16 +12,9 @@ public class HandlerChangeGameTimeReq extends PacketHandler {
@Override
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
ChangeGameTimeReq req = ChangeGameTimeReq.parseFrom(payload);
var req = ChangeGameTimeReq.parseFrom(payload);
session.getPlayer().getScene().changeTime(req.getGameTime());
session
.getPlayer()
.getQuestManager()
.triggerEvent(
QuestTrigger.QUEST_CONTENT_GAME_TIME_TICK,
req.getGameTime() / 60, // hours
req.getExtraDays()); // days
session.getPlayer().getWorld().changeTime(req.getGameTime(), req.getExtraDays());
session.getPlayer().sendPacket(new PacketChangeGameTimeRsp(session.getPlayer()));
}
}

View File

@@ -1,26 +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());
}
}
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

@@ -1,23 +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.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));
}
}
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));
}
}

View File

@@ -1,20 +1,19 @@
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()));
}
}
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()));
}
}

View File

@@ -1,28 +1,25 @@
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));
}
}
package emu.grasscutter.server.packet.recv;
import emu.grasscutter.game.player.Player;
import emu.grasscutter.net.packet.Opcodes;
import emu.grasscutter.net.packet.PacketHandler;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.DungeonPlayerDieReqOuterClass.DungeonPlayerDieReq;
import emu.grasscutter.net.proto.RetcodeOuterClass.Retcode;
import emu.grasscutter.server.game.GameSession;
import emu.grasscutter.server.packet.send.PacketDungeonPlayerDieRsp;
@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));
}
}

View File

@@ -1,26 +1,25 @@
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()));
}
}
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()));
}
}

View File

@@ -1,26 +1,25 @@
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()));
}
}
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()));
}
}

View File

@@ -1,33 +1,40 @@
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));
}
}
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.PacketHandler;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.EnterTrialAvatarActivityDungeonReqOuterClass.EnterTrialAvatarActivityDungeonReq;
import emu.grasscutter.server.game.GameSession;
import emu.grasscutter.server.packet.send.PacketEnterTrialAvatarActivityDungeonRsp;
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));
}
}

View File

@@ -1,29 +1,28 @@
package emu.grasscutter.server.packet.recv;
import emu.grasscutter.game.quest.enums.QuestTrigger;
import emu.grasscutter.net.packet.Opcodes;
import emu.grasscutter.net.packet.PacketHandler;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotify;
import emu.grasscutter.server.game.GameSession;
@Opcodes(PacketOpcodes.EvtDoSkillSuccNotify)
public class HandlerEvtDoSkillSuccNotify extends PacketHandler {
@Override
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
EvtDoSkillSuccNotify notify = EvtDoSkillSuccNotify.parseFrom(payload);
var player = session.getPlayer();
int skillId = notify.getSkillId();
int casterId = notify.getCasterId();
// Call skill perform in the player's ability manager.
player.getAbilityManager().onSkillStart(session.getPlayer(), skillId, casterId);
// Handle skill notify in other managers.
player.getStaminaManager().handleEvtDoSkillSuccNotify(session, skillId, casterId);
player.getEnergyManager().handleEvtDoSkillSuccNotify(session, skillId, casterId);
player.getQuestManager().triggerEvent(QuestTrigger.QUEST_CONTENT_SKILL, skillId, 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.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotify;
import emu.grasscutter.server.game.GameSession;
@Opcodes(PacketOpcodes.EvtDoSkillSuccNotify)
public class HandlerEvtDoSkillSuccNotify extends PacketHandler {
@Override
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
EvtDoSkillSuccNotify notify = EvtDoSkillSuccNotify.parseFrom(payload);
var player = session.getPlayer();
int skillId = notify.getSkillId();
int casterId = notify.getCasterId();
// Call skill perform in the player's ability manager.
player.getAbilityManager().onSkillStart(session.getPlayer(), skillId, casterId);
// Handle skill notify in other managers.
player.getStaminaManager().handleEvtDoSkillSuccNotify(session, skillId, casterId);
player.getEnergyManager().handleEvtDoSkillSuccNotify(session, skillId, casterId);
player.getQuestManager().triggerEvent(QuestContent.QUEST_CONTENT_SKILL, skillId, 0);
}
}

View File

@@ -1,30 +1,29 @@
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));
}
}
package emu.grasscutter.server.packet.recv;
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.PacketHandler;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.ExecuteGadgetLuaReqOuterClass.ExecuteGadgetLuaReq;
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));
}
}

View File

@@ -1,21 +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.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());
}
}
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 +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.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());
}
}
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

@@ -1,6 +1,5 @@
package emu.grasscutter.server.packet.recv;
import emu.grasscutter.game.quest.enums.QuestTrigger;
import emu.grasscutter.net.packet.Opcodes;
import emu.grasscutter.net.packet.PacketHandler;
import emu.grasscutter.net.packet.PacketOpcodes;
@@ -17,7 +16,7 @@ public class HandlerGadgetInteractReq extends PacketHandler {
session
.getPlayer()
.getQuestManager()
.triggerEvent(QuestTrigger.QUEST_CONTENT_INTERACT_GADGET, req.getGadgetId());
.triggerEvent(QuestContent.QUEST_CONTENT_INTERACT_GADGET, req.getGadgetId());
session.getPlayer().interactWith(req.getGadgetEntityId(), req);
}
}

View File

@@ -1,33 +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()));
}
}
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()));
}
}

View File

@@ -1,48 +1,39 @@
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);
}
}
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.GetUgcReqOuterClass.GetUgcReq;
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 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);
}
}

View File

@@ -1,20 +1,19 @@
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());
}
}
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());
}
}

View File

@@ -3,7 +3,6 @@ package emu.grasscutter.server.packet.recv;
import emu.grasscutter.data.GameData;
import emu.grasscutter.data.binout.MainQuestData;
import emu.grasscutter.data.binout.MainQuestData.TalkData;
import emu.grasscutter.game.quest.enums.QuestTrigger;
import emu.grasscutter.net.packet.Opcodes;
import emu.grasscutter.net.packet.PacketHandler;
import emu.grasscutter.net.packet.PacketOpcodes;
@@ -51,15 +50,15 @@ public class HandlerNpcTalkReq extends PacketHandler {
.getPlayer()
.getQuestManager()
.triggerEvent(
QuestTrigger.QUEST_CONTENT_COMPLETE_ANY_TALK, String.valueOf(req.getTalkId()), 0, 0);
QuestContent.QUEST_CONTENT_COMPLETE_ANY_TALK, String.valueOf(req.getTalkId()), 0, 0);
session
.getPlayer()
.getQuestManager()
.triggerEvent(QuestTrigger.QUEST_CONTENT_COMPLETE_TALK, req.getTalkId(), 0);
.triggerEvent(QuestContent.QUEST_CONTENT_COMPLETE_TALK, req.getTalkId(), 0);
session
.getPlayer()
.getQuestManager()
.triggerEvent(QuestTrigger.QUEST_CONTENT_FINISH_PLOT, req.getTalkId(), 0);
.triggerEvent(QuestContent.QUEST_CONTENT_FINISH_PLOT, req.getTalkId(), 0);
}
session.send(new PacketNpcTalkRsp(req.getNpcEntityId(), req.getTalkId(), req.getEntityId()));

View File

@@ -1,7 +1,6 @@
package emu.grasscutter.server.packet.recv;
import emu.grasscutter.game.props.SceneType;
import emu.grasscutter.game.quest.enums.QuestTrigger;
import emu.grasscutter.net.packet.Opcodes;
import emu.grasscutter.net.packet.PacketHandler;
import emu.grasscutter.net.packet.PacketOpcodes;
@@ -17,7 +16,7 @@ public class HandlerPostEnterSceneReq extends PacketHandler {
session
.getPlayer()
.getQuestManager()
.triggerEvent(QuestTrigger.QUEST_CONTENT_ENTER_ROOM, session.getPlayer().getSceneId(), 0);
.triggerEvent(QuestContent.QUEST_CONTENT_ENTER_ROOM, session.getPlayer().getSceneId(), 0);
}
session.send(new PacketPostEnterSceneRsp(session.getPlayer()));

View File

@@ -1,63 +1,62 @@
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));
}
}
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.monster.MonsterData;
import emu.grasscutter.game.entity.*;
import emu.grasscutter.net.packet.Opcodes;
import emu.grasscutter.net.packet.PacketHandler;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.QuestCreateEntityReqOuterClass.QuestCreateEntityReq;
import emu.grasscutter.server.game.GameSession;
import emu.grasscutter.server.packet.send.PacketQuestCreateEntityRsp;
import emu.grasscutter.utils.Position;
import lombok.val;
@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));
}
}

View File

@@ -1,27 +1,26 @@
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));
}
}
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.QuestDestroyEntityReqOuterClass.QuestDestroyEntityReq;
import emu.grasscutter.server.game.GameSession;
import emu.grasscutter.server.packet.send.PacketQuestDestroyEntityRsp;
import lombok.val;
@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));
}
}

View File

@@ -1,20 +1,19 @@
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));
}
}
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.QuestDestroyNpcReqOuterClass.QuestDestroyNpcReq;
import emu.grasscutter.server.game.GameSession;
import emu.grasscutter.server.packet.send.PacketQuestDestroyNpcRsp;
import lombok.val;
@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));
}
}

View File

@@ -1,32 +1,41 @@
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));
}
}
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.net.proto.QuestTransmitReqOuterClass.QuestTransmitReq;
import emu.grasscutter.server.game.GameSession;
import emu.grasscutter.server.packet.send.PacketQuestTransmitRsp;
import emu.grasscutter.utils.Position;
import java.util.ArrayList;
import java.util.List;
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));
}
}

View File

@@ -1,32 +1,37 @@
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));
}
}
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.PacketHandler;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.ReceivedTrialAvatarActivityRewardReqOuterClass.ReceivedTrialAvatarActivityRewardReq;
import emu.grasscutter.server.game.GameSession;
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));
}
}

View File

@@ -1,16 +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());
}
}
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.RemoveCustomTeamReqOuterClass.RemoveCustomTeamReq;
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());
}
}

View File

@@ -1,84 +1,97 @@
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()));
}
}
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 java.util.Objects;
import lombok.val;
@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()));
}
}

View File

@@ -1,22 +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.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);
}
}
package emu.grasscutter.server.packet.send;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.AddCustomTeamRspOuterClass.AddCustomTeamRsp;
import emu.grasscutter.net.proto.RetcodeOuterClass.Retcode;
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

@@ -1,40 +1,41 @@
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);
}
}
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);
}
}

View File

@@ -1,20 +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.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);
}
}
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);
}
}

View File

@@ -19,4 +19,11 @@ public class PacketAvatarTeamUpdateNotify extends BasePacket {
this.setData(proto);
}
/** Used for locking/unlocking team modification. */
public PacketAvatarTeamUpdateNotify() {
super(PacketOpcodes.AvatarTeamUpdateNotify);
this.setData(AvatarTeamUpdateNotify.newBuilder().build());
}
}

View File

@@ -1,61 +1,62 @@
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);
}
}
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 java.util.ArrayList;
import java.util.Collection;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.val;
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);
}
}

View File

@@ -1,17 +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.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);
}
}
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 +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.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);
}
}
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

@@ -1,18 +1,15 @@
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())
);
}
}
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()));
}
}

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.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);
}
}
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);
}
}

View File

@@ -1,13 +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());
}
}
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());
}
}

View File

@@ -1,26 +1,29 @@
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);
}
}
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);
}
}

View File

@@ -1,16 +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.CutSceneBeginNotifyOuterClass.CutSceneBeginNotify;
public class PacketCutsceneBeginNotify extends BasePacket {
public PacketCutsceneBeginNotify(int cutsceneId) {
super(PacketOpcodes.CutSceneBeginNotify);
setData(CutSceneBeginNotify.newBuilder()
.setCutsceneId(cutsceneId));
}
}
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));
}
}

View File

@@ -1,21 +1,16 @@
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);
}
}
package emu.grasscutter.server.packet.send;
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);
}
}

View File

@@ -1,25 +1,32 @@
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());
}
}
package emu.grasscutter.server.packet.send;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.DungeonPlayerDieNotifyOuterClass.DungeonPlayerDieNotify;
import emu.grasscutter.net.proto.PlayerDieTypeOuterClass.PlayerDieType;
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());
}
}

View File

@@ -1,19 +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.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);
}
}
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);
}
}

View File

@@ -1,16 +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.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));
}
}
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));
}
}

View File

@@ -1,16 +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.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));
}
}
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));
}
}

View File

@@ -1,19 +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.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));
}
}
package emu.grasscutter.server.packet.send;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.DungeonWayPointNotifyOuterClass;
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));
}
}

View File

@@ -1,14 +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());
}
}
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());
}
}

View File

@@ -1,20 +1,29 @@
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));
}
}
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));
}
}

View File

@@ -1,19 +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.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);
}
}
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);
}
}

View File

@@ -1,21 +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.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());
}
}
package emu.grasscutter.server.packet.send;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.FireWorkDataOuterClass;
import emu.grasscutter.net.proto.FireWorkNotifyOuterClass;
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 +1,11 @@
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);
}
}
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 +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.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());
}
}
package emu.grasscutter.server.packet.send;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.FireworkSetDataOuterClass;
import emu.grasscutter.net.proto.FireworkSetNotifyOuterClass;
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

@@ -1,13 +1,11 @@
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);
}
}
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);
}
}

View File

@@ -1,7 +1,7 @@
package emu.grasscutter.server.packet.send;
import emu.grasscutter.data.GameData;
import emu.grasscutter.data.excels.DungeonEntryData;
import emu.grasscutter.data.excels.dungeon.DungeonEntryData;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.DailyDungeonEntryInfoOuterClass;

View File

@@ -1,35 +1,31 @@
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);
}
}
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);
}
}

View File

@@ -1,40 +1,41 @@
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);
}
}
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);
}
}

View File

@@ -1,18 +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);
}
}
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 +1,11 @@
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);
}
}
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

@@ -1,23 +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);
}
}
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);
}
}

View File

@@ -3,6 +3,7 @@ package emu.grasscutter.server.packet.send;
import emu.grasscutter.game.player.Player;
import emu.grasscutter.game.player.Player.SceneLoadState;
import emu.grasscutter.game.props.EnterReason;
import emu.grasscutter.game.world.data.TeleportProperties;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.EnterTypeOuterClass.EnterType;
@@ -19,7 +20,7 @@ public class PacketPlayerEnterSceneNotify extends BasePacket {
player.setSceneLoadState(SceneLoadState.LOADING);
player.setEnterSceneToken(Utils.randomRange(1000, 99999));
PlayerEnterSceneNotify.Builder proto =
var proto =
PlayerEnterSceneNotify.newBuilder()
.setSceneId(player.getSceneId())
.setPos(player.getPosition().toProto())
@@ -47,7 +48,10 @@ public class PacketPlayerEnterSceneNotify extends BasePacket {
this(player, player, type, reason, newScene, newPos);
}
// Teleport or go somewhere
public PacketPlayerEnterSceneNotify(Player player, TeleportProperties teleportProperties) {
this(player, player, teleportProperties);
}
public PacketPlayerEnterSceneNotify(
Player player,
Player target,
@@ -55,34 +59,40 @@ public class PacketPlayerEnterSceneNotify extends BasePacket {
EnterReason reason,
int newScene,
Position newPos) {
super(PacketOpcodes.PlayerEnterSceneNotify);
this(
player,
target,
TeleportProperties.builder()
.enterType(type)
.enterReason(reason)
.sceneId(newScene)
.teleportTo(newPos)
.build());
}
// Set previous position
if (!(newScene == 3)) { // Hardcoded for now else weird positions will occur
// Don't update position within same scene or teapot
} else {
// Only used for exiting teapot currently
player.setPrevPos(player.getPosition());
}
// Teleport or go somewhere
public PacketPlayerEnterSceneNotify(
Player player, Player target, TeleportProperties teleportProperties) {
super(PacketOpcodes.PlayerEnterSceneNotify);
player.setSceneLoadState(SceneLoadState.LOADING);
player.setEnterSceneToken(Utils.randomRange(1000, 99999));
PlayerEnterSceneNotify.Builder proto =
var proto =
PlayerEnterSceneNotify.newBuilder()
.setPrevSceneId(player.getSceneId())
.setPrevPos(player.getPosition().toProto())
.setSceneId(newScene)
.setPos(newPos.toProto())
.setSceneId(teleportProperties.getSceneId())
.setPos(teleportProperties.getTeleportTo().toProto())
.setSceneBeginTime(System.currentTimeMillis())
.setType(type)
.setType(teleportProperties.getEnterType())
.setTargetUid(target.getUid())
.setEnterSceneToken(player.getEnterSceneToken())
.setWorldLevel(target.getWorld().getWorldLevel())
.setEnterReason(reason.getValue())
.setEnterReason(teleportProperties.getEnterReason().getValue())
.setWorldType(1)
.setSceneTransaction(
newScene
teleportProperties.getSceneId()
+ "-"
+ target.getUid()
+ "-"

View File

@@ -1,23 +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));
}
}
package emu.grasscutter.server.packet.send;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.QuestCreateEntityReqOuterClass.QuestCreateEntityReq;
import emu.grasscutter.net.proto.QuestCreateEntityRspOuterClass.QuestCreateEntityRsp;
import emu.grasscutter.net.proto.RetcodeOuterClass.Retcode;
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));
}
}

View File

@@ -1,21 +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));
}
}
package emu.grasscutter.server.packet.send;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.QuestDestroyEntityReqOuterClass.QuestDestroyEntityReq;
import emu.grasscutter.net.proto.QuestDestroyEntityRspOuterClass.QuestDestroyEntityRsp;
import emu.grasscutter.net.proto.RetcodeOuterClass.Retcode;
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));
}
}

View File

@@ -1,20 +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.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);
}
}
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);
}
}

View File

@@ -1,18 +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.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));
}
}
package emu.grasscutter.server.packet.send;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.QuestTransmitReqOuterClass.QuestTransmitReq;
import emu.grasscutter.net.proto.QuestTransmitRspOuterClass.QuestTransmitRsp;
import emu.grasscutter.net.proto.RetcodeOuterClass.Retcode;
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));
}
}

View File

@@ -1,21 +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.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());
}
}
package emu.grasscutter.server.packet.send;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.ReceivedTrialAvatarActivityRewardRspOuterClass.ReceivedTrialAvatarActivityRewardRsp;
import emu.grasscutter.net.proto.RetcodeOuterClass.Retcode;
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());
}
}

View File

@@ -1,23 +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.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);
}
}
package emu.grasscutter.server.packet.send;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.RemoveCustomTeamRspOuterClass.RemoveCustomTeamRsp;
import emu.grasscutter.net.proto.RetcodeOuterClass.Retcode;
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

@@ -1,25 +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.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);
}
}
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 java.util.Collection;
import lombok.val;
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);
}
}

View File

@@ -1,30 +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.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);
}
}
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 java.util.Collection;
import lombok.val;
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);
}
}

View File

@@ -1,31 +1,32 @@
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());
}
}
package emu.grasscutter.server.packet.send;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.ScenePlayerSoundNotifyOuterClass.ScenePlayerSoundNotify;
import emu.grasscutter.net.proto.ScenePlayerSoundNotifyOuterClass.ScenePlayerSoundNotify.PlaySoundType;
import emu.grasscutter.net.proto.VectorOuterClass.Vector;
import emu.grasscutter.utils.Position;
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());
}
}

View File

@@ -1,6 +1,7 @@
package emu.grasscutter.server.packet.send;
import emu.grasscutter.game.player.Player;
import emu.grasscutter.game.world.Scene;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.SceneTimeNotifyOuterClass.SceneTimeNotify;
@@ -10,7 +11,7 @@ public class PacketSceneTimeNotify extends BasePacket {
public PacketSceneTimeNotify(Player player) {
super(PacketOpcodes.SceneTimeNotify);
SceneTimeNotify proto =
var proto =
SceneTimeNotify.newBuilder()
.setIsPaused(player.isPaused())
.setSceneId(player.getSceneId())
@@ -19,4 +20,17 @@ public class PacketSceneTimeNotify extends BasePacket {
this.setData(proto);
}
public PacketSceneTimeNotify(Scene scene) {
super(PacketOpcodes.SceneTimeNotify);
var proto =
SceneTimeNotify.newBuilder()
.setSceneId(scene.getId())
.setSceneTime(scene.getSceneTime())
.setIsPaused(scene.isPaused())
.build();
this.setData(proto);
}
}

View File

@@ -1,17 +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.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);
}
}
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);
}
}

View File

@@ -1,17 +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.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());
}
}
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());
}
}

View File

@@ -1,17 +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.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);
}
}
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 +1,25 @@
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);
}
}
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);
}
}