[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

    Mordenkainen

    Sorry, by "Without any additional plugins" I meant with just RedstoneChips.
     
  3. Offline

    Malkierian

    Well, it's not possible with just RedstoneChips, because daytime is in SensorLibrary, and it's extremely time consuming without segdriver, which is in BasicCircuits.

    This is all technically speaking, of course :p. Those three were made by eisental, ClockDisplay is a third-party. :D
     
  4. Offline

    Mordenkainen

    Picky Picky... LOL!

    I usually consider them one plugin (though there are 3) because I always install all 3.
     
  5. Offline

    Malkierian

    Haha, I was just joking! LOL.

    Yeah, I agree, they may be separate files, but they're all part of it.

    I don't know, eventually I may go back and go through what it takes to make one of those without ClockDisplay (like I said, it would be a lot easier than what I was trying to do), but it would probably take up three times the room my setup does now, at least, and as it is it takes up about a 29x3x27 cuboid in my basement area. (Gosh, how nice it is that Spells has that tunnel spell, that made that part SOOOO much easier!).
     
  6. Offline

    Mordenkainen

    Well, I'm writing up a tutorial for building one now, so you will be able to see what it takes. Frankly, given the size you are talking, I think it's about the same, though mine is ~4 tall. That said, I tend to build in a VERY compact manner. Makes things take less space, but makes them harder to maintain if changes need to be made.
     
  7. Offline

    Malkierian

    Well, yes, if you're talking 4 high, I can actually see fitting my stuff into maybe a 16x4x24 space. I just like to be able to see clearly where everything is going :D
     
  8. Offline

    treve

    @eissental: i have 900 channels, named 1 to 900. all not listening because its a number. adding 0- infront won't change the fact i need to destroy all, and rebuild with 0, so i can make it a b c as well then :p any reason clean numbers not working as broadcast channel? if i remember good, i am not the only one with this problem. what happend? i builded 5000 pixel screen, and started naming them without testing first. data not sending/receiving, when i add an "a" before the number, the pixel is working fine and getting data from sram.

    Can you make a chip, where you can choose the output? its the same like the sram's input.
    if i can say to a chip, send data input to output x, where x is the broadcast channel from an transmitter/etc and can be choosen by setting and input adres. so this time you do not save the data in the ram, but the output channel.

    the chip would be used to say what sram to send the data to. because now, when some 1 wants to program some picture on my screen, he will need to walk to much to set all pixels. all i would need is 4 levers to send data, X-lever for data-adres, a disable and some feature levers, and a new output selector that doesnt exist atm, but i look forward to it. the big question is, how can the chip know what channels he can use, and how to select it? building all the outputs as blocks is no option, because the chip will be way to big then(again)

    and i could also confirm that an editsign option would be nice, or a fix to work with editsign.
     
  9. Offline

    Mordenkainen

    Does the Demultiplexer do what you need? 1 input, as many outputs as you want, and an output selector so you can tell it which output to send the input to. Sounds like exactly what you are describing. It doesn't do direct to a broadcast channel, but it shouldn't be a problem to hook transmitters up to it... Lots of pins though! You might look at a hackish way to do it: SpeedCurcuits has a commandex, allowing you to run commands, it also has a chip that enables/disables other chips. Add to that a command based sign edit, and you may be able to deactivate the transmitter, change it's text via a command using commandex, and reactivate it to send your data to the appropriate channel.

    I made the change to my own local copy of RedstoneChips for this. Just look at the Library Template for details on how to get your system set up to compile a library, and you will have everything you need to change RedstoneChips yourself. You will also need GIT and the JDK for this, though that is not detailed in the Template.

    That said, I see that in the GIT repo a change has been made to change the sign text once activated, this will cause even more issues for copying an activated circuit. Not sure how I'm gonna deal with that one....

    Morden.
     
  10. Offline

    Shamebot

    Why not use a normal signedit plugin? Together with some autohotkey scripting works like a charm for me.
    I just hit a shortcut and it writes on the sign, you can even script it to count on its own, very handy to label a huge array of pixels and stuff.
     
  11. Offline

    treve

    the Demultiplexer does almost what i need, thing is, its limited to 512 outputs (it can have more, but getting way to big error when i activate 128 more outputs. i need 5000 at least (hehe) and offcourse this means 5000 extra transmitters. i need to buid 5000 already for sending image from sram, the output selector is only for data input part :( thats 10k transmitters (the sign is the problem lol and auto-activation). will be to heavy for my server also.
    i also tried a ringcounter and next button :p but not handy when you want to change let say pixel 550 when youre programing 551, and also limited outputs :( but it would work also (with multiple rows and next buttons).

    what i want to create is a controlroom /-place to set data into the display memory (other players able to write tekst)
    when i add a controll panel with 5000 levers, it would work great! but it will not be a handy control room.
    so i need as less as possible switches, and a simple way to store data. 4 levers for data, 11 sram adres levers, some on-off switches, and i hope an output-adres panel soon :p (i send color to all pixels, but i select using the read/write switch from the corresponding sram.
    the output selector (if) could also use a clock or ignore input (for when youre changing adres).

    with the sram and outputselector, you would almost have the function of a plc/pld.

    it would be perfect when sram combined with outputselecter.
    in readmode.
    on adres(frame) send data(colour) from adres (old sram adres + fast clock) to output X,Y,Z
    when all data is loaded, the frame adres can change to new sheet. would be very powerfull for all needs. (overkill)

    but wireless sram and outputselecter (send input to selected channel according to adres) is something i could really use :p
     
  12. Offline

    Mordenkainen

    @eisental

    I think there is a little bug with the divider chip when using mod mode.

    Here is the test that recreates the problem:
    Set up a divider as follows:
    5 Inputs
    10 Outputs
    Sign:
    divider
    5
    24
    mod

    Put an input of 23 into the divider, expected output is 0 for division result, and 23 for mod result. Actual output is 0 for division result and 7 for mod result, the most significant bit is lost.

    Changing the line:
    this.sendInt(wordlength, wordlength -1, modulous);
    To:
    this.sendInt(wordlength, wordlength, modulous);

    Solves the issue, but the first time the .jar with this change was loaded, it cause my server to crash and delete the redstonechips.circuits file. Restarting the server solved the problem, but had to repair/reactivate my circuits. This was probably because I had dividers with wordlength*2-1 outputs causing an OutOfBounds error.

    Also, sometimes when I try to activate a divider chip (I have only seen this with a divider) the in-game text says: "Activating adder with 2 input set(s) of 5 bits each." and the divider is not activated. The Divider only has 5 inputs.

    On the server console I get:
    Code:
    [SEVERE] Could not pass event PLAYER_INTERACT to RedstoneChips
    java.lang.ArithmeticException: / by zero
        at org.tal.basiccircuits.divider.bitSetChanged(divider.java:36)
        at org.tal.redstonechips.circuit.BitSetCircuit.inputChange(BitSetCircuit.java:29)
        at org.tal.redstonechips.circuit.Circuit.initCircuit(Circuit.java:107)
        at org.tal.redstonechips.CircuitManager.checkForCircuit(CircuitManager.java:133)
        at org.tal.redstonechips.RedstoneChips$4.onPlayerInteract(RedstoneChips.java:164)
        at org.bukkit.plugin.java.JavaPluginLoader$9.execute(JavaPluginLoader.java:217)
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:59)
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:255)
        at org.bukkit.craftbukkit.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:162)
        at net.minecraft.server.ItemInWorldManager.a(ItemInWorldManager.java:207)
        at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:447)
        at net.minecraft.server.Packet15Place.a(SourceFile:57)
        at net.minecraft.server.NetworkManager.a(NetworkManager.java:198)
        at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:72)
        at net.minecraft.server.NetworkListenThread.a(SourceFile:100)
        at net.minecraft.server.MinecraftServer.h(MinecraftServer.java:368)
        at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:283)
        at net.minecraft.server.ThreadServerApplication.run(SourceFile:375)
    I have not found a way to fix it when I get this error other than to rebuild the chip somewhere else.
    This happens with both my modified RC and 0.87.

    Morden.
     
  13. Am I the only one who believes that building anything with thousands of Redstone anything in Minecraft is overtaxing the system?
     
  14. Offline

    Jack-Steven

    I think you need to make one download so you can get ALL of your plugins :D
     
  15. It makes more sense to be separate so people can only download the parts they want.
     
  16. Offline

    Jack-Steven

    No for when people want ALL of his plugin and admire his work
     
  17. Is 3 files difficult to download? :p
     
  18. Offline

    eisental

    Mordenkainen: I decided to use left-click events to activate circuits. It works much better this way and it solves the problem with SimpleSignEdit. Let me know if it creates any new problem but in any case it's possible to change it back to right-click with the preferences. Also thanks for finding those bugs in the divider. I'm sorry about your circuits file :p I fixed it so now the same error would cause rc to make a backup. I think the divider is mostly fixed now. How did you manage to get the activation message with 2 input sets though? It just happens at specific coordinates?
    Oh, and about the clock, it was fixed a long time ago and will not crash your server. It's better to use multiples of 50ms for the tick duration if you want the timing to be very stable. If you need any new circuits for your scrolling text screen let me know.


    treve: In general I don't think that using so many pins is a sane way to write to the screen. I'll write another circuit to handle arrays of pixels in one chip. That way you can use an address to specify the pixel you want to update and use much less i/o.

    About the problem with numbers as channel names, you just get this problem with the pixel circuit. It's not a bug. The circuit just thinks that the number is a color index and adds it to the color list. It's also currently impossible to use color names as channel names (unless you use a : for the startbit) for the same reason.


    Jack-Steven: That's probably not going to happen :). I could on the other hand just merge SensorLibrary into BasicCircuits. That will save you 1 click. Or you can download CraftBukkitUpToDate then you won't need to download them at all.

    Sorry everybody for not replying for a while, was just too busy...

    EDIT: Just to clarify, I haven't released any of these updates yet. Not even to github.

    Eventually the only thing that's changed is the 1st line color and it's possible to activate or reactivate a circuit even if it's sign looks already active, so it shouldn't be an issue.

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

    Malkierian

    When is this coming out? I find this to be very useful as well, considering that right clicking on a wall sign with a sign in hand makes another wall sign...
    That would be fantastic!
     
  20. Offline

    eisental

    @Malkierian It will probably take a few more days to finish some other stuff before I can release a new version.
     
  21. Offline

    Malkierian

    @eisental OK, no problem. I'll be looking forward to it, though :D
     
  22. Offline

    t2wave

    Alright, I'm trying to figure out the pirsensor right now. But I can't wrap my head around what all I need for it to work.
     
  23. http://forums.bukkit.org/threads/8248/#post-131819
    Check out the diagram I made in my thread. It's an extension of pirsensor but has the exact same block setup.
     
  24. Offline

    Malkierian

    @eisental BTW, would you like me to do some videos for the basic circuits, etc, to have available on the Wiki? I did start working on that a few days ago, I just wasn't sure where to go with it exactly.
     
  25. Offline

    t2wave

    Oh, excellent. That makes it all make sense now. Now I just need to figure out how I'll work that into my structure.
     
  26. Offline

    Mordenkainen

    Excellent, that should solve the issue quite nicely, and fix accidently placing the item in your hand when activating a circuit (I do this all the time with levers!).
    Thanks, and no problem about the file. This was on my dev server, which i expect to blow up every week or so! lol.
    I honestly have no idea how it happens. I have seen it 3 or 4 times now. If I go build the chip somewhere else it seems to solve the problem, sometimes a server restart solves it, and sometimes just waiting a few hours solves it. It's really weird!
    Thanks!
    That would help me out a lot too! Another suggestion along the same vein would be a transmitter chip that transmits to an addressable set of receivers. So for example you put "BC" on the sign for this chip, and it adds the address to the end and sends to that channel, I.E with 4 address lines "BC00", "BC01" .... "BC15".
    Excellent, I was afraid the color or extra text might screw up re-activation.

    And finally, though this may be a weird request... What about an SRAM chip that can overflow to the next address on writes? So for example, it only has 8 outputs, but 16 inputs, so if you set the address to 4 and write 2 bytes into it, setting both address 4 and 5, but when you select address 4 for reading, you only get 1 byte output. You would always have to write 2 bytes at a time, but if you need this functionality it shouldn't be a problem to do that.

    Here is an example of how I might use this:
    The glyph cache I'm starting to build stores the font in SRAM as a series of 8x8 bitmap characters, each address has 64 bits, ordered by row, so one address contains 8 bits (ROW1) 8 bits (ROW2) ... 8 bits (ROW8). I want to select the character, and output it to another SRAM, but this SRAM stores the characters using 8 bit addresses, one address for each row.. It would be nice to be able output all 64 bits to the second SRAM and set 8 addresses at once, rather than using some kind of shift register to do it.

    Another useful chip might be a hybrid shift register, kind of a PISIPOSO register. Like a standard shift register, is has parallel outputs, and a serial input. Like the PISO register, it has parallel inputs, and sets the the register content to those inputs when a write line is pulled high, with the write line low, it functions in the same way as a normal shift register, it also has a serial output for sending to another chip if need be. Complex I know, but nice for if you have an application where you need to alter or insert data in a serial bitstream on the fly.

    Morden.
     
  27. Offline

    treve

    @eissental: take youre time, better slow and good, then fast and buggy, and you dont get paid!eheh.
    The new circuit, will it be able to send only to pixels, or to wireless channels? so it can be used to send to any receiver or other chip that is having a receiver prebuild. although i think this is a stupid question, because a pixel should be named pixel (enter) channel, and all pixels will be the same otherwise. I think it was just stupid of me to ask this, also like it was stupid to name pixelchannels in numbers. if i remember good, it was once told in circuitdoc (pixel) and some1 else reported this before i got started. hehe, that will teach me (lost 4hours or so). i think i should start using signedit, and even better would be some kind of script/bot like shamebot told me.

    @guys from Finland that are also making (having) display of 800pixels, but with no/small memory: How are you guys dealing with the problems i am facing? because they should be the same :p (btw, i would wait for auto-activation also :p). i share my project, if some1 wants my display, just ask in pm (but i would wait asking untill i am done :p)

    @Mordenkainen: if you stand before the sign, looking at it, and you activate the chip using signs in youre hand, you will not build a sign! because youre standing in the way offcourse, but i agree i left-clicking is a +1. (and i only know this because i builded alot second signs, but you can write ok on it, or leave it, then you know you activated it :)
    you also et me confused about the new chip. what it should do is: if input adres pins are X, then send data from input pins to wirelesschannel BC00. if adres is x+1, send data to "BC05". ... or is it a way to select wireless channels? would be nice, hmmm, maybe i get it (some time later) if the new chip is an adressable transmitter, that transmits the datainput to the select out, then i should name it: "namenewchip" (enter) A1 (enter) A5000 ;then i would need 5000 adresses (X-adres-input-pins) and adres 5 will be channel A5 etc, making it on clock input transmitting the data all receivers/pixels that are listening to A5 channel. adres 7 to A7 etc...? wow, i actually needed to typ it to get it. i should be banned for spamming

    maybe you could rar the 3 files and provide downloadlink, but i think you have enough to do, and if it takes more of youre time, then just leave it as 3, for me its the same and lol @ jack-steven :p

    Thanks for all the work in youre plugins, and keeping them up-to-date, and making more and more chips, i can't thank you enough!!! (i could donate, yes, but i am low on cash myself, maybe if i win the lotto or something ;))
     
  28. Offline

    Mordenkainen

    Yes, that is almost exactly what I was describing, except you wouldn't need to specify an end channel (A5000 in your example above) because you would know by how many address inputs you have. 2 inputs = 4 addresses, 4 inputs = 16 addresses, etc. For 5000 channels, you would need 13 address pins, and could actually address up to 8191 addresses.

    So for example, if you were sending colors to pixel chips, and had 5000 of them, that would be: 4 (color input) + 13 (address input) + 1 (clock) = 18 input pins.

    As far as the 3 different plugins, I think it's good that they are separate, since one could change without the others changing.

    EDIT- Fixed my stupid mistake!
     
  29. Addressing left versus right click activation, I believe that someone at Mojang has lost it. I have accidentally put wall signs on my chip signs due to their thought that you should be able to do that.

    I really want a third action button. Break, place, and activate would solve a lot of problems.
     
  30. Offline

    Malkierian

    You know, that's actually a great idea (yes, putting signs on signs is a ridiculous function, I'd consider it a bug). But, is it possible to hook into a third mouse hit (or a mod it, like holding a key and clicking)? Plus, not EVERYONE has 3+ mouse buttons (though anyone with a sense of decency does :p, lol).
     
  31. My mouse has zero buttons. I was thinking more like hitting control or something. I'd much rather use my Xbox 360 controller but I haven't come up with a good way to map the game to the controller yet.
     

Share This Page