About Advanced Fishing
Advanced Fishing is a powerful and fully customizable plugin that completely overhauls the fishing system in Rust. With weight-based fish, immersive mechanics, item-based trading, and full UI integration, fishing becomes a profitable and rewarding gameplay loop!
Use Cases:
- Create an immersive fishing economy on your PvE or modded servers.
- Reward players for fishing tournaments or daily quests.
- Add rare fish with high value or special lore.
- Enable custom progression with powerful fishing rods.
◼◼◼◼ Key Features ◼◼◼◼
Enhanced Fishing Mechanics
- Every fish has a randomized weight, affecting catch difficulty and selling price.
- Custom rods can influence the weight range of caught fish.
- Realistic movement based on fish weight and lure tension.
Fishing Bucket System
- Players must place a Fishing Bucket nearby to start fishing.
- The bucket stores caught fish with limited capacity.
- Dynamic floating text notifications when catching fish.
- Can be picked up or opened with smart interaction logic.
- Purchase from Fishing Villages (optional, via vending machine).
Fish Exchange & Economy
- Sell fish via NPC vending machines ("Fish Exchange").
-
Full support for:
- Item-based currency (e.g., scrap),
- Economics balance, or
- ServerRewards points.
- Price is calculated per kilogram with randomness and dynamic seeding.
Custom Items Support
- Fully integrated with CustomItemDefinitions.
- Create your own fish, bait, and fishing rods with unique stats and skins.
- Customize catch chance, bait levels, depth ranges, strain modifiers, and more.
UI & Localization
- Clean and responsive UI for viewing and exchanging caught fish.
- Shows total price, per-fish breakdown, and an EXCHANGE button.
- Full localization of messages and interface.
Config
{
"General": {
"The price of a fishing bucket in scrap from the NPC in the fishing village(0 = disable)": 50,
"Maximum weight caught in the trap": 5.0,
"Fish exchange access type (VendingMachine | InBounds | Everywhere)": "VendingMachine",
"Disable changes to marker information on the map": false
},
"Economic Settings": {
"Type (Item | Economics | ServerRewards)": "Item",
"Item": {
"Short name": "scrap",
"Skin Id": 0,
"Name": null
},
"Currency (custom or token)": "scrap.name"
},
"Bucket Settings": {
"Capacity": 12,
"Text Duration": 5.0
},
"Custom Fishing Rod": {
"fishingrod.spinning": {
"ItemProps": {
"Skin Id": 3373296807,
"Name": "Spinning Rod",
"Description": "Professional fishing rod.\nAllows you to pull out heavier fish\n and has excellent durability.\n\n+100% to minimum weight\n+20% to maximum weight"
},
"Fish Catch Distance": 0.5,
"Condition Loss On Success": 0.01,
"Condition Loss On Fail": 0.02,
"Global Strain Speed Multiplier": 0.0,
"Max Cast Distance": 10.0,
"Min Weight Multiplier": 2.0,
"Max Weight Multiplier": 1.2
}
},
"Custom Fish": {
"fish.carp": {
"Item Properties": {
"Parent Shortname": "fish.salmon",
"Skin Id": 3372799162,
"Name": "Carp",
"Description": "Freshwater fish that is widely distributed in various bodies of water",
"Max Stack Size": 10
},
"Can Be Fished": true,
"Range of weight": {
"Min": 0.25,
"Max": 12.0
},
"Base Price per KG": 2.0,
"Catching Behaviour": {
"Strain Modifier": 1.2,
"Move Multiplier": 1.1,
"Reel In Speed Multiplier": 0.9,
"Catch Wait Time Multiplier": 1.5
},
"Catch Criteria": {
"Minimum Bait Level": 3.0,
"Maximum Bait Level": 0.0,
"Minimum Water Depth": 0.5,
"Maximum Water Depth": 5.0,
"Required Tag": "River, Swamp",
"Chance": 1.0
},
"Steam Stat Name": "caught_carp",
"Bait": {
"Bait Value": 0.0,
"Max Bait Stack": 0,
"Total Fertilizer Produced": 0.8
}
}
},
"Custom Bait": {
"bread.crumb": {
"Item Properties": {
"Parent Shortname": "apple",
"Skin Id": 3373271834,
"Name": "Bread crumb",
"Description": "Viscous mass with an attractive aroma for fish",
"Max Stack Size": 20
},
"Bait Value": 1.0,
"Max Bait Stack": 5,
"Total Fertilizer Produced": 0.2
}
},
"Default Fish": {
"fish.anchovy": {
"Can Be Fished": true,
"Range of weight": {
"Min": 0.01,
"Max": 0.05
},
"Base Price per KG": 5.0,
"Catching Behaviour": {
"Strain Modifier": 0.8,
"Move Multiplier": 0.8,
"Reel In Speed Multiplier": 1.2,
"Catch Wait Time Multiplier": 0.9
},
"Catch Criteria": {
"Minimum Bait Level": 0.0,
"Maximum Bait Level": 5.0,
"Minimum Water Depth": 0.0,
"Maximum Water Depth": 0.0,
"Required Tag": -1,
"Chance": 1.0
},
"Steam Stat Name": "caught_anchovy",
"Bait": {
"Bait Value": 2.0,
"Max Bait Stack": 2,
"Total Fertilizer Produced": 0.8
}
},
"fish.catfish": {
"Can Be Fished": true,
"Range of weight": {
"Min": 0.5,
"Max": 20.0
},
"Base Price per KG": 2.5,
"Catching Behaviour": {
"Strain Modifier": 1.25,
"Move Multiplier": 1.25,
"Reel In Speed Multiplier": 0.9,
"Catch Wait Time Multiplier": 0.8
},
"Catch Criteria": {
"Minimum Bait Level": 5.0,
"Maximum Bait Level": 0.0,
"Minimum Water Depth": 0.0,
"Maximum Water Depth": 0.0,
"Required Tag": "River, Swamp",
"Chance": 1.0
},
"Steam Stat Name": "caught_catfish",
"Bait": {
"Bait Value": 0.0,
"Max Bait Stack": 0,
"Total Fertilizer Produced": 0.8
}
},
"fish.herring": {
"Can Be Fished": true,
"Range of weight": {
"Min": 0.1,
"Max": 0.7
},
"Base Price per KG": 3.0,
"Catching Behaviour": {
"Strain Modifier": 0.8,
"Move Multiplier": 0.8,
"Reel In Speed Multiplier": 1.2,
"Catch Wait Time Multiplier": 0.9
},
"Catch Criteria": {
"Minimum Bait Level": 0.0,
"Maximum Bait Level": 5.0,
"Minimum Water Depth": 0.0,
"Maximum Water Depth": 0.0,
"Required Tag": -1,
"Chance": 1.0
},
"Steam Stat Name": "caught_herring",
"Bait": {
"Bait Value": 2.0,
"Max Bait Stack": 2,
"Total Fertilizer Produced": 0.8
}
},
"fish.orangeroughy": {
"Can Be Fished": true,
"Range of weight": {
"Min": 0.5,
"Max": 7.0
},
"Base Price per KG": 15.0,
"Catching Behaviour": {
"Strain Modifier": 1.25,
"Move Multiplier": 1.25,
"Reel In Speed Multiplier": 0.9,
"Catch Wait Time Multiplier": 0.8
},
"Catch Criteria": {
"Minimum Bait Level": 5.0,
"Maximum Bait Level": 0.0,
"Minimum Water Depth": 0.0,
"Maximum Water Depth": 0.0,
"Required Tag": "MoonPool",
"Chance": 1.0
},
"Steam Stat Name": "caught_orange_roughy",
"Bait": {
"Bait Value": 0.0,
"Max Bait Stack": 0,
"Total Fertilizer Produced": 0.8
}
},
"fish.salmon": {
"Can Be Fished": true,
"Range of weight": {
"Min": 0.4,
"Max": 9.0
},
"Base Price per KG": 3.0,
"Catching Behaviour": {
"Strain Modifier": 1.25,
"Move Multiplier": 1.25,
"Reel In Speed Multiplier": 0.9,
"Catch Wait Time Multiplier": 0.8
},
"Catch Criteria": {
"Minimum Bait Level": 5.0,
"Maximum Bait Level": 0.0,
"Minimum Water Depth": 4.5,
"Maximum Water Depth": 0.0,
"Required Tag": -1,
"Chance": 1.0
},
"Steam Stat Name": "caught_salmon",
"Bait": {
"Bait Value": 0.0,
"Max Bait Stack": 0,
"Total Fertilizer Produced": 0.8
}
},
"fish.sardine": {
"Can Be Fished": true,
"Range of weight": {
"Min": 0.05,
"Max": 0.2
},
"Base Price per KG": 2.0,
"Catching Behaviour": {
"Strain Modifier": 0.8,
"Move Multiplier": 0.8,
"Reel In Speed Multiplier": 1.2,
"Catch Wait Time Multiplier": 0.9
},
"Catch Criteria": {
"Minimum Bait Level": 0.0,
"Maximum Bait Level": 5.0,
"Minimum Water Depth": 0.0,
"Maximum Water Depth": 0.0,
"Required Tag": -1,
"Chance": 1.0
},
"Steam Stat Name": "caught_sardine",
"Bait": {
"Bait Value": 2.0,
"Max Bait Stack": 2,
"Total Fertilizer Produced": 0.8
}
},
"fish.smallshark": {
"Can Be Fished": true,
"Range of weight": {
"Min": 1.0,
"Max": 20.0
},
"Base Price per KG": 4.0,
"Catching Behaviour": {
"Strain Modifier": 1.25,
"Move Multiplier": 1.25,
"Reel In Speed Multiplier": 0.9,
"Catch Wait Time Multiplier": 0.8
},
"Catch Criteria": {
"Minimum Bait Level": 5.0,
"Maximum Bait Level": 0.0,
"Minimum Water Depth": 5.5,
"Maximum Water Depth": 0.0,
"Required Tag": "MoonPool, Ocean",
"Chance": 1.0
},
"Steam Stat Name": "caught_small_shark",
"Bait": {
"Bait Value": 0.0,
"Max Bait Stack": 0,
"Total Fertilizer Produced": 0.8
}
},
"fish.troutsmall": {
"Can Be Fished": true,
"Range of weight": {
"Min": 0.1,
"Max": 1.0
},
"Base Price per KG": 10.0,
"Catching Behaviour": {
"Strain Modifier": 1.0,
"Move Multiplier": 1.0,
"Reel In Speed Multiplier": 1.0,
"Catch Wait Time Multiplier": 1.0
},
"Catch Criteria": {
"Minimum Bait Level": 3.0,
"Maximum Bait Level": 0.0,
"Minimum Water Depth": 0.0,
"Maximum Water Depth": 0.0,
"Required Tag": "MoonPool, Ocean",
"Chance": 1.0
},
"Steam Stat Name": "caught_small_trout",
"Bait": {
"Bait Value": 10.0,
"Max Bait Stack": 1,
"Total Fertilizer Produced": 0.8
}
},
"fish.yellowperch": {
"Can Be Fished": true,
"Range of weight": {
"Min": 0.1,
"Max": 1.5
},
"Base Price per KG": 5.0,
"Catching Behaviour": {
"Strain Modifier": 1.0,
"Move Multiplier": 1.0,
"Reel In Speed Multiplier": 1.0,
"Catch Wait Time Multiplier": 1.0
},
"Catch Criteria": {
"Minimum Bait Level": 3.0,
"Maximum Bait Level": 0.0,
"Minimum Water Depth": 0.0,
"Maximum Water Depth": 0.0,
"Required Tag": "River, Swamp",
"Chance": 1.0
},
"Steam Stat Name": "caught_yellow_perch",
"Bait": {
"Bait Value": 10.0,
"Max Bait Stack": 1,
"Total Fertilizer Produced": 0.8
}
},
"fish.carp": {
"Can Be Fished": true,
"Range of weight": {
"Min": 1.0,
"Max": 0.0
},
"Base Price per KG": 1.0,
"Catching Behaviour": {
"Strain Modifier": 1.2,
"Move Multiplier": 1.1,
"Reel In Speed Multiplier": 0.9,
"Catch Wait Time Multiplier": 1.5
},
"Catch Criteria": {
"Minimum Bait Level": 3.0,
"Maximum Bait Level": 0.0,
"Minimum Water Depth": 0.5,
"Maximum Water Depth": 5.0,
"Required Tag": "River, Swamp",
"Chance": 1.0
},
"Steam Stat Name": "caught_carp",
"Bait": {
"Bait Value": 0.0,
"Max Bait Stack": 0,
"Total Fertilizer Produced": 0.8
}
}
},
"Default Bait": {
"apple": {
"Bait Value": 1.0,
"Max Bait Stack": 0,
"Total Fertilizer Produced": 0.2
},
"apple.spoiled": {
"Bait Value": 0.0,
"Max Bait Stack": 0,
"Total Fertilizer Produced": 0.2
},
"black.raspberries": {
"Bait Value": 1.0,
"Max Bait Stack": 1,
"Total Fertilizer Produced": 0.2
},
"blueberries": {
"Bait Value": 1.0,
"Max Bait Stack": 5,
"Total Fertilizer Produced": 0.2
},
"grub": {
"Bait Value": 3.5,
"Max Bait Stack": 3,
"Total Fertilizer Produced": 0.15
},
"worm": {
"Bait Value": 2.5,
"Max Bait Stack": 3,
"Total Fertilizer Produced": 0.1
},
"cactusflesh": {
"Bait Value": 0.0,
"Max Bait Stack": 0,
"Total Fertilizer Produced": 0.2
},
"chocolate": {
"Bait Value": 0.0,
"Max Bait Stack": 0,
"Total Fertilizer Produced": 0.3
},
"fish.cooked": {
"Bait Value": 0.0,
"Max Bait Stack": 0,
"Total Fertilizer Produced": 0.2
},
"fish.raw": {
"Bait Value": 0.5,
"Max Bait Stack": 3,
"Total Fertilizer Produced": 0.2
},
"fish.minnows": {
"Bait Value": 0.0,
"Max Bait Stack": 0,
"Total Fertilizer Produced": 0.1
},
"granolabar": {
"Bait Value": 0.0,
"Max Bait Stack": 0,
"Total Fertilizer Produced": 0.2
},
"chicken.burned": {
"Bait Value": 0.0,
"Max Bait Stack": 0,
"Total Fertilizer Produced": 0.2
},
"chicken.cooked": {
"Bait Value": 0.0,
"Max Bait Stack": 0,
"Total Fertilizer Produced": 0.2
},
"chicken.raw": {
"Bait Value": 5.0,
"Max Bait Stack": 0,
"Total Fertilizer Produced": 0.2
},
"chicken.spoiled": {
"Bait Value": 0.0,
"Max Bait Stack": 0,
"Total Fertilizer Produced": 0.2
},
"deermeat.burned": {
"Bait Value": 0.0,
"Max Bait Stack": 0,
"Total Fertilizer Produced": 0.2
},
"deermeat.cooked": {
"Bait Value": 0.0,
"Max Bait Stack": 0,
"Total Fertilizer Produced": 0.2
},
"deermeat.raw": {
"Bait Value": 5.0,
"Max Bait Stack": 0,
"Total Fertilizer Produced": 0.2
},
"horsemeat.burned": {
"Bait Value": 0.0,
"Max Bait Stack": 0,
"Total Fertilizer Produced": 0.2
},
"horsemeat.cooked": {
"Bait Value": 0.0,
"Max Bait Stack": 0,
"Total Fertilizer Produced": 0.2
},
"horsemeat.raw": {
"Bait Value": 5.0,
"Max Bait Stack": 0,
"Total Fertilizer Produced": 0.2
},
"humanmeat.burned": {
"Bait Value": 0.0,
"Max Bait Stack": 0,
"Total Fertilizer Produced": 0.2
},
"humanmeat.cooked": {
"Bait Value": 0.0,
"Max Bait Stack": 0,
"Total Fertilizer Produced": 0.1
},
"humanmeat.raw": {
"Bait Value": 3.0,
"Max Bait Stack": 0,
"Total Fertilizer Produced": 0.1
},
"humanmeat.spoiled": {
"Bait Value": 0.0,
"Max Bait Stack": 0,
"Total Fertilizer Produced": 0.1
},
"bearmeat.burned": {
"Bait Value": 0.0,
"Max Bait Stack": 0,
"Total Fertilizer Produced": 0.2
},
"bearmeat.cooked": {
"Bait Value": 0.0,
"Max Bait Stack": 0,
"Total Fertilizer Produced": 0.2
},
"bearmeat": {
"Bait Value": 10.0,
"Max Bait Stack": 0,
"Total Fertilizer Produced": 0.2
},
"wolfmeat.burned": {
"Bait Value": 0.0,
"Max Bait Stack": 0,
"Total Fertilizer Produced": 0.2
},
"wolfmeat.cooked": {
"Bait Value": 0.0,
"Max Bait Stack": 0,
"Total Fertilizer Produced": 0.2
},
"wolfmeat.raw": {
"Bait Value": 10.0,
"Max Bait Stack": 0,
"Total Fertilizer Produced": 0.2
},
"wolfmeat.spoiled": {
"Bait Value": 0.0,
"Max Bait Stack": 0,
"Total Fertilizer Produced": 0.2
},
"meat.pork.burned": {
"Bait Value": 0.0,
"Max Bait Stack": 0,
"Total Fertilizer Produced": 0.2
},
"meat.pork.cooked": {
"Bait Value": 0.0,
"Max Bait Stack": 0,
"Total Fertilizer Produced": 0.2
},
"meat.boar": {
"Bait Value": 5.0,
"Max Bait Stack": 0,
"Total Fertilizer Produced": 0.2
},
"mushroom": {
"Bait Value": 0.0,
"Max Bait Stack": 0,
"Total Fertilizer Produced": 0.2
},
"jar.pickle": {
"Bait Value": 0.0,
"Max Bait Stack": 0,
"Total Fertilizer Produced": 0.2
},
"black.berry": {
"Bait Value": 1.0,
"Max Bait Stack": 5,
"Total Fertilizer Produced": 0.01
},
"blue.berry": {
"Bait Value": 1.0,
"Max Bait Stack": 5,
"Total Fertilizer Produced": 0.01
},
"green.berry": {
"Bait Value": 1.0,
"Max Bait Stack": 5,
"Total Fertilizer Produced": 0.01
},
"red.berry": {
"Bait Value": 1.0,
"Max Bait Stack": 5,
"Total Fertilizer Produced": 0.01
},
"white.berry": {
"Bait Value": 1.0,
"Max Bait Stack": 5,
"Total Fertilizer Produced": 0.01
},
"yellow.berry": {
"Bait Value": 1.0,
"Max Bait Stack": 5,
"Total Fertilizer Produced": 0.01
},
"corn": {
"Bait Value": 1.0,
"Max Bait Stack": 0,
"Total Fertilizer Produced": 0.3
},
"potato": {
"Bait Value": 1.0,
"Max Bait Stack": 0,
"Total Fertilizer Produced": 0.1
},
"pumpkin": {
"Bait Value": 1.0,
"Max Bait Stack": 0,
"Total Fertilizer Produced": 0.1
},
"bone.fragments": {
"Bait Value": 0.0,
"Max Bait Stack": 0,
"Total Fertilizer Produced": 0.25
},
"horsedung": {
"Bait Value": 0.0,
"Max Bait Stack": 0,
"Total Fertilizer Produced": 10.0
},
"plantfiber": {
"Bait Value": 0.0,
"Max Bait Stack": 0,
"Total Fertilizer Produced": 0.05
},
"bread.crumb": {
"Bait Value": 1.0,
"Max Bait Stack": 5,
"Total Fertilizer Produced": 0.2
},
"bread.loaf": {
"Bait Value": 1.0,
"Max Bait Stack": 0,
"Total Fertilizer Produced": 0.2
},
"egg": {
"Bait Value": 0.0,
"Max Bait Stack": 0,
"Total Fertilizer Produced": 0.2
},
"honey": {
"Bait Value": 1.0,
"Max Bait Stack": 0,
"Total Fertilizer Produced": 0.1
},
"nucleus": {
"Bait Value": 2.0,
"Max Bait Stack": 0,
"Total Fertilizer Produced": 0.5
},
"bearmeat.spoiled": {
"Bait Value": 0.0,
"Max Bait Stack": 0,
"Total Fertilizer Produced": 0.2
},
"bigcatmeat.cooked": {
"Bait Value": 0.0,
"Max Bait Stack": 0,
"Total Fertilizer Produced": 0.2
},
"bigcatmeat": {
"Bait Value": 10.0,
"Max Bait Stack": 0,
"Total Fertilizer Produced": 0.2
},
"bigcatmeat.spoiled": {
"Bait Value": 0.0,
"Max Bait Stack": 0,
"Total Fertilizer Produced": 0.2
},
"crocodilemeat.cooked": {
"Bait Value": 0.0,
"Max Bait Stack": 0,
"Total Fertilizer Produced": 0.2
},
"crocodilemeat": {
"Bait Value": 10.0,
"Max Bait Stack": 0,
"Total Fertilizer Produced": 0.2
},
"crocodilemeat.spoiled": {
"Bait Value": 0.0,
"Max Bait Stack": 0,
"Total Fertilizer Produced": 0.2
},
"deermeat.spoiled": {
"Bait Value": 0.0,
"Max Bait Stack": 0,
"Total Fertilizer Produced": 0.2
},
"fish.spoiled": {
"Bait Value": 0.0,
"Max Bait Stack": 0,
"Total Fertilizer Produced": 0.2
},
"horsemeat.spoiled": {
"Bait Value": 0.0,
"Max Bait Stack": 0,
"Total Fertilizer Produced": 0.2
},
"porkmeat.spoiled": {
"Bait Value": 0.0,
"Max Bait Stack": 0,
"Total Fertilizer Produced": 0.2
},
"snakemeat.cooked": {
"Bait Value": 0.0,
"Max Bait Stack": 0,
"Total Fertilizer Produced": 0.2
},
"snakemeat": {
"Bait Value": 10.0,
"Max Bait Stack": 0,
"Total Fertilizer Produced": 0.2
},
"snakemeat.spoiled": {
"Bait Value": 0.0,
"Max Bait Stack": 0,
"Total Fertilizer Produced": 0.2
},
"spoiled.produce": {
"Bait Value": 0.0,
"Max Bait Stack": 0,
"Total Fertilizer Produced": 0.2
},
"orchid": {
"Bait Value": 0.0,
"Max Bait Stack": 0,
"Total Fertilizer Produced": 0.1
},
"rose": {
"Bait Value": 0.0,
"Max Bait Stack": 0,
"Total Fertilizer Produced": 0.1
},
"sunflower": {
"Bait Value": 0.0,
"Max Bait Stack": 0,
"Total Fertilizer Produced": 0.1
},
"wheat": {
"Bait Value": 1.0,
"Max Bait Stack": 0,
"Total Fertilizer Produced": 0.3
},
"honeycomb": {
"Bait Value": 0.0,
"Max Bait Stack": 0,
"Total Fertilizer Produced": 0.2
}
}
}
LANG FILE
{
"totalprice": "TOTAL PRICE: {0} {1}",
"bucket.is_full": "The bucket is full",
"fishing.start_requirement": "To start fishing, you need to place a fishing bucket near you.\nYou can buy it in the fishing village.",
"To exchange fish, you must hold a fishing bucket in your hands.": "",
"price_less_one": "Price less than 1, price too low to sell",
"item_name_format": "{0} ({1}kg)",
"bucket.fishing": "Fishing Bucket",
"exchange": "EXCHANGE",
"tip.bucket_pickup": "Hold SPRINT or DUCK to pickup the bucket",
"bucket.fishing.desc": "A fishing bucket is essential for every fisherman. It holds a certain amount of fish. The fish from the bucket can later be sold in the fishing village.",
"fishingrod.spinning": "Spinning Rod",
"fishingrod.spinning.desc": "Professional fishing rod.\nAllows you to pull out heavier fish\n and has excellent durability.\n\n+100% to minimum weight\n+20% to maximum weight",
"fish.carp": "Carp",
"fish.carp.desc": "Freshwater fish that is widely distributed in various bodies of water",
"bread.crumb": "Bread crumb",
"bread.crumb.desc": "Viscous mass with an attractive aroma for fish"
}
