Git Product home page Git Product logo

superfactorymanager's Introduction

Super Factory Manager 4

Discord

image

Check out the examples folder for sample scripts.

There are also in-game examples.

About

Super Factory Manager is a mod for Minecraft that lets users create programs to run their factories. The mod provides a domain specific language tailored for moving items, fluids, and other resource types. A text editor is included, along with example programs.

To get started, you will need a factory manager, a label gun, and a disk.

Mod Spotlight

mod spotlight

VSCode Extension

Get the VSCode extension for syntax highlighting 🌈

UML Diagram

Release process

The following process is designed to catch the most obvious problems that may arise from creating a new release.

.\act.ps1
Manual: Bump `mod_version` in gradle.properties
Manual: Commit bump
Action: Propagate changes
Action: Run gameTestServer for all versions
Action: Build
Action: Wipe jars summary dir
Action: Collect jars
Action: Update PrismMC test instances to use latest build output
Action: Update test servers to latest build output
Action: Launch PrismMC
Action: Launch test server

for each version:
    Launch version from PrismMC
    Multiplayer -> join localhost
    Break previous setup
    Build new setup from scratch -- ensure core gameplay loop is always tested
    Validate changelog accuracy
    /stop
    Quit game

Action: Tag
Action: Push all

For each version:
    CurseForge -> Upload file
"https://authors.curseforge.com/#/projects/306935/files/create"
    Environment=Server+Client
    Modloader=match mc version {
        ..1.20   -> Forge
        1.20.1   -> Forge+NeoForge
        1.20.2.. -> NeoForge
    }
    Java=Java 17
    Minecraft=$version
    Changelog= <<
        ```
        $section from changelog.sfml
        ```
    >>

For each version:
    Modrinth -> Versions -> Drag n drop
"https://modrinth.com/mod/super-factory-manager/versions"
    Adjust populated version numbers
    Changelog=same as above


GitHub -> Draft a new release
"https://github.com/TeamDman/SuperFactoryManager/releases/new"
Choose a tag=latest
Target=latest
Release title=mod version
Description= <<
    ```
        $section from changelog.sfml
    ```
>>
Attach=latest jar for each mc version

Optimization

There's some neat tricks used to improve the performance of the mod, here's an overview :D

Minimum Tick Rate

The minimum timer interval of 1 second makes crappy programs 20x more performant since they aren't running every tick.

Pattern Caching

map from string to lambda

Be not afraid, regular expressions are only used when necessary.

string equals used when possible


Using the EACH keyword to count by type rather than by matcher also employs a cache.

EVERY 20 TICKS DO
    INPUT 2 EACH *ingot* FROM a
    OUTPUT TO b
END

This program will internally enumerate the registry to create a separate tracker for each resource type.

hashmap inspection of a map to lists with three keys

Object Pooling

EVERY 20 TICKS DO
    INPUT FROM a
    OUTPUT TO b
END

When many inventories are involved, this can quickly result in a lot of objects being created when the program runs.

625 barrels

My testing shows that object pooling provides a slight increase in performance, even if there's only tens of thousands of objects involved.

Testing

I created a custom barrel block used only for testing. Running all the game tests for the mod creates 2,866 barrel blocks. Many of those barrels are so full of items that when I clear or restart the tests it causes 27,310 stacks to be dropped on the ground.

By creating a custom barrel that doesn't drop the inventory contents, the friction of doing more tests is reduced!

tests

User Empowerment

NAME "first"
EVERY 20 TICKS DO
    INPUT FROM a
    OUTPUT TO b
END
NAME "second"
EVERY 20 TICKS DO
    INPUT stone, iron_ingot FROM a
    OUTPUT TO b
END

Which program is more efficient? idk. Use the performance graph and compare.

in-game performance gui in-game performance gui

Cool. Looks like the first one is twice as fast. Maybe you need to filter items though? Maybe the outcome is different if depending on the inventories?

Rather than trying to prescribe a best approach based on how I know the mod works, it's better to directly give the players the tools needed to perform experiments to find out what works best in their scenario.

superfactorymanager's People

Contributors

teamdman avatar

Stargazers

 avatar Pavel Dydyshko avatar Maxim avatar  avatar pedroporo1000 avatar Kyle Johnson avatar peachey2k2  avatar micrwvae avatar Norbert avatar ⭐️NINIKA⭐️ avatar Campbell Cole avatar Zenthae avatar  avatar geduardcatalindev avatar Edwin avatar Adrian Guerrero Vera avatar  avatar  avatar Ash Nelson avatar  avatar Robin Seifert avatar  avatar ACGaming avatar Tony Chen Smith avatar  avatar baka-gourd avatar Willsr71 avatar  avatar Saereth avatar

