Search in sources :

Example 66 with CommandException

use of net.minecraft.command.CommandException in project RecurrentComplex by Ivorforce.

the class CommandPreview method execute.

@Override
public void execute(MinecraftServer server, ICommandSender commandSender, String[] args) throws CommandException {
    Parameters parameters = Parameters.of(args, expect()::declare);
    EntityPlayer player = getCommandSenderAsPlayer(commandSender);
    RCEntityInfo RCEntityInfo = RCCommands.getStructureEntityInfo(player, null);
    Operation.PreviewType previewType = parameters.get(0).map(Operation.PreviewType::find, s -> RecurrentComplex.translations.commandException("commands.rcpreview.invalid")).require();
    RCEntityInfo.setPreviewType(previewType);
    RCEntityInfo.sendPreviewTypeToClients(player);
    commandSender.sendMessage(RecurrentComplex.translations.format("commands.rcpreview.success", previewType.key));
}
Also used : CommandException(net.minecraft.command.CommandException) MinecraftServer(net.minecraft.server.MinecraftServer) Expect(ivorius.mcopts.commands.parameters.expect.Expect) ICommandSender(net.minecraft.command.ICommandSender) Operation(ivorius.reccomplex.operation.Operation) EntityPlayer(net.minecraft.entity.player.EntityPlayer) RCCommands(ivorius.reccomplex.commands.RCCommands) RCEntityInfo(ivorius.reccomplex.capability.RCEntityInfo) RecurrentComplex(ivorius.reccomplex.RecurrentComplex) ivorius.mcopts.commands.parameters(ivorius.mcopts.commands.parameters) RCConfig(ivorius.reccomplex.RCConfig) CommandExpecting(ivorius.mcopts.commands.CommandExpecting) EntityPlayer(net.minecraft.entity.player.EntityPlayer) RCEntityInfo(ivorius.reccomplex.capability.RCEntityInfo) Operation(ivorius.reccomplex.operation.Operation)

Example 67 with CommandException

use of net.minecraft.command.CommandException in project RecurrentComplex by Ivorforce.

the class CommandDecorate method execute.

@Override
public void execute(MinecraftServer server, ICommandSender commandSender, String[] args) throws CommandException {
    Parameters parameters = Parameters.of(args, expect()::declare);
    BlockSurfaceArea area = new BlockSurfaceArea(parameters.get(0).to(IvP.surfacePos(commandSender.getPosition(), false)).require(), parameters.get(2).to(IvP.surfacePos(commandSender.getPosition(), false)).require());
    BlockSurfaceArea chunkArea = new BlockSurfaceArea(getChunkPos(area.getPoint1()), getChunkPos(area.getPoint2()));
    Predicate<Structure> structurePredicate = parameters.get("exp").to(RCP::structurePredicate).optional().orElse(structureInfo -> true);
    WorldServer world = (WorldServer) commandSender.getEntityWorld();
    if (parameters.has("one")) {
        BlockSurfacePos lower = area.getLowerCorner();
        int[] size = area.areaSize();
        BlockPos pos = new BlockPos(lower.x + world.rand.nextInt(size[0]), 0, lower.z + world.rand.nextInt(size[1]));
        if (!WorldGenStructures.generateOneStructureInChunk(world.rand, new ChunkPos(pos), world, world.getBiome(pos)))
            throw RecurrentComplex.translations.commandException("commands.rcdecorateone.none");
    } else
        chunkArea.forEach(coord -> WorldGenStructures.decorate(world, world.rand, new ChunkPos(coord.x, coord.z), structurePredicate));
}
Also used : BlockSurfacePos(ivorius.ivtoolkit.blocks.BlockSurfacePos) MCE(ivorius.mcopts.commands.parameters.expect.MCE) Predicate(java.util.function.Predicate) Structure(ivorius.reccomplex.world.gen.feature.structure.Structure) ChunkPos(net.minecraft.util.math.ChunkPos) BlockPos(net.minecraft.util.math.BlockPos) CommandExpecting(ivorius.mcopts.commands.CommandExpecting) RCConfig(ivorius.reccomplex.RCConfig) RCE(ivorius.reccomplex.commands.parameters.expect.RCE) BlockSurfaceArea(ivorius.ivtoolkit.blocks.BlockSurfaceArea) RCP(ivorius.reccomplex.commands.parameters.RCP) CommandException(net.minecraft.command.CommandException) MinecraftServer(net.minecraft.server.MinecraftServer) Expect(ivorius.mcopts.commands.parameters.expect.Expect) ICommandSender(net.minecraft.command.ICommandSender) IvP(ivorius.reccomplex.commands.parameters.IvP) WorldGenStructures(ivorius.reccomplex.world.gen.feature.WorldGenStructures) RecurrentComplex(ivorius.reccomplex.RecurrentComplex) WorldServer(net.minecraft.world.WorldServer) Nonnull(javax.annotation.Nonnull) Parameters(ivorius.mcopts.commands.parameters.Parameters) Parameters(ivorius.mcopts.commands.parameters.Parameters) BlockSurfacePos(ivorius.ivtoolkit.blocks.BlockSurfacePos) BlockSurfaceArea(ivorius.ivtoolkit.blocks.BlockSurfaceArea) WorldServer(net.minecraft.world.WorldServer) BlockPos(net.minecraft.util.math.BlockPos) ChunkPos(net.minecraft.util.math.ChunkPos) Structure(ivorius.reccomplex.world.gen.feature.structure.Structure) RCP(ivorius.reccomplex.commands.parameters.RCP)

