package ttftcuts.physis.common.worldgen.structure.prop;
import java.util.Random;
import net.minecraft.init.Blocks;
import net.minecraft.world.World;
import net.minecraft.world.gen.structure.StructureBoundingBox;
import ttftcuts.physis.common.worldgen.structure.BlockPalette;
import ttftcuts.physis.common.worldgen.structure.StructureGenerator.StructurePiece;
public class PropTestHouse extends PropType {
public PropTestHouse() {
super("testhouse");
}
@Override
public StructureBoundingBox getBoundingBoxForProp(Prop prop) {
return new StructureBoundingBox(-10, 0, -10, 10, 20, 10);
}
@Override
public void buildProp(StructurePiece component, Prop prop, World world, StructureBoundingBox limit, Random rand) {
BlockPalette p = component.blueprintNode.palette;
// initial clear
prop.clearFill(world, limit, component, -3, 1,-4, 3, 11, 3, false);
prop.clearFill(world, limit, component, -3, 1, 4, 3, 6, 7, false);
prop.clearFill(world, limit, component, 4, 1,-4, 8, 5, 3, false);
prop.clearFill(world, limit, component,-10, 1,-2,-4, 4, 2, false);
prop.clearFill(world, limit, component,-10, 5,-2,-6, 17, 2, false);
// base floor
prop.fillBlocks(world, limit, component,-10, 0,-10, 10, 0, 10, Blocks.grass, 0);
prop.fillBlocks(world, limit, component, -3, 1,-4, 3, 1, 6, p.foundation, 0);
prop.fillBlocks(world, limit, component, 4, 1,-4, 8, 1, 3, p.foundation, 0);
prop.fillBlocks(world, limit, component,-10, 1,-2,-4, 1, 2, p.foundation, 0);
// indoor floors
prop.fillBlocks(world, limit, component,-2, 1,-3, 2, 1, 2, p.floor1, 0);
prop.fillBlocks(world, limit, component, 4, 1,-3, 7, 1, 2, p.floor1, 0);
prop.fillBlocks(world, limit, component,-1, 1,-1, 1, 1, 1, p.floor_coloured1, 0, 14);
// outside wood floors
prop.fillBlocks(world, limit, component,-2, 1, 4, 2, 1, 5, p.floor2, 0);
prop.fillBlocks(world, limit, component,-5, 1,-1,-4, 1, 1, p.floor2, 0);
prop.fillBlocks(world, limit, component,-1, 1, 6, 1, 1, 6, p.stairs2, 2);
// wall edges
prop.fillBlocks(world, limit, component,-3, 2, 3, 8, 2, 3, p.wall_trim1, 0);
prop.fillBlocks(world, limit, component,-3, 2,-4, 8, 2,-4, p.wall_trim1, 0);
prop.fillBlocks(world, limit, component,-3, 2,-3,-3, 2, 2, p.wall_trim1, 0);
prop.fillBlocks(world, limit, component, 3, 2,-3, 3, 2, 2, p.wall_trim1, 0);
prop.fillBlocks(world, limit, component, 8, 2,-3, 8, 2, 2, p.wall_trim1, 0);
// ground floor dark trim
prop.fillBlocks(world, limit, component,-2, 3, 3, 7, 3, 3, p.wall_trim2, 0);
prop.fillBlocks(world, limit, component,-2, 3,-4, 7, 3,-4, p.wall_trim2, 0);
prop.fillBlocks(world, limit, component,-3, 3,-3,-3, 3, 2, p.wall_trim2, 0);
prop.fillBlocks(world, limit, component, 8, 3,-3, 8, 3, 2, p.wall_trim2, 0);
// ground floor wood
prop.fillBlocks(world, limit, component,-2, 4, 3, 7, 5, 3, p.wall1, 0);
prop.fillBlocks(world, limit, component,-2, 4,-4, 7, 5,-4, p.wall1, 0);
prop.fillBlocks(world, limit, component,-3, 4,-3,-3, 5, 2, p.wall1, 0);
prop.fillBlocks(world, limit, component, 3, 3,-3, 3, 5, 3, p.wall1, 0);
// first floor... floor
prop.fillBlocks(world, limit, component,-2, 6, 3, 2, 6, 3, p.wall_trim1, 0);
prop.fillBlocks(world, limit, component,-2, 6,-4, 2, 6,-4, p.wall_trim1, 0);
prop.fillBlocks(world, limit, component,-3, 6,-3,-3, 6, 2, p.wall_trim1, 0);
prop.fillBlocks(world, limit, component, 3, 6,-3, 3, 6, 2, p.wall_trim1, 0);
prop.fillBlocks(world, limit, component,-2, 6,-3, 2, 6, 2, p.floor1, 0);
prop.fillBlocks(world, limit, component, 1, 6,-3, 2, 6,-1, p.wall_trim1, 0);
// first floor walls
prop.fillBlocks(world, limit, component,-2, 7, 3, 2, 10, 3, p.wall1, 0);
prop.fillBlocks(world, limit, component,-2, 7,-4, 2, 10,-4, p.wall1, 0);
prop.fillBlocks(world, limit, component,-3, 7,-3,-3, 9, 2, p.wall1, 0);
prop.fillBlocks(world, limit, component, 3, 7,-3, 3, 9, 2, p.wall1, 0);
prop.fillBlocks(world, limit, component,-1, 8, 3, 1, 11, 3, p.wall1, 0);
prop.fillBlocks(world, limit, component,-1, 8,-4, 1, 11,-4, p.wall1, 0);
prop.placeBlock(world, limit, component, 0, 12, 3, p.wall1, 0);
prop.placeBlock(world, limit, component, 0, 12,-4, p.wall1, 0);
prop.fillBlocks(world, limit, component,-2, 8, 3, 2, 8, 3, p.wall_trim2, 0);
prop.fillBlocks(world, limit, component,-2, 8,-4, 2, 8,-4, p.wall_trim2, 0);
prop.fillBlocks(world, limit, component,-3, 8,-3,-3, 8, 2, p.wall_trim2, 0);
prop.fillBlocks(world, limit, component, 3, 8,-3, 3, 8, 2, p.wall_trim2, 0);
//corner verticals
prop.fillBlocks(world, limit, component,-3, 3, 3,-3, 9, 3, p.wall_trim1, 0);
prop.fillBlocks(world, limit, component,-3, 3,-4,-3, 9,-4, p.wall_trim1, 0);
prop.fillBlocks(world, limit, component, 3, 3, 3, 3, 9, 3, p.wall_trim1, 0);
prop.fillBlocks(world, limit, component, 3, 3,-4, 3, 9,-4, p.wall_trim1, 0);
prop.placeBlock(world, limit, component, 8, 3, 3, p.wall_trim1, 0);
prop.placeBlock(world, limit, component, 8, 3,-4, p.wall_trim1, 0);
// door frames
prop.fillBlocks(world, limit, component,-1, 3, 3, 1, 4, 3, p.wall_trim1, 0);
prop.fillBlocks(world, limit, component,-3, 3,-1,-3, 4, 1, p.wall_trim1, 0);
prop.fillBlocks(world, limit, component, 3, 3,-1, 3, 4, 1, p.wall_trim1, 0);
// doors and ladder
prop.fillBlocks(world, limit, component, 2, 2,-2, 2, 8,-2, p.ladder, 1);
prop.clearFill(world, limit, component, 3, 2, 0, 3, 3, 0, false);
prop.placeBlock(world, limit, component, 0, 2, 3, p.door, 2);
prop.placeBlock(world, limit, component,-3, 2, 0, p.door, 3);
// windows
prop.placeBlock(world, limit, component,-2, 3, 3, p.window_pane, 0);
prop.placeBlock(world, limit, component, 2, 3, 3, p.window_pane, 0);
prop.fillBlocks(world, limit, component,-1, 3,-4, 1, 4,-4, p.window_pane, 0);
prop.fillBlocks(world, limit, component, 5, 3, 3, 6, 4, 3, p.window_pane, 0);
prop.fillBlocks(world, limit, component,-1, 8,-4, 1, 9,-4, p.window_pane, 0);
prop.fillBlocks(world, limit, component,-1, 8, 3, 1, 9, 3, p.window_pane, 0);
// fence
prop.fillBlocks(world, limit, component, -9, 2,-2, -4, 2,-2, p.fence, 0);
prop.fillBlocks(world, limit, component, -9, 2, 2, -4, 2, 2, p.fence, 0);
prop.fillBlocks(world, limit, component,-10, 2,-1,-10, 2, 1, p.fence, 0);
prop.fillBlocks(world, limit, component,-3, 2, 4,-3, 2, 5, p.fence, 0);
prop.fillBlocks(world, limit, component, 3, 2, 4, 3, 2, 5, p.fence, 0);
prop.placeBlock(world, limit, component,-2, 2, 6, p.fence, 0);
prop.placeBlock(world, limit, component, 2, 2, 6, p.fence, 0);
// pillars
prop.fillBlocks(world, limit, component,-3, 2, 6,-3, 4, 6, p.pillar1, 0);
prop.fillBlocks(world, limit, component, 3, 2, 6, 3, 4, 6, p.pillar1, 0);
prop.fillBlocks(world, limit, component,-10, 2, 2,-10, 4, 2, p.pillar1, 0);
prop.fillBlocks(world, limit, component,-10, 2,-2,-10, 4,-2, p.pillar1, 0);
prop.fillBlocks(world, limit, component, -6, 2, 2, -6, 4, 2, p.pillar1, 0);
prop.fillBlocks(world, limit, component, -6, 2,-2, -6, 4,-2, p.pillar1, 0);
// main roof
prop.fillBlocks(world, limit, component,-4, 9,-5,-4, 9, 4, p.roof_stair1, 3);
prop.fillBlocks(world, limit, component,-3, 10,-5,-3, 10, 4, p.roof_stair1, 3);
prop.fillBlocks(world, limit, component,-2, 11,-5,-2, 11, 4, p.roof_stair1, 3);
prop.fillBlocks(world, limit, component,-1, 12,-5,-1, 12, 4, p.roof_stair1, 3);
prop.fillBlocks(world, limit, component, 4, 9,-5, 4, 9, 4, p.roof_stair1, 1);
prop.fillBlocks(world, limit, component, 3, 10,-5, 3, 10, 4, p.roof_stair1, 1);
prop.fillBlocks(world, limit, component, 2, 11,-5, 2, 11, 4, p.roof_stair1, 1);
prop.fillBlocks(world, limit, component, 1, 12,-5, 1, 12, 4, p.roof_stair1, 1);
prop.fillBlocks(world, limit, component, 0, 13,-5, 0, 13, 4, p.roof_slab1, 0);
// main roof edging
prop.placeBlock(world, limit, component,-3, 9,-5, p.roof_stair1, 5);
prop.placeBlock(world, limit, component,-2, 10,-5, p.roof_stair1, 5);
prop.placeBlock(world, limit, component,-1, 11,-5, p.roof_stair1, 5);
prop.placeBlock(world, limit, component,-3, 9, 4, p.roof_stair1, 5);
prop.placeBlock(world, limit, component,-2, 10, 4, p.roof_stair1, 5);
prop.placeBlock(world, limit, component,-1, 11, 4, p.roof_stair1, 5);
prop.placeBlock(world, limit, component, 3, 9,-5, p.roof_stair1, 7);
prop.placeBlock(world, limit, component, 2, 10,-5, p.roof_stair1, 7);
prop.placeBlock(world, limit, component, 1, 11,-5, p.roof_stair1, 7);
prop.placeBlock(world, limit, component, 3, 9, 4, p.roof_stair1, 7);
prop.placeBlock(world, limit, component, 2, 10, 4, p.roof_stair1, 7);
prop.placeBlock(world, limit, component, 1, 11, 4, p.roof_stair1, 7);
prop.placeBlock(world, limit, component, 0, 12,-5, p.roof_block1, 0);
prop.placeBlock(world, limit, component, 0, 12, 4, p.roof_block1, 0);
// main roof interior
prop.fillBlocks(world, limit, component, 0, 12,-3, 0, 12, 2, p.roof_block2, 0);
prop.fillBlocks(world, limit, component,-1, 11,-3,-1, 11, 2, p.roof_stair2, 5);
prop.fillBlocks(world, limit, component,-2, 10,-3,-2, 10, 2, p.roof_stair2, 5);
prop.fillBlocks(world, limit, component, 1, 11,-3, 1, 11, 2, p.roof_stair2, 7);
prop.fillBlocks(world, limit, component, 2, 10,-3, 2, 10, 2, p.roof_stair2, 7);
// side roof
prop.fillBlocks(world, limit, component, 4, 6,-5, 5, 6, 4, p.roof_block2, 0);
prop.fillBlocks(world, limit, component, 6, 6,-5, 6, 6, 4, p.roof_slab2, 0);
prop.fillBlocks(world, limit, component, 7, 5,-5, 7, 5, 4, p.roof_stair2, 1);
prop.fillBlocks(world, limit, component, 8, 4,-5, 8, 4, 4, p.roof_stair2, 1);
prop.fillBlocks(world, limit, component, 9, 3,-5, 9, 3, 4, p.roof_slab2, 1);
prop.fillBlocks(world, limit, component, 6, 5,-3, 6, 5, 2, p.roof_stair2, 7);
prop.fillBlocks(world, limit, component, 7, 4,-3, 7, 4, 2, p.roof_stair2, 7);
prop.placeBlock(world, limit, component, 6, 5, 4, p.roof_stair2, 7);
prop.placeBlock(world, limit, component, 6, 5,-5, p.roof_stair2, 7);
prop.placeBlock(world, limit, component, 7, 4, 4, p.roof_stair2, 7);
prop.placeBlock(world, limit, component, 7, 4,-5, p.roof_stair2, 7);
prop.placeBlock(world, limit, component, 8, 3, 4, p.roof_slab2, 1);
prop.placeBlock(world, limit, component, 8, 3,-5, p.roof_slab2, 1);
prop.placeBlock(world, limit, component, 3, 6,-5, p.roof_slab2, 0);
// porch roof
prop.fillBlocks(world, limit, component,-3, 6, 4, 3, 6, 4, p.roof_block2, 0);
prop.fillBlocks(world, limit, component,-3, 6, 5, 3, 6, 5, p.roof_stair2, 2);
prop.fillBlocks(world, limit, component,-3, 5, 6,-2, 5, 6, p.roof_stair2, 2);
prop.fillBlocks(world, limit, component, 2, 5, 6, 3, 5, 6, p.roof_stair2, 2);
prop.fillBlocks(world, limit, component,-1, 5, 6,-1, 5, 7, p.roof_block2, 0);
prop.fillBlocks(world, limit, component, 1, 5, 6, 1, 5, 7, p.roof_block2, 0);
prop.fillBlocks(world, limit, component, 0, 6, 6, 0, 6, 7, p.roof_slab2, 0);
prop.fillBlocks(world, limit, component, 0, 5, 6, 0, 5, 7, p.roof_slab2, 1);
prop.fillBlocks(world, limit, component,-3, 4, 7,-2, 4, 7, p.roof_slab2, 1);
prop.fillBlocks(world, limit, component, 2, 4, 7, 3, 4, 7, p.roof_slab2, 1);
prop.placeBlock(world, limit, component,-2, 5, 7, p.roof_slab2, 0);
prop.placeBlock(world, limit, component, 2, 5, 7, p.roof_slab2, 0);
prop.fillBlocks(world, limit, component,-2, 5, 5, 2, 5, 5, p.roof_slab2, 1);
prop.placeBlock(world, limit, component,-3, 5, 5, p.roof_stair2, 4);
prop.placeBlock(world, limit, component, 3, 5, 5, p.roof_stair2, 4);
prop.placeBlock(world, limit, component,-3, 5, 4, p.roof_stair2, 6);
prop.placeBlock(world, limit, component, 3, 5, 4, p.roof_stair2, 6);
// silo
prop.fillBlocks(world, limit, component,-10, 5,-2, -6, 5,-2, p.wall_trim1, 0);
prop.fillBlocks(world, limit, component,-10, 5, 2, -6, 5, 2, p.wall_trim1, 0);
prop.fillBlocks(world, limit, component,-10, 5,-1,-10, 5, 1, p.wall_trim1, 0);
prop.fillBlocks(world, limit, component, -6, 5,-1, -6, 5, 1, p.wall_trim1, 0);
prop.fillBlocks(world, limit, component,-10, 16,-2, -6, 16,-2, p.wall_trim1, 0);
prop.fillBlocks(world, limit, component,-10, 16, 2, -6, 16, 2, p.wall_trim1, 0);
prop.fillBlocks(world, limit, component,-10, 16,-1,-10, 16, 1, p.wall_trim1, 0);
prop.fillBlocks(world, limit, component, -6, 16,-1, -6, 16, 1, p.wall_trim1, 0);
prop.fillBlocks(world, limit, component,-10, 6,-2,-10, 15,-2, p.wall_trim1, 0);
prop.fillBlocks(world, limit, component,-10, 6, 2,-10, 15, 2, p.wall_trim1, 0);
prop.fillBlocks(world, limit, component, -6, 6,-2, -6, 15,-2, p.wall_trim1, 0);
prop.fillBlocks(world, limit, component, -6, 6, 2, -6, 15, 2, p.wall_trim1, 0);
prop.fillBlocks(world, limit, component, -9, 6,-2, -7, 15,-2, p.wall1, 0);
prop.fillBlocks(world, limit, component, -9, 6, 2, -7, 15, 2, p.wall1, 0);
prop.fillBlocks(world, limit, component,-10, 6,-1,-10, 15, 1, p.wall1, 0);
prop.fillBlocks(world, limit, component, -6, 6,-1, -6, 15, 1, p.wall1, 0);
prop.fillBlocks(world, limit, component, -9, 8,-2, -7, 8,-2, p.wall_trim2, 0);
prop.fillBlocks(world, limit, component, -9, 8, 2, -7, 8, 2, p.wall_trim2, 0);
prop.fillBlocks(world, limit, component,-10, 8,-1,-10, 8, 1, p.wall_trim2, 0);
prop.fillBlocks(world, limit, component, -6, 8,-1, -6, 8, 1, p.wall_trim2, 0);
prop.fillBlocks(world, limit, component, -9, 13,-2, -7, 13,-2, p.wall_trim2, 0);
prop.fillBlocks(world, limit, component, -9, 13, 2, -7, 13, 2, p.wall_trim2, 0);
prop.fillBlocks(world, limit, component,-10, 13,-1,-10, 13, 1, p.wall_trim2, 0);
prop.fillBlocks(world, limit, component, -6, 13,-1, -6, 13, 1, p.wall_trim2, 0);
prop.fillBlocks(world, limit, component,-10, 10, 0,-10, 11, 0, p.window_pane, 0);
prop.fillBlocks(world, limit, component, -8, 10,-2, -8, 11,-2, p.window_pane, 0);
prop.fillBlocks(world, limit, component, -8, 10, 2, -8, 11, 2, p.window_pane, 0);
prop.fillBlocks(world, limit, component, -9, 16,-1, -7, 16, 1, p.roof_slab2, 0);
prop.placeBlock(world, limit, component, -9, 5, 0, p.foundation, 0);
prop.placeBlock(world, limit, component, -7, 5, 0, p.foundation, 0);
prop.placeBlock(world, limit, component, -8, 5, 1, p.foundation, 0);
prop.placeBlock(world, limit, component, -8, 5,-1, p.foundation, 0);
// torches
prop.placeBlock(world, limit, component,-10, 17,-2, p.light, 0);
prop.placeBlock(world, limit, component,-10, 17, 2, p.light, 0);
prop.placeBlock(world, limit, component, -6, 17,-2, p.light, 0);
prop.placeBlock(world, limit, component, -6, 17, 2, p.light, 0);
prop.placeBlock(world, limit, component,-4, 3,-1, p.light, 0);
prop.placeBlock(world, limit, component,-4, 3, 1, p.light, 0);
prop.placeBlock(world, limit, component,-2, 3,-1, p.light, 0);
prop.placeBlock(world, limit, component, 2, 3, 1, p.light, 0);
prop.placeBlock(world, limit, component, 4, 3,-1, p.light, 0);
prop.placeBlock(world, limit, component,-1, 3, 4, p.light, 0);
prop.placeBlock(world, limit, component, 1, 3, 4, p.light, 0);
prop.placeBlock(world, limit, component,-3, 3, 7, p.light, 0);
prop.placeBlock(world, limit, component, 3, 3, 7, p.light, 0);
prop.placeBlock(world, limit, component,-1, 6, 7, p.light, 0);
prop.placeBlock(world, limit, component, 1, 6, 7, p.light, 0);
prop.placeBlock(world, limit, component,-2, 8, 0, p.light, 0);
prop.placeBlock(world, limit, component, 2, 8, 0, p.light, 0);
prop.placeBlock(world, limit, component,-9, 8, 0, p.light, 0);
prop.placeBlock(world, limit, component, 5, 7, 4, p.light, 0);
prop.placeBlock(world, limit, component, 5, 7,-5, p.light, 0);
// furniture
prop.placeBlock(world, limit, component, 0, 7, 1, p.chair_body, 2);
prop.placeBlock(world, limit, component,-1, 7, 1, p.chair_arm, 1);
prop.placeBlock(world, limit, component, 1, 7, 1, p.chair_arm, 3);
prop.placeBlock(world, limit, component,-2, 2,-2, p.chair_body, 1);
prop.fillBlocks(world, limit, component,-2, 2,-3, 1, 2,-3, p.chair_body, 2);
prop.placeBlock(world, limit, component,-2, 2,-1, p.chair_arm, 0);
prop.placeBlock(world, limit, component, 2, 2,-3, p.chair_arm, 3);
prop.placeBlock(world, limit, component,-1, 7,-2, p.bed, 3);
prop.placeBlock(world, limit, component, 5, 2, 2, p.goods, 1);
prop.placeBlock(world, limit, component, 6, 2, 2, p.goods, 0);
prop.placeBlock(world, limit, component, 7, 2, 2, p.goods, 0);
prop.placeBlock(world, limit, component, 7, 2, 1, p.goods, 2);
prop.placeBlock(world, limit, component, 5, 2,-3, p.goods, 0);
prop.placeBlock(world, limit, component, 6, 2,-3, p.goods, 0);
prop.placeBlock(world, limit, component, 7, 2,-3, p.goods, 0);
prop.placeBlock(world, limit, component, 6, 2,-2, p.goods, 2);
prop.placeBlock(world, limit, component, 7, 2,-2, p.goods, 1);
prop.placeBlock(world, limit, component, 7, 3,-3, p.goods, 2);
}
}