BiomesOPlenty/common/biomesoplenty/worldgen/structure/BOPStructureVillageStart.java

83 lines
2.8 KiB
Java
Raw Normal View History

2013-05-03 13:00:44 +00:00
package biomesoplenty.worldgen.structure;
import java.util.Iterator;
import java.util.List;
2013-05-03 13:00:44 +00:00
import java.util.Random;
import net.minecraft.nbt.NBTTagCompound;
2013-05-03 13:00:44 +00:00
import net.minecraft.world.World;
import net.minecraft.world.gen.structure.ComponentVillageRoadPiece;
import net.minecraft.world.gen.structure.ComponentVillageStartPiece;
import net.minecraft.world.gen.structure.StructureComponent;
import net.minecraft.world.gen.structure.StructureStart;
import net.minecraft.world.gen.structure.StructureVillagePieces;
public class BOPStructureVillageStart extends StructureStart
2013-05-03 13:00:44 +00:00
{
2013-05-31 10:34:02 +00:00
/** well ... thats what it does */
private boolean hasMoreThanTwoComponents = false;
2013-05-03 13:00:44 +00:00
2013-05-31 10:34:02 +00:00
public BOPStructureVillageStart(World par1World, Random par2Random, int par3, int par4, int par5)
{
List list = StructureVillagePieces.getStructureVillageWeightedPieceList(par2Random, par5);
ComponentVillageStartPiece componentvillagestartpiece = new ComponentVillageStartPiece(par1World.getWorldChunkManager(), 0, par2Random, (par3 << 4) + 2, (par4 << 4) + 2, list, par5);
2013-05-31 10:34:02 +00:00
components.add(componentvillagestartpiece);
componentvillagestartpiece.buildComponent(componentvillagestartpiece, components, par2Random);
List list1 = componentvillagestartpiece.field_74930_j;
List list2 = componentvillagestartpiece.field_74932_i;
2013-05-31 10:34:02 +00:00
int l;
2013-05-03 13:00:44 +00:00
while (!list1.isEmpty() || !list2.isEmpty())
{
StructureComponent structurecomponent;
2013-05-03 13:00:44 +00:00
if (list1.isEmpty())
{
l = par2Random.nextInt(list2.size());
structurecomponent = (StructureComponent)list2.remove(l);
structurecomponent.buildComponent(componentvillagestartpiece, this.components, par2Random);
}
else
{
l = par2Random.nextInt(list1.size());
structurecomponent = (StructureComponent)list1.remove(l);
structurecomponent.buildComponent(componentvillagestartpiece, this.components, par2Random);
}
}
2013-05-03 13:00:44 +00:00
2013-05-31 10:34:02 +00:00
this.updateBoundingBox();
l = 0;
Iterator iterator = components.iterator();
2013-05-03 13:00:44 +00:00
2013-05-31 10:34:02 +00:00
while (iterator.hasNext())
{
StructureComponent structurecomponent1 = (StructureComponent)iterator.next();
2013-05-03 13:00:44 +00:00
2013-05-31 10:34:02 +00:00
if (!(structurecomponent1 instanceof ComponentVillageRoadPiece))
{
++l;
}
}
2013-05-03 13:00:44 +00:00
2013-05-31 10:34:02 +00:00
hasMoreThanTwoComponents = l > 2;
}
2013-05-03 13:00:44 +00:00
@Override
public boolean isSizeableStructure()
2013-05-31 10:34:02 +00:00
{
return hasMoreThanTwoComponents;
}
public void func_143022_a(NBTTagCompound par1NBTTagCompound)
{
super.func_143022_a(par1NBTTagCompound);
par1NBTTagCompound.setBoolean("Valid", this.hasMoreThanTwoComponents);
}
public void func_143017_b(NBTTagCompound nbttagcompound)
{
super.func_143017_b(nbttagcompound);
this.hasMoreThanTwoComponents = nbttagcompound.getBoolean("Valid");
2013-05-31 10:34:02 +00:00
}
2013-05-03 13:00:44 +00:00
}