From 3f029c82d6fc5ac8c73657384168817356be72e6 Mon Sep 17 00:00:00 2001 From: SmallJoker Date: Sat, 25 Nov 2017 11:38:52 +0100 Subject: [PATCH] No ore generation by default, remove Coin base Shop: limit title length to 80 characters Do not list ore nodes in creative inventory 10 MineNinths for a new player on start (previously 2) Replace bitchange privilege with protection_bypass Revert to classic 16px shop texture & run OptiPNG --- README.txt | 5 ++--- bank.lua | 4 ++-- config.default.txt | 6 ++--- init.lua | 12 +++------- minecoins.lua | 29 ++++++------------------- mod.conf | 1 + moreores.lua | 9 ++++---- shop.lua | 9 ++++++-- textures/bitchange_coinbase.png | Bin 482 -> 0 bytes textures/bitchange_shop_front.png | Bin 2439 -> 738 bytes textures/bitchange_shop_side.png | Bin 2341 -> 672 bytes textures/bitchange_shop_top.png | Bin 2436 -> 652 bytes textures/bitchange_toolrepair_side.png | Bin 2043 -> 2042 bytes 13 files changed, 29 insertions(+), 46 deletions(-) create mode 100644 mod.conf delete mode 100644 textures/bitchange_coinbase.png diff --git a/README.txt b/README.txt index ecf5a4a..f48c058 100644 --- a/README.txt +++ b/README.txt @@ -1,12 +1,11 @@ -Bitchange +BitChange ========= This mod adds the currency "MineCoin" to your Minetest world. To change a setting, edit the file 'bitchange_config.txt' in your world directory. Copy and paste 'config.default.txt' if the file does not exist yet. -License: WTFPL (for code and textures) -Adds privilege: bitchange +License: CC0 (for everything) Dependencies: default diff --git a/bank.lua b/bank.lua index fa44e7a..c002b7b 100644 --- a/bank.lua +++ b/bank.lua @@ -52,7 +52,7 @@ minetest.register_node("bitchange:bank", { "bitchange_bank_side.png", "bitchange_bank_side.png", "bitchange_bank_side.png", "bitchange_bank_front.png"}, paramtype2 = "facedir", - groups = {cracky=1,level=1}, + groups = {cracky=1, level=1, not_in_creative_inventory=1}, sounds = default.node_sound_stone_defaults(), after_place_node = function(pos, placer) local meta = minetest.get_meta(pos) @@ -99,7 +99,7 @@ minetest.register_node("bitchange:bank", { end return 0 end, - allow_metadata_inventory_take = function(pos, listname, index, stack, player) + 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() diff --git a/config.default.txt b/config.default.txt index b0c6538..96d5367 100644 --- a/config.default.txt +++ b/config.default.txt @@ -1,7 +1,7 @@ -- General configuration - BitChange --- Created by Krock +-- Do NOT change your settings in "config.default.txt" -bitchange.initial_give = 2 +bitchange.initial_give = 10 -- Enable/Disable whole nodes bitchange.enable_exchangeshop = true bitchange.enable_moneychanger = true @@ -28,4 +28,4 @@ bitchange.warehouse_pipeworks = false -- Advanced generation settings -- Change in 'minecoins.lua', starting at line 101 -bitchange.enable_generation = true \ No newline at end of file +bitchange.enable_generation = false \ No newline at end of file diff --git a/init.lua b/init.lua index f9fa96a..63e21fc 100644 --- a/init.lua +++ b/init.lua @@ -1,12 +1,7 @@ ---Created by Krock for the BitChange mod bitchange = {} bitchange.mod_path = minetest.get_modpath("bitchange") local world_path = minetest.get_worldpath() -if rawget(_G, "freeminer") then - minetest = freeminer -end - dofile(bitchange.mod_path.."/config.default.txt") -- Copied from moretrees mod if not io.open(world_path.."/bitchange_config.txt", "r") then @@ -54,7 +49,7 @@ if bitchange.enable_bank then dofile(bitchange.mod_path.."/bank.lua") bitchange.bank.file_path = world_path.."/bitchange_bank_"..loaded_bank dofile(bitchange.mod_path.."/bank_"..loaded_bank..".lua") - print("[BitChange] Bank loaded: "..loaded_bank) + minetest.log("action", "[BitChange] Bank loaded: "..loaded_bank) end end @@ -66,13 +61,12 @@ if not minetest.setting_getbool("creative_mode") and bitchange.initial_give > 0 end -- Privs -minetest.register_privilege("bitchange", "Can access to owned nodes of the bitchange mod") function bitchange.has_access(owner, player_name) if player_name == owner or owner == "" then return true end local privs = minetest.get_player_privs(player_name) - return privs.server or privs.bitchange + return privs.server or privs.protection_bypass end -print("[BitChange] Loaded.") +minetest.log("action", "[BitChange] Loaded.") diff --git a/minecoins.lua b/minecoins.lua index 104a717..40e80aa 100644 --- a/minecoins.lua +++ b/minecoins.lua @@ -1,13 +1,9 @@ ---bitcoins by MilesDyson@DistroGeeks.com ---Modified by Krock ---License: WTFPL - -- Node definitions minetest.register_node("bitchange:minecoin_in_ground", { - description = "MineCoin Ore", + description = "you hacker!", tiles = { "default_stone.png^bitchange_minecoin_in_ground.png" }, is_ground_content = true, - groups = {cracky=2}, + groups = {cracky=2, not_in_creative_inventory=1}, sounds = default.node_sound_stone_defaults(), drop = { max_items = 2, @@ -19,17 +15,16 @@ minetest.register_node("bitchange:minecoin_in_ground", { }) minetest.register_node("bitchange:mineninth_in_ground", { - description = "MineNinth Ore", + description = "you hacker!", tiles = { "default_stone.png^bitchange_mineninth_in_ground.png" }, is_ground_content = true, - groups = {cracky=3}, + groups = {cracky=3, not_in_creative_inventory=1}, sounds = default.node_sound_stone_defaults(), drop = { max_items = 3, items = { - {items = {"bitchange:coinbase"}, rarity = 5 }, - {items = {"bitchange:coinbase 2"}, rarity = 3 }, - {items = {"bitchange:coinbase 6"} } + {items = {"bitchange:mineninth 4"}, rarity = 3 }, + {items = {"bitchange:mineninth 6"} } } }, }) @@ -37,7 +32,6 @@ minetest.register_node("bitchange:mineninth_in_ground", { minetest.register_node("bitchange:minecoinblock", { description = "MineCoin Block", tiles = { "bitchange_minecoinblock.png" }, - is_ground_content = true, groups = {cracky=2}, sounds = default.node_sound_stone_defaults(), stack_max = 30000, @@ -55,10 +49,7 @@ minetest.register_craftitem("bitchange:mineninth", { stack_max = 30000, }) -minetest.register_craftitem("bitchange:coinbase", { - description = "Coin base", - inventory_image = "bitchange_coinbase.png", -}) +minetest.register_alias("bitchange:coinbase", "bitchange:mineninth") -- Crafting minetest.register_craft({ @@ -94,12 +85,6 @@ minetest.register_craft({ }) -- Cooking -minetest.register_craft({ - type = "cooking", - recipe = "bitchange:coinbase", - output = "bitchange:mineninth", -}) - minetest.register_craft({ type = "cooking", recipe = "default:goldblock", diff --git a/mod.conf b/mod.conf new file mode 100644 index 0000000..27fb0b9 --- /dev/null +++ b/mod.conf @@ -0,0 +1 @@ +name = bitchange \ No newline at end of file diff --git a/moreores.lua b/moreores.lua index 95ddd51..98bd0f9 100644 --- a/moreores.lua +++ b/moreores.lua @@ -1,9 +1,8 @@ ---Created by Krock ---License: WTFPL +-- Conversion of other ores to money if bitchange.use_moreores_tin and minetest.get_modpath("moreores") then minetest.register_craft({ - output = "bitchange:coinbase 18", + output = "bitchange:mineninth 18", recipe = { {"moreores:tin_block", "default:pick_diamond"}, {"moreores:tin_block", ""} @@ -14,7 +13,7 @@ end if bitchange.use_technic_zinc and minetest.get_modpath("technic_worldgen") then minetest.register_craft({ - output = "bitchange:coinbase 8", + output = "bitchange:mineninth 8", recipe = { {"technic:zinc_block", "default:pick_diamond"}, {"technic:zinc_block", ""} @@ -25,7 +24,7 @@ end if bitchange.use_quartz and minetest.get_modpath("quartz") then minetest.register_craft({ - output = "bitchange:coinbase", + output = "bitchange:mineninth", recipe = { {"quartz:quartz_crystal", "default:pick_diamond"}, {"quartz:quartz_crystal", "quartz:quartz_crystal"}, diff --git a/shop.lua b/shop.lua index 6bfb04e..817662d 100644 --- a/shop.lua +++ b/shop.lua @@ -16,8 +16,11 @@ if not bitchange then bitchange.exchangeshop_pipeworks = true function bitchange.has_access(owner, player_name) - return (player_name == owner or owner == "" - or minetest.get_player_privs(player_name).server) + if player_name == owner or owner == "" then + return true + end + local privs = minetest.get_player_privs(player_name) + return privs.server or privs.protection_bypass end end @@ -197,6 +200,8 @@ minetest.register_on_player_receive_fields(function(sender, formname, fields) end if fields.title then + -- Limit title length + fields.title = fields.title:sub(1, 80) if title ~= fields.title then if fields.title ~= "" then meta:set_string("infotext", "'" .. fields.title diff --git a/textures/bitchange_coinbase.png b/textures/bitchange_coinbase.png deleted file mode 100644 index f25c788b8629274e3de7a3fe24b1e7e0f603673b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 482 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCijSl0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=d3- zBeIx*f$uN~Gak=hkpdKyDshb{3C>R|DNig)We7;j%q!9Ja}7}_GuAWJGc+*xQnV20 z1XWKL#}Etut&^?&S_1^y)~_z$EGv6=aP1EE>q*WlJTy4on?L!~#$sS1_AM;$!J+qO zJokLm%5YRsY%Kn<|K~ZM9ZUr`N(~dv@730M^F8E$eZ#U${(8wgImN!mzirM7wmp2C zKOvN%HGh&yql#xh=+~L|w=1k>xNI`NYmvkK?;CQf6%Q;s%FnPmJap@ief^I=b|`Qp zNE~}T?I^3l=}p!_^LMXfmcH=Q|Bp?da?JIs*A>zkviS}hTrWNAXwheUInZIU!)22V zI^6S~@2zd;U|?NW8XNBs8cg`e@^9w_Sqf-P)R6O(wqnxwp?mGA<}ZXRVn} zlT4Re18-{YthbHoRp2{w^PBGyNogWxFmB!Ysn^QtSNXXVUW-YU`hLI2m1nU_gJ&b~Z0w5Fu zhrks^hlJRA#z06OS3QL+I%usV?%Iu?2%{oXqxZhlJ+;13RhKr_syfkMdz7-z$waRe7-Ev8gzSvR88Jo?kxvnWz3dzW9W4i68Hj*bvNvMx)_yI2w&kPEK6c1!qLA(j-Adpp>6I z8B+o1ObqVMx1YWL>DSJ=q9`Vl$;l7bK}wzFDD!On62=IO^Luw6AaLgcAs7Qb{Oz?* zzPL>Yxq0nf7kpE9#zo!l>rB1<=IfB;#qgD@&N+r&00+U-vj6M-uZVXqymV!`v=`@d zj9BC<&GQ&Nc)MyAc2zIVFY48*%>k7ZgmUYGl7d85l$rA}dc;66c0f5}l;|~0gRit; zz#H2EBpIWbQeEe&YMnBsWFmnOL?DR4E|>KpO*4nQYg>rkH_hC%nbNwK{y#k}d%5IV zWSW8mzj*xN8=LFfSCcedp8jKO7mR)J<(+>Y{n0GUGuzLZ<-A?3(q2gjF8+S_6fP!i U%0~kJ-~a#s07*qoM6N<$f<*^np8x;= literal 2439 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 LNkvXXu0mjfUomNo diff --git a/textures/bitchange_shop_top.png b/textures/bitchange_shop_top.png index f8c442a4b92c028977f94b2599df6dd56e145150..4a643347d22e32d332e966e8df951850480f0b68 100644 GIT binary patch literal 652 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