diff --git a/depends.txt b/depends.txt index 433156d..66ca057 100644 --- a/depends.txt +++ b/depends.txt @@ -6,3 +6,4 @@ building_blocks? asphalt? streets? moreblocks? +xpanes? \ No newline at end of file diff --git a/jailbars.lua b/jailbars.lua index 2bc6d66..8f99382 100644 --- a/jailbars.lua +++ b/jailbars.lua @@ -1,113 +1,16 @@ --- xjailbarss mod by xyz - -local function rshift(x, by) - return math.floor(x / 2 ^ by) -end - -local directions = { - {x = 1, y = 0, z = 0}, - {x = 0, y = 0, z = 1}, - {x = -1, y = 0, z = 0}, - {x = 0, y = 0, z = -1}, -} - -local function update_jailbars(pos) - if minetest.get_node(pos).name:find("castle:jailbars") == nil then - return - end - local sum = 0 - for i = 1, 4 do - local node = minetest.get_node({x = pos.x + directions[i].x, y = pos.y + directions[i].y, z = pos.z + directions[i].z}) - if minetest.registered_nodes[node.name].walkable ~= false then - sum = sum + 2 ^ (i - 1) - end - end - if sum == 0 then - sum = 15 - end - minetest.add_node(pos, {name = "castle:jailbars_"..sum}) -end - -local function update_nearby(pos) - for i = 1,4 do - update_jailbars({x = pos.x + directions[i].x, y = pos.y + directions[i].y, z = pos.z + directions[i].z}) - end -end - -local half_blocks = { - {0, -0.5, -0.06, 0.5, 0.5, 0.06}, - {-0.06, -0.5, 0, 0.06, 0.5, 0.5}, - {-0.5, -0.5, -0.06, 0, 0.5, 0.06}, - {-0.06, -0.5, -0.5, 0.06, 0.5, 0} -} - -local full_blocks = { - {-0.5, -0.5, -0.06, 0.5, 0.5, 0.06}, - {-0.06, -0.5, -0.5, 0.06, 0.5, 0.5} -} - -for i = 1, 15 do - local need = {} - local cnt = 0 - for j = 1, 4 do - if rshift(i, j - 1) % 2 == 1 then - need[j] = true - cnt = cnt + 1 - end - end - local take = {} - if need[1] == true and need[3] == true then - need[1] = nil - need[3] = nil - table.insert(take, full_blocks[1]) - end - if need[2] == true and need[4] == true then - need[2] = nil - need[4] = nil - table.insert(take, full_blocks[2]) - end - for k in pairs(need) do - table.insert(take, half_blocks[k]) - end - local texture = "castle_jailbars.png" - if cnt == 1 then - texture = "castle_jailbars.png" - end - minetest.register_node("castle:jailbars_"..i, { - drawtype = "nodebox", - tiles = {"castle_grey.png", "castle_grey.png", texture}, - paramtype = "light", - groups = {cracky=2}, - drop = "castle:jailbars", - node_box = { - type = "fixed", - fixed = take - }, - selection_box = { - type = "fixed", - fixed = take - } - }) -end - -minetest.register_node("castle:jailbars", { - description = "Jailbars", - tiles = {"castle_space.png"}, - inventory_image = "castle_jailbars.png", - wield_image = "castle_jailbars.png", - node_placement_prediction = "", - on_construct = update_jailbars -}) - -minetest.register_on_placenode(update_nearby) -minetest.register_on_dignode(update_nearby) - -minetest.register_craft({ - output = "castle:jailbars 12", - recipe = { - {"default:steel_ingot","","default:steel_ingot"}, +if minetest.get_modpath("xpanes") then + xpanes.register_pane("jailbars", { + description = "Jail Bars", + tiles = {"castle_jailbars.png"}, + drawtype = "airlike", + paramtype = "light", + textures = {"castle_jailbars.png", "castle_jailbars.png", "xpanes_space.png"}, + inventory_image = "castle_jailbars.png", + wield_image = "castle_jailbars.png", + sounds = default.node_sound_stone_defaults(), + groups = {cracky=1, pane=1}, + recipe = {{"default:steel_ingot","","default:steel_ingot"}, {"default:steel_ingot","default:steel_ingot","default:steel_ingot"}, - {"default:steel_ingot","","default:steel_ingot"}, - } -}) - + {"default:steel_ingot","","default:steel_ingot"}} + }) +end \ No newline at end of file