Example 68 with CommandException

use of net.minecraft.command.CommandException in project RecurrentComplex by Ivorforce.

the class CommandWrite method execute.

@Override
public void execute(MinecraftServer server, ICommandSender commandSender, String[] args) throws CommandException {
    Parameters parameters = Parameters.of(args, expect()::declare);
    String adapterID = parameters.get(0).require();
    if (!RecurrentComplex.saver.has(adapterID))
        throw RecurrentComplex.translations.commandException("commands.rcsave.noregistry");
    ResourceDirectory directory = parameters.get("directory").to(RCP::resourceDirectory).optional().orElse(ResourceDirectory.ACTIVE);
    Optional<FileSaverAdapter<?>> adapterOptional = Optional.ofNullable(RecurrentComplex.saver.get(adapterID));
    Set<String> ids = adapterOptional.map(a -> a.getRegistry().ids()).orElse(Collections.emptySet());
    ResourceExpression resourceExpression = ExpressionCache.of(new ResourceExpression(id -> adapterOptional.map(a -> a.getRegistry().has(id)).orElse(false)), parameters.get(1).rest(NaP::join).require());
    int saved = 0, failed = 0;
    for (String id : ids) {
        if (!resourceExpression.test(new RawResourceLocation(adapterOptional.map(a -> a.getRegistry().status(id).getDomain()).orElseThrow(IllegalStateException::new), id)))
            continue;
        boolean success = RecurrentComplex.saver.trySave(directory.toPath(), adapterID, id);
        if (success)
            saved++;
        else
            failed++;
    }
    commandSender.sendMessage(RecurrentComplex.translations.format("commands.rcsaveall.result", saved, RCTextStyle.path(directory), failed));
    RCCommands.tryReload(RecurrentComplex.loader, LeveledRegistry.Level.CUSTOM);
    RCCommands.tryReload(RecurrentComplex.loader, LeveledRegistry.Level.SERVER);
}
Also used : ExpressionCache(ivorius.reccomplex.utils.algebra.ExpressionCache) LeveledRegistry(ivorius.reccomplex.files.loading.LeveledRegistry) RCCommands(ivorius.reccomplex.commands.RCCommands) Set(java.util.Set) FileSaverAdapter(ivorius.reccomplex.files.saving.FileSaverAdapter) RCTextStyle(ivorius.reccomplex.commands.RCTextStyle) RCConfig(ivorius.reccomplex.RCConfig) CommandExpecting(ivorius.mcopts.commands.CommandExpecting) RawResourceLocation(ivorius.reccomplex.utils.RawResourceLocation) RCE(ivorius.reccomplex.commands.parameters.expect.RCE) ResourceExpression(ivorius.reccomplex.utils.expression.ResourceExpression) NaP(ivorius.mcopts.commands.parameters.NaP) RCP(ivorius.reccomplex.commands.parameters.RCP) CommandException(net.minecraft.command.CommandException) MinecraftServer(net.minecraft.server.MinecraftServer) Expect(ivorius.mcopts.commands.parameters.expect.Expect) ICommandSender(net.minecraft.command.ICommandSender) ResourceDirectory(ivorius.reccomplex.files.loading.ResourceDirectory) Optional(java.util.Optional) RecurrentComplex(ivorius.reccomplex.RecurrentComplex) Collections(java.util.Collections) Parameters(ivorius.mcopts.commands.parameters.Parameters) Parameters(ivorius.mcopts.commands.parameters.Parameters) RawResourceLocation(ivorius.reccomplex.utils.RawResourceLocation) ResourceDirectory(ivorius.reccomplex.files.loading.ResourceDirectory) NaP(ivorius.mcopts.commands.parameters.NaP) RCP(ivorius.reccomplex.commands.parameters.RCP) FileSaverAdapter(ivorius.reccomplex.files.saving.FileSaverAdapter) ResourceExpression(ivorius.reccomplex.utils.expression.ResourceExpression)

