diff --git a/src/main/java/refinedstorage/autocrafting/task/BasicCraftingTask.java b/src/main/java/refinedstorage/autocrafting/task/BasicCraftingTask.java index a5dc3c32d..c370df520 100755 --- a/src/main/java/refinedstorage/autocrafting/task/BasicCraftingTask.java +++ b/src/main/java/refinedstorage/autocrafting/task/BasicCraftingTask.java @@ -3,7 +3,6 @@ package refinedstorage.autocrafting.task; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; -import net.minecraft.util.text.TextFormatting; import net.minecraftforge.common.util.Constants; import refinedstorage.RefinedStorageUtils; import refinedstorage.autocrafting.CraftingPattern; @@ -133,49 +132,43 @@ public class BasicCraftingTask implements ICraftingTask { } @Override - public String getInfo() { + public List getInfo() { + List items = new ArrayList(); + if (!updatedOnce) { - return "{not_started_yet}"; + items.add("T=gui.refinedstorage:crafting_monitor.not_started_yet"); + + return items; } - StringBuilder builder = new StringBuilder(); - - builder.append(TextFormatting.YELLOW).append("{missing_items}").append(TextFormatting.RESET).append("\n"); - - int missingItems = 0; + boolean areItemsCrafting = false; for (int i = 0; i < pattern.getInputs().length; ++i) { - ItemStack input = pattern.getInputs()[i]; - - if (checked[i] && !satisfied[i] && !childTasks[i]) { - builder.append("- ").append(input.getDisplayName()).append("\n"); - - missingItems++; - } - } - - if (missingItems == 0) { - builder.append(TextFormatting.GRAY).append(TextFormatting.ITALIC).append("{none}").append(TextFormatting.RESET).append("\n"); - } - - builder.append(TextFormatting.YELLOW).append("{items_crafting}").append(TextFormatting.RESET).append("\n"); - - int itemsCrafting = 0; - - for (int i = 0; i < pattern.getInputs().length; ++i) { - ItemStack input = pattern.getInputs()[i]; - if (!satisfied[i] && childTasks[i]) { - builder.append("- ").append(input.getUnlocalizedName()).append(".name").append("\n"); + if (!areItemsCrafting) { + items.add("T=gui.refinedstorage:crafting_monitor.items_crafting"); - itemsCrafting++; + areItemsCrafting = true; + } + + items.add(pattern.getInputs()[i]); } } - if (itemsCrafting == 0) { - builder.append(TextFormatting.GRAY).append(TextFormatting.ITALIC).append("{none}").append(TextFormatting.RESET).append("\n"); + boolean hasItemsInQueue = false; + + for (int i = 0; i < pattern.getInputs().length; ++i) { + if (!satisfied[i] && !childTasks[i]) { + if (!hasItemsInQueue) { + items.add("T=gui.refinedstorage:crafting_monitor.items_in_queue"); + + hasItemsInQueue = true; + } + + items.add(pattern.getInputs()[i]); + } } - return builder.toString(); + return items; } } diff --git a/src/main/java/refinedstorage/autocrafting/task/ICraftingTask.java b/src/main/java/refinedstorage/autocrafting/task/ICraftingTask.java index 8dba0752e..fde43dfc2 100755 --- a/src/main/java/refinedstorage/autocrafting/task/ICraftingTask.java +++ b/src/main/java/refinedstorage/autocrafting/task/ICraftingTask.java @@ -4,6 +4,8 @@ import net.minecraft.nbt.NBTTagCompound; import refinedstorage.autocrafting.CraftingPattern; import refinedstorage.tile.controller.TileController; +import java.util.List; + public interface ICraftingTask { CraftingPattern getPattern(); @@ -15,5 +17,5 @@ public interface ICraftingTask { void writeToNBT(NBTTagCompound tag); - String getInfo(); + List getInfo(); } diff --git a/src/main/java/refinedstorage/autocrafting/task/ProcessingCraftingTask.java b/src/main/java/refinedstorage/autocrafting/task/ProcessingCraftingTask.java index cdbb05480..d4cc11aa3 100755 --- a/src/main/java/refinedstorage/autocrafting/task/ProcessingCraftingTask.java +++ b/src/main/java/refinedstorage/autocrafting/task/ProcessingCraftingTask.java @@ -2,7 +2,6 @@ package refinedstorage.autocrafting.task; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.text.TextFormatting; import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.ItemHandlerHelper; import refinedstorage.RefinedStorageUtils; @@ -10,6 +9,9 @@ import refinedstorage.autocrafting.CraftingPattern; import refinedstorage.tile.TileCrafter; import refinedstorage.tile.controller.TileController; +import java.util.ArrayList; +import java.util.List; + public class ProcessingCraftingTask implements ICraftingTask { public static final int ID = 1; @@ -125,9 +127,13 @@ public class ProcessingCraftingTask implements ICraftingTask { } @Override - public String getInfo() { - if (!updatedOnce) { - return "{not_started_yet}"; + public List getInfo() { + List items = new ArrayList(); + + return items; + + /*if (!updatedOnce) { + return Arrays.asList("{not_started_yet}"); } StringBuilder builder = new StringBuilder(); @@ -186,6 +192,6 @@ public class ProcessingCraftingTask implements ICraftingTask { builder.append(TextFormatting.GRAY).append(TextFormatting.ITALIC).append("{none}").append(TextFormatting.RESET).append("\n"); } - return builder.toString(); + return builder.toString();*/ } } diff --git a/src/main/java/refinedstorage/gui/GuiCraftingMonitor.java b/src/main/java/refinedstorage/gui/GuiCraftingMonitor.java index a7b6cd0db..1e1938af5 100755 --- a/src/main/java/refinedstorage/gui/GuiCraftingMonitor.java +++ b/src/main/java/refinedstorage/gui/GuiCraftingMonitor.java @@ -3,16 +3,16 @@ package refinedstorage.gui; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.RenderHelper; +import net.minecraft.item.ItemStack; import refinedstorage.RefinedStorage; import refinedstorage.RefinedStorageUtils; import refinedstorage.container.ContainerCraftingMonitor; import refinedstorage.gui.sidebutton.SideButtonRedstoneMode; import refinedstorage.network.MessageCraftingMonitorCancel; +import refinedstorage.network.MessageCraftingMonitorSelect; import refinedstorage.tile.TileCraftingMonitor; import java.io.IOException; -import java.util.Arrays; -import java.util.List; public class GuiCraftingMonitor extends GuiBase { public static final int VISIBLE_ROWS = 3; @@ -25,16 +25,13 @@ public class GuiCraftingMonitor extends GuiBase { private GuiButton cancelButton; private GuiButton cancelAllButton; - private int itemSelected = -1; - - private boolean renderItemSelection; - private int renderItemSelectionX; - private int renderItemSelectionY; + private int selectionX = Integer.MAX_VALUE; + private int selectionY = Integer.MAX_VALUE; private Scrollbar scrollbar = new Scrollbar(157, 20, 12, 89); public GuiCraftingMonitor(ContainerCraftingMonitor container, TileCraftingMonitor craftingMonitor) { - super(container, 176, 230); + super(container, 256, 230); this.craftingMonitor = craftingMonitor; } @@ -65,11 +62,7 @@ public class GuiCraftingMonitor extends GuiBase { scrollbar.setCanScroll(getRows() > VISIBLE_ROWS); scrollbar.setScrollDelta((float) scrollbar.getScrollbarHeight() / (float) getRows()); - if (itemSelected >= craftingMonitor.getTasks().size()) { - itemSelected = -1; - } - - cancelButton.enabled = itemSelected != -1; + cancelButton.enabled = craftingMonitor.hasSelection(); cancelAllButton.enabled = craftingMonitor.getTasks().size() > 0; } @@ -79,11 +72,11 @@ public class GuiCraftingMonitor extends GuiBase { drawTexture(x, y, 0, 0, width, height); - if (renderItemSelection) { - drawTexture(x + renderItemSelectionX, y + renderItemSelectionY, 178, 0, ITEM_WIDTH, ITEM_HEIGHT); - } - scrollbar.draw(this); + + if (craftingMonitor.hasSelection()) { + drawRect(x + selectionX, y + selectionY, x + selectionX + ITEM_WIDTH - 1, y + selectionY + ITEM_HEIGHT - 1, 0xFFCCCCCC); + } } @Override @@ -94,20 +87,15 @@ public class GuiCraftingMonitor extends GuiBase { int x = 8; int y = 20; - int item = getOffset() * 2; + int id = getOffset() * 2; RenderHelper.enableGUIStandardItemLighting(); - List infoLines = null; - - renderItemSelection = false; - for (int i = 0; i < 6; ++i) { - if (item < craftingMonitor.getTasks().size()) { - if (item == itemSelected) { - renderItemSelection = true; - renderItemSelectionX = x; - renderItemSelectionY = y; + if (id < craftingMonitor.getTasks().size()) { + if (id == craftingMonitor.getSelected()) { + selectionX = x; + selectionY = y; } TileCraftingMonitor.ClientSideCraftingTask task = craftingMonitor.getTasks().get(i); @@ -119,29 +107,13 @@ public class GuiCraftingMonitor extends GuiBase { GlStateManager.pushMatrix(); GlStateManager.scale(scale, scale, 1); - drawString(RefinedStorageUtils.calculateOffsetOnScale(x + 5, scale), RefinedStorageUtils.calculateOffsetOnScale(y + 4, scale), task.output.getDisplayName()); + drawString( + RefinedStorageUtils.calculateOffsetOnScale(x + 5, scale), + RefinedStorageUtils.calculateOffsetOnScale(y + 4, scale), + task.output.getDisplayName() + ); GlStateManager.popMatrix(); - - if (inBounds(x + 5, y + 10, 16, 16, mouseX, mouseY)) { - infoLines = Arrays.asList(task.info.split("\n")); - - // @todo use utils method for this - for (int j = 0; j < infoLines.size(); ++j) { - String line = infoLines.get(j); - - if (line.startsWith("- ")) { - infoLines.set(j, "- " + t(line.substring(2))); - } else { - infoLines.set(j, line - .replace("{missing_items}", t("gui.refinedstorage:crafting_monitor.missing_items")) - .replace("{items_crafting}", t("gui.refinedstorage:crafting_monitor.items_crafting")) - .replace("{items_processing}", t("gui.refinedstorage:crafting_monitor.items_processing")) - .replace("{not_started_yet}", t("gui.refinedstorage:crafting_monitor.not_started_yet")) - .replace("{none}", t("gui.none"))); - } - } - } } if (i == 1 || i == 3) { @@ -151,11 +123,46 @@ public class GuiCraftingMonitor extends GuiBase { x += ITEM_WIDTH; } - item++; + id++; } - if (infoLines != null) { - drawTooltip(mouseX, mouseY, infoLines); + if (craftingMonitor.hasSelection()) { + float scale = 0.5f; + + x = 179; + y = 24; + + for (Object item : craftingMonitor.getInfo()) { + if (item instanceof String) { + GlStateManager.pushMatrix(); + GlStateManager.scale(scale, scale, 1); + + String text = (String) item; + + drawString( + RefinedStorageUtils.calculateOffsetOnScale(x, scale), + RefinedStorageUtils.calculateOffsetOnScale(y, scale), + text.startsWith("T=") ? t(text.substring(2)) : text + ); + + GlStateManager.popMatrix(); + } else if (item instanceof ItemStack) { + drawItem(x, y, (ItemStack) item); + + GlStateManager.pushMatrix(); + GlStateManager.scale(scale, scale, 1); + + drawString( + RefinedStorageUtils.calculateOffsetOnScale(x + 20, scale), + RefinedStorageUtils.calculateOffsetOnScale(y + 6, scale), + ((ItemStack) item).getDisplayName() + ); + + GlStateManager.popMatrix(); + } + + y += item instanceof String ? 7 : 16; + } } } @@ -173,8 +180,8 @@ public class GuiCraftingMonitor extends GuiBase { protected void actionPerformed(GuiButton button) throws IOException { super.actionPerformed(button); - if (button == cancelButton && itemSelected != -1) { - RefinedStorage.NETWORK.sendToServer(new MessageCraftingMonitorCancel(craftingMonitor, craftingMonitor.getTasks().get(itemSelected).id)); + if (button == cancelButton && craftingMonitor.hasSelection()) { + RefinedStorage.NETWORK.sendToServer(new MessageCraftingMonitorCancel(craftingMonitor, craftingMonitor.getTasks().get(craftingMonitor.getSelected()).id)); } else if (button == cancelAllButton && craftingMonitor.getTasks().size() > 0) { RefinedStorage.NETWORK.sendToServer(new MessageCraftingMonitorCancel(craftingMonitor, -1)); } @@ -184,23 +191,33 @@ public class GuiCraftingMonitor extends GuiBase { protected void mouseClicked(int mouseX, int mouseY, int mouseButton) throws IOException { super.mouseClicked(mouseX, mouseY, mouseButton); - if (mouseButton == 0 && inBounds(8, 20, 144, 90, mouseX - guiLeft, mouseY - guiTop)) { - itemSelected = -1; + boolean resetSelection = !inBounds(174, 19, 77, 91, mouseX - guiLeft, mouseY - guiTop); - int item = getOffset() * 2; + if (mouseButton == 0 && inBounds(8, 20, 144, 90, mouseX - guiLeft, mouseY - guiTop)) { + int id = getOffset() * 2; for (int y = 0; y < 3; ++y) { for (int x = 0; x < 2; ++x) { int ix = 8 + (x * ITEM_WIDTH); int iy = 20 + (y * ITEM_HEIGHT); - if (inBounds(ix, iy, ITEM_WIDTH, ITEM_HEIGHT, mouseX - guiLeft, mouseY - guiTop) && item < craftingMonitor.getTasks().size()) { - itemSelected = item; + if (inBounds(ix, iy, ITEM_WIDTH, ITEM_HEIGHT, mouseX - guiLeft, mouseY - guiTop) && id < craftingMonitor.getTasks().size()) { + RefinedStorage.NETWORK.sendToServer(new MessageCraftingMonitorSelect(craftingMonitor, craftingMonitor.getTasks().get(id).id)); + + craftingMonitor.setSelected(id); + + resetSelection = false; } - item++; + id++; } } } + + if (resetSelection) { + RefinedStorage.NETWORK.sendToServer(new MessageCraftingMonitorSelect(craftingMonitor, -1)); + + craftingMonitor.setSelected(-1); + } } } diff --git a/src/main/java/refinedstorage/network/MessageCraftingMonitorSelect.java b/src/main/java/refinedstorage/network/MessageCraftingMonitorSelect.java new file mode 100755 index 000000000..acb7c5774 --- /dev/null +++ b/src/main/java/refinedstorage/network/MessageCraftingMonitorSelect.java @@ -0,0 +1,50 @@ +package refinedstorage.network; + +import io.netty.buffer.ByteBuf; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.math.BlockPos; +import net.minecraftforge.fml.common.network.simpleimpl.IMessage; +import refinedstorage.tile.TileCraftingMonitor; + +public class MessageCraftingMonitorSelect extends MessageHandlerPlayerToServer implements IMessage { + private int x; + private int y; + private int z; + private int id; + + public MessageCraftingMonitorSelect() { + } + + public MessageCraftingMonitorSelect(TileCraftingMonitor craftingMonitor, int id) { + this.x = craftingMonitor.getPos().getX(); + this.y = craftingMonitor.getPos().getY(); + this.z = craftingMonitor.getPos().getZ(); + this.id = id; + } + + @Override + public void fromBytes(ByteBuf buf) { + x = buf.readInt(); + y = buf.readInt(); + z = buf.readInt(); + id = buf.readInt(); + } + + @Override + public void toBytes(ByteBuf buf) { + buf.writeInt(x); + buf.writeInt(y); + buf.writeInt(z); + buf.writeInt(id); + } + + @Override + public void handle(MessageCraftingMonitorSelect message, EntityPlayerMP player) { + TileEntity tile = player.worldObj.getTileEntity(new BlockPos(message.x, message.y, message.z)); + + if (tile instanceof TileCraftingMonitor) { + ((TileCraftingMonitor) tile).setSelected(message.id); + } + } +} diff --git a/src/main/java/refinedstorage/proxy/CommonProxy.java b/src/main/java/refinedstorage/proxy/CommonProxy.java index 4166482f3..afdefe6b5 100755 --- a/src/main/java/refinedstorage/proxy/CommonProxy.java +++ b/src/main/java/refinedstorage/proxy/CommonProxy.java @@ -63,6 +63,7 @@ public class CommonProxy { RefinedStorage.NETWORK.registerMessage(MessageGridPatternCreate.class, MessageGridPatternCreate.class, id++, Side.SERVER); RefinedStorage.NETWORK.registerMessage(MessageCraftingMonitorCancel.class, MessageCraftingMonitorCancel.class, id++, Side.SERVER); RefinedStorage.NETWORK.registerMessage(MessageGridItems.class, MessageGridItems.class, id++, Side.CLIENT); + RefinedStorage.NETWORK.registerMessage(MessageCraftingMonitorSelect.class, MessageCraftingMonitorSelect.class, id++, Side.SERVER); NetworkRegistry.INSTANCE.registerGuiHandler(RefinedStorage.INSTANCE, new GuiHandler()); diff --git a/src/main/java/refinedstorage/tile/TileCraftingMonitor.java b/src/main/java/refinedstorage/tile/TileCraftingMonitor.java index 956c7561d..567c1d651 100755 --- a/src/main/java/refinedstorage/tile/TileCraftingMonitor.java +++ b/src/main/java/refinedstorage/tile/TileCraftingMonitor.java @@ -13,6 +13,8 @@ import java.util.List; public class TileCraftingMonitor extends TileMachine { private List tasks = new ArrayList(); + private int selected = -1; + private List info = new ArrayList(); @Override public int getEnergyUsage() { @@ -31,8 +33,6 @@ public class TileCraftingMonitor extends TileMachine { buf.writeInt(controller.getCraftingTasks().size()); for (ICraftingTask task : controller.getCraftingTasks()) { - ByteBufUtils.writeUTF8String(buf, task.getInfo()); - buf.writeInt(task.getPattern().getOutputs().length); for (ItemStack output : task.getPattern().getOutputs()) { @@ -42,6 +42,18 @@ public class TileCraftingMonitor extends TileMachine { } else { buf.writeInt(0); } + + buf.writeInt(info.size()); + + for (Object item : info) { + if (item instanceof String) { + buf.writeInt(0); + ByteBufUtils.writeUTF8String(buf, (String) item); + } else if (item instanceof ItemStack) { + buf.writeInt(1); + ByteBufUtils.writeItemStack(buf, (ItemStack) item); + } + } } @Override @@ -53,24 +65,62 @@ public class TileCraftingMonitor extends TileMachine { List newTasks = new ArrayList(); for (int i = 0; i < size; ++i) { - String info = ByteBufUtils.readUTF8String(buf); - int outputs = buf.readInt(); for (int j = 0; j < outputs; ++j) { - newTasks.add(new ClientSideCraftingTask(ByteBufUtils.readItemStack(buf), i, info)); + newTasks.add(new ClientSideCraftingTask(ByteBufUtils.readItemStack(buf), i)); } } Collections.reverse(newTasks); tasks = newTasks; + + List newInfo = new ArrayList(); + + size = buf.readInt(); + + for (int i = 0; i < size; ++i) { + int type = buf.readInt(); + + if (type == 0) { + newInfo.add(ByteBufUtils.readUTF8String(buf)); + } else if (type == 1) { + newInfo.add(ByteBufUtils.readItemStack(buf)); + } + } + + info = newInfo; } public List getTasks() { return tasks; } + public int getSelected() { + return selected; + } + + public void setSelected(int selected) { + this.selected = selected; + + if (!worldObj.isRemote) { + if (selected != -1) { + info = controller.getCraftingTasks().get(selected).getInfo(); + } else { + info.clear(); + } + } + } + + public boolean hasSelection() { + return selected != -1; + } + + public List getInfo() { + return info; + } + @Override public Class getContainer() { return ContainerCraftingMonitor.class; @@ -79,12 +129,10 @@ public class TileCraftingMonitor extends TileMachine { public class ClientSideCraftingTask { public ItemStack output; public int id; - public String info; - public ClientSideCraftingTask(ItemStack output, int id, String info) { + public ClientSideCraftingTask(ItemStack output, int id) { this.output = output; this.id = id; - this.info = info; } } } diff --git a/src/main/resources/assets/refinedstorage/lang/en_US.lang b/src/main/resources/assets/refinedstorage/lang/en_US.lang index 5b4ec39d7..7a560cd9c 100755 --- a/src/main/resources/assets/refinedstorage/lang/en_US.lang +++ b/src/main/resources/assets/refinedstorage/lang/en_US.lang @@ -20,10 +20,10 @@ gui.refinedstorage:relay=Relay gui.refinedstorage:interface.import=Interface Import gui.refinedstorage:interface.export=Interface Export gui.refinedstorage:crafting_monitor=Crafting Monitor -gui.refinedstorage:crafting_monitor.missing_items=Missing items: -gui.refinedstorage:crafting_monitor.items_crafting=Items crafting: -gui.refinedstorage:crafting_monitor.items_processing=Items processing: -gui.refinedstorage:crafting_monitor.not_started_yet=Crafting task not started yet. +gui.refinedstorage:crafting_monitor.items_in_queue=Items in queue +gui.refinedstorage:crafting_monitor.items_crafting=Items crafting +gui.refinedstorage:crafting_monitor.items_processing=Items processing +gui.refinedstorage:crafting_monitor.not_started_yet=Not started yet gui.refinedstorage:wireless_transmitter=Wireless Transmitter gui.refinedstorage:wireless_transmitter.distance=%d blocks gui.refinedstorage:crafter=Crafter diff --git a/src/main/resources/assets/refinedstorage/lang/fr_FR.lang b/src/main/resources/assets/refinedstorage/lang/fr_FR.lang index 2ef8b0d28..ff9b3fc26 100755 --- a/src/main/resources/assets/refinedstorage/lang/fr_FR.lang +++ b/src/main/resources/assets/refinedstorage/lang/fr_FR.lang @@ -20,10 +20,10 @@ gui.refinedstorage:relay=Relais gui.refinedstorage:interface.import=Interface d'Import gui.refinedstorage:interface.export=Interface d'Export gui.refinedstorage:crafting_monitor=Moniteur de Craft -gui.refinedstorage:crafting_monitor.missing_items=Items manquant: -gui.refinedstorage:crafting_monitor.items_crafting=Items en craft: -gui.refinedstorage:crafting_monitor.items_processing=Items en traitement: -gui.refinedstorage:crafting_monitor.not_started_yet=Tâche crafting pas encore commencé. +gui.refinedstorage:crafting_monitor.missing_items=Items manquant +gui.refinedstorage:crafting_monitor.items_crafting=Items en craft +gui.refinedstorage:crafting_monitor.items_processing=Items en traitement +gui.refinedstorage:crafting_monitor.not_started_yet=Pas encore commencé gui.refinedstorage:wireless_transmitter=Émetteur sans Fil gui.refinedstorage:wireless_transmitter.distance=%d blocks gui.refinedstorage:crafter=Crafteur diff --git a/src/main/resources/assets/refinedstorage/lang/nl_NL.lang b/src/main/resources/assets/refinedstorage/lang/nl_NL.lang index 6c7848c20..0b525d813 100755 --- a/src/main/resources/assets/refinedstorage/lang/nl_NL.lang +++ b/src/main/resources/assets/refinedstorage/lang/nl_NL.lang @@ -20,10 +20,10 @@ gui.refinedstorage:relay=Relais gui.refinedstorage:interface.import=Interface Import gui.refinedstorage:interface.export=Interface Export gui.refinedstorage:crafting_monitor=Crafting Monitor -gui.refinedstorage:crafting_monitor.missing_items=Ontbrekende items: -gui.refinedstorage:crafting_monitor.items_crafting=Items aan het craften: -gui.refinedstorage:crafting_monitor.items_processing=Items aan het verwerken: -gui.refinedstorage:crafting_monitor.not_started_yet=Crafting opdracht nog niet begonnen. +gui.refinedstorage:crafting_monitor.missing_items=Ontbrekende items +gui.refinedstorage:crafting_monitor.items_crafting=Items aan het craften +gui.refinedstorage:crafting_monitor.items_processing=Items aan het verwerken +gui.refinedstorage:crafting_monitor.not_started_yet=Nog niet begonnen gui.refinedstorage:wireless_transmitter=Draadloze Zender gui.refinedstorage:wireless_transmitter.distance=%d blokken gui.refinedstorage:crafter=Crafter diff --git a/src/main/resources/assets/refinedstorage/textures/gui/crafting_monitor.png b/src/main/resources/assets/refinedstorage/textures/gui/crafting_monitor.png index 6311ffae4..ce3769a8f 100755 Binary files a/src/main/resources/assets/refinedstorage/textures/gui/crafting_monitor.png and b/src/main/resources/assets/refinedstorage/textures/gui/crafting_monitor.png differ