|
1 |
| -# Create Multi-Loader Addon Template |
2 |
| -A template based on Architectury for creating addons for Create on Forge, Fabric, and Quilt, simultaneously. |
| 1 | +# Warning to anyone who wishes to contribute: |
| 2 | +This code has a lot of mixins and dodgy mirror classes, |
| 3 | +View at your own risk, |
| 4 | +Same goes for anyone who wants to use this code for reference (mit so go at it if you want), |
3 | 5 |
|
4 |
| -## How does it work? |
5 |
| -This template is powered by the [Architectury](https://github.com/architectury) toolchain. |
6 |
| -Architectury allows developers to create the majority of their mod in common, loader-agnostic code that |
7 |
| -only touches Minecraft itself. This can be found in the [common](common) subproject. Each loader target |
8 |
| -also has its own subproject: those being [forge](forge) and [fabric](fabric). (Quilt support: you |
9 |
| -shouldn't need anything special and the Fabric version should work fine, but it is possible to add a |
10 |
| -`quilt` subproject if needed.) These loader-specific projects bridge between their respective loaders |
11 |
| -and the common code. |
| 6 | +# Features |
| 7 | +## Infinite Contraption Construction [(Development Test Demo)](https://www.youtube.com/watch?v=EhZnNdxGKrg&ab_channel=SomeGuyCalledCak) |
12 | 8 |
|
13 |
| -This system can be extended to work with Create as well as plain Minecraft. The common project gives |
14 |
| -access to most of Create, Registrate, and Flywheel. |
| 9 | +Pattern Schematics can be placed on trains, gantry carriages or any other contraption to infinitely build iterations of the schematic. |
15 | 10 |
|
16 |
| -## Limitations |
17 |
| -Minecraft has a lot of differences across loaders. You'll need to manage these differences using |
18 |
| -abstractions. Architectury does provide an [API](https://github.com/architectury/architectury-api) |
19 |
| -which you may use if desired, but it means you have another dependency to worry about. |
| 11 | + |
20 | 12 |
|
21 |
| -This also applies to Create, which underwent significant changes in porting to Fabric. This means a lot |
22 |
| -of it will be different between loaders. The `common` project is only capable of referencing the code |
23 |
| -on one loader (Fabric in this template), so you should be careful to not reference things that don't |
24 |
| -exist on the other one. Test often, and check the code on both loaders. When you do need to use these |
25 |
| -changed things, that leads us to... |
| 13 | +## Building Patterns [(Development Test Demo)](https://www.youtube.com/watch?v=jGvMWfpR8nQ&ab_channel=SomeGuyCalledCak) |
26 | 14 |
|
27 |
| -## Solutions |
28 |
| -There's a bunch of ways to work around the differences. |
| 15 | +These pattern schematics can be used to repeat existing schematics, such as repeating a bridge to make it longer! Print in creative or put into a schematicannon to build! |
29 | 16 |
|
30 |
| -First is Architectury API. It provides cross-loader abstractions that can be used in common code for |
31 |
| -a decent amount of Minecraft. However, it means you need to worry about another dependency. It also |
32 |
| -doesn't really help with Create. |
| 17 | + |
33 | 18 |
|
34 |
| -Next is the `@ExpectPlatform` annotation. It allows the implementation of a method to be replaced |
35 |
| -at compile time per-loader, letting you make your own abstractions. It is part of the Architectury |
36 |
| -plugin and does not cause an extra dependency. However, it can only be placed on static methods. See |
37 |
| -[ExampleExpectPlatform](common/src/main/java/net/examplemod/ExampleExpectPlatform.java) in common |
38 |
| -for an example. |
| 19 | +## ! Please report any issues to the github ! |
| 20 | +This is a new mod, and may have some bugs which will need fixing, |
39 | 21 |
|
40 |
| -Finally, simply have a common interface with implementation based on the loader. You might have a |
41 |
| -`PlatformHelper` common interface, with a static instance somewhere. On Fabric, set it to a |
42 |
| -`FabricPlatformHelper`, and a `ForgePlatformHelper` on Forge. The implementation is kept as a detail |
43 |
| -so you can use your helper from common code. |
44 |
| - |
45 |
| -## Features |
46 |
| -- Access to Create and all of its dependencies on both loaders |
47 |
| -- Mojang Mappings base, with Quilt Mappings and Parchment providing Javadoc and parameters |
48 |
| -- VineFlower decompiler for high quality Minecraft sources: `gradlew genSourcesWithVineflower` |
49 |
| -- GitHub Actions automatic build workflow |
50 |
| -- Machete Gradle plugin to shrink jar file sizes |
51 |
| -- Developer QOL: Mod Menu, LazyDFU, JEI |
52 |
| - |
53 |
| -## Use |
54 |
| -Ready to get started? First you'll want to create a new repository using this template. You can do it |
55 |
| -through GitHub with the big green button near the top that says `Use this template`. |
56 |
| - |
57 |
| -Once you've got your repository set up, you'll want to change all the branding to your mod instead |
58 |
| -of the template. Every `examplemod`, every placeholder. |
59 |
| - |
60 |
| -You're free to change your license: CC0 lets you do whatever you want. Base Create is MIT, for reference. |
61 |
| - |
62 |
| -Replace this README with information about your addon. Give it an icon and change the metadata in the |
63 |
| -[fabric.mod.json](fabric/src/main/resources/fabric.mod.json) and the |
64 |
| -[mods.toml](forge/src/main/resources/META-INF/mods.toml). |
65 |
| - |
66 |
| -Configure your dependencies. Each subproject `build.gradle` has optional dependencies commented. |
67 |
| -Either remove them or uncomment them. For Fabric, set your preferred recipe viewer with |
68 |
| -`fabric_recipe_viewer` in the root [gradle.properties](gradle.properties). |
69 |
| - |
70 |
| -Remember to remove any example code you don't need anymore. |
71 |
| - |
72 |
| -Get modding! |
73 |
| - |
74 |
| -## Notes |
75 |
| -- Architectury does not merge jars; When you build, you get separate jars for each loader. |
76 |
| - There is an independent project that can merge these into one if desired called |
77 |
| - [Forgix](https://github.com/PacifistMC/Forgix). |
78 |
| -- The file names and versions of jars are configured in the root [build.gradle](build.gradle). Feel |
79 |
| -free to change the format if desired, but make sure it follows SemVer to work well on Fabric. |
80 |
| -- When publishing, you should always let GitHub Actions build your release jars. These builds will |
81 |
| -have build number metadata, and will be compressed by the Machete plugin. |
82 |
| - |
83 |
| -## Other Templates |
84 |
| -- [Fabric-only template](https://github.com/Fabricators-of-Create/create-fabric-addon-template) |
85 |
| -- [Forge-only template](https://github.com/kotakotik22/CreateAddonTemplate) |
86 |
| - |
87 |
| -## Help |
88 |
| -Questions? Join us in the #devchat channel of the [Create Discord](https://discord.com/invite/hmaD7Se). |
89 |
| - |
90 |
| -## License |
91 |
| - |
92 |
| -This template is available under the CC0 license. Feel free to do as you wish with it. |
| 22 | +# Changelog (as of 1.1.8) |
0 commit comments