Search in sources :

Example 6 with ICommandSender

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

the class CommandPreview method execute.

@Override
public void execute(MinecraftServer server, ICommandSender commandSender, String[] args) throws CommandException {
    RCParameters parameters = RCParameters.of(args);
    EntityPlayer player = getCommandSenderAsPlayer(commandSender);
    RCEntityInfo RCEntityInfo = RCCommands.getStructureEntityInfo(player, null);
    Operation.PreviewType previewType = parameters.get().first().map(Operation.PreviewType::find, s -> ServerTranslations.commandException("commands.rcpreview.invalid")).require();
    RCEntityInfo.setPreviewType(previewType);
    RCEntityInfo.sendPreviewTypeToClients(player);
    commandSender.sendMessage(ServerTranslations.format("commands.rcpreview.success", previewType.key));
}
Also used : RCParameters(ivorius.reccomplex.commands.parameters.RCParameters) Operation(ivorius.reccomplex.operation.Operation) RCCommands(ivorius.reccomplex.commands.RCCommands) RCEntityInfo(ivorius.reccomplex.capability.RCEntityInfo) ServerTranslations(ivorius.reccomplex.utils.ServerTranslations) CommandBase(net.minecraft.command.CommandBase) BlockPos(net.minecraft.util.math.BlockPos) RCConfig(ivorius.reccomplex.RCConfig) RCExpect(ivorius.reccomplex.commands.parameters.RCExpect) CommandException(net.minecraft.command.CommandException) MinecraftServer(net.minecraft.server.MinecraftServer) List(java.util.List) ICommandSender(net.minecraft.command.ICommandSender) EntityPlayer(net.minecraft.entity.player.EntityPlayer) RCParameters(ivorius.reccomplex.commands.parameters.RCParameters) Nullable(javax.annotation.Nullable) EntityPlayer(net.minecraft.entity.player.EntityPlayer) RCEntityInfo(ivorius.reccomplex.capability.RCEntityInfo) Operation(ivorius.reccomplex.operation.Operation)

Example 7 with ICommandSender

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

the class CommandSelectFlood method execute.

@Override
public void execute(MockWorld world, ICommandSender commandSender, String[] args) throws CommandException {
    RCParameters parameters = RCParameters.of(args);
    SelectionOwner selectionOwner = RCCommands.getSelectionOwner(commandSender, null, true);
    RCCommands.assertSize(commandSender, selectionOwner);
    PreloadedBooleanExpression<EnumFacing> facingExpression = PreloadedBooleanExpression.with(exp -> {
        exp.addConstants(EnumFacing.values());
        exp.addEvaluators(axis -> facing -> facing.getAxis() == axis, EnumFacing.Axis.values());
        exp.addEvaluator("horizontal", f -> f.getHorizontalIndex() >= 0);
        exp.addEvaluator("vertical", f -> f.getHorizontalIndex() < 0);
    });
    facingExpression.setExpression(parameters.get().move(2).text().optional().orElse(""));
    List<EnumFacing> available = Arrays.stream(EnumFacing.values()).filter(facingExpression).collect(Collectors.toList());
    List<BlockPos> dirty = Lists.newArrayList(selectionOwner.getSelection());
    Set<BlockPos> visited = Sets.newHashSet(dirty);
    Block dstBlock = parameters.mc().block(commandSender).require();
    int[] dstMeta = parameters.rc().move(1).metadatas().optional().orElse(new int[1]);
    List<IBlockState> dst = IntStream.of(dstMeta).mapToObj(m -> BlockStates.fromMetadata(dstBlock, m)).collect(Collectors.toList());
    while (!dirty.isEmpty()) {
        BlockPos pos = dirty.remove(dirty.size() - 1);
        for (EnumFacing facing : available) {
            BlockPos offset = pos.offset(facing);
            if (RCBlockLogic.isAir(world, offset) && visited.add(offset))
                dirty.add(offset);
        }
        if (visited.size() > MAX_FLOOD)
            throw new CommandException("Area too big to flood!");
    }
    for (BlockPos pos : visited) {
        IBlockState state = dst.get(world.rand().nextInt(dst.size()));
        world.setBlockState(pos, state, 2);
    }
}
Also used : SelectionOwner(ivorius.reccomplex.capability.SelectionOwner) PreloadedBooleanExpression(ivorius.reccomplex.utils.expression.PreloadedBooleanExpression) IntStream(java.util.stream.IntStream) java.util(java.util) RCCommands(ivorius.reccomplex.commands.RCCommands) EnumFacing(net.minecraft.util.EnumFacing) BlockStates(ivorius.ivtoolkit.blocks.BlockStates) ServerTranslations(ivorius.reccomplex.utils.ServerTranslations) BlockPos(net.minecraft.util.math.BlockPos) MockWorld(ivorius.ivtoolkit.world.MockWorld) CommandVirtual(ivorius.reccomplex.commands.CommandVirtual) RCConfig(ivorius.reccomplex.RCConfig) Collectors(java.util.stream.Collectors) Sets(com.google.common.collect.Sets) RCExpect(ivorius.reccomplex.commands.parameters.RCExpect) IBlockState(net.minecraft.block.state.IBlockState) CommandException(net.minecraft.command.CommandException) MinecraftServer(net.minecraft.server.MinecraftServer) Lists(com.google.common.collect.Lists) Block(net.minecraft.block.Block) RCBlockLogic(ivorius.reccomplex.utils.RCBlockLogic) ICommandSender(net.minecraft.command.ICommandSender) RCParameters(ivorius.reccomplex.commands.parameters.RCParameters) Nullable(javax.annotation.Nullable) SelectionOwner(ivorius.reccomplex.capability.SelectionOwner) IBlockState(net.minecraft.block.state.IBlockState) EnumFacing(net.minecraft.util.EnumFacing) CommandException(net.minecraft.command.CommandException) RCParameters(ivorius.reccomplex.commands.parameters.RCParameters) Block(net.minecraft.block.Block) BlockPos(net.minecraft.util.math.BlockPos)

