AbyssalFishing

A complete fishing system: 155 fish with their own length and weight, a tension minigame when one bites, entropy, levels, skills, augments, baits, deliveries, tournaments, tides, hotspots, an auction house and guilds. Free, no premium edition.

{version}Version
1.16 – 26.2Minecraft
Spigot · PaperServer
NothingRequires
ES·EN·FR·ZHLanguages
155Fish

What makes it different

Almost every fishing plugin does the same thing: it rolls a fish from a list and hands it to you. Here every catch is unique — it has its own length in centimetres and weight in kilos, drawn from a curve biased towards the small end. That is what makes a server record actually cost something, what makes the scales worth opening, and what makes an auction where you do not sell "a salmon" but your 47.3 cm salmon.

The usualAbyssalFishing
One language for the whole serverPer-player language with /fish lang. Menus, fish lore and tournament announcements, each in their own.
It bites and it is caughtTension minigame: a bar with a green zone and a marker. The zone narrows with rarity.
Fixed pricesDynamic market: selling a lot of one species sinks its price, and it recovers on its own.
6 rarities hardcodedAs many as you want in tiers.yml: add, remove or rename.
The codex says what you are missingThe codex says where to look: biome, time, weather, moon, bait and level.
1.20+ and that is it1.16 through 26.2 with the same jar. Compiled to Java 8 so it also starts on old servers.

Everything it brings

  • 155 fish across 6 rarities, with biome, time, weather, moon phase, height, level and bait as conditions.
  • Length, weight and quality per catch, with personal and server records.
  • Tension minigame, optional, switchable per player and per server.
  • Entropy (its own currency), levels, a skill tree, rod augments and baits.
  • Fish bag, codex, shop with a dynamic market, gutting and scales.
  • Deliveries that generate themselves, tournaments in 6 flavours, and personal and global boosters.
  • Totems, trophy cases with a floating sign, rotating hotspots and global tides.
  • Migrations: fish change biome every few world days.
  • Player auction house and guilds with shared progress.
  • Mailbox: nothing is lost for being offline.
  • PlaceholderAPI with over 100 placeholders, optional Vault and WorldGuard.
Actually free. No premium edition, no locked features, no "unlock this for $9.99". Everything in this wiki is in the jar you download.

Installation

  1. Drop the jar into plugins/Works on Spigot and Paper, 1.16 through 26.2. It needs neither Vault nor anything else to run.
  2. Restart the serverIt creates config.yml, the fish catalogues and the four languages. Do not use /reload: restart.
  3. (Optional) Vault and PlaceholderAPIWith Vault fish sell for money; without it, for entropy. With PlaceholderAPI you get the placeholders for your scoreboard.

What gets created

plugins/AbyssalFishing/ # general settings config.yml # catalogue tiers.yml rarities fish.yml 54 fish fish/oceans.yml 41 saltwater fish/inland.yml 35 freshwater fish/depths.yml 25 Nether, End and the deep # systems augments.yml baits.yml skills.yml deliveries.yml tournaments.yml totems.yml boosters.yml rods.yml tides.yml hotspots.yml migrations.yml trophies.yml auction.yml guilds.yml # languages lang/en.yml lang/es.yml lang/fr.yml lang/zh.yml
Updating deletes nothing. Every file merges itself: a new version adds the new options and the new fish and keeps everything you changed. You never need to wipe the folder.

Storage

SQLite by default, which needs nothing. There is also MySQL (for several servers) and YAML (one file per player). You switch it in config.yml and touch nothing else.

storage: # SQLITE (recommended), MYSQL or YAML type: SQLITE table-prefix: 'af_' autosave-minutes: 5 sqlite: file: data.db mysql: host: localhost port: 3306 database: minecraft user: root password: '' ssl: false
Modern servers no longer bundle the MySQL driver. If you pick MYSQL and it is missing, the plugin says so plainly in console and falls back to YAML instead of starting broken.

How fishing works

You cast as always. When something bites and you reel in you do not get the fish yet: a bar appears at the top with a green zone and a marker sliding back and forth. You have to click while the marker is inside the green.

