From 79d615bea48c034d0109d11278dea10c28a7d657 Mon Sep 17 00:00:00 2001 From: DonBatman Date: Wed, 29 Apr 2015 07:23:03 -0700 Subject: [PATCH] A few updates --- ReadMe.txt | 65 ++------------ ReadMe.txt~ | 38 +++++++++ crafts.lua | 9 +- items.lua | 5 +- nodes.lua | 216 +++++++---------------------------------------- router.lua | 49 ++++++++++- textures/tux.png | Bin 0 -> 10280 bytes 7 files changed, 133 insertions(+), 249 deletions(-) create mode 100644 ReadMe.txt~ create mode 100644 textures/tux.png diff --git a/ReadMe.txt b/ReadMe.txt index 1c237fa..adadba7 100644 --- a/ReadMe.txt +++ b/ReadMe.txt @@ -15,61 +15,6 @@ This mod will add bitcoins to your map, (NOT REAL BITCOINS) but the basic idea o My first mod for minetest, I plan to expand this mod a bit more as time permits.. - -Tested on both stable and development releases of Minetest with no other mods, no issues were found. - -please contact me by the above email if you have any issues with adding or using this mod. - - - -Installation: - -Copy the bitcoin folder to the mod folder and begin mining bitcoins... - -Noet: The following recipes also include a fee (top right corner) for the conversion of all denominations into Bitcoins, -Bitcents to bitcoins can only be traided up and not down. <- may change if needed. - - -Crafting: - -x = Bitcent - -O O X -X X O = 1 Bitnickel -X X X - -X = Bitcent y = Bitnickel - -O O X -O Y O = 1 Bitdime -O Y O - -X = Bitnickel y = Bitdime z = Bitnickel - -O X X -O Y O = 1 Bitquarter -O Y O - -X = Bitcent y = Bitdime z = Bitnickel - -X Y X -X Y O = 1 Bitquarter -X X X - -x = Bitdime y = Bitquarter - -O O X -O Y O = 1 Bitcoin -Y Y Y - -X = Bitcoins - -X X X -X X X = 1 Bitcoin Block -X X X - - - 3/9/13 Added denominations of bitcoin Bitcent,Bitnickel,Bitdime,Bitquarter. 3/9/13 Added corresponding ors for the new coins. 3/9/13 All new textures made from scratch by me using gimp.. @@ -82,13 +27,13 @@ X X X 11/30/13 added game computer and alienware comptuer 12/01/13 changed recipes for all pomputer components 12/02/13 created all new images for all computers - 26th March 2014, Removed Homedecor, Mesecons and Moreores dependencies (TenPlus1), reduced abm's to only 2 - -April 2015, Updates by DonBatman and Nathan.S Removed all ABMs, updated the mod to work with current versions of Minetest, improved code and added more visual feedback. - +April 2015, Updates by DonBatman and Nathan.S Removed all ABMs, updated the mod to work with current versions +of Minetest, improved code and added more visual feedback. 04/25/15 added on punch functionality to all computers and computers now turn off when player is logged out, player now must punch computer to reboot and mine coins again. MilesDyson - +04/28/15 added router that can turn on and off, computers now require a router to be within 30 node radius +in order to mine bitcoins. +04/29/15 added forspec to router to show network information.. Enjoy!! :D diff --git a/ReadMe.txt~ b/ReadMe.txt~ new file mode 100644 index 0000000..4de7e30 --- /dev/null +++ b/ReadMe.txt~ @@ -0,0 +1,38 @@ + +--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +-- + +--bitcoins v2.0 by MilesDyson@DistroGeeks.com + +-- + +--LICENSE: WTFPL DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE; applies to all parts. + +-- + +--Have ideas on ways to make this mod better? email me at milesdyson@distrogeeks.com + +-- + +--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + + +This mod will add bitcoins to your map, (NOT REAL BITCOINS) but the basic idea of bitcoins.. + +My first mod for minetest, I plan to expand this mod a bit more as time permits.. + + +3/9/13 Added denominations of bitcoin Bitcent,Bitnickel,Bitdime,Bitquarter. +3/9/13 Added corresponding ors for the new coins. +3/9/13 All new textures made from scratch by me using gimp.. +3/10/13 added wallet - no fees +3/28/13 adjusted depths and generation rate of the ore. +10/28/13 adjusted depths of the ore. +11/27/13 removed ores, ingots, wallet and block. added home computer +11/28/13 rewrite of abm's +11/29/13 modified all bitcoin recipe +11/30/13 added game computer and alienware comptuer +12/01/13 changed recipes for all pomputer components +12/02/13 created all new images for all computers +26th March 2014, Removed Homedecor, Mesecons and Moreores dependencies (TenPlus1), reduced abm's to only 2 +April 2015, Updates by DonBatman and Nathan.S Removed all ABMs, updated the mod to work with current versions +of Minetest, improved code and added more visual feedback. +04/25/15 added on punch functionality to all computers and computers now turn off when player is logged out, +player now must punch computer to reboot and mine coins again. MilesDyson +04/28/15 added router that can turn on and off, computers now require a router to be within 30 node radius +in order to mine bitcoins. + +Enjoy!! :D diff --git a/crafts.lua b/crafts.lua index ccb6b6c..f8ba2d1 100644 --- a/crafts.lua +++ b/crafts.lua @@ -406,7 +406,14 @@ minetest.register_craft({ } }) - +minetest.register_craft({ + output = "mycoins:router"; + recipe = { + { "default:steel_ingot", "homedecor:ic", "default:steel_ingot", }, + { "homedecor:ic", "default:mese", "homedecor:ic", }, + { "homedecor:plastic_base", "homedecor:plastic_base", "homedecor:plastic_base", }, + }; +}); diff --git a/items.lua b/items.lua index 0dbcded..303282a 100644 --- a/items.lua +++ b/items.lua @@ -222,13 +222,14 @@ minetest.override_item("default:stone",{ max_items = 2, items = { { - items = {"default:stone 1"}, + items = {"default:cobble 1"}, rarity = 1, }, { items = {"mycoins:bitcent 1"}, - rarity = 8, + rarity = 25, }, } } }) + diff --git a/nodes.lua b/nodes.lua index ccc6da9..2673de7 100644 --- a/nodes.lua +++ b/nodes.lua @@ -8,8 +8,14 @@ end function default.computer_formspec(pos) local spos = pos.x .. "," .. pos.y .. "," ..pos.z - local formspec = "size[10,10]".. - "label[2,2;Booting a proprietary OS, this could take a while...]" .. + local formspec = "size[10,10]".. + "image[1,0.5;1.2,1.2;tux.png]".. + "label[2,0.8;Initializing basic system settings ... OK]" .. + "label[2,1.1;Mounting local filesystems ... OK]" .. + "label[2,1.4;Enabling swap space ... OK]" .. + "label[2,1.7;Setting up console ... OK]" .. + "label[2,2;Operaing System Loaded ... OK]" .. + "label[2,2.3;Starting cgminer 3.7.2 ]" .. "list[nodemeta:".. spos .. ";main;1,3;8,1;]".. "list[current_player;main;1,6;8,4;]" return formspec @@ -26,9 +32,14 @@ end function default.active_computer_formspec(pos) local spos = pos.x .. "," .. pos.y .. "," ..pos.z - local formspec = "size[10,10]".. - "label[2,2;Mining coins.]" .. - "label[2,2.5;Upgrade your computer to mine faster.]" .. + local formspec = "size[10,10]".. + "label[2,0.0;cgminer version 3.7.2 - Started]" .. + "label[2,0.2;----------------------------------------------------------------------------------]" .. + "label[2,0.4;5s:468.9K avg:468.8Kh/s : A:2304 R:0 HW:0 WU:394.4/m]" .. + "label[2,0.7;ST: 2 SS: 0 NB: 1909 LW: 34901 GF: 14 RF: 7]" .. + "label[2,1;Connected to stratum.max.bitcoin.com diff 1.02k with stratum.]" .. + "label[2,1.3;Block: 31dca6d... Diff:104 Started: 09:24:05 Best share: 618K.]" .. + "label[2,1.5;----------------------------------------------------------------------------------]" .. "list[nodemeta:".. spos .. ";main;1,3;8,1;]".. "list[current_player;main;1,6;8,4;]" return formspec @@ -44,20 +55,11 @@ function default.computer_wifi_formspec(pos) return formspec end - - - -- Home Computer - minetest.register_node("mycoins:home_computer",{ drawtype = "nodebox", description = "Home Computer", - tiles = {"mycoins_home_computer_tp.png", - "mycoins_home_computer_bt.png", - "mycoins_home_computer_rt.png", - "mycoins_home_computer_lt.png", - "mycoins_home_computer_bk.png", - "mycoins_home_computer_ft_off.png"}, + tiles = {"mycoins_home_computer_tp.png","mycoins_home_computer_bt.png","mycoins_home_computer_rt.png","mycoins_home_computer_lt.png","mycoins_home_computer_bk.png","mycoins_home_computer_ft_off.png"}, paramtype = "light", paramtype2 = "facedir", drop = "mycoins:home_computer", @@ -70,7 +72,6 @@ minetest.register_node("mycoins:home_computer",{ {-0.500000,-0.500000,-0.500000,0.500000,-0.375,-0.03125}, }, }, - sounds = default.node_sound_wood_defaults(), after_place_node = function(pos, placer) local meta = minetest.get_meta(pos) @@ -168,15 +169,7 @@ minetest.register_node("mycoins:home_computer",{ return count end, allow_metadata_inventory_put = function(pos, listname, index, stack, player) - local meta = minetest.get_meta(pos) - if not computer_owner(meta, player) then - minetest.log("action", player:get_player_name().. - " tried to access a locked chest belonging to ".. - meta:get_string("owner").." at ".. - minetest.pos_to_string(pos)) - return 0 - end - return stack:get_count() + return 0 end, allow_metadata_inventory_take = function(pos, listname, index, stack, player) local meta = minetest.get_meta(pos) @@ -189,30 +182,12 @@ minetest.register_node("mycoins:home_computer",{ end return stack:get_count() end, - on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) - minetest.log("action", player:get_player_name().. - " moves stuff in home computer at "..minetest.pos_to_string(pos)) - end, - on_metadata_inventory_put = function(pos, listname, index, stack, player) - minetest.log("action", player:get_player_name().. - " moves stuff to home computer at "..minetest.pos_to_string(pos)) - end, - on_metadata_inventory_take = function(pos, listname, index, stack, player) - minetest.log("action", player:get_player_name().. - " takes stuff from home computer at "..minetest.pos_to_string(pos)) - end, - }) minetest.register_node("mycoins:home_computer_active",{ drawtype = "nodebox", description = "Home Computer", - tiles = {"mycoins_home_computer_tp.png", - "mycoins_home_computer_bt.png", - "mycoins_home_computer_rt.png", - "mycoins_home_computer_lt.png", - "mycoins_home_computer_bk.png", - "mycoins_home_computer_ft.png"}, + tiles = {"mycoins_home_computer_tp.png","mycoins_home_computer_bt.png","mycoins_home_computer_rt.png","mycoins_home_computer_lt.png","mycoins_home_computer_bk.png","mycoins_home_computer_ft.png"}, paramtype = "light", paramtype2 = "facedir", light_source = 8, @@ -227,7 +202,6 @@ minetest.register_node("mycoins:home_computer_active",{ }, }, sounds = default.node_sound_wood_defaults(), - on_timer = function(pos) local meta = minetest.get_meta(pos) if ( minetest.get_player_by_name(meta:get_string("owner")) == nil ) then @@ -272,8 +246,7 @@ minetest.register_node("mycoins:home_computer_active",{ local inv = meta:get_inventory() inv:set_size("main", 4*2) timer:stop() - end, - + end, can_dig = function(pos,player) local meta = minetest.get_meta(pos); local inv = meta:get_inventory() @@ -291,15 +264,7 @@ minetest.register_node("mycoins:home_computer_active",{ return count end, allow_metadata_inventory_put = function(pos, listname, index, stack, player) - local meta = minetest.get_meta(pos) - if not computer_owner(meta, player) then - minetest.log("action", player:get_player_name().. - " tried to access a locked chest belonging to ".. - meta:get_string("owner").." at ".. - minetest.pos_to_string(pos)) - return 0 - end - return stack:get_count() + return 0 end, allow_metadata_inventory_take = function(pos, listname, index, stack, player) local meta = minetest.get_meta(pos) @@ -312,31 +277,13 @@ minetest.register_node("mycoins:home_computer_active",{ end return stack:get_count() end, - on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) - minetest.log("action", player:get_player_name().. - " moves stuff in home computer at "..minetest.pos_to_string(pos)) - end, - on_metadata_inventory_put = function(pos, listname, index, stack, player) - minetest.log("action", player:get_player_name().. - " moves stuff to home computer at "..minetest.pos_to_string(pos)) - end, - on_metadata_inventory_take = function(pos, listname, index, stack, player) - minetest.log("action", player:get_player_name().. - " takes stuff from home computer at "..minetest.pos_to_string(pos)) - end, }) -- Game Computer - minetest.register_node("mycoins:game_computer",{ drawtype = "nodebox", description = "Gaming Computer", - tiles = {"mycoins_game_computer_tp.png", - "mycoins_game_computer_bt.png", - "mycoins_game_computer_rt.png", - "mycoins_game_computer_lt.png", - "mycoins_game_computer_bk.png", - "mycoins_game_computer_ft_off.png"}, + tiles = {"mycoins_game_computer_tp.png","mycoins_game_computer_bt.png","mycoins_game_computer_rt.png","mycoins_game_computer_lt.png","mycoins_game_computer_bk.png","mycoins_game_computer_ft_off.png"}, paramtype = "light", paramtype2 = "facedir", drop = "mycoins:game_computer", @@ -447,15 +394,7 @@ minetest.register_node("mycoins:game_computer",{ return count end, allow_metadata_inventory_put = function(pos, listname, index, stack, player) - local meta = minetest.get_meta(pos) - if not computer_owner(meta, player) then - minetest.log("action", player:get_player_name().. - " tried to access a locked chest belonging to ".. - meta:get_string("owner").." at ".. - minetest.pos_to_string(pos)) - return 0 - end - return stack:get_count() + return 0 end, allow_metadata_inventory_take = function(pos, listname, index, stack, player) local meta = minetest.get_meta(pos) @@ -468,30 +407,12 @@ minetest.register_node("mycoins:game_computer",{ end return stack:get_count() end, - on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) - minetest.log("action", player:get_player_name().. - " moves stuff in gaming computer at "..minetest.pos_to_string(pos)) - end, - on_metadata_inventory_put = function(pos, listname, index, stack, player) - minetest.log("action", player:get_player_name().. - " moves stuff to gaming computer at "..minetest.pos_to_string(pos)) - end, - on_metadata_inventory_take = function(pos, listname, index, stack, player) - minetest.log("action", player:get_player_name().. - " takes stuff from gaming computer at "..minetest.pos_to_string(pos)) - end, - }) minetest.register_node("mycoins:game_computer_active",{ drawtype = "nodebox", description = "Home Computer", - tiles = {"mycoins_game_computer_tp.png", - "mycoins_game_computer_bt.png", - "mycoins_game_computer_rt.png", - "mycoins_game_computer_lt.png", - "mycoins_game_computer_bk.png", - "mycoins_game_computer_ft.png"}, + tiles = {"mycoins_game_computer_tp.png","mycoins_game_computer_bt.png","mycoins_game_computer_rt.png","mycoins_game_computer_lt.png","mycoins_game_computer_bk.png","mycoins_game_computer_ft.png"}, paramtype = "light", paramtype2 = "facedir", light_source = 8, @@ -505,7 +426,6 @@ minetest.register_node("mycoins:game_computer_active",{ {-0.500000,-0.500000,-0.500000,0.500000,-0.375,-0.03125}, }, }, - sounds = default.node_sound_wood_defaults(), can_dig = function(pos,player) local meta = minetest.get_meta(pos); @@ -569,15 +489,7 @@ minetest.register_node("mycoins:game_computer_active",{ return count end, allow_metadata_inventory_put = function(pos, listname, index, stack, player) - local meta = minetest.get_meta(pos) - if not computer_owner(meta, player) then - minetest.log("action", player:get_player_name().. - " tried to access a locked chest belonging to ".. - meta:get_string("owner").." at ".. - minetest.pos_to_string(pos)) - return 0 - end - return stack:get_count() + return 0 end, allow_metadata_inventory_take = function(pos, listname, index, stack, player) local meta = minetest.get_meta(pos) @@ -590,31 +502,13 @@ minetest.register_node("mycoins:game_computer_active",{ end return stack:get_count() end, - on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) - minetest.log("action", player:get_player_name().. - " moves stuff in gaming computer at "..minetest.pos_to_string(pos)) - end, - on_metadata_inventory_put = function(pos, listname, index, stack, player) - minetest.log("action", player:get_player_name().. - " moves stuff to gaming computer at "..minetest.pos_to_string(pos)) - end, - on_metadata_inventory_take = function(pos, listname, index, stack, player) - minetest.log("action", player:get_player_name().. - " takes stuff from gaming computer at "..minetest.pos_to_string(pos)) - end, }) -- Alienware Computer - minetest.register_node("mycoins:alien_computer",{ drawtype = "nodebox", description = "Alienware Computer", - tiles = {"mycoins_alien_computer_tp.png", - "mycoins_alien_computer_bt.png", - "mycoins_alien_computer_rt.png", - "mycoins_alien_computer_lt.png", - "mycoins_alien_computer_bk.png", - "mycoins_alien_computer_ft_off.png"}, + tiles = {"mycoins_alien_computer_tp.png","mycoins_alien_computer_bt.png","mycoins_alien_computer_rt.png","mycoins_alien_computer_lt.png","mycoins_alien_computer_bk.png","mycoins_alien_computer_ft_off.png"}, paramtype = "light", paramtype2 = "facedir", drop = "mycoins:alien_computer", @@ -627,7 +521,6 @@ minetest.register_node("mycoins:alien_computer",{ {-0.500000,-0.500000,-0.500000,0.500000,-0.375,-0.03125}, }, }, - sounds = default.node_sound_wood_defaults(), after_place_node = function(pos, placer) local meta = minetest.get_meta(pos) @@ -644,8 +537,7 @@ minetest.register_node("mycoins:alien_computer",{ meta:get_string("owner")..")") local inv = meta:get_inventory() inv:set_size("main", 4*2) - end, - + end, can_dig = function(pos,player) local meta = minetest.get_meta(pos); return computer_owner(meta, player) @@ -727,15 +619,7 @@ minetest.register_node("mycoins:alien_computer",{ return count end, allow_metadata_inventory_put = function(pos, listname, index, stack, player) - local meta = minetest.get_meta(pos) - if not computer_owner(meta, player) then - minetest.log("action", player:get_player_name().. - " tried to access a Alienware computer belonging to ".. - meta:get_string("owner").." at ".. - minetest.pos_to_string(pos)) - return 0 - end - return stack:get_count() + return 0 end, allow_metadata_inventory_take = function(pos, listname, index, stack, player) local meta = minetest.get_meta(pos) @@ -748,30 +632,12 @@ minetest.register_node("mycoins:alien_computer",{ end return stack:get_count() end, - on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) - minetest.log("action", player:get_player_name().. - " moves stuff in Alienware computer at "..minetest.pos_to_string(pos)) - end, - on_metadata_inventory_put = function(pos, listname, index, stack, player) - minetest.log("action", player:get_player_name().. - " moves stuff to Alienware computer at "..minetest.pos_to_string(pos)) - end, - on_metadata_inventory_take = function(pos, listname, index, stack, player) - minetest.log("action", player:get_player_name().. - " takes stuff from Alienware computer at "..minetest.pos_to_string(pos)) - end, - }) minetest.register_node("mycoins:alien_computer_active",{ drawtype = "nodebox", description = "Alienware Computer", - tiles = {"mycoins_alien_computer_tp.png", - "mycoins_alien_computer_bt.png", - "mycoins_alien_computer_rt.png", - "mycoins_alien_computer_lt.png", - "mycoins_alien_computer_bk.png", - "mycoins_alien_computer_ft.png"}, + tiles = {"mycoins_alien_computer_tp.png","mycoins_alien_computer_bt.png","mycoins_alien_computer_rt.png","mycoins_alien_computer_lt.png","mycoins_alien_computer_bk.png","mycoins_alien_computer_ft.png"}, paramtype = "light", paramtype2 = "facedir", light_source = 8, @@ -849,15 +715,7 @@ minetest.register_node("mycoins:alien_computer_active",{ return count end, allow_metadata_inventory_put = function(pos, listname, index, stack, player) - local meta = minetest.get_meta(pos) - if not computer_owner(meta, player) then - minetest.log("action", player:get_player_name().. - " tried to access an Alienware computer belonging to ".. - meta:get_string("owner").." at ".. - minetest.pos_to_string(pos)) - return 0 - end - return stack:get_count() + return 0 end, allow_metadata_inventory_take = function(pos, listname, index, stack, player) local meta = minetest.get_meta(pos) @@ -870,16 +728,4 @@ minetest.register_node("mycoins:alien_computer_active",{ end return stack:get_count() end, - on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) - minetest.log("action", player:get_player_name().. - " moves stuff in Alienware computer at "..minetest.pos_to_string(pos)) - end, - on_metadata_inventory_put = function(pos, listname, index, stack, player) - minetest.log("action", player:get_player_name().. - " moves stuff to Alienware computer at "..minetest.pos_to_string(pos)) - end, - on_metadata_inventory_take = function(pos, listname, index, stack, player) - minetest.log("action", player:get_player_name().. - " takes stuff from Alienware computer at "..minetest.pos_to_string(pos)) - end, -}) +}) \ No newline at end of file diff --git a/router.lua b/router.lua index 39cd564..682c8bf 100644 --- a/router.lua +++ b/router.lua @@ -1,3 +1,32 @@ +function default.router_off_formspec(pos) + local spos = pos.x .. "," .. pos.y .. "," ..pos.z + local formspec = "size[10,10]".. + "label[2,2;Powered Off...]" + return formspec +end + + +function default.router_formspec(pos) + + +local active_computers = minetest.find_nodes_in_area({x=pos.x-30, y=pos.y-30, z=pos.z-30}, {x=pos.x+30, y=pos.y+30, z=pos.z+30}, {"mycoins:home_computer_active","mycoins:game_computer_active","mycoins:alien_computer_active"}) + + +local inactive_computers = minetest.find_nodes_in_area({x=pos.x-30, y=pos.y-30, z=pos.z-30}, {x=pos.x+30, y=pos.y+30, z=pos.z+30}, {"mycoins:home_computer","mycoins:game_computer","mycoins:alien_computer"}) + + local spos = pos.x .. "," .. pos.y .. "," ..pos.z + local formspec = "size[10,10]".. + "label[2,2;Powered On...]".. + "label[2,2.5;Active: "..#active_computers.."]".. + "label[2,2.8;Inactive: "..#inactive_computers.."]".. + "button_exit[4,7;2,1;exit;Exit]" + return formspec +end + + + + + --WIFI Router (linksys look-a-like) minetest.register_node("mycoins:router_on", { description = "WIFI Router Powered On", @@ -7,8 +36,9 @@ minetest.register_node("mycoins:router_on", { paramtype2 = "facedir", walkable = false, is_ground_content = true, - groups = {snappy=3}, + groups = {snappy=3, not_in_creative_inventory = 1}, sound = default.node_sound_wood_defaults(), + drop = "mycoins:router", drawtype = "nodebox", node_box = { type = "fixed", @@ -22,6 +52,14 @@ minetest.register_node("mycoins:router_on", { on_punch = function(pos) local node = minetest.get_node(pos) minetest.swap_node(pos, {name = 'mycoins:router', param2 = node.param2}) + local meta = minetest.get_meta(pos) + meta:set_string("formspec", default.router_off_formspec(pos)) + meta:set_string("infotext", "Router") + end, + on_construct = function(pos) + local meta = minetest.get_meta(pos) + meta:set_string("formspec", default.router_formspec(pos)) + meta:set_string("infotext", "Router") end, }) @@ -34,6 +72,7 @@ minetest.register_node("mycoins:router", { is_ground_content = true, groups = {snappy=3}, sound = default.node_sound_wood_defaults(), + drop = "mycoins:router", drawtype = "nodebox", node_box = { type = "fixed", @@ -47,6 +86,14 @@ minetest.register_node("mycoins:router", { on_punch = function(pos) local node = minetest.get_node(pos) minetest.swap_node(pos, {name = 'mycoins:router_on', param2 = node.param2}) + local meta = minetest.get_meta(pos) + meta:set_string("formspec", default.router_formspec(pos)) + meta:set_string("infotext", "Router") + end, + on_construct = function(pos) + local meta = minetest.get_meta(pos) + meta:set_string("formspec", default.router_off_formspec(pos)) + meta:set_string("infotext", "Router") end, }) diff --git a/textures/tux.png b/textures/tux.png new file mode 100644 index 0000000000000000000000000000000000000000..0c42996c5a71873ff31dfd22e321bc07bb127e1c GIT binary patch literal 10280 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 AF#rGn literal 0 HcmV?d00001