promotional bannermobile promotional banner

Duelcraft

Souls-like combat: combo trees for every weapon, rolls, parries and ripostes, poise, telegraphed mob attacks and a lock-on camera.
Back to Files

duelcraft-1.21.1-0.7.0.jar

File nameduelcraft-1.21.1-0.7.0.jar
Uploader
RatiosoRatioso
Uploaded
Oct 31, 2026
Downloads
21
Size
10.5 MB
Mod Loaders
NeoForge
File ID
9388586
Type
R
Release
Supported game versions
  • 1.21.1

Curse Maven Snippet

NeoForge

implementation "curse.maven:duelcraft-1759864:9388586"

Learn more about Curse Maven

What's new

Duelcraft 0.7.0

The first round of the combat overhaul: the sword's new ready stance and light string, cleaner hits with new sounds, a body that stops where its blow stops, dodges that commit, a camera and HUD you can set up your way, and blows that land on time online.

The sword

  • A new ready stance. In combat mode the sword stands low and wide: knees bent, the blade low at your right hip, its point forward. The guard keeps its raised blade, so blocking still reads apart.
  • The light string, re-cut. Each slash snaps through the hit in a tenth of a second and holds its finish for a beat instead of drifting back: a forehand across the body, a rising backhand out to the right, a cut over the shoulder, and the spinning finisher stopping with the blade out to the left. Every slash reaches a foe at arm's length, not only one pressed against you. In first person the slashes swing as before.
  • The overhead heavy raises the blade high in front of your head, laid back over your shoulder, then steps in with the chop instead of sliding in after it.
  • Rising Crescent out of the Piercing Thrust now flows straight on from the thrust.

Daggers

  • In first person, the light string holds. Cut 1, cut 2, the stab and the cross cut hold their finish for a beat instead of drifting back, each one starts where the last one held, and the knife stays edge-on through the stab, as it does through the cuts. Seen from outside, the dagger swings as before.

