Передача информации Мод <=> Плагин

Icosider

Kotliner
Администратор
3,601
99
664
Вот это поворот. Ещё б систему нормальную, и цены б не было)
 
235
3
21
так как в 1 пакете нельзя передать более 11 символов
сделал небольшую систему для разбития данных по разным пакетам

Java:
public class SendPacketController
{
    public static void sendString(String s, Player player)
    {
        List<String> stringsList = new ArrayList<>();
        stringsList.add("<start>");
      
        char[] mas = s.toCharArray();
        String data = "";
        for (int i=0; i<s.length(); i++)
        {
            if (data.length() == 11)
            {
                stringsList.add(data);
                data = "";
            }
            data += mas[i];
            if (i == mas.length-1)
            {
                stringsList.add(data);
                data = "";
            }
        }
      
        stringsList.add("<end>");
      
        String[] stringArray = stringsList.toArray(new String[0]);
        for (int i=0; i<stringArray.length; i++)
        {
            S0PacketName packet = new S0PacketName(stringArray[i]);
            YourPlugin.networt.sendPacketToPlayer(player, packet);
            //network - PacketHandlerPlugin
        }
    }
}

Java:
private List<String> stringsList = new ArrayList<>();
private boolean start = false;
private boolean end = false;

//Метод, вызванный в слушателе канала
private void handleC0PacketName(C0PacketName packet)
{
    String s = packet.payload;
    switch (s)
    {
    case "<start>":
        this.stringsList.clear();
        this.start = true;
        this.end = false;
        break;
    case "<end>":
        this.end = true;
        if (!this.stringsList.isEmpty())
        {
            String finalString = "";
            for (String str : this.stringsList)
            { finalString += str; }
            getStringFromPacket(finalString);
        }
        break;
    default:
        if (this.start && !this.end)
        { this.stringsList.add(s); }
        break;
    }
}

private void getStringFromPacket(String s)
{
    //ваш код с полученной и дешифрованной строкой
}

Чтобы сделать для отправки из мода в плагин ума много не надо, просто зеркально развернуть
 
Последнее редактирование:
Сверху