Nova UHC icon

Nova UHC -----

Revolutionary all-in-one Minecraft framework for creating and managing UHC games.



NovaUHC- v2.6.0
# NovaUHC — Notes de mise à jour

---

## [2.6.0] — 2026-05-03

### Nouveaux modules

#### Module `loupgarou` (Loup Garou UHC)
- Nouveau scénario à rôles inspiré du Loup Garou de Thiercelieux.
- ~40 rôles villageois : Analyste, Ancien, Astronome, Aubergiste, Avocat, Bienfaiteur, Bohémienne, Bouc Émissaire, Chaman, Chasseur, Citoyen, Conteuse, Corbeau, Détective, Druide, Ermite, Espion, Fossoyeur, Garde, Idiot du Village, Illusionniste, Interprète, Jumeaux, Lapin, Mire, Montreur d'Ours, Oracle, Petite Fille, Prêtresse, Prophétesse, Renard, Salvateur, Serviteur, Simple, Sœur, Sorcière, Vaudouiste, Vieux Sage, Voyante.
- Sous-packages dédiés : `loups/`, `solitaires/`, `hybrides/`, `couple/`, `vote/`, `cycle/`, `managers/`.
- Système d'aura LG (LIGHT/DARK) avec `LGAuraManager` et lock automatique pour Ange/Prêtresse/GMW/Loup Blanc.
- `LGRole` base : pattern `getEffects()` / `getDayEffects()` / `getNightEffects()` appliqué automatiquement via `applyInfiniteEffects` aux transitions jour/nuit.
- Commande `/lg` (remplace `/ww`) avec sous-commandes (dont `/lg list`).

#### ⚔️ Modules `demonslayerv3` & `demonslayerv4` (Demon Slayer UHC)
- **demonslayerv3** : refonte complète avec 22 démons (Akaza, Daki, Doma, Enmu, Furuto, Gyokko, Gyutaro, Hairo, Hantengu, Kaigaku, Kokushibo, Kumo, Kyogai, Muzan, Nakime, Rui, Susamaru, Yahaba…), 21 pourfendeurs (Tanjiro, Nezuko, Zenitsu, Inosuke, Genya, Gyomei, Kyojuro, Mitsuri, Muichiro, Obanai, Sanemi, Shinobu, Tamayo, Tengen, Tomioka, Yushiro, Kanao, Kanae, Hotaru, Kagaya, Sabito, Urokodaki) et 4 solitaires (Jigoro, Kaigaku, Shinjuro, Yoriichi).
- Systems dédiés : `assassin/`, `caverne/`, `chateau/`, `infection/`, `nichirin/`, `train/`.
- **demonslayerv4** : variante v4 avec son propre roster.
- Configs : `core/src/main/resources/api/scenario/special/demonslayerv3.yml`, `demonslayerv4.yml`.

#### Module `chainsawman` (Chainsaw Man UHC)
- Scénario à pactes (87 pactes au total).
- Démons inspirés de l'œuvre : Ange, Araignée, Armes, Avenir, Bombe, Chainsaw, Chauve-souris, Cosmos, Crossbow, Électrique, Enfer, Fantôme, Fouet, Froid, Gorille, Katana, Lance-flamme, Longsword, Makima, Malédiction, Mime, Mort, Muscle, Pantins, Pierre, Poisson, Portail, Poulpe, Renard, Requin, etc.
- Utilise `ArenaMirrorManager` pour distribuer équitablement les joueurs sur deux instances clonées de l'arena (`arena` + `arena_b`).
- Config : `core/src/main/resources/api/scenario/special/chainsawman.yml`.

#### Module `disney` (Disney UHC)
- 3 camps : Gentils (Aladdin, America Chavez, Bob Razowski, Doctor Strange, Elsa, Frozone, Génie, Han Solo, Hercule, Luke Skywalker, Mr Indestructible, Mufasa, Olaf, Simba, Sulli, Zeus), Méchants (Dark Vador, Empereur Palpatine, Hadès, Iago, Jafar, Léon, Les Démons, Les Moires, Mirage, Prince Hans, Roi Runéard, Scar, Shenzi, Syndrome, Wanda Maximoff, Waternoose), Simpson (Bart, Homer, Lisa, Marge).
- Camp Duos : Belle/Bête, Colère/Dégoût, Deadpool/Wolverine, Flash/Martin.

#### Module `deathnote` (Death Note UHC)
- 5 rôles : Kira, Enquêteur (L), Mello, Near, Shinigami.

#### ⏱️ Module `timeout`
- Nouveau scénario timeout-style.

---

### Core — Nouvelles fonctionnalités

