From 26eb514800d6c0acb91b8300a0298ac1b184621b Mon Sep 17 00:00:00 2001 From: raoulvdberge Date: Mon, 28 May 2018 23:17:07 +0200 Subject: [PATCH] Add better framework for extracting and inserting items for crafting. --- .../api/autocrafting/ICraftingManager.java | 3 + .../ICraftingPatternContainer.java | 2 +- .../api/autocrafting/task/ICraftingTask.java | 2 +- .../apiimpl/autocrafting/CraftingManager.java | 8 ++- .../apiimpl/autocrafting/CraftingPattern.java | 11 ++- .../autocrafting/task/CraftingExtractor.java | 67 +++++++++++++++++++ .../task/CraftingExtractorItemStatus.java | 7 ++ .../autocrafting/task/CraftingInserter.java | 46 +++++++++++++ .../task/CraftingInserterItem.java | 25 +++++++ .../task/CraftingInserterItemStatus.java | 6 ++ .../autocrafting/task/CraftingStep.java | 2 +- .../autocrafting/task/CraftingStepCraft.java | 51 ++++++-------- .../autocrafting/task/CraftingTask.java | 65 +++++++++++++++--- .../network/node/NetworkNodeCrafter.java | 2 +- .../assets/refinedstorage/lang/en_us.lang | 2 +- .../assets/refinedstorage/lang/es_es.lang | 1 - .../assets/refinedstorage/lang/fr_fr.lang | 1 - .../assets/refinedstorage/lang/ko_kr.lang | 1 - .../assets/refinedstorage/lang/pt_br.lang | 1 - .../assets/refinedstorage/lang/ru_ru.lang | 1 - .../assets/refinedstorage/lang/zh_cn.lang | 1 - 21 files changed, 254 insertions(+), 51 deletions(-) create mode 100644 src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/task/CraftingExtractor.java create mode 100644 src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/task/CraftingExtractorItemStatus.java create mode 100644 src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/task/CraftingInserter.java create mode 100644 src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/task/CraftingInserterItem.java create mode 100644 src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/task/CraftingInserterItemStatus.java diff --git a/src/main/java/com/raoulvdberge/refinedstorage/api/autocrafting/ICraftingManager.java b/src/main/java/com/raoulvdberge/refinedstorage/api/autocrafting/ICraftingManager.java index 74f936e2e..6c4f7cdb4 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/api/autocrafting/ICraftingManager.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/api/autocrafting/ICraftingManager.java @@ -100,6 +100,7 @@ public interface ICraftingManager { /** * Makes the network send a crafting monitor update to all players as soon as it can. */ + // TODO: rework system to be subscribed-based, per task void markCraftingMonitorForUpdate(); /** @@ -107,6 +108,7 @@ public interface ICraftingManager { *

* WARNING: In most cases, you should just use {@link ICraftingManager#markCraftingMonitorForUpdate()}, if not, you can get high bandwidth usage. */ + // TODO: rework system to be subscribed-based, per task void sendCraftingMonitorUpdate(); /** @@ -114,5 +116,6 @@ public interface ICraftingManager { * * @param player the player */ + // TODO: rework system to be subscribed-based, per task void sendCraftingMonitorUpdate(EntityPlayerMP player); } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/api/autocrafting/ICraftingPatternContainer.java b/src/main/java/com/raoulvdberge/refinedstorage/api/autocrafting/ICraftingPatternContainer.java index 12d98a1cf..42b328bc7 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/api/autocrafting/ICraftingPatternContainer.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/api/autocrafting/ICraftingPatternContainer.java @@ -17,7 +17,7 @@ public interface ICraftingPatternContainer { /** * @return the amount of speed upgrades in the container */ - int getSpeedUpdateCount(); + int getSpeedUpgradeCount(); /** * @return the inventory that this container is connected to diff --git a/src/main/java/com/raoulvdberge/refinedstorage/api/autocrafting/task/ICraftingTask.java b/src/main/java/com/raoulvdberge/refinedstorage/api/autocrafting/task/ICraftingTask.java index 8e27b3896..14ac6c642 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/api/autocrafting/task/ICraftingTask.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/api/autocrafting/task/ICraftingTask.java @@ -19,7 +19,7 @@ public interface ICraftingTask { void calculate(); /** - * Updates this task. Gets called every few ticks, depending on the speed of the pattern container. + * Updates this task. * {@link ICraftingTask#calculate()} must be run before this! * * @return true if this crafting task is finished and can be deleted from the list, false otherwise diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/CraftingManager.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/CraftingManager.java index 63f3375a9..494ee12a3 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/CraftingManager.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/CraftingManager.java @@ -84,6 +84,8 @@ public class CraftingManager implements ICraftingManager { @Override public void update() { if (network.canRun()) { + boolean changed = !tasksToCancel.isEmpty() || !tasksToAdd.isEmpty(); + tasksToCancel.forEach(ICraftingTask::onCancelled); tasks.removeAll(tasksToCancel); tasksToCancel.clear(); @@ -91,7 +93,11 @@ public class CraftingManager implements ICraftingManager { tasksToAdd.stream().filter(ICraftingTask::isValid).forEach(tasks::add); tasksToAdd.clear(); - tasks.removeIf(ICraftingTask::update); + changed = tasks.removeIf(ICraftingTask::update); + + if (changed) { + markCraftingMonitorForUpdate(); + } } if (updateRequested) { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/CraftingPattern.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/CraftingPattern.java index 51638d8ac..d1a86acf8 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/CraftingPattern.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/CraftingPattern.java @@ -167,7 +167,16 @@ public class CraftingPattern implements ICraftingPattern { inv.setInventorySlotContents(i, took.get(i)); } - return recipe.getRemainingItems(inv); + NonNullList remainingItems = recipe.getRemainingItems(inv); + NonNullList sanitized = NonNullList.create(); + + for (ItemStack item : remainingItems) { + if (!item.isEmpty()) { + sanitized.add(item); + } + } + + return sanitized; } @Override diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/task/CraftingExtractor.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/task/CraftingExtractor.java new file mode 100644 index 000000000..8cc978b45 --- /dev/null +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/task/CraftingExtractor.java @@ -0,0 +1,67 @@ +package com.raoulvdberge.refinedstorage.apiimpl.autocrafting.task; + +import com.raoulvdberge.refinedstorage.api.network.INetwork; +import net.minecraft.item.ItemStack; + +import java.util.ArrayList; +import java.util.List; + +public class CraftingExtractor { + private INetwork network; + private List items; + private List status = new ArrayList<>(); + + public CraftingExtractor(INetwork network, List items) { + this.network = network; + this.items = items; + + for (int i = 0; i < items.size(); ++i) { + status.add(CraftingExtractorItemStatus.MISSING); + } + } + + public List getItems() { + return items; + } + + public List getStatus() { + return status; + } + + public void updateStatus() { + for (int i = 0; i < items.size(); ++i) { + if (status.get(i) != CraftingExtractorItemStatus.EXTRACTED) { + ItemStack stack = items.get(i); + + ItemStack inNetwork = network.extractItem(stack, stack.getCount(), true); + + if (inNetwork == null || inNetwork.getCount() < stack.getCount()) { + status.set(i, CraftingExtractorItemStatus.MISSING); + } else { + status.set(i, CraftingExtractorItemStatus.AVAILABLE); + } + } + } + } + + public boolean isAllAvailable() { + return status.stream().allMatch(s -> s == CraftingExtractorItemStatus.AVAILABLE || s == CraftingExtractorItemStatus.EXTRACTED); + } + + public boolean isAllExtracted() { + return status.stream().allMatch(s -> s == CraftingExtractorItemStatus.EXTRACTED); + } + + public void extractOne() { + for (int i = 0; i < items.size(); ++i) { + if (status.get(i) == CraftingExtractorItemStatus.AVAILABLE) { + ItemStack extracted = network.extractItem(items.get(i), items.get(i).getCount(), false); + if (extracted == null) { + throw new IllegalStateException("Did not extract anything"); + } + + status.set(i, CraftingExtractorItemStatus.EXTRACTED); + } + } + } +} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/task/CraftingExtractorItemStatus.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/task/CraftingExtractorItemStatus.java new file mode 100644 index 000000000..757f099e8 --- /dev/null +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/task/CraftingExtractorItemStatus.java @@ -0,0 +1,7 @@ +package com.raoulvdberge.refinedstorage.apiimpl.autocrafting.task; + +public enum CraftingExtractorItemStatus { + AVAILABLE, + MISSING, + EXTRACTED +} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/task/CraftingInserter.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/task/CraftingInserter.java new file mode 100644 index 000000000..5d1d08797 --- /dev/null +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/task/CraftingInserter.java @@ -0,0 +1,46 @@ +package com.raoulvdberge.refinedstorage.apiimpl.autocrafting.task; + +import com.raoulvdberge.refinedstorage.api.network.INetwork; +import net.minecraft.item.ItemStack; + +import java.util.ArrayDeque; +import java.util.Collection; +import java.util.Deque; + +public class CraftingInserter { + private INetwork network; + private Deque items = new ArrayDeque<>(); + + public CraftingInserter(INetwork network) { + this.network = network; + } + + public void insert(ItemStack stack) { + items.push(new CraftingInserterItem(stack, CraftingInserterItemStatus.WAITING)); + + network.getCraftingManager().sendCraftingMonitorUpdate(); + } + + public void insertSingle() { + CraftingInserterItem item = items.peek(); + + if (item != null) { + if (network.insertItem(item.getStack(), item.getStack().getCount(), true) == null) { + ItemStack inserted = network.insertItem(item.getStack(), item.getStack().getCount(), false); + if (inserted != null) { + throw new IllegalStateException("Could not insert item"); + } + + items.pop(); + } else { + item.setStatus(CraftingInserterItemStatus.FULL); + } + + network.getCraftingManager().sendCraftingMonitorUpdate(); + } + } + + public Collection getItems() { + return items; + } +} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/task/CraftingInserterItem.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/task/CraftingInserterItem.java new file mode 100644 index 000000000..53f217d85 --- /dev/null +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/task/CraftingInserterItem.java @@ -0,0 +1,25 @@ +package com.raoulvdberge.refinedstorage.apiimpl.autocrafting.task; + +import net.minecraft.item.ItemStack; + +public class CraftingInserterItem { + private ItemStack stack; + private CraftingInserterItemStatus status; + + public CraftingInserterItem(ItemStack stack, CraftingInserterItemStatus status) { + this.stack = stack; + this.status = status; + } + + public ItemStack getStack() { + return stack; + } + + public CraftingInserterItemStatus getStatus() { + return status; + } + + public void setStatus(CraftingInserterItemStatus status) { + this.status = status; + } +} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/task/CraftingInserterItemStatus.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/task/CraftingInserterItemStatus.java new file mode 100644 index 000000000..3588584fa --- /dev/null +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/task/CraftingInserterItemStatus.java @@ -0,0 +1,6 @@ +package com.raoulvdberge.refinedstorage.apiimpl.autocrafting.task; + +public enum CraftingInserterItemStatus { + WAITING, + FULL +} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/task/CraftingStep.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/task/CraftingStep.java index 5067a06d3..d7ae02195 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/task/CraftingStep.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/task/CraftingStep.java @@ -12,7 +12,7 @@ public abstract class CraftingStep { public abstract boolean canExecute(); - public abstract void execute(); + public abstract boolean execute(); public ICraftingPattern getPattern() { return pattern; diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/task/CraftingStepCraft.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/task/CraftingStepCraft.java index e8985fd44..848e70493 100644 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/task/CraftingStepCraft.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/task/CraftingStepCraft.java @@ -2,57 +2,50 @@ package com.raoulvdberge.refinedstorage.apiimpl.autocrafting.task; import com.raoulvdberge.refinedstorage.api.autocrafting.ICraftingPattern; import com.raoulvdberge.refinedstorage.api.network.INetwork; -import com.raoulvdberge.refinedstorage.api.util.IStackList; import net.minecraft.item.ItemStack; import net.minecraft.util.NonNullList; -public class CraftingStepCraft extends CraftingStep { - private INetwork network; +import java.util.List; - private IStackList toExtract; +public class CraftingStepCraft extends CraftingStep { + private CraftingInserter inserter; + private CraftingExtractor extractor; + private NonNullList took; - public CraftingStepCraft(ICraftingPattern pattern, INetwork network, IStackList toExtract, NonNullList took) { + public CraftingStepCraft(ICraftingPattern pattern, CraftingInserter inserter, INetwork network, List toExtract, NonNullList took) { super(pattern); - this.network = network; - this.toExtract = toExtract; + this.inserter = inserter; + this.extractor = new CraftingExtractor(network, toExtract); this.took = took; } @Override - public void execute() { - for (ItemStack toExtractItem : toExtract.getStacks()) { - ItemStack extracted = network.extractItem(toExtractItem, toExtractItem.getCount(), false); + public boolean execute() { + extractor.extractOne(); - if (extracted == null) { - throw new IllegalStateException("Did not extract anything"); + boolean allExtracted = extractor.isAllExtracted(); + + if (allExtracted) { + inserter.insert(pattern.getOutput(took)); + + for (ItemStack byproduct : pattern.getByproducts(took)) { + inserter.insert(byproduct); } } - ItemStack output = pattern.getOutput(took); - - network.insertItem(output, output.getCount(), false); - - for (ItemStack byproduct : pattern.getByproducts(took)) { - network.insertItem(byproduct, byproduct.getCount(), false); - } + return allExtracted; } @Override public boolean canExecute() { - for (ItemStack toExtractItem : toExtract.getStacks()) { - ItemStack inNetwork = network.extractItem(toExtractItem, toExtractItem.getCount(), true); + extractor.updateStatus(); - if (inNetwork == null || inNetwork.getCount() < toExtractItem.getCount()) { - return false; - } - } - - return true; + return extractor.isAllAvailable(); } - public IStackList getToExtract() { - return toExtract; + public CraftingExtractor getExtractor() { + return extractor; } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/task/CraftingTask.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/task/CraftingTask.java index 7220bf27e..97c1538c7 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/task/CraftingTask.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/autocrafting/task/CraftingTask.java @@ -26,6 +26,8 @@ public class CraftingTask implements ICraftingTask { private int quantity; private ICraftingPattern pattern; private List steps = new LinkedList<>(); + private CraftingInserter inserter; + private int ticks = 0; private IStackList toTake = API.instance().createItemStackList(); private IStackList missing = API.instance().createItemStackList(); @@ -33,6 +35,7 @@ public class CraftingTask implements ICraftingTask { public CraftingTask(INetwork network, ItemStack requested, int quantity, ICraftingPattern pattern) { this.network = network; + this.inserter = new CraftingInserter(network); this.requested = requested; this.quantity = quantity; this.pattern = pattern; @@ -128,7 +131,7 @@ public class CraftingTask implements ICraftingTask { } } - return new CraftingStepCraft(pattern, network, itemsToExtract, took); + return new CraftingStepCraft(pattern, inserter, network, new ArrayList<>(itemsToExtract.getStacks()), took); } private int getQuantityPerCraft(ICraftingPattern pattern, ItemStack requested) { @@ -155,8 +158,7 @@ public class CraftingTask implements ICraftingTask { if (!step.isCompleted()) { allCompleted = false; - if (step.canExecute()) { - step.execute(); + if (step.canExecute() && step.execute() && ticks % getTickInterval(step.getPattern().getContainer().getSpeedUpgradeCount()) == 0) { // TODO: speed upgrades handling step.setCompleted(); network.getCraftingManager().sendCraftingMonitorUpdate(); @@ -164,7 +166,11 @@ public class CraftingTask implements ICraftingTask { } } - return allCompleted; + inserter.insertSingle(); + + ticks++; + + return allCompleted && inserter.getItems().isEmpty(); } @Override @@ -211,21 +217,46 @@ public class CraftingTask implements ICraftingTask { elements.commit(); } + if (!inserter.getItems().isEmpty()) { + elements.directAdd(new CraftingMonitorElementText("gui.refinedstorage:crafting_monitor.items_inserting", 16)); + + for (CraftingInserterItem item : inserter.getItems()) { + ICraftingMonitorElement element = new CraftingMonitorElementItemRender( + -1, + item.getStack(), + item.getStack().getCount(), + 32 + ); + + if (item.getStatus() == CraftingInserterItemStatus.FULL) { + element = new CraftingMonitorElementError(element, "gui.refinedstorage:crafting_monitor.network_full"); + } + + elements.add(element); + } + + elements.commit(); + } + if (steps.stream().anyMatch(s -> s instanceof CraftingStepCraft && !s.isCompleted())) { elements.directAdd(new CraftingMonitorElementText("gui.refinedstorage:crafting_monitor.items_crafting", 16)); for (CraftingStep step : steps) { if (step instanceof CraftingStepCraft && !step.isCompleted()) { - for (ItemStack stack : ((CraftingStepCraft) step).getToExtract().getStacks()) { + CraftingExtractor extractor = ((CraftingStepCraft) step).getExtractor(); + + for (int i = 0; i < extractor.getItems().size(); ++i) { + ItemStack item = extractor.getItems().get(i); + CraftingExtractorItemStatus status = extractor.getStatus().get(i); + ICraftingMonitorElement element = new CraftingMonitorElementItemRender( -1, - stack, - stack.getCount(), + item, + item.getCount(), 32 ); - // TODO: cache this - if (!step.canExecute()) { + if (status == CraftingExtractorItemStatus.MISSING) { element = new CraftingMonitorElementInfo(element, "gui.refinedstorage:crafting_monitor.waiting_for_items"); } @@ -304,4 +335,20 @@ public class CraftingTask implements ICraftingTask { public IStackList getMissing() { return missing; } + + private int getTickInterval(int speedUpgrades) { + switch (speedUpgrades) { + case 1: + return 8; + case 2: + return 6; + case 3: + return 4; + case 4: + return 2; + case 0: + default: + return 10; + } + } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeCrafter.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeCrafter.java index 96c198d88..fd0b5b21f 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeCrafter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeCrafter.java @@ -168,7 +168,7 @@ public class NetworkNodeCrafter extends NetworkNode implements ICraftingPatternC } @Override - public int getSpeedUpdateCount() { + public int getSpeedUpgradeCount() { return upgrades.getUpgradeCount(ItemUpgrade.TYPE_SPEED); } diff --git a/src/main/resources/assets/refinedstorage/lang/en_us.lang b/src/main/resources/assets/refinedstorage/lang/en_us.lang index fdd6a9a38..605981fc5 100644 --- a/src/main/resources/assets/refinedstorage/lang/en_us.lang +++ b/src/main/resources/assets/refinedstorage/lang/en_us.lang @@ -33,7 +33,7 @@ gui.refinedstorage:crafting_monitor.items_missing=Items missing gui.refinedstorage:crafting_monitor.machine_in_use=Machine is in use gui.refinedstorage:crafting_monitor.machine_none=No machine found gui.refinedstorage:crafting_monitor.waiting_for_items=Waiting for items -gui.refinedstorage:crafting_monitor.blocked=Blocked, waiting on other task +gui.refinedstorage:crafting_monitor.network_full=Network is full gui.refinedstorage:wireless_transmitter=Wireless Transmitter gui.refinedstorage:wireless_transmitter.distance=%d block(s) gui.refinedstorage:crafter=Crafter diff --git a/src/main/resources/assets/refinedstorage/lang/es_es.lang b/src/main/resources/assets/refinedstorage/lang/es_es.lang index 098a000bb..864560a61 100644 --- a/src/main/resources/assets/refinedstorage/lang/es_es.lang +++ b/src/main/resources/assets/refinedstorage/lang/es_es.lang @@ -33,7 +33,6 @@ gui.refinedstorage:crafting_monitor.items_missing=Faltan objetos gui.refinedstorage:crafting_monitor.machine_in_use=Maquina en uso gui.refinedstorage:crafting_monitor.machine_none=Maquina no Hallada gui.refinedstorage:crafting_monitor.waiting_for_items=Esperando Objetos -gui.refinedstorage:crafting_monitor.blocked=Bloqueado, esperando otra tarea gui.refinedstorage:wireless_transmitter=Emisor inalámbrico gui.refinedstorage:wireless_transmitter.distance=%d bloque(s) gui.refinedstorage:crafter=Fabricador diff --git a/src/main/resources/assets/refinedstorage/lang/fr_fr.lang b/src/main/resources/assets/refinedstorage/lang/fr_fr.lang index 045d61d60..85bc298c2 100755 --- a/src/main/resources/assets/refinedstorage/lang/fr_fr.lang +++ b/src/main/resources/assets/refinedstorage/lang/fr_fr.lang @@ -32,7 +32,6 @@ gui.refinedstorage:crafting_monitor.items_missing=Items manquants gui.refinedstorage:crafting_monitor.machine_in_use=Machine en cours d'utilisation gui.refinedstorage:crafting_monitor.machine_none=Pas de machine disponible gui.refinedstorage:crafting_monitor.waiting_for_items=En attente d'items -gui.refinedstorage:crafting_monitor.blocked=Bloqué, en attente d'autres taches gui.refinedstorage:wireless_transmitter=Emetteur sans-fil gui.refinedstorage:wireless_transmitter.distance=%d bloc(s) gui.refinedstorage:crafter=Crafteur diff --git a/src/main/resources/assets/refinedstorage/lang/ko_kr.lang b/src/main/resources/assets/refinedstorage/lang/ko_kr.lang index bab6e230d..879a1734b 100644 --- a/src/main/resources/assets/refinedstorage/lang/ko_kr.lang +++ b/src/main/resources/assets/refinedstorage/lang/ko_kr.lang @@ -31,7 +31,6 @@ gui.refinedstorage:crafting_monitor.items_missing=부족한 아이템 gui.refinedstorage:crafting_monitor.machine_in_use=기계가 이미 사용 중임 gui.refinedstorage:crafting_monitor.machine_none=기계를 찾을 수 없음 gui.refinedstorage:crafting_monitor.waiting_for_items=아이템을 기다리는 중 -gui.refinedstorage:crafting_monitor.blocked=막힘 - 다른 작업에서 대기 중 gui.refinedstorage:wireless_transmitter=무선 송신기 gui.refinedstorage:wireless_transmitter.distance=%d블럭 gui.refinedstorage:crafter=조합기 diff --git a/src/main/resources/assets/refinedstorage/lang/pt_br.lang b/src/main/resources/assets/refinedstorage/lang/pt_br.lang index 91af922a6..2b01dfb81 100755 --- a/src/main/resources/assets/refinedstorage/lang/pt_br.lang +++ b/src/main/resources/assets/refinedstorage/lang/pt_br.lang @@ -32,7 +32,6 @@ gui.refinedstorage:crafting_monitor.items_missing=Ausência de itens gui.refinedstorage:crafting_monitor.machine_in_use=A máquina está em uso gui.refinedstorage:crafting_monitor.machine_none=Nenhuma máquina encontrada gui.refinedstorage:crafting_monitor.waiting_for_items=Esperando itens -gui.refinedstorage:crafting_monitor.blocked=Bloqueado, aguardando outra tarefa gui.refinedstorage:wireless_transmitter=Transmissor Wireless gui.refinedstorage:wireless_transmitter.distance=%d Blocos gui.refinedstorage:crafter=Fabricador diff --git a/src/main/resources/assets/refinedstorage/lang/ru_ru.lang b/src/main/resources/assets/refinedstorage/lang/ru_ru.lang index aef32da8d..db03ae2a3 100755 --- a/src/main/resources/assets/refinedstorage/lang/ru_ru.lang +++ b/src/main/resources/assets/refinedstorage/lang/ru_ru.lang @@ -33,7 +33,6 @@ gui.refinedstorage:crafting_monitor.items_missing=Отсутствуют пре gui.refinedstorage:crafting_monitor.machine_in_use=Машина используется gui.refinedstorage:crafting_monitor.machine_none=Машина не найдена gui.refinedstorage:crafting_monitor.waiting_for_items=Ожидание предметов -gui.refinedstorage:crafting_monitor.blocked=Заблокировано, ожидание другой задачи gui.refinedstorage:wireless_transmitter=Передатчик gui.refinedstorage:wireless_transmitter.distance=%d блоков gui.refinedstorage:crafter=Крафтер diff --git a/src/main/resources/assets/refinedstorage/lang/zh_cn.lang b/src/main/resources/assets/refinedstorage/lang/zh_cn.lang index c83892cd1..3db776e89 100755 --- a/src/main/resources/assets/refinedstorage/lang/zh_cn.lang +++ b/src/main/resources/assets/refinedstorage/lang/zh_cn.lang @@ -33,7 +33,6 @@ gui.refinedstorage:crafting_monitor.items_missing=物品丢失中 gui.refinedstorage:crafting_monitor.machine_in_use=该机器正在处理其他工作,请稍等 gui.refinedstorage:crafting_monitor.machine_none=找不到机器 gui.refinedstorage:crafting_monitor.waiting_for_items=正在等待物品 -gui.refinedstorage:crafting_monitor.blocked=被阻塞,正在等待其他任务 gui.refinedstorage:wireless_transmitter=无线访问点 gui.refinedstorage:wireless_transmitter.distance=%d 方块 gui.refinedstorage:crafter=装配室