Custom Machinery
make your dream machine come true
Did you ever been in the situation where, when creating your awesome modpack, you wanted to add a custom recipe but no available machine in your pack match what you want ?
Like "I want a machine that takes 3 items, 5 differents fluids and some energy to create another item" but no machine can do that.
Or the case when you found a mod that add a machine that can fit your needs but the mod also add tons of stuff that you don't want in your pack.
Well this mod let you create your own machines using datapacks and add them in the game.
You can customise everything about your custom machine, from the appearance (model, textures, sounds, lightning, custom gui) to the functionality (how many inputs and outputs, their type and capacity) and of course you can add your own recipes that will be processed by the machine.
Currently a custom machine can :
- Have the appearance you want (item, block, or even a custom model).
- Have differents appearances based on it's status (idle/running/errored/paused).
- Emit light based on if the machine is processing a recipe.
- Play a sound when the machine is processing a recipe.
- Contains FE (Forge Energy, compatible with RF)
- Contains any fluid, you decide the number of internal fluid tanks, their capacity and max input and output.
- Contains any item, you decide the number of internal item slots.
- Have a custom GUI when you click on the machine, where you can see the contents of the machine and the progress of the recipe.
- Pause based on a redstone signal (configurable in the machine json)
- Emit a redstone signal based on it's status (also configurable in the machine json)
- Receive custom defined upgrades that change the processing of recipes (inputs/outputs/speed)
- Be configured to allow input or outputs of energy, items and fluid for each slot/tank/buffer for each side separately.
Currently a custom machine recipe can :
- Consume or produce FE (Forge Energy, compatible with RF) on a per-tick basis or in one time.
- Consume or produce any fluid on a per-tick basis or in one time, works with fluid tags.
- Consume or produce any item, works with item tags. Support NBT and durability.
- Process a recipe only at a certain time of the Minecraft world day.
- Process a recipe only at a certain world position, biome or dimension.
- Use a command when a recipe start, is processing or finish.
- Require the usage of a fuel item to burn (like the furnace).
- Consume or produce FE, fluids, items and use commands with a probablity (chance to be consumed/produced).
- Give effects to nearby mobs.
- Process a recipe only under a specific weather.
- Process a recipe only when the machine receive a specific redstone signal.
- Check for nearby entities, consume their health points or kill them.
- Check for a specific sky/block light level.
- Check/place/replace/break/destroy nearby blocks.
- Require a complex structure to be formed around the machine.
- Output items based on a loot table file.
- Drop or consume items on ground.
- Process Crafttweaker and KubeJS scripts.
You can find some examples of working custom machines here or download the Test Datapack.
You can download the Test Resourcepack to see how a custom json model can be applied to a machine (the "stone generator" in this example)
All of this can be made using a json file in a datapack, and all changes to this file can ba applied in-game with the /reload command, no reboot of the game are needed.
This mod comes with a full compatibility with JEI and The One Probe and the usage of these mods are heavily advised to use Custom Machinery in the best conditions.
This mod include complete Crafttweaker and KubeJS support for creating recipes and upgrades.
The Fabric version requires Reborn Core
Wiki : All info you may need to make your custom machines can be found on the wiki : https://frinn.gitbook.io/custom-machinery-1.18/
Issues : If you find any bugs or if you want to suggest a new feature or functionality : https://github.com/Frinn38/Custom-Machinery/issues
Discord : For questions or support, join the Discord Server : https://discord.gg/dw9tjY4eKY
License : This mod is licensed under the GNU LESSER GENERAL PUBLIC LICENSE you are free to use this mod in any modpack.
All Versions
+ Add Version| Name | Game version | Platforms | Published | Downloads | Actions |
|---|---|---|---|---|---|
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 |
### BugFix :
- Fix loot table requirement not working after last update [#167](https://github.com/Frinn38/Custom-Machinery/issues/167).
- Fix KubeJS transform craft result event not being called when machine inventory changes.
- Fix KubeJS transformItem function not working for modifying the item.
- Added
CustommachineryEvents.transformItem()KubeJS event to modify the output item. - See more on the [wiki](https://frinn.gitbook.io/custom-machinery-1.21/mod-integrations/kubejs/recipes/item-transform).
### Additions :
- Add KubeJS event for transforming craft recipe result item.
- See more on the [wiki](https://frinn.gitbook.io/custom-machinery-1.21/mod-integrations/kubejs/recipes#transform-craft-recipe-result).
### Additions :
- Allows for item input and output requirements to take several slots id.
- The list of specified slots act as a whitelist.
- JSON syntax is
"slots": ["slot1", "slot2"]inside of the item requirement. - KubeJS syntax is
.requireItem("item", ["slot1", "slot2"], same for.produceItem,.transformItem,.requireItemFilterand the durability requirement. - Specifying a unique slot or no slots at all still works the same.
- Allows for fluid input and output requirements to take several tanks id.
- The list of specified tanks act as a whitelist.
- JSON syntax is
"tanks": ["tank1", "tank2"]inside of the fluid requirement. - KubeJS syntax is
.requireFluid("fluid", ["tank1", "tank2"], same for.produceFluidand the per-tick variants. - Specifying a unique tank or no tanks at all still works the same.
- Allow for button requirement to take several button ids.
- The list of specified buttons act as a whitelist.
- JSON syntax is
"ids": ["button1", "button2"]inside of the button requirement. - KubeJS syntax is
.requireButtonPressed(["button1", "button2"), same for.requireButtonReleased. - Specifying a unique button id still works the same.
### BugFix :
- Fix custom buckets can't be emptied into fluid tanks in machine gui.
### BugFix :
- Fix crash when selecting "models" in machine appearance editor. [#164](https://github.com/Frinn38/Custom-Machinery/issues/164)
- Try to fix upgrades not working on first load. [#165](https://github.com/Frinn38/Custom-Machinery/issues/165)
### BugFix :
- Fix produceItem sometimes gives non-stackable items.
### BugFix :
- Fix [#10](https://github.com/Frinn38/Custom-Machinery-Create/issues/10) Jei integration broken when using CM Create
### Additions :
- Updated PT_BR localization, thanks to [PrincessStellar](https://github.com/PrincessStellar).
- Improved
/cm verifycommand and display found errors in the machine editor.
### BugFix :
- Fix crash on dedicated servers.
- Fix crash when a machine has 2 components of same type with same id.
- Instead, an error will be logged and one of the duplicate component will be ignored.
### Additions :
- Component config gui is now fully customizable (only by editing the machine json)
- Customization include: gui size and background, buttons textures, size and positions, custom title.
- See wiki page about [I/O config](https://frinn.gitbook.io/custom-machinery-1.21/misc/i-o-config) or [Toggle config](https://frinn.gitbook.io/custom-machinery-1.21/misc/toggle-config).
- Remove hardcoded 64 item limit for item component.
- NOTE: changing slot capacity will not change the vanilla stack size for items, a datapack or a mod such as 'stackcraft' is still needed.
### BugFix :
- Fix JEI not displaying recipe id in output slot.
- Fix potential crash with item transform requirement.
- Fix redstone blocks and other 'weak' redstone signal sources doesn't pause the machine.
### Additions :
- Improve structure creator tooltip.
- Added Integer, Double, String and NBT data requirements.
- These new requirements allows for checking and setting the machine data without the need of a custom KubeJS function.
- Add clockwise and counter-clockwise orientations for progress arrow.
### BugFix :
- Fix KubeJS recipe id can't be set from scripts.
- Fix filter not saved for variants of item component in the editor.
- Fix too many decimals on upgrade tooltips.
- Fix block ingredient error with some blockstates (create blaze burner).
### Additions :
- Added
getBlockEntityandgetStatusmethods in MachineJS.
### BugFix :
- Fix machine models with unculled faces can have weird shadows when the machine is facing south.
### Additions :
- Added 'open' and 'close' interaction sounds to machine appearance.
### Additions :
- Add empty item requirement that can be used to specifically require a slot of the machine to be empty.
- Added '.requireEmptyItem()' KubeJS method.
- That requirement can be configured to check if any slot is empty, or just a specific one.
### BugFix :
- Fix JEI recipe transfer button overlapping with elements.
- Fix gui editor hints and mouse pos widgets go out of the frame.
### BugFix :
- Fix KubeJS effect requirement ambiguous methods.
### Additions :
- Added "zlevel" optional property for texture elements which can be used to make the texture render above or below anything like items, fluids, tooltips etc...
### BugFix :
- Fix gui element priority being reversed in the gui editor.
### BugFix :
- Fix [#155](https://github.com/Frinn38/Custom-Machinery/issues/155) Machine stuck idle when output slot is emptied by shift clicking.
- Fix [#154](https://github.com/Frinn38/Custom-Machinery/issues/154) Craft processor not resetting after deleting a recipe.
### Additions :
- Add search bar in machine and upgrade editor list.
### BugFix :
- Fix crash in machine gui editor when no textures are specified for an element.
- Fix entangled block render structure preview when bound to a machine.
### BugFix :
- Fix placing structure in creative not working.
### BugFix :
- Fix block requirement not checking specified coordinates.
- Fix machines and upgrade JSON files not being written as UTF_8 if that's not the default system property.
- Fix block tags in structure.
### BugFix :
- Fix upgrades not being refreshed when an upgrade item is put in a slot already containing the same upgrade item.
### Additions :
- Use loot table for machine block breaking instead of hardcoding machine item to drop.
### BugFix :
- Fix translatable component contents sometimes not displayed.
### Additions :
- Allow custom tooltips to render in jei. (Thanks to [Jishuna](https://github.com/Jishuna) for this PR).
- Improve status gui element tooltip for multi-cores machines.
### BugFix :
- Fix upgrade not being refreshed when switching items in slot.
- Fix recipe modifier being mandatory instead of optional in KubeJS upgrade builder.
- Fix bug where the machine appears as errored when all cores are idle.
### Additions :
- Add pt_br translations, thanks to [PrincessStellar](https://github.com/PrincessStelllar).
- Add recipe and id getters in KubeJS recipe function event, thanks to [Jishuna](https://github.com/Jishuna).
- Add machine and tooltips tabs in upgrade editor.
- Add animation to show which slot is being configured. [#143](https://github.com/Frinn38/Custom-Machinery/issues/143)
### BugFix :
- Remove shadow on text gui element when displayed in jei.
### Additions :
- Machine creation list now displays when the machine was created and last modified.
- Machine creation list can now be sorted alphabetically or by modification date.
- Started working on machine upgrades editor.
- Currently only able to create and delete upgrades, more to come soon.
- Accessible using
/cm upgradeswhile in-world.
### BugFix :
- Fix crash due to sound being null (again).
### Additions :
- Machine upgrades can now modify several properties of the machine's components.
- The following properties can now be modified :
- Item component capacity, max input/output
- Fluid component capacity, max/min input/output
- Energy component capacity, max/min input/output
- Experience component capacity
- Chunkload component radius
- Machine upgrades can now modify the amount of core a machine processor can use to process recipes.
- These new upgrade features can be done with both json and KubeJS.
- The wiki is updated.
- This update should not break upgrades made with previous versions of CM.
### BugFix :
- Fix crash with ambient sound being null. [#140](https://github.com/Frinn38/Custom-Machinery/issues/140)
### BugFix :
- Fix
resetOnErrornot working for KubeJS recipes.
### Additions :
- Updated to KubeJS 7.2
- With that update comes a breaking change if you use KubeJS to create a custom machine block in a startup script.
- The type of block must be changed from
'custommachinery'to'custommachinery:custom_machine'or the game will fail to start. - Updated to latest NeoForge and Jei versions.
### Additions :
- Changing the inner working of block ingredients used in block and structure requirements.
- The syntax is the same as before and scripts/recipes should not be affected by this update.
- All support for Crafttweaker for block and structure requirements is now deleted.
- Block ingredients now support lists and can be reversed to accept any block but the specified one.
- Example:
["!#c:stones", "!diamond_block"]will accept any block that is not in stone tag and not a diamond block. - Added "order" property for block requirement which define if the blocks will be broken/placed from top to bottom or the opposite.
- Valid values are: "increasing" (default value, from bottom to top), "decreasing" (from top to bottom) and "random".
### BugFix :
- Fix box creator not rendering selected blocks.
### Additions :
- Added machine templates system.
- When a new machine is created through the in-game editor, a machine template can be selected.
- The newly created machine will copy all properties (appearance, components, gui...) of the template.
- New templates can be added like any machines but must be inside
machine/template/folder. - Templates can be directly edited using
/cm edit_templatecommand (Only templates added by datapacks/kubejs data). - Added back the machine creator item, it does exactly the same thing as running
/cm createcommand.
### BugFix :
- Fix configuration card item recipe not working.
- Fix a few visual bugs in the machine editor.