Watchers

 avatar James Cloos avatar Henry Loenwind avatar  avatar  avatar  avatar  avatar

superfactorymanager's Issues

CPU spike

Using the lastest version, when ever i try to crate anything within the inventory manange, i can here my cpu fan start spinning up, and CPU usage sky rises, and if the game survives it will at the end create the trigger in the inventory mananger. But when trying to crate an input the same thing happens

missing item in input filter

I'm not sure if this is a bug or what but I cannot find solidified experience (from Actually Additions) in the Items whitelist.

MC 1.12.2
Actually Additions R140 (1.12.2)
SFM 2.0.9
Forge 14.23.4.2759

Edit 1: Seems I can't find anything from AA in the whitelist. Only buckets of AA fluids which I would assume are being registered differently?
Edit 2: Just restarted the pack after updating Refined Storage and RS Addons along with disabling Scannable and AA Items are showing up now. I have no idea why but I'm going to assume it was some weird one off bug. I'll necro this if it comes back again.

Unable to find GregTech dust in Item filter

As in the title, attempting to add any of the gregtech dusts using the item filter fails. Most items seem to be there, but not these ones. I don't believe it's related to #23 as I waited a while for caching to finish after joining the map.

As a workaround, what about being able to select an item from your inventory when selecting item filters, similar to how it works in many other mods (applied energetics 2, extra utilities, ender io, etc).

Modpack: Omnifactory 1.0.5 (with SuperFactoryManager 2.0.17 added manually)
OS: Windows 10 x64
JRE: 1.8.0_211

Redstone Receiver Broken

Placing a lever or pressure plate near the Redstone Receiver that is connected to the main controller block (I forgot the name, sorry) will work normally, but sometimes the lever that is in my inv(creative mode) disappears and right clicking the lever or stepping on the pressure plate will take longer time to trigger, as if it's lagging. Sometimes while i do it the game crashes.

The Main Controller Block program :
Trigger > Redstone Controller > Connectors (Redstone Receiver)

Can't load from Memory Disk

FTB Interactions 1.7.0
Mod Version 2.0.13

When shift right-clicking on the manager with the disk it always rewrites to the disk instead of reading from the disk.

Connection time out

This seems to be related to #22, but this time deals with chisel and bits, potentially the amount of information being passed to it. First couple loads of the game, sometimes just the first, the game will time out and put you back to the menu screen. In the log, this usually shows up:

Log stacktrace

