mirror of https://github.com/LOOHP/Limbo.git
56 lines
1.7 KiB
Java
56 lines
1.7 KiB
Java
package com.loohp.limbo;
|
|
|
|
import java.io.ByteArrayOutputStream;
|
|
import java.io.DataOutputStream;
|
|
import java.nio.charset.StandardCharsets;
|
|
import java.util.List;
|
|
|
|
import com.loohp.limbo.Commands.CommandSender;
|
|
import com.loohp.limbo.Server.Packets.PacketPlayOutDeclareCommands;
|
|
import com.loohp.limbo.Utils.DataTypeIO;
|
|
|
|
public class DeclareCommands {
|
|
|
|
public static PacketPlayOutDeclareCommands getDeclareCommandsPacket(CommandSender sender) throws Exception {
|
|
List<String> commands = Limbo.getInstance().getPluginManager().getTabOptions(sender, new String[0]);
|
|
|
|
if (commands.isEmpty()) {
|
|
return null;
|
|
}
|
|
|
|
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
|
|
DataOutputStream output = new DataOutputStream(buffer);
|
|
|
|
DataTypeIO.writeVarInt(output, commands.size() * 2 + 1);
|
|
|
|
output.writeByte(0);
|
|
DataTypeIO.writeVarInt(output, commands.size());
|
|
for (int i = 1; i <= commands.size() * 2; i++) {
|
|
DataTypeIO.writeVarInt(output, i++);
|
|
}
|
|
|
|
int i = 1;
|
|
for (String label : commands) {
|
|
output.writeByte(1 | 0x04);
|
|
DataTypeIO.writeVarInt(output, 1);
|
|
DataTypeIO.writeVarInt(output, i + 1);
|
|
DataTypeIO.writeString(output, label, StandardCharsets.UTF_8);
|
|
i++;
|
|
|
|
output.writeByte(2 | 0x04 | 0x10);
|
|
DataTypeIO.writeVarInt(output, 1);
|
|
DataTypeIO.writeVarInt(output, i);
|
|
DataTypeIO.writeString(output, "arg", StandardCharsets.UTF_8);
|
|
DataTypeIO.writeString(output, "brigadier:string", StandardCharsets.UTF_8);
|
|
DataTypeIO.writeVarInt(output, 0);
|
|
DataTypeIO.writeString(output, "minecraft:ask_server", StandardCharsets.UTF_8);
|
|
i++;
|
|
}
|
|
|
|
DataTypeIO.writeVarInt(output, 0);
|
|
|
|
return new PacketPlayOutDeclareCommands(buffer.toByteArray());
|
|
}
|
|
|
|
}
|