Example 69 with CommandException

use of net.minecraft.command.CommandException in project RecurrentComplex by Ivorforce.

the class CommandFill method execute.

@Override
public void execute(MockWorld world, ICommandSender sender, String[] args) throws CommandException {
    Parameters parameters = Parameters.of(args, expect()::declare);
    Block dstBlock = parameters.get(0).to(MCP::block, sender).require();
    int[] dstMeta = parameters.get("metadata").to(RCP::metadatas).optional().orElse(new int[1]);
    List<IBlockState> dst = IntStream.of(dstMeta).mapToObj(m -> BlockStates.fromMetadata(dstBlock, m)).collect(Collectors.toList());
    RCP.Shape shape = parameters.get("shape").to(RCP::shape).optional().orElse(RCP.Shape.cube);
    PositionedBlockExpression matcher = parameters.get(1).rest(NaP::join).orElse("").to(RCP::expression, new PositionedBlockExpression(RecurrentComplex.specialRegistry)).require();
    SelectionOwner selectionOwner = RCCommands.getSelectionOwner(sender, null, true);
    RCCommands.assertSize(sender, selectionOwner);
    if (parameters.has("flood")) {
        List<EnumFacing> directions = parameters.get("flood").orElse("").to(RCP::directions).require();
        List<BlockPos> dirty = new ArrayList<>();
        Set<BlockPos> visited = Sets.newHashSet(dirty);
        runShape(shape, selectionOwner.getSelection(), dirty::add);
        while (!dirty.isEmpty()) {
            BlockPos pos = dirty.remove(dirty.size() - 1);
            for (EnumFacing facing : directions) {
                BlockPos offset = pos.offset(facing);
                if (matcher.evaluate(() -> PositionedBlockExpression.Argument.at(world, offset)) && visited.add(offset))
                    dirty.add(offset);
            }
            if (visited.size() > MAX_FLOOD)
                throw new CommandException("Area too big to flood!");
        }
        visited.forEach(p -> setFrom(world, dst, p));
    } else {
        // TODO Can't freeze because the lighting update won't get sent
        // HeightMapFreezer freezer = HeightMapFreezer.freeze(BlockAreas.toBoundingBox(selectionOwner.getSelection()), sender.getEntityWorld());
        runShape(shape, selectionOwner.getSelection(), pos -> {
            if (matcher.evaluate(() -> PositionedBlockExpression.Argument.at(world, pos))) {
                setFrom(world, dst, pos);
            // freezer.markBlock(pos, state);
            }
        });
    // freezer.melt();
    }
}
Also used : SelectionOwner(ivorius.reccomplex.capability.SelectionOwner) IntStream(java.util.stream.IntStream) MCE(ivorius.mcopts.commands.parameters.expect.MCE) RCCommands(ivorius.reccomplex.commands.RCCommands) MockWorld(ivorius.ivtoolkit.world.MockWorld) RCConfig(ivorius.reccomplex.RCConfig) ArrayList(java.util.ArrayList) BlockArea(ivorius.ivtoolkit.blocks.BlockArea) NaP(ivorius.mcopts.commands.parameters.NaP) CommandException(net.minecraft.command.CommandException) Block(net.minecraft.block.Block) RecurrentComplex(ivorius.reccomplex.RecurrentComplex) IvShapeHelper(ivorius.ivtoolkit.math.IvShapeHelper) PositionedBlockExpression(ivorius.reccomplex.utils.expression.PositionedBlockExpression) EnumFacing(net.minecraft.util.EnumFacing) Set(java.util.Set) BlockStates(ivorius.ivtoolkit.blocks.BlockStates) BlockPos(net.minecraft.util.math.BlockPos) CommandVirtual(ivorius.reccomplex.commands.CommandVirtual) CommandExpecting(ivorius.mcopts.commands.CommandExpecting) Collectors(java.util.stream.Collectors) Sets(com.google.common.collect.Sets) RCE(ivorius.reccomplex.commands.parameters.expect.RCE) MCP(ivorius.mcopts.commands.parameters.MCP) Consumer(java.util.function.Consumer) IBlockState(net.minecraft.block.state.IBlockState) RCP(ivorius.reccomplex.commands.parameters.RCP) List(java.util.List) Expect(ivorius.mcopts.commands.parameters.expect.Expect) ICommandSender(net.minecraft.command.ICommandSender) Parameters(ivorius.mcopts.commands.parameters.Parameters) Parameters(ivorius.mcopts.commands.parameters.Parameters) IBlockState(net.minecraft.block.state.IBlockState) SelectionOwner(ivorius.reccomplex.capability.SelectionOwner) EnumFacing(net.minecraft.util.EnumFacing) ArrayList(java.util.ArrayList) CommandException(net.minecraft.command.CommandException) PositionedBlockExpression(ivorius.reccomplex.utils.expression.PositionedBlockExpression) Block(net.minecraft.block.Block) BlockPos(net.minecraft.util.math.BlockPos) RCP(ivorius.reccomplex.commands.parameters.RCP)

