Store data using byte array
This commit is contained in:
parent
fa97806e2e
commit
ba3132c1bd
|
|
@ -1,24 +1,30 @@
|
|||
package org.adde0109.ambassador.forge.packet;
|
||||
|
||||
import com.velocitypowered.proxy.protocol.util.DeferredByteBufHolder;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import io.netty.buffer.Unpooled;
|
||||
|
||||
public class GenericForgeLoginWrapperPacket<T extends Context> extends DeferredByteBufHolder implements IForgeLoginWrapperPacket<T> {
|
||||
public class GenericForgeLoginWrapperPacket<T extends Context> implements IForgeLoginWrapperPacket<T> {
|
||||
|
||||
private final byte[] content;
|
||||
private final T context;
|
||||
|
||||
GenericForgeLoginWrapperPacket(ByteBuf input, T context) {
|
||||
super(input);
|
||||
GenericForgeLoginWrapperPacket(byte[] content, T context) {
|
||||
this.content = content;
|
||||
this.context = context;
|
||||
}
|
||||
|
||||
|
||||
static public GenericForgeLoginWrapperPacket<Context> create(ByteBuf input, Context context) {
|
||||
return new GenericForgeLoginWrapperPacket<>(input.retain(), context);
|
||||
static public GenericForgeLoginWrapperPacket<?> read(ByteBuf input, Context context) {
|
||||
byte[] content = new byte[input.readableBytes()];
|
||||
input.readBytes(content);
|
||||
return new GenericForgeLoginWrapperPacket<>(content, context);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ByteBuf encode() {
|
||||
return content();
|
||||
ByteBuf buf = Unpooled.buffer();
|
||||
buf.writeBytes(content);
|
||||
return buf;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -3,7 +3,8 @@ package org.adde0109.ambassador.forge.packet;
|
|||
import io.netty.buffer.ByteBuf;
|
||||
|
||||
public class ModDataPacket extends GenericForgeLoginWrapperPacket<Context> {
|
||||
ModDataPacket(ByteBuf input, Context context) {
|
||||
super(input, context);
|
||||
|
||||
ModDataPacket(byte[] content, Context context) {
|
||||
super(content, context);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -70,7 +70,7 @@ public class ForgeLoginWrapperCodec extends MessageToMessageCodec<DeferredByteBu
|
|||
case 5:
|
||||
if (FML3) {
|
||||
buf.readerIndex(originalReaderIndex);
|
||||
out.add(ModDataPacket.create(buf.retain(), context));
|
||||
out.add(ModDataPacket.read(buf, context));
|
||||
break;
|
||||
}
|
||||
default:
|
||||
|
|
@ -80,7 +80,7 @@ public class ForgeLoginWrapperCodec extends MessageToMessageCodec<DeferredByteBu
|
|||
}
|
||||
} catch (DecoderException e) {
|
||||
buf.readerIndex(originalReaderIndex);
|
||||
out.add(GenericForgeLoginWrapperPacket.create(buf.retain(), context));
|
||||
out.add(GenericForgeLoginWrapperPacket.read(buf, context));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -95,6 +95,7 @@ public class ForgeLoginWrapperCodec extends MessageToMessageCodec<DeferredByteBu
|
|||
ProtocolUtils.writeString(wrapped, "fml:handshake");
|
||||
ProtocolUtils.writeVarInt(wrapped, encoded.readableBytes());
|
||||
wrapped.writeBytes(encoded);
|
||||
encoded.release();
|
||||
}
|
||||
|
||||
if (msg.getContext() instanceof Context.ClientContext clientContext) {
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ public class FML2CRPMResetCompleteDecoder extends ChannelInboundHandlerAdapter {
|
|||
boolean success = buf.readBoolean();
|
||||
if (id == 98) {
|
||||
try {
|
||||
ctx.fireChannelRead(GenericForgeLoginWrapperPacket.create(
|
||||
ctx.fireChannelRead(GenericForgeLoginWrapperPacket.read(
|
||||
Unpooled.EMPTY_BUFFER, Context.createContext(id, success)));
|
||||
} finally {
|
||||
buf.release();
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user