1.2.0-beta.3
Compatibility
Changes
Devourer of Gods 1.2.0
this changelog is made with the help of Generative Artifical Intelligence (I am lazy)
Everything since 1.1.0, betas 1 through 3 together. Minecraft 1.20.1, Forge.
Breaking changes
Read this bit before updating.
cosmicFlameBlocksHealingremoved. Cosmic Flame is fire again. UseregenHaltLevel = 5for the old behaviour.dragonDropsCosmicLarvarenamed todragonDropsReward. Re-set it if you had it off.headGlowrenamed tobodyGlow. Re-set it if you had it off, or you get the outline back.- Cosmic Larva renamed to Draconic Soul Fragment. Old items convert automatically on world load, but datapacks using
dog:cosmic_larvamust switch todog:draconic_soul_fragment.
Crashes, issues, and compatibility
- Fixed a crash reading the mod's own config. Reported with Mowzie's Mobs installed and not without it.
- Fixed DoG never targeting anyone with Valkyrien Skies installed, on foot or standing on a ship.
- Create tested alongside VS against this build.
- Fixed duplicated devourers, which happens because of the new intro... Ooposie :D.
- Entity activation range mods: the body no longer freezes when segments fall outside the range.
- Mods that alter mob targeting: if he stands there ignoring you, the log now says whether he found nobody or was refused the target. Send the whole
latest.log. knockbackResistanceis set to 1, so mods that read the attribute see the right answer instead of thinking he can be shoved.- Singleplayer is no longer told off about its view distance on startup. The warning ran before the game had applied your settings, so it complained about numbers you were not using, including "simulation-distance is 0". Dedicated servers only now; singleplayer still gets the in-chat one on join.
For packs where gear outscaled him
Damage multipliers can't fix percentage reduction. Armor and Protection are capped at 80%, so doubling his damage doubles the fifth that survives and leaves the rest alone. Pierce removes the reduction instead.
armorPierce = 0.0 # armor points ignored
armorToughnessPierce = -1.0 # -1 tracks half of armorPierce
enchantmentPierce = 0.0 # Protection levels ignored
Also armor, armorToughness, attackDamageMultiplier and playerDamageMultiplier. Note armor caps at 30 and armorToughness at 20. Those are Minecraft's ceilings, and armor is weak against big hits by design. For a boss that survives endgame gear, playerDamageMultiplier is the setting that scales.
Regeneration and healing denial
regenAmount = 0.0 # 0 is off
regenIntervalTicks = 20
regenChance = 1.0
New effect: Devoured Vitality, applied by his attacks.
regenHaltSeconds = 0 # 0 is off
regenHaltLevel = 1 # 1 to 5
regenHaltCooldownSeconds = 30
Level 1 seals natural regeneration only, so potions and golden apples still work. Levels 2 to 5 cut every other source a quarter at a time, the way Resistance cuts damage, until 5 stops healing entirely.
Enchantment Devouring
enchantDevourEnabled = false
enchantDevourCooldownSeconds, enchantDevourCount
enchantDevourHealMinPercent, enchantDevourHealMaxPercent
enchantDevourPermanent = false
Takes a level at a time off something you are wearing or holding and heals himself for it, scaled by rarity. Curses are left alone.
What he takes comes back once he is dead or gone. The debt is stored on the item, not in a list keyed to you, so it survives being dropped, traded, stashed or carried through a death. Restoring is passive: any player in a dimension he is not in gets swept, so gear in a backpack or on somebody who was offline recovers on its own.
enchantDevourPermanent keeps what he ate forever. Not recommended.
Datapackable laser patterns
Volley layouts live in data/<namespace>/dog_laser_patterns/. The four shipped ones (dog:fan, dog:grid, dog:cage, dog:chaos) are plain files, so overriding one is writing a file at the same path, and adding one works the same way.
A pattern lists emitters, not beams:
| emitter | what it makes |
|---|---|
dog:ring |
beams evenly around a circle |
dog:cone |
a pitch × yaw grid of directions from one point |
dog:lattice |
two crossing sets of parallel beams in a layer |
dog:shell |
beams from a sphere's surface through random nearby points |
dog:converge |
beams from a sphere's surface all through one point |
dog:custom |
beams written one at a time |
dog:repeat |
stamps any of the above out with a rotation and offset |
Scheduling lives in the same file: weight for how often, phases for which half of the fight, min_health / max_health for a stretch of his health bar. weight: 0 keeps a pattern loadable and out of the fight, which is what you want while building one.
/dog volley <id> fires one where you stand. Edit, /reload, fire, look.
maxBeamsPerVolley caps what a pattern may spend. Every beam is sent to every nearby client, so it is bandwidth as much as work.
There is an example datapack with four commented patterns and a reference for every emitter and field in my discord server (wiki soon).
The entrance
- Modified entrance visual.
- DoG now appear relative to the position of the sky crack.
The radar
An indicator of where he is, still fairly simple at this stage.
- The body draws as a connected line in body order. It was scattered dots, because the segment index was never sent to the client.
- Charge telegraph: shows the wind-up, then stamps the charge path into the world where he committed and fades it. Once committed his heading is frozen, so that line is not a guess.
bossRadarEnabled,bossRadarSize,bossRadarRange,bossRadarOpacity,bossRadarDeadZone(0 runs the trace through the crosshair).
Glowing
- New glow that highlights the whole DoG.
bodyGlowColor(client) sets the colour as RRGGBB hex. Vanilla outlines are white, which is the brightest thing on screen over a fight that is otherwise violet and cyan, so the default is a deep violet.- Turn it off with
bodyGlowif the fight is heavy. The outline draws every body part a second time.
Body shape
segmentCount = 102
segmentSpacing = 3.28125
For anyone remodelling him. Both apply to a newly summoned boss only; one already in the world keeps the body it was built with.
Weather and command hooks
setWeatherOnSummon = false
summonWeather = THUNDER # CLEAR / RAIN / THUNDER
freezeWeather = true
summonCommands = []
departureCommands = []
Weather is restored when he dies or leaves. The command hooks run at permission 4 from his own command source, so @s is him and ~ ~ ~ is where he is, the escape hatch for anything this mod does not integrate with directly.
Also shiftTimeOnSummon, summonTimeOfDay, freezeDaylightCycle for the clock.
Taunts
trigger = ON_BITE # ON_BITE / ANY_DAMAGE / INTERVAL
intervalSeconds = 45
ANY_DAMAGE counts body contact, lasers and fireball impacts, though not the flame ticking afterwards. INTERVAL puts him on a timer and counts each line as an escalation, so the tiers still carry him from smug to furious.
Visual fixes
Fixed line renderers not smoothly connecting when two lines are connected to each other on an angle (still experimental this stage).
Performance
- Contact damage now runs once for the whole DoG instead of individual segments. Tick rate should be improved.
- Fireball cap is now a thing
Other fixes
- Fixed him stopping ticking entirely on low simulation distance and freezing until a player flew close.
- Fixed him getting stuck in the void. Led somewhere he should not be and then abandoned, he steered nothing at all, and he has no gravity to fall out either.
- Fixed the laser coil dragging players off the ground. Containment was a sphere around a centre well above you, so standing still read as escaping.
- Fixed the custom bossbar disappearing if he was renamed by a resource pack, or you played in another language.
- Fixed a long body outrunning its own chunk loading, which would have stopped the tail ticking at high
segmentCount. - Summoning now works in the End, the Nether, and custom dimensions without sky (
requireOpenSky). - Segments no longer vanish at low view distance (
extendBossTrackingRange). - He no longer sits inside the floor during the laser phase (
groundAvoidance,groundClearance). - Player summons (wolves, golems, minions) now throttle properly and give their owner threat and loot credit.
- The summon quote is translatable instead of hardcoded English.
bossHitCooldownTicks = 0was never quite "no i-frames":mergeMeleeSegmentHitsis separate and still merges a swing. Set both. The config says so now.
Textures
Shoutout GameOfLife!
- Music Disc (Eulogy for the Ego)
- Cosmic Flame effect
- Draconic Soul Fragment (new, animated)
Notes
- If he ever just stands there ignoring you, send the whole
latest.log. There is a[DoG-target]warning that names whether he found nobody or was refused the target, and the mod list at the top identifies the culprit.
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:xbaJsoWt:JSydUNam"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:xbaJsoWt:JSydUNam"
}