Example 70 with CommandException

use of net.minecraft.command.CommandException in project RecurrentComplex by Ivorforce.

the class CommandDelete method execute.

@Override
public void execute(MinecraftServer server, ICommandSender commandSender, String[] args) throws CommandException {
    Parameters parameters = Parameters.of(args, expect()::declare);
    String adapterID = parameters.get(0).require();
    if (!RecurrentComplex.saver.has(adapterID))
        throw RecurrentComplex.translations.commandException("commands.rcsave.noregistry");
    ResourceDirectory directory = parameters.get("directory").to(RCP::resourceDirectory).require();
    Optional<FileSaverAdapter<?>> adapterOptional = Optional.ofNullable(RecurrentComplex.saver.get(adapterID));
    Collection<String> ids = Lists.newArrayList(adapterOptional.map(a -> a.getRegistry().ids()).orElse(Collections.emptySet()));
    ResourceExpression resourceExpression = ExpressionCache.of(new ResourceExpression(id -> adapterOptional.map(a -> a.getRegistry().has(id)).orElse(false)), parameters.get(1).rest(NaP::join).require());
    for (String id : ids) {
        if (!resourceExpression.test(new RawResourceLocation(adapterOptional.map(a -> a.getRegistry().status(id).getDomain()).orElseThrow(IllegalStateException::new), id)))
            continue;
        RCCommands.informDeleteResult(RecurrentComplex.saver.tryDeleteWithID(directory.toPath(), adapterID, id), commandSender, adapterID, id, directory);
        // Could also predict changes and just reload those for the file but eh.
        RCCommands.tryReload(RecurrentComplex.loader, LeveledRegistry.Level.CUSTOM);
        RCCommands.tryReload(RecurrentComplex.loader, LeveledRegistry.Level.SERVER);
    }
}
Also used : ExpressionCache(ivorius.reccomplex.utils.algebra.ExpressionCache) LeveledRegistry(ivorius.reccomplex.files.loading.LeveledRegistry) RCCommands(ivorius.reccomplex.commands.RCCommands) Collection(java.util.Collection) FileSaverAdapter(ivorius.reccomplex.files.saving.FileSaverAdapter) RCConfig(ivorius.reccomplex.RCConfig) CommandExpecting(ivorius.mcopts.commands.CommandExpecting) RawResourceLocation(ivorius.reccomplex.utils.RawResourceLocation) RCE(ivorius.reccomplex.commands.parameters.expect.RCE) ResourceExpression(ivorius.reccomplex.utils.expression.ResourceExpression) NaP(ivorius.mcopts.commands.parameters.NaP) RCP(ivorius.reccomplex.commands.parameters.RCP) CommandException(net.minecraft.command.CommandException) MinecraftServer(net.minecraft.server.MinecraftServer) Lists(com.google.common.collect.Lists) Expect(ivorius.mcopts.commands.parameters.expect.Expect) ICommandSender(net.minecraft.command.ICommandSender) ResourceDirectory(ivorius.reccomplex.files.loading.ResourceDirectory) Optional(java.util.Optional) RecurrentComplex(ivorius.reccomplex.RecurrentComplex) Collections(java.util.Collections) Parameters(ivorius.mcopts.commands.parameters.Parameters) Parameters(ivorius.mcopts.commands.parameters.Parameters) ResourceDirectory(ivorius.reccomplex.files.loading.ResourceDirectory) NaP(ivorius.mcopts.commands.parameters.NaP) FileSaverAdapter(ivorius.reccomplex.files.saving.FileSaverAdapter) ResourceExpression(ivorius.reccomplex.utils.expression.ResourceExpression) RawResourceLocation(ivorius.reccomplex.utils.RawResourceLocation)

