From 535220164f3d3eefb6282c81bb46d7dfca3a2a98 Mon Sep 17 00:00:00 2001 From: Jacob Gustafson Date: Sun, 12 Feb 2017 00:02:53 -0500 Subject: [PATCH] initial changes in expertmm fork see README --- Hardness Calculator.xlsx | Bin 0 -> 29851 bytes LICENSE.txt | 44 ++ README.txt | 114 +++++ aliases.lua | 44 ++ crafting.lua | 28 ++ craftitems.lua | 61 +++ etc/birthstones list.csv | 14 + etc/birthstones swords.xcf | Bin 0 -> 6051 bytes etc/birthstones_shovels.xcf | Bin 0 -> 6636 bytes etc/diamond Brinell forecast.jpg | Bin 0 -> 7782 bytes expertmm_authored_texture_list.txt | 25 ++ hardness - extrapolated.csv | 15 + init.lua | 405 +----------------- nodes.lua | 188 ++++++++ oregen.lua | 76 ++++ ...ndrite.png => birthstones_alexandrite.png} | Bin ....png => birthstones_alexandrite_block.png} | Bin ...{Amethyst.png => birthstones_amethyst.png} | Bin ...ock.png => birthstones_amethyst_block.png} | Bin ...amarine.png => birthstones_aquamarine.png} | Bin ...k.png => birthstones_aquamarine_block.png} | Bin .../{Diamond.png => birthstones_diamond.png} | Bin ...lock.png => birthstones_diamond_block.png} | Bin .../{Emerald.png => birthstones_emerald.png} | Bin ...lock.png => birthstones_emerald_block.png} | Bin .../{Garnet.png => birthstones_garnet.png} | Bin ...block.png => birthstones_garnet_block.png} | Bin ...ng => birthstones_mineral_alexandrite.png} | Bin ...y.png => birthstones_mineral_amethyst.png} | Bin ...png => birthstones_mineral_aquamarine.png} | Bin ...ay.png => birthstones_mineral_diamond.png} | Bin ...ay.png => birthstones_mineral_emerald.png} | Bin ...lay.png => birthstones_mineral_garnet.png} | Bin ...erlay.png => birthstones_mineral_opal.png} | Bin ...ay.png => birthstones_mineral_peridot.png} | Bin ...erlay.png => birthstones_mineral_ruby.png} | Bin ...y.png => birthstones_mineral_sapphire.png} | Bin ...rlay.png => birthstones_mineral_topaz.png} | Bin ...lay.png => birthstones_mineral_zircon.png} | Bin textures/{Opal.png => birthstones_opal.png} | Bin ...l_block.png => birthstones_opal_block.png} | Bin .../{Peridot.png => birthstones_peridot.png} | Bin ...lock.png => birthstones_peridot_block.png} | Bin textures/{Ruby.png => birthstones_ruby.png} | Bin ...y_block.png => birthstones_ruby_block.png} | Bin ...{Sapphire.png => birthstones_sapphire.png} | Bin ...ock.png => birthstones_sapphire_block.png} | Bin ...ng => birthstones_tool_alexandriteaxe.png} | Bin ...g => birthstones_tool_alexandritepick.png} | Bin .../birthstones_tool_alexandriteshovel.png | Bin 0 -> 395 bytes .../birthstones_tool_alexandritesword.png | Bin 0 -> 402 bytes ...e.png => birthstones_tool_amethystaxe.png} | Bin ....png => birthstones_tool_amethystpick.png} | Bin textures/birthstones_tool_amethystshovel.png | Bin 0 -> 399 bytes textures/birthstones_tool_amethystsword.png | Bin 0 -> 406 bytes ...png => birthstones_tool_aquamarineaxe.png} | Bin ...ng => birthstones_tool_aquamarinepick.png} | Bin .../birthstones_tool_aquamarineshovel.png | Bin 0 -> 374 bytes textures/birthstones_tool_aquamarinesword.png | Bin 0 -> 381 bytes ...xe.png => birthstones_tool_diamondaxe.png} | Bin ...k.png => birthstones_tool_diamondpick.png} | Bin textures/birthstones_tool_diamondshovel.png | Bin 0 -> 279 bytes textures/birthstones_tool_diamondsword.png | Bin 0 -> 355 bytes ...xe.png => birthstones_tool_emeraldaxe.png} | Bin ...k.png => birthstones_tool_emeraldpick.png} | Bin textures/birthstones_tool_emeraldshovel.png | Bin 0 -> 407 bytes textures/birthstones_tool_emeraldsword.png | Bin 0 -> 450 bytes ...axe.png => birthstones_tool_garnetaxe.png} | Bin ...ck.png => birthstones_tool_garnetpick.png} | Bin textures/birthstones_tool_garnetshovel.png | Bin 0 -> 399 bytes textures/birthstones_tool_garnetsword.png | Bin 0 -> 452 bytes ...l_axe.png => birthstones_tool_opalaxe.png} | Bin ...pick.png => birthstones_tool_opalpick.png} | Bin textures/birthstones_tool_opalshovel.png | Bin 0 -> 375 bytes textures/birthstones_tool_opalsword.png | Bin 0 -> 371 bytes ...xe.png => birthstones_tool_peridotaxe.png} | Bin ...k.png => birthstones_tool_peridotpick.png} | Bin textures/birthstones_tool_peridotshovel.png | Bin 0 -> 395 bytes textures/birthstones_tool_peridotsword.png | Bin 0 -> 402 bytes ...y_axe.png => birthstones_tool_rubyaxe.png} | Bin ...pick.png => birthstones_tool_rubypick.png} | Bin textures/birthstones_tool_rubyshovel.png | Bin 0 -> 421 bytes textures/birthstones_tool_rubysword.png | Bin 0 -> 445 bytes ...e.png => birthstones_tool_sapphireaxe.png} | Bin ....png => birthstones_tool_sapphirepick.png} | Bin textures/birthstones_tool_sapphireshovel.png | Bin 0 -> 400 bytes textures/birthstones_tool_sapphiresword.png | Bin 0 -> 374 bytes ..._axe.png => birthstones_tool_topazaxe.png} | Bin ...ick.png => birthstones_tool_topazpick.png} | Bin textures/birthstones_tool_topazshovel.png | Bin 0 -> 395 bytes textures/birthstones_tool_topazsword.png | Bin 0 -> 384 bytes ...axe.png => birthstones_tool_zirconaxe.png} | Bin ...ck.png => birthstones_tool_zirconpick.png} | Bin textures/birthstones_tool_zirconshovel.png | Bin 0 -> 399 bytes textures/birthstones_tool_zirconsword.png | Bin 0 -> 405 bytes textures/{Topaz.png => birthstones_topaz.png} | Bin ..._block.png => birthstones_topaz_block.png} | Bin .../{Zircon.png => birthstones_zircon.png} | Bin ...block.png => birthstones_zircon_block.png} | Bin tools.lua | 166 +++++++ 100 files changed, 782 insertions(+), 398 deletions(-) create mode 100644 Hardness Calculator.xlsx create mode 100644 LICENSE.txt create mode 100644 README.txt create mode 100644 aliases.lua create mode 100644 crafting.lua create mode 100644 craftitems.lua create mode 100644 etc/birthstones list.csv create mode 100644 etc/birthstones swords.xcf create mode 100644 etc/birthstones_shovels.xcf create mode 100644 etc/diamond Brinell forecast.jpg create mode 100644 expertmm_authored_texture_list.txt create mode 100644 hardness - extrapolated.csv create mode 100644 nodes.lua create mode 100644 oregen.lua rename textures/{Alexandrite.png => birthstones_alexandrite.png} (100%) rename textures/{Alexandrite_block.png => birthstones_alexandrite_block.png} (100%) rename textures/{Amethyst.png => birthstones_amethyst.png} (100%) rename textures/{Amethyst_block.png => birthstones_amethyst_block.png} (100%) rename textures/{Aquamarine.png => birthstones_aquamarine.png} (100%) rename textures/{Aquamarine_block.png => birthstones_aquamarine_block.png} (100%) rename textures/{Diamond.png => birthstones_diamond.png} (100%) rename textures/{Diamond_block.png => birthstones_diamond_block.png} (100%) rename textures/{Emerald.png => birthstones_emerald.png} (100%) rename textures/{Emerald_block.png => birthstones_emerald_block.png} (100%) rename textures/{Garnet.png => birthstones_garnet.png} (100%) rename textures/{Garnet_block.png => birthstones_garnet_block.png} (100%) rename textures/{Alexandrite_overlay.png => birthstones_mineral_alexandrite.png} (100%) rename textures/{Amethyst_overlay.png => birthstones_mineral_amethyst.png} (100%) rename textures/{Aquamarine_overlay.png => birthstones_mineral_aquamarine.png} (100%) rename textures/{Diamond_overlay.png => birthstones_mineral_diamond.png} (100%) rename textures/{Emerald_overlay.png => birthstones_mineral_emerald.png} (100%) rename textures/{Garnet_overlay.png => birthstones_mineral_garnet.png} (100%) rename textures/{Opal_overlay.png => birthstones_mineral_opal.png} (100%) rename textures/{Peridot_overlay.png => birthstones_mineral_peridot.png} (100%) rename textures/{Ruby_overlay.png => birthstones_mineral_ruby.png} (100%) rename textures/{Sapphire_overlay.png => birthstones_mineral_sapphire.png} (100%) rename textures/{Topaz_overlay.png => birthstones_mineral_topaz.png} (100%) rename textures/{Zircon_overlay.png => birthstones_mineral_zircon.png} (100%) rename textures/{Opal.png => birthstones_opal.png} (100%) rename textures/{Opal_block.png => birthstones_opal_block.png} (100%) rename textures/{Peridot.png => birthstones_peridot.png} (100%) rename textures/{Peridot_block.png => birthstones_peridot_block.png} (100%) rename textures/{Ruby.png => birthstones_ruby.png} (100%) rename textures/{Ruby_block.png => birthstones_ruby_block.png} (100%) rename textures/{Sapphire.png => birthstones_sapphire.png} (100%) rename textures/{Sapphire_block.png => birthstones_sapphire_block.png} (100%) rename textures/{alexandrite_axe.png => birthstones_tool_alexandriteaxe.png} (100%) rename textures/{alexandrite_pick.png => birthstones_tool_alexandritepick.png} (100%) create mode 100644 textures/birthstones_tool_alexandriteshovel.png create mode 100644 textures/birthstones_tool_alexandritesword.png rename textures/{amethyst_axe.png => birthstones_tool_amethystaxe.png} (100%) rename textures/{amethyst_pick.png => birthstones_tool_amethystpick.png} (100%) create mode 100644 textures/birthstones_tool_amethystshovel.png create mode 100644 textures/birthstones_tool_amethystsword.png rename textures/{aquamarine_axe.png => birthstones_tool_aquamarineaxe.png} (100%) rename textures/{aquamarine_pick.png => birthstones_tool_aquamarinepick.png} (100%) create mode 100644 textures/birthstones_tool_aquamarineshovel.png create mode 100644 textures/birthstones_tool_aquamarinesword.png rename textures/{diamond_axe.png => birthstones_tool_diamondaxe.png} (100%) rename textures/{diamond_pick.png => birthstones_tool_diamondpick.png} (100%) create mode 100644 textures/birthstones_tool_diamondshovel.png create mode 100644 textures/birthstones_tool_diamondsword.png rename textures/{emerald_axe.png => birthstones_tool_emeraldaxe.png} (100%) rename textures/{emerald_pick.png => birthstones_tool_emeraldpick.png} (100%) create mode 100644 textures/birthstones_tool_emeraldshovel.png create mode 100644 textures/birthstones_tool_emeraldsword.png rename textures/{garnet_axe.png => birthstones_tool_garnetaxe.png} (100%) rename textures/{garnet_pick.png => birthstones_tool_garnetpick.png} (100%) create mode 100644 textures/birthstones_tool_garnetshovel.png create mode 100644 textures/birthstones_tool_garnetsword.png rename textures/{opal_axe.png => birthstones_tool_opalaxe.png} (100%) rename textures/{opal_pick.png => birthstones_tool_opalpick.png} (100%) create mode 100644 textures/birthstones_tool_opalshovel.png create mode 100644 textures/birthstones_tool_opalsword.png rename textures/{peridot_axe.png => birthstones_tool_peridotaxe.png} (100%) rename textures/{peridot_pick.png => birthstones_tool_peridotpick.png} (100%) create mode 100644 textures/birthstones_tool_peridotshovel.png create mode 100644 textures/birthstones_tool_peridotsword.png rename textures/{ruby_axe.png => birthstones_tool_rubyaxe.png} (100%) rename textures/{ruby_pick.png => birthstones_tool_rubypick.png} (100%) create mode 100644 textures/birthstones_tool_rubyshovel.png create mode 100644 textures/birthstones_tool_rubysword.png rename textures/{sapphire_axe.png => birthstones_tool_sapphireaxe.png} (100%) rename textures/{sapphire_pick.png => birthstones_tool_sapphirepick.png} (100%) create mode 100644 textures/birthstones_tool_sapphireshovel.png create mode 100644 textures/birthstones_tool_sapphiresword.png rename textures/{topaz_axe.png => birthstones_tool_topazaxe.png} (100%) rename textures/{topaz_pick.png => birthstones_tool_topazpick.png} (100%) create mode 100644 textures/birthstones_tool_topazshovel.png create mode 100644 textures/birthstones_tool_topazsword.png rename textures/{zircon_axe.png => birthstones_tool_zirconaxe.png} (100%) rename textures/{zircon_pick.png => birthstones_tool_zirconpick.png} (100%) create mode 100644 textures/birthstones_tool_zirconshovel.png create mode 100644 textures/birthstones_tool_zirconsword.png rename textures/{Topaz.png => birthstones_topaz.png} (100%) rename textures/{Topaz_block.png => birthstones_topaz_block.png} (100%) rename textures/{Zircon.png => birthstones_zircon.png} (100%) rename textures/{Zircon_block.png => birthstones_zircon_block.png} (100%) create mode 100644 tools.lua diff --git a/Hardness Calculator.xlsx b/Hardness Calculator.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..bc2a9525a6e5cbec9e696c6ec61f7d90d28a2ea0 GIT binary patch literal 29851 zcmeFXV~}lIw1QZ7#8lbmF6eXwdt{yIt9Yk*CMi$4ORV;WzD&3 zS9gB%74B4pQB)xfYm}`*5q0F`yr=Qh@(c#3Zm8E|&Hc2;Glq>0E56e^nVt+5CGduE zybRV32I3U%xzI0-(S9IM= zf@5LiCI0!@orISzW^kmI_{RQ4hBwZH@cMrJtBfQa7@T;2oF9kdLh~M>4GnM+c|Iu{ z-e&jb1u(BN!c{fscGpSIRrV}k4M{A9dppcQk6WHI``Ar1^DkY{`vw2kpEw_ph<;+_~Cm*`g^KFe`~={2V*Nodb+

