-
Notifications
You must be signed in to change notification settings - Fork 17
Lambda: Software Requirements Specification
The purpose of this document is to outline the requirements for the development of Lambda, a Minecraft Utility mod written in Kotlin. Lambda aims to provide advanced automation and utility features for Minecraft gameplay. It will be built using the Architectury library, enabling development for both Fabric and Forge modding platforms. This document will define the functional and non-functional requirements, as well as the overall architecture and features of Lambda.
- Lambda shall support Minecraft version 1.19.4 and any subsequent versions.
- Prototype development will be done on version 1.20.4.
- Lambda shall be highly optimized for efficient implementation and execution of complex automation tasks.
- Lambda shall focus on relevant features.
The event bus shall support both cancelable and non-cancelable events. Cancelable events allow listeners to prevent further propagation of the event, while non-cancelable events do not.
Any class shall be able to listen to any event without restrictions.
Listeners should have the ability to set priority levels, with higher values indicating higher priority. This prioritization determines the sequence in which listeners are executed when handling events, ensuring that those with higher priority are processed before those with lower priority.
The event bus shall provide a way to view the registered listeners along with their priorities, allowing developers to inspect and manage event handling.
It shall support synchronous events that provide immediate callback information after posting. This is particularly important where suspending functions could block the game thread or are not allowed in the context, such as mixins.
For non-cancelable events with no response feedback, asynchronous notification of subscribers shall be supported. However, this shall only be allowed if subscribers are only reading Minecraft-related data to prevent race conditions.
Developers shall be provided with clear documentation or mechanisms to determine on which thread the listener will be invoked. This is essential for managing concurrency and ensuring thread safety.
- Lambda shall provide various modules such as flight (enabling player flight), autoeat (automatically eating food), velocity (modifying player knockback), etc.
- Modules shall be enabled or disabled using keybinds defined in the module settings.
- Lambda shall support linear programming of tasks, allowing for task state control on dedicated threads, enabling suspension in sequenced actions.
- Interfaces shall be responsive when resizing the window.
- Lambda shall include a graphical user interface accessible by pressing the default key "Y".
- The GUI shall feature lists of different categories containing modules for easy navigation.
- The GUI should be implementable by a build pattern on an abstract level.
- Configurable with grid snapping.
- Lambda shall include a HUD that is fully customizable.
- The HUD has an easy to configure edit mode.
- Configurable with grid snapping.
- Lambda shall be capable of saving configurations of modules and settings.
- It shall allow for the management of different configurations during runtime.
- Lambda shall have a fabric-specific and forge-specific entry point.
- It shall maintain a common project folder structure to abstract Minecraft integration through mixins.
- Lambda shall be lightweight and have minimal impact on game performance.
- Lambda shall operate reliably under various gameplay conditions, with robust error handling and recovery mechanisms.
- The user interface of Lambda shall be intuitive and user-friendly, ensuring ease of use for players.
- Lambda shall be compatible with other popular mods and modding frameworks within the Minecraft ecosystem.
- Lambda shall not compromise the integrity and security of Minecraft gameplay or the user's system.
- Lambda development shall adhere to the terms and conditions set forth by Mojang AB for Minecraft modding.
- The mod shall comply with the usage policies of Fabric and Forge modding platforms.
- Lambda shall be developed as open source project bound to the GNU General Public License v3.0
- Architectury: A modding framework that merges the mappings for fabric and forge to allow support for multiple mod loaders (e.g.: Quilt).
- Fabric: A modding framework for Minecraft that allows developers to create mods compatible with the Fabric Loader.
- Forge: Another modding framework for Minecraft, providing a platform for mod development and compatibility with the Forge Mod Loader.
- Mixins: A library for simple and efficient code injection into Java class files, commonly used in Minecraft modding.
| Version | Date | Description | Author |
|---|---|---|---|
| 1.0 | 2024-02-27 | Initial draft | Constructor |
This Software Requirements Specification (SRS) outlines the necessary features and specifications for the development of Lambda. It serves as a guide for the development team to ensure the successful implementation of the mod according to the defined requirements.