[MECH] RedstoneChips 0.97 - Integrated circuits plugin [1.5.1-R0.2]

Discussion in 'Archived: Plugin Releases' started by eisental, Jan 19, 2011.

  1. Offline

    eisental

    RedstoneChips 0.97 / BasicCircuits 0.97 / SensorLibrary 0.34
    (Last update on April 30th, 2013, cb 1.5.1-R0.2)


    [​IMG]

    Features:
    • Build chips with any number of input and output pins, from compact 2 block chips up to whatever you can imagine.
    • Choose from over 50 different chip types and several 3rd party chip libraries.
    • Most chip types can work with a wide or infinte range of i/o configurations. Sign arguments allow you to customize chip behavior.
    • Chips can communicate through redstone, or directly by touching each other. Some chip types can also communicate over wireless channels.
    • Chips can be built in almost any imaginable structure allowing very compact circuits.
    • Debug and maintain large projects using various tools and commands.
    [​IMG]

    [cake] Help me spend more time working on RedstoneChips. Please donate

    Circuit libraries made by other people:
    Changelog (open)

    RedstoneChips 0.97 (Apr 30th, 2013)
    • Fixed the saving bug on cb 1.5.1.
    • Added an option to disable update checking.
    BasicCircuits 0.96 (Apr 30th, 2013)
    • pixel: Added a maximum distance value preference to prevent lags and server crashes. The max can be changed using/rcprefs pixel.maxDistance x and defaults to 7.
    • sram: Fixed a problem with anonymous memory.
    SensorLibrary 0.34 (Dec 1st, 2012)
    • daytime: Fixed daytime offset bug.



    Full changelogs and source code @ github.com:
    RedstoneChips [gunpowder] BasicCircuits [gunpowder] SensorLibrary
     
    DoomLord, Shamebot, Vecht and 6 others like this.
  2. Offline

    eisental

    Well it's technically an LWC error. The stacktrace (what you posted) just shows that what made it crash was a redstone change event caused by an Rc chip output lever going on or off. I could check the LWC source if it's available but you should report this on the LWC thread. It's possible that it's not ready yet by the time Rc updates it's outputs.

    EDIT: More specifically this happens when a clock chip stops ticking on server shutdown setting it's output off. Maybe LWC was already disabled by the time the clock stopped. I changed it not to do anything on shutdown. That should fix it and shouldn't matter anyhow.

    @Kit Ramos This is the same issue as Mordenkainen's brokencounter schematics a few post (pages?) back. I finally found a way to solve it. I tested the circuit you described and it seemed to work. I could send you a link to a testbuild once I make a new one and you can see if it works for you. In any case what Morden suggested doesn't use any comparators and is much simpler so you should probably use that instead.

    @Mordenkainen I also tested brokencounter2 once again and this time it worked without a dregister between counter and comparator! Basically what it's doing is check exactly which outputs need to change before changing any of them. This means that it won't continue setting outputs after the desired result is reached. I must say it was very satisfying... The final dregister is still acting out though :eek:

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: May 6, 2016
  3. Offline

    Kit Ramos

    Hello, thanks you two I do got the shift counter outputting properly when it gets a clock pulse now. problem now i've noticed is the pulses aren't comming in as I expected. I've hooked it to the clock pin on the reciver chip and I can see it's getting pulses, but my problem is I don't want the register to get a pulse every time a pice of data is transmitted only when a unique pice is trasmited. like if it was to transmit "1 1 1 2 2 1 " I currently get 6 pulses and thinking about it more I can see the reasoning behind setting up the pin to act like that but for my project I only want it 3 pulses to happen on that data set. any ideas how I can set that one up?

    so you know the reciver has 3 pins on it. pin one I was using as the clock pin. and two and three are for a differnt project that I did figure out.
     
  4. Offline

    Mordenkainen

    @KitRamos
    Do you want a pulse every other transmission, or based on some other event?

    If you can explain the circumstances you want to get a pulse under, we may be able to figure something out.

    @eisental
    That is great news! I'll have to give it a try. Hey, how do you tag someone with a space in their name?
     
  5. Offline

    Master_Digi

    i become a error by load my RC. and on a server restart delete the redstonechips.circuits file
     
  6. Offline

    eisental

    Some details would help...

    @Mordenkainen
    Code:
    [user]Kit Ramos[/user]
     
  7. Offline

    Master_Digi

    Code:
    2011-05-17 17:58:08 [INFO] RedstoneChips: Reading circuits file...
    2011-05-17 17:58:08 [SEVERE] null
    org.bukkit.command.CommandException: Unhandled exception executing command 'rcload' in plugin RedstoneChips v0.9
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:37)
        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:85)
        at org.bukkit.craftbukkit.CraftServer.dispatchCommand(CraftServer.java:255)
        at net.minecraft.server.NetServerHandler.handleCommand(NetServerHandler.java:675)
        at net.minecraft.server.NetServerHandler.chat(NetServerHandler.java:638)
        at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:632)
        at net.minecraft.server.Packet3Chat.a(Packet3Chat.java:32)
        at net.minecraft.server.NetworkManager.a(NetworkManager.java:195)
        at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:74)
        at net.minecraft.server.NetworkListenThread.a(SourceFile:100)
        at net.minecraft.server.MinecraftServer.h(MinecraftServer.java:370)
        at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:285)
        at net.minecraft.server.ThreadServerApplication.run(SourceFile:394)
    Caused by: unacceptable character #FFFD special characters are not allowed
    in "<reader>", position 30658
        at org.yaml.snakeyaml.reader.StreamReader.checkPrintable(StreamReader.java:68)
        at org.yaml.snakeyaml.reader.StreamReader.update(StreamReader.java:159)
        at org.yaml.snakeyaml.reader.StreamReader.peek(StreamReader.java:117)
        at org.yaml.snakeyaml.scanner.ScannerImpl.scanPlain(ScannerImpl.java:1579)
        at org.yaml.snakeyaml.scanner.ScannerImpl.fetchPlain(ScannerImpl.java:860)
        at org.yaml.snakeyaml.scanner.ScannerImpl.fetchMoreTokens(ScannerImpl.java:348)
        at org.yaml.snakeyaml.scanner.ScannerImpl.checkToken(ScannerImpl.java:183)
        at org.yaml.snakeyaml.parser.ParserImpl$ParseFlowSequenceEntry.produce(ParserImpl.java:646)
        at org.yaml.snakeyaml.parser.ParserImpl.peekEvent(ParserImpl.java:163)
        at org.yaml.snakeyaml.parser.ParserImpl.checkEvent(ParserImpl.java:148)
        at org.yaml.snakeyaml.composer.Composer.composeSequenceNode(Composer.java:203)
        at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:158)
        at org.yaml.snakeyaml.composer.Composer.composeDocument(Composer.java:122)
        at org.yaml.snakeyaml.composer.Composer.getSingleNode(Composer.java:105)
        at org.yaml.snakeyaml.constructor.BaseConstructor.getSingleData(BaseConstructor.java:124)
        at org.yaml.snakeyaml.Yaml.load(Yaml.java:264)
        at org.yaml.snakeyaml.Yaml.load(Yaml.java:250)
        at org.tal.redstonechips.CircuitPersistence.loadCircuits(CircuitPersistence.java:65)
        at org.tal.redstonechips.commands.RCload.onCommand(RCload.java:17)
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:35)
        ... 12 more
    this is the error when i make /rcload
     
  8. Offline

    eisental

    @Master_Digi So this means you have a "special character" in your redstonechips.circuit file that yaml can't understand. You can probably just delete it with a text editor. It's in position 30658. Not sure how you can find it though.. Did you manually change the file contents? If you attach your redstonechips.circuit I can try to see what's wrong.
     
  9. Offline

    Master_Digi

  10. Offline

    eisental

    Thanks. It seems that you have a few wireless channel names with umlauts (wasserbrücke, geheimtür and Brückefarm) and apparently these cause the error. Sorry about that, I never use these myself :) I'll look for a fix but in the mean time you should just replace the ü's in the file to u or something like that.
     
  11. Offline

    ArashiDragon

    eisental, just FYI, if this is your wiki: http://editthis.info/redstonechips/Main_Page

    Code:
    A database query syntax error has occurred. This may indicate a bug in the software. The last attempted database query was:
    
        (SQL query hidden)
    
    from within function "". MySQL returned error "13: database or disk is full". 
     
  12. Offline

    Shamebot

    Not sure, there are umlauts above it and it says the character is this one http://www.fileformat.info/info/unicode/char/fffd/index.htm
    Might be in the line 364 " [1530, 69, -25]], state: {}, interfaces: [], class: transmitter, outputs: []," , but it would be the o from outputs, and I'm not sure if yaml starts counting with 0.
     
  13. Offline

    Master_Digi

    i would change the umlauts
     
  14. Offline

    eisental

    I don't see any umlauts before wasserbrücke on line 360. In any case I just got the same error using ƒ as a channel name but after changing the encoding used when saving the file to UTF-8 it works correctly. I think fffd is just a placeholder (The empty square) replacing unrecognized characters. So this should work fine on next RC version.
    Shamebot, don't you get this error if you use umlauts as sign args?
     
  15. Offline

    Shamebot

    Yeah the umlauts (btw that word sounds kinda funny in english) cause it, I tried it.
    I counted to the o by deleting characters in notepad++ until it said there were 30658 left, seems not to be a appropriate method.
     
  16. Offline

    ArashiDragon

    Do you have any plans to do one or more of the following?

    A) a clock circuit with built in transmitter
    -- Example: The display clock plugin: the clock circuit drives 4 parts, and it's easier to use wireless to move the signal for sync and timing to the various parts. I've seen lots of reasons that the clock circuit being a transceiver would be very useful. (if only to cut down on space)

    B) Using a specific block type, slab a transmitter/receiver onto a circuit.
    -- This would allow you to fit things into a tighter space when trying to be compact.

    C) Have an argument that allows any circuit to be a transmitter and/or receiver
    -- Saves space, also cuts down on total circuits activated. Even if it's something like "clock(T)" use "(R) for receiver.

    D) Alternate idea (where my problem mostly lies): Allow for transmitters & receivers to omit the sandstone block, and put the sign directly on the gold or iron blocks. (would make it easier to put in hidden switches and the like.)

    I am only asking because when designing cool buildings, or what not, trying to install circuits to give special effects, sometime I have to make a wall or floor 5 blocks thick just to fit it. Mostly do to the need for redstone to go INTO a block to work.
     
  17. Offline

    eisental

    Thanks. Seems like a clever way to find the position :D I couldn't find any other way to do that so I guessed it was somewhere in the middle (lines are pretty much fixed width).

    Maybe. I'll think about it. Ok, will do that.

    Could you explain? I'm not sure I get it.

    You would need to specify the channel name as well so I'm not sure this is possible.

    Also probably not going to happen since I would have to change a LOT of code for that. Maybe in the future...

    I hope you know that you don't necessarily need to use sandstone. The chip can be built from almost any block type. I'm curious to know. What kind of "special effects" do you mean exactly?

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: May 6, 2016
  18. Offline

    ArashiDragon

    Cool, can't wait.

    Example: S = Sandstone, G= Gold Block, I = Iron Block.
    G-S-I (with appropriate levers, etc would be setup as a clock.
    But lets say you want to add a transmitter to it so you do this:
    G-S-I
    ....I

    **ignore the .... need to space**
    add a sign directly on one of the iron blocks with
    1st line: transmitter
    2nd line: <channel> *but do not activate*

    then on the sandstone block you add a sign:
    1st line: clock
    2nd line: <timing>

    Then activate the clock, it'll check, see there's a sign on one of the iron blocks, reads it and activates a transmitter with itself.

    **I'm only using the clock circuit as an example because it's simple**

    Hmm. I keep forgetting limited space on the signs *sighs and gets some TNT for that drawing board.*

    That's what suggestions are for, food for thought.

    But after typing it all, the alternate idea below, might be a way to do this, if you decide to do this in the future.

    Yes, I am just using sandstone when I talk about these, to be consistent.


    An idea for compacting a circuit to include transmitters/recievers.
    Designate another block as transmitter/receiver (diamond block for example)
    The sign on the block determines if it's a transmitter or receiver, would work just like respective existing circuits, but sign could include another argument for naming it. Then you can put the diamond block directly on an input/output block, to give that input/output a wireless connection.

    Example:
    1st line: transmitter
    2nd line: channelA
    3rd line: P1 (for pin 1)
    (if the 3rd line can be assigned by which input/output pin it's attached to, then it's not needed on the sign)
    ***This sign wouldn't be activated, it'd just be there to be read by the parent circuit.***

    Put one of those on each of the 7 outputs of a segdriver and you have a wireless segdriver.
    EDIT: of course put one transmitter attached to the segdriver and code it to send each output on a subchannel p1 (pA) - p7 (pG), and you'd only need one diamond block on the segdriver with attached sign.

    Then on the pixel circuits, each segment display can use one channel, they just have to include a pin # in the channel name: ChannelA : p1 (or pA) <-- for those that like using a-g instead of 1-7
    or something similar.

    P.S. I just built a clock, so it's the freshest thing in my mind, and best examples I could think of.

    EDIT: Ooops forgot to add this:..
    The server I'm on has craftbukkit, so some cool things like lighting netherrock on fire with redstone power. use it as traps, or barriers for people to try to get around. Puzzles basically. building a puzzle/maze that every wall has to be 3 - 5 blocks thick makes it extremely challenging. I end up using a LOT of wireless circuits, as I can get those to only use up 6 spaces (with smallest space being a 2 x 3 x 1, and if I don't need to put a redstone wire, 2x2x1 (switch/button exposed to users)
     
  19. Offline

    eisental

    @ArashiDragon Don't get me wrong. I'm very happy to hear suggestions and even if it takes a while most do get in eventually or lead to new ideas.
    With the diamond block as transmitter/receiver you just save 1 block per input but you will need more signs so I don't see the big advantage. Pixel chips can already share a channel by using the <channel-name>:<start-bit> syntax. If you have a 7 bit transmitter connected to the segdriver's outputs on channel x for example, you can use x:0,x:1...x:6 as channel names on your pixels (or any other receiving chip).
    The idea of adding signs directly to inputs or outputs of existing chips makes more sense, I guess, and will be easier to implement.


    I'd be happy to hear more opinions about this.
     
  20. Offline

    Shamebot

    You don't need a diamon block, you could just use the sign.
    Another idea I had was to map the in and output blocks with signs; for example attach a sign to the last input and write something like "map 0" and it would be treated as input 0. Shouldn't be too hard to implement, but I don't know if it would be useful for somebody, I don't think you would need it very often and it might make circuits harder to understand since you'd need to remember the order of all inputs.
     
  21. Offline

    ArashiDragon

    Heh.. you see. I was over-complicating it.. but you read it and simplified it. So I'll count this as a good suggestion ^_^.

    And until about 5 minutes before I read this reply by you.. I'd never even thought of a transmitter with multiple inputs. I have only seen them built individually with each segdriver output.

    I'm gonna go tear apart all the transmitters on my segdrivers and try this.. should be fun.
     
  22. Offline

    eisental

    Have fun :) but keep in mind that you need an additional clock input for multi-pin transmitters. On the next BC version the transmitter will transmit any input change if the clock pin is left continuously on, but in 0.9 you still have to toggle the clock pin each time to transmit.
     
  23. Offline

    Master_Digi

    So i have change the umlaut and its work thank you.
     
  24. Offline

    Mordenkainen

    @eisental

    I think I may have found an issue with the NAND gate.

    I built a circuit that contains some 3 input NAND gates. They seem to behave incorrectly. They are ON when all inputs are on. Shouldn't all inputs ON be output OFF and all other combinations output ON?

    Morden.
     
  25. Offline

    eisental

    @Master_Digi Cool. You can continue using them once I release the next version.

    @Mordenkainen Thanks. I've uploaded a fix. That bug was old :D
     
  26. Offline

    Grissess

    Phew! Lurking around here...
    any updates on something that would make receiving datagrams en mass/routing them to channels/designing TVs overall easier?
     
  27. Offline

    eisental

    I will post a link to the final 0.91 testbuild when it's ready. Hopefully today or tomorrow.

    In the mean time, here's a screenshot of the new display chip :p
    [​IMG]
    (the big one was built by @treve and this was shot at @nala3 's server)
     
  28. Offline

    ArashiDragon

    ok... again I'm after space savings (I like compact), so if this won't work or is to hard.. just say so...

    Is it possible to (if you implement the signs on output blocks) create (for example) a clock circuit, with multiple outputs, and each output has a different timing that is a multiple/factor of the parent circuit.


    Example:
    clock circuit with 3 outputs
    parent: clock, 800
    output 1: (no change, no sign)
    output 2: 2x (2x parent = 1600)
    output 3: 1/2 (1/2 parent = 400)

    I'm not sure what symbols, etc signs can take, so this is just an example to keep it simple.

    Reasoning, one clock circuit for Sync reasons, multiple outputs (different timings) for when you need faster or slower pulses for different parts of a circuit (and you don't need to build a dedicated circuit elsewhere to alter the timing).
    This could work with the wireless clock possibly, similar to this:

    Then receivers just have to have a "bit" setting. (if they don't already)

    P.S. I'm currently rebuilding my clock circuit, trying to make it as compact as possible, and playing with alternate setups to see what breaks it and what works.
     
  29. Offline

    Mordenkainen

    @eisental

    Thanks for the quick fix. I recompiled from GIT and NAND gates are working properly now!

    Morden.
     
  30. Offline

    eisental

    You should use flipflops or a counter to slow the clock down. With 1 flipflop connected to a clock output you get half speed at the flipflop output. If you connect the clock to the 1st input of a counter the outputs of the counter will give you 1/2, 1/4, 1/8, 1/16 an so on clock frequencies.
    The clock can already have more than 1 output (or maybe it was only added recently, i'm not sure) and indeed any chip that uses a broadcast channel can have the same <channel>:<bit> syntax for channel name.
     
  31. Offline

    treve

    euhm, more sign is going back! the biggest work for rc circuits is in the signs, so any change so have to try to use less signs, not more to have less blocks, blocks can be copied, signs have to be done manually (or with script, but still takes alot time and thinking) se less signs to make things better in general
     

Share This Page