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 }