Added autocrafting cancel commands.

This commit is contained in:
raoulvdberge
2020-09-05 21:55:56 +02:00
parent 6768aa1bbf
commit ccc6267662
11 changed files with 99 additions and 11 deletions

View File

@@ -8,6 +8,8 @@
- Added the `/refinedstorage network get <dimension> <pos>` command (raoulvdberge) - Added the `/refinedstorage network get <dimension> <pos>` command (raoulvdberge)
- Added the `/refinedstorage network get <dimension> <pos> autocrafting list` command (raoulvdberge) - Added the `/refinedstorage network get <dimension> <pos> autocrafting list` command (raoulvdberge)
- Added the `/refinedstorage network get <dimension> <pos> autocrafting get <id>` command (raoulvdberge) - Added the `/refinedstorage network get <dimension> <pos> autocrafting get <id>` command (raoulvdberge)
- Added the `/refinedstorage network get <dimension> <pos> autocrafting cancel` command (raoulvdberge)
- Added the `/refinedstorage network get <dimension> <pos> autocrafting cancel <id>` command (raoulvdberge)
- Added JEI ghost ingredient dragging support (raoulvdberge) - Added JEI ghost ingredient dragging support (raoulvdberge)
- Fixed text field not being focused in amount specifying screens (raoulvdberge) - Fixed text field not being focused in amount specifying screens (raoulvdberge)

View File

