Blocking Mode for pattern (#785)
* Blocking Mode for pattern * Another approach * Let's not forget about task inside task * Ops * Better Approach * Tweak! * !Fix * Moved stuff under CraftingStep * Blocking Mode for pattern Another approach Let's not forget about task inside task Ops Better Approach Tweak! !Fix Moved stuff under CraftingStep * Removed unneeded stuff
This commit is contained in:
@@ -35,6 +35,11 @@ public interface ICraftingPattern {
|
|||||||
*/
|
*/
|
||||||
boolean isOredict();
|
boolean isOredict();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return true if the crafting pattern may block crafting step
|
||||||
|
*/
|
||||||
|
boolean isBlocking();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the inputs, can contain nulls
|
* @return the inputs, can contain nulls
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -34,4 +34,8 @@ public interface ICraftingPatternContainer {
|
|||||||
* @return the position of this container
|
* @return the position of this container
|
||||||
*/
|
*/
|
||||||
BlockPos getPosition();
|
BlockPos getPosition();
|
||||||
|
|
||||||
|
boolean isBlocked();
|
||||||
|
|
||||||
|
void setBlocked(boolean value);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -168,6 +168,11 @@ public class CraftingPattern implements ICraftingPattern {
|
|||||||
return ItemPattern.isOredict(stack);
|
return ItemPattern.isOredict(stack);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isBlocking() {
|
||||||
|
return ItemPattern.isBlocking(stack);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<ItemStack> getInputs() {
|
public List<ItemStack> getInputs() {
|
||||||
return inputs;
|
return inputs;
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import com.raoulvdberge.refinedstorage.api.autocrafting.ICraftingPattern;
|
|||||||
import com.raoulvdberge.refinedstorage.api.autocrafting.ICraftingPatternContainer;
|
import com.raoulvdberge.refinedstorage.api.autocrafting.ICraftingPatternContainer;
|
||||||
import com.raoulvdberge.refinedstorage.api.autocrafting.ICraftingPatternProvider;
|
import com.raoulvdberge.refinedstorage.api.autocrafting.ICraftingPatternProvider;
|
||||||
import com.raoulvdberge.refinedstorage.api.autocrafting.task.ICraftingStep;
|
import com.raoulvdberge.refinedstorage.api.autocrafting.task.ICraftingStep;
|
||||||
|
import com.raoulvdberge.refinedstorage.api.autocrafting.task.ICraftingTask;
|
||||||
import com.raoulvdberge.refinedstorage.api.network.INetworkMaster;
|
import com.raoulvdberge.refinedstorage.api.network.INetworkMaster;
|
||||||
import com.raoulvdberge.refinedstorage.api.util.IComparer;
|
import com.raoulvdberge.refinedstorage.api.util.IComparer;
|
||||||
import com.raoulvdberge.refinedstorage.api.util.IStackList;
|
import com.raoulvdberge.refinedstorage.api.util.IStackList;
|
||||||
@@ -109,6 +110,10 @@ public abstract class CraftingStep implements ICraftingStep {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setStartedProcessing() {
|
public void setStartedProcessing() {
|
||||||
|
if (getPattern().isBlocking()) {
|
||||||
|
getPattern().getContainer().setBlocked(true);
|
||||||
|
}
|
||||||
|
|
||||||
startedProcessing = true;
|
startedProcessing = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -126,6 +131,10 @@ public abstract class CraftingStep implements ICraftingStep {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (getPattern().isBlocking()) {
|
||||||
|
getPattern().getContainer().setBlocked(false);
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -294,6 +294,12 @@ public class CraftingTask implements ICraftingTask {
|
|||||||
network.insertItemTracked(stack, stack.getCount());
|
network.insertItemTracked(stack, stack.getCount());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (ICraftingStep step : getSteps()) {
|
||||||
|
if (step.getPattern().isBlocking()) {
|
||||||
|
step.getPattern().getContainer().setBlocked(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
network.markCraftingMonitorForUpdate();
|
network.markCraftingMonitorForUpdate();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -348,11 +354,13 @@ public class CraftingTask implements ICraftingTask {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (timesUsed++ <= container.getSpeedUpdateCount()) {
|
if (timesUsed++ <= container.getSpeedUpdateCount()) {
|
||||||
if (!step.hasStartedProcessing() && step.canStartProcessing(oreDictPrepped, networkFluids)) {
|
if (!step.getPattern().isProcessing() || !container.isBlocked()) {
|
||||||
step.setStartedProcessing();
|
if (!step.hasStartedProcessing() && step.canStartProcessing(oreDictPrepped, networkFluids)) {
|
||||||
step.execute(toInsertItems, toInsertFluids);
|
step.setStartedProcessing();
|
||||||
usedContainers.put(container, timesUsed);
|
step.execute(toInsertItems, toInsertFluids);
|
||||||
network.markCraftingMonitorForUpdate();
|
usedContainers.put(container, timesUsed);
|
||||||
|
network.markCraftingMonitorForUpdate();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -535,6 +543,8 @@ public class CraftingTask implements ICraftingTask {
|
|||||||
element = new CraftingMonitorElementError(element, "gui.refinedstorage:crafting_monitor.machine_none");
|
element = new CraftingMonitorElementError(element, "gui.refinedstorage:crafting_monitor.machine_none");
|
||||||
} else if (!step.hasStartedProcessing() && !step.canStartProcessing()) {
|
} else if (!step.hasStartedProcessing() && !step.canStartProcessing()) {
|
||||||
element = new CraftingMonitorElementError(element, "gui.refinedstorage:crafting_monitor.machine_in_use");
|
element = new CraftingMonitorElementError(element, "gui.refinedstorage:crafting_monitor.machine_in_use");
|
||||||
|
} else if (!step.hasStartedProcessing() && step.getPattern().getContainer().isBlocked()) {
|
||||||
|
element = new CraftingMonitorElementError(element, "gui.refinedstorage:crafting_monitor.blocked");
|
||||||
}
|
}
|
||||||
|
|
||||||
elements.add(element);
|
elements.add(element);
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ public class NetworkNodeCrafter extends NetworkNode implements ICraftingPatternC
|
|||||||
public static final String ID = "crafter";
|
public static final String ID = "crafter";
|
||||||
|
|
||||||
private static final String NBT_TRIGGERED_AUTOCRAFTING = "TriggeredAutocrafting";
|
private static final String NBT_TRIGGERED_AUTOCRAFTING = "TriggeredAutocrafting";
|
||||||
|
private static final String NBT_BLOCKED = "Blocked";
|
||||||
|
|
||||||
private ItemHandlerBasic patterns = new ItemHandlerBasic(9, new ItemHandlerListenerNetworkNode(this), s -> {
|
private ItemHandlerBasic patterns = new ItemHandlerBasic(9, new ItemHandlerListenerNetworkNode(this), s -> {
|
||||||
// We can only validate the crafting pattern if the world exists.
|
// We can only validate the crafting pattern if the world exists.
|
||||||
@@ -54,6 +55,7 @@ public class NetworkNodeCrafter extends NetworkNode implements ICraftingPatternC
|
|||||||
private ItemHandlerUpgrade upgrades = new ItemHandlerUpgrade(4, new ItemHandlerListenerNetworkNode(this), ItemUpgrade.TYPE_SPEED);
|
private ItemHandlerUpgrade upgrades = new ItemHandlerUpgrade(4, new ItemHandlerListenerNetworkNode(this), ItemUpgrade.TYPE_SPEED);
|
||||||
|
|
||||||
private boolean triggeredAutocrafting = false;
|
private boolean triggeredAutocrafting = false;
|
||||||
|
private boolean blocked = false;
|
||||||
|
|
||||||
public NetworkNodeCrafter(INetworkNodeHolder holder) {
|
public NetworkNodeCrafter(INetworkNodeHolder holder) {
|
||||||
super(holder);
|
super(holder);
|
||||||
@@ -124,6 +126,10 @@ public class NetworkNodeCrafter extends NetworkNode implements ICraftingPatternC
|
|||||||
|
|
||||||
RSUtils.readItems(patterns, 0, tag);
|
RSUtils.readItems(patterns, 0, tag);
|
||||||
RSUtils.readItems(upgrades, 1, tag);
|
RSUtils.readItems(upgrades, 1, tag);
|
||||||
|
|
||||||
|
if (tag.hasKey(NBT_BLOCKED)) {
|
||||||
|
blocked = tag.getBoolean(NBT_BLOCKED);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -138,6 +144,8 @@ public class NetworkNodeCrafter extends NetworkNode implements ICraftingPatternC
|
|||||||
RSUtils.writeItems(patterns, 0, tag);
|
RSUtils.writeItems(patterns, 0, tag);
|
||||||
RSUtils.writeItems(upgrades, 1, tag);
|
RSUtils.writeItems(upgrades, 1, tag);
|
||||||
|
|
||||||
|
tag.setBoolean(NBT_BLOCKED, blocked);
|
||||||
|
|
||||||
return tag;
|
return tag;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -204,4 +212,16 @@ public class NetworkNodeCrafter extends NetworkNode implements ICraftingPatternC
|
|||||||
public boolean hasConnectivityState() {
|
public boolean hasConnectivityState() {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isBlocked() {
|
||||||
|
return blocked;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setBlocked(boolean value) {
|
||||||
|
blocked = value;
|
||||||
|
|
||||||
|
markDirty();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ public class GuiProcessingPatternEncoder extends GuiBase {
|
|||||||
private TileProcessingPatternEncoder encoder;
|
private TileProcessingPatternEncoder encoder;
|
||||||
|
|
||||||
private GuiCheckBox oredictPattern;
|
private GuiCheckBox oredictPattern;
|
||||||
|
private GuiCheckBox blockingPattern;
|
||||||
|
|
||||||
public GuiProcessingPatternEncoder(ContainerProcessingPatternEncoder container, TileProcessingPatternEncoder encoder) {
|
public GuiProcessingPatternEncoder(ContainerProcessingPatternEncoder container, TileProcessingPatternEncoder encoder) {
|
||||||
super(container, 176, 183);
|
super(container, 176, 183);
|
||||||
@@ -28,6 +29,7 @@ public class GuiProcessingPatternEncoder extends GuiBase {
|
|||||||
@Override
|
@Override
|
||||||
public void init(int x, int y) {
|
public void init(int x, int y) {
|
||||||
oredictPattern = addCheckBox(x + 7, y + 76, I18n.format("misc.refinedstorage:oredict"), TileProcessingPatternEncoder.OREDICT_PATTERN.getValue());
|
oredictPattern = addCheckBox(x + 7, y + 76, I18n.format("misc.refinedstorage:oredict"), TileProcessingPatternEncoder.OREDICT_PATTERN.getValue());
|
||||||
|
blockingPattern = addCheckBox(x + 60, y + 76, I18n.format("misc.refinedstorage:blocking"), TileProcessingPatternEncoder.BLOCKING_TASK_PATTERN.getValue());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -81,6 +83,8 @@ public class GuiProcessingPatternEncoder extends GuiBase {
|
|||||||
|
|
||||||
if (button == oredictPattern) {
|
if (button == oredictPattern) {
|
||||||
TileDataManager.setParameter(TileProcessingPatternEncoder.OREDICT_PATTERN, oredictPattern.isChecked());
|
TileDataManager.setParameter(TileProcessingPatternEncoder.OREDICT_PATTERN, oredictPattern.isChecked());
|
||||||
|
} else if (button == blockingPattern) {
|
||||||
|
TileDataManager.setParameter(TileProcessingPatternEncoder.BLOCKING_TASK_PATTERN, blockingPattern.isChecked());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -104,4 +108,10 @@ public class GuiProcessingPatternEncoder extends GuiBase {
|
|||||||
oredictPattern.setIsChecked(checked);
|
oredictPattern.setIsChecked(checked);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void updateBlockingPattern(boolean checked) {
|
||||||
|
if (blockingPattern != null) {
|
||||||
|
blockingPattern.setIsChecked(checked);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -35,6 +35,7 @@ public class ItemPattern extends ItemBase implements ICraftingPatternProvider {
|
|||||||
private static final String NBT_SLOT = "Slot_%d";
|
private static final String NBT_SLOT = "Slot_%d";
|
||||||
private static final String NBT_OUTPUTS = "Outputs";
|
private static final String NBT_OUTPUTS = "Outputs";
|
||||||
private static final String NBT_OREDICT = "Oredict";
|
private static final String NBT_OREDICT = "Oredict";
|
||||||
|
private static final String NBT_BLOCKING = "Blocking";
|
||||||
|
|
||||||
public ItemPattern() {
|
public ItemPattern() {
|
||||||
super("pattern");
|
super("pattern");
|
||||||
@@ -70,6 +71,10 @@ public class ItemPattern extends ItemBase implements ICraftingPatternProvider {
|
|||||||
if (isOredict(stack)) {
|
if (isOredict(stack)) {
|
||||||
tooltip.add(TextFormatting.BLUE + I18n.format("misc.refinedstorage:pattern.oredict") + TextFormatting.RESET);
|
tooltip.add(TextFormatting.BLUE + I18n.format("misc.refinedstorage:pattern.oredict") + TextFormatting.RESET);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (isBlocking(stack)) {
|
||||||
|
tooltip.add(TextFormatting.BLUE + I18n.format("misc.refinedstorage:blocking") + TextFormatting.RESET);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
tooltip.add(TextFormatting.RED + I18n.format("misc.refinedstorage:pattern.invalid") + TextFormatting.RESET);
|
tooltip.add(TextFormatting.RED + I18n.format("misc.refinedstorage:pattern.invalid") + TextFormatting.RESET);
|
||||||
|
|
||||||
@@ -159,6 +164,10 @@ public class ItemPattern extends ItemBase implements ICraftingPatternProvider {
|
|||||||
return pattern.hasTagCompound() && pattern.getTagCompound().hasKey(NBT_OREDICT) && pattern.getTagCompound().getBoolean(NBT_OREDICT);
|
return pattern.hasTagCompound() && pattern.getTagCompound().hasKey(NBT_OREDICT) && pattern.getTagCompound().getBoolean(NBT_OREDICT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static boolean isBlocking(ItemStack pattern) {
|
||||||
|
return pattern.hasTagCompound() && pattern.getTagCompound().hasKey(NBT_BLOCKING) && pattern.getTagCompound().getBoolean(NBT_BLOCKING);
|
||||||
|
}
|
||||||
|
|
||||||
public static void setOredict(ItemStack pattern, boolean oredict) {
|
public static void setOredict(ItemStack pattern, boolean oredict) {
|
||||||
if (!pattern.hasTagCompound()) {
|
if (!pattern.hasTagCompound()) {
|
||||||
pattern.setTagCompound(new NBTTagCompound());
|
pattern.setTagCompound(new NBTTagCompound());
|
||||||
@@ -167,6 +176,14 @@ public class ItemPattern extends ItemBase implements ICraftingPatternProvider {
|
|||||||
pattern.getTagCompound().setBoolean(NBT_OREDICT, oredict);
|
pattern.getTagCompound().setBoolean(NBT_OREDICT, oredict);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void setBlocking(ItemStack pattern, boolean blockingTask) {
|
||||||
|
if (!pattern.hasTagCompound()) {
|
||||||
|
pattern.setTagCompound(new NBTTagCompound());
|
||||||
|
}
|
||||||
|
|
||||||
|
pattern.getTagCompound().setBoolean(NBT_BLOCKING, blockingTask);
|
||||||
|
}
|
||||||
|
|
||||||
public static void combineItems(List<String> tooltip, boolean displayAmount, NonNullList<ItemStack> stacks) {
|
public static void combineItems(List<String> tooltip, boolean displayAmount, NonNullList<ItemStack> stacks) {
|
||||||
Set<Integer> combinedIndices = new HashSet<>();
|
Set<Integer> combinedIndices = new HashSet<>();
|
||||||
|
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ import javax.annotation.Nullable;
|
|||||||
|
|
||||||
public class TileProcessingPatternEncoder extends TileBase {
|
public class TileProcessingPatternEncoder extends TileBase {
|
||||||
private static final String NBT_OREDICT_PATTERN = "OredictPattern";
|
private static final String NBT_OREDICT_PATTERN = "OredictPattern";
|
||||||
|
private static final String NBT_BLOCKING_PATTERN = "BlockingPattern";
|
||||||
|
|
||||||
public static final TileDataParameter<Boolean> OREDICT_PATTERN = new TileDataParameter<>(DataSerializers.BOOLEAN, false, new ITileDataProducer<Boolean, TileProcessingPatternEncoder>() {
|
public static final TileDataParameter<Boolean> OREDICT_PATTERN = new TileDataParameter<>(DataSerializers.BOOLEAN, false, new ITileDataProducer<Boolean, TileProcessingPatternEncoder>() {
|
||||||
@Override
|
@Override
|
||||||
@@ -42,13 +43,33 @@ public class TileProcessingPatternEncoder extends TileBase {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
public static final TileDataParameter<Boolean> BLOCKING_TASK_PATTERN = new TileDataParameter<>(DataSerializers.BOOLEAN, false, new ITileDataProducer<Boolean, TileProcessingPatternEncoder>() {
|
||||||
|
@Override
|
||||||
|
public Boolean getValue(TileProcessingPatternEncoder tile) {
|
||||||
|
return tile.blockingTask;
|
||||||
|
}
|
||||||
|
}, new ITileDataConsumer<Boolean, TileProcessingPatternEncoder>() {
|
||||||
|
@Override
|
||||||
|
public void setValue(TileProcessingPatternEncoder tile, Boolean value) {
|
||||||
|
tile.blockingTask = value;
|
||||||
|
|
||||||
|
tile.markDirty();
|
||||||
|
}
|
||||||
|
}, parameter -> {
|
||||||
|
if (Minecraft.getMinecraft().currentScreen instanceof GuiProcessingPatternEncoder) {
|
||||||
|
((GuiProcessingPatternEncoder) Minecraft.getMinecraft().currentScreen).updateBlockingPattern(parameter.getValue());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
private ItemHandlerBasic patterns = new ItemHandlerBasic(2, new ItemHandlerListenerTile(this), new ItemValidatorBasic(RSItems.PATTERN));
|
private ItemHandlerBasic patterns = new ItemHandlerBasic(2, new ItemHandlerListenerTile(this), new ItemValidatorBasic(RSItems.PATTERN));
|
||||||
private ItemHandlerBasic configuration = new ItemHandlerBasic(9 * 2, new ItemHandlerListenerTile(this));
|
private ItemHandlerBasic configuration = new ItemHandlerBasic(9 * 2, new ItemHandlerListenerTile(this));
|
||||||
|
|
||||||
private boolean oredictPattern;
|
private boolean oredictPattern;
|
||||||
|
private boolean blockingTask = false;
|
||||||
|
|
||||||
public TileProcessingPatternEncoder() {
|
public TileProcessingPatternEncoder() {
|
||||||
dataManager.addWatchedParameter(OREDICT_PATTERN);
|
dataManager.addWatchedParameter(OREDICT_PATTERN);
|
||||||
|
dataManager.addWatchedParameter(BLOCKING_TASK_PATTERN);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -59,6 +80,7 @@ public class TileProcessingPatternEncoder extends TileBase {
|
|||||||
RSUtils.writeItems(configuration, 1, tag);
|
RSUtils.writeItems(configuration, 1, tag);
|
||||||
|
|
||||||
tag.setBoolean(NBT_OREDICT_PATTERN, oredictPattern);
|
tag.setBoolean(NBT_OREDICT_PATTERN, oredictPattern);
|
||||||
|
tag.setBoolean(NBT_BLOCKING_PATTERN, blockingTask);
|
||||||
|
|
||||||
return tag;
|
return tag;
|
||||||
}
|
}
|
||||||
@@ -73,6 +95,10 @@ public class TileProcessingPatternEncoder extends TileBase {
|
|||||||
if (tag.hasKey(NBT_OREDICT_PATTERN)) {
|
if (tag.hasKey(NBT_OREDICT_PATTERN)) {
|
||||||
oredictPattern = tag.getBoolean(NBT_OREDICT_PATTERN);
|
oredictPattern = tag.getBoolean(NBT_OREDICT_PATTERN);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (tag.hasKey(NBT_BLOCKING_PATTERN)) {
|
||||||
|
blockingTask = tag.getBoolean(NBT_BLOCKING_PATTERN);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onCreatePattern() {
|
public void onCreatePattern() {
|
||||||
@@ -80,6 +106,7 @@ public class TileProcessingPatternEncoder extends TileBase {
|
|||||||
ItemStack pattern = new ItemStack(RSItems.PATTERN);
|
ItemStack pattern = new ItemStack(RSItems.PATTERN);
|
||||||
|
|
||||||
ItemPattern.setOredict(pattern, oredictPattern);
|
ItemPattern.setOredict(pattern, oredictPattern);
|
||||||
|
ItemPattern.setBlocking(pattern, blockingTask);
|
||||||
|
|
||||||
for (int i = 0; i < 18; ++i) {
|
for (int i = 0; i < 18; ++i) {
|
||||||
if (!configuration.getStackInSlot(i).isEmpty()) {
|
if (!configuration.getStackInSlot(i).isEmpty()) {
|
||||||
|
|||||||
@@ -29,6 +29,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_in_use=Machine is in use
|
||||||
gui.refinedstorage:crafting_monitor.machine_none=No machine found
|
gui.refinedstorage:crafting_monitor.machine_none=No machine found
|
||||||
gui.refinedstorage:crafting_monitor.waiting_for_items=Waiting for items
|
gui.refinedstorage:crafting_monitor.waiting_for_items=Waiting for items
|
||||||
|
gui.refinedstorage:crafting_monitor.blocked=Blocked, waiting on other task
|
||||||
gui.refinedstorage:wireless_transmitter=Wireless Transmitter
|
gui.refinedstorage:wireless_transmitter=Wireless Transmitter
|
||||||
gui.refinedstorage:wireless_transmitter.distance=%d blocks
|
gui.refinedstorage:wireless_transmitter.distance=%d blocks
|
||||||
gui.refinedstorage:crafter=Crafter
|
gui.refinedstorage:crafter=Crafter
|
||||||
@@ -101,6 +102,7 @@ misc.refinedstorage:set=Set
|
|||||||
misc.refinedstorage:cancel_all=Cancel All
|
misc.refinedstorage:cancel_all=Cancel All
|
||||||
misc.refinedstorage:priority=Priority
|
misc.refinedstorage:priority=Priority
|
||||||
misc.refinedstorage:oredict=Oredict
|
misc.refinedstorage:oredict=Oredict
|
||||||
|
misc.refinedstorage:blocking=Blocking
|
||||||
|
|
||||||
sidebutton.refinedstorage:compare.1=Compare damage
|
sidebutton.refinedstorage:compare.1=Compare damage
|
||||||
sidebutton.refinedstorage:compare.2=Compare NBT
|
sidebutton.refinedstorage:compare.2=Compare NBT
|
||||||
|
|||||||
Reference in New Issue
Block a user