Add handler for GetEnteredSceneCsReq

This commit is contained in:
Melledy
2023-10-15 05:26:06 -07:00
parent 23d4a663f2
commit 19f44a84fe
4 changed files with 762 additions and 0 deletions

View File

@@ -0,0 +1,341 @@
// Code generated by protocol buffer compiler. Do not edit!
package emu.lunarcore.proto;
import java.io.IOException;
import us.hebi.quickbuf.FieldName;
import us.hebi.quickbuf.InvalidProtocolBufferException;
import us.hebi.quickbuf.JsonSink;
import us.hebi.quickbuf.JsonSource;
import us.hebi.quickbuf.MessageFactory;
import us.hebi.quickbuf.ProtoMessage;
import us.hebi.quickbuf.ProtoSink;
import us.hebi.quickbuf.ProtoSource;
public final class EnteredSceneInfoOuterClass {
/**
* Protobuf type {@code EnteredSceneInfo}
*/
public static final class EnteredSceneInfo extends ProtoMessage<EnteredSceneInfo> implements Cloneable {
private static final long serialVersionUID = 0L;
/**
* <code>optional uint32 plane_id = 3;</code>
*/
private int planeId;
/**
* <code>optional uint32 floor_id = 9;</code>
*/
private int floorId;
private EnteredSceneInfo() {
}
/**
* @return a new empty instance of {@code EnteredSceneInfo}
*/
public static EnteredSceneInfo newInstance() {
return new EnteredSceneInfo();
}
/**
* <code>optional uint32 plane_id = 3;</code>
* @return whether the planeId field is set
*/
public boolean hasPlaneId() {
return (bitField0_ & 0x00000001) != 0;
}
/**
* <code>optional uint32 plane_id = 3;</code>
* @return this
*/
public EnteredSceneInfo clearPlaneId() {
bitField0_ &= ~0x00000001;
planeId = 0;
return this;
}
/**
* <code>optional uint32 plane_id = 3;</code>
* @return the planeId
*/
public int getPlaneId() {
return planeId;
}
/**
* <code>optional uint32 plane_id = 3;</code>
* @param value the planeId to set
* @return this
*/
public EnteredSceneInfo setPlaneId(final int value) {
bitField0_ |= 0x00000001;
planeId = value;
return this;
}
/**
* <code>optional uint32 floor_id = 9;</code>
* @return whether the floorId field is set
*/
public boolean hasFloorId() {
return (bitField0_ & 0x00000002) != 0;
}
/**
* <code>optional uint32 floor_id = 9;</code>
* @return this
*/
public EnteredSceneInfo clearFloorId() {
bitField0_ &= ~0x00000002;
floorId = 0;
return this;
}
/**
* <code>optional uint32 floor_id = 9;</code>
* @return the floorId
*/
public int getFloorId() {
return floorId;
}
/**
* <code>optional uint32 floor_id = 9;</code>
* @param value the floorId to set
* @return this
*/
public EnteredSceneInfo setFloorId(final int value) {
bitField0_ |= 0x00000002;
floorId = value;
return this;
}
@Override
public EnteredSceneInfo copyFrom(final EnteredSceneInfo other) {
cachedSize = other.cachedSize;
if ((bitField0_ | other.bitField0_) != 0) {
bitField0_ = other.bitField0_;
planeId = other.planeId;
floorId = other.floorId;
}
return this;
}
@Override
public EnteredSceneInfo mergeFrom(final EnteredSceneInfo other) {
if (other.isEmpty()) {
return this;
}
cachedSize = -1;
if (other.hasPlaneId()) {
setPlaneId(other.planeId);
}
if (other.hasFloorId()) {
setFloorId(other.floorId);
}
return this;
}
@Override
public EnteredSceneInfo clear() {
if (isEmpty()) {
return this;
}
cachedSize = -1;
bitField0_ = 0;
planeId = 0;
floorId = 0;
return this;
}
@Override
public EnteredSceneInfo clearQuick() {
if (isEmpty()) {
return this;
}
cachedSize = -1;
bitField0_ = 0;
return this;
}
@Override
public boolean equals(Object o) {
if (o == this) {
return true;
}
if (!(o instanceof EnteredSceneInfo)) {
return false;
}
EnteredSceneInfo other = (EnteredSceneInfo) o;
return bitField0_ == other.bitField0_
&& (!hasPlaneId() || planeId == other.planeId)
&& (!hasFloorId() || floorId == other.floorId);
}
@Override
public void writeTo(final ProtoSink output) throws IOException {
if ((bitField0_ & 0x00000001) != 0) {
output.writeRawByte((byte) 24);
output.writeUInt32NoTag(planeId);
}
if ((bitField0_ & 0x00000002) != 0) {
output.writeRawByte((byte) 72);
output.writeUInt32NoTag(floorId);
}
}
@Override
protected int computeSerializedSize() {
int size = 0;
if ((bitField0_ & 0x00000001) != 0) {
size += 1 + ProtoSink.computeUInt32SizeNoTag(planeId);
}
if ((bitField0_ & 0x00000002) != 0) {
size += 1 + ProtoSink.computeUInt32SizeNoTag(floorId);
}
return size;
}
@Override
@SuppressWarnings("fallthrough")
public EnteredSceneInfo mergeFrom(final ProtoSource input) throws IOException {
// Enabled Fall-Through Optimization (QuickBuffers)
int tag = input.readTag();
while (true) {
switch (tag) {
case 24: {
// planeId
planeId = input.readUInt32();
bitField0_ |= 0x00000001;
tag = input.readTag();
if (tag != 72) {
break;
}
}
case 72: {
// floorId
floorId = input.readUInt32();
bitField0_ |= 0x00000002;
tag = input.readTag();
if (tag != 0) {
break;
}
}
case 0: {
return this;
}
default: {
if (!input.skipField(tag)) {
return this;
}
tag = input.readTag();
break;
}
}
}
}
@Override
public void writeTo(final JsonSink output) throws IOException {
output.beginObject();
if ((bitField0_ & 0x00000001) != 0) {
output.writeUInt32(FieldNames.planeId, planeId);
}
if ((bitField0_ & 0x00000002) != 0) {
output.writeUInt32(FieldNames.floorId, floorId);
}
output.endObject();
}
@Override
public EnteredSceneInfo mergeFrom(final JsonSource input) throws IOException {
if (!input.beginObject()) {
return this;
}
while (!input.isAtEnd()) {
switch (input.readFieldHash()) {
case -493896553:
case 1869097438: {
if (input.isAtField(FieldNames.planeId)) {
if (!input.trySkipNullValue()) {
planeId = input.readUInt32();
bitField0_ |= 0x00000001;
}
} else {
input.skipUnknownField();
}
break;
}
case -766027193:
case 2022982190: {
if (input.isAtField(FieldNames.floorId)) {
if (!input.trySkipNullValue()) {
floorId = input.readUInt32();
bitField0_ |= 0x00000002;
}
} else {
input.skipUnknownField();
}
break;
}
default: {
input.skipUnknownField();
break;
}
}
}
input.endObject();
return this;
}
@Override
public EnteredSceneInfo clone() {
return new EnteredSceneInfo().copyFrom(this);
}
@Override
public boolean isEmpty() {
return ((bitField0_) == 0);
}
public static EnteredSceneInfo parseFrom(final byte[] data) throws
InvalidProtocolBufferException {
return ProtoMessage.mergeFrom(new EnteredSceneInfo(), data).checkInitialized();
}
public static EnteredSceneInfo parseFrom(final ProtoSource input) throws IOException {
return ProtoMessage.mergeFrom(new EnteredSceneInfo(), input).checkInitialized();
}
public static EnteredSceneInfo parseFrom(final JsonSource input) throws IOException {
return ProtoMessage.mergeFrom(new EnteredSceneInfo(), input).checkInitialized();
}
/**
* @return factory for creating EnteredSceneInfo messages
*/
public static MessageFactory<EnteredSceneInfo> getFactory() {
return EnteredSceneInfoFactory.INSTANCE;
}
private enum EnteredSceneInfoFactory implements MessageFactory<EnteredSceneInfo> {
INSTANCE;
@Override
public EnteredSceneInfo create() {
return EnteredSceneInfo.newInstance();
}
}
/**
* Contains name constants used for serializing JSON
*/
static class FieldNames {
static final FieldName planeId = FieldName.forField("planeId", "plane_id");
static final FieldName floorId = FieldName.forField("floorId", "floor_id");
}
}
}