@@ -175,17 +175,19 @@ public interface IRSAPI {
* Creates crafting request info for an item. * Creates crafting request info for an item.
* *
* @param stack the stack * @param stack the stack
* @param count the count
* @return the request info * @return the request info
*/ */
ICraftingRequestInfo createCraftingRequestInfo(ItemStack stack); ICraftingRequestInfo createCraftingRequestInfo(ItemStack stack, int count);
/** /**
* Creates crafting request info for a fluid. * Creates crafting request info for a fluid.
* *
* @param stack the stack * @param stack the stack
* @param count the count
* @return the request info * @return the request info
*/ */
ICraftingRequestInfo createCraftingRequestInfo(FluidStack stack); ICraftingRequestInfo createCraftingRequestInfo(FluidStack stack, int count);
/** /**
* Creates crafting request info from NBT. * Creates crafting request info from NBT.

View File

@@ -39,6 +39,7 @@ import com.refinedmods.refinedstorage.apiimpl.util.Comparer;
import com.refinedmods.refinedstorage.apiimpl.util.FluidStackList; import com.refinedmods.refinedstorage.apiimpl.util.FluidStackList;
import com.refinedmods.refinedstorage.apiimpl.util.ItemStackList; import com.refinedmods.refinedstorage.apiimpl.util.ItemStackList;
import com.refinedmods.refinedstorage.apiimpl.util.QuantityFormatter; import com.refinedmods.refinedstorage.apiimpl.util.QuantityFormatter;
import com.refinedmods.refinedstorage.util.StackUtils;
import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.nbt.CompoundNBT; import net.minecraft.nbt.CompoundNBT;
@@ -48,6 +49,7 @@ import net.minecraft.world.server.ServerWorld;
import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fml.ModList; import net.minecraftforge.fml.ModList;
import net.minecraftforge.forgespi.language.ModFileScanData; import net.minecraftforge.forgespi.language.ModFileScanData;
import net.minecraftforge.items.ItemHandlerHelper;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import org.objectweb.asm.Type; import org.objectweb.asm.Type;
@@ -236,13 +238,13 @@ public class API implements IRSAPI {
} }
@Override @Override
public ICraftingRequestInfo createCraftingRequestInfo(ItemStack stack) { public ICraftingRequestInfo createCraftingRequestInfo(ItemStack stack, int count) {
return new CraftingRequestInfo(stack); return new CraftingRequestInfo(ItemHandlerHelper.copyStackWithSize(stack, count));
} }
@Override @Override
public ICraftingRequestInfo createCraftingRequestInfo(FluidStack stack) { public ICraftingRequestInfo createCraftingRequestInfo(FluidStack stack, int count) {
return new CraftingRequestInfo(stack); return new CraftingRequestInfo(StackUtils.copy(stack, count));
} }
@Override @Override

View File

@@ -101,7 +101,7 @@ public class CraftingManager implements ICraftingManager {
return new CalculationResult(CalculationResultType.NO_PATTERN); return new CalculationResult(CalculationResultType.NO_PATTERN);
} }
return factory.create(network, API.instance().createCraftingRequestInfo(stack), quantity, pattern); return factory.create(network, API.instance().createCraftingRequestInfo(stack, quantity), quantity, pattern);
} }
@Override @Override
@@ -116,7 +116,7 @@ public class CraftingManager implements ICraftingManager {
return new CalculationResult(CalculationResultType.NO_PATTERN); return new CalculationResult(CalculationResultType.NO_PATTERN);
} }
return factory.create(network, API.instance().createCraftingRequestInfo(stack), quantity, pattern); return factory.create(network, API.instance().createCraftingRequestInfo(stack, quantity), quantity, pattern);
} }
@Override @Override

View File

@@ -3,7 +3,6 @@ package com.refinedmods.refinedstorage.command.disk;
import com.mojang.brigadier.Command; import com.mojang.brigadier.Command;
import com.mojang.brigadier.builder.ArgumentBuilder; import com.mojang.brigadier.builder.ArgumentBuilder;
import com.mojang.brigadier.context.CommandContext; import com.mojang.brigadier.context.CommandContext;
import com.mojang.brigadier.exceptions.CommandSyntaxException;
import com.refinedmods.refinedstorage.apiimpl.API; import com.refinedmods.refinedstorage.apiimpl.API;
import net.minecraft.command.CommandSource; import net.minecraft.command.CommandSource;
import net.minecraft.command.Commands; import net.minecraft.command.Commands;
@@ -11,7 +10,10 @@ import net.minecraft.util.text.StringTextComponent;
public class ListDiskCommand implements Command<CommandSource> { public class ListDiskCommand implements Command<CommandSource> {
public static ArgumentBuilder<CommandSource, ?> register() { public static ArgumentBuilder<CommandSource, ?> register() {
return Commands.literal("list").executes(new ListDiskCommand()).then(ListDiskForPlayerCommand.register()); return Commands.literal("list")
.requires(cs -> cs.hasPermissionLevel(2))
.executes(new ListDiskCommand())
.then(ListDiskForPlayerCommand.register());
} }
@Override @Override

View File

@@ -3,6 +3,7 @@ package com.refinedmods.refinedstorage.command.network;
import com.mojang.brigadier.builder.ArgumentBuilder; import com.mojang.brigadier.builder.ArgumentBuilder;
import com.mojang.brigadier.context.CommandContext; import com.mojang.brigadier.context.CommandContext;
import com.refinedmods.refinedstorage.api.network.INetwork; import com.refinedmods.refinedstorage.api.network.INetwork;
import com.refinedmods.refinedstorage.command.network.autocrafting.CancelAllAutocraftingCommand;
import com.refinedmods.refinedstorage.command.network.autocrafting.GetAutocraftingCommand; import com.refinedmods.refinedstorage.command.network.autocrafting.GetAutocraftingCommand;
import com.refinedmods.refinedstorage.command.network.autocrafting.ListAutocraftingCommand; import com.refinedmods.refinedstorage.command.network.autocrafting.ListAutocraftingCommand;
import net.minecraft.command.CommandSource; import net.minecraft.command.CommandSource;
@@ -13,12 +14,14 @@ import net.minecraft.command.arguments.DimensionArgument;
public class GetNetworkCommand extends NetworkCommand { public class GetNetworkCommand extends NetworkCommand {
public static ArgumentBuilder<CommandSource, ?> register() { public static ArgumentBuilder<CommandSource, ?> register() {
return Commands.literal("get") return Commands.literal("get")
.requires(cs -> cs.hasPermissionLevel(2))
.then(Commands.argument("dimension", DimensionArgument.getDimension()) .then(Commands.argument("dimension", DimensionArgument.getDimension())
.then(Commands.argument("pos", BlockPosArgument.blockPos()).suggests(new NetworkPositionSuggestionProvider()) .then(Commands.argument("pos", BlockPosArgument.blockPos()).suggests(new NetworkPositionSuggestionProvider())
.executes(new GetNetworkCommand()) .executes(new GetNetworkCommand())
.then(Commands.literal("autocrafting") .then(Commands.literal("autocrafting")
.then(ListAutocraftingCommand.register()) .then(ListAutocraftingCommand.register())
.then(GetAutocraftingCommand.register()) .then(GetAutocraftingCommand.register())
.then(CancelAllAutocraftingCommand.register())
))); )));
} }

View File

@@ -21,6 +21,7 @@ public class ListNetworkCommand implements Command<CommandSource> {
public static ArgumentBuilder<CommandSource, ?> register() { public static ArgumentBuilder<CommandSource, ?> register() {
return Commands.literal("list") return Commands.literal("list")
.requires(cs -> cs.hasPermissionLevel(2))
.then(Commands.argument("dimension", DimensionArgument.getDimension()) .then(Commands.argument("dimension", DimensionArgument.getDimension())
.executes(new ListNetworkCommand())); .executes(new ListNetworkCommand()));
} }

View File

@@ -0,0 +1,39 @@
package com.refinedmods.refinedstorage.command.network.autocrafting;
import com.mojang.brigadier.builder.ArgumentBuilder;
import com.mojang.brigadier.context.CommandContext;
import com.refinedmods.refinedstorage.api.network.INetwork;
import com.refinedmods.refinedstorage.command.network.NetworkCommand;
import com.refinedmods.refinedstorage.render.Styles;
import net.minecraft.command.CommandSource;
import net.minecraft.command.Commands;
import net.minecraft.util.text.StringTextComponent;
import net.minecraft.util.text.TranslationTextComponent;
public class CancelAllAutocraftingCommand extends NetworkCommand {
public static ArgumentBuilder<CommandSource, ?> register() {
return Commands.literal("cancel")
.executes(new CancelAllAutocraftingCommand())
.then(CancelSingleAutocraftingCommand.register());
}
@Override
protected int run(CommandContext<CommandSource> context, INetwork network) {
int count = network.getCraftingManager().getTasks().size();
network.getCraftingManager().getTasks().forEach(task -> network.getCraftingManager().cancel(task.getId()));
sendCancelMessage(context, count);
return 0;
}
public static void sendCancelMessage(CommandContext<CommandSource> context, int count) {
String translationKey = "commands.refinedstorage.network.autocrafting.cancel.multiple";
if (count == 1) {
translationKey = "commands.refinedstorage.network.autocrafting.cancel.single";
}
context.getSource().sendFeedback(new TranslationTextComponent(translationKey, new StringTextComponent("" + count).setStyle(Styles.YELLOW)), false);
}
}

View File

@@ -0,0 +1,36 @@
package com.refinedmods.refinedstorage.command.network.autocrafting;
import com.mojang.brigadier.builder.ArgumentBuilder;
import com.mojang.brigadier.context.CommandContext;
import com.refinedmods.refinedstorage.api.autocrafting.task.ICraftingTask;
import com.refinedmods.refinedstorage.api.network.INetwork;
import com.refinedmods.refinedstorage.command.network.NetworkCommand;
import net.minecraft.command.CommandSource;
import net.minecraft.command.Commands;
import net.minecraft.command.arguments.UUIDArgument;
import java.util.UUID;
public class CancelSingleAutocraftingCommand extends NetworkCommand {
public static ArgumentBuilder<CommandSource, ?> register() {
return Commands.argument("id", UUIDArgument.func_239194_a_()).suggests(new AutocraftingIdSuggestionProvider())
.executes(new CancelSingleAutocraftingCommand());
}
@Override
protected int run(CommandContext<CommandSource> context, INetwork network) {
UUID id = UUIDArgument.func_239195_a_(context, "id");
int count = 0;
ICraftingTask task = network.getCraftingManager().getTask(id);
if (task != null) {
count = 1;
network.getCraftingManager().cancel(task.getId());
}
CancelAllAutocraftingCommand.sendCancelMessage(context, count);
return 0;
}
}

View File

@@ -18,7 +18,6 @@ import net.minecraftforge.fluids.FluidStack;
public class PatternDumpCommand implements Command<CommandSource> { public class PatternDumpCommand implements Command<CommandSource> {
public static ArgumentBuilder<CommandSource, ?> register() { public static ArgumentBuilder<CommandSource, ?> register() {
return Commands.literal("dump") return Commands.literal("dump")
.requires(cs -> cs.hasPermissionLevel(0))
.executes(new PatternDumpCommand()); .executes(new PatternDumpCommand());
} }

View File

@@ -315,6 +315,8 @@
"commands.refinedstorage.network.list.energy_usage": "Energy usage: %s", "commands.refinedstorage.network.list.energy_usage": "Energy usage: %s",
"commands.refinedstorage.network.get.error.not_found": "Network not found.", "commands.refinedstorage.network.get.error.not_found": "Network not found.",
"commands.refinedstorage.network.autocrafting.get.error.not_found": "Task not found.", "commands.refinedstorage.network.autocrafting.get.error.not_found": "Task not found.",
"commands.refinedstorage.network.autocrafting.cancel.single": "Cancelled %d task.",
"commands.refinedstorage.network.autocrafting.cancel.multiple": "Cancelled %d tasks.",
"advancements.refinedstorage.controlling.description": "Craft a Controller", "advancements.refinedstorage.controlling.description": "Craft a Controller",
"advancements.refinedstorage.connecting": "Connecting", "advancements.refinedstorage.connecting": "Connecting",
"advancements.refinedstorage.connecting.description": "You can place all the devices next to each other to connect them up, or, use Cable", "advancements.refinedstorage.connecting.description": "You can place all the devices next to each other to connect them up, or, use Cable",