001    package net.minecraft.util;
002    
003    import java.util.Random;
004    import net.minecraft.item.Item;
005    import net.minecraft.item.ItemStack;
006    import net.minecraft.tileentity.TileEntityChest;
007    import net.minecraft.tileentity.TileEntityDispenser;
008    import net.minecraftforge.common.ChestGenHooks;
009    
010    public class WeightedRandomChestContent extends WeightedRandomItem
011    {
012        /** The Item/Block ID to generate in the Chest. */
013        private int theItemId;
014    
015        /** The Item damage/metadata. */
016        private int theItemDamage;
017    
018        /** The minimum chance of item generating. */
019        private int theMinimumChanceToGenerateItem;
020    
021        /** The maximum chance of item generating. */
022        private int theMaximumChanceToGenerateItem;
023        
024        public final ItemStack itemStack;
025    
026        public WeightedRandomChestContent(int par1, int par2, int par3, int par4, int par5)
027        {
028            super(par5);
029            this.theItemId = par1;
030            this.theItemDamage = par2;
031            this.theMinimumChanceToGenerateItem = par3;
032            this.theMaximumChanceToGenerateItem = par4;
033            itemStack = new ItemStack(par1, 1, par2);
034        }
035        
036        public WeightedRandomChestContent(ItemStack stack, int min, int max, int weight)
037        {
038            super(weight);
039            itemStack = stack;
040            theMinimumChanceToGenerateItem = min;
041            theMaximumChanceToGenerateItem = max;
042        }
043        /**
044         * Generates the Chest contents.
045         */
046        public static void generateChestContents(Random par0Random, WeightedRandomChestContent[] par1ArrayOfWeightedRandomChestContent, TileEntityChest par2TileEntityChest, int par3)
047        {
048            for (int var4 = 0; var4 < par3; ++var4)
049            {
050                WeightedRandomChestContent var5 = (WeightedRandomChestContent)WeightedRandom.getRandomItem(par0Random, par1ArrayOfWeightedRandomChestContent);
051                ItemStack[] stacks = ChestGenHooks.generateStacks(par0Random, var5.itemStack, var5.theMinimumChanceToGenerateItem, var5.theMaximumChanceToGenerateItem);
052    
053                for (ItemStack item : stacks)
054                {
055                    par2TileEntityChest.setInventorySlotContents(par0Random.nextInt(par2TileEntityChest.getSizeInventory()), item);
056                }
057            }
058        }
059    
060        /**
061         * Generates the Dispenser contents.
062         */
063        public static void generateDispenserContents(Random par0Random, WeightedRandomChestContent[] par1ArrayOfWeightedRandomChestContent, TileEntityDispenser par2TileEntityDispenser, int par3)
064        {
065            for (int var4 = 0; var4 < par3; ++var4)
066            {
067                WeightedRandomChestContent var5 = (WeightedRandomChestContent)WeightedRandom.getRandomItem(par0Random, par1ArrayOfWeightedRandomChestContent);
068                ItemStack[] stacks = ChestGenHooks.generateStacks(par0Random, var5.itemStack, var5.theMinimumChanceToGenerateItem, var5.theMaximumChanceToGenerateItem);
069    
070                for (ItemStack item : stacks)
071                {
072                    par2TileEntityDispenser.setInventorySlotContents(par0Random.nextInt(par2TileEntityDispenser.getSizeInventory()), item);
073                }
074            }
075        }
076    }