Loading...

Fishing in minecraft has missed potential. There are only 4 varieties of fish you can catch, and all of them can be caught anywhere. Fishing is unaffected by time, weather, biome, or dimension. The only exception is bamboo, which can be fished up in the jungle. This outlier gave me the idea to make a mod where the player could catch different fish depending on which biome they're in. After all, since the game already had code to determine fishing loot based on biome, how hard could it be to reuse that code for something interesting?

I created this mod using the Minecraft Forge modding API, which contains a decompiled and deobfuscated version of minecrafts source code. I wrote new code, reused code from areas of the game, in both java and JSON files. I also created all the textures myself, using GIMP, a free open source image manipulation software similar to photoshop. Though I never finished the project (I began my second year of university and no longer had the time to obsessively play minecraft), I'm proud of how much I achieved, and may pick it back up one day. You can find the full project on my github here.

New Items

When adding new fish, I wanted a few basic ones to make each biome interesting. I wanted to to make fishing exciting, and encourage players to seek out every fish variety, or at least to try fishing when they entered a new environment. I did this by creating many fish with unique effects, requirements to catch them, or that could be used to craft unique items. To keep the games progression system balanced, everything you can get from fishing fits in with the early to mid game progression.

all items in the mod

Arkus's Fishing adds 23 new fish varieties to catch, and 7 new items that can be made from the items you fish up. Below is a full list of all the new items

Image Item Name Description How to Obtain it Use
Bass Bass

A fish caught in muddy warm biomes

Fishing in desert, jungle, plains, swamp and river biomes

Cooked into large cooked fish

Trout Trout

A fish commonly caught in shallow waters.

Fishing in beach, cold, plains, and river biomes

Cooked into small cooked fish

Toothfish Toothfish

A fish based on the antarctic toothfish

Fishing in cold biomes

Cooked into large cooked fish

Goldfish Goldfish

A literal gold fish.

Fishing anywhere

Smelted into a gold ingot

Jellyfish Jellyfish

A slimy fish from the sea

Fishing in beach, tropical, and ocean biomes during rainy weather

Crafted into a slimeball. Affects the player with hunger when eaten

Tigerfish Tigerfish

A fish based on the african tigerfish

Fishing in desert and jungle biomes

cooked into large cooked fish

Frozen Trout Frozen Trout

A trout who was frozen solid

Fishing in cold biomes

Cooked into trout, crafted into an ice block

Tuna Tuna

A large fish from the ocean

Fishing in beach and ocean biomes

Cooked into large cooked fish

Coalacanth Coalacanth

From the ancient past, this fish has aged into coal

Fishing in caves and desert biomes

Used as a fuel source. Smelts 6 items

Catfish Catfish

A bottomfeeder with a big mouth

Fishing in jungle, river, and swamp biomes

Cooks into small cooked fish

Sturgeon Sturgeon

A large rare fish

Fishing in river biomes

Cooks into large cooked fish

Moray Eel Moray Eel

A large colourful eel

Fishing in tropical and swamp biomes

An ingredient in eel soup

Cave Eel Cave Eel

A pale unsightly eel

Fishing in caves

An ingredient in eel soup. Affects the player with weakness when eaten

Charged Eel Charged Eel

An electric eel, similar to minecrafts charged creeper

Fishing in beach, tropical, ocean, plains, and river biomes during a thunderstorm

An ingredient in TNT. Causes damage when eaten

Red Fungi Fish Red Fungi Fish

A small fish covered in red mushrooms

Fishing in mushroom islands and swamp biomes

Crafted into red mushrooms, cooked into small fish, an ingredient in mushroom stew. Affects the player with weakness when eaten

Brown Fungi Fish Brown Fungi Fish

A small fish covered in brown mushrooms

Fishing in mushroom islands and swamp biomes

Crafted into brown mushrooms, cooked into small fish, an ingredient in mushroom stew. Affects the player with slowness when eaten

Sunfish sunfish

A huge flat fish

Fishing in tropical and ocean biomes during the day

Cooked into large cooked fish

Moonfish moonfish

A silvery sunfish with a crescent moon shaped tailfin

Fishing in tropical and ocean biomes during the night

An ingredient in moon clocks (unimplemented). Affects the player with night vision when eaten

Swordfish Swordfish

A large fish in the style of a minecraft sword

Fishing anywhere

Effectively the same as an iron sword. Can be already enchanted when fished up. Cooked into large fish

Small Cooked Fish Small Cooked Fish

A small portion of cooked fish

The result of small or barely edible fish in a furnace, smoker, or campfire

Can be eaten to restore 2.5 hunger bars, and 6 saturation

Large Cooked Fish Large Cooked Fish

A large portion of cooked fish

The result of large fish in a furnace, smoker, or campfire

Can be eaten to restore 4 hunger bars, and 11.2 saturation

Eel Soup Eel Soup

A hearty dish made from eels

Crafted using a moray eel, cave eel, and a bowl

Can be eaten to restore 4 hunger bars, and 13 saturation. Becomes an empty bowl when eaten

Rotating display of 8 moon clock textures Moon clock

A silvery clock that displays the phases of the moon (unimplemented)

Crafted using a moonfish, starfish, iron ingots, and redstone (unimplemented)

Displays the current phase of the moon (unimplemented)

Starfish Starfish

A starfish. Originally named "fallen starfish"

Fishing in beach and cold biomes

An ingredient in the moon clock (unimplemented), and starfish block

Sea Urchin Sea Urchin

A small spiny creature

Fishing in beach, tropical, and ocean biomes

Can be thrown at entities, damaging them

Sea Urchin Block Giant Urchin

A huge spiny creature