Aggregations

CommandException (net.minecraft.command.CommandException)82 EntityPlayerMP (net.minecraft.entity.player.EntityPlayerMP)33 WrongUsageException (net.minecraft.command.WrongUsageException)31 MinecraftServer (net.minecraft.server.MinecraftServer)22 TextComponentString (net.minecraft.util.text.TextComponentString)19 ICommandSender (net.minecraft.command.ICommandSender)18 GCPlayerStats (micdoodle8.mods.galacticraft.core.entities.player.GCPlayerStats)16 RCConfig (ivorius.reccomplex.RCConfig)15 EntityPlayer (net.minecraft.entity.player.EntityPlayer)14 BlockPos (net.minecraft.util.math.BlockPos)13 RecurrentComplex (ivorius.reccomplex.RecurrentComplex)12 ItemStack (net.minecraft.item.ItemStack)12 CommandExpecting (ivorius.mcopts.commands.CommandExpecting)10 Expect (ivorius.mcopts.commands.parameters.expect.Expect)10 TextComponentTranslation (net.minecraft.util.text.TextComponentTranslation)10 RCCommands (ivorius.reccomplex.commands.RCCommands)9 RCP (ivorius.reccomplex.commands.parameters.RCP)8 List (java.util.List)8 RCE (ivorius.reccomplex.commands.parameters.expect.RCE)7 Collectors (java.util.stream.Collectors)7