diff --git a/crafting.lua b/crafting.lua index ebdd538..58b685f 100644 --- a/crafting.lua +++ b/crafting.lua @@ -16,10 +16,6 @@ --groups = {not_in_craft_guide=1}, - - - - -- Minetest 0.4 mod: bone_collector -- Bones can be crafted to clay, sand or coal to motivate players clear the playground. -- @@ -67,8 +63,28 @@ minetest.register_craft({ }) --END BONE COLLECTOR +minetest.register_craft({ + output = 'es:marble_bricks', + recipe = { + {"es:marble", "es:marble"}, + {"es:marble", "es:marble"}, + }, +}) + +minetest.register_craft({ + output = 'es:granite_bricks', + recipe = { + {"es:granite", "es:granite"}, + {"es:granite", "es:granite"}, + }, +}) +--MESE +minetest.register_craftitem("es:mesecook_crystal", { + description = "Cookable Raw MESE", + inventory_image = "default_mineral_mese.png", +}) minetest.register_craft({ output = 'es:messymese', recipe = { @@ -77,7 +93,6 @@ minetest.register_craft({ {"es:mesecook_crystal", "es:mesecook_crystal", "es:mesecook_crystal"}, }, }) - minetest.register_craft({ output = 'es:mesecook_crystal 9', recipe = { @@ -85,11 +100,22 @@ minetest.register_craft({ } }) +minetest.register_craft({ + output = 'default:mese_crystal', + recipe = { + {'default:mese_crystal_fragment', 'default:mese_crystal_fragment', 'default:mese_crystal_fragment'}, + {'default:mese_crystal_fragment', 'default:mese_crystal_fragment', 'default:mese_crystal_fragment'}, + {'default:mese_crystal_fragment', 'default:mese_crystal_fragment', 'default:mese_crystal_fragment'}, + } +}) + + minetest.register_craftitem("es:depleted_uranium_ingot", { description = "Depleted uranium", --inventory_image = "technic_uranium_ingot.png", inventory_image = "technic_uranium_ingot.png", }) + minetest.register_craft({ output = 'es:boneblock', recipe = { @@ -108,11 +134,6 @@ minetest.register_craft({ } }) - - - - - --ES HELPFUL CRAFTS minetest.register_craft({ output = 'default:ice', @@ -155,24 +176,6 @@ minetest.register_craft({ recipe = {"es:dry_dirt","default:water_flowing"}, }) - ---[[For ref -minetest.register_node("default:dirt_with_grass", { - description = "Dirt with Grass", - tiles = {"default_grass.png", "default_dirt.png", - {name = "default_dirt.png^default_grass_side.png", - tileable_vertical = false}}, - groups = {crumbly = 3, soil = 1}, - drop = 'default:dirt', - sounds = default.node_sound_dirt_defaults({ - footstep = {name = "default_grass_footstep", gain = 0.25}, - }), -})]] - - - - - minetest.register_craft({ output = 'default:desert_cobble 3', recipe = { @@ -182,16 +185,10 @@ minetest.register_craft({ } }) -minetest.register_craft({ - output = 'default:mese_crystal', - recipe = { - {'default:mese_crystal_fragment', 'default:mese_crystal_fragment', 'default:mese_crystal_fragment'}, - {'default:mese_crystal_fragment', 'default:mese_crystal_fragment', 'default:mese_crystal_fragment'}, - {'default:mese_crystal_fragment', 'default:mese_crystal_fragment', 'default:mese_crystal_fragment'}, - } -}) + --ES SPECIAL BLOCKS +--emerald minetest.register_craft({ output = 'es:emeraldblock', recipe = { @@ -206,8 +203,14 @@ minetest.register_craft({ {'stairs:stair_Emerald', 'stairs:stair_Emerald', 'stairs:stair_Emerald'}, } }) +minetest.register_craft({ + output = 'es:emerald_crystal 9', + recipe = { + {'es:emeraldblock'}, + } +}) - +--aikerum minetest.register_craft({ output = 'es:aikerumblock', recipe = { @@ -222,8 +225,14 @@ minetest.register_craft({ {'stairs:stair_Aikerum', 'stairs:stair_Aikerum', 'stairs:stair_Aikerum'}, } }) +minetest.register_craft({ + output = 'es:aikerum_crystal 9', + recipe = { + {'es:aikerumblock'}, + } +}) - +--ruby minetest.register_craft({ output = 'es:rubyblock', recipe = { @@ -238,8 +247,14 @@ minetest.register_craft({ {'stairs:stair_Ruby', 'stairs:stair_Ruby', 'stairs:stair_Ruby'}, } }) +minetest.register_craft({ + output = 'es:ruby_crystal 9', + recipe = { + {'es:rubyblock'}, + } +}) - +--infinium minetest.register_craft({ output = 'es:infiniumblock', recipe = { @@ -254,7 +269,14 @@ minetest.register_craft({ {'stairs:stair_Infinium', 'stairs:stair_Infinium', 'stairs:stair_Infinium'}, } }) +minetest.register_craft({ + output = 'es:infinium_ingot 9', + recipe = { + {'es:infiniumblock'}, + } +}) +--purpellium minetest.register_craft({ output = 'es:purpelliumblock', recipe = { @@ -270,35 +292,6 @@ minetest.register_craft({ {'stairs:stair_Purpellium', 'stairs:stair_Purpellium', 'stairs:stair_Purpellium'}, } }) - -minetest.register_craft({ - output = 'es:emerald_crystal 9', - recipe = { - {'es:emeraldblock'}, - } -}) - -minetest.register_craft({ - output = 'es:ruby_crystal 9', - recipe = { - {'es:rubyblock'}, - } -}) - -minetest.register_craft({ - output = 'es:aikerum_crystal 9', - recipe = { - {'es:aikerumblock'}, - } -}) - -minetest.register_craft({ - output = 'es:infinium_ingot 9', - recipe = { - {'es:infiniumblock'}, - } -}) - minetest.register_craft({ output = 'es:purpellium_ingot 9', recipe = { @@ -306,19 +299,18 @@ minetest.register_craft({ } }) ---crafting + +--crafting containers minetest.register_craft({ type = "shapeless", output = "es:infinium_container", recipe = {"vessels:glass_bottle", "es:infinium_goo","default:water_flowing"}, }) - minetest.register_craft({ type = "shapeless", output = "es:purpellium_container", recipe = {"vessels:glass_bottle", "es:purpellium_dust","default:water_flowing"}, }) - minetest.register_craft({ type = "shapeless", output = "es:aikerum_container", @@ -329,7 +321,6 @@ minetest.register_craft({ output = "es:ruby_container", recipe = {"vessels:glass_bottle", "es:ruby_dust","default:water_flowing"}, }) - minetest.register_craft({ type = "shapeless", output = "es:emerald_container", @@ -346,23 +337,18 @@ minetest.register_craft({ --cottages.handmill_product[ 'es:emerald_crystal' ] = 'es:emerald_dust 1'; --ES GRINDER: - - minetest.register_craftitem("es:purpellium_dust", { description = "Purpellium Dust", inventory_image = "dye_violet.png", }) - minetest.register_craftitem("es:aikerum_dust", { description = "Aikerum Dust", inventory_image = "dye_blue.png", }) - minetest.register_craftitem("es:ruby_dust", { description = "Ruby Dust", inventory_image = "dye_red.png", }) - minetest.register_craftitem("es:emerald_dust", { description = "Emerald Dust", inventory_image = "dye_green.png", @@ -438,7 +424,7 @@ minetest.register_craft({ }) --POTION TO FIX ARMOUR (RUBY) ---infinium +--infinium armour fix minetest.register_craft({ output = 'es:helmet_infinium', type = "shapeless", @@ -464,7 +450,7 @@ minetest.register_craft({ {'es:ruby_container', 'es:boots_infinium' }, }) ---aikerum +--aikerum armour fix minetest.register_craft({ output = 'es:helmet_aikerum', type = "shapeless", @@ -490,7 +476,7 @@ minetest.register_craft({ {'es:ruby_container', 'es:boots_aikerum' }, }) ---emerald +--emerald armour fix minetest.register_craft({ output = 'es:helmet_emerald', type = "shapeless", @@ -517,8 +503,7 @@ minetest.register_craft({ }) - ---Weapon &Tool Crafting: +--WEAPONS AND TOOLS minetest.register_craft({ output = 'es:handle', recipe = { @@ -542,7 +527,6 @@ minetest.register_craft({ {'es:handle'}, } }) - minetest.register_craft({ output = 'es:sword_ruby', recipe = { @@ -551,7 +535,6 @@ minetest.register_craft({ {'es:handle'}, } }) - minetest.register_craft({ output = 'es:sword_aikerum', recipe = { @@ -560,7 +543,6 @@ minetest.register_craft({ {'es:handle'}, } }) - minetest.register_craft({ output = 'es:sword_purpellium', recipe = { @@ -579,7 +561,6 @@ minetest.register_craft({ {'', 'es:handle', ''}, } }) - minetest.register_craft({ output = 'es:pick_ruby', recipe = { @@ -588,7 +569,6 @@ minetest.register_craft({ {'', 'es:handle', ''}, } }) - minetest.register_craft({ output = 'es:pick_aikerum', recipe = { @@ -597,7 +577,6 @@ minetest.register_craft({ {'', 'es:handle', ''}, } }) - minetest.register_craft({ output = 'es:pick_aikerum', recipe = { @@ -606,7 +585,6 @@ minetest.register_craft({ {'', 'es:handle', ''}, } }) - minetest.register_craft({ output = 'es:pick_purpellium', recipe = { @@ -625,7 +603,6 @@ minetest.register_craft({ {'', 'es:handle', ''}, } }) - minetest.register_craft({ output = 'es:axe_ruby', recipe = { @@ -634,7 +611,6 @@ minetest.register_craft({ {'', 'es:handle', ''}, } }) - minetest.register_craft({ output = 'es:axe_aikerum', recipe = { @@ -814,7 +790,7 @@ minetest.register_craft({ ]] ---Default override Cooking +--COOKING RECIPIES minetest.register_craft({ type = "cooking", output = "default:water_flowing", @@ -866,11 +842,33 @@ minetest.register_craft({ }) ---MUST HAVE DEFAULT ORE GENERATION SET -minetest.register_craftitem("es:mesecook_crystal", { - description = "Cookable Raw MESE", - inventory_image = "default_mineral_mese.png", +--Dust cooking +minetest.register_craft({ + type = "cooking", + cooktime = 90, + output = "es:purpellium_lump", + recipe = "es:purpellium_dust", +}) + +minetest.register_craft({ + type = "cooking", + cooktime = 90, + output = "es:aikerum_crystal", + recipe = "es:aikerum_dust", +}) + +minetest.register_craft({ + type = "cooking", + cooktime = 90, + output = "es:ruby_crystal", + recipe = "es:ruby_dust", +}) + +minetest.register_craft({ + type = "cooking", + cooktime = 90, + output = "es:emerald_crystal", + recipe = "es:emerald_dust", }) - diff --git a/init.lua b/init.lua index 8be3bd8..e64ca54 100644 --- a/init.lua +++ b/init.lua @@ -52,6 +52,7 @@ dofile(modpath.."/oregen.lua") -- Tools dofile(modpath.."/tools.lua") +dofile(modpath.."/screwdriver.lua") --dofile(modpath.."/hoes.lua") -- Climate very laggy diff --git a/mostair.lua b/mostair.lua index 2483f39..357a86c 100644 --- a/mostair.lua +++ b/mostair.lua @@ -17,6 +17,42 @@ es = {} --Compatibility with Moreblocks / stairsplus + if minetest.get_modpath("moreblocks") and enable_stairsplus then + register_stair_slab_panel_micro("es", "granite", "es:granite", + {cracky=3}, + {"technic_granite.png"}, + "Granite", + "granite", + 0) +end + + if minetest.get_modpath("moreblocks") and enable_stairsplus then + register_stair_slab_panel_micro("es", "granitebricks", "es:granite_bricks", + {cracky=3}, + { "technic_granite_bricks.png",}, + "Granite Bricks", + "granitebricks", + 0) +end + + if minetest.get_modpath("moreblocks") and enable_stairsplus then + register_stair_slab_panel_micro("es", "marble", "es:marble", + {cracky=3}, + {"technic_marble.png"}, + "Marble", + "marble", + 0) +end + + if minetest.get_modpath("moreblocks") and enable_stairsplus then + register_stair_slab_panel_micro("es", "marblebricks", "es:marble_bricks", + {cracky=3}, + {"technic_marble_bricks.png"}, + "Marble Bricks", + "marblebricks", + 0) +end + if minetest.get_modpath("moreblocks") and enable_stairsplus then register_stair_slab_panel_micro("es", "emeraldblock", "es:emeraldblock", {cracky=3}, diff --git a/nodes.lua b/nodes.lua index d22ff97..a158a37 100644 --- a/nodes.lua +++ b/nodes.lua @@ -59,6 +59,14 @@ minetest.register_node( "es:granite", { sounds = default.node_sound_stone_defaults(), }) +minetest.register_node( "es:granite_bricks", { + description = "Granite Bricks", + tiles = { "technic_granite_bricks.png",}, + is_ground_content = true, + groups = {cracky=3}, + sounds = default.node_sound_stone_defaults(), +}) + minetest.register_node( "es:marble", { description = "Marble", tiles = { "technic_marble.png" }, diff --git a/screwdriver.lua b/screwdriver.lua new file mode 100644 index 0000000..220ab81 --- /dev/null +++ b/screwdriver.lua @@ -0,0 +1,141 @@ +--Extreme Survival created by maikerumine +-- Minetest 0.4.13 mod: "Extreme Survival" +-- namespace: es +--https://github.com/maikerumine + +--[[License: +--~~~~~~~~ +Minetest mod: screwdriver +========================= + +License of source code: +----------------------- +Copyright (C) 2013 RealBadAngel, Maciej Kasatkin + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +http://www.gnu.org/licenses/lgpl-2.1.html + +License of media (textures and sounds) +-------------------------------------- +Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) +http://creativecommons.org/licenses/by-sa/3.0/ + +Created by Gambit (WTFPL): + screwdriver.png +]] + + + +es = {} + +local function nextrange(x, max) + x = x + 1 + if x > max then + x = 0 + end + return x +end + +screwdriver.ROTATE_FACE = 1 +screwdriver.ROTATE_AXIS = 2 +screwdriver.disallow = function(pos, node, user, mode, new_param2) + return false +end +screwdriver.rotate_simple = function(pos, node, user, mode, new_param2) + if mode ~= screwdriver.ROTATE_FACE then + return false + end +end +local USES = 3000 + +-- Handles rotation +local function screwdriver_handler(itemstack, user, pointed_thing, mode) + if pointed_thing.type ~= "node" then + return + end + + local pos = pointed_thing.under + + if minetest.is_protected(pos, user:get_player_name()) then + minetest.record_protection_violation(pos, user:get_player_name()) + return + end + + local node = minetest.get_node(pos) + local ndef = minetest.registered_nodes[node.name] + -- Compute param2 + local rotationPart = node.param2 % 32 -- get first 4 bits + local preservePart = node.param2 - rotationPart + local axisdir = math.floor(rotationPart / 4) + local rotation = rotationPart - axisdir * 4 + if mode == screwdriver.ROTATE_FACE then + rotationPart = axisdir * 4 + nextrange(rotation, 3) + elseif mode == screwdriver.ROTATE_AXIS then + rotationPart = nextrange(axisdir, 5) * 4 + end + + local new_param2 = preservePart + rotationPart + local should_rotate = true + + if ndef and ndef.on_rotate then -- Node provides a handler, so let the handler decide instead if the node can be rotated + -- Copy pos and node because callback can modify it + local result = ndef.on_rotate(vector.new(pos), + {name = node.name, param1 = node.param1, param2 = node.param2}, + user, mode, new_param2) + if result == false then -- Disallow rotation + return + elseif result == true then + should_rotate = false + end + else + if not ndef or not ndef.paramtype2 == "facedir" or + (ndef.drawtype == "nodebox" and + not ndef.node_box.type == "fixed") or + node.param2 == nil then + return + end + + if ndef.can_dig and not ndef.can_dig(pos, user) then + return + end + end + + if should_rotate then + node.param2 = new_param2 + minetest.swap_node(pos, node) + end + + if not minetest.setting_getbool("creative_mode") then + itemstack:add_wear(65535 / (USES - 1)) + end + + return itemstack +end + +-- Screwdriver +minetest.register_tool("es:screwdriver", { + description = "Screwdriver (left-click rotates face, right-click rotates axis)", + inventory_image = "screwdriver.png^[colorize:#0000FF:180", + on_use = function(itemstack, user, pointed_thing) + screwdriver_handler(itemstack, user, pointed_thing, screwdriver.ROTATE_FACE) + return itemstack + end, + on_place = function(itemstack, user, pointed_thing) + screwdriver_handler(itemstack, user, pointed_thing, screwdriver.ROTATE_AXIS) + return itemstack + end, +}) + + +minetest.register_craft({ + output = "es:screwdriver", + recipe = { + {"es:aikerum_crystal"}, + {"es:handle"} + } +}) + diff --git a/textures/screwdriver.png b/textures/screwdriver.png new file mode 100644 index 0000000..1f2cb87 Binary files /dev/null and b/textures/screwdriver.png differ diff --git a/textures/technic_granite_bricks.png b/textures/technic_granite_bricks.png new file mode 100644 index 0000000..ad2e466 Binary files /dev/null and b/textures/technic_granite_bricks.png differ