Skip to content

Commit

Permalink
Initial commit
Browse files Browse the repository at this point in the history
  • Loading branch information
legopitstop authored Dec 10, 2024
0 parents commit 593f7e1
Show file tree
Hide file tree
Showing 138 changed files with 2,809 additions and 0 deletions.
15 changes: 15 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
* text eol=lf
*.bat text eol=crlf
*.patch text eol=lf
*.java text eol=lf
*.gradle text eol=crlf
*.png binary
*.gif binary
*.exe binary
*.dll binary
*.jar binary
*.lzma binary
*.zip binary
*.pyd binary
*.cfg text eol=lf
*.jks binary
33 changes: 33 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# eclipse
bin
*.launch
.settings
.metadata
.classpath
.project

# idea
out
*.ipr
*.iws
*.iml
.idea/*
!.idea/scopes

# gradle
build
.gradle

# other
eclipse
run
runs

# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/
32 changes: 32 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# MultiLoader Template

This project provides a Gradle project template that can compile Minecraft mods for multiple modloaders using a common project for the sources. This project does not require any third party libraries or dependencies. If you have any questions or want to discuss the project, please join our [Discord](https://discord.myceliummod.network).

## Getting Started

### IntelliJ IDEA
This guide will show how to import the MultiLoader Template into IntelliJ IDEA. The setup process is roughly equivalent to setting up the modloaders independently and should be very familiar to anyone who has worked with their MDKs.

1. Clone or download this repository to your computer.
2. Configure the project by setting the properties in the `gradle.properties` file. You will also need to change the `rootProject.name` property in `settings.gradle`, this should match the folder name of your project, or else IDEA may complain.
3. Open the template's root folder as a new project in IDEA. This is the folder that contains this README.md file and the gradlew executable.
4. If your default JVM/JDK is not Java 21 you will encounter an error when opening the project. This error is fixed by going to `File > Settings > Build, Execution, Deployment > Build Tools > Gradle > Gradle JVM` and changing the value to a valid Java 21 JVM. You will also need to set the Project SDK to Java 21. This can be done by going to `File > Project Structure > Project SDK`. Once both have been set open the Gradle tab in IDEA and click the refresh button to reload the project.
5. Open your Run/Debug Configurations. Under the `Application` category there should now be options to run Fabric and NeoForge projects. Select one of the client options and try to run it.
6. Assuming you were able to run the game in step 5 your workspace should now be set up.

### Eclipse
While it is possible to use this template in Eclipse it is not recommended. During the development of this template multiple critical bugs and quirks related to Eclipse were found at nearly every level of the required build tools. While we continue to work with these tools to report and resolve issues support for projects like these are not there yet. For now Eclipse is considered unsupported by this project. The development cycle for build tools is notoriously slow so there are no ETAs available.

## Development Guide
When using this template the majority of your mod should be developed in the `common` project. The `common` project is compiled against the vanilla game and is used to hold code that is shared between the different loader-specific versions of your mod. The `common` project has no knowledge or access to ModLoader specific code, apis, or concepts. Code that requires something from a specific loader must be done through the project that is specific to that loader, such as the `fabric` or `neoforge` projects.

Loader specific projects such as the `fabric` and `neoforge` project are used to load the `common` project into the game. These projects also define code that is specific to that loader. Loader specific projects can access all the code in the `common` project. It is important to remember that the `common` project can not access code from loader specific projects.

## Removing Platforms and Loaders
While this template has support for many modloaders, new loaders may appear in the future, and existing loaders may become less relevant.

Removing loader specific projects is as easy as deleting the folder, and removing the `include("projectname")` line from the `settings.gradle` file.
For example if you wanted to remove support for `forge` you would follow the following steps:

1. Delete the subproject folder. For example, delete `MultiLoader-Template/forge`.
2. Remove the project from `settings.gradle`. For example, remove `include("forge")`.
3 changes: 3 additions & 0 deletions bedrock/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
node_modules/
package.json
package-lock.json
15 changes: 15 additions & 0 deletions bedrock/bedrock.code-workspace
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"folders": [
{
"path": "./behaviors"
},
{
"path": "./resources"
}
],
"settings": {
"files.associations": {
"*.json": "jsonc"
}
}
}
12 changes: 12 additions & 0 deletions bedrock/behaviors/.github/FUNDING.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# These are supported funding model platforms

github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
patreon: Legopitstop
open_collective: # Replace with a single Open Collective username
ko_fi: legopitstop
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
liberapay: # Replace with a single Liberapay username
issuehunt: # Replace with a single IssueHunt username
otechie: # Replace with a single Otechie username
custom: # Replace with a donation URL
31 changes: 31 additions & 0 deletions bedrock/behaviors/.github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
---
name: Bug report
about: Create a report to help us improve
title: " "
labels: 'bug :bug:'
assignees: legopitstop

---

**Describe the bug**
A clear and concise description of what the bug is.

**Steps To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error

**Expected behavior**
A clear and concise description of what you expected to happen.

**Screenshots**
If applicable, add screenshots to help explain your problem.

**Desktop (please complete the following information):**
- Python Version: [e.g. 3.9.0]
- OS: [e.g. Windows 10]

**Additional context**
Add any other context about the problem here.
1 change: 1 addition & 0 deletions bedrock/behaviors/.github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
blank_issues_enabled: false
20 changes: 20 additions & 0 deletions bedrock/behaviors/.github/ISSUE_TEMPLATE/feature_request.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: 'Suggestion :bulb:'
assignees: legopitstop

---

**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

**Describe the solution you'd like**
A clear and concise description of what you want to happen.

**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.

**Additional context**
Add any other context or screenshots about the feature request here.
64 changes: 64 additions & 0 deletions bedrock/behaviors/blocks/rotatable_block.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
{
"format_version": "1.21.10",
"minecraft:block": {
"description": {
"identifier": "examplemod:rotatable_block",
"properties": { "direction": [0, 1, 2, 3, 4, 5, 6] },
"traits": {

}
},
"components": {
"minecraft:loot": "loot_tables/chests/simple_dungeon.json",
"minecraft:light_dampening": 0,
"minecraft:destructible_by_mining": { "seconds_to_destroy": 1.25 },
"minecraft:destructible_by_explosion": { "explosion_resistance": 4.2 },
"minecraft:geometry": "minecraft:geometry.full_block",
"minecraft:material_instances": {
"*": {
"texture": "examplemod:rotatable_block",
"render_method": "opaque"
}
},
"minecraft:collision_box": {
"origin": [-8, 0, -8],
"size": [16, 16, 16]
},
"minecraft:selection_box": { "origin": [-8, 0, -8], "size": [16, 16, 16] }
},
"permutations": [
{
"condition": "q.block_state('direction')==0",
"components": {
"minecraft:transformation": { "rotation": [-90, 90, 0] }
}
},
{
"condition": "q.block_state('direction')==1",
"components": {
"minecraft:transformation": { "rotation": [90, 90, 0] }
}
},
{
"condition": "q.block_state('direction')==2",
"components": { "minecraft:transformation": { "rotation": [0, 0, 0] } }
},
{
"condition": "q.block_state('direction')==3",
"components": {
"minecraft:transformation": { "rotation": [0, 180, 0] }
}
},
{
"condition": "q.block_state('direction')==4",
"components": { "minecraft:transformation": { "rotation": [0, 90, 0] } }
},
{
"condition": "q.block_state('direction')==5",
"components": {
"minecraft:transformation": { "rotation": [0, -90, 0] }
}
}
]
}
}
22 changes: 22 additions & 0 deletions bedrock/behaviors/blocks/simple_block.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
{
"format_version": "1.21.10",
"minecraft:block": {
"description": {
"identifier": "examplemod:simple_block"
},
"components": {
"minecraft:loot": "loot_tables/chests/simple_dungeon.json",
"minecraft:destructible_by_mining": { "seconds_to_destroy": 1.25 },
"minecraft:destructible_by_explosion": { "explosion_resistance": 4.2 },
"minecraft:map_color": "#000000",
"minecraft:geometry": "minecraft:geometry.full_block",
"minecraft:friction": 0.1,
"minecraft:material_instances": {
"*": {
"texture": "examplemod:simple_block",
"render_method": "alpha_test"
}
}
}
}
}
28 changes: 28 additions & 0 deletions bedrock/behaviors/entities/static.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
{
"format_version": "1.20.50",
"minecraft:entity": {
"description": {
"identifier": "examplemod:static",
"is_spawnable": false,
"is_summonable": true,
"is_experimental": false
},
"component_groups": {
"examplemod:despawn": { "minecraft:instant_despawn": {} }
},
"components": {
"minecraft:fire_immune": {},
"minecraft:persistent": {},
"minecraft:conditional_bandwidth_optimization": {},
"minecraft:type_family": { "family": ["static"] },
"minecraft:collision_box": { "width": 1.0, "height": 1.0 },
"minecraft:damage_sensor": { "triggers": [{ "deals_damage": false }] },
"minecraft:physics": { "has_gravity": false, "has_collision": false }
},
"events": {
"examplemod:despawn": {
"add": { "component_groups": ["examplemod:despawn"] }
}
}
}
}
1 change: 1 addition & 0 deletions bedrock/behaviors/functions/tick.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{ "values": ["tick"] }
4 changes: 4 additions & 0 deletions bedrock/behaviors/functions/tick.mcfunction
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Made by: @Legopitstop
# Desc: The main ticking file
#
# Called By: tick.json
23 changes: 23 additions & 0 deletions bedrock/behaviors/items/simple_food.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
{
"format_version": "1.21.10",
"minecraft:item": {
"description": {
"identifier": "examplemod:simple_food",
"menu_category": {
"category": "equipment",
"group": "itemGroup.name.miscFood"
}
},
"components": {
"minecraft:use_animation": "eat",
"minecraft:max_stack_size": 1,
"minecraft:icon": "examplemod:simple_food",
"minecraft:use_modifiers": { "use_duration": 1.61 },
"minecraft:food": {
"nutrition": 6,
"saturation_modifier": 1.5,
"using_converts_to": "minecraft:bowl"
}
}
}
}
13 changes: 13 additions & 0 deletions bedrock/behaviors/items/simple_item.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"format_version": "1.21.10",
"minecraft:item": {
"description": {
"identifier": "examplemod:simple_item",
"menu_category": { "category": "items" }
},
"components": {
"minecraft:max_stack_size": 64,
"minecraft:icon": "examplemod:simple_item"
}
}
}
21 changes: 21 additions & 0 deletions bedrock/behaviors/items/simple_tool.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
{
"format_version": "1.21.10",
"minecraft:item": {
"description": {
"identifier": "examplemod:simple_tool",
"menu_category": {
"category": "equipment",
"group": "itemGroup.name.pickaxe"
}
},
"components": {
"minecraft:stacked_by_data": false,
"minecraft:hand_equipped": true,
"minecraft:max_stack_size": 1,
"minecraft:use_modifiers": { "use_duration": 1 },
"minecraft:durability": { "damage_chance": 1.0, "max_durability": 122 },
"minecraft:repairable": { "repair_items": ["minecraft:cobblestone"] },
"minecraft:icon": "examplemod:simple_tool"
}
}
}
23 changes: 23 additions & 0 deletions bedrock/behaviors/loot_tables/blocks/sample.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
{
"pools": [
{
"rolls": 1,
"entries": [
{
"type": "item",
"name": "examplemod:sample",
"weight": 1,
"functions": [
{
"function": "set_count",
"count": {
"min": 0,
"max": 4
}
}
]
}
]
}
]
}
Loading

0 comments on commit 593f7e1

Please sign in to comment.