From b9cf71386f5e4c64c13f727dc53511125df64eb5 Mon Sep 17 00:00:00 2001 From: Sokomine Date: Thu, 15 May 2014 02:14:46 +0200 Subject: added new node for occupied apartments; added textures done by VanessaE --- init.lua | 151 ++++++++++++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 115 insertions(+), 36 deletions(-) (limited to 'init.lua') diff --git a/init.lua b/init.lua index fb25067..39ab9ad 100644 --- a/init.lua +++ b/init.lua @@ -26,6 +26,7 @@ --]] -- Changelog: +-- 15.05.14 Added diffrent panel for occupied apartments. Added textures created by VanessaE. -- 24.02.14 Buildings can now be removed again (dig the spawn chest) -- 25.02.14 Buildings can now be saved. Just prefix the apartment name with save_as_ -- start_pos and end_pos of apartments are now saved (necessary for the above mentioned save function). @@ -632,36 +633,22 @@ apartment.rent = function( pos, pname, oldmetadata, actor ) end apartment.save_data(); end + + if( not( oldmetadata) ) then + if( (owner == '' or original_owner==pname) + and (node.name ~= 'apartment:apartment')) then + minetest.swap_node( pos, {name='apartment:apartment', param2 = node.param2} ); + elseif( (node.name ~= 'apartment:apartment_oocupied') + and (original_owner ~= pname)) then + minetest.swap_node( pos, {name='apartment:apartment_oocupied', param2 = node.param2} ); + end + end return true; end - - -minetest.register_node("apartment:apartment", { - drawtype = "nodebox", - description = "apartment management panel", - tiles = {"default_chest_top.png^door_steel.png"}, - paramtype = "light", - paramtype2 = "facedir", - light_source = 14, - groups = {cracky=2}, - node_box = { - type = "fixed", - fixed = { - {-0.40, -0.4, 0.50, 0.40, 0.40, 0.30}, - } - }, - selection_box = { - type = "fixed", - fixed = { - {-0.40, -0.4, 0.50, 0.40, 0.40, 0.30}, - } - }, - - on_construct = function(pos) - +apartment.on_construct = function(pos) local meta = minetest.env:get_meta(pos); meta:set_string('infotext', 'Apartment Management Panel (unconfigured)'); meta:set_string('original_owner', '' ); @@ -673,9 +660,10 @@ minetest.register_node("apartment:apartment", { meta:set_int( 'size_left', 0 ); meta:set_int( 'size_front', 0 ); meta:set_int( 'size_back', 0 ); - end, +end - after_place_node = function(pos, placer) + +apartment.after_place_node = function(pos, placer) local meta = minetest.get_meta(pos); local pname = (placer:get_player_name() or ""); meta:set_string("original_owner", pname ); @@ -683,14 +671,10 @@ minetest.register_node("apartment:apartment", { meta:set_string('infotext', 'Apartment Management Panel (owned by '..pname..')' ); meta:set_string("formspec", apartment.get_formspec( pos, placer )); +end - end, - on_receive_fields = function( pos, formname, fields, player ) - return apartment.on_receive_fields(pos, formname, fields, player); - end, - - can_dig = function(pos,player) +apartment.can_dig = function(pos,player) local meta = minetest.get_meta(pos); local owner = meta:get_string('owner'); @@ -712,9 +696,10 @@ minetest.register_node("apartment:apartment", { end return true; - end, +end - after_dig_node = function(pos, oldnode, oldmetadata, digger) + +apartment.after_dig_node = function(pos, oldnode, oldmetadata, digger) if( not( oldmetadata ) or oldmetadata=="nil" or not(oldmetadata.fields)) then minetest.chat_send_player( digger:get_player_name(), "Error: Could not find information about the apartment panel that is to be removed."); @@ -731,7 +716,101 @@ minetest.register_node("apartment:apartment", { apartment.save_data(); minetest.chat_send_player( digger:get_player_name(), "Removed apartment "..descr.." successfully."); end - end, +end + + + +minetest.register_node("apartment:apartment", { + drawtype = "nodebox", + description = "apartment management panel", +--- tiles = {"default_chest_top.png^door_steel.png"}, + tiles = {"default_steel_block.png","default_steel_block.png","default_steel_block.png","default_steel_block.png", + "default_steel_block.png","apartment_controls_vacant.png","default_steel_block.png"}, + paramtype = "light", + paramtype2 = "facedir", + light_source = 14, + groups = {cracky=2}, + node_box = { + type = "fixed", + fixed = { + { -0.5+(1/16), -0.5+(1/16), 0.5, 0.5-(1/16), 0.5-(1/16), 0.30}, + + } + }, + selection_box = { + type = "fixed", + fixed = { + { -0.5+(1/16), -0.5+(1/16), 0.5, 0.5-(1/16), 0.5-(1/16), 0.30}, + } + }, + + on_construct = function(pos) + return apartment.on_construct( pos ); + end, + + after_place_node = function(pos, placer) + return apartment.after_place_node( pos, placer ); + end, + + on_receive_fields = function( pos, formname, fields, player ) + return apartment.on_receive_fields(pos, formname, fields, player); + end, + + can_dig = function(pos,player) + return apartment.can_dig( pos, player ); + end, + + after_dig_node = function(pos, oldnode, oldmetadata, digger) + return apartment.after_dig_node( pos, oldnode, oldmetadata, digger ); + end, + +}) + + +-- this one is not in the creative inventory +minetest.register_node("apartment:apartment_oocupied", { + drawtype = "nodebox", + description = "apartment management panel", +--- tiles = {"default_chest_top.png^door_steel.png"}, + tiles = {"default_steel_block.png","default_steel_block.png","default_steel_block.png","default_steel_block.png", + "default_steel_block.png","apartment_controls_occupied.png","default_steel_block.png"}, + paramtype = "light", + paramtype2 = "facedir", + light_source = 14, + groups = {cracky=2, not_in_creative_inventory=1 }, + node_box = { + type = "fixed", + fixed = { + { -0.5+(1/16), -0.5+(1/16), 0.5, 0.5-(1/16), 0.5-(1/16), 0.30}, + + } + }, + selection_box = { + type = "fixed", + fixed = { + { -0.5+(1/16), -0.5+(1/16), 0.5, 0.5-(1/16), 0.5-(1/16), 0.30}, + } + }, + + on_construct = function(pos) + return apartment.on_construct( pos ); + end, + + after_place_node = function(pos, placer) + return apartment.after_place_node( pos, placer ); + end, + + on_receive_fields = function( pos, formname, fields, player ) + return apartment.on_receive_fields(pos, formname, fields, player); + end, + + can_dig = function(pos,player) + return apartment.can_dig( pos, player ); + end, + + after_dig_node = function(pos, oldnode, oldmetadata, digger) + return apartment.after_dig_node( pos, oldnode, oldmetadata, digger ); + end, }) -- cgit v1.2.3