/******************************************************************************* * AbyssalCraft * Copyright (c) 2012 - 2017 Shinoow. * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Lesser Public License v3 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/lgpl-3.0.txt * * Contributors: * Shinoow - implementation ******************************************************************************/ package com.shinoow.abyssalcraft.common.structures; import java.util.Random; import net.minecraft.block.material.Material; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraft.world.gen.feature.WorldGenerator; import com.shinoow.abyssalcraft.api.block.ACBlocks; public class StructureShoggothPit extends WorldGenerator { public StructureShoggothPit() {} @Override public boolean generate(World world, Random rand, BlockPos pos) { while(world.isAirBlock(pos) && pos.getY() > 2) pos = pos.down(); if(pos.getY() <= 1) return false; if(world.getBlockState(pos).getMaterial() == Material.LEAVES || world.getBlockState(pos).getMaterial() == Material.WOOD || world.getBlockState(pos).getMaterial() == Material.VINE || world.getBlockState(pos).getMaterial() == Material.CACTUS) return false; else { int x = pos.getX(); int y = pos.getY(); int z = pos.getZ(); for(int i = -5; i < 6; i++) for(int j = 0; j < 18; j++) for(int k = 0; k < 5; k++) world.setBlockToAir(new BlockPos(x + i, y - 2 - k, z - 9 - j)); for(int i = -3; i < 4; i++) for(int j = 0; j < 6; j++){ world.setBlockToAir(new BlockPos(x + i, y, z - 1 - j)); world.setBlockToAir(new BlockPos(x + i, y - 1, z - 2 - j)); world.setBlockToAir(new BlockPos(x + i, y - 2, z - 3 - j)); world.setBlockToAir(new BlockPos(x + i, y - 3, z - 4 - j)); world.setBlockToAir(new BlockPos(x + i, y - 4, z - 5 - j)); world.setBlockToAir(new BlockPos(x + i, y - 5, z - 6 - j)); world.setBlockToAir(new BlockPos(x + i, y - 6, z - 7 - j)); } for(int i = -4; i < 5; i++){ world.setBlockState(new BlockPos(x + i, y, z), ACBlocks.monolith_stone.getDefaultState(), 2); world.setBlockState(new BlockPos(x + i, y, z - 7), ACBlocks.monolith_stone.getDefaultState(), 2); world.setBlockState(new BlockPos(x + i, y - 1, z - 1), ACBlocks.monolith_stone.getDefaultState(), 2); world.setBlockState(new BlockPos(x + i, y - 1, z - 8), ACBlocks.monolith_stone.getDefaultState(), 2); world.setBlockState(new BlockPos(x + i, y - 2, z - 2), ACBlocks.monolith_stone.getDefaultState(), 2); world.setBlockState(new BlockPos(x + i, y - 3, z - 3), ACBlocks.monolith_stone.getDefaultState(), 2); world.setBlockState(new BlockPos(x + i, y - 4, z - 4), ACBlocks.monolith_stone.getDefaultState(), 2); world.setBlockState(new BlockPos(x + i, y - 5, z - 5), ACBlocks.monolith_stone.getDefaultState(), 2); world.setBlockState(new BlockPos(x + i, y - 6, z - 6), ACBlocks.monolith_stone.getDefaultState(), 2); world.setBlockState(new BlockPos(x + i, y - 7, z - 7), ACBlocks.monolith_stone.getDefaultState(), 2); } for(int i = 1; i < 7; i++){ world.setBlockState(new BlockPos(x - 4, y, z - i), ACBlocks.monolith_stone.getDefaultState(), 2); world.setBlockState(new BlockPos(x + 4, y, z - i), ACBlocks.monolith_stone.getDefaultState(), 2); world.setBlockState(new BlockPos(x - 4, y - 1, z - 1 - i), ACBlocks.monolith_stone.getDefaultState(), 2); world.setBlockState(new BlockPos(x + 4, y - 1, z - 1 - i), ACBlocks.monolith_stone.getDefaultState(), 2); } for(int i = 2; i < 8; i++){ world.setBlockState(new BlockPos(x - 4, y - 2, z - i), ACBlocks.monolith_stone.getDefaultState(), 2); world.setBlockState(new BlockPos(x + 4, y - 2, z - i), ACBlocks.monolith_stone.getDefaultState(), 2); } for(int i = 3; i < 8; i++){ world.setBlockState(new BlockPos(x - 4, y - 3, z - i), ACBlocks.monolith_stone.getDefaultState(), 2); world.setBlockState(new BlockPos(x + 4, y - 3, z - i), ACBlocks.monolith_stone.getDefaultState(), 2); } for(int i = 4; i < 8; i++){ world.setBlockState(new BlockPos(x - 4, y - 4, z - i), ACBlocks.monolith_stone.getDefaultState(), 2); world.setBlockState(new BlockPos(x + 4, y - 4, z - i), ACBlocks.monolith_stone.getDefaultState(), 2); } for(int i = 5; i < 8; i++){ world.setBlockState(new BlockPos(x - 4, y - 5, z - i), ACBlocks.monolith_stone.getDefaultState(), 2); world.setBlockState(new BlockPos(x + 4, y - 5, z - i), ACBlocks.monolith_stone.getDefaultState(), 2); } for(int i = 6; i < 8; i++){ world.setBlockState(new BlockPos(x - 4, y - 6, z - i), ACBlocks.monolith_stone.getDefaultState(), 2); world.setBlockState(new BlockPos(x + 4, y - 6, z - i), ACBlocks.monolith_stone.getDefaultState(), 2); } for(int i = 2; i < 7; i++){ world.setBlockState(new BlockPos(x - 5, y - i, z - 8), ACBlocks.monolith_stone.getDefaultState(), 2); world.setBlockState(new BlockPos(x - 4, y - i, z - 8), ACBlocks.monolith_stone.getDefaultState(), 2); world.setBlockState(new BlockPos(x + 5, y - i, z - 8), ACBlocks.monolith_stone.getDefaultState(), 2); world.setBlockState(new BlockPos(x + 4, y - i, z - 8), ACBlocks.monolith_stone.getDefaultState(), 2); } for(int i = -6; i < 7; i++) for(int j = 0; j < 19; j++){ world.setBlockState(new BlockPos(x + i, y - 1, z - 8 - j), ACBlocks.monolith_stone.getDefaultState(), 2); world.setBlockState(new BlockPos(x + i, y - 7, z - 8 - j), ACBlocks.monolith_stone.getDefaultState(), 2); } for(int i = 0; i < 19; i++) for(int j = 0; j < 7; j++){ world.setBlockState(new BlockPos(x - 6, y - 1 - j, z - 8 - i), ACBlocks.monolith_stone.getDefaultState(), 2); world.setBlockState(new BlockPos(x + 6, y - 1 - j, z - 8 - i), ACBlocks.monolith_stone.getDefaultState(), 2); } for(int i = -6; i < 7; i++) for(int j = 0; j < 7; j++) world.setBlockState(new BlockPos(x + i, y - 1 - j, z - 27), ACBlocks.monolith_stone.getDefaultState(), 2); for(int i = 0; i < 2; i++){ world.setBlockState(new BlockPos(x - 5, y - 5 - i, z - 10), ACBlocks.monolith_stone.getDefaultState(), 2); world.setBlockState(new BlockPos(x - 5, y - 5 - i, z - 12), ACBlocks.monolith_stone.getDefaultState(), 2); world.setBlockState(new BlockPos(x - 5, y - 5 - i, z - 14), ACBlocks.monolith_stone.getDefaultState(), 2); world.setBlockState(new BlockPos(x - 5, y - 5 - i, z - 16), ACBlocks.monolith_stone.getDefaultState(), 2); world.setBlockState(new BlockPos(x + 5, y - 5 - i, z - 10), ACBlocks.monolith_stone.getDefaultState(), 2); world.setBlockState(new BlockPos(x + 5, y - 5 - i, z - 12), ACBlocks.monolith_stone.getDefaultState(), 2); world.setBlockState(new BlockPos(x + 5, y - 5 - i, z - 14), ACBlocks.monolith_stone.getDefaultState(), 2); world.setBlockState(new BlockPos(x + 5, y - 5 - i, z - 16), ACBlocks.monolith_stone.getDefaultState(), 2); } for(int i = -4; i < 5; i++) for(int j = 0; j < 9; j++) world.setBlockState(new BlockPos(x + i, y - 8, z - 17 - j), ACBlocks.monolith_stone.getDefaultState(), 2); for(int i = -3; i < 4; i++) for(int j = 0; j < 7; j++) world.setBlockState(new BlockPos(x + i, y - 9, z - 18 - j), ACBlocks.monolith_stone.getDefaultState(), 2); for(int i = -2; i < 3; i++) for(int j = 0; j < 9; j++) world.setBlockToAir(new BlockPos(x + i, y - 7, z - 17 - j)); for(int i = 0; i < 7; i++){ world.setBlockToAir(new BlockPos(x - 3, y - 7, z - 18 - i)); world.setBlockToAir(new BlockPos(x + 3, y - 7, z - 18 - i)); } for(int i = 0; i < 5; i++){ world.setBlockToAir(new BlockPos(x - 4, y - 7, z - 19 - i)); world.setBlockToAir(new BlockPos(x + 4, y - 7, z - 19 - i)); } for(int i = -2; i < 3; i++) for(int j = 0; j < 7; j++) world.setBlockState(new BlockPos(x + i, y - 8, z - 18 - j), ACBlocks.shoggoth_biomass.getDefaultState(), 2); for(int i = 0; i < 5; i++){ world.setBlockState(new BlockPos(x - 3, y - 8, z - 19 - i), ACBlocks.shoggoth_biomass.getDefaultState(), 2); world.setBlockState(new BlockPos(x + 3, y - 8, z - 19 - i), ACBlocks.shoggoth_biomass.getDefaultState(), 2); } return true; } } }