Example 8 with ICommandSender

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

the class CommandWriteAll method execute.

@Override
public void execute(MinecraftServer server, ICommandSender commandSender, String[] args) throws CommandException {
    RCParameters parameters = RCParameters.of(args);
    String adapterID = parameters.get().first().require();
    if (!RecurrentComplex.saver.has(adapterID))
        throw ServerTranslations.commandException("commands.rcsaveall.noregistry");
    ResourceDirectory directory = parameters.rc("dir").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().at(1).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(ServerTranslations.format("commands.rcsaveall.result", saved, directory, failed));
    RCCommands.tryReload(RecurrentComplex.loader, LeveledRegistry.Level.CUSTOM);
    RCCommands.tryReload(RecurrentComplex.loader, LeveledRegistry.Level.SERVER);
}
Also used : RCParameters(ivorius.reccomplex.commands.parameters.RCParameters) ExpressionCache(ivorius.reccomplex.utils.algebra.ExpressionCache) LeveledRegistry(ivorius.reccomplex.files.loading.LeveledRegistry) RCCommands(ivorius.reccomplex.commands.RCCommands) Set(java.util.Set) ServerTranslations(ivorius.reccomplex.utils.ServerTranslations) CommandBase(net.minecraft.command.CommandBase) BlockPos(net.minecraft.util.math.BlockPos) FileSaverAdapter(ivorius.reccomplex.files.saving.FileSaverAdapter) RCConfig(ivorius.reccomplex.RCConfig) RawResourceLocation(ivorius.reccomplex.utils.RawResourceLocation) RCExpect(ivorius.reccomplex.commands.parameters.RCExpect) ResourceExpression(ivorius.reccomplex.utils.expression.ResourceExpression) CommandException(net.minecraft.command.CommandException) MinecraftServer(net.minecraft.server.MinecraftServer) List(java.util.List) ICommandSender(net.minecraft.command.ICommandSender) ResourceDirectory(ivorius.reccomplex.files.loading.ResourceDirectory) Optional(java.util.Optional) RecurrentComplex(ivorius.reccomplex.RecurrentComplex) RCParameters(ivorius.reccomplex.commands.parameters.RCParameters) Collections(java.util.Collections) Nullable(javax.annotation.Nullable) ResourceDirectory(ivorius.reccomplex.files.loading.ResourceDirectory) FileSaverAdapter(ivorius.reccomplex.files.saving.FileSaverAdapter) ResourceExpression(ivorius.reccomplex.utils.expression.ResourceExpression) RawResourceLocation(ivorius.reccomplex.utils.RawResourceLocation)

Aggregations

RCConfig (ivorius.reccomplex.RCConfig)8 RCExpect (ivorius.reccomplex.commands.parameters.RCExpect)8 RCParameters (ivorius.reccomplex.commands.parameters.RCParameters)8 ServerTranslations (ivorius.reccomplex.utils.ServerTranslations)8 Nullable (javax.annotation.Nullable)8 CommandException (net.minecraft.command.CommandException)8 ICommandSender (net.minecraft.command.ICommandSender)8 MinecraftServer (net.minecraft.server.MinecraftServer)8 BlockPos (net.minecraft.util.math.BlockPos)8 List (java.util.List)7 RCCommands (ivorius.reccomplex.commands.RCCommands)6 RecurrentComplex (ivorius.reccomplex.RecurrentComplex)5 MockWorld (ivorius.ivtoolkit.world.MockWorld)4 SelectionOwner (ivorius.reccomplex.capability.SelectionOwner)4 CommandVirtual (ivorius.reccomplex.commands.CommandVirtual)4 Collectors (java.util.stream.Collectors)4 BlockStates (ivorius.ivtoolkit.blocks.BlockStates)3 IntStream (java.util.stream.IntStream)3 CommandBase (net.minecraft.command.CommandBase)3 ResourceDirectory (ivorius.reccomplex.files.loading.ResourceDirectory)2