Search in sources :

Example 1 with BuildJob

use of net.tropicraft.core.common.build.world.BuildJob in project Tropicraft by Tropicraft.

the class TownKoaVillage method genSchematic.

public void genSchematic() {
    // -1;
    int yOffset = 0;
    // Build mainStructureData = new Build(spawn.getX(), spawn.getY() + yOffset, spawn.getZ(), UtilBuild.getSaveFolderPath() + "schematics" + File.separator + "koavillage");
    Build mainStructureData = new Build(spawn.getX(), spawn.getY() + yOffset, spawn.getZ(), "koavillage", new ResourceLocation(Info.MODID, "schematics/koavillage.schematic"));
    /*BlockPos coords = getBuildingCornerCoord();
		mainStructureData.map_coord_minX = coords.getX();
		mainStructureData.map_coord_minY = coords.getY();
		mainStructureData.map_coord_minZ = coords.getZ();*/
    BuildJob bj = new BuildJob(-99, spawn.getX(), spawn.getY() + yOffset, spawn.getZ(), mainStructureData);
    /*coords = getBuildingCornerCoord();
		bj.build_startX = coords.getX();
		bj.build_startY = coords.getY();
		bj.build_startZ = coords.getZ();*/
    bj.build.dim = getWorld().provider.getDimension();
    // skip air setting pass
    bj.useFirstPass = false;
    bj.useRotationBuild = true;
    bj.build_rate = 10000;
    bj.notifyFlag = 0;
    bj.neverPlaceAir = true;
    bj.setDirection(direction);
    bj.customGenCallback = this;
    // bj.blockIDsNoBuildOver.add(HostileWorlds.blockSourceStructure);
    // set stronghold height size to height of schematic
    areaHeight = mainStructureData.map_sizeY;
    BuildServerTicks.buildMan.addBuild(bj);
}
Also used : UtilBuild(net.tropicraft.core.common.build.UtilBuild) Build(net.tropicraft.core.common.build.world.Build) ResourceLocation(net.minecraft.util.ResourceLocation) BuildJob(net.tropicraft.core.common.build.world.BuildJob)

Example 2 with BuildJob

use of net.tropicraft.core.common.build.world.BuildJob in project Tropicraft by Tropicraft.

the class CommandTropicsMisc method execute.