[21:34:33] [Netty Local Client IO #0/ERROR] [FML]: SimpleChannelHandlerWrapper exception
java.lang.NullPointerException: null
   at mod.chiselsandbits.items.ItemChiseledBit.getSubItems(ItemChiseledBit.java:403) ~[ItemChiseledBit.class:?]
   at vswe.superfactory.util.SearchUtil.lambda$buildCache$1(SearchUtil.java:36) ~[SearchUtil.class:?]
   at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184) ~[?:1.8.0_191]
   at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175) ~[?:1.8.0_191]
   at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175) ~[?:1.8.0_191]
   at java.util.Iterator.forEachRemaining(Iterator.java:116) ~[?:1.8.0_191]
   at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801) ~[?:1.8.0_191]
   at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481) ~[?:1.8.0_191]
   at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471) ~[?:1.8.0_191]
   at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151) ~[?:1.8.0_191]
   at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174) ~[?:1.8.0_191]
   at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[?:1.8.0_191]
   at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418) ~[?:1.8.0_191]
   at vswe.superfactory.util.SearchUtil.buildCache(SearchUtil.java:36) ~[SearchUtil.class:?]
   at java.lang.Thread.run(Thread.java:748) ~[?:1.8.0_191]
   at vswe.superfactory.network.messages.MessageIndexItems.onMessage(MessageIndexItems.java:25) ~[MessageIndexItems.class:?]
   at vswe.superfactory.network.messages.MessageIndexItems.onMessage(MessageIndexItems.java:14) ~[MessageIndexItems.class:?]
   at net.minecraftforge.fml.common.network.simpleimpl.SimpleChannelHandlerWrapper.channelRead0(SimpleChannelHandlerWrapper.java:56) ~[SimpleChannelHandlerWrapper.class:?]
   at net.minecraftforge.fml.common.network.simpleimpl.SimpleChannelHandlerWrapper.channelRead0(SimpleChannelHandlerWrapper.java:36) ~[SimpleChannelHandlerWrapper.class:?]
   at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105) ~[netty-all-4.1.9.Final.jar:4.1.9.Final]
   at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) [netty-all-4.1.9.Final.jar:4.1.9.Final]
   at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) [netty-all-4.1.9.Final.jar:4.1.9.Final]
   at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340) [netty-all-4.1.9.Final.jar:4.1.9.Final]
   at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:102) [netty-all-4.1.9.Final.jar:4.1.9.Final]
   at io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111) [netty-all-4.1.9.Final.jar:4.1.9.Final]
   at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) [netty-all-4.1.9.Final.jar:4.1.9.Final]
   at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) [netty-all-4.1.9.Final.jar:4.1.9.Final]
   at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340) [netty-all-4.1.9.Final.jar:4.1.9.Final]
   at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1334) [netty-all-4.1.9.Final.jar:4.1.9.Final]
   at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) [netty-all-4.1.9.Final.jar:4.1.9.Final]
   at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) [netty-all-4.1.9.Final.jar:4.1.9.Final]
   at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:926) [netty-all-4.1.9.Final.jar:4.1.9.Final]
   at io.netty.channel.embedded.EmbeddedChannel.writeInbound(EmbeddedChannel.java:274) [netty-all-4.1.9.Final.jar:4.1.9.Final]
   at net.minecraftforge.fml.common.network.internal.FMLProxyPacket.processPacket(FMLProxyPacket.java:99) [FMLProxyPacket.class:?]
   at net.minecraft.network.NetworkManager.channelRead0(NetworkManager.java:147) [gw.class:?]
   at net.minecraft.network.NetworkManager.channelRead0(NetworkManager.java:49) [gw.class:?]
   at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105) [netty-all-4.1.9.Final.jar:4.1.9.Final]
   at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) [netty-all-4.1.9.Final.jar:4.1.9.Final]
   at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) [netty-all-4.1.9.Final.jar:4.1.9.Final]
   at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340) [netty-all-4.1.9.Final.jar:4.1.9.Final]
   at net.minecraftforge.fml.common.network.handshake.NetworkDispatcher.handleClientSideCustomPacket(NetworkDispatcher.java:382) [NetworkDispatcher.class:?]
   at net.minecraftforge.fml.common.network.handshake.NetworkDispatcher.channelRead0(NetworkDispatcher.java:268) [NetworkDispatcher.class:?]
   at net.minecraftforge.fml.common.network.handshake.NetworkDispatcher.channelRead0(NetworkDispatcher.java:72) [NetworkDispatcher.class:?]
   at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105) [netty-all-4.1.9.Final.jar:4.1.9.Final]
   at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) [netty-all-4.1.9.Final.jar:4.1.9.Final]
   at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) [netty-all-4.1.9.Final.jar:4.1.9.Final]
   at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340) [netty-all-4.1.9.Final.jar:4.1.9.Final]
   at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1334) [netty-all-4.1.9.Final.jar:4.1.9.Final]
   at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) [netty-all-4.1.9.Final.jar:4.1.9.Final]
   at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) [netty-all-4.1.9.Final.jar:4.1.9.Final]
   at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:926) [netty-all-4.1.9.Final.jar:4.1.9.Final]
   at io.netty.channel.local.LocalChannel.finishPeerRead0(LocalChannel.java:443) [netty-all-4.1.9.Final.jar:4.1.9.Final]
   at io.netty.channel.local.LocalChannel.access$500(LocalChannel.java:49) [netty-all-4.1.9.Final.jar:4.1.9.Final]
   at io.netty.channel.local.LocalChannel$5.run(LocalChannel.java:397) [netty-all-4.1.9.Final.jar:4.1.9.Final]
   at io.netty.channel.DefaultEventLoop.run(DefaultEventLoop.java:54) [netty-all-4.1.9.Final.jar:4.1.9.Final]
   at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:858) [netty-all-4.1.9.Final.jar:4.1.9.Final]
   at java.lang.Thread.run(Thread.java:748) [?:1.8.0_191]
