GatherRang V2
Native-Style Ranged Gathering for Rust (High-Pop Optimized)
GatherRang V2 is a full rewrite designed to let players farm trees, ore nodes, and corpses using ranged weapons — while still behaving like native Rust gathering internally.
Instead of faking yields or spawning resources, V2 routes hits through Rust’s ResourceDispenser system using the same mechanics tools rely on (fraction remaining, destroy fraction, finish bonus, hotspot scaling, etc.). This keeps the system stable, consistent, and compatible with Rust’s normal gather behavior.
Media:
What Players Can Farm:
Native-Style Gather Flow:
GatherRang V2 gathers through Rust’s native dispenser calls:
So the plugin supports:
Always Hit System (Permission Based):
GatherRang V2 includes two optional VIP-style permissions that force the bonus systems:
Always Hit “X” (Trees)
Always Hit Spark (Nodes)
Permission System:
Core (Required)
Weapon-Type + Target Permissions
Trees:
Nodes:
Flesh (corpses/animals):
Bonus forcing:
Player Toggle System (No Chat Spam)
GatherRang V2 does not send gather messages to chat.
So players can opt in/out without any server-wide spam.
Datafile-Based Farming Profiles
Gather behavior is driven by profiles stored in a datafile, not hardcoded values.
Profiles File > GatherRang/FarmProfiles >Profiles define:
Default profiles are created automatically if missing, and new defaults are merged in safely over time.
This system makes it easy for server owners to:
Per-Weapon Profile Overrides
Each weapon group supports per-weapon overrides through config:
Config key:
"Per-Weapon Inherit Profile Overrides (shortname -> profileName)"
Example use cases:
Config Example:
{
"Enabled": true,
"Enable Tree Gathering": true,
"Enable Node Gathering": true,
"Enable Flesh Gathering (corpses)": true,
"Native Engine Settings": {
"Kill Trees On Complete": false,
"Kill Nodes On Complete": true,
"Kill Corpses On Complete": false,
"UseFinishBonus": true
},
"Weapon Group Defaults": {
"Bow": {
"Default Profile (name)": "Generic",
"Override Tree.gatherDamage (-1 = inherit)": -1.0,
"Override Ore.gatherDamage (-1 = inherit)": -1.0,
"Override Flesh.gatherDamage (-1 = inherit)": -1.0
},
"Pistol": {
"Default Profile (name)": "Generic",
"Override Tree.gatherDamage (-1 = inherit)": -1.0,
"Override Ore.gatherDamage (-1 = inherit)": -1.0,
"Override Flesh.gatherDamage (-1 = inherit)": -1.0
},
"Shotgun": {
"Default Profile (name)": "Generic",
"Override Tree.gatherDamage (-1 = inherit)": -1.0,
"Override Ore.gatherDamage (-1 = inherit)": -1.0,
"Override Flesh.gatherDamage (-1 = inherit)": -1.0
},
"SMG": {
"Default Profile (name)": "Generic",
"Override Tree.gatherDamage (-1 = inherit)": -1.0,
"Override Ore.gatherDamage (-1 = inherit)": -1.0,
"Override Flesh.gatherDamage (-1 = inherit)": -1.0
},
"Rifle": {
"Default Profile (name)": "Generic",
"Override Tree.gatherDamage (-1 = inherit)": -1.0,
"Override Ore.gatherDamage (-1 = inherit)": -1.0,
"Override Flesh.gatherDamage (-1 = inherit)": -1.0
}
},
"Weapon Groups": {
"Bow": {
"Enabled": true,
"Weapon Shortnames (exact item shortname)": [
"bow.hunting",
"bow.compound",
"crossbow",
"minicrossbow",
"legacy bow"
],
"Per-Weapon Inherit Profile Overrides (shortname -> profileName)": {}
},
"Pistol": {
"Enabled": true,
"Weapon Shortnames (exact item shortname)": [
"pistol.revolver",
"pistol.semiauto",
"pistol.python",
"pistol.m92",
"pistol.nailgun",
"pistol.semiauto.a.m15",
"pistol.prototype17"
],
"Per-Weapon Inherit Profile Overrides (shortname -> profileName)": {}
},
"Shotgun": {
"Enabled": true,
"Weapon Shortnames (exact item shortname)": [
"shotgun.pump",
"shotgun.spas12",
"shotgun.double",
"shotgun.waterpipe",
"blunderbuss",
"krieg.shotgun",
"shotgun.m4"
],
"Per-Weapon Inherit Profile Overrides (shortname -> profileName)": {}
},
"SMG": {
"Enabled": true,
"Weapon Shortnames (exact item shortname)": [
"smg.2",
"smg.thompson",
"smg.mp5",
"t1_smg"
],
"Per-Weapon Inherit Profile Overrides (shortname -> profileName)": {}
},
"Rifle": {
"Enabled": true,
"Weapon Shortnames (exact item shortname)": [
"rifle.ak",
"rifle.ak.diver",
"rifle.ak.ice",
"rifle.ak.jungle",
"rifle.ak.med",
"rifle.sks",
"rifle.lr300",
"rifle.lr300.space",
"rifle.bolt",
"rifle.l96",
"rifle.m39",
"rifle.semiauto",
"lmg.m249",
"hmlmg",
"minigun"
],
"Per-Weapon Inherit Profile Overrides (shortname -> profileName)": {}
}
},
"Debug Enabled": false
}
Profile Datafile Example:
{
"Rock": {
"Tree.gatherDamage": 10.0,
"Ore.gatherDamage": 5.0,
"Flesh.gatherDamage": 10.0,
"Tree.destroyFraction": 0.5,
"Ore.destroyFraction": 0.5,
"Flesh.destroyFraction": 0.5
},
"BoneClub": {
"Tree.gatherDamage": 9.0,
"Ore.gatherDamage": 4.0,
"Flesh.gatherDamage": 5.0,
"Tree.destroyFraction": 0.4,
"Ore.destroyFraction": 0.4,
"Flesh.destroyFraction": 0.5
},
"BoneKnife": {
"Tree.gatherDamage": 0.0,
"Ore.gatherDamage": 0.0,
"Flesh.gatherDamage": 10.0,
"Tree.destroyFraction": 0.0,
"Ore.destroyFraction": 0.0,
"Flesh.destroyFraction": 0.0
},
"StonePickaxe": {
"Tree.gatherDamage": 0.0,
"Ore.gatherDamage": 16.0,
"Flesh.gatherDamage": 10.0,
"Tree.destroyFraction": 0.0,
"Ore.destroyFraction": 0.15,
"Flesh.destroyFraction": 0.2
},
"StoneHatchet": {
"Tree.gatherDamage": 20.0,
"Ore.gatherDamage": 0.0,
"Flesh.gatherDamage": 10.0,
"Tree.destroyFraction": 0.15,
"Ore.destroyFraction": 0.0,
"Flesh.destroyFraction": 0.334
},
"SalvagedCleaver": {
"Tree.gatherDamage": 0.0,
"Ore.gatherDamage": 0.0,
"Flesh.gatherDamage": 10.0,
"Tree.destroyFraction": 0.0,
"Ore.destroyFraction": 0.0,
"Flesh.destroyFraction": 0.1
},
"VampireStake": {
"Tree.gatherDamage": 0.0,
"Ore.gatherDamage": 0.0,
"Flesh.gatherDamage": 30.0,
"Tree.destroyFraction": 0.0,
"Ore.destroyFraction": 0.0,
"Flesh.destroyFraction": 0.0
},
"BaseballBat": {
"Tree.gatherDamage": 0.0,
"Ore.gatherDamage": 0.0,
"Flesh.gatherDamage": 10.0,
"Tree.destroyFraction": 0.0,
"Ore.destroyFraction": 0.0,
"Flesh.destroyFraction": 0.1
},
"Hatchet": {
"Tree.gatherDamage": 30.0,
"Ore.gatherDamage": 0.0,
"Flesh.gatherDamage": 12.0,
"Tree.destroyFraction": 0.1,
"Ore.destroyFraction": 0.0,
"Flesh.destroyFraction": 0.0
},
"Pickaxe": {
"Tree.gatherDamage": 0.0,
"Ore.gatherDamage": 30.0,
"Flesh.gatherDamage": 5.0,
"Tree.destroyFraction": 0.0,
"Ore.destroyFraction": 0.0,
"Flesh.destroyFraction": 0.6
},
"SalvagedAxe": {
"Tree.gatherDamage": 50.0,
"Ore.gatherDamage": 0.0,
"Flesh.gatherDamage": 15.0,
"Tree.destroyFraction": 0.0,
"Ore.destroyFraction": 0.0,
"Flesh.destroyFraction": 0.0
},
"SalvagedIcepick": {
"Tree.gatherDamage": 0.0,
"Ore.gatherDamage": 50.0,
"Flesh.gatherDamage": 5.0,
"Tree.destroyFraction": 0.0,
"Ore.destroyFraction": 0.0,
"Flesh.destroyFraction": 0.2
},
"Jackhammer": {
"Tree.gatherDamage": 0.0,
"Ore.gatherDamage": 25.0,
"Flesh.gatherDamage": 5.0,
"Tree.destroyFraction": 0.0,
"Ore.destroyFraction": 0.0,
"Flesh.destroyFraction": 0.2
},
"Chainsaw": {
"Tree.gatherDamage": 30.0,
"Ore.gatherDamage": 0.0,
"Flesh.gatherDamage": 2.0,
"Tree.destroyFraction": 0.0,
"Ore.destroyFraction": 0.5,
"Flesh.destroyFraction": 0.25
},
"SalvagedHammer": {
"Tree.gatherDamage": 20.0,
"Ore.gatherDamage": 20.0,
"Flesh.gatherDamage": 10.0,
"Tree.destroyFraction": 0.2,
"Ore.destroyFraction": 0.2,
"Flesh.destroyFraction": 0.6
},
"ButcherKnife": {
"Tree.gatherDamage": 0.0,
"Ore.gatherDamage": 0.0,
"Flesh.gatherDamage": 18.0,
"Tree.destroyFraction": 0.0,
"Ore.destroyFraction": 0.0,
"Flesh.destroyFraction": 0.0
},
"CombatKnife": {
"Tree.gatherDamage": 0.0,
"Ore.gatherDamage": 0.0,
"Flesh.gatherDamage": 20.0,
"Tree.destroyFraction": 0.0,
"Ore.destroyFraction": 0.0,
"Flesh.destroyFraction": 0.0
},
"Longsword": {
"Tree.gatherDamage": 0.0,
"Ore.gatherDamage": 0.0,
"Flesh.gatherDamage": 10.0,
"Tree.destroyFraction": 0.0,
"Ore.destroyFraction": 0.0,
"Flesh.destroyFraction": 0.1
},
"SalvagedSword": {
"Tree.gatherDamage": 0.0,
"Ore.gatherDamage": 0.0,
"Flesh.gatherDamage": 10.0,
"Tree.destroyFraction": 0.0,
"Ore.destroyFraction": 0.0,
"Flesh.destroyFraction": 0.1
},
"SkinningKnife": {
"Tree.gatherDamage": 0.0,
"Ore.gatherDamage": 0.0,
"Flesh.gatherDamage": 18.0,
"Tree.destroyFraction": 0.0,
"Ore.destroyFraction": 0.0,
"Flesh.destroyFraction": 0.0
},
"Machete": {
"Tree.gatherDamage": 0.0,
"Ore.gatherDamage": 0.0,
"Flesh.gatherDamage": 10.0,
"Tree.destroyFraction": 0.0,
"Ore.destroyFraction": 0.0,
"Flesh.destroyFraction": 0.1
},
"KriegChainsword": {
"Tree.gatherDamage": 30.0,
"Ore.gatherDamage": 0.0,
"Flesh.gatherDamage": 2.0,
"Tree.destroyFraction": 0.0,
"Ore.destroyFraction": 0.5,
"Flesh.destroyFraction": 0.25
},
"Mace": {
"Tree.gatherDamage": 0.0,
"Ore.gatherDamage": 0.0,
"Flesh.gatherDamage": 10.0,
"Tree.destroyFraction": 0.0,
"Ore.destroyFraction": 0.0,
"Flesh.destroyFraction": 0.1
},
"Generic": {
"Tree.gatherDamage": 25.0,
"Ore.gatherDamage": 25.0,
"Flesh.gatherDamage": 12.0,
"Tree.destroyFraction": 0.0,
"Ore.destroyFraction": 0.0,
"Flesh.destroyFraction": 0.0
}
}
High-Pop Optimized
Plugins by Duff
Discord: https://discord.gg/2KBPH7hXb7