From 48b8fbcb15e0cfccb1b5d71bd9347003febc751f Mon Sep 17 00:00:00 2001 From: Evert Date: Wed, 4 Apr 2018 17:45:10 +0300 Subject: [PATCH] More work on the tinkering mod. Added casts, prettified the APIs --- metal_melter/caster.lua | 35 +- tinkering/materials.lua | 2 +- tinkering/register.lua | 364 +++++++++++++++++- tinkering/textures/caster_axe_head_cast.png | Bin 0 -> 601 bytes .../textures/caster_pickaxe_head_cast.png | Bin 0 -> 634 bytes .../textures/caster_shovel_head_cast.png | Bin 0 -> 623 bytes .../textures/caster_sword_blade_cast.png | Bin 0 -> 637 bytes .../textures/caster_tool_binding_cast.png | Bin 0 -> 663 bytes tinkering/textures/caster_tool_rod_cast.png | Bin 0 -> 605 bytes .../textures/tinkering_overlay_handle_axe.png | Bin 245 -> 245 bytes ...binding.png => tinkering_tool_binding.png} | Bin 11 files changed, 369 insertions(+), 32 deletions(-) create mode 100644 tinkering/textures/caster_axe_head_cast.png create mode 100644 tinkering/textures/caster_pickaxe_head_cast.png create mode 100644 tinkering/textures/caster_shovel_head_cast.png create mode 100644 tinkering/textures/caster_sword_blade_cast.png create mode 100644 tinkering/textures/caster_tool_binding_cast.png create mode 100644 tinkering/textures/caster_tool_rod_cast.png rename tinkering/textures/{tinkering_binding.png => tinkering_tool_binding.png} (100%) diff --git a/metal_melter/caster.lua b/metal_melter/caster.lua index f9382b7..4bfd5d9 100644 --- a/metal_melter/caster.lua +++ b/metal_melter/caster.lua @@ -12,9 +12,9 @@ metal_caster.spec = metal_melter.spec metal_caster.spec.cast = 288 metal_caster.casts = { - ingot_cast = {"Ingot Cast", "%s:%s_ingot", metal_caster.spec.ingot, {"ingot"}}, - lump_cast = {"Lump Cast", "%s:%s_lump", metal_caster.spec.lump, {"lump"}}, - gem_cast = {"Gem Cast", "%s:%s_crystal", metal_caster.spec.crystal, {"crystal", "gem"}} + ingot_cast = {name = "Ingot Cast", result = "%s:%s_ingot", cost = metal_caster.spec.ingot, typenames = {"ingot"}}, + lump_cast = {name = "Lump Cast", result = "%s:%s_lump", cost = metal_caster.spec.lump, typenames = {"lump"}}, + gem_cast = {name = "Gem Cast", result = "%s:%s_crystal", cost = metal_caster.spec.crystal, typenames = {"crystal", "gem"}} } local metal_cache = {} @@ -114,9 +114,14 @@ end -- Check to see if this cast is able to cast this metal type local function can_cast(metal_name, cast_name) + local cast = metal_caster.casts[cast_name] + + if cast.mod then + return cast.mod + end + local mod = metal_caster.get_modname_for_metal(metal_name) - local castt = metal_caster.casts[cast_name] - local item_name = castt[2]:format(mod, metal_name) + local item_name = cast.result:format(mod, metal_name) if minetest.registered_items[item_name] ~= nil then return mod @@ -205,7 +210,7 @@ local function get_cast_for(item) local cast = nil for i, v in pairs(metal_caster.casts) do - for _,k in pairs(v[4]) do + for _,k in pairs(v.typenames) do if castname == k then cast = i end @@ -286,14 +291,14 @@ local function caster_node_timer(pos, elapsed) metal_type = fluidity.get_metal_for_fluid(metal) local castname = inv:get_stack("cast", 1):get_name() - castname = castname:gsub("metal_melter:", "") + castname = castname:gsub("[a-zA-Z0-9_]+:", "") if metal_caster.casts[castname] then -- Cast metal using a cast local cast = metal_caster.casts[castname] local modname = can_cast(metal_type, castname) if modname ~= nil then - local result_name = cast[2]:format(modname, metal_type) - local result_cost = cast[3] + local result_name = cast.result:format(modname, metal_type) + local result_cost = cast.cost local coolant_cost = result_cost / 4 if metal_count >= result_cost and coolant_count >= coolant_cost then @@ -383,16 +388,18 @@ end -- Register a new cast function metal_caster.register_cast(name, data) - if not metal_caster.casts[name] then - metal_caster.casts[name] = data - end + local modname = data.mod or "metal_melter" - minetest.register_craftitem("metal_melter:"..name, { - description = data[1], + minetest.register_craftitem(modname..":"..name, { + description = data.name, inventory_image = "caster_"..name..".png", stack_max = 1, groups = {cast=1} }) + + if not metal_caster.casts[name] then + metal_caster.casts[name] = data + end end -- Register the caster diff --git a/tinkering/materials.lua b/tinkering/materials.lua index 23ae899..bda000f 100644 --- a/tinkering/materials.lua +++ b/tinkering/materials.lua @@ -241,7 +241,7 @@ tinkering.materials = { -- Metals iron = {name = "Iron", default = "default:steel_ingot", color = "#FFF", base = "ingot", cast = true, modifier = modifiers.iron}, - copper = {name = "Copper", default = "default:copper_ingot", color = "#FF9F72", base = "ingot", cast = true, modifier = modifiers.copper}, + copper = {name = "Copper", default = "default:copper_ingot", color = "#E87945", base = "ingot", cast = true, modifier = modifiers.copper}, tin = {name = "Tin", default = "default:tin_ingot", color = "#C1C1C1", base = "ingot", cast = true, modifier = modifiers.tin}, gold = {name = "Gold", default = "default:gold_ingot", color = "#FFFF54", base = "ingot", cast = true, modifier = modifiers.gold}, mese = {name = "Mese", default = "default:mese_crystal", color = "#FFFF02", base = "gem", modifier = modifiers.mese}, diff --git a/tinkering/register.lua b/tinkering/register.lua index 41b1831..4dde796 100644 --- a/tinkering/register.lua +++ b/tinkering/register.lua @@ -1,22 +1,76 @@ -local textures = { - pick = {"tinkering_pickaxe_head.png", "tinkering_overlay_handle_pickaxe.png"}, - axe = {"tinkering_axe_head.png", "tinkering_overlay_handle_axe.png"}, - sword = {"tinkering_sword_blade.png", "tinkering_overlay_handle_sword.png"}, - shover = {"tinkering_shovel_head.png", "tinkering_overlay_handle_shovel.png"}, - - rod = "tinkering_tool_rod.png", - binding = "tinkering_binding.png" +local tools = { + pick = { + name = "Pickaxe", + groups = {"cracky"}, + fleshy_decrement = 1, + components = { + main = "pickaxe_head", + binding = "tool_binding", + rod = "tool_rod" + }, + textures = { + main = "tinkering_pickaxe_head.png", + second = "tinkering_overlay_handle_pickaxe.png", + offset = "1,-1" + } + }, + axe = { + name = "Axe", + groups = {"choppy"}, + fleshy_increment = 1, + components = { + main = "axe_head", + binding = "tool_binding", + rod = "tool_rod" + }, + textures = { + main = "tinkering_axe_head.png", + second = "tinkering_overlay_handle_axe.png", + offset = "1,-3" + } + }, + sword = { + name = "Sword", + groups = {"snappy"}, + fleshy_decrement = 0, + components = { + main = "sword_blade", + binding = "tool_binding", + rod = "tool_rod" + }, + textures = { + main = "tinkering_sword_blade.png", + second = "tinkering_overlay_handle_sword.png", + offset = "0,0" + } + }, + shovel = { + name = "Shovel", + groups = {"crumbly"}, + fleshy_decrement = 1, + components = { + main = "shovel_head", + binding = "tool_binding", + rod = "tool_rod" + }, + textures = { + main = "tinkering_shovel_head.png", + second = "tinkering_overlay_handle_shovel.png", + offset = "3,-3" + } + }, } local components = { - pickaxe_head = {description = "%s Pickaxe Head", materials = 1, image = textures.pick[1]}, - axe_head = {description = "%s Axe Head", materials = 1, image = textures.axe[1]}, - sword_blade = {description = "%s Sword Blade", materials = 1, image = textures.sword[1]}, - shover_head = {description = "%s Shovel Head", materials = 1, image = textures.shover[1]}, - tool_rod = {description = "%s Tool Rod", materials = 1, image = textures.rod}, - tool_binding = {description = "%s Binding", materials = 1, image = textures.binding} + pickaxe_head = {description = "%s Pickaxe Head", materials = 1, image = tools.pick.textures.main}, + axe_head = {description = "%s Axe Head", materials = 1, image = tools.axe.textures.main}, + sword_blade = {description = "%s Sword Blade", materials = 1, image = tools.sword.textures.main}, + shovel_head = {description = "%s Shovel Head", materials = 1, image = tools.shovel.textures.main}, + tool_rod = {description = "%s Tool Rod", materials = 1, image = "tinkering_tool_rod.png"}, + tool_binding = {description = "%s Tool Binding", materials = 1, image = "tinkering_tool_binding.png"} } +-- Register a tool component function tinkering.register_component(data) local desc = data.description local name = data.name @@ -29,14 +83,290 @@ function tinkering.register_component(data) }) end -for i, v in pairs(components) do - if v.materials == 1 then - for m, s in pairs(tinkering.materials) do +-- Register a tool type +-- +-- name = "Pickaxe", -- Name (description) of the tool +-- groups = {"cracky"}, -- Group caps that apply +-- mod = "tinkering", -- The mod you're registering this tool from +-- fleshy_decrement = 1, -- Amount removed from base damage group "fleshy". Negative value adds. +-- components = { +-- main = "pickaxe_head", -- Name of the primary component +-- binding = "tool_binding", -- Second component +-- rod = "tool_rod" -- Mandatory rod component +-- }, +-- textures = { +-- main = "tinkering_pickaxe_head.png", -- Head (main) Texture +-- second = "tinkering_overlay_handle_pickaxe.png", -- Overlay (typically a handle) +-- offset = "1,-1" -- Head's offset on the texture +-- } +-- +function tinkering.register_tool_type(name, data) + tools[name] = data +end + +-- Create groups based on materials +local function apply_modifiers(materials, basegroup, dgroup) + local tags = {} + local groups = {} + + local incr = 0.00 + local uses = 0 + local dmg = {} + + -- Apply material modifiers + for m, v in pairs(materials) do + local material = tinkering.materials[v] + local mod = material.modifier + + if m ~= "main" then + if mod[m] then + local mp = mod[m] + if mp.increase then + incr = incr + mp.increase + end + + if mp.uses then + uses = uses + mp.uses + end + + if mp.damage then + for g,mod in pairs(mp.damage) do + if dmg[g] == nil or dmg[g] < mod then + dmg[g] = mod + end + end + end + end + end + + -- Apply tags + if mod.tags then + for _,t in pairs(mod.tags) do + if tags[t.name] == nil then + tags[t.name] = t.description + end + end + end + end + + -- Apply modified to base groups + for grp, d in pairs(basegroup) do + groups[grp] = d + + for id,val in pairs(d.times) do + groups[grp].times[id] = val + (incr / id) + end + + groups[grp].uses = d.uses + uses + end + + -- Apply damage group modifications + for g,l in pairs(dgroup) do + if dmg[g] == nil or dmg[g] < l then + dmg[g] = l + end + end + + return groups, dmg, tags +end + +-- Generate a tool texture based on tool type, main material (head) and rod material (handle). +function tinkering.compose_tool_texture(tooltype, main, rod) + local mat_main = tinkering.materials[main] + local mat_rod = tinkering.materials[rod] + + local tool_data = tools[tooltype] + + local main_tex = tool_data.textures.main .."\\^[multiply\\:".. mat_main.color + local rod_tex = tool_data.textures.second .."\\^[multiply\\:".. mat_rod.color + local align = tool_data.textures.offset + + return "[combine:16x16:"..align.."="..main_tex..":0,0="..rod_tex +end + +local function quickcopy(t) + local res = {} + for i, v in pairs(t) do + res[i] = v + end + return res +end + +-- Generate tool capabilities based on tool type and materials +function tinkering.get_tool_capabilities(tool_type, materials) + if not materials["main"] or not materials["rod"] then + return nil + end + + -- Get main material + local main = tinkering.materials[materials.main] + if not main then return nil end + + -- Tool data + local tool_data = tools[tool_type] + + -- Name of the tool + local name = tool_data.name or "Tool" + + -- Group copies + local groups = {} + local dgroups = {} + + -- Copy the groups + for g,v in pairs(main.modifier.damagegroups) do + -- Decrement/increment damage group if tool wants it + if tool_data[g.."_decrement"] then + dgroups[g] = v - tool_data[g.."_decrement"] + elseif tool_data[g.."_increment"] then + dgroups[g] = v + tool_data[g.."_increment"] + else + dgroups[g] = v + end + end + + -- Type specific groups and modifiers + for _,v in pairs(tool_data.groups) do + if main.modifier[v] then + groups[v] = quickcopy(main.modifier[v]) + end + end + + -- Apply all modifiers + local fg, fd, tags = apply_modifiers(materials, groups, dgroups) + local tool_caps = { + full_punch_interval = 1.0, + max_drop_level = 0, + groupcaps = fg, + damagegroups = fd, + } + + -- Construct the name + name = main.name.." "..name + + return tool_caps, name, tags +end + +-- Return tool definition +function tinkering.tool_definition(tool_type, materials) + if not materials["main"] or not materials["rod"] then + return nil + end + + local capabilities, name, tags = tinkering.get_tool_capabilities(tool_type, materials) + if not capabilities then return nil end + + local tool_tree = { + description = name, + tool_capabilities = capabilities, + groups = {tinker_tool = 1}, + inventory_image = tinkering.compose_tool_texture(tool_type, materials.main, materials.rod) + } + + -- Store materials to use in metadata + local tink_mats = "" + for _,m in pairs(materials) do + tink_mats = tink_mats..","..m + end + + return tool_tree, tink_mats, tags +end + +-- Compare provided components to the required components of this tool +local function compare_components_required(tool_spec, materials) + local all_match = true + + for i, v in pairs(tool_spec) do + if not materials[i] then + all_match = false + end + end + + return all_match +end + +-- Create a new tool based on parameters specified. +function tinkering.create_tool(tool_type, materials, want_tool, custom_name, overrides) + -- TODO: Apply tags + -- TODO: Add texture as metadata (https://github.com/minetest/minetest/issues/5686) + + -- Not a valid tool type + if not tools[tool_type] then return false end + local tool_data = tools[tool_type] + + -- Check if the components are correct + if not compare_components_required(tool_data.components, materials) then return false end + + -- Get tool definition and other metadata + local tool_def, mat_names, tags = tinkering.tool_definition(tool_type, materials) + if not tool_def then return false end + + local mod_name = tool_data.mod or "tinkering" + + -- Apply overrides + if overrides then + for i, v in pairs(overrides) do + tool_def[i] = v + end + end + + -- Use custom name + if custom_name ~= nil and custom_name ~= "" then + tool_def.description = custom_name + end + + -- Create internal name + local internal_name = mod_name..":"..materials.main.."_"..tool_type + + -- Register base tool if it doesnt exist already + if not minetest.registered_items[internal_name] then + minetest.register_tool(internal_name, tool_def) + end + + if not want_tool then return true end + + -- Create a new tool instance and apply metadata + local tool = ItemStack(internal_name) + local meta = tool:get_meta() + meta:set_string("description", tool_def.description) + meta:set_string("texture_string", tool_def.inventory_image) -- NOT IMPLEMENTED YET! + meta:set_tool_capabilities(tool_def.tool_capabilities) + meta:set_string("materials", mat_names) + + return tool +end + +-- Register components and base tools +local start_load = os.clock() +local tools = {"pick", "axe", "shovel", "sword"} +local num_components = 0 +local num_tools = 0 + +for m, s in pairs(tinkering.materials) do + for i, v in pairs(components) do + if v.materials == 1 then tinkering.register_component({ name = m.."_"..i, description = v.description:format(s.name), image = tinkering.color_filter(v.image, s.color) }) + num_components = num_components + 1 end end + + for _,t in pairs(tools) do + tinkering.create_tool(t, {main=m,binding="wood",rod="wood"}, false, nil, {groups={not_in_creative_inventory=1}}) + num_tools = num_tools + 1 + end end + +-- Add casts to metal_melter +for i,v in pairs(components) do + metal_caster.register_cast(i.."_cast", { + name = v.description:sub(4).." Cast", + mod = "tinkering", + result = "%s:%s_"..i, + cost = metal_caster.spec.cast + }) +end + +print(("[tinkering] Added %d components and %d base tools in %f seconds."):format(num_components, num_tools, os.clock() - start_load)) diff --git a/tinkering/textures/caster_axe_head_cast.png b/tinkering/textures/caster_axe_head_cast.png new file mode 100644 index 0000000000000000000000000000000000000000..77da20ecb1ef6bcb1d9f394b844d0ccba38b4bee GIT binary patch literal 601 zcmV-f0;c_mP)q z0L1Tk%~1dV010qNS#tmY3ljhU3ljkVnw%H_000McNliru;sgW^10AmqGp+yt03B&m zSad^gZEa<4bN~PV002XBWnpw>WFU8GbZ8()Nlj2>E@cM*00F&8L_t(I%Wad}Y7{{b zhQI3Rp4r`q1O;#M5-Nm^x-Mwqjj!NC_;y|eg%}SjEAdGLA)7r+PnQ=}!>lm_%`iRv zAL_4adH)U-;ARVdZXhPOH-<_;6|UE?-om7TgE4kkVY7j43$YS-d<><7q5uXg1$G%y zWqU=zu>=7Gel8*QjOsvD$Q^VAw1Xlb!HFGQRrYQY#GD!a0y!JF6j)r@-h2uo5Q43$ zvhS=A?oV8u;ZX-qpCI!SDSZyFS$pF251im{sx>ao3R69E-VgZNMW>7B* zmp|ayQ>3Z})zcaB>FbbBo1tx?%MeyOV<&((QwaZ-1aS7!NUGp&0*q=1zppK{u7v{3 zj^WD^{kF80hcJ}UlcxkJ!YFwOT|Wb!!F&qy6S!EQ(znqqiP$Oy+73cf4|ezaoGLh* z!TDzth4V}F)pG}C8?yBd;wTLX-|n*jZ(qZQkLc+ObGbh!ZGixm_Fa7r9@v}t|8t@W zb%ZE>h&%e6YE!s9C%wBzhY&~6lu)q z0L1Tk%~1dV010qNS#tmY3ljhU3ljkVnw%H_000McNliru;sgW^1r&gZEQ|mE03B&m zSad^gZEa<4bN~PV002XBWnpw>WFU8GbZ8()Nlj2>E@cM*00G`fL_t(I%UzOPZc{-F zg+I?vZjvIz17aP3QbI%8QYv*5EQ0-2K%qa03aRKSka($t)HKPxbH_Y*(nO48jUViD zj*l&$KB59Vtl;khga}W1;009SegTUW^efouVZ{o|C9E0N|K0$i zw>&G9UYq~|H!}z-)_gohayHh~LYrYaLjm@O2C{DU-u@~=NC{33;Pl*z$Gb?IA!iuA zLSlf6YxH0U&RKX5B9Ii^)4m~pcn3!#xcrGuZ%|cZbspZ2kn?M6a>W~f`4U_eL5p-% z7{7tN*YM*O4MnN|MpAAR(A UF|?!N82|tP07*qoM6N<$f_y0bfB*mh literal 0 HcmV?d00001 diff --git a/tinkering/textures/caster_shovel_head_cast.png b/tinkering/textures/caster_shovel_head_cast.png new file mode 100644 index 0000000000000000000000000000000000000000..4c1287dfb3e9d7c79543e4f6bf00058f7a275be9 GIT binary patch literal 623 zcmV-#0+9WQP)q z0L1Tk%~1dV010qNS#tmY3ljhU3ljkVnw%H_000McNliru;sgW^1~z`gKC1u#03B&m zSad^gZEa<4bN~PV002XBWnpw>WFU8GbZ8()Nlj2>E@cM*00GlUL_t(I%Vm@AYScg! z#ea8ZlI(6pih^JI5-QZv?rOXBA3lQ*;oJE^N|9wPt5)ih2tv2Jn@r~V;Z8`3fe>ag z=iYP9JtLn!q5|CQ;O`xT0v?RP3#h{F1~xmGRIoS34l8W8uxlWAfv1O%T1X0Dz?7hl zPw@17KvKj8Q|A`V=p>YP#ROm3nTY$LdJZ3`SMRxmq6oVzax%*f76$?H)G?$526 z);93+2$nxhiOUC_%VQfDT@+9R7!}~wTWGrsD9m2K)ivrv@3v$Km*3FysqLi%O$)9n zd%E46=O?gOq27Vd;EN?XKgqyoA=}j8Mn$G75Ilrn@4Hh2c@JL}=Z8!lC$w-AHpcypL1+Yr{r7| zq3@jXB?B|~;BhYS`(^-Es2kX9ASUZJE}^RW5bf{5!6TTI@DGRi+Vv}B{A2(C002ov JPDHLkV1lGH2BiQ1 literal 0 HcmV?d00001 diff --git a/tinkering/textures/caster_sword_blade_cast.png b/tinkering/textures/caster_sword_blade_cast.png new file mode 100644 index 0000000000000000000000000000000000000000..8f0b2c3ba7726fe8cb5d52ed66015b17b63dc1cf GIT binary patch literal 637 zcmV-@0)qXCP)q z0L1Tk%~1dV010qNS#tmY3ljhU3ljkVnw%H_000McNliru;sgW^1`i>@wxa+503B&m zSad^gZEa<4bN~PV002XBWnpw>WFU8GbZ8()Nlj2>E@cM*00H4iL_t(I%XO1oZWBQe zgukAh^-qFO1QIW~1P=yd#|d_Vkl+eAL~h56tr*$H!Qm%2L5dW|KRY|kLyuWm3L}kH zn(3;psjii)OH_cz4ctG1&*51UG67Y1Six!o2X#1XV#NyUHEas-nZWBe5KD*(V89q* z8z9f@EGo=yq4ySX0to#2iTWL*CZH;W63Pf#LKG0U56&`h0`(kx2&A_53BkZI@^4KS zaMnhg1LurD1cHKpevrCX^=LFDA~5>_{Vsy3#wBlt6Ep){J+A<&RwZdK?x5d6(vz)g z38N|6@0h`UxvsiLt)wsR;Ixg1m~7PUzuutT78C`P0o-zH?Bh91zMI6G-_U89?A;Ov z<2m~NT~gzqQ3L9}o}bt=^W2`($iXewm3-7j;LDZ=D~}DLB|{)&uzYG&XU*m0ed+CULApN zcmrOX7)dCh+p>8BT=bsKNtVI!OOUHe6la$q{gK-ORx1e6x;1N1uN$xkaC8XAFO1|b X@%`-q+waAJ00000NkvXXu0mjfu-g)~ literal 0 HcmV?d00001 diff --git a/tinkering/textures/caster_tool_binding_cast.png b/tinkering/textures/caster_tool_binding_cast.png new file mode 100644 index 0000000000000000000000000000000000000000..a418f3556d5df8463b04ca0b2596e0d9b8e7a7fb GIT binary patch literal 663 zcmV;I0%-k-P)q z0L1Tk%~1dV010qNS#tmY3ljhU3ljkVnw%H_000McNliru;sgW^1SQB!9rpkL03B&m zSad^gZEa<4bN~PV002XBWnpw>WFU8GbZ8()Nlj2>E@cM*00H|+L_t(I%Vm>KPTOD* z#eXyYoIg-isFk|m5*31`gg^*HbkQSl2+mg^l$sa{1gR&fR0&9k?Qgmmr&8#`3w!3h znR)M7PL44Fo?qb4GlUf0v>_2NgU2aMUtpyPt8Kj5U^au70zxA2aSLJv(EuD6Bg{)k z6aN+sYAh;%z{3P|!Dzrm?!cmSuvPwE^Ky0P;3RS4W(r!CUL1{K&_yn9psIYM1yF$T z9qex-*)4$%E1_wI`KyM4VdGIp;G=c0E_PdA(4135~=C!98XfuUj4=!@d z%*SnSAa}nYB#`~|%>)pE^D)-{4D-1QtWPsvbH888^%!(InTg4-nmM}6e{s&+*Di4lqlwAonpd9Q;keExooCF;b7 zJ>+#xrgP9%y6kfZ?(-+oR>LM!;B!yR9H;j`2~P#S#lpzE4+H^HI{y#5~KQ_T{sLS!_Vlq@DH{L)002ovPDHLkV1lA98q z0L1Tk%~1dV010qNS#tmY3ljhU3ljkVnw%H_000McNliru;sgW^2q|q(9?$>)03B&m zSad^gZEa<4bN~PV002XBWnpw>WFU8GbZ8()Nlj2>E@cM*00F^CL_t(I%XN~`ZWA#S zM9;Oo*`!6N0*ROY1P?$;+LE?H@Dcrpejr3hX;MK5zk-C+H0iGG%fofpfP!DF^?L4% zXGU(WQ2`zv;nxF%3Z4wW3#h{V8rF|+P{ZK>yR5L;z+(%+3%q;{IYCwc1Lh1(gv#4l zRw!7U00KXj5VjMw097F-NEtLi77%AcZWp#+j%-L>fs2tsYg>$vk|`=j2ryf~#ara+ z6!~%oK0s7(PY((^-O_AI0Gx;EH@FxfB1L{#s||#@>Hw-nCt|F@!}Kd$ju5c(&ogv< z0!?EEht;NI&&50d?_s_)uyZDHGDpweKpTx9MR2ReK5!sv5}kv)C7ciWBX}}Lug<_b zyDtvsNp090G*UfxZ8KPudItc5*H?{WLY% z&UN+O*OOiVx2>t{$vI||ySFC-FODGe1Dp)aEP&mdvqBX*=6`!~{2b)w8pYYqSkh=( rSg%ci2n>2q*9L4O938^(GaK?7H}L39o|!6)00000NkvXXu0mjfO^);_ literal 0 HcmV?d00001 diff --git a/tinkering/textures/tinkering_overlay_handle_axe.png b/tinkering/textures/tinkering_overlay_handle_axe.png index b271fc24d0011d910e0d139238e45881976932fb..ef42153aa6d419a517c24ff1a4f59096026aa8c7 100644 GIT binary patch delta 17 Zcmey$_?2-&2s^g{-%Y`*t0zX!0suW12N3`O delta 17 Ycmey$_?2-&2s?)=3y*oqkBQN<05*;WE&u=k diff --git a/tinkering/textures/tinkering_binding.png b/tinkering/textures/tinkering_tool_binding.png similarity index 100% rename from tinkering/textures/tinkering_binding.png rename to tinkering/textures/tinkering_tool_binding.png