Minigame bar -##########--------------|-- miss -----------###|######----- -- hit # = green zone | = marker
  • The zone narrows and the marker speeds up with the rarity of what bit. A common fish is easy; an abyssal one is genuinely hard.
  • The zone lands somewhere different every time (left, centre or right) and the marker never starts inside it.
  • Nailing the centre gives up to +25% reward.
  • It can be switched off with /fish minigame (per player) or in the config (whole server).

Length, weight and quality

Every catch draws a length from a curve biased downwards: most come out ordinary and the huge specimen is genuinely rare. Weight is derived from length, and quality is the percentile within that species' range.

QualityPercentileWhat it means
Tiny0 – 35%Run of the mill
Average35 – 70%The usual
Large70 – 90%A good one
Trophy90 – 98%Counts as a trophy and cannot be eaten by accident
Colossal98 – 100%Server record material
When someone beats the server record for a species it is announced to everyone. Records store length, weight, date and who caught it, and are available as placeholders.

Catch particles

When the fish comes out a ring is drawn on the water, in the colour of its rarity. You can see from a distance what the guy next to you landed. The colour comes from the tier's own color:, so changing it drags the particles along.

Against AFK farms

Nobody is punished 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).

Configuring fish

Fish live in fish.yml and in any .yml inside the fish/ folder. All of them load, so you can split your catalogue: with two hundred species a single file of thousands of lines is unmaintainable, and one bad indent takes the whole catalogue down.

One fish, fully

fish: frost_marlin: display: '&9Frost marlin' tier: rare # a rarity from tiers.yml material: COD # base item model-data: 1043 # CustomModelData (0 = no model) description: - '&8The tip of its bill cuts ice.' # --- when it bites --- biomes: [frozen_ocean, cold_ocean] time: any # any | day | night weather: any # any | clear | rain | thunder min-y: 40 max-y: 63 moon-phases: [0] # 0 = full moon required-level: 15 required-bait: shrimp worlds: [world] regions: [my_region] # with WorldGuard event: crabmas # /fish event crabmas # --- roll and sizes --- weight: 60 # weight WITHIN its rarity length: { min: 90, max: 300 } # in cm length.bias: 2.2 # >1 pushes towards small weight-factor: 0.012 # kg = length³ × factor / 1000 # --- rewards --- xp: 55 # -1 = use the rarity's entropy: 320 sell-price: 180 sell-size-bonus: 1.5 # how much size pays gut: entropy: 400 xp: 15 size-bonus: 1.0 loot: # MATERIAL:amount:chance - 'PRISMARINE_SHARD:1-2:45' commands: ['25% eco give %player% 500'] # --- behaviour --- sellable: true gutable: true deliverable: true # can appear in deliveries give-item: true # false = gives no item glowing: false eat: { hunger: 4, saturation: 2.0 } commands: catch: ['10% broadcast &b%player% landed something rare'] sell: [] eat: [] # --- migration (optional) --- migration: enabled: true count: 2 # how many biomes at once pool: [ocean, cold_ocean, frozen_ocean, deep_ocean]
An empty list always means "no restriction", never "impossible". That is the most common configuration mistake in a fishing plugin and it cannot happen here: leave biomes out and the fish can bite anywhere.

Rarities (tiers.yml)

Rarities are not hardcoded. Add, remove or rename as many as you like; the only rule is that every fish points at one that exists. The rarity's weight is the number that actually decides how rare each tier is.

tiers: rare: display: 'Rare' color: '&9' # also tints its particles order: 2 # 0 = the most common weight: 150.0 # weight in the roll entropy: { catch: 320, gut: 260 } xp: 55 sell-multiplier: 5.0 gutable: true glowing: false broadcast: false # announce to the whole server sound: ENTITY_EXPERIENCE_ORB_PICKUP particles: enabled: true shape: RING # RING | SPIRAL | BURST | NONE type: DUST color: '' # empty = the tier colour radius: 1.1 rings: 2 points: 32 expand: 0.45 snap-to-surface: true # stick to the water surface y-offset: 0.50 duration: 20 interval: 2

How the roll works

The roll happens in two steps: first the rarity, then the species inside it. The difference matters: with one big bag, adding twenty common fish would make the mythical ones rarer without anyone touching their odds. In two steps, a rarity keeps its odds no matter what happens to the catalogue.

The main menu shows you the real odds of each rarity right here, right now, with your bait, augments, skills, the tide and the hotspot already counted in. Nothing to take on faith: you see the number.