Fishing in beach, tropical, and ocean biomes

Can be placed. Causes damage on contact, like a cactus. When placed outside of water, it will quickly die, transforming into a dead urchin block

Starfish Block Starfish Block

A block of coral, covered in glowing starfish

Crafted from coral and starfish

Can be placed. Acts as a light source

Dead Urchin Block Dead Urchin Block

A giant urchin that dried out and lost its spines.

The result of leaving a giant urchin block outside of water

Can be placed. Can be crafted into bonemeal. An ingredient in urchin lanterns

Urchin Lantern Urchin Lantern

The jack 'o' lantern version of a dead urchin

Crafted from a dead urchin block and a torch

Can be placed. Acts as a light source

How the fishing system works

The vanilla fishing system

In vanilla minecraft, fishing is calculated through loot tables in JSON files. When a player casts their fishing rod, the game runs the main fishing loot table, randomly selecting the 'fish', 'junk', or 'treasure' loot table. Each element in a loot table has a weight associated with it, the chance that that element gets selected. the 'fish' loot table has an 85% chance of being selected, 'junk' has a 10% chance, and 'treasure' has a 5% chance. If the players fishing rod is enchanted with the Luck of the Sea enchantment, the weight for the 'treasure' loot table is increased, and the weight for the 'junk' loot table is decreased. There are several checks that can be preformed before an element in a loot table is selected, such as the biome the player is in, the weather, dimension, and even how many in-game days have passed.

How I modified the fishing system

Editing the main fishing loot table, I kept the 'junk' and 'treasure' loot tables, but replaced the more general 'fish' loot table with a new table, which I called I called "fishing_biome'. This table condensed the list of nearly 60 biomes in minecraft into 11 biome sub categories. Each of these 11 biome categories has its own loot table, filled with different fish that seem appropriate for that biome type. When selected by the main fishing loot table, the fishing biome table would see which biome the player was in, and return the loot table corresponding to it. Some biomes fit into multiple categories, such as the frozen ocean biome, which I categorized as both 'ocean' and 'cold'. In cases like these, the fishing biome table randomly selected which of the possible loot tables to use.\nIn addion to biome, some fish require certain weather or time conditions to be caught. This was done by including these conditions inside of the specific biome loot tables I used the weighting system from earlier to make some fish more rare than others, for example, trout are quite common in the biomes they appear in, but moonfish and sturgeon are quite difficult to catch.\nI wanted to include something in both the junk and the treasure tables, as fish that could be caught anywhere, with the chance of catching them affected by Luck of the Sea. Goldfish appear in the treasure table, because gold is quite valuable. Swordfish appear in the junk table, because they are most useful for early and midgame players, without access to higher tiers of swords. Endgame players are likely to find swordfish useless, and as swordfish are tools, they are unstackable and could clog up players inventory. By having them in the junk table, endgame players with Luck of the Sea are less likely to fish them up and become frusterated with fishing.

The biome sub categories

Biome Category Biomes in it
Beach Beach, Mushroom fields, Stoney shore
Cave Deep dark, Dripstone caves, Lush caves
Cold Deep frozen ocean, Frozen ocean, Frozen peaks, Frozen river, Ice spikes, Jagged Peaks, Snowy beach, Snowy slopes, Snowy taiga, Stoney peaks, Windswept gravelly hills
Tropical Warm ocean
Desert Badlands, Desert, Eroded badlands, Savanna, Savanna plateau, Windswept savanna, Wooded badlands
Jungle Bamboo jungle, Jungle, Mangrove swamp, Sparse jungle
Mushroom Island Mushroom fields
Ocean Cold ocean, Deep cold ocean, Deep frozen ocean, Deep lukewarm ocean, Deep ocean, Frozen ocean, Lukewarm ocean, Ocean
Plains Birch forest, Cherry grove, Dark forest, Flower forest, Forest, Grove, Meadow, Old growth birch forest, Old growth pine taiga, Old growth spruce taiga, Plains, Sunflower plains, Windswept hills,
River River
Swamp Swamp, Mangrove swamp
Nether All nether dimension biomes
End All end dimension biomes

Media

Starfish blocks. It was quite hard to draw 5 point stars on a 16x16 pixel canvas, but I like how they turned out.

Some crafting recipes are shapeless, like this mushroom soup recipe.

A demo of the sea urchins and their uses. The giant urchin block is probably the most complicated asset in this mod! There is a cut in the middle of the video, because giant urchins take a long time to die, and transform into dead urchins. The code for throwing the sea urchins is based on the code for snowballs, and I never figured out how to change the texture of the in-air projectile, which is why it appears as a snowball.

The moon clock is an item that was meant display the current moon phase, like how a regular clock shows the time of day. It has 8 different textures, one for each phase of the moon.

The coalacanth is a fish found in the desert and caves, and can be used as fuel in furnace.

Some fish have unexpected effects when eaten. Charged eels cause the player damage, as if they explode when eaten.

Eating jellyfish causes hunger.

Fishing in the jungle.

Fishing on the beach.

Fishing in the ocean.

What I would do differently

I currently have no plans to continue this project, or restart it. If I were to begin this again however, there are a few things I would change. The current system of calling loot tables based on a hand crafted list of biome categories is tedious, and could lead to confusion if a player doesn't know which biomes are associated with each loot table. I knew basically nothing about the software development process when I started this project, so I didn't plan systems like this as well as I would've liked. The fishing system I made also unfortunately isn't compatible with with other mods. To make it compatible, I would have loot tables based on minecrafts biome tempurature system, and a few loot tables for specific biomes like mushroom islands. I would also like to implement more fish with unique conditions for catching them, such as player height or moon phase.