Home›Java›Mods›AbyssalFishing [1.16+] | 155 Fish, Sizes & Records, Minigame, Tournaments, Auction
AbyssalFishing [1.16+] | 155 Fish, Sizes & Records, Minigame, Tournaments, Auction
ModsJava

AbyssalFishing [1.16+] | 155 Fish, Sizes & Records, Minigame, Tournaments, Auction

Java mod listed for Minecraft 1.16–26.x. Downloads from the MC Java Mods app on Android.

⬇ Download on Spigot
[​IMG]

AbyssalFishing-icon-256.png
AbyssalFishing
155 fish that each have their own length and weight. Everything the paid one does, with no "Pro" edition.
Made by infinity3113 · Minecraft 1.16 – 26.2 · Spigot & Paper
✔ Free — no premium version, no locked features, no licence key. · Java 8+ · 4 languages (EN / ES / FR / ZH)

Full Documentation & Wiki

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━​
What is AbyssalFishing?
Almost every fishing plugin does the same thing: it rolls a name from a list and hands it to you. Two "Salmon" are the same object, worth the same, forever.

Here every catch draws its own size. A length in centimetres and a weight in kilos, pulled from a curve biased towards the small end — so most come out ordinary, and the huge one is genuinely rare.

That one decision is what makes everything else work. Records are worth chasing, the scales are worth opening, the auction sells your 47.3 cm salmon and not "a salmon", and a trophy is worth multiples of a runt of the same species.
[​IMG]
The main menu — everything hangs off here, and it opens with your real odds for each rarity where you are standing.​
A note from the author
This plugin is completely free, with no premium version holding features back. If it helps your server:
  • ⭐ Please leave a review — it genuinely helps other owners find it.
  • Found a bug or have an idea? Post it in the thread, or come to Discord — it is quicker for back-and-forth: discord.gg/sBw99njvTU
  • ☕ Donations welcome (optional): Donate via PayPal
Thanks for trying AbyssalFishing! — infinity3113
Click to expand...
It bites — now you have to land it
Reeling in does not give you the fish. A bar appears with a green zone and a marker sliding back and forth, and you have to click while the marker is inside it.
Code (Text):

-##########--------------|--   miss
-----------###|######-------   hit

 # = green zone     | = marker
 
The zone narrows and the marker speeds up with the rarity of whatever bit. A common fish is easy. An abyssal one is genuinely hard. Hit dead centre and the fish comes out up to 25% bigger.

The zone lands in a different third of the bar every time, and the marker never starts inside it — so it is never a free catch and never an impossible one.

Not your thing? /fish minigame turns it off for that player, one line in the config turns it off for the whole server, and fishing goes back to normal.
[​IMG]
A whole catch, start to finish — the bar when it bites, the species and its size on screen, the announcement in chat, and a burst of particles in the colour of its rarity so everyone nearby sees what came out.​
Sizes, scales and records
Every catch carries its length, its weight, the date and who pulled it out. Drop one on the scales and you see how it stands against your best and against the whole server.

Beat the longest of a species and it is announced to everyone, and the record keeps the size, the date and the name. That is the part a fishing plugin usually cannot offer, because two of its "Salmon" are the same object.
[​IMG]
The scales — your catch against your own best and against the server record.​
And nine leaderboards on top of that: level, entropy, catches, money made, trophies, longest fish, fish gutted, deliveries and tournaments won.
[​IMG]
Leaderboards — cached and refreshed on a timer, never recalculated because somebody opened a menu.​
Gut it, craft the bait, fish better
Gutting a fish gives you loot. On its own that loot would just be something else to sell — so it feeds a loop instead. You fish, you gut, you craft the bait, you fish better.

Place a bait station, right-click it, and you get a recipe list that shows what each bait needs and whether you have it, line by line. Left-click crafts one, shift-click crafts as many as you can.
[​IMG]
The gutting station — every fish sets its own loot, its own entropy and its own XP.​
A recipe takes three kinds of ingredient, and the last two are the interesting ones:
Code (YAML):

ingredients
:
 - 'PRISMARINE_SHARD:3'   # a plain material
  - 'tier:uncommon:2'       # two fish of that rarity, any species
  - 'fish:sardine:1'       # or one specific species
 
That is what finally gives a small fish a use. A 12 cm cod breaks no record, nobody bids on it and selling it gives you loose change — but as raw material it is worth exactly as much as the big one. A server where only the big fish matters throws away most of what is caught.

And a plugin fish never counts as its vanilla material, so a recipe asking for a plain COD will not eat the 90 cm one you were keeping.
A market that works in both directions
The auction house is the selling side: you list one specific catch — your 47.3 cm salmon, not "a salmon" — and delivery, payment and expiry all go through the mailbox, so it works whether the buyer is online or not.

The bounty board is the buying side. "I pay 5,000 for a marlin of 200 cm or more."
Code (Text):

