mirror of
				https://github.com/SquidDev-CC/CC-Tweaked
				synced 2025-10-30 21:23:00 +00:00 
			
		
		
		
	Switch to GitHub-style admonitions/alerts
As these are just a custom syntax on top of blockquotes, these work much better with text editors.
This commit is contained in:
		| @@ -25,16 +25,15 @@ We are going to build our GPS constellation as shown in the image above. You wil | |||||||
| modems or 4 ender modems. Try not to mix ender and wireless modems together as you might get some odd behavior when your | modems or 4 ender modems. Try not to mix ender and wireless modems together as you might get some odd behavior when your | ||||||
| requesting computers are out of range. | requesting computers are out of range. | ||||||
| 
 | 
 | ||||||
| :::tip Ender modems vs wireless modems | > [Ender modems vs wireless modems][!TIP] | ||||||
| Ender modems have a very large range, which makes them very useful for setting up GPS hosts. If you do this then you | > Ender modems have a very large range, which makes them very useful for setting up GPS hosts. If you do this then you | ||||||
| will likely only need one GPS constellation for the whole dimension (such as the Overworld or Nether). | > will likely only need one GPS constellation for the whole dimension (such as the Overworld or Nether). | ||||||
| 
 | > | ||||||
| If you do use wireless modems then you may find that you need multiple GPS constellations to cover your needs. | > If you do use wireless modems then you may find that you need multiple GPS constellations to cover your needs. | ||||||
| 
 | > | ||||||
| A computer needs a wireless or ender modem and to be in range of a GPS constellation that is in the same dimension as it | > A computer needs a wireless or ender modem and to be in range of a GPS constellation that is in the same dimension as | ||||||
| to use the GPS API. The reason for this is that ComputerCraft mimics real-life GPS by making use of the distance | > it to use the GPS API. The reason for this is that ComputerCraft mimics real-life GPS by making use of the distance | ||||||
| parameter of @{modem_message|modem messages} and some maths. | > parameter of @{modem_message|modem messages} and some maths. | ||||||
| ::: |  | ||||||
| 
 | 
 | ||||||
| Locate where you want to place your GPS constellation. You will need an area at least 6 blocks high, 6 blocks wide, and | Locate where you want to place your GPS constellation. You will need an area at least 6 blocks high, 6 blocks wide, and | ||||||
| 6 blocks deep (6x6x6). If you are using wireless modems then you may want to build your constellation as high as you can | 6 blocks deep (6x6x6). If you are using wireless modems then you may want to build your constellation as high as you can | ||||||
| @@ -79,18 +78,16 @@ To hide Minecraft's debug screen, press <kbd>F3</kbd> again. | |||||||
| Create similar startup files for the other computers in your constellation, making sure to input the each computer's own | Create similar startup files for the other computers in your constellation, making sure to input the each computer's own | ||||||
| coordinates. | coordinates. | ||||||
| 
 | 
 | ||||||
| :::caution Modem messages come from the computer's position, not the modem's | > [Modem messages come from the computer's position, not the modem's][!WARNING] | ||||||
| Wireless modems transmit from the block that they are attached to *not* the block space that they occupy, the | > Wireless modems transmit from the block that they are attached to *not* the block space that they occupy, the | ||||||
| coordinates that you input into your GPS host should be the position of the computer and not the position of the modem. | > coordinates that you input into your GPS host should be the position of the computer and not the position of the modem. | ||||||
| ::: |  | ||||||
| 
 | 
 | ||||||
| Congratulations, your constellation is now fully set up! You can test it by placing another computer close by, placing a | Congratulations, your constellation is now fully set up! You can test it by placing another computer close by, placing a | ||||||
| wireless modem on it, and running the `gps locate` program (or calling the @{gps.locate} function). | wireless modem on it, and running the `gps locate` program (or calling the @{gps.locate} function). | ||||||
| 
 | 
 | ||||||
| :::info Why use Minecraft's coordinates? | > [Why use Minecraft's coordinates?][!INFO] | ||||||
| CC doesn't care if you use Minecraft's coordinate system, so long as all of the GPS hosts with overlapping ranges use | > CC doesn't care if you use Minecraft's coordinate system, so long as all of the GPS hosts with overlapping ranges use | ||||||
| the same reference point (requesting computers will get confused if hosts have different reference points). However, | > the same reference point (requesting computers will get confused if hosts have different reference points). However, | ||||||
| using MC's coordinate system does provide a nice standard to adopt server-wide. It also is consistent with how command | > using MC's coordinate system does provide a nice standard to adopt server-wide. It also is consistent with how command | ||||||
| computers get their location, they use MC's command system to get their block which returns that in MC's coordinate | > computers get their location, they use MC's command system to get their block which returns that in MC's coordinate | ||||||
| system. | > system. | ||||||
| ::: |  | ||||||
|   | |||||||
| @@ -189,10 +189,9 @@ for chunk in io.lines("data/example.dfpwm", 16 * 1024) do | |||||||
| end | end | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| :::note Confused? | > [Confused?][!NOTE] | ||||||
| Don't worry if you don't understand this example. It's quite advanced, and does use some ideas that this guide doesn't | > Don't worry if you don't understand this example. It's quite advanced, and does use some ideas that this guide doesn't | ||||||
| cover. That said, don't be afraid to ask on [GitHub Discussions] or [IRC] either! | > cover. That said, don't be afraid to ask on [GitHub Discussions] or [IRC] either! | ||||||
| ::: |  | ||||||
| 
 | 
 | ||||||
