001package net.minecraft.world.gen.structure;
002
003import java.util.List;
004import java.util.Random;
005import net.minecraft.block.Block;
006import net.minecraft.item.Item;
007import net.minecraft.util.WeightedRandomChestContent;
008
009public class StructureMineshaftPieces
010{
011    /** List of contents that can generate in Mineshafts. */
012    public static final WeightedRandomChestContent[] mineshaftChestContents = new WeightedRandomChestContent[] {new WeightedRandomChestContent(Item.ingotIron.itemID, 0, 1, 5, 10), new WeightedRandomChestContent(Item.ingotGold.itemID, 0, 1, 3, 5), new WeightedRandomChestContent(Item.redstone.itemID, 0, 4, 9, 5), new WeightedRandomChestContent(Item.dyePowder.itemID, 4, 4, 9, 5), new WeightedRandomChestContent(Item.diamond.itemID, 0, 1, 2, 3), new WeightedRandomChestContent(Item.coal.itemID, 0, 3, 8, 10), new WeightedRandomChestContent(Item.bread.itemID, 0, 1, 3, 15), new WeightedRandomChestContent(Item.pickaxeIron.itemID, 0, 1, 1, 1), new WeightedRandomChestContent(Block.rail.blockID, 0, 4, 8, 1), new WeightedRandomChestContent(Item.melonSeeds.itemID, 0, 2, 4, 10), new WeightedRandomChestContent(Item.pumpkinSeeds.itemID, 0, 2, 4, 10)};
013
014    private static StructureComponent getRandomComponent(List par0List, Random par1Random, int par2, int par3, int par4, int par5, int par6)
015    {
016        int j1 = par1Random.nextInt(100);
017        StructureBoundingBox structureboundingbox;
018
019        if (j1 >= 80)
020        {
021            structureboundingbox = ComponentMineshaftCross.findValidPlacement(par0List, par1Random, par2, par3, par4, par5);
022
023            if (structureboundingbox != null)
024            {
025                return new ComponentMineshaftCross(par6, par1Random, structureboundingbox, par5);
026            }
027        }
028        else if (j1 >= 70)
029        {
030            structureboundingbox = ComponentMineshaftStairs.findValidPlacement(par0List, par1Random, par2, par3, par4, par5);
031
032            if (structureboundingbox != null)
033            {
034                return new ComponentMineshaftStairs(par6, par1Random, structureboundingbox, par5);
035            }
036        }
037        else
038        {
039            structureboundingbox = ComponentMineshaftCorridor.findValidPlacement(par0List, par1Random, par2, par3, par4, par5);
040
041            if (structureboundingbox != null)
042            {
043                return new ComponentMineshaftCorridor(par6, par1Random, structureboundingbox, par5);
044            }
045        }
046
047        return null;
048    }
049
050    private static StructureComponent getNextMineShaftComponent(StructureComponent par0StructureComponent, List par1List, Random par2Random, int par3, int par4, int par5, int par6, int par7)
051    {
052        if (par7 > 8)
053        {
054            return null;
055        }
056        else if (Math.abs(par3 - par0StructureComponent.getBoundingBox().minX) <= 80 && Math.abs(par5 - par0StructureComponent.getBoundingBox().minZ) <= 80)
057        {
058            StructureComponent structurecomponent1 = getRandomComponent(par1List, par2Random, par3, par4, par5, par6, par7 + 1);
059
060            if (structurecomponent1 != null)
061            {
062                par1List.add(structurecomponent1);
063                structurecomponent1.buildComponent(par0StructureComponent, par1List, par2Random);
064            }
065
066            return structurecomponent1;
067        }
068        else
069        {
070            return null;
071        }
072    }
073
074    static StructureComponent getNextComponent(StructureComponent par0StructureComponent, List par1List, Random par2Random, int par3, int par4, int par5, int par6, int par7)
075    {
076        return getNextMineShaftComponent(par0StructureComponent, par1List, par2Random, par3, par4, par5, par6, par7);
077    }
078
079    static WeightedRandomChestContent[] func_78816_a()
080    {
081        return mineshaftChestContents;
082    }
083}