--[[ TechAge ======= Copyright (C) 2019-2021 Joachim Stolberg AGPL v3 See LICENSE.txt for more information TA1 Axles for the Watermill ]]-- -- for lazy programmers local P = minetest.string_to_pos local M = minetest.get_meta local S = techage.S local Axle = tubelib2.Tube:new({ dirs_to_check = {1,2,3,4,5,6}, max_tube_length = 10, show_infotext = false, tube_type = "axle1", primary_node_names = {"techage:ta1_axle"}, secondary_node_names = {"techage:ta1_mill_gear", "techage:ta1_axle_bearing1", "techage:ta1_axle_bearing2"}, after_place_tube = function(pos, param2, tube_type, num_tubes, state) minetest.swap_node(pos, {name = "techage:ta1_axle", param2 = param2}) end, }) Axle:set_valid_sides("techage:ta1_mill_gear", {"F", "B"}) Axle:set_valid_sides("techage:ta1_axle_bearing1", {"F", "B"}) Axle:set_valid_sides("techage:ta1_axle_bearing2", {"F", "B"}) minetest.register_node("techage:ta1_axle", { description = S("TA1 Axle"), tiles = { "techage_axle_bearing.png^[transformR90", "techage_axle_bearing.png^[transformR90", "techage_axle_bearing.png", "techage_axle_bearing.png", "techage_axle_bearing.png", "techage_axle_bearing.png", }, drawtype = "nodebox", node_box = { type = "fixed", fixed = { {-1/8, -1/8, -4/8, 1/8, 1/8, 4/8}, }, }, after_place_node = function(pos, placer, itemstack, pointed_thing) if not Axle:after_place_tube(pos, placer, pointed_thing) then minetest.remove_node(pos) return true end return false end, after_dig_node = function(pos, oldnode, oldmetadata, digger) Axle:after_dig_tube(pos, oldnode, oldmetadata) end, paramtype2 = "facedir", -- important! on_rotate = screwdriver.disallow, -- important! paramtype = "light", use_texture_alpha = techage.CLIP, sunlight_propagates = true, is_ground_content = false, groups = {crumbly = 3, cracky = 3, snappy = 3}, sounds = default.node_sound_wood_defaults(), }) -- Bearings are defined as secondary nodes which forward received 'on_transfer' commands minetest.register_node("techage:ta1_axle_bearing1", { description = S("TA1 Axle Bearing"), tiles = { "default_stone_brick.png^techage_axle_bearing.png^[transformR90", "default_stone_brick.png^techage_axle_bearing.png", }, drawtype = "nodebox", node_box = { type = "fixed", fixed = { {-1/2, -1/2, -1/2, 1/2, -1/8, 1/2}, {-1/8, -1/8, -1/2, 1/8, 1/8, 1/2}, }, }, after_place_node = function(pos, placer) Axle:after_place_node(pos) end, after_dig_node = function(pos, oldnode, oldmetadata, digger) Axle:after_dig_node(pos) end, paramtype2 = "facedir", paramtype = "light", use_texture_alpha = techage.CLIP, sunlight_propagates = true, is_ground_content = false, groups = {cracky = 2, crumbly = 2, choppy = 2}, }) minetest.register_node("techage:ta1_axle_bearing2", { description = S("TA1 Axle Bearing"), tiles = { -- up, down, right, left, back, front "default_stone_brick.png", "default_stone_brick.png", "default_stone_brick.png", "default_stone_brick.png", "default_stone_brick.png^techage_axle_bearing_front.png", "default_stone_brick.png^techage_axle_bearing_front.png", }, after_place_node = function(pos, placer) Axle:after_place_node(pos) end, after_dig_node = function(pos, oldnode, oldmetadata, digger) Axle:after_dig_node(pos) end, paramtype2 = "facedir", paramtype = "light", use_texture_alpha = techage.CLIP, sunlight_propagates = true, is_ground_content = false, groups = {cracky = 2, crumbly = 2, choppy = 2}, }) techage.register_node({"techage:ta1_axle_bearing1", "techage:ta1_axle_bearing2"}, { on_transfer = function(pos, in_dir, topic, payload) return techage.transfer( pos, in_dir, -- outdir topic, payload, Axle, -- network nil) -- valid nodes end, }) minetest.register_craft({ output = "techage:ta1_axle", recipe = { {"", "", ""}, {"techage:iron_ingot", "dye:black", "techage:iron_ingot"}, {"", "", ""}, }, }) minetest.register_craft({ output = "techage:ta1_axle_bearing1", recipe = { {"", "", ""}, {"", "techage:ta1_axle", ""}, {"", "stairs:slab_stonebrick", ""}, }, }) minetest.register_craft({ output = "techage:ta1_axle_bearing2", recipe = { {"", "", ""}, {"", "techage:ta1_axle", ""}, {"", "default:stonebrick", ""}, }, }) techage.TA1Axle = Axle