| It's worth noting that the examples of audio processing we've mentioned here are about manipulating the _amplitude_ of | It's worth noting that the examples of audio processing we've mentioned here are about manipulating the _amplitude_ of | ||||||
| the wave. If you wanted to modify the _frequency_ (for instance, shifting the pitch), things get rather more complex. | the wave. If you wanted to modify the _frequency_ (for instance, shifting the pitch), things get rather more complex. | ||||||
|   | |||||||
| @@ -16,19 +16,17 @@ rounded up to the nearest multiple of 0.05 seconds. If you are using coroutines | |||||||
| or the @{parallel|parallel API}, it will only pause execution of the current | or the @{parallel|parallel API}, it will only pause execution of the current | ||||||
| thread, not the whole program. | thread, not the whole program. | ||||||
|  |  | ||||||
| :::tip | > [!TIP] | ||||||
| Because sleep internally uses timers, it is a function that yields. This means | > Because sleep internally uses timers, it is a function that yields. This means | ||||||
| that you can use it to prevent "Too long without yielding" errors. However, as | > that you can use it to prevent "Too long without yielding" errors. However, as | ||||||
| the minimum sleep time is 0.05 seconds, it will slow your program down. | > the minimum sleep time is 0.05 seconds, it will slow your program down. | ||||||
| ::: |  | ||||||
|  |  | ||||||
| :::caution | > [!WARNING] | ||||||
| Internally, this function queues and waits for a timer event (using | > Internally, this function queues and waits for a timer event (using | ||||||
| @{os.startTimer}), however it does not listen for any other events. This means | > @{os.startTimer}), however it does not listen for any other events. This means | ||||||
| that any event that occurs while sleeping will be entirely discarded. If you | > that any event that occurs while sleeping will be entirely discarded. If you | ||||||
| need to receive events while sleeping, consider using @{os.startTimer|timers}, | > need to receive events while sleeping, consider using @{os.startTimer|timers}, | ||||||
| or the @{parallel|parallel API}. | > or the @{parallel|parallel API}. | ||||||
| ::: |  | ||||||
|  |  | ||||||
| @tparam number time The number of seconds to sleep for, rounded up to the | @tparam number time The number of seconds to sleep for, rounded up to the | ||||||
| nearest multiple of 0.05. | nearest multiple of 0.05. | ||||||
|   | |||||||
| @@ -12,7 +12,6 @@ | |||||||
|   /projects/core/src/test/resources/test-rom |   /projects/core/src/test/resources/test-rom | ||||||
|   /projects/web/src/mount) |   /projects/web/src/mount) | ||||||
|  |  | ||||||
|  |  | ||||||
| (doc | (doc | ||||||
|   ; Also defined in projects/web/build.gradle.kts |   ; Also defined in projects/web/build.gradle.kts | ||||||
|   (destination /projects/web/build/illuaminate) |   (destination /projects/web/build/illuaminate) | ||||||
| @@ -50,6 +49,7 @@ | |||||||
| (at / | (at / | ||||||
|   (linters |   (linters | ||||||
|     syntax:string-index |     syntax:string-index | ||||||
|  |     doc:docusaurus-admonition | ||||||
|  |  | ||||||
|     ;; It'd be nice to avoid this, but right now there's a lot of instances of |     ;; It'd be nice to avoid this, but right now there's a lot of instances of | ||||||
|     ;; it. |     ;; it. | ||||||
|   | |||||||
| @@ -21,10 +21,9 @@ import java.util.Set; | |||||||
| /** | /** | ||||||
|  * Modems allow you to send messages between computers over long distances. |  * Modems allow you to send messages between computers over long distances. | ||||||
|  * <p> |  * <p> | ||||||
|  * :::tip |  * > [!TIP] | ||||||
|  * Modems provide a fairly basic set of methods, which makes them very flexible but often hard to work with. The |  * > Modems provide a fairly basic set of methods, which makes them very flexible but often hard to work with. The | ||||||
|  * {@literal @}{rednet} API is built on top of modems, and provides a more user-friendly interface. |  * > {@literal @}{rednet} API is built on top of modems, and provides a more user-friendly interface. | ||||||
|  * ::: |  | ||||||
|  * <p> |  * <p> | ||||||
|  * ## Sending and receiving messages |  * ## Sending and receiving messages | ||||||
|  * Modems operate on a series of channels, a bit like frequencies on a radio. Any modem can send a message on a |  * Modems operate on a series of channels, a bit like frequencies on a radio. Any modem can send a message on a | ||||||
| @@ -198,9 +197,8 @@ public abstract class ModemPeripheral implements IPeripheral, PacketSender, Pack | |||||||
|      * Sends a modem message on a certain channel. Modems listening on the channel will queue a {@code modem_message} |      * Sends a modem message on a certain channel. Modems listening on the channel will queue a {@code modem_message} | ||||||
|      * event on adjacent computers. |      * event on adjacent computers. | ||||||
|      * <p> |      * <p> | ||||||
|      * :::note |      * > [!NOTE] | ||||||
|      * The channel does not need be open to send a message. |      * > The channel does not need be open to send a message. | ||||||
|      * ::: |  | ||||||
|      * |      * | ||||||
|      * @param channel      The channel to send messages on. |      * @param channel      The channel to send messages on. | ||||||
|      * @param replyChannel The channel that responses to this message should be sent on. This can be the same as |      * @param replyChannel The channel that responses to this message should be sent on. This can be the same as | ||||||
|   | |||||||
| @@ -80,9 +80,8 @@ public abstract class WiredModemPeripheral extends ModemPeripheral implements Wi | |||||||
|      * If this computer is attached to the network, it _will not_ be included in |      * If this computer is attached to the network, it _will not_ be included in | ||||||
|      * this list. |      * this list. | ||||||
|      * <p> |      * <p> | ||||||
|      * :::note |      * > [!NOTE] | ||||||
|      * This function only appears on wired modems. Check {@link #isWireless} returns false before calling it. |      * > This function only appears on wired modems. Check {@link #isWireless} returns false before calling it. | ||||||
|      * ::: |  | ||||||
|      * |      * | ||||||
|      * @param computer The calling computer. |      * @param computer The calling computer. | ||||||
|      * @return Remote peripheral names on the network. |      * @return Remote peripheral names on the network. | ||||||
| @@ -96,9 +95,8 @@ public abstract class WiredModemPeripheral extends ModemPeripheral implements Wi | |||||||
|     /** |     /** | ||||||
|      * Determine if a peripheral is available on this wired network. |      * Determine if a peripheral is available on this wired network. | ||||||
|      * <p> |      * <p> | ||||||
|      * :::note |      * > [!NOTE] | ||||||
|      * This function only appears on wired modems. Check {@link #isWireless} returns false before calling it. |      * > This function only appears on wired modems. Check {@link #isWireless} returns false before calling it. | ||||||
|      * ::: |  | ||||||
|      * |      * | ||||||
|      * @param computer The calling computer. |      * @param computer The calling computer. | ||||||
|      * @param name     The peripheral's name. |      * @param name     The peripheral's name. | ||||||
| @@ -113,9 +111,8 @@ public abstract class WiredModemPeripheral extends ModemPeripheral implements Wi | |||||||
|     /** |     /** | ||||||
|      * Get the type of a peripheral is available on this wired network. |      * Get the type of a peripheral is available on this wired network. | ||||||
|      * <p> |      * <p> | ||||||
|      * :::note |      * > [!NOTE] | ||||||
|      * This function only appears on wired modems. Check {@link #isWireless} returns false before calling it. |      * > This function only appears on wired modems. Check {@link #isWireless} returns false before calling it. | ||||||
|      * ::: |  | ||||||
|      * |      * | ||||||
|      * @param computer The calling computer. |      * @param computer The calling computer. | ||||||
|      * @param name     The peripheral's name. |      * @param name     The peripheral's name. | ||||||
| @@ -133,9 +130,8 @@ public abstract class WiredModemPeripheral extends ModemPeripheral implements Wi | |||||||
|     /** |     /** | ||||||
|      * Check a peripheral is of a particular type. |      * Check a peripheral is of a particular type. | ||||||
|      * <p> |      * <p> | ||||||
|      * :::note |      * > [!NOTE] | ||||||
|      * This function only appears on wired modems. Check {@link #isWireless} returns false before calling it. |      * > This function only appears on wired modems. Check {@link #isWireless} returns false before calling it. | ||||||
|      * ::: |  | ||||||
|      * |      * | ||||||
|      * @param computer The calling computer. |      * @param computer The calling computer. | ||||||
|      * @param name     The peripheral's name. |      * @param name     The peripheral's name. | ||||||
| @@ -154,9 +150,8 @@ public abstract class WiredModemPeripheral extends ModemPeripheral implements Wi | |||||||
|     /** |     /** | ||||||
|      * Get all available methods for the remote peripheral with the given name. |      * Get all available methods for the remote peripheral with the given name. | ||||||
|      * <p> |      * <p> | ||||||
|      * :::note |      * > [!NOTE] | ||||||
|      * This function only appears on wired modems. Check {@link #isWireless} returns false before calling it. |      * > This function only appears on wired modems. Check {@link #isWireless} returns false before calling it. | ||||||
|      * ::: |  | ||||||
|      * |      * | ||||||
|      * @param computer The calling computer. |      * @param computer The calling computer. | ||||||
|      * @param name     The peripheral's name. |      * @param name     The peripheral's name. | ||||||
| @@ -175,9 +170,8 @@ public abstract class WiredModemPeripheral extends ModemPeripheral implements Wi | |||||||
|     /** |     /** | ||||||
|      * Call a method on a peripheral on this wired network. |      * Call a method on a peripheral on this wired network. | ||||||
|      * <p> |      * <p> | ||||||
|      * :::note |      * > [!NOTE] | ||||||
|      * This function only appears on wired modems. Check {@link #isWireless} returns false before calling it. |      * > This function only appears on wired modems. Check {@link #isWireless} returns false before calling it. | ||||||
|      * ::: |  | ||||||
|      * |      * | ||||||
|      * @param computer  The calling computer. |      * @param computer  The calling computer. | ||||||
|      * @param context   The Lua context we're executing in. |      * @param context   The Lua context we're executing in. | ||||||
| @@ -205,9 +199,8 @@ public abstract class WiredModemPeripheral extends ModemPeripheral implements Wi | |||||||
|      * may be used by other computers on the network to wrap this computer as a |      * may be used by other computers on the network to wrap this computer as a | ||||||
|      * peripheral. |      * peripheral. | ||||||
|      * <p> |      * <p> | ||||||
|      * :::note |      * > [!NOTE] | ||||||
|      * This function only appears on wired modems. Check {@link #isWireless} returns false before calling it. |      * > This function only appears on wired modems. Check {@link #isWireless} returns false before calling it. | ||||||
|      * ::: |  | ||||||
|      * |      * | ||||||
|      * @return The current computer's name. |      * @return The current computer's name. | ||||||
|      * @cc.treturn string|nil The current computer's name on the wired network. |      * @cc.treturn string|nil The current computer's name on the wired network. | ||||||
|   | |||||||
| @@ -274,12 +274,11 @@ public abstract class SpeakerPeripheral implements IPeripheral { | |||||||
|      * and played back at 48kHz. If this buffer is full, this function will return {@literal false}. You should wait for |      * and played back at 48kHz. If this buffer is full, this function will return {@literal false}. You should wait for | ||||||
|      * a @{speaker_audio_empty} event before trying again. |      * a @{speaker_audio_empty} event before trying again. | ||||||
|      * <p> |      * <p> | ||||||
|      * :::note |      * > [!NOTE] | ||||||
|      * The speaker only buffers a single call to {@link #playAudio} at once. This means if you try to play a small |      * > The speaker only buffers a single call to {@link #playAudio} at once. This means if you try to play a small | ||||||
|      * number of samples, you'll have a lot of stutter. You should try to play as many samples in one call as possible |      * > number of samples, you'll have a lot of stutter. You should try to play as many samples in one call as possible | ||||||
|      * (up to 128×1024), as this reduces the chances of audio stuttering or halting, especially when the server or |      * > (up to 128×1024), as this reduces the chances of audio stuttering or halting, especially when the server or | ||||||
|      * computer is lagging. |      * > computer is lagging. | ||||||
|      * ::: |  | ||||||
|      * <p> |      * <p> | ||||||
|      * {@literal @}{speaker_audio} provides a more complete guide to using speakers |      * {@literal @}{speaker_audio} provides a more complete guide to using speakers | ||||||
|      * |      * | ||||||
|   | |||||||
| @@ -27,24 +27,22 @@ import java.util.Optional; | |||||||
|  * {@literal @}{turtle.down} move it up and down (as one might expect!). In order to move left or right, you first need |  * {@literal @}{turtle.down} move it up and down (as one might expect!). In order to move left or right, you first need | ||||||
|  * to turn the turtle using @{turtle.turnLeft}/@{turtle.turnRight} and then move forward or backwards. |  * to turn the turtle using @{turtle.turnLeft}/@{turtle.turnRight} and then move forward or backwards. | ||||||
|  * <p> |  * <p> | ||||||
|  * :::info |  * > [!INFO] | ||||||
|  * The name "turtle" comes from [Turtle graphics], which originated from the Logo programming language. Here you'd move |  * > The name "turtle" comes from [Turtle graphics], which originated from the Logo programming language. Here you'd | ||||||
|  * a turtle with various commands like "move 10" and "turn left", much like ComputerCraft's turtles! |  * > move a turtle with various commands like "move 10" and "turn left", much like ComputerCraft's turtles! | ||||||
|  * ::: |  | ||||||
|  * <p> |  * <p> | ||||||
|  * Moving a turtle (though not turning it) consumes *fuel*. If a turtle does not have any @{turtle.refuel|fuel}, it |  * Moving a turtle (though not turning it) consumes *fuel*. If a turtle does not have any @{turtle.refuel|fuel}, it | ||||||
|  * won't move, and the movement functions will return @{false}. If your turtle isn't going anywhere, the first thing to |  * won't move, and the movement functions will return @{false}. If your turtle isn't going anywhere, the first thing to | ||||||
|  * check is if you've fuelled your turtle. |  * check is if you've fuelled your turtle. | ||||||
|  * <p> |  * <p> | ||||||
|  * :::tip Handling errors |  * > [Handling errors][!TIP] | ||||||
|  * Many turtle functions can fail in various ways. For instance, a turtle cannot move forward if there's already a block |  * > Many turtle functions can fail in various ways. For instance, a turtle cannot move forward if there's already a | ||||||
|  * there. Instead of erroring, functions which can fail either return @{true} if they succeed, or @{false} and some |  * > block there. Instead of erroring, functions which can fail either return @{true} if they succeed, or @{false} and | ||||||
|  * error message if they fail. |  * > some error message if they fail. | ||||||
|  * <p> |  * > | ||||||
|  * Unexpected failures can often lead to strange behaviour. It's often a good idea to check the return values of these |  * > Unexpected failures can often lead to strange behaviour. It's often a good idea to check the return values of these | ||||||
|  * functions, or wrap them in @{assert} (for instance, use `assert(turtle.forward())` rather than `turtle.forward()`), |  * > functions, or wrap them in @{assert} (for instance, use `assert(turtle.forward())` rather than `turtle.forward()`), | ||||||
|  * so the program doesn't misbehave. |  * > so the program doesn't misbehave. | ||||||
|  * ::: |  | ||||||
|  * <p> |  * <p> | ||||||
|  * ## Turtle upgrades |  * ## Turtle upgrades | ||||||
|  * While a normal turtle can move about the world and place blocks, its functionality is limited. Thankfully, turtles |  * While a normal turtle can move about the world and place blocks, its functionality is limited. Thankfully, turtles | ||||||
|   | |||||||
| @@ -37,10 +37,9 @@ import java.util.function.Function; | |||||||
|  * {@link #copy} and {@link #delete}.</li> |  * {@link #copy} and {@link #delete}.</li> | ||||||
|  * </ul> |  * </ul> | ||||||
|  * <p> |  * <p> | ||||||
|  * :::note |  * > [!NOTE] | ||||||
|  * All functions in the API work on absolute paths, and do not take the @{shell.dir|current directory} into account. |  * > All functions in the API work on absolute paths, and do not take the @{shell.dir|current directory} into account. | ||||||
|  * You can use @{shell.resolve} to convert a relative path into an absolute one. |  * > You can use @{shell.resolve} to convert a relative path into an absolute one. | ||||||
|  * ::: |  | ||||||
|  * <p> |  * <p> | ||||||
|  * ## Mounts |  * ## Mounts | ||||||
|  * While a computer can only have one hard drive and filesystem, other filesystems may be "mounted" inside it. For |  * While a computer can only have one hard drive and filesystem, other filesystems may be "mounted" inside it. For | ||||||
|   | |||||||
| @@ -353,13 +353,12 @@ public class OSAPI implements ILuaAPI { | |||||||
|      * * If called with {@code local}, returns the number of milliseconds since 1 |      * * If called with {@code local}, returns the number of milliseconds since 1 | ||||||
|      * January 1970 in the server's local timezone. |      * January 1970 in the server's local timezone. | ||||||
|      * <p> |      * <p> | ||||||
|      * :::info |      * > [!INFO] | ||||||
|      * The {@code ingame} time zone assumes that one Minecraft day consists of 86,400,000 |      * > The {@code ingame} time zone assumes that one Minecraft day consists of 86,400,000 | ||||||
|      * milliseconds. Since one in-game day is much faster than a real day (20 minutes), this |      * > milliseconds. Since one in-game day is much faster than a real day (20 minutes), this | ||||||
|      * will change quicker than real time - one real second is equal to 72000 in-game |      * > will change quicker than real time - one real second is equal to 72000 in-game | ||||||
|      * milliseconds. If you wish to convert this value to real time, divide by 72000; to |      * > milliseconds. If you wish to convert this value to real time, divide by 72000; to | ||||||
|      * convert to ticks (where a day is 24000 ticks), divide by 3600. |      * > convert to ticks (where a day is 24000 ticks), divide by 3600. | ||||||
|      * ::: |  | ||||||
|      * |      * | ||||||
|      * @param args The locale to get the milliseconds for. Defaults to {@code ingame} if not set. |      * @param args The locale to get the milliseconds for. Defaults to {@code ingame} if not set. | ||||||
|      * @return The milliseconds since the epoch depending on the selected locale. |      * @return The milliseconds since the epoch depending on the selected locale. | ||||||
|   | |||||||
| @@ -5,10 +5,9 @@ | |||||||
| --[[- Execute [Minecraft commands][mc] and gather data from the results from | --[[- Execute [Minecraft commands][mc] and gather data from the results from | ||||||
| a command computer. | a command computer. | ||||||
|  |  | ||||||
| :::note | > [!NOTE] | ||||||
| This API is only available on Command computers. It is not accessible to normal | > This API is only available on Command computers. It is not accessible to normal | ||||||
| players. | > players. | ||||||
| ::: |  | ||||||
|  |  | ||||||
| While one may use @{commands.exec} directly to execute a command, the | While one may use @{commands.exec} directly to execute a command, the | ||||||
| commands API also provides helper methods to execute every command. For | commands API also provides helper methods to execute every command. For | ||||||
|   | |||||||
| @@ -9,10 +9,9 @@ locally attached drive, specify “side” as one of the six sides (e.g. `left`) | |||||||
| use a remote disk drive, specify its name as printed when enabling its modem | use a remote disk drive, specify its name as printed when enabling its modem | ||||||
| (e.g. `drive_0`). | (e.g. `drive_0`). | ||||||
|  |  | ||||||
| :::tip | > [!TIP] | ||||||
| All computers (except command computers), turtles and pocket computers can be | > All computers (except command computers), turtles and pocket computers can be | ||||||
| placed within a disk drive to access it's internal storage like a disk. | > placed within a disk drive to access it's internal storage like a disk. | ||||||
| ::: |  | ||||||
|  |  | ||||||
| @module disk | @module disk | ||||||
| @since 1.2 | @since 1.2 | ||||||
|   | |||||||
| @@ -12,11 +12,10 @@ and the fourth should be either above or below the other three. The three in a | |||||||
| plane should not be in a line with each other. You can set up hosts using the | plane should not be in a line with each other. You can set up hosts using the | ||||||
| gps program. | gps program. | ||||||
|  |  | ||||||
| :::note | > [!NOTE] | ||||||
| When entering in the coordinates for the host you need to put in the `x`, `y`, | > When entering in the coordinates for the host you need to put in the `x`, `y`, | ||||||
| and `z` coordinates of the block that the modem is connected to, not the modem. | > and `z` coordinates of the block that the modem is connected to, not the modem. | ||||||
| All modem distances are measured from the block that the modem is placed on. | > All modem distances are measured from the block that the modem is placed on. | ||||||
| ::: |  | ||||||
|  |  | ||||||
| Also note that you may choose which axes x, y, or z refers to - so long as your | Also note that you may choose which axes x, y, or z refers to - so long as your | ||||||
| systems have the same definition as any GPS servers that're in range, it works | systems have the same definition as any GPS servers that're in range, it works | ||||||
|   | |||||||
| @@ -17,25 +17,23 @@ etc) can safely be used in one without affecting the event queue accessed by | |||||||
| the other. | the other. | ||||||
|  |  | ||||||
|  |  | ||||||
| :::caution | > [!WARNING] | ||||||
| When using this API, be careful to pass the functions you want to run in | > When using this API, be careful to pass the functions you want to run in | ||||||
| parallel, and _not_ the result of calling those functions. | > parallel, and _not_ the result of calling those functions. | ||||||
|  | > | ||||||
| For instance, the following is correct: | > For instance, the following is correct: | ||||||
|  | > | ||||||
| ```lua | > ```lua | ||||||
| local function do_sleep() sleep(1) end | > local function do_sleep() sleep(1) end | ||||||
| parallel.waitForAny(do_sleep, rednet.receive) | > parallel.waitForAny(do_sleep, rednet.receive) | ||||||
| ``` | > ``` | ||||||
|  | > | ||||||
| but the following is **NOT**: | > but the following is **NOT**: | ||||||
|  | > | ||||||
| ```lua | > ```lua | ||||||
| local function do_sleep() sleep(1) end | > local function do_sleep() sleep(1) end | ||||||
| parallel.waitForAny(do_sleep(), rednet.receive) | > parallel.waitForAny(do_sleep(), rednet.receive) | ||||||
| ``` | > ``` | ||||||
|  |  | ||||||
| ::: |  | ||||||
|  |  | ||||||
| @module parallel | @module parallel | ||||||
| @since 1.2 | @since 1.2 | ||||||
|   | |||||||
| @@ -35,11 +35,10 @@ Once you have the name of a peripheral, you can call functions on it using the | |||||||
| @{peripheral.call} function. This takes the name of our peripheral, the name of | @{peripheral.call} function. This takes the name of our peripheral, the name of | ||||||
| the function we want to call, and then its arguments. | the function we want to call, and then its arguments. | ||||||
|  |  | ||||||
| :::info | > [!INFO] | ||||||
| Some bits of the peripheral API call peripheral functions *methods* instead | > Some bits of the peripheral API call peripheral functions *methods* instead | ||||||
| (for example, the @{peripheral.getMethods} function). Don't worry, they're the | > (for example, the @{peripheral.getMethods} function). Don't worry, they're the | ||||||
| same thing! | > same thing! | ||||||
| ::: |  | ||||||
|  |  | ||||||
| Let's say we have a monitor above our computer (and so "top") and want to | Let's say we have a monitor above our computer (and so "top") and want to | ||||||
| @{monitor.write|write some text to it}. We'd write the following: | @{monitor.write|write some text to it}. We'd write the following: | ||||||
|   | |||||||
| @@ -16,15 +16,14 @@ Once rednet is opened, you can send messages using @{rednet.send} and receive | |||||||
| them using @{rednet.receive}. It's also possible to send a message to _every_ | them using @{rednet.receive}. It's also possible to send a message to _every_ | ||||||
| rednet-using computer using @{rednet.broadcast}. | rednet-using computer using @{rednet.broadcast}. | ||||||
|  |  | ||||||
| :::caution Network security | > [Network security][!WARNING] | ||||||
|  | > | ||||||
| While rednet provides a friendly way to send messages to specific computers, it | > While rednet provides a friendly way to send messages to specific computers, it | ||||||
| doesn't provide any guarantees about security. Other computers could be | > doesn't provide any guarantees about security. Other computers could be | ||||||
| listening in to your messages, or even pretending to send messages from other computers! | > listening in to your messages, or even pretending to send messages from other computers! | ||||||
|  | > | ||||||
| If you're playing on a multi-player server (or at least one where you don't | > If you're playing on a multi-player server (or at least one where you don't | ||||||
| trust other players), it's worth encrypting or signing your rednet messages. | > trust other players), it's worth encrypting or signing your rednet messages. | ||||||
| ::: |  | ||||||
|  |  | ||||||
| ## Protocols and hostnames | ## Protocols and hostnames | ||||||
| Several rednet messages accept "protocol"s - simple string names describing what | Several rednet messages accept "protocol"s - simple string names describing what | ||||||
|   | |||||||
| @@ -8,10 +8,9 @@ When a computer starts, it reads the current value of settings from the | |||||||
| `/.settings` file. These values then may be @{settings.get|read} or | `/.settings` file. These values then may be @{settings.get|read} or | ||||||
| @{settings.set|modified}. | @{settings.set|modified}. | ||||||
|  |  | ||||||
| :::caution | > [!WARNING] | ||||||
| Calling @{settings.set} does _not_ update the settings file by default. You | > Calling @{settings.set} does _not_ update the settings file by default. You | ||||||
| _must_ call @{settings.save} to persist values. | > _must_ call @{settings.save} to persist values. | ||||||
| ::: |  | ||||||
|  |  | ||||||
| @module settings | @module settings | ||||||
| @since 1.78 | @since 1.78 | ||||||
| @@ -113,10 +112,9 @@ end | |||||||
|  |  | ||||||
| --[[- Set the value of a setting. | --[[- Set the value of a setting. | ||||||
|  |  | ||||||
| :::caution | > [!WARNING] | ||||||
| Calling @{settings.set} does _not_ update the settings file by default. You | > Calling @{settings.set} does _not_ update the settings file by default. You | ||||||
| _must_ call @{settings.save} to persist values. | > _must_ call @{settings.save} to persist values. | ||||||
| ::: |  | ||||||
|  |  | ||||||
| @tparam string name The name of the setting to set | @tparam string name The name of the setting to set | ||||||
| @param value The setting's value. This cannot be `nil`, and must be | @param value The setting's value. This cannot be `nil`, and must be | ||||||
|   | |||||||
| @@ -95,10 +95,9 @@ end | |||||||
| The returned encoder is itself a function. This function accepts a table of amplitude data between -128 and 127 and | The returned encoder is itself a function. This function accepts a table of amplitude data between -128 and 127 and | ||||||
| returns the encoded DFPWM data. | returns the encoded DFPWM data. | ||||||
|  |  | ||||||
| :::caution Reusing encoders | > [Reusing encoders][!WARNING] | ||||||
| Encoders have lots of internal state which tracks the state of the current stream. If you reuse an encoder for multiple | > Encoders have lots of internal state which tracks the state of the current stream. If you reuse an encoder for multiple | ||||||
| streams, or use different encoders for the same stream, the resulting audio may not sound correct. | > streams, or use different encoders for the same stream, the resulting audio may not sound correct. | ||||||
| ::: |  | ||||||
|  |  | ||||||
| @treturn function(pcm: { number... }):string The encoder function | @treturn function(pcm: { number... }):string The encoder function | ||||||
| @see encode A helper function for encoding an entire file of audio at once. | @see encode A helper function for encoding an entire file of audio at once. | ||||||
| @@ -138,10 +137,9 @@ end | |||||||
| The returned decoder is itself a function. This function accepts a string and returns a table of amplitudes, each value | The returned decoder is itself a function. This function accepts a string and returns a table of amplitudes, each value | ||||||
| between -128 and 127. | between -128 and 127. | ||||||
|  |  | ||||||
| :::caution Reusing decoders | > [Reusing decoders][!WARNING] | ||||||
| Decoders have lots of internal state which tracks the state of the current stream. If you reuse an decoder for multiple | > Decoders have lots of internal state which tracks the state of the current stream. If you reuse an decoder for | ||||||
| streams, or use different decoders for the same stream, the resulting audio may not sound correct. | > multiple streams, or use different decoders for the same stream, the resulting audio may not sound correct. | ||||||
| ::: |  | ||||||
|  |  | ||||||
| @treturn function(dfpwm: string):{ number... } The encoder function | @treturn function(dfpwm: string):{ number... } The encoder function | ||||||
| @see decode A helper function for decoding an entire file of audio at once. | @see decode A helper function for decoding an entire file of audio at once. | ||||||
|   | |||||||
| @@ -4,10 +4,9 @@ | |||||||
|  |  | ||||||
| --[[- A pretty-printer for Lua errors. | --[[- A pretty-printer for Lua errors. | ||||||
|  |  | ||||||
| :::warning | > [!DANGER] | ||||||
| This is an internal module and SHOULD NOT be used in your own code. It may | > This is an internal module and SHOULD NOT be used in your own code. It may | ||||||
| be removed or changed at any time. | > be removed or changed at any time. | ||||||
| ::: |  | ||||||
|  |  | ||||||
| This consumes a list of messages and "annotations" and displays the error to the | This consumes a list of messages and "annotations" and displays the error to the | ||||||
| terminal. | terminal. | ||||||
|   | |||||||
| @@ -4,10 +4,9 @@ | |||||||
|  |  | ||||||
| --[[- Internal tools for working with errors. | --[[- Internal tools for working with errors. | ||||||
|  |  | ||||||
| :::warning | > [!DANGER] | ||||||
| This is an internal module and SHOULD NOT be used in your own code. It may | > This is an internal module and SHOULD NOT be used in your own code. It may | ||||||
| be removed or changed at any time. | > be removed or changed at any time. | ||||||
| ::: |  | ||||||
|  |  | ||||||
| @local | @local | ||||||
| ]] | ]] | ||||||
|   | |||||||
| @@ -4,10 +4,9 @@ | |||||||
|  |  | ||||||
| --[[- Upload a list of files, as received by the @{event!file_transfer} event. | --[[- Upload a list of files, as received by the @{event!file_transfer} event. | ||||||
|  |  | ||||||
| :::warning | > [!DANGER] | ||||||
| This is an internal module and SHOULD NOT be used in your own code. It may | > This is an internal module and SHOULD NOT be used in your own code. It may | ||||||
| be removed or changed at any time. | > be removed or changed at any time. | ||||||
| ::: |  | ||||||
|  |  | ||||||
| @local | @local | ||||||
| ]] | ]] | ||||||
|   | |||||||
| @@ -4,10 +4,9 @@ | |||||||
|  |  | ||||||
| --[[- The error messages reported by our lexer and parser. | --[[- The error messages reported by our lexer and parser. | ||||||
|  |  | ||||||
| :::warning | > [!DANGER] | ||||||
| This is an internal module and SHOULD NOT be used in your own code. It may | > This is an internal module and SHOULD NOT be used in your own code. It may | ||||||
| be removed or changed at any time. | > be removed or changed at any time. | ||||||
| ::: |  | ||||||
|  |  | ||||||
| This provides a list of factory methods which take source positions and produce | This provides a list of factory methods which take source positions and produce | ||||||
| appropriate error messages targeting that location. These error messages can | appropriate error messages targeting that location. These error messages can | ||||||
|   | |||||||
| @@ -4,10 +4,9 @@ | |||||||
|  |  | ||||||
| --[[- The main entrypoint to our Lua parser | --[[- The main entrypoint to our Lua parser | ||||||
|  |  | ||||||
| :::warning | > [!DANGER] | ||||||
| This is an internal module and SHOULD NOT be used in your own code. It may | > This is an internal module and SHOULD NOT be used in your own code. It may | ||||||
| be removed or changed at any time. | > be removed or changed at any time. | ||||||
| ::: |  | ||||||
|  |  | ||||||
| @local | @local | ||||||
| ]] | ]] | ||||||
|   | |||||||
| @@ -4,10 +4,9 @@ | |||||||
|  |  | ||||||
| --[[- A lexer for Lua source code. | --[[- A lexer for Lua source code. | ||||||
|  |  | ||||||
| :::warning | > [!DANGER] | ||||||
| This is an internal module and SHOULD NOT be used in your own code. It may | > This is an internal module and SHOULD NOT be used in your own code. It may | ||||||
| be removed or changed at any time. | > be removed or changed at any time. | ||||||
| ::: |  | ||||||
|  |  | ||||||
| This module provides utilities for lexing Lua code, returning tokens compatible | This module provides utilities for lexing Lua code, returning tokens compatible | ||||||
| with @{cc.internal.syntax.parser}. While all lexers are roughly the same, there | with @{cc.internal.syntax.parser}. While all lexers are roughly the same, there | ||||||
|   | |||||||
| @@ -4,10 +4,9 @@ | |||||||
|  |  | ||||||
| --[[- A parser for Lua programs and expressions. | --[[- A parser for Lua programs and expressions. | ||||||
|  |  | ||||||
| :::warning | > [!DANGER] | ||||||
| This is an internal module and SHOULD NOT be used in your own code. It may | > This is an internal module and SHOULD NOT be used in your own code. It may | ||||||
| be removed or changed at any time. | > be removed or changed at any time. | ||||||
| ::: |  | ||||||
|  |  | ||||||
| Most of the code in this module is automatically generated from the Lua grammar, | Most of the code in this module is automatically generated from the Lua grammar, | ||||||
| hence being mostly unreadable! | hence being mostly unreadable! | ||||||
|   | |||||||
| @@ -15,10 +15,9 @@ import net.minecraftforge.energy.IEnergyStorage; | |||||||
|  * <p> |  * <p> | ||||||
|  * This works with energy storage blocks, as well as generators and machines which consume energy. |  * This works with energy storage blocks, as well as generators and machines which consume energy. | ||||||
|  * <p> |  * <p> | ||||||
|  * :::note |  * > [!NOTE] | ||||||
|  * Due to limitations with Forge's energy API, it is not possible to measure throughput (i.e. RF |  * > Due to limitations with Forge's energy API, it is not possible to measure throughput (i.e. RF | ||||||
|  * used/generated per tick). |  * > used/generated per tick). | ||||||
|  * ::: |  | ||||||
|  * |  * | ||||||
|  * @cc.module energy_storage |  * @cc.module energy_storage | ||||||
|  * @cc.since 1.94.0 |  * @cc.since 1.94.0 | ||||||
|   | |||||||
| @@ -102,12 +102,11 @@ public class InventoryMethods implements GenericPeripheral { | |||||||
|      * recommended to print it out using @{textutils.serialize} or in the Lua |      * recommended to print it out using @{textutils.serialize} or in the Lua | ||||||
|      * REPL, to explore what is available. |      * REPL, to explore what is available. | ||||||
|      * <p> |      * <p> | ||||||
|      * :::info Deprecated fields |      * > [Deprecated fields][!INFO] | ||||||
|      * Older versions of CC: Tweaked exposed an {@code itemGroups} field, listing the |      * > Older versions of CC: Tweaked exposed an {@code itemGroups} field, listing the | ||||||
|      * creative tabs an item was available under. This information is no longer available on |      * > creative tabs an item was available under. This information is no longer available on | ||||||
|      * more recent versions of the game, and so this field will always be empty. Do not use this |      * > more recent versions of the game, and so this field will always be empty. Do not use this | ||||||
|      * field in new code! |      * > field in new code! | ||||||
|      * ::: |  | ||||||
|      * |      * | ||||||
|      * @param inventory The current inventory. |      * @param inventory The current inventory. | ||||||
|      * @param slot      The slot to get information about. |      * @param slot      The slot to get information about. | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Jonathan Coates
					Jonathan Coates