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" }