[21:34:33] [Netty Local Client IO #0/ERROR] [FML]: There was a critical exception handling a packet on channel superfactorymanager
java.lang.NullPointerException: null
   at mod.chiselsandbits.items.ItemChiseledBit.getSubItems(ItemChiseledBit.java:403) ~[ItemChiseledBit.class:?]
   at vswe.superfactory.util.SearchUtil.lambda$buildCache$1(SearchUtil.java:36) ~[SearchUtil.class:?]
   at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184) ~[?:1.8.0_191]
   at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175) ~[?:1.8.0_191]
   at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175) ~[?:1.8.0_191]
   at java.util.Iterator.forEachRemaining(Iterator.java:116) ~[?:1.8.0_191]
   at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801) ~[?:1.8.0_191]
   at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481) ~[?:1.8.0_191]
   at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471) ~[?:1.8.0_191]
   at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151) ~[?:1.8.0_191]
   at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174) ~[?:1.8.0_191]
   at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[?:1.8.0_191]
   at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418) ~[?:1.8.0_191]
   at vswe.superfactory.util.SearchUtil.buildCache(SearchUtil.java:36) ~[SearchUtil.class:?]
   at java.lang.Thread.run(Thread.java:748) ~[?:1.8.0_191]
   at vswe.superfactory.network.messages.MessageIndexItems.onMessage(MessageIndexItems.java:25) ~[MessageIndexItems.class:?]
   at vswe.superfactory.network.messages.MessageIndexItems.onMessage(MessageIndexItems.java:14) ~[MessageIndexItems.class:?]
   at net.minecraftforge.fml.common.network.simpleimpl.SimpleChannelHandlerWrapper.channelRead0(SimpleChannelHandlerWrapper.java:56) ~[SimpleChannelHandlerWrapper.class:?]
   at net.minecraftforge.fml.common.network.simpleimpl.SimpleChannelHandlerWrapper.channelRead0(SimpleChannelHandlerWrapper.java:36) ~[SimpleChannelHandlerWrapper.class:?]
   at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105) ~[netty-all-4.1.9.Final.jar:4.1.9.Final]
   at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) ~[netty-all-4.1.9.Final.jar:4.1.9.Final]
   at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) ~[netty-all-4.1.9.Final.jar:4.1.9.Final]
   at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340) ~[netty-all-4.1.9.Final.jar:4.1.9.Final]
   at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:102) ~[netty-all-4.1.9.Final.jar:4.1.9.Final]
   at io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111) ~[netty-all-4.1.9.Final.jar:4.1.9.Final]
   at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) ~[netty-all-4.1.9.Final.jar:4.1.9.Final]
   at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) ~[netty-all-4.1.9.Final.jar:4.1.9.Final]
   at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340) ~[netty-all-4.1.9.Final.jar:4.1.9.Final]
   at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1334) ~[netty-all-4.1.9.Final.jar:4.1.9.Final]
   at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) ~[netty-all-4.1.9.Final.jar:4.1.9.Final]
   at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) ~[netty-all-4.1.9.Final.jar:4.1.9.Final]
   at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:926) ~[netty-all-4.1.9.Final.jar:4.1.9.Final]
   at io.netty.channel.embedded.EmbeddedChannel.writeInbound(EmbeddedChannel.java:274) ~[netty-all-4.1.9.Final.jar:4.1.9.Final]
   at net.minecraftforge.fml.common.network.internal.FMLProxyPacket.processPacket(FMLProxyPacket.java:99) [FMLProxyPacket.class:?]
   at net.minecraft.network.NetworkManager.channelRead0(NetworkManager.java:147) [gw.class:?]
   at net.minecraft.network.NetworkManager.channelRead0(NetworkManager.java:49) [gw.class:?]
   at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105) [netty-all-4.1.9.Final.jar:4.1.9.Final]
   at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) [netty-all-4.1.9.Final.jar:4.1.9.Final]
   at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) [netty-all-4.1.9.Final.jar:4.1.9.Final]
   at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340) [netty-all-4.1.9.Final.jar:4.1.9.Final]
   at net.minecraftforge.fml.common.network.handshake.NetworkDispatcher.handleClientSideCustomPacket(NetworkDispatcher.java:382) [NetworkDispatcher.class:?]
   at net.minecraftforge.fml.common.network.handshake.NetworkDispatcher.channelRead0(NetworkDispatcher.java:268) [NetworkDispatcher.class:?]
   at net.minecraftforge.fml.common.network.handshake.NetworkDispatcher.channelRead0(NetworkDispatcher.java:72) [NetworkDispatcher.class:?]
   at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105) [netty-all-4.1.9.Final.jar:4.1.9.Final]
   at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) [netty-all-4.1.9.Final.jar:4.1.9.Final]
   at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) [netty-all-4.1.9.Final.jar:4.1.9.Final]
   at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340) [netty-all-4.1.9.Final.jar:4.1.9.Final]
   at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1334) [netty-all-4.1.9.Final.jar:4.1.9.Final]
   at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) [netty-all-4.1.9.Final.jar:4.1.9.Final]
   at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) [netty-all-4.1.9.Final.jar:4.1.9.Final]
   at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:926) [netty-all-4.1.9.Final.jar:4.1.9.Final]
   at io.netty.channel.local.LocalChannel.finishPeerRead0(LocalChannel.java:443) [netty-all-4.1.9.Final.jar:4.1.9.Final]
   at io.netty.channel.local.LocalChannel.access$500(LocalChannel.java:49) [netty-all-4.1.9.Final.jar:4.1.9.Final]
   at io.netty.channel.local.LocalChannel$5.run(LocalChannel.java:397) [netty-all-4.1.9.Final.jar:4.1.9.Final]
   at io.netty.channel.DefaultEventLoop.run(DefaultEventLoop.java:54) [netty-all-4.1.9.Final.jar:4.1.9.Final]
   at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:858) [netty-all-4.1.9.Final.jar:4.1.9.Final]
   at java.lang.Thread.run(Thread.java:748) [?:1.8.0_191]
