Scissors-Website/javadoc/1.19.4/io/papermc/paper/plugin/provider/classloader/ClassLoaderAccess.html
2023-04-02 20:49:18 -05:00

150 lines
8.7 KiB
HTML

<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Generated by javadoc (17) -->
<title>ClassLoaderAccess (Scissors-API 1.19.4-R0.1-SNAPSHOT API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="description" content="declaration: package: io.papermc.paper.plugin.provider.classloader, interface: ClassLoaderAccess">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="../../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">var evenRowColor = "even-row-color";
var oddRowColor = "odd-row-color";
var tableTab = "table-tab";
var activeTableTab = "active-table-tab";
var pathtoroot = "../../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="class-use/ClassLoaderAccess.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html#class">Help</a></li>
</ul>
</div>
<div class="sub-nav">
<div>
<ul class="sub-nav-list">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method-summary">Method</a></li>
</ul>
<ul class="sub-nav-list">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method-detail">Method</a></li>
</ul>
</div>
<div class="nav-list-search"><label for="search-input">SEARCH:</label>
<input type="text" id="search-input" value="search" disabled="disabled">
<input type="reset" id="reset-button" value="reset" disabled="disabled">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">io.papermc.paper.plugin.provider.classloader</a></div>
<h1 title="Interface ClassLoaderAccess" class="title">Interface ClassLoaderAccess</h1>
</div>
<section class="class-description" id="class-description">
<hr>
<div class="type-signature"><span class="annotations"><a href="https://javadoc.io/doc/org.jetbrains/annotations/23.0.0/org/jetbrains/annotations/ApiStatus.Internal.html" title="class or interface in org.jetbrains.annotations" class="external-link">@Internal</a>
</span><span class="modifiers">public interface </span><span class="element-name type-name-label">ClassLoaderAccess</span></div>
<div class="block">The class loader access interface is an <b>internal</b> representation of a class accesses' ability to see types
from other <a href="ConfiguredPluginClassLoader.html" title="interface in io.papermc.paper.plugin.provider.classloader"><code>ConfiguredPluginClassLoader</code></a>.
<p>
An example of this would be a class loader access representing a plugin. The class loader access in that case would
only return <code>true</code> on calls for <a href="#canAccess(io.papermc.paper.plugin.provider.classloader.ConfiguredPluginClassLoader)"><code>canAccess(ConfiguredPluginClassLoader)</code></a> if the passed class loader
is owned by a direct or transitive dependency of the plugin, preventing the plugin for accidentally discovering and
using class types that are supplied by plugins/libraries the plugin did not actively define as a dependency.</div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab3" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab3', 3)" class="table-tab">Abstract Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel">
<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#canAccess(io.papermc.paper.plugin.provider.classloader.ConfiguredPluginClassLoader)" class="member-name-link">canAccess</a><wbr>(<a href="ConfiguredPluginClassLoader.html" title="interface in io.papermc.paper.plugin.provider.classloader">ConfiguredPluginClassLoader</a>&nbsp;classLoader)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Evaluates if this class loader access is allowed to access types provided by the passed <a href="ConfiguredPluginClassLoader.html" title="interface in io.papermc.paper.plugin.provider.classloader"><code>ConfiguredPluginClassLoader</code></a>.</div>
</div>
</div>
</div>
</div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="canAccess(io.papermc.paper.plugin.provider.classloader.ConfiguredPluginClassLoader)">
<h3>canAccess</h3>
<div class="member-signature"><span class="return-type">boolean</span>&nbsp;<span class="element-name">canAccess</span><wbr><span class="parameters">(<a href="ConfiguredPluginClassLoader.html" title="interface in io.papermc.paper.plugin.provider.classloader">ConfiguredPluginClassLoader</a>&nbsp;classLoader)</span></div>
<div class="block">Evaluates if this class loader access is allowed to access types provided by the passed <a href="ConfiguredPluginClassLoader.html" title="interface in io.papermc.paper.plugin.provider.classloader"><code>ConfiguredPluginClassLoader</code></a>.
<p>
This interface method does not offer any further contracts on the interface level, as the logic to determine
what class loaders this class loader access is allowed to retrieve types from depends heavily on the type of
access.
Legacy spigot types for example may access any class loader available on the server, while modern paper plugins
are properly limited to their dependency tree.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>classLoader</code> - the class loader for which access should be evaluated</dd>
<dt>Returns:</dt>
<dd>a plain boolean flag, <code>true</code> indicating that this class loader access is allowed to access types
from the passed configured plugin class loader, <code>false</code> indicating otherwise.</dd>
</dl>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
</div>
</div>
</body>
</html>