Code Monkey home page Code Monkey logo

tiny-redstone's Introduction

Tiny Redstone is a forge mod for Minecraft that adds many tiny redstone pieces that you can put together on redstone panels to form tiny redstone circuits. These circuits can be copied onto blueprints and shared inside and outside your Minecraft world.

These panels can be picked up, moved, rotated, and linked with other panels. You can even dye them to match your build!

Each panel can hold up to 64 components in an 8x8 grid. You can choose which sides each piece of Tiny Redstone Dust connects and make your circuits super compact.

How to play

  1. Craft a Redstone Panel and some tiny redstone components.
  2. Right click the panel with the components to place them.
  3. Left click with a component or Redstone Wrench in your hand to remove them.
  4. Right click with a Redstone Wrench to rotate the panel.
  5. Pick up the panel with all it's components and circuitry intact by shift-right clicking it with Redstone Wrench, or simply use a pick or your bare hands.

Tiny Redstone Dust Tiny Redstone

Tiny redstone behaves much like regular redstone. It picks up signals from strong redstone sources. Signals passed from one tiny redstone to another are decreased by 1. Unlike regular redstone, you can right click to toggle each edge of the redstone on or off. If you click directly in the middle, it will toggle all 4 directions on or off.

Tiny Repeater

Tiny repeaters are similar to their bigger cousins. They will pick up any redstone signal received at the back and output a full (15) signal to the front with a delay between 1 and 4 ticks set by right clicking.

Tiny Super Repeater

Similar to Tiny Repeaters, except that when you right click, a GUI will appear allowing you to increase or decrease the delay up to 100 redstone ticks (10 seconds).

Tiny Comparator

Tiny comparators work exactly like regular comparators. They will pick up weak signals from adjacent blocks and inventory comparator outputs when placed on the edge of a panel. You can also right click them to toggle subtract mode, in which case, just like vanilla comparators, the output will be subtracted by the inputs coming in from the sides.

Tiny Redstone Torch Tiny Redstone Torch

Similar to regular redstone torches, but cuter. Tiny Redstone Torches can act as redstone power sources and as NOT gates. When placing a Tiny Redstone Torch, it will be point away from you. It will output a full redstone signal on 3 sides, and will switch off when receiving a redstone signal from the bottom side. It is not necessary to place the torch against a block to create a NOT gate. These torches will also output a small amount of light when lit, similar to Tiny Redstone Lamps.

Tiny Redstone Block Tiny Redstone Block

Like their huge counterpart, Tiny Redstone Blocks output full redstone power in all 4 directions and can be pushed by tiny pistons.

Tiny Piston & Tiny Sticky Piston

Work almost exactly like their monstrous counterpart. They can push up to 12 tiny blocks. However, they will not extend if a non-pushable block is in the way. So, you don't have to worry about tiny redstone "popping" off the panel. It will push tiny blocks onto adjacent Redstone Panels but will not push off the panel if no adjacent Redstone Panel exists.

Tiny Solid Block

Colorful little wool-like blocks. They're not just pretty. They are very useful. They behave like solid blocks with vanilla redstone. They will carry a weak redstone signal when powered by redstone, and a strong signal when powered by a repeater or comparator. And, since they can be pushed by tiny pistons, you can build edge detectors and other powerful circuits!

Tiny Glass Block

Colorful little glass-like blocks. They behave like transparent blocks with vanilla redstone in that they do not carry a redstone signal, and they can be pushed by tiny pistons.

Tiny Button

Just like vanilla buttons, but smaller. They output redstone on all 4 sides when activated. Wood buttons output for 15 redstone ticks and stone for 10 redstone ticks.

Tiny Lever

It's a lever, but tiny!

Tiny Redstone Lamp

Like their bigger counterparts, they will light up when given a redstone signal. The light they output is very dim. 15 lit lamps will output the max light of 15, so you can control exactly how much light you want your panel to output.

Tiny Observer

Work almost exactly like their big brother. Outputs a pulse to the back whenever a change is detected in the cell or block in front of it. When facing blocks out in the world, it behaves exactly like vanilla observers. When facing cells on the tile, it will detect movement, placement, removal and redstone changes. It currently does not detect color changes or tiny repeater delay changes. You probably didn't want it to anyway. ;)

Note: You can not break a Redstone Panel while you are holding a Redstone Wrench or a tiny component. This is to help prevent accidental breakage while removing tiny components from the panel, especially in creative mode. Sneak right click with the Redstone Wrench to instantly pick up the Redstone Panel, or you can always use a pickaxe.

