Package mekanism.common.network

Source Code of mekanism.common.network.PacketDigitalMinerGui$DigitalMinerGuiMessage

package mekanism.common.network;

import java.util.ArrayList;

import mekanism.api.Coord4D;
import mekanism.client.gui.GuiDigitalMiner;
import mekanism.client.gui.GuiDigitalMinerConfig;
import mekanism.client.gui.GuiMFilterSelect;
import mekanism.client.gui.GuiMItemStackFilter;
import mekanism.client.gui.GuiMMaterialFilter;
import mekanism.client.gui.GuiMModIDFilter;
import mekanism.client.gui.GuiMOreDictFilter;
import mekanism.common.Mekanism;
import mekanism.common.PacketHandler;
import mekanism.common.inventory.container.ContainerDigitalMiner;
import mekanism.common.inventory.container.ContainerFilter;
import mekanism.common.inventory.container.ContainerNull;
import mekanism.common.network.PacketDigitalMinerGui.DigitalMinerGuiMessage;
import mekanism.common.network.PacketTileEntity.TileEntityMessage;
import mekanism.common.tile.TileEntityContainerBlock;
import mekanism.common.tile.TileEntityDigitalMiner;

import net.minecraft.client.gui.GuiScreen;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.inventory.Container;
import net.minecraft.world.World;
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.common.network.simpleimpl.IMessage;
import cpw.mods.fml.common.network.simpleimpl.IMessageHandler;
import cpw.mods.fml.common.network.simpleimpl.MessageContext;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;

import io.netty.buffer.ByteBuf;

public class PacketDigitalMinerGui implements IMessageHandler<DigitalMinerGuiMessage, IMessage>
{
  @Override
  public IMessage onMessage(DigitalMinerGuiMessage message, MessageContext context)
  {
    EntityPlayer player = PacketHandler.getPlayer(context);
   
    if(!player.worldObj.isRemote)
    {
      World worldServer = FMLCommonHandler.instance().getMinecraftServerInstance().worldServerForDimension(message.coord4D.dimensionId);

      if(worldServer != null && message.coord4D.getTileEntity(worldServer) instanceof TileEntityDigitalMiner)
      {
        DigitalMinerGuiMessage.openServerGui(message.packetType, message.guiType, worldServer, (EntityPlayerMP)player, message.coord4D, message.index);
      }
    }
    else {
      if(message.coord4D.getTileEntity(player.worldObj) instanceof TileEntityDigitalMiner)
      {
        try {
          if(message.packetType == MinerGuiPacket.CLIENT)
          {
            FMLCommonHandler.instance().showGuiScreen(DigitalMinerGuiMessage.getGui(message.packetType, message.guiType, player, player.worldObj, message.coord4D.xCoord, message.coord4D.yCoord, message.coord4D.zCoord, -1));
          }
          else if(message.packetType == MinerGuiPacket.CLIENT_INDEX)
          {
            FMLCommonHandler.instance().showGuiScreen(DigitalMinerGuiMessage.getGui(message.packetType, message.guiType, player, player.worldObj, message.coord4D.xCoord, message.coord4D.yCoord, message.coord4D.zCoord, message.index));
          }

          player.openContainer.windowId = message.windowId;
        } catch(Exception e) {
          e.printStackTrace();
        }
      }
    }
   
    return null;
  }
 
  public static class DigitalMinerGuiMessage implements IMessage
  {
    public Coord4D coord4D;
 
    public MinerGuiPacket packetType;
 
    public int guiType;
 
    public int windowId = -1;
 
    public int index = -1;
   
    public DigitalMinerGuiMessage() {}
 
    public DigitalMinerGuiMessage(MinerGuiPacket type, Coord4D coord, int guiID, int extra, int extra2)
    {
      packetType = type;
 
      coord4D = coord;
      guiType = guiID;
 
      if(packetType == MinerGuiPacket.CLIENT)
      {
        windowId = extra;
      }
      else if(packetType == MinerGuiPacket.SERVER_INDEX)
      {
        index = extra;
      }
      else if(packetType == MinerGuiPacket.CLIENT_INDEX)
      {
        windowId = extra;
        index = extra2;
      }
    }
 
