tutorial:modding_tips
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| tutorial:modding_tips [2019/07/24 13:08] – added "Applying changes without restarting Minecraft" fudge | tutorial:modding_tips [2025/09/22 16:23] (current) – [Mixins] Readjust some phrasing gauntrecluse | ||
|---|---|---|---|
| Line 6: | Line 6: | ||
| * Due to the injection-based approach of Fabric' | * Due to the injection-based approach of Fabric' | ||
| - | * Block.Settings -> FabricBlockSettings | + | * Block.Settings -> FabricBlockSettings |
| * EntityType.Builder -> FabricEntityTypeBuilder | * EntityType.Builder -> FabricEntityTypeBuilder | ||
| - | * While an official configuration system is being worked on, one replacement for now is to use Java .properties or JSON. | ||
| * For a built-in resource pack or data pack, please ensure that an " | * For a built-in resource pack or data pack, please ensure that an " | ||
| ===== Mixins ===== | ===== Mixins ===== | ||
| + | |||
| + | It should be kept in mind whenever learning about Mixin in **any** capacity that any example is limited to its own situation. No example should be directly copied, and you should prioritize using examples as ways to better understand syntax and general principles, rather than a tutorial to achieve your specific goal. //Every// Mixin you make should be tailored to its isolated use-case.\\ | ||
| + | Refer to relevant wikis and Discord help channels mentioned further in this section when you are in doubt or encounter an issue, getting direct help and asking questions is a natural and expected part of learning Mixins and should be prioritized when there is no obvious Wiki answer. This being kept in mind, the following are loose, general advice for using Mixin in your project. | ||
| * To cast a class to an interface it doesn' | * To cast a class to an interface it doesn' | ||
| - | | + | * @Redirect and @ModifyConstant mixins cannot currently be nested (applied by more than one mod in the same area at the same time). This might change later in development - however, for now, alongside @Overwrite, please avoid them if possible |
| - | | + | * MixinExtras, a library for Mixin bundled |
| - | * If you're adding custom fields or methods, especially if they' | + | |
| + | * If you're adding non-private custom fields or methods to a target class, prefix them with " | ||
| + | * To learn more on Mixins and how to use them, refer to [[tutorial: | ||
| ===== Networking ===== | ===== Networking ===== | ||
| * Packets always begin execution on the **network thread**, however accesses to most Minecraft things are not thread-safe. In general, if you're not exactly sure what you're doing, you want to parse the packet on the network thread (read all the values out), then use the **task queue** to perform additional operations on the **main server/ | * Packets always begin execution on the **network thread**, however accesses to most Minecraft things are not thread-safe. In general, if you're not exactly sure what you're doing, you want to parse the packet on the network thread (read all the values out), then use the **task queue** to perform additional operations on the **main server/ | ||
| + | ===== Pitfalls ===== | ||
| - | ===== Applying changes without restarting Minecraft ===== | + | * Avoid using the '' |
| - | Restarting Minecraft can take a hefty amount of time. Thankfully, there are tools that allow you to some apply changes while the game is running. | + | |
| - | ==== Reload changed classes ==== | + | |
| - | In Eclipse or Intellij IDEA, run Minecraft in debug mode. To apply changes in code, | + | |
| - | do '' | + | |
| - | Note: this only allows you to change method bodies. If you do any other kind of change, You will have to restart. | + | |
| - | However, if you use [[http:// | + | |
| - | ==== Reload textures ==== | + | |
| - | After you make a change in a texture ('' | + | |
tutorial/modding_tips.1563973739.txt.gz · Last modified: 2019/07/24 13:08 by fudge