Entropy, levels and gear

Entropy

Entropy is the plugin's own currency and cannot be bought: it is only fished. You earn it catching and gutting, and you spend it on skills, augments, baits, totems, trophy cases, rod repairs and founding guilds.

Levels and experience

The XP stored is always the running total, not what is left to the next level. That way the XP leaderboard means something and changing the formula moves everyone consistently, instead of leaving profiles with impossible numbers.

levels: max-level: 100 formula: base: 120.0 exponent: 1.45 # XP from N to N+1 = base × N^exponent skill-points-per-level: 1 title: true # on-screen title on level up sound: ENTITY_PLAYER_LEVELUP # one-off rewards per level rewards: 25: skill-points: 3 entropy: 10000 commands: - 'fish givebait %player% shrimp 8' message: - '&b&lLEVEL 25 &7- have some bait.'

Effects: the shared language

Skills, augments, baits, totems, boosters, tides, hotspots and guilds all produce the same thing: a set of named effects. That is why they are configured alike and why the player sees the same names on every screen.

EffectWhat it does
luckPushes the roll towards higher rarities
double-catch% chance of two fish in one pull
sizeFlattens the size curve: bigger catches. Never raises the species maximum.
xp / entropy / moneyReward multipliers
gutGutting entropy multiplier
bait-save% chance of not consuming the bait
minigame-easeWidens the minigame's green zone
tier.<id>Multiplies that rarity's weight
fish.<id>Multiplies that species' weight

Skills, augments and baits

  • Skills (skills.yml): levelled with skill points and entropy. Never lost, never tied to a rod — this is "account" progression.
  • Augments (augments.yml): custom rod enchants. Crafted with entropy, applied to one specific rod, removable. Many have conditions (rain only, night only), which is what makes keeping more than one rod worthwhile.
  • Baits (baits.yml): attached by dragging the bait onto the rod in your inventory. They last a number of uses and bias what bites. Some fish only bite with their bait.

Rod condition

A rod has a line (worn when you land a fish) and a reel (worn when you cast). With the line at zero it snaps now and then and the fish escapes; with the reel at zero the minigame runs faster. Repair with /fish repair, paid in entropy.

It is the only entropy sink that never runs out: augments are bought once and skills finish, but keeping a rod alive costs forever. If you do not want it, rods.yml → enabled: false and rods never wear.

The systems

Each has its own file and every one can be switched off on its own with enabled: false. Turn on only what suits your server.

SystemFileWhat it brings
Deliveriesdeliveries.ymlShort objectives that generate themselves and scale to level
Tournamentstournaments.yml6 scoring modes, automatic or manual
Tidestides.ymlRecurring global event with advance warning
Hotspotshotspots.ymlZones that take turns being open and then run dry
Migrationsmigrations.ymlFish change biome every few days
Trophy casestrophies.ymlBlock + floating sign with the mounted catch
Auctionauction.ymlSelling specific catches between players
Guildsguilds.ymlShared progress; the group level buffs everyone
Totemstotems.ymlBlocks that buff within a radius
Boostersboosters.ymlTemporary multipliers, personal and global

Deliveries

Short objectives that give a reason to fish for something you would not otherwise. They generate themselves and scale to level: a level 3 player is not asked for "catch 40 mythical fish", and a level 80 one is not handed jobs they finish without noticing. Four types: N fish of anything, N of a rarity, N of a species, or one catch over a certain length.

The length asked for comes from the species' real range, not a fixed number. Asking for "60 cm" of a fish that tops out at 40 would be impossible, and that is exactly what badly generated jobs do.

Tournaments

ModeHow it scores
MOST_FISHNumber of fish
BIGGEST_FISHThe longest catch. Not additive: your best stands.
MOST_TIERFish of a drawn rarity
SPECIES_HUNTFish of a drawn species
TOTAL_WEIGHTTotal accumulated weight
MOST_ENTROPYEntropy earned during the tournament
  • The bar at the top shows who is leading, with how much, and how long is left, and each player is told their position as they score. Knowing whether you are second or tenth is what makes the last minute matter.
  • In MOST_TIER with a random target, the highest rarity is never picked: a mythical tournament where nobody scores is not a tournament, it is an hour wasted.
  • If there are not enough players the slot is not wasted: it retries in a minute instead of waiting another two hours.
  • Everyone who scored gets something. Paying for participation stops it becoming the same four people every time.

