001 package net.minecraft.util; 002 003 import java.util.Collection; 004 import java.util.Iterator; 005 import java.util.Random; 006 007 public class WeightedRandom 008 { 009 /** 010 * Returns the total weight of all items in a collection. 011 */ 012 public static int getTotalWeight(Collection par0Collection) 013 { 014 int var1 = 0; 015 WeightedRandomItem var3; 016 017 for (Iterator var2 = par0Collection.iterator(); var2.hasNext(); var1 += var3.itemWeight) 018 { 019 var3 = (WeightedRandomItem)var2.next(); 020 } 021 022 return var1; 023 } 024 025 /** 026 * Returns a random choice from the input items, with a total weight value. 027 */ 028 public static WeightedRandomItem getRandomItem(Random par0Random, Collection par1Collection, int par2) 029 { 030 if (par2 <= 0) 031 { 032 throw new IllegalArgumentException(); 033 } 034 else 035 { 036 int var3 = par0Random.nextInt(par2); 037 Iterator var4 = par1Collection.iterator(); 038 WeightedRandomItem var5; 039 040 do 041 { 042 if (!var4.hasNext()) 043 { 044 return null; 045 } 046 047 var5 = (WeightedRandomItem)var4.next(); 048 var3 -= var5.itemWeight; 049 } 050 while (var3 >= 0); 051 052 return var5; 053 } 054 } 055 056 /** 057 * Returns a random choice from the input items. 058 */ 059 public static WeightedRandomItem getRandomItem(Random par0Random, Collection par1Collection) 060 { 061 return getRandomItem(par0Random, par1Collection, getTotalWeight(par1Collection)); 062 } 063 064 /** 065 * Returns the total weight of all items in a array. 066 */ 067 public static int getTotalWeight(WeightedRandomItem[] par0ArrayOfWeightedRandomItem) 068 { 069 int var1 = 0; 070 WeightedRandomItem[] var2 = par0ArrayOfWeightedRandomItem; 071 int var3 = par0ArrayOfWeightedRandomItem.length; 072 073 for (int var4 = 0; var4 < var3; ++var4) 074 { 075 WeightedRandomItem var5 = var2[var4]; 076 var1 += var5.itemWeight; 077 } 078 079 return var1; 080 } 081 082 /** 083 * Returns a random choice from the input array of items, with a total weight value. 084 */ 085 public static WeightedRandomItem getRandomItem(Random par0Random, WeightedRandomItem[] par1ArrayOfWeightedRandomItem, int par2) 086 { 087 if (par2 <= 0) 088 { 089 throw new IllegalArgumentException(); 090 } 091 else 092 { 093 int var3 = par0Random.nextInt(par2); 094 WeightedRandomItem[] var4 = par1ArrayOfWeightedRandomItem; 095 int var5 = par1ArrayOfWeightedRandomItem.length; 096 097 for (int var6 = 0; var6 < var5; ++var6) 098 { 099 WeightedRandomItem var7 = var4[var6]; 100 var3 -= var7.itemWeight; 101 102 if (var3 < 0) 103 { 104 return var7; 105 } 106 } 107 108 return null; 109 } 110 } 111 112 /** 113 * Returns a random choice from the input items. 114 */ 115 public static WeightedRandomItem getRandomItem(Random par0Random, WeightedRandomItem[] par1ArrayOfWeightedRandomItem) 116 { 117 return getRandomItem(par0Random, par1ArrayOfWeightedRandomItem, getTotalWeight(par1ArrayOfWeightedRandomItem)); 118 } 119 }