Package com.flansmod.common.teams

Source Code of com.flansmod.common.teams.ItemOpStick

package com.flansmod.common.teams;

import com.flansmod.common.FlansMod;
import com.flansmod.common.network.PacketBaseEdit;

import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.IIcon;
import net.minecraft.util.MathHelper;
import net.minecraft.world.World;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;

public class ItemOpStick extends Item
{
  public static final String[] teamNames = new String[] {"No Team", "Spectators", "Team 1", "Team 2"}
  public static final String[] stickNames = new String[] {"opStick_ownership", "opStick_connecting", "opStick_mapping", "opStick_destruction"};
    @SideOnly(Side.CLIENT)
    private IIcon[] icons;
   
  public ItemOpStick()
  {
    super();
    setUnlocalizedName("opStick");
    setHasSubtypes(true);
  }
   
    @Override
  public boolean shouldRotateAroundWhenRendering()
    {
        return true;
    }
 
  @Override
  public boolean isFull3D()
  {
    return true;
  }
 
  public void clickedEntity(World world, EntityPlayer player, Entity clicked)
  {
    if(!(player instanceof EntityPlayerMP))
      return;
    if(clicked instanceof ITeamBase)
      clickedBase(world, (EntityPlayerMP)player, (ITeamBase)clicked);
    if(clicked instanceof ITeamObject)
      clickedObject(world, (EntityPlayerMP)player, (ITeamObject)clicked);
  }
 
  public static void openBaseEditGUI(ITeamBase base, EntityPlayerMP player)
  {
    String[] maps = new String[TeamsManager.getInstance().maps.values().size()];
    if(maps.length == 0)
    {
      //There are no maps setup. Disaster! Abort.
      TeamsManager.messagePlayer(player, "Maps are not yet set up. Use /teams help");
      return;
    }
    int currentMapID = -1;
    int i = 0;
    for(TeamsMap map : TeamsManager.getInstance().maps.values())
    {
      maps[i] = map.name;
      if(map == base.getMap())
        currentMapID = i;
      i++;
    }         
    FlansMod.getPacketHandler().sendTo(new PacketBaseEdit(base.getBaseID(), base.getName(), maps, currentMapID, base.getDefaultOwnerID()), player);

  }
 
  public void clickedBase(World world, EntityPlayerMP player, ITeamBase base)
  {
    int damage = player.inventory.getCurrentItem().getItemDamage();
    TeamsManager teamsManager = TeamsManager.getInstance();
    switch(damage)
      {
        case 0 : //Stick of Ownership
        {
          //Take the existing ownerID, increment it (mod 4 for now - assume all gametypes involve 2 teams)
          int currentOwnerID = base.getDefaultOwnerID();
          currentOwnerID++;
          currentOwnerID = currentOwnerID % 4;
          base.setDefaultOwnerID(currentOwnerID);
          base.setOwnerID(currentOwnerID);
         
          for(ITeamObject object : base.getObjects())
            object.onBaseSet(currentOwnerID);
         
          TeamsManager.messagePlayer(player, "Base owner changed to " + teamNames[currentOwnerID]);

          break;
        }
        case 1 : //Stick of Connecting
        {
          if(player.fishEntity == null)
          {
            EntityConnectingLine hook = new EntityConnectingLine(world, player, base);
            world.spawnEntityInWorld(hook);
          }
          else
          {
            if(player.fishEntity instanceof EntityConnectingLine)
            {
              EntityConnectingLine line = (EntityConnectingLine)player.fishEntity;
              if(line.connectedTo instanceof ITeamObject)
              {
                ITeamObject object = (ITeamObject)line.connectedTo;
                object.setBase(base);
                base.addObject(object);
                line.setDead();
                player.fishEntity = null;
                TeamsManager.messagePlayer(player, "Successfully connected.");
              }
              else
              {
                TeamsManager.messagePlayer(player, "Cannot connect bases to bases.");
              }
            }
          }
          break;
        }
        case 2 : //Stick of Mapping
        {
          openBaseEditGUI(base, player);
          break;
        }
        case 3 : //Stick of Destruction
        {
          base.destroy();
          break;
        }
      }
  }
 
  public void clickedObject(World world, EntityPlayerMP player, ITeamObject object)
  {
    int damage = player.inventory.getCurrentItem().getItemDamage();
    TeamsManager teamsManager = TeamsManager.getInstance();
    switch(damage)
      {
        case 0 : //Stick of Ownership
        {
          //Do nothing. Ownership is a property of bases.
          break;
        }
        case 1 : //Stick of Connecting
        {
          if(player.fishEntity == null)
          {
            EntityConnectingLine hook = new EntityConnectingLine(world, player, object);
            world.spawnEntityInWorld(hook);
          }
          else
          {
            if(player.fishEntity instanceof EntityConnectingLine)
            {
              EntityConnectingLine line = (EntityConnectingLine)player.fishEntity;
              if(line.connectedTo instanceof ITeamBase)
              {
                ITeamBase base = (ITeamBase)line.connectedTo;
                object.setBase(base);
                base.addObject(object);
                //line.setDead();
                //player.fishEntity = null;
                TeamsManager.messagePlayer(player, "Successfully connected.");
              }
              else
              {
                TeamsManager.messagePlayer(player, "Cannot connect objects to objects.");
              }
            }
          }
          break;
        }
        case 2 : //Stick of Mapping
        {
          //Again, this is a property of bases. Objects will follow their parent base in regards to which map they are a part of
          break;
        }
        case 3 : //Stick of Destruction
        {
          object.destroy();
          break;
        }
      }
  }
 
  @Override
    @SideOnly(Side.CLIENT)
    public void registerIcons(IIconRegister register)
    {
      icons = new IIcon[stickNames.length];

        for(int i = 0; i < stickNames.length; ++i)
        {
          icons[i] = register.registerIcon("FlansMod:" + stickNames[i]);
          itemIcon = icons[i];
        }
    }
 
  @Override
    public IIcon getIconFromDamage(int damage)
    {
        int j = MathHelper.clamp_int(damage, 0, 15);
        return icons[j];
    }
 
  @Override
    public String getUnlocalizedName(ItemStack stack)
    {
        return super.getUnlocalizedName() + "." + stack.getItemDamage();
    }
}
TOP

Related Classes of com.flansmod.common.teams.ItemOpStick

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.