Tides and hotspots

A tide is a global event that is not competitive: for a while, fishing is simply better for everyone. It is announced in advance so people log in on time, but latecomers still benefit.

A hotspot is where the fish are biting today: one zone gives far more for a while, runs dry, and opens somewhere else. You define the zones with coordinates, so they always land in real water and somewhere reachable, instead of appearing mid-ocean a thousand blocks from anybody's base.

spots: north_bay: display: '&bNorth Bay' world: world x: 200 z: -350 radius: 45 kinds: legendary: display: '&5&lDeep trench' weight: 15.0 duration: 12m effects: luck: 0.40 tier.legendary: 0.70 tier.abyssal: 1.00

Migrations

Fish marked with migration change biome every few world days. The codex already shows where each one lives; this makes that hint alive and worth re-reading, instead of a table you learn once and forget.

The layout is deterministic: it comes from the world day and the fish id, not from a stored roll. That means there is nothing to persist, every player sees the same thing, and a server restart does not reshuffle the whole map mid-season.

Trophy cases

A record is a number inside a menu, and there it stays. The trophy case brings it into the world: buy it with /fish trophy, place it in your base, and a floating sign sits above it with the species, the length and who caught it.

ActionWhat it does
Right-click with a fishMounts it and the sign appears
Right-click empty-handedReads the details
Sneak + right-clickTakes it off and gives it back
Break the blockReturns the case and the fish
The sign is an invisible ArmorStand, not a hologram plugin: it works the same on 1.16 and 26.2 and adds no extra dependency that could be missing.

Auction and mailbox

The auction works precisely because every catch is unique: you do not sell "a salmon" here, you sell YOUR 47.3 cm salmon. List with /fish auction sell <price> holding the fish, buy from the menu.

Anything that cannot be handed over right away goes to the mailbox: the prize for a tournament you won while offline, what someone paid you at auction, a listing that expired unsold. It is claimed automatically on join. Nothing is lost for being away.

Guilds

Every catch by a member adds points to the guild, and the guild levels up, buffing everyone. The point is that the light fisher still feels what the others do, and the heavy one has a reason to bring people along.

/fish guild create /fish guild invite /fish guild join /fish guild leave /fish guild kick /fish guild disband /fish guild info /fish guild top

Commands and permissions

The main command is /fish (aliases /af, /pesca, /peche). Everything has tab completion, and /fish help only shows what that player can actually use.

Players

CommandWhat it doesPermission
/fishOpens the main menuabyssalfishing.menu
/fish helpThe help, with version and author
/fish shopSell fish, buy baits and totemsabyssalfishing.shop
/fish bagYour fish bagabyssalfishing.bag
/fish codexEncyclopedia, hints and recordsabyssalfishing.codex
/fish deliveriesYour active deliveriesabyssalfishing.deliveries
/fish skillsSkill treeabyssalfishing.skills
/fish augmentAugment table: craft, apply and removeabyssalfishing.augment
/fish gutGut fishabyssalfishing.gut
/fish scalesWeigh a catch and compare recordsabyssalfishing.scales
/fish top [stat]Leaderboards (9 tables)abyssalfishing.top
/fish stats [jugador]Fishing statisticsabyssalfishing.stats
/fish entropyYour entropyabyssalfishing.entropy
/fish boostersYour active boostersabyssalfishing.boosters
/fish lang [código]Pick your languageabyssalfishing.lang
/fish minigameToggle the minigame
/fish mailboxClaim pending rewards
/fish repairRepair the rod in your hand
/fish auctionOpen the auctionabyssalfishing.auction
/fish auction sell <precio>List the fish in your handabyssalfishing.auction
/fish guild ...Guilds (create, invite, join, leave, kick, disband, info, top)abyssalfishing.guild
/fish trophyBuy a trophy caseabyssalfishing.trophy
/fish hotspotWhere the active hotspot is
/fish tideCurrent tide or time to the next
/ftTournament: info, top

Administration

