From 0bf1591f0bf4a9913918a6a007df97717da5e934 Mon Sep 17 00:00:00 2001 From: Raoul Van den Berge Date: Sun, 10 Apr 2016 21:26:20 +0200 Subject: [PATCH] Fixes --- .../refinedstorage/gui/GuiController.java | 6 ++- .../gui/GuiCraftingMonitor.java | 53 ++++++++++++++++++- .../network/MessageGridStoragePull.java | 3 +- .../tile/autocrafting/CraftingTask.java | 4 ++ .../autocrafting/TileCraftingMonitor.java | 42 +++++++++++++++ 5 files changed, 103 insertions(+), 5 deletions(-) diff --git a/src/main/java/refinedstorage/gui/GuiController.java b/src/main/java/refinedstorage/gui/GuiController.java index b1c2677c8..45784bf4f 100755 --- a/src/main/java/refinedstorage/gui/GuiController.java +++ b/src/main/java/refinedstorage/gui/GuiController.java @@ -79,12 +79,14 @@ public class GuiController extends GuiBase { TileController.ClientSideMachine machine = machines.get(slot); drawItem(x, y + 5, machine.stack); - GlStateManager.pushMatrix(); - float scale = 0.5f; + GlStateManager.pushMatrix(); + + float scale = 0.5f; GlStateManager.scale(scale, scale, 1); drawString(calculateOffsetOnScale(x + 1, scale), calculateOffsetOnScale(y - 3, scale), machine.stack.getDisplayName()); drawString(calculateOffsetOnScale(x + 21, scale), calculateOffsetOnScale(y + 10, scale), t("misc.refinedstorage:energy_usage_minimal", machine.energyUsage)); + GlStateManager.popMatrix(); if (inBounds(x, y, 16, 16, mouseX, mouseY)) { diff --git a/src/main/java/refinedstorage/gui/GuiCraftingMonitor.java b/src/main/java/refinedstorage/gui/GuiCraftingMonitor.java index 331f9eaa8..9d833ded7 100755 --- a/src/main/java/refinedstorage/gui/GuiCraftingMonitor.java +++ b/src/main/java/refinedstorage/gui/GuiCraftingMonitor.java @@ -1,9 +1,14 @@ package refinedstorage.gui; +import net.minecraft.client.renderer.GlStateManager; +import net.minecraft.client.renderer.RenderHelper; +import net.minecraft.item.ItemStack; import refinedstorage.container.ContainerCraftingMonitor; import refinedstorage.gui.sidebutton.SideButtonRedstoneMode; import refinedstorage.tile.autocrafting.TileCraftingMonitor; +import java.util.List; + public class GuiCraftingMonitor extends GuiBase { public static final int VISIBLE_ROWS = 2; @@ -37,15 +42,61 @@ public class GuiCraftingMonitor extends GuiBase { scrollbar.draw(this); } + private int calculateOffsetOnScale(int pos, float scale) { + float multiplier = (pos / scale); + return (int) multiplier; + } + @Override public void drawForeground(int mouseX, int mouseY) { scrollbar.update(this, mouseX, mouseY); drawString(7, 7, t("gui.refinedstorage:crafting_monitor")); drawString(7, 87, t("container.inventory")); + + int ox = 11; + int x = ox; + int y = 26; + + int slot = getOffset() * 2; + + RenderHelper.enableGUIStandardItemLighting(); + + List tasks = craftingMonitor.getTasks(); + + for (int i = 0; i < 4; ++i) { + if (slot < tasks.size()) { + ItemStack task = tasks.get(slot); + + drawItem(x, y + 5, task); + + GlStateManager.pushMatrix(); + + float scale = 0.5f; + GlStateManager.scale(scale, scale, 1); + drawString(calculateOffsetOnScale(x + 1, scale), calculateOffsetOnScale(y - 3, scale), task.getDisplayName()); + + GlStateManager.popMatrix(); + } + + if (i == 1) { + x = ox; + y += 30; + } else { + x += 75; + } + + slot++; + } + } + + public int getOffset() { + return (int) (scrollbar.getCurrentScroll() / 59f * (float) getRows()); } private int getRows() { - return 0; + int max = (int) Math.ceil((float) craftingMonitor.getTasks().size() / (float) 2); + + return max < 0 ? 0 : max; } } diff --git a/src/main/java/refinedstorage/network/MessageGridStoragePull.java b/src/main/java/refinedstorage/network/MessageGridStoragePull.java index 7a0f6dd69..aea8022f7 100755 --- a/src/main/java/refinedstorage/network/MessageGridStoragePull.java +++ b/src/main/java/refinedstorage/network/MessageGridStoragePull.java @@ -5,7 +5,6 @@ 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.TileController; import refinedstorage.tile.grid.TileGrid; public class MessageGridStoragePull extends MessageHandlerPlayerToServer implements IMessage { @@ -49,7 +48,7 @@ public class MessageGridStoragePull extends MessageHandlerPlayerToServer ingredients = new ArrayList(); diff --git a/src/main/java/refinedstorage/tile/autocrafting/TileCraftingMonitor.java b/src/main/java/refinedstorage/tile/autocrafting/TileCraftingMonitor.java index f521b5bbd..89e6224fe 100755 --- a/src/main/java/refinedstorage/tile/autocrafting/TileCraftingMonitor.java +++ b/src/main/java/refinedstorage/tile/autocrafting/TileCraftingMonitor.java @@ -1,10 +1,18 @@ package refinedstorage.tile.autocrafting; +import io.netty.buffer.ByteBuf; import net.minecraft.inventory.Container; +import net.minecraft.item.ItemStack; +import net.minecraftforge.fml.common.network.ByteBufUtils; import refinedstorage.container.ContainerCraftingMonitor; import refinedstorage.tile.TileMachine; +import java.util.ArrayList; +import java.util.List; + public class TileCraftingMonitor extends TileMachine { + private List tasks = new ArrayList(); + @Override public int getEnergyUsage() { return 2; @@ -14,6 +22,40 @@ public class TileCraftingMonitor extends TileMachine { public void updateMachine() { } + @Override + public void sendContainerData(ByteBuf buf) { + super.sendContainerData(buf); + + if (connected) { + buf.writeInt(controller.getCraftingTasks().size()); + + for (CraftingTask task : controller.getCraftingTasks()) { + ByteBufUtils.writeItemStack(buf, task.getResult()); + } + } else { + buf.writeInt(0); + } + } + + @Override + public void receiveContainerData(ByteBuf buf) { + super.receiveContainerData(buf); + + List crafting = new ArrayList(); + + int size = buf.readInt(); + + for (int i = 0; i < size; ++i) { + crafting.add(ByteBufUtils.readItemStack(buf)); + } + + tasks = crafting; + } + + public List getTasks() { + return tasks; + } + @Override public Class getContainer() { return ContainerCraftingMonitor.class;