Here's a simple mod to add some old-fashioned filament displays to your world
There are four types of display devices: the old-fashioned Nixie tube, which uses a generic/common design and displays the digits 0-9 (plus colon and period in this design), a Decatron tube similar to ETL/Baird Atomic GC10B, which displays its value by lighting up batches of "pins" on its face, an "alphanumeric" Nixie-like tube using a 14+1 segment display similar to the Burroughs B-7971 tube, and a Numitron design similar RCA DR-2115 (but using a 7+2 segment display with period and colon).
Place one, right-click it to set a channel, hook up some Digilines wires and a Lua Controller or so, and send the symbol you want it to display as a Digilines message. Decatron tubes can also be wall-mounted. A stripe indicates the "1" position on those.
The classic Nixies and the Numitrons respond to the numbers 0-9 and the words "colon", "period", and "off", while the alphanumeric Nixies will respond to the entire ASCII character set (32-127), the above three control words, plus "del", "allon", and "cursor", and they can display strings across multiple tubes.
Decatron tubes respond to 0-9 and "off" to directly set their states, "inc" and "dec" to bump the value up or down, "get" to read the current value back into your LuaController program, and they'll send "carry" or "borrow" as a message if the count overflows or underflows.
Strings will be displayed using all tubes in a lineup, so long as they all face the same way, starting from the tube the Lua Controller is connected to, going left to right. The other tubes in the line do not need to be connected to anything - think of them as being connected together via wireless. NFC :-) Only the tube at the far left need be connected to the Lua Controller.
The string will spread down the line until either a tube is found that faces the wrong way, or has a channel that's not empty/nil and is set to something other than what the first is set to, or if a node is encountered that is not an alpha-numeric tube at all.
Tubes to the left of the connected one are ignored (unless they, too, have their own connections).
You can put multiple lines of tubes end to end to form independent displays, so long as the tubes that start each of the lines have unique channel names set.
The string is padded with spaces and then trimmed to 64 characters.
Any unrecognized symbol or character outside the ASCII 32 - 129 range, whether part of a string or singularly is ignored.
Only the alphanumeric tubes support strings.
These tubes emit a small amount of light when displaying something.
Since these are meant to be driven by Digilines signals, only the "off" ones for all four types appear in the Creative Inventory. Use /giveme to get the others if you're not using Digilines (this is how the two middle Nixie screenshots were created). Node names are of the form "nixie_tubes:tube_{0..9, 'colon', 'period'}" for classic ones, "nixie_tubes:alnum_{ASCII char code}" for the alphanumeric ones, or "nixie_tubes:decatron_{0..9}" for the Decatrons.
No crafting recipes have been made for the Decatron yet.
Depends: Default minetest_game stuff, a recent Minetest engine, mesecons, and digilines
License: LGPL 3.0 for code, CC-by-SA 4.0 for media and everything else.
Download: https://github.com/mt-mods/nixie_tubes/ ... master.zip
...or browse the code: https://github.com/mt-mods/nixie_tubes
Crafting
Spoiler
Classic tubes take 5 glass, one wall sign, and one mese crystal fragment. Yields 4.
Alphanumeric tubes use the same recipe, but with a whole mese crystal instead of the fragment. Yields 4.
Spoiler
These Decatrons are showing a combined count of 4128.
Numitron screenshot by cheapie
Spoiler
Code: Select all
if (event.type == "on" and event.pin.name == "A") then
print("pin A")
digiline_send("1", "6")
end
Code: Select all
if (event.type == "program" or event.type == "interrupt") then
interrupt(0.2)
digiline_send("tube0", "inc")
end
if (event.type == "digiline" and event.msg == "carry") then
if (event.channel == "tube0") then
digiline_send("tube1", "inc")
elseif (event.channel == "tube1") then
digiline_send("tube2", "inc")
elseif (event.channel == "tube2") then
digiline_send("tube3", "inc")
end
end