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