mirror of
https://github.com/Grasscutters/Grasscutter.git
synced 2025-12-17 01:15:52 +01:00
Merge remote-tracking branch 'upstream/development' into dev-mail
This commit is contained in:
@@ -103,8 +103,8 @@ public final class DispatchServer {
|
||||
byte[] decoded2 = Base64.getDecoder().decode(query_cur_region);
|
||||
QueryCurrRegionHttpRsp regionQuery = QueryCurrRegionHttpRsp.parseFrom(decoded2);
|
||||
|
||||
List<RegionSimpleInfo> servers = new ArrayList<RegionSimpleInfo>();
|
||||
List<String> usedNames = new ArrayList<String>(); // List to check for potential naming conflicts
|
||||
List<RegionSimpleInfo> servers = new ArrayList<>();
|
||||
List<String> usedNames = new ArrayList<>(); // List to check for potential naming conflicts
|
||||
if (Grasscutter.getConfig().RunMode.equalsIgnoreCase("HYBRID")) { // Automatically add the game server if in
|
||||
// hybrid mode
|
||||
RegionSimpleInfo server = RegionSimpleInfo.newBuilder()
|
||||
@@ -126,10 +126,10 @@ public final class DispatchServer {
|
||||
servers.add(server);
|
||||
|
||||
RegionInfo serverRegion = regionQuery.getRegionInfo().toBuilder()
|
||||
.setIp((Grasscutter.getConfig().getGameServerOptions().PublicIp.isEmpty()
|
||||
.setGateserverIp((Grasscutter.getConfig().getGameServerOptions().PublicIp.isEmpty()
|
||||
? Grasscutter.getConfig().getGameServerOptions().Ip
|
||||
: Grasscutter.getConfig().getGameServerOptions().PublicIp))
|
||||
.setPort(Grasscutter.getConfig().getGameServerOptions().PublicPort != 0
|
||||
.setGateserverPort(Grasscutter.getConfig().getGameServerOptions().PublicPort != 0
|
||||
? Grasscutter.getConfig().getGameServerOptions().PublicPort
|
||||
: Grasscutter.getConfig().getGameServerOptions().Port)
|
||||
.setSecretKey(ByteString
|
||||
@@ -169,8 +169,8 @@ public final class DispatchServer {
|
||||
servers.add(server);
|
||||
|
||||
RegionInfo serverRegion = regionQuery.getRegionInfo().toBuilder()
|
||||
.setIp(regionInfo.Ip)
|
||||
.setPort(regionInfo.Port)
|
||||
.setGateserverIp(regionInfo.Ip)
|
||||
.setGateserverPort(regionInfo.Port)
|
||||
.setSecretKey(ByteString
|
||||
.copyFrom(FileUtils.read(Grasscutter.getConfig().KEY_FOLDER + "dispatchSeed.bin")))
|
||||
.build();
|
||||
@@ -181,7 +181,7 @@ public final class DispatchServer {
|
||||
}
|
||||
|
||||
QueryRegionListHttpRsp regionList = QueryRegionListHttpRsp.newBuilder()
|
||||
.addAllServers(servers)
|
||||
.addAllRegionList(servers)
|
||||
.setClientSecretKey(rl.getClientSecretKey())
|
||||
.setClientCustomConfigEncrypted(rl.getClientCustomConfigEncrypted())
|
||||
.setEnableLoginPc(true)
|
||||
@@ -268,7 +268,10 @@ public final class DispatchServer {
|
||||
Grasscutter.getLogger()
|
||||
.info(String.format("[Dispatch] Client %s request: query_region_list", t.getRemoteAddress()));
|
||||
|
||||
responseHTML(t, regionListBase64);
|
||||
// Invoke event.
|
||||
QueryAllRegionsEvent event = new QueryAllRegionsEvent(regionListBase64); event.call();
|
||||
// Respond with event result.
|
||||
responseHTML(t, event.getRegionList());
|
||||
});
|
||||
|
||||
for (String regionName : regions.keySet()) {
|
||||
|
||||
@@ -10,6 +10,10 @@ public abstract class ServerEvent extends Event {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public Type getServerType() {
|
||||
return this.type;
|
||||
}
|
||||
|
||||
public enum Type {
|
||||
DISPATCH,
|
||||
GAME
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
package emu.grasscutter.server.event.game;
|
||||
|
||||
import emu.grasscutter.server.event.ServerEvent;
|
||||
|
||||
public final class ServerTickEvent extends ServerEvent {
|
||||
public ServerTickEvent() {
|
||||
super(Type.GAME);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package emu.grasscutter.server.event.internal;
|
||||
|
||||
import emu.grasscutter.server.event.ServerEvent;
|
||||
|
||||
import java.time.OffsetDateTime;
|
||||
|
||||
public final class ServerStartEvent extends ServerEvent {
|
||||
private final OffsetDateTime startTime;
|
||||
|
||||
public ServerStartEvent(Type type, OffsetDateTime startTime) {
|
||||
super(type);
|
||||
|
||||
this.startTime = startTime;
|
||||
}
|
||||
|
||||
public OffsetDateTime getStartTime() {
|
||||
return this.startTime;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package emu.grasscutter.server.event.internal;
|
||||
|
||||
import emu.grasscutter.server.event.ServerEvent;
|
||||
|
||||
import java.time.OffsetDateTime;
|
||||
|
||||
public final class ServerStopEvent extends ServerEvent {
|
||||
private final OffsetDateTime stopTime;
|
||||
|
||||
public ServerStopEvent(Type type, OffsetDateTime stopTime) {
|
||||
super(type);
|
||||
|
||||
this.stopTime = stopTime;
|
||||
}
|
||||
|
||||
public OffsetDateTime getStopTime() {
|
||||
return this.stopTime;
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
package emu.grasscutter.server.game;
|
||||
|
||||
import java.net.InetSocketAddress;
|
||||
import java.time.OffsetDateTime;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
@@ -20,7 +21,10 @@ import emu.grasscutter.game.shop.ShopManager;
|
||||
import emu.grasscutter.net.packet.PacketHandler;
|
||||
import emu.grasscutter.net.proto.SocialDetailOuterClass.SocialDetail;
|
||||
import emu.grasscutter.netty.MihoyoKcpServer;
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
import emu.grasscutter.server.event.ServerEvent;
|
||||
import emu.grasscutter.server.event.game.ServerTickEvent;
|
||||
import emu.grasscutter.server.event.internal.ServerStartEvent;
|
||||
import emu.grasscutter.server.event.internal.ServerStopEvent;
|
||||
|
||||
public final class GameServer extends MihoyoKcpServer {
|
||||
private final InetSocketAddress address;
|
||||
@@ -36,18 +40,10 @@ public final class GameServer extends MihoyoKcpServer {
|
||||
private final MultiplayerManager multiplayerManager;
|
||||
private final DungeonManager dungeonManager;
|
||||
private final CommandMap commandMap;
|
||||
|
||||
public EventBus OnGameServerStartFinish;
|
||||
public EventBus OnGameServerTick;
|
||||
public EventBus OnGameServerStop;
|
||||
|
||||
public GameServer(InetSocketAddress address) {
|
||||
super(address);
|
||||
|
||||
OnGameServerStartFinish = EventBus.builder().throwSubscriberException(true).logNoSubscriberMessages(false).build();
|
||||
OnGameServerTick = EventBus.builder().throwSubscriberException(true).logNoSubscriberMessages(false).build();
|
||||
OnGameServerStop = EventBus.builder().throwSubscriberException(true).logNoSubscriberMessages(false).build();
|
||||
|
||||
this.setServerInitializer(new GameServerInitializer(this));
|
||||
this.address = address;
|
||||
this.packetHandler = new GameServerPacketHandler(PacketHandler.class);
|
||||
@@ -178,12 +174,8 @@ public final class GameServer extends MihoyoKcpServer {
|
||||
|
||||
world.onTick();
|
||||
}
|
||||
|
||||
for (GenshinPlayer player : this.getPlayers().values()) {
|
||||
player.onTick();
|
||||
}
|
||||
|
||||
OnGameServerTick.post(new GameServerTickEvent());
|
||||
|
||||
ServerTickEvent event = new ServerTickEvent(); event.call();
|
||||
}
|
||||
|
||||
public void registerWorld(World world) {
|
||||
@@ -198,12 +190,11 @@ public final class GameServer extends MihoyoKcpServer {
|
||||
@Override
|
||||
public void onStartFinish() {
|
||||
Grasscutter.getLogger().info("Game Server started on port " + address.getPort());
|
||||
|
||||
OnGameServerStartFinish.post(new GameServerStartFinishEvent());
|
||||
ServerStartEvent event = new ServerStartEvent(ServerEvent.Type.GAME, OffsetDateTime.now()); event.call();
|
||||
}
|
||||
|
||||
public void onServerShutdown() {
|
||||
OnGameServerStop.post(new GameServerStopEvent());
|
||||
ServerStopEvent event = new ServerStopEvent(ServerEvent.Type.GAME, OffsetDateTime.now()); event.call();
|
||||
|
||||
// Kick and save all players
|
||||
List<GenshinPlayer> list = new ArrayList<>(this.getPlayers().size());
|
||||
|
||||
@@ -89,7 +89,7 @@ public class GameServerPacketHandler {
|
||||
|
||||
// Log unhandled packets
|
||||
if (Grasscutter.getConfig().getGameServerOptions().LOG_PACKETS) {
|
||||
//Grasscutter.getLogger().info("Unhandled packet (" + opcode + "): " + PacketOpcodesUtil.getOpcodeName(opcode));
|
||||
Grasscutter.getLogger().info("Unhandled packet (" + opcode + "): " + emu.grasscutter.net.packet.PacketOpcodesUtil.getOpcodeName(opcode));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,11 +3,14 @@ package emu.grasscutter.server.game;
|
||||
import java.io.File;
|
||||
import java.net.InetSocketAddress;
|
||||
import java.nio.ByteBuffer;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import emu.grasscutter.Grasscutter;
|
||||
import emu.grasscutter.game.Account;
|
||||
import emu.grasscutter.game.GenshinPlayer;
|
||||
import emu.grasscutter.net.packet.GenshinPacket;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.packet.PacketOpcodesUtil;
|
||||
import emu.grasscutter.netty.MihoyoKcpChannel;
|
||||
import emu.grasscutter.server.event.game.SendPacketEvent;
|
||||
@@ -177,10 +180,20 @@ public class GameSession extends MihoyoKcpChannel {
|
||||
//Grasscutter.getLogger().info("SEND: " + PacketOpcodesUtil.getOpcodeName(opcode));
|
||||
//System.out.println(Utils.bytesToHex(genshinPacket.getData()));
|
||||
}
|
||||
|
||||
|
||||
private static final Set<Integer> loopPacket = Set.of(
|
||||
PacketOpcodes.PingReq,
|
||||
PacketOpcodes.PingRsp,
|
||||
PacketOpcodes.WorldPlayerRTTNotify,
|
||||
PacketOpcodes.UnionCmdNotify,
|
||||
PacketOpcodes.QueryPathReq
|
||||
);
|
||||
|
||||
private void logPacket(GenshinPacket genshinPacket) {
|
||||
Grasscutter.getLogger().info("SEND: " + PacketOpcodesUtil.getOpcodeName(genshinPacket.getOpcode()) + " (" + genshinPacket.getOpcode() + ")");
|
||||
System.out.println(Utils.bytesToHex(genshinPacket.getData()));
|
||||
if (!loopPacket.contains(genshinPacket.getOpcode())) {
|
||||
Grasscutter.getLogger().info("SEND: " + PacketOpcodesUtil.getOpcodeName(genshinPacket.getOpcode()) + " (" + genshinPacket.getOpcode() + ")");
|
||||
System.out.println(Utils.bytesToHex(genshinPacket.getData()));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -226,8 +239,10 @@ public class GameSession extends MihoyoKcpChannel {
|
||||
|
||||
// Log packet
|
||||
if (Grasscutter.getConfig().getGameServerOptions().LOG_PACKETS) {
|
||||
Grasscutter.getLogger().info("RECV: " + PacketOpcodesUtil.getOpcodeName(opcode) + " (" + opcode + ")");
|
||||
System.out.println(Utils.bytesToHex(payload));
|
||||
if (!loopPacket.contains(opcode)) {
|
||||
Grasscutter.getLogger().info("RECV: " + PacketOpcodesUtil.getOpcodeName(opcode) + " (" + opcode + ")");
|
||||
System.out.println(Utils.bytesToHex(payload));
|
||||
}
|
||||
}
|
||||
|
||||
// Handle
|
||||
|
||||
@@ -1,24 +0,0 @@
|
||||
package emu.grasscutter.server.packet.recv;
|
||||
|
||||
import emu.grasscutter.net.packet.Opcodes;
|
||||
import emu.grasscutter.net.packet.PacketHandler;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.SitReqOuterClass;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketSitRsp;
|
||||
import emu.grasscutter.utils.Position;
|
||||
|
||||
@Opcodes(PacketOpcodes.SitReq)
|
||||
public class HandleSitReq extends PacketHandler {
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
SitReqOuterClass.SitReq req = SitReqOuterClass.SitReq.parseFrom(payload);
|
||||
|
||||
float x = req.getPosition().getX();
|
||||
float y = req.getPosition().getY();
|
||||
float z = req.getPosition().getZ();
|
||||
|
||||
session.send(new PacketSitRsp(req.getChairId(), new Position(x, y, z), session.getPlayer().getTeamManager().getCurrentAvatarEntity().getId()));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -19,12 +19,12 @@ public class HandlerCombatInvocationsNotify extends PacketHandler {
|
||||
|
||||
for (CombatInvokeEntry entry : notif.getInvokeListList()) {
|
||||
switch (entry.getArgumentType()) {
|
||||
case CombatEvtBeingHit:
|
||||
case COMBAT_EVT_BEING_HIT:
|
||||
// Handle damage
|
||||
EvtBeingHitInfo hitInfo = EvtBeingHitInfo.parseFrom(entry.getCombatData());
|
||||
session.getPlayer().getScene().handleAttack(hitInfo.getAttackResult());
|
||||
break;
|
||||
case EntityMove:
|
||||
case ENTITY_MOVE:
|
||||
// Handle movement
|
||||
EntityMoveInfo moveInfo = EntityMoveInfo.parseFrom(entry.getCombatData());
|
||||
GenshinEntity entity = session.getPlayer().getScene().getEntityById(moveInfo.getEntityId());
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
package emu.grasscutter.server.packet.recv;
|
||||
|
||||
import emu.grasscutter.net.packet.Opcodes;
|
||||
import emu.grasscutter.net.packet.PacketHandler;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.CombineReqOuterClass;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
|
||||
@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);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -32,7 +32,7 @@ public class HandlerMarkMapReq extends PacketHandler {
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
MarkMapReq req = MarkMapReq.parseFrom(payload);
|
||||
|
||||
if (req.getOp() != Operation.Add) {
|
||||
if (req.getOp() != MarkMapReq.Operation.ADD) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@ package emu.grasscutter.server.packet.recv;
|
||||
import emu.grasscutter.net.packet.Opcodes;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.packet.PacketHandler;
|
||||
import emu.grasscutter.net.proto.RetcodeOuterClass;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketPlayerGetForceQuitBanInfoRsp;
|
||||
|
||||
@@ -14,10 +15,10 @@ public class HandlerPlayerGetForceQuitBanInfoReq extends PacketHandler {
|
||||
|
||||
if (session.getServer().getMultiplayerManager().leaveCoop(session.getPlayer())) {
|
||||
// Success
|
||||
session.send(new PacketPlayerGetForceQuitBanInfoRsp(0));
|
||||
session.send(new PacketPlayerGetForceQuitBanInfoRsp(RetcodeOuterClass.Retcode.RET_SUCC_VALUE));
|
||||
} else {
|
||||
// Fail
|
||||
session.send(new PacketPlayerGetForceQuitBanInfoRsp(1));
|
||||
session.send(new PacketPlayerGetForceQuitBanInfoRsp(RetcodeOuterClass.Retcode.RET_SVR_ERROR_VALUE));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ public class PacketAvatarChangeCostumeNotify extends GenshinPacket {
|
||||
super(PacketOpcodes.AvatarChangeCostumeNotify);
|
||||
|
||||
AvatarChangeCostumeNotify proto = AvatarChangeCostumeNotify.newBuilder()
|
||||
.setEntity(entity.toProto())
|
||||
.setEntityInfo(entity.toProto())
|
||||
.build();
|
||||
|
||||
this.setData(proto);
|
||||
|
||||
@@ -3,6 +3,7 @@ package emu.grasscutter.server.packet.send;
|
||||
import emu.grasscutter.net.packet.GenshinPacket;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.AvatarChangeCostumeRspOuterClass.AvatarChangeCostumeRsp;
|
||||
import emu.grasscutter.net.proto.RetcodeOuterClass;
|
||||
|
||||
public class PacketAvatarChangeCostumeRsp extends GenshinPacket {
|
||||
|
||||
@@ -21,7 +22,7 @@ public class PacketAvatarChangeCostumeRsp extends GenshinPacket {
|
||||
super(PacketOpcodes.AvatarChangeCostumeRsp);
|
||||
|
||||
AvatarChangeCostumeRsp proto = AvatarChangeCostumeRsp.newBuilder()
|
||||
.setRetcode(1)
|
||||
.setRetcode(RetcodeOuterClass.Retcode.RET_SVR_ERROR_VALUE)
|
||||
.build();
|
||||
|
||||
this.setData(proto);
|
||||
|
||||
@@ -3,6 +3,7 @@ package emu.grasscutter.server.packet.send;
|
||||
import emu.grasscutter.net.packet.GenshinPacket;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.AvatarWearFlycloakRspOuterClass.AvatarWearFlycloakRsp;
|
||||
import emu.grasscutter.net.proto.RetcodeOuterClass;
|
||||
|
||||
public class PacketAvatarWearFlycloakRsp extends GenshinPacket {
|
||||
public PacketAvatarWearFlycloakRsp(long avatarGuid, int costumeId) {
|
||||
@@ -20,7 +21,7 @@ public class PacketAvatarWearFlycloakRsp extends GenshinPacket {
|
||||
super(PacketOpcodes.AvatarWearFlycloakRsp);
|
||||
|
||||
AvatarWearFlycloakRsp proto = AvatarWearFlycloakRsp.newBuilder()
|
||||
.setRetcode(1)
|
||||
.setRetcode(RetcodeOuterClass.Retcode.RET_SVR_ERROR_VALUE)
|
||||
.build();
|
||||
|
||||
this.setData(proto);
|
||||
|
||||
@@ -4,9 +4,9 @@ import java.util.List;
|
||||
|
||||
import emu.grasscutter.net.packet.GenshinPacket;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.packet.Retcode;
|
||||
import emu.grasscutter.net.proto.CalcWeaponUpgradeReturnItemsRspOuterClass.CalcWeaponUpgradeReturnItemsRsp;
|
||||
import emu.grasscutter.net.proto.ItemParamOuterClass.ItemParam;
|
||||
import emu.grasscutter.net.proto.RetcodeOuterClass;
|
||||
|
||||
public class PacketCalcWeaponUpgradeReturnItemsRsp extends GenshinPacket {
|
||||
|
||||
@@ -25,7 +25,7 @@ public class PacketCalcWeaponUpgradeReturnItemsRsp extends GenshinPacket {
|
||||
super(PacketOpcodes.CalcWeaponUpgradeReturnItemsRsp);
|
||||
|
||||
CalcWeaponUpgradeReturnItemsRsp proto = CalcWeaponUpgradeReturnItemsRsp.newBuilder()
|
||||
.setRetcode(Retcode.FAIL)
|
||||
.setRetcode(RetcodeOuterClass.Retcode.RET_SVR_ERROR_VALUE)
|
||||
.build();
|
||||
|
||||
this.setData(proto);
|
||||
|
||||
@@ -3,6 +3,7 @@ package emu.grasscutter.server.packet.send;
|
||||
import emu.grasscutter.net.packet.GenshinPacket;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.ChangeAvatarRspOuterClass.ChangeAvatarRsp;
|
||||
import emu.grasscutter.net.proto.RetcodeOuterClass;
|
||||
|
||||
public class PacketChangeAvatarRsp extends GenshinPacket {
|
||||
|
||||
@@ -10,8 +11,8 @@ public class PacketChangeAvatarRsp extends GenshinPacket {
|
||||
super(PacketOpcodes.ChangeAvatarRsp);
|
||||
|
||||
ChangeAvatarRsp p = ChangeAvatarRsp.newBuilder()
|
||||
.setRetcode(0)
|
||||
.setCurrGuid(guid)
|
||||
.setRetcode(RetcodeOuterClass.Retcode.RET_SVR_ERROR_VALUE)
|
||||
.setCurGuid(guid)
|
||||
.build();
|
||||
|
||||
this.setData(p);
|
||||
|
||||
@@ -0,0 +1,58 @@
|
||||
package emu.grasscutter.server.packet.send;
|
||||
|
||||
import emu.grasscutter.net.packet.GenshinPacket;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.CombineReqOuterClass;
|
||||
import emu.grasscutter.net.proto.CombineRspOuterClass;
|
||||
import emu.grasscutter.net.proto.ItemParamOuterClass;
|
||||
import emu.grasscutter.net.proto.RetcodeOuterClass;
|
||||
|
||||
public class PacketCombineRsp extends GenshinPacket {
|
||||
|
||||
public PacketCombineRsp() {
|
||||
super(PacketOpcodes.CombineRsp);
|
||||
|
||||
CombineRspOuterClass.CombineRsp proto = CombineRspOuterClass.CombineRsp.newBuilder()
|
||||
.setRetcode(RetcodeOuterClass.Retcode.RET_SVR_ERROR_VALUE).build();
|
||||
|
||||
|
||||
this.setData(proto);
|
||||
}
|
||||
|
||||
public PacketCombineRsp(int retcode) {
|
||||
super(PacketOpcodes.CombineRsp);
|
||||
|
||||
CombineRspOuterClass.CombineRsp proto = CombineRspOuterClass.CombineRsp.newBuilder()
|
||||
.setRetcode(retcode).build();
|
||||
|
||||
|
||||
this.setData(proto);
|
||||
}
|
||||
|
||||
public PacketCombineRsp(CombineReqOuterClass.CombineReq combineReq,
|
||||
Iterable<ItemParamOuterClass.ItemParam> costItemList,
|
||||
Iterable<ItemParamOuterClass.ItemParam> resultItemList,
|
||||
Iterable<ItemParamOuterClass.ItemParam> totalRandomItemList,
|
||||
Iterable<ItemParamOuterClass.ItemParam> totalReturnItemList,
|
||||
Iterable<ItemParamOuterClass.ItemParam> totalExtraItemList) {
|
||||
|
||||
super(PacketOpcodes.CombineRsp);
|
||||
|
||||
CombineRspOuterClass.CombineRsp proto = CombineRspOuterClass.CombineRsp.newBuilder()
|
||||
.setRetcode(RetcodeOuterClass.Retcode.RET_SUCC_VALUE)
|
||||
.setCombineId(combineReq.getCombineId())
|
||||
.setCombineCount(combineReq.getCombineCount())
|
||||
.setAvatarGuid(combineReq.getAvatarGuid())
|
||||
.addAllCostItemList(costItemList)
|
||||
.addAllResultItemList(resultItemList)
|
||||
.addAllTotalRandomItemList(totalRandomItemList)
|
||||
.addAllTotalReturnItemList(totalReturnItemList)
|
||||
.addAllTotalExtraItemList(totalExtraItemList)
|
||||
.build();
|
||||
|
||||
this.setData(proto);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -7,6 +7,7 @@ import emu.grasscutter.net.packet.GenshinPacket;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.DoGachaRspOuterClass.DoGachaRsp;
|
||||
import emu.grasscutter.net.proto.GachaItemOuterClass.GachaItem;
|
||||
import emu.grasscutter.net.proto.RetcodeOuterClass;
|
||||
|
||||
public class PacketDoGachaRsp extends GenshinPacket {
|
||||
|
||||
@@ -33,7 +34,7 @@ public class PacketDoGachaRsp extends GenshinPacket {
|
||||
super(PacketOpcodes.DoGachaRsp);
|
||||
|
||||
DoGachaRsp p = DoGachaRsp.newBuilder()
|
||||
.setRetcode(1)
|
||||
.setRetcode(RetcodeOuterClass.Retcode.RET_SVR_ERROR_VALUE)
|
||||
.build();
|
||||
|
||||
this.setData(p);
|
||||
|
||||
@@ -5,6 +5,7 @@ import emu.grasscutter.net.packet.GenshinPacket;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.GadgetInteractRspOuterClass.GadgetInteractRsp;
|
||||
import emu.grasscutter.net.proto.InteractTypeOuterClass.InteractType;
|
||||
import emu.grasscutter.net.proto.RetcodeOuterClass;
|
||||
|
||||
public class PacketGadgetInteractRsp extends GenshinPacket {
|
||||
public PacketGadgetInteractRsp(EntityGadget gadget, InteractType interact) {
|
||||
@@ -23,7 +24,7 @@ public class PacketGadgetInteractRsp extends GenshinPacket {
|
||||
super(PacketOpcodes.GadgetInteractRsp);
|
||||
|
||||
GadgetInteractRsp proto = GadgetInteractRsp.newBuilder()
|
||||
.setRetcode(1)
|
||||
.setRetcode(RetcodeOuterClass.Retcode.RET_SVR_ERROR_VALUE)
|
||||
.build();
|
||||
|
||||
this.setData(proto);
|
||||
|
||||
@@ -3,13 +3,14 @@ package emu.grasscutter.server.packet.send;
|
||||
import emu.grasscutter.net.packet.GenshinPacket;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.GetAuthkeyRspOuterClass.GetAuthkeyRsp;
|
||||
import emu.grasscutter.net.proto.RetcodeOuterClass;
|
||||
|
||||
public class PacketGetAuthkeyRsp extends GenshinPacket {
|
||||
|
||||
public PacketGetAuthkeyRsp() {
|
||||
super(PacketOpcodes.GetAuthkeyRsp);
|
||||
|
||||
GetAuthkeyRsp proto = GetAuthkeyRsp.newBuilder().setRetcode(1).build();
|
||||
GetAuthkeyRsp proto = GetAuthkeyRsp.newBuilder().setRetcode(RetcodeOuterClass.Retcode.RET_SVR_ERROR_VALUE).build();
|
||||
|
||||
this.setData(proto);
|
||||
}
|
||||
|
||||
@@ -9,6 +9,7 @@ import emu.grasscutter.net.proto.FriendBriefOuterClass.FriendBrief;
|
||||
import emu.grasscutter.net.proto.FriendOnlineStateOuterClass.FriendOnlineState;
|
||||
import emu.grasscutter.net.proto.GetPlayerFriendListRspOuterClass.GetPlayerFriendListRsp;
|
||||
import emu.grasscutter.net.proto.HeadImageOuterClass.HeadImage;
|
||||
import emu.grasscutter.net.proto.PlatformTypeOuterClass;
|
||||
|
||||
public class PacketGetPlayerFriendListRsp extends GenshinPacket {
|
||||
|
||||
@@ -19,15 +20,15 @@ public class PacketGetPlayerFriendListRsp extends GenshinPacket {
|
||||
.setUid(GenshinConstants.SERVER_CONSOLE_UID)
|
||||
.setNickname("Server")
|
||||
.setLevel(1)
|
||||
.setAvatar(HeadImage.newBuilder().setAvatarId(GenshinConstants.MAIN_CHARACTER_FEMALE))
|
||||
.setAvatarId(HeadImage.newBuilder().setAvatarId(GenshinConstants.MAIN_CHARACTER_FEMALE).getAvatarId())
|
||||
.setWorldLevel(0)
|
||||
.setSignature("")
|
||||
.setLastActiveTime((int) (System.currentTimeMillis() / 1000f))
|
||||
.setNameCardId(210001)
|
||||
.setOnlineState(FriendOnlineState.FRIEND_ONLINE)
|
||||
.setParam(1)
|
||||
.setUnk1(1)
|
||||
.setUnk2(3)
|
||||
.setIsGameSource(true)
|
||||
.setPlatformType(PlatformTypeOuterClass.PlatformType.PC)
|
||||
.build();
|
||||
|
||||
GetPlayerFriendListRsp.Builder proto = GetPlayerFriendListRsp.newBuilder().addFriendList(serverFriend);
|
||||
|
||||
@@ -3,6 +3,7 @@ package emu.grasscutter.server.packet.send;
|
||||
import emu.grasscutter.net.packet.GenshinPacket;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.GetPlayerSocialDetailRspOuterClass.GetPlayerSocialDetailRsp;
|
||||
import emu.grasscutter.net.proto.RetcodeOuterClass;
|
||||
import emu.grasscutter.net.proto.SocialDetailOuterClass.SocialDetail;
|
||||
|
||||
public class PacketGetPlayerSocialDetailRsp extends GenshinPacket {
|
||||
@@ -15,7 +16,7 @@ public class PacketGetPlayerSocialDetailRsp extends GenshinPacket {
|
||||
if (detail != null) {
|
||||
proto.setDetailData(detail);
|
||||
} else {
|
||||
proto.setRetcode(1);
|
||||
proto.setRetcode(RetcodeOuterClass.Retcode.RET_SVR_ERROR_VALUE);
|
||||
}
|
||||
|
||||
this.setData(proto);
|
||||
|
||||
@@ -16,18 +16,18 @@ public class PacketGetPlayerTokenRsp extends GenshinPacket {
|
||||
this.setUseDispatchKey(true);
|
||||
|
||||
GetPlayerTokenRsp p = GetPlayerTokenRsp.newBuilder()
|
||||
.setPlayerUid(session.getAccount().getPlayerUid())
|
||||
.setAccountToken(session.getAccount().getToken())
|
||||
.setUid(session.getAccount().getPlayerUid())
|
||||
.setToken(session.getAccount().getToken())
|
||||
.setAccountType(1)
|
||||
.setIsProficientPlayer(doesPlayerExist) // Not sure where this goes
|
||||
.setSecretKey(Crypto.ENCRYPT_SEED)
|
||||
.setSecretKeyBuffer(ByteString.copyFrom(Crypto.ENCRYPT_SEED_BUFFER))
|
||||
.setSecretKeySeed(Crypto.ENCRYPT_SEED)
|
||||
.setSecurityCmdBuffer(ByteString.copyFrom(Crypto.ENCRYPT_SEED_BUFFER))
|
||||
.setPlatformType(3)
|
||||
.setChannelId(1)
|
||||
.setCountryCode("US")
|
||||
.setUnk1("c25-314dd05b0b5f")
|
||||
.setUnk3(3)
|
||||
.setClientIp(session.getAddress().getAddress().getHostAddress())
|
||||
.setClientVersionRandomKey("c25-314dd05b0b5f")
|
||||
.setRegPlatform(3)
|
||||
.setClientIpStr(session.getAddress().getAddress().getHostAddress())
|
||||
.build();
|
||||
|
||||
this.setData(p.toByteArray());
|
||||
|
||||
@@ -8,7 +8,7 @@ import emu.grasscutter.net.proto.PlayerApplyEnterMpResultNotifyOuterClass.Player
|
||||
|
||||
public class PacketPlayerApplyEnterMpResultNotify extends GenshinPacket {
|
||||
|
||||
public PacketPlayerApplyEnterMpResultNotify(GenshinPlayer target, boolean isAgreed, PlayerApplyEnterMpReason reason) {
|
||||
public PacketPlayerApplyEnterMpResultNotify(GenshinPlayer target, boolean isAgreed, PlayerApplyEnterMpResultNotify.Reason reason) {
|
||||
super(PacketOpcodes.PlayerApplyEnterMpResultNotify);
|
||||
|
||||
PlayerApplyEnterMpResultNotify proto = PlayerApplyEnterMpResultNotify.newBuilder()
|
||||
@@ -21,7 +21,7 @@ public class PacketPlayerApplyEnterMpResultNotify extends GenshinPacket {
|
||||
this.setData(proto);
|
||||
}
|
||||
|
||||
public PacketPlayerApplyEnterMpResultNotify(int targetId, String targetName, boolean isAgreed, PlayerApplyEnterMpReason reason) {
|
||||
public PacketPlayerApplyEnterMpResultNotify(int targetId, String targetName, boolean isAgreed, PlayerApplyEnterMpResultNotify.Reason reason) {
|
||||
super(PacketOpcodes.PlayerApplyEnterMpResultNotify);
|
||||
|
||||
PlayerApplyEnterMpResultNotify proto = PlayerApplyEnterMpResultNotify.newBuilder()
|
||||
|
||||
@@ -43,7 +43,7 @@ public class PacketPlayerChatNotify extends GenshinPacket {
|
||||
this.setData(proto);
|
||||
}
|
||||
|
||||
public PacketPlayerChatNotify(GenshinPlayer sender, int channelId, SystemHint systemHint) {
|
||||
public PacketPlayerChatNotify(GenshinPlayer sender, int channelId, ChatInfo.SystemHint systemHint) {
|
||||
super(PacketOpcodes.PlayerChatNotify);
|
||||
|
||||
ChatInfo info = ChatInfo.newBuilder()
|
||||
|
||||
@@ -13,7 +13,7 @@ public class PacketPlayerDataNotify extends GenshinPacket {
|
||||
|
||||
PlayerDataNotify.Builder p = PlayerDataNotify.newBuilder()
|
||||
.setNickName(player.getNickname())
|
||||
.setClientTime(System.currentTimeMillis())
|
||||
.setServerTime(System.currentTimeMillis())
|
||||
.setIsFirstLoginToday(true)
|
||||
.setRegionId(player.getRegionId());
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@ import emu.grasscutter.game.entity.EntityAvatar;
|
||||
import emu.grasscutter.game.inventory.GenshinItem;
|
||||
import emu.grasscutter.net.packet.GenshinPacket;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.AbilityControlBlockOuterClass;
|
||||
import emu.grasscutter.net.proto.AbilitySyncStateInfoOuterClass.AbilitySyncStateInfo;
|
||||
import emu.grasscutter.net.proto.AvatarEnterSceneInfoOuterClass.AvatarEnterSceneInfo;
|
||||
import emu.grasscutter.net.proto.MPLevelEntityInfoOuterClass.MPLevelEntityInfo;
|
||||
@@ -26,7 +27,7 @@ public class PacketPlayerEnterSceneInfoNotify extends GenshinPacket {
|
||||
TeamEnterSceneInfo.newBuilder()
|
||||
.setTeamEntityId(player.getTeamManager().getEntityId()) // 150995833
|
||||
.setTeamAbilityInfo(empty)
|
||||
.setUnk(empty)
|
||||
.setAbilityControlBlock(AbilityControlBlockOuterClass.AbilityControlBlock.newBuilder().build())
|
||||
);
|
||||
proto.setMpLevelEntityInfo(
|
||||
MPLevelEntityInfo.newBuilder()
|
||||
|
||||
@@ -23,14 +23,14 @@ public class PacketPlayerEnterSceneNotify extends GenshinPacket {
|
||||
.setSceneId(player.getSceneId())
|
||||
.setPos(player.getPos().toProto())
|
||||
.setSceneBeginTime(System.currentTimeMillis())
|
||||
.setType(EnterType.EnterSelf)
|
||||
.setType(EnterType.ENTER_SELF)
|
||||
.setTargetUid(player.getUid())
|
||||
.setEnterSceneToken(player.getEnterSceneToken())
|
||||
.setWorldLevel(player.getWorldLevel())
|
||||
.setEnterReason(EnterReason.Login.getValue())
|
||||
.setIsFirstLoginEnterScene(player.isFirstLoginEnterScene())
|
||||
.setUnk1(1)
|
||||
.setUnk2("3-" + player.getUid() + "-" + (int) (System.currentTimeMillis() / 1000) + "-" + 18402)
|
||||
.setWorldType(1)
|
||||
.setSceneTransaction("3-" + player.getUid() + "-" + (int) (System.currentTimeMillis() / 1000) + "-" + 18402)
|
||||
.build();
|
||||
|
||||
this.setData(proto);
|
||||
@@ -62,8 +62,8 @@ public class PacketPlayerEnterSceneNotify extends GenshinPacket {
|
||||
.addSceneTagIdList(109)
|
||||
.addSceneTagIdList(113)
|
||||
.addSceneTagIdList(117)
|
||||
.setUnk1(1)
|
||||
.setUnk2(newScene + "-" + target.getUid() + "-" + (int) (System.currentTimeMillis() / 1000) + "-" + 18402)
|
||||
.setWorldType(1)
|
||||
.setSceneTransaction(newScene + "-" + target.getUid() + "-" + (int) (System.currentTimeMillis() / 1000) + "-" + 18402)
|
||||
.build();
|
||||
|
||||
this.setData(proto);
|
||||
|
||||
@@ -40,8 +40,8 @@ public class PacketPlayerLoginRsp extends GenshinPacket {
|
||||
QueryCurrRegionHttpRspOuterClass.QueryCurrRegionHttpRsp regionQuery = QueryCurrRegionHttpRspOuterClass.QueryCurrRegionHttpRsp.parseFrom(decodedCurRegion);
|
||||
|
||||
RegionInfo serverRegion = regionQuery.getRegionInfo().toBuilder()
|
||||
.setIp((Grasscutter.getConfig().getGameServerOptions().PublicIp.isEmpty() ? Grasscutter.getConfig().getGameServerOptions().Ip : Grasscutter.getConfig().getGameServerOptions().PublicIp))
|
||||
.setPort(Grasscutter.getConfig().getGameServerOptions().PublicPort != 0 ? Grasscutter.getConfig().getGameServerOptions().PublicPort : Grasscutter.getConfig().getGameServerOptions().Port)
|
||||
.setGateserverIp((Grasscutter.getConfig().getGameServerOptions().PublicIp.isEmpty() ? Grasscutter.getConfig().getGameServerOptions().Ip : Grasscutter.getConfig().getGameServerOptions().PublicIp))
|
||||
.setGateserverPort(Grasscutter.getConfig().getGameServerOptions().PublicPort != 0 ? Grasscutter.getConfig().getGameServerOptions().PublicPort : Grasscutter.getConfig().getGameServerOptions().Port)
|
||||
.setSecretKey(ByteString.copyFrom(FileUtils.read(Grasscutter.getConfig().KEY_FOLDER + "dispatchSeed.bin")))
|
||||
.build();
|
||||
|
||||
@@ -64,7 +64,7 @@ public class PacketPlayerLoginRsp extends GenshinPacket {
|
||||
.setClientSilenceDataVersion(info.getClientSilenceDataVersion())
|
||||
.setClientMd5(info.getClientDataMd5())
|
||||
.setClientSilenceMd5(info.getClientSilenceDataMd5())
|
||||
.setResVersionConfig(info.getConfig())
|
||||
.setResVersionConfig(info.getResVersionConfig())
|
||||
.setClientVersionSuffix(info.getClientVersionSuffix())
|
||||
.setClientSilenceVersionSuffix(info.getClientSilenceVersionSuffix())
|
||||
.setIsScOpen(false)
|
||||
|
||||
@@ -18,7 +18,7 @@ public class PacketPlayerStoreNotify extends GenshinPacket {
|
||||
this.buildHeader(2);
|
||||
|
||||
PlayerStoreNotify.Builder p = PlayerStoreNotify.newBuilder()
|
||||
.setStoreType(StoreType.StorePack)
|
||||
.setStoreType(StoreType.STORE_PACK)
|
||||
.setWeightLimit(Grasscutter.getConfig().getGameServerOptions().InventoryLimitAll);
|
||||
|
||||
for (GenshinItem item : player.getInventory()) {
|
||||
|
||||
@@ -15,7 +15,7 @@ public class PacketSceneEntityAppearNotify extends GenshinPacket {
|
||||
super(PacketOpcodes.SceneEntityAppearNotify, true);
|
||||
|
||||
SceneEntityAppearNotify.Builder proto = SceneEntityAppearNotify.newBuilder()
|
||||
.setAppearType(VisionType.VisionBorn)
|
||||
.setAppearType(VisionType.VISION_BORN)
|
||||
.addEntityList(entity.toProto());
|
||||
|
||||
this.setData(proto.build());
|
||||
|
||||
@@ -2,6 +2,7 @@ package emu.grasscutter.server.packet.send;
|
||||
|
||||
import emu.grasscutter.net.packet.GenshinPacket;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.RetcodeOuterClass;
|
||||
import emu.grasscutter.net.proto.SceneKickPlayerRspOuterClass.SceneKickPlayerRsp;
|
||||
|
||||
public class PacketSceneKickPlayerRsp extends GenshinPacket {
|
||||
@@ -20,7 +21,7 @@ public class PacketSceneKickPlayerRsp extends GenshinPacket {
|
||||
super(PacketOpcodes.SceneKickPlayerRsp);
|
||||
|
||||
SceneKickPlayerRsp proto = SceneKickPlayerRsp.newBuilder()
|
||||
.setRetcode(1)
|
||||
.setRetcode(RetcodeOuterClass.Retcode.RET_SVR_ERROR_VALUE)
|
||||
.build();
|
||||
|
||||
this.setData(proto);
|
||||
|
||||
@@ -19,7 +19,7 @@ public class PacketSceneTeamUpdateNotify extends GenshinPacket {
|
||||
for (GenshinPlayer p : player.getWorld().getPlayers()) {
|
||||
for (EntityAvatar entityAvatar : p.getTeamManager().getActiveTeam()) {
|
||||
SceneTeamAvatar.Builder avatarProto = SceneTeamAvatar.newBuilder()
|
||||
.setPlayerId(p.getUid())
|
||||
.setPlayerUid(p.getUid())
|
||||
.setAvatarGuid(entityAvatar.getAvatar().getGuid())
|
||||
.setSceneId(p.getSceneId())
|
||||
.setEntityId(entityAvatar.getId())
|
||||
|
||||
@@ -5,6 +5,7 @@ import emu.grasscutter.data.custom.ScenePointEntry;
|
||||
import emu.grasscutter.game.GenshinPlayer;
|
||||
import emu.grasscutter.net.packet.GenshinPacket;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.RetcodeOuterClass;
|
||||
import emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp;
|
||||
import emu.grasscutter.utils.Position;
|
||||
|
||||
@@ -26,7 +27,7 @@ public class PacketSceneTransToPointRsp extends GenshinPacket {
|
||||
super(PacketOpcodes.SceneTransToPointRsp);
|
||||
|
||||
SceneTransToPointRsp proto = SceneTransToPointRsp.newBuilder()
|
||||
.setRetcode(1) // Internal server error
|
||||
.setRetcode(RetcodeOuterClass.Retcode.RET_SVR_ERROR_VALUE) // Internal server error
|
||||
.build();
|
||||
|
||||
this.setData(proto);
|
||||
|
||||
@@ -4,6 +4,7 @@ import emu.grasscutter.game.GenshinPlayer;
|
||||
import emu.grasscutter.net.packet.GenshinPacket;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.SetPlayerBirthdayRspOuterClass.SetPlayerBirthdayRsp;
|
||||
import emu.grasscutter.net.proto.SetPlayerBornDataReqOuterClass;
|
||||
|
||||
public class PacketSetPlayerBirthdayRsp extends GenshinPacket {
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ public class PacketSetPlayerHeadImageRsp extends GenshinPacket {
|
||||
super(PacketOpcodes.SetPlayerHeadImageRsp);
|
||||
|
||||
SetPlayerHeadImageRsp proto = SetPlayerHeadImageRsp.newBuilder()
|
||||
.setAvatar(HeadImage.newBuilder().setAvatarId(player.getHeadImage()))
|
||||
.setAvatarId(HeadImage.newBuilder().setAvatarId(player.getHeadImage()).getAvatarId())
|
||||
.build();
|
||||
|
||||
this.setData(proto);
|
||||
|
||||
@@ -1,21 +0,0 @@
|
||||
package emu.grasscutter.server.packet.send;
|
||||
|
||||
import emu.grasscutter.net.packet.GenshinPacket;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.SitRspOuterClass.SitRsp;
|
||||
import emu.grasscutter.utils.Position;
|
||||
|
||||
public class PacketSitRsp extends GenshinPacket {
|
||||
|
||||
public PacketSitRsp(long chairId, Position pos, int EntityId) {
|
||||
super(PacketOpcodes.SitRsp);
|
||||
|
||||
SitRsp proto = SitRsp.newBuilder()
|
||||
.setEntityId(EntityId)
|
||||
.setPosition(pos.toProto())
|
||||
.setChairId(chairId)
|
||||
.build();
|
||||
|
||||
this.setData(proto);
|
||||
}
|
||||
}
|
||||
@@ -18,7 +18,7 @@ public class PacketStoreItemChangeNotify extends GenshinPacket {
|
||||
this();
|
||||
|
||||
StoreItemChangeNotify.Builder proto = StoreItemChangeNotify.newBuilder()
|
||||
.setStoreType(StoreType.StorePack)
|
||||
.setStoreType(StoreType.STORE_PACK)
|
||||
.addItemList(item.toProto());
|
||||
|
||||
this.setData(proto);
|
||||
@@ -28,9 +28,9 @@ public class PacketStoreItemChangeNotify extends GenshinPacket {
|
||||
this();
|
||||
|
||||
StoreItemChangeNotify.Builder proto = StoreItemChangeNotify.newBuilder()
|
||||
.setStoreType(StoreType.StorePack);
|
||||
.setStoreType(StoreType.STORE_PACK);
|
||||
|
||||
items.stream().forEach(item -> proto.addItemList(item.toProto()));
|
||||
items.forEach(item -> proto.addItemList(item.toProto()));
|
||||
|
||||
this.setData(proto);
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@ public class PacketStoreItemDelNotify extends GenshinPacket {
|
||||
this();
|
||||
|
||||
StoreItemDelNotify.Builder proto = StoreItemDelNotify.newBuilder()
|
||||
.setStoreType(StoreType.StorePack)
|
||||
.setStoreType(StoreType.STORE_PACK)
|
||||
.addGuidList(item.getGuid());
|
||||
|
||||
this.setData(proto);
|
||||
@@ -28,7 +28,7 @@ public class PacketStoreItemDelNotify extends GenshinPacket {
|
||||
this();
|
||||
|
||||
StoreItemDelNotify.Builder proto = StoreItemDelNotify.newBuilder()
|
||||
.setStoreType(StoreType.StorePack);
|
||||
.setStoreType(StoreType.STORE_PACK);
|
||||
|
||||
items.stream().forEach(item -> proto.addGuidList(item.getGuid()));
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ public class PacketStoreWeightLimitNotify extends GenshinPacket {
|
||||
super(PacketOpcodes.StoreWeightLimitNotify);
|
||||
|
||||
StoreWeightLimitNotify p = StoreWeightLimitNotify.newBuilder()
|
||||
.setStoreType(StoreType.StorePack)
|
||||
.setStoreType(StoreType.STORE_PACK)
|
||||
.setWeightLimit(Grasscutter.getConfig().getGameServerOptions().InventoryLimitAll)
|
||||
.setWeaponCountLimit(Grasscutter.getConfig().getGameServerOptions().InventoryLimitWeapon)
|
||||
.setReliquaryCountLimit(Grasscutter.getConfig().getGameServerOptions().InventoryLimitRelic)
|
||||
|
||||
@@ -3,6 +3,7 @@ package emu.grasscutter.server.packet.send;
|
||||
import emu.grasscutter.game.inventory.GenshinItem;
|
||||
import emu.grasscutter.net.packet.GenshinPacket;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.RetcodeOuterClass;
|
||||
import emu.grasscutter.net.proto.UseItemRspOuterClass.UseItemRsp;
|
||||
|
||||
public class PacketUseItemRsp extends GenshinPacket {
|
||||
@@ -22,7 +23,7 @@ public class PacketUseItemRsp extends GenshinPacket {
|
||||
public PacketUseItemRsp() {
|
||||
super(PacketOpcodes.UseItemRsp);
|
||||
|
||||
UseItemRsp proto = UseItemRsp.newBuilder().setRetcode(1).build();
|
||||
UseItemRsp proto = UseItemRsp.newBuilder().setRetcode(RetcodeOuterClass.Retcode.RET_SVR_ERROR_VALUE).build();
|
||||
|
||||
this.setData(proto);
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@ public class PacketWorldPlayerLocationNotify extends GenshinPacket {
|
||||
WorldPlayerLocationNotify.Builder proto = WorldPlayerLocationNotify.newBuilder();
|
||||
|
||||
for (GenshinPlayer p : world.getPlayers()) {
|
||||
proto.addPlayerLocList(p.getWorldPlayerLocationInfo());
|
||||
proto.addPlayerWorldLocList(p.getWorldPlayerLocationInfo());
|
||||
}
|
||||
|
||||
this.setData(proto);
|
||||
|
||||
Reference in New Issue
Block a user