Copying and Sharing Circuits

Saving a circuit

Craft a Blueprint and right click the empty blueprint on your assembled Redstone Panel. The circuit on that panel is now saved to that blueprint. To clear the blueprint, place it in a crafting grid.

Copying a saved circuit

Hover over the blueprint to see the components required for your circuit. Make sure you have all those components in your inventory (unless you are in Creative Mode). Right click on an empty Redstone Panel. The required components will be taken from your inventory and placed on the panel to form the circuit.

Exporting

After saving a circuit to a blueprint, right click in the air. A GUI will appear. Click the Export button and save the *.json file wherever you want it.

Importing

Right click in the air with an empty blueprint. A GUI will appear. Click the Import button. Find the *.json file with the saved circuit and open it. The circuit will now be saved to your blueprint.

Permissions

Yes, I would love to see this mod in your open source modpack. Curseforge packs are always okay, anywhere else, a link back to this page is appreciated. But you were already doing that for all mods anyway, right?

Issues and Feature Requests

Please submit bugs and feature requests using the Issues link above. Be sure to include the mod version, forge version and any relevant crash reports. This mod is in early beta, and therefore, may have some bugs and minor design issues. If you do find any problems or have ideas for improvements, I would be most grateful for your input.

Credits, Acknowledgements and Thanks

Inspiration for this mod comes from many mods and vanilla Redstone, of course. Probably at the top of the list is Super Circuit Maker. Although there are many differences, I have long since missed being able to create my own compact redstone circuits, and made this mod to fulfill that deep longing. Thanks also goes to the Forge team and to the many mod authors who came before me. Without their community contributions, this would not have been possible.

tiny-redstone's People

Contributors

dannydjdk avatar lublak avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

tiny-redstone's Issues

[bug] export -> Camera freezes

If you export to a json file the camera gets freezed. I can move my char but i can't rotate the camera.
Cancel works fine.
After right clicking again and press cancel it works again.

[Enhancement] Copying Vanilla Redstone In World to a Blueprint

This idea is inspired by a comment on my YouTube spotlight video for this mod. Shrechuum suggested implementing something like AE's spatial storage, where redstone blocks in the world can be converted to a tiny redstone circuit.

What I would like to do is add a feature that allows you to copy a vanilla redstone circuit in the world to a blueprint which you can then use to create a circuit using the existing blueprint system. Using some mechanism to scan an 8x8x7(?) area in the world. All blocks within that area which correspond to tiny redstone components would be copied to a blueprint. Perhaps any unknown blocks would be set to tiny solid blocks.

I expect that this would be a very involved project that will take a considerable amount of development time, so I'm setting it to low priority for now.

[bug] optifine lightning

Yes, I know. Optifine is evil.
Currently, the light output does not work with optifine.
I think it is a wontfix.
I'll still see if I can find something about it and if so I'll try to fix it myself. But it's unlikely, as I have no idea about either optifine or forge.
But maybe I'll find something anyway.
grafik

[Enhancement] Panel Free Placement

Right clicking a tiny component in the world where there is no existing Redstone Panel block would place that tiny component in the world.

  • Technically, an invisible Redstone Panel tile entity would automatically be placed in that block space allowing for placement of components in a full 8x8x8 area.
  • Removing the last component will remove the tile entity.
  • The block will always be horizontal facing (technically downward), but can input/output redstone in all 6 directions.
  • Breaking the block with a pickaxe or by shift-right clicking with a wrench will drop a single block containing all the components within that block space (somewhat similar to C&B).
  • Right clicking a blueprint in the world could place the circuit in world.
  • Redstone Panels could still be used when desired and for placement in other orientations.

Button and lever 3d placement

Allow placement of buttons and levers on the side of tiny blocks.

Theoretically, there could be 24 different possible orientations: 4 facing directions on 6 faces.

This may require special handling of previous saves and blueprints for backward compatibility.

[Feature Request] Circuits on circuits

Bit like in super circuit maker.
Place a circuit board (potentially just some built in circuits like rs latch) onto a circuit board to increase compactness

[feature request] redstone hole and redstone rod.

This idea, or rather the components, is not really vanilla.
The redstone hole allows the signal to be taken or sent from under the panel.
The redstone rod allows the signal to be taken or sent above the panel.

[feature request] 3d space

Allow the circuit to go up.

  • allow pistons to push blocks upwards
  • allow dust on blocks
  • allow blocks on blocks
  • allow blocks over torches
  • allow redstone signal
  • allow an output of the redstone signal upwards
  • etc...

