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.
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.
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 | A fish caught in muddy warm biomes |
Fishing in desert, jungle, plains, swamp and river biomes |
Cooked into large cooked fish |
![]() |
Trout | A fish commonly caught in shallow waters. |
Fishing in beach, cold, plains, and river biomes |
Cooked into small cooked fish |
![]() |
Toothfish | A fish based on the antarctic toothfish |
Fishing in cold biomes |
Cooked into large cooked fish |
![]() |
Goldfish | A literal gold fish. |
Fishing anywhere |
Smelted into a gold ingot |
![]() |
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 | A fish based on the african tigerfish |
Fishing in desert and jungle biomes |
cooked into large cooked fish |
![]() |
Frozen Trout | A trout who was frozen solid |
Fishing in cold biomes |
Cooked into trout, crafted into an ice block |
![]() |
Tuna | A large fish from the ocean |
Fishing in beach and ocean biomes |
Cooked into large cooked fish |
![]() |
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 | A bottomfeeder with a big mouth |
Fishing in jungle, river, and swamp biomes |
Cooks into small cooked fish |
![]() |
Sturgeon | A large rare fish |
Fishing in river biomes |
Cooks into large cooked fish |
![]() |
Moray Eel | A large colourful eel |
Fishing in tropical and swamp biomes |
An ingredient in eel soup |
![]() |
Cave Eel | A pale unsightly eel |
Fishing in caves |
An ingredient in eel soup. Affects the player with weakness when eaten |
![]() |
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 | 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 | 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 | A huge flat fish |
Fishing in tropical and ocean biomes during the day |
Cooked into large cooked fish |
![]() |
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 | 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 | 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 | 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 | 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 |
![]() |
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 | A starfish. Originally named "fallen starfish" |
Fishing in beach and cold biomes |
An ingredient in the moon clock (unimplemented), and starfish block |
![]() |
Sea Urchin | A small spiny creature |
Fishing in beach, tropical, and ocean biomes |
Can be thrown at entities, damaging them |
![]() |
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 | A block of coral, covered in glowing starfish |
Crafted from coral and starfish |
Can be placed. Acts as a light source |
![]() |
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 | 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 |
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.
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.
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 |
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.
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.