New forge packets and handshake class
This commit is contained in:
parent
669a856ec4
commit
82f3e1ba5f
|
|
@ -0,0 +1,30 @@
|
||||||
|
package org.adde0109.ambassador.forge;
|
||||||
|
|
||||||
|
import org.adde0109.ambassador.forge.packet.ModListPacket;
|
||||||
|
import org.adde0109.ambassador.forge.packet.ModListReplyPacket;
|
||||||
|
|
||||||
|
public class ForgeHandshake {
|
||||||
|
|
||||||
|
private ModListPacket modListPacket;
|
||||||
|
private ModListReplyPacket modListReplyPacket;
|
||||||
|
|
||||||
|
public ForgeHandshake() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public ModListPacket getModListPacket() {
|
||||||
|
return modListPacket;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setModListPacket(ModListPacket modListPacket) {
|
||||||
|
this.modListPacket = modListPacket;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ModListReplyPacket getModListReplyPacket() {
|
||||||
|
return modListReplyPacket;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setModListReplyPacket(ModListReplyPacket modListReplyPacket) {
|
||||||
|
this.modListReplyPacket = modListReplyPacket;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,26 @@
|
||||||
|
package org.adde0109.ambassador.forge.packet;
|
||||||
|
|
||||||
|
import io.netty.buffer.ByteBuf;
|
||||||
|
import io.netty.buffer.Unpooled;
|
||||||
|
|
||||||
|
public class ACKPacket implements IForgeLoginWrapperPacket<Context.ClientContext> {
|
||||||
|
|
||||||
|
private final Context.ClientContext context;
|
||||||
|
|
||||||
|
ACKPacket(int msgID, boolean success) {
|
||||||
|
this.context = Context.createContext(msgID, success);
|
||||||
|
}
|
||||||
|
|
||||||
|
ACKPacket read(ByteBuf input, int msgID, boolean success) {
|
||||||
|
return new ACKPacket(msgID, success);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public ByteBuf encode() {
|
||||||
|
return Unpooled.EMPTY_BUFFER;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Context.ClientContext getContext() {
|
||||||
|
return context;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,103 @@
|
||||||
|
package org.adde0109.ambassador.forge.packet;
|
||||||
|
|
||||||
|
import com.velocitypowered.api.proxy.messages.ChannelIdentifier;
|
||||||
|
import com.velocitypowered.api.proxy.messages.MinecraftChannelIdentifier;
|
||||||
|
import com.velocitypowered.proxy.protocol.ProtocolUtils;
|
||||||
|
import io.netty.buffer.ByteBuf;
|
||||||
|
import io.netty.buffer.Unpooled;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public class ModListPacket implements IForgeLoginWrapperPacket<Context> {
|
||||||
|
private List<String> mods;
|
||||||
|
private Map<ChannelIdentifier, String> channels;
|
||||||
|
private List<String> registries;
|
||||||
|
private final List<String> dataPackRegistries;
|
||||||
|
|
||||||
|
private final Context context;
|
||||||
|
private ModListPacket(List<String> mods, Map<ChannelIdentifier,
|
||||||
|
String> channels, List<String> registries, int id, List<String> dataPackRegistries) {
|
||||||
|
this.mods = mods;
|
||||||
|
this.channels = channels;
|
||||||
|
this.registries = registries;
|
||||||
|
this.context = Context.createContext(id);
|
||||||
|
this.dataPackRegistries = dataPackRegistries;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ModListPacket read(ByteBuf input, int msgID, boolean FML3) {
|
||||||
|
|
||||||
|
List<String> mods = new ArrayList<>();
|
||||||
|
int len = ProtocolUtils.readVarInt(input);
|
||||||
|
for (int x = 0; x < len; x++)
|
||||||
|
mods.add(ProtocolUtils.readString(input, 0x100));
|
||||||
|
|
||||||
|
Map<ChannelIdentifier, String> channels = new HashMap<>();
|
||||||
|
len = ProtocolUtils.readVarInt(input);
|
||||||
|
for (int x = 0; x < len; x++)
|
||||||
|
channels.put(MinecraftChannelIdentifier.from(ProtocolUtils.readString(input, 32767)),
|
||||||
|
ProtocolUtils.readString(input, 0x100));
|
||||||
|
|
||||||
|
List<String> registries = new ArrayList<>();
|
||||||
|
len = ProtocolUtils.readVarInt(input);
|
||||||
|
for (int x = 0; x < len; x++)
|
||||||
|
registries.add(ProtocolUtils.readString(input, 32767));
|
||||||
|
|
||||||
|
List<String> dataPackRegistries = new ArrayList<>();
|
||||||
|
if (FML3) {
|
||||||
|
len = ProtocolUtils.readVarInt(input);
|
||||||
|
for (int x = 0; x < len; x++)
|
||||||
|
dataPackRegistries.add(ProtocolUtils.readString(input, 0x100));
|
||||||
|
}
|
||||||
|
|
||||||
|
return new ModListPacket(mods, channels, registries, msgID, dataPackRegistries);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ByteBuf encode() {
|
||||||
|
ByteBuf buf = Unpooled.buffer();
|
||||||
|
|
||||||
|
ProtocolUtils.writeVarInt(buf, 1);
|
||||||
|
|
||||||
|
ProtocolUtils.writeVarInt(buf, mods.size());
|
||||||
|
mods.forEach(m -> ProtocolUtils.writeString(buf, m));
|
||||||
|
|
||||||
|
ProtocolUtils.writeVarInt(buf, channels.size());
|
||||||
|
channels.forEach((k, v) -> {
|
||||||
|
ProtocolUtils.writeString(buf,k.getId());
|
||||||
|
ProtocolUtils.writeString(buf,v);
|
||||||
|
});
|
||||||
|
|
||||||
|
ProtocolUtils.writeVarInt(buf, registries.size());
|
||||||
|
registries.forEach(k -> ProtocolUtils.writeString(buf, k));
|
||||||
|
|
||||||
|
if (dataPackRegistries != null) {
|
||||||
|
ProtocolUtils.writeVarInt(buf, registries.size());
|
||||||
|
registries.forEach(k -> ProtocolUtils.writeString(buf, k));
|
||||||
|
}
|
||||||
|
|
||||||
|
ByteBuf output = Unpooled.buffer();
|
||||||
|
ProtocolUtils.writeString(output, "fml:handshake");
|
||||||
|
ProtocolUtils.writeVarInt(output, buf.readableBytes());
|
||||||
|
output.writeBytes(buf);
|
||||||
|
|
||||||
|
return output;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Context getContext() {
|
||||||
|
return context;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<String> getMods() {
|
||||||
|
return mods;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Map<ChannelIdentifier, String> getChannels() {
|
||||||
|
return channels;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,22 @@
|
||||||
|
package org.adde0109.ambassador.forge.packet;
|
||||||
|
|
||||||
|
import io.netty.buffer.ByteBuf;
|
||||||
|
|
||||||
|
public class configDataPacket implements IForgeLoginWrapperPacket<Context> {
|
||||||
|
|
||||||
|
private final Context context;
|
||||||
|
|
||||||
|
public configDataPacket(int msgID) {
|
||||||
|
this.context = Context.createContext(msgID);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ByteBuf encode() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Context getContext() {
|
||||||
|
return context;
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user