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