Здравствуйте, мне требуется записать ArrayList, который содержит в себе строки(String) в NBT и передать соответственно через пакеты его на клиент.
Долго искал в интернете, нужной информации так и не нашел. Прошу помочь мне. С обычным NBT у меня нет проблем, одиночную строку передаю спокойно, а вот как целый лист - не знаю. Ясно дело, что тут нужен NBTTagList но я так и не понял как с ним работать.
Обычную строку, если что, передаю вот так:
Получаю её в классе Handler: String Title;
Сюда же и нужно передать ArrayList
Долго искал в интернете, нужной информации так и не нашел. Прошу помочь мне. С обычным NBT у меня нет проблем, одиночную строку передаю спокойно, а вот как целый лист - не знаю. Ясно дело, что тут нужен NBTTagList но я так и не понял как с ним работать.
Обычную строку, если что, передаю вот так:
ModTicker.java:
NBTTagCompound pTag = new NBTTagCompound();
pTag.setString("Title", titleInfo);
NetworkHandler.network.sendTo(new PacketTitles(pTag), (EntityPlayerMP)player);
PacketTitles.java:
import io.netty.buffer.ByteBuf;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraftforge.fml.common.network.ByteBufUtils;
import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler;
import net.minecraftforge.fml.common.network.simpleimpl.MessageContext;
public class PacketTitles implements IMessage
{
private NBTTagCompound nbtTag;
public PacketTitles() {}
public PacketTitles(NBTTagCompound nbt)
{
this.nbtTag = nbt;
}
@Override
public void fromBytes(ByteBuf buf)
{
nbtTag = ByteBufUtils.readTag(buf);
}
@Override
public void toBytes(ByteBuf buf)
{
ByteBufUtils.writeTag(buf, nbtTag);
}
public static class Handler implements IMessageHandler<PacketTitles, IMessage>
{
@Override
public IMessage onMessage(PacketTitles message, MessageContext ctx)
{
if(message != null)
{
NBTTagCompound nbt = message.nbtTag;
whoami.Handler.Title = nbt.getString("Title");
}
return null;
}
}
}
Сюда же и нужно передать ArrayList