Package com.flansmod.common.teams

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

package com.flansmod.common.teams;

import java.util.HashMap;
import java.util.List;
import java.util.Random;

import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.server.MinecraftServer;
import net.minecraft.util.DamageSource;
import net.minecraft.util.EntityDamageSource;
import net.minecraft.util.EntityDamageSourceIndirect;
import net.minecraft.util.Vec3;

import com.flansmod.common.FlansMod;
import com.flansmod.common.PlayerData;
import com.flansmod.common.PlayerHandler;
import com.flansmod.common.network.PacketBase;
import com.flansmod.common.types.InfoType;

public abstract class Gametype
{
  public static HashMap<String, Gametype> gametypes = new HashMap<String, Gametype>();
  public static TeamsManager teamsManager = TeamsManager.getInstance();
  public static Random rand = new Random();
 
  public static Gametype getGametype(String type)
  {
    return gametypes.get(type);
  }
 
  public String name;
  public String shortName;
  public int numTeamsRequired;
 
  public Gametype(String s, String s1, int numTeams)
  {
    name = s;
    shortName = s1;
    numTeamsRequired = numTeams;
    gametypes.put(shortName, this);
  }
 
  /** Called when a round starts */
  public abstract void roundStart();
 
  /** Called when a round ends. (The point at which scoreboards are displayed) */
  public abstract void roundEnd();
 
  /** Called when the scoreboards and voting are finished */
  public abstract void roundCleanup();
 
  public abstract boolean teamHasWon(Team team);
 
  public void tick() {}
 
  public Team[] getTeamsCanSpawnAs(TeamsRound currentRound, EntityPlayer player)
  {
    return currentRound.teams;
  }
 
  public void playerJoined(EntityPlayerMP player) {}
 
  public void playerRespawned(EntityPlayerMP player) {}
 
  public void playerQuit(EntityPlayerMP player) {}
   
  //Return true if damage should be dealt.
  public boolean playerAttacked(EntityPlayerMP player, DamageSource source) { return true; }
 
  public void playerKilled(EntityPlayerMP player, DamageSource source) {}
 
  public void baseAttacked(ITeamBase base, DamageSource source) {}
 
  public void objectAttacked(ITeamObject object, DamageSource source) {}

  public void baseClickedByPlayer(ITeamBase base, EntityPlayerMP player) {}
 
  public void objectClickedByPlayer(ITeamObject object, EntityPlayerMP player) {}
 
  public boolean playerCanLoot(ItemStack stack, InfoType infoType, EntityPlayer player, Team playerTeam) { return true; }
 
  public abstract Vec3 getSpawnPoint(EntityPlayerMP player);
 
  //Return whether or not the variable exists
  public boolean setVariable(String variable, String value) { return false; }
 
  public abstract void readFromNBT(NBTTagCompound tags);
 
  public abstract void saveToNBT(NBTTagCompound tags);
 
  public boolean sortScoreboardByTeam() { return true; }
 
  public boolean showZombieScore() { return false; }

  /** Whether "attacker" can attack "victim" */
  public boolean playerCanAttack(EntityPlayerMP attacker, Team attackerTeam, EntityPlayerMP victim, Team victimTeam) { return true; }

  /** Called when any entity is killed. This allows one to track mob deaths too */
  public void entityKilled(Entity entity, DamageSource source) {}

  public void playerChoseTeam(EntityPlayerMP player, Team team, Team newTeam) {}
   
  public void playerChoseNewClass(EntityPlayerMP player, PlayerClass playerClass) {}
 
  public void playerDefected(EntityPlayerMP player, Team team, Team newTeam) {}
 
  public void playerEnteredTheGame(EntityPlayerMP player, Team team, PlayerClass playerClass) {}
 
  //--------------------------------------
  // Helper methods - Do not override
  //--------------------------------------
 
  public EntityPlayerMP getPlayer(String username)
  {
    return MinecraftServer.getServer().getConfigurationManager().func_152612_a(username);
  }
 
  public static PlayerData getPlayerData(EntityPlayerMP player)
  {
    return PlayerHandler.getPlayerData(player);
  }
 
  public static void sendPacketToPlayer(PacketBase packet, EntityPlayerMP player)
  {
    FlansMod.getPacketHandler().sendTo(packet, player);
  }
   
  public static String[] getPlayerNames()
  {
    return MinecraftServer.getServer().getAllUsernames();
  }
 
  public static List<EntityPlayer> getPlayers()
  {
    return MinecraftServer.getServer().getConfigurationManager().playerEntityList;
  }
           
  public static void givePoints(EntityPlayerMP player, int points)
  {
    PlayerData data = getPlayerData(player);
    data.score += points;
    if(data.team != null)
      data.team.score += points;
  }
 
  public static EntityPlayerMP getPlayerFromDamageSource(DamageSource source)
  {
    EntityPlayerMP attacker = null;
    if(source instanceof EntityDamageSource)
    {
      if(source.getEntity() instanceof EntityPlayerMP)
        attacker = (EntityPlayerMP) source.getEntity();
    }
    if(source instanceof EntityDamageSourceIndirect)
    {
      if(source.getSourceOfDamage() instanceof EntityPlayerMP)
        attacker = (EntityPlayerMP) source.getSourceOfDamage();
    }
    return attacker;
  }
 
  public boolean shouldAutobalance() { return true; }
}
TOP

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

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.