mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
reactor room, meta pain
This commit is contained in:
parent
7ed32a6c7f
commit
3ecc74f6db
@ -35,6 +35,7 @@ public class BunkerComponents {
|
|||||||
new Weight(10, 3, FunJunction::findValidPlacement),
|
new Weight(10, 3, FunJunction::findValidPlacement),
|
||||||
new Weight(5, 2, BathroomL::findValidPlacement),
|
new Weight(5, 2, BathroomL::findValidPlacement),
|
||||||
new Weight(7, 2, Laboratory::findValidPlacement),
|
new Weight(7, 2, Laboratory::findValidPlacement),
|
||||||
|
new Weight(5, 1, PowerRoom::findValidPlacement),
|
||||||
};
|
};
|
||||||
|
|
||||||
StructureComponent starter = new StartingHub(rand, x, z);
|
StructureComponent starter = new StartingHub(rand, x, z);
|
||||||
@ -53,6 +54,7 @@ public class BunkerComponents {
|
|||||||
MapGenStructureIO.func_143031_a(FunJunction.class, "NTMBFunJunction");
|
MapGenStructureIO.func_143031_a(FunJunction.class, "NTMBFunJunction");
|
||||||
MapGenStructureIO.func_143031_a(BathroomL.class, "NTMBBathroomL");
|
MapGenStructureIO.func_143031_a(BathroomL.class, "NTMBBathroomL");
|
||||||
MapGenStructureIO.func_143031_a(Laboratory.class, "NTMBLaboratory");
|
MapGenStructureIO.func_143031_a(Laboratory.class, "NTMBLaboratory");
|
||||||
|
MapGenStructureIO.func_143031_a(PowerRoom.class, "NTMBPowerRoom");
|
||||||
//TODO more rooms for more variety
|
//TODO more rooms for more variety
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -483,7 +485,7 @@ public class BunkerComponents {
|
|||||||
placeBlockAtCurrentPosition(world, ModBlocks.deco_tungsten, 0, 6, 1, 9, box);
|
placeBlockAtCurrentPosition(world, ModBlocks.deco_tungsten, 0, 6, 1, 9, box);
|
||||||
placeBlockAtCurrentPosition(world, ModBlocks.tape_recorder, getDecoMeta(4), 6, 2, 9, box);
|
placeBlockAtCurrentPosition(world, ModBlocks.tape_recorder, getDecoMeta(4), 6, 2, 9, box);
|
||||||
fillWithBlocks(world, box, 6, 3, 8, 6, 3, 9, ModBlocks.concrete_slab);
|
fillWithBlocks(world, box, 6, 3, 8, 6, 3, 9, ModBlocks.concrete_slab);
|
||||||
placeBlockAtCurrentPosition(world, Blocks.lever, getDecoMeta(2), 5, 1, 9, box); //double-check meta
|
placeLever(world, box, 2, rand.nextBoolean(), 5, 1, 9);
|
||||||
//doors
|
//doors
|
||||||
placeDoor(world, box, ModBlocks.door_bunker, 1, true, rand.nextBoolean(), 4, 1, 0);
|
placeDoor(world, box, ModBlocks.door_bunker, 1, true, rand.nextBoolean(), 4, 1, 0);
|
||||||
placeDoor(world, box, ModBlocks.door_bunker, 1, false, rand.nextBoolean(), 5, 1, 0);
|
placeDoor(world, box, ModBlocks.door_bunker, 1, false, rand.nextBoolean(), 5, 1, 0);
|
||||||
@ -565,10 +567,10 @@ public class BunkerComponents {
|
|||||||
//hand-dryers (industrial-strength)
|
//hand-dryers (industrial-strength)
|
||||||
placeBlockAtCurrentPosition(world, ModBlocks.steel_beam, 3, 4, 1, 9, box);
|
placeBlockAtCurrentPosition(world, ModBlocks.steel_beam, 3, 4, 1, 9, box);
|
||||||
placeBlockAtCurrentPosition(world, ModBlocks.fan, getDecoMeta(2), 4, 2, 9, box);
|
placeBlockAtCurrentPosition(world, ModBlocks.fan, getDecoMeta(2), 4, 2, 9, box);
|
||||||
placeBlockAtCurrentPosition(world, Blocks.stone_button, 2, 3, 2, 9, box); //TODO button meta
|
placeBlockAtCurrentPosition(world, Blocks.stone_button, getButtonMeta(2), 3, 2, 9, box); //TODO button meta
|
||||||
placeBlockAtCurrentPosition(world, ModBlocks.steel_beam, 3, 6, 1, 9, box);
|
placeBlockAtCurrentPosition(world, ModBlocks.steel_beam, 3, 6, 1, 9, box);
|
||||||
placeBlockAtCurrentPosition(world, ModBlocks.fan, getDecoMeta(2), 6, 2, 9, box);
|
placeBlockAtCurrentPosition(world, ModBlocks.fan, getDecoMeta(2), 6, 2, 9, box);
|
||||||
placeBlockAtCurrentPosition(world, Blocks.stone_button, 1, 7, 2, 9, box);
|
placeBlockAtCurrentPosition(world, Blocks.stone_button, getButtonMeta(1), 7, 2, 9, box);
|
||||||
//stalls w/ toilets
|
//stalls w/ toilets
|
||||||
for(int i = 1; i <= 5; i += 2) {
|
for(int i = 1; i <= 5; i += 2) {
|
||||||
placeDoor(world, box, ModBlocks.door_metal, 0, false, rand.nextBoolean(), 5, 1, i);
|
placeDoor(world, box, ModBlocks.door_metal, 0, false, rand.nextBoolean(), 5, 1, i);
|
||||||
@ -689,7 +691,7 @@ public class BunkerComponents {
|
|||||||
placeBlockAtCurrentPosition(world, ModBlocks.concrete_smooth_stairs, stairMetaW | 4, 7, 1, 3, box);
|
placeBlockAtCurrentPosition(world, ModBlocks.concrete_smooth_stairs, stairMetaW | 4, 7, 1, 3, box);
|
||||||
placeBlockAtCurrentPosition(world, ModBlocks.deco_red_copper, 0, 7, 2, 3, box);
|
placeBlockAtCurrentPosition(world, ModBlocks.deco_red_copper, 0, 7, 2, 3, box);
|
||||||
placeBlockAtCurrentPosition(world, ModBlocks.concrete_smooth_stairs, stairMetaW, 7, 3, 3, box);
|
placeBlockAtCurrentPosition(world, ModBlocks.concrete_smooth_stairs, stairMetaW, 7, 3, 3, box);
|
||||||
placeBlockAtCurrentPosition(world, Blocks.lever, 2, 6, 2, 3, box); //TODO lever meta
|
placeLever(world, box, 2, rand.nextBoolean(), 6, 2, 3);
|
||||||
fillWithMetadataBlocks(world, box, 7, 1, 4, 7, 2, 4, ModBlocks.steel_poles, decoMetaE);
|
fillWithMetadataBlocks(world, box, 7, 1, 4, 7, 2, 4, ModBlocks.steel_poles, decoMetaE);
|
||||||
placeBlockAtCurrentPosition(world, ModBlocks.deco_steel, 0, 7, 3, 4, box);
|
placeBlockAtCurrentPosition(world, ModBlocks.deco_steel, 0, 7, 3, 4, box);
|
||||||
placeBlockAtCurrentPosition(world, ModBlocks.deco_tungsten, 0, 7, 1, 5, box);
|
placeBlockAtCurrentPosition(world, ModBlocks.deco_tungsten, 0, 7, 1, 5, box);
|
||||||
@ -715,4 +717,206 @@ public class BunkerComponents {
|
|||||||
return box.minY > 10 && StructureComponent.findIntersecting(components, box) == null ? new Laboratory(type, box, coordMode) : null;
|
return box.minY > 10 && StructureComponent.findIntersecting(components, box) == null ? new Laboratory(type, box, coordMode) : null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static class PowerRoom extends Component implements ProceduralComponent {
|
||||||
|
|
||||||
|
private boolean path;
|
||||||
|
|
||||||
|
private int powerType;
|
||||||
|
|
||||||
|
public PowerRoom() { }
|
||||||
|
|
||||||
|
public PowerRoom(int componentType, StructureBoundingBox box, int coordMode, Random rand) {
|
||||||
|
super(componentType);
|
||||||
|
this.boundingBox = box;
|
||||||
|
this.coordBaseMode = coordMode;
|
||||||
|
|
||||||
|
float chance = rand.nextFloat();
|
||||||
|
powerType = chance < 0.2 ? 2 : chance < 0.6 ? 1 : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** write to nbt */
|
||||||
|
@Override
|
||||||
|
protected void func_143012_a(NBTTagCompound nbt) {
|
||||||
|
super.func_143012_a(nbt);
|
||||||
|
nbt.setBoolean("p", path);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** read from nbt */
|
||||||
|
@Override
|
||||||
|
protected void func_143011_b(NBTTagCompound nbt) {
|
||||||
|
super.func_143011_b(nbt);
|
||||||
|
path = nbt.getBoolean("p");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void buildComponent(ProceduralStructureStart start, Random rand) {
|
||||||
|
path = this.getNextComponentEast(start, this, coordBaseMode, rand, 4, 1) != null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean addComponentParts(World world, Random rand, StructureBoundingBox box) {
|
||||||
|
|
||||||
|
fillWithAir(world, box, 1, 1, 1, 10, 3, 10);
|
||||||
|
//floor
|
||||||
|
fillWithMetadataBlocks(world, box, 1, 0, 1, 10, 0, 10, ModBlocks.vinyl_tile, 1);
|
||||||
|
//ceiling
|
||||||
|
fillWithBlocks(world, box, 1, 4, 1, 10, 4, 10, ModBlocks.vinyl_tile);
|
||||||
|
//upper shield
|
||||||
|
fillWithBlocks(world, box, 0, 5, 0, 11, 5, 11, ModBlocks.reinforced_stone);
|
||||||
|
//walls
|
||||||
|
fillWithRandomizedBlocks(world, box, 0, 0, 0, 11, 4, 0, rand, ConcreteBricks);
|
||||||
|
fillWithRandomizedBlocks(world, box, 0, 0, 1, 0, 4, 10, rand, ConcreteBricks);
|
||||||
|
fillWithRandomizedBlocks(world, box, 0, 0, 11, 11, 4, 11, rand, ConcreteBricks);
|
||||||
|
fillWithRandomizedBlocks(world, box, 11, 0, 1, 11, 4, 10, rand, ConcreteBricks);
|
||||||
|
fillWithRandomizedBlocks(world, box, 5, 1, 1, 5, 3, 6, rand, ConcreteBricks);
|
||||||
|
fillWithRandomizedBlocks(world, box, 6, 1, 6, 10, 3, 6, rand, ConcreteBricks);
|
||||||
|
|
||||||
|
/* DECO */
|
||||||
|
//lamps
|
||||||
|
placeBlockAtCurrentPosition(world, ModBlocks.reinforced_lamp_off, 0, 3, 5, 2, box);
|
||||||
|
placeBlockAtCurrentPosition(world, ModBlocks.reinforced_lamp_off, 0, 3, 5, 5, box);
|
||||||
|
placeBlockAtCurrentPosition(world, ModBlocks.reinforced_lamp_off, 0, 3, 5, 8, box);
|
||||||
|
placeBlockAtCurrentPosition(world, ModBlocks.reinforced_lamp_off, 0, 6, 5, 8, box);
|
||||||
|
placeBlockAtCurrentPosition(world, ModBlocks.reinforced_lamp_off, 0, 9, 5, 8, box);
|
||||||
|
placeBlockAtCurrentPosition(world, ModBlocks.fan, 0, 3, 4, 2, box);
|
||||||
|
placeBlockAtCurrentPosition(world, ModBlocks.fan, 0, 3, 4, 5, box);
|
||||||
|
placeBlockAtCurrentPosition(world, ModBlocks.fan, 0, 3, 4, 8, box);
|
||||||
|
placeBlockAtCurrentPosition(world, ModBlocks.fan, 0, 6, 4, 8, box);
|
||||||
|
placeBlockAtCurrentPosition(world, ModBlocks.fan, 0, 9, 4, 8, box);
|
||||||
|
//power room stuff
|
||||||
|
fillWithBlocks(world, box, 7, 2, 6, 9, 2, 6, ModBlocks.reinforced_glass);
|
||||||
|
int decoMetaE = getDecoMeta(5);
|
||||||
|
int decoMetaW = getDecoMeta(4);
|
||||||
|
int decoMetaN = getDecoMeta(3);
|
||||||
|
int decoMetaS = getDecoMeta(2);
|
||||||
|
|
||||||
|
int stairMetaS = getStairMeta(3);
|
||||||
|
int stairMetaN = getStairMeta(2);
|
||||||
|
int stairMetaW = getStairMeta(1);
|
||||||
|
int stairMetaE = getStairMeta(0);
|
||||||
|
|
||||||
|
switch(this.powerType) {
|
||||||
|
default:
|
||||||
|
fillWithBlocks(world, box, 6, 1, 1, 6, 3, 1, ModBlocks.deco_pipe_framed_rusted);
|
||||||
|
for(int i = 7; i <= 9; i += 2) {
|
||||||
|
placeBlockAtCurrentPosition(world, ModBlocks.machine_coal_off, decoMetaN, i, 1, 1, box);
|
||||||
|
placeBlockAtCurrentPosition(world, ModBlocks.steel_beam, 2, i, 2, 1, box);
|
||||||
|
placeBlockAtCurrentPosition(world, ModBlocks.machine_coal_off, decoMetaN, i, 3, 1, box);
|
||||||
|
}
|
||||||
|
placeBlockAtCurrentPosition(world, ModBlocks.deco_red_copper, 0, 8, 1, 1, box);
|
||||||
|
placeBlockAtCurrentPosition(world, ModBlocks.concrete_colored_ext, 5, 8, 2, 1, box);
|
||||||
|
placeBlockAtCurrentPosition(world, ModBlocks.deco_red_copper, 0, 8, 3, 1, box);
|
||||||
|
placeLever(world, box, 3, rand.nextBoolean(), 8, 2, 2);
|
||||||
|
for(int i = 1; i <= 3; i += 2) {
|
||||||
|
placeBlockAtCurrentPosition(world, ModBlocks.deco_steel, 0, 10, i, 1, box);
|
||||||
|
fillWithMetadataBlocks(world, box, 10, i, 2, 10, i, 4, ModBlocks.deco_pipe_quad_rusted, getPillarMeta(8));
|
||||||
|
placeBlockAtCurrentPosition(world, ModBlocks.deco_steel, 0, 10, i, 5, box);
|
||||||
|
}
|
||||||
|
placeBlockAtCurrentPosition(world, ModBlocks.deco_pipe_framed_rusted, 0, 10, 2, 1, box);
|
||||||
|
placeBlockAtCurrentPosition(world, ModBlocks.fluid_duct_gauge, decoMetaW, 10, 2, 5, box);
|
||||||
|
placeBlockAtCurrentPosition(world, ModBlocks.barrel_plastic, 0, 6, 1, 5, box);
|
||||||
|
//chests
|
||||||
|
generateInvContents(world, box, rand, Blocks.chest, decoMetaS, 7, 1, 5, HbmChestContents.antenna, 4); //WIP
|
||||||
|
generateInvContents(world, box, rand, Blocks.chest, decoMetaS, 9, 1, 5, HbmChestContents.antenna, 4);
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
placeBlockAtCurrentPosition(world, ModBlocks.concrete_colored_ext, 5, 6, 1, 1, box);
|
||||||
|
placeBlockAtCurrentPosition(world, ModBlocks.cable_detector, 0, 6, 2, 1, box);
|
||||||
|
placeBlockAtCurrentPosition(world, ModBlocks.concrete_colored_ext, 5, 6, 3, 1, box);
|
||||||
|
placeLever(world, box, 3, false, 6, 2, 2);
|
||||||
|
for(int i = 7; i <= 9; i += 2) {
|
||||||
|
placeBlockAtCurrentPosition(world, ModBlocks.steel_scaffold, 8, i, 1, 1, box); //i'm not making another fucking meta method
|
||||||
|
placeBlockAtCurrentPosition(world, ModBlocks.machine_diesel, decoMetaE, i, 2, 1, box);
|
||||||
|
}
|
||||||
|
placeBlockAtCurrentPosition(world, ModBlocks.deco_pipe_rim_rusted, getPillarMeta(4), 8, 2, 1, box);
|
||||||
|
placeBlockAtCurrentPosition(world, ModBlocks.deco_pipe_rim_rusted, getPillarMeta(4), 8, 2, 1, box);
|
||||||
|
fillWithMetadataBlocks(world, box, 7, 3, 1, 9, 3, 1, ModBlocks.concrete_smooth_stairs, stairMetaS);
|
||||||
|
fillWithBlocks(world, box, 10, 1, 1, 10, 1, 3, ModBlocks.deco_steel);
|
||||||
|
placeBlockAtCurrentPosition(world, ModBlocks.deco_red_copper, 0, 10, 2, 1, box);
|
||||||
|
placeBlockAtCurrentPosition(world, ModBlocks.deco_steel, 0, 10, 3, 1, box);
|
||||||
|
placeBlockAtCurrentPosition(world, ModBlocks.steel_grate, 7, 10, 2, 2, box);
|
||||||
|
placeBlockAtCurrentPosition(world, ModBlocks.deco_computer, getDecoModelMeta(2), 10, 3, 2, box);
|
||||||
|
fillWithMetadataBlocks(world, box, 10, 2, 3, 10, 3, 3, ModBlocks.tape_recorder, decoMetaW);
|
||||||
|
fillWithMetadataBlocks(world, box, 9, 1, 2, 9, 1, 3, ModBlocks.steel_grate, 7);
|
||||||
|
fillWithBlocks(world, box, 9, 1, 5, 10, 1, 5, ModBlocks.barrel_iron);
|
||||||
|
placeBlockAtCurrentPosition(world, ModBlocks.barrel_iron, 0, 10, 2, 5, box);
|
||||||
|
fillWithBlocks(world, box, 6, 1, 5, 6, 2, 5, ModBlocks.barrel_iron);
|
||||||
|
placeBlockAtCurrentPosition(world, ModBlocks.barrel_iron, 0, 6, 1, 2, box);
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
for(int i = 7; i <= 9; i += 2) {
|
||||||
|
fillWithBlocks(world, box, i, 1, 2, i, 1, 4, ModBlocks.deco_lead);
|
||||||
|
fillWithBlocks(world, box, i, 2, 2, i, 2, 4, ModBlocks.block_lead);
|
||||||
|
fillWithBlocks(world, box, i, 3, 2, i, 3, 4, ModBlocks.deco_lead);
|
||||||
|
}
|
||||||
|
placeBlockAtCurrentPosition(world, ModBlocks.concrete_colored_ext, 5, 8, 1, 4, box);
|
||||||
|
placeBlockAtCurrentPosition(world, ModBlocks.reactor_computer, 0, 8, 2, 4, box);
|
||||||
|
placeBlockAtCurrentPosition(world, ModBlocks.concrete_colored_ext, 5, 8, 3, 4, box);
|
||||||
|
placeLever(world, box, 3, rand.nextBoolean(), 8, 2, 5);
|
||||||
|
placeBlockAtCurrentPosition(world, ModBlocks.reactor_element, 0, 8, 1, 3, box);
|
||||||
|
placeBlockAtCurrentPosition(world, ModBlocks.reactor_control, 0, 8, 2, 3, box);
|
||||||
|
placeBlockAtCurrentPosition(world, ModBlocks.reactor_element, 0, 8, 3, 3, box);
|
||||||
|
placeBlockAtCurrentPosition(world, ModBlocks.block_copper, 0, 8, 1, 2, box);
|
||||||
|
placeBlockAtCurrentPosition(world, ModBlocks.block_lead, 0, 8, 2, 2, box);
|
||||||
|
placeBlockAtCurrentPosition(world, ModBlocks.block_copper, 0, 8, 3, 2, box);
|
||||||
|
placeBlockAtCurrentPosition(world, ModBlocks.reactor_conductor, 0, 8, 1, 1, box);
|
||||||
|
placeBlockAtCurrentPosition(world, ModBlocks.machine_turbine, 0, 8, 2, 1, box);
|
||||||
|
placeBlockAtCurrentPosition(world, ModBlocks.reactor_conductor, 0, 8, 3, 1, box);
|
||||||
|
fillWithBlocks(world, box, 9, 1, 1, 9, 3, 1, ModBlocks.deco_steel);
|
||||||
|
placeBlockAtCurrentPosition(world, ModBlocks.steel_grate, 7, 10, 1, 1, box);
|
||||||
|
placeBlockAtCurrentPosition(world, ModBlocks.deco_computer, getDecoModelMeta(1), 10, 2, 1, box);
|
||||||
|
placeBlockAtCurrentPosition(world, ModBlocks.tape_recorder, decoMetaN, 10, 3, 1, box);
|
||||||
|
fillWithMetadataBlocks(world, box, 6, 1, 1, 7, 1, 1, ModBlocks.deco_pipe_quad_rusted, getPillarMeta(4));
|
||||||
|
placeBlockAtCurrentPosition(world, ModBlocks.deco_pipe_quad_rusted, getPillarMeta(4), 7, 3, 1, box);
|
||||||
|
placeBlockAtCurrentPosition(world, ModBlocks.fluid_duct_gauge, decoMetaN, 6, 3, 1, box);
|
||||||
|
//chest
|
||||||
|
generateInvContents(world, box, rand, Blocks.chest, decoMetaN, 6, 1, 2, HbmChestContents.antenna, 4); //WIP
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
//transformer
|
||||||
|
fillWithMetadataBlocks(world, box, 1, 1, 1, 1, 1, 5, ModBlocks.concrete_smooth_stairs, stairMetaW | 4);
|
||||||
|
fillWithBlocks(world, box, 1, 1, 6, 1, 3, 6, ModBlocks.concrete_pillar);
|
||||||
|
fillWithMetadataBlocks(world, box, 1, 3, 1, 1, 3, 5, ModBlocks.concrete_smooth_stairs, stairMetaW);
|
||||||
|
placeBlockAtCurrentPosition(world, ModBlocks.machine_transformer_20, 0, 1, 2, 1, box);
|
||||||
|
placeBlockAtCurrentPosition(world, ModBlocks.cable_diode, decoMetaN, 1, 2, 2, box);
|
||||||
|
placeBlockAtCurrentPosition(world, ModBlocks.machine_battery, decoMetaE, 1, 2, 3, box);
|
||||||
|
placeBlockAtCurrentPosition(world, ModBlocks.deco_red_copper, 0, 1, 2, 4, box);
|
||||||
|
placeBlockAtCurrentPosition(world, ModBlocks.cable_switch, 0, 1, 2, 5, box);
|
||||||
|
//machine
|
||||||
|
for(int i = 1; i <= 5; i += 4) {
|
||||||
|
placeBlockAtCurrentPosition(world, ModBlocks.deco_beryllium, 0, i, 1, 10, box);
|
||||||
|
placeBlockAtCurrentPosition(world, ModBlocks.steel_scaffold, 0, i, 2, 10, box);
|
||||||
|
placeBlockAtCurrentPosition(world, ModBlocks.deco_beryllium, 0, i, 3, 10, box);
|
||||||
|
}
|
||||||
|
placeBlockAtCurrentPosition(world, ModBlocks.steel_scaffold, 0, 2, 1, 10, box);
|
||||||
|
placeBlockAtCurrentPosition(world, ModBlocks.deco_tungsten, 0, 3, 1, 10, box);
|
||||||
|
placeBlockAtCurrentPosition(world, ModBlocks.steel_scaffold, 0, 4, 1, 10, box);
|
||||||
|
placeBlockAtCurrentPosition(world, ModBlocks.tape_recorder, decoMetaS, 2, 2, 10, box);
|
||||||
|
placeBlockAtCurrentPosition(world, ModBlocks.deco_computer, getDecoModelMeta(0), 3, 2, 10, box);
|
||||||
|
placeBlockAtCurrentPosition(world, ModBlocks.tape_recorder, decoMetaS, 4, 2, 10, box);
|
||||||
|
fillWithMetadataBlocks(world, box, 2, 3, 10, 4, 3, 10, ModBlocks.tape_recorder, decoMetaS);
|
||||||
|
//desk
|
||||||
|
fillWithMetadataBlocks(world, box, 8, 1, 10, 10, 1, 10, ModBlocks.concrete_smooth_stairs, stairMetaN | 4);
|
||||||
|
placeBlockAtCurrentPosition(world, ModBlocks.concrete_smooth_stairs, stairMetaE | 4, 10, 1, 9, box);
|
||||||
|
placeBlockAtCurrentPosition(world, Blocks.oak_stairs,stairMetaS, 9, 1, 9, box);
|
||||||
|
placeBlockAtCurrentPosition(world, Blocks.flower_pot, 0, 8, 2, 10, box);
|
||||||
|
placeBlockAtCurrentPosition(world, ModBlocks.deco_computer, getDecoModelMeta(0), 9, 2, 10, box);
|
||||||
|
//loot
|
||||||
|
generateInvContents(world, box, rand, Blocks.chest, decoMetaE, 1, 1, 7, HbmChestContents.antenna, 4); //WIP
|
||||||
|
generateInvContents(world, box, rand, ModBlocks.filing_cabinet, getDecoModelMeta(0), 7, 1, 10, HbmChestContents.antenna, 4);
|
||||||
|
//doors
|
||||||
|
placeDoor(world, box, ModBlocks.door_bunker, 1, true, rand.nextBoolean(), 3, 1, 0);
|
||||||
|
placeDoor(world, box, ModBlocks.door_bunker, 1, false, rand.nextBoolean(), 4, 1, 0);
|
||||||
|
placeDoor(world, box, ModBlocks.door_bunker, 0, false, false, 5, 1, 3);
|
||||||
|
if(path) fillWithAir(world, box, 11, 1, 7, 11, 2, 8);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static StructureComponent findValidPlacement(List components, Random rand, int x, int y, int z, int coordMode, int type) {
|
||||||
|
StructureBoundingBox box = ProceduralStructureStart.getComponentToAddBoundingBox(x, y, z, -4, -1, 0, 12, 6, 12, coordMode);
|
||||||
|
return box.minY > 10 && StructureComponent.findIntersecting(components, box) == null ? new PowerRoom(type, box, coordMode, rand) : null;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -268,7 +268,7 @@ abstract public class Component extends StructureComponent {
|
|||||||
case 2: //North
|
case 2: //North
|
||||||
dirMeta ^= 2; break; //Flip second bit
|
dirMeta ^= 2; break; //Flip second bit
|
||||||
case 3: //East
|
case 3: //East
|
||||||
dirMeta = (dirMeta - 1) % 4; break;
|
dirMeta = Math.abs(dirMeta - 1) % 4; break; //fuck you modulo
|
||||||
}
|
}
|
||||||
|
|
||||||
//hee hoo
|
//hee hoo
|
||||||
@ -280,7 +280,7 @@ abstract public class Component extends StructureComponent {
|
|||||||
world.setBlock(posX, posY + 1, posZ, door, metaTop, 2);
|
world.setBlock(posX, posY + 1, posZ, door, metaTop, 2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/** 1 for west face, 2 for east face, 3 for north, 4 for south*/
|
||||||
protected void placeLever(World world, StructureBoundingBox box, int dirMeta, boolean on, int featureX, int featureY, int featureZ) {
|
protected void placeLever(World world, StructureBoundingBox box, int dirMeta, boolean on, int featureX, int featureY, int featureZ) {
|
||||||
int posX = this.getXWithOffset(featureX, featureZ);
|
int posX = this.getXWithOffset(featureX, featureZ);
|
||||||
int posY = this.getYWithOffset(featureY);
|
int posY = this.getYWithOffset(featureY);
|
||||||
@ -288,7 +288,39 @@ abstract public class Component extends StructureComponent {
|
|||||||
|
|
||||||
if(!box.isVecInside(posX, posY, posZ)) return;
|
if(!box.isVecInside(posX, posY, posZ)) return;
|
||||||
|
|
||||||
//levers suck ass
|
if(dirMeta <= 0 || dirMeta >= 7) { //levers suck ass
|
||||||
|
switch(this.coordBaseMode) {
|
||||||
|
case 1: case 3: //west / east
|
||||||
|
dirMeta ^= 0b111;
|
||||||
|
}
|
||||||
|
} else if(dirMeta >= 5) {
|
||||||
|
switch(this.coordBaseMode) {
|
||||||
|
case 1: case 3: //west / east
|
||||||
|
dirMeta = (dirMeta + 1) % 2 + 5;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
dirMeta = getButtonMeta(dirMeta);
|
||||||
|
}
|
||||||
|
|
||||||
|
world.setBlock(posX, posY, posZ, Blocks.lever, on ? dirMeta | 8 : dirMeta, 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** pain. works for side-facing levers as well */
|
||||||
|
protected int getButtonMeta(int dirMeta) {
|
||||||
|
switch(this.coordBaseMode) { //are you ready for the pain?
|
||||||
|
case 1: //West
|
||||||
|
if(dirMeta <= 2) return dirMeta + 2;
|
||||||
|
else if(dirMeta < 4) return dirMeta - 1;
|
||||||
|
else return dirMeta - 3;// this shit sucks ass
|
||||||
|
case 2: //North
|
||||||
|
return dirMeta + (dirMeta % 2 == 0 ? -1 : 1);
|
||||||
|
case 3: //East
|
||||||
|
if(dirMeta <= 1) return dirMeta + 3;
|
||||||
|
else if(dirMeta <= 2) return dirMeta + 1;
|
||||||
|
else return dirMeta - 2;
|
||||||
|
default: //South
|
||||||
|
return dirMeta;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**N:0 W:1 S:2 E:3 */
|
/**N:0 W:1 S:2 E:3 */
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user