{"id":27656376,"url":"https://github.com/solveddev/bp.modules","last_synced_at":"2026-01-23T12:55:47.620Z","repository":{"id":119478236,"uuid":"127539739","full_name":"solvedDev/BP.Modules","owner":"solvedDev","description":null,"archived":false,"fork":false,"pushed_at":"2018-05-21T17:20:14.000Z","size":27,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-04-24T06:26:26.813Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/solvedDev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2018-03-31T14:33:47.000Z","updated_at":"2018-05-21T17:20:15.000Z","dependencies_parsed_at":"2023-03-15T00:00:59.709Z","dependency_job_id":null,"html_url":"https://github.com/solvedDev/BP.Modules","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/solvedDev/BP.Modules","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solvedDev%2FBP.Modules","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solvedDev%2FBP.Modules/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solvedDev%2FBP.Modules/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solvedDev%2FBP.Modules/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/solvedDev","download_url":"https://codeload.github.com/solvedDev/BP.Modules/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solvedDev%2FBP.Modules/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28692395,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-23T11:01:27.039Z","status":"ssl_error","status_checked_at":"2026-01-23T11:00:26.909Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-04-24T06:19:28.927Z","updated_at":"2026-01-23T12:55:47.600Z","avatar_url":"https://github.com/solvedDev.png","language":null,"readme":"# BP.Modules\nModules allow Behavior Programmers to build up a library of knowledge to be easily imported into a different project. A module is build out of different elements. An element needs to be one of the types ```entity```, ```commands```, ```loot_table``` or ```trades```. Elements of the type ```entity``` are independet of the entity type. The user can choose on which entity this part of the module shall be applied.\n\n## How do I load modules?\nModules are fully integrated into the next version of MCPacker. You can access the module menu by pressing \"CTRL+L\" or by using the menubar.\n\n## Creating modules\nIn order to create a module, add a JSON file describing your module into the modules folder of this repository. You then need to also add your module to the module_definitions.json file. Make sure to choose a descriptive name and add a good description.\n\n### Element [type=entity]\nThe most advanced element in a module. In this element, you describe what you want to change by adding it to the ```replace``` and ```add``` objects or to the ```remove``` array. Every change made by the module system is reversible as a changelog file is generated. You can find the changelog for each module in your chosen behavior pack folder saved as a file with the name \"changelog_{module name}.json\".\nOrder of execution: ```replace``` --\u003e ```remove``` --\u003e ```add```\n\n```javascript\n{\n\t\"elements\": [\n\t\t{\n\t\t\t\"type\": \"entity\",\n\t\t\t\"name\": \"[descriptive name]\",\n\t\t\t\"description\": \"[description here]\",\n\n\t\t\t\"replace\": {\n\t\t\t\t\"replace_group_by_group\": false,\n\t\t\t\t\n\t\t\t\t\"components\": {\n\t\t\t\t},\n\t\t\t\t\"component_groups\": {\n\t\t\t\t},\n\t\t\t\t\"events\": {\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"add\": {\n\t\t\t\t\"components\": {\n\t\t\t\t},\n\t\t\t\t\"component_groups\": {\n\t\t\t\t},\n\t\t\t\t\"events\": {\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"remove\": {\n\t\t\t\t\"parse_groups\": false,\n\t\t\t\t\n\t\t\t\t\"components\": [ ],\n\t\t\t\t\"component_groups\": [ ],\n\t\t\t\t\"events\": [ ]\n\t\t\t}\n\t\t\t\n\t\t}\n\t]\n}\n```\n\n###### Functionality of ```add```\nAdd components, component_groups and events through the ```add``` object. If a ```component```/```event```/```component_group``` already exists on the entity chosen by the user, a change objects gets added to the changelog_{module name}.json file (path: your_chosen_bp_path/changelog_{module name}.json). You won't loose your ```component```/```event```/```component_group``` in this case.\n\n###### Functionality of ```replace```\n```replace``` currently replaces the whole ```components```/```events```/```component_groups``` object of the chosen entity with the one defined. If you want to start your module with a blank entity, this is the way to go... You can use the ```replace_group_by_group``` argument (accepts ```true```/```false```; default: ```false```) to toggle whether you want to replace the whole ```component_groups``` object (= ```false```) or you want to parse the ```component_groups``` defined and replace only the ones which already exists on the entity. If a defined ```component_group``` is not part of the chosen entity, it won't be added. In order to add a ```component_group```, use the ```add```-section of an element.\n\n###### Functionality of ```remove```\nDefine within ```remove``` object which ```components```/```events```/```component_groups``` of the chosen entity shall be removed. Only the name is required! The ```parse_groups``` argument toggles whether components shall also be removed out of component groups. Accepted values are ```true```/```false```; the default value is ```false```.\n\n\n### Element [type=loot_table]\nDefine a whole loot table to be imported upon loading the module in this element. The ```name``` attribute changes the name of the file. \nPath of the loot table: loot_tables/{name}.json\n\n```javascript\n{\n\t\"elements\": [\n\t\t{\n\t\t\t\"type\": \"loot_table\",\n\t\t\t\"name\": \"example loot\",\n\t\t\t\"loot_table\": {\n\t\t\t\t\"pools\": [\n\t\t\t\t\t\"...\"\n\t\t\t\t]\n\t\t\t}\n\t\t}\n\t]\n}\n```\n\n\n### Element [type=trades]\nDefine a whole trading table to be imported upon loading the module in this element. The ```name``` attribute changes the name of the file. \nPath of the trading table: trading/{name}.json\n\n```javascript\n{\n\t\"elements\": [\n\t\t{\n\t\t\t\"type\": \"trades\",\n\t\t\t\"name\": \"example trade\",\n\t\t\t\"trades\": {\n\t\t\t\t\"tiers\": [\n\t\t\t\t\t\"...\"\n\t\t\t\t]\n\t\t\t}\n\t\t}\n\t]\n}\n```\n\n\n### Element [type=commands]\nDefine a command system by using the type ```commands```. The commands end up in a commands.txt file after loading the module. This file should open by default (path: your_chosen_bp_path/commands.txt).\n\n```javascript\n{\n\t\"elements\": [\n\t\t{\n\t\t\t\"type\": \"commands\",\n\t\t\t\"commands\": [\n\t\t\t\t{\n\t\t\t\t\t\"command\": \"/testfor @e[type=example]\",\n\t\t\t\t\t\"type\": \"repeating\",\n\t\t\t\t\t\"is_conditional\": false,\n\t\t\t\t\t\"description\": \"test_description\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"command\": \"/say Found example...\",\n\t\t\t\t\t\"type\": \"chain\",\n\t\t\t\t\t\"is_conditional\": true,\n\t\t\t\t\t\"description\": \"test_description\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"type\": \"commands\",\n\t\t\t\"commands\": [\n\t\t\t\t{\n\t\t\t\t\t\"command\": \"/say Loaded\",\n\t\t\t\t\t\"type\": \"impulse\",\n\t\t\t\t\t\"is_conditional\": false,\n\t\t\t\t\t\"description\": \"test_description\"\n\t\t\t\t}\n\t\t\t]\n\t\t}\n\t]\n}\n```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsolveddev%2Fbp.modules","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsolveddev%2Fbp.modules","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsolveddev%2Fbp.modules/lists"}