/fish bounty post tier:legendary 150 25000
/fish bounty post salmon 0 500
/fish bounty post any 100 1000
 
Ask by species, by rarity, by minimum length, or any combination — "any legendary over 150 cm" is how people actually ask. Carry a fish that fits and the bounty lights up; one click hands it in.

The reward is held the moment the bounty is posted, not when it is claimed. Otherwise the poster could spend the money while a hunter spends half an hour looking, and that only has to happen once for nobody to trust the board again.
Show it off: trophies and aquariums
Both use an invisible ArmorStand rather than a hologram plugin, so there is no extra dependency to be missing, and nothing is ever written into your world file.
Progression that does not stop at level 30
[​IMG]
Deliveries and the skill tree — jobs that scale to your level, and points that are yours and not your rod's.​
Rods, augments and bait
[​IMG]
The augment table — drop your rod in, pick an augment, pay in entropy. Hot spot I here: a chance to pull two fish at once, and it goes dead the moment it rains.​
️ A world that moves
[​IMG]
The codex — every species, whether you have caught it, your personal best, and a hint about where it lives.​
Tournaments that stay tense
Six ways to score — most fish, biggest fish, most of a rarity, hunt one species, total weight, most entropy — drawn with configurable weights so it is never the same event twice.

The bar at the top shows who is leading, with what, and how long is left, and every player is told their own position as they score. Knowing whether you are second or tenth is what makes the last minute matter.

Small things that come from actually running one:
Guilds
Every catch by a member feeds the guild, and the guild's level buffs everyone in it. The light fisher feels what the others do; the heavy one has a reason to bring people along. Totems do the same in a smaller way: placeable blocks that buff everyone fishing within a radius, so people fish together.
A market that reacts
Prices are not fixed. Each species has a saturation that rises as it is sold and decays on its own. Sell a hundred salmon in a row and salmon is worth less for a while.

That is what stops the whole server finding the single most profitable fish and farming it forever. The shop menu shows you which species are currently depressed, so it is information, not a nasty surprise. One line turns it off.
[​IMG]
The shop — sell your catch, and buy baits, totems, bait stations and aquariums.​
Everything you catch goes in the bag first, which holds far more than your inventory and can auto-store as you fish.
[​IMG]
The fish bag — 54 slots by default, and it can fill itself while you fish.​
One language per player, not per server
This is the part most plugins get wrong. The language is not a server setting — each player picks their own with /fish lang, and gets the menus, the fish lore and the tournament announcements in it. The same tournament is announced in Spanish to one player and in Chinese to the next, on the same timeline.

Ships with EN / ES / FR / ZH, all four complete — 551 keys each, none missing. Add your own by dropping another file in lang/, and your edits survive plugin updates.
[​IMG]
Each player picks their own language, and the whole plugin follows them.​
✨ Everything in the box
⚙️ Configurable down to the individual fish
Rarities are not hardcoded. Want four tiers instead of six? Fifteen? Rename them? It is all in tiers.yml, and every fish just points at one.

Every fish sets its own conditions, its own gutting loot and its own sell price:
Spoiler: One fish, every option it has
Code (YAML):

frost_marlin
:
  display
: '&9Frost marlin'
  tier
: rare
  biomes
: [frozen_ocean, cold_ocean ]
  time
: any             # any | day | night
  weather
: thunder     # any | clear | rain | thunder
  moon-phases
: [0 ]     # 0 = full moon
  min-y
: 40
  max-y
: 63
  required-level
: 15
  required-bait
: shrimp
  regions
: [my_region ] # WorldGuard

  weight
: 60                     # weight WITHIN its rarity
  length
: { min : 90, max : 300 }
  weight-factor
: 0.012

  sell-price
: 180
  sell-size-bonus
: 1.5
  gut
:
    entropy
: 400
    xp
: 15
    loot
:
     - 'PRISMARINE_SHARD:1-2:45'
    commands
: ['25 % eco give %player% 500']

  migration
:
    enabled
: true
    count
: 2
    pool
: [ocean, cold_ocean, frozen_ocean, deep_ocean ]
 
An empty list always means "no restriction", never "impossible" — that is the single most common way a fishing config gets silently broken, and it cannot happen here.

The roll is two-step: rarity first, then species within it. With one big bag, adding twenty common fish to your catalogue would quietly make the mythical ones rarer without anybody touching their odds. This way a rarity keeps its odds no matter how the catalogue grows.
Spoiler: config.yml
Code (YAML):

language
: en                 # en · es · fr · zh  (players can still pick their own)
disabled-worlds
: [example_creative_world ]
custom-fish-chance
: 100.0     # % of catches that are custom fish
catch-cooldown-ms
: 0
luck-of-the-sea-bonus
: 0.08   # per enchant level
drop-when-full
: true
storage
:
  type
