From 1a68fcbdc827754188a8c5e19594dc5d63dcf7ae Mon Sep 17 00:00:00 2001 From: SmallJoker Date: Sat, 18 Jan 2014 11:40:06 +0100 Subject: [PATCH] Cleanups, new node Added tool repair node to .. repair tools with money --- bank_currency.lua | 11 +- bank_money.lua | 11 +- bank_money2.lua | 11 +- config.default.txt | 1 + init.lua | 10 ++ moneychanger.lua | 21 ++-- shop.lua | 18 ++- textures/bitchange_toolrepair_bottom.png | Bin 0 -> 1817 bytes textures/bitchange_toolrepair_side.png | Bin 0 -> 980 bytes textures/bitchange_toolrepair_top.png | Bin 0 -> 928 bytes toolrepair.lua | 137 +++++++++++++++++++++++ version.txt | 8 ++ warehouse.lua | 10 +- 13 files changed, 183 insertions(+), 55 deletions(-) create mode 100644 textures/bitchange_toolrepair_bottom.png create mode 100644 textures/bitchange_toolrepair_side.png create mode 100644 textures/bitchange_toolrepair_top.png create mode 100644 toolrepair.lua diff --git a/bank_currency.lua b/bank_currency.lua index f3e8885..e363422 100644 --- a/bank_currency.lua +++ b/bank_currency.lua @@ -43,11 +43,6 @@ minetest.register_on_shutdown(function() save_exchange_rate() end) -local function has_bank_privilege(meta, player) - local player_name = player:get_player_name() - return ((player_name == meta:get_string("owner")) or minetest.get_player_privs(player_name).server) -end - local function get_bank_formspec(number, pos) local formspec = "" local name = "nodemeta:"..pos.x..","..pos.y..","..pos.z @@ -196,21 +191,21 @@ minetest.register_node("bitchange:bank", { end, allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) local meta = minetest.get_meta(pos) - if(has_bank_privilege(meta, player)) then + if(bitchange_has_access(meta:get_string("owner"), player:get_player_name())) then return count end return 0 end, allow_metadata_inventory_put = function(pos, listname, index, stack, player) local meta = minetest.get_meta(pos) - if (has_bank_privilege(meta, player)) then + if (bitchange_has_access(meta:get_string("owner"), player:get_player_name())) then return stack:get_count() end return 0 end, allow_metadata_inventory_take = function(pos, listname, index, stack, player) local meta = minetest.get_meta(pos) - if (has_bank_privilege(meta, player)) then + if (bitchange_has_access(meta:get_string("owner"), player:get_player_name())) then return stack:get_count() end return 0 diff --git a/bank_money.lua b/bank_money.lua index 7833953..acdd249 100644 --- a/bank_money.lua +++ b/bank_money.lua @@ -43,11 +43,6 @@ minetest.register_on_shutdown(function() save_exchange_rate() end) -local function has_bank_privilege(meta, player) - local player_name = player:get_player_name() - return ((player_name == meta:get_string("owner")) or minetest.get_player_privs(player_name).server) -end - local function get_bank_formspec(number, pos) local formspec = "" local name = "nodemeta:"..pos.x..","..pos.y..","..pos.z @@ -178,21 +173,21 @@ minetest.register_node("bitchange:bank", { end, allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) local meta = minetest.get_meta(pos) - if(has_bank_privilege(meta, player)) then + if(bitchange_has_access(meta:get_string("owner"), player:get_player_name())) then return count end return 0 end, allow_metadata_inventory_put = function(pos, listname, index, stack, player) local meta = minetest.get_meta(pos) - if (has_bank_privilege(meta, player)) then + if (bitchange_has_access(meta:get_string("owner"), player:get_player_name())) then return stack:get_count() end return 0 end, allow_metadata_inventory_take = function(pos, listname, index, stack, player) local meta = minetest.get_meta(pos) - if (has_bank_privilege(meta, player)) then + if (bitchange_has_access(meta:get_string("owner"), player:get_player_name())) then return stack:get_count() end return 0 diff --git a/bank_money2.lua b/bank_money2.lua index 3400fac..6c39320 100644 --- a/bank_money2.lua +++ b/bank_money2.lua @@ -43,11 +43,6 @@ minetest.register_on_shutdown(function() save_exchange_rate() end) -local function has_bank_privilege(meta, player) - local player_name = player:get_player_name() - return ((player_name == meta:get_string("owner")) or minetest.get_player_privs(player_name).server) -end - local function get_bank_formspec(number, pos) local formspec = "" local name = "nodemeta:"..pos.x..","..pos.y..","..pos.z @@ -178,21 +173,21 @@ minetest.register_node("bitchange:bank", { end, allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) local meta = minetest.get_meta(pos) - if(has_bank_privilege(meta, player)) then + if(bitchange_has_access(meta:get_string("owner"), player:get_player_name())) then return count end return 0 end, allow_metadata_inventory_put = function(pos, listname, index, stack, player) local meta = minetest.get_meta(pos) - if (has_bank_privilege(meta, player)) then + if (bitchange_has_access(meta:get_string("owner"), player:get_player_name())) then return stack:get_count() end return 0 end, allow_metadata_inventory_take = function(pos, listname, index, stack, player) local meta = minetest.get_meta(pos) - if (has_bank_privilege(meta, player)) then + if (bitchange_has_access(meta:get_string("owner"), player:get_player_name())) then return stack:get_count() end return 0 diff --git a/config.default.txt b/config.default.txt index ecdba9a..379f1f9 100644 --- a/config.default.txt +++ b/config.default.txt @@ -6,6 +6,7 @@ bitchange_initial_give = 2 bitchange_enable_exchangeshop = true bitchange_enable_moneychanger = true bitchange_enable_warehouse = false +bitchange_enable_toolrepair = true -- Set this variable to false if you have a supported currency enabled -- and if you want to disable the exchanging/converting point - the bank diff --git a/init.lua b/init.lua index 68a37df..221d59d 100644 --- a/init.lua +++ b/init.lua @@ -15,6 +15,9 @@ end if(bitchange_enable_warehouse) then dofile(mod_path.."/warehouse.lua") end +if(bitchange_enable_toolrepair) then + dofile(mod_path.."/toolrepair.lua") +end if(bitchange_enable_bank) then local loaded_bank = "" if(minetest.get_modpath("money") ~= nil) then @@ -38,4 +41,11 @@ if(not minetest.setting_getbool("creative_mode") and bitchange_initial_give > 0) player:get_inventory():add_item("main", "bitchange:mineninth "..bitchange_initial_give) end) end + +-- Privs +minetest.register_privilege("bitchange", "Can access to owned nodes of the bitchange mod") +function bitchange_has_access(owner, player_name) + return (player_name == owner or minetest.get_player_privs(player_name).server or minetest.get_player_privs(player_name).bitchange) +end + print("[BitChange] Loaded.") \ No newline at end of file diff --git a/moneychanger.lua b/moneychanger.lua index 84e0002..0c76da0 100644 --- a/moneychanger.lua +++ b/moneychanger.lua @@ -120,9 +120,8 @@ moneychanger.update_fields = function(pos, listname, index, stack, take) end if(canMove) then return stack:get_count() - else - return 0 end + return 0 end minetest.register_node("bitchange:moneychanger", { @@ -151,35 +150,31 @@ minetest.register_node("bitchange:moneychanger", { end, allow_metadata_inventory_put = function(pos, listname, index, stack, player) local meta = minetest.get_meta(pos) - if(player:get_player_name() ~= meta:get_string("owner")) then + if(not bitchange_has_access(meta:get_string("owner"), player:get_player_name())) then return 0 end if(listname == "source") then local stack_name = stack:get_name() if(stack_name == "bitchange:mineninth" or stack_name == "bitchange:minecoin" or stack_name == "bitchange:minecoinblock") then return moneychanger.update_fields(pos, listname, index, stack, false) - else - return 0 end - else - return 0 end + return 0 end, allow_metadata_inventory_take = function(pos, listname, index, stack, player) local meta = minetest.get_meta(pos) - if(player:get_player_name() == meta:get_string("owner") or minetest.get_player_privs(name)["server"]) then + if(bitchange_has_access(meta:get_string("owner"), player:get_player_name())) then return moneychanger.update_fields(pos, listname, index, stack, true) - else - return 0 end + return 0 end, can_dig = function(pos, player) local meta = minetest.get_meta(pos) local inv = meta:get_inventory() - if(player:get_player_name() ~= meta:get_string("owner") and not minetest.get_player_privs(name)["server"]) then - return 0 + if(bitchange_has_access(meta:get_string("owner"), player:get_player_name())) then + return inv:is_empty("source") and inv:is_empty("output") and inv:is_empty("rest") end - return inv:is_empty("source") and inv:is_empty("output") and inv:is_empty("rest") + return 0 end }) diff --git a/shop.lua b/shop.lua index a463605..1aeea9c 100644 --- a/shop.lua +++ b/shop.lua @@ -5,11 +5,6 @@ local exchange_shop = {} -local function has_exchange_shop_privilege(meta, player) - local player_name = player:get_player_name() - return ((player_name == meta:get_string("owner")) or minetest.get_player_privs(player_name).server) -end - local function get_exchange_shop_formspec(number,pos,title) local formspec = "" local name = "nodemeta:"..pos.x..","..pos.y..","..pos.z @@ -94,6 +89,7 @@ minetest.register_on_player_receive_fields(function(sender, formname, fields) local pos = exchange_shop[player_name] local meta = minetest.get_meta(pos) local title = meta:get_string("title") or "" + local shop_owner = meta:get_string("owner") if(fields.exchange) then local player_inv = sender:get_inventory() @@ -209,11 +205,11 @@ minetest.register_on_player_receive_fields(function(sender, formname, fields) if(err_msg ~= "") then minetest.chat_send_player(player_name, "Exchange shop: "..err_msg) end - elseif(fields.vstock and has_exchange_shop_privilege(meta, sender) and not fields.quit) then + elseif(fields.vstock and bitchange_has_access(shop_owner, player_name) and not fields.quit) then minetest.show_formspec(sender:get_player_name(),"bitchange:shop_formspec",get_exchange_shop_formspec(3, pos, title)) - elseif(fields.vcustm and has_exchange_shop_privilege(meta, sender) and not fields.quit) then + elseif(fields.vcustm and bitchange_has_access(shop_owner, player_name) and not fields.quit) then minetest.show_formspec(sender:get_player_name(),"bitchange:shop_formspec",get_exchange_shop_formspec(2, pos, title)) - elseif(fields.quit and has_exchange_shop_privilege(meta, sender)) then + elseif(fields.quit and bitchange_has_access(shop_owner, player_name)) then if(fields.title and title ~= fields.title) then if(fields.title ~= "") then meta:set_string("infotext", "Exchange shop \""..fields.title.."\" (owned by ".. @@ -284,21 +280,21 @@ minetest.register_node("bitchange:shop", { end, allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) local meta = minetest.get_meta(pos) - if (not has_exchange_shop_privilege(meta, player)) then + if (not bitchange_has_access(meta:get_string("owner"), player:get_player_name())) then return 0 end return count end, allow_metadata_inventory_put = function(pos, listname, index, stack, player) local meta = minetest.get_meta(pos) - if (has_exchange_shop_privilege(meta, player) and (listname ~= "cust_ej") and (listname ~= "custm_ej")) then + if (bitchange_has_access(meta:get_string("owner"), player:get_player_name()) and (listname ~= "cust_ej") and (listname ~= "custm_ej")) then return stack:get_count() end return 0 end, allow_metadata_inventory_take = function(pos, listname, index, stack, player) local meta = minetest.get_meta(pos) - if (has_exchange_shop_privilege(meta, player) or (listname == "cust_ej")) then + if (bitchange_has_access(meta:get_string("owner"), player:get_player_name()) or (listname == "cust_ej")) then return stack:get_count() end return 0 diff --git a/textures/bitchange_toolrepair_bottom.png b/textures/bitchange_toolrepair_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..a6bedcd854578bb512a57992182562e4139e25ce GIT binary patch literal 1817 zcmeH{=~I&j5XKV$8z3YELXbc>LM{S?00~K6UIIzp9B(8sU;qI@=l~k!Qn8%Y1Fay4 zL%>$S+oIAamO~vV6$czGRZv6`#iM{Aij=cLYm~-+qMy1m`+J_*FFUh4yQLbn+{TJ% zg+L%|U@?kZuVuuptb~P^J}!YRjeKf@ropI*v!T=hJNY zbew>02QX{_22Q}R6L{GNGjYL8yI`h$uooWmvIUtqkZA`p?Llum=kpLBw_xvsa1PPGUAu z60k}VV4|})z*Q3H2KhTdY$6ok1O*VK0nSjMiw3LvWhPgO8Q1(MaE=NiytsOk_J9L!LHUaLcx z;UGf;k~N^GCWIOxq(ll$q(z3(Bg1HGMRcu+VGOOvD@x2XE$jdIZzk|}_q!%jC(CR_ z>~;hKbMs3gHxHCrnu^36>AIY?S!p@B$=gy9nq*yO4ofZ7x_=YM;e)NcF=W7ox`aO8e*aD4;Wk3`vS2leL3YatE3w#2A>D7*xtl!(s)E9{E~=eA)+ z1=g{*d5K+4;$aRnj2baW<8b1M%&T#nu4AXR)^cKhtxuhgKVDZq;D;*tbhoOzq4V+M z9Z?q#p6!ksR=qCnFB;RytdPLf%kw{7Y|j$J4XCEOqRU3!AFoPny~m1CAwFK~^ap$y zmZ>UZGv$!oN5ZbTEC(GeRE8K1Sj@;e@+RVDQ~Sfr_O62SFbQn!H0y{l8yRF=VHvuM z`|gw{RSAAipMlR+4*Aq!?Cp`8bk(hmvjg(n+0j3eB)Y)(%`>;&0d#!Y-nCZ|Jdy0)4m19iQcrOu?4{%V&Go|26aSBTD*%YLTli|*2kLjdeGT6VeP_G zMfrzE%bE9m4vlfz&@1mPimIb`PUDf5hQ8Vz`A2ruZEdQT6DzeJid2El*-i>a&-a zyOPqI_a-zL7;f(~BPVxvB<~Y!9pp`|e6^|NK!Q)b4vBs?GybLso3Mlrjcb%dxThpBS5zMa@H}x0PkhNOnC(KGbQW zT0iARL3|h1rzw9Q(Vs8L?H_bNSJ)^ZL;PN1iMWJ<+e@ z-Y)~^S0s+-P%Gm(S4R&37bf}ux2nVi{X8_TllABy*_l_ICHp&R|v7$N})kxvFmtzF9oV|h#NQk6O75#Hmy nZHj*F98TAHsG&Zhd7$#M*@I8ZaU}&r@t4m5OVv<=IBD;{?HV^x literal 0 HcmV?d00001 diff --git a/textures/bitchange_toolrepair_side.png b/textures/bitchange_toolrepair_side.png new file mode 100644 index 0000000000000000000000000000000000000000..e4a43d90f953e5b75254c744093020c77cf92b3f GIT binary patch literal 980 zcmV;_11tQAP)N2bPDNB8 zb~7$DE-^4L^m3s900U4-L_t(YOWjplPvTGzW*>~nvMMVAaw`R70p(UGZD}cm7J36j zL=&%Z|NpxW#+UudF_ePtE%2~=GHFid%zWR>nVI&JWm$f|-#1^oySqC(J7oXY>-F{Z z<>iIAKR-YFK!7!y&93I_`uh6r?(XU7>H8lpxWEza1P6;CzY$<}Ih`!du(`Rpd3=2Q z9Tu3uc-i-AHYMmD0`l&$ncsZwa=-K6TY<5lQ%;ab|s?Bev*0J=Sn}MOp z=Af$y#a{K;WaBnZolDtXjXIYL=k2^MoLmeCEB8iT!EGsxK1*91Z3~%hEdfW1r?gr` zWny}#VHtgZ`;=0!R}MkjtA^XfK(`Vi8>Jjls!4-Q4eBwip0K6-RAZLK60(+%HhEg9 zCWaz?A?F}ApMtyIh;>d6)oNHS?)j9WA5oKI$WTBysfnCjXhtpMp0EXK$a_Ss9h)3A z64QMqDii{8>B#0%@N$x1q7yM=vI&6ul+(|qm^V1w`-TOu0CxzsDh`3pWkv$EaRKaG z2B?8t3QEPmx}fGLvdTm{<)h_Obir86pfGcB3M-!-;z_`PB5gL4z*>-@ zktR}h(mnx%-i-I_QE0%_DF*>Z^l(wiM>>}T9BK{?F-EC91gJYy-sVZe4jGWp5EN2D z7eYf)fxcS}t4!49X%aY?a0+6C>(DP}fI!yg0H8pW&w_(`6fNkA;It#e0L-b5?}xZFM(U#mwgA@%+oNLdd7AV_Kur+QpUtwkX~ad1mV zIvZb%9=QRFqwsYBS*sAhE3$#5kUvl=VS`PsUJ+t}DJ=Nh9*nRd1aJcxl7Ji0F9hiD z!s(>#jy-}yD4lW$IBo`L*o}`d0NpwGFD7~AiY8J9lhH1P>e>BP;Sj~Zlq_t97$r8Y zR3d!-Yc2f+2671l7-CNX(7E z>uvgzAI@e5ZR?+kt$*yc`?N2bPDNB8 zb~7$DE-^4L^m3s900SIJL_t(YOP!X>k{U4#MahDi4}@WOli@W$0^iSuBBygaLUA{f zO1$Xmc3Zl-SCZ{-!{M;^Ir{zn%galA{@=^}e!pI?x7)3l1CYmbI{p4R-rwIho6T;w z`}p`c91eW)CqLKg^?tuU9*^7YR-^fRUODXfJsOSTWw~6k6u&?I95~Xu1MK{t2v)0= zP6mTPIPAT>y*U-g%;@6h?~%QL(dnIesOYL@5U}~jcszza@m3`G#8*X**g>64CU|&# zea(KD>}BEn?GrV@K-@M)p1E8ucxXq7M5eO=a7894hRGo0XBg-6nIKpbwi@!O?E?Us zh$zh%M1eiy830=0f=D&dJMu;$6aaNFfkDO9Kw744jMM4F`o&_ArB_(y#V!CLg6XP) z!Ul3oW(=x}63Eg+7g;O~YtNc)a)5mplQcsxG^4|^$~H}aJ!-fBqFT930M-1EsH|&XG^uu~;E}h* z!r+T=@Dj2pjxe3NM?Xc}g~4CR>KYQhnEy_UXfb7P0LVsXmMA2}akMk+iPRP##P!$hyAqA6kQ0zz{2=TgWxr5S)^dq0Fr$aN0z1>J; z2guaA<{#0;?x;A~m}QWQIxg~+Hx z8vqF!LR<@s&d}Nt+kjZ*lM>O4#+p=&0w7H6j_#ud)!E(>@;J(LJwhNCJAVPNTJq6h z@nB!2E^DO-*k(g_U#S!ZL|R1=(&wag_6jza^NGZQxWa_nheVNj7RCM}_kS8yQhxz3x^(ix^1TuO0000 0 + and stack:get_wear() < 65535 + and stack:get_name() ~= "technic:water_can" + and stack:get_name() ~= "technic:lava_can") then + return 1 + end + elseif(listname == "fuel") then + if(stack:get_name() == "bitchange:minecoin") then + return stack:get_count() + end + end + return 0 + end, + allow_metadata_inventory_take = function(pos, listname, index, stack, player) + local meta = minetest.get_meta(pos) + if(bitchange_has_access(meta:get_string("owner"), player:get_player_name())) then + return stack:get_count() + end + return 0 + end, + can_dig = function(pos, player) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + if(bitchange_has_access(meta:get_string("owner"), player:get_player_name())) then + return inv:is_empty("src") and inv:is_empty("fuel") + end + return 0 + end +}) + +minetest.register_craft({ + output = 'bitchange:toolrepair', + recipe = { + {'default:steel_ingot', 'default:stick', 'default:steel_ingot'}, + {'default:jungletree', 'default:mese_crystal', 'default:jungletree'}, + {'default:jungletree', 'bitchange:minecoinblock', 'default:jungletree'} + } +}) + +minetest.register_abm({ + nodenames = {"bitchange:toolrepair"}, + interval = 8, + chance = 1, + action = function(pos, node, active_object_count, active_object_count_wider) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + local src = inv:get_stack("src", 1) + local wear = src:get_wear() + + if(src:is_empty() + or wear == 0 + or wear == 65535 + or src:get_name() == "technic:water_can" + or src:get_name() == "technic:lava_can") then + set_infotext(meta, 1) + return + end + local fuel = inv:get_stack("fuel", 1) + if(fuel:is_empty() or fuel:get_name() ~= "bitchange:minecoin") then + set_infotext(meta, 1) + return + end + + if(wear - 2000 < 0) then + src:add_wear(-2000 + wear) + else + src:add_wear(-2000) + end + inv:set_stack("src", 1, src) + set_infotext(meta, 2) + inv:remove_item("fuel", "bitchange:minecoin 1") + end +}) \ No newline at end of file diff --git a/version.txt b/version.txt index 38f947c..685a6b0 100644 --- a/version.txt +++ b/version.txt @@ -1,3 +1,11 @@ +======>- Version 1.6.8 -<====== +- tool repair node +- privilege: bitchange +- more cleanups + +======>- Version 1.6.7 -<====== +- cleanups, adjustments + ======>- Version 1.6.6 -<====== - default config 'config.default.txt' - generation adjustments (coins are alot cheaper now) diff --git a/warehouse.lua b/warehouse.lua index 3ebc421..cacf938 100644 --- a/warehouse.lua +++ b/warehouse.lua @@ -2,10 +2,6 @@ -- Something like a chest...experimental, have fun! --License: WTFPL -function has_locked_chest_privilege(meta, player) - return (player:get_player_name() == meta:get_string("owner")) -end - function get_warehouse_tube_config(mode) if(bitchange_warehouse_pipeworks) then if(mode == 1) then @@ -94,21 +90,21 @@ minetest.register_node("bitchange:warehouse", { end, allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) local meta = minetest.get_meta(pos) - if not has_locked_chest_privilege(meta, player) then + if(not bitchange_has_access(meta:get_string("owner"), player:get_player_name())) then return 0 end return count end, allow_metadata_inventory_put = function(pos, listname, index, stack, player) local meta = minetest.get_meta(pos) - if not has_locked_chest_privilege(meta, player) then + if(not bitchange_has_access(meta:get_string("owner"), player:get_player_name())) then return 0 end return stack:get_count() end, allow_metadata_inventory_take = function(pos, listname, index, stack, player) local meta = minetest.get_meta(pos) - if not has_locked_chest_privilege(meta, player) then + if(not bitchange_has_access(meta:get_string("owner"), player:get_player_name())) then return 0 end return stack:get_count()