#### `ArenaMirrorManager` + `ArenaRegeneratedEvent`
- Nouveau registre central pour les "miroirs" de l'arena principale (mondes clonés type `arena_b`).
- Sync automatique chaque seconde de la worldborder (size, center, damage, warning) vers tous les miroirs enregistrés.
- `pregenAndKeep(world, radius)` : charge en RAM et protège les chunks d'un miroir contre le déchargement.
- Helpers de propagation : `propagatePVP`, `propagateTime`, `propagateGameRule`.
- `isArenaOrMirror(world)` à utiliser dans les listeners qui filtrent par world.
- Nouvel event `ArenaRegeneratedEvent` émis par `LoadingChunkTask` à la fin du pregen — permet aux modules de re-cloner B après régénération.

#### Scénario `ObsiBuff`
- Nouveau scénario normal : casser de l'obsidienne avec une pioche applique Haste III pendant N secondes et drop `dropAmount` obsidiennes au lieu d'1.
- Anti-farm via metadata sur les blocs posés par un joueur.

#### `ScenarioRandomEventsUi`
- Nouvelle UI dédiée pour parcourir et configurer tous les `RandomGameEvent` d'un scénario depuis le menu.

#### Utilitaires
- `LoreWrap` : utilitaire pour wrap automatiquement les lores d'item (gestion des sauts de ligne longs).
- `VariableFormatter` : formatage centralisé des valeurs de variables (TIME, PERCENT, etc.) pour l'affichage UI.

#### Nouvelles schematics
- `core/src/main/resources/api/schem/normalhouse.schematic`
- `core/src/main/resources/api/schem/sanctuaire.schematic`

#### ️ Système Revive supprimé
- Suppression de `ReviveAbility` (template) et `ReviveCMD` (commande `/revive`).
- Les scénarios qui souhaitent un mécanisme de résurrection doivent désormais l'implémenter directement sans passer par cette abstraction.

---

### Module `ultimate` — Nouveaux scénarios

#### ️ `TaupeDefender`
- Nouveau scénario style "TaupeGun défensif" avec sa propre commande `TaupeDefenderCMD`.
- Lang dédié : `TaupeDefenderLang` (`core/.../lang/special/`).
- Config : `core/src/main/resources/api/scenario/special/taupedefender.yml`.

#### `TeamSwapperV3` + `TeamSwapperClassic` + `TSClass`
- Refonte du TeamSwapper avec deux variantes (Classic et V3) et un menu de cargaison.
- Lang dédié : `TeamSwapperV3Lang` (`core/.../lang/scenario/`).

#### `Switch` (teamswitch)
- Nouveau scénario : swap aléatoire de tous les joueurs entre les teams à intervalle régulier (`swapInterval`, `swapStartTime`).
- Lang dédié : `SwitchLang` (`core/.../lang/scenario/`).

---

### Templates & docs
- Ajout de `templates/HOWTO.md` : checklist qualité pour scaffolder un nouveau module à partir des squelettes `templates/classic/` et `templates/role/`.

---

## [2.5.0] — 2026-04-05

### Nouvelles fonctionnalités

#### Système de couleur TAB par-viewer (`PlayerColorManager`)
- Nouveau manager `PlayerColorManager` : colorise le nom d'un joueur dans le TAB uniquement pour un viewer spécifique, via paquets NMS (aucune pollution du scoreboard global).
- Nouvelle commande `/color` : ouvre un color picker pour choisir la couleur d'un joueur dans son propre TAB.
- Nouvelles UIs : `ColorPickerUi`, `ColorPlayerListUi`.
- Les préférences sont stockées dans `UHCPlayer.tabColorPrefs` (Map<UUID, ChatColor>).
- Réapplication automatique à la connexion/déconnexion.

#### ⚙️ UI de configuration des effets (`EffectsConfigUi`)
- Nouveau menu `EffectsConfigUi` accessible depuis `DefaultUi` pour configurer par joueur les multiplicateurs de combat :
- `forcePercent` — pourcentage de force (dégâts en mêlée)
- `forceCriticPercent` — pourcentage de dégâts critiques
- `resistancePercent` — pourcentage de résistance aux dégâts
- Ces valeurs sont lues dynamiquement par `AttackNerfEvent` et `ResistanceNerfEvent`.

#### Scoreboard amélioré
- Ajout de nouvelles clés dans `ScoreboardLang` pour afficher des informations supplémentaires en temps réel.

#### ️ UI LimiteStuff étendue
- `LimiteStuffbyPlayerUi` : nouvelles entrées de configuration pour les limites par joueur.
- Nouvelles clés `LimiteStuffUiLang` pour les labels correspondants.

---

## [2.4.0] — 2026-04-04

### Nouvelles fonctionnalités

