Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
ShieldGolf
Disc golf with round shields: real disc flight, tilt, wind, skips and baskets. Client-side; optional server plugin for tournament mode. Discord: https://discord.gg/q8pCNK7pT9
| Date uploaded | 2 weeks ago |
| Version | 2.8.0 |
| Download link | z3nlabs-ShieldGolf-2.8.0.zip |
| Downloads | 53 |
| Dependency string | z3nlabs-ShieldGolf-2.8.0 |
This mod requires the following mods to function
denikson-BepInExPack_Valheim
BepInEx pack for Valheim. Preconfigured with the correct entry point for mods and preferred defaults for the community.
Preferred version: 5.4.2351README
ShieldGolf — disc golf with shields
Throw a round shield like a golf disc. The flight is physical: real disc
lift, drag and spin, so a hard throw turns right, a soft one fades left,
wind pushes it, and it skips, rolls or glances off trees when it lands.
Build a course from ordinary pieces (or put a basket down with
/discbasket) and count your own strokes, or play a scored round kept by a
dedicated server (see Two ways to play).
- Client-side for casual play. The server needs nothing unless you want scored rounds. Friends without the mod see the shield fly and land as an ordinary dropped item and can pick it up.
- Nothing new in the game. No prefabs, models or recipes; thrown shields are the game's own dropped items, baskets are vanilla building pieces.
- Vanilla stays vanilla. With a weapon in your right hand, or until you arm throw mode, every button does what it always did.
Full guide with the flight model, a throw calculator, basket plans and the
config reference: guide.html in the mod's folder (open it in a browser; in
Gale and r2modman: Open folder on the mod, or the profile's
BepInEx/plugins/ShieldGolf/ or BepInEx/plugins/z3n-ShieldGolf/). It always
matches the version you have installed. The latest one is online:
https://shieldgolf.planetdg.com/
Questions, bug reports, courses and rounds to play: join the ShieldGolf Discord.
Want to play the real thing? Find a disc golf course near you on Planet DiscGolf.
Install
- Gale, r2modman or Thunderstore Mod Manager: install ShieldGolf (https://thunderstore.io/c/valheim/p/z3nlabs/ShieldGolf/) into the Valheim profile you play with, or import the zip as a local mod (Gale: the profile's mod list; r2modman: Settings → Import local mod). BepInExPack_Valheim is the only dependency.
- Start the game from the mod manager. The profile's
BepInEx/LogOutput.logshowsShieldGolf <version>: 11 shields in 5 classes.
Linux and Steam Deck (the native build): the mod managers start the game through Steam, and BepInEx only loads when Valheim's launch option in Steam (right-click Valheim → Properties → General → Launch options) is
./start_game_bepinex.sh %command%
Set it once; without it the game starts without mods and the log above is never written. On a Steam Deck do this in Desktop Mode, where the mod manager runs.
Only players who want to throw need it, but give it to everyone in the round: when a long throw flies near another player, the game hands the shield to their client in mid-air, and only a client with the mod flies it on. Without it the shield just drops there. Players with the mod also see each other aim (the held shield's tilt and wind-up). Everyone should run the same version.
Built and measured on Valheim 1.0.21 (Linux shows it as l-1.0.21). On another version the log warns and the throws may be off.
Without a mod manager
The mod is one file, ShieldGolf.dll, loaded by BepInEx from the game
folder. Steam's game folder is C:\Program Files (x86)\Steam\steamapps\common\Valheim
on Windows and ~/.steam/steam/steamapps/common/Valheim (or
~/.local/share/Steam/steamapps/common/Valheim) on Linux.
- BepInEx, once: download BepInExPack_Valheim (denikson) from
Thunderstore, open the zip, and copy the contents of its
BepInExPack_Valheimfolder (BepInEx,doorstop_libs,winhttp.dll,doorstop_config.ini, the two.shscripts) into the game folder, next tovalheim.exe/valheim.x86_64. - The mod: open
z3n-ShieldGolf-<version>.zipand copyShieldGolf.dllto<game folder>/BepInEx/plugins/ShieldGolf/(make the folder; any name works, BepInEx loads every DLL underplugins). Updating is replacing that one file. - Windows: start the game from Steam as usual;
winhttp.dllin the game folder makes it load BepInEx. Linux, native build: in Steam, right-click Valheim → Properties → Launch options, enter./start_game_bepinex.sh %command%. If the log in step 4 never appears, make the script executable once:chmod +x "<game folder>/start_game_bepinex.sh". Linux with Proton (the Windows build forced in Compatibility): useWINEDLLOVERRIDES="winhttp=n,b" %command%as the launch option instead. - Check
<game folder>/BepInEx/LogOutput.logforShieldGolf <version>: 11 shields in 5 classes.
The config file then lives at <game folder>/BepInEx/config/z3n.shieldgolf.cfg.
r2modman, Gale and Thunderstore Mod Manager keep their own profiles and
ignore the game folder's BepInEx, so a manual install and a managed one
don't see each other; use one or the other.
Controls
Hold one of the listed shields with nothing in the right hand.
| Input | What it does |
|---|---|
| Secondary attack click (middle mouse unless you rebound it) | Arms throw mode, in backhand. Further clicks switch forehand and backhand; with a buckler or the Wood shield they step backhand, putt, forehand. Holding it half a second leaves throw mode. With a listed shield alone in your hands this button no longer kicks. |
| Block hold (right mouse) | The camera stops and the mouse tilts the shield: left dips the left edge (hyzer, bends left), right dips the right edge (anhyzer, bends right); up and down set the nose (±10°). Two lines at the top left read out the nose and tilt while you hold. Both stay where you leave them. A quick tap flattens both. |
| Attack hold, release (left mouse) | Wind up, then throw. Holding 1.2 s is a full throw: the bow's draw sound plays and the shield jolts. Let go right then for a clean throw with no release error; hold on and you overpower it: the shield trembles and the throw turns over to the turn side (right for a backhand, left for a forehand), more for an understable shield, less with skill. In putt mode it reaches the chains at 15–20 m. Aim with the camera: a level aim already throws about 10° upward, which is close to the best loft. Aim down a little for a low, fast line; aiming up stalls the disc. |
| Equip a weapon, unequip the shield, open a menu | Throw mode turns off; a menu opened mid wind-up cancels the throw. |
| Any movement key after a throw | Takes the camera back from the shield. |
Forehand spins the other way, so turn and fade swap sides.
Putt mode (bucklers and the Wood shield) is a push putt. Look at the chains and wind up: the putt goes toward the point under the crosshair, arcing up and dropping onto it.
| Wind-up | Reach |
|---|---|
| About half a second | 5 m |
| 0.8 s | 10 m |
| Full wind-up, Blocking 0 | the chains at 15 m |
| Full wind-up, Blocking 100 | the chains at 20 m |
The putt spins less than a normal throw, so it floats straight and fades a little at the end.
Aimed within 3.5 m, a putt is a tap-in: the shield leaves from above your head and lobs down where you look, so a shield parked under the basket still goes over the rim. Tap-ins need putt mode, so switch to a buckler or the Wood shield to finish a hole. A short throw with any other shield or stance is a normal throw.
Look into the basket (the funnel or the chains), not at the pole under it. Step by step, with diagrams.
The throw pose (since 2.4.0, a first try): in throw mode the body
follows the throw. A backhand stands side-on and reaches back beside the
left side as you wind up, a forehand turns a little right and reaches back
on the right, a putt stands right foot forward; at the release the arm
whips through. Other players with the mod see it too. discpose in the F5
console tweaks it for the session: discpose list, discpose <name> <value>, discpose off, and discpose cam 180 to watch yourself from the
front (discpose cam 0 back). Nothing is saved.
To see the distances, set [debug] distance_rings = true. In throw mode,
rings at 3.5 m, 10 m and 20 m lie around the point you look at.
The discs
| Class | Shield | Flies as | Flight numbers | Carry at Blocking 100 |
|---|---|---|---|---|
| Putter | Bronze Buckler | Latitude 64 Pure | 3 / 3 / −1 / 1 | about 76 m |
| Putter | Iron Buckler | Latitude 64 Sinus | 2 / 2 / 0 / 2 | about 71 m |
| Putter | Carapace Buckler | Westside Harp | 4 / 3 / 0 / 3 | about 80 m |
| Putter | Deep North (gold) buckler | Latitude 64 Savior | 4 / 4 / 0 / 3 | about 83 m |
| Mid-range | Wood shield | Latitude 64 Fuse | 5 / 6 / −1 / 0 | about 92 m |
| Mid-range | Banded shield | Latitude 64 Trust | 5 / 5 / 0 / 2 | about 91 m |
| Fairway driver | Silver shield | Latitude 64 River | 7 / 7 / −1 / 1 | about 109 m |
| Distance driver | Black metal shield | Latitude 64 Grace | 11 / 6 / −1 / 2 | about 150 m |
| Distance driver | Flametal shield | Latitude 64 Ballista | 14 / 5 / −1 / 3 | about 174 m |
| Distance driver | Deep North (gold) round shield | Latitude 64 Rive | 13 / 5 / 0 / 3.5 | about 168 m |
| Ultimate | Shield of Roots | Discraft Ultra-Star | 2 / 7 / −1 / 1 (27.3 cm) | about 61 m |
Every shield flies as its own real disc. Within a class the earlier tier is the easier, more understable one: the Wood shield and the Silver turn over, the Banded holds, and of the drivers the Grace glides and turns, the Ballista S-curves furthest on a perfect full throw, and the Rive always finishes left.
The Shield of Roots is the ultimate frisbee disc (a Discraft Ultra-Star): slow and floaty, it sinks slowest of all, hangs longest off a hill and lands flat. An easy throw floats straight; a full flat rip turns over right, so hyzer it. It does not putt.
Every shield flies a little differently:
- Blocking is the golf skill: a fresh character throws about two thirds as far with less spin, so the disc turns and fades more. A landed throw trains Blocking by its carry. Each throw costs 10 stamina.
- Quality sets stability: quality 1 is understable (turns right, fades little), max quality is overstable (holds, then fades hard).
- Wear: a landing costs 1 durability, a tree or rock 3. A worn shield is beat in and turns more; repairing it makes it stable again.
- Weight sets the disc's mass (150–180 g); heavier drifts less in wind.
- Landings: a fast, shallow landing skips; a disc that comes down on its edge rolls. One that stops where you would slide (steeper than 38°) slides down to a spot you can stand on.
Other shields (tower shields, the square iron shield) stay vanilla.
Baskets
With the hammer (1.8.0): the baskets are in the hammer's build menu, Misc tab, as "Disc basket: wood funnel", "wood ring", "small wood ring", "light wood ring", "lowered light wood ring", "iron funnel", "iron tray", "gallows" and "backboard". Place one like any other piece: you aim the basket's pole (the gallows: the post on your right as you face it) and the preview shows the whole basket around it. It handles exactly like that pole: snapping, rotation with the mouse wheel, red where it can't stand, a workbench nearby. The whole basket's materials are shown and taken as usual. What gets built is the same ordinary pieces as below, so players without the mod see a normal basket and the server needs nothing. Like any piece, a basket shows up once you have learned all its materials: the wood ones from the start, the iron ones after you have found iron.
With a command: /discbasket in chat (or discbasket in the F5 console) builds a basket
4 m ahead of you, facing you, out of ordinary building pieces: a blueprint
the command lays out for you. You bring the parts: it takes the
materials the hammer would charge for the pieces from your inventory, says
what is missing, and remove refunds them. In a world with the No build
cost modifier it costs nothing, as the hammer does there, and removing it
gives nothing back. Everyone sees the basket. With the mod, removing any
piece of it with the hammer takes down the whole basket and refunds it (1.9.0);
a player without the mod removes just that piece.
| Command | Builds |
|---|---|
/discbasket or /discbasket 5 |
The wood funnel: a log pole in a thatch funnel 4 m across, a crown of wood beams with twelve hanging 2 m wood poles as chains. No iron. |
/discbasket 6 |
The wood ring: a round basket of 1 m beams 4.8 m across on a tray sloping to the pole, a spoked top, sixteen 4 m log chains leaning in past the pole. No iron. The easy target. |
/discbasket 7 |
The small wood ring: 3.6 m across, its top set low, sixteen 2 m log chains ending at the rim. No iron. The hard target. |
/discbasket 8 |
The light wood ring: an hourglass of eight Log beam 67° crossing under the tray, opening up to a wide band like chains. No iron. |
/discbasket 9 |
The lowered light wood ring: the same a metre deep in the ground, its tray at knee height. No iron. |
/discbasket 1 |
The same funnel with iron beams and iron poles. |
/discbasket 2 |
A flat iron tray 4 m across with a rim. |
/discbasket 3 |
The gallows: a tray hanging from a curtain of iron poles between two log posts. Throw at the curtain. |
/discbasket 4 |
The backboard: the funnel with a wooden wall behind it. Bank the shot off the wall. The forgiving one, and wood only. |
/discbasket 2 8 |
Design 2, 8 m ahead (3–20 m). |
/discbasket remove |
Takes the whole nearest basket (within 8 m) down and refunds it. Use it: the crown and chains hold each other up when the pole goes. |
/discbasket help |
The usage. |
Someone else's ward and no-build zones refuse them. In casual play the game decides nothing: a shield that stays in the basket is in, by the players' word. In a scored round the server decides "in" (every design).
Two ways to play
Casual: the mod on its own. Throw, pick your own rules, count your own
strokes. Nothing runs on the server. discfind rings your last thrown
shield at 10, 20 and 50 m for half a minute.
Scored round: strict rules and a scoreboard, kept by the dedicated
server running the same ShieldGolf.dll (BepInEx, the plugins folder). The
server and every player need exactly the same version: when you update the
mod, update the server's copy too.
round create [name]makes one (a random name like ColdPlainHare if you give none) and puts you in;round listnumbers the open ones;round join <name or number>joins. On a server with several courses, stand on the first tee of the one you want andround create; where a tee is shared or you are not on a first tee, the reply lists the courses, andround create 2picks course 2 (round create 2 Sunday cupnames the round).course listshows them. One at a time; nobody joins once everyone in it has played hole 1.round leavedrops you out.- Or use a sign: put a wooden sign at the first tee, set its text to
courseand press Use on it for the Scored rounds menu (course, New round, Join, rounds under way, Leave). A sign set toteeshows the hole beside it (number, par, and the straight-line distance to the basket) on the crosshair and when you press Use. Alt-place + Use edits the sign text. A menu sign that saysteehas to be rewritten tocourse. The course sign's board reads SIGNUP in orange, and a tee sign's board shows the hole number in white, as #1. The saved words staycourseandtee. Both the server and the players need 2.8.0 for it. - Tees and baskets show on your map while the server runs this build: a round pin on a tee, a fire on a basket, named with the hole number. Two of the same kind within a metre (a shared pad) are one pin. When the world has more than one course, the pin names the course too. The marks are not saved on your map, and a player without the mod does not see them.
- Your card is holes 1..N in order, from your first throw at tee 1; the next tee is outlined in green. Every later stroke from where your shield lies: a ring on the ground shows the spot (open to the sides and the back, cut half a metre toward the basket); a status line at the top of the screen shows hole, stroke and total. A throw from elsewhere is a fault: not counted, throw again from the lie.
- Water +1 from the last dry point; lost +1 from the same lie (
round find, thenround lost); a shield on or under the basket but not in it is played from beside the basket. - The server reads everything from the synced positions. A shield moved without a throw, dying or a portal during a hole void the card. While your card is in play your hits leave trees, logs and bushes alone, and you cannot pick up another player's thrown shield; no thrown shield is ever picked up automatically, on anyone's game.
- Each hole goes to chat in your name and to the middle of your screen with
your total; when everyone is done the winner is announced and the scored
round ends.
round scoresprints a scoreboard;round closeends one early after a confirmation code. - The limit: a removed mod or a faked lie is caught; an altered flight model is not.
- Course (admins):
disctee Non the tee's floor pieces,dischole N [par]looking at the basket (par 3 unless given; every design is calibrated for "in"). More than one course:course new <name>,course edit <number or name>(whatdiscteeanddischolewrite to; with one course, replacing a set hole needscourse edit 1first),course rename <number> <name>.round void <player>voids a card. Courses cannot be deleted. - Admins are the SteamID64s in the server's
adminlist.txt(one per line;/config/adminlist.txtin the community Docker image, otherwise the server's save folder). The server re-reads it every 10 s. Everyone else may create, join and leave rounds, see scores and list courses, and close a round they created. Baskets and tees are ordinary pieces: ward them on a public server so nobody tears a hole down.
Cheats, achievements and the cheated mark
By default the mod marks nothing and flags nobody: baskets are paid for,
and there is no way to get a shield but to craft or find one. Two things
are cheats, and they only work where the game runs its own cheat commands
(devcommands in a world you host):
discshieldsin the console (or/discshieldsin chat) puts one shield of each class into your inventory, marked as a cheated item the wayspawnmarks what it creates. Carrying one blocks achievements until it is dropped or put in a chest; it is a mark on the shield, not on you.[basket] free = truemakes baskets cost nothing. Their pieces carry the game's cheated mark likenocostpieces, and refund nothing.
Neither sets the character's own cheat flag (the one confirmcheats
warns about), and neither touches the world. Note that any BepInEx mod,
this one included, makes the game count the session as modded, which by
itself blocks Steam achievements while the mod is loaded; the game's own
opt-in, yesiuseddevcommandsbutiwantmyachievementsanyway 1 in the console,
lifts that per character.
One more thing the mod does for you: in a modded session the game normally
skips its confirmcheats warning, so devcommands and then god,
tod, spawn… flags the character for good without a word. ShieldGolf
puts the warning back ([safety] confirm_cheats, on by default): a cheat
command is refused with the game's own message until you run
confirmcheats, exactly as in an unmodded game.
Config
BepInEx/config/z3n.shieldgolf.cfg in the profile (or the game folder for
a manual install), written on the first start; every setting explains itself
there. Since 1.10.0 everything that changes a throw or a basket is fixed
in the mod: the disc classes, flight constants and wind, skill, wear, the
basket designs and the controls that shape a throw. Every game flies its own
throws, so this keeps everyone throwing the same shields. The config keeps
how the controls feel (mouse sensitivity for tilt and nose, tap and exit
timings), the chase camera and visuals, the debug aids (tuning_log,
distance_rings), confirm_cheats, and the /discbasket defaults.
[testrun] is a developer check and stays off. Lines of the fixed settings
from older versions are removed from the file on the first start.
Known limits
- The mid-air handoff to another player's client was played with two players on 2026-10-23 and the flight continued; if a long throw past a friend ever stops short, report it.
- Gamepad is untested: arming follows the game's secondary-attack binding, but tilt and nose were built for the mouse.
- The throw pose is a first try: it is drawn on top of the game's own animation, players without the mod see no throw motion, and a drive leaves from the old spot beside you, not from the hand at full reach.
- Mods that change blocking or attacking on
Playermay conflict. - Scored rounds were played by two players on a local dedicated server.
Feedback
Open an issue. For a long throw that crosses a friend, include:
- both clients' mod version
- whether the shield kept flying
- whether you both saw the same landing spot
- the
[shieldgolf]lines fromBepInEx/LogOutput.logwith[debug] tuning_log = true:handed over,resumed,ownership lost,reclaimed, and the line withcarryandrest
Those lines are written only while tuning log is on.
MIT license.
CHANGELOG
Changelog
2.9.0 (2026-11-04)
- Scored rounds in a world you host from the menu (Start game, not only
a dedicated server): the referee runs in the host's game. Build the
course there with
disctee,discholeandcourse, then invite friends; they join as on a server and play scored rounds that look the same. The host is always admin in their own world; a friend is admin when listed in the host'sadminlist.txt. The course and scorecards live in the host's mod profile,BepInEx/config/shieldgolf/ tournament.<world>.json: copy that file to move a course to a server or another host. A dedicated server works as before. [tournament] enabledis now in every game's config (default on); off, that game's hosted worlds offer no scored rounds. A joined player's setting changes nothing.- The "no scored-round server" message and the course sign's panel now say it is the host or the server that runs no ShieldGolf.
- The server (or host) and every player need 2.9.0 for scored rounds; casual play does not.
2.8.0 (2026-10-30)
- A sign set to
teeshows the hole it stands on: the number, the par, and the straight-line distance to the basket. Use opens those lines, and the same lines show on the crosshair as you walk up. A sign set tocourseis the scored-round menu, which ateesign used to open. A menu sign has to be rewritten tocourse. Shift+Use still edits either sign. - The board of a course sign reads SIGNUP in orange; the saved word stays
course. A tee sign's board shows its hole number in white, as #1. The saved word staystee. - Tees and baskets are marked on your map: a round pin on a tee, a fire on a basket, named with the hole number. Two of the same kind within a metre (a shared pad) are one pin, and the course name is included when the world has more than one course. The marks are not saved on your map, and a player without the mod does not see them. They show up once the server is running this build.
- The server and every player need 2.8.0 for scored rounds; casual play does not.
2.7.2 (2026-10-28)
- Checked on Valheim 1.0.21: the automatic test run threw all 57 cases on it and they fly as on 1.0.20, so the log no longer warns that the game version was not checked. The flight and the rules did not change.
- The guide and README say who may do what on a server, how to make
someone an admin (
adminlist.txt, re-read every 10 s), that courses cannot be deleted, and to ward baskets and tees on a public server. - The server and every player need 2.7.2 for scored rounds; casual play does not.
2.7.1 (2026-10-28)
- The cape no longer flickers while you aim. The cape's cloth read the body before the throw pose was applied, so it hung for the unposed body on some frames and for the posed one on others; the pose is now applied before the cloth reads it. 2.7.0's easing stays: it only smoothed the start.
discteeanddischoleno longer replace a hole of a server's only course by accident: replacing a tee or basket that is set needscourse edit 1first (filling in a new hole does not). Before, adisctee 1meant for a second course overwrote the first course's hole 1.- The server and every player need 2.7.1 for scored rounds; casual play does not.
2.7.0 (2026-10-28)
- The body eases into the throw pose over 0.2 s when you start aiming, and back out when you stop without throwing, instead of turning up to 80° in one frame. That jump made a cape's cloth flicker. A throw within the first 0.2 s whips through from where the pose had got to.
- Scored rounds, server side:
- The sender check now covers the tee-sign menu's request too.
- When the server cannot write the course file, an admin's command answers "saving failed: see the server log" instead of seeming to work.
- Refusals, dropped packets and file problems are logged as warnings, and a fault in the server's own code as an error with its stack trace.
- Numbers in admin replies and the server log no longer depend on the server's language settings.
- Every line the mod writes to a player's log starts with
[shieldgolf](the test run's lines read[shieldgolf] test …). [tournament] calibratingonly logs where practice throws settle; every basket design is calibrated.- Inside: the code is reorganised and checked to behave the same: flights are bit-identical, every basket design builds the same pieces in the same places, and the scored-round messages and course file are unchanged byte for byte. The 565 unit tests run before every package and in CI.
- The server and every player need 2.7.0 for scored rounds; casual play does not.
2.6.2 (2026-10-27)
- Checked in game: every shield flies within 1% of the simulator's carry (the guide's carry tables say so now).
- The automatic test run's wind cases use the game's full wind, 4.5 m/s; they asked for 6, which the game never blows since 1.5.1.
- The server and every player need 2.6.2 for scored rounds; casual play does not.
2.6.1 (2026-10-27)
- Fix for 2.6.0: when another player's game takes over a flight (a shield leaving the thrower's area), it now flies on as that shield's own disc. 2.6.0 looked the disc up by its class, so a Black Metal throw went on as a Rive there.
- The automatic test run throws every shield, not one per class, on a 200 m lane (was 170 m: the Ballista carries 174 m).
- The server and every player need 2.6.1 for scored rounds; casual play does not.
2.6.0 (2026-10-27)
- Every shield flies as its own disc. Shields of one class used to fly
the same; now each has the flight numbers of a real disc mold:
- Putters: Bronze Buckler a Pure (3 / 3 / −1 / 1), Iron Buckler a Sinus (2 / 2 / 0 / 2), Carapace Buckler a Harp (4 / 3 / 0 / 3), Deep North buckler a Savior (4 / 4 / 0 / 3).
- Mids: Wood shield a Fuse (5 / 6 / −1 / 0), Banded shield a Trust (5 / 5 / 0 / 2).
- Fairway: Silver shield a River (7 / 7 / −1 / 1).
- Drivers: Black metal a Grace (11 / 6 / −1 / 2), Flametal a Ballista (14 / 5 / −1 / 3), Deep North round shield a Rive (13 / 5 / 0 / 3.5).
- The Shield of Roots stays the Ultra-Star.
- Drivers go further: about 150 m for the Grace, 168 m for the Rive and 174 m for the Ballista at full power and Blocking 100 (the old driver 141 m). Thrown softly every driver fades hard.
- Quality and wear still change each disc's stability as before; the class still decides who putts.
discshieldsgives one of every disc shield, eleven in all.- The server and every player need 2.6.0 for scored rounds; casual play does not.
2.5.1 (2026-10-27)
- A shield lying on the ground under a ring basket's rim no longer counts as holed. The extra reach for shields resting on the rim (since 2.2.5) now only counts at rim height; a low ring on a slope let a shield in the grass under its edge count.
- The server and every player need 2.5.1 for scored rounds; casual play does not.
2.5.0 (2026-10-27)
- Start and join scored rounds from a sign. Put a wooden sign at the
first tee and set its text to
tee; Use on it opens a Scored rounds menu with the course and its length, New round, Join on an open round, and the rounds under way. A blank round name is still a random one. Once you are in a round the menu shows where you are and a Leave button. Shift+Use (the alternate place key) edits the sign's text as before, and the console commands still work.round closestays a console command. - A throw outside a scored round now says to use a tee sign, or the console commands, to play one.
- The server and every player need 2.5.0 for scored rounds; casual play does not.
2.4.0 (2026-10-26)
- First try at more real throw animations. In throw mode the body now follows the throw instead of standing still and snapping into the spear throw. A backhand stands side-on, right shoulder to the target, and the right arm reaches back beside the left side as the power builds; a forehand turns 30° right and reaches back on the right; a putt stands right foot forward. The reach-back follows the wind-up, and at the release the arm whips through into a follow-through. The shield sits in the right hand. Everyone with the mod sees it on other players too; players without the mod see the shield leave, without the spear throw.
- A putt now leaves from the middle of the body, in front of you, instead of from the left side; the putt still goes where you look.
discposein the F5 console tweaks the pose for the current session:discpose listshows the values,discpose <name> <value>changes one,discpose offturns the pose off,discpose cam 180swings the camera around your own character to watch your throw from the front (cam 0back). Nothing is saved; a restart brings back the defaults.- The server and every player need 2.4.0 for scored rounds; casual play does not.
2.3.0 (2026-10-26)
- Several courses on one server. A server holds numbered, named course
layouts on the same map; layouts keep their number and may share baskets
and tees. Admins build them with
course new <name>,course edit <number or name>(which layoutdiscteeanddischolewrite to; with more than one layout they refuse until the admin has picked one since the server started, so a restart never sends them to the wrong course) andcourse rename <number> <name>; everyone can readcourse list. Everydiscteeanddischolereply names the layout, anddischoleon a basket another layout uses adds "also hole N in <name>". - How a round picks its course.
round create 2uses layout 2 (a number is never a round name:round create 2 Sunday cupis layout 2, round "Sunday cup"). Without a number, a server with one complete layout starts it from anywhere, as before. With several, the first tee you stand on decides when it starts exactly one layout; if it starts several, or you are not on a first tee, no round is made and the reply lists the courses. Incomplete layouts are never offered. round listandround scoresshow<round> · <course>. A round keeps the course name it was created with.- The server's state file is now per world:
BepInEx/config/shieldgolf/tournament.<world>.json. An oldtournament.jsonbecomes layout 1,Course 1, of the first world that starts without its own file, open rounds included, and is then renamedtournament.json.moved-to-<world>. A file that cannot be read is kept as<file>.bad-<timestamp>. - The server and every player need 2.3.0 for scored rounds; casual play does not.
2.2.7 (2026-10-25)
- ShieldGolf has a Discord: https://discord.gg/q8pCNK7pT9 (linked from this README, the guide and the listing). No change to the game.
2.2.6 (2026-10-25)
- The flight code is reorganised, with no intended change to how shields fly: the flight's phase (air, rolling, landed, sliding, watching another player's flight) is one value, and the "slow for long enough" checks are one tested rule.
- Fix: a long flight taken over by another player's game first passed on its speed as zero for a moment; if it changed hands again in that moment, it went on from a standstill. It now passes on its real speed.
2.2.5 (2026-10-24)
round scoresalso lists the rounds still in play, by score to par so far ("Depp 7 after 2 (+1)"), and their holes count for the best per hole. Before, it showed only finished rounds.- Fix (server, 2.2.4 only): a thrown shield was judged only when it was picked up, never when it lay still, because two parts of the server used different clocks. A shield left lying in the basket was not counted until someone picked it up.
- A shield resting on the rim of a ring basket (designs 6 to 9) is
in. Four shields in the first two-player round lay on the rim, 2.2 m
up, and counted out by 1 to 21 cm. Holes already tagged need no new
dischole. - A throw more than 20 m from your lie says the hole is not finished ("hole 10 is not finished: your lie is 144 m away"), and so does the line at the top. In the first two-player round both players walked on to the next tee after a putt that had not counted.
- Tap-in (scored rounds): when your lie is within 2 m of the basket's outer edge, you have your shield back in hand, stand on the lie and look at the basket, "Tap in: click" shows; a click counts the putt that goes in (one stroke, holed). The server checks where you stand. Server and clients need 2.2.5.
- Picking up your own thrown shield puts it straight back in your hand.
- When the follow camera hands back because your shield has come to rest, your view turns to face the shield (direction and height). Ending the follow early with a movement key leaves your view as it was.
- A holed shield says so: the card line in chat and in the middle of the screen starts with "IN the basket!".
- The next tee's outline and the lie ring are thicker and a brighter green, and the tee outline lies on the tee's floor pieces (it used to drop to the ground at their foot, almost hidden on snow).
2.2.4 (2026-10-24)
- Backhand, putt and forehand show in big letters in the middle of the screen, and change at once when you click through them. They used to queue up in small text at the top left, a few seconds behind your clicks. The once-per-session controls hint stays at the top left.
- Messages are sorted by what they are: results (throw length, scorecard, basket built) and refusals (shield still out, another player's shield, no build zone) show in the middle, refusals in orange. A second result while the first still shows goes under it, so holing out no longer hides the throw's length. The "ShieldGolf:" prefix in the middle is gone.
- Scored rounds (server and client, from a code review):
- A shield that landed in water no longer voids the round as "moved without a throw" while it floats away from the dry lie.
- Small nudges to a resting shield are measured from where it came to rest, so they cannot add up to a free move.
- Calling a shield lost after a throw that did not count (a fault) costs no stroke, and calling it lost twice costs one.
- A finished player can no longer join the same scored round again and start over.
- A shield on a dock or bridge over the sea is not in the water.
discbasketlists all nine designs.
2.2.3 (2026-10-24)
- The iron funnel and the iron tray (designs 1 and 2) count in scored rounds, calibrated from putts on the live world. Every basket design now does.
discholealso writes the basket's position and facing to the log.
2.2.2 (2026-10-24)
- Shields no longer sink into the ground after landing. When the flight ended, the shield's collider snapped back a few centimetres into the ground; the shield fell through, the camera with it, and the game lifted it out again a few seconds later. It now stays where it lies.
- The throw's length shows sooner: the shield counts as stopped once it moves less than 5 cm in 2 seconds (was 3 cm).
- The gallows (design 3) counts in scored rounds, calibrated from
putts on the live world.
discholeon a gallows built before 2.2.0 no longer takes it for the iron tray. Only the iron funnel and the iron tray (1 and 2) still wait for theirs.
2.2.1 (2026-10-24)
- The throw's length is measured where the shield really stops. A shield still creeping on a rim edge or a slope counted as at rest, then fell off the rim or slid on, and the length shown was where it had been. Your game now follows the shield until it has not moved for 2 seconds, then shows the length (and logs where it ended and how far it went on).
2.2.0 (2026-10-24)
- New basket: the lowered light wood ring (design 9,
/discbasket 9or the hammer). The light wood ring with its logs a metre deep in the ground: the tray at knee height, the same pieces and price. It counts in scored rounds like the light wood ring. - Every basket you build now remembers its design, so
discholetells the light wood ring and the lowered one apart. - The hammer's text for the light wood ring describes the hourglass it is.
2.1.1 (2026-10-24)
- The backboard (design 4) counts in scored rounds. Two putts holed
and two under it on the live world calibrated it:
discholenow takes designs 4 to 8. The iron designs 1 to 3 still wait for theirs. - Linux and Steam Deck: the install notes say that the mod managers
need Valheim's Steam launch option
./start_game_bepinex.sh %command%.
2.1.0 (2026-10-24)
- Stronger arm, higher floor. A full throw at Blocking 100 leaves the hand at 34 m/s (122 km/h, a strong 1000-rated player; was 32), and Blocking 0 gets 85% of that speed and 88% of the spin (was 80% and 84%). At Blocking 100 the putter carries about 72 m, the mid 88 m, the fairway 102 m and the driver 141 m; a fresh character drives about 95 m. Holes play shorter than before.
- Quality matters more for a strong arm. Thrown flat at full power, a quality 1 driver now turns over for a strong player, as an understable disc does: throw it on hyzer, or pick a higher quality for a straight line. At full power the putter and the mid turn right too.
- The throw's length in big letters once your shield comes to rest:
the distance from where you threw it ("48 m"), and shouted into chat
for every player on the server ("Depp: threw 48 m (Black metal
shield)"), long drives too: when the flight passes to another game (the
server, a friend) the shield is followed until it rests.
[visual] throw_distanceandthrow_distance_chatturn them off. - The held shield shows its real angle. The equipped model sits about 30° off in its holder (it is made for the forearm), so at tilt 0 the shield in your hand looked slanted and 11° of anhyzer looked like 40°. The pose now measures the model's face and corrects it: what you see is what the aim readout says.
- The throw leaves from where you hold the shield: beside you, on the left for a backhand and on the right for a forehand. It used to start at the hand, which the throw-mode pose keeps near the middle of the body, so from behind a tree it started behind the tree.
- The wood rings have their own icons in the hammer menu.
- Scored rounds need the server and every player on the same version: update the server's ShieldGolf.dll together with the clients.
2.0.1 (2026-10-24)
- Scored rounds count the small wood ring (design 7) and the light wood ring (design 8): both calibrated from putts holed in game. Every wooden basket (5 to 8) now works in a scored round.
2.0.0 (2026-10-24)
Scored rounds: the mod gains a server side (the same DLL on a dedicated server), hence the new major version. Casual play is unchanged and needs nothing on the server.
- Two ways to play. Casual: the mod alone, your own rules, nothing counted. Scored round: strict rounds scored by a dedicated server that loads the same ShieldGolf.dll (BepInEx); the server reads everything from the synced positions, no client reports a score.
- Scored rounds (
round …;tournament …still works):round create [name]makes one (a random name like ColdPlainHare otherwise), othersround join <name or number>fromround list. You are in one at a time; nobody can join once everyone in it has played hole 1.round leave,round scores [name or number],round lost,round find; adminsround void <player>.round closeasks for a four-digit code andround close <code>ends it (the creator or an admin); a round also ends by itself when everyone is done and announces the winner or the tie. - The rules. Holes 1..N in order. Stroke 1 from the tee, every later stroke from the lie: a D-shaped area 1.5 m around where the shield lies, open to the sides and the back, cut half a metre toward the basket. A throw from anywhere else is a fault: not counted, warned, fetch the shield and throw again. Water +1, played from the last dry point of the flight; a lost shield +1 from the same lie. A shield resting on or under the basket but not in it is played from beside the basket. A shield moved without a throw, dying or a portal during a hole void the card.
- On screen in a round. A status line at the top centre (round, hole, stroke, running total); centre-screen lines for a start, a card, the finish with your place, a fault, water, a lost shield; a ring on the ground around your lie, green while you stand inside it; the next tee outlined in green between holes.
- Fair play in a round. Another player's thrown shield cannot be picked up, and no thrown shield is ever picked up automatically, on anyone's game. Your hits leave trees, logs and bushes alone while your card is in play.
- Chat. Cards, finishes and announcements go to chat in the player's name ("Depp: Hole 1: 3 (par 3) E"); players without the mod see them too.
- Courses. Admins tag tees with
disctee N(standing on the tee's floor) and baskets withdischole N [par](looking at it, par 3 by default). The course and the rounds survive server restarts (BepInEx/config/shieldgolf/tournament.json). Only calibrated basket designs count "in": the wood funnel (5) and the wood ring (6). - The limit, stated: the server scores the shield's real path as every client sees it, so a removed mod or a faked lie is caught; an altered flight model is not.
discfind(casual play): rings at 10, 20 and 50 m around your last thrown shield for half a minute.- Three round baskets, wood only, in the hammer's Misc tab and as
/discbasket 6to/discbasket 8: the wood ring (6, 4.8 m across, a spoked top, sixteen 4 m log chains twisting in past the pole: the easy target), the small wood ring (7, 3.6 m across, sixteen 2 m log chains ending at the rim) and the light wood ring (8, an hourglass of eight Log beam 67° crossing under the tray, opening up to a wide band). - Fixes. A shield that sticks against a rock or a tree's base after brushing it counts as landed after a second, instead of the camera following it for 20 s. Ground rings (lie, tee, find, distance) no longer climb into trees. The hillside slide (1.15.0) pushes along the ground, not into it.
- Played on a local dedicated server: two players through full scored rounds (one tied), faults, a void, resume after a server restart, the chat lines on a client without the mod. The live server not yet.
1.16.1 (2026-10-23)
- The aim readout sits under the hotbar (measured from the HUD at your GUI scale) instead of over its slots.
1.16.0 (2026-10-23)
- Aim readout: while you hold block in throw mode, two lines at the top
left say the nose and tilt you are setting ("Nose 4° up", "Tilt 15° left
edge down (hyzer, bends left)"), so you need not read the held shield's
pose. Hyzer and anhyzer follow the stance.
[visual] aim_readout = falseturns it off. Checked in game: the lines show; they overlapped the hotbar, fixed in 1.16.1.
1.15.1 (2026-10-23)
- The slide off steep ground was checked in game: a shield that stopped on a bank next to a basket slid down to where the player can stand.
1.15.0 (2026-10-23)
- A shield that comes to rest where a player would slide (any surface steeper than the game's own 38° limit: a hillside, a rock, a roof) now slides down the fall line at 2 m/s until it rests on something the player can stand on, however small. Off an edge it falls and settles again; against a tree or a rock it stays. Before, a shield could sit on a bank next to the basket that no player could reach without sliding past it. The camera follows the slide.
1.14.0 (2026-10-21)
- The Shield of Roots throws: a fifth class, ultimate, flown as a Discraft Ultra-Star (27.3 cm, the disc of ultimate frisbee). Slow, the most glide in the bag, it sinks slowest, so it hangs longest off a hill; an easy throw floats straight, a full flat rip turns over right, and it lands flat with no fade. About 58 m at Blocking 100, 47 m at Blocking 0. Hyzer a hard throw. It does not putt.
- The flight model flies each class at its own diameter (a fifth, optional number in the class line, in cm); the golf classes are unchanged.
discshieldsnow gives five shields, one per class.- Not yet checked in game: the ultimate class flies in the simulator only.
1.13.7 (2026-10-21)
- Guide: long paragraphs are broken into short ones and lists, all the way through. A stray "p>" before the putt table is gone.
1.13.6 (2026-10-21)
- Guide: the tap-in top view is centred on the basket, with players standing inside the 3.5 m range (tap-in) and outside it (push putt).
1.13.5 (2026-10-21)
- The guide is rebuilt for players: install, how to play, building a course (baskets and tees), keeping score, and how the discs fly. The formulas, flight model, calculator, manual install, cheats, config and test tools are in an Advanced part at the end.
- The guide's basket pictures are inside the page, so they show wherever
guide.htmlis opened.
1.13.4 (2026-10-21)
- Guide: the four steps of a throw are now part of the introduction, and the quick start is the install. Tuning and the test run keep the last section. The contents list matches the section numbers again.
1.13.3 (2026-10-21)
- The test run's default character and world name is now
z3nlabs. A name already saved in your config stays as it is.
1.13.2 (2026-10-21)
- Guide and README: the old config notes are gone. The disc classes,
putt_also, wind and the basket designs have been fixed since 1.10.0, and the wind formula reads 4.5 m/s as everywhere else. - The hammer's gallows preview is the post on your right as you face the basket (it said left).
- 1.12.0, clarified: holding past the clean window replaced the extra random error of 1.11.0 with anhyzer. The ordinary skill wobble, as for a throw released before full power, still applies; only a clean release has none.
1.13.1 (2026-10-21)
- The mod's website is now https://shieldgolf.planetdg.com/ (the guide). The README and guide also point to Planet DiscGolf for finding a real course near you.
1.13.0 (2026-10-21)
- The full player guide ships with the mod:
guide.html(with its basket pictures) in the mod's folder, matching the version you have. The website keeps the latest one. - Guide: compensating overpowering with a more overstable shield or class.
1.12.0 (2026-10-21)
- Overpowering turns it over. Holding a full throw past the clean
window no longer adds a small random error: as with a real disc thrown
harder than it is built for, or ripped with a rolled wrist, the release
gets anhyzer toward the turn side, right for a backhand and left for a
forehand: 15° per second past the window, up to 20°. An understable shield
takes up to 1.5 times that, an overstable one half, and Blocking 100
halves it again. Fully overpowered, a full driver at Blocking 100 lands
about 30 m further right. The log says
release=late anhyzer=+N.
1.11.0 (2026-10-21)
- Sweet spot. A full throw reaches full power at 1.2 s: the bow's draw
sound plays and the shield in your hand jolts forward. Let go within the
clean window right after (0.15 s at Blocking 0, 0.3 s at Blocking 100)
and the throw is clean, with no release error at all. Hold on past it and
the shield trembles: the power stays full, but the release error grows,
mildly, up to 4° of tilt and 2° of aim. A clean throw goes no further.
Putts and tap-ins are unchanged. The tuning log marks
release=cleanorrelease=late+N.
1.10.0 (2026-10-21)
- Stats locked. Everything that changes a throw or a basket is fixed in
the mod now: the disc classes (
[discs]), the flight constants and wind ([physics]), skill, wear, the basket designs ([basket1]to[basket5]) and the controls that shape a throw (tilt and nose limits, wind-up time, stamina, loft, putt and tap-in numbers). Each game flies its own throws, so a config value let every player tune their own shields. The config keeps control feel, visuals, debug aids,confirm_cheats, the test run and the/discbasketdefaults. Old lines of the locked settings are removed from the file on the first start; the log lists them. Your own edits to them no longer apply.
1.9.0 (2026-10-21)
- Removing any piece of a basket with the hammer takes down the whole basket, refunded as if every piece had been removed. The ward and the game's removal rules apply to the piece you hit. Players without the mod still remove just that piece.
1.8.3 (2026-10-21)
- Hammer baskets are listed under Misc again; in 1.8.2 they inherited the pole's place in the menu (Building).
1.8.2 (2026-10-20)
- Hammer baskets: the preview stayed at your feet instead of following the crosshair. It is now the basket's pole (the gallows: its left post) carrying the rest of the basket, and handles exactly like that pole: it follows the crosshair, snaps, rotates and needs a workbench nearby. The basket is built where the preview stood.
1.8.1 (2026-10-20)
- The hammer baskets were added but not shown: the game lists only pieces you have learned, and learns them only at spawn or when your inventory changes. They are learned right away now. Like any piece, a basket shows once you know all its materials (the iron ones after you have found iron).
1.8.0 (2026-10-20)
- Baskets in the hammer menu (Misc tab). Place a basket like any other
piece: the game's preview of the whole basket, mouse-wheel rotation, red
where it can't stand, its total materials in the menu. The basket is
built from ordinary pieces exactly as
/discbasketbuilds it, so the world only holds vanilla pieces and players without the mod see it as usual./discbasketstays, withremove. - Guide: the tap-in top view labels where you stand and the pole, with sight lines to the aimed points.
1.7.1 (2026-10-20)
- Funnel baskets (5, the default, and 1): the upper log square sits 0.25 m higher, so 1.9 m stays between it and the rim's log square and you can climb into the basket to fetch your shields. It still rests against the crown. Baskets built before keep their old shape: remove and build again.
1.7.0 (2026-10-20)
- Distance rings, a debug aid (
[debug] distance_rings, off by default): in throw mode, rings on the ground around the point under your crosshair at the tap-in range (3.5 m), 10 m and 20 m. Look at a basket's pole to see how far you stand. Drawn only on your screen.
1.6.3 (2026-10-20)
- Documentation: the guide has a tap-in section with step-by-step use and diagrams (side view against basket 5, top view of the range); the README links to it.
1.6.2 (2026-10-20)
- Documentation: tap-ins need putt mode, so they work with the bucklers and the Wood shield; switch to one to finish a hole.
1.6.1 (2026-10-20)
- Tap-ins reach further: a putt aimed within 3.5 m (was 2.5 m) is a tap-in. A config that still holds the old default is updated.
- The tap-in lob now allows for the air, so it comes down within 0.1 m of where you look even from 3.5 m.
1.6.0 (2026-10-20)
- Tap-ins. The baskets stand higher than real ones, so a shield parked
right under one was almost impossible to putt. A putt aimed at a point
within 2.5 m of you is now a tap-in: the shield leaves from above your
head in a short lob that comes down where you look, over the rim. The
wind-up doesn't matter; your aim does. New
[controls]settings:tap_in_range,tap_in_release_height,tap_in_min_loft_deg.
1.5.1 (2026-10-20)
- The wind is a little weaker: full game wind is 4.5 m/s instead of 6
(
[physics] wind_scale). A crosswind could outweigh a forehand's fade and push it to the wrong side at the end. A config that still holds the old default 6 is updated; a value you changed is kept. - The tuning log gives the wind's direction against the throw:
wind_across(+ blowing to the right) andwind_along(+ tailwind).
1.5.0 (2026-10-20)
- Other players see you aim: while throw mode is on, your shield is held out flat with your tilt, nose, stance and wind-up on their screens too, not only on yours. They need the mod (1.5.0 or later); players without it see the shield as before.
1.4.1 (2026-10-20)
- The end of a flight: a long fade could curl the path round and bring the
shield back toward you, and a nose-up shield falling steeply stopped dead
in the air. The shield's tilt now stops following its path once it has
bent 15° off the throw line, and a falling shield eases its nose level, so
it dives or glides on and never comes back. Throws from high ground gain
distance (a driver from a 30 m hill: about 153 m instead of 131 m).
Ordinary flat throws fly as before. New
[physics]settings:max_frame_turn_deg,descent_ease_start_deg,descent_level_deg. - Everyone in a group should update: a handed-over flight is continued with the model of the game that holds it.
1.4.0 (2026-10-20)
- The Deep North buckler and round shield throw: the buckler as a putter, the round shield as a distance driver. Their tower shield stays vanilla, like every tower shield. Sizes not yet measured in game.
- The Wood shield can putt too (
[discs] putt_also), so one cheap starting shield drives and putts. - A
[discs]line that still holds an earlier default is updated to the new one on start, so existing configs get the new shields; a line you edited is left alone.
1.3.2 (2026-10-20)
- The game-version warning compares the version number only. Windows reports
1.0.20where Linux reportsl-1.0.20, so Windows players got the warning on the right version. The check can no longer stop the mod from loading on another game build either.
1.3.1 (2026-10-20)
- A movement key after a throw takes the camera back from the shield. Before, a shield that never settled (seen next to a player without the mod) held the view until the flight's 20 s limit.
1.3.0 (2026-10-20)
- Putt mode for bucklers: in throw mode a click steps backhand, putt,
forehand. A putt is a push putt aimed by looking at the chains: it goes
toward the point under the crosshair, arcing up onto it. The wind-up
covers putting distances (a full one reaches the chains at 15–20 m), skill
counts less than on a full throw, and the disc spins less, so it floats
straight and fades a little sooner.
[controls] putt_max_power,putt_loft_offset_deg,putt_speed_at_zero_skill,putt_spin. - In a world with the No build cost modifier a basket costs nothing, as the hammer does there; nothing is marked and removing it gives nothing back.
/discbasketwith a trailing space (tab completion and chat leave one) builds the default basket instead of printing the help.
1.2.0 (2026-10-20)
- Renamed from DiscGolf to ShieldGolf throughout: the file is
ShieldGolf.dll, the plugin idz3n.shieldgolf, the config filez3n.shieldgolf.cfg(copy values over fromz3n.discgolf.cfgif you had changed any). Remove the oldz3n-DiscGolffolder (orDiscGolf.dll), or both plugins load. - No cheat marks by default. A basket now costs what its pieces cost
with the hammer and refunds them when removed; nothing is marked as
cheated and the character is never flagged.
[basket] freeis the cheat: it needsdevcommandsin a world you host, and the free pieces carry the game's cheated mark likenocostpieces do. - Basket 5, the wood funnel: basket 1 without iron (wood beams for the
crown, 2 m wood poles as chains). It is what
/discbasketbuilds with no number ([basket] design). [safety] confirm_cheats(on): brings back the game'sconfirmcheatswarning, which vanilla skips whenever a mod is loaded; a cheat command is refused until you runconfirmcheats, as in an unmodded game.- The F9 shield spawn is gone.
discshieldsin the console (or/discshieldsin chat) gives one shield of each class, marked as cheated items the wayspawnmarks them. It runs only withdevcommandsin a world you host, and it never sets the character's cheat flag. - Throw mode is armed with the game's secondary attack button (middle mouse unless you rebound it). The gamepad's secondary-attack button is read as well, but throwing with a controller is untested. With a listed shield alone in your hands that button no longer kicks.
/discbasket help(or any wrong argument) prints the usage.- The first time throw mode is armed in a session, the message names the controls.
- Middle click on the map, in a trader's shop or in the hammer's piece menu no longer arms throw mode.
- The BepInEx log warns when the game is not the version the throws were measured on (l-1.0.20).
- Every
[physics]and[controls]setting explains itself in the config file. - MIT license, this changelog and a player README in the package.
1.1.0 (2026-10-18)
- Physical flight model: real disc lift, drag and pitching moment, spin from Blocking, quality as stability, wear, weight, wind, skips, rollers, glances. Measured in game against the simulator (34 throws, within 2 %).
- Mid-air handoff: when the game hands a long throw to another player's client, their mod continues the exact flight. Every player needs 1.1.0 or later for that.
- Four basket designs from vanilla pieces:
/discbasket 1to4,/discbasket remove. - Chase camera, forehand, nose angle, the flattening tap.
1.0.0 (2026-10-17)
- First build: throw mode on round shields, tilt, wind-up, Blocking training, r2modman package.