Hits

  • Weapon trails light only the cut: no ribbon in the wind-up, one strip per hit, held through the hit-stop.
  • A blow that deals damage shows a contact glow where it lands, a slash mark when a blade cuts, and a puff of dust off flesh; metal sparks only fly off metal and parries; vanilla's sweep crescent is gone.
  • Hit colour: a damaged body flashes one soft white frame, then a short red that fades. Set hit_colour = RED in the client config for vanilla's red only. A dying body is never tinted red, and a blow a guard turned aside shows no tint at all.
  • Blocks land too. A blow your guard blocks (or the shield art's raised shield) now freezes its attacker for a beat, as your blow freezes on a creature's guard, and sparks fly off your guard. You aren't held, so the guard counter comes as soon as before.
  • Blows land where you see them. A creature walking off is drawn a few ticks behind where the server has it, so a slash that met it on your screen could cut the air on the server, and a creature on the move was hard to hit at all. The server now checks your blade against where your screen showed each creature: 4 ticks back, and online your round trip on top, up to lag_compensation. Server option online.hit_rewind (4 ticks; 0 checks against where creatures are now).
  • The parry flash is repainted: a hot core, uneven spikes and an expanding ring.
  • A perfect dodge leaves one cool blue afterimage instead of a cloud of smoke.

Spacing

  • Your body stops where your blow stops. A lunge no longer carries you into the creature you swing at: each move keeps its own gap, close enough that its blade reaches and wide enough that your face stays off the target, and once a blow has struck, nothing slides you on into it. A lunge chases what you swing at: a creature just out of reach, or walking off as your blow winds up, is closed on until the blow lands (up to twice the move's own lunge), and a string keeps up with the creature it is knocking back, so a finisher like the sword's Crescent Cleave still lands. Moves that dash through their target still do: the sword's Phantom Slash, the dual blades' Dash Cross, Phantom Cross and Reaping Cross, the spear's Piercing Lunge and Piercing Rush, and the shield's Bulwark Charge. Client option spacing (on).
  • A hit-stop holds you still. While a hit freezes your move, your body stops too instead of sliding on through the target, and a knockback that lands meanwhile waits for the freeze to end.
  • The camera kicks along the blow. A hit you land kicks the view the way the blade crossed your screen (a slash to the right turns it right, a thrust dips it) and springs back within a few ticks, instead of shaking at random. A blow that lands on you kicks your view along it too.

First person

  • See the blade's flat (an option, off by default). Where an attack's first-person animation shows the blade edge-on to your eye, its thin dark side towards you, client option first_person_blade_turn turns the blade about its own length to show its flat: at most 35 degrees, only as far as it takes, easing back as the move ends. Swords, axes, daggers and the like, in either hand. Left off, the blade stays edge-on through the cut, as animated.

Dodging

  • Committed attacks: a dodge pressed during an attack, wind-up included, waits for the move's dodge cancel instead of being dropped, and your feet stay planted until the move's last hit ends. Client option committed_attacks (on).
  • Side and back rolls: locked on, rolling to the side or back keeps your chest towards the target, with their own animations, and a dodge straight back is a backstep. Client options directional_rolls (OFF, LOCKED_ON, ALWAYS), roll_yaw (OFFSET, SQUARE) and locked_backstep.
  • The forward roll's feet no longer slide over the floor as you come out of it.
  • The guide's roll clip is filmed again: the old one showed the roll being hit.

The first minute

  • Clicks outside a fight do what vanilla does. In combat mode, away from a fight, right click talks to villagers and other creatures that aren't foes and places your off hand's block, and left click digs with fists, an axe or the block's own tool. A fight is a hostile in sight within 12 blocks, or a swing, a hit taken or a lock-on in the last 3 seconds. Doors, gates, buttons, levers, beds, containers and workstations open even in a fight. Client option vanilla_clicks (on).
  • The middle click picks the block when there's nothing to lock on to.
  • The weapon art is on N by default, and the controls hint names whichever works: N, or sneak + use.
  • The welcome line names the combat mode key, and the drill warns of the zombie's grab.
  • Warning glints always show, whatever the particle setting, from up to 64 blocks away, and each perilous attack rings its own bell: a grab, a sweep and a thrust sound different. When a perilous blow lands on you, the action bar names its answer.
  • Starting in combat mode: server option combat_mode.start_on_first_join (off) starts new players in combat mode.

The camera and the HUD

  • The gauges sit by the hotbar. The stamina bar and the art gauge moved from under the crosshair to over your hearts and armour, as wide as a row of hearts, so they no longer sit in the middle of the fight, over your character and the enemy. The stamina bar shows while you spend stamina and fades away a second after it's full again; the part just spent lingers pale before it drains.
  • Locked on, the camera frames the fight. In third person it tips down about 30 degrees (more for a foe below you, less for one above), steps further out over your right shoulder and swings round, so it looks across you at your target instead of over your head: at sword's reach you now see all of a zombie, where you saw less than half of it before. With a wall close on your right it swings out only as far as there's room, a grab, a throw or a stagger never tips it into the ground or the sky, and it follows you a touch softly, so a blow's jolt or a hop reaches the view smoothed out.
  • Either shoulder. Combat mode's camera sits over your right shoulder or your left (client option shoulder_side), and the new Swap Shoulder key (O) moves it over the other one at any time, even locked on mid-fight: it eases across in a third of a second, the framing with it, and stays there.
  • Make the camera yours. New client options: camera_height (-1 to 1 block over your eyes, 0) raises or lowers combat mode's camera; lock_on_tilt (32 degrees) and lock_on_swing (25 degrees) set how far the locked-on camera tips down and swings round; lock_on_framing off keeps the camera where combat mode puts it, only your view turning to the target; and camera_follow (0.15 seconds) sets how softly the locked-on camera trails you, 0 keeping it on you.
  • A HUD editor. Drag the stamina bar and art gauge, the style meter and the dojo trial's panel anywhere on the screen, scroll over one to size it (half to twice as big) and right-click it to put it back; the arrow keys nudge the last one touched a pixel, and Reset All puts everything back. Open it with the HUD Editor key (unbound: set one under Controls → Duelcraft) or the HUD Layout button on the mod's config screen. In their own places the gauges grow up from the hearts and armour, never over them.
  • Hits you take no longer tilt the view in combat mode (vanilla's damage tilt): the small shake stays. Locked on in third person with the framing on, a few degrees of the tilt are left.
  • The guide's clips and pictures are filmed again, showing the new gauges, camera and spacing.

Fights

  • A foe that dies from a fall, the void or lava after your blow counts as your kill: for style, weapon mastery and the last-enemy slow motion.

Sound

  • Swings whoosh. Most moves played a landed-blow sound as their swing, so a miss sounded like a hit. Every swing is now a whoosh, and the hit sound plays only when a blow lands.
  • Each weapon swings with its own sound. The sword (and the sword and shield, and the dual blades) a clean swish, daggers and fists a short, high one, the spear a thrust that rises and stops, the axe and the mace a deep, turning whum, the greatsword a long, low, airy one, in place of vanilla's sweep.
  • A new hit sound, a thump, a knock and a slap, for every blow that lands on flesh: light blows and finishers alike (the finishers played vanilla's critical hit). The ground slams keep the mace's smashes, five of the spear's moves the trident's hit, and the shield bash and slam the shield's block.
  • Your own swing and hit sounds come from your game, so online they no longer arrive late.
  • A sound kit. Every role of combat sound is now a sound event of its own: a swing for each kind of weapon, a blade, blunt, pierce and armor hit, a parry, a guard, a roll, and a sting for the Perfect Strike and the perfect dodge. Their subtitles say what happened, a resource pack can give any one its own audio, and the moves name them.
  • Armor rings. A blow that lands on a body with 6 or more armor points (the ones that throw metal sparks) plays the armor hit instead of the move's own hit sound, to you and to those who watch: the blow with a short ring of plate.
  • New sounds for the rest of the fight. A parry is a short clang and the edge scraping off, a blow on your guard a muffled thud, a dodge a soft swoosh of cloth, a Perfect Strike a hiss rising into a high ring over the hit, and a perfect dodge a low whoosh sinking as time slows. Each is about as loud as the vanilla sound it replaces.

Online

  • Your blows land on time. On a server, your blow freezes, shakes the camera and sounds the moment the blade meets the target on your screen, instead of a round trip later when the blade has already passed through. The damage, the target's flash and your combo's timing still follow the server, so nothing can be faked. A blow into a guard keeps its hit sound back, a creature that isn't hostile waits for the server's first answer, and a target the server turned a blow away from waits for the server's word after that. When the server's word comes after your swing has passed the target, the freeze slows the rest of the swing instead of stopping the blade beyond it. Client option predict_hits (on). Singleplayer and the host of a world see no difference.
  • Parries and dodges timed off your screen count. On a server, your guard, dodge or jump reaches the server a round trip after you pressed it, so a parry or a perfect dodge you timed well on your screen came too late. The server now measures each player's round trip and counts their guard and dodge from when they pressed them, up to 150 ms of it, and a creature's attack waits that long for the answer: a parry, a perfect dodge or a jump over a sweep timed off your screen works as it does in singleplayer. An attack nobody answers lands up to 150 ms later. Server option online.lag_compensation (3 ticks; 0 turns it off). Arrows, other players' blows and other mods' own attacks are judged as before.
  • Perfect Strikes are timed by the server. Your attack presses reach the server as you make them, and the server times a Perfect Strike by its own clock, with a tick or two of slack for an uneven connection: a press on time on your screen counts as before, and a client claiming one for a late press gets nothing.

Other combat mods

  • Epic Fight is marked incompatible: the game won't start with both and says why. Better Combat is marked discouraged, with a warning at startup: both change the attack button and the swings.
  • Shoulder Surfing: combat mode leaves the camera to it: no sideways offset, height or lock-on framing of its own on top, and the Swap Shoulder key leaves the swapping to Shoulder Surfing's own.
  • Key clashes: when one of Duelcraft's keys shares its key with another control (a voice chat, map or Create key, say), joining a world names the pair in chat, once per launch. Client option key_clash_notice (on).

For mod makers

  • Starting in combat mode: FightApi.startInCombatMode and startsInCombatMode start a player in combat mode.
  • A bell for each peril: FightApi.glint(mob, Peril) shows the red glint with the grab's, the sweep's or the thrust's own bell.
  • Moves that dash through: a moveset move with "spacing": false keeps its whole lunge, through its target. Older Duelcraft builds ignore the field.
  • Sound events for your movesets: swing_sound can name a weapon's whoosh, mcfightmod:swing.sword, swing.light (daggers and fists), swing.spear, swing.heavy (axes and hammers) or swing.greatsword, and hit_sound mcfightmod:hit.blade, hit.blunt or hit.pierce; a move with none plays swing.light and hit.blade. Duelcraft plays hit.armor, parry, guard, roll, sting.perfect_strike and sting.perfect_dodge itself. Vanilla ids still work. Older Duelcraft builds don't know the ids, so keep to vanilla's until you need the new version.

Updating

  • Old and new versions can't connect: the network protocol changed (the dodge now says which roll it plays, each attack carries a number the server's answer names, the server sends its hit volumes to clients and measures each player's round trip, and your attack presses reach the server as you make them), and there are new particle and sound event types. Update the server and every client together.
  • Existing worlds and configs carry over; the new client and server options appear with their defaults.

This mod has no additional files