Π‘Π΄Π΅Π»Π°ΡΡ ΠΏΡΠΎΠ΅ΠΊΡ ΠΏΠΎΠ΄ ΠΊΠ»ΡΡ, ΠΏΠ΅ΡΠ΅ΡΠ°Π±ΠΎΡΠ°ΡΡ Π³ΠΎΡΠΎΠ²ΡΡ ΠΈΠ³ΡΡ, ΠΠ΅ΡΠ΅Π΄Π΅Π»Π°ΡΡ ΠΌΠΎΠ΄Ρ. ΠΠ³ΡΠ°: Π΄Π»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π½Π° ΠΠ. ΠΠ³ΡΠ°: ΠΌΠ°ΡΡΠΎΠ²Π°Ρ ΠΎΠ½Π»Π°ΠΉΠ½. ΠΠ°Π½Ρ: RPG. ΠΠ»Π°ΡΡΠΎΡΠΌΠ°: Java, Forg. ΠΡΠ°ΡΠΈΠΊΠ°: 3D. ### Π’Π Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ° β JJK: Jujutsu Kaisen Craft #### Π¦Π΅Π»Ρ ΠΠ½Π΅ΡΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΉ ΠΌΠΎΠ΄ΠΏΠ°ΠΊ: Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π΄Π»Ρ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΈΠΈ; ΡΠ±ΡΠ°ΡΡ/ΠΏΠ΅ΡΠ΅ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π΅Π±Π°Π»Π°Π½ΡΠ½ΡΠ΅ ΠΌΠ΅Ρ
Π°Π½ΠΈΠΊΠΈ; ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΠ΅ΠΈΠ³ΡΠ°Π±Π΅Π»ΡΠ½ΠΎΡΡΡ; ΡΠ΄Π»ΠΈΠ½ΠΈΡΡ ΠΏΡΠΎΠΊΠ°ΡΠΊΡ; ΡΠ½ΠΈΠ·ΠΈΡΡ Π²Π»ΠΈΡΠ½ΠΈΠ΅ Β«ΡΡΠ΅Π±ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΡ
Β» ΠΏΠ΅ΡΡΠΎΠ½Π°ΠΆΠ΅ΠΉ; ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΡΠ΅ΠΌΡΡ ΡΠΌΠ΅ΡΡΠ½ΠΎΡΡΡ ΠΈΠ³ΡΠΎΠΊΠΎΠ². --- ### 1. ΠΡΠ°ΡΠΊΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π·Π°Π΄Π°Ρ Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄Π΅Π»Π°ΡΡ ΠΌΠΎΠ΄ΠΏΠ°ΠΊ ΡΠ±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ, ΡΠ΅ΠΈΠ³ΡΠ°Π±Π΅Π»ΡΠ½ΡΠΌ ΠΈ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΌ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΈΠ΅ΠΉ, Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΡΠΆΠ΅ΡΠ° ΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ
ΠΌΠΎΠ΄ΠΎΠ². --- ### 2. Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ - **ΠΠ΄ΠΌΠΈΠ½?ΠΊΠΎΠΌΠ°Π½Π΄Ρ**: kick, kill, revive, setlevel, givexp, giveresource, setrole, freeze, tp, togglesystem, logs. - **ΠΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅**: Π²ΡΠ΅ Π°Π΄ΠΌΠΈΠ½?Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΈ ΡΠΌΠ΅ΡΡΠΈ Π² JSON?Π»ΠΎΠ³Π°Ρ
Ρ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠΌΠΈ. - **ΠΠ°Π»Π°Π½Ρ**: ΠΎΡΠΊΠ»ΡΡΠΈΡΡ/ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΡΡ ΠΌΠ΅Ρ
Π°Π½ΠΈΠΊΠΈ one?shot, Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΡΡ
ΡΠ΅ΡΡΡΡΠΎΠ², ΠΈΠ³Π½ΠΎΡ Π±ΡΠΎΠ½ΠΈ, ΠΏΠ΅ΡΠΌΠ°Π½Π΅Π½ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ. - **ΠΠΎΠ½ΡΡ?ΠΌΠ΅Ρ
Π°Π½ΠΈΠΊΠΈ**: Emergency Shield (Π°Π²Π°ΡΠΈΠΉΠ½ΡΠΉ ΡΠΈΡ), ΡΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅, Π°Π½ΡΠΈ?ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Ρ diminishing returns. - **Π Π΅ΠΈΠ³ΡΠ°Π±Π΅Π»ΡΠ½ΠΎΡΡΡ**: ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠ»ΡΡΠ°ΠΉΠ½ΡΡ
ΠΌΠΈΡΠΎΠ²ΡΡ
ΡΠΎΠ±ΡΡΠΈΠΉ, ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
ΡΡΠ°ΡΡΠΎΠ²ΡΡ
ΡΡΠ»ΠΎΠ²ΠΈΠΉ, Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΡ
ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠΎΠ², ΠΌΠ΅ΡΠ°ΠΏΡΠΎΠ³ΡΠ΅ΡΡΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΅ΡΡΠΈΡΠΌΠΈ. - **ΠΡΠΎΠΊΠ°ΡΠΊΠ°**: ΡΠ²Π΅Π»ΠΈΡΠΈΡΡ max level (ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΡΠ΅ΠΌΠΎ), Π½ΠΎΠ²Π°Ρ ΠΊΡΠΈΠ²Π°Ρ XP, ΡΠ°Π·Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° ΠΌΠ΅Ρ
Π°Π½ΠΈΠΊ ΠΊΠ°ΠΆΠ΄ΡΠ΅ N ΡΡΠΎΠ²Π½Π΅ΠΉ, ΡΠ΅Π΄ΠΊΠΈΠ΅ ΡΠ΅ΡΡΡΡΡ Π΄Π»Ρ Π°ΠΏΠ³ΡΠ΅ΠΉΠ΄ΠΎΠ². - **Π‘ΠΎΡΠΈΠ°Π»ΡΠ½ΠΎΠ΅ Π²Π»ΠΈΡΠ½ΠΈΠ΅**: ΠΊΠ²ΠΎΡΡ Π½Π° Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠ΅ΠΏΡΡΠ°ΡΠΈΠΈ, Π³ΠΎΠ»ΠΎΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π»Ρ Π²Π°ΠΆΠ½ΡΡ
ΡΠ΅ΡΠ΅Π½ΠΈΠΉ, Π»ΠΈΠΌΠΈΡ Π½Π΅Π³Π°ΡΠΈΠ²Π½ΡΡ
ΡΡΡΠ΅ΠΊΡΠΎΠ² Π½Π° ΡΠ΅Π»Ρ. - **Π‘ΠΌΠ΅ΡΡΡ ΠΈΠ³ΡΠΎΠΊΠ°**: Π·ΠΎΠ½Ρ Ρ ΡΠ°Π·ΡΠ΅ΡΡΠ½Π½ΠΎΠΉ ΡΠΌΠ΅ΡΡΠ½ΠΎΡΡΡΡ, ΡΠ΅ΡΠΏΠ°ΡΠ½, ΠΏΠΎΡΠ΅ΡΡ ΡΠ΅ΡΡΡΡΠΎΠ², ΠΎΠΊΠ½ΠΎ Π΄Π»Ρ Π²ΠΎΡΠΊΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΠΎΡΠ·Π½ΠΈΠΊΠΎΠΌ, anti?grief Π»ΠΈΠΌΠΈΡΡ. --- ### 3. ΠΠΎΠΌΠ°Π½Π΄Ρ (ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ) - `/jjk admin kick
[reason]` - `/jjk admin kill [reason]` - `/jjk admin revive ` (mode: full|partial) - `/jjk admin setlevel ` - `/jjk admin givexp ` - `/jjk admin giveresource ` - `/jjk admin setrole ` - `/jjk admin freeze ` - `/jjk admin tp ` - `/jjk admin togglesystem ` - `/jjk admin logs [filter]` --- ### 4. ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ (ΡΠ°ΠΉΠ»Ρ Π² `config/jjk/`) - **admin.yml** β ΠΏΡΠ°Π²Π° ΡΠΎΠ»Π΅ΠΉ: SuperAdmin, Admin, Moderator, Auditor. - **balance.yml** β ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π±ΡΠΎΠ½ΠΈ, Emergency Shield, ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ ΡΡΡΠ΅ΠΊΡΠΎΠ² (maxDurationSeconds, drWindowSeconds, drMultiplier). - **progression.yml** β maxLevel, baseXP, expFactor, levelsPerTier, xp.dailyCap, xp.sessionCap. - **events.yml** β ΡΠΏΠΈΡΠΎΠΊ ΡΠΎΠ±ΡΡΠΈΠΉ: id, weight, duration, effects. - **social.yml** β actionQuota, quotaWindowSeconds, reputationDecayPerDay, maxNegativeEffectsPerTarget. - **death.yml** β zones.deathAllowed[], respawn.baseSeconds, death.lossPercent, reviveWindowSeconds, antiGrief.killLimit, killLimitWindow. --- ### 5. Π€ΠΎΡΠΌΡΠ»Ρ (Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ) - **XP:** \(\displaystyle xpForLevel(n)=\lfloor baseXP\cdot n^{expFactor}\rfloor\). - **Π£ΡΠΎΠ½ ΠΏΠΎΡΠ»Π΅ Π±ΡΠΎΠ½ΠΈ:** `effectiveDamage = baseDamage * (1 - armor / (armor + 100))`. - **DR Π΄Π»Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ:** ΠΏΠΎΠ²ΡΠΎΡΠ½ΡΠΉ CC Π² `drWindowSeconds` ? Π΄Π»ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ *= `drMultiplier`. - **Emergency Shield:** Π΅ΡΠ»ΠΈ `incomingDamage >= thresholdPercent * maxHP` ? `absorb = min(maxAbsorb, incomingDamage * absorbPercent)`. --- ### 6. Π‘ΠΎΠ±ΡΡΠΈΡ ΠΈ API (ΠΊΡΠ°ΡΠΊΠΎ) - `AdminService.kick(player, reason)` - `AdminService.kill(player, reason)` - `AdminService.revive(player, mode)` - `LevelService.addXP(player, amount)` - `EventManager.spawnRandomEvent()` - `DeathService.onPlayerDeath(victim, killer, cause)` - Π‘ΠΎΠ±ΡΡΠΈΡ: `onPlayerDamage(attacker, victim, damage, damageType)`, `onApplyControlEffect(actor, target, effect)`, `onLevelUp(player, newLevel)`. --- ### 7. Π₯ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ
- **ΠΠ³ΡΠΎΠΊΠΈ:** `players/.json` Ρ ΠΏΠΎΠ»ΡΠΌΠΈ `uuid, level, xp, stats, reputation, metaProgression, lastDeath`. - **ΠΠΎΠ³ΠΈ:** `logs/jjk_admin.log`, `logs/jjk_deaths.log` Π² JSON, ΡΠΎΡΠ°ΡΠΈΡ 90 Π΄Π½Π΅ΠΉ. - **ΠΠΎΠ½ΡΠΈΠ³ΠΈ:** `config/jjk/*.yml`. --- ### 8. Acceptance criteria 1. ΠΡΠ΅ Π°Π΄ΠΌΠΈΠ½?ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΈ ΠΏΠΈΡΡΡ Π»ΠΎΠ³. 2. One?shot ΡΡΠ΅Π½Π°ΡΠΈΠΈ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½Ρ Π² ΡΠ΅ΡΡΠΎΠ²ΠΎΠΉ ΡΡΠ΅Π΄Π΅. 3. CC Π΄Π»ΠΈΡΡΡ Π½Π΅ Π΄ΠΎΠ»ΡΡΠ΅ `control.maxDurationSeconds` ΠΈ ΠΏΠΎΠ΄ΡΠΈΠ½ΡΠ΅ΡΡΡ DR. 4. XP ΠΊΡΠΈΠ²Π°Ρ ΠΈ ΡΠ°Π·Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΏΠΎ ΡΡΠΎΠ²Π½ΡΠΌ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ. 5. Π‘ΠΎΠ±ΡΡΠΈΡ Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ ΠΏΠΎ Π²Π΅ΡΠ°ΠΌ; loot Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΡΡΡ Ρ Π·Π°Π΄Π°Π½Π½ΡΠΌΠΈ ΡΠ°Π½ΡΠ°ΠΌΠΈ. 6. Π Π΅ΠΏΡΡΠ°ΡΠΈΡ Π²Π»ΠΈΡΠ΅Ρ Π½Π° ΡΠΈΠ»Ρ ΡΠΎΡΠΈΠ°Π»ΡΠ½ΡΡ
Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ; ΠΊΠ²ΠΎΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ. 7. Π‘ΠΌΠ΅ΡΡΡ Π»ΠΎΠ³ΠΈΡΡΠ΅ΡΡΡ; ΡΠ΅ΡΠΏΠ°ΡΠ½ ΠΈ ΠΏΠΎΡΠ΅ΡΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ; Π°Π΄ΠΌΠΈΠ½?revive ΡΠ°Π±ΠΎΡΠ°Π΅Ρ. 8. Π‘Π΅ΡΠ²Π΅Ρ Π²ΡΠ΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠ΅Π»Π΅Π²ΠΎΠΉ ΠΏΠΎΡΠΎΠ³ ΠΈΠ³ΡΠΎΠΊΠΎΠ² Π±Π΅Π· Π΄Π΅Π³ΡΠ°Π΄Π°ΡΠΈΠΈ TPS Π±ΠΎΠ»Π΅Π΅ 10% (ΠΏΠΎΡΠΎΠ³ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°ΡΡ). --- ### 9. ΠΠ»Π°Π½ ΡΠ°Π±ΠΎΡ (ΠΌΠΈΠΊΡΠΎ?ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ) 1. Π‘Π±ΠΎΡ ΡΠΏΠΈΡΠΊΠ° Π½Π΅Π±Π°Π»Π°Π½ΡΠ½ΡΡ
ΠΌΠ΅Ρ
Π°Π½ΠΈΠΊ ΠΈ ΡΠΊΡΠΏΠΎΡΡ Π΄Π°Π½Π½ΡΡ
ΠΈΠ³ΡΠΎΠΊΠΎΠ² β 1β2 Π΄Π½Ρ. 2. ΠΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ°: ΠΊΠΎΠ½ΡΠΈΠ³ΠΈ, Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, Π±Π°Π·ΠΎΠ²ΡΠ΅ ΡΠ΅ΡΠ²ΠΈΡΡ β 2β3 Π΄Π½Ρ. 3. AdminModule: ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈ Π»ΠΎΠ³ΠΈ β 3β5 Π΄Π½Π΅ΠΉ. 4. CombatModule: Π±ΡΠΎΠ½Ρ, CC, Emergency Shield β 5β8 Π΄Π½Π΅ΠΉ. 5. ProgressionModule: ΡΡΠΎΠ²Π½ΠΈ, XP, ΡΠ°Π»Π°Π½ΡΡ β 4β6 Π΄Π½Π΅ΠΉ. 6. EventModule + Loot β 3β5 Π΄Π½Π΅ΠΉ. 7. SocialModule: ΡΠ΅ΠΏΡΡΠ°ΡΠΈΡ, ΠΊΠ²ΠΎΡΡ β 3β4 Π΄Π½Ρ. 8. DeathModule ΠΈ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ β 2β3 Π΄Π½Ρ. 9. Π’Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΏΡΠ°Π²ΠΊΠΈ β 5β10 Π΄Π½Π΅ΠΉ. --- ### 10. Π§ΡΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ - ΠΠΎΡΡΡΠΏ ΠΊ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ ΠΌΠΎΠ΄ΠΎΠ². - ΠΠΊΡΠΏΠΎΡΡ ΡΠ΅ΠΊΡΡΠΈΡ
Π΄Π°Π½Π½ΡΡ
ΠΈΠ³ΡΠΎΠΊΠΎΠ². - Π‘ΠΏΠΈΡΠΎΠΊ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΡ
Π½Π΅Π±Π°Π»Π°Π½ΡΠ½ΡΡ
ΠΌΠ΅Ρ
Π°Π½ΠΈΠΊ (ΡΠ°ΠΉΠ»Ρ/ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ). - Π‘Π΅ΡΠ²Π΅Ρ?ΡΡΠ΅Π½Π΄ Π΄Π»Ρ ΡΠ΅ΡΡΠΎΠ². - ΠΠΎΠ½ΡΠ°ΠΊΡ Π»ΠΈΡΠ° Π΄Π»Ρ ΡΡΠΎΡΠ½Π΅Π½ΠΈΠΉ ΠΏΠΎ ΠΌΠ΅Ρ
Π°Π½ΠΈΠΊΠ°ΠΌ. --- ### ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅ ΠΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΡΠ΅ΠΌΡ ΡΠ΅ΡΠ΅Π· ΡΠ°ΠΉΠ»Ρ Π² `config/jjk/`. ΠΠΎΠ³ΠΈ β Π² JSON?ΡΠΎΡΠΌΠ°ΡΠ΅. ΠΡΠ΅ Π°Π΄ΠΌΠΈΠ½?Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΡΡΠ΅Π±ΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΏΡΠ°Π² ΠΈ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ Π² Π»ΠΎΠ³.