use of net.minecraft.server.MinecraftServer in project NetherEx by LogicTechCorp.
the class WorldGenAirStructure method generate.
@Override
public boolean generate(World world, Random rand, BlockPos pos) {
rand = world.getChunkFromBlockCoords(pos).getRandomWithSeed(world.getSeed());
Mirror[] mirrors = Mirror.values();
Rotation[] rotations = Rotation.values();
Mirror mirror = mirrors[rand.nextInt(mirrors.length)];
Rotation rotation = rotations[rand.nextInt(rotations.length)];
MinecraftServer server = world.getMinecraftServer();
TemplateManager manager = world.getSaveHandler().getStructureTemplateManager();
Template template = manager.getTemplate(server, WeightedUtil.getRandomStructure(rand, variants));
PlacementSettings placementSettings = new PlacementSettings().setMirror(mirror).setRotation(rotation).setReplacedBlock(Blocks.STRUCTURE_VOID).setRandom(rand);
BlockPos structureSize = Template.transformedBlockPos(placementSettings, template.getSize());
BlockPos newPos = new BlockPos(pos.getX() - structureSize.getX() / 2, 112, pos.getZ() - structureSize.getZ() / 2);
BlockPos spawnPos = WorldGenUtil.getSuitableAirPos(world, newPos, structureSize);
if (!spawnPos.equals(BlockPos.ORIGIN)) {
WorldGenUtil.generateStructure(world, spawnPos, rand, template, placementSettings, lootTables, spawnerMobs);
return true;
}
return false;
}
use of net.minecraft.server.MinecraftServer in project NetherEx by LogicTechCorp.
the class WorldGenGroundStructure method generate.
@Override
public boolean generate(World world, Random rand, BlockPos pos) {
rand = world.getChunkFromBlockCoords(pos).getRandomWithSeed(world.getSeed());
Mirror[] mirrors = Mirror.values();
Rotation[] rotations = Rotation.values();
Mirror mirror = mirrors[rand.nextInt(mirrors.length)];
Rotation rotation = rotations[rand.nextInt(rotations.length)];
MinecraftServer server = world.getMinecraftServer();
TemplateManager manager = world.getSaveHandler().getStructureTemplateManager();
Template template = manager.getTemplate(server, WeightedUtil.getRandomStructure(rand, variants));
PlacementSettings placementSettings = new PlacementSettings().setMirror(mirror).setRotation(rotation).setReplacedBlock(Blocks.STRUCTURE_VOID).setRandom(rand);
BlockPos structureSize = Template.transformedBlockPos(placementSettings, template.getSize());
BlockPos newPos = new BlockPos(pos.getX() - structureSize.getX() / 2, 96, pos.getZ() - structureSize.getZ() / 2);
BlockPos spawnPos = WorldGenUtil.getSuitableGroundPos(world, newPos, allowedBlocks, structureSize, 0.8F);
if (!spawnPos.equals(BlockPos.ORIGIN)) {
WorldGenUtil.generateStructure(world, spawnPos, rand, template, placementSettings, lootTables, spawnerMobs);
return true;
}
return false;
}
use of net.minecraft.server.MinecraftServer in project minecolonies by Minecolonies.
the class ItemScanTool method saveStructure.
/**
* Scan the structure and save it to the disk.
*
* @param world Current world.
* @param from First corner.
* @param to Second corner.
* @param player causing this action.
*/
private static void saveStructure(@Nullable final World world, @Nullable final BlockPos from, @Nullable final BlockPos to, @NotNull final EntityPlayer player) {
//todo if on clientSide check if isRemote and if it is -> don't seed message, execute right away.
if (world == null || from == null || to == null) {
throw new IllegalArgumentException("Invalid method call, arguments can't be null. Contact a developer.");
}
final BlockPos blockpos = new BlockPos(Math.min(from.getX(), to.getX()), Math.min(from.getY(), to.getY()), Math.min(from.getZ(), to.getZ()));
final BlockPos blockpos1 = new BlockPos(Math.max(from.getX(), to.getX()), Math.max(from.getY(), to.getY()), Math.max(from.getZ(), to.getZ()));
final BlockPos size = blockpos1.subtract(blockpos).add(1, 1, 1);
final WorldServer worldserver = (WorldServer) world;
final MinecraftServer minecraftserver = world.getMinecraftServer();
final TemplateManager templatemanager = worldserver.getStructureTemplateManager();
final long currentMillis = System.currentTimeMillis();
final String currentMillisString = Long.toString(currentMillis);
final String fileName = "/minecolonies/scans/" + LanguageHandler.format("item.scepterSteel.scanFormat", "", currentMillisString + ".nbt");
final Template template = templatemanager.getTemplate(minecraftserver, new ResourceLocation(fileName));
template.takeBlocksFromWorld(world, blockpos, size, true, Blocks.STRUCTURE_VOID);
template.setAuthor(Constants.MOD_ID);
MineColonies.getNetwork().sendTo(new SaveScanMessage(template.writeToNBT(new NBTTagCompound()), currentMillis), (EntityPlayerMP) player);
}
use of net.minecraft.server.MinecraftServer in project Pearcel-Mod by MiningMark48.
the class StructureGenPearcel1 method generateStructure.
public static void generateStructure(WorldServer world, BlockPos pos, Random random) {
MinecraftServer server = world.getMinecraftServer();
Template template = world.getStructureTemplateManager().getTemplate(server, STRUCTURE);
PlacementSettings settings = new PlacementSettings();
settings.setRotation(Rotation.NONE);
template.addBlocksToWorld(world, pos, settings);
Map<BlockPos, String> dataBlocks = template.getDataBlocks(pos, settings);
for (Map.Entry<BlockPos, String> entry : dataBlocks.entrySet()) {
String[] tokens = entry.getValue().split(" ");
if (tokens.length == 0)
return;
BlockPos dataPos = entry.getKey();
String s = tokens[0].toLowerCase();
if (s.equals("lootchest")) {
String chestOrientation = tokens[1];
EnumFacing chestFacing = settings.getRotation().rotate(EnumFacing.byName(chestOrientation));
IBlockState chestState = Blocks.CHEST.getDefaultState().withProperty(BlockChest.FACING, chestFacing);
world.setBlockState(dataPos, chestState);
TileEntity tile = world.getTileEntity(dataPos);
if (tile != null && tile instanceof TileEntityLockableLoot)
((TileEntityLockableLoot) tile).setLootTable(LOOT, random.nextLong());
} else if (s.equals("lootchest2")) {
String chestOrientation = tokens[1];
EnumFacing chestFacing = settings.getRotation().rotate(EnumFacing.byName(chestOrientation));
IBlockState chestState = Blocks.CHEST.getDefaultState().withProperty(BlockChest.FACING, chestFacing);
world.setBlockState(dataPos, chestState);
TileEntity tile = world.getTileEntity(dataPos);
if (tile != null && tile instanceof TileEntityLockableLoot)
((TileEntityLockableLoot) tile).setLootTable(LOOT2, random.nextLong());
}
}
}
use of net.minecraft.server.MinecraftServer in project Pearcel-Mod by MiningMark48.
the class StructureGenPearcel2 method generateStructure.
public static void generateStructure(WorldServer world, BlockPos pos, Random random) {
MinecraftServer server = world.getMinecraftServer();
Template template = world.getStructureTemplateManager().getTemplate(server, STRUCTURE);
PlacementSettings settings = new PlacementSettings();
settings.setRotation(Rotation.NONE);
template.addBlocksToWorld(world, pos, settings);
Map<BlockPos, String> dataBlocks = template.getDataBlocks(pos, settings);
for (Map.Entry<BlockPos, String> entry : dataBlocks.entrySet()) {
String[] tokens = entry.getValue().split(" ");
if (tokens.length == 0)
return;
BlockPos dataPos = entry.getKey();
String s = tokens[0].toLowerCase();
if (s.equals("lootchest")) {
String chestOrientation = tokens[1];
EnumFacing chestFacing = settings.getRotation().rotate(EnumFacing.byName(chestOrientation));
IBlockState chestState = Blocks.CHEST.getDefaultState().withProperty(BlockChest.FACING, chestFacing);
world.setBlockState(dataPos, chestState);
TileEntity tile = world.getTileEntity(dataPos);
if (tile != null && tile instanceof TileEntityLockableLoot)
((TileEntityLockableLoot) tile).setLootTable(LOOT, random.nextLong());
} else if (s.equals("lootchest2")) {
String chestOrientation = tokens[1];
EnumFacing chestFacing = settings.getRotation().rotate(EnumFacing.byName(chestOrientation));
IBlockState chestState = Blocks.CHEST.getDefaultState().withProperty(BlockChest.FACING, chestFacing);
world.setBlockState(dataPos, chestState);
TileEntity tile = world.getTileEntity(dataPos);
if (tile != null && tile instanceof TileEntityLockableLoot)
((TileEntityLockableLoot) tile).setLootTable(LOOT2, random.nextLong());
} else if (s.equals("epet")) {
int epetChance = random.nextInt(1000);
int topChance = random.nextInt(500);
IBlockState epetState = ModBlocks.pearcel_beacon.getDefaultState();
if (epetChance == 0) {
world.setBlockState(dataPos, epetState);
} else if (topChance == 0) {
world.setBlockState(dataPos, Blocks.OBSIDIAN.getDefaultState());
for (int i = 0; i <= 3; i++) {
world.setBlockState(dataPos.add(0, i + 1, 0), Blocks.GOLD_BLOCK.getDefaultState());
}
} else {
String chestOrientation = tokens[1];
EnumFacing chestFacing = settings.getRotation().rotate(EnumFacing.byName(chestOrientation));
IBlockState chestState = Blocks.CHEST.getDefaultState().withProperty(BlockChest.FACING, chestFacing);
world.setBlockState(dataPos, chestState);
TileEntity tile = world.getTileEntity(dataPos);
if (tile != null && tile instanceof TileEntityLockableLoot)
((TileEntityLockableLoot) tile).setLootTable(LOOT, random.nextLong());
}
}
}
}
Aggregations