Add Ice Fishing

master
Juraj Vajda 2021-04-01 14:09:45 -04:00
parent 7ad2dab717
commit fb20b681aa
185 changed files with 1458 additions and 23 deletions

View File

@ -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
View File

@ -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
View File

@ -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)

View File

@ -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"}
}

View File

@ -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
View 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",
})

View File

@ -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

View File

@ -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

View File

@ -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,

View File

@ -448,4 +448,27 @@ mts_save("x_farming_salt_decor", {
{name = "default:dirt", prob = 255, force_place = true},
{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,
_, _, _,
_, _, _,
}
})

Binary file not shown.

BIN
screenshot.1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 440 KiB

BIN
screenshot.2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

View File

@ -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,

Binary file not shown.

Before

Width:  |  Height:  |  Size: 218 B

After

Width:  |  Height:  |  Size: 215 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 343 B

After

Width:  |  Height:  |  Size: 342 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 292 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 189 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 177 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 230 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 201 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 196 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 186 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 181 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 200 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 171 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 207 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 205 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 193 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 195 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 192 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 200 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 187 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 174 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 188 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 192 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 214 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 190 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 210 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 219 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 198 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 207 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 193 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 211 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 189 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 206 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 190 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 186 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 176 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 183 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 205 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 215 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 207 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 201 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 193 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 237 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 196 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 177 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 187 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 232 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 187 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 202 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 207 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 193 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 205 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 179 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 196 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 185 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 244 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 176 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 216 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 196 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 194 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 193 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 191 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 173 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 209 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 200 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 200 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 177 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 226 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 200 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 170 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 211 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 191 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 205 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 193 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 209 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 179 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 222 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 193 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 200 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 205 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 193 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 165 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 173 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 195 B

Some files were not shown because too many files have changed in this diff Show More