Skip to content

Commit

Permalink
Major cleanup of Data & Electronics Category
Browse files Browse the repository at this point in the history
Initial full review and update/cleanup of almost every page within the Data and Electronics category. Chemical Bath, Chemical Painter, and Electrolyzer moved to Logistics category.
  • Loading branch information
fastdelaspeed committed Feb 17, 2025
1 parent 18088a7 commit 1ac964a
Show file tree
Hide file tree
Showing 21 changed files with 125 additions and 111 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,7 @@ public void addPages()
.addSource("circuit_blueprints", getSourceForItems(
BlueprintCraftingRecipe.getTypedBlueprint("basic_circuits"),
BlueprintCraftingRecipe.getTypedBlueprint("advanced_circuits"),
BlueprintCraftingRecipe.getTypedBlueprint("processors"),
BlueprintCraftingRecipe.getTypedBlueprint("cryptography_circuits")
BlueprintCraftingRecipe.getTypedBlueprint("processors")
))
.addSource("basic_circuit_blueprints", getSourceForBlueprint("basic_circuits"))
.addSource("advanced_electronic_alloy", getSourceForItem(
Expand Down Expand Up @@ -90,7 +89,13 @@ public void addPages()
.addSource("processor_electronic_element", getSourceForItems(

IIContent.itemMaterial.getStack(Materials.PROCESSOR_ELECTRONIC_ELEMENT)
));
))
.addSource("cryptographic_circuit_board", getSourceForItem(IIContent.itemMaterial.getStack(Materials.CRYPTOGRAPHIC_CIRCUIT_BOARD)))
.addSource("basic_radio_tuner", getSourceForItem(IIContent.itemRadioTuner.getStack(1)))
//.addSource("advanced_radio_tuner", getSourceForItem(IIContent.itemMaterial.getStack(Materials.CRYPTOGRAPHIC_CIRCUIT_BOARD)))
//.addSource("mount", getSourceForItem(IIContent.itemSkycrateMount.getStack(1)))
//.addSource("data_combiner", getSourceForItem(IIContent.blockMetalDevice.getStack(IIBlockTypes_MetalDevice.DATA_MERGER)))
;
addEntry("data_types");
addEntry("data_wiring")
.addSource("data_cable", getSourceForItem(IIContent.itemDataWireCoil.getStack(1)))
Expand Down Expand Up @@ -165,9 +170,6 @@ public void addPages()
addEntry("scanning_conveyor");
addEntry("programmable_speaker");

addEntry("chemical_bath");
addEntry("chemical_painter");
addEntry("electrolyzer");
addEntry("precision_assembler")
.addSource("assembly_scheme", getSourceForItem(IIContent.itemAssemblyScheme.getStack(1)))
.addSource("precision_tools", getSourceForItems(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -121,5 +121,8 @@ public void addPages()
IIContent.itemSawblade.getStack(SawBlades.STEEL),
IIContent.itemSawblade.getStack(SawBlades.TUNGSTEN)
));
addEntry("chemical_bath");
addEntry("chemical_painter");
addEntry("electrolyzer");
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,18 @@ The **Arithmetic-Logic Machine** is an electronic device, which primary task is
|[text]{mb:"II:ArithmeticLogicMachine"}|

# details
When a data packet is received at one of the sides of the machine, it's processed by [functional circuits](functional_circuits) mounted on one of 4 slots in the rack.
When a data packet is received at either side of the machine, it's processed by [functional circuits](functional_circuits) mounted on one of 4 slots in the rack.
The machine passes the packet through all the circuits, attempting to modify its variables' values in alphabetical order using [expressions](data_types.md#expression).
An [Expression] will **overwrite the variable value** with its result.
Finally, the packet will be output to the side opposite the side it entered.
# details2
**__A note of caution:__**
<br>
An [Expression] will **overwrite the variable value** with its result.
If there is no expression for a variable, it will **pass without being changed**.