#### Module DanDaDan (nouveau module)
- Nouveau module `dandadan` avec **30+ rôles** inspirés de DanDaDan, JoJo's Bizarre Adventure, Chainsaw Man, Doom Eternal, et d'autres univers.
- Rôles disponibles : Acrobatique, Bamora, Caesar, CSG, Denji, Devilman, Dio, Doom Slayer, Enenra, Flatwoods, Jet Booster, Jiangshi, Jiji, Joseph, Jotaro, Kashimoto, Kinta, Kira, Mantis, Minotaure, Momo, Nessie, Oeil Maléfique, Okarun, Payase, Polnareff, Reiko, Reze, Rohan, Rokuro, Seiko, Tsuchinoko, Umbrella.
- Dimension Yokai custom : portails, zones Yokai, NPC de défis (`TrialNpcManager`), gestionnaire de monde dédié.
- UI de configuration DanDaDan : `DanDaDanConfigUi`, `DanDaDanYokaiListUi`.

#### Système de Revive
- Nouvelle classe abstraite `ReviveAbility` : base pour implémenter des mécaniques de résurrection dans les scénarios de rôles.
- Nouvelle commande `/revive` : permet de ressusciter un joueur si le scénario actif le supporte.

#### ScenarioBuilder — scénarios inline
- Nouveau `ScenarioBuilder` : crée des scénarios simples sans classe dédiée, via DSL fluent.
- Hooks disponibles : `onBreak`, `onEntityDeath`, `onStart`, `onSec`, `onGameStart`, `onDeath`, `onCraft`, `onDrop`, `onPlayerInteract`, `onPlace`, `onMove`, `onBow`, `onHit`, `onDamage`, `onConsume`, `onChatSpeak`, `onKill`, `onPickUp`, `noFood`, `onPortal`, `onFurnaceBurn`, `onPlayerInteractEntity`.

#### Système d'événements aléatoires (`RandomGameEvent` + `RandomEventScheduler`)
- Nouveau système pour déclarer des événements probabilistes dans les scénarios.
- Chaque événement dispose de : `enabled`, `chance`, `minGameTime`, `maxGameTime`, `repeating` — tous configurables via l'UI in-game.
- `RandomEventScheduler` planifie l'exécution au moment aléatoire dans la fenêtre configurée.
- `RandomEventConfigUi` : UI auto-générée pour configurer chaque événement depuis le menu scénario.

#### RoleDescription DSL
- Nouveau `RoleDescription` : DSL fluent pour envoyer la description d'un rôle à un joueur avec hover.
- Méthodes : `.separator()`, `.line()`, `.hover()`, `.space()`, `.raw()`, `.send()`.
- Remplace les appels directs à `HoverUtils.sendHoverLine`.

#### WinCondition personnalisée
- Nouvelle interface `WinCondition` : permet de définir une logique de victoire custom pour les `ScenarioRole`.
- Injection via `scenario.setWinCondition(playerRoles -> ...)`.

#### ️ UI Dispatcher pour ScenarioRole
- Nouveau `ScenarioRoleDispatcherUi` : menu intermédiaire pour les `ScenarioRole` qui ont à la fois des `@ScenarioVariable` et des rôles.
- `[Config des Rôles]` → navigation camps/rôles
- `[Config du Scénario]` → `ScenarioVariableUi`

#### ️ VariableSerializer
- Nouveau `VariableSerializer` : sérialisation/désérialisation unifiée pour `Ability`, `Role`, et `Scenario` via leurs annotations (`@AbilityVariable`, `@RoleVariable`, `@ScenarioVariable`). Supprime le code de sérialisation manuel.


#### ️ Réorganisation des templates d'Ability
- Les classes de base `PassiveAbility`, `UseAbility`, `BowAbility`, `MeleeAbility`, `CommandAbility` déplacées dans le package `ability/template/`.
- Shims de compatibilité maintenus pour `UseAbiliy` et `BowAbbility`.

#### Dossier `templates/` — squelettes prêts à l'emploi
- Nouveau dossier `templates/` à la racine avec des fichiers sources complets pour créer un nouveau module de zéro.
- `templates/classic/` : scénario classique (sans rôles) — `MyScenario.java` + `MyScenarioLang.java`.
- `templates/role/` : module complet avec rôles — `Main.java`, `MyScenarioUHC.java`, `MyRole.java`, `MyCamps.java`, enums lang (`DescLang`, `VarLang`, `Lang`), exemple de rôle + ability, `plugin.yml`, `build.gradle`.

---

## [2.3.1] — 2026-03-08

### Patch compilation Ultimate (part. 1)

- `SoulBrother.java` — import `LangManager` + remplacement `TEAM_REDEFINED_AUTO`.
- `TeamAtFirstSeigth.java` — import `LangManager` + remplacement `TEAM_REDEFINED_AUTO`.
- `TaupeCMD.java` — import `LangManager` + `DISABLE_ACTION` × 2.
- `TaupeGun.java` — import `LangManager` + 6 remplacements `CommonString`.
- `SlaveMarketUi.java` — import `LangManager` + `DISABLE_ACTION`.
- `SlaveMarketLang.java` — `basePath` `"message"` → `""`.
- `SkyHigthLang.java` — `basePath` `"message"` → `""`.

