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));
}
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);
}
}
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)));
}
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() : "");
}
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);
}
}
Aggregations