: SQLITE               # SQLITE · MYSQL · YAML
  table-prefix
: 'af_'
  autosave-minutes
: 5
minigame
:
  enabled
: true
  seconds
: 8
  zone
: { easy : 0.34, hard : 0.12 }     # green zone, common -> abyssal
  speed
: { easy : 0.030, hard : 0.075 } # marker speed
  bar-length
: 28
  zone-placement
: THIRDS     # THIRDS · RANDOM · CENTER
  grace-ticks
: 6             # ignores the click that started it
  accuracy-bonus
: 0.25       # up to +25% size on a perfect hit
particles
:
  enabled
: true
  surface-scan
: 6             # draws the burst above the water, not under it
records
:
  broadcast
: true
levels
:
  max-level
: 100
  formula
: { base : 120.0, exponent : 1.45 }
  skill-points-per-level
: 1
  rewards
:                   # entropy, skill points, messages, commands
    5
: { entropy : 500 }
    10
: { entropy : 2000, skill-points : 2 }
shop
:
  base-price
: 20.0
  size-bonus
: 1.5             # how much the size is worth
  entropy-per-coin
: 1.0       # used when there is no Vault economy
  dynamic-pricing
:
    enabled
: true
    elasticity
: 0.004
    min-factor
: 0.35         # a species never drops below 35% of its price
    recovery-per-minute
: 4.0
anti-afk
:
  enabled
: true
  catches-before-penalty
: 40
  mode
: REDUCE               # REDUCE · BLOCK
  reduced-multiplier
: 0.25
leaderboards
: { size : 10, refresh-minutes : 5 }
 
Every file is fully commented and updates itself: new options from an update land in your file with their documentation, and everything you changed stays exactly as you left it. You never need to wipe the folder.
️ Anti-AFK that does not punish humans
Nobody gets penalised for standing still for a while. It takes many catches in a row on exactly the same block — which is what a machine does and a person does not. From there rewards are reduced, or cut off, your choice.
⚡ Built to not lag
Dependencies & integrations
None are required. The plugin runs alone with SQLite and its own currency.
1.16 all the way to 26.2 — one jar
Not "should work". It is compiled against the oldest supported API so the compiler itself refuses anything 1.16 does not have, and everything newer goes through a compatibility layer. Both ends are checked every build: the same source compiles against 1.16.5 and against 26.2, and every single API reference in the finished jar is verified to still exist in 26.2.

It is compiled to Java 8 on purpose, because a 1.16 server may well be running on Java 8 and a Java 17 class simply will not load there.
How players use it
⌨️ Commands
Base: /fish · aliases /af, /abyssalfishing — everything has Tab completion.
Players
Admins
Permissions
Each player permission also exists on its own ( abyssalfishing.shop, abyssalfishing.codex, abyssalfishing.skills…) if you want to hand out menus one at a time — 31 in total, all listed in the wiki.
Installation
  1. Drop the jar into your /plugins folder.
  2. Restart the server. Don't use /reload.
  3. Check the console for Catalogue loaded: 155 fish across 6 rarities. and you're done.
  4. No dependencies required — add Vault later if you want fish to sell for money.
Full guide, every config option and every placeholder: https://infinity3113.mc-paradise.com/plugins/abyssalfishing/
Need a hand?
Bugs, questions about the config, or an idea for the catalogue — the fastest way to reach me is Discord:
discord.gg/sBw99njvTU​
The discussion thread here works just as well; I read both. A console error and your config.yml get it fixed fastest — and /fish info prints most of what I would ask you for.
❓ Why is this free?
Because a fishing plugin should not cost more than the server it runs on. There is no premium edition, no locked features and no licence check. What you download is what is documented.

If it is useful, a rating and a review help more than money does.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━​
Licence & Terms
AbyssalFishing is free, but it is not public domain. It remains the work of infinity3113.
You MAY:
You MAY NOT:
AbyssalFishing is an original work. It is not a fork, port or modification of any other plugin.
Provided "as is", without warranty of any kind. The author is not liable for any damage, downtime or data loss arising from its use.
Full terms: infinity3113.mc-paradise.com/plugins/terminos.html
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━​
More plugins by infinity3113
https://infinity3113.mc-paradise.com/plugins
Minecraft 1.16 – 26.2 · Java 8+ · Spigot & Paper · No dependencies · 4 languages · By infinity3113​

Commands

Plugin details

Read from the plugin's own plugin.yml.

Quick facts

Install steps are the general flow for this file type — How to install Minecraft Java mods & modpacks walks through it step by step.

AbyssalFishing [1.16+] | 155 Fish, Sizes & Records, Minigame, Tournaments, Auction is a free Minecraft Java mod. Compatible with Minecraft 1.16, 1.17, 1.18, 1.19 and newer. Downloaded 237 times (via Spigot). Download it and open it directly in the game.

Explore more