---

## [2.1.0] — 2026-02-26

### ✏️ Migration UI — Messages & Titres (24 classes)

Toutes les chaînes codées en dur remplacées par des appels `LangManager` :

| Fichier | Lang Enum créé |
|---------|----------------|
| `ScenariosUi.java` | `ScenariosUiLang` |
| `TeamConfigUi.java` | `TeamConfigUiLang` |
| `ConfigVarUi.java` | `ConfigVarUiLang` |
| `CenterUi.java` | `CenterUiLang` |
| `BorderConfig.java` | `BorderConfigLang` |
| `WorldUi.java` | `WorldUiLang` |
| `LimiteStuffUi.java` | `LimiteStuffUiLang` |
| `ScenarioVariableUi.java` | `ScenarioVariableUiLang` |
| `OrePopulatorUi.java` | `OrePopulatorUiLang` |
| `ConfirmMenu.java` | `CommonLang` (existant) |
| `inGameScenario.java` | `inGameScenarioLang` |
| `MumbleUi.java` | `MumbleUiLang` |
| 12 autres UI | enums dédiés |

---

## [2.0.0] — 2026-02-26

### ️ Refonte complète du système de traduction

#### Nouveaux composants (Core)

- **`Lang` (interface)** — interface centrale remplaçant `CommonString`.
- Supporte les placeholders dynamiques via `Map<String, Object>`.
- Méthodes : `send(Player)`, `sendAll()`, `getMessage(Player)`, `getDefaultMessage()`.
- Fallback en cascade : locale joueur → locale serveur → message par défaut.

- **`LangManager` (singleton)** — gestionnaire centralisé de toutes les traductions.
- Auto-génération des fichiers `.yml` par locale (`fr_FR.yml`, `en_US.yml`).
- Enregistrement dynamique des enums via `register(ScenarioLang[])`.
- Résolution par locale par joueur à chaque envoi.

- **`CommonLang` (enum)** — remplacement complet de `CommonString` (80+ messages).
- Clés migrées : `TEAM_REDEFINED_AUTO`, `DISABLE_ACTION`, `LOBBY_CHAT_FORMAT`, `CANT_TALK_DEATH`, `CHAT_DISABLED`, `CHAT_GLOBAL_FORMAT`, etc.
- Support bilingue FR/EN pour chaque entrée.

- **`ScenarioLang` (interface)** — implémentée par tous les enums de scénario.
- Méthodes : `getBasePath()`, `getConfig()`, `setConfig()`, `getDefaultMessage()`, `getScenarioPlaceholders(UHCPlayer)`.

#### Notes de migration

**Pattern de remplacement standard :**

```java
// ❌ Ancien
CommonString.TEAM_REDFINIED_AUTO.sendAll();
CommonString.DISABLE_ACTION.send(player);
String msg = CommonString.LOBBY_CHAT_FORMAT.getMessage(player);

// ✅ Nouveau
LangManager.get(CommonLang.TEAM_REDEFINED_AUTO).sendAll();
LangManager.get(CommonLang.DISABLE_ACTION).send(player);
String msg = LangManager.get(CommonLang.LOBBY_CHAT_FORMAT).getMessage(player);
```

**Enregistrement des Lang enums dans `Main.java` :**

```java
LangManager l = LangManager.get();
l.register(MyScenarioLang.values());
l.register(AnotherScenarioLang.values());
```

**Règle `getBasePath()`** — tous les enums `ScenarioLang` doivent retourner `""` :

```java
@Override
public String getBasePath() {
return ""; // ✅ Correct
// return "message"; ❌ Incorrect — génère des clés yml cassées
}
```

#### What's Changed (PRs)

- Refactor `CommonString` for improved message handling and localization — @Sithey in #1
- Add default messages for various scenario languages — @Sithey in #2
- Delay player teleportation to lobby spawn by one tick for smoother transitions — @Sithey in #3

**New Contributors :** @Sithey a fait sa première contribution dans #1.

**Full Changelog :** https://github.com/lezombie3D/Nova-UHC/commits/1.3.0

---

## v0.3 — (commits précédents)

- Ajout de `TpMeetup` scenario.
- `ReconnectionManager` : support de la reconnexion en cours de partie.
- Amélioration null-safety de `LangManager`.
- Nettoyage de `FixedPlayerBucketConnection` et événements associés.
- Amélioration du logging `FallenKingdom`.
----------, May 3, 2026
Resource Information
Author:
----------
Total Downloads: 90
First Release: Feb 4, 2026
Last Update: May 3, 2026
Category: ---------------
All-Time Rating:
1 ratings
Find more info at nova-code.gitbook.io...
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings