Search in sources :

Example 86 with PacketBuffer

use of net.minecraft.network.PacketBuffer in project GregTech by GregTechCE.

the class UIFactory method openUI.

public final void openUI(E holder, EntityPlayerMP player) {
    if (player instanceof FakePlayer) {
        return;
    }
    ModularUI uiTemplate = createUITemplate(holder, player);
    uiTemplate.initWidgets();
    player.getNextWindowId();
    player.closeContainer();
    int currentWindowId = player.currentWindowId;
    PacketBuffer serializedHolder = new PacketBuffer(Unpooled.buffer());
    writeHolderToSyncData(serializedHolder, holder);
    int uiFactoryId = FACTORY_REGISTRY.getIDForObject(this);
    ModularUIContainer container = new ModularUIContainer(uiTemplate);
    container.windowId = currentWindowId;
    // accumulate all initial updates of widgets in open packet
    container.accumulateWidgetUpdateData = true;
    uiTemplate.guiWidgets.values().forEach(Widget::detectAndSendChanges);
    container.accumulateWidgetUpdateData = false;
    ArrayList<PacketUIWidgetUpdate> updateData = new ArrayList<>(container.accumulatedUpdates);
    container.accumulatedUpdates.clear();
    PacketUIOpen packet = new PacketUIOpen(uiFactoryId, serializedHolder, currentWindowId, updateData);
    NetworkHandler.channel.sendTo(NetworkHandler.packet2proxy(packet), player);
    container.addListener(player);
    player.openContainer = container;
    // and fire forge event only in the end
    MinecraftForge.EVENT_BUS.post(new PlayerContainerEvent.Open(player, container));
}
Also used : PacketUIWidgetUpdate(gregtech.api.net.PacketUIWidgetUpdate) ModularUIContainer(gregtech.api.gui.impl.ModularUIContainer) ArrayList(java.util.ArrayList) PacketUIOpen(gregtech.api.net.PacketUIOpen) PlayerContainerEvent(net.minecraftforge.event.entity.player.PlayerContainerEvent) PacketBuffer(net.minecraft.network.PacketBuffer) FakePlayer(net.minecraftforge.common.util.FakePlayer)

Example 87 with PacketBuffer

use of net.minecraft.network.PacketBuffer in project RFToolsDimensions by McJty.

the class PacketSyncDimensionInfo method fromBytes.

@Override
public void fromBytes(ByteBuf buf) {
    int size = buf.readInt();
    dimensions = new HashMap<Integer, DimensionDescriptor>();
    for (int i = 0; i < size; i++) {
        int id = buf.readInt();
        PacketBuffer buffer = new PacketBuffer(buf);
        NBTTagCompound tagCompound;
        try {
            tagCompound = buffer.readNBTTagCompoundFromBuffer();
        } catch (IOException e) {
            e.printStackTrace();
            return;
        }
        DimensionDescriptor descriptor = new DimensionDescriptor(tagCompound);
        dimensions.put(id, descriptor);
    }
    size = buf.readInt();
    dimensionInformation = new HashMap<Integer, DimensionInformation>();
    for (int i = 0; i < size; i++) {
        int id = buf.readInt();
        String name = NetworkTools.readString(buf);
        DimensionInformation dimInfo = new DimensionInformation(name, dimensions.get(id), buf);
        dimensionInformation.put(id, dimInfo);
    }
}
Also used : DimensionDescriptor(mcjty.rftoolsdim.dimensions.description.DimensionDescriptor) NBTTagCompound(net.minecraft.nbt.NBTTagCompound) IOException(java.io.IOException) DimensionInformation(mcjty.rftoolsdim.dimensions.DimensionInformation) PacketBuffer(net.minecraft.network.PacketBuffer)

Example 88 with PacketBuffer

use of net.minecraft.network.PacketBuffer in project Gaspunk by Ladysnake.

the class EntityGasCloud method readSpawnData.

@Override
public void readSpawnData(ByteBuf additionalData) {
    PacketBuffer buf = new PacketBuffer(additionalData);
    this.gas = ModGases.REGISTRY.getValue(new ResourceLocation(buf.readString(64)));
}
Also used : ResourceLocation(net.minecraft.util.ResourceLocation) PacketBuffer(net.minecraft.network.PacketBuffer)

Example 89 with PacketBuffer

use of net.minecraft.network.PacketBuffer in project Gaspunk by Ladysnake.

the class EntityGasCloud method writeSpawnData.

@Override
public void writeSpawnData(ByteBuf buffer) {
    PacketBuffer buf = new PacketBuffer(buffer);
    buf.writeString(gas != null ? Objects.requireNonNull(gas.getRegistryName()).toString() : "");
}
Also used : PacketBuffer(net.minecraft.network.PacketBuffer)

Example 90 with PacketBuffer

use of net.minecraft.network.PacketBuffer in project minecolonies by Minecolonies.

the class SaveScanMessage method fromBytes.

@Override
public void fromBytes(@NotNull final ByteBuf buf) {
    final PacketBuffer buffer = new PacketBuffer(buf);
    try (ByteBufInputStream stream = new ByteBufInputStream(buffer)) {
        final NBTTagCompound wrapperCompound = CompressedStreamTools.readCompressed(stream);
        nbttagcompound = wrapperCompound.getCompoundTag(TAG_SCHEMATIC);
        fileName = wrapperCompound.getString(TAG_MILLIS);
    } catch (final RuntimeException e) {
        Log.getLogger().info("Structure too big to be processed", e);
    } catch (final IOException e) {
        Log.getLogger().info("Problem at retrieving structure on server.", e);
    }
}
Also used : NBTTagCompound(net.minecraft.nbt.NBTTagCompound) ByteBufInputStream(io.netty.buffer.ByteBufInputStream) IOException(java.io.IOException) PacketBuffer(net.minecraft.network.PacketBuffer)

Aggregations

PacketBuffer (net.minecraft.network.PacketBuffer)105 NBTTagCompound (net.minecraft.nbt.NBTTagCompound)20 IOException (java.io.IOException)14 FMLProxyPacket (net.minecraftforge.fml.common.network.internal.FMLProxyPacket)14 ByteBuf (io.netty.buffer.ByteBuf)11 SPacketCustomPayload (net.minecraft.network.play.server.SPacketCustomPayload)7 BlockPos (net.minecraft.util.math.BlockPos)7 HashMap (java.util.HashMap)4 DimensionInformation (mcjty.rftoolsdim.dimensions.DimensionInformation)4 DimensionDescriptor (mcjty.rftoolsdim.dimensions.description.DimensionDescriptor)4 EntityPlayerMP (net.minecraft.entity.player.EntityPlayerMP)4 ArrayList (java.util.ArrayList)3 Map (java.util.Map)3 NetHandlerPlayServer (net.minecraft.network.NetHandlerPlayServer)3 Test (org.junit.Test)3 PacketBufferBC (buildcraft.lib.net.PacketBufferBC)2 JsonProcessingException (com.fasterxml.jackson.core.JsonProcessingException)2 PacketCustomTileData (gregtech.api.net.PacketCustomTileData)2 PacketUIWidgetUpdate (gregtech.api.net.PacketUIWidgetUpdate)2 AbstractData (hellfirepvp.fracture.common.data.AbstractData)2