dungeonmod-0.23.2.jar
Curse Maven Snippet
What's new
-
🇺🇸 Version 0.23.2 - Major Instancing & Cleanup Fixes
🔧 Critical fixes requested by community
1. Per-Dungeon / Per-Group Cooldown (instead of global)
Before: Launching a dungeon via Core A put ALL cores in cooldown.
Now:- Cooldown is filtered by
dungeonIdlinked to core + player/group UUID - New
cooldownTextForDungeon(server, playerId, templateId)instead of globalcooldownText - You can have dungeon A on cooldown for your group and launch dungeon B via another core without wait
- GUI display fixed:
LiveInfoServiceno longer shows cooldown from another dungeon
2. Reset = only MY instance / MY group
Before:
- ResetPlayer sometimes wiped all instances
- Confusing why everyone got kicked
Now:
- Button "Reset ALL runs" (BTN_RESET) : kept as-is intentionally → closes all active copies of THIS dungeon (for admin wipe)
- Button "Reset a player..." : fully reworked
- Network payload now includes
corePos→ResetPlayerRunPayload(targetName, corePos) - Server resolves
corePos→dungeonId→ closes onlyinstanceOfPlayerInDungeon(playerId, dungeonId) - No longer touches other groups even on same template / same core
- Network payload now includes
- New methods
resetPlayerInstanceForDungeon()+resetMyInstanceForDungeon()for per-group reset
3. 60s Cleaning Cooldown anti-dupe + anti-floating-items
Before:
close()didclearBox(air, flag 2)+ immediatefreeSlot()→ slot instantly reusable → if another group launched during clear, floating items + duplication.Now:
ActiveInstanceManagerhas new MapCLEANING:slot -> CleanupEntry(min, max, freeAtTick)close():rescueParticipants()→ TP to overworld spawnclearEntitiesAndBlocks()→ kill allItemEntity, mobs, XP, etc.- Keeps chunks forced + does NOT free slot, puts it in cleaning with
freeAt = now + 1200 ticks (60s)
tickCleaning()→ after 60s: unforce chunks +freeSlot()USED_SLOTSstays blocked during cleaning →allocateSlot()cannot reuse → no dupe- GUI message during cleaning:
§7🧹 Cleaning §fXs
4. Lava and water not clearing
Before:
clearBox()usedsetBlock(AIR, 2)→ flag 2 = no neighbor update → fluids remained.Now:
InstanceCopyService.clearBox()redone top-down (Y max → min) with flag 3 (UPDATE_ALL)- Skip if already air + fluid empty + no BE
- Second pass to re-check remaining
fluidState→ re-set AIR - New
clearEntities()+clearEntitiesAndBlocks()combo
5. Unified cooldown system
InstanceManager.tick()now skipsif (d.instanced()) continue;→ onlyActiveInstanceManagerhandles instanced dungeons- No more double handling putting all dungeons in cooldown
6. Fix crash
ModLoadingExceptionon startup (v0.23.2-fixed3)- Crash:
ClassNotFoundException: MenuScreens$ScreenConstructor(wrong packageinventory.MenuScreens) - Fix:
ClientSetup.registerSingle()usesClass.forName("net.minecraft.client.gui.screens.MenuScreens$ScreenConstructor")(without inventory) + Proxy that constructs screen via reflection BlockEntityType.Builder.ofprivate access → helpercreateBEType()via reflection + Proxy forBlockEntitySupplierCreativeModeTab.builder()→ reflectionbuilder()no-arg orbuilder(Row.TOP,0)openMenuwith extra data →NeoForgeMenuHelper.openMenu()doesgetMethod("openMenu", MenuProvider, Consumer)via reflection → compiles against vanilla, works on NeoForgeSavedData.Factory→ addedDataFixTypes.LEVEL(1.21.1 API requires 3 args)
📦 Mod content (reminder)
- Dungeon Core: GUI hub, link selection, set entrance, config
- Dungeon Entrance (light 15): pairing via right-click Core
- Reward Chest: 27 slots template + % per slot
/dungeon chestchance, objective-locked, per-player loot, visual aura - Dungeon Exit: TP back to core
- Dungeon Spawner: configurable waves, EasyNPC support
npc:<preset> - Dimension
dungeonmod:instances: 1024 blocks grid, infinite slots, force-loaded chunks - Party system: create, invite, kick-vote, maxGroupSize configurable
🧪 Recommended tests
- Group A launches dungeon A via Core A, Group B launches same dungeon A → 2 different slots, independent cooldown
- Open Core B while A is on cooldown → B available
- Admin Core A → Reset player → player from Group A → only Group A reset
- Close instance with items/lava → check instances dimension empty + slot blocked 60s
- Waterlogging: water bucket in dungeon → close → water cleared
📥 Installation
- NeoForge 1.21.1 (21.1.231)
- Java 21
- Jar in
mods/on both server AND client - Config:
world/serverconfig/dungeonmod-server.toml
-
🇫🇷 Version 0.23.2 - Correctifs Majeurs Instanciation & Nettoyage
🔧 Corrections critiques demandées par la communauté
1. Cooldown par donjon / par groupe (au lieu de global)
Avant : Quand tu lançais un donjon via le Noyau A, TOUS les noyaux passaient en cooldown.
Maintenant :- Le cooldown est filtré par
dungeonIdlié au noyau + par UUID du joueur/groupe cooldownTextForDungeon(server, playerId, templateId)au lieu decooldownText(server, playerId)global- Tu peux avoir le donjon A en cooldown pour ton groupe, et lancer le donjon B via un autre noyau sans attente
- Affichage GUI corrigé :
LiveInfoServicen'affiche plus le cooldown d'un autre donjon
2. Reset = seulement MON instance / MON groupe
Avant :
ResetPlayerresettait parfois toutes les instances- Difficulté à comprendre pourquoi tout le monde était kick
Maintenant :
- Bouton "Réinitialiser TOUS les runs" (BTN_RESET) : inchangé volontairement → ferme bien toutes les copies de CE donjon (pour admin qui veut wipe)
- Bouton "Réinitialiser un joueur..." : complètement refait
- Le payload réseau inclut maintenant
corePos→ResetPlayerRunPayload(targetName, corePos) - Serveur résout
corePos→dungeonId→ ferme uniquementinstanceOfPlayerInDungeon(playerId, dungeonId) - Ne touche plus les autres groupes même s'ils sont sur le même template / même noyau
- Le payload réseau inclut maintenant
- Nouvelle méthode
resetPlayerInstanceForDungeon()+resetMyInstanceForDungeon()pour reset per-groupe
3. Cooldown de nettoyage 60s anti-dupe + anti-items flottants
Avant :
close()faisaitclearBox(air, flag 2)+freeSlot()immédiat → slot réutilisable instantanément → si un autre groupe lançait pendant le clear, items flottants + duplication.Maintenant :
ActiveInstanceManagera une nouvelle MapCLEANING:slot -> CleanupEntry(min, max, freeAtTick)close():rescueParticipants()→ TP spawn overworldclearEntitiesAndBlocks()→ kill tous lesItemEntity, mobs, XP, etc.- Garde les chunks forcés + ne libère PAS le slot, mais le met en nettoyage avec
freeAt = now + 1200 ticks (60s)
tickCleaning()→ après 60s : unforce chunks +freeSlot()USED_SLOTSreste bloqué pendant nettoyage →allocateSlot()ne peut pas réallouer → pas de dupe- Message GUI pendant nettoyage :
§7🧹 Nettoyage §fXs
4. Lave et eau ne se clearaient pas
Avant :
clearBox()faisaitsetBlock(AIR, 2)→ flag 2 = pas de neighbor update → fluides restaient.Maintenant :
InstanceCopyService.clearBox()refait en top-down (Y max → min) avec flag 3 (UPDATE_ALL)- Skip si déjà air + fluid vide + pas de BE
- Deuxième passe pour re-check
fluidStaterestant → re-set AIR - Nouvelle méthode
clearEntities()+clearEntitiesAndBlocks()combinée
5. Système de cooldown unifié
InstanceManager.tick()skip maintenantif (d.instanced()) continue;→ seulActiveInstanceManagergère les donjons instanciés- Plus de double gestion qui mettait tous les donjons en cooldown
6. Fix crash
ModLoadingExceptionau démarrage (v0.23.2-fixed3)- Crash:
ClassNotFoundException: MenuScreens$ScreenConstructor(mauvais packageinventory.MenuScreens) - Fix:
ClientSetup.registerSingle()utiliseClass.forName("net.minecraft.client.gui.screens.MenuScreens$ScreenConstructor")(sans inventory) + Proxy qui construit l'écran via reflection BlockEntityType.Builder.ofprivate access → helpercreateBEType()via reflection + Proxy pourBlockEntitySupplierCreativeModeTab.builder()→ reflectionbuilder()no-arg oubuilder(Row.TOP,0)openMenuavec extra data →NeoForgeMenuHelper.openMenu()faitgetMethod("openMenu", MenuProvider, Consumer)en reflection → compile en vanilla, fonctionne en NeoForgeSavedData.Factory→ ajoutDataFixTypes.LEVEL(API 1.21.1 requiert 3 args)
📦 Contenu du mod (rappel)
- Noyau de Donjon : GUI hub, lier sélection, définir entrée, config
- Entrée de Donjon (lumière 15) : appairage par clic droit Noyau
- Coffre de Récompense : 27 slots template + % par slot
/dungeon chestchance, verrouillage par objectif, loot per-player, aura visuelle - Sortie de Donjon : TP retour core
- Spawner de Donjon : vagues configurables, support EasyNPC
npc:<preset> - Dimension
dungeonmod:instances: grid 1024 blocs, slots infinis, force-load chunks - Party system : création, invite, kick-vote, maxGroupSize configurable
🧪 Tests recommandés
- Groupe A lance donjon A via Noyau A, Groupe B lance même donjon A → 2 slots, cooldown indépendant
- Ouvrir Noyau B pendant que A est en cooldown → B disponible
- Admin Noyau A → Reset joueur → joueur de Groupe A → seul Groupe A reset
- Fermer instance avec items/lave → vérifier dimension instances vide + slot bloqué 60s
- Waterlogging : seau d'eau dans donjon → fermeture → eau clear
📥 Installation
- NeoForge 1.21.1 (21.1.231)
- Java 21
- Jar dans
mods/côté serveur ET client - Config :
world/serverconfig/dungeonmod-server.toml
- Le cooldown est filtré par
- Cooldown is filtered by
All Relations
- All Relations
- Embedded Library
- Optional Dependency
- Required Dependency
- Tool
- Incompatible
- Include
This mod has no related projects

