The class implementing this interface should be annotated with <ahref="annotation/PluginInfo.html"title="annotation in com.djrapitops.plan.extension.annotation"><code>PluginInfo</code></a>.
<ahref="annotation/BooleanProvider.html"title="annotation in com.djrapitops.plan.extension.annotation"><code>BooleanProvider</code></a> for <code>boolean</code> values and conditions for <ahref="annotation/Conditional.html"title="annotation in com.djrapitops.plan.extension.annotation"><code>Conditional</code></a>.
<ahref="annotation/NumberProvider.html"title="annotation in com.djrapitops.plan.extension.annotation"><code>NumberProvider</code></a> for <code>long</code> values. (Use this for integers by casting to long) Has option for formatting.
<ahref="annotation/DoubleProvider.html"title="annotation in com.djrapitops.plan.extension.annotation"><code>DoubleProvider</code></a> for <code>double</code> values.
<ahref="annotation/PercentageProvider.html"title="annotation in com.djrapitops.plan.extension.annotation"><code>PercentageProvider</code></a> for <code>double</code> values that represent a percentage.
<ahref="annotation/StringProvider.html"title="annotation in com.djrapitops.plan.extension.annotation"><code>StringProvider</code></a> for <ahref="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/String.html"title="class or interface in java.lang"class="external-link"><code>String</code></a> values.
<ahref="annotation/TableProvider.html"title="annotation in com.djrapitops.plan.extension.annotation"><code>TableProvider</code></a> for <ahref="table/Table.html"title="class in com.djrapitops.plan.extension.table"><code>Table</code></a>s.
<ahref="annotation/GroupProvider.html"title="annotation in com.djrapitops.plan.extension.annotation"><code>GroupProvider</code></a> for Player specific group names, such as permission groups.
<ahref="annotation/DataBuilderProvider.html"title="annotation in com.djrapitops.plan.extension.annotation"><code>DataBuilderProvider</code></a> for <ahref="builder/ExtensionDataBuilder.html"title="interface in com.djrapitops.plan.extension.builder"><code>ExtensionDataBuilder</code></a>s.
<ahref="Group.html"title="interface in com.djrapitops.plan.extension"><code>group</code></a> - Provided group the data is about (In case a group needs additional information)
If you need to change a method name add a class annotation with the old method name: <ahref="annotation/InvalidateMethod.html"title="annotation in com.djrapitops.plan.extension.annotation"><code>InvalidateMethod</code></a>
<ahref="annotation/Conditional.html"title="annotation in com.djrapitops.plan.extension.annotation"><code>Conditional</code></a> A <code>boolean</code> returned by <ahref="annotation/BooleanProvider.html"title="annotation in com.djrapitops.plan.extension.annotation"><code>BooleanProvider</code></a> has to be <code>true</code> for this method to be called.
<ahref="annotation/Tab.html"title="annotation in com.djrapitops.plan.extension.annotation"><code>Tab</code></a> The value of this provider should be placed on a tab with a specific name
<ahref="annotation/TabInfo.html"title="annotation in com.djrapitops.plan.extension.annotation"><code>TabInfo</code></a> Optional Structure information about a tab
<ahref="annotation/TabOrder.html"title="annotation in com.djrapitops.plan.extension.annotation"><code>TabOrder</code></a> Optional information about preferred tab
Method calls are asynchronous. You can control when the calls are made via <ahref="#callExtensionMethodsOn()"><code>callExtensionMethodsOn()</code></a> and <ahref="Caller.html"title="interface in com.djrapitops.plan.extension"><code>Caller</code></a>.
You can check against implementation violations by using <ahref="extractor/ExtensionExtractor.html#validateAnnotations()"><code>ExtensionExtractor.validateAnnotations()</code></a> in your Unit Tests.
- <ahref="annotation/BooleanProvider.html"title="annotation in com.djrapitops.plan.extension.annotation"><code>BooleanProvider</code></a> is annotated with a <ahref="annotation/Conditional.html"title="annotation in com.djrapitops.plan.extension.annotation"><code>Conditional</code></a> that requires same condition the provider provides.
- <ahref="annotation/Conditional.html"title="annotation in com.djrapitops.plan.extension.annotation"><code>Conditional</code></a> without a <ahref="annotation/BooleanProvider.html"title="annotation in com.djrapitops.plan.extension.annotation"><code>BooleanProvider</code></a> that provides value for the condition
<divclass="col-first even-row-color method-summary-table-tab2 method-summary-table-tab5 method-summary-table"><code>default <ahref="CallEvents.html"title="enum class in com.djrapitops.plan.extension">CallEvents</a>[]</code></div>
<divclass="col-first odd-row-color method-summary-table-tab2 method-summary-table-tab5 method-summary-table"><code>default <ahref="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/String.html"title="class or interface in java.lang"class="external-link">String</a></code></div>
<divclass="block">Obtain a new <ahref="builder/ExtensionDataBuilder.html"title="interface in com.djrapitops.plan.extension.builder"><code>ExtensionDataBuilder</code></a>.</div>
<divclass="col-first odd-row-color method-summary-table-tab2 method-summary-table-tab5 method-summary-table"><code>default <ahref="builder/ValueBuilder.html"title="interface in com.djrapitops.plan.extension.builder">ValueBuilder</a></code></div>
<divclass="col-second odd-row-color method-summary-table-tab2 method-summary-table-tab5 method-summary-table"><code><spanclass="member-name-link"><ahref="#valueBuilder(java.lang.String)">valueBuilder</a></span>​(<ahref="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/String.html"title="class or interface in java.lang"class="external-link">String</a> text)</code></div>
<divclass="block">Obtain a new <ahref="builder/ValueBuilder.html"title="interface in com.djrapitops.plan.extension.builder"><code>ValueBuilder</code></a> to use with <ahref="builder/ExtensionDataBuilder.html"title="interface in com.djrapitops.plan.extension.builder"><code>ExtensionDataBuilder</code></a>.</div>
<divclass="member-signature"><spanclass="modifiers">default</span> <spanclass="return-type"><ahref="CallEvents.html"title="enum class in com.djrapitops.plan.extension">CallEvents</a>[]</span> <spanclass="element-name">callExtensionMethodsOn</span>()</div>
<divclass="member-signature"><spanclass="modifiers">default</span> <spanclass="return-type"><ahref="builder/ExtensionDataBuilder.html"title="interface in com.djrapitops.plan.extension.builder">ExtensionDataBuilder</a></span> <spanclass="element-name">newExtensionDataBuilder</span>()</div>
<divclass="block">Obtain a new <ahref="builder/ExtensionDataBuilder.html"title="interface in com.djrapitops.plan.extension.builder"><code>ExtensionDataBuilder</code></a>.
<divclass="member-signature"><spanclass="modifiers">default</span> <spanclass="return-type"><ahref="builder/ValueBuilder.html"title="interface in com.djrapitops.plan.extension.builder">ValueBuilder</a></span> <spanclass="element-name">valueBuilder</span>​<spanclass="parameters">(<ahref="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/String.html"title="class or interface in java.lang"class="external-link">String</a> text)</span></div>
<divclass="block">Obtain a new <ahref="builder/ValueBuilder.html"title="interface in com.djrapitops.plan.extension.builder"><code>ValueBuilder</code></a> to use with <ahref="builder/ExtensionDataBuilder.html"title="interface in com.djrapitops.plan.extension.builder"><code>ExtensionDataBuilder</code></a>.
<divclass="member-signature"><spanclass="modifiers">default</span> <spanclass="return-type"><ahref="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/String.html"title="class or interface in java.lang"class="external-link">String</a></span> <spanclass="element-name">getPluginName</span>()</div>