5 Commits

Author SHA1 Message Date
xiaobai
3bfa81f94f 添加文档注释 2026-02-14 20:25:44 +08:00
xiaobai
0529706b62 nothing 2026-02-14 20:20:29 +08:00
xiaobai
f983a1640c 添加文档注释 2026-02-14 20:15:20 +08:00
xiaobai
8c68028924 完善注释(添加文档注释),添加skinsrestorer皮肤加载支持功能(未经完整测试) 2026-02-14 19:56:16 +08:00
xiaobai
b268a74eeb 修改方块生成范围集中的问题 2026-02-13 22:45:17 +08:00
80 changed files with 9402 additions and 60 deletions

1
.gitignore vendored
View File

@@ -41,3 +41,4 @@ bin/
### Mac OS ### ### Mac OS ###
.DS_Store .DS_Store
/AIedit.txt

6
.idea/misc.xml generated
View File

@@ -1,6 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" /> <component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="JavadocGenerationManager">
<option name="OUTPUT_DIRECTORY" value="$PROJECT_DIR$/javadoc" />
<option name="OPTION_DOCUMENT_TAG_USE" value="true" />
<option name="OPTION_DOCUMENT_TAG_AUTHOR" value="true" />
<option name="OPTION_DOCUMENT_TAG_VERSION" value="true" />
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" project-jdk-name="ms-21" project-jdk-type="JavaSDK"> <component name="ProjectRootManager" version="2" languageLevel="JDK_17" project-jdk-name="ms-21" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" /> <output url="file://$PROJECT_DIR$/out" />
</component> </component>

View File

@@ -4,7 +4,7 @@ plugins {
} }
group = 'com.playerblocklife' group = 'com.playerblocklife'
version = '2.0.0-1.20.4' version = '3.0.0-experimental-1.20.4'
sourceCompatibility = 17 sourceCompatibility = 17
targetCompatibility = 17 targetCompatibility = 17

View File

@@ -5,5 +5,5 @@ org.gradle.caching=true
org.gradle.daemon=true org.gradle.daemon=true
# ???? # ????
pluginVersion=2.0.0-1.20.4 pluginVersion=2.1.0-1.20.4
mcVersion=1.20.4 mcVersion=1.20.4

View File

@@ -0,0 +1,98 @@
<!DOCTYPE HTML>
<html lang="zh">
<head>
<!-- Generated by javadoc (21) on Sat Feb 14 20:12:07 CST 2026 -->
<title>所有类和接口</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-02-14">
<meta name="description" content="class index">
<meta name="generator" content="javadoc/AllClassesIndexWriter">
<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">
<script type="text/javascript" src="script.js"></script>
<script type="text/javascript" src="script-dir/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="script-dir/jquery-ui.min.js"></script>
</head>
<body class="all-classes-index-page">
<script type="text/javascript">var pathtoroot = "./";
loadScripts(document, 'script');</script>
<noscript>
<div>您的浏览器已禁用 JavaScript。</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"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="切换导航链接"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="跳过导航链接">跳过导航链接</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="导航">
<li><a href="com/playerblocklife/package-summary.html">程序包</a></li>
<li></li>
<li>使用</li>
<li><a href="overview-tree.html"></a></li>
<li><a href="index-files/index-1.html">索引</a></li>
<li><a href="help-doc.html#all-classes">帮助</a></li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list"></div>
<div class="nav-list-search"><a href="search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="搜索">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<div class="header">
<h1 title="所有类和接口" class="title">所有类和接口</h1>
</div>
<div id="all-classes-table">
<div class="caption"><span></span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first"></div>
<div class="table-header col-last">说明</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/playerblocklife/AdminCommands.html" title="com.playerblocklife中的类">AdminCommands</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/playerblocklife/BlockBreakListener.html" title="com.playerblocklife中的类">BlockBreakListener</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/playerblocklife/CheckLifeBlocksCommand.html" title="com.playerblocklife中的类">CheckLifeBlocksCommand</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/playerblocklife/ConfigManager.html" title="com.playerblocklife中的类">ConfigManager</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">配置管理器 - 负责加载、保存和管理插件的配置文件</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/playerblocklife/LifeSystem.html" title="com.playerblocklife中的类">LifeSystem</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">生命值系统 - 负责管理玩家生命值和状态效果</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/playerblocklife/MessageManager.html" title="com.playerblocklife中的类">MessageManager</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/playerblocklife/PlayerBlockLife.html" title="com.playerblocklife中的类">PlayerBlockLife</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
<div class="block">PlayerBlockLife插件主类 - 玩家生命方块系统的核心控制器</div>
</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/playerblocklife/PlayerBlockManager.html" title="com.playerblocklife中的类">PlayerBlockManager</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">玩家方块管理器 - 负责管理玩家生命方块的核心组件</div>
</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/playerblocklife/PlayerJoinListener.html" title="com.playerblocklife中的类">PlayerJoinListener</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/playerblocklife/PlayerQuitListener.html" title="com.playerblocklife中的类">PlayerQuitListener</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="com/playerblocklife/SetLifeBlocksCommand.html" title="com.playerblocklife中的类">SetLifeBlocksCommand</a></div>
<div class="col-last even-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="com/playerblocklife/SkinManager.html" title="com.playerblocklife中的类">SkinManager</a></div>
<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
<div class="block">皮肤管理器 - 负责玩家皮肤的获取、缓存和应用</div>
</div>
</div>
</div>
</main>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,64 @@
<!DOCTYPE HTML>
<html lang="zh">
<head>
<!-- Generated by javadoc (21) on Sat Feb 14 20:12:07 CST 2026 -->
<title>所有程序包</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-02-14">
<meta name="description" content="package index">
<meta name="generator" content="javadoc/AllPackagesIndexWriter">
<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">
<script type="text/javascript" src="script.js"></script>
<script type="text/javascript" src="script-dir/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="script-dir/jquery-ui.min.js"></script>
</head>
<body class="all-packages-index-page">
<script type="text/javascript">var pathtoroot = "./";
loadScripts(document, 'script');</script>
<noscript>
<div>您的浏览器已禁用 JavaScript。</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"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="切换导航链接"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="跳过导航链接">跳过导航链接</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="导航">
<li><a href="com/playerblocklife/package-summary.html">程序包</a></li>
<li></li>
<li>使用</li>
<li><a href="overview-tree.html"></a></li>
<li><a href="index-files/index-1.html">索引</a></li>
<li><a href="help-doc.html#all-packages">帮助</a></li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list"></div>
<div class="nav-list-search"><a href="search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="搜索">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<div class="header">
<h1 title="所有程序包" class="title">所有程序包</h1>
</div>
<div class="caption"><span>程序包概要</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">程序包</div>
<div class="table-header col-last">说明</div>
<div class="col-first even-row-color"><a href="com/playerblocklife/package-summary.html">com.playerblocklife</a></div>
<div class="col-last even-row-color">&nbsp;</div>
</div>
</main>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,187 @@
<!DOCTYPE HTML>
<html lang="zh">
<head>
<!-- Generated by javadoc (21) on Sat Feb 14 20:12:07 CST 2026 -->
<title>AdminCommands</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-02-14">
<meta name="description" content="declaration: package: com.playerblocklife, class: AdminCommands">
<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">
<script type="text/javascript" src="../../script.js"></script>
<script type="text/javascript" src="../../script-dir/jquery-3.7.1.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 pathtoroot = "../../";
loadScripts(document, 'script');</script>
<noscript>
<div>您的浏览器已禁用 JavaScript。</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"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="切换导航链接"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="跳过导航链接">跳过导航链接</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="导航">
<li><a href="package-summary.html">程序包</a></li>
<li class="nav-bar-cell1-rev"></li>
<li><a href="class-use/AdminCommands.html">使用</a></li>
<li><a href="package-tree.html"></a></li>
<li><a href="../../index-files/index-1.html">索引</a></li>
<li><a href="../../help-doc.html#class">帮助</a></li>
</ul>
<ul class="sub-nav-list-small">
<li>
<p>概要:</p>
<ul>
<li>嵌套</li>
<li>字段</li>
<li><a href="#constructor-summary">构造器</a></li>
<li><a href="#method-summary">方法</a></li>
</ul>
</li>
<li>
<p>详细资料:</p>
<ul>
<li>字段</li>
<li><a href="#constructor-detail">构造器</a></li>
<li><a href="#method-detail">方法</a></li>
</ul>
</li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list">
<ul class="sub-nav-list">
<li>概要:&nbsp;</li>
<li>嵌套&nbsp;|&nbsp;</li>
<li>字段&nbsp;|&nbsp;</li>
<li><a href="#constructor-summary">构造器</a>&nbsp;|&nbsp;</li>
<li><a href="#method-summary">方法</a></li>
</ul>
<ul class="sub-nav-list">
<li>详细资料:&nbsp;</li>
<li>字段&nbsp;|&nbsp;</li>
<li><a href="#constructor-detail">构造器</a>&nbsp;|&nbsp;</li>
<li><a href="#method-detail">方法</a></li>
</ul>
</div>
<div class="nav-list-search"><a href="../../search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="搜索">
<input type="reset" id="reset-button" disabled value="reset">
</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">程序包</span>&nbsp;<a href="package-summary.html">com.playerblocklife</a></div>
<h1 title="类 AdminCommands" class="title">类 AdminCommands</h1>
</div>
<div class="inheritance" title="继承树"><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" title="java.lang中的类或接口" class="external-link">java.lang.Object</a>
<div class="inheritance">com.playerblocklife.AdminCommands</div>
</div>
<section class="class-description" id="class-description">
<dl class="notes">
<dt>所有已实现的接口:</dt>
<dd><code>org.bukkit.command.CommandExecutor</code></dd>
</dl>
<hr>
<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">AdminCommands</span>
<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" title="java.lang中的类或接口" class="external-link">Object</a>
implements org.bukkit.command.CommandExecutor</span></div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
<h2>构造器概要</h2>
<div class="caption"><span>构造器</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">构造器</div>
<div class="table-header col-last">说明</div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(com.playerblocklife.PlayerBlockLife)" class="member-name-link">AdminCommands</a><wbr>(<a href="PlayerBlockLife.html" title="com.playerblocklife中的类">PlayerBlockLife</a>&nbsp;plugin)</code></div>
<div class="col-last even-row-color">&nbsp;</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>方法概要</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">所有方法</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">实例方法</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">具体方法</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
<div class="summary-table three-column-summary">
<div class="table-header col-first">修饰符和类型</div>
<div class="table-header col-second">方法</div>
<div class="table-header col-last">说明</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#onCommand(org.bukkit.command.CommandSender,org.bukkit.command.Command,java.lang.String,java.lang.String%5B%5D)" class="member-name-link">onCommand</a><wbr>(org.bukkit.command.CommandSender&nbsp;sender,
org.bukkit.command.Command&nbsp;command,
<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a>&nbsp;label,
<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a>[]&nbsp;args)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Object">从类继承的方法&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" title="java.lang中的类或接口" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#clone()" title="java.lang中的类或接口" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="java.lang中的类或接口" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#finalize()" title="java.lang中的类或接口" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#getClass()" title="java.lang中的类或接口" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#hashCode()" title="java.lang中的类或接口" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#notify()" title="java.lang中的类或接口" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#notifyAll()" title="java.lang中的类或接口" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#toString()" title="java.lang中的类或接口" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#wait()" title="java.lang中的类或接口" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#wait(long)" title="java.lang中的类或接口" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="java.lang中的类或接口" class="external-link">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>构造器详细资料</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;(com.playerblocklife.PlayerBlockLife)">
<h3>AdminCommands</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">AdminCommands</span><wbr><span class="parameters">(<a href="PlayerBlockLife.html" title="com.playerblocklife中的类">PlayerBlockLife</a>&nbsp;plugin)</span></div>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>方法详细资料</h2>
<ul class="member-list">
<li>
<section class="detail" id="onCommand(org.bukkit.command.CommandSender,org.bukkit.command.Command,java.lang.String,java.lang.String[])">
<h3>onCommand</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">onCommand</span><wbr><span class="parameters">(org.bukkit.command.CommandSender&nbsp;sender,
org.bukkit.command.Command&nbsp;command,
<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a>&nbsp;label,
<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a>[]&nbsp;args)</span></div>
<dl class="notes">
<dt>指定者:</dt>
<dd><code>onCommand</code>&nbsp;在接口中&nbsp;<code>org.bukkit.command.CommandExecutor</code></dd>
</dl>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,186 @@
<!DOCTYPE HTML>
<html lang="zh">
<head>
<!-- Generated by javadoc (21) on Sat Feb 14 20:12:07 CST 2026 -->
<title>BlockBreakListener</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-02-14">
<meta name="description" content="declaration: package: com.playerblocklife, class: BlockBreakListener">
<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">
<script type="text/javascript" src="../../script.js"></script>
<script type="text/javascript" src="../../script-dir/jquery-3.7.1.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 pathtoroot = "../../";
loadScripts(document, 'script');</script>
<noscript>
<div>您的浏览器已禁用 JavaScript。</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"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="切换导航链接"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="跳过导航链接">跳过导航链接</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="导航">
<li><a href="package-summary.html">程序包</a></li>
<li class="nav-bar-cell1-rev"></li>
<li><a href="class-use/BlockBreakListener.html">使用</a></li>
<li><a href="package-tree.html"></a></li>
<li><a href="../../index-files/index-1.html">索引</a></li>
<li><a href="../../help-doc.html#class">帮助</a></li>
</ul>
<ul class="sub-nav-list-small">
<li>
<p>概要:</p>
<ul>
<li>嵌套</li>
<li>字段</li>
<li><a href="#constructor-summary">构造器</a></li>
<li><a href="#method-summary">方法</a></li>
</ul>
</li>
<li>
<p>详细资料:</p>
<ul>
<li>字段</li>
<li><a href="#constructor-detail">构造器</a></li>
<li><a href="#method-detail">方法</a></li>
</ul>
</li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list">
<ul class="sub-nav-list">
<li>概要:&nbsp;</li>
<li>嵌套&nbsp;|&nbsp;</li>
<li>字段&nbsp;|&nbsp;</li>
<li><a href="#constructor-summary">构造器</a>&nbsp;|&nbsp;</li>
<li><a href="#method-summary">方法</a></li>
</ul>
<ul class="sub-nav-list">
<li>详细资料:&nbsp;</li>
<li>字段&nbsp;|&nbsp;</li>
<li><a href="#constructor-detail">构造器</a>&nbsp;|&nbsp;</li>
<li><a href="#method-detail">方法</a></li>
</ul>
</div>
<div class="nav-list-search"><a href="../../search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="搜索">
<input type="reset" id="reset-button" disabled value="reset">
</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">程序包</span>&nbsp;<a href="package-summary.html">com.playerblocklife</a></div>
<h1 title="类 BlockBreakListener" class="title">类 BlockBreakListener</h1>
</div>
<div class="inheritance" title="继承树"><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" title="java.lang中的类或接口" class="external-link">java.lang.Object</a>
<div class="inheritance">com.playerblocklife.BlockBreakListener</div>
</div>
<section class="class-description" id="class-description">
<dl class="notes">
<dt>所有已实现的接口:</dt>
<dd><code>org.bukkit.event.Listener</code></dd>
</dl>
<hr>
<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">BlockBreakListener</span>
<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" title="java.lang中的类或接口" class="external-link">Object</a>
implements org.bukkit.event.Listener</span></div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
<h2>构造器概要</h2>
<div class="caption"><span>构造器</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">构造器</div>
<div class="table-header col-last">说明</div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(com.playerblocklife.PlayerBlockLife)" class="member-name-link">BlockBreakListener</a><wbr>(<a href="PlayerBlockLife.html" title="com.playerblocklife中的类">PlayerBlockLife</a>&nbsp;plugin)</code></div>
<div class="col-last even-row-color">&nbsp;</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>方法概要</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">所有方法</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">实例方法</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">具体方法</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
<div class="summary-table three-column-summary">
<div class="table-header col-first">修饰符和类型</div>
<div class="table-header col-second">方法</div>
<div class="table-header col-last">说明</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#onBlockBreak(org.bukkit.event.block.BlockBreakEvent)" class="member-name-link">onBlockBreak</a><wbr>(org.bukkit.event.block.BlockBreakEvent&nbsp;event)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#onBlockPlace(org.bukkit.event.block.BlockPlaceEvent)" class="member-name-link">onBlockPlace</a><wbr>(org.bukkit.event.block.BlockPlaceEvent&nbsp;event)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Object">从类继承的方法&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" title="java.lang中的类或接口" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#clone()" title="java.lang中的类或接口" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="java.lang中的类或接口" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#finalize()" title="java.lang中的类或接口" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#getClass()" title="java.lang中的类或接口" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#hashCode()" title="java.lang中的类或接口" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#notify()" title="java.lang中的类或接口" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#notifyAll()" title="java.lang中的类或接口" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#toString()" title="java.lang中的类或接口" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#wait()" title="java.lang中的类或接口" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#wait(long)" title="java.lang中的类或接口" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="java.lang中的类或接口" class="external-link">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>构造器详细资料</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;(com.playerblocklife.PlayerBlockLife)">
<h3>BlockBreakListener</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">BlockBreakListener</span><wbr><span class="parameters">(<a href="PlayerBlockLife.html" title="com.playerblocklife中的类">PlayerBlockLife</a>&nbsp;plugin)</span></div>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>方法详细资料</h2>
<ul class="member-list">
<li>
<section class="detail" id="onBlockBreak(org.bukkit.event.block.BlockBreakEvent)">
<h3>onBlockBreak</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">onBlockBreak</span><wbr><span class="parameters">(org.bukkit.event.block.BlockBreakEvent&nbsp;event)</span></div>
</section>
</li>
<li>
<section class="detail" id="onBlockPlace(org.bukkit.event.block.BlockPlaceEvent)">
<h3>onBlockPlace</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">onBlockPlace</span><wbr><span class="parameters">(org.bukkit.event.block.BlockPlaceEvent&nbsp;event)</span></div>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,187 @@
<!DOCTYPE HTML>
<html lang="zh">
<head>
<!-- Generated by javadoc (21) on Sat Feb 14 20:12:07 CST 2026 -->
<title>CheckLifeBlocksCommand</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-02-14">
<meta name="description" content="declaration: package: com.playerblocklife, class: CheckLifeBlocksCommand">
<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">
<script type="text/javascript" src="../../script.js"></script>
<script type="text/javascript" src="../../script-dir/jquery-3.7.1.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 pathtoroot = "../../";
loadScripts(document, 'script');</script>
<noscript>
<div>您的浏览器已禁用 JavaScript。</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"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="切换导航链接"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="跳过导航链接">跳过导航链接</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="导航">
<li><a href="package-summary.html">程序包</a></li>
<li class="nav-bar-cell1-rev"></li>
<li><a href="class-use/CheckLifeBlocksCommand.html">使用</a></li>
<li><a href="package-tree.html"></a></li>
<li><a href="../../index-files/index-1.html">索引</a></li>
<li><a href="../../help-doc.html#class">帮助</a></li>
</ul>
<ul class="sub-nav-list-small">
<li>
<p>概要:</p>
<ul>
<li>嵌套</li>
<li>字段</li>
<li><a href="#constructor-summary">构造器</a></li>
<li><a href="#method-summary">方法</a></li>
</ul>
</li>
<li>
<p>详细资料:</p>
<ul>
<li>字段</li>
<li><a href="#constructor-detail">构造器</a></li>
<li><a href="#method-detail">方法</a></li>
</ul>
</li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list">
<ul class="sub-nav-list">
<li>概要:&nbsp;</li>
<li>嵌套&nbsp;|&nbsp;</li>
<li>字段&nbsp;|&nbsp;</li>
<li><a href="#constructor-summary">构造器</a>&nbsp;|&nbsp;</li>
<li><a href="#method-summary">方法</a></li>
</ul>
<ul class="sub-nav-list">
<li>详细资料:&nbsp;</li>
<li>字段&nbsp;|&nbsp;</li>
<li><a href="#constructor-detail">构造器</a>&nbsp;|&nbsp;</li>
<li><a href="#method-detail">方法</a></li>
</ul>
</div>
<div class="nav-list-search"><a href="../../search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="搜索">
<input type="reset" id="reset-button" disabled value="reset">
</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">程序包</span>&nbsp;<a href="package-summary.html">com.playerblocklife</a></div>
<h1 title="类 CheckLifeBlocksCommand" class="title">类 CheckLifeBlocksCommand</h1>
</div>
<div class="inheritance" title="继承树"><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" title="java.lang中的类或接口" class="external-link">java.lang.Object</a>
<div class="inheritance">com.playerblocklife.CheckLifeBlocksCommand</div>
</div>
<section class="class-description" id="class-description">
<dl class="notes">
<dt>所有已实现的接口:</dt>
<dd><code>org.bukkit.command.CommandExecutor</code></dd>
</dl>
<hr>
<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">CheckLifeBlocksCommand</span>
<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" title="java.lang中的类或接口" class="external-link">Object</a>
implements org.bukkit.command.CommandExecutor</span></div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
<h2>构造器概要</h2>
<div class="caption"><span>构造器</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">构造器</div>
<div class="table-header col-last">说明</div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(com.playerblocklife.PlayerBlockLife)" class="member-name-link">CheckLifeBlocksCommand</a><wbr>(<a href="PlayerBlockLife.html" title="com.playerblocklife中的类">PlayerBlockLife</a>&nbsp;plugin)</code></div>
<div class="col-last even-row-color">&nbsp;</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>方法概要</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">所有方法</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">实例方法</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">具体方法</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
<div class="summary-table three-column-summary">
<div class="table-header col-first">修饰符和类型</div>
<div class="table-header col-second">方法</div>
<div class="table-header col-last">说明</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#onCommand(org.bukkit.command.CommandSender,org.bukkit.command.Command,java.lang.String,java.lang.String%5B%5D)" class="member-name-link">onCommand</a><wbr>(org.bukkit.command.CommandSender&nbsp;sender,
org.bukkit.command.Command&nbsp;command,
<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a>&nbsp;label,
<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a>[]&nbsp;args)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Object">从类继承的方法&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" title="java.lang中的类或接口" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#clone()" title="java.lang中的类或接口" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="java.lang中的类或接口" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#finalize()" title="java.lang中的类或接口" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#getClass()" title="java.lang中的类或接口" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#hashCode()" title="java.lang中的类或接口" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#notify()" title="java.lang中的类或接口" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#notifyAll()" title="java.lang中的类或接口" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#toString()" title="java.lang中的类或接口" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#wait()" title="java.lang中的类或接口" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#wait(long)" title="java.lang中的类或接口" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="java.lang中的类或接口" class="external-link">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>构造器详细资料</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;(com.playerblocklife.PlayerBlockLife)">
<h3>CheckLifeBlocksCommand</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">CheckLifeBlocksCommand</span><wbr><span class="parameters">(<a href="PlayerBlockLife.html" title="com.playerblocklife中的类">PlayerBlockLife</a>&nbsp;plugin)</span></div>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>方法详细资料</h2>
<ul class="member-list">
<li>
<section class="detail" id="onCommand(org.bukkit.command.CommandSender,org.bukkit.command.Command,java.lang.String,java.lang.String[])">
<h3>onCommand</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">onCommand</span><wbr><span class="parameters">(org.bukkit.command.CommandSender&nbsp;sender,
org.bukkit.command.Command&nbsp;command,
<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a>&nbsp;label,
<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a>[]&nbsp;args)</span></div>
<dl class="notes">
<dt>指定者:</dt>
<dd><code>onCommand</code>&nbsp;在接口中&nbsp;<code>org.bukkit.command.CommandExecutor</code></dd>
</dl>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,669 @@
<!DOCTYPE HTML>
<html lang="zh">
<head>
<!-- Generated by javadoc (21) on Sat Feb 14 20:12:07 CST 2026 -->
<title>ConfigManager</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-02-14">
<meta name="description" content="declaration: package: com.playerblocklife, class: ConfigManager">
<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">
<script type="text/javascript" src="../../script.js"></script>
<script type="text/javascript" src="../../script-dir/jquery-3.7.1.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 pathtoroot = "../../";
loadScripts(document, 'script');</script>
<noscript>
<div>您的浏览器已禁用 JavaScript。</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"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="切换导航链接"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="跳过导航链接">跳过导航链接</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="导航">
<li><a href="package-summary.html">程序包</a></li>
<li class="nav-bar-cell1-rev"></li>
<li><a href="class-use/ConfigManager.html">使用</a></li>
<li><a href="package-tree.html"></a></li>
<li><a href="../../index-files/index-1.html">索引</a></li>
<li><a href="../../help-doc.html#class">帮助</a></li>
</ul>
<ul class="sub-nav-list-small">
<li>
<p>概要:</p>
<ul>
<li>嵌套</li>
<li>字段</li>
<li><a href="#constructor-summary">构造器</a></li>
<li><a href="#method-summary">方法</a></li>
</ul>
</li>
<li>
<p>详细资料:</p>
<ul>
<li>字段</li>
<li><a href="#constructor-detail">构造器</a></li>
<li><a href="#method-detail">方法</a></li>
</ul>
</li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list">
<ul class="sub-nav-list">
<li>概要:&nbsp;</li>
<li>嵌套&nbsp;|&nbsp;</li>
<li>字段&nbsp;|&nbsp;</li>
<li><a href="#constructor-summary">构造器</a>&nbsp;|&nbsp;</li>
<li><a href="#method-summary">方法</a></li>
</ul>
<ul class="sub-nav-list">
<li>详细资料:&nbsp;</li>
<li>字段&nbsp;|&nbsp;</li>
<li><a href="#constructor-detail">构造器</a>&nbsp;|&nbsp;</li>
<li><a href="#method-detail">方法</a></li>
</ul>
</div>
<div class="nav-list-search"><a href="../../search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="搜索">
<input type="reset" id="reset-button" disabled value="reset">
</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">程序包</span>&nbsp;<a href="package-summary.html">com.playerblocklife</a></div>
<h1 title="类 ConfigManager" class="title">类 ConfigManager</h1>
</div>
<div class="inheritance" title="继承树"><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" title="java.lang中的类或接口" class="external-link">java.lang.Object</a>
<div class="inheritance">com.playerblocklife.ConfigManager</div>
</div>
<section class="class-description" id="class-description">
<hr>
<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">ConfigManager</span>
<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" title="java.lang中的类或接口" class="external-link">Object</a></span></div>
<div class="block">配置管理器 - 负责加载、保存和管理插件的配置文件
<p>主要功能包括:
<ul>
<li>加载和验证配置文件</li>
<li>配置版本检查和自动更新</li>
<li>提供类型安全的配置项访问方法</li>
<li>处理配置文件的保存和重载</li>
<li>管理SkinsRestorer插件集成配置</li>
<li>支持多种皮肤来源的优先级配置</li>
</ul>
<p><b>SkinsRestorer配置支持</b>
<ul>
<li><code>skin.source</code>皮肤来源优先级skinsrestorer/player_profile/local_cache</li>
<li><code>skin.use-skinsrestorer</code>是否启用SkinsRestorer支持</li>
<li><code>skin.cache.expire_days</code>:皮肤缓存过期时间</li>
<li>默认配置已优化优先使用SkinsRestorer以支持离线服务器</li>
</ul>
</p></div>
<dl class="notes">
<dt>从以下版本开始:</dt>
<dd>1.0.0</dd>
<dt>版本:</dt>
<dd>2.1.0</dd>
<dt>作者:</dt>
<dd>xiaobai</dd>
</dl>
</section>
<section class="summary">
<ul class="summary-list">
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
<h2>构造器概要</h2>
<div class="caption"><span>构造器</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">构造器</div>
<div class="table-header col-last">说明</div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(com.playerblocklife.PlayerBlockLife)" class="member-name-link">ConfigManager</a><wbr>(<a href="PlayerBlockLife.html" title="com.playerblocklife中的类">PlayerBlockLife</a>&nbsp;plugin)</code></div>
<div class="col-last even-row-color">
<div class="block">构造一个新的配置管理器</div>
</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>方法概要</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">所有方法</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">实例方法</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">具体方法</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
<div class="summary-table three-column-summary">
<div class="table-header col-first">修饰符和类型</div>
<div class="table-header col-second">方法</div>
<div class="table-header col-last">说明</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>int</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getAutoSaveInterval()" class="member-name-link">getAutoSaveInterval</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getBlockMaterial()" class="member-name-link">getBlockMaterial</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>int</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getBlocksPerPlayer()" class="member-name-link">getBlocksPerPlayer</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>int</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getBroadcastRange()" class="member-name-link">getBroadcastRange</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>int</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getCacheExpireDays()" class="member-name-link">getCacheExpireDays</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>org.bukkit.configuration.file.FileConfiguration</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getConfig()" class="member-name-link">getConfig</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">获取配置对象</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>int</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getDepth()" class="member-name-link">getDepth</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>int</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getExpRewardAmount()" class="member-name-link">getExpRewardAmount</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getExternalMessageFileName()" class="member-name-link">getExternalMessageFileName</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>int</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getMaxAttempts()" class="member-name-link">getMaxAttempts</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getMessage(java.lang.String,java.lang.String)" class="member-name-link">getMessage</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a>&nbsp;path,
<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a>&nbsp;defaultValue)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>int</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getMinDistance()" class="member-name-link">getMinDistance</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getOnFailureAction()" class="member-name-link">getOnFailureAction</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getSkinSource()" class="member-name-link">getSkinSource</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">获取皮肤来源配置</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>int</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getSpreadRange()" class="member-name-link">getSpreadRange</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getStorageType()" class="member-name-link">getStorageType</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#isAdminOnly(java.lang.String)" class="member-name-link">isAdminOnly</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a>&nbsp;commandName)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#isAdminUseAllowed(java.lang.String)" class="member-name-link">isAdminUseAllowed</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a>&nbsp;commandName)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#isAutoGenerationEnabled()" class="member-name-link">isAutoGenerationEnabled</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#isAutoSaveEnabled()" class="member-name-link">isAutoSaveEnabled</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#isBecomeSpectator()" class="member-name-link">isBecomeSpectator</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#isBroadcastOnBlockBreak()" class="member-name-link">isBroadcastOnBlockBreak</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#isBroadcastOnPlayerDeath()" class="member-name-link">isBroadcastOnPlayerDeath</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#isCommandEnabled(java.lang.String)" class="member-name-link">isCommandEnabled</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a>&nbsp;commandName)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#isDieWhenBlocksGone()" class="member-name-link">isDieWhenBlocksGone</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#isGiveExpReward()" class="member-name-link">isGiveExpReward</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#isHealthSystemEnabled()" class="member-name-link">isHealthSystemEnabled</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#isProtectFromExplosions()" class="member-name-link">isProtectFromExplosions</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#isProtectFromFire()" class="member-name-link">isProtectFromFire</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#isProtectFromPistons()" class="member-name-link">isProtectFromPistons</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#isRequireOpenSky()" class="member-name-link">isRequireOpenSky</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#isSelfUseAllowed(java.lang.String)" class="member-name-link">isSelfUseAllowed</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a>&nbsp;commandName)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#isSkinSystemEnabled()" class="member-name-link">isSkinSystemEnabled</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#loadConfig()" class="member-name-link">loadConfig</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">加载插件配置</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#reloadConfig()" class="member-name-link">reloadConfig</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">重新加载配置文件</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#saveConfig()" class="member-name-link">saveConfig</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">保存当前配置到文件</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#useExternalMessageFile()" class="member-name-link">useExternalMessageFile</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#useSkinsRestorer()" class="member-name-link">useSkinsRestorer</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">检查是否启用SkinsRestorer插件支持</div>
</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Object">从类继承的方法&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" title="java.lang中的类或接口" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#clone()" title="java.lang中的类或接口" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="java.lang中的类或接口" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#finalize()" title="java.lang中的类或接口" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#getClass()" title="java.lang中的类或接口" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#hashCode()" title="java.lang中的类或接口" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#notify()" title="java.lang中的类或接口" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#notifyAll()" title="java.lang中的类或接口" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#toString()" title="java.lang中的类或接口" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#wait()" title="java.lang中的类或接口" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#wait(long)" title="java.lang中的类或接口" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="java.lang中的类或接口" class="external-link">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>构造器详细资料</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;(com.playerblocklife.PlayerBlockLife)">
<h3>ConfigManager</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">ConfigManager</span><wbr><span class="parameters">(<a href="PlayerBlockLife.html" title="com.playerblocklife中的类">PlayerBlockLife</a>&nbsp;plugin)</span></div>
<div class="block">构造一个新的配置管理器</div>
<dl class="notes">
<dt>参数:</dt>
<dd><code>plugin</code> - 插件主类实例,用于访问插件相关功能</dd>
</dl>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>方法详细资料</h2>
<ul class="member-list">
<li>
<section class="detail" id="loadConfig()">
<h3>loadConfig</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">loadConfig</span>()</div>
<div class="block">加载插件配置
<p>执行以下操作:
<ol>
<li>确保插件数据文件夹存在</li>
<li>如果配置文件不存在从JAR中复制默认配置</li>
<li>调用reloadConfig()重新加载配置</li>
</ol></div>
<dl class="notes">
<dt>另请参阅:</dt>
<dd>
<ul class="tag-list">
<li><a href="#reloadConfig()"><code>reloadConfig()</code></a></li>
</ul>
</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="reloadConfig()">
<h3>reloadConfig</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">reloadConfig</span>()</div>
<div class="block">重新加载配置文件
<p>执行以下操作:
<ol>
<li>从磁盘重新加载配置文件</li>
<li>加载JAR中的默认配置作为后备</li>
<li>检查配置版本并进行必要的更新</li>
</ol></div>
<dl class="notes">
<dt>另请参阅:</dt>
<dd>
<ul class="tag-list">
<li><code>checkConfigVersion()</code></li>
</ul>
</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="saveConfig()">
<h3>saveConfig</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">saveConfig</span>()</div>
<div class="block">保存当前配置到文件
<p>将内存中的配置数据写入到config.yml文件中。
如果保存失败,会记录错误日志。</p></div>
<dl class="notes">
<dt>抛出:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/io/IOException.html" title="java.io中的类或接口" class="external-link">IOException</a></code> - 如果文件写入失败</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getConfig()">
<h3>getConfig</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">org.bukkit.configuration.file.FileConfiguration</span>&nbsp;<span class="element-name">getConfig</span>()</div>
<div class="block">获取配置对象
<p>如果配置对象为null会自动调用reloadConfig()加载配置。</p></div>
<dl class="notes">
<dt>返回:</dt>
<dd>当前的FileConfiguration配置对象</dd>
<dt>另请参阅:</dt>
<dd>
<ul class="tag-list">
<li><a href="#reloadConfig()"><code>reloadConfig()</code></a></li>
</ul>
</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getBlocksPerPlayer()">
<h3>getBlocksPerPlayer</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">getBlocksPerPlayer</span>()</div>
</section>
</li>
<li>
<section class="detail" id="getSpreadRange()">
<h3>getSpreadRange</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">getSpreadRange</span>()</div>
</section>
</li>
<li>
<section class="detail" id="getMinDistance()">
<h3>getMinDistance</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">getMinDistance</span>()</div>
</section>
</li>
<li>
<section class="detail" id="getDepth()">
<h3>getDepth</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">getDepth</span>()</div>
</section>
</li>
<li>
<section class="detail" id="getBlockMaterial()">
<h3>getBlockMaterial</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a></span>&nbsp;<span class="element-name">getBlockMaterial</span>()</div>
</section>
</li>
<li>
<section class="detail" id="isDieWhenBlocksGone()">
<h3>isDieWhenBlocksGone</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isDieWhenBlocksGone</span>()</div>
</section>
</li>
<li>
<section class="detail" id="isBecomeSpectator()">
<h3>isBecomeSpectator</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isBecomeSpectator</span>()</div>
</section>
</li>
<li>
<section class="detail" id="isHealthSystemEnabled()">
<h3>isHealthSystemEnabled</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isHealthSystemEnabled</span>()</div>
</section>
</li>
<li>
<section class="detail" id="isSkinSystemEnabled()">
<h3>isSkinSystemEnabled</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isSkinSystemEnabled</span>()</div>
</section>
</li>
<li>
<section class="detail" id="getSkinSource()">
<h3>getSkinSource</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a></span>&nbsp;<span class="element-name">getSkinSource</span>()</div>
<div class="block">获取皮肤来源配置
<p>支持的皮肤来源:
<ul>
<li><b>skinsrestorer</b>优先从SkinsRestorer插件获取皮肤纹理数据
<ul>
<li>推荐用于离线服务器</li>
<li>支持玩家自定义皮肤</li>
<li>避免默认Steve皮肤问题</li>
</ul>
</li>
<li><b>player_profile</b>优先使用Bukkit的PlayerProfile API
<ul>
<li>需要玩家在线验证</li>
<li>适合在线服务器</li>
<li>支持Mojang官方皮肤</li>
</ul>
</li>
<li><b>local_cache</b>:优先从本地缓存加载皮肤数据
<ul>
<li>减少网络请求</li>
<li>提高加载速度</li>
<li>支持离线使用</li>
</ul>
</li>
</ul>
</p>
<p>默认配置已将此值设为"skinsrestorer",以优化离线服务器体验。</p></div>
<dl class="notes">
<dt>返回:</dt>
<dd>皮肤来源配置值</dd>
<dt>另请参阅:</dt>
<dd>
<ul class="tag-list">
<li><a href="#useSkinsRestorer()"><code>useSkinsRestorer()</code></a></li>
<li><a href="SkinManager.html" title="com.playerblocklife中的类"><code>#loadPlayerSkinAsync()</code></a></li>
</ul>
</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="useSkinsRestorer()">
<h3>useSkinsRestorer</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">useSkinsRestorer</span>()</div>
<div class="block">检查是否启用SkinsRestorer插件支持
<p>当此方法返回true时插件将
<ul>
<li>优先从SkinsRestorer插件获取玩家皮肤纹理</li>
<li>支持离线服务器获取玩家自定义皮肤</li>
<li>避免方块总是显示默认Steve皮肤的问题</li>
<li>使用反射安全调用SkinsRestorer API无需硬依赖</li>
</ul>
</p>
<p>默认配置已将此值设为true以优化离线服务器体验。</p></div>
<dl class="notes">
<dt>返回:</dt>
<dd>如果启用SkinsRestorer支持返回true否则返回false</dd>
<dt>另请参阅:</dt>
<dd>
<ul class="tag-list">
<li><a href="#getSkinSource()"><code>getSkinSource()</code></a></li>
</ul>
</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getCacheExpireDays()">
<h3>getCacheExpireDays</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">getCacheExpireDays</span>()</div>
</section>
</li>
<li>
<section class="detail" id="isAutoSaveEnabled()">
<h3>isAutoSaveEnabled</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isAutoSaveEnabled</span>()</div>
</section>
</li>
<li>
<section class="detail" id="getAutoSaveInterval()">
<h3>getAutoSaveInterval</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">getAutoSaveInterval</span>()</div>
</section>
</li>
<li>
<section class="detail" id="getStorageType()">
<h3>getStorageType</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a></span>&nbsp;<span class="element-name">getStorageType</span>()</div>
</section>
</li>
<li>
<section class="detail" id="isBroadcastOnBlockBreak()">
<h3>isBroadcastOnBlockBreak</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isBroadcastOnBlockBreak</span>()</div>
</section>
</li>
<li>
<section class="detail" id="isBroadcastOnPlayerDeath()">
<h3>isBroadcastOnPlayerDeath</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isBroadcastOnPlayerDeath</span>()</div>
</section>
</li>
<li>
<section class="detail" id="getBroadcastRange()">
<h3>getBroadcastRange</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">getBroadcastRange</span>()</div>
</section>
</li>
<li>
<section class="detail" id="isGiveExpReward()">
<h3>isGiveExpReward</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isGiveExpReward</span>()</div>
</section>
</li>
<li>
<section class="detail" id="getExpRewardAmount()">
<h3>getExpRewardAmount</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">getExpRewardAmount</span>()</div>
</section>
</li>
<li>
<section class="detail" id="isProtectFromExplosions()">
<h3>isProtectFromExplosions</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isProtectFromExplosions</span>()</div>
</section>
</li>
<li>
<section class="detail" id="isProtectFromFire()">
<h3>isProtectFromFire</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isProtectFromFire</span>()</div>
</section>
</li>
<li>
<section class="detail" id="isProtectFromPistons()">
<h3>isProtectFromPistons</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isProtectFromPistons</span>()</div>
</section>
</li>
<li>
<section class="detail" id="isAutoGenerationEnabled()">
<h3>isAutoGenerationEnabled</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isAutoGenerationEnabled</span>()</div>
</section>
</li>
<li>
<section class="detail" id="isRequireOpenSky()">
<h3>isRequireOpenSky</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isRequireOpenSky</span>()</div>
</section>
</li>
<li>
<section class="detail" id="getMaxAttempts()">
<h3>getMaxAttempts</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">getMaxAttempts</span>()</div>
</section>
</li>
<li>
<section class="detail" id="getOnFailureAction()">
<h3>getOnFailureAction</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a></span>&nbsp;<span class="element-name">getOnFailureAction</span>()</div>
</section>
</li>
<li>
<section class="detail" id="isCommandEnabled(java.lang.String)">
<h3>isCommandEnabled</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isCommandEnabled</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a>&nbsp;commandName)</span></div>
</section>
</li>
<li>
<section class="detail" id="isSelfUseAllowed(java.lang.String)">
<h3>isSelfUseAllowed</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isSelfUseAllowed</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a>&nbsp;commandName)</span></div>
</section>
</li>
<li>
<section class="detail" id="isAdminUseAllowed(java.lang.String)">
<h3>isAdminUseAllowed</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isAdminUseAllowed</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a>&nbsp;commandName)</span></div>
</section>
</li>
<li>
<section class="detail" id="isAdminOnly(java.lang.String)">
<h3>isAdminOnly</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isAdminOnly</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a>&nbsp;commandName)</span></div>
</section>
</li>
<li>
<section class="detail" id="useExternalMessageFile()">
<h3>useExternalMessageFile</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">useExternalMessageFile</span>()</div>
</section>
</li>
<li>
<section class="detail" id="getExternalMessageFileName()">
<h3>getExternalMessageFileName</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a></span>&nbsp;<span class="element-name">getExternalMessageFileName</span>()</div>
</section>
</li>
<li>
<section class="detail" id="getMessage(java.lang.String,java.lang.String)">
<h3>getMessage</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a></span>&nbsp;<span class="element-name">getMessage</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a>&nbsp;path,
<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a>&nbsp;defaultValue)</span></div>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,256 @@
<!DOCTYPE HTML>
<html lang="zh">
<head>
<!-- Generated by javadoc (21) on Sat Feb 14 20:12:07 CST 2026 -->
<title>LifeSystem</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-02-14">
<meta name="description" content="declaration: package: com.playerblocklife, class: LifeSystem">
<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">
<script type="text/javascript" src="../../script.js"></script>
<script type="text/javascript" src="../../script-dir/jquery-3.7.1.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 pathtoroot = "../../";
loadScripts(document, 'script');</script>
<noscript>
<div>您的浏览器已禁用 JavaScript。</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"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="切换导航链接"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="跳过导航链接">跳过导航链接</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="导航">
<li><a href="package-summary.html">程序包</a></li>
<li class="nav-bar-cell1-rev"></li>
<li><a href="class-use/LifeSystem.html">使用</a></li>
<li><a href="package-tree.html"></a></li>
<li><a href="../../index-files/index-1.html">索引</a></li>
<li><a href="../../help-doc.html#class">帮助</a></li>
</ul>
<ul class="sub-nav-list-small">
<li>
<p>概要:</p>
<ul>
<li>嵌套</li>
<li>字段</li>
<li><a href="#constructor-summary">构造器</a></li>
<li><a href="#method-summary">方法</a></li>
</ul>
</li>
<li>
<p>详细资料:</p>
<ul>
<li>字段</li>
<li><a href="#constructor-detail">构造器</a></li>
<li><a href="#method-detail">方法</a></li>
</ul>
</li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list">
<ul class="sub-nav-list">
<li>概要:&nbsp;</li>
<li>嵌套&nbsp;|&nbsp;</li>
<li>字段&nbsp;|&nbsp;</li>
<li><a href="#constructor-summary">构造器</a>&nbsp;|&nbsp;</li>
<li><a href="#method-summary">方法</a></li>
</ul>
<ul class="sub-nav-list">
<li>详细资料:&nbsp;</li>
<li>字段&nbsp;|&nbsp;</li>
<li><a href="#constructor-detail">构造器</a>&nbsp;|&nbsp;</li>
<li><a href="#method-detail">方法</a></li>
</ul>
</div>
<div class="nav-list-search"><a href="../../search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="搜索">
<input type="reset" id="reset-button" disabled value="reset">
</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">程序包</span>&nbsp;<a href="package-summary.html">com.playerblocklife</a></div>
<h1 title="类 LifeSystem" class="title">类 LifeSystem</h1>
</div>
<div class="inheritance" title="继承树"><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" title="java.lang中的类或接口" class="external-link">java.lang.Object</a>
<div class="inheritance">com.playerblocklife.LifeSystem</div>
</div>
<section class="class-description" id="class-description">
<hr>
<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">LifeSystem</span>
<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" title="java.lang中的类或接口" class="external-link">Object</a></span></div>
<div class="block">生命值系统 - 负责管理玩家生命值和状态效果
<p>根据玩家剩余生命方块数量计算生命值,并应用相应的状态效果:
<ul>
<li>监控玩家剩余方块数量变化</li>
<li>计算对应的生命值比例</li>
<li>应用虚弱、缓慢、失明等负面效果</li>
<li>处理玩家淘汰和复活逻辑</li>
<li>提供生命值相关的音效和视觉反馈</li>
</ul>
<p>生命值计算公式:
<pre>
5个方块 → 20点生命值满血
4个方块 → 16点生命值
3个方块 → 12点生命值
2个方块 → 8点生命值
1个方块 → 4点生命值
0个方块 → 0点生命值淘汰
</pre></div>
<dl class="notes">
<dt>从以下版本开始:</dt>
<dd>1.0.0</dd>
<dt>版本:</dt>
<dd>2.1.0</dd>
<dt>作者:</dt>
<dd>xiaobai</dd>
</dl>
</section>
<section class="summary">
<ul class="summary-list">
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
<h2>构造器概要</h2>
<div class="caption"><span>构造器</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">构造器</div>
<div class="table-header col-last">说明</div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(com.playerblocklife.PlayerBlockLife)" class="member-name-link">LifeSystem</a><wbr>(<a href="PlayerBlockLife.html" title="com.playerblocklife中的类">PlayerBlockLife</a>&nbsp;plugin)</code></div>
<div class="col-last even-row-color">&nbsp;</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>方法概要</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">所有方法</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">实例方法</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">具体方法</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
<div class="summary-table three-column-summary">
<div class="table-header col-first">修饰符和类型</div>
<div class="table-header col-second">方法</div>
<div class="table-header col-last">说明</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#checkAllPlayers()" class="member-name-link">checkAllPlayers</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#checkPlayerHealth(org.bukkit.entity.Player)" class="member-name-link">checkPlayerHealth</a><wbr>(org.bukkit.entity.Player&nbsp;player)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html" title="java.lang中的类或接口" class="external-link">Integer</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getPlayerHealth(java.util.UUID)" class="member-name-link">getPlayerHealth</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/UUID.html" title="java.util中的类或接口" class="external-link">UUID</a>&nbsp;playerId)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#handlePlayerDeath(java.util.UUID)" class="member-name-link">handlePlayerDeath</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/UUID.html" title="java.util中的类或接口" class="external-link">UUID</a>&nbsp;playerId)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#isPlayerAlive(java.util.UUID)" class="member-name-link">isPlayerAlive</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/UUID.html" title="java.util中的类或接口" class="external-link">UUID</a>&nbsp;playerId)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#revivePlayer(org.bukkit.entity.Player)" class="member-name-link">revivePlayer</a><wbr>(org.bukkit.entity.Player&nbsp;player)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#setPlayerHealth(java.util.UUID,int)" class="member-name-link">setPlayerHealth</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/UUID.html" title="java.util中的类或接口" class="external-link">UUID</a>&nbsp;playerId,
int&nbsp;health)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Object">从类继承的方法&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" title="java.lang中的类或接口" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#clone()" title="java.lang中的类或接口" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="java.lang中的类或接口" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#finalize()" title="java.lang中的类或接口" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#getClass()" title="java.lang中的类或接口" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#hashCode()" title="java.lang中的类或接口" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#notify()" title="java.lang中的类或接口" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#notifyAll()" title="java.lang中的类或接口" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#toString()" title="java.lang中的类或接口" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#wait()" title="java.lang中的类或接口" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#wait(long)" title="java.lang中的类或接口" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="java.lang中的类或接口" class="external-link">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>构造器详细资料</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;(com.playerblocklife.PlayerBlockLife)">
<h3>LifeSystem</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">LifeSystem</span><wbr><span class="parameters">(<a href="PlayerBlockLife.html" title="com.playerblocklife中的类">PlayerBlockLife</a>&nbsp;plugin)</span></div>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>方法详细资料</h2>
<ul class="member-list">
<li>
<section class="detail" id="checkAllPlayers()">
<h3>checkAllPlayers</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">checkAllPlayers</span>()</div>
</section>
</li>
<li>
<section class="detail" id="checkPlayerHealth(org.bukkit.entity.Player)">
<h3>checkPlayerHealth</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">checkPlayerHealth</span><wbr><span class="parameters">(org.bukkit.entity.Player&nbsp;player)</span></div>
</section>
</li>
<li>
<section class="detail" id="handlePlayerDeath(java.util.UUID)">
<h3>handlePlayerDeath</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">handlePlayerDeath</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/UUID.html" title="java.util中的类或接口" class="external-link">UUID</a>&nbsp;playerId)</span></div>
</section>
</li>
<li>
<section class="detail" id="getPlayerHealth(java.util.UUID)">
<h3>getPlayerHealth</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html" title="java.lang中的类或接口" class="external-link">Integer</a></span>&nbsp;<span class="element-name">getPlayerHealth</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/UUID.html" title="java.util中的类或接口" class="external-link">UUID</a>&nbsp;playerId)</span></div>
</section>
</li>
<li>
<section class="detail" id="setPlayerHealth(java.util.UUID,int)">
<h3>setPlayerHealth</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setPlayerHealth</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/UUID.html" title="java.util中的类或接口" class="external-link">UUID</a>&nbsp;playerId,
int&nbsp;health)</span></div>
</section>
</li>
<li>
<section class="detail" id="isPlayerAlive(java.util.UUID)">
<h3>isPlayerAlive</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isPlayerAlive</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/UUID.html" title="java.util中的类或接口" class="external-link">UUID</a>&nbsp;playerId)</span></div>
</section>
</li>
<li>
<section class="detail" id="revivePlayer(org.bukkit.entity.Player)">
<h3>revivePlayer</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">revivePlayer</span><wbr><span class="parameters">(org.bukkit.entity.Player&nbsp;player)</span></div>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,299 @@
<!DOCTYPE HTML>
<html lang="zh">
<head>
<!-- Generated by javadoc (21) on Sat Feb 14 20:12:07 CST 2026 -->
<title>MessageManager</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-02-14">
<meta name="description" content="declaration: package: com.playerblocklife, class: MessageManager">
<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">
<script type="text/javascript" src="../../script.js"></script>
<script type="text/javascript" src="../../script-dir/jquery-3.7.1.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 pathtoroot = "../../";
loadScripts(document, 'script');</script>
<noscript>
<div>您的浏览器已禁用 JavaScript。</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"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="切换导航链接"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="跳过导航链接">跳过导航链接</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="导航">
<li><a href="package-summary.html">程序包</a></li>
<li class="nav-bar-cell1-rev"></li>
<li><a href="class-use/MessageManager.html">使用</a></li>
<li><a href="package-tree.html"></a></li>
<li><a href="../../index-files/index-1.html">索引</a></li>
<li><a href="../../help-doc.html#class">帮助</a></li>
</ul>
<ul class="sub-nav-list-small">
<li>
<p>概要:</p>
<ul>
<li>嵌套</li>
<li>字段</li>
<li><a href="#constructor-summary">构造器</a></li>
<li><a href="#method-summary">方法</a></li>
</ul>
</li>
<li>
<p>详细资料:</p>
<ul>
<li>字段</li>
<li><a href="#constructor-detail">构造器</a></li>
<li><a href="#method-detail">方法</a></li>
</ul>
</li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list">
<ul class="sub-nav-list">
<li>概要:&nbsp;</li>
<li>嵌套&nbsp;|&nbsp;</li>
<li>字段&nbsp;|&nbsp;</li>
<li><a href="#constructor-summary">构造器</a>&nbsp;|&nbsp;</li>
<li><a href="#method-summary">方法</a></li>
</ul>
<ul class="sub-nav-list">
<li>详细资料:&nbsp;</li>
<li>字段&nbsp;|&nbsp;</li>
<li><a href="#constructor-detail">构造器</a>&nbsp;|&nbsp;</li>
<li><a href="#method-detail">方法</a></li>
</ul>
</div>
<div class="nav-list-search"><a href="../../search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="搜索">
<input type="reset" id="reset-button" disabled value="reset">
</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">程序包</span>&nbsp;<a href="package-summary.html">com.playerblocklife</a></div>
<h1 title="类 MessageManager" class="title">类 MessageManager</h1>
</div>
<div class="inheritance" title="继承树"><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" title="java.lang中的类或接口" class="external-link">java.lang.Object</a>
<div class="inheritance">com.playerblocklife.MessageManager</div>
</div>
<section class="class-description" id="class-description">
<hr>
<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">MessageManager</span>
<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" title="java.lang中的类或接口" class="external-link">Object</a></span></div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
<h2>构造器概要</h2>
<div class="caption"><span>构造器</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">构造器</div>
<div class="table-header col-last">说明</div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(com.playerblocklife.PlayerBlockLife)" class="member-name-link">MessageManager</a><wbr>(<a href="PlayerBlockLife.html" title="com.playerblocklife中的类">PlayerBlockLife</a>&nbsp;plugin)</code></div>
<div class="col-last even-row-color">&nbsp;</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>方法概要</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">所有方法</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">实例方法</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">具体方法</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
<div class="summary-table three-column-summary">
<div class="table-header col-first">修饰符和类型</div>
<div class="table-header col-second">方法</div>
<div class="table-header col-last">说明</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getBroadcastMessage(java.lang.String,java.lang.String)" class="member-name-link">getBroadcastMessage</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a>&nbsp;path,
<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a>&nbsp;defaultValue)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">获取广播消息</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getCommandMessage(java.lang.String,java.lang.String,java.lang.String)" class="member-name-link">getCommandMessage</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a>&nbsp;command,
<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a>&nbsp;path,
<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a>&nbsp;defaultValue)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">获取命令消息</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getConsoleMessage(java.lang.String,java.lang.String)" class="member-name-link">getConsoleMessage</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a>&nbsp;path,
<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a>&nbsp;defaultValue)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">获取控制台消息</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getFormattedMessage(java.lang.String,java.lang.String,java.util.Map)" class="member-name-link">getFormattedMessage</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a>&nbsp;path,
<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a>&nbsp;defaultValue,
<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Map.html" title="java.util中的类或接口" class="external-link">Map</a>&lt;<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a>&gt;&nbsp;variables)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">获取格式化消息(替换变量)</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getGameMessage(java.lang.String,java.lang.String)" class="member-name-link">getGameMessage</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a>&nbsp;path,
<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a>&nbsp;defaultValue)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">获取游戏内消息</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getMessage(java.lang.String,java.lang.String)" class="member-name-link">getMessage</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a>&nbsp;path,
<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a>&nbsp;defaultValue)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">获取消息</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getMessageFilePath()" class="member-name-link">getMessageFilePath</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">获取消息文件路径</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#hasExternalMessageFile()" class="member-name-link">hasExternalMessageFile</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">检查消息文件是否存在</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#loadMessages()" class="member-name-link">loadMessages</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">加载消息配置</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#reloadMessages()" class="member-name-link">reloadMessages</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">重新加载消息配置</div>
</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Object">从类继承的方法&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" title="java.lang中的类或接口" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#clone()" title="java.lang中的类或接口" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="java.lang中的类或接口" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#finalize()" title="java.lang中的类或接口" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#getClass()" title="java.lang中的类或接口" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#hashCode()" title="java.lang中的类或接口" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#notify()" title="java.lang中的类或接口" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#notifyAll()" title="java.lang中的类或接口" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#toString()" title="java.lang中的类或接口" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#wait()" title="java.lang中的类或接口" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#wait(long)" title="java.lang中的类或接口" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="java.lang中的类或接口" class="external-link">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>构造器详细资料</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;(com.playerblocklife.PlayerBlockLife)">
<h3>MessageManager</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">MessageManager</span><wbr><span class="parameters">(<a href="PlayerBlockLife.html" title="com.playerblocklife中的类">PlayerBlockLife</a>&nbsp;plugin)</span></div>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>方法详细资料</h2>
<ul class="member-list">
<li>
<section class="detail" id="loadMessages()">
<h3>loadMessages</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">loadMessages</span>()</div>
<div class="block">加载消息配置</div>
</section>
</li>
<li>
<section class="detail" id="reloadMessages()">
<h3>reloadMessages</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">reloadMessages</span>()</div>
<div class="block">重新加载消息配置</div>
</section>
</li>
<li>
<section class="detail" id="getMessage(java.lang.String,java.lang.String)">
<h3>getMessage</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a></span>&nbsp;<span class="element-name">getMessage</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a>&nbsp;path,
<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a>&nbsp;defaultValue)</span></div>
<div class="block">获取消息</div>
</section>
</li>
<li>
<section class="detail" id="getFormattedMessage(java.lang.String,java.lang.String,java.util.Map)">
<h3>getFormattedMessage</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a></span>&nbsp;<span class="element-name">getFormattedMessage</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a>&nbsp;path,
<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a>&nbsp;defaultValue,
<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Map.html" title="java.util中的类或接口" class="external-link">Map</a>&lt;<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a>&gt;&nbsp;variables)</span></div>
<div class="block">获取格式化消息(替换变量)</div>
</section>
</li>
<li>
<section class="detail" id="getConsoleMessage(java.lang.String,java.lang.String)">
<h3>getConsoleMessage</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a></span>&nbsp;<span class="element-name">getConsoleMessage</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a>&nbsp;path,
<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a>&nbsp;defaultValue)</span></div>
<div class="block">获取控制台消息</div>
</section>
</li>
<li>
<section class="detail" id="getGameMessage(java.lang.String,java.lang.String)">
<h3>getGameMessage</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a></span>&nbsp;<span class="element-name">getGameMessage</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a>&nbsp;path,
<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a>&nbsp;defaultValue)</span></div>
<div class="block">获取游戏内消息</div>
</section>
</li>
<li>
<section class="detail" id="getCommandMessage(java.lang.String,java.lang.String,java.lang.String)">
<h3>getCommandMessage</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a></span>&nbsp;<span class="element-name">getCommandMessage</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a>&nbsp;command,
<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a>&nbsp;path,
<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a>&nbsp;defaultValue)</span></div>
<div class="block">获取命令消息</div>
</section>
</li>
<li>
<section class="detail" id="getBroadcastMessage(java.lang.String,java.lang.String)">
<h3>getBroadcastMessage</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a></span>&nbsp;<span class="element-name">getBroadcastMessage</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a>&nbsp;path,
<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a>&nbsp;defaultValue)</span></div>
<div class="block">获取广播消息</div>
</section>
</li>
<li>
<section class="detail" id="hasExternalMessageFile()">
<h3>hasExternalMessageFile</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">hasExternalMessageFile</span>()</div>
<div class="block">检查消息文件是否存在</div>
</section>
</li>
<li>
<section class="detail" id="getMessageFilePath()">
<h3>getMessageFilePath</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a></span>&nbsp;<span class="element-name">getMessageFilePath</span>()</div>
<div class="block">获取消息文件路径</div>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,401 @@
<!DOCTYPE HTML>
<html lang="zh">
<head>
<!-- Generated by javadoc (21) on Sat Feb 14 20:12:07 CST 2026 -->
<title>PlayerBlockLife</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-02-14">
<meta name="description" content="declaration: package: com.playerblocklife, class: PlayerBlockLife">
<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">
<script type="text/javascript" src="../../script.js"></script>
<script type="text/javascript" src="../../script-dir/jquery-3.7.1.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 pathtoroot = "../../";
loadScripts(document, 'script');</script>
<noscript>
<div>您的浏览器已禁用 JavaScript。</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"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="切换导航链接"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="跳过导航链接">跳过导航链接</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="导航">
<li><a href="package-summary.html">程序包</a></li>
<li class="nav-bar-cell1-rev"></li>
<li><a href="class-use/PlayerBlockLife.html">使用</a></li>
<li><a href="package-tree.html"></a></li>
<li><a href="../../index-files/index-1.html">索引</a></li>
<li><a href="../../help-doc.html#class">帮助</a></li>
</ul>
<ul class="sub-nav-list-small">
<li>
<p>概要:</p>
<ul>
<li>嵌套</li>
<li>字段</li>
<li><a href="#constructor-summary">构造器</a></li>
<li><a href="#method-summary">方法</a></li>
</ul>
</li>
<li>
<p>详细资料:</p>
<ul>
<li>字段</li>
<li><a href="#constructor-detail">构造器</a></li>
<li><a href="#method-detail">方法</a></li>
</ul>
</li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list">
<ul class="sub-nav-list">
<li>概要:&nbsp;</li>
<li>嵌套&nbsp;|&nbsp;</li>
<li>字段&nbsp;|&nbsp;</li>
<li><a href="#constructor-summary">构造器</a>&nbsp;|&nbsp;</li>
<li><a href="#method-summary">方法</a></li>
</ul>
<ul class="sub-nav-list">
<li>详细资料:&nbsp;</li>
<li>字段&nbsp;|&nbsp;</li>
<li><a href="#constructor-detail">构造器</a>&nbsp;|&nbsp;</li>
<li><a href="#method-detail">方法</a></li>
</ul>
</div>
<div class="nav-list-search"><a href="../../search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="搜索">
<input type="reset" id="reset-button" disabled value="reset">
</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">程序包</span>&nbsp;<a href="package-summary.html">com.playerblocklife</a></div>
<h1 title="类 PlayerBlockLife" class="title">类 PlayerBlockLife</h1>
</div>
<div class="inheritance" title="继承树"><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" title="java.lang中的类或接口" class="external-link">java.lang.Object</a>
<div class="inheritance">org.bukkit.plugin.PluginBase
<div class="inheritance">org.bukkit.plugin.java.JavaPlugin
<div class="inheritance">com.playerblocklife.PlayerBlockLife</div>
</div>
</div>
</div>
<section class="class-description" id="class-description">
<dl class="notes">
<dt>所有已实现的接口:</dt>
<dd><code>io.papermc.paper.plugin.lifecycle.event.LifecycleEventOwner</code>, <code>org.bukkit.command.CommandExecutor</code>, <code>org.bukkit.command.TabCompleter</code>, <code>org.bukkit.command.TabExecutor</code>, <code>org.bukkit.plugin.Plugin</code></dd>
</dl>
<hr>
<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">PlayerBlockLife</span>
<span class="extends-implements">extends org.bukkit.plugin.java.JavaPlugin</span></div>
<div class="block">PlayerBlockLife插件主类 - 玩家生命方块系统的核心控制器
<p>这个插件为Minecraft服务器添加了一个独特的游戏机制每个玩家拥有一定数量的生命方块
这些方块使用玩家的皮肤作为材质。当其他玩家挖光某个玩家的所有生命方块时,该玩家会被淘汰。</p>
<p>主要功能:
<ul>
<li>管理玩家生命方块的生成和销毁</li>
<li>处理玩家皮肤的获取和应用</li>
<li>监控玩家生命值状态</li>
<li>提供完整的命令和权限系统</li>
<li>支持配置热重载和数据持久化</li>
</ul></div>
<dl class="notes">
<dt>从以下版本开始:</dt>
<dd>1.0.0</dd>
<dt>版本:</dt>
<dd>3.0.0-experimental-1.20.4</dd>
<dt>作者:</dt>
<dd>xiaobai</dd>
</dl>
</section>
<section class="summary">
<ul class="summary-list">
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
<h2>构造器概要</h2>
<div class="caption"><span>构造器</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">构造器</div>
<div class="table-header col-last">说明</div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">PlayerBlockLife</a>()</code></div>
<div class="col-last even-row-color">&nbsp;</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>方法概要</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">所有方法</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">静态方法</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">实例方法</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">具体方法</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
<div class="summary-table three-column-summary">
<div class="table-header col-first">修饰符和类型</div>
<div class="table-header col-second">方法</div>
<div class="table-header col-last">说明</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="PlayerBlockManager.html" title="com.playerblocklife中的类">PlayerBlockManager</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getBlockManager()" class="member-name-link">getBlockManager</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="ConfigManager.html" title="com.playerblocklife中的类">ConfigManager</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getConfigManager()" class="member-name-link">getConfigManager</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="PlayerBlockLife.html" title="com.playerblocklife中的类">PlayerBlockLife</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#getInstance()" class="member-name-link">getInstance</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">获取插件单例实例</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="LifeSystem.html" title="com.playerblocklife中的类">LifeSystem</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getLifeSystem()" class="member-name-link">getLifeSystem</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="MessageManager.html" title="com.playerblocklife中的类">MessageManager</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getMessageManager()" class="member-name-link">getMessageManager</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="SkinManager.html" title="com.playerblocklife中的类">SkinManager</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getSkinManager()" class="member-name-link">getSkinManager</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#logError(java.lang.String,java.lang.Throwable)" class="member-name-link">logError</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a>&nbsp;message,
<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Throwable.html" title="java.lang中的类或接口" class="external-link">Throwable</a>&nbsp;throwable)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#logInfo(java.lang.String)" class="member-name-link">logInfo</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a>&nbsp;message)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#logWarning(java.lang.String)" class="member-name-link">logWarning</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a>&nbsp;message)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#onDisable()" class="member-name-link">onDisable</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">插件禁用时调用,执行清理操作</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#onEnable()" class="member-name-link">onEnable</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">插件启用时调用,执行初始化操作</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#reloadConfig()" class="member-name-link">reloadConfig</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">重写 reloadConfig 方法,避免循环依赖</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#reloadPluginConfig()" class="member-name-link">reloadPluginConfig</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">插件的完整重载方法(用于命令)</div>
</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-org.bukkit.plugin.java.JavaPlugin">从类继承的方法&nbsp;org.bukkit.plugin.java.JavaPlugin</h3>
<code>getClassLoader, getCommand, getConfig, getDataFolder, getDefaultBiomeProvider, getDefaultWorldGenerator, getDescription, getFile, getLifecycleManager, getLogger, getPlugin, getPluginLoader, getPluginMeta, getProvidingPlugin, getResource, getServer, getTextResource, init, init, isEnabled, isNaggable, onCommand, onLoad, onTabComplete, saveConfig, saveDefaultConfig, saveResource, setEnabled, setNaggable, toString</code></div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-org.bukkit.plugin.PluginBase">从类继承的方法&nbsp;org.bukkit.plugin.PluginBase</h3>
<code>equals, getName, hashCode</code></div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Object">从类继承的方法&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" title="java.lang中的类或接口" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#clone()" title="java.lang中的类或接口" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#finalize()" title="java.lang中的类或接口" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#getClass()" title="java.lang中的类或接口" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#notify()" title="java.lang中的类或接口" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#notifyAll()" title="java.lang中的类或接口" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#wait()" title="java.lang中的类或接口" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#wait(long)" title="java.lang中的类或接口" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="java.lang中的类或接口" class="external-link">wait</a></code></div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-org.bukkit.plugin.Plugin">从接口继承的方法&nbsp;org.bukkit.plugin.Plugin</h3>
<code>getComponentLogger, getLog4JLogger, getSLF4JLogger</code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>构造器详细资料</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;()">
<h3>PlayerBlockLife</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">PlayerBlockLife</span>()</div>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>方法详细资料</h2>
<ul class="member-list">
<li>
<section class="detail" id="onEnable()">
<h3>onEnable</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">onEnable</span>()</div>
<div class="block">插件启用时调用,执行初始化操作
<p>初始化流程:
<ol>
<li>保存默认配置文件</li>
<li>初始化所有管理器(注意依赖顺序)</li>
<li>加载配置和消息数据</li>
<li>注册事件监听器</li>
<li>注册命令执行器</li>
<li>加载玩家数据和皮肤缓存</li>
<li>启动定时任务</li>
</ol></div>
<dl class="notes">
<dt>指定者:</dt>
<dd><code>onEnable</code>&nbsp;在接口中&nbsp;<code>org.bukkit.plugin.Plugin</code></dd>
<dt>覆盖:</dt>
<dd><code>onEnable</code>&nbsp;在类中&nbsp;<code>org.bukkit.plugin.java.JavaPlugin</code></dd>
<dt>另请参阅:</dt>
<dd>
<ul class="tag-list">
<li><a href="#onDisable()"><code>onDisable()</code></a></li>
</ul>
</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="onDisable()">
<h3>onDisable</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">onDisable</span>()</div>
<div class="block">插件禁用时调用,执行清理操作
<p>执行以下清理操作:
<ul>
<li>保存玩家方块数据到文件</li>
<li>保存皮肤缓存数据</li>
<li>记录插件禁用日志</li>
</ul></div>
<dl class="notes">
<dt>指定者:</dt>
<dd><code>onDisable</code>&nbsp;在接口中&nbsp;<code>org.bukkit.plugin.Plugin</code></dd>
<dt>覆盖:</dt>
<dd><code>onDisable</code>&nbsp;在类中&nbsp;<code>org.bukkit.plugin.java.JavaPlugin</code></dd>
<dt>另请参阅:</dt>
<dd>
<ul class="tag-list">
<li><a href="#onEnable()"><code>onEnable()</code></a></li>
</ul>
</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="reloadConfig()">
<h3>reloadConfig</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">reloadConfig</span>()</div>
<div class="block">重写 reloadConfig 方法,避免循环依赖</div>
<dl class="notes">
<dt>指定者:</dt>
<dd><code>reloadConfig</code>&nbsp;在接口中&nbsp;<code>org.bukkit.plugin.Plugin</code></dd>
<dt>覆盖:</dt>
<dd><code>reloadConfig</code>&nbsp;在类中&nbsp;<code>org.bukkit.plugin.java.JavaPlugin</code></dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="reloadPluginConfig()">
<h3>reloadPluginConfig</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">reloadPluginConfig</span>()</div>
<div class="block">插件的完整重载方法(用于命令)
<p>重新加载所有插件配置和数据,包括:
<ul>
<li>主配置文件 (config.yml)</li>
<li>消息配置文件 (messages.yml)</li>
<li>玩家方块数据</li>
<li>皮肤缓存数据</li>
</ul>
<p>这个方法通常由管理员通过/pblreload命令调用。</p></div>
</section>
</li>
<li>
<section class="detail" id="getInstance()">
<h3>getInstance</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="PlayerBlockLife.html" title="com.playerblocklife中的类">PlayerBlockLife</a></span>&nbsp;<span class="element-name">getInstance</span>()</div>
<div class="block">获取插件单例实例
<p>提供全局访问点,允许其他类访问插件主实例。</p></div>
<dl class="notes">
<dt>返回:</dt>
<dd>PlayerBlockLife插件实例</dd>
<dt>抛出:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/IllegalStateException.html" title="java.lang中的类或接口" class="external-link">IllegalStateException</a></code> - 如果插件尚未启用实例为null</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getBlockManager()">
<h3>getBlockManager</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="PlayerBlockManager.html" title="com.playerblocklife中的类">PlayerBlockManager</a></span>&nbsp;<span class="element-name">getBlockManager</span>()</div>
</section>
</li>
<li>
<section class="detail" id="getSkinManager()">
<h3>getSkinManager</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="SkinManager.html" title="com.playerblocklife中的类">SkinManager</a></span>&nbsp;<span class="element-name">getSkinManager</span>()</div>
</section>
</li>
<li>
<section class="detail" id="getLifeSystem()">
<h3>getLifeSystem</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="LifeSystem.html" title="com.playerblocklife中的类">LifeSystem</a></span>&nbsp;<span class="element-name">getLifeSystem</span>()</div>
</section>
</li>
<li>
<section class="detail" id="getConfigManager()">
<h3>getConfigManager</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="ConfigManager.html" title="com.playerblocklife中的类">ConfigManager</a></span>&nbsp;<span class="element-name">getConfigManager</span>()</div>
</section>
</li>
<li>
<section class="detail" id="getMessageManager()">
<h3>getMessageManager</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="MessageManager.html" title="com.playerblocklife中的类">MessageManager</a></span>&nbsp;<span class="element-name">getMessageManager</span>()</div>
</section>
</li>
<li>
<section class="detail" id="logInfo(java.lang.String)">
<h3>logInfo</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">logInfo</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a>&nbsp;message)</span></div>
</section>
</li>
<li>
<section class="detail" id="logWarning(java.lang.String)">
<h3>logWarning</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">logWarning</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a>&nbsp;message)</span></div>
</section>
</li>
<li>
<section class="detail" id="logError(java.lang.String,java.lang.Throwable)">
<h3>logError</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">logError</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a>&nbsp;message,
<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Throwable.html" title="java.lang中的类或接口" class="external-link">Throwable</a>&nbsp;throwable)</span></div>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,472 @@
<!DOCTYPE HTML>
<html lang="zh">
<head>
<!-- Generated by javadoc (21) on Sat Feb 14 20:12:07 CST 2026 -->
<title>PlayerBlockManager</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-02-14">
<meta name="description" content="declaration: package: com.playerblocklife, class: PlayerBlockManager">
<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">
<script type="text/javascript" src="../../script.js"></script>
<script type="text/javascript" src="../../script-dir/jquery-3.7.1.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 pathtoroot = "../../";
loadScripts(document, 'script');</script>
<noscript>
<div>您的浏览器已禁用 JavaScript。</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"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="切换导航链接"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="跳过导航链接">跳过导航链接</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="导航">
<li><a href="package-summary.html">程序包</a></li>
<li class="nav-bar-cell1-rev"></li>
<li><a href="class-use/PlayerBlockManager.html">使用</a></li>
<li><a href="package-tree.html"></a></li>
<li><a href="../../index-files/index-1.html">索引</a></li>
<li><a href="../../help-doc.html#class">帮助</a></li>
</ul>
<ul class="sub-nav-list-small">
<li>
<p>概要:</p>
<ul>
<li>嵌套</li>
<li>字段</li>
<li><a href="#constructor-summary">构造器</a></li>
<li><a href="#method-summary">方法</a></li>
</ul>
</li>
<li>
<p>详细资料:</p>
<ul>
<li>字段</li>
<li><a href="#constructor-detail">构造器</a></li>
<li><a href="#method-detail">方法</a></li>
</ul>
</li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list">
<ul class="sub-nav-list">
<li>概要:&nbsp;</li>
<li>嵌套&nbsp;|&nbsp;</li>
<li>字段&nbsp;|&nbsp;</li>
<li><a href="#constructor-summary">构造器</a>&nbsp;|&nbsp;</li>
<li><a href="#method-summary">方法</a></li>
</ul>
<ul class="sub-nav-list">
<li>详细资料:&nbsp;</li>
<li>字段&nbsp;|&nbsp;</li>
<li><a href="#constructor-detail">构造器</a>&nbsp;|&nbsp;</li>
<li><a href="#method-detail">方法</a></li>
</ul>
</div>
<div class="nav-list-search"><a href="../../search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="搜索">
<input type="reset" id="reset-button" disabled value="reset">
</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">程序包</span>&nbsp;<a href="package-summary.html">com.playerblocklife</a></div>
<h1 title="类 PlayerBlockManager" class="title">类 PlayerBlockManager</h1>
</div>
<div class="inheritance" title="继承树"><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" title="java.lang中的类或接口" class="external-link">java.lang.Object</a>
<div class="inheritance">com.playerblocklife.PlayerBlockManager</div>
</div>
<section class="class-description" id="class-description">
<hr>
<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">PlayerBlockManager</span>
<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" title="java.lang中的类或接口" class="external-link">Object</a></span></div>
<div class="block">玩家方块管理器 - 负责管理玩家生命方块的核心组件
<p>主要职责:
<ul>
<li>生成和放置玩家生命方块</li>
<li>管理方块位置和所有者映射关系</li>
<li>处理方块破坏和恢复逻辑</li>
<li>提供方块数据持久化存储</li>
<li>支持方块位置查询和验证</li>
<li>与SkinManager协同工作确保方块正确显示玩家皮肤</li>
</ul>
<p><b>SkinsRestorer集成特性</b>
<ul>
<li>通过SkinManager获取SkinsRestorer提供的玩家皮肤纹理</li>
<li>确保离线服务器上的方块显示正确的自定义皮肤</li>
<li>支持异步皮肤加载,避免方块放置阻塞</li>
<li>提供皮肤加载状态检查,确保皮肤就绪后再放置方块</li>
</ul>
</p>
<p>使用并发安全的数据结构确保多线程环境下的数据一致性。</p></div>
<dl class="notes">
<dt>从以下版本开始:</dt>
<dd>1.0.0</dd>
<dt>版本:</dt>
<dd>2.1.0</dd>
<dt>作者:</dt>
<dd>xiaobai</dd>
</dl>
</section>
<section class="summary">
<ul class="summary-list">
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
<h2>构造器概要</h2>
<div class="caption"><span>构造器</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">构造器</div>
<div class="table-header col-last">说明</div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(com.playerblocklife.PlayerBlockLife,com.playerblocklife.SkinManager)" class="member-name-link">PlayerBlockManager</a><wbr>(<a href="PlayerBlockLife.html" title="com.playerblocklife中的类">PlayerBlockLife</a>&nbsp;plugin,
<a href="SkinManager.html" title="com.playerblocklife中的类">SkinManager</a>&nbsp;skinManager)</code></div>
<div class="col-last even-row-color">&nbsp;</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>方法概要</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">所有方法</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">实例方法</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">具体方法</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
<div class="summary-table three-column-summary">
<div class="table-header col-first">修饰符和类型</div>
<div class="table-header col-second">方法</div>
<div class="table-header col-last">说明</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#clearPlayerBlocks(java.util.UUID)" class="member-name-link">clearPlayerBlocks</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/UUID.html" title="java.util中的类或接口" class="external-link">UUID</a>&nbsp;playerId)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">清除玩家的所有生命方块</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#generateLifeBlocksForPlayer(org.bukkit.entity.Player,int,int,boolean,int)" class="member-name-link">generateLifeBlocksForPlayer</a><wbr>(org.bukkit.entity.Player&nbsp;player,
int&nbsp;blockAmount,
int&nbsp;spreadRange,
boolean&nbsp;requireOpenSky,
int&nbsp;maxAttempts)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">为玩家生成指定数量的生命方块</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Map.html" title="java.util中的类或接口" class="external-link">Map</a><wbr>&lt;org.bukkit.Location,<wbr><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/UUID.html" title="java.util中的类或接口" class="external-link">UUID</a>&gt;</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getAllBlockOwners()" class="member-name-link">getAllBlockOwners</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">获取所有方块的位置和所有者</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Map.html" title="java.util中的类或接口" class="external-link">Map</a><wbr>&lt;<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/UUID.html" title="java.util中的类或接口" class="external-link">UUID</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html" title="java.util中的类或接口" class="external-link">List</a>&lt;org.bukkit.Location&gt;&gt;</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getAllPlayerBlocks()" class="member-name-link">getAllPlayerBlocks</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">获取所有玩家的方块数据</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/UUID.html" title="java.util中的类或接口" class="external-link">UUID</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getBlockOwner(org.bukkit.Location)" class="member-name-link">getBlockOwner</a><wbr>(org.bukkit.Location&nbsp;location)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">检查方块是否属于某个玩家</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>org.bukkit.Location</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getNearestBlock(org.bukkit.entity.Player)" class="member-name-link">getNearestBlock</a><wbr>(org.bukkit.entity.Player&nbsp;player)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">获取距离玩家最近的方块</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html" title="java.util中的类或接口" class="external-link">List</a><wbr>&lt;<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a>&gt;</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getPlayerBlockLocations(java.util.UUID)" class="member-name-link">getPlayerBlockLocations</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/UUID.html" title="java.util中的类或接口" class="external-link">UUID</a>&nbsp;playerId)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">获取玩家的生命方块位置列表(用于显示)</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html" title="java.util中的类或接口" class="external-link">List</a><wbr>&lt;org.bukkit.Location&gt;</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getPlayerBlocks(java.util.UUID)" class="member-name-link">getPlayerBlocks</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/UUID.html" title="java.util中的类或接口" class="external-link">UUID</a>&nbsp;playerId)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">获取玩家的所有生命方块位置</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>int</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getPlayerBlocksCount()" class="member-name-link">getPlayerBlocksCount</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">获取已注册玩家的数量</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>int</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getRemainingBlocks(java.util.UUID)" class="member-name-link">getRemainingBlocks</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/UUID.html" title="java.util中的类或接口" class="external-link">UUID</a>&nbsp;playerId)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">获取玩家剩余方块数量</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Map.html" title="java.util中的类或接口" class="external-link">Map</a><wbr>&lt;<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" title="java.lang中的类或接口" class="external-link">Object</a>&gt;</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getStats()" class="member-name-link">getStats</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">获取所有生命方块的统计信息</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>int</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getTotalBlocksCount()" class="member-name-link">getTotalBlocksCount</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">获取总方块数量</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#hasLifeBlocks(java.util.UUID)" class="member-name-link">hasLifeBlocks</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/UUID.html" title="java.util中的类或接口" class="external-link">UUID</a>&nbsp;playerId)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">检查玩家是否有生命方块</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#isLifeBlock(org.bukkit.Location)" class="member-name-link">isLifeBlock</a><wbr>(org.bukkit.Location&nbsp;location)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">检查位置是否包含生命方块</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#loadData()" class="member-name-link">loadData</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">加载数据</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#regeneratePlayerBlocks(org.bukkit.entity.Player)" class="member-name-link">regeneratePlayerBlocks</a><wbr>(org.bukkit.entity.Player&nbsp;player)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">重新生成玩家的生命方块</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#removeBlock(org.bukkit.Location,org.bukkit.entity.Player)" class="member-name-link">removeBlock</a><wbr>(org.bukkit.Location&nbsp;location,
org.bukkit.entity.Player&nbsp;breaker)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">移除方块(当被挖掘时)</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#saveData()" class="member-name-link">saveData</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">保存数据</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#setLifeBlocks(org.bukkit.entity.Player,org.bukkit.Location)" class="member-name-link">setLifeBlocks</a><wbr>(org.bukkit.entity.Player&nbsp;player,
org.bukkit.Location&nbsp;center)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">为玩家设置生命方块(兼容旧方法)</div>
</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Object">从类继承的方法&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" title="java.lang中的类或接口" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#clone()" title="java.lang中的类或接口" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="java.lang中的类或接口" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#finalize()" title="java.lang中的类或接口" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#getClass()" title="java.lang中的类或接口" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#hashCode()" title="java.lang中的类或接口" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#notify()" title="java.lang中的类或接口" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#notifyAll()" title="java.lang中的类或接口" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#toString()" title="java.lang中的类或接口" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#wait()" title="java.lang中的类或接口" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#wait(long)" title="java.lang中的类或接口" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="java.lang中的类或接口" class="external-link">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>构造器详细资料</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;(com.playerblocklife.PlayerBlockLife,com.playerblocklife.SkinManager)">
<h3>PlayerBlockManager</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">PlayerBlockManager</span><wbr><span class="parameters">(<a href="PlayerBlockLife.html" title="com.playerblocklife中的类">PlayerBlockLife</a>&nbsp;plugin,
<a href="SkinManager.html" title="com.playerblocklife中的类">SkinManager</a>&nbsp;skinManager)</span></div>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>方法详细资料</h2>
<ul class="member-list">
<li>
<section class="detail" id="setLifeBlocks(org.bukkit.entity.Player,org.bukkit.Location)">
<h3>setLifeBlocks</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">setLifeBlocks</span><wbr><span class="parameters">(org.bukkit.entity.Player&nbsp;player,
org.bukkit.Location&nbsp;center)</span></div>
<div class="block">为玩家设置生命方块(兼容旧方法)</div>
</section>
</li>
<li>
<section class="detail" id="generateLifeBlocksForPlayer(org.bukkit.entity.Player,int,int,boolean,int)">
<h3>generateLifeBlocksForPlayer</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">generateLifeBlocksForPlayer</span><wbr><span class="parameters">(org.bukkit.entity.Player&nbsp;player,
int&nbsp;blockAmount,
int&nbsp;spreadRange,
boolean&nbsp;requireOpenSky,
int&nbsp;maxAttempts)</span></div>
<div class="block">为玩家生成指定数量的生命方块
<p>此方法负责生成玩家的生命方块,包括以下步骤:
<ol>
<li>检查玩家是否已有生命方块</li>
<li>验证玩家皮肤是否已从SkinsRestorer或其他来源加载完成</li>
<li>在指定范围内寻找合适的放置位置</li>
<li>放置带有玩家皮肤纹理的玩家头颅方块</li>
<li>记录方块位置和所有者关系</li>
<li>保存数据并返回生成结果</li>
</ol>
</p>
<p><b>皮肤加载检查:</b>
<ul>
<li>调用skinManager.isSkinLoaded()检查皮肤是否就绪</li>
<li>如果皮肤未加载,方块生成将失败</li>
<li>确保离线服务器通过SkinsRestorer获取的皮肤能正确应用</li>
<li>避免放置默认Steve皮肤的方块</li>
</ul>
</p></div>
<dl class="notes">
<dt>参数:</dt>
<dd><code>player</code> - 目标玩家</dd>
<dd><code>blockAmount</code> - 要生成的方块数量</dd>
<dd><code>spreadRange</code> - 生成范围(以玩家为中心的正方形边长的一半)</dd>
<dd><code>requireOpenSky</code> - 是否需要开阔天空(上方无方块覆盖)</dd>
<dd><code>maxAttempts</code> - 寻找合适位置的最大尝试次数</dd>
<dt>返回:</dt>
<dd>生成成功返回true失败返回false</dd>
<dt>另请参阅:</dt>
<dd>
<ul class="tag-list-long">
<li><a href="SkinManager.html#isSkinLoaded(java.util.UUID)"><code>SkinManager.isSkinLoaded(UUID)</code></a></li>
<li><code>SkinManager.getSkinFromSkinsRestorer(Player)</code></li>
</ul>
</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getBlockOwner(org.bukkit.Location)">
<h3>getBlockOwner</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/UUID.html" title="java.util中的类或接口" class="external-link">UUID</a></span>&nbsp;<span class="element-name">getBlockOwner</span><wbr><span class="parameters">(org.bukkit.Location&nbsp;location)</span></div>
<div class="block">检查方块是否属于某个玩家</div>
</section>
</li>
<li>
<section class="detail" id="removeBlock(org.bukkit.Location,org.bukkit.entity.Player)">
<h3>removeBlock</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">removeBlock</span><wbr><span class="parameters">(org.bukkit.Location&nbsp;location,
org.bukkit.entity.Player&nbsp;breaker)</span></div>
<div class="block">移除方块(当被挖掘时)</div>
</section>
</li>
<li>
<section class="detail" id="getRemainingBlocks(java.util.UUID)">
<h3>getRemainingBlocks</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">getRemainingBlocks</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/UUID.html" title="java.util中的类或接口" class="external-link">UUID</a>&nbsp;playerId)</span></div>
<div class="block">获取玩家剩余方块数量</div>
</section>
</li>
<li>
<section class="detail" id="hasLifeBlocks(java.util.UUID)">
<h3>hasLifeBlocks</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">hasLifeBlocks</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/UUID.html" title="java.util中的类或接口" class="external-link">UUID</a>&nbsp;playerId)</span></div>
<div class="block">检查玩家是否有生命方块</div>
</section>
</li>
<li>
<section class="detail" id="getPlayerBlocks(java.util.UUID)">
<h3>getPlayerBlocks</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html" title="java.util中的类或接口" class="external-link">List</a>&lt;org.bukkit.Location&gt;</span>&nbsp;<span class="element-name">getPlayerBlocks</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/UUID.html" title="java.util中的类或接口" class="external-link">UUID</a>&nbsp;playerId)</span></div>
<div class="block">获取玩家的所有生命方块位置</div>
</section>
</li>
<li>
<section class="detail" id="clearPlayerBlocks(java.util.UUID)">
<h3>clearPlayerBlocks</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">clearPlayerBlocks</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/UUID.html" title="java.util中的类或接口" class="external-link">UUID</a>&nbsp;playerId)</span></div>
<div class="block">清除玩家的所有生命方块</div>
</section>
</li>
<li>
<section class="detail" id="regeneratePlayerBlocks(org.bukkit.entity.Player)">
<h3>regeneratePlayerBlocks</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">regeneratePlayerBlocks</span><wbr><span class="parameters">(org.bukkit.entity.Player&nbsp;player)</span></div>
<div class="block">重新生成玩家的生命方块</div>
</section>
</li>
<li>
<section class="detail" id="getPlayerBlocksCount()">
<h3>getPlayerBlocksCount</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">getPlayerBlocksCount</span>()</div>
<div class="block">获取已注册玩家的数量</div>
</section>
</li>
<li>
<section class="detail" id="getTotalBlocksCount()">
<h3>getTotalBlocksCount</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">getTotalBlocksCount</span>()</div>
<div class="block">获取总方块数量</div>
</section>
</li>
<li>
<section class="detail" id="loadData()">
<h3>loadData</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">loadData</span>()</div>
<div class="block">加载数据</div>
</section>
</li>
<li>
<section class="detail" id="saveData()">
<h3>saveData</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">saveData</span>()</div>
<div class="block">保存数据</div>
</section>
</li>
<li>
<section class="detail" id="getAllPlayerBlocks()">
<h3>getAllPlayerBlocks</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Map.html" title="java.util中的类或接口" class="external-link">Map</a>&lt;<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/UUID.html" title="java.util中的类或接口" class="external-link">UUID</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html" title="java.util中的类或接口" class="external-link">List</a>&lt;org.bukkit.Location&gt;&gt;</span>&nbsp;<span class="element-name">getAllPlayerBlocks</span>()</div>
<div class="block">获取所有玩家的方块数据</div>
</section>
</li>
<li>
<section class="detail" id="getAllBlockOwners()">
<h3>getAllBlockOwners</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Map.html" title="java.util中的类或接口" class="external-link">Map</a>&lt;org.bukkit.Location,<wbr><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/UUID.html" title="java.util中的类或接口" class="external-link">UUID</a>&gt;</span>&nbsp;<span class="element-name">getAllBlockOwners</span>()</div>
<div class="block">获取所有方块的位置和所有者</div>
</section>
</li>
<li>
<section class="detail" id="isLifeBlock(org.bukkit.Location)">
<h3>isLifeBlock</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isLifeBlock</span><wbr><span class="parameters">(org.bukkit.Location&nbsp;location)</span></div>
<div class="block">检查位置是否包含生命方块</div>
</section>
</li>
<li>
<section class="detail" id="getPlayerBlockLocations(java.util.UUID)">
<h3>getPlayerBlockLocations</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html" title="java.util中的类或接口" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a>&gt;</span>&nbsp;<span class="element-name">getPlayerBlockLocations</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/UUID.html" title="java.util中的类或接口" class="external-link">UUID</a>&nbsp;playerId)</span></div>
<div class="block">获取玩家的生命方块位置列表(用于显示)</div>
</section>
</li>
<li>
<section class="detail" id="getNearestBlock(org.bukkit.entity.Player)">
<h3>getNearestBlock</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">org.bukkit.Location</span>&nbsp;<span class="element-name">getNearestBlock</span><wbr><span class="parameters">(org.bukkit.entity.Player&nbsp;player)</span></div>
<div class="block">获取距离玩家最近的方块</div>
</section>
</li>
<li>
<section class="detail" id="getStats()">
<h3>getStats</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Map.html" title="java.util中的类或接口" class="external-link">Map</a>&lt;<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" title="java.lang中的类或接口" class="external-link">Object</a>&gt;</span>&nbsp;<span class="element-name">getStats</span>()</div>
<div class="block">获取所有生命方块的统计信息</div>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,186 @@
<!DOCTYPE HTML>
<html lang="zh">
<head>
<!-- Generated by javadoc (21) on Sat Feb 14 20:12:07 CST 2026 -->
<title>PlayerJoinListener</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-02-14">
<meta name="description" content="declaration: package: com.playerblocklife, class: PlayerJoinListener">
<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">
<script type="text/javascript" src="../../script.js"></script>
<script type="text/javascript" src="../../script-dir/jquery-3.7.1.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 pathtoroot = "../../";
loadScripts(document, 'script');</script>
<noscript>
<div>您的浏览器已禁用 JavaScript。</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"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="切换导航链接"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="跳过导航链接">跳过导航链接</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="导航">
<li><a href="package-summary.html">程序包</a></li>
<li class="nav-bar-cell1-rev"></li>
<li><a href="class-use/PlayerJoinListener.html">使用</a></li>
<li><a href="package-tree.html"></a></li>
<li><a href="../../index-files/index-1.html">索引</a></li>
<li><a href="../../help-doc.html#class">帮助</a></li>
</ul>
<ul class="sub-nav-list-small">
<li>
<p>概要:</p>
<ul>
<li>嵌套</li>
<li>字段</li>
<li><a href="#constructor-summary">构造器</a></li>
<li><a href="#method-summary">方法</a></li>
</ul>
</li>
<li>
<p>详细资料:</p>
<ul>
<li>字段</li>
<li><a href="#constructor-detail">构造器</a></li>
<li><a href="#method-detail">方法</a></li>
</ul>
</li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list">
<ul class="sub-nav-list">
<li>概要:&nbsp;</li>
<li>嵌套&nbsp;|&nbsp;</li>
<li>字段&nbsp;|&nbsp;</li>
<li><a href="#constructor-summary">构造器</a>&nbsp;|&nbsp;</li>
<li><a href="#method-summary">方法</a></li>
</ul>
<ul class="sub-nav-list">
<li>详细资料:&nbsp;</li>
<li>字段&nbsp;|&nbsp;</li>
<li><a href="#constructor-detail">构造器</a>&nbsp;|&nbsp;</li>
<li><a href="#method-detail">方法</a></li>
</ul>
</div>
<div class="nav-list-search"><a href="../../search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="搜索">
<input type="reset" id="reset-button" disabled value="reset">
</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">程序包</span>&nbsp;<a href="package-summary.html">com.playerblocklife</a></div>
<h1 title="类 PlayerJoinListener" class="title">类 PlayerJoinListener</h1>
</div>
<div class="inheritance" title="继承树"><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" title="java.lang中的类或接口" class="external-link">java.lang.Object</a>
<div class="inheritance">com.playerblocklife.PlayerJoinListener</div>
</div>
<section class="class-description" id="class-description">
<dl class="notes">
<dt>所有已实现的接口:</dt>
<dd><code>org.bukkit.event.Listener</code></dd>
</dl>
<hr>
<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">PlayerJoinListener</span>
<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" title="java.lang中的类或接口" class="external-link">Object</a>
implements org.bukkit.event.Listener</span></div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
<h2>构造器概要</h2>
<div class="caption"><span>构造器</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">构造器</div>
<div class="table-header col-last">说明</div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(com.playerblocklife.PlayerBlockLife)" class="member-name-link">PlayerJoinListener</a><wbr>(<a href="PlayerBlockLife.html" title="com.playerblocklife中的类">PlayerBlockLife</a>&nbsp;plugin)</code></div>
<div class="col-last even-row-color">&nbsp;</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>方法概要</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">所有方法</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">实例方法</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">具体方法</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
<div class="summary-table three-column-summary">
<div class="table-header col-first">修饰符和类型</div>
<div class="table-header col-second">方法</div>
<div class="table-header col-last">说明</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#onPlayerJoin(org.bukkit.event.player.PlayerJoinEvent)" class="member-name-link">onPlayerJoin</a><wbr>(org.bukkit.event.player.PlayerJoinEvent&nbsp;event)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#onPlayerRespawn(org.bukkit.event.player.PlayerRespawnEvent)" class="member-name-link">onPlayerRespawn</a><wbr>(org.bukkit.event.player.PlayerRespawnEvent&nbsp;event)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Object">从类继承的方法&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" title="java.lang中的类或接口" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#clone()" title="java.lang中的类或接口" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="java.lang中的类或接口" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#finalize()" title="java.lang中的类或接口" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#getClass()" title="java.lang中的类或接口" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#hashCode()" title="java.lang中的类或接口" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#notify()" title="java.lang中的类或接口" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#notifyAll()" title="java.lang中的类或接口" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#toString()" title="java.lang中的类或接口" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#wait()" title="java.lang中的类或接口" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#wait(long)" title="java.lang中的类或接口" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="java.lang中的类或接口" class="external-link">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>构造器详细资料</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;(com.playerblocklife.PlayerBlockLife)">
<h3>PlayerJoinListener</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">PlayerJoinListener</span><wbr><span class="parameters">(<a href="PlayerBlockLife.html" title="com.playerblocklife中的类">PlayerBlockLife</a>&nbsp;plugin)</span></div>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>方法详细资料</h2>
<ul class="member-list">
<li>
<section class="detail" id="onPlayerJoin(org.bukkit.event.player.PlayerJoinEvent)">
<h3>onPlayerJoin</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">onPlayerJoin</span><wbr><span class="parameters">(org.bukkit.event.player.PlayerJoinEvent&nbsp;event)</span></div>
</section>
</li>
<li>
<section class="detail" id="onPlayerRespawn(org.bukkit.event.player.PlayerRespawnEvent)">
<h3>onPlayerRespawn</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">onPlayerRespawn</span><wbr><span class="parameters">(org.bukkit.event.player.PlayerRespawnEvent&nbsp;event)</span></div>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,177 @@
<!DOCTYPE HTML>
<html lang="zh">
<head>
<!-- Generated by javadoc (21) on Sat Feb 14 20:12:07 CST 2026 -->
<title>PlayerQuitListener</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-02-14">
<meta name="description" content="declaration: package: com.playerblocklife, class: PlayerQuitListener">
<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">
<script type="text/javascript" src="../../script.js"></script>
<script type="text/javascript" src="../../script-dir/jquery-3.7.1.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 pathtoroot = "../../";
loadScripts(document, 'script');</script>
<noscript>
<div>您的浏览器已禁用 JavaScript。</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"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="切换导航链接"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="跳过导航链接">跳过导航链接</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="导航">
<li><a href="package-summary.html">程序包</a></li>
<li class="nav-bar-cell1-rev"></li>
<li><a href="class-use/PlayerQuitListener.html">使用</a></li>
<li><a href="package-tree.html"></a></li>
<li><a href="../../index-files/index-1.html">索引</a></li>
<li><a href="../../help-doc.html#class">帮助</a></li>
</ul>
<ul class="sub-nav-list-small">
<li>
<p>概要:</p>
<ul>
<li>嵌套</li>
<li>字段</li>
<li><a href="#constructor-summary">构造器</a></li>
<li><a href="#method-summary">方法</a></li>
</ul>
</li>
<li>
<p>详细资料:</p>
<ul>
<li>字段</li>
<li><a href="#constructor-detail">构造器</a></li>
<li><a href="#method-detail">方法</a></li>
</ul>
</li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list">
<ul class="sub-nav-list">
<li>概要:&nbsp;</li>
<li>嵌套&nbsp;|&nbsp;</li>
<li>字段&nbsp;|&nbsp;</li>
<li><a href="#constructor-summary">构造器</a>&nbsp;|&nbsp;</li>
<li><a href="#method-summary">方法</a></li>
</ul>
<ul class="sub-nav-list">
<li>详细资料:&nbsp;</li>
<li>字段&nbsp;|&nbsp;</li>
<li><a href="#constructor-detail">构造器</a>&nbsp;|&nbsp;</li>
<li><a href="#method-detail">方法</a></li>
</ul>
</div>
<div class="nav-list-search"><a href="../../search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="搜索">
<input type="reset" id="reset-button" disabled value="reset">
</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">程序包</span>&nbsp;<a href="package-summary.html">com.playerblocklife</a></div>
<h1 title="类 PlayerQuitListener" class="title">类 PlayerQuitListener</h1>
</div>
<div class="inheritance" title="继承树"><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" title="java.lang中的类或接口" class="external-link">java.lang.Object</a>
<div class="inheritance">com.playerblocklife.PlayerQuitListener</div>
</div>
<section class="class-description" id="class-description">
<dl class="notes">
<dt>所有已实现的接口:</dt>
<dd><code>org.bukkit.event.Listener</code></dd>
</dl>
<hr>
<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">PlayerQuitListener</span>
<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" title="java.lang中的类或接口" class="external-link">Object</a>
implements org.bukkit.event.Listener</span></div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
<h2>构造器概要</h2>
<div class="caption"><span>构造器</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">构造器</div>
<div class="table-header col-last">说明</div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(com.playerblocklife.PlayerBlockLife)" class="member-name-link">PlayerQuitListener</a><wbr>(<a href="PlayerBlockLife.html" title="com.playerblocklife中的类">PlayerBlockLife</a>&nbsp;plugin)</code></div>
<div class="col-last even-row-color">&nbsp;</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>方法概要</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">所有方法</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">实例方法</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">具体方法</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
<div class="summary-table three-column-summary">
<div class="table-header col-first">修饰符和类型</div>
<div class="table-header col-second">方法</div>
<div class="table-header col-last">说明</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#onPlayerQuit(org.bukkit.event.player.PlayerQuitEvent)" class="member-name-link">onPlayerQuit</a><wbr>(org.bukkit.event.player.PlayerQuitEvent&nbsp;event)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Object">从类继承的方法&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" title="java.lang中的类或接口" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#clone()" title="java.lang中的类或接口" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="java.lang中的类或接口" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#finalize()" title="java.lang中的类或接口" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#getClass()" title="java.lang中的类或接口" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#hashCode()" title="java.lang中的类或接口" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#notify()" title="java.lang中的类或接口" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#notifyAll()" title="java.lang中的类或接口" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#toString()" title="java.lang中的类或接口" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#wait()" title="java.lang中的类或接口" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#wait(long)" title="java.lang中的类或接口" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="java.lang中的类或接口" class="external-link">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>构造器详细资料</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;(com.playerblocklife.PlayerBlockLife)">
<h3>PlayerQuitListener</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">PlayerQuitListener</span><wbr><span class="parameters">(<a href="PlayerBlockLife.html" title="com.playerblocklife中的类">PlayerBlockLife</a>&nbsp;plugin)</span></div>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>方法详细资料</h2>
<ul class="member-list">
<li>
<section class="detail" id="onPlayerQuit(org.bukkit.event.player.PlayerQuitEvent)">
<h3>onPlayerQuit</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">onPlayerQuit</span><wbr><span class="parameters">(org.bukkit.event.player.PlayerQuitEvent&nbsp;event)</span></div>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,187 @@
<!DOCTYPE HTML>
<html lang="zh">
<head>
<!-- Generated by javadoc (21) on Sat Feb 14 20:12:07 CST 2026 -->
<title>SetLifeBlocksCommand</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-02-14">
<meta name="description" content="declaration: package: com.playerblocklife, class: SetLifeBlocksCommand">
<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">
<script type="text/javascript" src="../../script.js"></script>
<script type="text/javascript" src="../../script-dir/jquery-3.7.1.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 pathtoroot = "../../";
loadScripts(document, 'script');</script>
<noscript>
<div>您的浏览器已禁用 JavaScript。</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"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="切换导航链接"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="跳过导航链接">跳过导航链接</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="导航">
<li><a href="package-summary.html">程序包</a></li>
<li class="nav-bar-cell1-rev"></li>
<li><a href="class-use/SetLifeBlocksCommand.html">使用</a></li>
<li><a href="package-tree.html"></a></li>
<li><a href="../../index-files/index-1.html">索引</a></li>
<li><a href="../../help-doc.html#class">帮助</a></li>
</ul>
<ul class="sub-nav-list-small">
<li>
<p>概要:</p>
<ul>
<li>嵌套</li>
<li>字段</li>
<li><a href="#constructor-summary">构造器</a></li>
<li><a href="#method-summary">方法</a></li>
</ul>
</li>
<li>
<p>详细资料:</p>
<ul>
<li>字段</li>
<li><a href="#constructor-detail">构造器</a></li>
<li><a href="#method-detail">方法</a></li>
</ul>
</li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list">
<ul class="sub-nav-list">
<li>概要:&nbsp;</li>
<li>嵌套&nbsp;|&nbsp;</li>
<li>字段&nbsp;|&nbsp;</li>
<li><a href="#constructor-summary">构造器</a>&nbsp;|&nbsp;</li>
<li><a href="#method-summary">方法</a></li>
</ul>
<ul class="sub-nav-list">
<li>详细资料:&nbsp;</li>
<li>字段&nbsp;|&nbsp;</li>
<li><a href="#constructor-detail">构造器</a>&nbsp;|&nbsp;</li>
<li><a href="#method-detail">方法</a></li>
</ul>
</div>
<div class="nav-list-search"><a href="../../search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="搜索">
<input type="reset" id="reset-button" disabled value="reset">
</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">程序包</span>&nbsp;<a href="package-summary.html">com.playerblocklife</a></div>
<h1 title="类 SetLifeBlocksCommand" class="title">类 SetLifeBlocksCommand</h1>
</div>
<div class="inheritance" title="继承树"><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" title="java.lang中的类或接口" class="external-link">java.lang.Object</a>
<div class="inheritance">com.playerblocklife.SetLifeBlocksCommand</div>
</div>
<section class="class-description" id="class-description">
<dl class="notes">
<dt>所有已实现的接口:</dt>
<dd><code>org.bukkit.command.CommandExecutor</code></dd>
</dl>
<hr>
<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">SetLifeBlocksCommand</span>
<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" title="java.lang中的类或接口" class="external-link">Object</a>
implements org.bukkit.command.CommandExecutor</span></div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
<h2>构造器概要</h2>
<div class="caption"><span>构造器</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">构造器</div>
<div class="table-header col-last">说明</div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(com.playerblocklife.PlayerBlockLife)" class="member-name-link">SetLifeBlocksCommand</a><wbr>(<a href="PlayerBlockLife.html" title="com.playerblocklife中的类">PlayerBlockLife</a>&nbsp;plugin)</code></div>
<div class="col-last even-row-color">&nbsp;</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>方法概要</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">所有方法</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">实例方法</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">具体方法</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
<div class="summary-table three-column-summary">
<div class="table-header col-first">修饰符和类型</div>
<div class="table-header col-second">方法</div>
<div class="table-header col-last">说明</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#onCommand(org.bukkit.command.CommandSender,org.bukkit.command.Command,java.lang.String,java.lang.String%5B%5D)" class="member-name-link">onCommand</a><wbr>(org.bukkit.command.CommandSender&nbsp;sender,
org.bukkit.command.Command&nbsp;command,
<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a>&nbsp;label,
<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a>[]&nbsp;args)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Object">从类继承的方法&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" title="java.lang中的类或接口" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#clone()" title="java.lang中的类或接口" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="java.lang中的类或接口" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#finalize()" title="java.lang中的类或接口" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#getClass()" title="java.lang中的类或接口" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#hashCode()" title="java.lang中的类或接口" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#notify()" title="java.lang中的类或接口" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#notifyAll()" title="java.lang中的类或接口" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#toString()" title="java.lang中的类或接口" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#wait()" title="java.lang中的类或接口" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#wait(long)" title="java.lang中的类或接口" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="java.lang中的类或接口" class="external-link">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>构造器详细资料</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;(com.playerblocklife.PlayerBlockLife)">
<h3>SetLifeBlocksCommand</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">SetLifeBlocksCommand</span><wbr><span class="parameters">(<a href="PlayerBlockLife.html" title="com.playerblocklife中的类">PlayerBlockLife</a>&nbsp;plugin)</span></div>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>方法详细资料</h2>
<ul class="member-list">
<li>
<section class="detail" id="onCommand(org.bukkit.command.CommandSender,org.bukkit.command.Command,java.lang.String,java.lang.String[])">
<h3>onCommand</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">onCommand</span><wbr><span class="parameters">(org.bukkit.command.CommandSender&nbsp;sender,
org.bukkit.command.Command&nbsp;command,
<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a>&nbsp;label,
<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a>[]&nbsp;args)</span></div>
<dl class="notes">
<dt>指定者:</dt>
<dd><code>onCommand</code>&nbsp;在接口中&nbsp;<code>org.bukkit.command.CommandExecutor</code></dd>
</dl>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,296 @@
<!DOCTYPE HTML>
<html lang="zh">
<head>
<!-- Generated by javadoc (21) on Sat Feb 14 20:12:07 CST 2026 -->
<title>SkinManager</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-02-14">
<meta name="description" content="declaration: package: com.playerblocklife, class: SkinManager">
<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">
<script type="text/javascript" src="../../script.js"></script>
<script type="text/javascript" src="../../script-dir/jquery-3.7.1.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 pathtoroot = "../../";
loadScripts(document, 'script');</script>
<noscript>
<div>您的浏览器已禁用 JavaScript。</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"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="切换导航链接"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="跳过导航链接">跳过导航链接</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="导航">
<li><a href="package-summary.html">程序包</a></li>
<li class="nav-bar-cell1-rev"></li>
<li><a href="class-use/SkinManager.html">使用</a></li>
<li><a href="package-tree.html"></a></li>
<li><a href="../../index-files/index-1.html">索引</a></li>
<li><a href="../../help-doc.html#class">帮助</a></li>
</ul>
<ul class="sub-nav-list-small">
<li>
<p>概要:</p>
<ul>
<li>嵌套</li>
<li>字段</li>
<li><a href="#constructor-summary">构造器</a></li>
<li><a href="#method-summary">方法</a></li>
</ul>
</li>
<li>
<p>详细资料:</p>
<ul>
<li>字段</li>
<li><a href="#constructor-detail">构造器</a></li>
<li><a href="#method-detail">方法</a></li>
</ul>
</li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list">
<ul class="sub-nav-list">
<li>概要:&nbsp;</li>
<li>嵌套&nbsp;|&nbsp;</li>
<li>字段&nbsp;|&nbsp;</li>
<li><a href="#constructor-summary">构造器</a>&nbsp;|&nbsp;</li>
<li><a href="#method-summary">方法</a></li>
</ul>
<ul class="sub-nav-list">
<li>详细资料:&nbsp;</li>
<li>字段&nbsp;|&nbsp;</li>
<li><a href="#constructor-detail">构造器</a>&nbsp;|&nbsp;</li>
<li><a href="#method-detail">方法</a></li>
</ul>
</div>
<div class="nav-list-search"><a href="../../search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="搜索">
<input type="reset" id="reset-button" disabled value="reset">
</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">程序包</span>&nbsp;<a href="package-summary.html">com.playerblocklife</a></div>
<h1 title="类 SkinManager" class="title">类 SkinManager</h1>
</div>
<div class="inheritance" title="继承树"><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" title="java.lang中的类或接口" class="external-link">java.lang.Object</a>
<div class="inheritance">com.playerblocklife.SkinManager</div>
</div>
<section class="class-description" id="class-description">
<hr>
<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">SkinManager</span>
<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" title="java.lang中的类或接口" class="external-link">Object</a></span></div>
<div class="block">皮肤管理器 - 负责玩家皮肤的获取、缓存和应用
<p>主要功能:
<ul>
<li>从多种来源获取玩家皮肤数据SkinsRestorer插件、PlayerProfile、本地缓存</li>
<li>皮肤数据Base64编码和缓存管理</li>
<li>自定义模型数据分配和管理</li>
<li>异步皮肤加载避免阻塞主线程</li>
<li>皮肤缓存过期清理</li>
<li>完整的SkinsRestorer插件集成支持</li>
</ul>
<p>皮肤获取优先级根据配置的source字段
<ol>
<li><b>skinsrestorer</b>优先从SkinsRestorer插件获取皮肤纹理数据</li>
<li><b>player_profile</b>优先使用Bukkit的PlayerProfile API</li>
<li><b>local_cache</b>:优先从本地缓存加载</li>
<li>默认Steve皮肤所有来源都失败时的备用</li>
</ol>
<p><b>SkinsRestorer集成特性</b>
<ul>
<li>自动检测SkinsRestorer插件是否安装</li>
<li>使用反射安全调用SkinsRestorer API避免硬依赖</li>
<li>获取完整的皮肤纹理数据value和signature</li>
<li>支持离线服务器避免默认Steve皮肤问题</li>
<li>优雅降级SkinsRestorer失败时自动回退到其他来源</li>
</ul>
<p>皮肤缓存默认保留7天过期后自动重新获取。</p></div>
<dl class="notes">
<dt>从以下版本开始:</dt>
<dd>1.0.0</dd>
<dt>版本:</dt>
<dd>2.1.0</dd>
<dt>作者:</dt>
<dd>xiaobai</dd>
</dl>
</section>
<section class="summary">
<ul class="summary-list">
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
<h2>构造器概要</h2>
<div class="caption"><span>构造器</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">构造器</div>
<div class="table-header col-last">说明</div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(com.playerblocklife.PlayerBlockLife)" class="member-name-link">SkinManager</a><wbr>(<a href="PlayerBlockLife.html" title="com.playerblocklife中的类">PlayerBlockLife</a>&nbsp;plugin)</code></div>
<div class="col-last even-row-color">&nbsp;</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>方法概要</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">所有方法</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">实例方法</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">具体方法</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
<div class="summary-table three-column-summary">
<div class="table-header col-first">修饰符和类型</div>
<div class="table-header col-second">方法</div>
<div class="table-header col-last">说明</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#cleanupOldCache()" class="member-name-link">cleanupOldCache</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>org.bukkit.inventory.ItemStack</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#createPlayerHead(java.util.UUID,java.lang.String)" class="member-name-link">createPlayerHead</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/UUID.html" title="java.util中的类或接口" class="external-link">UUID</a>&nbsp;playerId,
<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a>&nbsp;playerName)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">创建带有玩家皮肤的头颅物品</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Map.html" title="java.util中的类或接口" class="external-link">Map</a><wbr>&lt;<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/UUID.html" title="java.util中的类或接口" class="external-link">UUID</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html" title="java.lang中的类或接口" class="external-link">Integer</a>&gt;</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getAllCustomModelData()" class="member-name-link">getAllCustomModelData</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Map.html" title="java.util中的类或接口" class="external-link">Map</a><wbr>&lt;<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/UUID.html" title="java.util中的类或接口" class="external-link">UUID</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a>&gt;</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getAllSkinData()" class="member-name-link">getAllSkinData</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html" title="java.lang中的类或接口" class="external-link">Integer</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getCustomModelData(java.util.UUID)" class="member-name-link">getCustomModelData</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/UUID.html" title="java.util中的类或接口" class="external-link">UUID</a>&nbsp;playerId)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#isSkinLoaded(java.util.UUID)" class="member-name-link">isSkinLoaded</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/UUID.html" title="java.util中的类或接口" class="external-link">UUID</a>&nbsp;playerId)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#loadAllSkins()" class="member-name-link">loadAllSkins</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#loadPlayerSkinAsync(org.bukkit.entity.Player)" class="member-name-link">loadPlayerSkinAsync</a><wbr>(org.bukkit.entity.Player&nbsp;player)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#saveSkinData()" class="member-name-link">saveSkinData</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Object">从类继承的方法&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" title="java.lang中的类或接口" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#clone()" title="java.lang中的类或接口" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="java.lang中的类或接口" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#finalize()" title="java.lang中的类或接口" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#getClass()" title="java.lang中的类或接口" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#hashCode()" title="java.lang中的类或接口" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#notify()" title="java.lang中的类或接口" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#notifyAll()" title="java.lang中的类或接口" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#toString()" title="java.lang中的类或接口" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#wait()" title="java.lang中的类或接口" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#wait(long)" title="java.lang中的类或接口" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="java.lang中的类或接口" class="external-link">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>构造器详细资料</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;(com.playerblocklife.PlayerBlockLife)">
<h3>SkinManager</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">SkinManager</span><wbr><span class="parameters">(<a href="PlayerBlockLife.html" title="com.playerblocklife中的类">PlayerBlockLife</a>&nbsp;plugin)</span></div>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>方法详细资料</h2>
<ul class="member-list">
<li>
<section class="detail" id="loadAllSkins()">
<h3>loadAllSkins</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">loadAllSkins</span>()</div>
</section>
</li>
<li>
<section class="detail" id="loadPlayerSkinAsync(org.bukkit.entity.Player)">
<h3>loadPlayerSkinAsync</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">loadPlayerSkinAsync</span><wbr><span class="parameters">(org.bukkit.entity.Player&nbsp;player)</span></div>
</section>
</li>
<li>
<section class="detail" id="createPlayerHead(java.util.UUID,java.lang.String)">
<h3>createPlayerHead</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">org.bukkit.inventory.ItemStack</span>&nbsp;<span class="element-name">createPlayerHead</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/UUID.html" title="java.util中的类或接口" class="external-link">UUID</a>&nbsp;playerId,
<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a>&nbsp;playerName)</span></div>
<div class="block">创建带有玩家皮肤的头颅物品
<p>使用Base64纹理数据创建自定义玩家头颅支持离线服务器皮肤显示。</p></div>
<dl class="notes">
<dt>参数:</dt>
<dd><code>playerId</code> - 玩家UUID</dd>
<dd><code>playerName</code> - 玩家名称</dd>
<dt>返回:</dt>
<dd>带有玩家皮肤的玩家头颅物品</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="isSkinLoaded(java.util.UUID)">
<h3>isSkinLoaded</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isSkinLoaded</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/UUID.html" title="java.util中的类或接口" class="external-link">UUID</a>&nbsp;playerId)</span></div>
</section>
</li>
<li>
<section class="detail" id="getCustomModelData(java.util.UUID)">
<h3>getCustomModelData</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html" title="java.lang中的类或接口" class="external-link">Integer</a></span>&nbsp;<span class="element-name">getCustomModelData</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/UUID.html" title="java.util中的类或接口" class="external-link">UUID</a>&nbsp;playerId)</span></div>
</section>
</li>
<li>
<section class="detail" id="getAllSkinData()">
<h3>getAllSkinData</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Map.html" title="java.util中的类或接口" class="external-link">Map</a>&lt;<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/UUID.html" title="java.util中的类或接口" class="external-link">UUID</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/String.html" title="java.lang中的类或接口" class="external-link">String</a>&gt;</span>&nbsp;<span class="element-name">getAllSkinData</span>()</div>
</section>
</li>
<li>
<section class="detail" id="getAllCustomModelData()">
<h3>getAllCustomModelData</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/Map.html" title="java.util中的类或接口" class="external-link">Map</a>&lt;<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/UUID.html" title="java.util中的类或接口" class="external-link">UUID</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Integer.html" title="java.lang中的类或接口" class="external-link">Integer</a>&gt;</span>&nbsp;<span class="element-name">getAllCustomModelData</span>()</div>
</section>
</li>
<li>
<section class="detail" id="saveSkinData()">
<h3>saveSkinData</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">saveSkinData</span>()</div>
</section>
</li>
<li>
<section class="detail" id="cleanupOldCache()">
<h3>cleanupOldCache</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">cleanupOldCache</span>()</div>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,57 @@
<!DOCTYPE HTML>
<html lang="zh">
<head>
<!-- Generated by javadoc (21) on Sat Feb 14 20:12:07 CST 2026 -->
<title>类 com.playerblocklife.AdminCommands的使用</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-02-14">
<meta name="description" content="use: package: com.playerblocklife, class: AdminCommands">
<meta name="generator" content="javadoc/ClassUseWriter">
<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">
<script type="text/javascript" src="../../../script.js"></script>
<script type="text/javascript" src="../../../script-dir/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-use-page">
<script type="text/javascript">var pathtoroot = "../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>您的浏览器已禁用 JavaScript。</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"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="切换导航链接"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="跳过导航链接">跳过导航链接</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="导航">
<li><a href="../package-summary.html">程序包</a></li>
<li><a href="../AdminCommands.html" title="com.playerblocklife中的类"></a></li>
<li class="nav-bar-cell1-rev">使用</li>
<li><a href="../package-tree.html"></a></li>
<li><a href="../../../index-files/index-1.html">索引</a></li>
<li><a href="../../../help-doc.html#use">帮助</a></li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list"></div>
<div class="nav-list-search"><a href="../../../search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="搜索">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<div class="header">
<h1 title="类的使用 com.playerblocklife.AdminCommands" class="title">类的使用<br>com.playerblocklife.AdminCommands</h1>
</div>
没有com.playerblocklife.AdminCommands的用法</main>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,57 @@
<!DOCTYPE HTML>
<html lang="zh">
<head>
<!-- Generated by javadoc (21) on Sat Feb 14 20:12:07 CST 2026 -->
<title>类 com.playerblocklife.BlockBreakListener的使用</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-02-14">
<meta name="description" content="use: package: com.playerblocklife, class: BlockBreakListener">
<meta name="generator" content="javadoc/ClassUseWriter">
<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">
<script type="text/javascript" src="../../../script.js"></script>
<script type="text/javascript" src="../../../script-dir/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-use-page">
<script type="text/javascript">var pathtoroot = "../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>您的浏览器已禁用 JavaScript。</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"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="切换导航链接"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="跳过导航链接">跳过导航链接</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="导航">
<li><a href="../package-summary.html">程序包</a></li>
<li><a href="../BlockBreakListener.html" title="com.playerblocklife中的类"></a></li>
<li class="nav-bar-cell1-rev">使用</li>
<li><a href="../package-tree.html"></a></li>
<li><a href="../../../index-files/index-1.html">索引</a></li>
<li><a href="../../../help-doc.html#use">帮助</a></li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list"></div>
<div class="nav-list-search"><a href="../../../search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="搜索">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<div class="header">
<h1 title="类的使用 com.playerblocklife.BlockBreakListener" class="title">类的使用<br>com.playerblocklife.BlockBreakListener</h1>
</div>
没有com.playerblocklife.BlockBreakListener的用法</main>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,57 @@
<!DOCTYPE HTML>
<html lang="zh">
<head>
<!-- Generated by javadoc (21) on Sat Feb 14 20:12:07 CST 2026 -->
<title>类 com.playerblocklife.CheckLifeBlocksCommand的使用</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-02-14">
<meta name="description" content="use: package: com.playerblocklife, class: CheckLifeBlocksCommand">
<meta name="generator" content="javadoc/ClassUseWriter">
<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">
<script type="text/javascript" src="../../../script.js"></script>
<script type="text/javascript" src="../../../script-dir/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-use-page">
<script type="text/javascript">var pathtoroot = "../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>您的浏览器已禁用 JavaScript。</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"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="切换导航链接"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="跳过导航链接">跳过导航链接</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="导航">
<li><a href="../package-summary.html">程序包</a></li>
<li><a href="../CheckLifeBlocksCommand.html" title="com.playerblocklife中的类"></a></li>
<li class="nav-bar-cell1-rev">使用</li>
<li><a href="../package-tree.html"></a></li>
<li><a href="../../../index-files/index-1.html">索引</a></li>
<li><a href="../../../help-doc.html#use">帮助</a></li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list"></div>
<div class="nav-list-search"><a href="../../../search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="搜索">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<div class="header">
<h1 title="类的使用 com.playerblocklife.CheckLifeBlocksCommand" class="title">类的使用<br>com.playerblocklife.CheckLifeBlocksCommand</h1>
</div>
没有com.playerblocklife.CheckLifeBlocksCommand的用法</main>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,75 @@
<!DOCTYPE HTML>
<html lang="zh">
<head>
<!-- Generated by javadoc (21) on Sat Feb 14 20:12:07 CST 2026 -->
<title>类 com.playerblocklife.ConfigManager的使用</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-02-14">
<meta name="description" content="use: package: com.playerblocklife, class: ConfigManager">
<meta name="generator" content="javadoc/ClassUseWriter">
<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">
<script type="text/javascript" src="../../../script.js"></script>
<script type="text/javascript" src="../../../script-dir/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-use-page">
<script type="text/javascript">var pathtoroot = "../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>您的浏览器已禁用 JavaScript。</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"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="切换导航链接"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="跳过导航链接">跳过导航链接</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="导航">
<li><a href="../package-summary.html">程序包</a></li>
<li><a href="../ConfigManager.html" title="com.playerblocklife中的类"></a></li>
<li class="nav-bar-cell1-rev">使用</li>
<li><a href="../package-tree.html"></a></li>
<li><a href="../../../index-files/index-1.html">索引</a></li>
<li><a href="../../../help-doc.html#use">帮助</a></li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list"></div>
<div class="nav-list-search"><a href="../../../search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="搜索">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<div class="header">
<h1 title="类的使用 com.playerblocklife.ConfigManager" class="title">类的使用<br>com.playerblocklife.ConfigManager</h1>
</div>
<section class="class-uses">
<ul class="block-list">
<li>
<section class="detail" id="com.playerblocklife">
<h2><a href="../package-summary.html">com.playerblocklife</a><a href="../ConfigManager.html" title="com.playerblocklife中的类">ConfigManager</a>的使用</h2>
<div class="caption"><span>返回<a href="../ConfigManager.html" title="com.playerblocklife中的类">ConfigManager</a><a href="../package-summary.html">com.playerblocklife</a>中的方法</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">修饰符和类型</div>
<div class="table-header col-second">方法</div>
<div class="table-header col-last">说明</div>
<div class="col-first even-row-color"><code><a href="../ConfigManager.html" title="com.playerblocklife中的类">ConfigManager</a></code></div>
<div class="col-second even-row-color"><span class="type-name-label">PlayerBlockLife.</span><code><a href="../PlayerBlockLife.html#getConfigManager()" class="member-name-link">getConfigManager</a>()</code></div>
<div class="col-last even-row-color">&nbsp;</div>
</div>
</section>
</li>
</ul>
</section>
</main>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,75 @@
<!DOCTYPE HTML>
<html lang="zh">
<head>
<!-- Generated by javadoc (21) on Sat Feb 14 20:12:07 CST 2026 -->
<title>类 com.playerblocklife.LifeSystem的使用</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-02-14">
<meta name="description" content="use: package: com.playerblocklife, class: LifeSystem">
<meta name="generator" content="javadoc/ClassUseWriter">
<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">
<script type="text/javascript" src="../../../script.js"></script>
<script type="text/javascript" src="../../../script-dir/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-use-page">
<script type="text/javascript">var pathtoroot = "../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>您的浏览器已禁用 JavaScript。</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"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="切换导航链接"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="跳过导航链接">跳过导航链接</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="导航">
<li><a href="../package-summary.html">程序包</a></li>
<li><a href="../LifeSystem.html" title="com.playerblocklife中的类"></a></li>
<li class="nav-bar-cell1-rev">使用</li>
<li><a href="../package-tree.html"></a></li>
<li><a href="../../../index-files/index-1.html">索引</a></li>
<li><a href="../../../help-doc.html#use">帮助</a></li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list"></div>
<div class="nav-list-search"><a href="../../../search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="搜索">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<div class="header">
<h1 title="类的使用 com.playerblocklife.LifeSystem" class="title">类的使用<br>com.playerblocklife.LifeSystem</h1>
</div>
<section class="class-uses">
<ul class="block-list">
<li>
<section class="detail" id="com.playerblocklife">
<h2><a href="../package-summary.html">com.playerblocklife</a><a href="../LifeSystem.html" title="com.playerblocklife中的类">LifeSystem</a>的使用</h2>
<div class="caption"><span>返回<a href="../LifeSystem.html" title="com.playerblocklife中的类">LifeSystem</a><a href="../package-summary.html">com.playerblocklife</a>中的方法</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">修饰符和类型</div>
<div class="table-header col-second">方法</div>
<div class="table-header col-last">说明</div>
<div class="col-first even-row-color"><code><a href="../LifeSystem.html" title="com.playerblocklife中的类">LifeSystem</a></code></div>
<div class="col-second even-row-color"><span class="type-name-label">PlayerBlockLife.</span><code><a href="../PlayerBlockLife.html#getLifeSystem()" class="member-name-link">getLifeSystem</a>()</code></div>
<div class="col-last even-row-color">&nbsp;</div>
</div>
</section>
</li>
</ul>
</section>
</main>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,75 @@
<!DOCTYPE HTML>
<html lang="zh">
<head>
<!-- Generated by javadoc (21) on Sat Feb 14 20:12:07 CST 2026 -->
<title>类 com.playerblocklife.MessageManager的使用</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-02-14">
<meta name="description" content="use: package: com.playerblocklife, class: MessageManager">
<meta name="generator" content="javadoc/ClassUseWriter">
<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">
<script type="text/javascript" src="../../../script.js"></script>
<script type="text/javascript" src="../../../script-dir/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-use-page">
<script type="text/javascript">var pathtoroot = "../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>您的浏览器已禁用 JavaScript。</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"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="切换导航链接"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="跳过导航链接">跳过导航链接</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="导航">
<li><a href="../package-summary.html">程序包</a></li>
<li><a href="../MessageManager.html" title="com.playerblocklife中的类"></a></li>
<li class="nav-bar-cell1-rev">使用</li>
<li><a href="../package-tree.html"></a></li>
<li><a href="../../../index-files/index-1.html">索引</a></li>
<li><a href="../../../help-doc.html#use">帮助</a></li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list"></div>
<div class="nav-list-search"><a href="../../../search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="搜索">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<div class="header">
<h1 title="类的使用 com.playerblocklife.MessageManager" class="title">类的使用<br>com.playerblocklife.MessageManager</h1>
</div>
<section class="class-uses">
<ul class="block-list">
<li>
<section class="detail" id="com.playerblocklife">
<h2><a href="../package-summary.html">com.playerblocklife</a><a href="../MessageManager.html" title="com.playerblocklife中的类">MessageManager</a>的使用</h2>
<div class="caption"><span>返回<a href="../MessageManager.html" title="com.playerblocklife中的类">MessageManager</a><a href="../package-summary.html">com.playerblocklife</a>中的方法</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">修饰符和类型</div>
<div class="table-header col-second">方法</div>
<div class="table-header col-last">说明</div>
<div class="col-first even-row-color"><code><a href="../MessageManager.html" title="com.playerblocklife中的类">MessageManager</a></code></div>
<div class="col-second even-row-color"><span class="type-name-label">PlayerBlockLife.</span><code><a href="../PlayerBlockLife.html#getMessageManager()" class="member-name-link">getMessageManager</a>()</code></div>
<div class="col-last even-row-color">&nbsp;</div>
</div>
</section>
</li>
</ul>
</section>
</main>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,119 @@
<!DOCTYPE HTML>
<html lang="zh">
<head>
<!-- Generated by javadoc (21) on Sat Feb 14 20:12:07 CST 2026 -->
<title>类 com.playerblocklife.PlayerBlockLife的使用</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-02-14">
<meta name="description" content="use: package: com.playerblocklife, class: PlayerBlockLife">
<meta name="generator" content="javadoc/ClassUseWriter">
<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">
<script type="text/javascript" src="../../../script.js"></script>
<script type="text/javascript" src="../../../script-dir/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-use-page">
<script type="text/javascript">var pathtoroot = "../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>您的浏览器已禁用 JavaScript。</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"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="切换导航链接"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="跳过导航链接">跳过导航链接</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="导航">
<li><a href="../package-summary.html">程序包</a></li>
<li><a href="../PlayerBlockLife.html" title="com.playerblocklife中的类"></a></li>
<li class="nav-bar-cell1-rev">使用</li>
<li><a href="../package-tree.html"></a></li>
<li><a href="../../../index-files/index-1.html">索引</a></li>
<li><a href="../../../help-doc.html#use">帮助</a></li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list"></div>
<div class="nav-list-search"><a href="../../../search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="搜索">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<div class="header">
<h1 title="类的使用 com.playerblocklife.PlayerBlockLife" class="title">类的使用<br>com.playerblocklife.PlayerBlockLife</h1>
</div>
<section class="class-uses">
<ul class="block-list">
<li>
<section class="detail" id="com.playerblocklife">
<h2><a href="../package-summary.html">com.playerblocklife</a><a href="../PlayerBlockLife.html" title="com.playerblocklife中的类">PlayerBlockLife</a>的使用</h2>
<div class="caption"><span>返回<a href="../PlayerBlockLife.html" title="com.playerblocklife中的类">PlayerBlockLife</a><a href="../package-summary.html">com.playerblocklife</a>中的方法</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">修饰符和类型</div>
<div class="table-header col-second">方法</div>
<div class="table-header col-last">说明</div>
<div class="col-first even-row-color"><code>static <a href="../PlayerBlockLife.html" title="com.playerblocklife中的类">PlayerBlockLife</a></code></div>
<div class="col-second even-row-color"><span class="type-name-label">PlayerBlockLife.</span><code><a href="../PlayerBlockLife.html#getInstance()" class="member-name-link">getInstance</a>()</code></div>
<div class="col-last even-row-color">
<div class="block">获取插件单例实例</div>
</div>
</div>
<div class="caption"><span>参数类型为<a href="../PlayerBlockLife.html" title="com.playerblocklife中的类">PlayerBlockLife</a><a href="../package-summary.html">com.playerblocklife</a>中的构造器</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">限定符</div>
<div class="table-header col-second">构造器</div>
<div class="table-header col-last">说明</div>
<div class="col-first even-row-color"><code>&nbsp;</code></div>
<div class="col-second even-row-color"><code><a href="../AdminCommands.html#%3Cinit%3E(com.playerblocklife.PlayerBlockLife)" class="member-name-link">AdminCommands</a><wbr>(<a href="../PlayerBlockLife.html" title="com.playerblocklife中的类">PlayerBlockLife</a>&nbsp;plugin)</code></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><code>&nbsp;</code></div>
<div class="col-second odd-row-color"><code><a href="../BlockBreakListener.html#%3Cinit%3E(com.playerblocklife.PlayerBlockLife)" class="member-name-link">BlockBreakListener</a><wbr>(<a href="../PlayerBlockLife.html" title="com.playerblocklife中的类">PlayerBlockLife</a>&nbsp;plugin)</code></div>
<div class="col-last odd-row-color">&nbsp;</div>
<div class="col-first even-row-color"><code>&nbsp;</code></div>
<div class="col-second even-row-color"><code><a href="../CheckLifeBlocksCommand.html#%3Cinit%3E(com.playerblocklife.PlayerBlockLife)" class="member-name-link">CheckLifeBlocksCommand</a><wbr>(<a href="../PlayerBlockLife.html" title="com.playerblocklife中的类">PlayerBlockLife</a>&nbsp;plugin)</code></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><code>&nbsp;</code></div>
<div class="col-second odd-row-color"><code><a href="../ConfigManager.html#%3Cinit%3E(com.playerblocklife.PlayerBlockLife)" class="member-name-link">ConfigManager</a><wbr>(<a href="../PlayerBlockLife.html" title="com.playerblocklife中的类">PlayerBlockLife</a>&nbsp;plugin)</code></div>
<div class="col-last odd-row-color">
<div class="block">构造一个新的配置管理器</div>
</div>
<div class="col-first even-row-color"><code>&nbsp;</code></div>
<div class="col-second even-row-color"><code><a href="../LifeSystem.html#%3Cinit%3E(com.playerblocklife.PlayerBlockLife)" class="member-name-link">LifeSystem</a><wbr>(<a href="../PlayerBlockLife.html" title="com.playerblocklife中的类">PlayerBlockLife</a>&nbsp;plugin)</code></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><code>&nbsp;</code></div>
<div class="col-second odd-row-color"><code><a href="../MessageManager.html#%3Cinit%3E(com.playerblocklife.PlayerBlockLife)" class="member-name-link">MessageManager</a><wbr>(<a href="../PlayerBlockLife.html" title="com.playerblocklife中的类">PlayerBlockLife</a>&nbsp;plugin)</code></div>
<div class="col-last odd-row-color">&nbsp;</div>
<div class="col-first even-row-color"><code>&nbsp;</code></div>
<div class="col-second even-row-color"><code><a href="../PlayerBlockManager.html#%3Cinit%3E(com.playerblocklife.PlayerBlockLife,com.playerblocklife.SkinManager)" class="member-name-link">PlayerBlockManager</a><wbr>(<a href="../PlayerBlockLife.html" title="com.playerblocklife中的类">PlayerBlockLife</a>&nbsp;plugin,
<a href="../SkinManager.html" title="com.playerblocklife中的类">SkinManager</a>&nbsp;skinManager)</code></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><code>&nbsp;</code></div>
<div class="col-second odd-row-color"><code><a href="../PlayerJoinListener.html#%3Cinit%3E(com.playerblocklife.PlayerBlockLife)" class="member-name-link">PlayerJoinListener</a><wbr>(<a href="../PlayerBlockLife.html" title="com.playerblocklife中的类">PlayerBlockLife</a>&nbsp;plugin)</code></div>
<div class="col-last odd-row-color">&nbsp;</div>
<div class="col-first even-row-color"><code>&nbsp;</code></div>
<div class="col-second even-row-color"><code><a href="../PlayerQuitListener.html#%3Cinit%3E(com.playerblocklife.PlayerBlockLife)" class="member-name-link">PlayerQuitListener</a><wbr>(<a href="../PlayerBlockLife.html" title="com.playerblocklife中的类">PlayerBlockLife</a>&nbsp;plugin)</code></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><code>&nbsp;</code></div>
<div class="col-second odd-row-color"><code><a href="../SetLifeBlocksCommand.html#%3Cinit%3E(com.playerblocklife.PlayerBlockLife)" class="member-name-link">SetLifeBlocksCommand</a><wbr>(<a href="../PlayerBlockLife.html" title="com.playerblocklife中的类">PlayerBlockLife</a>&nbsp;plugin)</code></div>
<div class="col-last odd-row-color">&nbsp;</div>
<div class="col-first even-row-color"><code>&nbsp;</code></div>
<div class="col-second even-row-color"><code><a href="../SkinManager.html#%3Cinit%3E(com.playerblocklife.PlayerBlockLife)" class="member-name-link">SkinManager</a><wbr>(<a href="../PlayerBlockLife.html" title="com.playerblocklife中的类">PlayerBlockLife</a>&nbsp;plugin)</code></div>
<div class="col-last even-row-color">&nbsp;</div>
</div>
</section>
</li>
</ul>
</section>
</main>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,75 @@
<!DOCTYPE HTML>
<html lang="zh">
<head>
<!-- Generated by javadoc (21) on Sat Feb 14 20:12:07 CST 2026 -->
<title>类 com.playerblocklife.PlayerBlockManager的使用</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-02-14">
<meta name="description" content="use: package: com.playerblocklife, class: PlayerBlockManager">
<meta name="generator" content="javadoc/ClassUseWriter">
<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">
<script type="text/javascript" src="../../../script.js"></script>
<script type="text/javascript" src="../../../script-dir/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-use-page">
<script type="text/javascript">var pathtoroot = "../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>您的浏览器已禁用 JavaScript。</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"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="切换导航链接"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="跳过导航链接">跳过导航链接</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="导航">
<li><a href="../package-summary.html">程序包</a></li>
<li><a href="../PlayerBlockManager.html" title="com.playerblocklife中的类"></a></li>
<li class="nav-bar-cell1-rev">使用</li>
<li><a href="../package-tree.html"></a></li>
<li><a href="../../../index-files/index-1.html">索引</a></li>
<li><a href="../../../help-doc.html#use">帮助</a></li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list"></div>
<div class="nav-list-search"><a href="../../../search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="搜索">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<div class="header">
<h1 title="类的使用 com.playerblocklife.PlayerBlockManager" class="title">类的使用<br>com.playerblocklife.PlayerBlockManager</h1>
</div>
<section class="class-uses">
<ul class="block-list">
<li>
<section class="detail" id="com.playerblocklife">
<h2><a href="../package-summary.html">com.playerblocklife</a><a href="../PlayerBlockManager.html" title="com.playerblocklife中的类">PlayerBlockManager</a>的使用</h2>
<div class="caption"><span>返回<a href="../PlayerBlockManager.html" title="com.playerblocklife中的类">PlayerBlockManager</a><a href="../package-summary.html">com.playerblocklife</a>中的方法</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">修饰符和类型</div>
<div class="table-header col-second">方法</div>
<div class="table-header col-last">说明</div>
<div class="col-first even-row-color"><code><a href="../PlayerBlockManager.html" title="com.playerblocklife中的类">PlayerBlockManager</a></code></div>
<div class="col-second even-row-color"><span class="type-name-label">PlayerBlockLife.</span><code><a href="../PlayerBlockLife.html#getBlockManager()" class="member-name-link">getBlockManager</a>()</code></div>
<div class="col-last even-row-color">&nbsp;</div>
</div>
</section>
</li>
</ul>
</section>
</main>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,57 @@
<!DOCTYPE HTML>
<html lang="zh">
<head>
<!-- Generated by javadoc (21) on Sat Feb 14 20:12:07 CST 2026 -->
<title>类 com.playerblocklife.PlayerJoinListener的使用</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-02-14">
<meta name="description" content="use: package: com.playerblocklife, class: PlayerJoinListener">
<meta name="generator" content="javadoc/ClassUseWriter">
<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">
<script type="text/javascript" src="../../../script.js"></script>
<script type="text/javascript" src="../../../script-dir/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-use-page">
<script type="text/javascript">var pathtoroot = "../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>您的浏览器已禁用 JavaScript。</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"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="切换导航链接"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="跳过导航链接">跳过导航链接</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="导航">
<li><a href="../package-summary.html">程序包</a></li>
<li><a href="../PlayerJoinListener.html" title="com.playerblocklife中的类"></a></li>
<li class="nav-bar-cell1-rev">使用</li>
<li><a href="../package-tree.html"></a></li>
<li><a href="../../../index-files/index-1.html">索引</a></li>
<li><a href="../../../help-doc.html#use">帮助</a></li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list"></div>
<div class="nav-list-search"><a href="../../../search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="搜索">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<div class="header">
<h1 title="类的使用 com.playerblocklife.PlayerJoinListener" class="title">类的使用<br>com.playerblocklife.PlayerJoinListener</h1>
</div>
没有com.playerblocklife.PlayerJoinListener的用法</main>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,57 @@
<!DOCTYPE HTML>
<html lang="zh">
<head>
<!-- Generated by javadoc (21) on Sat Feb 14 20:12:07 CST 2026 -->
<title>类 com.playerblocklife.PlayerQuitListener的使用</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-02-14">
<meta name="description" content="use: package: com.playerblocklife, class: PlayerQuitListener">
<meta name="generator" content="javadoc/ClassUseWriter">
<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">
<script type="text/javascript" src="../../../script.js"></script>
<script type="text/javascript" src="../../../script-dir/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-use-page">
<script type="text/javascript">var pathtoroot = "../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>您的浏览器已禁用 JavaScript。</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"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="切换导航链接"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="跳过导航链接">跳过导航链接</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="导航">
<li><a href="../package-summary.html">程序包</a></li>
<li><a href="../PlayerQuitListener.html" title="com.playerblocklife中的类"></a></li>
<li class="nav-bar-cell1-rev">使用</li>
<li><a href="../package-tree.html"></a></li>
<li><a href="../../../index-files/index-1.html">索引</a></li>
<li><a href="../../../help-doc.html#use">帮助</a></li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list"></div>
<div class="nav-list-search"><a href="../../../search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="搜索">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<div class="header">
<h1 title="类的使用 com.playerblocklife.PlayerQuitListener" class="title">类的使用<br>com.playerblocklife.PlayerQuitListener</h1>
</div>
没有com.playerblocklife.PlayerQuitListener的用法</main>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,57 @@
<!DOCTYPE HTML>
<html lang="zh">
<head>
<!-- Generated by javadoc (21) on Sat Feb 14 20:12:07 CST 2026 -->
<title>类 com.playerblocklife.SetLifeBlocksCommand的使用</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-02-14">
<meta name="description" content="use: package: com.playerblocklife, class: SetLifeBlocksCommand">
<meta name="generator" content="javadoc/ClassUseWriter">
<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">
<script type="text/javascript" src="../../../script.js"></script>
<script type="text/javascript" src="../../../script-dir/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-use-page">
<script type="text/javascript">var pathtoroot = "../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>您的浏览器已禁用 JavaScript。</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"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="切换导航链接"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="跳过导航链接">跳过导航链接</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="导航">
<li><a href="../package-summary.html">程序包</a></li>
<li><a href="../SetLifeBlocksCommand.html" title="com.playerblocklife中的类"></a></li>
<li class="nav-bar-cell1-rev">使用</li>
<li><a href="../package-tree.html"></a></li>
<li><a href="../../../index-files/index-1.html">索引</a></li>
<li><a href="../../../help-doc.html#use">帮助</a></li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list"></div>
<div class="nav-list-search"><a href="../../../search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="搜索">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<div class="header">
<h1 title="类的使用 com.playerblocklife.SetLifeBlocksCommand" class="title">类的使用<br>com.playerblocklife.SetLifeBlocksCommand</h1>
</div>
没有com.playerblocklife.SetLifeBlocksCommand的用法</main>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,85 @@
<!DOCTYPE HTML>
<html lang="zh">
<head>
<!-- Generated by javadoc (21) on Sat Feb 14 20:12:07 CST 2026 -->
<title>类 com.playerblocklife.SkinManager的使用</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-02-14">
<meta name="description" content="use: package: com.playerblocklife, class: SkinManager">
<meta name="generator" content="javadoc/ClassUseWriter">
<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">
<script type="text/javascript" src="../../../script.js"></script>
<script type="text/javascript" src="../../../script-dir/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-use-page">
<script type="text/javascript">var pathtoroot = "../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>您的浏览器已禁用 JavaScript。</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"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="切换导航链接"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="跳过导航链接">跳过导航链接</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="导航">
<li><a href="../package-summary.html">程序包</a></li>
<li><a href="../SkinManager.html" title="com.playerblocklife中的类"></a></li>
<li class="nav-bar-cell1-rev">使用</li>
<li><a href="../package-tree.html"></a></li>
<li><a href="../../../index-files/index-1.html">索引</a></li>
<li><a href="../../../help-doc.html#use">帮助</a></li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list"></div>
<div class="nav-list-search"><a href="../../../search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="搜索">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<div class="header">
<h1 title="类的使用 com.playerblocklife.SkinManager" class="title">类的使用<br>com.playerblocklife.SkinManager</h1>
</div>
<section class="class-uses">
<ul class="block-list">
<li>
<section class="detail" id="com.playerblocklife">
<h2><a href="../package-summary.html">com.playerblocklife</a><a href="../SkinManager.html" title="com.playerblocklife中的类">SkinManager</a>的使用</h2>
<div class="caption"><span>返回<a href="../SkinManager.html" title="com.playerblocklife中的类">SkinManager</a><a href="../package-summary.html">com.playerblocklife</a>中的方法</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">修饰符和类型</div>
<div class="table-header col-second">方法</div>
<div class="table-header col-last">说明</div>
<div class="col-first even-row-color"><code><a href="../SkinManager.html" title="com.playerblocklife中的类">SkinManager</a></code></div>
<div class="col-second even-row-color"><span class="type-name-label">PlayerBlockLife.</span><code><a href="../PlayerBlockLife.html#getSkinManager()" class="member-name-link">getSkinManager</a>()</code></div>
<div class="col-last even-row-color">&nbsp;</div>
</div>
<div class="caption"><span>参数类型为<a href="../SkinManager.html" title="com.playerblocklife中的类">SkinManager</a><a href="../package-summary.html">com.playerblocklife</a>中的构造器</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">限定符</div>
<div class="table-header col-second">构造器</div>
<div class="table-header col-last">说明</div>
<div class="col-first even-row-color"><code>&nbsp;</code></div>
<div class="col-second even-row-color"><code><a href="../PlayerBlockManager.html#%3Cinit%3E(com.playerblocklife.PlayerBlockLife,com.playerblocklife.SkinManager)" class="member-name-link">PlayerBlockManager</a><wbr>(<a href="../PlayerBlockLife.html" title="com.playerblocklife中的类">PlayerBlockLife</a>&nbsp;plugin,
<a href="../SkinManager.html" title="com.playerblocklife中的类">SkinManager</a>&nbsp;skinManager)</code></div>
<div class="col-last even-row-color">&nbsp;</div>
</div>
</section>
</li>
</ul>
</section>
</main>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,123 @@
<!DOCTYPE HTML>
<html lang="zh">
<head>
<!-- Generated by javadoc (21) on Sat Feb 14 20:12:07 CST 2026 -->
<title>com.playerblocklife</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-02-14">
<meta name="description" content="declaration: package: com.playerblocklife">
<meta name="generator" content="javadoc/PackageWriterImpl">
<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">
<script type="text/javascript" src="../../script.js"></script>
<script type="text/javascript" src="../../script-dir/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="package-declaration-page">
<script type="text/javascript">var pathtoroot = "../../";
loadScripts(document, 'script');</script>
<noscript>
<div>您的浏览器已禁用 JavaScript。</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"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="切换导航链接"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="跳过导航链接">跳过导航链接</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="导航">
<li class="nav-bar-cell1-rev">程序包</li>
<li></li>
<li><a href="package-use.html">使用</a></li>
<li><a href="package-tree.html"></a></li>
<li><a href="../../index-files/index-1.html">索引</a></li>
<li><a href="../../help-doc.html#package">帮助</a></li>
</ul>
<ul class="sub-nav-list-small">
<li>
<p>程序包:</p>
<ul>
<li>说明</li>
<li>相关程序包</li>
<li><a href="#class-summary">类和接口</a></li>
</ul>
</li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list">
<ul class="sub-nav-list">
<li>程序包:&nbsp;</li>
<li>说明&nbsp;|&nbsp;</li>
<li>相关程序包&nbsp;|&nbsp;</li>
<li><a href="#class-summary">类和接口</a></li>
</ul>
</div>
<div class="nav-list-search"><a href="../../search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="搜索">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<div class="header">
<h1 title="程序包 com.playerblocklife" class="title">程序包 com.playerblocklife</h1>
</div>
<hr>
<div class="package-signature">package <span class="element-name">com.playerblocklife</span></div>
<section class="summary">
<ul class="summary-list">
<li>
<div id="class-summary">
<div class="caption"><span></span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first"></div>
<div class="table-header col-last">说明</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="AdminCommands.html" title="com.playerblocklife中的类">AdminCommands</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">&nbsp;</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="BlockBreakListener.html" title="com.playerblocklife中的类">BlockBreakListener</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">&nbsp;</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="CheckLifeBlocksCommand.html" title="com.playerblocklife中的类">CheckLifeBlocksCommand</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">&nbsp;</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="ConfigManager.html" title="com.playerblocklife中的类">ConfigManager</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<div class="block">配置管理器 - 负责加载、保存和管理插件的配置文件</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="LifeSystem.html" title="com.playerblocklife中的类">LifeSystem</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<div class="block">生命值系统 - 负责管理玩家生命值和状态效果</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="MessageManager.html" title="com.playerblocklife中的类">MessageManager</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">&nbsp;</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="PlayerBlockLife.html" title="com.playerblocklife中的类">PlayerBlockLife</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">
<div class="block">PlayerBlockLife插件主类 - 玩家生命方块系统的核心控制器</div>
</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="PlayerBlockManager.html" title="com.playerblocklife中的类">PlayerBlockManager</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<div class="block">玩家方块管理器 - 负责管理玩家生命方块的核心组件</div>
</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="PlayerJoinListener.html" title="com.playerblocklife中的类">PlayerJoinListener</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">&nbsp;</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="PlayerQuitListener.html" title="com.playerblocklife中的类">PlayerQuitListener</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">&nbsp;</div>
<div class="col-first even-row-color class-summary class-summary-tab2"><a href="SetLifeBlocksCommand.html" title="com.playerblocklife中的类">SetLifeBlocksCommand</a></div>
<div class="col-last even-row-color class-summary class-summary-tab2">&nbsp;</div>
<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="SkinManager.html" title="com.playerblocklife中的类">SkinManager</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab2">
<div class="block">皮肤管理器 - 负责玩家皮肤的获取、缓存和应用</div>
</div>
</div>
</div>
</li>
</ul>
</section>
</main>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,86 @@
<!DOCTYPE HTML>
<html lang="zh">
<head>
<!-- Generated by javadoc (21) on Sat Feb 14 20:12:07 CST 2026 -->
<title>com.playerblocklife 类分层结构</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-02-14">
<meta name="description" content="tree: package: com.playerblocklife">
<meta name="generator" content="javadoc/PackageTreeWriter">
<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">
<script type="text/javascript" src="../../script.js"></script>
<script type="text/javascript" src="../../script-dir/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="package-tree-page">
<script type="text/javascript">var pathtoroot = "../../";
loadScripts(document, 'script');</script>
<noscript>
<div>您的浏览器已禁用 JavaScript。</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"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="切换导航链接"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="跳过导航链接">跳过导航链接</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="导航">
<li><a href="package-summary.html">程序包</a></li>
<li></li>
<li>使用</li>
<li class="nav-bar-cell1-rev"></li>
<li><a href="../../index-files/index-1.html">索引</a></li>
<li><a href="../../help-doc.html#tree">帮助</a></li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list"></div>
<div class="nav-list-search"><a href="../../search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="搜索">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<div class="header">
<h1 class="title">程序包com.playerblocklife的分层结构</h1>
</div>
<section class="hierarchy">
<h2 title="类分层结构">类分层结构</h2>
<ul>
<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="java.lang中的类或接口">Object</a>
<ul>
<li class="circle">com.playerblocklife.<a href="AdminCommands.html" class="type-name-link" title="com.playerblocklife中的类">AdminCommands</a> (implements org.bukkit.command.CommandExecutor)</li>
<li class="circle">com.playerblocklife.<a href="BlockBreakListener.html" class="type-name-link" title="com.playerblocklife中的类">BlockBreakListener</a> (implements org.bukkit.event.Listener)</li>
<li class="circle">com.playerblocklife.<a href="CheckLifeBlocksCommand.html" class="type-name-link" title="com.playerblocklife中的类">CheckLifeBlocksCommand</a> (implements org.bukkit.command.CommandExecutor)</li>
<li class="circle">com.playerblocklife.<a href="ConfigManager.html" class="type-name-link" title="com.playerblocklife中的类">ConfigManager</a></li>
<li class="circle">com.playerblocklife.<a href="LifeSystem.html" class="type-name-link" title="com.playerblocklife中的类">LifeSystem</a></li>
<li class="circle">com.playerblocklife.<a href="MessageManager.html" class="type-name-link" title="com.playerblocklife中的类">MessageManager</a></li>
<li class="circle">com.playerblocklife.<a href="PlayerBlockManager.html" class="type-name-link" title="com.playerblocklife中的类">PlayerBlockManager</a></li>
<li class="circle">com.playerblocklife.<a href="PlayerJoinListener.html" class="type-name-link" title="com.playerblocklife中的类">PlayerJoinListener</a> (implements org.bukkit.event.Listener)</li>
<li class="circle">com.playerblocklife.<a href="PlayerQuitListener.html" class="type-name-link" title="com.playerblocklife中的类">PlayerQuitListener</a> (implements org.bukkit.event.Listener)</li>
<li class="circle">org.bukkit.plugin.PluginBase (implements org.bukkit.plugin.Plugin)
<ul>
<li class="circle">org.bukkit.plugin.java.JavaPlugin
<ul>
<li class="circle">com.playerblocklife.<a href="PlayerBlockLife.html" class="type-name-link" title="com.playerblocklife中的类">PlayerBlockLife</a></li>
</ul>
</li>
</ul>
</li>
<li class="circle">com.playerblocklife.<a href="SetLifeBlocksCommand.html" class="type-name-link" title="com.playerblocklife中的类">SetLifeBlocksCommand</a> (implements org.bukkit.command.CommandExecutor)</li>
<li class="circle">com.playerblocklife.<a href="SkinManager.html" class="type-name-link" title="com.playerblocklife中的类">SkinManager</a></li>
</ul>
</li>
</ul>
</section>
</main>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,92 @@
<!DOCTYPE HTML>
<html lang="zh">
<head>
<!-- Generated by javadoc (21) on Sat Feb 14 20:12:07 CST 2026 -->
<title>程序包 com.playerblocklife的使用</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-02-14">
<meta name="description" content="use: package: com.playerblocklife">
<meta name="generator" content="javadoc/PackageUseWriter">
<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">
<script type="text/javascript" src="../../script.js"></script>
<script type="text/javascript" src="../../script-dir/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="package-use-page">
<script type="text/javascript">var pathtoroot = "../../";
loadScripts(document, 'script');</script>
<noscript>
<div>您的浏览器已禁用 JavaScript。</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"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="切换导航链接"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="跳过导航链接">跳过导航链接</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="导航">
<li><a href="package-summary.html">程序包</a></li>
<li></li>
<li class="nav-bar-cell1-rev">使用</li>
<li><a href="package-tree.html"></a></li>
<li><a href="../../index-files/index-1.html">索引</a></li>
<li><a href="../../help-doc.html#use">帮助</a></li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list"></div>
<div class="nav-list-search"><a href="../../search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="搜索">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<div class="header">
<h1 title="程序包的使用 com.playerblocklife" class="title">程序包的使用<br>com.playerblocklife</h1>
</div>
<section class="package-uses">
<ul class="block-list">
<li>
<section class="detail" id="com.playerblocklife">
<div class="caption"><span><a href="package-summary.html">com.playerblocklife</a>使用的<a href="package-summary.html">com.playerblocklife</a>中的类</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first"></div>
<div class="table-header col-last">说明</div>
<div class="col-first even-row-color"><a href="class-use/ConfigManager.html#com.playerblocklife">ConfigManager</a></div>
<div class="col-last even-row-color">
<div class="block">配置管理器 - 负责加载、保存和管理插件的配置文件</div>
</div>
<div class="col-first odd-row-color"><a href="class-use/LifeSystem.html#com.playerblocklife">LifeSystem</a></div>
<div class="col-last odd-row-color">
<div class="block">生命值系统 - 负责管理玩家生命值和状态效果</div>
</div>
<div class="col-first even-row-color"><a href="class-use/MessageManager.html#com.playerblocklife">MessageManager</a></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><a href="class-use/PlayerBlockLife.html#com.playerblocklife">PlayerBlockLife</a></div>
<div class="col-last odd-row-color">
<div class="block">PlayerBlockLife插件主类 - 玩家生命方块系统的核心控制器</div>
</div>
<div class="col-first even-row-color"><a href="class-use/PlayerBlockManager.html#com.playerblocklife">PlayerBlockManager</a></div>
<div class="col-last even-row-color">
<div class="block">玩家方块管理器 - 负责管理玩家生命方块的核心组件</div>
</div>
<div class="col-first odd-row-color"><a href="class-use/SkinManager.html#com.playerblocklife">SkinManager</a></div>
<div class="col-last odd-row-color">
<div class="block">皮肤管理器 - 负责玩家皮肤的获取、缓存和应用</div>
</div>
</div>
</section>
</li>
</ul>
</section>
</main>
</div>
</div>
</body>
</html>

33
javadoc/copy.svg Normal file
View File

@@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (c) 2021, Oracle and/or its affiliates. All rights reserved.
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
This code is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License version 2 only, as
published by the Free Software Foundation. Oracle designates this
particular file as subject to the "Classpath" exception as provided
by Oracle in the LICENSE file that accompanied this code.
This code is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
version 2 for more details (a copy is included in the LICENSE file that
accompanied this code).
You should have received a copy of the GNU General Public License version
2 along with this work; if not, write to the Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
or visit www.oracle.com if you need additional information or have any
questions.
-->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 380 460" fill="#505050">
<path
d="M 346,8 H 108 C 90,8 75,23 75,41 v 316 c 0,18 15,33 33,33 h 238 c 18,0 33,-15 33,-33 V 41 C 379,23 364,8 346,8 Z m -8,344 H 116 c -2,0 -3,-1 -3,-3 V 49 c 0,-2 1,-3 3,-3 h 222 c 2,0 3,1 3,3 v 300 h 10e-4 c 0,2 -1,3 -3,3 z"/>
<path
d="m 290,389 v 26 h 10e-4 c 0,2 -1,3 -3,3 H 49 c -2,0 -3,-1 -3,-3 V 99 c 0,-2 1,-3 3,-3 h 27 v 0 l -5e-4,-38 H 41 C 23,58 8,73 8,91 v 332 c 10e-4,18 15,33 33,33 h 254 c 18,0 33,-15 33,-33 v -34"/>
</svg>

1
javadoc/element-list Normal file
View File

@@ -0,0 +1 @@
com.playerblocklife

183
javadoc/help-doc.html Normal file
View File

@@ -0,0 +1,183 @@
<!DOCTYPE HTML>
<html lang="zh">
<head>
<!-- Generated by javadoc (21) on Sat Feb 14 20:12:07 CST 2026 -->
<title>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="dc.created" content="2026-02-14">
<meta name="description" content="help">
<meta name="generator" content="javadoc/HelpWriter">
<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">
<script type="text/javascript" src="script.js"></script>
<script type="text/javascript" src="script-dir/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="script-dir/jquery-ui.min.js"></script>
</head>
<body class="help-page">
<script type="text/javascript">var pathtoroot = "./";
loadScripts(document, 'script');</script>
<noscript>
<div>您的浏览器已禁用 JavaScript。</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"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="切换导航链接"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="跳过导航链接">跳过导航链接</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="导航">
<li><a href="com/playerblocklife/package-summary.html">程序包</a></li>
<li></li>
<li>使用</li>
<li><a href="overview-tree.html"></a></li>
<li><a href="index-files/index-1.html">索引</a></li>
<li class="nav-bar-cell1-rev">帮助</li>
</ul>
<ul class="sub-nav-list-small">
<li>
<p>帮助:</p>
<ul>
<li><a href="#help-navigation">导航</a></li>
<li><a href="#help-pages"></a></li>
</ul>
</li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list">
<ul class="sub-nav-list">
<li>帮助:&nbsp;</li>
<li><a href="#help-navigation">导航</a>&nbsp;|&nbsp;</li>
<li><a href="#help-pages"></a></li>
</ul>
</div>
<div class="nav-list-search"><a href="search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="搜索">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<h1 class="title">JavaDoc 帮助</h1>
<ul class="help-toc">
<li><a href="#help-navigation">导航</a>:
<ul class="help-subtoc">
<li><a href="#search">搜索</a></li>
</ul>
</li>
<li><a href="#help-pages">页面类型</a>:
<ul class="help-subtoc">
<li><a href="#package">程序包</a></li>
<li><a href="#class">类或接口</a></li>
<li><a href="#doc-file">其他文件</a></li>
<li><a href="#use">使用</a></li>
<li><a href="#tree">树 (类分层结构)</a></li>
<li><a href="#all-packages">所有程序包</a></li>
<li><a href="#all-classes">所有类和接口</a></li>
<li><a href="#index">索引</a></li>
</ul>
</li>
</ul>
<hr>
<div class="sub-title">
<h2 id="help-navigation">导航</h2>
<a href="index.html">概览</a> 页开始,您可以使用每页中的链接以及每页顶部导航栏中的链接来浏览文档。 使用 <a href="index-files/index-1.html">索引</a> 和搜索框可以导航到特定声明和概要页,包括:<a href="allpackages-index.html">所有程序包</a>, <a href="allclasses-index.html">所有类和接口</a>
<section class="help-section" id="search">
<h3>搜索</h3>
<p>可以搜索模块、程序包、类型、字段、方法、系统属性以及 API 中定义的其他术语的定义。可以使用部分或完整名称搜索这些项,(可选)也可以使用“驼峰大小写式”缩写,或使用空格分隔的多个搜索词进行搜索。一些示例:</p>
<ul class="help-section-list">
<li><code>"j.l.obj"</code> 匹配 "java.lang.Object"</li>
<li><code>"InpStr"</code> 匹配 "java.io.InputStream"</li>
<li><code>"math exact long"</code> 匹配 "java.lang.Math.absExact(long)"</li>
</ul>
<p>有关搜索功能的完整说明,请参阅 <a href="https://docs.oracle.com/en/java/javase/21/docs/specs/javadoc/javadoc-search-spec.html">Javadoc 搜索规范</a></p>
</section>
</div>
<hr>
<div class="sub-title">
<h2 id="help-pages">页面类型</h2>
以下各部分介绍了此集合中不同类型的页面。
<section class="help-section" id="package">
<h3>程序包</h3>
<p>每个程序包都有一页,其中包含它的类和接口的列表及其概要。这些页可以包含以下类别:</p>
<ul class="help-section-list">
<li>接口</li>
<li></li>
<li>枚举类</li>
<li>异常错误类</li>
<li>批注接口</li>
</ul>
</section>
<section class="help-section" id="class">
<h3>类或接口</h3>
<p>每个类、接口、嵌套类和嵌套接口都有自己独立的页面。如果这些部分中每个部分的条目为空或不适用,则省略这些条目。</p>
<ul class="help-section-list">
<li>类继承图</li>
<li>直接子类</li>
<li>所有已知子接口</li>
<li>所有已知实现类</li>
<li>类或接口声明</li>
<li>类或接口说明</li>
</ul>
<br>
<ul class="help-section-list">
<li>嵌套类概要</li>
<li>枚举常量概要</li>
<li>字段概要</li>
<li>属性概要</li>
<li>构造器概要</li>
<li>方法概要</li>
<li>必需元素概要</li>
<li>可选元素概要</li>
</ul>
<br>
<ul class="help-section-list">
<li>枚举常量详细资料</li>
<li>字段详细资料</li>
<li>属性详细资料</li>
<li>构造器详细资料</li>
<li>方法详细资料</li>
<li>元素详细资料</li>
</ul>
<p><span class="help-note">注:</span> 批注接口有必需的元素和可选的元素,但没有方法。 只有枚举类有枚举常量。 记录类的组件显示为记录类声明的一部分。 属性是 JavaFX 的一个特性。</p>
<p>概要条目按字母顺序排列,而详细说明则按其在源代码中出现的顺序排列。这有助于保持程序员所建立的逻辑分组。</p>
</section>
<section class="help-section" id="doc-file">
<h3>其他文件</h3>
<p>程序包和模块所包含的页面中可能带有与附近声明相关的附加信息。</p>
</section>
<section class="help-section" id="use">
<h3>使用</h3>
<p>每个已文档化的程序包、类和接口都有各自的“使用”页面。此页面介绍了使用给定类或程序包的任何部分的程序包、类、方法、构造器和字段。对于给定的类或接口 A其“使用”页面包含 A 的子类、声明为 A 的字段、返回 A 的方法,以及带有类型为 A 的参数的方法和构造器。访问此页面的方法是:首先转至程序包、类或接口,然后单击导航栏中的“使用”链接。</p>
</section>
<section class="help-section" id="tree">
<h3>树 (类分层结构)</h3>
<p>对于所有程序包,都有一个 <a href="overview-tree.html">类分层结构</a> 页,以及每个程序包的分层结构。每个分层结构页都包含类的列表和接口的列表。从 <code>java.lang.Object</code> 开始,按继承结构对类进行排列。接口不从 <code>java.lang.Object</code> 继承。</p>
<ul class="help-section-list">
<li>查看“概览”页面时,单击“树”将显示所有程序包的分层结构。</li>
<li>查看特定程序包、类或接口页时,单击“树”将仅显示该程序包的分层结构。</li>
</ul>
</section>
<section class="help-section" id="all-packages">
<h3>所有程序包</h3>
<p><a href="allpackages-index.html">所有程序包</a> 包含文档中所有程序包的按字母顺序排列的索引。</p>
</section>
<section class="help-section" id="all-classes">
<h3>所有类和接口</h3>
<p><a href="allclasses-index.html">所有类和接口</a> 包含文档中所有类和接口(包括批注接口、枚举类和记录类)的按字母顺序排列的索引。</p>
</section>
<section class="help-section" id="index">
<h3>索引</h3>
<p><a href="index-files/index-1.html">索引</a> 包含文档中所有类、接口、构造器、方法和字段的按字母顺序排列的索引,以及概要页(例如 <a href="allpackages-index.html">所有程序包</a>, <a href="allclasses-index.html">所有类和接口</a>)。</p>
</section>
</div>
<hr>
<span class="help-footnote">此帮助文件适用于由标准 doclet 生成的 API 文档。</span></main>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,65 @@
<!DOCTYPE HTML>
<html lang="zh">
<head>
<!-- Generated by javadoc (21) on Sat Feb 14 20:12:07 CST 2026 -->
<title>A - 索引</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-02-14">
<meta name="description" content="index: A">
<meta name="generator" content="javadoc/IndexWriter">
<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">
<script type="text/javascript" src="../script.js"></script>
<script type="text/javascript" src="../script-dir/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../script-dir/jquery-ui.min.js"></script>
</head>
<body class="index-page">
<script type="text/javascript">var pathtoroot = "../";
loadScripts(document, 'script');</script>
<noscript>
<div>您的浏览器已禁用 JavaScript。</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"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="切换导航链接"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="跳过导航链接">跳过导航链接</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="导航">
<li><a href="../com/playerblocklife/package-summary.html">程序包</a></li>
<li></li>
<li>使用</li>
<li><a href="../overview-tree.html"></a></li>
<li class="nav-bar-cell1-rev">索引</li>
<li><a href="../help-doc.html#index">帮助</a></li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list"></div>
<div class="nav-list-search"><a href="../search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="搜索">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<div class="header">
<h1>索引</h1>
</div>
<a href="index-1.html">A</a>&nbsp;<a href="index-2.html">B</a>&nbsp;<a href="index-3.html">C</a>&nbsp;<a href="index-4.html">G</a>&nbsp;<a href="index-5.html">H</a>&nbsp;<a href="index-6.html">I</a>&nbsp;<a href="index-7.html">L</a>&nbsp;<a href="index-8.html">M</a>&nbsp;<a href="index-9.html">O</a>&nbsp;<a href="index-10.html">P</a>&nbsp;<a href="index-11.html">R</a>&nbsp;<a href="index-12.html">S</a>&nbsp;<a href="index-13.html">U</a>&nbsp;<br><a href="../allpackages-index.html">所有程序包</a><span class="vertical-separator">|</span><a href="../allclasses-index.html">所有类和接口</a>
<h2 class="title" id="I:A">A</h2>
<dl class="index">
<dt><a href="../com/playerblocklife/AdminCommands.html" class="type-name-link" title="com.playerblocklife中的类">AdminCommands</a> - <a href="../com/playerblocklife/package-summary.html">com.playerblocklife</a>中的类</dt>
<dd>&nbsp;</dd>
<dt><a href="../com/playerblocklife/AdminCommands.html#%3Cinit%3E(com.playerblocklife.PlayerBlockLife)" class="member-name-link">AdminCommands(PlayerBlockLife)</a> - 类的构造器 com.playerblocklife.<a href="../com/playerblocklife/AdminCommands.html" title="com.playerblocklife中的类">AdminCommands</a></dt>
<dd>&nbsp;</dd>
</dl>
<a href="index-1.html">A</a>&nbsp;<a href="index-2.html">B</a>&nbsp;<a href="index-3.html">C</a>&nbsp;<a href="index-4.html">G</a>&nbsp;<a href="index-5.html">H</a>&nbsp;<a href="index-6.html">I</a>&nbsp;<a href="index-7.html">L</a>&nbsp;<a href="index-8.html">M</a>&nbsp;<a href="index-9.html">O</a>&nbsp;<a href="index-10.html">P</a>&nbsp;<a href="index-11.html">R</a>&nbsp;<a href="index-12.html">S</a>&nbsp;<a href="index-13.html">U</a>&nbsp;<br><a href="../allpackages-index.html">所有程序包</a><span class="vertical-separator">|</span><a href="../allclasses-index.html">所有类和接口</a></main>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,81 @@
<!DOCTYPE HTML>
<html lang="zh">
<head>
<!-- Generated by javadoc (21) on Sat Feb 14 20:12:07 CST 2026 -->
<title>P - 索引</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-02-14">
<meta name="description" content="index: P">
<meta name="generator" content="javadoc/IndexWriter">
<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">
<script type="text/javascript" src="../script.js"></script>
<script type="text/javascript" src="../script-dir/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../script-dir/jquery-ui.min.js"></script>
</head>
<body class="index-page">
<script type="text/javascript">var pathtoroot = "../";
loadScripts(document, 'script');</script>
<noscript>
<div>您的浏览器已禁用 JavaScript。</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"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="切换导航链接"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="跳过导航链接">跳过导航链接</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="导航">
<li><a href="../com/playerblocklife/package-summary.html">程序包</a></li>
<li></li>
<li>使用</li>
<li><a href="../overview-tree.html"></a></li>
<li class="nav-bar-cell1-rev">索引</li>
<li><a href="../help-doc.html#index">帮助</a></li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list"></div>
<div class="nav-list-search"><a href="../search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="搜索">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<div class="header">
<h1>索引</h1>
</div>
<a href="index-1.html">A</a>&nbsp;<a href="index-2.html">B</a>&nbsp;<a href="index-3.html">C</a>&nbsp;<a href="index-4.html">G</a>&nbsp;<a href="index-5.html">H</a>&nbsp;<a href="index-6.html">I</a>&nbsp;<a href="index-7.html">L</a>&nbsp;<a href="index-8.html">M</a>&nbsp;<a href="index-9.html">O</a>&nbsp;<a href="index-10.html">P</a>&nbsp;<a href="index-11.html">R</a>&nbsp;<a href="index-12.html">S</a>&nbsp;<a href="index-13.html">U</a>&nbsp;<br><a href="../allpackages-index.html">所有程序包</a><span class="vertical-separator">|</span><a href="../allclasses-index.html">所有类和接口</a>
<h2 class="title" id="I:P">P</h2>
<dl class="index">
<dt><a href="../com/playerblocklife/PlayerBlockLife.html" class="type-name-link" title="com.playerblocklife中的类">PlayerBlockLife</a> - <a href="../com/playerblocklife/package-summary.html">com.playerblocklife</a>中的类</dt>
<dd>
<div class="block">PlayerBlockLife插件主类 - 玩家生命方块系统的核心控制器</div>
</dd>
<dt><a href="../com/playerblocklife/PlayerBlockLife.html#%3Cinit%3E()" class="member-name-link">PlayerBlockLife()</a> - 类的构造器 com.playerblocklife.<a href="../com/playerblocklife/PlayerBlockLife.html" title="com.playerblocklife中的类">PlayerBlockLife</a></dt>
<dd>&nbsp;</dd>
<dt><a href="../com/playerblocklife/PlayerBlockManager.html" class="type-name-link" title="com.playerblocklife中的类">PlayerBlockManager</a> - <a href="../com/playerblocklife/package-summary.html">com.playerblocklife</a>中的类</dt>
<dd>
<div class="block">玩家方块管理器 - 负责管理玩家生命方块的核心组件</div>
</dd>
<dt><a href="../com/playerblocklife/PlayerBlockManager.html#%3Cinit%3E(com.playerblocklife.PlayerBlockLife,com.playerblocklife.SkinManager)" class="member-name-link">PlayerBlockManager(PlayerBlockLife, SkinManager)</a> - 类的构造器 com.playerblocklife.<a href="../com/playerblocklife/PlayerBlockManager.html" title="com.playerblocklife中的类">PlayerBlockManager</a></dt>
<dd>&nbsp;</dd>
<dt><a href="../com/playerblocklife/PlayerJoinListener.html" class="type-name-link" title="com.playerblocklife中的类">PlayerJoinListener</a> - <a href="../com/playerblocklife/package-summary.html">com.playerblocklife</a>中的类</dt>
<dd>&nbsp;</dd>
<dt><a href="../com/playerblocklife/PlayerJoinListener.html#%3Cinit%3E(com.playerblocklife.PlayerBlockLife)" class="member-name-link">PlayerJoinListener(PlayerBlockLife)</a> - 类的构造器 com.playerblocklife.<a href="../com/playerblocklife/PlayerJoinListener.html" title="com.playerblocklife中的类">PlayerJoinListener</a></dt>
<dd>&nbsp;</dd>
<dt><a href="../com/playerblocklife/PlayerQuitListener.html" class="type-name-link" title="com.playerblocklife中的类">PlayerQuitListener</a> - <a href="../com/playerblocklife/package-summary.html">com.playerblocklife</a>中的类</dt>
<dd>&nbsp;</dd>
<dt><a href="../com/playerblocklife/PlayerQuitListener.html#%3Cinit%3E(com.playerblocklife.PlayerBlockLife)" class="member-name-link">PlayerQuitListener(PlayerBlockLife)</a> - 类的构造器 com.playerblocklife.<a href="../com/playerblocklife/PlayerQuitListener.html" title="com.playerblocklife中的类">PlayerQuitListener</a></dt>
<dd>&nbsp;</dd>
</dl>
<a href="index-1.html">A</a>&nbsp;<a href="index-2.html">B</a>&nbsp;<a href="index-3.html">C</a>&nbsp;<a href="index-4.html">G</a>&nbsp;<a href="index-5.html">H</a>&nbsp;<a href="index-6.html">I</a>&nbsp;<a href="index-7.html">L</a>&nbsp;<a href="index-8.html">M</a>&nbsp;<a href="index-9.html">O</a>&nbsp;<a href="index-10.html">P</a>&nbsp;<a href="index-11.html">R</a>&nbsp;<a href="index-12.html">S</a>&nbsp;<a href="index-13.html">U</a>&nbsp;<br><a href="../allpackages-index.html">所有程序包</a><span class="vertical-separator">|</span><a href="../allclasses-index.html">所有类和接口</a></main>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,87 @@
<!DOCTYPE HTML>
<html lang="zh">
<head>
<!-- Generated by javadoc (21) on Sat Feb 14 20:12:07 CST 2026 -->
<title>R - 索引</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-02-14">
<meta name="description" content="index: R">
<meta name="generator" content="javadoc/IndexWriter">
<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">
<script type="text/javascript" src="../script.js"></script>
<script type="text/javascript" src="../script-dir/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../script-dir/jquery-ui.min.js"></script>
</head>
<body class="index-page">
<script type="text/javascript">var pathtoroot = "../";
loadScripts(document, 'script');</script>
<noscript>
<div>您的浏览器已禁用 JavaScript。</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"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="切换导航链接"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="跳过导航链接">跳过导航链接</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="导航">
<li><a href="../com/playerblocklife/package-summary.html">程序包</a></li>
<li></li>
<li>使用</li>
<li><a href="../overview-tree.html"></a></li>
<li class="nav-bar-cell1-rev">索引</li>
<li><a href="../help-doc.html#index">帮助</a></li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list"></div>
<div class="nav-list-search"><a href="../search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="搜索">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<div class="header">
<h1>索引</h1>
</div>
<a href="index-1.html">A</a>&nbsp;<a href="index-2.html">B</a>&nbsp;<a href="index-3.html">C</a>&nbsp;<a href="index-4.html">G</a>&nbsp;<a href="index-5.html">H</a>&nbsp;<a href="index-6.html">I</a>&nbsp;<a href="index-7.html">L</a>&nbsp;<a href="index-8.html">M</a>&nbsp;<a href="index-9.html">O</a>&nbsp;<a href="index-10.html">P</a>&nbsp;<a href="index-11.html">R</a>&nbsp;<a href="index-12.html">S</a>&nbsp;<a href="index-13.html">U</a>&nbsp;<br><a href="../allpackages-index.html">所有程序包</a><span class="vertical-separator">|</span><a href="../allclasses-index.html">所有类和接口</a>
<h2 class="title" id="I:R">R</h2>
<dl class="index">
<dt><a href="../com/playerblocklife/PlayerBlockManager.html#regeneratePlayerBlocks(org.bukkit.entity.Player)" class="member-name-link">regeneratePlayerBlocks(Player)</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/PlayerBlockManager.html" title="com.playerblocklife中的类">PlayerBlockManager</a></dt>
<dd>
<div class="block">重新生成玩家的生命方块</div>
</dd>
<dt><a href="../com/playerblocklife/ConfigManager.html#reloadConfig()" class="member-name-link">reloadConfig()</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/ConfigManager.html" title="com.playerblocklife中的类">ConfigManager</a></dt>
<dd>
<div class="block">重新加载配置文件</div>
</dd>
<dt><a href="../com/playerblocklife/PlayerBlockLife.html#reloadConfig()" class="member-name-link">reloadConfig()</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/PlayerBlockLife.html" title="com.playerblocklife中的类">PlayerBlockLife</a></dt>
<dd>
<div class="block">重写 reloadConfig 方法,避免循环依赖</div>
</dd>
<dt><a href="../com/playerblocklife/MessageManager.html#reloadMessages()" class="member-name-link">reloadMessages()</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/MessageManager.html" title="com.playerblocklife中的类">MessageManager</a></dt>
<dd>
<div class="block">重新加载消息配置</div>
</dd>
<dt><a href="../com/playerblocklife/PlayerBlockLife.html#reloadPluginConfig()" class="member-name-link">reloadPluginConfig()</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/PlayerBlockLife.html" title="com.playerblocklife中的类">PlayerBlockLife</a></dt>
<dd>
<div class="block">插件的完整重载方法(用于命令)</div>
</dd>
<dt><a href="../com/playerblocklife/PlayerBlockManager.html#removeBlock(org.bukkit.Location,org.bukkit.entity.Player)" class="member-name-link">removeBlock(Location, Player)</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/PlayerBlockManager.html" title="com.playerblocklife中的类">PlayerBlockManager</a></dt>
<dd>
<div class="block">移除方块(当被挖掘时)</div>
</dd>
<dt><a href="../com/playerblocklife/LifeSystem.html#revivePlayer(org.bukkit.entity.Player)" class="member-name-link">revivePlayer(Player)</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/LifeSystem.html" title="com.playerblocklife中的类">LifeSystem</a></dt>
<dd>&nbsp;</dd>
</dl>
<a href="index-1.html">A</a>&nbsp;<a href="index-2.html">B</a>&nbsp;<a href="index-3.html">C</a>&nbsp;<a href="index-4.html">G</a>&nbsp;<a href="index-5.html">H</a>&nbsp;<a href="index-6.html">I</a>&nbsp;<a href="index-7.html">L</a>&nbsp;<a href="index-8.html">M</a>&nbsp;<a href="index-9.html">O</a>&nbsp;<a href="index-10.html">P</a>&nbsp;<a href="index-11.html">R</a>&nbsp;<a href="index-12.html">S</a>&nbsp;<a href="index-13.html">U</a>&nbsp;<br><a href="../allpackages-index.html">所有程序包</a><span class="vertical-separator">|</span><a href="../allclasses-index.html">所有类和接口</a></main>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,87 @@
<!DOCTYPE HTML>
<html lang="zh">
<head>
<!-- Generated by javadoc (21) on Sat Feb 14 20:12:07 CST 2026 -->
<title>S - 索引</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-02-14">
<meta name="description" content="index: S">
<meta name="generator" content="javadoc/IndexWriter">
<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">
<script type="text/javascript" src="../script.js"></script>
<script type="text/javascript" src="../script-dir/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../script-dir/jquery-ui.min.js"></script>
</head>
<body class="index-page">
<script type="text/javascript">var pathtoroot = "../";
loadScripts(document, 'script');</script>
<noscript>
<div>您的浏览器已禁用 JavaScript。</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"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="切换导航链接"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="跳过导航链接">跳过导航链接</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="导航">
<li><a href="../com/playerblocklife/package-summary.html">程序包</a></li>
<li></li>
<li>使用</li>
<li><a href="../overview-tree.html"></a></li>
<li class="nav-bar-cell1-rev">索引</li>
<li><a href="../help-doc.html#index">帮助</a></li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list"></div>
<div class="nav-list-search"><a href="../search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="搜索">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<div class="header">
<h1>索引</h1>
</div>
<a href="index-1.html">A</a>&nbsp;<a href="index-2.html">B</a>&nbsp;<a href="index-3.html">C</a>&nbsp;<a href="index-4.html">G</a>&nbsp;<a href="index-5.html">H</a>&nbsp;<a href="index-6.html">I</a>&nbsp;<a href="index-7.html">L</a>&nbsp;<a href="index-8.html">M</a>&nbsp;<a href="index-9.html">O</a>&nbsp;<a href="index-10.html">P</a>&nbsp;<a href="index-11.html">R</a>&nbsp;<a href="index-12.html">S</a>&nbsp;<a href="index-13.html">U</a>&nbsp;<br><a href="../allpackages-index.html">所有程序包</a><span class="vertical-separator">|</span><a href="../allclasses-index.html">所有类和接口</a>
<h2 class="title" id="I:S">S</h2>
<dl class="index">
<dt><a href="../com/playerblocklife/ConfigManager.html#saveConfig()" class="member-name-link">saveConfig()</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/ConfigManager.html" title="com.playerblocklife中的类">ConfigManager</a></dt>
<dd>
<div class="block">保存当前配置到文件</div>
</dd>
<dt><a href="../com/playerblocklife/PlayerBlockManager.html#saveData()" class="member-name-link">saveData()</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/PlayerBlockManager.html" title="com.playerblocklife中的类">PlayerBlockManager</a></dt>
<dd>
<div class="block">保存数据</div>
</dd>
<dt><a href="../com/playerblocklife/SkinManager.html#saveSkinData()" class="member-name-link">saveSkinData()</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/SkinManager.html" title="com.playerblocklife中的类">SkinManager</a></dt>
<dd>&nbsp;</dd>
<dt><a href="../com/playerblocklife/PlayerBlockManager.html#setLifeBlocks(org.bukkit.entity.Player,org.bukkit.Location)" class="member-name-link">setLifeBlocks(Player, Location)</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/PlayerBlockManager.html" title="com.playerblocklife中的类">PlayerBlockManager</a></dt>
<dd>
<div class="block">为玩家设置生命方块(兼容旧方法)</div>
</dd>
<dt><a href="../com/playerblocklife/SetLifeBlocksCommand.html" class="type-name-link" title="com.playerblocklife中的类">SetLifeBlocksCommand</a> - <a href="../com/playerblocklife/package-summary.html">com.playerblocklife</a>中的类</dt>
<dd>&nbsp;</dd>
<dt><a href="../com/playerblocklife/SetLifeBlocksCommand.html#%3Cinit%3E(com.playerblocklife.PlayerBlockLife)" class="member-name-link">SetLifeBlocksCommand(PlayerBlockLife)</a> - 类的构造器 com.playerblocklife.<a href="../com/playerblocklife/SetLifeBlocksCommand.html" title="com.playerblocklife中的类">SetLifeBlocksCommand</a></dt>
<dd>&nbsp;</dd>
<dt><a href="../com/playerblocklife/LifeSystem.html#setPlayerHealth(java.util.UUID,int)" class="member-name-link">setPlayerHealth(UUID, int)</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/LifeSystem.html" title="com.playerblocklife中的类">LifeSystem</a></dt>
<dd>&nbsp;</dd>
<dt><a href="../com/playerblocklife/SkinManager.html" class="type-name-link" title="com.playerblocklife中的类">SkinManager</a> - <a href="../com/playerblocklife/package-summary.html">com.playerblocklife</a>中的类</dt>
<dd>
<div class="block">皮肤管理器 - 负责玩家皮肤的获取、缓存和应用</div>
</dd>
<dt><a href="../com/playerblocklife/SkinManager.html#%3Cinit%3E(com.playerblocklife.PlayerBlockLife)" class="member-name-link">SkinManager(PlayerBlockLife)</a> - 类的构造器 com.playerblocklife.<a href="../com/playerblocklife/SkinManager.html" title="com.playerblocklife中的类">SkinManager</a></dt>
<dd>&nbsp;</dd>
</dl>
<a href="index-1.html">A</a>&nbsp;<a href="index-2.html">B</a>&nbsp;<a href="index-3.html">C</a>&nbsp;<a href="index-4.html">G</a>&nbsp;<a href="index-5.html">H</a>&nbsp;<a href="index-6.html">I</a>&nbsp;<a href="index-7.html">L</a>&nbsp;<a href="index-8.html">M</a>&nbsp;<a href="index-9.html">O</a>&nbsp;<a href="index-10.html">P</a>&nbsp;<a href="index-11.html">R</a>&nbsp;<a href="index-12.html">S</a>&nbsp;<a href="index-13.html">U</a>&nbsp;<br><a href="../allpackages-index.html">所有程序包</a><span class="vertical-separator">|</span><a href="../allclasses-index.html">所有类和接口</a></main>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,67 @@
<!DOCTYPE HTML>
<html lang="zh">
<head>
<!-- Generated by javadoc (21) on Sat Feb 14 20:12:07 CST 2026 -->
<title>U - 索引</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-02-14">
<meta name="description" content="index: U">
<meta name="generator" content="javadoc/IndexWriter">
<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">
<script type="text/javascript" src="../script.js"></script>
<script type="text/javascript" src="../script-dir/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../script-dir/jquery-ui.min.js"></script>
</head>
<body class="index-page">
<script type="text/javascript">var pathtoroot = "../";
loadScripts(document, 'script');</script>
<noscript>
<div>您的浏览器已禁用 JavaScript。</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"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="切换导航链接"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="跳过导航链接">跳过导航链接</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="导航">
<li><a href="../com/playerblocklife/package-summary.html">程序包</a></li>
<li></li>
<li>使用</li>
<li><a href="../overview-tree.html"></a></li>
<li class="nav-bar-cell1-rev">索引</li>
<li><a href="../help-doc.html#index">帮助</a></li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list"></div>
<div class="nav-list-search"><a href="../search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="搜索">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<div class="header">
<h1>索引</h1>
</div>
<a href="index-1.html">A</a>&nbsp;<a href="index-2.html">B</a>&nbsp;<a href="index-3.html">C</a>&nbsp;<a href="index-4.html">G</a>&nbsp;<a href="index-5.html">H</a>&nbsp;<a href="index-6.html">I</a>&nbsp;<a href="index-7.html">L</a>&nbsp;<a href="index-8.html">M</a>&nbsp;<a href="index-9.html">O</a>&nbsp;<a href="index-10.html">P</a>&nbsp;<a href="index-11.html">R</a>&nbsp;<a href="index-12.html">S</a>&nbsp;<a href="index-13.html">U</a>&nbsp;<br><a href="../allpackages-index.html">所有程序包</a><span class="vertical-separator">|</span><a href="../allclasses-index.html">所有类和接口</a>
<h2 class="title" id="I:U">U</h2>
<dl class="index">
<dt><a href="../com/playerblocklife/ConfigManager.html#useExternalMessageFile()" class="member-name-link">useExternalMessageFile()</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/ConfigManager.html" title="com.playerblocklife中的类">ConfigManager</a></dt>
<dd>&nbsp;</dd>
<dt><a href="../com/playerblocklife/ConfigManager.html#useSkinsRestorer()" class="member-name-link">useSkinsRestorer()</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/ConfigManager.html" title="com.playerblocklife中的类">ConfigManager</a></dt>
<dd>
<div class="block">检查是否启用SkinsRestorer插件支持</div>
</dd>
</dl>
<a href="index-1.html">A</a>&nbsp;<a href="index-2.html">B</a>&nbsp;<a href="index-3.html">C</a>&nbsp;<a href="index-4.html">G</a>&nbsp;<a href="index-5.html">H</a>&nbsp;<a href="index-6.html">I</a>&nbsp;<a href="index-7.html">L</a>&nbsp;<a href="index-8.html">M</a>&nbsp;<a href="index-9.html">O</a>&nbsp;<a href="index-10.html">P</a>&nbsp;<a href="index-11.html">R</a>&nbsp;<a href="index-12.html">S</a>&nbsp;<a href="index-13.html">U</a>&nbsp;<br><a href="../allpackages-index.html">所有程序包</a><span class="vertical-separator">|</span><a href="../allclasses-index.html">所有类和接口</a></main>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,65 @@
<!DOCTYPE HTML>
<html lang="zh">
<head>
<!-- Generated by javadoc (21) on Sat Feb 14 20:12:07 CST 2026 -->
<title>B - 索引</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-02-14">
<meta name="description" content="index: B">
<meta name="generator" content="javadoc/IndexWriter">
<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">
<script type="text/javascript" src="../script.js"></script>
<script type="text/javascript" src="../script-dir/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../script-dir/jquery-ui.min.js"></script>
</head>
<body class="index-page">
<script type="text/javascript">var pathtoroot = "../";
loadScripts(document, 'script');</script>
<noscript>
<div>您的浏览器已禁用 JavaScript。</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"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="切换导航链接"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="跳过导航链接">跳过导航链接</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="导航">
<li><a href="../com/playerblocklife/package-summary.html">程序包</a></li>
<li></li>
<li>使用</li>
<li><a href="../overview-tree.html"></a></li>
<li class="nav-bar-cell1-rev">索引</li>
<li><a href="../help-doc.html#index">帮助</a></li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list"></div>
<div class="nav-list-search"><a href="../search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="搜索">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<div class="header">
<h1>索引</h1>
</div>
<a href="index-1.html">A</a>&nbsp;<a href="index-2.html">B</a>&nbsp;<a href="index-3.html">C</a>&nbsp;<a href="index-4.html">G</a>&nbsp;<a href="index-5.html">H</a>&nbsp;<a href="index-6.html">I</a>&nbsp;<a href="index-7.html">L</a>&nbsp;<a href="index-8.html">M</a>&nbsp;<a href="index-9.html">O</a>&nbsp;<a href="index-10.html">P</a>&nbsp;<a href="index-11.html">R</a>&nbsp;<a href="index-12.html">S</a>&nbsp;<a href="index-13.html">U</a>&nbsp;<br><a href="../allpackages-index.html">所有程序包</a><span class="vertical-separator">|</span><a href="../allclasses-index.html">所有类和接口</a>
<h2 class="title" id="I:B">B</h2>
<dl class="index">
<dt><a href="../com/playerblocklife/BlockBreakListener.html" class="type-name-link" title="com.playerblocklife中的类">BlockBreakListener</a> - <a href="../com/playerblocklife/package-summary.html">com.playerblocklife</a>中的类</dt>
<dd>&nbsp;</dd>
<dt><a href="../com/playerblocklife/BlockBreakListener.html#%3Cinit%3E(com.playerblocklife.PlayerBlockLife)" class="member-name-link">BlockBreakListener(PlayerBlockLife)</a> - 类的构造器 com.playerblocklife.<a href="../com/playerblocklife/BlockBreakListener.html" title="com.playerblocklife中的类">BlockBreakListener</a></dt>
<dd>&nbsp;</dd>
</dl>
<a href="index-1.html">A</a>&nbsp;<a href="index-2.html">B</a>&nbsp;<a href="index-3.html">C</a>&nbsp;<a href="index-4.html">G</a>&nbsp;<a href="index-5.html">H</a>&nbsp;<a href="index-6.html">I</a>&nbsp;<a href="index-7.html">L</a>&nbsp;<a href="index-8.html">M</a>&nbsp;<a href="index-9.html">O</a>&nbsp;<a href="index-10.html">P</a>&nbsp;<a href="index-11.html">R</a>&nbsp;<a href="index-12.html">S</a>&nbsp;<a href="index-13.html">U</a>&nbsp;<br><a href="../allpackages-index.html">所有程序包</a><span class="vertical-separator">|</span><a href="../allclasses-index.html">所有类和接口</a></main>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,89 @@
<!DOCTYPE HTML>
<html lang="zh">
<head>
<!-- Generated by javadoc (21) on Sat Feb 14 20:12:07 CST 2026 -->
<title>C - 索引</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-02-14">
<meta name="description" content="index: C">
<meta name="generator" content="javadoc/IndexWriter">
<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">
<script type="text/javascript" src="../script.js"></script>
<script type="text/javascript" src="../script-dir/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../script-dir/jquery-ui.min.js"></script>
</head>
<body class="index-page">
<script type="text/javascript">var pathtoroot = "../";
loadScripts(document, 'script');</script>
<noscript>
<div>您的浏览器已禁用 JavaScript。</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"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="切换导航链接"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="跳过导航链接">跳过导航链接</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="导航">
<li><a href="../com/playerblocklife/package-summary.html">程序包</a></li>
<li></li>
<li>使用</li>
<li><a href="../overview-tree.html"></a></li>
<li class="nav-bar-cell1-rev">索引</li>
<li><a href="../help-doc.html#index">帮助</a></li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list"></div>
<div class="nav-list-search"><a href="../search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="搜索">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<div class="header">
<h1>索引</h1>
</div>
<a href="index-1.html">A</a>&nbsp;<a href="index-2.html">B</a>&nbsp;<a href="index-3.html">C</a>&nbsp;<a href="index-4.html">G</a>&nbsp;<a href="index-5.html">H</a>&nbsp;<a href="index-6.html">I</a>&nbsp;<a href="index-7.html">L</a>&nbsp;<a href="index-8.html">M</a>&nbsp;<a href="index-9.html">O</a>&nbsp;<a href="index-10.html">P</a>&nbsp;<a href="index-11.html">R</a>&nbsp;<a href="index-12.html">S</a>&nbsp;<a href="index-13.html">U</a>&nbsp;<br><a href="../allpackages-index.html">所有程序包</a><span class="vertical-separator">|</span><a href="../allclasses-index.html">所有类和接口</a>
<h2 class="title" id="I:C">C</h2>
<dl class="index">
<dt><a href="../com/playerblocklife/LifeSystem.html#checkAllPlayers()" class="member-name-link">checkAllPlayers()</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/LifeSystem.html" title="com.playerblocklife中的类">LifeSystem</a></dt>
<dd>&nbsp;</dd>
<dt><a href="../com/playerblocklife/CheckLifeBlocksCommand.html" class="type-name-link" title="com.playerblocklife中的类">CheckLifeBlocksCommand</a> - <a href="../com/playerblocklife/package-summary.html">com.playerblocklife</a>中的类</dt>
<dd>&nbsp;</dd>
<dt><a href="../com/playerblocklife/CheckLifeBlocksCommand.html#%3Cinit%3E(com.playerblocklife.PlayerBlockLife)" class="member-name-link">CheckLifeBlocksCommand(PlayerBlockLife)</a> - 类的构造器 com.playerblocklife.<a href="../com/playerblocklife/CheckLifeBlocksCommand.html" title="com.playerblocklife中的类">CheckLifeBlocksCommand</a></dt>
<dd>&nbsp;</dd>
<dt><a href="../com/playerblocklife/LifeSystem.html#checkPlayerHealth(org.bukkit.entity.Player)" class="member-name-link">checkPlayerHealth(Player)</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/LifeSystem.html" title="com.playerblocklife中的类">LifeSystem</a></dt>
<dd>&nbsp;</dd>
<dt><a href="../com/playerblocklife/SkinManager.html#cleanupOldCache()" class="member-name-link">cleanupOldCache()</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/SkinManager.html" title="com.playerblocklife中的类">SkinManager</a></dt>
<dd>&nbsp;</dd>
<dt><a href="../com/playerblocklife/PlayerBlockManager.html#clearPlayerBlocks(java.util.UUID)" class="member-name-link">clearPlayerBlocks(UUID)</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/PlayerBlockManager.html" title="com.playerblocklife中的类">PlayerBlockManager</a></dt>
<dd>
<div class="block">清除玩家的所有生命方块</div>
</dd>
<dt><a href="../com/playerblocklife/package-summary.html">com.playerblocklife</a> - 程序包 com.playerblocklife</dt>
<dd>&nbsp;</dd>
<dt><a href="../com/playerblocklife/ConfigManager.html" class="type-name-link" title="com.playerblocklife中的类">ConfigManager</a> - <a href="../com/playerblocklife/package-summary.html">com.playerblocklife</a>中的类</dt>
<dd>
<div class="block">配置管理器 - 负责加载、保存和管理插件的配置文件</div>
</dd>
<dt><a href="../com/playerblocklife/ConfigManager.html#%3Cinit%3E(com.playerblocklife.PlayerBlockLife)" class="member-name-link">ConfigManager(PlayerBlockLife)</a> - 类的构造器 com.playerblocklife.<a href="../com/playerblocklife/ConfigManager.html" title="com.playerblocklife中的类">ConfigManager</a></dt>
<dd>
<div class="block">构造一个新的配置管理器</div>
</dd>
<dt><a href="../com/playerblocklife/SkinManager.html#createPlayerHead(java.util.UUID,java.lang.String)" class="member-name-link">createPlayerHead(UUID, String)</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/SkinManager.html" title="com.playerblocklife中的类">SkinManager</a></dt>
<dd>
<div class="block">创建带有玩家皮肤的头颅物品</div>
</dd>
</dl>
<a href="index-1.html">A</a>&nbsp;<a href="index-2.html">B</a>&nbsp;<a href="index-3.html">C</a>&nbsp;<a href="index-4.html">G</a>&nbsp;<a href="index-5.html">H</a>&nbsp;<a href="index-6.html">I</a>&nbsp;<a href="index-7.html">L</a>&nbsp;<a href="index-8.html">M</a>&nbsp;<a href="index-9.html">O</a>&nbsp;<a href="index-10.html">P</a>&nbsp;<a href="index-11.html">R</a>&nbsp;<a href="index-12.html">S</a>&nbsp;<a href="index-13.html">U</a>&nbsp;<br><a href="../allpackages-index.html">所有程序包</a><span class="vertical-separator">|</span><a href="../allclasses-index.html">所有类和接口</a></main>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,191 @@
<!DOCTYPE HTML>
<html lang="zh">
<head>
<!-- Generated by javadoc (21) on Sat Feb 14 20:12:07 CST 2026 -->
<title>G - 索引</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-02-14">
<meta name="description" content="index: G">
<meta name="generator" content="javadoc/IndexWriter">
<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">
<script type="text/javascript" src="../script.js"></script>
<script type="text/javascript" src="../script-dir/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../script-dir/jquery-ui.min.js"></script>
</head>
<body class="index-page">
<script type="text/javascript">var pathtoroot = "../";
loadScripts(document, 'script');</script>
<noscript>
<div>您的浏览器已禁用 JavaScript。</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"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="切换导航链接"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="跳过导航链接">跳过导航链接</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="导航">
<li><a href="../com/playerblocklife/package-summary.html">程序包</a></li>
<li></li>
<li>使用</li>
<li><a href="../overview-tree.html"></a></li>
<li class="nav-bar-cell1-rev">索引</li>
<li><a href="../help-doc.html#index">帮助</a></li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list"></div>
<div class="nav-list-search"><a href="../search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="搜索">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<div class="header">
<h1>索引</h1>
</div>
<a href="index-1.html">A</a>&nbsp;<a href="index-2.html">B</a>&nbsp;<a href="index-3.html">C</a>&nbsp;<a href="index-4.html">G</a>&nbsp;<a href="index-5.html">H</a>&nbsp;<a href="index-6.html">I</a>&nbsp;<a href="index-7.html">L</a>&nbsp;<a href="index-8.html">M</a>&nbsp;<a href="index-9.html">O</a>&nbsp;<a href="index-10.html">P</a>&nbsp;<a href="index-11.html">R</a>&nbsp;<a href="index-12.html">S</a>&nbsp;<a href="index-13.html">U</a>&nbsp;<br><a href="../allpackages-index.html">所有程序包</a><span class="vertical-separator">|</span><a href="../allclasses-index.html">所有类和接口</a>
<h2 class="title" id="I:G">G</h2>
<dl class="index">
<dt><a href="../com/playerblocklife/PlayerBlockManager.html#generateLifeBlocksForPlayer(org.bukkit.entity.Player,int,int,boolean,int)" class="member-name-link">generateLifeBlocksForPlayer(Player, int, int, boolean, int)</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/PlayerBlockManager.html" title="com.playerblocklife中的类">PlayerBlockManager</a></dt>
<dd>
<div class="block">为玩家生成指定数量的生命方块</div>
</dd>
<dt><a href="../com/playerblocklife/PlayerBlockManager.html#getAllBlockOwners()" class="member-name-link">getAllBlockOwners()</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/PlayerBlockManager.html" title="com.playerblocklife中的类">PlayerBlockManager</a></dt>
<dd>
<div class="block">获取所有方块的位置和所有者</div>
</dd>
<dt><a href="../com/playerblocklife/SkinManager.html#getAllCustomModelData()" class="member-name-link">getAllCustomModelData()</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/SkinManager.html" title="com.playerblocklife中的类">SkinManager</a></dt>
<dd>&nbsp;</dd>
<dt><a href="../com/playerblocklife/PlayerBlockManager.html#getAllPlayerBlocks()" class="member-name-link">getAllPlayerBlocks()</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/PlayerBlockManager.html" title="com.playerblocklife中的类">PlayerBlockManager</a></dt>
<dd>
<div class="block">获取所有玩家的方块数据</div>
</dd>
<dt><a href="../com/playerblocklife/SkinManager.html#getAllSkinData()" class="member-name-link">getAllSkinData()</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/SkinManager.html" title="com.playerblocklife中的类">SkinManager</a></dt>
<dd>&nbsp;</dd>
<dt><a href="../com/playerblocklife/ConfigManager.html#getAutoSaveInterval()" class="member-name-link">getAutoSaveInterval()</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/ConfigManager.html" title="com.playerblocklife中的类">ConfigManager</a></dt>
<dd>&nbsp;</dd>
<dt><a href="../com/playerblocklife/PlayerBlockLife.html#getBlockManager()" class="member-name-link">getBlockManager()</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/PlayerBlockLife.html" title="com.playerblocklife中的类">PlayerBlockLife</a></dt>
<dd>&nbsp;</dd>
<dt><a href="../com/playerblocklife/ConfigManager.html#getBlockMaterial()" class="member-name-link">getBlockMaterial()</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/ConfigManager.html" title="com.playerblocklife中的类">ConfigManager</a></dt>
<dd>&nbsp;</dd>
<dt><a href="../com/playerblocklife/PlayerBlockManager.html#getBlockOwner(org.bukkit.Location)" class="member-name-link">getBlockOwner(Location)</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/PlayerBlockManager.html" title="com.playerblocklife中的类">PlayerBlockManager</a></dt>
<dd>
<div class="block">检查方块是否属于某个玩家</div>
</dd>
<dt><a href="../com/playerblocklife/ConfigManager.html#getBlocksPerPlayer()" class="member-name-link">getBlocksPerPlayer()</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/ConfigManager.html" title="com.playerblocklife中的类">ConfigManager</a></dt>
<dd>&nbsp;</dd>
<dt><a href="../com/playerblocklife/MessageManager.html#getBroadcastMessage(java.lang.String,java.lang.String)" class="member-name-link">getBroadcastMessage(String, String)</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/MessageManager.html" title="com.playerblocklife中的类">MessageManager</a></dt>
<dd>
<div class="block">获取广播消息</div>
</dd>
<dt><a href="../com/playerblocklife/ConfigManager.html#getBroadcastRange()" class="member-name-link">getBroadcastRange()</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/ConfigManager.html" title="com.playerblocklife中的类">ConfigManager</a></dt>
<dd>&nbsp;</dd>
<dt><a href="../com/playerblocklife/ConfigManager.html#getCacheExpireDays()" class="member-name-link">getCacheExpireDays()</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/ConfigManager.html" title="com.playerblocklife中的类">ConfigManager</a></dt>
<dd>&nbsp;</dd>
<dt><a href="../com/playerblocklife/MessageManager.html#getCommandMessage(java.lang.String,java.lang.String,java.lang.String)" class="member-name-link">getCommandMessage(String, String, String)</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/MessageManager.html" title="com.playerblocklife中的类">MessageManager</a></dt>
<dd>
<div class="block">获取命令消息</div>
</dd>
<dt><a href="../com/playerblocklife/ConfigManager.html#getConfig()" class="member-name-link">getConfig()</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/ConfigManager.html" title="com.playerblocklife中的类">ConfigManager</a></dt>
<dd>
<div class="block">获取配置对象</div>
</dd>
<dt><a href="../com/playerblocklife/PlayerBlockLife.html#getConfigManager()" class="member-name-link">getConfigManager()</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/PlayerBlockLife.html" title="com.playerblocklife中的类">PlayerBlockLife</a></dt>
<dd>&nbsp;</dd>
<dt><a href="../com/playerblocklife/MessageManager.html#getConsoleMessage(java.lang.String,java.lang.String)" class="member-name-link">getConsoleMessage(String, String)</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/MessageManager.html" title="com.playerblocklife中的类">MessageManager</a></dt>
<dd>
<div class="block">获取控制台消息</div>
</dd>
<dt><a href="../com/playerblocklife/SkinManager.html#getCustomModelData(java.util.UUID)" class="member-name-link">getCustomModelData(UUID)</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/SkinManager.html" title="com.playerblocklife中的类">SkinManager</a></dt>
<dd>&nbsp;</dd>
<dt><a href="../com/playerblocklife/ConfigManager.html#getDepth()" class="member-name-link">getDepth()</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/ConfigManager.html" title="com.playerblocklife中的类">ConfigManager</a></dt>
<dd>&nbsp;</dd>
<dt><a href="../com/playerblocklife/ConfigManager.html#getExpRewardAmount()" class="member-name-link">getExpRewardAmount()</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/ConfigManager.html" title="com.playerblocklife中的类">ConfigManager</a></dt>
<dd>&nbsp;</dd>
<dt><a href="../com/playerblocklife/ConfigManager.html#getExternalMessageFileName()" class="member-name-link">getExternalMessageFileName()</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/ConfigManager.html" title="com.playerblocklife中的类">ConfigManager</a></dt>
<dd>&nbsp;</dd>
<dt><a href="../com/playerblocklife/MessageManager.html#getFormattedMessage(java.lang.String,java.lang.String,java.util.Map)" class="member-name-link">getFormattedMessage(String, String, Map&lt;String, String&gt;)</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/MessageManager.html" title="com.playerblocklife中的类">MessageManager</a></dt>
<dd>
<div class="block">获取格式化消息(替换变量)</div>
</dd>
<dt><a href="../com/playerblocklife/MessageManager.html#getGameMessage(java.lang.String,java.lang.String)" class="member-name-link">getGameMessage(String, String)</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/MessageManager.html" title="com.playerblocklife中的类">MessageManager</a></dt>
<dd>
<div class="block">获取游戏内消息</div>
</dd>
<dt><a href="../com/playerblocklife/PlayerBlockLife.html#getInstance()" class="member-name-link">getInstance()</a> - 类中的静态方法 com.playerblocklife.<a href="../com/playerblocklife/PlayerBlockLife.html" title="com.playerblocklife中的类">PlayerBlockLife</a></dt>
<dd>
<div class="block">获取插件单例实例</div>
</dd>
<dt><a href="../com/playerblocklife/PlayerBlockLife.html#getLifeSystem()" class="member-name-link">getLifeSystem()</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/PlayerBlockLife.html" title="com.playerblocklife中的类">PlayerBlockLife</a></dt>
<dd>&nbsp;</dd>
<dt><a href="../com/playerblocklife/ConfigManager.html#getMaxAttempts()" class="member-name-link">getMaxAttempts()</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/ConfigManager.html" title="com.playerblocklife中的类">ConfigManager</a></dt>
<dd>&nbsp;</dd>
<dt><a href="../com/playerblocklife/ConfigManager.html#getMessage(java.lang.String,java.lang.String)" class="member-name-link">getMessage(String, String)</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/ConfigManager.html" title="com.playerblocklife中的类">ConfigManager</a></dt>
<dd>&nbsp;</dd>
<dt><a href="../com/playerblocklife/MessageManager.html#getMessage(java.lang.String,java.lang.String)" class="member-name-link">getMessage(String, String)</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/MessageManager.html" title="com.playerblocklife中的类">MessageManager</a></dt>
<dd>
<div class="block">获取消息</div>
</dd>
<dt><a href="../com/playerblocklife/MessageManager.html#getMessageFilePath()" class="member-name-link">getMessageFilePath()</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/MessageManager.html" title="com.playerblocklife中的类">MessageManager</a></dt>
<dd>
<div class="block">获取消息文件路径</div>
</dd>
<dt><a href="../com/playerblocklife/PlayerBlockLife.html#getMessageManager()" class="member-name-link">getMessageManager()</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/PlayerBlockLife.html" title="com.playerblocklife中的类">PlayerBlockLife</a></dt>
<dd>&nbsp;</dd>
<dt><a href="../com/playerblocklife/ConfigManager.html#getMinDistance()" class="member-name-link">getMinDistance()</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/ConfigManager.html" title="com.playerblocklife中的类">ConfigManager</a></dt>
<dd>&nbsp;</dd>
<dt><a href="../com/playerblocklife/PlayerBlockManager.html#getNearestBlock(org.bukkit.entity.Player)" class="member-name-link">getNearestBlock(Player)</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/PlayerBlockManager.html" title="com.playerblocklife中的类">PlayerBlockManager</a></dt>
<dd>
<div class="block">获取距离玩家最近的方块</div>
</dd>
<dt><a href="../com/playerblocklife/ConfigManager.html#getOnFailureAction()" class="member-name-link">getOnFailureAction()</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/ConfigManager.html" title="com.playerblocklife中的类">ConfigManager</a></dt>
<dd>&nbsp;</dd>
<dt><a href="../com/playerblocklife/PlayerBlockManager.html#getPlayerBlockLocations(java.util.UUID)" class="member-name-link">getPlayerBlockLocations(UUID)</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/PlayerBlockManager.html" title="com.playerblocklife中的类">PlayerBlockManager</a></dt>
<dd>
<div class="block">获取玩家的生命方块位置列表(用于显示)</div>
</dd>
<dt><a href="../com/playerblocklife/PlayerBlockManager.html#getPlayerBlocks(java.util.UUID)" class="member-name-link">getPlayerBlocks(UUID)</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/PlayerBlockManager.html" title="com.playerblocklife中的类">PlayerBlockManager</a></dt>
<dd>
<div class="block">获取玩家的所有生命方块位置</div>
</dd>
<dt><a href="../com/playerblocklife/PlayerBlockManager.html#getPlayerBlocksCount()" class="member-name-link">getPlayerBlocksCount()</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/PlayerBlockManager.html" title="com.playerblocklife中的类">PlayerBlockManager</a></dt>
<dd>
<div class="block">获取已注册玩家的数量</div>
</dd>
<dt><a href="../com/playerblocklife/LifeSystem.html#getPlayerHealth(java.util.UUID)" class="member-name-link">getPlayerHealth(UUID)</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/LifeSystem.html" title="com.playerblocklife中的类">LifeSystem</a></dt>
<dd>&nbsp;</dd>
<dt><a href="../com/playerblocklife/PlayerBlockManager.html#getRemainingBlocks(java.util.UUID)" class="member-name-link">getRemainingBlocks(UUID)</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/PlayerBlockManager.html" title="com.playerblocklife中的类">PlayerBlockManager</a></dt>
<dd>
<div class="block">获取玩家剩余方块数量</div>
</dd>
<dt><a href="../com/playerblocklife/PlayerBlockLife.html#getSkinManager()" class="member-name-link">getSkinManager()</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/PlayerBlockLife.html" title="com.playerblocklife中的类">PlayerBlockLife</a></dt>
<dd>&nbsp;</dd>
<dt><a href="../com/playerblocklife/ConfigManager.html#getSkinSource()" class="member-name-link">getSkinSource()</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/ConfigManager.html" title="com.playerblocklife中的类">ConfigManager</a></dt>
<dd>
<div class="block">获取皮肤来源配置</div>
</dd>
<dt><a href="../com/playerblocklife/ConfigManager.html#getSpreadRange()" class="member-name-link">getSpreadRange()</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/ConfigManager.html" title="com.playerblocklife中的类">ConfigManager</a></dt>
<dd>&nbsp;</dd>
<dt><a href="../com/playerblocklife/PlayerBlockManager.html#getStats()" class="member-name-link">getStats()</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/PlayerBlockManager.html" title="com.playerblocklife中的类">PlayerBlockManager</a></dt>
<dd>
<div class="block">获取所有生命方块的统计信息</div>
</dd>
<dt><a href="../com/playerblocklife/ConfigManager.html#getStorageType()" class="member-name-link">getStorageType()</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/ConfigManager.html" title="com.playerblocklife中的类">ConfigManager</a></dt>
<dd>&nbsp;</dd>
<dt><a href="../com/playerblocklife/PlayerBlockManager.html#getTotalBlocksCount()" class="member-name-link">getTotalBlocksCount()</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/PlayerBlockManager.html" title="com.playerblocklife中的类">PlayerBlockManager</a></dt>
<dd>
<div class="block">获取总方块数量</div>
</dd>
</dl>
<a href="index-1.html">A</a>&nbsp;<a href="index-2.html">B</a>&nbsp;<a href="index-3.html">C</a>&nbsp;<a href="index-4.html">G</a>&nbsp;<a href="index-5.html">H</a>&nbsp;<a href="index-6.html">I</a>&nbsp;<a href="index-7.html">L</a>&nbsp;<a href="index-8.html">M</a>&nbsp;<a href="index-9.html">O</a>&nbsp;<a href="index-10.html">P</a>&nbsp;<a href="index-11.html">R</a>&nbsp;<a href="index-12.html">S</a>&nbsp;<a href="index-13.html">U</a>&nbsp;<br><a href="../allpackages-index.html">所有程序包</a><span class="vertical-separator">|</span><a href="../allclasses-index.html">所有类和接口</a></main>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,71 @@
<!DOCTYPE HTML>
<html lang="zh">
<head>
<!-- Generated by javadoc (21) on Sat Feb 14 20:12:07 CST 2026 -->
<title>H - 索引</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-02-14">
<meta name="description" content="index: H">
<meta name="generator" content="javadoc/IndexWriter">
<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">
<script type="text/javascript" src="../script.js"></script>
<script type="text/javascript" src="../script-dir/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../script-dir/jquery-ui.min.js"></script>
</head>
<body class="index-page">
<script type="text/javascript">var pathtoroot = "../";
loadScripts(document, 'script');</script>
<noscript>
<div>您的浏览器已禁用 JavaScript。</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"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="切换导航链接"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="跳过导航链接">跳过导航链接</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="导航">
<li><a href="../com/playerblocklife/package-summary.html">程序包</a></li>
<li></li>
<li>使用</li>
<li><a href="../overview-tree.html"></a></li>
<li class="nav-bar-cell1-rev">索引</li>
<li><a href="../help-doc.html#index">帮助</a></li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list"></div>
<div class="nav-list-search"><a href="../search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="搜索">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<div class="header">
<h1>索引</h1>
</div>
<a href="index-1.html">A</a>&nbsp;<a href="index-2.html">B</a>&nbsp;<a href="index-3.html">C</a>&nbsp;<a href="index-4.html">G</a>&nbsp;<a href="index-5.html">H</a>&nbsp;<a href="index-6.html">I</a>&nbsp;<a href="index-7.html">L</a>&nbsp;<a href="index-8.html">M</a>&nbsp;<a href="index-9.html">O</a>&nbsp;<a href="index-10.html">P</a>&nbsp;<a href="index-11.html">R</a>&nbsp;<a href="index-12.html">S</a>&nbsp;<a href="index-13.html">U</a>&nbsp;<br><a href="../allpackages-index.html">所有程序包</a><span class="vertical-separator">|</span><a href="../allclasses-index.html">所有类和接口</a>
<h2 class="title" id="I:H">H</h2>
<dl class="index">
<dt><a href="../com/playerblocklife/LifeSystem.html#handlePlayerDeath(java.util.UUID)" class="member-name-link">handlePlayerDeath(UUID)</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/LifeSystem.html" title="com.playerblocklife中的类">LifeSystem</a></dt>
<dd>&nbsp;</dd>
<dt><a href="../com/playerblocklife/MessageManager.html#hasExternalMessageFile()" class="member-name-link">hasExternalMessageFile()</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/MessageManager.html" title="com.playerblocklife中的类">MessageManager</a></dt>
<dd>
<div class="block">检查消息文件是否存在</div>
</dd>
<dt><a href="../com/playerblocklife/PlayerBlockManager.html#hasLifeBlocks(java.util.UUID)" class="member-name-link">hasLifeBlocks(UUID)</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/PlayerBlockManager.html" title="com.playerblocklife中的类">PlayerBlockManager</a></dt>
<dd>
<div class="block">检查玩家是否有生命方块</div>
</dd>
</dl>
<a href="index-1.html">A</a>&nbsp;<a href="index-2.html">B</a>&nbsp;<a href="index-3.html">C</a>&nbsp;<a href="index-4.html">G</a>&nbsp;<a href="index-5.html">H</a>&nbsp;<a href="index-6.html">I</a>&nbsp;<a href="index-7.html">L</a>&nbsp;<a href="index-8.html">M</a>&nbsp;<a href="index-9.html">O</a>&nbsp;<a href="index-10.html">P</a>&nbsp;<a href="index-11.html">R</a>&nbsp;<a href="index-12.html">S</a>&nbsp;<a href="index-13.html">U</a>&nbsp;<br><a href="../allpackages-index.html">所有程序包</a><span class="vertical-separator">|</span><a href="../allclasses-index.html">所有类和接口</a></main>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,103 @@
<!DOCTYPE HTML>
<html lang="zh">
<head>
<!-- Generated by javadoc (21) on Sat Feb 14 20:12:07 CST 2026 -->
<title>I - 索引</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-02-14">
<meta name="description" content="index: I">
<meta name="generator" content="javadoc/IndexWriter">
<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">
<script type="text/javascript" src="../script.js"></script>
<script type="text/javascript" src="../script-dir/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../script-dir/jquery-ui.min.js"></script>
</head>
<body class="index-page">
<script type="text/javascript">var pathtoroot = "../";
loadScripts(document, 'script');</script>
<noscript>
<div>您的浏览器已禁用 JavaScript。</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"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="切换导航链接"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="跳过导航链接">跳过导航链接</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="导航">
<li><a href="../com/playerblocklife/package-summary.html">程序包</a></li>
<li></li>
<li>使用</li>
<li><a href="../overview-tree.html"></a></li>
<li class="nav-bar-cell1-rev">索引</li>
<li><a href="../help-doc.html#index">帮助</a></li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list"></div>
<div class="nav-list-search"><a href="../search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="搜索">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<div class="header">
<h1>索引</h1>
</div>
<a href="index-1.html">A</a>&nbsp;<a href="index-2.html">B</a>&nbsp;<a href="index-3.html">C</a>&nbsp;<a href="index-4.html">G</a>&nbsp;<a href="index-5.html">H</a>&nbsp;<a href="index-6.html">I</a>&nbsp;<a href="index-7.html">L</a>&nbsp;<a href="index-8.html">M</a>&nbsp;<a href="index-9.html">O</a>&nbsp;<a href="index-10.html">P</a>&nbsp;<a href="index-11.html">R</a>&nbsp;<a href="index-12.html">S</a>&nbsp;<a href="index-13.html">U</a>&nbsp;<br><a href="../allpackages-index.html">所有程序包</a><span class="vertical-separator">|</span><a href="../allclasses-index.html">所有类和接口</a>
<h2 class="title" id="I:I">I</h2>
<dl class="index">
<dt><a href="../com/playerblocklife/ConfigManager.html#isAdminOnly(java.lang.String)" class="member-name-link">isAdminOnly(String)</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/ConfigManager.html" title="com.playerblocklife中的类">ConfigManager</a></dt>
<dd>&nbsp;</dd>
<dt><a href="../com/playerblocklife/ConfigManager.html#isAdminUseAllowed(java.lang.String)" class="member-name-link">isAdminUseAllowed(String)</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/ConfigManager.html" title="com.playerblocklife中的类">ConfigManager</a></dt>
<dd>&nbsp;</dd>
<dt><a href="../com/playerblocklife/ConfigManager.html#isAutoGenerationEnabled()" class="member-name-link">isAutoGenerationEnabled()</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/ConfigManager.html" title="com.playerblocklife中的类">ConfigManager</a></dt>
<dd>&nbsp;</dd>
<dt><a href="../com/playerblocklife/ConfigManager.html#isAutoSaveEnabled()" class="member-name-link">isAutoSaveEnabled()</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/ConfigManager.html" title="com.playerblocklife中的类">ConfigManager</a></dt>
<dd>&nbsp;</dd>
<dt><a href="../com/playerblocklife/ConfigManager.html#isBecomeSpectator()" class="member-name-link">isBecomeSpectator()</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/ConfigManager.html" title="com.playerblocklife中的类">ConfigManager</a></dt>
<dd>&nbsp;</dd>
<dt><a href="../com/playerblocklife/ConfigManager.html#isBroadcastOnBlockBreak()" class="member-name-link">isBroadcastOnBlockBreak()</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/ConfigManager.html" title="com.playerblocklife中的类">ConfigManager</a></dt>
<dd>&nbsp;</dd>
<dt><a href="../com/playerblocklife/ConfigManager.html#isBroadcastOnPlayerDeath()" class="member-name-link">isBroadcastOnPlayerDeath()</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/ConfigManager.html" title="com.playerblocklife中的类">ConfigManager</a></dt>
<dd>&nbsp;</dd>
<dt><a href="../com/playerblocklife/ConfigManager.html#isCommandEnabled(java.lang.String)" class="member-name-link">isCommandEnabled(String)</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/ConfigManager.html" title="com.playerblocklife中的类">ConfigManager</a></dt>
<dd>&nbsp;</dd>
<dt><a href="../com/playerblocklife/ConfigManager.html#isDieWhenBlocksGone()" class="member-name-link">isDieWhenBlocksGone()</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/ConfigManager.html" title="com.playerblocklife中的类">ConfigManager</a></dt>
<dd>&nbsp;</dd>
<dt><a href="../com/playerblocklife/ConfigManager.html#isGiveExpReward()" class="member-name-link">isGiveExpReward()</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/ConfigManager.html" title="com.playerblocklife中的类">ConfigManager</a></dt>
<dd>&nbsp;</dd>
<dt><a href="../com/playerblocklife/ConfigManager.html#isHealthSystemEnabled()" class="member-name-link">isHealthSystemEnabled()</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/ConfigManager.html" title="com.playerblocklife中的类">ConfigManager</a></dt>
<dd>&nbsp;</dd>
<dt><a href="../com/playerblocklife/PlayerBlockManager.html#isLifeBlock(org.bukkit.Location)" class="member-name-link">isLifeBlock(Location)</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/PlayerBlockManager.html" title="com.playerblocklife中的类">PlayerBlockManager</a></dt>
<dd>
<div class="block">检查位置是否包含生命方块</div>
</dd>
<dt><a href="../com/playerblocklife/LifeSystem.html#isPlayerAlive(java.util.UUID)" class="member-name-link">isPlayerAlive(UUID)</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/LifeSystem.html" title="com.playerblocklife中的类">LifeSystem</a></dt>
<dd>&nbsp;</dd>
<dt><a href="../com/playerblocklife/ConfigManager.html#isProtectFromExplosions()" class="member-name-link">isProtectFromExplosions()</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/ConfigManager.html" title="com.playerblocklife中的类">ConfigManager</a></dt>
<dd>&nbsp;</dd>
<dt><a href="../com/playerblocklife/ConfigManager.html#isProtectFromFire()" class="member-name-link">isProtectFromFire()</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/ConfigManager.html" title="com.playerblocklife中的类">ConfigManager</a></dt>
<dd>&nbsp;</dd>
<dt><a href="../com/playerblocklife/ConfigManager.html#isProtectFromPistons()" class="member-name-link">isProtectFromPistons()</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/ConfigManager.html" title="com.playerblocklife中的类">ConfigManager</a></dt>
<dd>&nbsp;</dd>
<dt><a href="../com/playerblocklife/ConfigManager.html#isRequireOpenSky()" class="member-name-link">isRequireOpenSky()</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/ConfigManager.html" title="com.playerblocklife中的类">ConfigManager</a></dt>
<dd>&nbsp;</dd>
<dt><a href="../com/playerblocklife/ConfigManager.html#isSelfUseAllowed(java.lang.String)" class="member-name-link">isSelfUseAllowed(String)</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/ConfigManager.html" title="com.playerblocklife中的类">ConfigManager</a></dt>
<dd>&nbsp;</dd>
<dt><a href="../com/playerblocklife/SkinManager.html#isSkinLoaded(java.util.UUID)" class="member-name-link">isSkinLoaded(UUID)</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/SkinManager.html" title="com.playerblocklife中的类">SkinManager</a></dt>
<dd>&nbsp;</dd>
<dt><a href="../com/playerblocklife/ConfigManager.html#isSkinSystemEnabled()" class="member-name-link">isSkinSystemEnabled()</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/ConfigManager.html" title="com.playerblocklife中的类">ConfigManager</a></dt>
<dd>&nbsp;</dd>
</dl>
<a href="index-1.html">A</a>&nbsp;<a href="index-2.html">B</a>&nbsp;<a href="index-3.html">C</a>&nbsp;<a href="index-4.html">G</a>&nbsp;<a href="index-5.html">H</a>&nbsp;<a href="index-6.html">I</a>&nbsp;<a href="index-7.html">L</a>&nbsp;<a href="index-8.html">M</a>&nbsp;<a href="index-9.html">O</a>&nbsp;<a href="index-10.html">P</a>&nbsp;<a href="index-11.html">R</a>&nbsp;<a href="index-12.html">S</a>&nbsp;<a href="index-13.html">U</a>&nbsp;<br><a href="../allpackages-index.html">所有程序包</a><span class="vertical-separator">|</span><a href="../allclasses-index.html">所有类和接口</a></main>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,89 @@
<!DOCTYPE HTML>
<html lang="zh">
<head>
<!-- Generated by javadoc (21) on Sat Feb 14 20:12:07 CST 2026 -->
<title>L - 索引</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-02-14">
<meta name="description" content="index: L">
<meta name="generator" content="javadoc/IndexWriter">
<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">
<script type="text/javascript" src="../script.js"></script>
<script type="text/javascript" src="../script-dir/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../script-dir/jquery-ui.min.js"></script>
</head>
<body class="index-page">
<script type="text/javascript">var pathtoroot = "../";
loadScripts(document, 'script');</script>
<noscript>
<div>您的浏览器已禁用 JavaScript。</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"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="切换导航链接"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="跳过导航链接">跳过导航链接</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="导航">
<li><a href="../com/playerblocklife/package-summary.html">程序包</a></li>
<li></li>
<li>使用</li>
<li><a href="../overview-tree.html"></a></li>
<li class="nav-bar-cell1-rev">索引</li>
<li><a href="../help-doc.html#index">帮助</a></li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list"></div>
<div class="nav-list-search"><a href="../search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="搜索">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<div class="header">
<h1>索引</h1>
</div>
<a href="index-1.html">A</a>&nbsp;<a href="index-2.html">B</a>&nbsp;<a href="index-3.html">C</a>&nbsp;<a href="index-4.html">G</a>&nbsp;<a href="index-5.html">H</a>&nbsp;<a href="index-6.html">I</a>&nbsp;<a href="index-7.html">L</a>&nbsp;<a href="index-8.html">M</a>&nbsp;<a href="index-9.html">O</a>&nbsp;<a href="index-10.html">P</a>&nbsp;<a href="index-11.html">R</a>&nbsp;<a href="index-12.html">S</a>&nbsp;<a href="index-13.html">U</a>&nbsp;<br><a href="../allpackages-index.html">所有程序包</a><span class="vertical-separator">|</span><a href="../allclasses-index.html">所有类和接口</a>
<h2 class="title" id="I:L">L</h2>
<dl class="index">
<dt><a href="../com/playerblocklife/LifeSystem.html" class="type-name-link" title="com.playerblocklife中的类">LifeSystem</a> - <a href="../com/playerblocklife/package-summary.html">com.playerblocklife</a>中的类</dt>
<dd>
<div class="block">生命值系统 - 负责管理玩家生命值和状态效果</div>
</dd>
<dt><a href="../com/playerblocklife/LifeSystem.html#%3Cinit%3E(com.playerblocklife.PlayerBlockLife)" class="member-name-link">LifeSystem(PlayerBlockLife)</a> - 类的构造器 com.playerblocklife.<a href="../com/playerblocklife/LifeSystem.html" title="com.playerblocklife中的类">LifeSystem</a></dt>
<dd>&nbsp;</dd>
<dt><a href="../com/playerblocklife/SkinManager.html#loadAllSkins()" class="member-name-link">loadAllSkins()</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/SkinManager.html" title="com.playerblocklife中的类">SkinManager</a></dt>
<dd>&nbsp;</dd>
<dt><a href="../com/playerblocklife/ConfigManager.html#loadConfig()" class="member-name-link">loadConfig()</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/ConfigManager.html" title="com.playerblocklife中的类">ConfigManager</a></dt>
<dd>
<div class="block">加载插件配置</div>
</dd>
<dt><a href="../com/playerblocklife/PlayerBlockManager.html#loadData()" class="member-name-link">loadData()</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/PlayerBlockManager.html" title="com.playerblocklife中的类">PlayerBlockManager</a></dt>
<dd>
<div class="block">加载数据</div>
</dd>
<dt><a href="../com/playerblocklife/MessageManager.html#loadMessages()" class="member-name-link">loadMessages()</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/MessageManager.html" title="com.playerblocklife中的类">MessageManager</a></dt>
<dd>
<div class="block">加载消息配置</div>
</dd>
<dt><a href="../com/playerblocklife/SkinManager.html#loadPlayerSkinAsync(org.bukkit.entity.Player)" class="member-name-link">loadPlayerSkinAsync(Player)</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/SkinManager.html" title="com.playerblocklife中的类">SkinManager</a></dt>
<dd>&nbsp;</dd>
<dt><a href="../com/playerblocklife/PlayerBlockLife.html#logError(java.lang.String,java.lang.Throwable)" class="member-name-link">logError(String, Throwable)</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/PlayerBlockLife.html" title="com.playerblocklife中的类">PlayerBlockLife</a></dt>
<dd>&nbsp;</dd>
<dt><a href="../com/playerblocklife/PlayerBlockLife.html#logInfo(java.lang.String)" class="member-name-link">logInfo(String)</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/PlayerBlockLife.html" title="com.playerblocklife中的类">PlayerBlockLife</a></dt>
<dd>&nbsp;</dd>
<dt><a href="../com/playerblocklife/PlayerBlockLife.html#logWarning(java.lang.String)" class="member-name-link">logWarning(String)</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/PlayerBlockLife.html" title="com.playerblocklife中的类">PlayerBlockLife</a></dt>
<dd>&nbsp;</dd>
</dl>
<a href="index-1.html">A</a>&nbsp;<a href="index-2.html">B</a>&nbsp;<a href="index-3.html">C</a>&nbsp;<a href="index-4.html">G</a>&nbsp;<a href="index-5.html">H</a>&nbsp;<a href="index-6.html">I</a>&nbsp;<a href="index-7.html">L</a>&nbsp;<a href="index-8.html">M</a>&nbsp;<a href="index-9.html">O</a>&nbsp;<a href="index-10.html">P</a>&nbsp;<a href="index-11.html">R</a>&nbsp;<a href="index-12.html">S</a>&nbsp;<a href="index-13.html">U</a>&nbsp;<br><a href="../allpackages-index.html">所有程序包</a><span class="vertical-separator">|</span><a href="../allclasses-index.html">所有类和接口</a></main>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,65 @@
<!DOCTYPE HTML>
<html lang="zh">
<head>
<!-- Generated by javadoc (21) on Sat Feb 14 20:12:07 CST 2026 -->
<title>M - 索引</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-02-14">
<meta name="description" content="index: M">
<meta name="generator" content="javadoc/IndexWriter">
<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">
<script type="text/javascript" src="../script.js"></script>
<script type="text/javascript" src="../script-dir/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../script-dir/jquery-ui.min.js"></script>
</head>
<body class="index-page">
<script type="text/javascript">var pathtoroot = "../";
loadScripts(document, 'script');</script>
<noscript>
<div>您的浏览器已禁用 JavaScript。</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"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="切换导航链接"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="跳过导航链接">跳过导航链接</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="导航">
<li><a href="../com/playerblocklife/package-summary.html">程序包</a></li>
<li></li>
<li>使用</li>
<li><a href="../overview-tree.html"></a></li>
<li class="nav-bar-cell1-rev">索引</li>
<li><a href="../help-doc.html#index">帮助</a></li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list"></div>
<div class="nav-list-search"><a href="../search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="搜索">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<div class="header">
<h1>索引</h1>
</div>
<a href="index-1.html">A</a>&nbsp;<a href="index-2.html">B</a>&nbsp;<a href="index-3.html">C</a>&nbsp;<a href="index-4.html">G</a>&nbsp;<a href="index-5.html">H</a>&nbsp;<a href="index-6.html">I</a>&nbsp;<a href="index-7.html">L</a>&nbsp;<a href="index-8.html">M</a>&nbsp;<a href="index-9.html">O</a>&nbsp;<a href="index-10.html">P</a>&nbsp;<a href="index-11.html">R</a>&nbsp;<a href="index-12.html">S</a>&nbsp;<a href="index-13.html">U</a>&nbsp;<br><a href="../allpackages-index.html">所有程序包</a><span class="vertical-separator">|</span><a href="../allclasses-index.html">所有类和接口</a>
<h2 class="title" id="I:M">M</h2>
<dl class="index">
<dt><a href="../com/playerblocklife/MessageManager.html" class="type-name-link" title="com.playerblocklife中的类">MessageManager</a> - <a href="../com/playerblocklife/package-summary.html">com.playerblocklife</a>中的类</dt>
<dd>&nbsp;</dd>
<dt><a href="../com/playerblocklife/MessageManager.html#%3Cinit%3E(com.playerblocklife.PlayerBlockLife)" class="member-name-link">MessageManager(PlayerBlockLife)</a> - 类的构造器 com.playerblocklife.<a href="../com/playerblocklife/MessageManager.html" title="com.playerblocklife中的类">MessageManager</a></dt>
<dd>&nbsp;</dd>
</dl>
<a href="index-1.html">A</a>&nbsp;<a href="index-2.html">B</a>&nbsp;<a href="index-3.html">C</a>&nbsp;<a href="index-4.html">G</a>&nbsp;<a href="index-5.html">H</a>&nbsp;<a href="index-6.html">I</a>&nbsp;<a href="index-7.html">L</a>&nbsp;<a href="index-8.html">M</a>&nbsp;<a href="index-9.html">O</a>&nbsp;<a href="index-10.html">P</a>&nbsp;<a href="index-11.html">R</a>&nbsp;<a href="index-12.html">S</a>&nbsp;<a href="index-13.html">U</a>&nbsp;<br><a href="../allpackages-index.html">所有程序包</a><span class="vertical-separator">|</span><a href="../allclasses-index.html">所有类和接口</a></main>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,85 @@
<!DOCTYPE HTML>
<html lang="zh">
<head>
<!-- Generated by javadoc (21) on Sat Feb 14 20:12:07 CST 2026 -->
<title>O - 索引</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-02-14">
<meta name="description" content="index: O">
<meta name="generator" content="javadoc/IndexWriter">
<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">
<script type="text/javascript" src="../script.js"></script>
<script type="text/javascript" src="../script-dir/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="../script-dir/jquery-ui.min.js"></script>
</head>
<body class="index-page">
<script type="text/javascript">var pathtoroot = "../";
loadScripts(document, 'script');</script>
<noscript>
<div>您的浏览器已禁用 JavaScript。</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"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="切换导航链接"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="跳过导航链接">跳过导航链接</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="导航">
<li><a href="../com/playerblocklife/package-summary.html">程序包</a></li>
<li></li>
<li>使用</li>
<li><a href="../overview-tree.html"></a></li>
<li class="nav-bar-cell1-rev">索引</li>
<li><a href="../help-doc.html#index">帮助</a></li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list"></div>
<div class="nav-list-search"><a href="../search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="搜索">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<div class="header">
<h1>索引</h1>
</div>
<a href="index-1.html">A</a>&nbsp;<a href="index-2.html">B</a>&nbsp;<a href="index-3.html">C</a>&nbsp;<a href="index-4.html">G</a>&nbsp;<a href="index-5.html">H</a>&nbsp;<a href="index-6.html">I</a>&nbsp;<a href="index-7.html">L</a>&nbsp;<a href="index-8.html">M</a>&nbsp;<a href="index-9.html">O</a>&nbsp;<a href="index-10.html">P</a>&nbsp;<a href="index-11.html">R</a>&nbsp;<a href="index-12.html">S</a>&nbsp;<a href="index-13.html">U</a>&nbsp;<br><a href="../allpackages-index.html">所有程序包</a><span class="vertical-separator">|</span><a href="../allclasses-index.html">所有类和接口</a>
<h2 class="title" id="I:O">O</h2>
<dl class="index">
<dt><a href="../com/playerblocklife/BlockBreakListener.html#onBlockBreak(org.bukkit.event.block.BlockBreakEvent)" class="member-name-link">onBlockBreak(BlockBreakEvent)</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/BlockBreakListener.html" title="com.playerblocklife中的类">BlockBreakListener</a></dt>
<dd>&nbsp;</dd>
<dt><a href="../com/playerblocklife/BlockBreakListener.html#onBlockPlace(org.bukkit.event.block.BlockPlaceEvent)" class="member-name-link">onBlockPlace(BlockPlaceEvent)</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/BlockBreakListener.html" title="com.playerblocklife中的类">BlockBreakListener</a></dt>
<dd>&nbsp;</dd>
<dt><a href="../com/playerblocklife/AdminCommands.html#onCommand(org.bukkit.command.CommandSender,org.bukkit.command.Command,java.lang.String,java.lang.String%5B%5D)" class="member-name-link">onCommand(CommandSender, Command, String, String[])</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/AdminCommands.html" title="com.playerblocklife中的类">AdminCommands</a></dt>
<dd>&nbsp;</dd>
<dt><a href="../com/playerblocklife/CheckLifeBlocksCommand.html#onCommand(org.bukkit.command.CommandSender,org.bukkit.command.Command,java.lang.String,java.lang.String%5B%5D)" class="member-name-link">onCommand(CommandSender, Command, String, String[])</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/CheckLifeBlocksCommand.html" title="com.playerblocklife中的类">CheckLifeBlocksCommand</a></dt>
<dd>&nbsp;</dd>
<dt><a href="../com/playerblocklife/SetLifeBlocksCommand.html#onCommand(org.bukkit.command.CommandSender,org.bukkit.command.Command,java.lang.String,java.lang.String%5B%5D)" class="member-name-link">onCommand(CommandSender, Command, String, String[])</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/SetLifeBlocksCommand.html" title="com.playerblocklife中的类">SetLifeBlocksCommand</a></dt>
<dd>&nbsp;</dd>
<dt><a href="../com/playerblocklife/PlayerBlockLife.html#onDisable()" class="member-name-link">onDisable()</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/PlayerBlockLife.html" title="com.playerblocklife中的类">PlayerBlockLife</a></dt>
<dd>
<div class="block">插件禁用时调用,执行清理操作</div>
</dd>
<dt><a href="../com/playerblocklife/PlayerBlockLife.html#onEnable()" class="member-name-link">onEnable()</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/PlayerBlockLife.html" title="com.playerblocklife中的类">PlayerBlockLife</a></dt>
<dd>
<div class="block">插件启用时调用,执行初始化操作</div>
</dd>
<dt><a href="../com/playerblocklife/PlayerJoinListener.html#onPlayerJoin(org.bukkit.event.player.PlayerJoinEvent)" class="member-name-link">onPlayerJoin(PlayerJoinEvent)</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/PlayerJoinListener.html" title="com.playerblocklife中的类">PlayerJoinListener</a></dt>
<dd>&nbsp;</dd>
<dt><a href="../com/playerblocklife/PlayerQuitListener.html#onPlayerQuit(org.bukkit.event.player.PlayerQuitEvent)" class="member-name-link">onPlayerQuit(PlayerQuitEvent)</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/PlayerQuitListener.html" title="com.playerblocklife中的类">PlayerQuitListener</a></dt>
<dd>&nbsp;</dd>
<dt><a href="../com/playerblocklife/PlayerJoinListener.html#onPlayerRespawn(org.bukkit.event.player.PlayerRespawnEvent)" class="member-name-link">onPlayerRespawn(PlayerRespawnEvent)</a> - 类中的方法 com.playerblocklife.<a href="../com/playerblocklife/PlayerJoinListener.html" title="com.playerblocklife中的类">PlayerJoinListener</a></dt>
<dd>&nbsp;</dd>
</dl>
<a href="index-1.html">A</a>&nbsp;<a href="index-2.html">B</a>&nbsp;<a href="index-3.html">C</a>&nbsp;<a href="index-4.html">G</a>&nbsp;<a href="index-5.html">H</a>&nbsp;<a href="index-6.html">I</a>&nbsp;<a href="index-7.html">L</a>&nbsp;<a href="index-8.html">M</a>&nbsp;<a href="index-9.html">O</a>&nbsp;<a href="index-10.html">P</a>&nbsp;<a href="index-11.html">R</a>&nbsp;<a href="index-12.html">S</a>&nbsp;<a href="index-13.html">U</a>&nbsp;<br><a href="../allpackages-index.html">所有程序包</a><span class="vertical-separator">|</span><a href="../allclasses-index.html">所有类和接口</a></main>
</div>
</div>
</body>
</html>

26
javadoc/index.html Normal file
View File

@@ -0,0 +1,26 @@
<!DOCTYPE HTML>
<html lang="zh">
<head>
<!-- Generated by javadoc (21) on Sat Feb 14 20:12:07 CST 2026 -->
<title>生成的文档 (无标题)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-02-14">
<meta name="description" content="index redirect">
<meta name="generator" content="javadoc/IndexRedirectWriter">
<link rel="canonical" href="com/playerblocklife/package-summary.html">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script type="text/javascript">window.location.replace('com/playerblocklife/package-summary.html')</script>
<noscript>
<meta http-equiv="Refresh" content="0;com/playerblocklife/package-summary.html">
</noscript>
</head>
<body class="index-redirect-page">
<main role="main">
<noscript>
<p>您的浏览器已禁用 JavaScript。</p>
</noscript>
<p><a href="com/playerblocklife/package-summary.html">com/playerblocklife/package-summary.html</a></p>
</main>
</body>
</html>

View File

@@ -0,0 +1 @@
Please see ..\java.base\ADDITIONAL_LICENSE_INFO

View File

@@ -0,0 +1 @@
Please see ..\java.base\ASSEMBLY_EXCEPTION

1
javadoc/legal/LICENSE Normal file
View File

@@ -0,0 +1 @@
Please see ..\java.base\LICENSE

26
javadoc/legal/jquery.md Normal file
View File

@@ -0,0 +1,26 @@
## jQuery v3.7.1
### jQuery License
```
jQuery v 3.7.1
Copyright OpenJS Foundation and other contributors, https://openjsf.org/
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
```

49
javadoc/legal/jqueryUI.md Normal file
View File

@@ -0,0 +1,49 @@
## jQuery UI v1.14.1
### jQuery UI License
```
Copyright OpenJS Foundation and other contributors, https://openjsf.org/
This software consists of voluntary contributions made by many
individuals. For exact contribution history, see the revision history
available at https://github.com/jquery/jquery-ui
The following license applies to all parts of this software except as
documented below:
====
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
====
Copyright and related rights for sample code are waived via CC0. Sample
code is defined as all source code contained within the demos directory.
CC0: http://creativecommons.org/publicdomain/zero/1.0/
====
All files located in the node_modules and external directories are
externally maintained libraries used by this software which have their
own licenses; we recommend you read them, as their terms may differ from
the terms above.
```

31
javadoc/link.svg Normal file
View File

@@ -0,0 +1,31 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (c) 2023, Oracle and/or its affiliates. All rights reserved.
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
This code is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License version 2 only, as
published by the Free Software Foundation. Oracle designates this
particular file as subject to the "Classpath" exception as provided
by Oracle in the LICENSE file that accompanied this code.
This code is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
version 2 for more details (a copy is included in the LICENSE file that
accompanied this code).
You should have received a copy of the GNU General Public License version
2 along with this work; if not, write to the Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
or visit www.oracle.com if you need additional information or have any
questions.
-->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256" fill="#505050">
<path d="M32 239.3c18.2 16.7 57.1 15.4 74.5-1.7l30.9-32c8.3-8.8 4.8-15.1.7-19.9-4.7-3-12-8.1-20.4.5l-29.4 29.6a29.4 29.4 0 0 1-39.4.9l-8-7c-8.8-9.4-11-28.3-.8-38.8l49.8-51.3c7.2-6.6 21.3-10 36.1-2.4 6.9 5.4 15.6 15.7 26 6.2 9.9-11.2 2.9-20.4-10-29.3-18.7-12.6-52-14.8-70.4 3.8L17 154.2c-20 20.2-11.3 58 1.7 71.5a69 69 0 0 0 13.2 13.6z"/>
<path d="M223.2 17.5c-18.4-16.6-57.3-15.3-74.6 2l-30.8 31.9c-8.3 9-4.8 15.2-.7 20 4.8 3 12.1 8 20.5-.6 4.8-5 29.3-29.6 29.3-29.6a29.4 29.4 0 0 1 39.4-1l8 6.8c8.8 9.5 11 28.3.9 38.9l-49.6 51.4c-7.2 6.7-21.3 10.1-36.1 2.6-7-5.4-15.7-15.7-26.1-6.2-9.8 11.2-2.8 20.4 10.2 29.3 18.7 12.5 52 14.7 70.3-4l54.4-56.5c20-20.3 11.2-58-1.9-71.5a69 69 0 0 0-13.2-13.5Z"/>
</svg>

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
moduleSearchIndex = [];updateSearchResults();

View File

@@ -0,0 +1,90 @@
<!DOCTYPE HTML>
<html lang="zh">
<head>
<!-- Generated by javadoc (21) on Sat Feb 14 20:12:07 CST 2026 -->
<title>类分层结构</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-02-14">
<meta name="description" content="class tree">
<meta name="generator" content="javadoc/TreeWriter">
<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">
<script type="text/javascript" src="script.js"></script>
<script type="text/javascript" src="script-dir/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="script-dir/jquery-ui.min.js"></script>
</head>
<body class="tree-page">
<script type="text/javascript">var pathtoroot = "./";
loadScripts(document, 'script');</script>
<noscript>
<div>您的浏览器已禁用 JavaScript。</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"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="切换导航链接"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="跳过导航链接">跳过导航链接</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="导航">
<li>程序包</li>
<li></li>
<li>使用</li>
<li class="nav-bar-cell1-rev"></li>
<li><a href="index-files/index-1.html">索引</a></li>
<li><a href="help-doc.html#tree">帮助</a></li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list"></div>
<div class="nav-list-search"><a href="search.html">SEARCH</a>
<input type="text" id="search-input" disabled placeholder="搜索">
<input type="reset" id="reset-button" disabled value="reset">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<div class="header">
<h1 class="title">所有程序包的分层结构</h1>
</div>
<span class="package-hierarchy-label">程序包分层结构:</span>
<ul class="horizontal contents-list">
<li><a href="com/playerblocklife/package-tree.html">com.playerblocklife</a></li>
</ul>
<section class="hierarchy">
<h2 title="类分层结构">类分层结构</h2>
<ul>
<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="java.lang中的类或接口">Object</a>
<ul>
<li class="circle">com.playerblocklife.<a href="com/playerblocklife/AdminCommands.html" class="type-name-link" title="com.playerblocklife中的类">AdminCommands</a> (implements org.bukkit.command.CommandExecutor)</li>
<li class="circle">com.playerblocklife.<a href="com/playerblocklife/BlockBreakListener.html" class="type-name-link" title="com.playerblocklife中的类">BlockBreakListener</a> (implements org.bukkit.event.Listener)</li>
<li class="circle">com.playerblocklife.<a href="com/playerblocklife/CheckLifeBlocksCommand.html" class="type-name-link" title="com.playerblocklife中的类">CheckLifeBlocksCommand</a> (implements org.bukkit.command.CommandExecutor)</li>
<li class="circle">com.playerblocklife.<a href="com/playerblocklife/ConfigManager.html" class="type-name-link" title="com.playerblocklife中的类">ConfigManager</a></li>
<li class="circle">com.playerblocklife.<a href="com/playerblocklife/LifeSystem.html" class="type-name-link" title="com.playerblocklife中的类">LifeSystem</a></li>
<li class="circle">com.playerblocklife.<a href="com/playerblocklife/MessageManager.html" class="type-name-link" title="com.playerblocklife中的类">MessageManager</a></li>
<li class="circle">com.playerblocklife.<a href="com/playerblocklife/PlayerBlockManager.html" class="type-name-link" title="com.playerblocklife中的类">PlayerBlockManager</a></li>
<li class="circle">com.playerblocklife.<a href="com/playerblocklife/PlayerJoinListener.html" class="type-name-link" title="com.playerblocklife中的类">PlayerJoinListener</a> (implements org.bukkit.event.Listener)</li>
<li class="circle">com.playerblocklife.<a href="com/playerblocklife/PlayerQuitListener.html" class="type-name-link" title="com.playerblocklife中的类">PlayerQuitListener</a> (implements org.bukkit.event.Listener)</li>
<li class="circle">org.bukkit.plugin.PluginBase (implements org.bukkit.plugin.Plugin)
<ul>
<li class="circle">org.bukkit.plugin.java.JavaPlugin
<ul>
<li class="circle">com.playerblocklife.<a href="com/playerblocklife/PlayerBlockLife.html" class="type-name-link" title="com.playerblocklife中的类">PlayerBlockLife</a></li>
</ul>
</li>
</ul>
</li>
<li class="circle">com.playerblocklife.<a href="com/playerblocklife/SetLifeBlocksCommand.html" class="type-name-link" title="com.playerblocklife中的类">SetLifeBlocksCommand</a> (implements org.bukkit.command.CommandExecutor)</li>
<li class="circle">com.playerblocklife.<a href="com/playerblocklife/SkinManager.html" class="type-name-link" title="com.playerblocklife中的类">SkinManager</a></li>
</ul>
</li>
</ul>
</section>
</main>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1 @@
packageSearchIndex = [{"l":"com.playerblocklife"},{"l":"所有程序包","u":"allpackages-index.html"}];updateSearchResults();

BIN
javadoc/resources/glass.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 499 B

BIN
javadoc/resources/x.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 394 B

File diff suppressed because one or more lines are too long

6
javadoc/script-dir/jquery-ui.min.css vendored Normal file
View File

@@ -0,0 +1,6 @@
/*! jQuery UI - v1.14.1 - 2025-01-13
* https://jqueryui.com
* Includes: core.css, autocomplete.css, menu.css
* Copyright OpenJS Foundation and other contributors; Licensed MIT */
.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}

6
javadoc/script-dir/jquery-ui.min.js vendored Normal file

File diff suppressed because one or more lines are too long

253
javadoc/script.js Normal file
View File

@@ -0,0 +1,253 @@
/*
* Copyright (c) 2013, 2023, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
var moduleSearchIndex;
var packageSearchIndex;
var typeSearchIndex;
var memberSearchIndex;
var tagSearchIndex;
var oddRowColor = "odd-row-color";
var evenRowColor = "even-row-color";
var sortAsc = "sort-asc";
var sortDesc = "sort-desc";
var tableTab = "table-tab";
var activeTableTab = "active-table-tab";
function loadScripts(doc, tag) {
createElem(doc, tag, 'search.js');
createElem(doc, tag, 'module-search-index.js');
createElem(doc, tag, 'package-search-index.js');
createElem(doc, tag, 'type-search-index.js');
createElem(doc, tag, 'member-search-index.js');
createElem(doc, tag, 'tag-search-index.js');
}
function createElem(doc, tag, path) {
var script = doc.createElement(tag);
var scriptElement = doc.getElementsByTagName(tag)[0];
script.src = pathtoroot + path;
scriptElement.parentNode.insertBefore(script, scriptElement);
}
// Helper for making content containing release names comparable lexicographically
function makeComparable(s) {
return s.toLowerCase().replace(/(\d+)/g,
function(n, m) {
return ("000" + m).slice(-4);
});
}
// Switches between two styles depending on a condition
function toggleStyle(classList, condition, trueStyle, falseStyle) {
if (condition) {
classList.remove(falseStyle);
classList.add(trueStyle);
} else {
classList.remove(trueStyle);
classList.add(falseStyle);
}
}
// Sorts the rows in a table lexicographically by the content of a specific column
function sortTable(header, columnIndex, columns) {
var container = header.parentElement;
var descending = header.classList.contains(sortAsc);
container.querySelectorAll("div.table-header").forEach(
function(header) {
header.classList.remove(sortAsc);
header.classList.remove(sortDesc);
}
)
var cells = container.children;
var rows = [];
for (var i = columns; i < cells.length; i += columns) {
rows.push(Array.prototype.slice.call(cells, i, i + columns));
}
var comparator = function(a, b) {
var ka = makeComparable(a[columnIndex].textContent);
var kb = makeComparable(b[columnIndex].textContent);
if (ka < kb)
return descending ? 1 : -1;
if (ka > kb)
return descending ? -1 : 1;
return 0;
};
var sorted = rows.sort(comparator);
var visible = 0;
sorted.forEach(function(row) {
if (row[0].style.display !== 'none') {
var isEvenRow = visible++ % 2 === 0;
}
row.forEach(function(cell) {
toggleStyle(cell.classList, isEvenRow, evenRowColor, oddRowColor);
container.appendChild(cell);
})
});
toggleStyle(header.classList, descending, sortDesc, sortAsc);
}
// Toggles the visibility of a table category in all tables in a page
function toggleGlobal(checkbox, selected, columns) {
var display = checkbox.checked ? '' : 'none';
document.querySelectorAll("div.table-tabs").forEach(function(t) {
var id = t.parentElement.getAttribute("id");
var selectedClass = id + "-tab" + selected;
// if selected is empty string it selects all uncategorized entries
var selectUncategorized = !Boolean(selected);
var visible = 0;
document.querySelectorAll('div.' + id)
.forEach(function(elem) {
if (selectUncategorized) {
if (elem.className.indexOf(selectedClass) === -1) {
elem.style.display = display;
}
} else if (elem.classList.contains(selectedClass)) {
elem.style.display = display;
}
if (elem.style.display === '') {
var isEvenRow = visible++ % (columns * 2) < columns;
toggleStyle(elem.classList, isEvenRow, evenRowColor, oddRowColor);
}
});
var displaySection = visible === 0 ? 'none' : '';
t.parentElement.style.display = displaySection;
document.querySelector("li#contents-" + id).style.display = displaySection;
})
}
// Shows the elements of a table belonging to a specific category
function show(tableId, selected, columns) {
if (tableId !== selected) {
document.querySelectorAll('div.' + tableId + ':not(.' + selected + ')')
.forEach(function(elem) {
elem.style.display = 'none';
});
}
document.querySelectorAll('div.' + selected)
.forEach(function(elem, index) {
elem.style.display = '';
var isEvenRow = index % (columns * 2) < columns;
toggleStyle(elem.classList, isEvenRow, evenRowColor, oddRowColor);
});
updateTabs(tableId, selected);
}
function updateTabs(tableId, selected) {
document.getElementById(tableId + '.tabpanel')
.setAttribute('aria-labelledby', selected);
document.querySelectorAll('button[id^="' + tableId + '"]')
.forEach(function(tab, index) {
if (selected === tab.id || (tableId === selected && index === 0)) {
tab.className = activeTableTab;
tab.setAttribute('aria-selected', true);
tab.setAttribute('tabindex',0);
} else {
tab.className = tableTab;
tab.setAttribute('aria-selected', false);
tab.setAttribute('tabindex',-1);
}
});
}
function switchTab(e) {
var selected = document.querySelector('[aria-selected=true]');
if (selected) {
if ((e.keyCode === 37 || e.keyCode === 38) && selected.previousSibling) {
// left or up arrow key pressed: move focus to previous tab
selected.previousSibling.click();
selected.previousSibling.focus();
e.preventDefault();
} else if ((e.keyCode === 39 || e.keyCode === 40) && selected.nextSibling) {
// right or down arrow key pressed: move focus to next tab
selected.nextSibling.click();
selected.nextSibling.focus();
e.preventDefault();
}
}
}
var updateSearchResults = function() {};
function indexFilesLoaded() {
return moduleSearchIndex
&& packageSearchIndex
&& typeSearchIndex
&& memberSearchIndex
&& tagSearchIndex;
}
// Copy the contents of the local snippet to the clipboard
function copySnippet(button) {
copyToClipboard(button.nextElementSibling.innerText);
switchCopyLabel(button, button.firstElementChild);
}
function copyToClipboard(content) {
var textarea = document.createElement("textarea");
textarea.style.height = 0;
document.body.appendChild(textarea);
textarea.value = content;
textarea.select();
document.execCommand("copy");
document.body.removeChild(textarea);
}
function switchCopyLabel(button, span) {
var copied = span.getAttribute("data-copied");
button.classList.add("visible");
var initialLabel = span.innerHTML;
span.innerHTML = copied;
setTimeout(function() {
button.classList.remove("visible");
setTimeout(function() {
if (initialLabel !== copied) {
span.innerHTML = initialLabel;
}
}, 100);
}, 1900);
}
// Workaround for scroll position not being included in browser history (8249133)
document.addEventListener("DOMContentLoaded", function(e) {
var contentDiv = document.querySelector("div.flex-content");
window.addEventListener("popstate", function(e) {
if (e.state !== null) {
contentDiv.scrollTop = e.state;
}
});
window.addEventListener("hashchange", function(e) {
history.replaceState(contentDiv.scrollTop, document.title);
});
var timeoutId;
contentDiv.addEventListener("scroll", function(e) {
if (timeoutId) {
clearTimeout(timeoutId);
}
timeoutId = setTimeout(function() {
history.replaceState(contentDiv.scrollTop, document.title);
}, 100);
});
if (!location.hash) {
history.replaceState(contentDiv.scrollTop, document.title);
}
});

284
javadoc/search-page.js Normal file
View File

@@ -0,0 +1,284 @@
/*
* Copyright (c) 2022, 2023, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
"use strict";
$(function() {
var copy = $("#page-search-copy");
var expand = $("#page-search-expand");
var searchLink = $("span#page-search-link");
var redirect = $("input#search-redirect");
function setSearchUrlTemplate() {
var href = document.location.href.split(/[#?]/)[0];
href += "?q=" + "%s";
if (redirect.is(":checked")) {
href += "&r=1";
}
searchLink.html(href);
copy[0].onmouseenter();
}
function copyLink(e) {
copyToClipboard(this.previousSibling.innerText);
switchCopyLabel(this, this.lastElementChild);
}
copy.click(copyLink);
copy[0].onmouseenter = function() {};
redirect.click(setSearchUrlTemplate);
setSearchUrlTemplate();
copy.prop("disabled", false);
redirect.prop("disabled", false);
expand.click(function (e) {
var searchInfo = $("div.page-search-info");
if(this.parentElement.hasAttribute("open")) {
searchInfo.attr("style", "border-width: 0;");
} else {
searchInfo.attr("style", "border-width: 1px;").height(searchInfo.prop("scrollHeight"));
}
});
});
$(window).on("load", function() {
var input = $("#page-search-input");
var reset = $("#page-search-reset");
var notify = $("#page-search-notify");
var resultSection = $("div#result-section");
var resultContainer = $("div#result-container");
var searchTerm = "";
var activeTab = "";
var fixedTab = false;
var visibleTabs = [];
var feelingLucky = false;
function renderResults(result) {
if (!result.length) {
notify.html(messages.noResult);
} else if (result.length === 1) {
notify.html(messages.oneResult);
} else {
notify.html(messages.manyResults.replace("{0}", result.length));
}
resultContainer.empty();
var r = {
"types": [],
"members": [],
"packages": [],
"modules": [],
"searchTags": []
};
for (var i in result) {
var item = result[i];
var arr = r[item.category];
arr.push(item);
}
if (!activeTab || r[activeTab].length === 0 || !fixedTab) {
Object.keys(r).reduce(function(prev, curr) {
if (r[curr].length > 0 && r[curr][0].score > prev) {
activeTab = curr;
return r[curr][0].score;
}
return prev;
}, 0);
}
if (feelingLucky && activeTab) {
notify.html(messages.redirecting)
var firstItem = r[activeTab][0];
window.location = getURL(firstItem.indexItem, firstItem.category);
return;
}
if (result.length > 20) {
if (searchTerm[searchTerm.length - 1] === ".") {
if (activeTab === "types" && r["members"].length > r["types"].length) {
activeTab = "members";
} else if (activeTab === "packages" && r["types"].length > r["packages"].length) {
activeTab = "types";
}
}
}
var categoryCount = Object.keys(r).reduce(function(prev, curr) {
return prev + (r[curr].length > 0 ? 1 : 0);
}, 0);
visibleTabs = [];
var tabContainer = $("<div class='table-tabs'></div>").appendTo(resultContainer);
for (var key in r) {
var id = "#result-tab-" + key.replace("searchTags", "search_tags");
if (r[key].length) {
var count = r[key].length >= 1000 ? "999+" : r[key].length;
if (result.length > 20 && categoryCount > 1) {
var button = $("<button id='result-tab-" + key
+ "' class='page-search-header'><span>" + categories[key] + "</span>"
+ "<span style='font-weight: normal'> (" + count + ")</span></button>").appendTo(tabContainer);
button.click(key, function(e) {
fixedTab = true;
renderResult(e.data, $(this));
});
visibleTabs.push(key);
} else {
$("<span class='page-search-header active-table-tab'>" + categories[key]
+ "<span style='font-weight: normal'> (" + count + ")</span></span>").appendTo(tabContainer);
renderTable(key, r[key]).appendTo(resultContainer);
tabContainer = $("<div class='table-tabs'></div>").appendTo(resultContainer);
}
}
}
if (activeTab && result.length > 20 && categoryCount > 1) {
$("button#result-tab-" + activeTab).addClass("active-table-tab");
renderTable(activeTab, r[activeTab]).appendTo(resultContainer);
}
resultSection.show();
function renderResult(category, button) {
activeTab = category;
setSearchUrl();
resultContainer.find("div.summary-table").remove();
renderTable(activeTab, r[activeTab]).appendTo(resultContainer);
button.siblings().removeClass("active-table-tab");
button.addClass("active-table-tab");
}
}
function selectTab(category) {
$("button#result-tab-" + category).click();
}
function renderTable(category, items) {
var table = $("<div class='summary-table'>")
.addClass(category === "modules"
? "one-column-search-results"
: "two-column-search-results");
var col1, col2;
if (category === "modules") {
col1 = "Module";
} else if (category === "packages") {
col1 = "Module";
col2 = "Package";
} else if (category === "types") {
col1 = "Package";
col2 = "Class"
} else if (category === "members") {
col1 = "Class";
col2 = "Member";
} else if (category === "searchTags") {
col1 = "Location";
col2 = "Name";
}
$("<div class='table-header col-plain'>" + col1 + "</div>").appendTo(table);
if (category !== "modules") {
$("<div class='table-header col-plain'>" + col2 + "</div>").appendTo(table);
}
$.each(items, function(index, item) {
var rowColor = index % 2 ? "odd-row-color" : "even-row-color";
renderItem(item, table, rowColor);
});
return table;
}
function renderItem(item, table, rowColor) {
var label = getHighlightedText(item.input, item.boundaries, item.prefix.length, item.input.length);
var link = $("<a/>")
.attr("href", getURL(item.indexItem, item.category))
.attr("tabindex", "0")
.addClass("search-result-link")
.html(label);
var container = getHighlightedText(item.input, item.boundaries, 0, item.prefix.length - 1);
if (item.category === "searchTags") {
container = item.indexItem.h || "";
}
if (item.category !== "modules") {
$("<div/>").html(container).addClass("col-plain").addClass(rowColor).appendTo(table);
}
$("<div/>").html(link).addClass("col-last").addClass(rowColor).appendTo(table);
}
var timeout;
function schedulePageSearch() {
if (timeout) {
clearTimeout(timeout);
}
timeout = setTimeout(function () {
doPageSearch()
}, 100);
}
function doPageSearch() {
setSearchUrl();
var term = searchTerm = input.val().trim();
if (term === "") {
notify.html(messages.enterTerm);
activeTab = "";
fixedTab = false;
resultContainer.empty();
resultSection.hide();
} else {
notify.html(messages.searching);
doSearch({ term: term, maxResults: 1200 }, renderResults);
}
}
function setSearchUrl() {
var query = input.val().trim();
var url = document.location.pathname;
if (query) {
url += "?q=" + encodeURI(query);
if (activeTab && fixedTab) {
url += "&c=" + activeTab;
}
}
history.replaceState({query: query}, "", url);
}
input.on("input", function(e) {
feelingLucky = false;
schedulePageSearch();
});
$(document).keydown(function(e) {
if ((e.ctrlKey || e.metaKey) && (e.key === "ArrowLeft" || e.key === "ArrowRight")) {
if (activeTab && visibleTabs.length > 1) {
var idx = visibleTabs.indexOf(activeTab);
idx += e.key === "ArrowLeft" ? visibleTabs.length - 1 : 1;
selectTab(visibleTabs[idx % visibleTabs.length]);
return false;
}
}
});
reset.click(function() {
notify.html(messages.enterTerm);
resultSection.hide();
activeTab = "";
fixedTab = false;
resultContainer.empty();
input.val('').focus();
setSearchUrl();
});
input.prop("disabled", false);
reset.prop("disabled", false);
var urlParams = new URLSearchParams(window.location.search);
if (urlParams.has("q")) {
input.val(urlParams.get("q"))
}
if (urlParams.has("c")) {
activeTab = urlParams.get("c");
fixedTab = true;
}
if (urlParams.get("r")) {
feelingLucky = true;
}
if (input.val()) {
doPageSearch();
} else {
notify.html(messages.enterTerm);
}
input.select().focus();
});

72
javadoc/search.html Normal file
View File

@@ -0,0 +1,72 @@
<!DOCTYPE HTML>
<html lang="zh">
<head>
<!-- Generated by javadoc (21) on Sat Feb 14 20:12:07 CST 2026 -->
<title>搜索</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2026-02-14">
<meta name="description" content="search">
<meta name="generator" content="javadoc/SearchWriter">
<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">
<script type="text/javascript" src="script.js"></script>
<script type="text/javascript" src="script-dir/jquery-3.7.1.min.js"></script>
<script type="text/javascript" src="script-dir/jquery-ui.min.js"></script>
</head>
<body class="search-page">
<script type="text/javascript">var pathtoroot = "./";
loadScripts(document, 'script');</script>
<noscript>
<div>您的浏览器已禁用 JavaScript。</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"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="切换导航链接"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
<div class="skip-nav"><a href="#skip-navbar-top" title="跳过导航链接">跳过导航链接</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="导航">
<li><a href="com/playerblocklife/package-summary.html">程序包</a></li>
<li></li>
<li>使用</li>
<li><a href="overview-tree.html"></a></li>
<li><a href="index-files/index-1.html">索引</a></li>
<li><a href="help-doc.html#search">帮助</a></li>
</ul>
</div>
<div class="sub-nav">
<div id="navbar-sub-list"></div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<h1 class="title">搜索</h1>
<div>
<input type="text" id="page-search-input" disabled placeholder="搜索">
<input type="reset" id="page-search-reset" disabled value="重置" style="margin: 6px;">
<details class="page-search-details">
<summary id="page-search-expand">其他资源</summary>
</details>
</div>
<div class="page-search-info">
<p><a href="help-doc.html#search">帮助页</a> 介绍了 JavaDoc 搜索的范围和语法。</p>
<p>您可以使用 &lt;ctrl&gt;&lt;cmd&gt; 键与左箭头和右箭头键组合在此页面中的结果选项卡之间切换。</p>
<p>下面的 URL 模板可用于在支持此功能的浏览器中将此页面配置为搜索引擎。已经对其进行了测试以在 Google Chrome 和 Mozilla Firefox 中使用。请注意,其他浏览器可能不支持此功能或需要不同的 URL 格式。</p>
<span id="page-search-link">link</span><button class="copy" aria-label="复制 URL" id="page-search-copy"><img src="copy.svg" alt="复制 URL"><span data-copied="已复制!">复制</span></button>
<p>
<input type="checkbox" id="search-redirect" disabled>
<label for="search-redirect">重定向到第一个结果</label></p>
</div>
<p id="page-search-notify">正在加载搜索索引...</p>
<div id="result-section" style="display: none;">
<div id="result-container"></div>
<script type="text/javascript" src="search-page.js"></script>
</div>
</main>
</div>
</div>
</body>
</html>

458
javadoc/search.js Normal file
View File

@@ -0,0 +1,458 @@
/*
* Copyright (c) 2015, 2023, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
"use strict";
const messages = {
enterTerm: "输入搜索词",
noResult: "未找到结果",
oneResult: "找到一个结果",
manyResults: "找到 {0} 个结果",
loading: "正在加载搜索索引...",
searching: "正在搜索...",
redirecting: "正在重定向到第一个结果...",
linkIcon: "链接图标",
linkToSection: "链接到此节"
}
const categories = {
modules: "模块",
packages: "程序包",
types: "类和接口",
members: "成员",
searchTags: "搜索标记"
};
const highlight = "<span class='result-highlight'>$&</span>";
const NO_MATCH = {};
const MAX_RESULTS = 300;
function checkUnnamed(name, separator) {
return name === "<Unnamed>" || !name ? "" : name + separator;
}
function escapeHtml(str) {
return str.replace(/</g, "&lt;").replace(/>/g, "&gt;");
}
function getHighlightedText(str, boundaries, from, to) {
var start = from;
var text = "";
for (var i = 0; i < boundaries.length; i += 2) {
var b0 = boundaries[i];
var b1 = boundaries[i + 1];
if (b0 >= to || b1 <= from) {
continue;
}
text += escapeHtml(str.slice(start, Math.max(start, b0)));
text += "<span class='result-highlight'>";
text += escapeHtml(str.slice(Math.max(start, b0), Math.min(to, b1)));
text += "</span>";
start = Math.min(to, b1);
}
text += escapeHtml(str.slice(start, to));
return text;
}
function getURLPrefix(item, category) {
var urlPrefix = "";
var slash = "/";
if (category === "modules") {
return item.l + slash;
} else if (category === "packages" && item.m) {
return item.m + slash;
} else if (category === "types" || category === "members") {
if (item.m) {
urlPrefix = item.m + slash;
} else {
$.each(packageSearchIndex, function(index, it) {
if (it.m && item.p === it.l) {
urlPrefix = it.m + slash;
}
});
}
}
return urlPrefix;
}
function getURL(item, category) {
if (item.url) {
return item.url;
}
var url = getURLPrefix(item, category);
if (category === "modules") {
url += "module-summary.html";
} else if (category === "packages") {
if (item.u) {
url = item.u;
} else {
url += item.l.replace(/\./g, '/') + "/package-summary.html";
}
} else if (category === "types") {
if (item.u) {
url = item.u;
} else {
url += checkUnnamed(item.p, "/").replace(/\./g, '/') + item.l + ".html";
}
} else if (category === "members") {
url += checkUnnamed(item.p, "/").replace(/\./g, '/') + item.c + ".html" + "#";
if (item.u) {
url += item.u;
} else {
url += item.l;
}
} else if (category === "searchTags") {
url += item.u;
}
item.url = url;
return url;
}
function createMatcher(term, camelCase) {
if (camelCase && !isUpperCase(term)) {
return null; // no need for camel-case matcher for lower case query
}
var pattern = "";
var upperCase = [];
term.trim().split(/\s+/).forEach(function(w, index, array) {
var tokens = w.split(/(?=[A-Z,.()<>?[\/])/);
for (var i = 0; i < tokens.length; i++) {
var s = tokens[i];
// ',' and '?' are the only delimiters commonly followed by space in java signatures
pattern += "(" + $.ui.autocomplete.escapeRegex(s).replace(/[,?]/g, "$&\\s*?") + ")";
upperCase.push(false);
var isWordToken = /\w$/.test(s);
if (isWordToken) {
if (i === tokens.length - 1 && index < array.length - 1) {
// space in query string matches all delimiters
pattern += "(.*?)";
upperCase.push(isUpperCase(s[0]));
} else {
if (!camelCase && isUpperCase(s) && s.length === 1) {
pattern += "()";
} else {
pattern += "([a-z0-9$<>?[\\]]*?)";
}
upperCase.push(isUpperCase(s[0]));
}
} else {
pattern += "()";
upperCase.push(false);
}
}
});
var re = new RegExp(pattern, "gi");
re.upperCase = upperCase;
return re;
}
function findMatch(matcher, input, startOfName, endOfName) {
var from = startOfName;
matcher.lastIndex = from;
var match = matcher.exec(input);
// Expand search area until we get a valid result or reach the beginning of the string
while (!match || match.index + match[0].length < startOfName || endOfName < match.index) {
if (from === 0) {
return NO_MATCH;
}
from = input.lastIndexOf(".", from - 2) + 1;
matcher.lastIndex = from;
match = matcher.exec(input);
}
var boundaries = [];
var matchEnd = match.index + match[0].length;
var score = 5;
var start = match.index;
var prevEnd = -1;
for (var i = 1; i < match.length; i += 2) {
var isUpper = isUpperCase(input[start]);
var isMatcherUpper = matcher.upperCase[i];
// capturing groups come in pairs, match and non-match
boundaries.push(start, start + match[i].length);
// make sure groups are anchored on a left word boundary
var prevChar = input[start - 1] || "";
var nextChar = input[start + 1] || "";
if (start !== 0 && !/[\W_]/.test(prevChar) && !/[\W_]/.test(input[start])) {
if (isUpper && (isLowerCase(prevChar) || isLowerCase(nextChar))) {
score -= 0.1;
} else if (isMatcherUpper && start === prevEnd) {
score -= isUpper ? 0.1 : 1.0;
} else {
return NO_MATCH;
}
}
prevEnd = start + match[i].length;
start += match[i].length + match[i + 1].length;
// lower score for parts of the name that are missing
if (match[i + 1] && prevEnd < endOfName) {
score -= rateNoise(match[i + 1]);
}
}
// lower score if a type name contains unmatched camel-case parts
if (input[matchEnd - 1] !== "." && endOfName > matchEnd)
score -= rateNoise(input.slice(matchEnd, endOfName));
score -= rateNoise(input.slice(0, Math.max(startOfName, match.index)));
if (score <= 0) {
return NO_MATCH;
}
return {
input: input,
score: score,
boundaries: boundaries
};
}
function isUpperCase(s) {
return s !== s.toLowerCase();
}
function isLowerCase(s) {
return s !== s.toUpperCase();
}
function rateNoise(str) {
return (str.match(/([.(])/g) || []).length / 5
+ (str.match(/([A-Z]+)/g) || []).length / 10
+ str.length / 20;
}
function doSearch(request, response) {
var term = request.term.trim();
var maxResults = request.maxResults || MAX_RESULTS;
if (term.length === 0) {
return this.close();
}
var matcher = {
plainMatcher: createMatcher(term, false),
camelCaseMatcher: createMatcher(term, true)
}
var indexLoaded = indexFilesLoaded();
function getPrefix(item, category) {
switch (category) {
case "packages":
return checkUnnamed(item.m, "/");
case "types":
return checkUnnamed(item.p, ".");
case "members":
return checkUnnamed(item.p, ".") + item.c + ".";
default:
return "";
}
}
function useQualifiedName(category) {
switch (category) {
case "packages":
return /[\s/]/.test(term);
case "types":
case "members":
return /[\s.]/.test(term);
default:
return false;
}
}
function searchIndex(indexArray, category) {
var matches = [];
if (!indexArray) {
if (!indexLoaded) {
matches.push({ l: messages.loading, category: category });
}
return matches;
}
$.each(indexArray, function (i, item) {
var prefix = getPrefix(item, category);
var simpleName = item.l;
var qualifiedName = prefix + simpleName;
var useQualified = useQualifiedName(category);
var input = useQualified ? qualifiedName : simpleName;
var startOfName = useQualified ? prefix.length : 0;
var endOfName = category === "members" && input.indexOf("(", startOfName) > -1
? input.indexOf("(", startOfName) : input.length;
var m = findMatch(matcher.plainMatcher, input, startOfName, endOfName);
if (m === NO_MATCH && matcher.camelCaseMatcher) {
m = findMatch(matcher.camelCaseMatcher, input, startOfName, endOfName);
}
if (m !== NO_MATCH) {
m.indexItem = item;
m.prefix = prefix;
m.category = category;
if (!useQualified) {
m.input = qualifiedName;
m.boundaries = m.boundaries.map(function(b) {
return b + prefix.length;
});
}
matches.push(m);
}
return true;
});
return matches.sort(function(e1, e2) {
return e2.score - e1.score;
}).slice(0, maxResults);
}
var result = searchIndex(moduleSearchIndex, "modules")
.concat(searchIndex(packageSearchIndex, "packages"))
.concat(searchIndex(typeSearchIndex, "types"))
.concat(searchIndex(memberSearchIndex, "members"))
.concat(searchIndex(tagSearchIndex, "searchTags"));
if (!indexLoaded) {
updateSearchResults = function() {
doSearch(request, response);
}
} else {
updateSearchResults = function() {};
}
response(result);
}
// JQuery search menu implementation
$.widget("custom.catcomplete", $.ui.autocomplete, {
_create: function() {
this._super();
this.widget().menu("option", "items", "> .result-item");
// workaround for search result scrolling
this.menu._scrollIntoView = function _scrollIntoView( item ) {
var borderTop, paddingTop, offset, scroll, elementHeight, itemHeight;
if ( this._hasScroll() ) {
borderTop = parseFloat( $.css( this.activeMenu[ 0 ], "borderTopWidth" ) ) || 0;
paddingTop = parseFloat( $.css( this.activeMenu[ 0 ], "paddingTop" ) ) || 0;
offset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop;
scroll = this.activeMenu.scrollTop();
elementHeight = this.activeMenu.height() - 26;
itemHeight = item.outerHeight();
if ( offset < 0 ) {
this.activeMenu.scrollTop( scroll + offset );
} else if ( offset + itemHeight > elementHeight ) {
this.activeMenu.scrollTop( scroll + offset - elementHeight + itemHeight );
}
}
};
},
_renderMenu: function(ul, items) {
var currentCategory = "";
var widget = this;
widget.menu.bindings = $();
$.each(items, function(index, item) {
if (item.category && item.category !== currentCategory) {
ul.append("<li class='ui-autocomplete-category'>" + categories[item.category] + "</li>");
currentCategory = item.category;
}
var li = widget._renderItemData(ul, item);
if (item.category) {
li.attr("aria-label", categories[item.category] + " : " + item.l);
} else {
li.attr("aria-label", item.l);
}
li.attr("class", "result-item");
});
ul.append("<li class='ui-static-link'><a href='" + pathtoroot + "search.html?q="
+ encodeURI(widget.term) + "'>Go to search page</a></li>");
},
_renderItem: function(ul, item) {
var li = $("<li/>").appendTo(ul);
var div = $("<div/>").appendTo(li);
var label = item.l
? item.l
: getHighlightedText(item.input, item.boundaries, 0, item.input.length);
var idx = item.indexItem;
if (item.category === "searchTags" && idx && idx.h) {
if (idx.d) {
div.html(label + "<span class='search-tag-holder-result'> (" + idx.h + ")</span><br><span class='search-tag-desc-result'>"
+ idx.d + "</span><br>");
} else {
div.html(label + "<span class='search-tag-holder-result'> (" + idx.h + ")</span>");
}
} else {
div.html(label);
}
return li;
}
});
$(function() {
var expanded = false;
var windowWidth;
function collapse() {
if (expanded) {
$("div#navbar-top").removeAttr("style");
$("button#navbar-toggle-button")
.removeClass("expanded")
.attr("aria-expanded", "false");
expanded = false;
}
}
$("button#navbar-toggle-button").click(function (e) {
if (expanded) {
collapse();
} else {
var navbar = $("div#navbar-top");
navbar.height(navbar.prop("scrollHeight"));
$("button#navbar-toggle-button")
.addClass("expanded")
.attr("aria-expanded", "true");
expanded = true;
windowWidth = window.innerWidth;
}
});
$("ul.sub-nav-list-small li a").click(collapse);
$("input#search-input").focus(collapse);
$("main").click(collapse);
$("section[id] > :header, :header[id], :header:has(a[id])").each(function(idx, el) {
// Create anchor links for headers with an associated id attribute
var hdr = $(el);
var id = hdr.attr("id") || hdr.parent("section").attr("id") || hdr.children("a").attr("id");
if (id) {
hdr.append(" <a href='#" + id + "' class='anchor-link' aria-label='" + messages.linkToSection
+ "'><img src='" + pathtoroot + "link.svg' alt='" + messages.linkIcon +"' tabindex='0'"
+ " width='16' height='16'></a>");
}
});
$(window).on("orientationchange", collapse).on("resize", function(e) {
if (expanded && windowWidth !== window.innerWidth) collapse();
});
var search = $("#search-input");
var reset = $("#reset-button");
search.catcomplete({
minLength: 1,
delay: 200,
source: doSearch,
response: function(event, ui) {
if (!ui.content.length) {
ui.content.push({ l: messages.noResult });
} else {
$("#search-input").empty();
}
},
autoFocus: true,
focus: function(event, ui) {
return false;
},
position: {
collision: "flip"
},
select: function(event, ui) {
if (ui.item.indexItem) {
var url = getURL(ui.item.indexItem, ui.item.category);
window.location.href = pathtoroot + url;
$("#search-input").focus();
}
}
});
search.val('');
search.prop("disabled", false);
reset.prop("disabled", false);
reset.click(function() {
search.val('').focus();
});
search.focus();
});

1272
javadoc/stylesheet.css Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1 @@
tagSearchIndex = [];updateSearchResults();

View File

@@ -0,0 +1 @@
typeSearchIndex = [{"p":"com.playerblocklife","l":"AdminCommands"},{"p":"com.playerblocklife","l":"BlockBreakListener"},{"p":"com.playerblocklife","l":"CheckLifeBlocksCommand"},{"p":"com.playerblocklife","l":"ConfigManager"},{"p":"com.playerblocklife","l":"LifeSystem"},{"p":"com.playerblocklife","l":"MessageManager"},{"p":"com.playerblocklife","l":"PlayerBlockLife"},{"p":"com.playerblocklife","l":"PlayerBlockManager"},{"p":"com.playerblocklife","l":"PlayerJoinListener"},{"p":"com.playerblocklife","l":"PlayerQuitListener"},{"p":"com.playerblocklife","l":"SetLifeBlocksCommand"},{"p":"com.playerblocklife","l":"SkinManager"},{"l":"所有类和接口","u":"allclasses-index.html"}];updateSearchResults();

View File

@@ -9,18 +9,58 @@ import java.io.InputStream;
import java.io.InputStreamReader; import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
/**
* 配置管理器 - 负责加载、保存和管理插件的配置文件
*
* <p>主要功能包括:
* <ul>
* <li>加载和验证配置文件</li>
* <li>配置版本检查和自动更新</li>
* <li>提供类型安全的配置项访问方法</li>
* <li>处理配置文件的保存和重载</li>
* <li>管理SkinsRestorer插件集成配置</li>
* <li>支持多种皮肤来源的优先级配置</li>
* </ul>
*
* <p><b>SkinsRestorer配置支持</b>
* <ul>
* <li><code>skin.source</code>皮肤来源优先级skinsrestorer/player_profile/local_cache</li>
* <li><code>skin.use-skinsrestorer</code>是否启用SkinsRestorer支持</li>
* <li><code>skin.cache.expire_days</code>:皮肤缓存过期时间</li>
* <li>默认配置已优化优先使用SkinsRestorer以支持离线服务器</li>
* </ul>
* </p>
*
* @author xiaobai
* @version 2.1.0
* @since 1.0.0
*/
public class ConfigManager { public class ConfigManager {
private final PlayerBlockLife plugin; private final PlayerBlockLife plugin;
private FileConfiguration config; private FileConfiguration config;
private File configFile; private File configFile;
/**
* 构造一个新的配置管理器
*
* @param plugin 插件主类实例,用于访问插件相关功能
*/
public ConfigManager(PlayerBlockLife plugin) { public ConfigManager(PlayerBlockLife plugin) {
this.plugin = plugin; this.plugin = plugin;
this.configFile = new File(plugin.getDataFolder(), "config.yml"); this.configFile = new File(plugin.getDataFolder(), "config.yml");
} }
/** /**
* 加载配置 * 加载插件配置
*
* <p>执行以下操作:
* <ol>
* <li>确保插件数据文件夹存在</li>
* <li>如果配置文件不存在从JAR中复制默认配置</li>
* <li>调用reloadConfig()重新加载配置</li>
* </ol>
*
* @see #reloadConfig()
*/ */
public void loadConfig() { public void loadConfig() {
// 确保配置文件夹存在 // 确保配置文件夹存在
@@ -39,7 +79,16 @@ public class ConfigManager {
} }
/** /**
* 重新加载配置 * 重新加载配置文件
*
* <p>执行以下操作:
* <ol>
* <li>从磁盘重新加载配置文件</li>
* <li>加载JAR中的默认配置作为后备</li>
* <li>检查配置版本并进行必要的更新</li>
* </ol>
*
* @see #checkConfigVersion()
*/ */
public void reloadConfig() { public void reloadConfig() {
// 重新从磁盘加载配置 // 重新从磁盘加载配置
@@ -127,7 +176,12 @@ public class ConfigManager {
} }
/** /**
* 保存配置 * 保存当前配置到文件
*
* <p>将内存中的配置数据写入到config.yml文件中。
* 如果保存失败,会记录错误日志。</p>
*
* @throws IOException 如果文件写入失败
*/ */
public void saveConfig() { public void saveConfig() {
try { try {
@@ -139,6 +193,11 @@ public class ConfigManager {
/** /**
* 获取配置对象 * 获取配置对象
*
* <p>如果配置对象为null会自动调用reloadConfig()加载配置。</p>
*
* @return 当前的FileConfiguration配置对象
* @see #reloadConfig()
*/ */
public FileConfiguration getConfig() { public FileConfiguration getConfig() {
if (config == null) { if (config == null) {
@@ -157,6 +216,10 @@ public class ConfigManager {
return getConfig().getInt("blocks.spread", 5); return getConfig().getInt("blocks.spread", 5);
} }
public int getMinDistance() {
return getConfig().getInt("blocks.min-distance", 10);
}
public int getDepth() { public int getDepth() {
return getConfig().getInt("blocks.depth", -1); return getConfig().getInt("blocks.depth", -1);
} }
@@ -181,8 +244,64 @@ public class ConfigManager {
return getConfig().getBoolean("skin.enabled", true); return getConfig().getBoolean("skin.enabled", true);
} }
/**
* 获取皮肤来源配置
*
* <p>支持的皮肤来源:
* <ul>
* <li><b>skinsrestorer</b>优先从SkinsRestorer插件获取皮肤纹理数据
* <ul>
* <li>推荐用于离线服务器</li>
* <li>支持玩家自定义皮肤</li>
* <li>避免默认Steve皮肤问题</li>
* </ul>
* </li>
* <li><b>player_profile</b>优先使用Bukkit的PlayerProfile API
* <ul>
* <li>需要玩家在线验证</li>
* <li>适合在线服务器</li>
* <li>支持Mojang官方皮肤</li>
* </ul>
* </li>
* <li><b>local_cache</b>:优先从本地缓存加载皮肤数据
* <ul>
* <li>减少网络请求</li>
* <li>提高加载速度</li>
* <li>支持离线使用</li>
* </ul>
* </li>
* </ul>
* </p>
*
* <p>默认配置已将此值设为"skinsrestorer",以优化离线服务器体验。</p>
*
* @return 皮肤来源配置值
* @see #useSkinsRestorer()
* @see SkinManager#loadPlayerSkinAsync()
*/
public String getSkinSource() { public String getSkinSource() {
return getConfig().getString("skin.source", "player_profile"); return getConfig().getString("skin.source", "skinsrestorer");
}
/**
* 检查是否启用SkinsRestorer插件支持
*
* <p>当此方法返回true时插件将
* <ul>
* <li>优先从SkinsRestorer插件获取玩家皮肤纹理</li>
* <li>支持离线服务器获取玩家自定义皮肤</li>
* <li>避免方块总是显示默认Steve皮肤的问题</li>
* <li>使用反射安全调用SkinsRestorer API无需硬依赖</li>
* </ul>
* </p>
*
* <p>默认配置已将此值设为true以优化离线服务器体验。</p>
*
* @return 如果启用SkinsRestorer支持返回true否则返回false
* @see #getSkinSource()
*/
public boolean useSkinsRestorer() {
return getConfig().getBoolean("skin.use-skinsrestorer", true);
} }
public int getCacheExpireDays() { public int getCacheExpireDays() {

View File

@@ -10,6 +10,32 @@ import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.UUID; import java.util.UUID;
/**
* 生命值系统 - 负责管理玩家生命值和状态效果
*
* <p>根据玩家剩余生命方块数量计算生命值,并应用相应的状态效果:
* <ul>
* <li>监控玩家剩余方块数量变化</li>
* <li>计算对应的生命值比例</li>
* <li>应用虚弱、缓慢、失明等负面效果</li>
* <li>处理玩家淘汰和复活逻辑</li>
* <li>提供生命值相关的音效和视觉反馈</li>
* </ul>
*
* <p>生命值计算公式:
* <pre>
* 5个方块 → 20点生命值满血
* 4个方块 → 16点生命值
* 3个方块 → 12点生命值
* 2个方块 → 8点生命值
* 1个方块 → 4点生命值
* 0个方块 → 0点生命值淘汰
* </pre>
*
* @author xiaobai
* @version 2.1.0
* @since 1.0.0
*/
public class LifeSystem { public class LifeSystem {
private final PlayerBlockLife plugin; private final PlayerBlockLife plugin;
private final Map<UUID, Integer> playerHealth = new HashMap<>(); private final Map<UUID, Integer> playerHealth = new HashMap<>();

View File

@@ -5,6 +5,25 @@ import org.bukkit.plugin.java.JavaPlugin;
import java.util.logging.Level; import java.util.logging.Level;
/**
* PlayerBlockLife插件主类 - 玩家生命方块系统的核心控制器
*
* <p>这个插件为Minecraft服务器添加了一个独特的游戏机制每个玩家拥有一定数量的生命方块
* 这些方块使用玩家的皮肤作为材质。当其他玩家挖光某个玩家的所有生命方块时,该玩家会被淘汰。</p>
*
* <p>主要功能:
* <ul>
* <li>管理玩家生命方块的生成和销毁</li>
* <li>处理玩家皮肤的获取和应用</li>
* <li>监控玩家生命值状态</li>
* <li>提供完整的命令和权限系统</li>
* <li>支持配置热重载和数据持久化</li>
* </ul>
*
* @author xiaobai
* @version 3.0.0-experimental-1.20.4
* @since 1.0.0
*/
public class PlayerBlockLife extends JavaPlugin { public class PlayerBlockLife extends JavaPlugin {
private static PlayerBlockLife instance; private static PlayerBlockLife instance;
private PlayerBlockManager blockManager; private PlayerBlockManager blockManager;
@@ -13,6 +32,22 @@ public class PlayerBlockLife extends JavaPlugin {
private ConfigManager configManager; private ConfigManager configManager;
private MessageManager messageManager; private MessageManager messageManager;
/**
* 插件启用时调用,执行初始化操作
*
* <p>初始化流程:
* <ol>
* <li>保存默认配置文件</li>
* <li>初始化所有管理器(注意依赖顺序)</li>
* <li>加载配置和消息数据</li>
* <li>注册事件监听器</li>
* <li>注册命令执行器</li>
* <li>加载玩家数据和皮肤缓存</li>
* <li>启动定时任务</li>
* </ol>
*
* @see #onDisable()
*/
@Override @Override
public void onEnable() { public void onEnable() {
instance = this; instance = this;
@@ -57,6 +92,18 @@ public class PlayerBlockLife extends JavaPlugin {
getLogger().info("§a========================================"); getLogger().info("§a========================================");
} }
/**
* 插件禁用时调用,执行清理操作
*
* <p>执行以下清理操作:
* <ul>
* <li>保存玩家方块数据到文件</li>
* <li>保存皮肤缓存数据</li>
* <li>记录插件禁用日志</li>
* </ul>
*
* @see #onEnable()
*/
@Override @Override
public void onDisable() { public void onDisable() {
// 保存数据 // 保存数据
@@ -81,6 +128,16 @@ public class PlayerBlockLife extends JavaPlugin {
/** /**
* 插件的完整重载方法(用于命令) * 插件的完整重载方法(用于命令)
*
* <p>重新加载所有插件配置和数据,包括:
* <ul>
* <li>主配置文件 (config.yml)</li>
* <li>消息配置文件 (messages.yml)</li>
* <li>玩家方块数据</li>
* <li>皮肤缓存数据</li>
* </ul>
*
* <p>这个方法通常由管理员通过/pblreload命令调用。</p>
*/ */
public void reloadPluginConfig() { public void reloadPluginConfig() {
if (configManager != null) { if (configManager != null) {
@@ -125,6 +182,14 @@ public class PlayerBlockLife extends JavaPlugin {
}, 1200L, 1200L); }, 1200L, 1200L);
} }
/**
* 获取插件单例实例
*
* <p>提供全局访问点,允许其他类访问插件主实例。</p>
*
* @return PlayerBlockLife插件实例
* @throws IllegalStateException 如果插件尚未启用实例为null
*/
public static PlayerBlockLife getInstance() { public static PlayerBlockLife getInstance() {
return instance; return instance;
} }

View File

@@ -18,6 +18,34 @@ import java.io.FileWriter;
import java.util.*; import java.util.*;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
/**
* 玩家方块管理器 - 负责管理玩家生命方块的核心组件
*
* <p>主要职责:
* <ul>
* <li>生成和放置玩家生命方块</li>
* <li>管理方块位置和所有者映射关系</li>
* <li>处理方块破坏和恢复逻辑</li>
* <li>提供方块数据持久化存储</li>
* <li>支持方块位置查询和验证</li>
* <li>与SkinManager协同工作确保方块正确显示玩家皮肤</li>
* </ul>
*
* <p><b>SkinsRestorer集成特性</b>
* <ul>
* <li>通过SkinManager获取SkinsRestorer提供的玩家皮肤纹理</li>
* <li>确保离线服务器上的方块显示正确的自定义皮肤</li>
* <li>支持异步皮肤加载,避免方块放置阻塞</li>
* <li>提供皮肤加载状态检查,确保皮肤就绪后再放置方块</li>
* </ul>
* </p>
*
* <p>使用并发安全的数据结构确保多线程环境下的数据一致性。</p>
*
* @author xiaobai
* @version 2.1.0
* @since 1.0.0
*/
public class PlayerBlockManager { public class PlayerBlockManager {
private final PlayerBlockLife plugin; private final PlayerBlockLife plugin;
private final SkinManager skinManager; private final SkinManager skinManager;
@@ -47,7 +75,36 @@ public class PlayerBlockManager {
} }
/** /**
* 为玩家生成生命方块(新方法,支持自动生成) * 为玩家生成指定数量的生命方块
*
* <p>此方法负责生成玩家的生命方块,包括以下步骤:
* <ol>
* <li>检查玩家是否已有生命方块</li>
* <li>验证玩家皮肤是否已从SkinsRestorer或其他来源加载完成</li>
* <li>在指定范围内寻找合适的放置位置</li>
* <li>放置带有玩家皮肤纹理的玩家头颅方块</li>
* <li>记录方块位置和所有者关系</li>
* <li>保存数据并返回生成结果</li>
* </ol>
* </p>
*
* <p><b>皮肤加载检查:</b>
* <ul>
* <li>调用skinManager.isSkinLoaded()检查皮肤是否就绪</li>
* <li>如果皮肤未加载,方块生成将失败</li>
* <li>确保离线服务器通过SkinsRestorer获取的皮肤能正确应用</li>
* <li>避免放置默认Steve皮肤的方块</li>
* </ul>
* </p>
*
* @param player 目标玩家
* @param blockAmount 要生成的方块数量
* @param spreadRange 生成范围(以玩家为中心的正方形边长的一半)
* @param requireOpenSky 是否需要开阔天空(上方无方块覆盖)
* @param maxAttempts 寻找合适位置的最大尝试次数
* @return 生成成功返回true失败返回false
* @see SkinManager#isSkinLoaded(UUID)
* @see SkinManager#getSkinFromSkinsRestorer(Player)
*/ */
public boolean generateLifeBlocksForPlayer(Player player, int blockAmount, int spreadRange, boolean requireOpenSky, int maxAttempts) { public boolean generateLifeBlocksForPlayer(Player player, int blockAmount, int spreadRange, boolean requireOpenSky, int maxAttempts) {
UUID playerId = player.getUniqueId(); UUID playerId = player.getUniqueId();
@@ -92,24 +149,28 @@ public class PlayerBlockManager {
} }
/** /**
* 寻找地表位置(上方无方块覆盖 * 寻找地表位置(放宽条件,只要是露天地面就可以
*/ */
private Location findSurfaceLocation(Location center, int spreadRange, boolean requireOpenSky) { private Location findSurfaceLocation(Location center, int spreadRange, boolean requireOpenSky) {
for (int i = 0; i < 10; i++) { for (int i = 0; i < 20; i++) { // 增加尝试次数
int x = random.nextInt(spreadRange * 2 + 1) - spreadRange; int x = random.nextInt(spreadRange * 2 + 1) - spreadRange;
int z = random.nextInt(spreadRange * 2 + 1) - spreadRange; int z = random.nextInt(spreadRange * 2 + 1) - spreadRange;
// 从中心点上方开始向下寻找地表 // 以玩家坐标为中心,但高度从世界最高点开始寻找
Location testLoc = center.clone().add(x, 10, z); Location testLoc = center.clone().add(x, 0, z);
World world = testLoc.getWorld(); World world = testLoc.getWorld();
if (world == null) continue; if (world == null) continue;
// 向下寻找第一个非空气方块 // 从世界最高点向下寻找第一个固体方块
int maxHeight = world.getMaxHeight();
Block groundBlock = null; Block groundBlock = null;
for (int y = 10; y > world.getMinHeight(); y--) { for (int y = maxHeight; y > world.getMinHeight(); y--) {
testLoc.setY(y); testLoc.setY(y);
Block block = testLoc.getBlock(); Block block = testLoc.getBlock();
if (!block.getType().isAir()) { Material type = block.getType();
// 检查是否是固体方块(可以作为支撑)
if (type.isSolid() && type.isBlock() && !type.isTransparent()) {
groundBlock = block; groundBlock = block;
break; break;
} }
@@ -117,24 +178,23 @@ public class PlayerBlockManager {
if (groundBlock == null) continue; if (groundBlock == null) continue;
// 检查地表方块上方位置 // 地表位置 = 固体方块上方一格
Location surfaceLoc = groundBlock.getLocation().add(0, 1, 0); Location surfaceLoc = groundBlock.getLocation().add(0, 1, 0);
Block surfaceBlock = surfaceLoc.getBlock();
// 检查是否已有方块 // 检查是否已有方块
if (blockOwners.containsKey(surfaceLoc)) { if (blockOwners.containsKey(surfaceLoc)) {
continue; continue;
} }
// 检查地表方块是否合适 // 检查位置是否合适(放宽条件)
if (!isSuitableLocation(surfaceLoc)) { if (!isSuitableLocationRelaxed(surfaceLoc)) {
continue; continue;
} }
// 如果需要上方无方块覆盖,检查上方 // 如果需要上方无方块覆盖,检查上方3格
if (requireOpenSky) { if (requireOpenSky) {
boolean hasCover = false; boolean hasCover = false;
for (int y = 1; y <= 5; y++) { for (int y = 1; y <= 3; y++) {
Block aboveBlock = surfaceLoc.clone().add(0, y, 0).getBlock(); Block aboveBlock = surfaceLoc.clone().add(0, y, 0).getBlock();
if (!aboveBlock.getType().isAir()) { if (!aboveBlock.getType().isAir()) {
hasCover = true; hasCover = true;
@@ -234,8 +294,52 @@ public class PlayerBlockManager {
return true; return true;
} }
/**
* 放宽条件的检查方法(用于新的生成逻辑)
*/
private boolean isSuitableLocationRelaxed(Location location) {
Block block = location.getBlock();
// 检查是否已有方块
if (blockOwners.containsKey(location)) {
return false;
}
// 检查方块是否可替换(放宽条件)
Material type = block.getType();
if (!type.isAir()) {
// 固体方块不能替换
if (type.isSolid()) {
return false;
}
// 液体方块不能替换
if (type == Material.WATER || type == Material.LAVA) {
return false;
}
}
// 检查下方是否有支撑方块(放宽条件)
Block below = location.clone().add(0, -1, 0).getBlock();
Material belowType = below.getType();
// 只要下方不是空气或液体就可以
if (belowType.isAir() || belowType == Material.WATER || belowType == Material.LAVA) {
return false;
}
return true;
}
/** /**
* 放置玩家头颅方块 * 放置玩家头颅方块
*
* <p>使用SkinManager创建带有正确皮肤的玩家头颅方块支持离线服务器皮肤显示。</p>
*
* @param location 放置位置
* @param playerId 玩家UUID
* @param playerName 玩家名称
* @return 放置成功返回true失败返回false
*/ */
private boolean placePlayerHead(Location location, UUID playerId, String playerName) { private boolean placePlayerHead(Location location, UUID playerId, String playerName) {
try { try {
@@ -246,15 +350,37 @@ public class PlayerBlockManager {
return false; return false;
} }
// 检查玩家皮肤是否已加载
if (!skinManager.isSkinLoaded(playerId)) {
plugin.logWarning("玩家 " + playerName + " 的皮肤未加载,无法放置头颅方块");
return false;
}
// 设置方块为玩家头颅 // 设置方块为玩家头颅
block.setType(Material.PLAYER_HEAD); block.setType(Material.PLAYER_HEAD);
// 获取并设置头颅数据 // 获取并设置头颅数据
Skull skullState = (Skull) block.getState(); Skull skullState = (Skull) block.getState();
OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(playerId);
// 设置头颅所有者 // 使用SkinManager创建玩家头颅物品然后应用到方块上
skullState.setOwningPlayer(offlinePlayer); ItemStack headItem = skinManager.createPlayerHead(playerId, playerName);
SkullMeta itemMeta = (SkullMeta) headItem.getItemMeta();
if (itemMeta != null) {
// 获取物品的玩家档案并应用到方块上
org.bukkit.profile.PlayerProfile profile = itemMeta.getPlayerProfile();
if (profile != null) {
skullState.setOwnerProfile(profile);
} else {
// 如果无法获取档案,回退到使用离线玩家
OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(playerId);
skullState.setOwningPlayer(offlinePlayer);
}
} else {
// 如果物品元数据为空,使用离线玩家
OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(playerId);
skullState.setOwningPlayer(offlinePlayer);
}
// 设置朝向(随机方向) // 设置朝向(随机方向)
BlockData blockData = block.getBlockData(); BlockData blockData = block.getBlockData();
@@ -268,6 +394,7 @@ public class PlayerBlockManager {
// 更新方块 // 更新方块
skullState.update(true, false); skullState.update(true, false);
plugin.logInfo("成功放置玩家头颅方块: " + playerName + "" + location);
return true; return true;
} catch (Exception e) { } catch (Exception e) {
plugin.logError("放置玩家头颅失败: " + location, e); plugin.logError("放置玩家头颅失败: " + location, e);

View File

@@ -137,8 +137,9 @@ public class PlayerJoinListener implements Listener {
String onFailure = config.getOnFailureAction(); String onFailure = config.getOnFailureAction();
if (onFailure.equals("notify")) { if (onFailure.equals("notify")) {
String notifyMsg = plugin.getMessageManager().getMessage("game.errors.cannot_generate_blocks", String notifyMsg = plugin.getMessageManager().getMessage("game.errors.cannot_generate_blocks",
"&c无法生成生命方块找不到合适的位置"); "&c无法生成生命方块{reason}");
notifyMsg = notifyMsg.replace("&", "§"); notifyMsg = notifyMsg.replace("{reason}", "找不到合适的位置尝试了20次")
.replace("&", "§");
player.sendMessage(notifyMsg); player.sendMessage(notifyMsg);
player.sendMessage("§7请手动使用 §e/setlifeblocks §7命令生成方块"); player.sendMessage("§7请手动使用 §e/setlifeblocks §7命令生成方块");
} else if (onFailure.equals("teleport_to_spawn")) { } else if (onFailure.equals("teleport_to_spawn")) {

View File

@@ -19,6 +19,42 @@ import java.nio.file.Files;
import java.util.*; import java.util.*;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
/**
* 皮肤管理器 - 负责玩家皮肤的获取、缓存和应用
*
* <p>主要功能:
* <ul>
* <li>从多种来源获取玩家皮肤数据SkinsRestorer插件、PlayerProfile、本地缓存</li>
* <li>皮肤数据Base64编码和缓存管理</li>
* <li>自定义模型数据分配和管理</li>
* <li>异步皮肤加载避免阻塞主线程</li>
* <li>皮肤缓存过期清理</li>
* <li>完整的SkinsRestorer插件集成支持</li>
* </ul>
*
* <p>皮肤获取优先级根据配置的source字段
* <ol>
* <li><b>skinsrestorer</b>优先从SkinsRestorer插件获取皮肤纹理数据</li>
* <li><b>player_profile</b>优先使用Bukkit的PlayerProfile API</li>
* <li><b>local_cache</b>:优先从本地缓存加载</li>
* <li>默认Steve皮肤所有来源都失败时的备用</li>
* </ol>
*
* <p><b>SkinsRestorer集成特性</b>
* <ul>
* <li>自动检测SkinsRestorer插件是否安装</li>
* <li>使用反射安全调用SkinsRestorer API避免硬依赖</li>
* <li>获取完整的皮肤纹理数据value和signature</li>
* <li>支持离线服务器避免默认Steve皮肤问题</li>
* <li>优雅降级SkinsRestorer失败时自动回退到其他来源</li>
* </ul>
*
* <p>皮肤缓存默认保留7天过期后自动重新获取。</p>
*
* @author xiaobai
* @version 2.1.0
* @since 1.0.0
*/
public class SkinManager { public class SkinManager {
private final PlayerBlockLife plugin; private final PlayerBlockLife plugin;
private final Map<UUID, String> playerSkinData = new ConcurrentHashMap<>(); private final Map<UUID, String> playerSkinData = new ConcurrentHashMap<>();
@@ -60,11 +96,41 @@ public class SkinManager {
try { try {
plugin.logInfo("开始加载皮肤: " + player.getName()); plugin.logInfo("开始加载皮肤: " + player.getName());
String skinBase64 = getSkinFromPlayerProfile(player); String skinBase64 = null;
String skinSource = plugin.getConfigManager().getSkinSource();
// 根据配置的皮肤来源优先级获取皮肤
if ("skinsrestorer".equalsIgnoreCase(skinSource)) {
// 优先尝试SkinsRestorer
skinBase64 = getSkinFromSkinsRestorer(player);
if (skinBase64 == null) {
plugin.logInfo("SkinsRestorer获取失败尝试PlayerProfile: " + player.getName());
skinBase64 = getSkinFromPlayerProfile(player);
}
} else if ("player_profile".equalsIgnoreCase(skinSource)) {
// 优先尝试PlayerProfile
skinBase64 = getSkinFromPlayerProfile(player);
if (skinBase64 == null && plugin.getConfigManager().useSkinsRestorer()) {
plugin.logInfo("PlayerProfile获取失败尝试SkinsRestorer: " + player.getName());
skinBase64 = getSkinFromSkinsRestorer(player);
}
} else if ("local_cache".equalsIgnoreCase(skinSource)) {
// 优先从本地缓存加载
if (loadSkinFromCache(playerId)) {
plugin.logInfo("从缓存加载皮肤: " + player.getName());
return;
}
// 缓存不存在,尝试其他来源
skinBase64 = getSkinFromPlayerProfile(player);
if (skinBase64 == null && plugin.getConfigManager().useSkinsRestorer()) {
skinBase64 = getSkinFromSkinsRestorer(player);
}
}
// 如果所有来源都失败使用默认Steve皮肤
if (skinBase64 == null) { if (skinBase64 == null) {
skinBase64 = getDefaultSteveSkin(); skinBase64 = getDefaultSteveSkin();
plugin.logWarning("使用默认皮肤: " + player.getName()); plugin.logWarning("所有皮肤来源都失败使用默认Steve皮肤: " + player.getName());
} }
if (skinBase64 != null) { if (skinBase64 != null) {
@@ -87,6 +153,104 @@ public class SkinManager {
}); });
} }
/**
* 从SkinsRestorer插件获取玩家皮肤纹理数据
*
* <p>SkinsRestorer是一个流行的皮肤管理插件可以在离线服务器上提供皮肤支持。</p>
*
* <p>此方法使用反射安全调用SkinsRestorer API避免硬依赖。支持离线服务器获取玩家自定义皮肤。</p>
*
* <p>获取流程:
* <ol>
* <li>检查SkinsRestorer插件是否安装</li>
* <li>使用反射获取SkinsRestorer API实例</li>
* <li>优先通过UUID获取皮肤数据更可靠</li>
* <li>如果UUID获取失败回退到使用玩家名获取</li>
* <li>提取皮肤纹理的value和signature字段</li>
* <li>构建完整的Base64编码纹理JSON</li>
* </ol>
* </p>
*
* <p><b>离线服务器优势:</b>
* <ul>
* <li>即使玩家离线也能获取其预设皮肤</li>
* <li>避免总是显示默认Steve皮肤的问题</li>
* <li>支持管理员设置的皮肤和玩家自定义皮肤</li>
* </ul>
* </p>
*
* @param player 要获取皮肤的玩家对象
* @return 完整的Base64编码皮肤纹理JSON如果获取失败返回null
* @throws ClassNotFoundException 如果SkinsRestorer API类未找到插件未安装
* @throws Exception 反射调用过程中的其他异常
*/
private String getSkinFromSkinsRestorer(Player player) {
try {
// 检查SkinsRestorer插件是否存在
if (Bukkit.getPluginManager().getPlugin("SkinsRestorer") == null) {
plugin.logInfo("SkinsRestorer插件未安装跳过从SkinsRestorer获取皮肤");
return null;
}
plugin.logInfo("尝试从SkinsRestorer获取皮肤: " + player.getName());
// 使用反射调用SkinsRestorer API
Class<?> skinsRestorerClass = Class.forName("net.skinsrestorer.api.SkinsRestorerAPI");
Object skinsRestorerAPI = skinsRestorerClass.getMethod("getApi").invoke(null);
// 获取玩家皮肤数据 - 使用UUID而不是玩家名更可靠
Class<?> skinPropertyClass = Class.forName("net.skinsrestorer.api.property.SkinProperty");
Object skinProperty = skinsRestorerAPI.getClass().getMethod("getSkinData", UUID.class)
.invoke(skinsRestorerAPI, player.getUniqueId());
// 如果通过UUID获取失败尝试使用玩家名
if (skinProperty == null) {
skinProperty = skinsRestorerAPI.getClass().getMethod("getSkinData", String.class)
.invoke(skinsRestorerAPI, player.getName());
}
if (skinProperty != null) {
String value = (String) skinPropertyClass.getMethod("getValue").invoke(skinProperty);
String signature = (String) skinPropertyClass.getMethod("getSignature").invoke(skinProperty);
// 创建完整的纹理JSON对象
JsonObject textureJson = new JsonObject();
JsonObject texturesJson = new JsonObject();
JsonObject skinJson = new JsonObject();
skinJson.addProperty("url", "http://textures.minecraft.net/texture/" + value);
texturesJson.add("SKIN", skinJson);
textureJson.add("textures", texturesJson);
// 添加时间戳确保唯一性
textureJson.addProperty("timestamp", System.currentTimeMillis());
String base64Texture = java.util.Base64.getEncoder().encodeToString(textureJson.toString().getBytes());
plugin.logInfo("成功从SkinsRestorer获取皮肤: " + player.getName());
return base64Texture;
} else {
plugin.logInfo("SkinsRestorer中没有找到玩家 " + player.getName() + " 的皮肤数据");
}
} catch (ClassNotFoundException e) {
plugin.logWarning("SkinsRestorer API类未找到插件可能未安装或版本不兼容: " + e.getMessage());
} catch (NoSuchMethodException e) {
plugin.logWarning("SkinsRestorer API方法未找到可能是版本不兼容: " + e.getMessage());
} catch (Exception e) {
plugin.logWarning("从SkinsRestorer获取皮肤失败: " + e.getMessage());
}
return null;
}
/**
* 从PlayerProfile获取玩家皮肤数据
*
* <p>使用Bukkit的PlayerProfile API获取在线玩家的皮肤URL然后转换为Base64纹理。</p>
*
* @param player 要获取皮肤的玩家
* @return 皮肤的Base64纹理值如果获取失败返回null
*/
private String getSkinFromPlayerProfile(Player player) { private String getSkinFromPlayerProfile(Player player) {
try { try {
PlayerProfile profile = player.getPlayerProfile(); PlayerProfile profile = player.getPlayerProfile();
@@ -94,30 +258,27 @@ public class SkinManager {
URL skinUrl = textures.getSkin(); URL skinUrl = textures.getSkin();
if (skinUrl != null) { if (skinUrl != null) {
BufferedImage skinImage = ImageIO.read(skinUrl); // 创建纹理JSON对象
if (skinImage == null) { JsonObject textureJson = new JsonObject();
return null; JsonObject texturesJson = new JsonObject();
} JsonObject skinJson = new JsonObject();
int headX = 8; // 直接使用皮肤URL不需要处理图像
int headY = 8; skinJson.addProperty("url", skinUrl.toString());
int headWidth = 8; texturesJson.add("SKIN", skinJson);
int headHeight = 8; textureJson.add("textures", texturesJson);
if (skinImage.getWidth() >= headX + headWidth && // 添加时间戳确保唯一性
skinImage.getHeight() >= headY + headHeight) { textureJson.addProperty("timestamp", System.currentTimeMillis());
textureJson.addProperty("profileId", player.getUniqueId().toString());
textureJson.addProperty("profileName", player.getName());
BufferedImage headImage = skinImage.getSubimage(headX, headY, headWidth, headHeight); String base64Texture = java.util.Base64.getEncoder().encodeToString(textureJson.toString().getBytes());
ByteArrayOutputStream baos = new ByteArrayOutputStream(); plugin.logInfo("成功从PlayerProfile获取皮肤: " + player.getName());
ImageIO.write(headImage, "PNG", baos); return base64Texture;
byte[] imageBytes = baos.toByteArray(); } else {
plugin.logInfo("PlayerProfile中没有找到玩家 " + player.getName() + " 的皮肤URL");
JsonObject textureJson = new JsonObject();
JsonObject timestampJson = new JsonObject();
return player.getUniqueId().toString();
}
} }
} catch (Exception e) { } catch (Exception e) {
plugin.logWarning("从PlayerProfile获取皮肤失败: " + e.getMessage()); plugin.logWarning("从PlayerProfile获取皮肤失败: " + e.getMessage());
@@ -163,23 +324,92 @@ public class SkinManager {
return modelData; return modelData;
} }
/**
* 获取默认Steve皮肤的Base64纹理
*
* <p>当无法从任何来源获取玩家皮肤时使用默认的Steve皮肤作为备用。</p>
*
* @return 默认Steve皮肤的Base64纹理值
*/
private String getDefaultSteveSkin() { private String getDefaultSteveSkin() {
return "8667ba71-b85a-4004-af54-457a9734eed7"; // Steve皮肤的纹理哈希值
String steveTextureHash = "8667ba71b85a4004af54457a9734eed7";
JsonObject textureJson = new JsonObject();
JsonObject texturesJson = new JsonObject();
JsonObject skinJson = new JsonObject();
// 使用Minecraft官方纹理服务器URL
skinJson.addProperty("url", "http://textures.minecraft.net/texture/" + steveTextureHash);
texturesJson.add("SKIN", skinJson);
textureJson.add("textures", texturesJson);
// 添加时间戳
textureJson.addProperty("timestamp", System.currentTimeMillis());
textureJson.addProperty("profileId", "c06f8906-4c8a-4911-9c29-ea1dbd1aab82"); // Steve的UUID
textureJson.addProperty("profileName", "Steve");
return java.util.Base64.getEncoder().encodeToString(textureJson.toString().getBytes());
} }
/**
* 创建带有玩家皮肤的头颅物品
*
* <p>使用Base64纹理数据创建自定义玩家头颅支持离线服务器皮肤显示。</p>
*
* @param playerId 玩家UUID
* @param playerName 玩家名称
* @return 带有玩家皮肤的玩家头颅物品
*/
public ItemStack createPlayerHead(UUID playerId, String playerName) { public ItemStack createPlayerHead(UUID playerId, String playerName) {
ItemStack head = new ItemStack(org.bukkit.Material.PLAYER_HEAD); ItemStack head = new ItemStack(org.bukkit.Material.PLAYER_HEAD);
SkullMeta meta = (SkullMeta) head.getItemMeta(); SkullMeta meta = (SkullMeta) head.getItemMeta();
if (meta != null) { if (meta != null) {
OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(playerId); // 获取玩家的Base64皮肤数据
meta.setOwningPlayer(offlinePlayer); String skinBase64 = playerSkinData.get(playerId);
if (skinBase64 != null) {
try {
// 对于Paper API我们需要使用Paper特定的方法
// 首先尝试使用Paper的ProfileProperty API
Class<?> propertyClass = Class.forName("com.destroystokyo.paper.profile.ProfileProperty");
// 创建ProfileProperty对象
Object property = propertyClass.getConstructor(String.class, String.class)
.newInstance("textures", skinBase64);
// 获取Paper的PlayerProfile
Object profile = Bukkit.class.getMethod("createProfile", UUID.class, String.class)
.invoke(null, playerId, playerName);
// 设置属性到档案
Class<?> profileClass = profile.getClass();
profileClass.getMethod("setProperty", propertyClass).invoke(profile, property);
// 设置头颅的所有者档案 - 使用正确的类型转换
// Paper的SkullMeta.setPlayerProfile期望com.destroystokyo.paper.profile.PlayerProfile
meta.setPlayerProfile((com.destroystokyo.paper.profile.PlayerProfile) profile);
} catch (Exception e) {
// 如果反射失败,回退到使用离线玩家(可能显示默认皮肤)
plugin.logWarning("无法设置Base64皮肤使用离线玩家档案: " + e.getMessage());
OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(playerId);
meta.setOwningPlayer(offlinePlayer);
}
} else {
// 没有皮肤数据,使用离线玩家
OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(playerId);
meta.setOwningPlayer(offlinePlayer);
}
// 设置自定义模型数据(如果有)
Integer customModelData = playerCustomModelData.get(playerId); Integer customModelData = playerCustomModelData.get(playerId);
if (customModelData != null) { if (customModelData != null) {
meta.setCustomModelData(customModelData); meta.setCustomModelData(customModelData);
} }
// 设置显示名称和描述
meta.setDisplayName("§e" + playerName + "的生命方块"); meta.setDisplayName("§e" + playerName + "的生命方块");
List<String> lore = new ArrayList<>(); List<String> lore = new ArrayList<>();

View File

@@ -7,6 +7,8 @@ blocks:
amount: 5 amount: 5
# 方块生成范围(以玩家为中心的正方形边长的一半) # 方块生成范围(以玩家为中心的正方形边长的一半)
spread: 5 spread: 5
# 方块生成最小范围(方块之间最小距离,单位:格)
min-distance: 10
# 方块埋藏深度0为地面负数为地下 # 方块埋藏深度0为地面负数为地下
depth: -1 depth: -1
# 方块材质类型 # 方块材质类型
@@ -41,8 +43,16 @@ game:
skin: skin:
# 是否启用皮肤系统 # 是否启用皮肤系统
enabled: true enabled: true
# 皮肤来源 (player_profile, local_cache) # 皮肤来源 (player_profile, local_cache, skinsrestorer)
source: player_profile # player_profile: 使用Bukkit的PlayerProfile API需要在线验证
# local_cache: 使用本地缓存的皮肤数据
# skinsrestorer: 使用SkinsRestorer插件的皮肤数据推荐用于离线服务器
source: skinsrestorer
# 是否使用SkinsRestorer插件的皮肤如果服务器有此插件
# 设置为true时插件会优先从SkinsRestorer获取皮肤数据
# 这对于离线服务器特别有用可以避免默认Steve皮肤的问题
use-skinsrestorer: true
# 缓存设置 # 缓存设置
cache: cache:

View File

@@ -1,5 +1,5 @@
name: PlayerBlockLife name: PlayerBlockLife
version: 2.0.0-1.20.4 version: 3.0.0-experimental-1.20.4
main: com.playerblocklife.PlayerBlockLife main: com.playerblocklife.PlayerBlockLife
api-version: 1.20 api-version: 1.20
author: xiaobai author: xiaobai