[21:34:33] [Netty Local Client IO #0/ERROR] [FML]: Network Disconnect: A fatal error has occurred, this connection is terminated 

This is with using:
Forge: 14.23.5.236
SFM: 2.0.12 and 2.0.13
C&B: 14.32

The pack in question is a WIP pack, All the Mods 3 Expert. https://github.com/AllTheMods/ATM3-Expert

Setting item filtering is hard

Hi,
Could you add better search for allow/deny lists? As of now, when I wanted to allow output of smooth stone, I had to scroll through 2400 items, because for some reason even andesite and all of it's chisel/chisel and bits versions were there.
image
Best regards,
Greg

Unable to move nodes into command window on multiplayer

FTB:Interactions 1.9.1 install, so 2.0.18. Trying to build something in SFM and cannot create any nodes other than Group nodes in the command window while on a multiplayer server. Clicking, dragging, right clicking, and profanity all have the same null effect. On occasion, I've been able to get something like a flow node to show up but when I exit the SFM console and look later, it's almost always gone.

Not complete compatible with Ender IO

If you use the Dimensional Transreceiver from Ender IO you only can send or receive items. It will not work with fluids and that's with a lot of other blocks of this and other mods.

Settings not saved

Sorry for bad english.

I set some checkboxes in user preferences.
Reload world. And all checboxes is unchecked.

Server Crash when using block gate in cable cluster

When using this setup with block gates in cable clusters, the server crashes as long as there are items in the input chest. image

When the server crashed there was a stack of wood and stone in the input chest, however on startup the chest was empty. Not really sure what happened with that one.

Crash report

Duplication glitch using redstone trigger

Possibly related to #17 but with some more specific requirements for reproduction.

Reproduction

Create the following layout of blocks using the Machine Inventory Manager, a redstone receiver and two inventories.
Layout

The following instructions in the Machine Inventory Manager:

Trigger

  • Connections: Redstone Controlled
  • Restone Receivers: The redstone receiver (C)

Input

  • Inventories: The inventory diagonal to the redstone receiver (A)
  • Target: Up
  • Items: Blacklist, Empty

Output

  • Inventories: The inventory on the other side of the manager from the redstone receiver (B)
  • Target: Up
  • Items: Blacklist, Empty

Program

Place some items in the input chest (A) and press the button. The output chest (B) will then be filled with the item from the input chest.

Versions

Minecraft 1.12.2
Minecraft Coder Pack 9.42
Forge Mod Loader 8.0.99.99
Minecraft Forge 14.23.5.2795
Super Factory Manager 2.0.12

Bug in "For Each Loop" 2

the bug present only in v2.0.20.
v2.0.19 was forks fine.

Needs: Move resources to several chests. Using "for loop". (I know, SFM can it do without loop, but my real setup have extended logic)

Input(from source chest, empty black list.)
foreach(List var: Several destination chests; Element var: current)
output(to current, empty black list.)

Run. And SFM fill only 1 chest. Never outputed into other chests.
But, if change code to:
foreach
input
output
then works fine.

Suggestion: allow fluid operations to specify a specific tank

Many machines have multiple tanks, which are identified by numbers the same way that item inventories are identified by slots. It would be useful if the advanced mode for fluid operations would allow the specification of a specific tank or tanks in the same way that item operations can specify a slot or slots to be used.

Duplication bug

demonstration

The setup: block setup
manager

Both input and output are the exact same setup, inventory as the storage crate, active side is the top, and empty blacklist.

Clear Camouflage not working

Custom Modpack, ValkillaChaos, when setting clear camo on transforming cable camouflage or other camouflage blocks, clear camouflage does not work. Works for regular block camouflage.

Buildcraft Facade crash?

It takes me to the "Connection Lost" Screen after trying to load a world. Im no expert so just ask me if you need anything else :)

