From 2dfc96ee155a5967a265f9854d46a9db3c2cb1d3 Mon Sep 17 00:00:00 2001 From: rainer Date: Thu, 12 Feb 2026 12:48:27 +0100 Subject: [PATCH] init; changed textures --- .editorconfig | 5 + .github/workflows/luacheck.yml | 17 ++ .luacheckrc | 27 ++ LICENSE.txt | 27 ++ README.md | 8 + components.lua | 423 ++++++++++++++++++++++++++++++ crafts.lua | 168 ++++++++++++ formspecs.lua | 90 +++++++ helpers.lua | 38 +++ hooks.lua | 61 +++++ init.lua | 350 ++++++++++++++++++++++++ mod.conf | 7 + screenshot.png | Bin 0 -> 98660 bytes settingtypes.txt | 14 + storage.lua | 33 +++ textures/elevator_box.png | Bin 0 -> 424 bytes textures/elevator_box_mcl.png | Bin 0 -> 209 bytes textures/elevator_motor.png | Bin 0 -> 702 bytes textures/elevator_motor_mcl.png | Bin 0 -> 373 bytes textures/elevator_shaft.png | Bin 0 -> 466 bytes textures/elevator_shaft_mcl.png | Bin 0 -> 209 bytes textures/elevator_steel_block.png | Bin 0 -> 350 bytes 22 files changed, 1268 insertions(+) create mode 100644 .editorconfig create mode 100644 .github/workflows/luacheck.yml create mode 100644 .luacheckrc create mode 100644 LICENSE.txt create mode 100644 README.md create mode 100644 components.lua create mode 100644 crafts.lua create mode 100644 formspecs.lua create mode 100644 helpers.lua create mode 100644 hooks.lua create mode 100644 init.lua create mode 100644 mod.conf create mode 100644 screenshot.png create mode 100644 settingtypes.txt create mode 100644 storage.lua create mode 100644 textures/elevator_box.png create mode 100644 textures/elevator_box_mcl.png create mode 100644 textures/elevator_motor.png create mode 100644 textures/elevator_motor_mcl.png create mode 100644 textures/elevator_shaft.png create mode 100644 textures/elevator_shaft_mcl.png create mode 100644 textures/elevator_steel_block.png diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..6e3c965 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,5 @@ +root = true + +[*] +indent_style = space +indent_size = 4 diff --git a/.github/workflows/luacheck.yml b/.github/workflows/luacheck.yml new file mode 100644 index 0000000..a03fe92 --- /dev/null +++ b/.github/workflows/luacheck.yml @@ -0,0 +1,17 @@ +name: luacheck + +on: [push] + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v1 + - name: apt + run: sudo apt-get install -y luarocks + - name: luacheck install + run: luarocks install --local luacheck + - name: luacheck run + run: $HOME/.luarocks/bin/luacheck ./ diff --git a/.luacheckrc b/.luacheckrc new file mode 100644 index 0000000..a52d708 --- /dev/null +++ b/.luacheckrc @@ -0,0 +1,27 @@ +unused_args = false + +ignore = { + "631", +} + +globals = { + "elevator", +} + +read_globals = { + -- Stdlib + string = {fields = {"split"}}, + table = {fields = {"copy", "getn"}}, + + -- Minetest + "minetest", + "core", + "vector", + "VoxelManip", + + -- deps + "default", "screwdriver", + "farming", "armor", + "mcl_core", "mcl_sounds", + "aurum", +} diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 0000000..18198e6 --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,27 @@ +ISC License + +Copyright (c) 2017 Beha + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + +---- +Elevator motor and elevator textures for MCL2 are based on "default_glass.png", +included with MCL2 game, original copyright: +"MIT License. + +The textures are taken from the Minecraft resource pack “Faithful 1.11” by +Vattic and xMrVizzy and contributers." + +Elevator motor design is (c) minertestdude, redistributed under MIT license. + +elevator_steel_block.png CC BY-SA 3.0 (https://github.com/minetest/minetest_game) \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..afc0f0c --- /dev/null +++ b/README.md @@ -0,0 +1,8 @@ +# Realtime Elevators for Minetest +[![ContentDB](https://content.minetest.net/packages/shacknetisp/elevator/shields/title/)](https://content.minetest.net/packages/shacknetisp/elevator/) + +## Dependencies +This mod has no dependencies. This mod supports MineClone 2 and Minetest Game with improved recipes with Technic and either homedecor/chains or farming redo. + +## Usage +Each shaft begins with a motor, and extends down through shaft and elevator nodes. Each elevator node can be used to travel to any other elevator node below the motor and through an unbroken shaft. Only one player can use each shaft at once. diff --git a/components.lua b/components.lua new file mode 100644 index 0000000..1f40c6e --- /dev/null +++ b/components.lua @@ -0,0 +1,423 @@ + +local phash = elevator.phash +local get_node = elevator.get_node + +local homedecor_path = minetest.get_modpath("homedecor") +local mineclone_path = core.get_modpath("mcl_core") and mcl_core +local default_path = core.get_modpath("default") and default +local aurum_path = core.get_modpath("aurum") and aurum + +local moditems = {} -- local table to hold substitutes + +-- Use homedecor's placeholder if possible. +if homedecor_path then + minetest.register_alias("elevator:placeholder", "homedecor:expansion_placeholder") +else + -- Placeholder node, in the style of homedecor. + minetest.register_node("elevator:placeholder", { + description = "Expansion Placeholder", + selection_box = { + type = "fixed", + fixed = {0, 0, 0, 0, 0, 0}, + }, + groups = { + not_in_creative_inventory=1 + }, + drawtype = "airlike", + paramtype = "light", + sunlight_propagates = true, + + walkable = false, + buildable_to = false, + is_ground_content = false, + + on_dig = function(pos, node, player) + minetest.remove_node(pos) + minetest.set_node(pos, {name="elevator:placeholder"}) + end + }) +end + +if mineclone_path then + moditems.el_shaft_groups = {pickaxey=1,axey=1,handy=1,swordy=1,transport=1,dig_by_piston=1} + moditems.el_motor_groups = {pickaxey=1,axey=1,handy=1,swordy=1,transport=1,dig_by_piston=1} + moditems.elevator_groups = {pickaxey=1,axey=1,handy=1,swordy=1,transport=1,dig_by_piston=1} + moditems.elevator_special_groups = {not_in_creative_inventory=1,pickaxey=1,axey=1,handy=1,swordy=1,transport=1,dig_by_piston=1} + moditems.sounds_stone = mcl_sounds.node_sound_stone_defaults + moditems.el_motor_gfx = "elevator_motor_mcl.png" + moditems.el_shaft_gfx = "elevator_shaft_mcl.png" + moditems.el_box_gfx = "elevator_box_mcl.png" + moditems.steel_block_image = "default_steel_block.png" +elseif default_path then + moditems.el_shaft_groups = {cracky=2,oddly_breakable_by_hand=0} -- removing ability to destroy by hand to prevent accidental breakage of whole elevators + moditems.el_motor_groups = {cracky=1} + moditems.elevator_groups = {cracky=1,choppy=1,snappy=1} + moditems.elevator_special_groups = {not_in_creative_inventory=1} + moditems.sounds_stone = default.node_sound_stone_defaults + moditems.el_motor_gfx = "elevator_motor.png" + moditems.el_shaft_gfx = "elevator_shaft.png" + moditems.el_box_gfx = "elevator_box.png" + moditems.steel_block_image = "default_steel_block.png" +elseif aurum_path then + moditems.el_shaft_groups = {dig_pick = 2} + moditems.el_motor_groups = {dig_pick = 1} + moditems.elevator_groups = {dig_pick = 1} + moditems.elevator_special_groups = {not_in_creative_inventory=1} + moditems.sounds_stone = aurum.sounds.stone + moditems.el_motor_gfx = "elevator_motor.png" + moditems.el_shaft_gfx = "elevator_shaft.png" + moditems.el_box_gfx = "elevator_box.png" + moditems.steel_block_image = "aurum_ore_white.png^[colorize:#cbcdcd:255^aurum_ore_bumps.png^aurum_ore_block.png" +else + -- fallback for unknown games + moditems.el_shaft_groups = {cracky=2, oddly_breakable_by_hand=0} + moditems.el_motor_groups = {cracky=1} + moditems.elevator_groups = {cracky=1, choppy=1, snappy=1} + moditems.elevator_special_groups = {not_in_creative_inventory=1} + moditems.sounds_stone = function() end + moditems.el_motor_gfx = "elevator_motor.png" + moditems.el_shaft_gfx = "elevator_shaft.png" + moditems.el_box_gfx = "elevator_box.png" + moditems.steel_block_image = "elevator_steel_block.png" +end + +if minetest.global_exists("screwdriver") then + moditems.on_rotate_disallow = screwdriver.disallow +end + +minetest.register_node("elevator:shaft", { + description = "Elevator Shaft", + _doc_items_longdesc = "An elevator shaft that connects elevators to other elevators and motors.", + _doc_items_usagehelp = "Building a vertical stack of elevators and shafts with an elevator motor on top allows vertical transportation.", + tiles = { moditems.el_shaft_gfx }, + drawtype = "nodebox", + use_texture_alpha = "clip", + paramtype = "light", + on_rotate = moditems.on_rotate_disallow, + sunlight_propagates = true, + groups = moditems.el_shaft_groups, + is_ground_content = false, + sounds = moditems.sounds_stone(), + climbable = true, + node_box = { + type = "fixed", + fixed = { + {-8/16,-8/16,-8/16,-7/16,8/16,8/16}, + {7/16,-8/16,-8/16,8/16,8/16,8/16}, + {-7/16,-8/16,-8/16,7/16,8/16,-7/16}, + {-7/16,-8/16,8/16,7/16,8/16,7/16}, + }, + }, + collisionbox = { + type = "fixed", + fixed = { + {-8/16,-8/16,-8/16,-7/16,8/16,8/16}, + {7/16,-8/16,-8/16,8/16,8/16,8/16}, + {-7/16,-8/16,-8/16,7/16,8/16,-7/16}, + {-7/16,-8/16,8/16,7/16,8/16,7/16}, + }, + }, + after_place_node = function(pos) + -- We might have connected a motor above to an elevator below. + elevator.build_motor(elevator.locate_motor(pos)) + end, + on_destruct = function(pos) + -- Remove boxes and deactivate elevators below us. + elevator.unbuild(pos, 1) + end, + _mcl_blast_resistance = 15, -- mineclone2 specific + _mcl_hardness = 5, -- mineclone2 specific + }) + +minetest.register_node("elevator:motor", { + description = "Elevator Motor", + _doc_items_longdesc = "The engine powering an elevator shaft. Placed at the top.", + _doc_items_usagehelp = "Place the motor on the top of a stack of elevators and elevator shafts. The elevators will activate and you can then use them.", + tiles = { + moditems.steel_block_image, + moditems.steel_block_image, + moditems.el_motor_gfx, + moditems.el_motor_gfx, + moditems.el_motor_gfx, + moditems.el_motor_gfx, + }, + groups = moditems.el_motor_groups, + is_ground_content = false, + sounds = moditems.sounds_stone(), + after_place_node = function(pos, placer, itemstack) + -- Set up the motor table. + elevator.motors[phash(pos)] = { + elevators = {}, + pnames = {}, + labels = {}, + } + elevator.save_elevator() + elevator.build_motor(phash(pos)) + end, + on_destruct = function(pos) + -- Destroy everything related to this motor. + elevator.boxes[phash(pos)] = nil + elevator.motors[phash(pos)] = nil + elevator.save_elevator() + end, + _mcl_blast_resistance = 15, -- mineclone2 specific + _mcl_hardness = 5, -- mineclone2 specific +}) + +-- Box of the active entitity. +local box_box = { + { 0.48, -0.5,-0.5, 0.5, 1.5, 0.5}, + {-0.5 , -0.5, 0.48, 0.48, 1.5, 0.5}, + {-0.5, -0.5,-0.5 ,-0.48, 1.5, 0.5}, + {-0.5 , -0.5, -0.48, 0.5, 1.5, -0.5}, + { -0.5,-0.5,-0.5,0.5,-0.48, 0.5}, + { -0.5, 1.45,-0.5,0.5, 1.5, 0.5}, +} + +-- Elevator box node. Not intended to be placeable. +minetest.register_node("elevator:elevator_box", { + description = "Elevator", + drawtype = "nodebox", + paramtype = 'light', + paramtype2 = "facedir", + wield_scale = {x=0.6, y=0.6, z=0.6}, + + selection_box = { + type = "fixed", + fixed = { -0.5, -0.5, -0.5, 0.5, 1.5, 0.5 } + }, + + collision_box = { + type = "fixed", + fixed = box_box, + }, + + node_box = { + type = "fixed", + fixed = box_box, + }, + + tiles = { + moditems.steel_block_image, + moditems.steel_block_image, + moditems.el_box_gfx, + moditems.el_box_gfx, + moditems.el_box_gfx, + moditems.el_box_gfx, + }, + groups = moditems.elevator_special_groups, + is_ground_content = false, + use_texture_alpha = "clip", + + light_source = 4, + _mcl_blast_resistance = 15, -- mineclone2 specific + _mcl_hardness = 5, -- mineclone2 specific +}) + +for _,mode in ipairs({"on", "off"}) do + local nodename = "elevator:elevator_"..mode + local on = (mode == "on") + local box + local cbox + local groups = table.copy(moditems.elevator_groups) + if on then + -- Active elevators have a ceiling and floor. + box = { + + { 0.48, -0.5,-0.5, 0.5, 1.5, 0.5}, + {-0.5 , -0.5, 0.48, 0.48, 1.5, 0.5}, + {-0.5, -0.5,-0.5 ,-0.48, 1.5, 0.5}, + + { -0.5,-0.5,-0.5,0.5,-0.48, 0.5}, + { -0.5, 1.45,-0.5,0.5, 1.5, 0.5}, + } + cbox = table.copy(box) + -- But you can enter them from the top. + cbox[5] = nil + groups.not_in_creative_inventory = 1 + else + -- Inactive elevators are almost like shafts. + box = { + + { 0.48, -0.5,-0.5, 0.5, 1.5, 0.5}, + {-0.5 , -0.5, 0.48, 0.48, 1.5, 0.5}, + {-0.5, -0.5,-0.5 ,-0.48, 1.5, 0.5}, + {-0.5 , -0.5, -0.48, 0.5, 1.5, -0.5}, + } + cbox = box + end + minetest.register_node(nodename, { + description = "Elevator", + drawtype = "nodebox", + sunlight_propagates = false, + paramtype = "light", + paramtype2 = "facedir", + on_rotate = moditems.on_rotate_disallow, + climbable = true, + + _doc_items_longdesc = on and "An active elevator, ready for transporting." or "An inactive elevator, not connected to a motor.", + _doc_items_usagehelp = on and "Step inside this elevator and use it (right-click) to be transported to any other elevator along the shaft." or "This elevator is inactive; it is disconnected from a motor. It may be extended with shafts and other elevators in a vertical line with an elevator motor on top to power the whole shaft and enable transport.", + + selection_box = { + type = "fixed", + fixed = box, + }, + + collision_box = { + type = "fixed", + fixed = cbox, + }, + + node_box = { + type = "fixed", + fixed = box, + }, + + tiles = on and { + moditems.steel_block_image, + moditems.steel_block_image, + moditems.el_box_gfx, + moditems.el_box_gfx, + moditems.el_box_gfx, + moditems.el_box_gfx, + } or { + moditems.el_box_gfx, + moditems.el_box_gfx, + moditems.el_box_gfx, + moditems.el_box_gfx, + moditems.el_box_gfx, + moditems.el_box_gfx, + }, + use_texture_alpha = "clip", + + groups = groups, + is_ground_content = false, + drop = "elevator:elevator_off", + + -- Emit a bit of light when active. + light_source = (on and 4 or nil), + + after_place_node = function(pos, placer, itemstack) + local meta = minetest.get_meta(pos) + meta:set_int("version", elevator.VERSION) + + -- Add a placeholder to avoid nodes being placed in the top. + local p = vector.add(pos, {x=0, y=1, z=0}) + local p2 = minetest.dir_to_facedir(placer:get_look_dir()) + minetest.set_node(p, {name="elevator:placeholder", paramtype2="facedir", param2=p2}) + + -- Try to build a motor above. + local motor = elevator.locate_motor(pos) + if motor then + elevator.build_motor(motor) + end + end, + + after_dig_node = function(pos, node, meta, digger) + elevator.unbuild(pos, 2) + end, + + on_place = function(itemstack, placer, pointed_thing) + local pos = pointed_thing.above + local node = minetest.get_node(vector.add(pos, {x=0, y=1, z=0})) + if (node ~= nil and node.name ~= "air" and node.name ~= "elevator:placeholder") then + return + end + return minetest.item_place(itemstack, placer, pointed_thing) + end, + + on_rightclick = function(pos, node, sender, itemstack, pointed_thing) + if not sender or not sender:is_player() then + return + end + -- When the player is holding elevator components, just place them instead of opening the formspec. + if ({ + ["elevator:elevator_off"] = true, + ["elevator:shaft"] = true, + ["elevator:motor"] = true, + })[sender:get_wielded_item():get_name()] then + return core.item_place_node(itemstack, sender, pointed_thing) + end + local formspec + local meta = minetest.get_meta(pos) + elevator.formspecs[sender:get_player_name()] = {pos} + local motorhash = meta:get_string("motor") + if on and elevator.motors[motorhash] then + if vector.distance(sender:get_pos(), pos) > 1 or minetest.get_node(sender:get_pos()).name ~= nodename then + minetest.chat_send_player(sender:get_player_name(), "You are not inside the booth.") + return + end + -- Build the formspec from the motor table. + local tpnames = {} + local tpnames_l = {} + local motor = elevator.motors[motorhash] + for ji,jv in ipairs(motor.pnames) do + if tonumber(jv) ~= pos.y then + table.insert(tpnames, jv) + table.insert(tpnames_l, (motor.labels[ji] and motor.labels[ji] ~= "") and (jv.." - "..minetest.formspec_escape(motor.labels[ji])) or jv) + end + end + elevator.formspecs[sender:get_player_name()] = {pos, tpnames} + if #tpnames > 0 then + if not minetest.is_protected(pos, sender:get_player_name()) then + formspec = "size[4,6]" + .."label[0,0;Click once to travel.]" + .."textlist[-0.1,0.5;4,4;target;"..table.concat(tpnames_l, ",").."]" + .."field[0.25,5.25;4,0;label;;"..minetest.formspec_escape(meta:get_string("label")).."]" + .."button_exit[-0.05,5.5;4,1;setlabel;Set label]" + else + formspec = "size[4,4.4]" + .."label[0,0;Click once to travel.]" + .."textlist[-0.1,0.5;4,4;target;"..table.concat(tpnames_l, ",").."]" + end + else + if not minetest.is_protected(pos, sender:get_player_name()) then + formspec = "size[4,2]" + .."label[0,0;No targets available.]" + .."field[0.25,1.25;4,0;label;;"..minetest.formspec_escape(meta:get_string("label")).."]" + .."button_exit[-0.05,1.5;4,1;setlabel;Set label]" + else + formspec = "size[4,0.4]" + .."label[0,0;No targets available.]" + end + end + minetest.show_formspec(sender:get_player_name(), "elevator:elevator", formspec) + elseif not elevator.motors[motorhash] then + if not minetest.is_protected(pos, sender:get_player_name()) then + formspec = "size[4,2]" + .."label[0,0;This elevator is inactive.]" + .."field[0.25,1.25;4,0;label;;"..minetest.formspec_escape(meta:get_string("label")).."]" + .."button_exit[-0.05,1.5;4,1;setlabel;Set label]" + else + formspec = "size[4,0.4]" + .."label[0,0;This elevator is inactive.]" + end + minetest.show_formspec(sender:get_player_name(), "elevator:elevator", formspec) + elseif elevator.boxes[motorhash] then + if not minetest.is_protected(pos, sender:get_player_name()) then + formspec = "size[4,2]" + .."label[0,0;This elevator is in use.]" + .."field[0.25,1.25;4,0;label;;"..minetest.formspec_escape(meta:get_string("label")).."]" + .."button_exit[-0.05,1.5;4,1;setlabel;Set label]" + else + formspec = "size[4,0.4]" + .."label[0,0;This elevator is in use.]" + end + minetest.show_formspec(sender:get_player_name(), "elevator:elevator", formspec) + end + end, + + on_destruct = function(pos) + local p = vector.add(pos, {x=0, y=1, z=0}) + if get_node(p).name == "elevator:placeholder" then + minetest.remove_node(p) + end + end, + + _mcl_blast_resistance = 15, -- mineclone2 specific + _mcl_hardness = 5, -- mineclone2 specific + }) +end + +-- Compatability with an older version. +minetest.register_alias("elevator:elevator", "elevator:elevator_off") diff --git a/crafts.lua b/crafts.lua new file mode 100644 index 0000000..dcbd062 --- /dev/null +++ b/crafts.lua @@ -0,0 +1,168 @@ +-- Detect optional mods. +local technic_path = minetest.get_modpath("technic") +local chains_path = minetest.get_modpath("chains") +local mineclone_path = core.get_modpath("mcl_core") and mcl_core +local aurum_path = core.get_modpath("aurum") and aurum +local basic_materials_path = core.get_modpath("basic_materials") + +if mineclone_path then + minetest.register_craft({ + output = "elevator:elevator_off", + recipe = { + {"mcl_core:iron_ingot", "mcl_core:paper", "mcl_core:iron_ingot"}, + {"mcl_core:iron_ingot", "mcl_core:gold_ingot", "mcl_core:iron_ingot"}, + {"mcl_core:clay_lump", "group:glass", "mcl_core:clay_lump"}, + }, + }) + + minetest.register_craft({ + output = "elevator:shaft", + recipe = { + {"mcl_core:iron_ingot", "group:wood"}, + {"group:wood", "mcl_core:iron_ingot"}, + }, + }) + + minetest.register_craft({ + output = "elevator:motor", + recipe = { + {"mcl_core:gold_ingot", "mcl_core:iron_ingot", "mcl_core:gold_ingot"}, + {"mcl_core:ironblock", "mcl_furnaces:furnace", "mcl_core:ironblock"}, + {"mcl_core:paper", "mcl_core:gold_ingot", "mcl_core:paper"} + }, + }) +elseif aurum_path then + minetest.register_craft({ + output = "elevator:elevator_off", + recipe = { + {"aurum_ore:iron_ingot", "group:glass", "aurum_ore:iron_ingot"}, + {"aurum_ore:iron_ingot", "aurum_ore:mana_bean", "aurum_ore:iron_ingot"}, + {"aurum_ore:iron_ingot", "group:glass", "aurum_ore:iron_ingot"}, + }, + }) + + minetest.register_craft({ + output = "elevator:shaft", + recipe = { + {"group:glass", "aurum_ore:iron_ingot"}, + {"group:wood", "group:glass"}, + }, + }) + + minetest.register_craft({ + output = "elevator:motor", + recipe = { + {"aurum_ore:gold_ingot", "aurum_ore:iron_ingot", "aurum_ore:gold_ingot"}, + {"aurum_ore:iron_block", "aurum_cook:oven", "aurum_ore:iron_block"}, + {"aurum_ore:gold_ingot", "aurum_ore:mana_bean", "aurum_ore:gold_ingot"} + }, + }) +elseif technic_path and chains_path then + minetest.register_craft({ + output = "elevator:elevator_off", + recipe = { + {"technic:cast_iron_ingot", "chains:chain", "technic:cast_iron_ingot"}, + {"technic:cast_iron_ingot", "default:mese_crystal", "technic:cast_iron_ingot"}, + {"technic:stainless_steel_ingot", "default:glass", "technic:stainless_steel_ingot"}, + }, + }) + + minetest.register_craft({ + output = "elevator:shaft", + recipe = { + {"technic:cast_iron_ingot", "default:glass"}, + {"default:glass", "glooptest:chainlink"}, + }, + }) + + minetest.register_craft({ + output = "elevator:motor", + recipe = { + {"default:diamond", "technic:control_logic_unit", "default:diamond"}, + {"default:steelblock", "technic:motor", "default:steelblock"}, + {"chains:chain", "default:diamond", "chains:chain"} + }, + }) +elseif technic_path and basic_materials_path then + minetest.register_craft({ + output = "elevator:elevator_off", + recipe = { + {"technic:cast_iron_ingot", "basic_materials:chain_steel", "technic:cast_iron_ingot"}, + {"technic:cast_iron_ingot", "default:mese_crystal", "technic:cast_iron_ingot"}, + {"technic:stainless_steel_ingot", "default:glass", "technic:stainless_steel_ingot"}, + }, + }) + + minetest.register_craft({ + output = "elevator:shaft", + recipe = { + {"technic:cast_iron_ingot", "default:glass"}, + {"default:glass", "basic_materials:chain_steel"}, + }, + }) + + minetest.register_craft({ + output = "elevator:motor", + recipe = { + {"default:diamond", "technic:control_logic_unit", "default:diamond"}, + {"default:steelblock", "technic:motor", "default:steelblock"}, + {"basic_materials:chain_steel", "default:diamond", "basic_materials:chain_steel"} + }, + }) +elseif technic_path and farming and farming.mod and ( farming.mod == "redo" or farming.mod == "undo" ) then + -- add alternative recipe with hemp rope + minetest.register_craft({ + output = "elevator:elevator_off", + recipe = { + {"technic:cast_iron_ingot", "farming:hemp_rope", "technic:cast_iron_ingot"}, + {"technic:cast_iron_ingot", "default:mese_crystal", "technic:cast_iron_ingot"}, + {"technic:stainless_steel_ingot", "default:glass", "technic:stainless_steel_ingot"}, + }, + }) + + minetest.register_craft({ + output = "elevator:shaft", + recipe = { + {"technic:cast_iron_ingot", "default:glass"}, + {"default:glass", "farming:hemp_rope"}, + }, + }) + + minetest.register_craft({ + output = "elevator:motor", + recipe = { + {"default:diamond", "technic:control_logic_unit", "default:diamond"}, + {"default:steelblock", "technic:motor", "default:steelblock"}, + {"farming:hemp_rope", "default:diamond", "farming:hemp_rope"} + }, + }) + +-- Recipes without technic & chains required. +-- Recipes for default dependency fallback. +else + minetest.register_craft({ + output = "elevator:elevator_off", + recipe = { + {"default:steel_ingot", "farming:cotton", "default:steel_ingot"}, + {"default:steel_ingot", "default:mese_crystal", "default:steel_ingot"}, + {"xpanes:pane_flat", "default:glass", "xpanes:pane_flat"}, + }, + }) + + minetest.register_craft({ + output = "elevator:shaft", + recipe = { + {"default:steel_ingot", "default:obsidian_glass"}, + {"default:obsidian_glass", "default:steel_ingot"}, + }, + }) + + minetest.register_craft({ + output = "elevator:motor", + recipe = { + {"default:diamond", "default:copper_ingot", "default:diamond"}, + {"default:steelblock", "default:furnace", "default:steelblock"}, + {"farming:cotton", "default:diamond", "farming:cotton"} + }, + }) +end diff --git a/formspecs.lua b/formspecs.lua new file mode 100644 index 0000000..ecb6ebe --- /dev/null +++ b/formspecs.lua @@ -0,0 +1,90 @@ + +local punhash = elevator.punhash + +minetest.register_on_player_receive_fields(function(sender, formname, fields) + if formname ~= "elevator:elevator" then + return + end + local pos = elevator.formspecs[sender:get_player_name()] and elevator.formspecs[sender:get_player_name()][1] or nil + if not pos then + return true + end + local meta = minetest.get_meta(pos) + if fields.setlabel then + if minetest.is_protected(pos, sender:get_player_name()) then + return true + end + meta:set_string("label", fields.label) + meta:set_string("infotext", fields.label) + -- Rebuild the elevator shaft so the other elevators can read this label. + local motorhash = meta:get_string("motor") + elevator.build_motor(elevator.motors[motorhash] and motorhash or elevator.locate_motor(pos)) + return true + end + -- Double check if it's ok to go. + if vector.distance(sender:get_pos(), pos) > 1 then + return true + end + if fields.target then + local closeformspec = "" + -- HACK: With player information extensions enabled, we can check if closing formspecs are now allowed. This is specifically used on Survival in Ethereal. + local pi = minetest.get_player_information(sender:get_player_name()) + if (not (pi.major == 0 and pi.minor == 4 and pi.patch == 15)) and (pi.protocol_version or 29) < 29 then + closeformspec = "size[4,2] label[0,0;You are now using the elevator.\nUpgrade Minetest to avoid this dialog.] button_exit[0,1;4,1;close;Close]" + end + -- End hacky HACK. + minetest.after(0.2, minetest.show_formspec, sender:get_player_name(), "elevator:elevator", closeformspec) + -- Ensure we're connected to a motor. + local motorhash = meta:get_string("motor") + local motor = elevator.motors[motorhash] + if not motor then + motorhash = elevator.locate_motor(pos) + motor = elevator.motors[motorhash] + if motor then + meta:set_string("motor", "") + elevator.build_motor(motorhash) + minetest.chat_send_player(sender:get_player_name(), "Recalibrated to a new motor, please try again.") + return true + end + end + if not motor then + minetest.chat_send_player(sender:get_player_name(), "This elevator is not attached to a motor.") + return true + end + if not elevator.formspecs[sender:get_player_name()][2] or not elevator.formspecs[sender:get_player_name()][2][minetest.explode_textlist_event(fields.target).index] then + return true + end + -- Locate our target elevator. + local target = nil + local selected_target = elevator.formspecs[sender:get_player_name()][2][minetest.explode_textlist_event(fields.target).index] + for i,v in ipairs(motor.pnames) do + if v == selected_target then + target = punhash(motor.elevators[i]) + end + end + -- Found the elevator? Then go! + if target then + -- Final check. + if elevator.boxes[motorhash] then + minetest.chat_send_player(sender:get_player_name(), "This elevator is in use.") + return true + end + local obj = elevator.create_box(motorhash, pos, target, sender) + -- Teleport anyone standing within an on elevator out, or they'd fall through the off elevators. + for _,p in ipairs(motor.elevators) do + for _,object in ipairs(minetest.get_objects_inside_radius(punhash(p), 0.6)) do + if object.is_player and object:is_player() then + if object:get_player_name() ~= obj:get_luaentity().attached then + elevator.teleport_player_from_elevator(object) + end + end + end + end + else + minetest.chat_send_player(sender:get_player_name(), "This target is invalid.") + return true + end + return true + end + return true +end) diff --git a/helpers.lua b/helpers.lua new file mode 100644 index 0000000..5215c1a --- /dev/null +++ b/helpers.lua @@ -0,0 +1,38 @@ + +-- Try to teleport player away from any closed (on) elevator node. +elevator.teleport_player_from_elevator = function(player) + local function solid(pos) + if not minetest.registered_nodes[minetest.get_node(pos).name] then + return true + end + return minetest.registered_nodes[minetest.get_node(pos).name].walkable + end + local pos = vector.round(player:get_pos()) + local node = minetest.get_node(pos) + -- elevator_off is like a shaft, so the player would already be falling. + if node.name == "elevator:elevator_on" then + local front = vector.subtract(pos, minetest.facedir_to_dir(node.param2)) + local front_above = vector.add(front, {x=0, y=1, z=0}) + -- local front_below = vector.subtract(front, {x=0, y=1, z=0}) + -- If the front isn't solid, it's ok to teleport the player. + if not solid(front) and not solid(front_above) then + player:set_pos(front) + end + end +end + +elevator.phash = function(pos) + return minetest.pos_to_string(pos) +end + +elevator.punhash = function(pos) + return minetest.string_to_pos(pos) +end + +-- Helper function to read unloaded nodes. +elevator.get_node = function(pos) + local node = minetest.get_node_or_nil(pos) + if node then return node end + local _,_ = VoxelManip():read_from_map(pos, pos) + return minetest.get_node_or_nil(pos) +end diff --git a/hooks.lua b/hooks.lua new file mode 100644 index 0000000..af84b43 --- /dev/null +++ b/hooks.lua @@ -0,0 +1,61 @@ + +-- Globalstep timer. +local time = 0 + +minetest.register_globalstep(function(dtime) + -- Don't want to run this too often. + time = time + dtime + if time < 0.5 then + return + end + time = 0 + -- Only count riders who are still logged in. + local newriding = {} + for _,p in ipairs(minetest.get_connected_players()) do + local pos = p:get_pos() + local name = p:get_player_name() + newriding[name] = elevator.riding[name] + -- If the player is indeed riding, update their position. + if newriding[name] then + newriding[name].pos = pos + end + end + elevator.riding = newriding + for name,r in pairs(elevator.riding) do + -- If the box is no longer loaded or existent, create another. + local ok = r.box and r.box.get_pos and r.box:get_pos() and r.box:get_luaentity() and r.box:get_luaentity().attached == name + if not ok then + minetest.log("action", "[elevator] "..minetest.pos_to_string(r.pos).." created due to lost rider.") + minetest.after(0, elevator.create_box, r.motor, r.pos, r.target, minetest.get_player_by_name(name)) + end + end + -- Ensure boxes are deleted after seconds if there are no players nearby. + for motor,obj in pairs(elevator.boxes) do + if type(obj) ~= "table" then + return + end + elevator.lastboxes[motor] = elevator.lastboxes[motor] and math.min(elevator.lastboxes[motor], elevator.PTIMEOUT) or elevator.PTIMEOUT + elevator.lastboxes[motor] = math.max(elevator.lastboxes[motor] - 1, 0) + local pos = obj:get_pos() + if pos then + for _,object in ipairs(minetest.get_objects_inside_radius(pos, 5)) do + if object.is_player and object:is_player() then + elevator.lastboxes[motor] = elevator.PTIMEOUT + break + end + end + if elevator.lastboxes[motor] < 1 then + minetest.log("action", "[elevator] "..minetest.pos_to_string(pos).." broke due to lack of players.") + elevator.boxes[motor] = false + end + else + minetest.log("action", "[elevator] "..minetest.pos_to_string(pos).." broke due to lack of position during player check.") + elevator.boxes[motor] = false + end + end +end) + +minetest.register_on_leaveplayer(function(player) + -- We don't want players potentially logging into open elevators. + elevator.teleport_player_from_elevator(player) +end) diff --git a/init.lua b/init.lua new file mode 100644 index 0000000..4ed0b12 --- /dev/null +++ b/init.lua @@ -0,0 +1,350 @@ +-- Detect optional mods. +local armor_path = minetest.get_modpath("3d_armor") + +-- global runtime storage for data and references +-- contains .motors loaded from mod storage +-- runtime variables and api functions +elevator = { + SPEED = tonumber(minetest.settings:get("elevator_speed")) or 10, -- Initial speed of a box. + ACCEL = tonumber(minetest.settings:get("elevator_accel")) or 0.1, -- Acceleration of a box. + VISUAL_INCREASE = 1.75, + VERSION = 8, -- Elevator interface/database version. + PTIMEOUT = tonumber(minetest.settings:get("elevator_time")) or 120, -- Maximum time a box can go without players nearby. + SLOW_DIST = tonumber(minetest.settings:get("elevator_slow_dist")) or 16, + SLOW_SPEED_FACTOR = tonumber(minetest.settings:get("elevator_slow_speed_factor")) or 0.11, + boxes = {}, -- Elevator boxes in action. + lastboxes = {}, -- Player near box timeout. + riding = {}, -- Players riding boxes. + formspecs = {}, -- Player formspecs. +} + +local MP = minetest.get_modpath(minetest.get_current_modname()) +dofile(MP .. "/helpers.lua") +dofile(MP .. "/storage.lua") +dofile(MP .. "/crafts.lua") +dofile(MP .. "/components.lua") +dofile(MP .. "/hooks.lua") +dofile(MP .. "/formspecs.lua") + +local phash = elevator.phash +local punhash = elevator.punhash +local get_node = elevator.get_node + +-- Cause to ride beginning at and targetting . +elevator.create_box = function(motorhash, pos, target, sender) + -- First create the box. + local obj = minetest.add_entity(pos, "elevator:box") + obj:set_pos(pos) + -- Attach the player. + sender:set_pos(pos) + sender:set_attach(obj, "", {x=0, y=9, z=0}, {x=0, y=0, z=0}) + sender:set_eye_offset({x=0, y=-9, z=0},{x=0, y=-9, z=0}) + sender:set_properties({visual_size = {x=elevator.VISUAL_INCREASE, y=elevator.VISUAL_INCREASE}}) + if armor_path then + armor:update_player_visuals(sender) + end + -- Set the box properties. + obj:get_luaentity().motor = motorhash + obj:get_luaentity().uid = math.floor(math.random() * 1000000) + obj:get_luaentity().attached = sender:get_player_name() + obj:get_luaentity().start = pos + obj:get_luaentity().target = target + obj:get_luaentity().halfway = {x=pos.x, y=(pos.y+target.y)/2, z=pos.z} + obj:get_luaentity().vmult = (target.y < pos.y) and -1 or 1 + + -- FIX for "overshooting" + local delta_y = math.abs(pos.y - target.y) + local speed = elevator.SPEED + if delta_y < elevator.SLOW_DIST then + speed = elevator.SPEED * elevator.SLOW_SPEED_FACTOR + end + + -- Set the speed. + obj:set_velocity({x=0, y=speed*obj:get_luaentity().vmult, z=0}) + obj:set_acceleration({x=0, y=elevator.ACCEL*obj:get_luaentity().vmult, z=0}) + + -- Set the tables. + elevator.boxes[motorhash] = obj + elevator.riding[sender:get_player_name()] = { + motor = motorhash, + pos = pos, + target = target, + box = obj, + } + return obj +end + +-- Starting from , locate a motor hash. +elevator.locate_motor = function(pos) + local p = vector.new(pos) + while true do + local node = get_node(p) + if node.name == "elevator:elevator_on" or node.name == "elevator:elevator_off" then + p.y = p.y + 2 + elseif node.name == "elevator:shaft" then + p.y = p.y + 1 + elseif node.name == "elevator:motor" then + return phash(p) + else + return nil + end + end +end + +elevator.build_motor = function(hash) + local need_saving = false + local motor = elevator.motors[hash] + -- Just ignore motors that don't exist. + if not motor then + return + end + local p = punhash(hash) + -- And ignore motors that aren't motors. + if get_node(p).name ~= "elevator:motor" then + return + end + p.y = p.y - 1 + motor.elevators = {} + motor.pnames = {} + motor.labels = {} + -- Run down through the shaft, storing information about elevators. + while true do + local next_node = get_node(p) + if next_node.name == "elevator:shaft" then + -- Shaft, just keep going down. + p.y = p.y - 1 + else + -- Wasn't shaft. Go down one, to skip placeholders, and then test for elevators. + p.y = p.y - 1 + local elevator_node = get_node(p) + if elevator_node.name == "elevator:elevator_on" or elevator_node.name == "elevator:elevator_off" then + -- Was elevator, insert into table and continue. + table.insert(motor.elevators, phash(p)) + table.insert(motor.pnames, tostring(p.y)) + table.insert(motor.labels, "") + p.y = p.y - 1 + need_saving = true + else + -- Was no elevator, this is the end of the shaft. + break + end + end + end + -- Set the elevators fully. + for i,m in ipairs(motor.elevators) do + local pos = punhash(m) + local meta = minetest.get_meta(pos) + meta:set_int("version", elevator.VERSION) + if meta:get_string("motor") ~= hash then + elevator.build_motor(meta:get_string("motor")) + end + motor.labels[i] = meta:get_string("label") + meta:set_string("motor", hash) + if motor.labels[i] ~= meta:get_string("infotext") then + meta:set_string("infotext", motor.labels[i]) + end + end + if need_saving then + elevator.save_elevator() + end +end + +elevator.unbuild = function(pos, add) + local p = table.copy(pos) + p.y = p.y - 1 + -- Loop down through the network, set any elevators below this to the off position. + while true do + if get_node(p).name == "elevator:shaft" then + p.y = p.y - 1 + else + p.y = p.y - 1 + local elevator_node = get_node(p) + if elevator_node.name == "elevator:elevator_on" or elevator_node.name == "elevator:elevator_off" then + local meta = minetest.get_meta(p) + meta:set_string("motor", "") + p.y = p.y - 1 + else + break + end + end + end + -- After a short delay, build the motor and handle box removal. + minetest.after(0.01, function(p2) + if not p2 or not add then + return + end + p2.y = p2.y + add + local motorhash = elevator.locate_motor(p2) + elevator.build_motor(motorhash) + -- If there's a box below this point, break it. + if elevator.boxes[motorhash] and elevator.boxes[motorhash]:get_pos() and p2.y >= elevator.boxes[motorhash]:get_pos().y then + elevator.boxes[motorhash] = nil + end + -- If the box does not exist, just clear it. + if elevator.boxes[motorhash] and not elevator.boxes[motorhash]:get_pos() then + elevator.boxes[motorhash] = nil + end + end, table.copy(pos)) +end + +-- Ensure an elevator is up to the latest version. +local function upgrade_elevator(pos, meta) + if meta:get_int("version") ~= elevator.VERSION then + minetest.log("action", "[elevator] Updating elevator with old version at "..minetest.pos_to_string(pos)) + minetest.after(0, function() elevator.build_motor(elevator.locate_motor(pos)) end) + meta:set_int("version", elevator.VERSION) + meta:set_string("formspec", "") + meta:set_string("infotext", meta:get_string("label")) + end +end + +-- Convert off to on when applicable. +local offabm = function(pos, node) + local meta = minetest.get_meta(pos) + upgrade_elevator(pos, meta) + if not elevator.boxes[meta:get_string("motor")] and elevator.motors[meta:get_string("motor")] then + node.name = "elevator:elevator_on" + minetest.swap_node(pos, node) + end +end + +minetest.register_abm({ + nodenames = {"elevator:elevator_off"}, + interval = 1, + chance = 1, + action = offabm, + label = "Elevator (Off)", +}) + +-- Convert on to off when applicable. +minetest.register_abm({ + nodenames = {"elevator:elevator_on"}, + interval = 1, + chance = 1, + action = function(pos, node) + local meta = minetest.get_meta(pos) + upgrade_elevator(pos, meta) + if elevator.boxes[meta:get_string("motor")] or not elevator.motors[meta:get_string("motor")] then + node.name = "elevator:elevator_off" + minetest.swap_node(pos, node) + end + end, + label = "Elevator (On)", +}) + +-- Remove the player from self, and teleport them to pos if specified. +local function detach(self, pos) + local player = minetest.get_player_by_name(self.attached) + local attached = player:get_attach() + if not attached or attached:get_luaentity().uid ~= self.uid then + return + end + player:set_detach() + player:set_eye_offset({x=0, y=0, z=0},{x=0, y=0, z=0}) + player:set_properties({visual_size = {x=1, y=1}}) + if armor_path then + armor:update_player_visuals(player) + end + if pos then + player:set_pos(pos) + minetest.after(0.1, function(pl, p) + pl:set_pos(p) + end, player, pos) + end + elevator.riding[self.attached] = nil +end + +local box_entity = { + physical = false, + collisionbox = {0,0,0,0,0,0}, + visual = "wielditem", + visual_size = {x=1, y=1}, + textures = {"elevator:elevator_box"}, + + attached = "", + motor = false, + target = false, + + start = false, + lastpos = false, + halfway = false, + vmult = 0, + + on_activate = function(self, staticdata) + -- Don't want the box being destroyed by anything except the elevator system. + self.object:set_armor_groups({immortal=1}) + end, + + on_step = function(self, dtime) + local pos = self.object:get_pos() + -- First, check if this box needs removed. + -- If the motor has a box and it isn't this box. + if elevator.boxes[self.motor] and elevator.boxes[self.motor] ~= self.object then + minetest.log("action", "[elevator] "..minetest.pos_to_string(pos).." broke due to duplication.") + self.object:remove() + return + end + -- If our attached player can't be found. + if not minetest.get_player_by_name(self.attached) then + minetest.log("action", "[elevator] "..minetest.pos_to_string(pos).." broke due to lack of attachee logged in.") + self.object:remove() + elevator.boxes[self.motor] = nil + return + end + -- If our attached player is no longer with us. + if not minetest.get_player_by_name(self.attached):get_attach() or minetest.get_player_by_name(self.attached):get_attach():get_luaentity().uid ~= self.uid then + minetest.log("action", "[elevator] "..minetest.pos_to_string(pos).." broke due to lack of attachee.") + self.object:remove() + elevator.boxes[self.motor] = nil + return + end + -- If our motor's box is nil, we should self-destruct. + if not elevator.boxes[self.motor] then + minetest.log("action", "[elevator] "..minetest.pos_to_string(pos).." broke due to nil entry in boxes.") + detach(self) + self.object:remove() + elevator.boxes[self.motor] = nil + return + end + + minetest.get_player_by_name(self.attached):set_pos(pos) + -- Ensure lastpos is set to something. + self.lastpos = self.lastpos or pos + + -- Loop through all travelled nodes. + for y=self.lastpos.y,pos.y,((self.lastpos.y > pos.y) and -0.3 or 0.3) do + local p = vector.round({x=pos.x, y=y, z=pos.z}) + local node = get_node(p) + if vector.distance(p,self.target) < elevator.SLOW_DIST then + self.object:set_velocity({x=0, y=elevator.SPEED*elevator.SLOW_SPEED_FACTOR*self.vmult, z=0}) + end + + if node.name == "elevator:elevator_on" or node.name == "elevator:elevator_off" then + -- If this is our target, detach the player here, destroy this box, and update the target elevator without waiting for the abm. + if vector.distance(p, self.target) < 1 then + minetest.log("action", "[elevator] "..minetest.pos_to_string(p).." broke due to arrival.") + detach(self, vector.add(self.target, {x=0, y=-0.4, z=0})) + self.object:remove() + elevator.boxes[self.motor] = nil + offabm(self.target, node) + return + end + elseif node.name ~= "elevator:shaft" then + -- Check if we're in the top part of an elevator, if so it's fine. + local below = vector.add(p, {x=0,y=-1,z=0}) + local belownode = get_node(below) + if belownode.name ~= "elevator:elevator_on" and belownode.name ~= "elevator:elevator_off" then + -- If we aren't, then break the box. + minetest.log("action", "[elevator] "..minetest.pos_to_string(p).." broke on "..node.name) + elevator.boxes[self.motor] = nil + detach(self, p) + self.object:remove() + return + end + end + end + self.lastpos = pos + end, +} + +minetest.register_entity("elevator:box", box_entity) diff --git a/mod.conf b/mod.conf new file mode 100644 index 0000000..6839907 --- /dev/null +++ b/mod.conf @@ -0,0 +1,7 @@ +name = elevator +description = An entity-based elevator allowing fast realtime travel in Minetest. Supports Minetest Game, MineClone2, and Aurum +optional_depends = default, technic, homedecor, chains, farming, mcl_core, mcl_sounds, aurum, screwdriver, doc_items, basic_materials +min_minetest_version = 5.4 +release = 23816 +author = shacknetisp +title = Realtime Elevator diff --git a/screenshot.png b/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..9a3c9bc1a07829a8fde65e21034c83d2c9405106 GIT binary patch literal 98660 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�PHS+?_o2v#@Q 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

x%Z;yW+#lsmO^Bz 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 literal 0 HcmV?d00001 diff --git a/textures/elevator_motor_mcl.png b/textures/elevator_motor_mcl.png new file mode 100644 index 0000000000000000000000000000000000000000..7e7d16812f31769e3f9ea306c23f07d2e77dee40 GIT binary patch literal 373 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbK}Y=BRQD@c%+M^;i?T1HY<>&pIwg_}`WdEu!JC7{qmPZ!4!iOaSfokGnD zJgoEG86ACW8ALz)x8LkpdgqMF?4!@0_4F^;-T7Pj#km`MHzarb{&0wI=d~#1j^vaz z*EV0j)sbxTIOB_r<@)NvmL2VN^QIK-6L(KIVa?ZdL{;Fy++f}pe1En_uH4ora-v@G zvw=A4g^juuOxg?cPEU7!rVtfydEzzG)X3;b0onmYCpGHp_A&4>pZlQS2y`5Sr>mdK II;Vst0Q0SaPXGV_ literal 0 HcmV?d00001 diff --git a/textures/elevator_shaft.png b/textures/elevator_shaft.png new file mode 100644 index 0000000000000000000000000000000000000000..45d4688a77018713122e5e3841ad6c423c72e05c GIT binary patch literal 466 zcmV;@0WJQCP)z@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUzP)S5VR5;6hl1*;HFc5{GolJg2xd~Na!5x4W6s0{3g+vM@iyW;i zDwV3@Ac!s;|8;@7%fuT?etvJ}^H{7_D^ElqB518)tpyQb@;Jly`4f|;DSpmh5JJE@ z2ci&xlrZLg4_TIZFsrI6Rs(=M&%LzP_KHPO_^PTzRUO!n+wBHPM7`qwxpS87fC2)R z%LQAZEXzTJY`yj}juV!@u4}Q~ZuyWPfb_m!Pm(*r_+iZYWe@_31&=UT9YFs2=4G1n zBODF~-?pvT?cVti?;y45f8{hy?|YoG{;unQ)xZ>*x*0@RzdU;xF;h4mkG?1ivET36 z5N#~jpLqSf0sx{YVmpYU2+}#%D~2LO(=^@~JwyS?_1CtoFvg&+8^M|5IEL74HeM@@ zfC4z@AcO!BVK$xO<8;D&KF8&9fl>-lOi;=|cM7A?2udmZ0Sg+A5Q4l55C8xG07*qo IM6N<$g2TPMTL1t6 literal 0 HcmV?d00001 diff --git a/textures/elevator_shaft_mcl.png b/textures/elevator_shaft_mcl.png new file mode 100644 index 0000000000000000000000000000000000000000..f9f1826ea6406386a801372d61924dd644d545d8 GIT binary patch literal 209 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPHV5AX?bO)b%_s;b&}<<|ZCAO8RU zzb*K8IZ%qRB*-tA!Qt7BG!Q4r+uensgH_f8$l)yTh%9Dc&{GCs#)_r(Wk5kcPZ!4! zj_aX4w|N^3I9&U;Fbmvm;Pi-C@Z10CR^P?{CLFE}44wXZLIH!X!JU`9R!xa1r!M_Z yS+XZ#cdC6VCdN%F4pR!lI(0nVFf>)YQPi zz`nk|mzS5;($UPy&dklt&dbT3o}QJJm6MZ`yS%!%xVW#cug}lU(9+E?z=xIq006d0 zL_t&-83n)=3|xuOABX$`z0bQhUdac3FLtR z$Us5*B_Ij21AgF{umAu;#4#J{LcB2`LU-EsfeE3DMEGw-SFQLmNeIjwC~I`XASSsr zI#bgS@`2$UU~kmiscFT78Ve{k%@q1pVZ?Ojn|p{M_g+xtIzx=AZ{2&}3?B|zb$^## wvu<0##69M`?Vr7?#yC;UtXi>$&0+Iv|IVTbVIPc