    001package net.minecraft.world;
    002
    003import cpw.mods.fml.relauncher.Side;
    004import cpw.mods.fml.relauncher.SideOnly;
    005import net.minecraft.entity.player.PlayerCapabilities;
    006
    007public enum EnumGameType
    008{
    009    NOT_SET(-1, ""),
    010    SURVIVAL(0, "survival"),
    011    CREATIVE(1, "creative"),
    012    ADVENTURE(2, "adventure");
    013    int id;
    014    String name;
    015
    016    private EnumGameType(int par3, String par4Str)
    017    {
    018        this.id = par3;
    019        this.name = par4Str;
    020    }
    021
    022    /**
    023     * Returns the ID of this game type
    024     */
    025    public int getID()
    026    {
    027        return this.id;
    028    }
    029
    030    /**
    031     * Returns the name of this game type
    032     */
    033    public String getName()
    034    {
    035        return this.name;
    036    }
    037
    038    /**
    039     * Configures the player capabilities based on the game type
    040     */
    041    public void configurePlayerCapabilities(PlayerCapabilities par1PlayerCapabilities)
    042    {
    043        if (this == CREATIVE)
    044        {
    045            par1PlayerCapabilities.allowFlying = true;
    046            par1PlayerCapabilities.isCreativeMode = true;
    047            par1PlayerCapabilities.disableDamage = true;
    048        }
    049        else
    050        {
    051            par1PlayerCapabilities.allowFlying = false;
    052            par1PlayerCapabilities.isCreativeMode = false;
    053            par1PlayerCapabilities.disableDamage = false;
    054            par1PlayerCapabilities.isFlying = false;
    055        }
    056
    057        par1PlayerCapabilities.allowEdit = !this.isAdventure();
    058    }
    059
    060    /**
    061     * Returns true if this is the ADVENTURE game type
    062     */
    063    public boolean isAdventure()
    064    {
    065        return this == ADVENTURE;
    066    }
    067
    068    /**
    069     * Returns true if this is the CREATIVE game type
    070     */
    071    public boolean isCreative()
    072    {
    073        return this == CREATIVE;
    074    }
    075
    076    @SideOnly(Side.CLIENT)
    077
    078    /**
    079     * Returns true if this is the SURVIVAL or ADVENTURE game type
    080     */
    081    public boolean isSurvivalOrAdventure()
    082    {
    083        return this == SURVIVAL || this == ADVENTURE;
    084    }
    085
    086    /**
    087     * Returns the game type with the specified ID, or SURVIVAL if none found. Args: id
    088     */
    089    public static EnumGameType getByID(int par0)
    090    {
    091        EnumGameType[] var1 = values();
    092        int var2 = var1.length;
    093
    094        for (int var3 = 0; var3 < var2; ++var3)
    095        {
    096            EnumGameType var4 = var1[var3];
    097
    098            if (var4.id == par0)
    099            {
    100                return var4;
    101            }
    102        }
    103
    104        return SURVIVAL;
    105    }
    106
    107    @SideOnly(Side.CLIENT)
    108
    109    /**
    110     * Returns the game type with the specified name, or SURVIVAL if none found. This is case sensitive. Args: name
    111     */
    112    public static EnumGameType getByName(String par0Str)
    113    {
    114        EnumGameType[] var1 = values();
    115        int var2 = var1.length;
    116
    117        for (int var3 = 0; var3 < var2; ++var3)
    118        {
    119            EnumGameType var4 = var1[var3];
    120
    121            if (var4.name.equals(par0Str))
    122            {
    123                return var4;
    124            }
    125        }
    126
    127        return SURVIVAL;
    128    }
    129}