<divclass="aboutLanguage"><divid="javadoc-header"><ahref="/CustomNPC-Plus/"class="header-brand"><divclass="header-title"> CustomNPC+ <span>Javadoc Reference</span></div></a><ahref="/CustomNPC-Plus/"class="header-back"> Back to Index </a></div></div>
<divclass="block">Handler for registering and retrieving script hooks.
Addon mods can register custom hooks that will appear in the script editor GUIs.
<h3>Available contexts:</h3>
<ul>
<li>"npc" - NPC script editor</li>
<li>"player" - Player scripts editor</li>
<li>"block" - Scripted block editor</li>
<li>"item" - Scripted item editor</li>
<li>"linked_item" - Linked item editor</li>
<li>"forge" - Forge scripts editor</li>
<li>"global_npc" - Global NPC scripts editor</li>
<li>"recipe" - Recipe scripts editor</li>
<li>"effect" - Custom effect scripts editor</li>
</ul>
<h3>Hook Registration</h3>
Use <ahref="#registerHookDefinition(java.lang.String,noppes.npcs.api.handler.IHookDefinition)"><code>registerHookDefinition(String, IHookDefinition)</code></a> to register hooks:
<thclass="colFirst"scope="col">Modifier and Type</th>
<thclass="colSecond"scope="col">Method</th>
<thclass="colLast"scope="col">Description</th>
</tr>
<trid="i0"class="altColor">
<tdclass="colFirst"><code><ahref="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/List.html?is-external=true"title="class or interface in java.util"class="externalLink">List</a><<ahref="IHookDefinition.html"title="interface in noppes.npcs.api.handler">IHookDefinition</a>></code></td>
<thclass="colSecond"scope="row"><code><spanclass="memberNameLink"><ahref="#getAllHookDefinitions(java.lang.String)">getAllHookDefinitions</a></span>​(<ahref="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html?is-external=true"title="class or interface in java.lang"class="externalLink">String</a> context)</code></th>
<tdclass="colLast">
<divclass="block">Get all hook definitions for a context.</div>
</td>
</tr>
<trid="i1"class="rowColor">
<tdclass="colFirst"><code><ahref="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/List.html?is-external=true"title="class or interface in java.util"class="externalLink">List</a><<ahref="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html?is-external=true"title="class or interface in java.lang"class="externalLink">String</a>></code></td>
<thclass="colSecond"scope="row"><code><spanclass="memberNameLink"><ahref="#getAllHooks(java.lang.String)">getAllHooks</a></span>​(<ahref="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html?is-external=true"title="class or interface in java.lang"class="externalLink">String</a> context)</code></th>
<tdclass="colLast">
<divclass="block">Get all hook names for a context.</div>
</td>
</tr>
<trid="i2"class="altColor">
<tdclass="colFirst"><code><ahref="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html?is-external=true"title="class or interface in java.lang"class="externalLink">String</a>[]</code></td>
<divclass="block">Get all available context identifiers.</div>
</td>
</tr>
<trid="i3"class="rowColor">
<tdclass="colFirst"><code><ahref="IHookDefinition.html"title="interface in noppes.npcs.api.handler">IHookDefinition</a></code></td>
<thclass="colSecond"scope="row"><code><spanclass="memberNameLink"><ahref="#getHookDefinition(java.lang.String,java.lang.String)">getHookDefinition</a></span>​(<ahref="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html?is-external=true"title="class or interface in java.lang"class="externalLink">String</a> context,
<ahref="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html?is-external=true"title="class or interface in java.lang"class="externalLink">String</a> hookName)</code></th>
<tdclass="colLast">
<divclass="block">Get the hook definition for a specific hook.</div>
<divclass="block">Get the current hook revision number.</div>
</td>
</tr>
<trid="i5"class="rowColor">
<tdclass="colFirst"><code>boolean</code></td>
<thclass="colSecond"scope="row"><code><spanclass="memberNameLink"><ahref="#hasHook(java.lang.String,java.lang.String)">hasHook</a></span>​(<ahref="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html?is-external=true"title="class or interface in java.lang"class="externalLink">String</a> context,
<ahref="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html?is-external=true"title="class or interface in java.lang"class="externalLink">String</a> hookName)</code></th>
<tdclass="colLast">
<divclass="block">Check if a hook is registered in a specific context.</div>
</td>
</tr>
<trid="i6"class="altColor">
<tdclass="colFirst"><code>void</code></td>
<thclass="colSecond"scope="row"><code><spanclass="memberNameLink"><ahref="#registerHookDefinition(java.lang.String,noppes.npcs.api.handler.IHookDefinition)">registerHookDefinition</a></span>​(<ahref="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html?is-external=true"title="class or interface in java.lang"class="externalLink">String</a> context,
<ahref="IHookDefinition.html"title="interface in noppes.npcs.api.handler">IHookDefinition</a> definition)</code></th>
<tdclass="colLast">
<divclass="block">Register a hook with full metadata including event type and imports.</div>
<preclass="methodSignature">void registerHookDefinition​(<ahref="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html?is-external=true"title="class or interface in java.lang"class="externalLink">String</a> context,
<ahref="IHookDefinition.html"title="interface in noppes.npcs.api.handler">IHookDefinition</a> definition)</pre>
<divclass="block">Register a hook with full metadata including event type and imports.</div>
<preclass="methodSignature"><ahref="IHookDefinition.html"title="interface in noppes.npcs.api.handler">IHookDefinition</a> getHookDefinition​(<ahref="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html?is-external=true"title="class or interface in java.lang"class="externalLink">String</a> context,
<ahref="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html?is-external=true"title="class or interface in java.lang"class="externalLink">String</a> hookName)</pre>
<divclass="block">Get the hook definition for a specific hook.</div>
<dd><code>context</code> - The context identifier</dd>
<dd><code>hookName</code> - The hook function name</dd>
<dt><spanclass="returnLabel">Returns:</span></dt>
<dd>The hook definition, or null if not found</dd>
</dl>
</li>
</ul>
<aid="getAllHookDefinitions(java.lang.String)">
<!-- -->
</a>
<ulclass="blockList">
<liclass="blockList">
<h4>getAllHookDefinitions</h4>
<preclass="methodSignature"><ahref="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/List.html?is-external=true"title="class or interface in java.util"class="externalLink">List</a><<ahref="IHookDefinition.html"title="interface in noppes.npcs.api.handler">IHookDefinition</a>> getAllHookDefinitions​(<ahref="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html?is-external=true"title="class or interface in java.lang"class="externalLink">String</a> context)</pre>
<divclass="block">Get all hook definitions for a context.</div>
<dd><code>context</code> - The context identifier</dd>
<dt><spanclass="returnLabel">Returns:</span></dt>
<dd>List of all hook definitions (may be empty, never null)</dd>
</dl>
</li>
</ul>
<aid="getAllHooks(java.lang.String)">
<!-- -->
</a>
<ulclass="blockList">
<liclass="blockList">
<h4>getAllHooks</h4>
<preclass="methodSignature"><ahref="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/List.html?is-external=true"title="class or interface in java.util"class="externalLink">List</a><<ahref="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html?is-external=true"title="class or interface in java.lang"class="externalLink">String</a>> getAllHooks​(<ahref="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html?is-external=true"title="class or interface in java.lang"class="externalLink">String</a> context)</pre>
<divclass="block">Get all hook names for a context.</div>
<preclass="methodSignature">boolean hasHook​(<ahref="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html?is-external=true"title="class or interface in java.lang"class="externalLink">String</a> context,
<ahref="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html?is-external=true"title="class or interface in java.lang"class="externalLink">String</a> hookName)</pre>
<divclass="block">Check if a hook is registered in a specific context.</div>
<divclass="block">Get the current hook revision number.
This increments each time a hook is registered, allowing caches to invalidate.</div>
<dl>
<dt><spanclass="returnLabel">Returns:</span></dt>
<dd>The current revision number</dd>
</dl>
</li>
</ul>
<aid="getContexts()">
<!-- -->
</a>
<ulclass="blockListLast">
<liclass="blockList">
<h4>getContexts</h4>
<preclass="methodSignature"><ahref="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html?is-external=true"title="class or interface in java.lang"class="externalLink">String</a>[] getContexts()</pre>
<divclass="block">Get all available context identifiers.</div>
<divclass="aboutLanguage"><script>(function(){// Fix uppercase text in table cells // Javadoc 11: method names are in th[scope="row"] a, not td a function fixCase() { document.querySelectorAll("th[scope='row'] a, td a, .memberNameLink a").forEach(function(el) { var t = el.textContent.trim(); if (t.length > 2 && t === t.toUpperCase() && t.indexOf(" ") === -1) { el.textContent = t.toLowerCase(); } }); } // Correct navPadding = topNav height + subNav height // Uses !important to override jQuery's inline style function fixPadding() { var topNav = document.querySelector(".topNav"); var subNav = document.querySelector(".subNav"); var pad = document.querySelector(".navPadding"); if (!pad) return; var h = (topNav ? topNav.offsetHeight : 0) + (subNav ? subNav.offsetHeight : 0); if (h > 0) { pad.style.setProperty("padding-top", h + "px", "important"); } } document.addEventListener("DOMContentLoaded", function() { fixCase(); // Run fixPadding after jQuery has had its chance setTimeout(fixPadding, 0); setTimeout(fixPadding, 50); setTimeout(fixPadding, 200); // Use MutationObserver to permanently override any further jQuery writes var pad = document.querySelector(".navPadding"); if (pad) { var observer = new MutationObserver(function() { fixPadding(); }); observer.observe(pad, { attributes: true, attributeFilter: ["style"] }); } }); })(); </script></div>