# expression
Each circuit provides its own set of expressions, some, like the [Advanced Arithmetic Circuit](functional_circuits#advanced_arithmetic), which has all the expressions of an [Arithmetic Circuit](functional_circuits#arithmetic) along with some new ones.
The expression can also have a Conditional Variable, an [Accessor](data_types.md#accessor) of a [Boolean](data_types.md#boolean) variable, which will not execute the expression in case the value is [TRUE].
The expression can also have a *Conditional Variable*, an [Accessor](data_types.md#accessor) of a [Boolean](data_types.md#boolean) variable, which will not execute the expression in case the value is [TRUE].

# accessor
The machine also offers a non-standard datatype, the [Accessor](data_types.md#accessor), which doesn't hold any value of its own, but can get the value most recently assigned to the variable from the received packet.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,19 +7,21 @@ the [Data System](data_main.md).
To get a reply from a device supporting callback, the packet has to be structured like this:
|[data_packet]{h:32,data:{c:{Type:"string",Value:"callback"},a:{Type:"string",Value:"get_something"},d:{Type:"string",Value:"get_something_else"}}}|
# main1
|[data_packet]{h:32,data:{c:{Type:"string",Value:"callback"}}}|
It's required to set variable [c] to ["callback"], to indicate that the packet is a [callback query].
|[data_packet]{h:32,data:{c:{Type:"string",Value:"callback"}}}|
<br>
All other variables will be returned with the [queried values](data_types.md) in the reply packet, or will [not be included](data_types.md#null) if no such property can be returned by the callback recipient.
# scenario0
To better illustrate this concept, let's take a look at the scenario below.
|[scenario]{}|
# scenario1
First, the [Data Input Machine](data_input_machine.md) sends a following packet to the machine through a [Duplex Connector](data_wiring.md#duplexconnector). We will be using a printing press with one bucket of Black ink and two buckets of Cyan for this example.
|[data_packet]{h:32,data:{j:{Type:"string",Value:"get_ink"},k:{Type:"string",Value:"get_onk_cyan"},i:{Type:"string",Value:"get_ink_cyan"}}}|
This connector's special property is that it has separate colors for input and output, meaning the network won't get cluttered by packets trying to arrive at all the endpoints and potentially breaking the setup.
# scenario 2
The duplex connector is used to separate the input and output onto different color channels, to protect the network from clutter and/or potentially breaking the setup.
# scenario2
Finally, to receive the [reply] from the machine, a [Debugger](data_wiring.md#debugger) was connected.
The output Packet looks as follows:
|[data_packet]{h:22,data:{j:{Type:"integer",Value:1000},i:{Type:"integer",Value:2000}}}|
The variables that contained [queries] were replaced with [answers] to them. One of the queries was invalid (there was a typo), therefore [nothing](data_types.md#null) was returned.
Now it's up to the Engineer to decide what to do with these received outputs, *perhaps it's a starting point of an automated supply system?*
# scenario3
Now it's up to the Engineer *(that's you!)* to decide what to do with these received outputs. *Perhaps it's a starting point of an automated supply system?*
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,12 @@ The **Storage** section is used to store **Data Storage Devices**, such as [Punc
The **Data** section is used for programming the Data Packet stored by the machine.

# editing_packets
The **DIM** persistently stores a single **Data Packet** that can be easily edited through the *interface*. The *Data section* consists of a list of variables.
By default, there are no variables.

# editing_variables
When editing a variable, you can change its letter by using the up and down arrows, to change its type hold shift when clicking it.
The **DIM** persistently stores a single **Data Packet** that can be easily edited through the *interface*. The *Data section* stores a list of **variables.**
Press the plus to add a variable.
When editing a variable, you can change its letter by using the up and down arrows on the left. You can change the [type](data_types.md) by using the arrows on the right.

# punchtapes
The **Data Input Machine** is capable of reading a **Packet** from a [Written Punchtape] and writing the currently stored **Packet** to [An Empty One].
The **Data Input Machine** is capable of reading a **Packet** from a [written punchtape] and writing the currently stored **Packet** to [a blank one].
Both operations can be performed by inserting a [Punchtape] into the *upper slot*. After processing, the [Punchtape] will be outputted into the *lower slot*.

# circuit_interface_upgrade
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ For example, if in a packet:
'a' - a [String](#string) is requested as [Integer](#integer), a new [defaultized] (with the type's default value: 0) [Integer](#integer) will be returned instead.

# default_value2
The same would happen in a packet like:
The same would happen in a packet with numbers stored as a string:
|[data_packet]{data:{a:{Type:"string",Value:"123"}}}|
Despite that for a human the *text* "123" seems identical to the *number* 123, a data machine sees it very different. A text type [can't be converted] to a number type, thus it too returns a [defaultized Integer], or simply put: 0.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,17 @@ Not really powerlines

# intro
Data can be transmitted in two ways: [wired] and [wireless].
In both cases there is no delay between sending and receiving **Data Packets**, this means the entire system is synchronised all the times and __there is no case where a packet might have arrived too late or too early__.
In both cases there is no delay between sending and receiving **Data Packets**. This means the entire system is synchronised all the times and __there is no case where a packet might have arrived too late or too early__.

# wired
The **Wired** data system relies on **Connectors** - the end points of it, **Relays** - which allow connecting multiple wires to form and extend a [Data Network] and finally, **Data Devices** which send and/or receive data.
The **Wired** data system relies on **Connectors** - the end points of it, **Relays** - which allow connecting multiple wires to form and extend a [Data Network] and **Data Devices**, which send and/or receive data.

|[scenario]{source:"wired_connection"}|

# data_cable
|[crafting]{source:"%SECTION%"}|
The **Data Cable** is a transmission medium created from multiple twisted-pair copper wires coated in a white-colored insulating material.
It allows fast, reliable and relatively long-distance transmission of [Data Packets](data_main.md) without any loss in the information they store.
|[crafting]{source:"%SECTION%"}|
The **Data Cable** is a transmission medium created from multiple twisted-pair copper wires coated in a white insulating material.
It allows fast, reliable and relatively long-distance, lossless transmission of [Data Packets](data_main.md).

# connector
|[crafting]{source:"%SECTION%"}|
Expand All @@ -23,7 +23,7 @@ In a similar manner to its [Electrical Counterparts](basic_wiring), only one wir


# connector_colors
A **Data Network** can contain multiple **Connectors** of various colors. When a packet is sent through a **Connector**, it will only be received on **Connectors** of the same color.
A **Data Network** can contain multiple **Connectors** of various colors, similar to the more primitive Redstone wiring system. When a packet is sent through a **Connector**, it will only be received on **Connectors** of the same color.
Using the [Engineer's Hammer] on a **Connector** will change its [color].
This allows multiple isolated **Connectors** to share **Relays**, [without interfering] with each other.

Expand All @@ -33,10 +33,10 @@ The **Data Relay** serves as a connection point between multiple [Connectors](#c
It does not interact with **Data Devices**.

# duplex_connector
|[crafting]{source:"%SECTION%"}|
|[crafting]{source:"%SECTION%"}|
The **Duplex Connector** is a Data Connector with separate colors for [input] and [output].
It is very useful in situations where a **Device** serves as both input and output and has only a single port.
Using the [Engineer's Hammer](introduction#introductionHammer) on it will change the **Connector's** [output color] when sneaking and [input color] when not.
It is very useful in situations where a **Device** serves as both input and output but only has only a single port.
Using the [Engineer's Hammer](introduction#introductionHammer) on it will change the [input color]. Use while sneaking to change the [output color].

# debugger
|[crafting]{source:"%SECTION%"}|
Expand All @@ -47,11 +47,11 @@ In the [Transmitter] mode, the **Debugger** will transmit a test package when pr
|[data_packet]{data:{a:{Type:"string",Value:"Hello, World!"}}}|
<br>In the [Receiver] mode, the device will receive and store any data packets going through it, and emit a [10 tick long] redstone pulse on reception.<br>
The [Transceiver] mode combines functions of both.

# wireless1
**Wireless** data transfer is an extension over the **Wired** one.
It uses radio-capable devices, such as the [Radio Station](radio_station), [Radio Backpack](radio_station) and [Radio Explosives](radio_station).
For a **Packet** to be transmitted **wireless**, the [transmitter] and [receiver] have to use the same [frequency] and the [receiver] has to be in range of the [transmitter] or a [relay] of its signal.

For a **Packet** to be transmitted **wirelessly**, the [transmitter] and [receiver] have to use the same [frequency] and the [receiver] has to be in range of the [transmitter] or a [relay] of its signal.
# wireless2
Any radio device of the same frequency will also act as [relays], extending your wireless network.
When designing radio networks, keep in mind that every device has a [limited maximum transmission range], which changes depending on [weather].
Expand Down
Loading

0 comments on commit 1ac964a

Please sign in to comment.