View File

@@ -0,0 +1,377 @@
// Code generated by protocol buffer compiler. Do not edit!
package emu.lunarcore.proto;
import java.io.IOException;
import us.hebi.quickbuf.FieldName;
import us.hebi.quickbuf.InvalidProtocolBufferException;
import us.hebi.quickbuf.JsonSink;
import us.hebi.quickbuf.JsonSource;
import us.hebi.quickbuf.MessageFactory;
import us.hebi.quickbuf.ProtoMessage;
import us.hebi.quickbuf.ProtoSink;
import us.hebi.quickbuf.ProtoSource;
import us.hebi.quickbuf.RepeatedMessage;
public final class GetEnteredSceneScRspOuterClass {
/**
* Protobuf type {@code GetEnteredSceneScRsp}
*/
public static final class GetEnteredSceneScRsp extends ProtoMessage<GetEnteredSceneScRsp> implements Cloneable {
private static final long serialVersionUID = 0L;
/**
* <code>optional uint32 retcode = 5;</code>
*/
private int retcode;
/**
* <code>repeated .EnteredSceneInfo entered_scene_info = 8;</code>
*/
private final RepeatedMessage<EnteredSceneInfoOuterClass.EnteredSceneInfo> enteredSceneInfo = RepeatedMessage.newEmptyInstance(EnteredSceneInfoOuterClass.EnteredSceneInfo.getFactory());
private GetEnteredSceneScRsp() {
}
/**
* @return a new empty instance of {@code GetEnteredSceneScRsp}
*/
public static GetEnteredSceneScRsp newInstance() {
return new GetEnteredSceneScRsp();
}
/**
* <code>optional uint32 retcode = 5;</code>
* @return whether the retcode field is set
*/
public boolean hasRetcode() {
return (bitField0_ & 0x00000001) != 0;
}
/**
* <code>optional uint32 retcode = 5;</code>
* @return this
*/
public GetEnteredSceneScRsp clearRetcode() {
bitField0_ &= ~0x00000001;
retcode = 0;
return this;
}
/**
* <code>optional uint32 retcode = 5;</code>
* @return the retcode
*/
public int getRetcode() {
return retcode;
}
/**
* <code>optional uint32 retcode = 5;</code>
* @param value the retcode to set
* @return this
*/
public GetEnteredSceneScRsp setRetcode(final int value) {
bitField0_ |= 0x00000001;
retcode = value;
return this;
}
/**
* <code>repeated .EnteredSceneInfo entered_scene_info = 8;</code>
* @return whether the enteredSceneInfo field is set
*/
public boolean hasEnteredSceneInfo() {
return (bitField0_ & 0x00000002) != 0;
}
/**
* <code>repeated .EnteredSceneInfo entered_scene_info = 8;</code>
* @return this
*/
public GetEnteredSceneScRsp clearEnteredSceneInfo() {
bitField0_ &= ~0x00000002;
enteredSceneInfo.clear();
return this;
}
/**
* <code>repeated .EnteredSceneInfo entered_scene_info = 8;</code>
*
* This method returns the internal storage object without modifying any has state.
* The returned object should not be modified and be treated as read-only.
*
* Use {@link #getMutableEnteredSceneInfo()} if you want to modify it.
*
* @return internal storage object for reading
*/
public RepeatedMessage<EnteredSceneInfoOuterClass.EnteredSceneInfo> getEnteredSceneInfo() {
return enteredSceneInfo;
}
/**
* <code>repeated .EnteredSceneInfo entered_scene_info = 8;</code>
*
* This method returns the internal storage object and sets the corresponding
* has state. The returned object will become part of this message and its
* contents may be modified as long as the has state is not cleared.
*
* @return internal storage object for modifications
*/
public RepeatedMessage<EnteredSceneInfoOuterClass.EnteredSceneInfo> getMutableEnteredSceneInfo(
) {
bitField0_ |= 0x00000002;
return enteredSceneInfo;
}
/**
* <code>repeated .EnteredSceneInfo entered_scene_info = 8;</code>
* @param value the enteredSceneInfo to add
* @return this
*/
public GetEnteredSceneScRsp addEnteredSceneInfo(
final EnteredSceneInfoOuterClass.EnteredSceneInfo value) {
bitField0_ |= 0x00000002;
enteredSceneInfo.add(value);
return this;
}
/**
* <code>repeated .EnteredSceneInfo entered_scene_info = 8;</code>
* @param values the enteredSceneInfo to add
* @return this
*/
public GetEnteredSceneScRsp addAllEnteredSceneInfo(
final EnteredSceneInfoOuterClass.EnteredSceneInfo... values) {
bitField0_ |= 0x00000002;
enteredSceneInfo.addAll(values);
return this;
}
@Override
public GetEnteredSceneScRsp copyFrom(final GetEnteredSceneScRsp other) {
cachedSize = other.cachedSize;
if ((bitField0_ | other.bitField0_) != 0) {
bitField0_ = other.bitField0_;
retcode = other.retcode;
enteredSceneInfo.copyFrom(other.enteredSceneInfo);
}
return this;
}
@Override
public GetEnteredSceneScRsp mergeFrom(final GetEnteredSceneScRsp other) {
if (other.isEmpty()) {
return this;
}
cachedSize = -1;
if (other.hasRetcode()) {
setRetcode(other.retcode);
}
if (other.hasEnteredSceneInfo()) {
getMutableEnteredSceneInfo().addAll(other.enteredSceneInfo);
}
return this;
}
@Override
public GetEnteredSceneScRsp clear() {
if (isEmpty()) {
return this;
}
cachedSize = -1;
bitField0_ = 0;
retcode = 0;
enteredSceneInfo.clear();
return this;
}
@Override
public GetEnteredSceneScRsp clearQuick() {
if (isEmpty()) {
return this;
}
cachedSize = -1;
bitField0_ = 0;
enteredSceneInfo.clearQuick();
return this;
}
@Override
public boolean equals(Object o) {
if (o == this) {
return true;
}
if (!(o instanceof GetEnteredSceneScRsp)) {
return false;
}
GetEnteredSceneScRsp other = (GetEnteredSceneScRsp) o;
return bitField0_ == other.bitField0_
&& (!hasRetcode() || retcode == other.retcode)
&& (!hasEnteredSceneInfo() || enteredSceneInfo.equals(other.enteredSceneInfo));
}
@Override
public void writeTo(final ProtoSink output) throws IOException {
if ((bitField0_ & 0x00000001) != 0) {
output.writeRawByte((byte) 40);
output.writeUInt32NoTag(retcode);
}
if ((bitField0_ & 0x00000002) != 0) {
for (int i = 0; i < enteredSceneInfo.length(); i++) {
output.writeRawByte((byte) 66);
output.writeMessageNoTag(enteredSceneInfo.get(i));
}
}
}
@Override
protected int computeSerializedSize() {
int size = 0;
if ((bitField0_ & 0x00000001) != 0) {
size += 1 + ProtoSink.computeUInt32SizeNoTag(retcode);
}
if ((bitField0_ & 0x00000002) != 0) {
size += (1 * enteredSceneInfo.length()) + ProtoSink.computeRepeatedMessageSizeNoTag(enteredSceneInfo);
}
return size;
}
@Override
@SuppressWarnings("fallthrough")
public GetEnteredSceneScRsp mergeFrom(final ProtoSource input) throws IOException {
// Enabled Fall-Through Optimization (QuickBuffers)
int tag = input.readTag();
while (true) {
switch (tag) {
case 40: {
// retcode
retcode = input.readUInt32();
bitField0_ |= 0x00000001;
tag = input.readTag();
if (tag != 66) {
break;
}
}
case 66: {
// enteredSceneInfo
tag = input.readRepeatedMessage(enteredSceneInfo, tag);
bitField0_ |= 0x00000002;
if (tag != 0) {
break;
}
}
case 0: {
return this;
}
default: {
if (!input.skipField(tag)) {
return this;
}
tag = input.readTag();
break;
}
}
}
}
@Override
public void writeTo(final JsonSink output) throws IOException {
output.beginObject();
if ((bitField0_ & 0x00000001) != 0) {
output.writeUInt32(FieldNames.retcode, retcode);
}
if ((bitField0_ & 0x00000002) != 0) {
output.writeRepeatedMessage(FieldNames.enteredSceneInfo, enteredSceneInfo);
}
output.endObject();
}
@Override
public GetEnteredSceneScRsp mergeFrom(final JsonSource input) throws IOException {
if (!input.beginObject()) {
return this;
}
while (!input.isAtEnd()) {
switch (input.readFieldHash()) {
case 1097936398: {
if (input.isAtField(FieldNames.retcode)) {
if (!input.trySkipNullValue()) {
retcode = input.readUInt32();
bitField0_ |= 0x00000001;
}
} else {
input.skipUnknownField();
}
break;
}
case -2087951453:
case 1290523721: {
if (input.isAtField(FieldNames.enteredSceneInfo)) {
if (!input.trySkipNullValue()) {
input.readRepeatedMessage(enteredSceneInfo);
bitField0_ |= 0x00000002;
}
} else {
input.skipUnknownField();
}
break;
}
default: {
input.skipUnknownField();
break;
}
}
}
input.endObject();
return this;
}
@Override
public GetEnteredSceneScRsp clone() {
return new GetEnteredSceneScRsp().copyFrom(this);
}
@Override
public boolean isEmpty() {
return ((bitField0_) == 0);
}
public static GetEnteredSceneScRsp parseFrom(final byte[] data) throws
InvalidProtocolBufferException {
return ProtoMessage.mergeFrom(new GetEnteredSceneScRsp(), data).checkInitialized();
}
public static GetEnteredSceneScRsp parseFrom(final ProtoSource input) throws IOException {
return ProtoMessage.mergeFrom(new GetEnteredSceneScRsp(), input).checkInitialized();
}
public static GetEnteredSceneScRsp parseFrom(final JsonSource input) throws IOException {
return ProtoMessage.mergeFrom(new GetEnteredSceneScRsp(), input).checkInitialized();
}
/**
* @return factory for creating GetEnteredSceneScRsp messages
*/
public static MessageFactory<GetEnteredSceneScRsp> getFactory() {
return GetEnteredSceneScRspFactory.INSTANCE;
}
private enum GetEnteredSceneScRspFactory implements MessageFactory<GetEnteredSceneScRsp> {
INSTANCE;
@Override
public GetEnteredSceneScRsp create() {
return GetEnteredSceneScRsp.newInstance();
}
}
/**
* Contains name constants used for serializing JSON
*/
static class FieldNames {
static final FieldName retcode = FieldName.forField("retcode");
static final FieldName enteredSceneInfo = FieldName.forField("enteredSceneInfo", "entered_scene_info");
}
}
}

