replaceitem / integrated-circuit

Adds integrated circuits to compact your redstone circuits into one block
https://modrinth.com/mod/integrated-circuit
MIT License
14 stars 4 forks source link

feature request: allow placing components on block objects in the grid #34

Closed TheBearodactyl closed 3 weeks ago

TheBearodactyl commented 3 weeks ago

like if you have a block in your IC, you should be able to place redstone other components on top of said block in the circuit grid

replaceitem commented 3 weeks ago

That would mean circuits are no longer 2-Dimensional but have multiple layers. I intended for this mod to have only one layer. It's a compromise for the advantage of compacting redstone, plus, editing multiple layers isn't easy in a GUI.

TheBearodactyl commented 3 weeks ago

@replaceitem fair enough. could you add sculk sensors and shriekers?

replaceitem commented 3 weeks ago

Not sure what those would be useful for. Circuits don't support block entities yet, so that would be needed for that anyway.

TheBearodactyl commented 3 weeks ago

Not sure what those would be useful for. Circuits don't support block entities yet, so that would be needed for that anyway.

sound based redstone pulses

replaceitem commented 3 weeks ago

But which blocks in circuits would even emit vibrations? The reason there are no pistons, trapdoors,... in circuits is that circuits are supposed to have no moving parts. Sculk sensors would go against that idea too imo.

TheBearodactyl commented 3 weeks ago

But which blocks in circuits would even emit vibrations? The reason there are no pistons, trapdoors,... in circuits is that circuits are supposed to have no moving parts. Sculk sensors would go against that idea too imo.

fair enough

ashy1227 commented 3 weeks ago

What about making it so you can place colored wool under redstone? and adding different colors of normal wool while you're at it

replaceitem commented 3 weeks ago

Coloring the floor has been suggested before, but i'm not so sure about that. Adding different wool colors i can see being added though.

ashy1227 commented 3 weeks ago

why not? it would help to make it clear what part of the circuit does what

replaceitem commented 3 weeks ago

Yea it can be useful, i'm just a bit hesitant to add it since it would add more data to circuits, and i'm not so sure how the interaction with that would work

ashy1227 commented 3 weeks ago

oh, i see. i don't think the extra data would be so bad, seeing as like chests full of shulker boxes and stuff are fine, but idk.

As for how to do the interactions: maybe shift right click with wool and/or clicking the icon in the inventory slot after selecting it can toggle between placing in the foreground and background? and for removing them, maybe if there's something in the foreground it'll remove that, but if not it'll remove the wool? or it could get removed with the foreground

ashy1227 commented 3 weeks ago

to be fair though, since the circuits are kinda small it might not be worth the extra complexity.... buuuut if you were to add bigger circuits with the ability to put circuits inside of each other (which i think you should hehe), then it would be nice

replaceitem commented 3 weeks ago

Yea i also think with 15x15 it's fine to not color code things, however in case that ever changes that might be something to consider. Whether to change circuit size or allow circuits in circuit is also something i don't know how and whether to add it. I want things to stay balanced for both survival and creative use.

ashy1227 commented 3 weeks ago

Makes sense. I don't think it would be too OP since rn the circuits are fairly limited and it's not like it gives you free diamonds, it just makes it so you can do cool redstone stuff (computercraft isn't OP).

My idea would be that you should add an extra tier of circuits that has a bigger building area (maybe 128x128?) and allows you to put circuits inside of it (it would be so cool to be able to make like redstone computers using this mod lol), while leaving the default circuits the same

Also, I think currently the biggest limitation with the circuits is really the lack of IO ports... maybe there could be some way of making multiblock circuits with more IO ports? maybe in the crafting bench you craft them together in the shape you want (so available sizes would be like 1x1, 2x1, 3x1, 2x2, 3x2, 3x3). that would be really awesome, the only thing is that it might be confusing to place them, but if that happens then you could probably just do ghost blocks like create does

replaceitem commented 3 weeks ago

Currently the way i am thinking of doing it would be placing two circuits next to each other makes it so there are connections between them on every component along the circuits edge (15 currently). Maybe the circuit is also then treated as one, meaning you can edit them as if it was a 15x30 circuit. That would also be visible on the block model. Also making ports freely placeable might be an option.

But i'm not so great at designing and coming up with these mechanics so any feedback is very much welcome. There are many concerns i dont a solution for yet with my approach.

ashy1227 commented 3 weeks ago

Ooh those ideas might be even better hehe.

I think placing it in the world is actually better than doing it in the crafting grid, you could make it so if you hold shift while placing it actually places the circuit next to the other one instead of expanding it. Maybe both ways could be an option, since we'd need to create items for the multiblock circuits anyways so you're able to pick them up.

Making ports freely placeable is a cool idea. Actually- adding a way to disable ports too would be great, since they can get in the way of stuff you're building.

Also, with the bigger circuits, you'd probably want to be able to drag around and zoom in/out in the circuit window so that would be a thing.

But i'm not so great at designing and coming up with these mechanics so any feedback is very much welcome. There are many concerns i dont a solution for yet with my approach.

Anything specific other than what I mentioned? If you like I might be open to making another PR at some point to implement some of these features, although you know a lot of the code better than I do

replaceitem commented 3 weeks ago

Like migrating existing circuits sounds like a headache, the currently 15x15 circuits i would prefer to have a nice number like 16 or 32 (with free port placement). Migrating to 16x16 wouldnt work, but to 32x32 it could just copy the circuit and place the ports wherever they used to be on the 15x15 i guess. Also the part you mentioned about picking up multi block circuits as one: Treating multiple blocks as one thing feels quite wrong to me. Placement and breaking would feel wrong. I really want to keep this one block is a circuit approach, but while allowing more space and ports.

ashy1227 commented 3 weeks ago

Hmm why is it weird to have several blocks as one? Minecraft doors do it and so do blocks from other mods like create. If it's really confusing, you could add a ghost outline for the placement too. Plus, the alternative would be to place each section individually which would stink :v

Maybe the size of the circuits could be stored in NBT data? and the existing ones would just keep their size of 15, while new ones get upgraded to 16?

replaceitem commented 3 weeks ago

It feels really janky to me, doors or beds with predicatable size are fine, but anything that could wider than two blocks is too much imo. I want to keep this mod feeling close to vanilla with that "one block at a time" principle.

Maybe instead we make one block circuits very large (like you said, combining circuits to make 32x32, 64x64, 128x128,...), but add like port extender blocks.

ashy1227 commented 3 weeks ago

fair enough. that could also work

ashy1227 commented 3 weeks ago

so maybe the way to do it is, like you said you could combine circuits in the grid to extend the available size (which can be stored in nbt), and then have a separate block to add more ports. then, there could be a second tier that allows you to make them even bigger and allows you to embed circuits inside each other

Edit: actually, maybe it doesn't need to be a seperate block- you could just use the shift click mechanics to either place a separate circuit or extend the other one's ports