its a single player world

version 2.0.14

On a retry to load the world I was able to.
https://pastebin.com/CARnEHBj

Side specific input/output not working in most cases

Top on receiving inventory is set to input. Works fine using Ender IO item conduits, does not work using same inventory as input using SFM to output to top of same machine.

Tested and working to output to other inventories, but machines tested in question (Thermal Expansion Pulverizer, Redstone Furnace and Industrial Foregoing Black Hole Unit) will not receive nor send items.

(Interesting behavior on Black Hole Unit is that it will only receive items when its inventory is empty, but always receives from conduits.)

Cloning things

I found that you can clone things using the IndustrialCraft 2 oven.
Maybe it also works with other machines in a similar way.
Is it possible to expect a fix in modest time?
https://youtu.be/kT3vsPRbdzk

Output bug with certain inventories

Mod v2.0.12 - FTB Interactions modpack

Attempting to output to a Cache (thermal expansion) or Barrel (Ender Utilties) works up 64 items and then stops attempting to move items, even though the mentioned storage blocks can contain 20,000 and 4096 items respectively.

Re-usable items consumed in crafting (Excess inventory not working)

As the title says, i am currently attempting to auto craft "Mochi" from pam's. after the mochi is crafted both the bucket and the mortar and pestle dissapear, they do not appear in the specified excess inventory (A vanilla chest). Trying to output them does not work either.

Bug in "For Each Loop".

Sorry for bad english.

Let create logic using loop:
Input 1 stone from chest A1. Output to chest B.
Input 1 stone from chest A2. Output to chest B.

I declarate 2 vars:
Var "white". (Chest A1 + Chest A2)
Var "Black".

Triggered by press button.
---->
ForEach(List: White, Element: Black.)
---->
Input from var: "black". Select white list. Count stones: 1.
---->
Output to chest B.

Try run.. and chest A1 no lost items! Chest A2 lost 2 items. (instead 1)
If both chest contains 1 item then works fine.

Fluid insertion crash

Time: 3/29/19 10:08 PM
Description: Ticking block entity

java.lang.NullPointerException: Ticking block entity
        at vswe.superfactory.components.CommandExecutor.insertFluids(CommandExecutor.java:688)
        at vswe.superfactory.components.CommandExecutor.executeCommand(CommandExecutor.java:228)
        at vswe.superfactory.components.CommandExecutor.executeChildCommands(CommandExecutor.java:178)
        at vswe.superfactory.components.CommandExecutor.executeCommand(CommandExecutor.java:334)
        at vswe.superfactory.components.CommandExecutor.executeChildCommands(CommandExecutor.java:178)
        at vswe.superfactory.components.CommandExecutor.executeTriggerCommand(CommandExecutor.java:170)
        at vswe.superfactory.tiles.TileEntityManager.activateTrigger(TileEntityManager.java:290)
        at vswe.superfactory.tiles.TileEntityManager.func_73660_a(TileEntityManager.java:259)
        at net.minecraft.world.World.func_72939_s(World.java:1835)
        at net.minecraft.world.WorldServer.func_72939_s(WorldServer.java:613)
        at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:767)
        at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:397)
        at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:668)
        at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:526)
        at java.lang.Thread.run(Thread.java:745)

https://github.com/TeamDman/SuperFactoryManager/blob/2.0.X/src/main/java/vswe/superfactory/components/CommandExecutor.java#L688

Block Gate facing wrong direction after placing

When placing a Block Gate in the world, it's front side is always facing DOWN without any ability to change this.

image

I've last played with SFM in 1.7.10, but I think the block's front should, after placement face the player?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.