Currently, most logic can be implemented in 1-height circuits.
I think, especially for performance and maintainability, it will be rather impossible.

a simpler idea would be the two feature requests:
#10
#9

[feature request] preview your placement

Each of the tiny redstone components should show a preview of where you will place it. (transparent ghost block)

Already on your to-do list, similar (highlight the grid)

[dev] The One Probe Override doesn't override redstone output

The One Probe is now showing component redstone outputs based on the side of the component being viewed. However, if the side of the component also corresponds to a side of the panel that is outputting redstone, The One Probe is displaying that redstone output too.

2021-05-05_20 16 14

How do we tell The One Probe not to display the panel's redstone output when we're looking at a component?

Any idea @lublak?

Tiny Common Logic Components

You asked me to put this here from the curseforge comment section.
If/when you make an add-on perhaps you can consider adding components besides (n)and, (n)or and x(n)or, like:

  • counters (set amount, increase/decrease on signal and reset on side)
  • timer/pulse-generator (in ticks/seconds/minutes)
  • sr-latch (and/or toggle-latch)
  • raising/falling edge detectors
  • on/off delays (again in ticks/seconds/minutes)

Again, thank you for this mod, it saves me loads of space and I love designing circuits with it.

[suggestion] common gates - blueprints and components

honestly this is a great mod, and the only things I could even remotely suggest is make both small version and large version logic gates, and to make the covers dyeable for easy identification. both would create a highly optimized experience and would be source for Mojang to emulate in a future patch.

[bug] game closed

I made it :P i try to recreate it, my test world cannot be opened.
Currently I have no idea how, but it had something to do with pistons and 2 panels.

---- Minecraft Crash Report ----
// Surprise! Haha. Well, this is awkward.

Time: 20.03.21 18:08
Description: Ticking block entity

java.lang.NullPointerException: Ticking block entity
	at com.dannyandson.tinyredstone.blocks.PanelTile.getNeighborTileCellIndex(PanelTile.java:804) ~[tinyredstone:1.16.5-1.5.0b] {re:classloading}
	at com.dannyandson.tinyredstone.blocks.PanelTile.updateNeighborTileCell(PanelTile.java:797) ~[tinyredstone:1.16.5-1.5.0b] {re:classloading}
	at com.dannyandson.tinyredstone.blocks.PanelTile.updateNeighbor(PanelTile.java:655) ~[tinyredstone:1.16.5-1.5.0b] {re:classloading}
	at com.dannyandson.tinyredstone.blocks.PanelTile.updateNeighborCells(PanelTile.java:631) ~[tinyredstone:1.16.5-1.5.0b] {re:classloading}
	at com.dannyandson.tinyredstone.blocks.PanelTile.updateNeighborCells(PanelTile.java:624) ~[tinyredstone:1.16.5-1.5.0b] {re:classloading}
	at com.dannyandson.tinyredstone.blocks.PanelTile.updatePiston(PanelTile.java:412) ~[tinyredstone:1.16.5-1.5.0b] {re:classloading}
	at com.dannyandson.tinyredstone.blocks.PanelTile.func_73660_a(PanelTile.java:318) ~[tinyredstone:1.16.5-1.5.0b] {re:classloading}
	at net.minecraft.world.World.func_217391_K(World.java:1279) ~[?:?] {re:computing_frames,pl:accesstransformer:B,re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:APP:performant.mixins.json:world.WorldMixin,pl:mixin:A}
	at net.minecraft.world.server.ServerWorld.func_72835_b(ServerWorld.java:371) ~[?:?] {re:mixin,pl:accesstransformer:B,re:computing_frames,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:APP:performant.mixins.json:world.ServerWorldBlockUpdateMixin,pl:mixin:APP:abnormals_core.mixins.json:ServerWorldMixin,pl:mixin:APP:endergetic.mixins.json:ServerWorldMixin,pl:mixin:APP:quark.mixins.json:ServerWorldMixin,pl:mixin:APP:charm.mixins.json:ServerWorldMixin,pl:mixin:APP:charm.mixins.json:accessor.ServerWorldAccessor,pl:mixin:APP:performant.mixins.json:world.ServerWorldMixin,pl:mixin:APP:performant.mixins.json:entity.MobServerWorldMixin,pl:mixin:A}
	at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:851) ~[?:?] {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:APP:structure_gel.mixins.json:MinecraftServerMixin,pl:mixin:APP:charm.mixins.json:accessor.MinecraftServerAccessor,pl:mixin:APP:byg.mixins.json:server.MixinMinecraftServer,pl:mixin:A}
	at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:787) ~[?:?] {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:APP:structure_gel.mixins.json:MinecraftServerMixin,pl:mixin:APP:charm.mixins.json:accessor.MinecraftServerAccessor,pl:mixin:APP:byg.mixins.json:server.MixinMinecraftServer,pl:mixin:A}
	at net.minecraft.server.integrated.IntegratedServer.func_71217_p(IntegratedServer.java:118) ~[?:?] {re:mixin,re:classloading,xf:OptiFine:default,pl:mixin:APP:smoothboot.mixins.json:client.IntegratedServerMixin,pl:mixin:A}
	at net.minecraft.server.MinecraftServer.func_240802_v_(MinecraftServer.java:642) ~[?:?] {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:APP:structure_gel.mixins.json:MinecraftServerMixin,pl:mixin:APP:charm.mixins.json:accessor.MinecraftServerAccessor,pl:mixin:APP:byg.mixins.json:server.MixinMinecraftServer,pl:mixin:A}
	at net.minecraft.server.MinecraftServer.lambda$startServer$0(MinecraftServer.java:232) ~[?:?] {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:APP:structure_gel.mixins.json:MinecraftServerMixin,pl:mixin:APP:charm.mixins.json:accessor.MinecraftServerAccessor,pl:mixin:APP:byg.mixins.json:server.MixinMinecraftServer,pl:mixin:A}
	at java.lang.Thread.run(Thread.java:748) [?:1.8.0_242] {}


