This commit is contained in:
Vaern 2023-05-30 20:04:55 -07:00
parent cd4c976dd7
commit f4d67be51e

View File

@ -141,7 +141,7 @@ public class BunkerComponents {
placeBlockAtCurrentPosition(world, ModBlocks.fan, 0, 5, 4, 5, box); placeBlockAtCurrentPosition(world, ModBlocks.fan, 0, 5, 4, 5, box);
//machine //machine
placeBlockAtCurrentPosition(world, ModBlocks.deco_tungsten, 0, 3, 1, 6, box); placeBlockAtCurrentPosition(world, ModBlocks.deco_tungsten, 0, 3, 1, 6, box);
generateInvContents(world, box, rand, Blocks.chest, getDecoMeta(2), 4, 1, 6, HbmChestContents.antenna/*TODO change */, 5); generateInvContents(world, box, rand, Blocks.chest, getDecoMeta(3), 4, 1, 6, HbmChestContents.antenna/*TODO change */, 5);
placeBlockAtCurrentPosition(world, ModBlocks.deco_tungsten, 0, 5, 1, 6, box); placeBlockAtCurrentPosition(world, ModBlocks.deco_tungsten, 0, 5, 1, 6, box);
fillWithMetadataBlocks(world, box, 3, 2, 6, 5, 2, 6, ModBlocks.concrete_smooth_stairs, getStairMeta(2) | 4); fillWithMetadataBlocks(world, box, 3, 2, 6, 5, 2, 6, ModBlocks.concrete_smooth_stairs, getStairMeta(2) | 4);
fillWithMetadataBlocks(world, box, 3, 3, 6, 5, 3, 6, ModBlocks.tape_recorder, getDecoMeta(2)); fillWithMetadataBlocks(world, box, 3, 3, 6, 5, 3, 6, ModBlocks.tape_recorder, getDecoMeta(2));
@ -149,7 +149,7 @@ public class BunkerComponents {
placeBlockAtCurrentPosition(world, ModBlocks.concrete_smooth_stairs, getStairMeta(1) | 4, 3, 1, 4, box); placeBlockAtCurrentPosition(world, ModBlocks.concrete_smooth_stairs, getStairMeta(1) | 4, 3, 1, 4, box);
placeBlockAtCurrentPosition(world, ModBlocks.concrete_smooth_stairs, getStairMeta(3) | 4, 4, 1, 4, box); placeBlockAtCurrentPosition(world, ModBlocks.concrete_smooth_stairs, getStairMeta(3) | 4, 4, 1, 4, box);
placeBlockAtCurrentPosition(world, ModBlocks.concrete_smooth_stairs, getStairMeta(0) | 4, 5, 1, 4, box); placeBlockAtCurrentPosition(world, ModBlocks.concrete_smooth_stairs, getStairMeta(0) | 4, 5, 1, 4, box);
placeBlockAtCurrentPosition(world, ModBlocks.deco_computer, getDecoModelMeta(0), 4, 2, 4, box); placeBlockAtCurrentPosition(world, ModBlocks.deco_computer, getDecoModelMeta(1), 4, 2, 4, box);
//clear out entryways based on path //clear out entryways based on path
if(paths[0]) fillWithAir(world, box, 7, 1, 2, 7, 2, 3); if(paths[0]) fillWithAir(world, box, 7, 1, 2, 7, 2, 3);
if(paths[1]) fillWithAir(world, box, 3, 1, 0, 4, 2, 0); if(paths[1]) fillWithAir(world, box, 3, 1, 0, 4, 2, 0);
@ -162,13 +162,17 @@ public class BunkerComponents {
public static class Corridor extends Component implements ProceduralComponent { public static class Corridor extends Component implements ProceduralComponent {
private boolean path; private boolean path;
private int[] decorations = new int[2];
public Corridor() { } public Corridor() { }
public Corridor(int componentType, StructureBoundingBox box, int coordMode) { public Corridor(int componentType, StructureBoundingBox box, int coordMode, Random rand) {
super(componentType); super(componentType);
this.boundingBox = box; this.boundingBox = box;
this.coordBaseMode = coordMode; this.coordBaseMode = coordMode;
decorations[0] = rand.nextInt(6);
decorations[1] = rand.nextInt(6);
} }
/** write to nbt */ /** write to nbt */
@ -176,6 +180,7 @@ public class BunkerComponents {
protected void func_143012_a(NBTTagCompound nbt) { protected void func_143012_a(NBTTagCompound nbt) {
super.func_143012_a(nbt); super.func_143012_a(nbt);
nbt.setBoolean("p", path); nbt.setBoolean("p", path);
nbt.setIntArray("d", decorations);
} }
/** read from nbt */ /** read from nbt */
@ -183,6 +188,7 @@ public class BunkerComponents {
protected void func_143011_b(NBTTagCompound nbt) { protected void func_143011_b(NBTTagCompound nbt) {
super.func_143011_b(nbt); super.func_143011_b(nbt);
path = nbt.getBoolean("p"); path = nbt.getBoolean("p");
decorations = nbt.getIntArray("d");
} }
@Override @Override
@ -212,18 +218,57 @@ public class BunkerComponents {
//lamps //lamps
fillWithBlocks(world, box, 2, 5, 3, 3, 5, 3, ModBlocks.reinforced_lamp_off); fillWithBlocks(world, box, 2, 5, 3, 3, 5, 3, ModBlocks.reinforced_lamp_off);
fillWithBlocks(world, box, 2, 4, 3, 3, 4, 3, ModBlocks.fan); fillWithBlocks(world, box, 2, 4, 3, 3, 4, 3, ModBlocks.fan);
//table w/ chairs //deco misc
final int stairMetaS = getStairMeta(3); final int stairMetaW = getStairMeta(0);
final int stairMetaE = getStairMeta(1);
final int stairMetaN = getStairMeta(2); final int stairMetaN = getStairMeta(2);
final int stairMetaS = getStairMeta(3);
final int decoMetaE = getDecoMeta(4);
final int decoMetaW = getDecoMeta(5);
placeBlockAtCurrentPosition(world, Blocks.oak_stairs, stairMetaS, 1, 1, 2, box); for(int i = 0; i <= 1; i++) {
placeBlockAtCurrentPosition(world, Blocks.oak_stairs, stairMetaN, 1, 1, 4, box); final int x = 1 + i * 3;
placeBlockAtCurrentPosition(world, Blocks.fence, 0, 1, 1, 3, box); switch (decorations[i]) {
placeBlockAtCurrentPosition(world, Blocks.wooden_pressure_plate, 1, 1, 2, 3, box); default: //table w/ chairs
//desk w/ computer placeBlockAtCurrentPosition(world, Blocks.oak_stairs, stairMetaS, x, 1, 2, box);
placeBlockAtCurrentPosition(world, ModBlocks.concrete_smooth_stairs, stairMetaS | 4, 4, 1, 2, box); placeBlockAtCurrentPosition(world, Blocks.oak_stairs, stairMetaN, x, 1, 4, box);
placeBlockAtCurrentPosition(world, Blocks.oak_stairs, stairMetaN, 4, 1, 4, box); placeBlockAtCurrentPosition(world, Blocks.fence, 0, x, 1, 3, box);
placeBlockAtCurrentPosition(world, ModBlocks.deco_computer, getDecoModelMeta(1), 4, 2, 2, box); placeBlockAtCurrentPosition(world, Blocks.wooden_pressure_plate, 1, x, 2, 3, box);
break;
case 1://desk w/ computer
placeBlockAtCurrentPosition(world, ModBlocks.concrete_smooth_stairs, stairMetaS | 4, x, 1, 2, box);
placeBlockAtCurrentPosition(world, Blocks.oak_stairs, stairMetaN, x, 1, 4, box);
placeBlockAtCurrentPosition(world, ModBlocks.deco_computer, getDecoModelMeta(1), x, 2, 2, box);
break;
case 2: //couch
placeBlockAtCurrentPosition(world, Blocks.oak_stairs, stairMetaS, x, 1, 2, box);
placeBlockAtCurrentPosition(world, Blocks.oak_stairs, i < 1 ? stairMetaE : stairMetaW, x, 1, 3, box);
placeBlockAtCurrentPosition(world, Blocks.oak_stairs, stairMetaN, x, 1, 4, box);
break;
case 3:
placeBlockAtCurrentPosition(world, ModBlocks.concrete_smooth_stairs, stairMetaS | 4, x, 1, 2, box);
placeBlockAtCurrentPosition(world, ModBlocks.concrete_smooth_stairs, (i < 1 ? stairMetaE : stairMetaW) | 4, x, 1, 3, box);
placeBlockAtCurrentPosition(world, ModBlocks.concrete_smooth_stairs, stairMetaN | 4, x, 1, 4, box);
placeBlockAtCurrentPosition(world, Blocks.flower_pot, 0, x, 2, 2, box);
break;
case 4:
fillWithBlocks(world, box, x, 1, 1, x, 3, 1, ModBlocks.deco_tungsten);
placeBlockAtCurrentPosition(world, ModBlocks.deco_tungsten, 0, x, 1, 3, box);
fillWithMetadataBlocks(world, box, x, 3, 2, x, 3, 4, ModBlocks.concrete_smooth_stairs, i < 1 ? stairMetaE : stairMetaW);
fillWithBlocks(world, box, x, 1, 5, x, 3, 5, ModBlocks.deco_tungsten);
fillWithMetadataBlocks(world, box, x, 1, 2, x, 2, 2, ModBlocks.tape_recorder, i < 1 ? decoMetaW : decoMetaE); //don't ask me
fillWithMetadataBlocks(world, box, x, 1, 4, x, 2, 4, ModBlocks.tape_recorder, i < 1 ? decoMetaW : decoMetaE);
placeBlockAtCurrentPosition(world, ModBlocks.deco_computer, i < 1 ? getDecoModelMeta(3) : getDecoModelMeta(2), x, 2, 3, box);
break;
case 5:
placeBlockAtCurrentPosition(world, Blocks.fence, 0, x, 1, 1, box);
placeBlockAtCurrentPosition(world, Blocks.wooden_pressure_plate, 0, x, 2, 1, box);
placeBlockAtCurrentPosition(world, ModBlocks.concrete_smooth_stairs, stairMetaS | 4, x, 1, 3, box);
placeBlockAtCurrentPosition(world, ModBlocks.concrete_smooth_stairs, stairMetaN | 4, x, 1, 4, box);
placeBlockAtCurrentPosition(world, ModBlocks.radiorec, i < 1 ? decoMetaE : decoMetaW, x, 2, 3, box);
break;
}
}
//doors //doors
placeDoor(world, box, ModBlocks.door_bunker, 1, true, rand.nextBoolean(), 2, 1, 0); placeDoor(world, box, ModBlocks.door_bunker, 1, true, rand.nextBoolean(), 2, 1, 0);
placeDoor(world, box, ModBlocks.door_bunker, 1, false, rand.nextBoolean(), 3, 1, 0); placeDoor(world, box, ModBlocks.door_bunker, 1, false, rand.nextBoolean(), 3, 1, 0);
@ -234,7 +279,7 @@ public class BunkerComponents {
public static StructureComponent findValidPlacement(List components, Random rand, int x, int y, int z, int coordMode, int type) { 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, -3, -1, 0, 6, 6, 7, coordMode); StructureBoundingBox box = ProceduralStructureStart.getComponentToAddBoundingBox(x, y, z, -3, -1, 0, 6, 6, 7, coordMode);
return box.minY > 10 && StructureComponent.findIntersecting(components, box) == null ? new Corridor(type, box, coordMode) : null; return box.minY > 10 && StructureComponent.findIntersecting(components, box) == null ? new Corridor(type, box, coordMode, rand) : null;
} }
} }