User Tools

Site Tools


tutorial:introduction

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
tutorial:introduction [2019/11/03 14:49] – [Mixins] layltutorial:introduction [2023/09/13 21:20] (current) – ↷ Links adapted because of a move operation 2001:8a0:f4d2:c700:98c:bb27:6ad8:1dab
Line 1: Line 1:
-====== Introduction to Modding with Fabric (DRAFT) ======+====== Introduction to Modding with Fabric ======
  
 This is a quick introduction to some common techniques you can use while making Fabric mods. This is a quick introduction to some common techniques you can use while making Fabric mods.
Line 11: Line 11:
 Mixins can be fragile, and at times can cause conflicts. Mixins can be fragile, and at times can cause conflicts.
 Therefore, some common functionality has already been implemented by the Fabric API for you. Therefore, some common functionality has already been implemented by the Fabric API for you.
-If it doesn't exist in the core Fabric API, often it will exist in a third party library. +If it doesn't exist in the core Fabric API, often it will exist in a third-party library. 
-In almost every situation it's preferable to use either the Fabric APIor a third party library over implementing a mixin yourself.+In almost every situation it's preferable to use either the Fabric API or a third party library over implementing a mixin yourself.
  
 Sometimes though, you don't need any of that. Sometimes though, you don't need any of that.
Line 23: Line 23:
  
 If Minecraft already lets you do something, don't re-invent the wheel. If Minecraft already lets you do something, don't re-invent the wheel.
-A good example of this is the "Registry" class, which lets you add blocks and items without any modifications to Minecraft's code.+A good example of this is the "<yarn class_2378>" class, which lets you add blocks and items without any modifications to Minecraft's code.
  
-Minecraft will also load in the JSON data files from your mod+Minecraft also uses JSON data files for various data-driven features
-These JSON files are injected by the Fabric API (not the loader!). +You can add JSON files to your mod, which are then injected by the Fabric API.
-They're used for anything data-driven, where code isn't necessary in the first place.+
 For example, block models and loot tables are implemented through JSON files. For example, block models and loot tables are implemented through JSON files.
  
Line 41: Line 40:
  
 You can find out what's included in the Fabric API by looking over [[https://github.com/FabricMC/fabric|its source code on GitHub]]. You can find out what's included in the Fabric API by looking over [[https://github.com/FabricMC/fabric|its source code on GitHub]].
-The Fabric API contains a lot of common event hooksand general utilities for things like networking and rendering.+The Fabric API contains a lot of common event hooks and general utilities for things like networking and rendering.
  
  
Line 47: Line 46:
  
 Because the Fabric API is intentionally kept small and focused, third party APIs exist to fill in the gaps. Because the Fabric API is intentionally kept small and focused, third party APIs exist to fill in the gaps.
-Mixins allow any third party library to affect Minecraft's code just as much as the core Fabric API can. +Mixins allow any third party library to affect Minecraft's code in the same way as the core Fabric API can. 
-You should use these instead of writing your own mixins where possible to minimize the possibility for conflicts. +You should use these instead of writing your own mixins where possible to minimize the possibility of conflicts.
- +
-A good example of this is [[https://github.com/cottonmc|Cotton]], which provides a variety of common utilities, as well as common resource ores, items and blocks. +
  
 +You can find an incomplete list of [[community:library_mods|third party libraries]] on this wiki.
 ===== Mixins ===== ===== Mixins =====
  
 Finally, you can use mixins. Finally, you can use mixins.
-Mixins are a powerful feature that let you change any of Minecraft's own code. +Mixins are a powerful feature that lets you change any of Minecraft's own code. 
-Some mixins can cause conflictbut used responsibly these are key to adding unique behavior to your mod.+Some mixins can cause conflict but used responsibly these are key to adding unique behavior to your mod.
  
 Mixins come in a variety of flavors, in rough order of preference: Mixins come in a variety of flavors, in rough order of preference:
Line 64: Line 61:
   * Callback Injectors   * Callback Injectors
   * Redirect Injectors   * Redirect Injectors
-  * Overwrites, you should never use these +  * Overwrites
  
 +This is not a complete list, but rather a quick overview.
 +Some mixin types are omitted here.
 ==== Adding Interfaces ==== ==== Adding Interfaces ====
  
-Probably the safest way to use mixins, new interface implementations can be added to any Minecraft class.+This is probably one of the safest ways to use mixins
 +New interface implementations can be added to any Minecraft class.
 You can then access the interface by casting the class to it. You can then access the interface by casting the class to it.
 This doesn't change anything about the class, it only adds new things, and is therefore very unlikely to conflict. This doesn't change anything about the class, it only adds new things, and is therefore very unlikely to conflict.
 +
 +One caveat is that the function signature (name + parameter types) you inject must be unique. So if you use common parameter types, be sure to give it a very unique name.
  
  
Line 91: Line 92:
 ==== Overwrite ==== ==== Overwrite ====
  
-Never use overwrites+Be very careful with how you use Overwrites
-Overwrites replace a method entirely.+They replace a method entirely, removing all existing code and conflicting with any other types of mixins on the method.
 They are extremely likely to conflict not just with other mods, but also with changes to Minecraft itself. They are extremely likely to conflict not just with other mods, but also with changes to Minecraft itself.
-You most likely do not need an overwrite to do what you want to do, please use something else.+You most likely do not need an overwrite to do what you want to do.
tutorial/introduction.1572792546.txt.gz · Last modified: 2019/11/03 14:49 by layl