mirror of
https://github.com/Grasscutters/Grasscutter.git
synced 2025-12-22 20:04:56 +01:00
Run Spotless on src/main
This commit is contained in:
@@ -1,16 +1,15 @@
|
||||
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.NONE)
|
||||
public class Handler extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
// Auto template
|
||||
}
|
||||
|
||||
}
|
||||
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.NONE)
|
||||
public class Handler extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
// Auto template
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,25 +1,24 @@
|
||||
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.AbilityInvocationsNotifyOuterClass.AbilityInvocationsNotify;
|
||||
import emu.grasscutter.net.proto.AbilityInvokeEntryOuterClass.AbilityInvokeEntry;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
|
||||
@Opcodes(PacketOpcodes.AbilityInvocationsNotify)
|
||||
public class HandlerAbilityInvocationsNotify extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
AbilityInvocationsNotify notif = AbilityInvocationsNotify.parseFrom(payload);
|
||||
|
||||
Player player = session.getPlayer();
|
||||
for (AbilityInvokeEntry entry : notif.getInvokesList()) {
|
||||
player.getAbilityManager().onAbilityInvoke(entry);
|
||||
player.getAbilityInvokeHandler().addEntry(entry.getForwardType(), entry);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
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.AbilityInvocationsNotifyOuterClass.AbilityInvocationsNotify;
|
||||
import emu.grasscutter.net.proto.AbilityInvokeEntryOuterClass.AbilityInvokeEntry;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
|
||||
@Opcodes(PacketOpcodes.AbilityInvocationsNotify)
|
||||
public class HandlerAbilityInvocationsNotify extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
AbilityInvocationsNotify notif = AbilityInvocationsNotify.parseFrom(payload);
|
||||
|
||||
Player player = session.getPlayer();
|
||||
for (AbilityInvokeEntry entry : notif.getInvokesList()) {
|
||||
player.getAbilityManager().onAbilityInvoke(entry);
|
||||
player.getAbilityInvokeHandler().addEntry(entry.getForwardType(), entry);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,25 +1,29 @@
|
||||
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.ActivityTakeWatcherRewardReqOuterClass;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketActivityTakeWatcherRewardRsp;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
@Opcodes(PacketOpcodes.ActivityTakeWatcherRewardReq)
|
||||
public class HandlerActivityTakeWatcherRewardReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
var req = ActivityTakeWatcherRewardReqOuterClass.ActivityTakeWatcherRewardReq.parseFrom(payload);
|
||||
|
||||
Optional.ofNullable(session.getPlayer().getActivityManager().getPlayerActivityDataMap().get(req.getActivityId()))
|
||||
.ifPresent(x -> x.takeWatcherReward(req.getWatcherId()));
|
||||
|
||||
session.send(new PacketActivityTakeWatcherRewardRsp(req.getActivityId(), req.getWatcherId()));
|
||||
}
|
||||
|
||||
}
|
||||
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.ActivityTakeWatcherRewardReqOuterClass;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketActivityTakeWatcherRewardRsp;
|
||||
import java.util.Optional;
|
||||
|
||||
@Opcodes(PacketOpcodes.ActivityTakeWatcherRewardReq)
|
||||
public class HandlerActivityTakeWatcherRewardReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
var req =
|
||||
ActivityTakeWatcherRewardReqOuterClass.ActivityTakeWatcherRewardReq.parseFrom(payload);
|
||||
|
||||
Optional.ofNullable(
|
||||
session
|
||||
.getPlayer()
|
||||
.getActivityManager()
|
||||
.getPlayerActivityDataMap()
|
||||
.get(req.getActivityId()))
|
||||
.ifPresent(x -> x.takeWatcherReward(req.getWatcherId()));
|
||||
|
||||
session.send(new PacketActivityTakeWatcherRewardRsp(req.getActivityId(), req.getWatcherId()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
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.AddBackupAvatarTeamReq)
|
||||
public class HandlerAddBackupAvatarTeamReq 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.AddBackupAvatarTeamReq)
|
||||
public class HandlerAddBackupAvatarTeamReq extends PacketHandler {
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
session.getPlayer().getTeamManager().addNewCustomTeam();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,33 +1,41 @@
|
||||
package emu.grasscutter.server.packet.recv;
|
||||
|
||||
import emu.grasscutter.data.GameData;
|
||||
import emu.grasscutter.data.excels.QuestData.QuestCondition;
|
||||
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.AddQuestContentProgressReqOuterClass;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketAddQuestContentProgressRsp;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
@Opcodes(PacketOpcodes.AddQuestContentProgressReq)
|
||||
public class HandlerAddQuestContentProgressReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
var req = AddQuestContentProgressReqOuterClass.AddQuestContentProgressReq.parseFrom(payload);
|
||||
//Find all conditions in quest that are the same as the given one
|
||||
Stream<QuestCondition> finishCond = GameData.getQuestDataMap().get(req.getParam()).getFinishCond().stream();
|
||||
Stream<QuestCondition> acceptCond = GameData.getQuestDataMap().get(req.getParam()).getAcceptCond().stream();
|
||||
Stream<QuestCondition> failCond = GameData.getQuestDataMap().get(req.getParam()).getFailCond().stream();
|
||||
List<QuestCondition> allCondMatch = Stream.concat(Stream.concat(acceptCond, failCond), finishCond).filter(p -> p.getType().getValue() == req.getContentType()).toList();
|
||||
for (QuestCondition cond : allCondMatch) {
|
||||
session.getPlayer().getQuestManager().triggerEvent(QuestTrigger.getContentTriggerByValue(req.getContentType()), cond.getParam());
|
||||
}
|
||||
session.send(new PacketAddQuestContentProgressRsp(req.getContentType()));
|
||||
}
|
||||
|
||||
}
|
||||
package emu.grasscutter.server.packet.recv;
|
||||
|
||||
import emu.grasscutter.data.GameData;
|
||||
import emu.grasscutter.data.excels.QuestData.QuestCondition;
|
||||
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.AddQuestContentProgressReqOuterClass;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketAddQuestContentProgressRsp;
|
||||
import java.util.List;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
@Opcodes(PacketOpcodes.AddQuestContentProgressReq)
|
||||
public class HandlerAddQuestContentProgressReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
var req = AddQuestContentProgressReqOuterClass.AddQuestContentProgressReq.parseFrom(payload);
|
||||
// Find all conditions in quest that are the same as the given one
|
||||
Stream<QuestCondition> finishCond =
|
||||
GameData.getQuestDataMap().get(req.getParam()).getFinishCond().stream();
|
||||
Stream<QuestCondition> acceptCond =
|
||||
GameData.getQuestDataMap().get(req.getParam()).getAcceptCond().stream();
|
||||
Stream<QuestCondition> failCond =
|
||||
GameData.getQuestDataMap().get(req.getParam()).getFailCond().stream();
|
||||
List<QuestCondition> allCondMatch =
|
||||
Stream.concat(Stream.concat(acceptCond, failCond), finishCond)
|
||||
.filter(p -> p.getType().getValue() == req.getContentType())
|
||||
.toList();
|
||||
for (QuestCondition cond : allCondMatch) {
|
||||
session
|
||||
.getPlayer()
|
||||
.getQuestManager()
|
||||
.triggerEvent(
|
||||
QuestTrigger.getContentTriggerByValue(req.getContentType()), cond.getParam());
|
||||
}
|
||||
session.send(new PacketAddQuestContentProgressRsp(req.getContentType()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,19 +1,18 @@
|
||||
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.AskAddFriendReqOuterClass.AskAddFriendReq;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
|
||||
@Opcodes(PacketOpcodes.AskAddFriendReq)
|
||||
public class HandlerAskAddFriendReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
AskAddFriendReq req = AskAddFriendReq.parseFrom(payload);
|
||||
|
||||
session.getPlayer().getFriendsList().sendFriendRequest(req.getTargetUid());
|
||||
}
|
||||
|
||||
}
|
||||
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.AskAddFriendReqOuterClass.AskAddFriendReq;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
|
||||
@Opcodes(PacketOpcodes.AskAddFriendReq)
|
||||
public class HandlerAskAddFriendReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
AskAddFriendReq req = AskAddFriendReq.parseFrom(payload);
|
||||
|
||||
session.getPlayer().getFriendsList().sendFriendRequest(req.getTargetUid());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,26 +1,28 @@
|
||||
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.AvatarChangeCostumeReqOuterClass.AvatarChangeCostumeReq;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketAvatarChangeCostumeRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.AvatarChangeCostumeReq)
|
||||
public class HandlerAvatarChangeCostumeReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
AvatarChangeCostumeReq req = AvatarChangeCostumeReq.parseFrom(payload);
|
||||
|
||||
boolean success = session.getPlayer().getAvatars().changeCostume(req.getAvatarGuid(), req.getCostumeId());
|
||||
|
||||
if (success) {
|
||||
session.getPlayer().sendPacket(new PacketAvatarChangeCostumeRsp(req.getAvatarGuid(), req.getCostumeId()));
|
||||
} else {
|
||||
session.getPlayer().sendPacket(new PacketAvatarChangeCostumeRsp());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
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.AvatarChangeCostumeReqOuterClass.AvatarChangeCostumeReq;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketAvatarChangeCostumeRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.AvatarChangeCostumeReq)
|
||||
public class HandlerAvatarChangeCostumeReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
AvatarChangeCostumeReq req = AvatarChangeCostumeReq.parseFrom(payload);
|
||||
|
||||
boolean success =
|
||||
session.getPlayer().getAvatars().changeCostume(req.getAvatarGuid(), req.getCostumeId());
|
||||
|
||||
if (success) {
|
||||
session
|
||||
.getPlayer()
|
||||
.sendPacket(new PacketAvatarChangeCostumeRsp(req.getAvatarGuid(), req.getCostumeId()));
|
||||
} else {
|
||||
session.getPlayer().sendPacket(new PacketAvatarChangeCostumeRsp());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,67 +1,69 @@
|
||||
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.game.avatar.Avatar;
|
||||
import emu.grasscutter.game.entity.EntityAvatar;
|
||||
import emu.grasscutter.net.packet.Opcodes;
|
||||
import emu.grasscutter.net.packet.PacketHandler;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.AvatarChangeElementTypeReqOuterClass.AvatarChangeElementTypeReq;
|
||||
import emu.grasscutter.net.proto.RetcodeOuterClass.Retcode;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketAbilityChangeNotify;
|
||||
import emu.grasscutter.server.packet.send.PacketAvatarChangeElementTypeRsp;
|
||||
import emu.grasscutter.server.packet.send.PacketAvatarFightPropNotify;
|
||||
import emu.grasscutter.server.packet.send.PacketAvatarSkillDepotChangeNotify;
|
||||
|
||||
@Opcodes(PacketOpcodes.AvatarChangeElementTypeReq)
|
||||
public class HandlerAvatarChangeElementTypeReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
AvatarChangeElementTypeReq req = AvatarChangeElementTypeReq.parseFrom(payload);
|
||||
|
||||
WorldAreaData area = GameData.getWorldAreaDataMap().get(req.getAreaId());
|
||||
|
||||
if (area == null || area.getElementType() == null || area.getElementType().getDepotValue() <= 0) {
|
||||
session.send(new PacketAvatarChangeElementTypeRsp(Retcode.RET_SVR_ERROR_VALUE));
|
||||
return;
|
||||
}
|
||||
|
||||
// Get current avatar, should be one of the main characters
|
||||
EntityAvatar mainCharacterEntity = session.getPlayer().getTeamManager().getCurrentAvatarEntity();
|
||||
Avatar mainCharacter = mainCharacterEntity.getAvatar();
|
||||
|
||||
int skillDepotId = area.getElementType().getDepotValue();
|
||||
switch (mainCharacter.getAvatarId()) {
|
||||
case GameConstants.MAIN_CHARACTER_MALE -> skillDepotId += 500;
|
||||
case GameConstants.MAIN_CHARACTER_FEMALE -> skillDepotId += 700;
|
||||
default -> {
|
||||
session.send(new PacketAvatarChangeElementTypeRsp(Retcode.RET_SVR_ERROR_VALUE));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// Sanity checks for skill depots
|
||||
AvatarSkillDepotData skillDepot = GameData.getAvatarSkillDepotDataMap().get(skillDepotId);
|
||||
if (skillDepot == null || skillDepot.getId() == mainCharacter.getSkillDepotId()) {
|
||||
session.send(new PacketAvatarChangeElementTypeRsp(Retcode.RET_SVR_ERROR_VALUE));
|
||||
return;
|
||||
}
|
||||
|
||||
// Set skill depot
|
||||
mainCharacter.setSkillDepotData(skillDepot);
|
||||
|
||||
// Success
|
||||
session.send(new PacketAvatarChangeElementTypeRsp());
|
||||
|
||||
// Ability change packet
|
||||
session.send(new PacketAvatarSkillDepotChangeNotify(mainCharacter));
|
||||
session.send(new PacketAbilityChangeNotify(mainCharacterEntity));
|
||||
session.send(new PacketAvatarFightPropNotify(mainCharacter));
|
||||
}
|
||||
|
||||
}
|
||||
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.game.avatar.Avatar;
|
||||
import emu.grasscutter.game.entity.EntityAvatar;
|
||||
import emu.grasscutter.net.packet.Opcodes;
|
||||
import emu.grasscutter.net.packet.PacketHandler;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.AvatarChangeElementTypeReqOuterClass.AvatarChangeElementTypeReq;
|
||||
import emu.grasscutter.net.proto.RetcodeOuterClass.Retcode;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketAbilityChangeNotify;
|
||||
import emu.grasscutter.server.packet.send.PacketAvatarChangeElementTypeRsp;
|
||||
import emu.grasscutter.server.packet.send.PacketAvatarFightPropNotify;
|
||||
import emu.grasscutter.server.packet.send.PacketAvatarSkillDepotChangeNotify;
|
||||
|
||||
@Opcodes(PacketOpcodes.AvatarChangeElementTypeReq)
|
||||
public class HandlerAvatarChangeElementTypeReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
AvatarChangeElementTypeReq req = AvatarChangeElementTypeReq.parseFrom(payload);
|
||||
|
||||
WorldAreaData area = GameData.getWorldAreaDataMap().get(req.getAreaId());
|
||||
|
||||
if (area == null
|
||||
|| area.getElementType() == null
|
||||
|| area.getElementType().getDepotValue() <= 0) {
|
||||
session.send(new PacketAvatarChangeElementTypeRsp(Retcode.RET_SVR_ERROR_VALUE));
|
||||
return;
|
||||
}
|
||||
|
||||
// Get current avatar, should be one of the main characters
|
||||
EntityAvatar mainCharacterEntity =
|
||||
session.getPlayer().getTeamManager().getCurrentAvatarEntity();
|
||||
Avatar mainCharacter = mainCharacterEntity.getAvatar();
|
||||
|
||||
int skillDepotId = area.getElementType().getDepotValue();
|
||||
switch (mainCharacter.getAvatarId()) {
|
||||
case GameConstants.MAIN_CHARACTER_MALE -> skillDepotId += 500;
|
||||
case GameConstants.MAIN_CHARACTER_FEMALE -> skillDepotId += 700;
|
||||
default -> {
|
||||
session.send(new PacketAvatarChangeElementTypeRsp(Retcode.RET_SVR_ERROR_VALUE));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// Sanity checks for skill depots
|
||||
AvatarSkillDepotData skillDepot = GameData.getAvatarSkillDepotDataMap().get(skillDepotId);
|
||||
if (skillDepot == null || skillDepot.getId() == mainCharacter.getSkillDepotId()) {
|
||||
session.send(new PacketAvatarChangeElementTypeRsp(Retcode.RET_SVR_ERROR_VALUE));
|
||||
return;
|
||||
}
|
||||
|
||||
// Set skill depot
|
||||
mainCharacter.setSkillDepotData(skillDepot);
|
||||
|
||||
// Success
|
||||
session.send(new PacketAvatarChangeElementTypeRsp());
|
||||
|
||||
// Ability change packet
|
||||
session.send(new PacketAvatarSkillDepotChangeNotify(mainCharacter));
|
||||
session.send(new PacketAbilityChangeNotify(mainCharacterEntity));
|
||||
session.send(new PacketAvatarFightPropNotify(mainCharacter));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,19 +1,18 @@
|
||||
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.AvatarDieAnimationEndReqOuterClass.AvatarDieAnimationEndReq;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
|
||||
@Opcodes(PacketOpcodes.AvatarDieAnimationEndReq)
|
||||
public class HandlerAvatarDieAnimationEndReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
AvatarDieAnimationEndReq req = AvatarDieAnimationEndReq.parseFrom(payload);
|
||||
|
||||
session.getPlayer().getTeamManager().onAvatarDie(req.getDieGuid());
|
||||
}
|
||||
|
||||
}
|
||||
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.AvatarDieAnimationEndReqOuterClass.AvatarDieAnimationEndReq;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
|
||||
@Opcodes(PacketOpcodes.AvatarDieAnimationEndReq)
|
||||
public class HandlerAvatarDieAnimationEndReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
AvatarDieAnimationEndReq req = AvatarDieAnimationEndReq.parseFrom(payload);
|
||||
|
||||
session.getPlayer().getTeamManager().onAvatarDie(req.getDieGuid());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,16 +1,18 @@
|
||||
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.PacketAvatarExpeditionAllDataRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.AvatarExpeditionAllDataReq)
|
||||
public class HandlerAvatarExpeditionAllDataReq extends PacketHandler {
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
var player = session.getPlayer();
|
||||
session.send(new PacketAvatarExpeditionAllDataRsp(player.getExpeditionInfo(), player.getExpeditionLimit()));
|
||||
}
|
||||
}
|
||||
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.PacketAvatarExpeditionAllDataRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.AvatarExpeditionAllDataReq)
|
||||
public class HandlerAvatarExpeditionAllDataReq extends PacketHandler {
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
var player = session.getPlayer();
|
||||
session.send(
|
||||
new PacketAvatarExpeditionAllDataRsp(
|
||||
player.getExpeditionInfo(), player.getExpeditionLimit()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,44 +1,47 @@
|
||||
package emu.grasscutter.server.packet.recv;
|
||||
|
||||
import emu.grasscutter.game.expedition.ExpeditionInfo;
|
||||
import emu.grasscutter.game.expedition.ExpeditionRewardDataList;
|
||||
import emu.grasscutter.game.inventory.GameItem;
|
||||
import emu.grasscutter.game.props.ActionReason;
|
||||
import emu.grasscutter.net.packet.Opcodes;
|
||||
import emu.grasscutter.net.packet.PacketHandler;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.AvatarExpeditionGetRewardReqOuterClass.AvatarExpeditionGetRewardReq;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketAvatarExpeditionGetRewardRsp;
|
||||
import emu.grasscutter.server.packet.send.PacketItemAddHintNotify;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Opcodes(PacketOpcodes.AvatarExpeditionGetRewardReq)
|
||||
public class HandlerAvatarExpeditionGetRewardReq extends PacketHandler {
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
AvatarExpeditionGetRewardReq req = AvatarExpeditionGetRewardReq.parseFrom(payload);
|
||||
var player = session.getPlayer();
|
||||
|
||||
ExpeditionInfo expInfo = player.getExpeditionInfo(req.getAvatarGuid());
|
||||
List<GameItem> items = new ArrayList<>();
|
||||
List<ExpeditionRewardDataList> expeditionRewardDataLists = session.getServer().getExpeditionSystem().getExpeditionRewardDataList().get(expInfo.getExpId());
|
||||
|
||||
if (expeditionRewardDataLists != null) {
|
||||
expeditionRewardDataLists.stream()
|
||||
.filter(r -> r.getHourTime() == expInfo.getHourTime())
|
||||
.map(ExpeditionRewardDataList::getRewards)
|
||||
.forEach(items::addAll);
|
||||
}
|
||||
|
||||
player.getInventory().addItems(items);
|
||||
player.sendPacket(new PacketItemAddHintNotify(items, ActionReason.ExpeditionReward));
|
||||
|
||||
player.removeExpeditionInfo(req.getAvatarGuid());
|
||||
player.save();
|
||||
session.send(new PacketAvatarExpeditionGetRewardRsp(player.getExpeditionInfo(), items));
|
||||
}
|
||||
}
|
||||
|
||||
package emu.grasscutter.server.packet.recv;
|
||||
|
||||
import emu.grasscutter.game.expedition.ExpeditionInfo;
|
||||
import emu.grasscutter.game.expedition.ExpeditionRewardDataList;
|
||||
import emu.grasscutter.game.inventory.GameItem;
|
||||
import emu.grasscutter.game.props.ActionReason;
|
||||
import emu.grasscutter.net.packet.Opcodes;
|
||||
import emu.grasscutter.net.packet.PacketHandler;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.AvatarExpeditionGetRewardReqOuterClass.AvatarExpeditionGetRewardReq;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketAvatarExpeditionGetRewardRsp;
|
||||
import emu.grasscutter.server.packet.send.PacketItemAddHintNotify;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Opcodes(PacketOpcodes.AvatarExpeditionGetRewardReq)
|
||||
public class HandlerAvatarExpeditionGetRewardReq extends PacketHandler {
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
AvatarExpeditionGetRewardReq req = AvatarExpeditionGetRewardReq.parseFrom(payload);
|
||||
var player = session.getPlayer();
|
||||
|
||||
ExpeditionInfo expInfo = player.getExpeditionInfo(req.getAvatarGuid());
|
||||
List<GameItem> items = new ArrayList<>();
|
||||
List<ExpeditionRewardDataList> expeditionRewardDataLists =
|
||||
session
|
||||
.getServer()
|
||||
.getExpeditionSystem()
|
||||
.getExpeditionRewardDataList()
|
||||
.get(expInfo.getExpId());
|
||||
|
||||
if (expeditionRewardDataLists != null) {
|
||||
expeditionRewardDataLists.stream()
|
||||
.filter(r -> r.getHourTime() == expInfo.getHourTime())
|
||||
.map(ExpeditionRewardDataList::getRewards)
|
||||
.forEach(items::addAll);
|
||||
}
|
||||
|
||||
player.getInventory().addItems(items);
|
||||
player.sendPacket(new PacketItemAddHintNotify(items, ActionReason.ExpeditionReward));
|
||||
|
||||
player.removeExpeditionInfo(req.getAvatarGuid());
|
||||
player.save();
|
||||
session.send(new PacketAvatarExpeditionGetRewardRsp(player.getExpeditionInfo(), items));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,53 +1,55 @@
|
||||
package emu.grasscutter.server.packet.recv;
|
||||
|
||||
import emu.grasscutter.data.GameData;
|
||||
import emu.grasscutter.data.excels.RewardData;
|
||||
import emu.grasscutter.game.avatar.Avatar;
|
||||
import emu.grasscutter.game.inventory.GameItem;
|
||||
import emu.grasscutter.game.props.ActionReason;
|
||||
import emu.grasscutter.net.packet.Opcodes;
|
||||
import emu.grasscutter.net.packet.PacketHandler;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketAvatarDataNotify;
|
||||
import emu.grasscutter.server.packet.send.PacketAvatarFetterDataNotify;
|
||||
import emu.grasscutter.server.packet.send.PacketAvatarFetterLevelRewardRsp;
|
||||
import emu.grasscutter.server.packet.send.PacketUnlockNameCardNotify;
|
||||
|
||||
@Opcodes(PacketOpcodes.AvatarFetterLevelRewardReq)
|
||||
public class HandlerAvatarFetterLevelRewardReq extends PacketHandler {
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
AvatarFetterLevelRewardReq req = AvatarFetterLevelRewardReq.parseFrom(payload);
|
||||
if (req.getFetterLevel() < 10) {
|
||||
// You don't have a full level of fetter level, why do you want to get a divorce certificate?
|
||||
session.send(new PacketAvatarFetterLevelRewardRsp(req.getAvatarGuid(), req.getFetterLevel()));
|
||||
} else {
|
||||
long avatarGuid = req.getAvatarGuid();
|
||||
|
||||
Avatar avatar = session
|
||||
.getPlayer()
|
||||
.getAvatars()
|
||||
.getAvatarByGuid(avatarGuid);
|
||||
|
||||
int rewardId = avatar.getNameCardRewardId();
|
||||
|
||||
RewardData card = GameData.getRewardDataMap().get(rewardId);
|
||||
int cardId = card.getRewardItemList().get(0).getItemId();
|
||||
|
||||
if (session.getPlayer().getNameCardList().contains(cardId)) {
|
||||
// Already got divorce certificate.
|
||||
session.getPlayer().sendPacket(new PacketAvatarFetterLevelRewardRsp(req.getAvatarGuid(), req.getFetterLevel(), rewardId));
|
||||
return;
|
||||
}
|
||||
|
||||
GameItem item = new GameItem(cardId);
|
||||
session.getPlayer().getInventory().addItem(item, ActionReason.FetterLevelReward);
|
||||
session.getPlayer().sendPacket(new PacketUnlockNameCardNotify(cardId));
|
||||
session.send(new PacketAvatarFetterDataNotify(avatar));
|
||||
session.send(new PacketAvatarDataNotify(avatar.getPlayer()));
|
||||
session.send(new PacketAvatarFetterLevelRewardRsp(avatarGuid, req.getFetterLevel(), rewardId));
|
||||
}
|
||||
}
|
||||
}
|
||||
package emu.grasscutter.server.packet.recv;
|
||||
|
||||
import emu.grasscutter.data.GameData;
|
||||
import emu.grasscutter.data.excels.RewardData;
|
||||
import emu.grasscutter.game.avatar.Avatar;
|
||||
import emu.grasscutter.game.inventory.GameItem;
|
||||
import emu.grasscutter.game.props.ActionReason;
|
||||
import emu.grasscutter.net.packet.Opcodes;
|
||||
import emu.grasscutter.net.packet.PacketHandler;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketAvatarDataNotify;
|
||||
import emu.grasscutter.server.packet.send.PacketAvatarFetterDataNotify;
|
||||
import emu.grasscutter.server.packet.send.PacketAvatarFetterLevelRewardRsp;
|
||||
import emu.grasscutter.server.packet.send.PacketUnlockNameCardNotify;
|
||||
|
||||
@Opcodes(PacketOpcodes.AvatarFetterLevelRewardReq)
|
||||
public class HandlerAvatarFetterLevelRewardReq extends PacketHandler {
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
AvatarFetterLevelRewardReq req = AvatarFetterLevelRewardReq.parseFrom(payload);
|
||||
if (req.getFetterLevel() < 10) {
|
||||
// You don't have a full level of fetter level, why do you want to get a divorce certificate?
|
||||
session.send(new PacketAvatarFetterLevelRewardRsp(req.getAvatarGuid(), req.getFetterLevel()));
|
||||
} else {
|
||||
long avatarGuid = req.getAvatarGuid();
|
||||
|
||||
Avatar avatar = session.getPlayer().getAvatars().getAvatarByGuid(avatarGuid);
|
||||
|
||||
int rewardId = avatar.getNameCardRewardId();
|
||||
|
||||
RewardData card = GameData.getRewardDataMap().get(rewardId);
|
||||
int cardId = card.getRewardItemList().get(0).getItemId();
|
||||
|
||||
if (session.getPlayer().getNameCardList().contains(cardId)) {
|
||||
// Already got divorce certificate.
|
||||
session
|
||||
.getPlayer()
|
||||
.sendPacket(
|
||||
new PacketAvatarFetterLevelRewardRsp(
|
||||
req.getAvatarGuid(), req.getFetterLevel(), rewardId));
|
||||
return;
|
||||
}
|
||||
|
||||
GameItem item = new GameItem(cardId);
|
||||
session.getPlayer().getInventory().addItem(item, ActionReason.FetterLevelReward);
|
||||
session.getPlayer().sendPacket(new PacketUnlockNameCardNotify(cardId));
|
||||
session.send(new PacketAvatarFetterDataNotify(avatar));
|
||||
session.send(new PacketAvatarDataNotify(avatar.getPlayer()));
|
||||
session.send(
|
||||
new PacketAvatarFetterLevelRewardRsp(avatarGuid, req.getFetterLevel(), rewardId));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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.AvatarPromoteReqOuterClass.AvatarPromoteReq;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
|
||||
@Opcodes(PacketOpcodes.AvatarPromoteReq)
|
||||
public class HandlerAvatarPromoteReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
AvatarPromoteReq req = AvatarPromoteReq.parseFrom(payload);
|
||||
|
||||
// Ascend avatar
|
||||
session.getServer().getInventorySystem().promoteAvatar(session.getPlayer(), req.getGuid());
|
||||
}
|
||||
|
||||
}
|
||||
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.AvatarPromoteReqOuterClass.AvatarPromoteReq;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
|
||||
@Opcodes(PacketOpcodes.AvatarPromoteReq)
|
||||
public class HandlerAvatarPromoteReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
AvatarPromoteReq req = AvatarPromoteReq.parseFrom(payload);
|
||||
|
||||
// Ascend avatar
|
||||
session.getServer().getInventorySystem().promoteAvatar(session.getPlayer(), req.getGuid());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,22 +1,22 @@
|
||||
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.AvatarSkillUpgradeReqOuterClass.AvatarSkillUpgradeReq;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
|
||||
@Opcodes(PacketOpcodes.AvatarSkillUpgradeReq)
|
||||
public class HandlerAvatarSkillUpgradeReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
AvatarSkillUpgradeReq req = AvatarSkillUpgradeReq.parseFrom(payload);
|
||||
|
||||
// Sanity checks
|
||||
var avatar = session.getPlayer().getAvatars().getAvatarByGuid(req.getAvatarGuid());
|
||||
if (avatar == null) return;
|
||||
// Level up avatar talent
|
||||
avatar.upgradeSkill(req.getAvatarSkillId());
|
||||
}
|
||||
}
|
||||
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.AvatarSkillUpgradeReqOuterClass.AvatarSkillUpgradeReq;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
|
||||
@Opcodes(PacketOpcodes.AvatarSkillUpgradeReq)
|
||||
public class HandlerAvatarSkillUpgradeReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
AvatarSkillUpgradeReq req = AvatarSkillUpgradeReq.parseFrom(payload);
|
||||
|
||||
// Sanity checks
|
||||
var avatar = session.getPlayer().getAvatars().getAvatarByGuid(req.getAvatarGuid());
|
||||
if (avatar == null) return;
|
||||
// Level up avatar talent
|
||||
avatar.upgradeSkill(req.getAvatarSkillId());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,25 +1,22 @@
|
||||
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.AvatarUpgradeReqOuterClass.AvatarUpgradeReq;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
|
||||
@Opcodes(PacketOpcodes.AvatarUpgradeReq)
|
||||
public class HandlerAvatarUpgradeReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
AvatarUpgradeReq req = AvatarUpgradeReq.parseFrom(payload);
|
||||
|
||||
// Level up avatar
|
||||
session.getServer().getInventorySystem().upgradeAvatar(
|
||||
session.getPlayer(),
|
||||
req.getAvatarGuid(),
|
||||
req.getItemId(),
|
||||
req.getCount()
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
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.AvatarUpgradeReqOuterClass.AvatarUpgradeReq;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
|
||||
@Opcodes(PacketOpcodes.AvatarUpgradeReq)
|
||||
public class HandlerAvatarUpgradeReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
AvatarUpgradeReq req = AvatarUpgradeReq.parseFrom(payload);
|
||||
|
||||
// Level up avatar
|
||||
session
|
||||
.getServer()
|
||||
.getInventorySystem()
|
||||
.upgradeAvatar(session.getPlayer(), req.getAvatarGuid(), req.getItemId(), req.getCount());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,24 +1,27 @@
|
||||
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.AvatarWearFlycloakReqOuterClass.AvatarWearFlycloakReq;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketAvatarWearFlycloakRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.AvatarWearFlycloakReq)
|
||||
public class HandlerAvatarWearFlycloakReq extends PacketHandler {
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
AvatarWearFlycloakReq req = AvatarWearFlycloakReq.parseFrom(payload);
|
||||
|
||||
boolean success = session.getPlayer().getAvatars().wearFlycloak(req.getAvatarGuid(), req.getFlycloakId());
|
||||
|
||||
if (success) {
|
||||
session.getPlayer().sendPacket(new PacketAvatarWearFlycloakRsp(req.getAvatarGuid(), req.getFlycloakId()));
|
||||
} else {
|
||||
session.getPlayer().sendPacket(new PacketAvatarWearFlycloakRsp());
|
||||
}
|
||||
}
|
||||
}
|
||||
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.AvatarWearFlycloakReqOuterClass.AvatarWearFlycloakReq;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketAvatarWearFlycloakRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.AvatarWearFlycloakReq)
|
||||
public class HandlerAvatarWearFlycloakReq extends PacketHandler {
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
AvatarWearFlycloakReq req = AvatarWearFlycloakReq.parseFrom(payload);
|
||||
|
||||
boolean success =
|
||||
session.getPlayer().getAvatars().wearFlycloak(req.getAvatarGuid(), req.getFlycloakId());
|
||||
|
||||
if (success) {
|
||||
session
|
||||
.getPlayer()
|
||||
.sendPacket(new PacketAvatarWearFlycloakRsp(req.getAvatarGuid(), req.getFlycloakId()));
|
||||
} else {
|
||||
session.getPlayer().sendPacket(new PacketAvatarWearFlycloakRsp());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,33 +1,35 @@
|
||||
package emu.grasscutter.server.packet.recv;
|
||||
|
||||
import emu.grasscutter.game.world.Scene;
|
||||
import emu.grasscutter.net.packet.Opcodes;
|
||||
import emu.grasscutter.net.packet.PacketHandler;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.server.event.player.PlayerTeleportEvent.TeleportType;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketBackMyWorldRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.BackMyWorldReq)
|
||||
public class HandlerBackMyWorldReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
Scene scene = session.getPlayer().getScene();
|
||||
int prevScene = scene.getPrevScene();
|
||||
|
||||
// Sanity check for switching between teapot realms
|
||||
if (prevScene >= 2000 && prevScene <= 2400) {
|
||||
prevScene = 3;
|
||||
}
|
||||
|
||||
session.getPlayer().getWorld().transferPlayerToScene(
|
||||
session.getPlayer(),
|
||||
prevScene,
|
||||
TeleportType.WAYPOINT,
|
||||
session.getPlayer().getPrevPos());
|
||||
|
||||
session.send(new PacketBackMyWorldRsp());
|
||||
}
|
||||
|
||||
}
|
||||
package emu.grasscutter.server.packet.recv;
|
||||
|
||||
import emu.grasscutter.game.world.Scene;
|
||||
import emu.grasscutter.net.packet.Opcodes;
|
||||
import emu.grasscutter.net.packet.PacketHandler;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.server.event.player.PlayerTeleportEvent.TeleportType;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketBackMyWorldRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.BackMyWorldReq)
|
||||
public class HandlerBackMyWorldReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
Scene scene = session.getPlayer().getScene();
|
||||
int prevScene = scene.getPrevScene();
|
||||
|
||||
// Sanity check for switching between teapot realms
|
||||
if (prevScene >= 2000 && prevScene <= 2400) {
|
||||
prevScene = 3;
|
||||
}
|
||||
|
||||
session
|
||||
.getPlayer()
|
||||
.getWorld()
|
||||
.transferPlayerToScene(
|
||||
session.getPlayer(),
|
||||
prevScene,
|
||||
TeleportType.WAYPOINT,
|
||||
session.getPlayer().getPrevPos());
|
||||
|
||||
session.send(new PacketBackMyWorldRsp());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,22 +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.BuyBattlePassLevelReqOuterClass.BuyBattlePassLevelReq;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketBuyBattlePassLevelRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.BuyBattlePassLevelReq)
|
||||
public class HandlerBuyBattlePassLevelReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
BuyBattlePassLevelReq req = BuyBattlePassLevelReq.parseFrom(payload);
|
||||
|
||||
int buyLevel = session.getPlayer().getBattlePassManager().buyLevels(req.getBuyLevel());
|
||||
|
||||
session.send(new PacketBuyBattlePassLevelRsp(buyLevel));
|
||||
}
|
||||
|
||||
}
|
||||
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.BuyBattlePassLevelReqOuterClass.BuyBattlePassLevelReq;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketBuyBattlePassLevelRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.BuyBattlePassLevelReq)
|
||||
public class HandlerBuyBattlePassLevelReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
BuyBattlePassLevelReq req = BuyBattlePassLevelReq.parseFrom(payload);
|
||||
|
||||
int buyLevel = session.getPlayer().getBattlePassManager().buyLevels(req.getBuyLevel());
|
||||
|
||||
session.send(new PacketBuyBattlePassLevelRsp(buyLevel));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,73 +1,87 @@
|
||||
package emu.grasscutter.server.packet.recv;
|
||||
|
||||
import emu.grasscutter.data.common.ItemParamData;
|
||||
import emu.grasscutter.game.inventory.GameItem;
|
||||
import emu.grasscutter.game.props.ActionReason;
|
||||
import emu.grasscutter.game.shop.ShopInfo;
|
||||
import emu.grasscutter.game.shop.ShopLimit;
|
||||
import emu.grasscutter.game.shop.ShopSystem;
|
||||
import emu.grasscutter.net.packet.Opcodes;
|
||||
import emu.grasscutter.net.packet.PacketHandler;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.BuyGoodsReqOuterClass;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketBuyGoodsRsp;
|
||||
import emu.grasscutter.utils.Utils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
@Opcodes(PacketOpcodes.BuyGoodsReq)
|
||||
public class HandlerBuyGoodsReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
BuyGoodsReqOuterClass.BuyGoodsReq buyGoodsReq = BuyGoodsReqOuterClass.BuyGoodsReq.parseFrom(payload);
|
||||
List<ShopInfo> configShop = session.getServer().getShopSystem().getShopData().get(buyGoodsReq.getShopType());
|
||||
if (configShop == null)
|
||||
return;
|
||||
|
||||
// Don't trust your users' input
|
||||
var player = session.getPlayer();
|
||||
List<Integer> targetShopGoodsId = List.of(buyGoodsReq.getGoods().getGoodsId());
|
||||
for (int goodsId : targetShopGoodsId) {
|
||||
Optional<ShopInfo> sg2 = configShop.stream().filter(x -> x.getGoodsId() == goodsId).findFirst();
|
||||
if (sg2.isEmpty())
|
||||
continue;
|
||||
ShopInfo sg = sg2.get();
|
||||
|
||||
int currentTs = Utils.getCurrentSeconds();
|
||||
ShopLimit shopLimit = player.getGoodsLimit(sg.getGoodsId());
|
||||
int bought = 0;
|
||||
if (shopLimit != null) {
|
||||
if (currentTs > shopLimit.getNextRefreshTime()) {
|
||||
shopLimit.setNextRefreshTime(ShopSystem.getShopNextRefreshTime(sg));
|
||||
} else {
|
||||
bought = shopLimit.getHasBoughtInPeriod();
|
||||
}
|
||||
player.save();
|
||||
}
|
||||
|
||||
if ((bought + buyGoodsReq.getBuyCount() > sg.getBuyLimit()) && sg.getBuyLimit() != 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
List<ItemParamData> costs = new ArrayList<ItemParamData>(sg.getCostItemList()); // Can this even be null?
|
||||
costs.add(new ItemParamData(202, sg.getScoin()));
|
||||
costs.add(new ItemParamData(201, sg.getHcoin()));
|
||||
costs.add(new ItemParamData(203, sg.getMcoin()));
|
||||
if (!player.getInventory().payItems(costs, buyGoodsReq.getBuyCount())) {
|
||||
return;
|
||||
}
|
||||
|
||||
player.addShopLimit(sg.getGoodsId(), buyGoodsReq.getBuyCount(), ShopSystem.getShopNextRefreshTime(sg));
|
||||
GameItem item = new GameItem(sg.getGoodsItem().getId(), buyGoodsReq.getBuyCount() * sg.getGoodsItem().getCount());
|
||||
player.getInventory().addItem(item, ActionReason.Shop, true); // fix: not notify when got virtual item from shop
|
||||
session.send(new PacketBuyGoodsRsp(buyGoodsReq.getShopType(), player.getGoodsLimit(sg.getGoodsId()).getHasBoughtInPeriod(), Stream.of(buyGoodsReq.getGoods()).filter(x -> x.getGoodsId() == goodsId).findFirst().get()));
|
||||
}
|
||||
|
||||
player.save();
|
||||
}
|
||||
}
|
||||
package emu.grasscutter.server.packet.recv;
|
||||
|
||||
import emu.grasscutter.data.common.ItemParamData;
|
||||
import emu.grasscutter.game.inventory.GameItem;
|
||||
import emu.grasscutter.game.props.ActionReason;
|
||||
import emu.grasscutter.game.shop.ShopInfo;
|
||||
import emu.grasscutter.game.shop.ShopLimit;
|
||||
import emu.grasscutter.game.shop.ShopSystem;
|
||||
import emu.grasscutter.net.packet.Opcodes;
|
||||
import emu.grasscutter.net.packet.PacketHandler;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.BuyGoodsReqOuterClass;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketBuyGoodsRsp;
|
||||
import emu.grasscutter.utils.Utils;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
@Opcodes(PacketOpcodes.BuyGoodsReq)
|
||||
public class HandlerBuyGoodsReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
BuyGoodsReqOuterClass.BuyGoodsReq buyGoodsReq =
|
||||
BuyGoodsReqOuterClass.BuyGoodsReq.parseFrom(payload);
|
||||
List<ShopInfo> configShop =
|
||||
session.getServer().getShopSystem().getShopData().get(buyGoodsReq.getShopType());
|
||||
if (configShop == null) return;
|
||||
|
||||
// Don't trust your users' input
|
||||
var player = session.getPlayer();
|
||||
List<Integer> targetShopGoodsId = List.of(buyGoodsReq.getGoods().getGoodsId());
|
||||
for (int goodsId : targetShopGoodsId) {
|
||||
Optional<ShopInfo> sg2 =
|
||||
configShop.stream().filter(x -> x.getGoodsId() == goodsId).findFirst();
|
||||
if (sg2.isEmpty()) continue;
|
||||
ShopInfo sg = sg2.get();
|
||||
|
||||
int currentTs = Utils.getCurrentSeconds();
|
||||
ShopLimit shopLimit = player.getGoodsLimit(sg.getGoodsId());
|
||||
int bought = 0;
|
||||
if (shopLimit != null) {
|
||||
if (currentTs > shopLimit.getNextRefreshTime()) {
|
||||
shopLimit.setNextRefreshTime(ShopSystem.getShopNextRefreshTime(sg));
|
||||
} else {
|
||||
bought = shopLimit.getHasBoughtInPeriod();
|
||||
}
|
||||
player.save();
|
||||
}
|
||||
|
||||
if ((bought + buyGoodsReq.getBuyCount() > sg.getBuyLimit()) && sg.getBuyLimit() != 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
List<ItemParamData> costs =
|
||||
new ArrayList<ItemParamData>(sg.getCostItemList()); // Can this even be null?
|
||||
costs.add(new ItemParamData(202, sg.getScoin()));
|
||||
costs.add(new ItemParamData(201, sg.getHcoin()));
|
||||
costs.add(new ItemParamData(203, sg.getMcoin()));
|
||||
if (!player.getInventory().payItems(costs, buyGoodsReq.getBuyCount())) {
|
||||
return;
|
||||
}
|
||||
|
||||
player.addShopLimit(
|
||||
sg.getGoodsId(), buyGoodsReq.getBuyCount(), ShopSystem.getShopNextRefreshTime(sg));
|
||||
GameItem item =
|
||||
new GameItem(
|
||||
sg.getGoodsItem().getId(), buyGoodsReq.getBuyCount() * sg.getGoodsItem().getCount());
|
||||
player
|
||||
.getInventory()
|
||||
.addItem(
|
||||
item, ActionReason.Shop, true); // fix: not notify when got virtual item from shop
|
||||
session.send(
|
||||
new PacketBuyGoodsRsp(
|
||||
buyGoodsReq.getShopType(),
|
||||
player.getGoodsLimit(sg.getGoodsId()).getHasBoughtInPeriod(),
|
||||
Stream.of(buyGoodsReq.getGoods())
|
||||
.filter(x -> x.getGoodsId() == goodsId)
|
||||
.findFirst()
|
||||
.get()));
|
||||
}
|
||||
|
||||
player.save();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,34 +1,36 @@
|
||||
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.CalcWeaponUpgradeReturnItemsReqOuterClass.CalcWeaponUpgradeReturnItemsReq;
|
||||
import emu.grasscutter.net.proto.ItemParamOuterClass.ItemParam;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketCalcWeaponUpgradeReturnItemsRsp;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Opcodes(PacketOpcodes.CalcWeaponUpgradeReturnItemsReq)
|
||||
public class HandlerCalcWeaponUpgradeReturnItemsReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
CalcWeaponUpgradeReturnItemsReq req = CalcWeaponUpgradeReturnItemsReq.parseFrom(payload);
|
||||
|
||||
List<ItemParam> returnOres = session.getServer().getInventorySystem().calcWeaponUpgradeReturnItems(
|
||||
session.getPlayer(),
|
||||
req.getTargetWeaponGuid(),
|
||||
req.getFoodWeaponGuidListList(),
|
||||
req.getItemParamListList()
|
||||
);
|
||||
|
||||
if (returnOres != null) {
|
||||
session.send(new PacketCalcWeaponUpgradeReturnItemsRsp(req.getTargetWeaponGuid(), returnOres));
|
||||
} else {
|
||||
session.send(new PacketCalcWeaponUpgradeReturnItemsRsp());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
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.CalcWeaponUpgradeReturnItemsReqOuterClass.CalcWeaponUpgradeReturnItemsReq;
|
||||
import emu.grasscutter.net.proto.ItemParamOuterClass.ItemParam;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketCalcWeaponUpgradeReturnItemsRsp;
|
||||
import java.util.List;
|
||||
|
||||
@Opcodes(PacketOpcodes.CalcWeaponUpgradeReturnItemsReq)
|
||||
public class HandlerCalcWeaponUpgradeReturnItemsReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
CalcWeaponUpgradeReturnItemsReq req = CalcWeaponUpgradeReturnItemsReq.parseFrom(payload);
|
||||
|
||||
List<ItemParam> returnOres =
|
||||
session
|
||||
.getServer()
|
||||
.getInventorySystem()
|
||||
.calcWeaponUpgradeReturnItems(
|
||||
session.getPlayer(),
|
||||
req.getTargetWeaponGuid(),
|
||||
req.getFoodWeaponGuidListList(),
|
||||
req.getItemParamListList());
|
||||
|
||||
if (returnOres != null) {
|
||||
session.send(
|
||||
new PacketCalcWeaponUpgradeReturnItemsRsp(req.getTargetWeaponGuid(), returnOres));
|
||||
} else {
|
||||
session.send(new PacketCalcWeaponUpgradeReturnItemsRsp());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,19 +1,18 @@
|
||||
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.ChangeAvatarReqOuterClass.ChangeAvatarReq;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
|
||||
@Opcodes(PacketOpcodes.ChangeAvatarReq)
|
||||
public class HandlerChangeAvatarReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
ChangeAvatarReq req = ChangeAvatarReq.parseFrom(payload);
|
||||
|
||||
session.getPlayer().getTeamManager().changeAvatar(req.getGuid());
|
||||
}
|
||||
|
||||
}
|
||||
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.ChangeAvatarReqOuterClass.ChangeAvatarReq;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
|
||||
@Opcodes(PacketOpcodes.ChangeAvatarReq)
|
||||
public class HandlerChangeAvatarReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
ChangeAvatarReq req = ChangeAvatarReq.parseFrom(payload);
|
||||
|
||||
session.getPlayer().getTeamManager().changeAvatar(req.getGuid());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,25 +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.ChangeGameTimeReqOuterClass.ChangeGameTimeReq;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketChangeGameTimeRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.ChangeGameTimeReq)
|
||||
public class HandlerChangeGameTimeReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
ChangeGameTimeReq 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().sendPacket(new PacketChangeGameTimeRsp(session.getPlayer()));
|
||||
}
|
||||
|
||||
}
|
||||
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.ChangeGameTimeReqOuterClass.ChangeGameTimeReq;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketChangeGameTimeRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.ChangeGameTimeReq)
|
||||
public class HandlerChangeGameTimeReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
ChangeGameTimeReq 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().sendPacket(new PacketChangeGameTimeRsp(session.getPlayer()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,34 +1,34 @@
|
||||
package emu.grasscutter.server.packet.recv;
|
||||
|
||||
import emu.grasscutter.game.mail.Mail;
|
||||
import emu.grasscutter.net.packet.Opcodes;
|
||||
import emu.grasscutter.net.packet.PacketHandler;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.ChangeMailStarNotifyOuterClass;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketMailChangeNotify;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Opcodes(PacketOpcodes.ChangeMailStarNotify)
|
||||
public class HandlerChangeMailStarNotify extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
ChangeMailStarNotifyOuterClass.ChangeMailStarNotify req = ChangeMailStarNotifyOuterClass.ChangeMailStarNotify.parseFrom(payload);
|
||||
|
||||
List<Mail> updatedMail = new ArrayList<>();
|
||||
|
||||
for (int mailId : req.getMailIdListList()) {
|
||||
Mail message = session.getPlayer().getMail(mailId);
|
||||
|
||||
message.importance = req.getIsStar() ? 1 : 0;
|
||||
|
||||
session.getPlayer().replaceMailByIndex(mailId, message);
|
||||
updatedMail.add(message);
|
||||
}
|
||||
|
||||
session.send(new PacketMailChangeNotify(session.getPlayer(), updatedMail));
|
||||
}
|
||||
}
|
||||
package emu.grasscutter.server.packet.recv;
|
||||
|
||||
import emu.grasscutter.game.mail.Mail;
|
||||
import emu.grasscutter.net.packet.Opcodes;
|
||||
import emu.grasscutter.net.packet.PacketHandler;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.ChangeMailStarNotifyOuterClass;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketMailChangeNotify;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Opcodes(PacketOpcodes.ChangeMailStarNotify)
|
||||
public class HandlerChangeMailStarNotify extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
ChangeMailStarNotifyOuterClass.ChangeMailStarNotify req =
|
||||
ChangeMailStarNotifyOuterClass.ChangeMailStarNotify.parseFrom(payload);
|
||||
|
||||
List<Mail> updatedMail = new ArrayList<>();
|
||||
|
||||
for (int mailId : req.getMailIdListList()) {
|
||||
Mail message = session.getPlayer().getMail(mailId);
|
||||
|
||||
message.importance = req.getIsStar() ? 1 : 0;
|
||||
|
||||
session.getPlayer().replaceMailByIndex(mailId, message);
|
||||
updatedMail.add(message);
|
||||
}
|
||||
|
||||
session.send(new PacketMailChangeNotify(session.getPlayer(), updatedMail));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,19 +1,18 @@
|
||||
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.ChangeMpTeamAvatarReqOuterClass.ChangeMpTeamAvatarReq;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
|
||||
@Opcodes(PacketOpcodes.ChangeMpTeamAvatarReq)
|
||||
public class HandlerChangeMpTeamAvatarReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
ChangeMpTeamAvatarReq req = ChangeMpTeamAvatarReq.parseFrom(payload);
|
||||
|
||||
session.getPlayer().getTeamManager().setupMpTeam(req.getAvatarGuidListList());
|
||||
}
|
||||
|
||||
}
|
||||
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.ChangeMpTeamAvatarReqOuterClass.ChangeMpTeamAvatarReq;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
|
||||
@Opcodes(PacketOpcodes.ChangeMpTeamAvatarReq)
|
||||
public class HandlerChangeMpTeamAvatarReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
ChangeMpTeamAvatarReq req = ChangeMpTeamAvatarReq.parseFrom(payload);
|
||||
|
||||
session.getPlayer().getTeamManager().setupMpTeam(req.getAvatarGuidListList());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,19 +1,18 @@
|
||||
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.ChangeTeamNameReqOuterClass.ChangeTeamNameReq;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
|
||||
@Opcodes(PacketOpcodes.ChangeTeamNameReq)
|
||||
public class HandlerChangeTeamNameReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
ChangeTeamNameReq req = ChangeTeamNameReq.parseFrom(payload);
|
||||
|
||||
session.getPlayer().getTeamManager().setTeamName(req.getTeamId(), req.getTeamName());
|
||||
}
|
||||
|
||||
}
|
||||
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.ChangeTeamNameReqOuterClass.ChangeTeamNameReq;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
|
||||
@Opcodes(PacketOpcodes.ChangeTeamNameReq)
|
||||
public class HandlerChangeTeamNameReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
ChangeTeamNameReq req = ChangeTeamNameReq.parseFrom(payload);
|
||||
|
||||
session.getPlayer().getTeamManager().setTeamName(req.getTeamId(), req.getTeamName());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,19 +1,18 @@
|
||||
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.ChooseCurAvatarTeamReqOuterClass.ChooseCurAvatarTeamReq;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
|
||||
@Opcodes(PacketOpcodes.ChooseCurAvatarTeamReq)
|
||||
public class HandlerChooseCurAvatarTeamReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
ChooseCurAvatarTeamReq req = ChooseCurAvatarTeamReq.parseFrom(payload);
|
||||
|
||||
session.getPlayer().getTeamManager().setCurrentTeam(req.getTeamId());
|
||||
}
|
||||
|
||||
}
|
||||
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.ChooseCurAvatarTeamReqOuterClass.ChooseCurAvatarTeamReq;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
|
||||
@Opcodes(PacketOpcodes.ChooseCurAvatarTeamReq)
|
||||
public class HandlerChooseCurAvatarTeamReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
ChooseCurAvatarTeamReq req = ChooseCurAvatarTeamReq.parseFrom(payload);
|
||||
|
||||
session.getPlayer().getTeamManager().setCurrentTeam(req.getTeamId());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,32 +1,32 @@
|
||||
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.AbilityInvokeEntryOuterClass.AbilityInvokeEntry;
|
||||
import emu.grasscutter.net.proto.ClientAbilityInitFinishNotifyOuterClass.ClientAbilityInitFinishNotify;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
|
||||
@Opcodes(PacketOpcodes.ClientAbilityInitFinishNotify)
|
||||
public class HandlerClientAbilityInitFinishNotify extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
ClientAbilityInitFinishNotify notif = ClientAbilityInitFinishNotify.parseFrom(payload);
|
||||
|
||||
Player player = session.getPlayer();
|
||||
|
||||
// Call skill end in the player's ability manager.
|
||||
player.getAbilityManager().onSkillEnd(player);
|
||||
|
||||
for (AbilityInvokeEntry entry : notif.getInvokesList()) {
|
||||
player.getAbilityManager().onAbilityInvoke(entry);
|
||||
player.getClientAbilityInitFinishHandler().addEntry(entry.getForwardType(), entry);
|
||||
}
|
||||
|
||||
if (notif.getInvokesList().size() > 0) {
|
||||
session.getPlayer().getClientAbilityInitFinishHandler().update(session.getPlayer());
|
||||
}
|
||||
}
|
||||
}
|
||||
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.AbilityInvokeEntryOuterClass.AbilityInvokeEntry;
|
||||
import emu.grasscutter.net.proto.ClientAbilityInitFinishNotifyOuterClass.ClientAbilityInitFinishNotify;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
|
||||
@Opcodes(PacketOpcodes.ClientAbilityInitFinishNotify)
|
||||
public class HandlerClientAbilityInitFinishNotify extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
ClientAbilityInitFinishNotify notif = ClientAbilityInitFinishNotify.parseFrom(payload);
|
||||
|
||||
Player player = session.getPlayer();
|
||||
|
||||
// Call skill end in the player's ability manager.
|
||||
player.getAbilityManager().onSkillEnd(player);
|
||||
|
||||
for (AbilityInvokeEntry entry : notif.getInvokesList()) {
|
||||
player.getAbilityManager().onAbilityInvoke(entry);
|
||||
player.getClientAbilityInitFinishHandler().addEntry(entry.getForwardType(), entry);
|
||||
}
|
||||
|
||||
if (notif.getInvokesList().size() > 0) {
|
||||
session.getPlayer().getClientAbilityInitFinishHandler().update(session.getPlayer());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,160 +1,191 @@
|
||||
package emu.grasscutter.server.packet.recv;
|
||||
|
||||
import emu.grasscutter.Grasscutter;
|
||||
import emu.grasscutter.game.entity.GameEntity;
|
||||
import emu.grasscutter.game.player.Player;
|
||||
import emu.grasscutter.game.props.FightProperty;
|
||||
import emu.grasscutter.net.packet.Opcodes;
|
||||
import emu.grasscutter.net.packet.PacketHandler;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.AttackResultOuterClass.AttackResult;
|
||||
import emu.grasscutter.net.proto.CombatInvocationsNotifyOuterClass.CombatInvocationsNotify;
|
||||
import emu.grasscutter.net.proto.CombatInvokeEntryOuterClass.CombatInvokeEntry;
|
||||
import emu.grasscutter.net.proto.EntityMoveInfoOuterClass.EntityMoveInfo;
|
||||
import emu.grasscutter.net.proto.EvtAnimatorParameterInfoOuterClass.EvtAnimatorParameterInfo;
|
||||
import emu.grasscutter.net.proto.EvtBeingHitInfoOuterClass.EvtBeingHitInfo;
|
||||
import emu.grasscutter.net.proto.MotionInfoOuterClass.MotionInfo;
|
||||
import emu.grasscutter.net.proto.MotionStateOuterClass.MotionState;
|
||||
import emu.grasscutter.net.proto.PlayerDieTypeOuterClass;
|
||||
import emu.grasscutter.server.event.entity.EntityMoveEvent;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketEntityFightPropUpdateNotify;
|
||||
import emu.grasscutter.utils.Position;
|
||||
|
||||
@Opcodes(PacketOpcodes.CombatInvocationsNotify)
|
||||
public class HandlerCombatInvocationsNotify extends PacketHandler {
|
||||
|
||||
private float cachedLandingSpeed = 0;
|
||||
private long cachedLandingTimeMillisecond = 0;
|
||||
private boolean monitorLandingEvent = false;
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
CombatInvocationsNotify notif = CombatInvocationsNotify.parseFrom(payload);
|
||||
for (CombatInvokeEntry entry : notif.getInvokeListList()) {
|
||||
// Handle combat invoke
|
||||
switch (entry.getArgumentType()) {
|
||||
case COMBAT_TYPE_ARGUMENT_EVT_BEING_HIT -> {
|
||||
EvtBeingHitInfo hitInfo = EvtBeingHitInfo.parseFrom(entry.getCombatData());
|
||||
AttackResult attackResult = hitInfo.getAttackResult();
|
||||
Player player = session.getPlayer();
|
||||
|
||||
// Check if the player is invulnerable.
|
||||
if (
|
||||
attackResult.getAttackerId() != player.getTeamManager().getCurrentAvatarEntity().getId() &&
|
||||
player.getAbilityManager().isAbilityInvulnerable()
|
||||
) break;
|
||||
|
||||
// Handle damage
|
||||
player.getAttackResults().add(attackResult);
|
||||
player.getEnergyManager().handleAttackHit(hitInfo);
|
||||
}
|
||||
case COMBAT_TYPE_ARGUMENT_ENTITY_MOVE -> {
|
||||
// Handle movement
|
||||
EntityMoveInfo moveInfo = EntityMoveInfo.parseFrom(entry.getCombatData());
|
||||
GameEntity entity = session.getPlayer().getScene().getEntityById(moveInfo.getEntityId());
|
||||
if (entity != null) {
|
||||
// Move player
|
||||
MotionInfo motionInfo = moveInfo.getMotionInfo();
|
||||
MotionState motionState = motionInfo.getState();
|
||||
|
||||
// Call entity move event.
|
||||
EntityMoveEvent event = new EntityMoveEvent(
|
||||
entity, new Position(motionInfo.getPos()),
|
||||
new Position(motionInfo.getRot()), motionState);
|
||||
event.call();
|
||||
|
||||
entity.move(event.getPosition(), event.getRotation());
|
||||
entity.setLastMoveSceneTimeMs(moveInfo.getSceneTime());
|
||||
entity.setLastMoveReliableSeq(moveInfo.getReliableSeq());
|
||||
entity.setMotionState(motionState);
|
||||
|
||||
session.getPlayer().getStaminaManager().handleCombatInvocationsNotify(session, moveInfo, entity);
|
||||
|
||||
// TODO: handle MOTION_FIGHT landing which has a different damage factor
|
||||
// Also, for plunge attacks, LAND_SPEED is always -30 and is not useful.
|
||||
// May need the height when starting plunge attack.
|
||||
|
||||
// MOTION_LAND_SPEED and MOTION_FALL_ON_GROUND arrive in different packets.
|
||||
// Cache land speed for later use.
|
||||
if (motionState == MotionState.MOTION_STATE_LAND_SPEED) {
|
||||
cachedLandingSpeed = motionInfo.getSpeed().getY();
|
||||
cachedLandingTimeMillisecond = System.currentTimeMillis();
|
||||
monitorLandingEvent = true;
|
||||
}
|
||||
if (monitorLandingEvent) {
|
||||
if (motionState == MotionState.MOTION_STATE_FALL_ON_GROUND) {
|
||||
monitorLandingEvent = false;
|
||||
handleFallOnGround(session, entity, motionState);
|
||||
}
|
||||
}
|
||||
|
||||
// MOTION_STATE_NOTIFY = Dont send to other players
|
||||
if (motionState == MotionState.MOTION_STATE_NOTIFY) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
case COMBAT_TYPE_ARGUMENT_ANIMATOR_PARAMETER_CHANGED -> {
|
||||
EvtAnimatorParameterInfo paramInfo = EvtAnimatorParameterInfo.parseFrom(entry.getCombatData());
|
||||
if (paramInfo.getIsServerCache()) {
|
||||
paramInfo = paramInfo.toBuilder().setIsServerCache(false).build();
|
||||
entry = entry.toBuilder().setCombatData(paramInfo.toByteString()).build();
|
||||
}
|
||||
}
|
||||
default -> {
|
||||
}
|
||||
}
|
||||
|
||||
session.getPlayer().getCombatInvokeHandler().addEntry(entry.getForwardType(), entry);
|
||||
}
|
||||
}
|
||||
|
||||
private void handleFallOnGround(GameSession session, GameEntity entity, MotionState motionState) {
|
||||
if (session.getPlayer().inGodmode()) {
|
||||
return;
|
||||
}
|
||||
// People have reported that after plunge attack (client sends a FIGHT instead of FALL_ON_GROUND) they will die
|
||||
// if they talk to an NPC (this is when the client sends a FALL_ON_GROUND) without jumping again.
|
||||
// A dirty patch: if not received immediately after MOTION_LAND_SPEED, discard this packet.
|
||||
// 200ms seems to be a reasonable delay.
|
||||
int maxDelay = 200;
|
||||
long actualDelay = System.currentTimeMillis() - cachedLandingTimeMillisecond;
|
||||
Grasscutter.getLogger().trace("MOTION_FALL_ON_GROUND received after " + actualDelay + "/" + maxDelay + "ms." + (actualDelay > maxDelay ? " Discard" : ""));
|
||||
if (actualDelay > maxDelay) {
|
||||
return;
|
||||
}
|
||||
float currentHP = entity.getFightProperty(FightProperty.FIGHT_PROP_CUR_HP);
|
||||
float maxHP = entity.getFightProperty(FightProperty.FIGHT_PROP_MAX_HP);
|
||||
float damageFactor = 0;
|
||||
if (cachedLandingSpeed < -23.5) {
|
||||
damageFactor = 0.33f;
|
||||
}
|
||||
if (cachedLandingSpeed < -25) {
|
||||
damageFactor = 0.5f;
|
||||
}
|
||||
if (cachedLandingSpeed < -26.5) {
|
||||
damageFactor = 0.66f;
|
||||
}
|
||||
if (cachedLandingSpeed < -28) {
|
||||
damageFactor = 1f;
|
||||
}
|
||||
float damage = maxHP * damageFactor;
|
||||
float newHP = currentHP - damage;
|
||||
if (newHP < 0) {
|
||||
newHP = 0;
|
||||
}
|
||||
if (damageFactor > 0) {
|
||||
Grasscutter.getLogger().debug(currentHP + "/" + maxHP + "\tLandingSpeed: " + cachedLandingSpeed +
|
||||
"\tDamageFactor: " + damageFactor + "\tDamage: " + damage + "\tNewHP: " + newHP);
|
||||
} else {
|
||||
Grasscutter.getLogger().trace(currentHP + "/" + maxHP + "\tLandingSpeed: 0\tNo damage");
|
||||
}
|
||||
entity.setFightProperty(FightProperty.FIGHT_PROP_CUR_HP, newHP);
|
||||
entity.getWorld().broadcastPacket(new PacketEntityFightPropUpdateNotify(entity, FightProperty.FIGHT_PROP_CUR_HP));
|
||||
if (newHP == 0) {
|
||||
session.getPlayer().getStaminaManager().killAvatar(session, entity, PlayerDieTypeOuterClass.PlayerDieType.PLAYER_DIE_TYPE_FALL);
|
||||
}
|
||||
cachedLandingSpeed = 0;
|
||||
}
|
||||
}
|
||||
package emu.grasscutter.server.packet.recv;
|
||||
|
||||
import emu.grasscutter.Grasscutter;
|
||||
import emu.grasscutter.game.entity.GameEntity;
|
||||
import emu.grasscutter.game.player.Player;
|
||||
import emu.grasscutter.game.props.FightProperty;
|
||||
import emu.grasscutter.net.packet.Opcodes;
|
||||
import emu.grasscutter.net.packet.PacketHandler;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.AttackResultOuterClass.AttackResult;
|
||||
import emu.grasscutter.net.proto.CombatInvocationsNotifyOuterClass.CombatInvocationsNotify;
|
||||
import emu.grasscutter.net.proto.CombatInvokeEntryOuterClass.CombatInvokeEntry;
|
||||
import emu.grasscutter.net.proto.EntityMoveInfoOuterClass.EntityMoveInfo;
|
||||
import emu.grasscutter.net.proto.EvtAnimatorParameterInfoOuterClass.EvtAnimatorParameterInfo;
|
||||
import emu.grasscutter.net.proto.EvtBeingHitInfoOuterClass.EvtBeingHitInfo;
|
||||
import emu.grasscutter.net.proto.MotionInfoOuterClass.MotionInfo;
|
||||
import emu.grasscutter.net.proto.MotionStateOuterClass.MotionState;
|
||||
import emu.grasscutter.net.proto.PlayerDieTypeOuterClass;
|
||||
import emu.grasscutter.server.event.entity.EntityMoveEvent;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketEntityFightPropUpdateNotify;
|
||||
import emu.grasscutter.utils.Position;
|
||||
|
||||
@Opcodes(PacketOpcodes.CombatInvocationsNotify)
|
||||
public class HandlerCombatInvocationsNotify extends PacketHandler {
|
||||
|
||||
private float cachedLandingSpeed = 0;
|
||||
private long cachedLandingTimeMillisecond = 0;
|
||||
private boolean monitorLandingEvent = false;
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
CombatInvocationsNotify notif = CombatInvocationsNotify.parseFrom(payload);
|
||||
for (CombatInvokeEntry entry : notif.getInvokeListList()) {
|
||||
// Handle combat invoke
|
||||
switch (entry.getArgumentType()) {
|
||||
case COMBAT_TYPE_ARGUMENT_EVT_BEING_HIT -> {
|
||||
EvtBeingHitInfo hitInfo = EvtBeingHitInfo.parseFrom(entry.getCombatData());
|
||||
AttackResult attackResult = hitInfo.getAttackResult();
|
||||
Player player = session.getPlayer();
|
||||
|
||||
// Check if the player is invulnerable.
|
||||
if (attackResult.getAttackerId()
|
||||
!= player.getTeamManager().getCurrentAvatarEntity().getId()
|
||||
&& player.getAbilityManager().isAbilityInvulnerable()) break;
|
||||
|
||||
// Handle damage
|
||||
player.getAttackResults().add(attackResult);
|
||||
player.getEnergyManager().handleAttackHit(hitInfo);
|
||||
}
|
||||
case COMBAT_TYPE_ARGUMENT_ENTITY_MOVE -> {
|
||||
// Handle movement
|
||||
EntityMoveInfo moveInfo = EntityMoveInfo.parseFrom(entry.getCombatData());
|
||||
GameEntity entity = session.getPlayer().getScene().getEntityById(moveInfo.getEntityId());
|
||||
if (entity != null) {
|
||||
// Move player
|
||||
MotionInfo motionInfo = moveInfo.getMotionInfo();
|
||||
MotionState motionState = motionInfo.getState();
|
||||
|
||||
// Call entity move event.
|
||||
EntityMoveEvent event =
|
||||
new EntityMoveEvent(
|
||||
entity,
|
||||
new Position(motionInfo.getPos()),
|
||||
new Position(motionInfo.getRot()),
|
||||
motionState);
|
||||
event.call();
|
||||
|
||||
entity.move(event.getPosition(), event.getRotation());
|
||||
entity.setLastMoveSceneTimeMs(moveInfo.getSceneTime());
|
||||
entity.setLastMoveReliableSeq(moveInfo.getReliableSeq());
|
||||
entity.setMotionState(motionState);
|
||||
|
||||
session
|
||||
.getPlayer()
|
||||
.getStaminaManager()
|
||||
.handleCombatInvocationsNotify(session, moveInfo, entity);
|
||||
|
||||
// TODO: handle MOTION_FIGHT landing which has a different damage factor
|
||||
// Also, for plunge attacks, LAND_SPEED is always -30 and is not useful.
|
||||
// May need the height when starting plunge attack.
|
||||
|
||||
// MOTION_LAND_SPEED and MOTION_FALL_ON_GROUND arrive in different packets.
|
||||
// Cache land speed for later use.
|
||||
if (motionState == MotionState.MOTION_STATE_LAND_SPEED) {
|
||||
cachedLandingSpeed = motionInfo.getSpeed().getY();
|
||||
cachedLandingTimeMillisecond = System.currentTimeMillis();
|
||||
monitorLandingEvent = true;
|
||||
}
|
||||
if (monitorLandingEvent) {
|
||||
if (motionState == MotionState.MOTION_STATE_FALL_ON_GROUND) {
|
||||
monitorLandingEvent = false;
|
||||
handleFallOnGround(session, entity, motionState);
|
||||
}
|
||||
}
|
||||
|
||||
// MOTION_STATE_NOTIFY = Dont send to other players
|
||||
if (motionState == MotionState.MOTION_STATE_NOTIFY) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
case COMBAT_TYPE_ARGUMENT_ANIMATOR_PARAMETER_CHANGED -> {
|
||||
EvtAnimatorParameterInfo paramInfo =
|
||||
EvtAnimatorParameterInfo.parseFrom(entry.getCombatData());
|
||||
if (paramInfo.getIsServerCache()) {
|
||||
paramInfo = paramInfo.toBuilder().setIsServerCache(false).build();
|
||||
entry = entry.toBuilder().setCombatData(paramInfo.toByteString()).build();
|
||||
}
|
||||
}
|
||||
default -> {}
|
||||
}
|
||||
|
||||
session.getPlayer().getCombatInvokeHandler().addEntry(entry.getForwardType(), entry);
|
||||
}
|
||||
}
|
||||
|
||||
private void handleFallOnGround(GameSession session, GameEntity entity, MotionState motionState) {
|
||||
if (session.getPlayer().inGodmode()) {
|
||||
return;
|
||||
}
|
||||
// People have reported that after plunge attack (client sends a FIGHT instead of
|
||||
// FALL_ON_GROUND) they will die
|
||||
// if they talk to an NPC (this is when the client sends a FALL_ON_GROUND) without jumping
|
||||
// again.
|
||||
// A dirty patch: if not received immediately after MOTION_LAND_SPEED, discard this packet.
|
||||
// 200ms seems to be a reasonable delay.
|
||||
int maxDelay = 200;
|
||||
long actualDelay = System.currentTimeMillis() - cachedLandingTimeMillisecond;
|
||||
Grasscutter.getLogger()
|
||||
.trace(
|
||||
"MOTION_FALL_ON_GROUND received after "
|
||||
+ actualDelay
|
||||
+ "/"
|
||||
+ maxDelay
|
||||
+ "ms."
|
||||
+ (actualDelay > maxDelay ? " Discard" : ""));
|
||||
if (actualDelay > maxDelay) {
|
||||
return;
|
||||
}
|
||||
float currentHP = entity.getFightProperty(FightProperty.FIGHT_PROP_CUR_HP);
|
||||
float maxHP = entity.getFightProperty(FightProperty.FIGHT_PROP_MAX_HP);
|
||||
float damageFactor = 0;
|
||||
if (cachedLandingSpeed < -23.5) {
|
||||
damageFactor = 0.33f;
|
||||
}
|
||||
if (cachedLandingSpeed < -25) {
|
||||
damageFactor = 0.5f;
|
||||
}
|
||||
if (cachedLandingSpeed < -26.5) {
|
||||
damageFactor = 0.66f;
|
||||
}
|
||||
if (cachedLandingSpeed < -28) {
|
||||
damageFactor = 1f;
|
||||
}
|
||||
float damage = maxHP * damageFactor;
|
||||
float newHP = currentHP - damage;
|
||||
if (newHP < 0) {
|
||||
newHP = 0;
|
||||
}
|
||||
if (damageFactor > 0) {
|
||||
Grasscutter.getLogger()
|
||||
.debug(
|
||||
currentHP
|
||||
+ "/"
|
||||
+ maxHP
|
||||
+ "\tLandingSpeed: "
|
||||
+ cachedLandingSpeed
|
||||
+ "\tDamageFactor: "
|
||||
+ damageFactor
|
||||
+ "\tDamage: "
|
||||
+ damage
|
||||
+ "\tNewHP: "
|
||||
+ newHP);
|
||||
} else {
|
||||
Grasscutter.getLogger().trace(currentHP + "/" + maxHP + "\tLandingSpeed: 0\tNo damage");
|
||||
}
|
||||
entity.setFightProperty(FightProperty.FIGHT_PROP_CUR_HP, newHP);
|
||||
entity
|
||||
.getWorld()
|
||||
.broadcastPacket(
|
||||
new PacketEntityFightPropUpdateNotify(entity, FightProperty.FIGHT_PROP_CUR_HP));
|
||||
if (newHP == 0) {
|
||||
session
|
||||
.getPlayer()
|
||||
.getStaminaManager()
|
||||
.killAvatar(session, entity, PlayerDieTypeOuterClass.PlayerDieType.PLAYER_DIE_TYPE_FALL);
|
||||
}
|
||||
cachedLandingSpeed = 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,46 +1,52 @@
|
||||
package emu.grasscutter.server.packet.recv;
|
||||
|
||||
import emu.grasscutter.data.common.ItemParamData;
|
||||
import emu.grasscutter.net.packet.Opcodes;
|
||||
import emu.grasscutter.net.packet.PacketHandler;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.CombineReqOuterClass;
|
||||
import emu.grasscutter.net.proto.ItemParamOuterClass;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketCombineRsp;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Opcodes(PacketOpcodes.CombineReq)
|
||||
public class HandlerCombineReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
|
||||
CombineReqOuterClass.CombineReq req = CombineReqOuterClass.CombineReq.parseFrom(payload);
|
||||
|
||||
var result = session.getServer().getCombineSystem()
|
||||
.combineItem(session.getPlayer(), req.getCombineId(), req.getCombineCount());
|
||||
|
||||
if (result == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
session.send(new PacketCombineRsp(req,
|
||||
toItemParamList(result.getMaterial()),
|
||||
toItemParamList(result.getResult()),
|
||||
toItemParamList(result.getExtra()),
|
||||
toItemParamList(result.getBack()),
|
||||
toItemParamList(result.getBack())));
|
||||
}
|
||||
|
||||
private List<ItemParamOuterClass.ItemParam> toItemParamList(List<ItemParamData> list) {
|
||||
return list.stream()
|
||||
.map(item -> ItemParamOuterClass.ItemParam.newBuilder()
|
||||
.setItemId(item.getId())
|
||||
.setCount(item.getCount())
|
||||
.build())
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
}
|
||||
package emu.grasscutter.server.packet.recv;
|
||||
|
||||
import emu.grasscutter.data.common.ItemParamData;
|
||||
import emu.grasscutter.net.packet.Opcodes;
|
||||
import emu.grasscutter.net.packet.PacketHandler;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.CombineReqOuterClass;
|
||||
import emu.grasscutter.net.proto.ItemParamOuterClass;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketCombineRsp;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Opcodes(PacketOpcodes.CombineReq)
|
||||
public class HandlerCombineReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
|
||||
CombineReqOuterClass.CombineReq req = CombineReqOuterClass.CombineReq.parseFrom(payload);
|
||||
|
||||
var result =
|
||||
session
|
||||
.getServer()
|
||||
.getCombineSystem()
|
||||
.combineItem(session.getPlayer(), req.getCombineId(), req.getCombineCount());
|
||||
|
||||
if (result == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
session.send(
|
||||
new PacketCombineRsp(
|
||||
req,
|
||||
toItemParamList(result.getMaterial()),
|
||||
toItemParamList(result.getResult()),
|
||||
toItemParamList(result.getExtra()),
|
||||
toItemParamList(result.getBack()),
|
||||
toItemParamList(result.getBack())));
|
||||
}
|
||||
|
||||
private List<ItemParamOuterClass.ItemParam> toItemParamList(List<ItemParamData> list) {
|
||||
return list.stream()
|
||||
.map(
|
||||
item ->
|
||||
ItemParamOuterClass.ItemParam.newBuilder()
|
||||
.setItemId(item.getId())
|
||||
.setCount(item.getCount())
|
||||
.build())
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,19 +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.CreateVehicleReqOuterClass;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketCreateVehicleRsp;
|
||||
import emu.grasscutter.utils.Position;
|
||||
|
||||
@Opcodes(PacketOpcodes.CreateVehicleReq)
|
||||
public class HandlerCreateVehicleReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
CreateVehicleReqOuterClass.CreateVehicleReq req = CreateVehicleReqOuterClass.CreateVehicleReq.parseFrom(payload);
|
||||
session.send(new PacketCreateVehicleRsp(session.getPlayer(), req.getVehicleId(), req.getScenePointId(), new Position(req.getPos()), new Position(req.getRot())));
|
||||
}
|
||||
}
|
||||
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.CreateVehicleReqOuterClass;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketCreateVehicleRsp;
|
||||
import emu.grasscutter.utils.Position;
|
||||
|
||||
@Opcodes(PacketOpcodes.CreateVehicleReq)
|
||||
public class HandlerCreateVehicleReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
CreateVehicleReqOuterClass.CreateVehicleReq req =
|
||||
CreateVehicleReqOuterClass.CreateVehicleReq.parseFrom(payload);
|
||||
session.send(
|
||||
new PacketCreateVehicleRsp(
|
||||
session.getPlayer(),
|
||||
req.getVehicleId(),
|
||||
req.getScenePointId(),
|
||||
new Position(req.getPos()),
|
||||
new Position(req.getRot())));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,19 +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.DealAddFriendReqOuterClass.DealAddFriendReq;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
|
||||
@Opcodes(PacketOpcodes.DealAddFriendReq)
|
||||
public class HandlerDealAddFriendReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
DealAddFriendReq req = DealAddFriendReq.parseFrom(payload);
|
||||
|
||||
session.getPlayer().getFriendsList().handleFriendRequest(req.getTargetUid(), req.getDealAddFriendResult());
|
||||
}
|
||||
|
||||
}
|
||||
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.DealAddFriendReqOuterClass.DealAddFriendReq;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
|
||||
@Opcodes(PacketOpcodes.DealAddFriendReq)
|
||||
public class HandlerDealAddFriendReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
DealAddFriendReq req = DealAddFriendReq.parseFrom(payload);
|
||||
|
||||
session
|
||||
.getPlayer()
|
||||
.getFriendsList()
|
||||
.handleFriendRequest(req.getTargetUid(), req.getDealAddFriendResult());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
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.DelBackupAvatarTeamReqOuterClass.DelBackupAvatarTeamReq;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
|
||||
@Opcodes(PacketOpcodes.DelBackupAvatarTeamReq)
|
||||
public class HandlerDelBackupAvatarTeamReq extends PacketHandler {
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
DelBackupAvatarTeamReq req = DelBackupAvatarTeamReq.parseFrom(payload);
|
||||
session.getPlayer().getTeamManager().removeCustomTeam(req.getBackupAvatarTeamId());
|
||||
}
|
||||
}
|
||||
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.DelBackupAvatarTeamReqOuterClass.DelBackupAvatarTeamReq;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
|
||||
@Opcodes(PacketOpcodes.DelBackupAvatarTeamReq)
|
||||
public class HandlerDelBackupAvatarTeamReq extends PacketHandler {
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
DelBackupAvatarTeamReq req = DelBackupAvatarTeamReq.parseFrom(payload);
|
||||
session.getPlayer().getTeamManager().removeCustomTeam(req.getBackupAvatarTeamId());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,19 +1,18 @@
|
||||
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.DelMailReqOuterClass;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
|
||||
@Opcodes(PacketOpcodes.DelMailReq)
|
||||
public class HandlerDelMailReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
DelMailReqOuterClass.DelMailReq req = DelMailReqOuterClass.DelMailReq.parseFrom(payload);
|
||||
|
||||
session.getPlayer().getMailHandler().deleteMail(req.getMailIdListList());
|
||||
}
|
||||
|
||||
}
|
||||
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.DelMailReqOuterClass;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
|
||||
@Opcodes(PacketOpcodes.DelMailReq)
|
||||
public class HandlerDelMailReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
DelMailReqOuterClass.DelMailReq req = DelMailReqOuterClass.DelMailReq.parseFrom(payload);
|
||||
|
||||
session.getPlayer().getMailHandler().deleteMail(req.getMailIdListList());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,19 +1,18 @@
|
||||
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.DeleteFriendReqOuterClass.DeleteFriendReq;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
|
||||
@Opcodes(PacketOpcodes.DeleteFriendReq)
|
||||
public class HandlerDeleteFriendReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
DeleteFriendReq req = DeleteFriendReq.parseFrom(payload);
|
||||
|
||||
session.getPlayer().getFriendsList().deleteFriend(req.getTargetUid());
|
||||
}
|
||||
|
||||
}
|
||||
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.DeleteFriendReqOuterClass.DeleteFriendReq;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
|
||||
@Opcodes(PacketOpcodes.DeleteFriendReq)
|
||||
public class HandlerDeleteFriendReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
DeleteFriendReq req = DeleteFriendReq.parseFrom(payload);
|
||||
|
||||
session.getPlayer().getFriendsList().deleteFriend(req.getTargetUid());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,18 +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.DestroyMaterialReqOuterClass.DestroyMaterialReq;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
|
||||
@Opcodes(PacketOpcodes.DestroyMaterialReq)
|
||||
public class HandlerDestroyMaterialReq extends PacketHandler {
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
DestroyMaterialReq req = DestroyMaterialReq.parseFrom(payload);
|
||||
|
||||
// Delete items
|
||||
session.getServer().getInventorySystem().destroyMaterial(session.getPlayer(), req.getMaterialListList());
|
||||
}
|
||||
}
|
||||
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.DestroyMaterialReqOuterClass.DestroyMaterialReq;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
|
||||
@Opcodes(PacketOpcodes.DestroyMaterialReq)
|
||||
public class HandlerDestroyMaterialReq extends PacketHandler {
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
DestroyMaterialReq req = DestroyMaterialReq.parseFrom(payload);
|
||||
|
||||
// Delete items
|
||||
session
|
||||
.getServer()
|
||||
.getInventorySystem()
|
||||
.destroyMaterial(session.getPlayer(), req.getMaterialListList());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,17 +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.DoGachaReqOuterClass.DoGachaReq;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
|
||||
@Opcodes(PacketOpcodes.DoGachaReq)
|
||||
public class HandlerDoGachaReq extends PacketHandler {
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
DoGachaReq req = DoGachaReq.parseFrom(payload);
|
||||
|
||||
session.getServer().getGachaSystem().doPulls(session.getPlayer(), req.getGachaScheduleId(), req.getGachaTimes());
|
||||
}
|
||||
}
|
||||
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.DoGachaReqOuterClass.DoGachaReq;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
|
||||
@Opcodes(PacketOpcodes.DoGachaReq)
|
||||
public class HandlerDoGachaReq extends PacketHandler {
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
DoGachaReq req = DoGachaReq.parseFrom(payload);
|
||||
|
||||
session
|
||||
.getServer()
|
||||
.getGachaSystem()
|
||||
.doPulls(session.getPlayer(), req.getGachaScheduleId(), req.getGachaTimes());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,19 +1,18 @@
|
||||
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.DungeonEntryInfoReqOuterClass.DungeonEntryInfoReq;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
|
||||
@Opcodes(PacketOpcodes.DungeonEntryInfoReq)
|
||||
public class HandlerDungeonEntryInfoReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
DungeonEntryInfoReq req = DungeonEntryInfoReq.parseFrom(payload);
|
||||
|
||||
session.getServer().getDungeonSystem().getEntryInfo(session.getPlayer(), req.getPointId());
|
||||
}
|
||||
|
||||
}
|
||||
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.DungeonEntryInfoReqOuterClass.DungeonEntryInfoReq;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
|
||||
@Opcodes(PacketOpcodes.DungeonEntryInfoReq)
|
||||
public class HandlerDungeonEntryInfoReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
DungeonEntryInfoReq req = DungeonEntryInfoReq.parseFrom(payload);
|
||||
|
||||
session.getServer().getDungeonSystem().getEntryInfo(session.getPlayer(), req.getPointId());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,50 +1,54 @@
|
||||
package emu.grasscutter.server.packet.recv;
|
||||
|
||||
import emu.grasscutter.Grasscutter;
|
||||
import emu.grasscutter.game.player.Player.SceneLoadState;
|
||||
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.*;
|
||||
|
||||
@Opcodes(PacketOpcodes.EnterSceneDoneReq)
|
||||
public class HandlerEnterSceneDoneReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
// Finished loading
|
||||
session.getPlayer().setSceneLoadState(SceneLoadState.LOADED);
|
||||
|
||||
// Done
|
||||
|
||||
session.send(new PacketPlayerTimeNotify(session.getPlayer())); // Probably not the right place
|
||||
|
||||
// Spawn player in world
|
||||
session.getPlayer().getScene().spawnPlayer(session.getPlayer());
|
||||
|
||||
// Spawn other entites already in world
|
||||
session.getPlayer().getScene().showOtherEntities(session.getPlayer());
|
||||
|
||||
// Locations
|
||||
session.send(new PacketWorldPlayerLocationNotify(session.getPlayer().getWorld()));
|
||||
session.send(new PacketScenePlayerLocationNotify(session.getPlayer().getScene()));
|
||||
session.send(new PacketWorldPlayerRTTNotify(session.getPlayer().getWorld()));
|
||||
|
||||
// spawn NPC
|
||||
session.getPlayer().getScene().loadNpcForPlayerEnter(session.getPlayer());
|
||||
|
||||
// notify client to load the npc for quest
|
||||
var questGroupSuites = session.getPlayer().getQuestManager().getSceneGroupSuite(session.getPlayer().getSceneId());
|
||||
|
||||
session.getPlayer().getScene().loadGroupForQuest(questGroupSuites);
|
||||
Grasscutter.getLogger().debug("Loaded Scene {} Quest(s) Groupsuite(s): {}", session.getPlayer().getSceneId(), questGroupSuites);
|
||||
session.send(new PacketGroupSuiteNotify(questGroupSuites));
|
||||
|
||||
// Reset timer for sending player locations
|
||||
session.getPlayer().resetSendPlayerLocTime();
|
||||
//Rsp
|
||||
session.send(new PacketEnterSceneDoneRsp(session.getPlayer()));
|
||||
}
|
||||
|
||||
}
|
||||
package emu.grasscutter.server.packet.recv;
|
||||
|
||||
import emu.grasscutter.Grasscutter;
|
||||
import emu.grasscutter.game.player.Player.SceneLoadState;
|
||||
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.*;
|
||||
|
||||
@Opcodes(PacketOpcodes.EnterSceneDoneReq)
|
||||
public class HandlerEnterSceneDoneReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
// Finished loading
|
||||
session.getPlayer().setSceneLoadState(SceneLoadState.LOADED);
|
||||
|
||||
// Done
|
||||
|
||||
session.send(new PacketPlayerTimeNotify(session.getPlayer())); // Probably not the right place
|
||||
|
||||
// Spawn player in world
|
||||
session.getPlayer().getScene().spawnPlayer(session.getPlayer());
|
||||
|
||||
// Spawn other entites already in world
|
||||
session.getPlayer().getScene().showOtherEntities(session.getPlayer());
|
||||
|
||||
// Locations
|
||||
session.send(new PacketWorldPlayerLocationNotify(session.getPlayer().getWorld()));
|
||||
session.send(new PacketScenePlayerLocationNotify(session.getPlayer().getScene()));
|
||||
session.send(new PacketWorldPlayerRTTNotify(session.getPlayer().getWorld()));
|
||||
|
||||
// spawn NPC
|
||||
session.getPlayer().getScene().loadNpcForPlayerEnter(session.getPlayer());
|
||||
|
||||
// notify client to load the npc for quest
|
||||
var questGroupSuites =
|
||||
session.getPlayer().getQuestManager().getSceneGroupSuite(session.getPlayer().getSceneId());
|
||||
|
||||
session.getPlayer().getScene().loadGroupForQuest(questGroupSuites);
|
||||
Grasscutter.getLogger()
|
||||
.debug(
|
||||
"Loaded Scene {} Quest(s) Groupsuite(s): {}",
|
||||
session.getPlayer().getSceneId(),
|
||||
questGroupSuites);
|
||||
session.send(new PacketGroupSuiteNotify(questGroupSuites));
|
||||
|
||||
// Reset timer for sending player locations
|
||||
session.getPlayer().resetSendPlayerLocTime();
|
||||
// Rsp
|
||||
session.send(new PacketEnterSceneDoneRsp(session.getPlayer()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,19 +1,18 @@
|
||||
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.PacketEnterScenePeerNotify;
|
||||
import emu.grasscutter.server.packet.send.PacketEnterSceneReadyRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.EnterSceneReadyReq)
|
||||
public class HandlerEnterSceneReadyReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) {
|
||||
session.send(new PacketEnterScenePeerNotify(session.getPlayer()));
|
||||
session.send(new PacketEnterSceneReadyRsp(session.getPlayer()));
|
||||
}
|
||||
|
||||
}
|
||||
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.PacketEnterScenePeerNotify;
|
||||
import emu.grasscutter.server.packet.send.PacketEnterSceneReadyRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.EnterSceneReadyReq)
|
||||
public class HandlerEnterSceneReadyReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) {
|
||||
session.send(new PacketEnterScenePeerNotify(session.getPlayer()));
|
||||
session.send(new PacketEnterSceneReadyRsp(session.getPlayer()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
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.EnterTransPointRegionNotify)
|
||||
public class HandlerEnterTransPointRegionNotify extends PacketHandler {
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
session.getPlayer().getSotsManager().handleEnterTransPointRegionNotify();
|
||||
}
|
||||
}
|
||||
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.EnterTransPointRegionNotify)
|
||||
public class HandlerEnterTransPointRegionNotify extends PacketHandler {
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
session.getPlayer().getSotsManager().handleEnterTransPointRegionNotify();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,23 +1,22 @@
|
||||
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.EnterWorldAreaReqOuterClass.EnterWorldAreaReq;
|
||||
import emu.grasscutter.net.proto.PacketHeadOuterClass.PacketHead;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketEnterWorldAreaRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.EnterWorldAreaReq)
|
||||
public class HandlerEnterWorldAreaReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
PacketHead head = PacketHead.parseFrom(header);
|
||||
EnterWorldAreaReq enterWorld = EnterWorldAreaReq.parseFrom(payload);
|
||||
|
||||
session.send(new PacketEnterWorldAreaRsp(head.getClientSequenceId(), enterWorld));
|
||||
//session.send(new PacketScenePlayerLocationNotify(session.getPlayer()));
|
||||
}
|
||||
|
||||
}
|
||||
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.EnterWorldAreaReqOuterClass.EnterWorldAreaReq;
|
||||
import emu.grasscutter.net.proto.PacketHeadOuterClass.PacketHead;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketEnterWorldAreaRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.EnterWorldAreaReq)
|
||||
public class HandlerEnterWorldAreaReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
PacketHead head = PacketHead.parseFrom(header);
|
||||
EnterWorldAreaReq enterWorld = EnterWorldAreaReq.parseFrom(payload);
|
||||
|
||||
session.send(new PacketEnterWorldAreaRsp(head.getClientSequenceId(), enterWorld));
|
||||
// session.send(new PacketScenePlayerLocationNotify(session.getPlayer()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,22 +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.EntityAiSyncNotifyOuterClass.EntityAiSyncNotify;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketEntityAiSyncNotify;
|
||||
|
||||
@Opcodes(PacketOpcodes.EntityAiSyncNotify)
|
||||
public class HandlerEntityAiSyncNotify extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
EntityAiSyncNotify notify = EntityAiSyncNotify.parseFrom(payload);
|
||||
|
||||
if (notify.getLocalAvatarAlertedMonsterListCount() > 0) {
|
||||
session.getPlayer().getScene().broadcastPacket(new PacketEntityAiSyncNotify(notify));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
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.EntityAiSyncNotifyOuterClass.EntityAiSyncNotify;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketEntityAiSyncNotify;
|
||||
|
||||
@Opcodes(PacketOpcodes.EntityAiSyncNotify)
|
||||
public class HandlerEntityAiSyncNotify extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
EntityAiSyncNotify notify = EntityAiSyncNotify.parseFrom(payload);
|
||||
|
||||
if (notify.getLocalAvatarAlertedMonsterListCount() > 0) {
|
||||
session.getPlayer().getScene().broadcastPacket(new PacketEntityAiSyncNotify(notify));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,16 +1,15 @@
|
||||
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.EvtAiSyncCombatThreatInfoNotify)
|
||||
public class HandlerEvtAiSyncCombatThreatInfoNotify extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
// Auto template
|
||||
}
|
||||
|
||||
}
|
||||
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.EvtAiSyncCombatThreatInfoNotify)
|
||||
public class HandlerEvtAiSyncCombatThreatInfoNotify extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
// Auto template
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,16 +1,15 @@
|
||||
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.EvtAiSyncSkillCdNotify)
|
||||
public class HandlerEvtAiSyncSkillCdNotify extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
// Auto template
|
||||
}
|
||||
|
||||
}
|
||||
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.EvtAiSyncSkillCdNotify)
|
||||
public class HandlerEvtAiSyncSkillCdNotify extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
// Auto template
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,25 +1,25 @@
|
||||
package emu.grasscutter.server.packet.recv;
|
||||
|
||||
import emu.grasscutter.game.entity.EntityAvatar;
|
||||
import emu.grasscutter.net.packet.Opcodes;
|
||||
import emu.grasscutter.net.packet.PacketHandler;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.EvtAvatarLockChairReqOuterClass.EvtAvatarLockChairReq;
|
||||
import emu.grasscutter.net.proto.PacketHeadOuterClass.PacketHead;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketEvtAvatarLockChairRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.EvtAvatarLockChairReq)
|
||||
public class HandlerEvtAvatarLockChairReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
PacketHead head = PacketHead.parseFrom(header);
|
||||
EvtAvatarLockChairReq lockChairReq = EvtAvatarLockChairReq.parseFrom(payload);
|
||||
|
||||
EntityAvatar entityAvatar = session.getPlayer().getTeamManager().getCurrentAvatarEntity();
|
||||
|
||||
session.send(new PacketEvtAvatarLockChairRsp(head.getClientSequenceId(), entityAvatar, lockChairReq));
|
||||
}
|
||||
|
||||
}
|
||||
package emu.grasscutter.server.packet.recv;
|
||||
|
||||
import emu.grasscutter.game.entity.EntityAvatar;
|
||||
import emu.grasscutter.net.packet.Opcodes;
|
||||
import emu.grasscutter.net.packet.PacketHandler;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.EvtAvatarLockChairReqOuterClass.EvtAvatarLockChairReq;
|
||||
import emu.grasscutter.net.proto.PacketHeadOuterClass.PacketHead;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketEvtAvatarLockChairRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.EvtAvatarLockChairReq)
|
||||
public class HandlerEvtAvatarLockChairReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
PacketHead head = PacketHead.parseFrom(header);
|
||||
EvtAvatarLockChairReq lockChairReq = EvtAvatarLockChairReq.parseFrom(payload);
|
||||
|
||||
EntityAvatar entityAvatar = session.getPlayer().getTeamManager().getCurrentAvatarEntity();
|
||||
|
||||
session.send(
|
||||
new PacketEvtAvatarLockChairRsp(head.getClientSequenceId(), entityAvatar, lockChairReq));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,21 +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.EvtAvatarSitDownNotifyOuterClass.EvtAvatarSitDownNotify;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketEvtAvatarSitDownNotify;
|
||||
|
||||
@Opcodes(PacketOpcodes.EvtAvatarSitDownNotify)
|
||||
public class HandlerEvtAvatarSitDownNotify extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
EvtAvatarSitDownNotify notify = EvtAvatarSitDownNotify.parseFrom(payload);
|
||||
|
||||
session.getPlayer().getScene().broadcastPacket(new PacketEvtAvatarSitDownNotify(notify));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
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.EvtAvatarSitDownNotifyOuterClass.EvtAvatarSitDownNotify;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketEvtAvatarSitDownNotify;
|
||||
|
||||
@Opcodes(PacketOpcodes.EvtAvatarSitDownNotify)
|
||||
public class HandlerEvtAvatarSitDownNotify extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
EvtAvatarSitDownNotify notify = EvtAvatarSitDownNotify.parseFrom(payload);
|
||||
|
||||
session.getPlayer().getScene().broadcastPacket(new PacketEvtAvatarSitDownNotify(notify));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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.EvtAvatarStandUpNotifyOuterClass.EvtAvatarStandUpNotify;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketEvtAvatarStandUpNotify;
|
||||
|
||||
@Opcodes(PacketOpcodes.EvtAvatarStandUpNotify)
|
||||
public class HandlerEvtAvatarStandUpNotify extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
EvtAvatarStandUpNotify notify = EvtAvatarStandUpNotify.parseFrom(payload);
|
||||
|
||||
session.getPlayer().getScene().broadcastPacket(new PacketEvtAvatarStandUpNotify(notify));
|
||||
}
|
||||
|
||||
}
|
||||
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.EvtAvatarStandUpNotifyOuterClass.EvtAvatarStandUpNotify;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketEvtAvatarStandUpNotify;
|
||||
|
||||
@Opcodes(PacketOpcodes.EvtAvatarStandUpNotify)
|
||||
public class HandlerEvtAvatarStandUpNotify extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
EvtAvatarStandUpNotify notify = EvtAvatarStandUpNotify.parseFrom(payload);
|
||||
|
||||
session.getPlayer().getScene().broadcastPacket(new PacketEvtAvatarStandUpNotify(notify));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,37 +1,38 @@
|
||||
package emu.grasscutter.server.packet.recv;
|
||||
|
||||
import emu.grasscutter.game.entity.EntityClientGadget;
|
||||
import emu.grasscutter.game.entity.EntitySolarIsotomaClientGadget;
|
||||
import emu.grasscutter.net.packet.Opcodes;
|
||||
import emu.grasscutter.net.packet.PacketHandler;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.EvtCreateGadgetNotifyOuterClass.EvtCreateGadgetNotify;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
|
||||
@Opcodes(PacketOpcodes.EvtCreateGadgetNotify)
|
||||
public class HandlerEvtCreateGadgetNotify extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
EvtCreateGadgetNotify notify = EvtCreateGadgetNotify.parseFrom(payload);
|
||||
|
||||
// Sanity check - dont add duplicate entities
|
||||
if (session.getPlayer().getScene().getEntityById(notify.getEntityId()) != null) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Create entity and summon in world
|
||||
var gadgetId = notify.getConfigId();
|
||||
EntityClientGadget gadget = switch (gadgetId) {
|
||||
//Solar Isotoma.
|
||||
case EntitySolarIsotomaClientGadget.GADGET_ID ->
|
||||
new EntitySolarIsotomaClientGadget(session.getPlayer().getScene(), session.getPlayer(), notify);
|
||||
|
||||
//Default.
|
||||
default -> new EntityClientGadget(session.getPlayer().getScene(), session.getPlayer(), notify);
|
||||
};
|
||||
|
||||
session.getPlayer().getScene().onPlayerCreateGadget(gadget);
|
||||
}
|
||||
|
||||
}
|
||||
package emu.grasscutter.server.packet.recv;
|
||||
|
||||
import emu.grasscutter.game.entity.EntityClientGadget;
|
||||
import emu.grasscutter.game.entity.EntitySolarIsotomaClientGadget;
|
||||
import emu.grasscutter.net.packet.Opcodes;
|
||||
import emu.grasscutter.net.packet.PacketHandler;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.EvtCreateGadgetNotifyOuterClass.EvtCreateGadgetNotify;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
|
||||
@Opcodes(PacketOpcodes.EvtCreateGadgetNotify)
|
||||
public class HandlerEvtCreateGadgetNotify extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
EvtCreateGadgetNotify notify = EvtCreateGadgetNotify.parseFrom(payload);
|
||||
|
||||
// Sanity check - dont add duplicate entities
|
||||
if (session.getPlayer().getScene().getEntityById(notify.getEntityId()) != null) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Create entity and summon in world
|
||||
var gadgetId = notify.getConfigId();
|
||||
EntityClientGadget gadget =
|
||||
switch (gadgetId) {
|
||||
// Solar Isotoma.
|
||||
case EntitySolarIsotomaClientGadget.GADGET_ID -> new EntitySolarIsotomaClientGadget(
|
||||
session.getPlayer().getScene(), session.getPlayer(), notify);
|
||||
|
||||
// Default.
|
||||
default -> new EntityClientGadget(
|
||||
session.getPlayer().getScene(), session.getPlayer(), notify);
|
||||
};
|
||||
|
||||
session.getPlayer().getScene().onPlayerCreateGadget(gadget);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,19 +1,18 @@
|
||||
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.EvtDestroyGadgetNotifyOuterClass.EvtDestroyGadgetNotify;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
|
||||
@Opcodes(PacketOpcodes.EvtDestroyGadgetNotify)
|
||||
public class HandlerEvtDestroyGadgetNotify extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
EvtDestroyGadgetNotify notify = EvtDestroyGadgetNotify.parseFrom(payload);
|
||||
|
||||
session.getPlayer().getScene().onPlayerDestroyGadget(notify.getEntityId());
|
||||
}
|
||||
|
||||
}
|
||||
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.EvtDestroyGadgetNotifyOuterClass.EvtDestroyGadgetNotify;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
|
||||
@Opcodes(PacketOpcodes.EvtDestroyGadgetNotify)
|
||||
public class HandlerEvtDestroyGadgetNotify extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
EvtDestroyGadgetNotify notify = EvtDestroyGadgetNotify.parseFrom(payload);
|
||||
|
||||
session.getPlayer().getScene().onPlayerDestroyGadget(notify.getEntityId());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,28 +1,37 @@
|
||||
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.EvtEntityRenderersChangedNotifyOuterClass;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketEvtEntityRenderersChangedNotify;
|
||||
|
||||
@Opcodes(PacketOpcodes.EvtEntityRenderersChangedNotify)
|
||||
public class HandlerEvtEntityRenderersChangedNotify extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
var req = EvtEntityRenderersChangedNotifyOuterClass.EvtEntityRenderersChangedNotify.parseFrom(payload);
|
||||
|
||||
switch (req.getForwardType()) {
|
||||
case FORWARD_TYPE_TO_ALL ->
|
||||
session.getPlayer().getScene().broadcastPacket(new PacketEvtEntityRenderersChangedNotify(req));
|
||||
case FORWARD_TYPE_TO_ALL_EXCEPT_CUR ->
|
||||
session.getPlayer().getScene().broadcastPacketToOthers(session.getPlayer(), new PacketEvtEntityRenderersChangedNotify(req));
|
||||
case FORWARD_TYPE_TO_HOST ->
|
||||
session.getPlayer().getScene().getWorld().getHost().sendPacket(new PacketEvtEntityRenderersChangedNotify(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.EvtEntityRenderersChangedNotifyOuterClass;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketEvtEntityRenderersChangedNotify;
|
||||
|
||||
@Opcodes(PacketOpcodes.EvtEntityRenderersChangedNotify)
|
||||
public class HandlerEvtEntityRenderersChangedNotify extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
var req =
|
||||
EvtEntityRenderersChangedNotifyOuterClass.EvtEntityRenderersChangedNotify.parseFrom(
|
||||
payload);
|
||||
|
||||
switch (req.getForwardType()) {
|
||||
case FORWARD_TYPE_TO_ALL -> session
|
||||
.getPlayer()
|
||||
.getScene()
|
||||
.broadcastPacket(new PacketEvtEntityRenderersChangedNotify(req));
|
||||
case FORWARD_TYPE_TO_ALL_EXCEPT_CUR -> session
|
||||
.getPlayer()
|
||||
.getScene()
|
||||
.broadcastPacketToOthers(
|
||||
session.getPlayer(), new PacketEvtEntityRenderersChangedNotify(req));
|
||||
case FORWARD_TYPE_TO_HOST -> session
|
||||
.getPlayer()
|
||||
.getScene()
|
||||
.getWorld()
|
||||
.getHost()
|
||||
.sendPacket(new PacketEvtEntityRenderersChangedNotify(req));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
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.ExitTransPointRegionNotify)
|
||||
public class HandlerExitTransPointRegionNotify extends PacketHandler {
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
session.getPlayer().getSotsManager().handleExitTransPointRegionNotify();
|
||||
}
|
||||
}
|
||||
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.ExitTransPointRegionNotify)
|
||||
public class HandlerExitTransPointRegionNotify extends PacketHandler {
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
session.getPlayer().getSotsManager().handleExitTransPointRegionNotify();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
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.ForgeGetQueueDataReq)
|
||||
public class HandlerForgeGetQueueDataReq extends PacketHandler {
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
session.getPlayer().getForgingManager().handleForgeGetQueueDataReq();
|
||||
}
|
||||
}
|
||||
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.ForgeGetQueueDataReq)
|
||||
public class HandlerForgeGetQueueDataReq extends PacketHandler {
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
session.getPlayer().getForgingManager().handleForgeGetQueueDataReq();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
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.ForgeQueueManipulateReqOuterClass.ForgeQueueManipulateReq;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
|
||||
@Opcodes(PacketOpcodes.ForgeQueueManipulateReq)
|
||||
public class HandlerForgeQueueManipulateReq extends PacketHandler {
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
ForgeQueueManipulateReq req = ForgeQueueManipulateReq.parseFrom(payload);
|
||||
session.getPlayer().getForgingManager().handleForgeQueueManipulateReq(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.ForgeQueueManipulateReqOuterClass.ForgeQueueManipulateReq;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
|
||||
@Opcodes(PacketOpcodes.ForgeQueueManipulateReq)
|
||||
public class HandlerForgeQueueManipulateReq extends PacketHandler {
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
ForgeQueueManipulateReq req = ForgeQueueManipulateReq.parseFrom(payload);
|
||||
session.getPlayer().getForgingManager().handleForgeQueueManipulateReq(req);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
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.ForgeStartReqOuterClass;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
|
||||
@Opcodes(PacketOpcodes.ForgeStartReq)
|
||||
public class HandlerForgeStartReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
ForgeStartReqOuterClass.ForgeStartReq req = ForgeStartReqOuterClass.ForgeStartReq.parseFrom(payload);
|
||||
session.getPlayer().getForgingManager().handleForgeStartReq(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.ForgeStartReqOuterClass;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
|
||||
@Opcodes(PacketOpcodes.ForgeStartReq)
|
||||
public class HandlerForgeStartReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
ForgeStartReqOuterClass.ForgeStartReq req =
|
||||
ForgeStartReqOuterClass.ForgeStartReq.parseFrom(payload);
|
||||
session.getPlayer().getForgingManager().handleForgeStartReq(req);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,16 +1,15 @@
|
||||
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.FurnitureMakeReq)
|
||||
public class HandlerFurnitureMakeReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
session.getPlayer().getFurnitureManager().queryStatus();
|
||||
}
|
||||
|
||||
}
|
||||
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.FurnitureMakeReq)
|
||||
public class HandlerFurnitureMakeReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
session.getPlayer().getFurnitureManager().queryStatus();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,20 +1,18 @@
|
||||
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.FurnitureMakeStartReqOuterClass;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
|
||||
@Opcodes(PacketOpcodes.FurnitureMakeStartReq)
|
||||
public class HandlerFurnitureMakeStartReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
var req = FurnitureMakeStartReqOuterClass.FurnitureMakeStartReq.parseFrom(payload);
|
||||
|
||||
session.getPlayer().getFurnitureManager().startMake(req.getMakeId(), req.getAvatarId());
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
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.FurnitureMakeStartReqOuterClass;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
|
||||
@Opcodes(PacketOpcodes.FurnitureMakeStartReq)
|
||||
public class HandlerFurnitureMakeStartReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
var req = FurnitureMakeStartReqOuterClass.FurnitureMakeStartReq.parseFrom(payload);
|
||||
|
||||
session.getPlayer().getFurnitureManager().startMake(req.getMakeId(), req.getAvatarId());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,28 +1,34 @@
|
||||
package emu.grasscutter.server.packet.recv;
|
||||
|
||||
import emu.grasscutter.game.gacha.GachaBanner;
|
||||
import emu.grasscutter.game.gacha.PlayerGachaBannerInfo;
|
||||
import emu.grasscutter.net.packet.Opcodes;
|
||||
import emu.grasscutter.net.packet.PacketHandler;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.GachaWishReqOuterClass.GachaWishReq;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketGachaWishRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.GachaWishReq)
|
||||
public class HandlerGachaWishReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
GachaWishReq req = GachaWishReq.parseFrom(payload);
|
||||
|
||||
GachaBanner banner = session.getServer().getGachaSystem().getGachaBanners().get(req.getGachaScheduleId());
|
||||
PlayerGachaBannerInfo gachaInfo = session.getPlayer().getGachaInfo().getBannerInfo(banner);
|
||||
|
||||
gachaInfo.setFailedChosenItemPulls(0);
|
||||
gachaInfo.setWishItemId(req.getItemId());
|
||||
|
||||
session.send(new PacketGachaWishRsp(req.getGachaType(), req.getGachaScheduleId(), req.getItemId(), 0, banner.getWishMaxProgress()));
|
||||
}
|
||||
|
||||
}
|
||||
package emu.grasscutter.server.packet.recv;
|
||||
|
||||
import emu.grasscutter.game.gacha.GachaBanner;
|
||||
import emu.grasscutter.game.gacha.PlayerGachaBannerInfo;
|
||||
import emu.grasscutter.net.packet.Opcodes;
|
||||
import emu.grasscutter.net.packet.PacketHandler;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.GachaWishReqOuterClass.GachaWishReq;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketGachaWishRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.GachaWishReq)
|
||||
public class HandlerGachaWishReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
GachaWishReq req = GachaWishReq.parseFrom(payload);
|
||||
|
||||
GachaBanner banner =
|
||||
session.getServer().getGachaSystem().getGachaBanners().get(req.getGachaScheduleId());
|
||||
PlayerGachaBannerInfo gachaInfo = session.getPlayer().getGachaInfo().getBannerInfo(banner);
|
||||
|
||||
gachaInfo.setFailedChosenItemPulls(0);
|
||||
gachaInfo.setWishItemId(req.getItemId());
|
||||
|
||||
session.send(
|
||||
new PacketGachaWishRsp(
|
||||
req.getGachaType(),
|
||||
req.getGachaScheduleId(),
|
||||
req.getItemId(),
|
||||
0,
|
||||
banner.getWishMaxProgress()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,21 +1,23 @@
|
||||
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.GadgetInteractReqOuterClass.GadgetInteractReq;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
|
||||
@Opcodes(PacketOpcodes.GadgetInteractReq)
|
||||
public class HandlerGadgetInteractReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
GadgetInteractReq req = GadgetInteractReq.parseFrom(payload);
|
||||
|
||||
session.getPlayer().getQuestManager().triggerEvent(QuestTrigger.QUEST_CONTENT_INTERACT_GADGET, req.getGadgetId());
|
||||
session.getPlayer().interactWith(req.getGadgetEntityId(), req);
|
||||
}
|
||||
|
||||
}
|
||||
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.GadgetInteractReqOuterClass.GadgetInteractReq;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
|
||||
@Opcodes(PacketOpcodes.GadgetInteractReq)
|
||||
public class HandlerGadgetInteractReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
GadgetInteractReq req = GadgetInteractReq.parseFrom(payload);
|
||||
|
||||
session
|
||||
.getPlayer()
|
||||
.getQuestManager()
|
||||
.triggerEvent(QuestTrigger.QUEST_CONTENT_INTERACT_GADGET, req.getGadgetId());
|
||||
session.getPlayer().interactWith(req.getGadgetEntityId(), req);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,22 +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.GetActivityInfoReqOuterClass;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketGetActivityInfoRsp;
|
||||
|
||||
import java.util.HashSet;
|
||||
|
||||
@Opcodes(PacketOpcodes.GetActivityInfoReq)
|
||||
public class HandlerGetActivityInfoReq extends PacketHandler {
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
var req = GetActivityInfoReqOuterClass.GetActivityInfoReq.parseFrom(payload);
|
||||
|
||||
session.send(new PacketGetActivityInfoRsp(
|
||||
new HashSet<>(req.getActivityIdListList()),
|
||||
session.getPlayer().getActivityManager()));
|
||||
}
|
||||
}
|
||||
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.GetActivityInfoReqOuterClass;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketGetActivityInfoRsp;
|
||||
import java.util.HashSet;
|
||||
|
||||
@Opcodes(PacketOpcodes.GetActivityInfoReq)
|
||||
public class HandlerGetActivityInfoReq extends PacketHandler {
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
var req = GetActivityInfoReqOuterClass.GetActivityInfoReq.parseFrom(payload);
|
||||
|
||||
session.send(
|
||||
new PacketGetActivityInfoRsp(
|
||||
new HashSet<>(req.getActivityIdListList()), session.getPlayer().getActivityManager()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,19 +1,18 @@
|
||||
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.GetActivityShopSheetInfoReqOuterClass.GetActivityShopSheetInfoReq;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketGetActivityShopSheetInfoRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.GetActivityShopSheetInfoReq)
|
||||
public class HandlerGetActivityShopSheetInfoReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
GetActivityShopSheetInfoReq req = GetActivityShopSheetInfoReq.parseFrom(payload);
|
||||
session.getPlayer().sendPacket(new PacketGetActivityShopSheetInfoRsp(req.getShopType()));
|
||||
}
|
||||
|
||||
}
|
||||
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.GetActivityShopSheetInfoReqOuterClass.GetActivityShopSheetInfoReq;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketGetActivityShopSheetInfoRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.GetActivityShopSheetInfoReq)
|
||||
public class HandlerGetActivityShopSheetInfoReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
GetActivityShopSheetInfoReq req = GetActivityShopSheetInfoReq.parseFrom(payload);
|
||||
session.getPlayer().sendPacket(new PacketGetActivityShopSheetInfoRsp(req.getShopType()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,17 +1,16 @@
|
||||
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.PacketH5ActivityIdsNotify;
|
||||
|
||||
@Opcodes(PacketOpcodes.GetAllH5ActivityInfoReq)
|
||||
public class HandlerGetAllH5ActivityInfoReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
session.send(new PacketH5ActivityIdsNotify());
|
||||
}
|
||||
|
||||
}
|
||||
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.PacketH5ActivityIdsNotify;
|
||||
|
||||
@Opcodes(PacketOpcodes.GetAllH5ActivityInfoReq)
|
||||
public class HandlerGetAllH5ActivityInfoReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
session.send(new PacketH5ActivityIdsNotify());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,18 +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.GetAllMailReqOuterClass;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketGetAllMailRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.GetAllMailReq)
|
||||
public class HandlerGetAllMailReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
GetAllMailReqOuterClass.GetAllMailReq req = GetAllMailReqOuterClass.GetAllMailReq.parseFrom(payload);
|
||||
session.send(new PacketGetAllMailRsp(session.getPlayer(), req.getIsCollected()));
|
||||
}
|
||||
}
|
||||
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.GetAllMailReqOuterClass;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketGetAllMailRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.GetAllMailReq)
|
||||
public class HandlerGetAllMailReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
GetAllMailReqOuterClass.GetAllMailReq req =
|
||||
GetAllMailReqOuterClass.GetAllMailReq.parseFrom(payload);
|
||||
session.send(new PacketGetAllMailRsp(session.getPlayer(), req.getIsCollected()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,17 +1,16 @@
|
||||
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.PacketGetAllUnlockNameCardRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.GetAllUnlockNameCardReq)
|
||||
public class HandlerGetAllUnlockNameCardReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
session.send(new PacketGetAllUnlockNameCardRsp(session.getPlayer()));
|
||||
}
|
||||
|
||||
}
|
||||
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.PacketGetAllUnlockNameCardRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.GetAllUnlockNameCardReq)
|
||||
public class HandlerGetAllUnlockNameCardReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
session.send(new PacketGetAllUnlockNameCardRsp(session.getPlayer()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,17 +1,16 @@
|
||||
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.PacketGetAuthkeyRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.GetAuthkeyReq)
|
||||
public class HandlerGetAuthkeyReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
session.send(new PacketGetAuthkeyRsp());
|
||||
}
|
||||
|
||||
}
|
||||
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.PacketGetAuthkeyRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.GetAuthkeyReq)
|
||||
public class HandlerGetAuthkeyReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
session.send(new PacketGetAuthkeyRsp());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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.GetDailyDungeonEntryInfoReqOuterClass;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketGetDailyDungeonEntryInfoRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.GetDailyDungeonEntryInfoReq)
|
||||
public class HandlerGetDailyDungeonEntryInfoReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
var req =
|
||||
GetDailyDungeonEntryInfoReqOuterClass.GetDailyDungeonEntryInfoReq.parseFrom(payload);
|
||||
|
||||
session.send(new PacketGetDailyDungeonEntryInfoRsp(req.getSceneId()));
|
||||
}
|
||||
}
|
||||
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.GetDailyDungeonEntryInfoReqOuterClass;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketGetDailyDungeonEntryInfoRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.GetDailyDungeonEntryInfoReq)
|
||||
public class HandlerGetDailyDungeonEntryInfoReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
var req = GetDailyDungeonEntryInfoReqOuterClass.GetDailyDungeonEntryInfoReq.parseFrom(payload);
|
||||
|
||||
session.send(new PacketGetDailyDungeonEntryInfoRsp(req.getSceneId()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,26 +1,26 @@
|
||||
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.GetFriendShowAvatarInfoReqOuterClass.GetFriendShowAvatarInfoReq;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketGetFriendShowAvatarInfoRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.GetFriendShowAvatarInfoReq)
|
||||
public class HandlerGetFriendShowAvatarInfoReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
GetFriendShowAvatarInfoReq req = GetFriendShowAvatarInfoReq.parseFrom(payload);
|
||||
|
||||
int targetUid = req.getUid();
|
||||
Player targetPlayer = session.getServer().getPlayerByUid(targetUid, true);
|
||||
|
||||
if (targetPlayer.isShowAvatars()) {
|
||||
session.send(new PacketGetFriendShowAvatarInfoRsp(targetUid, targetPlayer.getShowAvatarInfoList()));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
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.GetFriendShowAvatarInfoReqOuterClass.GetFriendShowAvatarInfoReq;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketGetFriendShowAvatarInfoRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.GetFriendShowAvatarInfoReq)
|
||||
public class HandlerGetFriendShowAvatarInfoReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
GetFriendShowAvatarInfoReq req = GetFriendShowAvatarInfoReq.parseFrom(payload);
|
||||
|
||||
int targetUid = req.getUid();
|
||||
Player targetPlayer = session.getServer().getPlayerByUid(targetUid, true);
|
||||
|
||||
if (targetPlayer.isShowAvatars()) {
|
||||
session.send(
|
||||
new PacketGetFriendShowAvatarInfoRsp(targetUid, targetPlayer.getShowAvatarInfoList()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,22 +1,24 @@
|
||||
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.GetFriendShowNameCardInfoReqOuterClass;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketGetFriendShowNameCardInfoRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.GetFriendShowNameCardInfoReq)
|
||||
public class HandlerGetFriendShowNameCardInfoReq extends PacketHandler {
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
var req = GetFriendShowNameCardInfoReqOuterClass.GetFriendShowNameCardInfoReq.parseFrom(payload);
|
||||
|
||||
int targetUid = req.getUid();
|
||||
Player target = session.getServer().getPlayerByUid(targetUid, true);
|
||||
|
||||
session.send(new PacketGetFriendShowNameCardInfoRsp(targetUid, target.getShowNameCardInfoList()));
|
||||
}
|
||||
}
|
||||
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.GetFriendShowNameCardInfoReqOuterClass;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketGetFriendShowNameCardInfoRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.GetFriendShowNameCardInfoReq)
|
||||
public class HandlerGetFriendShowNameCardInfoReq extends PacketHandler {
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
var req =
|
||||
GetFriendShowNameCardInfoReqOuterClass.GetFriendShowNameCardInfoReq.parseFrom(payload);
|
||||
|
||||
int targetUid = req.getUid();
|
||||
Player target = session.getServer().getPlayerByUid(targetUid, true);
|
||||
|
||||
session.send(
|
||||
new PacketGetFriendShowNameCardInfoRsp(targetUid, target.getShowNameCardInfoList()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,17 +1,16 @@
|
||||
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.PacketFurnitureCurModuleArrangeCountNotify;
|
||||
|
||||
@Opcodes(PacketOpcodes.GetFurnitureCurModuleArrangeCountReq)
|
||||
public class HandlerGetFurnitureCurModuleArrangeCountReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
session.send(new PacketFurnitureCurModuleArrangeCountNotify());
|
||||
}
|
||||
|
||||
}
|
||||
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.PacketFurnitureCurModuleArrangeCountNotify;
|
||||
|
||||
@Opcodes(PacketOpcodes.GetFurnitureCurModuleArrangeCountReq)
|
||||
public class HandlerGetFurnitureCurModuleArrangeCountReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
session.send(new PacketFurnitureCurModuleArrangeCountNotify());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
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.PacketGetGachaInfoRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.GetGachaInfoReq)
|
||||
public class HandlerGetGachaInfoReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
session.send(new PacketGetGachaInfoRsp(session.getServer().getGachaSystem(), session.getPlayer()));
|
||||
}
|
||||
|
||||
}
|
||||
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.PacketGetGachaInfoRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.GetGachaInfoReq)
|
||||
public class HandlerGetGachaInfoReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
session.send(
|
||||
new PacketGetGachaInfoRsp(session.getServer().getGachaSystem(), session.getPlayer()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,41 +1,41 @@
|
||||
package emu.grasscutter.server.packet.recv;
|
||||
|
||||
import emu.grasscutter.data.GameData;
|
||||
import emu.grasscutter.data.common.ItemParamData;
|
||||
import emu.grasscutter.game.player.Player;
|
||||
import emu.grasscutter.game.props.ActionReason;
|
||||
import emu.grasscutter.net.packet.Opcodes;
|
||||
import emu.grasscutter.net.packet.PacketHandler;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.GetHomeLevelUpRewardReqOuterClass.GetHomeLevelUpRewardReq;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketGetHomeLevelUpRewardRsp;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
@Opcodes(PacketOpcodes.GetHomeLevelUpRewardReq)
|
||||
public class HandlerGetHomeLevelUpRewardReq extends PacketHandler {
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
// Replica of TakePlayerLevelReward for adv rank rewards
|
||||
Player pl = session.getPlayer();
|
||||
synchronized (pl) {
|
||||
GetHomeLevelUpRewardReq req = GetHomeLevelUpRewardReq.parseFrom(payload);
|
||||
int level = req.getLevel();
|
||||
Set<Integer> homeRewardedLevels = session.getPlayer().getHomeRewardedLevels();
|
||||
if (!homeRewardedLevels.contains(level)) {// No duplicated reward
|
||||
int rewardId = GameData.getHomeWorldLevelDataMap().get(level).getRewardId();
|
||||
if (rewardId != 0) {
|
||||
List<ItemParamData> rewardItems = GameData.getRewardDataMap().get(rewardId).getRewardItemList();
|
||||
pl.getInventory().addItemParamDatas(rewardItems, ActionReason.GetHomeLevelupReward);
|
||||
homeRewardedLevels.add(level);
|
||||
pl.setHomeRewardedLevels(homeRewardedLevels);
|
||||
pl.save();
|
||||
pl.getHome().onClaimReward(pl);
|
||||
session.send(new PacketGetHomeLevelUpRewardRsp(level, rewardId));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
package emu.grasscutter.server.packet.recv;
|
||||
|
||||
import emu.grasscutter.data.GameData;
|
||||
import emu.grasscutter.data.common.ItemParamData;
|
||||
import emu.grasscutter.game.player.Player;
|
||||
import emu.grasscutter.game.props.ActionReason;
|
||||
import emu.grasscutter.net.packet.Opcodes;
|
||||
import emu.grasscutter.net.packet.PacketHandler;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.GetHomeLevelUpRewardReqOuterClass.GetHomeLevelUpRewardReq;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketGetHomeLevelUpRewardRsp;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
@Opcodes(PacketOpcodes.GetHomeLevelUpRewardReq)
|
||||
public class HandlerGetHomeLevelUpRewardReq extends PacketHandler {
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
// Replica of TakePlayerLevelReward for adv rank rewards
|
||||
Player pl = session.getPlayer();
|
||||
synchronized (pl) {
|
||||
GetHomeLevelUpRewardReq req = GetHomeLevelUpRewardReq.parseFrom(payload);
|
||||
int level = req.getLevel();
|
||||
Set<Integer> homeRewardedLevels = session.getPlayer().getHomeRewardedLevels();
|
||||
if (!homeRewardedLevels.contains(level)) { // No duplicated reward
|
||||
int rewardId = GameData.getHomeWorldLevelDataMap().get(level).getRewardId();
|
||||
if (rewardId != 0) {
|
||||
List<ItemParamData> rewardItems =
|
||||
GameData.getRewardDataMap().get(rewardId).getRewardItemList();
|
||||
pl.getInventory().addItemParamDatas(rewardItems, ActionReason.GetHomeLevelupReward);
|
||||
homeRewardedLevels.add(level);
|
||||
pl.setHomeRewardedLevels(homeRewardedLevels);
|
||||
pl.save();
|
||||
pl.getHome().onClaimReward(pl);
|
||||
session.send(new PacketGetHomeLevelUpRewardRsp(level, rewardId));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,24 +1,23 @@
|
||||
package emu.grasscutter.server.packet.recv;
|
||||
|
||||
import emu.grasscutter.net.packet.Opcodes;
|
||||
import emu.grasscutter.net.packet.PacketHandler;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.GetInvestigationMonsterReqOuterClass;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketGetInvestigationMonsterRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.GetInvestigationMonsterReq)
|
||||
public class HandlerGetInvestigationMonsterReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
var req = GetInvestigationMonsterReqOuterClass.GetInvestigationMonsterReq.parseFrom(payload);
|
||||
|
||||
session.send(new PacketGetInvestigationMonsterRsp(
|
||||
session.getPlayer(),
|
||||
session.getServer().getWorldDataSystem(),
|
||||
req.getCityIdListList()));
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
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.GetInvestigationMonsterReqOuterClass;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketGetInvestigationMonsterRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.GetInvestigationMonsterReq)
|
||||
public class HandlerGetInvestigationMonsterReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
var req = GetInvestigationMonsterReqOuterClass.GetInvestigationMonsterReq.parseFrom(payload);
|
||||
|
||||
session.send(
|
||||
new PacketGetInvestigationMonsterRsp(
|
||||
session.getPlayer(),
|
||||
session.getServer().getWorldDataSystem(),
|
||||
req.getCityIdListList()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,19 +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.GetMailItemReqOuterClass;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketGetMailItemRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.GetMailItemReq)
|
||||
public class HandlerGetMailItemReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
GetMailItemReqOuterClass.GetMailItemReq req = GetMailItemReqOuterClass.GetMailItemReq.parseFrom(payload);
|
||||
session.send(new PacketGetMailItemRsp(session.getPlayer(), req.getMailIdListList()));
|
||||
}
|
||||
|
||||
}
|
||||
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.GetMailItemReqOuterClass;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketGetMailItemRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.GetMailItemReq)
|
||||
public class HandlerGetMailItemReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
GetMailItemReqOuterClass.GetMailItemReq req =
|
||||
GetMailItemReqOuterClass.GetMailItemReq.parseFrom(payload);
|
||||
session.send(new PacketGetMailItemRsp(session.getPlayer(), req.getMailIdListList()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,17 +1,16 @@
|
||||
package emu.grasscutter.server.packet.recv;
|
||||
|
||||
import emu.grasscutter.net.packet.BasePacket;
|
||||
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.GetPlayerBlacklistReq)
|
||||
public class HandlerGetPlayerBlacklistReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
session.send(new BasePacket(PacketOpcodes.GetPlayerBlacklistRsp).buildHeader(3));
|
||||
}
|
||||
|
||||
}
|
||||
package emu.grasscutter.server.packet.recv;
|
||||
|
||||
import emu.grasscutter.net.packet.BasePacket;
|
||||
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.GetPlayerBlacklistReq)
|
||||
public class HandlerGetPlayerBlacklistReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
session.send(new BasePacket(PacketOpcodes.GetPlayerBlacklistRsp).buildHeader(3));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
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.PacketGetPlayerFriendListRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.GetPlayerFriendListReq)
|
||||
public class HandlerGetPlayerFriendListReq extends PacketHandler {
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
//session.send(new PacketGetPlayerAskFriendListRsp(session.getPlayer()));
|
||||
session.send(new PacketGetPlayerFriendListRsp(session.getPlayer()));
|
||||
}
|
||||
}
|
||||
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.PacketGetPlayerFriendListRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.GetPlayerFriendListReq)
|
||||
public class HandlerGetPlayerFriendListReq extends PacketHandler {
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
// session.send(new PacketGetPlayerAskFriendListRsp(session.getPlayer()));
|
||||
session.send(new PacketGetPlayerFriendListRsp(session.getPlayer()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,17 +1,16 @@
|
||||
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.PacketPlayerHomeCompInfoNotify;
|
||||
|
||||
@Opcodes(PacketOpcodes.GetPlayerHomeCompInfoReq)
|
||||
public class HandlerGetPlayerHomeCompInfoReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
session.send(new PacketPlayerHomeCompInfoNotify(session.getPlayer()));
|
||||
}
|
||||
|
||||
}
|
||||
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.PacketPlayerHomeCompInfoNotify;
|
||||
|
||||
@Opcodes(PacketOpcodes.GetPlayerHomeCompInfoReq)
|
||||
public class HandlerGetPlayerHomeCompInfoReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
session.send(new PacketPlayerHomeCompInfoNotify(session.getPlayer()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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.GetPlayerSocialDetailReqOuterClass.GetPlayerSocialDetailReq;
|
||||
import emu.grasscutter.net.proto.SocialDetailOuterClass.SocialDetail;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketGetPlayerSocialDetailRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.GetPlayerSocialDetailReq)
|
||||
public class HandlerGetPlayerSocialDetailReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
GetPlayerSocialDetailReq req = GetPlayerSocialDetailReq.parseFrom(payload);
|
||||
|
||||
SocialDetail.Builder detail = session.getServer().getSocialDetailByUid(req.getUid());
|
||||
|
||||
if (detail != null) {
|
||||
detail.setIsFriend(session.getPlayer().getFriendsList().isFriendsWith(req.getUid()));
|
||||
}
|
||||
|
||||
session.send(new PacketGetPlayerSocialDetailRsp(detail));
|
||||
}
|
||||
}
|
||||
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.GetPlayerSocialDetailReqOuterClass.GetPlayerSocialDetailReq;
|
||||
import emu.grasscutter.net.proto.SocialDetailOuterClass.SocialDetail;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketGetPlayerSocialDetailRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.GetPlayerSocialDetailReq)
|
||||
public class HandlerGetPlayerSocialDetailReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
GetPlayerSocialDetailReq req = GetPlayerSocialDetailReq.parseFrom(payload);
|
||||
|
||||
SocialDetail.Builder detail = session.getServer().getSocialDetailByUid(req.getUid());
|
||||
|
||||
if (detail != null) {
|
||||
detail.setIsFriend(session.getPlayer().getFriendsList().isFriendsWith(req.getUid()));
|
||||
}
|
||||
|
||||
session.send(new PacketGetPlayerSocialDetailRsp(detail));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,138 +1,146 @@
|
||||
package emu.grasscutter.server.packet.recv;
|
||||
|
||||
import emu.grasscutter.Grasscutter;
|
||||
import emu.grasscutter.database.DatabaseHelper;
|
||||
import emu.grasscutter.game.Account;
|
||||
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.GetPlayerTokenReqOuterClass.GetPlayerTokenReq;
|
||||
import emu.grasscutter.server.event.game.PlayerCreationEvent;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.game.GameSession.SessionState;
|
||||
import emu.grasscutter.server.packet.send.PacketGetPlayerTokenRsp;
|
||||
import emu.grasscutter.utils.ByteHelper;
|
||||
import emu.grasscutter.utils.Crypto;
|
||||
import emu.grasscutter.utils.Utils;
|
||||
|
||||
import javax.crypto.Cipher;
|
||||
import java.nio.ByteBuffer;
|
||||
import java.security.Signature;
|
||||
|
||||
import static emu.grasscutter.config.Configuration.ACCOUNT;
|
||||
|
||||
@Opcodes(PacketOpcodes.GetPlayerTokenReq)
|
||||
public class HandlerGetPlayerTokenReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
GetPlayerTokenReq req = GetPlayerTokenReq.parseFrom(payload);
|
||||
|
||||
// Authenticate
|
||||
Account account = DatabaseHelper.getAccountById(req.getAccountUid());
|
||||
if (account == null || !account.getToken().equals(req.getAccountToken())) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Set account
|
||||
session.setAccount(account);
|
||||
|
||||
// Check if player object exists in server
|
||||
// NOTE: CHECKING MUST SITUATED HERE (BEFORE getPlayerByUid)! because to save firstly ,to load secondly !!!
|
||||
// TODO - optimize
|
||||
boolean kicked = false;
|
||||
Player exists = Grasscutter.getGameServer().getPlayerByAccountId(account.getId());
|
||||
if (exists != null) {
|
||||
GameSession existsSession = exists.getSession();
|
||||
if (existsSession != session) {// No self-kicking
|
||||
exists.onLogout();//must save immediately , or the below will load old data
|
||||
existsSession.close();
|
||||
Grasscutter.getLogger().warn("Player {} was kicked due to duplicated login", account.getUsername());
|
||||
kicked = true;
|
||||
}
|
||||
}
|
||||
|
||||
//NOTE: If there are 5 online players, max count of player is 5,
|
||||
// a new client want to login by kicking one of them ,
|
||||
// I think it should be allowed
|
||||
if (!kicked) {
|
||||
// Max players limit
|
||||
if (ACCOUNT.maxPlayer > -1 && Grasscutter.getGameServer().getPlayers().size() >= ACCOUNT.maxPlayer) {
|
||||
session.close();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// Call creation event.
|
||||
PlayerCreationEvent event = new PlayerCreationEvent(session, Player.class);
|
||||
event.call();
|
||||
|
||||
// Get player.
|
||||
Player player = DatabaseHelper.getPlayerByAccount(account, event.getPlayerClass());
|
||||
|
||||
if (player == null) {
|
||||
int nextPlayerUid = DatabaseHelper.getNextPlayerId(session.getAccount().getReservedPlayerUid());
|
||||
|
||||
// Create player instance from event.
|
||||
player = event.getPlayerClass().getDeclaredConstructor(GameSession.class).newInstance(session);
|
||||
|
||||
// Save to db
|
||||
DatabaseHelper.generatePlayerUid(player, nextPlayerUid);
|
||||
}
|
||||
|
||||
// Set player object for session
|
||||
session.setPlayer(player);
|
||||
|
||||
// Checks if the player is banned
|
||||
if (session.getAccount().isBanned()) {
|
||||
session.setState(SessionState.ACCOUNT_BANNED);
|
||||
session.send(new PacketGetPlayerTokenRsp(session, 21, "FORBID_CHEATING_PLUGINS", session.getAccount().getBanEndTime()));
|
||||
return;
|
||||
}
|
||||
|
||||
// Load player from database
|
||||
player.loadFromDatabase();
|
||||
|
||||
// Set session state
|
||||
session.setUseSecretKey(true);
|
||||
session.setState(SessionState.WAITING_FOR_LOGIN);
|
||||
|
||||
// Only >= 2.7.50 has this
|
||||
if (req.getKeyId() > 0) {
|
||||
try {
|
||||
Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
|
||||
cipher.init(Cipher.DECRYPT_MODE, Crypto.CUR_SIGNING_KEY);
|
||||
|
||||
var client_seed_encrypted = Utils.base64Decode(req.getClientRandKey());
|
||||
var client_seed = ByteBuffer.wrap(cipher.doFinal(client_seed_encrypted))
|
||||
.getLong();
|
||||
|
||||
byte[] seed_bytes = ByteBuffer.wrap(new byte[8])
|
||||
.putLong(Crypto.ENCRYPT_SEED ^ client_seed)
|
||||
.array();
|
||||
|
||||
cipher.init(Cipher.ENCRYPT_MODE, Crypto.EncryptionKeys.get(req.getKeyId()));
|
||||
var seed_encrypted = cipher.doFinal(seed_bytes);
|
||||
|
||||
Signature privateSignature = Signature.getInstance("SHA256withRSA");
|
||||
privateSignature.initSign(Crypto.CUR_SIGNING_KEY);
|
||||
privateSignature.update(seed_bytes);
|
||||
|
||||
session.send(new PacketGetPlayerTokenRsp(session, Utils.base64Encode(seed_encrypted), Utils.base64Encode(privateSignature.sign())));
|
||||
} catch (Exception ignore) {
|
||||
// Only UA Patch users will have exception
|
||||
byte[] clientBytes = Utils.base64Decode(req.getClientRandKey());
|
||||
byte[] seed = ByteHelper.longToBytes(Crypto.ENCRYPT_SEED);
|
||||
Crypto.xor(clientBytes, seed);
|
||||
|
||||
String base64str = Utils.base64Encode(clientBytes);
|
||||
|
||||
session.send(new PacketGetPlayerTokenRsp(session, base64str, "bm90aGluZyBoZXJl"));
|
||||
}
|
||||
} else {
|
||||
// Send packet
|
||||
session.send(new PacketGetPlayerTokenRsp(session));
|
||||
}
|
||||
}
|
||||
}
|
||||
package emu.grasscutter.server.packet.recv;
|
||||
|
||||
import static emu.grasscutter.config.Configuration.ACCOUNT;
|
||||
|
||||
import emu.grasscutter.Grasscutter;
|
||||
import emu.grasscutter.database.DatabaseHelper;
|
||||
import emu.grasscutter.game.Account;
|
||||
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.GetPlayerTokenReqOuterClass.GetPlayerTokenReq;
|
||||
import emu.grasscutter.server.event.game.PlayerCreationEvent;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.game.GameSession.SessionState;
|
||||
import emu.grasscutter.server.packet.send.PacketGetPlayerTokenRsp;
|
||||
import emu.grasscutter.utils.ByteHelper;
|
||||
import emu.grasscutter.utils.Crypto;
|
||||
import emu.grasscutter.utils.Utils;
|
||||
import java.nio.ByteBuffer;
|
||||
import java.security.Signature;
|
||||
import javax.crypto.Cipher;
|
||||
|
||||
@Opcodes(PacketOpcodes.GetPlayerTokenReq)
|
||||
public class HandlerGetPlayerTokenReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
GetPlayerTokenReq req = GetPlayerTokenReq.parseFrom(payload);
|
||||
|
||||
// Authenticate
|
||||
Account account = DatabaseHelper.getAccountById(req.getAccountUid());
|
||||
if (account == null || !account.getToken().equals(req.getAccountToken())) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Set account
|
||||
session.setAccount(account);
|
||||
|
||||
// Check if player object exists in server
|
||||
// NOTE: CHECKING MUST SITUATED HERE (BEFORE getPlayerByUid)! because to save firstly ,to load
|
||||
// secondly !!!
|
||||
// TODO - optimize
|
||||
boolean kicked = false;
|
||||
Player exists = Grasscutter.getGameServer().getPlayerByAccountId(account.getId());
|
||||
if (exists != null) {
|
||||
GameSession existsSession = exists.getSession();
|
||||
if (existsSession != session) { // No self-kicking
|
||||
exists.onLogout(); // must save immediately , or the below will load old data
|
||||
existsSession.close();
|
||||
Grasscutter.getLogger()
|
||||
.warn("Player {} was kicked due to duplicated login", account.getUsername());
|
||||
kicked = true;
|
||||
}
|
||||
}
|
||||
|
||||
// NOTE: If there are 5 online players, max count of player is 5,
|
||||
// a new client want to login by kicking one of them ,
|
||||
// I think it should be allowed
|
||||
if (!kicked) {
|
||||
// Max players limit
|
||||
if (ACCOUNT.maxPlayer > -1
|
||||
&& Grasscutter.getGameServer().getPlayers().size() >= ACCOUNT.maxPlayer) {
|
||||
session.close();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// Call creation event.
|
||||
PlayerCreationEvent event = new PlayerCreationEvent(session, Player.class);
|
||||
event.call();
|
||||
|
||||
// Get player.
|
||||
Player player = DatabaseHelper.getPlayerByAccount(account, event.getPlayerClass());
|
||||
|
||||
if (player == null) {
|
||||
int nextPlayerUid =
|
||||
DatabaseHelper.getNextPlayerId(session.getAccount().getReservedPlayerUid());
|
||||
|
||||
// Create player instance from event.
|
||||
player =
|
||||
event.getPlayerClass().getDeclaredConstructor(GameSession.class).newInstance(session);
|
||||
|
||||
// Save to db
|
||||
DatabaseHelper.generatePlayerUid(player, nextPlayerUid);
|
||||
}
|
||||
|
||||
// Set player object for session
|
||||
session.setPlayer(player);
|
||||
|
||||
// Checks if the player is banned
|
||||
if (session.getAccount().isBanned()) {
|
||||
session.setState(SessionState.ACCOUNT_BANNED);
|
||||
session.send(
|
||||
new PacketGetPlayerTokenRsp(
|
||||
session, 21, "FORBID_CHEATING_PLUGINS", session.getAccount().getBanEndTime()));
|
||||
return;
|
||||
}
|
||||
|
||||
// Load player from database
|
||||
player.loadFromDatabase();
|
||||
|
||||
// Set session state
|
||||
session.setUseSecretKey(true);
|
||||
session.setState(SessionState.WAITING_FOR_LOGIN);
|
||||
|
||||
// Only >= 2.7.50 has this
|
||||
if (req.getKeyId() > 0) {
|
||||
try {
|
||||
Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
|
||||
cipher.init(Cipher.DECRYPT_MODE, Crypto.CUR_SIGNING_KEY);
|
||||
|
||||
var client_seed_encrypted = Utils.base64Decode(req.getClientRandKey());
|
||||
var client_seed = ByteBuffer.wrap(cipher.doFinal(client_seed_encrypted)).getLong();
|
||||
|
||||
byte[] seed_bytes =
|
||||
ByteBuffer.wrap(new byte[8]).putLong(Crypto.ENCRYPT_SEED ^ client_seed).array();
|
||||
|
||||
cipher.init(Cipher.ENCRYPT_MODE, Crypto.EncryptionKeys.get(req.getKeyId()));
|
||||
var seed_encrypted = cipher.doFinal(seed_bytes);
|
||||
|
||||
Signature privateSignature = Signature.getInstance("SHA256withRSA");
|
||||
privateSignature.initSign(Crypto.CUR_SIGNING_KEY);
|
||||
privateSignature.update(seed_bytes);
|
||||
|
||||
session.send(
|
||||
new PacketGetPlayerTokenRsp(
|
||||
session,
|
||||
Utils.base64Encode(seed_encrypted),
|
||||
Utils.base64Encode(privateSignature.sign())));
|
||||
} catch (Exception ignore) {
|
||||
// Only UA Patch users will have exception
|
||||
byte[] clientBytes = Utils.base64Decode(req.getClientRandKey());
|
||||
byte[] seed = ByteHelper.longToBytes(Crypto.ENCRYPT_SEED);
|
||||
Crypto.xor(clientBytes, seed);
|
||||
|
||||
String base64str = Utils.base64Encode(clientBytes);
|
||||
|
||||
session.send(new PacketGetPlayerTokenRsp(session, base64str, "bm90aGluZyBoZXJl"));
|
||||
}
|
||||
} else {
|
||||
// Send packet
|
||||
session.send(new PacketGetPlayerTokenRsp(session));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,16 +1,15 @@
|
||||
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.GetRegionSearchReq)
|
||||
public class HandlerGetRegionSearchReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
// Auto template
|
||||
}
|
||||
|
||||
}
|
||||
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.GetRegionSearchReq)
|
||||
public class HandlerGetRegionSearchReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
// Auto template
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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.GetSceneAreaReqOuterClass.GetSceneAreaReq;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketGetSceneAreaRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.GetSceneAreaReq)
|
||||
public class HandlerGetSceneAreaReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
GetSceneAreaReq req = GetSceneAreaReq.parseFrom(payload);
|
||||
|
||||
session.send(new PacketGetSceneAreaRsp(session.getPlayer(), req.getSceneId()));
|
||||
}
|
||||
|
||||
}
|
||||
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.GetSceneAreaReqOuterClass.GetSceneAreaReq;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketGetSceneAreaRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.GetSceneAreaReq)
|
||||
public class HandlerGetSceneAreaReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
GetSceneAreaReq req = GetSceneAreaReq.parseFrom(payload);
|
||||
|
||||
session.send(new PacketGetSceneAreaRsp(session.getPlayer(), req.getSceneId()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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.GetScenePointReqOuterClass.GetScenePointReq;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketGetScenePointRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.GetScenePointReq)
|
||||
public class HandlerGetScenePointReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
GetScenePointReq req = GetScenePointReq.parseFrom(payload);
|
||||
|
||||
session.send(new PacketGetScenePointRsp(session.getPlayer(), req.getSceneId()));
|
||||
}
|
||||
|
||||
}
|
||||
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.GetScenePointReqOuterClass.GetScenePointReq;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketGetScenePointRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.GetScenePointReq)
|
||||
public class HandlerGetScenePointReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
GetScenePointReq req = GetScenePointReq.parseFrom(payload);
|
||||
|
||||
session.send(new PacketGetScenePointRsp(session.getPlayer(), req.getSceneId()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
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.GetShopReqOuterClass.GetShopReq;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketGetShopRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.GetShopReq)
|
||||
public class HandlerGetShopReq extends PacketHandler {
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
GetShopReq req = GetShopReq.parseFrom(payload);
|
||||
|
||||
session.send(new PacketGetShopRsp(session.getPlayer(), req.getShopType()));
|
||||
}
|
||||
}
|
||||
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.GetShopReqOuterClass.GetShopReq;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketGetShopRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.GetShopReq)
|
||||
public class HandlerGetShopReq extends PacketHandler {
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
GetShopReq req = GetShopReq.parseFrom(payload);
|
||||
|
||||
session.send(new PacketGetShopRsp(session.getPlayer(), req.getShopType()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,18 +1,17 @@
|
||||
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.PacketGetShopmallDataRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.GetShopmallDataReq)
|
||||
public class HandlerGetShopmallDataReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
// TODO add the correct shops
|
||||
session.send(new PacketGetShopmallDataRsp());
|
||||
}
|
||||
|
||||
}
|
||||
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.PacketGetShopmallDataRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.GetShopmallDataReq)
|
||||
public class HandlerGetShopmallDataReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
// TODO add the correct shops
|
||||
session.send(new PacketGetShopmallDataRsp());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,19 +1,18 @@
|
||||
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.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketGetWidgetSlotRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.GetWidgetSlotReq)
|
||||
public class HandlerGetWidgetSlotReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
Player player = session.getPlayer();
|
||||
session.send(new PacketGetWidgetSlotRsp(player));
|
||||
}
|
||||
|
||||
}
|
||||
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.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketGetWidgetSlotRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.GetWidgetSlotReq)
|
||||
public class HandlerGetWidgetSlotReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
Player player = session.getPlayer();
|
||||
session.send(new PacketGetWidgetSlotRsp(player));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,17 +1,16 @@
|
||||
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.PacketGetWorldMpInfoRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.GetWorldMpInfoReq)
|
||||
public class HandlerGetWorldMpInfoReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
session.send(new PacketGetWorldMpInfoRsp(session.getPlayer().getWorld()));
|
||||
}
|
||||
|
||||
}
|
||||
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.PacketGetWorldMpInfoRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.GetWorldMpInfoReq)
|
||||
public class HandlerGetWorldMpInfoReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
session.send(new PacketGetWorldMpInfoRsp(session.getPlayer().getWorld()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,19 +1,17 @@
|
||||
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.HitTreeNotifyOuterClass.HitTreeNotify;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
|
||||
/**
|
||||
* Implement Deforestation Function
|
||||
*/
|
||||
@Opcodes(PacketOpcodes.HitTreeNotify)
|
||||
public class HandlerHitTreeNotify extends PacketHandler {
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
HitTreeNotify hit = HitTreeNotify.parseFrom(payload);
|
||||
session.getPlayer().getDeforestationManager().onDeforestationInvoke(hit);
|
||||
}
|
||||
}
|
||||
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.HitTreeNotifyOuterClass.HitTreeNotify;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
|
||||
/** Implement Deforestation Function */
|
||||
@Opcodes(PacketOpcodes.HitTreeNotify)
|
||||
public class HandlerHitTreeNotify extends PacketHandler {
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
HitTreeNotify hit = HitTreeNotify.parseFrom(payload);
|
||||
session.getPlayer().getDeforestationManager().onDeforestationInvoke(hit);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,27 +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.HomeChangeEditModeReqOuterClass;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketHomeBasicInfoNotify;
|
||||
import emu.grasscutter.server.packet.send.PacketHomeChangeEditModeRsp;
|
||||
import emu.grasscutter.server.packet.send.PacketHomeComfortInfoNotify;
|
||||
import emu.grasscutter.server.packet.send.PacketHomePreChangeEditModeNotify;
|
||||
|
||||
@Opcodes(PacketOpcodes.HomeChangeEditModeReq)
|
||||
public class HandlerHomeChangeEditModeReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
var req = HomeChangeEditModeReqOuterClass.HomeChangeEditModeReq.parseFrom(payload);
|
||||
|
||||
session.send(new PacketHomePreChangeEditModeNotify(req.getIsEnterEditMode()));
|
||||
session.send(new PacketHomeBasicInfoNotify(session.getPlayer(), req.getIsEnterEditMode()));
|
||||
session.send(new PacketHomeComfortInfoNotify(session.getPlayer()));
|
||||
|
||||
session.send(new PacketHomeChangeEditModeRsp(req.getIsEnterEditMode()));
|
||||
}
|
||||
|
||||
}
|
||||
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.HomeChangeEditModeReqOuterClass;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketHomeBasicInfoNotify;
|
||||
import emu.grasscutter.server.packet.send.PacketHomeChangeEditModeRsp;
|
||||
import emu.grasscutter.server.packet.send.PacketHomeComfortInfoNotify;
|
||||
import emu.grasscutter.server.packet.send.PacketHomePreChangeEditModeNotify;
|
||||
|
||||
@Opcodes(PacketOpcodes.HomeChangeEditModeReq)
|
||||
public class HandlerHomeChangeEditModeReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
var req = HomeChangeEditModeReqOuterClass.HomeChangeEditModeReq.parseFrom(payload);
|
||||
|
||||
session.send(new PacketHomePreChangeEditModeNotify(req.getIsEnterEditMode()));
|
||||
session.send(new PacketHomeBasicInfoNotify(session.getPlayer(), req.getIsEnterEditMode()));
|
||||
session.send(new PacketHomeComfortInfoNotify(session.getPlayer()));
|
||||
|
||||
session.send(new PacketHomeChangeEditModeRsp(req.getIsEnterEditMode()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,37 +1,37 @@
|
||||
package emu.grasscutter.server.packet.recv;
|
||||
|
||||
import emu.grasscutter.game.world.Scene;
|
||||
import emu.grasscutter.net.packet.Opcodes;
|
||||
import emu.grasscutter.net.packet.PacketHandler;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.HomeChangeModuleReqOuterClass;
|
||||
import emu.grasscutter.server.event.player.PlayerTeleportEvent.TeleportType;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketHomeChangeModuleRsp;
|
||||
import emu.grasscutter.server.packet.send.PacketHomeComfortInfoNotify;
|
||||
import emu.grasscutter.server.packet.send.PacketPlayerHomeCompInfoNotify;
|
||||
import emu.grasscutter.utils.Position;
|
||||
|
||||
@Opcodes(PacketOpcodes.HomeChangeModuleReq)
|
||||
public class HandlerHomeChangeModuleReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
HomeChangeModuleReqOuterClass.HomeChangeModuleReq req =
|
||||
HomeChangeModuleReqOuterClass.HomeChangeModuleReq.parseFrom(payload);
|
||||
session.getPlayer().setCurrentRealmId(req.getTargetModuleId());
|
||||
session.send(new PacketHomeChangeModuleRsp(req.getTargetModuleId()));
|
||||
session.send(new PacketPlayerHomeCompInfoNotify(session.getPlayer()));
|
||||
session.send(new PacketHomeComfortInfoNotify(session.getPlayer()));
|
||||
|
||||
int realmId = 2000 + req.getTargetModuleId();
|
||||
|
||||
Scene scene = session.getPlayer().getWorld().getSceneById(realmId);
|
||||
Position pos = scene.getScriptManager().getConfig().born_pos;
|
||||
|
||||
session.getPlayer().getWorld().transferPlayerToScene(
|
||||
session.getPlayer(), realmId,
|
||||
TeleportType.WAYPOINT, pos
|
||||
);
|
||||
}
|
||||
}
|
||||
package emu.grasscutter.server.packet.recv;
|
||||
|
||||
import emu.grasscutter.game.world.Scene;
|
||||
import emu.grasscutter.net.packet.Opcodes;
|
||||
import emu.grasscutter.net.packet.PacketHandler;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.HomeChangeModuleReqOuterClass;
|
||||
import emu.grasscutter.server.event.player.PlayerTeleportEvent.TeleportType;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketHomeChangeModuleRsp;
|
||||
import emu.grasscutter.server.packet.send.PacketHomeComfortInfoNotify;
|
||||
import emu.grasscutter.server.packet.send.PacketPlayerHomeCompInfoNotify;
|
||||
import emu.grasscutter.utils.Position;
|
||||
|
||||
@Opcodes(PacketOpcodes.HomeChangeModuleReq)
|
||||
public class HandlerHomeChangeModuleReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
HomeChangeModuleReqOuterClass.HomeChangeModuleReq req =
|
||||
HomeChangeModuleReqOuterClass.HomeChangeModuleReq.parseFrom(payload);
|
||||
session.getPlayer().setCurrentRealmId(req.getTargetModuleId());
|
||||
session.send(new PacketHomeChangeModuleRsp(req.getTargetModuleId()));
|
||||
session.send(new PacketPlayerHomeCompInfoNotify(session.getPlayer()));
|
||||
session.send(new PacketHomeComfortInfoNotify(session.getPlayer()));
|
||||
|
||||
int realmId = 2000 + req.getTargetModuleId();
|
||||
|
||||
Scene scene = session.getPlayer().getWorld().getSceneById(realmId);
|
||||
Position pos = scene.getScriptManager().getConfig().born_pos;
|
||||
|
||||
session
|
||||
.getPlayer()
|
||||
.getWorld()
|
||||
.transferPlayerToScene(session.getPlayer(), realmId, TeleportType.WAYPOINT, pos);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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.HomeChooseModuleReqOuterClass;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketHomeChooseModuleRsp;
|
||||
import emu.grasscutter.server.packet.send.PacketHomeComfortInfoNotify;
|
||||
import emu.grasscutter.server.packet.send.PacketPlayerHomeCompInfoNotify;
|
||||
|
||||
|
||||
@Opcodes(PacketOpcodes.HomeChooseModuleReq)
|
||||
public class HandlerHomeChooseModuleReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
HomeChooseModuleReqOuterClass.HomeChooseModuleReq req =
|
||||
HomeChooseModuleReqOuterClass.HomeChooseModuleReq.parseFrom(payload);
|
||||
session.getPlayer().addRealmList(req.getModuleId());
|
||||
session.getPlayer().setCurrentRealmId(req.getModuleId());
|
||||
session.send(new PacketHomeChooseModuleRsp(req.getModuleId()));
|
||||
session.send(new PacketPlayerHomeCompInfoNotify(session.getPlayer()));
|
||||
session.send(new PacketHomeComfortInfoNotify(session.getPlayer()));
|
||||
}
|
||||
}
|
||||
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.HomeChooseModuleReqOuterClass;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketHomeChooseModuleRsp;
|
||||
import emu.grasscutter.server.packet.send.PacketHomeComfortInfoNotify;
|
||||
import emu.grasscutter.server.packet.send.PacketPlayerHomeCompInfoNotify;
|
||||
|
||||
@Opcodes(PacketOpcodes.HomeChooseModuleReq)
|
||||
public class HandlerHomeChooseModuleReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
HomeChooseModuleReqOuterClass.HomeChooseModuleReq req =
|
||||
HomeChooseModuleReqOuterClass.HomeChooseModuleReq.parseFrom(payload);
|
||||
session.getPlayer().addRealmList(req.getModuleId());
|
||||
session.getPlayer().setCurrentRealmId(req.getModuleId());
|
||||
session.send(new PacketHomeChooseModuleRsp(req.getModuleId()));
|
||||
session.send(new PacketPlayerHomeCompInfoNotify(session.getPlayer()));
|
||||
session.send(new PacketHomeComfortInfoNotify(session.getPlayer()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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.PacketHomeEnterEditModeFinishRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.HomeEnterEditModeFinishReq)
|
||||
public class HandlerHomeEnterEditModeFinishReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
/*
|
||||
* This packet is about the edit mode
|
||||
*/
|
||||
session.send(new PacketHomeEnterEditModeFinishRsp());
|
||||
}
|
||||
|
||||
}
|
||||
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.PacketHomeEnterEditModeFinishRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.HomeEnterEditModeFinishReq)
|
||||
public class HandlerHomeEnterEditModeFinishReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
/*
|
||||
* This packet is about the edit mode
|
||||
*/
|
||||
session.send(new PacketHomeEnterEditModeFinishRsp());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
package emu.grasscutter.server.packet.recv;
|
||||
|
||||
import emu.grasscutter.net.packet.Opcodes;
|
||||
import emu.grasscutter.net.packet.PacketHandler;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.HomeGetArrangementInfoReqOuterClass;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketHomeGetArrangementInfoRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.HomeGetArrangementInfoReq)
|
||||
public class HandlerHomeGetArrangementInfoReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
var req = HomeGetArrangementInfoReqOuterClass.HomeGetArrangementInfoReq.parseFrom(payload);
|
||||
|
||||
session.send(new PacketHomeGetArrangementInfoRsp(session.getPlayer(), req.getSceneIdListList()));
|
||||
}
|
||||
|
||||
}
|
||||
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.HomeGetArrangementInfoReqOuterClass;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketHomeGetArrangementInfoRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.HomeGetArrangementInfoReq)
|
||||
public class HandlerHomeGetArrangementInfoReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
var req = HomeGetArrangementInfoReqOuterClass.HomeGetArrangementInfoReq.parseFrom(payload);
|
||||
|
||||
session.send(
|
||||
new PacketHomeGetArrangementInfoRsp(session.getPlayer(), req.getSceneIdListList()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,18 +1,17 @@
|
||||
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.PacketHomeBasicInfoNotify;
|
||||
|
||||
@Opcodes(PacketOpcodes.HomeGetBasicInfoReq)
|
||||
public class HandlerHomeGetBasicInfoReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
|
||||
session.send(new PacketHomeBasicInfoNotify(session.getPlayer(), false));
|
||||
}
|
||||
|
||||
}
|
||||
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.PacketHomeBasicInfoNotify;
|
||||
|
||||
@Opcodes(PacketOpcodes.HomeGetBasicInfoReq)
|
||||
public class HandlerHomeGetBasicInfoReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
|
||||
session.send(new PacketHomeBasicInfoNotify(session.getPlayer(), false));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,18 +1,17 @@
|
||||
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.PacketHomeResourceTakeFetterExpRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.HomeResourceTakeFetterExpReq)
|
||||
public class HandlerHomeResourceTakeFetterExpReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
|
||||
session.send(new PacketHomeResourceTakeFetterExpRsp(session.getPlayer()));
|
||||
}
|
||||
|
||||
}
|
||||
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.PacketHomeResourceTakeFetterExpRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.HomeResourceTakeFetterExpReq)
|
||||
public class HandlerHomeResourceTakeFetterExpReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
|
||||
session.send(new PacketHomeResourceTakeFetterExpRsp(session.getPlayer()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,18 +1,17 @@
|
||||
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.PacketHomeResourceTakeHomeCoinRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.HomeResourceTakeHomeCoinReq)
|
||||
public class HandlerHomeResourceTakeHomeCoinReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
|
||||
session.send(new PacketHomeResourceTakeHomeCoinRsp(session.getPlayer()));
|
||||
}
|
||||
|
||||
}
|
||||
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.PacketHomeResourceTakeHomeCoinRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.HomeResourceTakeHomeCoinReq)
|
||||
public class HandlerHomeResourceTakeHomeCoinReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
|
||||
session.send(new PacketHomeResourceTakeHomeCoinRsp(session.getPlayer()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,17 +1,16 @@
|
||||
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.PacketHomeSceneInitFinishRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.HomeSceneInitFinishReq)
|
||||
public class HandlerHomeSceneInitFinishReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
session.send(new PacketHomeSceneInitFinishRsp());
|
||||
}
|
||||
|
||||
}
|
||||
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.PacketHomeSceneInitFinishRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.HomeSceneInitFinishReq)
|
||||
public class HandlerHomeSceneInitFinishReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
session.send(new PacketHomeSceneInitFinishRsp());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,46 +1,51 @@
|
||||
package emu.grasscutter.server.packet.recv;
|
||||
|
||||
import emu.grasscutter.game.world.Scene;
|
||||
import emu.grasscutter.net.packet.Opcodes;
|
||||
import emu.grasscutter.net.packet.PacketHandler;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.HomeSceneJumpReqOuterClass;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketHomeSceneJumpRsp;
|
||||
import emu.grasscutter.utils.Position;
|
||||
|
||||
@Opcodes(PacketOpcodes.HomeSceneJumpReq)
|
||||
public class HandlerHomeSceneJumpReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
var req = HomeSceneJumpReqOuterClass.HomeSceneJumpReq.parseFrom(payload);
|
||||
|
||||
int realmId = 2000 + session.getPlayer().getCurrentRealmId();
|
||||
|
||||
var home = session.getPlayer().getHome();
|
||||
var homeScene = home.getHomeSceneItem(realmId);
|
||||
home.save();
|
||||
|
||||
Scene scene = session.getPlayer().getWorld().getSceneById(req.getIsEnterRoomScene() ? homeScene.getRoomSceneId() : realmId);
|
||||
Position pos = scene.getScriptManager().getConfig().born_pos;
|
||||
Position rot = home.getSceneMap().get(scene.getId()).getBornRot();
|
||||
|
||||
// Make player face correct direction when entering or exiting
|
||||
session.getPlayer().getRotation().set(rot);
|
||||
|
||||
// Make player exit to front of main house
|
||||
if (!req.getIsEnterRoomScene()) {
|
||||
pos = home.getSceneMap().get(realmId).getBornPos();
|
||||
}
|
||||
|
||||
session.getPlayer().getWorld().transferPlayerToScene(
|
||||
session.getPlayer(),
|
||||
req.getIsEnterRoomScene() ? homeScene.getRoomSceneId() : realmId,
|
||||
pos
|
||||
);
|
||||
|
||||
session.send(new PacketHomeSceneJumpRsp(req.getIsEnterRoomScene()));
|
||||
}
|
||||
|
||||
}
|
||||
package emu.grasscutter.server.packet.recv;
|
||||
|
||||
import emu.grasscutter.game.world.Scene;
|
||||
import emu.grasscutter.net.packet.Opcodes;
|
||||
import emu.grasscutter.net.packet.PacketHandler;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.HomeSceneJumpReqOuterClass;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketHomeSceneJumpRsp;
|
||||
import emu.grasscutter.utils.Position;
|
||||
|
||||
@Opcodes(PacketOpcodes.HomeSceneJumpReq)
|
||||
public class HandlerHomeSceneJumpReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
var req = HomeSceneJumpReqOuterClass.HomeSceneJumpReq.parseFrom(payload);
|
||||
|
||||
int realmId = 2000 + session.getPlayer().getCurrentRealmId();
|
||||
|
||||
var home = session.getPlayer().getHome();
|
||||
var homeScene = home.getHomeSceneItem(realmId);
|
||||
home.save();
|
||||
|
||||
Scene scene =
|
||||
session
|
||||
.getPlayer()
|
||||
.getWorld()
|
||||
.getSceneById(req.getIsEnterRoomScene() ? homeScene.getRoomSceneId() : realmId);
|
||||
Position pos = scene.getScriptManager().getConfig().born_pos;
|
||||
Position rot = home.getSceneMap().get(scene.getId()).getBornRot();
|
||||
|
||||
// Make player face correct direction when entering or exiting
|
||||
session.getPlayer().getRotation().set(rot);
|
||||
|
||||
// Make player exit to front of main house
|
||||
if (!req.getIsEnterRoomScene()) {
|
||||
pos = home.getSceneMap().get(realmId).getBornPos();
|
||||
}
|
||||
|
||||
session
|
||||
.getPlayer()
|
||||
.getWorld()
|
||||
.transferPlayerToScene(
|
||||
session.getPlayer(),
|
||||
req.getIsEnterRoomScene() ? homeScene.getRoomSceneId() : realmId,
|
||||
pos);
|
||||
|
||||
session.send(new PacketHomeSceneJumpRsp(req.getIsEnterRoomScene()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,27 +1,27 @@
|
||||
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.HomeUpdateArrangementInfoReqOuterClass;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketHomeUpdateArrangementInfoRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.HomeUpdateArrangementInfoReq)
|
||||
public class HandlerHomeUpdateArrangementInfoReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
var req = HomeUpdateArrangementInfoReqOuterClass.HomeUpdateArrangementInfoReq.parseFrom(payload);
|
||||
|
||||
var homeScene = session.getPlayer().getHome()
|
||||
.getHomeSceneItem(session.getPlayer().getSceneId());
|
||||
|
||||
homeScene.update(req.getSceneArrangementInfo());
|
||||
|
||||
session.getPlayer().getHome().save();
|
||||
|
||||
session.send(new PacketHomeUpdateArrangementInfoRsp());
|
||||
}
|
||||
|
||||
}
|
||||
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.HomeUpdateArrangementInfoReqOuterClass;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketHomeUpdateArrangementInfoRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.HomeUpdateArrangementInfoReq)
|
||||
public class HandlerHomeUpdateArrangementInfoReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
var req =
|
||||
HomeUpdateArrangementInfoReqOuterClass.HomeUpdateArrangementInfoReq.parseFrom(payload);
|
||||
|
||||
var homeScene =
|
||||
session.getPlayer().getHome().getHomeSceneItem(session.getPlayer().getSceneId());
|
||||
|
||||
homeScene.update(req.getSceneArrangementInfo());
|
||||
|
||||
session.getPlayer().getHome().save();
|
||||
|
||||
session.send(new PacketHomeUpdateArrangementInfoRsp());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
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.MarkMapReqOuterClass.MarkMapReq;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
|
||||
@Opcodes(PacketOpcodes.MarkMapReq)
|
||||
public class HandlerMarkMapReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
MarkMapReq req = MarkMapReq.parseFrom(payload);
|
||||
session.getPlayer().getMapMarksManager().handleMapMarkReq(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.MarkMapReqOuterClass.MarkMapReq;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
|
||||
@Opcodes(PacketOpcodes.MarkMapReq)
|
||||
public class HandlerMarkMapReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
MarkMapReq req = MarkMapReq.parseFrom(payload);
|
||||
session.getPlayer().getMapMarksManager().handleMapMarkReq(req);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,28 +1,31 @@
|
||||
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.McoinExchangeHcoinReqOuterClass;
|
||||
import emu.grasscutter.net.proto.RetcodeOuterClass;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketMcoinExchangeHcoinRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.McoinExchangeHcoinReq)
|
||||
public class HandlerMcoinExchangeHcoinReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
McoinExchangeHcoinReqOuterClass.McoinExchangeHcoinReq exchangeReq = McoinExchangeHcoinReqOuterClass.McoinExchangeHcoinReq.parseFrom(payload);
|
||||
|
||||
if (session.getPlayer().getCrystals() < exchangeReq.getMcoinCost() && exchangeReq.getMcoinCost() == exchangeReq.getHcoin()) {
|
||||
session.send(new PacketMcoinExchangeHcoinRsp(RetcodeOuterClass.Retcode.RET_UNKNOWN_ERROR_VALUE));
|
||||
return;
|
||||
}
|
||||
|
||||
session.getPlayer().setCrystals(session.getPlayer().getCrystals() - exchangeReq.getMcoinCost());
|
||||
session.getPlayer().setPrimogems(session.getPlayer().getPrimogems() + exchangeReq.getHcoin());
|
||||
session.getPlayer().save();
|
||||
session.send(new PacketMcoinExchangeHcoinRsp(RetcodeOuterClass.Retcode.RET_SUCC_VALUE));
|
||||
}
|
||||
}
|
||||
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.McoinExchangeHcoinReqOuterClass;
|
||||
import emu.grasscutter.net.proto.RetcodeOuterClass;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketMcoinExchangeHcoinRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.McoinExchangeHcoinReq)
|
||||
public class HandlerMcoinExchangeHcoinReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
McoinExchangeHcoinReqOuterClass.McoinExchangeHcoinReq exchangeReq =
|
||||
McoinExchangeHcoinReqOuterClass.McoinExchangeHcoinReq.parseFrom(payload);
|
||||
|
||||
if (session.getPlayer().getCrystals() < exchangeReq.getMcoinCost()
|
||||
&& exchangeReq.getMcoinCost() == exchangeReq.getHcoin()) {
|
||||
session.send(
|
||||
new PacketMcoinExchangeHcoinRsp(RetcodeOuterClass.Retcode.RET_UNKNOWN_ERROR_VALUE));
|
||||
return;
|
||||
}
|
||||
|
||||
session.getPlayer().setCrystals(session.getPlayer().getCrystals() - exchangeReq.getMcoinCost());
|
||||
session.getPlayer().setPrimogems(session.getPlayer().getPrimogems() + exchangeReq.getHcoin());
|
||||
session.getPlayer().save();
|
||||
session.send(new PacketMcoinExchangeHcoinRsp(RetcodeOuterClass.Retcode.RET_SUCC_VALUE));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,16 +1,15 @@
|
||||
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.MonsterAIConfigHashNotify)
|
||||
public class HandlerMonsterAIConfigHashNotify extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
// Auto template
|
||||
}
|
||||
|
||||
}
|
||||
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.MonsterAIConfigHashNotify)
|
||||
public class HandlerMonsterAIConfigHashNotify extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
// Auto template
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,66 +1,68 @@
|
||||
//package emu.grasscutter.server.packet.recv;
|
||||
//
|
||||
//import emu.grasscutter.database.DatabaseHelper;
|
||||
//import emu.grasscutter.game.activity.musicgame.MusicGameActivityHandler;
|
||||
//import emu.grasscutter.game.activity.musicgame.MusicGameBeatmap;
|
||||
//import emu.grasscutter.game.activity.musicgame.MusicGamePlayerData;
|
||||
//import emu.grasscutter.game.props.ActivityType;
|
||||
//import emu.grasscutter.net.packet.Opcodes;
|
||||
//import emu.grasscutter.net.packet.PacketHandler;
|
||||
//import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
//import emu.grasscutter.net.proto.MusicGameCreateBeatmapReqOuterClass;
|
||||
//import emu.grasscutter.server.game.GameSession;
|
||||
//import emu.grasscutter.server.packet.send.PacketActivityInfoNotify;
|
||||
//import emu.grasscutter.server.packet.send.PacketMusicGameCreateBeatmapRsp;
|
||||
//import emu.grasscutter.utils.Utils;
|
||||
//
|
||||
//import java.util.Objects;
|
||||
//
|
||||
//@Opcodes(PacketOpcodes.MusicGameCreateBeatmapReq)
|
||||
//public class HandlerMusicGameCreateBeatmapReq extends PacketHandler {
|
||||
//
|
||||
// @Override
|
||||
// public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
// var req = MusicGameCreateBeatmapReqOuterClass.MusicGameCreateBeatmapReq.parseFrom(payload);
|
||||
//
|
||||
// var musicGameBeatmap = MusicGameBeatmap.of()
|
||||
// .musicId(req.getMusicBriefInfo().getMusicId())
|
||||
// .musicNoteCount(req.getMusicBriefInfo().getMusicNoteCount())
|
||||
// .savePosition(req.getMusicBriefInfo().getPosition())
|
||||
// .maxScore(req.getMusicBriefInfo().getMaxScore())
|
||||
// .authorUid(session.getPlayer().getUid())
|
||||
// .beatmap(MusicGameBeatmap.parse(req.getMusicRecord().getBeatmapItemListList()))
|
||||
// .createTime(Utils.getCurrentSeconds())
|
||||
// .build();
|
||||
//
|
||||
// musicGameBeatmap.save();
|
||||
//
|
||||
// var playerData = session.getPlayer().getActivityManager().getPlayerActivityDataByActivityType(ActivityType.NEW_ACTIVITY_MUSIC_GAME);
|
||||
// if(playerData.isEmpty()){
|
||||
// return;
|
||||
// }
|
||||
//
|
||||
// var handler = (MusicGameActivityHandler) playerData.get().getActivityHandler();
|
||||
// var musicGamePlayerData = handler.getMusicGamePlayerData(playerData.get());
|
||||
//
|
||||
// var oldBeatmap = musicGamePlayerData.getPersonalCustomBeatmapRecord().values().stream()
|
||||
// .map(MusicGamePlayerData.CustomBeatmapRecord::getMusicShareId)
|
||||
// .map(DatabaseHelper::getMusicGameBeatmap)
|
||||
// .filter(Objects::nonNull)
|
||||
// .filter(item -> item.getAuthorUid() == session.getPlayer().getUid())
|
||||
// .filter(item -> item.getMusicId() == req.getMusicBriefInfo().getMusicId())
|
||||
// .filter(item -> item.getSavePosition() == req.getMusicBriefInfo().getPosition())
|
||||
// .findFirst();
|
||||
//
|
||||
// // delete old beatmap for player
|
||||
// // the old beatmap is still in database so that others can still play.
|
||||
// oldBeatmap.ifPresent(i -> handler.removePersonalBeatmap(playerData.get(), i));
|
||||
//
|
||||
// // link this beatmap to player's personal data
|
||||
// handler.addPersonalBeatmap(playerData.get(), musicGameBeatmap);
|
||||
//
|
||||
// session.send(new PacketActivityInfoNotify(handler.toProto(playerData.get())));
|
||||
// session.send(new PacketMusicGameCreateBeatmapRsp(musicGameBeatmap.getMusicShareId(), req.getUnknownEnum1()));
|
||||
// }
|
||||
//
|
||||
//}
|
||||
// package emu.grasscutter.server.packet.recv;
|
||||
//
|
||||
// import emu.grasscutter.database.DatabaseHelper;
|
||||
// import emu.grasscutter.game.activity.musicgame.MusicGameActivityHandler;
|
||||
// import emu.grasscutter.game.activity.musicgame.MusicGameBeatmap;
|
||||
// import emu.grasscutter.game.activity.musicgame.MusicGamePlayerData;
|
||||
// import emu.grasscutter.game.props.ActivityType;
|
||||
// import emu.grasscutter.net.packet.Opcodes;
|
||||
// import emu.grasscutter.net.packet.PacketHandler;
|
||||
// import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
// import emu.grasscutter.net.proto.MusicGameCreateBeatmapReqOuterClass;
|
||||
// import emu.grasscutter.server.game.GameSession;
|
||||
// import emu.grasscutter.server.packet.send.PacketActivityInfoNotify;
|
||||
// import emu.grasscutter.server.packet.send.PacketMusicGameCreateBeatmapRsp;
|
||||
// import emu.grasscutter.utils.Utils;
|
||||
//
|
||||
// import java.util.Objects;
|
||||
//
|
||||
// @Opcodes(PacketOpcodes.MusicGameCreateBeatmapReq)
|
||||
// public class HandlerMusicGameCreateBeatmapReq extends PacketHandler {
|
||||
//
|
||||
// @Override
|
||||
// public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
// var req = MusicGameCreateBeatmapReqOuterClass.MusicGameCreateBeatmapReq.parseFrom(payload);
|
||||
//
|
||||
// var musicGameBeatmap = MusicGameBeatmap.of()
|
||||
// .musicId(req.getMusicBriefInfo().getMusicId())
|
||||
// .musicNoteCount(req.getMusicBriefInfo().getMusicNoteCount())
|
||||
// .savePosition(req.getMusicBriefInfo().getPosition())
|
||||
// .maxScore(req.getMusicBriefInfo().getMaxScore())
|
||||
// .authorUid(session.getPlayer().getUid())
|
||||
// .beatmap(MusicGameBeatmap.parse(req.getMusicRecord().getBeatmapItemListList()))
|
||||
// .createTime(Utils.getCurrentSeconds())
|
||||
// .build();
|
||||
//
|
||||
// musicGameBeatmap.save();
|
||||
//
|
||||
// var playerData =
|
||||
// session.getPlayer().getActivityManager().getPlayerActivityDataByActivityType(ActivityType.NEW_ACTIVITY_MUSIC_GAME);
|
||||
// if(playerData.isEmpty()){
|
||||
// return;
|
||||
// }
|
||||
//
|
||||
// var handler = (MusicGameActivityHandler) playerData.get().getActivityHandler();
|
||||
// var musicGamePlayerData = handler.getMusicGamePlayerData(playerData.get());
|
||||
//
|
||||
// var oldBeatmap = musicGamePlayerData.getPersonalCustomBeatmapRecord().values().stream()
|
||||
// .map(MusicGamePlayerData.CustomBeatmapRecord::getMusicShareId)
|
||||
// .map(DatabaseHelper::getMusicGameBeatmap)
|
||||
// .filter(Objects::nonNull)
|
||||
// .filter(item -> item.getAuthorUid() == session.getPlayer().getUid())
|
||||
// .filter(item -> item.getMusicId() == req.getMusicBriefInfo().getMusicId())
|
||||
// .filter(item -> item.getSavePosition() == req.getMusicBriefInfo().getPosition())
|
||||
// .findFirst();
|
||||
//
|
||||
// // delete old beatmap for player
|
||||
// // the old beatmap is still in database so that others can still play.
|
||||
// oldBeatmap.ifPresent(i -> handler.removePersonalBeatmap(playerData.get(), i));
|
||||
//
|
||||
// // link this beatmap to player's personal data
|
||||
// handler.addPersonalBeatmap(playerData.get(), musicGameBeatmap);
|
||||
//
|
||||
// session.send(new PacketActivityInfoNotify(handler.toProto(playerData.get())));
|
||||
// session.send(new PacketMusicGameCreateBeatmapRsp(musicGameBeatmap.getMusicShareId(),
|
||||
// req.getUnknownEnum1()));
|
||||
// }
|
||||
//
|
||||
// }
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user