▶️ ЗАБЕРИ СВОИ 8 ПОДАРКОВ 🎁 ПРИ СОЗДАНИИ СВОЕГО МАЙНКРАФТ СЕРВЕРА
Моды/OmniGen
OmniGen

OmniGen

Stop Server Lag. Start Shared Generation. Unleash your CPU with OmniGen's distributed architecture.

Оцените первым
183
4
Все версииOmniGen 0.3.24-BETA

OmniGen 0.3.24-BETA

Beta27.05.2026

Список изменений

OmniGen v0.3.24-BETA — Changelog

⚠️ Version non testée en conditions réelles Cette version a été codée mais n'a pas encore pu être testée en multijoueur faute de disponibilité. Elle est publiée en avance pour les early adopters. Si vous rencontrez des régressions par rapport à la v0.3.23, revenez à cette dernière en attendant un correctif.


Nouveauté principale — Grille virtuelle alignée 5×5

Le problème ciblé

En v0.3.23, chaque worker générait un bloc 5×5 centré exactement sur le chunk demandé. Résultat : deux workers traitant des chunks proches l'un de l'autre pouvaient avoir des blocs 5×5 qui se chevauchent de façon asymétrique. Les frontières entre blocs tombaient à des positions différentes selon l'ordre d'arrivée des requêtes → artefacts visuels visibles tous les quelques chunks en exploration multijoueur.

La solution

Le serveur ancre désormais tous les blocs 5×5 sur une grille virtuelle fixe, alignée depuis l'origine du monde avec un pas de 5 chunks :

Centre du bloc = ( floor(cx / 5) × 5 + 2 ,  floor(cz / 5) × 5 + 2 )

Conséquence : les frontières inter-blocs tombent toujours aux mêmes coordonnées absolues, quelle que soit l'ordre des requêtes ou le nombre de workers. Deux workers calculant des blocs adjacents utilisent exactement la même position → même seed → même bruit → même terrain de chaque côté de la frontière. Les seams aux frontières de blocs deviennent structurellement impossibles.


Changements techniques détaillés

Côté serveur — ServerOrchestratorManager

  • Grid snap : submitChunkRequest() calcule le centre de grille avant tout dispatch. Si le chunk demandé n'est pas le centre de son bloc, la demande est redirigée vers le centre.
  • gridBlockFutures : nouvelle map (dim, gcx, gcz) → CompletableFuture — une entrée par bloc 5×5 en vol. Les doublons partagent ce future au lieu de créer un nouveau dispatch.
  • gridMemberFutures : future individuel par chunk du ring 3×3 (non-central). Complété automatiquement à la réception des extraChunks du payload résultat.
  • Fallback grille : si le bloc tombe en timeout/vanilla, tous les futurs membres du bloc sont complétés avec null → chaque chunk du ring bascule en vanilla indépendamment, sans deadlock.
  • Nettoyage dimension-change : purge des maps de grille à la traversée de portail (évite les fuites mémoire).

Côté client — ClientChunkWorker

  • generateGrid() : nouvelle méthode publique — génère le bloc 5×5 complet, applique buildSurface + applyCarvers sur les 9 chunks du ring intérieur (au lieu du seul chunk central), et retourne une Map<ChunkPos, byte[]> des 9 sérialisations.
  • doGenerateGrid5x5() : pipeline interne identique au mode 5×5 classique, mais le ring extérieur (16 chunks) sert uniquement de contexte — seuls les 9 chunks intérieurs sont renvoyés au serveur.

Côté client — ClientPayloadHandler

  • Détection block5x5 : si le payload reçu a block5x5 = true, executeGeneration() appelle generateGrid() au lieu de generate().
  • ChunkResultPayload gridMode : le résultat envoyé au serveur contient le chunk central en principal + les 8 autres chunks en ExtraChunk[] (un seul paquet réseau pour 9 chunks).

Protocole réseau — ChunkResultPayload

  • Champ gridMode : boolean + tableau extraChunks : ExtraChunk[] (déjà introduit en v0.3.23 dans le code, activé en v0.3.24).
  • Rétrocompatible : un serveur v0.3.24 peut recevoir des résultats d'un client v0.3.23 (gridMode sera false, comportement classique).

Ce qui ne change pas

  • Le mode solo fonctionne exactement comme avant (pas de régression attendue).
  • La compatibilité avec Tectonic, Terralith, BoP et autres mods de génération est maintenue.
  • Les mécanismes v0.3.23 (anti-seam v3, CAS1-allOf, queue_full fix, cache TTL 120s) sont conservés intacts.

Notes pour les testeurs

Les points à valider en priorité en duo/multijoueur :

  1. Absence de seams visibles aux frontières de blocs (surface, falaises, plages)
  2. Absence de régression sur les zones de caves (pas de truncation nouvelle)
  3. Comportement correct au premier chargement d'une zone vierge (9 chunks en un seul dispatch)
  4. Pas de deadlock ou chunk bloqué indéfiniment (tous les chunks finissent par se charger, en distribué ou en vanilla fallback)

Merci de reporter tout bug ou régression sur le projet — cette version est une étape clé vers des artefacts zéro en multijoueur.

👾 Rejoindre le Discord pour informer des bugs trouver ! : https://discord.gg/F8T2UBFzYz

Файлы

omnigen-v0.3.24-BETA-mc1.21.1-0.3.24-BETA.jar(235.81 KiB)
Основной
Скачать

Метаданные

Канал релиза

Beta

Номер версии

0.3.24-BETA

Загрузчики

NeoForge

Версии игры

1.21.1

Загрузок

12

Дата публикации

27.05.2026

Загрузил

ID версии

Главная