-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocs.html
More file actions
255 lines (233 loc) · 21.7 KB
/
Copy pathdocs.html
File metadata and controls
255 lines (233 loc) · 21.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>DragonReign — Documentation</title>
<meta name="description" content="DragonReign documentation: install, the rules, commands, permissions, config, GUIs, and how to show the Dragonlord title in chat, tab, and nameplates.">
<link rel="icon" href="logo.png">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=JetBrains+Mono:wght@500&display=swap" rel="stylesheet">
<link rel="stylesheet" href="css/style.css">
<link rel="stylesheet" href="css/dragonreign.css">
</head>
<body>
<nav class="nav">
<div class="nav-inner">
<div class="nav-logo"><a href="index.html" style="color:inherit;">Dragon<span>Reign</span></a></div>
<ul class="nav-links" id="nav-links">
<li><a href="index.html">Home</a></li>
<li><a href="docs.html" class="active">Docs</a></li>
<li><a href="https://github.com/ThConMan/DragonReign">GitHub</a></li>
</ul>
<button class="nav-burger" onclick="toggleMenu()" aria-label="Menu"><span></span><span></span><span></span></button>
</div>
</nav>
<div style="height: 4rem;"></div>
<div class="docs-layout">
<aside class="docs-sidebar">
<div class="docs-sidebar-header">DragonReign Docs</div>
<nav class="docs-toc">
<a href="#overview" class="active">Overview</a>
<a href="#install">Install</a>
<a href="#rules">The rules</a>
<a href="#commands">Commands</a>
<a href="#permissions">Permissions</a>
<a href="#config">Config</a>
<a href="#guis">In-game menus</a>
<a href="#title">Showing the title</a>
<a href="#placeholders">Placeholders</a>
<a href="#faq">FAQ</a>
</nav>
</aside>
<main class="docs-content">
<h1 class="docs-title">Documentation</h1>
<p class="docs-subtitle">Everything DragonReign does, in plain English. Built for Paper / Minecraft 26.1.2, Java 21+.</p>
<section class="docs-section" id="overview">
<h2>Overview</h2>
<p>DragonReign makes the Dragon Egg a single, contested trophy. There's only ever <strong>one</strong> egg. It can't be hidden in containers, it can't be sat on forever, and holding it earns rewards and a permanent <strong>Dragonlord</strong> title. Every rule is on by default and can be flipped in-game with <span class="mono">/dr gui</span>.</p>
<div class="docs-callout">All protections apply to <em>every</em> dragon egg item and block — there's no way to launder the rules by crafting a look-alike.</div>
</section>
<section class="docs-section" id="install">
<h2>Install</h2>
<ol class="docs-list">
<li>Download <span class="mono">DragonReign-x.y.z.jar</span> from the <a href="https://github.com/ThConMan/DragonReign/releases/latest">latest release</a>.</li>
<li>Drop it in your server's <span class="mono">plugins/</span> folder (remove any older DragonReign jar).</li>
<li>Restart the server.</li>
<li>Adjust <span class="mono">plugins/DragonReign/config.yml</span> or run <span class="mono">/dr gui</span>. That's it.</li>
</ol>
<p>Optional soft-depends (all auto-detected): PlaceholderAPI, TAB, LuckPerms, CMI, EssentialsX, Vault.</p>
</section>
<section class="docs-section" id="rules">
<h2>The rules</h2>
<div class="docs-grid">
<div class="docs-grid-item"><h4>No containers</h4><p>The egg can only sit in a player inventory or be placed as a block — never a chest, ender chest, bundle, hopper, minecart, or any container. The sneaky spots count too: decorated pots, item frames, armor stand hands, and item-collecting mobs (no, the allay can't carry it for you).</p></div>
<div class="docs-grid-item"><h4>Drop control</h4><p>Dropping is a toggle (<span class="mono">no-drop</span>). When drops are allowed, a loose egg is <strong>fireproof</strong> (immune to lava, fire, cactus, explosions), <strong>floats out of lava and water</strong>, and never despawns — but still dies in the void and respawns at the End.</p></div>
<div class="docs-grid-item"><h4>Respawn on inactivity</h4><p>If the keeper is gone for <span class="mono">inactivity-days</span> (default 14), the egg respawns at the End portal.</p></div>
<div class="docs-grid-item"><h4>Staleness respawn</h4><p>An egg left <strong>idle</strong> — placed and abandoned, or held by an owner who's offline, AFK, or away from it — respawns after <span class="mono">staleness-days</span> (default 10), even while that owner is online. Actively holding it (online, not AFK, carrying it or near the placed block) keeps it fresh, so an engaged player is never punished — only genuinely parked or hoarded eggs come back.</p></div>
<div class="docs-grid-item"><h4>Respawn countdown</h4><p>The respawn isn't instant: a timed countdown warns the server so players can race to the End. If the keeper returns in time, it's cancelled.</p></div>
<div class="docs-grid-item"><h4>Egg compass</h4><p>Players near a placed egg get an action-bar arrow pointing at it — warmer the closer they get. Click-teleports are tracked too, so the arrow follows the egg's vanilla blink instead of pointing at where it used to be.</p></div>
<div class="docs-grid-item"><h4>Hold rewards</h4><p>The keeper earns escalating, configurable rewards while the egg is actually <strong>on them</strong> — placing it down pauses the reward clock, so a vaulted trophy doesn't pay but carrying the risk does. Each tier is a list of console commands, so pay out items, money (CMI/Vault), XP, effects, or vouchers from other plugins (e.g. a TempFly flight voucher). The ladder resets when the egg changes hands, and players can read the <span class="mono">/dr rewards</span> book to see what's on offer.</p></div>
<div class="docs-grid-item"><h4>Kill bonus</h4><p>The keeper's PvP kills also fill the reward bar, so a kill can complete a tier just like held time. Gated hard against alt-farming: killing an IP-linked account, a fresh account (under a playtime minimum), or the same victim again within a cooldown all count for nothing. Toggle it off with <span class="mono">kill-bonus.enabled</span>.</p></div>
<div class="docs-grid-item"><h4>Anti-AFK</h4><p>Reward time only builds while you're truly playing. AFK pools and auto-clickers don't count.</p></div>
<div class="docs-grid-item"><h4>Never lost</h4><p>A loose egg never despawns and shrugs off fire, lava, cactus, TNT and creepers — and explosions can't blow up the placed egg block either. If it falls into the void it's rebuilt at the End, and if anything ever deletes it outright, a watchdog hands it back to the keeper and alerts staff. There is always exactly one egg.</p></div>
<div class="docs-grid-item"><h4>Dragonlord aura</h4><p>Keep the egg for a full week of real time — lose it once and the clock restarts — to permanently earn the Dragonlord title and a living aura: shimmering spirit-orbs that wander around you, <em>livewire</em> surges, lightning arcs between orbs, a coronation flourish, and reactivity to combat — every layer configurable.</p></div>
<div class="docs-grid-item"><h4>Staff inbox</h4><p>Alt/IP flags, dupe cleanups, and respawns alert online admins and queue for the rest.</p></div>
<div class="docs-grid-item"><h4>History log</h4><p>Every meaningful egg event is recorded and browsable in-game.</p></div>
</div>
</section>
<section class="docs-section" id="commands">
<h2>Commands</h2>
<p>Base command <span class="mono">/dragonreign</span> — short alias <span class="mono">/dr</span> (also <span class="mono">/dreign</span>, <span class="mono">/degg</span>). Tab-complete only suggests what you can use; running a command without its permission does nothing at all.</p>
<div class="docs-table-wrap">
<table class="docs-table">
<thead><tr><th>Command</th><th>What it does</th></tr></thead>
<tbody>
<tr><td><span class="mono">/dr info</span></td><td>Friendly readout: who holds the egg, how long until it resets, and a nudge to the guide.</td></tr>
<tr><td><span class="mono">/dr admininfo</span></td><td>Full technical readout: location, both reset timers, ownership posture, inbox. <span class="docs-tag docs-tag-op">op</span></td></tr>
<tr><td><span class="mono">/dr guide</span></td><td>Get the in-game illustrated guide book.</td></tr>
<tr><td><span class="mono">/dr rewards</span> <span class="mono">/dr reward</span></td><td>Get the in-game "Dragon Egg Rewards" book — what holding the egg pays out.</td></tr>
<tr><td><span class="mono">/dr gui</span></td><td>Open the live settings menu. <span class="docs-tag docs-tag-op">op</span></td></tr>
<tr><td><span class="mono">/dr log</span></td><td>Open the egg history. <span class="docs-tag docs-tag-op">op</span></td></tr>
<tr><td><span class="mono">/dr inbox</span></td><td>Open the staff alert inbox. <span class="docs-tag docs-tag-op">op</span></td></tr>
<tr><td><span class="mono">/dr respawn [force]</span></td><td>Start a respawn countdown now, or <span class="mono">force</span> it instantly. <span class="docs-tag docs-tag-op">op</span></td></tr>
<tr><td><span class="mono">/dr cancel</span></td><td>Cancel an active countdown. <span class="docs-tag docs-tag-op">op</span></td></tr>
<tr><td><span class="mono">/dr victor <grant|revoke> <player></span></td><td>Grant or take away Dragonlord status. <span class="docs-tag docs-tag-op">op</span></td></tr>
<tr><td><span class="mono">/dr cosmetics</span> · <span class="mono">/dr particle</span> · <span class="mono">/dr title</span></td><td>Dragonlords toggle their own aura and title.</td></tr>
<tr><td><span class="mono">/dr reload</span></td><td>Reload the config. <span class="docs-tag docs-tag-op">op</span></td></tr>
<tr><td><span class="mono">/giveegg <player></span></td><td>Hand the egg you're holding to another online player.</td></tr>
</tbody>
</table>
</div>
</section>
<section class="docs-section" id="permissions">
<h2>Permissions</h2>
<p>Every action has its own node, all rolled up under <span class="mono">dragonreign.admin</span>. Hand out one capability at a time with LuckPerms, or grant the parent for full admin.</p>
<div class="docs-table-wrap">
<table class="docs-table">
<thead><tr><th>Node</th><th>Default</th><th>Grants</th></tr></thead>
<tbody>
<tr><td><span class="mono">dragonreign.bypass</span></td><td>op</td><td>Ignores all protections.</td></tr>
<tr><td><span class="mono">dragonreign.giveegg</span></td><td>everyone</td><td><span class="mono">/giveegg</span>.</td></tr>
<tr><td><span class="mono">dragonreign.command.info</span></td><td>everyone</td><td><span class="mono">/dr info</span>.</td></tr>
<tr><td><span class="mono">dragonreign.command.rewards</span></td><td>everyone</td><td><span class="mono">/dr rewards</span> (the rewards book).</td></tr>
<tr><td><span class="mono">dragonreign.command.admininfo</span></td><td>op</td><td><span class="mono">/dr admininfo</span>.</td></tr>
<tr><td><span class="mono">dragonreign.command.gui</span></td><td>op</td><td>The settings menu.</td></tr>
<tr><td><span class="mono">dragonreign.command.history</span></td><td>op</td><td>The history menu.</td></tr>
<tr><td><span class="mono">dragonreign.command.inbox</span></td><td>op</td><td>The staff inbox.</td></tr>
<tr><td><span class="mono">dragonreign.command.respawn</span></td><td>op</td><td>Respawn / force respawn.</td></tr>
<tr><td><span class="mono">dragonreign.command.cancel</span></td><td>op</td><td>Cancel a countdown.</td></tr>
<tr><td><span class="mono">dragonreign.command.victor</span></td><td>op</td><td>Grant/revoke Dragonlord.</td></tr>
<tr><td><span class="mono">dragonreign.command.reload</span></td><td>op</td><td>Reload the config.</td></tr>
<tr><td><span class="mono">dragonreign.victor</span></td><td>unregistered</td><td>Marks a Dragonlord — earned by serving the full tenure or granted explicitly. Deliberately not registered in plugin.yml so OP and <span class="mono">*</span> wildcards never auto-grant it.</td></tr>
<tr><td><span class="mono">dragonreign.admin</span></td><td>op</td><td>All of the above admin nodes.</td></tr>
</tbody>
</table>
</div>
</section>
<section class="docs-section" id="config">
<h2>Config</h2>
<p>The whole <span class="mono">config.yml</span> is commented in plain language, and most of it is editable live from <span class="mono">/dr gui</span>. The key knobs:</p>
<pre class="docs-code">respawn-on-inactivity:
inactivity-days: 14 # keeper gone this long -> egg respawns
staleness-days: 10 # egg left idle this long -> respawns (active holders stay safe)
rewards:
interval-minutes: 60 # active holding time per reward tier
carried-only: true # only time with the egg ON you pays; placed = paused
tiers: # each tier = console commands (%player%, %tier%)
- ["give %player% diamond 4"] # items
- ["cmi money give %player% 25000", "tempfly give %player% 5m"] # money + a flight voucher
book: # the /dr rewards book players can read
enabled: true
title: "<gold>Dragon Egg Rewards</gold>"
pages: # each entry = one page (MiniMessage); drop the list for a built-in default
- "..." # cream parchment — use dark colours
kill-bonus:
enabled: true # keeper's PvP kills also fill the reward bar
minutes: 15 # hold-time each qualifying kill adds
min-victim-playtime-hours: 2 # fresh accounts give nothing (anti-alt)
same-victim-cooldown-hours: 24 # can't farm the same player
victor:
threshold-hours: 168 # real hours of unbroken holding (7 days); losing the egg restarts it
title: "&6Dragonlord" # the title (a rendered gradient by default)
particle: DUST_COLOR_TRANSITION # aura motes; shimmer aura-color -> aura-color-2
aura-color: '#9D4EDD' # gradient start (aura-color-2: '#4ED9FF' = end)
orbit-count: 7 # wandering spirit-orbs around the player
livewire-intensity: 1.0 # how hard the orbs occasionally surge (0 = calm)
combat-reactivity: true # aura intensifies when the holder fights/sprints/is hurt
arcs-enabled: true # lightning arcs between nearby orbs
coronation-enabled: true # one-time flourish on becoming a Dragonlord
void-safety:
enabled: true # loose egg never despawns; void drops rebuild at the End
fireproof: true # loose egg immune to lava/fire; floats out of lava & water
chat:
enabled: false # turn on if your chat plugin doesn't show the title</pre>
</section>
<section class="docs-section" id="guis">
<h2>In-game menus</h2>
<ul class="docs-list">
<li><strong>Settings</strong> (<span class="mono">/dr gui</span>) — flip every rule on/off, set the inactivity/staleness days, cycle the announcement sound, jump to the placed egg, and open the other menus.</li>
<li><strong>History</strong> (<span class="mono">/dr log</span>) — newest-first list of every egg event, with who, where, and when.</li>
<li><strong>Inbox</strong> (<span class="mono">/dr inbox</span>) — staff alerts; click to mark read, shift-click to dismiss.</li>
</ul>
</section>
<section class="docs-section" id="title">
<h2>Showing the Dragonlord title</h2>
<p>The title is published through PlaceholderAPI as <span class="mono">%dragonreign_title%</span>, so any plugin that reads PlaceholderAPI can display it. Put that placeholder right after the rank prefix, before the name.</p>
<ul class="docs-list">
<li><strong>TAB</strong> — add <span class="mono">%dragonreign_title%</span> to each group's <span class="mono">tabprefix</span> (tab list) and <span class="mono">tagprefix</span> (above-head nameplate) in <span class="mono">TAB/groups.yml</span>.</li>
<li><strong>Most chat / nameplate plugins</strong> — drop <span class="mono">%dragonreign_title%</span> into their name format.</li>
</ul>
<div class="docs-callout docs-callout-warn">Some chat handlers (notably <strong>CMI's display name</strong>) don't expand external PlaceholderAPI placeholders. For those, set <span class="mono">chat.enabled: true</span> and DragonReign adds the title to a victor's chat line itself.</div>
</section>
<section class="docs-section" id="placeholders">
<h2>Placeholders</h2>
<p>With PlaceholderAPI installed, DragonReign exposes these — drop them into TAB, a scoreboard sidebar, chat, or a nameplate:</p>
<div class="docs-table-wrap">
<table class="docs-table">
<thead><tr><th>Placeholder</th><th>Shows</th></tr></thead>
<tbody>
<tr><td><span class="mono">%dragonreign_title%</span></td><td>The Dragonlord title (empty for non-victors).</td></tr>
<tr><td><span class="mono">%dragonreign_owner%</span></td><td>The egg holder's name, or <span class="mono">none</span>.</td></tr>
<tr><td><span class="mono">%dragonreign_reset_in%</span></td><td>Friendly time until the egg next resets, e.g. <span class="mono">5d 3h</span> (or <span class="mono">—</span>).</td></tr>
<tr><td><span class="mono">%dragonreign_reset_seconds%</span></td><td>Raw seconds until reset (for scoreboard math), or -1.</td></tr>
<tr><td><span class="mono">%dragonreign_inactivity_in%</span> · <span class="mono">%dragonreign_staleness_in%</span></td><td>The two reset timers, separately.</td></tr>
<tr><td><span class="mono">%dragonreign_countdown%</span></td><td>Seconds left in an active respawn countdown (0 if none).</td></tr>
<tr><td><span class="mono">%dragonreign_reward_tier%</span></td><td>The owner's current reward tier.</td></tr>
<tr><td><span class="mono">%dragonreign_is_victor%</span> · <span class="mono">%dragonreign_has_owner%</span> · <span class="mono">%dragonreign_countdown_active%</span></td><td>Booleans (<span class="mono">true</span>/<span class="mono">false</span>).</td></tr>
</tbody>
</table>
</div>
<div class="docs-callout">Example TAB sidebar lines:<br><span class="mono">'&5✦ &fDragon Egg: %dragonreign_owner%'</span><br><span class="mono">'&5✦ &fResets in: %dragonreign_reset_in%'</span></div>
</section>
<section class="docs-section" id="faq">
<h2>FAQ</h2>
<div class="docs-grid">
<div class="docs-grid-item"><h4>Can the egg ever be lost or duped?</h4><p>No. There's always exactly one egg; void drops are rebuilt at the End, and the dupe/exploit paths are closed.</p></div>
<div class="docs-grid-item"><h4>Does it lag the server?</h4><p>No. Everything keys off a single egg with interval-based checks — no per-tick scans.</p></div>
<div class="docs-grid-item"><h4>Do I need PlaceholderAPI / TAB / CMI?</h4><p>No. They're optional hooks. DragonReign runs fine on a bare server.</p></div>
<div class="docs-grid-item"><h4>How do I test it as an admin?</h4><p>Ops bypass protections, so test from a non-op alt or use <span class="mono">/dr victor grant</span> and <span class="mono">/dr respawn force</span>.</p></div>
</div>
</section>
<a href="index.html" class="docs-back">← Back to home</a>
</main>
</div>
<footer class="footer">
<div class="footer-inner">
<p>DragonReign — a free, open-source Paper plugin by <a href="https://github.com/ThConMan">ThConMan</a>. MIT licensed.</p>
</div>
</footer>
<script>
function toggleMenu() { document.getElementById('nav-links').classList.toggle('open'); }
// Highlight the current section in the sidebar.
const links = [...document.querySelectorAll('.docs-toc a')];
const sections = links.map(a => document.querySelector(a.getAttribute('href')));
window.addEventListener('scroll', () => {
let i = sections.findIndex((s, n) => s && s.getBoundingClientRect().top > 90 && (n === 0 || sections[n-1].getBoundingClientRect().top <= 90));
const active = i === -1 ? links.length - 1 : Math.max(0, i - 1);
links.forEach((a, n) => a.classList.toggle('active', n === active));
});
</script>
<script src="js/motion.js" defer></script>
</body>
</html>