@Override public Village buildComponent(PieceWeight villagePiece, Start startPiece, List<StructureComponent> pieces, Random random, int p1, int p2, int p3, EnumFacing facing, int p5) { StructureBoundingBox structureboundingbox = StructureBoundingBox.getComponentToAddBoundingBox(p1, p2, p3, 0, 0, 0, 14, 16, 11, facing); return canVillageGoDeeper(structureboundingbox) && StructureComponent.findIntersecting(pieces, structureboundingbox) == null ? new MannCoBuilding(startPiece, p5, random, structureboundingbox, facing) : null; }
@Override public Village buildComponent(final PieceWeight villagePiece, final Start startPiece, final List<StructureComponent> pieces, final Random random, final int x, final int y, final int z, final EnumFacing facing, final int type) { // This shouldn't happen, but just in case... if (!(villagePiece instanceof SchematicPieceWeight)) return null; // Get our next structure final SchematicPieceWeight pw = (SchematicPieceWeight) villagePiece; final SchematicProperties props = pw.getNextStructure(); // If we don't get properties we may have exceeded // the spawn limit. if (props == null) return null; // Bound it out final Dimensions size = props.schematic.getDimensions(); final StructureBoundingBox _boundingBox = StructureBoundingBox.getComponentToAddBoundingBox(x, y, z, 0, 0, 0, size.width, size.height, size.length, facing); // Check to see if the region is OK, and if so return back // a SchematicStructure surrogate for the schematic. if (canVillageGoDeeper(_boundingBox)) { if (StructureComponent.findIntersecting(pieces, _boundingBox) == null) { ModLog.debug("Village structure [%s] @(%s); mode %d", props.name, _boundingBox, facing); final SchematicStructure struct = new SchematicStructure(startPiece, type, random, _boundingBox, facing); struct.setProperties(props); return struct; } } return null; }
@SuppressWarnings("rawtypes") @Override public Object buildComponent(PieceWeight villagePiece, Start startPiece, List pieces, Random random, int x, int y, int z, int coordBaseMode, int p5) { int totalWeight = getTotalWieght(pieceWeights); if(totalWeight <= 0) { return null; } for (int i = 0; i < 5; ++i) { int randomWeight = random.nextInt(totalWeight); Iterator<WeightedCreationHandler> iterator = pieceWeights.iterator(); while (iterator.hasNext()) { WeightedCreationHandler el = iterator.next(); PieceWeight pieceweight = el.weight; randomWeight -= pieceweight.villagePieceWeight; if(randomWeight < 0) { int notUsed = 0; if(!pieceweight.canSpawnMoreVillagePiecesOfType(notUsed) || pieceweight == startPiece.structVillagePieceWeight && pieceWeights.size() > 1) { break; } StructureVillagePieces.Village village = (Village) el.handler.buildComponent(pieceweight, startPiece, pieces, random, x, y, z, coordBaseMode, p5); if(village != null) { ++pieceweight.villagePiecesSpawned; startPiece.structVillagePieceWeight = pieceweight; if(!pieceweight.canSpawnMoreVillagePieces()) { pieceWeights.remove(el); } return village; } } } } return null; }
public static Village getVillageComponent(StructureVillagePieces.PieceWeight villagePiece, StructureVillagePieces.Start startPiece, List<StructureComponent> pieces, Random random, int p1, int p2, int p3, EnumFacing facing, int p5) { return instance().villageCreationHandlers.get(villagePiece.villagePieceClass).buildComponent(villagePiece, startPiece, pieces, random, p1, p2, p3, facing, p5); }
@Override public Village buildComponent(PieceWeight villagePiece, Start startPiece, List<StructureComponent> pieces, Random random, int p1, int p2, int p3, EnumFacing facing, int p5) { return BaileysShopVillagePiece.createPiece(startPiece, pieces, random, p1, p2, p3, facing, p5); }
@Override public Village buildComponent(PieceWeight villagePiece, Start startPiece, List<StructureComponent> pieces, Random random, int p1, int p2, int p3, EnumFacing facing, int p5) { return VillagePieceGuardTower2.createPiece(startPiece, pieces, random, p1, p2, p3, facing, p5); }
@Override public Village buildComponent(PieceWeight villagePiece, Start startPiece, List<StructureComponent> pieces, Random random, int p1, int p2, int p3, EnumFacing facing, int p5) { return VillagePieceBarracks.createPiece(startPiece, pieces, random, p1, p2, p3, facing, p5); }
@Override public Village buildComponent(PieceWeight villagePiece, Start startPiece, List<StructureComponent> pieces, Random random, int p1, int p2, int p3, EnumFacing facing, int p5) { return VillagePieceCabin.createPiece(startPiece, pieces, random, p1, p2, p3, facing, p5); }
@Override public Village buildComponent(PieceWeight villagePiece, Start startPiece, List<StructureComponent> pieces, Random random, int p1, int p2, int p3, EnumFacing facing, int p5) { return VillagePieceGuardTower.createPiece(startPiece, pieces, random, p1, p2, p3, facing, p5); }
@Override public Village buildComponent(PieceWeight villagePiece, Start startPiece, List<StructureComponent> pieces, Random random, int p1, int p2, int p3, EnumFacing facing, int p5) { return VillagePieceShop.createPiece(startPiece, pieces, random, p1, p2, p3, facing, p5); }
@Override public Village buildComponent(PieceWeight villagePiece, Start startPiece, List<StructureComponent> pieces, Random random, int p1, int p2, int p3, EnumFacing facing, int p5) { return VillagePieceTrophy.createPiece(startPiece, pieces, random, p1, p2, p3, facing, p5); }
@Override public Village buildComponent(PieceWeight villagePiece, Start startPiece, List<StructureComponent> pieces, Random random, int p1, int p2, int p3, EnumFacing facing, int p5) { return VillagePieceKeep.createPiece(startPiece, pieces, random, p1, p2, p3, facing, p5); }
@Override public Village buildComponent(PieceWeight villagePiece, Start startPiece, List<StructureComponent> pieces, Random random, int p1, int p2, int p3, EnumFacing facing, int p5) { StructureBoundingBox box = StructureBoundingBox.getComponentToAddBoundingBox(p1, p2, p3, 0, -32 + 9, 0, 13, 11, 13, facing); return !Config.genScientistHouse || !(box != null && box.minY > 16) || (StructureComponent.findIntersecting(pieces, box) != null) ? null : new VillageHouseScientist(startPiece, p5, random, box, facing); }
@Override public Village buildComponent(PieceWeight villagePiece, Start startPiece,List pieces, Random random, int x, int y, int z,EnumFacing facing, int p5) { return ComponentCornField.createPiece(startPiece, pieces, random, x, y, z, facing, p5); }
@Override public Village buildComponent(StructureVillagePieces.PieceWeight villagePiece, StructureVillagePieces.Start startPiece, List<StructureComponent> pieces, Random random, int p1, int p2, int p3, EnumFacing facing, int p5) { return ComponentVillageTrade.buildComponent(startPiece, pieces, random, p1, p2, p3, facing, p5); }
@Override public Village buildComponent(StructureVillagePieces.PieceWeight villagePiece, StructureVillagePieces.Start startPiece, List<StructureComponent> pieces, Random random, int p1, int p2, int p3, EnumFacing facing, int p5) { return ComponentVillageBank.buildComponent(startPiece, pieces, random, p1, p2, p3, facing, p5); }
@Override public Village buildComponent(StructureVillagePieces.PieceWeight villagePiece, StructureVillagePieces.Start startPiece, List<StructureComponent> pieces, Random random, int p1, int p2, int p3, EnumFacing facing, int p5) { return ComponentVillageShop.buildComponent(startPiece, pieces, random, p1, p2, p3, facing, p5); }
/** * Build an instance of the village component {@link net.minecraft.world.gen.structure.StructureVillagePieces} * * @param villagePiece * @param startPiece * @param pieces * @param random * @param p1 * @param p2 * @param p3 * @param facing * @param p5 */ Village buildComponent(StructureVillagePieces.PieceWeight villagePiece, StructureVillagePieces.Start startPiece, List<StructureComponent> pieces, Random random, int p1, int p2, int p3, EnumFacing facing, int p5);