Package com.forgeessentials.worldcontrol.commands

Source Code of com.forgeessentials.worldcontrol.commands.CommandReplace

package com.forgeessentials.worldcontrol.commands;

import com.forgeessentials.api.APIRegistry;
import com.forgeessentials.api.permissions.RegGroup;
import com.forgeessentials.api.permissions.query.PermQuery.PermResult;
import com.forgeessentials.api.permissions.query.PermQueryPlayerArea;
import com.forgeessentials.util.PlayerInfo;
import com.forgeessentials.util.AreaSelector.Selection;
import com.forgeessentials.util.BackupArea;
import com.forgeessentials.util.ChatUtils;
import com.forgeessentials.util.FunctionHelper;
import com.forgeessentials.util.OutputHandler;
import com.forgeessentials.util.tasks.TaskRegistry;
import com.forgeessentials.worldcontrol.TickTasks.TickTaskReplaceSelection;
import net.minecraft.block.Block;
import net.minecraft.command.ICommandSender;
import net.minecraft.entity.player.EntityPlayer;

public class CommandReplace extends WorldControlCommandBase {

    public CommandReplace()
    {
        super(true);
    }

    @Override
    public String getName()
    {
        return "replace";
    }

    @Override
    public void processCommandPlayer(EntityPlayer player, String[] args)
    {
        if (args.length == 2)
        {
            PlayerInfo info = PlayerInfo.getPlayerInfo(player.username);
            if (info.getSelection() == null)
            {
                OutputHandler.chatError(player, "Invalid selection detected. Please check your selection.");
                return;
            }
            int[] temp;
            int firstID = -1;
            int firstMeta = -1;
            int secondID = -1;
            int secondMeta = -1;

            // Begin parsing 1st argument pair

            try
            {
                temp = FunctionHelper.parseIdAndMetaFromString(args[0], true);
                firstID = temp[0];
                firstMeta = temp[1];
            }
            catch (Exception e)
            {
                OutputHandler.chatError(player, e.getMessage());
                return;
            }

            // Begin parsing 2nd argument pair if 1st was good.
            try
            {
                temp = FunctionHelper.parseIdAndMetaFromString(args[1], true);
                secondID = temp[0];
                secondMeta = temp[1];
            }
            catch (Exception e)
            {
                OutputHandler.chatError(player, e.getMessage());
                return;
            }

            if (firstID >= Block.blocksList.length || secondID >= Block.blocksList.length)
            {
                error(player, String.format("Block IDs cannot exceed %d!", Block.blocksList.length));
            }
            else if (firstID != 0 && Block.blocksList[firstID] == null)
            {
                error(player, String.format("message.wc.invalidBlockId", firstID));
            }
            else if (secondID != 0 && Block.blocksList[secondID] == null)
            {
                error(player, String.format("%d is not a valid block ID!", secondID));
            }
            else
            {
                Selection sel = info.getSelection();
                BackupArea back = new BackupArea();

                PermQueryPlayerArea query = new PermQueryPlayerArea(player, getCommandPerm(), sel, false);
                PermResult result = APIRegistry.perms.checkPermResult(query);

                switch (result)
                {
                case ALLOW:
                    TaskRegistry.registerTask(new TickTaskReplaceSelection(player, firstID, firstMeta, secondID, secondMeta, back, sel));
                    return;
                case PARTIAL:
                    TaskRegistry.registerTask(new TickTaskReplaceSelection(player, firstID, firstMeta, secondID, secondMeta, back, sel, query.applicable));
                default:
                    OutputHandler.chatError(player, "Insufficient permission.");
                    return;
                }

            }

            ChatUtils.sendMessage(player, "Working on replace.");
        }
        else
        {
            // The syntax of the command is not correct.
            error(player);
        }
    }

    @Override
    public String getCommandUsage(ICommandSender sender)
    {
        return "//replace <blockID[:metadata]> <blockID[:metadata]> Replaces blocks of the first ID with blocks of the second.";
    }

    @Override
    public RegGroup getReggroup()
    {

        return RegGroup.OWNERS;
    }

}
TOP

Related Classes of com.forgeessentials.worldcontrol.commands.CommandReplace

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.