Re-add the Crafting Monitor
This commit is contained in:
@@ -110,6 +110,7 @@ public class ClientSetup {
|
||||
));
|
||||
|
||||
bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "crafter_manager"), (base, registry) -> new FullbrightBakedModel(base, new ResourceLocation(RS.ID, "block/crafter_manager/cutouts/front_connected")));
|
||||
bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "crafting_monitor"), (base, registry) -> new FullbrightBakedModel(base, new ResourceLocation(RS.ID, "block/crafting_monitor/cutouts/front_connected")));
|
||||
|
||||
bakedModelOverrideRegistry.add(new ResourceLocation(RS.ID, "pattern"), (base, registry) -> new PatternBakedModel(base));
|
||||
|
||||
@@ -186,6 +187,7 @@ public class ClientSetup {
|
||||
ScreenManager.registerFactory(RSContainers.DISK_MANIPULATOR, DiskManipulatorScreen::new);
|
||||
ScreenManager.registerFactory(RSContainers.CRAFTER, CrafterScreen::new);
|
||||
ScreenManager.registerFactory(RSContainers.CRAFTER_MANAGER, new CrafterManagerScreenFactory());
|
||||
ScreenManager.registerFactory(RSContainers.CRAFTING_MONITOR, CraftingMonitorScreen::new);
|
||||
|
||||
ClientRegistry.registerKeyBinding(RSKeyBindings.OPEN_WIRELESS_GRID);
|
||||
ClientRegistry.registerKeyBinding(RSKeyBindings.OPEN_WIRELESS_FLUID_GRID);
|
||||
|
@@ -5,6 +5,9 @@ import com.raoulvdberge.refinedstorage.api.network.grid.GridType;
|
||||
import com.raoulvdberge.refinedstorage.api.network.node.INetworkNode;
|
||||
import com.raoulvdberge.refinedstorage.api.storage.StorageType;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.craftingmonitor.ErrorCraftingMonitorElement;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.craftingmonitor.FluidCraftingMonitorElement;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.craftingmonitor.ItemCraftingMonitorElement;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.preview.ErrorCraftingPreviewElement;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.preview.FluidCraftingPreviewElement;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.preview.ItemCraftingPreviewElement;
|
||||
@@ -29,6 +32,7 @@ import com.raoulvdberge.refinedstorage.config.ClientConfig;
|
||||
import com.raoulvdberge.refinedstorage.config.ServerConfig;
|
||||
import com.raoulvdberge.refinedstorage.container.*;
|
||||
import com.raoulvdberge.refinedstorage.container.factory.CrafterManagerContainerFactory;
|
||||
import com.raoulvdberge.refinedstorage.container.factory.CraftingMonitorContainerFactory;
|
||||
import com.raoulvdberge.refinedstorage.container.factory.GridContainerFactory;
|
||||
import com.raoulvdberge.refinedstorage.container.factory.PositionalTileContainerFactory;
|
||||
import com.raoulvdberge.refinedstorage.item.*;
|
||||
@@ -40,6 +44,7 @@ import com.raoulvdberge.refinedstorage.loottable.StorageBlockLootFunctionSeriali
|
||||
import com.raoulvdberge.refinedstorage.network.NetworkHandler;
|
||||
import com.raoulvdberge.refinedstorage.recipe.UpgradeWithEnchantedBookRecipeSerializer;
|
||||
import com.raoulvdberge.refinedstorage.tile.*;
|
||||
import com.raoulvdberge.refinedstorage.tile.craftingmonitor.CraftingMonitorTile;
|
||||
import com.raoulvdberge.refinedstorage.tile.data.TileDataManager;
|
||||
import com.raoulvdberge.refinedstorage.tile.grid.GridTile;
|
||||
import com.raoulvdberge.refinedstorage.tile.grid.portable.PortableGridTile;
|
||||
@@ -139,6 +144,7 @@ public final class RS {
|
||||
API.instance().getNetworkNodeRegistry().add(DiskManipulatorNetworkNode.ID, (tag, world, pos) -> readAndReturn(tag, new DiskManipulatorNetworkNode(world, pos)));
|
||||
API.instance().getNetworkNodeRegistry().add(CrafterNetworkNode.ID, (tag, world, pos) -> readAndReturn(tag, new CrafterNetworkNode(world, pos)));
|
||||
API.instance().getNetworkNodeRegistry().add(CrafterManagerNetworkNode.ID, (tag, world, pos) -> readAndReturn(tag, new CrafterManagerNetworkNode(world, pos)));
|
||||
API.instance().getNetworkNodeRegistry().add(CraftingMonitorNetworkNode.ID, (tag, world, pos) -> readAndReturn(tag, new CraftingMonitorNetworkNode(world, pos)));
|
||||
|
||||
API.instance().getGridManager().add(GridBlockGridFactory.ID, new GridBlockGridFactory());
|
||||
API.instance().getGridManager().add(WirelessGridGridFactory.ID, new WirelessGridGridFactory());
|
||||
@@ -153,6 +159,10 @@ public final class RS {
|
||||
API.instance().getCraftingPreviewElementRegistry().add(FluidCraftingPreviewElement.ID, FluidCraftingPreviewElement::read);
|
||||
API.instance().getCraftingPreviewElementRegistry().add(ErrorCraftingPreviewElement.ID, ErrorCraftingPreviewElement::read);
|
||||
|
||||
API.instance().getCraftingMonitorElementRegistry().add(ItemCraftingMonitorElement.ID, ItemCraftingMonitorElement::read);
|
||||
API.instance().getCraftingMonitorElementRegistry().add(FluidCraftingMonitorElement.ID, FluidCraftingMonitorElement::read);
|
||||
API.instance().getCraftingMonitorElementRegistry().add(ErrorCraftingMonitorElement.ID, ErrorCraftingMonitorElement::read);
|
||||
|
||||
API.instance().getCraftingTaskRegistry().add(CraftingTaskFactory.ID, new CraftingTaskFactory());
|
||||
|
||||
LootFunctionManager.registerFunction(new StorageBlockLootFunctionSerializer());
|
||||
@@ -211,6 +221,7 @@ public final class RS {
|
||||
e.getRegistry().register(new PortableGridBlock(PortableGridBlockItem.Type.CREATIVE));
|
||||
e.getRegistry().register(new CrafterBlock());
|
||||
e.getRegistry().register(new CrafterManagerBlock());
|
||||
e.getRegistry().register(new CraftingMonitorBlock());
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
@@ -253,6 +264,7 @@ public final class RS {
|
||||
e.getRegistry().register(registerTileDataParameters(TileEntityType.Builder.create(DiskManipulatorTile::new, RSBlocks.DISK_MANIPULATOR).build(null).setRegistryName(RS.ID, "disk_manipulator")));
|
||||
e.getRegistry().register(registerTileDataParameters(TileEntityType.Builder.create(CrafterTile::new, RSBlocks.CRAFTER).build(null).setRegistryName(RS.ID, "crafter")));
|
||||
e.getRegistry().register(registerTileDataParameters(TileEntityType.Builder.create(CrafterManagerTile::new, RSBlocks.CRAFTER_MANAGER).build(null).setRegistryName(RS.ID, "crafter_manager")));
|
||||
e.getRegistry().register(registerTileDataParameters(TileEntityType.Builder.create(CraftingMonitorTile::new, RSBlocks.CRAFTING_MONITOR).build(null).setRegistryName(RS.ID, "crafting_monitor")));
|
||||
|
||||
e.getRegistry().register(registerTileDataParameters(TileEntityType.Builder.create(() -> new PortableGridTile(PortableGridBlockItem.Type.CREATIVE), RSBlocks.CREATIVE_PORTABLE_GRID).build(null).setRegistryName(RS.ID, "creative_portable_grid")));
|
||||
e.getRegistry().register(registerTileDataParameters(TileEntityType.Builder.create(() -> new PortableGridTile(PortableGridBlockItem.Type.NORMAL), RSBlocks.PORTABLE_GRID).build(null).setRegistryName(RS.ID, "portable_grid")));
|
||||
@@ -290,6 +302,7 @@ public final class RS {
|
||||
e.getRegistry().register(IForgeContainerType.create(new PositionalTileContainerFactory<DiskManipulatorContainer, DiskManipulatorTile>((windowId, inv, tile) -> new DiskManipulatorContainer(tile, inv.player, windowId))).setRegistryName(RS.ID, "disk_manipulator"));
|
||||
e.getRegistry().register(IForgeContainerType.create(new PositionalTileContainerFactory<CrafterContainer, CrafterTile>((windowId, inv, tile) -> new CrafterContainer(tile, inv.player, windowId))).setRegistryName(RS.ID, "crafter"));
|
||||
e.getRegistry().register(IForgeContainerType.create(new CrafterManagerContainerFactory()).setRegistryName(RS.ID, "crafter_manager"));
|
||||
e.getRegistry().register(IForgeContainerType.create(new CraftingMonitorContainerFactory()).setRegistryName(RS.ID, "crafting_monitor"));
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
@@ -376,6 +389,7 @@ public final class RS {
|
||||
e.getRegistry().register(BlockUtils.createBlockItemFor(RSBlocks.DISK_MANIPULATOR));
|
||||
e.getRegistry().register(BlockUtils.createBlockItemFor(RSBlocks.CRAFTER));
|
||||
e.getRegistry().register(BlockUtils.createBlockItemFor(RSBlocks.CRAFTER_MANAGER));
|
||||
e.getRegistry().register(BlockUtils.createBlockItemFor(RSBlocks.CRAFTING_MONITOR));
|
||||
|
||||
e.getRegistry().register(new WirelessGridItem(WirelessGridItem.Type.NORMAL));
|
||||
e.getRegistry().register(new WirelessGridItem(WirelessGridItem.Type.CREATIVE));
|
||||
|
@@ -82,6 +82,6 @@ public final class RSBlocks {
|
||||
public static final CrafterBlock CRAFTER = null;
|
||||
@ObjectHolder(RS.ID + ":crafter_manager")
|
||||
public static final CrafterManagerBlock CRAFTER_MANAGER = null;
|
||||
|
||||
public static final BlockCraftingMonitor CRAFTING_MONITOR = null;
|
||||
@ObjectHolder(RS.ID + ":crafting_monitor")
|
||||
public static final CraftingMonitorBlock CRAFTING_MONITOR = null;
|
||||
}
|
@@ -49,7 +49,6 @@ public final class RSContainers {
|
||||
public static final ContainerType<CrafterContainer> CRAFTER = null;
|
||||
@ObjectHolder(RS.ID + ":crafter_manager")
|
||||
public static final ContainerType<CrafterManagerContainer> CRAFTER_MANAGER = null;
|
||||
|
||||
//@ObjectHolder(RS.ID + ":crafting_monitor")
|
||||
@ObjectHolder(RS.ID + ":crafting_monitor")
|
||||
public static final ContainerType<CraftingMonitorContainer> CRAFTING_MONITOR = null;
|
||||
}
|
||||
|
@@ -1,10 +1,6 @@
|
||||
package com.raoulvdberge.refinedstorage;
|
||||
|
||||
public class RSOldConfig {
|
||||
//region Energy
|
||||
public int craftingMonitorUsage;
|
||||
//endregion
|
||||
|
||||
//region Wireless Crafting Monitor
|
||||
public boolean wirelessCraftingMonitorUsesEnergy;
|
||||
public int wirelessCraftingMonitorCapacity;
|
||||
@@ -18,16 +14,11 @@ public class RSOldConfig {
|
||||
//endregion
|
||||
|
||||
//region Categories
|
||||
private static final String ENERGY = "energy";
|
||||
private static final String WIRELESS_CRAFTING_MONITOR = "wirelessCraftingMonitor";
|
||||
private static final String AUTOCRAFTING = "autocrafting";
|
||||
//endregion
|
||||
|
||||
/*private void loadConfig() {
|
||||
//region Energy
|
||||
craftingMonitorUsage = config.getInt("craftingMonitor", ENERGY, 2, 0, Integer.MAX_VALUE, "The energy used by Crafting Monitors");
|
||||
//endregion
|
||||
|
||||
//region Wireless Crafting Monitor
|
||||
wirelessCraftingMonitorUsesEnergy = config.getBoolean("usesEnergy", WIRELESS_CRAFTING_MONITOR, true, "Whether the Wireless Crafting Monitor uses energy");
|
||||
wirelessCraftingMonitorCapacity = config.getInt("capacity", WIRELESS_CRAFTING_MONITOR, 3200, 0, Integer.MAX_VALUE, "The energy capacity of the Wireless Crafting Monitor");
|
||||
|
@@ -1,7 +1,7 @@
|
||||
package com.raoulvdberge.refinedstorage;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.tile.*;
|
||||
import com.raoulvdberge.refinedstorage.tile.craftingmonitor.TileCraftingMonitor;
|
||||
import com.raoulvdberge.refinedstorage.tile.craftingmonitor.CraftingMonitorTile;
|
||||
import com.raoulvdberge.refinedstorage.tile.grid.GridTile;
|
||||
import com.raoulvdberge.refinedstorage.tile.grid.portable.PortableGridTile;
|
||||
import net.minecraft.tileentity.TileEntityType;
|
||||
@@ -82,7 +82,6 @@ public class RSTiles {
|
||||
public static final TileEntityType<CrafterTile> CRAFTER = null;
|
||||
@ObjectHolder(RS.ID + ":crafter_manager")
|
||||
public static final TileEntityType<CrafterManagerTile> CRAFTER_MANAGER = null;
|
||||
|
||||
//@ObjectHolder(RS.ID + ":crafting_monitor")
|
||||
public static final TileEntityType<TileCraftingMonitor> CRAFTING_MONITOR = null;
|
||||
@ObjectHolder(RS.ID + ":crafting_monitor")
|
||||
public static final TileEntityType<CraftingMonitorTile> CRAFTING_MONITOR = null;
|
||||
}
|
||||
|
@@ -2,6 +2,7 @@ package com.raoulvdberge.refinedstorage.api.autocrafting.craftingmonitor;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.api.render.IElementDrawers;
|
||||
import net.minecraft.network.PacketBuffer;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||
|
||||
@@ -24,7 +25,7 @@ public interface ICraftingMonitorElement {
|
||||
*
|
||||
* @return the id
|
||||
*/
|
||||
String getId();
|
||||
ResourceLocation getId();
|
||||
|
||||
/**
|
||||
* @return the tooltip of this element, or null for no tooltip
|
||||
|
@@ -1,6 +1,7 @@
|
||||
package com.raoulvdberge.refinedstorage.api.autocrafting.craftingmonitor;
|
||||
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import net.minecraft.network.PacketBuffer;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.function.Function;
|
||||
@@ -15,7 +16,7 @@ public interface ICraftingMonitorElementRegistry {
|
||||
* @param id the id, as specified in {@link ICraftingMonitorElement#getId()}
|
||||
* @param factory the factory
|
||||
*/
|
||||
void add(String id, Function<ByteBuf, ICraftingMonitorElement> factory);
|
||||
void add(ResourceLocation id, Function<PacketBuffer, ICraftingMonitorElement> factory);
|
||||
|
||||
/**
|
||||
* Returns a factory from the registry.
|
||||
@@ -24,5 +25,5 @@ public interface ICraftingMonitorElementRegistry {
|
||||
* @return the factory, or null if no factory was found
|
||||
*/
|
||||
@Nullable
|
||||
Function<ByteBuf, ICraftingMonitorElement> get(String id);
|
||||
Function<PacketBuffer, ICraftingMonitorElement> get(ResourceLocation id);
|
||||
}
|
||||
|
@@ -26,8 +26,8 @@ public class CraftingRequestInfo implements ICraftingRequestInfo {
|
||||
} else {
|
||||
fluid = FluidStack.loadFluidStackFromNBT(tag.getCompound(NBT_STACK));
|
||||
|
||||
if (fluid == null) {
|
||||
throw new CraftingTaskReadException("Extractor fluid stack is emty");
|
||||
if (fluid.isEmpty()) {
|
||||
throw new CraftingTaskReadException("Extractor fluid stack is empty");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -2,12 +2,13 @@ package com.raoulvdberge.refinedstorage.apiimpl.autocrafting.craftingmonitor;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.api.autocrafting.craftingmonitor.ICraftingMonitorElement;
|
||||
import com.raoulvdberge.refinedstorage.api.autocrafting.craftingmonitor.ICraftingMonitorElementList;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
public class CraftingMonitorElementList implements ICraftingMonitorElementList {
|
||||
private List<ICraftingMonitorElement> elements = new LinkedList<>();
|
||||
private Map<String, Map<Integer, ICraftingMonitorElement>> currentLists = new LinkedHashMap<>();
|
||||
private Map<ResourceLocation, Map<Integer, ICraftingMonitorElement>> currentLists = new LinkedHashMap<>();
|
||||
|
||||
@Override
|
||||
public void directAdd(ICraftingMonitorElement element) {
|
||||
|
@@ -2,7 +2,8 @@ package com.raoulvdberge.refinedstorage.apiimpl.autocrafting.craftingmonitor;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.api.autocrafting.craftingmonitor.ICraftingMonitorElement;
|
||||
import com.raoulvdberge.refinedstorage.api.autocrafting.craftingmonitor.ICraftingMonitorElementRegistry;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import net.minecraft.network.PacketBuffer;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.HashMap;
|
||||
@@ -10,16 +11,16 @@ import java.util.Map;
|
||||
import java.util.function.Function;
|
||||
|
||||
public class CraftingMonitorElementRegistry implements ICraftingMonitorElementRegistry {
|
||||
private Map<String, Function<ByteBuf, ICraftingMonitorElement>> registry = new HashMap<>();
|
||||
private Map<ResourceLocation, Function<PacketBuffer, ICraftingMonitorElement>> registry = new HashMap<>();
|
||||
|
||||
@Override
|
||||
public void add(String id, Function<ByteBuf, ICraftingMonitorElement> factory) {
|
||||
public void add(ResourceLocation id, Function<PacketBuffer, ICraftingMonitorElement> factory) {
|
||||
registry.put(id, factory);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public Function<ByteBuf, ICraftingMonitorElement> get(String id) {
|
||||
public Function<PacketBuffer, ICraftingMonitorElement> get(ResourceLocation id) {
|
||||
return registry.get(id);
|
||||
}
|
||||
}
|
||||
|
@@ -2,20 +2,22 @@ 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.ByteBufUtil;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
||||
import com.raoulvdberge.refinedstorage.util.PacketBufferUtils;
|
||||
import net.minecraft.client.resources.I18n;
|
||||
import net.minecraft.network.PacketBuffer;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraft.util.text.TextFormatting;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
public class CraftingMonitorElementError implements ICraftingMonitorElement {
|
||||
public static final String ID = "error";
|
||||
public class ErrorCraftingMonitorElement implements ICraftingMonitorElement {
|
||||
public static final ResourceLocation ID = new ResourceLocation("error");
|
||||
|
||||
private ICraftingMonitorElement base;
|
||||
private String message;
|
||||
|
||||
public CraftingMonitorElementError(ICraftingMonitorElement base, String message) {
|
||||
public ErrorCraftingMonitorElement(ICraftingMonitorElement base, String message) {
|
||||
this.base = base;
|
||||
this.message = message;
|
||||
}
|
||||
@@ -35,21 +37,31 @@ public class CraftingMonitorElementError implements ICraftingMonitorElement {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getId() {
|
||||
public ResourceLocation getId() {
|
||||
return ID;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(PacketBuffer buf) {
|
||||
ByteBufUtil.writeUtf8(buf, base.getId());
|
||||
ByteBufUtil.writeUtf8(buf, message);
|
||||
buf.writeResourceLocation(base.getId());
|
||||
buf.writeString(message);
|
||||
|
||||
base.write(buf);
|
||||
}
|
||||
|
||||
public static ErrorCraftingMonitorElement read(PacketBuffer buf) {
|
||||
ResourceLocation id = buf.readResourceLocation();
|
||||
String message = PacketBufferUtils.readString(buf);
|
||||
|
||||
return new ErrorCraftingMonitorElement(
|
||||
API.instance().getCraftingMonitorElementRegistry().get(id).apply(buf),
|
||||
message
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean merge(ICraftingMonitorElement element) {
|
||||
return elementHashCode() == element.elementHashCode() && base.merge(((CraftingMonitorElementError) element).base);
|
||||
return elementHashCode() == element.elementHashCode() && base.merge(((ErrorCraftingMonitorElement) element).base);
|
||||
}
|
||||
|
||||
@Override
|
@@ -1,6 +1,7 @@
|
||||
package com.raoulvdberge.refinedstorage.apiimpl.autocrafting.craftingmonitor;
|
||||
|
||||
import com.mojang.blaze3d.platform.GlStateManager;
|
||||
import com.raoulvdberge.refinedstorage.RS;
|
||||
import com.raoulvdberge.refinedstorage.api.autocrafting.craftingmonitor.ICraftingMonitorElement;
|
||||
import com.raoulvdberge.refinedstorage.api.render.IElementDrawers;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
||||
@@ -8,19 +9,20 @@ import com.raoulvdberge.refinedstorage.util.RenderUtils;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.resources.I18n;
|
||||
import net.minecraft.network.PacketBuffer;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
public class CraftingMonitorElementFluidRender implements ICraftingMonitorElement {
|
||||
public class FluidCraftingMonitorElement 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 ResourceLocation ID = new ResourceLocation(RS.ID, "fluid");
|
||||
|
||||
private FluidStack stack;
|
||||
private int stored;
|
||||
@@ -29,7 +31,7 @@ public class CraftingMonitorElementFluidRender implements ICraftingMonitorElemen
|
||||
private int scheduled;
|
||||
private int crafting;
|
||||
|
||||
public CraftingMonitorElementFluidRender(FluidStack stack, int stored, int missing, int processing, int scheduled, int crafting) {
|
||||
public FluidCraftingMonitorElement(FluidStack stack, int stored, int missing, int processing, int scheduled, int crafting) {
|
||||
this.stack = stack;
|
||||
this.stored = stored;
|
||||
this.missing = missing;
|
||||
@@ -92,7 +94,7 @@ public class CraftingMonitorElementFluidRender implements ICraftingMonitorElemen
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getId() {
|
||||
public ResourceLocation getId() {
|
||||
return ID;
|
||||
}
|
||||
|
||||
@@ -112,14 +114,25 @@ public class CraftingMonitorElementFluidRender implements ICraftingMonitorElemen
|
||||
buf.writeInt(crafting);
|
||||
}
|
||||
|
||||
public static FluidCraftingMonitorElement read(PacketBuffer buf) {
|
||||
return new FluidCraftingMonitorElement(
|
||||
FluidStack.readFromPacket(buf),
|
||||
buf.readInt(),
|
||||
buf.readInt(),
|
||||
buf.readInt(),
|
||||
buf.readInt(),
|
||||
buf.readInt()
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean merge(ICraftingMonitorElement element) {
|
||||
if (element.getId().equals(getId()) && elementHashCode() == element.elementHashCode()) {
|
||||
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;
|
||||
this.stored += ((FluidCraftingMonitorElement) element).stored;
|
||||
this.missing += ((FluidCraftingMonitorElement) element).missing;
|
||||
this.processing += ((FluidCraftingMonitorElement) element).processing;
|
||||
this.scheduled += ((FluidCraftingMonitorElement) element).scheduled;
|
||||
this.crafting += ((FluidCraftingMonitorElement) element).crafting;
|
||||
|
||||
return true;
|
||||
}
|
@@ -1,26 +1,29 @@
|
||||
package com.raoulvdberge.refinedstorage.apiimpl.autocrafting.craftingmonitor;
|
||||
|
||||
import com.mojang.blaze3d.platform.GlStateManager;
|
||||
import com.raoulvdberge.refinedstorage.RS;
|
||||
import com.raoulvdberge.refinedstorage.api.autocrafting.craftingmonitor.ICraftingMonitorElement;
|
||||
import com.raoulvdberge.refinedstorage.api.render.IElementDrawers;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
||||
import com.raoulvdberge.refinedstorage.util.RenderUtils;
|
||||
import com.raoulvdberge.refinedstorage.util.StackUtils;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.resources.I18n;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.network.PacketBuffer;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
public class CraftingMonitorElementItemRender implements ICraftingMonitorElement {
|
||||
public class ItemCraftingMonitorElement 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 ResourceLocation ID = new ResourceLocation(RS.ID, "item");
|
||||
|
||||
private ItemStack stack;
|
||||
private int stored;
|
||||
@@ -29,7 +32,7 @@ public class CraftingMonitorElementItemRender implements ICraftingMonitorElement
|
||||
private int scheduled;
|
||||
private int crafting;
|
||||
|
||||
public CraftingMonitorElementItemRender(ItemStack stack, int stored, int missing, int processing, int scheduled, int crafting) {
|
||||
public ItemCraftingMonitorElement(ItemStack stack, int stored, int missing, int processing, int scheduled, int crafting) {
|
||||
this.stack = stack;
|
||||
this.stored = stored;
|
||||
this.missing = missing;
|
||||
@@ -92,7 +95,7 @@ public class CraftingMonitorElementItemRender implements ICraftingMonitorElement
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getId() {
|
||||
public ResourceLocation getId() {
|
||||
return ID;
|
||||
}
|
||||
|
||||
@@ -104,7 +107,7 @@ public class CraftingMonitorElementItemRender implements ICraftingMonitorElement
|
||||
|
||||
@Override
|
||||
public void write(PacketBuffer buf) {
|
||||
buf.writeItemStack(stack);
|
||||
StackUtils.writeItemStack(buf, stack);
|
||||
buf.writeInt(stored);
|
||||
buf.writeInt(missing);
|
||||
buf.writeInt(processing);
|
||||
@@ -112,14 +115,25 @@ public class CraftingMonitorElementItemRender implements ICraftingMonitorElement
|
||||
buf.writeInt(crafting);
|
||||
}
|
||||
|
||||
public static ItemCraftingMonitorElement read(PacketBuffer buf) {
|
||||
return new ItemCraftingMonitorElement(
|
||||
StackUtils.readItemStack(buf),
|
||||
buf.readInt(),
|
||||
buf.readInt(),
|
||||
buf.readInt(),
|
||||
buf.readInt(),
|
||||
buf.readInt()
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean merge(ICraftingMonitorElement element) {
|
||||
if (element.getId().equals(getId()) && elementHashCode() == element.elementHashCode()) {
|
||||
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;
|
||||
this.stored += ((ItemCraftingMonitorElement) element).stored;
|
||||
this.missing += ((ItemCraftingMonitorElement) element).missing;
|
||||
this.processing += ((ItemCraftingMonitorElement) element).processing;
|
||||
this.scheduled += ((ItemCraftingMonitorElement) element).scheduled;
|
||||
this.crafting += ((ItemCraftingMonitorElement) element).crafting;
|
||||
|
||||
return true;
|
||||
}
|
@@ -14,9 +14,9 @@ import com.raoulvdberge.refinedstorage.api.util.IComparer;
|
||||
import com.raoulvdberge.refinedstorage.api.util.IStackList;
|
||||
import com.raoulvdberge.refinedstorage.api.util.StackListEntry;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.craftingmonitor.CraftingMonitorElementError;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.craftingmonitor.CraftingMonitorElementFluidRender;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.craftingmonitor.CraftingMonitorElementItemRender;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.craftingmonitor.ErrorCraftingMonitorElement;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.craftingmonitor.FluidCraftingMonitorElement;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.craftingmonitor.ItemCraftingMonitorElement;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.preview.FluidCraftingPreviewElement;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.preview.ItemCraftingPreviewElement;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.storage.disk.FluidStorageDisk;
|
||||
@@ -219,7 +219,7 @@ public class CraftingTask implements ICraftingTask {
|
||||
for (int i = 0; i < list.size(); ++i) {
|
||||
FluidStack stack = FluidStack.loadFluidStackFromNBT(list.getCompound(i));
|
||||
|
||||
if (stack == null) {
|
||||
if (stack.isEmpty()) {
|
||||
throw new CraftingTaskReadException("Empty stack!");
|
||||
}
|
||||
|
||||
@@ -1082,16 +1082,16 @@ public class CraftingTask implements ICraftingTask {
|
||||
ICraftingMonitorElementList elements = API.instance().createCraftingMonitorElementList();
|
||||
|
||||
for (ItemStack stack : this.internalStorage.getStacks()) {
|
||||
elements.add(new CraftingMonitorElementItemRender(stack, stack.getCount(), 0, 0, 0, 0));
|
||||
elements.add(new ItemCraftingMonitorElement(stack, stack.getCount(), 0, 0, 0, 0));
|
||||
}
|
||||
|
||||
for (StackListEntry<ItemStack> missing : this.missing.getStacks()) {
|
||||
elements.add(new CraftingMonitorElementItemRender(missing.getStack(), 0, missing.getStack().getCount(), 0, 0, 0));
|
||||
elements.add(new ItemCraftingMonitorElement(missing.getStack(), 0, missing.getStack().getCount(), 0, 0, 0));
|
||||
}
|
||||
|
||||
for (Crafting crafting : this.crafting) {
|
||||
for (ItemStack receive : crafting.getPattern().getOutputs()) {
|
||||
elements.add(new CraftingMonitorElementItemRender(receive, 0, 0, 0, 0, receive.getCount()));
|
||||
elements.add(new ItemCraftingMonitorElement(receive, 0, 0, 0, 0, receive.getCount()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1102,18 +1102,18 @@ public class CraftingTask implements ICraftingTask {
|
||||
|
||||
if (processing.getState() == ProcessingState.EXTRACTED_ALL) {
|
||||
for (StackListEntry<ItemStack> put : processing.getItemsToPut().getStacks()) {
|
||||
elements.add(new CraftingMonitorElementItemRender(put.getStack(), 0, 0, put.getStack().getCount(), 0, 0));
|
||||
elements.add(new ItemCraftingMonitorElement(put.getStack(), 0, 0, put.getStack().getCount(), 0, 0));
|
||||
}
|
||||
} else if (processing.getState() == ProcessingState.READY || processing.getState() == ProcessingState.MACHINE_DOES_NOT_ACCEPT || processing.getState() == ProcessingState.MACHINE_NONE || processing.getState() == ProcessingState.LOCKED) {
|
||||
for (StackListEntry<ItemStack> receive : processing.getItemsToReceive().getStacks()) {
|
||||
ICraftingMonitorElement element = new CraftingMonitorElementItemRender(receive.getStack(), 0, 0, 0, receive.getStack().getCount(), 0);
|
||||
ICraftingMonitorElement element = new ItemCraftingMonitorElement(receive.getStack(), 0, 0, 0, receive.getStack().getCount(), 0);
|
||||
|
||||
if (processing.getState() == ProcessingState.MACHINE_DOES_NOT_ACCEPT) {
|
||||
element = new CraftingMonitorElementError(element, "gui.refinedstorage:crafting_monitor.machine_does_not_accept_item");
|
||||
element = new ErrorCraftingMonitorElement(element, "gui.refinedstorage:crafting_monitor.machine_does_not_accept_item");
|
||||
} else if (processing.getState() == ProcessingState.MACHINE_NONE) {
|
||||
element = new CraftingMonitorElementError(element, "gui.refinedstorage:crafting_monitor.machine_none");
|
||||
element = new ErrorCraftingMonitorElement(element, "gui.refinedstorage:crafting_monitor.machine_none");
|
||||
} else if (processing.getState() == ProcessingState.LOCKED) {
|
||||
element = new CraftingMonitorElementError(element, "gui.refinedstorage:crafting_monitor.crafter_is_locked");
|
||||
element = new ErrorCraftingMonitorElement(element, "gui.refinedstorage:crafting_monitor.crafter_is_locked");
|
||||
}
|
||||
|
||||
elements.add(element);
|
||||
@@ -1124,11 +1124,11 @@ public class CraftingTask implements ICraftingTask {
|
||||
elements.commit();
|
||||
|
||||
for (FluidStack stack : this.internalFluidStorage.getStacks()) {
|
||||
elements.add(new CraftingMonitorElementFluidRender(stack, stack.getAmount(), 0, 0, 0, 0));
|
||||
elements.add(new FluidCraftingMonitorElement(stack, stack.getAmount(), 0, 0, 0, 0));
|
||||
}
|
||||
|
||||
for (StackListEntry<FluidStack> missing : this.missingFluids.getStacks()) {
|
||||
elements.add(new CraftingMonitorElementFluidRender(missing.getStack(), 0, missing.getStack().getAmount(), 0, 0, 0));
|
||||
elements.add(new FluidCraftingMonitorElement(missing.getStack(), 0, missing.getStack().getAmount(), 0, 0, 0));
|
||||
}
|
||||
|
||||
for (Processing processing : this.processing) {
|
||||
@@ -1138,18 +1138,18 @@ public class CraftingTask implements ICraftingTask {
|
||||
|
||||
if (processing.getState() == ProcessingState.EXTRACTED_ALL) {
|
||||
for (StackListEntry<FluidStack> put : processing.getFluidsToPut().getStacks()) {
|
||||
elements.add(new CraftingMonitorElementFluidRender(put.getStack(), 0, 0, put.getStack().getAmount(), 0, 0));
|
||||
elements.add(new FluidCraftingMonitorElement(put.getStack(), 0, 0, put.getStack().getAmount(), 0, 0));
|
||||
}
|
||||
} else if (processing.getState() == ProcessingState.READY || processing.getState() == ProcessingState.MACHINE_DOES_NOT_ACCEPT || processing.getState() == ProcessingState.MACHINE_NONE) {
|
||||
for (StackListEntry<FluidStack> receive : processing.getFluidsToReceive().getStacks()) {
|
||||
ICraftingMonitorElement element = new CraftingMonitorElementFluidRender(receive.getStack(), 0, 0, 0, receive.getStack().getAmount(), 0);
|
||||
ICraftingMonitorElement element = new FluidCraftingMonitorElement(receive.getStack(), 0, 0, 0, receive.getStack().getAmount(), 0);
|
||||
|
||||
if (processing.getState() == ProcessingState.MACHINE_DOES_NOT_ACCEPT) {
|
||||
element = new CraftingMonitorElementError(element, "gui.refinedstorage:crafting_monitor.machine_does_not_accept_fluid");
|
||||
element = new ErrorCraftingMonitorElement(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");
|
||||
element = new ErrorCraftingMonitorElement(element, "gui.refinedstorage:crafting_monitor.machine_none");
|
||||
} else if (processing.getState() == ProcessingState.LOCKED) {
|
||||
element = new CraftingMonitorElementError(element, "gui.refinedstorage:crafting_monitor.crafter_is_locked");
|
||||
element = new ErrorCraftingMonitorElement(element, "gui.refinedstorage:crafting_monitor.crafter_is_locked");
|
||||
}
|
||||
|
||||
elements.add(element);
|
||||
|
@@ -225,6 +225,6 @@ public class ItemGridHandler implements IItemGridHandler {
|
||||
|
||||
network.getCraftingManager().cancel(id);
|
||||
|
||||
network.getNetworkItemManager().drainEnergy(player, id == null ? RS.INSTANCE.config.wirelessCraftingMonitorCancelAllUsage : RS.INSTANCE.config.wirelessCraftingMonitorCancelUsage);
|
||||
// TODO network.getNetworkItemManager().drainEnergy(player, id == null ? RS.INSTANCE.config.wirelessCraftingMonitorCancelAllUsage : RS.INSTANCE.config.wirelessCraftingMonitorCancelUsage);
|
||||
}
|
||||
}
|
||||
|
@@ -4,8 +4,8 @@ import com.raoulvdberge.refinedstorage.RS;
|
||||
import com.raoulvdberge.refinedstorage.api.autocrafting.ICraftingManager;
|
||||
import com.raoulvdberge.refinedstorage.api.autocrafting.task.ICraftingTask;
|
||||
import com.raoulvdberge.refinedstorage.block.NetworkNodeBlock;
|
||||
import com.raoulvdberge.refinedstorage.tile.craftingmonitor.CraftingMonitorTile;
|
||||
import com.raoulvdberge.refinedstorage.tile.craftingmonitor.ICraftingMonitor;
|
||||
import com.raoulvdberge.refinedstorage.tile.craftingmonitor.TileCraftingMonitor;
|
||||
import com.raoulvdberge.refinedstorage.tile.data.TileDataManager;
|
||||
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
@@ -13,6 +13,8 @@ import net.minecraft.entity.player.ServerPlayerEntity;
|
||||
import net.minecraft.nbt.CompoundNBT;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.text.ITextComponent;
|
||||
import net.minecraft.util.text.TranslationTextComponent;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
@@ -21,7 +23,7 @@ import java.util.Collections;
|
||||
import java.util.Optional;
|
||||
import java.util.UUID;
|
||||
|
||||
public class NetworkNodeCraftingMonitor extends NetworkNode implements ICraftingMonitor {
|
||||
public class CraftingMonitorNetworkNode extends NetworkNode implements ICraftingMonitor {
|
||||
public static final ResourceLocation ID = new ResourceLocation(RS.ID, "crafting_monitor");
|
||||
|
||||
private static final String NBT_TAB_SELECTED = "TabSelected";
|
||||
@@ -30,13 +32,13 @@ public class NetworkNodeCraftingMonitor extends NetworkNode implements ICrafting
|
||||
private Optional<UUID> tabSelected = Optional.empty();
|
||||
private int tabPage;
|
||||
|
||||
public NetworkNodeCraftingMonitor(World world, BlockPos pos) {
|
||||
public CraftingMonitorNetworkNode(World world, BlockPos pos) {
|
||||
super(world, pos);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getEnergyUsage() {
|
||||
return RS.INSTANCE.config.craftingMonitorUsage;
|
||||
return RS.SERVER_CONFIG.getCraftingMonitor().getUsage();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -45,8 +47,8 @@ public class NetworkNodeCraftingMonitor extends NetworkNode implements ICrafting
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getGuiTitle() {
|
||||
return "gui.refinedstorage:crafting_monitor";
|
||||
public ITextComponent getTitle() {
|
||||
return new TranslationTextComponent("gui.refinedstorage.crafting_monitor");
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -58,7 +60,7 @@ public class NetworkNodeCraftingMonitor extends NetworkNode implements ICrafting
|
||||
|
||||
@Override
|
||||
public TileDataParameter<Integer, ?> getRedstoneModeParameter() {
|
||||
return TileCraftingMonitor.REDSTONE_MODE;
|
||||
return CraftingMonitorTile.REDSTONE_MODE;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -118,23 +120,23 @@ public class NetworkNodeCraftingMonitor extends NetworkNode implements ICrafting
|
||||
|
||||
@Override
|
||||
public Optional<UUID> getTabSelected() {
|
||||
return world.isRemote ? TileCraftingMonitor.TAB_SELECTED.getValue() : tabSelected;
|
||||
return world.isRemote ? CraftingMonitorTile.TAB_SELECTED.getValue() : tabSelected;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTabPage() {
|
||||
return world.isRemote ? TileCraftingMonitor.TAB_PAGE.getValue() : tabPage;
|
||||
return world.isRemote ? CraftingMonitorTile.TAB_PAGE.getValue() : tabPage;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTabSelectionChanged(Optional<UUID> tab) {
|
||||
TileDataManager.setParameter(TileCraftingMonitor.TAB_SELECTED, tab);
|
||||
TileDataManager.setParameter(CraftingMonitorTile.TAB_SELECTED, tab);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTabPageChanged(int page) {
|
||||
if (page >= 0) {
|
||||
TileDataManager.setParameter(TileCraftingMonitor.TAB_PAGE, page);
|
||||
TileDataManager.setParameter(CraftingMonitorTile.TAB_PAGE, page);
|
||||
}
|
||||
}
|
||||
}
|
@@ -27,7 +27,7 @@ public class FluidStorageDiskFactory implements IStorageDiskFactory<FluidStack>
|
||||
for (int i = 0; i < list.size(); ++i) {
|
||||
FluidStack stack = FluidStack.loadFluidStackFromNBT(list.getCompound(i));
|
||||
|
||||
if (stack != null) {
|
||||
if (!stack.isEmpty()) {
|
||||
disk.getRawStacks().put(stack.getRawFluid(), stack);
|
||||
}
|
||||
}
|
||||
|
@@ -42,7 +42,7 @@ public class FluidStorageTracker implements IStorageTracker<FluidStack> {
|
||||
|
||||
FluidStack stack = FluidStack.loadFluidStackFromNBT(tag.getCompound(NBT_STACK));
|
||||
|
||||
if (stack != null) {
|
||||
if (!stack.isEmpty()) {
|
||||
changes.put(new Key(stack), new StorageTrackerEntry(tag.getLong(NBT_TIME), tag.getString(NBT_NAME)));
|
||||
}
|
||||
}
|
||||
|
@@ -1,37 +0,0 @@
|
||||
package com.raoulvdberge.refinedstorage.block;
|
||||
|
||||
public class BlockCraftingMonitor extends NetworkNodeBlock {
|
||||
public BlockCraftingMonitor(Properties props) {
|
||||
super(props);
|
||||
}
|
||||
|
||||
/*
|
||||
@Override
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
public void registerModels(IModelRegistration modelRegistration) {
|
||||
modelRegistration.setModel(this, 0, new ModelResourceLocation(info.getId(), "inventory"));
|
||||
|
||||
modelRegistration.addBakedModelOverride(info.getId(), base -> new BakedModelFullbright(base, RS.ID + ":blocks/crafting_monitor/cutouts/front_connected"));
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockRenderLayer getRenderLayer() {
|
||||
return BlockRenderLayer.CUTOUT;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Nullable
|
||||
public BlockDirection getDirection() {
|
||||
return BlockDirection.HORIZONTAL;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onBlockActivated(World world, BlockPos pos, BlockState state, PlayerEntity player, EnumHand hand, Direction side, float hitX, float hitY, float hitZ) {
|
||||
return openNetworkGui(RSGui.CRAFTING_MONITOR, player, world, pos, side, Permission.MODIFY, Permission.AUTOCRAFTING);
|
||||
}
|
||||
*/
|
||||
@Override
|
||||
public boolean hasConnectedState() {
|
||||
return true;
|
||||
}
|
||||
}
|
@@ -0,0 +1,66 @@
|
||||
package com.raoulvdberge.refinedstorage.block;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.RS;
|
||||
import com.raoulvdberge.refinedstorage.api.network.security.Permission;
|
||||
import com.raoulvdberge.refinedstorage.container.factory.CraftingMonitorContainerProvider;
|
||||
import com.raoulvdberge.refinedstorage.tile.craftingmonitor.CraftingMonitorTile;
|
||||
import com.raoulvdberge.refinedstorage.util.BlockUtils;
|
||||
import com.raoulvdberge.refinedstorage.util.NetworkUtils;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.entity.player.ServerPlayerEntity;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.BlockRenderLayer;
|
||||
import net.minecraft.util.Hand;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.math.BlockRayTraceResult;
|
||||
import net.minecraft.world.IBlockReader;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.fml.network.NetworkHooks;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
public class CraftingMonitorBlock extends NetworkNodeBlock {
|
||||
public CraftingMonitorBlock() {
|
||||
super(BlockUtils.DEFAULT_ROCK_PROPERTIES);
|
||||
|
||||
this.setRegistryName(RS.ID, "crafting_monitor");
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockRenderLayer getRenderLayer() {
|
||||
return BlockRenderLayer.CUTOUT;
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockDirection getDirection() {
|
||||
return BlockDirection.HORIZONTAL;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public TileEntity createTileEntity(BlockState state, IBlockReader world) {
|
||||
return new CraftingMonitorTile();
|
||||
}
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("deprecation")
|
||||
public boolean onBlockActivated(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand handIn, BlockRayTraceResult hit) {
|
||||
if (!world.isRemote) {
|
||||
CraftingMonitorTile tile = (CraftingMonitorTile) world.getTileEntity(pos);
|
||||
|
||||
return NetworkUtils.attempt(world, pos, hit.getFace(), player, () -> NetworkHooks.openGui(
|
||||
(ServerPlayerEntity) player,
|
||||
new CraftingMonitorContainerProvider(tile.getNode(), tile),
|
||||
pos
|
||||
), Permission.MODIFY, Permission.AUTOCRAFTING);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasConnectedState() {
|
||||
return true;
|
||||
}
|
||||
}
|
@@ -33,6 +33,7 @@ public class ServerConfig {
|
||||
private PortableGrid portableGrid;
|
||||
private Crafter crafter;
|
||||
private CrafterManager crafterManager;
|
||||
private CraftingMonitor craftingMonitor;
|
||||
|
||||
public ServerConfig() {
|
||||
upgrades = new Upgrades();
|
||||
@@ -62,6 +63,7 @@ public class ServerConfig {
|
||||
portableGrid = new PortableGrid();
|
||||
crafter = new Crafter();
|
||||
crafterManager = new CrafterManager();
|
||||
craftingMonitor = new CraftingMonitor();
|
||||
|
||||
spec = builder.build();
|
||||
}
|
||||
@@ -178,6 +180,10 @@ public class ServerConfig {
|
||||
return crafterManager;
|
||||
}
|
||||
|
||||
public CraftingMonitor getCraftingMonitor() {
|
||||
return craftingMonitor;
|
||||
}
|
||||
|
||||
public class Controller {
|
||||
private final ForgeConfigSpec.BooleanValue useEnergy;
|
||||
private final ForgeConfigSpec.IntValue capacity;
|
||||
@@ -837,4 +843,20 @@ public class ServerConfig {
|
||||
return usage.get();
|
||||
}
|
||||
}
|
||||
|
||||
public class CraftingMonitor {
|
||||
private final ForgeConfigSpec.IntValue usage;
|
||||
|
||||
public CraftingMonitor() {
|
||||
builder.push("craftingMonitor");
|
||||
|
||||
usage = builder.comment("The energy used by the Crafting Monitor").defineInRange("usage", 8, 0, Integer.MAX_VALUE);
|
||||
|
||||
builder.pop();
|
||||
}
|
||||
|
||||
public int getUsage() {
|
||||
return usage.get();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -1,12 +1,15 @@
|
||||
package com.raoulvdberge.refinedstorage.container;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.RS;
|
||||
import com.raoulvdberge.refinedstorage.RSContainers;
|
||||
import com.raoulvdberge.refinedstorage.api.autocrafting.ICraftingManager;
|
||||
import com.raoulvdberge.refinedstorage.api.autocrafting.craftingmonitor.ICraftingMonitorListener;
|
||||
import com.raoulvdberge.refinedstorage.network.craftingmonitor.CraftingMonitorUpdateMessage;
|
||||
import com.raoulvdberge.refinedstorage.tile.craftingmonitor.CraftingMonitorTile;
|
||||
import com.raoulvdberge.refinedstorage.tile.craftingmonitor.ICraftingMonitor;
|
||||
import com.raoulvdberge.refinedstorage.tile.craftingmonitor.TileCraftingMonitor;
|
||||
import com.raoulvdberge.refinedstorage.tile.craftingmonitor.WirelessCraftingMonitor;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.entity.player.ServerPlayerEntity;
|
||||
import net.minecraft.inventory.container.Slot;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
@@ -16,7 +19,7 @@ public class CraftingMonitorContainer extends BaseContainer implements ICrafting
|
||||
private ICraftingMonitor craftingMonitor;
|
||||
private boolean addedListener;
|
||||
|
||||
public CraftingMonitorContainer(ICraftingMonitor craftingMonitor, @Nullable TileCraftingMonitor craftingMonitorTile, PlayerEntity player, int windowId) {
|
||||
public CraftingMonitorContainer(ICraftingMonitor craftingMonitor, @Nullable CraftingMonitorTile craftingMonitorTile, PlayerEntity player, int windowId) {
|
||||
super(RSContainers.CRAFTING_MONITOR, craftingMonitorTile, player, windowId);
|
||||
|
||||
this.craftingMonitor = craftingMonitor;
|
||||
@@ -91,6 +94,6 @@ public class CraftingMonitorContainer extends BaseContainer implements ICrafting
|
||||
|
||||
@Override
|
||||
public void onChanged() {
|
||||
// TODO RS.INSTANCE.network.sendTo(new MessageCraftingMonitorElements(craftingMonitor), (ServerPlayerEntity) getPlayer());
|
||||
RS.NETWORK_HANDLER.sendTo((ServerPlayerEntity) getPlayer(), new CraftingMonitorUpdateMessage(craftingMonitor));
|
||||
}
|
||||
}
|
||||
|
@@ -3,6 +3,7 @@ package com.raoulvdberge.refinedstorage.container.factory;
|
||||
import com.raoulvdberge.refinedstorage.container.CrafterManagerContainer;
|
||||
import com.raoulvdberge.refinedstorage.screen.EmptyScreenInfoProvider;
|
||||
import com.raoulvdberge.refinedstorage.tile.CrafterManagerTile;
|
||||
import com.raoulvdberge.refinedstorage.util.PacketBufferUtils;
|
||||
import net.minecraft.entity.player.PlayerInventory;
|
||||
import net.minecraft.network.PacketBuffer;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
@@ -21,7 +22,7 @@ public class CrafterManagerContainerFactory implements IContainerFactory<Crafter
|
||||
int size = buf.readInt();
|
||||
|
||||
for (int i = 0; i < size; ++i) {
|
||||
data.put(buf.readString(), buf.readInt());
|
||||
data.put(PacketBufferUtils.readString(buf), buf.readInt());
|
||||
}
|
||||
|
||||
CrafterManagerContainer container = new CrafterManagerContainer((CrafterManagerTile) inv.player.world.getTileEntity(pos), inv.player, windowId);
|
||||
|
@@ -0,0 +1,24 @@
|
||||
package com.raoulvdberge.refinedstorage.container.factory;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.container.CraftingMonitorContainer;
|
||||
import com.raoulvdberge.refinedstorage.tile.craftingmonitor.CraftingMonitorTile;
|
||||
import net.minecraft.entity.player.PlayerInventory;
|
||||
import net.minecraft.network.PacketBuffer;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraftforge.fml.network.IContainerFactory;
|
||||
|
||||
public class CraftingMonitorContainerFactory implements IContainerFactory<CraftingMonitorContainer> {
|
||||
@Override
|
||||
public CraftingMonitorContainer create(int windowId, PlayerInventory inv, PacketBuffer data) {
|
||||
BlockPos pos = data.readBlockPos();
|
||||
|
||||
CraftingMonitorTile tile = (CraftingMonitorTile) inv.player.world.getTileEntity(pos);
|
||||
|
||||
return new CraftingMonitorContainer(
|
||||
tile.getNode(),
|
||||
tile,
|
||||
inv.player,
|
||||
windowId
|
||||
);
|
||||
}
|
||||
}
|
@@ -0,0 +1,34 @@
|
||||
package com.raoulvdberge.refinedstorage.container.factory;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.container.CraftingMonitorContainer;
|
||||
import com.raoulvdberge.refinedstorage.tile.craftingmonitor.CraftingMonitorTile;
|
||||
import com.raoulvdberge.refinedstorage.tile.craftingmonitor.ICraftingMonitor;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.entity.player.PlayerInventory;
|
||||
import net.minecraft.inventory.container.Container;
|
||||
import net.minecraft.inventory.container.INamedContainerProvider;
|
||||
import net.minecraft.util.text.ITextComponent;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
public class CraftingMonitorContainerProvider implements INamedContainerProvider {
|
||||
private ICraftingMonitor craftingMonitor;
|
||||
@Nullable
|
||||
private CraftingMonitorTile tile;
|
||||
|
||||
public CraftingMonitorContainerProvider(ICraftingMonitor craftingMonitor, @Nullable CraftingMonitorTile tile) {
|
||||
this.craftingMonitor = craftingMonitor;
|
||||
this.tile = tile;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ITextComponent getDisplayName() {
|
||||
return craftingMonitor.getTitle();
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public Container createMenu(int windowId, PlayerInventory playerInventory, PlayerEntity playerEntity) {
|
||||
return new CraftingMonitorContainer(craftingMonitor, tile, playerEntity, windowId);
|
||||
}
|
||||
}
|
@@ -18,7 +18,7 @@ public class FilterIconFluidInventory extends FluidInventory {
|
||||
});
|
||||
|
||||
FluidStack icon = FilterItem.getFluidIcon(stack);
|
||||
if (icon != null) {
|
||||
if (!icon.isEmpty()) {
|
||||
setFluid(0, icon);
|
||||
}
|
||||
}
|
||||
|
@@ -78,7 +78,7 @@ public class FilterItemHandler extends BaseItemHandler {
|
||||
ItemStack icon = FilterItem.getIcon(filter);
|
||||
FluidStack fluidIcon = FilterItem.getFluidIcon(filter);
|
||||
|
||||
if (icon.isEmpty() && fluidIcon == null) {
|
||||
if (icon.isEmpty() && fluidIcon.isEmpty()) {
|
||||
this.filters.addAll(filters);
|
||||
} else {
|
||||
tabs.add(new GridTab(filters, FilterItem.getName(filter), icon, fluidIcon));
|
||||
|
@@ -172,9 +172,9 @@ public class FilterItem extends Item {
|
||||
}
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Nonnull
|
||||
public static FluidStack getFluidIcon(ItemStack stack) {
|
||||
return stack.hasTag() && stack.getTag().contains(NBT_FLUID_ICON) ? FluidStack.loadFluidStackFromNBT(stack.getTag().getCompound(NBT_FLUID_ICON)) : null;
|
||||
return stack.hasTag() && stack.getTag().contains(NBT_FLUID_ICON) ? FluidStack.loadFluidStackFromNBT(stack.getTag().getCompound(NBT_FLUID_ICON)) : FluidStack.EMPTY;
|
||||
}
|
||||
|
||||
public static int getType(ItemStack stack) {
|
||||
|
@@ -1,7 +1,10 @@
|
||||
package com.raoulvdberge.refinedstorage.network;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.network.craftingmonitor.CraftingMonitorUpdateMessage;
|
||||
import com.raoulvdberge.refinedstorage.network.grid.GridCraftingPreviewResponseMessage;
|
||||
import com.raoulvdberge.refinedstorage.network.grid.GridCraftingStartResponseMessage;
|
||||
import com.raoulvdberge.refinedstorage.screen.BaseScreen;
|
||||
import com.raoulvdberge.refinedstorage.screen.CraftingMonitorScreen;
|
||||
import com.raoulvdberge.refinedstorage.screen.grid.CraftingPreviewScreen;
|
||||
import com.raoulvdberge.refinedstorage.screen.grid.CraftingSettingsScreen;
|
||||
import net.minecraft.client.Minecraft;
|
||||
@@ -26,4 +29,8 @@ public class ClientProxy {
|
||||
((CraftingSettingsScreen) screen).close();
|
||||
}
|
||||
}
|
||||
|
||||
public static void onReceivedCraftingMonitorUpdateMessage(CraftingMonitorUpdateMessage message) {
|
||||
BaseScreen.executeLater(CraftingMonitorScreen.class, craftingMonitor -> craftingMonitor.setTasks(message.getTasks()));
|
||||
}
|
||||
}
|
||||
|
@@ -1,43 +0,0 @@
|
||||
package com.raoulvdberge.refinedstorage.network;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.container.CraftingMonitorContainer;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import net.minecraft.entity.player.ServerPlayerEntity;
|
||||
import net.minecraftforge.fml.common.network.ByteBufUtils;
|
||||
import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
public class MessageCraftingMonitorCancel extends MessageHandlerPlayerToServer<MessageCraftingMonitorCancel> implements IMessage {
|
||||
private UUID taskId;
|
||||
|
||||
public MessageCraftingMonitorCancel() {
|
||||
}
|
||||
|
||||
public MessageCraftingMonitorCancel(UUID taskId) {
|
||||
this.taskId = taskId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fromBytes(ByteBuf buf) {
|
||||
if (buf.readBoolean()) {
|
||||
taskId = UUID.fromString(ByteBufUtils.readUTF8String(buf));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void toBytes(ByteBuf buf) {
|
||||
buf.writeBoolean(taskId != null);
|
||||
|
||||
if (taskId != null) {
|
||||
ByteBufUtils.writeUTF8String(buf, taskId.toString());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handle(MessageCraftingMonitorCancel message, ServerPlayerEntity player) {
|
||||
if (player.openContainer instanceof ContainerCraftingMonitor) {
|
||||
((ContainerCraftingMonitor) player.openContainer).getCraftingMonitor().onCancelled(player, message.taskId);
|
||||
}
|
||||
}
|
||||
}
|
@@ -1,6 +1,8 @@
|
||||
package com.raoulvdberge.refinedstorage.network;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.RS;
|
||||
import com.raoulvdberge.refinedstorage.network.craftingmonitor.CraftingMonitorCancelMessage;
|
||||
import com.raoulvdberge.refinedstorage.network.craftingmonitor.CraftingMonitorUpdateMessage;
|
||||
import com.raoulvdberge.refinedstorage.network.disk.StorageDiskSizeRequestMessage;
|
||||
import com.raoulvdberge.refinedstorage.network.disk.StorageDiskSizeResponseMessage;
|
||||
import com.raoulvdberge.refinedstorage.network.grid.*;
|
||||
@@ -58,6 +60,8 @@ public class NetworkHandler {
|
||||
handler.registerMessage(id++, GridCraftingPreviewResponseMessage.class, GridCraftingPreviewResponseMessage::encode, GridCraftingPreviewResponseMessage::decode, GridCraftingPreviewResponseMessage::handle);
|
||||
handler.registerMessage(id++, GridCraftingStartRequestMessage.class, GridCraftingStartRequestMessage::encode, GridCraftingStartRequestMessage::decode, GridCraftingStartRequestMessage::handle);
|
||||
handler.registerMessage(id++, GridCraftingStartResponseMessage.class, GridCraftingStartResponseMessage::encode, GridCraftingStartResponseMessage::decode, GridCraftingStartResponseMessage::handle);
|
||||
handler.registerMessage(id++, CraftingMonitorUpdateMessage.class, CraftingMonitorUpdateMessage::encode, CraftingMonitorUpdateMessage::decode, CraftingMonitorUpdateMessage::handle);
|
||||
handler.registerMessage(id++, CraftingMonitorCancelMessage.class, CraftingMonitorCancelMessage::encode, CraftingMonitorCancelMessage::decode, CraftingMonitorCancelMessage::handle);
|
||||
}
|
||||
|
||||
public void sendToServer(Object message) {
|
||||
|
@@ -0,0 +1,45 @@
|
||||
package com.raoulvdberge.refinedstorage.network.craftingmonitor;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.container.CraftingMonitorContainer;
|
||||
import net.minecraft.entity.player.ServerPlayerEntity;
|
||||
import net.minecraft.network.PacketBuffer;
|
||||
import net.minecraftforge.fml.network.NetworkEvent;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.UUID;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
public class CraftingMonitorCancelMessage {
|
||||
@Nullable
|
||||
private UUID taskId;
|
||||
|
||||
public CraftingMonitorCancelMessage(@Nullable UUID taskId) {
|
||||
this.taskId = taskId;
|
||||
}
|
||||
|
||||
public static CraftingMonitorCancelMessage decode(PacketBuffer buf) {
|
||||
return new CraftingMonitorCancelMessage(buf.readBoolean() ? buf.readUniqueId() : null);
|
||||
}
|
||||
|
||||
public static void encode(CraftingMonitorCancelMessage message, PacketBuffer buf) {
|
||||
buf.writeBoolean(message.taskId != null);
|
||||
|
||||
if (message.taskId != null) {
|
||||
buf.writeUniqueId(message.taskId);
|
||||
}
|
||||
}
|
||||
|
||||
public static void handle(CraftingMonitorCancelMessage message, Supplier<NetworkEvent.Context> ctx) {
|
||||
ServerPlayerEntity player = ctx.get().getSender();
|
||||
|
||||
if (player != null) {
|
||||
ctx.get().enqueueWork(() -> {
|
||||
if (player.openContainer instanceof CraftingMonitorContainer) {
|
||||
((CraftingMonitorContainer) player.openContainer).getCraftingMonitor().onCancelled(player, message.taskId);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
ctx.get().setPacketHandled(true);
|
||||
}
|
||||
}
|
@@ -1,4 +1,4 @@
|
||||
package com.raoulvdberge.refinedstorage.network;
|
||||
package com.raoulvdberge.refinedstorage.network.craftingmonitor;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.api.autocrafting.craftingmonitor.ICraftingMonitorElement;
|
||||
import com.raoulvdberge.refinedstorage.api.autocrafting.task.CraftingTaskReadException;
|
||||
@@ -6,42 +6,46 @@ import com.raoulvdberge.refinedstorage.api.autocrafting.task.ICraftingRequestInf
|
||||
import com.raoulvdberge.refinedstorage.api.autocrafting.task.ICraftingTask;
|
||||
import com.raoulvdberge.refinedstorage.api.network.grid.IGridTab;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
||||
import com.raoulvdberge.refinedstorage.gui.GuiBase;
|
||||
import com.raoulvdberge.refinedstorage.gui.GuiCraftingMonitor;
|
||||
import com.raoulvdberge.refinedstorage.network.ClientProxy;
|
||||
import com.raoulvdberge.refinedstorage.screen.CraftingMonitorScreen;
|
||||
import com.raoulvdberge.refinedstorage.tile.craftingmonitor.ICraftingMonitor;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import net.minecraftforge.fml.common.network.ByteBufUtils;
|
||||
import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
|
||||
import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler;
|
||||
import net.minecraftforge.fml.common.network.simpleimpl.MessageContext;
|
||||
import net.minecraft.network.PacketBuffer;
|
||||
import net.minecraftforge.fml.network.NetworkEvent;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import java.util.function.Function;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
public class MessageCraftingMonitorElements implements IMessage, IMessageHandler<MessageCraftingMonitorElements, IMessage> {
|
||||
public class CraftingMonitorUpdateMessage {
|
||||
private ICraftingMonitor craftingMonitor;
|
||||
|
||||
private List<IGridTab> tasks = new ArrayList<>();
|
||||
|
||||
public MessageCraftingMonitorElements() {
|
||||
}
|
||||
|
||||
public MessageCraftingMonitorElements(ICraftingMonitor craftingMonitor) {
|
||||
public CraftingMonitorUpdateMessage(ICraftingMonitor craftingMonitor) {
|
||||
this.craftingMonitor = craftingMonitor;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fromBytes(ByteBuf buf) {
|
||||
public CraftingMonitorUpdateMessage(List<IGridTab> tasks) {
|
||||
this.tasks = tasks;
|
||||
}
|
||||
|
||||
public List<IGridTab> getTasks() {
|
||||
return tasks;
|
||||
}
|
||||
|
||||
public static CraftingMonitorUpdateMessage decode(PacketBuffer buf) {
|
||||
int size = buf.readInt();
|
||||
|
||||
List<IGridTab> tasks = new ArrayList<>();
|
||||
|
||||
for (int i = 0; i < size; ++i) {
|
||||
UUID id = UUID.fromString(ByteBufUtils.readUTF8String(buf));
|
||||
UUID id = buf.readUniqueId();
|
||||
|
||||
ICraftingRequestInfo requested = null;
|
||||
try {
|
||||
requested = API.instance().createCraftingRequestInfo(ByteBufUtils.readTag(buf));
|
||||
requested = API.instance().createCraftingRequestInfo(buf.readCompoundTag());
|
||||
} catch (CraftingTaskReadException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
@@ -55,24 +59,25 @@ public class MessageCraftingMonitorElements implements IMessage, IMessageHandler
|
||||
int elementCount = buf.readInt();
|
||||
|
||||
for (int j = 0; j < elementCount; ++j) {
|
||||
Function<ByteBuf, ICraftingMonitorElement> factory = API.instance().getCraftingMonitorElementRegistry().get(ByteBufUtils.readUTF8String(buf));
|
||||
Function<PacketBuffer, ICraftingMonitorElement> factory = API.instance().getCraftingMonitorElementRegistry().get(buf.readResourceLocation());
|
||||
|
||||
if (factory != null) {
|
||||
elements.add(factory.apply(buf));
|
||||
}
|
||||
}
|
||||
|
||||
tasks.add(new GuiCraftingMonitor.CraftingMonitorTask(id, requested, qty, executionStarted, percentage, elements));
|
||||
tasks.add(new CraftingMonitorScreen.Task(id, requested, qty, executionStarted, percentage, elements));
|
||||
}
|
||||
|
||||
return new CraftingMonitorUpdateMessage(tasks);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void toBytes(ByteBuf buf) {
|
||||
buf.writeInt(craftingMonitor.getTasks().size());
|
||||
public static void encode(CraftingMonitorUpdateMessage message, PacketBuffer buf) {
|
||||
buf.writeInt(message.craftingMonitor.getTasks().size());
|
||||
|
||||
for (ICraftingTask task : craftingMonitor.getTasks()) {
|
||||
ByteBufUtils.writeUTF8String(buf, task.getId().toString());
|
||||
ByteBufUtils.writeTag(buf, task.getRequested().writeToNbt());
|
||||
for (ICraftingTask task : message.craftingMonitor.getTasks()) {
|
||||
buf.writeUniqueId(task.getId());
|
||||
buf.writeCompoundTag(task.getRequested().writeToNbt());
|
||||
buf.writeInt(task.getQuantity());
|
||||
buf.writeLong(task.getExecutionStarted());
|
||||
buf.writeInt(task.getCompletionPercentage());
|
||||
@@ -82,17 +87,15 @@ public class MessageCraftingMonitorElements implements IMessage, IMessageHandler
|
||||
buf.writeInt(elements.size());
|
||||
|
||||
for (ICraftingMonitorElement element : elements) {
|
||||
ByteBufUtils.writeUTF8String(buf, element.getId());
|
||||
buf.writeResourceLocation(element.getId());
|
||||
|
||||
element.write(buf);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public IMessage onMessage(MessageCraftingMonitorElements message, MessageContext ctx) {
|
||||
GuiBase.executeLater(GuiCraftingMonitor.class, craftingMonitor -> craftingMonitor.setTasks(message.tasks));
|
||||
|
||||
return null;
|
||||
public static void handle(CraftingMonitorUpdateMessage message, Supplier<NetworkEvent.Context> ctx) {
|
||||
ctx.get().enqueueWork(() -> ClientProxy.onReceivedCraftingMonitorUpdateMessage(message));
|
||||
ctx.get().setPacketHandled(true);
|
||||
}
|
||||
}
|
@@ -72,7 +72,6 @@ public class GridCraftingPreviewResponseMessage {
|
||||
|
||||
public static void handle(GridCraftingPreviewResponseMessage message, Supplier<NetworkEvent.Context> ctx) {
|
||||
ctx.get().enqueueWork(() -> ClientProxy.onReceivedCraftingPreviewResponseMessage(message));
|
||||
|
||||
ctx.get().setPacketHandled(true);
|
||||
}
|
||||
}
|
@@ -7,15 +7,6 @@ public class ProxyCommon {
|
||||
|
||||
API.deliver(e.getAsmData());
|
||||
|
||||
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(), buf.readInt(), buf.readInt(), buf.readInt()));
|
||||
API.instance().getCraftingMonitorElementRegistry().add(CraftingMonitorElementError.ID, buf -> {
|
||||
String id = ByteBufUtils.readUTF8String(buf);
|
||||
String message = ByteBufUtils.readUTF8String(buf);
|
||||
|
||||
return new CraftingMonitorElementError(API.instance().getCraftingMonitorElementRegistry().get(id).apply(buf), message);
|
||||
});
|
||||
|
||||
IntegrationInventorySorter.register();
|
||||
}
|
||||
|
||||
|
@@ -13,6 +13,7 @@ import com.raoulvdberge.refinedstorage.apiimpl.API;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.render.CraftingMonitorElementDrawers;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.render.ElementDrawers;
|
||||
import com.raoulvdberge.refinedstorage.container.CraftingMonitorContainer;
|
||||
import com.raoulvdberge.refinedstorage.network.craftingmonitor.CraftingMonitorCancelMessage;
|
||||
import com.raoulvdberge.refinedstorage.screen.widget.ScrollbarWidget;
|
||||
import com.raoulvdberge.refinedstorage.screen.widget.TabListWidget;
|
||||
import com.raoulvdberge.refinedstorage.screen.widget.sidebutton.RedstoneModeSideButton;
|
||||
@@ -24,6 +25,7 @@ import net.minecraft.client.renderer.RenderHelper;
|
||||
import net.minecraft.client.resources.I18n;
|
||||
import net.minecraft.entity.player.PlayerInventory;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.text.ITextComponent;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
@@ -32,8 +34,8 @@ import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.UUID;
|
||||
|
||||
public class GuiCraftingMonitor extends BaseScreen<CraftingMonitorContainer> {
|
||||
public static class CraftingMonitorTask implements IGridTab {
|
||||
public class CraftingMonitorScreen extends BaseScreen<CraftingMonitorContainer> {
|
||||
public static class Task implements IGridTab {
|
||||
private UUID id;
|
||||
private ICraftingRequestInfo requested;
|
||||
private int qty;
|
||||
@@ -41,7 +43,7 @@ public class GuiCraftingMonitor extends BaseScreen<CraftingMonitorContainer> {
|
||||
private int completionPercentage;
|
||||
private List<ICraftingMonitorElement> elements;
|
||||
|
||||
public CraftingMonitorTask(UUID id, ICraftingRequestInfo requested, int qty, long executionStarted, int completionPercentage, List<ICraftingMonitorElement> elements) {
|
||||
public Task(UUID id, ICraftingRequestInfo requested, int qty, long executionStarted, int completionPercentage, List<ICraftingMonitorElement> elements) {
|
||||
this.id = id;
|
||||
this.requested = requested;
|
||||
this.qty = qty;
|
||||
@@ -64,7 +66,7 @@ public class GuiCraftingMonitor extends BaseScreen<CraftingMonitorContainer> {
|
||||
int minutes = (totalSecs % 3600) / 60;
|
||||
int seconds = totalSecs % 60;
|
||||
|
||||
smallTextLines.add(I18n.format("gui.refinedstorage:crafting_monitor.tooltip.requested", requested.getFluid() != null ? API.instance().getQuantityFormatter().formatInBucketForm(qty) : API.instance().getQuantityFormatter().format(qty)));
|
||||
smallTextLines.add(I18n.format("gui.refinedstorage.crafting_monitor.tooltip.requested", requested.getFluid() != null ? API.instance().getQuantityFormatter().formatInBucketForm(qty) : API.instance().getQuantityFormatter().format(qty)));
|
||||
smallTextLines.add(String.format("%02d:%02d", minutes, seconds));
|
||||
smallTextLines.add(String.format("%d%%", completionPercentage));
|
||||
|
||||
@@ -102,10 +104,10 @@ public class GuiCraftingMonitor extends BaseScreen<CraftingMonitorContainer> {
|
||||
|
||||
private IElementDrawers drawers = new CraftingMonitorElementDrawers(this, font, ITEM_WIDTH, ITEM_HEIGHT);
|
||||
|
||||
public GuiCraftingMonitor(CraftingMonitorContainer container, ICraftingMonitor craftingMonitor, PlayerInventory inventory) {
|
||||
super(container, 254, 201, inventory, null);
|
||||
public CraftingMonitorScreen(CraftingMonitorContainer container, PlayerInventory inventory, ITextComponent title) {
|
||||
super(container, 254, 201, inventory, title);
|
||||
|
||||
this.craftingMonitor = craftingMonitor;
|
||||
this.craftingMonitor = container.getCraftingMonitor();
|
||||
|
||||
this.tabs = new TabListWidget(this, new ElementDrawers(this, font), () -> tasks, () -> (int) Math.floor((float) Math.max(0, tasks.size() - 1) / (float) ICraftingMonitor.TABS_PER_PAGE), craftingMonitor::getTabPage, () -> {
|
||||
IGridTab tab = getCurrentTab();
|
||||
@@ -116,11 +118,10 @@ public class GuiCraftingMonitor extends BaseScreen<CraftingMonitorContainer> {
|
||||
|
||||
return tasks.indexOf(tab);
|
||||
}, ICraftingMonitor.TABS_PER_PAGE);
|
||||
|
||||
this.tabs.addListener(new TabListWidget.ITabListListener() {
|
||||
@Override
|
||||
public void onSelectionChanged(int tab) {
|
||||
craftingMonitor.onTabSelectionChanged(Optional.of(((CraftingMonitorTask) tasks.get(tab)).id));
|
||||
craftingMonitor.onTabSelectionChanged(Optional.of(((Task) tasks.get(tab)).id));
|
||||
|
||||
scrollbar.setOffset(0);
|
||||
}
|
||||
@@ -130,6 +131,8 @@ public class GuiCraftingMonitor extends BaseScreen<CraftingMonitorContainer> {
|
||||
craftingMonitor.onTabPageChanged(page);
|
||||
}
|
||||
});
|
||||
|
||||
this.scrollbar = new ScrollbarWidget(this, 235, 20, 12, 149);
|
||||
}
|
||||
|
||||
public void setTasks(List<IGridTab> tasks) {
|
||||
@@ -147,28 +150,32 @@ public class GuiCraftingMonitor extends BaseScreen<CraftingMonitorContainer> {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
return ((CraftingMonitorTask) tab).elements;
|
||||
return ((Task) tab).elements;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPostInit(int x, int y) {
|
||||
this.tabs.init(xSize);
|
||||
|
||||
this.scrollbar = new ScrollbarWidget(this, 235, 20, 12, 149);
|
||||
|
||||
if (craftingMonitor.getRedstoneModeParameter() != null) {
|
||||
addSideButton(new RedstoneModeSideButton(this, craftingMonitor.getRedstoneModeParameter()));
|
||||
}
|
||||
|
||||
String cancel = I18n.format("gui.cancel");
|
||||
String cancelAll = I18n.format("misc.refinedstorage:cancel_all");
|
||||
String cancelAll = I18n.format("misc.refinedstorage.cancel_all");
|
||||
|
||||
int cancelButtonWidth = 14 + font.getStringWidth(cancel);
|
||||
int cancelAllButtonWidth = 14 + font.getStringWidth(cancelAll);
|
||||
|
||||
this.cancelButton = addButton(x + 7, y + 201 - 20 - 7, cancelButtonWidth, 20, cancel, false, true, btn -> {
|
||||
if (hasValidTabSelected()) {
|
||||
RS.NETWORK_HANDLER.sendToServer(new CraftingMonitorCancelMessage(((Task) getCurrentTab()).id));
|
||||
}
|
||||
});
|
||||
this.cancelAllButton = addButton(x + 7 + cancelButtonWidth + 4, y + 201 - 20 - 7, cancelAllButtonWidth, 20, cancelAll, false, true, btn -> {
|
||||
if (!tasks.isEmpty()) {
|
||||
RS.NETWORK_HANDLER.sendToServer(new CraftingMonitorCancelMessage(null));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -223,7 +230,7 @@ public class GuiCraftingMonitor extends BaseScreen<CraftingMonitorContainer> {
|
||||
|
||||
@Nullable
|
||||
private IGridTab getTabById(UUID id) {
|
||||
return tasks.stream().filter(t -> ((CraftingMonitorTask) t).id.equals(id)).findFirst().orElse(null);
|
||||
return tasks.stream().filter(t -> ((Task) t).id.equals(id)).findFirst().orElse(null);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -236,12 +243,14 @@ public class GuiCraftingMonitor extends BaseScreen<CraftingMonitorContainer> {
|
||||
|
||||
blit(x, y, 0, 0, xSize, ySize);
|
||||
|
||||
scrollbar.render();
|
||||
|
||||
tabs.drawForeground(x, y - tabs.getHeight(), mouseX, mouseY, craftingMonitor.isActive());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void renderForeground(int mouseX, int mouseY) {
|
||||
renderString(7, 7, I18n.format(craftingMonitor.getGuiTitle()));
|
||||
renderString(7, 7, title.getFormattedText());
|
||||
|
||||
int item = scrollbar != null ? scrollbar.getOffset() * 3 : 0;
|
||||
|
||||
@@ -280,26 +289,33 @@ public class GuiCraftingMonitor extends BaseScreen<CraftingMonitorContainer> {
|
||||
tabs.drawTooltip(font, mouseX, mouseY);
|
||||
}
|
||||
|
||||
/* TODO
|
||||
@Override
|
||||
protected void actionPerformed(GuiButton button) throws IOException {
|
||||
super.actionPerformed(button);
|
||||
|
||||
tabs.actionPerformed(button);
|
||||
|
||||
if (button == cancelButton && hasValidTabSelected()) {
|
||||
RS.INSTANCE.network.sendToServer(new MessageCraftingMonitorCancel(((CraftingMonitorTask) getCurrentTab()).id));
|
||||
} else if (button == cancelAllButton && tasks.size() > 0) {
|
||||
RS.INSTANCE.network.sendToServer(new MessageCraftingMonitorCancel(null));
|
||||
}
|
||||
}*/
|
||||
|
||||
@Override
|
||||
public boolean mouseClicked(double mouseX, double mouseY, int mouseButton) {
|
||||
if (super.mouseClicked(mouseX, mouseY, mouseButton)) {
|
||||
public boolean mouseClicked(double mouseX, double mouseY, int clickedButton) {
|
||||
if (tabs.mouseClicked()) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return this.tabs.mouseClicked();
|
||||
if (scrollbar.mouseClicked(mouseX, mouseY, clickedButton)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return super.mouseClicked(mouseX, mouseY, clickedButton);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mouseMoved(double mx, double my) {
|
||||
scrollbar.mouseMoved(mx, my);
|
||||
|
||||
super.mouseMoved(mx, my);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean mouseReleased(double mx, double my, int button) {
|
||||
return scrollbar.mouseReleased(mx, my, button) || super.mouseReleased(mx, my, button);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean mouseScrolled(double x, double y, double delta) {
|
||||
return this.scrollbar.mouseScrolled(x, y, delta) || super.mouseScrolled(x, y, delta);
|
||||
}
|
||||
}
|
@@ -1,7 +1,7 @@
|
||||
package com.raoulvdberge.refinedstorage.tile.craftingmonitor;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.RSTiles;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.network.node.NetworkNodeCraftingMonitor;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.network.node.CraftingMonitorNetworkNode;
|
||||
import com.raoulvdberge.refinedstorage.tile.NetworkNodeTile;
|
||||
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
|
||||
import net.minecraft.network.datasync.DataSerializers;
|
||||
@@ -12,8 +12,8 @@ import javax.annotation.Nonnull;
|
||||
import java.util.Optional;
|
||||
import java.util.UUID;
|
||||
|
||||
public class TileCraftingMonitor extends NetworkNodeTile<NetworkNodeCraftingMonitor> {
|
||||
public static final TileDataParameter<Optional<UUID>, TileCraftingMonitor> TAB_SELECTED = new TileDataParameter<>(DataSerializers.OPTIONAL_UNIQUE_ID, Optional.empty(), t -> t.getNode().getTabSelected(), (t, v) -> {
|
||||
public class CraftingMonitorTile extends NetworkNodeTile<CraftingMonitorNetworkNode> {
|
||||
public static final TileDataParameter<Optional<UUID>, CraftingMonitorTile> TAB_SELECTED = new TileDataParameter<>(DataSerializers.OPTIONAL_UNIQUE_ID, Optional.empty(), t -> t.getNode().getTabSelected(), (t, v) -> {
|
||||
if (v.isPresent() && t.getNode().getTabSelected().isPresent() && v.get().equals(t.getNode().getTabSelected().get())) {
|
||||
t.getNode().setTabSelected(Optional.empty());
|
||||
} else {
|
||||
@@ -22,14 +22,14 @@ public class TileCraftingMonitor extends NetworkNodeTile<NetworkNodeCraftingMoni
|
||||
|
||||
t.getNode().markDirty();
|
||||
});
|
||||
public static final TileDataParameter<Integer, TileCraftingMonitor> TAB_PAGE = new TileDataParameter<>(DataSerializers.VARINT, 0, t -> t.getNode().getTabPage(), (t, v) -> {
|
||||
public static final TileDataParameter<Integer, CraftingMonitorTile> TAB_PAGE = new TileDataParameter<>(DataSerializers.VARINT, 0, t -> t.getNode().getTabPage(), (t, v) -> {
|
||||
if (v >= 0) {
|
||||
t.getNode().setTabPage(v);
|
||||
t.getNode().markDirty();
|
||||
}
|
||||
});
|
||||
|
||||
public TileCraftingMonitor() {
|
||||
public CraftingMonitorTile() {
|
||||
super(RSTiles.CRAFTING_MONITOR);
|
||||
|
||||
dataManager.addWatchedParameter(TAB_SELECTED);
|
||||
@@ -38,7 +38,7 @@ public class TileCraftingMonitor extends NetworkNodeTile<NetworkNodeCraftingMoni
|
||||
|
||||
@Override
|
||||
@Nonnull
|
||||
public NetworkNodeCraftingMonitor createNode(World world, BlockPos pos) {
|
||||
return new NetworkNodeCraftingMonitor(world, pos);
|
||||
public CraftingMonitorNetworkNode createNode(World world, BlockPos pos) {
|
||||
return new CraftingMonitorNetworkNode(world, pos);
|
||||
}
|
||||
}
|
@@ -5,6 +5,7 @@ import com.raoulvdberge.refinedstorage.api.autocrafting.task.ICraftingTask;
|
||||
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.entity.player.ServerPlayerEntity;
|
||||
import net.minecraft.util.text.ITextComponent;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.Collection;
|
||||
@@ -14,7 +15,7 @@ import java.util.UUID;
|
||||
public interface ICraftingMonitor {
|
||||
int TABS_PER_PAGE = 7;
|
||||
|
||||
String getGuiTitle();
|
||||
ITextComponent getTitle();
|
||||
|
||||
void onCancelled(ServerPlayerEntity player, @Nullable UUID id);
|
||||
|
||||
|
@@ -9,6 +9,8 @@ import net.minecraft.entity.player.ServerPlayerEntity;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.text.ITextComponent;
|
||||
import net.minecraft.util.text.TranslationTextComponent;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
@@ -34,8 +36,8 @@ public class WirelessCraftingMonitor implements ICraftingMonitor {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getGuiTitle() {
|
||||
return "gui.refinedstorage:wireless_crafting_monitor";
|
||||
public ITextComponent getTitle() {
|
||||
return new TranslationTextComponent("gui.refinedstorage.wireless_crafting_monitor");
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@@ -106,7 +106,7 @@ public final class StackUtils {
|
||||
|
||||
StorageTrackerEntry entry = null;
|
||||
if (buf.readBoolean()) {
|
||||
entry = new StorageTrackerEntry(buf.readLong(), buf.readString());
|
||||
entry = new StorageTrackerEntry(buf.readLong(), PacketBufferUtils.readString(buf));
|
||||
}
|
||||
|
||||
return new ItemGridStack(id, stack, craftable, entry);
|
||||
@@ -135,7 +135,7 @@ public final class StackUtils {
|
||||
|
||||
StorageTrackerEntry entry = null;
|
||||
if (buf.readBoolean()) {
|
||||
entry = new StorageTrackerEntry(buf.readLong(), buf.readString());
|
||||
entry = new StorageTrackerEntry(buf.readLong(), PacketBufferUtils.readString(buf));
|
||||
}
|
||||
|
||||
return new FluidGridStack(id, stack, entry, craftable);
|
||||
|
@@ -1,47 +1,36 @@
|
||||
{
|
||||
"forge_marker": 1,
|
||||
"defaults": {
|
||||
"model": "refinedstorage:cube_north_cutout",
|
||||
"textures": {
|
||||
"particle": "refinedstorage:blocks/crafting_monitor/front",
|
||||
"north": "refinedstorage:blocks/crafting_monitor/front",
|
||||
"east": "refinedstorage:blocks/crafting_monitor/left",
|
||||
"south": "refinedstorage:blocks/crafting_monitor/back",
|
||||
"west": "refinedstorage:blocks/crafting_monitor/right",
|
||||
"up": "refinedstorage:blocks/crafting_monitor/top",
|
||||
"down": "refinedstorage:blocks/bottom",
|
||||
"cutout": "refinedstorage:blocks/crafting_monitor/cutouts/front_disconnected"
|
||||
}
|
||||
},
|
||||
"variants": {
|
||||
"inventory": [
|
||||
{
|
||||
"transform": "forge:default-block",
|
||||
"y": 0
|
||||
}
|
||||
],
|
||||
"connected": {
|
||||
"true": {
|
||||
"textures": {
|
||||
"cutout": "refinedstorage:blocks/crafting_monitor/cutouts/front_connected"
|
||||
}
|
||||
},
|
||||
"false": {
|
||||
}
|
||||
"connected=true,direction=north": {
|
||||
"model": "refinedstorage:block/crafting_monitor_connected",
|
||||
"y": 0
|
||||
},
|
||||
"direction": {
|
||||
"north": {
|
||||
"y": 0
|
||||
},
|
||||
"east": {
|
||||
"y": 90
|
||||
},
|
||||
"south": {
|
||||
"y": 180
|
||||
},
|
||||
"west": {
|
||||
"y": 270
|
||||
}
|
||||
"connected=true,direction=east": {
|
||||
"model": "refinedstorage:block/crafting_monitor_connected",
|
||||
"y": 90
|
||||
},
|
||||
"connected=true,direction=south": {
|
||||
"model": "refinedstorage:block/crafting_monitor_connected",
|
||||
"y": 180
|
||||
},
|
||||
"connected=true,direction=west": {
|
||||
"model": "refinedstorage:block/crafting_monitor_connected",
|
||||
"y": 270
|
||||
},
|
||||
"connected=false,direction=north": {
|
||||
"model": "refinedstorage:block/crafting_monitor_disconnected",
|
||||
"y": 0
|
||||
},
|
||||
"connected=false,direction=east": {
|
||||
"model": "refinedstorage:block/crafting_monitor_disconnected",
|
||||
"y": 90
|
||||
},
|
||||
"connected=false,direction=south": {
|
||||
"model": "refinedstorage:block/crafting_monitor_disconnected",
|
||||
"y": 180
|
||||
},
|
||||
"connected=false,direction=west": {
|
||||
"model": "refinedstorage:block/crafting_monitor_disconnected",
|
||||
"y": 270
|
||||
}
|
||||
}
|
||||
}
|
@@ -32,7 +32,7 @@
|
||||
"gui.refinedstorage.relay": "Relay",
|
||||
"gui.refinedstorage.interface.import": "Interface Import",
|
||||
"gui.refinedstorage.interface.export": "Interface Export",
|
||||
"gui.refinedstorage:crafting_monitor": "Crafting Monitor",
|
||||
"gui.refinedstorage.crafting_monitor": "Crafting Monitor",
|
||||
"gui.refinedstorage:wireless_crafting_monitor": "Wireless Crafting Monitor",
|
||||
"gui.refinedstorage:crafting_monitor.tooltip.requested": "%d requested",
|
||||
"gui.refinedstorage:crafting_monitor.stored": "Stored: %d",
|
||||
@@ -107,7 +107,7 @@
|
||||
"misc.refinedstorage.start": "Start",
|
||||
"misc.refinedstorage.clear": "Clear",
|
||||
"misc.refinedstorage.set": "Set",
|
||||
"misc.refinedstorage:cancel_all": "Cancel All",
|
||||
"misc.refinedstorage.cancel_all": "Cancel All",
|
||||
"misc.refinedstorage.priority": "Priority",
|
||||
"misc.refinedstorage.exact": "Exact",
|
||||
"misc.refinedstorage.processing": "Processing",
|
||||
@@ -202,7 +202,7 @@
|
||||
"block.refinedstorage.creative_storage_block": "Creative Storage Block",
|
||||
"block.refinedstorage.relay": "Relay",
|
||||
"block.refinedstorage.interface": "Interface",
|
||||
"block.refinedstorage:crafting_monitor": "Crafting Monitor",
|
||||
"block.refinedstorage.crafting_monitor": "Crafting Monitor",
|
||||
"block.refinedstorage.wireless_transmitter": "Wireless Transmitter",
|
||||
"block.refinedstorage.wireless_transmitter.tooltip": "Must be placed on %s.",
|
||||
"block.refinedstorage.crafter": "Crafter",
|
||||
|
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"parent": "refinedstorage:block/cube_north_cutout",
|
||||
"textures": {
|
||||
"particle": "refinedstorage:block/crafting_monitor/front",
|
||||
"north": "refinedstorage:block/crafting_monitor/front",
|
||||
"east": "refinedstorage:block/crafting_monitor/left",
|
||||
"south": "refinedstorage:block/crafting_monitor/back",
|
||||
"west": "refinedstorage:block/crafting_monitor/right",
|
||||
"up": "refinedstorage:block/crafting_monitor/top",
|
||||
"down": "refinedstorage:block/bottom"
|
||||
}
|
||||
}
|
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"parent": "refinedstorage:block/crafting_monitor",
|
||||
"textures": {
|
||||
"cutout": "refinedstorage:block/crafting_monitor/cutouts/front_connected"
|
||||
}
|
||||
}
|
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"parent": "refinedstorage:block/crafting_monitor",
|
||||
"textures": {
|
||||
"cutout": "refinedstorage:block/crafting_monitor/cutouts/front_disconnected"
|
||||
}
|
||||
}
|
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"parent": "refinedstorage:block/crafting_monitor_disconnected"
|
||||
}
|
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"type": "minecraft:block",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "refinedstorage:crafting_monitor"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:survives_explosion"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
@@ -7,14 +7,13 @@
|
||||
],
|
||||
"key": {
|
||||
"P": {
|
||||
"item": "#improved_processor"
|
||||
"item": "refinedstorage:improved_processor"
|
||||
},
|
||||
"A": {
|
||||
"item": "refinedstorage:pattern"
|
||||
},
|
||||
"G": {
|
||||
"type": "forge:ore_dict",
|
||||
"ore": "blockGlass"
|
||||
"tag": "forge:glass"
|
||||
},
|
||||
"E": {
|
||||
"item": "refinedstorage:quartz_enriched_iron"
|
Reference in New Issue
Block a user