    001package net.minecraft.block;
    002
    003import java.util.Iterator;
    004import java.util.List;
    005import net.minecraft.block.material.Material;
    006import net.minecraft.entity.Entity;
    007import net.minecraft.entity.EntityLiving;
    008import net.minecraft.entity.player.EntityPlayer;
    009import net.minecraft.world.World;
    010
    011public class BlockPressurePlate extends BlockBasePressurePlate
    012{
    013    /** The mob type that can trigger this pressure plate. */
    014    private EnumMobType triggerMobType;
    015
    016    protected BlockPressurePlate(int par1, String par2Str, Material par3Material, EnumMobType par4EnumMobType)
    017    {
    018        super(par1, par2Str, par3Material);
    019        this.triggerMobType = par4EnumMobType;
    020    }
    021
    022    /**
    023     * Argument is weight (0-15). Return the metadata to be set because of it.
    024     */
    025    protected int getMetaFromWeight(int par1)
    026    {
    027        return par1 > 0 ? 1 : 0;
    028    }
    029
    030    /**
    031     * Argument is metadata. Returns power level (0-15)
    032     */
    033    protected int getPowerSupply(int par1)
    034    {
    035        return par1 == 1 ? 15 : 0;
    036    }
    037
    038    /**
    039     * Returns the current state of the pressure plate. Returns a value between 0 and 15 based on the number of items on
    040     * it.
    041     */
    042    protected int getPlateState(World par1World, int par2, int par3, int par4)
    043    {
    044        List list = null;
    045
    046        if (this.triggerMobType == EnumMobType.everything)
    047        {
    048            list = par1World.getEntitiesWithinAABBExcludingEntity((Entity)null, this.getSensitiveAABB(par2, par3, par4));
    049        }
    050
    051        if (this.triggerMobType == EnumMobType.mobs)
    052        {
    053            list = par1World.getEntitiesWithinAABB(EntityLiving.class, this.getSensitiveAABB(par2, par3, par4));
    054        }
    055
    056        if (this.triggerMobType == EnumMobType.players)
    057        {
    058            list = par1World.getEntitiesWithinAABB(EntityPlayer.class, this.getSensitiveAABB(par2, par3, par4));
    059        }
    060
    061        if (!list.isEmpty())
    062        {
    063            Iterator iterator = list.iterator();
    064
    065            while (iterator.hasNext())
    066            {
    067                Entity entity = (Entity)iterator.next();
    068
    069                if (!entity.doesEntityNotTriggerPressurePlate())
    070                {
    071                    return 15;
    072                }
    073            }
    074        }
    075
    076        return 0;
    077    }
    078}