From 980347343a14b88bd86afc1666114aece809a8b7 Mon Sep 17 00:00:00 2001 From: tchncs <tchncs@vivaldi.net> Date: Sat, 16 Jul 2016 14:12:57 +0200 Subject: [PATCH] merge upstream commit: Doors: Remove unnecessary node lookups --- mods/boats/README.txt | 20 + mods/boats/depends.txt | 2 + mods/boats/models/boat.obj | 358 ++++++++ mods/boats/models/rowboat.x | 760 +++++++++++++++++ mods/boats/textures/boats_inventory.png | Bin 0 -> 851 bytes mods/boats/textures/boats_wield.png | Bin 0 -> 546 bytes mods/boats/textures/rowboat_inventory.png | Bin 0 -> 444 bytes mods/boats/textures/rowboat_wield.png | Bin 0 -> 366 bytes mods/farming/README.txt | 150 ++++ mods/farming/banana.lua | 70 ++ mods/farming/barley.lua | 96 +++ mods/farming/beanpole.lua | 194 +++++ mods/farming/blueberry.lua | 65 ++ mods/farming/carrot.lua | 103 +++ mods/farming/cocoa.lua | 172 ++++ mods/farming/coffee.lua | 130 +++ mods/farming/compatibility.lua | 78 ++ mods/farming/corn.lua | 114 +++ mods/farming/cotton.lua | 114 +++ mods/farming/cucumber.lua | 53 ++ mods/farming/depends.txt | 2 + mods/farming/description.txt | 1 + mods/farming/donut.lua | 45 + mods/farming/grapes.lua | 201 +++++ mods/farming/grass.lua | 42 + mods/farming/hoes.lua | 151 ++++ mods/farming/init.lua | 797 ++++++++++++++++++ mods/farming/init.lua_orig | 192 +++++ mods/farming/license.txt | 14 + mods/farming/mapgen.lua | 65 ++ mods/farming/melon.lua | 80 ++ mods/farming/mod.conf | 1 + mods/farming/oranges.lua | 58 ++ mods/farming/potato.lua | 85 ++ mods/farming/pumpkin.lua | 346 ++++++++ mods/farming/raspberry.lua | 74 ++ mods/farming/rhubarb.lua | 70 ++ mods/farming/screenshot.png | Bin 0 -> 42499 bytes mods/farming/soil.lua | 64 ++ mods/farming/statistics.lua | 174 ++++ mods/farming/strawberry.lua | 133 +++ mods/farming/sugar.lua | 14 + .../farming/textures/farming_baked_potato.png | Bin 0 -> 321 bytes mods/farming/textures/farming_banana.png | Bin 0 -> 515 bytes .../textures/farming_banana_leaves.png | Bin 0 -> 621 bytes .../textures/farming_banana_sapling.png | Bin 0 -> 647 bytes mods/farming/textures/farming_barley.png | Bin 0 -> 230 bytes mods/farming/textures/farming_barley_1.png | Bin 0 -> 140 bytes mods/farming/textures/farming_barley_2.png | Bin 0 -> 151 bytes mods/farming/textures/farming_barley_3.png | Bin 0 -> 209 bytes mods/farming/textures/farming_barley_4.png | Bin 0 -> 229 bytes mods/farming/textures/farming_barley_5.png | Bin 0 -> 246 bytes mods/farming/textures/farming_barley_6.png | Bin 0 -> 271 bytes mods/farming/textures/farming_barley_7.png | Bin 0 -> 277 bytes mods/farming/textures/farming_barley_seed.png | Bin 0 -> 145 bytes mods/farming/textures/farming_beanbush.png | Bin 0 -> 227 bytes mods/farming/textures/farming_beanpole.png | Bin 0 -> 323 bytes mods/farming/textures/farming_beanpole_1.png | Bin 0 -> 242 bytes mods/farming/textures/farming_beanpole_2.png | Bin 0 -> 264 bytes mods/farming/textures/farming_beanpole_3.png | Bin 0 -> 297 bytes mods/farming/textures/farming_beanpole_4.png | Bin 0 -> 355 bytes mods/farming/textures/farming_beanpole_5.png | Bin 0 -> 353 bytes mods/farming/textures/farming_beans.png | Bin 0 -> 193 bytes mods/farming/textures/farming_blueberries.png | Bin 0 -> 164 bytes mods/farming/textures/farming_blueberry_1.png | Bin 0 -> 114 bytes mods/farming/textures/farming_blueberry_2.png | Bin 0 -> 223 bytes mods/farming/textures/farming_blueberry_3.png | Bin 0 -> 231 bytes mods/farming/textures/farming_blueberry_4.png | Bin 0 -> 317 bytes .../textures/farming_blueberry_muffin.png | Bin 0 -> 236 bytes .../textures/farming_bottle_ethanol.png | Bin 0 -> 221 bytes mods/farming/textures/farming_bread.png | Bin 0 -> 552 bytes mods/farming/textures/farming_carrot.png | Bin 0 -> 220 bytes mods/farming/textures/farming_carrot_1.png | Bin 0 -> 108 bytes mods/farming/textures/farming_carrot_2.png | Bin 0 -> 111 bytes mods/farming/textures/farming_carrot_3.png | Bin 0 -> 113 bytes mods/farming/textures/farming_carrot_4.png | Bin 0 -> 119 bytes mods/farming/textures/farming_carrot_5.png | Bin 0 -> 123 bytes mods/farming/textures/farming_carrot_6.png | Bin 0 -> 129 bytes mods/farming/textures/farming_carrot_7.png | Bin 0 -> 144 bytes mods/farming/textures/farming_carrot_8.png | Bin 0 -> 160 bytes mods/farming/textures/farming_carrot_gold.png | Bin 0 -> 207 bytes .../textures/farming_chocolate_dark.png | Bin 0 -> 194 bytes mods/farming/textures/farming_cocoa_1.png | Bin 0 -> 230 bytes mods/farming/textures/farming_cocoa_2.png | Bin 0 -> 244 bytes mods/farming/textures/farming_cocoa_3.png | Bin 0 -> 253 bytes mods/farming/textures/farming_cocoa_beans.png | Bin 0 -> 187 bytes mods/farming/textures/farming_coffee_1.png | Bin 0 -> 135 bytes mods/farming/textures/farming_coffee_2.png | Bin 0 -> 145 bytes mods/farming/textures/farming_coffee_3.png | Bin 0 -> 171 bytes mods/farming/textures/farming_coffee_4.png | Bin 0 -> 192 bytes mods/farming/textures/farming_coffee_5.png | Bin 0 -> 192 bytes .../farming/textures/farming_coffee_beans.png | Bin 0 -> 204 bytes mods/farming/textures/farming_coffee_cup.png | Bin 0 -> 164 bytes .../textures/farming_coffee_cup_hot.png | Bin 0 -> 183 bytes mods/farming/textures/farming_cookie.png | Bin 0 -> 566 bytes mods/farming/textures/farming_corn.png | Bin 0 -> 197 bytes mods/farming/textures/farming_corn_1.png | Bin 0 -> 107 bytes mods/farming/textures/farming_corn_2.png | Bin 0 -> 121 bytes mods/farming/textures/farming_corn_3.png | Bin 0 -> 142 bytes mods/farming/textures/farming_corn_4.png | Bin 0 -> 154 bytes mods/farming/textures/farming_corn_5.png | Bin 0 -> 161 bytes mods/farming/textures/farming_corn_6.png | Bin 0 -> 268 bytes mods/farming/textures/farming_corn_7.png | Bin 0 -> 275 bytes mods/farming/textures/farming_corn_8.png | Bin 0 -> 311 bytes mods/farming/textures/farming_corn_cob.png | Bin 0 -> 182 bytes mods/farming/textures/farming_cotton.png | Bin 0 -> 166 bytes mods/farming/textures/farming_cotton_1.png | Bin 0 -> 110 bytes mods/farming/textures/farming_cotton_2.png | Bin 0 -> 120 bytes mods/farming/textures/farming_cotton_3.png | Bin 0 -> 144 bytes mods/farming/textures/farming_cotton_4.png | Bin 0 -> 150 bytes mods/farming/textures/farming_cotton_5.png | Bin 0 -> 159 bytes mods/farming/textures/farming_cotton_6.png | Bin 0 -> 164 bytes mods/farming/textures/farming_cotton_7.png | Bin 0 -> 170 bytes mods/farming/textures/farming_cotton_8.png | Bin 0 -> 196 bytes mods/farming/textures/farming_cotton_seed.png | Bin 0 -> 150 bytes mods/farming/textures/farming_cucumber.png | Bin 0 -> 185 bytes mods/farming/textures/farming_cucumber_1.png | Bin 0 -> 119 bytes mods/farming/textures/farming_cucumber_2.png | Bin 0 -> 145 bytes mods/farming/textures/farming_cucumber_3.png | Bin 0 -> 217 bytes mods/farming/textures/farming_cucumber_4.png | Bin 0 -> 275 bytes .../textures/farming_desert_sand_soil.png | Bin 0 -> 637 bytes .../textures/farming_desert_sand_soil_wet.png | Bin 0 -> 590 bytes .../farming_desert_sand_soil_wet_side.png | Bin 0 -> 601 bytes mods/farming/textures/farming_donut.png | Bin 0 -> 258 bytes mods/farming/textures/farming_donut_apple.png | Bin 0 -> 252 bytes .../textures/farming_donut_chocolate.png | Bin 0 -> 256 bytes mods/farming/textures/farming_flour.png | Bin 0 -> 159 bytes mods/farming/textures/farming_grapebush.png | Bin 0 -> 144 bytes mods/farming/textures/farming_grapes.png | Bin 0 -> 175 bytes mods/farming/textures/farming_grapes_1.png | Bin 0 -> 255 bytes mods/farming/textures/farming_grapes_2.png | Bin 0 -> 290 bytes mods/farming/textures/farming_grapes_3.png | Bin 0 -> 307 bytes mods/farming/textures/farming_grapes_4.png | Bin 0 -> 330 bytes mods/farming/textures/farming_grapes_5.png | Bin 0 -> 338 bytes mods/farming/textures/farming_grapes_6.png | Bin 0 -> 347 bytes mods/farming/textures/farming_grapes_7.png | Bin 0 -> 358 bytes mods/farming/textures/farming_grapes_8.png | Bin 0 -> 350 bytes mods/farming/textures/farming_melon_1.png | Bin 0 -> 138 bytes mods/farming/textures/farming_melon_2.png | Bin 0 -> 161 bytes mods/farming/textures/farming_melon_3.png | Bin 0 -> 177 bytes mods/farming/textures/farming_melon_4.png | Bin 0 -> 181 bytes mods/farming/textures/farming_melon_5.png | Bin 0 -> 196 bytes mods/farming/textures/farming_melon_6.png | Bin 0 -> 219 bytes mods/farming/textures/farming_melon_7.png | Bin 0 -> 247 bytes mods/farming/textures/farming_melon_side.png | Bin 0 -> 270 bytes mods/farming/textures/farming_melon_slice.png | Bin 0 -> 227 bytes mods/farming/textures/farming_melon_top.png | Bin 0 -> 272 bytes mods/farming/textures/farming_orange.png | Bin 0 -> 544 bytes mods/farming/textures/farming_orange_1.png | Bin 0 -> 108 bytes mods/farming/textures/farming_orange_2.png | Bin 0 -> 193 bytes mods/farming/textures/farming_orange_3.png | Bin 0 -> 451 bytes mods/farming/textures/farming_orange_4.png | Bin 0 -> 460 bytes mods/farming/textures/farming_orange_seed.png | Bin 0 -> 281 bytes mods/farming/textures/farming_potato.png | Bin 0 -> 252 bytes mods/farming/textures/farming_potato_1.png | Bin 0 -> 132 bytes mods/farming/textures/farming_potato_2.png | Bin 0 -> 187 bytes mods/farming/textures/farming_potato_3.png | Bin 0 -> 237 bytes mods/farming/textures/farming_potato_4.png | Bin 0 -> 283 bytes mods/farming/textures/farming_potato_seed.png | Bin 0 -> 221 bytes mods/farming/textures/farming_pumpkin_1.png | Bin 0 -> 159 bytes mods/farming/textures/farming_pumpkin_2.png | Bin 0 -> 182 bytes mods/farming/textures/farming_pumpkin_3.png | Bin 0 -> 199 bytes mods/farming/textures/farming_pumpkin_4.png | Bin 0 -> 230 bytes mods/farming/textures/farming_pumpkin_5.png | Bin 0 -> 259 bytes mods/farming/textures/farming_pumpkin_6.png | Bin 0 -> 263 bytes mods/farming/textures/farming_pumpkin_7.png | Bin 0 -> 271 bytes mods/farming/textures/farming_pumpkin_8.png | Bin 0 -> 275 bytes .../textures/farming_pumpkin_bread.png | Bin 0 -> 200 bytes .../textures/farming_pumpkin_dough.png | Bin 0 -> 193 bytes .../textures/farming_pumpkin_face_off.png | Bin 0 -> 259 bytes .../textures/farming_pumpkin_face_on.png | Bin 0 -> 269 bytes .../farming/textures/farming_pumpkin_seed.png | Bin 0 -> 312 bytes .../farming/textures/farming_pumpkin_side.png | Bin 0 -> 231 bytes .../textures/farming_pumpkin_slice.png | Bin 0 -> 204 bytes mods/farming/textures/farming_pumpkin_top.png | Bin 0 -> 272 bytes mods/farming/textures/farming_raspberries.png | Bin 0 -> 230 bytes mods/farming/textures/farming_raspberry_1.png | Bin 0 -> 100 bytes mods/farming/textures/farming_raspberry_2.png | Bin 0 -> 223 bytes mods/farming/textures/farming_raspberry_3.png | Bin 0 -> 231 bytes mods/farming/textures/farming_raspberry_4.png | Bin 0 -> 239 bytes .../textures/farming_raspberry_seed.png | Bin 0 -> 212 bytes .../textures/farming_raspberry_smoothie.png | Bin 0 -> 231 bytes mods/farming/textures/farming_rhubarb.png | Bin 0 -> 165 bytes mods/farming/textures/farming_rhubarb_1.png | Bin 0 -> 119 bytes mods/farming/textures/farming_rhubarb_2.png | Bin 0 -> 152 bytes mods/farming/textures/farming_rhubarb_3.png | Bin 0 -> 167 bytes mods/farming/textures/farming_rhubarb_pie.png | Bin 0 -> 198 bytes .../farming/textures/farming_rhubarb_seed.png | Bin 0 -> 219 bytes .../textures/farming_scarecrow_front.png | Bin 0 -> 634 bytes .../farming_scarecrow_front_light.png | Bin 0 -> 641 bytes .../textures/farming_scarecrow_side.png | Bin 0 -> 613 bytes .../textures/farming_scarecrow_top.png | Bin 0 -> 639 bytes mods/farming/textures/farming_soil.png | Bin 0 -> 706 bytes mods/farming/textures/farming_soil_wet.png | Bin 0 -> 677 bytes .../textures/farming_soil_wet_side.png | Bin 0 -> 96 bytes mods/farming/textures/farming_straw.png | Bin 0 -> 892 bytes mods/farming/textures/farming_strawberry.png | Bin 0 -> 382 bytes .../farming/textures/farming_strawberry_1.png | Bin 0 -> 116 bytes .../farming/textures/farming_strawberry_2.png | Bin 0 -> 137 bytes .../farming/textures/farming_strawberry_3.png | Bin 0 -> 157 bytes .../farming/textures/farming_strawberry_4.png | Bin 0 -> 209 bytes .../farming/textures/farming_strawberry_5.png | Bin 0 -> 234 bytes .../farming/textures/farming_strawberry_6.png | Bin 0 -> 240 bytes .../farming/textures/farming_strawberry_7.png | Bin 0 -> 258 bytes .../farming/textures/farming_strawberry_8.png | Bin 0 -> 258 bytes mods/farming/textures/farming_sugar.png | Bin 0 -> 142 bytes mods/farming/textures/farming_tomato.png | Bin 0 -> 488 bytes mods/farming/textures/farming_tomato_1.png | Bin 0 -> 207 bytes mods/farming/textures/farming_tomato_2.png | Bin 0 -> 223 bytes mods/farming/textures/farming_tomato_3.png | Bin 0 -> 250 bytes mods/farming/textures/farming_tomato_4.png | Bin 0 -> 269 bytes mods/farming/textures/farming_tomato_5.png | Bin 0 -> 320 bytes mods/farming/textures/farming_tomato_6.png | Bin 0 -> 490 bytes mods/farming/textures/farming_tomato_7.png | Bin 0 -> 570 bytes mods/farming/textures/farming_tomato_8.png | Bin 0 -> 510 bytes mods/farming/textures/farming_tomato_seed.png | Bin 0 -> 221 bytes .../textures/farming_tool_bronzehoe.png | Bin 0 -> 258 bytes .../textures/farming_tool_diamondhoe.png | Bin 0 -> 244 bytes .../farming/textures/farming_tool_mesehoe.png | Bin 0 -> 230 bytes .../textures/farming_tool_steelhoe.png | Bin 0 -> 230 bytes .../textures/farming_tool_stonehoe.png | Bin 0 -> 263 bytes .../farming/textures/farming_tool_woodhoe.png | Bin 0 -> 222 bytes mods/farming/textures/farming_trellis.png | Bin 0 -> 227 bytes mods/farming/textures/farming_wheat.png | Bin 0 -> 241 bytes mods/farming/textures/farming_wheat_1.png | Bin 0 -> 120 bytes mods/farming/textures/farming_wheat_2.png | Bin 0 -> 142 bytes mods/farming/textures/farming_wheat_3.png | Bin 0 -> 172 bytes mods/farming/textures/farming_wheat_4.png | Bin 0 -> 191 bytes mods/farming/textures/farming_wheat_5.png | Bin 0 -> 218 bytes mods/farming/textures/farming_wheat_6.png | Bin 0 -> 234 bytes mods/farming/textures/farming_wheat_7.png | Bin 0 -> 253 bytes mods/farming/textures/farming_wheat_8.png | Bin 0 -> 310 bytes mods/farming/textures/farming_wheat_seed.png | Bin 0 -> 141 bytes .../farming/textures/vessels_drinking_cup.png | Bin 0 -> 200 bytes mods/farming/todo.md | 12 + mods/farming/tomato.lua | 86 ++ mods/farming/wheat.lua | 152 ++++ 237 files changed, 5338 insertions(+) create mode 100644 mods/boats/README.txt create mode 100644 mods/boats/depends.txt create mode 100644 mods/boats/models/boat.obj create mode 100644 mods/boats/models/rowboat.x create mode 100644 mods/boats/textures/boats_inventory.png create mode 100644 mods/boats/textures/boats_wield.png create mode 100644 mods/boats/textures/rowboat_inventory.png create mode 100644 mods/boats/textures/rowboat_wield.png create mode 100644 mods/farming/README.txt create mode 100644 mods/farming/banana.lua create mode 100644 mods/farming/barley.lua create mode 100644 mods/farming/beanpole.lua create mode 100644 mods/farming/blueberry.lua create mode 100644 mods/farming/carrot.lua create mode 100644 mods/farming/cocoa.lua create mode 100644 mods/farming/coffee.lua create mode 100644 mods/farming/compatibility.lua create mode 100644 mods/farming/corn.lua create mode 100644 mods/farming/cotton.lua create mode 100644 mods/farming/cucumber.lua create mode 100644 mods/farming/depends.txt create mode 100644 mods/farming/description.txt create mode 100644 mods/farming/donut.lua create mode 100644 mods/farming/grapes.lua create mode 100644 mods/farming/grass.lua create mode 100644 mods/farming/hoes.lua create mode 100644 mods/farming/init.lua create mode 100644 mods/farming/init.lua_orig create mode 100644 mods/farming/license.txt create mode 100644 mods/farming/mapgen.lua create mode 100644 mods/farming/melon.lua create mode 100644 mods/farming/mod.conf create mode 100644 mods/farming/oranges.lua create mode 100644 mods/farming/potato.lua create mode 100644 mods/farming/pumpkin.lua create mode 100644 mods/farming/raspberry.lua create mode 100644 mods/farming/rhubarb.lua create mode 100644 mods/farming/screenshot.png create mode 100644 mods/farming/soil.lua create mode 100644 mods/farming/statistics.lua create mode 100644 mods/farming/strawberry.lua create mode 100644 mods/farming/sugar.lua create mode 100644 mods/farming/textures/farming_baked_potato.png create mode 100644 mods/farming/textures/farming_banana.png create mode 100644 mods/farming/textures/farming_banana_leaves.png create mode 100644 mods/farming/textures/farming_banana_sapling.png create mode 100644 mods/farming/textures/farming_barley.png create mode 100644 mods/farming/textures/farming_barley_1.png create mode 100644 mods/farming/textures/farming_barley_2.png create mode 100644 mods/farming/textures/farming_barley_3.png create mode 100644 mods/farming/textures/farming_barley_4.png create mode 100644 mods/farming/textures/farming_barley_5.png create mode 100644 mods/farming/textures/farming_barley_6.png create mode 100644 mods/farming/textures/farming_barley_7.png create mode 100644 mods/farming/textures/farming_barley_seed.png create mode 100644 mods/farming/textures/farming_beanbush.png create mode 100644 mods/farming/textures/farming_beanpole.png create mode 100644 mods/farming/textures/farming_beanpole_1.png create mode 100644 mods/farming/textures/farming_beanpole_2.png create mode 100644 mods/farming/textures/farming_beanpole_3.png create mode 100644 mods/farming/textures/farming_beanpole_4.png create mode 100644 mods/farming/textures/farming_beanpole_5.png create mode 100644 mods/farming/textures/farming_beans.png create mode 100644 mods/farming/textures/farming_blueberries.png create mode 100644 mods/farming/textures/farming_blueberry_1.png create mode 100644 mods/farming/textures/farming_blueberry_2.png create mode 100644 mods/farming/textures/farming_blueberry_3.png create mode 100644 mods/farming/textures/farming_blueberry_4.png create mode 100644 mods/farming/textures/farming_blueberry_muffin.png create mode 100644 mods/farming/textures/farming_bottle_ethanol.png create mode 100644 mods/farming/textures/farming_bread.png create mode 100644 mods/farming/textures/farming_carrot.png create mode 100644 mods/farming/textures/farming_carrot_1.png create mode 100644 mods/farming/textures/farming_carrot_2.png create mode 100644 mods/farming/textures/farming_carrot_3.png create mode 100644 mods/farming/textures/farming_carrot_4.png create mode 100644 mods/farming/textures/farming_carrot_5.png create mode 100644 mods/farming/textures/farming_carrot_6.png create mode 100644 mods/farming/textures/farming_carrot_7.png create mode 100644 mods/farming/textures/farming_carrot_8.png create mode 100644 mods/farming/textures/farming_carrot_gold.png create mode 100644 mods/farming/textures/farming_chocolate_dark.png create mode 100644 mods/farming/textures/farming_cocoa_1.png create mode 100644 mods/farming/textures/farming_cocoa_2.png create mode 100644 mods/farming/textures/farming_cocoa_3.png create mode 100644 mods/farming/textures/farming_cocoa_beans.png create mode 100644 mods/farming/textures/farming_coffee_1.png create mode 100644 mods/farming/textures/farming_coffee_2.png create mode 100644 mods/farming/textures/farming_coffee_3.png create mode 100644 mods/farming/textures/farming_coffee_4.png create mode 100644 mods/farming/textures/farming_coffee_5.png create mode 100644 mods/farming/textures/farming_coffee_beans.png create mode 100644 mods/farming/textures/farming_coffee_cup.png create mode 100644 mods/farming/textures/farming_coffee_cup_hot.png create mode 100644 mods/farming/textures/farming_cookie.png create mode 100644 mods/farming/textures/farming_corn.png create mode 100644 mods/farming/textures/farming_corn_1.png create mode 100644 mods/farming/textures/farming_corn_2.png create mode 100644 mods/farming/textures/farming_corn_3.png create mode 100644 mods/farming/textures/farming_corn_4.png create mode 100644 mods/farming/textures/farming_corn_5.png create mode 100644 mods/farming/textures/farming_corn_6.png create mode 100644 mods/farming/textures/farming_corn_7.png create mode 100644 mods/farming/textures/farming_corn_8.png create mode 100644 mods/farming/textures/farming_corn_cob.png create mode 100644 mods/farming/textures/farming_cotton.png create mode 100644 mods/farming/textures/farming_cotton_1.png create mode 100644 mods/farming/textures/farming_cotton_2.png create mode 100644 mods/farming/textures/farming_cotton_3.png create mode 100644 mods/farming/textures/farming_cotton_4.png create mode 100644 mods/farming/textures/farming_cotton_5.png create mode 100644 mods/farming/textures/farming_cotton_6.png create mode 100644 mods/farming/textures/farming_cotton_7.png create mode 100644 mods/farming/textures/farming_cotton_8.png create mode 100644 mods/farming/textures/farming_cotton_seed.png create mode 100644 mods/farming/textures/farming_cucumber.png create mode 100644 mods/farming/textures/farming_cucumber_1.png create mode 100644 mods/farming/textures/farming_cucumber_2.png create mode 100644 mods/farming/textures/farming_cucumber_3.png create mode 100644 mods/farming/textures/farming_cucumber_4.png create mode 100644 mods/farming/textures/farming_desert_sand_soil.png create mode 100644 mods/farming/textures/farming_desert_sand_soil_wet.png create mode 100644 mods/farming/textures/farming_desert_sand_soil_wet_side.png create mode 100644 mods/farming/textures/farming_donut.png create mode 100644 mods/farming/textures/farming_donut_apple.png create mode 100644 mods/farming/textures/farming_donut_chocolate.png create mode 100644 mods/farming/textures/farming_flour.png create mode 100644 mods/farming/textures/farming_grapebush.png create mode 100644 mods/farming/textures/farming_grapes.png create mode 100644 mods/farming/textures/farming_grapes_1.png create mode 100644 mods/farming/textures/farming_grapes_2.png create mode 100644 mods/farming/textures/farming_grapes_3.png create mode 100644 mods/farming/textures/farming_grapes_4.png create mode 100644 mods/farming/textures/farming_grapes_5.png create mode 100644 mods/farming/textures/farming_grapes_6.png create mode 100644 mods/farming/textures/farming_grapes_7.png create mode 100644 mods/farming/textures/farming_grapes_8.png create mode 100644 mods/farming/textures/farming_melon_1.png create mode 100644 mods/farming/textures/farming_melon_2.png create mode 100644 mods/farming/textures/farming_melon_3.png create mode 100644 mods/farming/textures/farming_melon_4.png create mode 100644 mods/farming/textures/farming_melon_5.png create mode 100644 mods/farming/textures/farming_melon_6.png create mode 100644 mods/farming/textures/farming_melon_7.png create mode 100644 mods/farming/textures/farming_melon_side.png create mode 100644 mods/farming/textures/farming_melon_slice.png create mode 100644 mods/farming/textures/farming_melon_top.png create mode 100644 mods/farming/textures/farming_orange.png create mode 100644 mods/farming/textures/farming_orange_1.png create mode 100644 mods/farming/textures/farming_orange_2.png create mode 100644 mods/farming/textures/farming_orange_3.png create mode 100644 mods/farming/textures/farming_orange_4.png create mode 100644 mods/farming/textures/farming_orange_seed.png create mode 100644 mods/farming/textures/farming_potato.png create mode 100644 mods/farming/textures/farming_potato_1.png create mode 100644 mods/farming/textures/farming_potato_2.png create mode 100644 mods/farming/textures/farming_potato_3.png create mode 100644 mods/farming/textures/farming_potato_4.png create mode 100644 mods/farming/textures/farming_potato_seed.png create mode 100644 mods/farming/textures/farming_pumpkin_1.png create mode 100644 mods/farming/textures/farming_pumpkin_2.png create mode 100644 mods/farming/textures/farming_pumpkin_3.png create mode 100644 mods/farming/textures/farming_pumpkin_4.png create mode 100644 mods/farming/textures/farming_pumpkin_5.png create mode 100644 mods/farming/textures/farming_pumpkin_6.png create mode 100644 mods/farming/textures/farming_pumpkin_7.png create mode 100644 mods/farming/textures/farming_pumpkin_8.png create mode 100644 mods/farming/textures/farming_pumpkin_bread.png create mode 100644 mods/farming/textures/farming_pumpkin_dough.png create mode 100644 mods/farming/textures/farming_pumpkin_face_off.png create mode 100644 mods/farming/textures/farming_pumpkin_face_on.png create mode 100644 mods/farming/textures/farming_pumpkin_seed.png create mode 100644 mods/farming/textures/farming_pumpkin_side.png create mode 100644 mods/farming/textures/farming_pumpkin_slice.png create mode 100644 mods/farming/textures/farming_pumpkin_top.png create mode 100644 mods/farming/textures/farming_raspberries.png create mode 100644 mods/farming/textures/farming_raspberry_1.png create mode 100644 mods/farming/textures/farming_raspberry_2.png create mode 100644 mods/farming/textures/farming_raspberry_3.png create mode 100644 mods/farming/textures/farming_raspberry_4.png create mode 100644 mods/farming/textures/farming_raspberry_seed.png create mode 100644 mods/farming/textures/farming_raspberry_smoothie.png create mode 100644 mods/farming/textures/farming_rhubarb.png create mode 100644 mods/farming/textures/farming_rhubarb_1.png create mode 100644 mods/farming/textures/farming_rhubarb_2.png create mode 100644 mods/farming/textures/farming_rhubarb_3.png create mode 100644 mods/farming/textures/farming_rhubarb_pie.png create mode 100644 mods/farming/textures/farming_rhubarb_seed.png create mode 100644 mods/farming/textures/farming_scarecrow_front.png create mode 100644 mods/farming/textures/farming_scarecrow_front_light.png create mode 100644 mods/farming/textures/farming_scarecrow_side.png create mode 100644 mods/farming/textures/farming_scarecrow_top.png create mode 100644 mods/farming/textures/farming_soil.png create mode 100644 mods/farming/textures/farming_soil_wet.png create mode 100644 mods/farming/textures/farming_soil_wet_side.png create mode 100644 mods/farming/textures/farming_straw.png create mode 100644 mods/farming/textures/farming_strawberry.png create mode 100644 mods/farming/textures/farming_strawberry_1.png create mode 100644 mods/farming/textures/farming_strawberry_2.png create mode 100644 mods/farming/textures/farming_strawberry_3.png create mode 100644 mods/farming/textures/farming_strawberry_4.png create mode 100644 mods/farming/textures/farming_strawberry_5.png create mode 100644 mods/farming/textures/farming_strawberry_6.png create mode 100644 mods/farming/textures/farming_strawberry_7.png create mode 100644 mods/farming/textures/farming_strawberry_8.png create mode 100644 mods/farming/textures/farming_sugar.png create mode 100644 mods/farming/textures/farming_tomato.png create mode 100644 mods/farming/textures/farming_tomato_1.png create mode 100644 mods/farming/textures/farming_tomato_2.png create mode 100644 mods/farming/textures/farming_tomato_3.png create mode 100644 mods/farming/textures/farming_tomato_4.png create mode 100644 mods/farming/textures/farming_tomato_5.png create mode 100644 mods/farming/textures/farming_tomato_6.png create mode 100644 mods/farming/textures/farming_tomato_7.png create mode 100644 mods/farming/textures/farming_tomato_8.png create mode 100644 mods/farming/textures/farming_tomato_seed.png create mode 100644 mods/farming/textures/farming_tool_bronzehoe.png create mode 100644 mods/farming/textures/farming_tool_diamondhoe.png create mode 100644 mods/farming/textures/farming_tool_mesehoe.png create mode 100644 mods/farming/textures/farming_tool_steelhoe.png create mode 100644 mods/farming/textures/farming_tool_stonehoe.png create mode 100644 mods/farming/textures/farming_tool_woodhoe.png create mode 100644 mods/farming/textures/farming_trellis.png create mode 100644 mods/farming/textures/farming_wheat.png create mode 100644 mods/farming/textures/farming_wheat_1.png create mode 100644 mods/farming/textures/farming_wheat_2.png create mode 100644 mods/farming/textures/farming_wheat_3.png create mode 100644 mods/farming/textures/farming_wheat_4.png create mode 100644 mods/farming/textures/farming_wheat_5.png create mode 100644 mods/farming/textures/farming_wheat_6.png create mode 100644 mods/farming/textures/farming_wheat_7.png create mode 100644 mods/farming/textures/farming_wheat_8.png create mode 100644 mods/farming/textures/farming_wheat_seed.png create mode 100644 mods/farming/textures/vessels_drinking_cup.png create mode 100644 mods/farming/todo.md create mode 100644 mods/farming/tomato.lua create mode 100644 mods/farming/wheat.lua diff --git a/mods/boats/README.txt b/mods/boats/README.txt new file mode 100644 index 00000000..3fa40f25 --- /dev/null +++ b/mods/boats/README.txt @@ -0,0 +1,20 @@ +Minetest 0.4 mod: boats +======================= +by PilzAdam, slightly modified for NeXt +changed by TenPlus1 to add some new features + - boat is destroyed when crashing (drops 3 wood) + - boat turns faster + - used model from ds_rowboat mod + +License of source code: +----------------------- +WTFPL + +License of media (textures and sounds): +--------------------------------------- +WTFPL + +Authors of media files: +----------------------- +textures: Zeg9 +model: thetoon and Zeg9, modified by PavelS(SokolovPavel) diff --git a/mods/boats/depends.txt b/mods/boats/depends.txt new file mode 100644 index 00000000..7c506cfb --- /dev/null +++ b/mods/boats/depends.txt @@ -0,0 +1,2 @@ +default +mobs? \ No newline at end of file diff --git a/mods/boats/models/boat.obj b/mods/boats/models/boat.obj new file mode 100644 index 00000000..0f21e47f --- /dev/null +++ b/mods/boats/models/boat.obj @@ -0,0 +1,358 @@ +# Blender v2.76 (sub 11) OBJ File: 'boat.blend' +# www.blender.org +mtllib boat.mtl +o boats_boat +v -6.786140 -3.033999 -9.415440 +v -6.786140 -1.967150 -9.415440 +v -6.786140 -1.967150 8.793510 +v -6.786140 -3.033999 8.793510 +v 5.732520 -1.967150 -9.415440 +v 5.732520 -3.033999 -9.415440 +v 5.732520 -3.033999 8.793510 +v 5.732520 -1.967150 8.793510 +v -2.233900 -3.033999 -9.415440 +v -2.233900 -1.967150 -9.415440 +v -2.233900 -1.967150 8.793510 +v -2.233900 -3.033999 8.793510 +v 2.318340 -3.033999 -9.415440 +v 2.318340 -1.967150 -9.415440 +v 2.318340 -1.967150 8.793510 +v 2.318340 -3.033999 8.793510 +v -3.371960 -3.033999 8.793510 +v -3.371960 -1.967150 8.793510 +v -3.371960 -1.967150 -9.415440 +v -3.371960 -3.033999 -9.415440 +v 2.318340 0.276645 8.793510 +v 1.180280 -1.967150 8.793510 +v 5.732520 0.276645 8.793510 +v 5.732520 1.039180 8.793510 +v 6.870580 0.276645 8.793510 +v 6.870580 -1.967150 8.793510 +v 2.318340 1.039180 8.793510 +v 1.180280 0.276645 8.793510 +v 1.180280 1.039180 8.793510 +v 1.180280 -3.033999 8.793510 +v -2.233900 0.276645 8.793510 +v -3.371960 0.276645 8.793510 +v -2.233900 1.039180 8.793510 +v -3.371960 1.039180 8.793510 +v -6.786140 0.276645 8.793510 +v -7.786200 0.276645 8.793510 +v -7.786200 -1.967150 8.793510 +v -6.786140 1.039180 8.793510 +v 1.180280 -1.967150 -9.415440 +v 1.180280 -3.033999 -9.415440 +v 2.318340 0.276645 -9.415440 +v 1.180280 0.276645 -9.415440 +v 2.318340 1.039180 -9.415440 +v 5.732520 0.276645 -9.415440 +v 6.870580 -1.967150 -9.415440 +v 5.732520 1.039180 -9.415440 +v 6.870580 0.276645 -9.415440 +v 0.042220 1.039180 -9.415440 +v 1.180280 1.039180 -9.415440 +v 0.042220 -1.967150 -9.415440 +v -1.095840 -1.967150 -9.415440 +v -2.233900 0.276645 -9.415440 +v -3.371960 0.276645 -9.415440 +v -2.233900 1.039180 -9.415440 +v -1.095840 1.039180 -9.415440 +v -3.371960 1.039180 -9.415440 +v -6.786140 0.276645 -9.415440 +v -6.786140 1.039180 -9.415440 +v -7.786200 -1.967150 -9.415440 +v -7.786200 0.276645 -9.415440 +v -1.095840 0.156645 -12.044100 +v -1.095840 -4.601110 -9.415440 +v -1.095840 1.039181 -10.802900 +v -1.095840 2.868579 -10.802900 +v -1.095840 2.868580 -7.883420 +v -1.095840 3.746069 -12.034100 +v -1.095840 3.746070 -7.883420 +v -1.095840 0.156645 -14.294900 +v -1.095840 -4.601110 -14.284900 +v 0.042220 -4.601110 -14.284900 +v 0.042220 -4.601110 -9.415440 +v 0.042220 1.039181 -10.802900 +v 0.042220 0.156645 -12.044100 +v 0.042220 2.868579 -10.802900 +v 0.042220 0.156645 -14.294900 +v 0.042220 3.746069 -12.034100 +v 0.042220 3.746070 -7.883420 +v 0.042220 2.868580 -7.883420 +v -1.096322 -3.033999 -9.415440 +v 0.044046 -3.035397 -9.415440 +vt 1.000000 0.187500 +vt -1.000000 0.312500 +vt 1.000000 0.312500 +vt 0.687500 1.000000 +vt 0.500000 0.875000 +vt 0.500000 0.625000 +vt -1.000000 0.062500 +vt 1.000000 0.062500 +vt 1.000000 -0.000000 +vt -1.000000 0.125000 +vt 1.000000 0.125000 +vt 0.437500 0.125000 +vt 0.312500 0.500000 +vt 0.312500 0.125000 +vt 1.000000 0.625000 +vt -1.000000 0.500000 +vt 1.000000 0.500000 +vt 0.187500 0.687500 +vt -0.187500 0.687500 +vt -0.187500 0.312500 +vt 1.000000 0.812500 +vt -1.000000 0.937500 +vt -1.000000 0.812500 +vt 0.812500 0.687500 +vt 1.187500 0.687500 +vt 0.812500 0.312500 +vt 1.000000 0.562500 +vt 0.312500 0.437500 +vt 1.000000 0.437500 +vt 1.000000 0.750000 +vt -1.000000 0.875000 +vt -1.000000 0.750000 +vt -1.000000 1.000000 +vt 1.000000 1.000000 +vt 0.437500 0.625000 +vt 0.562500 0.437500 +vt 0.562500 0.625000 +vt -1.000000 0.437500 +vt -1.000000 0.000000 +vt 0.500000 0.062500 +vt 0.375000 0.750000 +vt 0.500000 0.750000 +vt -1.000000 0.250000 +vt -1.000000 0.687500 +vt 1.000000 0.687500 +vt 0.625000 0.375000 +vt 1.000000 0.375000 +vt 1.000000 0.250000 +vt 1.000000 0.937500 +vt 0.437500 0.812500 +vt 0.312500 0.312500 +vt 0.312500 0.812500 +vt 0.437500 0.312500 +vt 0.437500 0.437500 +vt 0.687500 0.812500 +vt 0.000000 0.687500 +vt 0.000000 0.812500 +vt -1.000000 0.562500 +vt 0.875000 0.812500 +vt 0.875000 0.687500 +vt 0.250000 0.312500 +vt 0.562500 0.187500 +vt 0.250000 0.187500 +vt -1.000000 0.187500 +vt 0.312500 0.625000 +vt 0.312500 0.187500 +vt 0.312500 -0.187500 +vt 1.000000 -0.187500 +vt 0.687500 0.500000 +vt -0.000000 1.000000 +vt 0.000000 0.875000 +vt 0.437500 0.500000 +vt -1.000000 0.625000 +vt 0.812500 0.187500 +vt 1.187500 0.187500 +vt 1.187500 0.312500 +vt 1.312500 0.312500 +vt 1.312500 0.687500 +vt 0.687500 0.187500 +vt 0.687500 0.312500 +vt 1.187500 0.812500 +vt 0.812500 0.812500 +vt 0.187500 0.312500 +vt 0.312500 0.687500 +vt 0.687500 0.687500 +vt -0.187500 0.187500 +vt 0.187500 0.187500 +vt -0.312500 0.687500 +vt -0.312500 0.312500 +vt 0.187500 0.812500 +vt -0.187500 0.812500 +vt 0.437500 0.687500 +vt 0.437500 0.187500 +vt 0.562500 0.812500 +vt 0.562500 0.687500 +vt 0.312500 0.562500 +vt 1.000000 0.875000 +vt 0.375000 0.062500 +vt -1.000000 0.375000 +vt 0.625000 0.500000 +vt 0.875000 0.562500 +vt 0.937500 0.812500 +vt 0.937500 0.687500 +vt 0.875000 0.937500 +vt 0.562500 0.312500 +vn -1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 -0.002100 -1.000000 +vn 0.001200 -1.000000 0.000000 +vn 0.000000 0.002800 -1.000000 +vn -0.001200 -1.000000 0.000200 +g boats_boat_boats_boat_None +usemtl None +s off +f 41/1/1 27/2/1 43/3/1 +f 76/4/2 74/5/2 72/6/2 +f 8/7/2 6/1/2 5/8/2 +f 15/9/1 13/10/1 16/11/1 +f 51/12/3 71/13/3 50/14/3 +f 56/15/2 32/16/2 53/17/2 +f 15/18/3 8/19/3 23/20/3 +f 22/21/2 40/22/2 39/23/2 +f 19/24/4 2/25/4 53/26/4 +f 70/27/5 62/28/5 69/29/5 +f 11/30/5 19/31/5 10/32/5 +f 4/15/5 20/33/5 17/34/5 +f 72/35/3 64/36/3 63/37/3 +f 13/8/5 7/38/5 16/7/5 +f 23/39/6 47/11/6 44/9/6 +f 68/40/7 70/41/7 69/42/7 +f 80/43/8 40/10/8 30/11/8 +f 3/15/1 1/32/1 4/30/1 +f 20/44/2 18/27/2 17/45/2 +f 74/17/5 65/46/5 64/47/5 +f 31/43/1 54/47/1 52/48/1 +f 22/47/5 14/43/5 15/48/5 +f 46/1/2 23/7/2 44/8/2 +f 57/21/1 38/22/1 58/49/1 +f 61/50/9 76/51/9 73/52/9 +f 37/45/5 2/23/5 3/21/5 +f 78/28/3 67/53/3 65/54/3 +f 64/5/1 66/4/1 63/6/1 +f 76/55/6 67/56/6 77/57/6 +f 47/17/2 26/10/2 45/11/2 +f 5/16/5 26/47/5 8/17/5 +f 33/58/6 48/59/6 55/60/6 +f 29/38/2 42/3/2 49/29/2 +f 32/44/6 52/21/6 53/45/6 +f 58/15/6 34/33/6 56/34/6 +f 27/7/6 46/29/6 43/8/6 +f 73/61/6 68/62/6 61/63/6 +f 21/58/6 42/29/6 28/38/6 +f 11/29/1 9/58/1 12/27/1 +f 59/45/1 36/2/1 60/3/1 +f 60/9/6 35/10/6 57/11/6 +f 41/1/1 21/64/1 27/2/1 +f 72/6/2 48/65/2 50/66/2 +f 50/66/2 71/67/2 70/68/2 +f 70/68/2 75/17/2 73/69/2 +f 76/4/2 77/70/2 74/5/2 +f 77/70/2 78/71/2 74/5/2 +f 50/66/2 70/68/2 73/69/2 +f 73/69/2 76/4/2 72/6/2 +f 72/6/2 50/66/2 73/69/2 +f 8/7/2 7/64/2 6/1/2 +f 15/9/1 14/39/1 13/10/1 +f 51/12/3 62/72/3 71/13/3 +f 56/15/2 34/73/2 32/16/2 +f 32/26/3 34/74/3 38/75/3 +f 35/76/3 36/77/3 37/78/3 +f 32/26/3 38/75/3 35/76/3 +f 29/66/3 33/79/3 31/80/3 +f 32/26/3 35/76/3 3/25/3 +f 28/51/3 29/66/3 31/80/3 +f 31/80/3 32/26/3 18/24/3 +f 3/25/3 4/81/3 17/82/3 +f 35/76/3 37/78/3 3/25/3 +f 21/83/3 28/51/3 22/84/3 +f 3/25/3 17/82/3 18/24/3 +f 11/85/3 12/55/3 30/52/3 +f 32/26/3 3/25/3 18/24/3 +f 11/85/3 30/52/3 22/84/3 +f 31/80/3 18/24/3 11/85/3 +f 24/86/3 27/87/3 21/83/3 +f 28/51/3 31/80/3 11/85/3 +f 11/85/3 22/84/3 28/51/3 +f 24/86/3 21/83/3 23/20/3 +f 26/88/3 25/89/3 23/20/3 +f 23/20/3 21/83/3 15/18/3 +f 15/18/3 16/90/3 7/91/3 +f 21/83/3 22/84/3 15/18/3 +f 8/19/3 26/88/3 23/20/3 +f 15/18/3 7/91/3 8/19/3 +f 22/21/2 30/49/2 40/22/2 +f 47/89/4 45/88/4 5/19/4 +f 5/19/4 6/91/4 13/90/4 +f 5/19/4 13/90/4 14/18/4 +f 44/20/4 47/89/4 5/19/4 +f 43/87/4 46/86/4 44/20/4 +f 41/83/4 43/87/4 44/20/4 +f 44/20/4 5/19/4 14/18/4 +f 39/84/4 40/52/4 80/50/4 +f 44/20/4 14/18/4 41/83/4 +f 42/51/4 41/83/4 39/84/4 +f 39/84/4 80/50/4 50/92/4 +f 41/83/4 14/18/4 39/84/4 +f 48/93/4 49/66/4 42/51/4 +f 50/92/4 48/93/4 42/51/4 +f 80/50/4 79/94/4 50/92/4 +f 50/92/4 42/51/4 39/84/4 +f 54/79/4 55/62/4 52/80/4 +f 50/92/4 79/94/4 51/95/4 +f 52/80/4 55/62/4 51/95/4 +f 51/95/4 79/94/4 10/85/4 +f 79/94/4 9/55/4 10/85/4 +f 53/26/4 52/80/4 10/85/4 +f 58/75/4 56/74/4 53/26/4 +f 59/78/4 60/77/4 57/76/4 +f 57/76/4 58/75/4 53/26/4 +f 52/80/4 51/95/4 10/85/4 +f 19/24/4 20/82/4 1/81/4 +f 53/26/4 10/85/4 19/24/4 +f 59/78/4 57/76/4 2/25/4 +f 19/24/4 1/81/4 2/25/4 +f 2/25/4 57/76/4 53/26/4 +f 70/27/5 71/96/5 62/28/5 +f 11/30/5 18/97/5 19/31/5 +f 4/15/5 1/73/5 20/33/5 +f 72/35/3 74/54/3 64/36/3 +f 13/8/5 6/29/5 7/38/5 +f 23/39/6 25/10/6 47/11/6 +f 68/40/7 75/98/7 70/41/7 +f 30/11/5 12/17/5 79/99/5 +f 79/99/10 80/43/10 30/11/10 +f 12/17/5 9/16/5 79/99/5 +f 3/15/1 2/73/1 1/32/1 +f 20/44/2 19/58/2 18/27/2 +f 74/17/5 78/100/5 65/46/5 +f 31/43/1 33/99/1 54/47/1 +f 22/47/5 39/99/5 14/43/5 +f 46/1/2 24/64/2 23/7/2 +f 57/21/1 35/23/1 38/22/1 +f 61/50/9 66/53/9 76/51/9 +f 37/45/5 59/44/5 2/23/5 +f 78/28/3 77/51/3 67/53/3 +f 62/67/1 51/66/1 69/68/1 +f 51/66/1 55/65/1 63/6/1 +f 68/17/1 69/68/1 61/69/1 +f 61/69/1 69/68/1 51/66/1 +f 61/69/1 51/66/1 63/6/1 +f 65/71/1 67/70/1 64/5/1 +f 61/69/1 63/6/1 66/4/1 +f 64/5/1 67/70/1 66/4/1 +f 76/55/6 66/85/6 67/56/6 +f 47/17/2 25/16/2 26/10/2 +f 5/16/5 45/99/5 26/47/5 +f 55/60/6 54/101/6 33/58/6 +f 33/58/6 29/22/6 48/59/6 +f 48/59/6 72/102/6 63/103/6 +f 29/22/6 49/104/6 48/59/6 +f 48/59/6 63/103/6 55/60/6 +f 29/38/2 28/2/2 42/3/2 +f 32/44/6 31/23/6 52/21/6 +f 58/15/6 38/73/6 34/33/6 +f 27/7/6 24/38/6 46/29/6 +f 73/61/6 75/105/6 68/62/6 +f 21/58/6 41/27/6 42/29/6 +f 11/29/1 10/38/1 9/58/1 +f 59/45/1 37/44/1 36/2/1 +f 60/9/6 36/39/6 35/10/6 diff --git a/mods/boats/models/rowboat.x b/mods/boats/models/rowboat.x new file mode 100644 index 00000000..73a61df3 --- /dev/null +++ b/mods/boats/models/rowboat.x @@ -0,0 +1,760 @@ +xof 0303txt 0032 + +Frame Root { + FrameTransformMatrix { + 1.000000, 0.000000, 0.000000, 0.000000, + 0.000000,-0.000000, 1.000000, 0.000000, + 0.000000, 1.000000, 0.000000, 0.000000, + 0.000000, 0.000000, 0.000000, 1.000000;; + } + Frame Cube_000 { + FrameTransformMatrix { + 1.000000, 0.000000, 0.000000, 0.000000, + 0.000000, 1.000000, 0.000000, 0.000000, + 0.000000, 0.000000, 1.000000, 0.000000, + 0.000000, 0.000000, 0.000000, 1.000000;; + } + Mesh { // Cube_000 mesh + 240; + 6.000000; 3.999999; 2.376923;, + 5.999998;-8.000001; 2.376923;, + 5.999998;-8.000001; 4.376923;, + 6.000001; 3.999999; 4.376923;, + -2.000000; 8.000000; 2.376923;, + 2.000000; 8.000000; 2.376923;, + 2.000001; 8.000000; 4.376923;, + -1.999999; 8.000000; 4.376923;, + -6.000000; 4.000000; 4.376923;, + -6.000001;-8.000000; 4.376923;, + -6.000001;-7.999999; 2.376923;, + -6.000000; 4.000000; 2.376923;, + -3.999999; 6.000001; 2.376923;, + -1.999999; 6.000000; 2.376923;, + -2.000001;-8.000002; 2.376923;, + -4.000001;-8.000000; 2.376923;, + -2.000000; 4.000000;-1.623077;, + -2.000001;-7.999999;-1.623077;, + 1.999999;-8.000001;-1.623077;, + 2.000000; 4.000000;-1.623077;, + -2.000000; 4.000000; 0.376923;, + 2.000000; 3.999999; 0.376923;, + 1.999999;-8.000001; 0.376923;, + -2.000001;-8.000000; 0.376923;, + -2.000000; 4.000000;-1.623077;, + 2.000000; 4.000000;-1.623077;, + 2.000000; 3.999999; 0.376923;, + -2.000000; 4.000000; 0.376923;, + 2.000000; 4.000000;-1.623077;, + 1.999999;-8.000001;-1.623077;, + 1.999999;-8.000001; 0.376923;, + 2.000000; 3.999999; 0.376923;, + 1.999999;-8.000001;-1.623077;, + -2.000001;-7.999999;-1.623077;, + -2.000001;-8.000000; 0.376923;, + 1.999999;-8.000001; 0.376923;, + -2.000000; 4.000000; 0.376923;, + -2.000001;-8.000000; 0.376923;, + -2.000001;-7.999999;-1.623077;, + -2.000000; 4.000000;-1.623077;, + -4.000001;-8.000000; 0.376923;, + -4.000001;-10.000000; 0.376923;, + 4.000000;-10.000000; 0.376923;, + 3.999999;-8.000000; 0.376923;, + -4.000000;-7.999999; 4.376923;, + 4.000000;-8.000001; 4.376923;, + 3.999999;-10.000001; 4.376923;, + -4.000001;-10.000000; 4.376923;, + -4.000001;-8.000000; 0.376923;, + 3.999999;-8.000000; 0.376923;, + 4.000000;-8.000001; 4.376923;, + -4.000000;-7.999999; 4.376923;, + 3.999999;-8.000000; 0.376923;, + 4.000000;-10.000000; 0.376923;, + 3.999999;-10.000001; 4.376923;, + 4.000000;-8.000001; 4.376923;, + 4.000000;-10.000000; 0.376923;, + -4.000001;-10.000000; 0.376923;, + -4.000001;-10.000000; 4.376923;, + 3.999999;-10.000001; 4.376923;, + -4.000000;-7.999999; 4.376923;, + -4.000001;-10.000000; 4.376923;, + -4.000001;-10.000000; 0.376923;, + -4.000001;-8.000000; 0.376923;, + 4.000000; 4.000000; 2.376923;, + 3.999999;-8.000001; 2.376923;, + 5.999998;-8.000001; 2.376923;, + 6.000000; 3.999999; 2.376923;, + 4.000001; 4.000000; 4.376923;, + 6.000001; 3.999999; 4.376923;, + 5.999998;-8.000001; 4.376923;, + 4.000000;-8.000001; 4.376923;, + 4.000000; 4.000000; 2.376923;, + 6.000000; 3.999999; 2.376923;, + 6.000001; 3.999999; 4.376923;, + 4.000001; 4.000000; 4.376923;, + 5.999998;-8.000001; 2.376923;, + 3.999999;-8.000001; 2.376923;, + 4.000000;-8.000001; 4.376923;, + 5.999998;-8.000001; 4.376923;, + 4.000001; 4.000000; 4.376923;, + 4.000000;-8.000001; 4.376923;, + 3.999999;-8.000001; 2.376923;, + 4.000000; 4.000000; 2.376923;, + 2.000000; 6.000000; 0.376923;, + 1.999999;-8.000001; 0.376923;, + 3.999999;-8.000000; 0.376923;, + 4.000000; 6.000000; 0.376923;, + 2.000001; 6.000000; 2.376923;, + 4.000001; 5.999999; 2.376923;, + 3.999999;-8.000001; 2.376923;, + 1.999999;-8.000000; 2.376923;, + 2.000000; 6.000000; 0.376923;, + 4.000000; 6.000000; 0.376923;, + 4.000001; 5.999999; 2.376923;, + 2.000001; 6.000000; 2.376923;, + 4.000000; 6.000000; 0.376923;, + 3.999999;-8.000000; 0.376923;, + 3.999999;-8.000001; 2.376923;, + 4.000001; 5.999999; 2.376923;, + 3.999999;-8.000000; 0.376923;, + 1.999999;-8.000001; 0.376923;, + 1.999999;-8.000000; 2.376923;, + 3.999999;-8.000001; 2.376923;, + 2.000001; 6.000000; 2.376923;, + 1.999999;-8.000000; 2.376923;, + 1.999999;-8.000001; 0.376923;, + 2.000000; 6.000000; 0.376923;, + 2.000001; 6.000000; 2.376923;, + 2.000000; 4.000000; 2.376923;, + 4.000000; 4.000000; 2.376923;, + 4.000001; 5.999999; 2.376923;, + 2.000001; 6.000000; 4.376923;, + 4.000001; 5.999999; 4.376923;, + 4.000001; 4.000000; 4.376923;, + 2.000000; 4.000000; 4.376923;, + 2.000001; 6.000000; 2.376923;, + 4.000001; 5.999999; 2.376923;, + 4.000001; 5.999999; 4.376923;, + 2.000001; 6.000000; 4.376923;, + 4.000001; 5.999999; 2.376923;, + 4.000000; 4.000000; 2.376923;, + 4.000001; 4.000000; 4.376923;, + 4.000001; 5.999999; 4.376923;, + 4.000000; 4.000000; 2.376923;, + 2.000000; 4.000000; 2.376923;, + 2.000000; 4.000000; 4.376923;, + 4.000001; 4.000000; 4.376923;, + 2.000001; 6.000000; 4.376923;, + 2.000000; 4.000000; 4.376923;, + 2.000000; 4.000000; 2.376923;, + 2.000001; 6.000000; 2.376923;, + -3.999999; 6.000001; 2.376923;, + -4.000000; 4.000000; 2.376923;, + -2.000000; 4.000000; 2.376923;, + -1.999999; 6.000000; 2.376923;, + -3.999999; 6.000001; 4.376923;, + -1.999999; 6.000000; 4.376923;, + -2.000000; 4.000000; 4.376923;, + -4.000000; 3.999999; 4.376923;, + -3.999999; 6.000001; 2.376923;, + -1.999999; 6.000000; 2.376923;, + -1.999999; 6.000000; 4.376923;, + -3.999999; 6.000001; 4.376923;, + -1.999999; 6.000000; 2.376923;, + -2.000000; 4.000000; 2.376923;, + -2.000000; 4.000000; 4.376923;, + -1.999999; 6.000000; 4.376923;, + -2.000000; 4.000000; 2.376923;, + -4.000000; 4.000000; 2.376923;, + -4.000000; 3.999999; 4.376923;, + -2.000000; 4.000000; 4.376923;, + -3.999999; 6.000001; 4.376923;, + -4.000000; 3.999999; 4.376923;, + -4.000000; 4.000000; 2.376923;, + -3.999999; 6.000001; 2.376923;, + -2.000000; 8.000000; 2.376923;, + -1.999999; 6.000000; 2.376923;, + 2.000001; 6.000000; 2.376923;, + 2.000000; 8.000000; 2.376923;, + -1.999999; 8.000000; 4.376923;, + 2.000001; 8.000000; 4.376923;, + 2.000001; 6.000000; 4.376923;, + -1.999999; 6.000000; 4.376923;, + 2.000000; 8.000000; 2.376923;, + 2.000001; 6.000000; 2.376923;, + 2.000001; 6.000000; 4.376923;, + 2.000001; 8.000000; 4.376923;, + 2.000001; 6.000000; 2.376923;, + -1.999999; 6.000000; 2.376923;, + -1.999999; 6.000000; 4.376923;, + 2.000001; 6.000000; 4.376923;, + -1.999999; 8.000000; 4.376923;, + -1.999999; 6.000000; 4.376923;, + -1.999999; 6.000000; 2.376923;, + -2.000000; 8.000000; 2.376923;, + -2.000000; 6.000000; 0.376923;, + -2.000000; 4.000000; 0.376923;, + 2.000000; 3.999999; 0.376923;, + 2.000000; 6.000000; 0.376923;, + -1.999999; 6.000000; 2.376923;, + 2.000001; 6.000000; 2.376923;, + 2.000000; 4.000000; 2.376923;, + -2.000000; 4.000000; 2.376923;, + -2.000000; 6.000000; 0.376923;, + 2.000000; 6.000000; 0.376923;, + 2.000001; 6.000000; 2.376923;, + -1.999999; 6.000000; 2.376923;, + 2.000000; 6.000000; 0.376923;, + 2.000000; 3.999999; 0.376923;, + 2.000000; 4.000000; 2.376923;, + 2.000001; 6.000000; 2.376923;, + 2.000000; 3.999999; 0.376923;, + -2.000000; 4.000000; 0.376923;, + -2.000000; 4.000000; 2.376923;, + 2.000000; 4.000000; 2.376923;, + -1.999999; 6.000000; 2.376923;, + -2.000000; 4.000000; 2.376923;, + -2.000000; 4.000000; 0.376923;, + -2.000000; 6.000000; 0.376923;, + -6.000000; 4.000000; 2.376923;, + -6.000001;-7.999999; 2.376923;, + -4.000001;-8.000000; 2.376923;, + -4.000000; 4.000000; 2.376923;, + -6.000000; 4.000000; 4.376923;, + -4.000000; 3.999999; 4.376923;, + -4.000000;-7.999999; 4.376923;, + -6.000001;-8.000000; 4.376923;, + -6.000000; 4.000000; 2.376923;, + -4.000000; 4.000000; 2.376923;, + -4.000000; 3.999999; 4.376923;, + -6.000000; 4.000000; 4.376923;, + -4.000000; 4.000000; 2.376923;, + -4.000001;-8.000000; 2.376923;, + -4.000000;-7.999999; 4.376923;, + -4.000000; 3.999999; 4.376923;, + -4.000001;-8.000000; 2.376923;, + -6.000001;-7.999999; 2.376923;, + -6.000001;-8.000000; 4.376923;, + -4.000000;-7.999999; 4.376923;, + -4.000000; 6.000001; 0.376923;, + -4.000001;-8.000000; 0.376923;, + -2.000001;-8.000000; 0.376923;, + -2.000000; 6.000000; 0.376923;, + -4.000000; 6.000001; 0.376923;, + -2.000000; 6.000000; 0.376923;, + -1.999999; 6.000000; 2.376923;, + -3.999999; 6.000001; 2.376923;, + -2.000000; 6.000000; 0.376923;, + -2.000001;-8.000000; 0.376923;, + -2.000001;-8.000002; 2.376923;, + -1.999999; 6.000000; 2.376923;, + -2.000001;-8.000000; 0.376923;, + -4.000001;-8.000000; 0.376923;, + -4.000001;-8.000000; 2.376923;, + -2.000001;-8.000002; 2.376923;, + -3.999999; 6.000001; 2.376923;, + -4.000001;-8.000000; 2.376923;, + -4.000001;-8.000000; 0.376923;, + -4.000000; 6.000001; 0.376923;; + 60; + 4;0,1,2,3;, + 4;4,5,6,7;, + 4;8,9,10,11;, + 4;12,13,14,15;, + 4;16,17,18,19;, + 4;20,21,22,23;, + 4;24,25,26,27;, + 4;28,29,30,31;, + 4;32,33,34,35;, + 4;36,37,38,39;, + 4;40,41,42,43;, + 4;44,45,46,47;, + 4;48,49,50,51;, + 4;52,53,54,55;, + 4;56,57,58,59;, + 4;60,61,62,63;, + 4;64,65,66,67;, + 4;68,69,70,71;, + 4;72,73,74,75;, + 4;76,77,78,79;, + 4;80,81,82,83;, + 4;84,85,86,87;, + 4;88,89,90,91;, + 4;92,93,94,95;, + 4;96,97,98,99;, + 4;100,101,102,103;, + 4;104,105,106,107;, + 4;108,109,110,111;, + 4;112,113,114,115;, + 4;116,117,118,119;, + 4;120,121,122,123;, + 4;124,125,126,127;, + 4;128,129,130,131;, + 4;132,133,134,135;, + 4;136,137,138,139;, + 4;140,141,142,143;, + 4;144,145,146,147;, + 4;148,149,150,151;, + 4;152,153,154,155;, + 4;156,157,158,159;, + 4;160,161,162,163;, + 4;164,165,166,167;, + 4;168,169,170,171;, + 4;172,173,174,175;, + 4;176,177,178,179;, + 4;180,181,182,183;, + 4;184,185,186,187;, + 4;188,189,190,191;, + 4;192,193,194,195;, + 4;196,197,198,199;, + 4;200,201,202,203;, + 4;204,205,206,207;, + 4;208,209,210,211;, + 4;212,213,214,215;, + 4;216,217,218,219;, + 4;220,221,222,223;, + 4;224,225,226,227;, + 4;228,229,230,231;, + 4;232,233,234,235;, + 4;236,237,238,239;; + MeshNormals { // Cube_000 normals + 60; + -1.000000; 0.000000; 0.000000;, + 0.000000;-1.000000;-0.000000;, + 1.000000;-0.000000; 0.000000;, + 0.000000; 0.000000;-1.000000;, + 0.000000; 0.000000; 1.000000;, + 0.000000; 0.000000;-1.000000;, + -0.000000;-1.000000;-0.000000;, + -1.000000; 0.000000; 0.000000;, + 0.000000; 1.000000; 0.000000;, + 1.000000;-0.000000;-0.000000;, + 0.000000; 0.000000; 1.000000;, + 0.000000; 0.000000;-1.000000;, + -0.000000;-1.000000;-0.000000;, + -1.000000; 0.000000;-0.000000;, + 0.000000; 1.000000; 0.000000;, + 1.000000;-0.000000;-0.000000;, + 0.000000; 0.000000; 1.000000;, + 0.000000; 0.000000;-1.000000;, + -0.000000;-1.000000;-0.000000;, + 0.000000; 1.000000; 0.000000;, + 1.000000;-0.000000;-0.000000;, + 0.000000; 0.000000; 1.000000;, + 0.000000; 0.000000;-1.000000;, + -0.000000;-1.000000;-0.000001;, + -1.000000; 0.000000; 0.000000;, + 0.000000; 1.000000; 0.000000;, + 1.000000;-0.000000;-0.000000;, + 0.000000; 0.000000; 1.000000;, + 0.000000; 0.000000;-1.000000;, + -0.000000;-1.000000; 0.000000;, + -1.000000; 0.000000; 0.000000;, + 0.000000; 1.000000; 0.000000;, + 1.000000;-0.000001;-0.000000;, + 0.000000; 0.000000; 1.000000;, + 0.000000; 0.000000;-1.000000;, + -0.000001;-1.000000; 0.000000;, + -1.000000; 0.000001;-0.000000;, + -0.000000; 1.000000; 0.000000;, + 1.000000;-0.000000;-0.000000;, + 0.000000; 0.000000; 1.000000;, + 0.000000; 0.000000;-1.000000;, + -1.000000;-0.000000; 0.000000;, + -0.000000; 1.000000;-0.000000;, + 1.000000; 0.000000;-0.000000;, + 0.000000; 0.000000; 1.000000;, + 0.000000; 0.000000;-1.000000;, + 0.000000;-1.000000;-0.000000;, + -1.000000; 0.000000; 0.000000;, + 0.000000; 1.000000;-0.000000;, + 1.000000;-0.000000;-0.000000;, + 0.000000; 0.000000; 1.000000;, + 0.000000; 0.000000;-1.000000;, + -0.000000;-1.000000;-0.000000;, + -1.000000; 0.000000; 0.000000;, + 0.000000; 1.000000; 0.000000;, + 0.000000; 0.000000; 1.000000;, + -0.000000;-1.000000;-0.000000;, + -1.000000; 0.000000; 0.000000;, + 0.000001; 1.000000; 0.000001;, + 1.000000;-0.000000;-0.000000;; + 60; + 4;0,0,0,0;, + 4;1,1,1,1;, + 4;2,2,2,2;, + 4;3,3,3,3;, + 4;4,4,4,4;, + 4;5,5,5,5;, + 4;6,6,6,6;, + 4;7,7,7,7;, + 4;8,8,8,8;, + 4;9,9,9,9;, + 4;10,10,10,10;, + 4;11,11,11,11;, + 4;12,12,12,12;, + 4;13,13,13,13;, + 4;14,14,14,14;, + 4;15,15,15,15;, + 4;16,16,16,16;, + 4;17,17,17,17;, + 4;18,18,18,18;, + 4;19,19,19,19;, + 4;20,20,20,20;, + 4;21,21,21,21;, + 4;22,22,22,22;, + 4;23,23,23,23;, + 4;24,24,24,24;, + 4;25,25,25,25;, + 4;26,26,26,26;, + 4;27,27,27,27;, + 4;28,28,28,28;, + 4;29,29,29,29;, + 4;30,30,30,30;, + 4;31,31,31,31;, + 4;32,32,32,32;, + 4;33,33,33,33;, + 4;34,34,34,34;, + 4;35,35,35,35;, + 4;36,36,36,36;, + 4;37,37,37,37;, + 4;38,38,38,38;, + 4;39,39,39,39;, + 4;40,40,40,40;, + 4;41,41,41,41;, + 4;42,42,42,42;, + 4;43,43,43,43;, + 4;44,44,44,44;, + 4;45,45,45,45;, + 4;46,46,46,46;, + 4;47,47,47,47;, + 4;48,48,48,48;, + 4;49,49,49,49;, + 4;50,50,50,50;, + 4;51,51,51,51;, + 4;52,52,52,52;, + 4;53,53,53,53;, + 4;54,54,54,54;, + 4;55,55,55,55;, + 4;56,56,56,56;, + 4;57,57,57,57;, + 4;58,58,58,58;, + 4;59,59,59,59;; + } // End of Cube_000 normals + MeshTextureCoords { // Cube_000 UV coordinates + 240; + 6.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 6.000000; 0.000000;, + 2.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 2.000000; 0.000000;, + 6.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 6.000000; 0.000000;, + 7.000000; 0.000000;, + 7.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 5.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000;-1.000000;, + 5.000000;-1.000000;, + 6.000000;-1.000000;, + 6.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000;-1.000000;, + 2.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 2.000000; 0.000000;, + 6.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 6.000000; 0.000000;, + 3.000000; 0.999999;, + 0.000000; 1.000000;, + 0.000000; 0.000001;, + 3.000000; 0.000000;, + 7.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 7.000000; 0.000000;, + 1.000000; 1.000000;, + 0.000001; 1.000000;, + 0.000000;-4.000000;, + 1.000000;-4.000000;, + 1.000000;-3.000000;, + 0.999999; 1.000000;, + 0.000000; 1.000000;, + 0.000000;-3.000000;, + 4.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000;-1.000000;, + 4.000000;-1.000000;, + 1.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000;-1.000000;, + 1.000000;-1.000000;, + 5.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000;-0.999999;, + 5.000000;-1.000000;, + 1.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000;-1.000000;, + 1.000000;-1.000000;, + 5.375000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 5.375000; 0.000000;, + 5.375000; 0.000000;, + 5.375000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 1.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 1.000000; 0.000000;, + 1.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 1.000000; 0.000000;, + 7.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 7.000000; 0.000000;, + 6.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 6.000000; 0.000000;, + 7.000000; 0.000000;, + 7.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 1.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 1.000000; 0.000000;, + 7.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 7.000000; 0.000000;, + 1.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 1.000000; 0.000000;, + 7.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 7.000000; 0.000000;, + 1.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 1.000000; 0.000000;, + 1.000000; 0.000000;, + 1.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 1.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 1.000000; 0.000000;, + 1.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 1.000000; 0.000000;, + 1.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 1.000000; 0.000000;, + 1.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 1.000000; 0.000000;, + 1.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 1.000000; 0.000000;, + 1.000000; 0.000000;, + 1.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 1.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 1.000000; 0.000000;, + 1.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 1.000000; 0.000000;, + 1.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 1.000000; 0.000000;, + 1.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 1.000000; 0.000000;, + 1.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000;-1.000000;, + 1.000000;-1.000000;, + 1.000000;-1.000000;, + 0.999999; 1.000000;, + 0.000000; 1.000000;, + 0.000000;-1.000000;, + 1.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 1.000000; 0.000000;, + 2.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000001;, + 2.000000; 0.000000;, + 1.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 1.000000; 0.000000;, + 1.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000;-1.000000;, + 1.000000;-1.000000;, + 1.000000;-1.000000;, + 0.999999; 1.000000;, + 0.000000; 1.000000;, + 0.000000;-1.000000;, + 2.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 2.000000; 0.000000;, + 1.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 1.000000; 0.000000;, + 2.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000001;, + 2.000000; 0.000000;, + 1.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 1.000000; 0.000000;, + 7.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 7.000000; 0.000000;, + 7.000000; 0.000000;, + 7.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 1.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 1.000000; 0.000000;, + 7.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 7.000000; 0.000000;, + 1.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 1.000000; 0.000000;, + 6.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 6.000000; 0.000000;, + 1.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 1.000000; 0.000000;, + 7.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 7.000000; 0.000000;, + 1.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 1.000000; 0.000000;, + 7.000000; 1.000000;, + 0.000000; 1.000000;, + 0.000000; 0.000000;, + 7.000000; 0.000000;; + } // End of Cube_000 UV coordinates + MeshMaterialList { // Cube_000 material list + 1; + 60; + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0;; + Material Material { + 0.640000; 0.640000; 0.640000; 1.000000;; + 96.078431; + 0.500000; 0.500000; 0.500000;; + 0.000000; 0.000000; 0.000000;; + TextureFilename {"default_wood.png";} + } + } // End of Cube_000 material list + } // End of Cube_000 mesh + } // End of Cube_000 +} // End of Root diff --git a/mods/boats/textures/boats_inventory.png b/mods/boats/textures/boats_inventory.png new file mode 100644 index 0000000000000000000000000000000000000000..f9d082e31625c099490403a56906e922e2ea9e72 GIT binary patch literal 851 zcmV-Z1FZasP)<h;3K|Lk000e1NJLTq001BW001Be0{{R3M5Kzw0003;P)t-s0000` zNIpP7KV48kQAs~UK|V!7KSV-5U`s8CZAe#2J4Zu4K|nx`Z$G1dOkqqfTuCl@U^`$; zFlkdZbX+`lU_VnvHhE%0UQRk$Ogv0OIZsABR!l-yL@9%3JCbundSN=2c1MqJL!f?4 zmUc&oYd>>bI*)Nhm3B#3M=*L}JA!9HRz@*?WkF_AHc>+{j&Vqga7ao&Fo0-9c3?qe zR6TE8K~_mQd16INLponkKt(}5WKJ!rg-)P-N|<*>n|VftYCWQVN|tp)lXF9CR4=E3 zOr(KKj&DGUY(02gHk*4$o_j}wXFGsoI(Az!X;LqbaYBP;IB-`nU`i^CZ9s@>J9}X` zfn+vxTQz)OGkIP!b6GQIP%D~uM3QnrjBPxHXgYjiIcifdYEmsuJRy~ILX>krh-o=* zRxVvgDOf}&RYE14TQCv;002C6QchC<GYCE`91{-olUf!7_VDcC;Mc~prH_e+V_Qfe z_weoO>F4C!)z#F_%)z?4wzjROrk<RZfO&UpP)Q*FJ{M;I00DnVL_t(I%iWSiSAt;> zg#{I`ySuwv-~76p?lSrRYdN5Rg6?&ebLY%6bI<Mir`3Ds`&GUfu|}qQf0F%kW42A> z-nq};QSUzDun5`WTPSq6&@T6!4T~zlRFQC4DK5=Fe3b*&Ya)cAoQkrdfMie}9i0xe zz~?6l6eFw~7^$inDe-2?0((6T_%UzsiV=4?0YXMn^bDJenO^0@Ux!aE$C4=nlr4i( z(PP4u1SpW_7tagT{`IYM^0Q2Yu*Js<R4JL1Q$;50#1i~?ptfH?tcEa=6gTa?0yiF| zQaDVsr`UwAPS|A-!%{us@Z~oE0B<H09YbNOKlphf(U2w^$ux)>)!RYZ%-d*VW}xw7 zaApN-Y~D;pq@3fvR?>;w(8Xe_NsBv}aFJ|=eSC6WN`O!7e>1udibU2qhRMiIzEB)* zz?%b_L?<UV8HUZ;tFsMwa{zHPIyZPb49U<`r?_0&`gVVyYT4<*ea9SJjeV>gY|lx( dAME<u^$xT;R#x)8%kTgI002ovPDHLkV1m|QW{3a) literal 0 HcmV?d00001 diff --git a/mods/boats/textures/boats_wield.png b/mods/boats/textures/boats_wield.png new file mode 100644 index 0000000000000000000000000000000000000000..f998b5bb9ddd75c680ad0faddb7934b4198879bd GIT binary patch literal 546 zcmV+-0^R+IP)<h;3K|Lk000e1NJLTq001BW001Be0{{R3M5Kzw0001-P)t-s0001= zdq-$dFP(Wtc3d-nWj1(UH>QD2kZ(bZYdv#XGG|aNV@)bxN++y^OPh8>jBr72S2Jx@ zEq`V`bXzl5Ml)+vF{gq~lypUiY(0~3JcMdHePla>X*qgeIeTF;sDn>~YCw8oK3YX8 zrGQMLeMpvbK#FcWQA99aNi0-BCX#bOh-W%uPB2P9FlkXKY*si?Jt3KPNPu87y7d!z z00001bW%=J06^y0W&i*IG)Y83R5;7+kXv?xAQVLd0)l9aK=G|HzG95cYyNX9w)v3N zA++~<uXE4YyZ_r<)f8lDCw*#?<j{~vFYV>>xdBdTSqmSkCILNo9`d~K_;lU?lIGZh zQFU<Q{SkzY6Eej=wh1h+e*kwM8zAl|v4N4j3_wN$m;`WiXB)U9bqm_oS4EyOTu8=H zV3oXAxYEJIm1LBaGN+W-z-bQWBKj`*enFA{e&Hm~u6Nz+inJzdEx7`n0k$(6dc~ez z6S}<%91!=T@~x7!SsC!CNNJYMNit9ZEm4bruzg%6C~gA1a9xYw@z|Cm*HS9(8xuGU zfeSKh0&P)gj^M&IlB>*qD3P!_$ZW(2`cRN^UHThnhBcH6gwu5h7)qtBnMH~{9t1b9 k#*!tWkz&lBcYo-<03BBywb>I+MgRZ+07*qoM6N<$f=^K0k^lez literal 0 HcmV?d00001 diff --git a/mods/boats/textures/rowboat_inventory.png b/mods/boats/textures/rowboat_inventory.png new file mode 100644 index 0000000000000000000000000000000000000000..086bb92bc2b3f0a03463ff5474bf52dc75dbf760 GIT binary patch literal 444 zcmV;t0Ym<YP)<h;3K|Lk000e1NJLTq001BW001Be0{{R3M5Kzw0000pP)t-s0000= zE)P~V6JtLab4V0$NFIJuC4o~Pj9DOwTPc=gFrQ>EoM$eeXDFv@CZ%pQsBka|C;0FH z0004WQchC<K<3zH0003uNkl<Z7#YpMTUHoB2n9ff9-yIl-2JaMqcO%4jo(($Plcxc zIRG?)0exxEsY@&h82Tj92wBW>t0yp^kFpwRvR;Xp=b(b#6;Q4sa+@-*C32f*(whM~ z^cFGSx~^-zkVMmO)jcK;-!6Pz7q7Ln8guAz0ECK&?yZZjYsq2>pwDTdobFV4xQ8xg zmRm%pyG{Xg3KJ?K>f3~wmp&YgNi>Kk)8%2?buqJ=sVC4U8=yxaUBttLnZ?XCrhCo- z=tT~&ZM!aJ7IXIiP-hzSsxobf3iGwpOnuOurvQ3WHM$mGEcaH8YTz6+{V@PKmDy@s zW6%|7(7T>#01+5eWMiVx^jD*1(A#1vZRg2u&`0Q=%)RrmcNReZ0=jZ%b?(dteFjwS m$jZt9eQheUBI#R6Kh!S(O%kS6$54g<0000<MNUMnLSTZB-L;ee literal 0 HcmV?d00001 diff --git a/mods/boats/textures/rowboat_wield.png b/mods/boats/textures/rowboat_wield.png new file mode 100644 index 0000000000000000000000000000000000000000..ea60fd6a68da97a623496b63402817fdb8cff40d GIT binary patch literal 366 zcmV-!0g?WRP)<h;3K|Lk000e1NJLTq001BW001Be0{{R3M5Kzw0000pP)t-s0001B zIu&e19(76`bWJ6CO&En!8i-XTfmbPoSR{~KBcNz8rfVdpY%Z;DGOBVpt8+6>_d0O^ z0004WQchC<K<3zH0002#Nkl<ZI8WtLfpNqj3`>x0a0`j|pSFVVN&3wMU!9HvY%GLX zmVbrsM_lpRqSlM8lUuih;C>y^W8^x{1g;@ch%uBolZ1#E341__<rl5wLFl%RBC&07 z|9Xc*Bid4H<C!(3Bpo=Igc~cm5!O%Q3~Mg>Qt5Lh3<)Mk$$)Bh%h_y<*;TPB{d5VK zrQyPd0Y4@}7gIut1I3)h=kcxrp+p=K;%kCZ28ES7L8L<>YGZJH1ZF#8Yf!V_ufW^t zs4!m=w+q;OOq>a4FK!UpkgMafdl9!*#(TTzssD<d-2No&&saVMKgGlnpan9382|tP M07*qoM6N<$f`;Lf7ytkO literal 0 HcmV?d00001 diff --git a/mods/farming/README.txt b/mods/farming/README.txt new file mode 100644 index 00000000..86a5fe3e --- /dev/null +++ b/mods/farming/README.txt @@ -0,0 +1,150 @@ +Farming Redo Mod +by TenPlus1 + +https://forum.minetest.net/viewtopic.php?id=9019 + +Farming Redo is a simplified version of the built-in farming mod in minetest and comes with wheat, cotton, carrot, cucumber, potato and tomato to start out with which spawn throughout the map... new foods need only be planted on tilled soil so no seeds are required, original wheat and cotton will require seeds which are found inside normal and jungle grass... + +This mod works by adding your new plant to the {growing=1} group and numbering the stages from _1 to as many stages as you like, but the underscore MUST be used only once in the node name to separate plant from stage number e.g. + +"farming:cotton_1" through to "farming:cotton_8" +"farming:wheat_1" through to "farming:wheat_8" +"farming:cucumber_4" through to "farming:cucumber_4" + +Changelog: + +1.23 - Huge code tweak and tidy done and added barley seeds to be found in dry grass, barley can make flour for bread also. +1.22 - Added grape bushes at high climates which can be cultivated into grape vines using trellis (9 sticks). +1.21 - Added auto-refill code for planting crops (thanks crabman77), also fixed a few bugs +1.20b- Tidied code, made api compatible with new 0.4.13 changes and changed to soil texture overlays +1.20 - NEW growing routine added that allows crops to grow while player is away doing other things (thanks prestidigitator) +1.14 - Added Green Beans from Crops mod (thanks sofar), little bushels in the wild but need to be grown using beanpoles crafted with 4 sticks (2 either side) +1.13 - Fixed seed double-placement glitch. Mapgen now uses 0.4.12+ for plant generation +1.12 - Player cannot place seeds in protected area, also growing speeds changed to match defaults +1.11 - Added Straw Bale, streamlined growing abm a little, fixed melon rotation bug with screwdriver +1.10 - Added Blueberry Bush and Blueberry Muffins, also Pumpkin/Melon easier to pick up, added check for unloaded map +1.09 - Corn now uses single nodes instead of 1 ontop of the other, Ethanol recipe is more expensive (requires 5 corn) and some code cleanup. +1.08 - Added Farming Plus compatibility, plus can be removed and no more missing nodes +1.07 - Added Rhubarb and Rhubarb Pie +1.06 - register_hoe and register_plant added for compatibility with default farming mod, although any plants registered will use farming redo to grow +1.05 - Added Raspberry Bushels and Raspberry Smoothie +1.04 - Added Donuts... normal, chocolate and apple... and a few code cleanups and now compatible with jungletree's from MoreTrees mod +1.03 - Bug fixes and more compatibility as drop-in replacement for built-in farming mod +1.02 - Added farming.mod string to help other mods identify which farming mod is running, if it returns "redo" then you're using this one, "" empty is built-in mod +1.01 - Crafting coffee or ethanol returns empty bucket/bottle, also Cocoa spawns a little rarer +1.0 - Added Cocoa which randomly grows on jungle tree's, pods give cocoa beans which can be used to farm more pods on a jungle trunk or make Cookies which have been added (or other treats) +0.9 - Added Pumpkin, Jack 'O Lantern, Pumpkin Slice and Sugar +(a huge thanks to painterly.net for allowing me to use their textures) +0.8 - Added Watermelon and Melon Slice +0.7 - Added Coffee, Coffee Beans, Drinking Cup, Cold and Hot Cup of Coffee +0.6 - Added Corn, Corn on the Cob... Also reworked Abm +0.5 - Added Carrot, Cucumber, Potato (and Baked Potato), Tomato +0.4 - Checks for Protection, also performance changes +0.3 - Added Diamond and Mese hoe +0.2 - Fixed check for wet soil +0.1 - Fixed growing bug +0.0 - Initial release + +License of media (textures): +---------------------------- +Created by PilzAdam (License: WTFPL): + farming_bread.png + farming_soil.png + farming_soil_wet.png + farming_soil_wet_side.png + farming_string.png + +Created by Calinou (License: CC BY-SA): + farming_tool_bronzehoe.png + farming_tool_steelhoe.png + farming_tool_stonehoe.png + farming_tool_woodhoe.png + farming_tool_mesehoe.png + farming_tool_diamondhoe.png + +Created by VanessaE (License: WTFPL): + farming_cotton_seed.png + farming_wheat_seed.png + farming_flour.png + farming_wheat.png + farming_wheat_1.png + farming_wheat_2.png + farming_wheat_3.png + farming_wheat_4.png + farming_wheat_5.png + farming_wheat_5.png + farming_wheat_7.png + farming_wheat_8.png + farming_cotton_1.png + farming_cotton_2.png + farming_cotton_3.png + farming_cotton_4.png + farming_cotton_5.png + farming_cotton_6.png + farming_cotton_7.png + farming_cotton_8.png + +Created by Doc (License: WTFPL): + farming_cucumber.png + farming_cucumber_1.png + farming_cucumber_2.png + farming_cucumber_3.png + farming_cucumber_4.png + farming_potato.png + farming_potato_1.png + farming_potato_2.png + farming_potato_3.png + farming_potato_4.png + farming_raspberries.png + farming_raspberry_1.png + farming_raspberry_2.png + farming_raspberry_3.png + farming_raspberry_4.png + +Created by Gambit: + default_junglegrass.png + farming_carrot.png + farming_carrot_1.png + farming_carrot_2.png + farming_carrot_3.png + farming_carrot_4.png + farming_carrot_5.png + farming_carrot_6.png + farming_carrot_7.png + farming_carrot_8.png + +Created by JoseTheCrafter and edited by TenPlus1: + farming_tomato.png + farming_tomato_1.png + farming_tomato_2.png + farming_tomato_3.png + farming_tomato_4.png + farming_tomato_5.png + farming_tomato_6.png + farming_tomato_7.png + farming_tomato_8.png + +Created by GeMinecraft and edited by TenPlus1: + farming_corn.png + farming_corn_cob.png + farming_corn_1.png + farming_corn_2.png + farming_corn_3.png + farming_corn_4.png + farming_corn_5.png + farming_corn_6.png + farming_corn_7.png + farming_corn_8.png + +Created by TenPlus1 + farming_cocoa_1.png + farming_cocoa_2.png + farming_cocoa_3.png + farming_cocoa_beans.png + farming_cookie.png + farming_raspberry_smoothie.png + farming_rhubarb_1.png + farming_rhubarb_2.png + farming_rhubarb_3.png + farming_rhubarb.png + farming_rhubarb_pie.png \ No newline at end of file diff --git a/mods/farming/banana.lua b/mods/farming/banana.lua new file mode 100644 index 00000000..492d1cf7 --- /dev/null +++ b/mods/farming/banana.lua @@ -0,0 +1,70 @@ +minetest.register_node("farming:banana_sapling", { + description = "Banana Tree Sapling", + drawtype = "plantlike", + tiles = {"farming_banana_sapling.png"}, + inventory_image = "farming_banana_sapling.png", + wield_image = "farming_banana_sapling.png", + paramtype = "light", + walkable = false, + selection_box = { + type = "fixed", + fixed = {-0.3, -0.5, -0.3, 0.3, 0.35, 0.3} + }, + groups = {dig_immediate=3,flammable=2}, + sounds = default.node_sound_defaults(), +}) + +minetest.register_node("farming:banana_leaves", { + drawtype = "allfaces_optional", + tiles = {"farming_banana_leaves.png"}, + paramtype = "light", + groups = {snappy=3, leafdecay=3, flammable=2, not_in_creative_inventory=1}, + drop = { + max_items = 1, + items = { + { + items = {'farming:banana_sapling'}, + rarity = 20, + }, + { + items = {'farming:banana_leaves'}, + } + } +}, + sounds = default.node_sound_leaves_defaults(), +}) + +minetest.register_abm({ + nodenames = {"farming:banana_sapling"}, + interval = 60, + chance = 20, + action = function(pos, node) + farming.generate_tree(pos, "default:tree", "farming:banana_leaves", {"default:dirt", "default:dirt_with_grass"}, {["farming:banana"]=20}) + end +}) + +minetest.register_on_generated(function(minp, maxp, blockseed) + if math.random(1, 100) > 5 then + return + end + local tmp = {x=(maxp.x-minp.x)/2+minp.x, y=(maxp.y-minp.y)/2+minp.y, z=(maxp.z-minp.z)/2+minp.z} + local pos = minetest.find_node_near(tmp, maxp.x-minp.x, {"default:dirt_with_grass"}) + if pos ~= nil then + farming.generate_tree({x=pos.x, y=pos.y+1, z=pos.z}, "default:tree", "farming:banana_leaves", {"default:dirt", "default:dirt_with_grass"}, {["farming:banana"]=10}) + end +end) + +minetest.register_node("farming:banana", { + description = "Banana", + tiles = {"farming_banana.png"}, + inventory_image = "farming_banana.png", + wield_image = "farming_banana.png", + drawtype = "torchlike", + paramtype = "light", + sunlight_propagates = true, + walkable = false, + groups = {fleshy=3,dig_immediate=3,flammable=2,leafdecay=3,leafdecay_drop=1}, + sounds = default.node_sound_defaults(), + + on_use = minetest.item_eat(6), +}) diff --git a/mods/farming/barley.lua b/mods/farming/barley.lua new file mode 100644 index 00000000..d69b0bad --- /dev/null +++ b/mods/farming/barley.lua @@ -0,0 +1,96 @@ + +-- barley seeds +minetest.register_node("farming:seed_barley", { + description = "Barley Seed", + tiles = {"farming_barley_seed.png"}, + inventory_image = "farming_barley_seed.png", + wield_image = "farming_barley_seed.png", + drawtype = "signlike", + groups = {seed = 1, snappy = 3, attached_node = 1}, + paramtype = "light", + paramtype2 = "wallmounted", + walkable = false, + sunlight_propagates = true, + selection_box = farming.select, + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:barley_1") + end, +}) + +-- harvested barley +minetest.register_craftitem("farming:barley", { + description = "barley", + inventory_image = "farming_barley.png", +}) + +-- flour +minetest.register_craft({ + type = "shapeless", + output = "farming:flour", + recipe = {"farming:barley", "farming:barley", "farming:barley", "farming:barley"} +}) + +-- barley definition +local crop_def = { + drawtype = "plantlike", + tiles = {"farming_barley_1.png"}, + paramtype = "light", + sunlight_propagates = true, + walkable = false, + buildable_to = true, + drop = "", + selection_box = farming.select, + groups = { + snappy = 3, flammable = 2, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + sounds = default.node_sound_leaves_defaults() +} + +-- stage 1 +minetest.register_node("farming:barley_1", table.copy(crop_def)) + +-- stage 2 +crop_def.tiles = {"farming_barley_2.png"} +minetest.register_node("farming:barley_2", table.copy(crop_def)) + +-- stage 3 +crop_def.tiles = {"farming_barley_3.png"} +minetest.register_node("farming:barley_3", table.copy(crop_def)) + +-- stage 4 +crop_def.tiles = {"farming_barley_4.png"} +minetest.register_node("farming:barley_4", table.copy(crop_def)) + +-- stage 5 +crop_def.tiles = {"farming_barley_5.png"} +crop_def.drop = { + items = { + {items = {'farming:barley'}, rarity = 2}, + {items = {'farming:seed_barley'}, rarity = 2}, + } +} +minetest.register_node("farming:barley_5", table.copy(crop_def)) + +-- stage 6 +crop_def.tiles = {"farming_barley_6.png"} +crop_def.drop = { + items = { + {items = {'farming:barley'}, rarity = 2}, + {items = {'farming:seed_barley'}, rarity = 1}, + } +} +minetest.register_node("farming:barley_6", table.copy(crop_def)) + +-- stage 7 (final) +crop_def.tiles = {"farming_barley_7.png"} +crop_def.groups.growing = 0 +crop_def.drop = { + items = { + {items = {'farming:barley'}, rarity = 1}, + {items = {'farming:barley'}, rarity = 3}, + {items = {'farming:seed_barley'}, rarity = 1}, + {items = {'farming:seed_barley'}, rarity = 3}, + } +} +minetest.register_node("farming:barley_7", table.copy(crop_def)) diff --git a/mods/farming/beanpole.lua b/mods/farming/beanpole.lua new file mode 100644 index 00000000..cda736f9 --- /dev/null +++ b/mods/farming/beanpole.lua @@ -0,0 +1,194 @@ +--[[ + All textures by + (C) Auke Kok <sofar@foo-projects.org> + CC-BY-SA-3.0 +]] + +-- beans +minetest.register_craftitem("farming:beans", { + description = "Green Beans", + inventory_image = "farming_beans.png", + on_use = minetest.item_eat(1), + + on_place = function(itemstack, placer, pointed_thing) + + if minetest.is_protected(pointed_thing.under, placer:get_player_name()) then + return + end + + local nodename = minetest.get_node(pointed_thing.under).name + + if nodename == "farming:beanpole" then + minetest.set_node(pointed_thing.under, {name = "farming:beanpole_1"}) + + minetest.sound_play("default_place_node", {pos = pointed_thing.above, gain = 1.0}) + else + return + end + + if not minetest.setting_getbool("creative_mode") then + + itemstack:take_item() + + -- check for refill + if itemstack:get_count() == 0 then + + minetest.after(0.20, + farming.refill_plant, + placer, + "farming:beans", + placer:get_wield_index() + ) + end + end + + return itemstack + end +}) + +-- beans can be used for green dye +minetest.register_craft({ + output = "dye:green", + recipe = { + {'farming:beans'}, + } +}) + +-- beanpole +minetest.register_node("farming:beanpole", { + description = "Bean Pole (place on soil before planting beans)", + drawtype = "plantlike", + tiles = {"farming_beanpole.png"}, + inventory_image = "farming_beanpole.png", + visual_scale = 1.45, + paramtype = "light", + walkable = false, + buildable_to = true, + sunlight_propagates = true, + drop = "farming:beanpole", + selection_box = farming.select, + groups = {snappy = 3, flammable = 2, attached_node = 1}, + sounds = default.node_sound_leaves_defaults(), + + on_place = function(itemstack, placer, pointed_thing) + + if minetest.is_protected(pointed_thing.under, placer:get_player_name()) then + return + end + + local nodename = minetest.get_node(pointed_thing.under).name + + if minetest.get_item_group(nodename, "soil") < 2 then + return + end + + local top = { + x = pointed_thing.above.x, + y = pointed_thing.above.y + 1, + z = pointed_thing.above.z + } + + nodename = minetest.get_node(top).name + + if nodename ~= "air" then + return + end + + minetest.set_node(pointed_thing.above, {name = "farming:beanpole"}) + + if not minetest.setting_getbool("creative_mode") then + itemstack:take_item() + end + + return itemstack + end +}) + +minetest.register_craft({ + output = "farming:beanpole", + recipe = { + {'', '', ''}, + {'default:stick', '', 'default:stick'}, + {'default:stick', '', 'default:stick'}, + } +}) + +minetest.register_craft({ + type = "fuel", + recipe = "farming:beanpole", + burntime = 10, +}) + +-- green bean definition +local crop_def = { + drawtype = "plantlike", + tiles = {"farming_beanpole_1.png"}, + visual_scale = 1.45, + paramtype = "light", + walkable = false, + buildable_to = true, + sunlight_propagates = true, + drop = { + items = { + {items = {'farming:beanpole'}, rarity = 1}, + } + }, + selection_box = farming.select, + groups = { + snappy = 3, flammable = 3, not_in_creative_inventory = 1, + attached_node = 1, growing = 1 + }, + sounds = default.node_sound_leaves_defaults() +} + +-- stage 1 +minetest.register_node("farming:beanpole_1", table.copy(crop_def)) + +-- stage2 +crop_def.tiles = {"farming_beanpole_2.png"} +minetest.register_node("farming:beanpole_2", table.copy(crop_def)) + +-- stage 3 +crop_def.tiles = {"farming_beanpole_3.png"} +minetest.register_node("farming:beanpole_3", table.copy(crop_def)) + +-- stage 4 +crop_def.tiles = {"farming_beanpole_4.png"} +minetest.register_node("farming:beanpole_4", table.copy(crop_def)) + +-- stage 5 (final) +crop_def.tiles = {"farming_beanpole_5.png"} +crop_def.groups.growing = 0 +crop_def.drop = { + items = { + {items = {'farming:beanpole'}, rarity = 1}, + {items = {'farming:beans 3'}, rarity = 1}, + {items = {'farming:beans 2'}, rarity = 2}, + {items = {'farming:beans 2'}, rarity = 3}, + } +} +minetest.register_node("farming:beanpole_5", table.copy(crop_def)) + +-- wild green bean bush (this is what you find on the map) +minetest.register_node("farming:beanbush", { + drawtype = "plantlike", + tiles = {"farming_beanbush.png"}, + paramtype = "light", + waving = 1, + walkable = false, + buildable_to = true, + sunlight_propagates = true, + drop = { + items = { + {items = {'farming:beans 1'}, rarity = 1}, + {items = {'farming:beans 1'}, rarity = 2}, + {items = {'farming:beans 1'}, rarity = 3}, + } + }, + selection_box = farming.select, + groups = { + snappy = 3, flammable = 2, plant = 1, attached_node = 1, + not_in_creative_inventory=1 + }, + sounds = default.node_sound_leaves_defaults(), +}) diff --git a/mods/farming/blueberry.lua b/mods/farming/blueberry.lua new file mode 100644 index 00000000..6a29ba97 --- /dev/null +++ b/mods/farming/blueberry.lua @@ -0,0 +1,65 @@ + +-- blueberries +minetest.register_craftitem("farming:blueberries", { + description = "Blueberries", + inventory_image = "farming_blueberries.png", + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:blueberry_1") + end, + on_use = minetest.item_eat(1), +}) + +-- blueberry muffin (thanks to sosogirl123 @ deviantart.com for muffin image) + +minetest.register_craftitem("farming:muffin_blueberry", { + description = "Blueberry Muffin", + inventory_image = "farming_blueberry_muffin.png", + on_use = minetest.item_eat(2), +}) + +minetest.register_craft({ + output = "farming:muffin_blueberry 2", + recipe = { + {"farming:blueberries", "farming:bread", "farming:blueberries"}, + } +}) + +-- blueberry definition +local crop_def = { + drawtype = "plantlike", + tiles = {"farming_blueberry_1.png"}, + paramtype = "light", + sunlight_propagates = true, + walkable = false, + buildable_to = true, + drop = "", + selection_box = farming.select, + groups = { + snappy = 3, flammable = 2, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + sounds = default.node_sound_leaves_defaults() +} + +-- stage 1 +minetest.register_node("farming:blueberry_1", table.copy(crop_def)) + +-- stage 2 +crop_def.tiles = {"farming_blueberry_2.png"} +minetest.register_node("farming:blueberry_2", table.copy(crop_def)) + +-- stage 3 +crop_def.tiles = {"farming_blueberry_3.png"} +minetest.register_node("farming:blueberry_3", table.copy(crop_def)) + +-- stage 4 (final) +crop_def.tiles = {"farming_blueberry_4.png"} +crop_def.groups.growing = 0 +crop_def.drop = { + items = { + {items = {'farming:blueberries 2'}, rarity = 1}, + {items = {'farming:blueberries'}, rarity = 2}, + {items = {'farming:blueberries'}, rarity = 3}, + } +} +minetest.register_node("farming:blueberry_4", table.copy(crop_def)) diff --git a/mods/farming/carrot.lua b/mods/farming/carrot.lua new file mode 100644 index 00000000..90c1b918 --- /dev/null +++ b/mods/farming/carrot.lua @@ -0,0 +1,103 @@ + +--[[ + Original textures from PixelBox texture pack + https://forum.minetest.net/viewtopic.php?id=4990 +]] + +minetest.register_craftitem("farming:carrot_seed", { + description = "Carrot Seeds", + inventory_image = "farming_carrot_seed.png", + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:carrot_1") + end +}) + +-- carrot +minetest.register_craftitem("farming:carrot", { + description = "Carrot", + inventory_image = "farming_carrot.png", + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:carrot_1") + end, + on_use = minetest.item_eat(4), +}) + +-- golden carrot +minetest.register_craftitem("farming:carrot_gold", { + description = "Golden Carrot", + inventory_image = "farming_carrot_gold.png", + on_use = minetest.item_eat(6), +}) + +minetest.register_craft({ + output = "farming:carrot_gold", + recipe = { + {"", "default:gold_lump", ""}, + {"default:gold_lump", "farming:carrot", "default:gold_lump"}, + {"", "default:gold_lump", ""}, + } +}) + +-- carrot definition +local crop_def = { + drawtype = "plantlike", + tiles = {"farming_carrot_1.png"}, + paramtype = "light", + sunlight_propagates = true, + walkable = false, + buildable_to = true, + drop = "", + selection_box = farming.select, + groups = { + snappy = 3, flammable = 2, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + sounds = default.node_sound_leaves_defaults() +} + + +-- stage 1 +minetest.register_node("farming:carrot_1", table.copy(crop_def)) + +-- stage 2 +crop_def.tiles = {"farming_carrot_2.png"} +minetest.register_node("farming:carrot_2", table.copy(crop_def)) + +-- stage 3 +crop_def.tiles = {"farming_carrot_3.png"} +minetest.register_node("farming:carrot_3", table.copy(crop_def)) + +-- stage 4 +crop_def.tiles = {"farming_carrot_4.png"} +minetest.register_node("farming:carrot_4", table.copy(crop_def)) + +-- stage 5 +crop_def.tiles = {"farming_carrot_5.png"} +minetest.register_node("farming:carrot_5", table.copy(crop_def)) + +-- stage 6 +crop_def.tiles = {"farming_carrot_6.png"} +minetest.register_node("farming:carrot_6", table.copy(crop_def)) + +-- stage 7 +crop_def.tiles = {"farming_carrot_7.png"} +crop_def.drop = { + items = { + {items = {'farming:carrot'}, rarity = 1}, + {items = {'farming:carrot_seed'}, rarity = 1}, + {items = {'farming:carrot 2'}, rarity = 3}, + } +} +minetest.register_node("farming:carrot_7", table.copy(crop_def)) + +-- stage 8 (final) +crop_def.tiles = {"farming_carrot_8.png"} +crop_def.groups.growing = 0 +crop_def.drop = { + items = { + {items = {'farming:carrot 2'}, rarity = 1}, + {items = {'farming:carrot_seed'}, rarity = 1}, + {items = {'farming:carrot 3'}, rarity = 2}, + } +} +minetest.register_node("farming:carrot_8", table.copy(crop_def)) diff --git a/mods/farming/cocoa.lua b/mods/farming/cocoa.lua new file mode 100644 index 00000000..a11a6110 --- /dev/null +++ b/mods/farming/cocoa.lua @@ -0,0 +1,172 @@ + +-- place cocoa +function place_cocoa(itemstack, placer, pointed_thing, plantname) + + local pt = pointed_thing + + -- check if pointing at a node + if not pt or pt.type ~= "node" then + return + end + + local under = minetest.get_node(pt.under) + + -- return if any of the nodes are not registered + if not minetest.registered_nodes[under.name] then + return + end + + -- check if pointing at jungletree + if under.name ~= "default:jungletree" + or minetest.get_node(pt.above).name ~= "air" then + return + end + + -- add the node and remove 1 item from the itemstack + minetest.set_node(pt.above, {name = plantname}) + + minetest.sound_play("default_place_node", {pos = pt.above, gain = 1.0}) + + if not minetest.setting_getbool("creative_mode") then + + itemstack:take_item() + + -- check for refill + if itemstack:get_count() == 0 then + + minetest.after(0.20, + farming.refill_plant, + placer, + "farming:cocoa_beans", + placer:get_wield_index() + ) + end + end + + return itemstack +end + +-- cocoa beans +minetest.register_craftitem("farming:cocoa_beans", { + description = "Cocoa Beans", + inventory_image = "farming_cocoa_beans.png", + on_place = function(itemstack, placer, pointed_thing) + return place_cocoa(itemstack, placer, pointed_thing, "farming:cocoa_1") + end, +}) + +minetest.register_craft( { + output = "dye:brown 2", + recipe = { + { "farming:cocoa_beans" }, + } +}) + +-- chocolate cookie +minetest.register_craftitem("farming:cookie", { + description = "Cookie", + inventory_image = "farming_cookie.png", + on_use = minetest.item_eat(2), +}) + +minetest.register_craft( { + output = "farming:cookie 8", + recipe = { + { "farming:wheat", "farming:cocoa_beans", "farming:wheat" }, + } +}) + +-- bar of dark chocolate (thanks to Ice Pandora for her deviantart.com chocolate tutorial) +minetest.register_craftitem("farming:chocolate_dark", { + description = "Bar of Dark Chocolate", + inventory_image = "farming_chocolate_dark.png", + on_use = minetest.item_eat(3), +}) + +minetest.register_craft( { + output = "farming:chocolate_dark", + recipe = { + { "farming:cocoa_beans", "farming:cocoa_beans", "farming:cocoa_beans" }, + } +}) + +-- cocoa definition +local crop_def = { + drawtype = "plantlike", + tiles = {"farming_cocoa_1.png"}, + paramtype = "light", + walkable = true, + drop = { + items = { + {items = {'farming:cocoa_beans 1'}, rarity = 2}, + } + }, + selection_box = { + type = "fixed", + fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3} + }, + groups = { + snappy = 3, flammable = 2, plant = 1, growing = 1, + not_in_creative_inventory=1, leafdecay = 1, leafdecay_drop = 1 + }, + sounds = default.node_sound_leaves_defaults() +} + +-- stage 1 +minetest.register_node("farming:cocoa_1", table.copy(crop_def)) + +-- stage2 +crop_def.tiles = {"farming_cocoa_2.png"} +crop_def.drop = { + items = { + {items = {'farming:cocoa_beans 1'}, rarity = 1}, + } +} +minetest.register_node("farming:cocoa_2", table.copy(crop_def)) + +-- stage 3 (final) +crop_def.tiles = {"farming_cocoa_3.png"} +crop_def.groups.growing = 0 +crop_def.drop = { + items = { + {items = {'farming:cocoa_beans 2'}, rarity = 1}, + {items = {'farming:cocoa_beans 1'}, rarity = 2}, + } +} +minetest.register_node("farming:cocoa_3", table.copy(crop_def)) + +-- add random cocoa pods to jungle tree trunks +minetest.register_abm({ + nodenames = {"default:jungletree"}, + neighbors = {"default:jungleleaves", "moretrees:jungletree_leaves_green"}, + interval = 8, + chance = 80, + catch_up = false, + action = function(pos, node) + + local dir = math.random(1, 50) + + if dir == 1 then + pos.x = pos.x + 1 + elseif dir == 2 then + pos.x = pos.x - 1 + elseif dir == 3 then + pos.z = pos.z + 1 + elseif dir == 4 then + pos.z = pos.z -1 + else return + end + + local nodename = minetest.get_node(pos).name + + if nodename == "air" + and minetest.get_node_light(pos) > 12 then + + --print ("Cocoa Pod added at " .. minetest.pos_to_string(pos)) + + minetest.set_node(pos, { + name = "farming:cocoa_" .. tostring(math.random(1, 3)) + }) + end + end, +}) diff --git a/mods/farming/coffee.lua b/mods/farming/coffee.lua new file mode 100644 index 00000000..c9854e6e --- /dev/null +++ b/mods/farming/coffee.lua @@ -0,0 +1,130 @@ + +-- coffee +minetest.register_craftitem("farming:coffee_beans", { + description = "Coffee Beans", + inventory_image = "farming_coffee_beans.png", + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:coffee_1") + end, +}) + + +-- drinking cup +minetest.register_node("farming:drinking_cup", { + description = "Drinking Cup (empty)", + drawtype = "plantlike", + tiles = {"vessels_drinking_cup.png"}, + inventory_image = "vessels_drinking_cup.png", + wield_image = "vessels_drinking_cup.png", + paramtype = "light", + walkable = false, + selection_box = { + type = "fixed", + fixed = {-0.25, -0.5, -0.25, 0.25, 0.25, 0.25} + }, + groups = {vessel = 1, dig_immediate = 3, attached_node = 1}, + sounds = default.node_sound_glass_defaults(), +}) + +minetest.register_craft( { + output = "farming:drinking_cup 5", + recipe = { + { "default:glass", "", "default:glass" }, + {"", "default:glass",""}, + } +}) + +-- cold cup of coffee +minetest.register_node("farming:coffee_cup", { + description = "Cold Cup of Coffee", + drawtype = "plantlike", + tiles = {"farming_coffee_cup.png"}, + inventory_image = "farming_coffee_cup.png", + wield_image = "farming_coffee_cup.png", + paramtype = "light", + walkable = false, + selection_box = { + type = "fixed", + fixed = {-0.25, -0.5, -0.25, 0.25, 0.25, 0.25} + }, + groups = {vessel = 1, dig_immediate = 3, attached_node = 1}, + on_use = minetest.item_eat(2, "farming:drinking_cup"), + sounds = default.node_sound_glass_defaults(), +}) + +minetest.register_craft( { + output = "farming:coffee_cup", + recipe = { + {"farming:drinking_cup", "farming:coffee_beans","bucket:bucket_water"}, + }, + replacements = {{"bucket:bucket_water", "bucket:bucket_empty"}} +}) + +minetest.register_craft({ + type = "cooking", + cooktime = 5, + output = "farming:coffee_cup_hot", + recipe = "farming:coffee_cup" +}) + +-- hot cup of coffee +minetest.register_node("farming:coffee_cup_hot", { + description = "Hot Cup of Coffee", + drawtype = "plantlike", + tiles = {"farming_coffee_cup_hot.png"}, + inventory_image = "farming_coffee_cup_hot.png", + wield_image = "farming_coffee_cup_hot.png", + paramtype = "light", + walkable = false, + selection_box = { + type = "fixed", + fixed = {-0.25, -0.5, -0.25, 0.25, 0.25, 0.25} + }, + groups = {vessel = 1, dig_immediate = 3, attached_node = 1}, + on_use = minetest.item_eat(3, "farming:drinking_cup"), + sounds = default.node_sound_glass_defaults(), +}) + +-- coffee definition +local crop_def = { + drawtype = "plantlike", + tiles = {"farming_coffee_1.png"}, + paramtype = "light", + sunlight_propagates = true, + walkable = false, + buildable_to = true, + drop = "", + selection_box = farming.select, + groups = { + snappy = 3, flammable = 2, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + sounds = default.node_sound_leaves_defaults() +} + +-- stage 1 +minetest.register_node("farming:coffee_1", table.copy(crop_def)) + +-- stage 2 +crop_def.tiles = {"farming_coffee_2.png"} +minetest.register_node("farming:coffee_2", table.copy(crop_def)) + +-- stage 3 +crop_def.tiles = {"farming_coffee_3.png"} +minetest.register_node("farming:coffee_3", table.copy(crop_def)) + +-- stage 4 +crop_def.tiles = {"farming_coffee_4.png"} +minetest.register_node("farming:coffee_4", table.copy(crop_def)) + +-- stage 5 (final) +crop_def.tiles = {"farming_coffee_5.png"} +crop_def.groups.growing = 0 +crop_def.drop = { + items = { + {items = {'farming:coffee_beans 2'}, rarity = 1}, + {items = {'farming:coffee_beans 2'}, rarity = 2}, + {items = {'farming:coffee_beans 2'}, rarity = 3}, + } +} +minetest.register_node("farming:coffee_5", table.copy(crop_def)) diff --git a/mods/farming/compatibility.lua b/mods/farming/compatibility.lua new file mode 100644 index 00000000..07a53404 --- /dev/null +++ b/mods/farming/compatibility.lua @@ -0,0 +1,78 @@ +-- Banana +minetest.register_alias("farming_plus:banana_sapling", "farming:banana_sapling") +minetest.register_alias("farming_plus:banana_leaves", "farming:banana_leaves") +minetest.register_alias("farming_plus:banana", "farming:banana") + +-- Carrot +minetest.register_alias("farming_plus:carrot_seed", "farming:carrot_seed") +minetest.register_alias("farming_plus:carrot_1", "farming:carrot_1") +minetest.register_alias("farming_plus:carrot_2", "farming:carrot_4") +minetest.register_alias("farming_plus:carrot_3", "farming:carrot_6") +minetest.register_alias("farming_plus:carrot", "farming:carrot_8") +minetest.register_alias("farming_plus:carrot_item", "farming:carrot") + +-- Cocoa +minetest.register_alias("farming_plus:cocoa_sapling", "farming:cocoa_beans") +minetest.register_alias("farming_plus:cocoa_leaves", "default:leaves") +minetest.register_alias("farming_plus:cocoa", "default:apple") +minetest.register_alias("farming_plus:cocoa_bean", "farming:cocoa_beans") + +-- Orange +minetest.register_alias("farming_plus:orange_1", "farming:orange_1") +minetest.register_alias("farming_plus:orange_2", "farming:orange_2") +minetest.register_alias("farming_plus:orange_3", "farming:orange_3") +minetest.register_alias("farming_plus:orange", "farming:orange_4") +minetest.register_alias("farming_plus:orange_8", "farming:orange") +minetest.register_alias("farming_plus:orange_item", "farming:orange_item") +minetest.register_alias("farming_plus:orange_seed", "farming:orange_seed") +minetest.register_alias("farming:orange", "farming:orange_4") + +-- Potato +minetest.register_alias("farming_plus:potato_item", "farming:potato") +minetest.register_alias("farming_plus:potato_1", "farming:potato_1") +minetest.register_alias("farming_plus:potato_2", "farming:potato_2") +minetest.register_alias("farming_plus:potato", "farming:potato_3") +minetest.register_alias("farming_plus:potato_seed", "farming:potato_seed") + +-- Pumpkin +minetest.register_alias("farming:pumpkin_seed", "farming:pumpkin_slice") +minetest.register_alias("farming:pumpkin_face", "farming:pumpkin") +minetest.register_alias("farming:pumpkin_face_light", "farming:jackolantern") +minetest.register_alias("farming:big_pumpkin", "farming:pumpkin") +minetest.register_alias("farming:big_pumpkin_side", "air") +minetest.register_alias("farming:big_pumpkin_corner", "air") +minetest.register_alias("farming:big_pumpkin_top", "air") +minetest.register_alias("farming:pumpkin_flour", "farming:pumpkin_dough") + +-- Rhubarb +minetest.register_alias("farming_plus:rhubarb_seed", "farming:rhubarb_seed") +minetest.register_alias("farming_plus:rhubarb_1", "farming:rhubarb_1") +minetest.register_alias("farming_plus:rhubarb_2", "farming:rhubarb_2") +minetest.register_alias("farming_plus:rhubarb", "farming:rhubarb_3") +minetest.register_alias("farming_plus:rhubarb_item", "farming:rhubarb") + +-- Strawberry +minetest.register_alias("farming_plus:strawberry_item", "farming:strawberry_item") +minetest.register_alias("farming_plus:strawberry_seed", "farming:strawberry_seed") +minetest.register_alias("farming_plus:strawberry_1", "farming:strawberry_1") +minetest.register_alias("farming_plus:strawberry_2", "farming:strawberry_2") +minetest.register_alias("farming_plus:strawberry_3", "farming:strawberry_3") +minetest.register_alias("farming_plus:strawberry", "farming:strawberry_3") +minetest.register_alias("farming:strawberry", "farming:strawberry_item") +minetest.register_alias("farming_plus:strawberry", "farming:strawberry_3") + +-- Raspberry +--minetest.register_alias("farming_plus:raspberry_seed", "farming:raspberry_seed") +--minetest.register_alias("farming_plus:raspberrys", "farming:raspberrys") +--minetest.register_alias("farming_plus:raspberry_seed", "farming:raspberry_seed") + +-- Tomato +minetest.register_alias("farming_plus:tomato_seed", "farming:tomato_seed") +minetest.register_alias("farming_plus:tomato_item", "farming:tomato") +minetest.register_alias("farming_plus:tomato_1", "farming:tomato_2") +minetest.register_alias("farming_plus:tomato_2", "farming:tomato_4") +minetest.register_alias("farming_plus:tomato_3", "farming:tomato_6") +minetest.register_alias("farming_plus:tomato", "farming:tomato_8") + +-- Weed +minetest.register_alias("farming:weed", "default:grass_2") diff --git a/mods/farming/corn.lua b/mods/farming/corn.lua new file mode 100644 index 00000000..43707575 --- /dev/null +++ b/mods/farming/corn.lua @@ -0,0 +1,114 @@ + +--[[ + Original textures from GeMinecraft + http://www.minecraftforum.net/forums/mapping-and-modding/minecraft-mods/wip-mods/1440575-1-2-5-generation-minecraft-beta-1-2-farming-and +]] + +-- corn +minetest.register_craftitem("farming:corn", { + description = "Corn", + inventory_image = "farming_corn.png", + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:corn_1") + end, + on_use = minetest.item_eat(3), +}) + +-- corn on the cob (texture by TenPlus1) +minetest.register_craftitem("farming:corn_cob", { + description = "Corn on the Cob", + inventory_image = "farming_corn_cob.png", + on_use = minetest.item_eat(5), +}) + +minetest.register_craft({ + type = "cooking", + cooktime = 10, + output = "farming:corn_cob", + recipe = "farming:corn" +}) + +-- ethanol (thanks to JKMurray for this idea) +minetest.register_craftitem("farming:bottle_ethanol", { + description = "Bottle of Ethanol", + inventory_image = "farming_bottle_ethanol.png", +}) + +minetest.register_craft( { + output = "farming:bottle_ethanol", + recipe = { + { "vessels:glass_bottle", "farming:corn", "farming:corn"}, + { "farming:corn", "farming:corn", "farming:corn"}, + } +}) + +minetest.register_craft({ + type = "fuel", + recipe = "farming:bottle_ethanol", + burntime = 240, + replacements = {{ "farming:bottle_ethanol", "vessels:glass_bottle"}} +}) + +-- corn definition +local crop_def = { + drawtype = "plantlike", + tiles = {"farming_corn_1.png"}, + paramtype = "light", + sunlight_propagates = true, + walkable = false, + buildable_to = true, + drop = "", + selection_box = farming.select, + groups = { + snappy = 3, flammable = 2, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + sounds = default.node_sound_leaves_defaults() +} + +-- stage 1 +minetest.register_node("farming:corn_1", table.copy(crop_def)) + +-- stage 2 +crop_def.tiles = {"farming_corn_2.png"} +minetest.register_node("farming:corn_2", table.copy(crop_def)) + +-- stage 3 +crop_def.tiles = {"farming_corn_3.png"} +minetest.register_node("farming:corn_3", table.copy(crop_def)) + +-- stage 4 +crop_def.tiles = {"farming_corn_4.png"} +minetest.register_node("farming:corn_4", table.copy(crop_def)) + +-- stage 5 +crop_def.tiles = {"farming_corn_5.png"} +minetest.register_node("farming:corn_5", table.copy(crop_def)) + +-- stage 6 +crop_def.tiles = {"farming_corn_6.png"} +crop_def.visual_scale = 1.45 +minetest.register_node("farming:corn_6", table.copy(crop_def)) + +-- stage 7 +crop_def.tiles = {"farming_corn_7.png"} +crop_def.drop = { + items = { + {items = {'farming:corn'}, rarity = 1}, + {items = {'farming:corn'}, rarity = 2}, + {items = {'farming:corn'}, rarity = 3}, + } +} +minetest.register_node("farming:corn_7", table.copy(crop_def)) + +-- stage 8 (final) +crop_def.tiles = {"farming_corn_8.png"} +crop_def.groups.growing = 0 +crop_def.drop = { + items = { + {items = {'farming:corn 2'}, rarity = 1}, + {items = {'farming:corn 2'}, rarity = 2}, + {items = {'farming:corn 2'}, rarity = 2}, + } +} +minetest.register_node("farming:corn_8", table.copy(crop_def)) diff --git a/mods/farming/cotton.lua b/mods/farming/cotton.lua new file mode 100644 index 00000000..2ddf88e2 --- /dev/null +++ b/mods/farming/cotton.lua @@ -0,0 +1,114 @@ + +-- cotton seeds +minetest.register_node("farming:seed_cotton", { + description = "Cotton Seed", + tiles = {"farming_cotton_seed.png"}, + inventory_image = "farming_cotton_seed.png", + wield_image = "farming_cotton_seed.png", + drawtype = "signlike", + groups = {seed = 1, snappy = 3, attached_node = 1}, + paramtype = "light", + paramtype2 = "wallmounted", + walkable = false, + sunlight_propagates = true, + selection_box = farming.select, + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:cotton_1") + end, +}) + +-- cotton / string + +minetest.register_craftitem("farming:cotton", { + description = "Cotton", + inventory_image = "farming_cotton.png", +}) + +minetest.register_alias("farming:string", "farming:cotton") + +-- cotton to wool +minetest.register_craft({ + output = "wool:white", + recipe = { + {"farming:string", "farming:string"}, + {"farming:string", "farming:string"}, + } +}) + +-- cotton definition +local crop_def = { + drawtype = "plantlike", + tiles = {"farming_cotton_1.png"}, + paramtype = "light", + sunlight_propagates = true, + walkable = false, + buildable_to = true, + drop = "", + selection_box = farming.select, + groups = { + snappy = 3, flammable = 2, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + sounds = default.node_sound_leaves_defaults() +} + +-- stage 1 +minetest.register_node("farming:cotton_1", table.copy(crop_def)) + +-- stage 2 +crop_def.tiles = {"farming_cotton_2.png"} +minetest.register_node("farming:cotton_2", table.copy(crop_def)) + +-- stage 3 +crop_def.tiles = {"farming_cotton_3.png"} +minetest.register_node("farming:cotton_3", table.copy(crop_def)) + +-- stage 4 +crop_def.tiles = {"farming_cotton_4.png"} +minetest.register_node("farming:cotton_4", table.copy(crop_def)) + +-- stage 5 +crop_def.tiles = {"farming_cotton_5.png"} +crop_def.drop = { + items = { + {items = {"farming:seed_cotton"}, rarity = 1}, + } +} +minetest.register_node("farming:cotton_5", table.copy(crop_def)) + +-- stage 6 +crop_def.tiles = {"farming_cotton_6.png"} +crop_def.drop = { + items = { + {items = {"farming:cotton"}, rarity = 1}, + {items = {"farming:cotton"}, rarity = 2}, + } +} +minetest.register_node("farming:cotton_6", table.copy(crop_def)) + +-- stage 7 +crop_def.tiles = {"farming_cotton_7.png"} +crop_def.drop = { + items = { + {items = {"farming:cotton"}, rarity = 1}, + {items = {"farming:cotton"}, rarity = 2}, + {items = {"farming:seed_cotton"}, rarity = 1}, + {items = {"farming:seed_cotton"}, rarity = 2}, + } +} +minetest.register_node("farming:cotton_7", table.copy(crop_def)) + +-- stage 8 (final) +crop_def.tiles = {"farming_cotton_8.png"} +crop_def.groups.growing = 0 +crop_def.drop = { + items = { + {items = {"farming:string"}, rarity = 1}, + {items = {"farming:string"}, rarity = 2}, + {items = {"farming:string"}, rarity = 3}, + {items = {"farming:seed_cotton"}, rarity = 1}, + {items = {"farming:seed_cotton"}, rarity = 2}, + {items = {"farming:seed_cotton"}, rarity = 3}, + } +} +minetest.register_node("farming:cotton_8", table.copy(crop_def)) diff --git a/mods/farming/cucumber.lua b/mods/farming/cucumber.lua new file mode 100644 index 00000000..22e367bc --- /dev/null +++ b/mods/farming/cucumber.lua @@ -0,0 +1,53 @@ + +--[[ + Original textures from DocFarming mod + https://forum.minetest.net/viewtopic.php?id=3948 +]] + +-- cucumber +minetest.register_craftitem("farming:cucumber", { + description = "Cucumber", + inventory_image = "farming_cucumber.png", + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:cucumber_1") + end, + on_use = minetest.item_eat(4), +}) + +-- cucumber definition +local crop_def = { + drawtype = "plantlike", + tiles = {"farming_cucumber_1.png"}, + paramtype = "light", + walkable = false, + buildable_to = true, + drop = "", + selection_box = farming.select, + groups = { + snappy = 3, flammable = 2, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + sounds = default.node_sound_leaves_defaults() +} + +-- stage 1 +minetest.register_node("farming:cucumber_1", table.copy(crop_def)) + +-- stage 2 +crop_def.tiles = {"farming_cucumber_2.png"} +minetest.register_node("farming:cucumber_2", table.copy(crop_def)) + +-- stage 3 +crop_def.tiles = {"farming_cucumber_3.png"} +minetest.register_node("farming:cucumber_3", table.copy(crop_def)) + +-- stage 4 (final) +crop_def.tiles = {"farming_cucumber_4.png"} +crop_def.groups.growing = 0 +crop_def.drop = { + items = { + {items = {'farming:cucumber'}, rarity = 1}, + {items = {'farming:cucumber 2'}, rarity = 2}, + } +} +minetest.register_node("farming:cucumber_4", table.copy(crop_def)) diff --git a/mods/farming/depends.txt b/mods/farming/depends.txt new file mode 100644 index 00000000..be420a35 --- /dev/null +++ b/mods/farming/depends.txt @@ -0,0 +1,2 @@ +default +wool \ No newline at end of file diff --git a/mods/farming/description.txt b/mods/farming/description.txt new file mode 100644 index 00000000..58bdc810 --- /dev/null +++ b/mods/farming/description.txt @@ -0,0 +1 @@ +Adds many plants and food to Minetest \ No newline at end of file diff --git a/mods/farming/donut.lua b/mods/farming/donut.lua new file mode 100644 index 00000000..1b49848b --- /dev/null +++ b/mods/farming/donut.lua @@ -0,0 +1,45 @@ +-- Donut (thanks to Bockwurst for making the donut images) +minetest.register_craftitem("farming:donut", { + description = "Donut", + inventory_image = "farming_donut.png", + on_use = minetest.item_eat(4), +}) + +minetest.register_craft({ + output = "farming:donut 3", + recipe = { + {'', 'farming:wheat', ''}, + {'farming:wheat', '', 'farming:wheat'}, + {'', 'farming:wheat', ''}, + } +}) + +-- Chocolate Donut +minetest.register_craftitem("farming:donut_chocolate", { + description = "Chocolate Donut", + inventory_image = "farming_donut_chocolate.png", + on_use = minetest.item_eat(6), +}) + +minetest.register_craft({ + output = "farming:donut_chocolate", + recipe = { + {'farming:cocoa_beans'}, + {'farming:donut'}, + } +}) + +-- Apple Donut +minetest.register_craftitem("farming:donut_apple", { + description = "Apple Donut", + inventory_image = "farming_donut_apple.png", + on_use = minetest.item_eat(6), +}) + +minetest.register_craft({ + output = "farming:donut_apple", + recipe = { + {'default:apple'}, + {'farming:donut'}, + } +}) \ No newline at end of file diff --git a/mods/farming/grapes.lua b/mods/farming/grapes.lua new file mode 100644 index 00000000..9c93016b --- /dev/null +++ b/mods/farming/grapes.lua @@ -0,0 +1,201 @@ + +-- grapes +minetest.register_craftitem("farming:grapes", { + description = "Grapes", + inventory_image = "farming_grapes.png", + on_use = minetest.item_eat(2), + + on_place = function(itemstack, placer, pointed_thing) + + if minetest.is_protected(pointed_thing.under, placer:get_player_name()) then + return + end + + local nodename = minetest.get_node(pointed_thing.under).name + + if nodename == "farming:trellis" then + minetest.set_node(pointed_thing.under, {name = "farming:grapes_1"}) + + minetest.sound_play("default_place_node", {pos = pointed_thing.above, gain = 1.0}) + else + return + end + + if not minetest.setting_getbool("creative_mode") then + + itemstack:take_item() + + -- check for refill + if itemstack:get_count() == 0 then + + minetest.after(0.20, + farming.refill_plant, + placer, + "farming:grapes", + placer:get_wield_index() + ) + end + end + + return itemstack + end +}) + +-- grapes can be used for violet dye +minetest.register_craft({ + output = "dye:violet", + recipe = { + {'farming:grapes'}, + } +}) + +-- trellis +minetest.register_node("farming:trellis", { + description = "Trellis (place on soil before planting grapes)", + drawtype = "plantlike", + tiles = {"farming_trellis.png"}, + inventory_image = "farming_trellis.png", + visual_scale = 1.45, + paramtype = "light", + walkable = false, + buildable_to = true, + sunlight_propagates = true, + drop = "farming:trellis", + selection_box = farming.select, + groups = {snappy = 3, flammable = 2, attached_node = 1}, + sounds = default.node_sound_leaves_defaults(), + + on_place = function(itemstack, placer, pointed_thing) + + if minetest.is_protected(pointed_thing.under, placer:get_player_name()) then + return + end + + local nodename = minetest.get_node(pointed_thing.under).name + + if minetest.get_item_group(nodename, "soil") < 2 then + return + end + + local top = { + x = pointed_thing.above.x, + y = pointed_thing.above.y + 1, + z = pointed_thing.above.z + } + + nodename = minetest.get_node(top).name + + if nodename ~= "air" then + return + end + + minetest.set_node(pointed_thing.above, {name = "farming:trellis"}) + + if not minetest.setting_getbool("creative_mode") then + itemstack:take_item() + end + + return itemstack + end +}) + +minetest.register_craft({ + output = "farming:trellis", + recipe = { + {'default:stick', 'default:stick', 'default:stick'}, + {'default:stick', 'default:stick', 'default:stick'}, + {'default:stick', 'default:stick', 'default:stick'}, + } +}) + +minetest.register_craft({ + type = "fuel", + recipe = "farming:trellis", + burntime = 15, +}) + +-- grapes definition +local crop_def = { + drawtype = "plantlike", + tiles = {"farming_grapes_1.png"}, + visual_scale = 1.45, + paramtype = "light", + walkable = false, + buildable_to = true, + sunlight_propagates = true, + drop = { + items = { + {items = {'farming:trellis'}, rarity = 1}, + } + }, + selection_box = farming.select, + groups = { + snappy = 3, flammable = 3, not_in_creative_inventory = 1, + attached_node = 1, growing = 1 + }, + sounds = default.node_sound_leaves_defaults() +} + +-- stage 1 +minetest.register_node("farming:grapes_1", table.copy(crop_def)) + +-- stage2 +crop_def.tiles = {"farming_grapes_2.png"} +minetest.register_node("farming:grapes_2", table.copy(crop_def)) + +-- stage 3 +crop_def.tiles = {"farming_grapes_3.png"} +minetest.register_node("farming:grapes_3", table.copy(crop_def)) + +-- stage 4 +crop_def.tiles = {"farming_grapes_4.png"} +minetest.register_node("farming:grapes_4", table.copy(crop_def)) + +-- stage 5 +crop_def.tiles = {"farming_grapes_5.png"} +minetest.register_node("farming:grapes_5", table.copy(crop_def)) + +-- stage 6 +crop_def.tiles = {"farming_grapes_6.png"} +minetest.register_node("farming:grapes_6", table.copy(crop_def)) + +-- stage 7 +crop_def.tiles = {"farming_grapes_7.png"} +minetest.register_node("farming:grapes_7", table.copy(crop_def)) + +-- stage 8 (final) +crop_def.tiles = {"farming_grapes_8.png"} +crop_def.groups.growing = 0 +crop_def.drop = { + items = { + {items = {'farming:trellis'}, rarity = 1}, + {items = {'farming:grapes 3'}, rarity = 1}, + {items = {'farming:grapes 1'}, rarity = 2}, + {items = {'farming:grapes 1'}, rarity = 3}, + } +} +minetest.register_node("farming:grapes_8", table.copy(crop_def)) + +-- wild grape vine (this is what you find on the map) +minetest.register_node("farming:grapebush", { + drawtype = "plantlike", + tiles = {"farming_grapebush.png"}, + paramtype = "light", + waving = 1, + walkable = false, + buildable_to = true, + sunlight_propagates = true, + drop = { + items = { + {items = {'farming:grapes 1'}, rarity = 1}, + {items = {'farming:grapes 1'}, rarity = 2}, + {items = {'farming:grapes 1'}, rarity = 3}, + } + }, + selection_box = farming.select, + groups = { + snappy = 3, flammable = 2, plant = 1, attached_node = 1, + not_in_creative_inventory=1 + }, + sounds = default.node_sound_leaves_defaults(), +}) diff --git a/mods/farming/grass.lua b/mods/farming/grass.lua new file mode 100644 index 00000000..aacb220f --- /dev/null +++ b/mods/farming/grass.lua @@ -0,0 +1,42 @@ + +for i = 3, 5 do + + -- Override default grass and have it drop Wheat Seeds + + minetest.override_item("default:grass_" .. i, { + drop = { + max_items = 1, + items = { + {items = {'farming:seed_wheat'}, rarity = 5}, + {items = {'default:grass_1'}}, + } + }, + }) + + -- Override default dry grass and have it drop Barley Seeds + if minetest.registered_nodes["default:dry_grass_1"] then + + minetest.override_item("default:dry_grass_" .. i, { + drop = { + max_items = 1, + items = { + {items = {'farming:seed_barley'}, rarity = 6}, + {items = {'default:dry_grass_1'}}, + } + }, + }) + end + +end + +-- Override default Jungle Grass and have it drop Cotton Seeds + +minetest.override_item("default:junglegrass", { + drop = { + max_items = 1, + items = { + {items = {'farming:seed_cotton'}, rarity = 8}, + {items = {'default:junglegrass'}}, + } + }, +}) diff --git a/mods/farming/hoes.lua b/mods/farming/hoes.lua new file mode 100644 index 00000000..ef27d420 --- /dev/null +++ b/mods/farming/hoes.lua @@ -0,0 +1,151 @@ + +-- Hoe registration function + +farming.register_hoe = function(name, def) + + -- Check for : prefix (register new hoes in your mod's namespace) + if name:sub(1,1) ~= ":" then + name = ":" .. name + end + + -- Check def table + if def.description == nil then + def.description = "Hoe" + end + + if def.inventory_image == nil then + def.inventory_image = "unknown_item.png" + end + + if def.recipe == nil then + def.recipe = { + {"air","air",""}, + {"","group:stick",""}, + {"","group:stick",""} + } + end + + if def.max_uses == nil then + def.max_uses = 30 + end + + -- Register the tool + minetest.register_tool(name, { + description = def.description, + inventory_image = def.inventory_image, + on_use = function(itemstack, user, pointed_thing) + return farming.hoe_on_use(itemstack, user, pointed_thing, def.max_uses) + end + }) + + -- Register its recipe + if def.material == nil then + minetest.register_craft({ + output = name:sub(2), + recipe = def.recipe + }) + else + minetest.register_craft({ + output = name:sub(2), + recipe = { + {def.material, def.material, ""}, + {"", "group:stick", ""}, + {"", "group:stick", ""} + } + }) + end +end + +-- Turns dirt with group soil=1 into soil + +function farming.hoe_on_use(itemstack, user, pointed_thing, uses) + + local pt = pointed_thing + + -- check if pointing at a node + if not pt or pt.type ~= "node" then + return + end + + local under = minetest.get_node(pt.under) + local upos = pointed_thing.under + + if minetest.is_protected(upos, user:get_player_name()) then + minetest.record_protection_violation(upos, user:get_player_name()) + return + end + + 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] + or 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 dirt + if minetest.get_item_group(under.name, "soil") ~= 1 then + return + end + + -- turn the node into soil, wear out item and play sound + minetest.set_node(pt.under, {name = "farming:soil"}) + + minetest.sound_play("default_dig_crumbly", {pos = pt.under, gain = 0.5}) + + if not minetest.setting_getbool("creative_mode") then + itemstack:add_wear(65535/(uses-1)) + end + + return itemstack +end + +-- Define Hoes + +farming.register_hoe(":farming:hoe_wood", { + description = "Wooden Hoe", + inventory_image = "farming_tool_woodhoe.png", + max_uses = 30, + material = "group:wood" +}) + +farming.register_hoe(":farming:hoe_stone", { + description = "Stone Hoe", + inventory_image = "farming_tool_stonehoe.png", + max_uses = 90, + material = "group:stone" +}) + +farming.register_hoe(":farming:hoe_steel", { + description = "Steel Hoe", + inventory_image = "farming_tool_steelhoe.png", + max_uses = 200, + material = "default:steel_ingot" +}) + +farming.register_hoe(":farming:hoe_bronze", { + description = "Bronze Hoe", + inventory_image = "farming_tool_bronzehoe.png", + max_uses = 220, + material = "default:bronze_ingot" +}) + +farming.register_hoe(":farming:hoe_mese", { + description = "Mese Hoe", + inventory_image = "farming_tool_mesehoe.png", + max_uses = 350, + material = "default:mese_crystal" +}) + +farming.register_hoe(":farming:hoe_diamond", { + description = "Diamond Hoe", + inventory_image = "farming_tool_diamondhoe.png", + max_uses = 500, + material = "default:diamond" +}) diff --git a/mods/farming/init.lua b/mods/farming/init.lua new file mode 100644 index 00000000..2d92e094 --- /dev/null +++ b/mods/farming/init.lua @@ -0,0 +1,797 @@ +--[[ + Minetest Farming Redo Mod 1.22 (31st March 2016) + by TenPlus1 + NEW growing routine by prestidigitator + auto-refill by crabman77 +]] + +farming = {} +farming.mod = "redo" +farming.path = minetest.get_modpath("farming") +farming.hoe_on_use = default.hoe_on_use +farming.select = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5} +} + +farming.DEBUG = false +-- farming.DEBUG = {} -- Uncomment to turn on profiling code/functions + +local DEBUG_abm_runs = 0 +local DEBUG_abm_time = 0 +local DEBUG_timer_runs = 0 +local DEBUG_timer_time = 0 + +if farming.DEBUG then + + function farming.DEBUG.reset_times() + DEBUG_abm_runs = 0 + DEBUG_abm_time = 0 + DEBUG_timer_runs = 0 + DEBUG_timer_time = 0 + end + + function farming.DEBUG.report_times() + + local abm_n = DEBUG_abm_runs + local abm_dt = DEBUG_abm_time + local abm_avg = (abm_n > 0 and abm_dt / abm_n) or 0 + local timer_n = DEBUG_timer_runs + local timer_dt = DEBUG_timer_time + local timer_avg = (timer_n > 0 and timer_dt / timer_n) or 0 + local dt = abm_dt + timer_dt + + print("ABM ran for "..abm_dt.."µs over "..abm_n.." runs: "..abm_avg.."µs/run") + print("Timer ran for "..timer_dt.."µs over "..timer_n.." runs: "..timer_avg.."µs/run") + print("Total farming time: "..dt.."µs") + end +end + +local statistics = dofile(farming.path.."/statistics.lua") + +dofile(farming.path.."/soil.lua") +dofile(farming.path.."/banana.lua") +dofile(farming.path.."/hoes.lua") +dofile(farming.path.."/grass.lua") +dofile(farming.path.."/wheat.lua") +dofile(farming.path.."/cotton.lua") +dofile(farming.path.."/carrot.lua") +dofile(farming.path.."/potato.lua") +dofile(farming.path.."/tomato.lua") +dofile(farming.path.."/cucumber.lua") +dofile(farming.path.."/corn.lua") +dofile(farming.path.."/coffee.lua") +dofile(farming.path.."/melon.lua") +dofile(farming.path.."/sugar.lua") +dofile(farming.path.."/pumpkin.lua") +dofile(farming.path.."/cocoa.lua") +dofile(farming.path.."/raspberry.lua") +dofile(farming.path.."/strawberry.lua") +dofile(farming.path.."/blueberry.lua") +dofile(farming.path.."/rhubarb.lua") +dofile(farming.path.."/beanpole.lua") +dofile(farming.path.."/grapes.lua") +dofile(farming.path.."/barley.lua") +dofile(farming.path.."/oranges.lua") +dofile(farming.path.."/donut.lua") +dofile(farming.path.."/mapgen.lua") +dofile(farming.path.."/compatibility.lua") -- Farming Plus compatibility + +-- Utility Functions + +local time_speed = tonumber(minetest.setting_get("time_speed")) or 72 +local SECS_PER_CYCLE = (time_speed > 0 and 24 * 60 * 60 / time_speed) or 0 + +local function clamp(x, min, max) + return (x < min and min) or (x > max and max) or x +end + +local function in_range(x, min, max) + return min <= x and x <= max +end + +--- Tests the amount of day or night time between two times. + -- + -- @param t_game + -- The current time, as reported by mintest.get_gametime(). + -- @param t_day + -- The current time, as reported by mintest.get_timeofday(). + -- @param dt + -- The amount of elapsed time. + -- @param count_day + -- If true, count elapsed day time. Otherwise, count elapsed night time. + -- @return + -- The amount of day or night time that has elapsed. + +local function day_or_night_time(t_game, t_day, dt, count_day) + + local t1_day = t_day - dt / SECS_PER_CYCLE + local t1_c, t2_c -- t1_c < t2_c and t2_c always in [0, 1) + + if count_day then + + if t_day < 0.25 then + t1_c = t1_day + 0.75 -- Relative to sunup, yesterday + t2_c = t_day + 0.75 + else + t1_c = t1_day - 0.25 -- Relative to sunup, today + t2_c = t_day - 0.25 + end + else + if t_day < 0.75 then + t1_c = t1_day + 0.25 -- Relative to sundown, yesterday + t2_c = t_day + 0.25 + else + t1_c = t1_day - 0.75 -- Relative to sundown, today + t2_c = t_day - 0.75 + end + end + + local dt_c = clamp(t2_c, 0, 0.5) - clamp(t1_c, 0, 0.5) -- this cycle + + if t1_c < -0.5 then + local nc = math.floor(-t1_c) + t1_c = t1_c + nc + dt_c = dt_c + 0.5 * nc + clamp(-t1_c - 0.5, 0, 0.5) + end + + return dt_c * SECS_PER_CYCLE +end + +--- Tests the amount of elapsed day time. + -- + -- @param dt + -- The amount of elapsed time. + -- @return + -- The amount of day time that has elapsed. + -- +local function day_time(dt) + return day_or_night_time(minetest.get_gametime(), minetest.get_timeofday(), dt, true) +end + +--- Tests the amount of elapsed night time. + -- + -- @param dt + -- The amount of elapsed time. + -- @return + -- The amount of night time that has elapsed. + -- +local function night_time(time_game, time_day, dt, count_day) + return day_or_night_time(minetest.get_gametime(), minetest.get_timeofday(), dt, false) +end + + +-- Growth Logic + +local STAGE_LENGTH_AVG = 160.0 +local STAGE_LENGTH_DEV = STAGE_LENGTH_AVG / 6 +local MIN_LIGHT = 13 +local MAX_LIGHT = 1000 + +--- Determines plant name and stage from node. + -- + -- Separates node name on the last underscore (_). + -- + -- @param node + -- Node or position table, or node name. + -- @return + -- List (plant_name, stage), or nothing (nil) if node isn't loaded + +local function plant_name_stage(node) + + local name + + if type(node) == 'table' then + + if node.name then + name = node.name + elseif node.x and node.y and node.z then + node = minetest.get_node_or_nil(node) + name = node and node.name + end + else + name = tostring(node) + end + + if not name or name == "ignore" then + return nil + end + + local sep_pos = name:find("_[^_]+$") + + if sep_pos and sep_pos > 1 then + + local stage = tonumber(name:sub(sep_pos + 1)) + + if stage and stage >= 0 then + return name:sub(1, sep_pos - 1), stage + end + end + + return name, 0 +end + +-- Map from node name to +-- { plant_name = ..., name = ..., stage = n, stages_left = { node_name, ... } } + +local plant_stages = {} + +farming.plant_stages = plant_stages + +--- Registers the stages of growth of a (possible plant) node. + -- + -- @param node + -- Node or position table, or node name. + -- @return + -- The (possibly zero) number of stages of growth the plant will go through + -- before being fully grown, or nil if not a plant. + +local register_plant_node + +-- Recursive helper +local function reg_plant_stages(plant_name, stage, force_last) + + local node_name = plant_name and plant_name .. "_" .. stage + local node_def = node_name and minetest.registered_nodes[node_name] + + if not node_def then + return nil + end + + local stages = plant_stages[node_name] + + if stages then + return stages + end + + if minetest.get_item_group(node_name, "growing") > 0 then + + local ns = reg_plant_stages(plant_name, stage + 1, true) + local stages_left = (ns and { ns.name, unpack(ns.stages_left) }) or {} + + stages = { + plant_name = plant_name, + name = node_name, + stage = stage, + stages_left = stages_left + } + + if #stages_left > 0 then + + local old_constr = node_def.on_construct + local old_destr = node_def.on_destruct + + minetest.override_item(node_name, + { + on_construct = function(pos) + + if old_constr then + old_constr(pos) + end + + farming.handle_growth(pos) + end, + + on_destruct = function(pos) + + minetest.get_node_timer(pos):stop() + + if old_destr then + old_destr(pos) + end + end, + + on_timer = function(pos, elapsed) + return farming.plant_growth_timer(pos, elapsed, node_name) + end, + }) + end + + elseif force_last then + + stages = { + plant_name = plant_name, + name = node_name, + stage = stage, + stages_left = {} + } + else + return nil + end + + plant_stages[node_name] = stages + + return stages +end + +register_plant_node = function(node) + + local plant_name, stage = plant_name_stage(node) + + if plant_name then + + local stages = reg_plant_stages(plant_name, stage, false) + return stages and #stages.stages_left + else + return nil + end +end + +local function set_growing(pos, stages_left) + + if not stages_left then + return + end + + local timer = minetest.get_node_timer(pos) + + if stages_left > 0 then + + if not timer:is_started() then + + local stage_length = statistics.normal(STAGE_LENGTH_AVG, STAGE_LENGTH_DEV) + + stage_length = clamp(stage_length, 0.5 * STAGE_LENGTH_AVG, 3.0 * STAGE_LENGTH_AVG) + + timer:set(stage_length, -0.5 * math.random() * STAGE_LENGTH_AVG) + end + + elseif timer:is_started() then + timer:stop() + end +end + +-- https://git.tchncs.de/Illuna-Minetest/farming_plus/blob/master/init.lua#L54 + +function farming.generate_tree(pos, trunk, leaves, underground, replacements) + pos.y = pos.y-1 + local nodename = minetest.get_node(pos).name + local ret = true + for _,name in ipairs(underground) do + if nodename == name then + ret = false + break + end + end + pos.y = pos.y+1 + if not minetest.get_node_light(pos) then + return + end + if ret or minetest.get_node_light(pos) < 8 then + return + end + + node = {name = ""} + for dy=1,4 do + pos.y = pos.y+dy + if minetest.get_node(pos).name ~= "air" then + return + end + pos.y = pos.y-dy + end + node.name = trunk + for dy=0,4 do + pos.y = pos.y+dy + minetest.set_node(pos, node) + pos.y = pos.y-dy + end + + if not replacements then + replacements = {} + end + + node.name = leaves + pos.y = pos.y+3 + for dx=-2,2 do + for dz=-2,2 do + for dy=0,3 do + pos.x = pos.x+dx + pos.y = pos.y+dy + pos.z = pos.z+dz + + if dx == 0 and dz == 0 and dy==3 then + if minetest.get_node(pos).name == "air" and math.random(1, 5) <= 4 then + minetest.set_node(pos, node) + for name,rarity in pairs(replacements) do + if math.random(1, rarity) == 1 then + minetest.set_node(pos, {name=name}) + end + end + end + elseif dx == 0 and dz == 0 and dy==4 then + if minetest.get_node(pos).name == "air" and math.random(1, 5) <= 4 then + minetest.set_node(pos, node) + for name,rarity in pairs(replacements) do + if math.random(1, rarity) == 1 then + minetest.set_node(pos, {name=name}) + end + end + end + elseif math.abs(dx) ~= 2 and math.abs(dz) ~= 2 then + if minetest.get_node(pos).name == "air" then + minetest.set_node(pos, node) + for name,rarity in pairs(replacements) do + if math.random(1, rarity) == 1 then + minetest.set_node(pos, {name=name}) + end + end + end + else + if math.abs(dx) ~= 2 or math.abs(dz) ~= 2 then + if minetest.get_node(pos).name == "air" and math.random(1, 5) <= 4 then + minetest.set_node(pos, node) + for name,rarity in pairs(replacements) do + if math.random(1, rarity) == 1 then + minetest.set_node(pos, {name=name}) + end + end + end + end + end + + pos.x = pos.x-dx + pos.y = pos.y-dy + pos.z = pos.z-dz + end + end + end +end + +-- Detects a plant type node at the given position, starting +-- or stopping the plant growth timer as appopriate + +-- @param pos +-- The node's position. +-- @param node +-- The cached node table if available, or nil. + +function farming.handle_growth(pos, node) + + if not pos then + return + end + + local stages_left = register_plant_node(node or pos) + + if stages_left then + set_growing(pos, stages_left) + end +end + +minetest.after(0, function() + + for _, node_def in pairs(minetest.registered_nodes) do + register_plant_node(node_def) + end +end) + +local abm_func = farming.handle_growth + +if farming.DEBUG then + + local normal_abm_func = abm_func + + abm_func = function(...) + + local t0 = minetest.get_us_time() + local r = { normal_abm_func(...) } + local t1 = minetest.get_us_time() + + DEBUG_abm_runs = DEBUG_abm_runs + 1 + DEBUG_abm_time = DEBUG_abm_time + (t1 - t0) + + return unpack(r) + end +end + +-- Just in case a growing type or added node is missed (also catches existing +-- nodes added to map before timers were incorporated). + +minetest.register_abm({ + nodenames = { "group:growing" }, + interval = 300, + chance = 1, + action = abm_func +}) + +-- Plant timer function. +-- Grows plants under the right conditions. + +function farming.plant_growth_timer(pos, elapsed, node_name) + + local stages = plant_stages[node_name] + + if not stages then + return false + end + + local max_growth = #stages.stages_left + + if max_growth <= 0 then + return false + end + + if stages.plant_name == "farming:cocoa" then + + if not minetest.find_node_near(pos, 1, + {"default:jungletree", "moretrees:jungletree_leaves_green"}) then + + return true + end + else + local under = minetest.get_node_or_nil({ x = pos.x, y = pos.y - 1, z = pos.z }) + + if not under or under.name ~= "farming:soil_wet" then + return true + end + end + + local growth + local light_pos = {x = pos.x, y = pos.y, z = pos.z} + local lambda = elapsed / STAGE_LENGTH_AVG + + if lambda < 0.1 then + return true + end + + if max_growth == 1 or lambda < 2.0 then + + local light = (minetest.get_node_light(light_pos) or 0) + --print ("light level:", light) + + if not in_range(light, MIN_LIGHT, MAX_LIGHT) then + return true + end + + growth = 1 + else + local night_light = (minetest.get_node_light(light_pos, 0) or 0) + local day_light = (minetest.get_node_light(light_pos, 0.5) or 0) + local night_growth = in_range(night_light, MIN_LIGHT, MAX_LIGHT) + local day_growth = in_range(day_light, MIN_LIGHT, MAX_LIGHT) + + if not night_growth then + + if not day_growth then + return true + end + + lambda = day_time(elapsed) / STAGE_LENGTH_AVG + + elseif not day_growth then + + lambda = night_time(elapsed) / STAGE_LENGTH_AVG + end + + growth = statistics.poisson(lambda, max_growth) + + if growth < 1 then + return true + end + end + + if minetest.registered_nodes[stages.stages_left[growth]] then + minetest.swap_node(pos, {name = stages.stages_left[growth]}) + else + return true + end + + return growth ~= max_growth +end + +if farming.DEBUG then + + local timer_func = farming.plant_growth_timer; + + farming.plant_growth_timer = function(pos, elapsed, node_name) + + local t0 = minetest.get_us_time() + local r = { timer_func(pos, elapsed, node_name) } + local t1 = minetest.get_us_time() + + DEBUG_timer_runs = DEBUG_timer_runs + 1 + DEBUG_timer_time = DEBUG_timer_time + (t1 - t0) + + return unpack(r) + end +end + +-- refill placed plant by crabman (26/08/2015) +local can_refill_plant = { + ["farming:blueberry_1"] = "farming:blueberries", + ["farming:carrot_1"] = "farming:carrot", + ["farming:coffee_1"] = "farming:coffee_beans", + ["farming:corn_1"] = "farming:corn", + ["farming:cotton_1"] = "farming:seed_cotton", + ["farming:cucumber_1"] = "farming:cucumber", + ["farming:melon_1"] = "farming:melon_slice", + ["farming:potato_1"] = "farming:potato", + ["farming:pumpkin_1"] = "farming:pumpkin_slice", + ["farming:raspberry_1"] = "farming:raspberries", + ["farming:rhubarb_1"] = "farming:rhubarb", + ["farming:tomato_1"] = "farming:tomato", + ["farming:wheat_1"] = "farming:seed_wheat", + ["farming:grapes_1"] = "farming:grapes", + ["farming:beans_1"] = "farming:beans", + ["farming:rhubarb_1"] = "farming:rhubarb", + ["farming:cocoa_1"] = "farming:cocoa_beans", + ["farming:orange_1"] = "farming:orange_item", +} + +function farming.refill_plant(player, plantname, index) + + local inv = player:get_inventory() + local old_stack = inv:get_stack("main", index) + + if old_stack:get_name() ~= "" then + return + end + + for i, stack in pairs(inv:get_list("main")) do + + if stack:get_name() == plantname and i ~= index then + + inv:set_stack("main", index, stack) + stack:clear() + inv:set_stack("main", i, stack) + --minetest.log("action", "farming: refilled stack("..plantname..") of " .. player:get_player_name() ) + return + end + end +end + +-- Place Seeds on Soil + +function farming.place_seed(itemstack, placer, pointed_thing, plantname) + + local pt = pointed_thing + + -- check if pointing at a node + if not pt or pt.type ~= "node" then + return + end + + local under = minetest.get_node(pt.under) + local above = minetest.get_node(pt.above) + + -- check if pointing at the top of the node + if pt.above.y ~= pt.under.y + 1 then + return + end + + -- return if any of the nodes is not registered + if not minetest.registered_nodes[under.name] + or not minetest.registered_nodes[above.name] then + return + end + + -- can I replace above node, and am I pointing at soil + if not minetest.registered_nodes[above.name].buildable_to + or minetest.get_item_group(under.name, "soil") < 2 + -- avoid multiple seed placement bug + or minetest.get_item_group(above.name, "plant") ~= 0 then + return + end + + -- if not protected then add node and remove 1 item from the itemstack + if not minetest.is_protected(pt.above, placer:get_player_name()) then + + minetest.set_node(pt.above, {name = plantname, param2 = 1}) + + minetest.sound_play("default_place_node", {pos = pt.above, gain = 1.0}) + + if not minetest.setting_getbool("creative_mode") then + + itemstack:take_item() + + -- check for refill + if itemstack:get_count() == 0 + and can_refill_plant[plantname] then + + minetest.after(0.10, + farming.refill_plant, + placer, + can_refill_plant[plantname], + placer:get_wield_index() + ) + end + end + + return itemstack + end +end + +-- Function to register plants (for compatibility) + +farming.register_plant = function(name, def) + + local mname = name:split(":")[1] + local pname = name:split(":")[2] + + -- Check def table + if not def.description then + def.description = "Seed" + end + + if not def.inventory_image then + def.inventory_image = "unknown_item.png" + end + + if not def.steps then + return nil + end + + -- Register seed + minetest.register_node(":" .. mname .. ":seed_" .. pname, { + + description = def.description, + tiles = {def.inventory_image}, + inventory_image = def.inventory_image, + wield_image = def.inventory_image, + drawtype = "signlike", + groups = {seed = 1, snappy = 3, attached_node = 1}, + paramtype = "light", + paramtype2 = "wallmounted", + walkable = false, + sunlight_propagates = true, + selection_box = farming.select, + + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, mname .. ":"..pname.."_1") + end, + }) + + -- Register harvest + minetest.register_craftitem(":" .. mname .. ":" .. pname, { + description = pname:gsub("^%l", string.upper), + inventory_image = mname .. "_" .. pname .. ".png", + }) + + -- Register growing steps + for i = 1, def.steps do + + local drop = { + items = { + {items = {mname .. ":" .. pname}, rarity = 9 - i}, + {items = {mname .. ":" .. pname}, rarity= 18 - i * 2}, + {items = {mname .. ":seed_" .. pname}, rarity = 9 - i}, + {items = {mname .. ":seed_" .. pname}, rarity = 18 - i * 2}, + } + } + + local g = {snappy = 3, flammable = 2, plant = 1, not_in_creative_inventory = 1, attached_node = 1, growing = 1} + + -- Last step doesn't need growing=1 so Abm never has to check these + if i == def.steps then + g = {snappy = 3, flammable = 2, plant = 1, not_in_creative_inventory = 1, attached_node = 1} + end + + local node_name = mname .. ":" .. pname .. "_" .. i + + minetest.register_node(node_name, { + drawtype = "plantlike", + waving = 1, + tiles = {mname .. "_" .. pname .. "_" .. i .. ".png"}, + paramtype = "light", + walkable = false, + buildable_to = true, + drop = drop, + selection_box = farming.select, + groups = g, + sounds = default.node_sound_leaves_defaults(), + }) + + register_plant_node(node_name) + end + + -- Return info + local r = {seed = mname .. ":seed_" .. pname, harvest = mname .. ":" .. pname} + return r +end + +--[[ Cotton (example, is already registered in cotton.lua) +farming.register_plant("farming:cotton", { + description = "Cotton2 seed", + inventory_image = "farming_cotton_seed.png", + steps = 8, +})]] diff --git a/mods/farming/init.lua_orig b/mods/farming/init.lua_orig new file mode 100644 index 00000000..aee9976f --- /dev/null +++ b/mods/farming/init.lua_orig @@ -0,0 +1,192 @@ +--[[ + Minetest Farming Redo Mod 1.14 (11th May 2015) + by TenPlus1 +]] + +farming = {} +farming.mod = "redo" +farming.path = minetest.get_modpath("farming") +farming.hoe_on_use = default.hoe_on_use + +dofile(farming.path.."/soil.lua") +dofile(farming.path.."/hoes.lua") +dofile(farming.path.."/grass.lua") +dofile(farming.path.."/wheat.lua") +dofile(farming.path.."/cotton.lua") +dofile(farming.path.."/carrot.lua") +dofile(farming.path.."/potato.lua") +dofile(farming.path.."/tomato.lua") +dofile(farming.path.."/cucumber.lua") +dofile(farming.path.."/corn.lua") +dofile(farming.path.."/coffee.lua") +dofile(farming.path.."/melon.lua") +dofile(farming.path.."/sugar.lua") +dofile(farming.path.."/pumpkin.lua") +dofile(farming.path.."/cocoa.lua") +dofile(farming.path.."/raspberry.lua") +dofile(farming.path.."/blueberry.lua") +dofile(farming.path.."/rhubarb.lua") +dofile(farming.path.."/beanpole.lua") +dofile(farming.path.."/donut.lua") +dofile(farming.path.."/mapgen.lua") +dofile(farming.path.."/compatibility.lua") -- Farming Plus compatibility + +-- Place Seeds on Soil + +function farming.place_seed(itemstack, placer, pointed_thing, plantname) + local pt = pointed_thing + + -- check if pointing at a node + if not pt and pt.type ~= "node" then + return + end + + local under = minetest.get_node(pt.under) + local above = minetest.get_node(pt.above) + + -- check if pointing at the top of the node + if pt.above.y ~= pt.under.y+1 then + return + end + + -- return if any of the nodes is not registered + if not minetest.registered_nodes[under.name] + or not minetest.registered_nodes[above.name] then + return + end + + -- can I replace above node, and am I pointing at soil + if not minetest.registered_nodes[above.name].buildable_to + or minetest.get_item_group(under.name, "soil") < 2 + or minetest.get_item_group(above.name, "plant") ~= 0 then -- ADDED this line for multiple seed placement bug + return + end + + -- add the node and remove 1 item from the itemstack + if not minetest.is_protected(pt.above, placer:get_player_name()) then + minetest.add_node(pt.above, {name=plantname}) + if not minetest.setting_getbool("creative_mode") then + itemstack:take_item() + end + return itemstack + end +end + +-- Single ABM Handles Growing of All Plants + +minetest.register_abm({ + nodenames = {"group:growing"}, + neighbors = {"farming:soil_wet", "default:jungletree"}, + interval = 80, + chance = 2, + + action = function(pos, node) + + -- split plant name (e.g. farming:wheat_1) + local plant = node.name:split("_")[1].."_" + local numb = node.name:split("_")[2] + + -- fully grown ? + if not minetest.registered_nodes[plant..(numb + 1)] then return end + + -- cocoa pod on jungle tree ? + if plant ~= "farming:cocoa_" then + + -- growing on wet soil ? + if minetest.get_node({x=pos.x,y=pos.y-1,z=pos.z}).name ~= "farming:soil_wet" then return end + end + + -- enough light ? + if minetest.get_node_light(pos) < 13 then return end + + -- grow + minetest.set_node(pos, {name=plant..(numb + 1)}) + + end +}) + +-- Function to register plants (for compatibility) + +farming.register_plant = function(name, def) + local mname = name:split(":")[1] + local pname = name:split(":")[2] + + -- Check def table + if not def.description then + def.description = "Seed" + end + if not def.inventory_image then + def.inventory_image = "unknown_item.png" + end + if not def.steps then + return nil + end + + -- Register seed + minetest.register_node(":" .. mname .. ":seed_" .. pname, { + description = def.description, + tiles = {def.inventory_image}, + inventory_image = def.inventory_image, + wield_image = def.inventory_image, + drawtype = "signlike", + groups = {seed = 1, snappy = 3, attached_node = 1}, + paramtype = "light", + paramtype2 = "wallmounted", + walkable = false, + sunlight_propagates = true, + selection_box = {type = "fixed", fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5},}, + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, mname .. ":"..pname.."_1") + end + }) + + -- Register harvest + minetest.register_craftitem(":" .. mname .. ":" .. pname, { + description = pname:gsub("^%l", string.upper), + inventory_image = mname .. "_" .. pname .. ".png", + }) + + -- Register growing steps + for i=1,def.steps do + local drop = { + items = { + {items = {mname .. ":" .. pname}, rarity = 9 - i}, + {items = {mname .. ":" .. pname}, rarity= 18 - i * 2}, + {items = {mname .. ":seed_" .. pname}, rarity = 9 - i}, + {items = {mname .. ":seed_" .. pname}, rarity = 18 - i * 2}, + } + } + + local g = {snappy = 3, flammable = 2, plant = 1, not_in_creative_inventory = 1, attached_node = 1, growing = 1} + -- Last step doesn't need growing=1 so Abm never has to check these + if i == def.steps then + g = {snappy = 3, flammable = 2, plant = 1, not_in_creative_inventory = 1, attached_node = 1} + end + + minetest.register_node(mname .. ":" .. pname .. "_" .. i, { + drawtype = "plantlike", + waving = 1, + tiles = {mname .. "_" .. pname .. "_" .. i .. ".png"}, + paramtype = "light", + walkable = false, + buildable_to = true, + is_ground_content = true, + drop = drop, + selection_box = {type = "fixed", fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5},}, + groups = g, + sounds = default.node_sound_leaves_defaults(), + }) + end + + -- Return info + local r = {seed = mname .. ":seed_" .. pname, harvest = mname .. ":" .. pname} + return r +end + +--[[ Cotton (example, is already registered in cotton.lua) +farming.register_plant("farming:cotton", { + description = "Cotton seed", + inventory_image = "farming_cotton_seed.png", + steps = 8, +}) +--]] diff --git a/mods/farming/license.txt b/mods/farming/license.txt new file mode 100644 index 00000000..5d30c149 --- /dev/null +++ b/mods/farming/license.txt @@ -0,0 +1,14 @@ + + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + Version 2, December 2004 + + Copyright (C) 2004 Sam Hocevar <sam@hocevar.net> + + Everyone is permitted to copy and distribute verbatim or modified + copies of this license document, and changing it is allowed as long + as the name is changed. + + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. You just DO WHAT THE FUCK YOU WANT TO. \ No newline at end of file diff --git a/mods/farming/mapgen.lua b/mods/farming/mapgen.lua new file mode 100644 index 00000000..1cb46ca2 --- /dev/null +++ b/mods/farming/mapgen.lua @@ -0,0 +1,65 @@ +-- decoration function +local function register_plant(name, min, max, spawnby, num) + minetest.register_decoration({ + deco_type = "simple", + place_on = {"default:dirt_with_grass"}, + sidelen = 16, + noise_params = { + offset = 0, + scale = 0.006, + spread = {x = 100, y = 100, z = 100}, + seed = 329, + octaves = 3, + persist = 0.6 + }, + y_min = min, + y_max = max, + decoration = "farming:" .. name, + spawn_by = spawnby, + num_spawn_by = num, + }) +end + +function farming.register_mgv6_decorations() + register_plant("potato_3", 15, 40, "", -1) + register_plant("tomato_7", 5, 20, "", -1) + register_plant("carrot_8", 1, 30, "group:water", 1) + register_plant("cucumber_4", 1, 20, "group:water", 1) + register_plant("corn_7", 12, 22, "", -1) + register_plant("corn_8", 10, 20, "", -1) + register_plant("coffee_5", 20, 45, "", -1) + register_plant("melon_8", 1, 20, "group:water", 1) + register_plant("pumpkin_8", 1, 20, "group:water", 1) + register_plant("raspberry_4", 3, 10, "", -1) + register_plant("rhubarb_3", 3, 15, "", -1) + register_plant("blueberry_4", 3, 10, "", -1) + register_plant("beanbush", 18, 35, "", -1) + register_plant("grapebush", 25, 45, "", -1) + register_plant("strawberry_4", 3, 10, "", -1) +end + +-- v7 maps have a beach so plants growing near water is limited to 6 high +function farming.register_mgv7_decorations() + register_plant("potato_3", 15, 40, "", -1) + register_plant("tomato_7", 5, 20, "", -1) + register_plant("carrot_8", 1, 6, "", -1) + register_plant("cucumber_4", 1, 6, "", -1) + register_plant("corn_7", 12, 22, "", -1) + register_plant("corn_8", 10, 20, "", -1) + register_plant("coffee_5", 20, 45, "", -1) + register_plant("melon_8", 1, 6, "", -1) + register_plant("pumpkin_8", 1, 6, "", -1) + register_plant("raspberry_4", 3, 10, "", -1) + register_plant("rhubarb_3", 3, 15, "", -1) + register_plant("blueberry_4", 3, 10, "", -1) + register_plant("beanbush", 18, 35, "", -1) + register_plant("grapebush", 25, 45, "", -1) + register_plant("strawberry_4", 3, 10, "", -1) +end + +-- detect mapgen +if minetest.get_mapgen_params().mgname == "v6" then + farming.register_mgv6_decorations() +else + farming.register_mgv7_decorations() +end diff --git a/mods/farming/melon.lua b/mods/farming/melon.lua new file mode 100644 index 00000000..fb59e7bf --- /dev/null +++ b/mods/farming/melon.lua @@ -0,0 +1,80 @@ + +-- melon +minetest.register_craftitem("farming:melon_slice", { + description = "Melon Slice", + inventory_image = "farming_melon_slice.png", + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:melon_1") + end, + on_use = minetest.item_eat(2), +}) + +minetest.register_craft({ + output = "farming:melon_8", + recipe = { + {"farming:melon_slice", "farming:melon_slice", "farming:melon_slice"}, + {"farming:melon_slice", "farming:melon_slice", "farming:melon_slice"}, + {"farming:melon_slice", "farming:melon_slice", "farming:melon_slice"}, + } +}) + +minetest.register_craft({ + output = "farming:melon_slice 9", + recipe = { + {"", "farming:melon_8", ""}, + } +}) + +-- melon definition +local crop_def = { + drawtype = "plantlike", + tiles = {"farming_melon_1.png"}, + paramtype = "light", + sunlight_propagates = true, + walkable = false, + buildable_to = true, + drop = "", + selection_box = farming.select, + groups = { + snappy = 3, flammable = 2, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + sounds = default.node_sound_leaves_defaults() +} + +-- stage 1 +minetest.register_node("farming:melon_1", table.copy(crop_def)) + +-- stage 2 +crop_def.tiles = {"farming_melon_2.png"} +minetest.register_node("farming:melon_2", table.copy(crop_def)) + +-- stage 3 +crop_def.tiles = {"farming_melon_3.png"} +minetest.register_node("farming:melon_3", table.copy(crop_def)) + +-- stage 4 +crop_def.tiles = {"farming_melon_4.png"} +minetest.register_node("farming:melon_4", table.copy(crop_def)) + +-- stage 5 +crop_def.tiles = {"farming_melon_5.png"} +minetest.register_node("farming:melon_5", table.copy(crop_def)) + +-- stage 6 +crop_def.tiles = {"farming_melon_6.png"} +minetest.register_node("farming:melon_6", table.copy(crop_def)) + +-- stage 7 +crop_def.tiles = {"farming_melon_7.png"} +minetest.register_node("farming:melon_7", table.copy(crop_def)) + +-- stage 8 (final) +crop_def.drawtype = "nodebox" +crop_def.description = "Melon" +crop_def.tiles = {"farming_melon_top.png", "farming_melon_top.png", "farming_melon_side.png"} +crop_def.selection_box = {-.5, -.5, -.5, .5, .5, .5} +crop_def.walkable = true +crop_def.groups = {snappy = 3, oddly_breakable_by_hand = 1, flammable = 2, plant = 1} +crop_def.drop = "farming:melon_slice 9" +minetest.register_node("farming:melon_8", table.copy(crop_def)) diff --git a/mods/farming/mod.conf b/mods/farming/mod.conf new file mode 100644 index 00000000..80ab8b0b --- /dev/null +++ b/mods/farming/mod.conf @@ -0,0 +1 @@ +name = farming \ No newline at end of file diff --git a/mods/farming/oranges.lua b/mods/farming/oranges.lua new file mode 100644 index 00000000..88e39afa --- /dev/null +++ b/mods/farming/oranges.lua @@ -0,0 +1,58 @@ +minetest.register_craftitem("farming:orange_seed", { + description = "Orange Seeds", + inventory_image = "farming_orange_seed.png", + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:orange_1") + end +}) + +minetest.register_craftitem("farming:orange_item", { + description = "Orange", + inventory_image = "farming_orange.png", + on_use = minetest.item_eat(4), + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:orange_1") + end +}) + +-- orange definition +local crop_def = { + paramtype = "plantlike", + walkable = false, + paramtype = "light", + sunlight_propagates = true, + buildable_to = true, + drawtype = "plantlike", + drop = "", + tiles = {"farming_orange_1.png"}, + selection_box = farming.select, + groups = {snappy=3, flammable=2, not_in_creative_inventory=1,plant=1,growing=1}, + sounds = default.node_sound_leaves_defaults(), +} + +-- stage 1 +minetest.register_node("farming:orange_1", table.copy(crop_def)) + +-- stage 2 +crop_def.tiles = {"farming_orange_2.png"} +minetest.register_node("farming:orange_2", table.copy(crop_def)) + +-- stage 3 +crop_def.tiles = {"farming_orange_3.png"} +minetest.register_node("farming:orange_3", table.copy(crop_def)) + +-- stage 4 +crop_def.tiles = {"farming_orange_4.png"} +crop_def.groups.growing = 0 +crop_def.drop = { + items = { + { items = {'farming:orange_seed'} }, + { items = {'farming:orange_seed'}, rarity = 2}, + { items = {'farming:orange_seed'}, rarity = 5}, + { items = {'farming:orange_item'} }, + { items = {'farming:orange_item'}, rarity = 2 }, + { items = {'farming:orange_item'}, rarity = 5 }, + } +} + +minetest.register_node("farming:orange_4", table.copy(crop_def)) diff --git a/mods/farming/potato.lua b/mods/farming/potato.lua new file mode 100644 index 00000000..fa95442c --- /dev/null +++ b/mods/farming/potato.lua @@ -0,0 +1,85 @@ + +--[[ + Original textures from DocFarming mod + https://forum.minetest.net/viewtopic.php?id=3948 +]] + +minetest.register_craftitem("farming:potato_seed", { + description = "Potato Seeds", + inventory_image = "farming_potato_seed.png", + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:potato_1") + end +}) + +-- potato +minetest.register_craftitem("farming:potato", { + description = "Potato", + inventory_image = "farming_potato.png", + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:potato_1") + end, + on_use = minetest.item_eat(1), +}) + +-- baked potato +minetest.register_craftitem("farming:baked_potato", { + description = "Baked Potato", + inventory_image = "farming_baked_potato.png", + on_use = minetest.item_eat(6), +}) + +minetest.register_craft({ + type = "cooking", + cooktime = 10, + output = "farming:baked_potato", + recipe = "farming:potato" +}) + +-- potato definition +local crop_def = { + drawtype = "plantlike", + tiles = {"farming_potato_1.png"}, + paramtype = "light", + sunlight_propagates = true, + waving = 1, + walkable = false, + buildable_to = true, + drop = "", + selection_box = farming.select, + groups = { + snappy = 3, flammable = 2, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + sounds = default.node_sound_leaves_defaults() +} + +-- stage 1 +minetest.register_node("farming:potato_1", table.copy(crop_def)) + +-- stage 2 +crop_def.tiles = {"farming_potato_2.png"} +minetest.register_node("farming:potato_2", table.copy(crop_def)) + +-- stage 3 +crop_def.tiles = {"farming_potato_3.png"} +crop_def.drop = { + items = { + {items = {'farming:potato'}, rarity = 1}, + {items = {'farming:potato_seed'}, rarity = 1}, + {items = {'farming:potato'}, rarity = 3}, + } +} +minetest.register_node("farming:potato_3", table.copy(crop_def)) + +-- stage 4 +crop_def.tiles = {"farming_potato_4.png"} +crop_def.groups.growing = 0 +crop_def.drop = { + items = { + {items = {'farming:potato 2'}, rarity = 1}, + {items = {'farming:potato_seed 2'}, rarity = 1}, + {items = {'farming:potato 3'}, rarity = 2}, + } +} +minetest.register_node("farming:potato_4", table.copy(crop_def)) diff --git a/mods/farming/pumpkin.lua b/mods/farming/pumpkin.lua new file mode 100644 index 00000000..67ecb9c5 --- /dev/null +++ b/mods/farming/pumpkin.lua @@ -0,0 +1,346 @@ + +--[[ + Big thanks to PainterlyPack.net for allowing me to use these textures +]] + +minetest.register_craftitem("farming:pumpkin_seed", { + description = "Pumpkin Seed", + inventory_image = "farming_pumpkin_seed.png", + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:pumpkin_1") + end +}) + +-- pumpkin +minetest.register_node("farming:pumpkin", { + description = "Pumpkin", + tiles = { + "farming_pumpkin_top.png", + "farming_pumpkin_top.png", + "farming_pumpkin_side.png" + }, + groups = { + choppy = 1, oddly_breakable_by_hand = 1, + flammable = 2, plant = 1 + }, + drop = { + items = { + {items = {'farming:pumpkin_slice 9'}, rarity = 1}, + } + }, + sounds = default.node_sound_wood_defaults(), +}) + +-- pumpkin slice +minetest.register_craftitem("farming:pumpkin_slice", { + description = "Pumpkin Slice", + inventory_image = "farming_pumpkin_slice.png", + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:pumpkin_1") + end, + on_use = minetest.item_eat(2), +}) + +minetest.register_craft({ + output = "farming:pumpkin", + recipe = { + {"farming:pumpkin_slice", "farming:pumpkin_slice", "farming:pumpkin_slice"}, + {"farming:pumpkin_slice", "farming:pumpkin_slice", "farming:pumpkin_slice"}, + {"farming:pumpkin_slice", "farming:pumpkin_slice", "farming:pumpkin_slice"}, + } +}) + +minetest.register_craft({ + output = "farming:pumpkin_slice 9", + recipe = { + {"", "farming:pumpkin", ""}, + } +}) + +-- jack 'o lantern +minetest.register_node("farming:jackolantern", { + description = "Jack 'O Lantern", + tiles = { + "farming_pumpkin_top.png", + "farming_pumpkin_top.png", + "farming_pumpkin_side.png", + "farming_pumpkin_side.png", + "farming_pumpkin_side.png", + "farming_pumpkin_face_off.png" + }, + paramtype2 = "facedir", + groups = {choppy = 1, oddly_breakable_by_hand = 1, flammable = 2}, + sounds = default.node_sound_wood_defaults(), + on_punch = function(pos, node, puncher) + node.name = "farming:jackolantern_on" + minetest.swap_node(pos, node) + end, +}) + +minetest.register_node("farming:jackolantern_on", { + description = "Jack 'O Lantern", + tiles = { + "farming_pumpkin_top.png", + "farming_pumpkin_top.png", + "farming_pumpkin_side.png", + "farming_pumpkin_side.png", + "farming_pumpkin_side.png", + "farming_pumpkin_face_on.png" + }, + light_source = default.LIGHT_MAX - 1, + paramtype2 = "facedir", + groups = {choppy = 1, oddly_breakable_by_hand = 1, flammable = 2}, + sounds = default.node_sound_wood_defaults(), + drop = "farming:jackolantern", + on_punch = function(pos, node, puncher) + node.name = "farming:jackolantern" + minetest.swap_node(pos, node) + end, +}) + +minetest.register_craft({ + output = "farming:jackolantern", + recipe = { + {"", "", ""}, + {"", "default:torch", ""}, + {"", "farming:pumpkin", ""}, + } +}) + +-- scarecrow +local box1 = { + {-1, -8, -1, 1, 8, 1}, +} + +local box2 = { + {-1, -8, -1, 1, 8, 1}, + {-12, -8, -1, 12, -7, 1}, + {-5, -2, -5, 5, 8, 5} +} + +for j,list in ipairs(box1) do + for i,int in ipairs(list) do + list[i] = int/16 + end + box1[j] = list +end + +for j,list in ipairs(box2) do + for i,int in ipairs(list) do + list[i] = int/16 + end + box2[j] = list +end + +minetest.register_node("farming:scarecrow", { + description = "Scarecrow", + paramtype = "light", + sunlight_propagates = true, + paramtype2 = "facedir", + tiles = {"farming_scarecrow_top.png", "farming_scarecrow_top.png", "farming_scarecrow_side.png", "farming_scarecrow_side.png", "farming_scarecrow_side.png", "farming_scarecrow_front.png"}, + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = box2 + }, + selection_box = { + type = "fixed", + fixed = { + {-12/16, -1.5, -0.5, 12/16, 0.5, 0.5} + } + }, + groups = {choppy=2, oddly_breakable_by_hand=2, flammable=2}, + + after_place_node = function(pos, placer) + local node = minetest.get_node(pos) + local param2 = node.param2 + pos.y = pos.y+1 + if minetest.get_node(pos).name ~= "air" then + pos.y = pos.y-1 + minetest.remove_node(pos) + minetest.after(0.1, function(placer) + local inv = placer:get_inventory() + local index = placer:get_wield_index() + inv:set_stack("main", index, ItemStack("farming:scarecrow")) + end, placer) + return + end + minetest.set_node(pos, node) + pos.y = pos.y-1 + node.name = "farming:scarecrow_bottom" + minetest.set_node(pos, node) + end, + + after_destruct = function(pos, oldnode) + pos.y = pos.y-1 + if minetest.get_node(pos).name == "farming:scarecrow_bottom" then + minetest.remove_node(pos) + end + end +}) + +minetest.register_node("farming:scarecrow_bottom", { + paramtype = "light", + sunlight_propagates = true, + paramtype2 = "facedir", + tiles = {"default_wood.png"}, + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = box1 + }, + groups = {not_in_creative_inventory=1}, + selection_box = { + type = "fixed", + fixed = { + {0, 0, 0, 0, 0, 0} + } + } +}) + +minetest.register_craft({ + output = "farming:scarecrow", + recipe = { + {"", "farming:pumpkin_face", "",}, + {"default:stick", "default:stick", "default:stick",}, + {"", "default:stick", "",} + } +}) + +minetest.register_node("farming:scarecrow_light", { + description = "Scarecrow With light", + paramtype = "light", + sunlight_propagates = true, + paramtype2 = "facedir", + light_source = LIGHT_MAX-2, + tiles = {"farming_scarecrow_top.png", "farming_scarecrow_top.png", "farming_scarecrow_side.png", "farming_scarecrow_side.png", "farming_scarecrow_side.png", "farming_scarecrow_front_light.png"}, + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = box2 + }, + selection_box = { + type = "fixed", + fixed = { + {-12/16, -1.5, -0.5, 12/16, 0.5, 0.5} + } + }, + groups = {choppy=2, oddly_breakable_by_hand=2, flammable=2}, + + after_place_node = function(pos, placer) + local node = minetest.get_node(pos) + local param2 = node.param2 + pos.y = pos.y+1 + if minetest.get_node(pos).name ~= "air" then + pos.y = pos.y-1 + minetest.remove_node(pos) + minetest.after(0.1, function(placer) + local inv = placer:get_inventory() + local index = placer:get_wield_index() + inv:set_stack("main", index, ItemStack("farming:scarecrow_light")) + end, placer) + return + end + minetest.set_node(pos, node) + pos.y = pos.y-1 + node.name = "farming:scarecrow_bottom" + minetest.set_node(pos, node) + end, + + after_destruct = function(pos, oldnode) + pos.y = pos.y-1 + if minetest.get_node(pos).name == "farming:scarecrow_bottom" then + minetest.remove_node(pos) + end + end +}) + +minetest.register_craft({ + output = "farming:scarecrow_light", + recipe = { + {"", "farming:pumpkin_face_light", "",}, + {"default:stick", "default:stick", "default:stick",}, + {"", "default:stick", "",} + } +}) + +-- pumpkin bread +minetest.register_craftitem("farming:pumpkin_bread", { + description = ("Pumpkin Bread"), + inventory_image = "farming_pumpkin_bread.png", + on_use = minetest.item_eat(8) +}) + +minetest.register_craftitem("farming:pumpkin_dough", { + description = "Pumpkin Dough", + inventory_image = "farming_pumpkin_dough.png", +}) + +minetest.register_craft({ + output = "farming:pumpkin_dough", + type = "shapeless", + recipe = {"farming:flour", "farming:pumpkin_slice", "farming:pumpkin_slice"} +}) + +minetest.register_craft({ + type = "cooking", + output = "farming:pumpkin_bread", + recipe = "farming:pumpkin_dough", + cooktime = 10 +}) + +-- pumpkin definition +local crop_def = { + drawtype = "plantlike", + tiles = {"farming_pumpkin_1.png"}, + paramtype = "light", + sunlight_propagates = true, + waving = 1, + walkable = false, + buildable_to = true, + drop = "", + selection_box = farming.select, + groups = { + snappy = 3, flammable = 2, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + sounds = default.node_sound_leaves_defaults() +} + +-- stage 1 +minetest.register_node("farming:pumpkin_1", table.copy(crop_def)) + +-- stage 2 +crop_def.tiles = {"farming_pumpkin_2.png"} +minetest.register_node("farming:pumpkin_2", table.copy(crop_def)) + +-- stage 3 +crop_def.tiles = {"farming_pumpkin_3.png"} +minetest.register_node("farming:pumpkin_3", table.copy(crop_def)) + +-- stage 4 +crop_def.tiles = {"farming_pumpkin_4.png"} +minetest.register_node("farming:pumpkin_4", table.copy(crop_def)) + +-- stage 5 +crop_def.tiles = {"farming_pumpkin_5.png"} +minetest.register_node("farming:pumpkin_5", table.copy(crop_def)) + +-- stage 6 +crop_def.tiles = {"farming_pumpkin_6.png"} +minetest.register_node("farming:pumpkin_6", table.copy(crop_def)) + +-- stage 7 +crop_def.tiles = {"farming_pumpkin_7.png"} +minetest.register_node("farming:pumpkin_7", table.copy(crop_def)) + +-- stage 8 (final) +crop_def.tiles = {"farming_pumpkin_8.png"} +crop_def.groups.growing = 0 +crop_def.drop = { + items = { + {items = {'farming:pumpkin_slice 9'}, rarity = 1}, + {items = {'farming:pumpkin_slice 4'}, rarity = 1}, + } +} +minetest.register_node("farming:pumpkin_8", table.copy(crop_def)) diff --git a/mods/farming/raspberry.lua b/mods/farming/raspberry.lua new file mode 100644 index 00000000..686ea5a7 --- /dev/null +++ b/mods/farming/raspberry.lua @@ -0,0 +1,74 @@ +minetest.register_craftitem("farming:raspberry_seed", { + description = "Raspberry Seeds", + inventory_image = "farming_raspberry_seed.png", + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:raspberry_1") + end +}) + +-- raspberries +minetest.register_craftitem("farming:raspberries", { + description = "Raspberries", + inventory_image = "farming_raspberries.png", + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:raspberry_1") + end, + on_use = minetest.item_eat(1), +}) + +-- raspberry smoothie +minetest.register_craftitem("farming:smoothie_raspberry", { + description = "Raspberry Smoothie", + inventory_image = "farming_raspberry_smoothie.png", + on_use = minetest.item_eat(2, "vessels:drinking_glass"), +}) + +minetest.register_craft({ + output = "farming:smoothie_raspberry", + recipe = { + {"default:snow"}, + {"farming:raspberries"}, + {"vessels:drinking_glass"}, + } +}) + +-- raspberries definition +local crop_def = { + drawtype = "plantlike", + tiles = {"farming_raspberry_1.png"}, + paramtype = "light", + sunlight_propagates = true, + walkable = false, + buildable_to = true, + drop = "", + selection_box = farming.select, + groups = { + snappy = 3, flammable = 2, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + sounds = default.node_sound_leaves_defaults() +} + +-- stage 1 +minetest.register_node("farming:raspberry_1", table.copy(crop_def)) + +-- stage 2 +crop_def.tiles = {"farming_raspberry_2.png"} +minetest.register_node("farming:raspberry_2", table.copy(crop_def)) + +-- stage 3 +crop_def.tiles = {"farming_raspberry_3.png"} +minetest.register_node("farming:raspberry_3", table.copy(crop_def)) + +-- stage 4 (final) +crop_def.tiles = {"farming_raspberry_4.png"} +crop_def.groups.growing = 0 +crop_def.drop = { + items = { + {items = {'farming:raspberries 2'}, rarity = 1}, + {items = {'farming:raspberries'}, rarity = 2}, + {items = {'farming:raspberries'}, rarity = 3}, + {items = {'farming:raspberry_seed 4'}, rarity = 1}, + } +} +minetest.register_node("farming:raspberry_4", table.copy(crop_def)) diff --git a/mods/farming/rhubarb.lua b/mods/farming/rhubarb.lua new file mode 100644 index 00000000..aaf50866 --- /dev/null +++ b/mods/farming/rhubarb.lua @@ -0,0 +1,70 @@ +minetest.register_craftitem("farming:rhubarb_seed", { + description = "Rhubarb Seeds", + inventory_image = "farming_rhubarb_seed.png", + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:rhubarb_1") + end +}) + +-- rhubarb +minetest.register_craftitem("farming:rhubarb", { + description = "Rhubarb", + inventory_image = "farming_rhubarb.png", + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:rhubarb_1") + end, + on_use = minetest.item_eat(1), +}) + +-- rhubarb pie +minetest.register_craftitem("farming:rhubarb_pie", { + description = "Rhubarb Pie", + inventory_image = "farming_rhubarb_pie.png", + on_use = minetest.item_eat(6), +}) + +minetest.register_craft({ + output = "farming:rhubarb_pie", + recipe = { + {"", "farming:sugar", ""}, + {"farming:rhubarb", "farming:rhubarb", "farming:rhubarb"}, + {"farming:wheat", "farming:wheat", "farming:wheat"}, + } +}) + +-- rhubarb definition +local crop_def = { + drawtype = "plantlike", + tiles = {"farming_rhubarb_1.png"}, + paramtype = "light", + sunlight_propagates = true, + walkable = false, + buildable_to = true, + drop = "", + selection_box = farming.select, + groups = { + snappy = 3, flammable = 2, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + sounds = default.node_sound_leaves_defaults() +} + +-- stage 1 +minetest.register_node("farming:rhubarb_1", table.copy(crop_def)) + +-- stage2 +crop_def.tiles = {"farming_rhubarb_2.png"} +minetest.register_node("farming:rhubarb_2", table.copy(crop_def)) + +-- stage 3 (final) +crop_def.tiles = {"farming_rhubarb_3.png"} +crop_def.groups.growing = 0 +crop_def.drop = { + items = { + {items = {'farming:rhubarb 2'}, rarity = 1}, + {items = {'farming:rhubarb'}, rarity = 2}, + {items = {'farming:rhubarb_seed 2'}, rarity = 2}, + {items = {'farming:rhubarb'}, rarity = 3}, + } +} +minetest.register_node("farming:rhubarb_3", table.copy(crop_def)) diff --git a/mods/farming/screenshot.png b/mods/farming/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..aba30f016aae3e97daa01c0793c2b8468a921880 GIT binary patch literal 42499 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νDV(0f4oRX)Eyy2k1#<G!~{9ZL&~|5UkD!>kox* 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℞1^eq+rXb`F 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 literal 0 HcmV?d00001 diff --git a/mods/farming/soil.lua b/mods/farming/soil.lua new file mode 100644 index 00000000..e748d5c0 --- /dev/null +++ b/mods/farming/soil.lua @@ -0,0 +1,64 @@ +-- normal soil +minetest.register_node("farming:soil", { + description = "Soil", + tiles = {"default_dirt.png^farming_soil.png", "default_dirt.png"}, + drop = "default:dirt", + groups = {crumbly = 3, not_in_creative_inventory = 1, soil = 2}, + sounds = default.node_sound_dirt_defaults(), +}) + +-- wet soil +minetest.register_node("farming:soil_wet", { + description = "Wet Soil", + tiles = {"default_dirt.png^farming_soil_wet.png", "default_dirt.png^farming_soil_wet_side.png"}, + drop = "default:dirt", + groups = {crumbly = 3, not_in_creative_inventory = 1, soil = 3}, + sounds = default.node_sound_dirt_defaults(), +}) + +-- sand is not soil, change existing sand-soil to use normal soil +minetest.register_alias("farming:desert_sand_soil", "farming:soil") +minetest.register_alias("farming:desert_sand_soil_wet", "farming:soil_wet") + +-- if water near soil then change to wet soil +minetest.register_abm({ + nodenames = {"farming:soil", "farming:soil_wet"}, + interval = 15, + chance = 4, + catch_up = false, + + action = function(pos, node) + + pos.y = pos.y + 1 + local nn = minetest.get_node_or_nil(pos) + pos.y = pos.y - 1 + + if nn then nn = nn.name else return end + + -- what's on top of soil, if solid/not plant change soil to dirt + if minetest.registered_nodes[nn] + and minetest.registered_nodes[nn].walkable + and minetest.get_item_group(nn, "plant") == 0 then + minetest.set_node(pos, {name = "default:dirt"}) + return + end + + -- if map around soil not loaded then skip until loaded + if minetest.find_node_near(pos, 3, {"ignore"}) then + return + end + + -- check if there is water nearby and change soil accordingly + if minetest.find_node_near(pos, 3, {"group:water"}) then + if node.name == "farming:soil" then + minetest.set_node(pos, {name = "farming:soil_wet"}) + end + + elseif node.name == "farming:soil_wet" then + minetest.set_node(pos, {name = "farming:soil"}) + + elseif node.name == "farming:soil" then + minetest.set_node(pos, {name = "default:dirt"}) + end + end, +}) \ No newline at end of file diff --git a/mods/farming/statistics.lua b/mods/farming/statistics.lua new file mode 100644 index 00000000..c8defa2f --- /dev/null +++ b/mods/farming/statistics.lua @@ -0,0 +1,174 @@ +local statistics = {} +local ROOT_2 = math.sqrt(2.0) + +-- Approximations for erf(x) and erfInv(x) from +-- https://en.wikipedia.org/wiki/Error_function + +local erf +local erf_inv + +local A = 8 * (math.pi - 3.0)/(3.0 * math.pi * (4.0 - math.pi)) +local B = 4.0 / math.pi +local C = 2.0/(math.pi * A) +local D = 1.0 / A + +erf = function(x) + + if x == 0 then return 0; end + + local xSq = x * x + local aXSq = A * xSq + local v = math.sqrt(1.0 - math.exp(-xSq * (B + aXSq) / (1.0 + aXSq))) + + return (x > 0 and v) or -v +end + +erf_inv = function(x) + + if x == 0 then return 0; end + + if x <= -1 or x >= 1 then return nil; end + + local y = math.log(1 - x * x) + local u = C + 0.5 * y + local v = math.sqrt(math.sqrt(u * u - D * y) - u) + + return (x > 0 and v) or -v +end + +local function std_normal(u) + return ROOT_2 * erf_inv(2.0 * u - 1.0) +end + +local poisson +local cdf_table = {} + +local function generate_cdf(lambda_index, lambda) + + local max = math.ceil(4 * lambda) + local pdf = math.exp(-lambda) + local cdf = pdf + local t = { [0] = pdf } + + for i = 1, max - 1 do + pdf = pdf * lambda / i + cdf = cdf + pdf + t[i] = cdf + end + + return t +end + +for li = 1, 100 do + cdf_table[li] = generate_cdf(li, 0.25 * li) +end + +poisson = function(lambda, max) + + if max < 2 then + return (math.random() < math.exp(-lambda) and 0) or 1 + elseif lambda >= 2 * max then + return max + end + + local u = math.random() + local lambda_index = math.floor(4 * lambda + 0.5) + local cdfs = cdf_table[lambda_index] + + if cdfs then + + lambda = 0.25 * lambda_index + + if u < cdfs[0] then return 0; end + if max > #cdfs then max = #cdfs + 1 else max = math.floor(max); end + if u >= cdfs[max - 1] then return max; end + + if max > 4 then -- Binary search + + local s = 0 + + while s + 1 < max do + + local m = math.floor(0.5 * (s + max)) + + if u < cdfs[m] then max = m; else s = m; end + end + else + for i = 1, max - 1 do + if u < cdfs[i] then return i; end + end + end + + return max + else + local x = lambda + math.sqrt(lambda) * std_normal(u) + + return (x < 0.5 and 0) or (x >= max - 0.5 and max) or math.floor(x + 0.5) + end +end + +-- Error function. +statistics.erf = erf + +-- Inverse error function. +statistics.erf_inv = erf_inv + +--- Standard normal distribution function (mean 0, standard deviation 1). + -- + -- @return + -- Any real number (actually between -3.0 and 3.0). + +statistics.std_normal = function() + + local u = math.random() + + if u < 0.001 then + return -3.0 + elseif u > 0.999 then + return 3.0 + end + + return std_normal(u) +end + +--- Standard normal distribution function (mean 0, standard deviation 1). + -- + -- @param mu + -- The distribution mean. + -- @param sigma + -- The distribution standard deviation. + -- @return + -- Any real number (actually between -3*sigma and 3*sigma). + +statistics.normal = function(mu, sigma) + + local u = math.random() + + if u < 0.001 then + return mu - 3.0 * sigma + elseif u > 0.999 then + return mu + 3.0 * sigma + end + + return mu + sigma * std_normal(u) +end + +--- Poisson distribution function. + -- + -- @param lambda + -- The distribution mean and variance. + -- @param max + -- The distribution maximum. + -- @return + -- An integer between 0 and max (both inclusive). + +statistics.poisson = function(lambda, max) + + lambda, max = tonumber(lambda), tonumber(max) + + if not lambda or not max or lambda <= 0 or max < 1 then return 0; end + + return poisson(lambda, max) +end + +return statistics diff --git a/mods/farming/strawberry.lua b/mods/farming/strawberry.lua new file mode 100644 index 00000000..919a8e8f --- /dev/null +++ b/mods/farming/strawberry.lua @@ -0,0 +1,133 @@ +-- [ strawberrys from github.com/tenplus1/farming ] +-- +-- Strawberry (can also be planted as seed) +minetest.register_craftitem("farming:strawberry_item", { + description = "Strawberry", + inventory_image = "farming_strawberry.png", + wield_image = "farming_strawberry.png", + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:strawberry_1") + end, + on_use = minetest.item_eat(1), +}) + +-- added by illuna +minetest.register_craftitem("farming:strawberry_seed", { + description = "Strawberry Seeds", + inventory_image = "farming_strawberry_seed.png", + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:strawberry_1") + end, +}) + +-- Define Strawberry Bush growth stages +local crop_def = { + drawtype = "plantlike", + tiles = {"farming_strawberry_1.png"}, + paramtype = "light", + sunlight_propagates = true, + waving = 1, + walkable = false, + buildable_to = true, + drop = "", + selection_box = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5} + }, + groups = { + snappy = 3, flammable =2, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + sounds = default.node_sound_leaves_defaults(), +} + +--stage 1 +minetest.register_node("farming:strawberry_1", table.copy(crop_def)) + +-- stage 2 +crop_def.tiles = {"farming_strawberry_2.png"} +minetest.register_node("farming:strawberry_2", table.copy(crop_def)) + +-- stage 3 +crop_def.tiles = {"farming_strawberry_3.png"} +minetest.register_node("farming:strawberry_3", table.copy(crop_def)) + +-- stage 4 +crop_def.tiles = {"farming_strawberry_4.png"} +minetest.register_node("farming:strawberry_4", table.copy(crop_def)) + +-- stage 5 +crop_def.tiles = {"farming_strawberry_5.png"} +minetest.register_node("farming:strawberry_5", table.copy(crop_def)) + +-- stage 6 +crop_def.tiles = {"farming_strawberry_6.png"} +crop_def.drop = { + items = { + {items = {"farming:strawberry 1"},rarity = 2}, + {items = {"farming:strawberry 2"},rarity = 3}, + } +} +minetest.register_node("farming:strawberry_6", table.copy(crop_def)) + +-- stage 7 +crop_def.tiles = {"farming_strawberry_7.png"} +crop_def.drop = { + items = { + {items = {"farming:strawberry 1"},rarity = 1}, + {items = {"farming:strawberry_item 2"},rarity = 3}, + } +} +minetest.register_node("farming:strawberry_7", table.copy(crop_def)) + +-- stage 8 +crop_def.tiles = {"farming_strawberry_8.png"} +crop_def.groups.growing = 0 +crop_def.drop = { + items = { + {items = {"farming:strawberry 2"},rarity = 1}, + {items = {"farming:strawberry_item 3"},rarity = 3}, + } +} +minetest.register_node("farming:strawberry_8", table.copy(crop_def)) + +-- growing routine if farming redo isn't present +if not farming or not farming.mod or farming.mod ~= "redo" then + +minetest.register_abm({ + nodenames = { + "farming:strawberry_1", "farming:strawberry_2", "farming:strawberry_3", + "farming:strawberry_4", "farming:strawberry_5", "farming:strawberry_6", + "farming:strawberry_7" + }, + neighbors = {"farming:soil_wet"}, + interval = 9, + chance = 20, + catch_up = false, + action = function(pos, node) + + -- are we on wet soil? + pos.y = pos.y - 1 + if minetest.get_item_group(minetest.get_node(pos).name, "soil") < 3 then + return + end + pos.y = pos.y + 1 + + -- do we have enough light? + local light = minetest.get_node_light(pos) + + if not light + or light < 13 then + return + end + + -- grow to next stage + local num = node.name:split("_")[2] + + node.name = "farming:strawberry_" .. tonumber(num + 1) + + minetest.swap_node(pos, node) + end +}) + +end -- END IF diff --git a/mods/farming/sugar.lua b/mods/farming/sugar.lua new file mode 100644 index 00000000..efc92efd --- /dev/null +++ b/mods/farming/sugar.lua @@ -0,0 +1,14 @@ + +--= Sugar + +minetest.register_craftitem("farming:sugar", { + description = "Sugar", + inventory_image = "farming_sugar.png", +}) + +minetest.register_craft({ + type = "cooking", + cooktime = 3, + output = "farming:sugar 2", + recipe = "default:papyrus", +}) \ No newline at end of file diff --git a/mods/farming/textures/farming_baked_potato.png b/mods/farming/textures/farming_baked_potato.png new file mode 100644 index 0000000000000000000000000000000000000000..425c4ae333ad4629fac7095108ebc6fc043656af GIT binary patch literal 321 zcmV-H0lxl;P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00039Nkl<Zc-muN z7&+k4I+_2cr?dVC(IjcSzF6=-2*Wgk*hCuw)BN>o#s5c-QvbhvnFBV6pi5vjf;1dI z?giEi!nbb4{=axJ<p11E2C%_6HG^yfDcrEZ7;FGYBM9%=V-FUenux=IeO(Oy=Vvp3 zZ38I;(I5k07-UFK1jGNel??x}+Pt!q0jv?^beMBNhU8f>{BQP$7!J}rD~$oW?Hg+$ z27qjX8C2uJ@PA4I!~X+4I5fflNC7Bh8+;i4cZD(hZwX-dU+>NEe`YGg)&)5X_@i!9 z9mD@^O%TP4^BMk6OM=iKgK9k)h>LfS29T3MPMw|%!6YZy?r?_x`PO7;Bo_bxNuTQ` TQlETq00000NkvXXu0mjfmmP<o literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_banana.png b/mods/farming/textures/farming_banana.png new file mode 100644 index 0000000000000000000000000000000000000000..f775e14cd96d00ee04e28ff5ed0080e56036f673 GIT binary patch literal 515 zcmV+e0{s1nP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00001b5ch_0Itp) z=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01m_e01m_fl`9S#00007bV*G`2iyoB z5CbCwPWwFo00DzZL_t(I%cYXdD@0Kkho5urU}hs<sar}eNmwb1iLg>b*(eKkV`D2j zd;i8PZIot3N!h3=<J&AS=9Z6X#$YfX7Z>+fjG0n1#r3XE=bYbj-rn;FDJ4$pY-<&l z({ONckmdatic^587CLtf2!@US0g5G@4Dn!NfY+Nup@ZR`4vyAG{si!tDhiDSz~p!w z`Fw@BIq}=+%ZJAdHV*|rf0sr&p5i=t!tL%DPdhUe!^v$QrYccnrnKh*@YFZ+VnO=+ zf`%52+|D!~o;T_=ANP01sOAl}o#Q!uOE8>bzRd%G*KeSB{YHs4w`9v?UPvo@jVqTY z6J5cbkK%gIku(g__gNOETFU=ID4-KQO~|1>jn1ZCA{To?sj{h772ZFqv4lX=+hxLt z0f^$mKUD7T(s(i9=qiHV-63o0o2b)#JYKGmipTg4^C4Qxdk_lf#iayLtv8e^8-W{3 z2mrFwic$YzWs$xi747o+4e=`zLjk>XU`dtX*{CRY?+bQ;r%1TN|Ahbm002ovPDHLk FV1iwP-J}2j literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_banana_leaves.png b/mods/farming/textures/farming_banana_leaves.png new file mode 100644 index 0000000000000000000000000000000000000000..cf8eecbf1251e08347e964853dabed27c627c9c1 GIT binary patch literal 621 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`K2;$RB|(Yh3I#>^X_+~x3MG{V zsS2qTnQ06R6}KLHtv%uMIEaBcSy@jwxR~46+t`>{!C<4wMiVa<BOM-v0|FgA4NFv8 zc!izWVi>w5_$Qs7kmC(Bm$SelvY3H^?+6GpPSxg<1`4v5c>21s-{Fww*V5f^YV91b zkZVMVV`)i7ei6gUb!R+)LR=+4A?N&p%A(Blj1q=5{Aa9yqI_V{qSVBa%=|oslFZyx z2Gj5SoIn{)kW6rXT1k0gQ7S`h!GDl)Zjhi$W^r;(B2Z}&!}bGP`hmh6AmQ-DqP)z! zbcO@c&)R`v>=6B>MaiiQU;j71hADH-&&^HED`EI{X4-zB7#m1gNM=b+D#MC*m(+nG zKRjI=Lo9mNPBP3sY#`7&-$#gJp{C+&Ly0c#s4Xck?Jw4Un`9r5EFh7qq;iyF$$`=g z|B0Km@&#=QFO`4y6A-l97j<a=v3niMR%aH+DDUVvTe$Z_*;}#cpLs7Qurh>bT=B~E zd_O;bN8SH~H@zqHXF6rh<Vb&P$Q!mH+$VtXfbE@)+1oRA&6+aJgg1;uTrkFGFB3yG zLxJUeIero0DH*2H^B+}-JwAVIdE>KLz3xYk)|@-0-_^MPE{EQuf?NCdwPs1JIq_M( zT6xN}D<!6dS`1>k&pf9Jf8hU<wC-@`{7-y(%Mv%4^M>t7<1gZRASkVVs7fs)D#-Al Ze$|J$Odc;*=K#Zi!PC{xWt~$(697ur;#U9w literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_banana_sapling.png b/mods/farming/textures/farming_banana_sapling.png new file mode 100644 index 0000000000000000000000000000000000000000..821c64ff374ad182b4b0bb87d4a4f7a44b450430 GIT binary patch literal 647 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`K2;$RB|(Yh3I#>^X_+~x3MG{V zsS2qTnQ06R6}KLHtv%uMIEaBcSy@jwxR~46+t`>{!C<4wMiVa<BOM-v0|FgA4NFv8 zc!izWVi>w5_$Qs7kmC(Bm$SelvY3H^?+6GpPSxg<1`4v5c>21s-{FwwmonjgZoD2W z<Qh@pSXz>iU&OF--5C#{5LXFM$T`2DvM4h>ql94%{~0TwC?8m~C^fMpGe1wEBr`Xa z!Sp*nCs2kHBomyUR#Ki=l*$lW@E@d{8zktGS)81c2vl0cu>HW6exNW1NH{#PC@(WF zo#BA=vv!~uJ4AnJQF1E7*Z<A0ValBIb8}PkN*KPKnYJG&#s*Rrl39|I%CO?yC3OY{ zMj=lZ#}JF&<Ujxa+cT>+aL#|S@MTYn?|&dS>`lg!Z}QV+jMQ$iTEsS=XHB!xDhR)^ zGb6E7kSje>`SAbd%MuT`zJ@&gw^+LCovDcanR_daZFs2Aq<`l0!Gv|If6Z@fY&>`} z;_v>(SGsJ>SEDuT5?uP-)RVvd|FdTg&ujiUi6us1|NnozZqJryrq;H8|3AYydunD2 z+HwT&SeVTH`2X^C9v<Pa)dn7%pN(t&{F#|}|K@CoSs!*Wuzk7u<p1Z-9}PGB`QLh9 zpr)`#hFfKM^HX1!B~DIy7lNn$mQTp<xh`4}{OD*jzvTV8pPknkD|icl*6E))d`{p+ zLephyogFG-XXpO>|Ms~&PkjBq)CXzl$1*t??jF*;>6opb0}L+)Pgg&ebxsLQ0A8N` Am;e9( literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_barley.png b/mods/farming/textures/farming_barley.png new file mode 100644 index 0000000000000000000000000000000000000000..ca929e0e0cfa7852ad952325191cf22bb215e6eb GIT binary patch literal 230 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!aez;Vt8QkVR*;faoT6uuoM(kr zO1XY$gGy9`ZbXA|RHshnEYsXsE)CP{)=ai+K4N`gbKt`>eM`@`MFO=mmIV0)GdMiE zkp|=>db&7<NL;S%^%iO{;Ba1fG^(TZ-v2GPB;Telyt((JvOw*!br}V>tSePLZmF-$ zXkB{w_sm^~RA+u?6=jw_w&a#z<D=%s(~3D_H<&0(e(v45N8{95-iMW|tZrYKwa1|G bUoqn=TV|uH^LQkImN9s``njxgN@xNAHN;kD literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_barley_1.png b/mods/farming/textures/farming_barley_1.png new file mode 100644 index 0000000000000000000000000000000000000000..4a458b166f4da9be9ab663b447decf7697f8f355 GIT binary patch literal 140 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPE^4e$wZ%`eJj&0=L(E6%V(oME3B z!wFG_rvh&bPsjolFqQ=Q1v5B2yO9RsBze2LFm$lWdH^{Ro-U3d9M_W*Boq$tq-!>K gim|o1v@x(Tuxw?xnXsmG6;KU>r>mdKI;Vst0HOCHn*aa+ literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_barley_2.png b/mods/farming/textures/farming_barley_2.png new file mode 100644 index 0000000000000000000000000000000000000000..96610c2f9f4e98fa44990ef6d947acffe15fc04c GIT binary patch literal 151 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa4)6(aH3Ty9nYpI%TF&BQ*eq<l ziG$%1uf;hAhUcu_`+461Wf@C?{DK)Ap4~_Ta<n{M978y+CnqdWO=vV`Nm#>X@bbU` tfkOw_QWy#qoST`LnRg30FKA|DW-#bt7Ex>w{sq*<;OXk;vd$@?2>^5&Ctd&m literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_barley_3.png b/mods/farming/textures/farming_barley_3.png new file mode 100644 index 0000000000000000000000000000000000000000..ef14b5b321603ee5d643ab99f571187ab1f8985a GIT binary patch literal 209 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!aez;Vs{@c>!@v~Ez?;R)P|IZ5 z#LGIFFSL%|x|@?>nP6f!ul;;MyH&hdi&=HHaWb6XV!6wZa$#mWP#0rKkY6x^!?PP{ zK#q^6i(`ny<+DA3d<_O1&fLLfZF%?pZ|U3U@|g3<;!54j#`?S8c&Es{)8`er{%on( z$*2F7clNJb#I;dn!&O7Ao>RwuZ!xkE_B$2h{*=wxlQG1&$~_EdE`z75pUXO@geCxA C(Lojf literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_barley_4.png b/mods/farming/textures/farming_barley_4.png new file mode 100644 index 0000000000000000000000000000000000000000..f7c90544fff9159878eef2d06988e7ffad86f9b4 GIT binary patch literal 229 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!aez;Vs{;cAn*#$+AcJZ=19J|G zXcY%XFE7J<w)kdFy9wM38`(0ZuzD;NWH`#?v6Z=MGlTmv&P^xg-2iH5ED7=pW^j0R zBMrz&@N{tuk+{6I$CK}X0uQsSg21)||Kp>lZCka&oc;91V{HGd>)EEBd(gaO?w+Ox z%Px0@)J-_>YT3=BCq&(DI=`Qo*X3T^dTNpIl*O*nm%?2wcl!w3W)tK+@c1m-%p+Va a1&j;+F=gf&UE2?|i^0>?&t;ucLK6V)PEErA literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_barley_5.png b/mods/farming/textures/farming_barley_5.png new file mode 100644 index 0000000000000000000000000000000000000000..68c0d683934b8b164bb092a1bbf61e83d453b49b GIT binary patch literal 246 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!aez;Vs{;drh%|$|4uhH@gT6h3 zsTYG+DsxaCS9CRZYCCsEFGIm}o{GhSWy=|wHZyb|WSDx1p?UhH*+A`#B|(0{3=Yq3 zqyagFo-U3d5|`)pIEo!n;BXGsW?E$M-Tv)@x2IAgKOFMs_)z+YWwZQ)>*v1Q`N6o$ zFM8qzUz<?wsEGL;7DtMIMn5vLjBl#lF4460;3`k|;|>!}?^t*>W5IQwj;($Zl9o(Z r6DH)<yk6u&)0QO}t#NA&ejJnc3}#-Rc82F5&~gS(S3j3^P6<r_RGC-= literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_barley_6.png b/mods/farming/textures/farming_barley_6.png new file mode 100644 index 0000000000000000000000000000000000000000..496a218526b6327d94126a7183d6588e1f1db3cf GIT binary patch literal 271 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!aez;Vs{;cAJ2!){G=sDngN7x8 zsV9S77^_DjYfv6fY!zQd7k9xlo`Ts7Wed5hRx-3~Wteo5!FJc(^+4^6B|(0{3=Yq3 zqyafyo-U3d5|?9pBl%bqIb2SQ-IO`{dwyAf@yR7W6Ex*m3z8m+Ch9+2T>tmv=Yr|a zayO=|{uSMpJDG21lg^7PrRTqS%gHJ}{Jg{EQ}gGVtOE-<O6T_IO;&H(c6fo_i?fwa zHta9^#+L8b=Q8>0HBL7-F7HFLCz(d%UNvHN`jx>Nu3N;S8}{Yop`!|-@qsL?g3~S5 Rw*y_p;OXk;vd$@?2>`@0V5tBA literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_barley_7.png b/mods/farming/textures/farming_barley_7.png new file mode 100644 index 0000000000000000000000000000000000000000..1c636afbea800b2748fade6f1718ddffc5b375f5 GIT binary patch literal 277 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!aez;Vs{;cA8y|y+EQ7Q<gSIuJ zsV9R&B&$~vYfwH{d=+m>2S>qlrZtl-D_1cz?qI#JIq>0`zGL6|m4MnAOM?7@862M7 zNCR>vc)B=-NL+U9jTB;0<Zw>b-o$zCufKIhy-Ad!ofgNPTR&d?y8r9L>$kV2uPIKJ zuXW7((YNx0^&JkwocX&xx8*$TVO<=-X8UmJEFSrTk^Q#}oMQy0<QTBU%$@uohrNd> zWlGVl0vCOQwc##YSB{GsURuafxoRQLmgwnm4pz;-8Eu|0Znv7icE<g7je)eO=23Z` X2G%Qn6Z9Vf-NxYQ>gTe~DWM4fHVR=7 literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_barley_seed.png b/mods/farming/textures/farming_barley_seed.png new file mode 100644 index 0000000000000000000000000000000000000000..2f00a20af9e02653dff065ad6897fc40a3cb7ddd GIT binary patch literal 145 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPE^4e$wZ%`eK$=rqflXjL-9wrzv^ zgq=at_QsgAU-=7Ez*rLG7tG-B>_!@pqvh%17{YNqIpF})q(mO~5HqfX;s&D`EDwC9 pB?!!9I?|=kwwf`9lX)TogWzmtuh%D{b^>)Vc)I$ztaD0e0svrzE2sbf literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_beanbush.png b/mods/farming/textures/farming_beanbush.png new file mode 100644 index 0000000000000000000000000000000000000000..637e7162d46a9bf193f8b400c076ad7156a2958a GIT binary patch literal 227 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa3-AeXEjDCq&)JYRO?Y<AshkBO z1<ORsH;7dpi)+4?c7DVETfd*}0IFmx3GxeOaCmkj4ah0>ba4#fxUPEIkc-Jtz~y58 z?Y`<BH#LJR(jwg(uFp8YEYTssr?#v~eB1H2D=I@-UvuUZGp+xbZ{JtS5%cL>O{dcG z;=kW33gm8XwEOwXJJr+dU2pBCO~;osEtB4(%-+3yQB07poMuJwDS^qE=1Yz-&i={R YZovOR;>fG%K<gPiUHx3vIVCg!0Gb_Gy8r+H literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_beanpole.png b/mods/farming/textures/farming_beanpole.png new file mode 100644 index 0000000000000000000000000000000000000000..ed07572e05ba64ff6aed4ca77ce0a9e089bb8d75 GIT binary patch literal 323 zcmV-J0lfZ+P)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F80003BNkl<ZSi{Aa z%?X1*5QX0kHXwKqYqAA9NClFkq=Iyi7OZLUAlQJoxg=mD;Lgvwdmo+o-h1N;7@S92 z1!*m5UOaSl006IehN=NtR@@ZRBR76E0WE$2a2C^VWr6!^a+eeE0Qzxuw5)j~sLKM` zQ=mQK2KMo5b~_<k{G@Rd6WBibXOZC1R$)5m@2~d2bDV#2FZBUg;qS-UO@dUA1^zvS zO9&kCXZ;u*jmY%@X|n&140k&c*L?j6exFi;nCWWff-?2Mw@J=gCM*5-`+(DM!EtzO z{Co-tI7^1(1G2;~^+A%WcWez=Ys#%TZD8o?&<M$yT+=kaUNJI|rTZl^PzwDy=M9E4 VXf0<~B>eyY002ovPDHLkV1gyTi>&|v literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_beanpole_1.png b/mods/farming/textures/farming_beanpole_1.png new file mode 100644 index 0000000000000000000000000000000000000000..ef2bd5abe14f6a13a035f901d2ecc7d749335014 GIT binary patch literal 242 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvi2$Dv*Te#b93PQ3ACZ<=iL`0L zISWJzmWh^c5IdzH7YbCvSQ6wH%;50sMjDXQ;pyTSqH(@;;z8bK0|A!r=hS`*WgKW^ z3(#7?GTnjm<$qQtmD`IwJ|3RtW_7m8e^>u%+k*^$SQoflC{AJ9@L#Oypm@~7ScX0B z6P$0cak@`p+w=4P7v>1rBf?x9ItSM0Fa)!zeXHw}mgd`VuYB)Trk>e9V$MgX+zqeF nJ32cltS)7B(we|7^&5;%AK3h5RvMlKx{1Nl)z4*}Q$iB}1btSk literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_beanpole_2.png b/mods/farming/textures/farming_beanpole_2.png new file mode 100644 index 0000000000000000000000000000000000000000..34143e470fa2e7762acddb6d6ec296fe18ef0f3b GIT binary patch literal 264 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvi2$Dv*Te#b93PQ3ACZ<=iL`0L zISWJzmWh^c5IdzH7YbCvSQ6wH%;50sMjDVa&(p;*MB{wxL_@yA3Oug82UC5cOP8O# zVET%4Ps;Wpp?CJ87gzDcPkqJMss6xTdXc|juP8Hv9rJ>wghSfg4Ik`T54MK;wB8YA z@K?Cx<Ua9+4_m?Uf2a8c`jlc47zEi5<Zl;TVre~Ns*8DPf%i1s8|C`0S=BfF-`Ez` zTfA7k%fo2p%`>j^qMcWT|5sV*baT(%Nj-0tJp9l*>z23d9tM_gJVym?I+_Dr%HZkh K=d#Wzp$PyKw_sTS literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_beanpole_3.png b/mods/farming/textures/farming_beanpole_3.png new file mode 100644 index 0000000000000000000000000000000000000000..d693f17090f63db73650a55b8691dac267d39b5a GIT binary patch literal 297 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvi2$Dv*Te#b93PQ3ACZ<=iL`0L zISWJzmWh^c5IdzH7YbCvSQ6wH%;50sMjDW_-_yl0MB{wx#Jzln40u}RUQyGwe<jD& zvDGPQdr0c`0KxSaTfeJ2Hq6zjIPu}+^W8TX=6?zZe=haFoVVddQ>nJ4$$`Ixl}+Uz z3=-Pb%1_RH$Z_1uS$SSoxSF&|hxnX~K*w1uX(G7?YXfIWOxa(S&TDjDa>r`UqHc%K z37j5F%ul|TX>l{YlI||kG^w%CLh`<xYRBaS3GX+3YqKlQbM3SK>De+(VG;L^B|S6B st5l*^=(wKmXxfyNe(uB!^}PqVlPtueObpeefL>wnboFyt=akR{0Ota4WdHyG literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_beanpole_4.png b/mods/farming/textures/farming_beanpole_4.png new file mode 100644 index 0000000000000000000000000000000000000000..c779b254c52345ce2dea0642ce8e5243a98b19a0 GIT binary patch literal 355 zcmV-p0i6DcP)<h;3K|Lk000e1NJLTq001BW001Ba0{{R3fmCP50000XP)t-s0001N zOcaJp6og$EhitHBmJ^$N%50z%aHbV^uolm-|1zU2p#T5?0d!JMQvg8b*k%9#0Psmf zK~yNuRgph$0x=B5eL=>g)3qH~!@pMDPF=b)wCZL!P*y-lNS)l1Qq*s88!Ho^lN41K z$D5z-z4wa`;C~FL>3>SE(8Aq;%{^p8?5I_HkWiv1;nbf`R+}tk8-C7NNWI9`6E@%Q zt3&BwS$X}*+WA?A`cdI?R<dI%)o#TI)(Vw;E&HHRaRe8`3WFTLkrPM=(+w1F3Z!{D z6U^S#OMpa%U&(T0D^#ga6B}`CJ7GWOctoFiFGCb7MFPX=A!7Gfw?<#{l7yR&U9t$Z zRwNzZ)klf>u@g#a>F+3=;80Kooc?zSj4|mZTmka@E@i)#-dq3x002ovPDHLkV1l^F BlU4u# literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_beanpole_5.png b/mods/farming/textures/farming_beanpole_5.png new file mode 100644 index 0000000000000000000000000000000000000000..910f8a07d54f862539b2877ce6a389c4120c7bcd GIT binary patch literal 353 zcmV-n0iOPeP)<h;3K|Lk000e1NJLTq001BW001Ba0{{R3fmCP50000UP)t-s01*Ie zOcaJp6og$EW|k9dpcHVX6?d=}dB$FY)@J!00iOT>00DGTPE!Ct=GbNc008kxL_t(2 z&s~wRPQx$|h8_2gI9m$pZb~b}hLAe28G@x|J0e$g-y%!)Ac0V~sOpf%#X^X?^tSt? z`~CS&slU=nR!*~Q0?_HXx*!%?(T77QfduG`zN;rAV-^k*&{r=;_T6XmKJH~GUcdHU zfZ@&h)g%I+VJ*Q?Z?TkLiKhsaP(@$GB1l!Z9gTKE1FbSU$08vl@Uamh&4WU<8W>at zi53jPuFeS`8FV_PmzLi=vfK_>`y+$Jnev#i7}&2?nHifkHsuw~J%gf8Yju`KBDOgZ zFW|`op>sF?pu`r_efi!N2<Xc3y-VdFCH;aQpF=5G1cuOb00000NkvXXu0mjf6{?V| literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_beans.png b/mods/farming/textures/farming_beans.png new file mode 100644 index 0000000000000000000000000000000000000000..ad5cf8595eca8ccd8030b44ab2da0cf0daf0c4d2 GIT binary patch literal 193 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPE^4e$wZWnhr3%wk|z#=x+jf#D=W z=E=;)lZ~;yS&xAV7)yfuf*Bm1-ADs+qC8z3LpZMco;%2UK!Jnx!hMc;vW<cr!V<9u zmb|g|w$J6SdU$fWLcyG}+O6+)T@+f^%yQ^xs(?9%y4ayZ40Aorj%=M=GwJV1mGwP= oJvHqcdI}dg|Ggje=EouCyZoF_%@$U#0NTRf>FVdQ&MBb@0Np=DHvj+t literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_blueberries.png b/mods/farming/textures/farming_blueberries.png new file mode 100644 index 0000000000000000000000000000000000000000..b0c493195c4b46e5196221e5f0c49b7cf16adbe7 GIT binary patch literal 164 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa4)6(aRRD?FGDuXi$VD)y%x2Nu z%@EKjnzcu)@s{-NqaT5?j3q&S!3+-1ZlnP@=AJH&Asp9}6ArM=;90=a@1mh>BdEnV zmC3VVrUK^%Edl=7S_bwuf;x{FmmEk^Xnkl9TX4I9fuU*%*L>$Uk3)b)FnGH9xvX<a GXaWG3;4NqX literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_blueberry_1.png b/mods/farming/textures/farming_blueberry_1.png new file mode 100644 index 0000000000000000000000000000000000000000..83832c86bbe553d3cb75a6888550931758c827ad GIT binary patch literal 114 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!D3?x-;bCrM;TYyi9>$ZR|6JHC@W!tw1D8g70 z<QL4~@a#q!kR#>k;uyklJvl*vMMOe^MMi?9N`j})P-6!J10MrZdH|!oHc%CVr>mdK II;Vst03L!ESpWb4 literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_blueberry_2.png b/mods/farming/textures/farming_blueberry_2.png new file mode 100644 index 0000000000000000000000000000000000000000..308a0caf006a7d617319c7cc98453d7a36d8e55b GIT binary patch literal 223 zcmV<503iQ~P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0001{Nkl<Zc-rld zp$@|^3`C>h@_o(N*kEDlq_MDpfx^<_@_uNhOZC!QT2eMpOHmS^?`&TPXZ(4@sY%cA zl0Ne_9U^u^NIGpFGEo8&0@ojGm;88dLFHYfOeTPFrK;OW-U$p&5#YGGh@MlB^Cmfb zWPd}r$K`-w?vG&<lH=`rBT`RRx_NgMD~AV6Lyh*&tDvR=I=B#i)T?bgprAH%k8pdf Z|1T?ck@a`I2mAm4002ovPDHLkV1lh)Ufuuz literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_blueberry_3.png b/mods/farming/textures/farming_blueberry_3.png new file mode 100644 index 0000000000000000000000000000000000000000..43d2ab135687f55ee1ea1ed9f089b5bc0d6f80a9 GIT binary patch literal 231 zcmV<D02u#?P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00024Nkl<Zc-rld ztquY~41^o>d7cJ`L!QKv;LafsNG$q1uSqDGCEqex*5DA=q}lDyOs9=l?9XkQhdkU? zdA_gnC*U(5xxYq^mnc9Hh={sk^>o1k?oN@typvRADj-)A^*RU@C?k)O65!6x8m>ZQ z%K4CDF4_M8w$t0Gaoj2sR}(q@zBeSTvO3K#t7hf60d-Vp|FQ~fYG49Q0!V>s?P^~) hprJiz53o6Y;uowDqLJPOy4wH%002ovPDHLkV1k`AU_Af; literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_blueberry_4.png b/mods/farming/textures/farming_blueberry_4.png new file mode 100644 index 0000000000000000000000000000000000000000..75fb69a0ee637f2bcfd309bd8b3c1e8ddd049559 GIT binary patch literal 317 zcmV-D0mA-?P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00035Nkl<ZILqx) zD{jL;5Ph~Hg&2fb&Lwh$vJ?d_w8AWfEvOV=u+S<qC^D#&NG8b<BIg!4Lx6c?RP_~X zW_Oj=g+(1{<+bPiW@O;M{;1|9$6C>EJl!N5h5>1s;&t8sh>gb_^9sCPZ`kin0Dz*7 zDZR4II2tjpz||JtBIgz8MDBuRn-O_s!MaJP45*ugVG3mevAdCQoPeBAJp>9-8H;l! zQmZXES#*^9BVnoSk)Cc6H%=5f_dRfav)|-i)G^;*J|h5FYH&IQW;5V;=<soQj@)d@ zcxM4C<98rWS#a5Ab`(jVjE^ax$)aOX$5h70cVgks6_Oqo8oEn8ZT$Ne*yo~Bq#j&2 P00000NkvXXu0mjf0WyUw literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_blueberry_muffin.png b/mods/farming/textures/farming_blueberry_muffin.png new file mode 100644 index 0000000000000000000000000000000000000000..b1253d7074edfc48f8a336f8b1eb8aa217da07b6 GIT binary patch literal 236 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFv5AX?b6=YyA)7NG2YT%5Weauq# zf~)DnNT*LZ{>SDgURafPeRJjAo%Jt|_3c=7)EcOTu_VYZn8D%MjWi&q*we)^gyVX0 zLPCOwh)4nhlUrwBpPPVpMD^FSUbh7flh3Vj)-LBT@OWcc{Orlh%e_2@W~KLBn`61= zgu<3*J(p$$PZp6>c{V4qluhNRhVACX$<N#v*^W6lDhMzdIUQigSmYroz+#k;Y~VE2 gz@VYT(13wKV!rz3>=z9ifz~s4y85}Sb4q9e08e;RLI3~& literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_bottle_ethanol.png b/mods/farming/textures/farming_bottle_ethanol.png new file mode 100644 index 0000000000000000000000000000000000000000..84e6162de837acf5f930477d9c6ee8877d35229f GIT binary patch literal 221 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa4)6(a1=3p<Z9lN-!10sEE?v2J z_44(*_wPJ^`RvQrPu=Mu-+<DLB|(0{3=Yq3q=7g|-tI089jvk*Kn`btM`SSr1Gg{; zGcwGYBLNg-FY)wsWxvNM%*C#8$NrlLP{`WT#W95AdUC=6rW;yTTncNL_}FB4%oL9@ zg}5!4G)ZE{!;BoBGy`r)O--u?$zyI^j2TMD64;!?j|4GvOK^*ZNc=htG={;`)z4*} HQ$iB}#u!6} literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_bread.png b/mods/farming/textures/farming_bread.png new file mode 100644 index 0000000000000000000000000000000000000000..bd00e3e139782539349ad21ace6796e9d323ec79 GIT binary patch literal 552 zcmV+@0@wYCP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000iA z000iA0f*eFZvX%Q2XskIMF-pq3Kbm^r+wQ_00008bVXQnLvL+uWo~o;_RN;Q0005A zNkl<ZI1$ys&1w@-7=YpTn={iUGnqEj##%~2i^V(WQt<-30@nqXf_ufCYZn@*H{jL_ zC@8wIh!mIpRFs;DO-=JRon+>m&!lD{!JP~7dHDYce{k<=MVsk>iBic20p~P(_^K!~ zL-<YohL^ige2GdpGLml)7^o~LgVZr<dmLvveDqpNObJu<Z7Dvz!+4^^HN)DukkDTy z&n%yt4SozPS?;h-5TSUyrvYQ~^zN3->&a;U<p=+$?+A=xW3|lrc$s$AraLHD3?o{j zKAj|`SAZg{L{V}7ML!V6>f5VD?|otpPlZcMA+>7ELAOQ!1V-uzL|CcCh_)FWLgFA5 zvGq6Vd;H>Y0oE!)wHkBqy+!A!ARXomGs`e9Xf@i*8K_)@%P~Y?81p&P(>O+m7D<k~ z7;A|FrEDQ~&;sTKXo7bI)WBxK8GrY|bs_EO$HqR^>kwDL%_&g^5`h%3o&rPg)&T*D zfd!Q3AWZGv+0-xTSF`}9;ILR6D0nC;%7ltCacc)*OqlWP_J*oE1%*!D!(v#{5HzB% q18(j#gjsK&T=V!_d-W}!f8i%XZ^E3%vu4Er0000<MNUMnLSTaFQSrk7 literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_carrot.png b/mods/farming/textures/farming_carrot.png new file mode 100644 index 0000000000000000000000000000000000000000..73f2fd47bcdb21d6a2e8e708671be884cde03b46 GIT binary patch literal 220 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!aez;Vs|Ao7!l@h2S>q|v6C`4u zBWO{^JvUCuu9bUvs=Rxrz`imq|5*azOT{kLtKID~d@|dYO{aVtP&;EukY6x^!?PP{ zKu)-)i(`ny<*9w1LJbN$EQ;L@90&jJ58E>3X!p}QRxf8A*(smcHg&7U`53cKXHUjZ zvkU1$t0Xrz{HTsEKh1Hmd|{#5b!ok07w7xUU)Fr^Q%^7FbpH4sbD3S;nLJmoom2<3 Og2B_(&t;ucLK6UaE=pej literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_carrot_1.png b/mods/farming/textures/farming_carrot_1.png new file mode 100644 index 0000000000000000000000000000000000000000..bbeae7e8a3ca2915c4b76dba28933e95a6ebdc0b GIT binary patch literal 108 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!93?!50ihlx9oB=)|uId~D{<8$amx`^jo6-jq zWGo5t3ubV5b|VeQ5%hF%4B@z*oUlMBgCR+cosEGdjNx!I_xT$@Nd`|>KbLh*2~7Z+ CK^ZXs literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_carrot_2.png b/mods/farming/textures/farming_carrot_2.png new file mode 100644 index 0000000000000000000000000000000000000000..b24ecc05049160fe0965788b1c5b767530ae92b5 GIT binary patch literal 111 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!93?!50ihlx9oB=)|t{xl${<8$amx^gVx%C?; z$XF8O7tG-B>_!@pBjV}e7{YNqIbnf}34@_>M?z5o0|QqaqYL-egkwN?22WQ%mvv4F FO#mQi8odAj literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_carrot_3.png b/mods/farming/textures/farming_carrot_3.png new file mode 100644 index 0000000000000000000000000000000000000000..840050570f0fb4f23654553e1a90026f3defe895 GIT binary patch literal 113 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!93?!50ihlx9oB=)|u1cH&{<8$amx}2yUyKI| zGL{7S1v5B2yO9Ruh<Um=hHzX@PFNtZ!GeMF7@NXDu>%YY?E4sHEZY|a0#z`0y85}S Ib4q9e00lT2M*si- literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_carrot_4.png b/mods/farming/textures/farming_carrot_4.png new file mode 100644 index 0000000000000000000000000000000000000000..32ee26245c9e8c2a2821d3fae65a911b4abdedbb GIT binary patch literal 119 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!93?!50ihlx9JOMr-u0YzoQ^0?gK=@Lz`)+;~ zKt5whkY6x^!?PP{K#ruRi(?4K_2h&FECnVEoXeOUnu-}ao*rOe5MRM$=KRj<El?4I Mr>mdKI;Vst0KR`6IRF3v literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_carrot_5.png b/mods/farming/textures/farming_carrot_5.png new file mode 100644 index 0000000000000000000000000000000000000000..0bcd9c1e3baf7dcc4ce9c88dbf3dcfe4ca6dc1bd GIT binary patch literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!93?!50ihlx9JOMr-u0YzoQ^0?gK=@Lz`)+;~ zKt5whkY6x^!?PP{K#r`Zi(?4K_2dKv;Q|u|&Sl09O~s5IPZ?As_zf5sR2i6=nXX@q Q04ikgboFyt=akR{0P;>7g#Z8m literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_carrot_6.png b/mods/farming/textures/farming_carrot_6.png new file mode 100644 index 0000000000000000000000000000000000000000..a17c6b2bbff968e6e4946726acf6442f54f92bcf GIT binary patch literal 129 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!93?!50ihlx9JOMr-u0YzoQ^0?gK=@Lz`)+;~ zKt5whkY6x^!?PP{K#sDfi(?4K_2dKvUI~VcuFMk>te90S#2Gl1*%b~}FsM8`z`)?- Wz<f0^_^T&SIfJLGpUXO@geCx>;T{J7 literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_carrot_7.png b/mods/farming/textures/farming_carrot_7.png new file mode 100644 index 0000000000000000000000000000000000000000..d26eee7cce6a0d6cc021517a73d615b470958d6b GIT binary patch literal 144 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPE^4e$wZWnj>>DC4$k<#z8BaOo59 zpCu5!R4n1wn;$?0j3q&S!3+-1ZlnP@nw~C>Asp9}6Be*07&inkG79Wt%ywdG5tZQz nJ($H1c=*5@hO0+Z7*rTaYMHGL_B2cdYGUwo^>bP0l+XkK-Pb3p literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_carrot_8.png b/mods/farming/textures/farming_carrot_8.png new file mode 100644 index 0000000000000000000000000000000000000000..00b6d92885e473fd0ca76295b14c1294559d9765 GIT binary patch literal 160 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFv4DbnY1=1E}+;*+p?wtZIeFFQ+ zwESlYgfA7lRIhfo%kar;Upb}x)j&mzB|(0{3=Yq3qyag)o-U3d9M_W*7APf{Hw18U z3hZNyc4TasI)^RvU>ZZ<;RA0Nt{zcgNIjFqD#Wl#j%9yx<l}UpMg~t;KbLh*2~7a# ClP-+_ literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_carrot_gold.png b/mods/farming/textures/farming_carrot_gold.png new file mode 100644 index 0000000000000000000000000000000000000000..b817101d7fa8ea04f17ed6ffad175f6e590a5f23 GIT binary patch literal 207 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDURWaby2;tO?=ZuZ!HO~>W zDB~{3;k9e!cJCDMpCu5!RBZ7g_k;VSE?+i&|32&Y?@M18c|is-mIV0)GdMiEkp|@W zdb&7<a9mGLIKUSpqF{1*jix|bxQpP7ducaUaZXCEu0HGR%y8ny_wO5a33#aeKWC^W zaQ55x9>$25|E$vl_U=5cVDjCxgN1oEBVV>8g9xwSQID##Z-53fc)I$ztaD0e0stTJ BMu`9b literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_chocolate_dark.png b/mods/farming/textures/farming_chocolate_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..03243b274bcacd462e39b4042b2c364fbdee6007 GIT binary patch literal 194 zcmeAS@N?(olHy`uVBq!ia0vp^;y^6O!VDyj#A@{cDgFST5LZP826GvPRAZ)e6NU~K z##)8j+CVABk|4ie28U-i(tw;qPZ!4!j_bbt7X=R}a5xt-mohgCU*MhcH(je^>$7&7 zzGjClAx5&ITmDqb6!CLv38-&bpa04@nCo<{Lh#iW{1zQeOZ{1Fx}F|A&~=OF_qJD| p->yC>5L#nhvwUaqw%^Tf<8Ry-Qj|ClUjej?!PC{xWt~$(69D9SLB9Y1 literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_cocoa_1.png b/mods/farming/textures/farming_cocoa_1.png new file mode 100644 index 0000000000000000000000000000000000000000..f887a1fb1b758229c763a7f60d4bd15436877b8e GIT binary patch literal 230 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!aez;VYl>^Oil2&hvcBVF6_<rt zKC4v&Hfe?K(TzK0kao^K`=VFbCExNZVRhFM+HYo0xKq0DewA_jtbai5j3q&S!3+-1 zZlnP@iJmTwArhD8_PPr-IB*;&=oZQRU%xh6GJO5B0~2Hz5(1_*7wJuJnl;s$PyX^@ zCcSg7<R%&<PCxM_{K8q|!}A;ty-NDUl5**x@tO`5Et~!X^|W`!Tl!qS{Nmo4)XdNO b(A@g(MW#RR?N9FkTE^h%>gTe~DWM4f?R-~> literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_cocoa_2.png b/mods/farming/textures/farming_cocoa_2.png new file mode 100644 index 0000000000000000000000000000000000000000..f0d393532509e2d9c2aae1735feff65735cafe99 GIT binary patch literal 244 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!aez;VYl>;Uil2&hvi__tq4k{% zN9QqIn9J~J6T_Wt3_njWd_O7o<ATV?iw6Imc)ojH@auW>zo$iOpB-Kg)XrEE<QL4~ z@a#q!kdyD};us=vIkeAH=zszTOJ|o-(~tkx**0ffikYFefT7@!A!m5;@w`P3C(dJD z(WP-mCcKQtOlw)%E+b9;m$BP2-emP`V<}$UymKEDcj&iUO3zo$xF+c0l+@+zawdYS qR?d^NxKmy*R;A%T#~;u4hd4c7Gp{*kH7^TjHG`+CpUXO@geCxssa}u( literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_cocoa_3.png b/mods/farming/textures/farming_cocoa_3.png new file mode 100644 index 0000000000000000000000000000000000000000..8eaf67eba312f190d3a9602b351bba1942295c31 GIT binary patch literal 253 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!aez;VYihrtil53_4Uzqtf@ciG zwUhPlnn*sgQ+n>9`#i+@Rf5OstdO^*N$;BSKlD_7nqT#Gab8NqXM3P_#*!evU<QY0 zH`0Kd3Qrfu5Q)pa=K}ed6**V}!bMmetN&jvE9rb&W2m3u!MXChpY7r3_L)~5zPx&u zR=jNT^Dmup4Le?yG`Na0--w#e?R@oE)M@8k9A~!gJ8)^%su{ez4!bmb9trC$-THR} zi$H_*8#yPJGi#r6TRuPJ@^X65)H(l}=g!#ote9n?&bkwNKsPXWy85}Sb4q9e0Kn^G Awg3PC literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_cocoa_beans.png b/mods/farming/textures/farming_cocoa_beans.png new file mode 100644 index 0000000000000000000000000000000000000000..4022f8e8b748f132bcae1a762a0ee96d80c75fe4 GIT binary patch literal 187 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPE^4e$wZ4cpG?sKo25Et+T{Ti~MF z8DTa(-R+9gYhj=Q#*!evU<QY0H`0Kd5KkA!5RU7~2@Z@ojRL18TorUt@6<BlYLakt zYU*K9Xj?dmA;PyQA!(I|g2z&aRUHBWhO-m8Iu;0cY;>5E&^1fZW1~Xy1dW!13K|+5 f8yU0s^cWa6ALXe3yedx!Xg-6dtDnm{r-UW|E!{Vd literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_coffee_1.png b/mods/farming/textures/farming_coffee_1.png new file mode 100644 index 0000000000000000000000000000000000000000..97c207a313610e5e4e8316d762ab75d8e8236aad GIT binary patch literal 135 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa4)6(aRbXJ?3guI(Qc<o|vzTEW zc_=3RTxRN(^xm(1kx>@;KxK?2L4Lsu4$p3+0Xb5hE{-7_*OL<#=xekX-jG?q!^f)8 de3ik2fkAvRqo}92{sN#X22WQ%mvv4FO#q!(BT@hW literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_coffee_2.png b/mods/farming/textures/farming_coffee_2.png new file mode 100644 index 0000000000000000000000000000000000000000..a659f851fd94fe9e9025d2ef700b41bb19714e01 GIT binary patch literal 145 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa4)6(aRbXJ?4B(Nhlrx)a6Llym z`9fObi<*XaRb5~EjM74dfyx+5g8YIR9G=}s19DV6T^vI=t|uofkmG1EjCjbytkLYt oc<Moe;f=%~9RtBIMg>L&V_ils_RF7~fa)1MUHx3vIVCg!0Fn<VW&i*H literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_coffee_3.png b/mods/farming/textures/farming_coffee_3.png new file mode 100644 index 0000000000000000000000000000000000000000..93088c80fb80b74a0e45c101060e04121d99bc92 GIT binary patch literal 171 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa4)6(a1=5^;+%nY)W>al#7TQD| zib^@3TJ)&2{ZmK7QinM}X~vQuzhDN3XE)M-96L`J#}JO|$q5R48xBgc1+eYTWNbOO zP=IgQ=}V#tLVPk@0j4sqQUi{jQ{ziuTg~Lm6rmuxO0CtGA<d|Rk-=~y>x~8>m!CkB O7(8A5T-G@yGywoQ%rRa7 literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_coffee_4.png b/mods/farming/textures/farming_coffee_4.png new file mode 100644 index 0000000000000000000000000000000000000000..37a609f66d24cd61f8aed53098d2f0eb4a19578f GIT binary patch literal 192 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa4)6(aRbXJ?4&jlhRxq1tYqQWM z>QGe5`P8CErR|?Oaz20h1ysgZ666=m;PC858jut0>Eal|aXmS~fr%|(mZ6}U5L0po zr-Nh;TY%W^Oh?8UiVG$9u7yln$1t&AV*tbI#PlZt`pqlS%FPNHj9o;J2s>=4Smng& l(PDelcLBqqHeMG-23`lwI{$O`*n!3~c)I$ztaD0e0suJ!Ix7GG literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_coffee_5.png b/mods/farming/textures/farming_coffee_5.png new file mode 100644 index 0000000000000000000000000000000000000000..e624fbebe1129c5c884a7c3abd76d86350e62e8c GIT binary patch literal 192 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa4)6(aRbXJ?^y6M^&LC5*U^dm( zW}!{u>7=4ZrR|?OmWRFS2P$JM3GxeOaCmkj4af=hba4#fxSpKgz{D3YOH)v75?AsH zO$W&wz5ub^(T<EW7A8*NyB0Dnk6|LmR|AICiRq6F^qW_t@fY$o%t&4^k73c(%RF9= lN^e#sGO-Gn<}f)hF_hbIdruG1UjsCr!PC{xWt~$(69C(}Ih+6h literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_coffee_beans.png b/mods/farming/textures/farming_coffee_beans.png new file mode 100644 index 0000000000000000000000000000000000000000..0786f4e7ec4c60b67bc69814b5aa8a806e66b878 GIT binary patch literal 204 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa4)6(aRbXH+P!l%O7Pit8b21V4 zw379)l?t|(jdoM&Q(QI!sEn~B$S;_|;n|HeASd3_#W95Ay6)MtybTIG4Hx}ATa@!2 zaBOJITd=6yUEyNIw<C9)7Pc>2Z?7p4WwY)Hf7ON6H<woaIw*cAIwvvuT+59G)5Bzv zPpVxrT$v}`G~v3YV)QrHSuZ~oKA3jiN26|<7v}|reaf{!s~9|8{an^LB{Ts5F@r|~ literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_coffee_cup.png b/mods/farming/textures/farming_coffee_cup.png new file mode 100644 index 0000000000000000000000000000000000000000..d3820bc74f092e74bc21475ee418f4444e5c66dc GIT binary patch literal 164 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa2=EDUO)Ovtu@TDh5pRl>xp?`) zua9p(eS7-h+sAI6D}q2Zj3q&S!3+-1ZlnP@R-P`7Asp9}6BY<;Sh}=zsValy8-=(^ zh6#y0EUa%%@Te*{ByLdQ;_6z?Bx<~an`>GFZ<3~dc|rmM!;xOD{YKWQEkIKkJYD@< J);T3K0RRauGzb6y literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_coffee_cup_hot.png b/mods/farming/textures/farming_coffee_cup_hot.png new file mode 100644 index 0000000000000000000000000000000000000000..f4fae904142e3ac14ccd50da6311f4074b9a2e9e GIT binary patch literal 183 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa2=EDUO)Ovtu@TDh5pRl>xp?`) zua9p(eS7-h+sAI6D}q2Zj3q&S!3+-1ZlnP@zMd|QAsp9}6C4=W#n{*d&K{d^fK4oc zk+YF8K!MSfS7yV~rL9XFpWJZV^NB&>umlI!jfs+84h@GAJViuA{8_cq3dBWp8Y9Bu c_)H`jZvW$T<lMp105q7v)78&qol`;+0PQ6?nE(I) literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_cookie.png b/mods/farming/textures/farming_cookie.png new file mode 100644 index 0000000000000000000000000000000000000000..e80be35827d53a6307d8ded63261673ff1688f51 GIT binary patch literal 566 zcmV-60?GY}P)<h;3K|Lk000e1NJLTq001BW001Be0{{R3M5Kzw0000pP)t-sH~;`^ zG5~fq0EImOok{@Feh1iu6Wxdz-j5#QlPuqsEaaLo=A1n1p+M}YMe(dj`La)OKFPoU z0004WQchC<K<3zH00058Nkl<ZILmdDiISr*3`B#Cbyza^|G##+4b*Pf9j8cA)<aV3 z_<X)kEuUYHne|$Ws*3#A-0(3|#gFRSEKS_q9Ebw^7ZDc{Ja82OPQL9Pk!ca3N(8yc z%WPJ03kENT?zL`zeAohF-)kvx9jj%NJC9mL;D3x!E56ePeKe?TdfBT#_Q8{x;mid} z7zEJ}R$w`JYz(-_h>pwF8eK4VnkVej4iHHIL|Z{@0du{7%sg@=)F1|2u;yki%fWHt zfSZ)#AZ*{LgV+NMJMkx2kCZSdl?6nyM(3RHfD8~YU9-C{p(YLhHQE?~hz$nF-e3nH zkB4oXW1dKHge0oep@A|{XUGBonUfml9FmwF?Y0280KhEAEffi+N9&xdRfoG1%f5<~ ziSBjeP*%GP{ntgzU<T9(0OqpkD)nj>3FwQ#NkH$rs{;6}Zn*(S7C2{?1z5*?m2&qR z4($ShzF1}V4hj94C|N^<XCe*12D3c_bM1u3%@9L{Fx1li-WuV!lM(2nEPXA8u%O;q zKiW-g+uoZexG#8C@V&eNt}a$%!@Jx(6zR7G$N9SY0kg~-4}y%kWdHyG07*qoM6N<$ Eg30msfdBvi literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_corn.png b/mods/farming/textures/farming_corn.png new file mode 100644 index 0000000000000000000000000000000000000000..2a2894a4807ecf9430db958827baba16a4ef0686 GIT binary patch literal 197 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa4)6(aRbXI{iBVE6RCnof+B8w& z%mRk1D+C^|<$1PUy?C)t3{V+kNswPKgTu2MX+Tbdr;B3<$Mxg{2Ub~Lfmw&wGPp<< zZ&}(X$tJt*T>@wKwSWx_#sLgxHWcvcvU6`~Yja46a=ygM+Q6ecH9(!sQNa16E5n*d qPfvj(=?Nl2DG4mxoK6}R3=H$q`C<e%m%Ibo!QkoY=d#Wzp$P!)!Z~UH literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_corn_1.png b/mods/farming/textures/farming_corn_1.png new file mode 100644 index 0000000000000000000000000000000000000000..60e8b9975ade8ef4ead063f564c25699f60e29ab GIT binary patch literal 107 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!93?!50ihlx9oB=)|uDdt|f}71#d+Z}ZmQMi+ zGL{7S1v5B2yO9P`?&;zf!f`!0VS!KqgCH*t1G50b!3T@~=mF&zJYD@<);T3K0RXDb B8J_?E literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_corn_2.png b/mods/farming/textures/farming_corn_2.png new file mode 100644 index 0000000000000000000000000000000000000000..6ba6cc976c0d2b202443fda81a0de92a0deb2c95 GIT binary patch literal 121 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPHV5AX?b^<-cOZZ^;8b1j<Y*S0vc zxH(!8D8*P3<QL4~@a#q!kR##g;uyklJvm{4aY2J2&jOQfhA9VCcvKj8&oRtu;eB-( PsD{DQ)z4*}Q$iB}#Oxr0 literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_corn_3.png b/mods/farming/textures/farming_corn_3.png new file mode 100644 index 0000000000000000000000000000000000000000..c5fa80b181ded51ba28cd87f9395c5e08b465b41 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa2=EDUO)OvtZZ?l>GmUMxOz5*r z?Xl13bDgm%Zjp@19iSS<k|4ie28U-i(tsQlPZ!4!j_b(@3zP~PF1_IjVB2izb4ucv lL4zSnLRTWsHU<So26HCHrrCR61_RYIc)I$ztaD0e0svluDIfp< literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_corn_4.png b/mods/farming/textures/farming_corn_4.png new file mode 100644 index 0000000000000000000000000000000000000000..a43632dd31961ae18b82fcd2891d356ea05b339f GIT binary patch literal 154 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa4)6(aRbXHUYcWo4bx7#2O6;>p z?RU?c>{>bBYubjSmC7G^fyx+5g8YIR9G=}s19EgdT^vI=t|uobh>AG8WMkKGc3!}E yC}ERF1DE7M5$OXNj60Gvnnl%)PG~s8!0=-~OVCWWTg!nO89ZJ6T-G@yGywoEeJ!Z~ literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_corn_5.png b/mods/farming/textures/farming_corn_5.png new file mode 100644 index 0000000000000000000000000000000000000000..7b6fb02b707ae653e7b29c5b384271e3e94dd93f GIT binary patch literal 161 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa4)6(aRbXK7E;o#9HBD}Hi0?7W zndDwI&$Dhp$kdH-Pt4_R0+lhA1o;IsI6S+N2IQD{x;Tb#Tu)9oz%Qd9BHeTF#sr3` z8ymU|HdvWBMoKXzteW7+tEJ2k93#gNyoSNpl0lo9p}dQYy)kBP0#HALr>mdKI;Vst E0Bim&3jhEB literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_corn_6.png b/mods/farming/textures/farming_corn_6.png new file mode 100644 index 0000000000000000000000000000000000000000..313697b90653b62819b4df7606ac80e65157911d GIT binary patch literal 268 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dy#sNMduHAMEG?QgK%MC)BO`==v z;@d5wJB?F%>=OGdGA4OtPj)Su>{dS4y>ms#v<*qKHpNZfme@0)dJ0fGV@Z%-FoVOh z8)+a;lDE4HLkFv@2av;A;1OBOz`!jG!i)^F=12eq*-JcqUD@w(3UlgNWwtGQ2NVkO zba4!^IGvmz!McUP=g*YY4;~~WJV-sVys6i*L2|v|nwp9ymNOf;Dn4XBPf1KT`rfU~ zFO6wm!twPC5?pUu4s~`1cog-wskpEzvc|NCENE9@SkuY4r?JYY2xvNkr>mdKI;Vst E0JT<Ea{vGU literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_corn_7.png b/mods/farming/textures/farming_corn_7.png new file mode 100644 index 0000000000000000000000000000000000000000..6a937e79001af0610dda8411ba94809ce49fb0ef GIT binary patch literal 275 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvg8-ipSKS0f&14zl6glH;v-P1m zzU77?&8Cs<M)B>IseMktGlFuaxD`!yE1MZqJlm&sj)#`cJ#(O5#*!evU<QY0H_||y zByV>Yh7ML)4<LuLz$3Dlfq`2Xgc%uT&5-~KvX^-Jy0YKn6z0@t*f!Bm7AO?s>Ealo zaXvXgBE&&Hw&A5S<E}|e?2aOg-?V<Sgs2|9KcR9BBi~=?39OISMTIWTdcf<p{i)Wh zi9B;&F!2aqn7fbh?o0NLf~r{zs(#P!H#{q;E1Gkz;av$E+l<SMdw8Vo%0(}Y1KPvj M>FVdQ&MBb@0HPvQCjbBd literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_corn_8.png b/mods/farming/textures/farming_corn_8.png new file mode 100644 index 0000000000000000000000000000000000000000..77e442b09977c3945e4b2cd3aec4cbe34a897e6d GIT binary patch literal 311 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dy#sNMdu8%LS&`y>y$}(Las^eZ^ zU{PxsP-Pm{YLeJto!Dm)JR>M;vU|~F*Zk?8`&%+=7yETBk95DqEeX`lSQ6wH%;50s zMjD8d<n8Xl(7`I}0pxHNctjR6FmMZlFeAgPITAoY_7YEDSN40H!ko%xSLaRX01DN5 zx;TbdoPIm;piqkfN1LFq&xWf1%Xx3v9x}16*5RxAvCr`X`;V<@eKYnutyL7)%;Vs> z^N5Wh^?P>0zf+r-`=@bT<u!}*(#hF+aFf{_pU#JOZ|>-ol5$D=qIum<Fnnoa>}J7} z`#h|Rc0GF7E>|PmdWZAEe~-_>zmENVvcrGTC04#yKXMNM9m3%0>gTe~DWM4f`<8Ex literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_corn_cob.png b/mods/farming/textures/farming_corn_cob.png new file mode 100644 index 0000000000000000000000000000000000000000..a2fd9da7d09358e8ac76ea460d817656b5031c12 GIT binary patch literal 182 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa2=EDUO)OxLiBVE6RA1gEdT=Vk zskyAT*T~%7pSjar_Y6=CV@Z%-FoVOh8)-m}kEe@c2*>s0ga!sijkziu3vc>}DwJep zFwF?eOJZAg(>rDXlWJN5TlG$FDVGCBC3Ox=d&DE?QCMckU_2?dM{(II3uhLIR-OxQ bS{WIpvT*<KkiNDTXfA`NtDnm{r-UW|Q&KpK literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_cotton.png b/mods/farming/textures/farming_cotton.png new file mode 100644 index 0000000000000000000000000000000000000000..e2bbfd7af486b64c658bcc7c6101b22ca95ab7e7 GIT binary patch literal 166 zcmeAS@N?(olHy`uVBq!ia0vp^0wBx*Bp9q_EZ7UAm`Z~Df*BafCZDwc^5Q*R977}| zSr0DcZ7^V9IdHq4Ni2b@Yl)oJL=T}^0;}d*gS0ZNc)pv#?FO^M1yu&Vn1`<#1mxd1 zsLOFAD19%^&t2!R;b0Y$+r@xA4H4-)+zAIn7@l~rgS35MzHe`kJ%8G{#~_}ktDnm{ Hr-UW|pV=_A literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_cotton_1.png b/mods/farming/textures/farming_cotton_1.png new file mode 100644 index 0000000000000000000000000000000000000000..5fc218078722b9634503146a0fb0d3353c3e5859 GIT binary patch literal 110 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!93?!50ihlx9JOMr-u0ENCG36TW*{TIiIzRq! z3jxI$OM?7@862M7NCWBcba4!+U`$>hl)xgG#>vCLxQk&%%X!6lKsg3aS3j3^P6<r_ D12Gy# literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_cotton_2.png b/mods/farming/textures/farming_cotton_2.png new file mode 100644 index 0000000000000000000000000000000000000000..db4f4a3e58233f32f343f924218dc910e1f1be13 GIT binary patch literal 120 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!93?!50ihlx9JOMr-u0ENCZdoe%P1@0A>N1~t zT7lw>B|(0{3=Yq3qyafno-U3d6^zLXSPYCdFr0Mfa%j5C=<y;hfq_Br0Fw`gZ?PFr O6@#a%pUXO@geCwz1|7-( literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_cotton_3.png b/mods/farming/textures/farming_cotton_3.png new file mode 100644 index 0000000000000000000000000000000000000000..df3d7a77d035e4fec271ad68e4c9e40914674f23 GIT binary patch literal 144 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPHV5AX?b1=4v9TJD*uF{SFQ6HTA5 zU40)Y#8?vK7tG-B>_!@pqwneB7{YNqd4UMW0SP{XHb$ow$z^Sx4T37?j~qC$fI-YC mC8cFmP*}r-9yd1!AqL+pCe=^OGu(k%89ZJ6T-G@yGywoue<@V} literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_cotton_4.png b/mods/farming/textures/farming_cotton_4.png new file mode 100644 index 0000000000000000000000000000000000000000..f314b07b7e1968592fb8bf3f9fb592f4a6467010 GIT binary patch literal 150 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPHV5AX?b1=7hmI;G_XzVTY!9oC1Y zup|P77)yfuf*Bm1-ADs+Og&v3LpZJ{EAVbOAi-zQ#?;oq5F)ymnOS)P%j(3i1g4Y5 q%sbf<JQdZ{RunlibDUMt;Zb4CC}9e*llTpC0fVQjpUXO@geCw&wI#s- literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_cotton_5.png b/mods/farming/textures/farming_cotton_5.png new file mode 100644 index 0000000000000000000000000000000000000000..3e890855ba12f05ad693f4e660924c6f74ecc361 GIT binary patch literal 159 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPHV5AX?b1=7{IW|@hG6YCv=L-o5P zqd|HYOM?7@862M7NCR^0JY5_^IIbrv@ERPJU}FksV~AmKF<{!r#B4m{bjpE*BS#Lf zgdJ8oz%ePEu}Jp7Dp5(vg}>$~F!A+hX*qB)6klZKoY&;i1vH7l)78&qol`;+0Mzd* A1ONa4 literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_cotton_6.png b/mods/farming/textures/farming_cotton_6.png new file mode 100644 index 0000000000000000000000000000000000000000..f4bd4fb346ec9ee2a71696d9337723d2be7de8dd GIT binary patch literal 164 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPE^3h)VW^~o%3Ot#4jH=kbW9_ejT z5o;-L`KAjf%UBZR7tG-B>_!@p<KXGy7*fI5d%}>n!GVY2Kz8F^Aq7W=<|h7su7+0_ z%;(jgy1^6crYhviImc{Ej=$HGy^A(l>lC<3yg$<QyX+T3Ln3p4i`}%VK(iP;UHx3v IIVCg!09BAPVE_OC literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_cotton_7.png b/mods/farming/textures/farming_cotton_7.png new file mode 100644 index 0000000000000000000000000000000000000000..466d40a2d9636b6d043ec2fb6fe7cd774f172336 GIT binary patch literal 170 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPHV5AX?b1=7hLs=;=O6;TEb#&R_o zLfJqe#*!evU<QY0H`0I{Pfr)e5RU7~2e^3>co;R#@=O<O@ZvTwWKirl%oB2yLnMG< zRS?4|LrDXP#-$C9beMV+j_NqD@+JK3>gfrXJV)k$6JL*(mP0PX<{vDId%2_RfQB-7 My85}Sb4q9e07KF(tpET3 literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_cotton_8.png b/mods/farming/textures/farming_cotton_8.png new file mode 100644 index 0000000000000000000000000000000000000000..f835ba5b3f6f2c4d0e6c3f730be01e599dab7b6e GIT binary patch literal 196 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPE^4e$wZ1=1BEstJygSFT*~H50Ya z6g2nMH80Iv29#hd3GxeOaCmkj4akZ0ba4#fxSrd&k+;Es=fIpT2I&tPJ~#^SGX#C- zlbP^;{Q{w$icL9n8i96(^{U|s@{S!nx`{Fen{H}v4KbMfXl0lD=7OY<WJ%!<Gh%pW o1Xyv#tm4qPQ>*ggmJ~bxxfl+I4L|LH_AoGby85}Sb4q9e09F4!`v3p{ literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_cotton_seed.png b/mods/farming/textures/farming_cotton_seed.png new file mode 100644 index 0000000000000000000000000000000000000000..f1d5b8ab714e2f074b8136aac0d8dab88c0acc2a GIT binary patch literal 150 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPHV5AX?b^~o&sbXJcEvo6REsH=<@ zI$@IslwvFi@(X5gcy=QV$T9VFaSW+oOg_LkL)2l3Fmv-nh7LuY0}32s=^+P}PGejn t#^aEscx$0U1mmeR5eCVl4VN|87&b3ts&D<w9u72s!PC{xWt~$(69E0}Dg*!k literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_cucumber.png b/mods/farming/textures/farming_cucumber.png new file mode 100644 index 0000000000000000000000000000000000000000..2acb7b2f5eda8c9390f1a0e717ac6b85ab5edd64 GIT binary patch literal 185 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`4W2HJAr-fh6C_x_Fq{45`G0k_ z!i)^xHeH_oiBd<6B>#O@cf4Ux*d*m>!qJ?|+p;0iq>WL5F(thzheea+CfA~;T#88w zQaJ)<XAPt+lLe#_k`jFFA`USu5lrLuQ1)Q-FfNv8;hogpnat~ulCEqmzij4;3v8Nf gH#@G@AC_le2w0eZ%HWP}Gteyzp00i_>zopr0F+lb?f?J) literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_cucumber_1.png b/mods/farming/textures/farming_cucumber_1.png new file mode 100644 index 0000000000000000000000000000000000000000..e008fd12aef55c66f70a05c7d444c0ad69eca6d5 GIT binary patch literal 119 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`cAhSdAr-fh6C_v{Cx{5}-sv;? z!@u{?hxr<<Vz&#mk7%#oET!0(Bkds*D;(y0WO*W&k~G&Q*%rr~qpTc-3<19Knt_7Z RyMQJ!c)I$ztaD0e0suDUA@TqK literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_cucumber_2.png b/mods/farming/textures/farming_cucumber_2.png new file mode 100644 index 0000000000000000000000000000000000000000..9c345ff48d1a33c0f4beaff6db2042dfb9b20f27 GIT binary patch literal 145 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`5uPrNAr-fh6C_v{H{4SA!gaWQ zlj&|*RbS(_RI%HFOh<OG9Cb=Ld*g^hPKjv*F9WBNw#)Zv=dwC%!rm)!H;H`wYV?Oa tGhxNyEwVa&=TF`cQL1*Xk#dq@IJ498!~d7k4}o?tc)I$ztaD0e0swk^GRXh{ literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_cucumber_3.png b/mods/farming/textures/farming_cucumber_3.png new file mode 100644 index 0000000000000000000000000000000000000000..25f3c54f7df34a020ff28db5ae67ee4b47381c52 GIT binary patch literal 217 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`3p`yMLn>}1CrGePVcx!&=f9@W zfh6n0^>eSTXlsc}{J}4zev9EKE5}iVvkJ@;W81DzRq&jV`@fOli2F5$Ny;yzCNQNm z<XN0ynDF|;E|y5+P2C$L+a7AA<TvCnHQLwzTOh&3B`qN~zb%DfQ<_9WC3m#NpTEDw zO=A*dO7a)9+nu;p|NmcNi)dTYgvOe^7rq3xOL9xh+Q`Or<@}9B!Z-gj)K+glW)_=q Q8|YRBPgg&ebxsLQ03Q8RCjbBd literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_cucumber_4.png b/mods/farming/textures/farming_cucumber_4.png new file mode 100644 index 0000000000000000000000000000000000000000..fc62f2f442b82927cbde3fa80d9cc56c3d473a8f GIT binary patch literal 275 zcmV+u0qp*XP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0002mNkl<Zc-rlf zAr1mD5Je|JVZebSL18dB1R9S3g~B0GBnT9i;LvyuzzMhk_bL0@{Ov3OLb8@7lb!AS zdHtPTv;V5Urgsaq0OOm5;k62xKP<5SGoXLTVwwSZXJ1`X)M@0e&D2yM>?{x;uhBhM ztpmcH2lO@;Mu!w7fENmcKVfppLLlVSJ8P#?b7PU|5&=+-7MJ7%T9d8jG6{Xerfm_k z><&QdSnTc7ff3MNWjhGS<x2ZHQ4pT=l@74#C-0r$g5i3gzg8TShUC8tA{yWQa9l$( Zcml|Eu#iPFjFtcZ002ovPDHLkV1iP<a+v@C literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_desert_sand_soil.png b/mods/farming/textures/farming_desert_sand_soil.png new file mode 100644 index 0000000000000000000000000000000000000000..1450e014156d4c874fcc719e170a41db729614f2 GIT binary patch literal 637 zcmV-@0)qXCP)<h;3K|Lk000e1NJLTq000mG000mO0ssI2kdbIM00009a7bBm000XU z000XU0RWnu7ytkO2XskIMF-vl6%P~wy;~>N00006VoOIv0RI600RN!9r;`8x0t!h) zK~yMHJ<&;S6G0RJ&_7l6V8?M1j06jWI2TvrIGh6(AOs|FoY>tp{DB36E4+uFKYjf2 z^Zxtsl#+z@!+!tnaK{Lb&*j(i%l&d;2ncYa+w1AW-GROxpN^#vQe90Q*VYYecQuX! zmDV{zjU}g??0Qb~O!V+l&Aj#|i5L+8d%)ANl&*Q;P#Y8UVjjcYZr4;P2||#N03Zr6 z;lurTydq2(rktdCAj3FtS&fnDD(68k3AmZMU#bHk5TjC4BcTjo4xpBqy#u{_eY2lt zMhT2)7@>@D`n}E*w_w+(VHjZGOKZ1>iO6Zcoe*Oh1_M{KuKwyUPiZ)8M<&z~^Gr*3 z&UjgrhEcj%Ep{$zL_kD0t)|;uy4lTLaUO=&W0WL7+FTxAo*&MOB}#xmpo)gTM5XnY zr2uwJ0@klL6Bx6ESm06{N2v2S5@@^IkKpk2{^@a95vi_5j757&mWPSll!^SmH{_Y} zTI$28xY_?70#c?hli!aQ?_H8K4`N7!y#_}J!K%preuVLKTCjxduQtcBkWf~yjv}zx zrrVq8STCwQ0#wZrF4f6<?j)Nzb&$~B!!Sg{yDJmFfBPydO4UGxMn0GjzIn5y&6p3{ zf$^Vr^RhONm<YBhgZbYd3(Es@V#&h0Vf<msU+*cWDd)>mM~c(Aw(ja{1VY5QR1g0H XybyEF)T0<%00000NkvXXu0mjf*|Hr( literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_desert_sand_soil_wet.png b/mods/farming/textures/farming_desert_sand_soil_wet.png new file mode 100644 index 0000000000000000000000000000000000000000..cffa955d6689ad88d675921a3e033256869343f7 GIT binary patch literal 590 zcmV-U0<ryxP)<h;3K|Lk000e1NJLTq000mG000mO0ssI2kdbIM00009a7bBm000XU z000XU0RWnu7ytkO2XskIMF-vl6%Q0HkAq7!00006VoOIv0RI600RN!9r;`8x0ozGL zK~yMHP0?F!6G0FK&|9~<duHtML&`@G`(aD0ggt@;f;b-AGu>TPe1t@7;T-w)^~?9) zmtV`GsxUjv^Yi&g!Sz=E-0zolB?3Sg4|Dl^JoD#uxz;LRt8RhXyTkXpQVMJ9M3_@k zO3CISjRSePS9fpLR7nv)dSJQM+Iubv^O9iIBg%2VZ)Qv?2&yOmQBv@Fd6XR`NtjW! zJ3y4ex;cg1<(w5s5$@)`wg3SkjLl3`62b#8&t!D)`Fxm%k)k0HT_TKv+sif<c4!zH zTmlYXdpn#5O2|A7A{cUUxVd-p(|H_HK2L>&)fh%udoanm8FNu{tJNNLivS|JS#_KC z>98BR$(VERQB)PQ=IMIBUmlw)6#>FbT%aPg_4`&K9jfBC9|t(8NFLZ)d-E=Zkan62 z0zY1s*L8dQAyKWT<T)$djl%fwMjn{A+Ag;m|NRg&O1Pz$*VTJh)$R}?QF;wVs9-bU z`;V&JZmZNt^KQJ>RaBBi3sGR2(%~>HZ8hr%n7Iko>f)Aq<1{Aw&)eWVjO3@M({UW- z{l~+VczT*RmVBBD<=wkQ-C9HxVoC`fZ$BQMvr@^V+?Ue*pZAb;$a!7*<KfGr_3j@( ck6Huq7qpFDgm#DS6951J07*qoM6N<$f?#Y1fB*mh literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_desert_sand_soil_wet_side.png b/mods/farming/textures/farming_desert_sand_soil_wet_side.png new file mode 100644 index 0000000000000000000000000000000000000000..fbb2815e5e84b5cc1fcdbc91c1dcee8aad8fdf22 GIT binary patch literal 601 zcmV-f0;c_mP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0006YNkl<Zc-l3R z(NfxA5QXz*Re_K|M0|)|l(sXVhzJM*mDUz6j74BV0<pa3cE9~67dy$n*>m=sliy2+ zH91To`P;3^doPf5RFgz&Hwb0-5XkF|FL5WZbM{o1T|bcQv91-$`Zf>`FwO0KD9J-; zB-?&nha<^nkqvKpA!UHKTc0`RZJD>ZbHKx_A*q4@o_;kYUtGz$>&yBsu+91WO6wAk z&3w!ovLA)wZFM6J2#(K9-tGC`4-`<B)6Z);y<AH=jfB~Mi>4gsO|zT~Q~``^I4EOL z>7-`Q{JEid)bUTz<7swwX2};X8%KmzY}TPj_G9%(fSt0vZ~9fuNv#fDkSrxDEMb8L zK--uqAik+ctnA0BBTvTm-Ko-|M<%HAI1mP4hSt3bzs|s!o{td!Fmi&WPy!egWDr8& zwhaPVek)<80J>T<HB1F-@h$H7^4hK%&Z9wbX@0lPU{`R>ZJasq$HE25x7GIxS+#x1 z2KIYZ!NA=Enlu0(XCYZwWfLWQ3e}n~e_H2m!L&wzb{oCrmotgm6{H%NP)Yx-Q{f`< zH@JO-3eZ`a@+U&YmBnK_2Q1)?O?ZRdhUZQdDj+yK>Q(Rh3NFdZ=TG7>NIAI_??n!m z_&4Bw=&L%yD+{WZtr9sn0=#FV02K@&nKJ~oIqCbdYF)_k>$#~cas%rKG#CJ|#wxE+ nMIKmUBX=JleSSG%=DPSlp*&w|_r}1_00000NkvXXu0mjfA;%Mv literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_donut.png b/mods/farming/textures/farming_donut.png new file mode 100644 index 0000000000000000000000000000000000000000..8985299bb01d7abc91a4a81270891b52f0e933fb GIT binary patch literal 258 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!aez;Vs|5qYrYT`trw8qt8?kRr z#F2%u2NuVkTpE3JdDPkEVHZ~?Uf&RZbwldq%?USm<lf(r{(N7m8OQG$pmxTRAirP+ zhi5m^fSg)S7sn8Z%f0;v`3@`aI5Xc^(j4&XfBfzptGAryD_-JJx5?Guw}16{!$+_4 z>R*2>u50K%;a(!5;&F3d7)zEetIr{yH9G^m*Xn9Bc^4fBRn&2MuymLFy;*aW(>PKZ z{L+-}Up~daIAiWaDR;m3IlFX39w=DfD&8YybEEFxXI`5HY|cmXe$E3rgu&C*&t;uc GLK6UdziDj% literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_donut_apple.png b/mods/farming/textures/farming_donut_apple.png new file mode 100644 index 0000000000000000000000000000000000000000..6dfe63d5980364e3abe99d0ec5168b03d247dd93 GIT binary patch literal 252 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!aez;Vt4g8Q5?0Aw{4$@F^q+=$ zz6y7EloIqbBjav<(!-*H+ZAaK8fx!%w!EJ_<>-p!_w(l6-&-UjlX(EBov|dyFPOpM z*^M+Hr`*%UF+}2WZ;!XoVFQk%GPfHz@Bf~^P32w6rP!^L6XLS}FI>g_AT{YQ&#$~w z*A5@@X<5IhD&nP+v`<K@@*xR9#~Id6(d7}vn+!g-xCK@(RARqd|JG%dt<X%1!YgiS yBC)R`c7&g}%V4zkkY2oA{q(oiJAW_UU&G*0%&w7N++PTE0)wZkpUXO@geCw`Ze&yd literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_donut_chocolate.png b/mods/farming/textures/farming_donut_chocolate.png new file mode 100644 index 0000000000000000000000000000000000000000..aa4b93fafa9aaf21e594f3676994eff9a1f176ec GIT binary patch literal 256 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!aez;Vt4g6)lm$bwHAAKYbFMQ( zkvn6#8*_~pLxm4}doaVqNQPOl3<nm)on4)FYiG`rLuIcI6@)HNzYNsQSQ6wH%;50s zMjDV)?djqeB5}F5-%#j?0S9yLgkH~c5B~4}<}%A9e9o@Bg0mKG{ckjlse<$LU0;R0 z6>ER*)8jIBIPrMdhs+sfr`9}*YDnPuVz!EZYSNT|`ghCEMw)Up3a@2buy?yp>x<3T zUB9&}eO{qum=rvvv&Z6~$mJs^JElvTMcn)Se13ee1#9}B-<PKVox$Mg>gTe~DWM4f D3aex3 literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_flour.png b/mods/farming/textures/farming_flour.png new file mode 100644 index 0000000000000000000000000000000000000000..b1a97836efa64c2bf3867a9fe9155bd9247bc515 GIT binary patch literal 159 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPE^4e$wZ1=3%?e*ORd|D#8bUc7km z`}glRZ{F<RQW*x6U@Qsp3ubV5b|VeQvG8<p4B@z*tRT5W#UVpHRMg<?vQ<mC#EOD~ zf<zg)Il8*Im?d=@o0^&w1l=7K7&=v?nH!nyE;FXfv;JpuEb9Q8!QkoY=d#Wzp$PzS C*)$pe literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_grapebush.png b/mods/farming/textures/farming_grapebush.png new file mode 100644 index 0000000000000000000000000000000000000000..c2e662059176174f47bee9064eb63c9c36d99f1a GIT binary patch literal 144 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPHV5AX?bO)b&w;GE`WBGV|}qcBlN ztRl(*D8*P3<QL4~@a#q!kfZPE;uyklJvm{4X+c5)(`6km2R3B^YbHyrV@h0JZA?5q mddK|q^xPa6*~A3Gm>66<nOm+Lu2=`u%HZkh=d#Wzp$Pz11taSK literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_grapes.png b/mods/farming/textures/farming_grapes.png new file mode 100644 index 0000000000000000000000000000000000000000..aa00ed633a2ee677dbd7bbf7251748d3c9863f8d GIT binary patch literal 175 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPHV5AX?bO)b&wWt){@$W*V;_f+)< z(?0u+Kq<zOAirP+hi5m^fE+(h7sn8e>&XcY3~p)~x=Jbv3`rdl*4ENZu5)^OeI1;7 z90c7vrgR#*oH}xYMdzqO&k~6>ZH_l?Na`>L@g^ELnKZU6P~z!nGWadpAi*&43dhd! T=tKX3CNp@t`njxgN@xNA6R|Z; literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_grapes_1.png b/mods/farming/textures/farming_grapes_1.png new file mode 100644 index 0000000000000000000000000000000000000000..64a935d27a6b088bfb71470cb180119014a75862 GIT binary patch literal 255 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfv=>VS)*FXja7h@SObLkj&)ii%y z`H4FHMYc;DeAcuF>q)B$1C=qB1o;IsI6S+N2INfgba4#PIG>!rz+}eE$1af4&{(w9 z<hxnFQTdLB*`3|p-J3hPV;UkGBN<p8GUc$n;ZxucPw-4IW^mlWaD-1KT0u==X5+#| zXBHjSIlSkPjNXHHIqx3vwQxj>7@SE6XK-xcVmB#I_%Y43F_3|!aJ9s#hYwG!<7(m% yWz1o8C}%mq8o?XUShhhahcl2vguzijnnA2f{mewspshgHF?hQAxvX<aXaWFoVoojq literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_grapes_2.png b/mods/farming/textures/farming_grapes_2.png new file mode 100644 index 0000000000000000000000000000000000000000..6cc2a33772508757d4ac630cbf711935f34be6e5 GIT binary patch literal 290 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfv=>VS)S49Q}7h@SObLkj&)ii%y z`H4FHMYc;DeAcuF=cyL|1S(@J3GxeOaCmkj4anK*>EaloasKE8L;gbw0<GB^Ta>%4 zyU+22%6L|FC?7j!u`A;bb69=j%k$H`A3NsE*_*GZKmEI0xJY5kI^Cd}XB+qYy1wqa zN{%!`hO|PXrkbEo%Q_t=r%Ev?#l$lwg528AByYNy-}d#a4KL?D(+A3$uD&)}txI@+ zUrqjWJLs&+r|QS?-#NBEo|gXIg7<j$&gIoR%2@eo+?|&5O=30kms=O5u+m*X@f(Lq k!P(?)ou$FmoezHVHq6#!*&A$i0_Xt-Pgg&ebxsLQ08A2VwEzGB literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_grapes_3.png b/mods/farming/textures/farming_grapes_3.png new file mode 100644 index 0000000000000000000000000000000000000000..66d6310932e4815e3ae162e475dc93bdd78991cc GIT binary patch literal 307 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfv=>VS)*Fpvc7h@SObLkj&)ii%y z`H4FHMYc;DeAcuFPx@566R3=_B*-tA!Qt7BG$7}gr;B5V#`(Du4EdW31X>N3wr=FE z7N2X~P^z+UYoDpW;}eTM@^}1WI(&Yc_@k{(F>kh;=<9!f7dPq0@sv2`lh19<!hc)w zh_%+P+?war%Ou#stYI+oDg#&Md6kAkQv{d#2rrW4KE6SEyZP4;jT>&6uQ@f743&i) z3a)In6}!GH>1gBqzW=`sG)iozuKD$<`P?s!j_gY5yN`;T_iBGBl=Bxa<*%Kw?2_AU zy(Jyfgx$Lg4yR-*#JryIxz<8tMT_mCDSk4R4FApT7HZl5weSlA`iQ~P)z4*}Q$iB} D<a~B` literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_grapes_4.png b/mods/farming/textures/farming_grapes_4.png new file mode 100644 index 0000000000000000000000000000000000000000..57cdc73f7a02ef12c3995aff14c950655d9ec4c5 GIT binary patch literal 330 zcmV-Q0k!^#P)<h;3K|Lk000e1NJLTq001BW001Ba0{{R3fmCP50000RP)t-sK>z?m zGaO1c8(c>vW=}02kt~mLJ*9w5tcO!@Z;nO)0004WQchC<K<3zH0002pNkl<ZD9>e3 zyAFad6vdRbj9uKj=-dIsu?ekpEP)^+i^LxQ{Q-@iZ5y?>%01i3&3Pq>J0ddak$msE z9nIr7n?M|LrBs!xKp>8oM<9rx(jyS*K!isi-X4+5TOra|e9Zgj?o!^$K$xmj#sOUT zLW6P-_>g}&7Hw0$vMW|cU5ZTivXA!YMsq(-(H^Z*x+)+Cb~!LZ76@^Y)KVRYcEExZ zKYQT6J=VxJtckkVOk?*2d-TulTu!iu&!ClQ!G$+21zLlKrW+4vYl(Gx#7TXQ$fe~q ct3P|Z09FVrZ1Y1n!T<mO07*qoM6N<$g0`}R!T<mO literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_grapes_5.png b/mods/farming/textures/farming_grapes_5.png new file mode 100644 index 0000000000000000000000000000000000000000..aad41f413c08b99008c422de19906a82c3b2d06d GIT binary patch literal 338 zcmV-Y0j>UtP)<h;3K|Lk000e1NJLTq001BW001Ba0{{R3fmCP50000RP)t-sApihG zGaO1c8(c>vW=}02kt~mLJ*9w5tcO!>C3E=z0004WQchC<K<3zH0002xNkl<ZD9>e( zvChIE6oqT>mX0jlS$^jZ);f|DejKl9qa9r|zJS#i(D>Lw8ZTGnY+nfH@MT#zc~zL0 z?0v3_lYeYRPvC!Pt!<Z<fY3t45XdWOVhGF+c@;xo>R>I?3+#=b8{_)9Iybk5fNvY? zLkNKGlqf|>U@&_v|0ELV4a6PDmO|(Nwp7n>tG4Vfb>RjxFdw^<zi%$gM{libYraD$ zP$IQJwKo!_OFIr>NB!XgzI>DdJJm5CSUBKI$Kkm<HkafhZgAH3sU`YA=A&@IMo9WC k=J??QzJ2sM+L(O20Klp)RbJX^`~Uy|07*qoM6N<$f)6K(bN~PV literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_grapes_6.png b/mods/farming/textures/farming_grapes_6.png new file mode 100644 index 0000000000000000000000000000000000000000..2e23a3caf9e273e094b646790054b6bb050aca96 GIT binary patch literal 347 zcmV-h0i^zkP)<h;3K|Lk000e1NJLTq001BW001Ba0{{R3fmCP50000RP)t-sApihG zGaO1c8(c>vW=}02kt~mLJ*9w5tcO!>C3E=z0004WQchC<K<3zH0002)Nkl<ZD9>Gx zv5vwp42F9OPBV64&vG|sps+?FxiA_vYBREccmWD8a3>xcN2iNZ?Cp;gfBu?=N*ZNz zH~)42x`f}u97^!Lan9{Gt^`6u2c1}#U^FdGw)G`|lk7($u>=a02MfGKtOflsbUfh| zy(gZSQ`%mq$F2lnm|Tc~IY19YQE?<Y>Grebwb6o+HHS1{Rn4)|A9(DJ%prT_Q_XQ7 zFX88Kt9(S~{JyU_@-2e5fFT=L`G_at=%wLnEiA3m9XKp}yc?U-b3E^E>?1RHGQwN3 t53GDBPd2FeT9ml(0q;Jd&Nlvhya0u2Fp(z*et-Y~002ovPDHLkV1h~pi$nkb literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_grapes_7.png b/mods/farming/textures/farming_grapes_7.png new file mode 100644 index 0000000000000000000000000000000000000000..9e70b6d559fe4dec85b6800cec67d983055021cb GIT binary patch literal 358 zcmV-s0h#`ZP)<h;3K|Lk000e1NJLTq001BW001Ba0{{R3fmCP50000RP)t-sApihI zG#p$<C1y`8ACWANay_MhOst1fO}$Mt23lwU0004WQchC<K<3zH0002_Nkl<ZD9>Gx zu};G<5Qc-X<BT^HiP2Ks&K5SNqmw8xBSZTJr0@V#T_Y%}ADin?pUd6$>7@Jruc~l_ zlIF72b@mTCe|VXE2G2`t?bFg`z<}ejMFxYa!)R)kK{E?IC@~j6I&K;Q?8KmfR|3*W zlT4%>Q;e(g__5Bwccb;aryLwQOi|>BW`ufChYWhdl~96!P#n8*`f?9<p@kOcLQ5CR z9Q)s$|4Q$Lk7VuUTNgPJ8kre=;R<bp!bksxIkZsJ*6>^F*duh<hc3d!Sdnx(ABXMw zlYF?Ot+SgS`tpcA0y`B>(FQKH4I<q5;QxK}(8ATnADmk&;3@BcQ~&?~07*qoM6N<$ Ef^}Y+RR910 literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_grapes_8.png b/mods/farming/textures/farming_grapes_8.png new file mode 100644 index 0000000000000000000000000000000000000000..5093a0666b55e5e3e42fe0fffcd728ce97d37c9f GIT binary patch literal 350 zcmV-k0iphhP)<h;3K|Lk000e1NJLTq001BW001Ba0{{R3fmCP50000RP)t-sF#rIF z36@4Q9BDEXfgg-wO(`IeERAzKr-M&_uMKwq0004WQchC<K<3zH0002-Nkl<ZD9>Gy zu};G<5I_?Y+c#p#LX0<swM+MOVKx%Jcr+1KJi^j`0VJQzQB<FWPg$NU=lQwoco`4Z z>27O(y2OpAf;s%H3KVJ{HCC`5AQcZ(L2nJM-pHYY1=7B^a>lblh3^7@z}x#WRj`#Z z+s9ozVlLs7qj+e{IE;-)@daUoR6+KdEsOxe0QhU}a+eldP<9YdIh3Zye2Jg#TRdJ| z2(OOBV{lw#Qt}r)agEgU$RF%MO%J$wG}YCpQs(=}j`UlsG2P<6p5s^JVJT3s#|qwT wMwL!Zp5cLOjJ*IgnZ!LLvi{#A<AS#yKM~(JbGeLvY5)KL07*qoM6N<$g6_?b+5i9m literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_melon_1.png b/mods/farming/textures/farming_melon_1.png new file mode 100644 index 0000000000000000000000000000000000000000..3c6ea6d8d6e4f801d2479de7d62ed05d755775ae GIT binary patch literal 138 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa3-AeXWw2zhv0+F~W=~7wXl)hV zy<6whDT`C5tgl=#{r^99{R_p@K$VOoL4Lsu4$p3+0Xb5hE{-7_*OL<#=x4MT-jG?q g<5#NDe3iiiD8<95`!?n2cc3Z;Pgg&ebxsLQ04+@^@c;k- literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_melon_2.png b/mods/farming/textures/farming_melon_2.png new file mode 100644 index 0000000000000000000000000000000000000000..185ed8263087abd2af6704be4a67c4835ad1d438 GIT binary patch literal 161 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDUH8Ntbv0;dgW=u|IPfO!y zX%T5{6`nLnZ1--RQ>QFWow7c2#_-A&)A#RvfBf+J|3B7hCqoQSFJnoNUoeBivm0qZ zj=ZOfV+hCf<b(yP797b1ha@=z+}1EnIhfCy`azU|lfgBDsp3<zRS8fjgQu&X%Q~lo FCIH)-GWY-h literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_melon_3.png b/mods/farming/textures/farming_melon_3.png new file mode 100644 index 0000000000000000000000000000000000000000..6e661f9246721c226d8589099e56d187ba32e4ef GIT binary patch literal 177 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!aez;Vs|5ptkr9K94MTJ^V{$Tk zS{g@7i%4s$@T5s%yLaoHI%RR{l=Yc2hF7kbzJKrg<A>M(|FKecZ~FnYGnNGT1v5B2 zyO9Ru=y<v~hDcmaPLK#`n9dp7!tLB3JN5jr<2}oq8d{}88|E|nvZ`y(V&GSv!pNZZ WiD7b!{_Gf_J_b)$KbLh*2~7Y7VmC4X literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_melon_4.png b/mods/farming/textures/farming_melon_4.png new file mode 100644 index 0000000000000000000000000000000000000000..d9199f3c822400e9a2d64e085a6ff49d562a6d83 GIT binary patch literal 181 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDUH8NthwP8s2lZuXJNK0ia zDHp1%7i?+anb0q?XSeE^Q|2en=w806`|P>x`w!m#{)Sl}dYKQ@%UBZR7tG-B>_!@p zW9;eT7{YNqIpF}eP(n|$!7(0*W^cx08Vwij><M6VpUW8Hbxo1s(1Y(u4(TQil5_Y@ a@G#W$vdQe9@c9x@JA<dIpUXO@geCxn4LwEx literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_melon_5.png b/mods/farming/textures/farming_melon_5.png new file mode 100644 index 0000000000000000000000000000000000000000..755cbd34062e5a62910963f304f544dddd80554e GIT binary patch literal 196 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!aez;Vs|5ptkrA`44MV!0RCF{$ zS}I#fxlmobU`q?ngnp4dyH(GeGCz4n_wrTUXU}clfAIeIH%xk&Q7uqAV@Z%-FoVOh z8)-m}y{C&~h{WaAbDmrb3OvjQc7(is_doviPREVgc{oLO#HUHjTOhV>%Yg-IWj@@l q;aj-vSx=sr*2e!qIkfJ=U2eX)fsD4sWg9^5WbkzLb6Mw<&;$T^KR~en literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_melon_6.png b/mods/farming/textures/farming_melon_6.png new file mode 100644 index 0000000000000000000000000000000000000000..b31a5b4c42108dd21eb2bad0bea009707f5f2e6e GIT binary patch literal 219 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!aez;Vs|5ptxjAFHpHy@-Lq-Ni zWFA9i4MR~oLuZFT^(2O_#SHUzG3?o`dghGL(`OEE-Z=gH8}?_d>OY`%#*!evU<QY0 zH`0KdFi#i95Q)pVXD;$JC~&kUYKA=U`1Q{}J389A+j`$$Yt6s&-#pmj_*?BbU-qMy zQI1RIe+&;u->^3zkiFVX<4v0sH;<#nrmV*ttQk2+nN|o-3$(atY{kf&&vYqwCs!=c O1_n=8KbLh*2~7aaq)apb literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_melon_7.png b/mods/farming/textures/farming_melon_7.png new file mode 100644 index 0000000000000000000000000000000000000000..3aebfdd6d6d9d11483acb45d81b10f914b1d958c GIT binary patch literal 247 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!aez;VYihrtxjAFHpHy@-Lq-Ni zWFA9i4MR~oLuZFT^(2O_#SHUzG3?o`dghGL(`OEE-Z=gH8`gE|vL8@8V@Z%-FoVOh z8)-mJk*AAeh{WaG-ax)X20YH@9<Od>-h5Xdb%@PXD&()nygzeNfBt{Ob*zf<uX)k$ zb1ZX}dH7@)d|nAIS}yMpaHPyUI7_W)_11s8l^5PMSav8xOyjH11Jid4=Wwdu^qsLF t)O~x1u>aDlQ#URWsXMpIAuL$a|56#tmiT?43xT#Xc)I$ztaD0e0ss=dT&@5B literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_melon_side.png b/mods/farming/textures/farming_melon_side.png new file mode 100644 index 0000000000000000000000000000000000000000..88e40c6a08421585274e41b58ecd19c88cc0a567 GIT binary patch literal 270 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDU4U7?v%ixdBP{=6K$S#$s zZPcu3mhPS?(>qCf#yqX1a}?&xmtVbBcl~DNotss6?NL|JS|ktDJJZv}F@)oK@{YLA z^^yPPZrRLp{n9`G*Y<)^rweqx<Y)flydKfksrY~Uk@*5=lQjZ&RR{c=aniEQsm+%A zZ@<=^)Qpg*%?^)e9jaV#WtV@9KkqL|uPNtiAJo5LNcvNMq+Ilf!M}QscQX&!wFw>l z-n}%AK{7bxo$hJ7cV&Hv-LL;A&$B+1W|-4m@m;67`nFx$%gz7uPTSqB6=OIp>~5eJ S&Y}l&B!j1`pUXO@geCy<o^b>K literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_melon_slice.png b/mods/farming/textures/farming_melon_slice.png new file mode 100644 index 0000000000000000000000000000000000000000..6ee977577899412a6e1423c94cf160f1037e3c97 GIT binary patch literal 227 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!aez;Vs|5ptFAGz#fWUEC^^@|l zM^qK}tE=CU(>bHA;TOYO(=7Ub=92AuRNfvx@#XT4|4&c+cz>mT&8kyC?TjTse!&b5 z&u*jvIdPsYjv*44d;4zk9Z=w4`52*9apnL2TUnPQJbzuNyxqtvP^)k>P50}D&(mi1 zzBs7(u2+tMMS0TgGiwa`=l<y8QQ`maYL2o>h0XQU88U1;r=|W{BDyd&ujIF1Xv@Ds Z#&hD#3zFP&3xPH<c)I$ztaD0e0stdLSI__e literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_melon_top.png b/mods/farming/textures/farming_melon_top.png new file mode 100644 index 0000000000000000000000000000000000000000..f387dbd08d1489bcac7e66d90d8efce0b54b4f88 GIT binary patch literal 272 zcmV+r0q_2aP)<h;3K|Lk000e1NJLTq000mG000mK0{{R3?cL&10000mP)t-sS79P& zZxe8MFMfX`c7h;@gBpN`7m$)4j*}~wnHZj-FsY;@qNgIWvo*K1DZ9BK-5Cew0001+ zNkl<Z2-g9S0B`>Qzo(4u{&UX$0PoR*-laKwya4X=gWi+Ly?p?@_+i_~$-7nnRLexK z2pW0Z093n#Zw3<0>;P08eRME7yX*kD5k!(n-7*{i?#d9WV-XZ40Pc7dz@QxcHUPOH zUhwf3&TIg=1Yhy<0=}#O>Dumo?wDxo0NL&7e!H48oB+Q6`?>%8ddUFHySrM;yU*+? WGEAu4rZoWo0000<MNUMnLSTYEW^}*+ literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_orange.png b/mods/farming/textures/farming_orange.png new file mode 100644 index 0000000000000000000000000000000000000000..4c5e04596ac057f45357dfbf1da5dd782829df46 GIT binary patch literal 544 zcmV+*0^j|KP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0005!Nkl<ZILpnG zv1=4T6vlruvv-@z?OimNTs%A!Bp9)<uv1CnU*JC=);1P4HcCiHqpcv=2$I4gm6c^| z1Z_lxKroTyz$Ap^a<{ja?Csv}Jd4GsBvHY}R}FmMe7xU#Gw_e4juURqUX`3{Xt(yp zTg{-c@N_vj%I6#xP&FyO&QbCPS4M`*oO^hxyVDFVzkKvz`L`Xc+%HNs$@3}HJhl}^ zC(h9IL*m$yCKhefz>Ar;(RaW8`SR)mPl|hrFz!>_54khoqck*kI;3#|sW7?O=-ryW zrjJB$9q6aRYFoHe)flzU`)-SdF(3+WsKA1%Ge7ml9zxid_M{MG=VmCBTt!~PVh5g& zUBr(d=Nh7*OHC)F^|9)cyRWwo0vc1EEPhV8a@w%ewA4Js_P#KFQWJ{8<{XxGg`f{3 z$};(^qkcgcaNzu~rWpzsDjDLCtB5VE`ziIZaMrPG^aQ1T%>G~)K_mcF3Yoa(XPAY2 zj)_s1K?iyX_>mA>IUF!PyQiFrVx?s<d6#-QlfJfN(xi_vId*$OY8BV#LUrUC0VXO2 ztYxj8bx`v%@8VXEyit_gKRo5l8BYLo8=^!o8oulb@75E%yyEt&Nd47c_;{}<Cqmfj iS~ddV#(YolU)DF&eZ}2$3a8ls0000<MNUMnLSTY=2?DqP literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_orange_1.png b/mods/farming/textures/farming_orange_1.png new file mode 100644 index 0000000000000000000000000000000000000000..5a2aaa270725fda65e941e301b213f36417be1ce GIT binary patch literal 108 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`#-1*YAr_~T6C_v{Cx~1S+mVv_ zr$2AYAAb*7VLeVgJ-#;n_xlWXq`v&4ep__%Z(fcpHipf*+-y1<rDA~E89ZJ6T-G@y GGywq3A0Hh6 literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_orange_2.png b/mods/farming/textures/farming_orange_2.png new file mode 100644 index 0000000000000000000000000000000000000000..3de462383ce5cbeca3d5d1fac9a2c26000ce0a66 GIT binary patch literal 193 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`9iA?ZAr_~T6C_v{Gq4wUU;pR7 zQL(PIt-#qx-QutR>yjf`8p?XiLbKNXudn()x3O{N#E19)@8^-O(n|<E-K00+R_gcp zy;EmCyuCf1=l{(A#((~No1J+3%IO{#OY3C^AJs?na^6{aA}6MSbLQvQ=jGc%b<-bg sJ9_f(QXPeKldMV4n0f@#l-`swyo%P<zCA0I7w9GiPgg&ebxsLQ0A~MDLI3~& literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_orange_3.png b/mods/farming/textures/farming_orange_3.png new file mode 100644 index 0000000000000000000000000000000000000000..851cd67b646f7b824bb0cec5d81d2747c11a357d GIT binary patch literal 451 zcmV;!0X+VRP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0004sNkl<ZILpnG zJxE&t5XXP#i|_TtL?Ivz6f7BPsY~M*b%{btK#O!rKqwA6*`kB3;GnoFP8Nf<;NU8{ z3y~t|ps3(f!6loMp!lrO_aeOxqL4PRk51n7hvV*k_XQ8e(i1KEKXHLuago2`&CqkT ztV-&h)be$BUHl}dxD{5w<ooQQ^t}r4^W61KP*i1cu~iL2=<VH+<i`eGn>!GIcO!AN z116yw8^_7BJh>}>5dfT=cpM#F0uYTx=oxR*?oV;84hC78+L2_;<=QRKGuEsn2>=p( z&omUa2vyl!<~_WtYqH;dNH*K9j#D6&+LDq(1W1oID=I8c?+HLhf4x49JqF<H%p;xN zma;<x5E0(K5Ed405Z{Nx1gk3fF!Ng1ayF@vrhl(`bv2<I8=VR;KU5qrJe$<i=a*Wx z1%R%u%{xq^;znjNjq19;h(;V*B9B-p*TSD>n+5=bgZpxP?2^k}aC+)-FF{cP%ed3A tSP;`RaGZkwJO45eSKp^x(&^(HeglP*dF1ONiW~p{002ovPDHLkV1mZI%hvz^ literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_orange_4.png b/mods/farming/textures/farming_orange_4.png new file mode 100644 index 0000000000000000000000000000000000000000..accb7b7ff0375e4c88dbfabe23bdcb6e8fd8f946 GIT binary patch literal 460 zcmV;-0W<!IP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0004#Nkl<ZILoDz zy-QnR6o;SpCO0?c3k?Vb`v(XPX+=tPkPZ$-5C=Dv4lN3b;9?CF48^)Aij)?e>?GYf z1;oLrLc0VZ(1wmBlY?I|jmgdZI33j1#H$8;rkD3U=XcKg;~d2W1IdIqj)TwV!>ZV9 zzyGOd0PXV7(h_BB`G;CDa|D}o8l|Sn-lQ%7ookkQxzsD4X1^+c@#SaYI1UGgMO;Tn zuVmG=4gg{XJdB;c6;950KHVWxAN!<gT5KeD)#qT2NVti?WI{YU02qGzR5VSaa9kqR z93tKt=ELNUDy0JA3Pj&km8S;)LvOmowrw_3-&A@vt0Ivgj_m^Am3&R0QZ!lklchKp z5P<M^oBZ!1MpHfV%6!DgT({imYGy*0{LHzTWBpHR5?;*r$k6M@HFy4cfv$DyUz^3U z34poyK*TCznHj1&e7Wfh^~9qg0F30mQbv@D4P{Gi_Mjfuy%HRV5Nm74@Ynk2zjaKt z|G~!eFLmoEdtvCl#&^MsfbPGaz~O1>egcZSH~KG%Yl$?PrXbe<0000<MNUMnLSTX$ Cmeg(l literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_orange_seed.png b/mods/farming/textures/farming_orange_seed.png new file mode 100644 index 0000000000000000000000000000000000000000..3873bade454bb2804fe4926ed7db9b02ffc8dd85 GIT binary patch literal 281 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=85p>QL70(Y)*K0-AbW|YuPgf<4taigt)BV6I)OrxC9V-A&iT2y zsd*&~&PAz-C8;S2<(VZJ3hti10pX2&;y^_uo-U3d7N?W{{QqyytlH4o=yZT7{qMR4 zi&jgKtSyGhb7LF01qvh&vDV*}khlAF{=<iVT8rlPzhdH3XRAzAcMIBkz{AJHZcp^T z`HhW@j&VCDPt;*<t1=NPP&~xCMpnd4xi4Uum&v2vbN~PUpWL?pz3W3}hWmSCFEQ9C R?gHA+;OXk;vd$@?2>`{&Uq}D| literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_potato.png b/mods/farming/textures/farming_potato.png new file mode 100644 index 0000000000000000000000000000000000000000..6e91d6ae8949445d7edba0c3cc8c5f542e93b011 GIT binary patch literal 252 zcmV<Y00aMtP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0002PNkl<Zc-muN z7&+kkVZ;AVHpu-4(Ijbnw@c$c2*Wgk*hCuw(+txDG6aV48UnKsMBiE_^8e~WelY!D zjnsc+IlP)-Hp2KI1CC5!{(pWpCzy@Z0GL8#TVPHGX+$;%tIZ%um_`r=DFlhZ#9^A( zS2JL@9oY~VM%Ii~BMg8Pfcy<o1T*O3TyC(9AiTAa0e{q;p3VmLC$ff}t&IPtCNli* zjbtD$-a#6AA{fA~SX~amBq!OqnGFAHJ;~5WE&u=};`FiF+VZ9V0000<MNUMnLSTYQ C6lMni literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_potato_1.png b/mods/farming/textures/farming_potato_1.png new file mode 100644 index 0000000000000000000000000000000000000000..a9c004091d5aac56bf26d71fda36ed3226cb926c GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`-kvUwAr-fh6C_v{Cj>OT3}^k{ zY@qj3^!${6!l?p2iXCp(TFw{nOg~_<C|l{&glEk>7P+p|k`JU7U1VdMGwZ@ri4C4A f`Yxd@-h2#9D@^8Jt}t~38q476>gTe~DWM4f8{R9! literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_potato_2.png b/mods/farming/textures/farming_potato_2.png new file mode 100644 index 0000000000000000000000000000000000000000..c81830c40bcf17038f5b7e927a2779f9a63f2e6a GIT binary patch literal 187 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`O`a}}Ar-fh6C_xjIo4Dx`!YYp z_x66Nf9_@rekw5MIWLPB{nLN$xLVs~h6yiSr4`H?ZW!F2klT8)nTKg7$IaFP0kc-d zqbm)X6D8JbPssI(<1l17^6k}u64to02GbR!o8HCFVLM>b$a5f7+b>+fTftg7mTx)Z liEX#8FVbq-$upOi;n>^MqwF@kM}e+k@O1TaS?83{1OWb|L(~8O literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_potato_3.png b/mods/farming/textures/farming_potato_3.png new file mode 100644 index 0000000000000000000000000000000000000000..a3d7920918e958a2283b9ded3ed89b32830827b3 GIT binary patch literal 237 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`TRdGHLn>}1CoEvU@$c#f`$(zf z@uDo*F&}+8ZI~UTX7d~UQO{toQ*Vl4EavpPzCgNR4abt58O(?4Qw}?<JM=PMfI+k2 zV`7(M+k)<e3?+^wvmJ6~cwf*xlEu)`uQP4Wga$?h&lyZ9XANdMN~Cc37;DVgz?N}C zgl&x<d#7?cb6i7?bjRDPjRpcYr7cVk$28?|?EB!vXyB{BTyV4Nvgiq+6X)EfAI@ah kwD#N96<rB>&gskyLHuiU!j^1z1-hTX)78&qol`;+05CpP;{X5v literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_potato_4.png b/mods/farming/textures/farming_potato_4.png new file mode 100644 index 0000000000000000000000000000000000000000..405b7e56d71be2991d1330f58325f12b9c0934ec GIT binary patch literal 283 zcmV+$0p$LPP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0002uNkl<Zc-pm5 zI|{;35Zo(x1#jR9>^*=N$PMhRY&?KqZD*Oz+Df!n6hu335TY1d8DWxrzX*a0VfVeA znVq*0`DeVeQsh<9)1Szf>sgVPx9)d=@?L06WU`i8fR2KARuA3oHj3=`=KGG~0~wg8 z2;OKNSj!-fa;Y8Q3|A7H#2Nse35JNh3!M0>oJ1gM>m+!NFF^9~bok_K(FjBriY5Ud zQxHJ*AVPQ8Q}p)^XW}f0)^Tt5&>D6c>cO-Tw9iPA>BNe(E!+u`Ads4xbYUCTw%<z% h*s1-o3!*c>egi=o^~tu%ABX?|002ovPDHLkV1lGBd`18O literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_potato_seed.png b/mods/farming/textures/farming_potato_seed.png new file mode 100644 index 0000000000000000000000000000000000000000..74e440df3d7d786f430d8b9c583374d886b92cd7 GIT binary patch literal 221 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=85s1GL71^(seKtxkiEpy*OmPahde(s>p{y|y+EN@PZ!4!i_^&o z5*Y_LlD|BU`jeiJkWlgKnKm;JIG_J?y61?*0hg8B5geKdPmFeObE(fym@;u%g2DB0 zwOc<W^f=buIN&jPLfl=!5A~()2mVi#>TQX!a9K2Q*+ou<>c>XqN*&TUK#LeWUHx3v IIVCg!0QfyfsQ>@~ literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_pumpkin_1.png b/mods/farming/textures/farming_pumpkin_1.png new file mode 100644 index 0000000000000000000000000000000000000000..e5b9a2bf946b3957a96b53dc9c6c7d1b87183fe5 GIT binary patch literal 159 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa4)6(aRbXHcHDplmV$hH0u_#h@ zZI(!G<j?Hl>t3e3veDNJsEn~B$S;_|;n|HeAjinl#W95AdUC=7#)QHKqZzXmrwBLi zWb8=1v?M``A&FzRre%|>gzuE2a}IV*acSX|lwj!8Wmy^d*kvbBH-o3EpUXO@geCyk C%q)Qb literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_pumpkin_2.png b/mods/farming/textures/farming_pumpkin_2.png new file mode 100644 index 0000000000000000000000000000000000000000..d977e8c22021375b2d19f1e0fdba16ba159bfbe7 GIT binary patch literal 182 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa3-AeXWe{W#HDplmV$cs`(vRn{ zC{lK9mPl^o&+OvsUZxymd_xnclCdPnFPOpM*^M+H$Ia8lF@)oKa>4?;gu<YN05b-o z8A{$WmRT8WXwfj(nb~G-u;W}vQbDk0Xo3KzZV{(&NMb@l3Fj%Flq{xIqCq;LqJaqv Z43+_0`RmeOt_PaP;OXk;vd$@?2>^%3F>n9? literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_pumpkin_3.png b/mods/farming/textures/farming_pumpkin_3.png new file mode 100644 index 0000000000000000000000000000000000000000..83f81905173ce0e5c5e113435a0e758b0280416b GIT binary patch literal 199 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa3-AeXWl&@gHDplmV$cs`(vRn{ zC{lK9mPl^o&+OvsUZ%_>?U@c#$ygHP7tG-B>_!@p6YlBa7{YNqIbi{Vfn@Uu0d}^t z0&LS5u1RY81ba)wEYHx|xpFtV;SLuq!yPM^SQ+ftCAPDLa}~qYc9v8%BU8q&7Mjym rb!jw}tmZasTW!f8spY5>Eb7hBlgzKH?>b=~&<X}mS3j3^P6<r_<iIxp literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_pumpkin_4.png b/mods/farming/textures/farming_pumpkin_4.png new file mode 100644 index 0000000000000000000000000000000000000000..20de004acb7b925c5d3bce3a21c60a7e4e207246 GIT binary patch literal 230 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPHF3h)VW<uqUrHDplmV$cs`(vRn{ zC{lK9mbje2l-$UFDw`p*i?4f`^4sYQ|F<xxKRuEJ)Wuj5<QL4~@a#q!kdx)<;uykl zJvl)^%0RODgaA9+TLHFd4A){ceWIf!Vzy^!|2+4BBdMS>Ea`*IyjKSvyt?&7$Sjt1 zg`J9q^~6lUfd0uzt5<a>d2D~Dc#Ol8eSv1V+QytvmaO}ND_6-XPCE2J@X^C3w=|Y9 ZFf3jx5kBXP&J>`n44$rjF6*2UngA7SP2B(h literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_pumpkin_5.png b/mods/farming/textures/farming_pumpkin_5.png new file mode 100644 index 0000000000000000000000000000000000000000..59fa78eb0ebc9e5d8dc3b6989e3eeb22cb31eaec GIT binary patch literal 259 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDUZEWQfHDplmV$cs`(vRn{ zC{lK9mbje2l-$UFDw`p*i|>CiWA`%Ux6>K^Z(;a<n&EEdu{S`yj3q&S!3+-1ZlnP@ zjh-%!Asp9}6AtiMs7o?)o|{lvQ|=@Yku-nauHV1zi?Cf+w(_dG{oXIBpffP3;(Puo z=H}JelTZ8ZoX*4Jqv&Ya>EpoGJUMCgst%<S0=|mJI852u+63-S*KxPsX0T)4jQyeN z@4UF0-8+^q&t5!(iFxwk6GrMY)fPmVn=V|UX3EacdP7zJ|F#v}K*un6y85}Sb4q9e E0LcGZ=Kufz literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_pumpkin_6.png b/mods/farming/textures/farming_pumpkin_6.png new file mode 100644 index 0000000000000000000000000000000000000000..6ae543e4b00d879d3776c43941b1e0a6297125bc GIT binary patch literal 263 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!aez;Vs|8SjGMlgwlejsDlq-Xh z7lT0<gHDLDVLZEIjFfS)azcfMOS3>iBYSoiThlDXj%CUQ)lD;i+8IlN{DK)Ap4~_T za+*9{977~7_x1&fF$HosU6o9GvGnP`aOr(f4*woDa;N>j|1fRGy7^H{<on`G9#47~ zUQ`metCMYp#<iwEd52>?AM%@4FZlj*U%tHD7ss+=p9Sqg-4sN=MbFGNbZ3n@HQCr> zqVb&@-sfVYXD=6YjJ$I8?Bu>9TMW$jFSee&a_r$k235P@Tdc})w{qqHUBlq%>gTe~ HDWM4fdKz5H literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_pumpkin_7.png b/mods/farming/textures/farming_pumpkin_7.png new file mode 100644 index 0000000000000000000000000000000000000000..79190e09ec135158eee1ff6ccff404b3c09eed69 GIT binary patch literal 271 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!aez;Vs|5oCw<H6fDyN_}gSZ)+ zxGlS}DX)?jgG_*+VLZEP3YS|dYj}yEOS3?IgK*Xaz6FbAj+Vyc0kt!h1o;IsI6S+N z2IO>kx;TbNTrTaqEyS$I;T)T^NHpy4|Mj|Mzpu>vbYQ|^)hVCM&(t~iHbw0(RbML= zmah3Gt@h`Gi|4L%M=-F@xfeKtWy7R~$2Swo1IjP6&g=HLl(*IF>4wKnd!{A5+gUm{ zeO2c63q7``KVG~!Hj}e9$8>Ya&pUN)FS=&PPvAV>%2j@Hzg29TicRNJ-V9yVJMnV@ RI)ScY@O1TaS?83{1OR`rVs`)l literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_pumpkin_8.png b/mods/farming/textures/farming_pumpkin_8.png new file mode 100644 index 0000000000000000000000000000000000000000..b941442cc236ebf2b29362ba98433dd05c6f9a0e GIT binary patch literal 275 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!aez;Vs|5oCn*<A=3J13u6Tdl! zxH*TICzG~2bD|xCVGv7=KjZ9VhJZ@;!*vYz`x)-dW4N(_E#RbWEl@jSNswPKgTu2M zX+Tb&r;B5V#O2stN1?+89L&6%db!!2|6k9ma#@Z`e2emuYx@p=v6lYJxN5SyP*UB2 z2YezoW!Ek={{DBShOWn6$Jrc{SuU+q<P;S4xK?9-K~-1lNt^nn!)s3LI#i+3_>+_C z`i?bO?9oT2zJA@Z_tzc=+bvnTM?Hg^x>{FESN3CEJB^3;d&QSkaX!YTv5T@7-nA%Y VQ{5#yV>i%c44$rjF6*2UngHtQU9$iH literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_pumpkin_bread.png b/mods/farming/textures/farming_pumpkin_bread.png new file mode 100644 index 0000000000000000000000000000000000000000..0dfae08fd83a2c6ee7a88c67adaceb5f2882215f GIT binary patch literal 200 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFv4DbnY1=5pT85V>v?8;?1-@tu$ zisZX(_P0(nyg8fu>e<FOFE;x`d8z>wF_r}R1v5B2yO9RugnGI-hHzX@PH<rK;R=X4 z%5f-wvzU$BFmx&_cLS@^a_eRZpTw0*+Y}hTK1~#0ygpMkfpKcjmxKv&YTGx2ZP4^t twoYJg&nd+=f#lX676l$R#}IY~hLd-BWs>am-GLS`c)I$ztaD0e0stQ@K=%Lu literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_pumpkin_dough.png b/mods/farming/textures/farming_pumpkin_dough.png new file mode 100644 index 0000000000000000000000000000000000000000..62ea7a65ffadc1aac24e9c9fde35a25130509537 GIT binary patch literal 193 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa4)6(aRbXIvzcu3H!Gcd`y1!gn z{PpUluQ&F6yM6lm{R_f6o7#cO7)yfuf*Bm1-ADs+LOfj@LpZJ{Cmdj(5gW^UprpcM z7iWjyyn7QbzB_Q>fK*^$T%6pq0|`O5xKg$*Gn%o?ZHxPs>1@U`mbC3!w%c0TNMiSn p9ZRgNcN-XJNJ?u<Y8whLGpw=^&N<TOuLCrn!PC{xWt~$(69DV3Nk0Gp literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_pumpkin_face_off.png b/mods/farming/textures/farming_pumpkin_face_off.png new file mode 100644 index 0000000000000000000000000000000000000000..df7017147ed7088768b756be54fef4da23b1b5e8 GIT binary patch literal 259 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFv5AX?b)n#CA31^?2#JwhgV{rz@ zwp@<mm7F*FI3KOxe6)@8+}5~P7fL=}uNCWHEd*+r?&;zf!f~DVm_A=q0K<WY^5>pt zSecodDm-G9dCc&sLW*P8$K|^|vZx;B)p5&rIM643&|^cT=HE-lU3U7d+N8Qo$gA|H zSY+K|r~8&C8lHFdC)`~uTT$6DEzw7rGke+e$Nzk67JE&qcKy=Pbo7tZqv^5tx92-X zyg1<T;Q9i`W)@@lKbwtwm3JSN=6QN*%a>_Ay8ag1O#d+oNvf3iChV#LI+4NC)z4*} HQ$iB}bbn|M literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_pumpkin_face_on.png b/mods/farming/textures/farming_pumpkin_face_on.png new file mode 100644 index 0000000000000000000000000000000000000000..fa71c9d474c140e8b123c3da04fe468ad6d2846f GIT binary patch literal 269 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPHF4e$wZZ3$<eoW#8*fn#w7$DeS9 zZMhuBD>?r(G2H0m{6C-J(F)E-+c>|UVfcU7{{PEnvHLM=ff{Ffx;Tb#TxXoXkpG{7 zF<DJHDLGAmK{(ksIk`B)kio2ZdT7c?3uOi~%QLPyXC@mnh|W24Blc{m5rc8<*~?+~ zoXr@5eePLgg;}LCgqgf+jfhy?$`HCC)RL1uJD9<=xp>Z;nkr+4;FRNM&)qp<%wXz! z_TGcLcbpl_&c2n)cnD+&$;vUOEe=y;U`|#uOKLU(`c2TtSXo$*VNJ5p$41TVzktqU N@O1TaS?83{1OVymUPS-^ literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_pumpkin_seed.png b/mods/farming/textures/farming_pumpkin_seed.png new file mode 100644 index 0000000000000000000000000000000000000000..6933bc38e8a11650920f3bff1d16c80cc77ad543 GIT binary patch literal 312 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6T^MdN zG&1ncRQO>F6yYrJh%9Dc;1&j9Muu5)B!GhKC7!;n>~}c$c=VZi`d=vng(OQ{BTAg} zb8}PkN*J7rQWHy3QxwWGOEMJPJ$(bh8~Mb6iY9xyIEGl9PX6=%zdf^RLuaGY0jA_T znU9hafZ)g9pT^8U(46+Y-fB04xWW^o9o!+O%nS?+j0`t?`Y8Oih7AbZVm1~m?|g5+ z=`0TqPftax1IL3R$%||&uGAfP&zjR%x;*lMeTcDg<i-Yn<%<_RG^_+KMttvFlaZpR vw%~*pd&J(0It`f@|NsB*dHDYKMIRX18uGR+nwg{vbRL7JtDnm{r-UW|cQ|Vr literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_pumpkin_side.png b/mods/farming/textures/farming_pumpkin_side.png new file mode 100644 index 0000000000000000000000000000000000000000..2d30f203570c434bdb20c0deaa49834c4a2ff3a4 GIT binary patch literal 231 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa4)6(aZ3$<eoW#8*fn#w7$F^LK z<CUB@`Zyo0;C!@=bAPawB~V$rr;B3<$92&&7kQfu1lS(j-@)J^aX_F(T!T-+_MT<+ z)4jeD4?I#CII~wX*U0<DgbVNHVYM!Ed}nabHE?CZqBWmiMNiSn?D1}ndnwU=w!zM< z@^{@qwOgIrIvz^!cYPMV`^n==c=MOtoI)2q`u0}+I~(UJ`}oi$tF7U4cA5oe7%Al6 dT6N+htL<Jj(=!DL%|ItHc)I$ztaD0e0sz^eSaJXW literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_pumpkin_slice.png b/mods/farming/textures/farming_pumpkin_slice.png new file mode 100644 index 0000000000000000000000000000000000000000..1fb659e2664a1b7ed724a99ba34b8002241ce54d GIT binary patch literal 204 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDU{m8`C63#v^PqVJl|4b$4 zky?gT)12?mWmvVO^uX${Tk9FG9V)(Xa{B$#RZlN>KDxKFNRRa>P%mRikY6x^!?PP{ zK#rHEi(?4K_2h&D+!4(p3R^BsQZP`y6MLFlXUV1~=R4UZ_;}Vnd&B9#Hu>_&+U<@! z$7WUP8#{VQ*yi1Dkx<@f&Uh$c9<Q;b@a|TIk77dBZxZfw0ZnD_boFyt=akR{0EN#> A`Tzg` literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_pumpkin_top.png b/mods/farming/textures/farming_pumpkin_top.png new file mode 100644 index 0000000000000000000000000000000000000000..79283454ef1f0d5ab418e9c6366b49a5783c1579 GIT binary patch literal 272 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDU<x^qz))eG*=g)Iv&`oCV zi)CGt$g(JdDWrp8YaZ+L8l#gHd^h^J9<OFTz9#U&afZ`e=_WwEvproLLpZK8PGHFY z&k&kjvwhp~>`;dA-N*M-pFDn@;q;uFcjnxzz0I)a=A7GmZ~ooGP&xPHHo@vW<qUfi z*s5MhPv66E$jPD5P<`)d1{DtnVL>L{YYc}}S{MaAoXQ!pi<A_EnRHJxgrDA4Zk~Q; z8^fNv)3=t@&b`f$ee%xy-E(i2GnCIgd1vmN>&F<P_s-or`{e0TkTcTvr0)s6?&-Rc THBhDx=u8GrS3j3^P6<r_++k^% literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_raspberries.png b/mods/farming/textures/farming_raspberries.png new file mode 100644 index 0000000000000000000000000000000000000000..ab96e1bf9b381610a90efeef0d7964808e413d9b GIT binary patch literal 230 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ydu{YLn>}1CrGevVRa8t`9J@1 z@IU`)$7WBf`tN9RvhB?@u^;;*XE3i3bUAEr!l7wac(HMVX%o-Pg9jRt1bk$cKU3A= zNnllIRXD3)cfw&p+6;>`3TxO7h%~+6TfnGL-^|k}$x_UC?L&hmgXX;B3<njCewGl> zV_4a^lcUAZNp^|EGKQOBDbpK|JagRJ{*Y+`(+oueUIQsHyAwHU5*aS_$jv=bGh_9N eX+e%+3=F%)R;U`^(L4!sID@CFpUXO@geCwLQB*<z literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_raspberry_1.png b/mods/farming/textures/farming_raspberry_1.png new file mode 100644 index 0000000000000000000000000000000000000000..d1a7ffcadd02f666eea0a58dc31b26bc30a5f322 GIT binary patch literal 100 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`+MX_sAr-fh6C_v{CsZ_bu5bMx x9BS;zwn&@p<HpX1S9(sfx=1#iU-^TFfk81xEqJxTmmffF44$rjF6*2UngAQ@9|-^e literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_raspberry_2.png b/mods/farming/textures/farming_raspberry_2.png new file mode 100644 index 0000000000000000000000000000000000000000..308a0caf006a7d617319c7cc98453d7a36d8e55b GIT binary patch literal 223 zcmV<503iQ~P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0001{Nkl<Zc-rld zp$@|^3`C>h@_o(N*kEDlq_MDpfx^<_@_uNhOZC!QT2eMpOHmS^?`&TPXZ(4@sY%cA zl0Ne_9U^u^NIGpFGEo8&0@ojGm;88dLFHYfOeTPFrK;OW-U$p&5#YGGh@MlB^Cmfb zWPd}r$K`-w?vG&<lH=`rBT`RRx_NgMD~AV6Lyh*&tDvR=I=B#i)T?bgprAH%k8pdf Z|1T?ck@a`I2mAm4002ovPDHLkV1lh)Ufuuz literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_raspberry_3.png b/mods/farming/textures/farming_raspberry_3.png new file mode 100644 index 0000000000000000000000000000000000000000..43d2ab135687f55ee1ea1ed9f089b5bc0d6f80a9 GIT binary patch literal 231 zcmV<D02u#?P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00024Nkl<Zc-rld ztquY~41^o>d7cJ`L!QKv;LafsNG$q1uSqDGCEqex*5DA=q}lDyOs9=l?9XkQhdkU? zdA_gnC*U(5xxYq^mnc9Hh={sk^>o1k?oN@typvRADj-)A^*RU@C?k)O65!6x8m>ZQ z%K4CDF4_M8w$t0Gaoj2sR}(q@zBeSTvO3K#t7hf60d-Vp|FQ~fYG49Q0!V>s?P^~) hprJiz53o6Y;uowDqLJPOy4wH%002ovPDHLkV1k`AU_Af; literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_raspberry_4.png b/mods/farming/textures/farming_raspberry_4.png new file mode 100644 index 0000000000000000000000000000000000000000..32da6b9fb11cb9c6a88566d4b66c4cc1ea7a235f GIT binary patch literal 239 zcmV<L01*F)P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0002CNkl<Zc-rle zEe--f4236XJeS}A7#waT5=(+xhd>~)tMMF*!<2lGZ|Ke{5Ga~VrqiGIUOT1y?KgH` zE#s@k{yLBSFpJY|5g#+|E+w|-68HcBWNreOCDPa(%Y>1*AXrsKLb)(<w<=m9dn$k@ zqvt{!0V5_!H6&Y<eH%9Y>zH%7bv6%0#`N>tf{-75Ee|)Ii;1}dZx_t`&rzI{0vRj< p5C!Dg(MAe#Q@ha2uB{L6_XBqktmj>mMT`Id002ovPDHLkV1g?AU84X1 literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_raspberry_seed.png b/mods/farming/textures/farming_raspberry_seed.png new file mode 100644 index 0000000000000000000000000000000000000000..08c958d9e850647d0fcf2d9e033fcbce5b08f4dc GIT binary patch literal 212 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6U4S$Y z{B+)352QE?JR*x381$4un6YB1eHl=Yy~NYkmHiHfJTC)N`InAnpiqdXi(`nz>Er~7 zi~}6Wf6^0voIh~jK!M1q?T(WUv(L~dW#m?5ZHYP7^hEsF|G>ciYb7NlB&O>ot61`! wC}j+MP#<#TKS<m?%S5P1@$KTm5ANy=Q!lAT``FZ40?lXeboFyt=akR{0Kg|fe*gdg literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_raspberry_smoothie.png b/mods/farming/textures/farming_raspberry_smoothie.png new file mode 100644 index 0000000000000000000000000000000000000000..fe178d114214e7f35ed7bf02d40ddf466237088e GIT binary patch literal 231 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!aez;Vs|5qYGz*J)c6Q6`?KeBS z%=Px!;o<31CU7t&?oet<YM;`XnyL$z&fmIo^U1SE??1l#^Y8bRE&FExwKJ9k`2{mL zJiCzw<Rp2zIEF}EuI&#LYEa;CVVtNDxch%*vd{4^i~lBm=jCDeusXT-P`JA4?C$eN zY_Ep}h=?;7e!Iz3K6y5yS#W~~XCafA=b=XRfY7p9>lF4stYMu@ilNf4KUKTW%b%HA czx*cqoJQtdn-4@818rmQboFyt=akR{0OU1RPyhe` literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_rhubarb.png b/mods/farming/textures/farming_rhubarb.png new file mode 100644 index 0000000000000000000000000000000000000000..7d416ab21b752b0d4c59c01e5abf428d1d072db1 GIT binary patch literal 165 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa4)6(aRbXI<QB~UP>~gZa+;6dc z_CeQcbLKwSwEpe+vjMHf=Yh%?OM?7@862M7NCR>#JY5_^IIbrrD6lv!Fj>tpWg&-X zqF7mj!6XsIpd7Db3l$Xmo@`+en7{ZY&!PoqdCsIKtj|zLk!F}B#dg-tebFSK84RAT KelF{r5}E+AIyGtl literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_rhubarb_1.png b/mods/farming/textures/farming_rhubarb_1.png new file mode 100644 index 0000000000000000000000000000000000000000..01585b1bee3fcf44ad3e39e1cd562728576e0616 GIT binary patch literal 119 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!93?!50ihlx9oB=)|t{=BCWF7Q;bN+muf!bc6 zAY)08UoeBivm0qZj*O>^V+hCf<OBubjxHunetvc~Ha<RuZf8a(1_lvH#%N(JMMj`H N22WQ%mvv4FO#n738p8kp literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_rhubarb_2.png b/mods/farming/textures/farming_rhubarb_2.png new file mode 100644 index 0000000000000000000000000000000000000000..71845c750563c2898831177777aef51105c85b4a GIT binary patch literal 152 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPHV5AX?b<z!;m<mwu<$o^b&bJju6 z^RC*FKq<zOAirP+hi5m^fE;sA7sn8e>&XcU{2MGR4Gb(9B>i->`1G_C6y4awT*U;M vC3_rrm^GRYHXM{VX3$_X;~@{53LC>^S?05Qc*Pe1jbQL}^>bP0l+XkK&Zs9( literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_rhubarb_3.png b/mods/farming/textures/farming_rhubarb_3.png new file mode 100644 index 0000000000000000000000000000000000000000..b412f7e0105cdf29452d5c44e378ae73745dd3c0 GIT binary patch literal 167 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPHV5AX?b<z!-rRZ-dG>Ke4jKI@=o z!oo><Kq<zOAirP+hi5m^fE+hZ7sn8e>#3(3IS&|cxLoW%%h0DVbHM{9#=G^)+7>Mg zc=+Jp+z<QDq&!Kg_#yjHN5p;o-Aq>IjmLhQNf#xw+RozDKEWt&^CE*a@_PucJJ3W1 MPgg&ebxsLQ0P7VvcmMzZ literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_rhubarb_pie.png b/mods/farming/textures/farming_rhubarb_pie.png new file mode 100644 index 0000000000000000000000000000000000000000..1f77b535cc6a30729099d3ba2f1cbe7f2c8bdf08 GIT binary patch literal 198 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa4)6(aElDk2Y;Be0Z@k&rWuvF} z?!ch>6rZmA@M+b_%Y#h|fyx+5g8YIR9G=}s19BogT^vI=t|uoPV83ztH1~m$jT<*w zbg(XI)LFpLVP>Y2@Ib)KjF;CmFX2IkNtvh!537+CQ!g_stF*)nBP**W5msRdi7QrC rQZp_!+?sjCN=iY^SW`1$t02SnRKb}pI-9NnEn)C<^>bP0l+XkKFLyjV literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_rhubarb_seed.png b/mods/farming/textures/farming_rhubarb_seed.png new file mode 100644 index 0000000000000000000000000000000000000000..c16527d99aac89382de0fae41f28262582683d00 GIT binary patch literal 219 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=85s1GL71^(seKtxkiEpy*OmPahdiI5)Pm-fc0i$MPZ!4!i_^&o z5*Y_Lk~MO_{5*f)z=031FQ&5rL7VzccF9h|hRz`I4FW+9CsGTT-~G%_tkGWlX?|m4 zqvMa0vTmDV9J<^l9f+2k`rqJs?~x3ZCx;Y;dQE!$7;-<FSnry=0puJ8Pgg&ebxsLQ E0MQsp%>V!Z literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_scarecrow_front.png b/mods/farming/textures/farming_scarecrow_front.png new file mode 100644 index 0000000000000000000000000000000000000000..364738fd6f3020f97686e0350c7b20cb01ebca52 GIT binary patch literal 634 zcmV-=0)_pFP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00001b5ch_0Itp) z=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iyn` z3pEH~gop+J00H_*L_t(I%cYXfY7<cuhrfI0&P+N(hBm8cL};L)9pa*!K7ruEof{V} z^gX($fv$ArgXlth0Jj!#p~XsC8k7bCfk0=HN#@_ZF50ANHWvKBfqUV6=brPsN4$F4 zHeBmv>o*UA3{&Q4t<f1M7f=<1v@trT$Y#9x-ku|<?T0?A(y2ze607P{rZG|%AZ>(G zMd^ZNMupAB;*x#+Lb(RmfbuX1EVqg&Q}R)ay`F(oEHkn<h?s|-f)N(d_GrBxBP~Ta zjuDni_zv<(N->$S%&2J+1Mut5gz!F;qY~pJoa|c^$q4Crm@?(;u!a#9`FIE!%sKVr zJi=BM09M7qSr>@P2Kji1?bk5*1S2FmPe3Sa$K~i-|Hgy8c7tgWv*uMX(_;`0Tl+%* zP7fw*byB(q6<VDc0B46a_S#DxOp}<fc~wL>9vBTkw-d0{NjW`mX?13FJHho2MQqlC zMTn1YpDp&Fdhv;Seuh*I7>#rTvf&7O!v|A<P+)t!zi8f!@bkRSnpXuNOfv8RAt^31 zq(4Fh3QU2)LI5VcT;v0Y7f*J~@)FGry{putW^ijU06u)~vb$aXCp=AJ6u|Nr0K40D zHtWG1-Vd${tadP0ZxAics|9<5=&FOT*|?RssyWyjL>wLWdH#53(SF!$Ao)-I1^FG; UvMH`M-~a#s07*qoM6N<$f{x1#`2YX_ literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_scarecrow_front_light.png b/mods/farming/textures/farming_scarecrow_front_light.png new file mode 100644 index 0000000000000000000000000000000000000000..b4b3cf289b9525f2d4ae8004719a924434bb925a GIT binary patch literal 641 zcmV-{0)G98P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00001b5ch_0Itp) z=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iyn` z3<eeRrk82}00IF?L_t(I%cYXfY7<cuhrfI0&ZM0o(?$@YX@!PV+7K7r^a%tP?%cR= zq0b?LL!lep_#(OxAHc0eTxgME+6HX`p@l$ann~y1y)N3MX*L%8!GU|>eCM9?yGOiu z+%jD1`TgH4`6;Hz&|0HYP$fXkA*7Ab8F_lnoA0eLf?B)hF)N*DWJzL`J&Ghk>Kvqv zaLOp1GtH=Gy*9a|U%yby12&*s3<9fE#uN$JAi`cuK`N#h+3AOjLyy1+3u(KozOEuI zMR67(tP<<*8f3$Se0a_@qegKAz}}xB&AU(x3XBu8_o{<11=4jfMZ&@M0K0OV?Cb<m z7<1~!VTi3P0IWF+XHg*LDr9FT*xoHnHpB>t&SDS>+bOa0t#{?YW~;_1j+l4Ln9(i> zhsMhVV1fPMh(@qXJLs|+ECFz^Jz%pn<-sV9Xx1-^2*(AZ0cdX>(+HN?4~|$3mS}Gs zU;a?YO4Xl)`1tn8WDm;SPu%fRq;kM$WXUHz8DLjDFgXYXw#)l&{c41thdt)qG62mu z1rHFC{4_;+1C+18<QOajV3N~GK7e@kXx&UN(b&+NN<FCi*A@fd!{=XYtX2OBkKzag zFg*sq##)t?s(*v`{fh##9gNlKhm-Sc!A?KC=%87zT}zzR80_>zc6NI_eYiepzge## b`A_`?RC(3*j&oOz00000NkvXXu0mjfqj(y4 literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_scarecrow_side.png b/mods/farming/textures/farming_scarecrow_side.png new file mode 100644 index 0000000000000000000000000000000000000000..e22e84ba1dd15382c478abe92c35b03ffd9ba9f7 GIT binary patch literal 613 zcmV-r0-F7aP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00001b5ch_0Itp) z=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iyn` z3pEq#;X&#E00HGmL_t(I%cYXfiqlXOhrfGsle9@2+Jab&2zD{dl)9MBJb~cC2XNs+ zpT~#s8QeOEf(}Jov?vw}g)mLpbn@?B7qy+VA_{)H1NS@p&bddtd^$4x;>F2V?gu%h zD$rV^b5Jgz8VG4)bU~Tl@ap4er=U(B_#C4%jdUee+o#GBq%J|)2&awGC3Qy)2jRZR z-@T=30ydyL3<Aq-W2%fIO0YXQNJZUI(|NovPBvhKg{54mZjf$3xs0${ZS0PqSZ4rC zSGSJZqzM3@zpWYGgDR>pPKsz*=rlrl9;V8WP7AvmP^=b^!_HHmCNZ|M0I(VsPDdab zU5eEL+wY;v9FXWD1);DVm&^CF+XNS*kWHG<^xBxs6$poFy?_Etu|@z@nju>OWfJ3b zdR&ac!x4sqknv=Oa6K?NmVbvI>m_%uGwhDLT`HiO3Z2C~><7R9!f+5GzJEYhB{EwQ z1{&%1$QKcI*QZ*=SiTRo$9Pg3VLX}9^xE4dX%0RhB;_(k`VlHnU`nLt0bsJ_{yl(r z{^ZQmk7&2he?>hS1P6x!@cPXc&QJS)l{aaE0;rDxaDLi9Sk#{hwhfLG?5JPqal`36 z-X<6h!h?s$?8NCj=JIOBv&U!q_`^Yn<UjcdG6cn7;!>RP00000NkvXXu0mjfYmf>R literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_scarecrow_top.png b/mods/farming/textures/farming_scarecrow_top.png new file mode 100644 index 0000000000000000000000000000000000000000..3a4addcd66f7399cedc6e9c415ff044c18ae5ec7 GIT binary patch literal 639 zcmV-_0)YLAP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00001b5ch_0Itp) z=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iyn` z3p51=F2(u)00I9=L_t(I%YBniYZFlv#eeV3o0(=NGo%4&As{rXHl%`^euA!a*Nt1h zkDtV?Tm1rdBVwtdn1UEB1cJ#VGo3&0Jr`jnomf1(d%5>=IOkmP^7+_u4`rnRaFx@l zYt;Q3>iBWkYK(@1R{i?jXI`A20B}8-vJ3I%)kTZJ&F%7^p)5@vJPx4lFFY~tc@`H~ zU1E&E6rg;dyN8f2cJ+~}xZ`bc-t5RMO~}%O4_|JZrpXObO57;ISin>px?Y4*s$rF- z3F^~i*$7koO3)p^1yq1V;P??%=almVw^x8vTwZOpP-o)-S(?xZBFwidtZ;CY5Bd)2 z$5e|sPB+5s3CeX2z}a}Kh04-|(Qv@^WQsZfJ=a(-MRXlZI!6WpR_92si@P6Fu4Wwd z<L!Z3+0k%-^TWaG3B=w$<!Xi-_AylfNKBc6P`IAovQu48rgVY`fU(vfJoI`7CD?L} z0CbuoyD?R=#Ow8&d0-<VY^*#z3BVRO;Uj*p7aaV_aeMwoR6unUCSSH3Q>VkY35fXl z9iuB`zF-g=q~E8Q&2jfb^lFI{hTsM~Jw9x#RCPo<LBuF6AOwV@S`^4|j*1o73K;|d z*nGj!VJ%|3IZ!jm4lnpxbL+Nay<OTyK1-903lHUgck$+S$>r6wd92!gvHQ;d!|tmC Z`~`sU<F<Cv1-JkJ002ovPDHLkV1k-N8|(l8 literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_soil.png b/mods/farming/textures/farming_soil.png new file mode 100644 index 0000000000000000000000000000000000000000..5cd3e681c4c3f74943026d67941e1f03a75d8cbe GIT binary patch literal 706 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GXl47&QZYLR^7dkPrg{3z!5FY%qoj zACm|hg9HZyCj$c$SkOyP!ck4oMO)lOT~vaZK}(25f|bEaRhXZV0f>MaIl#*FCAl<2 z*jzM4Ty?~h`4}A)c{PPt?KMP{c^Kt*n1q=bRCrk=xEU0986`OxWVslmco^k*nT44c z#Mwdm`4||0?gk==lYqvmax=(sFz88e+o=nSF))N!Dw)c0i7+sj$_sdC3VG;?g<B~a zN^{9DGx!?I+iM70%k$}pam6|7n#&6+aWFWmNlNiBn@V$w3$TcAGKjJ;@G~$tXh;Bq zhns;xgq;cKJ)p~Z7#P6zgWRAg%xWaXE6T)RrXXl9$D=C1wnU?5E>I%2B*-tAL5ssp zg-ugQ=JU=uj`9Nk{{8*_^zOAo%NAzE^8Wkr>FulM&mKK`aOcLA%jZt--?L|7TSI-Y zt)cF}e?Ncx`2PL<o9B-o-no7K>eVafjvYCCXwRlio7S(M+S^r<9N}ZCe)ikpO+brY zd%8G=NL=<kdo}N{frP_D`)!Xc&cviWD?4-MjQ8%hf8~=dF7f=k?%Z8Q#Wb5gk6HPC zUHrU!!Kch+A9`6DpSy2wG@2NF)@^ZEZPTH&bAm^!$^*`=S(A26D?#OcTb^2US=q)P zzh=Hp2>n)e-CV|fjjVi!YBt~8j4oBq$NwtYo?c(at-|KQ;Z)*ex=iq0{<>owioXsq z1ik!ouD*J@sM%aW-=!Po+i&^w^w-O$1utxSnvFerlGdfq=U>%&>050@iqkdj*>7K8 zJlePNw(E6UM$d<G8<paJzCE|%>R}myBgQQ(tAd;k@w1$+=w<)GdgYQ#>vo>l>7bDJ MboFyt=akR{09AqB)&Kwi literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_soil_wet.png b/mods/farming/textures/farming_soil_wet.png new file mode 100644 index 0000000000000000000000000000000000000000..0b4487d8a2460c3d06a49560ca5c5905fba69f30 GIT binary patch literal 677 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GXl47zG1-LR^7dWWa>P5ny3}a5aQk zlzAD&I2c(N7(8_)M41?z)kK^$g<Uj7L^v2^xfsMb7zCIZco;!Qgq?wtfq{*I0jL-P zTy?~qG{j8hc(p}2>=k&_1z9AS7;Myp6}cH@xEVEsScI4u6nU5>SQz9v8BG<0gupt1 zRs)eLH-jt(gNgvFtqQNLnozKXqA&x4u^hh=Ka(O4g9sx-u(`aRB&P;HqZAW^hk>lM zs-U?nueJzhxSgh{s(_IUzpav(z67Tv50eNVv$>LpFgt@N2LlHK13xPxC@dJEPBoO| zc2*a*m*WYkKbr#-k0=T93--^>2ncORO^Q697xMSp<(hy0etmua=>DBkhxYAWKC!1L z=-=Nzzu&!k`}+0E7tfzOzItWP>gkpLfP%k%e);tA!@F0{pFey2=+VQwH*Q?Jc>dJU z1KT#NTRwkg+w`@aM}T&`_H=O!k+^Jn*0t!cgNW<J`)k=Y>ZBPMTc0`O<MnO-1dWxS z)|yvrW{!BmwI<l0>G>O8!?2L;U3OjqcUv+ABv;?~9#d{o(b^nay(07R%SGXNIn&nK znOvFwJ}Nf1EPC0^J6hQZUuDye%goDK+%3E|dFq1YmQz){p2r*YUS{8(#M)%2n9=H@ zmn6v&AfenM{N*640LzLG3TIy2d9bs`we7(TyUla%{dlG4ndTo^!uzW1_O!k{@#e$l z;x^diH(34tvgh~rmvwuu<@&2lSCIU~ZJK2J<?E5_D|u#U%n|63I8-rnGFQ|8zn!fS b41bv9CQHtBRsMDqlq5V|{an^LB{Ts5=YZQ( literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_soil_wet_side.png b/mods/farming/textures/farming_soil_wet_side.png new file mode 100644 index 0000000000000000000000000000000000000000..f0b1bd45cf7b0ad04fc77229a9f5f2bdb80a2795 GIT binary patch literal 96 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!D3?x-;bCrM;bAV5XE0A7ZWqS)qF_r}R1^X{+ mZAk}mxIJAQLpZJ{D+mHP1`Ld;Ro7~OECx?kKbLh*2~7YD1QR3x literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_straw.png b/mods/farming/textures/farming_straw.png new file mode 100644 index 0000000000000000000000000000000000000000..e4277723b128e9845d427fb22c6bffafd7292565 GIT binary patch literal 892 zcmV-?1B3jDP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00006VoOIv0RI60 z0RN!9r;`8x010qNS#tmY3ljhU3ljkVnw%H_000McNliru-vJR17AHuzT9E(%0|`k) zK~y-)1;NX5+hhQM(NDkbk}s02_?EbJN+?;7v}u7E7OZ&)UWsR6VA*B2beK?RhH02K z#CB}Qwk+B5MUpLvbEIE>zAAqFsmt5n?&*{zmPJ9FmS}fu#KGe9b<W#geT=#ak&RW> zh&FwWw2Y$OMdVUMIF@m12GebmTEioW4{YNWPoFE0>6BHO&ws73ECr`lAXM;oHJqx6 zu#HoyPma0#p~-fma{BcbC`A)pTOyn_g`yH9D^A)~j?c@4i-<U`(K|oE@d|{j&5>3! zNHY|BgOrEpRT;aa!S;ZZ>-a;3B2RG4F~LkhYy(=|C5zb_fn+jzSb<qV<QefShcu+* z*`U{mJ}s%c7Ok&TBuydRfj_sP(xGlG5Ld4RQBVd7O18q?-H30#52#9yK+3!85oS{* zi#@hs%*92F(@-EDGn<zXg^`hq3A^clZZGBhWzKG4v&mwt!<=kiM>oK&?-};%l-eE! z3H$Ms$%Bu$c`wmwyA0oN=v{QMYjr-{q^!e?e?FFxr9PM6t~l&`TD2HmU1D~?k4>B- z6_KuE7PB261`g~KiZDcTJc=Y@@vx*-H>i3QHp_%odri0+^5QHbo&=no+X&aK5Dfms zamxg=CBf7o+wBqJIm2O0p&j`9_Z-{SNz^LE+GCj-<n{@MtRrGdM0o`*6O@b&A3rB3 zW`%6^fK!psG#4|4vsX2O(IeALBfQTD*A~}*?ohna1DOxrSwX%YGJjn0;v&PTx>Pz6 zcb{OZ2+sD9t2So3MNvyECnJ{03Q_O&$PO-!J>&M)!j#+W_Ei>fh3TWo%C~vac*@2v zGnqHJ`_JRq%O=Gpq2nru!L^EPJ~HZ0DD;F)G-f&zM0=l`KQ`n{(6R;b-oPK;a@>d* z+)2nKm1@^U1X+YGA937!O)wavOA(5^B?~j0&JIlpDH=9!-rSQ$GSwrKq)0ew&baTZ z2um2O*K0bLHCheOJcC14LsANww!@d-T@ej7l=Xlory*9Q$2RCwv7RCFkpBT>mv7$x S>1I#>0000<MNUMnLSTZYJD0ft literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_strawberry.png b/mods/farming/textures/farming_strawberry.png new file mode 100644 index 0000000000000000000000000000000000000000..5b43e6bc99bc21663a9e91440fcc97a2320b5adf GIT binary patch literal 382 zcmV-^0fGLBP)<h;3K|Lk000e1NJLTq001BW001Be0{{R3M5Kzw0000pP)t-sH~;`) z00MUb1(*N?tN;kb0SM0k1iS?c+yD;h01g>U1tMAsC~XQXdKo#37T$6IK&m1K!cZOn z0004WQchC<K<3zH0002_Nkl<ZILp10ZEwRM41{CzVlV{v|Nq*a$<}UyZki_5Qa*%x z>^n!~IR0GvPyIJQwW;ofr5@vS_Kk7&-n<{r4R7rea`}dn-usvKah|<3eHx&}k07WI z`e^tbA;t*d0!DATge86gx><#a<qK#^5+kiZDLw+xBnfYTS_(|YXquAP0#IcTIqDoB zs|Qu9*9=MS5W@mg2P}&w7LyfV01OY21UW7#2@cgRz!O+lQ^KL-oRR|}Y}d@0p|c?5 z3Lpglo8JHiJHY0AMu4!>56X$J{usBwLD+9@5O}LQAv0evdU2--{q|!1<I=!@e)uoQ c>v(hB0g#UjTEfK8F8}}l07*qoM6N<$f~dNbB>(^b literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_strawberry_1.png b/mods/farming/textures/farming_strawberry_1.png new file mode 100644 index 0000000000000000000000000000000000000000..3fa21edc5a73cff8a86f367ab663d9748427e6bb GIT binary patch literal 116 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnL3?x0byx0z;*aCb)T(`YgAKzr5#Q)p?D8g70 z<QL4~@a#q!kR#*i;uyklJvm{4ya9utoWdf;j!K6XfsTYD&I}Co{H(IdM}!Q4>KHs- L{an^LB{Ts52<05a literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_strawberry_2.png b/mods/farming/textures/farming_strawberry_2.png new file mode 100644 index 0000000000000000000000000000000000000000..751115e9876d20ce7264a801486428c48f93640d GIT binary patch literal 137 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnH3?%tPCZz)@&H$ef*R`Ai@l6*0|Nnn`Y>5z1 zkg+7lFPOpM*^M+HN6*v6F+}2Wa)LxlgDJx)fsO_vsgMOid;<GaxTh>U#F1){khtTJ h1S7A-Re=NshV%DWZ#dh_tpn<0@O1TaS?83{1OO8ICRYFe literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_strawberry_3.png b/mods/farming/textures/farming_strawberry_3.png new file mode 100644 index 0000000000000000000000000000000000000000..8b7a7b8c0b24eb4b9ed1b13d7a32af01bfc850a4 GIT binary patch literal 157 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnH3?%tPCZz)@o&cW^S0EkVWbq#a7|wSV_X7Eh zB|(0{3=Yq3qyahho-U3d5|@(`7VszVHW;}mD@<ulmYXqA>H&jT;+>O^7y>6A;z%_} xNY-$WTxY$Yhk^A@*TNnLjpk0#`6nYJ8M0(JUs}{0Jqa|5!PC{xWt~$(69D26Fcbg) literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_strawberry_4.png b/mods/farming/textures/farming_strawberry_4.png new file mode 100644 index 0000000000000000000000000000000000000000..dcf001753c0770e613b6b5b551349f958886bd22 GIT binary patch literal 209 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfv{s5m4S0EkVWbq#a7`AQ8JvQ~) zF`y7*NswPKgTu2MX+Tbar;B5V#`(MFHu5$Y@UR>(KgIB0kh$ST11Hm|f5w6uI_xfv z-PZHtw>8R7IkL_?laJT&^lIm64n6ZWq_TDHvP?N7CDLw|HKE3JmG}eM0KW;#{;l7# zUe@5MoukMdg)0e0Q4Oh0CniXq(|&mQd0&131IHnDf#!9p<v_a`JYD@<);T3K0RX~N BOEmxh literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_strawberry_5.png b/mods/farming/textures/farming_strawberry_5.png new file mode 100644 index 0000000000000000000000000000000000000000..a2decaae04daafeb5882c19f67508e91c7b930d8 GIT binary patch literal 234 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvp#Yx{S0EkVWbq#a82+Dcx_#TT z`ER2kP?WJG$S;_|;n|HeAg9gK#W6(V{M8E=c@Hb_uv{p1{a+i#&T)!uW`o-~wm0_P zit=n)r47IO)k~f+{Hw{}3R1thd4gr1)8Z~!Mz^j*kK5izu3EW|IciD9C!q%~3S3=Q zEoD5#us_jfm(_%5kMj>++dMnYy*H10g>_g(pKiq+|M*?o-WC78H+75Uf?UQD-oL+& b-2cF+)xpi>{&|5G&_xWMu6{1-oD!M<02*B^ literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_strawberry_6.png b/mods/farming/textures/farming_strawberry_6.png new file mode 100644 index 0000000000000000000000000000000000000000..a4d0d603fc091f7ead1faa645646ba09e305e3d9 GIT binary patch literal 240 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvp#Yx{S0EkVWbq#a82;zx-oEY0 z&L*=GD9Tt8<QL4~@a#q!kkjMo;uxZF{_KR)yv&L`E{;m&{ZpB)Eoxrd;Bt@e#r|nG zf>I9474ezNrP=8{z3;zN`o{YNk%ZJ(Erp-=)mD6xY+$^6WyXqFuE5#r8GN4IDq#ue zzqoEfMsdZui4Mo*w#4!^D0gH(_-VI2??UC9)X@C5@-IL2?%Pwg@tp(HdoF{e&83XH i*1X=5@TdAXqg~50?wf6EcW(i@i^0>?&t;ucLK6UGzF^M) literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_strawberry_7.png b/mods/farming/textures/farming_strawberry_7.png new file mode 100644 index 0000000000000000000000000000000000000000..ace223cd88a0cd46bf55c2eda7c3d7d1646b8439 GIT binary patch literal 258 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfv(Ey(iS0EkVWbq#a7@jzq-M;Pl zKR5T*s@x8s1Y=2%UoeBivm0qZ&TLN?#}JM4XD3+mF&Xl(=4vkbwprk-+fGLHh%iro z!NB0B|J)BuJaErdrXl3yiTRa^zrG*-#M+my!Es~rB*_yO^F<F;l`dfLUKMvxb+Sjc zIlI=jt=FzL#`2c1uPmQsT$8q{v}+yXEtUh1QqCQy<nA}Q8x`G`Se|`f;ac65%;kAE z8yTu9qpGHQ{Fh+!S~Atp$7gZ7UwLr)pFdy39bO1Zu3NYz0_aQzPgg&ebxsLQ03*m} AH2?qr literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_strawberry_8.png b/mods/farming/textures/farming_strawberry_8.png new file mode 100644 index 0000000000000000000000000000000000000000..6d7280b68caf4af76c91035c711fee93fc037f1c GIT binary patch literal 258 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfv(Ey(iS0EkVWbq#a7`8Dmykg+H zecMxS()tph1Y=2%UoeBivm0qZ&TLN?#}JM4XD=M&J*>dP8W62jemm=(<IM%u1@5A0 z%-`Y{{tvP)X?o@|kKsT6#r^d<_8b1M)?9h-?W#3VpKZ!GZfhS1iIh_=`w;4x;>T}r zFeG1>!TUf|yhe8Ev`4lHJPb!gL!Pm$n5X!z<5Nv~-zCQ4dC@l)Z{5f2_V%Lfas{hh ztJQ8?ym(LLwmy5zS3AaoI_DSgEGlNI?05gq;Pg}U<c~-XkZ&10UHx3vIVCg!0QUZ5 A?*IS* literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_sugar.png b/mods/farming/textures/farming_sugar.png new file mode 100644 index 0000000000000000000000000000000000000000..5cb7fa01e3f66a0e0b46c0b5132aa92a4a32351f GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!93?!50ihlx9JOMr-u0VR{&Yh1RKmPy!|Fl)J zJb--0k|4ie28U-i(tsQTPZ!4!j_b(@2e|kc3_r6e9Nf+1apNqb(5>~2NA~|><~j58 mwUoq+vj5DhewNC|Dl@d7;PEOytjht^%i!ti=d#Wzp$PzctS;mL literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_tomato.png b/mods/farming/textures/farming_tomato.png new file mode 100644 index 0000000000000000000000000000000000000000..586aa56de584ab5f8b9eeb101b430fb075f9c9f9 GIT binary patch literal 488 zcmV<E0T=#>P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00001b5ch_0Itp) z=>Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02*{fSaefwW^{L9 za%BKeVQFr3E>1;MAa*k@H7+qQF!XYv00043Nkl<ZI8V(|O-lnY6wH2Q7yqQ9h+8~* z7XOI{TT$>J3R~Lh!4Iq!i`I%-K~U7Y=v|*PZ?k0!N_!Cu3@^!>nM|^4%>NrJiF7<q z%)FH|)&(nO*2=c;%h<3gSWd(&#qt~k(hCDIsg*~}S=n!s^V48cqDVf%Pz{30l=x{P z-W(FlST+1~eLbi=xIw(|Bu0kl3uLnxOW&fVvEm)(<P`j&M+2MZXkG&Y#8xAUDzPSd zW2)&q1v%t4$tlJr9;j)pT%d6SJOHnnCRVd2;3UcqI6!TqZj>Lj_KN{c3WHmhurOFJ z8&t8_1)&c2W8D1;^E-!oTxo#$rHj4?(-uI@@CvI~WFYK7+`?5(QM(R(?Dv2U)<>xO z5Z3`}M!p0cX+ZEjx*<#yx%d!hV4elx=;>vbs_&uc$(A!J3^R%~wkK<o{E;;^@=KUd eIQC!v3&J<Y8TD)nWyj_K0000<MNUMnLSTYSgT_z* literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_tomato_1.png b/mods/farming/textures/farming_tomato_1.png new file mode 100644 index 0000000000000000000000000000000000000000..d858e58664c55bbbc03a816047bdb714b716518f GIT binary patch literal 207 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;>1s;*b z3=DiLK$uZE^yx&PAbW|YuPgg)E*W+$v8qKk&45BuC9V-A!TD(=<%vb93;~Imc_n&& zt|1C##(JiDhKBB+oy>u%EIeHtLoEE0B^(dzi<`%KO6H8iz4$nWQ!=cF*_Y^U`ahrX wNPu3YLT=;T|4$;zo=8vHc0sP6k%xyNK#QN#bJ3nxKr<LTUHx3vIVCg!0Lx%JQ2+n{ literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_tomato_2.png b/mods/farming/textures/farming_tomato_2.png new file mode 100644 index 0000000000000000000000000000000000000000..9d9ed6d01f2059b1f39209c3db9a8470875b9392 GIT binary patch literal 223 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;>1s;*b z3=DiLK$uZE^yx&PAbW|YuPgg)E*W+$v8qKk&45BuC9V-A!TD(=<%vb93;~Imc_n&& zt|1C##(JiDhKBB+oy>u%JUm?-LoEE0B^(dzi<`%KO6H8iz4$nWQ!=bq*d)8({CA$Y zr14Vfy8o9?T;*X>IGb{tkLhLi+yBdTH~gM&bGnZyTxZMiWCmtthWm~Zc9Xt@hyu-I N@O1TaS?83{1OSgGMg{-? literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_tomato_3.png b/mods/farming/textures/farming_tomato_3.png new file mode 100644 index 0000000000000000000000000000000000000000..fe3dcf0a1302c0353d2e64930465cb80214af8a4 GIT binary patch literal 250 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;>1s;*b z3=DiLK$uZE^yx&PAbW|YuPgg)E*W+$v8qKk&45BuC9V-A!TD(=<%vb93;~Imc_n&& zt|1C##(JiDhKBB+oy>u%l097<LoEE0B^(dzi<`%KO6H8iz4$nWQ!=a>3YF9D)@w|z zxUlE4_!>>t6_&{p|Nh_7`fZ71(5^FI?N3ZFS@7(OYswA=7Kd4m+njeUY5sE5VY&W> q-~M3|4G#ZL3T(JvD1G1n14E~g#?M+?^V>k{7(8A5T-G@yGywoVyHw}^ literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_tomato_4.png b/mods/farming/textures/farming_tomato_4.png new file mode 100644 index 0000000000000000000000000000000000000000..27c32828dce42efbb2933fbf355752f46dc0335f GIT binary patch literal 269 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;>1s;*b z3=DiLK$uZE^yx&PAbW|YuPgg)E*W+$v8qKk&45BuC9V-A!TD(=<%vb93;~Imc_n&& zt|1C##(JiDhKBB+oy>u%$~;{hLoEE0B^(dzi<`%KO6H8iz4$nWQ%m?fqBFkBpHh)k zIlt*Q|DgcA%mtOp^?%NCWJqD)aNe14-C^bt<{6Bd4re91-~3;$yG8x%giERG62g}- znl9H@I?Sq&-fYsG)6O-K?~*w4+<gsAH(uCFGJUhoW0sI$SgT~cw<(7A8PEj`p00i_ I>zopr09PwkEC2ui literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_tomato_5.png b/mods/farming/textures/farming_tomato_5.png new file mode 100644 index 0000000000000000000000000000000000000000..f369a68f4f864f7868965b3c05bfb649abb69e2b GIT binary patch literal 320 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;>1s;*b z3=DiLK$uZE^yx&PAbW|YuPgg)E*W+$v8qKk&45BuC9V-A!TD(=<%vb93;~Imc_n&& zt|1C##(JiDhKBB+oy>u%R(iTPhFJI~OE@0b7dMaf)DiwaQNI72XBIFB9aigOoD(Iw zb9VW!MH(tm#vCVppXQ#TSNxaXn8l^}$3fvU9mWi74zms|oAsZ6W(wCf+ng@TOtuy# z)5%XtQUs!szuPb14lQ=ruKAIz^7+jF?2=5}?3-elj1TPR6=6&J@2oa!Vw!-CnNtI! zgjFk#ctZ|1<1L>e9);!$E7J~`Fm!sY5XfBcKZS#Fzp()WgX{d%rxFTE1wcnLc)I$z JtaD0e0sub-W`_U( literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_tomato_6.png b/mods/farming/textures/farming_tomato_6.png new file mode 100644 index 0000000000000000000000000000000000000000..0135cb53beaee8d64cf0e39ce57bafabecedd70b GIT binary patch literal 490 zcmV<G0Tup<P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00006VoOIv0RI60 z0RN!9r;`8x010qNS#tmY4yXVC4yXYmRppTY000McNliru-Ul2B2m=xh1N8s^0e4A6 zK~y-)&62$@Ltzxgf9KLhg{nyCAne3PqBM<xMNF=x>1wBo#8Bznu=<=V)-qia7Mqkx zEdBwpAfciZxAz{4HbpBEi!+^^H|Lk<InN9Kx}vMY`gh1$SOLsbNTVAg8rukeg4UOs z?y>GbI2OEjRWWdJZDDu*RP1LLGZoT?fRLU$5i=F44hY9O?q44qdivT}n%bArT#Jg~ z5z=#~0$?SxQVB3hjbp=k=C<|m?v=&8Nd;Kko7Aq(ChELW)1m-OZw)FyA!l>2a3S&S zalOeGa2*#h3<OBWGgT>N1%;el9$x1QyyP6-9+jPVMx3HDF*~F+0hP;UBBJ(_L#1EG zRt`7Msw$`lI9Ry&^k^m`+B@pU`iM_{h}oz%w3d&{J0jrm3DK1i{Tg9S06-}XkG~GZ zB^YSLN@l<PgPQ8hR7kxo1_nZVvyb(eBl)$3iP<5wl35V}r|5EdmB&m(^w$8N-wVJ% ge-IJ*c9+U}2fu5StM#=WJpcdz07*qoM6N<$g3LD1KL7v# literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_tomato_7.png b/mods/farming/textures/farming_tomato_7.png new file mode 100644 index 0000000000000000000000000000000000000000..4cd85f5f54dc323e52aa1113d03bb82099b7b109 GIT binary patch literal 570 zcmV-A0>%A_P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00006VoOIv0RI60 z0RN!9r;`8x010qNS#tmY4yXVC4yXYmRppTY000McNliru-Ul2B2mp%*QcnN?0mn&1 zK~y-)&62-Q6LA>EKkv0YY^l+Ns8=eSVd$kH8j`v=G09l|0;AD{q_g}PIydph#N<Xu zT)HtiHM%r#7!7Ek7-*<TL+#yt?{%n0sFcaYXL{e^`Q&-N?-%}Sc~1)Z?~tcO1#qj5 zdMndfUMY@1)5+j2x^Au%?HW~5#F&Awv(}d2XN+5QG<QqbdUYUf)foX;$&f3ByZs|W z`N2(cnQQE<wFMv!mDGf=^?JDPZ5+y2Kr{f=i97w1klU3k0LyO|)LWb)m6b~?3V_af z8mV#|MHJd!W$DGde)qe?QH-Q4L?LJAY1aJ<Bn#lw#2gz#FE#*t^Shk>F#PH$+i&(I z3YDN2QmJ`57I0t!dL}|qDm71o?huspH3P+-%n<a#@f8wPYMutY5Idh?=6;U#XCK9_ zI-1T3U*5IHK7@6CY1VzQCo?qbz9_@AVu5{CC_SFmzfX7}!FescoY(C24BH=$5Dc^B zDH_jP;#M79Sa#^2gfv!LlD-V!Z+5tH!@?3_=8qX5F$1&<bE6d!-F-BtdmD!$7DPde zzu7svKw<{y#fGs7?0g1*dk>3zdcP0o*&k@Ew&b(pf`X#_24RZDS_hy0od5s;07*qo IM6N<$f&{?&$N&HU literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_tomato_8.png b/mods/farming/textures/farming_tomato_8.png new file mode 100644 index 0000000000000000000000000000000000000000..0b490257f0dab5ec4a4d4e67775159ea75594e3d GIT binary patch literal 510 zcmV<a0RjGrP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004XF*Lt006O% z3;baP00009a7bBm000iB000iB0acqzivR!s2XskIMF-mo90w{EdZO7j0000QbVXQn zQ*UN;cVTj608n9RZgehAMN}YmGcGkQF)>H;LN@>a0cS}>K~y+TwUWI~!!QuXyD+eI zB8lC^B_VY@GL#9aZvaTBYNr<H#~Uys!Or7>N_RSggs6nn!*{k*7aCyUCq=pQ-T!=N zyY??+{RU)x4#wsnPC~MM+Pw^hH=SMUZsNr9A}WjEA3+;GE#9$9n?NGrBW}SWO5x}( z19@e{*oB-jP}6m>4Ma!O)r7+v&tbtbm<Ixi5rh5nh(=Ho(+%1${D5*u=ui^|&9e~Z zp&;>7kd%V7YsAQ_70+zEBp)ykr=os%Ep+QC1@VtQ#wbaH8_f0+cnIQk0e^10q&wmu zFC!?%9Ms4hoDF@)pBw!`i?Mb5(5LRSU0LMo+-WzY*(s<=dl89ot$o{E+U08ek!WXK zz=r;YKN8-I8Z&4O%@{W2XZ(?*KEz@i(rsW2i@Z0?29#U{CQAK~lrG@J$TH61**oy9 zxK<1OxblH{iS7nmcaK4`LVqhR`S`x|%j~t<C+GIib=t}Z0{{R307*qoM6N<$f}Z-= AEdT%j literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_tomato_seed.png b/mods/farming/textures/farming_tomato_seed.png new file mode 100644 index 0000000000000000000000000000000000000000..dbef76e7984dbf972498ce7fc0c9917a85c0378d GIT binary patch literal 221 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=85s1GL71^(seKtxkiEpy*OmPahde(Y53hGj3Q#E4)5S5w;&gI? zM8*M*<Ujl0eV*Ug*!b}1viUq9FzM-T$xg$D&LHs(0znQZQVYZlvhosBb|{=xP+ab^ z<+EYT0SU{=6V(*|)>r=e|Nr#m|NU1oRGu7C6zVnU^<&`3Fyv=l*YN^q5re0zpUXO@ GgeCyv?@1N_ literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_tool_bronzehoe.png b/mods/farming/textures/farming_tool_bronzehoe.png new file mode 100644 index 0000000000000000000000000000000000000000..ef07a80a4b5d4a4a7e8360863147c1c01cceb1e1 GIT binary patch literal 258 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbK}NPtg>>x6IT|NsAQD93B4$Y-V` zV67@(ttsNHFYcx*>Tk*$XepE9DLl=Oe{-z#zGQ`inc9cTb<Px9T&^~_TcUfv!R=wW z!P7?9=S^<!I{iLPi2mPh`+t5>aH8#Np!rNCL4H7c$|j$+0P><eT^vIyZpEH)7i&-u za5?C9kYUjb(RcO!%!j47l<ybg{V2`yY^#0K;msW1-@H>l{$UdT;yk4ZInNgqIb78> zYu}}-Yjk0m$MP#&JXbhZNP^&&i9Z^8&VIPf${NS?h3~*4H=s2Pp00i_>zopr0L^e- A+5i9m literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_tool_diamondhoe.png b/mods/farming/textures/farming_tool_diamondhoe.png new file mode 100644 index 0000000000000000000000000000000000000000..093acb821c6a8da2e1ec642f0f0401fa01b3f587 GIT binary patch literal 244 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!M}SX=D}!$7|NsAm%S&}9^cl+W z8Y=RcDG6As3Rr83I4)V_v~;nvzPR(!#csNyUTaqRoAL%)$^>rO5V&Pij;C<$g>wa$ zFP7iD-u3o1`}*2ypqWf1L4H89%O;<-0P-R|T^vIyZpEJQ6l+ira6WiJ!=igZ!T;G- z7xuVq`n{DS#8{)^()8~Y(;rICeR+e$&a1F6n{Aq*?>06bt03Ob_k^_y7HTiQBgS-x lbq5&682o5Fse9oK+o^3#pNh?erT{Hr@O1TaS?83{1OPfLR!RT> literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_tool_mesehoe.png b/mods/farming/textures/farming_tool_mesehoe.png new file mode 100644 index 0000000000000000000000000000000000000000..ffd597a49544f1a65c7ebf8466d9949720badf42 GIT binary patch literal 230 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!eSlAh>xo5q|Ns9tl;bs2<TFze zuvQhY))aBp7kASY^*7}Ww3Ny56yAS~;o^0MyN?(iKa=?Ko#Fp~yZ`@#|NjsF|3B9v z^`9EhD5jDiKcJCilh0ZJc_E%Ijv*C{u_vsVm=t)9Jy`Hyu}JjP-}A37JgtB8)5X4w zCC8u7We{PIvkqpwc2B>W<H5&R=f>IX+IQxMyB~PQ%96t;@=9}p{tEFG;u~%{E-e4| b@CEzcwM+}0=9Omx&1dj*^>bP0l+XkKCcsp* literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_tool_steelhoe.png b/mods/farming/textures/farming_tool_steelhoe.png new file mode 100644 index 0000000000000000000000000000000000000000..893a6958e4b4d2763513392378c2e1fe92cd2ac8 GIT binary patch literal 230 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!eSlAh>jG=O|Ns9R%JCX1@|h_K zSgQ(HYl=AQi@WKH`kV3wTFT^j3h&*!_sp3yj~+dG{P^*+XV2chfB*UO=kMRY12rlv z`8*G36jMo%AJE9M$!9Hqybw<p$B+uf*b|maOo{@m7o}LIKQq@W`oCGK<Wu{pSA{u+ z2B!6z3|tI*ulul{cz>!wLZNn(b-`tCzVFXNC64T9aO~-Gwq^as`jzb~o1v7&mSd9J Z{;g7H>h2IuS_L$p!PC{xWt~$(69CsBRk{EG literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_tool_stonehoe.png b/mods/farming/textures/farming_tool_stonehoe.png new file mode 100644 index 0000000000000000000000000000000000000000..4f8dade01c39dad208f481013cffc14369eeb91a GIT binary patch literal 263 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbK}RDe&2>jqc8|Ns9R%JCX1@|h_K zSgQ(HYl_&Z2srDDyXlJhoAL%)$|NTzr=+B$rKRO~3g_hH<mTq)<>eI=6ciN|m6es1 zmzP&mR8&@0R##Wo)YR11*EcjYG&MCXo3?H>&=#hWAU~jOWs}cZfb8^iaSV|Nk3D0~ z)Sw{3axu`bDe2t3|Fgst>h9*nZFJc$c<|cXaQ+7NjOV2<R2=rc*{R2RVaCNJLMQr8 zdT6XVa)Lki@%fe8G=*x|D}FUzkh@p5VC^I3SGnx_@3NFLbDZLi-U76R!PC{xWt~$( F69B3`T@nBQ literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_tool_woodhoe.png b/mods/farming/textures/farming_tool_woodhoe.png new file mode 100644 index 0000000000000000000000000000000000000000..8b20d2dc13490eff6255c84182d1889e91c842d7 GIT binary patch literal 222 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!Wq?nJ>jfM3|Ns9R%JCX1@|h_K zSgQ(HYl=AQi@WKH`kV3wTFOM)ibvV<CA%r7I18k>h@`s7rMpSxcnX)^z7+~IgsCLR z4`^7~<g*q)UXZ7YV@L&K><LGqLk2uY16b7?WSye#|KD);%lV2$bLDco+0G=ZGB7QR z|GAoB-?^TA#(V#^e{49i_R#UO8UjC?m?kne?rVx$ApU}NqO4ZQ-h|g|g>#t_#CmVH Q15Ib}boFyt=akR{0M|c8ZvX%Q literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_trellis.png b/mods/farming/textures/farming_trellis.png new file mode 100644 index 0000000000000000000000000000000000000000..855b932608cdcc2e22e7751858e4d0014b721735 GIT binary patch literal 227 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfv=>VS)S4Rd07h@SObLkj&)f7LS zj6nVVBHN`6K5N>8n{0mQ0F^P81o;IsI6S+N2IQ1^x;TbtoKH?*U@~LwV-QGbXe`=l z^4+Z8sC-Am>`w0v?+u<DF%6N8kqj&knR3|P@F{SJCwL|pGdS*GXlI_KD<C}KOv4G~ zl^UC07@Rg(Z_v)Y!+Q4a9n6Y{#8`QZZ-_bwEL37RD=V=tH84Sh!SRlkTV4gwT7HfE U=WBM~1iFC1)78&qol`;+0BqGo5C8xG literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_wheat.png b/mods/farming/textures/farming_wheat.png new file mode 100644 index 0000000000000000000000000000000000000000..1e0ad3b3e05a8ff944b72661b8592c797e9e0ca2 GIT binary patch literal 241 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!Q-Dv1E0A6@!}#>>;7#+*Z=EaM zw?66EcHjN$UFP>Vu3EMD;^DZZlbjwsdT{x8)Akkdd)7v7THv>8y4&_8*2j(=oHc9m z$z9o7wY5`$rZAQS`2{mLJiCzw<ivWqIEF}EUV6@wufc%F<zkPlwe$qm9sffoawvIq z&Uoj!U*dCS&rOA=C&LVPx@mm;Fl+9ui9gD$PHz<VP|OMHh~bY&joh|NENfbU_`4fN n-Rm-f#5nIUzt>lo8NZu>H-brP(K~|(phXOxu6{1-oD!M<;EG@u literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_wheat_1.png b/mods/farming/textures/farming_wheat_1.png new file mode 100644 index 0000000000000000000000000000000000000000..c16ad94ba4e9989dd795c452559376ea2137d78b GIT binary patch literal 120 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPHV5AX?b1=9Yr1Ue5HHSX6f+M=Q~ zYo{boh_NKdFPOpM*^M+HN8HoJF@)oKvP8xM1|=4W84^4a5|S(;3~VV3TOtB)Z38M{ N@O1TaS?83{1OQMF9ZdiL literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_wheat_2.png b/mods/farming/textures/farming_wheat_2.png new file mode 100644 index 0000000000000000000000000000000000000000..baddb4c544c6ea55d23c5dec5462e351c0f80c54 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPE^4e$wZ1=3wxO(*WOis%vDe8I1J zrB3l;b^H6RpMVmKB|(0{3=Yq3qyahVo-U3d9M_W<=yNa#vhn!vF!7w>VdLV_abQz! jW}J`^;*pRTP{6<-pT?xP*61c5Pz!^ntDnm{r-UW|z&Rvh literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_wheat_3.png b/mods/farming/textures/farming_wheat_3.png new file mode 100644 index 0000000000000000000000000000000000000000..36ebb1929de7851303f7b7da7a46fe831765608f GIT binary patch literal 172 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa2=EDU1=7oRg-u%NdiX-lntjog zlXa)B_1J%|{C~fqJ5Y|XB*-tA!Qt7BG$6;x)5S4_<9hM}Mh^x-Mjjm=CZ07sjC?$2 z9N3hd873r@1SF&t7$gX!gm@&B2n3{Pr0E1ChzWS42qXmt1cU?xurVyGV&j}_c4jru OGzL#sKbLh*2~7aHK`<)- literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_wheat_4.png b/mods/farming/textures/farming_wheat_4.png new file mode 100644 index 0000000000000000000000000000000000000000..735ed7772e5ed4e8ecf29004ce2fc92fc3001247 GIT binary patch literal 191 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa3-AeX1=8yeCePUzxb<kp@yn%c zb1fEb4Ly3PsdkRZ#C0xG68*b@Di}+G{DK)Ap4~_Ta{N7A978y+uRZ3-+h8ETdhzCl zJK`dL)Hotc5*7$`HOm<|d}xT%YVuU8{BzYuI(TMB<E$O*ZoFmQmX#Z3%t{r}d;O_n la_OY5Egxt7y8G)h<BKd#i5#)CKR}}yJYD@<);T3K0RU&nMwS2o literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_wheat_5.png b/mods/farming/textures/farming_wheat_5.png new file mode 100644 index 0000000000000000000000000000000000000000..f40b5f04f7e08f0b2275af580e2bd44a71891c52 GIT binary patch literal 218 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFv5AX?b1=3q~XD(VDzH@)xne)}t zmwPo&u{w33WBK~%?kRTdGi~Rt@t-imapscgB0!~#B|(0{3=Yq3qyagJo-U3d9M|U_ z-^khGAj0;raz}wo%!hLaeu$gIXK&zic0FUhp<!!t?jfc(0oesJo;;3?H?r3V`Oz%I zdC;)SI3h%$?~m`zMcdy@6S>3x$}4MW-^nS{=7dR2o)#&6-Tm*+8s;xLd_unYEgOKA OF?hQAxvX<aXaWF8s#T5v literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_wheat_6.png b/mods/farming/textures/farming_wheat_6.png new file mode 100644 index 0000000000000000000000000000000000000000..e9c78e00c1c1289017815af7bef5b2a38e3f5291 GIT binary patch literal 234 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFv5AX?b1=73sWUO2hI)A16frGi- zQ_a_Hjy!%eaME<E{f81~&a&IFKXvH_pW~a>9s(+5ED7=pW^j0RBMrzY^mK6y;kcfx zz^0S%ASuBkAtC7j!z70^W@heYh6$G+95`@J@4(R$7ZeUWIPqe^fpZT64k?^iG2y@q zg#{-J<`y<F?QU>TY8L2jYFgCPWYsLW_)yD%7EVQ;MLk?xjf`9ed6rv>PMO`<ad3*I fTBX0kr!<ClbA_0WlpACMEobm_^>bP0l+XkKd0|`D literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_wheat_7.png b/mods/farming/textures/farming_wheat_7.png new file mode 100644 index 0000000000000000000000000000000000000000..cc26ca96990f96f8fe71d5c3eed9d0eea3bb7c2e GIT binary patch literal 253 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPHF3h)VW1=42^r0?G1yl-9Ds>LRk zj^=EhYw_T6>gAKMhqp$qS!#Crc>12re#f@OT}v_e094Ib666=m;PC858j#cI>Eal| zaXqzTBQKMoi1Xix@0<#cx*IU@hS*8nQV|kjb-khBePQ`x+dQTzf<c=Z&-Na9zcJ@# z-H&iLejSN5V%>lFvXs>=mhV;2emCjG1i2d=>Yi4QG+X_?w&uF`J&|Nj<P6@Kpq}!f z=f}FrRcUX+xBq<nyzQ|-^aow3oyUIlePw?fDp@;M_0k`pV;DSL{an^LB{Ts5Vv%OF literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_wheat_8.png b/mods/farming/textures/farming_wheat_8.png new file mode 100644 index 0000000000000000000000000000000000000000..d0500934acb984e6e967d17cb855bca1b43b5a85 GIT binary patch literal 310 zcmV-60m=S}P)<h;3K|Lk000e1NJLTq000mG000mO0{{R3C@l|D0000~P)t-s0002E zogSrz3(vYQ*1<BWjt;q}MZBRT$FN7Sn=`?kFQt+XzNaLxm=3Lx4aTiY#IPvj&`iv@ zM!=yq;KMVfmoCe;Da^7Yk%1A&q6){gP292`h^^Ov00001bW%=J06^y0W&i*HkV!;A zR2b7ej0qBhAP@u_79}c*CLS^Q|35QpSt+1vj%67EF3gSsljJ{?A%Wd`a>Kx2-V2i> z8I~wss2>uhpfH0;Q;cQ6mTSUj*^G3scIec@IkN4fjwkQ5J3rKu+S3!)(;3JQS_PpA z-;0E(n_uCPBcg(a93^6ni1$PrHQeA-jcoLXQ_goZLEjMb50^^>=YLuCB>(^b07*qo IM6N<$f*<&P1^@s6 literal 0 HcmV?d00001 diff --git a/mods/farming/textures/farming_wheat_seed.png b/mods/farming/textures/farming_wheat_seed.png new file mode 100644 index 0000000000000000000000000000000000000000..a9031fba979d5fd323ce9f5200f6ede53b2e733f GIT binary patch literal 141 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPE^4e$wZ^~o&Uwme~4v(x#*or@>< z%<XhPvb9J}ENweb0b@y!UoeBivm0qZj+&>7V@L&K@&PuV1Rg~;HfM?GGmNJaLK%Y3 kFmc!!9azVD)2D`kVexq;S<gSh?LZw2p00i_>zopr0Jyg)f&c&j literal 0 HcmV?d00001 diff --git a/mods/farming/textures/vessels_drinking_cup.png b/mods/farming/textures/vessels_drinking_cup.png new file mode 100644 index 0000000000000000000000000000000000000000..2eba2321a5cf7650e0f3c0ced4896138f1da997e GIT binary patch literal 200 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPHV5AX?b<z!;Gc=^Jwk8eMHd-~zq z$K&^U_W-3BOM?7@862M7NCR<_yxm<GI#^{rfE>;OkH}&M25w;xW@MN(M*=9wUgGKN z%6^Z7jaSIrGOINgC}ia6;uyklJvm{4fPu8MwzM>Zq>jS8Zl);@4>V0b$Z_Rh5=+P# mg+m7(aF}&mJnGue$jGpSjrr{wFMmy-ZU#?RKbLh*2~7Ypr#ry_ literal 0 HcmV?d00001 diff --git a/mods/farming/todo.md b/mods/farming/todo.md new file mode 100644 index 00000000..55870270 --- /dev/null +++ b/mods/farming/todo.md @@ -0,0 +1,12 @@ +* [x] orange trees from farming_plus +* [ ] optional - cocoa sapling +* [x] banana trees from farming_plus +* [x] carrot_seed +* [x] orange_seed +* [x] tomato_seed +* [x] potatoe_seed +* [x] rhubarb_seed +* [x] raspberry_seed +* [x] strawberry_seed +* [x] pumpkin_seed +* [x] aliases diff --git a/mods/farming/tomato.lua b/mods/farming/tomato.lua new file mode 100644 index 00000000..4ff6b643 --- /dev/null +++ b/mods/farming/tomato.lua @@ -0,0 +1,86 @@ + +--[[ + Textures edited from: + http://www.minecraftforum.net/forums/mapping-and-modding/minecraft-mods/1288375-food-plus-mod-more-food-than-you-can-imagine-v2-9) +]] + +minetest.register_craftitem("farming:tomato_seed", { + description = "Tomato Seeds", + inventory_image = "farming_tomato_seed.png", + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:tomato_1") + end +}) + +-- tomato +minetest.register_craftitem("farming:tomato", { + description = "Tomato", + inventory_image = "farming_tomato.png", + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:tomato_1") + end, + on_use = minetest.item_eat(4), +}) + +-- tomato definition +local crop_def = { + drawtype = "plantlike", + tiles = {"farming_tomato_1.png"}, + paramtype = "light", + sunlight_propagates = true, + walkable = false, + buildable_to = true, + drop = "", + selection_box = farming.select, + groups = { + snappy = 3, flammable = 2, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + sounds = default.node_sound_leaves_defaults() +} + +-- stage 1 +minetest.register_node("farming:tomato_1", table.copy(crop_def)) + +-- stage2 +crop_def.tiles = {"farming_tomato_2.png"} +minetest.register_node("farming:tomato_2", table.copy(crop_def)) + +-- stage 3 +crop_def.tiles = {"farming_tomato_3.png"} +minetest.register_node("farming:tomato_3", table.copy(crop_def)) + +-- stage 4 +crop_def.tiles = {"farming_tomato_4.png"} +minetest.register_node("farming:tomato_4", table.copy(crop_def)) + +-- stage 5 +crop_def.tiles = {"farming_tomato_5.png"} +minetest.register_node("farming:tomato_5", table.copy(crop_def)) + +-- stage 6 +crop_def.tiles = {"farming_tomato_6.png"} +minetest.register_node("farming:tomato_6", table.copy(crop_def)) + +-- stage 7 +crop_def.tiles = {"farming_tomato_7.png"} +crop_def.drop = { + items = { + {items = {'farming:tomato'}, rarity = 1}, + {items = {'farming:tomato_seed'}, rarity = 1}, + {items = {'farming:tomato'}, rarity = 3}, + } +} +minetest.register_node("farming:tomato_7", table.copy(crop_def)) + +-- stage 8 (final) +crop_def.tiles = {"farming_tomato_8.png"} +crop_def.groups.growing = 0 +crop_def.drop = { + items = { + {items = {'farming:tomato 3'}, rarity = 1}, + {items = {'farming:tomato_seed 4'}, rarity = 1}, + {items = {'farming:tomato 3'}, rarity = 2}, + } +} +minetest.register_node("farming:tomato_8", table.copy(crop_def)) diff --git a/mods/farming/wheat.lua b/mods/farming/wheat.lua new file mode 100644 index 00000000..72d65c42 --- /dev/null +++ b/mods/farming/wheat.lua @@ -0,0 +1,152 @@ + +-- wheat seeds +minetest.register_node("farming:seed_wheat", { + description = "Wheat Seed", + tiles = {"farming_wheat_seed.png"}, + inventory_image = "farming_wheat_seed.png", + wield_image = "farming_wheat_seed.png", + drawtype = "signlike", + groups = {seed = 1, snappy = 3, attached_node = 1}, + paramtype = "light", + paramtype2 = "wallmounted", + walkable = false, + sunlight_propagates = true, + selection_box = farming.select, + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "farming:wheat_1") + end, +}) + +-- harvested wheat +minetest.register_craftitem("farming:wheat", { + description = "Wheat", + inventory_image = "farming_wheat.png", +}) + +-- straw +minetest.register_node("farming:straw", { + description = "Straw", + tiles = {"farming_straw.png"}, + is_ground_content = false, + groups = {snappy = 3, flammable = 4, fall_damage_add_percent=-30}, + sounds = default.node_sound_leaves_defaults(), +}) + +minetest.register_craft({ + output = "farming:straw 3", + recipe = { + {"farming:wheat", "farming:wheat", "farming:wheat"}, + {"farming:wheat", "farming:wheat", "farming:wheat"}, + {"farming:wheat", "farming:wheat", "farming:wheat"}, + } +}) + +minetest.register_craft({ + output = "farming:wheat 3", + recipe = { + {"farming:straw"}, + } +}) + +-- flour +minetest.register_craftitem("farming:flour", { + description = "Flour", + inventory_image = "farming_flour.png", +}) + +minetest.register_craft({ + type = "shapeless", + output = "farming:flour", + recipe = {"farming:wheat", "farming:wheat", "farming:wheat", "farming:wheat"} +}) + +-- bread +minetest.register_craftitem("farming:bread", { + description = "Bread", + inventory_image = "farming_bread.png", + on_use = minetest.item_eat(5), +}) + +minetest.register_craft({ + type = "cooking", + cooktime = 15, + output = "farming:bread", + recipe = "farming:flour" +}) + +-- wheat definition +local crop_def = { + drawtype = "plantlike", + tiles = {"farming_wheat_1.png"}, + paramtype = "light", + sunlight_propagates = true, + walkable = false, + buildable_to = true, + drop = "", + selection_box = farming.select, + groups = { + snappy = 3, flammable = 2, plant = 1, attached_node = 1, + not_in_creative_inventory = 1, growing = 1 + }, + sounds = default.node_sound_leaves_defaults() +} + +-- stage 1 +minetest.register_node("farming:wheat_1", table.copy(crop_def)) + +-- stage 2 +crop_def.tiles = {"farming_wheat_2.png"} +minetest.register_node("farming:wheat_2", table.copy(crop_def)) + +-- stage 3 +crop_def.tiles = {"farming_wheat_3.png"} +minetest.register_node("farming:wheat_3", table.copy(crop_def)) + +-- stage 4 +crop_def.tiles = {"farming_wheat_4.png"} +minetest.register_node("farming:wheat_4", table.copy(crop_def)) + +-- stage 5 +crop_def.tiles = {"farming_wheat_5.png"} +crop_def.drop = { + items = { + {items = {'farming:wheat'}, rarity = 2}, + {items = {'farming:seed_wheat'}, rarity = 2}, + } +} +minetest.register_node("farming:wheat_5", table.copy(crop_def)) + +-- stage 6 +crop_def.tiles = {"farming_wheat_6.png"} +crop_def.drop = { + items = { + {items = {'farming:wheat'}, rarity = 2}, + {items = {'farming:seed_wheat'}, rarity = 1}, + } +} +minetest.register_node("farming:wheat_6", table.copy(crop_def)) + +-- stage 7 +crop_def.tiles = {"farming_wheat_7.png"} +crop_def.drop = { + items = { + {items = {'farming:wheat'}, rarity = 1}, + {items = {'farming:wheat'}, rarity = 3}, + {items = {'farming:seed_wheat'}, rarity = 1}, + {items = {'farming:seed_wheat'}, rarity = 3}, + } +} +minetest.register_node("farming:wheat_7", table.copy(crop_def)) + +-- stage 8 (final) +crop_def.tiles = {"farming_wheat_8.png"} +crop_def.groups.growing = 0 +crop_def.drop = { + items = { + {items = {'farming:wheat'}, rarity = 1}, + {items = {'farming:wheat'}, rarity = 3}, + {items = {'farming:seed_wheat'}, rarity = 1}, + {items = {'farming:seed_wheat'}, rarity = 3}, + } +} +minetest.register_node("farming:wheat_8", table.copy(crop_def)) -- GitLab