@@ -3,35 +3,41 @@ title: "Machine<wbr />Lib"
33subtitle : Library mod for Galacticraft
44date : 2022-03-05T09:46:52-08:00
55icon : /image/machinelib.png
6- Description : |
6+ description : |
77 A library for Minecraft mods that simplifies the implementation of complex blocks that process resources.
88repository : https://github.com/TeamGalacticraft/MachineLib
9- heroType : has-background-light-soft
109languages :
1110 - java
1211 - gradle
1312---
1413
15- This library/mod aims to reduce the amount of boilerplate code required to implement blocks with inventories and menus.
16-
1714## About
15+ MachineLib aims to reduce the amount of boilerplate code required to implement complicated "machine" blocks
16+ that interact with items, fluids and energy.
1817
1918Before MachineLib existed, Galacticraft used [ UniversalComponents] ( https://github.com/CottonMC/UniversalComponents )
20- to handle inventories, then [ LibBlockAttributes] ( https://github.com/AlexIIL/LibBlockAttributes ) .
21- When we were stuck waiting for these libraries to update,
19+ to handle inventories, before transitioning to [ LibBlockAttributes] ( https://github.com/AlexIIL/LibBlockAttributes ) .
2220I decided to try and make my own implementation using the newly standardized
23- [ transfer api] ( https://github.com/FabricMC/fabric/pull/1553 ) , and created MachineLib.
21+ [ transfer api] ( https://github.com/FabricMC/fabric/pull/1553 ) ,
22+ and created this project.
23+ MachineLib is attempts to take a "batteries-included" approach,
24+ with tight integration between the storage and block implementations with a focus on developer ergonomics.
2425
25- ## Features
2626
27- * Builder-style resource storage (inventory) creation
28- * Slot resource filtering
29- * Define slot locations in one place
30- * Define acceptable external block interactions and player interactions by setting a slot's type
31- * Comes with a base ` BlockEntity ` implementation
32- * Supports player-configurable resource I/O interactions with adjacent blocks
33- * Minecraft redstone (de)activation
34- * Supports storage of items, fluids and energy
35- * Additional utilities for blocks dealing with Minecraft's recipe system
36- * Comes with extensible ` GameTest ` s
37- * Can automatically verify machine functionality
27+ ## Features
28+ * Simplified builder-style resource storage (inventory) creation
29+ * Define storage formats and limits in one place
30+ * DRY - prevents repetition in the ` BlockEntity ` , ` Menu ` , and ` Screen `
31+ * Context-aware slot resource filtering
32+ * Easily treat players and automated/external slot changes separately
33+ * Define acceptable external block interactions and player interactions at the slot level
34+ * Machine blocks have extra features out of the box
35+ * Player-configurable resource I/O interactions with adjacent blocks
36+ * Dynamic model generation reflects port changes in-world
37+ * Comes with a built-in GUI to manage the configuration
38+ * Push/pull transfer automatically handed based on selected ports
39+ * Automatic (de)activation with Minecraft redstone signals
40+ * Extended menu sychronization system
41+ * No longer constrained to pure ` int ` synchronization
42+ * Comes with an extensible ` GameTest ` framework
43+ * Allows for full in-world testing of complicated machine setups
0 commit comments