Hbm-s-Nuclear-Tech-GIT/com/hbm/world/generator/CellularDungeonRoom.java
2020-04-11 19:46:07 +02:00

68 lines
2.4 KiB
Java

package com.hbm.world.generator;
import net.minecraft.init.Blocks;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
public class CellularDungeonRoom {
protected CellularDungeon parent;
protected CellularDungeonRoom daisyChain = null;
protected ForgeDirection daisyDirection = ForgeDirection.UNKNOWN;
public CellularDungeonRoom(CellularDungeon parent) {
this.parent = parent;
}
//per generation, only one door can be made. rooms having multiple doors will be the consequence of daisychaining.
//the initial room will use an invalid type to not spawn any doors.
public void generate(World world, int x, int y, int z, ForgeDirection door) {
generateMain(world, x, y, z);
for(int i = 2; i < 6; i++) {
ForgeDirection dir = ForgeDirection.getOrientation(i);
generateWall(world, x, y, z, dir, dir == door);
}
}
public void generateMain(World world, int x, int y, int z) {
DungeonToolbox.generateBox(world, x, y, z, parent.width, 1, parent.width, parent.floor);
DungeonToolbox.generateBox(world, x, y + 1, z, parent.width, parent.height - 1, parent.width, Blocks.air);
DungeonToolbox.generateBox(world, x, y + parent.height - 1, z, parent.width, 1, parent.width, parent.ceiling);
}
public void generateWall(World world, int x, int y, int z, ForgeDirection wall, boolean door) {
if(wall == ForgeDirection.NORTH) {
DungeonToolbox.generateBox(world, x, y + 1, z, parent.width, parent.height - 2, 1, parent.wall);
if(door)
DungeonToolbox.generateBox(world, x + parent.width / 2, y + 1, z, 1, 2, 1, Blocks.air);
}
if(wall == ForgeDirection.SOUTH) {
DungeonToolbox.generateBox(world, x, y + 1, z + parent.width - 1, parent.width, parent.height - 2, 1, parent.wall);
if(door)
DungeonToolbox.generateBox(world, x + parent.width / 2, y + 1, z + parent.width - 1, 1, 2, 1, Blocks.air);
}
if(wall == ForgeDirection.WEST) {
DungeonToolbox.generateBox(world, x, y + 1, z, 1, parent.height - 2, parent.width, parent.wall);
if(door)
DungeonToolbox.generateBox(world, x, y + 1, z + parent.width / 2, 1, 2, 1, Blocks.air);
}
if(wall == ForgeDirection.EAST) {
DungeonToolbox.generateBox(world, x + parent.width - 1, y + 1, z, 1, parent.height - 2, parent.width, parent.wall);
if(door)
DungeonToolbox.generateBox(world, x + parent.width - 1, y + 1, z + parent.width / 2, 1, 2, 1, Blocks.air);
}
}
}