A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------

-- Head --
Thread: Server thread
Stacktrace:
	at com.dannyandson.tinyredstone.blocks.PanelTile.getNeighborTileCellIndex(PanelTile.java:804) ~[tinyredstone:1.16.5-1.5.0b] {re:classloading}
	at com.dannyandson.tinyredstone.blocks.PanelTile.updateNeighborTileCell(PanelTile.java:797) ~[tinyredstone:1.16.5-1.5.0b] {re:classloading}
	at com.dannyandson.tinyredstone.blocks.PanelTile.updateNeighbor(PanelTile.java:655) ~[tinyredstone:1.16.5-1.5.0b] {re:classloading}
	at com.dannyandson.tinyredstone.blocks.PanelTile.updateNeighborCells(PanelTile.java:631) ~[tinyredstone:1.16.5-1.5.0b] {re:classloading}
	at com.dannyandson.tinyredstone.blocks.PanelTile.updateNeighborCells(PanelTile.java:624) ~[tinyredstone:1.16.5-1.5.0b] {re:classloading}
	at com.dannyandson.tinyredstone.blocks.PanelTile.updatePiston(PanelTile.java:412) ~[tinyredstone:1.16.5-1.5.0b] {re:classloading}
	at com.dannyandson.tinyredstone.blocks.PanelTile.func_73660_a(PanelTile.java:318) ~[tinyredstone:1.16.5-1.5.0b] {re:classloading}
-- Block entity being ticked --
Details:
	Name: tinyredstone:redstone_panel // com.dannyandson.tinyredstone.blocks.PanelTile
	Block: Block{tinyredstone:redstone_panel}[facing=down]
	Block location: World: (-81,71,28), Chunk: (at 15,4,12 in -6,1; contains blocks -96,0,16 to -81,255,31), Region: (-1,0; contains chunks -32,0 to -1,31, blocks -512,0,0 to -1,255,511)
	Block: Block{tinyredstone:redstone_panel}[facing=down]
	Block location: World: (-81,71,28), Chunk: (at 15,4,12 in -6,1; contains blocks -96,0,16 to -81,255,31), Region: (-1,0; contains chunks -32,0 to -1,31, blocks -512,0,0 to -1,255,511)
Stacktrace:
	at net.minecraft.world.World.func_217391_K(World.java:1279) ~[?:?] {re:computing_frames,pl:accesstransformer:B,re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:APP:performant.mixins.json:world.WorldMixin,pl:mixin:A}
	at net.minecraft.world.server.ServerWorld.func_72835_b(ServerWorld.java:371) ~[?:?] {re:mixin,pl:accesstransformer:B,re:computing_frames,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:APP:performant.mixins.json:world.ServerWorldBlockUpdateMixin,pl:mixin:APP:abnormals_core.mixins.json:ServerWorldMixin,pl:mixin:APP:endergetic.mixins.json:ServerWorldMixin,pl:mixin:APP:quark.mixins.json:ServerWorldMixin,pl:mixin:APP:charm.mixins.json:ServerWorldMixin,pl:mixin:APP:charm.mixins.json:accessor.ServerWorldAccessor,pl:mixin:APP:performant.mixins.json:world.ServerWorldMixin,pl:mixin:APP:performant.mixins.json:entity.MobServerWorldMixin,pl:mixin:A}

