This commit is contained in:
Raoul Van den Berge
2016-04-10 21:26:20 +02:00
parent 420fc9fbd2
commit 0bf1591f0b
5 changed files with 103 additions and 5 deletions

View File

@@ -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)) {

View File

@@ -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<ItemStack> 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;
}
}

View File

@@ -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<MessageGridStoragePull> implements IMessage {
@@ -49,7 +48,7 @@ public class MessageGridStoragePull extends MessageHandlerPlayerToServer<Message
TileEntity tile = player.worldObj.getTileEntity(new BlockPos(message.gridX, message.gridY, message.gridZ));
if (tile instanceof TileGrid && ((TileGrid) tile).isConnected()) {
((TileController) tile).handleStoragePull(message.id, message.flags, player);
((TileGrid) tile).getController().handleStoragePull(message.id, message.flags, player);
}
}
}

View File

@@ -19,6 +19,10 @@ public class CraftingTask {
this.ingredients = ingredients;
}
public ItemStack getResult() {
return result;
}
public static CraftingTask create(ItemStack result) {
List<ItemStack> ingredients = new ArrayList<ItemStack>();

View File

@@ -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<ItemStack> tasks = new ArrayList<ItemStack>();
@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<ItemStack> crafting = new ArrayList<ItemStack>();
int size = buf.readInt();
for (int i = 0; i < size; ++i) {
crafting.add(ByteBufUtils.readItemStack(buf));
}
tasks = crafting;
}
public List<ItemStack> getTasks() {
return tasks;
}
@Override
public Class<? extends Container> getContainer() {
return ContainerCraftingMonitor.class;