CommandWhat it does
/fish reloadReloads configs and languages without a restart
/fish give <jugador> <pez> [cantidad] [talla]Gives a fish, optionally at an exact length
/fish givebait <jugador> <cebo> [cantidad]Gives baits
/fish giveaugment <jugador> <augment> [nivel]Gives an augment
/fish givetotem <jugador> <tótem>Gives a totem
/fish addentropy <jugador> <cantidad>Adds entropy
/fish addxp <jugador> <cantidad>Adds fishing XP
/fish setlevel <jugador> <nivel>Sets the level
/fish booster <start|stop> <id> [tiempo]Global booster for the whole server
/fish event <id|clear>Turns on a seasonal event
/fish tide <start|stop> [id]Starts or stops a tide
/fish hotspot <start|stop> [zona] [tipo]Opens or closes a hotspot
/fish infoPlugin and integration status
/fish placeholdersDumps the full placeholder list
/ft start|stop|cancel|removeManage tournaments

Special permissions

  • abyssalfishing.admin — all administration.
  • abyssalfishing.tournament.manage — start and stop tournaments.
  • abyssalfishing.bypass.afk — never flagged as AFK fishing.
  • abyssalfishing.bypass.cooldown — no cooldown between catches.
  • abyssalfishing.totem.break.other and abyssalfishing.trophy.break.other — break other people's.

Placeholders

With PlaceholderAPI installed, everything the plugin knows can be pulled out. If it shows in a plugin menu, it exists as a placeholder. There are over 100 fixed ones and 12 families that take an argument, which on a 155-fish catalogue gives more than two thousand real combinations.

They are all prefixed %abyssalfishing_...%. In game, /fish placeholders dumps the whole list grouped by block.

Progression

PlaceholderReturns
level · max_levelFishing level and cap
xp · xp_total · xp_requiredXP in level, total, and required
xp_percent · xp_barPercentage and a ready-made bar
entropy · entropy_compact · entropy_rawEntropy formatted, abbreviated and raw
skill_points · skill_<id>Free points and one skill's level
caught · caught_vanillaPlugin catches and vanilla ones
caught_tier_<rareza> · caught_fish_<pez>Catches of a rarity or species
trophies · longest · longest_fishTrophies and your biggest catch
records_heldHow many server records you currently hold
money_made · gutted · soldMoney earned, fish gutted and sold
deliveries · tournaments_won · augments_craftedDelivery, tournament and augment counters
language · minigameTheir language and whether the minigame is on

Codex

PlaceholderReturns
discovered · codex_total · codex_missingDiscovered, total and missing
codex_percent · codex_barPercentage and bar
codex_tier_<rareza>Discovered of that rarity, as 12/40
best_<pez>Your best length for that species
fish_total · tiers_total · tier_total_<rareza>Catalogue sizes
tier_name_<rareza>The rarity's coloured name
chance_<rareza>The real odds of that rarity where they stand, with bait, augments, skills, tide and hotspot already counted

Gear

PlaceholderReturns
bait · bait_usesAttached bait and uses left
rod_line · rod_line_max · rod_line_percent · rod_line_barLine condition
rod_reel · rod_reel_max · rod_reel_percent · rod_reel_barReel condition
rod_repair_cost · rod_brokenRepair cost and whether it is broken
rod_augments · rod_augments_max · rod_augment_listThe rod's augments
boosters · boosters_listActive boosters

Systems and guild

PlaceholderReturns
mailboxRewards waiting in the mailbox
trophy_cases · trophy_limitPlaced trophy cases and the limit
auction_listings · auction_mine · auction_maxAuction listings
deliveries_active · deliveries_slots · deliveries_readyActive deliveries, slots and ready to claim
guild_has · guild_name · guild_ownerWhether they have a guild, and which
guild_level · guild_points · guild_progress · guild_barGuild level and progress
guild_members · guild_max_members · guilds_totalMembers and guilds on the server
guild_top_<1-10>_<name|level|points>Guild leaderboard

Tournament, tide, hotspot and migration

PlaceholderReturns
tournament_active · tournament_name · tournament_typeWhether a tournament is on, and which
tournament_time · tournament_time_long · tournament_nextTime left and time to the next
tournament_position · tournament_score · tournament_playersYour position, your score, how many play
tournament_<first|second|third>_<name|score>The live podium
tide_active · tide_name · tide_time · tide_nextTide in progress or time to the next
hotspot_active · hotspot_name · hotspot_kindOpen hotspot and its kind
hotspot_world · hotspot_x · hotspot_z · hotspot_radiusExactly where it is
hotspot_inside · hotspot_distanceWhether they are inside and how far
migration_days · migration_period · migration_enabledHow long until the next shuffle

