Add Ice Fishing
@ -2,7 +2,7 @@
|
||||
"type": "MOD",
|
||||
"title": "X Farming",
|
||||
"name": "x_farming",
|
||||
"short_description": "Extends default farming with new plants and crops.",
|
||||
"short_description": "Extends default farming with new plants, crops and ice fishing.",
|
||||
"tags": [
|
||||
"decorative",
|
||||
"food",
|
||||
@ -12,7 +12,6 @@
|
||||
],
|
||||
"license": "GPLv2",
|
||||
"media_license": "CC BY-SA 4.0",
|
||||
"long_description": "# Farming Addons [x_farming]\n\n Extends Minetest default farming mod with new plants and crops using only minetest_game API (except couple of functions for e.g. block farming).\n \n Adds:\n \n * Bonemeal\n * Empty Soup Bowl\n * Hog Stew\n * Beetroot\n * Carrot\n * Coffee\n * Corn\n * Melon\n * Obsidian Wart\n * Potato\n * Pumpkin\n * Cocoa\n * Kiwi Tree\n * Large Cactus with Fruit\n * Strawberry\n * Pine nut tree\n * Stevia\n * Soybean\n * Salt\n * and more..\n \n ## Biomes\n \n **Grassland**\n \n - Melon\n - Carrot\n - Soybean\n \n **Coniferous Forest**\n \n - Strawberry\n - Pine Nut Tree\n \n **Desert**\n \n - Large Cactus with Fruit (dragon fruit)\n \n **Savanna**\n \n - Kiwi Tree\n - Coffee\n - Stevia\n \n **Rainforest**\n \n - Cocoa\n \n **Underground**\n \n - Obsidian Wart (below -1000)\n \n **Sandstone desert**\n \n - Corn\n - Pumpkin\n \n **Cold desert**\n \n - Potato\n - Beetroot\n \n **Taiga**\n \n - Pine Nut Tree\n \n \n Seeds can be found also in dungeon chests.",
|
||||
"repo": "https://bitbucket.org/minetest_gamers/x_farming/src/master",
|
||||
"issue_tracker": "https://bitbucket.org/minetest_gamers/x_farming/issues",
|
||||
"forums": 26464
|
||||
|
312
README.md
@ -1,6 +1,6 @@
|
||||
# Farming Addons [x_farming]
|
||||
|
||||
Extends Minetest default farming mod with new plants and crops using only minetest_game API (except couple of functions for e.g. block farming).
|
||||
Extends Minetest default farming mod with new plants, crops and ice fishing using only minetest_game API (except couple of functions for e.g. block farming, ice fishing).
|
||||
|
||||
![screenshot](screenshot.png)
|
||||
|
||||
@ -196,6 +196,10 @@ Allows to harvest pine nuts. Roasted pine nuts can be eaten.
|
||||
|
||||
Can be farmed as ingredient to craft other food recipes.
|
||||
|
||||
### Ice Fishing
|
||||
|
||||
Ice fish for getting various kinds of fish, treasures and junk. What type of fish you get depends on the biome where you'r fishing and how many ice blocks are directly around your fishing equipment (there has to be space above the ice and nothing can obstruct the ice otherwise it will not count). For planting you fishing equipment you need to first drill a hole in ice using Ice Auger. Ice fishing equipment can be crafted, occasionally dropped out from digging your ice fishing equipment and can also spawn in cold biomes.
|
||||
|
||||
## Biomes
|
||||
|
||||
**Grassland**
|
||||
@ -244,11 +248,142 @@ Can be farmed as ingredient to craft other food recipes.
|
||||
**Rainforest Swamp**
|
||||
|
||||
- Salt
|
||||
- Swamp Darter
|
||||
- Swamp Frog
|
||||
- Sturgeon
|
||||
- Sunfish
|
||||
- Swordfish
|
||||
|
||||
**Savanna Shore**
|
||||
|
||||
- Salt
|
||||
- Angelfish
|
||||
- Lingcod
|
||||
- Lukewarm Ocean Hermit Crab
|
||||
- Magma Slimefish
|
||||
- Manta Ray
|
||||
|
||||
**Icesheet Ocean**
|
||||
|
||||
- Angler
|
||||
- Frozen Boneminnow
|
||||
- Frozen Ocean Hermit Crab
|
||||
- Paddlefish
|
||||
- Pearl Isopod
|
||||
|
||||
**Taiga Ocean**
|
||||
|
||||
- Armored Catfish
|
||||
- Gar
|
||||
- Giant Moray
|
||||
- Perch
|
||||
- Piglish
|
||||
|
||||
**Desert Ocean**
|
||||
|
||||
- Arrow Squid
|
||||
- Desert Frog
|
||||
- Desert Sunfish
|
||||
- Piranha
|
||||
- Prismfish
|
||||
- Pumpkinseed
|
||||
|
||||
**Tundra Ocean**
|
||||
|
||||
- Barracuda
|
||||
- Flier
|
||||
- Floral Faefish
|
||||
- Flounder
|
||||
- Fourhorn Sculpin
|
||||
|
||||
**Snowy Grassland Ocean**
|
||||
|
||||
- Grass Pickerel
|
||||
- Guppy
|
||||
- Hagfish
|
||||
- Rainbowfish
|
||||
- Red Snapper
|
||||
|
||||
**Coniferous Forest Ocean**
|
||||
|
||||
- Bream
|
||||
- Redbreast Sunfish
|
||||
- Rockfish
|
||||
- Rohu
|
||||
- Rosefish
|
||||
|
||||
**Grassland Ocean**
|
||||
|
||||
- Conger
|
||||
- Sablefish
|
||||
- Sardine
|
||||
- Sawfish
|
||||
- Skate
|
||||
- Skullfin
|
||||
|
||||
**Savanna Ocean**
|
||||
|
||||
- Chorus Snail
|
||||
- White Bullhead
|
||||
- Whitefish
|
||||
- Wolffish
|
||||
- Woodskip
|
||||
|
||||
**Cold Desert Ocean**
|
||||
|
||||
- Chub
|
||||
- Cold Ocean Hermit Crab
|
||||
- Oscar
|
||||
- Leerfish
|
||||
|
||||
**Sandstone Desert Ocean**
|
||||
|
||||
- Clam
|
||||
- Skykoi
|
||||
- Smallmouth Bass
|
||||
- Sterlet
|
||||
|
||||
**Deciduous Forest Ocean**
|
||||
|
||||
- Crayfish
|
||||
- Damselfish
|
||||
- Danios
|
||||
- Vampire Squid
|
||||
- Walleye
|
||||
- Warm Ocean Hermit Crab
|
||||
|
||||
**Rainforest Ocean**
|
||||
|
||||
- Burbot
|
||||
- Koi
|
||||
- Lamprey
|
||||
- Largemouth Bass
|
||||
- Lava Eel
|
||||
- Leech
|
||||
|
||||
**Icesheet**
|
||||
|
||||
- Dwarf Caiman
|
||||
- Eel
|
||||
- Electric Eel
|
||||
- Endray
|
||||
- Tench
|
||||
|
||||
**Tundra Beach**
|
||||
|
||||
- Carp
|
||||
- Catfish
|
||||
- Catla
|
||||
- Ocean Hermit Crab
|
||||
- Octopus
|
||||
|
||||
**Deciduous Forest Shore**
|
||||
|
||||
- Congo Tiger Fish
|
||||
- Convict Cichlid
|
||||
- Minnow
|
||||
- Mud Flounder
|
||||
- Neon Tetra
|
||||
|
||||
Seeds can be found also in dungeon chests.
|
||||
|
||||
@ -264,6 +399,10 @@ Seeds can be found also in dungeon chests.
|
||||
- hbhunger
|
||||
- flowers
|
||||
- mobs_animal
|
||||
- mobs_npc
|
||||
- stairs
|
||||
- wool
|
||||
- dye
|
||||
|
||||
## License:
|
||||
|
||||
@ -379,6 +518,140 @@ GNU Lesser General Public License v2.1 or later (see included LICENSE file)
|
||||
- x_farming_x_bonemeal_particles.png (modified by SaKeL)
|
||||
- x_farming_salt.png (modified by SaKeL)
|
||||
|
||||
**https://www.minecraftforum.net/forums/mapping-and-modding-java-edition/minecraft-mods/3043897-vanilla-1-16-4-revamped-fishing-139-new-fish-new, by Athesiel**
|
||||
|
||||
- x_farming_fish_albacore.png
|
||||
- x_farming_fish_anchovy.png
|
||||
- x_farming_fish_angelfish.png
|
||||
- x_farming_fish_angler.png
|
||||
- x_farming_fish_armored_catfish.png
|
||||
- x_farming_fish_arrow_squid.png
|
||||
- x_farming_fish_barracuda.png
|
||||
- x_farming_fish_black_seashroom.png
|
||||
- x_farming_fish_blobfish.png
|
||||
- x_farming_fish_blue_seashroom.png
|
||||
- x_farming_fish_bream.png
|
||||
- x_farming_fish_brown_seashroom.png
|
||||
- x_farming_fish_burbot.png
|
||||
- x_farming_fish_carp.png
|
||||
- x_farming_fish_catfish.png
|
||||
- x_farming_fish_catla.png
|
||||
- x_farming_fish_chorus_snail.png
|
||||
- x_farming_fish_chub.png
|
||||
- x_farming_fish_clam.png
|
||||
- x_farming_fish_cold_ocean_hermit_crab.png
|
||||
- x_farming_fish_conger.png
|
||||
- x_farming_fish_congo_tiger_fish.png
|
||||
- x_farming_fish_convict_cichlid.png
|
||||
- x_farming_fish_crab.png
|
||||
- x_farming_fish_crayfish.png
|
||||
- x_farming_fish_cyan_seashroom.png
|
||||
- x_farming_fish_damselfish.png
|
||||
- x_farming_fish_danios.png
|
||||
- x_farming_fish_desert_frog.png
|
||||
- x_farming_fish_desert_sunfish.png
|
||||
- x_farming_fish_diamond_angler.png
|
||||
- x_farming_fish_dwarf_caiman.png
|
||||
- x_farming_fish_eel.png
|
||||
- x_farming_fish_electric_eel.png
|
||||
- x_farming_fish_endray.png
|
||||
- x_farming_fish_father_sun.png
|
||||
- x_farming_fish_flier.png
|
||||
- x_farming_fish_floral_faefish.png
|
||||
- x_farming_fish_flounder.png
|
||||
- x_farming_fish_fourhorn_sculpin.png
|
||||
- x_farming_fish_frozen_boneminnow.png
|
||||
- x_farming_fish_frozen_ocean_hermit_crab.png
|
||||
- x_farming_fish_gar.png
|
||||
- x_farming_fish_giant_moray.png
|
||||
- x_farming_fish_goldeye.png
|
||||
- x_farming_fish_goldfish.png
|
||||
- x_farming_fish_grass_pickerel.png
|
||||
- x_farming_fish_gray_seashroom.png
|
||||
- x_farming_fish_green_seashroom.png
|
||||
- x_farming_fish_guppy.png
|
||||
- x_farming_fish_hagfish.png
|
||||
- x_farming_fish_halibut.png
|
||||
- x_farming_fish_herring.png
|
||||
- x_farming_fish_illager_ghostfish.png
|
||||
- x_farming_fish_ironfish.png
|
||||
- x_farming_fish_jungle_frog.png
|
||||
- x_farming_fish_koi.png
|
||||
- x_farming_fish_lamprey.png
|
||||
- x_farming_fish_largemouth_bass.png
|
||||
- x_farming_fish_lava_eel.png
|
||||
- x_farming_fish_leech.png
|
||||
- x_farming_fish_leerfish.png
|
||||
- x_farming_fish_light_gray_seashroom.png
|
||||
- x_farming_fish_lime_seashroom.png
|
||||
- x_farming_fish_lingcod.png
|
||||
- x_farming_fish_lobster.png
|
||||
- x_farming_fish_lukewarm_ocean_hermit_crab.png
|
||||
- x_farming_fish_magenta_seashroom.png
|
||||
- x_farming_fish_magma_slimefish.png
|
||||
- x_farming_fish_manta_ray.png
|
||||
- x_farming_fish_minnow.png
|
||||
- x_farming_fish_mother_moon.png
|
||||
- x_farming_fish_mud_flounder.png
|
||||
- x_farming_fish_neon_tetra.png
|
||||
- x_farming_fish_obster.png
|
||||
- x_farming_fish_ocean_hermit_crab.png
|
||||
- x_farming_fish_octopus.png
|
||||
- x_farming_fish_orange_seashroom.png
|
||||
- x_farming_fish_oscar.png
|
||||
- x_farming_fish_paddlefish.png
|
||||
- x_farming_fish_pearl_isopod.png
|
||||
- x_farming_fish_pearlwog.png
|
||||
- x_farming_fish_perch.png
|
||||
- x_farming_fish_piglish.png
|
||||
- x_farming_fish_pike.png
|
||||
- x_farming_fish_pink_seashroom.png
|
||||
- x_farming_fish_piranha.png
|
||||
- x_farming_fish_prismfish.png
|
||||
- x_farming_fish_pumpkinseed.png
|
||||
- x_farming_fish_purple_seashroom.png
|
||||
- x_farming_fish_rainbow_trout.png
|
||||
- x_farming_fish_rainbowfish.png
|
||||
- x_farming_fish_red_mullet.png
|
||||
- x_farming_fish_red_seashroom.png
|
||||
- x_farming_fish_red_snapper.png
|
||||
- x_farming_fish_redbreast_sunfish.png
|
||||
- x_farming_fish_rockfish.png
|
||||
- x_farming_fish_rohu.png
|
||||
- x_farming_fish_rosefish.png
|
||||
- x_farming_fish_rusty_skullfin.png
|
||||
- x_farming_fish_sablefish.png
|
||||
- x_farming_fish_sardine.png
|
||||
- x_farming_fish_sawfish.png
|
||||
- x_farming_fish_sea_cucumber.png
|
||||
- x_farming_fish_shrimp.png
|
||||
- x_farming_fish_skate.png
|
||||
- x_farming_fish_skullfin.png
|
||||
- x_farming_fish_skykoi.png
|
||||
- x_farming_fish_slimefish.png
|
||||
- x_farming_fish_smallmouth_bass.png
|
||||
- x_farming_fish_sterlet.png
|
||||
- x_farming_fish_stingray.png
|
||||
- x_farming_fish_sturgeon.png
|
||||
- x_farming_fish_sunfish.png
|
||||
- x_farming_fish_swamp_darter.png
|
||||
- x_farming_fish_swamp_frog.png
|
||||
- x_farming_fish_swordfish.png
|
||||
- x_farming_fish_tancho_koi.png
|
||||
- x_farming_fish_tench.png
|
||||
- x_farming_fish_tilapia.png
|
||||
- x_farming_fish_totemfish.png
|
||||
- x_farming_fish_true_goldfish.png
|
||||
- x_farming_fish_vampire_squid.png
|
||||
- x_farming_fish_walleye.png
|
||||
- x_farming_fish_warm_ocean_hermit_crab.png
|
||||
- x_farming_fish_white_bullhead.png
|
||||
- x_farming_fish_white_seashroom.png
|
||||
- x_farming_fish_whitefish.png
|
||||
- x_farming_fish_wolffish.png
|
||||
- x_farming_fish_woodskip.png
|
||||
- x_farming_fish_yellow_seashroom.png
|
||||
|
||||
**LGPL-2.1-or-later, by SaKeL**
|
||||
|
||||
- x_farming_carrot_seed.png
|
||||
@ -452,6 +725,43 @@ GNU Lesser General Public License v2.1 or later (see included LICENSE file)
|
||||
- x_farming_salt_4_side.png
|
||||
- x_farming_salt_4_top.png
|
||||
- x_farming_salt_water.png
|
||||
- x_farming_drilled_ice.png
|
||||
- x_farming_ice_auger.png
|
||||
- x_farming_icefishing_back_0.png
|
||||
- x_farming_icefishing_back_1.png
|
||||
- x_farming_icefishing_back_2.png
|
||||
- x_farming_icefishing_back_3.png
|
||||
- x_farming_icefishing_back_4.png
|
||||
- x_farming_icefishing_back_5.png
|
||||
- x_farming_icefishing_back_6.png
|
||||
- x_farming_icefishing_back_7.png
|
||||
- x_farming_icefishing_back_8.png
|
||||
- x_farming_icefishing_back_9.png
|
||||
- x_farming_icefishing_bottom.png
|
||||
- x_farming_icefishing_front_0.png
|
||||
- x_farming_icefishing_front_1.png
|
||||
- x_farming_icefishing_front_2.png
|
||||
- x_farming_icefishing_front_3.png
|
||||
- x_farming_icefishing_front_4.png
|
||||
- x_farming_icefishing_front_5.png
|
||||
- x_farming_icefishing_front_6.png
|
||||
- x_farming_icefishing_front_7.png
|
||||
- x_farming_icefishing_front_8.png
|
||||
- x_farming_icefishing_front_9.png
|
||||
- x_farming_icefishing_inv.png
|
||||
- x_farming_icefishing_left.png
|
||||
- x_farming_icefishing_right.png
|
||||
- x_farming_icefishing_top_1.png
|
||||
- x_farming_icefishing_top_2.png
|
||||
- x_farming_icefishing_top_3.png
|
||||
- x_farming_icefishing_top_4.png
|
||||
- x_farming_icefishing_top_5.png
|
||||
- x_farming_icefishing_top_6.png
|
||||
- x_farming_icefishing_top_7.png
|
||||
- x_farming_icefishing_top_8.png
|
||||
- x_farming_icefishing_top_9.png
|
||||
- x_farming_icefishing_top_animated.png
|
||||
- x_farming_icefishing_top_animated_9.png
|
||||
|
||||
**MIT**
|
||||
|
||||
|
17
api.lua
@ -31,6 +31,23 @@ function x_farming.meta_set_str(key, value, pos)
|
||||
meta:set_string(key, value)
|
||||
end
|
||||
|
||||
-- merge two indexed tables
|
||||
function x_farming.mergeTables(t1, t2)
|
||||
local _t1 = {unpack(t1)}
|
||||
local _t2 = {unpack(t2)}
|
||||
|
||||
for k, v in ipairs(_t2) do
|
||||
table.insert(_t1, v)
|
||||
end
|
||||
|
||||
return _t1
|
||||
end
|
||||
|
||||
-- Change an entire string to Title Case (i.e. capitalise the first letter of each word)
|
||||
function x_farming.tchelper(first, rest)
|
||||
return first:upper()..rest:lower()
|
||||
end
|
||||
|
||||
-- grow blocks next to the plant
|
||||
function x_farming.grow_block(pos, elapsed)
|
||||
local node = minetest.get_node(pos)
|
||||
|
@ -306,14 +306,14 @@ minetest.register_craftitem("x_farming:bonemeal", {
|
||||
--
|
||||
|
||||
minetest.register_craft({
|
||||
output = "x_farming:bonemeal 9",
|
||||
output = "x_farming:bonemeal 4",
|
||||
recipe = {
|
||||
{"bones:bones"}
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "x_farming:bonemeal 9",
|
||||
output = "x_farming:bonemeal 4",
|
||||
recipe = {
|
||||
{"default:coral_skeleton"}
|
||||
}
|
||||
|
151
crafting.lua
@ -345,3 +345,154 @@ minetest.register_craft({
|
||||
{"default:paper", "", ""}
|
||||
},
|
||||
})
|
||||
|
||||
-- Ice Fishing
|
||||
|
||||
minetest.register_craft({
|
||||
output = "x_farming:seed_icefishing",
|
||||
recipe = {
|
||||
{"group:wool", "farming:string", "group:stick"},
|
||||
{"", "farming:string", "group:stick"},
|
||||
{"", "farming:string", "group:stick"}
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "dye:black 4",
|
||||
recipe = {
|
||||
{"x_farming:black_seashroom"}
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "dye:blue 4",
|
||||
recipe = {
|
||||
{"x_farming:blue_seashroom"}
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "dye:brown 4",
|
||||
recipe = {
|
||||
{"x_farming:brown_seashroom"}
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "dye:cyan 4",
|
||||
recipe = {
|
||||
{"x_farming:cyan_seashroom"}
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "dye:dark_grey 4",
|
||||
recipe = {
|
||||
{"x_farming:gray_seashroom"}
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "dye:grey 4",
|
||||
recipe = {
|
||||
{"x_farming:light_gray_seashroom"}
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "dye:dark_green 4",
|
||||
recipe = {
|
||||
{"x_farming:green_seashroom"}
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "dye:green 4",
|
||||
recipe = {
|
||||
{"x_farming:lime_seashroom"}
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "dye:magenta 4",
|
||||
recipe = {
|
||||
{"x_farming:magenta_seashroom"}
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "dye:orange 4",
|
||||
recipe = {
|
||||
{"x_farming:orange_seashroom"}
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "dye:pink 4",
|
||||
recipe = {
|
||||
{"x_farming:pink_seashroom"}
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "dye:violet 4",
|
||||
recipe = {
|
||||
{"x_farming:purple_seashroom"}
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "dye:red 4",
|
||||
recipe = {
|
||||
{"x_farming:red_seashroom"}
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "dye:white 4",
|
||||
recipe = {
|
||||
{"x_farming:white_seashroom"}
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "dye:yellow 4",
|
||||
recipe = {
|
||||
{"x_farming:yellow_seashroom"}
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:diamond",
|
||||
recipe = {
|
||||
{"x_farming:diamond_angler"}
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:gold_lump",
|
||||
recipe = {
|
||||
{"x_farming:goldfish"}
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:gold_ingot",
|
||||
recipe = {
|
||||
{"x_farming:true_goldfish"}
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:iron_lump",
|
||||
recipe = {
|
||||
{"x_farming:ironfish"}
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "x_farming:seed_pumpkin",
|
||||
recipe = {
|
||||
{"x_farming:pumpkinseed"}
|
||||
}
|
||||
})
|
||||
|
943
ice_fishing.lua
Normal file
@ -0,0 +1,943 @@
|
||||
-- ICE FISHING
|
||||
local icefishing = {
|
||||
drops = {
|
||||
treasure = {
|
||||
"default:mese_crystal",
|
||||
"default:diamond",
|
||||
"x_farming:diamond_angler",
|
||||
"x_farming:goldfish",
|
||||
"x_farming:true_goldfish",
|
||||
"x_farming:rusty_skullfin",
|
||||
"x_farming:slimefish",
|
||||
"x_farming:illager_ghostfish",
|
||||
"x_farming:father_sun",
|
||||
"x_farming:mother_moon",
|
||||
},
|
||||
tier_1 = {
|
||||
"default:stick",
|
||||
"default:wood",
|
||||
"flowers:waterlily",
|
||||
"default:coral_brown",
|
||||
"default:coral_orange",
|
||||
"default:coral_skeleton",
|
||||
"bones:bones",
|
||||
"default:clay",
|
||||
"x_farming:sea_cucumber",
|
||||
},
|
||||
tier_2 = {
|
||||
"x_farming:shrimp",
|
||||
"x_farming:anchovy",
|
||||
"x_farming:albacore",
|
||||
"x_farming:black_seashroom",
|
||||
"x_farming:blue_seashroom",
|
||||
"x_farming:brown_seashroom",
|
||||
"x_farming:cyan_seashroom",
|
||||
"x_farming:gray_seashroom",
|
||||
"x_farming:light_gray_seashroom",
|
||||
"x_farming:green_seashroom",
|
||||
"x_farming:lime_seashroom",
|
||||
"x_farming:magenta_seashroom",
|
||||
"x_farming:orange_seashroom",
|
||||
"x_farming:pink_seashroom",
|
||||
"x_farming:purple_seashroom",
|
||||
"x_farming:red_seashroom",
|
||||
"x_farming:white_seashroom",
|
||||
"x_farming:yellow_seashroom",
|
||||
},
|
||||
tier_3 = {
|
||||
"x_farming:goldeye",
|
||||
"x_farming:halibut",
|
||||
"x_farming:herring",
|
||||
"x_farming:ironfish",
|
||||
"x_farming:pearlwog",
|
||||
"x_farming:blobfish",
|
||||
"x_farming:tancho_koi",
|
||||
"x_farming:pike",
|
||||
},
|
||||
tier_4 = {
|
||||
"x_farming:red_mullet",
|
||||
"x_farming:rainbow_trout",
|
||||
"x_farming:crab",
|
||||
"x_farming:lobster",
|
||||
"x_farming:stingray",
|
||||
"x_farming:tilapia",
|
||||
"x_farming:obster",
|
||||
"x_farming:totemfish",
|
||||
}
|
||||
},
|
||||
biomes = {
|
||||
["icesheet_ocean"] = {
|
||||
"x_farming:angler",
|
||||
"x_farming:frozen_boneminnow",
|
||||
"x_farming:frozen_ocean_hermit_crab",
|
||||
"x_farming:paddlefish",
|
||||
"x_farming:pearl_isopod",
|
||||
},
|
||||
["taiga_ocean"] = {
|
||||
"x_farming:armored_catfish",
|
||||
"x_farming:gar",
|
||||
"x_farming:giant_moray",
|
||||
"x_farming:perch",
|
||||
"x_farming:piglish",
|
||||
},
|
||||
["desert_ocean"] = {
|
||||
"x_farming:arrow_squid",
|
||||
"x_farming:desert_frog",
|
||||
"x_farming:desert_sunfish",
|
||||
"x_farming:piranha",
|
||||
"x_farming:prismfish",
|
||||
"x_farming:pumpkinseed",
|
||||
},
|
||||
["tundra_ocean"] = {
|
||||
"x_farming:barracuda",
|
||||
"x_farming:flier",
|
||||
"x_farming:floral_faefish",
|
||||
"x_farming:flounder",
|
||||
"x_farming:fourhorn_sculpin",
|
||||
},
|
||||
["snowy_grassland_ocean"] = {
|
||||
"x_farming:grass_pickerel",
|
||||
"x_farming:guppy",
|
||||
"x_farming:hagfish",
|
||||
"x_farming:rainbowfish",
|
||||
"x_farming:red_snapper",
|
||||
},
|
||||
["coniferous_forest_ocean"] = {
|
||||
"x_farming:bream",
|
||||
"x_farming:redbreast_sunfish",
|
||||
"x_farming:rockfish",
|
||||
"x_farming:rohu",
|
||||
"x_farming:rosefish",
|
||||
},
|
||||
["grassland_ocean"] = {
|
||||
"x_farming:conger",
|
||||
"x_farming:sablefish",
|
||||
"x_farming:sardine",
|
||||
"x_farming:sawfish",
|
||||
"x_farming:skate",
|
||||
"x_farming:skullfin",
|
||||
},
|
||||
["savanna_ocean"] = {
|
||||
"x_farming:chorus_snail",
|
||||
"x_farming:white_bullhead",
|
||||
"x_farming:whitefish",
|
||||
"x_farming:wolffish",
|
||||
"x_farming:woodskip",
|
||||
},
|
||||
["cold_desert_ocean"] = {
|
||||
"x_farming:chub",
|
||||
"x_farming:cold_ocean_hermit_crab",
|
||||
"x_farming:oscar",
|
||||
"x_farming:leerfish",
|
||||
},
|
||||
["sandstone_desert_ocean"] = {
|
||||
"x_farming:clam",
|
||||
"x_farming:skykoi",
|
||||
"x_farming:smallmouth_bass",
|
||||
"x_farming:sterlet",
|
||||
},
|
||||
["deciduous_forest_ocean"] = {
|
||||
"x_farming:crayfish",
|
||||
"x_farming:damselfish",
|
||||
"x_farming:danios",
|
||||
"x_farming:vampire_squid",
|
||||
"x_farming:walleye",
|
||||
"x_farming:warm_ocean_hermit_crab",
|
||||
},
|
||||
["rainforest_ocean"] = {
|
||||
"x_farming:burbot",
|
||||
"x_farming:koi",
|
||||
"x_farming:lamprey",
|
||||
"x_farming:largemouth_bass",
|
||||
"x_farming:lava_eel",
|
||||
"x_farming:leech",
|
||||
},
|
||||
["rainforest_swamp"] = {
|
||||
"x_farming:swamp_darter",
|
||||
"x_farming:swamp_frog",
|
||||
"x_farming:sturgeon",
|
||||
"x_farming:sunfish",
|
||||
"x_farming:swordfish",
|
||||
},
|
||||
["icesheet"] = {
|
||||
"x_farming:dwarf_caiman",
|
||||
"x_farming:eel",
|
||||
"x_farming:electric_eel",
|
||||
"x_farming:endray",
|
||||
"x_farming:tench",
|
||||
},
|
||||
["tundra_beach"] = {
|
||||
"x_farming:carp",
|
||||
"x_farming:catfish",
|
||||
"x_farming:catla",
|
||||
"x_farming:ocean_hermit_crab",
|
||||
"x_farming:octopus",
|
||||
},
|
||||
["savanna_shore"] = {
|
||||
"x_farming:angelfish",
|
||||
"x_farming:lingcod",
|
||||
"x_farming:lukewarm_ocean_hermit_crab",
|
||||
"x_farming:magma_slimefish",
|
||||
"x_farming:manta_ray",
|
||||
},
|
||||
["deciduous_forest_shore"] = {
|
||||
"x_farming:congo_tiger_fish",
|
||||
"x_farming:convict_cichlid",
|
||||
"x_farming:minnow",
|
||||
"x_farming:mud_flounder",
|
||||
"x_farming:neon_tetra",
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
-- how often node timers for plants will tick, +/- some random value
|
||||
function icefishing.tick(pos)
|
||||
minetest.get_node_timer(pos):start(math.random(166, 286))
|
||||
end
|
||||
|
||||
-- how often a growth failure tick is retried (e.g. too dark)
|
||||
function icefishing.tick_again(pos)
|
||||
minetest.get_node_timer(pos):start(math.random(80, 160))
|
||||
end
|
||||
|
||||
icefishing.on_construct = function(pos)
|
||||
local under = {x = pos.x, y = pos.y - 1, z = pos.z}
|
||||
local biome_data = minetest.get_biome_data(under)
|
||||
local biome_name = minetest.get_biome_name(biome_data.biome)
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string("infotext", "Biome: " .. string.gsub(string.gsub(biome_name, "(_)", " "), "(%a)([%w_']*)", x_farming.tchelper))
|
||||
end
|
||||
|
||||
icefishing.after_destruct = function(pos, oldnode, oldmetadata, digger)
|
||||
local max_steps = 9
|
||||
local current_step = tonumber(string.reverse(string.reverse(oldnode.name):split("_")[1]))
|
||||
|
||||
-- is a seed
|
||||
if not current_step then
|
||||
minetest.item_drop(ItemStack("x_farming:seed_icefishing"), nil, pos)
|
||||
return
|
||||
end
|
||||
|
||||
-- too short for getting a fish or junk (tier_1)
|
||||
if current_step < 6 then
|
||||
minetest.item_drop(ItemStack("x_farming:seed_icefishing"), nil, pos)
|
||||
return
|
||||
end
|
||||
|
||||
-- get ice nodes around
|
||||
local under = {x = pos.x, y = pos.y - 1, z = pos.z}
|
||||
local biome_data = minetest.get_biome_data(under)
|
||||
local biome_name = minetest.get_biome_name(biome_data.biome)
|
||||
local pos1 = vector.add(pos, 1)
|
||||
local pos2 = vector.subtract(pos, 1)
|
||||
local positions = minetest.find_nodes_in_area_under_air(
|
||||
{x = under.x - 1, y = under.y, z = under.z - 1},
|
||||
{x = under.x + 1, y = under.y, z = under.z + 1},
|
||||
"default:ice"
|
||||
)
|
||||
-- subtract 1 - not including the node where the icefishing was
|
||||
local rarity = 8 - (current_step - 1) * 7 / (max_steps - 1)
|
||||
rarity = math.floor(rarity)
|
||||
local positions_count = #positions - 1
|
||||
local items_to_drop = {}
|
||||
local tier = 1
|
||||
|
||||
-- tiers
|
||||
if current_step == max_steps then
|
||||
if positions_count >= 4 and positions_count < 6 then
|
||||
tier = 2
|
||||
elseif positions_count >= 6 and positions_count < 8 then
|
||||
tier = 3
|
||||
elseif positions_count >= 8 then
|
||||
tier = 4
|
||||
end
|
||||
end
|
||||
|
||||
-- initial item to drop
|
||||
local tier_items = icefishing.drops["tier_"..tier]
|
||||
local biome_items = icefishing.biomes[biome_name]
|
||||
|
||||
-- add specific biome items
|
||||
if biome_items ~= nil and tier == 4 then
|
||||
tier_items = x_farming.mergeTables(tier_items, biome_items)
|
||||
end
|
||||
|
||||
local tier_item = tier_items[math.random(1, #tier_items)]
|
||||
table.insert(items_to_drop, tier_item)
|
||||
|
||||
-- rarity - add extra item from list of items to drop
|
||||
if math.random(1, rarity) == 1 then
|
||||
local random_item = items_to_drop[math.random(1, #items_to_drop)]
|
||||
|
||||
table.insert(items_to_drop, random_item)
|
||||
end
|
||||
|
||||
-- 50% chance to drop the ice fishing equipment
|
||||
if math.random(1, 2) == 1 then
|
||||
table.insert(items_to_drop, "x_farming:seed_icefishing")
|
||||
end
|
||||
|
||||
-- treasure chance (10%)
|
||||
if math.random(1, 10) == 1 and tier == 4 then
|
||||
local random_items = icefishing.drops.treasure
|
||||
local random_item = random_items[math.random(1, #random_items)]
|
||||
|
||||
table.insert(items_to_drop, random_item)
|
||||
end
|
||||
|
||||
for i,v in ipairs(items_to_drop) do
|
||||
local obj = minetest.add_item(pos, ItemStack(v))
|
||||
|
||||
if obj and minetest.registered_items[v] then
|
||||
if obj then
|
||||
obj:set_velocity({
|
||||
x = math.random(-1, 1),
|
||||
y = 2,
|
||||
z = math.random(-1, 1),
|
||||
})
|
||||
end
|
||||
else
|
||||
minetest.log('warning', '[x_farming] Tried to drop non-existing item "' .. dump(v) .. '" ')
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- Seed placement
|
||||
icefishing.place_seed = function(itemstack, placer, pointed_thing, plantname)
|
||||
local pt = pointed_thing
|
||||
-- check if pointing at a node
|
||||
if not pt then
|
||||
return itemstack
|
||||
end
|
||||
if pt.type ~= "node" then
|
||||
return itemstack
|
||||
end
|
||||
|
||||
local under = minetest.get_node(pt.under)
|
||||
local above = minetest.get_node(pt.above)
|
||||
|
||||
local player_name = placer and placer:get_player_name() or ""
|
||||
|
||||
if minetest.is_protected(pt.under, player_name) then
|
||||
minetest.record_protection_violation(pt.under, player_name)
|
||||
return
|
||||
end
|
||||
if minetest.is_protected(pt.above, player_name) then
|
||||
minetest.record_protection_violation(pt.above, player_name)
|
||||
return
|
||||
end
|
||||
|
||||
-- return if any of the nodes is not registered
|
||||
if not minetest.registered_nodes[under.name] then
|
||||
return itemstack
|
||||
end
|
||||
if not minetest.registered_nodes[above.name] then
|
||||
return itemstack
|
||||
end
|
||||
|
||||
-- check if pointing at the top of the node
|
||||
if pt.above.y ~= pt.under.y+1 then
|
||||
return itemstack
|
||||
end
|
||||
|
||||
-- check if you can replace the node above the pointed node
|
||||
if not minetest.registered_nodes[above.name].buildable_to then
|
||||
return itemstack
|
||||
end
|
||||
|
||||
-- check if pointing at soil
|
||||
if under.name ~= "x_farming:drilled_ice" then
|
||||
return itemstack
|
||||
end
|
||||
|
||||
-- add the node and remove 1 item from the itemstack
|
||||
minetest.log("action", player_name .. " places node " .. plantname .. " at " ..
|
||||
minetest.pos_to_string(pt.above))
|
||||
minetest.add_node(pt.above, {name = plantname, param2 = 1})
|
||||
icefishing.tick(pt.above)
|
||||
if not (creative and creative.is_enabled_for
|
||||
and creative.is_enabled_for(player_name)) then
|
||||
itemstack:take_item()
|
||||
end
|
||||
return itemstack
|
||||
end
|
||||
|
||||
icefishing.grow_plant = function(pos, elapsed)
|
||||
local node = minetest.get_node(pos)
|
||||
local name = node.name
|
||||
local def = minetest.registered_nodes[name]
|
||||
|
||||
if not def.next_plant then
|
||||
-- disable timer for fully grown plant
|
||||
return
|
||||
end
|
||||
|
||||
-- grow seed
|
||||
if minetest.get_item_group(node.name, "seed") and def.fertility then
|
||||
local soil_node = minetest.get_node_or_nil({x = pos.x, y = pos.y - 1, z = pos.z})
|
||||
if not soil_node then
|
||||
icefishing.tick_again(pos)
|
||||
return
|
||||
end
|
||||
-- omitted is a check for light, we assume seeds can germinate in the dark.
|
||||
for _, v in pairs(def.fertility) do
|
||||
if minetest.get_item_group(soil_node.name, v) ~= 0 then
|
||||
local placenode = {name = def.next_plant}
|
||||
if def.place_param2 then
|
||||
placenode.param2 = def.place_param2
|
||||
end
|
||||
minetest.swap_node(pos, placenode)
|
||||
if minetest.registered_nodes[def.next_plant].next_plant then
|
||||
icefishing.tick(pos)
|
||||
return
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
return
|
||||
end
|
||||
|
||||
-- check if on ice
|
||||
local below = minetest.get_node({x = pos.x, y = pos.y - 1, z = pos.z})
|
||||
if below.name ~= "x_farming:drilled_ice" then
|
||||
icefishing.tick_again(pos)
|
||||
return
|
||||
end
|
||||
|
||||
-- check light
|
||||
local light = minetest.get_node_light(pos)
|
||||
if not light or light < def.minlight or light > def.maxlight then
|
||||
icefishing.tick_again(pos)
|
||||
return
|
||||
end
|
||||
|
||||
-- grow
|
||||
local placenode = {name = def.next_plant}
|
||||
if def.place_param2 then
|
||||
placenode.param2 = def.place_param2
|
||||
end
|
||||
minetest.swap_node(pos, placenode)
|
||||
|
||||
minetest.add_particlespawner({
|
||||
amount = 7,
|
||||
time = 3,
|
||||
minpos = {x = pos.x - 0.2, y = pos.y - 0.2, z = pos.z - 0.2},
|
||||
maxpos = {x = pos.x + 0.2, y = pos.y - 0.4, z = pos.z + 0.2},
|
||||
minacc = {x = -0.1, y = 0.1, z = -0.1},
|
||||
maxacc = {x = 0.1, y = 0.1, z = 0.1},
|
||||
minexptime = 0.4,
|
||||
maxexptime = 0.8,
|
||||
minsize = 1.5,
|
||||
maxsize = 2,
|
||||
texture = 'bubble.png'
|
||||
})
|
||||
|
||||
-- new timer needed?
|
||||
if minetest.registered_nodes[def.next_plant].next_plant then
|
||||
icefishing.tick(pos)
|
||||
end
|
||||
return
|
||||
end
|
||||
|
||||
-- Items / Harvest
|
||||
|
||||
local fishes = {
|
||||
{name = "crab", item_eat = 1, item_eat_cooked = 6},
|
||||
{name = "goldeye", item_eat = 1, item_eat_cooked = 3},
|
||||
{name = "halibut", item_eat = 1, item_eat_cooked = 6},
|
||||
{name = "herring", item_eat = 1, item_eat_cooked = 3},
|
||||
{name = "rainbow_trout", item_eat = 1, item_eat_cooked = 6},
|
||||
{name = "red_mullet", item_eat = 1, item_eat_cooked = 6},
|
||||
{name = "shrimp", item_eat = 1, item_eat_cooked = 2},
|
||||
{name = "swamp_frog", item_eat = 1, item_eat_cooked = 2},
|
||||
{name = "swamp_darter", item_eat = 1, item_eat_cooked = 4},
|
||||
{name = "jungle_frog", item_eat = 1, item_eat_cooked = 2},
|
||||
{name = "albacore", item_eat = 1, item_eat_cooked = 4},
|
||||
{name = "anchovy", item_eat = 1, item_eat_cooked = 4},
|
||||
{name = "angelfish", item_eat = 1, item_eat_cooked = 4},
|
||||
{name = "angler", item_eat = 1, item_eat_cooked = 4},
|
||||
{name = "armored_catfish", item_eat = 1, item_eat_cooked = 4},
|
||||
{name = "arrow_squid", item_eat = 1, item_eat_cooked = 8},
|
||||
{name = "barracuda", item_eat = 1, item_eat_cooked = 4},
|
||||
{name = "black_seashroom", item_eat = 1, item_eat_cooked = 3},
|
||||
{name = "blobfish", item_eat = 1, item_eat_cooked = 4},
|
||||
{name = "blue_seashroom", item_eat = 1, item_eat_cooked = 3},
|
||||
{name = "bream", item_eat = 1, item_eat_cooked = 4},
|
||||
{name = "brown_seashroom", item_eat = 1, item_eat_cooked = 3},
|
||||
{name = "burbot", item_eat = 1, item_eat_cooked = 4},
|
||||
{name = "carp", item_eat = 1, item_eat_cooked = 4},
|
||||
{name = "catfish", item_eat = 1, item_eat_cooked = 4},
|
||||
{name = "catla", item_eat = 1, item_eat_cooked = 4},
|
||||
{name = "chorus_snail", item_eat = 1, item_eat_cooked = 2},
|
||||
{name = "chub", item_eat = 1, item_eat_cooked = 4},
|
||||
{name = "clam", item_eat = 1, item_eat_cooked = 2},
|
||||
{name = "cold_ocean_hermit_crab", item_eat = 1, item_eat_cooked = 2},
|
||||
{name = "conger", item_eat = 1, item_eat_cooked = 4},
|
||||
{name = "congo_tiger_fish", item_eat = 1, item_eat_cooked = 4},
|
||||
{name = "convict_cichlid", item_eat = 1, item_eat_cooked = 4},
|
||||
{name = "crayfish", item_eat = 1, item_eat_cooked = 4},
|
||||
{name = "cyan_seashroom", item_eat = 1, item_eat_cooked = 3},
|
||||
{name = "damselfish", item_eat = 1, item_eat_cooked = 4},
|
||||
{name = "danios", item_eat = 1, item_eat_cooked = 4},
|
||||
{name = "desert_frog", item_eat = 1, item_eat_cooked = 2},
|
||||
{name = "desert_sunfish", item_eat = 1, item_eat_cooked = 4},
|
||||
{name = "diamond_angler", item_eat = 1, item_eat_cooked = 8},
|
||||
{name = "dwarf_caiman", item_eat = 1, item_eat_cooked = 4},
|
||||
{name = "eel", item_eat = 1, item_eat_cooked = 4},
|
||||
{name = "electric_eel", item_eat = 1, item_eat_cooked = 4},
|
||||
{name = "endray", item_eat = 1, item_eat_cooked = 5},
|
||||
{name = "father_sun", item_eat = 1, item_eat_cooked = 10},
|
||||
{name = "flier", item_eat = 1, item_eat_cooked = 4},
|
||||
{name = "floral_faefish", item_eat = 1, item_eat_cooked = 4},
|
||||
{name = "flounder", item_eat = 1, item_eat_cooked = 4},
|
||||
{name = "fourhorn_sculpin", item_eat = 1, item_eat_cooked = 4},
|
||||
{name = "frozen_boneminnow", item_eat = 1, item_eat_cooked = 4},
|
||||
{name = "frozen_ocean_hermit_crab", item_eat = 1, item_eat_cooked = 2},
|
||||
{name = "gar", item_eat = 1, item_eat_cooked = 4},
|
||||
{name = "giant_moray", item_eat = 1, item_eat_cooked = 6},
|
||||
{name = "goldfish", item_eat = 1, item_eat_cooked = 8},
|
||||
{name = "grass_pickerel", item_eat = 1, item_eat_cooked = 4},
|
||||
{name = "gray_seashroom", item_eat = 1, item_eat_cooked = 3},
|
||||
{name = "green_seashroom", item_eat = 1, item_eat_cooked = 3},
|
||||
{name = "guppy", item_eat = 1, item_eat_cooked = 4},
|
||||
{name = "hagfish", item_eat = 1, item_eat_cooked = 4},
|
||||
{name = "illager_ghostfish", item_eat = 1, item_eat_cooked = 10},
|
||||
{name = "ironfish", item_eat = 1, item_eat_cooked = 4},
|
||||
{name = "koi", item_eat = 1, item_eat_cooked = 4},
|
||||
{name = "lamprey", item_eat = 1, item_eat_cooked = 4},
|
||||
{name = "largemouth_bass", item_eat = 1, item_eat_cooked = 4},
|
||||
{name = "lava_eel", item_eat = 1, item_eat_cooked = 6},
|
||||
{name = "leech", item_eat = 1, item_eat_cooked = 4},
|
||||
{name = "leerfish", item_eat = 1, item_eat_cooked = 4},
|
||||
{name = "light_gray_seashroom", item_eat = 1, item_eat_cooked = 3},
|
||||
{name = "lime_seashroom", item_eat = 1, item_eat_cooked = 3},
|
||||
{name = "lingcod", item_eat = 1, item_eat_cooked = 4},
|
||||
{name = "lobster", item_eat = 1, item_eat_cooked = 8},
|
||||
{name = "lukewarm_ocean_hermit_crab", item_eat = 1, item_eat_cooked = 2},
|
||||
{name = "magenta_seashroom", item_eat = 1, item_eat_cooked = 3},
|
||||
{name = "magma_slimefish", item_eat = 1, item_eat_cooked = 4},
|
||||
{name = "manta_ray", item_eat = 1, item_eat_cooked = 4},
|
||||
{name = "minnow", item_eat = 1, item_eat_cooked = 4},
|
||||
{name = "mother_moon", item_eat = 1, item_eat_cooked = 10},
|
||||
{name = "mud_flounder", item_eat = 1, item_eat_cooked = 4},
|
||||
{name = "neon_tetra", item_eat = 1, item_eat_cooked = 4},
|
||||
{name = "obster", item_eat = 1, item_eat_cooked = 4},
|
||||
{name = "ocean_hermit_crab", item_eat = 1, item_eat_cooked = 2},
|
||||
{name = "octopus", item_eat = 1, item_eat_cooked = 8},
|
||||
{name = "orange_seashroom", item_eat = 1, item_eat_cooked = 3},
|
||||
{name = "oscar", item_eat = 1, item_eat_cooked = 4},
|
||||
{name = "paddlefish", item_eat = 1, item_eat_cooked = 4},
|
||||
{name = "pearl_isopod", item_eat = 1, item_eat_cooked = 4},
|
||||
{name = "pearlwog", item_eat = 1, item_eat_cooked = 4},
|
||||
{name = "perch", item_eat = 1, item_eat_cooked = 4},
|
||||
{name = "piglish", item_eat = 1, item_eat_cooked = 4},
|
||||
{name = "pike", item_eat = 1, item_eat_cooked = 4},
|
||||
{name = "pink_seashroom", item_eat = 1, item_eat_cooked = 3},
|
||||
{name = "piranha", item_eat = 1, item_eat_cooked = 6},
|
||||
{name = "prismfish", item_eat = 1, item_eat_cooked = 4},
|
||||
{name = "pumpkinseed", item_eat = 1, item_eat_cooked = 4},
|
||||
{name = "purple_seashroom", item_eat = 1, item_eat_cooked = 3},
|
||||
{name = "rainbowfish", item_eat = 1, item_eat_cooked = 4},
|
||||
{name = "red_seashroom", item_eat = 1, item_eat_cooked = 3},
|
||||
{name = "red_snapper", item_eat = 1, item_eat_cooked = 6},
|
||||
{name = "redbreast_sunfish", item_eat = 1, item_eat_cooked = 4},
|
||||
{name = "rockfish", item_eat = 1, item_eat_cooked = 4},
|
||||
{name = "rohu", item_eat = 1, item_eat_cooked = 4},
|
||||
{name = "rosefish", item_eat = 1, item_eat_cooked = 4},
|
||||
{name = "rusty_skullfin", item_eat = 1, item_eat_cooked = 10},
|
||||
{name = "sablefish", item_eat = 1, item_eat_cooked = 4},
|
||||
{name = "sardine", item_eat = 1, item_eat_cooked = 4},
|
||||
{name = "sawfish", item_eat = 1, item_eat_cooked = 5},
|
||||
{name = "sea_cucumber", item_eat = 1, item_eat_cooked = 2},
|
||||
{name = "skate", item_eat = 1, item_eat_cooked = 4},
|
||||
{name = "skullfin", item_eat = 1, item_eat_cooked = 4},
|
||||
{name = "skykoi", item_eat = 1, item_eat_cooked = 4},
|
||||
{name = "slimefish", item_eat = 1, item_eat_cooked = 8},
|
||||
{name = "smallmouth_bass", item_eat = 1, item_eat_cooked = 4},
|
||||
{name = "sterlet", item_eat = 1, item_eat_cooked = 4},
|
||||
{name = "stingray", item_eat = 1, item_eat_cooked = 6},
|
||||
{name = "sturgeon", item_eat = 1, item_eat_cooked = 4},
|
||||
{name = "sunfish", item_eat = 1, item_eat_cooked = 4},
|
||||
{name = "swordfish", item_eat = 1, item_eat_cooked = 6},
|
||||
{name = "tancho_koi", item_eat = 1, item_eat_cooked = 4},
|
||||
{name = "tench", item_eat = 1, item_eat_cooked = 4},
|
||||
{name = "tilapia", item_eat = 1, item_eat_cooked = 4},
|
||||
{name = "totemfish", item_eat = 1, item_eat_cooked = 4},
|
||||
{name = "true_goldfish", item_eat = 1, item_eat_cooked = 10},
|
||||
{name = "vampire_squid", item_eat = 1, item_eat_cooked = 6},
|
||||
{name = "walleye", item_eat = 1, item_eat_cooked = 4},
|
||||
{name = "warm_ocean_hermit_crab", item_eat = 1, item_eat_cooked = 2},
|
||||
{name = "white_bullhead", item_eat = 1, item_eat_cooked = 4},
|
||||
{name = "white_seashroom", item_eat = 1, item_eat_cooked = 3},
|
||||
{name = "whitefish", item_eat = 1, item_eat_cooked = 4},
|
||||
{name = "wolffish", item_eat = 1, item_eat_cooked = 4},
|
||||
{name = "woodskip", item_eat = 1, item_eat_cooked = 4},
|
||||
{name = "yellow_seashroom", item_eat = 1, item_eat_cooked = 3},
|
||||
}
|
||||
|
||||
for i, def in ipairs(fishes) do
|
||||
local name = "x_farming:" .. def.name
|
||||
local desc = string.gsub(string.gsub(def.name, "(_)", " "), "(%a)([%w_']*)", x_farming.tchelper)
|
||||
local img = "x_farming_fish_" .. def.name .. ".png"
|
||||
|
||||
-- raw
|
||||
minetest.register_craftitem(name, {
|
||||
description = desc .. "\n" .. minetest.colorize(x_farming.colors.brown, "Hunger: " .. def.item_eat),
|
||||
tiles = {img},
|
||||
inventory_image = img,
|
||||
wield_image = img .. "^[transformFXR90",
|
||||
on_use = minetest.item_eat(def.item_eat),
|
||||
})
|
||||
|
||||
-- hbhunger
|
||||
if x_farming.hbhunger ~= nil then
|
||||
if hbhunger.register_food ~= nil then
|
||||
hbhunger.register_food(name, def.item_eat)
|
||||
end
|
||||
end
|
||||
|
||||
if def.item_eat_cooked ~= nil then
|
||||
-- cooked
|
||||
minetest.register_craftitem(name .. "_cooked", {
|
||||
description = "Cooked "..desc .. "\n" .. minetest.colorize(x_farming.colors.brown, "Hunger: " .. def.item_eat_cooked),
|
||||
tiles = {img},
|
||||
inventory_image = img .. "^[colorize:#3B2510:204",
|
||||
wield_image = img .. "^[transformFXR90^[colorize:#3B2510:204",
|
||||
on_use = minetest.item_eat(def.item_eat_cooked),
|
||||
})
|
||||
|
||||
minetest.register_craft( {
|
||||
type = "cooking",
|
||||
cooktime = 15,
|
||||
output = name .. "_cooked",
|
||||
recipe = name
|
||||
})
|
||||
|
||||
-- hbhunger
|
||||
if x_farming.hbhunger ~= nil then
|
||||
if hbhunger.register_food ~= nil then
|
||||
hbhunger.register_food(name .. "_cooked", def.item_eat_cooked)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- Ice fishing equipment
|
||||
|
||||
icefishing.register_equipment = function(name, def)
|
||||
local mname = name:split(":")[1]
|
||||
local pname = name:split(":")[2]
|
||||
|
||||
-- Register seed
|
||||
local lbm_nodes = {mname .. ":seed_" .. pname}
|
||||
|
||||
minetest.register_node(mname .. ":seed_" .. pname, {
|
||||
description = def.description,
|
||||
-- top, bottom, sides
|
||||
tiles = {
|
||||
"x_farming_icefishing_bottom.png",
|
||||
"x_farming_icefishing_bottom.png",
|
||||
"x_farming_icefishing_right.png",
|
||||
"x_farming_icefishing_left.png",
|
||||
"x_farming_icefishing_front_0.png",
|
||||
"x_farming_icefishing_back_0.png"
|
||||
},
|
||||
inventory_image = "x_farming_icefishing_inv.png",
|
||||
wield_image = "x_farming_icefishing_inv.png",
|
||||
drawtype = "nodebox",
|
||||
groups = {seed = 1, snappy = 3, plant = 1, attached_node = 1},
|
||||
paramtype = "light",
|
||||
walkable = false,
|
||||
sunlight_propagates = true,
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-0.5, -0.5, -0.5, 0.5, -0.375, 0.5},
|
||||
{-0.5, -0.375, 0, 0.5, 0.5, 0},
|
||||
{0, -0.375, -0.5, 0, -0.25, 0.5},
|
||||
}
|
||||
},
|
||||
collision_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-0.5, -0.5, -0.5, 0.5, -0.375, 0.5},
|
||||
},
|
||||
},
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-0.5, -0.5, -0.5, 0.5, -0.375, 0.5},
|
||||
},
|
||||
},
|
||||
fertility = {"ice_fishing"},
|
||||
drop = "",
|
||||
sounds = default.node_sound_dirt_defaults({
|
||||
dig = {name = "", gain = 0},
|
||||
dug = {name = "default_grass_footstep", gain = 0.2},
|
||||
place = {name = "default_place_node", gain = 0.25},
|
||||
}),
|
||||
next_plant = mname .. ":" .. pname .. "_1",
|
||||
on_timer = icefishing.grow_plant,
|
||||
minlight = 13,
|
||||
maxlight = 15,
|
||||
|
||||
on_place = function(itemstack, placer, pointed_thing)
|
||||
local under = pointed_thing.under
|
||||
local node = minetest.get_node(under)
|
||||
local udef = minetest.registered_nodes[node.name]
|
||||
if udef and udef.on_rightclick and
|
||||
not (placer and placer:is_player() and
|
||||
placer:get_player_control().sneak) then
|
||||
return udef.on_rightclick(under, node, placer, itemstack,
|
||||
pointed_thing) or itemstack
|
||||
end
|
||||
|
||||
return icefishing.place_seed(itemstack, placer, pointed_thing, "x_farming:seed_icefishing")
|
||||
end,
|
||||
|
||||
on_construct = icefishing.on_construct,
|
||||
|
||||
after_destruct = icefishing.after_destruct,
|
||||
})
|
||||
|
||||
-- Register growing steps
|
||||
for i = 1, def.steps do
|
||||
local next_plant = nil
|
||||
local last_step = i == def.steps
|
||||
|
||||
if i < def.steps then
|
||||
next_plant = mname .. ":" .. pname .. "_" .. (i + 1)
|
||||
lbm_nodes[#lbm_nodes + 1] = mname .. ":" .. pname .. "_" .. i
|
||||
end
|
||||
|
||||
local tiles = {
|
||||
{
|
||||
name = "x_farming_icefishing_top_animated.png",
|
||||
backface_culling = false,
|
||||
animation = {
|
||||
type = "vertical_frames",
|
||||
aspect_w = 16,
|
||||
aspect_h = 16,
|
||||
length = 2.0,
|
||||
},
|
||||
},
|
||||
{name = mname .. "_" .. pname .. "_bottom.png"},
|
||||
{name = mname .. "_" .. pname .. "_right.png"},
|
||||
{name = mname .. "_" .. pname .. "_left.png"},
|
||||
{name = mname .. "_" .. pname .. "_front_" .. i .. ".png"},
|
||||
{name = mname .. "_" .. pname .. "_back_" .. i .. ".png"},
|
||||
}
|
||||
|
||||
if last_step then
|
||||
tiles[1] = {
|
||||
name = "x_farming_icefishing_top_animated_9.png",
|
||||
backface_culling = false,
|
||||
animation = {
|
||||
type = "vertical_frames",
|
||||
aspect_w = 16,
|
||||
aspect_h = 16,
|
||||
length = 2.0,
|
||||
},
|
||||
}
|
||||
end
|
||||
|
||||
minetest.register_node(mname .. ":" .. pname .. "_" .. i, {
|
||||
drawtype = "nodebox",
|
||||
-- Textures of node; +Y, -Y, +X, -X, +Z, -Z
|
||||
-- Textures of node; top, bottom, right, left, front, back
|
||||
tiles = tiles,
|
||||
paramtype = "light",
|
||||
walkable = false,
|
||||
buildable_to = true,
|
||||
sunlight_propagates = true,
|
||||
on_rotate = screwdriver.disallow,
|
||||
drop = "",
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-0.5, -0.5, -0.5, 0.5, -0.375, 0.5},
|
||||
{-0.5, -0.375, 0, 0.5, 0.5, 0},
|
||||
{0, -0.375, -0.5, 0, -0.25, 0.5},
|
||||
}
|
||||
},
|
||||
collision_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-0.5, -0.5, -0.5, 0.5, -0.375, 0.5},
|
||||
},
|
||||
},
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-0.5, -0.5, -0.5, 0.5, -0.375, 0.5},
|
||||
},
|
||||
},
|
||||
groups = {snappy = 3, plant = 1, not_in_creative_inventory = 1, attached_node = 1},
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
next_plant = next_plant,
|
||||
on_timer = icefishing.grow_plant,
|
||||
minlight = 13,
|
||||
maxlight = 15,
|
||||
|
||||
after_destruct = icefishing.after_destruct,
|
||||
})
|
||||
end
|
||||
|
||||
-- replacement LBM for pre-nodetimer plants
|
||||
minetest.register_lbm({
|
||||
name = mname .. ":start_nodetimer_" .. pname,
|
||||
nodenames = lbm_nodes,
|
||||
action = function(pos, node)
|
||||
icefishing.tick_again(pos)
|
||||
end,
|
||||
})
|
||||
|
||||
-- Return
|
||||
local r = {
|
||||
seed = mname .. ":seed_" .. pname
|
||||
}
|
||||
return r
|
||||
end
|
||||
|
||||
icefishing.register_equipment("x_farming:icefishing", {
|
||||
description = "Ice Fishing (Place on drilled Ice)",
|
||||
steps = 9,
|
||||
})
|
||||
|
||||
-- nodes
|
||||
|
||||
minetest.register_node("x_farming:drilled_ice", {
|
||||
description = "Drilled Ice",
|
||||
tiles = {
|
||||
"x_farming_drilled_ice.png",
|
||||
"default_ice.png",
|
||||
"default_ice.png",
|
||||
"default_ice.png",
|
||||
"default_ice.png",
|
||||
"default_ice.png",
|
||||
},
|
||||
paramtype = "light",
|
||||
drop = "default:ice",
|
||||
groups = {cracky = 3, cools_lava = 1, slippery = 3, not_in_creative_inventory = 1, ice_fishing = 1},
|
||||
sounds = default.node_sound_ice_defaults(),
|
||||
})
|
||||
|
||||
-- tools
|
||||
|
||||
minetest.register_tool("x_farming:ice_auger", {
|
||||
description = "Ice Auger drills hole in ice for ice fishing.",
|
||||
inventory_image = "x_farming_ice_auger.png",
|
||||
wield_image = "x_farming_ice_auger.png^[transformR270",
|
||||
stack_max = 1,
|
||||
on_use = function(itemstack, user, pointed_thing)
|
||||
local pt = pointed_thing
|
||||
-- check if pointing at a node
|
||||
if not pt then
|
||||
return
|
||||
end
|
||||
if pt.type ~= "node" then
|
||||
return
|
||||
end
|
||||
|
||||
local uses = 500
|
||||
local under = minetest.get_node(pt.under)
|
||||
local p = {x=pt.under.x, y=pt.under.y+1, z=pt.under.z}
|
||||
local above = minetest.get_node(p)
|
||||
|
||||
-- return if any of the nodes is not registered
|
||||
if not minetest.registered_nodes[under.name] then
|
||||
return
|
||||
end
|
||||
if not minetest.registered_nodes[above.name] then
|
||||
return
|
||||
end
|
||||
|
||||
-- check if the node above the pointed thing is air
|
||||
if above.name ~= "air" then
|
||||
return
|
||||
end
|
||||
|
||||
-- check if pointing at soil
|
||||
if under.name ~= "default:ice" then
|
||||
return
|
||||
end
|
||||
|
||||
if minetest.is_protected(pt.under, user:get_player_name()) then
|
||||
minetest.record_protection_violation(pt.under, user:get_player_name())
|
||||
return
|
||||
end
|
||||
|
||||
if minetest.is_protected(pt.above, user:get_player_name()) then
|
||||
minetest.record_protection_violation(pt.above, user:get_player_name())
|
||||
return
|
||||
end
|
||||
|
||||
-- turn the node into soil and play sound
|
||||
minetest.set_node(pt.under, {name = "x_farming:drilled_ice"})
|
||||
minetest.sound_play("default_ice_dug", {
|
||||
pos = pt.under,
|
||||
gain = 0.5,
|
||||
}, true)
|
||||
|
||||
minetest.add_particlespawner({
|
||||
amount = 10,
|
||||
time = 0.5,
|
||||
minpos = {x = pt.above.x - 0.4, y = pt.above.y - 0.4, z = pt.above.z - 0.4},
|
||||
maxpos = {x = pt.above.x + 0.4, y = pt.above.y - 0.5, z = pt.above.z + 0.4},
|
||||
minvel = {x = 0, y = 1, z = 0},
|
||||
maxvel = {x = 0, y = 2, z = 0},
|
||||
minacc = {x = 0, y = -4, z = 0},
|
||||
maxacc = {x = 0, y = -8, z = 0},
|
||||
minexptime = 1,
|
||||
maxexptime = 1.5,
|
||||
node = {name = "default:snowblock"},
|
||||
collisiondetection = true,
|
||||
object_collision = true,
|
||||
})
|
||||
|
||||
if not (creative and creative.is_enabled_for and creative.is_enabled_for(user:get_player_name())) then
|
||||
-- wear tool
|
||||
local wdef = itemstack:get_definition()
|
||||
itemstack:add_wear(65535/(uses-1))
|
||||
-- tool break sound
|
||||
if itemstack:get_count() == 0 and wdef.sound and wdef.sound.breaks then
|
||||
minetest.sound_play(wdef.sound.breaks, {pos = pt.above,
|
||||
gain = 0.5}, true)
|
||||
end
|
||||
end
|
||||
return itemstack
|
||||
end,
|
||||
sound = {breaks = "default_tool_breaks"},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "x_farming:ice_auger",
|
||||
recipe = {
|
||||
{"group:stick", "default:coalblock", "group:stick"},
|
||||
{"", "default:steel_ingot", ""},
|
||||
{"", "default:steel_ingot", ""},
|
||||
}
|
||||
})
|
||||
|
||||
-- decorations
|
||||
|
||||
minetest.register_decoration({
|
||||
name = "x_farming:icefishing_9",
|
||||
deco_type = "schematic",
|
||||
place_on = {"default:ice", "default:snowblock", "default:snow", "default:dirt_with_snow"},
|
||||
sidelen = 16,
|
||||
noise_params = {
|
||||
offset = 0,
|
||||
scale = 0.0025,
|
||||
spread = {x = 100, y = 100, z = 100},
|
||||
seed = 2,
|
||||
octaves = 3,
|
||||
persist = 0.7
|
||||
},
|
||||
biomes = {"icesheet", "snowy_grassland", "icesheet_ocean"},
|
||||
y_max = 30,
|
||||
y_min = 1,
|
||||
schematic = minetest.get_modpath("x_farming") .. "/schematics/x_farming_icefishing.mts",
|
||||
flags = "force_placement",
|
||||
rotation = "random",
|
||||
})
|
9
init.lua
@ -22,20 +22,21 @@ dofile(path.."/pine_nut.lua")
|
||||
dofile(path.."/stevia.lua")
|
||||
dofile(path.."/soybean.lua")
|
||||
dofile(path.."/salt.lua")
|
||||
dofile(path.."/ice_fishing.lua")
|
||||
dofile(path.."/nodes.lua")
|
||||
dofile(path.."/crafting.lua")
|
||||
dofile(path.."/bonemeal.lua")
|
||||
|
||||
-- hbhunger
|
||||
if x_farming.hbhunger ~= nil then
|
||||
if hbhunger.register_food ~= nil then
|
||||
dofile(path.."/register_hbhunger.lua")
|
||||
end
|
||||
if hbhunger.register_food ~= nil then
|
||||
dofile(path.."/register_hbhunger.lua")
|
||||
end
|
||||
end
|
||||
|
||||
-- mob
|
||||
if minetest.get_modpath("mobs_npc") then
|
||||
dofile(path.."/snow_golem.lua")
|
||||
dofile(path.."/snow_golem.lua")
|
||||
end
|
||||
|
||||
local mod_end_time = (minetest.get_us_time() - mod_start_time) / 1000000
|
||||
|
4
mod.conf
@ -1,5 +1,5 @@
|
||||
name = x_farming
|
||||
description = Extends Minetest farming mod with new plants and crops.
|
||||
description = Extends Minetest farming mod with new plants, crops and ice fishing.
|
||||
depends = default, farming, bucket, vessels
|
||||
optional_depends = hbhunger, flowers, mobs_animal, mobs_npc, stairs
|
||||
optional_depends = hbhunger, flowers, mobs_animal, mobs_npc, stairs, wool, dye
|
||||
min_minetest_version = 5.0
|
4
salt.lua
@ -13,7 +13,7 @@ minetest.register_craftitem("x_farming:salt", {
|
||||
|
||||
minetest.register_node("x_farming:seed_salt", {
|
||||
description = "Salty Water (plant on wet soil)",
|
||||
tiles = {"x_farming_salt_water.png"},
|
||||
-- tiles = {"x_farming_salt_water.png"},
|
||||
inventory_image = "x_farming_salt_water.png",
|
||||
wield_image = "x_farming_salt_water.png",
|
||||
fertility = {"grassland"},
|
||||
@ -44,7 +44,7 @@ minetest.register_node("x_farming:seed_salt", {
|
||||
{-0.5, -0.5, -0.5, 0.5, -0.375, 0.5},
|
||||
},
|
||||
},
|
||||
groups = {snappy = 3, flammable = 2, plant = 1, attached_node = 1},
|
||||
groups = {seed = 1, snappy = 3, flammable = 2, plant = 1, attached_node = 1},
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
next_plant = "x_farming:salt_1",
|
||||
on_timer = farming.grow_plant,
|
||||
|
@ -449,3 +449,26 @@ mts_save("x_farming_salt_decor", {
|
||||
{name = "x_farming:salt_7", prob = 255},
|
||||
}
|
||||
})
|
||||
|
||||
-- Mapgen Ice Fishing
|
||||
|
||||
local L = {name = "default:ice", prob = 255}
|
||||
local M = {name = "x_farming:icefishing_9", prob = 255}
|
||||
local N = {name = "default:ice", prob = 127}
|
||||
|
||||
mts_save("x_farming_icefishing", {
|
||||
size = {x = 3, y = 3, z = 3},
|
||||
data = {
|
||||
N, N, N,
|
||||
_, _, _,
|
||||
_, _, _,
|
||||
|
||||
N, L, N,
|
||||
_, M, _,
|
||||
_, _, _,
|
||||
|
||||
N, N, N,
|
||||
_, _, _,
|
||||
_, _, _,
|
||||
}
|
||||
})
|
BIN
schematics/x_farming_icefishing.mts
Normal file
BIN
screenshot.1.png
Normal file
After Width: | Height: | Size: 440 KiB |
BIN
screenshot.2.png
Normal file
After Width: | Height: | Size: 1.0 MiB |
@ -13,15 +13,6 @@ mobs.npc_drops = {
|
||||
"farming:bread",
|
||||
"farming:hoe_steel",
|
||||
"bucket:bucket_water",
|
||||
"mobs:meat",
|
||||
"mobs:beehive",
|
||||
"mobs:egg",
|
||||
"mobs:chicken_cooked",
|
||||
"mobs:bucket_milk",
|
||||
"mobs:cheese",
|
||||
"mobs:pork_cooked",
|
||||
"mobs_npc:pumpkin_block",
|
||||
"mobs_npc:melon_fruit",
|
||||
"screwdriver:screwdriver",
|
||||
"default:diamond",
|
||||
"default:gold_lump",
|
||||
@ -69,7 +60,7 @@ local snow_golem_def = {
|
||||
{name = "default:snow", chance = 1, min = 0, max = 15},
|
||||
{name = "mobs_npc:seed_pumpkin", chance = 5, min = 1, max = 3}
|
||||
},
|
||||
follow = {"farming:bread", "mobs:meat", "default:diamond"},
|
||||
follow = {"farming:bread", "default:diamond"},
|
||||
water_damage = 6,
|
||||
lava_damage = 10,
|
||||
light_damage = 0,
|
||||
|
Before Width: | Height: | Size: 218 B After Width: | Height: | Size: 215 B |
Before Width: | Height: | Size: 343 B After Width: | Height: | Size: 342 B |
BIN
textures/x_farming_drilled_ice.png
Normal file
After Width: | Height: | Size: 292 B |
BIN
textures/x_farming_fish_albacore.png
Normal file
After Width: | Height: | Size: 189 B |
BIN
textures/x_farming_fish_anchovy.png
Normal file
After Width: | Height: | Size: 177 B |
BIN
textures/x_farming_fish_angelfish.png
Normal file
After Width: | Height: | Size: 230 B |
BIN
textures/x_farming_fish_angler.png
Normal file
After Width: | Height: | Size: 201 B |
BIN
textures/x_farming_fish_armored_catfish.png
Normal file
After Width: | Height: | Size: 196 B |
BIN
textures/x_farming_fish_arrow_squid.png
Normal file
After Width: | Height: | Size: 186 B |
BIN
textures/x_farming_fish_barracuda.png
Normal file
After Width: | Height: | Size: 181 B |
BIN
textures/x_farming_fish_black_seashroom.png
Normal file
After Width: | Height: | Size: 200 B |
BIN
textures/x_farming_fish_blobfish.png
Normal file
After Width: | Height: | Size: 171 B |
BIN
textures/x_farming_fish_blue_seashroom.png
Normal file
After Width: | Height: | Size: 207 B |
BIN
textures/x_farming_fish_bream.png
Normal file
After Width: | Height: | Size: 205 B |
BIN
textures/x_farming_fish_brown_seashroom.png
Normal file
After Width: | Height: | Size: 193 B |
BIN
textures/x_farming_fish_burbot.png
Normal file
After Width: | Height: | Size: 195 B |
BIN
textures/x_farming_fish_carp.png
Normal file
After Width: | Height: | Size: 192 B |
BIN
textures/x_farming_fish_catfish.png
Normal file
After Width: | Height: | Size: 200 B |
BIN
textures/x_farming_fish_catla.png
Normal file
After Width: | Height: | Size: 187 B |
BIN
textures/x_farming_fish_chorus_snail.png
Normal file
After Width: | Height: | Size: 174 B |
BIN
textures/x_farming_fish_chub.png
Normal file
After Width: | Height: | Size: 188 B |
BIN
textures/x_farming_fish_clam.png
Normal file
After Width: | Height: | Size: 192 B |
BIN
textures/x_farming_fish_cold_ocean_hermit_crab.png
Normal file
After Width: | Height: | Size: 214 B |
BIN
textures/x_farming_fish_conger.png
Normal file
After Width: | Height: | Size: 190 B |
BIN
textures/x_farming_fish_congo_tiger_fish.png
Normal file
After Width: | Height: | Size: 210 B |
BIN
textures/x_farming_fish_convict_cichlid.png
Normal file
After Width: | Height: | Size: 219 B |
BIN
textures/x_farming_fish_crab.png
Normal file
After Width: | Height: | Size: 198 B |
BIN
textures/x_farming_fish_crayfish.png
Normal file
After Width: | Height: | Size: 184 B |
BIN
textures/x_farming_fish_cyan_seashroom.png
Normal file
After Width: | Height: | Size: 207 B |
BIN
textures/x_farming_fish_damselfish.png
Normal file
After Width: | Height: | Size: 184 B |
BIN
textures/x_farming_fish_danios.png
Normal file
After Width: | Height: | Size: 193 B |
BIN
textures/x_farming_fish_desert_frog.png
Normal file
After Width: | Height: | Size: 211 B |
BIN
textures/x_farming_fish_desert_sunfish.png
Normal file
After Width: | Height: | Size: 189 B |
BIN
textures/x_farming_fish_diamond_angler.png
Normal file
After Width: | Height: | Size: 206 B |
BIN
textures/x_farming_fish_dwarf_caiman.png
Normal file
After Width: | Height: | Size: 190 B |
BIN
textures/x_farming_fish_eel.png
Normal file
After Width: | Height: | Size: 186 B |
BIN
textures/x_farming_fish_electric_eel.png
Normal file
After Width: | Height: | Size: 176 B |
BIN
textures/x_farming_fish_endray.png
Normal file
After Width: | Height: | Size: 183 B |
BIN
textures/x_farming_fish_father_sun.png
Normal file
After Width: | Height: | Size: 205 B |
BIN
textures/x_farming_fish_flier.png
Normal file
After Width: | Height: | Size: 215 B |
BIN
textures/x_farming_fish_floral_faefish.png
Normal file
After Width: | Height: | Size: 207 B |
BIN
textures/x_farming_fish_flounder.png
Normal file
After Width: | Height: | Size: 201 B |
BIN
textures/x_farming_fish_fourhorn_sculpin.png
Normal file
After Width: | Height: | Size: 193 B |
BIN
textures/x_farming_fish_frozen_boneminnow.png
Normal file
After Width: | Height: | Size: 237 B |
BIN
textures/x_farming_fish_frozen_ocean_hermit_crab.png
Normal file
After Width: | Height: | Size: 196 B |
BIN
textures/x_farming_fish_gar.png
Normal file
After Width: | Height: | Size: 177 B |
BIN
textures/x_farming_fish_giant_moray.png
Normal file
After Width: | Height: | Size: 187 B |
BIN
textures/x_farming_fish_goldeye.png
Normal file
After Width: | Height: | Size: 232 B |
BIN
textures/x_farming_fish_goldfish.png
Normal file
After Width: | Height: | Size: 187 B |
BIN
textures/x_farming_fish_grass_pickerel.png
Normal file
After Width: | Height: | Size: 202 B |
BIN
textures/x_farming_fish_gray_seashroom.png
Normal file
After Width: | Height: | Size: 207 B |
BIN
textures/x_farming_fish_green_seashroom.png
Normal file
After Width: | Height: | Size: 193 B |
BIN
textures/x_farming_fish_guppy.png
Normal file
After Width: | Height: | Size: 205 B |
BIN
textures/x_farming_fish_hagfish.png
Normal file
After Width: | Height: | Size: 179 B |
BIN
textures/x_farming_fish_halibut.png
Normal file
After Width: | Height: | Size: 196 B |
BIN
textures/x_farming_fish_herring.png
Normal file
After Width: | Height: | Size: 185 B |
BIN
textures/x_farming_fish_illager_ghostfish.png
Normal file
After Width: | Height: | Size: 244 B |
BIN
textures/x_farming_fish_ironfish.png
Normal file
After Width: | Height: | Size: 176 B |
BIN
textures/x_farming_fish_jungle_frog.png
Normal file
After Width: | Height: | Size: 216 B |
BIN
textures/x_farming_fish_koi.png
Normal file
After Width: | Height: | Size: 196 B |
BIN
textures/x_farming_fish_lamprey.png
Normal file
After Width: | Height: | Size: 194 B |
BIN
textures/x_farming_fish_largemouth_bass.png
Normal file
After Width: | Height: | Size: 193 B |
BIN
textures/x_farming_fish_lava_eel.png
Normal file
After Width: | Height: | Size: 191 B |
BIN
textures/x_farming_fish_leech.png
Normal file
After Width: | Height: | Size: 173 B |
BIN
textures/x_farming_fish_leerfish.png
Normal file
After Width: | Height: | Size: 209 B |
BIN
textures/x_farming_fish_light_gray_seashroom.png
Normal file
After Width: | Height: | Size: 200 B |
BIN
textures/x_farming_fish_lime_seashroom.png
Normal file
After Width: | Height: | Size: 200 B |
BIN
textures/x_farming_fish_lingcod.png
Normal file
After Width: | Height: | Size: 177 B |
BIN
textures/x_farming_fish_lobster.png
Normal file
After Width: | Height: | Size: 184 B |
BIN
textures/x_farming_fish_lukewarm_ocean_hermit_crab.png
Normal file
After Width: | Height: | Size: 226 B |
BIN
textures/x_farming_fish_magenta_seashroom.png
Normal file
After Width: | Height: | Size: 200 B |
BIN
textures/x_farming_fish_magma_slimefish.png
Normal file
After Width: | Height: | Size: 170 B |
BIN
textures/x_farming_fish_manta_ray.png
Normal file
After Width: | Height: | Size: 211 B |
BIN
textures/x_farming_fish_minnow.png
Normal file
After Width: | Height: | Size: 191 B |
BIN
textures/x_farming_fish_mother_moon.png
Normal file
After Width: | Height: | Size: 205 B |
BIN
textures/x_farming_fish_mud_flounder.png
Normal file
After Width: | Height: | Size: 193 B |
BIN
textures/x_farming_fish_neon_tetra.png
Normal file
After Width: | Height: | Size: 209 B |
BIN
textures/x_farming_fish_obster.png
Normal file
After Width: | Height: | Size: 179 B |
BIN
textures/x_farming_fish_ocean_hermit_crab.png
Normal file
After Width: | Height: | Size: 222 B |
BIN
textures/x_farming_fish_octopus.png
Normal file
After Width: | Height: | Size: 193 B |
BIN
textures/x_farming_fish_orange_seashroom.png
Normal file
After Width: | Height: | Size: 200 B |
BIN
textures/x_farming_fish_oscar.png
Normal file
After Width: | Height: | Size: 205 B |
BIN
textures/x_farming_fish_paddlefish.png
Normal file
After Width: | Height: | Size: 193 B |
BIN
textures/x_farming_fish_pearl_isopod.png
Normal file
After Width: | Height: | Size: 165 B |
BIN
textures/x_farming_fish_pearlwog.png
Normal file
After Width: | Height: | Size: 173 B |
BIN
textures/x_farming_fish_perch.png
Normal file
After Width: | Height: | Size: 195 B |