@Override
public void execute(MinecraftServer server, ICommandSender commandSender, String[] args) throws CommandException {
    EntityPlayerMP player = this.getCommandSenderAsPlayer(commandSender);
    if (args.length > 0) {
        if (args[0].equals("village_coord")) {
            int x = 8452;
            int z = 5921;
            int relX = x - player.getPosition().getX();
            int relZ = z - player.getPosition().getZ();
            // x and z swapped on purpose
            System.out.println("pos: " + relZ + ", " + 0 + ", " + relX);
        } else if (args[0].equals("village_new")) {
            int x = MathHelper.floor(player.posX);
            int z = MathHelper.floor(player.posZ);
            int y = player.world.getHeight(x, z);
            if (y < WorldProviderTropicraft.MID_HEIGHT)
                y = WorldProviderTropicraft.MID_HEIGHT + 1;
            WorldDataInstance storage = player.world.getCapability(Tropicraft.WORLD_DATA_INSTANCE, null);
            if (storage != null) {
                TownKoaVillage village = new TownKoaVillage();
                int newID = storage.getAndIncrementKoaIDVillage();
                village.initData(newID, player.world.provider.getDimension(), new BlockPos(x, y, z));
                // TEMP!?
                village.direction = 0;
                village.initFirstTime();
                // wd.addTickingLocation(village);
                storage.addTickingLocation(village);
            }
        } else if (args[0].equals("village_try")) {
            int x = MathHelper.floor(player.posX);
            int z = MathHelper.floor(player.posZ);
            int y = player.world.getTopSolidOrLiquidBlock(new BlockPos(x, 0, z)).getY();
            if (y < WorldProviderTropicraft.MID_HEIGHT)
                y = WorldProviderTropicraft.MID_HEIGHT + 1;
            boolean result = TownKoaVillageGenHelper.hookTryGenVillage(new BlockPos(x, y, z), player.world);
            if (!result) {
                System.out.println("failed to gen village");
            }
        } else if (args[0].equals("schematic_save")) {
            try {
                String name = args[1];
                // Minecraft.getMinecraft().mouseHelper.ungrabMouseCursor();
                Vec3d vec = commandSender.getPositionVector();
                // Integer.parseInt(args[2]);
                int sx = MathHelper.floor(parseCoordinate(vec.x, args[2], false).getResult());
                // Integer.parseInt(args[3]);
                int sy = MathHelper.floor(parseCoordinate(vec.y, args[3], false).getResult());
                // Integer.parseInt(args[4]);
                int sz = MathHelper.floor(parseCoordinate(vec.z, args[4], false).getResult());
                // Integer.parseInt(args[5]);
                int ex = MathHelper.floor(parseCoordinate(vec.x, args[5], false).getResult());
                // Integer.parseInt(args[6]);
                int ey = MathHelper.floor(parseCoordinate(vec.y, args[6], false).getResult());
                // Integer.parseInt(args[7]);
                int ez = MathHelper.floor(parseCoordinate(vec.z, args[7], false).getResult());
                Build clipboardData = new Build(0, 0, 0, name, true);
                clipboardData.newFormat = true;
                clipboardData.recalculateLevelSize(sx, sy, sz, ex, ey, ez, true);
                clipboardData.scanLevelToData(player.world);
                clipboardData.writeNBT();
                commandSender.sendMessage(new TextComponentString("schematic saved to " + name + ".schematic"));
            } catch (Exception ex) {
                ex.printStackTrace();
                commandSender.sendMessage(new TextComponentString("command usage: tc_village schematic_save <filename> <start coords> <end coords>"));
                commandSender.sendMessage(new TextComponentString("eg: tc_village schematic_save myfile 0 0 0 5 5 5"));
                commandSender.sendMessage(new TextComponentString("start and end coords are inclusive"));
            }
        } else if (args[0].equals("schematic_print")) {
            try {
                Vec3d vec = commandSender.getPositionVector();
                String name = args[1];
                CoordinateArg sx = parseCoordinate(vec.x, args[2], false);
                CoordinateArg sy = parseCoordinate(vec.y, args[3], false);
                CoordinateArg sz = parseCoordinate(vec.z, args[4], false);
                int x = MathHelper.floor(sx.getResult());
                int y = MathHelper.floor(sy.getResult());
                int z = MathHelper.floor(sz.getResult());
                int direction = 0;
                if (args.length > 5) {
                    direction = Integer.parseInt(args[5]);
                }
                Build buildData = new Build(x, y, z, name, false);
                BuildJob bj = new BuildJob(-99, x, y, z, buildData);
                bj.build.dim = player.world.provider.getDimension();
                // skip air setting pass
                bj.useFirstPass = false;
                bj.useRotationBuild = true;
                bj.build_rate = 10000;
                bj.notifyFlag = 2;
                bj.setDirection(direction);
                // bj.customGenCallback = this;
                // bj.blockIDsNoBuildOver.add(HostileWorlds.blockSourceStructure);
                BuildServerTicks.buildMan.addBuild(bj);
                commandSender.sendMessage(new TextComponentString("printing schematic"));
            } catch (Exception ex) {
                ex.printStackTrace();
                commandSender.sendMessage(new TextComponentString("command usage: tc_village schematic_print <filename> <start coords>"));
                commandSender.sendMessage(new TextComponentString("eg: tc_village schematic_print myfile 5 5 5"));
            }
        } else if (args[0].equals("entities")) {
            HashMap<ResourceLocation, Integer> lookupCounts = new HashMap<>();
            for (Entity ent : player.world.loadedEntityList) {
                if (ent instanceof EntityLivingBase) {
                    ResourceLocation key = EntityList.getKey(ent.getClass());
                    lookupCounts.merge(key, 1, (a, b) -> a + b);
                }
            }
            player.sendMessage(new TextComponentString("Entity counts: "));
            int count = 0;
            for (Map.Entry<ResourceLocation, Integer> entry : lookupCounts.entrySet()) {
                ResourceLocation name = entry.getKey();
                player.sendMessage(new TextComponentString(name + ": " + entry.getValue()));
                count += entry.getValue();
            }
            player.sendMessage(new TextComponentString("total: " + count));
        } else if (args[0].equals("mount")) {
            float clDist = 99999;
            Entity clEntity = null;
            String name = args[1];
            boolean reverse = false;
            boolean playerMode = false;
            Class clazz = EntityList.getClass(new ResourceLocation(name));
            if (clazz == null) {
                clazz = EntityPlayer.class;
                playerMode = true;
            }
            if (args.length > 2) {
                reverse = args[2].equals("reverse");
                // no greifing
                if (reverse) {
                    playerMode = false;
                }
            }
            if (clazz != null) {
                List<Entity> listEnts = player.world.getEntitiesWithinAABB(clazz, player.getEntityBoundingBox().grow(15, 15, 15));
                for (Entity ent : listEnts) {
                    float dist = player.getDistance(ent);
                    if (dist < clDist) {
                        if (!playerMode) {
                            clDist = dist;
                            clEntity = ent;
                        } else {
                            if (player.getName().equals(name)) {
                                clEntity = ent;
                                break;
                            }
                        }
                    }
                }
            }
            if (clEntity != null) {
                if (reverse) {
                    clEntity.startRiding(player);
                } else {
                    player.startRiding(clEntity);
                }
            }
        } else if (args[0].equals("enc_unlock")) {
            for (int i = 0; i < Tropicraft.encyclopedia.getPageCount(); i++) {
                Tropicraft.encyclopedia.markPageAsNewlyVisible(i);
            }
        }
    }
}
Also used : WorldDataInstance(net.tropicraft.core.common.capability.WorldDataInstance) WorldProviderTropicraft(net.tropicraft.core.common.dimension.WorldProviderTropicraft) HashMap(java.util.HashMap) TownKoaVillage(net.tropicraft.core.common.worldgen.village.TownKoaVillage) BuildJob(net.tropicraft.core.common.build.world.BuildJob) EntityPlayerMP(net.minecraft.entity.player.EntityPlayerMP) CommandException(net.minecraft.command.CommandException) MinecraftServer(net.minecraft.server.MinecraftServer) Vec3d(net.minecraft.util.math.Vec3d) Map(java.util.Map) Entity(net.minecraft.entity.Entity) BuildServerTicks(net.tropicraft.core.common.build.BuildServerTicks) TownKoaVillageGenHelper(net.tropicraft.core.common.worldgen.village.TownKoaVillageGenHelper) EntityList(net.minecraft.entity.EntityList) CommandBase(net.minecraft.command.CommandBase) BlockPos(net.minecraft.util.math.BlockPos) Tropicraft(net.tropicraft.Tropicraft) Build(net.tropicraft.core.common.build.world.Build) TextComponentString(net.minecraft.util.text.TextComponentString) List(java.util.List) ICommandSender(net.minecraft.command.ICommandSender) EntityLivingBase(net.minecraft.entity.EntityLivingBase) EntityPlayer(net.minecraft.entity.player.EntityPlayer) MathHelper(net.minecraft.util.math.MathHelper) ResourceLocation(net.minecraft.util.ResourceLocation) Entity(net.minecraft.entity.Entity) HashMap(java.util.HashMap) TextComponentString(net.minecraft.util.text.TextComponentString) Vec3d(net.minecraft.util.math.Vec3d) CommandException(net.minecraft.command.CommandException) TextComponentString(net.minecraft.util.text.TextComponentString) Build(net.tropicraft.core.common.build.world.Build) ResourceLocation(net.minecraft.util.ResourceLocation) EntityLivingBase(net.minecraft.entity.EntityLivingBase) EntityPlayerMP(net.minecraft.entity.player.EntityPlayerMP) BlockPos(net.minecraft.util.math.BlockPos) TownKoaVillage(net.tropicraft.core.common.worldgen.village.TownKoaVillage) BuildJob(net.tropicraft.core.common.build.world.BuildJob) WorldDataInstance(net.tropicraft.core.common.capability.WorldDataInstance)

Aggregations

ResourceLocation (net.minecraft.util.ResourceLocation)2 Build (net.tropicraft.core.common.build.world.Build)2 BuildJob (net.tropicraft.core.common.build.world.BuildJob)2 HashMap (java.util.HashMap)1 List (java.util.List)1 Map (java.util.Map)1 CommandBase (net.minecraft.command.CommandBase)1 CommandException (net.minecraft.command.CommandException)1 ICommandSender (net.minecraft.command.ICommandSender)1 Entity (net.minecraft.entity.Entity)1 EntityList (net.minecraft.entity.EntityList)1 EntityLivingBase (net.minecraft.entity.EntityLivingBase)1 EntityPlayer (net.minecraft.entity.player.EntityPlayer)1 EntityPlayerMP (net.minecraft.entity.player.EntityPlayerMP)1 MinecraftServer (net.minecraft.server.MinecraftServer)1 BlockPos (net.minecraft.util.math.BlockPos)1 MathHelper (net.minecraft.util.math.MathHelper)1 Vec3d (net.minecraft.util.math.Vec3d)1 TextComponentString (net.minecraft.util.text.TextComponentString)1 Tropicraft (net.tropicraft.Tropicraft)1