Leaderboards and records

%abyssalfishing_top___% available stats: level entropy caught money trophies longest gutted deliveries tournaments examples: %abyssalfishing_top_longest_1_name% %abyssalfishing_top_entropy_3_compact% %abyssalfishing_record__% example: %abyssalfishing_record_frost_marlin_holder%
The ones that do not depend on a player (leaderboards, records, tournament, tide, hotspot, migration) also work in holograms and from console.

config.yml

The basics

# The language new players start on. # Each player can change it with /fish lang. language: en # Worlds where the plugin does NOT act (vanilla fishing). disabled-worlds: - creative # % of bites that are a plugin fish. 100 = all. custom-fish-chance: 100.0 # Minimum ms between catches. 0 = no limit. catch-cooldown-ms: 0 # How much each Luck of the Sea level adds. luck-of-the-sea-bonus: 0.08 # Inventory and bag full: drop on the floor or warn. drop-when-full: true # Stops a trophy catch being eaten by accident. protect-trophies: true

The minigame

minigame: enabled: true seconds: 8 # before it escapes zone: easy: 0.34 # width of the green zone hard: 0.12 speed: easy: 0.030 # marker speed hard: 0.075 bar-length: 28 zone-placement: THIRDS # THIRDS | RANDOM | CENTER grace-ticks: 6 # ticks where a click does not count accuracy-bonus: 0.25 # extra for nailing the centre
zone-placement: THIRDS spreads the zone across thirds (left, centre, right) and draws inside whichever comes up. With plain RANDOM the zone moves but does not look like it: if it covers a third of the bar, its centre lands near the middle almost every time.

Dynamic market

Selling a lot of one species sinks its price for a while, and it recovers on its own. That is what stops the whole server finding the most profitable fish and farming it forever. It can be switched off entirely.

shop: base-price: 20.0 # if the fish sets no sell-price size-bonus: 1.5 # how much size pays entropy-per-coin: 1.0 # without Vault it pays in entropy dynamic-pricing: enabled: true elasticity: 0.004 # drop per unit sold min-factor: 0.35 # floor: never below this recovery-per-minute: 4.0

Anti AFK farm

anti-afk: enabled: true catches-before-penalty: 40 # on the SAME block mode: REDUCE # REDUCE or BLOCK reduced-multiplier: 0.25

Languages

The four languages live in lang/. Language is per player, not per server: the one in the config only decides what a new player starts on. You can add your own by dropping another .yml in that folder.

On update each language gains the new keys and keeps everything you rewrote. You never need to delete the lang/ folder… unless you want the default texts back.

Frequently asked

The fish always escape

Watch the colour of the bar, not the marker: it turns green when you are inside. If it is still hard, raise minigame.seconds and the zone width, or lower speed. Also remember the Steady grip skill and the Steady hands augment widen the zone.

Nothing from the plugin bites

  • Are you in a world listed in disabled-worlds?
  • Is any fish configured for that biome? If none can bite there, the vanilla fish is left alone instead of giving you nothing. The main menu tells you.
  • Is custom-fish-chance below 100?

Does it work on my version?

From 1.16 to 26.2, same jar. It is compiled to Java 8 on purpose, because a 1.16 server may be running on Java 8 and a Java 17 .class will not load there. Anything newer versions need comes in through reflection.

Can I remove systems?

Yes. Every system has its own enabled: false: minigame, rod wear, tides, hotspots, migrations, trophy cases, auction, guilds, deliveries, tournaments and particles. You can leave it at "fishing with nice fish" or turn everything on.

Is it really free?

Yes. No premium edition, no locked features, no licence key. Everything in this wiki is in the jar.

AbyssalFishing / Changelog

Version history

Every release and what changed in it.

v1.0 Latest

No notes for this version.

AbyssalFishing / Discussion

Discussion

Comment and share your experience on each plugin version.

Log in to comment on this version.Log in

No comments on this version yet — be the first!

AbyssalFishing / Reviews

Player reviews

What server owners think of this plugin.

★★★★★
0 reviews
Log in to leave a review.Log in

No reviews yet.