synchro-fabric-1.8.0.jar
Curse Maven Snippet
What's new
[1.8.0]
Large update consolidating everything since 1.3.7: a type-aware move-combat system,
survival/immersion systems, optional cross-mod integration, and a batch of fixes from
community feedback. Each system has its own /synchro config toggle.
Added — Move combat
- Type effectiveness — the canonical 18-type matchup chart now applies to morph move damage in both directions (your moves against targets, and incoming damage against your morph's typing), including STAB ×1.5 and the Freeze-Dry / Flying Press special cases. Vanilla mobs are given sensible typings (Blaze → Fire, Guardian → Water, Iron Golem → Steel, …). Toggle with
enableTypeEffectiveness. - Traveling move projectiles — special / ranged moves fire a projectile that travels to its target over time instead of hitting instantly, with per-move colours and shapes matched to each move's canonical appearance (Aura Sphere = blue sphere, Dragon Pulse = turquoise, Bug Buzz = light green, …), beam-vs-ball shapes, rainbow moves, and multi-hit spread volleys. Toggle with
enableMoveProjectiles. - Move sounds — moves now play Cobblemon's own move sounds for the caster and on impact.
- Crits, multi-hit, drain & recoil — moves can land critical hits, multi-hit moves strike several times, and drain / recoil moves heal or hurt the user accordingly.
- Two-turn moves — Fly, Bounce, Dig and Dive charge for a turn (with an invulnerability window) and strike on the second.
- Weather moves — Rain Dance, Sunny Day, Sandstorm, Hail / Snowscape and friends change the weather, and weather scales relevant move damage and healing.
- Field hazards — Stealth Rock, Spikes, Toxic Spikes and Sticky Web lay persistent zones that affect enemies entering them.
- Status & charge flair — burn / poison / paralysis / freeze / sleep show coloured auras, buffs / heals / barriers get their own particle flourishes, and charge-up moves play a telegraph.
Added — Survival & immersion
- Cobblemon 1.8 support — updated for the Make Your Move update.
- TM-aware move learning — the move-selection screen previously offered a Pokémon's whole TM pool immediately, softened only by a power-based level guess, so a level-1 morph could pick moves the player hadn't earned. TM moves are now offered only when the player has actually unlocked that TM, so a morph's movepool grows with TM progression. Level-up moves are still gated by level, and
/synchro teachstill bypasses both. Validated server-side against the same unlocks the client shows. - Morphs contribute to TM progression — Cobblemon unlocks a TM recipe when you have a Pokémon that knows the move, and your morph now counts: learning a move as a Pokémon registers it against your TM unlocks.
- Alpha Pokémon & intrinsic scaling — the morph hitbox now uses Cobblemon's
getEffectiveScale(), which covers all three of 1.8's new size sources: intrinsic scaling (every Pokémon is ±5%), baby scaling (10% smaller at level 1, growing to normal), and the Alpha size bonus. Previously only intrinsic scaling applied, so baby and Alpha morphs had a hitbox that didn't match their model. - Alpha integration actually works now — two of its lookups called Cobblemon methods that don't exist (
getAlphaScale,getAlphaTmMove) and failed silently inside try/catch, so every Alpha morph used a hardcoded 1.25x size guess and the "preserve the Alpha's TM move" feature never ran at all. Size now comes fromgetEffectiveScale(), and the Alpha's TM move is identified by asking the TM registry which of its known moves a TM teaches. - Marks show on your morph — 1.8 lets marks supply aspects, and an Alpha carries
mark_alpha, which is what gives it its distinctive look. Morph rendering now includes the active mark's aspects, so a marked Pokémon looks the same worn as it does wild. - Passives for the new regional-variant base species — Sandshrew/Sandslash (quicker digging and a tougher hide), Yamask (night vision, and the living are unsettled nearby) and Avalugg (iceberg-grade damage resistance) had no passive of their own.
- Fixed the preview model being cut off when scaled up or set to Alpha — the preview multiplied a zoom that already filled the frame, so anything larger than normal size overflowed and clipped. It now renders from a slightly smaller base with the zoom capped at what the frame can show, so bigger and smaller still read as different but the model always stays inside.
- Choose which mark each morph wears — the Synchro menu's Info tab now has a Mark row: click it to cycle through that Pokémon's earned marks, or none at all, exactly like choosing a party Pokémon's displayed mark. The choice is per Pokémon and is saved to its team slot, so it survives re-morphing. Only marks the Pokémon actually earned are accepted, so the packet can't be used to grant a mark (or its aspects) that wasn't obtained.
showMorphMarksremains as a server-wide switch for turning marks off entirely. - Fixed pitch-black model previews — Cobblemon 1.8 added a
blockLightparameter toModelWidgetand we were passing0, i.e. no light, so the starter preview and the Synchro menu portrait both rendered as near-black silhouettes. Both now use full brightness. - Fixed the shiny/form row overlapping the gender buttons — the control stack was positioned from the bottom of the window upward, which on shorter windows placed it above the gender row inside the preview panel and drew straight over it. The stack is now pinned below the gender row as a hard rule, with the gaps between rows tightened to fit whatever space is left, and the preview model shrinking on short windows to buy that space. No overlap at any resolution Minecraft supports.
- Fixed starter-screen buttons running off screen — the control stack clamped the confirm button to the window, then recomputed its position afterwards and discarded that clamp, pushing the rows off the bottom at some resolutions. The stack is now anchored from the bottom of the window upward (and pulled back under the preview panel when there's room), so it stays reachable at any size. The panels are also kept from starting off the left edge on narrow windows.
- The starter screen gained Alpha and intrinsic-scale controls, and the shiny/scale/Alpha choices now show live in the 3-D preview.
- TM-aware move learning — the move-selection screen previously offered a Pokémon's whole TM pool immediately, softened only by a power-based level guess, so a level-1 morph could pick moves the player hadn't earned. TM moves are now offered only when the player has actually unlocked that TM, so a morph's movepool grows with TM progression. Level-up moves are still gated by level, and
- Renamed the move-effect catalogue to
/synchromoves— Cobblemon 1.8 added its own "Move Dex" to the Pokédex, which does something different (what moves a Pokémon can learn). Ours lists what this mod does with a move, so it's been renamed to avoid confusion./synchro moveinfo <move>is unchanged. - Type food preferences — eating food that matches your morph's type grants bonus saturation and brief regeneration. Toggle with
typeFoodPreferences. - Biome comfort buffs — your morph gains small buffs in environments that suit its type (Water types in water / rain, Fire types in heat, Ice types in snow, …). Toggle with
enableBiomeBuffs. - Flock behaviour — wild Pokémon of your morph's species gather and follow you, scattering when combat starts. Toggle with
enableFlock. - Extended held-item effects — held items now act in morph form (Rocky Helmet reflects contact damage, Choice Scarf / Iron Ball change speed, …).
- Single-morph mode — optionally bond with exactly one Pokémon at a time. Toggle with
singleMorphMode. - Personal speed —
/synchro speed <0.25–4.0 | reset> [player]tunes an individual player's movement speed on top of the species speed, without editing the shared species walk speed. - Movement-speed mode toggle (
movementSpeedFromStats, default true) — the previous behaviour scales morph speed by the Speed stat, which makes low-level morphs (e.g. a fresh "Start as a Pokémon" starter) painfully slow. Set it false to use only the Pokémon's species behaviour walk speed, exactly like Cobblemon — consistent regardless of level. Only applies whenuseAdjustedMovementSpeedis on; set via/synchro config movementspeedfromstats <bool>or the config screen. - Haste from terrain moves — Cut, Rock Smash, Strength, Dig, Rock Climb, Rototiller, the drills, the steel cutters and the self-sharpening moves (Hone Claws, Sharpen) now grant Haste for 15 s, so a morph built around them genuinely mines faster. Haste was previously unreachable: its only code path was an ability case named
trickroom, but Trick Room is a move, so no Pokémon could ever match it — that dead branch is removed. - Config button on the main menu — the Synchro config button now appears on the title screen as well as the pause menu, so settings can be adjusted before creating a world. That matters for options that shape a new save (single-morph mode, starter rules, the legendary block) which previously needed a world loaded just to reach the menu.
- Morph blacklist —
/synchro blacklist add|remove|list <species>bars individual Pokémon from ever being synchronized with, for pack authors who want finer control than the legendary switch. Blacklisted species are also dropped from the "Start as a Pokémon" starter list, so a Pokémon nobody can morph into can't be handed out as a starter either. Stored asmorphBlacklistin the config; species names are validated on add so a typo can't silently do nothing. Only blocks new syncs — existing morphs are untouched. - Block legendary morphs — a new
blockLegendaryMorphsconfig stops the Synchro Machine bonding with Legendary, Mythical, Ultra Beast and Paradox Pokémon. Detected from the species' own Cobblemon labels, so correctly-labelled modded species are covered too. Default off, and it only blocks new syncs — an existing morph is untouched. requireOwnershipnow actually works — the option was declared, documented and exposed in both the command tree and the config screen, but nothing ever read it, so servers that enabled it got no protection at all. The Synchro Machine now genuinely refuses to sync with a Pokémon you don't own.- Exclude legendaries from starters — the starter list is generated from every species with no pre-evolution, which swept in every box legendary. A new
excludeLegendariesoption incobblemon_synchro_machine_starters.json(default on) filters Legendary / Mythical / Ultra Beast / Paradox species out. It applies when the list is read, so it also cleans up a starter list that was already generated — no need to delete the file. - Morph and party Pokémon stay in step — with
syncMorphWithParty(default on), the two halves of "you are your Pokémon" no longer drift apart:- Moves — the four moves you use outside battle are mirrored onto the matching party member, so it battles with the same moveset.
- Evolution, both ways — when the party Pokémon evolves through normal Cobblemon play, your morph becomes the evolved form (so an Axew that evolves makes you a Fraxure); evolving through the Synchro menu likewise pushes the new species onto the party member. Matched by UUID, so it only ever touches the exact Pokémon your morph came from, and is ignored while transformed.
- Shiny starters gamerule respected — Cobblemon's
doShinyStartersgame rule now makes the "Start as a Pokémon" starter shiny too, on top of the screen's own shiny toggle. - Synchro starter can be your Cobblemon starter — with
starterJoinsPartyenabled, the Pokémon you pick in the "Start as a Pokémon" screen is also added to your Cobblemon party and marked as your chosen starter, so Cobblemon's own starter screen never appears afterwards. The party member shares the morph's UUID, so withsyncXpToPartyon they level together. Default off; ideal for Mystery-Dungeon-style packs. - Move Dex — a browsable in-game catalogue of what this mod does with moves, open to all players.
/movedex <move>— that move's status effect, drain/recoil, multi-hit, dash, charge, two-turn and world effects, each naming the config key that switches it off./movedex— lists every effect category (poison, sleep, flinch, drain, weather, …) with a move count./movedex effect <name>— every move that produces that effect, with tab-completion.- Hover any move in the Synchro menu — both your equipped moves and the move-picker list when learning a new one — to see the same information as a tooltip: type, category, and every effect the move produces, with the config key that disables each one. Handy for comparing candidates before committing to a move.
/synchro moveinfo <move>is the op-tree equivalent of the per-move lookup. Mechanics and world effects are read from the same tables the game dispatches on, so both directions stay in sync with real behaviour.
- Move particle toggle — a new
enableMoveParticlesconfig (default on) turns off the type-coloured particle clouds moves spawn, for servers where frequent move use gets visually noisy. Damage, sounds and effects are unaffected, and one-off morph/evolve bursts still play./synchro config enablemoveparticles falseor the config screen. - Per-effect world-modification toggles — every way a move can alter the world now has its own config switch (all on by default): water placement, fire placement, ice/snow placement, rock spikes, real lightning bolts, plant growth, lava quenching, item cooking, item scattering, and vanilla weather changes. Turn off just the messy ones (e.g.
movesPlaceWater falsestops Water moves leaving water) via/synchro config <key>, the in-game config screen ("Move World Effects" section), or the JSON. Particles and sounds always stay — only the world change is skipped. Joins the existing block-breaking and explosion toggles. - Movement-speed mode option — a new
movementSpeedFromStatsconfig (default on, current behaviour). Turn it off to make morph speed use only the Pokémon's species walk speed like Cobblemon itself, instead of scaling by the Speed stat — so a low-level "Start as a Pokémon" starter isn't crawling./synchro config movementspeedfromstats falseor the config screen ("Speed from stats"). - Regional forms & shiny starters — the "Start as a Pokémon" selection screen now has a shiny toggle and, for species with regional variants, a form cycler (Alolan / Galarian / Hisuian / Paldean). The 3-D preview updates live, and your chosen form + shininess carry into the starter. Special battle forms (Mega / Gigantamax) are excluded.
- Quirk animations in the emote wheel — your morph's short ambient idle animations (Gulpin's yawn, ear-twitches, blinks, …) now appear in the emote wheel as "Quirk 1…N" alongside the poses, and are broadcast so nearby players see them too. One-shot, distinct from the sustained poses — great for roleplay.
Added — Integration
- Morph species tag — a morphed player now carries a vanilla scoreboard tag
synchro_morph.<species>, a zero-dependency signal other mods / datapacks can read (used to make CobbleBrain's companion AI aware that you are a morphed Pokémon). - Type-effectiveness behaviour takes inspiration from Fight or Flight (MIT, by rufia); there is no hard dependency.
Fixed
- Stuck as a non-transform morph — pressing Detransform while morphed as a species that can't Transform (Mudkip, most Pokémon) did nothing, because detransform only reverts the Transform ability. It now returns you to human form in that case (your team is kept, so Toggle Morph brings the Pokémon back) instead of leaving you stuck. Transform-capable species (Ditto/Zorua) are unaffected, and un-morphing was always also possible via Toggle Morph (default B) or sneaking + the Synchro Machine.
- Procedural wing-flap no longer fires for non-flying morphs — the fallback flap triggered on elytra gliding as well as real flight, and since it falls back to arm bones when a model has no wings, any armed morph (Trubbish, Machamp, …) flapped its arms while gliding. It's now limited to species that can actually fly.
- Flight animation now plays automatically — flying morphs (Charizard, Zapdos, Swablu, Magnezone, …) flap their wings in the air on their own again, instead of only when the pose was picked from the emote wheel. The renderer now forces whichever flight pose the model actually animates (FLY / HOVER / GLIDE — many models put the flap under HOVER) by name, bypassing the air-state pose condition that the morph's stand-in dummy couldn't satisfy. Species that animate flight procedurally from the pose rather than with a keyframe animation (e.g. Spearow, whose fly pose is a sine wing-flap) now have that pose re-asserted each frame, since nothing else holds it in place — so they flap using the model's own tuned animation. A code-driven wing-flap covers any remaining flight species whose model defines no flight pose at all. Hovering in place now prefers the HOVER pose, with FLY used when actually moving through the air.
- Starter screen usability + scaling — on the "Start as a Pokémon" screen the confirm button now sits directly under the gender selection and reads "Select <Pokémon>!" (players were missing the old bottom-centre button and didn't know how to continue), and the whole screen now sizes itself to the window so it fits across resolutions and GUI scales instead of overflowing.
- Absurd move cooldowns (~200,000 s) after switching worlds — move cooldowns stored an absolute world tick in a static map, so joining a different world in the same session (notably creating a fresh "Start as a Pokémon" world, which restarts at tick 0) left a stamp from the old, higher timeline. Subtracting it produced a multi-hour cooldown that never expired. Stamps ahead of the current world time are now discarded (also covering
/timeset backwards), and the stamp is cleared on disconnect. The move HUD's cooldown sweep got the same guard. - Severe lag while morphed ("ticking problem") — the morph hitbox re-parsed the entire Pokémon NBT (
loadFromNBT) on everygetDimensionscall, which the game makes several times per tick per player (pose checks, collision). That tanked server tick rate while morphed, which is what made melee barely register, item pickup fail, and mounted movement drift/desync. The computed hitbox is now cached per morph and only recomputed when the morph actually changes, so riding another Pokémon and general combat/pickup behave normally again. - Morph hitbox ignored size-variation mods — the collision box now scales with a Pokémon's individual
scaleModifier(and its resolved form's base scale), so mods like Cobblemon Size Variation and pehku scale the hitbox to match the visible model. Previously the model grew/shrank but the box stayed locked to the base species size, leaving a mismatched hitbox you couldn't interact with. The box is bounded (≤ 8 blocks, ≥ 0.35) so extreme sizes stay playable. - Transform overwriting your Pokémon — Transform is now a species gimmick, not a universal power: only Illusion species (Zorua/Zoroark) and Transform-capable Pokémon (Ditto, Mew, Imposter, or knowing the move) can transform. Previously any species could full-swap via the keybind and permanently overwrite itself in the Team Screen. Team slots also never store transformed data any more (they always keep the real Pokémon), and Detransform restores both the morph and the active slot — with a team-slot fallback if the pre-transform snapshot is missing — so you can always transform back. In "Start as a Pokémon" worlds the Synchro Machine additionally refuses to sync new species, keeping you bonded to your starter.
- Turn-based battle stat desync — a morph's battle Pokémon no longer diverges from its overworld form. After resting in a bed (which restores PP and HP), entering a turn-based battle used to snap the morph back to stale PP/HP and write that over the restored values. The battler now starts from the player's live health and the morph's current moveset PP instead of a stale internal snapshot / PP swap-cache.
- Server crash on a drain move vs. a player — using a draining move (e.g. Draining Kiss) on another player could hard-crash the server. The target's on-hit reactions (Rocky Helmet, Rough Skin, Liquid Ooze, counters, …) damage the attacker, which re-triggered the attacker's own on-hit reactions in PvP, ping-ponging until the stack overflowed. A re-entrancy guard now resolves any such counter only one level deep.
- Re-morph after death — in "Start as a Pokémon" worlds (or with
keepSyncedOnRespawnenabled), you now keep your Pokémon form through death automatically, instead of reverting to a human who needs a command to morph back. /flyconflict — the mod no longer revokes flight from players it did not grant it to, so other flight sources (creative, other mods) are left alone.- First-person view — your morph model no longer fills the first-person camera when you melee-attack; it is only drawn in third person and to other players.
/synchro slot edit— property values containing=(e.g.nature=adamant) now parse correctly instead of erroring on the=.- Regional forms — Hisuian / Alolan / Galarian morphs now report their correct typing and move pool (previously they used the base form's type and learnset).
This mod has no additional files