Reworked the crafting monitor.

This commit is contained in:
raoulvdberge
2018-08-10 00:38:14 +02:00
parent fea420aa57
commit 3cb06508c6
31 changed files with 371 additions and 541 deletions

View File

@@ -1,7 +1,9 @@
# Refined Storage Changelog # Refined Storage Changelog
### 1.6.4 ### 1.6.4
- Image sizes optimized / Improved image compression (samtrion) - Rewrote autocrafting again (raoulvdberge)
- Reworked the Crafting Monitor (raoulvdberge)
- Optimized image sizes and improved image compression (samtrion)
### 1.6.3 ### 1.6.3
- Fixed crash with Wireless Fluid Grid (raoulvdberge) - Fixed crash with Wireless Fluid Grid (raoulvdberge)

View File

@@ -12,13 +12,12 @@ import javax.annotation.Nullable;
*/ */
public interface ICraftingMonitorElement { public interface ICraftingMonitorElement {
/** /**
* @param x position on the x axis to render * @param x position on the x axis to render
* @param y position on the y axis to render * @param y position on the y axis to render
* @param drawers the drawers that this element can use * @param drawers the drawers that this element can use
* @param selected whether the element is selected
*/ */
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
void draw(int x, int y, IElementDrawers drawers, boolean selected); void draw(int x, int y, IElementDrawers drawers);
/** /**
* Returns the id of this element, used for serialization and deserialization over the network. * Returns the id of this element, used for serialization and deserialization over the network.

View File

@@ -36,6 +36,10 @@ public interface IElementDrawers {
return getNullDrawer(); return getNullDrawer();
} }
default IElementDrawer getErrorDrawer() {
return getNullDrawer();
}
/** /**
* @return the font renderer * @return the font renderer
*/ */

View File

@@ -1,72 +0,0 @@
package com.raoulvdberge.refinedstorage.apiimpl.autocrafting.craftingmonitor;
import com.raoulvdberge.refinedstorage.api.autocrafting.craftingmonitor.ICraftingMonitorElement;
import com.raoulvdberge.refinedstorage.api.render.IElementDrawers;
import io.netty.buffer.ByteBuf;
import net.minecraftforge.fml.common.network.ByteBufUtils;
import javax.annotation.Nullable;
public class CraftingMonitorElementColor implements ICraftingMonitorElement {
public static final int COLOR_INFO = 0xFFD9EDF7;
public static final int COLOR_ERROR = 0xFFF2DEDE;
public static final int COLOR_SUCCESS = 0XFFADDBC6;
public static final String ID = "color";
private ICraftingMonitorElement base;
private String tooltip;
private int color;
private int darkenedColor;
public CraftingMonitorElementColor(ICraftingMonitorElement base, @Nullable String tooltip, int color) {
this.base = base;
this.tooltip = tooltip;
this.color = color;
float ratio = 1.0F - 0.1F;
int a = (color >> 24) & 0xFF;
int r = (int) (((color >> 16) & 0xFF) * ratio);
int g = (int) (((color >> 8) & 0xFF) * ratio);
int b = (int) ((color & 0xFF) * ratio);
this.darkenedColor = (a << 24) | (r << 16) | (g << 8) | b;
}
@Override
public void draw(int x, int y, IElementDrawers drawers, boolean selected) {
drawers.getOverlayDrawer().draw(x, y, selected ? darkenedColor : color);
base.draw(x, y, drawers, false);
}
@Override
public String getId() {
return ID;
}
@Override
@Nullable
public String getTooltip() {
return tooltip;
}
@Override
public void write(ByteBuf buf) {
buf.writeInt(color);
ByteBufUtils.writeUTF8String(buf, base.getId());
ByteBufUtils.writeUTF8String(buf, tooltip);
base.write(buf);
}
@Override
public boolean merge(ICraftingMonitorElement element) {
return element.getId().equals(getId()) && elementHashCode() == element.elementHashCode() && base.merge(((CraftingMonitorElementColor) element).base);
}
@Override
public int elementHashCode() {
return base.elementHashCode() ^ tooltip.hashCode() ^ color;
}
}

View File

@@ -0,0 +1,59 @@
package com.raoulvdberge.refinedstorage.apiimpl.autocrafting.craftingmonitor;
import com.raoulvdberge.refinedstorage.api.autocrafting.craftingmonitor.ICraftingMonitorElement;
import com.raoulvdberge.refinedstorage.api.render.IElementDrawers;
import io.netty.buffer.ByteBuf;
import net.minecraft.client.resources.I18n;
import net.minecraft.util.text.TextFormatting;
import net.minecraftforge.fml.common.network.ByteBufUtils;
import javax.annotation.Nullable;
public class CraftingMonitorElementError implements ICraftingMonitorElement {
public static final String ID = "error";
private ICraftingMonitorElement base;
private String message;
public CraftingMonitorElementError(ICraftingMonitorElement base, String message) {
this.base = base;
this.message = message;
}
@Override
@SuppressWarnings("unchecked")
public void draw(int x, int y, IElementDrawers drawers) {
base.draw(x, y, drawers);
drawers.getErrorDrawer().draw(x, y, null);
}
@Nullable
@Override
public String getTooltip() {
return base.getTooltip() + "\n" + TextFormatting.RED + I18n.format(message);
}
@Override
public String getId() {
return ID;
}
@Override
public void write(ByteBuf buf) {
ByteBufUtils.writeUTF8String(buf, base.getId());
ByteBufUtils.writeUTF8String(buf, message);
base.write(buf);
}
@Override
public boolean merge(ICraftingMonitorElement element) {
return elementHashCode() == element.elementHashCode() && base.merge(((CraftingMonitorElementError) element).base);
}
@Override
public int elementHashCode() {
return base.elementHashCode() ^ message.hashCode();
}
}

View File

@@ -7,38 +7,86 @@ import com.raoulvdberge.refinedstorage.util.RenderUtils;
import com.raoulvdberge.refinedstorage.util.StackUtils; import com.raoulvdberge.refinedstorage.util.StackUtils;
import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBuf;
import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.resources.I18n;
import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.fml.relauncher.SideOnly;
import javax.annotation.Nullable;
public class CraftingMonitorElementFluidRender implements ICraftingMonitorElement { public class CraftingMonitorElementFluidRender implements ICraftingMonitorElement {
private static final int COLOR_PROCESSING = 0xFFD9EDF7;
private static final int COLOR_MISSING = 0xFFF2DEDE;
private static final int COLOR_SCHEDULED = 0xFFE8E5CA;
private static final int COLOR_CRAFTING = 0xFFADDBC6;
public static final String ID = "fluid_render"; public static final String ID = "fluid_render";
private FluidStack stack; private FluidStack stack;
private int quantity; private int stored;
private int offset; private int missing;
private int processing;
private int scheduled;
private int crafting;
public CraftingMonitorElementFluidRender(FluidStack stack, int quantity, int offset) { public CraftingMonitorElementFluidRender(FluidStack stack, int stored, int missing, int processing, int scheduled, int crafting) {
this.stack = stack; this.stack = stack;
this.quantity = quantity; this.stored = stored;
this.offset = offset; this.missing = missing;
this.processing = processing;
this.scheduled = scheduled;
this.crafting = crafting;
} }
@Override @Override
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public void draw(int x, int y, IElementDrawers drawers, boolean selected) { public void draw(int x, int y, IElementDrawers drawers) {
if (selected) { if (missing > 0) {
drawers.getOverlayDrawer().draw(x, y, 0xFFCCCCCC); drawers.getOverlayDrawer().draw(x, y, COLOR_MISSING);
} else if (processing > 0) {
drawers.getOverlayDrawer().draw(x, y, COLOR_PROCESSING);
} else if (scheduled > 0) {
drawers.getOverlayDrawer().draw(x, y, COLOR_SCHEDULED);
} else if (crafting > 0) {
drawers.getOverlayDrawer().draw(x, y, COLOR_CRAFTING);
} }
drawers.getFluidDrawer().draw(x + 2 + offset, y + 1, stack); drawers.getFluidDrawer().draw(x + 4, y + 6, stack);
float scale = drawers.getFontRenderer().getUnicodeFlag() ? 1F : 0.5F; float scale = drawers.getFontRenderer().getUnicodeFlag() ? 1F : 0.5F;
GlStateManager.pushMatrix(); GlStateManager.pushMatrix();
GlStateManager.scale(scale, scale, 1); GlStateManager.scale(scale, scale, 1);
drawers.getStringDrawer().draw(RenderUtils.getOffsetOnScale(x + 21 + offset, scale), RenderUtils.getOffsetOnScale(y + 7, scale), API.instance().getQuantityFormatter().formatInBucketForm(quantity) + " " + stack.getLocalizedName()); int yy = y + 7;
if (stored > 0) {
drawers.getStringDrawer().draw(RenderUtils.getOffsetOnScale(x + 25, scale), RenderUtils.getOffsetOnScale(yy, scale), I18n.format("gui.refinedstorage:crafting_monitor.stored", stored));
yy += 7;
}
if (missing > 0) {
drawers.getStringDrawer().draw(RenderUtils.getOffsetOnScale(x + 25, scale), RenderUtils.getOffsetOnScale(yy, scale), I18n.format("gui.refinedstorage:crafting_monitor.missing", missing));
yy += 7;
}
if (processing > 0) {
drawers.getStringDrawer().draw(RenderUtils.getOffsetOnScale(x + 25, scale), RenderUtils.getOffsetOnScale(yy, scale), I18n.format("gui.refinedstorage:crafting_monitor.processing", processing));
yy += 7;
}
if (scheduled > 0) {
drawers.getStringDrawer().draw(RenderUtils.getOffsetOnScale(x + 25, scale), RenderUtils.getOffsetOnScale(yy, scale), I18n.format("gui.refinedstorage:crafting_monitor.scheduled", scheduled));
yy += 7;
}
if (crafting > 0) {
drawers.getStringDrawer().draw(RenderUtils.getOffsetOnScale(x + 25, scale), RenderUtils.getOffsetOnScale(yy, scale), I18n.format("gui.refinedstorage:crafting_monitor.crafting", crafting));
}
GlStateManager.popMatrix(); GlStateManager.popMatrix();
} }
@@ -48,17 +96,30 @@ public class CraftingMonitorElementFluidRender implements ICraftingMonitorElemen
return ID; return ID;
} }
@Nullable
@Override
public String getTooltip() {
return stack.getLocalizedName();
}
@Override @Override
public void write(ByteBuf buf) { public void write(ByteBuf buf) {
StackUtils.writeFluidStack(buf, stack); StackUtils.writeFluidStack(buf, stack);
buf.writeInt(quantity); buf.writeInt(stored);
buf.writeInt(offset); buf.writeInt(missing);
buf.writeInt(processing);
buf.writeInt(scheduled);
buf.writeInt(crafting);
} }
@Override @Override
public boolean merge(ICraftingMonitorElement element) { public boolean merge(ICraftingMonitorElement element) {
if (element.getId().equals(getId()) && elementHashCode() == element.elementHashCode()) { if (element.getId().equals(getId()) && elementHashCode() == element.elementHashCode()) {
this.quantity += ((CraftingMonitorElementFluidRender) element).quantity; this.stored += ((CraftingMonitorElementFluidRender) element).stored;
this.missing += ((CraftingMonitorElementFluidRender) element).missing;
this.processing += ((CraftingMonitorElementFluidRender) element).processing;
this.scheduled += ((CraftingMonitorElementFluidRender) element).scheduled;
this.crafting += ((CraftingMonitorElementFluidRender) element).crafting;
return true; return true;
} }

View File

@@ -7,38 +7,87 @@ import com.raoulvdberge.refinedstorage.util.RenderUtils;
import com.raoulvdberge.refinedstorage.util.StackUtils; import com.raoulvdberge.refinedstorage.util.StackUtils;
import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBuf;
import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.resources.I18n;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.fml.relauncher.SideOnly;
import javax.annotation.Nullable;
import java.util.stream.Collectors;
public class CraftingMonitorElementItemRender implements ICraftingMonitorElement { public class CraftingMonitorElementItemRender implements ICraftingMonitorElement {
private static final int COLOR_PROCESSING = 0xFFD9EDF7;
private static final int COLOR_MISSING = 0xFFF2DEDE;
private static final int COLOR_SCHEDULED = 0xFFE8E5CA;
private static final int COLOR_CRAFTING = 0xFFADDBC6;
public static final String ID = "item_render"; public static final String ID = "item_render";
private ItemStack stack; private ItemStack stack;
private int quantity; private int stored;
private int offset; private int missing;
private int processing;
private int scheduled;
private int crafting;
public CraftingMonitorElementItemRender(ItemStack stack, int quantity, int offset) { public CraftingMonitorElementItemRender(ItemStack stack, int stored, int missing, int processing, int scheduled, int crafting) {
this.stack = stack; this.stack = stack;
this.quantity = quantity; this.stored = stored;
this.offset = offset; this.missing = missing;
this.processing = processing;
this.scheduled = scheduled;
this.crafting = crafting;
} }
@Override @Override
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public void draw(int x, int y, IElementDrawers drawers, boolean selected) { public void draw(int x, int y, IElementDrawers drawers) {
if (selected) { if (missing > 0) {
drawers.getOverlayDrawer().draw(x, y, 0xFFCCCCCC); drawers.getOverlayDrawer().draw(x, y, COLOR_MISSING);
} else if (processing > 0) {
drawers.getOverlayDrawer().draw(x, y, COLOR_PROCESSING);
} else if (scheduled > 0) {
drawers.getOverlayDrawer().draw(x, y, COLOR_SCHEDULED);
} else if (crafting > 0) {
drawers.getOverlayDrawer().draw(x, y, COLOR_CRAFTING);
} }
drawers.getItemDrawer().draw(x + 2 + offset, y + 1, stack); drawers.getItemDrawer().draw(x + 4, y + 6, stack);
float scale = drawers.getFontRenderer().getUnicodeFlag() ? 1F : 0.5F; float scale = drawers.getFontRenderer().getUnicodeFlag() ? 1F : 0.5F;
GlStateManager.pushMatrix(); GlStateManager.pushMatrix();
GlStateManager.scale(scale, scale, 1); GlStateManager.scale(scale, scale, 1);
drawers.getStringDrawer().draw(RenderUtils.getOffsetOnScale(x + 21 + offset, scale), RenderUtils.getOffsetOnScale(y + 7, scale), quantity + "x " + stack.getDisplayName()); int yy = y + 7;
if (stored > 0) {
drawers.getStringDrawer().draw(RenderUtils.getOffsetOnScale(x + 25, scale), RenderUtils.getOffsetOnScale(yy, scale), I18n.format("gui.refinedstorage:crafting_monitor.stored", stored));
yy += 7;
}
if (missing > 0) {
drawers.getStringDrawer().draw(RenderUtils.getOffsetOnScale(x + 25, scale), RenderUtils.getOffsetOnScale(yy, scale), I18n.format("gui.refinedstorage:crafting_monitor.missing", missing));
yy += 7;
}
if (processing > 0) {
drawers.getStringDrawer().draw(RenderUtils.getOffsetOnScale(x + 25, scale), RenderUtils.getOffsetOnScale(yy, scale), I18n.format("gui.refinedstorage:crafting_monitor.processing", processing));
yy += 7;
}
if (scheduled > 0) {
drawers.getStringDrawer().draw(RenderUtils.getOffsetOnScale(x + 25, scale), RenderUtils.getOffsetOnScale(yy, scale), I18n.format("gui.refinedstorage:crafting_monitor.scheduled", scheduled));
yy += 7;
}
if (crafting > 0) {
drawers.getStringDrawer().draw(RenderUtils.getOffsetOnScale(x + 25, scale), RenderUtils.getOffsetOnScale(yy, scale), I18n.format("gui.refinedstorage:crafting_monitor.crafting", crafting));
}
GlStateManager.popMatrix(); GlStateManager.popMatrix();
} }
@@ -48,17 +97,30 @@ public class CraftingMonitorElementItemRender implements ICraftingMonitorElement
return ID; return ID;
} }
@Nullable
@Override
public String getTooltip() {
return RenderUtils.getItemTooltip(this.stack).stream().collect(Collectors.joining("\n"));
}
@Override @Override
public void write(ByteBuf buf) { public void write(ByteBuf buf) {
StackUtils.writeItemStack(buf, stack); StackUtils.writeItemStack(buf, stack);
buf.writeInt(quantity); buf.writeInt(stored);
buf.writeInt(offset); buf.writeInt(missing);
buf.writeInt(processing);
buf.writeInt(scheduled);
buf.writeInt(crafting);
} }
@Override @Override
public boolean merge(ICraftingMonitorElement element) { public boolean merge(ICraftingMonitorElement element) {
if (element.getId().equals(getId()) && elementHashCode() == element.elementHashCode()) { if (element.getId().equals(getId()) && elementHashCode() == element.elementHashCode()) {
this.quantity += ((CraftingMonitorElementItemRender) element).quantity; this.stored += ((CraftingMonitorElementItemRender) element).stored;
this.missing += ((CraftingMonitorElementItemRender) element).missing;
this.processing += ((CraftingMonitorElementItemRender) element).processing;
this.scheduled += ((CraftingMonitorElementItemRender) element).scheduled;
this.crafting += ((CraftingMonitorElementItemRender) element).crafting;
return true; return true;
} }

View File

@@ -1,69 +0,0 @@
package com.raoulvdberge.refinedstorage.apiimpl.autocrafting.craftingmonitor;
import com.raoulvdberge.refinedstorage.api.autocrafting.craftingmonitor.ICraftingMonitorElement;
import com.raoulvdberge.refinedstorage.api.render.IElementDrawers;
import com.raoulvdberge.refinedstorage.util.RenderUtils;
import io.netty.buffer.ByteBuf;
import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.resources.I18n;
import net.minecraftforge.fml.common.network.ByteBufUtils;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
public class CraftingMonitorElementText implements ICraftingMonitorElement {
public static final String ID = "text";
private String text;
private int offset;
public CraftingMonitorElementText(String text, int offset) {
this.text = text;
this.offset = offset;
}
public String getText() {
return text;
}
public int getOffset() {
return offset;
}
@Override
@SideOnly(Side.CLIENT)
public void draw(int x, int y, IElementDrawers drawers, boolean selected) {
if (selected) {
drawers.getOverlayDrawer().draw(x, y, 0xFFCCCCCC);
}
float scale = drawers.getFontRenderer().getUnicodeFlag() ? 1F : 0.5F;
GlStateManager.pushMatrix();
GlStateManager.scale(scale, scale, 1);
drawers.getStringDrawer().draw(RenderUtils.getOffsetOnScale(x + offset, scale), RenderUtils.getOffsetOnScale(y + 7, scale), I18n.format(text));
GlStateManager.popMatrix();
}
@Override
public String getId() {
return ID;
}
@Override
public void write(ByteBuf buf) {
ByteBufUtils.writeUTF8String(buf, text);
buf.writeInt(offset);
}
@Override
public boolean merge(ICraftingMonitorElement element) {
return element.getId().equals(getId()) && elementHashCode() == element.elementHashCode();
}
@Override
public int elementHashCode() {
return text.hashCode();
}
}

View File

@@ -15,10 +15,9 @@ import com.raoulvdberge.refinedstorage.api.util.Action;
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;
import com.raoulvdberge.refinedstorage.apiimpl.API; import com.raoulvdberge.refinedstorage.apiimpl.API;
import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.craftingmonitor.CraftingMonitorElementColor; import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.craftingmonitor.CraftingMonitorElementError;
import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.craftingmonitor.CraftingMonitorElementFluidRender; import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.craftingmonitor.CraftingMonitorElementFluidRender;
import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.craftingmonitor.CraftingMonitorElementItemRender; import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.craftingmonitor.CraftingMonitorElementItemRender;
import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.craftingmonitor.CraftingMonitorElementText;
import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.preview.CraftingPreviewElementFluidStack; import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.preview.CraftingPreviewElementFluidStack;
import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.preview.CraftingPreviewElementItemStack; import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.preview.CraftingPreviewElementItemStack;
import com.raoulvdberge.refinedstorage.apiimpl.storage.disk.StorageDiskFluid; import com.raoulvdberge.refinedstorage.apiimpl.storage.disk.StorageDiskFluid;
@@ -32,6 +31,8 @@ import net.minecraftforge.items.ItemHandlerHelper;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import java.util.*; import java.util.*;
// TODO: Calculation time.
// TODO: Progressive outputs?
public class CraftingTask implements ICraftingTask { public class CraftingTask implements ICraftingTask {
private INetwork network; private INetwork network;
private ICraftingRequestInfo requested; private ICraftingRequestInfo requested;
@@ -716,74 +717,83 @@ public class CraftingTask implements ICraftingTask {
public List<ICraftingMonitorElement> getCraftingMonitorElements() { public List<ICraftingMonitorElement> getCraftingMonitorElements() {
ICraftingMonitorElementList elements = API.instance().createCraftingMonitorElementList(); ICraftingMonitorElementList elements = API.instance().createCraftingMonitorElementList();
if (!missing.isEmpty() && !missingFluids.isEmpty()) { for (ItemStack stack : this.internalStorage.getStacks()) {
elements.directAdd(new CraftingMonitorElementText("gui.refinedstorage:crafting_monitor.missing", 5)); elements.add(new CraftingMonitorElementItemRender(stack, stack.getCount(), 0, 0, 0, 0));
} }
if (!missing.isEmpty()) { for (ItemStack missing : this.missing.getStacks()) {
for (ItemStack missing : this.missing.getStacks()) { elements.add(new CraftingMonitorElementItemRender(missing, 0, missing.getCount(), 0, 0, 0));
elements.add(new CraftingMonitorElementColor(new CraftingMonitorElementItemRender(missing, missing.getCount(), 0), "", CraftingMonitorElementColor.COLOR_ERROR)); }
for (Crafting crafting : this.crafting) {
for (ItemStack receive : crafting.getPattern().getOutputs()) {
elements.add(new CraftingMonitorElementItemRender(receive, 0, 0, 0, 0, receive.getCount()));
}
}
for (Processing processing : this.processing) {
if (processing.getState() == ProcessingState.PROCESSED) {
continue;
} }
elements.commit(); if (processing.getState() == ProcessingState.EXTRACTED_ALL) {
} for (ItemStack put : processing.getItemsToPut()) {
elements.add(new CraftingMonitorElementItemRender(put, 0, 0, put.getCount(), 0, 0));
}
} else if (processing.getState() == ProcessingState.READY || processing.getState() == ProcessingState.MACHINE_DOES_NOT_ACCEPT || processing.getState() == ProcessingState.MACHINE_NONE) {
for (ItemStack receive : processing.getItemsToReceive().getStacks()) {
ICraftingMonitorElement element = new CraftingMonitorElementItemRender(receive, 0, 0, 0, receive.getCount(), 0);
if (!missingFluids.isEmpty()) { if (processing.getState() == ProcessingState.MACHINE_DOES_NOT_ACCEPT) {
for (FluidStack missing : this.missingFluids.getStacks()) { element = new CraftingMonitorElementError(element, "gui.refinedstorage:crafting_monitor.machine_does_not_accept_item");
elements.add(new CraftingMonitorElementColor(new CraftingMonitorElementFluidRender(missing, missing.amount, 0), "", CraftingMonitorElementColor.COLOR_ERROR)); } else if (processing.getState() == ProcessingState.MACHINE_NONE) {
} element = new CraftingMonitorElementError(element, "gui.refinedstorage:crafting_monitor.machine_none");
}
elements.commit(); elements.add(element);
}
if (!this.crafting.isEmpty()) {
elements.directAdd(new CraftingMonitorElementText("gui.refinedstorage:crafting_monitor.items_crafting", 5));
for (Crafting c : this.crafting) {
for (ItemStack s : c.getToExtract().getStacks()) {
elements.add(new CraftingMonitorElementItemRender(s, s.getCount(), 0));
} }
} }
elements.commit();
} }
if (!this.processing.isEmpty()) { elements.commit();
elements.directAdd(new CraftingMonitorElementText("gui.refinedstorage:crafting_monitor.processing", 5));
for (Processing p : this.processing) { for (FluidStack stack : this.internalFluidStorage.getStacks()) {
for (ItemStack s : p.getItemsToReceive().getStacks()) { elements.add(new CraftingMonitorElementFluidRender(stack, stack.amount, 0, 0, 0, 0));
elements.add(wrapAccordingToState(new CraftingMonitorElementItemRender(s, s.getCount(), 0), p.getState(), false));
}
}
elements.commit();
for (Processing p : this.processing) {
for (FluidStack s : p.getFluidsToReceive().getStacks()) {
elements.add(wrapAccordingToState(new CraftingMonitorElementFluidRender(s, s.amount, 0), p.getState(), true));
}
}
elements.commit();
} }
for (FluidStack missing : this.missingFluids.getStacks()) {
elements.add(new CraftingMonitorElementFluidRender(missing, 0, missing.amount, 0, 0, 0));
}
for (Processing processing : this.processing) {
if (processing.getState() == ProcessingState.PROCESSED) {
continue;
}
if (processing.getState() == ProcessingState.EXTRACTED_ALL) {
for (FluidStack put : processing.getFluidsToPut()) {
elements.add(new CraftingMonitorElementFluidRender(put, 0, 0, put.amount, 0, 0));
}
} else if (processing.getState() == ProcessingState.READY || processing.getState() == ProcessingState.MACHINE_DOES_NOT_ACCEPT || processing.getState() == ProcessingState.MACHINE_NONE) {
for (FluidStack receive : processing.getFluidsToReceive().getStacks()) {
ICraftingMonitorElement element = new CraftingMonitorElementFluidRender(receive, 0, 0, 0, receive.amount, 0);
if (processing.getState() == ProcessingState.MACHINE_DOES_NOT_ACCEPT) {
element = new CraftingMonitorElementError(element, "gui.refinedstorage:crafting_monitor.machine_does_not_accept_fluid");
} else if (processing.getState() == ProcessingState.MACHINE_NONE) {
element = new CraftingMonitorElementError(element, "gui.refinedstorage:crafting_monitor.machine_none");
}
elements.add(element);
}
}
}
elements.commit();
return elements.getElements(); return elements.getElements();
} }
private ICraftingMonitorElement wrapAccordingToState(ICraftingMonitorElement element, ProcessingState state, boolean fluid) {
switch (state) {
case MACHINE_NONE:
element = new CraftingMonitorElementColor(element, "gui.refinedstorage:crafting_monitor.machine_none", CraftingMonitorElementColor.COLOR_ERROR);
break;
case MACHINE_DOES_NOT_ACCEPT:
element = new CraftingMonitorElementColor(element, fluid ? "gui.refinedstorage:crafting_monitor.machine_does_not_accept_fluid" : "gui.refinedstorage:crafting_monitor.machine_does_not_accept_item", CraftingMonitorElementColor.COLOR_ERROR);
break;
}
return element;
}
@Override @Override
public List<ICraftingPreviewElement> getPreviewStacks() { public List<ICraftingPreviewElement> getPreviewStacks() {
Map<Integer, CraftingPreviewElementItemStack> map = new LinkedHashMap<>(); Map<Integer, CraftingPreviewElementItemStack> map = new LinkedHashMap<>();

View File

@@ -4,7 +4,6 @@ import com.google.common.base.Optional;
import com.raoulvdberge.refinedstorage.RS; import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.api.autocrafting.ICraftingManager; import com.raoulvdberge.refinedstorage.api.autocrafting.ICraftingManager;
import com.raoulvdberge.refinedstorage.api.autocrafting.task.ICraftingTask; import com.raoulvdberge.refinedstorage.api.autocrafting.task.ICraftingTask;
import com.raoulvdberge.refinedstorage.api.network.grid.IGrid;
import com.raoulvdberge.refinedstorage.tile.craftingmonitor.ICraftingMonitor; import com.raoulvdberge.refinedstorage.tile.craftingmonitor.ICraftingMonitor;
import com.raoulvdberge.refinedstorage.tile.craftingmonitor.TileCraftingMonitor; import com.raoulvdberge.refinedstorage.tile.craftingmonitor.TileCraftingMonitor;
import com.raoulvdberge.refinedstorage.tile.data.TileDataManager; import com.raoulvdberge.refinedstorage.tile.data.TileDataManager;
@@ -23,11 +22,9 @@ import java.util.UUID;
public class NetworkNodeCraftingMonitor extends NetworkNode implements ICraftingMonitor { public class NetworkNodeCraftingMonitor extends NetworkNode implements ICraftingMonitor {
public static final String ID = "crafting_monitor"; public static final String ID = "crafting_monitor";
private static final String NBT_SIZE = "Size";
private static final String NBT_TAB_SELECTED = "TabSelected"; private static final String NBT_TAB_SELECTED = "TabSelected";
private static final String NBT_TAB_PAGE = "TabPage"; private static final String NBT_TAB_PAGE = "TabPage";
private int size = IGrid.SIZE_STRETCH;
private Optional<UUID> tabSelected = Optional.absent(); private Optional<UUID> tabSelected = Optional.absent();
private int tabPage; private int tabPage;
@@ -35,20 +32,6 @@ public class NetworkNodeCraftingMonitor extends NetworkNode implements ICrafting
super(world, pos); super(world, pos);
} }
@Override
public int getSize() {
return world.isRemote ? TileCraftingMonitor.SIZE.getValue() : size;
}
@Override
public void onSizeChanged(int size) {
TileDataManager.setParameter(TileCraftingMonitor.SIZE, size);
}
public void setSize(int size) {
this.size = size;
}
@Override @Override
public int getEnergyUsage() { public int getEnergyUsage() {
return RS.INSTANCE.config.craftingMonitorUsage; return RS.INSTANCE.config.craftingMonitorUsage;
@@ -92,24 +75,6 @@ public class NetworkNodeCraftingMonitor extends NetworkNode implements ICrafting
return network != null ? network.getCraftingManager() : null; return network != null ? network.getCraftingManager() : null;
} }
@Override
public NBTTagCompound writeConfiguration(NBTTagCompound tag) {
super.writeConfiguration(tag);
tag.setInteger(NBT_SIZE, size);
return tag;
}
@Override
public void readConfiguration(NBTTagCompound tag) {
super.readConfiguration(tag);
if (tag.hasKey(NBT_SIZE)) {
size = tag.getInteger(NBT_SIZE);
}
}
@Override @Override
public NBTTagCompound write(NBTTagCompound tag) { public NBTTagCompound write(NBTTagCompound tag) {
super.write(tag); super.write(tag);

View File

@@ -3,7 +3,6 @@ package com.raoulvdberge.refinedstorage.container;
import com.raoulvdberge.refinedstorage.RS; import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.api.autocrafting.ICraftingManager; import com.raoulvdberge.refinedstorage.api.autocrafting.ICraftingManager;
import com.raoulvdberge.refinedstorage.api.autocrafting.craftingmonitor.ICraftingMonitorListener; import com.raoulvdberge.refinedstorage.api.autocrafting.craftingmonitor.ICraftingMonitorListener;
import com.raoulvdberge.refinedstorage.gui.IResizableDisplay;
import com.raoulvdberge.refinedstorage.network.MessageCraftingMonitorElements; import com.raoulvdberge.refinedstorage.network.MessageCraftingMonitorElements;
import com.raoulvdberge.refinedstorage.tile.craftingmonitor.ICraftingMonitor; import com.raoulvdberge.refinedstorage.tile.craftingmonitor.ICraftingMonitor;
import com.raoulvdberge.refinedstorage.tile.craftingmonitor.TileCraftingMonitor; import com.raoulvdberge.refinedstorage.tile.craftingmonitor.TileCraftingMonitor;
@@ -17,23 +16,12 @@ import javax.annotation.Nullable;
public class ContainerCraftingMonitor extends ContainerBase implements ICraftingMonitorListener { public class ContainerCraftingMonitor extends ContainerBase implements ICraftingMonitorListener {
private ICraftingMonitor craftingMonitor; private ICraftingMonitor craftingMonitor;
private IResizableDisplay resizableDisplay;
private boolean addedListener; private boolean addedListener;
public ContainerCraftingMonitor(ICraftingMonitor craftingMonitor, @Nullable TileCraftingMonitor craftingMonitorTile, EntityPlayer player, IResizableDisplay resizableDisplay) { public ContainerCraftingMonitor(ICraftingMonitor craftingMonitor, @Nullable TileCraftingMonitor craftingMonitorTile, EntityPlayer player) {
super(craftingMonitorTile, player); super(craftingMonitorTile, player);
this.craftingMonitor = craftingMonitor; this.craftingMonitor = craftingMonitor;
this.resizableDisplay = resizableDisplay;
initSlots();
}
public void initSlots() {
this.inventorySlots.clear();
this.inventoryItemStacks.clear();
addPlayerInventory(8, resizableDisplay.getYPlayerInventory());
} }
@Override @Override

View File

@@ -2,7 +2,6 @@ package com.raoulvdberge.refinedstorage.container;
import com.raoulvdberge.refinedstorage.api.network.grid.GridType; import com.raoulvdberge.refinedstorage.api.network.grid.GridType;
import com.raoulvdberge.refinedstorage.api.network.grid.IGrid; import com.raoulvdberge.refinedstorage.api.network.grid.IGrid;
import com.raoulvdberge.refinedstorage.api.network.grid.IGridTab;
import com.raoulvdberge.refinedstorage.api.network.grid.handler.IFluidGridHandler; import com.raoulvdberge.refinedstorage.api.network.grid.handler.IFluidGridHandler;
import com.raoulvdberge.refinedstorage.api.network.grid.handler.IItemGridHandler; import com.raoulvdberge.refinedstorage.api.network.grid.handler.IItemGridHandler;
import com.raoulvdberge.refinedstorage.api.storage.IStorageCache; import com.raoulvdberge.refinedstorage.api.storage.IStorageCache;
@@ -108,7 +107,7 @@ public class ContainerGrid extends ContainerBase {
} }
private void addPortableGridSlots() { private void addPortableGridSlots() {
addSlotToContainer(new SlotItemHandler(((IPortableGrid) grid).getDisk(), 0, 204, 6 + getTabDelta())); addSlotToContainer(new SlotItemHandler(((IPortableGrid) grid).getDisk(), 0, 204, 6));
transferManager.addBiTransfer(getPlayer().inventory, ((IPortableGrid) grid).getDisk()); transferManager.addBiTransfer(getPlayer().inventory, ((IPortableGrid) grid).getDisk());
} }
@@ -121,14 +120,14 @@ public class ContainerGrid extends ContainerBase {
} }
for (int i = 0; i < 4; ++i) { for (int i = 0; i < 4; ++i) {
addSlotToContainer(new SlotItemHandler(grid.getFilter(), i, 204, yStart + (18 * i) + getTabDelta())); addSlotToContainer(new SlotItemHandler(grid.getFilter(), i, 204, yStart + (18 * i)));
} }
transferManager.addBiTransfer(getPlayer().inventory, grid.getFilter()); transferManager.addBiTransfer(getPlayer().inventory, grid.getFilter());
} }
private void addCraftingSlots() { private void addCraftingSlots() {
int headerAndSlots = getTabDelta() + display.getTopHeight() + (display.getVisibleRows() * 18); int headerAndSlots = display.getTopHeight() + (display.getVisibleRows() * 18);
int x = 26; int x = 26;
int y = headerAndSlots + 4; int y = headerAndSlots + 4;
@@ -148,7 +147,7 @@ public class ContainerGrid extends ContainerBase {
} }
private void addPatternSlots() { private void addPatternSlots() {
int headerAndSlots = getTabDelta() + display.getTopHeight() + (display.getVisibleRows() * 18); int headerAndSlots = display.getTopHeight() + (display.getVisibleRows() * 18);
addSlotToContainer(new SlotItemHandler(((NetworkNodeGrid) grid).getPatterns(), 0, 172, headerAndSlots + 4)); addSlotToContainer(new SlotItemHandler(((NetworkNodeGrid) grid).getPatterns(), 0, 172, headerAndSlots + 4));
addSlotToContainer(new SlotItemHandler(((NetworkNodeGrid) grid).getPatterns(), 1, 172, headerAndSlots + 40)); addSlotToContainer(new SlotItemHandler(((NetworkNodeGrid) grid).getPatterns(), 1, 172, headerAndSlots + 40));
@@ -196,10 +195,6 @@ public class ContainerGrid extends ContainerBase {
addSlotToContainer(patternResultSlot = (new SlotLegacyDisabled(grid.getCraftingResult(), 0, 134, headerAndSlots + 22).setEnableHandler(() -> !((NetworkNodeGrid) grid).isProcessingPattern()))); addSlotToContainer(patternResultSlot = (new SlotLegacyDisabled(grid.getCraftingResult(), 0, 134, headerAndSlots + 22).setEnableHandler(() -> !((NetworkNodeGrid) grid).isProcessingPattern())));
} }
private int getTabDelta() {
return !grid.getTabs().isEmpty() ? IGridTab.TAB_HEIGHT - 4 : 0;
}
public IGrid getGrid() { public IGrid getGrid() {
return grid; return grid;
} }

View File

@@ -5,7 +5,6 @@ import com.google.common.collect.Lists;
import com.raoulvdberge.refinedstorage.RS; import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.api.autocrafting.craftingmonitor.ICraftingMonitorElement; import com.raoulvdberge.refinedstorage.api.autocrafting.craftingmonitor.ICraftingMonitorElement;
import com.raoulvdberge.refinedstorage.api.autocrafting.task.ICraftingRequestInfo; import com.raoulvdberge.refinedstorage.api.autocrafting.task.ICraftingRequestInfo;
import com.raoulvdberge.refinedstorage.api.network.grid.IGrid;
import com.raoulvdberge.refinedstorage.api.network.grid.IGridTab; import com.raoulvdberge.refinedstorage.api.network.grid.IGridTab;
import com.raoulvdberge.refinedstorage.api.render.IElementDrawer; import com.raoulvdberge.refinedstorage.api.render.IElementDrawer;
import com.raoulvdberge.refinedstorage.api.render.IElementDrawers; import com.raoulvdberge.refinedstorage.api.render.IElementDrawers;
@@ -13,7 +12,6 @@ import com.raoulvdberge.refinedstorage.api.util.IFilter;
import com.raoulvdberge.refinedstorage.apiimpl.API; import com.raoulvdberge.refinedstorage.apiimpl.API;
import com.raoulvdberge.refinedstorage.container.ContainerCraftingMonitor; import com.raoulvdberge.refinedstorage.container.ContainerCraftingMonitor;
import com.raoulvdberge.refinedstorage.gui.control.Scrollbar; import com.raoulvdberge.refinedstorage.gui.control.Scrollbar;
import com.raoulvdberge.refinedstorage.gui.control.SideButtonGridSize;
import com.raoulvdberge.refinedstorage.gui.control.SideButtonRedstoneMode; import com.raoulvdberge.refinedstorage.gui.control.SideButtonRedstoneMode;
import com.raoulvdberge.refinedstorage.gui.control.TabList; import com.raoulvdberge.refinedstorage.gui.control.TabList;
import com.raoulvdberge.refinedstorage.network.MessageCraftingMonitorCancel; import com.raoulvdberge.refinedstorage.network.MessageCraftingMonitorCancel;
@@ -33,18 +31,32 @@ import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.UUID; import java.util.UUID;
public class GuiCraftingMonitor extends GuiBase implements IResizableDisplay { public class GuiCraftingMonitor extends GuiBase {
public class CraftingMonitorElementDrawers extends ElementDrawers { public class CraftingMonitorElementDrawers extends ElementDrawers {
private IElementDrawer<Integer> overlayDrawer = (x, y, color) -> { private IElementDrawer<Integer> overlayDrawer = (x, y, color) -> {
GlStateManager.color(1, 1, 1, 1); GlStateManager.color(1, 1, 1, 1);
GlStateManager.disableLighting(); GlStateManager.disableLighting();
drawRect(x, y, x + ITEM_WIDTH, y + ITEM_HEIGHT - 1, color); drawRect(x, y, x + ITEM_WIDTH, y + ITEM_HEIGHT, color);
};
private IElementDrawer errorDrawer = (x, y, nothing) -> {
GlStateManager.color(1, 1, 1, 1);
GlStateManager.disableLighting();
bindTexture("gui/crafting_preview.png");
drawTexture(x + ITEM_WIDTH - 12 - 2, y + ITEM_HEIGHT - 12 - 2, 0, 244, 12, 12);
}; };
@Override @Override
public IElementDrawer<Integer> getOverlayDrawer() { public IElementDrawer<Integer> getOverlayDrawer() {
return overlayDrawer; return overlayDrawer;
} }
@Override
public IElementDrawer getErrorDrawer() {
return errorDrawer;
}
} }
public static class CraftingMonitorTask implements IGridTab { public static class CraftingMonitorTask implements IGridTab {
@@ -92,8 +104,10 @@ public class GuiCraftingMonitor extends GuiBase implements IResizableDisplay {
} }
} }
private static final int ITEM_WIDTH = 143; private static final int ROWS = 5;
private static final int ITEM_HEIGHT = 18;
private static final int ITEM_WIDTH = 73;
private static final int ITEM_HEIGHT = 29;
private GuiButton cancelButton; private GuiButton cancelButton;
private GuiButton cancelAllButton; private GuiButton cancelAllButton;
@@ -103,12 +117,10 @@ public class GuiCraftingMonitor extends GuiBase implements IResizableDisplay {
private List<IGridTab> tasks = Collections.emptyList(); private List<IGridTab> tasks = Collections.emptyList();
private TabList tabs; private TabList tabs;
private int elementSelected = -1;
private IElementDrawers drawers = new CraftingMonitorElementDrawers(); private IElementDrawers drawers = new CraftingMonitorElementDrawers();
public GuiCraftingMonitor(ContainerCraftingMonitor container, ICraftingMonitor craftingMonitor) { public GuiCraftingMonitor(ContainerCraftingMonitor container, ICraftingMonitor craftingMonitor) {
super(container, 176, 230); super(container, 254, 201);
this.craftingMonitor = craftingMonitor; this.craftingMonitor = craftingMonitor;
@@ -153,47 +165,41 @@ public class GuiCraftingMonitor extends GuiBase implements IResizableDisplay {
@Override @Override
public void init(int x, int y) { public void init(int x, int y) {
((ContainerCraftingMonitor) this.inventorySlots).initSlots();
this.tabs.init(xSize); this.tabs.init(xSize);
this.scrollbar = new Scrollbar(157, getTopHeight() + tabs.getHeight(), 12, (getVisibleRows() * 18) - 1); this.scrollbar = new Scrollbar(235, 20, 12, 149);
if (craftingMonitor.getRedstoneModeParameter() != null) { if (craftingMonitor.getRedstoneModeParameter() != null) {
addSideButton(new SideButtonRedstoneMode(this, craftingMonitor.getRedstoneModeParameter())); addSideButton(new SideButtonRedstoneMode(this, craftingMonitor.getRedstoneModeParameter()));
} }
addSideButton(new SideButtonGridSize(this, () -> craftingMonitor.getSize(), size -> craftingMonitor.onSizeChanged(size)));
String cancel = t("gui.cancel"); String cancel = t("gui.cancel");
String cancelAll = t("misc.refinedstorage:cancel_all"); String cancelAll = t("misc.refinedstorage:cancel_all");
int cancelButtonWidth = 14 + fontRenderer.getStringWidth(cancel); int cancelButtonWidth = 14 + fontRenderer.getStringWidth(cancel);
int cancelAllButtonWidth = 14 + fontRenderer.getStringWidth(cancelAll); int cancelAllButtonWidth = 14 + fontRenderer.getStringWidth(cancelAll);
int by = y + getTopHeight() + (getVisibleRows() * 18) + 3 + tabs.getHeight(); this.cancelButton = addButton(x + 7, y + 201 - 20 - 7, cancelButtonWidth, 20, cancel, false, true);
this.cancelAllButton = addButton(x + 7 + cancelButtonWidth + 4, y + 201 - 20 - 7, cancelAllButtonWidth, 20, cancelAll, false, true);
this.cancelButton = addButton(x + 7, by, cancelButtonWidth, 20, cancel, false, true);
this.cancelAllButton = addButton(x + 7 + cancelButtonWidth + 4, by, cancelAllButtonWidth, 20, cancelAll, false, true);
} }
private void updateScrollbar() { private void updateScrollbar() {
if (scrollbar != null) { if (scrollbar != null) {
scrollbar.setEnabled(getRows() > getVisibleRows()); scrollbar.setEnabled(getRows() > ROWS);
scrollbar.setMaxOffset(getRows() - getVisibleRows()); scrollbar.setMaxOffset(getRows() - ROWS);
} }
} }
private int getRows() {
return Math.max(0, (int) Math.ceil((float) getElements().size() / 3F));
}
@Override @Override
public void update(int x, int y) { public void update(int x, int y) {
updateScrollbar(); updateScrollbar();
this.tabs.update(); this.tabs.update();
if (elementSelected >= getElements().size()) {
elementSelected = -1;
}
if (cancelButton != null) { if (cancelButton != null) {
cancelButton.enabled = hasValidTabSelected(); cancelButton.enabled = hasValidTabSelected();
} }
@@ -231,62 +237,46 @@ public class GuiCraftingMonitor extends GuiBase implements IResizableDisplay {
return tasks.stream().filter(t -> ((CraftingMonitorTask) t).id.equals(id)).findFirst().orElse(null); return tasks.stream().filter(t -> ((CraftingMonitorTask) t).id.equals(id)).findFirst().orElse(null);
} }
@Override
protected void calcHeight() {
this.ySize = getTopHeight() + getBottomHeight() + (getVisibleRows() * 18) + tabs.getHeight();
this.screenHeight = ySize;
}
@Override @Override
public void drawBackground(int x, int y, int mouseX, int mouseY) { public void drawBackground(int x, int y, int mouseX, int mouseY) {
tabs.drawBackground(x, y); tabs.drawBackground(x, y - tabs.getHeight());
bindTexture("gui/crafting_monitor.png"); bindTexture("gui/crafting_preview.png");
int yy = y + tabs.getHeight(); drawTexture(x, y, 0, 0, screenWidth, screenHeight);
drawTexture(x, yy, 0, 0, screenWidth, getTopHeight()); tabs.drawForeground(x, y - tabs.getHeight(), mouseX, mouseY);
yy += getTopHeight();
int rows = getVisibleRows();
for (int i = 0; i < rows; ++i) {
drawTexture(x, yy, 0, getTopHeight() + (i > 0 ? (i == rows - 1 ? 18 * 2 : 18) : 0), screenWidth, 18);
yy += 18;
}
drawTexture(x, yy, 0, getTopHeight() + (18 * 3), screenWidth, getBottomHeight());
tabs.drawForeground(x, y, mouseX, mouseY);
} }
@Override @Override
public void drawForeground(int mouseX, int mouseY) { public void drawForeground(int mouseX, int mouseY) {
drawString(7, 7 + tabs.getHeight(), t(craftingMonitor.getGuiTitle())); drawString(7, 7, t(craftingMonitor.getGuiTitle()));
drawString(7, getYPlayerInventory() - 12, t("container.inventory"));
int item = scrollbar != null ? scrollbar.getOffset() : 0; int item = scrollbar != null ? scrollbar.getOffset() * 3 : 0;
RenderHelper.enableGUIStandardItemLighting(); RenderHelper.enableGUIStandardItemLighting();
int x = 8; int x = 7;
int y = 20 + tabs.getHeight(); int y = 20;
String itemSelectedTooltip = null; String itemSelectedTooltip = null;
for (int i = scrollbar.getOffset(); i < scrollbar.getOffset() + getVisibleRows(); ++i) { for (int i = 0; i < 3 * 5; ++i) {
if (item < getElements().size()) { if (item < getElements().size()) {
ICraftingMonitorElement element = getElements().get(item); ICraftingMonitorElement element = getElements().get(item);
element.draw(x, y, drawers);
if (inBounds(x, y, ITEM_WIDTH, ITEM_HEIGHT, mouseX, mouseY)) { if (inBounds(x, y, ITEM_WIDTH, ITEM_HEIGHT, mouseX, mouseY)) {
itemSelectedTooltip = element.getTooltip(); itemSelectedTooltip = element.getTooltip();
} }
element.draw(x, y, drawers, item == elementSelected); if ((i + 1) % 3 == 0) {
x = 7;
y += ITEM_HEIGHT; y += 30;
} else {
x += 74;
}
} }
item++; item++;
@@ -299,59 +289,6 @@ public class GuiCraftingMonitor extends GuiBase implements IResizableDisplay {
tabs.drawTooltip(fontRenderer, mouseX, mouseY); tabs.drawTooltip(fontRenderer, mouseX, mouseY);
} }
@Override
public int getVisibleRows() {
switch (craftingMonitor.getSize()) {
case IGrid.SIZE_STRETCH:
int screenSpaceAvailable = height - getTopHeight() - getBottomHeight() - tabs.getHeight();
return Math.max(3, Math.min((screenSpaceAvailable / 18) - 3, RS.INSTANCE.config.maxRowsStretch));
case IGrid.SIZE_SMALL:
return 3;
case IGrid.SIZE_MEDIUM:
return 5;
case IGrid.SIZE_LARGE:
return 8;
default:
return 3;
}
}
@Override
public int getRows() {
return getElements().size();
}
@Override
public int getCurrentOffset() {
return scrollbar.getOffset();
}
@Override
public String getSearchFieldText() {
return null;
}
@Override
public int getTopHeight() {
return 20;
}
@Override
public int getBottomHeight() {
return 120;
}
@Override
public int getYPlayerInventory() {
return getTopHeight() + (18 * getVisibleRows()) + 38 + tabs.getHeight();
}
@Override
protected int getSideButtonYStart() {
return super.getSideButtonYStart() + tabs.getHeight();
}
@Override @Override
protected void actionPerformed(GuiButton button) throws IOException { protected void actionPerformed(GuiButton button) throws IOException {
super.actionPerformed(button); super.actionPerformed(button);
@@ -370,20 +307,5 @@ public class GuiCraftingMonitor extends GuiBase implements IResizableDisplay {
super.mouseClicked(mouseX, mouseY, mouseButton); super.mouseClicked(mouseX, mouseY, mouseButton);
this.tabs.mouseClicked(); this.tabs.mouseClicked();
this.elementSelected = -1;
if (mouseButton == 0) {
int item = scrollbar != null ? scrollbar.getOffset() : 0;
for (int i = 0; i < getVisibleRows(); ++i) {
int ix = 8;
int iy = 20 + (i * ITEM_HEIGHT) + tabs.getHeight();
if (inBounds(ix, iy, ITEM_WIDTH, ITEM_HEIGHT, mouseX - guiLeft, mouseY - guiTop) && (item + i) < getElements().size()) {
this.elementSelected = item + i;
}
}
}
} }
} }

View File

@@ -50,7 +50,7 @@ public class GuiHandler implements IGuiHandler {
case RSGui.INTERFACE: case RSGui.INTERFACE:
return new ContainerInterface((TileInterface) tile, player); return new ContainerInterface((TileInterface) tile, player);
case RSGui.CRAFTING_MONITOR: case RSGui.CRAFTING_MONITOR:
return new ContainerCraftingMonitor(((TileCraftingMonitor) tile).getNode(), (TileCraftingMonitor) tile, player, new ResizableDisplayDummy()); return new ContainerCraftingMonitor(((TileCraftingMonitor) tile).getNode(), (TileCraftingMonitor) tile, player);
case RSGui.WIRELESS_TRANSMITTER: case RSGui.WIRELESS_TRANSMITTER:
return new ContainerWirelessTransmitter((TileWirelessTransmitter) tile, player); return new ContainerWirelessTransmitter((TileWirelessTransmitter) tile, player);
case RSGui.CRAFTER: case RSGui.CRAFTER:
@@ -128,7 +128,7 @@ public class GuiHandler implements IGuiHandler {
case RSGui.CRAFTING_MONITOR: { case RSGui.CRAFTING_MONITOR: {
NetworkNodeCraftingMonitor node = ((TileCraftingMonitor) tile).getNode(); NetworkNodeCraftingMonitor node = ((TileCraftingMonitor) tile).getNode();
GuiCraftingMonitor gui = new GuiCraftingMonitor(null, node); GuiCraftingMonitor gui = new GuiCraftingMonitor(null, node);
gui.inventorySlots = new ContainerCraftingMonitor(node, (TileCraftingMonitor) tile, player, gui); gui.inventorySlots = new ContainerCraftingMonitor(node, (TileCraftingMonitor) tile, player);
return gui; return gui;
} }
case RSGui.WIRELESS_TRANSMITTER: case RSGui.WIRELESS_TRANSMITTER:
@@ -186,12 +186,12 @@ public class GuiHandler implements IGuiHandler {
WirelessCraftingMonitor craftingMonitor = getCraftingMonitor(player, hand, networkDimension); WirelessCraftingMonitor craftingMonitor = getCraftingMonitor(player, hand, networkDimension);
GuiCraftingMonitor gui = new GuiCraftingMonitor(null, craftingMonitor); GuiCraftingMonitor gui = new GuiCraftingMonitor(null, craftingMonitor);
gui.inventorySlots = new ContainerCraftingMonitor(craftingMonitor, null, player, gui); gui.inventorySlots = new ContainerCraftingMonitor(craftingMonitor, null, player);
return gui; return gui;
} }
private ContainerCraftingMonitor getCraftingMonitorContainer(EntityPlayer player, int hand, int networkDimension) { private ContainerCraftingMonitor getCraftingMonitorContainer(EntityPlayer player, int hand, int networkDimension) {
return new ContainerCraftingMonitor(getCraftingMonitor(player, hand, networkDimension), null, player, new ResizableDisplayDummy()); return new ContainerCraftingMonitor(getCraftingMonitor(player, hand, networkDimension), null, player);
} }
private ContainerFilter getFilterContainer(EntityPlayer player, int hand) { private ContainerFilter getFilterContainer(EntityPlayer player, int hand) {

View File

@@ -78,7 +78,7 @@ public class GuiGrid extends GuiBase implements IResizableDisplay {
@Override @Override
protected void calcHeight() { protected void calcHeight() {
this.ySize = getTopHeight() + getBottomHeight() + (getVisibleRows() * 18) + tabs.getHeight(); this.ySize = getTopHeight() + getBottomHeight() + (getVisibleRows() * 18);
this.screenHeight = ySize; this.screenHeight = ySize;
} }
@@ -88,14 +88,14 @@ public class GuiGrid extends GuiBase implements IResizableDisplay {
this.tabs.init(xSize - 32); this.tabs.init(xSize - 32);
this.scrollbar = new Scrollbar(174, tabs.getHeight() + getTopHeight(), 12, (getVisibleRows() * 18) - 2); this.scrollbar = new Scrollbar(174, getTopHeight(), 12, (getVisibleRows() * 18) - 2);
if (grid instanceof NetworkNodeGrid || grid instanceof TilePortableGrid) { if (grid instanceof NetworkNodeGrid || grid instanceof TilePortableGrid) {
addSideButton(new SideButtonRedstoneMode(this, grid instanceof NetworkNodeGrid ? TileGrid.REDSTONE_MODE : TilePortableGrid.REDSTONE_MODE)); addSideButton(new SideButtonRedstoneMode(this, grid instanceof NetworkNodeGrid ? TileGrid.REDSTONE_MODE : TilePortableGrid.REDSTONE_MODE));
} }
int sx = x + 80 + 1; int sx = x + 80 + 1;
int sy = y + 6 + 1 + tabs.getHeight(); int sy = y + 6 + 1;
if (searchField == null) { if (searchField == null) {
searchField = new TextFieldSearch(0, fontRenderer, sx, sy, 88 - 6); searchField = new TextFieldSearch(0, fontRenderer, sx, sy, 88 - 6);
@@ -118,7 +118,7 @@ public class GuiGrid extends GuiBase implements IResizableDisplay {
addSideButton(new SideButtonGridSize(this, () -> grid.getSize(), size -> grid.onSizeChanged(size))); addSideButton(new SideButtonGridSize(this, () -> grid.getSize(), size -> grid.onSizeChanged(size)));
if (grid.getGridType() == GridType.PATTERN) { if (grid.getGridType() == GridType.PATTERN) {
processingPattern = addCheckBox(x + 7, y + tabs.getHeight() + getTopHeight() + (getVisibleRows() * 18) + 60, t("misc.refinedstorage:processing"), TileGrid.PROCESSING_PATTERN.getValue()); processingPattern = addCheckBox(x + 7, y + getTopHeight() + (getVisibleRows() * 18) + 60, t("misc.refinedstorage:processing"), TileGrid.PROCESSING_PATTERN.getValue());
boolean showOredict = true; boolean showOredict = true;
if (((NetworkNodeGrid) grid).isProcessingPattern() && ((NetworkNodeGrid) grid).getType() == IType.FLUIDS) { if (((NetworkNodeGrid) grid).isProcessingPattern() && ((NetworkNodeGrid) grid).getType() == IType.FLUIDS) {
@@ -126,7 +126,7 @@ public class GuiGrid extends GuiBase implements IResizableDisplay {
} }
if (showOredict) { if (showOredict) {
oredictPattern = addCheckBox(processingPattern.x + processingPattern.width + 5, y + tabs.getHeight() + getTopHeight() + (getVisibleRows() * 18) + 60, t("misc.refinedstorage:oredict"), TileGrid.OREDICT_PATTERN.getValue()); oredictPattern = addCheckBox(processingPattern.x + processingPattern.width + 5, y + getTopHeight() + (getVisibleRows() * 18) + 60, t("misc.refinedstorage:oredict"), TileGrid.OREDICT_PATTERN.getValue());
} }
addSideButton(new SideButtonType(this, TileGrid.PROCESSING_TYPE)); addSideButton(new SideButtonType(this, TileGrid.PROCESSING_TYPE));
@@ -135,11 +135,6 @@ public class GuiGrid extends GuiBase implements IResizableDisplay {
updateScrollbar(); updateScrollbar();
} }
@Override
protected int getSideButtonYStart() {
return super.getSideButtonYStart() + tabs.getHeight();
}
public IGrid getGrid() { public IGrid getGrid() {
return grid; return grid;
} }
@@ -181,7 +176,7 @@ public class GuiGrid extends GuiBase implements IResizableDisplay {
@Override @Override
public int getYPlayerInventory() { public int getYPlayerInventory() {
int yp = tabs.getHeight() + getTopHeight() + (getVisibleRows() * 18); int yp = getTopHeight() + (getVisibleRows() * 18);
if (grid.getGridType() == GridType.NORMAL || grid.getGridType() == GridType.FLUID) { if (grid.getGridType() == GridType.NORMAL || grid.getGridType() == GridType.FLUID) {
yp += 16; yp += 16;
@@ -213,7 +208,7 @@ public class GuiGrid extends GuiBase implements IResizableDisplay {
public int getVisibleRows() { public int getVisibleRows() {
switch (grid.getSize()) { switch (grid.getSize()) {
case IGrid.SIZE_STRETCH: case IGrid.SIZE_STRETCH:
int screenSpaceAvailable = height - getTopHeight() - getBottomHeight() - tabs.getHeight(); int screenSpaceAvailable = height - getTopHeight() - getBottomHeight();
return Math.max(3, Math.min((screenSpaceAvailable / 18) - 3, RS.INSTANCE.config.maxRowsStretch)); return Math.max(3, Math.min((screenSpaceAvailable / 18) - 3, RS.INSTANCE.config.maxRowsStretch));
case IGrid.SIZE_SMALL: case IGrid.SIZE_SMALL:
@@ -236,7 +231,7 @@ public class GuiGrid extends GuiBase implements IResizableDisplay {
} }
public boolean isOverSlotArea(int mouseX, int mouseY) { public boolean isOverSlotArea(int mouseX, int mouseY) {
return inBounds(7, 19 + tabs.getHeight(), 162, 18 * getVisibleRows(), mouseX, mouseY); return inBounds(7, 19, 162, 18 * getVisibleRows(), mouseX, mouseY);
} }
public int getSlotNumber() { public int getSlotNumber() {
@@ -244,7 +239,7 @@ public class GuiGrid extends GuiBase implements IResizableDisplay {
} }
private boolean isOverClear(int mouseX, int mouseY) { private boolean isOverClear(int mouseX, int mouseY) {
int y = tabs.getHeight() + getTopHeight() + (getVisibleRows() * 18) + 4; int y = getTopHeight() + (getVisibleRows() * 18) + 4;
switch (grid.getGridType()) { switch (grid.getGridType()) {
case CRAFTING: case CRAFTING:
@@ -261,12 +256,12 @@ public class GuiGrid extends GuiBase implements IResizableDisplay {
} }
private boolean isOverCreatePattern(int mouseX, int mouseY) { private boolean isOverCreatePattern(int mouseX, int mouseY) {
return grid.getGridType() == GridType.PATTERN && inBounds(172, tabs.getHeight() + getTopHeight() + (getVisibleRows() * 18) + 22, 16, 16, mouseX, mouseY) && ((NetworkNodeGrid) grid).canCreatePattern(); return grid.getGridType() == GridType.PATTERN && inBounds(172, getTopHeight() + (getVisibleRows() * 18) + 22, 16, 16, mouseX, mouseY) && ((NetworkNodeGrid) grid).canCreatePattern();
} }
@Override @Override
public void drawBackground(int x, int y, int mouseX, int mouseY) { public void drawBackground(int x, int y, int mouseX, int mouseY) {
tabs.drawBackground(x, y); tabs.drawBackground(x, y - tabs.getHeight());
if (grid instanceof IPortableGrid) { if (grid instanceof IPortableGrid) {
bindTexture("gui/portable_grid.png"); bindTexture("gui/portable_grid.png");
@@ -278,12 +273,12 @@ public class GuiGrid extends GuiBase implements IResizableDisplay {
bindTexture("gui/grid.png"); bindTexture("gui/grid.png");
} }
int yy = y + tabs.getHeight(); int yy = y;
drawTexture(x, yy, 0, 0, screenWidth - 34, getTopHeight()); drawTexture(x, yy, 0, 0, screenWidth - 34, getTopHeight());
// Filters and/or portable grid disk // Filters and/or portable grid disk
drawTexture(x + screenWidth - 34 + 4, y + tabs.getHeight(), 197, 0, 30, grid instanceof IPortableGrid ? 114 : 82); drawTexture(x + screenWidth - 34 + 4, y, 197, 0, 30, grid instanceof IPortableGrid ? 114 : 82);
int rows = getVisibleRows(); int rows = getVisibleRows();
@@ -308,10 +303,10 @@ public class GuiGrid extends GuiBase implements IResizableDisplay {
ty = 2; ty = 2;
} }
drawTexture(x + 172, y + tabs.getHeight() + getTopHeight() + (getVisibleRows() * 18) + 22, 240, ty * 16, 16, 16); drawTexture(x + 172, y + getTopHeight() + (getVisibleRows() * 18) + 22, 240, ty * 16, 16, 16);
} }
tabs.drawForeground(x, y, mouseX, mouseY); tabs.drawForeground(x, y - tabs.getHeight(), mouseX, mouseY);
if (searchField != null) { if (searchField != null) {
searchField.drawTextBox(); searchField.drawTextBox();
@@ -331,11 +326,11 @@ public class GuiGrid extends GuiBase implements IResizableDisplay {
@Override @Override
public void drawForeground(int mouseX, int mouseY) { public void drawForeground(int mouseX, int mouseY) {
drawString(7, 7 + tabs.getHeight(), t(grid.getGuiTitle())); drawString(7, 7, t(grid.getGuiTitle()));
drawString(7, getYPlayerInventory() - 12, t("container.inventory")); drawString(7, getYPlayerInventory() - 12, t("container.inventory"));
int x = 8; int x = 8;
int y = 19 + tabs.getHeight(); int y = 19;
this.slotNumber = -1; this.slotNumber = -1;

View File

@@ -2,7 +2,6 @@ package com.raoulvdberge.refinedstorage.item;
import com.google.common.base.Optional; import com.google.common.base.Optional;
import com.raoulvdberge.refinedstorage.RS; import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.api.network.grid.IGrid;
import com.raoulvdberge.refinedstorage.api.network.item.INetworkItem; import com.raoulvdberge.refinedstorage.api.network.item.INetworkItem;
import com.raoulvdberge.refinedstorage.api.network.item.INetworkItemHandler; import com.raoulvdberge.refinedstorage.api.network.item.INetworkItemHandler;
import com.raoulvdberge.refinedstorage.apiimpl.network.item.NetworkItemWirelessCraftingMonitor; import com.raoulvdberge.refinedstorage.apiimpl.network.item.NetworkItemWirelessCraftingMonitor;
@@ -19,7 +18,6 @@ import javax.annotation.Nonnull;
import java.util.UUID; import java.util.UUID;
public class ItemWirelessCraftingMonitor extends ItemNetworkItem { public class ItemWirelessCraftingMonitor extends ItemNetworkItem {
public static final String NBT_SIZE = "Size";
public static final String NBT_TAB_SELECTED = "TabSelected"; public static final String NBT_TAB_SELECTED = "TabSelected";
public static final String NBT_TAB_PAGE = "TabPage"; public static final String NBT_TAB_PAGE = "TabPage";
@@ -39,22 +37,6 @@ public class ItemWirelessCraftingMonitor extends ItemNetworkItem {
return new NetworkItemWirelessCraftingMonitor(handler, player, stack); return new NetworkItemWirelessCraftingMonitor(handler, player, stack);
} }
public static int getSize(ItemStack stack) {
if (stack.hasTagCompound() && stack.getTagCompound().hasKey(NBT_SIZE)) {
return stack.getTagCompound().getInteger(NBT_SIZE);
}
return IGrid.SIZE_STRETCH;
}
public static void setSize(ItemStack stack, int size) {
if (!stack.hasTagCompound()) {
stack.setTagCompound(new NBTTagCompound());
}
stack.getTagCompound().setInteger(NBT_SIZE, size);
}
public static Optional<UUID> getTabSelected(ItemStack stack) { public static Optional<UUID> getTabSelected(ItemStack stack) {
if (stack.hasTagCompound() && stack.getTagCompound().hasUniqueId(NBT_TAB_SELECTED)) { if (stack.hasTagCompound() && stack.getTagCompound().hasUniqueId(NBT_TAB_SELECTED)) {
return Optional.of(stack.getTagCompound().getUniqueId(NBT_TAB_SELECTED)); return Optional.of(stack.getTagCompound().getUniqueId(NBT_TAB_SELECTED));

View File

@@ -1,7 +1,6 @@
package com.raoulvdberge.refinedstorage.network; package com.raoulvdberge.refinedstorage.network;
import com.google.common.base.Optional; import com.google.common.base.Optional;
import com.raoulvdberge.refinedstorage.api.network.grid.IGrid;
import com.raoulvdberge.refinedstorage.container.ContainerCraftingMonitor; import com.raoulvdberge.refinedstorage.container.ContainerCraftingMonitor;
import com.raoulvdberge.refinedstorage.item.ItemWirelessCraftingMonitor; import com.raoulvdberge.refinedstorage.item.ItemWirelessCraftingMonitor;
import com.raoulvdberge.refinedstorage.tile.craftingmonitor.WirelessCraftingMonitor; import com.raoulvdberge.refinedstorage.tile.craftingmonitor.WirelessCraftingMonitor;
@@ -14,23 +13,19 @@ import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
import java.util.UUID; import java.util.UUID;
public class MessageWirelessCraftingMonitorSettings extends MessageHandlerPlayerToServer<MessageWirelessCraftingMonitorSettings> implements IMessage { public class MessageWirelessCraftingMonitorSettings extends MessageHandlerPlayerToServer<MessageWirelessCraftingMonitorSettings> implements IMessage {
private int size;
private Optional<UUID> tabSelected = Optional.absent(); private Optional<UUID> tabSelected = Optional.absent();
private int tabPage; private int tabPage;
public MessageWirelessCraftingMonitorSettings() { public MessageWirelessCraftingMonitorSettings() {
} }
public MessageWirelessCraftingMonitorSettings(int size, Optional<UUID> tabSelected, int tabPage) { public MessageWirelessCraftingMonitorSettings(Optional<UUID> tabSelected, int tabPage) {
this.size = size;
this.tabSelected = tabSelected; this.tabSelected = tabSelected;
this.tabPage = tabPage; this.tabPage = tabPage;
} }
@Override @Override
public void fromBytes(ByteBuf buf) { public void fromBytes(ByteBuf buf) {
size = buf.readInt();
if (buf.readBoolean()) { if (buf.readBoolean()) {
tabSelected = Optional.of(UUID.fromString(ByteBufUtils.readUTF8String(buf))); tabSelected = Optional.of(UUID.fromString(ByteBufUtils.readUTF8String(buf)));
} }
@@ -40,8 +35,6 @@ public class MessageWirelessCraftingMonitorSettings extends MessageHandlerPlayer
@Override @Override
public void toBytes(ByteBuf buf) { public void toBytes(ByteBuf buf) {
buf.writeInt(size);
buf.writeBoolean(tabSelected.isPresent()); buf.writeBoolean(tabSelected.isPresent());
if (tabSelected.isPresent()) { if (tabSelected.isPresent()) {
ByteBufUtils.writeUTF8String(buf, tabSelected.get().toString()); ByteBufUtils.writeUTF8String(buf, tabSelected.get().toString());
@@ -52,10 +45,9 @@ public class MessageWirelessCraftingMonitorSettings extends MessageHandlerPlayer
@Override @Override
public void handle(MessageWirelessCraftingMonitorSettings message, EntityPlayerMP player) { public void handle(MessageWirelessCraftingMonitorSettings message, EntityPlayerMP player) {
if (player.openContainer instanceof ContainerCraftingMonitor && IGrid.isValidSize(message.size)) { if (player.openContainer instanceof ContainerCraftingMonitor) {
ItemStack stack = ((WirelessCraftingMonitor) ((ContainerCraftingMonitor) player.openContainer).getCraftingMonitor()).getStack(); ItemStack stack = ((WirelessCraftingMonitor) ((ContainerCraftingMonitor) player.openContainer).getCraftingMonitor()).getStack();
ItemWirelessCraftingMonitor.setSize(stack, message.size);
ItemWirelessCraftingMonitor.setTabPage(stack, message.tabPage); ItemWirelessCraftingMonitor.setTabPage(stack, message.tabPage);
ItemWirelessCraftingMonitor.setTabSelected(stack, message.tabSelected); ItemWirelessCraftingMonitor.setTabSelected(stack, message.tabSelected);
} }

View File

@@ -5,10 +5,9 @@ import com.raoulvdberge.refinedstorage.RSBlocks;
import com.raoulvdberge.refinedstorage.RSItems; import com.raoulvdberge.refinedstorage.RSItems;
import com.raoulvdberge.refinedstorage.api.storage.StorageType; import com.raoulvdberge.refinedstorage.api.storage.StorageType;
import com.raoulvdberge.refinedstorage.apiimpl.API; import com.raoulvdberge.refinedstorage.apiimpl.API;
import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.craftingmonitor.CraftingMonitorElementColor; import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.craftingmonitor.CraftingMonitorElementError;
import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.craftingmonitor.CraftingMonitorElementFluidRender; import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.craftingmonitor.CraftingMonitorElementFluidRender;
import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.craftingmonitor.CraftingMonitorElementItemRender; import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.craftingmonitor.CraftingMonitorElementItemRender;
import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.craftingmonitor.CraftingMonitorElementText;
import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.preview.CraftingPreviewElementError; import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.preview.CraftingPreviewElementError;
import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.preview.CraftingPreviewElementFluidStack; import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.preview.CraftingPreviewElementFluidStack;
import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.preview.CraftingPreviewElementItemStack; import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.preview.CraftingPreviewElementItemStack;
@@ -94,15 +93,13 @@ public class ProxyCommon {
API.instance().getCraftingTaskRegistry().add(CraftingTaskFactory.ID, new CraftingTaskFactory()); API.instance().getCraftingTaskRegistry().add(CraftingTaskFactory.ID, new CraftingTaskFactory());
API.instance().getCraftingMonitorElementRegistry().add(CraftingMonitorElementItemRender.ID, buf -> new CraftingMonitorElementItemRender(StackUtils.readItemStack(buf), buf.readInt(), buf.readInt())); API.instance().getCraftingMonitorElementRegistry().add(CraftingMonitorElementItemRender.ID, buf -> new CraftingMonitorElementItemRender(StackUtils.readItemStack(buf), buf.readInt(), buf.readInt(), buf.readInt(), buf.readInt(), buf.readInt()));
API.instance().getCraftingMonitorElementRegistry().add(CraftingMonitorElementFluidRender.ID, buf -> new CraftingMonitorElementFluidRender(StackUtils.readFluidStack(buf), buf.readInt(), buf.readInt())); API.instance().getCraftingMonitorElementRegistry().add(CraftingMonitorElementFluidRender.ID, buf -> new CraftingMonitorElementFluidRender(StackUtils.readFluidStack(buf), buf.readInt(), buf.readInt(), buf.readInt(), buf.readInt(), buf.readInt()));
API.instance().getCraftingMonitorElementRegistry().add(CraftingMonitorElementText.ID, buf -> new CraftingMonitorElementText(ByteBufUtils.readUTF8String(buf), buf.readInt())); API.instance().getCraftingMonitorElementRegistry().add(CraftingMonitorElementError.ID, buf -> {
API.instance().getCraftingMonitorElementRegistry().add(CraftingMonitorElementColor.ID, buf -> {
int color = buf.readInt();
String id = ByteBufUtils.readUTF8String(buf); String id = ByteBufUtils.readUTF8String(buf);
String tooltip = ByteBufUtils.readUTF8String(buf); String message = ByteBufUtils.readUTF8String(buf);
return new CraftingMonitorElementColor(API.instance().getCraftingMonitorElementRegistry().get(id).apply(buf), tooltip, color); return new CraftingMonitorElementError(API.instance().getCraftingMonitorElementRegistry().get(id).apply(buf), message);
}); });
API.instance().getCraftingPreviewElementRegistry().add(CraftingPreviewElementItemStack.ID, CraftingPreviewElementItemStack::fromByteBuf); API.instance().getCraftingPreviewElementRegistry().add(CraftingPreviewElementItemStack.ID, CraftingPreviewElementItemStack::fromByteBuf);

View File

@@ -25,10 +25,6 @@ public interface ICraftingMonitor {
@Nullable @Nullable
ICraftingManager getCraftingManager(); ICraftingManager getCraftingManager();
int getSize();
void onSizeChanged(int size);
boolean isActive(); boolean isActive();
void onClosed(EntityPlayer player); void onClosed(EntityPlayer player);

View File

@@ -1,10 +1,7 @@
package com.raoulvdberge.refinedstorage.tile.craftingmonitor; package com.raoulvdberge.refinedstorage.tile.craftingmonitor;
import com.google.common.base.Optional; import com.google.common.base.Optional;
import com.raoulvdberge.refinedstorage.api.network.grid.IGrid;
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNodeCraftingMonitor; import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNodeCraftingMonitor;
import com.raoulvdberge.refinedstorage.gui.GuiBase;
import com.raoulvdberge.refinedstorage.gui.GuiCraftingMonitor;
import com.raoulvdberge.refinedstorage.tile.TileNode; import com.raoulvdberge.refinedstorage.tile.TileNode;
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter; import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
import net.minecraft.network.datasync.DataSerializers; import net.minecraft.network.datasync.DataSerializers;
@@ -15,12 +12,6 @@ import javax.annotation.Nonnull;
import java.util.UUID; import java.util.UUID;
public class TileCraftingMonitor extends TileNode<NetworkNodeCraftingMonitor> { public class TileCraftingMonitor extends TileNode<NetworkNodeCraftingMonitor> {
public static final TileDataParameter<Integer, TileCraftingMonitor> SIZE = new TileDataParameter<>(DataSerializers.VARINT, IGrid.SIZE_STRETCH, t -> t.getNode().getSize(), (t, v) -> {
if (IGrid.isValidSize(v)) {
t.getNode().setSize(v);
t.getNode().markDirty();
}
}, (initial, p) -> GuiBase.executeLater(GuiCraftingMonitor.class, GuiBase::initGui));
public static final TileDataParameter<Optional<UUID>, TileCraftingMonitor> TAB_SELECTED = new TileDataParameter<>(DataSerializers.OPTIONAL_UNIQUE_ID, Optional.absent(), t -> t.getNode().getTabSelected(), (t, v) -> { public static final TileDataParameter<Optional<UUID>, TileCraftingMonitor> TAB_SELECTED = new TileDataParameter<>(DataSerializers.OPTIONAL_UNIQUE_ID, Optional.absent(), t -> t.getNode().getTabSelected(), (t, v) -> {
if (v.isPresent() && t.getNode().getTabSelected().isPresent() && v.get().equals(t.getNode().getTabSelected().get())) { if (v.isPresent() && t.getNode().getTabSelected().isPresent() && v.get().equals(t.getNode().getTabSelected().get())) {
t.getNode().setTabSelected(Optional.absent()); t.getNode().setTabSelected(Optional.absent());
@@ -38,7 +29,6 @@ public class TileCraftingMonitor extends TileNode<NetworkNodeCraftingMonitor> {
}); });
public TileCraftingMonitor() { public TileCraftingMonitor() {
dataManager.addWatchedParameter(SIZE);
dataManager.addWatchedParameter(TAB_SELECTED); dataManager.addWatchedParameter(TAB_SELECTED);
dataManager.addWatchedParameter(TAB_PAGE); dataManager.addWatchedParameter(TAB_PAGE);
} }

View File

@@ -5,8 +5,6 @@ import com.raoulvdberge.refinedstorage.RS;
import com.raoulvdberge.refinedstorage.api.autocrafting.ICraftingManager; import com.raoulvdberge.refinedstorage.api.autocrafting.ICraftingManager;
import com.raoulvdberge.refinedstorage.api.autocrafting.task.ICraftingTask; import com.raoulvdberge.refinedstorage.api.autocrafting.task.ICraftingTask;
import com.raoulvdberge.refinedstorage.api.network.INetwork; import com.raoulvdberge.refinedstorage.api.network.INetwork;
import com.raoulvdberge.refinedstorage.gui.GuiBase;
import com.raoulvdberge.refinedstorage.gui.GuiCraftingMonitor;
import com.raoulvdberge.refinedstorage.item.ItemWirelessCraftingMonitor; import com.raoulvdberge.refinedstorage.item.ItemWirelessCraftingMonitor;
import com.raoulvdberge.refinedstorage.network.MessageWirelessCraftingMonitorSettings; import com.raoulvdberge.refinedstorage.network.MessageWirelessCraftingMonitorSettings;
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter; import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
@@ -28,7 +26,6 @@ public class WirelessCraftingMonitor implements ICraftingMonitor {
private int networkDimension; private int networkDimension;
private BlockPos network; private BlockPos network;
private int size;
private int tabPage; private int tabPage;
private Optional<UUID> tabSelected; private Optional<UUID> tabSelected;
@@ -36,7 +33,6 @@ public class WirelessCraftingMonitor implements ICraftingMonitor {
this.stack = stack; this.stack = stack;
this.networkDimension = networkDimension; this.networkDimension = networkDimension;
this.network = new BlockPos(ItemWirelessCraftingMonitor.getX(stack), ItemWirelessCraftingMonitor.getY(stack), ItemWirelessCraftingMonitor.getZ(stack)); this.network = new BlockPos(ItemWirelessCraftingMonitor.getX(stack), ItemWirelessCraftingMonitor.getY(stack), ItemWirelessCraftingMonitor.getZ(stack));
this.size = ItemWirelessCraftingMonitor.getSize(stack);
this.tabPage = ItemWirelessCraftingMonitor.getTabPage(stack); this.tabPage = ItemWirelessCraftingMonitor.getTabPage(stack);
this.tabSelected = ItemWirelessCraftingMonitor.getTabSelected(stack); this.tabSelected = ItemWirelessCraftingMonitor.getTabSelected(stack);
} }
@@ -83,20 +79,6 @@ public class WirelessCraftingMonitor implements ICraftingMonitor {
return null; return null;
} }
@Override
public int getSize() {
return size;
}
@Override
public void onSizeChanged(int size) {
this.size = size;
GuiBase.executeLater(GuiCraftingMonitor.class, GuiBase::initGui);
RS.INSTANCE.network.sendToServer(new MessageWirelessCraftingMonitorSettings(size, tabSelected, tabPage));
}
private INetwork getNetwork() { private INetwork getNetwork() {
World world = DimensionManager.getWorld(networkDimension); World world = DimensionManager.getWorld(networkDimension);
@@ -145,7 +127,7 @@ public class WirelessCraftingMonitor implements ICraftingMonitor {
this.tabSelected = taskId; this.tabSelected = taskId;
} }
RS.INSTANCE.network.sendToServer(new MessageWirelessCraftingMonitorSettings(size, tabSelected, tabPage)); RS.INSTANCE.network.sendToServer(new MessageWirelessCraftingMonitorSettings(tabSelected, tabPage));
} }
@Override @Override
@@ -153,7 +135,7 @@ public class WirelessCraftingMonitor implements ICraftingMonitor {
if (page >= 0) { if (page >= 0) {
this.tabPage = page; this.tabPage = page;
RS.INSTANCE.network.sendToServer(new MessageWirelessCraftingMonitorSettings(size, tabSelected, tabPage)); RS.INSTANCE.network.sendToServer(new MessageWirelessCraftingMonitorSettings(tabSelected, tabPage));
} }
} }
} }

View File

@@ -27,17 +27,11 @@ gui.refinedstorage:interface.export=Exportschnittstelle
gui.refinedstorage:crafting_monitor=Fertigungsmonitor gui.refinedstorage:crafting_monitor=Fertigungsmonitor
gui.refinedstorage:wireless_crafting_monitor=Mobile Fertigungskonsole gui.refinedstorage:wireless_crafting_monitor=Mobile Fertigungskonsole
gui.refinedstorage:crafting_monitor.tooltip.requested=%d angefragt gui.refinedstorage:crafting_monitor.tooltip.requested=%d angefragt
gui.refinedstorage:crafting_monitor.items_crafting=Items Herstellen
gui.refinedstorage:crafting_monitor.processing=Verarbeitung gui.refinedstorage:crafting_monitor.processing=Verarbeitung
gui.refinedstorage:crafting_monitor.items_inserting=Items Einfügen
gui.refinedstorage:crafting_monitor.missing=Fehlt gui.refinedstorage:crafting_monitor.missing=Fehlt
gui.refinedstorage:crafting_monitor.machine_does_not_accept_item=Maschine akzeptiert Item nicht gui.refinedstorage:crafting_monitor.machine_does_not_accept_item=Maschine akzeptiert Item nicht
gui.refinedstorage:crafting_monitor.machine_does_not_accept_fluid=Maschine akzeptiert Flüssigkeit nicht gui.refinedstorage:crafting_monitor.machine_does_not_accept_fluid=Maschine akzeptiert Flüssigkeit nicht
gui.refinedstorage:crafting_monitor.machine_none=Keine Maschine gefunden gui.refinedstorage:crafting_monitor.machine_none=Keine Maschine gefunden
gui.refinedstorage:crafting_monitor.waiting_for_items=Warte auf Items
gui.refinedstorage:crafting_monitor.waiting_for_fluids=Warte auf Flüssigkeiten
gui.refinedstorage:crafting_monitor.network_full=Netzwerk ist voll
gui.refinedstorage:crafting_monitor.inserted_into_machine=Items gesendet, warte auf Ergebnis
gui.refinedstorage:wireless_transmitter=Funksender gui.refinedstorage:wireless_transmitter=Funksender
gui.refinedstorage:wireless_transmitter.distance=%d Blöcke gui.refinedstorage:wireless_transmitter.distance=%d Blöcke
gui.refinedstorage:crafter=Fertigungseinheit gui.refinedstorage:crafter=Fertigungseinheit

View File

@@ -27,17 +27,14 @@ gui.refinedstorage:interface.export=Interface Export
gui.refinedstorage:crafting_monitor=Crafting Monitor gui.refinedstorage:crafting_monitor=Crafting Monitor
gui.refinedstorage:wireless_crafting_monitor=Wireless Crafting Monitor gui.refinedstorage:wireless_crafting_monitor=Wireless Crafting Monitor
gui.refinedstorage:crafting_monitor.tooltip.requested=%d requested gui.refinedstorage:crafting_monitor.tooltip.requested=%d requested
gui.refinedstorage:crafting_monitor.items_crafting=Items crafting gui.refinedstorage:crafting_monitor.stored=Stored: %d
gui.refinedstorage:crafting_monitor.processing=Processing gui.refinedstorage:crafting_monitor.missing=Missing: %d
gui.refinedstorage:crafting_monitor.items_inserting=Items inserting gui.refinedstorage:crafting_monitor.processing=Processing: %d
gui.refinedstorage:crafting_monitor.missing=Missing gui.refinedstorage:crafting_monitor.scheduled=Scheduled: %d
gui.refinedstorage:crafting_monitor.crafting=Crafting: %d
gui.refinedstorage:crafting_monitor.machine_does_not_accept_item=Machine doesn't accept item gui.refinedstorage:crafting_monitor.machine_does_not_accept_item=Machine doesn't accept item
gui.refinedstorage:crafting_monitor.machine_does_not_accept_fluid=Machine doesn't accept fluid gui.refinedstorage:crafting_monitor.machine_does_not_accept_fluid=Machine doesn't accept fluid
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_fluids=Waiting for fluids
gui.refinedstorage:crafting_monitor.network_full=Network is full
gui.refinedstorage:crafting_monitor.inserted_into_machine=Inserted into machine, waiting for result
gui.refinedstorage:wireless_transmitter=Wireless Transmitter gui.refinedstorage:wireless_transmitter=Wireless Transmitter
gui.refinedstorage:wireless_transmitter.distance=%d block(s) gui.refinedstorage:wireless_transmitter.distance=%d block(s)
gui.refinedstorage:crafter=Crafter gui.refinedstorage:crafter=Crafter

View File

@@ -24,10 +24,7 @@ gui.refinedstorage:interface.import=Interfaz de Entrada
gui.refinedstorage:interface.export=Interfaz de Salida gui.refinedstorage:interface.export=Interfaz de Salida
gui.refinedstorage:crafting_monitor=Monitor de fabricación gui.refinedstorage:crafting_monitor=Monitor de fabricación
gui.refinedstorage:wireless_crafting_monitor=Monitor Remoto de Fabricación gui.refinedstorage:wireless_crafting_monitor=Monitor Remoto de Fabricación
gui.refinedstorage:crafting_monitor.items_crafting=Fabrica Objetos
gui.refinedstorage:crafting_monitor.items_inserting=Inserta Objetos
gui.refinedstorage:crafting_monitor.machine_none=Maquina no Hallada gui.refinedstorage:crafting_monitor.machine_none=Maquina no Hallada
gui.refinedstorage:crafting_monitor.waiting_for_items=Esperando Objetos
gui.refinedstorage:wireless_transmitter=Emisor inalámbrico gui.refinedstorage:wireless_transmitter=Emisor inalámbrico
gui.refinedstorage:wireless_transmitter.distance=%d bloque(s) gui.refinedstorage:wireless_transmitter.distance=%d bloque(s)
gui.refinedstorage:crafter=Fabricador gui.refinedstorage:crafter=Fabricador

View File

@@ -23,10 +23,7 @@ gui.refinedstorage:interface.import=Interface d'import
gui.refinedstorage:interface.export=Interface d'export gui.refinedstorage:interface.export=Interface d'export
gui.refinedstorage:crafting_monitor=Moniteur de craft gui.refinedstorage:crafting_monitor=Moniteur de craft
gui.refinedstorage:wireless_crafting_monitor=Moniteur de craft sans-fil gui.refinedstorage:wireless_crafting_monitor=Moniteur de craft sans-fil
gui.refinedstorage:crafting_monitor.items_crafting=Items en craft
gui.refinedstorage:crafting_monitor.items_inserting=Insertion d'items
gui.refinedstorage:crafting_monitor.machine_none=Pas de machine disponible gui.refinedstorage:crafting_monitor.machine_none=Pas de machine disponible
gui.refinedstorage:crafting_monitor.waiting_for_items=En attente d'items
gui.refinedstorage:wireless_transmitter=Emetteur sans-fil gui.refinedstorage:wireless_transmitter=Emetteur sans-fil
gui.refinedstorage:wireless_transmitter.distance=%d bloc(s) gui.refinedstorage:wireless_transmitter.distance=%d bloc(s)
gui.refinedstorage:crafter=Crafteur gui.refinedstorage:crafter=Crafteur

View File

@@ -22,10 +22,7 @@ gui.refinedstorage:interface.import=인터페이스 입력
gui.refinedstorage:interface.export=인터페이스 출력 gui.refinedstorage:interface.export=인터페이스 출력
gui.refinedstorage:crafting_monitor=조합 모니터 gui.refinedstorage:crafting_monitor=조합 모니터
gui.refinedstorage:wireless_crafting_monitor=무선 조합 모니터 gui.refinedstorage:wireless_crafting_monitor=무선 조합 모니터
gui.refinedstorage:crafting_monitor.items_crafting=제작할 아이템
gui.refinedstorage:crafting_monitor.items_inserting=삽입할 아이템
gui.refinedstorage:crafting_monitor.machine_none=기계를 찾을 수 없음 gui.refinedstorage:crafting_monitor.machine_none=기계를 찾을 수 없음
gui.refinedstorage:crafting_monitor.waiting_for_items=아이템을 기다리는 중
gui.refinedstorage:wireless_transmitter=무선 송신기 gui.refinedstorage:wireless_transmitter=무선 송신기
gui.refinedstorage:wireless_transmitter.distance=%d블럭 gui.refinedstorage:wireless_transmitter.distance=%d블럭
gui.refinedstorage:crafter=조합기 gui.refinedstorage:crafter=조합기

View File

@@ -18,8 +18,6 @@ gui.refinedstorage:relay=Relais
gui.refinedstorage:interface.import=Interface Import gui.refinedstorage:interface.import=Interface Import
gui.refinedstorage:interface.export=Interface Export gui.refinedstorage:interface.export=Interface Export
gui.refinedstorage:crafting_monitor=Crafting Monitor 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.machine_none=Geen machine gevonden gui.refinedstorage:crafting_monitor.machine_none=Geen machine gevonden
gui.refinedstorage:wireless_transmitter=Draadloze Zender gui.refinedstorage:wireless_transmitter=Draadloze Zender
gui.refinedstorage:wireless_transmitter.distance=%d blokken gui.refinedstorage:wireless_transmitter.distance=%d blokken

View File

@@ -23,10 +23,7 @@ gui.refinedstorage:interface.import=Importação da Interface
gui.refinedstorage:interface.export=Exportação da Interface gui.refinedstorage:interface.export=Exportação da Interface
gui.refinedstorage:crafting_monitor=Monitor de Fabricações gui.refinedstorage:crafting_monitor=Monitor de Fabricações
gui.refinedstorage:wireless_crafting_monitor=Monitor de Fabricações Wireless gui.refinedstorage:wireless_crafting_monitor=Monitor de Fabricações Wireless
gui.refinedstorage:crafting_monitor.items_crafting=Fabricando itens
gui.refinedstorage:crafting_monitor.items_inserting=Inserindo itens
gui.refinedstorage:crafting_monitor.machine_none=Nenhuma máquina encontrada gui.refinedstorage:crafting_monitor.machine_none=Nenhuma máquina encontrada
gui.refinedstorage:crafting_monitor.waiting_for_items=Esperando itens
gui.refinedstorage:wireless_transmitter=Transmissor Wireless gui.refinedstorage:wireless_transmitter=Transmissor Wireless
gui.refinedstorage:wireless_transmitter.distance=%d Blocos gui.refinedstorage:wireless_transmitter.distance=%d Blocos
gui.refinedstorage:crafter=Fabricador gui.refinedstorage:crafter=Fabricador

View File

@@ -26,11 +26,7 @@ gui.refinedstorage:interface.export=Интерфейс - Экспорт
gui.refinedstorage:crafting_monitor=Терминал запросов gui.refinedstorage:crafting_monitor=Терминал запросов
gui.refinedstorage:wireless_crafting_monitor=Беспроводной монитор создания gui.refinedstorage:wireless_crafting_monitor=Беспроводной монитор создания
gui.refinedstorage:crafting_monitor.tooltip.requested=Требует %d gui.refinedstorage:crafting_monitor.tooltip.requested=Требует %d
gui.refinedstorage:crafting_monitor.items_crafting=Предметы с возможностью крафта
gui.refinedstorage:crafting_monitor.items_inserting=Вставка предметов
gui.refinedstorage:crafting_monitor.machine_none=Машина не найдена gui.refinedstorage:crafting_monitor.machine_none=Машина не найдена
gui.refinedstorage:crafting_monitor.waiting_for_items=Ожидание предметов
gui.refinedstorage:crafting_monitor.network_full=Сеть полна
gui.refinedstorage:wireless_transmitter=Передатчик gui.refinedstorage:wireless_transmitter=Передатчик
gui.refinedstorage:wireless_transmitter.distance=%d блоков gui.refinedstorage:wireless_transmitter.distance=%d блоков
gui.refinedstorage:crafter=Крафтер gui.refinedstorage:crafter=Крафтер

View File

@@ -24,10 +24,7 @@ gui.refinedstorage:interface.import=输入端
gui.refinedstorage:interface.export=输出端 gui.refinedstorage:interface.export=输出端
gui.refinedstorage:crafting_monitor=合成监控处理器 gui.refinedstorage:crafting_monitor=合成监控处理器
gui.refinedstorage:wireless_crafting_monitor=无线合成监控处理器 gui.refinedstorage:wireless_crafting_monitor=无线合成监控处理器
gui.refinedstorage:crafting_monitor.items_crafting=正在合成
gui.refinedstorage:crafting_monitor.items_inserting=物品正在输入
gui.refinedstorage:crafting_monitor.machine_none=找不到机器 gui.refinedstorage:crafting_monitor.machine_none=找不到机器
gui.refinedstorage:crafting_monitor.waiting_for_items=正在等待物品
gui.refinedstorage:wireless_transmitter=无线访问点 gui.refinedstorage:wireless_transmitter=无线访问点
gui.refinedstorage:wireless_transmitter.distance=%d 方块 gui.refinedstorage:wireless_transmitter.distance=%d 方块
gui.refinedstorage:crafter=装配室 gui.refinedstorage:crafter=装配室

Binary file not shown.

Before

Width:  |  Height:  |  Size: 885 B

After

Width:  |  Height:  |  Size: 1.8 KiB