Search in sources :

Example 1 with TownKoaVillage

use of net.tropicraft.core.common.worldgen.village.TownKoaVillage 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)

Example 2 with TownKoaVillage

use of net.tropicraft.core.common.worldgen.village.TownKoaVillage in project Tropicraft by Tropicraft.

the class EntityKoaBase method postSpawnGenderFix.

public void postSpawnGenderFix() {
    TownKoaVillage village = getVillage();
    if (village != null) {
        // gender balencing, not factoring in orientation
        int maleCount = 0;
        int femaleCount = 0;
        for (int ordinal : village.lookupEntityToGender.values()) {
            if (EntityKoaBase.Genders.MALE.ordinal() == ordinal) {
                maleCount++;
            } else if (EntityKoaBase.Genders.FEMALE.ordinal() == ordinal) {
                femaleCount++;
            }
        }
        if (maleCount < femaleCount) {
            // System.out.println("force set to male");
            setGender(EntityKoaBase.Genders.MALE);
        } else {
            // System.out.println("force set to female");
            setGender(EntityKoaBase.Genders.FEMALE);
        }
    // System.out.println("population size: " + village.getPopulationSize() + ", males: " + maleCount + ", females: " + femaleCount);
    }
}
Also used : TownKoaVillage(net.tropicraft.core.common.worldgen.village.TownKoaVillage)

Aggregations

TownKoaVillage (net.tropicraft.core.common.worldgen.village.TownKoaVillage)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 ResourceLocation (net.minecraft.util.ResourceLocation)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 BuildServerTicks (net.tropicraft.core.common.build.BuildServerTicks)1