|yk3$^{HEwa68@*hAm9K= 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 z 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 (CC BY-SA 3.0) + diff --git a/aliases.lua b/aliases.lua new file mode 100644 index 0000000..708a20d --- /dev/null +++ b/aliases.lua @@ -0,0 +1,44 @@ + + +-- for backward compatibility (with birthstones 1.2-git [2012]) + + +minetest.register_alias("birthstones:alexandrite_pick", "birthstones:pick_alexandrite") +minetest.register_alias("birthstones:amethyst_pick", "birthstones:pick_amethyst") +minetest.register_alias("birthstones:aquamarine_pick", "birthstones:pick_aquamarine") +minetest.register_alias("birthstones:diamond_pick", "birthstones:pick_diamond") +minetest.register_alias("birthstones:emerald_pick", "birthstones:pick_emerald") +minetest.register_alias("birthstones:garnet_pick", "birthstones:pick_garnet") +minetest.register_alias("birthstones:opal_pick", "birthstones:pick_opal") +minetest.register_alias("birthstones:peridot_pick", "birthstones:pick_peridot") +minetest.register_alias("birthstones:ruby_pick", "birthstones:pick_ruby") +minetest.register_alias("birthstones:sapphire_pick", "birthstones:pick_sapphire") +minetest.register_alias("birthstones:topaz_pick", "birthstones:pick_topaz") +minetest.register_alias("birthstones:zircon_pick", "birthstones:pick_zircon") + +minetest.register_alias("birthstones:alexandrite_axe", "birthstones:axe_alexandrite") +minetest.register_alias("birthstones:amethyst_axe", "birthstones:axe_amethyst") +minetest.register_alias("birthstones:aquamarine_axe", "birthstones:axe_aquamarine") +minetest.register_alias("birthstones:diamond_axe", "birthstones:axe_diamond") +minetest.register_alias("birthstones:emerald_axe", "birthstones:axe_emerald") +minetest.register_alias("birthstones:garnet_axe", "birthstones:axe_garnet") +minetest.register_alias("birthstones:opal_axe", "birthstones:axe_opal") +minetest.register_alias("birthstones:peridot_axe", "birthstones:axe_peridot") +minetest.register_alias("birthstones:ruby_axe", "birthstones:axe_ruby") +minetest.register_alias("birthstones:sapphire_axe", "birthstones:axe_sapphire") +minetest.register_alias("birthstones:topaz_axe", "birthstones:axe_topaz") +minetest.register_alias("birthstones:zircon_axe", "birthstones:axe_zircon") + +minetest.register_alias("birthstones:alexandriteore", "birthstones:stone_with_alexandrite") +minetest.register_alias("birthstones:amethystore", "birthstones:stone_with_amethyst") +minetest.register_alias("birthstones:aquamarineore", "birthstones:stone_with_aquamarine") +minetest.register_alias("birthstones:diamondore", "birthstones:stone_with_diamond") +minetest.register_alias("birthstones:emeraldore", "birthstones:stone_with_emerald") +minetest.register_alias("birthstones:garnetore", "birthstones:stone_with_garnet") +minetest.register_alias("birthstones:opalore", "birthstones:stone_with_opal") +minetest.register_alias("birthstones:peridotore", "birthstones:stone_with_peridot") +minetest.register_alias("birthstones:rubyore", "birthstones:stone_with_ruby") +minetest.register_alias("birthstones:sapphireore", "birthstones:stone_with_sapphire") +minetest.register_alias("birthstones:topazore", "birthstones:stone_with_topaz") +minetest.register_alias("birthstones:zirconore", "birthstones:stone_with_zircon") + diff --git a/crafting.lua b/crafting.lua new file mode 100644 index 0000000..6b7fce8 --- /dev/null +++ b/crafting.lua @@ -0,0 +1,28 @@ +local function registerblockrecipe(name, blockname) +minetest.register_craft({ + output = blockname, + recipe = {{name, name, name}, + {name, name, name}, + {name, name, name} + } +}) +minetest.register_craft({ + output = name..' 9', + recipe = { + {blockname}, + } +}) +end + +registerblockrecipe('birthstones:alexandrite', 'birthstones:alexandriteblock') +registerblockrecipe('birthstones:amethyst', 'birthstones:amethystblock') +registerblockrecipe('birthstones:aquamarine', 'birthstones:aquamarineblock') +registerblockrecipe('birthstones:diamond', 'birthstones:diamondblock') +registerblockrecipe('birthstones:emerald', 'birthstones:emeraldblock') +registerblockrecipe('birthstones:garnet', 'birthstones:garnetblock') +registerblockrecipe('birthstones:opal', 'birthstones:opalblock') +registerblockrecipe('birthstones:peridot', 'birthstones:peridotblock') +registerblockrecipe('birthstones:ruby', 'birthstones:rubyblock') +registerblockrecipe('birthstones:sapphire', 'birthstones:sapphireblock') +registerblockrecipe('birthstones:topaz', 'birthstones:topazblock') +registerblockrecipe('birthstones:zircon', 'birthstones:zirconblock') diff --git a/craftitems.lua b/craftitems.lua new file mode 100644 index 0000000..460f627 --- /dev/null +++ b/craftitems.lua @@ -0,0 +1,61 @@ +minetest.register_craftitem( "birthstones:alexandrite", { + description = "Alexandrite", + inventory_image = "birthstones_alexandrite.png", + on_place_on_ground = minetest.craftitem_place_item, +}) +minetest.register_craftitem( "birthstones:amethyst", { + description = "Amethyst", + inventory_image = "birthstones_amethyst.png", + on_place_on_ground = minetest.craftitem_place_item, +}) +minetest.register_craftitem( "birthstones:aquamarine", { + description = "Aquamarine", + inventory_image = "birthstones_aquamarine.png", + on_place_on_ground = minetest.craftitem_place_item, +}) +minetest.register_craftitem( "birthstones:diamond", { + description = "White Diamond", + inventory_image = "birthstones_diamond.png", + on_place_on_ground = minetest.craftitem_place_item, +}) +minetest.register_craftitem( "birthstones:emerald", { + description = "Emerald", + inventory_image = "birthstones_emerald.png", + on_place_on_ground = minetest.craftitem_place_item, +}) +minetest.register_craftitem( "birthstones:garnet", { + description = "Garnet", + inventory_image = "birthstones_garnet.png", + on_place_on_ground = minetest.craftitem_place_item, +}) +minetest.register_craftitem( "birthstones:opal", { + description = "Opal", + inventory_image = "birthstones_opal.png", + on_place_on_ground = minetest.craftitem_place_item, +}) +minetest.register_craftitem( "birthstones:peridot", { + description = "Peridot", + inventory_image = "birthstones_peridot.png", + on_place_on_ground = minetest.craftitem_place_item, +}) +minetest.register_craftitem( "birthstones:ruby", { + description = "Ruby", + inventory_image = "birthstones_ruby.png", + on_place_on_ground = minetest.craftitem_place_item, +}) +minetest.register_craftitem( "birthstones:sapphire", { + description = "Sapphire", + inventory_image = "birthstones_sapphire.png", + on_place_on_ground = minetest.craftitem_place_item, +}) +minetest.register_craftitem( "birthstones:topaz", { + description = "Topaz", + inventory_image = "birthstones_topaz.png", + on_place_on_ground = minetest.craftitem_place_item, +}) +minetest.register_craftitem( "birthstones:zircon", { + description = "Zircon", + inventory_image = "Zircon.png", + on_place_on_ground = minetest.craftitem_place_item, +}) + diff --git a/etc/birthstones list.csv b/etc/birthstones list.csv new file mode 100644 index 0000000..8269bcb --- /dev/null +++ b/etc/birthstones list.csv @@ -0,0 +1,14 @@ +Month, birthstones-mod 2012 git, 2016 U.S. +January, !Alexandrite, Garnet +February, Amethyst, Amethyst +March, Aquamarine, Aquamarine +April, Diamond, Diamond +May, Emerald, Emerald +June, !Garnet, Alexandrite [see also Pearl] +July, !Opal, Ruby +August, Peridot, Peridot [see also Sardonyx or Spinel] +September, !Ruby, Sapphire +October, !Sapphire, Opal [see also Tourmaline] +November, Topaz, Topaz [see also Citrine] +December, Zircon, Zircon [see also Tanzanite or Turquoise] +SOURCE,birthstones-mod 2012 git by Doc22,https://www.americangemsociety.org/en/birthstones \ No newline at end of file diff --git a/etc/birthstones swords.xcf b/etc/birthstones swords.xcf new file mode 100644 index 0000000000000000000000000000000000000000..07bb425f2aaab578bfd74140f4d9db7545f07ee0 GIT binary patch literal 6051 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 u+<6JJorIR height_max then - return - end - local y_min = math.max(minp.y, height_min) - local y_max = math.min(maxp.y, height_max) - local volume = (maxp.x-minp.x+1)*(y_max-y_min+1)*(maxp.z-minp.z+1) - local pr = PseudoRandom(seed) - local num_chunks = math.floor(chunks_per_volume * volume) - local chunk_size = 3 - if ore_per_chunk <= 4 then - chunk_size = 2 - end - local inverse_chance = math.floor(chunk_size*chunk_size*chunk_size / ore_per_chunk) - --print("generate_ore num_chunks: "..dump(num_chunks)) - for i=1,num_chunks do - local y0 = pr:next(y_min, y_max-chunk_size+1) - if y0 >= height_min and y0 <= height_max then - local x0 = pr:next(minp.x, maxp.x-chunk_size+1) - local z0 = pr:next(minp.z, maxp.z-chunk_size+1) - local p0 = {x=x0, y=y0, z=z0} - for x1=0,chunk_size-1 do - for y1=0,chunk_size-1 do - for z1=0,chunk_size-1 do - if pr:next(1,inverse_chance) == 1 then - local x2 = x0+x1 - local y2 = y0+y1 - local z2 = z0+z1 - local p2 = {x=x2, y=y2, z=z2} - if minetest.env:get_node(p2).name == wherein then - minetest.env:set_node(p2, {name=name}) - end - end - end - end - end - end - end -end - -minetest.register_on_generated(function(minp, maxp, seed) -generate_ore("birthstones:alexandriteore", "default:stone", minp, maxp, seed+21, 1/10/10/10, 4, -31000, -40) -end) -minetest.register_on_generated(function(minp, maxp, seed) -generate_ore("birthstones:amethystore", "default:stone", minp, maxp, seed+21, 1/10/10/10, 4, -31000, -50) -end) -minetest.register_on_generated(function(minp, maxp, seed) -generate_ore("birthstones:aquamarineore", "default:stone", minp, maxp, seed+21, 1/10/10/10, 4, -31000, -10) -end) -minetest.register_on_generated(function(minp, maxp, seed) -generate_ore("birthstones:diamondore", "default:stone", minp, maxp, seed+21, 1/10/10/10, 1, -31000, -300) -end) -minetest.register_on_generated(function(minp, maxp, seed) -generate_ore("birthstones:emeraldore", "default:stone", minp, maxp, seed+21, 1/10/10/10, 3, -31000, -100) -end) -minetest.register_on_generated(function(minp, maxp, seed) -generate_ore("birthstones:garnetore", "default:stone", minp, maxp, seed+21, 1/10/10/10, 4, -31000, -70) -end) -minetest.register_on_generated(function(minp, maxp, seed) -generate_ore("birthstones:peridotore", "default:stone", minp, maxp, seed+21, 1/10/10/10, 4, -31000, -60) -end) -minetest.register_on_generated(function(minp, maxp, seed) -generate_ore("birthstones:rubyore", "default:stone", minp, maxp, seed+21, 1/10/10/10, 3, -31000, -120) -end) -minetest.register_on_generated(function(minp, maxp, seed) -generate_ore("birthstones:sapphireore", "default:stone", minp, maxp, seed+21, 1/10/10/10, 3, -31000, -120) -end) -minetest.register_on_generated(function(minp, maxp, seed) -generate_ore("birthstones:topazore", "default:stone", minp, maxp, seed+21, 1/10/10/10, 4, -31000, -80) -end) -minetest.register_on_generated(function(minp, maxp, seed) -generate_ore("birthstones:zirconore", "default:stone", minp, maxp, seed+21, 1/10/10/10, 4, -31000, -70) -end) \ No newline at end of file +dofile(birthstones_path.."/nodes.lua") +dofile(birthstones_path.."/craftitems.lua") +dofile(birthstones_path.."/crafting.lua") +dofile(birthstones_path.."/tools.lua") +dofile(birthstones_path.."/oregen.lua") +dofile(birthstones_path.."/aliases.lua") diff --git a/nodes.lua b/nodes.lua new file mode 100644 index 0000000..98e5ee1 --- /dev/null +++ b/nodes.lua @@ -0,0 +1,188 @@ +-- START RAW MATERIALS +minetest.register_node( "birthstones:stone_with_alexandrite", { + description = "Stone with Alexandrite", + tile_images = { "default_stone.png^birthstones_mineral_alexandrite.png" }, + is_ground_content = true, + groups = {cracky=1}, + sounds = default.node_sound_stone_defaults(), + drop = "birthstones:alexandrite", +}) +minetest.register_node( "birthstones:stone_with_amethyst", { + description = "Stone with Amethyst", + tile_images = { "default_stone.png^birthstones_mineral_amethyst.png" }, + is_ground_content = true, + groups = {cracky=1}, + sounds = default.node_sound_stone_defaults(), + drop = "birthstones:amethyst", +}) +minetest.register_node( "birthstones:stone_with_aquamarine", { + description = "Stone with Aquamarine", + tile_images = { "default_stone.png^birthstones_mineral_aquamarine.png" }, + is_ground_content = true, + groups = {cracky=1}, + sounds = default.node_sound_stone_defaults(), + drop = "birthstones:aquamarine", +}) +minetest.register_node( "birthstones:stone_with_diamond", { + description = "Stone with White Diamond", + tile_images = { "default_stone.png^birthstones_mineral_diamond.png" }, + is_ground_content = true, + groups = {cracky=1}, + sounds = default.node_sound_stone_defaults(), + drop = "birthstones:diamond", +}) +minetest.register_node( "birthstones:stone_with_emerald", { + description = "Stone with Emerald", + tile_images = { "default_stone.png^birthstones_mineral_emerald.png" }, + is_ground_content = true, + groups = {cracky=1}, + sounds = default.node_sound_stone_defaults(), + drop = "birthstones:emerald", +}) +minetest.register_node( "birthstones:stone_with_garnet", { + description = "Stone with Garnet", + tile_images = { "default_stone.png^birthstones_mineral_garnet.png" }, + is_ground_content = true, + groups = {cracky=1}, + sounds = default.node_sound_stone_defaults(), + drop = "birthstones:garnet", +}) +minetest.register_node( "birthstones:stone_with_opal", { + description = "Stone with Opal", + tile_images = { "default_stone.png^birthstones_mineral_opal.png" }, + is_ground_content = true, + groups = {cracky=1}, + sounds = default.node_sound_stone_defaults(), + drop = "birthstones:opal", +}) +minetest.register_node( "birthstones:stone_with_peridot", { + description = "Stone with Peridot", + tile_images = { "default_stone.png^birthstones_mineral_peridot.png" }, + is_ground_content = true, + groups = {cracky=1}, + sounds = default.node_sound_stone_defaults(), + drop = "birthstones:peridot", +}) +minetest.register_node( "birthstones:stone_with_ruby", { + description = "Stone with Ruby", + tile_images = { "default_stone.png^birthstones_mineral_ruby.png" }, + is_ground_content = true, + groups = {cracky=1}, + sounds = default.node_sound_stone_defaults(), + drop = "birthstones:ruby", +}) +minetest.register_node( "birthstones:stone_with_sapphire", { + description = "Stone with Sapphire", + tile_images = { "default_stone.png^birthstones_mineral_sapphire.png" }, + is_ground_content = true, + groups = {cracky=1}, + sounds = default.node_sound_stone_defaults(), + drop = "birthstones:sapphire", +}) +minetest.register_node( "birthstones:stone_with_topaz", { + description = "Stone with Topaz", + tile_images = { "default_stone.png^birthstones_mineral_topaz.png" }, + is_ground_content = true, + groups = {cracky=1}, + sounds = default.node_sound_stone_defaults(), + drop = "birthstones:topaz", +}) +minetest.register_node( "birthstones:stone_with_zircon", { + description = "Stone with Zircon", + tile_images = { "default_stone.png^birthstones_mineral_zircon.png" }, + is_ground_content = true, + groups = {cracky=1}, + sounds = default.node_sound_stone_defaults(), + drop = "birthstones:zircon", +}) + +-- END RAW MATERIALS + + +-- START BLOCKS + + +minetest.register_node( "birthstones:alexandriteblock", { + description = "Alexandrite Block", + tile_images = { "birthstones_alexandrite_block.png" }, + is_ground_content = true, + groups = {cracky = 1, level = 3}, + sounds = default.node_sound_stone_defaults(), +}) +minetest.register_node( "birthstones:amethystblock", { + description = "Amethyst Block", + tile_images = { "birthstones_amethyst_block.png" }, + is_ground_content = true, + groups = {cracky = 1, level = 3}, + sounds = default.node_sound_stone_defaults(), +}) +minetest.register_node( "birthstones:aquamarineblock", { + description = "Aquamarine Block", + tile_images = { "birthstones_aquamarine_block.png" }, + is_ground_content = true, + groups = {cracky = 1, level = 3}, + sounds = default.node_sound_stone_defaults(), +}) +minetest.register_node( "birthstones:diamondblock", { + description = "White Diamond Block", + tile_images = { "birthstones_diamond_block.png" }, + is_ground_content = true, + groups = {cracky = 1, level = 3}, + sounds = default.node_sound_stone_defaults(), +}) +minetest.register_node( "birthstones:emeraldblock", { + description = "Emerald Block", + tile_images = { "birthstones_emerald_block.png" }, + is_ground_content = true, + groups = {cracky = 1, level = 3}, + sounds = default.node_sound_stone_defaults(), +}) +minetest.register_node( "birthstones:garnetblock", { + description = "Garnet Block", + tile_images = { "birthstones_garnet_block.png" }, + is_ground_content = true, + groups = {cracky = 1, level = 3}, + sounds = default.node_sound_stone_defaults(), +}) +minetest.register_node( "birthstones:opalblock", { + description = "Opal Block", + tile_images = { "birthstones_opal_block.png" }, + is_ground_content = true, + groups = {cracky = 1, level = 3}, + sounds = default.node_sound_stone_defaults(), +}) +minetest.register_node( "birthstones:peridotblock", { + description = "Peridot Block", + tile_images = { "birthstones_peridot_block.png" }, + is_ground_content = true, + groups = {cracky = 1, level = 3}, + sounds = default.node_sound_stone_defaults(), +}) +minetest.register_node( "birthstones:rubyblock", { + description = "Ruby Block", + tile_images = { "birthstones_ruby_block.png" }, + is_ground_content = true, + groups = {cracky = 1, level = 3}, + sounds = default.node_sound_stone_defaults(), +}) +minetest.register_node( "birthstones:sapphireblock", { + description = "Sapphire Block", + tile_images = { "birthstones_sapphire_block.png" }, + is_ground_content = true, + groups = {cracky = 1, level = 3}, + sounds = default.node_sound_stone_defaults(), +}) +minetest.register_node( "birthstones:topazblock", { + description = "Topaz Block", + tile_images = { "birthstones_topaz_block.png" }, + is_ground_content = true, + groups = {cracky = 1, level = 3}, + sounds = default.node_sound_stone_defaults(), +}) +minetest.register_node( "birthstones:zirconblock", { + description = "Zircon Block", + tile_images = { "birthstones_zircon_block.png" }, + is_ground_content = true, + groups = {cracky = 1, level = 3}, + sounds = default.node_sound_stone_defaults(), +}) \ No newline at end of file diff --git a/oregen.lua b/oregen.lua new file mode 100644 index 0000000..2209cb6 --- /dev/null +++ b/oregen.lua @@ -0,0 +1,76 @@ +local function generate_ore(name, wherein, minp, maxp, seed, chunks_per_volume, ore_per_chunk, height_min, height_max) + if maxp.y < height_min or minp.y > height_max then + return + end + local y_min = math.max(minp.y, height_min) + local y_max = math.min(maxp.y, height_max) + local volume = (maxp.x-minp.x+1)*(y_max-y_min+1)*(maxp.z-minp.z+1) + local pr = PseudoRandom(seed) + local num_chunks = math.floor(chunks_per_volume * volume) + local chunk_size = 3 + if ore_per_chunk <= 4 then + chunk_size = 2 + end + local inverse_chance = math.floor(chunk_size*chunk_size*chunk_size / ore_per_chunk) + --print("generate_ore num_chunks: "..dump(num_chunks)) + for i=1,num_chunks do + local y0 = pr:next(y_min, y_max-chunk_size+1) + if y0 >= height_min and y0 <= height_max then + local x0 = pr:next(minp.x, maxp.x-chunk_size+1) + local z0 = pr:next(minp.z, maxp.z-chunk_size+1) + local p0 = {x=x0, y=y0, z=z0} + for x1=0,chunk_size-1 do + for y1=0,chunk_size-1 do + for z1=0,chunk_size-1 do + if pr:next(1,inverse_chance) == 1 then + local x2 = x0+x1 + local y2 = y0+y1 + local z2 = z0+z1 + local p2 = {x=x2, y=y2, z=z2} + if minetest.env:get_node(p2).name == wherein then + minetest.env:set_node(p2, {name=name}) + end + end + end + end + end + end + end +end + +minetest.register_on_generated(function(minp, maxp, seed) +generate_ore("birthstones:stone_with_alexandrite", "default:stone", minp, maxp, seed+21, 1/10/10/10, 4, -31000, -40) +end) +minetest.register_on_generated(function(minp, maxp, seed) +generate_ore("birthstones:stone_with_amethyst", "default:stone", minp, maxp, seed+21, 1/10/10/10, 4, -31000, -50) +end) +minetest.register_on_generated(function(minp, maxp, seed) +generate_ore("birthstones:stone_with_aquamarine", "default:stone", minp, maxp, seed+21, 1/10/10/10, 4, -31000, -10) +end) +minetest.register_on_generated(function(minp, maxp, seed) +generate_ore("birthstones:stone_with_diamond", "default:stone", minp, maxp, seed+21, 1/10/10/10, 1, -31000, -300) +end) +minetest.register_on_generated(function(minp, maxp, seed) +generate_ore("birthstones:stone_with_emerald", "default:stone", minp, maxp, seed+21, 1/10/10/10, 3, -31000, -100) +end) +minetest.register_on_generated(function(minp, maxp, seed) +generate_ore("birthstones:stone_with_garnet", "default:stone", minp, maxp, seed+21, 1/10/10/10, 4, -31000, -70) +end) +minetest.register_on_generated(function(minp, maxp, seed) +generate_ore("birthstones:stone_with_opal", "default:stone", minp, maxp, seed+21, 1/10/10/10, 4, -31000, -60) +end) +minetest.register_on_generated(function(minp, maxp, seed) +generate_ore("birthstones:stone_with_peridot", "default:stone", minp, maxp, seed+21, 1/10/10/10, 4, -31000, -60) +end) +minetest.register_on_generated(function(minp, maxp, seed) +generate_ore("birthstones:stone_with_ruby", "default:stone", minp, maxp, seed+21, 1/10/10/10, 3, -31000, -120) +end) +minetest.register_on_generated(function(minp, maxp, seed) +generate_ore("birthstones:stone_with_sapphire", "default:stone", minp, maxp, seed+21, 1/10/10/10, 3, -31000, -120) +end) +minetest.register_on_generated(function(minp, maxp, seed) +generate_ore("birthstones:stone_with_topaz", "default:stone", minp, maxp, seed+21, 1/10/10/10, 4, -31000, -80) +end) +minetest.register_on_generated(function(minp, maxp, seed) +generate_ore("birthstones:stone_with_zircon", "default:stone", minp, maxp, seed+21, 1/10/10/10, 4, -31000, -70) +end) diff --git a/textures/Alexandrite.png b/textures/birthstones_alexandrite.png similarity index 100% rename from textures/Alexandrite.png rename to textures/birthstones_alexandrite.png diff --git a/textures/Alexandrite_block.png b/textures/birthstones_alexandrite_block.png similarity index 100% rename from textures/Alexandrite_block.png rename to textures/birthstones_alexandrite_block.png diff --git a/textures/Amethyst.png b/textures/birthstones_amethyst.png similarity index 100% rename from textures/Amethyst.png rename to textures/birthstones_amethyst.png diff --git a/textures/Amethyst_block.png b/textures/birthstones_amethyst_block.png similarity index 100% rename from textures/Amethyst_block.png rename to textures/birthstones_amethyst_block.png diff --git a/textures/Aquamarine.png b/textures/birthstones_aquamarine.png similarity index 100% rename from textures/Aquamarine.png rename to textures/birthstones_aquamarine.png diff --git a/textures/Aquamarine_block.png b/textures/birthstones_aquamarine_block.png similarity index 100% rename from textures/Aquamarine_block.png rename to textures/birthstones_aquamarine_block.png diff --git a/textures/Diamond.png b/textures/birthstones_diamond.png similarity index 100% rename from textures/Diamond.png rename to textures/birthstones_diamond.png diff --git a/textures/Diamond_block.png b/textures/birthstones_diamond_block.png similarity index 100% rename from textures/Diamond_block.png rename to textures/birthstones_diamond_block.png diff --git a/textures/Emerald.png b/textures/birthstones_emerald.png similarity index 100% rename from textures/Emerald.png rename to textures/birthstones_emerald.png diff --git a/textures/Emerald_block.png b/textures/birthstones_emerald_block.png similarity index 100% rename from textures/Emerald_block.png rename to textures/birthstones_emerald_block.png diff --git a/textures/Garnet.png b/textures/birthstones_garnet.png similarity index 100% rename from textures/Garnet.png rename to textures/birthstones_garnet.png diff --git a/textures/Garnet_block.png b/textures/birthstones_garnet_block.png similarity index 100% rename from textures/Garnet_block.png rename to textures/birthstones_garnet_block.png diff --git a/textures/Alexandrite_overlay.png b/textures/birthstones_mineral_alexandrite.png similarity index 100% rename from textures/Alexandrite_overlay.png rename to textures/birthstones_mineral_alexandrite.png diff --git a/textures/Amethyst_overlay.png b/textures/birthstones_mineral_amethyst.png similarity index 100% rename from textures/Amethyst_overlay.png rename to textures/birthstones_mineral_amethyst.png diff --git a/textures/Aquamarine_overlay.png b/textures/birthstones_mineral_aquamarine.png similarity index 100% rename from textures/Aquamarine_overlay.png rename to textures/birthstones_mineral_aquamarine.png diff --git a/textures/Diamond_overlay.png b/textures/birthstones_mineral_diamond.png similarity index 100% rename from textures/Diamond_overlay.png rename to textures/birthstones_mineral_diamond.png diff --git a/textures/Emerald_overlay.png b/textures/birthstones_mineral_emerald.png similarity index 100% rename from textures/Emerald_overlay.png rename to textures/birthstones_mineral_emerald.png diff --git a/textures/Garnet_overlay.png b/textures/birthstones_mineral_garnet.png similarity index 100% rename from textures/Garnet_overlay.png rename to textures/birthstones_mineral_garnet.png diff --git a/textures/Opal_overlay.png b/textures/birthstones_mineral_opal.png similarity index 100% rename from textures/Opal_overlay.png rename to textures/birthstones_mineral_opal.png diff --git a/textures/Peridot_overlay.png b/textures/birthstones_mineral_peridot.png similarity index 100% rename from textures/Peridot_overlay.png rename to textures/birthstones_mineral_peridot.png diff --git a/textures/Ruby_overlay.png b/textures/birthstones_mineral_ruby.png similarity index 100% rename from textures/Ruby_overlay.png rename to textures/birthstones_mineral_ruby.png diff --git a/textures/Sapphire_overlay.png b/textures/birthstones_mineral_sapphire.png similarity index 100% rename from textures/Sapphire_overlay.png rename to textures/birthstones_mineral_sapphire.png diff --git a/textures/Topaz_overlay.png b/textures/birthstones_mineral_topaz.png similarity index 100% rename from textures/Topaz_overlay.png rename to textures/birthstones_mineral_topaz.png diff --git a/textures/Zircon_overlay.png b/textures/birthstones_mineral_zircon.png similarity index 100% rename from textures/Zircon_overlay.png rename to textures/birthstones_mineral_zircon.png diff --git a/textures/Opal.png b/textures/birthstones_opal.png similarity index 100% rename from textures/Opal.png rename to textures/birthstones_opal.png diff --git a/textures/Opal_block.png b/textures/birthstones_opal_block.png similarity index 100% rename from textures/Opal_block.png rename to textures/birthstones_opal_block.png diff --git a/textures/Peridot.png b/textures/birthstones_peridot.png similarity index 100% rename from textures/Peridot.png rename to textures/birthstones_peridot.png diff --git a/textures/Peridot_block.png b/textures/birthstones_peridot_block.png similarity index 100% rename from textures/Peridot_block.png rename to textures/birthstones_peridot_block.png diff --git a/textures/Ruby.png b/textures/birthstones_ruby.png similarity index 100% rename from textures/Ruby.png rename to textures/birthstones_ruby.png diff --git a/textures/Ruby_block.png b/textures/birthstones_ruby_block.png similarity index 100% rename from textures/Ruby_block.png rename to textures/birthstones_ruby_block.png diff --git a/textures/Sapphire.png b/textures/birthstones_sapphire.png similarity index 100% rename from textures/Sapphire.png rename to textures/birthstones_sapphire.png diff --git a/textures/Sapphire_block.png b/textures/birthstones_sapphire_block.png similarity index 100% rename from textures/Sapphire_block.png rename to textures/birthstones_sapphire_block.png diff --git a/textures/alexandrite_axe.png b/textures/birthstones_tool_alexandriteaxe.png similarity index 100% rename from textures/alexandrite_axe.png rename to textures/birthstones_tool_alexandriteaxe.png diff --git a/textures/alexandrite_pick.png b/textures/birthstones_tool_alexandritepick.png similarity index 100% rename from textures/alexandrite_pick.png rename to textures/birthstones_tool_alexandritepick.png diff --git a/textures/birthstones_tool_alexandriteshovel.png b/textures/birthstones_tool_alexandriteshovel.png new file mode 100644 index 0000000000000000000000000000000000000000..9358bd1832f83bb8129d4c318e2f3abbcd1e2efe GIT binary patch literal 395 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkEHgLiPp)-oSg`oe1UBIMNr1&z++CC#3KPAks77g*CV zLG5b(?&;Nh*-UL`in7+o`{}o8q%>~r zYFpI2>|oBcH_Zwx3ZWNrVonxq^vMoCd?mrAPL=22=Omfqp8Gt7ZT8IRsN1i$_nYG7 zjIPXCHESGKhA40}J(Xv8an<Jy=Sg8uM3@C?RMft=DE9@^@~I``TuxN5dWtb!5YUA l)++A$N$q`waM9uall=EgEf1WU;#Um{Q%_evmvv4FO#ld>oWcMA literal 0 HcmV?d00001 diff --git a/textures/birthstones_tool_alexandritesword.png b/textures/birthstones_tool_alexandritesword.png new file mode 100644 index 0000000000000000000000000000000000000000..09890ab81a0f21bb0a24344f825bd04148b752e4 GIT binary patch literal 402 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkEll!h$T0h8t;1?*- zsE87p`|0ha)F0c(%5`ZeJHJxX^N)>_H#VNWlzhdaJ&0@ZM-GMw8x6B- zyB>aEUV2F{ZN|*m{$=-mNKHO|TR-RO^D~Nz3}dFu=v33zN)4H9(7nuZk7l`#$6zU^pB*QszT9{}?ojsG)tt=pw~NQG zS#jmgo>|8h8t~NE#a@0Fy86S#xW2>(n-_aN=y8kXV4lw~;k(_$eg3ixCl+~%>n+>y uYp;H&X~KSAy|#$utJv-oz5jXLs-C&!%EXOxZ!oBVg4Wa3&t;ucLK6Tx&7&~@ literal 0 HcmV?d00001 diff --git a/textures/amethyst_axe.png b/textures/birthstones_tool_amethystaxe.png similarity index 100% rename from textures/amethyst_axe.png rename to textures/birthstones_tool_amethystaxe.png diff --git a/textures/amethyst_pick.png b/textures/birthstones_tool_amethystpick.png similarity index 100% rename from textures/amethyst_pick.png rename to textures/birthstones_tool_amethystpick.png diff --git a/textures/birthstones_tool_amethystshovel.png b/textures/birthstones_tool_amethystshovel.png new file mode 100644 index 0000000000000000000000000000000000000000..1041b055c866d4255e076e6418e5cb26734aac4d GIT binary patch literal 399 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkEd8FTJB!-A~)A1v&a2CaM`TXAEyS@Xe$+llVKLoa0It(MhhP55Ku z=HGk=$s-n$j_Z{N~=dFs91Q?uD~_pke=bMnK}xxcS_Xqzli`oQlP_+xg0 psD9Qv^T33Il2ZNc%=+#5jQ>gnp|vd$@?2>=6-ou~i+ literal 0 HcmV?d00001 diff --git a/textures/birthstones_tool_amethystsword.png b/textures/birthstones_tool_amethystsword.png new file mode 100644 index 0000000000000000000000000000000000000000..73645052885648abb66b40116fe9fee97485728c GIT binary patch literal 406 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkENi(K+(4IXZ@`ao5)1XHM)F_X@N;TGoBns9ZSK z>W-h+vRPZo?caa6_n7H_&ouEB9cH`|0!|5=>Mn3qKA835^7~&Cf|9nzF*0yfp7GK= zQpj_A+s4CsyMKOr)cIaN<+06^6{hK&a>j>4FD5S$+EwJS-!fS+uk1(29pfO**F_Hd zEgy5f`!w@-*2!Hm1y^Qm?qTb{rM2kn--Ak1Wy;Q_tm~4Se^otu(fQ0Bwg=qLzOt@) y^2tj3)V=RkXZAa+``x+d_+-ZOU-eOOyTS6DluLvAgXKF`EsX+1Iy%) z{C{=FYmXn4Pdz0!&!dXftU=&~R5HV~QwQ8%`sg3v5@6&kSm45Nx^=@6(*=A>4k$lh zFf-*6&Y3@Vm0K6D4deF216l^ma?jq2s7bt+pB1-T_j+mP;~8z27ySErXvKZ~@I~*f zPEFZh$940NK&?v*FI!Lf_b%@*vF@|4$u!J9&27YU_@qjEedzJ*mp8UQeH(Gg`sLi! zSNN>rynVHkDyA3K{?F0kUCH(5@B*zrXA=Z1%p*k3wTt-N=U5if_TP2>6~79`_!s`` PK*8tf>gTe~DWM4fvXPI1 literal 0 HcmV?d00001 diff --git a/textures/birthstones_tool_aquamarinesword.png b/textures/birthstones_tool_aquamarinesword.png new file mode 100644 index 0000000000000000000000000000000000000000..7297037494aa7bfd7e026ef1eebe0d276cb2d080 GIT binary patch literal 381 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE&q%Yc}6Zz7sn8b(@Q5SdN3zSwA~ke&GWr^ z!;C{&d;y^_xx}Ck0tfTHnNJzz4N>rGU-ZuWbv|`gvm#8&grjwVDYNlsw{2tk&uR? z$K_HT#Ggl8UB^&-JzTP;re&(7%%Owdm#fNz);}~_aJZIxN8tIa?Xy_&^%o~zUXi>= zYf{LYZN|l`XU@#Nm{Gj(_A`+a|M&d*b>`rX0=fIemXe3AWqV(`x9i~dm@;;GjT^Ig z?nUT5sMb?t-m=;D)5Mp1e%%$GHTUPGr*C&Fdzz=4hG=E3`RH`udyJZu`{W~K-v3YX YH@(sCcS26f9H$;^Vt4q%#v5kOjBAC z8S_A%83+z1uef2$#>Qru!SjH%ahlQpVw=|g(W^NA92ZyX*&N6M;@bhDRAS>L)b3(Vnc5D;nM`D!;>iV~A?5n3vHpk4babx5US<5cS$Md5hx7sMmRZ z$CVl8{XF~f!L-(gfBjC&+Ev#xKR8v#R8Ug%6RRx%bCnZS95Ek8(_c zGZ=Up_fAg!e#=wl6R(NfJIP(MKHt0>r`+lMpZ)Y<>#v{g3ryG7KDR2~ZsAw2WzT-P vD|ohxYX*w!lx24iYS$_0J63M`{1dZI&vo?`zq57#{m$U&>gTe~DWM4fS?h_> literal 0 HcmV?d00001 diff --git a/textures/emerald_axe.png b/textures/birthstones_tool_emeraldaxe.png similarity index 100% rename from textures/emerald_axe.png rename to textures/birthstones_tool_emeraldaxe.png diff --git a/textures/emerald_pick.png b/textures/birthstones_tool_emeraldpick.png similarity index 100% rename from textures/emerald_pick.png rename to textures/birthstones_tool_emeraldpick.png diff --git a/textures/birthstones_tool_emeraldshovel.png b/textures/birthstones_tool_emeraldshovel.png new file mode 100644 index 0000000000000000000000000000000000000000..81916d9a91212e31da056fd2350f8b2a33ddc725 GIT binary patch literal 407 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE$0}!&~yaP0G*j-9P=jN~&_YmzwD0_xC=;h1EP&nD2SYWsT>-cLjyDs)fM41l%4~n;1RJT~?q3AJC_dd98lI+R4yzXl ztl`~~B^MeTKUj!dzqS9~U+d@hiY;CK%QT8-bh0aUDOvV8AN^{4@Hn&fw#FA;Q*6#F zUoZVRNAz~X*D?lExg&Sh@e(eZ>=_Kh8`Mq(>o{Y&*ohUa*Vikz@qmQ9 z8=C&Tda!Yx)r(my-zG4971Dauv~KFVHRAhUeE7BZN+C~58Cy2|l~A@TYQU+x+1GeJ?|>FVdQ&MBb@05o5+G5`Po literal 0 HcmV?d00001 diff --git a/textures/garnet_axe.png b/textures/birthstones_tool_garnetaxe.png similarity index 100% rename from textures/garnet_axe.png rename to textures/birthstones_tool_garnetaxe.png diff --git a/textures/garnet_pick.png b/textures/birthstones_tool_garnetpick.png similarity index 100% rename from textures/garnet_pick.png rename to textures/birthstones_tool_garnetpick.png diff --git a/textures/birthstones_tool_garnetshovel.png b/textures/birthstones_tool_garnetshovel.png new file mode 100644 index 0000000000000000000000000000000000000000..0e443224f9a4d5326836898940ad02c9bf108650 GIT binary patch literal 399 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE*hJ6CmV`uER!K72YLzxYwyl-b@hf7-pwDP!dC7dhZ2^QWRrY5ilvmrjgV9{Eb% z<7|*?J=|R!cvPuEu0k&O{NZycGq&A!5sP{MzRPQAg2^Lejtix-yQ5lb~Em69&<~A~2SoC3<=qEF7 zPy63fyq1do$(EWrXU;XVrH>*$)s{uypB!PG5mK}%ckky9CeQ1>EE3|?-FpDkq<4)ax9B(=y#it*-%gHlK`g|x^w2T8L7CoScGWF;xGA?0Is za9FW4B)jauT0Ra=l1Ni}4?ibYdpFPh_x%3#Jb#gYjxJu{s@Fm^8kI;SB7N6)@$tdI zPI$g0U~Oe6Sr8G?YlTB&R>~$P<=yQTv)L@!+3DKN4^t!Xa*w()2Yc&G=cFR>n0X5E z>ac@%8%KVYcKEod22MRZ+DGANi>1;$?eI=r6?k0S+lImKWwo;KZ}_sOjnJ4C5s@{e z2=+I)8R!7t0qfNzvCZe*Ef6@tSzZ7KoA}xrV0Vq}+Dh%Q6_b&##aaAa&3w$yuuz;! zT#qtbpN3*G^1bZ9mSIQ?ZmdW_F&QCvrs>{EztL|Vkjzw74zE9TA|kHwaa2`}Z4OWL uLnMe|GLlFe^#+4MoED2*gx_?DEcgNU1hDmb1Y}150000c-8TuV|5OBT!?pCJ2 zA*C)2kCTiG78JO)Pci!bVA6$v1tA_H4vhk?2MjI3IyP@BZ)ZBmp(tqmVYTM7zmjKb zek=~T?Uwy~(X2e*_1o9ltrpXI6LUc-*J%qU`ta3!mPRLO#*H(qa?AHzyy)P^ zU#_CRZs{7iqto~&?VWe}y5;o))f3qtESO1Eqy|L-ldnX)-B{!#OanPs2r z6xS9R^tEr27xj53GyVI_S0YRFKJYiM`(WPe``}nY@D9&MCXoidFL?fU+c8XS>@}{+ Riirn>pQo#z%Q~loCIF`Al&$~( literal 0 HcmV?d00001 diff --git a/textures/birthstones_tool_opalsword.png b/textures/birthstones_tool_opalsword.png new file mode 100644 index 0000000000000000000000000000000000000000..f5673df4bde243f3cc5a83cd853466b51aa439a4 GIT binary patch literal 371 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkEMmKjawf?`%JwZ@)RsndLyG2|NE8-S?BtCSCDg&)D&j z;lisZ6aM4548JWc-ZS*?KAkelyq%&m$ z@78Tcw=BvOU==^Ur;(NYH^aWh{09$IL~2;)A6m%&;L(!V8aKMSu6S)-X=)-hYff{3 zz(JL((*3{pS@+5Ri|~4LvQ059Z|2uKS`5dZO%#g1V6bG8d7;~Sh7;}$k1aOb4GStv zSRJwO>Ag$RUpQpskH6l$WIE%I*nsOTA|}!5589TrOWpLDrkg$4wN&vL|EpOk*G?_D z8p-ujY3)PVN9|{}v@W0Ptr`??cgA#wnst2PJEpr=)HQHFc#!=wL?q^d^Syh{=dMbB zVEeG>;6IIDpJv5Qy8CL*jcIz1pUDYnvzzW#X?s^#CR=dpjdo|#6qbLA9$fXpK1}_r nlMgXmW|+Iqd%1VgkN8)@`E%>FwCiUDfWp+%)z4*}Q$iB}yC$I( literal 0 HcmV?d00001 diff --git a/textures/birthstones_tool_peridotsword.png b/textures/birthstones_tool_peridotsword.png new file mode 100644 index 0000000000000000000000000000000000000000..4e232eb68a5762ae3a4879edbc9241008d493ddf GIT binary patch literal 402 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE`Pk0^Bq>ysrQNJ$Vt%IIB7EW+=(dY}x5N}@)a6zF^qsiOqSF*s7g;tgvf1P9a z9^H6oc_hb4@8h!fpMLIPKhFH`=bB9iu0_vgn6ON9S+#KXI-WZcTVLe=x)7E8%Z8Cb zg4-px^uPm z(FPVB;pyRf7W>4k;&*)`e!!@3=f5py|L{o$-?NguW9X6B6U8GL>{2#O#(Pz`>zipS z-kQF)`DL|q&y*?y}vd$@?2>@dNpNRkf literal 0 HcmV?d00001 diff --git a/textures/ruby_axe.png b/textures/birthstones_tool_rubyaxe.png similarity index 100% rename from textures/ruby_axe.png rename to textures/birthstones_tool_rubyaxe.png diff --git a/textures/ruby_pick.png b/textures/birthstones_tool_rubypick.png similarity index 100% rename from textures/ruby_pick.png rename to textures/birthstones_tool_rubypick.png diff --git a/textures/birthstones_tool_rubyshovel.png b/textures/birthstones_tool_rubyshovel.png new file mode 100644 index 0000000000000000000000000000000000000000..cb2eac25039317cddea308c2a7ff32998d02dee4 GIT binary patch literal 421 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkEc7iWw`WNlp4!9Tf9wp=VT8`lNre zgcdz~x2F8hk9p$zzE?l&pY%rW+4b<&^S68B1Apj<6`a@eV$icL$jpsw`CavapSLM9 z$VhsQ?iua|J?$O)wkq08G&mu2%eCuwk6XQg%igqv%njD2npf@^FPpbKr{=@AsKlC- zDQ;iqzPYSCP2ERc#`AXd?_(w&dJZ3v+VSw#Y&cq^^z8?^%5ma+j*^8Z~I>94*jCk_ptt=cuQ+P@62nV%Rr&+ M>FVdQ&MBb@04-FfwEzGB literal 0 HcmV?d00001 diff --git a/textures/birthstones_tool_rubysword.png b/textures/birthstones_tool_rubysword.png new file mode 100644 index 0000000000000000000000000000000000000000..2c6b539f8de6fa6a152245b756b7a8c3f9a0ecc5 GIT binary patch literal 445 zcmV;u0Yd(XP)+gV-YBwp0cHm@Y{7xj7ltadw`E*W*FW%H*uy%eS2zFNOwLG;~G)nud=<8hLZY z!=T3JE=@|%l+XXE6GJB#3u9bfv=zMN4wk$_<0@I8E&LK+bMHikqH26 zy$YE>VPPW7m-S^v?IyJK4w=PFn$wER$6SWlfRE+W65~$6ytbxFyh|8Nc?Vd~r#Ncm z+5ixbv{F+g-Wzia{S_YbHB(b1zHV=E#6*cuR|kML@e7v^RRI8Ec7Y$C#OZf~e_3+1 nvy$Fmy~J|Ts={%r`~J!gt89$mo1G3B00000NkvXXu0mjfPl2^- literal 0 HcmV?d00001 diff --git a/textures/sapphire_axe.png b/textures/birthstones_tool_sapphireaxe.png similarity index 100% rename from textures/sapphire_axe.png rename to textures/birthstones_tool_sapphireaxe.png diff --git a/textures/sapphire_pick.png b/textures/birthstones_tool_sapphirepick.png similarity index 100% rename from textures/sapphire_pick.png rename to textures/birthstones_tool_sapphirepick.png diff --git a/textures/birthstones_tool_sapphireshovel.png b/textures/birthstones_tool_sapphireshovel.png new file mode 100644 index 0000000000000000000000000000000000000000..a60678e638491b9a8c99c5cdfbedbfed37227d91 GIT binary patch literal 400 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkEc-o%LcWlyN=ZVyv2M zl@hgp`)JgbIj-FD2bbnQsHkq?V~h zUw+|Rw)1Gpvd=ZYS#C=nYGHIpl8n(Zb-C`|^3d+^L+iPI?M??3WNJQK%UUn?TBu@ z^U9lpl4HKtG3xv7jhZq!Dr^<|w3_@Py@_=J>&2EPXv)Puzq8dnYK`*I#(K_2hwNEi rAK*T?>%$|Dy>$-j{d0cAe`5Vn&|Gw^FaH5B>=-;<{an^LB{Ts5=*XP0 literal 0 HcmV?d00001 diff --git a/textures/birthstones_tool_sapphiresword.png b/textures/birthstones_tool_sapphiresword.png new file mode 100644 index 0000000000000000000000000000000000000000..ec33ea272760e349ca81796ed9677ccb9820f082 GIT binary patch literal 374 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkEdWrgpBMROK3olS`{>2%aJmh?>$_0d}=ExxbK_TaX= zm6vtr7r(Rp{%=YBIvvrL2N{KtQ=@$2-|vnzvfIzN+3u2D=MRzn63N%p<@hG@c^o*t zqu*e++A;SfYej0lvhz#No~ zd5_m;rnIK*?NV7Aa;&QAx8DD9=}gB<&St3=igK#12AhlNU77pHkt z`?0wgcz(UM`@Qv!-v{Nrm&%G*3LOeJINi`1Y@#?lh@bjajuIHW~jNZ9`!FAG m%6w?y@z>F#-XZNr{43!Fjty%sM|VNL!q-WB`lS)d<7PU_| c*Y<7pf3ad~_P-r>?|}l+)78&qol`;+0NW0un*aa+ literal 0 HcmV?d00001 diff --git a/textures/zircon_axe.png b/textures/birthstones_tool_zirconaxe.png similarity index 100% rename from textures/zircon_axe.png rename to textures/birthstones_tool_zirconaxe.png diff --git a/textures/zircon_pick.png b/textures/birthstones_tool_zirconpick.png similarity index 100% rename from textures/zircon_pick.png rename to textures/birthstones_tool_zirconpick.png diff --git a/textures/birthstones_tool_zirconshovel.png b/textures/birthstones_tool_zirconshovel.png new file mode 100644 index 0000000000000000000000000000000000000000..b3db01567fe75d844589f85e39a74e4a1256c8df GIT binary patch literal 399 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkEKr=OopF=FA#v@cn4CR8J>o9B=K!&`I5)f?CPToyUK zspGN4;sAx?JpG3m=RKdO)BIO<-L+{St8JH=_Lj38FSLlgDD?(honEwkbY2DAM p*67~k`7m(ep9ie=3Z{SbKXdXr)tVf2nCk=zS5H?zmvv4FO#r!cnUDYg literal 0 HcmV?d00001 diff --git a/textures/birthstones_tool_zirconsword.png b/textures/birthstones_tool_zirconsword.png new file mode 100644 index 0000000000000000000000000000000000000000..71e2262e47dc97ff92ed47a6ce66b24dbabceac6 GIT binary patch literal 405 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkEJlsti4jUYKRFb*+^P>w2(o%XS8pTtZ9Q|h` zYW&!klW^(x+39gVYxc+Ao38%p{Kb&QJE^>a6BRg)#FuVS481XLp18xLlS^h5FN-{|=&eS9SZuQ}xVa>^Q6Sk_F-dKA2%27_g7s@+t z-hX)I8{5mI#((d=CcWQltJuw5Z@s*mHD=cu_HvVI_UN5^lRjPPmA`FL(zoy4##f

Ruaahk^>`Mp0IdU|WT-Y#3**%5R5w8w7Q x_3N6?882ICe8OC9k;bI8Ibl!!g-W|TkUpNfL%Nv%oD3**Jzf1=);T3K0RW)Asv7_R literal 0 HcmV?d00001 diff --git a/textures/Topaz.png b/textures/birthstones_topaz.png similarity index 100% rename from textures/Topaz.png rename to textures/birthstones_topaz.png diff --git a/textures/Topaz_block.png b/textures/birthstones_topaz_block.png similarity index 100% rename from textures/Topaz_block.png rename to textures/birthstones_topaz_block.png diff --git a/textures/Zircon.png b/textures/birthstones_zircon.png similarity index 100% rename from textures/Zircon.png rename to textures/birthstones_zircon.png diff --git a/textures/Zircon_block.png b/textures/birthstones_zircon_block.png similarity index 100% rename from textures/Zircon_block.png rename to textures/birthstones_zircon_block.png diff --git a/tools.lua b/tools.lua new file mode 100644 index 0000000..cfb06c2 --- /dev/null +++ b/tools.lua @@ -0,0 +1,166 @@ +-- START OF FUNCTIONS +-- (START OF INIT IS FURTHER DOWN) + +local function registerpickrecipe(name, durability, time1, time2, time3, maxlev) +minetest.register_tool("birthstones:pick_"..strlower(name), { + description = name .. " Pickaxe", + inventory_image = "birthstones_tool_"..strlower(name).. "pick.png", + tool_capabilities = { + max_drop_level=0, + groupcaps={ + cracky={times={[1]=time1, [2]=time2, [3]=time3}, uses=durability, maxlevel=maxlev} + } + }, +}) +minetest.register_craft({ + output = "birthstones:pick_"..strlower(name), + recipe = { + {'birthstones:'..strlower(name), 'birthstones:'..strlower(name), 'birthstones:'..strlower(name)}, + {'', 'default:stick', ''}, + {'', 'default:stick', ''} + } +}) +minetest.register_tool("birthstones:axe_"..strlower(name), { + description = name.." Axe", + inventory_image = "birthstones_tool_"..strlower(name).."axe.png", + tool_capabilities = { + max_drop_level=1, + groupcaps={ + choppy={times={[1]=time1/2.0, [2]=time2/2.0, [3]=time3/2.0}, uses=30, maxlevel=maxlev}, + fleshy={times={[2]=time2, [3]=time3}, uses=40, maxlevel=maxlev} + } + }, +}) +minetest.register_craft({ + output = "birthstones:axe_"..strlower(name), + recipe = { + {'birthstones:'..strlower(name), 'birthstones:'..strlower(name)}, + {'birthstones:'..strlower(name), 'default:stick'}, + {'', 'default:stick'} + } +}) +minetest.register_tool("birthstones:shovel_"..strlower(name), { + description = name.." Shovel", + inventory_image = "birthstones_tool_"..strlower(name).."shovel.png", + wield_image = "birthstones_tool_"..strlower(name).."shovel.png^[transformR90", + tool_capabilities = { + full_punch_interval = 1.0, + max_drop_level=1, + groupcaps={ + crumbly = {times={[1]=1.10, [2]=0.50, [3]=0.30}, uses=30, maxlevel=3}, + }, + damage_groups = {fleshy=4}, + }, + sound = {breaks = "default_tool_breaks"}, +}) +minetest.register_craft({ + output = "birthstones:shovel_"..strlower(name), + recipe = { + {'', 'birthstones:'..strlower(name)}, + {'', 'default:stick'}, + {'', 'default:stick'} + } +}) +end + +local function registerswordrecipe(name) +minetest.register_tool("birthstones:sword_"..strlower(name), { + description = name.." Pickaxe", + inventory_image = "birthstones_tool_"..strlower(name).."pick.png", + tool_capabilities = { + full_punch_interval = 0.9, + max_drop_level=3, + groupcaps={ + cracky = {times={[1]=2.0, [2]=1.0, [3]=0.50}, uses=30, maxlevel=3}, + }, + damage_groups = {fleshy=5}, + }, + sound = {breaks = "default_tool_breaks"}, + +}) +minetest.register_craft({ + output = "birthstones:sword_"..strlower(name), + recipe = { + {'', 'birthstones:'..strlower(name)}, + {'', 'birthstones:'..strlower(name)}, + {'', 'default:stick'} + } +}) +end + +-- END OF FUNCTIONS + +-- START OF INIT + +registerswordrecipe("Alexandrite") +registerswordrecipe("Amethyst") +registerswordrecipe("Aquamarine") +-- NOTE: Diamond is done manually below so as to be named White Diamond +registerswordrecipe("Emerald") +registerswordrecipe("Garnet") +registerswordrecipe("Opal") +registerswordrecipe("Peridot") +registerswordrecipe("Ruby") +registerswordrecipe("Sapphire") +registerswordrecipe("Topaz") +registerswordrecipe("Zircon") + +minetest.register_tool("birthstones:sword_diamond", { + description = "White Diamond Sword", + inventory_image = "birthstones_tool_diamondsword.png", + tool_capabilities = { + full_punch_interval = 0.7, + max_drop_level=1, + groupcaps={ + snappy={times={[1]=1.90, [2]=0.90, [3]=0.30}, uses=40, maxlevel=3}, + }, + damage_groups = {fleshy=8}, + }, + sound = {breaks = "default_tool_breaks"}, +}) +minetest.register_craft({ + output = "birthstones:sword_diamond", + recipe = { + {'', 'birthstones:diamond'}, + {'', 'birthstones:diamond'}, + {'', 'default:stick'} + } +}) + +minetest.register_tool("birthstones:shovel_diamond", { + description = "White Diamond Shovel", + inventory_image = "birthstones_tool_diamondshovel.png", + wield_image = "birthstones_tool_diamondshovel.png^[transformR90", + tool_capabilities = { + full_punch_interval = 1.0, + max_drop_level=1, + groupcaps={ + crumbly = {times={[1]=1.10, [2]=0.50, [3]=0.30}, uses=30, maxlevel=3}, + }, + damage_groups = {fleshy=4}, + }, + sound = {breaks = "default_tool_breaks"}, +}) +minetest.register_craft({ + output = "birthstones:shovel_diamond", + recipe = { + {'', 'birthstones:diamond'}, + {'', 'default:stick'}, + {'', 'default:stick'} + } +}) + + +-- name, durability, time1, time2, time3, maxlev +registerpickrecipe("Alexandrite", 30, 3.2, 1.40, 0.90, 1) +registerpickrecipe("Amethyst", 30, 3.2, 1.40, 0.90, 1) +registerpickrecipe("Aquamarine", 25, 3.2, 1.40, 0.90, 1) +registerpickrecipe("Diamond", 50, 4.5, 1.8, 1.3, 3) +registerpickrecipe("Emerald", 40, 4.2, 1.6, 1.2, 2) +registerpickrecipe("Garnet", 35, 4.0, 1.5, 1.0, 1) +registerpickrecipe("Opal", 32, 3.5, 1.6, 1.5, 2) +registerpickrecipe("Peridot", 34, 4.0, 1.5, 1.0, 1) +registerpickrecipe("Ruby", 40, 4.2, 1.6, 1.2, 2) +registerpickrecipe("Sapphire", 40, 4.2, 1.6, 1.2, 1) +registerpickrecipe("Topaz", 38, 4.1, 1.6, 1.05, 1) +registerpickrecipe("Zircon", 50, 4.1, 1.6, 1.05, 1)