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.
ItemShare
Co-op loot sharing. Every player walks over the same drop and collects it for themselves, and it only despawns once everyone has. Artifact of Command included. Every player in the lobby needs it.
By Vibecodeguy
| Date uploaded | 2 weeks ago |
| Version | 1.7.1 |
| Download link | Vibecodeguy-ItemShare-1.7.1.zip |
| Downloads | 1513 |
| Dependency string | Vibecodeguy-ItemShare-1.7.1 |
This mod requires the following mods to function
bbepis-BepInExPack
Unified BepInEx all-in-one modding pack - plugin framework, detour library
Preferred version: 5.4.2121RiskofThunder-R2API_Networking
Networking API around the Unity UNet Low Level API (LLAPI)
Preferred version: 1.0.4Vibecodeguy-PickupShareApi
Library. Lets a loot-sharing mod publish which players have already collected which drop, so another mod can move that drop without the lobby losing track. Does nothing on its own.
Preferred version: 1.0.0README
ItemShare
Stop racing your friends to the loot.
Every player collects the same drop for themselves. The orb stays on the ground until the last person has picked it up, then despawns like normal.
Everyone in the lobby needs this installed
The loot logic itself is all server-side, but a Command cube's interaction prompt is drawn by each player's own machine, so hiding a cube you are finished with can only happen there. The mod tells every client which cubes it is done with, and a lobby is refused if somebody is missing it or running a different version — better a clear message at the door than a game where half the players are fighting their own prompts.
Modes
Set General.PickupMode in the config file.
Individual — default
Everyone walks over the orb themselves.
- First player touches it, gets the item, orb stays
- Second, third player touch it, get the item, orb stays
- Last player touches it, gets the item, orb despawns
- Once you have collected one it stops being drawn for you, so a cluster of drops thins out as you work through it
- Already collected it? Walking over it again does nothing
- Playing solo? Behaves exactly like vanilla
You still have to go get your loot, you just are not competing for it.
Artifact of Command works too. Everyone opens the cube and picks their own item, so you are not stuck with whatever the fastest player chose. The cube stays until all players have picked, then disappears. Once you have taken your pick the cube stops responding to you, so you cannot open it twice by accident.
Ping a drop to see who still needs it. Ping a pickup or a Command cube somebody has already taken and the names of the players who have not appear in chat. Untouched drops say nothing, so pinging stays quiet until it actually tells you something.
Instant
The first player to touch the orb takes it and everyone else is handed a copy on the spot, wherever they are. Good if you would rather not run around collecting, or if someone is busy holding a boss and would otherwise miss out.
Config
BepInEx/config/com.majai.itemshare.cfg, created after your first launch.
| Key | Default | What it does |
|---|---|---|
General.PickupMode |
Individual |
See above. Read once at startup — restart the game after changing. |
Tiers.White / Green / Red / Boss |
true |
Share that tier. Turn one off and it goes back to vanilla first-come-first-served. |
Tiers.Lunar |
false |
Lunar (blue) items. |
Tiers.Void |
false |
Void items. They corrupt their counterpart, so turning this on means everyone loses the corrupted item. |
Tiers.Food |
false |
The new FoodTier. Untested, so it defaults to vanilla behaviour. |
General.ShareToDead |
true |
Dead players are handed items automatically, since they cannot walk over an orb. Either way, a dead player never blocks an orb from despawning. |
General.AnnounceProgress |
true |
Individual only. Chat line showing collection progress, e.g. [ItemShare] Bandit - 2/4. |
General.ShareCommandPicks |
true |
Individual only. Artifact of Command: everyone picks their own item from the cube. |
General.PingShowsPending |
true |
Individual only. Pinging a partly-collected drop lists who is still missing it. |
General.HideCollectedOrbs |
true |
Individual only. A drop you have collected stops being drawn for you. Others still see it until everyone has it. |
General.SilenceRemoteNotificationErrors |
true |
Suppresses a vanilla error logged for every pickup that belongs to another player. Leave it on; it is a large part of why multiplayer used to stutter on pickups. |
General.ShareEquipment |
false |
Instant only. Gives equipment to players with a free slot. Never overwrites equipment someone is holding. |
Every tier flag is read live, so you can change those mid-run without restarting.
Things to know
A drop you have collected disappears for you but not for anyone else. That is
deliberate — the pickup is one networked object shared by the whole lobby, so it cannot
actually despawn until the last player has it. Only your view of it is hidden. If you
would rather see every drop until it really goes away, turn off HideCollectedOrbs.
Equipment is left completely vanilla in Individual mode. There is one equipment slot, so "everyone walks over and collects it" does not really mean anything. First to touch it takes it, same as always.
Instant mode does not charge other players for 3D printers. If someone spends an item at a printer or cauldron, only they pay for it, so inventories slowly drift apart over a run. This used to be handled, but the cost API changed shape in a recent game update and the old approach no longer applies. Individual mode is unaffected — it never assumed identical inventories in the first place.
The Scrapper, Meal Prep, the Hoard, the Solus vendor and Lemurian eggs are untouched. They run on the same controller as the Command cube, but they take items from you rather than hand them out, so sharing them would make no sense. Command cubes are identified specifically, and if that detection ever fails the cube just falls back to vanilla.
In Instant mode, Command already worked and is left alone — the cube spawns one orb and the normal instant sharing takes it from there.
Not covered yet: money.
Compatibility
Built and tested against the current Risk of Rain 2 release. It hooks exactly one
method, GenericPickupController.AttemptGrant, and does not touch the item catalog, so
it should sit fine next to content mods that add items — new items get shared according
to their tier automatically.
If a game update breaks it, the pickup API almost certainly moved. Open an issue rather than assuming it is a conflict with another mod.
ภาษาไทย
ของ drop มาแล้วไม่ต้องแย่งกัน ทุกคนเดินไปเก็บของชิ้นเดียวกันได้เอง orb จะหายก็ต่อเมื่อคนสุดท้ายเก็บแล้ว
ทุกคนในห้องต้องลง — logic แชร์ของรันฝั่ง server ก็จริง แต่ปุ่ม interact ของกล่อง Command วาดโดยเครื่องของแต่ละคน การซ่อนกล่องที่ตัวเองเลือกไปแล้วเลยต้องทำที่เครื่องนั้น ถ้าเวอร์ชันไม่ตรงหรือมีคนไม่ได้ลง จะเข้าห้องไม่ได้
โหมด Instant (ตั้งใน config) = คนแรกเก็บแล้วคนอื่นได้ copy ทันทีโดยไม่ต้องเดินไปไหน
ข้อจำกัดที่ควรรู้: คนที่เก็บไปแล้วจะยังเห็น orb ลอยอยู่ จนกว่าคนสุดท้ายจะมาเก็บ เพราะ orb เป็น networked object ตัวเดียวที่ทุกคนเห็นเหมือนกัน จะซ่อนเฉพาะบางคนต้องให้ทุกคนลง mod ด้วย เลยเลือกใช้ข้อความในแชทบอกความคืบหน้าแทน
Credits
Made by majai. Built with BepInEx and HookGenPatcher.
CHANGELOG
Changelog
1.7.1
- Fixed
HideCollectedOrbsbarely doing anything. It hid the item model and the outline and left the glow, which is most of what a drop looks like — so a collected drop still sat there looking collectable. The glow is a separate per-tier particle object that the vanilla "hide renderers" call never touches. Everything a drop draws, including its light, is now switched off, and re-applied on a timer because the game rebuilds that model on its own schedule and would otherwise turn it all back on.
1.7.0
- A drop you have already collected stops being drawn for you, while staying visible
to everyone who still needs it. This was the oldest limitation in the mod — it only
became possible once every player had it installed in 1.6.0. Especially useful where
drops end up clustered: a pile you are finished with no longer hides the one you are
not. New
HideCollectedOrbsconfig, on by default. - Only the visuals are touched. The collider, the trigger and every bit of the server-side collection logic are untouched, so hiding can never change who gets what.
1.6.1
- Fixed stuttering while picking up items in multiplayer. Vanilla logs an error every
time a pickup notification arrives for somebody else's character — a normal thing that
happens on every machine for every pickup — and this mod made it far more frequent,
because in Individual mode each player collects the same drop separately. A four-player
session produced 1718 of them, 63% of every error logged in the run. Each one captures a
stack trace and writes to disk, which is what you felt when items were being collected.
They are now skipped; nothing else changes, since the original was about to return
without doing anything anyway. New
SilenceRemoteNotificationErrorsconfig, on by default.
1.6.0
- Every player now needs the mod installed. A lobby is refused if somebody is missing it or is on a different version.
- Used Command cubes now disappear from every player's prompt, not just the host's. The server tells each client which cubes that player is finished with, so a cluster of cubes can be worked through one at a time from any machine. Previously only the host got this; remote players had to step around cubes they were done with.
1.5.1
- A Command cube you are finished with no longer blocks the cube behind it. Used cubes now vanish from your interaction prompt entirely instead of greying out, so a cluster of them - what a gather mod tends to produce - can be worked through one at a time. Greyed-out interactables still compete to be your target in vanilla; hidden ones are skipped, which is what was wanted all along.
- Dropped the
GetContextStringhook. A hidden prompt has no text to show, so it had nothing left to do, and every hook is a liability when the game updates.
1.5.0
- New dependency: PickupShareApi. ItemShare now registers with it at startup and publishes which players have already collected which drop. That lets a companion mod relocate a drop without the lobby losing track of it — Risk of Rain 2 never synchronises the position of a spawned pickup, so moving one means destroying it and spawning a replacement, and the replacement would otherwise look untouched to everybody.
- Command cube detection moved into PickupShareApi, so ItemShare and anything else that needs to tell a cube from a Scrapper now agree on the answer by construction.
- No behaviour change for players. ItemShare only ever answers questions on the API; nothing in the mod works differently because of it.
1.4.0
- A Command cube can no longer be opened again by someone who already took their pick.
The interaction is refused server-side, so it holds for remote players too, and on the
host the prompt greys out and reads
ALREADY PICKED. - Ping a drop to see who is still missing it. Pinging a pickup or a Command cube that
somebody has already taken posts the names of the players who have not. Untouched drops
say nothing, so pinging stays quiet until the information is actually useful. New
PingShowsPendingconfig, on by default.
1.3.0
- Artifact of Command is now supported in Individual mode. Every player opens the
cube and picks their own item, instead of the first chooser deciding for everyone. The
cube stays until all players have picked, then disappears. New
ShareCommandPicksconfig, on by default. - Only Command cubes are affected. The Scrapper, Meal Prep, the Hoard, the Solus vendor and Lemurian eggs use the same controller but take items rather than give them, and are left completely untouched.
1.2.1
- Fixed
MissingMethodException: void RoR2.Stage.Start()at startup, which stopped the mod from loading at all.Stage.Startis a coroutine returningIEnumerator, but the MMHOOK assembly HookGenPatcher ships still describes the oldvoidsignature. Now uses the game's ownStage.onStageStartGlobalevent, which cannot drift out of sync.
1.2.0
- Rebuilt against the current pickup API. Grants now replay the vanilla
PickupDef.GrantContextpipeline instead of writing to the inventory directly, so temp items, void corruption and per-item side effects all behave normally. - Temp items stay temp for everyone. A decaying pickup is replayed with its
decayValuerather than becoming permanent for the players who did not touch it. - Added
Tiers.Foodfor the newFoodTier. Off by default until it is tested. - Removed
MirrorItemCosts.CostTypeDef.PayCostchanged shape and the old implementation no longer applies. See the Limitations section of the README.
1.1.0
- Added
PickupMode.Individual(default) makes every player collect the orb themselves;Instantkeeps the original behaviour. - Dead players are handed items automatically and never block an orb from despawning.
- Added
AnnounceProgresschat feedback.
1.0.0
- First release. One player picks up a drop, everyone receives it.