[Feature request] 3d Redstone circuits

I think having possibility to make redstone circuit with multiple layer can be nice and will add a lot of possibility for more complexe circuit in a compact way.

So what I imagine is:

  • Having possibility Tiny Plate, where you can place 1 Tiny redstone each.
  • Having possibility to bring Redstone Signal from one layer to the other with a sort of redstone cable vertical (Similar to the Redstone Impregnated Sticks from SCM)
  • Like in Minecraft circuit, Tiny Redstone Torch should be hable to transmit Redstone signal on the second layer.
  • In addition you can possibly add a none conductive version of the plate.

If you want to see visually an example of what you can do:
https://youtu.be/09hFVLKlBo4?t=468

You probably don't need to go with the same level of complexity than SCM let you make, but I think it can give you somes ideas for improvements.

And, if you need, codes sources of SCM have been delivered, so if this can help you in certain way, question to improved your mod, without necessarely copying the codes:
https://github.com/amadornes/SCM-Legacy

[bug] Redstone doesn't propagate across panels reliably

First off... I love this mod. As an engineer, I'm drawn to technical Minecraft, but I'm not a fan of large bulky circuits. RedPower (and later Project Red) was my favorite mod because it allowed me to create super compact circuits and focus on functionality rather than puzzling out how to make something work within vanilla redstone oddities. Tiny-Redstone once again allows me to create extremely compact circuits while still managing to stay true to vanilla. Kudos on an excellent mod!

I noticed that redstone signals don't always propagate reliably across adjacent panels. I created a simple circuit shown below to illustrate the issue:

2021-05-05_09 48 02

With these three parallel lines, each operates fine individually. However, if I first turn on the right one followed by the middle one, the middle one doesn't propagate past the first panel:

2021-05-05_09 50 19

Likewise, the left line also doesn't propagate.

2021-05-05_09 52 56

However, if I turn off the left circuit again, the middle one updates properly.

2021-05-05_09 53 54

Adding repeaters to the panel edge helps somewhat, but the propagation is still unreliable. In the example below, the middle circuit "blocks" the falling edge of the right circuit from propagating (sometimes):

2021-05-05_10 02 56

As I mentioned, sometimes the above circuit works, and sometimes it doesn't. It seems a little random. There are a lot of other permutations, but I think you get the idea.

If I place repeaters on both panels (one launching and one receiving), then it seems to work reliably.

For this test, I'm using Tiny Redstone 1.16.5-1.7.0 with Forge 36.1.0.

I hope this helps.
Dave

[Enhancement] allow each cell/cover accept a right click with a item

Currently it is complete hardcoded.

That is okay:

https://github.com/dannydjdk/Tiny-Redstone/blob/master/src/main/java/com/dannyandson/tinyredstone/blocks/PanelBlock.java#L357
https://github.com/dannydjdk/Tiny-Redstone/blob/master/src/main/java/com/dannyandson/tinyredstone/blocks/PanelBlock.java#L360

But it would be nice to have a method on each cell and cover thats accept a right click item.

  1. for plugins this would be very advantageous
  2. camouflage blocks could be a thing

[enhancement] better redstone dust placement

I will try to implement it myself and make a pull request.
You can do it too, of course, but I like to help a bit, if I can, and not just throw my ideas in here.

blue: player position (the player position is only important if only one connection is available)
black: cell
red (in black): a possible connection point, repeater, other redstone line (only if the side is enabled), block?, comparator, etc.
red (in white): the new redstone dust to be placed with the connections

@dannydjdk what do you think of that?

So basically:

If only one connection exists in the adjacent fields:

Connect one connection and then, depending on the player orientation, the other.

Otherwise:

Connect only all available connections.

grafik

[bug] piston over two panels

I just noticed. Whether this is really a bug ... I doubt it myself.
(i like the feature that you can expand your redstone panels ๐Ÿ‘ )

But I noticed it anyway :)

If you place two panels it looks like this

grafik

if i remove the second panel
grafik

=============

if i place only one panel:

grafik

after placing a second panel:
grafik

[bug] colored panel placing

When removing a colored panel and placing it, the panel loses its color.
atfer placing a component it gets its color back.
It is enough if you somehow interact with the panel.
grafik
grafik
grafik

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.