Package-level declarations
Types
Just returns the value; expects the value to be already registered elsewhere.
ValueGroup.float registered to the submodule directly.
Stores some data used to construct messages. The id, when the message is sent from a client object, should follow the pattern ObjectName#UniqueString to avoid duplicates.
Does nothing; Has no value.
Provides a ranged value to a submodule. This has the advantage that the value can be either registered in the module or in the submodule.
Represents an operation that does not return a result and can only be executed once when canExecute returns true. This is protected, so all future calls won't execute the actual action.
Manages things like ModuleScaffold's silent mode. Not thread safe, please only use this on the main-thread of minecraft
Global minecraft timer
Properties
Both 1.20.3 and 1.20.4 use protocol 765, so we can use this as a default
1.21.4 client + 1.8 server can block with sword, but the net.minecraft.world.item.ItemStack has no net.minecraft.core.component.DataComponents.BLOCKS_ATTACKS
Since 1.21.5 anything can be used to blocking
Since 1.21.6 the ServerboundPlayerCommandPacket.Action removed 2 entries for sneaking
Since 1.21.9 the byte format of net.minecraft.world.phys.Vec3 have been rewritten with net.minecraft.network.LpVec3.
Offhand cannot be used as a SWAP target in any container on 1.15.2 and below.
Since 26.1 net.minecraft.network.protocol.game.ServerboundInteractPacket has only one mode with entity and relative position (previous INTERACT_AT).
Functions
Adds a message and assigns the ID to it.
Adds a new chat message.
Creates text with a color gradient between two colors.
Generates 16 char long names in this format: (x = random separator character (0-9_))
Removes all messages with the given ID.