    public static void openServerGui(MinerGuiPacket t, int guiType, World world, EntityPlayerMP playerMP, Coord4D obj, int i)
    {
      Container container = null;
 
      playerMP.closeContainer();
 
      if(guiType == 0)
      {
        container = new ContainerNull(playerMP, (TileEntityContainerBlock)obj.getTileEntity(world));
      }
      else if(guiType == 4)
      {
        container = new ContainerDigitalMiner(playerMP.inventory, (TileEntityDigitalMiner)obj.getTileEntity(world));
      }
      else if(guiType == 5)
      {
        container = new ContainerNull(playerMP, (TileEntityContainerBlock)obj.getTileEntity(world));
      }
      else if(guiType == 1 || guiType == 2 || guiType == 3 || guiType == 6)
      {
        container = new ContainerFilter(playerMP.inventory, (TileEntityContainerBlock)obj.getTileEntity(world));
      }
 
      playerMP.getNextWindowId();
      int window = playerMP.currentWindowId;
 
      if(t == MinerGuiPacket.SERVER)
      {
        Mekanism.packetHandler.sendTo(new DigitalMinerGuiMessage(MinerGuiPacket.CLIENT, obj, guiType, window, 0), playerMP);
      }
      else if(t == MinerGuiPacket.SERVER_INDEX)
      {
        Mekanism.packetHandler.sendTo(new DigitalMinerGuiMessage(MinerGuiPacket.CLIENT_INDEX, obj, guiType, window, i), playerMP);
      }
 
      playerMP.openContainer = container;
      playerMP.openContainer.windowId = window;
      playerMP.openContainer.addCraftingToCrafters(playerMP);
 
      if(guiType == 0)
      {
        TileEntityDigitalMiner tile = (TileEntityDigitalMiner)obj.getTileEntity(world);
 
        for(EntityPlayer player : tile.playersUsing)
        {
          Mekanism.packetHandler.sendTo(new TileEntityMessage(obj, tile.getFilterPacket(new ArrayList())), (EntityPlayerMP)player);
        }
      }
    }
 
    @SideOnly(Side.CLIENT)
    public static GuiScreen getGui(MinerGuiPacket packetType, int type, EntityPlayer player, World world, int x, int y, int z, int index)
    {
      if(type == 0)
      {
        return new GuiDigitalMinerConfig(player, (TileEntityDigitalMiner)world.getTileEntity(x, y, z));
      }
      else if(type == 4)
      {
        return new GuiDigitalMiner(player.inventory, (TileEntityDigitalMiner)world.getTileEntity(x, y, z));
      }
      else if(type == 5)
      {
        return new GuiMFilterSelect(player, (TileEntityDigitalMiner)world.getTileEntity(x, y, z));
      }
      else {
        if(packetType == MinerGuiPacket.CLIENT)
        {
          if(type == 1)
          {
            return new GuiMItemStackFilter(player, (TileEntityDigitalMiner)world.getTileEntity(x, y, z));
          }
          else if(type == 2)
          {
            return new GuiMOreDictFilter(player, (TileEntityDigitalMiner)world.getTileEntity(x, y, z));
          }
          else if(type == 3)
          {
            return new GuiMMaterialFilter(player, (TileEntityDigitalMiner)world.getTileEntity(x, y, z));
          }
          else if(type == 6)
          {
            return new GuiMModIDFilter(player, (TileEntityDigitalMiner)world.getTileEntity(x, y, z));
          }
        }
        else if(packetType == MinerGuiPacket.CLIENT_INDEX)
        {
          if(type == 1)
          {
            return new GuiMItemStackFilter(player, (TileEntityDigitalMiner)world.getTileEntity(x, y, z), index);
          }
          else if(type == 2)
          {
            return new GuiMOreDictFilter(player, (TileEntityDigitalMiner)world.getTileEntity(x, y, z), index);
          }
          else if(type == 3)
          {
            return new GuiMMaterialFilter(player, (TileEntityDigitalMiner)world.getTileEntity(x, y, z), index);
          }
          else if(type == 6)
          {
            return new GuiMModIDFilter(player, (TileEntityDigitalMiner)world.getTileEntity(x, y, z), index);
          }
        }
      }
 
      return null;
    }
 
    @Override
    public void toBytes(ByteBuf dataStream)
    {
      dataStream.writeInt(packetType.ordinal());
 
      dataStream.writeInt(coord4D.xCoord);
      dataStream.writeInt(coord4D.yCoord);
      dataStream.writeInt(coord4D.zCoord);
 
      dataStream.writeInt(coord4D.dimensionId);
 
      dataStream.writeInt(guiType);
 
      if(packetType == MinerGuiPacket.CLIENT || packetType == MinerGuiPacket.CLIENT_INDEX)
      {
        dataStream.writeInt(windowId);
      }
 
      if(packetType == MinerGuiPacket.SERVER_INDEX || packetType == MinerGuiPacket.CLIENT_INDEX)
      {
        dataStream.writeInt(index);
      }
    }
 
    @Override
    public void fromBytes(ByteBuf dataStream)
    {
      packetType = MinerGuiPacket.values()[dataStream.readInt()];
 
      coord4D = new Coord4D(dataStream.readInt(), dataStream.readInt(), dataStream.readInt(), dataStream.readInt());
 
      guiType = dataStream.readInt();
 
      if(packetType == MinerGuiPacket.CLIENT || packetType == MinerGuiPacket.CLIENT_INDEX)
      {
        windowId = dataStream.readInt();
      }
 
      if(packetType == MinerGuiPacket.SERVER_INDEX || packetType == MinerGuiPacket.CLIENT_INDEX)
      {
        index = dataStream.readInt();
      }
    }
  }
 
  public static enum MinerGuiPacket
  {
    SERVER, CLIENT, SERVER_INDEX, CLIENT_INDEX
  }
}
TOP

Related Classes of mekanism.common.network.PacketDigitalMinerGui$DigitalMinerGuiMessage

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.