Line 107: |
Line 107: |
| | | |
| Both capability providers and users need to be able to provide and access capabilities through a common framework, | | Both capability providers and users need to be able to provide and access capabilities through a common framework, |
− | otherwise the ideal of dynamic and mod-agnostic would not really exist. For this reason, both capability providers and | + | otherwise the idea of a dynamic and mod-agnostic system would not really exist. For this reason, both capability providers and |
| capability ''accessors'' (which we define as everything that wants to access a capability), also known as '''clients''' or '''users''', | | capability ''accessors'' (which we define as everything that wants to access a capability), also known as '''clients''' or '''users''', |
| need to work together and with Forge to ensure that the common interface is used sensibly and correctly by all parties. | | need to work together and with Forge to ensure that the common interface is used sensibly and correctly by all parties. |
Line 115: |
Line 115: |
| Before being able to work with a capability, it is necessary to obtain an instance of the <code>Capability</code> object itself. | | Before being able to work with a capability, it is necessary to obtain an instance of the <code>Capability</code> object itself. |
| | | |
− | A <code>Capability</code> can obtained at any time using <code>CapabilityManager#get</code>. This takes in an anonymous <code>CapabilityToken</code> to still allow for a soft dependency system while also keeping hold of any generic information needed. As such, you can always obtain a non-null capability. | + | A <code>Capability</code> can be obtained at any time using <code>CapabilityManager#get</code>. This takes in an anonymous <code>CapabilityToken</code> to still allow for a soft dependency system while also keeping hold of any generic information needed. As such, you can always obtain a non-null capability. |
| | | |
| {{Tabs/Code Snippets | | {{Tabs/Code Snippets |
Line 286: |
Line 286: |
| }} | | }} |
| | | |
− | Note that when using capabilities on entities, you should manually invalidate the capability via <code>invalidateCaps()</code>, via etc. <code>PlayerEvent.Clone</code>. This is due to the fact that players are recreated & copied when moving across dimensions, not simply moved. | + | Note that when using capabilities on entities, you should manually invalidate the capability via <code>invalidateCaps()</code>, using e.g. <code>PlayerEvent.Clone</code>. This is due to the fact that players are recreated & copied when moving across dimensions, not simply moved. |
| | | |
| === Accessing a Capability === | | === Accessing a Capability === |