View File

@@ -0,0 +1,18 @@
package emu.lunarcore.server.packet.recv;
import emu.lunarcore.server.game.GameSession;
import emu.lunarcore.server.packet.CmdId;
import emu.lunarcore.server.packet.Opcodes;
import emu.lunarcore.server.packet.PacketHandler;
import emu.lunarcore.server.packet.send.PacketGetEnteredSceneScRsp;
@Opcodes(CmdId.GetEnteredSceneCsReq)
public class HandlerGetEnteredSceneCsReq extends PacketHandler {
@Override
public void handle(GameSession session, byte[] header, byte[] data) throws Exception {
// Note: This packet is not necessary for the client to load into a scene
session.send(new PacketGetEnteredSceneScRsp(session.getPlayer()));
}
}

View File

@@ -0,0 +1,26 @@
package emu.lunarcore.server.packet.send;
import emu.lunarcore.game.player.Player;
import emu.lunarcore.proto.EnteredSceneInfoOuterClass.EnteredSceneInfo;
import emu.lunarcore.proto.GetEnteredSceneScRspOuterClass.GetEnteredSceneScRsp;
import emu.lunarcore.server.packet.BasePacket;
import emu.lunarcore.server.packet.CmdId;
public class PacketGetEnteredSceneScRsp extends BasePacket {
public PacketGetEnteredSceneScRsp(Player player) {
super(CmdId.GetEnteredSceneScRsp);
var sceneInfo = EnteredSceneInfo.newInstance();
if (player.getScene() != null) {
sceneInfo.setFloorId(player.getScene().getFloorId());
sceneInfo.setPlaneId(player.getScene().getPlaneId());
}
var data = GetEnteredSceneScRsp.newInstance()
.addEnteredSceneInfo(sceneInfo);
this.setData(data);
}
}