类net.minecraft.util.WeightedRandom源码实例Demo

下面列出了怎么用net.minecraft.util.WeightedRandom的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: Gadomancy   文件: NodeManipulatorResultHandler.java
public static NodeManipulatorResult getRandomResult(World world, Random random, INode affectedNode, int percChance) {
    int resultPositiveChance = Math.round(((float) percChance) / 5F);
    List<NodeManipulatorResult> localResults = new ArrayList<NodeManipulatorResult>();
    for(NodeManipulatorResult result : possibleResults) {
        if(result.canAffect(world, affectedNode)) {
            ResultType type = result.getResultType();
            if(type == ResultType.NEGATIVE) {
                if(random.nextInt(100) < resultPositiveChance) continue;
            }

            localResults.add(result);
        }
    }
    if(localResults.isEmpty()) return null;
    return (NodeManipulatorResult) WeightedRandom.getRandomItem(random, localResults);
}
 
源代码2 项目: NEI-Integration   文件: RecipeHandlerLaserDrill.java
@Override
public void prepare() {
    laserOres = MFRRegistry.getLaserOres();
    for (WeightedRandom.Item ore : laserOres) {
        totalWeight += ore.itemWeight;
    }
    
    laserPreferredOres = new HashMap<Integer, List<ItemStack>>();
    for (int i = 0; i <= 15; i++) {
        List<ItemStack> preferredOres = MFRRegistry.getLaserPreferredOres(i);
        laserPreferredOres.put(i, preferredOres);
    }
    
    TileEntityLaserDrillPrecharger dummyPrecharger = new TileEntityLaserDrillPrecharger();
    TileEntityLaserDrill dummyDrill = new TileEntityLaserDrill();
    energyPerOperation = dummyPrecharger.getActivationEnergy() * dummyDrill.getWorkMax();
    dummyPrecharger = null;
    dummyDrill = null;
    
    laserFocus = GameRegistry.findItem("MineFactoryReloaded", "laserfocus");
    if (laserFocus == null) {
        laserFocus = GameRegistry.findItem("MineFactoryReloaded", "item.mfr.laserfocus");
    }
}
 
源代码3 项目: NEI-Integration   文件: RecipeHandlerLaserDrill.java
@Override
public void loadAllRecipes() {
    for (WeightedRandom.Item drop : laserOres) {
        if (drop instanceof WeightedRandomItemStack) {
            ItemStack dropStack = ((WeightedRandomItemStack) drop).getStack();
            for (int i : laserPreferredOres.keySet()) {
                List<ItemStack> preferredStacks = laserPreferredOres.get(i);
                if (preferredStacks != null) {
                    for (ItemStack preferredStack : preferredStacks) {
                        if (Utils.areStacksSameTypeCraftingSafe(preferredStack, dropStack)) {
                            this.arecipes.add(new CachedLaserDrillRecipe(dropStack, drop.itemWeight, i));
                        }
                    }
                }
            }
        }
    }
}
 
源代码4 项目: NEI-Integration   文件: RecipeHandlerLaserDrill.java
@Override
public void loadCraftingRecipes(ItemStack result) {
    for (WeightedRandom.Item drop : laserOres) {
        if (drop instanceof WeightedRandomItemStack) {
            if (Utils.areStacksSameTypeCraftingSafe(((WeightedRandomItemStack) drop).getStack(), result)) {
                ItemStack dropStack = ((WeightedRandomItemStack) drop).getStack();
                for (int i : laserPreferredOres.keySet()) {
                    List<ItemStack> preferredStacks = laserPreferredOres.get(i);
                    if (preferredStacks != null) {
                        for (ItemStack preferredStack : preferredStacks) {
                            if (Utils.areStacksSameTypeCraftingSafe(preferredStack, dropStack)) {
                                this.arecipes.add(new CachedLaserDrillRecipe(dropStack, drop.itemWeight, i));
                            }
                        }
                    }
                }
            }
        }
    }
}
 
源代码5 项目: NEI-Integration   文件: RecipeHandlerLaserDrill.java
@Override
public void loadUsageRecipes(ItemStack ingred) {
    int dmg = ingred.getItemDamage();
    if (ingred.getItem() == laserFocus && dmg <= 15) {
        for (WeightedRandom.Item drop : laserOres) {
            if (drop instanceof WeightedRandomItemStack) {
                ItemStack dropStack = ((WeightedRandomItemStack) drop).getStack();
                List<ItemStack> preferredStacks = laserPreferredOres.get(dmg);
                if (preferredStacks != null) {
                    for (ItemStack preferredStack : preferredStacks) {
                        if (Utils.areStacksSameTypeCraftingSafe(preferredStack, dropStack)) {
                            this.arecipes.add(new CachedLaserDrillRecipe(dropStack, drop.itemWeight, dmg));
                        }
                    }
                }
            }
        }
    }
}
 
源代码6 项目: AdvancedRocketry   文件: GenLayerBiomePlanet.java
protected BiomeEntry getWeightedBiomeEntry()
{
	if(biomeEntries == null || biomeEntries.isEmpty())
		return new BiomeEntry(Biomes.OCEAN, 100);

	List<BiomeEntry> biomeList = biomeEntries;
	int totalWeight = WeightedRandom.getTotalWeight(biomeList);
	int weight = nextInt(totalWeight / 10) * 10;
	return (BiomeEntry)WeightedRandom.getRandomItem(biomeList, weight);
}
 
源代码7 项目: mocreaturesdev   文件: CustomSpawner.java
/**
 * Gets a random custom mob for spawning based on XYZ coordinates
 */
public SpawnListEntry getRandomCustomMob(World worldObj, EnumCreatureType enumCreatureType, int pX, int pY, int pZ)
{
    List list = getPossibleCustomCreatures(worldObj, enumCreatureType, pX, pY, pZ);
    if (list == null || list.isEmpty())
    {
        //System.out.println("list = NULL!! for type " + enumCreatureType.name());
        return null;
    }
    else
    {
        return (SpawnListEntry) WeightedRandom.getRandomItem(worldObj.rand, list);
    }
}
 
 类所在包
 类方法
 同包方法