From 888b0ebfec8c2eff9015163549a7e47443cb8665 Mon Sep 17 00:00:00 2001 From: Vanessa Ezekowitz Date: Fri, 1 Apr 2016 21:00:20 -0400 Subject: "explode" all modpacks into their individual components (you can't have a modpack buried inside a modpack) --- technic/.mailmap | 4 - technic/README.md | 36 +- technic/concrete/depends.txt | 3 - technic/concrete/init.lua | 274 --- technic/concrete/locale/de.txt | 10 - technic/concrete/locale/template.txt | 8 - technic/concrete/locale/tr.txt | 7 - .../technic_blast_resistant_concrete_block.png | Bin 311 -> 0 bytes .../concrete/textures/technic_concrete_block.png | Bin 500 -> 0 bytes technic/concrete/textures/technic_rebar.png | Bin 813 -> 0 bytes .../textures/x32/technic_concrete_block.png | Bin 2319 -> 0 bytes technic/concrete/textures/x32/technic_rebar.png | Bin 813 -> 0 bytes technic/config.lua | 18 + technic/crafts.lua | 193 ++ technic/depends.txt | 8 + technic/extranodes/depends.txt | 5 - technic/extranodes/init.lua | 103 -- technic/extranodes/locale/de.txt | 9 - technic/extranodes/locale/template.txt | 7 - technic/extranodes/locale/tr.txt | 6 - technic/helpers.lua | 67 + technic/init.lua | 54 + technic/items.lua | 221 +++ technic/legacy.lua | 38 + technic/locale/de.txt | 204 +++ technic/locale/es.txt | 197 ++ technic/locale/it.txt | 201 ++ technic/locale/template.txt | 211 +++ technic/machines/HV/battery_box.lua | 21 + technic/machines/HV/cables.lua | 12 + technic/machines/HV/forcefield.lua | 261 +++ technic/machines/HV/generator.lua | 13 + technic/machines/HV/init.lua | 18 + technic/machines/HV/nuclear_reactor.lua | 723 ++++++++ technic/machines/HV/quarry.lua | 251 +++ technic/machines/HV/solar_array.lua | 14 + technic/machines/LV/alloy_furnace.lua | 14 + technic/machines/LV/battery_box.lua | 19 + technic/machines/LV/cables.lua | 14 + technic/machines/LV/cnc.lua | 237 +++ technic/machines/LV/cnc_api.lua | 369 ++++ technic/machines/LV/cnc_nodes.lua | 91 + technic/machines/LV/compressor.lua | 13 + technic/machines/LV/electric_furnace.lua | 16 + technic/machines/LV/extractor.lua | 13 + technic/machines/LV/generator.lua | 18 + technic/machines/LV/geothermal.lua | 111 ++ technic/machines/LV/grinder.lua | 13 + technic/machines/LV/init.lua | 29 + technic/machines/LV/music_player.lua | 130 ++ technic/machines/LV/solar_array.lua | 18 + technic/machines/LV/solar_panel.lua | 67 + technic/machines/LV/water_mill.lua | 102 ++ technic/machines/MV/alloy_furnace.lua | 14 + technic/machines/MV/battery_box.lua | 22 + technic/machines/MV/cables.lua | 14 + technic/machines/MV/centrifuge.lua | 16 + technic/machines/MV/compressor.lua | 12 + technic/machines/MV/electric_furnace.lua | 18 + technic/machines/MV/extractor.lua | 12 + technic/machines/MV/generator.lua | 13 + technic/machines/MV/grinder.lua | 13 + technic/machines/MV/init.lua | 32 + technic/machines/MV/lighting.lua | 590 ++++++ technic/machines/MV/power_radiator.lua | 220 +++ technic/machines/MV/solar_array.lua | 14 + technic/machines/MV/tool_workshop.lua | 117 ++ technic/machines/MV/wind_mill.lua | 87 + technic/machines/init.lua | 14 + technic/machines/other/anchor.lua | 109 ++ technic/machines/other/coal_alloy_furnace.lua | 177 ++ technic/machines/other/coal_furnace.lua | 5 + technic/machines/other/constructor.lua | 189 ++ technic/machines/other/frames.lua | 928 ++++++++++ technic/machines/other/init.lua | 15 + technic/machines/other/injector.lua | 118 ++ technic/machines/register/alloy_furnace.lua | 10 + technic/machines/register/alloy_recipes.lua | 35 + technic/machines/register/battery_box.lua | 291 +++ technic/machines/register/cables.lua | 177 ++ technic/machines/register/centrifuge.lua | 8 + technic/machines/register/centrifuge_recipes.lua | 38 + technic/machines/register/common.lua | 214 +++ technic/machines/register/compressor.lua | 9 + technic/machines/register/compressor_recipes.lua | 34 + technic/machines/register/electric_furnace.lua | 9 + technic/machines/register/extractor.lua | 9 + technic/machines/register/extractor_recipes.lua | 59 + technic/machines/register/generator.lua | 173 ++ technic/machines/register/grinder.lua | 9 + technic/machines/register/grinder_recipes.lua | 161 ++ technic/machines/register/grindings.lua | 62 + technic/machines/register/init.lua | 33 + technic/machines/register/machine_base.lua | 197 ++ technic/machines/register/recipes.lua | 107 ++ technic/machines/register/solar_array.lua | 65 + technic/machines/supply_converter.lua | 80 + technic/machines/switching_station.lua | 404 ++++ technic/manual.md | 1488 --------------- technic/models/technic_cylinder.obj | 238 +++ technic/models/technic_cylinder_horizontal.obj | 238 +++ technic/models/technic_innercorner.obj | 33 + technic/models/technic_innercorner_upsdown.obj | 33 + technic/models/technic_oblate_spheroid.obj | 300 +++ technic/models/technic_one_curved_edge.obj | 132 ++ technic/models/technic_outercorner.obj | 23 + technic/models/technic_outercorner_upsdown.obj | 23 + technic/models/technic_pyramid.obj | 24 + technic/models/technic_pyramid_spike.obj | 24 + technic/models/technic_slope.obj | 24 + technic/models/technic_slope_horizontal.obj | 24 + technic/models/technic_slope_upsdown.obj | 24 + technic/models/technic_sphere.obj | 1927 ++++++++++++++++++++ technic/models/technic_two_curved_edge.obj | 207 +++ technic/modpack.txt | 1 - technic/register.lua | 58 + technic/sounds/chainsaw.ogg | Bin 0 -> 38174 bytes technic/sounds/item_drop_pickup.1.ogg | Bin 0 -> 9981 bytes technic/sounds/item_drop_pickup.2.ogg | Bin 0 -> 10477 bytes technic/sounds/item_drop_pickup.3.ogg | Bin 0 -> 9586 bytes technic/sounds/item_drop_pickup.4.ogg | Bin 0 -> 9696 bytes technic/sounds/mining_drill.ogg | Bin 0 -> 14499 bytes .../technic_hv_nuclear_reactor_siren_clear.ogg | Bin 0 -> 31184 bytes ...echnic_hv_nuclear_reactor_siren_danger_loop.ogg | Bin 0 -> 13059 bytes technic/sounds/technic_laser_mk1.0.ogg | Bin 0 -> 13465 bytes technic/sounds/technic_laser_mk1.1.ogg | Bin 0 -> 10281 bytes technic/sounds/technic_laser_mk2.0.ogg | Bin 0 -> 16766 bytes technic/sounds/technic_laser_mk2.1.ogg | Bin 0 -> 17725 bytes technic/sounds/technic_laser_mk2.2.ogg | Bin 0 -> 14627 bytes technic/sounds/technic_laser_mk3.1.ogg | Bin 0 -> 12162 bytes technic/sounds/technic_laser_mk3.2.ogg | Bin 0 -> 12040 bytes technic/sounds/technic_prospector_hit.ogg | Bin 0 -> 4698 bytes technic/sounds/technic_prospector_miss.ogg | Bin 0 -> 4481 bytes technic/sounds/technic_sonic_screwdriver.ogg | Bin 0 -> 29827 bytes technic/sounds/vacuumcleaner.ogg | Bin 0 -> 62768 bytes technic/technic/README.md | 27 - technic/technic/config.lua | 18 - technic/technic/crafts.lua | 193 -- technic/technic/depends.txt | 8 - technic/technic/helpers.lua | 67 - technic/technic/init.lua | 54 - technic/technic/items.lua | 221 --- technic/technic/legacy.lua | 38 - technic/technic/locale/de.txt | 204 --- technic/technic/locale/es.txt | 197 -- technic/technic/locale/it.txt | 201 -- technic/technic/locale/template.txt | 211 --- technic/technic/machines/HV/battery_box.lua | 21 - technic/technic/machines/HV/cables.lua | 12 - technic/technic/machines/HV/forcefield.lua | 261 --- technic/technic/machines/HV/generator.lua | 13 - technic/technic/machines/HV/init.lua | 18 - technic/technic/machines/HV/nuclear_reactor.lua | 723 -------- technic/technic/machines/HV/quarry.lua | 251 --- technic/technic/machines/HV/solar_array.lua | 14 - technic/technic/machines/LV/alloy_furnace.lua | 14 - technic/technic/machines/LV/battery_box.lua | 19 - technic/technic/machines/LV/cables.lua | 14 - technic/technic/machines/LV/cnc.lua | 237 --- technic/technic/machines/LV/cnc_api.lua | 369 ---- technic/technic/machines/LV/cnc_nodes.lua | 91 - technic/technic/machines/LV/compressor.lua | 13 - technic/technic/machines/LV/electric_furnace.lua | 16 - technic/technic/machines/LV/extractor.lua | 13 - technic/technic/machines/LV/generator.lua | 18 - technic/technic/machines/LV/geothermal.lua | 111 -- technic/technic/machines/LV/grinder.lua | 13 - technic/technic/machines/LV/init.lua | 29 - technic/technic/machines/LV/music_player.lua | 130 -- technic/technic/machines/LV/solar_array.lua | 18 - technic/technic/machines/LV/solar_panel.lua | 67 - technic/technic/machines/LV/water_mill.lua | 102 -- technic/technic/machines/MV/alloy_furnace.lua | 14 - technic/technic/machines/MV/battery_box.lua | 22 - technic/technic/machines/MV/cables.lua | 14 - technic/technic/machines/MV/centrifuge.lua | 16 - technic/technic/machines/MV/compressor.lua | 12 - technic/technic/machines/MV/electric_furnace.lua | 18 - technic/technic/machines/MV/extractor.lua | 12 - technic/technic/machines/MV/generator.lua | 13 - technic/technic/machines/MV/grinder.lua | 13 - technic/technic/machines/MV/init.lua | 32 - technic/technic/machines/MV/lighting.lua | 590 ------ technic/technic/machines/MV/power_radiator.lua | 220 --- technic/technic/machines/MV/solar_array.lua | 14 - technic/technic/machines/MV/tool_workshop.lua | 117 -- technic/technic/machines/MV/wind_mill.lua | 87 - technic/technic/machines/init.lua | 14 - technic/technic/machines/other/anchor.lua | 109 -- .../technic/machines/other/coal_alloy_furnace.lua | 177 -- technic/technic/machines/other/coal_furnace.lua | 5 - technic/technic/machines/other/constructor.lua | 189 -- technic/technic/machines/other/frames.lua | 928 ---------- technic/technic/machines/other/init.lua | 15 - technic/technic/machines/other/injector.lua | 118 -- .../technic/machines/register/alloy_furnace.lua | 10 - .../technic/machines/register/alloy_recipes.lua | 35 - technic/technic/machines/register/battery_box.lua | 291 --- technic/technic/machines/register/cables.lua | 177 -- technic/technic/machines/register/centrifuge.lua | 8 - .../machines/register/centrifuge_recipes.lua | 38 - technic/technic/machines/register/common.lua | 214 --- technic/technic/machines/register/compressor.lua | 9 - .../machines/register/compressor_recipes.lua | 34 - .../technic/machines/register/electric_furnace.lua | 9 - technic/technic/machines/register/extractor.lua | 9 - .../machines/register/extractor_recipes.lua | 59 - technic/technic/machines/register/generator.lua | 173 -- technic/technic/machines/register/grinder.lua | 9 - .../technic/machines/register/grinder_recipes.lua | 161 -- technic/technic/machines/register/grindings.lua | 62 - technic/technic/machines/register/init.lua | 33 - technic/technic/machines/register/machine_base.lua | 197 -- technic/technic/machines/register/recipes.lua | 107 -- technic/technic/machines/register/solar_array.lua | 65 - technic/technic/machines/supply_converter.lua | 80 - technic/technic/machines/switching_station.lua | 404 ---- technic/technic/models/technic_cylinder.obj | 238 --- .../technic/models/technic_cylinder_horizontal.obj | 238 --- technic/technic/models/technic_innercorner.obj | 33 - .../technic/models/technic_innercorner_upsdown.obj | 33 - technic/technic/models/technic_oblate_spheroid.obj | 300 --- technic/technic/models/technic_one_curved_edge.obj | 132 -- technic/technic/models/technic_outercorner.obj | 23 - .../technic/models/technic_outercorner_upsdown.obj | 23 - technic/technic/models/technic_pyramid.obj | 24 - technic/technic/models/technic_pyramid_spike.obj | 24 - technic/technic/models/technic_slope.obj | 24 - .../technic/models/technic_slope_horizontal.obj | 24 - technic/technic/models/technic_slope_upsdown.obj | 24 - technic/technic/models/technic_sphere.obj | 1927 -------------------- technic/technic/models/technic_two_curved_edge.obj | 207 --- technic/technic/register.lua | 58 - technic/technic/sounds/chainsaw.ogg | Bin 38174 -> 0 bytes technic/technic/sounds/item_drop_pickup.1.ogg | Bin 9981 -> 0 bytes technic/technic/sounds/item_drop_pickup.2.ogg | Bin 10477 -> 0 bytes technic/technic/sounds/item_drop_pickup.3.ogg | Bin 9586 -> 0 bytes technic/technic/sounds/item_drop_pickup.4.ogg | Bin 9696 -> 0 bytes technic/technic/sounds/mining_drill.ogg | Bin 14499 -> 0 bytes .../technic_hv_nuclear_reactor_siren_clear.ogg | Bin 31184 -> 0 bytes ...echnic_hv_nuclear_reactor_siren_danger_loop.ogg | Bin 13059 -> 0 bytes technic/technic/sounds/technic_laser_mk1.0.ogg | Bin 13465 -> 0 bytes technic/technic/sounds/technic_laser_mk1.1.ogg | Bin 10281 -> 0 bytes technic/technic/sounds/technic_laser_mk2.0.ogg | Bin 16766 -> 0 bytes technic/technic/sounds/technic_laser_mk2.1.ogg | Bin 17725 -> 0 bytes technic/technic/sounds/technic_laser_mk2.2.ogg | Bin 14627 -> 0 bytes technic/technic/sounds/technic_laser_mk3.1.ogg | Bin 12162 -> 0 bytes technic/technic/sounds/technic_laser_mk3.2.ogg | Bin 12040 -> 0 bytes technic/technic/sounds/technic_prospector_hit.ogg | Bin 4698 -> 0 bytes technic/technic/sounds/technic_prospector_miss.ogg | Bin 4481 -> 0 bytes .../technic/sounds/technic_sonic_screwdriver.ogg | Bin 29827 -> 0 bytes technic/technic/sounds/vacuumcleaner.ogg | Bin 62768 -> 0 bytes .../hires/technic_hv_nuclear_reactor_core_128.png | Bin 26143 -> 0 bytes .../hires/technic_hv_nuclear_reactor_core_16.png | Bin 896 -> 0 bytes .../hires/technic_hv_nuclear_reactor_core_256.png | Bin 84243 -> 0 bytes .../hires/technic_hv_nuclear_reactor_core_32.png | Bin 2545 -> 0 bytes .../hires/technic_hv_nuclear_reactor_core_512.png | Bin 254444 -> 0 bytes .../hires/technic_hv_nuclear_reactor_core_64.png | Bin 8114 -> 0 bytes technic/technic/textures/power_meter.png | Bin 463 -> 0 bytes .../technic/textures/technic_acacia_grindings.png | Bin 207 -> 0 bytes technic/technic/textures/technic_admin_anchor.png | Bin 873 -> 0 bytes technic/technic/textures/technic_akalin_dust.png | Bin 240 -> 0 bytes technic/technic/textures/technic_alatro_dust.png | Bin 241 -> 0 bytes technic/technic/textures/technic_arol_dust.png | Bin 227 -> 0 bytes technic/technic/textures/technic_battery.png | Bin 247 -> 0 bytes .../technic/textures/technic_battery_box_side.png | Bin 576 -> 0 bytes .../technic/textures/technic_battery_box_side8.png | Bin 639 -> 0 bytes .../textures/technic_battery_box_side_mv.png | Bin 587 -> 0 bytes .../technic/textures/technic_battery_meter_fg.png | Bin 260 -> 0 bytes .../technic/textures/technic_battery_reload.png | Bin 287 -> 0 bytes technic/technic/textures/technic_bronze_dust.png | Bin 461 -> 0 bytes technic/technic/textures/technic_bucket_corium.png | Bin 256 -> 0 bytes technic/technic/textures/technic_carbon_cloth.png | Bin 169 -> 0 bytes technic/technic/textures/technic_carbon_plate.png | Bin 162 -> 0 bytes .../technic/textures/technic_carbon_steel_dust.png | Bin 416 -> 0 bytes .../technic/textures/technic_cast_iron_dust.png | Bin 420 -> 0 bytes technic/technic/textures/technic_chainsaw.png | Bin 529 -> 0 bytes .../textures/technic_chernobylite_block.png | Bin 666 -> 0 bytes technic/technic/textures/technic_chromium_dust.png | Bin 443 -> 0 bytes technic/technic/textures/technic_cnc_bottom.png | Bin 2006 -> 0 bytes technic/technic/textures/technic_cnc_cylinder.png | Bin 6047 -> 0 bytes .../textures/technic_cnc_cylinder_horizontal.png | Bin 7130 -> 0 bytes .../technic/textures/technic_cnc_element_cross.png | Bin 4592 -> 0 bytes .../technic/textures/technic_cnc_element_edge.png | Bin 3898 -> 0 bytes .../technic/textures/technic_cnc_element_end.png | Bin 3563 -> 0 bytes .../textures/technic_cnc_element_straight.png | Bin 4027 -> 0 bytes technic/technic/textures/technic_cnc_element_t.png | Bin 4369 -> 0 bytes technic/technic/textures/technic_cnc_front.png | Bin 2000 -> 0 bytes .../technic/textures/technic_cnc_front_active.png | Bin 2216 -> 0 bytes technic/technic/textures/technic_cnc_full.png | Bin 997 -> 0 bytes technic/technic/textures/technic_cnc_half.png | Bin 1564 -> 0 bytes .../textures/technic_cnc_milling_background.png | Bin 78748 -> 0 bytes .../textures/technic_cnc_oblate_spheroid.png | Bin 8915 -> 0 bytes .../technic/textures/technic_cnc_onecurvededge.png | Bin 8170 -> 0 bytes technic/technic/textures/technic_cnc_pyramid.png | Bin 4790 -> 0 bytes technic/technic/textures/technic_cnc_side.png | Bin 1922 -> 0 bytes technic/technic/textures/technic_cnc_slope.png | Bin 6081 -> 0 bytes .../technic/textures/technic_cnc_slope_edge.png | Bin 5900 -> 0 bytes .../textures/technic_cnc_slope_edge_upsdwn.png | Bin 4831 -> 0 bytes .../textures/technic_cnc_slope_inner_edge.png | Bin 7412 -> 0 bytes .../technic_cnc_slope_inner_edge_upsdwn.png | Bin 7404 -> 0 bytes .../technic/textures/technic_cnc_slope_lying.png | Bin 6815 -> 0 bytes .../technic/textures/technic_cnc_slope_upsdwn.png | Bin 5814 -> 0 bytes technic/technic/textures/technic_cnc_sphere.png | Bin 5777 -> 0 bytes technic/technic/textures/technic_cnc_spike.png | Bin 6392 -> 0 bytes technic/technic/textures/technic_cnc_stick.png | Bin 2305 -> 0 bytes technic/technic/textures/technic_cnc_top.png | Bin 2137 -> 0 bytes .../technic/textures/technic_cnc_top_active.png | Bin 2214 -> 0 bytes .../technic/textures/technic_cnc_twocurvededge.png | Bin 7119 -> 0 bytes .../textures/technic_coal_alloy_furnace_bottom.png | Bin 677 -> 0 bytes .../textures/technic_coal_alloy_furnace_front.png | Bin 681 -> 0 bytes .../technic_coal_alloy_furnace_front_active.png | Bin 697 -> 0 bytes .../textures/technic_coal_alloy_furnace_side.png | Bin 596 -> 0 bytes .../textures/technic_coal_alloy_furnace_top.png | Bin 596 -> 0 bytes technic/technic/textures/technic_coal_dust.png | Bin 433 -> 0 bytes .../textures/technic_common_tree_grindings.png | Bin 226 -> 0 bytes .../technic/textures/technic_composite_plate.png | Bin 165 -> 0 bytes .../technic/textures/technic_constructor_back.png | Bin 638 -> 0 bytes .../textures/technic_constructor_front_off.png | Bin 635 -> 0 bytes .../textures/technic_constructor_front_on.png | Bin 690 -> 0 bytes .../technic_constructor_mk1_bottom_off.png | Bin 638 -> 0 bytes .../textures/technic_constructor_mk1_bottom_on.png | Bin 664 -> 0 bytes .../textures/technic_constructor_mk1_side1_off.png | Bin 671 -> 0 bytes .../textures/technic_constructor_mk1_side1_on.png | Bin 687 -> 0 bytes .../textures/technic_constructor_mk1_side2_off.png | Bin 654 -> 0 bytes .../textures/technic_constructor_mk1_side2_on.png | Bin 671 -> 0 bytes .../textures/technic_constructor_mk1_top_off.png | Bin 626 -> 0 bytes .../textures/technic_constructor_mk1_top_on.png | Bin 644 -> 0 bytes .../technic_constructor_mk2_bottom_off.png | Bin 665 -> 0 bytes .../textures/technic_constructor_mk2_bottom_on.png | Bin 694 -> 0 bytes .../textures/technic_constructor_mk2_side1_off.png | Bin 701 -> 0 bytes .../textures/technic_constructor_mk2_side1_on.png | Bin 719 -> 0 bytes .../textures/technic_constructor_mk2_side2_off.png | Bin 683 -> 0 bytes .../textures/technic_constructor_mk2_side2_on.png | Bin 708 -> 0 bytes .../textures/technic_constructor_mk2_top_off.png | Bin 654 -> 0 bytes .../textures/technic_constructor_mk2_top_on.png | Bin 685 -> 0 bytes .../technic_constructor_mk3_bottom_off.png | Bin 700 -> 0 bytes .../textures/technic_constructor_mk3_bottom_on.png | Bin 721 -> 0 bytes .../textures/technic_constructor_mk3_side1_off.png | Bin 727 -> 0 bytes .../textures/technic_constructor_mk3_side1_on.png | Bin 762 -> 0 bytes .../textures/technic_constructor_mk3_side2_off.png | Bin 715 -> 0 bytes .../textures/technic_constructor_mk3_side2_on.png | Bin 753 -> 0 bytes .../textures/technic_constructor_mk3_top_off.png | Bin 687 -> 0 bytes .../textures/technic_constructor_mk3_top_on.png | Bin 725 -> 0 bytes .../textures/technic_control_logic_unit.png | Bin 652 -> 0 bytes technic/technic/textures/technic_copper_coil.png | Bin 2447 -> 0 bytes technic/technic/textures/technic_copper_dust.png | Bin 466 -> 0 bytes technic/technic/textures/technic_copper_plate.png | Bin 174 -> 0 bytes .../textures/technic_corium_flowing_animated.png | Bin 3278 -> 0 bytes .../textures/technic_corium_source_animated.png | Bin 2954 -> 0 bytes technic/technic/textures/technic_deployer_back.png | Bin 757 -> 0 bytes .../technic/textures/technic_deployer_bottom.png | Bin 835 -> 0 bytes .../textures/technic_deployer_front_off.png | Bin 800 -> 0 bytes .../technic/textures/technic_deployer_front_on.png | Bin 719 -> 0 bytes technic/technic/textures/technic_deployer_side.png | Bin 908 -> 0 bytes .../technic/textures/technic_deployer_side1.png | Bin 908 -> 0 bytes .../technic/textures/technic_deployer_side2.png | Bin 910 -> 0 bytes technic/technic/textures/technic_deployer_top.png | Bin 842 -> 0 bytes .../textures/technic_diamond_block_blue.png | Bin 651 -> 0 bytes .../textures/technic_diamond_block_green.png | Bin 636 -> 0 bytes .../technic/textures/technic_diamond_block_red.png | Bin 651 -> 0 bytes .../textures/technic_diamond_drill_head.png | Bin 978 -> 0 bytes .../textures/technic_doped_silicon_wafer.png | Bin 331 -> 0 bytes .../technic/textures/technic_fine_copper_wire.png | Bin 501 -> 0 bytes .../technic/textures/technic_fine_gold_wire.png | Bin 474 -> 0 bytes .../technic/textures/technic_fine_silver_wire.png | Bin 546 -> 0 bytes technic/technic/textures/technic_flashlight.png | Bin 679 -> 0 bytes .../textures/technic_forcefield_animated.png | Bin 3274 -> 0 bytes .../textures/technic_forcefield_emitter_off.png | Bin 204 -> 0 bytes .../textures/technic_forcefield_emitter_on.png | Bin 204 -> 0 bytes technic/technic/textures/technic_frame.png | Bin 32199 -> 0 bytes .../technic/textures/technic_geothermal_side.png | Bin 809 -> 0 bytes .../technic/textures/technic_geothermal_top.png | Bin 828 -> 0 bytes .../textures/technic_geothermal_top_active.png | Bin 819 -> 0 bytes technic/technic/textures/technic_gold_dust.png | Bin 468 -> 0 bytes technic/technic/textures/technic_graphite.png | Bin 140 -> 0 bytes technic/technic/textures/technic_grinder_front.png | Bin 777 -> 0 bytes technic/technic/textures/technic_grinder_side.png | Bin 692 -> 0 bytes technic/technic/textures/technic_grinder_top.png | Bin 465 -> 0 bytes ...echnic_homedecor_glowlight_cube_white_sides.png | Bin 255 -> 0 bytes ...omedecor_glowlight_cube_white_sides_ceiling.png | Bin 258 -> 0 bytes .../technic_homedecor_glowlight_cube_white_tb.png | Bin 261 -> 0 bytes ...chnic_homedecor_glowlight_cube_yellow_sides.png | Bin 350 -> 0 bytes ...medecor_glowlight_cube_yellow_sides_ceiling.png | Bin 353 -> 0 bytes .../technic_homedecor_glowlight_cube_yellow_tb.png | Bin 352 -> 0 bytes ...chnic_homedecor_glowlight_thick_white_sides.png | Bin 264 -> 0 bytes ..._homedecor_glowlight_thick_white_wall_sides.png | Bin 265 -> 0 bytes ...hnic_homedecor_glowlight_thick_yellow_sides.png | Bin 475 -> 0 bytes ...homedecor_glowlight_thick_yellow_wall_sides.png | Bin 478 -> 0 bytes ...echnic_homedecor_glowlight_thin_white_sides.png | Bin 225 -> 0 bytes ...c_homedecor_glowlight_thin_white_wall_sides.png | Bin 232 -> 0 bytes ...chnic_homedecor_glowlight_thin_yellow_sides.png | Bin 335 -> 0 bytes ..._homedecor_glowlight_thin_yellow_wall_sides.png | Bin 355 -> 0 bytes .../technic_homedecor_glowlight_white_tb.png | Bin 330 -> 0 bytes .../technic_homedecor_glowlight_yellow_tb.png | Bin 633 -> 0 bytes .../textures/technic_hv_battery_box_bottom.png | Bin 653 -> 0 bytes .../textures/technic_hv_battery_box_side.png | Bin 777 -> 0 bytes .../textures/technic_hv_battery_box_top.png | Bin 792 -> 0 bytes technic/technic/textures/technic_hv_cable.png | Bin 1705 -> 0 bytes .../technic/textures/technic_hv_cable_wield.png | Bin 601 -> 0 bytes .../textures/technic_hv_down_converter_bottom.png | Bin 653 -> 0 bytes .../textures/technic_hv_down_converter_side.png | Bin 609 -> 0 bytes .../textures/technic_hv_down_converter_top.png | Bin 653 -> 0 bytes .../textures/technic_hv_generator_front.png | Bin 450 -> 0 bytes .../textures/technic_hv_generator_front_active.png | Bin 469 -> 0 bytes .../technic/textures/technic_hv_generator_side.png | Bin 357 -> 0 bytes .../technic/textures/technic_hv_generator_top.png | Bin 384 -> 0 bytes .../technic/textures/technic_hv_grinder_bottom.png | Bin 862 -> 0 bytes .../technic/textures/technic_hv_grinder_front.png | Bin 716 -> 0 bytes .../textures/technic_hv_grinder_front_active.png | Bin 733 -> 0 bytes .../technic/textures/technic_hv_grinder_side.png | Bin 753 -> 0 bytes .../textures/technic_hv_grinder_side_tube.png | Bin 791 -> 0 bytes .../technic/textures/technic_hv_grinder_top.png | Bin 616 -> 0 bytes .../textures/technic_hv_nuclear_reactor_core.png | Bin 896 -> 0 bytes .../textures/technic_hv_solar_array_bottom.png | Bin 574 -> 0 bytes .../textures/technic_hv_solar_array_side.png | Bin 709 -> 0 bytes .../textures/technic_hv_solar_array_top.png | Bin 777 -> 0 bytes .../technic/textures/technic_hv_transformer.png | Bin 1801 -> 0 bytes .../technic/textures/technic_injector_bottom.png | Bin 2667 -> 0 bytes technic/technic/textures/technic_injector_side.png | Bin 2541 -> 0 bytes technic/technic/textures/technic_injector_top.png | Bin 2633 -> 0 bytes technic/technic/textures/technic_kalite_dust.png | Bin 191 -> 0 bytes .../technic/textures/technic_laser_beam_mk1.png | Bin 279 -> 0 bytes .../technic/textures/technic_laser_beam_mk2.png | Bin 638 -> 0 bytes .../technic/textures/technic_laser_beam_mk3.png | Bin 547 -> 0 bytes technic/technic/textures/technic_lava_can.png | Bin 445 -> 0 bytes technic/technic/textures/technic_light.png | Bin 246 -> 0 bytes .../textures/technic_lv_alloy_furnace_bottom.png | Bin 738 -> 0 bytes .../textures/technic_lv_alloy_furnace_front.png | Bin 508 -> 0 bytes .../technic_lv_alloy_furnace_front_active.png | Bin 543 -> 0 bytes .../textures/technic_lv_alloy_furnace_side.png | Bin 313 -> 0 bytes .../textures/technic_lv_alloy_furnace_top.png | Bin 397 -> 0 bytes .../textures/technic_lv_battery_box_bottom.png | Bin 738 -> 0 bytes .../textures/technic_lv_battery_box_side.png | Bin 594 -> 0 bytes .../textures/technic_lv_battery_box_top.png | Bin 337 -> 0 bytes technic/technic/textures/technic_lv_cable.png | Bin 504 -> 0 bytes .../technic/textures/technic_lv_cable_wield.png | Bin 655 -> 0 bytes .../textures/technic_lv_compressor_back.png | Bin 2893 -> 0 bytes .../textures/technic_lv_compressor_bottom.png | Bin 2865 -> 0 bytes .../textures/technic_lv_compressor_front.png | Bin 2714 -> 0 bytes .../technic_lv_compressor_front_active.png | Bin 2743 -> 0 bytes .../textures/technic_lv_compressor_side.png | Bin 2893 -> 0 bytes .../technic/textures/technic_lv_compressor_top.png | Bin 2940 -> 0 bytes .../technic_lv_electric_furnace_bottom.png | Bin 423 -> 0 bytes .../textures/technic_lv_electric_furnace_front.png | Bin 443 -> 0 bytes .../technic_lv_electric_furnace_front_active.png | Bin 448 -> 0 bytes .../textures/technic_lv_electric_furnace_side.png | Bin 399 -> 0 bytes .../textures/technic_lv_electric_furnace_top.png | Bin 393 -> 0 bytes .../textures/technic_lv_extractor_bottom.png | Bin 738 -> 0 bytes .../textures/technic_lv_extractor_front.png | Bin 745 -> 0 bytes .../textures/technic_lv_extractor_front_active.png | Bin 770 -> 0 bytes .../technic/textures/technic_lv_extractor_side.png | Bin 683 -> 0 bytes .../technic/textures/technic_lv_extractor_top.png | Bin 544 -> 0 bytes .../textures/technic_lv_generator_front.png | Bin 430 -> 0 bytes .../textures/technic_lv_generator_front_active.png | Bin 454 -> 0 bytes .../technic/textures/technic_lv_generator_side.png | Bin 341 -> 0 bytes .../technic/textures/technic_lv_generator_top.png | Bin 388 -> 0 bytes .../technic/textures/technic_lv_grinder_bottom.png | Bin 738 -> 0 bytes .../technic/textures/technic_lv_grinder_front.png | Bin 745 -> 0 bytes .../textures/technic_lv_grinder_front_active.png | Bin 770 -> 0 bytes .../technic/textures/technic_lv_grinder_side.png | Bin 683 -> 0 bytes .../technic/textures/technic_lv_grinder_top.png | Bin 544 -> 0 bytes .../textures/technic_lv_solar_array_bottom.png | Bin 579 -> 0 bytes .../textures/technic_lv_solar_array_side.png | Bin 465 -> 0 bytes .../textures/technic_lv_solar_array_top.png | Bin 743 -> 0 bytes .../technic/textures/technic_lv_transformer.png | Bin 1821 -> 0 bytes .../technic/textures/technic_machine_bottom.png | Bin 572 -> 0 bytes .../technic/textures/technic_machine_casing.png | Bin 673 -> 0 bytes technic/technic/textures/technic_mining_drill.png | Bin 2099 -> 0 bytes .../technic/textures/technic_mining_drill_mk2.png | Bin 1901 -> 0 bytes .../technic/textures/technic_mining_drill_mk3.png | Bin 1900 -> 0 bytes .../technic/textures/technic_mining_laser_mk1.png | Bin 216 -> 0 bytes .../technic/textures/technic_mining_laser_mk2.png | Bin 244 -> 0 bytes .../technic/textures/technic_mining_laser_mk3.png | Bin 312 -> 0 bytes technic/technic/textures/technic_mithril_dust.png | Bin 467 -> 0 bytes .../technic/textures/technic_mixed_metal_ingot.png | Bin 426 -> 0 bytes technic/technic/textures/technic_motor.png | Bin 2517 -> 0 bytes .../textures/technic_music_player_bottom.png | Bin 744 -> 0 bytes .../technic/textures/technic_music_player_side.png | Bin 788 -> 0 bytes .../technic/textures/technic_music_player_top.png | Bin 916 -> 0 bytes .../textures/technic_mv_alloy_furnace_bottom.png | Bin 738 -> 0 bytes .../textures/technic_mv_alloy_furnace_front.png | Bin 2670 -> 0 bytes .../technic_mv_alloy_furnace_front_active.png | Bin 2673 -> 0 bytes .../textures/technic_mv_alloy_furnace_side.png | Bin 2503 -> 0 bytes .../technic_mv_alloy_furnace_side_tube.png | Bin 403 -> 0 bytes .../textures/technic_mv_alloy_furnace_top.png | Bin 1929 -> 0 bytes .../textures/technic_mv_battery_box_bottom.png | Bin 738 -> 0 bytes .../textures/technic_mv_battery_box_side.png | Bin 587 -> 0 bytes .../textures/technic_mv_battery_box_top.png | Bin 337 -> 0 bytes technic/technic/textures/technic_mv_cable.png | Bin 416 -> 0 bytes .../technic/textures/technic_mv_cable_wield.png | Bin 531 -> 0 bytes .../textures/technic_mv_centrifuge_bottom.png | Bin 674 -> 0 bytes .../textures/technic_mv_centrifuge_front.png | Bin 686 -> 0 bytes .../technic_mv_centrifuge_front_active.png | Bin 686 -> 0 bytes .../textures/technic_mv_centrifuge_side.png | Bin 636 -> 0 bytes .../technic/textures/technic_mv_centrifuge_top.png | Bin 814 -> 0 bytes .../textures/technic_mv_compressor_back.png | Bin 2893 -> 0 bytes .../textures/technic_mv_compressor_bottom.png | Bin 2865 -> 0 bytes .../textures/technic_mv_compressor_front.png | Bin 2714 -> 0 bytes .../technic_mv_compressor_front_active.png | Bin 2743 -> 0 bytes .../textures/technic_mv_compressor_side.png | Bin 2893 -> 0 bytes .../technic/textures/technic_mv_compressor_top.png | Bin 2940 -> 0 bytes .../textures/technic_mv_down_converter_bottom.png | Bin 738 -> 0 bytes .../textures/technic_mv_down_converter_side.png | Bin 670 -> 0 bytes .../textures/technic_mv_down_converter_top.png | Bin 738 -> 0 bytes .../technic_mv_electric_furnace_bottom.png | Bin 427 -> 0 bytes .../textures/technic_mv_electric_furnace_front.png | Bin 535 -> 0 bytes .../technic_mv_electric_furnace_front_active.png | Bin 541 -> 0 bytes .../textures/technic_mv_electric_furnace_side.png | Bin 421 -> 0 bytes .../technic_mv_electric_furnace_side_tube.png | Bin 2449 -> 0 bytes .../textures/technic_mv_electric_furnace_top.png | Bin 1772 -> 0 bytes .../textures/technic_mv_extractor_bottom.png | Bin 738 -> 0 bytes .../textures/technic_mv_extractor_front.png | Bin 749 -> 0 bytes .../textures/technic_mv_extractor_front_active.png | Bin 778 -> 0 bytes .../technic/textures/technic_mv_extractor_side.png | Bin 726 -> 0 bytes .../technic/textures/technic_mv_extractor_top.png | Bin 542 -> 0 bytes .../textures/technic_mv_generator_front.png | Bin 425 -> 0 bytes .../textures/technic_mv_generator_front_active.png | Bin 440 -> 0 bytes .../technic/textures/technic_mv_generator_side.png | Bin 317 -> 0 bytes .../technic/textures/technic_mv_generator_top.png | Bin 322 -> 0 bytes .../technic/textures/technic_mv_grinder_bottom.png | Bin 738 -> 0 bytes .../technic/textures/technic_mv_grinder_front.png | Bin 749 -> 0 bytes .../textures/technic_mv_grinder_front_active.png | Bin 778 -> 0 bytes .../technic/textures/technic_mv_grinder_side.png | Bin 726 -> 0 bytes .../textures/technic_mv_grinder_side_tube.png | Bin 739 -> 0 bytes .../technic/textures/technic_mv_grinder_top.png | Bin 542 -> 0 bytes .../textures/technic_mv_solar_array_bottom.png | Bin 574 -> 0 bytes .../textures/technic_mv_solar_array_side.png | Bin 628 -> 0 bytes .../textures/technic_mv_solar_array_top.png | Bin 728 -> 0 bytes .../technic/textures/technic_mv_transformer.png | Bin 1748 -> 0 bytes .../technic/textures/technic_nodebreaker_back.png | Bin 632 -> 0 bytes .../textures/technic_nodebreaker_bottom.png | Bin 38757 -> 0 bytes .../textures/technic_nodebreaker_bottom_off.png | Bin 556 -> 0 bytes .../textures/technic_nodebreaker_bottom_on.png | Bin 549 -> 0 bytes .../textures/technic_nodebreaker_front_off.png | Bin 653 -> 0 bytes .../textures/technic_nodebreaker_front_on.png | Bin 659 -> 0 bytes .../technic/textures/technic_nodebreaker_side.png | Bin 38136 -> 0 bytes .../technic/textures/technic_nodebreaker_side1.png | Bin 38291 -> 0 bytes .../textures/technic_nodebreaker_side1_off.png | Bin 616 -> 0 bytes .../textures/technic_nodebreaker_side1_on.png | Bin 610 -> 0 bytes .../technic/textures/technic_nodebreaker_side2.png | Bin 38195 -> 0 bytes .../textures/technic_nodebreaker_side2_off.png | Bin 606 -> 0 bytes .../textures/technic_nodebreaker_side2_on.png | Bin 598 -> 0 bytes .../technic/textures/technic_nodebreaker_top.png | Bin 38904 -> 0 bytes .../textures/technic_nodebreaker_top_off.png | Bin 556 -> 0 bytes .../textures/technic_nodebreaker_top_on.png | Bin 558 -> 0 bytes technic/technic/textures/technic_power_meter.png | Bin 209 -> 0 bytes technic/technic/textures/technic_power_meter0.png | Bin 103 -> 0 bytes technic/technic/textures/technic_power_meter1.png | Bin 193 -> 0 bytes technic/technic/textures/technic_power_meter2.png | Bin 232 -> 0 bytes technic/technic/textures/technic_power_meter3.png | Bin 255 -> 0 bytes technic/technic/textures/technic_power_meter4.png | Bin 268 -> 0 bytes technic/technic/textures/technic_power_meter5.png | Bin 275 -> 0 bytes technic/technic/textures/technic_power_meter6.png | Bin 281 -> 0 bytes technic/technic/textures/technic_power_meter7.png | Bin 298 -> 0 bytes technic/technic/textures/technic_power_meter8.png | Bin 314 -> 0 bytes .../technic/textures/technic_power_meter_bg.png | Bin 278 -> 0 bytes .../technic/textures/technic_power_meter_fg.png | Bin 465 -> 0 bytes technic/technic/textures/technic_prospector.png | Bin 367 -> 0 bytes technic/technic/textures/technic_raw_latex.png | Bin 484 -> 0 bytes technic/technic/textures/technic_rubber.png | Bin 587 -> 0 bytes technic/technic/textures/technic_rubber_leaves.png | Bin 444 -> 0 bytes .../technic/textures/technic_rubber_sapling.png | Bin 333 -> 0 bytes .../technic/textures/technic_rubber_tree_empty.png | Bin 835 -> 0 bytes .../technic/textures/technic_rubber_tree_full.png | Bin 808 -> 0 bytes .../textures/technic_rubber_tree_grindings.png | Bin 252 -> 0 bytes technic/technic/textures/technic_sawdust.png | Bin 229 -> 0 bytes technic/technic/textures/technic_screwdriver.png | Bin 1001 -> 0 bytes technic/technic/textures/technic_silicon_wafer.png | Bin 913 -> 0 bytes technic/technic/textures/technic_silver_dust.png | Bin 420 -> 0 bytes .../textures/technic_solar_panel_bottom.png | Bin 579 -> 0 bytes .../technic/textures/technic_solar_panel_side.png | Bin 465 -> 0 bytes .../technic/textures/technic_solar_panel_top.png | Bin 569 -> 0 bytes .../technic/textures/technic_sonic_screwdriver.png | Bin 240 -> 0 bytes .../textures/technic_stainless_steel_dust.png | Bin 445 -> 0 bytes .../textures/technic_stainless_steel_ingot.png | Bin 310 -> 0 bytes .../textures/technic_supply_converter_bottom.png | Bin 738 -> 0 bytes .../textures/technic_supply_converter_side.png | Bin 670 -> 0 bytes .../textures/technic_supply_converter_top.png | Bin 738 -> 0 bytes technic/technic/textures/technic_talinite_dust.png | Bin 226 -> 0 bytes technic/technic/textures/technic_tin_dust.png | Bin 241 -> 0 bytes technic/technic/textures/technic_tool_mode1.png | Bin 361 -> 0 bytes technic/technic/textures/technic_tool_mode2.png | Bin 571 -> 0 bytes technic/technic/textures/technic_tool_mode3.png | Bin 622 -> 0 bytes technic/technic/textures/technic_tool_mode4.png | Bin 455 -> 0 bytes technic/technic/textures/technic_tool_mode5.png | Bin 535 -> 0 bytes technic/technic/textures/technic_tool_mode6.png | Bin 633 -> 0 bytes technic/technic/textures/technic_tool_mode7.png | Bin 481 -> 0 bytes technic/technic/textures/technic_tool_mode8.png | Bin 692 -> 0 bytes technic/technic/textures/technic_tool_mode9.png | Bin 623 -> 0 bytes technic/technic/textures/technic_tree_tap.png | Bin 1045 -> 0 bytes technic/technic/textures/technic_uranium_dust.png | Bin 229 -> 0 bytes technic/technic/textures/technic_uranium_fuel.png | Bin 158 -> 0 bytes technic/technic/textures/technic_vacuum.png | Bin 705 -> 0 bytes technic/technic/textures/technic_water_can.png | Bin 443 -> 0 bytes .../technic/textures/technic_water_mill_side.png | Bin 907 -> 0 bytes .../technic/textures/technic_water_mill_top.png | Bin 828 -> 0 bytes .../textures/technic_water_mill_top_active.png | Bin 819 -> 0 bytes .../technic/textures/technic_workshop_bottom.png | Bin 744 -> 0 bytes technic/technic/textures/technic_workshop_side.png | Bin 589 -> 0 bytes technic/technic/textures/technic_workshop_top.png | Bin 555 -> 0 bytes .../technic/textures/technic_wrought_iron_dust.png | Bin 448 -> 0 bytes technic/technic/textures/technic_zinc_dust.png | Bin 246 -> 0 bytes .../textures/technicx32/technic_akalin_dust.png | Bin 1156 -> 0 bytes .../textures/technicx32/technic_alatro_dust.png | Bin 1134 -> 0 bytes .../technicx32/technic_alloy_furnace_front.png | Bin 2756 -> 0 bytes .../technic_alloy_furnace_front_active.png | Bin 2757 -> 0 bytes .../technicx32/technic_alloy_furnace_side.png | Bin 2667 -> 0 bytes .../technicx32/technic_alloy_furnace_top.png | Bin 2431 -> 0 bytes .../textures/technicx32/technic_arol_dust.png | Bin 1101 -> 0 bytes .../textures/technicx32/technic_battery.png | Bin 247 -> 0 bytes .../technicx32/technic_battery_box_bottom.png | Bin 2046 -> 0 bytes .../technicx32/technic_battery_box_side0.png | Bin 2313 -> 0 bytes .../technicx32/technic_battery_box_top.png | Bin 2390 -> 0 bytes .../textures/technicx32/technic_battery_reload.png | Bin 8201 -> 0 bytes .../textures/technicx32/technic_brass_dust.png | Bin 1297 -> 0 bytes .../textures/technicx32/technic_bronze_dust.png | Bin 1304 -> 0 bytes .../technicx32/technic_carbon_steel_dust.png | Bin 1228 -> 0 bytes .../textures/technicx32/technic_cast_iron_dust.png | Bin 1225 -> 0 bytes .../textures/technicx32/technic_chainsaw.png | Bin 17656 -> 0 bytes .../textures/technicx32/technic_chromium_dust.png | Bin 1162 -> 0 bytes .../technic_coal_alloy_furnace_bottom.png | Bin 2957 -> 0 bytes .../technic_coal_alloy_furnace_front.png | Bin 2802 -> 0 bytes .../technic_coal_alloy_furnace_front_active.png | Bin 2953 -> 0 bytes .../technicx32/technic_coal_alloy_furnace_side.png | Bin 2667 -> 0 bytes .../technicx32/technic_coal_alloy_furnace_top.png | Bin 2431 -> 0 bytes .../textures/technicx32/technic_coal_dust.png | Bin 1077 -> 0 bytes .../technicx32/technic_constructor_back.png | Bin 2094 -> 0 bytes .../technicx32/technic_constructor_front_off.png | Bin 2677 -> 0 bytes .../technicx32/technic_constructor_front_on.png | Bin 2627 -> 0 bytes .../technic_constructor_mk1_bottom_off.png | Bin 2272 -> 0 bytes .../technic_constructor_mk1_bottom_on.png | Bin 2308 -> 0 bytes .../technic_constructor_mk1_side1_off.png | Bin 2327 -> 0 bytes .../technic_constructor_mk1_side1_on.png | Bin 2342 -> 0 bytes .../technic_constructor_mk1_side2_off.png | Bin 2326 -> 0 bytes .../technic_constructor_mk1_side2_on.png | Bin 2338 -> 0 bytes .../technicx32/technic_constructor_mk1_top_off.png | Bin 2292 -> 0 bytes .../technicx32/technic_constructor_mk1_top_on.png | Bin 2319 -> 0 bytes .../technic_constructor_mk2_bottom_off.png | Bin 2281 -> 0 bytes .../technic_constructor_mk2_bottom_on.png | Bin 2316 -> 0 bytes .../technic_constructor_mk2_side1_off.png | Bin 2339 -> 0 bytes .../technic_constructor_mk2_side1_on.png | Bin 2355 -> 0 bytes .../technic_constructor_mk2_side2_off.png | Bin 2338 -> 0 bytes .../technic_constructor_mk2_side2_on.png | Bin 2354 -> 0 bytes .../technicx32/technic_constructor_mk2_top_off.png | Bin 2307 -> 0 bytes .../technicx32/technic_constructor_mk2_top_on.png | Bin 2329 -> 0 bytes .../technic_constructor_mk3_bottom_off.png | Bin 2286 -> 0 bytes .../technic_constructor_mk3_bottom_on.png | Bin 2318 -> 0 bytes .../technic_constructor_mk3_side1_off.png | Bin 2378 -> 0 bytes .../technic_constructor_mk3_side1_on.png | Bin 2402 -> 0 bytes .../technic_constructor_mk3_side2_off.png | Bin 2313 -> 0 bytes .../technic_constructor_mk3_side2_on.png | Bin 2338 -> 0 bytes .../technicx32/technic_constructor_mk3_top_off.png | Bin 2313 -> 0 bytes .../technicx32/technic_constructor_mk3_top_on.png | Bin 2338 -> 0 bytes .../technicx32/technic_control_logic_unit.png | Bin 1494 -> 0 bytes .../textures/technicx32/technic_copper_coil.png | Bin 2447 -> 0 bytes .../textures/technicx32/technic_copper_dust.png | Bin 1252 -> 0 bytes .../textures/technicx32/technic_deployer_back.png | Bin 37128 -> 0 bytes .../technicx32/technic_deployer_bottom.png | Bin 38757 -> 0 bytes .../technicx32/technic_deployer_front_off.png | Bin 29441 -> 0 bytes .../technicx32/technic_deployer_front_on.png | Bin 23351 -> 0 bytes .../textures/technicx32/technic_deployer_side.png | Bin 38136 -> 0 bytes .../textures/technicx32/technic_deployer_side1.png | Bin 38291 -> 0 bytes .../textures/technicx32/technic_deployer_side2.png | Bin 38195 -> 0 bytes .../textures/technicx32/technic_deployer_top.png | Bin 38904 -> 0 bytes .../technicx32/technic_diamond_block_blue.png | Bin 3011 -> 0 bytes .../technicx32/technic_diamond_block_green.png | Bin 3033 -> 0 bytes .../technicx32/technic_diamond_block_red.png | Bin 2927 -> 0 bytes .../technicx32/technic_diamond_drill_head.png | Bin 978 -> 0 bytes .../technicx32/technic_doped_silicon_wafer.png | Bin 867 -> 0 bytes .../technicx32/technic_electric_furnace_bottom.png | Bin 2876 -> 0 bytes .../technicx32/technic_electric_furnace_front.png | Bin 2912 -> 0 bytes .../technic_electric_furnace_front_active.png | Bin 2912 -> 0 bytes .../technicx32/technic_electric_furnace_side.png | Bin 2917 -> 0 bytes .../technicx32/technic_electric_furnace_top.png | Bin 2957 -> 0 bytes .../technicx32/technic_fine_copper_wire.png | Bin 1814 -> 0 bytes .../textures/technicx32/technic_fine_gold_wire.png | Bin 1864 -> 0 bytes .../technicx32/technic_fine_silver_wire.png | Bin 2187 -> 0 bytes .../textures/technicx32/technic_flashlight.png | Bin 1901 -> 0 bytes .../technicx32/technic_generator_front.png | Bin 430 -> 0 bytes .../technicx32/technic_generator_front_active.png | Bin 454 -> 0 bytes .../textures/technicx32/technic_generator_side.png | Bin 341 -> 0 bytes .../textures/technicx32/technic_generator_top.png | Bin 388 -> 0 bytes .../technicx32/technic_geothermal_side.png | Bin 809 -> 0 bytes .../textures/technicx32/technic_geothermal_top.png | Bin 828 -> 0 bytes .../technicx32/technic_geothermal_top_active.png | Bin 819 -> 0 bytes .../textures/technicx32/technic_gold_dust.png | Bin 1285 -> 0 bytes .../textures/technicx32/technic_grinder_front.png | Bin 777 -> 0 bytes .../textures/technicx32/technic_grinder_side.png | Bin 692 -> 0 bytes .../textures/technicx32/technic_grinder_top.png | Bin 465 -> 0 bytes .../technicx32/technic_hv_grinder_bottom.png | Bin 2957 -> 0 bytes .../technicx32/technic_hv_grinder_front.png | Bin 2295 -> 0 bytes .../technicx32/technic_hv_grinder_front_active.png | Bin 2337 -> 0 bytes .../technicx32/technic_hv_grinder_side.png | Bin 2497 -> 0 bytes .../technicx32/technic_hv_grinder_side_tube.png | Bin 2580 -> 0 bytes .../textures/technicx32/technic_hv_grinder_top.png | Bin 1933 -> 0 bytes .../technicx32/technic_hv_nuclear_reactor_core.png | Bin 2545 -> 0 bytes .../technicx32/technic_hv_solar_array_bottom.png | Bin 2019 -> 0 bytes .../technicx32/technic_hv_solar_array_side.png | Bin 1772 -> 0 bytes .../technicx32/technic_hv_solar_array_top.png | Bin 2855 -> 0 bytes .../textures/technicx32/technic_hv_transformer.png | Bin 1789 -> 0 bytes .../technicx32/technic_injector_bottom.png | Bin 2667 -> 0 bytes .../textures/technicx32/technic_injector_side.png | Bin 2541 -> 0 bytes .../textures/technicx32/technic_injector_top.png | Bin 2633 -> 0 bytes .../textures/technicx32/technic_kalite_dust.png | Bin 809 -> 0 bytes .../textures/technicx32/technic_laser_beam.png | Bin 119 -> 0 bytes .../textures/technicx32/technic_lava_can.png | Bin 1045 -> 0 bytes .../technic/textures/technicx32/technic_light.png | Bin 246 -> 0 bytes .../technicx32/technic_lv_grinder_bottom.png | Bin 2957 -> 0 bytes .../technicx32/technic_lv_grinder_front.png | Bin 2389 -> 0 bytes .../technicx32/technic_lv_grinder_front_active.png | Bin 2416 -> 0 bytes .../technicx32/technic_lv_grinder_side.png | Bin 2687 -> 0 bytes .../textures/technicx32/technic_lv_grinder_top.png | Bin 2439 -> 0 bytes .../technicx32/technic_lv_solar_array_bottom.png | Bin 2019 -> 0 bytes .../technicx32/technic_lv_solar_array_side.png | Bin 1772 -> 0 bytes .../technicx32/technic_lv_solar_array_top.png | Bin 2728 -> 0 bytes .../textures/technicx32/technic_lv_transformer.png | Bin 1809 -> 0 bytes .../textures/technicx32/technic_machine_bottom.png | Bin 2876 -> 0 bytes .../textures/technicx32/technic_mining_drill.png | Bin 2099 -> 0 bytes .../technicx32/technic_mining_laser_mk1.png | Bin 358 -> 0 bytes .../textures/technicx32/technic_mithril_dust.png | Bin 1289 -> 0 bytes .../technic/textures/technicx32/technic_motor.png | Bin 2517 -> 0 bytes .../technicx32/technic_music_player_bottom.png | Bin 744 -> 0 bytes .../technicx32/technic_music_player_side.png | Bin 788 -> 0 bytes .../technicx32/technic_music_player_top.png | Bin 916 -> 0 bytes .../technicx32/technic_mv_alloy_furnace_bottom.png | Bin 2957 -> 0 bytes .../technicx32/technic_mv_alloy_furnace_front.png | Bin 2670 -> 0 bytes .../technic_mv_alloy_furnace_front_active.png | Bin 2673 -> 0 bytes .../technicx32/technic_mv_alloy_furnace_side.png | Bin 2503 -> 0 bytes .../technic_mv_alloy_furnace_side_tube.png | Bin 2559 -> 0 bytes .../technicx32/technic_mv_alloy_furnace_top.png | Bin 1929 -> 0 bytes .../technicx32/technic_mv_battery_box_bottom.png | Bin 2019 -> 0 bytes .../technicx32/technic_mv_battery_box_side0.png | Bin 2309 -> 0 bytes .../technicx32/technic_mv_battery_box_top.png | Bin 2390 -> 0 bytes .../textures/technicx32/technic_mv_cable_wield.png | Bin 2996 -> 0 bytes .../technic_mv_electric_furnace_bottom.png | Bin 2876 -> 0 bytes .../technic_mv_electric_furnace_front.png | Bin 2599 -> 0 bytes .../technic_mv_electric_furnace_front_active.png | Bin 2601 -> 0 bytes .../technic_mv_electric_furnace_side.png | Bin 2414 -> 0 bytes .../technic_mv_electric_furnace_side_tube.png | Bin 2449 -> 0 bytes .../technicx32/technic_mv_electric_furnace_top.png | Bin 1772 -> 0 bytes .../technicx32/technic_mv_grinder_bottom.png | Bin 2957 -> 0 bytes .../technicx32/technic_mv_grinder_front.png | Bin 2328 -> 0 bytes .../technicx32/technic_mv_grinder_front_active.png | Bin 2361 -> 0 bytes .../technicx32/technic_mv_grinder_side.png | Bin 2515 -> 0 bytes .../technicx32/technic_mv_grinder_side_tube.png | Bin 2613 -> 0 bytes .../textures/technicx32/technic_mv_grinder_top.png | Bin 1981 -> 0 bytes .../technicx32/technic_mv_solar_array_bottom.png | Bin 2019 -> 0 bytes .../technicx32/technic_mv_solar_array_side.png | Bin 1772 -> 0 bytes .../technicx32/technic_mv_solar_array_top.png | Bin 2784 -> 0 bytes .../textures/technicx32/technic_mv_transformer.png | Bin 1748 -> 0 bytes .../technicx32/technic_nodebreaker_back.png | Bin 2803 -> 0 bytes .../technicx32/technic_nodebreaker_bottom.png | Bin 2900 -> 0 bytes .../technicx32/technic_nodebreaker_bottom_off.png | Bin 3066 -> 0 bytes .../technicx32/technic_nodebreaker_bottom_on.png | Bin 3070 -> 0 bytes .../technicx32/technic_nodebreaker_front_off.png | Bin 2788 -> 0 bytes .../technicx32/technic_nodebreaker_front_on.png | Bin 2856 -> 0 bytes .../technicx32/technic_nodebreaker_side.png | Bin 2900 -> 0 bytes .../technicx32/technic_nodebreaker_side1.png | Bin 2894 -> 0 bytes .../technicx32/technic_nodebreaker_side1_off.png | Bin 3071 -> 0 bytes .../technicx32/technic_nodebreaker_side1_on.png | Bin 3073 -> 0 bytes .../technicx32/technic_nodebreaker_side2.png | Bin 2886 -> 0 bytes .../technicx32/technic_nodebreaker_side2_off.png | Bin 3062 -> 0 bytes .../technicx32/technic_nodebreaker_side2_on.png | Bin 3069 -> 0 bytes .../technicx32/technic_nodebreaker_top.png | Bin 2908 -> 0 bytes .../technicx32/technic_nodebreaker_top_off.png | Bin 3053 -> 0 bytes .../technicx32/technic_nodebreaker_top_on.png | Bin 3055 -> 0 bytes .../textures/technicx32/technic_power_meter.png | Bin 209 -> 0 bytes .../textures/technicx32/technic_power_meter1.png | Bin 271 -> 0 bytes .../textures/technicx32/technic_power_meter2.png | Bin 349 -> 0 bytes .../textures/technicx32/technic_power_meter3.png | Bin 395 -> 0 bytes .../textures/technicx32/technic_power_meter4.png | Bin 434 -> 0 bytes .../textures/technicx32/technic_power_meter5.png | Bin 452 -> 0 bytes .../textures/technicx32/technic_power_meter6.png | Bin 509 -> 0 bytes .../textures/technicx32/technic_power_meter7.png | Bin 576 -> 0 bytes .../textures/technicx32/technic_power_meter8.png | Bin 655 -> 0 bytes .../textures/technicx32/technic_power_meter_bg.png | Bin 278 -> 0 bytes .../textures/technicx32/technic_power_meter_fg.png | Bin 465 -> 0 bytes .../textures/technicx32/technic_raw_latex.png | Bin 1625 -> 0 bytes .../technic/textures/technicx32/technic_rubber.png | Bin 587 -> 0 bytes .../textures/technicx32/technic_rubber_sapling.png | Bin 333 -> 0 bytes .../technicx32/technic_rubber_tree_empty.png | Bin 835 -> 0 bytes .../technicx32/technic_rubber_tree_full.png | Bin 808 -> 0 bytes .../textures/technicx32/technic_screwdriver.png | Bin 1001 -> 0 bytes .../textures/technicx32/technic_silicon_wafer.png | Bin 913 -> 0 bytes .../textures/technicx32/technic_silver_dust.png | Bin 1295 -> 0 bytes .../technicx32/technic_solar_panel_bottom.png | Bin 2046 -> 0 bytes .../technicx32/technic_solar_panel_side.png | Bin 465 -> 0 bytes .../technicx32/technic_solar_panel_top.png | Bin 569 -> 0 bytes .../technicx32/technic_sonic_screwdriver.png | Bin 2064 -> 0 bytes .../technicx32/technic_stainless_steel_dust.png | Bin 1145 -> 0 bytes .../textures/technicx32/technic_talinite_dust.png | Bin 1088 -> 0 bytes .../textures/technicx32/technic_tin_dust.png | Bin 1261 -> 0 bytes .../textures/technicx32/technic_tree_tap.png | Bin 1045 -> 0 bytes .../textures/technicx32/technic_uranium_dust.png | Bin 1112 -> 0 bytes .../textures/technicx32/technic_water_can.png | Bin 1041 -> 0 bytes .../technicx32/technic_water_mill_side.png | Bin 907 -> 0 bytes .../textures/technicx32/technic_water_mill_top.png | Bin 828 -> 0 bytes .../technicx32/technic_water_mill_top_active.png | Bin 819 -> 0 bytes .../technicx32/technic_workshop_bottom.png | Bin 744 -> 0 bytes .../textures/technicx32/technic_workshop_side.png | Bin 589 -> 0 bytes .../textures/technicx32/technic_workshop_top.png | Bin 555 -> 0 bytes .../technicx32/technic_wrought_iron_dust.png | Bin 1202 -> 0 bytes .../textures/technicx32/technic_zinc_dust.png | Bin 1150 -> 0 bytes technic/technic/tools/cans.lua | 114 -- technic/technic/tools/chainsaw.lua | 366 ---- technic/technic/tools/flashlight.lua | 123 -- technic/technic/tools/init.lua | 23 - technic/technic/tools/mining_drill.lua | 419 ----- technic/technic/tools/mining_lasers.lua | 178 -- technic/technic/tools/prospector.lua | 128 -- technic/technic/tools/sonic_screwdriver.lua | 98 - technic/technic/tools/tree_tap.lua | 75 - technic/technic/tools/vacuum.lua | 61 - technic/technic_chests/README.md | 24 - technic/technic_chests/common.lua | 71 - technic/technic_chests/copper_chest.lua | 46 - technic/technic_chests/depends.txt | 4 - technic/technic_chests/gold_chest.lua | 57 - technic/technic_chests/init.lua | 18 - technic/technic_chests/iron_chest.lua | 53 - technic/technic_chests/locale/de.txt | 41 - technic/technic_chests/locale/template.txt | 39 - technic/technic_chests/locale/tr.txt | 41 - technic/technic_chests/mithril_chest.lua | 48 - technic/technic_chests/register.lua | 303 --- technic/technic_chests/silver_chest.lua | 48 - .../textures/technic_checkmark_icon.png | Bin 233 -> 0 bytes .../textures/technic_chest_form_bg.png | Bin 6404 -> 0 bytes .../textures/technic_chest_overlay_black.png | Bin 248 -> 0 bytes .../textures/technic_chest_overlay_blue.png | Bin 257 -> 0 bytes .../textures/technic_chest_overlay_brown.png | Bin 288 -> 0 bytes .../textures/technic_chest_overlay_cyan.png | Bin 259 -> 0 bytes .../textures/technic_chest_overlay_dark_green.png | Bin 269 -> 0 bytes .../textures/technic_chest_overlay_dark_grey.png | Bin 292 -> 0 bytes .../textures/technic_chest_overlay_green.png | Bin 278 -> 0 bytes .../textures/technic_chest_overlay_grey.png | Bin 299 -> 0 bytes .../textures/technic_chest_overlay_magenta.png | Bin 302 -> 0 bytes .../textures/technic_chest_overlay_orange.png | Bin 302 -> 0 bytes .../textures/technic_chest_overlay_pink.png | Bin 304 -> 0 bytes .../textures/technic_chest_overlay_red.png | Bin 262 -> 0 bytes .../textures/technic_chest_overlay_violet.png | Bin 287 -> 0 bytes .../textures/technic_chest_overlay_white.png | Bin 253 -> 0 bytes .../textures/technic_chest_overlay_yellow.png | Bin 274 -> 0 bytes .../textures/technic_colorbutton0.png | Bin 147 -> 0 bytes .../textures/technic_colorbutton1.png | Bin 148 -> 0 bytes .../textures/technic_colorbutton10.png | Bin 148 -> 0 bytes .../textures/technic_colorbutton11.png | Bin 148 -> 0 bytes .../textures/technic_colorbutton12.png | Bin 148 -> 0 bytes .../textures/technic_colorbutton13.png | Bin 148 -> 0 bytes .../textures/technic_colorbutton14.png | Bin 148 -> 0 bytes .../textures/technic_colorbutton15.png | Bin 3562 -> 0 bytes .../textures/technic_colorbutton2.png | Bin 148 -> 0 bytes .../textures/technic_colorbutton3.png | Bin 140 -> 0 bytes .../textures/technic_colorbutton4.png | Bin 148 -> 0 bytes .../textures/technic_colorbutton5.png | Bin 148 -> 0 bytes .../textures/technic_colorbutton6.png | Bin 148 -> 0 bytes .../textures/technic_colorbutton7.png | Bin 148 -> 0 bytes .../textures/technic_colorbutton8.png | Bin 148 -> 0 bytes .../textures/technic_colorbutton9.png | Bin 148 -> 0 bytes .../textures/technic_copper_chest_front.png | Bin 607 -> 0 bytes .../textures/technic_copper_chest_inventory.png | Bin 7661 -> 0 bytes .../textures/technic_copper_chest_lock_overlay.png | Bin 160 -> 0 bytes .../textures/technic_copper_chest_side.png | Bin 570 -> 0 bytes .../textures/technic_copper_chest_top.png | Bin 557 -> 0 bytes .../technic_chests/textures/technic_form_bg.png | Bin 6404 -> 0 bytes .../textures/technic_gold_chest_front.png | Bin 687 -> 0 bytes .../textures/technic_gold_chest_inventory.png | Bin 9893 -> 0 bytes .../textures/technic_gold_chest_lock_overlay.png | Bin 204 -> 0 bytes .../textures/technic_gold_chest_side.png | Bin 743 -> 0 bytes .../textures/technic_gold_chest_top.png | Bin 729 -> 0 bytes .../textures/technic_iron_chest_front.png | Bin 750 -> 0 bytes .../textures/technic_iron_chest_inventory.png | Bin 7037 -> 0 bytes .../textures/technic_iron_chest_lock_overlay.png | Bin 153 -> 0 bytes .../textures/technic_iron_chest_side.png | Bin 746 -> 0 bytes .../textures/technic_iron_chest_top.png | Bin 860 -> 0 bytes .../textures/technic_main_inventory.png | Bin 7646 -> 0 bytes .../textures/technic_mithril_chest_front.png | Bin 770 -> 0 bytes .../textures/technic_mithril_chest_inventory.png | Bin 9893 -> 0 bytes .../technic_mithril_chest_lock_overlay.png | Bin 155 -> 0 bytes .../textures/technic_mithril_chest_side.png | Bin 756 -> 0 bytes .../textures/technic_mithril_chest_top.png | Bin 775 -> 0 bytes .../textures/technic_pencil_icon.png | Bin 294 -> 0 bytes .../textures/technic_silver_chest_front.png | Bin 851 -> 0 bytes .../textures/technic_silver_chest_inventory.png | Bin 9163 -> 0 bytes .../textures/technic_silver_chest_lock_overlay.png | Bin 192 -> 0 bytes .../textures/technic_silver_chest_side.png | Bin 810 -> 0 bytes .../textures/technic_silver_chest_top.png | Bin 798 -> 0 bytes .../textures/technic_wooden_chest_inventory.png | Bin 5496 -> 0 bytes .../textures/x32/technic_copper_chest_front.png | Bin 2614 -> 0 bytes .../textures/x32/technic_copper_chest_side.png | Bin 2568 -> 0 bytes .../textures/x32/technic_copper_chest_top.png | Bin 2521 -> 0 bytes .../textures/x32/technic_gold_chest_front.png | Bin 2653 -> 0 bytes .../textures/x32/technic_gold_chest_side.png | Bin 2617 -> 0 bytes .../textures/x32/technic_gold_chest_top.png | Bin 2558 -> 0 bytes .../textures/x32/technic_iron_chest_front.png | Bin 2515 -> 0 bytes .../textures/x32/technic_iron_chest_side.png | Bin 2478 -> 0 bytes .../textures/x32/technic_iron_chest_top.png | Bin 2432 -> 0 bytes .../textures/x32/technic_mithril_chest_front.png | Bin 2656 -> 0 bytes .../textures/x32/technic_mithril_chest_side.png | Bin 2616 -> 0 bytes .../textures/x32/technic_mithril_chest_top.png | Bin 2558 -> 0 bytes .../textures/x32/technic_silver_chest_front.png | Bin 2241 -> 0 bytes .../textures/x32/technic_silver_chest_side.png | Bin 2146 -> 0 bytes .../textures/x32/technic_silver_chest_top.png | Bin 2226 -> 0 bytes technic/technic_chests/wooden_chest.lua | 51 - technic/technic_worldgen/config.lua | 15 - technic/technic_worldgen/crafts.lua | 198 -- technic/technic_worldgen/depends.txt | 3 - technic/technic_worldgen/init.lua | 26 - technic/technic_worldgen/locale/de.txt | 39 - technic/technic_worldgen/locale/template.txt | 37 - technic/technic_worldgen/locale/tr.txt | 38 - technic/technic_worldgen/mg.lua | 90 - technic/technic_worldgen/nodes.lua | 196 -- technic/technic_worldgen/oregen.lua | 191 -- technic/technic_worldgen/rubber.lua | 100 - .../textures/technic_brass_block.png | Bin 649 -> 0 bytes .../textures/technic_brass_dust.png | Bin 464 -> 0 bytes .../textures/technic_brass_ingot.png | Bin 377 -> 0 bytes .../textures/technic_carbon_steel_block.png | Bin 606 -> 0 bytes .../textures/technic_carbon_steel_ingot.png | Bin 354 -> 0 bytes .../textures/technic_cast_iron_block.png | Bin 606 -> 0 bytes .../textures/technic_cast_iron_ingot.png | Bin 353 -> 0 bytes .../textures/technic_chromium_block.png | Bin 611 -> 0 bytes .../textures/technic_chromium_ingot.png | Bin 337 -> 0 bytes .../textures/technic_chromium_lump.png | Bin 313 -> 0 bytes .../technic_worldgen/textures/technic_granite.png | Bin 947 -> 0 bytes .../textures/technic_lead_block.png | Bin 340 -> 0 bytes .../textures/technic_lead_dust.png | Bin 232 -> 0 bytes .../textures/technic_lead_ingot.png | Bin 248 -> 0 bytes .../textures/technic_lead_lump.png | Bin 228 -> 0 bytes .../technic_worldgen/textures/technic_marble.png | Bin 807 -> 0 bytes .../textures/technic_marble_bricks.png | Bin 959 -> 0 bytes .../textures/technic_mineral_chromium.png | Bin 887 -> 0 bytes .../textures/technic_mineral_lead.png | Bin 290 -> 0 bytes .../textures/technic_mineral_sulfur.png | Bin 237 -> 0 bytes .../textures/technic_mineral_uranium.png | Bin 912 -> 0 bytes .../textures/technic_mineral_zinc.png | Bin 891 -> 0 bytes .../technic_worldgen/textures/technic_rubber.png | Bin 587 -> 0 bytes .../textures/technic_rubber_leaves.png | Bin 444 -> 0 bytes .../textures/technic_rubber_sapling.png | Bin 333 -> 0 bytes .../textures/technic_rubber_tree_empty.png | Bin 835 -> 0 bytes .../textures/technic_rubber_tree_full.png | Bin 808 -> 0 bytes .../textures/technic_rubber_tree_grindings.png | Bin 252 -> 0 bytes .../textures/technic_stainless_steel_block.png | Bin 589 -> 0 bytes .../textures/technic_sulfur_dust.png | Bin 220 -> 0 bytes .../textures/technic_sulfur_lump.png | Bin 172 -> 0 bytes .../textures/technic_uranium_block.png | Bin 649 -> 0 bytes .../textures/technic_uranium_ingot.png | Bin 300 -> 0 bytes .../textures/technic_uranium_lump.png | Bin 352 -> 0 bytes .../textures/technic_wrought_iron_block.png | Bin 572 -> 0 bytes .../textures/technic_wrought_iron_ingot.png | Bin 334 -> 0 bytes .../textures/technic_zinc_block.png | Bin 681 -> 0 bytes .../textures/technic_zinc_ingot.png | Bin 341 -> 0 bytes .../textures/technic_zinc_lump.png | Bin 308 -> 0 bytes .../textures/x32/technic_brass_ingot.png | Bin 456 -> 0 bytes .../textures/x32/technic_chromium_ingot.png | Bin 242 -> 0 bytes .../textures/x32/technic_chromium_lump.png | Bin 213 -> 0 bytes .../textures/x32/technic_concrete_block.png | Bin 2319 -> 0 bytes .../textures/x32/technic_granite.png | Bin 947 -> 0 bytes .../textures/x32/technic_marble.png | Bin 807 -> 0 bytes .../textures/x32/technic_marble_bricks.png | Bin 959 -> 0 bytes .../textures/x32/technic_mineral_chromium.png | Bin 887 -> 0 bytes .../textures/x32/technic_mineral_uranium.png | Bin 912 -> 0 bytes .../textures/x32/technic_mineral_zinc.png | Bin 891 -> 0 bytes .../textures/x32/technic_rebar.png | Bin 813 -> 0 bytes .../textures/x32/technic_stainless_steel_ingot.png | Bin 230 -> 0 bytes .../textures/x32/technic_uranium.png | Bin 213 -> 0 bytes .../textures/x32/technic_zinc_ingot.png | Bin 242 -> 0 bytes .../textures/x32/technic_zinc_lump.png | Bin 214 -> 0 bytes .../hires/technic_hv_nuclear_reactor_core_128.png | Bin 0 -> 26143 bytes .../hires/technic_hv_nuclear_reactor_core_16.png | Bin 0 -> 896 bytes .../hires/technic_hv_nuclear_reactor_core_256.png | Bin 0 -> 84243 bytes .../hires/technic_hv_nuclear_reactor_core_32.png | Bin 0 -> 2545 bytes .../hires/technic_hv_nuclear_reactor_core_512.png | Bin 0 -> 254444 bytes .../hires/technic_hv_nuclear_reactor_core_64.png | Bin 0 -> 8114 bytes technic/textures/power_meter.png | Bin 0 -> 463 bytes technic/textures/technic_acacia_grindings.png | Bin 0 -> 207 bytes technic/textures/technic_admin_anchor.png | Bin 0 -> 873 bytes technic/textures/technic_akalin_dust.png | Bin 0 -> 240 bytes technic/textures/technic_alatro_dust.png | Bin 0 -> 241 bytes technic/textures/technic_arol_dust.png | Bin 0 -> 227 bytes technic/textures/technic_battery.png | Bin 0 -> 247 bytes technic/textures/technic_battery_box_side.png | Bin 0 -> 576 bytes technic/textures/technic_battery_box_side8.png | Bin 0 -> 639 bytes technic/textures/technic_battery_box_side_mv.png | Bin 0 -> 587 bytes technic/textures/technic_battery_meter_fg.png | Bin 0 -> 260 bytes technic/textures/technic_battery_reload.png | Bin 0 -> 287 bytes technic/textures/technic_bronze_dust.png | Bin 0 -> 461 bytes technic/textures/technic_bucket_corium.png | Bin 0 -> 256 bytes technic/textures/technic_carbon_cloth.png | Bin 0 -> 169 bytes technic/textures/technic_carbon_plate.png | Bin 0 -> 162 bytes technic/textures/technic_carbon_steel_dust.png | Bin 0 -> 416 bytes technic/textures/technic_cast_iron_dust.png | Bin 0 -> 420 bytes technic/textures/technic_chainsaw.png | Bin 0 -> 529 bytes technic/textures/technic_chernobylite_block.png | Bin 0 -> 666 bytes technic/textures/technic_chromium_dust.png | Bin 0 -> 443 bytes technic/textures/technic_cnc_bottom.png | Bin 0 -> 2006 bytes technic/textures/technic_cnc_cylinder.png | Bin 0 -> 6047 bytes .../textures/technic_cnc_cylinder_horizontal.png | Bin 0 -> 7130 bytes technic/textures/technic_cnc_element_cross.png | Bin 0 -> 4592 bytes technic/textures/technic_cnc_element_edge.png | Bin 0 -> 3898 bytes technic/textures/technic_cnc_element_end.png | Bin 0 -> 3563 bytes technic/textures/technic_cnc_element_straight.png | Bin 0 -> 4027 bytes technic/textures/technic_cnc_element_t.png | Bin 0 -> 4369 bytes technic/textures/technic_cnc_front.png | Bin 0 -> 2000 bytes technic/textures/technic_cnc_front_active.png | Bin 0 -> 2216 bytes technic/textures/technic_cnc_full.png | Bin 0 -> 997 bytes technic/textures/technic_cnc_half.png | Bin 0 -> 1564 bytes .../textures/technic_cnc_milling_background.png | Bin 0 -> 78748 bytes technic/textures/technic_cnc_oblate_spheroid.png | Bin 0 -> 8915 bytes technic/textures/technic_cnc_onecurvededge.png | Bin 0 -> 8170 bytes technic/textures/technic_cnc_pyramid.png | Bin 0 -> 4790 bytes technic/textures/technic_cnc_side.png | Bin 0 -> 1922 bytes technic/textures/technic_cnc_slope.png | Bin 0 -> 6081 bytes technic/textures/technic_cnc_slope_edge.png | Bin 0 -> 5900 bytes technic/textures/technic_cnc_slope_edge_upsdwn.png | Bin 0 -> 4831 bytes technic/textures/technic_cnc_slope_inner_edge.png | Bin 0 -> 7412 bytes .../technic_cnc_slope_inner_edge_upsdwn.png | Bin 0 -> 7404 bytes technic/textures/technic_cnc_slope_lying.png | Bin 0 -> 6815 bytes technic/textures/technic_cnc_slope_upsdwn.png | Bin 0 -> 5814 bytes technic/textures/technic_cnc_sphere.png | Bin 0 -> 5777 bytes technic/textures/technic_cnc_spike.png | Bin 0 -> 6392 bytes technic/textures/technic_cnc_stick.png | Bin 0 -> 2305 bytes technic/textures/technic_cnc_top.png | Bin 0 -> 2137 bytes technic/textures/technic_cnc_top_active.png | Bin 0 -> 2214 bytes technic/textures/technic_cnc_twocurvededge.png | Bin 0 -> 7119 bytes .../textures/technic_coal_alloy_furnace_bottom.png | Bin 0 -> 677 bytes .../textures/technic_coal_alloy_furnace_front.png | Bin 0 -> 681 bytes .../technic_coal_alloy_furnace_front_active.png | Bin 0 -> 697 bytes .../textures/technic_coal_alloy_furnace_side.png | Bin 0 -> 596 bytes .../textures/technic_coal_alloy_furnace_top.png | Bin 0 -> 596 bytes technic/textures/technic_coal_dust.png | Bin 0 -> 433 bytes technic/textures/technic_common_tree_grindings.png | Bin 0 -> 226 bytes technic/textures/technic_composite_plate.png | Bin 0 -> 165 bytes technic/textures/technic_constructor_back.png | Bin 0 -> 638 bytes technic/textures/technic_constructor_front_off.png | Bin 0 -> 635 bytes technic/textures/technic_constructor_front_on.png | Bin 0 -> 690 bytes .../technic_constructor_mk1_bottom_off.png | Bin 0 -> 638 bytes .../textures/technic_constructor_mk1_bottom_on.png | Bin 0 -> 664 bytes .../textures/technic_constructor_mk1_side1_off.png | Bin 0 -> 671 bytes .../textures/technic_constructor_mk1_side1_on.png | Bin 0 -> 687 bytes .../textures/technic_constructor_mk1_side2_off.png | Bin 0 -> 654 bytes .../textures/technic_constructor_mk1_side2_on.png | Bin 0 -> 671 bytes .../textures/technic_constructor_mk1_top_off.png | Bin 0 -> 626 bytes .../textures/technic_constructor_mk1_top_on.png | Bin 0 -> 644 bytes .../technic_constructor_mk2_bottom_off.png | Bin 0 -> 665 bytes .../textures/technic_constructor_mk2_bottom_on.png | Bin 0 -> 694 bytes .../textures/technic_constructor_mk2_side1_off.png | Bin 0 -> 701 bytes .../textures/technic_constructor_mk2_side1_on.png | Bin 0 -> 719 bytes .../textures/technic_constructor_mk2_side2_off.png | Bin 0 -> 683 bytes .../textures/technic_constructor_mk2_side2_on.png | Bin 0 -> 708 bytes .../textures/technic_constructor_mk2_top_off.png | Bin 0 -> 654 bytes .../textures/technic_constructor_mk2_top_on.png | Bin 0 -> 685 bytes .../technic_constructor_mk3_bottom_off.png | Bin 0 -> 700 bytes .../textures/technic_constructor_mk3_bottom_on.png | Bin 0 -> 721 bytes .../textures/technic_constructor_mk3_side1_off.png | Bin 0 -> 727 bytes .../textures/technic_constructor_mk3_side1_on.png | Bin 0 -> 762 bytes .../textures/technic_constructor_mk3_side2_off.png | Bin 0 -> 715 bytes .../textures/technic_constructor_mk3_side2_on.png | Bin 0 -> 753 bytes .../textures/technic_constructor_mk3_top_off.png | Bin 0 -> 687 bytes .../textures/technic_constructor_mk3_top_on.png | Bin 0 -> 725 bytes technic/textures/technic_control_logic_unit.png | Bin 0 -> 652 bytes technic/textures/technic_copper_coil.png | Bin 0 -> 2447 bytes technic/textures/technic_copper_dust.png | Bin 0 -> 466 bytes technic/textures/technic_copper_plate.png | Bin 0 -> 174 bytes .../textures/technic_corium_flowing_animated.png | Bin 0 -> 3278 bytes .../textures/technic_corium_source_animated.png | Bin 0 -> 2954 bytes technic/textures/technic_deployer_back.png | Bin 0 -> 757 bytes technic/textures/technic_deployer_bottom.png | Bin 0 -> 835 bytes technic/textures/technic_deployer_front_off.png | Bin 0 -> 800 bytes technic/textures/technic_deployer_front_on.png | Bin 0 -> 719 bytes technic/textures/technic_deployer_side.png | Bin 0 -> 908 bytes technic/textures/technic_deployer_side1.png | Bin 0 -> 908 bytes technic/textures/technic_deployer_side2.png | Bin 0 -> 910 bytes technic/textures/technic_deployer_top.png | Bin 0 -> 842 bytes technic/textures/technic_diamond_block_blue.png | Bin 0 -> 651 bytes technic/textures/technic_diamond_block_green.png | Bin 0 -> 636 bytes technic/textures/technic_diamond_block_red.png | Bin 0 -> 651 bytes technic/textures/technic_diamond_drill_head.png | Bin 0 -> 978 bytes technic/textures/technic_doped_silicon_wafer.png | Bin 0 -> 331 bytes technic/textures/technic_fine_copper_wire.png | Bin 0 -> 501 bytes technic/textures/technic_fine_gold_wire.png | Bin 0 -> 474 bytes technic/textures/technic_fine_silver_wire.png | Bin 0 -> 546 bytes technic/textures/technic_flashlight.png | Bin 0 -> 679 bytes technic/textures/technic_forcefield_animated.png | Bin 0 -> 3274 bytes .../textures/technic_forcefield_emitter_off.png | Bin 0 -> 204 bytes technic/textures/technic_forcefield_emitter_on.png | Bin 0 -> 204 bytes technic/textures/technic_frame.png | Bin 0 -> 32199 bytes technic/textures/technic_geothermal_side.png | Bin 0 -> 809 bytes technic/textures/technic_geothermal_top.png | Bin 0 -> 828 bytes technic/textures/technic_geothermal_top_active.png | Bin 0 -> 819 bytes technic/textures/technic_gold_dust.png | Bin 0 -> 468 bytes technic/textures/technic_graphite.png | Bin 0 -> 140 bytes technic/textures/technic_grinder_front.png | Bin 0 -> 777 bytes technic/textures/technic_grinder_side.png | Bin 0 -> 692 bytes technic/textures/technic_grinder_top.png | Bin 0 -> 465 bytes ...echnic_homedecor_glowlight_cube_white_sides.png | Bin 0 -> 255 bytes ...omedecor_glowlight_cube_white_sides_ceiling.png | Bin 0 -> 258 bytes .../technic_homedecor_glowlight_cube_white_tb.png | Bin 0 -> 261 bytes ...chnic_homedecor_glowlight_cube_yellow_sides.png | Bin 0 -> 350 bytes ...medecor_glowlight_cube_yellow_sides_ceiling.png | Bin 0 -> 353 bytes .../technic_homedecor_glowlight_cube_yellow_tb.png | Bin 0 -> 352 bytes ...chnic_homedecor_glowlight_thick_white_sides.png | Bin 0 -> 264 bytes ..._homedecor_glowlight_thick_white_wall_sides.png | Bin 0 -> 265 bytes ...hnic_homedecor_glowlight_thick_yellow_sides.png | Bin 0 -> 475 bytes ...homedecor_glowlight_thick_yellow_wall_sides.png | Bin 0 -> 478 bytes ...echnic_homedecor_glowlight_thin_white_sides.png | Bin 0 -> 225 bytes ...c_homedecor_glowlight_thin_white_wall_sides.png | Bin 0 -> 232 bytes ...chnic_homedecor_glowlight_thin_yellow_sides.png | Bin 0 -> 335 bytes ..._homedecor_glowlight_thin_yellow_wall_sides.png | Bin 0 -> 355 bytes .../technic_homedecor_glowlight_white_tb.png | Bin 0 -> 330 bytes .../technic_homedecor_glowlight_yellow_tb.png | Bin 0 -> 633 bytes technic/textures/technic_hv_battery_box_bottom.png | Bin 0 -> 653 bytes technic/textures/technic_hv_battery_box_side.png | Bin 0 -> 777 bytes technic/textures/technic_hv_battery_box_top.png | Bin 0 -> 792 bytes technic/textures/technic_hv_cable.png | Bin 0 -> 1705 bytes technic/textures/technic_hv_cable_wield.png | Bin 0 -> 601 bytes .../textures/technic_hv_down_converter_bottom.png | Bin 0 -> 653 bytes .../textures/technic_hv_down_converter_side.png | Bin 0 -> 609 bytes technic/textures/technic_hv_down_converter_top.png | Bin 0 -> 653 bytes technic/textures/technic_hv_generator_front.png | Bin 0 -> 450 bytes .../textures/technic_hv_generator_front_active.png | Bin 0 -> 469 bytes technic/textures/technic_hv_generator_side.png | Bin 0 -> 357 bytes technic/textures/technic_hv_generator_top.png | Bin 0 -> 384 bytes technic/textures/technic_hv_grinder_bottom.png | Bin 0 -> 862 bytes technic/textures/technic_hv_grinder_front.png | Bin 0 -> 716 bytes .../textures/technic_hv_grinder_front_active.png | Bin 0 -> 733 bytes technic/textures/technic_hv_grinder_side.png | Bin 0 -> 753 bytes technic/textures/technic_hv_grinder_side_tube.png | Bin 0 -> 791 bytes technic/textures/technic_hv_grinder_top.png | Bin 0 -> 616 bytes .../textures/technic_hv_nuclear_reactor_core.png | Bin 0 -> 896 bytes technic/textures/technic_hv_solar_array_bottom.png | Bin 0 -> 574 bytes technic/textures/technic_hv_solar_array_side.png | Bin 0 -> 709 bytes technic/textures/technic_hv_solar_array_top.png | Bin 0 -> 777 bytes technic/textures/technic_hv_transformer.png | Bin 0 -> 1801 bytes technic/textures/technic_injector_bottom.png | Bin 0 -> 2667 bytes technic/textures/technic_injector_side.png | Bin 0 -> 2541 bytes technic/textures/technic_injector_top.png | Bin 0 -> 2633 bytes technic/textures/technic_kalite_dust.png | Bin 0 -> 191 bytes technic/textures/technic_laser_beam_mk1.png | Bin 0 -> 279 bytes technic/textures/technic_laser_beam_mk2.png | Bin 0 -> 638 bytes technic/textures/technic_laser_beam_mk3.png | Bin 0 -> 547 bytes technic/textures/technic_lava_can.png | Bin 0 -> 445 bytes technic/textures/technic_light.png | Bin 0 -> 246 bytes .../textures/technic_lv_alloy_furnace_bottom.png | Bin 0 -> 738 bytes .../textures/technic_lv_alloy_furnace_front.png | Bin 0 -> 508 bytes .../technic_lv_alloy_furnace_front_active.png | Bin 0 -> 543 bytes technic/textures/technic_lv_alloy_furnace_side.png | Bin 0 -> 313 bytes technic/textures/technic_lv_alloy_furnace_top.png | Bin 0 -> 397 bytes technic/textures/technic_lv_battery_box_bottom.png | Bin 0 -> 738 bytes technic/textures/technic_lv_battery_box_side.png | Bin 0 -> 594 bytes technic/textures/technic_lv_battery_box_top.png | Bin 0 -> 337 bytes technic/textures/technic_lv_cable.png | Bin 0 -> 504 bytes technic/textures/technic_lv_cable_wield.png | Bin 0 -> 655 bytes technic/textures/technic_lv_compressor_back.png | Bin 0 -> 2893 bytes technic/textures/technic_lv_compressor_bottom.png | Bin 0 -> 2865 bytes technic/textures/technic_lv_compressor_front.png | Bin 0 -> 2714 bytes .../technic_lv_compressor_front_active.png | Bin 0 -> 2743 bytes technic/textures/technic_lv_compressor_side.png | Bin 0 -> 2893 bytes technic/textures/technic_lv_compressor_top.png | Bin 0 -> 2940 bytes .../technic_lv_electric_furnace_bottom.png | Bin 0 -> 423 bytes .../textures/technic_lv_electric_furnace_front.png | Bin 0 -> 443 bytes .../technic_lv_electric_furnace_front_active.png | Bin 0 -> 448 bytes .../textures/technic_lv_electric_furnace_side.png | Bin 0 -> 399 bytes .../textures/technic_lv_electric_furnace_top.png | Bin 0 -> 393 bytes technic/textures/technic_lv_extractor_bottom.png | Bin 0 -> 738 bytes technic/textures/technic_lv_extractor_front.png | Bin 0 -> 745 bytes .../textures/technic_lv_extractor_front_active.png | Bin 0 -> 770 bytes technic/textures/technic_lv_extractor_side.png | Bin 0 -> 683 bytes technic/textures/technic_lv_extractor_top.png | Bin 0 -> 544 bytes technic/textures/technic_lv_generator_front.png | Bin 0 -> 430 bytes .../textures/technic_lv_generator_front_active.png | Bin 0 -> 454 bytes technic/textures/technic_lv_generator_side.png | Bin 0 -> 341 bytes technic/textures/technic_lv_generator_top.png | Bin 0 -> 388 bytes technic/textures/technic_lv_grinder_bottom.png | Bin 0 -> 738 bytes technic/textures/technic_lv_grinder_front.png | Bin 0 -> 745 bytes .../textures/technic_lv_grinder_front_active.png | Bin 0 -> 770 bytes technic/textures/technic_lv_grinder_side.png | Bin 0 -> 683 bytes technic/textures/technic_lv_grinder_top.png | Bin 0 -> 544 bytes technic/textures/technic_lv_solar_array_bottom.png | Bin 0 -> 579 bytes technic/textures/technic_lv_solar_array_side.png | Bin 0 -> 465 bytes technic/textures/technic_lv_solar_array_top.png | Bin 0 -> 743 bytes technic/textures/technic_lv_transformer.png | Bin 0 -> 1821 bytes technic/textures/technic_machine_bottom.png | Bin 0 -> 572 bytes technic/textures/technic_machine_casing.png | Bin 0 -> 673 bytes technic/textures/technic_mining_drill.png | Bin 0 -> 2099 bytes technic/textures/technic_mining_drill_mk2.png | Bin 0 -> 1901 bytes technic/textures/technic_mining_drill_mk3.png | Bin 0 -> 1900 bytes technic/textures/technic_mining_laser_mk1.png | Bin 0 -> 216 bytes technic/textures/technic_mining_laser_mk2.png | Bin 0 -> 244 bytes technic/textures/technic_mining_laser_mk3.png | Bin 0 -> 312 bytes technic/textures/technic_mithril_dust.png | Bin 0 -> 467 bytes technic/textures/technic_mixed_metal_ingot.png | Bin 0 -> 426 bytes technic/textures/technic_motor.png | Bin 0 -> 2517 bytes technic/textures/technic_music_player_bottom.png | Bin 0 -> 744 bytes technic/textures/technic_music_player_side.png | Bin 0 -> 788 bytes technic/textures/technic_music_player_top.png | Bin 0 -> 916 bytes .../textures/technic_mv_alloy_furnace_bottom.png | Bin 0 -> 738 bytes .../textures/technic_mv_alloy_furnace_front.png | Bin 0 -> 2670 bytes .../technic_mv_alloy_furnace_front_active.png | Bin 0 -> 2673 bytes technic/textures/technic_mv_alloy_furnace_side.png | Bin 0 -> 2503 bytes .../technic_mv_alloy_furnace_side_tube.png | Bin 0 -> 403 bytes technic/textures/technic_mv_alloy_furnace_top.png | Bin 0 -> 1929 bytes technic/textures/technic_mv_battery_box_bottom.png | Bin 0 -> 738 bytes technic/textures/technic_mv_battery_box_side.png | Bin 0 -> 587 bytes technic/textures/technic_mv_battery_box_top.png | Bin 0 -> 337 bytes technic/textures/technic_mv_cable.png | Bin 0 -> 416 bytes technic/textures/technic_mv_cable_wield.png | Bin 0 -> 531 bytes technic/textures/technic_mv_centrifuge_bottom.png | Bin 0 -> 674 bytes technic/textures/technic_mv_centrifuge_front.png | Bin 0 -> 686 bytes .../technic_mv_centrifuge_front_active.png | Bin 0 -> 686 bytes technic/textures/technic_mv_centrifuge_side.png | Bin 0 -> 636 bytes technic/textures/technic_mv_centrifuge_top.png | Bin 0 -> 814 bytes technic/textures/technic_mv_compressor_back.png | Bin 0 -> 2893 bytes technic/textures/technic_mv_compressor_bottom.png | Bin 0 -> 2865 bytes technic/textures/technic_mv_compressor_front.png | Bin 0 -> 2714 bytes .../technic_mv_compressor_front_active.png | Bin 0 -> 2743 bytes technic/textures/technic_mv_compressor_side.png | Bin 0 -> 2893 bytes technic/textures/technic_mv_compressor_top.png | Bin 0 -> 2940 bytes .../textures/technic_mv_down_converter_bottom.png | Bin 0 -> 738 bytes .../textures/technic_mv_down_converter_side.png | Bin 0 -> 670 bytes technic/textures/technic_mv_down_converter_top.png | Bin 0 -> 738 bytes .../technic_mv_electric_furnace_bottom.png | Bin 0 -> 427 bytes .../textures/technic_mv_electric_furnace_front.png | Bin 0 -> 535 bytes .../technic_mv_electric_furnace_front_active.png | Bin 0 -> 541 bytes .../textures/technic_mv_electric_furnace_side.png | Bin 0 -> 421 bytes .../technic_mv_electric_furnace_side_tube.png | Bin 0 -> 2449 bytes .../textures/technic_mv_electric_furnace_top.png | Bin 0 -> 1772 bytes technic/textures/technic_mv_extractor_bottom.png | Bin 0 -> 738 bytes technic/textures/technic_mv_extractor_front.png | Bin 0 -> 749 bytes .../textures/technic_mv_extractor_front_active.png | Bin 0 -> 778 bytes technic/textures/technic_mv_extractor_side.png | Bin 0 -> 726 bytes technic/textures/technic_mv_extractor_top.png | Bin 0 -> 542 bytes technic/textures/technic_mv_generator_front.png | Bin 0 -> 425 bytes .../textures/technic_mv_generator_front_active.png | Bin 0 -> 440 bytes technic/textures/technic_mv_generator_side.png | Bin 0 -> 317 bytes technic/textures/technic_mv_generator_top.png | Bin 0 -> 322 bytes technic/textures/technic_mv_grinder_bottom.png | Bin 0 -> 738 bytes technic/textures/technic_mv_grinder_front.png | Bin 0 -> 749 bytes .../textures/technic_mv_grinder_front_active.png | Bin 0 -> 778 bytes technic/textures/technic_mv_grinder_side.png | Bin 0 -> 726 bytes technic/textures/technic_mv_grinder_side_tube.png | Bin 0 -> 739 bytes technic/textures/technic_mv_grinder_top.png | Bin 0 -> 542 bytes technic/textures/technic_mv_solar_array_bottom.png | Bin 0 -> 574 bytes technic/textures/technic_mv_solar_array_side.png | Bin 0 -> 628 bytes technic/textures/technic_mv_solar_array_top.png | Bin 0 -> 728 bytes technic/textures/technic_mv_transformer.png | Bin 0 -> 1748 bytes technic/textures/technic_nodebreaker_back.png | Bin 0 -> 632 bytes technic/textures/technic_nodebreaker_bottom.png | Bin 0 -> 38757 bytes .../textures/technic_nodebreaker_bottom_off.png | Bin 0 -> 556 bytes technic/textures/technic_nodebreaker_bottom_on.png | Bin 0 -> 549 bytes technic/textures/technic_nodebreaker_front_off.png | Bin 0 -> 653 bytes technic/textures/technic_nodebreaker_front_on.png | Bin 0 -> 659 bytes technic/textures/technic_nodebreaker_side.png | Bin 0 -> 38136 bytes technic/textures/technic_nodebreaker_side1.png | Bin 0 -> 38291 bytes technic/textures/technic_nodebreaker_side1_off.png | Bin 0 -> 616 bytes technic/textures/technic_nodebreaker_side1_on.png | Bin 0 -> 610 bytes technic/textures/technic_nodebreaker_side2.png | Bin 0 -> 38195 bytes technic/textures/technic_nodebreaker_side2_off.png | Bin 0 -> 606 bytes technic/textures/technic_nodebreaker_side2_on.png | Bin 0 -> 598 bytes technic/textures/technic_nodebreaker_top.png | Bin 0 -> 38904 bytes technic/textures/technic_nodebreaker_top_off.png | Bin 0 -> 556 bytes technic/textures/technic_nodebreaker_top_on.png | Bin 0 -> 558 bytes technic/textures/technic_power_meter.png | Bin 0 -> 209 bytes technic/textures/technic_power_meter0.png | Bin 0 -> 103 bytes technic/textures/technic_power_meter1.png | Bin 0 -> 193 bytes technic/textures/technic_power_meter2.png | Bin 0 -> 232 bytes technic/textures/technic_power_meter3.png | Bin 0 -> 255 bytes technic/textures/technic_power_meter4.png | Bin 0 -> 268 bytes technic/textures/technic_power_meter5.png | Bin 0 -> 275 bytes technic/textures/technic_power_meter6.png | Bin 0 -> 281 bytes technic/textures/technic_power_meter7.png | Bin 0 -> 298 bytes technic/textures/technic_power_meter8.png | Bin 0 -> 314 bytes technic/textures/technic_power_meter_bg.png | Bin 0 -> 278 bytes technic/textures/technic_power_meter_fg.png | Bin 0 -> 465 bytes technic/textures/technic_prospector.png | Bin 0 -> 367 bytes technic/textures/technic_raw_latex.png | Bin 0 -> 484 bytes technic/textures/technic_rubber.png | Bin 0 -> 587 bytes technic/textures/technic_rubber_leaves.png | Bin 0 -> 444 bytes technic/textures/technic_rubber_sapling.png | Bin 0 -> 333 bytes technic/textures/technic_rubber_tree_empty.png | Bin 0 -> 835 bytes technic/textures/technic_rubber_tree_full.png | Bin 0 -> 808 bytes technic/textures/technic_rubber_tree_grindings.png | Bin 0 -> 252 bytes technic/textures/technic_sawdust.png | Bin 0 -> 229 bytes technic/textures/technic_screwdriver.png | Bin 0 -> 1001 bytes technic/textures/technic_silicon_wafer.png | Bin 0 -> 913 bytes technic/textures/technic_silver_dust.png | Bin 0 -> 420 bytes technic/textures/technic_solar_panel_bottom.png | Bin 0 -> 579 bytes technic/textures/technic_solar_panel_side.png | Bin 0 -> 465 bytes technic/textures/technic_solar_panel_top.png | Bin 0 -> 569 bytes technic/textures/technic_sonic_screwdriver.png | Bin 0 -> 240 bytes technic/textures/technic_stainless_steel_dust.png | Bin 0 -> 445 bytes technic/textures/technic_stainless_steel_ingot.png | Bin 0 -> 310 bytes .../textures/technic_supply_converter_bottom.png | Bin 0 -> 738 bytes technic/textures/technic_supply_converter_side.png | Bin 0 -> 670 bytes technic/textures/technic_supply_converter_top.png | Bin 0 -> 738 bytes technic/textures/technic_talinite_dust.png | Bin 0 -> 226 bytes technic/textures/technic_tin_dust.png | Bin 0 -> 241 bytes technic/textures/technic_tool_mode1.png | Bin 0 -> 361 bytes technic/textures/technic_tool_mode2.png | Bin 0 -> 571 bytes technic/textures/technic_tool_mode3.png | Bin 0 -> 622 bytes technic/textures/technic_tool_mode4.png | Bin 0 -> 455 bytes technic/textures/technic_tool_mode5.png | Bin 0 -> 535 bytes technic/textures/technic_tool_mode6.png | Bin 0 -> 633 bytes technic/textures/technic_tool_mode7.png | Bin 0 -> 481 bytes technic/textures/technic_tool_mode8.png | Bin 0 -> 692 bytes technic/textures/technic_tool_mode9.png | Bin 0 -> 623 bytes technic/textures/technic_tree_tap.png | Bin 0 -> 1045 bytes technic/textures/technic_uranium_dust.png | Bin 0 -> 229 bytes technic/textures/technic_uranium_fuel.png | Bin 0 -> 158 bytes technic/textures/technic_vacuum.png | Bin 0 -> 705 bytes technic/textures/technic_water_can.png | Bin 0 -> 443 bytes technic/textures/technic_water_mill_side.png | Bin 0 -> 907 bytes technic/textures/technic_water_mill_top.png | Bin 0 -> 828 bytes technic/textures/technic_water_mill_top_active.png | Bin 0 -> 819 bytes technic/textures/technic_workshop_bottom.png | Bin 0 -> 744 bytes technic/textures/technic_workshop_side.png | Bin 0 -> 589 bytes technic/textures/technic_workshop_top.png | Bin 0 -> 555 bytes technic/textures/technic_wrought_iron_dust.png | Bin 0 -> 448 bytes technic/textures/technic_zinc_dust.png | Bin 0 -> 246 bytes .../textures/technicx32/technic_akalin_dust.png | Bin 0 -> 1156 bytes .../textures/technicx32/technic_alatro_dust.png | Bin 0 -> 1134 bytes .../technicx32/technic_alloy_furnace_front.png | Bin 0 -> 2756 bytes .../technic_alloy_furnace_front_active.png | Bin 0 -> 2757 bytes .../technicx32/technic_alloy_furnace_side.png | Bin 0 -> 2667 bytes .../technicx32/technic_alloy_furnace_top.png | Bin 0 -> 2431 bytes technic/textures/technicx32/technic_arol_dust.png | Bin 0 -> 1101 bytes technic/textures/technicx32/technic_battery.png | Bin 0 -> 247 bytes .../technicx32/technic_battery_box_bottom.png | Bin 0 -> 2046 bytes .../technicx32/technic_battery_box_side0.png | Bin 0 -> 2313 bytes .../technicx32/technic_battery_box_top.png | Bin 0 -> 2390 bytes .../textures/technicx32/technic_battery_reload.png | Bin 0 -> 8201 bytes technic/textures/technicx32/technic_brass_dust.png | Bin 0 -> 1297 bytes .../textures/technicx32/technic_bronze_dust.png | Bin 0 -> 1304 bytes .../technicx32/technic_carbon_steel_dust.png | Bin 0 -> 1228 bytes .../textures/technicx32/technic_cast_iron_dust.png | Bin 0 -> 1225 bytes technic/textures/technicx32/technic_chainsaw.png | Bin 0 -> 17656 bytes .../textures/technicx32/technic_chromium_dust.png | Bin 0 -> 1162 bytes .../technic_coal_alloy_furnace_bottom.png | Bin 0 -> 2957 bytes .../technic_coal_alloy_furnace_front.png | Bin 0 -> 2802 bytes .../technic_coal_alloy_furnace_front_active.png | Bin 0 -> 2953 bytes .../technicx32/technic_coal_alloy_furnace_side.png | Bin 0 -> 2667 bytes .../technicx32/technic_coal_alloy_furnace_top.png | Bin 0 -> 2431 bytes technic/textures/technicx32/technic_coal_dust.png | Bin 0 -> 1077 bytes .../technicx32/technic_constructor_back.png | Bin 0 -> 2094 bytes .../technicx32/technic_constructor_front_off.png | Bin 0 -> 2677 bytes .../technicx32/technic_constructor_front_on.png | Bin 0 -> 2627 bytes .../technic_constructor_mk1_bottom_off.png | Bin 0 -> 2272 bytes .../technic_constructor_mk1_bottom_on.png | Bin 0 -> 2308 bytes .../technic_constructor_mk1_side1_off.png | Bin 0 -> 2327 bytes .../technic_constructor_mk1_side1_on.png | Bin 0 -> 2342 bytes .../technic_constructor_mk1_side2_off.png | Bin 0 -> 2326 bytes .../technic_constructor_mk1_side2_on.png | Bin 0 -> 2338 bytes .../technicx32/technic_constructor_mk1_top_off.png | Bin 0 -> 2292 bytes .../technicx32/technic_constructor_mk1_top_on.png | Bin 0 -> 2319 bytes .../technic_constructor_mk2_bottom_off.png | Bin 0 -> 2281 bytes .../technic_constructor_mk2_bottom_on.png | Bin 0 -> 2316 bytes .../technic_constructor_mk2_side1_off.png | Bin 0 -> 2339 bytes .../technic_constructor_mk2_side1_on.png | Bin 0 -> 2355 bytes .../technic_constructor_mk2_side2_off.png | Bin 0 -> 2338 bytes .../technic_constructor_mk2_side2_on.png | Bin 0 -> 2354 bytes .../technicx32/technic_constructor_mk2_top_off.png | Bin 0 -> 2307 bytes .../technicx32/technic_constructor_mk2_top_on.png | Bin 0 -> 2329 bytes .../technic_constructor_mk3_bottom_off.png | Bin 0 -> 2286 bytes .../technic_constructor_mk3_bottom_on.png | Bin 0 -> 2318 bytes .../technic_constructor_mk3_side1_off.png | Bin 0 -> 2378 bytes .../technic_constructor_mk3_side1_on.png | Bin 0 -> 2402 bytes .../technic_constructor_mk3_side2_off.png | Bin 0 -> 2313 bytes .../technic_constructor_mk3_side2_on.png | Bin 0 -> 2338 bytes .../technicx32/technic_constructor_mk3_top_off.png | Bin 0 -> 2313 bytes .../technicx32/technic_constructor_mk3_top_on.png | Bin 0 -> 2338 bytes .../technicx32/technic_control_logic_unit.png | Bin 0 -> 1494 bytes .../textures/technicx32/technic_copper_coil.png | Bin 0 -> 2447 bytes .../textures/technicx32/technic_copper_dust.png | Bin 0 -> 1252 bytes .../textures/technicx32/technic_deployer_back.png | Bin 0 -> 37128 bytes .../technicx32/technic_deployer_bottom.png | Bin 0 -> 38757 bytes .../technicx32/technic_deployer_front_off.png | Bin 0 -> 29441 bytes .../technicx32/technic_deployer_front_on.png | Bin 0 -> 23351 bytes .../textures/technicx32/technic_deployer_side.png | Bin 0 -> 38136 bytes .../textures/technicx32/technic_deployer_side1.png | Bin 0 -> 38291 bytes .../textures/technicx32/technic_deployer_side2.png | Bin 0 -> 38195 bytes .../textures/technicx32/technic_deployer_top.png | Bin 0 -> 38904 bytes .../technicx32/technic_diamond_block_blue.png | Bin 0 -> 3011 bytes .../technicx32/technic_diamond_block_green.png | Bin 0 -> 3033 bytes .../technicx32/technic_diamond_block_red.png | Bin 0 -> 2927 bytes .../technicx32/technic_diamond_drill_head.png | Bin 0 -> 978 bytes .../technicx32/technic_doped_silicon_wafer.png | Bin 0 -> 867 bytes .../technicx32/technic_electric_furnace_bottom.png | Bin 0 -> 2876 bytes .../technicx32/technic_electric_furnace_front.png | Bin 0 -> 2912 bytes .../technic_electric_furnace_front_active.png | Bin 0 -> 2912 bytes .../technicx32/technic_electric_furnace_side.png | Bin 0 -> 2917 bytes .../technicx32/technic_electric_furnace_top.png | Bin 0 -> 2957 bytes .../technicx32/technic_fine_copper_wire.png | Bin 0 -> 1814 bytes .../textures/technicx32/technic_fine_gold_wire.png | Bin 0 -> 1864 bytes .../technicx32/technic_fine_silver_wire.png | Bin 0 -> 2187 bytes technic/textures/technicx32/technic_flashlight.png | Bin 0 -> 1901 bytes .../technicx32/technic_generator_front.png | Bin 0 -> 430 bytes .../technicx32/technic_generator_front_active.png | Bin 0 -> 454 bytes .../textures/technicx32/technic_generator_side.png | Bin 0 -> 341 bytes .../textures/technicx32/technic_generator_top.png | Bin 0 -> 388 bytes .../technicx32/technic_geothermal_side.png | Bin 0 -> 809 bytes .../textures/technicx32/technic_geothermal_top.png | Bin 0 -> 828 bytes .../technicx32/technic_geothermal_top_active.png | Bin 0 -> 819 bytes technic/textures/technicx32/technic_gold_dust.png | Bin 0 -> 1285 bytes .../textures/technicx32/technic_grinder_front.png | Bin 0 -> 777 bytes .../textures/technicx32/technic_grinder_side.png | Bin 0 -> 692 bytes .../textures/technicx32/technic_grinder_top.png | Bin 0 -> 465 bytes .../technicx32/technic_hv_grinder_bottom.png | Bin 0 -> 2957 bytes .../technicx32/technic_hv_grinder_front.png | Bin 0 -> 2295 bytes .../technicx32/technic_hv_grinder_front_active.png | Bin 0 -> 2337 bytes .../technicx32/technic_hv_grinder_side.png | Bin 0 -> 2497 bytes .../technicx32/technic_hv_grinder_side_tube.png | Bin 0 -> 2580 bytes .../textures/technicx32/technic_hv_grinder_top.png | Bin 0 -> 1933 bytes .../technicx32/technic_hv_nuclear_reactor_core.png | Bin 0 -> 2545 bytes .../technicx32/technic_hv_solar_array_bottom.png | Bin 0 -> 2019 bytes .../technicx32/technic_hv_solar_array_side.png | Bin 0 -> 1772 bytes .../technicx32/technic_hv_solar_array_top.png | Bin 0 -> 2855 bytes .../textures/technicx32/technic_hv_transformer.png | Bin 0 -> 1789 bytes .../technicx32/technic_injector_bottom.png | Bin 0 -> 2667 bytes .../textures/technicx32/technic_injector_side.png | Bin 0 -> 2541 bytes .../textures/technicx32/technic_injector_top.png | Bin 0 -> 2633 bytes .../textures/technicx32/technic_kalite_dust.png | Bin 0 -> 809 bytes technic/textures/technicx32/technic_laser_beam.png | Bin 0 -> 119 bytes technic/textures/technicx32/technic_lava_can.png | Bin 0 -> 1045 bytes technic/textures/technicx32/technic_light.png | Bin 0 -> 246 bytes .../technicx32/technic_lv_grinder_bottom.png | Bin 0 -> 2957 bytes .../technicx32/technic_lv_grinder_front.png | Bin 0 -> 2389 bytes .../technicx32/technic_lv_grinder_front_active.png | Bin 0 -> 2416 bytes .../technicx32/technic_lv_grinder_side.png | Bin 0 -> 2687 bytes .../textures/technicx32/technic_lv_grinder_top.png | Bin 0 -> 2439 bytes .../technicx32/technic_lv_solar_array_bottom.png | Bin 0 -> 2019 bytes .../technicx32/technic_lv_solar_array_side.png | Bin 0 -> 1772 bytes .../technicx32/technic_lv_solar_array_top.png | Bin 0 -> 2728 bytes .../textures/technicx32/technic_lv_transformer.png | Bin 0 -> 1809 bytes .../textures/technicx32/technic_machine_bottom.png | Bin 0 -> 2876 bytes .../textures/technicx32/technic_mining_drill.png | Bin 0 -> 2099 bytes .../technicx32/technic_mining_laser_mk1.png | Bin 0 -> 358 bytes .../textures/technicx32/technic_mithril_dust.png | Bin 0 -> 1289 bytes technic/textures/technicx32/technic_motor.png | Bin 0 -> 2517 bytes .../technicx32/technic_music_player_bottom.png | Bin 0 -> 744 bytes .../technicx32/technic_music_player_side.png | Bin 0 -> 788 bytes .../technicx32/technic_music_player_top.png | Bin 0 -> 916 bytes .../technicx32/technic_mv_alloy_furnace_bottom.png | Bin 0 -> 2957 bytes .../technicx32/technic_mv_alloy_furnace_front.png | Bin 0 -> 2670 bytes .../technic_mv_alloy_furnace_front_active.png | Bin 0 -> 2673 bytes .../technicx32/technic_mv_alloy_furnace_side.png | Bin 0 -> 2503 bytes .../technic_mv_alloy_furnace_side_tube.png | Bin 0 -> 2559 bytes .../technicx32/technic_mv_alloy_furnace_top.png | Bin 0 -> 1929 bytes .../technicx32/technic_mv_battery_box_bottom.png | Bin 0 -> 2019 bytes .../technicx32/technic_mv_battery_box_side0.png | Bin 0 -> 2309 bytes .../technicx32/technic_mv_battery_box_top.png | Bin 0 -> 2390 bytes .../textures/technicx32/technic_mv_cable_wield.png | Bin 0 -> 2996 bytes .../technic_mv_electric_furnace_bottom.png | Bin 0 -> 2876 bytes .../technic_mv_electric_furnace_front.png | Bin 0 -> 2599 bytes .../technic_mv_electric_furnace_front_active.png | Bin 0 -> 2601 bytes .../technic_mv_electric_furnace_side.png | Bin 0 -> 2414 bytes .../technic_mv_electric_furnace_side_tube.png | Bin 0 -> 2449 bytes .../technicx32/technic_mv_electric_furnace_top.png | Bin 0 -> 1772 bytes .../technicx32/technic_mv_grinder_bottom.png | Bin 0 -> 2957 bytes .../technicx32/technic_mv_grinder_front.png | Bin 0 -> 2328 bytes .../technicx32/technic_mv_grinder_front_active.png | Bin 0 -> 2361 bytes .../technicx32/technic_mv_grinder_side.png | Bin 0 -> 2515 bytes .../technicx32/technic_mv_grinder_side_tube.png | Bin 0 -> 2613 bytes .../textures/technicx32/technic_mv_grinder_top.png | Bin 0 -> 1981 bytes .../technicx32/technic_mv_solar_array_bottom.png | Bin 0 -> 2019 bytes .../technicx32/technic_mv_solar_array_side.png | Bin 0 -> 1772 bytes .../technicx32/technic_mv_solar_array_top.png | Bin 0 -> 2784 bytes .../textures/technicx32/technic_mv_transformer.png | Bin 0 -> 1748 bytes .../technicx32/technic_nodebreaker_back.png | Bin 0 -> 2803 bytes .../technicx32/technic_nodebreaker_bottom.png | Bin 0 -> 2900 bytes .../technicx32/technic_nodebreaker_bottom_off.png | Bin 0 -> 3066 bytes .../technicx32/technic_nodebreaker_bottom_on.png | Bin 0 -> 3070 bytes .../technicx32/technic_nodebreaker_front_off.png | Bin 0 -> 2788 bytes .../technicx32/technic_nodebreaker_front_on.png | Bin 0 -> 2856 bytes .../technicx32/technic_nodebreaker_side.png | Bin 0 -> 2900 bytes .../technicx32/technic_nodebreaker_side1.png | Bin 0 -> 2894 bytes .../technicx32/technic_nodebreaker_side1_off.png | Bin 0 -> 3071 bytes .../technicx32/technic_nodebreaker_side1_on.png | Bin 0 -> 3073 bytes .../technicx32/technic_nodebreaker_side2.png | Bin 0 -> 2886 bytes .../technicx32/technic_nodebreaker_side2_off.png | Bin 0 -> 3062 bytes .../technicx32/technic_nodebreaker_side2_on.png | Bin 0 -> 3069 bytes .../technicx32/technic_nodebreaker_top.png | Bin 0 -> 2908 bytes .../technicx32/technic_nodebreaker_top_off.png | Bin 0 -> 3053 bytes .../technicx32/technic_nodebreaker_top_on.png | Bin 0 -> 3055 bytes .../textures/technicx32/technic_power_meter.png | Bin 0 -> 209 bytes .../textures/technicx32/technic_power_meter1.png | Bin 0 -> 271 bytes .../textures/technicx32/technic_power_meter2.png | Bin 0 -> 349 bytes .../textures/technicx32/technic_power_meter3.png | Bin 0 -> 395 bytes .../textures/technicx32/technic_power_meter4.png | Bin 0 -> 434 bytes .../textures/technicx32/technic_power_meter5.png | Bin 0 -> 452 bytes .../textures/technicx32/technic_power_meter6.png | Bin 0 -> 509 bytes .../textures/technicx32/technic_power_meter7.png | Bin 0 -> 576 bytes .../textures/technicx32/technic_power_meter8.png | Bin 0 -> 655 bytes .../textures/technicx32/technic_power_meter_bg.png | Bin 0 -> 278 bytes .../textures/technicx32/technic_power_meter_fg.png | Bin 0 -> 465 bytes technic/textures/technicx32/technic_raw_latex.png | Bin 0 -> 1625 bytes technic/textures/technicx32/technic_rubber.png | Bin 0 -> 587 bytes .../textures/technicx32/technic_rubber_sapling.png | Bin 0 -> 333 bytes .../technicx32/technic_rubber_tree_empty.png | Bin 0 -> 835 bytes .../technicx32/technic_rubber_tree_full.png | Bin 0 -> 808 bytes .../textures/technicx32/technic_screwdriver.png | Bin 0 -> 1001 bytes .../textures/technicx32/technic_silicon_wafer.png | Bin 0 -> 913 bytes .../textures/technicx32/technic_silver_dust.png | Bin 0 -> 1295 bytes .../technicx32/technic_solar_panel_bottom.png | Bin 0 -> 2046 bytes .../technicx32/technic_solar_panel_side.png | Bin 0 -> 465 bytes .../technicx32/technic_solar_panel_top.png | Bin 0 -> 569 bytes .../technicx32/technic_sonic_screwdriver.png | Bin 0 -> 2064 bytes .../technicx32/technic_stainless_steel_dust.png | Bin 0 -> 1145 bytes .../textures/technicx32/technic_talinite_dust.png | Bin 0 -> 1088 bytes technic/textures/technicx32/technic_tin_dust.png | Bin 0 -> 1261 bytes technic/textures/technicx32/technic_tree_tap.png | Bin 0 -> 1045 bytes .../textures/technicx32/technic_uranium_dust.png | Bin 0 -> 1112 bytes technic/textures/technicx32/technic_water_can.png | Bin 0 -> 1041 bytes .../technicx32/technic_water_mill_side.png | Bin 0 -> 907 bytes .../textures/technicx32/technic_water_mill_top.png | Bin 0 -> 828 bytes .../technicx32/technic_water_mill_top_active.png | Bin 0 -> 819 bytes .../technicx32/technic_workshop_bottom.png | Bin 0 -> 744 bytes .../textures/technicx32/technic_workshop_side.png | Bin 0 -> 589 bytes .../textures/technicx32/technic_workshop_top.png | Bin 0 -> 555 bytes .../technicx32/technic_wrought_iron_dust.png | Bin 0 -> 1202 bytes technic/textures/technicx32/technic_zinc_dust.png | Bin 0 -> 1150 bytes technic/tools/cans.lua | 114 ++ technic/tools/chainsaw.lua | 366 ++++ technic/tools/flashlight.lua | 123 ++ technic/tools/init.lua | 23 + technic/tools/mining_drill.lua | 419 +++++ technic/tools/mining_lasers.lua | 178 ++ technic/tools/prospector.lua | 128 ++ technic/tools/sonic_screwdriver.lua | 98 + technic/tools/tree_tap.lua | 75 + technic/tools/vacuum.lua | 61 + technic/wrench/depends.txt | 6 - technic/wrench/init.lua | 162 -- technic/wrench/locale/de.txt | 7 - technic/wrench/locale/template.txt | 5 - technic/wrench/locale/tr.txt | 5 - technic/wrench/support.lua | 73 - technic/wrench/technic.lua | 343 ---- technic/wrench/textures/technic_wrench.png | Bin 249 -> 0 bytes 1540 files changed, 13869 insertions(+), 18195 deletions(-) delete mode 100644 technic/.mailmap delete mode 100644 technic/concrete/depends.txt delete mode 100644 technic/concrete/init.lua delete mode 100644 technic/concrete/locale/de.txt delete mode 100644 technic/concrete/locale/template.txt delete mode 100644 technic/concrete/locale/tr.txt delete mode 100644 technic/concrete/textures/technic_blast_resistant_concrete_block.png delete mode 100644 technic/concrete/textures/technic_concrete_block.png delete mode 100644 technic/concrete/textures/technic_rebar.png delete mode 100644 technic/concrete/textures/x32/technic_concrete_block.png delete mode 100644 technic/concrete/textures/x32/technic_rebar.png create mode 100644 technic/config.lua create mode 100644 technic/crafts.lua create mode 100644 technic/depends.txt delete mode 100644 technic/extranodes/depends.txt delete mode 100644 technic/extranodes/init.lua delete mode 100644 technic/extranodes/locale/de.txt delete mode 100644 technic/extranodes/locale/template.txt delete mode 100644 technic/extranodes/locale/tr.txt create mode 100644 technic/helpers.lua create mode 100644 technic/init.lua create mode 100644 technic/items.lua create mode 100644 technic/legacy.lua create mode 100644 technic/locale/de.txt create mode 100644 technic/locale/es.txt create mode 100644 technic/locale/it.txt create mode 100644 technic/locale/template.txt create mode 100644 technic/machines/HV/battery_box.lua create mode 100644 technic/machines/HV/cables.lua create mode 100644 technic/machines/HV/forcefield.lua create mode 100644 technic/machines/HV/generator.lua create mode 100644 technic/machines/HV/init.lua create mode 100644 technic/machines/HV/nuclear_reactor.lua create mode 100644 technic/machines/HV/quarry.lua create mode 100644 technic/machines/HV/solar_array.lua create mode 100644 technic/machines/LV/alloy_furnace.lua create mode 100644 technic/machines/LV/battery_box.lua create mode 100644 technic/machines/LV/cables.lua create mode 100644 technic/machines/LV/cnc.lua create mode 100644 technic/machines/LV/cnc_api.lua create mode 100644 technic/machines/LV/cnc_nodes.lua create mode 100644 technic/machines/LV/compressor.lua create mode 100644 technic/machines/LV/electric_furnace.lua create mode 100644 technic/machines/LV/extractor.lua create mode 100644 technic/machines/LV/generator.lua create mode 100644 technic/machines/LV/geothermal.lua create mode 100644 technic/machines/LV/grinder.lua create mode 100644 technic/machines/LV/init.lua create mode 100644 technic/machines/LV/music_player.lua create mode 100644 technic/machines/LV/solar_array.lua create mode 100644 technic/machines/LV/solar_panel.lua create mode 100644 technic/machines/LV/water_mill.lua create mode 100644 technic/machines/MV/alloy_furnace.lua create mode 100644 technic/machines/MV/battery_box.lua create mode 100644 technic/machines/MV/cables.lua create mode 100644 technic/machines/MV/centrifuge.lua create mode 100644 technic/machines/MV/compressor.lua create mode 100644 technic/machines/MV/electric_furnace.lua create mode 100644 technic/machines/MV/extractor.lua create mode 100644 technic/machines/MV/generator.lua create mode 100644 technic/machines/MV/grinder.lua create mode 100644 technic/machines/MV/init.lua create mode 100644 technic/machines/MV/lighting.lua create mode 100644 technic/machines/MV/power_radiator.lua create mode 100644 technic/machines/MV/solar_array.lua create mode 100644 technic/machines/MV/tool_workshop.lua create mode 100644 technic/machines/MV/wind_mill.lua create mode 100644 technic/machines/init.lua create mode 100644 technic/machines/other/anchor.lua create mode 100644 technic/machines/other/coal_alloy_furnace.lua create mode 100644 technic/machines/other/coal_furnace.lua create mode 100644 technic/machines/other/constructor.lua create mode 100644 technic/machines/other/frames.lua create mode 100644 technic/machines/other/init.lua create mode 100644 technic/machines/other/injector.lua create mode 100644 technic/machines/register/alloy_furnace.lua create mode 100644 technic/machines/register/alloy_recipes.lua create mode 100644 technic/machines/register/battery_box.lua create mode 100644 technic/machines/register/cables.lua create mode 100644 technic/machines/register/centrifuge.lua create mode 100644 technic/machines/register/centrifuge_recipes.lua create mode 100644 technic/machines/register/common.lua create mode 100644 technic/machines/register/compressor.lua create mode 100644 technic/machines/register/compressor_recipes.lua create mode 100644 technic/machines/register/electric_furnace.lua create mode 100644 technic/machines/register/extractor.lua create mode 100644 technic/machines/register/extractor_recipes.lua create mode 100644 technic/machines/register/generator.lua create mode 100644 technic/machines/register/grinder.lua create mode 100644 technic/machines/register/grinder_recipes.lua create mode 100644 technic/machines/register/grindings.lua create mode 100644 technic/machines/register/init.lua create mode 100644 technic/machines/register/machine_base.lua create mode 100644 technic/machines/register/recipes.lua create mode 100644 technic/machines/register/solar_array.lua create mode 100644 technic/machines/supply_converter.lua create mode 100644 technic/machines/switching_station.lua delete mode 100644 technic/manual.md create mode 100644 technic/models/technic_cylinder.obj create mode 100644 technic/models/technic_cylinder_horizontal.obj create mode 100644 technic/models/technic_innercorner.obj create mode 100644 technic/models/technic_innercorner_upsdown.obj create mode 100644 technic/models/technic_oblate_spheroid.obj create mode 100644 technic/models/technic_one_curved_edge.obj create mode 100644 technic/models/technic_outercorner.obj create mode 100644 technic/models/technic_outercorner_upsdown.obj create mode 100644 technic/models/technic_pyramid.obj create mode 100644 technic/models/technic_pyramid_spike.obj create mode 100644 technic/models/technic_slope.obj create mode 100644 technic/models/technic_slope_horizontal.obj create mode 100644 technic/models/technic_slope_upsdown.obj create mode 100644 technic/models/technic_sphere.obj create mode 100644 technic/models/technic_two_curved_edge.obj delete mode 100644 technic/modpack.txt create mode 100644 technic/register.lua create mode 100644 technic/sounds/chainsaw.ogg create mode 100644 technic/sounds/item_drop_pickup.1.ogg create mode 100644 technic/sounds/item_drop_pickup.2.ogg create mode 100644 technic/sounds/item_drop_pickup.3.ogg create mode 100644 technic/sounds/item_drop_pickup.4.ogg create mode 100644 technic/sounds/mining_drill.ogg create mode 100644 technic/sounds/technic_hv_nuclear_reactor_siren_clear.ogg create mode 100644 technic/sounds/technic_hv_nuclear_reactor_siren_danger_loop.ogg create mode 100644 technic/sounds/technic_laser_mk1.0.ogg create mode 100644 technic/sounds/technic_laser_mk1.1.ogg create mode 100644 technic/sounds/technic_laser_mk2.0.ogg create mode 100644 technic/sounds/technic_laser_mk2.1.ogg create mode 100644 technic/sounds/technic_laser_mk2.2.ogg create mode 100644 technic/sounds/technic_laser_mk3.1.ogg create mode 100644 technic/sounds/technic_laser_mk3.2.ogg create mode 100644 technic/sounds/technic_prospector_hit.ogg create mode 100644 technic/sounds/technic_prospector_miss.ogg create mode 100644 technic/sounds/technic_sonic_screwdriver.ogg create mode 100644 technic/sounds/vacuumcleaner.ogg delete mode 100644 technic/technic/README.md delete mode 100644 technic/technic/config.lua delete mode 100644 technic/technic/crafts.lua delete mode 100644 technic/technic/depends.txt delete mode 100644 technic/technic/helpers.lua delete mode 100644 technic/technic/init.lua delete mode 100644 technic/technic/items.lua delete mode 100644 technic/technic/legacy.lua delete mode 100644 technic/technic/locale/de.txt delete mode 100644 technic/technic/locale/es.txt delete mode 100644 technic/technic/locale/it.txt delete mode 100644 technic/technic/locale/template.txt delete mode 100644 technic/technic/machines/HV/battery_box.lua delete mode 100644 technic/technic/machines/HV/cables.lua delete mode 100644 technic/technic/machines/HV/forcefield.lua delete mode 100644 technic/technic/machines/HV/generator.lua delete mode 100644 technic/technic/machines/HV/init.lua delete mode 100644 technic/technic/machines/HV/nuclear_reactor.lua delete mode 100644 technic/technic/machines/HV/quarry.lua delete mode 100644 technic/technic/machines/HV/solar_array.lua delete mode 100644 technic/technic/machines/LV/alloy_furnace.lua delete mode 100644 technic/technic/machines/LV/battery_box.lua delete mode 100644 technic/technic/machines/LV/cables.lua delete mode 100644 technic/technic/machines/LV/cnc.lua delete mode 100644 technic/technic/machines/LV/cnc_api.lua delete mode 100644 technic/technic/machines/LV/cnc_nodes.lua delete mode 100644 technic/technic/machines/LV/compressor.lua delete mode 100644 technic/technic/machines/LV/electric_furnace.lua delete mode 100644 technic/technic/machines/LV/extractor.lua delete mode 100644 technic/technic/machines/LV/generator.lua delete mode 100644 technic/technic/machines/LV/geothermal.lua delete mode 100644 technic/technic/machines/LV/grinder.lua delete mode 100644 technic/technic/machines/LV/init.lua delete mode 100644 technic/technic/machines/LV/music_player.lua delete mode 100644 technic/technic/machines/LV/solar_array.lua delete mode 100644 technic/technic/machines/LV/solar_panel.lua delete mode 100644 technic/technic/machines/LV/water_mill.lua delete mode 100644 technic/technic/machines/MV/alloy_furnace.lua delete mode 100644 technic/technic/machines/MV/battery_box.lua delete mode 100644 technic/technic/machines/MV/cables.lua delete mode 100644 technic/technic/machines/MV/centrifuge.lua delete mode 100644 technic/technic/machines/MV/compressor.lua delete mode 100644 technic/technic/machines/MV/electric_furnace.lua delete mode 100644 technic/technic/machines/MV/extractor.lua delete mode 100644 technic/technic/machines/MV/generator.lua delete mode 100644 technic/technic/machines/MV/grinder.lua delete mode 100644 technic/technic/machines/MV/init.lua delete mode 100644 technic/technic/machines/MV/lighting.lua delete mode 100644 technic/technic/machines/MV/power_radiator.lua delete mode 100644 technic/technic/machines/MV/solar_array.lua delete mode 100644 technic/technic/machines/MV/tool_workshop.lua delete mode 100644 technic/technic/machines/MV/wind_mill.lua delete mode 100644 technic/technic/machines/init.lua delete mode 100644 technic/technic/machines/other/anchor.lua delete mode 100644 technic/technic/machines/other/coal_alloy_furnace.lua delete mode 100644 technic/technic/machines/other/coal_furnace.lua delete mode 100644 technic/technic/machines/other/constructor.lua delete mode 100644 technic/technic/machines/other/frames.lua delete mode 100644 technic/technic/machines/other/init.lua delete mode 100644 technic/technic/machines/other/injector.lua delete mode 100644 technic/technic/machines/register/alloy_furnace.lua delete mode 100644 technic/technic/machines/register/alloy_recipes.lua delete mode 100644 technic/technic/machines/register/battery_box.lua delete mode 100644 technic/technic/machines/register/cables.lua delete mode 100644 technic/technic/machines/register/centrifuge.lua delete mode 100644 technic/technic/machines/register/centrifuge_recipes.lua delete mode 100644 technic/technic/machines/register/common.lua delete mode 100644 technic/technic/machines/register/compressor.lua delete mode 100644 technic/technic/machines/register/compressor_recipes.lua delete mode 100644 technic/technic/machines/register/electric_furnace.lua delete mode 100644 technic/technic/machines/register/extractor.lua delete mode 100644 technic/technic/machines/register/extractor_recipes.lua delete mode 100644 technic/technic/machines/register/generator.lua delete mode 100644 technic/technic/machines/register/grinder.lua delete mode 100644 technic/technic/machines/register/grinder_recipes.lua delete mode 100644 technic/technic/machines/register/grindings.lua delete mode 100644 technic/technic/machines/register/init.lua delete mode 100644 technic/technic/machines/register/machine_base.lua delete mode 100644 technic/technic/machines/register/recipes.lua delete mode 100644 technic/technic/machines/register/solar_array.lua delete mode 100644 technic/technic/machines/supply_converter.lua delete mode 100644 technic/technic/machines/switching_station.lua delete mode 100644 technic/technic/models/technic_cylinder.obj delete mode 100644 technic/technic/models/technic_cylinder_horizontal.obj delete mode 100644 technic/technic/models/technic_innercorner.obj delete mode 100644 technic/technic/models/technic_innercorner_upsdown.obj delete mode 100644 technic/technic/models/technic_oblate_spheroid.obj delete mode 100644 technic/technic/models/technic_one_curved_edge.obj delete mode 100644 technic/technic/models/technic_outercorner.obj delete mode 100644 technic/technic/models/technic_outercorner_upsdown.obj delete mode 100644 technic/technic/models/technic_pyramid.obj delete mode 100644 technic/technic/models/technic_pyramid_spike.obj delete mode 100644 technic/technic/models/technic_slope.obj delete mode 100644 technic/technic/models/technic_slope_horizontal.obj delete mode 100644 technic/technic/models/technic_slope_upsdown.obj delete mode 100644 technic/technic/models/technic_sphere.obj delete mode 100644 technic/technic/models/technic_two_curved_edge.obj delete mode 100644 technic/technic/register.lua delete mode 100644 technic/technic/sounds/chainsaw.ogg delete mode 100644 technic/technic/sounds/item_drop_pickup.1.ogg delete mode 100644 technic/technic/sounds/item_drop_pickup.2.ogg delete mode 100644 technic/technic/sounds/item_drop_pickup.3.ogg delete mode 100644 technic/technic/sounds/item_drop_pickup.4.ogg delete mode 100644 technic/technic/sounds/mining_drill.ogg delete mode 100644 technic/technic/sounds/technic_hv_nuclear_reactor_siren_clear.ogg delete mode 100644 technic/technic/sounds/technic_hv_nuclear_reactor_siren_danger_loop.ogg delete mode 100644 technic/technic/sounds/technic_laser_mk1.0.ogg delete mode 100644 technic/technic/sounds/technic_laser_mk1.1.ogg delete mode 100644 technic/technic/sounds/technic_laser_mk2.0.ogg delete mode 100644 technic/technic/sounds/technic_laser_mk2.1.ogg delete mode 100644 technic/technic/sounds/technic_laser_mk2.2.ogg delete mode 100644 technic/technic/sounds/technic_laser_mk3.1.ogg delete mode 100644 technic/technic/sounds/technic_laser_mk3.2.ogg delete mode 100644 technic/technic/sounds/technic_prospector_hit.ogg delete mode 100644 technic/technic/sounds/technic_prospector_miss.ogg delete mode 100644 technic/technic/sounds/technic_sonic_screwdriver.ogg delete mode 100644 technic/technic/sounds/vacuumcleaner.ogg delete mode 100644 technic/technic/textures/hires/technic_hv_nuclear_reactor_core_128.png delete mode 100644 technic/technic/textures/hires/technic_hv_nuclear_reactor_core_16.png delete mode 100644 technic/technic/textures/hires/technic_hv_nuclear_reactor_core_256.png delete mode 100644 technic/technic/textures/hires/technic_hv_nuclear_reactor_core_32.png delete mode 100644 technic/technic/textures/hires/technic_hv_nuclear_reactor_core_512.png delete mode 100644 technic/technic/textures/hires/technic_hv_nuclear_reactor_core_64.png delete mode 100644 technic/technic/textures/power_meter.png delete mode 100644 technic/technic/textures/technic_acacia_grindings.png delete mode 100644 technic/technic/textures/technic_admin_anchor.png delete mode 100644 technic/technic/textures/technic_akalin_dust.png delete mode 100644 technic/technic/textures/technic_alatro_dust.png delete mode 100644 technic/technic/textures/technic_arol_dust.png delete mode 100644 technic/technic/textures/technic_battery.png delete mode 100644 technic/technic/textures/technic_battery_box_side.png delete mode 100644 technic/technic/textures/technic_battery_box_side8.png delete mode 100644 technic/technic/textures/technic_battery_box_side_mv.png delete mode 100644 technic/technic/textures/technic_battery_meter_fg.png delete mode 100644 technic/technic/textures/technic_battery_reload.png delete mode 100644 technic/technic/textures/technic_bronze_dust.png delete mode 100644 technic/technic/textures/technic_bucket_corium.png delete mode 100644 technic/technic/textures/technic_carbon_cloth.png delete mode 100644 technic/technic/textures/technic_carbon_plate.png delete mode 100644 technic/technic/textures/technic_carbon_steel_dust.png delete mode 100644 technic/technic/textures/technic_cast_iron_dust.png delete mode 100644 technic/technic/textures/technic_chainsaw.png delete mode 100644 technic/technic/textures/technic_chernobylite_block.png delete mode 100644 technic/technic/textures/technic_chromium_dust.png delete mode 100644 technic/technic/textures/technic_cnc_bottom.png delete mode 100644 technic/technic/textures/technic_cnc_cylinder.png delete mode 100644 technic/technic/textures/technic_cnc_cylinder_horizontal.png delete mode 100644 technic/technic/textures/technic_cnc_element_cross.png delete mode 100644 technic/technic/textures/technic_cnc_element_edge.png delete mode 100644 technic/technic/textures/technic_cnc_element_end.png delete mode 100644 technic/technic/textures/technic_cnc_element_straight.png delete mode 100644 technic/technic/textures/technic_cnc_element_t.png delete mode 100644 technic/technic/textures/technic_cnc_front.png delete mode 100644 technic/technic/textures/technic_cnc_front_active.png delete mode 100644 technic/technic/textures/technic_cnc_full.png delete mode 100644 technic/technic/textures/technic_cnc_half.png delete mode 100644 technic/technic/textures/technic_cnc_milling_background.png delete mode 100644 technic/technic/textures/technic_cnc_oblate_spheroid.png delete mode 100644 technic/technic/textures/technic_cnc_onecurvededge.png delete mode 100644 technic/technic/textures/technic_cnc_pyramid.png delete mode 100644 technic/technic/textures/technic_cnc_side.png delete mode 100644 technic/technic/textures/technic_cnc_slope.png delete mode 100644 technic/technic/textures/technic_cnc_slope_edge.png delete mode 100644 technic/technic/textures/technic_cnc_slope_edge_upsdwn.png delete mode 100644 technic/technic/textures/technic_cnc_slope_inner_edge.png delete mode 100644 technic/technic/textures/technic_cnc_slope_inner_edge_upsdwn.png delete mode 100644 technic/technic/textures/technic_cnc_slope_lying.png delete mode 100644 technic/technic/textures/technic_cnc_slope_upsdwn.png delete mode 100644 technic/technic/textures/technic_cnc_sphere.png delete mode 100644 technic/technic/textures/technic_cnc_spike.png delete mode 100644 technic/technic/textures/technic_cnc_stick.png delete mode 100644 technic/technic/textures/technic_cnc_top.png delete mode 100644 technic/technic/textures/technic_cnc_top_active.png delete mode 100644 technic/technic/textures/technic_cnc_twocurvededge.png delete mode 100644 technic/technic/textures/technic_coal_alloy_furnace_bottom.png delete mode 100644 technic/technic/textures/technic_coal_alloy_furnace_front.png delete mode 100644 technic/technic/textures/technic_coal_alloy_furnace_front_active.png delete mode 100644 technic/technic/textures/technic_coal_alloy_furnace_side.png delete mode 100644 technic/technic/textures/technic_coal_alloy_furnace_top.png delete mode 100644 technic/technic/textures/technic_coal_dust.png delete mode 100644 technic/technic/textures/technic_common_tree_grindings.png delete mode 100644 technic/technic/textures/technic_composite_plate.png delete mode 100644 technic/technic/textures/technic_constructor_back.png delete mode 100644 technic/technic/textures/technic_constructor_front_off.png delete mode 100644 technic/technic/textures/technic_constructor_front_on.png delete mode 100644 technic/technic/textures/technic_constructor_mk1_bottom_off.png delete mode 100644 technic/technic/textures/technic_constructor_mk1_bottom_on.png delete mode 100644 technic/technic/textures/technic_constructor_mk1_side1_off.png delete mode 100644 technic/technic/textures/technic_constructor_mk1_side1_on.png delete mode 100644 technic/technic/textures/technic_constructor_mk1_side2_off.png delete mode 100644 technic/technic/textures/technic_constructor_mk1_side2_on.png delete mode 100644 technic/technic/textures/technic_constructor_mk1_top_off.png delete mode 100644 technic/technic/textures/technic_constructor_mk1_top_on.png delete mode 100644 technic/technic/textures/technic_constructor_mk2_bottom_off.png delete mode 100644 technic/technic/textures/technic_constructor_mk2_bottom_on.png delete mode 100644 technic/technic/textures/technic_constructor_mk2_side1_off.png delete mode 100644 technic/technic/textures/technic_constructor_mk2_side1_on.png delete mode 100644 technic/technic/textures/technic_constructor_mk2_side2_off.png delete mode 100644 technic/technic/textures/technic_constructor_mk2_side2_on.png delete mode 100644 technic/technic/textures/technic_constructor_mk2_top_off.png delete mode 100644 technic/technic/textures/technic_constructor_mk2_top_on.png delete mode 100644 technic/technic/textures/technic_constructor_mk3_bottom_off.png delete mode 100644 technic/technic/textures/technic_constructor_mk3_bottom_on.png delete mode 100644 technic/technic/textures/technic_constructor_mk3_side1_off.png delete mode 100644 technic/technic/textures/technic_constructor_mk3_side1_on.png delete mode 100644 technic/technic/textures/technic_constructor_mk3_side2_off.png delete mode 100644 technic/technic/textures/technic_constructor_mk3_side2_on.png delete mode 100644 technic/technic/textures/technic_constructor_mk3_top_off.png delete mode 100644 technic/technic/textures/technic_constructor_mk3_top_on.png delete mode 100644 technic/technic/textures/technic_control_logic_unit.png delete mode 100644 technic/technic/textures/technic_copper_coil.png delete mode 100644 technic/technic/textures/technic_copper_dust.png delete mode 100644 technic/technic/textures/technic_copper_plate.png delete mode 100644 technic/technic/textures/technic_corium_flowing_animated.png delete mode 100644 technic/technic/textures/technic_corium_source_animated.png delete mode 100644 technic/technic/textures/technic_deployer_back.png delete mode 100644 technic/technic/textures/technic_deployer_bottom.png delete mode 100644 technic/technic/textures/technic_deployer_front_off.png delete mode 100644 technic/technic/textures/technic_deployer_front_on.png delete mode 100644 technic/technic/textures/technic_deployer_side.png delete mode 100644 technic/technic/textures/technic_deployer_side1.png delete mode 100644 technic/technic/textures/technic_deployer_side2.png delete mode 100644 technic/technic/textures/technic_deployer_top.png delete mode 100644 technic/technic/textures/technic_diamond_block_blue.png delete mode 100644 technic/technic/textures/technic_diamond_block_green.png delete mode 100644 technic/technic/textures/technic_diamond_block_red.png delete mode 100644 technic/technic/textures/technic_diamond_drill_head.png delete mode 100644 technic/technic/textures/technic_doped_silicon_wafer.png delete mode 100644 technic/technic/textures/technic_fine_copper_wire.png delete mode 100644 technic/technic/textures/technic_fine_gold_wire.png delete mode 100644 technic/technic/textures/technic_fine_silver_wire.png delete mode 100644 technic/technic/textures/technic_flashlight.png delete mode 100644 technic/technic/textures/technic_forcefield_animated.png delete mode 100644 technic/technic/textures/technic_forcefield_emitter_off.png delete mode 100644 technic/technic/textures/technic_forcefield_emitter_on.png delete mode 100644 technic/technic/textures/technic_frame.png delete mode 100644 technic/technic/textures/technic_geothermal_side.png delete mode 100644 technic/technic/textures/technic_geothermal_top.png delete mode 100644 technic/technic/textures/technic_geothermal_top_active.png delete mode 100644 technic/technic/textures/technic_gold_dust.png delete mode 100644 technic/technic/textures/technic_graphite.png delete mode 100644 technic/technic/textures/technic_grinder_front.png delete mode 100644 technic/technic/textures/technic_grinder_side.png delete mode 100644 technic/technic/textures/technic_grinder_top.png delete mode 100644 technic/technic/textures/technic_homedecor_glowlight_cube_white_sides.png delete mode 100644 technic/technic/textures/technic_homedecor_glowlight_cube_white_sides_ceiling.png delete mode 100644 technic/technic/textures/technic_homedecor_glowlight_cube_white_tb.png delete mode 100644 technic/technic/textures/technic_homedecor_glowlight_cube_yellow_sides.png delete mode 100644 technic/technic/textures/technic_homedecor_glowlight_cube_yellow_sides_ceiling.png delete mode 100644 technic/technic/textures/technic_homedecor_glowlight_cube_yellow_tb.png delete mode 100644 technic/technic/textures/technic_homedecor_glowlight_thick_white_sides.png delete mode 100644 technic/technic/textures/technic_homedecor_glowlight_thick_white_wall_sides.png delete mode 100644 technic/technic/textures/technic_homedecor_glowlight_thick_yellow_sides.png delete mode 100644 technic/technic/textures/technic_homedecor_glowlight_thick_yellow_wall_sides.png delete mode 100644 technic/technic/textures/technic_homedecor_glowlight_thin_white_sides.png delete mode 100644 technic/technic/textures/technic_homedecor_glowlight_thin_white_wall_sides.png delete mode 100644 technic/technic/textures/technic_homedecor_glowlight_thin_yellow_sides.png delete mode 100644 technic/technic/textures/technic_homedecor_glowlight_thin_yellow_wall_sides.png delete mode 100644 technic/technic/textures/technic_homedecor_glowlight_white_tb.png delete mode 100644 technic/technic/textures/technic_homedecor_glowlight_yellow_tb.png delete mode 100644 technic/technic/textures/technic_hv_battery_box_bottom.png delete mode 100644 technic/technic/textures/technic_hv_battery_box_side.png delete mode 100644 technic/technic/textures/technic_hv_battery_box_top.png delete mode 100644 technic/technic/textures/technic_hv_cable.png delete mode 100644 technic/technic/textures/technic_hv_cable_wield.png delete mode 100644 technic/technic/textures/technic_hv_down_converter_bottom.png delete mode 100644 technic/technic/textures/technic_hv_down_converter_side.png delete mode 100644 technic/technic/textures/technic_hv_down_converter_top.png delete mode 100644 technic/technic/textures/technic_hv_generator_front.png delete mode 100644 technic/technic/textures/technic_hv_generator_front_active.png delete mode 100644 technic/technic/textures/technic_hv_generator_side.png delete mode 100644 technic/technic/textures/technic_hv_generator_top.png delete mode 100644 technic/technic/textures/technic_hv_grinder_bottom.png delete mode 100644 technic/technic/textures/technic_hv_grinder_front.png delete mode 100644 technic/technic/textures/technic_hv_grinder_front_active.png delete mode 100644 technic/technic/textures/technic_hv_grinder_side.png delete mode 100644 technic/technic/textures/technic_hv_grinder_side_tube.png delete mode 100644 technic/technic/textures/technic_hv_grinder_top.png delete mode 100644 technic/technic/textures/technic_hv_nuclear_reactor_core.png delete mode 100644 technic/technic/textures/technic_hv_solar_array_bottom.png delete mode 100644 technic/technic/textures/technic_hv_solar_array_side.png delete mode 100644 technic/technic/textures/technic_hv_solar_array_top.png delete mode 100644 technic/technic/textures/technic_hv_transformer.png delete mode 100644 technic/technic/textures/technic_injector_bottom.png delete mode 100644 technic/technic/textures/technic_injector_side.png delete mode 100644 technic/technic/textures/technic_injector_top.png delete mode 100644 technic/technic/textures/technic_kalite_dust.png delete mode 100644 technic/technic/textures/technic_laser_beam_mk1.png delete mode 100644 technic/technic/textures/technic_laser_beam_mk2.png delete mode 100644 technic/technic/textures/technic_laser_beam_mk3.png delete mode 100644 technic/technic/textures/technic_lava_can.png delete mode 100644 technic/technic/textures/technic_light.png delete mode 100644 technic/technic/textures/technic_lv_alloy_furnace_bottom.png delete mode 100644 technic/technic/textures/technic_lv_alloy_furnace_front.png delete mode 100644 technic/technic/textures/technic_lv_alloy_furnace_front_active.png delete mode 100644 technic/technic/textures/technic_lv_alloy_furnace_side.png delete mode 100644 technic/technic/textures/technic_lv_alloy_furnace_top.png delete mode 100644 technic/technic/textures/technic_lv_battery_box_bottom.png delete mode 100644 technic/technic/textures/technic_lv_battery_box_side.png delete mode 100644 technic/technic/textures/technic_lv_battery_box_top.png delete mode 100644 technic/technic/textures/technic_lv_cable.png delete mode 100644 technic/technic/textures/technic_lv_cable_wield.png delete mode 100644 technic/technic/textures/technic_lv_compressor_back.png delete mode 100644 technic/technic/textures/technic_lv_compressor_bottom.png delete mode 100644 technic/technic/textures/technic_lv_compressor_front.png delete mode 100644 technic/technic/textures/technic_lv_compressor_front_active.png delete mode 100644 technic/technic/textures/technic_lv_compressor_side.png delete mode 100644 technic/technic/textures/technic_lv_compressor_top.png delete mode 100644 technic/technic/textures/technic_lv_electric_furnace_bottom.png delete mode 100644 technic/technic/textures/technic_lv_electric_furnace_front.png delete mode 100644 technic/technic/textures/technic_lv_electric_furnace_front_active.png delete mode 100644 technic/technic/textures/technic_lv_electric_furnace_side.png delete mode 100644 technic/technic/textures/technic_lv_electric_furnace_top.png delete mode 100644 technic/technic/textures/technic_lv_extractor_bottom.png delete mode 100644 technic/technic/textures/technic_lv_extractor_front.png delete mode 100644 technic/technic/textures/technic_lv_extractor_front_active.png delete mode 100644 technic/technic/textures/technic_lv_extractor_side.png delete mode 100644 technic/technic/textures/technic_lv_extractor_top.png delete mode 100644 technic/technic/textures/technic_lv_generator_front.png delete mode 100644 technic/technic/textures/technic_lv_generator_front_active.png delete mode 100644 technic/technic/textures/technic_lv_generator_side.png delete mode 100644 technic/technic/textures/technic_lv_generator_top.png delete mode 100644 technic/technic/textures/technic_lv_grinder_bottom.png delete mode 100644 technic/technic/textures/technic_lv_grinder_front.png delete mode 100644 technic/technic/textures/technic_lv_grinder_front_active.png delete mode 100644 technic/technic/textures/technic_lv_grinder_side.png delete mode 100644 technic/technic/textures/technic_lv_grinder_top.png delete mode 100644 technic/technic/textures/technic_lv_solar_array_bottom.png delete mode 100644 technic/technic/textures/technic_lv_solar_array_side.png delete mode 100644 technic/technic/textures/technic_lv_solar_array_top.png delete mode 100644 technic/technic/textures/technic_lv_transformer.png delete mode 100644 technic/technic/textures/technic_machine_bottom.png delete mode 100644 technic/technic/textures/technic_machine_casing.png delete mode 100644 technic/technic/textures/technic_mining_drill.png delete mode 100644 technic/technic/textures/technic_mining_drill_mk2.png delete mode 100644 technic/technic/textures/technic_mining_drill_mk3.png delete mode 100644 technic/technic/textures/technic_mining_laser_mk1.png delete mode 100644 technic/technic/textures/technic_mining_laser_mk2.png delete mode 100644 technic/technic/textures/technic_mining_laser_mk3.png delete mode 100644 technic/technic/textures/technic_mithril_dust.png delete mode 100644 technic/technic/textures/technic_mixed_metal_ingot.png delete mode 100644 technic/technic/textures/technic_motor.png delete mode 100644 technic/technic/textures/technic_music_player_bottom.png delete mode 100644 technic/technic/textures/technic_music_player_side.png delete mode 100644 technic/technic/textures/technic_music_player_top.png delete mode 100644 technic/technic/textures/technic_mv_alloy_furnace_bottom.png delete mode 100644 technic/technic/textures/technic_mv_alloy_furnace_front.png delete mode 100644 technic/technic/textures/technic_mv_alloy_furnace_front_active.png delete mode 100644 technic/technic/textures/technic_mv_alloy_furnace_side.png delete mode 100644 technic/technic/textures/technic_mv_alloy_furnace_side_tube.png delete mode 100644 technic/technic/textures/technic_mv_alloy_furnace_top.png delete mode 100644 technic/technic/textures/technic_mv_battery_box_bottom.png delete mode 100644 technic/technic/textures/technic_mv_battery_box_side.png delete mode 100644 technic/technic/textures/technic_mv_battery_box_top.png delete mode 100644 technic/technic/textures/technic_mv_cable.png delete mode 100644 technic/technic/textures/technic_mv_cable_wield.png delete mode 100644 technic/technic/textures/technic_mv_centrifuge_bottom.png delete mode 100644 technic/technic/textures/technic_mv_centrifuge_front.png delete mode 100644 technic/technic/textures/technic_mv_centrifuge_front_active.png delete mode 100644 technic/technic/textures/technic_mv_centrifuge_side.png delete mode 100644 technic/technic/textures/technic_mv_centrifuge_top.png delete mode 100644 technic/technic/textures/technic_mv_compressor_back.png delete mode 100644 technic/technic/textures/technic_mv_compressor_bottom.png delete mode 100644 technic/technic/textures/technic_mv_compressor_front.png delete mode 100644 technic/technic/textures/technic_mv_compressor_front_active.png delete mode 100644 technic/technic/textures/technic_mv_compressor_side.png delete mode 100644 technic/technic/textures/technic_mv_compressor_top.png delete mode 100644 technic/technic/textures/technic_mv_down_converter_bottom.png delete mode 100644 technic/technic/textures/technic_mv_down_converter_side.png delete mode 100644 technic/technic/textures/technic_mv_down_converter_top.png delete mode 100644 technic/technic/textures/technic_mv_electric_furnace_bottom.png delete mode 100644 technic/technic/textures/technic_mv_electric_furnace_front.png delete mode 100644 technic/technic/textures/technic_mv_electric_furnace_front_active.png delete mode 100644 technic/technic/textures/technic_mv_electric_furnace_side.png delete mode 100644 technic/technic/textures/technic_mv_electric_furnace_side_tube.png delete mode 100644 technic/technic/textures/technic_mv_electric_furnace_top.png delete mode 100644 technic/technic/textures/technic_mv_extractor_bottom.png delete mode 100644 technic/technic/textures/technic_mv_extractor_front.png delete mode 100644 technic/technic/textures/technic_mv_extractor_front_active.png delete mode 100644 technic/technic/textures/technic_mv_extractor_side.png delete mode 100644 technic/technic/textures/technic_mv_extractor_top.png delete mode 100644 technic/technic/textures/technic_mv_generator_front.png delete mode 100644 technic/technic/textures/technic_mv_generator_front_active.png delete mode 100644 technic/technic/textures/technic_mv_generator_side.png delete mode 100644 technic/technic/textures/technic_mv_generator_top.png delete mode 100644 technic/technic/textures/technic_mv_grinder_bottom.png delete mode 100644 technic/technic/textures/technic_mv_grinder_front.png delete mode 100644 technic/technic/textures/technic_mv_grinder_front_active.png delete mode 100644 technic/technic/textures/technic_mv_grinder_side.png delete mode 100644 technic/technic/textures/technic_mv_grinder_side_tube.png delete mode 100644 technic/technic/textures/technic_mv_grinder_top.png delete mode 100644 technic/technic/textures/technic_mv_solar_array_bottom.png delete mode 100644 technic/technic/textures/technic_mv_solar_array_side.png delete mode 100644 technic/technic/textures/technic_mv_solar_array_top.png delete mode 100644 technic/technic/textures/technic_mv_transformer.png delete mode 100644 technic/technic/textures/technic_nodebreaker_back.png delete mode 100644 technic/technic/textures/technic_nodebreaker_bottom.png delete mode 100644 technic/technic/textures/technic_nodebreaker_bottom_off.png delete mode 100644 technic/technic/textures/technic_nodebreaker_bottom_on.png delete mode 100644 technic/technic/textures/technic_nodebreaker_front_off.png delete mode 100644 technic/technic/textures/technic_nodebreaker_front_on.png delete mode 100644 technic/technic/textures/technic_nodebreaker_side.png delete mode 100644 technic/technic/textures/technic_nodebreaker_side1.png delete mode 100644 technic/technic/textures/technic_nodebreaker_side1_off.png delete mode 100644 technic/technic/textures/technic_nodebreaker_side1_on.png delete mode 100644 technic/technic/textures/technic_nodebreaker_side2.png delete mode 100644 technic/technic/textures/technic_nodebreaker_side2_off.png delete mode 100644 technic/technic/textures/technic_nodebreaker_side2_on.png delete mode 100644 technic/technic/textures/technic_nodebreaker_top.png delete mode 100644 technic/technic/textures/technic_nodebreaker_top_off.png delete mode 100644 technic/technic/textures/technic_nodebreaker_top_on.png delete mode 100644 technic/technic/textures/technic_power_meter.png delete mode 100644 technic/technic/textures/technic_power_meter0.png delete mode 100644 technic/technic/textures/technic_power_meter1.png delete mode 100644 technic/technic/textures/technic_power_meter2.png delete mode 100644 technic/technic/textures/technic_power_meter3.png delete mode 100644 technic/technic/textures/technic_power_meter4.png delete mode 100644 technic/technic/textures/technic_power_meter5.png delete mode 100644 technic/technic/textures/technic_power_meter6.png delete mode 100644 technic/technic/textures/technic_power_meter7.png delete mode 100644 technic/technic/textures/technic_power_meter8.png delete mode 100644 technic/technic/textures/technic_power_meter_bg.png delete mode 100644 technic/technic/textures/technic_power_meter_fg.png delete mode 100644 technic/technic/textures/technic_prospector.png delete mode 100644 technic/technic/textures/technic_raw_latex.png delete mode 100644 technic/technic/textures/technic_rubber.png delete mode 100644 technic/technic/textures/technic_rubber_leaves.png delete mode 100644 technic/technic/textures/technic_rubber_sapling.png delete mode 100644 technic/technic/textures/technic_rubber_tree_empty.png delete mode 100644 technic/technic/textures/technic_rubber_tree_full.png delete mode 100644 technic/technic/textures/technic_rubber_tree_grindings.png delete mode 100644 technic/technic/textures/technic_sawdust.png delete mode 100644 technic/technic/textures/technic_screwdriver.png delete mode 100644 technic/technic/textures/technic_silicon_wafer.png delete mode 100644 technic/technic/textures/technic_silver_dust.png delete mode 100644 technic/technic/textures/technic_solar_panel_bottom.png delete mode 100644 technic/technic/textures/technic_solar_panel_side.png delete mode 100644 technic/technic/textures/technic_solar_panel_top.png delete mode 100644 technic/technic/textures/technic_sonic_screwdriver.png delete mode 100644 technic/technic/textures/technic_stainless_steel_dust.png delete mode 100644 technic/technic/textures/technic_stainless_steel_ingot.png delete mode 100644 technic/technic/textures/technic_supply_converter_bottom.png delete mode 100644 technic/technic/textures/technic_supply_converter_side.png delete mode 100644 technic/technic/textures/technic_supply_converter_top.png delete mode 100644 technic/technic/textures/technic_talinite_dust.png delete mode 100644 technic/technic/textures/technic_tin_dust.png delete mode 100644 technic/technic/textures/technic_tool_mode1.png delete mode 100644 technic/technic/textures/technic_tool_mode2.png delete mode 100644 technic/technic/textures/technic_tool_mode3.png delete mode 100644 technic/technic/textures/technic_tool_mode4.png delete mode 100644 technic/technic/textures/technic_tool_mode5.png delete mode 100644 technic/technic/textures/technic_tool_mode6.png delete mode 100644 technic/technic/textures/technic_tool_mode7.png delete mode 100644 technic/technic/textures/technic_tool_mode8.png delete mode 100644 technic/technic/textures/technic_tool_mode9.png delete mode 100644 technic/technic/textures/technic_tree_tap.png delete mode 100644 technic/technic/textures/technic_uranium_dust.png delete mode 100644 technic/technic/textures/technic_uranium_fuel.png delete mode 100644 technic/technic/textures/technic_vacuum.png delete mode 100644 technic/technic/textures/technic_water_can.png delete mode 100644 technic/technic/textures/technic_water_mill_side.png delete mode 100644 technic/technic/textures/technic_water_mill_top.png delete mode 100644 technic/technic/textures/technic_water_mill_top_active.png delete mode 100644 technic/technic/textures/technic_workshop_bottom.png delete mode 100644 technic/technic/textures/technic_workshop_side.png delete mode 100644 technic/technic/textures/technic_workshop_top.png delete mode 100644 technic/technic/textures/technic_wrought_iron_dust.png delete mode 100644 technic/technic/textures/technic_zinc_dust.png delete mode 100644 technic/technic/textures/technicx32/technic_akalin_dust.png delete mode 100644 technic/technic/textures/technicx32/technic_alatro_dust.png delete mode 100644 technic/technic/textures/technicx32/technic_alloy_furnace_front.png delete mode 100644 technic/technic/textures/technicx32/technic_alloy_furnace_front_active.png delete mode 100644 technic/technic/textures/technicx32/technic_alloy_furnace_side.png delete mode 100644 technic/technic/textures/technicx32/technic_alloy_furnace_top.png delete mode 100644 technic/technic/textures/technicx32/technic_arol_dust.png delete mode 100644 technic/technic/textures/technicx32/technic_battery.png delete mode 100644 technic/technic/textures/technicx32/technic_battery_box_bottom.png delete mode 100644 technic/technic/textures/technicx32/technic_battery_box_side0.png delete mode 100644 technic/technic/textures/technicx32/technic_battery_box_top.png delete mode 100644 technic/technic/textures/technicx32/technic_battery_reload.png delete mode 100644 technic/technic/textures/technicx32/technic_brass_dust.png delete mode 100644 technic/technic/textures/technicx32/technic_bronze_dust.png delete mode 100644 technic/technic/textures/technicx32/technic_carbon_steel_dust.png delete mode 100644 technic/technic/textures/technicx32/technic_cast_iron_dust.png delete mode 100644 technic/technic/textures/technicx32/technic_chainsaw.png delete mode 100644 technic/technic/textures/technicx32/technic_chromium_dust.png delete mode 100644 technic/technic/textures/technicx32/technic_coal_alloy_furnace_bottom.png delete mode 100644 technic/technic/textures/technicx32/technic_coal_alloy_furnace_front.png delete mode 100644 technic/technic/textures/technicx32/technic_coal_alloy_furnace_front_active.png delete mode 100644 technic/technic/textures/technicx32/technic_coal_alloy_furnace_side.png delete mode 100644 technic/technic/textures/technicx32/technic_coal_alloy_furnace_top.png delete mode 100644 technic/technic/textures/technicx32/technic_coal_dust.png delete mode 100644 technic/technic/textures/technicx32/technic_constructor_back.png delete mode 100644 technic/technic/textures/technicx32/technic_constructor_front_off.png delete mode 100644 technic/technic/textures/technicx32/technic_constructor_front_on.png delete mode 100644 technic/technic/textures/technicx32/technic_constructor_mk1_bottom_off.png delete mode 100644 technic/technic/textures/technicx32/technic_constructor_mk1_bottom_on.png delete mode 100644 technic/technic/textures/technicx32/technic_constructor_mk1_side1_off.png delete mode 100644 technic/technic/textures/technicx32/technic_constructor_mk1_side1_on.png delete mode 100644 technic/technic/textures/technicx32/technic_constructor_mk1_side2_off.png delete mode 100644 technic/technic/textures/technicx32/technic_constructor_mk1_side2_on.png delete mode 100644 technic/technic/textures/technicx32/technic_constructor_mk1_top_off.png delete mode 100644 technic/technic/textures/technicx32/technic_constructor_mk1_top_on.png delete mode 100644 technic/technic/textures/technicx32/technic_constructor_mk2_bottom_off.png delete mode 100644 technic/technic/textures/technicx32/technic_constructor_mk2_bottom_on.png delete mode 100644 technic/technic/textures/technicx32/technic_constructor_mk2_side1_off.png delete mode 100644 technic/technic/textures/technicx32/technic_constructor_mk2_side1_on.png delete mode 100644 technic/technic/textures/technicx32/technic_constructor_mk2_side2_off.png delete mode 100644 technic/technic/textures/technicx32/technic_constructor_mk2_side2_on.png delete mode 100644 technic/technic/textures/technicx32/technic_constructor_mk2_top_off.png delete mode 100644 technic/technic/textures/technicx32/technic_constructor_mk2_top_on.png delete mode 100644 technic/technic/textures/technicx32/technic_constructor_mk3_bottom_off.png delete mode 100644 technic/technic/textures/technicx32/technic_constructor_mk3_bottom_on.png delete mode 100644 technic/technic/textures/technicx32/technic_constructor_mk3_side1_off.png delete mode 100644 technic/technic/textures/technicx32/technic_constructor_mk3_side1_on.png delete mode 100644 technic/technic/textures/technicx32/technic_constructor_mk3_side2_off.png delete mode 100644 technic/technic/textures/technicx32/technic_constructor_mk3_side2_on.png delete mode 100644 technic/technic/textures/technicx32/technic_constructor_mk3_top_off.png delete mode 100644 technic/technic/textures/technicx32/technic_constructor_mk3_top_on.png delete mode 100644 technic/technic/textures/technicx32/technic_control_logic_unit.png delete mode 100644 technic/technic/textures/technicx32/technic_copper_coil.png delete mode 100644 technic/technic/textures/technicx32/technic_copper_dust.png delete mode 100644 technic/technic/textures/technicx32/technic_deployer_back.png delete mode 100644 technic/technic/textures/technicx32/technic_deployer_bottom.png delete mode 100644 technic/technic/textures/technicx32/technic_deployer_front_off.png delete mode 100644 technic/technic/textures/technicx32/technic_deployer_front_on.png delete mode 100644 technic/technic/textures/technicx32/technic_deployer_side.png delete mode 100644 technic/technic/textures/technicx32/technic_deployer_side1.png delete mode 100644 technic/technic/textures/technicx32/technic_deployer_side2.png delete mode 100644 technic/technic/textures/technicx32/technic_deployer_top.png delete mode 100644 technic/technic/textures/technicx32/technic_diamond_block_blue.png delete mode 100644 technic/technic/textures/technicx32/technic_diamond_block_green.png delete mode 100644 technic/technic/textures/technicx32/technic_diamond_block_red.png delete mode 100644 technic/technic/textures/technicx32/technic_diamond_drill_head.png delete mode 100644 technic/technic/textures/technicx32/technic_doped_silicon_wafer.png delete mode 100644 technic/technic/textures/technicx32/technic_electric_furnace_bottom.png delete mode 100644 technic/technic/textures/technicx32/technic_electric_furnace_front.png delete mode 100644 technic/technic/textures/technicx32/technic_electric_furnace_front_active.png delete mode 100644 technic/technic/textures/technicx32/technic_electric_furnace_side.png delete mode 100644 technic/technic/textures/technicx32/technic_electric_furnace_top.png delete mode 100644 technic/technic/textures/technicx32/technic_fine_copper_wire.png delete mode 100644 technic/technic/textures/technicx32/technic_fine_gold_wire.png delete mode 100644 technic/technic/textures/technicx32/technic_fine_silver_wire.png delete mode 100644 technic/technic/textures/technicx32/technic_flashlight.png delete mode 100644 technic/technic/textures/technicx32/technic_generator_front.png delete mode 100644 technic/technic/textures/technicx32/technic_generator_front_active.png delete mode 100644 technic/technic/textures/technicx32/technic_generator_side.png delete mode 100644 technic/technic/textures/technicx32/technic_generator_top.png delete mode 100644 technic/technic/textures/technicx32/technic_geothermal_side.png delete mode 100644 technic/technic/textures/technicx32/technic_geothermal_top.png delete mode 100644 technic/technic/textures/technicx32/technic_geothermal_top_active.png delete mode 100644 technic/technic/textures/technicx32/technic_gold_dust.png delete mode 100644 technic/technic/textures/technicx32/technic_grinder_front.png delete mode 100644 technic/technic/textures/technicx32/technic_grinder_side.png delete mode 100644 technic/technic/textures/technicx32/technic_grinder_top.png delete mode 100644 technic/technic/textures/technicx32/technic_hv_grinder_bottom.png delete mode 100644 technic/technic/textures/technicx32/technic_hv_grinder_front.png delete mode 100644 technic/technic/textures/technicx32/technic_hv_grinder_front_active.png delete mode 100644 technic/technic/textures/technicx32/technic_hv_grinder_side.png delete mode 100644 technic/technic/textures/technicx32/technic_hv_grinder_side_tube.png delete mode 100644 technic/technic/textures/technicx32/technic_hv_grinder_top.png delete mode 100644 technic/technic/textures/technicx32/technic_hv_nuclear_reactor_core.png delete mode 100644 technic/technic/textures/technicx32/technic_hv_solar_array_bottom.png delete mode 100644 technic/technic/textures/technicx32/technic_hv_solar_array_side.png delete mode 100644 technic/technic/textures/technicx32/technic_hv_solar_array_top.png delete mode 100644 technic/technic/textures/technicx32/technic_hv_transformer.png delete mode 100644 technic/technic/textures/technicx32/technic_injector_bottom.png delete mode 100644 technic/technic/textures/technicx32/technic_injector_side.png delete mode 100644 technic/technic/textures/technicx32/technic_injector_top.png delete mode 100644 technic/technic/textures/technicx32/technic_kalite_dust.png delete mode 100644 technic/technic/textures/technicx32/technic_laser_beam.png delete mode 100644 technic/technic/textures/technicx32/technic_lava_can.png delete mode 100644 technic/technic/textures/technicx32/technic_light.png delete mode 100644 technic/technic/textures/technicx32/technic_lv_grinder_bottom.png delete mode 100644 technic/technic/textures/technicx32/technic_lv_grinder_front.png delete mode 100644 technic/technic/textures/technicx32/technic_lv_grinder_front_active.png delete mode 100644 technic/technic/textures/technicx32/technic_lv_grinder_side.png delete mode 100644 technic/technic/textures/technicx32/technic_lv_grinder_top.png delete mode 100644 technic/technic/textures/technicx32/technic_lv_solar_array_bottom.png delete mode 100644 technic/technic/textures/technicx32/technic_lv_solar_array_side.png delete mode 100644 technic/technic/textures/technicx32/technic_lv_solar_array_top.png delete mode 100644 technic/technic/textures/technicx32/technic_lv_transformer.png delete mode 100644 technic/technic/textures/technicx32/technic_machine_bottom.png delete mode 100644 technic/technic/textures/technicx32/technic_mining_drill.png delete mode 100644 technic/technic/textures/technicx32/technic_mining_laser_mk1.png delete mode 100644 technic/technic/textures/technicx32/technic_mithril_dust.png delete mode 100644 technic/technic/textures/technicx32/technic_motor.png delete mode 100644 technic/technic/textures/technicx32/technic_music_player_bottom.png delete mode 100644 technic/technic/textures/technicx32/technic_music_player_side.png delete mode 100644 technic/technic/textures/technicx32/technic_music_player_top.png delete mode 100644 technic/technic/textures/technicx32/technic_mv_alloy_furnace_bottom.png delete mode 100644 technic/technic/textures/technicx32/technic_mv_alloy_furnace_front.png delete mode 100644 technic/technic/textures/technicx32/technic_mv_alloy_furnace_front_active.png delete mode 100644 technic/technic/textures/technicx32/technic_mv_alloy_furnace_side.png delete mode 100644 technic/technic/textures/technicx32/technic_mv_alloy_furnace_side_tube.png delete mode 100644 technic/technic/textures/technicx32/technic_mv_alloy_furnace_top.png delete mode 100644 technic/technic/textures/technicx32/technic_mv_battery_box_bottom.png delete mode 100644 technic/technic/textures/technicx32/technic_mv_battery_box_side0.png delete mode 100644 technic/technic/textures/technicx32/technic_mv_battery_box_top.png delete mode 100644 technic/technic/textures/technicx32/technic_mv_cable_wield.png delete mode 100644 technic/technic/textures/technicx32/technic_mv_electric_furnace_bottom.png delete mode 100644 technic/technic/textures/technicx32/technic_mv_electric_furnace_front.png delete mode 100644 technic/technic/textures/technicx32/technic_mv_electric_furnace_front_active.png delete mode 100644 technic/technic/textures/technicx32/technic_mv_electric_furnace_side.png delete mode 100644 technic/technic/textures/technicx32/technic_mv_electric_furnace_side_tube.png delete mode 100644 technic/technic/textures/technicx32/technic_mv_electric_furnace_top.png delete mode 100644 technic/technic/textures/technicx32/technic_mv_grinder_bottom.png delete mode 100644 technic/technic/textures/technicx32/technic_mv_grinder_front.png delete mode 100644 technic/technic/textures/technicx32/technic_mv_grinder_front_active.png delete mode 100644 technic/technic/textures/technicx32/technic_mv_grinder_side.png delete mode 100644 technic/technic/textures/technicx32/technic_mv_grinder_side_tube.png delete mode 100644 technic/technic/textures/technicx32/technic_mv_grinder_top.png delete mode 100644 technic/technic/textures/technicx32/technic_mv_solar_array_bottom.png delete mode 100644 technic/technic/textures/technicx32/technic_mv_solar_array_side.png delete mode 100644 technic/technic/textures/technicx32/technic_mv_solar_array_top.png delete mode 100644 technic/technic/textures/technicx32/technic_mv_transformer.png delete mode 100644 technic/technic/textures/technicx32/technic_nodebreaker_back.png delete mode 100644 technic/technic/textures/technicx32/technic_nodebreaker_bottom.png delete mode 100644 technic/technic/textures/technicx32/technic_nodebreaker_bottom_off.png delete mode 100644 technic/technic/textures/technicx32/technic_nodebreaker_bottom_on.png delete mode 100644 technic/technic/textures/technicx32/technic_nodebreaker_front_off.png delete mode 100644 technic/technic/textures/technicx32/technic_nodebreaker_front_on.png delete mode 100644 technic/technic/textures/technicx32/technic_nodebreaker_side.png delete mode 100644 technic/technic/textures/technicx32/technic_nodebreaker_side1.png delete mode 100644 technic/technic/textures/technicx32/technic_nodebreaker_side1_off.png delete mode 100644 technic/technic/textures/technicx32/technic_nodebreaker_side1_on.png delete mode 100644 technic/technic/textures/technicx32/technic_nodebreaker_side2.png delete mode 100644 technic/technic/textures/technicx32/technic_nodebreaker_side2_off.png delete mode 100644 technic/technic/textures/technicx32/technic_nodebreaker_side2_on.png delete mode 100644 technic/technic/textures/technicx32/technic_nodebreaker_top.png delete mode 100644 technic/technic/textures/technicx32/technic_nodebreaker_top_off.png delete mode 100644 technic/technic/textures/technicx32/technic_nodebreaker_top_on.png delete mode 100644 technic/technic/textures/technicx32/technic_power_meter.png delete mode 100644 technic/technic/textures/technicx32/technic_power_meter1.png delete mode 100644 technic/technic/textures/technicx32/technic_power_meter2.png delete mode 100644 technic/technic/textures/technicx32/technic_power_meter3.png delete mode 100644 technic/technic/textures/technicx32/technic_power_meter4.png delete mode 100644 technic/technic/textures/technicx32/technic_power_meter5.png delete mode 100644 technic/technic/textures/technicx32/technic_power_meter6.png delete mode 100644 technic/technic/textures/technicx32/technic_power_meter7.png delete mode 100644 technic/technic/textures/technicx32/technic_power_meter8.png delete mode 100644 technic/technic/textures/technicx32/technic_power_meter_bg.png delete mode 100644 technic/technic/textures/technicx32/technic_power_meter_fg.png delete mode 100644 technic/technic/textures/technicx32/technic_raw_latex.png delete mode 100644 technic/technic/textures/technicx32/technic_rubber.png delete mode 100644 technic/technic/textures/technicx32/technic_rubber_sapling.png delete mode 100644 technic/technic/textures/technicx32/technic_rubber_tree_empty.png delete mode 100644 technic/technic/textures/technicx32/technic_rubber_tree_full.png delete mode 100644 technic/technic/textures/technicx32/technic_screwdriver.png delete mode 100644 technic/technic/textures/technicx32/technic_silicon_wafer.png delete mode 100644 technic/technic/textures/technicx32/technic_silver_dust.png delete mode 100644 technic/technic/textures/technicx32/technic_solar_panel_bottom.png delete mode 100644 technic/technic/textures/technicx32/technic_solar_panel_side.png delete mode 100644 technic/technic/textures/technicx32/technic_solar_panel_top.png delete mode 100644 technic/technic/textures/technicx32/technic_sonic_screwdriver.png delete mode 100644 technic/technic/textures/technicx32/technic_stainless_steel_dust.png delete mode 100644 technic/technic/textures/technicx32/technic_talinite_dust.png delete mode 100644 technic/technic/textures/technicx32/technic_tin_dust.png delete mode 100644 technic/technic/textures/technicx32/technic_tree_tap.png delete mode 100644 technic/technic/textures/technicx32/technic_uranium_dust.png delete mode 100644 technic/technic/textures/technicx32/technic_water_can.png delete mode 100644 technic/technic/textures/technicx32/technic_water_mill_side.png delete mode 100644 technic/technic/textures/technicx32/technic_water_mill_top.png delete mode 100644 technic/technic/textures/technicx32/technic_water_mill_top_active.png delete mode 100644 technic/technic/textures/technicx32/technic_workshop_bottom.png delete mode 100644 technic/technic/textures/technicx32/technic_workshop_side.png delete mode 100644 technic/technic/textures/technicx32/technic_workshop_top.png delete mode 100644 technic/technic/textures/technicx32/technic_wrought_iron_dust.png delete mode 100644 technic/technic/textures/technicx32/technic_zinc_dust.png delete mode 100644 technic/technic/tools/cans.lua delete mode 100644 technic/technic/tools/chainsaw.lua delete mode 100644 technic/technic/tools/flashlight.lua delete mode 100644 technic/technic/tools/init.lua delete mode 100644 technic/technic/tools/mining_drill.lua delete mode 100644 technic/technic/tools/mining_lasers.lua delete mode 100644 technic/technic/tools/prospector.lua delete mode 100644 technic/technic/tools/sonic_screwdriver.lua delete mode 100644 technic/technic/tools/tree_tap.lua delete mode 100644 technic/technic/tools/vacuum.lua delete mode 100644 technic/technic_chests/README.md delete mode 100644 technic/technic_chests/common.lua delete mode 100644 technic/technic_chests/copper_chest.lua delete mode 100644 technic/technic_chests/depends.txt delete mode 100644 technic/technic_chests/gold_chest.lua delete mode 100644 technic/technic_chests/init.lua delete mode 100644 technic/technic_chests/iron_chest.lua delete mode 100644 technic/technic_chests/locale/de.txt delete mode 100644 technic/technic_chests/locale/template.txt delete mode 100644 technic/technic_chests/locale/tr.txt delete mode 100644 technic/technic_chests/mithril_chest.lua delete mode 100644 technic/technic_chests/register.lua delete mode 100644 technic/technic_chests/silver_chest.lua delete mode 100644 technic/technic_chests/textures/technic_checkmark_icon.png delete mode 100644 technic/technic_chests/textures/technic_chest_form_bg.png delete mode 100644 technic/technic_chests/textures/technic_chest_overlay_black.png delete mode 100644 technic/technic_chests/textures/technic_chest_overlay_blue.png delete mode 100644 technic/technic_chests/textures/technic_chest_overlay_brown.png delete mode 100644 technic/technic_chests/textures/technic_chest_overlay_cyan.png delete mode 100644 technic/technic_chests/textures/technic_chest_overlay_dark_green.png delete mode 100644 technic/technic_chests/textures/technic_chest_overlay_dark_grey.png delete mode 100644 technic/technic_chests/textures/technic_chest_overlay_green.png delete mode 100644 technic/technic_chests/textures/technic_chest_overlay_grey.png delete mode 100644 technic/technic_chests/textures/technic_chest_overlay_magenta.png delete mode 100644 technic/technic_chests/textures/technic_chest_overlay_orange.png delete mode 100644 technic/technic_chests/textures/technic_chest_overlay_pink.png delete mode 100644 technic/technic_chests/textures/technic_chest_overlay_red.png delete mode 100644 technic/technic_chests/textures/technic_chest_overlay_violet.png delete mode 100644 technic/technic_chests/textures/technic_chest_overlay_white.png delete mode 100644 technic/technic_chests/textures/technic_chest_overlay_yellow.png delete mode 100644 technic/technic_chests/textures/technic_colorbutton0.png delete mode 100644 technic/technic_chests/textures/technic_colorbutton1.png delete mode 100644 technic/technic_chests/textures/technic_colorbutton10.png delete mode 100644 technic/technic_chests/textures/technic_colorbutton11.png delete mode 100644 technic/technic_chests/textures/technic_colorbutton12.png delete mode 100644 technic/technic_chests/textures/technic_colorbutton13.png delete mode 100644 technic/technic_chests/textures/technic_colorbutton14.png delete mode 100644 technic/technic_chests/textures/technic_colorbutton15.png delete mode 100644 technic/technic_chests/textures/technic_colorbutton2.png delete mode 100644 technic/technic_chests/textures/technic_colorbutton3.png delete mode 100644 technic/technic_chests/textures/technic_colorbutton4.png delete mode 100644 technic/technic_chests/textures/technic_colorbutton5.png delete mode 100644 technic/technic_chests/textures/technic_colorbutton6.png delete mode 100644 technic/technic_chests/textures/technic_colorbutton7.png delete mode 100644 technic/technic_chests/textures/technic_colorbutton8.png delete mode 100644 technic/technic_chests/textures/technic_colorbutton9.png delete mode 100644 technic/technic_chests/textures/technic_copper_chest_front.png delete mode 100644 technic/technic_chests/textures/technic_copper_chest_inventory.png delete mode 100644 technic/technic_chests/textures/technic_copper_chest_lock_overlay.png delete mode 100644 technic/technic_chests/textures/technic_copper_chest_side.png delete mode 100644 technic/technic_chests/textures/technic_copper_chest_top.png delete mode 100644 technic/technic_chests/textures/technic_form_bg.png delete mode 100644 technic/technic_chests/textures/technic_gold_chest_front.png delete mode 100644 technic/technic_chests/textures/technic_gold_chest_inventory.png delete mode 100644 technic/technic_chests/textures/technic_gold_chest_lock_overlay.png delete mode 100644 technic/technic_chests/textures/technic_gold_chest_side.png delete mode 100644 technic/technic_chests/textures/technic_gold_chest_top.png delete mode 100644 technic/technic_chests/textures/technic_iron_chest_front.png delete mode 100644 technic/technic_chests/textures/technic_iron_chest_inventory.png delete mode 100644 technic/technic_chests/textures/technic_iron_chest_lock_overlay.png delete mode 100644 technic/technic_chests/textures/technic_iron_chest_side.png delete mode 100644 technic/technic_chests/textures/technic_iron_chest_top.png delete mode 100644 technic/technic_chests/textures/technic_main_inventory.png delete mode 100644 technic/technic_chests/textures/technic_mithril_chest_front.png delete mode 100644 technic/technic_chests/textures/technic_mithril_chest_inventory.png delete mode 100644 technic/technic_chests/textures/technic_mithril_chest_lock_overlay.png delete mode 100644 technic/technic_chests/textures/technic_mithril_chest_side.png delete mode 100644 technic/technic_chests/textures/technic_mithril_chest_top.png delete mode 100644 technic/technic_chests/textures/technic_pencil_icon.png delete mode 100644 technic/technic_chests/textures/technic_silver_chest_front.png delete mode 100644 technic/technic_chests/textures/technic_silver_chest_inventory.png delete mode 100644 technic/technic_chests/textures/technic_silver_chest_lock_overlay.png delete mode 100644 technic/technic_chests/textures/technic_silver_chest_side.png delete mode 100644 technic/technic_chests/textures/technic_silver_chest_top.png delete mode 100644 technic/technic_chests/textures/technic_wooden_chest_inventory.png delete mode 100644 technic/technic_chests/textures/x32/technic_copper_chest_front.png delete mode 100644 technic/technic_chests/textures/x32/technic_copper_chest_side.png delete mode 100644 technic/technic_chests/textures/x32/technic_copper_chest_top.png delete mode 100644 technic/technic_chests/textures/x32/technic_gold_chest_front.png delete mode 100644 technic/technic_chests/textures/x32/technic_gold_chest_side.png delete mode 100644 technic/technic_chests/textures/x32/technic_gold_chest_top.png delete mode 100644 technic/technic_chests/textures/x32/technic_iron_chest_front.png delete mode 100644 technic/technic_chests/textures/x32/technic_iron_chest_side.png delete mode 100644 technic/technic_chests/textures/x32/technic_iron_chest_top.png delete mode 100644 technic/technic_chests/textures/x32/technic_mithril_chest_front.png delete mode 100644 technic/technic_chests/textures/x32/technic_mithril_chest_side.png delete mode 100644 technic/technic_chests/textures/x32/technic_mithril_chest_top.png delete mode 100644 technic/technic_chests/textures/x32/technic_silver_chest_front.png delete mode 100644 technic/technic_chests/textures/x32/technic_silver_chest_side.png delete mode 100644 technic/technic_chests/textures/x32/technic_silver_chest_top.png delete mode 100644 technic/technic_chests/wooden_chest.lua delete mode 100644 technic/technic_worldgen/config.lua delete mode 100644 technic/technic_worldgen/crafts.lua delete mode 100644 technic/technic_worldgen/depends.txt delete mode 100644 technic/technic_worldgen/init.lua delete mode 100644 technic/technic_worldgen/locale/de.txt delete mode 100644 technic/technic_worldgen/locale/template.txt delete mode 100644 technic/technic_worldgen/locale/tr.txt delete mode 100644 technic/technic_worldgen/mg.lua delete mode 100644 technic/technic_worldgen/nodes.lua delete mode 100644 technic/technic_worldgen/oregen.lua delete mode 100644 technic/technic_worldgen/rubber.lua delete mode 100644 technic/technic_worldgen/textures/technic_brass_block.png delete mode 100644 technic/technic_worldgen/textures/technic_brass_dust.png delete mode 100644 technic/technic_worldgen/textures/technic_brass_ingot.png delete mode 100644 technic/technic_worldgen/textures/technic_carbon_steel_block.png delete mode 100644 technic/technic_worldgen/textures/technic_carbon_steel_ingot.png delete mode 100644 technic/technic_worldgen/textures/technic_cast_iron_block.png delete mode 100644 technic/technic_worldgen/textures/technic_cast_iron_ingot.png delete mode 100644 technic/technic_worldgen/textures/technic_chromium_block.png delete mode 100644 technic/technic_worldgen/textures/technic_chromium_ingot.png delete mode 100644 technic/technic_worldgen/textures/technic_chromium_lump.png delete mode 100644 technic/technic_worldgen/textures/technic_granite.png delete mode 100644 technic/technic_worldgen/textures/technic_lead_block.png delete mode 100644 technic/technic_worldgen/textures/technic_lead_dust.png delete mode 100644 technic/technic_worldgen/textures/technic_lead_ingot.png delete mode 100644 technic/technic_worldgen/textures/technic_lead_lump.png delete mode 100644 technic/technic_worldgen/textures/technic_marble.png delete mode 100644 technic/technic_worldgen/textures/technic_marble_bricks.png delete mode 100644 technic/technic_worldgen/textures/technic_mineral_chromium.png delete mode 100644 technic/technic_worldgen/textures/technic_mineral_lead.png delete mode 100644 technic/technic_worldgen/textures/technic_mineral_sulfur.png delete mode 100644 technic/technic_worldgen/textures/technic_mineral_uranium.png delete mode 100644 technic/technic_worldgen/textures/technic_mineral_zinc.png delete mode 100644 technic/technic_worldgen/textures/technic_rubber.png delete mode 100644 technic/technic_worldgen/textures/technic_rubber_leaves.png delete mode 100644 technic/technic_worldgen/textures/technic_rubber_sapling.png delete mode 100644 technic/technic_worldgen/textures/technic_rubber_tree_empty.png delete mode 100644 technic/technic_worldgen/textures/technic_rubber_tree_full.png delete mode 100644 technic/technic_worldgen/textures/technic_rubber_tree_grindings.png delete mode 100644 technic/technic_worldgen/textures/technic_stainless_steel_block.png delete mode 100644 technic/technic_worldgen/textures/technic_sulfur_dust.png delete mode 100644 technic/technic_worldgen/textures/technic_sulfur_lump.png delete mode 100644 technic/technic_worldgen/textures/technic_uranium_block.png delete mode 100644 technic/technic_worldgen/textures/technic_uranium_ingot.png delete mode 100644 technic/technic_worldgen/textures/technic_uranium_lump.png delete mode 100644 technic/technic_worldgen/textures/technic_wrought_iron_block.png delete mode 100644 technic/technic_worldgen/textures/technic_wrought_iron_ingot.png delete mode 100644 technic/technic_worldgen/textures/technic_zinc_block.png delete mode 100644 technic/technic_worldgen/textures/technic_zinc_ingot.png delete mode 100644 technic/technic_worldgen/textures/technic_zinc_lump.png delete mode 100644 technic/technic_worldgen/textures/x32/technic_brass_ingot.png delete mode 100644 technic/technic_worldgen/textures/x32/technic_chromium_ingot.png delete mode 100644 technic/technic_worldgen/textures/x32/technic_chromium_lump.png delete mode 100644 technic/technic_worldgen/textures/x32/technic_concrete_block.png delete mode 100644 technic/technic_worldgen/textures/x32/technic_granite.png delete mode 100644 technic/technic_worldgen/textures/x32/technic_marble.png delete mode 100644 technic/technic_worldgen/textures/x32/technic_marble_bricks.png delete mode 100644 technic/technic_worldgen/textures/x32/technic_mineral_chromium.png delete mode 100644 technic/technic_worldgen/textures/x32/technic_mineral_uranium.png delete mode 100644 technic/technic_worldgen/textures/x32/technic_mineral_zinc.png delete mode 100644 technic/technic_worldgen/textures/x32/technic_rebar.png delete mode 100644 technic/technic_worldgen/textures/x32/technic_stainless_steel_ingot.png delete mode 100644 technic/technic_worldgen/textures/x32/technic_uranium.png delete mode 100644 technic/technic_worldgen/textures/x32/technic_zinc_ingot.png delete mode 100644 technic/technic_worldgen/textures/x32/technic_zinc_lump.png create mode 100644 technic/textures/hires/technic_hv_nuclear_reactor_core_128.png create mode 100644 technic/textures/hires/technic_hv_nuclear_reactor_core_16.png create mode 100644 technic/textures/hires/technic_hv_nuclear_reactor_core_256.png create mode 100644 technic/textures/hires/technic_hv_nuclear_reactor_core_32.png create mode 100644 technic/textures/hires/technic_hv_nuclear_reactor_core_512.png create mode 100644 technic/textures/hires/technic_hv_nuclear_reactor_core_64.png create mode 100644 technic/textures/power_meter.png create mode 100644 technic/textures/technic_acacia_grindings.png create mode 100644 technic/textures/technic_admin_anchor.png create mode 100644 technic/textures/technic_akalin_dust.png create mode 100644 technic/textures/technic_alatro_dust.png create mode 100644 technic/textures/technic_arol_dust.png create mode 100644 technic/textures/technic_battery.png create mode 100644 technic/textures/technic_battery_box_side.png create mode 100644 technic/textures/technic_battery_box_side8.png create mode 100644 technic/textures/technic_battery_box_side_mv.png create mode 100644 technic/textures/technic_battery_meter_fg.png create mode 100644 technic/textures/technic_battery_reload.png create mode 100644 technic/textures/technic_bronze_dust.png create mode 100644 technic/textures/technic_bucket_corium.png create mode 100644 technic/textures/technic_carbon_cloth.png create mode 100644 technic/textures/technic_carbon_plate.png create mode 100644 technic/textures/technic_carbon_steel_dust.png create mode 100644 technic/textures/technic_cast_iron_dust.png create mode 100644 technic/textures/technic_chainsaw.png create mode 100644 technic/textures/technic_chernobylite_block.png create mode 100644 technic/textures/technic_chromium_dust.png create mode 100644 technic/textures/technic_cnc_bottom.png create mode 100644 technic/textures/technic_cnc_cylinder.png create mode 100644 technic/textures/technic_cnc_cylinder_horizontal.png create mode 100644 technic/textures/technic_cnc_element_cross.png create mode 100644 technic/textures/technic_cnc_element_edge.png create mode 100644 technic/textures/technic_cnc_element_end.png create mode 100644 technic/textures/technic_cnc_element_straight.png create mode 100644 technic/textures/technic_cnc_element_t.png create mode 100644 technic/textures/technic_cnc_front.png create mode 100644 technic/textures/technic_cnc_front_active.png create mode 100644 technic/textures/technic_cnc_full.png create mode 100644 technic/textures/technic_cnc_half.png create mode 100644 technic/textures/technic_cnc_milling_background.png create mode 100644 technic/textures/technic_cnc_oblate_spheroid.png create mode 100644 technic/textures/technic_cnc_onecurvededge.png create mode 100644 technic/textures/technic_cnc_pyramid.png create mode 100644 technic/textures/technic_cnc_side.png create mode 100644 technic/textures/technic_cnc_slope.png create mode 100644 technic/textures/technic_cnc_slope_edge.png create mode 100644 technic/textures/technic_cnc_slope_edge_upsdwn.png create mode 100644 technic/textures/technic_cnc_slope_inner_edge.png create mode 100644 technic/textures/technic_cnc_slope_inner_edge_upsdwn.png create mode 100644 technic/textures/technic_cnc_slope_lying.png create mode 100644 technic/textures/technic_cnc_slope_upsdwn.png create mode 100644 technic/textures/technic_cnc_sphere.png create mode 100644 technic/textures/technic_cnc_spike.png create mode 100644 technic/textures/technic_cnc_stick.png create mode 100644 technic/textures/technic_cnc_top.png create mode 100644 technic/textures/technic_cnc_top_active.png create mode 100644 technic/textures/technic_cnc_twocurvededge.png create mode 100644 technic/textures/technic_coal_alloy_furnace_bottom.png create mode 100644 technic/textures/technic_coal_alloy_furnace_front.png create mode 100644 technic/textures/technic_coal_alloy_furnace_front_active.png create mode 100644 technic/textures/technic_coal_alloy_furnace_side.png create mode 100644 technic/textures/technic_coal_alloy_furnace_top.png create mode 100644 technic/textures/technic_coal_dust.png create mode 100644 technic/textures/technic_common_tree_grindings.png create mode 100644 technic/textures/technic_composite_plate.png create mode 100644 technic/textures/technic_constructor_back.png create mode 100644 technic/textures/technic_constructor_front_off.png create mode 100644 technic/textures/technic_constructor_front_on.png create mode 100644 technic/textures/technic_constructor_mk1_bottom_off.png create mode 100644 technic/textures/technic_constructor_mk1_bottom_on.png create mode 100644 technic/textures/technic_constructor_mk1_side1_off.png create mode 100644 technic/textures/technic_constructor_mk1_side1_on.png create mode 100644 technic/textures/technic_constructor_mk1_side2_off.png create mode 100644 technic/textures/technic_constructor_mk1_side2_on.png create mode 100644 technic/textures/technic_constructor_mk1_top_off.png create mode 100644 technic/textures/technic_constructor_mk1_top_on.png create mode 100644 technic/textures/technic_constructor_mk2_bottom_off.png create mode 100644 technic/textures/technic_constructor_mk2_bottom_on.png create mode 100644 technic/textures/technic_constructor_mk2_side1_off.png create mode 100644 technic/textures/technic_constructor_mk2_side1_on.png create mode 100644 technic/textures/technic_constructor_mk2_side2_off.png create mode 100644 technic/textures/technic_constructor_mk2_side2_on.png create mode 100644 technic/textures/technic_constructor_mk2_top_off.png create mode 100644 technic/textures/technic_constructor_mk2_top_on.png create mode 100644 technic/textures/technic_constructor_mk3_bottom_off.png create mode 100644 technic/textures/technic_constructor_mk3_bottom_on.png create mode 100644 technic/textures/technic_constructor_mk3_side1_off.png create mode 100644 technic/textures/technic_constructor_mk3_side1_on.png create mode 100644 technic/textures/technic_constructor_mk3_side2_off.png create mode 100644 technic/textures/technic_constructor_mk3_side2_on.png create mode 100644 technic/textures/technic_constructor_mk3_top_off.png create mode 100644 technic/textures/technic_constructor_mk3_top_on.png create mode 100644 technic/textures/technic_control_logic_unit.png create mode 100644 technic/textures/technic_copper_coil.png create mode 100644 technic/textures/technic_copper_dust.png create mode 100644 technic/textures/technic_copper_plate.png create mode 100644 technic/textures/technic_corium_flowing_animated.png create mode 100644 technic/textures/technic_corium_source_animated.png create mode 100644 technic/textures/technic_deployer_back.png create mode 100644 technic/textures/technic_deployer_bottom.png create mode 100644 technic/textures/technic_deployer_front_off.png create mode 100644 technic/textures/technic_deployer_front_on.png create mode 100644 technic/textures/technic_deployer_side.png create mode 100644 technic/textures/technic_deployer_side1.png create mode 100644 technic/textures/technic_deployer_side2.png create mode 100644 technic/textures/technic_deployer_top.png create mode 100644 technic/textures/technic_diamond_block_blue.png create mode 100644 technic/textures/technic_diamond_block_green.png create mode 100644 technic/textures/technic_diamond_block_red.png create mode 100644 technic/textures/technic_diamond_drill_head.png create mode 100644 technic/textures/technic_doped_silicon_wafer.png create mode 100644 technic/textures/technic_fine_copper_wire.png create mode 100644 technic/textures/technic_fine_gold_wire.png create mode 100644 technic/textures/technic_fine_silver_wire.png create mode 100644 technic/textures/technic_flashlight.png create mode 100644 technic/textures/technic_forcefield_animated.png create mode 100644 technic/textures/technic_forcefield_emitter_off.png create mode 100644 technic/textures/technic_forcefield_emitter_on.png create mode 100644 technic/textures/technic_frame.png create mode 100644 technic/textures/technic_geothermal_side.png create mode 100644 technic/textures/technic_geothermal_top.png create mode 100644 technic/textures/technic_geothermal_top_active.png create mode 100644 technic/textures/technic_gold_dust.png create mode 100644 technic/textures/technic_graphite.png create mode 100644 technic/textures/technic_grinder_front.png create mode 100644 technic/textures/technic_grinder_side.png create mode 100644 technic/textures/technic_grinder_top.png create mode 100644 technic/textures/technic_homedecor_glowlight_cube_white_sides.png create mode 100644 technic/textures/technic_homedecor_glowlight_cube_white_sides_ceiling.png create mode 100644 technic/textures/technic_homedecor_glowlight_cube_white_tb.png create mode 100644 technic/textures/technic_homedecor_glowlight_cube_yellow_sides.png create mode 100644 technic/textures/technic_homedecor_glowlight_cube_yellow_sides_ceiling.png create mode 100644 technic/textures/technic_homedecor_glowlight_cube_yellow_tb.png create mode 100644 technic/textures/technic_homedecor_glowlight_thick_white_sides.png create mode 100644 technic/textures/technic_homedecor_glowlight_thick_white_wall_sides.png create mode 100644 technic/textures/technic_homedecor_glowlight_thick_yellow_sides.png create mode 100644 technic/textures/technic_homedecor_glowlight_thick_yellow_wall_sides.png create mode 100644 technic/textures/technic_homedecor_glowlight_thin_white_sides.png create mode 100644 technic/textures/technic_homedecor_glowlight_thin_white_wall_sides.png create mode 100644 technic/textures/technic_homedecor_glowlight_thin_yellow_sides.png create mode 100644 technic/textures/technic_homedecor_glowlight_thin_yellow_wall_sides.png create mode 100644 technic/textures/technic_homedecor_glowlight_white_tb.png create mode 100644 technic/textures/technic_homedecor_glowlight_yellow_tb.png create mode 100644 technic/textures/technic_hv_battery_box_bottom.png create mode 100644 technic/textures/technic_hv_battery_box_side.png create mode 100644 technic/textures/technic_hv_battery_box_top.png create mode 100644 technic/textures/technic_hv_cable.png create mode 100644 technic/textures/technic_hv_cable_wield.png create mode 100644 technic/textures/technic_hv_down_converter_bottom.png create mode 100644 technic/textures/technic_hv_down_converter_side.png create mode 100644 technic/textures/technic_hv_down_converter_top.png create mode 100644 technic/textures/technic_hv_generator_front.png create mode 100644 technic/textures/technic_hv_generator_front_active.png create mode 100644 technic/textures/technic_hv_generator_side.png create mode 100644 technic/textures/technic_hv_generator_top.png create mode 100644 technic/textures/technic_hv_grinder_bottom.png create mode 100644 technic/textures/technic_hv_grinder_front.png create mode 100644 technic/textures/technic_hv_grinder_front_active.png create mode 100644 technic/textures/technic_hv_grinder_side.png create mode 100644 technic/textures/technic_hv_grinder_side_tube.png create mode 100644 technic/textures/technic_hv_grinder_top.png create mode 100644 technic/textures/technic_hv_nuclear_reactor_core.png create mode 100644 technic/textures/technic_hv_solar_array_bottom.png create mode 100644 technic/textures/technic_hv_solar_array_side.png create mode 100644 technic/textures/technic_hv_solar_array_top.png create mode 100644 technic/textures/technic_hv_transformer.png create mode 100644 technic/textures/technic_injector_bottom.png create mode 100644 technic/textures/technic_injector_side.png create mode 100644 technic/textures/technic_injector_top.png create mode 100644 technic/textures/technic_kalite_dust.png create mode 100644 technic/textures/technic_laser_beam_mk1.png create mode 100644 technic/textures/technic_laser_beam_mk2.png create mode 100644 technic/textures/technic_laser_beam_mk3.png create mode 100644 technic/textures/technic_lava_can.png create mode 100644 technic/textures/technic_light.png create mode 100644 technic/textures/technic_lv_alloy_furnace_bottom.png create mode 100644 technic/textures/technic_lv_alloy_furnace_front.png create mode 100644 technic/textures/technic_lv_alloy_furnace_front_active.png create mode 100644 technic/textures/technic_lv_alloy_furnace_side.png create mode 100644 technic/textures/technic_lv_alloy_furnace_top.png create mode 100644 technic/textures/technic_lv_battery_box_bottom.png create mode 100644 technic/textures/technic_lv_battery_box_side.png create mode 100644 technic/textures/technic_lv_battery_box_top.png create mode 100644 technic/textures/technic_lv_cable.png create mode 100644 technic/textures/technic_lv_cable_wield.png create mode 100644 technic/textures/technic_lv_compressor_back.png create mode 100644 technic/textures/technic_lv_compressor_bottom.png create mode 100644 technic/textures/technic_lv_compressor_front.png create mode 100644 technic/textures/technic_lv_compressor_front_active.png create mode 100644 technic/textures/technic_lv_compressor_side.png create mode 100644 technic/textures/technic_lv_compressor_top.png create mode 100644 technic/textures/technic_lv_electric_furnace_bottom.png create mode 100644 technic/textures/technic_lv_electric_furnace_front.png create mode 100644 technic/textures/technic_lv_electric_furnace_front_active.png create mode 100644 technic/textures/technic_lv_electric_furnace_side.png create mode 100644 technic/textures/technic_lv_electric_furnace_top.png create mode 100644 technic/textures/technic_lv_extractor_bottom.png create mode 100644 technic/textures/technic_lv_extractor_front.png create mode 100644 technic/textures/technic_lv_extractor_front_active.png create mode 100644 technic/textures/technic_lv_extractor_side.png create mode 100644 technic/textures/technic_lv_extractor_top.png create mode 100644 technic/textures/technic_lv_generator_front.png create mode 100644 technic/textures/technic_lv_generator_front_active.png create mode 100644 technic/textures/technic_lv_generator_side.png create mode 100644 technic/textures/technic_lv_generator_top.png create mode 100644 technic/textures/technic_lv_grinder_bottom.png create mode 100644 technic/textures/technic_lv_grinder_front.png create mode 100644 technic/textures/technic_lv_grinder_front_active.png create mode 100644 technic/textures/technic_lv_grinder_side.png create mode 100644 technic/textures/technic_lv_grinder_top.png create mode 100644 technic/textures/technic_lv_solar_array_bottom.png create mode 100644 technic/textures/technic_lv_solar_array_side.png create mode 100644 technic/textures/technic_lv_solar_array_top.png create mode 100644 technic/textures/technic_lv_transformer.png create mode 100644 technic/textures/technic_machine_bottom.png create mode 100644 technic/textures/technic_machine_casing.png create mode 100644 technic/textures/technic_mining_drill.png create mode 100644 technic/textures/technic_mining_drill_mk2.png create mode 100644 technic/textures/technic_mining_drill_mk3.png create mode 100644 technic/textures/technic_mining_laser_mk1.png create mode 100644 technic/textures/technic_mining_laser_mk2.png create mode 100644 technic/textures/technic_mining_laser_mk3.png create mode 100644 technic/textures/technic_mithril_dust.png create mode 100644 technic/textures/technic_mixed_metal_ingot.png create mode 100644 technic/textures/technic_motor.png create mode 100644 technic/textures/technic_music_player_bottom.png create mode 100644 technic/textures/technic_music_player_side.png create mode 100644 technic/textures/technic_music_player_top.png create mode 100644 technic/textures/technic_mv_alloy_furnace_bottom.png create mode 100644 technic/textures/technic_mv_alloy_furnace_front.png create mode 100644 technic/textures/technic_mv_alloy_furnace_front_active.png create mode 100644 technic/textures/technic_mv_alloy_furnace_side.png create mode 100644 technic/textures/technic_mv_alloy_furnace_side_tube.png create mode 100644 technic/textures/technic_mv_alloy_furnace_top.png create mode 100644 technic/textures/technic_mv_battery_box_bottom.png create mode 100644 technic/textures/technic_mv_battery_box_side.png create mode 100644 technic/textures/technic_mv_battery_box_top.png create mode 100644 technic/textures/technic_mv_cable.png create mode 100644 technic/textures/technic_mv_cable_wield.png create mode 100644 technic/textures/technic_mv_centrifuge_bottom.png create mode 100644 technic/textures/technic_mv_centrifuge_front.png create mode 100644 technic/textures/technic_mv_centrifuge_front_active.png create mode 100644 technic/textures/technic_mv_centrifuge_side.png create mode 100644 technic/textures/technic_mv_centrifuge_top.png create mode 100644 technic/textures/technic_mv_compressor_back.png create mode 100644 technic/textures/technic_mv_compressor_bottom.png create mode 100644 technic/textures/technic_mv_compressor_front.png create mode 100644 technic/textures/technic_mv_compressor_front_active.png create mode 100644 technic/textures/technic_mv_compressor_side.png create mode 100644 technic/textures/technic_mv_compressor_top.png create mode 100644 technic/textures/technic_mv_down_converter_bottom.png create mode 100644 technic/textures/technic_mv_down_converter_side.png create mode 100644 technic/textures/technic_mv_down_converter_top.png create mode 100644 technic/textures/technic_mv_electric_furnace_bottom.png create mode 100644 technic/textures/technic_mv_electric_furnace_front.png create mode 100644 technic/textures/technic_mv_electric_furnace_front_active.png create mode 100644 technic/textures/technic_mv_electric_furnace_side.png create mode 100644 technic/textures/technic_mv_electric_furnace_side_tube.png create mode 100644 technic/textures/technic_mv_electric_furnace_top.png create mode 100644 technic/textures/technic_mv_extractor_bottom.png create mode 100644 technic/textures/technic_mv_extractor_front.png create mode 100644 technic/textures/technic_mv_extractor_front_active.png create mode 100644 technic/textures/technic_mv_extractor_side.png create mode 100644 technic/textures/technic_mv_extractor_top.png create mode 100644 technic/textures/technic_mv_generator_front.png create mode 100644 technic/textures/technic_mv_generator_front_active.png create mode 100644 technic/textures/technic_mv_generator_side.png create mode 100644 technic/textures/technic_mv_generator_top.png create mode 100644 technic/textures/technic_mv_grinder_bottom.png create mode 100644 technic/textures/technic_mv_grinder_front.png create mode 100644 technic/textures/technic_mv_grinder_front_active.png create mode 100644 technic/textures/technic_mv_grinder_side.png create mode 100644 technic/textures/technic_mv_grinder_side_tube.png create mode 100644 technic/textures/technic_mv_grinder_top.png create mode 100644 technic/textures/technic_mv_solar_array_bottom.png create mode 100644 technic/textures/technic_mv_solar_array_side.png create mode 100644 technic/textures/technic_mv_solar_array_top.png create mode 100644 technic/textures/technic_mv_transformer.png create mode 100644 technic/textures/technic_nodebreaker_back.png create mode 100644 technic/textures/technic_nodebreaker_bottom.png create mode 100644 technic/textures/technic_nodebreaker_bottom_off.png create mode 100644 technic/textures/technic_nodebreaker_bottom_on.png create mode 100644 technic/textures/technic_nodebreaker_front_off.png create mode 100644 technic/textures/technic_nodebreaker_front_on.png create mode 100644 technic/textures/technic_nodebreaker_side.png create mode 100644 technic/textures/technic_nodebreaker_side1.png create mode 100644 technic/textures/technic_nodebreaker_side1_off.png create mode 100644 technic/textures/technic_nodebreaker_side1_on.png create mode 100644 technic/textures/technic_nodebreaker_side2.png create mode 100644 technic/textures/technic_nodebreaker_side2_off.png create mode 100644 technic/textures/technic_nodebreaker_side2_on.png create mode 100644 technic/textures/technic_nodebreaker_top.png create mode 100644 technic/textures/technic_nodebreaker_top_off.png create mode 100644 technic/textures/technic_nodebreaker_top_on.png create mode 100644 technic/textures/technic_power_meter.png create mode 100644 technic/textures/technic_power_meter0.png create mode 100644 technic/textures/technic_power_meter1.png create mode 100644 technic/textures/technic_power_meter2.png create mode 100644 technic/textures/technic_power_meter3.png create mode 100644 technic/textures/technic_power_meter4.png create mode 100644 technic/textures/technic_power_meter5.png create mode 100644 technic/textures/technic_power_meter6.png create mode 100644 technic/textures/technic_power_meter7.png create mode 100644 technic/textures/technic_power_meter8.png create mode 100644 technic/textures/technic_power_meter_bg.png create mode 100644 technic/textures/technic_power_meter_fg.png create mode 100644 technic/textures/technic_prospector.png create mode 100644 technic/textures/technic_raw_latex.png create mode 100644 technic/textures/technic_rubber.png create mode 100644 technic/textures/technic_rubber_leaves.png create mode 100644 technic/textures/technic_rubber_sapling.png create mode 100644 technic/textures/technic_rubber_tree_empty.png create mode 100644 technic/textures/technic_rubber_tree_full.png create mode 100644 technic/textures/technic_rubber_tree_grindings.png create mode 100644 technic/textures/technic_sawdust.png create mode 100644 technic/textures/technic_screwdriver.png create mode 100644 technic/textures/technic_silicon_wafer.png create mode 100644 technic/textures/technic_silver_dust.png create mode 100644 technic/textures/technic_solar_panel_bottom.png create mode 100644 technic/textures/technic_solar_panel_side.png create mode 100644 technic/textures/technic_solar_panel_top.png create mode 100644 technic/textures/technic_sonic_screwdriver.png create mode 100644 technic/textures/technic_stainless_steel_dust.png create mode 100644 technic/textures/technic_stainless_steel_ingot.png create mode 100644 technic/textures/technic_supply_converter_bottom.png create mode 100644 technic/textures/technic_supply_converter_side.png create mode 100644 technic/textures/technic_supply_converter_top.png create mode 100644 technic/textures/technic_talinite_dust.png create mode 100644 technic/textures/technic_tin_dust.png create mode 100644 technic/textures/technic_tool_mode1.png create mode 100644 technic/textures/technic_tool_mode2.png create mode 100644 technic/textures/technic_tool_mode3.png create mode 100644 technic/textures/technic_tool_mode4.png create mode 100644 technic/textures/technic_tool_mode5.png create mode 100644 technic/textures/technic_tool_mode6.png create mode 100644 technic/textures/technic_tool_mode7.png create mode 100644 technic/textures/technic_tool_mode8.png create mode 100644 technic/textures/technic_tool_mode9.png create mode 100644 technic/textures/technic_tree_tap.png create mode 100644 technic/textures/technic_uranium_dust.png create mode 100644 technic/textures/technic_uranium_fuel.png create mode 100644 technic/textures/technic_vacuum.png create mode 100644 technic/textures/technic_water_can.png create mode 100644 technic/textures/technic_water_mill_side.png create mode 100644 technic/textures/technic_water_mill_top.png create mode 100644 technic/textures/technic_water_mill_top_active.png create mode 100644 technic/textures/technic_workshop_bottom.png create mode 100644 technic/textures/technic_workshop_side.png create mode 100644 technic/textures/technic_workshop_top.png create mode 100644 technic/textures/technic_wrought_iron_dust.png create mode 100644 technic/textures/technic_zinc_dust.png create mode 100644 technic/textures/technicx32/technic_akalin_dust.png create mode 100644 technic/textures/technicx32/technic_alatro_dust.png create mode 100644 technic/textures/technicx32/technic_alloy_furnace_front.png create mode 100644 technic/textures/technicx32/technic_alloy_furnace_front_active.png create mode 100644 technic/textures/technicx32/technic_alloy_furnace_side.png create mode 100644 technic/textures/technicx32/technic_alloy_furnace_top.png create mode 100644 technic/textures/technicx32/technic_arol_dust.png create mode 100644 technic/textures/technicx32/technic_battery.png create mode 100644 technic/textures/technicx32/technic_battery_box_bottom.png create mode 100644 technic/textures/technicx32/technic_battery_box_side0.png create mode 100644 technic/textures/technicx32/technic_battery_box_top.png create mode 100644 technic/textures/technicx32/technic_battery_reload.png create mode 100644 technic/textures/technicx32/technic_brass_dust.png create mode 100644 technic/textures/technicx32/technic_bronze_dust.png create mode 100644 technic/textures/technicx32/technic_carbon_steel_dust.png create mode 100644 technic/textures/technicx32/technic_cast_iron_dust.png create mode 100644 technic/textures/technicx32/technic_chainsaw.png create mode 100644 technic/textures/technicx32/technic_chromium_dust.png create mode 100644 technic/textures/technicx32/technic_coal_alloy_furnace_bottom.png create mode 100644 technic/textures/technicx32/technic_coal_alloy_furnace_front.png create mode 100644 technic/textures/technicx32/technic_coal_alloy_furnace_front_active.png create mode 100644 technic/textures/technicx32/technic_coal_alloy_furnace_side.png create mode 100644 technic/textures/technicx32/technic_coal_alloy_furnace_top.png create mode 100644 technic/textures/technicx32/technic_coal_dust.png create mode 100644 technic/textures/technicx32/technic_constructor_back.png create mode 100644 technic/textures/technicx32/technic_constructor_front_off.png create mode 100644 technic/textures/technicx32/technic_constructor_front_on.png create mode 100644 technic/textures/technicx32/technic_constructor_mk1_bottom_off.png create mode 100644 technic/textures/technicx32/technic_constructor_mk1_bottom_on.png create mode 100644 technic/textures/technicx32/technic_constructor_mk1_side1_off.png create mode 100644 technic/textures/technicx32/technic_constructor_mk1_side1_on.png create mode 100644 technic/textures/technicx32/technic_constructor_mk1_side2_off.png create mode 100644 technic/textures/technicx32/technic_constructor_mk1_side2_on.png create mode 100644 technic/textures/technicx32/technic_constructor_mk1_top_off.png create mode 100644 technic/textures/technicx32/technic_constructor_mk1_top_on.png create mode 100644 technic/textures/technicx32/technic_constructor_mk2_bottom_off.png create mode 100644 technic/textures/technicx32/technic_constructor_mk2_bottom_on.png create mode 100644 technic/textures/technicx32/technic_constructor_mk2_side1_off.png create mode 100644 technic/textures/technicx32/technic_constructor_mk2_side1_on.png create mode 100644 technic/textures/technicx32/technic_constructor_mk2_side2_off.png create mode 100644 technic/textures/technicx32/technic_constructor_mk2_side2_on.png create mode 100644 technic/textures/technicx32/technic_constructor_mk2_top_off.png create mode 100644 technic/textures/technicx32/technic_constructor_mk2_top_on.png create mode 100644 technic/textures/technicx32/technic_constructor_mk3_bottom_off.png create mode 100644 technic/textures/technicx32/technic_constructor_mk3_bottom_on.png create mode 100644 technic/textures/technicx32/technic_constructor_mk3_side1_off.png create mode 100644 technic/textures/technicx32/technic_constructor_mk3_side1_on.png create mode 100644 technic/textures/technicx32/technic_constructor_mk3_side2_off.png create mode 100644 technic/textures/technicx32/technic_constructor_mk3_side2_on.png create mode 100644 technic/textures/technicx32/technic_constructor_mk3_top_off.png create mode 100644 technic/textures/technicx32/technic_constructor_mk3_top_on.png create mode 100644 technic/textures/technicx32/technic_control_logic_unit.png create mode 100644 technic/textures/technicx32/technic_copper_coil.png create mode 100644 technic/textures/technicx32/technic_copper_dust.png create mode 100644 technic/textures/technicx32/technic_deployer_back.png create mode 100644 technic/textures/technicx32/technic_deployer_bottom.png create mode 100644 technic/textures/technicx32/technic_deployer_front_off.png create mode 100644 technic/textures/technicx32/technic_deployer_front_on.png create mode 100644 technic/textures/technicx32/technic_deployer_side.png create mode 100644 technic/textures/technicx32/technic_deployer_side1.png create mode 100644 technic/textures/technicx32/technic_deployer_side2.png create mode 100644 technic/textures/technicx32/technic_deployer_top.png create mode 100644 technic/textures/technicx32/technic_diamond_block_blue.png create mode 100644 technic/textures/technicx32/technic_diamond_block_green.png create mode 100644 technic/textures/technicx32/technic_diamond_block_red.png create mode 100644 technic/textures/technicx32/technic_diamond_drill_head.png create mode 100644 technic/textures/technicx32/technic_doped_silicon_wafer.png create mode 100644 technic/textures/technicx32/technic_electric_furnace_bottom.png create mode 100644 technic/textures/technicx32/technic_electric_furnace_front.png create mode 100644 technic/textures/technicx32/technic_electric_furnace_front_active.png create mode 100644 technic/textures/technicx32/technic_electric_furnace_side.png create mode 100644 technic/textures/technicx32/technic_electric_furnace_top.png create mode 100644 technic/textures/technicx32/technic_fine_copper_wire.png create mode 100644 technic/textures/technicx32/technic_fine_gold_wire.png create mode 100644 technic/textures/technicx32/technic_fine_silver_wire.png create mode 100644 technic/textures/technicx32/technic_flashlight.png create mode 100644 technic/textures/technicx32/technic_generator_front.png create mode 100644 technic/textures/technicx32/technic_generator_front_active.png create mode 100644 technic/textures/technicx32/technic_generator_side.png create mode 100644 technic/textures/technicx32/technic_generator_top.png create mode 100644 technic/textures/technicx32/technic_geothermal_side.png create mode 100644 technic/textures/technicx32/technic_geothermal_top.png create mode 100644 technic/textures/technicx32/technic_geothermal_top_active.png create mode 100644 technic/textures/technicx32/technic_gold_dust.png create mode 100644 technic/textures/technicx32/technic_grinder_front.png create mode 100644 technic/textures/technicx32/technic_grinder_side.png create mode 100644 technic/textures/technicx32/technic_grinder_top.png create mode 100644 technic/textures/technicx32/technic_hv_grinder_bottom.png create mode 100644 technic/textures/technicx32/technic_hv_grinder_front.png create mode 100644 technic/textures/technicx32/technic_hv_grinder_front_active.png create mode 100644 technic/textures/technicx32/technic_hv_grinder_side.png create mode 100644 technic/textures/technicx32/technic_hv_grinder_side_tube.png create mode 100644 technic/textures/technicx32/technic_hv_grinder_top.png create mode 100644 technic/textures/technicx32/technic_hv_nuclear_reactor_core.png create mode 100644 technic/textures/technicx32/technic_hv_solar_array_bottom.png create mode 100644 technic/textures/technicx32/technic_hv_solar_array_side.png create mode 100644 technic/textures/technicx32/technic_hv_solar_array_top.png create mode 100644 technic/textures/technicx32/technic_hv_transformer.png create mode 100644 technic/textures/technicx32/technic_injector_bottom.png create mode 100644 technic/textures/technicx32/technic_injector_side.png create mode 100644 technic/textures/technicx32/technic_injector_top.png create mode 100644 technic/textures/technicx32/technic_kalite_dust.png create mode 100644 technic/textures/technicx32/technic_laser_beam.png create mode 100644 technic/textures/technicx32/technic_lava_can.png create mode 100644 technic/textures/technicx32/technic_light.png create mode 100644 technic/textures/technicx32/technic_lv_grinder_bottom.png create mode 100644 technic/textures/technicx32/technic_lv_grinder_front.png create mode 100644 technic/textures/technicx32/technic_lv_grinder_front_active.png create mode 100644 technic/textures/technicx32/technic_lv_grinder_side.png create mode 100644 technic/textures/technicx32/technic_lv_grinder_top.png create mode 100644 technic/textures/technicx32/technic_lv_solar_array_bottom.png create mode 100644 technic/textures/technicx32/technic_lv_solar_array_side.png create mode 100644 technic/textures/technicx32/technic_lv_solar_array_top.png create mode 100644 technic/textures/technicx32/technic_lv_transformer.png create mode 100644 technic/textures/technicx32/technic_machine_bottom.png create mode 100644 technic/textures/technicx32/technic_mining_drill.png create mode 100644 technic/textures/technicx32/technic_mining_laser_mk1.png create mode 100644 technic/textures/technicx32/technic_mithril_dust.png create mode 100644 technic/textures/technicx32/technic_motor.png create mode 100644 technic/textures/technicx32/technic_music_player_bottom.png create mode 100644 technic/textures/technicx32/technic_music_player_side.png create mode 100644 technic/textures/technicx32/technic_music_player_top.png create mode 100644 technic/textures/technicx32/technic_mv_alloy_furnace_bottom.png create mode 100644 technic/textures/technicx32/technic_mv_alloy_furnace_front.png create mode 100644 technic/textures/technicx32/technic_mv_alloy_furnace_front_active.png create mode 100644 technic/textures/technicx32/technic_mv_alloy_furnace_side.png create mode 100644 technic/textures/technicx32/technic_mv_alloy_furnace_side_tube.png create mode 100644 technic/textures/technicx32/technic_mv_alloy_furnace_top.png create mode 100644 technic/textures/technicx32/technic_mv_battery_box_bottom.png create mode 100644 technic/textures/technicx32/technic_mv_battery_box_side0.png create mode 100644 technic/textures/technicx32/technic_mv_battery_box_top.png create mode 100644 technic/textures/technicx32/technic_mv_cable_wield.png create mode 100644 technic/textures/technicx32/technic_mv_electric_furnace_bottom.png create mode 100644 technic/textures/technicx32/technic_mv_electric_furnace_front.png create mode 100644 technic/textures/technicx32/technic_mv_electric_furnace_front_active.png create mode 100644 technic/textures/technicx32/technic_mv_electric_furnace_side.png create mode 100644 technic/textures/technicx32/technic_mv_electric_furnace_side_tube.png create mode 100644 technic/textures/technicx32/technic_mv_electric_furnace_top.png create mode 100644 technic/textures/technicx32/technic_mv_grinder_bottom.png create mode 100644 technic/textures/technicx32/technic_mv_grinder_front.png create mode 100644 technic/textures/technicx32/technic_mv_grinder_front_active.png create mode 100644 technic/textures/technicx32/technic_mv_grinder_side.png create mode 100644 technic/textures/technicx32/technic_mv_grinder_side_tube.png create mode 100644 technic/textures/technicx32/technic_mv_grinder_top.png create mode 100644 technic/textures/technicx32/technic_mv_solar_array_bottom.png create mode 100644 technic/textures/technicx32/technic_mv_solar_array_side.png create mode 100644 technic/textures/technicx32/technic_mv_solar_array_top.png create mode 100644 technic/textures/technicx32/technic_mv_transformer.png create mode 100644 technic/textures/technicx32/technic_nodebreaker_back.png create mode 100644 technic/textures/technicx32/technic_nodebreaker_bottom.png create mode 100644 technic/textures/technicx32/technic_nodebreaker_bottom_off.png create mode 100644 technic/textures/technicx32/technic_nodebreaker_bottom_on.png create mode 100644 technic/textures/technicx32/technic_nodebreaker_front_off.png create mode 100644 technic/textures/technicx32/technic_nodebreaker_front_on.png create mode 100644 technic/textures/technicx32/technic_nodebreaker_side.png create mode 100644 technic/textures/technicx32/technic_nodebreaker_side1.png create mode 100644 technic/textures/technicx32/technic_nodebreaker_side1_off.png create mode 100644 technic/textures/technicx32/technic_nodebreaker_side1_on.png create mode 100644 technic/textures/technicx32/technic_nodebreaker_side2.png create mode 100644 technic/textures/technicx32/technic_nodebreaker_side2_off.png create mode 100644 technic/textures/technicx32/technic_nodebreaker_side2_on.png create mode 100644 technic/textures/technicx32/technic_nodebreaker_top.png create mode 100644 technic/textures/technicx32/technic_nodebreaker_top_off.png create mode 100644 technic/textures/technicx32/technic_nodebreaker_top_on.png create mode 100644 technic/textures/technicx32/technic_power_meter.png create mode 100644 technic/textures/technicx32/technic_power_meter1.png create mode 100644 technic/textures/technicx32/technic_power_meter2.png create mode 100644 technic/textures/technicx32/technic_power_meter3.png create mode 100644 technic/textures/technicx32/technic_power_meter4.png create mode 100644 technic/textures/technicx32/technic_power_meter5.png create mode 100644 technic/textures/technicx32/technic_power_meter6.png create mode 100644 technic/textures/technicx32/technic_power_meter7.png create mode 100644 technic/textures/technicx32/technic_power_meter8.png create mode 100644 technic/textures/technicx32/technic_power_meter_bg.png create mode 100644 technic/textures/technicx32/technic_power_meter_fg.png create mode 100644 technic/textures/technicx32/technic_raw_latex.png create mode 100644 technic/textures/technicx32/technic_rubber.png create mode 100644 technic/textures/technicx32/technic_rubber_sapling.png create mode 100644 technic/textures/technicx32/technic_rubber_tree_empty.png create mode 100644 technic/textures/technicx32/technic_rubber_tree_full.png create mode 100644 technic/textures/technicx32/technic_screwdriver.png create mode 100644 technic/textures/technicx32/technic_silicon_wafer.png create mode 100644 technic/textures/technicx32/technic_silver_dust.png create mode 100644 technic/textures/technicx32/technic_solar_panel_bottom.png create mode 100644 technic/textures/technicx32/technic_solar_panel_side.png create mode 100644 technic/textures/technicx32/technic_solar_panel_top.png create mode 100644 technic/textures/technicx32/technic_sonic_screwdriver.png create mode 100644 technic/textures/technicx32/technic_stainless_steel_dust.png create mode 100644 technic/textures/technicx32/technic_talinite_dust.png create mode 100644 technic/textures/technicx32/technic_tin_dust.png create mode 100644 technic/textures/technicx32/technic_tree_tap.png create mode 100644 technic/textures/technicx32/technic_uranium_dust.png create mode 100644 technic/textures/technicx32/technic_water_can.png create mode 100644 technic/textures/technicx32/technic_water_mill_side.png create mode 100644 technic/textures/technicx32/technic_water_mill_top.png create mode 100644 technic/textures/technicx32/technic_water_mill_top_active.png create mode 100644 technic/textures/technicx32/technic_workshop_bottom.png create mode 100644 technic/textures/technicx32/technic_workshop_side.png create mode 100644 technic/textures/technicx32/technic_workshop_top.png create mode 100644 technic/textures/technicx32/technic_wrought_iron_dust.png create mode 100644 technic/textures/technicx32/technic_zinc_dust.png create mode 100644 technic/tools/cans.lua create mode 100644 technic/tools/chainsaw.lua create mode 100644 technic/tools/flashlight.lua create mode 100644 technic/tools/init.lua create mode 100644 technic/tools/mining_drill.lua create mode 100644 technic/tools/mining_lasers.lua create mode 100644 technic/tools/prospector.lua create mode 100644 technic/tools/sonic_screwdriver.lua create mode 100644 technic/tools/tree_tap.lua create mode 100644 technic/tools/vacuum.lua delete mode 100644 technic/wrench/depends.txt delete mode 100644 technic/wrench/init.lua delete mode 100644 technic/wrench/locale/de.txt delete mode 100644 technic/wrench/locale/template.txt delete mode 100644 technic/wrench/locale/tr.txt delete mode 100644 technic/wrench/support.lua delete mode 100644 technic/wrench/technic.lua delete mode 100644 technic/wrench/textures/technic_wrench.png (limited to 'technic') diff --git a/technic/.mailmap b/technic/.mailmap deleted file mode 100644 index cf45bc3..0000000 --- a/technic/.mailmap +++ /dev/null @@ -1,4 +0,0 @@ -RealBadAngel -Vanessa Ezekowitz -Vanessa Ezekowitz -kaeza Diego Martínez diff --git a/technic/README.md b/technic/README.md index 406deab..b6aa05f 100644 --- a/technic/README.md +++ b/technic/README.md @@ -1,23 +1,27 @@ Technic ======= -Credits for contributing to the project (in alphabetical order): - * kpoppel - * Nekogloop - * Nore/Ekdohibs - * ShadowNinja - * VanessaE - * And many others... +License +------- -FAQ ---- +Copyright (C) 2012-2014 Maciej Kasatkin (RealBadAngel) -1. My technic circuit doesn't work. No power is distrubuted. - * A: Make sure you have a switching station connected. +Technic chests code is licensed under the GNU LGPLv2+. -License -------- +Texture licenses: + +BlockMen modified by Zefram (CC BY-SA 3.0): + * technic_chernobylite_block.png + * technic_corium_flowing_animated.png + * technic_corium_source_animated.png + +celeron55 (Perttu Ahola) modified by Zefram (CC BY-SA 3.0): + * technic_bucket_corium.png + +sdzen (Elise Staudter) (CC BY-SA 3.0): + * most of the older 16x16 textures + +RealBadAngel: (WTFPL) + * Everything else. -Unless otherwise stated, all components of this modpack are licensed under the -LGPL, V2 or later. See also the individual mod folders for their -secondary/alternate licenses, if any. +CC BY-SA 3.0: diff --git a/technic/concrete/depends.txt b/technic/concrete/depends.txt deleted file mode 100644 index c48fe0d..0000000 --- a/technic/concrete/depends.txt +++ /dev/null @@ -1,3 +0,0 @@ -default -intllib? - diff --git a/technic/concrete/init.lua b/technic/concrete/init.lua deleted file mode 100644 index d1fa1aa..0000000 --- a/technic/concrete/init.lua +++ /dev/null @@ -1,274 +0,0 @@ ---Minetest 0.4.7 mod: concrete ---(c) 2013 by RealBadAngel - -local technic = rawget(_G, "technic") or {} -technic.concrete_posts = {} - --- Boilerplate to support localized strings if intllib mod is installed. -local S = rawget(_G, "intllib") and intllib.Getter() or function(s) return s end - -minetest.register_alias("technic:concrete_post", "technic:concrete_post0") -minetest.register_alias("technic:concrete_post32", "technic:concrete_post12") -minetest.register_alias("technic:concrete_post33", "technic:concrete_post3") -minetest.register_alias("technic:concrete_post34", "technic:concrete_post28") -minetest.register_alias("technic:concrete_post35", "technic:concrete_post19") - -local steel_ingot -if minetest.get_modpath("technic_worldgen") then - steel_ingot = "technic:carbon_steel_ingot" -else - steel_ingot = "default:steel_ingot" -end - -minetest.register_craft({ - output = 'technic:rebar 6', - recipe = { - {'','', steel_ingot}, - {'',steel_ingot,''}, - {steel_ingot, '', ''}, - } -}) - -minetest.register_craft({ - output = 'technic:concrete 5', - recipe = { - {'default:stone','technic:rebar','default:stone'}, - {'technic:rebar','default:stone','technic:rebar'}, - {'default:stone','technic:rebar','default:stone'}, - } -}) - -minetest.register_craft({ - output = 'technic:concrete_post_platform 6', - recipe = { - {'technic:concrete','technic:concrete_post0','technic:concrete'}, - } -}) - -minetest.register_craft({ - output = 'technic:concrete_post0 12', - recipe = { - {'default:stone','technic:rebar','default:stone'}, - {'default:stone','technic:rebar','default:stone'}, - {'default:stone','technic:rebar','default:stone'}, -} -}) - -minetest.register_craft({ - output = 'technic:blast_resistant_concrete 5', - recipe = { - {'technic:concrete','technic:composite_plate','technic:concrete'}, - {'technic:composite_plate','technic:concrete','technic:composite_plate'}, - {'technic:concrete','technic:composite_plate','technic:concrete'}, - } -}) - -local box_platform = {-0.5, 0.3, -0.5, 0.5, 0.5, 0.5} -local box_center = {-0.15, -0.5, -0.15, 0.15, 0.5, 0.15} -local box_x1 = {0, -0.3, -0.1, 0.5, 0.3, 0.1} -local box_z1 = {-0.1, -0.3, 0, 0.1, 0.3, 0.5} -local box_x2 = {0, -0.3, -0.1, -0.5, 0.3, 0.1} -local box_z2 = {-0.1, -0.3, 0, 0.1, 0.3, -0.5} - -minetest.register_craftitem(":technic:rebar", { - description = S("Rebar"), - inventory_image = "technic_rebar.png", -}) - -minetest.register_node(":technic:concrete", { - description = S("Concrete Block"), - tiles = {"technic_concrete_block.png",}, - groups = {cracky=1, level=2, concrete=1}, - sounds = default.node_sound_stone_defaults(), - after_place_node = function(pos, placer, itemstack) - technic.update_posts(pos, false) - end, - after_dig_node = function (pos, oldnode, oldmetadata, digger) - technic.update_posts(pos, false) - end, -}) - -minetest.register_node(":technic:blast_resistant_concrete", { - description = S("Blast-resistant Concrete Block"), - tiles = {"technic_blast_resistant_concrete_block.png",}, - groups={cracky=1, level=3, concrete=1}, - sounds = default.node_sound_stone_defaults(), - after_place_node = function(pos, player, itemstack) - technic.update_posts(pos, false) - end, - after_dig_node = function (pos, oldnode, oldmetadata, digger) - technic.update_posts(pos, false) - end, -}) - -minetest.register_node(":technic:concrete_post_platform", { - description = S("Concrete Post Platform"), - tiles = {"technic_concrete_block.png",}, - groups={cracky=1, level=2}, - sounds = default.node_sound_stone_defaults(), - paramtype = "light", - drawtype = "nodebox", - node_box = { - type = "fixed", - fixed = {box_platform} - }, - on_place = function (itemstack, placer, pointed_thing) - local node = minetest.get_node(pointed_thing.under) - if not technic.concrete_posts[node.name] then - return minetest.item_place_node(itemstack, placer, pointed_thing) - end - local links = technic.concrete_posts[node.name] - if links[6] ~= 0 then -- The post already has a platform - return minetest.item_place_node(itemstack, placer, pointed_thing) - end - local id = technic.get_post_id({links[1], links[2], links[3], links[4], links[5], 1}) - minetest.set_node(pointed_thing.under, {name="technic:concrete_post"..id}) - itemstack:take_item() - placer:set_wielded_item(itemstack) - return itemstack - end, -}) - -local function gen_post_nodebox(x1, x2, z1, z2, y, platform) - local box - local xx = x1 + x2 - local zz = z1 + z2 - if ((xx == 2 and zz == 0) or (xx == 0 and zz == 2)) and y == 0 then - box = {} - else - box = {box_center} - end - if x1 ~= 0 then - table.insert(box, box_x1) - end - if x2 ~= 0 then - table.insert(box, box_x2) - end - if z1 ~= 0 then - table.insert(box, box_z1) - end - if z2 ~= 0 then - table.insert(box, box_z2) - end - if platform ~= 0 then - table.insert(box, box_platform) - end - return box -end - -local function dig_post_with_platform(pos, oldnode, oldmetadata) - oldnode.name = "technic:concrete_post0" - minetest.set_node(pos, oldnode) - technic.update_posts(pos, true) -end - -function technic.posts_should_connect(pos) - local node = minetest.get_node(pos) - if technic.concrete_posts[node.name] then - return "post" - elseif minetest.get_item_group(node.name, "concrete") ~= 0 then - return "block" - end -end - -function technic.get_post_id(links) - return (links[1] * 1) + (links[2] * 2) - + (links[3] * 4) + (links[4] * 8) - + (links[5] * 16) + (links[6] * 32) -end - -function technic.update_posts(pos, set, secondrun) - local node = minetest.get_node(pos) - local link_positions = { - {x=pos.x+1, y=pos.y, z=pos.z}, - {x=pos.x-1, y=pos.y, z=pos.z}, - {x=pos.x, y=pos.y, z=pos.z+1}, - {x=pos.x, y=pos.y, z=pos.z-1}, - {x=pos.x, y=pos.y-1, z=pos.z}, - {x=pos.x, y=pos.y+1, z=pos.z}, - } - - local links = {0, 0, 0, 0, 0, 0} - - for i, link_pos in pairs(link_positions) do - local connecttype = technic.posts_should_connect(link_pos) - if connecttype then - links[i] = 1 - -- Have posts next to us update theirselves, - -- but only once. (We don't want to start an - -- infinite loop of updates) - if not secondrun and connecttype == "post" then - technic.update_posts(link_pos, true, true) - end - end - end - - if links[5] == 1 or links[6] == 1 then - links[5] = 1 - links[6] = 0 - end - - -- We don't want to set ourselves if we have been removed or we are - -- updating a concrete node - if set then - -- Preserve platform - local oldlinks = technic.concrete_posts[node.name] - if oldlinks then - links[6] = oldlinks[6] - end - minetest.set_node(pos, {name="technic:concrete_post" - ..technic.get_post_id(links)}) - end -end - -for x1 = 0, 1 do -for x2 = 0, 1 do -for z1 = 0, 1 do -for z2 = 0, 1 do -for y = 0, 1 do -for platform = 0, 1 do - local links = {x1, x2, z1, z2, y, platform} - local id = technic.get_post_id(links) - technic.concrete_posts["technic:concrete_post"..id] = links - - local groups = {cracky=1, level=2, concrete_post=1} - if id ~= 0 then - groups.not_in_creative_inventory = 1 - end - - local drop = "technic:concrete_post0" - local after_dig_node = function(pos, oldnode, oldmetadata, digger) - technic.update_posts(pos, false) - end - if platform ~= 0 then - drop = "technic:concrete_post_platform" - after_dig_node = function(pos, oldnode, oldmetadata, digger) - dig_post_with_platform(pos, oldnode, oldmetadata) - end - end - - minetest.register_node(":technic:concrete_post"..id, { - description = S("Concrete Post"), - tiles = {"technic_concrete_block.png"}, - groups = groups, - sounds = default.node_sound_stone_defaults(), - drop = drop, - paramtype = "light", - sunlight_propagates = true, - drawtype = "nodebox", - node_box = { - type = "fixed", - fixed = gen_post_nodebox(x1, x2, z1, z2, y, platform), - }, - after_place_node = function(pos, placer, itemstack) - technic.update_posts(pos, true) - end, - after_dig_node = after_dig_node, - }) -end -end -end -end -end -end - diff --git a/technic/concrete/locale/de.txt b/technic/concrete/locale/de.txt deleted file mode 100644 index 83fdc19..0000000 --- a/technic/concrete/locale/de.txt +++ /dev/null @@ -1,10 +0,0 @@ -# German Translation for technic_concrete -# Deutsche Übersetzung von technic_concrete -# by Xanthin - -Rebar = Bewehrungsstab -Concrete Block = Betonblock -Blast-resistant Concrete Block = Explosionsbestaendiger Betonblock -Concrete Post Platform = Betonpfostenplattform -Concrete Post = Betonpfosten - diff --git a/technic/concrete/locale/template.txt b/technic/concrete/locale/template.txt deleted file mode 100644 index 451adaf..0000000 --- a/technic/concrete/locale/template.txt +++ /dev/null @@ -1,8 +0,0 @@ -# technic_concrete translation template - -Rebar = -Concrete Block = -Blast-resistant Concrete Block = -Concrete Post Platform = -Concrete Post = - diff --git a/technic/concrete/locale/tr.txt b/technic/concrete/locale/tr.txt deleted file mode 100644 index 179d29b..0000000 --- a/technic/concrete/locale/tr.txt +++ /dev/null @@ -1,7 +0,0 @@ -# turkish translation by mahmutelmas06 - -Rebar = Beton demiri -Concrete Block = Beton blok -Blast-resistant Concrete Block = Patlamaya dayanıklı beton blok -Concrete Post Platform = Beton direk platformu -Concrete Post = Beton direk diff --git a/technic/concrete/textures/technic_blast_resistant_concrete_block.png b/technic/concrete/textures/technic_blast_resistant_concrete_block.png deleted file mode 100644 index b7d8588..0000000 Binary files a/technic/concrete/textures/technic_blast_resistant_concrete_block.png and /dev/null differ diff --git a/technic/concrete/textures/technic_concrete_block.png b/technic/concrete/textures/technic_concrete_block.png deleted file mode 100644 index cd94594..0000000 Binary files a/technic/concrete/textures/technic_concrete_block.png and /dev/null differ diff --git a/technic/concrete/textures/technic_rebar.png b/technic/concrete/textures/technic_rebar.png deleted file mode 100644 index 16d1fc5..0000000 Binary files a/technic/concrete/textures/technic_rebar.png and /dev/null differ diff --git a/technic/concrete/textures/x32/technic_concrete_block.png b/technic/concrete/textures/x32/technic_concrete_block.png deleted file mode 100644 index 91364f3..0000000 Binary files a/technic/concrete/textures/x32/technic_concrete_block.png and /dev/null differ diff --git a/technic/concrete/textures/x32/technic_rebar.png b/technic/concrete/textures/x32/technic_rebar.png deleted file mode 100644 index 16d1fc5..0000000 Binary files a/technic/concrete/textures/x32/technic_rebar.png and /dev/null differ diff --git a/technic/config.lua b/technic/config.lua new file mode 100644 index 0000000..81a2224 --- /dev/null +++ b/technic/config.lua @@ -0,0 +1,18 @@ +technic.config = technic.config or Settings(minetest.get_worldpath().."/technic.conf") + +local conf_table = technic.config:to_table() + +local defaults = { + enable_mining_drill = "true", + enable_mining_laser = "true", + enable_flashlight = "false", + enable_wind_mill = "false", + enable_frames = "false", + enable_corium_griefing = "true", +} + +for k, v in pairs(defaults) do + if conf_table[k] == nil then + technic.config:set(k, v) + end +end diff --git a/technic/crafts.lua b/technic/crafts.lua new file mode 100644 index 0000000..8a8cd37 --- /dev/null +++ b/technic/crafts.lua @@ -0,0 +1,193 @@ +-- check if we have the necessary dependencies to allow actually using these materials in the crafts +local mesecons_materials = minetest.get_modpath("mesecons_materials") + +-- tubes crafting recipes + +minetest.register_craft({ + output = 'pipeworks:accelerator_tube_1', + recipe = { + {'technic:copper_coil', 'pipeworks:tube_1', 'technic:copper_coil'}, + } +}) + +minetest.register_craft({ + output = 'pipeworks:teleport_tube_1', + recipe = { + {'default:mese_crystal', 'technic:copper_coil', 'default:mese_crystal'}, + {'pipeworks:tube_1', 'technic:control_logic_unit', 'pipeworks:tube_1'}, + {'default:mese_crystal', 'technic:copper_coil', 'default:mese_crystal'}, + } +}) + +minetest.register_craft({ + output = 'technic:diamond_drill_head', + recipe = { + {'technic:stainless_steel_ingot', 'default:diamond', 'technic:stainless_steel_ingot'}, + {'default:diamond', '', 'default:diamond'}, + {'technic:stainless_steel_ingot', 'default:diamond', 'technic:stainless_steel_ingot'}, + } +}) + +minetest.register_craft({ + output = 'technic:green_energy_crystal', + recipe = { + {'default:gold_ingot', 'technic:battery', 'dye:green'}, + {'technic:battery', 'technic:red_energy_crystal', 'technic:battery'}, + {'dye:green', 'technic:battery', 'default:gold_ingot'}, + } +}) + +minetest.register_craft({ + output = 'technic:blue_energy_crystal', + recipe = { + {'moreores:mithril_ingot', 'technic:battery', 'dye:blue'}, + {'technic:battery', 'technic:green_energy_crystal', 'technic:battery'}, + {'dye:blue', 'technic:battery', 'moreores:mithril_ingot'}, + } +}) + +minetest.register_craft({ + output = 'technic:red_energy_crystal', + recipe = { + {'moreores:silver_ingot', 'technic:battery', 'dye:red'}, + {'technic:battery', 'default:diamondblock', 'technic:battery'}, + {'dye:red', 'technic:battery', 'moreores:silver_ingot'}, + } +}) + +minetest.register_craft({ + output = 'technic:fine_copper_wire 2', + recipe = { + {'', 'default:copper_ingot', ''}, + {'', 'default:copper_ingot', ''}, + {'', 'default:copper_ingot', ''}, + } +}) + +minetest.register_craft({ + output = 'technic:fine_gold_wire 2', + recipe = { + {'', 'default:gold_ingot', ''}, + {'', 'default:gold_ingot', ''}, + {'', 'default:gold_ingot', ''}, + } +}) + +minetest.register_craft({ + output = 'technic:fine_silver_wire 2', + recipe = { + {'', 'moreores:silver_ingot', ''}, + {'', 'moreores:silver_ingot', ''}, + {'', 'moreores:silver_ingot', ''}, + } +}) + +minetest.register_craft({ + output = 'technic:copper_coil 1', + recipe = { + {'technic:fine_copper_wire', 'technic:wrought_iron_ingot', 'technic:fine_copper_wire'}, + {'technic:wrought_iron_ingot', '', 'technic:wrought_iron_ingot'}, + {'technic:fine_copper_wire', 'technic:wrought_iron_ingot', 'technic:fine_copper_wire'}, + } +}) + +minetest.register_craft({ + output = 'technic:motor', + recipe = { + {'technic:carbon_steel_ingot', 'technic:copper_coil', 'technic:carbon_steel_ingot'}, + {'technic:carbon_steel_ingot', 'technic:copper_coil', 'technic:carbon_steel_ingot'}, + {'technic:carbon_steel_ingot', 'default:copper_ingot', 'technic:carbon_steel_ingot'}, + } +}) + +local isolation = mesecons_materials and "mesecons_materials:fiber" or "technic:rubber" + +minetest.register_craft({ + output = 'technic:lv_transformer', + recipe = { + {isolation, 'technic:wrought_iron_ingot', isolation}, + {'technic:copper_coil', 'technic:wrought_iron_ingot', 'technic:copper_coil'}, + {'technic:wrought_iron_ingot', 'technic:wrought_iron_ingot', 'technic:wrought_iron_ingot'}, + } +}) + +minetest.register_craft({ + output = 'technic:mv_transformer', + recipe = { + {isolation, 'technic:carbon_steel_ingot', isolation}, + {'technic:copper_coil', 'technic:carbon_steel_ingot', 'technic:copper_coil'}, + {'technic:carbon_steel_ingot', 'technic:carbon_steel_ingot', 'technic:carbon_steel_ingot'}, + } +}) + +minetest.register_craft({ + output = 'technic:hv_transformer', + recipe = { + {isolation, 'technic:stainless_steel_ingot', isolation}, + {'technic:copper_coil', 'technic:stainless_steel_ingot', 'technic:copper_coil'}, + {'technic:stainless_steel_ingot', 'technic:stainless_steel_ingot', 'technic:stainless_steel_ingot'}, + } +}) + +minetest.register_craft({ + output = 'technic:control_logic_unit', + recipe = { + {'', 'technic:fine_gold_wire', ''}, + {'default:copper_ingot', 'technic:silicon_wafer', 'default:copper_ingot'}, + {'', 'technic:chromium_ingot', ''}, + } +}) + +minetest.register_craft({ + output = 'technic:mixed_metal_ingot 9', + recipe = { + {'technic:stainless_steel_ingot', 'technic:stainless_steel_ingot', 'technic:stainless_steel_ingot'}, + {'default:bronze_ingot', 'default:bronze_ingot', 'default:bronze_ingot'}, + {'moreores:tin_ingot', 'moreores:tin_ingot', 'moreores:tin_ingot'}, + } +}) + +minetest.register_craft({ + output = 'technic:carbon_cloth', + recipe = { + {'technic:graphite', 'technic:graphite', 'technic:graphite'} + } +}) + +minetest.register_craft({ + output = "technic:machine_casing", + recipe = { + { "technic:cast_iron_ingot", "technic:cast_iron_ingot", "technic:cast_iron_ingot" }, + { "technic:cast_iron_ingot", "technic:brass_ingot", "technic:cast_iron_ingot" }, + { "technic:cast_iron_ingot", "technic:cast_iron_ingot", "technic:cast_iron_ingot" }, + }, +}) + +-- Remove some recipes +-- Bronze +minetest.register_craft({ + type = "shapeless", + output = "default:bronze_ingot 0", + recipe = {"default:copper_ingot", "default:steel_ingot"} +}) + +-- Accelerator tube +minetest.register_craft({ + output = "pipeworks:accelerator_tube_1 0", + recipe = { + { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" }, + { "default:mese_crystal_fragment", "default:steel_ingot", "default:mese_crystal_fragment" }, + { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" } + }, +}) + +-- Teleport tube +minetest.register_craft({ + output = "pipeworks:teleport_tube_1 0", + recipe = { + { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" }, + { "default:desert_stone", "default:mese", "default:desert_stone" }, + { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" } + }, +}) + diff --git a/technic/depends.txt b/technic/depends.txt new file mode 100644 index 0000000..746fe34 --- /dev/null +++ b/technic/depends.txt @@ -0,0 +1,8 @@ +default +pipeworks +technic_worldgen +bucket? +mesecons_mvps? +intllib? +unified_inventory? +vector_extras? diff --git a/technic/extranodes/depends.txt b/technic/extranodes/depends.txt deleted file mode 100644 index 6335bfd..0000000 --- a/technic/extranodes/depends.txt +++ /dev/null @@ -1,5 +0,0 @@ -default -technic_worldgen -concrete -intllib? -moreblocks? diff --git a/technic/extranodes/init.lua b/technic/extranodes/init.lua deleted file mode 100644 index 22a1d9f..0000000 --- a/technic/extranodes/init.lua +++ /dev/null @@ -1,103 +0,0 @@ --- Minetest 0.4.6 mod: extranodes --- namespace: technic --- Boilerplate to support localized strings if intllib mod is installed. -local S = rawget(_G, "intllib") and intllib.Getter() or function(s) return s end - -if minetest.get_modpath("moreblocks") then - - -- register stairsplus/circular_saw nodes - -- we skip blast resistant concrete and uranium intentionally - -- chrome seems to be too hard of a metal to be actually sawable - - stairsplus:register_all("technic", "marble", "technic:marble", { - description=S("Marble"), - groups={cracky=3, not_in_creative_inventory=1}, - tiles={"technic_marble.png"}, - }) - - stairsplus:register_all("technic", "marble_bricks", "technic:marble_bricks", { - description=S("Marble Bricks"), - groups={cracky=3, not_in_creative_inventory=1}, - tiles={"technic_marble_bricks.png"}, - }) - - stairsplus:register_all("technic", "granite", "technic:granite", { - description=S("Granite"), - groups={cracky=1, not_in_creative_inventory=1}, - tiles={"technic_granite.png"}, - }) - - stairsplus:register_all("technic", "concrete", "technic:concrete", { - description=S("Concrete"), - groups={cracky=3, not_in_creative_inventory=1}, - tiles={"technic_concrete_block.png"}, - }) - - stairsplus:register_all("technic", "zinc_block", "technic:zinc_block", { - description=S("Zinc Block"), - groups={cracky=1, not_in_creative_inventory=1}, - tiles={"technic_zinc_block.png"}, - }) - - stairsplus:register_all("technic", "cast_iron_block", "technic:cast_iron_block", { - description=S("Cast Iron Block"), - groups={cracky=1, not_in_creative_inventory=1}, - tiles={"technic_cast_iron_block.png"}, - }) - - stairsplus:register_all("technic", "carbon_steel_block", "technic:carbon_steel_block", { - description=S("Carbon Steel Block"), - groups={cracky=1, not_in_creative_inventory=1}, - tiles={"technic_carbon_steel_block.png"}, - }) - - stairsplus:register_all("technic", "stainless_steel_block", "technic:stainless_steel_block", { - description=S("Stainless Steel Block"), - groups={cracky=1, not_in_creative_inventory=1}, - tiles={"technic_stainless_steel_block.png"}, - }) - - stairsplus:register_all("technic", "brass_block", "technic:brass_block", { - description=S("Brass Block"), - groups={cracky=1, not_in_creative_inventory=1}, - tiles={"technic_brass_block.png"}, - }) - - function register_technic_stairs_alias(modname, origname, newmod, newname) - minetest.register_alias(modname .. ":slab_" .. origname, newmod..":slab_" .. newname) - minetest.register_alias(modname .. ":slab_" .. origname .. "_inverted", newmod..":slab_" .. newname .. "_inverted") - minetest.register_alias(modname .. ":slab_" .. origname .. "_wall", newmod..":slab_" .. newname .. "_wall") - minetest.register_alias(modname .. ":slab_" .. origname .. "_quarter", newmod..":slab_" .. newname .. "_quarter") - minetest.register_alias(modname .. ":slab_" .. origname .. "_quarter_inverted", newmod..":slab_" .. newname .. "_quarter_inverted") - minetest.register_alias(modname .. ":slab_" .. origname .. "_quarter_wall", newmod..":slab_" .. newname .. "_quarter_wall") - minetest.register_alias(modname .. ":slab_" .. origname .. "_three_quarter", newmod..":slab_" .. newname .. "_three_quarter") - minetest.register_alias(modname .. ":slab_" .. origname .. "_three_quarter_inverted", newmod..":slab_" .. newname .. "_three_quarter_inverted") - minetest.register_alias(modname .. ":slab_" .. origname .. "_three_quarter_wall", newmod..":slab_" .. newname .. "_three_quarter_wall") - minetest.register_alias(modname .. ":stair_" .. origname, newmod..":stair_" .. newname) - minetest.register_alias(modname .. ":stair_" .. origname .. "_inverted", newmod..":stair_" .. newname .. "_inverted") - minetest.register_alias(modname .. ":stair_" .. origname .. "_wall", newmod..":stair_" .. newname .. "_wall") - minetest.register_alias(modname .. ":stair_" .. origname .. "_wall_half", newmod..":stair_" .. newname .. "_wall_half") - minetest.register_alias(modname .. ":stair_" .. origname .. "_wall_half_inverted", newmod..":stair_" .. newname .. "_wall_half_inverted") - minetest.register_alias(modname .. ":stair_" .. origname .. "_half", newmod..":stair_" .. newname .. "_half") - minetest.register_alias(modname .. ":stair_" .. origname .. "_half_inverted", newmod..":stair_" .. newname .. "_half_inverted") - minetest.register_alias(modname .. ":stair_" .. origname .. "_right_half", newmod..":stair_" .. newname .. "_right_half") - minetest.register_alias(modname .. ":stair_" .. origname .. "_right_half_inverted", newmod..":stair_" .. newname .. "_right_half_inverted") - minetest.register_alias(modname .. ":stair_" .. origname .. "_wall_half", newmod..":stair_" .. newname .. "_wall_half") - minetest.register_alias(modname .. ":stair_" .. origname .. "_wall_half_inverted", newmod..":stair_" .. newname .. "_wall_half_inverted") - minetest.register_alias(modname .. ":stair_" .. origname .. "_inner", newmod..":stair_" .. newname .. "_inner") - minetest.register_alias(modname .. ":stair_" .. origname .. "_inner_inverted", newmod..":stair_" .. newname .. "_inner_inverted") - minetest.register_alias(modname .. ":stair_" .. origname .. "_outer", newmod..":stair_" .. newname .. "_outer") - minetest.register_alias(modname .. ":stair_" .. origname .. "_outer_inverted", newmod..":stair_" .. newname .. "_outer_inverted") - minetest.register_alias(modname .. ":panel_" .. origname .. "_bottom", newmod..":panel_" .. newname .. "_bottom") - minetest.register_alias(modname .. ":panel_" .. origname .. "_top", newmod..":panel_" .. newname .. "_top") - minetest.register_alias(modname .. ":panel_" .. origname .. "_vertical", newmod..":panel_" .. newname .. "_vertical") - minetest.register_alias(modname .. ":micro_" .. origname .. "_bottom", newmod..":micro_" .. newname .. "_bottom") - minetest.register_alias(modname .. ":micro_" .. origname .. "_top", newmod..":micro_" .. newname .. "_top") - end - - register_technic_stairs_alias("stairsplus", "concrete", "technic", "concrete") - register_technic_stairs_alias("stairsplus", "marble", "technic", "marble") - register_technic_stairs_alias("stairsplus", "granite", "technic", "granite") - register_technic_stairs_alias("stairsplus", "marble_bricks", "technic", "marble_bricks") - -end diff --git a/technic/extranodes/locale/de.txt b/technic/extranodes/locale/de.txt deleted file mode 100644 index f3c017e..0000000 --- a/technic/extranodes/locale/de.txt +++ /dev/null @@ -1,9 +0,0 @@ -# German Translation for technic_extranodes -# Deutsche Übersetzung von technic_extranodes -# by Xanthin - -Marble = Marmor -Marble Bricks = Marmorziegel -Granite = Granit -Concrete = Beton - diff --git a/technic/extranodes/locale/template.txt b/technic/extranodes/locale/template.txt deleted file mode 100644 index 2ffe498..0000000 --- a/technic/extranodes/locale/template.txt +++ /dev/null @@ -1,7 +0,0 @@ -# technic_extranodes translation template - -Marble = -Marble Bricks = -Granite = -Concrete = - diff --git a/technic/extranodes/locale/tr.txt b/technic/extranodes/locale/tr.txt deleted file mode 100644 index 90d8154..0000000 --- a/technic/extranodes/locale/tr.txt +++ /dev/null @@ -1,6 +0,0 @@ -# turkish translation by mahmutelmas06 - -Marble = Mermer -Marble Bricks = Mermer tuğla -Granite = Granit -Concrete = Beton diff --git a/technic/helpers.lua b/technic/helpers.lua new file mode 100644 index 0000000..e8efcf3 --- /dev/null +++ b/technic/helpers.lua @@ -0,0 +1,67 @@ +--load config +local sepchar = nil +do + local sepcode = technic.config:get("thousand_separator") + --default is SI style + sepchar = sepcode and string.char(sepcode) or " " + baresepchar = sepchar + --handling if sepchar is magic... + for magic in string.gmatch("().%+-*?[^$", ".") do + if sepchar == magic then sepchar = "%"..sepchar end + end +end + +-- Only changes name, keeps other params +function technic.swap_node(pos, name) + local node = minetest.get_node(pos) + if node.name ~= name then + node.name = name + minetest.swap_node(pos, node) + end + return node.name +end + +-- Fully charge RE chargeable item. +-- Must be defined early to reference in item definitions. +function technic.refill_RE_charge(stack) + local max_charge = technic.power_tools[stack:get_name()] + if not max_charge then return stack end + technic.set_RE_wear(stack, max_charge, max_charge) + local meta = minetest.deserialize(stack:get_metadata()) or {} + meta.charge = max_charge + stack:set_metadata(minetest.serialize(meta)) + return stack +end + +local function resolve_name(function_name) + local a = _G + for key in string.gmatch(function_name, "([^%.]+)(%.?)") do + if a[key] then + a = a[key] + else + return nil + end + end + return a +end + +function technic.function_exists(function_name) + return type(resolve_name(function_name)) == 'function' +end + +-- if the node is loaded, returns it. If it isn't loaded, load it and return nil. +function technic.get_or_load_node(pos) + local node_or_nil = minetest.get_node_or_nil(pos) + if node_or_nil then return node_or_nil end + local vm = VoxelManip() + local MinEdge, MaxEdge = vm:read_from_map(pos, pos) + return nil +end + +function technic.prettynum(num) + local str, k = tostring(num), nil + repeat + str, k = str:gsub("^(-?%d+)(%d%d%d)", "%1"..sepchar.."%2") + until k == 0 + return str +end \ No newline at end of file diff --git a/technic/init.lua b/technic/init.lua new file mode 100644 index 0000000..25361af --- /dev/null +++ b/technic/init.lua @@ -0,0 +1,54 @@ +-- Minetest 0.4.7 mod: technic +-- namespace: technic +-- (c) 2012-2013 by RealBadAngel + +technic = rawget(_G, "technic") or {} +technic.creative_mode = minetest.setting_getbool("creative_mode") + +technic.tube_inject_item = pipeworks.tube_inject_item or function (pos, start_pos, velocity, item) + local tubed = pipeworks.tube_item(vector.new(pos), item) + tubed:get_luaentity().start_pos = vector.new(start_pos) + tubed:setvelocity(velocity) + tubed:setacceleration(vector.new(0, 0, 0)) +end + +local load_start = os.clock() +local modpath = minetest.get_modpath("technic") +technic.modpath = modpath + +-- Boilerplate to support intllib +if minetest.get_modpath("intllib") then + technic.getter = intllib.Getter() +else + technic.getter = function(s,a,...)if a==nil then return s end a={a,...}return s:gsub("(@?)@(%(?)(%d+)(%)?)",function(e,o,n,c)if e==""then return a[tonumber(n)]..(o==""and c or"")else return"@"..o..n..c end end) end +end +local S = technic.getter + +-- Read configuration file +dofile(modpath.."/config.lua") + +-- Helper functions +dofile(modpath.."/helpers.lua") + +-- Items +dofile(modpath.."/items.lua") + +-- Craft recipes for items +dofile(modpath.."/crafts.lua") + +-- Register functions +dofile(modpath.."/register.lua") + +-- Machines +dofile(modpath.."/machines/init.lua") + +-- Tools +dofile(modpath.."/tools/init.lua") + +-- Aliases for legacy node/item names +dofile(modpath.."/legacy.lua") + +if minetest.setting_getbool("log_mods") then + print(S("[Technic] Loaded in %f seconds"):format(os.clock() - load_start)) +end + diff --git a/technic/items.lua b/technic/items.lua new file mode 100644 index 0000000..27e05e4 --- /dev/null +++ b/technic/items.lua @@ -0,0 +1,221 @@ + +local S = technic.getter + +minetest.register_craftitem("technic:silicon_wafer", { + description = S("Silicon Wafer"), + inventory_image = "technic_silicon_wafer.png", +}) + +minetest.register_craftitem( "technic:doped_silicon_wafer", { + description = S("Doped Silicon Wafer"), + inventory_image = "technic_doped_silicon_wafer.png", +}) + +minetest.register_craftitem("technic:uranium_fuel", { + description = S("Uranium Fuel"), + inventory_image = "technic_uranium_fuel.png", +}) + +minetest.register_craftitem( "technic:diamond_drill_head", { + description = S("Diamond Drill Head"), + inventory_image = "technic_diamond_drill_head.png", +}) + +minetest.register_tool("technic:blue_energy_crystal", { + description = S("Blue Energy Crystal"), + inventory_image = minetest.inventorycube( + "technic_diamond_block_blue.png", + "technic_diamond_block_blue.png", + "technic_diamond_block_blue.png"), + wear_represents = "technic_RE_charge", + on_refill = technic.refill_RE_charge, + tool_capabilities = { + max_drop_level = 0, + groupcaps = { + fleshy = {times={}, uses=10000, maxlevel=0} + } + } +}) + +minetest.register_tool("technic:green_energy_crystal", { + description = S("Green Energy Crystal"), + inventory_image = minetest.inventorycube( + "technic_diamond_block_green.png", + "technic_diamond_block_green.png", + "technic_diamond_block_green.png"), + wear_represents = "technic_RE_charge", + on_refill = technic.refill_RE_charge, + tool_capabilities = { + max_drop_level = 0, + groupcaps = { + fleshy = {times={}, uses=10000, maxlevel=0} + } + } +}) + +minetest.register_tool("technic:red_energy_crystal", { + description = S("Red Energy Crystal"), + inventory_image = minetest.inventorycube( + "technic_diamond_block_red.png", + "technic_diamond_block_red.png", + "technic_diamond_block_red.png"), + wear_represents = "technic_RE_charge", + on_refill = technic.refill_RE_charge, + tool_capabilities = { + max_drop_level = 0, + groupcaps = { + fleshy = {times={}, uses=10000, maxlevel=0} + } + } +}) + + +minetest.register_craftitem("technic:fine_copper_wire", { + description = S("Fine Copper Wire"), + inventory_image = "technic_fine_copper_wire.png", +}) + +minetest.register_craftitem("technic:fine_gold_wire", { + description = S("Fine Gold Wire"), + inventory_image = "technic_fine_gold_wire.png", +}) + +minetest.register_craftitem("technic:fine_silver_wire", { + description = S("Fine Silver Wire"), + inventory_image = "technic_fine_silver_wire.png", +}) + +minetest.register_craftitem("technic:copper_coil", { + description = S("Copper Coil"), + inventory_image = "technic_copper_coil.png", +}) + +minetest.register_craftitem("technic:motor", { + description = S("Electric Motor"), + inventory_image = "technic_motor.png", +}) + +minetest.register_craftitem("technic:lv_transformer", { + description = S("Low Voltage Transformer"), + inventory_image = "technic_lv_transformer.png", +}) + +minetest.register_craftitem("technic:mv_transformer", { + description = S("Medium Voltage Transformer"), + inventory_image = "technic_mv_transformer.png", +}) + +minetest.register_craftitem( "technic:hv_transformer", { + description = S("High Voltage Transformer"), + inventory_image = "technic_hv_transformer.png", +}) + +minetest.register_craftitem( "technic:control_logic_unit", { + description = S("Control Logic Unit"), + inventory_image = "technic_control_logic_unit.png", +}) + +minetest.register_craftitem("technic:mixed_metal_ingot", { + description = S("Mixed Metal Ingot"), + inventory_image = "technic_mixed_metal_ingot.png", +}) + +minetest.register_craftitem("technic:composite_plate", { + description = S("Composite Plate"), + inventory_image = "technic_composite_plate.png", +}) + +minetest.register_craftitem("technic:copper_plate", { + description = S("Copper Plate"), + inventory_image = "technic_copper_plate.png", +}) + +minetest.register_craftitem("technic:carbon_plate", { + description = S("Carbon Plate"), + inventory_image = "technic_carbon_plate.png", +}) + +minetest.register_craftitem("technic:graphite", { + description = S("Graphite"), + inventory_image = "technic_graphite.png", +}) + +minetest.register_craftitem("technic:carbon_cloth", { + description = S("Carbon Cloth"), + inventory_image = "technic_carbon_cloth.png", +}) + +minetest.register_node("technic:machine_casing", { + description = S("Machine Casing"), + groups = {cracky=2}, + sunlight_propagates = true, + paramtype = "light", + drawtype = "allfaces", + tiles = {"technic_machine_casing.png"}, + sounds = default.node_sound_stone_defaults(), +}) + +for p = 0, 35 do + local nici = (p ~= 0 and p ~= 7 and p ~= 35) and 1 or nil + local psuffix = p == 7 and "" or p + local ingot = "technic:uranium"..psuffix.."_ingot" + local block = "technic:uranium"..psuffix.."_block" + local ov = p == 7 and minetest.override_item or nil; + (ov or minetest.register_craftitem)(ingot, { + description = string.format(S("%.1f%%-Fissile Uranium Ingot"), p/10), + inventory_image = "technic_uranium_ingot.png", + groups = {uranium_ingot=1, not_in_creative_inventory=nici}, + }); + -- Note on radioactivity of blocks: + -- Source: + -- The baseline radioactivity of an isotope is not especially + -- correlated with whether it's fissile (i.e., suitable as + -- reactor fuel). Natural uranium consists mainly of fissile + -- U-235 and non-fissile U-238, and both U-235 and U-238 are + -- significantly radioactive. U-235's massic activity is + -- about 80.0 MBq/kg, and U-238's is about 12.4 MBq/kg, which + -- superficially suggests that 3.5%-fissile uranium should have + -- only 1.19 times the activity of fully-depleted uranium. + -- But a third isotope affects the result hugely: U-234 has + -- massic activity of 231 GBq/kg. Natural uranium has massic + -- composition of 99.2837% U-238, 0.711% U-235, and 0.0053% U-234, + -- so its activity comes roughly 49% each from U-234 and U-238 + -- and only 2% from U-235. During enrichment via centrifuge, + -- the U-234 fraction is concentrated along with the U-235, with + -- the U-234:U-235 ratio remaining close to its original value. + -- (Actually the U-234 gets separated from U-238 slightly more + -- than the U-235 is, so the U-234:U-235 ratio is slightly + -- higher in enriched uranium.) A typical massic composition + -- for 3.5%-fissile uranium is 96.47116% U-238, 3.5% U-235, and + -- 0.02884% U-234. This gives 3.5%-fissile uranium about 6.55 + -- times the activity of fully-depleted uranium. The values we + -- compute here for the "radioactive" group value are based on + -- linear interpolation of activity along that scale, rooted at + -- a natural (0.7%-fissile) uranium block having the activity of + -- 9 uranium ore blocks (due to 9 ingots per block). The group + -- value is proportional to the square root of the activity, and + -- uranium ore has radioactive=1000. This yields radioactive=2065 + -- for a fully-depleted uranium block and radioactive=5286 for + -- a 3.5%-fissile uranium block. + (ov or minetest.register_node)(block, { + description = string.format(S("%.1f%%-Fissile Uranium Block"), p/10), + tiles = {"technic_uranium_block.png"}, + is_ground_content = true, + groups = {uranium_block=1, not_in_creative_inventory=nici, cracky=1, level=2, radioactive=math.floor(1000*math.sqrt((1+5.55*p/35) * 9 / (1+5.55*7/35)) + 0.5)}, + sounds = default.node_sound_stone_defaults(), + }); + if not ov then + minetest.register_craft({ + output = block, + recipe = { + {ingot, ingot, ingot}, + {ingot, ingot, ingot}, + {ingot, ingot, ingot}, + }, + }) + minetest.register_craft({ + output = ingot.." 9", + recipe = {{block}}, + }) + end +end diff --git a/technic/legacy.lua b/technic/legacy.lua new file mode 100644 index 0000000..8360a71 --- /dev/null +++ b/technic/legacy.lua @@ -0,0 +1,38 @@ + +-- Aliases to convert from legacy node/item names + +technic.legacy_nodenames = { + ["technic:alloy_furnace"] = "technic:lv_alloy_furnace", + ["technic:alloy_furnace_active"] = "technic:lv_alloy_furnace_active", + ["technic:battery_box"] = "technic:lv_battery_box0", + ["technic:battery_box1"] = "technic:lv_battery_box1", + ["technic:battery_box2"] = "technic:lv_battery_box2", + ["technic:battery_box3"] = "technic:lv_battery_box3", + ["technic:battery_box4"] = "technic:lv_battery_box4", + ["technic:battery_box5"] = "technic:lv_battery_box5", + ["technic:battery_box6"] = "technic:lv_battery_box6", + ["technic:battery_box7"] = "technic:lv_battery_box7", + ["technic:battery_box8"] = "technic:lv_battery_box8", + ["technic:electric_furnace"] = "technic:lv_electric_furnace", + ["technic:electric_furnace_active"] = "technic:lv_electric_furnace_active", + ["technic:grinder"] = "technic:lv_grinder", + ["technic:grinder_active"] = "technic:lv_grinder_active", + ["technic:extractor"] = "technic:lv_extractor", + ["technic:extractor_active"] = "technic:lv_extractor_active", + ["technic:compressor"] = "technic:lv_compressor", + ["technic:compressor_active"] = "technic:lv_compressor_active", + ["technic:hv_battery_box"] = "technic:hv_battery_box0", + ["technic:hv_cable"] = "technic:hv_cable0", + ["technic:lv_cable"] = "technic:lv_cable0", + ["technic:mv_cable"] = "technic:mv_cable0", + ["technic:mv_battery_box"] = "technic:mv_battery_box0", + ["technic:generator"] = "technic:lv_generator", + ["technic:generator_active"] = "technic:lv_generator_active", + ["technic:iron_dust"] = "technic:wrought_iron_dust", + ["technic:enriched_uranium"] = "technic:uranium35_ingot", +} + +for old, new in pairs(technic.legacy_nodenames) do + minetest.register_alias(old, new) +end + diff --git a/technic/locale/de.txt b/technic/locale/de.txt new file mode 100644 index 0000000..855ec5a --- /dev/null +++ b/technic/locale/de.txt @@ -0,0 +1,204 @@ +# German Translation for Technic Mod +# Deutsche Uebersetzung des Technic Mods +# by Xanthin + +## Misc +[Technic] Loaded in %f seconds = [Technic] ist in %f Sekunden geladen + +## Items +Silicon Wafer = Siliziumscheibe +Doped Silicon Wafer = Dotierte Siliziumscheibe +Enriched Uranium = Angereichertes Uran +Uranium Fuel = Uranbrennstoff +Diamond Drill Head = Diamantbohrkopf +Blue Energy Crystal = Blauer Energiekristall +Green Energy Crystal = Gruener Energiekristall +Red Energy Crystal = Roter Energiekristall +Fine Copper Wire = Feinkupferdraht +Copper Coil = Kupferspule +Electric Motor = Elektromotor +Low Voltage Transformer = Niederspannungstransformator +Medium Voltage Transformer = Mittelspannungstransformator +High Voltage Transformer = Hochspannungstransformator +Control Logic Unit = Steuer- und Regelungseinheit +Mixed Metal Ingot = Mischmetallbarren +Composite Plate = Verbundplatte +Copper Plate = Kupferplatte +Carbon Plate = Kohlefaserplatte +Graphite = Graphit +Carbon Cloth = Kohlefasergewebe +Raw Latex = Rohlatex +Rubber Fiber = Gummifaser +%.1f%%-Fissile Uranium Ingot = +%.1f%%-Fissile Uranium Block = + +## Machine misc +Machine cannot be removed because it is not empty = Die Maschine kann nicht entfernt werden, weil sie noch nicht leer ist. +Inventory move disallowed due to protection = Das Inventar ist geschuetzt, Zugriff verweigert. +# $1: Machine name (Includes tier) +@1 Active (@2 EU) = @1 ist eingeschaltet (@2 EU) +%s Active = %s ist eingeschaltet +%s Disabled = %s ist ausgeschaltet +%s Enabled = +%s Idle = %s ist bereit +%s Improperly Placed = %s ist falsch plaziert +%s Unpowered = %s hat keine Stromversorgung +%s Out Of Fuel = %s hat keinen Brennstoff +%s Has Bad Cabling = %s ist falsch verkabelt +%s Has No Network = %s hat kein Netzwerk +%s Finished = %s ist fertig +Enable/Disable = Einschalten/Ausschalten +Range = Reichweite +Upgrade Slots = Verbesserungsfaecher +In: = Rein: +Out: = Raus: +Slot %d = Fach %d +Itemwise = Einzelstuecke +Stackwise = Ganzer Stapel +Owner: = +Unlocked = +Locked = +Radius: = +Enabled = +Disabled = + +## Machine names +# $1: Tier +%s Alloy Furnace = %s Legierungsofen +%s Battery Box = %s Batteriebox +%s Cable = %s Kabel +%s CNC Machine = %s CNC-Maschine +%s Compressor = %s Kompressor +%s Extractor = %s Extraktor +%s Forcefield Emitter = %s Kraftfeld-Emitter +%s Furnace = %s Ofen +%s Grinder = %s Schleifmaschine +%s Music Player = %s Musikspieler +%s Quarry = %s Steinbruch +%s Tool Workshop = %s Werkzeugwerkstatt +Arrayed Solar %s Generator = %s Solaranlage +Fuel-Fired %s Generator = %s Kohle-Generator +Geothermal %s Generator = %s Geothermie-Generator +Hydro %s Generator = %s Wassermuehle +Nuclear %s Generator Core = %s Reaktorkern +Small Solar %s Generator = %s Solarmodul +Wind %s Generator = %s Windmuehle +Self-Contained Injector = Selbstversorger-Injektor +Constructor Mk%d = Konstruktor Modell %d +Frame = Rahmen +Frame Motor = Rahmenmotor +Template = Schablone +Template (replacing) = Schablone (ersetzend) +Template motor = Schablonenmotor +Template tool = Schablonenwerkzeug +Battery Box = Batteriebox +Supply Converter = Stromumwandler +Switching Station = Schaltanlage +Fuel-Fired Alloy Furnace = Kohle-Legierungsofen +Fuel-Fired Furnace = Kohle-Ofen +Wind Mill Frame = Windmuehlengeruest +Forcefield = Kraftfeld +Nuclear Reactor Rod Compartment = Brennstabfaecher +Administrative World Anchor = + +## Machine-specific +# $1: Pruduced EU +Charge = Aufladen +Discharge = Entladen +Power level = Energiestufe +# $1: Tier $2: current_charge $3: max_charge +@1 Battery Box: @2/@3 = @1 Batteriebox: @2/@3 +# $1: Machine name $2: Supply $3: Demand +@1. Supply: @2 Demand: @3 = @1. Versorgung: @2 Bedarf: @3 +Production at %d%% = Produktion bei %d%% +Choose Milling Program: = Waehle ein Fraesprogramm: +Slim Elements half / normal height: = Schmale Elemente von halber / normaler Hoehe: +Current track %s = Aktueller Titel %s +Stopped = +Keeping %d/%d map blocks loaded = +Digging not started = +Digging finished = +Digging %d m above machine = +Digging %d m below machine = + +## CNC +Cylinder = Zylinder +Element Cross = Halbes Kreuzelement +Element Cross Double = Kreuzelement +Element Edge = Halbes Eckelement +Element Edge Double = Eckelement +Element End = Halbes Endelement +Element End Double = Endelement +Element Straight = Halbes aufrechtes Element +Element Straight Double = Aufrechtes Element +Element T = Halbes T-Element +Element T Double = T-Element +Horizontal Cylinder = Liegender Zylinder +One Curved Edge Block = Block mit einer abgerundeten Kante +Pyramid = Pyramide +Slope = Schraege +Slope Edge = Schraege mit Ecke +Slope Inner Edge = Schraege mit Innenecke +Slope Lying = Liegende Schraege +Slope Upside Down = Umgedrehte Schraege +Slope Upside Down Edge = Umgedrehte Schraege mit Ecke +Slope Upside Down Inner Edge = Umgedrehte Schraege mit Innenecke +Sphere = Kugel +Spike = Spitze +Stick = Stange +Two Curved Edge Block = Block mit zwei abgerundeten Kanten +Brick = Ziegel: +Cobble = Pflasterstein: +Dirt = Erde: +Leaves = Laub: +Sandstone = Sandstein: +Stone = Stein: +Tree = Baumstamm: +Wooden = Holz: + +## Grinder Recipes +# $1: Name +%s Dust = %sstaub +Akalin = Akalin +Alatro = Alatro +Arol = Arol +Brass = Messing +Bronze = Bronze +Carbon Steel = Kohlenstoffstahl +Cast Iron = Gusseisen +Chromium = Chrom +Coal = Kohle +Copper = Kupfer +Gold = Gold +Mithril = Mithril +Silver = Silber +Stainless Steel = Edelstahl +Talinite = Talinite +Tin = Zinn +Wrought Iron = Schmiedeeisen +Zinc = Zink +%.1f%%-Fissile Uranium = + +## Tools +RE Battery = Akkubatterie +Water Can = Wasserkanister +Lava Can = Lavakanister +Chainsaw = Kettensaege +Flashlight = Taschenlampe +3 nodes deep. = 3 Bloecke tief. +3 nodes tall. = 3 Bloecke hoch. +3 nodes wide. = 3 Bloecke breit. +3x3 nodes. = 3x3 Bloecke. +Use while sneaking to change Mining Drill Mk%d modes. = Halte die Shift-Taste beim Benutzen gedrueckt, um die Funktion des Bergbaubohrers Modell %d zu aendern. +Mining Drill Mk%d Mode %d = Bergbaubohrer Modell %d Funktion %d +Mining Drill Mk%d = Bergbaubohrer Modell %d +Mining Laser Mk%d = Bergbaulaser Modell %d +Single node. = Einzelblock +Sonic Screwdriver = Schallschraubendreher +Tree Tap = Baumzapfhahn + +## Craft descriptions +Alloy cooking = +Grinding = +Compressing = +Extracting = diff --git a/technic/locale/es.txt b/technic/locale/es.txt new file mode 100644 index 0000000..7945d65 --- /dev/null +++ b/technic/locale/es.txt @@ -0,0 +1,197 @@ +# Spanish Translation for Technic Mod +# Traduccion al Español del Mod Technic +# Autor: Diego Martínez + +## Misc +[Technic] Loaded in %f seconds = [Technic] Cargado en %f segundos + +## Items +Silicon Wafer = Oblea de Silicio +Doped Silicon Wafer = Oblea de Silicio Dopada +Enriched Uranium = Uranio Enriquecido +Uranium Fuel = Combustible de Uranio +Diamond Drill Head = Mecha de Taladro de Diamante +Blue Energy Crystal = Cristal de Energia Azul +Green Energy Crystal = Cristal de Energia Verde +Red Energy Crystal = Cristal de Energia Rojo +Fine Copper Wire = Cable Fino de Cobre +Copper Coil = Resorte de Cobre +Electric Motor = Motor Electrico +Low Voltage Transformer = Transformador de Bajo Voltaje +Medium Voltage Transformer = Transformador de Voltaje Medio +High Voltage Transformer = Transformador de Alto Voltaje +Control Logic Unit = Unidad Logica de Control +Mixed Metal Ingot = Lingote de Metal Mezclado +Composite Plate = Placa de Compuestos +Copper Plate = Placa de Cobre +Carbon Plate = Placa de Carbon +Graphite = Grafito +Carbon Cloth = Tela de Carbon +Raw Latex = Latex Crudo +Rubber Fiber = Fibra de Hule +%.1f%%-Fissile Uranium Ingot = +%.1f%%-Fissile Uranium Block = + +## Machine misc +Machine cannot be removed because it is not empty = La maquina no puede removerse porque no esta vacia +Inventory move disallowed due to protection = +# $1: Machine name (Includes tier) +@1 Active (@2 EU) = @1 Activo (@2 EU) +%s Active = %s Activo +%s Enabled = +%s Idle = %s Quieto +%s Unpowered = %s Sin Energia +%s Out Of Fuel = %s Sin Combustible +%s Has Bad Cabling = %s Tiene Mal Cableado +%s Has No Network = %s No Tiene Una Red +%s Finished = %s Terminado +%s Disabled = %s Deshabilitado +%s Improperly Placed = %s No Colocado Apropiadamente +Range = Alcance +Enable/Disable = Habilitar/Deshabilitar +Itemwise = +Stackwise = +Owner: = +Unlocked = +Locked = +Radius: = +Enabled = +Disabled = + +## Machine names +# $1: Tier +%s Alloy Furnace = Horno de Aleacion %s +%s Battery Box = Caja de Bateria %s +%s Cable = Cable %s +%s CNC Machine = Maquina CNC %s +%s Compressor = Compresor %s +%s Extractor = Extractor %s +%s Forcefield Emitter = Emisor de Campo de Fuerza %s +%s Furnace = Horno %s +%s Grinder = Amoladora %s +%s Music Player = Reproductor de Musica %s +%s Quarry = Cantera %s +%s Tool Workshop = Taller de Herramientas %s +Arrayed Solar %s Generator = Panel Solar %s +Fuel-Fired %s Generator = Generador a Carbon %s +Geothermal %s Generator = Generador Geotermico %s +Hydro %s Generator = Molino de Agua %s +Nuclear %s Generator Core = Nucleo de Reactor Nuclear %s +Small Solar %s Generator = Panel Solar %s +Wind %s Generator = Molino de Viento %s +Self-Contained Injector = +Constructor Mk%d = +Frame = +Frame Motor = +Template = +Template (replacing) = +Template Motor = +Template Tool = +Supply Converter = Convertidor de Alimentacion +Switching Station = Estacion de Conmutacion +Battery Box = Caja de Baterias +Fuel-Fired Alloy Furnace = Horno de Aleacion a Carbon +Fuel-Fired Furnace = Horno a Carbon +Forcefield = Campo de Fuerza +Nuclear Reactor Rod Compartment = Compartimiento para Vara de Reactor Nuclear +Wind Mill Frame = Armazon de Molino de Viento +Administrative World Anchor = + +## Machine-specific +# $1: Pruduced EU +Charge = Cargar +Discharge = Descargar +Power level = Nivel de Poder +# $1: Tier $2: current_charge $3: max_charge +@1 Battery Box: @2/@3 = Caja de Bateria @1: @2/@3 +# $1: Machine name $2: Supply $3: Demand +@1. Supply: @2 Demand: @3 = @1. Alimentacion: @2 Demanda: @3 +# $1: Production percent +Production at %d%% = Produccion en %d%% +Stopped = +Keeping %d/%d map blocks loaded = +Digging not started = +Digging finished = +Digging %d m above machine = +Digging %d m below machine = + +## CNC Machine +Element Edge = Elemento Borde +Tree = Arbol +Element Cross Double = Elemento Cruz Doble +Spike = Pica +Element Edge Double = Elemento Borde Doble +Two Curved Edge Block = Dos Bloques de Borde Curvados +Pyramid = Piramide +Slope Upside Down Inner Edge = Borde Interno de Rampa Al Reves +Slope Upside Down Edge = Borde de Rampa Al Reves +Element Straight Double = Elemento Doble Recto +Sphere = Esfera +Element End Double = Doble Fin de Elemento +Element Straight = Recta de Elemento +Horizontal Cylinder = Cilindro Horizontal +Slope Inner Edge = Borde Interno de Rampa +One Curved Edge Block = Un Bloque de Borde Curvado +Element Cross = Cruce de Elementos +Stick = Varita +Element End = Fin de Elemento +Slope Lying = Rampa en Reposo +Slope Upside Down = Rampa Al Reves +Slope Edge = Borde de Rampa +Slope = Rampa +Element T = Elemento T +Cylinder = Cilindro +Cobble = Adoquines +Stone = Piedra +Brick = Ladrillo +Dirt = Tierra +Sandstone = Arenisca +Wooden = Madera +Leaves = Hojas + +## Grinder Recipes +# $1: Name +%s Dust = Polvo de %s +Akalin = Akalina +Alatro = Alatro +Arol = Arol +Brass = Laton +Bronze = Bronce +Carbon Steel = Acero al Carbono +Cast Iron = Hierro Fundido +Chromium = Cromo +Coal = Carbon +Copper = Cobre +Gold = Oro +Mithril = Mitrilo +Silver = Plata +Stainless Steel = Acero Inoxidable +Talinite = Talinita +Tin = Estanio +Wrought Iron = Hierro Forjado +Zinc = Zinc +%.1f%%-Fissile Uranium = + +## Tools +RE Battery = +Water Can = Bidon de Agua +Lava Can = Bidon de Lava +Chainsaw = Motosierra +Flashlight = Linterna +3 nodes deep. = 3 nodos de profundo. +3 nodes tall. = 3 nodos de alto. +3 nodes wide. = 3 nodos de ancho. +3x3 nodes. = 3x3 nodos. +Use while sneaking to change Mining Drill Mk%d modes. = Manten pulsado Mayus y Usar para cambiar el modo del Taladro de Mineria Mk%d. +Mining Drill Mk%d Mode %d = Taladro de Mineria Mk%d Modo %d +Mining Drill Mk%d = Taladro de Mineria Mk%d +Mining Laser Mk%d = Laser de Mineria Mk%d +Single node. = Nodo simple. +Sonic Screwdriver = Destonillador Sonico +Tree Tap = Grifo de Arbol + +## Craft descriptions +Alloy cooking = +Grinding = +Compressing = +Extracting = diff --git a/technic/locale/it.txt b/technic/locale/it.txt new file mode 100644 index 0000000..59ba7f6 --- /dev/null +++ b/technic/locale/it.txt @@ -0,0 +1,201 @@ + +## Misc +[Technic] Loaded in %f seconds = [Technic] caricato in %f secondi + +## Items +Silicon Wafer = Wafer di silicone +Doped Silicon Wafer = Wafer di silicone dopato +Enriched Uranium = Uranio arricchito +Uranium Fuel = Uranio Combustibile +Diamond Drill Head = Trivella diamantata +Blue Energy Crystal = Cristallo energetico blu +Green Energy Crystal = Cristallo energetico verde +Red Energy Crystal = Cristallo energetico rosso +Fine Copper Wire = Filo di rame fine +Copper Coil = Bobina di rame +Electric Motor = Motore elettrico +Low Voltage Transformer = Trasformatore in bassa tensione +Medium Voltage Transformer = Trasformatore in media tensione +High Voltage Transformer = Trasformatore in alta tensione +Control Logic Unit = Unità di controllo logica +Mixed Metal Ingot = Lingotto in lega ibrida +Composite Plate = Lastra composita +Copper Plate = Lastra di rame +Carbon Plate = Lastra in carbonio +Graphite = Lastra in graffite +Carbon Cloth = Fibra di carbonio +Raw Latex = Latex grezzo +Rubber Fiber = Fibra di gomma +%.1f%%-Fissile Uranium Ingot = +%.1f%%-Fissile Uranium Block = + +## Machine misc +Machine cannot be removed because it is not empty = La macchina non può essere rimossa perchè non è vuota +Inventory move disallowed due to protection = Impossibile muovere l'inventario a causa della protezione +# $1: Machine name (Includes tier) +@1 Active (@2 EU) = @1 Attivo (@2 EU) +%s Active = %s Attivo +%s Disabled = %s Disabilitato +%s Enabled = +%s Idle = %s Inattivo +%s Improperly Placed = %s Piazzato impropiamente +%s Unpowered = %s Non alimentato +%s Out Of Fuel = %s senza carburante +%s Has Bad Cabling = %s ha un cablaggio scorretto +%s Has No Network = %s non è collegata +%s Finished = %s Finito +Enable/Disable = Abilita/Disabilita +Range = Raggio +Upgrade Slots = +In: = Ingresso: +Out: = Uscita: +Slot %d = +Itemwise = Singolo elemento +Stackwise = pila completa +Owner: = +Unlocked = +Locked = +Radius: = +Enabled = +Disabled = + +## Machine names +# $1: Tier +%s Alloy Furnace = %s Fornace per leghe +%s Battery Box = %s Box batterie +%s Cable = Cavo %s +%s CNC Machine = Tornio CNC %s +%s Compressor = Compressore %s +%s Extractor = Estrattore %s +%s Forcefield Emitter = Emettitore di campo di forza %s +%s Furnace = %s Fornace +%s Grinder = %s Tritatutto +%s Music Player = Music Player %s +%s Quarry = Cava %s +%s Tool Workshop = Officina per attrezzi %s +Arrayed Solar %s Generator = %s Pannello Solare +Fuel-Fired %s Generator = %s Generatore a carbone +Geothermal %s Generator = %s Generatore Geotermico +Hydro %s Generator = Turbina Elettrica %s +Nuclear %s Generator Core = Reattore nucleare %s +Small Solar %s Generator = %s Pannello solare +Wind %s Generator = %s Generatore eolico +Self-Contained Injector = Ignettore +Constructor Mk%d = Costruttore Mk%d +Frame = Cornice +Frame Motor = Cornice del motore +Template = +Template (replacing) = Template (rimpiazzato) +Template Motor = +Template Tool = +Battery Box = Box batterie +Supply Converter = Trasformatore +Switching Station = Stazione di controllo +Fuel-Fired Alloy Furnace = Fornace per leghe a carbone +Fuel-Fired Furnace = Fornace a carbone +Wind Mill Frame = Pala eolica +Forcefield = Campo di forza +Nuclear Reactor Rod Compartment = Compartimento combustibile nucleare +Administrative World Anchor = + +## Machine-specific +# $1: Pruduced EU +Charge = Carica +Discharge = Scarica +Power level = Livello di potenza +# $1: Tier $2: current_charge $3: max_charge +@1 Battery Box: @2/@3 = @1 Box Batterie: @2/@3 +# $1: Machine name $2: Supply $3: Demand +@1. Supply: @2 Demand: @3 = @1. Prodotto: @2 Consumato: @3 +Production at %d%% = Produzione a %d%% +Choose Milling Program: = Scegliere un programma di Fresatura +Slim Elements half / normal height: = Metà elementi sottili / altezza normale: +Current track %s = Traccia corrente %s +Stopped = +Keeping %d/%d map blocks loaded = +Digging not started = +Digging finished = +Digging %d m above machine = +Digging %d m below machine = + +## CNC +Cylinder = Cilindro +Element Cross = Elemento a croce +Element Cross Double = Elemento a croce doppio +Element Edge = Elemento bordo +Element Edge Double = Elemento bordo doppio +Element End = Elemento finale +Element End Double = Elemento finale doppio +Element Straight = Elemento dritto +Element Straight Double = Elemento dritto doppio +Element T = Elemento a T +Element T Double = Elemento a T doppio +Horizontal Cylinder = Cilindro orizzontale +One Curved Edge Block = Blocco con bordo curvo +Pyramid = Piramide +Slope = Inclinato +Slope Edge = Bordo inclinato +Slope Inner Edge = Bordo interno inclinato +Slope Lying = Pendenza bugiarda +Slope Upside Down = Pendenza capovolta +Slope Upside Down Edge = Bordo inclinato capovolto +Slope Upside Down Inner Edge = Bordo interno inclinato capovolto +Sphere = Sfera +Spike = Spuntone +Stick = Bastone +Two Curved Edge Block = Blocco con bordo a doppia curva +Brick = Mattone +Cobble = Ciottolato +Dirt = Terra +Leaves = Foglie +Sandstone = Arenaria +Stone = Pietra +Tree = Albero +Wooden = Legno + +## Grinder Recipes +# $1: Name +%s Dust = Polvere di %s +Akalin = Alcalino +Alatro = Alatro +Arol = Arol +Brass = Ottone +Bronze = Bronzo +Carbon Steel = Acciaio al Carbonio +Cast Iron = Ghisa +Chromium = Cromo +Coal = Carbone +Copper = Rame +Gold = Oro +Mithril = Mithril +Silver = Argento +Stainless Steel = Acciaio Inossidabile +Talinite = Talinite +Tin = Stagno +Wrought Iron = Ferro Battuto +Zinc = Zinco +%.1f%%-Fissile Uranium = + +## Tools +RE Battery = +Water Can = Serbatoio d'acqua +Lava Can = Serbatoio di lava +Chainsaw = Motosega +Flashlight = Torcia +3 nodes deep. = 3 nodi in profondità. +3 nodes tall. = 3 nodi in altezza. +3 nodes wide. = 3 nodi in larghezza. +3x3 nodes. = 3x3 nodi. +Use while sneaking to change Mining Drill Mk%d modes. = Premi shift (freccia grossa) e usa per cambiare modalità nella trivella da miniera Mk%d. +Mining Drill Mk%d Mode %d = Trivella mk%d in modalità %d +Mining Drill Mk%d = Trivella da miniera mk%d +Mining Laser Mk%d = Laser da miniera mk%d +Single node. = Nodo singolo. +Sonic Screwdriver = Cacciavite sonico +Tree Tap = Batti albero + +## Craft descriptions +Alloy cooking = Cottura lege +Grinding = Macinazione +Compressing = Compressione +Extracting = Estrazione diff --git a/technic/locale/template.txt b/technic/locale/template.txt new file mode 100644 index 0000000..0464241 --- /dev/null +++ b/technic/locale/template.txt @@ -0,0 +1,211 @@ +# template.txt +# Template for translations of Technic + + +## Misc +[Technic] Loaded in %f seconds = + +## Items +Silicon Wafer = +Doped Silicon Wafer = +Enriched Uranium = +Uranium Fuel = +Diamond Drill Head = +Blue Energy Crystal = +Green Energy Crystal = +Red Energy Crystal = +Fine Copper Wire = +Copper Coil = +Electric Motor = +Low Voltage Transformer = +Medium Voltage Transformer = +High Voltage Transformer = +Control Logic Unit = +Mixed Metal Ingot = +Composite Plate = +Copper Plate = +Carbon Plate = +Graphite = +Carbon Cloth = +Raw Latex = +Rubber Fiber = +%.1f%%-Fissile Uranium Ingot = +%.1f%%-Fissile Uranium Block = + +## Machine misc +Machine cannot be removed because it is not empty = +Inventory move disallowed due to protection = +# $1: Machine name (Includes tier) +@1 Active (@2 EU) = +%s Active = +%s Disabled = +%s Enabled = +%s Idle = +%s Improperly Placed = +%s is empty = +%s Unpowered = +%s Out Of Fuel = +%s Has Bad Cabling = +%s (Slave) = +%s Has No Network = +%s Finished = +Enable/Disable = +Range = +Upgrade Slots = +In: = +Out: = +Slot %d = +Itemwise = +Stackwise = +Ignoring Mesecon Signal = +Controlled by Mesecon Signal = +Owner: = +Unlocked = +Locked = +Radius: = +Enabled = +Disabled = + +## Machine names +# $1: Tier +%s Alloy Furnace = +%s Battery Box = +%s Cable = +%s CNC Machine = +%s Centrifuge = +%s Compressor = +%s Extractor = +%s Forcefield Emitter = +%s Furnace = +%s Grinder = +%s Music Player = +%s Quarry = +%s Tool Workshop = +Arrayed Solar %s Generator = +Fuel-Fired %s Generator = +Geothermal %s Generator = +Hydro %s Generator = +Nuclear %s Generator Core = +Small Solar %s Generator = +Wind %s Generator = +Self-Contained Injector = +Constructor Mk%d = +Frame = +Frame Motor = +Template = +Template (replacing) = +Template Motor = +Template Tool = +Battery Box = +Supply Converter = +Switching Station = +Fuel-Fired Alloy Furnace = +Fuel-Fired Furnace = +Wind Mill Frame = +Forcefield = +Nuclear Reactor Rod Compartment = +Administrative World Anchor = + +## Machine-specific +# $1: Pruduced EU +Charge = +Discharge = +Power level = +# $1: Tier $2: current_charge $3: max_charge +@1 Battery Box: @2/@3 = +# $1: Machine name $2: Supply $3: Demand +@1. Supply: @2 Demand: @3 = +Production at %d%% = +Choose Milling Program: = +Slim Elements half / normal height: = +Current track %s = +Stopped = +Keeping %d/%d map blocks loaded = +Digging not started = +Digging finished = +Digging %d m above machine = +Digging %d m below machine = +@1 (@2 @3 -> @4 @5) = + +## CNC +Cylinder = +Element Cross = +Element Cross Double = +Element Edge = +Element Edge Double = +Element End = +Element End Double = +Element Straight = +Element Straight Double = +Element T = +Element T Double = +Horizontal Cylinder = +One Curved Edge Block = +Pyramid = +Slope = +Slope Edge = +Slope Inner Edge = +Slope Lying = +Slope Upside Down = +Slope Upside Down Edge = +Slope Upside Down Inner Edge = +Sphere = +Spike = +Stick = +Two Curved Edge Block = +Brick = +Cobble = +Dirt = +Leaves = +Sandstone = +Stone = +Tree = +Wooden = + +## Grinder Recipes +# $1: Name +%s Dust = +Akalin = +Alatro = +Arol = +Brass = +Bronze = +Carbon Steel = +Cast Iron = +Chromium = +Coal = +Copper = +Gold = +Mithril = +Silver = +Stainless Steel = +Talinite = +Tin = +Wrought Iron = +Zinc = +%.1f%%-Fissile Uranium = + +## Tools +RE Battery = +Water Can = +Lava Can = +Chainsaw = +Flashlight = +3 nodes deep. = +3 nodes tall. = +3 nodes wide. = +3x3 nodes. = +Use while sneaking to change Mining Drill Mk%d modes. = +Mining Drill Mk%d Mode %d = +Mining Drill Mk%d = +Mining Laser Mk%d = +Single node. = +Sonic Screwdriver = +Tree Tap = + +## Craft descriptions +Alloy cooking = +Grinding = +Compressing = +Extracting = +Separating = diff --git a/technic/machines/HV/battery_box.lua b/technic/machines/HV/battery_box.lua new file mode 100644 index 0000000..1e054ec --- /dev/null +++ b/technic/machines/HV/battery_box.lua @@ -0,0 +1,21 @@ +-- HV battery box +minetest.register_craft({ + output = 'technic:hv_battery_box0', + recipe = { + {'technic:mv_battery_box0', 'technic:mv_battery_box0', 'technic:mv_battery_box0'}, + {'technic:mv_battery_box0', 'technic:hv_transformer', 'technic:mv_battery_box0'}, + {'', 'technic:hv_cable0', ''}, + } +}) + +technic.register_battery_box({ + tier = "HV", + max_charge = 1000000, + charge_rate = 100000, + discharge_rate = 400000, + charge_step = 10000, + discharge_step = 40000, + upgrade = 1, + tube = 1, +}) + diff --git a/technic/machines/HV/cables.lua b/technic/machines/HV/cables.lua new file mode 100644 index 0000000..25297c8 --- /dev/null +++ b/technic/machines/HV/cables.lua @@ -0,0 +1,12 @@ + +minetest.register_craft({ + output = 'technic:hv_cable0 3', + recipe = { + {'homedecor:plastic_sheeting', 'homedecor:plastic_sheeting', 'homedecor:plastic_sheeting'}, + {'technic:mv_cable0', 'technic:mv_cable0', 'technic:mv_cable0'}, + {'homedecor:plastic_sheeting', 'homedecor:plastic_sheeting', 'homedecor:plastic_sheeting'}, + } +}) + +technic.register_cable("HV", 3/16) + diff --git a/technic/machines/HV/forcefield.lua b/technic/machines/HV/forcefield.lua new file mode 100644 index 0000000..0f0836d --- /dev/null +++ b/technic/machines/HV/forcefield.lua @@ -0,0 +1,261 @@ +--- Forcefield generator. +-- @author ShadowNinja +-- +-- Forcefields are powerful barriers but they consume huge amounts of power. +-- The forcefield Generator is an HV machine. + +-- How expensive is the generator? +-- Leaves room for upgrades lowering the power drain? +local forcefield_power_drain = 10 + +local S = technic.getter + +minetest.register_craft({ + output = "technic:forcefield_emitter_off", + recipe = { + {"default:mese", "technic:motor", "default:mese" }, + {"technic:deployer_off", "technic:machine_casing", "technic:deployer_off"}, + {"default:mese", "technic:hv_cable0", "default:mese" }, + } +}) + + +local replaceable_cids = {} + +minetest.after(0, function() + for name, ndef in pairs(minetest.registered_nodes) do + if ndef.buildable_to == true and name ~= "ignore" then + replaceable_cids[minetest.get_content_id(name)] = true + end + end +end) + + +-- Idea: Let forcefields have different colors by upgrade slot. +-- Idea: Let forcefields add up by detecting if one hits another. +-- ___ __ +-- / \/ \ +-- | | +-- \___/\___/ + +local function update_forcefield(pos, meta, active, first) + local shape = meta:get_int("shape") + local range = meta:get_int("range") + local vm = VoxelManip() + local MinEdge, MaxEdge = vm:read_from_map(vector.subtract(pos, range), + vector.add(pos, range)) + local area = VoxelArea:new({MinEdge = MinEdge, MaxEdge = MaxEdge}) + local data = vm:get_data() + + local c_air = minetest.get_content_id("air") + local c_field = minetest.get_content_id("technic:forcefield") + + for z = -range, range do + for y = -range, range do + local vi = area:index(pos.x + (-range), pos.y + y, pos.z + z) + for x = -range, range do + local relevant + if shape == 0 then + local squared = x * x + y * y + z * z + relevant = + squared <= range * range + range and + squared >= (range - 1) * (range - 1) + (range - 1) + else + relevant = + x == -range or x == range or + y == -range or y == range or + z == -range or z == range + end + if relevant then + local cid = data[vi] + if active and replaceable_cids[cid] then + data[vi] = c_field + elseif not active and cid == c_field then + data[vi] = c_air + end + end + vi = vi + 1 + end + end + end + + vm:set_data(data) + vm:update_liquids() + vm:write_to_map() + -- update_map is very slow, but if we don't call it we'll + -- get phantom blocks on the client. + if not active or first then + vm:update_map() + end +end + +local function set_forcefield_formspec(meta) + local formspec = "size[5,2.25]".. + "field[0.3,0.5;2,1;range;"..S("Range")..";"..meta:get_int("range").."]" + -- The names for these toggle buttons are explicit about which + -- state they'll switch to, so that multiple presses (arising + -- from the ambiguity between lag and a missed press) only make + -- the single change that the user expects. + if meta:get_int("shape") == 0 then + formspec = formspec.."button[3,0.2;2,1;shape1;"..S("Sphere").."]" + else + formspec = formspec.."button[3,0.2;2,1;shape0;"..S("Cube").."]" + end + if meta:get_int("mesecon_mode") == 0 then + formspec = formspec.."button[0,1;5,1;mesecon_mode_1;"..S("Ignoring Mesecon Signal").."]" + else + formspec = formspec.."button[0,1;5,1;mesecon_mode_0;"..S("Controlled by Mesecon Signal").."]" + end + if meta:get_int("enabled") == 0 then + formspec = formspec.."button[0,1.75;5,1;enable;"..S("%s Disabled"):format(S("%s Forcefield Emitter"):format("HV")).."]" + else + formspec = formspec.."button[0,1.75;5,1;disable;"..S("%s Enabled"):format(S("%s Forcefield Emitter"):format("HV")).."]" + end + meta:set_string("formspec", formspec) +end + +local forcefield_receive_fields = function(pos, formname, fields, sender) + local meta = minetest.get_meta(pos) + local range = nil + if fields.range then + range = tonumber(fields.range) or 0 + -- Smallest field is 5. Anything less is asking for trouble. + -- Largest is 20. It is a matter of pratical node handling. + -- At the maximim range updating the forcefield takes about 0.2s + range = math.max(range, 5) + range = math.min(range, 20) + if range == meta:get_int("range") then range = nil end + end + if fields.shape0 or fields.shape1 or range then + update_forcefield(pos, meta, false) + end + if range then meta:set_int("range", range) end + if fields.shape0 then meta:set_int("shape", 0) end + if fields.shape1 then meta:set_int("shape", 1) end + if fields.enable then meta:set_int("enabled", 1) end + if fields.disable then meta:set_int("enabled", 0) end + if fields.mesecon_mode_0 then meta:set_int("mesecon_mode", 0) end + if fields.mesecon_mode_1 then meta:set_int("mesecon_mode", 1) end + set_forcefield_formspec(meta) +end + +local mesecons = { + effector = { + action_on = function(pos, node) + minetest.get_meta(pos):set_int("mesecon_effect", 1) + end, + action_off = function(pos, node) + minetest.get_meta(pos):set_int("mesecon_effect", 0) + end + } +} + +local function run(pos, node) + local meta = minetest.get_meta(pos) + local eu_input = meta:get_int("HV_EU_input") + local enabled = meta:get_int("enabled") ~= 0 and (meta:get_int("mesecon_mode") == 0 or meta:get_int("mesecon_effect") ~= 0) + local machine_name = S("%s Forcefield Emitter"):format("HV") + + local range = meta:get_int("range") + local power_requirement + if meta:get_int("shape") == 0 then + power_requirement = math.floor(4 * math.pi * range * range) + else + power_requirement = 24 * range * range + end + power_requirement = power_requirement * forcefield_power_drain + + if not enabled then + if node.name == "technic:forcefield_emitter_on" then + update_forcefield(pos, meta, false) + technic.swap_node(pos, "technic:forcefield_emitter_off") + meta:set_string("infotext", S("%s Disabled"):format(machine_name)) + end + meta:set_int("HV_EU_demand", 0) + return + end + meta:set_int("HV_EU_demand", power_requirement) + if eu_input < power_requirement then + meta:set_string("infotext", S("%s Unpowered"):format(machine_name)) + if node.name == "technic:forcefield_emitter_on" then + update_forcefield(pos, meta, false) + technic.swap_node(pos, "technic:forcefield_emitter_off") + end + elseif eu_input >= power_requirement then + local first = false + if node.name == "technic:forcefield_emitter_off" then + first = true + technic.swap_node(pos, "technic:forcefield_emitter_on") + meta:set_string("infotext", S("%s Active"):format(machine_name)) + end + update_forcefield(pos, meta, true, first) + end +end + +minetest.register_node("technic:forcefield_emitter_off", { + description = S("%s Forcefield Emitter"):format("HV"), + tiles = {"technic_forcefield_emitter_off.png"}, + groups = {cracky = 1, technic_machine = 1}, + on_receive_fields = forcefield_receive_fields, + on_construct = function(pos) + local meta = minetest.get_meta(pos) + meta:set_int("HV_EU_input", 0) + meta:set_int("HV_EU_demand", 0) + meta:set_int("range", 10) + meta:set_int("enabled", 0) + meta:set_int("mesecon_mode", 0) + meta:set_int("mesecon_effect", 0) + meta:set_string("infotext", S("%s Forcefield Emitter"):format("HV")) + set_forcefield_formspec(meta) + end, + mesecons = mesecons, + technic_run = run, +}) + +minetest.register_node("technic:forcefield_emitter_on", { + description = S("%s Forcefield Emitter"):format("HV"), + tiles = {"technic_forcefield_emitter_on.png"}, + groups = {cracky = 1, technic_machine = 1, not_in_creative_inventory=1}, + drop = "technic:forcefield_emitter_off", + on_receive_fields = forcefield_receive_fields, + on_destruct = function(pos) + local meta = minetest.get_meta(pos) + update_forcefield(pos, meta, false) + end, + mesecons = mesecons, + technic_run = run, + technic_on_disable = function (pos, node) + local meta = minetest.get_meta(pos) + update_forcefield(pos, meta, false) + technic.swap_node(pos, "technic:forcefield_emitter_off") + end, +}) + +minetest.register_node("technic:forcefield", { + description = S("%s Forcefield"):format("HV"), + sunlight_propagates = true, + drawtype = "glasslike", + groups = {not_in_creative_inventory=1}, + paramtype = "light", + light_source = 15, + diggable = false, + drop = '', + tiles = {{ + name = "technic_forcefield_animated.png", + animation = { + type = "vertical_frames", + aspect_w = 16, + aspect_h = 16, + length = 1.0, + }, + }}, +}) + + +if minetest.get_modpath("mesecons_mvps") then + mesecon.register_mvps_stopper("technic:forcefield") +end + +technic.register_machine("HV", "technic:forcefield_emitter_on", technic.receiver) +technic.register_machine("HV", "technic:forcefield_emitter_off", technic.receiver) + diff --git a/technic/machines/HV/generator.lua b/technic/machines/HV/generator.lua new file mode 100644 index 0000000..aa83590 --- /dev/null +++ b/technic/machines/HV/generator.lua @@ -0,0 +1,13 @@ +minetest.register_alias("hv_generator", "technic:hv_generator") + +minetest.register_craft({ + output = 'technic:hv_generator', + recipe = { + {'technic:carbon_plate', 'technic:mv_generator', 'technic:composite_plate'}, + {'pipeworks:tube_1', 'technic:hv_transformer', 'pipeworks:tube_1'}, + {'technic:stainless_steel_ingot', 'technic:hv_cable0', 'technic:stainless_steel_ingot'}, + } +}) + +technic.register_generator({tier="HV", tube=1, supply=1200}) + diff --git a/technic/machines/HV/init.lua b/technic/machines/HV/init.lua new file mode 100644 index 0000000..d7136b4 --- /dev/null +++ b/technic/machines/HV/init.lua @@ -0,0 +1,18 @@ + +technic.register_tier("HV", "High Voltage") + +local path = technic.modpath.."/machines/HV" + +-- Wiring stuff +dofile(path.."/cables.lua") +dofile(path.."/battery_box.lua") + +-- Generators +dofile(path.."/solar_array.lua") +dofile(path.."/nuclear_reactor.lua") +dofile(path.."/generator.lua") + +-- Machines +dofile(path.."/quarry.lua") +dofile(path.."/forcefield.lua") + diff --git a/technic/machines/HV/nuclear_reactor.lua b/technic/machines/HV/nuclear_reactor.lua new file mode 100644 index 0000000..3aa1ba8 --- /dev/null +++ b/technic/machines/HV/nuclear_reactor.lua @@ -0,0 +1,723 @@ +-- The enriched uranium rod driven EU generator. +-- A very large and advanced machine providing vast amounts of power. +-- Very efficient but also expensive to run as it needs uranium. (10000EU 86400 ticks (one week)) +-- Provides HV EUs that can be down converted as needed. +-- +-- The nuclear reactor core needs water and a protective shield to work. +-- This is checked now and then and if the machine is tampered with... BOOM! + +local burn_ticks = 7 * 24 * 60 * 60 -- (seconds). +local power_supply = 100000 -- EUs +local fuel_type = "technic:uranium_fuel" -- The reactor burns this stuff + +local S = technic.getter + +if not vector.length_square then + vector.length_square = function (v) + return v.x*v.x + v.y*v.y + v.z*v.z + end +end + +-- FIXME: recipe must make more sense like a rod recepticle, steam chamber, HV generator? +minetest.register_craft({ + output = 'technic:hv_nuclear_reactor_core', + recipe = { + {'technic:carbon_plate', 'default:obsidian_glass', 'technic:carbon_plate'}, + {'technic:composite_plate', 'technic:machine_casing', 'technic:composite_plate'}, + {'technic:stainless_steel_ingot', 'technic:hv_cable0', 'technic:stainless_steel_ingot'}, + } +}) + +local generator_formspec = + "invsize[8,9;]".. + "label[0,0;"..S("Nuclear Reactor Rod Compartment").."]".. + "list[current_name;src;2,1;3,2;]".. + "list[current_player;main;0,5;8,4;]".. + "listring[]" + +-- "Boxy sphere" +local nodebox = { + { -0.353, -0.353, -0.353, 0.353, 0.353, 0.353 }, -- Box + { -0.495, -0.064, -0.064, 0.495, 0.064, 0.064 }, -- Circle +-x + { -0.483, -0.128, -0.128, 0.483, 0.128, 0.128 }, + { -0.462, -0.191, -0.191, 0.462, 0.191, 0.191 }, + { -0.433, -0.249, -0.249, 0.433, 0.249, 0.249 }, + { -0.397, -0.303, -0.303, 0.397, 0.303, 0.303 }, + { -0.305, -0.396, -0.305, 0.305, 0.396, 0.305 }, -- Circle +-y + { -0.250, -0.432, -0.250, 0.250, 0.432, 0.250 }, + { -0.191, -0.461, -0.191, 0.191, 0.461, 0.191 }, + { -0.130, -0.482, -0.130, 0.130, 0.482, 0.130 }, + { -0.066, -0.495, -0.066, 0.066, 0.495, 0.066 }, + { -0.064, -0.064, -0.495, 0.064, 0.064, 0.495 }, -- Circle +-z + { -0.128, -0.128, -0.483, 0.128, 0.128, 0.483 }, + { -0.191, -0.191, -0.462, 0.191, 0.191, 0.462 }, + { -0.249, -0.249, -0.433, 0.249, 0.249, 0.433 }, + { -0.303, -0.303, -0.397, 0.303, 0.303, 0.397 }, +} + +local reactor_siren = {} +local function siren_set_state(pos, newstate) + local hpos = minetest.hash_node_position(pos) + local siren = reactor_siren[hpos] + if not siren then + if newstate == "off" then return end + siren = {state="off"} + reactor_siren[hpos] = siren + end + if newstate == "danger" and siren.state ~= "danger" then + if siren.handle then minetest.sound_stop(siren.handle) end + siren.handle = minetest.sound_play("technic_hv_nuclear_reactor_siren_danger_loop", {pos=pos, gain=1.5, loop=true, max_hear_distance=48}) + siren.state = "danger" + elseif newstate == "clear" then + if siren.handle then minetest.sound_stop(siren.handle) end + local clear_handle = minetest.sound_play("technic_hv_nuclear_reactor_siren_clear", {pos=pos, gain=1.5, loop=false, max_hear_distance=48}) + siren.handle = clear_handle + siren.state = "clear" + minetest.after(10, function () + if siren.handle == clear_handle then + minetest.sound_stop(clear_handle) + if reactor_siren[hpos] == siren then + reactor_siren[hpos] = nil + end + end + end) + elseif newstate == "off" and siren.state ~= "off" then + if siren.handle then minetest.sound_stop(siren.handle) end + siren.handle = nil + reactor_siren[hpos] = nil + end +end +local function siren_danger(pos, meta) + meta:set_int("siren", 1) + siren_set_state(pos, "danger") +end +local function siren_clear(pos, meta) + if meta:get_int("siren") ~= 0 then + siren_set_state(pos, "clear") + meta:set_int("siren", 0) + end +end + +-- The standard reactor structure consists of a 9x9x9 cube. A cross +-- section through the middle: +-- +-- CCCC CCCC +-- CBBB BBBC +-- CBSS SSBC +-- CBSWWWSBC +-- CBSW#WSBC +-- CBSW|WSBC +-- CBSS|SSBC +-- CBBB|BBBC +-- CCCC|CCCC +-- C = Concrete, B = Blast-resistant concrete, S = Stainless Steel, +-- W = water node, # = reactor core, | = HV cable +-- +-- The man-hole and the HV cable are only in the middle, and the man-hole +-- is optional. +-- +-- For the reactor to operate and not melt down, it insists on the inner +-- 7x7x7 portion (from the core out to the blast-resistant concrete) +-- being intact. Intactness only depends on the number of nodes of the +-- right type in each layer. The water layer must have water in all but +-- at most one node; the steel and blast-resistant concrete layers must +-- have the right material in all but at most two nodes. The permitted +-- gaps are meant for the cable and man-hole, but can actually be anywhere +-- and contain anything. For the reactor to be useful, a cable must +-- connect to the core, but it can go in any direction. +-- +-- The outer concrete layer of the standard structure is not required +-- for the reactor to operate. It is noted here because it used to +-- be mandatory, and for historical reasons (that it predates the +-- implementation of radiation) it needs to continue being adequate +-- shielding of legacy reactors. If it ever ceases to be adequate +-- shielding for new reactors, legacy ones should be grandfathered. +local reactor_structure_badness = function(pos) + local vm = VoxelManip() + local pos1 = vector.subtract(pos, 3) + local pos2 = vector.add(pos, 3) + local MinEdge, MaxEdge = vm:read_from_map(pos1, pos2) + local data = vm:get_data() + local area = VoxelArea:new({MinEdge=MinEdge, MaxEdge=MaxEdge}) + + local c_blast_concrete = minetest.get_content_id("technic:blast_resistant_concrete") + local c_stainless_steel = minetest.get_content_id("technic:stainless_steel_block") + local c_water_source = minetest.get_content_id("default:water_source") + local c_water_flowing = minetest.get_content_id("default:water_flowing") + + local blastlayer, steellayer, waterlayer = 0, 0, 0 + + for z = pos1.z, pos2.z do + for y = pos1.y, pos2.y do + for x = pos1.x, pos2.x do + local cid = data[area:index(x, y, z)] + if x == pos1.x or x == pos2.x or + y == pos1.y or y == pos2.y or + z == pos1.z or z == pos2.z then + if cid == c_blast_concrete then + blastlayer = blastlayer + 1 + end + elseif x == pos1.x+1 or x == pos2.x-1 or + y == pos1.y+1 or y == pos2.y-1 or + z == pos1.z+1 or z == pos2.z-1 then + if cid == c_stainless_steel then + steellayer = steellayer + 1 + end + elseif x == pos1.x+2 or x == pos2.x-2 or + y == pos1.y+2 or y == pos2.y-2 or + z == pos1.z+2 or z == pos2.z-2 then + if cid == c_water_source or cid == c_water_flowing then + waterlayer = waterlayer + 1 + end + end + end + end + end + if waterlayer > 25 then waterlayer = 25 end + if steellayer > 96 then steellayer = 96 end + if blastlayer > 216 then blastlayer = 216 end + return (25 - waterlayer) + (96 - steellayer) + (216 - blastlayer) +end + +local function meltdown_reactor(pos) + print("A reactor melted down at "..minetest.pos_to_string(pos)) + minetest.set_node(pos, {name="technic:corium_source"}) +end + +minetest.register_abm({ + nodenames = {"technic:hv_nuclear_reactor_core_active"}, + interval = 1, + chance = 1, + action = function (pos, node) + local meta = minetest.get_meta(pos) + local badness = reactor_structure_badness(pos) + local accum_badness = meta:get_int("structure_accumulated_badness") + if badness == 0 then + if accum_badness ~= 0 then + meta:set_int("structure_accumulated_badness", accum_badness - 1) + siren_clear(pos, meta) + end + else + siren_danger(pos, meta) + accum_badness = accum_badness + badness + if accum_badness >= 100 then + meltdown_reactor(pos) + else + meta:set_int("structure_accumulated_badness", accum_badness) + end + end + end, +}) + +local run = function(pos, node) + local meta = minetest.get_meta(pos) + local machine_name = S("Nuclear %s Generator Core"):format("HV") + local burn_time = meta:get_int("burn_time") or 0 + + if burn_time >= burn_ticks or burn_time == 0 then + local inv = meta:get_inventory() + if not inv:is_empty("src") then + local srclist = inv:get_list("src") + local correct_fuel_count = 0 + for _, srcstack in pairs(srclist) do + if srcstack then + if srcstack:get_name() == fuel_type then + correct_fuel_count = correct_fuel_count + 1 + end + end + end + -- Check that the reactor is complete as well + -- as the correct number of correct fuel + if correct_fuel_count == 6 and + reactor_structure_badness(pos) == 0 then + meta:set_int("burn_time", 1) + technic.swap_node(pos, "technic:hv_nuclear_reactor_core_active") + meta:set_int("HV_EU_supply", power_supply) + for idx, srcstack in pairs(srclist) do + srcstack:take_item() + inv:set_stack("src", idx, srcstack) + end + return + end + end + meta:set_int("HV_EU_supply", 0) + meta:set_int("burn_time", 0) + meta:set_string("infotext", S("%s Idle"):format(machine_name)) + technic.swap_node(pos, "technic:hv_nuclear_reactor_core") + meta:set_int("structure_accumulated_badness", 0) + siren_clear(pos, meta) + elseif burn_time > 0 then + burn_time = burn_time + 1 + meta:set_int("burn_time", burn_time) + local percent = math.floor(burn_time / burn_ticks * 100) + meta:set_string("infotext", machine_name.." ("..percent.."%)") + meta:set_int("HV_EU_supply", power_supply) + end +end + +minetest.register_node("technic:hv_nuclear_reactor_core", { + description = S("Nuclear %s Generator Core"):format("HV"), + tiles = {"technic_hv_nuclear_reactor_core.png", "technic_hv_nuclear_reactor_core.png", + "technic_hv_nuclear_reactor_core.png", "technic_hv_nuclear_reactor_core.png", + "technic_hv_nuclear_reactor_core.png", "technic_hv_nuclear_reactor_core.png"}, + groups = {cracky=1, technic_machine=1}, + legacy_facedir_simple = true, + sounds = default.node_sound_wood_defaults(), + drawtype="nodebox", + paramtype = "light", + stack_max = 1, + node_box = { + type = "fixed", + fixed = nodebox + }, + on_construct = function(pos) + local meta = minetest.get_meta(pos) + meta:set_string("infotext", S("Nuclear %s Generator Core"):format("HV")) + meta:set_int("HV_EU_supply", 0) + -- Signal to the switching station that this device burns some + -- sort of fuel and needs special handling + meta:set_int("HV_EU_from_fuel", 1) + meta:set_int("burn_time", 0) + meta:set_string("formspec", generator_formspec) + local inv = meta:get_inventory() + inv:set_size("src", 6) + end, + can_dig = technic.machine_can_dig, + on_destruct = function(pos) siren_set_state(pos, "off") end, + allow_metadata_inventory_put = technic.machine_inventory_put, + allow_metadata_inventory_take = technic.machine_inventory_take, + allow_metadata_inventory_move = technic.machine_inventory_move, + technic_run = run, +}) + +minetest.register_node("technic:hv_nuclear_reactor_core_active", { + tiles = {"technic_hv_nuclear_reactor_core.png", "technic_hv_nuclear_reactor_core.png", + "technic_hv_nuclear_reactor_core.png", "technic_hv_nuclear_reactor_core.png", + "technic_hv_nuclear_reactor_core.png", "technic_hv_nuclear_reactor_core.png"}, + groups = {cracky=1, technic_machine=1, radioactive=11000, not_in_creative_inventory=1}, + legacy_facedir_simple = true, + sounds = default.node_sound_wood_defaults(), + drop="technic:hv_nuclear_reactor_core", + drawtype="nodebox", + light_source = 15, + paramtype = "light", + node_box = { + type = "fixed", + fixed = nodebox + }, + can_dig = technic.machine_can_dig, + after_dig_node = meltdown_reactor, + on_destruct = function(pos) siren_set_state(pos, "off") end, + allow_metadata_inventory_put = technic.machine_inventory_put, + allow_metadata_inventory_take = technic.machine_inventory_take, + allow_metadata_inventory_move = technic.machine_inventory_move, + technic_run = run, + technic_on_disable = function(pos, node) + local timer = minetest.get_node_timer(pos) + timer:start(1) + end, + on_timer = function(pos, node) + local meta = minetest.get_meta(pos) + + -- Connected back? + if meta:get_int("HV_EU_timeout") > 0 then return false end + + local burn_time = meta:get_int("burn_time") or 0 + + if burn_time >= burn_ticks or burn_time == 0 then + meta:set_int("HV_EU_supply", 0) + meta:set_int("burn_time", 0) + technic.swap_node(pos, "technic:hv_nuclear_reactor_core") + meta:set_int("structure_accumulated_badness", 0) + siren_clear(pos, meta) + return false + end + + meta:set_int("burn_time", burn_time + 1) + return true + end, +}) + +technic.register_machine("HV", "technic:hv_nuclear_reactor_core", technic.producer) +technic.register_machine("HV", "technic:hv_nuclear_reactor_core_active", technic.producer) + +-- radioactivity + +-- Radiation resistance represents the extent to which a material +-- attenuates radiation passing through it; i.e., how good a radiation +-- shield it is. This is identified per node type. For materials that +-- exist in real life, the radiation resistance value that this system +-- uses for a node type consisting of a solid cube of that material is the +-- (approximate) number of halvings of ionising radiation that is achieved +-- by a metre of the material in real life. This is approximately +-- proportional to density, which provides a good way to estimate it. +-- Homogeneous mixtures of materials have radiation resistance computed +-- by a simple weighted mean. Note that the amount of attenuation that +-- a material achieves in-game is not required to be (and is not) the +-- same as the attenuation achieved in real life. +-- +-- Radiation resistance for a node type may be specified in the node +-- definition, under the key "radiation_resistance". As an interim +-- measure, until node definitions widely include this, this code +-- knows a bunch of values for particular node types in several mods, +-- and values for groups of node types. The node definition takes +-- precedence if it specifies a value. Nodes for which no value at +-- all is known are taken to provide no radiation resistance at all; +-- this is appropriate for the majority of node types. Only node types +-- consisting of a fairly homogeneous mass of material should report +-- non-zero radiation resistance; anything with non-uniform geometry +-- or complex internal structure should show no radiation resistance. +-- Fractional resistance values are permitted; two significant figures +-- is the recommended precision. +local default_radiation_resistance_per_node = { + ["default:brick"] = 13, + ["default:bronzeblock"] = 45, + ["default:clay"] = 15, + ["default:coalblock"] = 9.6, + ["default:cobble"] = 15, + ["default:copperblock"] = 46, + ["default:desert_cobble"] = 15, + ["default:desert_sand"] = 10, + ["default:desert_stone"] = 17, + ["default:desert_stonebrick"] = 17, + ["default:diamondblock"] = 24, + ["default:dirt"] = 8.2, + ["default:dirt_with_grass"] = 8.2, + ["default:dirt_with_grass_footsteps"] = 8.2, + ["default:dirt_with_snow"] = 8.2, + ["default:glass"] = 17, + ["default:goldblock"] = 170, + ["default:gravel"] = 10, + ["default:ice"] = 5.6, + ["default:lava_flowing"] = 8.5, + ["default:lava_source"] = 17, + ["default:mese"] = 21, + ["default:mossycobble"] = 15, + ["default:nyancat"] = 1000, + ["default:nyancat_rainbow"] = 1000, + ["default:obsidian"] = 18, + ["default:obsidian_glass"] = 18, + ["default:sand"] = 10, + ["default:sandstone"] = 15, + ["default:sandstonebrick"] = 15, + ["default:snowblock"] = 1.7, + ["default:steelblock"] = 40, + ["default:stone"] = 17, + ["default:stone_with_coal"] = 16, + ["default:stone_with_copper"] = 20, + ["default:stone_with_diamond"] = 18, + ["default:stone_with_gold"] = 34, + ["default:stone_with_iron"] = 20, + ["default:stone_with_mese"] = 17, + ["default:stonebrick"] = 17, + ["default:water_flowing"] = 2.8, + ["default:water_source"] = 5.6, + ["farming:desert_sand_soil"] = 10, + ["farming:desert_sand_soil_wet"] = 10, + ["farming:soil"] = 8.2, + ["farming:soil_wet"] = 8.2, + ["glooptest:akalin_crystal_glass"] = 21, + ["glooptest:akalinblock"] = 40, + ["glooptest:alatro_crystal_glass"] = 21, + ["glooptest:alatroblock"] = 40, + ["glooptest:amethystblock"] = 18, + ["glooptest:arol_crystal_glass"] = 21, + ["glooptest:crystal_glass"] = 21, + ["glooptest:emeraldblock"] = 19, + ["glooptest:heavy_crystal_glass"] = 21, + ["glooptest:mineral_akalin"] = 20, + ["glooptest:mineral_alatro"] = 20, + ["glooptest:mineral_amethyst"] = 17, + ["glooptest:mineral_arol"] = 20, + ["glooptest:mineral_desert_coal"] = 16, + ["glooptest:mineral_desert_iron"] = 20, + ["glooptest:mineral_emerald"] = 17, + ["glooptest:mineral_kalite"] = 20, + ["glooptest:mineral_ruby"] = 18, + ["glooptest:mineral_sapphire"] = 18, + ["glooptest:mineral_talinite"] = 20, + ["glooptest:mineral_topaz"] = 18, + ["glooptest:reinforced_crystal_glass"] = 21, + ["glooptest:rubyblock"] = 27, + ["glooptest:sapphireblock"] = 27, + ["glooptest:talinite_crystal_glass"] = 21, + ["glooptest:taliniteblock"] = 40, + ["glooptest:topazblock"] = 24, + ["mesecons_extrawires:mese_powered"] = 21, + ["moreblocks:cactus_brick"] = 13, + ["moreblocks:cactus_checker"] = 8.5, + ["moreblocks:circle_stone_bricks"] = 17, + ["moreblocks:clean_glass"] = 17, + ["moreblocks:coal_checker"] = 9.0, + ["moreblocks:coal_glass"] = 17, + ["moreblocks:coal_stone"] = 17, + ["moreblocks:coal_stone_bricks"] = 17, + ["moreblocks:glow_glass"] = 17, + ["moreblocks:grey_bricks"] = 15, + ["moreblocks:iron_checker"] = 11, + ["moreblocks:iron_glass"] = 17, + ["moreblocks:iron_stone"] = 17, + ["moreblocks:iron_stone_bricks"] = 17, + ["moreblocks:plankstone"] = 9.3, + ["moreblocks:split_stone_tile"] = 15, + ["moreblocks:split_stone_tile_alt"] = 15, + ["moreblocks:stone_tile"] = 15, + ["moreblocks:super_glow_glass"] = 17, + ["moreblocks:tar"] = 7.0, + ["moreblocks:wood_tile"] = 1.7, + ["moreblocks:wood_tile_center"] = 1.7, + ["moreblocks:wood_tile_down"] = 1.7, + ["moreblocks:wood_tile_flipped"] = 1.7, + ["moreblocks:wood_tile_full"] = 1.7, + ["moreblocks:wood_tile_left"] = 1.7, + ["moreblocks:wood_tile_right"] = 1.7, + ["moreblocks:wood_tile_up"] = 1.7, + ["moreores:mineral_mithril"] = 18, + ["moreores:mineral_silver"] = 21, + ["moreores:mineral_tin"] = 19, + ["moreores:mithril_block"] = 26, + ["moreores:silver_block"] = 53, + ["moreores:tin_block"] = 37, + ["snow:snow_brick"] = 2.8, + ["technic:brass_block"] = 43, + ["technic:carbon_steel_block"] = 40, + ["technic:cast_iron_block"] = 40, + ["technic:chernobylite_block"] = 40, + ["technic:chromium_block"] = 37, + ["technic:corium_flowing"] = 40, + ["technic:corium_source"] = 80, + ["technic:granite"] = 18, + ["technic:lead_block"] = 80, + ["technic:marble"] = 18, + ["technic:marble_bricks"] = 18, + ["technic:mineral_chromium"] = 19, + ["technic:mineral_uranium"] = 71, + ["technic:mineral_zinc"] = 19, + ["technic:stainless_steel_block"] = 40, + ["technic:zinc_block"] = 36, + ["tnt:tnt"] = 11, + ["tnt:tnt_burning"] = 11, +} +local default_radiation_resistance_per_group = { + concrete = 16, + tree = 3.4, + uranium_block = 500, + wood = 1.7, +} +local cache_radiation_resistance = {} +local function node_radiation_resistance(nodename) + local eff = cache_radiation_resistance[nodename] + if eff then return eff end + local def = minetest.registered_nodes[nodename] or {groups={}} + eff = def.radiation_resistance or default_radiation_resistance_per_node[nodename] + if not eff then + for g, v in pairs(def.groups) do + if v > 0 and default_radiation_resistance_per_group[g] then + eff = default_radiation_resistance_per_group[g] + break + end + end + end + if not eff then eff = 0 end + cache_radiation_resistance[nodename] = eff + return eff +end + +-- Radioactive nodes cause damage to nearby players. The damage +-- effect depends on the intrinsic strength of the radiation source, +-- the distance between the source and the player, and the shielding +-- effect of the intervening material. These determine a rate of damage; +-- total damage caused is the integral of this over time. +-- +-- In the absence of effective shielding, for a specific source the +-- damage rate varies realistically in inverse proportion to the square +-- of the distance. (Distance is measured to the player's abdomen, +-- not to the nominal player position which corresponds to the foot.) +-- However, if the player is inside a non-walkable (liquid or gaseous) +-- radioactive node, the nominal distance could go to zero, yielding +-- infinite damage. In that case, the player's body is displacing the +-- radioactive material, so the effective distance should remain non-zero. +-- We therefore apply a lower distance bound of sqrt(0.75) m, which is +-- the maximum distance one can get from the node centre within the node. +-- +-- A radioactive node is identified by being in the "radioactive" group, +-- and the group value signifies the strength of the radiation source. +-- The group value is the distance in millimetres from a node at which +-- an unshielded player will be damaged by 0.25 HP/s. Or, equivalently, +-- it is 2000 times the square root of the damage rate in HP/s that an +-- unshielded player 1 m away will take. +-- +-- Shielding is assessed by sampling every 0.25 m along the path +-- from the source to the player, ignoring the source node itself. +-- The summed shielding values from the sampled nodes yield a measure +-- of the total amount of shielding on the path. As in reality, +-- shielding causes exponential attenuation of radiation. However, the +-- effect is scaled down relative to real life. A metre of a node with +-- radiation resistance value R yields attenuation of sqrt(R)*0.1 nepers. +-- (In real life it would be about R*0.69 nepers, by the definition +-- of the radiation resistance values.) The sqrt part of this formula +-- scales down the differences between shielding types, reflecting the +-- game's simplification of making expensive materials such as gold +-- readily available in cubic metres. The multiplicative factor in the +-- formula scales down the difference between shielded and unshielded +-- safe distances, avoiding the latter becoming impractically large. +-- +-- Damage is processed at rates down to 0.25 HP/s, which in the absence of +-- shielding is attained at the distance specified by the "radioactive" +-- group value. Computed damage rates below 0.25 HP/s result in no +-- damage at all to the player. This gives the player an opportunity +-- to be safe, and limits the range at which source/player interactions +-- need to be considered. +local assumed_abdomen_offset = vector.new(0, 1, 0) +local assumed_abdomen_offset_length = vector.length(assumed_abdomen_offset) +local cache_scaled_shielding = {} + +local damage_enabled = minetest.setting_getbool("enable_damage") + +if damage_enabled then + minetest.register_abm({ + nodenames = {"group:radioactive"}, + interval = 1, + chance = 1, + action = function (pos, node) + local strength = minetest.registered_nodes[node.name].groups.radioactive + for _, o in ipairs(minetest.get_objects_inside_radius(pos, strength*0.001 + assumed_abdomen_offset_length)) do + if o:is_player() then + local rel = vector.subtract(vector.add(o:getpos(), assumed_abdomen_offset), pos) + local dist_sq = vector.length_square(rel) + local dist = math.sqrt(dist_sq) + local dirstep = dist == 0 and vector.new(0,0,0) or vector.divide(rel, dist*4) + local intpos = pos + local shielding = 0 + for intdist = 0.25, dist, 0.25 do + intpos = vector.add(intpos, dirstep) + local intnodepos = vector.round(intpos) + if not vector.equals(intnodepos, pos) then + local sname = minetest.get_node(intnodepos).name + local sval = cache_scaled_shielding[sname] + if not sval then + sval = math.sqrt(node_radiation_resistance(sname)) * -0.025 + cache_scaled_shielding[sname] = sval + end + shielding = shielding + sval + end + end + local dmg_rate = 0.25e-6 * strength*strength * math.exp(shielding) / math.max(0.75, dist_sq) + if dmg_rate >= 0.25 then + local dmg_int = math.floor(dmg_rate) + if math.random() < dmg_rate-dmg_int then + dmg_int = dmg_int + 1 + end + if dmg_int > 0 then + o:set_hp(math.max(o:get_hp() - dmg_int, 0)) + end + end + end + end + end, + }) +end + +-- radioactive materials that can result from destroying a reactor +local corium_griefing = 1 +if (not technic.config:get_bool("enable_corium_griefing")) then + corium_griefing = 0 +end + +for _, state in ipairs({ "flowing", "source" }) do + minetest.register_node("technic:corium_"..state, { + description = S(state == "source" and "Corium Source" or "Flowing Corium"), + drawtype = (state == "source" and "liquid" or "flowingliquid"), + [state == "source" and "tiles" or "special_tiles"] = {{ + name = "technic_corium_"..state.."_animated.png", + animation = { + type = "vertical_frames", + aspect_w = 16, + aspect_h = 16, + length = 3.0, + }, + }}, + paramtype = "light", + paramtype2 = (state == "flowing" and "flowingliquid" or nil), + light_source = (state == "source" and 8 or 5), + walkable = false, + pointable = false, + diggable = false, + buildable_to = true, + drop = "", + drowning = 1, + liquidtype = state, + liquid_alternative_flowing = "technic:corium_flowing", + liquid_alternative_source = "technic:corium_source", + liquid_viscosity = LAVA_VISC, + liquid_renewable = false, + damage_per_second = 6, + post_effect_color = { a=192, r=80, g=160, b=80 }, + groups = { + liquid = 2, + hot = 3, + igniter = corium_griefing, + radioactive = (state == "source" and 32000 or 16000), + not_in_creative_inventory = (state == "flowing" and 1 or nil), + }, + }) +end + +if bucket and bucket.register_liquid then + bucket.register_liquid( + "technic:corium_source", + "technic:corium_flowing", + "technic:bucket_corium", + "technic_bucket_corium.png", + "Corium Bucket" + ) +end + +minetest.register_node("technic:chernobylite_block", { + description = S("Chernobylite Block"), + tiles = { "technic_chernobylite_block.png" }, + is_ground_content = true, + groups = { cracky=1, radioactive=5000, level=2 }, + sounds = default.node_sound_stone_defaults(), + light_source = 2, + +}) + +minetest.register_abm({ + nodenames = {"group:water"}, + neighbors = {"technic:corium_source"}, + interval = 1, + chance = 1, + action = function (pos, node) + minetest.remove_node(pos) + end, +}) + +if (corium_griefing == 1) then + minetest.register_abm({ + nodenames = {"technic:corium_flowing"}, + interval = 5, + chance = 10, + action = function (pos, node) + minetest.set_node(pos, {name="technic:chernobylite_block"}) + end, + }) + minetest.register_abm({ + nodenames = { "technic:corium_source", "technic:corium_flowing" }, + interval = 4, + chance = 4, + action = function (pos, node) + for _, offset in ipairs({ + vector.new(1,0,0), + vector.new(-1,0,0), + vector.new(0,0,1), + vector.new(0,0,-1), + vector.new(0,-1,0), + }) do + if math.random(8) == 1 then + minetest.dig_node(vector.add(pos, offset)) + end + end + end, + }) +end diff --git a/technic/machines/HV/quarry.lua b/technic/machines/HV/quarry.lua new file mode 100644 index 0000000..60805cc --- /dev/null +++ b/technic/machines/HV/quarry.lua @@ -0,0 +1,251 @@ + +local S = technic.getter + +minetest.register_craft({ + recipe = { + {"technic:carbon_plate", "pipeworks:filter", "technic:composite_plate"}, + {"technic:motor", "technic:machine_casing", "technic:diamond_drill_head"}, + {"technic:carbon_steel_block", "technic:hv_cable0", "technic:carbon_steel_block"}}, + output = "technic:quarry", +}) + +local quarry_dig_above_nodes = 3 -- How far above the quarry we will dig nodes +local quarry_max_depth = 100 +local quarry_demand = 10000 + +local function set_quarry_formspec(meta) + local radius = meta:get_int("size") + local formspec = "size[6,4.3]".. + "list[context;cache;0,1;4,3;]".. + "item_image[4.8,0;1,1;technic:quarry]".. + "label[0,0.2;"..S("%s Quarry"):format("HV").."]".. + "field[4.3,3.5;2,1;size;"..S("Radius:")..";"..radius.."]" + if meta:get_int("enabled") == 0 then + formspec = formspec.."button[4,1;2,1;enable;"..S("Disabled").."]" + else + formspec = formspec.."button[4,1;2,1;disable;"..S("Enabled").."]" + end + local diameter = radius*2 + 1 + local nd = meta:get_int("dug") + local rel_y = quarry_dig_above_nodes - math.floor(nd / (diameter*diameter)) + formspec = formspec.."label[0,4;"..minetest.formspec_escape( + nd == 0 and S("Digging not started") or + (rel_y < -quarry_max_depth and S("Digging finished") or + (meta:get_int("purge_on") == 1 and S("Purging cache") or + S("Digging %d m "..(rel_y > 0 and "above" or "below").." machine") + :format(math.abs(rel_y)))) + ).."]" + formspec = formspec.."button[4,2;2,1;restart;"..S("Restart").."]" + meta:set_string("formspec", formspec) +end + +local function set_quarry_demand(meta) + local radius = meta:get_int("size") + local diameter = radius*2 + 1 + local machine_name = S("%s Quarry"):format("HV") + if meta:get_int("enabled") == 0 or meta:get_int("purge_on") == 1 then + meta:set_string("infotext", S(meta:get_int("purge_on") == 1 and "%s purging cache" or "%s Disabled"):format(machine_name)) + meta:set_int("HV_EU_demand", 0) + elseif meta:get_int("dug") == diameter*diameter * (quarry_dig_above_nodes+1+quarry_max_depth) then + meta:set_string("infotext", S("%s Finished"):format(machine_name)) + meta:set_int("HV_EU_demand", 0) + else + meta:set_string("infotext", S(meta:get_int("HV_EU_input") >= quarry_demand and "%s Active" or "%s Unpowered"):format(machine_name)) + meta:set_int("HV_EU_demand", quarry_demand) + end +end + +local function quarry_receive_fields(pos, formname, fields, sender) + local meta = minetest.get_meta(pos) + if fields.size and string.find(fields.size, "^[0-9]+$") then + local size = tonumber(fields.size) + if size >= 2 and size <= 8 and size ~= meta:get_int("size") then + meta:set_int("size", size) + meta:set_int("dug", 0) + end + end + if fields.enable then meta:set_int("enabled", 1) end + if fields.disable then meta:set_int("enabled", 0) end + if fields.restart then + meta:set_int("dug", 0) + meta:set_int("purge_on", 1) + end + set_quarry_formspec(meta) + set_quarry_demand(meta) +end + +local function quarry_handle_purge(pos) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + local i = 0 + for _,stack in ipairs(inv:get_list("cache")) do + i = i + 1 + if stack then + local item = stack:to_table() + if item then + technic.tube_inject_item(pos, pos, vector.new(0, 1, 0), item) + stack:clear() + inv:set_stack("cache", i, stack) + break + end + end + end + if inv:is_empty("cache") then + meta:set_int("purge_on", 0) + end +end + +local function quarry_run(pos, node) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + -- initialize cache for the case we load an older world + inv:set_size("cache", 12) + -- toss a coin whether we do an automatic purge. Chance 1:200 + local purge_rand = math.random() + if purge_rand <= 0.005 then + meta:set_int("purge_on", 1) + end + + if meta:get_int("enabled") and meta:get_int("HV_EU_input") >= quarry_demand and meta:get_int("purge_on") == 0 then + local pdir = minetest.facedir_to_dir(node.param2) + local qdir = pdir.x == 1 and vector.new(0,0,-1) or + (pdir.z == -1 and vector.new(-1,0,0) or + (pdir.x == -1 and vector.new(0,0,1) or + vector.new(1,0,0))) + local radius = meta:get_int("size") + local diameter = radius*2 + 1 + local startpos = vector.add(vector.add(vector.add(pos, + vector.new(0, quarry_dig_above_nodes, 0)), + pdir), + vector.multiply(qdir, -radius)) + local endpos = vector.add(vector.add(vector.add(startpos, + vector.new(0, -quarry_dig_above_nodes-quarry_max_depth, 0)), + vector.multiply(pdir, diameter-1)), + vector.multiply(qdir, diameter-1)) + local vm = VoxelManip() + local minpos, maxpos = vm:read_from_map(startpos, endpos) + local area = VoxelArea:new({MinEdge=minpos, MaxEdge=maxpos}) + local data = vm:get_data() + local c_air = minetest.get_content_id("air") + local owner = meta:get_string("owner") + local nd = meta:get_int("dug") + while nd ~= diameter*diameter * (quarry_dig_above_nodes+1+quarry_max_depth) do + local ry = math.floor(nd / (diameter*diameter)) + local ndl = nd % (diameter*diameter) + if ry % 2 == 1 then + ndl = diameter*diameter - 1 - ndl + end + local rq = math.floor(ndl / diameter) + local rp = ndl % diameter + if rq % 2 == 1 then rp = diameter - 1 - rp end + local digpos = vector.add(vector.add(vector.add(startpos, + vector.new(0, -ry, 0)), + vector.multiply(pdir, rp)), + vector.multiply(qdir, rq)) + local can_dig = true + if can_dig and minetest.is_protected and minetest.is_protected(digpos, owner) then + can_dig = false + end + local dignode + if can_dig then + dignode = technic.get_or_load_node(digpos) or minetest.get_node(digpos) + local dignodedef = minetest.registered_nodes[dignode.name] or {diggable=false} + if not dignodedef.diggable or (dignodedef.can_dig and not dignodedef.can_dig(digpos, nil)) then + can_dig = false + end + end + + if can_dig then + for ay = startpos.y, digpos.y+1, -1 do + local checkpos = {x=digpos.x, y=ay, z=digpos.z} + local checknode = technic.get_or_load_node(checkpos) or minetest.get_node(checkpos) + if checknode.name ~= "air" then + can_dig = false + break + end + end + end + nd = nd + 1 + if can_dig then + minetest.remove_node(digpos) + local drops = minetest.get_node_drops(dignode.name, "") + for _, dropped_item in ipairs(drops) do + local left = inv:add_item("cache", dropped_item) + while not left:is_empty() do + meta:set_int("purge_on", 1) + quarry_handle_purge(pos) + left = inv:add_item("cache", left) + end + end + break + end + end + if nd == diameter*diameter * (quarry_dig_above_nodes+1+quarry_max_depth) then + -- if a quarry is finished, we enable purge mode + meta:set_int("purge_on", 1) + end + meta:set_int("dug", nd) + else + -- if a quarry is disabled or has no power, we enable purge mode + meta:set_int("purge_on", 1) + end + -- if something triggered a purge, we handle it + if meta:get_int("purge_on") == 1 then + quarry_handle_purge(pos) + end + set_quarry_formspec(meta) + set_quarry_demand(meta) +end + +local function send_move_error(player) + minetest.chat_send_player(player:get_player_name(), + S("Manually taking/removing from cache by hand is not possible. ".. + "If you can't wait, restart or disable the quarry to start automatic purge.")) + return 0 +end + +minetest.register_node("technic:quarry", { + description = S("%s Quarry"):format("HV"), + tiles = {"technic_carbon_steel_block.png", "technic_carbon_steel_block.png", + "technic_carbon_steel_block.png", "technic_carbon_steel_block.png", + "technic_carbon_steel_block.png^default_tool_mesepick.png", "technic_carbon_steel_block.png"}, + inventory_image = minetest.inventorycube("technic_carbon_steel_block.png", + "technic_carbon_steel_block.png^default_tool_mesepick.png", + "technic_carbon_steel_block.png"), + paramtype2 = "facedir", + groups = {cracky=2, tubedevice=1, technic_machine = 1}, + tube = { + connect_sides = {top = 1}, + }, + on_construct = function(pos) + local meta = minetest.get_meta(pos) + meta:set_string("infotext", S("%s Quarry"):format("HV")) + meta:set_int("size", 4) + set_quarry_formspec(meta) + set_quarry_demand(meta) + end, + after_place_node = function(pos, placer, itemstack) + local meta = minetest.get_meta(pos) + meta:set_string("owner", placer:get_player_name()) + pipeworks.scan_for_tube_objects(pos) + end, + can_dig = function(pos,player) + local meta = minetest.get_meta(pos); + local inv = meta:get_inventory() + return inv:is_empty("cache") + end, + after_dig_node = pipeworks.scan_for_tube_objects, + on_receive_fields = quarry_receive_fields, + technic_run = quarry_run, + allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) + return send_move_error(player) + end, + allow_metadata_inventory_put = function(pos, listname, index, stack, player) + return send_move_error(player) + end, + allow_metadata_inventory_take = function(pos, listname, index, stack, player) + return send_move_error(player) + end +}) + +technic.register_machine("HV", "technic:quarry", technic.receiver) diff --git a/technic/machines/HV/solar_array.lua b/technic/machines/HV/solar_array.lua new file mode 100644 index 0000000..414291a --- /dev/null +++ b/technic/machines/HV/solar_array.lua @@ -0,0 +1,14 @@ +-- The high voltage solar array is an assembly of medium voltage arrays. +-- Solar arrays are not able to store large amounts of energy. + +minetest.register_craft({ + output = 'technic:solar_array_hv 1', + recipe = { + {'technic:solar_array_mv', 'technic:solar_array_mv', 'technic:solar_array_mv'}, + {'technic:carbon_plate', 'technic:hv_transformer', 'technic:composite_plate'}, + {'', 'technic:hv_cable0', ''}, + } +}) + +technic.register_solar_array({tier="HV", power=100}) + diff --git a/technic/machines/LV/alloy_furnace.lua b/technic/machines/LV/alloy_furnace.lua new file mode 100644 index 0000000..bdf2f31 --- /dev/null +++ b/technic/machines/LV/alloy_furnace.lua @@ -0,0 +1,14 @@ +-- LV Alloy furnace + +-- FIXME: kpoppel: I'd like to introduce an induction heating element here... +minetest.register_craft({ + output = 'technic:lv_alloy_furnace', + recipe = { + {'default:brick', 'default:brick', 'default:brick'}, + {'default:brick', 'technic:machine_casing', 'default:brick'}, + {'default:brick', 'technic:lv_cable0', 'default:brick'}, + } +}) + +technic.register_alloy_furnace({tier = "LV", speed = 1, demand = {300}}) + diff --git a/technic/machines/LV/battery_box.lua b/technic/machines/LV/battery_box.lua new file mode 100644 index 0000000..429bcd6 --- /dev/null +++ b/technic/machines/LV/battery_box.lua @@ -0,0 +1,19 @@ + +minetest.register_craft({ + output = 'technic:lv_battery_box0', + recipe = { + {'group:wood', 'group:wood', 'group:wood'}, + {'technic:battery', 'technic:machine_casing', 'technic:battery'}, + {'technic:battery', 'technic:lv_cable0', 'technic:battery'}, + } +}) + +technic.register_battery_box({ + tier = "LV", + max_charge = 40000, + charge_rate = 1000, + discharge_rate = 4000, + charge_step = 500, + discharge_step = 800, +}) + diff --git a/technic/machines/LV/cables.lua b/technic/machines/LV/cables.lua new file mode 100644 index 0000000..e18eae1 --- /dev/null +++ b/technic/machines/LV/cables.lua @@ -0,0 +1,14 @@ + +minetest.register_alias("lv_cable", "technic:lv_cable0") + +minetest.register_craft({ + output = 'technic:lv_cable0 6', + recipe = { + {'default:paper', 'default:paper', 'default:paper'}, + {'default:copper_ingot', 'default:copper_ingot', 'default:copper_ingot'}, + {'default:paper', 'default:paper', 'default:paper'}, + } +}) + +technic.register_cable("LV", 2/16) + diff --git a/technic/machines/LV/cnc.lua b/technic/machines/LV/cnc.lua new file mode 100644 index 0000000..dd67e9b --- /dev/null +++ b/technic/machines/LV/cnc.lua @@ -0,0 +1,237 @@ +-- Technic CNC v1.0 by kpoppel +-- Based on the NonCubic Blocks MOD v1.4 by yves_de_beck + +-- Idea: +-- Somehow have a tabbed/paged panel if the number of shapes should expand +-- beyond what is available in the panel today. +-- I could imagine some form of API allowing modders to come with their own node +-- box definitions and easily stuff it in the this machine for production. + +local S = technic.getter + +local shape = {} +local onesize_products = { + slope = 2, + slope_edge = 1, + slope_inner_edge = 1, + pyramid = 2, + spike = 1, + cylinder = 2, + oblate_spheroid = 1, + sphere = 1, + stick = 8, + slope_upsdown = 2, + slope_edge_upsdown = 1, + slope_inner_edge_upsdown = 1, + cylinder_horizontal = 2, + slope_lying = 2, + onecurvededge = 1, + twocurvededge = 1, +} +local twosize_products = { + element_straight = 4, + element_end = 2, + element_cross = 1, + element_t = 1, + element_edge = 2, +} + +local cnc_formspec = + "invsize[9,11;]".. + "label[1,0;"..S("Choose Milling Program:").."]".. + "image_button[1,0.5;1,1;technic_cnc_slope.png;slope; ]".. + "image_button[2,0.5;1,1;technic_cnc_slope_edge.png;slope_edge; ]".. + "image_button[3,0.5;1,1;technic_cnc_slope_inner_edge.png;slope_inner_edge; ]".. + "image_button[4,0.5;1,1;technic_cnc_pyramid.png;pyramid; ]".. + "image_button[5,0.5;1,1;technic_cnc_spike.png;spike; ]".. + "image_button[6,0.5;1,1;technic_cnc_cylinder.png;cylinder; ]".. + "image_button[7,0.5;1,1;technic_cnc_oblate_spheroid.png;oblate_spheroid; ]".. + "image_button[8,0.5;1,1;technic_cnc_stick.png;stick; ]".. + + "image_button[1,1.5;1,1;technic_cnc_slope_upsdwn.png;slope_upsdown; ]".. + "image_button[2,1.5;1,1;technic_cnc_slope_edge_upsdwn.png;slope_edge_upsdown; ]".. + "image_button[3,1.5;1,1;technic_cnc_slope_inner_edge_upsdwn.png;slope_inner_edge_upsdown; ]".. + "image_button[4,1.5;1,1;technic_cnc_cylinder_horizontal.png;cylinder_horizontal; ]".. + "image_button[5,1.5;1,1;technic_cnc_sphere.png;sphere; ]".. + + "image_button[1,2.5;1,1;technic_cnc_slope_lying.png;slope_lying; ]".. + "image_button[2,2.5;1,1;technic_cnc_onecurvededge.png;onecurvededge; ]".. + "image_button[3,2.5;1,1;technic_cnc_twocurvededge.png;twocurvededge; ]".. + + "label[1,3.5;"..S("Slim Elements half / normal height:").."]".. + + "image_button[1,4;1,0.5;technic_cnc_full.png;full; ]".. + "image_button[1,4.5;1,0.5;technic_cnc_half.png;half; ]".. + "image_button[2,4;1,1;technic_cnc_element_straight.png;element_straight; ]".. + "image_button[3,4;1,1;technic_cnc_element_end.png;element_end; ]".. + "image_button[4,4;1,1;technic_cnc_element_cross.png;element_cross; ]".. + "image_button[5,4;1,1;technic_cnc_element_t.png;element_t; ]".. + "image_button[6,4;1,1;technic_cnc_element_edge.png;element_edge; ]".. + + "label[0, 5.5;"..S("In:").."]".. + "list[current_name;src;0.5,5.5;1,1;]".. + "label[4, 5.5;"..S("Out:").."]".. + "list[current_name;dst;5,5.5;4,1;]".. + + "list[current_player;main;0,7;8,4;]".. + "listring[current_name;dst]".. + "listring[current_player;main]".. + "listring[current_name;src]".. + "listring[current_player;main]" + +local size = 1; + +-- The form handler is declared here because we need it in both the inactive and active modes +-- in order to be able to change programs wile it is running. +local function form_handler(pos, formname, fields, sender) + -- REGISTER MILLING PROGRAMS AND OUTPUTS: + ------------------------------------------ + -- Program for half/full size + if fields["full"] then + size = 1 + return + end + + if fields["half"] then + size = 2 + return + end + + -- Resolve the node name and the number of items to make + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + local inputstack = inv:get_stack("src", 1) + local inputname = inputstack:get_name() + local multiplier = 0 + for k, _ in pairs(fields) do + -- Set a multipier for the half/full size capable blocks + if twosize_products[k] ~= nil then + multiplier = size * twosize_products[k] + else + multiplier = onesize_products[k] + end + + if onesize_products[k] ~= nil or twosize_products[k] ~= nil then + meta:set_float( "cnc_multiplier", multiplier) + meta:set_string("cnc_user", sender:get_player_name()) + end + + if onesize_products[k] ~= nil or (twosize_products[k] ~= nil and size==2) then + meta:set_string("cnc_product", inputname .. "_technic_cnc_" .. k) + --print(inputname .. "_technic_cnc_" .. k) + break + end + + if twosize_products[k] ~= nil and size==1 then + meta:set_string("cnc_product", inputname .. "_technic_cnc_" .. k .. "_double") + --print(inputname .. "_technic_cnc_" .. k .. "_double") + break + end + end + return +end + +-- Action code performing the transformation +local run = function(pos, node) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + local eu_input = meta:get_int("LV_EU_input") + local machine_name = S("%s CNC Machine"):format("LV") + local machine_node = "technic:cnc" + local demand = 450 + + local result = meta:get_string("cnc_product") + if inv:is_empty("src") or + (not minetest.registered_nodes[result]) or + (not inv:room_for_item("dst", result)) then + technic.swap_node(pos, machine_node) + meta:set_string("infotext", S("%s Idle"):format(machine_name)) + meta:set_string("cnc_product", "") + meta:set_int("LV_EU_demand", 0) + return + end + + if eu_input < demand then + technic.swap_node(pos, machine_node) + meta:set_string("infotext", S("%s Unpowered"):format(machine_name)) + elseif eu_input >= demand then + technic.swap_node(pos, machine_node.."_active") + meta:set_string("infotext", S("%s Active"):format(machine_name)) + meta:set_int("src_time", meta:get_int("src_time") + 1) + if meta:get_int("src_time") >= 3 then -- 3 ticks per output + meta:set_int("src_time", 0) + srcstack = inv:get_stack("src", 1) + srcstack:take_item() + inv:set_stack("src", 1, srcstack) + inv:add_item("dst", result.." "..meta:get_int("cnc_multiplier")) + end + end + meta:set_int("LV_EU_demand", demand) +end + +-- The actual block inactive state +minetest.register_node("technic:cnc", { + description = S("%s CNC Machine"):format("LV"), + tiles = {"technic_cnc_top.png", "technic_cnc_bottom.png", "technic_cnc_side.png", + "technic_cnc_side.png", "technic_cnc_side.png", "technic_cnc_front.png"}, + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "facedir", + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, + }, + }, + groups = {cracky=2, technic_machine=1}, + legacy_facedir_simple = true, + on_construct = function(pos) + local meta = minetest.get_meta(pos) + meta:set_string("infotext", S("%s CNC Machine"):format("LV")) + meta:set_float("technic_power_machine", 1) + meta:set_string("formspec", cnc_formspec) + local inv = meta:get_inventory() + inv:set_size("src", 1) + inv:set_size("dst", 4) + end, + can_dig = technic.machine_can_dig, + allow_metadata_inventory_put = technic.machine_inventory_put, + allow_metadata_inventory_take = technic.machine_inventory_take, + allow_metadata_inventory_move = technic.machine_inventory_move, + on_receive_fields = form_handler, + technic_run = run, +}) + +-- Active state block +minetest.register_node("technic:cnc_active", { + description = S("%s CNC Machine"):format("LV"), + tiles = {"technic_cnc_top_active.png", "technic_cnc_bottom.png", "technic_cnc_side.png", + "technic_cnc_side.png", "technic_cnc_side.png", "technic_cnc_front_active.png"}, + paramtype2 = "facedir", + drop = "technic:cnc", + groups = {cracky=2, technic_machine=1, not_in_creative_inventory=1}, + legacy_facedir_simple = true, + can_dig = technic.machine_can_dig, + allow_metadata_inventory_put = technic.machine_inventory_put, + allow_metadata_inventory_take = technic.machine_inventory_take, + allow_metadata_inventory_move = technic.machine_inventory_move, + on_receive_fields = form_handler, + technic_run = run, + technic_disabled_machine_name = "technic:cnc", +}) + +technic.register_machine("LV", "technic:cnc", technic.receiver) +technic.register_machine("LV", "technic:cnc_active", technic.receiver) + +------------------------- +-- CNC Machine Recipe +------------------------- +minetest.register_craft({ + output = 'technic:cnc', + recipe = { + {'default:glass', 'technic:diamond_drill_head', 'default:glass'}, + {'technic:control_logic_unit', 'technic:machine_casing', 'technic:motor'}, + {'technic:carbon_steel_ingot', 'technic:lv_cable0', 'technic:carbon_steel_ingot'}, + }, +}) + diff --git a/technic/machines/LV/cnc_api.lua b/technic/machines/LV/cnc_api.lua new file mode 100644 index 0000000..f5aae5c --- /dev/null +++ b/technic/machines/LV/cnc_api.lua @@ -0,0 +1,369 @@ +-- API for the technic CNC machine +-- Again code is adapted from the NonCubic Blocks MOD v1.4 by yves_de_beck + +local S = technic.getter + +technic.cnc = {} + +-- REGISTER NONCUBIC FORMS, CREATE MODELS AND RECIPES: +------------------------------------------------------ + +-- Define slope boxes for the various nodes +------------------------------------------- +technic.cnc.programs = { + { suffix = "technic_cnc_stick", + model = {-0.15, -0.5, -0.15, 0.15, 0.5, 0.15}, + desc = S("Stick") + }, + + { suffix = "technic_cnc_element_end_double", + model = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.5}, + desc = S("Element End Double") + }, + + { suffix = "technic_cnc_element_cross_double", + model = { + {0.3, -0.5, -0.3, 0.5, 0.5, 0.3}, + {-0.3, -0.5, -0.5, 0.3, 0.5, 0.5}, + {-0.5, -0.5, -0.3, -0.3, 0.5, 0.3}}, + desc = S("Element Cross Double") + }, + + { suffix = "technic_cnc_element_t_double", + model = { + {-0.3, -0.5, -0.5, 0.3, 0.5, 0.3}, + {-0.5, -0.5, -0.3, -0.3, 0.5, 0.3}, + {0.3, -0.5, -0.3, 0.5, 0.5, 0.3}}, + desc = S("Element T Double") + }, + + { suffix = "technic_cnc_element_edge_double", + model = { + {-0.3, -0.5, -0.5, 0.3, 0.5, 0.3}, + {-0.5, -0.5, -0.3, -0.3, 0.5, 0.3}}, + desc = S("Element Edge Double") + }, + + { suffix = "technic_cnc_element_straight_double", + model = {-0.3, -0.5, -0.5, 0.3, 0.5, 0.5}, + desc = S("Element Straight Double") + }, + + { suffix = "technic_cnc_element_end", + model = {-0.3, -0.5, -0.3, 0.3, 0, 0.5}, + desc = S("Element End") + }, + + { suffix = "technic_cnc_element_cross", + model = { + {0.3, -0.5, -0.3, 0.5, 0, 0.3}, + {-0.3, -0.5, -0.5, 0.3, 0, 0.5}, + {-0.5, -0.5, -0.3, -0.3, 0, 0.3}}, + desc = S("Element Cross") + }, + + { suffix = "technic_cnc_element_t", + model = { + {-0.3, -0.5, -0.5, 0.3, 0, 0.3}, + {-0.5, -0.5, -0.3, -0.3, 0, 0.3}, + {0.3, -0.5, -0.3, 0.5, 0, 0.3}}, + desc = S("Element T") + }, + + { suffix = "technic_cnc_element_edge", + model = { + {-0.3, -0.5, -0.5, 0.3, 0, 0.3}, + {-0.5, -0.5, -0.3, -0.3, 0, 0.3}}, + desc = S("Element Edge") + }, + + { suffix = "technic_cnc_element_straight", + model = {-0.3, -0.5, -0.5, 0.3, 0, 0.5}, + desc = S("Element Straight") + }, + + { suffix = "technic_cnc_oblate_spheroid", + model = "technic_oblate_spheroid.obj", + desc = S("Oblate spheroid"), + cbox = { + type = "fixed", + fixed = { + { -6/16, 4/16, -6/16, 6/16, 8/16, 6/16 }, + { -8/16, -4/16, -8/16, 8/16, 4/16, 8/16 }, + { -6/16, -8/16, -6/16, 6/16, -4/16, 6/16 } + } + } + }, + + { suffix = "technic_cnc_sphere", + model = "technic_sphere.obj", + desc = S("Sphere") + }, + + { suffix = "technic_cnc_cylinder_horizontal", + model = "technic_cylinder_horizontal.obj", + desc = S("Horizontal Cylinder") + }, + + { suffix = "technic_cnc_cylinder", + model = "technic_cylinder.obj", + desc = S("Cylinder") + }, + + { suffix = "technic_cnc_twocurvededge", + model = "technic_two_curved_edge.obj", + desc = S("Two Curved Edge/Corner Block") + }, + + { suffix = "technic_cnc_onecurvededge", + model = "technic_one_curved_edge.obj", + desc = S("One Curved Edge Block") + }, + + { suffix = "technic_cnc_spike", + model = "technic_pyramid_spike.obj", + desc = S("Spike"), + cbox = { + type = "fixed", + fixed = { + { -2/16, 4/16, -2/16, 2/16, 8/16, 2/16 }, + { -4/16, 0, -4/16, 4/16, 4/16, 4/16 }, + { -6/16, -4/16, -6/16, 6/16, 0, 6/16 }, + { -8/16, -8/16, -8/16, 8/16, -4/16, 8/16 } + } + } + }, + + { suffix = "technic_cnc_pyramid", + model = "technic_pyramid.obj", + desc = S("Pyramid"), + cbox = { + type = "fixed", + fixed = { + { -2/16, -2/16, -2/16, 2/16, 0, 2/16 }, + { -4/16, -4/16, -4/16, 4/16, -2/16, 4/16 }, + { -6/16, -6/16, -6/16, 6/16, -4/16, 6/16 }, + { -8/16, -8/16, -8/16, 8/16, -6/16, 8/16 } + } + } + }, + + { suffix = "technic_cnc_slope_inner_edge_upsdown", + model = "technic_innercorner_upsdown.obj", + desc = S("Slope Upside Down Inner Edge/Corner"), + sbox = { + type = "fixed", + fixed = { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 } + }, + cbox = { + type = "fixed", + fixed = { + { 0.25, -0.25, -0.5, 0.5, -0.5, 0.5 }, + { -0.5, -0.25, 0.25, 0.5, -0.5, 0.5 }, + { 0, 0, -0.5, 0.5, -0.25, 0.5 }, + { -0.5, 0, 0, 0.5, -0.25, 0.5 }, + { -0.25, 0.25, -0.5, 0.5, 0, -0.25 }, + { -0.5, 0.25, -0.25, 0.5, 0, 0.5 }, + { -0.5, 0.5, -0.5, 0.5, 0.25, 0.5 } + } + } + }, + + { suffix = "technic_cnc_slope_edge_upsdown", + model = "technic_outercorner_upsdown.obj", + desc = S("Slope Upside Down Outer Edge/Corner"), + cbox = { + type = "fixed", + fixed = { + { -8/16, 8/16, -8/16, 8/16, 4/16, 8/16 }, + { -4/16, 4/16, -4/16, 8/16, 0, 8/16 }, + { 0, 0, 0, 8/16, -4/16, 8/16 }, + { 4/16, -4/16, 4/16, 8/16, -8/16, 8/16 } + } + } + }, + + { suffix = "technic_cnc_slope_inner_edge", + model = "technic_innercorner.obj", + desc = S("Slope Inner Edge/Corner"), + sbox = { + type = "fixed", + fixed = { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 } + }, + cbox = { + type = "fixed", + fixed = { + { -0.5, -0.5, -0.5, 0.5, -0.25, 0.5 }, + { -0.5, -0.25, -0.25, 0.5, 0, 0.5 }, + { -0.25, -0.25, -0.5, 0.5, 0, -0.25 }, + { -0.5, 0, 0, 0.5, 0.25, 0.5 }, + { 0, 0, -0.5, 0.5, 0.25, 0.5 }, + { -0.5, 0.25, 0.25, 0.5, 0.5, 0.5 }, + { 0.25, 0.25, -0.5, 0.5, 0.5, 0.5 } + } + } + }, + + { suffix = "technic_cnc_slope_edge", + model = "technic_outercorner.obj", + desc = S("Slope Outer Edge/Corner"), + cbox = { + type = "fixed", + fixed = { + { 4/16, 4/16, 4/16, 8/16, 8/16, 8/16 }, + { 0, 0, 0, 8/16, 4/16, 8/16 }, + { -4/16, -4/16, -4/16, 8/16, 0, 8/16 }, + { -8/16, -8/16, -8/16, 8/16, -4/16, 8/16 } + } + } + }, + + { suffix = "technic_cnc_slope_upsdown", + model = "technic_slope_upsdown.obj", + desc = S("Slope Upside Down"), + cbox = { + type = "fixed", + fixed = { + { -8/16, 8/16, -8/16, 8/16, 4/16, 8/16 }, + { -8/16, 4/16, -4/16, 8/16, 0, 8/16 }, + { -8/16, 0, 0, 8/16, -4/16, 8/16 }, + { -8/16, -4/16, 4/16, 8/16, -8/16, 8/16 } + } + } + }, + + { suffix = "technic_cnc_slope_lying", + model = "technic_slope_horizontal.obj", + desc = S("Slope Lying"), + cbox = { + type = "fixed", + fixed = { + { 4/16, -8/16, 4/16, 8/16, 8/16, 8/16 }, + { 0, -8/16, 0, 4/16, 8/16, 8/16 }, + { -4/16, -8/16, -4/16, 0, 8/16, 8/16 }, + { -8/16, -8/16, -8/16, -4/16, 8/16, 8/16 } + } + } + }, + + { suffix = "technic_cnc_slope", + model = "technic_slope.obj", + desc = S("Slope"), + cbox = { + type = "fixed", + fixed = { + { -8/16, 4/16, 4/16, 8/16, 8/16, 8/16 }, + { -8/16, 0, 0, 8/16, 4/16, 8/16 }, + { -8/16, -4/16, -4/16, 8/16, 0, 8/16 }, + { -8/16, -8/16, -8/16, 8/16, -4/16, 8/16 } + } + } + }, + +} + +-- Allow disabling certain programs for some node. Default is allowing all types for all nodes +technic.cnc.programs_disable = { + -- ["default:brick"] = {"technic_cnc_stick"}, -- Example: Disallow the stick for brick + -- ... + ["default:dirt"] = {"technic_cnc_oblate_spheroid", "technic_cnc_slope_upsdown", "technic_cnc_edge", + "technic_cnc_inner_edge", "technic_cnc_slope_edge_upsdown", + "technic_cnc_slope_inner_edge_upsdown", "technic_cnc_stick", + "technic_cnc_cylinder_horizontal"} +} + +-- Generic function for registering all the different node types +function technic.cnc.register_program(recipeitem, suffix, model, groups, images, description, cbox, sbox) + + local dtype + local nodeboxdef + local meshdef + + if type(model) ~= "string" then -- assume a nodebox if it's a table or function call + dtype = "nodebox" + nodeboxdef = { + type = "fixed", + fixed = model + } + else + dtype = "mesh" + meshdef = model + end + + if cbox and not sbox then sbox = cbox end + + minetest.register_node(":"..recipeitem.."_"..suffix, { + description = description, + drawtype = dtype, + node_box = nodeboxdef, + mesh = meshdef, + tiles = images, + paramtype = "light", + paramtype2 = "facedir", + walkable = true, + groups = groups, + selection_box = sbox, + collision_box = cbox + }) +end + +-- function to iterate over all the programs the CNC machine knows +function technic.cnc.register_all(recipeitem, groups, images, description) + for _, data in ipairs(technic.cnc.programs) do + -- Disable node creation for disabled node types for some material + local do_register = true + if technic.cnc.programs_disable[recipeitem] ~= nil then + for __, disable in ipairs(technic.cnc.programs_disable[recipeitem]) do + if disable == data.suffix then + do_register = false + end + end + end + -- Create the node if it passes the test + if do_register then + technic.cnc.register_program(recipeitem, data.suffix, data.model, + groups, images, description.." "..data.desc, data.cbox, data.sbox) + end + end +end + + +-- REGISTER NEW TECHNIC_CNC_API's PART 2: technic.cnc..register_element_end(subname, recipeitem, groups, images, desc_element_xyz) +----------------------------------------------------------------------------------------------------------------------- +function technic.cnc.register_slope_edge_etc(recipeitem, groups, images, desc_slope, desc_slope_lying, desc_slope_upsdown, desc_slope_edge, desc_slope_inner_edge, desc_slope_upsdwn_edge, desc_slope_upsdwn_inner_edge, desc_pyramid, desc_spike, desc_onecurvededge, desc_twocurvededge, desc_cylinder, desc_cylinder_horizontal, desc_spheroid, desc_element_straight, desc_element_edge, desc_element_t, desc_element_cross, desc_element_end) + + technic.cnc.register_slope(recipeitem, groups, images, desc_slope) + technic.cnc.register_slope_lying(recipeitem, groups, images, desc_slope_lying) + technic.cnc.register_slope_upsdown(recipeitem, groups, images, desc_slope_upsdown) + technic.cnc.register_slope_edge(recipeitem, groups, images, desc_slope_edge) + technic.cnc.register_slope_inner_edge(recipeitem, groups, images, desc_slope_inner_edge) + technic.cnc.register_slope_edge_upsdown(recipeitem, groups, images, desc_slope_upsdwn_edge) + technic.cnc.register_slope_inner_edge_upsdown(recipeitem, groups, images, desc_slope_upsdwn_inner_edge) + technic.cnc.register_pyramid(recipeitem, groups, images, desc_pyramid) + technic.cnc.register_spike(recipeitem, groups, images, desc_spike) + technic.cnc.register_onecurvededge(recipeitem, groups, images, desc_onecurvededge) + technic.cnc.register_twocurvededge(recipeitem, groups, images, desc_twocurvededge) + technic.cnc.register_cylinder(recipeitem, groups, images, desc_cylinder) + technic.cnc.register_cylinder_horizontal(recipeitem, groups, images, desc_cylinder_horizontal) + technic.cnc.register_spheroid(recipeitem, groups, images, desc_spheroid) + technic.cnc.register_element_straight(recipeitem, groups, images, desc_element_straight) + technic.cnc.register_element_edge(recipeitem, groups, images, desc_element_edge) + technic.cnc.register_element_t(recipeitem, groups, images, desc_element_t) + technic.cnc.register_element_cross(recipeitem, groups, images, desc_element_cross) + technic.cnc.register_element_end(recipeitem, groups, images, desc_element_end) +end + +-- REGISTER STICKS: noncubic.register_xyz(recipeitem, groups, images, desc_element_xyz) +------------------------------------------------------------------------------------------------------------ +function technic.cnc.register_stick_etc(recipeitem, groups, images, desc_stick) + technic.cnc.register_stick(recipeitem, groups, images, desc_stick) +end + +function technic.cnc.register_elements(recipeitem, groups, images, desc_element_straight_double, desc_element_edge_double, desc_element_t_double, desc_element_cross_double, desc_element_end_double) + technic.cnc.register_element_straight_double(recipeitem, groups, images, desc_element_straight_double) + technic.cnc.register_element_edge_double(recipeitem, groups, images, desc_element_edge_double) + technic.cnc.register_element_t_double(recipeitem, groups, images, desc_element_t_double) + technic.cnc.register_element_cross_double(recipeitem, groups, images, desc_element_cross_double) + technic.cnc.register_element_end_double(recipeitem, groups, images, desc_element_end_double) +end + diff --git a/technic/machines/LV/cnc_nodes.lua b/technic/machines/LV/cnc_nodes.lua new file mode 100644 index 0000000..05be9af --- /dev/null +++ b/technic/machines/LV/cnc_nodes.lua @@ -0,0 +1,91 @@ +-- REGISTER MATERIALS AND PROPERTIES FOR NONCUBIC ELEMENTS: +----------------------------------------------------------- + +local S = technic.getter + +-- DIRT +------- +technic.cnc.register_all("default:dirt", + {snappy=2,choppy=2,oddly_breakable_by_hand=3,not_in_creative_inventory=1}, + {"default_grass.png", "default_dirt.png", "default_grass.png"}, + S("Dirt")) +-- WOOD +------- +technic.cnc.register_all("default:wood", + {snappy=2, choppy=2, oddly_breakable_by_hand=2, not_in_creative_inventory=1}, + {"default_wood.png"}, + S("Wooden")) +-- STONE +-------- +technic.cnc.register_all("default:stone", + {cracky=3, not_in_creative_inventory=1}, + {"default_stone.png"}, + S("Stone")) +-- COBBLE +--------- +technic.cnc.register_all("default:cobble", + {cracky=3, not_in_creative_inventory=1}, + {"default_cobble.png"}, + S("Cobble")) +-- BRICK +-------- +technic.cnc.register_all("default:brick", + {cracky=3, not_in_creative_inventory=1}, + {"default_brick.png"}, + S("Brick")) + +-- SANDSTONE +------------ +technic.cnc.register_all("default:sandstone", + {crumbly=2, cracky=3, not_in_creative_inventory=1}, + {"default_sandstone.png"}, + S("Sandstone")) + +-- LEAVES +--------- +technic.cnc.register_all("default:leaves", + {snappy=2, choppy=2, oddly_breakable_by_hand=3, not_in_creative_inventory=1}, + {"default_leaves.png"}, + S("Leaves")) +-- TREE +------- +technic.cnc.register_all("default:tree", + {snappy=1, choppy=2, oddly_breakable_by_hand=2, flammable=3, wood=1, not_in_creative_inventory=1}, + {"default_tree.png"}, + S("Tree")) + +-- WROUGHT IRON +--------------- +technic.cnc.register_all("default:steelblock", + {cracky=1, level=2, not_in_creative_inventory=1}, + {"technic_wrought_iron_block.png"}, + S("Wrought Iron")) + +-- Bronze +-------- +technic.cnc.register_all("default:bronzeblock", + {cracky=1, level=2, not_in_creative_inventory=1}, + {"default_bronze_block.png"}, + S("Bronze")) + +-- Stainless Steel +-------- +technic.cnc.register_all("technic:stainless_steel_block", + {cracky=1, level=2, not_in_creative_inventory=1}, + {"technic_stainless_steel_block.png"}, + S("Stainless Steel")) + +-- Marble +------------ +technic.cnc.register_all("technic:marble", + {cracky=3, not_in_creative_inventory=1}, + {"technic_marble.png"}, + S("Marble")) + +-- Granite +------------ +technic.cnc.register_all("technic:granite", + {cracky=1, not_in_creative_inventory=1}, + {"technic_granite.png"}, + S("Granite")) + diff --git a/technic/machines/LV/compressor.lua b/technic/machines/LV/compressor.lua new file mode 100644 index 0000000..e2bde40 --- /dev/null +++ b/technic/machines/LV/compressor.lua @@ -0,0 +1,13 @@ + +minetest.register_alias("compressor", "technic:lv_compressor") + +minetest.register_craft({ + output = 'technic:lv_compressor', + recipe = { + {'default:stone', 'technic:motor', 'default:stone'}, + {'mesecons:piston', 'technic:machine_casing', 'mesecons:piston'}, + {'technic:fine_silver_wire', 'technic:lv_cable0', 'technic:fine_silver_wire'}, + } +}) + +technic.register_compressor({tier = "LV", demand = {300}, speed = 1}) diff --git a/technic/machines/LV/electric_furnace.lua b/technic/machines/LV/electric_furnace.lua new file mode 100644 index 0000000..cc4daff --- /dev/null +++ b/technic/machines/LV/electric_furnace.lua @@ -0,0 +1,16 @@ +-- LV Electric Furnace +-- This is a faster version of the stone furnace which runs on EUs + +-- FIXME: kpoppel I'd like to introduce an induction heating element here also +minetest.register_craft({ + output = 'technic:electric_furnace', + recipe = { + {'default:cobble', 'default:cobble', 'default:cobble'}, + {'default:cobble', 'technic:machine_casing', 'default:cobble'}, + {'default:cobble', 'technic:lv_cable0', 'default:cobble'}, + } +}) + +technic.register_electric_furnace({tier="LV", demand={300}, speed = 2}) + + diff --git a/technic/machines/LV/extractor.lua b/technic/machines/LV/extractor.lua new file mode 100644 index 0000000..363d2e3 --- /dev/null +++ b/technic/machines/LV/extractor.lua @@ -0,0 +1,13 @@ + +minetest.register_alias("extractor", "technic:lv_extractor") + +minetest.register_craft({ + output = 'technic:lv_extractor', + recipe = { + {'technic:treetap', 'technic:motor', 'technic:treetap'}, + {'technic:treetap', 'technic:machine_casing', 'technic:treetap'}, + {'', 'technic:lv_cable0', ''}, + } +}) + +technic.register_extractor({tier = "LV", demand = {300}, speed = 1}) diff --git a/technic/machines/LV/generator.lua b/technic/machines/LV/generator.lua new file mode 100644 index 0000000..999dbc5 --- /dev/null +++ b/technic/machines/LV/generator.lua @@ -0,0 +1,18 @@ +-- The electric generator. +-- A simple device to get started on the electric machines. +-- Inefficient and expensive in fuel (200EU per tick) +-- Also only allows for LV machinery to run. + +minetest.register_alias("lv_generator", "technic:lv_generator") + +minetest.register_craft({ + output = 'technic:lv_generator', + recipe = { + {'default:stone', 'default:furnace', 'default:stone'}, + {'default:stone', 'technic:machine_casing', 'default:stone'}, + {'default:stone', 'technic:lv_cable0', 'default:stone'}, + } +}) + +technic.register_generator({tier="LV", supply=200}) + diff --git a/technic/machines/LV/geothermal.lua b/technic/machines/LV/geothermal.lua new file mode 100644 index 0000000..e88d3c9 --- /dev/null +++ b/technic/machines/LV/geothermal.lua @@ -0,0 +1,111 @@ +-- A geothermal EU generator +-- Using hot lava and water this device can create energy from steam +-- The machine is only producing LV EUs and can thus not drive more advanced equipment +-- The output is a little more than the coal burning generator (max 300EUs) + +minetest.register_alias("geothermal", "technic:geothermal") + +local S = technic.getter + +minetest.register_craft({ + output = 'technic:geothermal', + recipe = { + {'technic:granite', 'default:diamond', 'technic:granite'}, + {'technic:fine_copper_wire', 'technic:machine_casing', 'technic:fine_copper_wire'}, + {'technic:granite', 'technic:lv_cable0', 'technic:granite'}, + } +}) + +minetest.register_craftitem("technic:geothermal", { + description = S("Geothermal %s Generator"):format("LV"), +}) + +local check_node_around = function(pos) + local node = minetest.get_node(pos) + if node.name == "default:water_source" or node.name == "default:water_flowing" then return 1 end + if node.name == "default:lava_source" or node.name == "default:lava_flowing" then return 2 end + return 0 +end + +local run = function(pos, node) + local meta = minetest.get_meta(pos) + local water_nodes = 0 + local lava_nodes = 0 + local production_level = 0 + local eu_supply = 0 + + -- Correct positioning is water on one side and lava on the other. + -- The two cannot be adjacent because the lava the turns into obsidian or rock. + -- To get to 100% production stack the water and lava one extra block down as well: + -- WGL (W=Water, L=Lava, G=the generator, |=an LV cable) + -- W|L + + local positions = { + {x=pos.x+1, y=pos.y, z=pos.z}, + {x=pos.x+1, y=pos.y-1, z=pos.z}, + {x=pos.x-1, y=pos.y, z=pos.z}, + {x=pos.x-1, y=pos.y-1, z=pos.z}, + {x=pos.x, y=pos.y, z=pos.z+1}, + {x=pos.x, y=pos.y-1, z=pos.z+1}, + {x=pos.x, y=pos.y, z=pos.z-1}, + {x=pos.x, y=pos.y-1, z=pos.z-1}, + } + for _, p in pairs(positions) do + local check = check_node_around(p) + if check == 1 then water_nodes = water_nodes + 1 end + if check == 2 then lava_nodes = lava_nodes + 1 end + end + + if water_nodes == 1 and lava_nodes == 1 then production_level = 25; eu_supply = 50 end + if water_nodes == 2 and lava_nodes == 1 then production_level = 50; eu_supply = 100 end + if water_nodes == 1 and lava_nodes == 2 then production_level = 75; eu_supply = 200 end + if water_nodes == 2 and lava_nodes == 2 then production_level = 100; eu_supply = 300 end + + if production_level > 0 then + meta:set_int("LV_EU_supply", eu_supply) + end + + meta:set_string("infotext", + S("Geothermal %s Generator"):format("LV").." ("..production_level.."%)") + + if production_level > 0 and minetest.get_node(pos).name == "technic:geothermal" then + technic.swap_node (pos, "technic:geothermal_active") + return + end + if production_level == 0 then + technic.swap_node(pos, "technic:geothermal") + meta:set_int("LV_EU_supply", 0) + end +end + +minetest.register_node("technic:geothermal", { + description = S("Geothermal %s Generator"):format("LV"), + tiles = {"technic_geothermal_top.png", "technic_machine_bottom.png", "technic_geothermal_side.png", + "technic_geothermal_side.png", "technic_geothermal_side.png", "technic_geothermal_side.png"}, + paramtype2 = "facedir", + groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2, technic_machine=1}, + legacy_facedir_simple = true, + sounds = default.node_sound_wood_defaults(), + on_construct = function(pos) + local meta = minetest.get_meta(pos) + meta:set_string("infotext", S("Geothermal %s Generator"):format("LV")) + meta:set_int("LV_EU_supply", 0) + end, + technic_run = run, +}) + +minetest.register_node("technic:geothermal_active", { + description = S("Geothermal %s Generator"):format("LV"), + tiles = {"technic_geothermal_top_active.png", "technic_machine_bottom.png", "technic_geothermal_side.png", + "technic_geothermal_side.png", "technic_geothermal_side.png", "technic_geothermal_side.png"}, + paramtype2 = "facedir", + groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2, not_in_creative_inventory=1}, + legacy_facedir_simple = true, + sounds = default.node_sound_wood_defaults(), + drop = "technic:geothermal", + technic_run = run, +}) + +technic.register_machine("LV", "technic:geothermal", technic.producer) +technic.register_machine("LV", "technic:geothermal_active", technic.producer) + diff --git a/technic/machines/LV/grinder.lua b/technic/machines/LV/grinder.lua new file mode 100644 index 0000000..da9ea29 --- /dev/null +++ b/technic/machines/LV/grinder.lua @@ -0,0 +1,13 @@ + +minetest.register_alias("grinder", "technic:lv_grinder") +minetest.register_craft({ + output = 'technic:lv_grinder', + recipe = { + {'default:desert_stone', 'default:diamond', 'default:desert_stone'}, + {'default:desert_stone', 'technic:machine_casing', 'default:desert_stone'}, + {'technic:granite', 'technic:lv_cable0', 'technic:granite'}, + } +}) + +technic.register_grinder({tier="LV", demand={200}, speed=1}) + diff --git a/technic/machines/LV/init.lua b/technic/machines/LV/init.lua new file mode 100644 index 0000000..30523c9 --- /dev/null +++ b/technic/machines/LV/init.lua @@ -0,0 +1,29 @@ + +technic.register_tier("LV", "Low Voltage") + +local path = technic.modpath.."/machines/LV" + +-- Wiring stuff +dofile(path.."/cables.lua") +dofile(path.."/battery_box.lua") + +-- Generators +dofile(path.."/solar_panel.lua") +dofile(path.."/solar_array.lua") +dofile(path.."/geothermal.lua") +dofile(path.."/water_mill.lua") +dofile(path.."/generator.lua") + +-- Machines +dofile(path.."/alloy_furnace.lua") +dofile(path.."/electric_furnace.lua") +dofile(path.."/grinder.lua") +dofile(path.."/extractor.lua") +dofile(path.."/compressor.lua") + +dofile(path.."/music_player.lua") + +dofile(path.."/cnc.lua") +dofile(path.."/cnc_api.lua") +dofile(path.."/cnc_nodes.lua") + diff --git a/technic/machines/LV/music_player.lua b/technic/machines/LV/music_player.lua new file mode 100644 index 0000000..dc7e2d0 --- /dev/null +++ b/technic/machines/LV/music_player.lua @@ -0,0 +1,130 @@ +-- LV Music player. +-- The player can play music. But it is high ampage! + +local S = technic.getter + +minetest.register_alias("music_player", "technic:music_player") +minetest.register_craft({ + output = 'technic:music_player', + recipe = { + {'technic:chromium_ingot', 'default:diamond', 'technic:chromium_ingot'}, + {'default:diamond', 'technic:machine_casing', 'default:diamond'}, + {'default:mossycobble', 'technic:lv_cable0', 'default:mossycobble'}, + } +}) + +local music_handles = {} + +local function play_track(pos, track) + return minetest.sound_play("technic_track"..tostring(track), + {pos = pos, gain = 1.0, loop = true, max_hear_distance = 72,}) +end + +local run = function(pos, node) + local meta = minetest.get_meta(pos) + local eu_input = meta:get_int("LV_EU_input") + local machine_name = S("%s Music Player"):format("LV") + local machine_node = "technic:music_player" + local demand = 150 + + local current_track = meta:get_int("current_track") + local pos_hash = minetest.hash_node_position(pos) + local music_handle = music_handles[pos_hash] + + -- Setup meta data if it does not exist. + if not eu_input then + meta:set_int("LV_EU_demand", demand) + meta:set_int("LV_EU_input", 0) + return + end + + if meta:get_int("active") == 0 then + meta:set_string("infotext", S("%s Idle"):format(machine_name)) + meta:set_int("LV_EU_demand", 0) + return + end + + if eu_input < demand then + meta:set_string("infotext", S("%s Unpowered"):format(machine_name)) + if music_handle then + minetest.sound_stop(music_handle) + music_handle = nil + end + elseif eu_input >= demand then + meta:set_string("infotext", S("%s Active"):format(machine_name)) + if not music_handle then + music_handle = play_track(pos, current_track) + end + end + music_handles[pos_hash] = music_handle + meta:set_int("LV_EU_demand", demand) +end + +local function stop_player(pos, node) + local pos_hash = minetest.hash_node_position(pos) + local music_handle = music_handles[pos_hash] + if music_handle then + minetest.sound_stop(music_handle) + music_handles[pos_hash] = nil + end +end + +local function set_display(meta) + meta:set_string("formspec", + "size[4,4.5]".. + "item_image[0,0;1,1;technic:music_player]".. + "label[1,0;"..S("%s Music Player"):format("LV").."]".. + "button[0,1;1,1;track1;1]".. + "button[1,1;1,1;track2;2]".. + "button[2,1;1,1;track3;3]".. + "button[0,2;1,1;track4;4]".. + "button[1,2;1,1;track5;5]".. + "button[2,2;1,1;track6;6]".. + "button[0,3;1,1;track7;7]".. + "button[1,3;1,1;track8;8]".. + "button[2,3;1,1;track9;9]".. + "button[3,1;1,1;stop;Stop]".. + "label[0,4;"..minetest.formspec_escape( + meta:get_int("active") == 0 and + S("Stopped") or + S("Current track %s"):format(meta:get_int("current_track"))).."]") +end + +minetest.register_node("technic:music_player", { + description = S("%s Music Player"):format("LV"), + tiles = {"technic_music_player_top.png", "technic_machine_bottom.png", "technic_music_player_side.png", + "technic_music_player_side.png", "technic_music_player_side.png", "technic_music_player_side.png"}, + groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2, technic_machine=1}, + sounds = default.node_sound_wood_defaults(), + on_construct = function(pos) + local meta = minetest.get_meta(pos) + meta:set_string("infotext", S("%s Music Player"):format("LV")) + set_display(meta) + end, + on_receive_fields = function(pos, formanme, fields, sender) + local new_track = nil + if fields.stop then new_track = 0 end + if fields.track1 then new_track = 1 end + if fields.track2 then new_track = 2 end + if fields.track3 then new_track = 3 end + if fields.track4 then new_track = 4 end + if fields.track5 then new_track = 5 end + if fields.track6 then new_track = 6 end + if fields.track7 then new_track = 7 end + if fields.track8 then new_track = 8 end + if fields.track9 then new_track = 9 end + if new_track then + stop_player(pos) + local meta = minetest.get_meta(pos) + meta:set_int("active", new_track == 0 and 0 or 1) + meta:set_int("current_track", new_track) + set_display(meta) + end + end, + on_destruct = stop_player, + technic_run = run, + technic_on_disable = stop_player, +}) + +technic.register_machine("LV", "technic:music_player", technic.receiver) + diff --git a/technic/machines/LV/solar_array.lua b/technic/machines/LV/solar_array.lua new file mode 100644 index 0000000..4d2c3b3 --- /dev/null +++ b/technic/machines/LV/solar_array.lua @@ -0,0 +1,18 @@ +-- The solar array is an assembly of panels into a powerful array +-- The assembly can deliver more energy than the individual panel because +-- of the transformer unit which converts the panel output variations into +-- a stable supply. +-- Solar arrays are not able to store large amounts of energy. +-- The LV arrays are used to make medium voltage arrays. + +minetest.register_craft({ + output = 'technic:solar_array_lv 1', + recipe = { + {'technic:solar_panel', 'technic:solar_panel', 'technic:solar_panel'}, + {'technic:carbon_steel_ingot', 'technic:lv_transformer', 'technic:carbon_steel_ingot'}, + {'', 'technic:lv_cable0', ''}, + } +}) + +technic.register_solar_array({tier="LV", power=10}) + diff --git a/technic/machines/LV/solar_panel.lua b/technic/machines/LV/solar_panel.lua new file mode 100644 index 0000000..41dff95 --- /dev/null +++ b/technic/machines/LV/solar_panel.lua @@ -0,0 +1,67 @@ +-- Solar panels are the building blocks of LV solar arrays +-- They can however also be used separately but with reduced efficiency due to the missing transformer. +-- Individual panels are less efficient than when the panels are combined into full arrays. + +local S = technic.getter + +local run = function(pos, node) + -- The action here is to make the solar panel prodice power + -- Power is dependent on the light level and the height above ground + -- There are many ways to cheat by using other light sources like lamps. + -- As there is no way to determine if light is sunlight that is just a shame. + -- To take care of some of it solar panels do not work outside daylight hours or if + -- built below 0m + local pos1 = {x=pos.x, y=pos.y+1, z=pos.z} + local machine_name = S("Small Solar %s Generator"):format("LV") + + local light = minetest.get_node_light(pos1, nil) + local time_of_day = minetest.get_timeofday() + local meta = minetest.get_meta(pos) + if light == nil then light = 0 end + -- turn on panel only during day time and if sufficient light + -- I know this is counter intuitive when cheating by using other light sources underground. + if light >= 12 and time_of_day >= 0.24 and time_of_day <= 0.76 and pos.y > -10 then + local charge_to_give = math.floor((light + pos1.y) * 3) + charge_to_give = math.max(charge_to_give, 0) + charge_to_give = math.min(charge_to_give, 200) + meta:set_string("infotext", S("@1 Active (@2 EU)", machine_name, technic.prettynum(charge_to_give))) + meta:set_int("LV_EU_supply", charge_to_give) + else + meta:set_string("infotext", S("%s Idle"):format(machine_name)) + meta:set_int("LV_EU_supply", 0) + end +end + +minetest.register_node("technic:solar_panel", { + tiles = {"technic_solar_panel_top.png", "technic_solar_panel_bottom.png", "technic_solar_panel_side.png", + "technic_solar_panel_side.png", "technic_solar_panel_side.png", "technic_solar_panel_side.png"}, + groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2, technic_machine=1}, + sounds = default.node_sound_wood_defaults(), + description = S("Small Solar %s Generator"):format("LV"), + active = false, + drawtype = "nodebox", + paramtype = "light", + is_ground_content = true, + node_box = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, + }, + on_construct = function(pos) + local meta = minetest.get_meta(pos) + meta:set_int("LV_EU_supply", 0) + meta:set_string("infotext", S("Small Solar %s Generator"):format("LV")) + end, + technic_run = run, +}) + +minetest.register_craft({ + output = 'technic:solar_panel', + recipe = { + {'technic:doped_silicon_wafer', 'technic:doped_silicon_wafer', 'technic:doped_silicon_wafer'}, + {'technic:fine_silver_wire', 'technic:lv_cable0', 'mesecons_materials:glue'}, + + } +}) + +technic.register_machine("LV", "technic:solar_panel", technic.producer) + diff --git a/technic/machines/LV/water_mill.lua b/technic/machines/LV/water_mill.lua new file mode 100644 index 0000000..9088d1d --- /dev/null +++ b/technic/machines/LV/water_mill.lua @@ -0,0 +1,102 @@ +-- A water mill produces LV EUs by exploiting flowing water across it +-- It is a LV EU supplyer and fairly low yield (max 120EUs) +-- It is a little under half as good as the thermal generator. + +local S = technic.getter + +minetest.register_alias("water_mill", "technic:water_mill") + +minetest.register_craft({ + output = 'technic:water_mill', + recipe = { + {'technic:marble', 'default:diamond', 'technic:marble'}, + {'group:wood', 'technic:machine_casing', 'group:wood'}, + {'technic:marble', 'technic:lv_cable0', 'technic:marble'}, + } +}) + +local function check_node_around_mill(pos) + local node = minetest.get_node(pos) + if node.name == "default:water_flowing" or + node.name == "default:water_source" then + return true + end + return false +end + +local run = function(pos, node) + local meta = minetest.get_meta(pos) + local water_nodes = 0 + local lava_nodes = 0 + local production_level = 0 + local eu_supply = 0 + + local positions = { + {x=pos.x+1, y=pos.y, z=pos.z}, + {x=pos.x-1, y=pos.y, z=pos.z}, + {x=pos.x, y=pos.y, z=pos.z+1}, + {x=pos.x, y=pos.y, z=pos.z-1}, + } + + for _, p in pairs(positions) do + local check = check_node_around_mill(p) + if check then + water_nodes = water_nodes + 1 + end + end + + production_level = 25 * water_nodes + eu_supply = 30 * water_nodes + + if production_level > 0 then + meta:set_int("LV_EU_supply", eu_supply) + end + + meta:set_string("infotext", + S("Hydro %s Generator"):format("LV").." ("..production_level.."%)") + + if production_level > 0 and + minetest.get_node(pos).name == "technic:water_mill" then + technic.swap_node (pos, "technic:water_mill_active") + meta:set_int("LV_EU_supply", 0) + return + end + if production_level == 0 then + technic.swap_node(pos, "technic:water_mill") + end +end + +minetest.register_node("technic:water_mill", { + description = S("Hydro %s Generator"):format("LV"), + tiles = {"technic_water_mill_top.png", "technic_machine_bottom.png", + "technic_water_mill_side.png", "technic_water_mill_side.png", + "technic_water_mill_side.png", "technic_water_mill_side.png"}, + paramtype2 = "facedir", + groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2, technic_machine=1}, + legacy_facedir_simple = true, + sounds = default.node_sound_wood_defaults(), + on_construct = function(pos) + local meta = minetest.get_meta(pos) + meta:set_string("infotext", S("Hydro %s Generator"):format("LV")) + meta:set_int("LV_EU_supply", 0) + end, + technic_run = run, +}) + +minetest.register_node("technic:water_mill_active", { + description = S("Hydro %s Generator"):format("LV"), + tiles = {"technic_water_mill_top_active.png", "technic_machine_bottom.png", + "technic_water_mill_side.png", "technic_water_mill_side.png", + "technic_water_mill_side.png", "technic_water_mill_side.png"}, + paramtype2 = "facedir", + groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2, technic_machine=1, not_in_creative_inventory=1}, + legacy_facedir_simple = true, + sounds = default.node_sound_wood_defaults(), + drop = "technic:water_mill", + technic_run = run, + technic_disabled_machine_name = "technic:water_mill", +}) + +technic.register_machine("LV", "technic:water_mill", technic.producer) +technic.register_machine("LV", "technic:water_mill_active", technic.producer) + diff --git a/technic/machines/MV/alloy_furnace.lua b/technic/machines/MV/alloy_furnace.lua new file mode 100644 index 0000000..a1918fd --- /dev/null +++ b/technic/machines/MV/alloy_furnace.lua @@ -0,0 +1,14 @@ +-- MV alloy furnace + +minetest.register_craft({ + output = 'technic:mv_alloy_furnace', + recipe = { + {'technic:stainless_steel_ingot', 'technic:lv_alloy_furnace', 'technic:stainless_steel_ingot'}, + {'pipeworks:tube_1', 'technic:mv_transformer', 'pipeworks:tube_1'}, + {'technic:stainless_steel_ingot', 'technic:mv_cable0', 'technic:stainless_steel_ingot'}, + } +}) + + +technic.register_alloy_furnace({tier = "MV", speed = 1.5, upgrade = 1, tube = 1, demand = {3000, 2000, 1000}}) + diff --git a/technic/machines/MV/battery_box.lua b/technic/machines/MV/battery_box.lua new file mode 100644 index 0000000..45437c1 --- /dev/null +++ b/technic/machines/MV/battery_box.lua @@ -0,0 +1,22 @@ +-- MV Battery box + +minetest.register_craft({ + output = 'technic:mv_battery_box0', + recipe = { + {'technic:lv_battery_box0', 'technic:lv_battery_box0', 'technic:lv_battery_box0'}, + {'technic:lv_battery_box0', 'technic:mv_transformer', 'technic:lv_battery_box0'}, + {'', 'technic:mv_cable0', ''}, + } +}) + +technic.register_battery_box({ + tier = "MV", + max_charge = 200000, + charge_rate = 20000, + discharge_rate = 80000, + charge_step = 2000, + discharge_step = 8000, + upgrade = 1, + tube = 1, +}) + diff --git a/technic/machines/MV/cables.lua b/technic/machines/MV/cables.lua new file mode 100644 index 0000000..b1a34c8 --- /dev/null +++ b/technic/machines/MV/cables.lua @@ -0,0 +1,14 @@ + +minetest.register_alias("mv_cable", "technic:mv_cable0") + +minetest.register_craft({ + output = 'technic:mv_cable0 3', + recipe ={ + {'technic:rubber', 'technic:rubber', 'technic:rubber'}, + {'technic:lv_cable0', 'technic:lv_cable0', 'technic:lv_cable0'}, + {'technic:rubber', 'technic:rubber', 'technic:rubber'}, + } +}) + +technic.register_cable("MV", 2.5/16) + diff --git a/technic/machines/MV/centrifuge.lua b/technic/machines/MV/centrifuge.lua new file mode 100644 index 0000000..5bf24bf --- /dev/null +++ b/technic/machines/MV/centrifuge.lua @@ -0,0 +1,16 @@ +minetest.register_craft({ + output = "technic:mv_centrifuge", + recipe = { + { "technic:motor", "technic:copper_plate", "technic:diamond_drill_head" }, + { "technic:copper_plate", "technic:machine_casing", "technic:copper_plate" }, + { "pipeworks:one_way_tube", "technic:mv_cable0", "pipeworks:mese_filter" }, + } +}) + +technic.register_centrifuge({ + tier = "MV", + demand = { 8000, 7000, 6000 }, + speed = 2, + upgrade = 1, + tube = 1, +}) diff --git a/technic/machines/MV/compressor.lua b/technic/machines/MV/compressor.lua new file mode 100644 index 0000000..5b36cc5 --- /dev/null +++ b/technic/machines/MV/compressor.lua @@ -0,0 +1,12 @@ +-- MV compressor + +minetest.register_craft({ + output = 'technic:mv_compressor', + recipe = { + {'technic:stainless_steel_ingot', 'technic:lv_compressor', 'technic:stainless_steel_ingot'}, + {'pipeworks:tube_1', 'technic:mv_transformer', 'pipeworks:tube_1'}, + {'technic:stainless_steel_ingot', 'technic:mv_cable0', 'technic:stainless_steel_ingot'}, + } +}) + +technic.register_compressor({tier = "MV", demand = {800, 600, 400}, speed = 2, upgrade = 1, tube = 1}) diff --git a/technic/machines/MV/electric_furnace.lua b/technic/machines/MV/electric_furnace.lua new file mode 100644 index 0000000..1f6b1c2 --- /dev/null +++ b/technic/machines/MV/electric_furnace.lua @@ -0,0 +1,18 @@ +-- MV Electric Furnace +-- This is a faster version of the stone furnace which runs on EUs +-- In addition to this it can be upgraded with microcontrollers and batteries +-- This new version uses the batteries to lower the power consumption of the machine +-- Also in addition this furnace can be attached to the pipe system from the pipeworks mod. + +-- FIXME: kpoppel I'd like to introduce an induction heating element here also +minetest.register_craft({ + output = 'technic:mv_electric_furnace', + recipe = { + {'technic:stainless_steel_ingot', 'technic:lv_electric_furnace', 'technic:stainless_steel_ingot'}, + {'pipeworks:tube_1', 'technic:mv_transformer', 'pipeworks:tube_1'}, + {'technic:stainless_steel_ingot', 'technic:mv_cable0', 'technic:stainless_steel_ingot'}, + } +}) + +technic.register_electric_furnace({tier="MV", upgrade=1, tube=1, demand={2000, 1000, 500}, speed=4}) + diff --git a/technic/machines/MV/extractor.lua b/technic/machines/MV/extractor.lua new file mode 100644 index 0000000..fdef5b2 --- /dev/null +++ b/technic/machines/MV/extractor.lua @@ -0,0 +1,12 @@ +-- MV extractor + +minetest.register_craft({ + output = 'technic:mv_extractor', + recipe = { + {'technic:stainless_steel_ingot', 'technic:lv_extractor', 'technic:stainless_steel_ingot'}, + {'pipeworks:tube_1', 'technic:mv_transformer', 'pipeworks:tube_1'}, + {'technic:stainless_steel_ingot', 'technic:mv_cable0', 'technic:stainless_steel_ingot'}, + } +}) + +technic.register_extractor({tier = "MV", demand = {800, 600, 400}, speed = 2, upgrade = 1, tube = 1}) diff --git a/technic/machines/MV/generator.lua b/technic/machines/MV/generator.lua new file mode 100644 index 0000000..4ae24b8 --- /dev/null +++ b/technic/machines/MV/generator.lua @@ -0,0 +1,13 @@ +minetest.register_alias("generator_mv", "technic:generator_mv") + +minetest.register_craft({ + output = 'technic:mv_generator', + recipe = { + {'technic:stainless_steel_ingot', 'technic:lv_generator', 'technic:stainless_steel_ingot'}, + {'pipeworks:tube_1', 'technic:mv_transformer', 'pipeworks:tube_1'}, + {'technic:stainless_steel_ingot', 'technic:mv_cable0', 'technic:stainless_steel_ingot'}, + } +}) + +technic.register_generator({tier="MV", tube=1, supply=600}) + diff --git a/technic/machines/MV/grinder.lua b/technic/machines/MV/grinder.lua new file mode 100644 index 0000000..dac536c --- /dev/null +++ b/technic/machines/MV/grinder.lua @@ -0,0 +1,13 @@ +-- MV grinder + +minetest.register_craft({ + output = 'technic:mv_grinder', + recipe = { + {'technic:stainless_steel_ingot', 'technic:lv_grinder', 'technic:stainless_steel_ingot'}, + {'pipeworks:tube_1', 'technic:mv_transformer', 'pipeworks:tube_1'}, + {'technic:stainless_steel_ingot', 'technic:mv_cable0', 'technic:stainless_steel_ingot'}, + } +}) + +technic.register_grinder({tier="MV", demand={600, 450, 300}, speed=2, upgrade=1, tube=1}) + diff --git a/technic/machines/MV/init.lua b/technic/machines/MV/init.lua new file mode 100644 index 0000000..72a98b6 --- /dev/null +++ b/technic/machines/MV/init.lua @@ -0,0 +1,32 @@ + +technic.register_tier("MV", "Medium Voltage") + +local path = technic.modpath.."/machines/MV" + +-- Wiring stuff +dofile(path.."/cables.lua") +dofile(path.."/battery_box.lua") + +-- Generators +if technic.config:get_bool("enable_wind_mill") then + dofile(path.."/wind_mill.lua") +end +dofile(path.."/generator.lua") +dofile(path.."/solar_array.lua") + +-- Machines +dofile(path.."/alloy_furnace.lua") +dofile(path.."/electric_furnace.lua") +dofile(path.."/grinder.lua") +dofile(path.."/extractor.lua") +dofile(path.."/compressor.lua") +dofile(path.."/centrifuge.lua") + +dofile(path.."/tool_workshop.lua") + +-- The power radiator supplies appliances with inductive coupled power: +-- Lighting and associated textures is taken directly from VanessaE's homedecor and made electric. +-- This is currently useless, slow, and mostly copied +--dofile(path.."/power_radiator.lua") +--dofile(path.."/lighting.lua") + diff --git a/technic/machines/MV/lighting.lua b/technic/machines/MV/lighting.lua new file mode 100644 index 0000000..76fcb20 --- /dev/null +++ b/technic/machines/MV/lighting.lua @@ -0,0 +1,590 @@ +-- NOTE: The code is takes directly from VanessaE's homedecor mod. +-- I just made it the lights into indictive appliances for this mod. + +-- This file supplies electric powered glowlights + +-- Boilerplate to support localized strings if intllib mod is installed. +local S +if (minetest.get_modpath("intllib")) then + dofile(minetest.get_modpath("intllib").."/intllib.lua") + S = intllib.Getter(minetest.get_current_modname()) +else + S = function (s) return s end +end + +function technic_homedecor_node_is_owned(pos, placer) + local ownername = false + if type(IsPlayerNodeOwner) == "function" then -- node_ownership mod + if HasOwner(pos, placer) then + if not IsPlayerNodeOwner(pos, placer:get_player_name()) then + if type(getLastOwner) == "function" then -- ...is an old version + ownername = getLastOwner(pos) + elseif type(GetNodeOwnerName) == "function" then -- ...is a recent version + ownername = GetNodeOwnerName(pos) + else + ownername = S("someone") + end + end + end + + elseif type(isprotect) == "function" then -- glomie's protection mod + if not isprotect(5, pos, placer) then + ownername = S("someone") + end + elseif type(protector) == "table" and type(protector.can_dig) == "function" then -- Zeg9's protection mod + if not protector.can_dig(5, pos, placer) then + ownername = S("someone") + end + end + + if ownername ~= false then + minetest.chat_send_player(placer:get_player_name(), S("Sorry, %s owns that spot."):format(ownername) ) + return true + else + return false + end +end + +local dirs1 = {20, 23, 22, 21} +local dirs2 = {9, 18, 7, 12} + +local technic_homedecor_rotate_and_place = function(itemstack, placer, pointed_thing) + if not technic_homedecor_node_is_owned(pointed_thing.under, placer) + and not technic_homedecor_node_is_owned(pointed_thing.above, placer) then + local node = minetest.get_node(pointed_thing.under) + if not minetest.registered_nodes[node.name] or not minetest.registered_nodes[node.name].on_rightclick then + + local above = pointed_thing.above + local under = pointed_thing.under + local pitch = placer:get_look_pitch() + local pname = minetest.get_node(under).name + local node = minetest.get_node(above) + local fdir = minetest.dir_to_facedir(placer:get_look_dir()) + local wield_name = itemstack:get_name() + + if not minetest.registered_nodes[pname] + or not minetest.registered_nodes[pname].on_rightclick then + + local iswall = (above.x ~= under.x) or (above.z ~= under.z) + local isceiling = (above.x == under.x) and (above.z == under.z) and (pitch > 0) + local pos1 = above + + if minetest.registered_nodes[pname]["buildable_to"] then + pos1 = under + iswall = false + end + + if not minetest.registered_nodes[minetest.get_node(pos1).name]["buildable_to"] then return end + + if iswall then + minetest.add_node(pos1, {name = wield_name, param2 = dirs2[fdir+1] }) -- place wall variant + elseif isceiling then + minetest.add_node(pos1, {name = wield_name, param2 = 20 }) -- place upside down variant + else + minetest.add_node(pos1, {name = wield_name, param2 = 0 }) -- place right side up + end + + if not homedecor_expect_infinite_stacks then + itemstack:take_item() + return itemstack + end + end + else + minetest.registered_nodes[node.name].on_rightclick(pointed_thing.under, node, placer, itemstack) + end + end +end + +-- Yellow -- Half node +minetest.register_node('technic:homedecor_glowlight_half_yellow', { + description = S("Yellow Glowlight (thick)"), + drawtype = "nodebox", + tiles = { + 'technic_homedecor_glowlight_yellow_tb.png', + 'technic_homedecor_glowlight_yellow_tb.png', + 'technic_homedecor_glowlight_thick_yellow_sides.png', + 'technic_homedecor_glowlight_thick_yellow_sides.png', + 'technic_homedecor_glowlight_thick_yellow_sides.png', + 'technic_homedecor_glowlight_thick_yellow_sides.png' + }, + selection_box = { + type = "fixed", + fixed = { -0.5, -0.5, -0.5, 0.5, 0, 0.5 } + }, + node_box = { + type = "fixed", + fixed = { -0.5, -0.5, -0.5, 0.5, 0, 0.5 } + }, + + sunlight_propagates = false, + paramtype = "light", + paramtype2 = "facedir", + walkable = true, + sounds = default.node_sound_wood_defaults(), + + groups = { snappy = 3 }, + on_place = function(itemstack, placer, pointed_thing) + technic_homedecor_rotate_and_place(itemstack, placer, pointed_thing) + return itemstack + end, + on_construct = function(pos) + technic.inductive_on_construct(pos, 100, "Yellow Glowlight (thick)") + end, + on_punch = function(pos, node, puncher) + technic.inductive_on_punch_off(pos, 100, "technic:homedecor_glowlight_half_yellow_active") + end +}) + +minetest.register_node('technic:homedecor_glowlight_half_yellow_active', { + description = S("Yellow Glowlight (thick)"), + drawtype = "nodebox", + tiles = { + 'technic_homedecor_glowlight_yellow_tb.png', + 'technic_homedecor_glowlight_yellow_tb.png', + 'technic_homedecor_glowlight_thick_yellow_sides.png', + 'technic_homedecor_glowlight_thick_yellow_sides.png', + 'technic_homedecor_glowlight_thick_yellow_sides.png', + 'technic_homedecor_glowlight_thick_yellow_sides.png' + }, + selection_box = { + type = "fixed", + fixed = { -0.5, -0.5, -0.5, 0.5, 0, 0.5 } + }, + node_box = { + type = "fixed", + fixed = { -0.5, -0.5, -0.5, 0.5, 0, 0.5 } + }, + + sunlight_propagates = false, + paramtype = "light", + paramtype2 = "facedir", + walkable = true, + light_source = LIGHT_MAX, + sounds = default.node_sound_wood_defaults(), + + groups = { snappy = 3, not_in_creative_inventory=1}, + drop="technic:homedecor_glowlight_half_yellow", + on_place = function(itemstack, placer, pointed_thing) + technic_homedecor_rotate_and_place(itemstack, placer, pointed_thing) + return itemstack + end, + on_construct = function(pos) + technic.inductive_on_construct(pos, 100, "Yellow Glowlight (thick)") + end, + on_punch = function(pos, node, puncher) + technic.inductive_on_punch_on(pos, 0, "technic:homedecor_glowlight_half_yellow") + end +}) + +-- Yellow -- Quarter node +minetest.register_node('technic:homedecor_glowlight_quarter_yellow', { + description = S("Yellow Glowlight (thin)"), + drawtype = "nodebox", + tiles = { + 'technic_homedecor_glowlight_yellow_tb.png', + 'technic_homedecor_glowlight_yellow_tb.png', + 'technic_homedecor_glowlight_thin_yellow_sides.png', + 'technic_homedecor_glowlight_thin_yellow_sides.png', + 'technic_homedecor_glowlight_thin_yellow_sides.png', + 'technic_homedecor_glowlight_thin_yellow_sides.png' + }, + selection_box = { + type = "fixed", + fixed = { -0.5, -0.5, -0.5, 0.5, -0.25, 0.5 } + }, + node_box = { + type = "fixed", + fixed = { -0.5, -0.5, -0.5, 0.5, -0.25, 0.5 } + }, + + sunlight_propagates = false, + paramtype = "light", + paramtype2 = "facedir", + walkable = true, + sounds = default.node_sound_wood_defaults(), + + groups = { snappy = 3 }, + on_place = function(itemstack, placer, pointed_thing) + technic_homedecor_rotate_and_place(itemstack, placer, pointed_thing) + return itemstack + end, + on_construct = function(pos) + technic.inductive_on_construct(pos, 100, "Yellow Glowlight (thin)") + end, + on_punch = function(pos, node, puncher) + technic.inductive_on_punch_off(pos, 100, "technic:homedecor_glowlight_quarter_yellow_active") + end +}) + +minetest.register_node('technic:homedecor_glowlight_quarter_yellow_active', { + description = S("Yellow Glowlight (thin)"), + drawtype = "nodebox", + tiles = { + 'technic_homedecor_glowlight_yellow_tb.png', + 'technic_homedecor_glowlight_yellow_tb.png', + 'technic_homedecor_glowlight_thin_yellow_sides.png', + 'technic_homedecor_glowlight_thin_yellow_sides.png', + 'technic_homedecor_glowlight_thin_yellow_sides.png', + 'technic_homedecor_glowlight_thin_yellow_sides.png' + }, + selection_box = { + type = "fixed", + fixed = { -0.5, -0.5, -0.5, 0.5, -0.25, 0.5 } + }, + node_box = { + type = "fixed", + fixed = { -0.5, -0.5, -0.5, 0.5, -0.25, 0.5 } + }, + + sunlight_propagates = false, + paramtype = "light", + paramtype2 = "facedir", + walkable = true, + light_source = LIGHT_MAX-1, + sounds = default.node_sound_wood_defaults(), + + groups = { snappy = 3, not_in_creative_inventory=1}, + drop="technic:homedecor_glowlight_quarter_yellow", + on_place = function(itemstack, placer, pointed_thing) + technic_homedecor_rotate_and_place(itemstack, placer, pointed_thing) + return itemstack + end, + on_construct = function(pos) + technic.inductive_on_construct(pos, 100, "Yellow Glowlight (thin)") + end, + on_punch = function(pos, node, puncher) + technic.inductive_on_punch_on(pos, 0, "technic:homedecor_glowlight_quarter_yellow") + end +}) + + +-- White -- half node +minetest.register_node('technic:homedecor_glowlight_half_white', { + description = S("White Glowlight (thick)"), + drawtype = "nodebox", + tiles = { + 'technic_homedecor_glowlight_white_tb.png', + 'technic_homedecor_glowlight_white_tb.png', + 'technic_homedecor_glowlight_thick_white_sides.png', + 'technic_homedecor_glowlight_thick_white_sides.png', + 'technic_homedecor_glowlight_thick_white_sides.png', + 'technic_homedecor_glowlight_thick_white_sides.png' + }, + selection_box = { + type = "fixed", + fixed = { -0.5, -0.5, -0.5, 0.5, 0, 0.5 } + }, + node_box = { + type = "fixed", + fixed = { -0.5, -0.5, -0.5, 0.5, 0, 0.5 } + }, + + sunlight_propagates = false, + paramtype = "light", + paramtype2 = "facedir", + walkable = true, + sounds = default.node_sound_wood_defaults(), + + groups = { snappy = 3 }, + on_place = function(itemstack, placer, pointed_thing) + technic_homedecor_rotate_and_place(itemstack, placer, pointed_thing) + return itemstack + end, + on_construct = function(pos) + technic.inductive_on_construct(pos, 100, "White Glowlight (thick)") + end, + on_punch = function(pos, node, puncher) + technic.inductive_on_punch_off(pos, 100, "technic:homedecor_glowlight_half_white_active") + end +}) + +minetest.register_node('technic:homedecor_glowlight_half_white_active', { + description = S("White Glowlight (thick)"), + drawtype = "nodebox", + tiles = { + 'technic_homedecor_glowlight_white_tb.png', + 'technic_homedecor_glowlight_white_tb.png', + 'technic_homedecor_glowlight_thick_white_sides.png', + 'technic_homedecor_glowlight_thick_white_sides.png', + 'technic_homedecor_glowlight_thick_white_sides.png', + 'technic_homedecor_glowlight_thick_white_sides.png' + }, + selection_box = { + type = "fixed", + fixed = { -0.5, -0.5, -0.5, 0.5, 0, 0.5 } + }, + node_box = { + type = "fixed", + fixed = { -0.5, -0.5, -0.5, 0.5, 0, 0.5 } + }, + + sunlight_propagates = false, + paramtype = "light", + paramtype2 = "facedir", + walkable = true, + light_source = LIGHT_MAX, + sounds = default.node_sound_wood_defaults(), + + groups = { snappy = 3, not_in_creative_inventory=1}, + drop="technic:homedecor_glowlight_half_white", + on_place = function(itemstack, placer, pointed_thing) + technic_homedecor_rotate_and_place(itemstack, placer, pointed_thing) + return itemstack + end, + on_construct = function(pos) + technic.inductive_on_construct(pos, 100, "White Glowlight (thick)") + end, + on_punch = function(pos, node, puncher) + technic.inductive_on_punch_on(pos, 0, "technic:homedecor_glowlight_half_white") + end +}) + +-- White -- Quarter node +minetest.register_node('technic:homedecor_glowlight_quarter_white', { + description = S("White Glowlight (thin)"), + drawtype = "nodebox", + tiles = { + 'technic_homedecor_glowlight_white_tb.png', + 'technic_homedecor_glowlight_white_tb.png', + 'technic_homedecor_glowlight_thin_white_sides.png', + 'technic_homedecor_glowlight_thin_white_sides.png', + 'technic_homedecor_glowlight_thin_white_sides.png', + 'technic_homedecor_glowlight_thin_white_sides.png' + }, + selection_box = { + type = "fixed", + fixed = { -0.5, -0.5, -0.5, 0.5, -0.25, 0.5 } + }, + node_box = { + type = "fixed", + fixed = { -0.5, -0.5, -0.5, 0.5, -0.25, 0.5 } + }, + + sunlight_propagates = false, + paramtype = "light", + paramtype2 = "facedir", + walkable = true, + sounds = default.node_sound_wood_defaults(), + + groups = { snappy = 3 }, + on_place = function(itemstack, placer, pointed_thing) + technic_homedecor_rotate_and_place(itemstack, placer, pointed_thing) + return itemstack + end, + on_construct = function(pos) + technic.inductive_on_construct(pos, 100, "White Glowlight (thin)") + end, + on_punch = function(pos, node, puncher) + technic.inductive_on_punch_off(pos, 100, "technic:homedecor_glowlight_quarter_white_active") + end +}) + +minetest.register_node('technic:homedecor_glowlight_quarter_white_active', { + description = S("White Glowlight (thin)"), + drawtype = "nodebox", + tiles = { + 'technic_homedecor_glowlight_white_tb.png', + 'technic_homedecor_glowlight_white_tb.png', + 'technic_homedecor_glowlight_thin_white_sides.png', + 'technic_homedecor_glowlight_thin_white_sides.png', + 'technic_homedecor_glowlight_thin_white_sides.png', + 'technic_homedecor_glowlight_thin_white_sides.png' + }, + selection_box = { + type = "fixed", + fixed = { -0.5, -0.5, -0.5, 0.5, -0.25, 0.5 } + }, + node_box = { + type = "fixed", + fixed = { -0.5, -0.5, -0.5, 0.5, -0.25, 0.5 } + }, + + sunlight_propagates = false, + paramtype = "light", + paramtype2 = "facedir", + walkable = true, + light_source = LIGHT_MAX-1, + sounds = default.node_sound_wood_defaults(), + + groups = { snappy = 3, not_in_creative_inventory=1}, + drop="technic:homedecor_glowlight_quarter_white", + on_place = function(itemstack, placer, pointed_thing) + technic_homedecor_rotate_and_place(itemstack, placer, pointed_thing) + return itemstack + end, + on_construct = function(pos) + technic.inductive_on_construct(pos, 100, "White Glowlight (thin)") + end, + on_punch = function(pos, node, puncher) + technic.inductive_on_punch_on(pos, 0, "technic:homedecor_glowlight_quarter_white") + end +}) + +-- Glowlight "cubes" - yellow +minetest.register_node('technic:homedecor_glowlight_small_cube_yellow', { + description = S("Yellow Glowlight (small cube)"), + drawtype = "nodebox", + tiles = { + 'technic_homedecor_glowlight_cube_yellow_tb.png', + 'technic_homedecor_glowlight_cube_yellow_tb.png', + 'technic_homedecor_glowlight_cube_yellow_sides.png', + 'technic_homedecor_glowlight_cube_yellow_sides.png', + 'technic_homedecor_glowlight_cube_yellow_sides.png', + 'technic_homedecor_glowlight_cube_yellow_sides.png' + }, + selection_box = { + type = "fixed", + fixed = { -0.25, -0.5, -0.25, 0.25, 0, 0.25 } + }, + node_box = { + type = "fixed", + fixed = { -0.25, -0.5, -0.25, 0.25, 0, 0.25 } + }, + + sunlight_propagates = false, + paramtype = "light", + paramtype2 = "facedir", + walkable = true, + sounds = default.node_sound_wood_defaults(), + + groups = { snappy = 3 }, + on_place = function(itemstack, placer, pointed_thing) + technic_homedecor_rotate_and_place(itemstack, placer, pointed_thing) + return itemstack + end, + on_construct = function(pos) + technic.inductive_on_construct(pos, 50, "Yellow Glowlight (small cube)") + end, + on_punch = function(pos, node, puncher) + technic.inductive_on_punch_off(pos, 50, "technic:homedecor_glowlight_small_cube_yellow_active") + end +}) + +minetest.register_node('technic:homedecor_glowlight_small_cube_yellow_active', { + description = S("Yellow Glowlight (small cube)"), + drawtype = "nodebox", + tiles = { + 'technic_homedecor_glowlight_cube_yellow_tb.png', + 'technic_homedecor_glowlight_cube_yellow_tb.png', + 'technic_homedecor_glowlight_cube_yellow_sides.png', + 'technic_homedecor_glowlight_cube_yellow_sides.png', + 'technic_homedecor_glowlight_cube_yellow_sides.png', + 'technic_homedecor_glowlight_cube_yellow_sides.png' + }, + selection_box = { + type = "fixed", + fixed = { -0.25, -0.5, -0.25, 0.25, 0, 0.25 } + }, + node_box = { + type = "fixed", + fixed = { -0.25, -0.5, -0.25, 0.25, 0, 0.25 } + }, + + sunlight_propagates = false, + paramtype = "light", + paramtype2 = "facedir", + walkable = true, + light_source = LIGHT_MAX-1, + sounds = default.node_sound_wood_defaults(), + + groups = { snappy = 3, not_in_creative_inventory=1}, + drop="technic:homedecor_glowlight_small_cube_yellow", + on_place = function(itemstack, placer, pointed_thing) + technic_homedecor_rotate_and_place(itemstack, placer, pointed_thing) + return itemstack + end, + on_construct = function(pos) + technic.inductive_on_construct(pos, 50, "Yellow Glowlight (small cube)") + end, + on_punch = function(pos, node, puncher) + technic.inductive_on_punch_on(pos, 0, "technic:homedecor_glowlight_small_cube_yellow") + end +}) + +-- Glowlight "cubes" - white +minetest.register_node('technic:homedecor_glowlight_small_cube_white', { + description = S("White Glowlight (small cube)"), + drawtype = "nodebox", + tiles = { + 'technic_homedecor_glowlight_cube_white_tb.png', + 'technic_homedecor_glowlight_cube_white_tb.png', + 'technic_homedecor_glowlight_cube_white_sides.png', + 'technic_homedecor_glowlight_cube_white_sides.png', + 'technic_homedecor_glowlight_cube_white_sides.png', + 'technic_homedecor_glowlight_cube_white_sides.png' + }, + selection_box = { + type = "fixed", + fixed = { -0.25, -0.5, -0.25, 0.25, 0, 0.25 } + }, + node_box = { + type = "fixed", + fixed = { -0.25, -0.5, -0.25, 0.25, 0, 0.25 } + }, + + sunlight_propagates = false, + paramtype = "light", + paramtype2 = "facedir", + walkable = true, + sounds = default.node_sound_wood_defaults(), + + groups = { snappy = 3 }, + on_place = function(itemstack, placer, pointed_thing) + technic_homedecor_rotate_and_place(itemstack, placer, pointed_thing) + return itemstack + end, + on_construct = function(pos) + technic.inductive_on_construct(pos, 50, "White Glowlight (small cube)") + end, + on_punch = function(pos, node, puncher) + technic.inductive_on_punch_off(pos, 50, "technic:homedecor_glowlight_small_cube_white_active") + end +}) + +minetest.register_node('technic:homedecor_glowlight_small_cube_white_active', { + description = S("White Glowlight (small cube)"), + drawtype = "nodebox", + tiles = { + 'technic_homedecor_glowlight_cube_white_tb.png', + 'technic_homedecor_glowlight_cube_white_tb.png', + 'technic_homedecor_glowlight_cube_white_sides.png', + 'technic_homedecor_glowlight_cube_white_sides.png', + 'technic_homedecor_glowlight_cube_white_sides.png', + 'technic_homedecor_glowlight_cube_white_sides.png' + }, + selection_box = { + type = "fixed", + fixed = { -0.25, -0.5, -0.25, 0.25, 0, 0.25 } + }, + node_box = { + type = "fixed", + fixed = { -0.25, -0.5, -0.25, 0.25, 0, 0.25 } + }, + + sunlight_propagates = false, + paramtype = "light", + paramtype2 = "facedir", + walkable = true, + light_source = LIGHT_MAX-1, + sounds = default.node_sound_wood_defaults(), + + groups = { snappy = 3, not_in_creative_inventory=1}, + drop="technic:homedecor_glowlight_small_cube_white", + on_place = function(itemstack, placer, pointed_thing) + technic_homedecor_rotate_and_place(itemstack, placer, pointed_thing) + return itemstack + end, + on_construct = function(pos) + technic.inductive_on_construct(pos, 50, "White Glowlight (small cube)") + end, + on_punch = function(pos, node, puncher) + technic.inductive_on_punch_on(pos, 0, "technic:homedecor_glowlight_small_cube_white") + end +}) + +technic.register_inductive_machine("technic:homedecor_glowlight_half_yellow") +technic.register_inductive_machine("technic:homedecor_glowlight_half_white") +technic.register_inductive_machine("technic:homedecor_glowlight_quarter_yellow") +technic.register_inductive_machine("technic:homedecor_glowlight_quarter_white") +technic.register_inductive_machine("technic:homedecor_glowlight_small_cube_yellow") +technic.register_inductive_machine("technic:homedecor_glowlight_small_cube_white") diff --git a/technic/machines/MV/power_radiator.lua b/technic/machines/MV/power_radiator.lua new file mode 100644 index 0000000..560f8a9 --- /dev/null +++ b/technic/machines/MV/power_radiator.lua @@ -0,0 +1,220 @@ +-- The power radiator fuctions like an inductive charger +-- only better in the game setting. +-- The purpose is to allow small appliances to receive power +-- without the overhead of the wiring needed for larger machines. +-- +-- The power radiator will consume power corresponding to the +-- sum(power rating of the attached appliances)/0.06 +-- Using inductive power transfer is very inefficient so this is +-- set to the factor 0.06. +-- +-- Punching the radiator will toggle the power state of all attached appliances. + +local power_radius = 12 + +------------------------------------------------------------------ +-- API for inductive powered nodes: +-- Use the functions below to set the corresponding callbacks +-- Also two nodes are needed: The inactive and the active one. The active must be called _active . +------------------------------------------------------------------ +-- Register a new appliance using this function + +technic.inductive_nodes = {} +technic.register_inductive_machine = function(name) + table.insert(technic.inductive_nodes, name) + table.insert(technic.inductive_nodes, name.."_active") +end + +-- Appliances: +-- has_supply: pos of supply node if the appliance has a power radiator near with sufficient power for the demand else "" +-- EU_demand: The power demand of the device. +-- EU_charge: Actual use. set to EU_demand if active==1 +-- active: set to 1 if the device is on +technic.inductive_on_construct = function(pos, eu_demand, infotext) + local meta = minetest.get_meta(pos) + meta:set_string("infotext", infotext) + meta:set_int("technic_inductive_power_machine", 1) + meta:set_int("EU_demand", eu_demand) -- The power demand of this appliance + meta:set_int("EU_charge", 0) -- The actual power draw of this appliance + meta:set_string("has_supply", "") -- Register whether we are powered or not. For use with several radiators. + meta:set_int("active", 0) -- If the appliance can be turned on and off by using it use this. +end + +technic.inductive_on_punch_off = function(pos, eu_charge, swapnode) + local meta = minetest.get_meta(pos) + if meta:get_string("has_supply") ~= "" then + technic.swap_node(pos, swapnode) + meta:set_int("active", 1) + meta:set_int("EU_charge",eu_charge) + --print("-----------") + --print("Turn on:") + --print("EU_charge: "..meta:get_int("EU_charge")) + --print("has_supply: "..meta:get_string("has_supply")) + --print("<----------->") + end +end + +technic.inductive_on_punch_on = function(pos, eu_charge, swapnode) + local meta = minetest.get_meta(pos) + technic.swap_node(pos, swapnode) + meta:set_int("active", 0) + meta:set_int("EU_charge",eu_charge) + --print("-----------") + --print("Turn off:") + --print("EU_charge: "..meta:get_int("EU_charge")) + --print("has_supply: "..meta:get_string("has_supply")) + --print("<---------->") +end + +local shutdown_inductive_appliances = function(pos) + -- The supply radius + local rad = power_radius + -- If the radiator is removed. turn off all appliances in region + -- If another radiator is near it will turn on the appliances again + local positions = minetest.find_nodes_in_area( + {x=pos.x-rad, y=pos.y-rad, z=pos.z-rad}, + {x=pos.x+rad, y=pos.y+rad, z=pos.z+rad}, + technic.inductive_nodes) + for _, pos1 in pairs(positions) do + local meta1 = minetest.get_meta(pos1) + -- If the appliance is belonging to this node + if meta1:get_string("has_supply") == pos.x..pos.y..pos.z then + local nodename = minetest.get_node(pos1).name + -- Swap the node and make sure it is off and unpowered + if string.sub(nodename, -7) == "_active" then + technic.swap_node(pos1, string.sub(nodename, 1, -8)) + meta1:set_int("active", 0) + meta1:set_int("EU_charge", 0) + end + meta1:set_string("has_supply", "") + end + end +end + +local toggle_on_off_inductive_appliances = function(pos, node, puncher) + if pos == nil then return end + -- The supply radius + local rad = power_radius + local positions = minetest.find_nodes_in_area( + {x=pos.x-rad, y=pos.y-rad, z=pos.z-rad}, + {x=pos.x+rad, y=pos.y+rad, z=pos.z+rad}, + technic.inductive_nodes) + for _, pos1 in pairs(positions) do + local meta1 = minetest.get_meta(pos1) + if meta1:get_string("has_supply") == pos.x..pos.y..pos.z then + minetest.punch_node(pos1) + end + end +end + +minetest.register_node("technic:power_radiator", { + description = "MV Power Radiator", + tiles = {"technic_lv_cable.png", "technic_lv_cable.png", "technic_lv_cable.png", + "technic_lv_cable.png", "technic_lv_cable.png", "technic_lv_cable.png"}, + groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2}, + sounds = default.node_sound_wood_defaults(), + drawtype = "nodebox", + paramtype = "light", + is_ground_content = true, + node_box = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, + }, + on_construct = function(pos) + local meta = minetest.get_meta(pos) + meta:set_int("MV_EU_demand",1) -- Demand on the primary side when idle + meta:set_int("connected_EU_demand",0) -- Potential demand of connected appliances + meta:set_string("infotext", "MV Power Radiator") + end, + on_dig = function(pos, node, digger) + shutdown_inductive_appliances(pos) + return minetest.node_dig(pos, node, digger) + end, + on_punch = function(pos, node, puncher) + toggle_on_off_inductive_appliances(pos, node, puncher) + end +}) + +minetest.register_craft({ + output = 'technic:power_radiator 1', + recipe = { + {'technic:stainless_steel_ingot', 'technic:mv_transformer', 'technic:stainless_steel_ingot'}, + {'technic:copper_coil', 'technic:machine_casing', 'technic:copper_coil'}, + {'technic:rubber', 'technic:mv_cable0', 'technic:rubber'}, + } +}) + +minetest.register_abm({ + nodenames = {"technic:power_radiator"}, + interval = 1, + chance = 1, + action = function(pos, node, active_object_count, active_object_count_wider) + local meta = minetest.get_meta(pos) + local eu_input = meta:get_int("MV_EU_input") + local eu_demand = meta:get_int("MV_EU_demand") + + -- Power off automatically if no longer connected to a switching station + technic.switching_station_timeout_count(pos, "MV") + + if eu_input == 0 then + -- No power + meta:set_string("infotext", "MV Power Radiator is unpowered"); + -- meta:set_int("active", 1) -- used for setting textures someday maybe + shutdown_inductive_appliances(pos) + meta:set_int("connected_EU_demand", 0) + meta:set_int("MV_EU_demand",1) + elseif eu_input == eu_demand then + -- Powered and ready + + -- The maximum EU sourcing a single radiator can provide. + local max_charge = 30000 -- == the max EU demand of the radiator + local connected_EU_demand = meta:get_int("connected_EU_demand") + + -- Efficiency factor + local eff_factor = 0.06 + -- The supply radius + local rad = power_radius + + local meta1 = nil + local pos1 = {} + local used_charge = 0 + + -- Index all nodes within supply range + local positions = minetest.find_nodes_in_area( + {x=pos.x-rad, y=pos.y-rad, z=pos.z-rad}, + {x=pos.x+rad, y=pos.y+rad, z=pos.z+rad}, + technic.inductive_nodes) + for _, pos1 in pairs(positions) do + local meta1 = minetest.get_meta(pos1) + -- If not supplied see if this node can handle it. + if meta1:get_string("has_supply") == "" then + -- if demand surpasses the capacity of this node, don't bother adding it. + local app_eu_demand = math.floor(meta1:get_int("EU_demand") / eff_factor) + if connected_EU_demand + app_eu_demand <= max_charge then + -- We can power the appliance. Register, and spend power if it is on. + connected_EU_demand = connected_EU_demand + app_eu_demand + + meta1:set_string("has_supply", pos.x..pos.y..pos.z) + --Always 0: used_charge = math.floor(used_charge + meta1:get_int("EU_charge") / eff_factor) + end + elseif meta1:get_string("has_supply") == pos.x..pos.y..pos.z then + -- The appliance has power from this node. Spend power if it is on. + used_charge = used_charge + math.floor(meta1:get_int("EU_charge") / eff_factor) + end + meta:set_string("infotext", "MV Power Radiator is powered (" + ..math.floor(used_charge / max_charge * 100) + .."% of maximum power)"); + if used_charge == 0 then + meta:set_int("MV_EU_demand", 1) -- Still idle + else + meta:set_int("MV_EU_demand", used_charge) + end + end + -- Save state + meta:set_int("connected_EU_demand", connected_EU_demand) + end + end, +}) + +technic.register_machine("MV", "technic:power_radiator", technic.receiver) + diff --git a/technic/machines/MV/solar_array.lua b/technic/machines/MV/solar_array.lua new file mode 100644 index 0000000..227d8ee --- /dev/null +++ b/technic/machines/MV/solar_array.lua @@ -0,0 +1,14 @@ + +minetest.register_craft({ + output = 'technic:solar_array_mv 1', + recipe = { + {'technic:solar_array_lv', 'technic:solar_array_lv', 'technic:solar_array_lv'}, + {'technic:carbon_steel_ingot', 'technic:mv_transformer', 'technic:carbon_steel_ingot'}, + {'', 'technic:mv_cable0', ''}, + } +}) + +technic.register_solar_array({tier="MV", power=30}) + +-- compatibility alias for upgrading from old versions of technic +minetest.register_alias("technic:solar_panel_mv", "technic:solar_array_mv") diff --git a/technic/machines/MV/tool_workshop.lua b/technic/machines/MV/tool_workshop.lua new file mode 100644 index 0000000..318b1ec --- /dev/null +++ b/technic/machines/MV/tool_workshop.lua @@ -0,0 +1,117 @@ +-- Tool workshop +-- This machine repairs tools. + +minetest.register_alias("tool_workshop", "technic:tool_workshop") + +local S = technic.getter + +minetest.register_craft({ + output = 'technic:tool_workshop', + recipe = { + {'group:wood', 'default:diamond', 'group:wood'}, + {'mesecons_pistons:piston_sticky_off', 'technic:machine_casing', 'technic:carbon_cloth'}, + {'default:obsidian', 'technic:mv_cable0', 'default:obsidian'}, + } +}) + +local workshop_demand = {5000, 3500, 2000} + +local workshop_formspec = + "invsize[8,9;]".. + "list[current_name;src;3,1;1,1;]".. + "label[0,0;"..S("%s Tool Workshop"):format("MV").."]".. + "list[current_name;upgrade1;1,3;1,1;]".. + "list[current_name;upgrade2;2,3;1,1;]".. + "label[1,4;"..S("Upgrade Slots").."]".. + "list[current_player;main;0,5;8,4;]".. + "listring[current_player;main]".. + "listring[current_name;src]".. + "listring[current_player;main]".. + "listring[current_name;upgrade1]".. + "listring[current_player;main]".. + "listring[current_name;upgrade2]".. + "listring[current_player;main]" + +local run = function(pos, node) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + local eu_input = meta:get_int("MV_EU_input") + local machine_name = S("%s Tool Workshop"):format("MV") + local machine_node = "technic:tool_workshop" + + -- Setup meta data if it does not exist. + if not eu_input then + meta:set_int("MV_EU_demand", workshop_demand[1]) + meta:set_int("MV_EU_input", 0) + return + end + + local EU_upgrade, tube_upgrade = technic.handle_machine_upgrades(meta) + + local repairable = false + local srcstack = inv:get_stack("src", 1) + if not srcstack:is_empty() then + local itemdef = minetest.registered_items[srcstack:get_name()] + if itemdef and + (not itemdef.wear_represents or + itemdef.wear_represents == "mechanical_wear") and + srcstack:get_wear() ~= 0 then + repairable = true + end + end + technic.handle_machine_pipeworks(pos, tube_upgrade, function (pos, x_velocity, z_velocity) + if not repairable then + technic.send_items(pos, x_velocity, z_velocity, "src") + end + end) + if not repairable then + meta:set_string("infotext", S("%s Idle"):format(machine_name)) + meta:set_int("MV_EU_demand", 0) + return + end + + if eu_input < workshop_demand[EU_upgrade+1] then + meta:set_string("infotext", S("%s Unpowered"):format(machine_name)) + elseif eu_input >= workshop_demand[EU_upgrade+1] then + meta:set_string("infotext", S("%s Active"):format(machine_name)) + srcstack:add_wear(-1000) + inv:set_stack("src", 1, srcstack) + end + meta:set_int("MV_EU_demand", workshop_demand[EU_upgrade+1]) +end + +minetest.register_node("technic:tool_workshop", { + description = S("%s Tool Workshop"):format("MV"), + paramtype2 = "facedir", + tiles = {"technic_workshop_top.png", "technic_machine_bottom.png", "technic_workshop_side.png", + "technic_workshop_side.png", "technic_workshop_side.png", "technic_workshop_side.png"}, + groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2, technic_machine=1, tubedevice=1, tubedevice_receiver=1}, + sounds = default.node_sound_wood_defaults(), + on_construct = function(pos) + local meta = minetest.get_meta(pos) + meta:set_string("infotext", S("%s Tool Workshop"):format("MV")) + meta:set_string("formspec", workshop_formspec) + local inv = meta:get_inventory() + inv:set_size("src", 1) + inv:set_size("upgrade1", 1) + inv:set_size("upgrade2", 1) + end, + can_dig = technic.machine_can_dig, + allow_metadata_inventory_put = technic.machine_inventory_put, + allow_metadata_inventory_take = technic.machine_inventory_take, + tube = { + can_insert = function (pos, node, stack, direction) + return minetest.get_meta(pos):get_inventory():room_for_item("src", stack) + end, + insert_object = function (pos, node, stack, direction) + return minetest.get_meta(pos):get_inventory():add_item("src", stack) + end, + connect_sides = {left = 1, right = 1, back = 1, top = 1, bottom = 1}, + }, + technic_run = run, + after_place_node = pipeworks.after_place, + after_dig_node = technic.machine_after_dig_node +}) + +technic.register_machine("MV", "technic:tool_workshop", technic.receiver) + diff --git a/technic/machines/MV/wind_mill.lua b/technic/machines/MV/wind_mill.lua new file mode 100644 index 0000000..c553051 --- /dev/null +++ b/technic/machines/MV/wind_mill.lua @@ -0,0 +1,87 @@ + +local S = technic.getter + +minetest.register_craft({ + output = 'technic:wind_mill_frame 5', + recipe = { + {'technic:carbon_steel_ingot', '', 'technic:carbon_steel_ingot'}, + {'', 'technic:carbon_steel_ingot', ''}, + {'technic:carbon_steel_ingot', '', 'technic:carbon_steel_ingot'}, + } +}) + +minetest.register_craft({ + output = 'technic:wind_mill', + recipe = { + {'', 'technic:motor', ''}, + {'technic:carbon_steel_ingot', 'technic:carbon_steel_block', 'technic:carbon_steel_ingot'}, + {'', 'technic:mv_cable0', ''}, + } +}) + +minetest.register_node("technic:wind_mill_frame", { + description = S("Wind Mill Frame"), + drawtype = "glasslike_framed", + tiles = {"technic_carbon_steel_block.png", "default_glass.png"}, + sunlight_propagates = true, + groups = {cracky=3}, + sounds = default.node_sound_stone_defaults(), + paramtype = "light", +}) + +local function check_wind_mill(pos) + if pos.y < 30 then + return false + end + for i = 1, 20 do + local node = minetest.get_node({x=pos.x, y=pos.y-i, z=pos.z}) + if node.name ~= "technic:wind_mill_frame" then + return false + end + end + return true +end + +local run = function(pos, node) + local meta = minetest.get_meta(pos) + local machine_name = S("Wind %s Generator"):format("MV") + local power = math.min(pos.y * 100, 5000) + + if not check_wind_mill(pos) then + meta:set_int("MV_EU_supply", 0) + meta:set_string("infotext", S("%s Improperly Placed"):format(machine_name)) + return + else + meta:set_int("MV_EU_supply", power) + end + + meta:set_string("infotext", S("@1 (@2 EU)", machine_name, technic.prettynum(power))) +end + +minetest.register_node("technic:wind_mill", { + description = S("Wind %s Generator"):format("MV"), + tiles = {"technic_carbon_steel_block.png"}, + paramtype2 = "facedir", + groups = {cracky=1, technic_machine=1}, + sounds = default.node_sound_stone_defaults(), + drawtype = "nodebox", + paramtype = "light", + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, -- Main box + {-0.1, -0.1, -0.5, 0.1, 0.1, -0.6}, -- Shaft + {-0.1, -1, -0.6, 0.1, 1, -0.7}, -- Vertical blades + {-1, -0.1, -0.6, 1, 0.1, -0.7}, -- Horizontal blades + } + }, + on_construct = function(pos) + local meta = minetest.get_meta(pos) + meta:set_string("infotext", S("Wind %s Generator"):format("MV")) + meta:set_int("MV_EU_supply", 0) + end, + technic_run = run, +}) + +technic.register_machine("MV", "technic:wind_mill", technic.producer) + diff --git a/technic/machines/init.lua b/technic/machines/init.lua new file mode 100644 index 0000000..ad79eab --- /dev/null +++ b/technic/machines/init.lua @@ -0,0 +1,14 @@ +local path = technic.modpath.."/machines" + +dofile(path.."/register/init.lua") + +-- Tiers +dofile(path.."/LV/init.lua") +dofile(path.."/MV/init.lua") +dofile(path.."/HV/init.lua") + +dofile(path.."/switching_station.lua") +dofile(path.."/supply_converter.lua") + +dofile(path.."/other/init.lua") + diff --git a/technic/machines/other/anchor.lua b/technic/machines/other/anchor.lua new file mode 100644 index 0000000..1c15bd2 --- /dev/null +++ b/technic/machines/other/anchor.lua @@ -0,0 +1,109 @@ +local S = technic.getter + +local desc = S("Administrative World Anchor") + +local function compute_forceload_positions(pos, meta) + local radius = meta:get_int("radius") + local minpos = vector.subtract(pos, vector.new(radius, radius, radius)) + local maxpos = vector.add(pos, vector.new(radius, radius, radius)) + local minbpos = {} + local maxbpos = {} + for _, coord in ipairs({"x","y","z"}) do + minbpos[coord] = math.floor(minpos[coord] / 16) * 16 + maxbpos[coord] = math.floor(maxpos[coord] / 16) * 16 + end + local flposes = {} + for x = minbpos.x, maxbpos.x, 16 do + for y = minbpos.y, maxbpos.y, 16 do + for z = minbpos.z, maxbpos.z, 16 do + table.insert(flposes, vector.new(x, y, z)) + end + end + end + return flposes +end + +local function currently_forceloaded_positions(meta) + local ser = meta:get_string("forceloaded") + return ser == "" and {} or minetest.deserialize(ser) +end + +local function forceload_off(meta) + local flposes = currently_forceloaded_positions(meta) + meta:set_string("forceloaded", "") + for _, p in ipairs(flposes) do + minetest.forceload_free_block(p) + end +end + +local function forceload_on(pos, meta) + local want_flposes = compute_forceload_positions(pos, meta) + local have_flposes = {} + for _, p in ipairs(want_flposes) do + if minetest.forceload_block(p) then + table.insert(have_flposes, p) + end + end + meta:set_string("forceloaded", #have_flposes == 0 and "" or minetest.serialize(have_flposes)) +end + +local function set_display(pos, meta) + meta:set_string("infotext", S(meta:get_int("enabled") ~= 0 and "%s Enabled" or "%s Disabled"):format(desc)) + meta:set_string("formspec", + "size[5,3.5]".. + "item_image[0,0;1,1;technic:admin_anchor]".. + "label[1,0;"..minetest.formspec_escape(desc).."]".. + "label[0,1;"..minetest.formspec_escape(S("Owner:").." "..meta:get_string("owner")).."]".. + (meta:get_int("locked") == 0 and + "button[3,1;2,1;lock;"..minetest.formspec_escape(S("Unlocked")).."]" or + "button[3,1;2,1;unlock;"..minetest.formspec_escape(S("Locked")).."]").. + "field[0.25,2.3;1,1;radius;"..minetest.formspec_escape(S("Radius:"))..";"..meta:get_int("radius").."]".. + (meta:get_int("enabled") == 0 and + "button[3,2;2,1;enable;"..minetest.formspec_escape(S("Disabled")).."]" or + "button[3,2;2,1;disable;"..minetest.formspec_escape(S("Enabled")).."]").. + "label[0,3;"..minetest.formspec_escape(S("Keeping %d/%d map blocks loaded"):format(#currently_forceloaded_positions(meta), #compute_forceload_positions(pos, meta))).."]") +end + +minetest.register_node("technic:admin_anchor", { + description = desc, + drawtype = "normal", + tiles = {"technic_admin_anchor.png"}, + is_ground_content = true, + groups = {cracky=3, not_in_creative_inventory=1}, + sounds = default.node_sound_stone_defaults(), + after_place_node = function (pos, placer) + local meta = minetest.get_meta(pos) + if placer and placer:is_player() then + meta:set_string("owner", placer:get_player_name()) + end + set_display(pos, meta) + end, + can_dig = function (pos, player) + local meta = minetest.get_meta(pos) + return meta:get_int("locked") == 0 or (player and player:is_player() and player:get_player_name() == meta:get_string("owner")) + end, + on_destruct = function (pos) + local meta = minetest.get_meta(pos) + forceload_off(meta) + end, + on_receive_fields = function (pos, formname, fields, sender) + local meta = minetest.get_meta(pos) + if (meta:get_int("locked") ~= 0 or fields.lock) and + not (sender and sender:is_player() and + sender:get_player_name() == meta:get_string("owner")) then + return + end + if fields.unlock then meta:set_int("locked", 0) end + if fields.lock then meta:set_int("locked", 1) end + if fields.disable or fields.enable or fields.radius then + forceload_off(meta) + if fields.disable then meta:set_int("enabled", 0) end + if fields.enable then meta:set_int("enabled", 1) end + if fields.radius and string.find(fields.radius, "^[0-9]+$") and tonumber(fields.radius) < 256 then meta:set_int("radius", fields.radius) end + if meta:get_int("enabled") ~= 0 then + forceload_on(pos, meta) + end + end + set_display(pos, meta) + end, +}) diff --git a/technic/machines/other/coal_alloy_furnace.lua b/technic/machines/other/coal_alloy_furnace.lua new file mode 100644 index 0000000..58af679 --- /dev/null +++ b/technic/machines/other/coal_alloy_furnace.lua @@ -0,0 +1,177 @@ + +-- Fuel driven alloy furnace. This uses no EUs: + +local S = technic.getter + +minetest.register_craft({ + output = 'technic:coal_alloy_furnace', + recipe = { + {'default:brick', 'default:brick', 'default:brick'}, + {'default:brick', '', 'default:brick'}, + {'default:brick', 'default:brick', 'default:brick'}, + } +}) + +local machine_name = S("Fuel-Fired Alloy Furnace") +local formspec = + "size[8,9]".. + "label[0,0;"..machine_name.."]".. + "image[2,2;1,1;default_furnace_fire_bg.png]".. + "list[current_name;fuel;2,3;1,1;]".. + "list[current_name;src;2,1;2,1;]".. + "list[current_name;dst;5,1;2,2;]".. + "list[current_player;main;0,5;8,4;]".. + "listring[current_name;dst]".. + "listring[current_player;main]".. + "listring[current_name;src]".. + "listring[current_player;main]".. + "listring[current_name;fuel]".. + "listring[current_player;main]" + +minetest.register_node("technic:coal_alloy_furnace", { + description = machine_name, + tiles = {"technic_coal_alloy_furnace_top.png", "technic_coal_alloy_furnace_bottom.png", + "technic_coal_alloy_furnace_side.png", "technic_coal_alloy_furnace_side.png", + "technic_coal_alloy_furnace_side.png", "technic_coal_alloy_furnace_front.png"}, + paramtype2 = "facedir", + groups = {cracky=2}, + legacy_facedir_simple = true, + sounds = default.node_sound_stone_defaults(), + on_construct = function(pos) + local meta = minetest.get_meta(pos) + meta:set_string("formspec", formspec) + meta:set_string("infotext", machine_name) + local inv = meta:get_inventory() + inv:set_size("fuel", 1) + inv:set_size("src", 2) + inv:set_size("dst", 4) + end, + can_dig = technic.machine_can_dig, + allow_metadata_inventory_put = technic.machine_inventory_put, + allow_metadata_inventory_take = technic.machine_inventory_take, + allow_metadata_inventory_move = technic.machine_inventory_move, +}) + +minetest.register_node("technic:coal_alloy_furnace_active", { + description = machine_name, + tiles = {"technic_coal_alloy_furnace_top.png", "technic_coal_alloy_furnace_bottom.png", + "technic_coal_alloy_furnace_side.png", "technic_coal_alloy_furnace_side.png", + "technic_coal_alloy_furnace_side.png", "technic_coal_alloy_furnace_front_active.png"}, + paramtype2 = "facedir", + light_source = 8, + drop = "technic:coal_alloy_furnace", + groups = {cracky=2, not_in_creative_inventory=1}, + legacy_facedir_simple = true, + sounds = default.node_sound_stone_defaults(), + can_dig = technic.machine_can_dig, + allow_metadata_inventory_put = technic.machine_inventory_put, + allow_metadata_inventory_take = technic.machine_inventory_take, + allow_metadata_inventory_move = technic.machine_inventory_move, +}) + +minetest.register_abm({ + nodenames = {"technic:coal_alloy_furnace", "technic:coal_alloy_furnace_active"}, + interval = 1, + chance = 1, + action = function(pos, node, active_object_count, active_object_count_wider) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + + if inv:get_size("src") == 1 then -- Old furnace -> convert it + inv:set_size("src", 2) + inv:set_stack("src", 2, inv:get_stack("src2", 1)) + inv:set_size("src2", 0) + end + + local recipe = nil + + for i, name in pairs({ + "fuel_totaltime", + "fuel_time", + "src_totaltime", + "src_time"}) do + if not meta:get_float(name) then + meta:set_float(name, 0.0) + end + end + + -- Get what to cook if anything + local result = technic.get_recipe("alloy", inv:get_list("src")) + + local was_active = false + + if meta:get_float("fuel_time") < meta:get_float("fuel_totaltime") then + was_active = true + meta:set_int("fuel_time", meta:get_int("fuel_time") + 1) + if result then + meta:set_int("src_time", meta:get_int("src_time") + 1) + if meta:get_int("src_time") >= result.time then + meta:set_int("src_time", 0) + local result_stack = ItemStack(result.output) + if inv:room_for_item("dst", result_stack) then + inv:set_list("src", result.new_input) + inv:add_item("dst", result_stack) + end + end + else + meta:set_int("src_time", 0) + end + end + + if meta:get_float("fuel_time") < meta:get_float("fuel_totaltime") then + local percent = math.floor(meta:get_float("fuel_time") / + meta:get_float("fuel_totaltime") * 100) + meta:set_string("infotext", S("%s Active"):format(machine_name).." ("..percent.."%)") + technic.swap_node(pos, "technic:coal_alloy_furnace_active") + meta:set_string("formspec", + "size[8,9]".. + "label[0,0;"..machine_name.."]".. + "image[2,2;1,1;default_furnace_fire_bg.png^[lowpart:".. + (100 - percent)..":default_furnace_fire_fg.png]".. + "list[current_name;fuel;2,3;1,1;]".. + "list[current_name;src;2,1;2,1;]".. + "list[current_name;dst;5,1;2,2;]".. + "list[current_player;main;0,5;8,4;]".. + "listring[current_name;dst]".. + "listring[current_player;main]".. + "listring[current_name;src]".. + "listring[current_player;main]".. + "listring[current_name;fuel]".. + "listring[current_player;main]") + return + end + + local recipe = technic.get_recipe("alloy", inv:get_list("src")) + + if not recipe then + if was_active then + meta:set_string("infotext", S("%s is empty"):format(machine_name)) + technic.swap_node(pos, "technic:coal_alloy_furnace") + meta:set_string("formspec", formspec) + end + return + end + + -- Next take a hard look at the fuel situation + local fuel = nil + local afterfuel + local fuellist = inv:get_list("fuel") + + if fuellist then + fuel, afterfuel = minetest.get_craft_result({method = "fuel", width = 1, items = fuellist}) + end + + if fuel.time <= 0 then + meta:set_string("infotext", S("%s Out Of Fuel"):format(machine_name)) + technic.swap_node(pos, "technic:coal_alloy_furnace") + meta:set_string("formspec", formspec) + return + end + + meta:set_string("fuel_totaltime", fuel.time) + meta:set_string("fuel_time", 0) + + inv:set_stack("fuel", 1, afterfuel.items[1]) + end, +}) + diff --git a/technic/machines/other/coal_furnace.lua b/technic/machines/other/coal_furnace.lua new file mode 100644 index 0000000..53a0f8b --- /dev/null +++ b/technic/machines/other/coal_furnace.lua @@ -0,0 +1,5 @@ +local S = technic.getter + +if minetest.registered_nodes["default:furnace"].description == "Furnace" then + minetest.override_item("default:furnace", { description = S("Fuel-Fired Furnace") }) +end diff --git a/technic/machines/other/constructor.lua b/technic/machines/other/constructor.lua new file mode 100644 index 0000000..3396ac7 --- /dev/null +++ b/technic/machines/other/constructor.lua @@ -0,0 +1,189 @@ + +local S = technic.getter + +local function deploy_node(inv, slot_name, pos, node, machine_node) + if node.name ~= "air" then + if node.name == "ignore" or + node.name == "default:lava_source" or + node.name == "default:lava_flowing" or + node.name == "default:water_source" or + node.name == "default:water_flowing" then + return + end + local drops = minetest.get_node_drops(node.name, "") + local remove_to = false + for i, item in ipairs(drops) do + if not inv:room_for_item(slot_name, item) then + remove_to = i - 1 + break + end + inv:add_item(slot_name, item) + end + if remove_to then + for i = 1, remove_to do + inv:remove_item(drops[i]) + end + else + minetest.remove_node(pos) + end + return + end + if not inv:is_empty(slot_name) then + local stack = inv:get_list(slot_name)[1] + local def = stack:get_definition() + if def.type == "node" then + minetest.set_node(pos, { + name = stack:get_name(), + param2 = machine_node.param2 + }) + stack:take_item() + inv:set_stack(slot_name, 1, stack) + elseif def.type == "craft" then + if def.on_place then + -- Use pcall to avoid nil placer errors. + -- TODO: Do without pcall. + local ok, stk = pcall(def.on_place, stack, nil, { + -- Fake pointed_thing + type = "node", + above = pos, + under = {x=pos.x, y=pos.y-1, z=pos.z}, + }) + if ok then + inv:set_stack(slot_name, 1, stk or stack) + return + end + end + minetest.item_place_object(stack, nil, { + -- Fake pointed_thing + type = "node", + above = pos, + under = pos, + }) + inv:set_stack(slot_name, 1, nil) + end + end +end + +minetest.register_craft({ + type = "shapeless", + output = 'technic:constructor_mk1_off 1', + recipe = {'technic:nodebreaker_off', 'technic:deployer_off'}, + +}) +minetest.register_craft({ + type = "shapeless", + output = 'technic:constructor_mk2_off 1', + recipe = {'technic:constructor_mk1_off', 'technic:constructor_mk1_off'}, + +}) + +minetest.register_craft({ + type = "shapeless", + output = 'technic:constructor_mk3_off 1', + recipe = {'technic:constructor_mk2_off', 'technic:constructor_mk2_off'}, + +}) + +local function make_on(mark, length) + return function(pos, node) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + local dir = vector.new() + if node.param2 == 3 then dir.x = 1 end + if node.param2 == 2 then dir.z = 1 end + if node.param2 == 1 then dir.x = -1 end + if node.param2 == 0 then dir.z = -1 end + + local place_pos = vector.new(pos) + + if node.name == "technic:constructor_mk"..mark.."_off" then + technic.swap_node(pos, "technic:constructor_mk"..mark.."_on") + nodeupdate(pos) + for i = 1, length do + place_pos = vector.add(place_pos, dir) + local place_node = minetest.get_node(place_pos) + deploy_node(inv, "slot"..i, place_pos, place_node, node) + end + end + end +end + +local function make_off(mark) + return function(pos, node) + if node.name == "technic:constructor_mk"..mark.."_on" then + technic.swap_node(pos,"technic:constructor_mk"..mark.."_off") + nodeupdate(pos) + end + end +end + + +local function make_constructor(mark, length) + minetest.register_node("technic:constructor_mk"..mark.."_off", { + description = S("Constructor Mk%d"):format(mark), + tiles = {"technic_constructor_mk"..mark.."_top_off.png", + "technic_constructor_mk"..mark.."_bottom_off.png", + "technic_constructor_mk"..mark.."_side2_off.png", + "technic_constructor_mk"..mark.."_side1_off.png", + "technic_constructor_back.png", + "technic_constructor_front_off.png"}, + paramtype2 = "facedir", + groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2, mesecon = 2}, + mesecons = {effector = {action_on = make_on(mark, length)}}, + sounds = default.node_sound_stone_defaults(), + on_construct = function(pos) + local meta = minetest.get_meta(pos) + local formspec = "size[8,9;]".. + "label[0,0;"..S("Constructor Mk%d"):format(mark).."]".. + "list[current_player;main;0,5;8,4;]" + for i = 1, length do + formspec = formspec + .."label[5,"..(i - 1)..";"..S("Slot %d"):format(i).."]" + .."list[current_name;slot"..i + ..";6,"..(i - 1)..";1,1;]" + end + meta:set_string("formspec", formspec) + meta:set_string("infotext", S("Constructor Mk%d"):format(mark)) + local inv = meta:get_inventory() + for i = 1, length do + inv:set_size("slot"..i, 1) + end + end, + can_dig = function(pos, player) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + for i = 1, length do + if not inv:is_empty("slot"..i) then + return false + end + end + return true + end, + allow_metadata_inventory_put = technic.machine_inventory_put, + allow_metadata_inventory_take = technic.machine_inventory_take, + allow_metadata_inventory_move = technic.machine_inventory_move, + }) + + minetest.register_node("technic:constructor_mk"..mark.."_on", { + tiles = {"technic_constructor_mk"..mark.."_top_on.png", + "technic_constructor_mk"..mark.."_bottom_on.png", + "technic_constructor_mk"..mark.."_side2_on.png", + "technic_constructor_mk"..mark.."_side1_on.png", + "technic_constructor_back.png", + "technic_constructor_front_on.png"}, + paramtype2 = "facedir", + drop = "technic:constructor_mk"..mark.."_off", + groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2, + mesecon=2, not_in_creative_inventory=1}, + mesecons= {effector = {action_off = make_off(mark)}}, + sounds = default.node_sound_stone_defaults(), + allow_metadata_inventory_put = technic.machine_inventory_put, + allow_metadata_inventory_take = technic.machine_inventory_take, + allow_metadata_inventory_move = technic.machine_inventory_move, + }) +end + +make_constructor(1, 1) +make_constructor(2, 2) +make_constructor(3, 4) + diff --git a/technic/machines/other/frames.lua b/technic/machines/other/frames.lua new file mode 100644 index 0000000..b3f39b9 --- /dev/null +++ b/technic/machines/other/frames.lua @@ -0,0 +1,928 @@ + +local S = technic.getter + +frames = {} + +local infinite_stacks = minetest.setting_getbool("creative_mode") and minetest.get_modpath("unified_inventory") == nil + +local frames_pos = {} + +-- Helpers + +local function get_face(pos,ppos,pvect) + -- Raytracer to get which face has been clicked + ppos={x=ppos.x-pos.x,y=ppos.y-pos.y+1.5,z=ppos.z-pos.z} + if pvect.x>0 then + local t=(-0.5-ppos.x)/pvect.x + local y_int=ppos.y+t*pvect.y + local z_int=ppos.z+t*pvect.z + if y_int>-0.45 and y_int<0.45 and z_int>-0.45 and z_int<0.45 then return 1 end + elseif pvect.x<0 then + local t=(0.5-ppos.x)/pvect.x + local y_int=ppos.y+t*pvect.y + local z_int=ppos.z+t*pvect.z + if y_int>-0.45 and y_int<0.45 and z_int>-0.45 and z_int<0.45 then return 2 end + end + if pvect.y>0 then + local t=(-0.5-ppos.y)/pvect.y + local x_int=ppos.x+t*pvect.x + local z_int=ppos.z+t*pvect.z + if x_int>-0.45 and x_int<0.45 and z_int>-0.45 and z_int<0.45 then return 3 end + elseif pvect.y<0 then + local t=(0.5-ppos.y)/pvect.y + local x_int=ppos.x+t*pvect.x + local z_int=ppos.z+t*pvect.z + if x_int>-0.45 and x_int<0.45 and z_int>-0.45 and z_int<0.45 then return 4 end + end + if pvect.z>0 then + local t=(-0.5-ppos.z)/pvect.z + local x_int=ppos.x+t*pvect.x + local y_int=ppos.y+t*pvect.y + if x_int>-0.45 and x_int<0.45 and y_int>-0.45 and y_int<0.45 then return 5 end + elseif pvect.z<0 then + local t=(0.5-ppos.z)/pvect.z + local x_int=ppos.x+t*pvect.x + local y_int=ppos.y+t*pvect.y + if x_int>-0.45 and x_int<0.45 and y_int>-0.45 and y_int<0.45 then return 6 end + end +end + +local function lines(str) + local t = {} + local function helper(line) table.insert(t, line) return "" end + helper((str:gsub("(.-)\r?\n", helper))) + return t +end + +local function pos_to_string(pos) + if pos.x == 0 then pos.x = 0 end -- Fix for signed 0 + if pos.y == 0 then pos.y = 0 end -- Fix for signed 0 + if pos.z == 0 then pos.z = 0 end -- Fix for signed 0 + return tostring(pos.x).."\n"..tostring(pos.y).."\n"..tostring(pos.z) +end + +local function pos_from_string(str) + local l = lines(str) + return {x = tonumber(l[1]), y = tonumber(l[2]), z = tonumber(l[3])} +end + +local function pos_in_list(l,pos) + for _,p in ipairs(l) do + if p.x==pos.x and p.y==pos.y and p.z==pos.z then return true end + end + return false +end + +local function table_empty(table) + for _, __ in pairs(table) do + return false + end + return true +end + +local function add_table(table,toadd) + local i = 1 + while true do + o = table[i] + if o == toadd then return end + if o == nil then break end + i = i+1 + end + table[i] = toadd +end + +local function move_nodes_vect(poslist,vect,must_not_move,owner) + if minetest.is_protected then + for _,pos in ipairs(poslist) do + local npos=vector.add(pos,vect) + if minetest.is_protected(pos, owner) or minetest.is_protected(npos, owner) then + return + end + end + end + for _,pos in ipairs(poslist) do + local npos=vector.add(pos,vect) + local name = minetest.get_node(npos).name + if ((name~="air" and minetest.registered_nodes[name].liquidtype=="none") or frames_pos[pos_to_string(npos)]) and not(pos_in_list(poslist,npos)) then + return + end + --[[if pos.x==must_not_move.x and pos.y==must_not_move.y and pos.z==must_not_move.z then + return + end]] + end + local nodelist = {} + for _, pos in ipairs(poslist) do + local node = minetest.get_node(pos) + local meta = minetest.get_meta(pos):to_table() + nodelist[#(nodelist)+1] = {oldpos = pos, pos = vector.add(pos, vect), node = node, meta = meta} + end + local objects = {} + for _, pos in ipairs(poslist) do + for _,object in ipairs(minetest.get_objects_inside_radius(pos, 1)) do + local entity = object:get_luaentity() + if not entity or not mesecon.is_mvps_unmov(entity.name) then + add_table(objects, object) + end + end + end + for _, obj in ipairs(objects) do + obj:setpos(vector.add(obj:getpos(), vect)) + end + for _,n in ipairs(nodelist) do + local npos = n.pos + minetest.set_node(npos, n.node) + local meta = minetest.get_meta(npos) + meta:from_table(n.meta) + for __,pos in ipairs(poslist) do + if npos.x == pos.x and npos.y == pos.y and npos.z == pos.z then + table.remove(poslist, __) + break + end + end + end + for __, pos in ipairs(poslist) do + minetest.remove_node(pos) + end + for _, callback in ipairs(mesecon.on_mvps_move) do + callback(nodelist) + end +end + +local function is_supported_node(name) + return ((string.find(name, "tube") ~= nil) and (string.find(name, "pipeworks") ~= nil)) +end + + +-- Frames +for xm=0,1 do +for xp=0,1 do +for ym=0,1 do +for yp=0,1 do +for zm=0,1 do +for zp=0,1 do + +local a=8/16 +local b=7/16 +local nodeboxes= { + { -a, -a, -a, -b, a, -b }, + { -a, -a, b, -b, a, a }, + { b, -a, b, a, a, a }, + { b, -a, -a, a, a, -b }, + + { -b, b, -a, b, a, -b }, + { -b, -a, -a, b, -b, -b }, + + { -b, b, b, b, a, a }, + { -b, -a, b, b, -b, a }, + + { b, b, -b, a, a, b }, + { b, -a, -b, a, -b, b }, + + { -a, b, -b, -b, a, b }, + { -a, -a, -b, -b, -b, b }, + } + + if yp==0 then + table.insert(nodeboxes, {-b,b,-b, b,a,b}) + end + if ym==0 then + table.insert(nodeboxes, {-b,-a,-b, b,-b,b}) + end + if xp==0 then + table.insert(nodeboxes, {b,b,b,a,-b,-b}) + end + if xm==0 then + table.insert(nodeboxes, {-a,-b,-b,-b,b,b}) + end + if zp==0 then + table.insert(nodeboxes, {-b,-b,b, b,b,a}) + end + if zm==0 then + table.insert(nodeboxes, {-b,-b,-a, b,b,-b}) + end + + local nameext=tostring(xm)..tostring(xp)..tostring(ym)..tostring(yp)..tostring(zm)..tostring(zp) + local groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2} + if nameext~="111111" then groups.not_in_creative_inventory=1 end + + + minetest.register_node("technic:frame_"..nameext,{ + description = S("Frame"), + tiles = {"technic_frame.png"}, + groups=groups, + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed=nodeboxes, + }, + selection_box = { + type="fixed", + fixed={-0.5,-0.5,-0.5,0.5,0.5,0.5} + }, + paramtype = "light", + frame=1, + drop="technic:frame_111111", + sunlight_propagates = true, + frame_connect_all=function(nodename) + l2={} + l1={{x=-1,y=0,z=0},{x=1,y=0,z=0},{x=0,y=-1,z=0},{x=0,y=1,z=0},{x=0,y=0,z=-1},{x=0,y=0,z=1}} + for i,dir in ipairs(l1) do + if string.sub(nodename,-7+i,-7+i)=="1" then + l2[#(l2)+1]=dir + end + end + return l2 + end, + on_punch=function(pos,node,puncher) + local ppos=puncher:getpos() + local pvect=puncher:get_look_dir() + local pface=get_face(pos,ppos,pvect) + if pface==nil then return end + local nodename=node.name + local newstate=tostring(1-tonumber(string.sub(nodename,-7+pface,-7+pface))) + if pface<=5 then + nodename=string.sub(nodename,1,-7+pface-1)..newstate..string.sub(nodename,-7+pface+1) + else + nodename=string.sub(nodename,1,-2)..newstate + end + node.name=nodename + minetest.set_node(pos,node) + end, + on_place = function(itemstack, placer, pointed_thing) + local pos = pointed_thing.above + if minetest.is_protected(pos, placer:get_player_name()) then + minetest.log("action", placer:get_player_name() + .. " tried to place " .. itemstack:get_name() + .. " at protected position " + .. minetest.pos_to_string(pos)) + minetest.record_protection_violation(pos, placer:get_player_name()) + return itemstack + end + if pos == nil then return end + local node = minetest.get_node(pos) + if node.name ~= "air" then + if is_supported_node(node.name) then + obj = minetest.add_entity(pos, "technic:frame_entity") + obj:get_luaentity():set_node({name=itemstack:get_name()}) + end + else + minetest.set_node(pos, {name = itemstack:get_name()}) + end + if not infinite_stacks then + itemstack:take_item() + end + return itemstack + end, + on_rightclick = function(pos, node, placer, itemstack, pointed_thing) + if is_supported_node(itemstack:get_name()) then + if minetest.is_protected(pos, placer:get_player_name()) then + minetest.log("action", placer:get_player_name() + .. " tried to place " .. itemstack:get_name() + .. " at protected position " + .. minetest.pos_to_string(pos)) + minetest.record_protection_violation(pos, placer:get_player_name()) + return itemstack + end + + minetest.set_node(pos, {name = itemstack:get_name()}) + + local take_item = true + local def = minetest.registered_items[itemstack:get_name()] + -- Run callback + if def.after_place_node then + -- Copy place_to because callback can modify it + local pos_copy = {x=pos.x, y=pos.y, z=pos.z} + if def.after_place_node(pos_copy, placer, itemstack) then + take_item = false + end + end + + -- Run script hook + local _, callback + for _, callback in ipairs(minetest.registered_on_placenodes) do + -- Copy pos and node because callback can modify them + local pos_copy = {x=pos.x, y=pos.y, z=pos.z} + local newnode_copy = {name=def.name, param1=0, param2=0} + local oldnode_copy = {name="air", param1=0, param2=0} + if callback(pos_copy, newnode_copy, placer, oldnode_copy, itemstack) then + take_item = false + end + end + + if take_item then + itemstack:take_item() + end + + obj = minetest.add_entity(pos, "technic:frame_entity") + obj:get_luaentity():set_node({name=node.name}) + + return itemstack + else + --local pointed_thing = {type = "node", under = pos} + if pointed_thing then + minetest.item_place_node(itemstack, placer, pointed_thing) + end + end + end, + }) + +end +end +end +end +end +end + +minetest.register_entity("technic:frame_entity", { + initial_properties = { + physical = true, + collisionbox = {-0.5,-0.5,-0.5, 0.5,0.5,0.5}, + visual = "wielditem", + textures = {}, + visual_size = {x=0.667, y=0.667}, + }, + + node = {}, + + set_node = function(self, node) + self.node = node + local pos = self.object:getpos() + pos = {x = math.floor(pos.x+0.5), y = math.floor(pos.y+0.5), z = math.floor(pos.z+0.5)} + frames_pos[pos_to_string(pos)] = node.name + local stack = ItemStack(node.name) + local itemtable = stack:to_table() + local itemname = nil + if itemtable then + itemname = stack:to_table().name + end + local item_texture = nil + local item_type = "" + if minetest.registered_items[itemname] then + item_texture = minetest.registered_items[itemname].inventory_image + item_type = minetest.registered_items[itemname].type + end + prop = { + is_visible = true, + textures = {node.name}, + } + self.object:set_properties(prop) + end, + + get_staticdata = function(self) + return self.node.name + end, + + on_activate = function(self, staticdata) + self.object:set_armor_groups({immortal=1}) + self:set_node({name=staticdata}) + end, + + dig = function(self) + minetest.handle_node_drops(self.object:getpos(), {ItemStack("technic:frame_111111")}, self.last_puncher) + local pos = self.object:getpos() + pos = {x = math.floor(pos.x+0.5), y = math.floor(pos.y+0.5), z = math.floor(pos.z+0.5)} + frames_pos[pos_to_string(pos)] = nil + self.object:remove() + end, + + on_punch = function(self, puncher, time_from_last_punch, tool_capabilities, dir) + local pos = self.object:getpos() + if self.damage_object == nil then + self.damage_object = minetest.add_entity(pos, "technic:damage_entity") + self.damage_object:get_luaentity().remaining_time = 0.25 + self.damage_object:get_luaentity().frame_object = self + self.damage_object:get_luaentity().texture_index = 0 + self.damage_object:get_luaentity().texture_change_time = 0.15 + else + self.damage_object:get_luaentity().remaining_time = 0.25 + end + self.last_puncher = puncher + local ppos = puncher:getpos() + local pvect = puncher:get_look_dir() + local pface = get_face(pos,ppos,pvect) + if pface == nil then return end + local nodename = self.node.name + local newstate = tostring(1-tonumber(string.sub(nodename, -7+pface, -7+pface))) + if pface <= 5 then + nodename = string.sub(nodename, 1, -7+pface-1)..newstate..string.sub(nodename, -7+pface+1) + else + nodename = string.sub(nodename, 1, -2)..newstate + end + self.node.name = nodename + self:set_node(self.node) + end, + + on_rightclick = function(self, clicker) + local pos = self.object:getpos() + local ppos = clicker:getpos() + local pvect = clicker:get_look_dir() + local pface = get_face(pos, ppos, pvect) + if pface == nil then return end + local pos_under = {x = math.floor(pos.x+0.5), y = math.floor(pos.y+0.5), z = math.floor(pos.z+0.5)} + local pos_above = {x = pos_under.x, y = pos_under.y, z = pos_under.z} + local index = ({"x", "y", "z"})[math.floor((pface+1)/2)] + pos_above[index] = pos_above[index] + 2*((pface+1)%2) - 1 + local pointed_thing = {type = "node", under = pos_under, above = pos_above} + local itemstack = clicker:get_wielded_item() + local itemdef = minetest.registered_items[itemstack:get_name()] + if itemdef ~= nil then + itemdef.on_place(itemstack, clicker, pointed_thing) + end + end, +}) + +local crack = "crack_anylength.png^[verticalframe:5:0" +minetest.register_entity("technic:damage_entity", { + initial_properties = { + visual = "cube", + visual_size = {x=1.01, y=1.01}, + textures = {crack, crack, crack, crack, crack, crack}, + collisionbox = {0, 0, 0, 0, 0, 0}, + physical = false, + }, + on_step = function(self, dtime) + if self.remaining_time == nil then + self.object:remove() + self.frame_object.damage_object = nil + end + self.remaining_time = self.remaining_time - dtime + if self.remaining_time < 0 then + self.object:remove() + self.frame_object.damage_object = nil + end + self.texture_change_time = self.texture_change_time - dtime + if self.texture_change_time < 0 then + self.texture_change_time = self.texture_change_time + 0.15 + self.texture_index = self.texture_index + 1 + if self.texture_index == 5 then + self.object:remove() + self.frame_object.damage_object = nil + self.frame_object:dig() + end + local ct = "crack_anylength.png^[verticalframe:5:"..self.texture_index + self.object:set_properties({textures = {ct, ct, ct, ct, ct, ct}}) + end + end, +}) + +mesecon.register_mvps_unmov("technic:frame_entity") +mesecon.register_mvps_unmov("technic:damage_entity") +mesecon.register_on_mvps_move(function(moved_nodes) + local to_move = {} + for _, n in ipairs(moved_nodes) do + if frames_pos[pos_to_string(n.oldpos)] ~= nil then + to_move[#to_move+1] = {pos = n.pos, oldpos = n.oldpos, name = frames_pos[pos_to_string(n.oldpos)]} + frames_pos[pos_to_string(n.oldpos)] = nil + end + end + if #to_move > 0 then + for _, t in ipairs(to_move) do + frames_pos[pos_to_string(t.pos)] = t.name + local objects = minetest.get_objects_inside_radius(t.oldpos, 0.1) + for _, obj in ipairs(objects) do + local entity = obj:get_luaentity() + if entity and (entity.name == "technic:frame_entity" or entity.name == "technic:damage_entity") then + obj:setpos(t.pos) + end + end + end + end +end) + +minetest.register_on_dignode(function(pos, node) + if frames_pos[pos_to_string(pos)] ~= nil then + minetest.set_node(pos, {name = frames_pos[pos_to_string(pos)]}) + frames_pos[pos_to_string(pos)] = nil + local objects = minetest.get_objects_inside_radius(pos, 0.1) + for _, obj in ipairs(objects) do + local entity = obj:get_luaentity() + if entity and (entity.name == "technic:frame_entity" or entity.name == "technic:damage_entity") then + obj:remove() + end + end + end +end) + +-- Frame motor +local function connected(pos,c,adj) + for _,vect in ipairs(adj) do + local pos1=vector.add(pos,vect) + local nodename=minetest.get_node(pos1).name + if frames_pos[pos_to_string(pos1)] then + nodename = frames_pos[pos_to_string(pos1)] + end + if not(pos_in_list(c,pos1)) and nodename~="air" and + (minetest.registered_nodes[nodename].frames_can_connect==nil or + minetest.registered_nodes[nodename].frames_can_connect(pos1,vect)) then + c[#(c)+1]=pos1 + if minetest.registered_nodes[nodename].frame==1 then + local adj=minetest.registered_nodes[nodename].frame_connect_all(nodename) + connected(pos1,c,adj) + end + end + end +end + +local function get_connected_nodes(pos) + c={pos} + local nodename=minetest.get_node(pos).name + if frames_pos[pos_to_string(pos)] then + nodename = frames_pos[pos_to_string(pos)] + end + connected(pos,c,minetest.registered_nodes[nodename].frame_connect_all(nodename)) + return c +end + +local function frame_motor_on(pos, node) + local dirs = {{x=0,y=1,z=0},{x=0,y=0,z=1},{x=0,y=0,z=-1},{x=1,y=0,z=0},{x=-1,y=0,z=0},{x=0,y=-1,z=0}} + local nnodepos = vector.add(pos, dirs[math.floor(node.param2/4)+1]) + local dir = minetest.facedir_to_dir(node.param2) + local nnode=minetest.get_node(nnodepos) + if frames_pos[pos_to_string(nnodepos)] then + nnode.name = frames_pos[pos_to_string(nnodepos)] + end + local meta = minetest.get_meta(pos) + if meta:get_int("last_moved") == minetest.get_gametime() then + return + end + local owner = meta:get_string("owner") + if minetest.registered_nodes[nnode.name].frame==1 then + local connected_nodes=get_connected_nodes(nnodepos) + move_nodes_vect(connected_nodes,dir,pos,owner) + end + minetest.get_meta(vector.add(pos, dir)):set_int("last_moved", minetest.get_gametime()) +end + +minetest.register_node("technic:frame_motor",{ + description = S("Frame Motor"), + tiles = {"pipeworks_filter_top.png^[transformR90", "technic_lv_cable.png", "technic_lv_cable.png", + "technic_lv_cable.png", "technic_lv_cable.png", "technic_lv_cable.png"}, + groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2,mesecon=2}, + paramtype2 = "facedir", + mesecons={effector={action_on=frame_motor_on}}, + after_place_node = function(pos, placer, itemstack) + local meta = minetest.get_meta(pos) + meta:set_string("owner", placer:get_player_name()) + end, + frames_can_connect=function(pos,dir) + local node = minetest.get_node(pos) + local dir2 = ({{x=0,y=1,z=0},{x=0,y=0,z=1},{x=0,y=0,z=-1},{x=1,y=0,z=0},{x=-1,y=0,z=0},{x=0,y=-1,z=0}})[math.floor(node.param2/4)+1] + return dir2.x~=-dir.x or dir2.y~=-dir.y or dir2.z~=-dir.z + end +}) + + + +-- Templates +local function template_connected(pos,c,connectors) + for _,vect in ipairs({{x=0,y=1,z=0},{x=0,y=0,z=1},{x=0,y=0,z=-1},{x=1,y=0,z=0},{x=-1,y=0,z=0},{x=0,y=-1,z=0}}) do + local pos1=vector.add(pos,vect) + local nodename=minetest.get_node(pos1).name + if not(pos_in_list(c,pos1)) and (nodename=="technic:template" or nodename == "technic:template_connector")then + local meta = minetest.get_meta(pos1) + if meta:get_string("connected") == "" then + c[#(c)+1]=pos1 + template_connected(pos1,c,connectors) + if nodename == "technic:template_connector" then + connectors[#connectors+1] = pos1 + end + end + end + end +end + +local function get_templates(pos) + local c = {pos} + local connectors + if minetest.get_node(pos).name == "technic:template_connector" then + connectors = {pos} + else + connectors = {} + end + template_connected(pos,c,connectors) + return c, connectors +end + +local function swap_template(pos, new) + local meta = minetest.get_meta(pos) + local saved_node = meta:get_string("saved_node") + meta:set_string("saved_node", "") + technic.swap_node(pos, new) + local meta = minetest.get_meta(pos) + meta:set_string("saved_node", saved_node) +end + +local function save_node(pos) + local node = minetest.get_node(pos) + if node.name == "air" then + minetest.set_node(pos, {name="technic:template"}) + return + end + if node.name == "technic:template" then + swap_template(pos, "technic:template_connector") + local meta = minetest.get_meta(pos) + meta:set_string("connected", "") + return + end + local meta = minetest.get_meta(pos) + local meta0 = meta:to_table() + for _, list in pairs(meta0.inventory) do + for key, stack in pairs(list) do + list[key] = stack:to_string() + end + end + node.meta = meta0 + minetest.set_node(pos, {name="technic:template"}) + return node +end + +local function restore_node(pos, node) + minetest.set_node(pos, node) + local meta = minetest.get_meta(pos) + for _, list in pairs(node.meta.inventory) do + for key, stack in pairs(list) do + list[key] = ItemStack(stack) + end + end + meta:from_table(node.meta) +end + +local function expand_template(pos) + local meta = minetest.get_meta(pos) + local c = meta:get_string("connected") + if c == "" then return end + c = minetest.deserialize(c) + for _, vect in ipairs(c) do + local pos1 = vector.add(pos, vect) + local saved_node = save_node(pos1) + local meta1 = minetest.get_meta(pos1) + if saved_node ~= nil then + meta1:set_string("saved_node", minetest.serialize(saved_node)) + else + --meta1:set_string("saved_node", "") + end + end +end + +local function compress_templates(pos) + local templates, connectors = get_templates(pos) + if #connectors == 0 then + connectors = {pos} + end + for _, cn in ipairs(connectors) do + local meta = minetest.get_meta(cn) + local c = {} + for _,p in ipairs(templates) do + local np = vector.subtract(p, cn) + if not pos_in_list(c,np) then + c[#c+1] = np + end + end + local cc = {} + for _,p in ipairs(connectors) do + local np = vector.subtract(p, cn) + if (np.x ~= 0 or np.y ~= 0 or np.z ~= 0) then + cc[pos_to_string(np)] = true + end + end + swap_template(cn, "technic:template") + meta:set_string("connected", minetest.serialize(c)) + meta:set_string("connectors_connected", minetest.serialize(cc)) + end + + for _,p in ipairs(templates) do + if not pos_in_list(connectors, p) then + minetest.set_node(p, {name = "air"}) + end + end +end + +local function template_drops(pos, node, oldmeta, digger) + local c = oldmeta.fields.connected + local cc = oldmeta.fields.connectors_connected + local drops + if c == "" or c == nil then + drops = {"technic:template 1"} + else + if cc == "" or cc == nil then + drops = {"technic:template 1"} + else + local dcc = minetest.deserialize(cc) + if not table_empty(dcc) then + drops = {} + for sp, _ in pairs(dcc) do + local ssp = pos_from_string(sp) + local p = vector.add(ssp, pos) + local meta = minetest.get_meta(p) + local d = minetest.deserialize(meta:get_string("connectors_connected")) + if d ~= nil then + d[pos_to_string({x=-ssp.x, y=-ssp.y, z=-ssp.z})] = nil + meta:set_string("connectors_connected", minetest.serialize(d)) + end + end + else + local stack_max = 99 + local num = #(minetest.deserialize(c)) + drops = {} + while num > stack_max do + drops[#drops+1] = "technic:template "..stack_max + num = num - stack_max + end + drops[#drops+1] = "technic:template "..num + end + end + end + minetest.handle_node_drops(pos, drops, digger) +end + +local function template_on_destruct(pos, node) + local meta = minetest.get_meta(pos) + local saved_node = meta:get_string("saved_node") + if saved_node ~= "" then + local nnode = minetest.deserialize(saved_node) + minetest.after(0, restore_node, pos, nnode) + end +end + +minetest.register_node("technic:template",{ + description = S("Template"), + tiles = {"technic_mv_cable.png"}, + drop = "", + groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2}, + on_destruct = template_on_destruct, + after_dig_node = template_drops, + on_punch = function(pos,node,puncher) + swap_template(pos, "technic:template_disabled") + end +}) + +minetest.register_node("technic:template_disabled",{ + description = S("Template"), + tiles = {"technic_hv_cable.png"}, + drop = "", + groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2,not_in_creative_inventory=1}, + on_destruct = template_on_destruct, + after_dig_node = template_drops, + on_punch = function(pos,node,puncher) + local meta = minetest.get_meta(pos) + swap_template(pos, "technic:template_connector") + end +}) + +minetest.register_node("technic:template_connector",{ + description = S("Template"), + tiles = {"technic_lv_cable.png"}, + drop = "", + groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2,not_in_creative_inventory=1}, + on_destruct = template_on_destruct, + after_dig_node = template_drops, + on_punch = function(pos,node,puncher) + swap_template(pos, "technic:template") + end +}) + +minetest.register_craftitem("technic:template_replacer",{ + description = S("Template (replacing)"), + inventory_image = "technic_template_replacer.png", + on_place = function(itemstack, placer, pointed_thing) + local p = pointed_thing.under + if minetest.is_protected and minetest.is_protected(p, placer:get_player_name()) then + return nil + end + local node = minetest.get_node(p) + if node.name == "technic:template" then return end + local saved_node = save_node(p) + itemstack:take_item() + if saved_node ~= nil then + local meta = minetest.get_meta(p) + meta:set_string("saved_node", minetest.serialize(saved_node)) + end + return itemstack + end +}) + +minetest.register_tool("technic:template_tool",{ + description = S("Template Tool"), + inventory_image = "technic_template_tool.png", + on_use = function(itemstack, puncher, pointed_thing) + local pos = pointed_thing.under + if pos == nil or (minetest.is_protected and minetest.is_protected(pos, puncher:get_player_name())) then + return nil + end + local node = minetest.get_node(pos) + if node.name ~= "technic:template" and node.name ~= "technic:template_connector" then return end + local meta = minetest.get_meta(pos) + local c2 = meta:get_string("connected") + if c2 ~= "" then + expand_template(pos) + else + compress_templates(pos) + end + + end +}) + + + +-- Template motor +local function get_template_nodes(pos) + local meta = minetest.get_meta(pos) + local connected = meta:get_string("connected") + if connected == "" then return {} end + local adj = minetest.deserialize(connected) + local c = {} + for _,vect in ipairs(adj) do + local pos1=vector.add(pos,vect) + local nodename=minetest.get_node(pos1).name + if not(pos_in_list(c,pos1)) and nodename~="air" then + c[#(c)+1]=pos1 + end + end + return c +end + +local function template_motor_on(pos, node) + local dirs = {{x=0,y=1,z=0},{x=0,y=0,z=1},{x=0,y=0,z=-1},{x=1,y=0,z=0},{x=-1,y=0,z=0},{x=0,y=-1,z=0}} + local nnodepos = vector.add(pos, dirs[math.floor(node.param2/4)+1]) + local dir = minetest.facedir_to_dir(node.param2) + local nnode=minetest.get_node(nnodepos) + local meta = minetest.get_meta(pos) + if meta:get_int("last_moved") == minetest.get_gametime() then + return + end + local owner = meta:get_string("owner") + if nnode.name == "technic:template" then + local connected_nodes=get_template_nodes(nnodepos) + move_nodes_vect(connected_nodes,dir,pos,owner) + end + minetest.get_meta(vector.add(pos, dir)):set_int("last_moved", minetest.get_gametime()) +end + +minetest.register_node("technic:template_motor",{ + description = S("Template Motor"), + tiles = {"pipeworks_filter_top.png^[transformR90", "technic_lv_cable.png", "technic_lv_cable.png", + "technic_lv_cable.png", "technic_lv_cable.png", "technic_lv_cable.png"}, + groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2,mesecon=2}, + paramtype2 = "facedir", + mesecons={effector={action_on=template_motor_on}}, + after_place_node = function(pos, placer, itemstack) + local meta = minetest.get_meta(pos) + meta:set_string("owner", placer:get_player_name()) + end, +}) + +-- Crafts +minetest.register_craft({ + output = 'technic:frame_111111', + recipe = { + {'', 'default:stick', ''}, + {'default:stick', 'technic:brass_ingot', 'default:stick'}, + {'', 'default:stick', ''}, + } +}) + +minetest.register_craft({ + output = 'technic:frame_motor', + recipe = { + {'', 'technic:frame_111111', ''}, + {'group:mesecon_conductor_craftable', 'technic:motor', 'group:mesecon_conductor_craftable'}, + {'', 'technic:frame_111111', ''}, + } +}) + +minetest.register_craft({ + output = 'technic:template 10', + recipe = { + {'', 'technic:brass_ingot', ''}, + {'technic:brass_ingot', 'default:mese_crystal', 'technic:brass_ingot'}, + {'', 'technic:brass_ingot', ''}, + } +}) + +minetest.register_craft({ + output = 'technic:template_replacer', + recipe = {{'technic:template'}} +}) + +minetest.register_craft({ + output = 'technic:template', + recipe = {{'technic:template_replacer'}} +}) + +minetest.register_craft({ + output = 'technic:template_motor', + recipe = { + {'', 'technic:template', ''}, + {'group:mesecon_conductor_craftable', 'technic:motor', 'group:mesecon_conductor_craftable'}, + {'', 'technic:template', ''}, + } +}) + +minetest.register_craft({ + output = 'technic:template_tool', + recipe = { + {'', 'technic:template', ''}, + {'default:mese_crystal', 'default:stick', 'default:mese_crystal'}, + {'', 'default:stick', ''}, + } +}) diff --git a/technic/machines/other/init.lua b/technic/machines/other/init.lua new file mode 100644 index 0000000..f4a82f0 --- /dev/null +++ b/technic/machines/other/init.lua @@ -0,0 +1,15 @@ +local path = technic.modpath.."/machines/other" + +-- mesecons and tubes related +dofile(path.."/injector.lua") +dofile(path.."/constructor.lua") + +if technic.config:get_bool("enable_frames") and minetest.get_modpath("mesecons_mvps") ~= nil then + dofile(path.."/frames.lua") +end + +-- Coal-powered machines +dofile(path.."/coal_alloy_furnace.lua") +dofile(path.."/coal_furnace.lua") + +dofile(path.."/anchor.lua") diff --git a/technic/machines/other/injector.lua b/technic/machines/other/injector.lua new file mode 100644 index 0000000..ec8966c --- /dev/null +++ b/technic/machines/other/injector.lua @@ -0,0 +1,118 @@ + +local S = technic.getter + +local function inject_items (pos) + local meta=minetest.get_meta(pos) + local inv = meta:get_inventory() + local mode=meta:get_string("mode") + if mode=="single items" then + local i=0 + for _,stack in ipairs(inv:get_list("main")) do + i=i+1 + if stack then + local item0=stack:to_table() + if item0 then + item0["count"] = "1" + technic.tube_inject_item(pos, pos, vector.new(0, -1, 0), item0) + stack:take_item(1) + inv:set_stack("main", i, stack) + return + end + end + end + end + if mode=="whole stacks" then + local i=0 + for _,stack in ipairs(inv:get_list("main")) do + i=i+1 + if stack then + local item0=stack:to_table() + if item0 then + technic.tube_inject_item(pos, pos, vector.new(0, -1, 0), item0) + stack:clear() + inv:set_stack("main", i, stack) + return + end + end + end + end + +end + +minetest.register_craft({ + output = 'technic:injector 1', + recipe = { + {'', 'technic:control_logic_unit',''}, + {'', 'default:chest',''}, + {'', 'pipeworks:tube_1',''}, + } +}) + +local function set_injector_formspec(meta) + local is_stack = meta:get_string("mode") == "whole stacks" + meta:set_string("formspec", + "invsize[8,9;]".. + "item_image[0,0;1,1;technic:injector]".. + "label[1,0;"..S("Self-Contained Injector").."]".. + (is_stack and + "button[0,1;2,1;mode_item;"..S("Stackwise").."]" or + "button[0,1;2,1;mode_stack;"..S("Itemwise").."]").. + "list[current_name;main;0,2;8,2;]".. + "list[current_player;main;0,5;8,4;]".. + "listring[]") +end + +minetest.register_node("technic:injector", { + description = S("Self-Contained Injector"), + tiles = {"technic_injector_top.png", "technic_injector_bottom.png", "technic_injector_side.png", + "technic_injector_side.png", "technic_injector_side.png", "technic_injector_side.png"}, + groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2, tubedevice=1, tubedevice_receiver=1}, + tube = { + can_insert = function(pos, node, stack, direction) + return minetest.get_meta(pos):get_inventory():room_for_item("main",stack) + end, + insert_object = function(pos, node, stack, direction) + return minetest.get_meta(pos):get_inventory():add_item("main",stack) + end, + connect_sides = {left=1, right=1, front=1, back=1, top=1, bottom=1}, + }, + sounds = default.node_sound_wood_defaults(), + on_construct = function(pos) + local meta = minetest.get_meta(pos) + meta:set_string("infotext", S("Self-Contained Injector")) + local inv = meta:get_inventory() + inv:set_size("main", 8*4) + meta:set_string("mode","single items") + set_injector_formspec(meta) + end, + can_dig = function(pos,player) + local meta = minetest.get_meta(pos); + local inv = meta:get_inventory() + return inv:is_empty("main") + end, + on_receive_fields = function(pos, formanme, fields, sender) + local meta = minetest.get_meta(pos) + if fields.mode_item then meta:set_string("mode", "single items") end + if fields.mode_stack then meta:set_string("mode", "whole stacks") end + set_injector_formspec(meta) + end, + allow_metadata_inventory_put = technic.machine_inventory_put, + allow_metadata_inventory_take = technic.machine_inventory_take, + allow_metadata_inventory_move = technic.machine_inventory_move, + after_place_node = pipeworks.after_place, + after_dig_node = pipeworks.after_dig +}) + +minetest.register_abm({ + nodenames = {"technic:injector"}, + interval = 1, + chance = 1, + action = function(pos, node, active_object_count, active_object_count_wider) + local pos1 = vector.add(pos, vector.new(0, -1, 0)) + local node1 = minetest.get_node(pos1) + if minetest.get_item_group(node1.name, "tubedevice") > 0 then + inject_items(pos) + end + end, +}) + diff --git a/technic/machines/register/alloy_furnace.lua b/technic/machines/register/alloy_furnace.lua new file mode 100644 index 0000000..879e528 --- /dev/null +++ b/technic/machines/register/alloy_furnace.lua @@ -0,0 +1,10 @@ + +local S = technic.getter + +function technic.register_alloy_furnace(data) + data.typename = "alloy" + data.machine_name = "alloy_furnace" + data.machine_desc = S("%s Alloy Furnace") + technic.register_base_machine(data) +end + diff --git a/technic/machines/register/alloy_recipes.lua b/technic/machines/register/alloy_recipes.lua new file mode 100644 index 0000000..bd09bd6 --- /dev/null +++ b/technic/machines/register/alloy_recipes.lua @@ -0,0 +1,35 @@ + +local S = technic.getter + +technic.register_recipe_type("alloy", { + description = S("Alloying"), + input_size = 2, +}) + +function technic.register_alloy_recipe(data) + data.time = data.time or 6 + technic.register_recipe("alloy", data) +end + +local recipes = { + {"technic:copper_dust 3", "technic:tin_dust", "technic:bronze_dust 4"}, + {"default:copper_ingot 3", "moreores:tin_ingot", "default:bronze_ingot 4"}, + {"technic:wrought_iron_dust", "technic:coal_dust", "technic:carbon_steel_dust", 3}, + {"technic:wrought_iron_ingot", "technic:coal_dust", "technic:carbon_steel_ingot", 3}, + {"technic:carbon_steel_dust", "technic:coal_dust", "technic:cast_iron_dust", 3}, + {"technic:carbon_steel_ingot", "technic:coal_dust", "technic:cast_iron_ingot", 3}, + {"technic:carbon_steel_dust 3", "technic:chromium_dust", "technic:stainless_steel_dust 4"}, + {"technic:carbon_steel_ingot 3", "technic:chromium_ingot", "technic:stainless_steel_ingot 4"}, + {"technic:copper_dust 2", "technic:zinc_dust", "technic:brass_dust 3"}, + {"default:copper_ingot 2", "technic:zinc_ingot", "technic:brass_ingot 3"}, + {"default:sand 2", "technic:coal_dust 2", "technic:silicon_wafer"}, + {"technic:silicon_wafer", "technic:gold_dust", "technic:doped_silicon_wafer"}, + -- from https://en.wikipedia.org/wiki/Carbon_black + -- The highest volume use of carbon black is as a reinforcing filler in rubber products, especially tires. + -- "[Compounding a] pure gum vulcanizate … with 50% of its weight of carbon black improves its tensile strength and wear resistance …" + {"technic:raw_latex 4", "technic:coal_dust 2", "technic:rubber 6", 2}, +} + +for _, data in pairs(recipes) do + technic.register_alloy_recipe({input = {data[1], data[2]}, output = data[3], time = data[4]}) +end diff --git a/technic/machines/register/battery_box.lua b/technic/machines/register/battery_box.lua new file mode 100644 index 0000000..82edca0 --- /dev/null +++ b/technic/machines/register/battery_box.lua @@ -0,0 +1,291 @@ + +local S = technic.getter + +technic.register_power_tool("technic:battery", 10000) +technic.register_power_tool("technic:red_energy_crystal", 50000) +technic.register_power_tool("technic:green_energy_crystal", 150000) +technic.register_power_tool("technic:blue_energy_crystal", 450000) + +minetest.register_craft({ + output = 'technic:battery', + recipe = { + {'group:wood', 'default:copper_ingot', 'group:wood'}, + {'group:wood', 'moreores:tin_ingot', 'group:wood'}, + {'group:wood', 'default:copper_ingot', 'group:wood'}, + } +}) + +minetest.register_tool("technic:battery", { + description = S("RE Battery"), + inventory_image = "technic_battery.png", + wear_represents = "technic_RE_charge", + on_refill = technic.refill_RE_charge, + tool_capabilities = { + charge = 0, + max_drop_level = 0, + groupcaps = { + fleshy = {times={}, uses=10000, maxlevel=0} + } + } +}) + +local tube = { + insert_object = function(pos, node, stack, direction) + if direction.y == 0 then + return stack + end + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + if direction.y > 0 then + return inv:add_item("src", stack) + else + return inv:add_item("dst", stack) + end + end, + can_insert = function(pos, node, stack, direction) + if direction.y == 0 then + return false + end + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + if direction.y > 0 then + return inv:room_for_item("src", stack) + else + return inv:room_for_item("dst", stack) + end + end, + connect_sides = {left=1, right=1, back=1, top=1, bottom=1}, +} + +function technic.register_battery_box(data) + local tier = data.tier + local ltier = string.lower(tier) + + local formspec = + "invsize[8,9;]".. + "image[1,1;1,2;technic_power_meter_bg.png]".. + "list[current_name;src;3,1;1,1;]".. + "image[4,1;1,1;technic_battery_reload.png]".. + "list[current_name;dst;5,1;1,1;]".. + "label[0,0;"..S("%s Battery Box"):format(tier).."]".. + "label[3,0;"..S("Charge").."]".. + "label[5,0;"..S("Discharge").."]".. + "label[1,3;"..S("Power level").."]".. + "list[current_player;main;0,5;8,4;]".. + "listring[current_name;dst]".. + "listring[current_player;main]".. + "listring[current_name;src]".. + "listring[current_player;main]" + + if data.upgrade then + formspec = formspec.. + "list[current_name;upgrade1;3.5,3;1,1;]".. + "list[current_name;upgrade2;4.5,3;1,1;]".. + "label[3.5,4;"..S("Upgrade Slots").."]".. + "listring[current_name;upgrade1]".. + "listring[current_player;main]".. + "listring[current_name;upgrade2]".. + "listring[current_player;main]" + end + + local run = function(pos, node) + local meta = minetest.get_meta(pos) + local eu_input = meta:get_int(tier.."_EU_input") + local current_charge = meta:get_int("internal_EU_charge") + + local EU_upgrade, tube_upgrade = 0, 0 + if data.upgrade then + EU_upgrade, tube_upgrade = technic.handle_machine_upgrades(meta) + end + local max_charge = data.max_charge * (1 + EU_upgrade / 10) + + -- Charge/discharge the battery with the input EUs + if eu_input >= 0 then + current_charge = math.min(current_charge + eu_input, max_charge) + else + current_charge = math.max(current_charge + eu_input, 0) + end + + -- Charging/discharging tools here + local tool_full, tool_empty + current_charge, tool_full = technic.charge_tools(meta, + current_charge, data.charge_step) + current_charge, tool_empty = technic.discharge_tools(meta, + current_charge, data.discharge_step, + max_charge) + + if data.tube then + local inv = meta:get_inventory() + technic.handle_machine_pipeworks(pos, tube_upgrade, + function(pos, x_velocity, z_velocity) + if tool_full and not inv:is_empty("src") then + technic.send_items(pos, x_velocity, z_velocity, "src") + elseif tool_empty and not inv:is_empty("dst") then + technic.send_items(pos, x_velocity, z_velocity, "dst") + end + end) + end + + -- We allow batteries to charge on less than the demand + meta:set_int(tier.."_EU_demand", + math.min(data.charge_rate, max_charge - current_charge)) + meta:set_int(tier.."_EU_supply", + math.min(data.discharge_rate, current_charge)) + meta:set_int("internal_EU_charge", current_charge) + + -- Select node textures + local charge_count = math.ceil((current_charge / max_charge) * 8) + charge_count = math.min(charge_count, 8) + charge_count = math.max(charge_count, 0) + local last_count = meta:get_float("last_side_shown") + if charge_count ~= last_count then + technic.swap_node(pos,"technic:"..ltier.."_battery_box"..charge_count) + meta:set_float("last_side_shown", charge_count) + end + + local charge_percent = math.floor(current_charge / max_charge * 100) + meta:set_string("formspec", + formspec.. + "image[1,1;1,2;technic_power_meter_bg.png" + .."^[lowpart:"..charge_percent + ..":technic_power_meter_fg.png]") + + local infotext = S("@1 Battery Box: @2/@3", tier, + technic.prettynum(current_charge), technic.prettynum(max_charge)) + if eu_input == 0 then + infotext = S("%s Idle"):format(infotext) + end + meta:set_string("infotext", infotext) + end + + for i = 0, 8 do + local groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2, technic_machine=1} + if i ~= 0 then + groups.not_in_creative_inventory = 1 + end + + if data.tube then + groups.tubedevice = 1 + groups.tubedevice_receiver = 1 + end + + minetest.register_node("technic:"..ltier.."_battery_box"..i, { + description = S("%s Battery Box"):format(tier), + tiles = {"technic_"..ltier.."_battery_box_top.png", + "technic_"..ltier.."_battery_box_bottom.png", + "technic_"..ltier.."_battery_box_side.png^technic_power_meter"..i..".png", + "technic_"..ltier.."_battery_box_side.png^technic_power_meter"..i..".png", + "technic_"..ltier.."_battery_box_side.png^technic_power_meter"..i..".png", + "technic_"..ltier.."_battery_box_side.png^technic_power_meter"..i..".png"}, + groups = groups, + tube = data.tube and tube or nil, + paramtype2 = "facedir", + sounds = default.node_sound_wood_defaults(), + drop = "technic:"..ltier.."_battery_box0", + on_construct = function(pos) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + local node = minetest.get_node(pos) + + meta:set_string("infotext", S("%s Battery Box"):format(tier)) + meta:set_string("formspec", formspec) + meta:set_int(tier.."_EU_demand", 0) + meta:set_int(tier.."_EU_supply", 0) + meta:set_int(tier.."_EU_input", 0) + meta:set_float("internal_EU_charge", 0) + inv:set_size("src", 1) + inv:set_size("dst", 1) + inv:set_size("upgrade1", 1) + inv:set_size("upgrade2", 1) + end, + can_dig = technic.machine_can_dig, + allow_metadata_inventory_put = technic.machine_inventory_put, + allow_metadata_inventory_take = technic.machine_inventory_take, + allow_metadata_inventory_move = technic.machine_inventory_move, + technic_run = run, + after_place_node = data.tube and pipeworks.after_place, + after_dig_node = technic.machine_after_dig_node + }) + end + + -- Register as a battery type + -- Battery type machines function as power reservoirs and can both receive and give back power + for i = 0, 8 do + technic.register_machine(tier, "technic:"..ltier.."_battery_box"..i, technic.battery) + end + +end -- End registration + + +function technic.charge_tools(meta, batt_charge, charge_step) + local inv = meta:get_inventory() + if inv:is_empty("src") then + return batt_charge, false + end + local src_stack = inv:get_stack("src", 1) + + local tool_name = src_stack:get_name() + if not technic.power_tools[tool_name] then + return batt_charge, false + end + -- Set meta data for the tool if it didn't do it itself + local src_meta = minetest.deserialize(src_stack:get_metadata()) or {} + if not src_meta.charge then + src_meta.charge = 0 + end + -- Do the charging + local item_max_charge = technic.power_tools[tool_name] + local tool_charge = src_meta.charge + if tool_charge >= item_max_charge then + return batt_charge, true + elseif batt_charge <= 0 then + return batt_charge, false + end + charge_step = math.min(charge_step, batt_charge) + charge_step = math.min(charge_step, item_max_charge - tool_charge) + tool_charge = tool_charge + charge_step + batt_charge = batt_charge - charge_step + technic.set_RE_wear(src_stack, tool_charge, item_max_charge) + src_meta.charge = tool_charge + src_stack:set_metadata(minetest.serialize(src_meta)) + inv:set_stack("src", 1, src_stack) + return batt_charge, (tool_charge == item_max_charge) +end + + +function technic.discharge_tools(meta, batt_charge, charge_step, max_charge) + local inv = meta:get_inventory() + if inv:is_empty("dst") then + return batt_charge, false + end + srcstack = inv:get_stack("dst", 1) + local toolname = srcstack:get_name() + if technic.power_tools[toolname] == nil then + return batt_charge, false + end + -- Set meta data for the tool if it didn't do it itself :-( + local src_meta = minetest.deserialize(srcstack:get_metadata()) + src_meta = src_meta or {} + if not src_meta.charge then + src_meta.charge = 0 + end + + -- Do the discharging + local item_max_charge = technic.power_tools[toolname] + local tool_charge = src_meta.charge + if tool_charge <= 0 then + return batt_charge, true + elseif batt_charge >= max_charge then + return batt_charge, false + end + charge_step = math.min(charge_step, max_charge - batt_charge) + charge_step = math.min(charge_step, tool_charge) + tool_charge = tool_charge - charge_step + batt_charge = batt_charge + charge_step + technic.set_RE_wear(srcstack, tool_charge, item_max_charge) + src_meta.charge = tool_charge + srcstack:set_metadata(minetest.serialize(src_meta)) + inv:set_stack("dst", 1, srcstack) + return batt_charge, (tool_charge == 0) +end + diff --git a/technic/machines/register/cables.lua b/technic/machines/register/cables.lua new file mode 100644 index 0000000..a1e7bc8 --- /dev/null +++ b/technic/machines/register/cables.lua @@ -0,0 +1,177 @@ + +local S = technic.getter + +local cable_itstr_to_tier = {} + +function technic.register_cable(tier, size) + local ltier = string.lower(tier) + + for x1 = 0, 1 do + for x2 = 0, 1 do + for y1 = 0, 1 do + for y2 = 0, 1 do + for z1 = 0, 1 do + for z2 = 0, 1 do + local id = technic.get_cable_id({x1, x2, y1, y2, z1, z2}) + + cable_itstr_to_tier["technic:"..ltier.."_cable"..id] = tier + + local groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2} + if id ~= 0 then + groups.not_in_creative_inventory = 1 + end + + minetest.register_node("technic:"..ltier.."_cable"..id, { + description = S("%s Cable"):format(tier), + tiles = {"technic_"..ltier.."_cable.png"}, + inventory_image = "technic_"..ltier.."_cable_wield.png", + wield_image = "technic_"..ltier.."_cable_wield.png", + groups = groups, + sounds = default.node_sound_wood_defaults(), + drop = "technic:"..ltier.."_cable0", + paramtype = "light", + sunlight_propagates = true, + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = technic.gen_cable_nodebox(x1, y1, z1, x2, y2, z2, size) + }, + on_construct = function() + technic.networks = {} + end, + on_destruct = function() + technic.networks = {} + end, + after_place_node = function(pos) + local node = minetest.get_node(pos) + technic.update_cables(pos, technic.get_cable_tier(node.name)) + end, + after_dig_node = function(pos, oldnode) + local tier = technic.get_cable_tier(oldnode.name) + technic.update_cables(pos, tier, true) + end + }) + end + end + end + end + end + end +end + +minetest.register_on_placenode(function(pos, node) + for tier, machine_list in pairs(technic.machines) do + if machine_list[node.name] ~= nil then + technic.update_cables(pos, tier, true) + technic.networks = {} + end + end +end) + + +minetest.register_on_dignode(function(pos, node) + for tier, machine_list in pairs(technic.machines) do + if machine_list[node.name] ~= nil then + technic.update_cables(pos, tier, true) + technic.networks = {} + end + end +end) + +function technic.get_cable_id(links) + return (links[6] * 1) + (links[5] * 2) + + (links[4] * 4) + (links[3] * 8) + + (links[2] * 16) + (links[1] * 32) +end + +function technic.update_cables(pos, tier, no_set, secondrun) + local link_positions = { + {x=pos.x+1, y=pos.y, z=pos.z}, + {x=pos.x-1, y=pos.y, z=pos.z}, + {x=pos.x, y=pos.y+1, z=pos.z}, + {x=pos.x, y=pos.y-1, z=pos.z}, + {x=pos.x, y=pos.y, z=pos.z+1}, + {x=pos.x, y=pos.y, z=pos.z-1}} + + local links = {0, 0, 0, 0, 0, 0} + + for i, link_pos in pairs(link_positions) do + local connect_type = technic.cables_should_connect(pos, link_pos, tier) + if connect_type then + links[i] = 1 + -- Have cables next to us update theirselves, + -- but only once. (We don't want to update the entire + -- network or start an infinite loop of updates) + if not secondrun and connect_type == "cable" then + technic.update_cables(link_pos, tier, false, true) + end + end + end + -- We don't want to set ourselves if we have been removed or we are + -- updating a machine + if not no_set then + minetest.set_node(pos, {name="technic:"..string.lower(tier) + .."_cable"..technic.get_cable_id(links)}) + + end +end + + +function technic.is_tier_cable(name, tier) + return cable_itstr_to_tier[name] and cable_itstr_to_tier[name] == tier +end + + +function technic.get_cable_tier(name) + return cable_itstr_to_tier[name] +end + + +function technic.cables_should_connect(pos1, pos2, tier) + local name = minetest.get_node(pos2).name + + if name == "technic:switching_station" then + return pos2.y == pos1.y + 1 and "machine" or false + elseif name == "technic:supply_converter" then + return math.abs(pos2.y - pos1.y) == 1 and "machine" or false + elseif technic.is_tier_cable(name, tier) then + return "cable" + elseif technic.machines[tier][name] then + return "machine" + end + return false +end + + +function technic.gen_cable_nodebox(x1, y1, z1, x2, y2, z2, size) + -- Nodeboxes + local box_center = {-size, -size, -size, size, size, size} + local box_y1 = {-size, -size, -size, size, 0.5, size} -- y+ + local box_x1 = {-size, -size, -size, 0.5, size, size} -- x+ + local box_z1 = {-size, -size, size, size, size, 0.5} -- z+ + local box_z2 = {-size, -size, -0.5, size, size, size} -- z- + local box_y2 = {-size, -0.5, -size, size, size, size} -- y- + local box_x2 = {-0.5, -size, -size, size, size, size} -- x- + + local box = {box_center} + if x1 == 1 then + table.insert(box, box_x1) + end + if y1 == 1 then + table.insert(box, box_y1) + end + if z1 == 1 then + table.insert(box, box_z1) + end + if x2 == 1 then + table.insert(box, box_x2) + end + if y2 == 1 then + table.insert(box, box_y2) + end + if z2 == 1 then + table.insert(box, box_z2) + end + return box +end + diff --git a/technic/machines/register/centrifuge.lua b/technic/machines/register/centrifuge.lua new file mode 100644 index 0000000..dd05977 --- /dev/null +++ b/technic/machines/register/centrifuge.lua @@ -0,0 +1,8 @@ +local S = technic.getter + +function technic.register_centrifuge(data) + data.typename = "separating" + data.machine_name = "centrifuge" + data.machine_desc = S("%s Centrifuge") + technic.register_base_machine(data) +end diff --git a/technic/machines/register/centrifuge_recipes.lua b/technic/machines/register/centrifuge_recipes.lua new file mode 100644 index 0000000..05642f5 --- /dev/null +++ b/technic/machines/register/centrifuge_recipes.lua @@ -0,0 +1,38 @@ +local S = technic.getter + +technic.register_recipe_type("separating", { + description = S("Separating"), + output_size = 2, +}) + +function technic.register_separating_recipe(data) + data.time = data.time or 10 + technic.register_recipe("separating", data) +end + +local recipes = { + { "technic:bronze_dust 4", "technic:copper_dust 3", "technic:tin_dust" }, + { "technic:stainless_steel_dust 4", "technic:wrought_iron_dust 3", "technic:chromium_dust" }, + { "technic:brass_dust 3", "technic:copper_dust 2", "technic:zinc_dust" }, +} + +local function uranium_dust(p) + return "technic:uranium"..(p == 7 and "" or p).."_dust" +end +for p = 1, 34 do + table.insert(recipes, { uranium_dust(p).." 2", uranium_dust(p-1), uranium_dust(p+1) }) +end + +if minetest.get_modpath("bushes_classic") then + for _, berry in ipairs({ "blackberry", "blueberry", "gooseberry", "raspberry", "strawberry" }) do + table.insert(recipes, { "bushes:"..berry.."_bush", "default:stick 20", "bushes:"..berry.." 4" }) + end +end + +if minetest.get_modpath("farming") then + table.insert(recipes, { "farming:wheat 4", "farming:seed_wheat 3", "default:dry_shrub 1" }) +end + +for _, data in pairs(recipes) do + technic.register_separating_recipe({ input = { data[1] }, output = { data[2], data[3] } }) +end diff --git a/technic/machines/register/common.lua b/technic/machines/register/common.lua new file mode 100644 index 0000000..ce0eee6 --- /dev/null +++ b/technic/machines/register/common.lua @@ -0,0 +1,214 @@ + +local S = technic.getter + +-- handles the machine upgrades every tick +function technic.handle_machine_upgrades(meta) + -- Get the names of the upgrades + local inv = meta:get_inventory() + + local srcstack = inv:get_stack("upgrade1", 1) + local upg_item1 = srcstack and srcstack:get_name() + + srcstack = inv:get_stack("upgrade2", 1) + local upg_item2 = srcstack and srcstack:get_name() + + -- Save some power by installing battery upgrades. + -- Tube loading speed can be upgraded using control logic units. + local EU_upgrade = 0 + local tube_upgrade = 0 + + if upg_item1 == "technic:control_logic_unit" then + tube_upgrade = tube_upgrade + 1 + elseif upg_item1 == "technic:battery" then + EU_upgrade = EU_upgrade + 1 + end + + if upg_item2 == "technic:control_logic_unit" then + tube_upgrade = tube_upgrade + 1 + elseif upg_item2 == "technic:battery" then + EU_upgrade = EU_upgrade + 1 + end + + return EU_upgrade, tube_upgrade +end + +-- handles the machine upgrades when set or removed +local function on_machine_upgrade(meta, stack) + local stack_name = stack:get_name() + if stack_name == "default:chest" then + meta:set_int("public", 1) + return 1 + elseif stack_name ~= "technic:control_logic_unit" + and stack_name ~= "technic:battery" then + return 0 + end + return 1 +end + +-- something is about to be removed +local function on_machine_downgrade(meta, stack, list) + if stack:get_name() == "default:chest" then + local inv = meta:get_inventory() + local upg1, upg2 = inv:get_stack("upgrade1", 1), inv:get_stack("upgrade2", 1) + + -- only set 0 if theres not a nother chest in the other list too + if (not upg1 or not upg2 or upg1:get_name() ~= upg2:get_name()) then + meta:set_int("public", 0) + end + end + return 1 +end + + +function technic.send_items(pos, x_velocity, z_velocity, output_name) + -- Send items on their way in the pipe system. + if output_name == nil then + output_name = "dst" + end + + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + local i = 0 + for _, stack in ipairs(inv:get_list(output_name)) do + i = i + 1 + if stack then + local item0 = stack:to_table() + if item0 then + item0["count"] = "1" + technic.tube_inject_item(pos, pos, vector.new(x_velocity, 0, z_velocity), item0) + stack:take_item(1) + inv:set_stack(output_name, i, stack) + return + end + end + end +end + + +function technic.smelt_item(meta, result, speed) + local inv = meta:get_inventory() + meta:set_int("cook_time", meta:get_int("cook_time") + 1) + if meta:get_int("cook_time") < result.time / speed then + return + end + local result + local afterfuel + result, afterfuel = minetest.get_craft_result({method = "cooking", width = 1, items = inv:get_list("src")}) + + if result and result.item then + meta:set_int("cook_time", 0) + -- check if there's room for output in "dst" list + if inv:room_for_item("dst", result.item) then + inv:set_stack("src", 1, afterfuel.items[1]) + inv:add_item("dst", result.item) + end + end +end + +function technic.handle_machine_pipeworks(pos, tube_upgrade, send_function) + if send_function == nil then + send_function = technic.send_items + end + + local node = minetest.get_node(pos) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + local pos1 = vector.new(pos) + local x_velocity = 0 + local z_velocity = 0 + + -- Output is on the left side of the furnace + if node.param2 == 3 then pos1.z = pos1.z - 1 z_velocity = -1 end + if node.param2 == 2 then pos1.x = pos1.x - 1 x_velocity = -1 end + if node.param2 == 1 then pos1.z = pos1.z + 1 z_velocity = 1 end + if node.param2 == 0 then pos1.x = pos1.x + 1 x_velocity = 1 end + + local output_tube_connected = false + local node1 = minetest.get_node(pos1) + if minetest.get_item_group(node1.name, "tubedevice") > 0 then + output_tube_connected = true + end + local tube_time = meta:get_int("tube_time") + tube_upgrade + if tube_time >= 2 then + tube_time = 0 + if output_tube_connected then + send_function(pos, x_velocity, z_velocity) + end + end + meta:set_int("tube_time", tube_time) +end + +function technic.machine_can_dig(pos, player) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + if not inv:is_empty("src") or not inv:is_empty("dst") then + if player then + minetest.chat_send_player(player:get_player_name(), + S("Machine cannot be removed because it is not empty")) + end + return false + end + + return true +end + +function technic.machine_after_dig_node(pos, oldnode, oldmetadata, player) + if oldmetadata.inventory then + if oldmetadata.inventory.upgrade1 and oldmetadata.inventory.upgrade1[1] then + local stack = ItemStack(oldmetadata.inventory.upgrade1[1]) + if not stack:is_empty() then + minetest.item_drop(stack, "", pos) + end + end + if oldmetadata.inventory.upgrade2 and oldmetadata.inventory.upgrade2[1] then + local stack = ItemStack(oldmetadata.inventory.upgrade2[1]) + if not stack:is_empty() then + minetest.item_drop(stack, "", pos) + end + end + end + + if minetest.registered_nodes[oldnode.name].tube then + pipeworks.after_dig(pos, oldnode, oldmetadata, player) + end +end + +local function inv_change(pos, player, count, from_list, to_list, stack) + local playername = player:get_player_name() + local meta = minetest.get_meta(pos); + local public = (meta:get_int("public") == 1) + local to_upgrade = to_list == "upgrade1" or to_list == "upgrade2" + local from_upgrade = from_list == "upgrade1" or from_list == "upgrade2" + + if (not public or to_upgrade or from_upgrade) and minetest.is_protected(pos, playername) then + minetest.chat_send_player(playername, S("Inventory move disallowed due to protection")) + return 0 + end + if to_upgrade then + -- only place a single item into it, if it's empty + local empty = meta:get_inventory():is_empty(to_list) + if empty then + return on_machine_upgrade(meta, stack) + end + return 0 + elseif from_upgrade then + -- only called on take (not move) + on_machine_downgrade(meta, stack, from_list) + end + return count +end + +function technic.machine_inventory_put(pos, listname, index, stack, player) + return inv_change(pos, player, stack:get_count(), nil, listname, stack) +end + +function technic.machine_inventory_take(pos, listname, index, stack, player) + return inv_change(pos, player, stack:get_count(), listname, nil, stack) +end + +function technic.machine_inventory_move(pos, from_list, from_index, + to_list, to_index, count, player) + local stack = minetest.get_meta(pos):get_inventory():get_stack(from_list, from_index) + return inv_change(pos, player, count, from_list, to_list, stack) +end + diff --git a/technic/machines/register/compressor.lua b/technic/machines/register/compressor.lua new file mode 100644 index 0000000..49830d7 --- /dev/null +++ b/technic/machines/register/compressor.lua @@ -0,0 +1,9 @@ + +local S = technic.getter + +function technic.register_compressor(data) + data.typename = "compressing" + data.machine_name = "compressor" + data.machine_desc = S("%s Compressor") + technic.register_base_machine(data) +end diff --git a/technic/machines/register/compressor_recipes.lua b/technic/machines/register/compressor_recipes.lua new file mode 100644 index 0000000..872be04 --- /dev/null +++ b/technic/machines/register/compressor_recipes.lua @@ -0,0 +1,34 @@ + +local S = technic.getter + +technic.register_recipe_type("compressing", { description = S("Compressing") }) + +function technic.register_compressor_recipe(data) + data.time = data.time or 4 + technic.register_recipe("compressing", data) +end + +local recipes = { + {"default:snowblock", "default:ice"}, + {"default:sand 2", "default:sandstone"}, + {"default:desert_sand", "default:desert_stone"}, + {"technic:mixed_metal_ingot", "technic:composite_plate"}, + {"default:copper_ingot 5", "technic:copper_plate"}, + {"technic:coal_dust 4", "technic:graphite"}, + {"technic:carbon_cloth", "technic:carbon_plate"}, + {"technic:uranium35_ingot 5", "technic:uranium_fuel"}, +} + +-- defuse the default sandstone recipe, since we have the compressor to take over in a more realistic manner +minetest.register_craft({ + output = "default:sand 0", + recipe = { + {'group:sand', 'group:sand'}, + {'group:sand', 'group:sand'} + }, +}) + +for _, data in pairs(recipes) do + technic.register_compressor_recipe({input = {data[1]}, output = data[2]}) +end + diff --git a/technic/machines/register/electric_furnace.lua b/technic/machines/register/electric_furnace.lua new file mode 100644 index 0000000..44de16c --- /dev/null +++ b/technic/machines/register/electric_furnace.lua @@ -0,0 +1,9 @@ + +local S = technic.getter + +function technic.register_electric_furnace(data) + data.typename = "cooking" + data.machine_name = "electric_furnace" + data.machine_desc = S("%s Furnace") + technic.register_base_machine(data) +end diff --git a/technic/machines/register/extractor.lua b/technic/machines/register/extractor.lua new file mode 100644 index 0000000..eeef9ff --- /dev/null +++ b/technic/machines/register/extractor.lua @@ -0,0 +1,9 @@ + +local S = technic.getter + +function technic.register_extractor(data) + data.typename = "extracting" + data.machine_name = "extractor" + data.machine_desc = S("%s Extractor") + technic.register_base_machine(data) +end diff --git a/technic/machines/register/extractor_recipes.lua b/technic/machines/register/extractor_recipes.lua new file mode 100644 index 0000000..1de0ba0 --- /dev/null +++ b/technic/machines/register/extractor_recipes.lua @@ -0,0 +1,59 @@ + +local S = technic.getter + +technic.register_recipe_type("extracting", { description = S("Extracting") }) + +function technic.register_extractor_recipe(data) + data.time = data.time or 4 + technic.register_recipe("extracting", data) +end + +if minetest.get_modpath("dye") then + -- check if we are using dye or unifieddyes + local unifieddyes = minetest.get_modpath("unifieddyes") + + -- register recipes with the same crafting ratios as `dye` provides + local dye_recipes = { + {"technic:coal_dust", "dye:black 2"}, + {"default:grass_1", "dye:green 1"}, + {"default:dry_shrub", "dye:brown 1"}, + {"default:junglegrass", "dye:green 2"}, + {"default:cactus", "dye:green 4"}, + {"flowers:geranium", "dye:blue 4"}, + {"flowers:dandelion_white", "dye:white 4"}, + {"flowers:dandelion_yellow", "dye:yellow 4"}, + {"flowers:tulip", "dye:orange 4"}, + {"flowers:rose", "dye:red 4"}, + {"flowers:viola", "dye:violet 4"}, + {"bushes:blackberry", unifieddyes and "unifieddyes:magenta_s50 4" or "dye:violet 4"}, + {"bushes:blueberry", unifieddyes and "unifieddyes:magenta_s50 4" or "dye:magenta 4"}, + } + + for _, data in ipairs(dye_recipes) do + technic.register_extractor_recipe({input = {data[1]}, output = data[2]}) + end + + -- overwrite the existing crafting recipes + local dyes = {"white", "red", "yellow", "blue", "violet", "orange"} + for _, color in ipairs(dyes) do + minetest.register_craft({ + type = "shapeless", + output = "dye:"..color.." 1", + recipe = {"group:flower,color_"..color}, + }) + + end + minetest.register_craft({ + type = "shapeless", + output = "dye:black 1", + recipe = {"group:coal"}, + }) + + if unifieddyes then + minetest.register_craft({ + type = "shapeless", + output = "dye:green 1", + recipe = {"default:cactus"}, + }) + end +end diff --git a/technic/machines/register/generator.lua b/technic/machines/register/generator.lua new file mode 100644 index 0000000..31c1cef --- /dev/null +++ b/technic/machines/register/generator.lua @@ -0,0 +1,173 @@ +local S = technic.getter + +local tube = { + insert_object = function(pos, node, stack, direction) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + return inv:add_item("src", stack) + end, + can_insert = function(pos, node, stack, direction) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + return inv:room_for_item("src", stack) + end, + connect_sides = {left=1, right=1, back=1, top=1, bottom=1}, +} + +function technic.register_generator(data) + local tier = data.tier + local ltier = string.lower(tier) + + local groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2, technic_machine=1} + local active_groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2, technic_machine=1, not_in_creative_inventory=1} + if data.tube then + groups.tubedevice = 1 + groups.tubedevice_receiver = 1 + active_groups.tubedevice = 1 + active_groups.tubedevice_receiver = 1 + end + + local generator_formspec = + "invsize[8,9;]".. + "label[0,0;"..S("Fuel-Fired %s Generator"):format(tier).."]".. + "list[current_name;src;3,1;1,1;]".. + "image[4,1;1,1;default_furnace_fire_bg.png]".. + "list[current_player;main;0,5;8,4;]".. + "listring[]" + + local desc = S("Fuel-Fired %s Generator"):format(tier) + + local run = function(pos, node) + local meta = minetest.get_meta(pos) + local burn_time = meta:get_int("burn_time") + local burn_totaltime = meta:get_int("burn_totaltime") + -- If more to burn and the energy produced was used: produce some more + if burn_time > 0 then + meta:set_int(tier.."_EU_supply", data.supply) + burn_time = burn_time - 1 + meta:set_int("burn_time", burn_time) + end + -- Burn another piece of fuel + if burn_time == 0 then + local inv = meta:get_inventory() + if not inv:is_empty("src") then + local fuellist = inv:get_list("src") + local fuel + local afterfuel + fuel, afterfuel = minetest.get_craft_result( + {method = "fuel", width = 1, + items = fuellist}) + if not fuel or fuel.time == 0 then + meta:set_string("infotext", S("%s Out Of Fuel"):format(desc)) + technic.swap_node(pos, "technic:"..ltier.."_generator") + meta:set_int(tier.."_EU_supply", 0) + return + end + meta:set_int("burn_time", fuel.time) + meta:set_int("burn_totaltime", fuel.time) + inv:set_stack("src", 1, afterfuel.items[1]) + technic.swap_node(pos, "technic:"..ltier.."_generator_active") + meta:set_int(tier.."_EU_supply", data.supply) + else + technic.swap_node(pos, "technic:"..ltier.."_generator") + meta:set_int(tier.."_EU_supply", 0) + end + end + if burn_totaltime == 0 then burn_totaltime = 1 end + local percent = math.floor((burn_time / burn_totaltime) * 100) + meta:set_string("infotext", desc.." ("..percent.."%)") + meta:set_string("formspec", + "size[8, 9]".. + "label[0, 0;"..minetest.formspec_escape(desc).."]".. + "list[current_name;src;3, 1;1, 1;]".. + "image[4, 1;1, 1;default_furnace_fire_bg.png^[lowpart:".. + (percent)..":default_furnace_fire_fg.png]".. + "list[current_player;main;0, 5;8, 4;]".. + "listring[]") + end + + minetest.register_node("technic:"..ltier.."_generator", { + description = desc, + tiles = {"technic_"..ltier.."_generator_top.png", "technic_machine_bottom.png", + "technic_"..ltier.."_generator_side.png", "technic_"..ltier.."_generator_side.png", + "technic_"..ltier.."_generator_side.png", "technic_"..ltier.."_generator_front.png"}, + paramtype2 = "facedir", + groups = groups, + legacy_facedir_simple = true, + sounds = default.node_sound_wood_defaults(), + tube = data.tube and tube or nil, + on_construct = function(pos) + local meta = minetest.get_meta(pos) + meta:set_string("infotext", desc) + meta:set_int(data.tier.."_EU_supply", 0) + meta:set_int("burn_time", 0) + meta:set_int("tube_time", 0) + meta:set_string("formspec", generator_formspec) + local inv = meta:get_inventory() + inv:set_size("src", 1) + end, + can_dig = technic.machine_can_dig, + allow_metadata_inventory_put = technic.machine_inventory_put, + allow_metadata_inventory_take = technic.machine_inventory_take, + allow_metadata_inventory_move = technic.machine_inventory_move, + technic_run = run, + after_place_node = data.tube and pipeworks.after_place, + after_dig_node = technic.machine_after_dig_node + }) + + minetest.register_node("technic:"..ltier.."_generator_active", { + description = desc, + tiles = {"technic_"..ltier.."_generator_top.png", "technic_machine_bottom.png", + "technic_"..ltier.."_generator_side.png", "technic_"..ltier.."_generator_side.png", + "technic_"..ltier.."_generator_side.png", "technic_"..ltier.."_generator_front_active.png"}, + paramtype2 = "facedir", + groups = active_groups, + legacy_facedir_simple = true, + sounds = default.node_sound_wood_defaults(), + tube = data.tube and tube or nil, + drop = "technic:"..ltier.."_generator", + can_dig = technic.machine_can_dig, + allow_metadata_inventory_put = technic.machine_inventory_put, + allow_metadata_inventory_take = technic.machine_inventory_take, + allow_metadata_inventory_move = technic.machine_inventory_move, + technic_run = run, + technic_on_disable = function(pos, node) + local timer = minetest.get_node_timer(pos) + timer:start(1) + end, + on_timer = function(pos, node) + local meta = minetest.get_meta(pos) + + -- Connected back? + if meta:get_int(tier.."_EU_timeout") > 0 then return false end + + local burn_time = meta:get_int("burn_time") or 0 + + if burn_time <= 0 then + meta:set_int(tier.."_EU_supply", 0) + meta:set_int("burn_time", 0) + technic.swap_node(pos, "technic:"..ltier.."_generator") + return false + end + + local burn_totaltime = meta:get_int("burn_totaltime") or 0 + if burn_totaltime == 0 then burn_totaltime = 1 end + burn_time = burn_time - 1 + meta:set_int("burn_time", burn_time) + local percent = math.floor(burn_time / burn_totaltime * 100) + meta:set_string("formspec", + "size[8, 9]".. + "label[0, 0;"..minetest.formspec_escape(desc).."]".. + "list[current_name;src;3, 1;1, 1;]".. + "image[4, 1;1, 1;default_furnace_fire_bg.png^[lowpart:".. + (percent)..":default_furnace_fire_fg.png]".. + "list[current_player;main;0, 5;8, 4;]".. + "listring[]") + return true + end, + }) + + technic.register_machine(tier, "technic:"..ltier.."_generator", technic.producer) + technic.register_machine(tier, "technic:"..ltier.."_generator_active", technic.producer) +end + diff --git a/technic/machines/register/grinder.lua b/technic/machines/register/grinder.lua new file mode 100644 index 0000000..19ea094 --- /dev/null +++ b/technic/machines/register/grinder.lua @@ -0,0 +1,9 @@ + +local S = technic.getter + +function technic.register_grinder(data) + data.typename = "grinding" + data.machine_name = "grinder" + data.machine_desc = S("%s Grinder") + technic.register_base_machine(data) +end diff --git a/technic/machines/register/grinder_recipes.lua b/technic/machines/register/grinder_recipes.lua new file mode 100644 index 0000000..87c6ade --- /dev/null +++ b/technic/machines/register/grinder_recipes.lua @@ -0,0 +1,161 @@ + +local S = technic.getter + +technic.register_recipe_type("grinding", { description = S("Grinding") }) + +function technic.register_grinder_recipe(data) + data.time = data.time or 3 + technic.register_recipe("grinding", data) +end + +local recipes = { + -- Dusts + {"default:coal_lump", "technic:coal_dust 2"}, + {"default:copper_lump", "technic:copper_dust 2"}, + {"default:desert_stone", "default:desert_sand"}, + {"default:gold_lump", "technic:gold_dust 2"}, + {"default:iron_lump", "technic:wrought_iron_dust 2"}, + {"technic:chromium_lump", "technic:chromium_dust 2"}, + {"technic:uranium_lump", "technic:uranium_dust 2"}, + {"technic:zinc_lump", "technic:zinc_dust 2"}, + {"technic:lead_lump", "technic:lead_dust 2"}, + {"technic:sulfur_lump", "technic:sulfur_dust 2"}, + + -- Other + {"default:cobble", "default:gravel"}, + {"default:gravel", "default:dirt"}, + {"default:stone", "default:sand"}, + {"default:sandstone", "default:sand 2"}, -- reverse recipe can be found in the compressor +} + +-- defuse the sandstone -> 4 sand recipe to avoid infinite sand bugs (also consult the inverse compressor recipe) +minetest.register_craft({ + output = "default:sandstone 0", + recipe = { + {'default:sandstone'} + }, +}) + +if minetest.get_modpath("farming") then + table.insert(recipes, {"farming:seed_wheat", "farming:flour 1"}) +end + +if minetest.get_modpath("moreores") then + table.insert(recipes, {"moreores:mithril_lump", "technic:mithril_dust 2"}) + table.insert(recipes, {"moreores:silver_lump", "technic:silver_dust 2"}) + table.insert(recipes, {"moreores:tin_lump", "technic:tin_dust 2"}) +end + +if minetest.get_modpath("gloopores") or minetest.get_modpath("glooptest") then + table.insert(recipes, {"gloopores:alatro_lump", "technic:alatro_dust 2"}) + table.insert(recipes, {"gloopores:kalite_lump", "technic:kalite_dust 2"}) + table.insert(recipes, {"gloopores:arol_lump", "technic:arol_dust 2"}) + table.insert(recipes, {"gloopores:talinite_lump", "technic:talinite_dust 2"}) + table.insert(recipes, {"gloopores:akalin_lump", "technic:akalin_dust 2"}) +end + +if minetest.get_modpath("homedecor") then + table.insert(recipes, {"home_decor:brass_ingot", "technic:brass_dust 1"}) +end + +for _, data in pairs(recipes) do + technic.register_grinder_recipe({input = {data[1]}, output = data[2]}) +end + +-- defuse common grinder unfriendly recipes +if minetest.get_modpath("fake_fire") then -- from homedecor_modpack + minetest.register_craft({ output='default:cobble 0', recipe={{'default:cobble'}}}) + minetest.register_craft({ output='default:gravel 0', recipe={{'default:gravel'}}}) +end + +-- dusts +local function register_dust(name, ingot) + local lname = string.lower(name) + lname = string.gsub(lname, ' ', '_') + minetest.register_craftitem("technic:"..lname.."_dust", { + description = S("%s Dust"):format(S(name)), + inventory_image = "technic_"..lname.."_dust.png", + }) + if ingot then + minetest.register_craft({ + type = "cooking", + recipe = "technic:"..lname.."_dust", + output = ingot, + }) + technic.register_grinder_recipe({ input = {ingot}, output = "technic:"..lname.."_dust 1" }) + end +end + +-- Sorted alphibeticaly +register_dust("Brass", "technic:brass_ingot") +register_dust("Bronze", "default:bronze_ingot") +register_dust("Carbon Steel", "technic:carbon_steel_ingot") +register_dust("Cast Iron", "technic:cast_iron_ingot") +register_dust("Chromium", "technic:chromium_ingot") +register_dust("Coal", nil) +register_dust("Copper", "default:copper_ingot") +register_dust("Lead", "technic:lead_ingot") +register_dust("Gold", "default:gold_ingot") +register_dust("Mithril", "moreores:mithril_ingot") +register_dust("Silver", "moreores:silver_ingot") +register_dust("Stainless Steel", "technic:stainless_steel_ingot") +register_dust("Sulfur", nil) +register_dust("Tin", "moreores:tin_ingot") +register_dust("Wrought Iron", "technic:wrought_iron_ingot") +register_dust("Zinc", "technic:zinc_ingot") +if minetest.get_modpath("gloopores") or minetest.get_modpath("glooptest") then + register_dust("Akalin", "glooptest:akalin_ingot") + register_dust("Alatro", "glooptest:alatro_ingot") + register_dust("Arol", "glooptest:arol_ingot") + register_dust("Kalite", nil) + register_dust("Talinite", "glooptest:talinite_ingot") +end + +for p = 0, 35 do + local nici = (p ~= 0 and p ~= 7 and p ~= 35) and 1 or nil + local psuffix = p == 7 and "" or p + local ingot = "technic:uranium"..psuffix.."_ingot" + local dust = "technic:uranium"..psuffix.."_dust" + minetest.register_craftitem(dust, { + description = S("%s Dust"):format(string.format(S("%.1f%%-Fissile Uranium"), p/10)), + inventory_image = "technic_uranium_dust.png", + on_place_on_ground = minetest.craftitem_place_item, + groups = {uranium_dust=1, not_in_creative_inventory=nici}, + }) + minetest.register_craft({ + type = "cooking", + recipe = dust, + output = ingot, + }) + technic.register_grinder_recipe({ input = {ingot}, output = dust }) +end + +local function uranium_dust(p) + return "technic:uranium"..(p == 7 and "" or p).."_dust" +end +for pa = 0, 34 do + for pb = pa+1, 35 do + local pc = (pa+pb)/2 + if pc == math.floor(pc) then + minetest.register_craft({ + type = "shapeless", + recipe = { uranium_dust(pa), uranium_dust(pb) }, + output = uranium_dust(pc).." 2", + }) + end + end +end + +minetest.register_craft({ + type = "fuel", + recipe = "technic:coal_dust", + burntime = 50, +}) + +if minetest.get_modpath("gloopores") or minetest.get_modpath("glooptest") then + minetest.register_craft({ + type = "fuel", + recipe = "technic:kalite_dust", + burntime = 37.5, + }) +end diff --git a/technic/machines/register/grindings.lua b/technic/machines/register/grindings.lua new file mode 100644 index 0000000..9231166 --- /dev/null +++ b/technic/machines/register/grindings.lua @@ -0,0 +1,62 @@ +local S = technic.getter +local moretrees = minetest.get_modpath("moretrees") +local mesecons_materials = minetest.get_modpath("mesecons_materials") +local dye = minetest.get_modpath("dye") + +-- sawdust, the finest wood/tree grinding +local sawdust = "technic:sawdust" +minetest.register_craftitem(sawdust, { + description = S("Sawdust"), + inventory_image = "technic_sawdust.png", +}) +minetest.register_craft({ type = "fuel", recipe = sawdust, burntime = 6 }) +technic.register_compressor_recipe({ input = {sawdust .. " 4"}, output = "default:wood" }) + +-- tree/wood grindings +local function register_tree_grinding(name, tree, wood, extract, grinding_color) + local lname = string.lower(name) + lname = string.gsub(lname, ' ', '_') + local grindings_name = "technic:"..lname.."_grindings" + local inventory_image = "technic_"..lname.."_grindings.png" + if grinding_color then + inventory_image = inventory_image .. "^[colorize:" .. grinding_color + end + minetest.register_craftitem(grindings_name, { + description = S("%s Grinding"):format(S(name)), + inventory_image = inventory_image, + }) + minetest.register_craft({ + type = "fuel", + recipe = grindings_name, + burntime = 8, + }) + technic.register_grinder_recipe({ input = { tree }, output = grindings_name .. " 4" }) + technic.register_grinder_recipe({ input = { grindings_name }, output = sawdust .. " 4" }) + if wood then + technic.register_grinder_recipe({ input = { wood }, output = grindings_name }) + end + if extract then + technic.register_extractor_recipe({ input = { grindings_name .. " 4" }, output = extract}) + technic.register_separating_recipe({ + input = { grindings_name .. " 4" }, + output = { sawdust .. " 4", extract } + }) + end +end + +local rubber_tree_planks = moretrees and "moretrees:rubber_tree_planks" +local default_extract = dye and "dye:brown 2" + +local grinding_recipes = { + {"Common Tree", "group:tree", "group:wood", default_extract }, + {"Rubber Tree", "moretrees:rubber_tree_trunk", rubber_tree_planks, "technic:raw_latex"} +} + +for _, data in pairs(grinding_recipes) do + register_tree_grinding(unpack(data)) +end + +if moretrees and dye then + -- https://en.wikipedia.org/wiki/Catechu ancient brown dye from the wood of acacia trees + register_tree_grinding("Acacia", "moretrees:acacia_trunk", "moretrees:acacia_planks", "dye:brown 8") +end diff --git a/technic/machines/register/init.lua b/technic/machines/register/init.lua new file mode 100644 index 0000000..1667d75 --- /dev/null +++ b/technic/machines/register/init.lua @@ -0,0 +1,33 @@ +local path = technic.modpath.."/machines/register" + +dofile(path.."/common.lua") + +-- Wiring stuff +dofile(path.."/cables.lua") +dofile(path.."/battery_box.lua") + +-- Generators +dofile(path.."/solar_array.lua") +dofile(path.."/generator.lua") + +-- API for machines +dofile(path.."/recipes.lua") +dofile(path.."/machine_base.lua") + +-- Recipes +dofile(path.."/alloy_recipes.lua") +dofile(path.."/grinder_recipes.lua") +dofile(path.."/extractor_recipes.lua") +dofile(path.."/compressor_recipes.lua") +dofile(path.."/centrifuge_recipes.lua") + +-- Multi-Machine Recipes +dofile(path.."/grindings.lua") + +-- Machines +dofile(path.."/alloy_furnace.lua") +dofile(path.."/electric_furnace.lua") +dofile(path.."/grinder.lua") +dofile(path.."/extractor.lua") +dofile(path.."/compressor.lua") +dofile(path.."/centrifuge.lua") diff --git a/technic/machines/register/machine_base.lua b/technic/machines/register/machine_base.lua new file mode 100644 index 0000000..0c46261 --- /dev/null +++ b/technic/machines/register/machine_base.lua @@ -0,0 +1,197 @@ + +local S = technic.getter + +local tube = { + insert_object = function(pos, node, stack, direction) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + return inv:add_item("src", stack) + end, + can_insert = function(pos, node, stack, direction) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + return inv:room_for_item("src", stack) + end, + connect_sides = {left = 1, right = 1, back = 1, top = 1, bottom = 1}, +} + +local function round(v) + return math.floor(v + 0.5) +end + +function technic.register_base_machine(data) + local typename = data.typename + local input_size = technic.recipes[typename].input_size + local machine_name = data.machine_name + local machine_desc = data.machine_desc + local tier = data.tier + local ltier = string.lower(tier) + + local groups = {cracky = 2, technic_machine = 1} + local active_groups = {cracky = 2, technic_machine = 1, not_in_creative_inventory = 1} + if data.tube then + groups.tubedevice = 1 + groups.tubedevice_receiver = 1 + active_groups.tubedevice = 1 + active_groups.tubedevice_receiver = 1 + end + + + local formspec = + "invsize[8,9;]".. + "list[current_name;src;"..(4-input_size)..",1;"..input_size..",1;]".. + "list[current_name;dst;5,1;2,2;]".. + "list[current_player;main;0,5;8,4;]".. + "label[0,0;"..machine_desc:format(tier).."]".. + "listring[current_name;dst]".. + "listring[current_player;main]".. + "listring[current_name;src]".. + "listring[current_player;main]" + if data.upgrade then + formspec = formspec.. + "list[current_name;upgrade1;1,3;1,1;]".. + "list[current_name;upgrade2;2,3;1,1;]".. + "label[1,4;"..S("Upgrade Slots").."]".. + "listring[current_name;upgrade1]".. + "listring[current_player;main]".. + "listring[current_name;upgrade2]".. + "listring[current_player;main]" + end + + local run = function(pos, node) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + local eu_input = meta:get_int(tier.."_EU_input") + + local machine_desc_tier = machine_desc:format(tier) + local machine_node = "technic:"..ltier.."_"..machine_name + local machine_demand = data.demand + + -- Setup meta data if it does not exist. + if not eu_input then + meta:set_int(tier.."_EU_demand", machine_demand[1]) + meta:set_int(tier.."_EU_input", 0) + return + end + + local EU_upgrade, tube_upgrade = 0, 0 + if data.upgrade then + EU_upgrade, tube_upgrade = technic.handle_machine_upgrades(meta) + end + if data.tube then + technic.handle_machine_pipeworks(pos, tube_upgrade) + end + + local powered = eu_input >= machine_demand[EU_upgrade+1] + if powered then + meta:set_int("src_time", meta:get_int("src_time") + round(data.speed*10)) + end + while true do + local result = technic.get_recipe(typename, inv:get_list("src")) + if not result then + technic.swap_node(pos, machine_node) + meta:set_string("infotext", S("%s Idle"):format(machine_desc_tier)) + meta:set_int(tier.."_EU_demand", 0) + meta:set_int("src_time", 0) + return + end + meta:set_int(tier.."_EU_demand", machine_demand[EU_upgrade+1]) + technic.swap_node(pos, machine_node.."_active") + meta:set_string("infotext", S("%s Active"):format(machine_desc_tier)) + if meta:get_int("src_time") < round(result.time*10) then + if not powered then + technic.swap_node(pos, machine_node) + meta:set_string("infotext", S("%s Unpowered"):format(machine_desc_tier)) + end + return + end + local output = result.output + if type(output) ~= "table" then output = { output } end + local output_stacks = {} + for _, o in ipairs(output) do + table.insert(output_stacks, ItemStack(o)) + end + local room_for_output = true + inv:set_size("dst_tmp", inv:get_size("dst")) + inv:set_list("dst_tmp", inv:get_list("dst")) + for _, o in ipairs(output_stacks) do + if not inv:room_for_item("dst_tmp", o) then + room_for_output = false + break + end + inv:add_item("dst_tmp", o) + end + if not room_for_output then + technic.swap_node(pos, machine_node) + meta:set_string("infotext", S("%s Idle"):format(machine_desc_tier)) + meta:set_int(tier.."_EU_demand", 0) + meta:set_int("src_time", round(result.time*10)) + return + end + meta:set_int("src_time", meta:get_int("src_time") - round(result.time*10)) + inv:set_list("src", result.new_input) + inv:set_list("dst", inv:get_list("dst_tmp")) + end + end + + minetest.register_node("technic:"..ltier.."_"..machine_name, { + description = machine_desc:format(tier), + tiles = {"technic_"..ltier.."_"..machine_name.."_top.png", + "technic_"..ltier.."_"..machine_name.."_bottom.png", + "technic_"..ltier.."_"..machine_name.."_side.png", + "technic_"..ltier.."_"..machine_name.."_side.png", + "technic_"..ltier.."_"..machine_name.."_side.png", + "technic_"..ltier.."_"..machine_name.."_front.png"}, + paramtype2 = "facedir", + groups = groups, + tube = data.tube and tube or nil, + legacy_facedir_simple = true, + sounds = default.node_sound_wood_defaults(), + on_construct = function(pos) + local node = minetest.get_node(pos) + local meta = minetest.get_meta(pos) + meta:set_string("infotext", machine_desc:format(tier)) + meta:set_int("tube_time", 0) + meta:set_string("formspec", formspec) + local inv = meta:get_inventory() + inv:set_size("src", input_size) + inv:set_size("dst", 4) + inv:set_size("upgrade1", 1) + inv:set_size("upgrade2", 1) + end, + can_dig = technic.machine_can_dig, + allow_metadata_inventory_put = technic.machine_inventory_put, + allow_metadata_inventory_take = technic.machine_inventory_take, + allow_metadata_inventory_move = technic.machine_inventory_move, + technic_run = run, + after_place_node = data.tube and pipeworks.after_place, + after_dig_node = technic.machine_after_dig_node + }) + + minetest.register_node("technic:"..ltier.."_"..machine_name.."_active",{ + description = machine_desc:format(tier), + tiles = {"technic_"..ltier.."_"..machine_name.."_top.png", + "technic_"..ltier.."_"..machine_name.."_bottom.png", + "technic_"..ltier.."_"..machine_name.."_side.png", + "technic_"..ltier.."_"..machine_name.."_side.png", + "technic_"..ltier.."_"..machine_name.."_side.png", + "technic_"..ltier.."_"..machine_name.."_front_active.png"}, + paramtype2 = "facedir", + drop = "technic:"..ltier.."_"..machine_name, + groups = active_groups, + legacy_facedir_simple = true, + sounds = default.node_sound_wood_defaults(), + tube = data.tube and tube or nil, + can_dig = technic.machine_can_dig, + allow_metadata_inventory_put = technic.machine_inventory_put, + allow_metadata_inventory_take = technic.machine_inventory_take, + allow_metadata_inventory_move = technic.machine_inventory_move, + technic_run = run, + technic_disabled_machine_name = "technic:"..ltier.."_"..machine_name, + }) + + technic.register_machine(tier, "technic:"..ltier.."_"..machine_name, technic.receiver) + technic.register_machine(tier, "technic:"..ltier.."_"..machine_name.."_active", technic.receiver) + +end -- End registration + diff --git a/technic/machines/register/recipes.lua b/technic/machines/register/recipes.lua new file mode 100644 index 0000000..d30fd4f --- /dev/null +++ b/technic/machines/register/recipes.lua @@ -0,0 +1,107 @@ +local have_ui = minetest.get_modpath("unified_inventory") + +technic.recipes = { cooking = { input_size = 1, output_size = 1 } } +function technic.register_recipe_type(typename, origdata) + local data = {} + for k, v in pairs(origdata) do data[k] = v end + data.input_size = data.input_size or 1 + data.output_size = data.output_size or 1 + if have_ui and unified_inventory.register_craft_type and data.output_size == 1 then + unified_inventory.register_craft_type(typename, { + description = data.description, + width = data.input_size, + height = 1, + }) + end + data.recipes = {} + technic.recipes[typename] = data +end + +local function get_recipe_index(items) + if not items or type(items) ~= "table" then return false end + local l = {} + for i, stack in ipairs(items) do + l[i] = ItemStack(stack):get_name() + end + table.sort(l) + return table.concat(l, "/") +end + +local function register_recipe(typename, data) + -- Handle aliases + for i, stack in ipairs(data.input) do + data.input[i] = ItemStack(stack):to_string() + end + if type(data.output) == "table" then + for i, v in ipairs(data.output) do + data.output[i] = ItemStack(data.output[i]):to_string() + end + else + data.output = ItemStack(data.output):to_string() + end + + local recipe = {time = data.time, input = {}, output = data.output} + local index = get_recipe_index(data.input) + if not index then + print("[Technic] ignored registration of garbage recipe!") + return + end + for _, stack in ipairs(data.input) do + recipe.input[ItemStack(stack):get_name()] = ItemStack(stack):get_count() + end + + technic.recipes[typename].recipes[index] = recipe + if unified_inventory and technic.recipes[typename].output_size == 1 then + unified_inventory.register_craft({ + type = typename, + output = data.output, + items = data.input, + width = 0, + }) + end +end + +function technic.register_recipe(typename, data) + minetest.after(0.01, register_recipe, typename, data) -- Handle aliases +end + +function technic.get_recipe(typename, items) + if typename == "cooking" then -- Already builtin in Minetest, so use that + local result, new_input = minetest.get_craft_result({ + method = "cooking", + width = 1, + items = items}) + -- Compatibility layer + if not result or result.time == 0 then + return nil + else + return {time = result.time, + new_input = new_input.items, + output = result.item} + end + end + local index = get_recipe_index(items) + if not index then + print("[Technic] ignored registration of garbage recipe!") + return + end + local recipe = technic.recipes[typename].recipes[index] + if recipe then + local new_input = {} + for i, stack in ipairs(items) do + if stack:get_count() < recipe.input[stack:get_name()] then + return nil + else + new_input[i] = ItemStack(stack) + new_input[i]:take_item(recipe.input[stack:get_name()]) + end + end + return {time = recipe.time, + new_input = new_input, + output = recipe.output} + else + return nil + end +end + + diff --git a/technic/machines/register/solar_array.lua b/technic/machines/register/solar_array.lua new file mode 100644 index 0000000..39f50d2 --- /dev/null +++ b/technic/machines/register/solar_array.lua @@ -0,0 +1,65 @@ + +local S = technic.getter + +function technic.register_solar_array(data) + local tier = data.tier + local ltier = string.lower(tier) + + local run = function(pos, node) + -- The action here is to make the solar array produce power + -- Power is dependent on the light level and the height above ground + -- There are many ways to cheat by using other light sources like lamps. + -- As there is no way to determine if light is sunlight that is just a shame. + -- To take care of some of it solar panels do not work outside daylight hours or if + -- built below 0m + local pos1 = {} + local machine_name = S("Arrayed Solar %s Generator"):format(tier) + pos1.y = pos.y + 1 + pos1.x = pos.x + pos1.z = pos.z + + technic.get_or_load_node(pos1) + local light = minetest.get_node_light(pos1, nil) + local time_of_day = minetest.get_timeofday() + local meta = minetest.get_meta(pos) + light = light or 0 + + -- turn on array only during day time and if sufficient light + -- I know this is counter intuitive when cheating by using other light sources. + if light >= 12 and time_of_day >= 0.24 and time_of_day <= 0.76 and pos.y > 0 then + local charge_to_give = math.floor((light + pos.y) * data.power) + charge_to_give = math.max(charge_to_give, 0) + charge_to_give = math.min(charge_to_give, data.power * 50) + meta:set_string("infotext", S("@1 Active (@2 EU)", machine_name, technic.prettynum(charge_to_give))) + meta:set_int(tier.."_EU_supply", charge_to_give) + else + meta:set_string("infotext", S("%s Idle"):format(machine_name)) + meta:set_int(tier.."_EU_supply", 0) + end + end + + minetest.register_node("technic:solar_array_"..ltier, { + tiles = {"technic_"..ltier.."_solar_array_top.png", "technic_"..ltier.."_solar_array_bottom.png", + "technic_"..ltier.."_solar_array_side.png", "technic_"..ltier.."_solar_array_side.png", + "technic_"..ltier.."_solar_array_side.png", "technic_"..ltier.."_solar_array_side.png"}, + groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2, technic_machine=1}, + sounds = default.node_sound_wood_defaults(), + description = S("Arrayed Solar %s Generator"):format(tier), + active = false, + drawtype = "nodebox", + paramtype = "light", + node_box = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, + }, + on_construct = function(pos) + local meta = minetest.get_meta(pos) + local name = minetest.get_node(pos).name + meta:set_int(tier.."_EU_supply", 0) + end, + technic_run = run, + }) + + technic.register_machine(tier, "technic:solar_array_"..ltier, technic.producer) +end + diff --git a/technic/machines/supply_converter.lua b/technic/machines/supply_converter.lua new file mode 100644 index 0000000..ffcd40d --- /dev/null +++ b/technic/machines/supply_converter.lua @@ -0,0 +1,80 @@ +-- The supply converter is a generic device which can convert from +-- LV to MV and back, and HV to MV and back. +-- The machine is configured by the wiring below and above it. +-- +-- It works like this: +-- The top side is setup as the receiver side, the bottom as the producer side. +-- Once the receiver side is powered it will deliver power to the other side. +-- Unused power is wasted just like any other producer! + +local S = technic.getter + +local run = function(pos, node) + local demand = 10000 + local remain = 0.9 + -- Machine information + local machine_name = S("Supply Converter") + local meta = minetest.get_meta(pos) + + local pos_up = {x=pos.x, y=pos.y+1, z=pos.z} + local pos_down = {x=pos.x, y=pos.y-1, z=pos.z} + local name_up = minetest.get_node(pos_up).name + local name_down = minetest.get_node(pos_down).name + + local from = technic.get_cable_tier(name_up) + local to = technic.get_cable_tier(name_down) + + if from and to then + local input = meta:get_int(from.."_EU_input") + meta:set_int(from.."_EU_demand", demand) + meta:set_int(from.."_EU_supply", 0) + meta:set_int(to.."_EU_demand", 0) + meta:set_int(to.."_EU_supply", input * remain) + meta:set_string("infotext", S("@1 (@2 @3 -> @4 @5)", machine_name, technic.prettynum(input), from, technic.prettynum(input * remain), to)) + else + meta:set_string("infotext", S("%s Has Bad Cabling"):format(machine_name)) + if to then + meta:set_int(to.."_EU_supply", 0) + end + if from then + meta:set_int(from.."_EU_demand", 0) + end + return + end + +end + +minetest.register_node("technic:supply_converter", { + description = S("Supply Converter"), + tiles = {"technic_supply_converter_top.png", "technic_supply_converter_bottom.png", + "technic_supply_converter_side.png", "technic_supply_converter_side.png", + "technic_supply_converter_side.png", "technic_supply_converter_side.png"}, + groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2, technic_machine=1}, + sounds = default.node_sound_wood_defaults(), + drawtype = "nodebox", + paramtype = "light", + node_box = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, + }, + on_construct = function(pos) + local meta = minetest.get_meta(pos) + meta:set_string("infotext", S("Supply Converter")) + meta:set_float("active", false) + end, + technic_run = run, +}) + +minetest.register_craft({ + output = 'technic:supply_converter 1', + recipe = { + {'technic:fine_gold_wire', 'technic:rubber', 'technic:doped_silicon_wafer'}, + {'technic:mv_transformer', 'technic:machine_casing', 'technic:lv_transformer'}, + {'technic:mv_cable0', 'technic:rubber', 'technic:lv_cable0'}, + } +}) + +for tier, machines in pairs(technic.machines) do + technic.register_machine(tier, "technic:supply_converter", technic.producer_receiver) +end + diff --git a/technic/machines/switching_station.lua b/technic/machines/switching_station.lua new file mode 100644 index 0000000..d6f23a3 --- /dev/null +++ b/technic/machines/switching_station.lua @@ -0,0 +1,404 @@ +-- SWITCHING STATION +-- The switching station is the center of all power distribution on an electric network. +-- +-- The station collects power from sources (PR), distributes it to sinks (RE), +-- and uses the excess/shortfall to charge and discharge batteries (BA). +-- +-- For now, all supply and demand values are expressed in kW. +-- +-- It works like this: +-- All PR,BA,RE nodes are indexed and tagged with the switching station. +-- The tagging is to allow more stations to be built without allowing a cheat +-- with duplicating power. +-- All the RE nodes are queried for their current EU demand. Those which are off +-- would require no or a small standby EU demand, while those which are on would +-- require more. +-- If the total demand is less than the available power they are all updated with the +-- demand number. +-- If any surplus exists from the PR nodes the batteries will be charged evenly with this. +-- If the total demand requires draw on the batteries they will be discharged evenly. +-- +-- If the total demand is more than the available power all RE nodes will be shut down. +-- We have a brown-out situation. +-- +-- Hence all the power distribution logic resides in this single node. +-- +-- Nodes connected to the network will have one or more of these parameters as meta data: +-- _EU_supply : Exists for PR and BA node types. This is the EU value supplied by the node. Output +-- _EU_demand : Exists for RE and BA node types. This is the EU value the node requires to run. Output +-- _EU_input : Exists for RE and BA node types. This is the actual EU value the network can give the node. Input +-- +-- The reason the LV|MV|HV type is prepended toe meta data is because some machine could require several supplies to work. +-- This way the supplies are separated per network. + +technic.networks = {} + +local S = technic.getter + +minetest.register_craft({ + output = "technic:switching_station", + recipe = { + {"", "technic:lv_transformer", ""}, + {"default:copper_ingot", "technic:machine_casing", "default:copper_ingot"}, + {"technic:lv_cable0", "technic:lv_cable0", "technic:lv_cable0"} + } +}) + +minetest.register_node("technic:switching_station",{ + description = S("Switching Station"), + tiles = {"technic_water_mill_top_active.png", "technic_water_mill_top_active.png", + "technic_water_mill_top_active.png", "technic_water_mill_top_active.png", + "technic_water_mill_top_active.png", "technic_water_mill_top_active.png"}, + groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2}, + sounds = default.node_sound_wood_defaults(), + drawtype = "nodebox", + paramtype = "light", + node_box = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, + }, + on_construct = function(pos) + local meta = minetest.get_meta(pos) + meta:set_string("infotext", S("Switching Station")) + meta:set_string("active", 1) + end, +}) + +-------------------------------------------------- +-- Functions to traverse the electrical network +-------------------------------------------------- + +-- Add a wire node to the LV/MV/HV network +local add_new_cable_node = function(nodes, pos) + -- Ignore if the node has already been added + for i = 1, #nodes do + if pos.x == nodes[i].x and + pos.y == nodes[i].y and + pos.z == nodes[i].z then + return false + end + end + table.insert(nodes, {x=pos.x, y=pos.y, z=pos.z, visited=1}) + return true +end + +-- Generic function to add found connected nodes to the right classification array +local check_node_subp = function(PR_nodes, RE_nodes, BA_nodes, SP_nodes, all_nodes, pos, machines, tier, sw_pos, from_below) + technic.get_or_load_node(pos) + local meta = minetest.get_meta(pos) + local name = minetest.get_node(pos).name + + if technic.is_tier_cable(name, tier) then + add_new_cable_node(all_nodes, pos) + elseif machines[name] then + --dprint(name.." is a "..machines[name]) + if machines[name] == technic.producer then + add_new_cable_node(PR_nodes, pos) + elseif machines[name] == technic.receiver then + add_new_cable_node(RE_nodes, pos) + elseif machines[name] == technic.producer_receiver then + add_new_cable_node(PR_nodes, pos) + add_new_cable_node(RE_nodes, pos) + elseif machines[name] == "SPECIAL" and + (pos.x ~= sw_pos.x or pos.y ~= sw_pos.y or pos.z ~= sw_pos.z) and + from_below then + -- Another switching station -> disable it + add_new_cable_node(SP_nodes, pos) + meta:set_int("active", 0) + meta:set_string("active_pos", minetest.serialize(sw_pos)) + elseif machines[name] == technic.battery then + add_new_cable_node(BA_nodes, pos) + end + + meta:set_int(tier.."_EU_timeout", 2) -- Touch node + end +end + +-- Traverse a network given a list of machines and a cable type name +local traverse_network = function(PR_nodes, RE_nodes, BA_nodes, SP_nodes, all_nodes, i, machines, tier, sw_pos) + local pos = all_nodes[i] + local positions = { + {x=pos.x+1, y=pos.y, z=pos.z}, + {x=pos.x-1, y=pos.y, z=pos.z}, + {x=pos.x, y=pos.y+1, z=pos.z}, + {x=pos.x, y=pos.y-1, z=pos.z}, + {x=pos.x, y=pos.y, z=pos.z+1}, + {x=pos.x, y=pos.y, z=pos.z-1}} + --print("ON") + for i, cur_pos in pairs(positions) do + check_node_subp(PR_nodes, RE_nodes, BA_nodes, SP_nodes, all_nodes, cur_pos, machines, tier, sw_pos, i == 3) + end +end + +local touch_nodes = function(list, tier) + for _, pos in ipairs(list) do + local meta = minetest.get_meta(pos) + meta:set_int(tier.."_EU_timeout", 2) -- Touch node + end +end + +local get_network = function(sw_pos, pos1, tier) + local cached = technic.networks[minetest.hash_node_position(pos1)] + if cached and cached.tier == tier then + touch_nodes(cached.PR_nodes, tier) + touch_nodes(cached.BA_nodes, tier) + touch_nodes(cached.RE_nodes, tier) + for _, pos in ipairs(cached.SP_nodes) do + local meta = minetest.get_meta(pos) + meta:set_int("active", 0) + meta:set_string("active_pos", minetest.serialize(sw_pos)) + end + return cached.PR_nodes, cached.BA_nodes, cached.RE_nodes + end + local i = 1 + local PR_nodes = {} + local BA_nodes = {} + local RE_nodes = {} + local SP_nodes = {} + local all_nodes = {pos1} + repeat + traverse_network(PR_nodes, RE_nodes, BA_nodes, SP_nodes, all_nodes, + i, technic.machines[tier], tier, sw_pos) + i = i + 1 + until all_nodes[i] == nil + technic.networks[minetest.hash_node_position(pos1)] = {tier = tier, PR_nodes = PR_nodes, + RE_nodes = RE_nodes, BA_nodes = BA_nodes, SP_nodes = SP_nodes} + return PR_nodes, BA_nodes, RE_nodes +end + +----------------------------------------------- +-- The action code for the switching station -- +----------------------------------------------- +minetest.register_abm({ + nodenames = {"technic:switching_station"}, + label = "Switching Station", -- allows the mtt profiler to profile this abm individually + interval = 1, + chance = 1, + action = function(pos, node, active_object_count, active_object_count_wider) + local meta = minetest.get_meta(pos) + local meta1 = nil + local pos1 = {} + local PR_EU = 0 -- EUs from PR nodes + local BA_PR_EU = 0 -- EUs from BA nodes (discharching) + local BA_RE_EU = 0 -- EUs to BA nodes (charging) + local RE_EU = 0 -- EUs to RE nodes + + local tier = "" + local PR_nodes + local BA_nodes + local RE_nodes + local machine_name = S("Switching Station") + + if meta:get_int("active") ~= 1 then + meta:set_int("active", 1) + local active_pos = minetest.deserialize(meta:get_string("active_pos")) + if active_pos then + local meta1 = minetest.get_meta(active_pos) + meta:set_string("infotext", S("%s (Slave)"):format(meta1:get_string("infotext"))) + end + return + end + + -- Which kind of network are we on: + pos1 = {x=pos.x, y=pos.y-1, z=pos.z} + + local name = minetest.get_node(pos1).name + local tier = technic.get_cable_tier(name) + if tier then + PR_nodes, BA_nodes, RE_nodes = get_network(pos, pos1, tier) + else + --dprint("Not connected to a network") + meta:set_string("infotext", S("%s Has No Network"):format(machine_name)) + return + end + + -- Run all the nodes + local function run_nodes(list) + for _, pos2 in ipairs(list) do + technic.get_or_load_node(pos2) + local node2 = minetest.get_node(pos2) + local nodedef + if node2 and node2.name then + nodedef = minetest.registered_nodes[node2.name] + end + if nodedef and nodedef.technic_run then + nodedef.technic_run(pos2, node2) + end + end + end + + run_nodes(PR_nodes) + run_nodes(RE_nodes) + run_nodes(BA_nodes) + + -- Strings for the meta data + local eu_demand_str = tier.."_EU_demand" + local eu_input_str = tier.."_EU_input" + local eu_supply_str = tier.."_EU_supply" + + -- Distribute charge equally across multiple batteries. + local charge_total = 0 + local battery_count = 0 + + for n, pos1 in pairs(BA_nodes) do + meta1 = minetest.get_meta(pos1) + local charge = meta1:get_int("internal_EU_charge") + + if (meta1:get_int(eu_demand_str) ~= 0) then + charge_total = charge_total + charge + battery_count = battery_count + 1 + end + end + + local charge_distributed = math.floor(charge_total / battery_count) + + for n, pos1 in pairs(BA_nodes) do + meta1 = minetest.get_meta(pos1) + + if (meta1:get_int(eu_demand_str) ~= 0) then + meta1:set_int("internal_EU_charge", charge_distributed) + end + end + + -- Get all the power from the PR nodes + local PR_eu_supply = 0 -- Total power + for _, pos1 in pairs(PR_nodes) do + meta1 = minetest.get_meta(pos1) + PR_eu_supply = PR_eu_supply + meta1:get_int(eu_supply_str) + end + --dprint("Total PR supply:"..PR_eu_supply) + + -- Get all the demand from the RE nodes + local RE_eu_demand = 0 + for _, pos1 in pairs(RE_nodes) do + meta1 = minetest.get_meta(pos1) + RE_eu_demand = RE_eu_demand + meta1:get_int(eu_demand_str) + end + --dprint("Total RE demand:"..RE_eu_demand) + + -- Get all the power from the BA nodes + local BA_eu_supply = 0 + for _, pos1 in pairs(BA_nodes) do + meta1 = minetest.get_meta(pos1) + BA_eu_supply = BA_eu_supply + meta1:get_int(eu_supply_str) + end + --dprint("Total BA supply:"..BA_eu_supply) + + -- Get all the demand from the BA nodes + local BA_eu_demand = 0 + for _, pos1 in pairs(BA_nodes) do + meta1 = minetest.get_meta(pos1) + BA_eu_demand = BA_eu_demand + meta1:get_int(eu_demand_str) + end + --dprint("Total BA demand:"..BA_eu_demand) + + meta:set_string("infotext", + S("@1. Supply: @2 Demand: @3", + machine_name, technic.prettynum(PR_eu_supply), technic.prettynum(RE_eu_demand))) + + -- If the PR supply is enough for the RE demand supply them all + if PR_eu_supply >= RE_eu_demand then + --dprint("PR_eu_supply"..PR_eu_supply.." >= RE_eu_demand"..RE_eu_demand) + for _, pos1 in pairs(RE_nodes) do + meta1 = minetest.get_meta(pos1) + local eu_demand = meta1:get_int(eu_demand_str) + meta1:set_int(eu_input_str, eu_demand) + end + -- We have a surplus, so distribute the rest equally to the BA nodes + -- Let's calculate the factor of the demand + PR_eu_supply = PR_eu_supply - RE_eu_demand + local charge_factor = 0 -- Assume all batteries fully charged + if BA_eu_demand > 0 then + charge_factor = PR_eu_supply / BA_eu_demand + end + for n, pos1 in pairs(BA_nodes) do + meta1 = minetest.get_meta(pos1) + local eu_demand = meta1:get_int(eu_demand_str) + meta1:set_int(eu_input_str, math.floor(eu_demand * charge_factor)) + --dprint("Charging battery:"..math.floor(eu_demand*charge_factor)) + end + return + end + + -- If the PR supply is not enough for the RE demand we will discharge the batteries too + if PR_eu_supply + BA_eu_supply >= RE_eu_demand then + --dprint("PR_eu_supply "..PR_eu_supply.."+BA_eu_supply "..BA_eu_supply.." >= RE_eu_demand"..RE_eu_demand) + for _, pos1 in pairs(RE_nodes) do + meta1 = minetest.get_meta(pos1) + local eu_demand = meta1:get_int(eu_demand_str) + meta1:set_int(eu_input_str, eu_demand) + end + -- We have a deficit, so distribute to the BA nodes + -- Let's calculate the factor of the supply + local charge_factor = 0 -- Assume all batteries depleted + if BA_eu_supply > 0 then + charge_factor = (PR_eu_supply - RE_eu_demand) / BA_eu_supply + end + for n,pos1 in pairs(BA_nodes) do + meta1 = minetest.get_meta(pos1) + local eu_supply = meta1:get_int(eu_supply_str) + meta1:set_int(eu_input_str, math.floor(eu_supply * charge_factor)) + --dprint("Discharging battery:"..math.floor(eu_supply*charge_factor)) + end + return + end + + -- If the PR+BA supply is not enough for the RE demand: Power only the batteries + local charge_factor = 0 -- Assume all batteries fully charged + if BA_eu_demand > 0 then + charge_factor = PR_eu_supply / BA_eu_demand + end + for n, pos1 in pairs(BA_nodes) do + meta1 = minetest.get_meta(pos1) + local eu_demand = meta1:get_int(eu_demand_str) + meta1:set_int(eu_input_str, math.floor(eu_demand * charge_factor)) + end + for n, pos1 in pairs(RE_nodes) do + meta1 = minetest.get_meta(pos1) + meta1:set_int(eu_input_str, 0) + end + end, +}) + +-- Timeout ABM +-- Timeout for a node in case it was disconnected from the network +-- A node must be touched by the station continuously in order to function +local function switching_station_timeout_count(pos, tier) + local meta = minetest.get_meta(pos) + local timeout = meta:get_int(tier.."_EU_timeout") + if timeout <= 0 then + meta:set_int(tier.."_EU_input", 0) -- Not needed anymore <-- actually, it is for supply converter + return true + else + meta:set_int(tier.."_EU_timeout", timeout - 1) + return false + end +end +minetest.register_abm({ + nodenames = {"group:technic_machine"}, + interval = 1, + chance = 1, + action = function(pos, node, active_object_count, active_object_count_wider) + for tier, machines in pairs(technic.machines) do + if machines[node.name] and switching_station_timeout_count(pos, tier) then + local nodedef = minetest.registered_nodes[node.name] + if nodedef and nodedef.technic_disabled_machine_name then + node.name = nodedef.technic_disabled_machine_name + minetest.swap_node(pos, node) + elseif nodedef and nodedef.technic_on_disable then + nodedef.technic_on_disable(pos, node) + end + if nodedef then + local meta = minetest.get_meta(pos) + meta:set_string("infotext", S("%s Has No Network"):format(nodedef.description)) + end + end + end + end, +}) + +for tier, machines in pairs(technic.machines) do + -- SPECIAL will not be traversed + technic.register_machine(tier, "technic:switching_station", "SPECIAL") +end + diff --git a/technic/manual.md b/technic/manual.md deleted file mode 100644 index 9031792..0000000 --- a/technic/manual.md +++ /dev/null @@ -1,1488 +0,0 @@ -Minetest technic modpack user manual -==================================== - -The technic modpack extends the Minetest game with many new elements, -mainly constructable machines and tools. It is a large modpack, and -tends to dominate gameplay when it is used. This manual describes how -to use the technic modpack, mainly from a player's perspective. - -The technic modpack depends on some other modpacks: - -* the basic Minetest game -* mesecons, which supports the construction of logic systems based on - signalling elements -* pipeworks, which supports the automation of item transport -* moreores, which provides some additional ore types - -This manual doesn't explain how to use these other modpacks, which ought -to (but actually don't) have their own manuals. - -Recipes for constructable items in technic are generally not guessable, -and are also not specifically documented here. You should use a -craft guide mod to look up the recipes in-game. For the best possible -guidance, use the unified\_inventory mod, with which technic registers -its specialised recipe types. - -substances ----------- - -### ore ### - -The technic mod makes extensive use of not just the default ores but also -some that are added by mods. You will need to mine for all the ore types -in the course of the game. Each ore type is found at a specific range of -elevations, and while the ranges mostly overlap, some have non-overlapping -ranges, so you will ultimately need to mine at more than one elevation -to find all the ores. Also, because one of the best elevations to mine -at is very deep, you will be unable to mine there early in the game. - -Elevation is measured in meters, relative to a reference plane that -is not quite sea level. (The standard sea level is at an elevation -of about +1.4.) Positive elevations are above the reference plane and -negative elevations below. Because elevations are always described this -way round, greater numbers when higher, we avoid the word "depth". - -The ores that matter in technic are coal, iron, copper, tin, zinc, -chromium, uranium, silver, gold, mithril, mese, and diamond. - -Coal is part of the basic Minetest game. It is found from elevation -+64 downwards, so is available right on the surface at the start of -the game, but it is far less abundant above elevation 0 than below. -It is initially used as a fuel, driving important machines in the early -part of the game. It becomes less important as a fuel once most of your -machines are electrically powered, but burning fuel remains a way to -generate electrical power. Coal is also used, usually in dust form, as -an ingredient in alloying recipes, wherever elemental carbon is required. - -Iron is part of the basic Minetest game. It is found from elevation -+2 downwards, and its abundance increases in stages as one descends, -reaching its maximum from elevation -64 downwards. It is a common metal, -used frequently as a structural component. In technic, unlike the basic -game, iron is used in multiple forms, mainly alloys based on iron and -including carbon (coal). - -Copper is part of the basic Minetest game (having migrated there from -moreores). It is found from elevation -16 downwards, but is more abundant -from elevation -64 downwards. It is a common metal, used either on its -own for its electrical conductivity, or as the base component of alloys. -Although common, it is very heavily used, and most of the time it will -be the material that most limits your activity. - -Tin is supplied by the moreores mod. It is found from elevation +8 -downwards, with no elevation-dependent variations in abundance beyond -that point. It is a common metal. Its main use in pure form is as a -component of electrical batteries. Apart from that its main purpose is -as the secondary ingredient in bronze (the base being copper), but bronze -is itself little used. Its abundance is well in excess of its usage, -so you will usually have a surplus of it. - -Zinc is supplied by technic. It is found from elevation +2 downwards, -with no elevation-dependent variations in abundance beyond that point. -It is a common metal. Its main use is as the secondary ingredient -in brass (the base being copper), but brass is itself little used. -Its abundance is well in excess of its usage, so you will usually have -a surplus of it. - -Chromium is supplied by technic. It is found from elevation -100 -downwards, with no elevation-dependent variations in abundance beyond -that point. It is a moderately common metal. Its main use is as the -secondary ingredient in stainless steel (the base being iron). - -Uranium is supplied by technic. It is found only from elevation -80 down -to -300; using it therefore requires one to mine above elevation -300 even -though deeper mining is otherwise more productive. It is a moderately -common metal, useful only for reasons related to radioactivity: it forms -the fuel for nuclear reactors, and is also one of the best radiation -shielding materials available. It is not difficult to find enough uranium -ore to satisfy these uses. Beware that the ore is slightly radioactive: -it will slightly harm you if you stand as close as possible to it. -It is safe when more than a meter away or when mined. - -Silver is supplied by the moreores mod. It is found from elevation -2 -downwards, with no elevation-dependent variations in abundance beyond -that point. It is a semi-precious metal. It is little used, being most -notably used in electrical items due to its conductivity, being the best -conductor of all the pure elements. - -Gold is part of the basic Minetest game (having migrated there from -moreores). It is found from elevation -64 downwards, but is more -abundant from elevation -256 downwards. It is a precious metal. It is -little used, being most notably used in electrical items due to its -combination of good conductivity (third best of all the pure elements) -and corrosion resistance. - -Mithril is supplied by the moreores mod. It is found from elevation --512 downwards, the deepest ceiling of any minable substance, with -no elevation-dependent variations in abundance beyond that point. -It is a rare precious metal, and unlike all the other metals described -here it is entirely fictional, being derived from J. R. R. Tolkien's -Middle-Earth setting. It is little used. - -Mese is part of the basic Minetest game. It is found from elevation --64 downwards. The ore is more abundant from elevation -256 downwards, -and from elevation -1024 downwards there are also occasional blocks of -solid mese (each yielding as much mese as nine blocks of ore). It is a -precious gemstone, and unlike diamond it is entirely fictional. It is -used in many recipes, though mainly not in large quantities, wherever -some magical quality needs to be imparted. - -Diamond is part of the basic Minetest game (having migrated there from -technic). It is found from elevation -128 downwards, but is more abundant -from elevation -256 downwards. It is a precious gemstone. It is used -moderately, mainly for reasons connected to its extreme hardness. - -### rock ### - -In addition to the ores, there are multiple kinds of rock that need to be -mined in their own right, rather than for minerals. The rock types that -matter in technic are standard stone, desert stone, marble, and granite. - -Standard stone is part of the basic Minetest game. It is extremely -common. As in the basic game, when dug it yields cobblestone, which can -be cooked to turn it back into standard stone. Cobblestone is used in -recipes only for some relatively primitive machines. Standard stone is -used in a couple of machine recipes. These rock types gain additional -significance with technic because the grinder can be used to turn them -into dirt and sand. This, especially when combined with an automated -cobblestone generator, can be an easier way to acquire sand than -collecting it where it occurs naturally. - -Desert stone is part of the basic Minetest game. It is found specifically -in desert biomes, and only from elevation +2 upwards. Although it is -easily accessible, therefore, its quantity is ultimately quite limited. -It is used in a few recipes. - -Marble is supplied by technic. It is found in dense clusters from -elevation -50 downwards. It has mainly decorative use, but also appears -in one machine recipe. - -Granite is supplied by technic. It is found in dense clusters from -elevation -150 downwards. It is much harder to dig than standard stone, -so impedes mining when it is encountered. It has mainly decorative use, -but also appears in a couple of machine recipes. - -### rubber ### - -Rubber is a biologically-derived material that has industrial uses due -to its electrical resistivity and its impermeability. In technic, it -is used in a few recipes, and it must be acquired by tapping rubber trees. - -If you have the moretrees mod installed, the rubber trees you need -are those defined by that mod. If not, technic supplies a copy of the -moretrees rubber tree. - -Extracting rubber requires a specific tool, a tree tap. Using the tree -tap (by left-clicking) on a rubber tree trunk block extracts a lump of -raw latex from the trunk. Each trunk block can be repeatedly tapped for -latex, at intervals of several minutes; its appearance changes to show -whether it is currently ripe for tapping. Each tree has several trunk -blocks, so several latex lumps can be extracted from a tree in one visit. - -Raw latex isn't used directly. It must be vulcanized to produce finished -rubber. This can be performed by alloying the latex with coal dust. - -### metal ### - -Many of the substances important in technic are metals, and there is -a common pattern in how metals are handled. Generally, each metal can -exist in five forms: ore, lump, dust, ingot, and block. With a couple of -tricky exceptions in mods outside technic, metals are only *used* in dust, -ingot, and block forms. Metals can be readily converted between these -three forms, but can't be converted from them back to ore or lump forms. - -As in the basic Minetest game, a "lump" of metal is acquired directly by -digging ore, and will then be processed into some other form for use. -A lump is thus more akin to ore than to refined metal. (In real life, -metal ore rarely yields lumps ("nuggets") of pure metal directly. -More often the desired metal is chemically bound into the rock as an -oxide or some other compound, and the ore must be chemically processed -to yield pure metal.) - -Not all metals occur directly as ore. Generally, elemental metals (those -consisting of a single chemical element) occur as ore, and alloys (those -consisting of a mixture of multiple elements) do not. In fact, if the -fictional mithril is taken to be elemental, this pattern is currently -followed perfectly. (It is not clear in the Middle-Earth setting whether -mithril is elemental or an alloy.) This might change in the future: -in real life some alloys do occur as ore, and some elemental metals -rarely occur naturally outside such alloys. Metals that do not occur -as ore also lack the "lump" form. - -The basic Minetest game offers a single way to refine metals: cook a lump -in a furnace to produce an ingot. With technic this refinement method -still exists, but is rarely used outside the early part of the game, -because technic offers a more efficient method once some machines have -been built. The grinder, available only in electrically-powered forms, -can grind a metal lump into two piles of metal dust. Each dust pile -can then be cooked into an ingot, yielding two ingots from one lump. -This doubling of material value means that you should only cook a lump -directly when you have no choice, mainly early in the game when you -haven't yet built a grinder. - -An ingot can also be ground back to (one pile of) dust. Thus it is always -possible to convert metal between ingot and dust forms, at the expense -of some energy consumption. Nine ingots of a metal can be crafted into -a block, which can be used for building. The block can also be crafted -back to nine ingots. Thus it is possible to freely convert metal between -ingot and block forms, which is convenient to store the metal compactly. -Every metal has dust, ingot, and block forms. - -Alloying recipes in which a metal is the base ingredient, to produce a -metal alloy, always come in two forms, using the metal either as dust -or as an ingot. If the secondary ingredient is also a metal, it must -be supplied in the same form as the base ingredient. The output alloy -is also returned in the same form. For example, brass can be produced -by alloying two copper ingots with one zinc ingot to make three brass -ingots, or by alloying two piles of copper dust with one pile of zinc -dust to make three piles of brass dust. The two ways of alloying produce -equivalent results. - -### iron and its alloys ### - -Iron forms several important alloys. In real-life history, iron was the -second metal to be used as the base component of deliberately-constructed -alloys (the first was copper), and it was the first metal whose working -required processes of any metallurgical sophistication. The game -mechanics around iron broadly imitate the historical progression of -processes around it, rather than the less-varied modern processes. - -The two-component alloying system of iron with carbon is of huge -importance, both in the game and in real life. The basic Minetest game -doesn't distinguish between these pure iron and these alloys at all, -but technic introduces a distinction based on the carbon content, and -renames some items of the basic game accordingly. - -The iron/carbon spectrum is represented in the game by three metal -substances: wrought iron, carbon steel, and cast iron. Wrought iron -has low carbon content (less than 0.25%), resists shattering, and -is easily welded, but is relatively soft and susceptible to rusting. -In real-life history it was used for rails, gates, chains, wire, pipes, -fasteners, and other purposes. Cast iron has high carbon content -(2.1% to 4%), is especially hard, and resists corrosion, but is -relatively brittle, and difficult to work. Historically it was used -to build large structures such as bridges, and for cannons, cookware, -and engine cylinders. Carbon steel has medium carbon content (0.25% -to 2.1%), and intermediate properties: moderately hard and also tough, -somewhat resistant to corrosion. In real life it is now used for most -of the purposes previously satisfied by wrought iron and many of those -of cast iron, but has historically been especially important for its -use in swords, armor, skyscrapers, large bridges, and machines. - -In real-life history, the first form of iron to be refined was -wrought iron, which is nearly pure iron, having low carbon content. -It was produced from ore by a low-temperature furnace process (the -"bloomery") in which the ore/iron remains solid and impurities (slag) -are progressively removed by hammering ("working", hence "wrought"). -This began in the middle East, around 1800 BCE. - -Historically, the next forms of iron to be refined were those of high -carbon content. This was the result of the development of a more -sophisticated kind of furnace, the blast furnace, capable of reaching -higher temperatures. The real advantage of the blast furnace is that it -melts the metal, allowing it to be cast straight into a shape supplied by -a mould, rather than having to be gradually beaten into the desired shape. -A side effect of the blast furnace is that carbon from the furnace's fuel -is unavoidably incorporated into the metal. Normally iron is processed -twice through the blast furnace: once producing "pig iron", which has -very high carbon content and lots of impurities but lower melting point, -casting it into rough ingots, then remelting the pig iron and casting it -into the final moulds. The result is called "cast iron". Pig iron was -first produced in China around 1200 BCE, and cast iron later in the 5th -century BCE. Incidentally, the Chinese did not have the bloomery process, -so this was their first iron refining process, and, unlike the rest of -the world, their first wrought iron was made from pig iron rather than -directly from ore. - -Carbon steel, with intermediate carbon content, was developed much later, -in Europe in the 17th century CE. It required a more sophisticated -process, because the blast furnace made it extremely difficult to achieve -a controlled carbon content. Tweaks of the blast furnace would sometimes -produce an intermediate carbon content by luck, but the first processes to -reliably produce steel were based on removing almost all the carbon from -pig iron and then explicitly mixing a controlled amount of carbon back in. - -In the game, the bloomery process is represented by ordinary cooking -or grinding of an iron lump. The lump represents unprocessed ore, -and is identified only as "iron", not specifically as wrought iron. -This standard refining process produces dust or an ingot which is -specifically identified as wrought iron. Thus the standard refining -process produces the (nearly) pure metal. - -Cast iron is trickier. You might expect from the real-life notes above -that cooking an iron lump (representing ore) would produce pig iron that -can then be cooked again to produce cast iron. This is kind of the case, -but not exactly, because as already noted cooking an iron lump produces -wrought iron. The game doesn't distinguish between low-temperature -and high-temperature cooking processes: the same furnace is used not -just to cast all kinds of metal but also to cook food. So there is no -distinction between cooking processes to produce distinct wrought iron -and pig iron. But repeated cooking *is* available as a game mechanic, -and is indeed used to produce cast iron: re-cooking a wrought iron ingot -produces a cast iron ingot. So pig iron isn't represented in the game as -a distinct item; instead wrought iron stands in for pig iron in addition -to its realistic uses as wrought iron. - -Carbon steel is produced by a more regular in-game process: alloying -wrought iron with coal dust (which is essentially carbon). This bears -a fair resemblance to the historical development of carbon steel. -This alloying recipe is relatively time-consuming for the amount of -material processed, when compared against other alloying recipes, and -carbon steel is heavily used, so it is wise to alloy it in advance, -when you're not waiting for it. - -There are additional recipes that permit all three of these types of iron -to be converted into each other. Alloying carbon steel again with coal -dust produces cast iron, with its higher carbon content. Cooking carbon -steel or cast iron produces wrought iron, in an abbreviated form of the -bloomery process. - -There's one more iron alloy in the game: stainless steel. It is managed -in a completely regular manner, created by alloying carbon steel with -chromium. - -### uranium enrichment ### - -When uranium is to be used to fuel a nuclear reactor, it is not -sufficient to merely isolate and refine uranium metal. It is necessary -to control its isotopic composition, because the different isotopes -behave differently in nuclear processes. - -The main isotopes of interest are U-235 and U-238. U-235 is good at -sustaining a nuclear chain reaction, because when a U-235 nucleus is -bombarded with a neutron it will usually fission (split) into fragments. -It is therefore described as "fissile". U-238, on the other hand, -is not fissile: if bombarded with a neutron it will usually capture it, -becoming U-239, which is very unstable and quickly decays into semi-stable -(and fissile) plutonium-239. - -Inconveniently, the fissile U-235 makes up only about 0.7% of natural -uranium, almost all of the other 99.3% being U-238. Natural uranium -therefore doesn't make a great nuclear fuel. (In real life there are -a small number of reactor types that can use it, but technic doesn't -have such a reactor.) Better nuclear fuel needs to contain a higher -proportion of U-235. - -Achieving a higher U-235 content isn't as simple as separating the U-235 -from the U-238 and just using the required amount of U-235. Because -U-235 and U-238 are both uranium, and therefore chemically identical, -they cannot be chemically separated, in the way that different elements -are separated from each other when refining metal. They do differ -in atomic mass, so they can be separated by centrifuging, but because -their atomic masses are very close, centrifuging doesn't separate them -very well. They cannot be separated completely, but it is possible to -produce uranium that has the isotopes mixed in different proportions. -Uranium with a significantly larger fissile U-235 fraction than natural -uranium is called "enriched", and that with a significantly lower fissile -fraction is called "depleted". - -A single pass through a centrifuge produces two output streams, one with -a fractionally higher fissile proportion than the input, and one with a -fractionally lower fissile proportion. To alter the fissile proportion -by a significant amount, these output streams must be centrifuged again, -repeatedly. The usual arrangement is a "cascade", a linear arrangement -of many centrifuges. Each centrifuge takes as input uranium with some -specific fissile proportion, and passes its two output streams to the -two adjacent centrifuges. Natural uranium is input somewhere in the -middle of the cascade, and the two ends of the cascade produce properly -enriched and depleted uranium. - -Fuel for technic's nuclear reactor consists of enriched uranium of which -3.5% is fissile. (This is a typical value for a real-life light water -reactor, a common type for power generation.) To enrich uranium in the -game, it must first be in dust form: the centrifuge will not operate -on ingots. (In real life uranium enrichment is done with the uranium -in the form of a gas.) It is best to grind uranium lumps directly to -dust, rather than cook them to ingots first, because this yields twice -as much metal dust. When uranium is in refined form (dust, ingot, or -block), the name of the inventory item indicates its fissile proportion. -Uranium of any available fissile proportion can be put through all the -usual processes for metal. - -A single centrifuge operation takes two uranium dust piles, and produces -as output one dust pile with a fissile proportion 0.1% higher and one with -a fissile proportion 0.1% lower. Uranium can be enriched up to the 3.5% -required for nuclear fuel, and depleted down to 0.0%. Thus a cascade -covering the full range of fissile fractions requires 34 cascade stages. -(In real life, enriching to 3.5% uses thousands of cascade stages. -Also, centrifuging is less effective when the input isotope ratio -is more skewed, so the steps in fissile proportion are smaller for -relatively depleted uranium. Zero fissile content is only asymptotically -approachable, and natural uranium relatively cheap, so uranium is normally -only depleted to around 0.3%. On the other hand, much higher enrichment -than 3.5% isn't much more difficult than enriching that far.) - -Although centrifuges can be used manually, it is not feasible to perform -uranium enrichment by hand. It is a practical necessity to set up -an automated cascade, using pneumatic tubes to transfer uranium dust -piles between centrifuges. Because both outputs from a centrifuge are -ejected into the same tube, sorting tubes are needed to send the outputs -in different directions along the cascade. It is possible to send items -into the centrifuges through the same tubes that take the outputs, so the -simplest version of the cascade structure has a line of 34 centrifuges -linked by a line of 34 sorting tube segments. - -Assuming that the cascade depletes uranium all the way to 0.0%, -producing one unit of 3.5%-fissile uranium requires the input of five -units of 0.7%-fissile (natural) uranium, takes 490 centrifuge operations, -and produces four units of 0.0%-fissile (fully depleted) uranium as a -byproduct. It is possible to reduce the number of required centrifuge -operations by using more natural uranium input and outputting only -partially depleted uranium, but (unlike in real life) this isn't usually -an economical approach. The 490 operations are not spread equally over -the cascade stages: the busiest stage is the one taking 0.7%-fissile -uranium, which performs 28 of the 490 operations. The least busy is the -one taking 3.4%-fissile uranium, which performs 1 of the 490 operations. - -A centrifuge cascade will consume quite a lot of energy. It is -worth putting a battery upgrade in each centrifuge. (Only one can be -accommodated, because a control logic unit upgrade is also required for -tube operation.) An MV centrifuge, the only type presently available, -draws 7 kEU/s in this state, and takes 5 s for each uranium centrifuging -operation. It thus takes 35 kEU per operation, and the cascade requires -17.15 MEU to produce each unit of enriched uranium. It takes five units -of enriched uranium to make each fuel rod, and six rods to fuel a reactor, -so the enrichment cascade requires 514.5 MEU to process a full set of -reactor fuel. This is about 0.85% of the 6.048 GEU that the reactor -will generate from that fuel. - -If there is enough power available, and enough natural uranium input, -to keep the cascade running continuously, and exactly one centrifuge -at each stage, then the overall speed of the cascade is determined by -the busiest stage, the 0.7% stage. It can perform its 28 operations -towards the enrichment of a single uranium unit in 140 s, so that is -the overall cycle time of the cascade. It thus takes 70 min to enrich -a full set of reactor fuel. While the cascade is running at this full -speed, its average power consumption is 122.5 kEU/s. The instantaneous -power consumption varies from second to second over the 140 s cycle, -and the maximum possible instantaneous power consumption (with all 34 -centrifuges active simultaneously) is 238 kEU/s. It is recommended to -have some battery boxes to smooth out these variations. - -If the power supplied to the centrifuge cascade averages less than -122.5 kEU/s, then the cascade can't run continuously. (Also, if the -power supply is intermittent, such as solar, then continuous operation -requires more battery boxes to smooth out the supply variations, even if -the average power is high enough.) Because it's automated and doesn't -require continuous player attention, having the cascade run at less -than full speed shouldn't be a major problem. The enrichment work will -consume the same energy overall regardless of how quickly it's performed, -and the speed will vary in direct proportion to the average power supply -(minus any supply lost because battery boxes filled completely). - -If there is insufficient power to run both the centrifuge cascade at -full speed and whatever other machines require power, all machines on -the same power network as the centrifuge will be forced to run at the -same fractional speed. This can be inconvenient, especially if use -of the other machines is less automated than the centrifuge cascade. -It can be avoided by putting the centrifuge cascade on a separate power -network from other machines, and limiting the proportion of the generated -power that goes to it. - -If there is sufficient power and it is desired to enrich uranium faster -than a single cascade can, the process can be speeded up more economically -than by building an entire second cascade. Because the stages of the -cascade do different proportions of the work, it is possible to add a -second and subsequent centrifuges to only the busiest stages, and have -the less busy stages still keep up with only a single centrifuge each. - -Another possible approach to uranium enrichment is to have no fixed -assignment of fissile proportions to centrifuges, dynamically putting -whatever uranium is available into whichever centrifuges are available. -Theoretically all of the centrifuges can be kept almost totally busy all -the time, making more efficient use of capital resources, and the number -of centrifuges used can be as little (down to one) or as large as desired. -The difficult part is that it is not sufficient to put each uranium dust -pile individually into whatever centrifuge is available: they must be -input in matched pairs. Any odd dust pile in a centrifuge will not be -processed and will prevent that centrifuge from accepting any other input. - -### concrete ### - -Concrete is a synthetic building material. The technic modpack implements -it in the game. - -Two forms of concrete are available as building blocks: ordinary -"concrete" and more advanced "blast-resistant concrete". Despite its -name, the latter has no special resistance to explosions or to any other -means of destruction. - -Concrete can also be used to make fences. They act just like wooden -fences, but aren't flammable. Confusingly, the item that corresponds -to a wooden "fence" is called "concrete post". Posts placed adjacently -will implicitly create fence between them. Fencing also appears between -a post and adjacent concrete block. - -industrial processes --------------------- - -### alloying ### - -In technic, alloying is a way of combining items to create other items, -distinct from standard crafting. Alloying always uses inputs of exactly -two distinct types, and produces a single output. Like cooking, which -takes a single input, it is performed using a powered machine, known -generically as an "alloy furnace". An alloy furnace always has two -input slots, and it doesn't matter which way round the two ingredients -are placed in the slots. Many alloying recipes require one or both -slots to contain a stack of more than one of the ingredient item: the -quantity required of each ingredient is part of the recipe. - -As with the furnaces used for cooking, there are multiple kinds of alloy -furnace, powered in different ways. The most-used alloy furnaces are -electrically powered. There is also an alloy furnace that is powered -by directly burning fuel, just like the basic cooking furnace. Building -almost any electrical machine, including the electrically-powered alloy -furnaces, requires a machine casing component, one ingredient of which -is brass, an alloy. It is therefore necessary to use the fuel-fired -alloy furnace in the early part of the game, on the way to building -electrical machinery. - -Alloying recipes are mainly concerned with metals. These recipes -combine a base metal with some other element, most often another metal, -to produce a new metal. This is discussed in the section on metal. -There are also a few alloying recipes in which the base ingredient is -non-metallic, such as the recipe for the silicon wafer. - -### grinding, extracting, and compressing ### - -Grinding, extracting, and compressing are three distinct, but very -similar, ways of converting one item into another. They are all quite -similar to the cooking found in the basic Minetest game. Each uses -an input consisting of a single item type, and produces a single -output. They are all performed using powered machines, respectively -known generically as a "grinder", "extractor", and "compressor". -Some compressing recipes require the input to be a stack of more than -one of the input item: the quantity required is part of the recipe. -Grinding and extracting recipes never require such a stacked input. - -There are multiple kinds of grinder, extractor, and compressor. Unlike -cooking furnaces and alloy furnaces, there are none that directly burn -fuel; they are all electrically powered. - -Grinding recipes always produce some kind of dust, loosely speaking, -as output. The most important grinding recipes are concerned with metals: -every metal lump or ingot can be ground into metal dust. Coal can also -be ground into dust, and burning the dust as fuel produces much more -energy than burning the original coal lump. There are a few other -grinding recipes that make block types from the basic Minetest game -more interconvertible: standard stone can be ground to standard sand, -desert stone to desert sand, cobblestone to gravel, and gravel to dirt. - -Extracting is a miscellaneous category, used for a small group -of processes that just don't fit nicely anywhere else. (Its name is -notably vaguer than those of the other kinds of processing.) It is used -for recipes that produce dye, mainly from flowers. (However, for those -recipes using flowers, the basic Minetest game provides parallel crafting -recipes that are easier to use and produce more dye, and those recipes -are not suppressed by technic.) Its main use is to generate rubber from -raw latex, which it does three times as efficiently as merely cooking -the latex. Extracting was also formerly used for uranium enrichment for -use as nuclear fuel, but this use has been superseded by a new enrichment -system using the centrifuge. - -Compressing recipes are mainly used to produce a few relatively advanced -artificial item types, such as the copper and carbon plates used in -advanced machine recipes. There are also a couple of compressing recipes -making natural block types more interconvertible. - -### centrifuging ### - -Centrifuging is another way of using a machine to convert items. -Centrifuging takes an input of a single item type, and produces outputs -of two distinct types. The input may be required to be a stack of -more than one of the input item: the quantity required is part of -the recipe. Centrifuging is only performed by a single machine type, -the MV (electrically-powered) centrifuge. - -Currently, centrifuging recipes don't appear in the unified\_inventory -craft guide, because unified\_inventory can't yet handle recipes with -multiple outputs. - -Generally, centrifuging separates the input item into constituent -substances, but it can only work when the input is reasonably fluid, -and in marginal cases it is quite destructive to item structure. -(In real life, centrifuges require their input to be mainly fluid, that -is either liquid or gas. Few items in the game are described as liquid -or gas, so the concept of the centrifuge is stretched a bit to apply to -finely-divided solids.) - -The main use of centrifuging is in uranium enrichment, where it -separates the isotopes of uranium dust that otherwise appears uniform. -Enrichment is a necessary process before uranium can be used as nuclear -fuel, and the radioactivity of uranium blocks is also affected by its -isotopic composition. - -A secondary use of centrifuging is to separate the components of -metal alloys. This can only be done using the dust form of the alloy. -It recovers both components of binary metal/metal alloys. It can't -recover the carbon from steel or cast iron. - -chests ------- - -The technic mod replaces the basic Minetest game's single type of -chest with a range of chests that have different sizes and features. -The chest types are identified by the materials from which they are made; -the better chests are made from more exotic materials. The chest types -form a linear sequence, each being (with one exception noted below) -strictly more powerful than the preceding one. The sequence begins with -the wooden chest from the basic game, and each later chest type is built -by upgrading a chest of the preceding type. The chest types are: - -1. wooden chest: 8×4 (32) slots -2. iron chest: 9×5 (45) slots -3. copper chest: 12×5 (60) slots -4. silver chest: 12×6 (72) slots -5. gold chest: 15×6 (90) slots -6. mithril chest: 15×6 (90) slots - -The iron and later chests have the ability to sort their contents, -when commanded by a button in their interaction forms. Item types are -sorted in the same order used in the unified\_inventory craft guide. -The copper and later chests also have an auto-sorting facility that can -be enabled from the interaction form. An auto-sorting chest automatically -sorts its contents whenever a player closes the chest. The contents will -then usually be in a sorted state when the chest is opened, but may not -be if pneumatic tubes have operated on the chest while it was closed, -or if two players have the chest open simultaneously. - -The silver and gold chests, but not the mithril chest, have a built-in -sign-like capability. They can be given a textual label, which will -be visible when hovering over the chest. The gold chest, but again not -the mithril chest, can be further labelled with a colored patch that is -visible from a moderate distance. - -The mithril chest is currently an exception to the upgrading system. -It has only as many inventory slots as the preceding (gold) type, and has -fewer of the features. It has no feature that other chests don't have: -it is strictly weaker than the gold chest. It is planned that in the -future it will acquire some unique features, but for now the only reason -to use it is aesthetic. - -The size of the largest chests is dictated by the maximum size -of interaction form that the game engine can successfully display. -If in the future the engine becomes capable of handling larger forms, -by scaling them to fit the screen, the sequence of chest sizes will -likely be revised. - -As with the chest of the basic Minetest game, each chest type comes -in both locked and unlocked flavors. All of the chests work with the -pneumatic tubes of the pipeworks mod. - -radioactivity -------------- - -The technic mod adds radioactivity to the game, as a hazard that can -harm player characters. Certain substances in the game are radioactive, -and when placed as blocks in the game world will damage nearby players. -Conversely, some substances attenuate radiation, and so can be used -for shielding. The radioactivity system is based on reality, but is -not an attempt at serious simulation: like the rest of the game, it has -many simplifications and deliberate deviations from reality in the name -of game balance. - -In real life radiological hazards can be roughly divided into three -categories based on the time scale over which they act: prompt radiation -damage (such as radiation burns) that takes effect immediately; radiation -poisoning that becomes visible in hours and lasts weeks; and cumulative -effects such as increased cancer risk that operate over decades. -The game's version of radioactivity causes only prompt damage, not -any delayed effects. Damage comes in the abstracted form of removing -the player's hit points, and is immediately visible to the player. -As with all other kinds of damage in the game, the player can restore -the hit points by eating food items. High-nutrition foods, such as the -pie baskets supplied by the bushes\_classic mod, are a useful tool in -dealing with radiological hazards. - -Only a small range of items in the game are radioactive. From the technic -mod, the only radioactive items are uranium ore, refined uranium blocks, -nuclear reactor cores (when operating), and the materials released when -a nuclear reactor melts down. Other mods can plug into the technic -system to make their own block types radioactive. Radioactive items -are harmless when held in inventories. They only cause radiation damage -when placed as blocks in the game world. - -The rate at which damage is caused by a radioactive block depends on the -distance between the source and the player. Distance matters because the -damaging radiation is emitted equally in all directions by the source, -so with distance it spreads out, so less of it will strike a target -of any specific size. The amount of radiation absorbed by a target -thus varies in proportion to the inverse square of the distance from -the source. The game imitates this aspect of real-life radioactivity, -but with some simplifications. While in real life the inverse square law -is only really valid for sources and targets that are small relative to -the distance between them, in the game it is applied even when the source -and target are large and close together. Specifically, the distance is -measured from the center of the radioactive block to the abdomen of the -player character. For extremely close encounters, such as where the -player swims in a radioactive liquid, there is an enforced lower limit -on the effective distance. - -Different types of radioactive block emit different amounts of radiation. -The least radioactive of the radioactive block types is uranium ore, -which causes 0.25 HP/s damage to a player 1 m away. A block of refined -but unenriched uranium, as an example, is nine times as radioactive, -and so will cause 2.25 HP/s damage to a player 1 m away. By the inverse -square law, the damage caused by that uranium block reduces by a factor -of four at twice the distance, that is to 0.5625 HP/s at a distance of 2 -m, or by a factor of nine at three times the distance, that is to 0.25 -HP/s at a distance of 3 m. Other radioactive block types are far more -radioactive than these: the most radioactive of all, the result of a -nuclear reactor melting down, is 1024 times as radioactive as uranium ore. - -Uranium blocks are radioactive to varying degrees depending on their -isotopic composition. An isotope being fissile, and thus good as -reactor fuel, is essentially uncorrelated with it being radioactive. -The fissile U-235 is about six times as radioactive than the non-fissile -U-238 that makes up the bulk of natural uranium, so one might expect that -enriching from 0.7% fissile to 3.5% fissile (or depleting to 0.0%) would -only change the radioactivity of uranium by a few percent. But actually -the radioactivity of enriched uranium is dominated by the non-fissile -U-234, which makes up only about 50 parts per million of natural uranium -but is about 19000 times more radioactive than U-238. The radioactivity -of natural uranium comes just about half from U-238 and half from U-234, -and the uranium gets enriched in U-234 along with the U-235. This makes -3.5%-fissile uranium about three times as radioactive as natural uranium, -and 0.0%-fissile uranium about half as radioactive as natural uranium. - -Radiation is attenuated by the shielding effect of material along the -path between the radioactive block and the player. In general, only -blocks of homogeneous material contribute to the shielding effect: for -example, a block of solid metal has a shielding effect, but a machine -does not, even though the machine's ingredients include a metal case. -The shielding effect of each block type is based on the real-life -resistance of the material to ionising radiation, but for game balance -the effectiveness of shielding is scaled down from real life, more so -for stronger shield materials than for weaker ones. Also, whereas in -real life materials have different shielding effects against different -types of radiation, the game only has one type of damaging radiation, -and so only one set of shielding values. - -Almost any solid or liquid homogeneous material has some shielding value. -At the low end of the scale, 5 meters of wooden planks nearly halves -radiation, though in that case the planks probably contribute more -to safety by forcing the player to stay 5 m further away from the -source than by actual attenuation. Dirt halves radiation in 2.4 m, -and stone in 1.7 m. When a shield must be deliberately constructed, -the preferred materials are metals, the denser the better. Iron and -steel halve radiation in 1.1 m, copper in 1.0 m, and silver in 0.95 m. -Lead would halve in 0.69 m if it were in the game, but it's not, which -poses a bit of a problem due to the drawbacks of the three materials in -the game that are better shielding than silver. Gold halves radiation -in 0.53 m (factor of 3.7 per meter), but is a bit scarce to use for -this purpose. Uranium halves radiation in 0.31 m (factor of 9.4 per -meter), but is itself radioactive. The very best shielding in the game -is nyancat material (nyancats and their rainbow blocks), which halves -radiation in 0.22 m (factor of 24 per meter), but is extremely scarce. - -If the theoretical radiation damage from a particular source is -sufficiently small, due to distance and shielding, then no damage at all -will actually occur. This means that for any particular radiation source -and shielding arrangement there is a safe distance to which a player can -approach without harm. The safe distance is where the radiation damage -would theoretically be 0.25 HP/s. This damage threshold is applied -separately for each radiation source, so to be safe in a multi-source -situation it is only necessary to be safe from each source individually. - -The best way to use uranium as shielding is in a two-layer structure, -of uranium and some non-radioactive material. The uranium layer should -be nearer to the primary radiation source and the non-radioactive layer -nearer to the player. The uranium provides a great deal of shielding -against the primary source, and the other material shields against -the uranium layer. Due to the damage threshold mechanism, a meter of -dirt is sufficient to shield fully against a layer of fully-depleted -(0.0%-fissile) uranium. Obviously this is only worthwhile when the -primary radiation source is more radioactive than a uranium block. - -When constructing permanent radiation shielding, it is necessary to -pay attention to the geometry of the structure, and particularly to any -holes that have to be made in the shielding, for example to accommodate -power cables. Any hole that is aligned with the radiation source makes a -"shine path" through which a player may be irradiated when also aligned. -Shine paths can be avoided by using bent paths for cables, passing -through unaligned holes in multiple shield layers. If the desired -shielding effect depends on multiple layers, a hole in one layer still -produces a partial shine path, along which the shielding is reduced, -so the positioning of holes in each layer must still be considered. -Tricky shine paths can also be addressed by just keeping players out of -the dangerous area. - -electrical power ----------------- - -Most machines in technic are electrically powered. To operate them it is -necessary to construct an electrical power network. The network links -together power generators and power-consuming machines, connecting them -using power cables. - -There are three tiers of electrical networking: low voltage (LV), -medium voltage (MV), and high voltage (HV). Each network must operate -at a single voltage, and most electrical items are specific to a single -voltage. Generally, the machines of higher tiers are more powerful, -but consume more energy and are more expensive to build, than machines -of lower tiers. It is normal to build networks of all three tiers, -in ascending order as one progresses through the game, but it is not -strictly necessary to do this. Building HV equipment requires some parts -that can only be manufactured using electrical machines, either LV or MV, -so it is not possible to build an HV network first, but it is possible -to skip either LV or MV on the way to HV. - -Each voltage has its own cable type, with distinctive insulation. Cable -segments connect to each other and to compatible machines automatically. -Incompatible electrical items don't connect. All non-cable electrical -items must be connected via cable: they don't connect directly to each -other. Most electrical items can connect to cables in any direction, -but there are a couple of important exceptions noted below. - -To be useful, an electrical network must connect at least one power -generator to at least one power-consuming machine. In addition to these -items, the network must have a "switching station" in order to operate: -no energy will flow without one. Unlike most electrical items, the -switching station is not voltage-specific: the same item will manage -a network of any tier. However, also unlike most electrical items, -it is picky about the direction in which it is connected to the cable: -the cable must be directly below the switching station. - -Hovering over a network's switching station will show the aggregate energy -supply and demand, which is useful for troubleshooting. Electrical energy -is measured in "EU", and power (energy flow) in EU per second (EU/s). -Energy is shifted around a network instantaneously once per second. - -In a simple network with only generators and consumers, if total -demand exceeds total supply then no energy will flow, the machines -will do nothing, and the generators' output will be lost. To handle -this situation, it is recommended to add a battery box to the network. -A battery box will store generated energy, and when enough has been -stored to run the consumers for one second it will deliver it to the -consumers, letting them run part-time. It also stores spare energy -when supply exceeds demand, to let consumers run full-time when their -demand occasionally peaks above the supply. More battery boxes can -be added to cope with larger periods of mismatched supply and demand, -such as those resulting from using solar generators (which only produce -energy in the daytime). - -When there are electrical networks of multiple tiers, it can be appealing -to generate energy on one tier and transfer it to another. The most -direct way to do this is with the "supply converter", which can be -directly wired into two networks. It is another tier-independent item, -and also particular about the direction of cable connections: it must -have the cable of one network directly above, and the cable of another -network directly below. The supply converter demands 10000 EU/s from -the network above, and when this network gives it power it supplies 9000 -EU/s to the network below. Thus it is only 90% efficient, unlike most of -the electrical system which is 100% efficient in moving energy around. -To transfer more than 10000 EU/s between networks, connect multiple -supply converters in parallel. - -powered machines ----------------- - -### powered machine tiers ### - -Each powered machine takes its power in some specific form, being -either fuel-fired (burning fuel directly) or electrically powered at -some specific voltage. There is a general progression through the -game from using fuel-fired machines to electrical machines, and to -higher electrical voltages. The most important kinds of machine come -in multiple variants that are powered in different ways, so the earlier -ones can be superseded. However, some machines are only available for -a specific power tier, so the tier can't be entirely superseded. - -### powered machine upgrades ### - -Some machines have inventory slots that are used to upgrade them in -some way. Generally, machines of MV and HV tiers have two upgrade slots, -and machines of lower tiers (fuel-fired and LV) do not. Any item can -be placed in an upgrade slot, but only specific items will have any -upgrading effect. It is possible to have multiple upgrades of the same -type, but this can't be achieved by stacking more than one upgrade item -in one slot: it is necessary to put the same kind of item in more than one -upgrade slot. The ability to upgrade machines is therefore very limited. -Two kinds of upgrade are currently possible: an energy upgrade and a -tube upgrade. - -An energy upgrade consists of a battery item, the same kind of battery -that serves as a mobile energy store. The effect of an energy upgrade -is to improve in some way the machine's use of electrical energy, most -often by making it use less energy. The upgrade effect has no relation -to energy stored in the battery: the battery's charge level is irrelevant -and will not be affected. - -A tube upgrade consists of a control logic unit item. The effect of a -tube upgrade is to make the machine able, or more able, to eject items -it has finished with into pneumatic tubes. The machines that can take -this kind of upgrade are in any case capable of accepting inputs from -pneumatic tubes. These upgrades are essential in using powered machines -as components in larger automated systems. - -### tubes with powered machines ### - -Generally, powered machines of MV and HV tiers can work with pneumatic -tubes, and those of lower tiers cannot. (As an exception, the fuel-fired -furnace from the basic Minetest game can accept inputs through tubes, -but can't output into tubes.) - -If a machine can accept inputs through tubes at all, then this -is a capability of the basic machine, not requiring any upgrade. -Most item-processing machines take only one kind of input, and in that -case they will accept that input from any direction. This doesn't match -how tubes visually connect to the machines: generally tubes will visually -connect to any face except the front, but an item passing through a tube -in front of the machine will actually be accepted into the machine. - -A minority of machines take more than one kind of input, and in that -case the input slot into which an arriving item goes is determined by the -direction from which it arrives. In this case the machine may be picky -about the direction of arriving items, associating each input type with -a single face of the machine and not accepting inputs at all through the -remaining faces. Again, the visual connection of tubes doesn't match: -generally tubes will still visually connect to any face except the front, -thus connecting to faces that neither accept inputs nor emit outputs. - -Machines do not accept items from tubes into non-input inventory slots: -the output slots or upgrade slots. Output slots are normally filled -only by the processing operation of the machine, and upgrade slots must -be filled manually. - -Powered machines generally do not eject outputs into tubes without -an upgrade. One tube upgrade will make them eject outputs at a slow -rate; a second tube upgrade will increase the rate. Whether the slower -rate is adequate depends on how it compares to the rate at which the -machine produces outputs, and on how the machine is being used as part -of a larger construct. The machine always ejects its outputs through a -particular face, usually a side. Due to a bug, the side through which -outputs are ejected is not consistent: when the machine is rotated one -way, the direction of ejection is rotated the other way. This will -probably be fixed some day, but because a straightforward fix would -break half the machines already in use, the fix may be tied to some -larger change such as free selection of the direction of ejection. - -### battery boxes ### - -The primary purpose of battery boxes is to temporarily store electrical -energy to let an electrical network cope with mismatched supply and -demand. They have a secondary purpose of charging and discharging -powered tools. They are thus a mixture of electrical infrastructure, -powered machine, and generator. - -MV and HV battery boxes have upgrade slots. Energy upgrades increase -the capacity of a battery box, each by 10% of the un-upgraded capacity. -This increase is far in excess of the capacity of the battery that forms -the upgrade. - -For charging and discharging of power tools, rather than having input and -output slots, each battery box has a charging slot and a discharging slot. -A fully charged/discharged item stays in its slot. The rates at which a -battery box can charge and discharge increase with voltage, so it can -be worth building a battery box of higher tier before one has other -infrastructure of that tier, just to get access to faster charging. - -MV and HV battery boxes work with pneumatic tubes. An item can be input -to the charging slot through the bottom of the battery box, or to the -discharging slot through the top. Items are not accepted through the -front, back, or sides. With a tube upgrade, fully charged/discharged -tools (as appropriate for their slot) will be ejected through a side. - -### processing machines ### - -The furnace, alloy furnace, grinder, extractor, compressor, and centrifuge -have much in common. Each implements some industrial process that -transforms items into other items, and they manner in which they present -these processes as powered machines is essentially identical. - -Most of the processing machines operate on inputs of only a single type -at a time, and correspondingly have only a single input slot. The alloy -furnace is an exception: it operates on inputs of two distinct types at -once, and correspondingly has two input slots. It doesn't matter which -way round the alloy furnace's inputs are placed in the two slots. - -The processing machines are mostly available in variants for multiple -tiers. The furnace and alloy furnace are each available in fuel-fired, -LV, and MV forms. The grinder, extractor, and compressor are each -available in LV and MV forms. The centrifuge is the only single-tier -processing machine, being only available in MV form. The higher-tier -machines process items faster than the lower-tier ones, but also have -higher power consumption, usually taking more energy overall to perform -the same amount of processing. The MV machines have upgrade slots, -and energy upgrades reduce their energy consumption. - -The MV machines can work with pneumatic tubes. They accept inputs via -tubes from any direction. For most of the machines, having only a single -input slot, this is perfectly simple behavior. The alloy furnace is more -complex: it will put an arriving item in either input slot, preferring to -stack it with existing items of the same type. It doesn't matter which -slot each of the alloy furnace's inputs is in, so it doesn't matter that -there's no direct control ovar that, but there is a risk that supplying -a lot of one item type through tubes will result in both slots containing -the same type of item, leaving no room for the second input. - -The MV machines can be given a tube upgrade to make them automatically -eject output items into pneumatic tubes. The items are always ejected -through a side, though which side it is depends on the machine's -orientation, due to a bug. Output items are always ejected singly. -For some machines, such as the grinder, the ejection rate with a -single tube upgrade doesn't keep up with the rate at which items can -be processed. A second tube upgrade increases the ejection rate. - -The LV and fuel-fired machines do not work with pneumatic tubes, except -that the fuel-fired furnace (actually part of the basic Minetest game) -can accept inputs from tubes. Items arriving through the bottom of -the furnace go into the fuel slot, and items arriving from all other -directions go into the input slot. - -### music player ### - -The music player is an LV powered machine that plays audio recordings. -It offers a selection of up to nine tracks. The technic modpack doesn't -include specific music tracks for this purpose; they have to be installed -separately. - -The music player gives the impression that the music is being played in -the Minetest world. The music only plays as long as the music player -is in place and is receiving electrical power, and the choice of music -is controlled by interaction with the machine. The sound also appears -to emanate specifically from the music player: the ability to hear it -depends on the player's distance from the music player. However, the -game engine doesn't currently support any other positional cues for -sound, such as attenuation, panning, or HRTF. The impression of the -sound being located in the Minetest world is also compromised by the -subjective nature of track choice: the specific music that is played to -a player depends on what media the player has installed. - -### CNC machine ### - -The CNC machine is an LV powered machine that cuts building blocks into a -variety of sub-block shapes that are not covered by the crafting recipes -of the stairs mod and its variants. Most of the target shapes are not -rectilinear, involving diagonal or curved surfaces. - -Only certain kinds of building material can be processed in the CNC -machine. - -### tool workshop ### - -The tool workshop is an MV powered machine that repairs mechanically-worn -tools, such as pickaxes and the other ordinary digging tools. It has -a single slot for a tool to be repaired, and gradually repairs the -tool while it is powered. For any single tool, equal amounts of tool -wear, resulting from equal amounts of tool use, take equal amounts of -repair effort. Also, all repairable tools currently take equal effort -to repair equal percentages of wear. The amount of tool use enabled by -equal amounts of repair therefore depends on the tool type. - -The mechanical wear that the tool workshop repairs is always indicated in -inventory displays by a colored bar overlaid on the tool image. The bar -can be seen to fill and change color as the tool workshop operates, -eventually disappearing when the repair is complete. However, not every -item that shows such a wear bar is using it to show mechanical wear. -A wear bar can also be used to indicate charging of a power tool with -stored electrical energy, or filling of a container, or potentially for -all sorts of other uses. The tool workshop won't affect items that use -wear bars to indicate anything other than mechanical wear. - -The tool workshop has upgrade slots. Energy upgrades reduce its power -consumption. - -It can work with pneumatic tubes. Tools to be repaired are accepted -via tubes from any direction. With a tube upgrade, the tool workshop -will also eject fully-repaired tools via one side, the choice of side -depending on the machine's orientation, as for processing machines. It is -safe to put into the tool workshop a tool that is already fully repaired: -assuming the presence of a tube upgrade, the tool will be quickly ejected. -Furthermore, any item of unrepairable type will also be ejected as if -fully repaired. (Due to a historical limitation of the basic Minetest -game, it is impossible for the tool workshop to distinguish between a -fully-repaired tool and any item type that never displays a wear bar.) - -### quarry ### - -The quarry is an HV powered machine that automatically digs out a -large area. The region that it digs out is a cuboid with a square -horizontal cross section, located immediately behind the quarry machine. -The quarry's action is slow and energy-intensive, but requires little -player effort. - -The size of the quarry's horizontal cross section is configurable through -the machine's interaction form. A setting referred to as "radius" -is an integer number of meters which can vary from 2 to 8 inclusive. -The horizontal cross section is a square with side length of twice the -radius plus one meter, thus varying from 5 to 17 inclusive. Vertically, -the quarry always digs from 3 m above the machine to 100 m below it, -inclusive, a total vertical height of 104 m. - -Whatever the quarry digs up is ejected through the top of the machine, -as if from a pneumatic tube. Normally a tube should be placed there -to convey the material into a sorting system, processing machines, or -at least chests. A chest may be placed directly above the machine to -capture the output without sorting, but is liable to overflow. - -If the quarry encounters something that cannot be dug, such as a liquid, -a locked chest, or a protected area, it will skip past that and attempt -to continue digging. However, anything remaining in the quarry area -after the machine has attempted to dig there will prevent the machine -from digging anything directly below it, all the way to the bottom -of the quarry. An undiggable block therefore casts a shadow of undug -blocks below it. If liquid is encountered, it is quite likely to flow -across the entire cross section of the quarry, preventing all digging. -The depth at which the quarry is currently attempting to dig is reported -in its interaction form, and can be manually reset to the top of the -quarry, which is useful to do if an undiggable obstruction has been -manually removed. - -The quarry consumes 10 kEU per block dug, which is quite a lot of energy. -With most of what is dug being mere stone, it is usually not economically -favorable to power a quarry from anything other than solar power. -In particular, one cannot expect to power a quarry by burning the coal -that it digs up. - -Given sufficient power, the quarry digs at a rate of one block per second. -This is rather tedious to wait for. Unfortunately, leaving the quarry -unattended normally means that the Minetest server won't keep the machine -running: it needs a player nearby. This can be resolved by using a world -anchor. The digging is still quite slow, and independently of whether a -world anchor is used the digging can be speeded up by placing multiple -quarry machines with overlapping digging areas. Four can be placed to -dig identical areas, one on each side of the square cross section. - -### forcefield emitter ### - -The forcefield emitter is an HV powered machine that generates a -forcefield remeniscent of those seen in many science-fiction stories. - -The emitter can be configured to generate a forcefield of either -spherical or cubical shape, in either case centered on the emitter. -The size of the forcefield is configured using a radius parameter that -is an integer number of meters which can vary from 5 to 20 inclusive. -For a spherical forcefield this is simply the radius of the forcefield; -for a cubical forcefield it is the distance from the emitter to the -center of each square face. - -The power drawn by the emitter is proportional to the surface area of -the forcefield being generated. A spherical forcefield is therefore the -cheapest way to enclose a specified volume of space with a forcefield, -if the shape of the space doesn't matter. A cubical forcefield is less -efficient at enclosing volume, but is cheaper than the larger spherical -forcefield that would be required if it is necessary to enclose a -cubical space. - -The emitter is normally controlled merely through its interaction form, -which has an enable/disable toggle. However, it can also (via the form) -be placed in a mesecon-controlled mode. If mesecon control is enabled, -the emitter must be receiving a mesecon signal in addition to being -manually enabled, in order for it to generate the forcefield. - -The forcefield itself behaves largely as if solid, despite being -immaterial: it cannot be traversed, and prevents access to blocks behind -it. It is transparent, but not totally invisible. It cannot be dug. -Some effects can pass through it, however, such as the beam of a mining -laser, and explosions. In fact, explosions as currently implemented by -the tnt mod actually temporarily destroy the forcefield itself; the tnt -mod assumes too much about the regularity of node types. - -The forcefield occupies space that would otherwise have been air, but does -not replace or otherwise interfere with materials that are solid, liquid, -or otherwise not just air. If such an object blocking the forcefield is -removed, the forcefield will quickly extend into the now-available space, -but it does not do so instantly: there is a brief moment when the space -is air and can be traversed. - -It is possible to have a doorway in a forcefield, by placing in advance, -in space that the forcefield would otherwise occupy, some non-air blocks -that can be walked through. For example, a door suffices, and can be -opened and closed while the forcefield is in place. - -power generators ----------------- - -### fuel-fired generators ### - -The fiel-fired generators are electrical power generators that generate -power by the combustion of fuel. Versions of them are available for -all three voltages (LV, MV, and HV). These are all capable of burning -any type of combustible fuel, such as coal. They are relatively easy -to build, and so tend to be the first kind of generator used to power -electrical machines. In this role they form an intermediate step between -the directly fuel-fired machines and a more mature electrical network -powered by means other than fuel combustion. They are also, by virtue of -simplicity and controllability, a useful fallback or peak load generator -for electrical networks that normally use more sophisticated generators. - -The MV and HV fuel-fired generators can accept fuel via pneumatic tube, -from any direction. - -Keeping a fuel-fired generator fully fuelled is usually wasteful, because -it will burn fuel as long as it has any, even if there is no demand for -the electrical power that it generates. This is unlike the directly -fuel-fired machines, which only burn fuel when they have work to do. -To satisfy intermittent demand without waste, a fuel-fired generator must -only be given fuel when there is either demand for the energy or at least -sufficient battery capacity on the network to soak up the excess energy. - -The higher-tier fuel-fired generators get much more energy out of a -fuel item than the lower-tier ones. The difference is much more than -is needed to overcome the inefficiency of supply converters, so it is -worth operating fuel-fired generators at a higher tier than the machines -being powered. - -### solar generators ### - -The solar generators are electrical power generators that generate power -from sunlight. Versions of them are available for all three voltages -(LV, MV, and HV). There are four types in total, two LV and one each -of MV and HV, forming a sequence of four tiers. The higher-tier ones -are each built mainly from three solar generators of the next tier down, -and their outputs scale in rough accordance, tripling at each tier. - -To operate, an arrayed solar generator must be at elevation +1 or above -and have a transparent block (typically air) immediately above it. -It will generate power only when the block above is well lit during -daylight hours. It will generate more power at higher elevation, -reaching maximum output at elevation +36 or higher when sunlit. The small -solar generator has similar rules with slightly different thresholds. -These rules are an attempt to ensure that the generator will only operate -from sunlight, but it is actually possible to fool them to some extent -with light sources such as meselamps. - -### hydro generator ### - -The hydro generator is an LV power generator that generates a small amount -of power from the natural motion of water. To operate, the generator must -be horizontally adjacent to water. It doesn't matter whether the water -consists of source blocks or flowing blocks. Having water adjacent on -more than one side, up to the full four, increases the generator's output. -The water itself is unaffected by the generator. - -### geothermal generator ### - -The geothermal generator is an LV power generator that generates a small -amount of power from the temperature difference between lava and water. -To operate, the generator must be horizontally adjacent to both lava -and water. It doesn't matter whether the liquids consist of source -blocks or flowing blocks. - -Beware that if lava and water blocks are adjacent to each other then the -lava will be solidified into stone or obsidian. If the lava adjacent to -the generator is thus destroyed, the generator will stop producing power. -Currently, in the default Minetest game, lava is destroyed even if -it is only diagonally adjacent to water. Under these circumstances, -the only way to operate the geothermal generator is with it adjacent -to one lava block and one water block, which are on opposite sides of -the generator. If diagonal adjacency doesn't destroy lava, such as with -the gloopblocks mod, then it is possible to have more than one lava or -water block adjacent to the geothermal generator. This increases the -generator's output, with the maximum output achieved with two adjacent -blocks of each liquid. - -### wind generator ### - -The wind generator is an MV power generator that generates a moderate -amount of energy from wind. To operate, the generator must be placed -atop a column of at least 20 wind mill frame blocks, and must be at -an elevation of +30 or higher. It generates more at higher elevation, -reaching maximum output at elevation +50 or higher. Its surroundings -don't otherwise matter; it doesn't actually need to be in open air. - -### nuclear generator ### - -The nuclear generator (nuclear reactor) is an HV power generator that -generates a large amount of energy from the controlled fission of -uranium-235. It must be fuelled, with uranium fuel rods, but consumes -the fuel quite slowly in relation to the rate at which it is likely to -be mined. The operation of a nuclear reactor poses radiological hazards -to which some thought must be given. Economically, the use of nuclear -power requires a high capital investment, and a secure infrastructure, -but rewards the investment well. - -Nuclear fuel is made from uranium. Natural uranium doesn't have a -sufficiently high proportion of U-235, so it must first be enriched -via centrifuge. Producing one unit of 3.5%-fissile uranium requires -the input of five units of 0.7%-fissile (natural) uranium, and produces -four units of 0.0%-fissile (fully depleted) uranium as a byproduct. -It takes five ingots of 3.5%-fissile uranium to make each fuel rod, and -six rods to fuel a reactor. It thus takes the input of the equivalent -of 150 ingots of natural uranium, which can be obtained from the mining -of 75 blocks of uranium ore, to make a full set of reactor fuel. - -The nuclear reactor is a large multi-block structure. Only one block in -the structure, the reactor core, is of a type that is truly specific to -the reactor; the rest of the structure consists of blocks that have mainly -non-nuclear uses. The reactor core is where all the generator-specific -action happens: it is where the fuel rods are inserted, and where the -power cable must connect to draw off the generated power. - -The reactor structure consists of concentric layers, each a cubical -shell, around the core. Immediately around the core is a layer of water, -representing the reactor coolant; water blocks may be either source blocks -or flowing blocks. Around that is a layer of stainless steel blocks, -representing the reactor pressure vessel, and around that a layer of -blast-resistant concrete blocks, representing a containment structure. -It is customary, though no longer mandatory, to surround this with a -layer of ordinary concrete blocks. The mandatory reactor structure -makes a 7×7×7 cube, and the full customary structure a -9×9×9 cube. - -The layers surrounding the core don't have to be absolutely complete. -Indeed, if they were complete, it would be impossible to cable the core to -a power network. The cable makes it necessary to have at least one block -missing from each surrounding layer. The water layer is only permitted -to have one water block missing of the 26 possible. The steel layer may -have up to two blocks missing of the 98 possible, and the blast-resistant -concrete layer may have up to two blocks missing of the 218 possible. -Thus it is possible to have not only a cable duct, but also a separate -inspection hole through the solid layers. The separate inspection hole -is of limited use: the cable duct can serve double duty. - -Once running, the reactor core is significantly radioactive. The layers -of reactor structure provide quite a lot of shielding, but not enough -to make the reactor safe to be around, in two respects. Firstly, the -shortest possible path from the core to a player outside the reactor -is sufficiently short, and has sufficiently little shielding material, -that it will damage the player. This only affects a player who is -extremely close to the reactor, and close to a face rather than a vertex. -The customary additional layer of ordinary concrete around the reactor -adds sufficient distance and shielding to negate this risk, but it can -also be addressed by just keeping extra distance (a little over two -meters of air). - -The second radiological hazard of a running reactor arises from shine -paths; that is, specific paths from the core that lack sufficient -shielding. The necessary cable duct, if straight, forms a perfect -shine path, because the cable itself has no radiation shielding effect. -Any secondary inspection hole also makes a shine path, along which the -only shielding material is the water of the reactor coolant. The shine -path aspect of the cable duct can be ameliorated by adding a kink in the -cable, but this still yields paths with reduced shielding. Ultimately, -shine paths must be managed either with specific shielding outside the -mandatory structure, or with additional no-go areas. - -The radioactivity of an operating reactor core makes starting up a reactor -hazardous, and can come as a surprise because the non-operating core -isn't radioactive at all. The radioactive damage is survivable, but it is -normally preferable to avoid it by some care around the startup sequence. -To start up, the reactor must have a full set of fuel inserted, have all -the mandatory structure around it, and be cabled to a switching station. -Only the fuel insertion requires direct access to the core, so irradiation -of the player can be avoided by making one of the other two criteria be -the last one satisfied. Completing the cabling to a switching station -is the easiest to do from a safe distance. - -Once running, the reactor will generate 100 kEU/s for a week (168 hours, -604800 seconds), a total of 6.048 GEU from one set of fuel. After the -week is up, it will stop generating and no longer be radioactive. It can -then be refuelled to run for another week. It is not really intended -to be possible to pause a running reactor, but actually disconnecting -it from a switching station will have the effect of pausing the week. -This will probably change in the future. A paused reactor is still -radioactive, just not generating electrical power. - -A running reactor can't be safely dismantled, and not only because -dismantling the reactor implies removing the shielding that makes -it safe to be close to the core. The mandatory parts of the reactor -structure are not just mandatory in order to start the reactor; they're -mandatory in order to keep it intact. If the structure around the core -gets damaged, and remains damaged, the core will eventually melt down. -How long there is before meltdown depends on the extent of the damage; -if only one mandatory block is missing, meltdown will follow in 100 -seconds. While the structure of a running reactor is in a damaged state, -heading towards meltdown, a siren built into the reactor core will sound. -If the structure is rectified, the siren will signal all-clear. If the -siren stops sounding without signalling all-clear, then it was stopped -by meltdown. - -If meltdown is imminent because of damaged reactor structure, digging the -reactor core is not a way to avert it. Digging the core of a running -reactor causes instant meltdown. The only way to dismantle a reactor -without causing meltdown is to start by waiting for it to finish the -week-long burning of its current set of fuel. Once a reactor is no longer -operating, it can be dismantled by ordinary means, with no special risks. - -Meltdown, if it occurs, destroys the reactor and poses a major -environmental hazard. The reactor core melts, becoming a hot, highly -radioactive liquid known as "corium". A single meltdown yields a single -corium source block, where the core used to be. Corium flows, and the -flowing corium is very destructive to whatever it comes into contact with. -Flowing corium also randomly solidifies into a radioactive solid called -"Chernobylite". The random solidification and random destruction of -solid blocks means that the flow of corium is constantly changing. -This combined with the severe radioactivity makes corium much more -challenging to deal with than lava. If a meltdown is left to its own -devices, it gets worse over time, as the corium works its way through -the reactor structure and starts to flow over a variety of paths. -It is best to tackle a meltdown quickly; the priority is to extinguish -the corium source block, normally by dropping gravel into it. Only the -most motivated should attempt to pick up the corium in a bucket. - -administrative world anchor ---------------------------- - -A world anchor is an object in the Minetest world that causes the server -to keep surrounding parts of the world running even when no players -are nearby. It is mainly used to allow machines to run unattended: -normally machines are suspended when not near a player. The technic -mod supplies a form of world anchor, as a placable block, but it is not -straightforwardly available to players. There is no recipe for it, so it -is only available if explicitly spawned into existence by someone with -administrative privileges. In a single-player world, the single player -normally has administrative privileges, and can obtain a world anchor -by entering the chat command "/give singleplayer technic:admin\_anchor". - -The world anchor tries to force a cubical area, centered upon the anchor, -to stay loaded. The distance from the anchor to the most distant map -nodes that it will keep loaded is referred to as the "radius", and can be -set in the world anchor's interaction form. The radius can be set as low -as 0, meaning that the anchor only tries to keep itself loaded, or as high -as 255, meaning that it will operate on a 511×511×511 cube. -Larger radii are forbidden, to avoid typos causing the server excessive -work; to keep a larger area loaded, use multiple anchors. Also use -multiple anchors if the area to be kept loaded is not well approximated -by a cube. - -The world is always kept loaded in units of 16×16×16 cubes, -confusingly known as "map blocks". The anchor's configured radius takes -no account of map block boundaries, but the anchor's effect is actually to -keep loaded each map block that contains any part of the configured cube. -The anchor's interaction form includes a status note showing how many map -blocks this is, and how many of those it is successfully keeping loaded. -When the anchor is disabled, as it is upon placement, it will always -show that it is keeping no map blocks loaded; this does not indicate -any kind of failure. - -The world anchor can optionally be locked. When it is locked, only -the anchor's owner, the player who placed it, can reconfigure it or -remove it. Only the owner can lock it. Locking an anchor is useful -if the use of anchors is being tightly controlled by administrators: -an administrator can set up a locked anchor and be sure that it will -not be set by ordinary players to an unapproved configuration. - -The server limits the ability of world anchors to keep parts of the world -loaded, to avoid overloading the server. The total number of map blocks -that can be kept loaded in this way is set by the server configuration -item "max\_forceloaded\_blocks" (in minetest.conf), which defaults to -only 16. For comparison, each player normally keeps 125 map blocks loaded -(a radius of 32). If an enabled world anchor shows that it is failing to -keep all the map blocks loaded that it would like to, this can be fixed -by increasing max\_forceloaded\_blocks by the amount of the shortfall. - -The tight limit on force-loading is the reason why the world anchor is -not directly available to players. With the limit so low both by default -and in common practice, the only feasible way to determine where world -anchors should be used is for administrators to decide it directly. - -subjects missing from this manual ---------------------------------- - -This manual needs to be extended with sections on: - -* powered tools - * tool charging - * battery and energy crystals - * chainsaw - * flashlight - * mining lasers - * mining drills - * prospector - * sonic screwdriver -* liquid cans -* wrench -* frames -* templates diff --git a/technic/models/technic_cylinder.obj b/technic/models/technic_cylinder.obj new file mode 100644 index 0000000..2622347 --- /dev/null +++ b/technic/models/technic_cylinder.obj @@ -0,0 +1,238 @@ +# Blender v2.73 (sub 0) OBJ File: 'slope_test_cylinder_onetexture.blend' +# www.blender.org +o Cylinder_Cylinder.001 +v 0.000000 -0.500000 -0.500000 +v 0.000000 0.500000 -0.500000 +v 0.097545 -0.500000 -0.490393 +v 0.097545 0.500000 -0.490393 +v 0.191342 -0.500000 -0.461940 +v 0.191342 0.500000 -0.461940 +v 0.277785 -0.500000 -0.415735 +v 0.277785 0.500000 -0.415735 +v 0.353553 -0.500000 -0.353554 +v 0.353553 0.500000 -0.353554 +v 0.415735 -0.500000 -0.277785 +v 0.415735 0.500000 -0.277785 +v 0.461940 -0.500000 -0.191342 +v 0.461940 0.500000 -0.191342 +v 0.490393 -0.500000 -0.097545 +v 0.490393 0.500000 -0.097545 +v 0.500000 -0.500000 -0.000000 +v 0.500000 0.500000 -0.000000 +v 0.490393 -0.500000 0.097545 +v 0.490393 0.500000 0.097545 +v 0.461940 -0.500000 0.191341 +v 0.461940 0.500000 0.191341 +v 0.415735 -0.500000 0.277785 +v 0.415735 0.500000 0.277785 +v 0.353553 -0.500000 0.353553 +v 0.353553 0.500000 0.353553 +v 0.277785 -0.500000 0.415735 +v 0.277785 0.500000 0.415735 +v 0.191342 -0.500000 0.461940 +v 0.191342 0.500000 0.461940 +v 0.097545 -0.500000 0.490392 +v 0.097545 0.500000 0.490392 +v -0.000000 -0.500000 0.500000 +v -0.000000 0.500000 0.500000 +v -0.097545 -0.500000 0.490392 +v -0.097545 0.500000 0.490392 +v -0.191342 -0.500000 0.461939 +v -0.191342 0.500000 0.461939 +v -0.277785 -0.500000 0.415734 +v -0.277785 0.500000 0.415734 +v -0.353554 -0.500000 0.353553 +v -0.353554 0.500000 0.353553 +v -0.415735 -0.500000 0.277785 +v -0.415735 0.500000 0.277785 +v -0.461940 -0.500000 0.191341 +v -0.461940 0.500000 0.191341 +v -0.490393 -0.500000 0.097545 +v -0.490393 0.500000 0.097545 +v -0.500000 -0.500000 -0.000001 +v -0.500000 0.500000 -0.000001 +v -0.490393 -0.500000 -0.097546 +v -0.490393 0.500000 -0.097546 +v -0.461940 -0.500000 -0.191342 +v -0.461940 0.500000 -0.191342 +v -0.415734 -0.500000 -0.277786 +v -0.415734 0.500000 -0.277786 +v -0.353553 -0.500000 -0.353554 +v -0.353553 0.500000 -0.353554 +v -0.277785 -0.500000 -0.415735 +v -0.277785 0.500000 -0.415735 +v -0.191341 -0.500000 -0.461940 +v -0.191341 0.500000 -0.461940 +v -0.097544 -0.500000 -0.490393 +v -0.097544 0.500000 -0.490393 +vt 0.499996 0.999997 +vt 0.499995 0.000005 +vt 0.562495 0.000004 +vt 0.562496 0.999997 +vt 0.624995 0.000003 +vt 0.624997 0.999997 +vt 0.687496 0.000002 +vt 0.687497 0.999998 +vt 0.749997 0.000001 +vt 0.749997 0.999998 +vt 0.812497 0.000001 +vt 0.812497 0.999998 +vt 0.874997 -0.000000 +vt 0.874997 0.999998 +vt 0.937498 -0.000000 +vt 0.937498 0.999998 +vt 0.999998 -0.000000 +vt 0.999998 0.999998 +vt 0.000005 0.999997 +vt 0.000001 0.000024 +vt 0.062500 0.000023 +vt 0.062505 0.999996 +vt 0.124999 0.000021 +vt 0.125004 0.999996 +vt 0.187498 0.000020 +vt 0.187503 0.999995 +vt 0.249997 0.000018 +vt 0.250003 0.999994 +vt 0.312497 0.000017 +vt 0.312502 0.999994 +vt 0.374997 0.000015 +vt 0.375002 0.999993 +vt 0.437496 0.000014 +vt 0.437501 0.999993 +vt 0.402487 0.009601 +vt 0.597576 0.009614 +vt 0.691371 0.038072 +vt 0.777811 0.084282 +vt 0.853576 0.146469 +vt 0.915753 0.222242 +vt 0.961953 0.308689 +vt 0.990399 0.402487 +vt 1.000000 0.500033 +vt 0.990386 0.597577 +vt 0.961928 0.691370 +vt 0.915717 0.777811 +vt 0.853531 0.853575 +vt 0.777758 0.915753 +vt 0.691312 0.961952 +vt 0.597514 0.990398 +vt 0.402424 0.990386 +vt 0.308630 0.961928 +vt 0.222188 0.915717 +vt 0.146424 0.853531 +vt 0.084248 0.777759 +vt 0.038049 0.691313 +vt 0.009602 0.597515 +vt 0.000000 0.499970 +vt 0.009614 0.402425 +vt 0.038073 0.308630 +vt 0.084283 0.222189 +vt 0.146470 0.146424 +vt 0.222243 0.084248 +vt 0.308689 0.038048 +vt 0.499927 0.999999 +vt 0.084226 0.777725 +vt 0.000000 0.499927 +vt 0.222277 0.084224 +vt 0.500074 0.000000 +vt 0.915777 0.222279 +vt 1.000000 0.500077 +vt 0.777724 0.915775 +vn 0.000000 -0.685700 -0.727900 +vn 0.000000 0.685700 -0.727900 +vn 0.142000 0.685700 -0.713900 +vn 0.142000 -0.685700 -0.713900 +vn 0.278500 0.685700 -0.672500 +vn 0.278500 -0.685700 -0.672500 +vn 0.404400 0.685700 -0.605200 +vn 0.404400 -0.685700 -0.605200 +vn 0.514700 0.685700 -0.514700 +vn 0.514700 -0.685700 -0.514700 +vn 0.605200 0.685700 -0.404400 +vn 0.605200 -0.685700 -0.404400 +vn 0.672500 0.685700 -0.278500 +vn 0.672500 -0.685700 -0.278500 +vn 0.713900 0.685700 -0.142000 +vn 0.713900 -0.685700 -0.142000 +vn 0.727900 0.685700 0.000000 +vn 0.727900 -0.685700 0.000000 +vn 0.713900 0.685700 0.142000 +vn 0.713900 -0.685700 0.142000 +vn 0.672500 0.685700 0.278500 +vn 0.672500 -0.685700 0.278500 +vn 0.605200 0.685700 0.404400 +vn 0.605200 -0.685700 0.404400 +vn 0.514700 0.685700 0.514700 +vn 0.514700 -0.685700 0.514700 +vn 0.404400 0.685700 0.605200 +vn 0.404400 -0.685700 0.605200 +vn 0.278500 0.685700 0.672500 +vn 0.278500 -0.685700 0.672500 +vn 0.142000 0.685700 0.713900 +vn 0.142000 -0.685700 0.713900 +vn 0.000000 0.685700 0.727900 +vn 0.000000 -0.685700 0.727900 +vn -0.142000 0.685700 0.713900 +vn -0.142000 -0.685700 0.713900 +vn -0.278500 0.685700 0.672500 +vn -0.278500 -0.685700 0.672500 +vn -0.404400 0.685700 0.605200 +vn -0.404400 -0.685700 0.605200 +vn -0.514700 0.685700 0.514700 +vn -0.514700 -0.685700 0.514700 +vn -0.605200 0.685700 0.404400 +vn -0.605200 -0.685700 0.404400 +vn -0.672500 0.685700 0.278500 +vn -0.672500 -0.685700 0.278500 +vn -0.713900 0.685700 0.142000 +vn -0.713900 -0.685700 0.142000 +vn -0.727900 0.685700 0.000000 +vn -0.727900 -0.685700 0.000000 +vn -0.713900 0.685700 -0.142000 +vn -0.713900 -0.685700 -0.142000 +vn -0.672500 0.685700 -0.278500 +vn -0.672500 -0.685700 -0.278500 +vn -0.605200 0.685700 -0.404400 +vn -0.605200 -0.685700 -0.404400 +vn -0.514700 0.685700 -0.514700 +vn -0.514700 -0.685700 -0.514700 +vn -0.404400 0.685700 -0.605200 +vn -0.404400 -0.685700 -0.605200 +vn -0.278500 0.685700 -0.672500 +vn -0.278500 -0.685700 -0.672500 +vn -0.142000 0.685700 -0.713900 +vn -0.142000 -0.685700 -0.713900 +s 1 +f 1/1/1 2/2/2 4/3/3 3/4/4 +f 3/4/4 4/3/3 6/5/5 5/6/6 +f 5/6/6 6/5/5 8/7/7 7/8/8 +f 7/8/8 8/7/7 10/9/9 9/10/10 +f 9/10/10 10/9/9 12/11/11 11/12/12 +f 11/12/12 12/11/11 14/13/13 13/14/14 +f 13/14/14 14/13/13 16/15/15 15/16/16 +f 15/16/16 16/15/15 18/17/17 17/18/18 +f 17/19/18 18/20/17 20/21/19 19/22/20 +f 19/22/20 20/21/19 22/23/21 21/24/22 +f 21/24/22 22/23/21 24/25/23 23/26/24 +f 23/26/24 24/25/23 26/27/25 25/28/26 +f 25/28/26 26/27/25 28/29/27 27/30/28 +f 27/30/28 28/29/27 30/31/29 29/32/30 +f 29/32/30 30/31/29 32/33/31 31/34/32 +f 31/34/32 32/33/31 34/2/33 33/1/34 +f 33/1/34 34/2/33 36/3/35 35/4/36 +f 35/4/36 36/3/35 38/5/37 37/6/38 +f 37/6/38 38/5/37 40/7/39 39/8/40 +f 39/8/40 40/7/39 42/9/41 41/10/42 +f 41/10/42 42/9/41 44/11/43 43/12/44 +f 43/12/44 44/11/43 46/13/45 45/14/46 +f 45/14/46 46/13/45 48/15/47 47/16/48 +f 47/16/48 48/15/47 50/17/49 49/18/50 +f 49/19/50 50/20/49 52/21/51 51/22/52 +f 51/22/52 52/21/51 54/23/53 53/24/54 +f 53/24/54 54/23/53 56/25/55 55/26/56 +f 55/26/56 56/25/55 58/27/57 57/28/58 +f 57/28/58 58/27/57 60/29/59 59/30/60 +f 59/30/60 60/29/59 62/31/61 61/32/62 +f 4/35/3 2/2/2 64/36/63 62/37/61 60/38/59 58/39/57 56/40/55 54/41/53 52/42/51 50/43/49 48/44/47 46/45/45 44/46/43 42/47/41 40/48/39 38/49/37 36/50/35 34/1/33 32/51/31 30/52/29 28/53/27 26/54/25 24/55/23 22/56/21 20/57/19 18/58/17 16/59/15 14/60/13 12/61/11 10/62/9 8/63/7 6/64/5 +f 63/34/64 64/33/63 2/2/2 1/1/1 +f 61/32/62 62/31/61 64/33/63 63/34/64 +f 1/65/1 3/51/4 5/52/6 7/53/8 9/54/10 11/66/12 13/56/14 15/57/16 17/67/18 19/59/20 21/60/22 23/61/24 25/62/26 27/68/28 29/64/30 31/35/32 33/69/34 35/36/36 37/37/38 39/38/40 41/39/42 43/70/44 45/41/46 47/42/48 49/71/50 51/44/52 53/45/54 55/46/56 57/47/58 59/72/60 61/49/62 63/50/64 diff --git a/technic/models/technic_cylinder_horizontal.obj b/technic/models/technic_cylinder_horizontal.obj new file mode 100644 index 0000000..d00b1d6 --- /dev/null +++ b/technic/models/technic_cylinder_horizontal.obj @@ -0,0 +1,238 @@ +# Blender v2.73 (sub 0) OBJ File: 'technic-cylinder-horizontal.blend' +# www.blender.org +o Cylinder_Cylinder.001 +v 0.500000 0.000000 -0.500000 +v -0.500000 0.000000 -0.500000 +v 0.500000 0.097545 -0.490393 +v -0.500000 0.097545 -0.490393 +v 0.500000 0.191342 -0.461940 +v -0.500000 0.191342 -0.461940 +v 0.500000 0.277785 -0.415735 +v -0.500000 0.277785 -0.415735 +v 0.500000 0.353553 -0.353553 +v -0.500000 0.353553 -0.353554 +v 0.500000 0.415735 -0.277785 +v -0.500000 0.415735 -0.277785 +v 0.500000 0.461940 -0.191342 +v -0.500000 0.461940 -0.191342 +v 0.500000 0.490393 -0.097545 +v -0.500000 0.490393 -0.097545 +v 0.500000 0.500000 -0.000000 +v -0.500000 0.500000 -0.000000 +v 0.500000 0.490393 0.097545 +v -0.500000 0.490393 0.097545 +v 0.500000 0.461940 0.191342 +v -0.500000 0.461940 0.191341 +v 0.500000 0.415735 0.277785 +v -0.500000 0.415735 0.277785 +v 0.500000 0.353553 0.353553 +v -0.500000 0.353553 0.353553 +v 0.500000 0.277785 0.415735 +v -0.500000 0.277785 0.415735 +v 0.500000 0.191342 0.461940 +v -0.500000 0.191342 0.461940 +v 0.500000 0.097545 0.490393 +v -0.500000 0.097545 0.490392 +v 0.500000 -0.000000 0.500000 +v -0.500000 -0.000000 0.500000 +v 0.500000 -0.097546 0.490392 +v -0.500000 -0.097545 0.490392 +v 0.500000 -0.191342 0.461940 +v -0.500000 -0.191342 0.461939 +v 0.500000 -0.277785 0.415734 +v -0.500000 -0.277785 0.415734 +v 0.500000 -0.353554 0.353553 +v -0.500000 -0.353554 0.353553 +v 0.500000 -0.415735 0.277785 +v -0.500000 -0.415735 0.277785 +v 0.500000 -0.461940 0.191341 +v -0.500000 -0.461940 0.191341 +v 0.500000 -0.490393 0.097545 +v -0.500000 -0.490393 0.097544 +v 0.500000 -0.500000 -0.000001 +v -0.500000 -0.500000 -0.000001 +v 0.500000 -0.490393 -0.097546 +v -0.500000 -0.490393 -0.097546 +v 0.500000 -0.461940 -0.191342 +v -0.500000 -0.461940 -0.191343 +v 0.500000 -0.415734 -0.277786 +v -0.500000 -0.415734 -0.277786 +v 0.500000 -0.353553 -0.353554 +v -0.500000 -0.353553 -0.353554 +v 0.500000 -0.277785 -0.415735 +v -0.500000 -0.277784 -0.415735 +v 0.500000 -0.191341 -0.461940 +v -0.500000 -0.191341 -0.461940 +v 0.500000 -0.097544 -0.490393 +v -0.500000 -0.097544 -0.490393 +vt 0.000003 0.499996 +vt 0.999995 0.499995 +vt 0.999996 0.562495 +vt 0.000002 0.562496 +vt 0.999997 0.624995 +vt 0.000003 0.624996 +vt 0.999998 0.687496 +vt 0.000002 0.687496 +vt 0.999999 0.749997 +vt 0.000002 0.749996 +vt 0.999999 0.812497 +vt 0.000002 0.812497 +vt 1.000000 0.874997 +vt 0.000001 0.874997 +vt 1.000000 0.937498 +vt 0.000001 0.937497 +vt 1.000000 0.999998 +vt 0.000001 0.999998 +vt 0.000003 0.000005 +vt 0.999976 0.000001 +vt 0.999977 0.062500 +vt 0.000003 0.062505 +vt 0.999978 0.124999 +vt 0.000004 0.125004 +vt 0.999980 0.187498 +vt 0.000005 0.187503 +vt 0.999982 0.249997 +vt 0.000005 0.250003 +vt 0.999983 0.312497 +vt 0.000006 0.312502 +vt 0.999985 0.374997 +vt 0.000007 0.375001 +vt 0.999986 0.437496 +vt 0.000007 0.437501 +vt 0.009601 0.597512 +vt 0.009614 0.402424 +vt 0.038072 0.308628 +vt 0.084283 0.222189 +vt 0.146469 0.146424 +vt 0.222242 0.084247 +vt 0.308689 0.038047 +vt 0.402487 0.009601 +vt 0.500033 -0.000000 +vt 0.597577 0.009613 +vt 0.691371 0.038072 +vt 0.777811 0.084283 +vt 0.853575 0.146469 +vt 0.915753 0.222242 +vt 0.961952 0.308688 +vt 0.990398 0.402486 +vt 0.990386 0.597576 +vt 0.961928 0.691370 +vt 0.915717 0.777812 +vt 0.853531 0.853576 +vt 0.777759 0.915752 +vt 0.691313 0.961951 +vt 0.597515 0.990398 +vt 0.499970 1.000000 +vt 0.402425 0.990386 +vt 0.308630 0.961927 +vt 0.222189 0.915717 +vt 0.146424 0.853530 +vt 0.084248 0.777757 +vt 0.038048 0.691311 +vt 0.999999 0.500073 +vt 0.777724 0.915774 +vt 0.499927 0.999999 +vt 0.084224 0.777723 +vt 0.000000 0.499925 +vt 0.222279 0.084223 +vt 0.500078 -0.000000 +vt 0.915775 0.222276 +vn 0.685700 0.000000 -0.727900 +vn -0.685700 0.000000 -0.727900 +vn -0.685700 0.142000 -0.713900 +vn 0.685700 0.142000 -0.713900 +vn -0.685700 0.278500 -0.672500 +vn 0.685700 0.278500 -0.672500 +vn -0.685700 0.404400 -0.605200 +vn 0.685700 0.404400 -0.605200 +vn -0.685700 0.514700 -0.514700 +vn 0.685700 0.514700 -0.514700 +vn -0.685700 0.605200 -0.404400 +vn 0.685700 0.605200 -0.404400 +vn -0.685700 0.672500 -0.278500 +vn 0.685700 0.672500 -0.278500 +vn -0.685700 0.713900 -0.142000 +vn 0.685700 0.713900 -0.142000 +vn -0.685700 0.727900 0.000000 +vn 0.685700 0.727900 0.000000 +vn -0.685700 0.713900 0.142000 +vn 0.685700 0.713900 0.142000 +vn -0.685700 0.672500 0.278500 +vn 0.685700 0.672500 0.278500 +vn -0.685700 0.605200 0.404400 +vn 0.685700 0.605200 0.404400 +vn -0.685700 0.514700 0.514700 +vn 0.685700 0.514700 0.514700 +vn -0.685700 0.404400 0.605200 +vn 0.685700 0.404400 0.605200 +vn -0.685700 0.278500 0.672500 +vn 0.685700 0.278500 0.672500 +vn -0.685700 0.142000 0.713900 +vn 0.685700 0.142000 0.713900 +vn -0.685700 0.000000 0.727900 +vn 0.685700 0.000000 0.727900 +vn -0.685700 -0.142000 0.713900 +vn 0.685700 -0.142000 0.713900 +vn -0.685700 -0.278500 0.672500 +vn 0.685700 -0.278500 0.672500 +vn -0.685700 -0.404400 0.605200 +vn 0.685700 -0.404400 0.605200 +vn -0.685700 -0.514700 0.514700 +vn 0.685700 -0.514700 0.514700 +vn -0.685700 -0.605200 0.404400 +vn 0.685700 -0.605200 0.404400 +vn -0.685700 -0.672500 0.278500 +vn 0.685700 -0.672500 0.278500 +vn -0.685700 -0.713900 0.142000 +vn 0.685700 -0.713900 0.142000 +vn -0.685700 -0.727900 0.000000 +vn 0.685700 -0.727900 0.000000 +vn -0.685700 -0.713900 -0.142000 +vn 0.685700 -0.713900 -0.142000 +vn -0.685700 -0.672500 -0.278500 +vn 0.685700 -0.672500 -0.278500 +vn -0.685700 -0.605200 -0.404400 +vn 0.685700 -0.605200 -0.404400 +vn -0.685700 -0.514700 -0.514700 +vn 0.685700 -0.514700 -0.514700 +vn -0.685700 -0.404400 -0.605200 +vn 0.685700 -0.404400 -0.605200 +vn -0.685700 -0.278500 -0.672500 +vn 0.685700 -0.278500 -0.672500 +vn -0.685700 -0.142000 -0.713900 +vn 0.685700 -0.142000 -0.713900 +s 1 +f 1/1/1 2/2/2 4/3/3 3/4/4 +f 3/4/4 4/3/3 6/5/5 5/6/6 +f 5/6/6 6/5/5 8/7/7 7/8/8 +f 7/8/8 8/7/7 10/9/9 9/10/10 +f 9/10/10 10/9/9 12/11/11 11/12/12 +f 11/12/12 12/11/11 14/13/13 13/14/14 +f 13/14/14 14/13/13 16/15/15 15/16/16 +f 15/16/16 16/15/15 18/17/17 17/18/18 +f 17/19/18 18/20/17 20/21/19 19/22/20 +f 19/22/20 20/21/19 22/23/21 21/24/22 +f 21/24/22 22/23/21 24/25/23 23/26/24 +f 23/26/24 24/25/23 26/27/25 25/28/26 +f 25/28/26 26/27/25 28/29/27 27/30/28 +f 27/30/28 28/29/27 30/31/29 29/32/30 +f 29/32/30 30/31/29 32/33/31 31/34/32 +f 31/34/32 32/33/31 34/2/33 33/1/34 +f 33/1/34 34/2/33 36/3/35 35/4/36 +f 35/4/36 36/3/35 38/5/37 37/6/38 +f 37/6/38 38/5/37 40/7/39 39/8/40 +f 39/8/40 40/7/39 42/9/41 41/10/42 +f 41/10/42 42/9/41 44/11/43 43/12/44 +f 43/12/44 44/11/43 46/13/45 45/14/46 +f 45/14/46 46/13/45 48/15/47 47/16/48 +f 47/16/48 48/15/47 50/17/49 49/18/50 +f 49/19/50 50/20/49 52/21/51 51/22/52 +f 51/22/52 52/21/51 54/23/53 53/24/54 +f 53/24/54 54/23/53 56/25/55 55/26/56 +f 55/26/56 56/25/55 58/27/57 57/28/58 +f 57/28/58 58/27/57 60/29/59 59/30/60 +f 59/30/60 60/29/59 62/31/61 61/32/62 +f 4/35/3 2/1/2 64/36/63 62/37/61 60/38/59 58/39/57 56/40/55 54/41/53 52/42/51 50/43/49 48/44/47 46/45/45 44/46/43 42/47/41 40/48/39 38/49/37 36/50/35 34/2/33 32/51/31 30/52/29 28/53/27 26/54/25 24/55/23 22/56/21 20/57/19 18/58/17 16/59/15 14/60/13 12/61/11 10/62/9 8/63/7 6/64/5 +f 63/34/64 64/33/63 2/2/2 1/1/1 +f 61/32/62 62/31/61 64/33/63 63/34/64 +f 1/65/1 3/51/4 5/52/6 7/53/8 9/54/10 11/66/12 13/56/14 15/57/16 17/67/18 19/59/20 21/60/22 23/61/24 25/62/26 27/68/28 29/64/30 31/35/32 33/69/34 35/36/36 37/37/38 39/38/40 41/39/42 43/70/44 45/41/46 47/42/48 49/71/50 51/44/52 53/45/54 55/46/56 57/47/58 59/72/60 61/49/62 63/50/64 diff --git a/technic/models/technic_innercorner.obj b/technic/models/technic_innercorner.obj new file mode 100644 index 0000000..c962aeb --- /dev/null +++ b/technic/models/technic_innercorner.obj @@ -0,0 +1,33 @@ +# Blender v2.73 (sub 0) OBJ File: 'technic-icorner.blend' +# www.blender.org +o Cube_Cube.000 +v -0.500000 0.500000 0.500000 +v -0.500000 0.500000 -0.500000 +v -0.500000 -0.500000 -0.500000 +v -0.500000 -0.500000 0.500000 +v 0.500000 -0.500000 -0.500000 +v 0.500000 0.500000 0.500000 +v -0.500000 -0.500000 0.500000 +v 0.500000 -0.500000 0.500000 +v 0.500000 -0.500000 -0.500000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vn -0.000000 -0.000000 1.000000 +vn -0.000000 -0.000000 -1.000000 +vn 0.707100 0.707100 -0.000000 +vn 1.000000 0.000000 -0.000000 +vn 0.000000 -1.000000 -0.000000 +vn -1.000000 -0.000000 -0.000000 +vn 0.000000 0.707100 -0.707100 +s off +f 6/1/1 1/2/1 7/3/1 8/4/1 +f 2/1/2 5/3/2 3/4/2 +f 2/1/3 1/2/3 5/4/3 +f 6/2/4 8/3/4 9/4/4 +f 9/1/5 8/2/5 7/3/5 3/4/5 +f 3/3/6 7/4/6 1/1/6 2/2/6 +f 1/1/7 6/2/7 9/3/7 +l 1 4 +l 3 4 diff --git a/technic/models/technic_innercorner_upsdown.obj b/technic/models/technic_innercorner_upsdown.obj new file mode 100644 index 0000000..68eb560 --- /dev/null +++ b/technic/models/technic_innercorner_upsdown.obj @@ -0,0 +1,33 @@ +# Blender v2.73 (sub 0) OBJ File: 'technic-icorner-upsdown.blend' +# www.blender.org +o Cube_Cube.000 +v -0.500000 -0.500000 0.500000 +v 0.500000 -0.500000 0.500000 +v 0.500000 0.500000 0.500000 +v -0.500000 0.500000 0.500000 +v 0.500000 0.500000 -0.500000 +v -0.500000 -0.500000 -0.500000 +v -0.500000 0.500000 0.500000 +v -0.500000 0.500000 -0.500000 +v 0.500000 0.500000 -0.500000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vn -1.000000 0.000000 0.000000 +vn 1.000000 -0.000000 0.000000 +vn -0.000000 -0.707100 -0.707100 +vn -0.000000 0.000000 -1.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.707100 -0.707100 -0.000000 +s off +f 6/1/1 1/2/1 7/3/1 8/4/1 +f 2/1/2 5/3/2 3/4/2 +f 2/1/3 1/2/3 5/4/3 +f 6/2/4 8/3/4 9/4/4 +f 9/1/5 8/2/5 7/3/5 3/4/5 +f 3/3/6 7/4/6 1/1/6 2/2/6 +f 1/1/7 6/2/7 9/3/7 +l 1 4 +l 3 4 diff --git a/technic/models/technic_oblate_spheroid.obj b/technic/models/technic_oblate_spheroid.obj new file mode 100644 index 0000000..e949f5b --- /dev/null +++ b/technic/models/technic_oblate_spheroid.obj @@ -0,0 +1,300 @@ +# Blender v2.73 (sub 0) OBJ File: 'slope_test_blob_onetexture.blend' +# www.blender.org +o Cube +v 0.213679 -0.450000 -0.213679 +v -0.213679 -0.450000 0.213680 +v 0.213680 -0.450000 0.213680 +v -0.213679 -0.450000 -0.213679 +v 0.213679 0.450000 -0.213679 +v -0.213679 0.450000 -0.213679 +v 0.213679 0.450000 0.213680 +v 0.500000 -0.000003 0.500000 +v 0.277785 -0.415735 0.277785 +v -0.277785 -0.415735 0.277785 +v 0.353553 -0.353554 0.353553 +v -0.353553 -0.353554 0.353553 +v -0.500000 -0.000002 0.500000 +v 0.415735 -0.277786 0.415735 +v -0.277785 0.415735 0.277785 +v 0.277785 0.415735 0.277785 +v -0.415735 -0.277785 0.415735 +v 0.353554 0.353553 0.353554 +v -0.500000 -0.000002 -0.499983 +v 0.461940 -0.191342 0.461940 +v -0.461940 -0.191342 0.461940 +v -0.353553 0.353553 0.353554 +v 0.490393 -0.097546 0.490393 +v 0.500000 -0.000002 -0.500000 +v 0.490393 0.097545 -0.490392 +v 0.490393 0.097545 0.490393 +v -0.490393 -0.097546 0.490393 +v 0.490393 -0.097545 -0.490393 +v 0.461940 0.191341 0.461940 +v -0.461940 0.191341 0.461940 +v 0.461940 0.191342 -0.461940 +v -0.490393 0.097545 0.490393 +v 0.415735 0.277785 0.415735 +v -0.490393 0.097545 -0.490392 +v -0.415735 0.277785 0.415735 +v 0.461940 -0.191341 -0.461940 +v 0.415735 0.277785 -0.415735 +v -0.461940 0.191341 -0.461940 +v -0.415735 0.277785 -0.415735 +v 0.415735 -0.277785 -0.415735 +v -0.490393 -0.097546 -0.490392 +v 0.353553 0.353553 -0.353553 +v -0.213679 0.450000 0.213680 +v -0.353553 0.353553 -0.353553 +v 0.277785 0.415735 -0.277785 +v -0.461940 -0.191342 -0.461939 +v 0.353554 -0.353553 -0.353554 +v -0.277785 0.415735 -0.277785 +v -0.415735 -0.277785 -0.415734 +v 0.277786 -0.415735 -0.277785 +v -0.353553 -0.353554 -0.353553 +v -0.277785 -0.415735 -0.277784 +vt 0.038487 0.679029 +vt 0.010047 0.589789 +vt 0.990397 0.589790 +vt 0.915772 0.767073 +vt 0.084671 0.767071 +vt 0.961957 0.679029 +vt 0.852473 0.146294 +vt 0.914576 0.232749 +vt 0.084146 0.232744 +vt 0.712776 0.000003 +vt 0.221926 0.061588 +vt 0.285951 0.000000 +vt 0.285945 0.999818 +vt 0.221920 0.938229 +vt 0.712771 0.999818 +vt 0.009578 0.589789 +vt 0.989138 0.589792 +vt 0.960721 0.679031 +vt 0.286638 0.000000 +vt 0.777884 0.061589 +vt 0.222561 0.061589 +vt 0.777608 0.938229 +vt 0.222164 0.938229 +vt 0.146413 0.853527 +vt 0.286255 0.999818 +vt 0.713517 0.999818 +vt 0.776800 0.061592 +vt 0.146251 0.146290 +vt 0.000000 0.499907 +vt 0.989139 0.410032 +vt 0.998734 0.499910 +vt 0.853618 0.146291 +vt 0.915772 0.232746 +vt 0.146826 0.146290 +vt 0.961957 0.320789 +vt 0.084672 0.232745 +vt 0.990397 0.410029 +vt 0.038487 0.320789 +vt 0.776796 0.938230 +vt 0.777790 0.938229 +vt 0.146467 0.853526 +vt 0.853556 0.853527 +vt 0.146825 0.853526 +vt 1.000000 0.499907 +vt 0.010047 0.410028 +vt 0.146246 0.853527 +vt 0.222559 0.938228 +vt 0.777882 0.938230 +vt 0.915737 0.767073 +vt 0.084287 0.767072 +vt 0.038083 0.679029 +vt 0.961941 0.679029 +vt 0.037995 0.679029 +vt 0.960723 0.320792 +vt 0.037998 0.320787 +vt 0.009580 0.410028 +vt 0.990167 0.589790 +vt 0.999772 0.499909 +vt 0.961721 0.679029 +vt 0.084246 0.767072 +vt 0.915526 0.767072 +vt 0.853359 0.853527 +vt 0.914573 0.767074 +vt 0.084142 0.767072 +vt 0.852470 0.853528 +vt 0.777609 0.061590 +vt 0.853360 0.146293 +vt 0.222166 0.061589 +vt 0.146414 0.146291 +vt 0.915527 0.232748 +vt 0.084247 0.232746 +vt 0.961721 0.320791 +vt 0.038052 0.320789 +vt 0.990167 0.410031 +vt 0.713686 0.999818 +vt 0.749950 0.250050 +vt 0.749950 0.749950 +vt 0.250050 0.749950 +vt 0.250050 0.250050 +vt 0.713807 0.000000 +vt 0.286258 0.000000 +vt 0.713519 0.000001 +vt 0.250050 0.250050 +vt 0.749950 0.250050 +vt 0.749950 0.749950 +vt 0.286636 0.999817 +vt 0.777791 0.061589 +vt 0.146467 0.146291 +vt 0.084287 0.232745 +vt 0.915737 0.232746 +vt 0.961941 0.320789 +vt 0.000444 0.499907 +vt 0.713687 0.000000 +vt 0.713805 0.999818 +vn -0.620400 0.479600 0.620400 +vn -0.683900 0.254100 0.683900 +vn 0.683900 0.254100 0.683900 +vn 0.531000 0.660300 0.531000 +vn -0.531000 0.660300 0.531000 +vn 0.620400 0.479600 0.620400 +vn -0.429700 -0.794100 0.429700 +vn -0.531000 -0.660300 0.531000 +vn -0.531000 -0.660300 -0.531000 +vn -0.185700 -0.964900 0.185700 +vn -0.325800 -0.887500 -0.325800 +vn -0.185700 -0.964900 -0.185700 +vn -0.185700 0.964900 -0.185700 +vn -0.325800 0.887500 -0.325800 +vn -0.185700 0.964900 0.185700 +vn -0.683900 0.254000 -0.683900 +vn 0.325800 -0.887500 0.325800 +vn -0.325800 -0.887500 0.325800 +vn 0.325800 0.887500 -0.325800 +vn 0.429700 0.794100 -0.429700 +vn 0.185700 0.964900 -0.185700 +vn -0.429700 -0.794100 -0.429700 +vn -0.707100 0.000000 -0.707100 +vn -0.683900 -0.254100 0.683900 +vn -0.707100 0.000000 0.707100 +vn 0.429700 -0.794100 0.429700 +vn 0.531000 -0.660300 0.531000 +vn 0.620400 -0.479600 0.620400 +vn 0.683900 -0.254100 0.683900 +vn -0.620400 -0.479600 0.620400 +vn -0.325800 0.887500 0.325800 +vn 0.185700 0.964900 0.185700 +vn 0.325800 0.887500 0.325800 +vn 0.429700 0.794100 0.429700 +vn -0.429700 0.794100 0.429700 +vn 0.707100 0.000000 0.707100 +vn -0.429700 0.794100 -0.429700 +vn 0.531000 0.660300 -0.531000 +vn 0.683900 0.254100 -0.683900 +vn 0.707100 0.000000 -0.707100 +vn 0.620400 0.479600 -0.620400 +vn -0.620400 0.479600 -0.620400 +vn -0.620400 -0.479600 -0.620400 +vn -0.683900 -0.254000 -0.683900 +vn 0.683900 -0.254100 -0.683900 +vn -0.531000 0.660300 -0.531000 +vn 0.325800 -0.887500 -0.325800 +vn 0.429700 -0.794100 -0.429700 +vn 0.531000 -0.660300 -0.531000 +vn 0.620400 -0.479600 -0.620400 +vn 0.185700 -0.964900 -0.185700 +vn 0.185700 -0.964900 0.185700 +s 1 +f 30/1/1 32/2/2 26/3/3 +f 33/4/4 35/5/5 29/6/6 +f 12/7/7 17/8/8 49/9/9 +f 2/10/10 52/11/11 4/12/12 +f 6/13/13 48/14/14 43/15/15 +f 34/16/16 32/17/2 30/18/1 +f 2/19/10 9/20/17 10/21/18 +f 48/22/14 45/23/19 42/24/20 +f 5/25/21 45/23/19 6/26/13 +f 10/27/18 12/7/7 51/28/22 +f 19/29/23 27/30/24 13/31/25 +f 9/20/17 11/32/26 10/21/18 +f 11/32/26 14/33/27 12/34/7 +f 14/33/27 20/35/28 17/36/8 +f 20/35/28 23/37/29 21/38/30 +f 43/15/15 48/14/14 15/39/31 +f 7/25/32 16/23/33 45/40/19 +f 18/41/34 42/42/20 45/40/19 +f 29/6/6 30/1/1 26/3/3 +f 22/43/35 33/4/4 18/42/34 +f 26/3/3 32/2/2 8/44/36 +f 8/44/36 27/45/24 23/37/29 +f 11/32/26 12/34/7 10/21/18 +f 14/33/27 17/36/8 12/34/7 +f 20/35/28 21/38/30 17/36/8 +f 23/37/29 27/45/24 21/38/30 +f 10/27/18 52/11/11 2/10/10 +f 15/39/31 48/14/14 44/46/37 +f 22/43/35 35/5/5 33/4/4 +f 15/47/31 22/43/35 16/48/33 +f 37/49/38 42/42/20 18/41/34 +f 33/50/4 29/51/6 37/49/38 +f 8/29/36 25/3/39 26/16/3 +f 24/44/40 25/3/39 8/29/36 +f 29/51/6 26/16/3 31/52/41 +f 26/16/3 25/3/39 31/52/41 +f 29/51/6 31/52/41 37/49/38 +f 38/53/42 34/16/16 30/18/1 +f 19/29/23 32/17/2 34/16/16 +f 13/31/25 32/17/2 19/29/23 +f 17/8/8 21/54/30 46/55/43 +f 21/54/30 27/30/24 41/56/44 +f 8/29/36 28/37/45 24/44/40 +f 34/57/16 25/16/39 19/58/23 +f 38/59/42 31/51/41 34/57/16 +f 31/51/41 25/16/39 34/57/16 +f 37/60/38 38/59/42 39/61/46 +f 37/60/38 31/51/41 38/59/42 +f 44/62/37 42/24/20 37/60/38 +f 38/53/42 30/18/1 35/63/5 +f 39/64/46 35/63/5 22/65/35 +f 52/66/11 51/67/22 50/68/47 +f 51/67/22 47/69/48 50/68/47 +f 51/67/22 49/70/9 47/69/48 +f 49/70/9 40/71/49 47/69/48 +f 49/70/9 46/72/43 40/71/49 +f 46/72/43 36/73/50 40/71/49 +f 19/58/23 28/56/45 41/74/44 +f 46/72/43 41/74/44 36/73/50 +f 41/74/44 28/56/45 36/73/50 +f 22/43/35 18/42/34 16/48/33 +f 5/75/21 7/25/32 45/40/19 +f 2/76/10 4/77/12 1/78/51 3/79/52 +f 44/62/37 48/22/14 42/24/20 +f 35/5/5 30/1/1 29/6/6 +f 3/80/52 9/20/17 2/19/10 +f 45/23/19 48/22/14 6/26/13 +f 1/81/51 52/66/11 50/68/47 +f 39/61/46 44/62/37 37/60/38 +f 52/66/11 1/81/51 4/82/12 +f 24/29/40 28/56/45 19/58/23 +f 7/78/32 5/83/21 6/84/13 43/85/15 +f 24/29/40 19/58/23 25/16/39 +f 15/47/31 16/48/33 43/86/15 +f 22/65/35 44/46/37 39/64/46 +f 39/64/46 38/53/42 35/63/5 +f 41/56/44 27/30/24 19/29/23 +f 46/55/43 21/54/30 41/56/44 +f 49/9/9 17/8/8 46/55/43 +f 51/28/22 12/7/7 49/9/9 +f 52/11/11 10/27/18 51/28/22 +f 9/68/17 50/87/47 11/88/26 +f 50/87/47 47/32/48 11/88/26 +f 11/88/26 47/32/48 14/89/27 +f 47/32/48 40/90/49 14/89/27 +f 14/89/27 40/90/49 20/73/28 +f 40/90/49 36/91/50 20/73/28 +f 23/56/29 28/37/45 8/29/36 +f 20/73/28 36/91/50 23/56/29 +f 36/91/50 28/37/45 23/56/29 +f 13/92/25 8/44/36 32/2/2 +f 50/87/47 9/68/17 1/93/51 +f 13/92/25 27/45/24 8/44/36 +f 16/23/33 18/41/34 45/40/19 +f 22/65/35 15/39/31 44/46/37 +f 9/68/17 3/81/52 1/93/51 +f 33/50/4 37/49/38 18/41/34 +f 43/86/15 16/48/33 7/94/32 diff --git a/technic/models/technic_one_curved_edge.obj b/technic/models/technic_one_curved_edge.obj new file mode 100644 index 0000000..bb82040 --- /dev/null +++ b/technic/models/technic_one_curved_edge.obj @@ -0,0 +1,132 @@ +# Blender v2.73 (sub 0) OBJ File: 'slope_test_quarter_round_onetexture.blend' +# www.blender.org +o Cylinder +v -0.500000 0.490393 -0.097545 +v 0.500000 0.490393 -0.097545 +v -0.500000 0.461940 -0.191342 +v 0.500000 0.461940 -0.191342 +v -0.500000 0.415735 -0.277785 +v 0.500000 0.415735 -0.277785 +v -0.500000 0.353553 -0.353553 +v 0.500000 0.353553 -0.353553 +v -0.500000 0.277785 -0.415735 +v 0.500000 0.277785 -0.415735 +v -0.500000 0.191342 -0.461940 +v 0.500000 0.191342 -0.461940 +v -0.500000 0.097545 -0.490393 +v 0.500000 0.097545 -0.490393 +v 0.500000 -0.000000 -0.500000 +v 0.500000 0.490393 -0.097545 +v -0.500000 -0.500000 0.500000 +v -0.500000 -0.500000 -0.500000 +v 0.500000 -0.500000 -0.500000 +v -0.500000 0.500000 0.500000 +v 0.500000 0.500000 0.500000 +v -0.500000 0.000000 -0.500000 +v -0.500000 0.500000 -0.000000 +v 0.500000 0.500000 0.000000 +v -0.500000 0.490393 -0.097545 +v -0.500000 0.461940 -0.191342 +v -0.500000 0.415735 -0.277785 +v -0.500000 0.353553 -0.353553 +v -0.500000 0.277785 -0.415735 +v -0.500000 0.191342 -0.461940 +v -0.500000 0.097545 -0.490393 +v -0.500000 0.000000 0.000000 +v -0.500000 -0.500000 0.500000 +v -0.500000 -0.500000 -0.500000 +v -0.500000 0.500000 0.500000 +v -0.500000 0.000000 -0.500000 +v -0.500000 0.500000 -0.000000 +v 0.500000 0.461940 -0.191342 +v 0.500000 0.415735 -0.277785 +v 0.500000 0.353553 -0.353553 +v 0.500000 0.277785 -0.415735 +v 0.500000 0.191342 -0.461940 +v 0.500000 0.097545 -0.490393 +v 0.500000 -0.000000 -0.500000 +v 0.500000 -0.000000 -0.000000 +v 0.500000 -0.500000 -0.500000 +v 0.500000 -0.500000 0.500000 +v 0.500000 0.500000 0.500000 +v 0.500000 0.500000 0.000000 +v -0.500000 -0.500000 -0.500000 +v 0.500000 -0.500000 -0.500000 +v 0.500000 -0.500000 0.500000 +v -0.500000 -0.500000 0.500000 +v 0.500000 -0.500000 0.500000 +v -0.500000 0.500000 0.500000 +v 0.500000 0.500000 0.500000 +vt 1.000000 0.000000 +vt 1.000000 0.500000 +vt 0.500001 0.500000 +vt 0.500001 1.000000 +vt 0.000003 1.000000 +vt 0.000003 0.000000 +vt 0.597546 0.990393 +vt 0.691342 0.961940 +vt 1.000000 1.000000 +vt 0.990393 0.597545 +vt 0.961940 0.691341 +vt 0.777786 0.915735 +vt 0.853554 0.853553 +vt 0.915735 0.777785 +vt 0.146446 0.853552 +vt 0.084265 0.777783 +vt 0.038060 0.691340 +vt 0.308658 0.961938 +vt 0.222214 0.915733 +vt 0.000000 0.499999 +vt 0.402454 0.990391 +vt 0.009607 0.597544 +vt 1.000000 0.375000 +vt 0.000000 0.375000 +vt 0.000000 0.250000 +vt 1.000000 0.250000 +vt 0.000000 0.125000 +vt 1.000000 0.125000 +vt 0.000000 0.875000 +vt 1.000000 0.875000 +vt 0.000000 0.750000 +vt 1.000000 0.750000 +vt 0.000000 0.625000 +vt 1.000000 0.625000 +vn 1.000000 -0.000000 0.000000 +vn -0.000000 0.000000 1.000000 +vn -0.000000 -1.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn 0.000000 0.980800 -0.195100 +vn 0.000000 0.923900 -0.382700 +vn -0.000000 0.831500 -0.555600 +vn -0.000000 0.707100 -0.707100 +vn -0.000000 0.555600 -0.831500 +vn -0.000000 0.382700 -0.923900 +vn -0.000000 0.195100 -0.980800 +vn 0.000000 1.000000 -0.000000 +vn 0.000000 0.998800 -0.049100 +vn -0.000000 0.049100 -0.998800 +vn -0.000000 0.000000 -1.000000 +s off +f 46/1/1 44/2/1 45/3/1 49/4/1 48/5/1 47/6/1 +f 16/7/1 49/4/1 45/3/1 38/8/1 +f 55/5/2 53/6/2 54/1/2 56/9/2 +f 43/10/1 42/11/1 45/3/1 44/2/1 +f 39/12/1 38/8/1 45/3/1 40/13/1 +f 41/14/1 40/13/1 45/3/1 42/11/1 +f 50/9/3 51/5/3 52/6/3 17/1/3 +f 28/15/4 29/16/4 30/17/4 32/3/4 +f 26/18/4 27/19/4 28/15/4 32/3/4 +f 35/9/4 37/4/4 32/3/4 36/20/4 34/6/4 33/1/4 +f 37/4/4 25/21/4 26/18/4 32/3/4 +f 30/17/4 31/22/4 36/20/4 32/3/4 +s 1 +f 1/23/5 2/24/5 4/25/6 3/26/6 +f 3/26/6 4/25/6 6/27/7 5/28/7 +f 5/28/7 6/27/7 8/6/8 7/1/8 +f 7/9/8 8/5/8 10/29/9 9/30/9 +f 9/30/9 10/29/9 12/31/10 11/32/10 +f 11/32/10 12/31/10 14/33/11 13/34/11 +f 21/5/12 24/20/13 23/2/13 20/9/12 +f 13/34/11 14/33/11 15/20/14 22/2/14 +f 23/2/13 24/20/13 2/24/5 1/23/5 +f 18/1/15 22/2/14 15/20/14 19/6/15 diff --git a/technic/models/technic_outercorner.obj b/technic/models/technic_outercorner.obj new file mode 100644 index 0000000..60ccae6 --- /dev/null +++ b/technic/models/technic_outercorner.obj @@ -0,0 +1,23 @@ +# Blender v2.73 (sub 0) OBJ File: 'technic-ocorner.blend' +# www.blender.org +o Cube_Cube.002 +v -0.500000 0.500000 0.500000 +v -0.500000 -0.500000 -0.500000 +v -0.500000 -0.500000 0.500000 +v 0.500000 -0.500000 -0.500000 +v 0.500000 -0.500000 0.500000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vn 0.000000 -1.000000 -0.000000 +vn 0.000000 0.000000 1.000000 +vn -1.000000 -0.000000 0.000000 +vn -0.000000 0.707100 -0.707100 +vn 0.707100 0.707100 -0.000000 +s off +f 3/1/1 2/2/1 4/3/1 5/4/1 +f 1/2/2 3/3/2 5/4/2 +f 1/1/3 2/3/3 3/4/3 +f 1/1/4 4/3/4 2/4/4 +f 1/2/5 5/3/5 4/4/5 diff --git a/technic/models/technic_outercorner_upsdown.obj b/technic/models/technic_outercorner_upsdown.obj new file mode 100644 index 0000000..c89de8a --- /dev/null +++ b/technic/models/technic_outercorner_upsdown.obj @@ -0,0 +1,23 @@ +# Blender v2.73 (sub 0) OBJ File: 'slope_test_ocorner_onetexture.blend' +# www.blender.org +o Cube_Cube.002 +v -0.500000 -0.500000 0.500000 +v 0.500000 0.500000 0.500000 +v -0.500000 0.500000 0.500000 +v 0.500000 0.500000 -0.500000 +v -0.500000 0.500000 -0.500000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vn 0.000000 1.000000 -0.000000 +vn -1.000000 0.000000 -0.000000 +vn 0.000000 0.000000 1.000000 +vn 0.707100 -0.707100 0.000000 +vn -0.000000 -0.707100 -0.707100 +s off +f 3/1/1 2/2/1 4/3/1 5/4/1 +f 1/2/2 3/3/2 5/4/2 +f 1/1/3 2/3/3 3/4/3 +f 1/1/4 4/3/4 2/4/4 +f 1/2/5 5/3/5 4/4/5 diff --git a/technic/models/technic_pyramid.obj b/technic/models/technic_pyramid.obj new file mode 100644 index 0000000..a618dcf --- /dev/null +++ b/technic/models/technic_pyramid.obj @@ -0,0 +1,24 @@ +# Blender v2.73 (sub 0) OBJ File: 'slope_test_pyramid_short_onetexture.blend' +# www.blender.org +o Cube +v 0.500000 -0.500000 -0.500000 +v 0.500000 -0.500000 0.500000 +v -0.500000 -0.500000 0.500000 +v -0.500000 -0.500000 -0.500000 +v -0.000000 0.000000 -0.000000 +vt 1.000000 0.500000 +vt 0.000000 0.500000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 0.500000 0.500000 +vn 0.000000 -1.000000 0.000000 +vn -0.707100 0.707100 -0.000000 +vn 0.000000 0.707100 -0.707100 +vn 0.707100 0.707100 0.000000 +vn -0.000000 0.707100 0.707100 +s off +f 1/1/1 2/2/1 3/3/1 4/4/1 +f 3/4/2 5/5/2 4/3/2 +f 5/5/3 1/3/3 4/4/3 +f 1/4/4 5/5/4 2/3/4 +f 2/4/5 5/5/5 3/3/5 diff --git a/technic/models/technic_pyramid_spike.obj b/technic/models/technic_pyramid_spike.obj new file mode 100644 index 0000000..b305af2 --- /dev/null +++ b/technic/models/technic_pyramid_spike.obj @@ -0,0 +1,24 @@ +# Blender v2.73 (sub 0) OBJ File: 'slope_test_pyramid_onetexture.blend' +# www.blender.org +o Cube +v 0.500000 -0.500000 -0.500000 +v 0.500000 -0.500000 0.500000 +v -0.500000 -0.500000 0.500000 +v -0.500000 -0.500000 -0.500000 +v -0.000000 0.500000 -0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 0.500000 1.000000 +vn 0.000000 -1.000000 0.000000 +vn -0.894400 0.447200 -0.000000 +vn 0.000000 0.447200 -0.894400 +vn 0.894400 0.447200 0.000000 +vn -0.000000 0.447200 0.894400 +s off +f 1/1/1 2/2/1 3/3/1 4/4/1 +f 3/4/2 5/5/2 4/3/2 +f 5/5/3 1/3/3 4/4/3 +f 1/4/4 5/5/4 2/3/4 +f 2/4/5 5/5/5 3/3/5 diff --git a/technic/models/technic_slope.obj b/technic/models/technic_slope.obj new file mode 100644 index 0000000..f6f4860 --- /dev/null +++ b/technic/models/technic_slope.obj @@ -0,0 +1,24 @@ +# Blender v2.73 (sub 0) OBJ File: 'slope_test_slope_onetexture.blend' +# www.blender.org +o Cube_Cube.002 +v 0.500000 0.500000 0.500000 +v -0.500000 0.500000 0.500000 +v -0.500000 -0.500000 0.500000 +v 0.500000 -0.500000 0.500000 +v -0.500000 -0.500000 -0.500000 +v 0.500000 -0.500000 -0.500000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 -1.000000 -0.000000 +vn -1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.000000 0.707100 -0.707100 +s off +f 1/1/1 2/2/1 3/3/1 4/4/1 +f 4/3/2 3/4/2 5/1/2 6/2/2 +f 2/1/3 5/3/3 3/4/3 +f 1/2/4 4/3/4 6/4/4 +f 2/1/5 1/2/5 6/3/5 5/4/5 diff --git a/technic/models/technic_slope_horizontal.obj b/technic/models/technic_slope_horizontal.obj new file mode 100644 index 0000000..4866a92 --- /dev/null +++ b/technic/models/technic_slope_horizontal.obj @@ -0,0 +1,24 @@ +# Blender v2.73 (sub 0) OBJ File: 'technic-slope-horizontal.blend' +# www.blender.org +o Cube_Cube.002 +v -0.500000 0.500000 0.500000 +v -0.500000 -0.500000 0.500000 +v 0.500000 -0.500000 0.500000 +v 0.500000 0.500000 0.500000 +v 0.500000 -0.500000 -0.500000 +v 0.500000 0.500000 -0.500000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 1.000000 -0.000000 -0.000000 +vn -0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 -0.000000 +vn -0.707100 0.000000 -0.707100 +s off +f 1/1/1 2/2/1 3/3/1 4/4/1 +f 4/1/2 3/2/2 5/3/2 6/4/2 +f 2/3/3 5/1/3 3/2/3 +f 1/4/4 4/1/4 6/2/4 +f 2/3/5 1/4/5 6/1/5 5/2/5 diff --git a/technic/models/technic_slope_upsdown.obj b/technic/models/technic_slope_upsdown.obj new file mode 100644 index 0000000..6880595 --- /dev/null +++ b/technic/models/technic_slope_upsdown.obj @@ -0,0 +1,24 @@ +# Blender v2.73 (sub 0) OBJ File: 'slope_test_slope_onetexture.blend' +# www.blender.org +o Cube_Cube.002 +v -0.500000 -0.500000 0.500000 +v 0.500000 -0.500000 0.500000 +v 0.500000 0.500000 0.500000 +v -0.500000 0.500000 0.500000 +v 0.500000 0.500000 -0.500000 +v -0.500000 0.500000 -0.500000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 1.000000 -0.000000 +vn 1.000000 -0.000000 0.000000 +vn -1.000000 0.000000 -0.000000 +vn -0.000000 -0.707100 -0.707100 +s off +f 1/1/1 2/2/1 3/3/1 4/4/1 +f 4/3/2 3/4/2 5/1/2 6/2/2 +f 2/1/3 5/3/3 3/4/3 +f 1/2/4 4/3/4 6/4/4 +f 2/1/5 1/2/5 6/3/5 5/4/5 diff --git a/technic/models/technic_sphere.obj b/technic/models/technic_sphere.obj new file mode 100644 index 0000000..772b570 --- /dev/null +++ b/technic/models/technic_sphere.obj @@ -0,0 +1,1927 @@ +# Blender v2.73 (sub 0) OBJ File: 'globe.blend' +# www.blender.org +o Sphere +v -0.097545 0.490393 0.000000 +v -0.191342 0.461940 0.000000 +v -0.277785 0.415735 0.000000 +v -0.353553 0.353553 0.000000 +v -0.415735 0.277785 0.000000 +v -0.461940 0.191342 0.000000 +v -0.490393 0.097545 0.000000 +v -0.500000 0.000000 0.000000 +v -0.490393 -0.097545 0.000000 +v -0.461940 -0.191342 0.000000 +v -0.415735 -0.277785 0.000000 +v -0.353553 -0.353553 0.000000 +v -0.277785 -0.415735 0.000000 +v -0.191342 -0.461940 0.000000 +v -0.097545 -0.490393 0.000000 +v -0.095671 0.490393 -0.019030 +v -0.187665 0.461940 -0.037329 +v -0.272448 0.415735 -0.054193 +v -0.346760 0.353553 -0.068975 +v -0.407747 0.277785 -0.081106 +v -0.453064 0.191342 -0.090120 +v -0.480970 0.097545 -0.095671 +v -0.490393 0.000000 -0.097545 +v -0.480970 -0.097545 -0.095671 +v -0.453064 -0.191342 -0.090120 +v -0.407747 -0.277785 -0.081106 +v -0.346760 -0.353553 -0.068975 +v -0.272448 -0.415735 -0.054193 +v -0.187665 -0.461940 -0.037329 +v -0.095671 -0.490393 -0.019030 +v -0.090120 0.490393 -0.037329 +v -0.176777 0.461940 -0.073223 +v -0.256640 0.415735 -0.106304 +v -0.326641 0.353553 -0.135299 +v -0.384089 0.277785 -0.159095 +v -0.426777 0.191342 -0.176777 +v -0.453064 0.097545 -0.187665 +v -0.461940 0.000000 -0.191342 +v -0.453064 -0.097545 -0.187665 +v -0.426777 -0.191342 -0.176777 +v -0.384089 -0.277785 -0.159095 +v -0.326641 -0.353553 -0.135299 +v -0.256640 -0.415735 -0.106304 +v -0.176777 -0.461940 -0.073223 +v -0.090120 -0.490393 -0.037329 +v -0.081106 0.490393 -0.054193 +v -0.159095 0.461940 -0.106304 +v -0.230970 0.415735 -0.154329 +v -0.293969 0.353553 -0.196424 +v -0.345671 0.277785 -0.230970 +v -0.384089 0.191342 -0.256640 +v -0.407746 0.097545 -0.272448 +v -0.415735 0.000000 -0.277785 +v -0.407746 -0.097545 -0.272448 +v -0.384089 -0.191342 -0.256640 +v -0.345671 -0.277785 -0.230970 +v -0.293969 -0.353553 -0.196424 +v -0.230970 -0.415735 -0.154329 +v -0.159095 -0.461940 -0.106304 +v -0.081106 -0.490393 -0.054193 +v -0.068975 0.490393 -0.068975 +v -0.135299 0.461940 -0.135299 +v -0.196424 0.415735 -0.196424 +v -0.250000 0.353553 -0.250000 +v -0.293969 0.277785 -0.293969 +v -0.326641 0.191342 -0.326641 +v -0.346760 0.097545 -0.346760 +v -0.353553 0.000000 -0.353554 +v -0.346760 -0.097545 -0.346760 +v -0.326641 -0.191342 -0.326641 +v -0.293969 -0.277785 -0.293969 +v -0.250000 -0.353553 -0.250000 +v -0.196424 -0.415735 -0.196424 +v -0.135299 -0.461940 -0.135299 +v -0.068975 -0.490393 -0.068975 +v -0.054193 0.490393 -0.081106 +v -0.106304 0.461940 -0.159095 +v -0.154329 0.415735 -0.230970 +v -0.196424 0.353553 -0.293969 +v -0.230970 0.277785 -0.345671 +v -0.256640 0.191342 -0.384089 +v -0.272447 0.097545 -0.407747 +v -0.277785 0.000000 -0.415735 +v -0.272447 -0.097545 -0.407747 +v -0.256640 -0.191342 -0.384089 +v -0.230970 -0.277785 -0.345671 +v -0.196424 -0.353553 -0.293969 +v -0.154329 -0.415735 -0.230970 +v -0.106304 -0.461940 -0.159095 +v -0.054193 -0.490393 -0.081106 +v -0.037329 0.490393 -0.090120 +v -0.073223 0.461940 -0.176777 +v -0.106304 0.415735 -0.256640 +v -0.135299 0.353553 -0.326641 +v -0.159095 0.277785 -0.384089 +v -0.176777 0.191342 -0.426777 +v -0.187665 0.097545 -0.453064 +v -0.191342 0.000000 -0.461940 +v -0.187665 -0.097545 -0.453064 +v -0.176777 -0.191342 -0.426777 +v -0.159095 -0.277785 -0.384089 +v -0.135299 -0.353553 -0.326641 +v -0.106304 -0.415735 -0.256640 +v -0.073223 -0.461940 -0.176777 +v -0.037329 -0.490393 -0.090120 +v -0.019030 0.490393 -0.095671 +v -0.037329 0.461940 -0.187665 +v -0.054193 0.415735 -0.272448 +v -0.068975 0.353553 -0.346760 +v -0.081106 0.277785 -0.407747 +v -0.090120 0.191342 -0.453064 +v -0.095671 0.097545 -0.480970 +v -0.097545 0.000000 -0.490393 +v -0.095671 -0.097545 -0.480970 +v -0.090120 -0.191342 -0.453064 +v -0.081106 -0.277785 -0.407747 +v -0.068975 -0.353553 -0.346760 +v -0.054193 -0.415735 -0.272448 +v -0.037329 -0.461940 -0.187665 +v -0.019030 -0.490393 -0.095671 +v 0.000000 0.490393 -0.097545 +v 0.000000 0.461940 -0.191342 +v 0.000000 0.415735 -0.277785 +v 0.000000 0.353553 -0.353553 +v 0.000000 0.277785 -0.415735 +v 0.000000 0.191342 -0.461940 +v 0.000000 0.097545 -0.490393 +v 0.000000 0.000000 -0.500000 +v 0.000000 -0.097545 -0.490393 +v 0.000000 -0.191342 -0.461940 +v 0.000000 -0.277785 -0.415735 +v 0.000000 -0.353553 -0.353553 +v 0.000000 -0.415735 -0.277785 +v 0.000000 -0.461940 -0.191342 +v 0.000000 -0.490393 -0.097545 +v 0.019030 0.490393 -0.095671 +v 0.037329 0.461940 -0.187665 +v 0.054193 0.415735 -0.272448 +v 0.068975 0.353553 -0.346760 +v 0.081106 0.277785 -0.407747 +v 0.090120 0.191342 -0.453064 +v 0.095671 0.097545 -0.480970 +v 0.097545 0.000000 -0.490393 +v 0.095671 -0.097545 -0.480970 +v 0.090120 -0.191342 -0.453064 +v 0.081106 -0.277785 -0.407747 +v 0.068975 -0.353553 -0.346760 +v 0.054193 -0.415735 -0.272448 +v 0.037329 -0.461940 -0.187665 +v 0.019030 -0.490393 -0.095671 +v 0.037329 0.490393 -0.090120 +v 0.073224 0.461940 -0.176777 +v 0.106304 0.415735 -0.256640 +v 0.135299 0.353553 -0.326641 +v 0.159095 0.277785 -0.384089 +v 0.176777 0.191342 -0.426777 +v 0.187665 0.097545 -0.453064 +v 0.191342 0.000000 -0.461940 +v 0.187665 -0.097545 -0.453064 +v 0.176777 -0.191342 -0.426777 +v 0.159095 -0.277785 -0.384089 +v 0.135299 -0.353553 -0.326641 +v 0.106304 -0.415735 -0.256640 +v 0.073223 -0.461940 -0.176777 +v 0.037329 -0.490393 -0.090120 +v 0.054193 0.490393 -0.081106 +v 0.106304 0.461940 -0.159095 +v 0.154329 0.415735 -0.230970 +v 0.196424 0.353553 -0.293969 +v 0.230970 0.277785 -0.345671 +v 0.256640 0.191342 -0.384089 +v 0.272448 0.097545 -0.407747 +v 0.277785 0.000000 -0.415735 +v 0.272448 -0.097545 -0.407747 +v 0.256640 -0.191342 -0.384089 +v 0.230970 -0.277785 -0.345671 +v 0.196424 -0.353553 -0.293969 +v 0.154329 -0.415735 -0.230970 +v 0.106304 -0.461940 -0.159095 +v 0.054193 -0.490393 -0.081106 +v 0.068975 0.490393 -0.068975 +v 0.135299 0.461940 -0.135299 +v 0.196424 0.415735 -0.196424 +v 0.250000 0.353553 -0.250000 +v 0.293969 0.277785 -0.293969 +v 0.326641 0.191342 -0.326641 +v 0.346760 0.097545 -0.346760 +v 0.353554 0.000000 -0.353553 +v 0.346760 -0.097545 -0.346760 +v 0.326641 -0.191342 -0.326641 +v 0.293969 -0.277785 -0.293969 +v 0.250000 -0.353553 -0.250000 +v 0.196424 -0.415735 -0.196424 +v 0.135299 -0.461940 -0.135299 +v 0.068975 -0.490393 -0.068975 +v 0.081106 0.490393 -0.054193 +v 0.159095 0.461940 -0.106304 +v 0.230970 0.415735 -0.154329 +v 0.293969 0.353553 -0.196424 +v 0.345671 0.277785 -0.230970 +v 0.384089 0.191342 -0.256640 +v 0.407747 0.097545 -0.272447 +v 0.415735 0.000000 -0.277785 +v 0.407747 -0.097545 -0.272447 +v 0.384089 -0.191342 -0.256640 +v 0.345671 -0.277785 -0.230970 +v 0.293969 -0.353553 -0.196424 +v 0.230970 -0.415735 -0.154329 +v 0.159095 -0.461940 -0.106304 +v 0.081106 -0.490393 -0.054193 +v 0.090120 0.490393 -0.037329 +v 0.176777 0.461940 -0.073223 +v 0.256640 0.415735 -0.106304 +v 0.326641 0.353553 -0.135299 +v 0.384089 0.277785 -0.159095 +v 0.426777 0.191342 -0.176777 +v 0.453064 0.097545 -0.187665 +v 0.461940 0.000000 -0.191342 +v 0.453064 -0.097545 -0.187665 +v 0.426777 -0.191342 -0.176777 +v 0.384089 -0.277785 -0.159095 +v 0.326641 -0.353553 -0.135299 +v 0.256640 -0.415735 -0.106304 +v 0.176777 -0.461940 -0.073223 +v 0.090120 -0.490393 -0.037329 +v 0.095671 0.490393 -0.019030 +v 0.187665 0.461940 -0.037329 +v 0.272448 0.415735 -0.054193 +v 0.346760 0.353553 -0.068975 +v 0.407747 0.277785 -0.081106 +v 0.453064 0.191342 -0.090120 +v 0.480970 0.097545 -0.095671 +v 0.490393 0.000000 -0.097545 +v 0.480970 -0.097545 -0.095671 +v 0.453064 -0.191342 -0.090120 +v 0.407747 -0.277785 -0.081106 +v 0.346760 -0.353553 -0.068975 +v 0.272448 -0.415735 -0.054193 +v 0.187665 -0.461940 -0.037329 +v 0.095671 -0.490393 -0.019030 +v 0.097545 0.490393 0.000000 +v 0.191342 0.461940 -0.000000 +v 0.277785 0.415735 -0.000000 +v 0.353554 0.353553 0.000000 +v 0.415735 0.277785 0.000000 +v 0.461940 0.191342 -0.000000 +v 0.490393 0.097545 0.000000 +v 0.500000 0.000000 0.000000 +v 0.490393 -0.097545 0.000000 +v 0.461940 -0.191342 -0.000000 +v 0.415735 -0.277785 0.000000 +v 0.353554 -0.353553 0.000000 +v 0.277785 -0.415735 0.000000 +v 0.191342 -0.461940 -0.000000 +v 0.097545 -0.490393 -0.000000 +v 0.095671 0.490393 0.019030 +v 0.187665 0.461940 0.037329 +v 0.272448 0.415735 0.054193 +v 0.346760 0.353553 0.068975 +v 0.407747 0.277785 0.081106 +v 0.453064 0.191342 0.090120 +v 0.480970 0.097545 0.095671 +v 0.490393 0.000000 0.097545 +v 0.480970 -0.097545 0.095671 +v 0.453064 -0.191342 0.090120 +v 0.407747 -0.277785 0.081106 +v 0.346760 -0.353553 0.068975 +v 0.272448 -0.415735 0.054193 +v 0.187665 -0.461940 0.037329 +v 0.095671 -0.490393 0.019030 +v 0.090120 0.490393 0.037329 +v 0.176777 0.461940 0.073223 +v 0.256640 0.415735 0.106304 +v 0.326641 0.353553 0.135299 +v 0.384089 0.277785 0.159095 +v 0.426777 0.191342 0.176777 +v 0.453064 0.097545 0.187665 +v 0.461940 0.000000 0.191342 +v 0.453064 -0.097545 0.187665 +v 0.426777 -0.191342 0.176777 +v 0.384089 -0.277785 0.159095 +v 0.326641 -0.353553 0.135299 +v 0.256640 -0.415735 0.106304 +v 0.176777 -0.461940 0.073223 +v 0.090120 -0.490393 0.037329 +v 0.081106 0.490393 0.054193 +v 0.159095 0.461940 0.106304 +v 0.230970 0.415735 0.154329 +v 0.293969 0.353553 0.196424 +v 0.345671 0.277785 0.230970 +v 0.384089 0.191342 0.256640 +v 0.407747 0.097545 0.272448 +v 0.415735 0.000000 0.277785 +v 0.407747 -0.097545 0.272448 +v 0.384089 -0.191342 0.256640 +v 0.345671 -0.277785 0.230970 +v 0.293969 -0.353553 0.196424 +v 0.230970 -0.415735 0.154329 +v 0.159095 -0.461940 0.106304 +v 0.081106 -0.490393 0.054193 +v 0.068975 0.490393 0.068975 +v 0.135299 0.461940 0.135299 +v 0.196424 0.415735 0.196424 +v 0.250000 0.353553 0.250000 +v 0.293969 0.277785 0.293969 +v 0.326641 0.191342 0.326641 +v 0.346760 0.097545 0.346760 +v 0.353553 0.000000 0.353553 +v 0.346760 -0.097545 0.346760 +v 0.326641 -0.191342 0.326641 +v 0.293969 -0.277785 0.293969 +v 0.250000 -0.353553 0.250000 +v 0.196424 -0.415735 0.196424 +v 0.135299 -0.461940 0.135299 +v 0.068975 -0.490393 0.068975 +v 0.054193 0.490393 0.081106 +v 0.106304 0.461940 0.159095 +v 0.154329 0.415735 0.230970 +v 0.196424 0.353553 0.293969 +v 0.230970 0.277785 0.345671 +v 0.256640 0.191342 0.384089 +v 0.272448 0.097545 0.407746 +v 0.277785 0.000000 0.415735 +v 0.272448 -0.097545 0.407746 +v 0.256640 -0.191342 0.384089 +v 0.230970 -0.277785 0.345671 +v 0.196424 -0.353553 0.293969 +v 0.154329 -0.415735 0.230970 +v 0.106304 -0.461940 0.159095 +v 0.054193 -0.490393 0.081106 +v 0.037329 0.490393 0.090120 +v 0.073223 0.461940 0.176777 +v 0.106304 0.415735 0.256640 +v 0.135299 0.353553 0.326641 +v 0.159095 0.277785 0.384089 +v 0.176777 0.191342 0.426777 +v 0.187665 0.097545 0.453064 +v 0.191342 0.000000 0.461940 +v 0.187665 -0.097545 0.453064 +v 0.176777 -0.191342 0.426777 +v 0.159095 -0.277785 0.384089 +v 0.135299 -0.353553 0.326641 +v 0.106304 -0.415735 0.256640 +v 0.073223 -0.461940 0.176777 +v 0.037329 -0.490393 0.090120 +v 0.019030 0.490393 0.095671 +v 0.037329 0.461940 0.187665 +v 0.054193 0.415735 0.272448 +v 0.068975 0.353553 0.346760 +v 0.081106 0.277785 0.407746 +v 0.090120 0.191342 0.453064 +v 0.095671 0.097545 0.480970 +v 0.097545 0.000000 0.490393 +v 0.095671 -0.097545 0.480970 +v 0.090120 -0.191342 0.453064 +v 0.081106 -0.277785 0.407746 +v 0.068975 -0.353553 0.346760 +v 0.054193 -0.415735 0.272447 +v 0.037329 -0.461940 0.187665 +v 0.019030 -0.490393 0.095671 +v 0.000000 0.490393 0.097545 +v 0.000000 0.461940 0.191342 +v 0.000000 0.415735 0.277785 +v 0.000000 0.353553 0.353553 +v 0.000000 0.277785 0.415735 +v 0.000000 0.191342 0.461940 +v 0.000000 0.097545 0.490392 +v 0.000000 0.000000 0.500000 +v 0.000000 -0.097545 0.490392 +v 0.000000 -0.191342 0.461940 +v 0.000000 -0.277785 0.415735 +v 0.000000 -0.353553 0.353553 +v 0.000000 -0.415735 0.277785 +v 0.000000 -0.461940 0.191342 +v 0.000000 -0.490393 0.097545 +v -0.019030 0.490393 0.095671 +v -0.037329 0.461940 0.187665 +v -0.054193 0.415735 0.272448 +v -0.068975 0.353553 0.346760 +v -0.081106 0.277785 0.407746 +v -0.090120 0.191342 0.453064 +v -0.095671 0.097545 0.480970 +v -0.097545 0.000000 0.490393 +v -0.095671 -0.097545 0.480970 +v -0.090120 -0.191342 0.453064 +v -0.081106 -0.277785 0.407746 +v -0.068975 -0.353553 0.346760 +v -0.054193 -0.415735 0.272447 +v -0.037329 -0.461940 0.187665 +v -0.019030 -0.490393 0.095671 +v -0.037329 0.490393 0.090120 +v -0.073223 0.461940 0.176777 +v -0.106304 0.415735 0.256640 +v -0.135299 0.353553 0.326641 +v -0.159095 0.277785 0.384089 +v -0.176777 0.191342 0.426777 +v -0.187665 0.097545 0.453063 +v -0.191342 0.000000 0.461940 +v -0.187665 -0.097545 0.453063 +v -0.176777 -0.191342 0.426777 +v -0.159095 -0.277785 0.384089 +v -0.135299 -0.353553 0.326641 +v -0.106304 -0.415735 0.256640 +v -0.073223 -0.461940 0.176777 +v -0.037329 -0.490393 0.090120 +v -0.054193 0.490393 0.081106 +v -0.106304 0.461940 0.159095 +v -0.154329 0.415735 0.230970 +v -0.196424 0.353553 0.293969 +v -0.230970 0.277785 0.345671 +v -0.256640 0.191342 0.384089 +v -0.272447 0.097545 0.407746 +v -0.277785 0.000000 0.415735 +v -0.272447 -0.097545 0.407746 +v -0.256640 -0.191342 0.384089 +v -0.230970 -0.277785 0.345671 +v -0.196424 -0.353553 0.293969 +v -0.154329 -0.415735 0.230970 +v -0.106304 -0.461940 0.159095 +v -0.054193 -0.490393 0.081106 +v -0.068975 0.490393 0.068975 +v -0.135299 0.461940 0.135299 +v -0.196424 0.415735 0.196424 +v -0.250000 0.353553 0.250000 +v -0.293969 0.277785 0.293969 +v -0.326641 0.191342 0.326641 +v -0.346760 0.097545 0.346760 +v -0.353553 0.000000 0.353553 +v -0.346760 -0.097545 0.346760 +v -0.326641 -0.191342 0.326641 +v -0.293969 -0.277785 0.293969 +v -0.250000 -0.353553 0.250000 +v -0.196424 -0.415735 0.196424 +v -0.135299 -0.461940 0.135299 +v -0.068975 -0.490393 0.068975 +v -0.081106 0.490393 0.054193 +v -0.159095 0.461940 0.106304 +v -0.230970 0.415735 0.154329 +v -0.293969 0.353553 0.196424 +v -0.345671 0.277785 0.230970 +v -0.384089 0.191342 0.256640 +v -0.407746 0.097545 0.272447 +v -0.415735 0.000000 0.277785 +v -0.407746 -0.097545 0.272447 +v -0.384089 -0.191342 0.256640 +v -0.345671 -0.277785 0.230970 +v -0.293969 -0.353553 0.196424 +v -0.230970 -0.415735 0.154329 +v -0.159095 -0.461940 0.106304 +v -0.081106 -0.490393 0.054193 +v -0.090120 0.490393 0.037329 +v -0.176776 0.461940 0.073223 +v -0.256640 0.415735 0.106304 +v -0.326641 0.353553 0.135299 +v -0.384089 0.277785 0.159095 +v -0.426776 0.191342 0.176777 +v -0.453063 0.097545 0.187665 +v -0.461939 0.000000 0.191342 +v -0.453063 -0.097545 0.187665 +v -0.426776 -0.191342 0.176777 +v -0.384089 -0.277785 0.159095 +v -0.326641 -0.353553 0.135299 +v -0.256640 -0.415735 0.106304 +v -0.176776 -0.461940 0.073223 +v -0.090120 -0.490393 0.037329 +v -0.095671 0.490393 0.019030 +v -0.187665 0.461940 0.037329 +v -0.272447 0.415735 0.054193 +v -0.346760 0.353553 0.068975 +v -0.407746 0.277785 0.081106 +v -0.453063 0.191342 0.090120 +v -0.480969 0.097545 0.095671 +v -0.490392 0.000000 0.097545 +v -0.480969 -0.097545 0.095671 +v -0.453063 -0.191342 0.090120 +v -0.407746 -0.277785 0.081106 +v -0.346760 -0.353553 0.068975 +v -0.272447 -0.415735 0.054193 +v -0.187665 -0.461940 0.037329 +v -0.095671 -0.490393 0.019030 +v -0.013167 -0.495196 0.000000 +v -0.005039 0.495196 0.012165 +v -0.013167 0.495196 0.000000 +v -0.012914 0.495196 -0.002569 +v -0.012914 -0.495196 -0.002569 +v -0.012165 0.495196 -0.005039 +v -0.012165 -0.495196 -0.005039 +v -0.010948 0.495196 -0.007315 +v -0.010948 -0.495196 -0.007315 +v -0.009311 0.495196 -0.009311 +v -0.009311 -0.495196 -0.009311 +v -0.007315 0.495196 -0.010948 +v -0.007315 -0.495196 -0.010948 +v -0.005039 0.495196 -0.012165 +v -0.005039 -0.495196 -0.012165 +v -0.002569 0.495196 -0.012914 +v -0.002569 -0.495196 -0.012914 +v 0.000000 0.495196 -0.013167 +v 0.000000 -0.495196 -0.013167 +v 0.002569 0.495196 -0.012914 +v 0.002569 -0.495196 -0.012914 +v 0.005039 0.495196 -0.012165 +v 0.005039 -0.495196 -0.012165 +v 0.007316 0.495196 -0.010948 +v 0.007316 -0.495196 -0.010948 +v 0.009311 0.495196 -0.009311 +v 0.009311 -0.495196 -0.009311 +v 0.010948 0.495196 -0.007315 +v 0.010948 -0.495196 -0.007315 +v 0.012165 0.495196 -0.005039 +v 0.012165 -0.495196 -0.005039 +v 0.012915 0.495196 -0.002569 +v 0.012915 -0.495196 -0.002569 +v 0.013168 0.495196 0.000000 +v 0.013168 -0.495196 0.000000 +v 0.012915 0.495196 0.002569 +v 0.012915 -0.495196 0.002569 +v 0.012165 0.495196 0.005039 +v 0.012165 -0.495196 0.005039 +v 0.010948 0.495196 0.007315 +v 0.010948 -0.495196 0.007315 +v 0.009311 0.495196 0.009311 +v 0.009311 -0.495196 0.009311 +v 0.007316 0.495196 0.010948 +v 0.007316 -0.495196 0.010948 +v 0.005039 0.495196 0.012165 +v 0.005039 -0.495196 0.012165 +v 0.002569 0.495196 0.012914 +v 0.002569 -0.495196 0.012914 +v 0.000000 0.495196 0.013167 +v 0.000000 -0.495196 0.013167 +v -0.002569 0.495196 0.012914 +v -0.002569 -0.495196 0.012914 +v -0.005039 -0.495196 0.012165 +v -0.007315 0.495196 0.010948 +v -0.007315 -0.495196 0.010948 +v -0.009311 0.495196 0.009311 +v -0.009311 -0.495196 0.009311 +v -0.010948 0.495196 0.007315 +v -0.010948 -0.495196 0.007315 +v -0.012165 0.495196 0.005039 +v -0.012165 -0.495196 0.005039 +v -0.012914 0.495196 0.002569 +v -0.012914 -0.495196 0.002569 +vt 0.437500 0.750000 +vt 0.437500 0.812500 +vt 0.375000 0.812500 +vt 0.375000 0.750000 +vt 0.437500 0.062500 +vt 0.437500 0.125000 +vt 0.375000 0.125000 +vt 0.375000 0.062500 +vt 0.437500 0.875000 +vt 0.437500 0.937500 +vt 0.375000 0.937500 +vt 0.375000 0.875000 +vt 0.437500 0.187500 +vt 0.437500 0.250000 +vt 0.375000 0.250000 +vt 0.375000 0.187500 +vt 0.437500 0.312500 +vt 0.437500 0.375000 +vt 0.375000 0.375000 +vt 0.375000 0.312500 +vt 0.437500 0.437500 +vt 0.437500 0.500000 +vt 0.375000 0.500000 +vt 0.375000 0.437500 +vt 0.437500 0.562500 +vt 0.437500 0.625000 +vt 0.375000 0.625000 +vt 0.375000 0.562500 +vt 0.437500 0.687500 +vt 0.375000 0.687500 +vt 0.312500 0.437500 +vt 0.312500 0.375000 +vt 0.312500 0.562500 +vt 0.312500 0.500000 +vt 0.312500 0.687500 +vt 0.312500 0.625000 +vt 0.312500 0.812500 +vt 0.312500 0.750000 +vt 0.312500 0.125000 +vt 0.312500 0.062500 +vt 0.312500 0.937500 +vt 0.312500 0.875000 +vt 0.312500 0.250000 +vt 0.312500 0.187500 +vt 0.312500 0.312500 +vt 0.250000 0.437500 +vt 0.250000 0.375000 +vt 0.250000 0.562500 +vt 0.250000 0.500000 +vt 0.250000 0.687500 +vt 0.250000 0.625000 +vt 0.250000 0.812500 +vt 0.250000 0.750000 +vt 0.250000 0.125000 +vt 0.250000 0.062500 +vt 0.250000 0.937500 +vt 0.250000 0.875000 +vt 0.250000 0.250000 +vt 0.250000 0.187500 +vt 0.250000 0.312500 +vt 0.187500 0.437500 +vt 0.187500 0.375000 +vt 0.187500 0.562500 +vt 0.187500 0.500000 +vt 0.187500 0.687500 +vt 0.187500 0.625000 +vt 0.187500 0.812500 +vt 0.187500 0.750000 +vt 0.187500 0.125000 +vt 0.187500 0.062500 +vt 0.187500 0.937500 +vt 0.187500 0.875000 +vt 0.187500 0.250000 +vt 0.187500 0.187500 +vt 0.187500 0.312500 +vt 0.125000 0.437500 +vt 0.125000 0.375000 +vt 0.125000 0.562500 +vt 0.125000 0.500000 +vt 0.125000 0.687500 +vt 0.125000 0.625000 +vt 0.125000 0.812500 +vt 0.125000 0.750000 +vt 0.125000 0.125000 +vt 0.125000 0.062500 +vt 0.125000 0.937500 +vt 0.125000 0.875000 +vt 0.125000 0.250000 +vt 0.125000 0.187500 +vt 0.125000 0.312500 +vt 0.062500 0.437500 +vt 0.062500 0.375000 +vt 0.062500 0.562500 +vt 0.062500 0.500000 +vt 0.062500 0.687500 +vt 0.062500 0.625000 +vt 0.062500 0.812500 +vt 0.062500 0.750000 +vt 0.062500 0.125000 +vt 0.062500 0.062500 +vt 0.062500 0.937500 +vt 0.062500 0.875000 +vt 0.062500 0.250000 +vt 0.062500 0.187500 +vt 0.062500 0.312500 +vt 0.000000 0.437500 +vt 0.000000 0.375000 +vt 0.000000 0.562500 +vt 0.000000 0.500000 +vt 0.000000 0.687500 +vt 0.000000 0.625000 +vt 0.000000 0.812500 +vt 0.000000 0.750000 +vt 0.000000 0.125000 +vt 0.000000 0.062500 +vt 0.000000 0.937500 +vt 0.000000 0.875000 +vt 0.000000 0.250000 +vt 0.000000 0.187500 +vt 0.000000 0.312500 +vt 1.000000 0.375000 +vt 1.000000 0.437500 +vt 0.937500 0.437500 +vt 0.937500 0.375000 +vt 1.000000 0.500000 +vt 1.000000 0.562500 +vt 0.937500 0.562500 +vt 0.937500 0.500000 +vt 1.000000 0.625000 +vt 1.000000 0.687500 +vt 0.937500 0.687500 +vt 0.937500 0.625000 +vt 1.000000 0.750000 +vt 1.000000 0.812500 +vt 0.937500 0.812500 +vt 0.937500 0.750000 +vt 1.000000 0.062500 +vt 1.000000 0.125000 +vt 0.937500 0.125000 +vt 0.937500 0.062500 +vt 1.000000 0.875000 +vt 1.000000 0.937500 +vt 0.937500 0.937500 +vt 0.937500 0.875000 +vt 1.000000 0.187500 +vt 1.000000 0.250000 +vt 0.937500 0.250000 +vt 0.937500 0.187500 +vt 1.000000 0.312500 +vt 0.937500 0.312500 +vt 0.875000 0.437500 +vt 0.875000 0.375000 +vt 0.875000 0.562500 +vt 0.875000 0.500000 +vt 0.875000 0.687500 +vt 0.875000 0.625000 +vt 0.875000 0.812500 +vt 0.875000 0.750000 +vt 0.875000 0.125000 +vt 0.875000 0.062500 +vt 0.875000 0.937500 +vt 0.875000 0.875000 +vt 0.875000 0.250000 +vt 0.875000 0.187500 +vt 0.875000 0.312500 +vt 0.812500 0.437500 +vt 0.812500 0.375000 +vt 0.812500 0.562500 +vt 0.812500 0.500000 +vt 0.812500 0.687500 +vt 0.812500 0.625000 +vt 0.812500 0.812500 +vt 0.812500 0.750000 +vt 0.812500 0.125000 +vt 0.812500 0.062500 +vt 0.812500 0.937500 +vt 0.812500 0.875000 +vt 0.812500 0.250000 +vt 0.812500 0.187500 +vt 0.812500 0.312500 +vt 0.750000 0.437500 +vt 0.750000 0.375000 +vt 0.750000 0.562500 +vt 0.750000 0.500000 +vt 0.750000 0.687500 +vt 0.750000 0.625000 +vt 0.750000 0.812500 +vt 0.750000 0.750000 +vt 0.750000 0.125000 +vt 0.750000 0.062500 +vt 0.750000 0.937500 +vt 0.750000 0.875000 +vt 0.750000 0.250000 +vt 0.750000 0.187500 +vt 0.750000 0.312500 +vt 0.687500 0.437500 +vt 0.687500 0.375000 +vt 0.687500 0.562500 +vt 0.687500 0.500000 +vt 0.687500 0.687500 +vt 0.687500 0.625000 +vt 0.687500 0.812500 +vt 0.687500 0.750000 +vt 0.687500 0.125000 +vt 0.687500 0.062500 +vt 0.687500 0.937500 +vt 0.687500 0.875000 +vt 0.687500 0.250000 +vt 0.687500 0.187500 +vt 0.687500 0.312500 +vt 0.625000 0.437500 +vt 0.625000 0.375000 +vt 0.625000 0.562500 +vt 0.625000 0.500000 +vt 0.625000 0.687500 +vt 0.625000 0.625000 +vt 0.625000 0.812500 +vt 0.625000 0.750000 +vt 0.625000 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.937500 +vt 0.625000 0.875000 +vt 0.625000 0.250000 +vt 0.625000 0.187500 +vt 0.625000 0.312500 +vt 0.562500 0.437500 +vt 0.562500 0.375000 +vt 0.562500 0.562500 +vt 0.562500 0.500000 +vt 0.562500 0.687500 +vt 0.562500 0.625000 +vt 0.562500 0.812500 +vt 0.562500 0.750000 +vt 0.562500 0.125000 +vt 0.562500 0.062500 +vt 0.562500 0.937500 +vt 0.562500 0.875000 +vt 0.562500 0.250000 +vt 0.562500 0.187500 +vt 0.562500 0.312500 +vt 0.500000 0.437500 +vt 0.500000 0.375000 +vt 0.500000 0.562500 +vt 0.500000 0.500000 +vt 0.500000 0.687500 +vt 0.500000 0.625000 +vt 0.500000 0.812500 +vt 0.500000 0.750000 +vt 0.500000 0.125000 +vt 0.500000 0.062500 +vt 0.500000 0.937500 +vt 0.500000 0.875000 +vt 0.500000 0.250000 +vt 0.500000 0.187500 +vt 0.500000 0.312500 +vt 0.437500 0.000000 +vt 0.375000 0.000000 +vt 0.312500 0.000000 +vt 0.250000 0.000000 +vt 0.187500 0.000000 +vt 0.125000 0.000000 +vt 0.062500 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 0.937500 0.000000 +vt 0.875000 0.000000 +vt 0.812500 0.000000 +vt 0.750000 0.000000 +vt 0.687500 0.000000 +vt 0.625000 0.000000 +vt 0.562500 0.000000 +vt 0.500000 0.000000 +vt 0.500000 1.000000 +vt 0.437500 1.000000 +vt 0.562500 1.000000 +vt 0.625000 1.000000 +vt 0.687500 1.000000 +vt 0.750000 1.000000 +vt 0.812500 1.000000 +vt 0.875000 1.000000 +vt 0.937500 1.000000 +vt 1.000000 1.000000 +vt 0.062500 1.000000 +vt -0.000000 1.000000 +vt 0.125000 1.000000 +vt 0.187500 1.000000 +vt 0.250000 1.000000 +vt 0.312500 1.000000 +vt 0.375000 1.000000 +vt 0.031303 0.999906 +vt 0.037377 0.999307 +vt 0.043218 0.997535 +vt 0.048601 0.994658 +vt 0.053319 0.990786 +vt 0.057192 0.986068 +vt 0.060069 0.980685 +vt 0.061841 0.974844 +vt 0.062439 0.968769 +vt 0.061841 0.962695 +vt 0.060069 0.956854 +vt 0.057192 0.951471 +vt 0.053319 0.946753 +vt 0.048601 0.942881 +vt 0.043218 0.940004 +vt 0.037377 0.938232 +vt 0.031303 0.937633 +vt 0.025229 0.938232 +vt 0.019388 0.940004 +vt 0.014005 0.942881 +vt 0.009286 0.946753 +vt 0.005414 0.951471 +vt 0.002537 0.956854 +vt 0.000765 0.962695 +vt 0.000167 0.968770 +vt 0.000765 0.974844 +vt 0.002537 0.980685 +vt 0.005414 0.986068 +vt 0.009286 0.990786 +vt 0.014005 0.994658 +vt 0.019388 0.997535 +vt 0.025229 0.999307 +vn -0.710100 0.704000 0.000000 +vn -0.559800 0.828600 0.000000 +vn -0.549000 0.828600 -0.109200 +vn -0.696500 0.704000 -0.138500 +vn -0.182000 -0.983300 0.000000 +vn -0.387900 -0.921700 0.000000 +vn -0.380400 -0.921700 -0.075700 +vn -0.178400 -0.983300 -0.035500 +vn -0.387900 0.921700 0.000000 +vn -0.182000 0.983300 0.000000 +vn -0.178400 0.983300 -0.035500 +vn -0.380400 0.921700 -0.075700 +vn -0.559800 -0.828600 0.000000 +vn -0.710100 -0.704000 0.000000 +vn -0.696500 -0.704000 -0.138500 +vn -0.549000 -0.828600 -0.109200 +vn -0.833300 -0.552800 0.000000 +vn -0.924700 -0.380500 0.000000 +vn -0.907000 -0.380500 -0.180400 +vn -0.817300 -0.552800 -0.162600 +vn -0.981000 -0.193900 0.000000 +vn -1.000000 0.000000 0.000000 +vn -0.980800 0.000000 -0.195100 +vn -0.962200 -0.193900 -0.191400 +vn -0.981000 0.193900 0.000000 +vn -0.924700 0.380500 0.000000 +vn -0.907000 0.380500 -0.180400 +vn -0.962200 0.193900 -0.191400 +vn -0.833300 0.552800 0.000000 +vn -0.817300 0.552800 -0.162600 +vn -0.906300 -0.193900 -0.375400 +vn -0.854400 -0.380500 -0.353900 +vn -0.906300 0.193900 -0.375400 +vn -0.923900 0.000000 -0.382700 +vn -0.769900 0.552800 -0.318900 +vn -0.854400 0.380500 -0.353900 +vn -0.517100 0.828600 -0.214200 +vn -0.656100 0.704000 -0.271700 +vn -0.358300 -0.921700 -0.148400 +vn -0.168100 -0.983300 -0.069600 +vn -0.168100 0.983300 -0.069600 +vn -0.358300 0.921700 -0.148400 +vn -0.656100 -0.704000 -0.271700 +vn -0.517100 -0.828600 -0.214200 +vn -0.769900 -0.552800 -0.318900 +vn -0.815700 -0.193900 -0.545000 +vn -0.768900 -0.380500 -0.513700 +vn -0.815700 0.193900 -0.545000 +vn -0.831400 0.000000 -0.555600 +vn -0.692900 0.552800 -0.463000 +vn -0.768900 0.380500 -0.513700 +vn -0.465400 0.828600 -0.311000 +vn -0.590400 0.704000 -0.394500 +vn -0.322500 -0.921700 -0.215500 +vn -0.151300 -0.983300 -0.101100 +vn -0.151300 0.983300 -0.101100 +vn -0.322500 0.921700 -0.215500 +vn -0.590400 -0.704000 -0.394500 +vn -0.465400 -0.828600 -0.311000 +vn -0.692900 -0.552800 -0.463000 +vn -0.693700 -0.193900 -0.693700 +vn -0.653900 -0.380500 -0.653900 +vn -0.693700 0.193900 -0.693700 +vn -0.707100 0.000000 -0.707100 +vn -0.589300 0.552800 -0.589300 +vn -0.653900 0.380500 -0.653900 +vn -0.395800 0.828600 -0.395800 +vn -0.502100 0.704000 -0.502100 +vn -0.274300 -0.921700 -0.274300 +vn -0.128600 -0.983300 -0.128600 +vn -0.128600 0.983300 -0.128600 +vn -0.274300 0.921700 -0.274300 +vn -0.502100 -0.704000 -0.502100 +vn -0.395800 -0.828600 -0.395800 +vn -0.589300 -0.552800 -0.589300 +vn -0.545000 -0.193900 -0.815700 +vn -0.513700 -0.380500 -0.768900 +vn -0.545000 0.193900 -0.815700 +vn -0.555600 0.000000 -0.831400 +vn -0.463000 0.552800 -0.692900 +vn -0.513700 0.380500 -0.768900 +vn -0.311000 0.828600 -0.465400 +vn -0.394500 0.704000 -0.590400 +vn -0.215500 -0.921700 -0.322500 +vn -0.101100 -0.983300 -0.151300 +vn -0.101100 0.983300 -0.151300 +vn -0.215500 0.921700 -0.322500 +vn -0.394500 -0.704000 -0.590400 +vn -0.311000 -0.828600 -0.465400 +vn -0.463000 -0.552800 -0.692900 +vn -0.375400 -0.193900 -0.906300 +vn -0.353900 -0.380500 -0.854400 +vn -0.375400 0.193900 -0.906300 +vn -0.382700 0.000000 -0.923900 +vn -0.318900 0.552800 -0.769900 +vn -0.353900 0.380500 -0.854400 +vn -0.214200 0.828600 -0.517100 +vn -0.271700 0.704000 -0.656100 +vn -0.148400 -0.921700 -0.358300 +vn -0.069600 -0.983300 -0.168100 +vn -0.069600 0.983300 -0.168100 +vn -0.148400 0.921700 -0.358300 +vn -0.271700 -0.704000 -0.656100 +vn -0.214200 -0.828600 -0.517100 +vn -0.318900 -0.552800 -0.769900 +vn -0.191400 -0.193900 -0.962200 +vn -0.180400 -0.380500 -0.907000 +vn -0.191400 0.193900 -0.962200 +vn -0.195100 0.000000 -0.980800 +vn -0.162600 0.552800 -0.817300 +vn -0.180400 0.380500 -0.907000 +vn -0.109200 0.828600 -0.549000 +vn -0.138500 0.704000 -0.696500 +vn -0.075700 -0.921700 -0.380400 +vn -0.035500 -0.983300 -0.178400 +vn -0.035500 0.983300 -0.178400 +vn -0.075700 0.921700 -0.380400 +vn -0.138500 -0.704000 -0.696500 +vn -0.109200 -0.828600 -0.549000 +vn -0.162600 -0.552800 -0.817300 +vn 0.000000 -0.193900 -0.981000 +vn 0.000000 -0.380500 -0.924700 +vn 0.000000 0.193900 -0.981000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.552800 -0.833300 +vn 0.000000 0.380500 -0.924700 +vn 0.000000 0.828600 -0.559800 +vn 0.000000 0.704000 -0.710100 +vn 0.000000 -0.921700 -0.387900 +vn 0.000000 -0.983300 -0.182000 +vn 0.000000 0.983300 -0.182000 +vn 0.000000 0.921700 -0.387900 +vn 0.000000 -0.704000 -0.710100 +vn 0.000000 -0.828600 -0.559800 +vn 0.000000 -0.552800 -0.833300 +vn 0.191400 -0.193900 -0.962200 +vn 0.180400 -0.380500 -0.907000 +vn 0.191400 0.193900 -0.962200 +vn 0.195100 0.000000 -0.980800 +vn 0.162600 0.552800 -0.817300 +vn 0.180400 0.380500 -0.907000 +vn 0.109200 0.828600 -0.549000 +vn 0.138500 0.704000 -0.696500 +vn 0.075700 -0.921700 -0.380400 +vn 0.035500 -0.983300 -0.178400 +vn 0.035500 0.983300 -0.178400 +vn 0.075700 0.921700 -0.380400 +vn 0.138500 -0.704000 -0.696500 +vn 0.109200 -0.828600 -0.549000 +vn 0.162600 -0.552800 -0.817300 +vn 0.375400 -0.193900 -0.906300 +vn 0.353900 -0.380500 -0.854400 +vn 0.375400 0.193900 -0.906300 +vn 0.382700 0.000000 -0.923900 +vn 0.318900 0.552800 -0.769900 +vn 0.353900 0.380500 -0.854400 +vn 0.214200 0.828600 -0.517100 +vn 0.271700 0.704000 -0.656100 +vn 0.148400 -0.921700 -0.358300 +vn 0.069600 -0.983300 -0.168100 +vn 0.069600 0.983300 -0.168100 +vn 0.148400 0.921700 -0.358300 +vn 0.271700 -0.704000 -0.656100 +vn 0.214200 -0.828600 -0.517100 +vn 0.318900 -0.552800 -0.769900 +vn 0.545000 -0.193900 -0.815700 +vn 0.513700 -0.380500 -0.768900 +vn 0.545000 0.193900 -0.815700 +vn 0.555600 0.000000 -0.831400 +vn 0.463000 0.552800 -0.692900 +vn 0.513700 0.380500 -0.768900 +vn 0.311000 0.828600 -0.465400 +vn 0.394500 0.704000 -0.590400 +vn 0.215500 -0.921700 -0.322500 +vn 0.101100 -0.983300 -0.151300 +vn 0.101100 0.983300 -0.151300 +vn 0.215500 0.921700 -0.322500 +vn 0.394500 -0.704000 -0.590400 +vn 0.311000 -0.828600 -0.465400 +vn 0.463000 -0.552800 -0.692900 +vn 0.693700 -0.193900 -0.693700 +vn 0.653900 -0.380500 -0.653900 +vn 0.693700 0.193900 -0.693700 +vn 0.707100 0.000000 -0.707100 +vn 0.589300 0.552800 -0.589300 +vn 0.653900 0.380500 -0.653900 +vn 0.395800 0.828600 -0.395800 +vn 0.502100 0.704000 -0.502100 +vn 0.274300 -0.921700 -0.274300 +vn 0.128600 -0.983300 -0.128600 +vn 0.128600 0.983300 -0.128600 +vn 0.274300 0.921700 -0.274300 +vn 0.502100 -0.704000 -0.502100 +vn 0.395800 -0.828600 -0.395800 +vn 0.589300 -0.552800 -0.589300 +vn 0.815700 -0.193900 -0.545000 +vn 0.768900 -0.380500 -0.513700 +vn 0.815700 0.193900 -0.545000 +vn 0.831400 0.000000 -0.555600 +vn 0.692900 0.552800 -0.463000 +vn 0.768900 0.380500 -0.513700 +vn 0.465400 0.828600 -0.311000 +vn 0.590400 0.704000 -0.394500 +vn 0.322500 -0.921700 -0.215500 +vn 0.151300 -0.983300 -0.101100 +vn 0.151300 0.983300 -0.101100 +vn 0.322500 0.921700 -0.215500 +vn 0.590400 -0.704000 -0.394500 +vn 0.465400 -0.828600 -0.311000 +vn 0.692900 -0.552800 -0.463000 +vn 0.906300 -0.193900 -0.375400 +vn 0.854400 -0.380500 -0.353900 +vn 0.906300 0.193900 -0.375400 +vn 0.923900 0.000000 -0.382700 +vn 0.769900 0.552800 -0.318900 +vn 0.854400 0.380500 -0.353900 +vn 0.517100 0.828600 -0.214200 +vn 0.656100 0.704000 -0.271700 +vn 0.358300 -0.921700 -0.148400 +vn 0.168100 -0.983300 -0.069600 +vn 0.168100 0.983300 -0.069600 +vn 0.358300 0.921700 -0.148400 +vn 0.656100 -0.704000 -0.271700 +vn 0.517100 -0.828600 -0.214200 +vn 0.769900 -0.552800 -0.318900 +vn 0.962200 -0.193900 -0.191400 +vn 0.907000 -0.380500 -0.180400 +vn 0.962200 0.193900 -0.191400 +vn 0.980800 0.000000 -0.195100 +vn 0.817300 0.552800 -0.162600 +vn 0.907000 0.380500 -0.180400 +vn 0.549000 0.828600 -0.109200 +vn 0.696500 0.704000 -0.138500 +vn 0.380400 -0.921700 -0.075700 +vn 0.178400 -0.983300 -0.035500 +vn 0.178400 0.983300 -0.035500 +vn 0.380400 0.921700 -0.075700 +vn 0.696500 -0.704000 -0.138500 +vn 0.549000 -0.828600 -0.109200 +vn 0.817300 -0.552800 -0.162600 +vn 0.981000 -0.193900 0.000000 +vn 0.924700 -0.380500 0.000000 +vn 0.981000 0.193900 0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.833300 0.552800 0.000000 +vn 0.924700 0.380500 0.000000 +vn 0.559800 0.828600 0.000000 +vn 0.710100 0.704000 0.000000 +vn 0.387900 -0.921700 0.000000 +vn 0.182000 -0.983300 0.000000 +vn 0.182000 0.983300 0.000000 +vn 0.387900 0.921700 0.000000 +vn 0.710100 -0.704000 0.000000 +vn 0.559800 -0.828600 0.000000 +vn 0.833300 -0.552800 0.000000 +vn 0.962200 -0.193900 0.191400 +vn 0.907000 -0.380500 0.180400 +vn 0.962200 0.193900 0.191400 +vn 0.980800 0.000000 0.195100 +vn 0.817300 0.552800 0.162600 +vn 0.907000 0.380500 0.180400 +vn 0.549000 0.828600 0.109200 +vn 0.696500 0.704000 0.138500 +vn 0.380400 -0.921700 0.075700 +vn 0.178400 -0.983300 0.035500 +vn 0.178400 0.983300 0.035500 +vn 0.380400 0.921700 0.075700 +vn 0.696500 -0.704000 0.138500 +vn 0.549000 -0.828600 0.109200 +vn 0.817300 -0.552800 0.162600 +vn 0.906300 -0.193900 0.375400 +vn 0.854400 -0.380500 0.353900 +vn 0.906300 0.193900 0.375400 +vn 0.923900 0.000000 0.382700 +vn 0.769900 0.552800 0.318900 +vn 0.854400 0.380500 0.353900 +vn 0.517100 0.828600 0.214200 +vn 0.656100 0.704000 0.271700 +vn 0.358300 -0.921700 0.148400 +vn 0.168100 -0.983300 0.069600 +vn 0.168100 0.983300 0.069600 +vn 0.358300 0.921700 0.148400 +vn 0.656100 -0.704000 0.271700 +vn 0.517100 -0.828600 0.214200 +vn 0.769900 -0.552800 0.318900 +vn 0.815700 -0.193900 0.545000 +vn 0.768900 -0.380500 0.513700 +vn 0.815700 0.193900 0.545000 +vn 0.831400 0.000000 0.555600 +vn 0.692900 0.552800 0.463000 +vn 0.768900 0.380500 0.513700 +vn 0.465400 0.828600 0.311000 +vn 0.590400 0.704000 0.394500 +vn 0.322500 -0.921700 0.215500 +vn 0.151300 -0.983300 0.101100 +vn 0.151300 0.983300 0.101100 +vn 0.322500 0.921700 0.215500 +vn 0.590400 -0.704000 0.394500 +vn 0.465400 -0.828600 0.311000 +vn 0.692900 -0.552800 0.463000 +vn 0.693700 -0.193900 0.693700 +vn 0.653900 -0.380500 0.653900 +vn 0.693700 0.193900 0.693700 +vn 0.707100 0.000000 0.707100 +vn 0.589300 0.552800 0.589300 +vn 0.653900 0.380500 0.653900 +vn 0.395800 0.828600 0.395800 +vn 0.502100 0.704000 0.502100 +vn 0.274300 -0.921700 0.274300 +vn 0.128600 -0.983300 0.128600 +vn 0.128600 0.983300 0.128600 +vn 0.274300 0.921700 0.274300 +vn 0.502100 -0.704000 0.502100 +vn 0.395800 -0.828600 0.395800 +vn 0.589300 -0.552800 0.589300 +vn 0.545000 -0.193900 0.815700 +vn 0.513700 -0.380500 0.768900 +vn 0.545000 0.193900 0.815700 +vn 0.555600 0.000000 0.831400 +vn 0.463000 0.552800 0.692900 +vn 0.513700 0.380500 0.768900 +vn 0.311000 0.828600 0.465400 +vn 0.394500 0.704000 0.590400 +vn 0.215500 -0.921700 0.322500 +vn 0.101100 -0.983300 0.151300 +vn 0.101100 0.983300 0.151300 +vn 0.215500 0.921700 0.322500 +vn 0.394500 -0.704000 0.590400 +vn 0.311000 -0.828600 0.465400 +vn 0.463000 -0.552800 0.692900 +vn 0.375400 -0.193900 0.906300 +vn 0.353900 -0.380500 0.854400 +vn 0.375400 0.193900 0.906300 +vn 0.382700 0.000000 0.923900 +vn 0.318900 0.552800 0.769900 +vn 0.353900 0.380500 0.854400 +vn 0.214200 0.828600 0.517100 +vn 0.271700 0.704000 0.656100 +vn 0.148400 -0.921700 0.358300 +vn 0.069600 -0.983300 0.168100 +vn 0.069600 0.983300 0.168100 +vn 0.148400 0.921700 0.358300 +vn 0.271700 -0.704000 0.656100 +vn 0.214200 -0.828600 0.517100 +vn 0.318900 -0.552800 0.769900 +vn 0.191400 -0.193900 0.962200 +vn 0.180400 -0.380500 0.907000 +vn 0.191400 0.193900 0.962200 +vn 0.195100 0.000000 0.980800 +vn 0.162600 0.552800 0.817300 +vn 0.180400 0.380500 0.907000 +vn 0.109200 0.828600 0.549000 +vn 0.138500 0.704000 0.696500 +vn 0.075700 -0.921700 0.380400 +vn 0.035500 -0.983300 0.178400 +vn 0.035500 0.983300 0.178400 +vn 0.075700 0.921700 0.380400 +vn 0.138500 -0.704000 0.696500 +vn 0.109200 -0.828600 0.549000 +vn 0.162600 -0.552800 0.817300 +vn 0.000000 -0.193900 0.981000 +vn 0.000000 -0.380500 0.924700 +vn 0.000000 0.193900 0.981000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.552800 0.833300 +vn 0.000000 0.380500 0.924700 +vn 0.000000 0.828600 0.559800 +vn 0.000000 0.704000 0.710100 +vn 0.000000 -0.921700 0.387900 +vn 0.000000 -0.983300 0.182000 +vn 0.000000 0.983300 0.182000 +vn 0.000000 0.921700 0.387900 +vn 0.000000 -0.704000 0.710100 +vn 0.000000 -0.828600 0.559800 +vn 0.000000 -0.552800 0.833300 +vn -0.191400 -0.193900 0.962200 +vn -0.180400 -0.380500 0.907000 +vn -0.191400 0.193900 0.962200 +vn -0.195100 0.000000 0.980800 +vn -0.162600 0.552800 0.817300 +vn -0.180400 0.380500 0.907000 +vn -0.109200 0.828600 0.549000 +vn -0.138500 0.704000 0.696500 +vn -0.075700 -0.921700 0.380400 +vn -0.035500 -0.983300 0.178400 +vn -0.035500 0.983300 0.178400 +vn -0.075700 0.921700 0.380400 +vn -0.138500 -0.704000 0.696500 +vn -0.109200 -0.828600 0.549000 +vn -0.162600 -0.552800 0.817300 +vn -0.375400 -0.193900 0.906300 +vn -0.353900 -0.380500 0.854400 +vn -0.375400 0.193900 0.906300 +vn -0.382700 0.000000 0.923900 +vn -0.318900 0.552800 0.769900 +vn -0.353900 0.380500 0.854400 +vn -0.214200 0.828600 0.517100 +vn -0.271700 0.704000 0.656100 +vn -0.148400 -0.921700 0.358300 +vn -0.069600 -0.983300 0.168100 +vn -0.069600 0.983300 0.168100 +vn -0.148400 0.921700 0.358300 +vn -0.271700 -0.704000 0.656100 +vn -0.214200 -0.828600 0.517100 +vn -0.318900 -0.552800 0.769900 +vn -0.545000 -0.193900 0.815700 +vn -0.513700 -0.380500 0.768900 +vn -0.545000 0.193900 0.815700 +vn -0.555600 0.000000 0.831400 +vn -0.463000 0.552800 0.692900 +vn -0.513700 0.380500 0.768900 +vn -0.311000 0.828600 0.465400 +vn -0.394500 0.704000 0.590400 +vn -0.215500 -0.921700 0.322500 +vn -0.101100 -0.983300 0.151300 +vn -0.101100 0.983300 0.151300 +vn -0.215500 0.921700 0.322500 +vn -0.394500 -0.704000 0.590400 +vn -0.311000 -0.828600 0.465400 +vn -0.463000 -0.552800 0.692900 +vn -0.693700 -0.193900 0.693700 +vn -0.653900 -0.380500 0.653900 +vn -0.693700 0.193900 0.693700 +vn -0.707100 0.000000 0.707100 +vn -0.589300 0.552800 0.589300 +vn -0.653900 0.380500 0.653900 +vn -0.395800 0.828600 0.395800 +vn -0.502100 0.704000 0.502100 +vn -0.274300 -0.921700 0.274300 +vn -0.128600 -0.983300 0.128600 +vn -0.128600 0.983300 0.128600 +vn -0.274300 0.921700 0.274300 +vn -0.502100 -0.704000 0.502100 +vn -0.395800 -0.828600 0.395800 +vn -0.589300 -0.552800 0.589300 +vn -0.815700 -0.193900 0.545000 +vn -0.768900 -0.380500 0.513700 +vn -0.815700 0.193900 0.545000 +vn -0.831400 0.000000 0.555600 +vn -0.692900 0.552800 0.463000 +vn -0.768900 0.380500 0.513700 +vn -0.465400 0.828600 0.311000 +vn -0.590400 0.704000 0.394500 +vn -0.322500 -0.921700 0.215500 +vn -0.151300 -0.983300 0.101100 +vn -0.151300 0.983300 0.101100 +vn -0.322500 0.921700 0.215500 +vn -0.590400 -0.704000 0.394500 +vn -0.465400 -0.828600 0.311000 +vn -0.692900 -0.552800 0.463000 +vn -0.906300 -0.193900 0.375400 +vn -0.854400 -0.380500 0.353900 +vn -0.906300 0.193900 0.375400 +vn -0.923900 0.000000 0.382700 +vn -0.769900 0.552800 0.318900 +vn -0.854400 0.380500 0.353900 +vn -0.517100 0.828600 0.214200 +vn -0.656100 0.704000 0.271700 +vn -0.358300 -0.921700 0.148400 +vn -0.168100 -0.983300 0.069600 +vn -0.168100 0.983300 0.069600 +vn -0.358300 0.921700 0.148400 +vn -0.656100 -0.704000 0.271700 +vn -0.517100 -0.828600 0.214200 +vn -0.769900 -0.552800 0.318900 +vn -0.962200 -0.193900 0.191400 +vn -0.907000 -0.380500 0.180400 +vn -0.962200 0.193900 0.191400 +vn -0.980800 0.000000 0.195100 +vn -0.817300 0.552800 0.162600 +vn -0.907000 0.380500 0.180400 +vn -0.549000 0.828600 0.109200 +vn -0.696500 0.704000 0.138500 +vn -0.380400 -0.921700 0.075700 +vn -0.178400 -0.983300 0.035500 +vn -0.178400 0.983300 0.035500 +vn -0.380400 0.921700 0.075700 +vn -0.696500 -0.704000 0.138500 +vn -0.549000 -0.828600 0.109200 +vn -0.817300 -0.552800 0.162600 +vn -0.030200 -0.999500 0.000000 +vn -0.029600 -0.999500 -0.005900 +vn -0.027900 -0.999500 -0.011500 +vn -0.025100 -0.999500 -0.016800 +vn -0.021300 -0.999500 -0.021300 +vn -0.016800 -0.999500 -0.025100 +vn -0.011500 -0.999500 -0.027900 +vn -0.005900 -0.999500 -0.029600 +vn 0.000000 -0.999500 -0.030200 +vn 0.005900 -0.999500 -0.029600 +vn 0.011500 -0.999500 -0.027900 +vn 0.016800 -0.999500 -0.025100 +vn 0.021300 -0.999500 -0.021300 +vn 0.025100 -0.999500 -0.016800 +vn 0.027900 -0.999500 -0.011500 +vn 0.029600 -0.999500 -0.005900 +vn 0.030200 -0.999500 0.000000 +vn 0.029600 -0.999500 0.005900 +vn 0.027900 -0.999500 0.011500 +vn 0.025100 -0.999500 0.016800 +vn 0.021300 -0.999500 0.021300 +vn 0.016800 -0.999500 0.025100 +vn 0.011500 -0.999500 0.027900 +vn 0.005900 -0.999500 0.029600 +vn 0.000000 -0.999500 0.030200 +vn -0.005900 -0.999500 0.029600 +vn -0.011500 -0.999500 0.027900 +vn -0.016800 -0.999500 0.025100 +vn -0.021300 -0.999500 0.021300 +vn -0.025100 -0.999500 0.016800 +vn -0.027900 -0.999500 0.011500 +vn -0.029600 -0.999500 0.005900 +vn -0.029600 0.999500 0.005900 +vn -0.030200 0.999500 0.000000 +vn -0.027900 0.999500 0.011500 +vn -0.025100 0.999500 0.016800 +vn -0.021300 0.999500 0.021300 +vn -0.016800 0.999500 0.025100 +vn -0.011500 0.999500 0.027900 +vn -0.005900 0.999500 0.029600 +vn 0.000000 0.999500 0.030200 +vn 0.005900 0.999500 0.029600 +vn 0.011500 0.999500 0.027900 +vn 0.016800 0.999500 0.025100 +vn 0.021300 0.999500 0.021300 +vn 0.025100 0.999500 0.016800 +vn 0.027900 0.999500 0.011500 +vn 0.029600 0.999500 0.005900 +vn 0.030200 0.999500 0.000000 +vn 0.029600 0.999500 -0.005900 +vn 0.027900 0.999500 -0.011500 +vn 0.025100 0.999500 -0.016800 +vn 0.021300 0.999500 -0.021300 +vn 0.016800 0.999500 -0.025100 +vn 0.011500 0.999500 -0.027900 +vn 0.005900 0.999500 -0.029600 +vn 0.000000 0.999500 -0.030200 +vn -0.005900 0.999500 -0.029600 +vn -0.011500 0.999500 -0.027900 +vn -0.016800 0.999500 -0.025100 +vn -0.021300 0.999500 -0.021300 +vn -0.025100 0.999500 -0.016800 +vn -0.027900 0.999500 -0.011500 +vn -0.029600 0.999500 -0.005900 +s 1 +f 4/1/1 3/2/2 18/3/3 19/4/4 +f 15/5/5 14/6/6 29/7/7 30/8/8 +f 2/9/9 1/10/10 16/11/11 17/12/12 +f 13/13/13 12/14/14 27/15/15 28/16/16 +f 11/17/17 10/18/18 25/19/19 26/20/20 +f 9/21/21 8/22/22 23/23/23 24/24/24 +f 7/25/25 6/26/26 21/27/27 22/28/28 +f 5/29/29 4/1/1 19/4/4 20/30/30 +f 3/2/2 2/9/9 17/12/12 18/3/3 +f 14/6/6 13/13/13 28/16/16 29/7/7 +f 12/14/14 11/17/17 26/20/20 27/15/15 +f 10/18/18 9/21/21 24/24/24 25/19/19 +f 8/22/22 7/25/25 22/28/28 23/23/23 +f 6/26/26 5/29/29 20/30/30 21/27/27 +f 25/19/19 24/24/24 39/31/31 40/32/32 +f 23/23/23 22/28/28 37/33/33 38/34/34 +f 21/27/27 20/30/30 35/35/35 36/36/36 +f 19/4/4 18/3/3 33/37/37 34/38/38 +f 30/8/8 29/7/7 44/39/39 45/40/40 +f 17/12/12 16/11/11 31/41/41 32/42/42 +f 28/16/16 27/15/15 42/43/43 43/44/44 +f 26/20/20 25/19/19 40/32/32 41/45/45 +f 24/24/24 23/23/23 38/34/34 39/31/31 +f 22/28/28 21/27/27 36/36/36 37/33/33 +f 20/30/30 19/4/4 34/38/38 35/35/35 +f 18/3/3 17/12/12 32/42/42 33/37/37 +f 29/7/7 28/16/16 43/44/44 44/39/39 +f 27/15/15 26/20/20 41/45/45 42/43/43 +f 40/32/32 39/31/31 54/46/46 55/47/47 +f 38/34/34 37/33/33 52/48/48 53/49/49 +f 36/36/36 35/35/35 50/50/50 51/51/51 +f 34/38/38 33/37/37 48/52/52 49/53/53 +f 45/40/40 44/39/39 59/54/54 60/55/55 +f 32/42/42 31/41/41 46/56/56 47/57/57 +f 43/44/44 42/43/43 57/58/58 58/59/59 +f 41/45/45 40/32/32 55/47/47 56/60/60 +f 39/31/31 38/34/34 53/49/49 54/46/46 +f 37/33/33 36/36/36 51/51/51 52/48/48 +f 35/35/35 34/38/38 49/53/53 50/50/50 +f 33/37/37 32/42/42 47/57/57 48/52/52 +f 44/39/39 43/44/44 58/59/59 59/54/54 +f 42/43/43 41/45/45 56/60/60 57/58/58 +f 55/47/47 54/46/46 69/61/61 70/62/62 +f 53/49/49 52/48/48 67/63/63 68/64/64 +f 51/51/51 50/50/50 65/65/65 66/66/66 +f 49/53/53 48/52/52 63/67/67 64/68/68 +f 60/55/55 59/54/54 74/69/69 75/70/70 +f 47/57/57 46/56/56 61/71/71 62/72/72 +f 58/59/59 57/58/58 72/73/73 73/74/74 +f 56/60/60 55/47/47 70/62/62 71/75/75 +f 54/46/46 53/49/49 68/64/64 69/61/61 +f 52/48/48 51/51/51 66/66/66 67/63/63 +f 50/50/50 49/53/53 64/68/68 65/65/65 +f 48/52/52 47/57/57 62/72/72 63/67/67 +f 59/54/54 58/59/59 73/74/74 74/69/69 +f 57/58/58 56/60/60 71/75/75 72/73/73 +f 70/62/62 69/61/61 84/76/76 85/77/77 +f 68/64/64 67/63/63 82/78/78 83/79/79 +f 66/66/66 65/65/65 80/80/80 81/81/81 +f 64/68/68 63/67/67 78/82/82 79/83/83 +f 75/70/70 74/69/69 89/84/84 90/85/85 +f 62/72/72 61/71/71 76/86/86 77/87/87 +f 73/74/74 72/73/73 87/88/88 88/89/89 +f 71/75/75 70/62/62 85/77/77 86/90/90 +f 69/61/61 68/64/64 83/79/79 84/76/76 +f 67/63/63 66/66/66 81/81/81 82/78/78 +f 65/65/65 64/68/68 79/83/83 80/80/80 +f 63/67/67 62/72/72 77/87/87 78/82/82 +f 74/69/69 73/74/74 88/89/89 89/84/84 +f 72/73/73 71/75/75 86/90/90 87/88/88 +f 85/77/77 84/76/76 99/91/91 100/92/92 +f 83/79/79 82/78/78 97/93/93 98/94/94 +f 81/81/81 80/80/80 95/95/95 96/96/96 +f 79/83/83 78/82/82 93/97/97 94/98/98 +f 90/85/85 89/84/84 104/99/99 105/100/100 +f 77/87/87 76/86/86 91/101/101 92/102/102 +f 88/89/89 87/88/88 102/103/103 103/104/104 +f 86/90/90 85/77/77 100/92/92 101/105/105 +f 84/76/76 83/79/79 98/94/94 99/91/91 +f 82/78/78 81/81/81 96/96/96 97/93/93 +f 80/80/80 79/83/83 94/98/98 95/95/95 +f 78/82/82 77/87/87 92/102/102 93/97/97 +f 89/84/84 88/89/89 103/104/104 104/99/99 +f 87/88/88 86/90/90 101/105/105 102/103/103 +f 100/92/92 99/91/91 114/106/106 115/107/107 +f 98/94/94 97/93/93 112/108/108 113/109/109 +f 96/96/96 95/95/95 110/110/110 111/111/111 +f 94/98/98 93/97/97 108/112/112 109/113/113 +f 105/100/100 104/99/99 119/114/114 120/115/115 +f 92/102/102 91/101/101 106/116/116 107/117/117 +f 103/104/104 102/103/103 117/118/118 118/119/119 +f 101/105/105 100/92/92 115/107/107 116/120/120 +f 99/91/91 98/94/94 113/109/109 114/106/106 +f 97/93/93 96/96/96 111/111/111 112/108/108 +f 95/95/95 94/98/98 109/113/113 110/110/110 +f 93/97/97 92/102/102 107/117/117 108/112/112 +f 104/99/99 103/104/104 118/119/119 119/114/114 +f 102/103/103 101/105/105 116/120/120 117/118/118 +f 115/121/107 114/122/106 129/123/121 130/124/122 +f 113/125/109 112/126/108 127/127/123 128/128/124 +f 111/129/111 110/130/110 125/131/125 126/132/126 +f 109/133/113 108/134/112 123/135/127 124/136/128 +f 120/137/115 119/138/114 134/139/129 135/140/130 +f 107/141/117 106/142/116 121/143/131 122/144/132 +f 118/145/119 117/146/118 132/147/133 133/148/134 +f 116/149/120 115/121/107 130/124/122 131/150/135 +f 114/122/106 113/125/109 128/128/124 129/123/121 +f 112/126/108 111/129/111 126/132/126 127/127/123 +f 110/130/110 109/133/113 124/136/128 125/131/125 +f 108/134/112 107/141/117 122/144/132 123/135/127 +f 119/138/114 118/145/119 133/148/134 134/139/129 +f 117/146/118 116/149/120 131/150/135 132/147/133 +f 130/124/122 129/123/121 144/151/136 145/152/137 +f 128/128/124 127/127/123 142/153/138 143/154/139 +f 126/132/126 125/131/125 140/155/140 141/156/141 +f 124/136/128 123/135/127 138/157/142 139/158/143 +f 135/140/130 134/139/129 149/159/144 150/160/145 +f 122/144/132 121/143/131 136/161/146 137/162/147 +f 133/148/134 132/147/133 147/163/148 148/164/149 +f 131/150/135 130/124/122 145/152/137 146/165/150 +f 129/123/121 128/128/124 143/154/139 144/151/136 +f 127/127/123 126/132/126 141/156/141 142/153/138 +f 125/131/125 124/136/128 139/158/143 140/155/140 +f 123/135/127 122/144/132 137/162/147 138/157/142 +f 134/139/129 133/148/134 148/164/149 149/159/144 +f 132/147/133 131/150/135 146/165/150 147/163/148 +f 145/152/137 144/151/136 159/166/151 160/167/152 +f 143/154/139 142/153/138 157/168/153 158/169/154 +f 141/156/141 140/155/140 155/170/155 156/171/156 +f 139/158/143 138/157/142 153/172/157 154/173/158 +f 150/160/145 149/159/144 164/174/159 165/175/160 +f 137/162/147 136/161/146 151/176/161 152/177/162 +f 148/164/149 147/163/148 162/178/163 163/179/164 +f 146/165/150 145/152/137 160/167/152 161/180/165 +f 144/151/136 143/154/139 158/169/154 159/166/151 +f 142/153/138 141/156/141 156/171/156 157/168/153 +f 140/155/140 139/158/143 154/173/158 155/170/155 +f 138/157/142 137/162/147 152/177/162 153/172/157 +f 149/159/144 148/164/149 163/179/164 164/174/159 +f 147/163/148 146/165/150 161/180/165 162/178/163 +f 160/167/152 159/166/151 174/181/166 175/182/167 +f 158/169/154 157/168/153 172/183/168 173/184/169 +f 156/171/156 155/170/155 170/185/170 171/186/171 +f 154/173/158 153/172/157 168/187/172 169/188/173 +f 165/175/160 164/174/159 179/189/174 180/190/175 +f 152/177/162 151/176/161 166/191/176 167/192/177 +f 163/179/164 162/178/163 177/193/178 178/194/179 +f 161/180/165 160/167/152 175/182/167 176/195/180 +f 159/166/151 158/169/154 173/184/169 174/181/166 +f 157/168/153 156/171/156 171/186/171 172/183/168 +f 155/170/155 154/173/158 169/188/173 170/185/170 +f 153/172/157 152/177/162 167/192/177 168/187/172 +f 164/174/159 163/179/164 178/194/179 179/189/174 +f 162/178/163 161/180/165 176/195/180 177/193/178 +f 175/182/167 174/181/166 189/196/181 190/197/182 +f 173/184/169 172/183/168 187/198/183 188/199/184 +f 171/186/171 170/185/170 185/200/185 186/201/186 +f 169/188/173 168/187/172 183/202/187 184/203/188 +f 180/190/175 179/189/174 194/204/189 195/205/190 +f 167/192/177 166/191/176 181/206/191 182/207/192 +f 178/194/179 177/193/178 192/208/193 193/209/194 +f 176/195/180 175/182/167 190/197/182 191/210/195 +f 174/181/166 173/184/169 188/199/184 189/196/181 +f 172/183/168 171/186/171 186/201/186 187/198/183 +f 170/185/170 169/188/173 184/203/188 185/200/185 +f 168/187/172 167/192/177 182/207/192 183/202/187 +f 179/189/174 178/194/179 193/209/194 194/204/189 +f 177/193/178 176/195/180 191/210/195 192/208/193 +f 190/197/182 189/196/181 204/211/196 205/212/197 +f 188/199/184 187/198/183 202/213/198 203/214/199 +f 186/201/186 185/200/185 200/215/200 201/216/201 +f 184/203/188 183/202/187 198/217/202 199/218/203 +f 195/205/190 194/204/189 209/219/204 210/220/205 +f 182/207/192 181/206/191 196/221/206 197/222/207 +f 193/209/194 192/208/193 207/223/208 208/224/209 +f 191/210/195 190/197/182 205/212/197 206/225/210 +f 189/196/181 188/199/184 203/214/199 204/211/196 +f 187/198/183 186/201/186 201/216/201 202/213/198 +f 185/200/185 184/203/188 199/218/203 200/215/200 +f 183/202/187 182/207/192 197/222/207 198/217/202 +f 194/204/189 193/209/194 208/224/209 209/219/204 +f 192/208/193 191/210/195 206/225/210 207/223/208 +f 205/212/197 204/211/196 219/226/211 220/227/212 +f 203/214/199 202/213/198 217/228/213 218/229/214 +f 201/216/201 200/215/200 215/230/215 216/231/216 +f 199/218/203 198/217/202 213/232/217 214/233/218 +f 210/220/205 209/219/204 224/234/219 225/235/220 +f 197/222/207 196/221/206 211/236/221 212/237/222 +f 208/224/209 207/223/208 222/238/223 223/239/224 +f 206/225/210 205/212/197 220/227/212 221/240/225 +f 204/211/196 203/214/199 218/229/214 219/226/211 +f 202/213/198 201/216/201 216/231/216 217/228/213 +f 200/215/200 199/218/203 214/233/218 215/230/215 +f 198/217/202 197/222/207 212/237/222 213/232/217 +f 209/219/204 208/224/209 223/239/224 224/234/219 +f 207/223/208 206/225/210 221/240/225 222/238/223 +f 220/227/212 219/226/211 234/241/226 235/242/227 +f 218/229/214 217/228/213 232/243/228 233/244/229 +f 216/231/216 215/230/215 230/245/230 231/246/231 +f 214/233/218 213/232/217 228/247/232 229/248/233 +f 225/235/220 224/234/219 239/249/234 240/250/235 +f 212/237/222 211/236/221 226/251/236 227/252/237 +f 223/239/224 222/238/223 237/253/238 238/254/239 +f 221/240/225 220/227/212 235/242/227 236/255/240 +f 219/226/211 218/229/214 233/244/229 234/241/226 +f 217/228/213 216/231/216 231/246/231 232/243/228 +f 215/230/215 214/233/218 229/248/233 230/245/230 +f 213/232/217 212/237/222 227/252/237 228/247/232 +f 224/234/219 223/239/224 238/254/239 239/249/234 +f 222/238/223 221/240/225 236/255/240 237/253/238 +f 235/242/227 234/241/226 249/21/241 250/18/242 +f 233/244/229 232/243/228 247/25/243 248/22/244 +f 231/246/231 230/245/230 245/29/245 246/26/246 +f 229/248/233 228/247/232 243/2/247 244/1/248 +f 240/250/235 239/249/234 254/6/249 255/5/250 +f 227/252/237 226/251/236 241/10/251 242/9/252 +f 238/254/239 237/253/238 252/14/253 253/13/254 +f 236/255/240 235/242/227 250/18/242 251/17/255 +f 234/241/226 233/244/229 248/22/244 249/21/241 +f 232/243/228 231/246/231 246/26/246 247/25/243 +f 230/245/230 229/248/233 244/1/248 245/29/245 +f 228/247/232 227/252/237 242/9/252 243/2/247 +f 239/249/234 238/254/239 253/13/254 254/6/249 +f 237/253/238 236/255/240 251/17/255 252/14/253 +f 250/18/242 249/21/241 264/24/256 265/19/257 +f 248/22/244 247/25/243 262/28/258 263/23/259 +f 246/26/246 245/29/245 260/30/260 261/27/261 +f 244/1/248 243/2/247 258/3/262 259/4/263 +f 255/5/250 254/6/249 269/7/264 270/8/265 +f 242/9/252 241/10/251 256/11/266 257/12/267 +f 253/13/254 252/14/253 267/15/268 268/16/269 +f 251/17/255 250/18/242 265/19/257 266/20/270 +f 249/21/241 248/22/244 263/23/259 264/24/256 +f 247/25/243 246/26/246 261/27/261 262/28/258 +f 245/29/245 244/1/248 259/4/263 260/30/260 +f 243/2/247 242/9/252 257/12/267 258/3/262 +f 254/6/249 253/13/254 268/16/269 269/7/264 +f 252/14/253 251/17/255 266/20/270 267/15/268 +f 265/19/257 264/24/256 279/31/271 280/32/272 +f 263/23/259 262/28/258 277/33/273 278/34/274 +f 261/27/261 260/30/260 275/35/275 276/36/276 +f 259/4/263 258/3/262 273/37/277 274/38/278 +f 270/8/265 269/7/264 284/39/279 285/40/280 +f 257/12/267 256/11/266 271/41/281 272/42/282 +f 268/16/269 267/15/268 282/43/283 283/44/284 +f 266/20/270 265/19/257 280/32/272 281/45/285 +f 264/24/256 263/23/259 278/34/274 279/31/271 +f 262/28/258 261/27/261 276/36/276 277/33/273 +f 260/30/260 259/4/263 274/38/278 275/35/275 +f 258/3/262 257/12/267 272/42/282 273/37/277 +f 269/7/264 268/16/269 283/44/284 284/39/279 +f 267/15/268 266/20/270 281/45/285 282/43/283 +f 280/32/272 279/31/271 294/46/286 295/47/287 +f 278/34/274 277/33/273 292/48/288 293/49/289 +f 276/36/276 275/35/275 290/50/290 291/51/291 +f 274/38/278 273/37/277 288/52/292 289/53/293 +f 285/40/280 284/39/279 299/54/294 300/55/295 +f 272/42/282 271/41/281 286/56/296 287/57/297 +f 283/44/284 282/43/283 297/58/298 298/59/299 +f 281/45/285 280/32/272 295/47/287 296/60/300 +f 279/31/271 278/34/274 293/49/289 294/46/286 +f 277/33/273 276/36/276 291/51/291 292/48/288 +f 275/35/275 274/38/278 289/53/293 290/50/290 +f 273/37/277 272/42/282 287/57/297 288/52/292 +f 284/39/279 283/44/284 298/59/299 299/54/294 +f 282/43/283 281/45/285 296/60/300 297/58/298 +f 295/47/287 294/46/286 309/61/301 310/62/302 +f 293/49/289 292/48/288 307/63/303 308/64/304 +f 291/51/291 290/50/290 305/65/305 306/66/306 +f 289/53/293 288/52/292 303/67/307 304/68/308 +f 300/55/295 299/54/294 314/69/309 315/70/310 +f 287/57/297 286/56/296 301/71/311 302/72/312 +f 298/59/299 297/58/298 312/73/313 313/74/314 +f 296/60/300 295/47/287 310/62/302 311/75/315 +f 294/46/286 293/49/289 308/64/304 309/61/301 +f 292/48/288 291/51/291 306/66/306 307/63/303 +f 290/50/290 289/53/293 304/68/308 305/65/305 +f 288/52/292 287/57/297 302/72/312 303/67/307 +f 299/54/294 298/59/299 313/74/314 314/69/309 +f 297/58/298 296/60/300 311/75/315 312/73/313 +f 310/62/302 309/61/301 324/76/316 325/77/317 +f 308/64/304 307/63/303 322/78/318 323/79/319 +f 306/66/306 305/65/305 320/80/320 321/81/321 +f 304/68/308 303/67/307 318/82/322 319/83/323 +f 315/70/310 314/69/309 329/84/324 330/85/325 +f 302/72/312 301/71/311 316/86/326 317/87/327 +f 313/74/314 312/73/313 327/88/328 328/89/329 +f 311/75/315 310/62/302 325/77/317 326/90/330 +f 309/61/301 308/64/304 323/79/319 324/76/316 +f 307/63/303 306/66/306 321/81/321 322/78/318 +f 305/65/305 304/68/308 319/83/323 320/80/320 +f 303/67/307 302/72/312 317/87/327 318/82/322 +f 314/69/309 313/74/314 328/89/329 329/84/324 +f 312/73/313 311/75/315 326/90/330 327/88/328 +f 325/77/317 324/76/316 339/91/331 340/92/332 +f 323/79/319 322/78/318 337/93/333 338/94/334 +f 321/81/321 320/80/320 335/95/335 336/96/336 +f 319/83/323 318/82/322 333/97/337 334/98/338 +f 330/85/325 329/84/324 344/99/339 345/100/340 +f 317/87/327 316/86/326 331/101/341 332/102/342 +f 328/89/329 327/88/328 342/103/343 343/104/344 +f 326/90/330 325/77/317 340/92/332 341/105/345 +f 324/76/316 323/79/319 338/94/334 339/91/331 +f 322/78/318 321/81/321 336/96/336 337/93/333 +f 320/80/320 319/83/323 334/98/338 335/95/335 +f 318/82/322 317/87/327 332/102/342 333/97/337 +f 329/84/324 328/89/329 343/104/344 344/99/339 +f 327/88/328 326/90/330 341/105/345 342/103/343 +f 340/92/332 339/91/331 354/106/346 355/107/347 +f 338/94/334 337/93/333 352/108/348 353/109/349 +f 336/96/336 335/95/335 350/110/350 351/111/351 +f 334/98/338 333/97/337 348/112/352 349/113/353 +f 345/100/340 344/99/339 359/114/354 360/115/355 +f 332/102/342 331/101/341 346/116/356 347/117/357 +f 343/104/344 342/103/343 357/118/358 358/119/359 +f 341/105/345 340/92/332 355/107/347 356/120/360 +f 339/91/331 338/94/334 353/109/349 354/106/346 +f 337/93/333 336/96/336 351/111/351 352/108/348 +f 335/95/335 334/98/338 349/113/353 350/110/350 +f 333/97/337 332/102/342 347/117/357 348/112/352 +f 344/99/339 343/104/344 358/119/359 359/114/354 +f 342/103/343 341/105/345 356/120/360 357/118/358 +f 355/121/347 354/122/346 369/123/361 370/124/362 +f 353/125/349 352/126/348 367/127/363 368/128/364 +f 351/129/351 350/130/350 365/131/365 366/132/366 +f 349/133/353 348/134/352 363/135/367 364/136/368 +f 360/137/355 359/138/354 374/139/369 375/140/370 +f 347/141/357 346/142/356 361/143/371 362/144/372 +f 358/145/359 357/146/358 372/147/373 373/148/374 +f 356/149/360 355/121/347 370/124/362 371/150/375 +f 354/122/346 353/125/349 368/128/364 369/123/361 +f 352/126/348 351/129/351 366/132/366 367/127/363 +f 350/130/350 349/133/353 364/136/368 365/131/365 +f 348/134/352 347/141/357 362/144/372 363/135/367 +f 359/138/354 358/145/359 373/148/374 374/139/369 +f 357/146/358 356/149/360 371/150/375 372/147/373 +f 370/124/362 369/123/361 384/151/376 385/152/377 +f 368/128/364 367/127/363 382/153/378 383/154/379 +f 366/132/366 365/131/365 380/155/380 381/156/381 +f 364/136/368 363/135/367 378/157/382 379/158/383 +f 375/140/370 374/139/369 389/159/384 390/160/385 +f 362/144/372 361/143/371 376/161/386 377/162/387 +f 373/148/374 372/147/373 387/163/388 388/164/389 +f 371/150/375 370/124/362 385/152/377 386/165/390 +f 369/123/361 368/128/364 383/154/379 384/151/376 +f 367/127/363 366/132/366 381/156/381 382/153/378 +f 365/131/365 364/136/368 379/158/383 380/155/380 +f 363/135/367 362/144/372 377/162/387 378/157/382 +f 374/139/369 373/148/374 388/164/389 389/159/384 +f 372/147/373 371/150/375 386/165/390 387/163/388 +f 385/152/377 384/151/376 399/166/391 400/167/392 +f 383/154/379 382/153/378 397/168/393 398/169/394 +f 381/156/381 380/155/380 395/170/395 396/171/396 +f 379/158/383 378/157/382 393/172/397 394/173/398 +f 390/160/385 389/159/384 404/174/399 405/175/400 +f 377/162/387 376/161/386 391/176/401 392/177/402 +f 388/164/389 387/163/388 402/178/403 403/179/404 +f 386/165/390 385/152/377 400/167/392 401/180/405 +f 384/151/376 383/154/379 398/169/394 399/166/391 +f 382/153/378 381/156/381 396/171/396 397/168/393 +f 380/155/380 379/158/383 394/173/398 395/170/395 +f 378/157/382 377/162/387 392/177/402 393/172/397 +f 389/159/384 388/164/389 403/179/404 404/174/399 +f 387/163/388 386/165/390 401/180/405 402/178/403 +f 400/167/392 399/166/391 414/181/406 415/182/407 +f 398/169/394 397/168/393 412/183/408 413/184/409 +f 396/171/396 395/170/395 410/185/410 411/186/411 +f 394/173/398 393/172/397 408/187/412 409/188/413 +f 405/175/400 404/174/399 419/189/414 420/190/415 +f 392/177/402 391/176/401 406/191/416 407/192/417 +f 403/179/404 402/178/403 417/193/418 418/194/419 +f 401/180/405 400/167/392 415/182/407 416/195/420 +f 399/166/391 398/169/394 413/184/409 414/181/406 +f 397/168/393 396/171/396 411/186/411 412/183/408 +f 395/170/395 394/173/398 409/188/413 410/185/410 +f 393/172/397 392/177/402 407/192/417 408/187/412 +f 404/174/399 403/179/404 418/194/419 419/189/414 +f 402/178/403 401/180/405 416/195/420 417/193/418 +f 415/182/407 414/181/406 429/196/421 430/197/422 +f 413/184/409 412/183/408 427/198/423 428/199/424 +f 411/186/411 410/185/410 425/200/425 426/201/426 +f 409/188/413 408/187/412 423/202/427 424/203/428 +f 420/190/415 419/189/414 434/204/429 435/205/430 +f 407/192/417 406/191/416 421/206/431 422/207/432 +f 418/194/419 417/193/418 432/208/433 433/209/434 +f 416/195/420 415/182/407 430/197/422 431/210/435 +f 414/181/406 413/184/409 428/199/424 429/196/421 +f 412/183/408 411/186/411 426/201/426 427/198/423 +f 410/185/410 409/188/413 424/203/428 425/200/425 +f 408/187/412 407/192/417 422/207/432 423/202/427 +f 419/189/414 418/194/419 433/209/434 434/204/429 +f 417/193/418 416/195/420 431/210/435 432/208/433 +f 430/197/422 429/196/421 444/211/436 445/212/437 +f 428/199/424 427/198/423 442/213/438 443/214/439 +f 426/201/426 425/200/425 440/215/440 441/216/441 +f 424/203/428 423/202/427 438/217/442 439/218/443 +f 435/205/430 434/204/429 449/219/444 450/220/445 +f 422/207/432 421/206/431 436/221/446 437/222/447 +f 433/209/434 432/208/433 447/223/448 448/224/449 +f 431/210/435 430/197/422 445/212/437 446/225/450 +f 429/196/421 428/199/424 443/214/439 444/211/436 +f 427/198/423 426/201/426 441/216/441 442/213/438 +f 425/200/425 424/203/428 439/218/443 440/215/440 +f 423/202/427 422/207/432 437/222/447 438/217/442 +f 434/204/429 433/209/434 448/224/449 449/219/444 +f 432/208/433 431/210/435 446/225/450 447/223/448 +f 445/212/437 444/211/436 459/226/451 460/227/452 +f 443/214/439 442/213/438 457/228/453 458/229/454 +f 441/216/441 440/215/440 455/230/455 456/231/456 +f 439/218/443 438/217/442 453/232/457 454/233/458 +f 450/220/445 449/219/444 464/234/459 465/235/460 +f 437/222/447 436/221/446 451/236/461 452/237/462 +f 448/224/449 447/223/448 462/238/463 463/239/464 +f 446/225/450 445/212/437 460/227/452 461/240/465 +f 444/211/436 443/214/439 458/229/454 459/226/451 +f 442/213/438 441/216/441 456/231/456 457/228/453 +f 440/215/440 439/218/443 454/233/458 455/230/455 +f 438/217/442 437/222/447 452/237/462 453/232/457 +f 449/219/444 448/224/449 463/239/464 464/234/459 +f 447/223/448 446/225/450 461/240/465 462/238/463 +f 460/227/452 459/226/451 474/241/466 475/242/467 +f 458/229/454 457/228/453 472/243/468 473/244/469 +f 456/231/456 455/230/455 470/245/470 471/246/471 +f 454/233/458 453/232/457 468/247/472 469/248/473 +f 465/235/460 464/234/459 479/249/474 480/250/475 +f 452/237/462 451/236/461 466/251/476 467/252/477 +f 463/239/464 462/238/463 477/253/478 478/254/479 +f 461/240/465 460/227/452 475/242/467 476/255/480 +f 459/226/451 458/229/454 473/244/469 474/241/466 +f 457/228/453 456/231/456 471/246/471 472/243/468 +f 455/230/455 454/233/458 469/248/473 470/245/470 +f 453/232/457 452/237/462 467/252/477 468/247/472 +f 464/234/459 463/239/464 478/254/479 479/249/474 +f 462/238/463 461/240/465 476/255/480 477/253/478 +f 481/256/481 15/5/5 30/8/8 485/257/482 +f 485/257/482 30/8/8 45/40/40 487/258/483 +f 487/258/483 45/40/40 60/55/55 489/259/484 +f 489/259/484 60/55/55 75/70/70 491/260/485 +f 491/260/485 75/70/70 90/85/85 493/261/486 +f 493/261/486 90/85/85 105/100/100 495/262/487 +f 495/262/487 105/100/100 120/115/115 497/263/488 +f 497/264/488 120/137/115 135/140/130 499/265/489 +f 499/265/489 135/140/130 150/160/145 501/266/490 +f 501/266/490 150/160/145 165/175/160 503/267/491 +f 503/267/491 165/175/160 180/190/175 505/268/492 +f 505/268/492 180/190/175 195/205/190 507/269/493 +f 507/269/493 195/205/190 210/220/205 509/270/494 +f 509/270/494 210/220/205 225/235/220 511/271/495 +f 511/271/495 225/235/220 240/250/235 513/272/496 +f 513/272/496 240/250/235 255/5/250 515/256/497 +f 515/256/497 255/5/250 270/8/265 517/257/498 +f 517/257/498 270/8/265 285/40/280 519/258/499 +f 519/258/499 285/40/280 300/55/295 521/259/500 +f 521/259/500 300/55/295 315/70/310 523/260/501 +f 523/260/501 315/70/310 330/85/325 525/261/502 +f 525/261/502 330/85/325 345/100/340 527/262/503 +f 527/262/503 345/100/340 360/115/355 529/263/504 +f 529/264/504 360/137/355 375/140/370 531/265/505 +f 531/265/505 375/140/370 390/160/385 533/266/506 +f 533/266/506 390/160/385 405/175/400 534/267/507 +f 534/267/507 405/175/400 420/190/415 536/268/508 +f 536/268/508 420/190/415 435/205/430 538/269/509 +f 538/269/509 435/205/430 450/220/445 540/270/510 +f 540/270/510 450/220/445 465/235/460 542/271/511 +f 542/271/511 465/235/460 480/250/475 544/272/512 +f 475/242/467 474/241/466 9/21/21 10/18/18 +f 473/244/469 472/243/468 7/25/25 8/22/22 +f 471/246/471 470/245/470 5/29/29 6/26/26 +f 469/248/473 468/247/472 3/2/2 4/1/1 +f 480/250/475 479/249/474 14/6/6 15/5/5 +f 467/252/477 466/251/476 1/10/10 2/9/9 +f 478/254/479 477/253/478 12/14/14 13/13/13 +f 476/255/480 475/242/467 10/18/18 11/17/17 +f 474/241/466 473/244/469 8/22/22 9/21/21 +f 472/243/468 471/246/471 6/26/26 7/25/25 +f 470/245/470 469/248/473 4/1/1 5/29/29 +f 544/272/512 480/250/475 15/5/5 481/256/481 +f 468/247/472 467/252/477 2/9/9 3/2/2 +f 479/249/474 478/254/479 13/13/13 14/6/6 +f 477/253/478 476/255/480 11/17/17 12/14/14 +f 466/251/476 543/273/513 483/274/514 1/10/10 +f 451/236/461 541/275/515 543/273/513 466/251/476 +f 436/221/446 539/276/516 541/275/515 451/236/461 +f 421/206/431 537/277/517 539/276/516 436/221/446 +f 406/191/416 535/278/518 537/277/517 421/206/431 +f 391/176/401 482/279/519 535/278/518 406/191/416 +f 376/161/386 532/280/520 482/279/519 391/176/401 +f 361/143/371 530/281/521 532/280/520 376/161/386 +f 346/142/356 528/282/522 530/281/521 361/143/371 +f 331/101/341 526/283/523 528/284/522 346/116/356 +f 316/86/326 524/285/524 526/283/523 331/101/341 +f 301/71/311 522/286/525 524/285/524 316/86/326 +f 286/56/296 520/287/526 522/286/525 301/71/311 +f 271/41/281 518/288/527 520/287/526 286/56/296 +f 256/11/266 516/289/528 518/288/527 271/41/281 +f 241/10/251 514/274/529 516/289/528 256/11/266 +f 226/251/236 512/273/530 514/274/529 241/10/251 +f 211/236/221 510/275/531 512/273/530 226/251/236 +f 196/221/206 508/276/532 510/275/531 211/236/221 +f 181/206/191 506/277/533 508/276/532 196/221/206 +f 166/191/176 504/278/534 506/277/533 181/206/191 +f 151/176/161 502/279/535 504/278/534 166/191/176 +f 136/161/146 500/280/536 502/279/535 151/176/161 +f 121/143/131 498/281/537 500/280/536 136/161/146 +f 106/142/116 496/282/538 498/281/537 121/143/131 +f 91/101/101 494/283/539 496/284/538 106/116/116 +f 76/86/86 492/285/540 494/283/539 91/101/101 +f 61/71/71 490/286/541 492/285/540 76/86/86 +f 46/56/56 488/287/542 490/286/541 61/71/71 +f 31/41/41 486/288/543 488/287/542 46/56/56 +f 16/11/11 484/289/544 486/288/543 31/41/41 +f 1/10/10 483/274/514 484/289/544 16/11/11 +f 543/290/513 541/291/515 539/292/516 537/293/517 535/294/518 482/295/519 532/296/520 530/297/521 528/298/522 526/299/523 524/300/524 522/301/525 520/302/526 518/303/527 516/304/528 514/305/529 512/306/530 510/307/531 508/308/532 506/309/533 504/310/534 502/311/535 500/312/536 498/313/537 496/314/538 494/315/539 492/316/540 490/317/541 488/318/542 486/319/543 484/320/544 483/321/514 +f 544/290/512 481/291/481 485/292/482 487/293/483 489/294/484 491/295/485 493/296/486 495/297/487 497/298/488 499/299/489 501/300/490 503/301/491 505/302/492 507/303/493 509/304/494 511/305/495 513/306/496 515/307/497 517/308/498 519/309/499 521/310/500 523/311/501 525/312/502 527/313/503 529/314/504 531/315/505 533/316/506 534/317/507 536/318/508 538/319/509 540/320/510 542/321/511 diff --git a/technic/models/technic_two_curved_edge.obj b/technic/models/technic_two_curved_edge.obj new file mode 100644 index 0000000..a468ddf --- /dev/null +++ b/technic/models/technic_two_curved_edge.obj @@ -0,0 +1,207 @@ +# Blender v2.73 (sub 0) OBJ File: 'slope_test_quarter_round_corner_onetexture.blend' +# www.blender.org +o corner1_Cylinder +v 0.415732 0.277783 0.499997 +v 0.461936 0.191340 0.499997 +v 0.415735 0.277783 -0.415732 +v 0.461940 0.191340 -0.461937 +v 0.490389 0.097544 0.499997 +v 0.353551 0.353551 0.499997 +v 0.353555 0.353551 -0.353551 +v 0.499996 -0.000000 0.499997 +v 0.277783 0.415732 0.499997 +v 0.490393 0.097544 -0.490389 +v 0.277787 0.415732 -0.277784 +v 0.191340 0.461936 0.499997 +v 0.191344 0.461937 -0.191341 +v 0.097544 0.490389 0.499997 +v 0.097547 0.490391 -0.097545 +v -0.000000 0.499996 0.499997 +v -0.499997 0.499997 0.499997 +v -0.499997 0.499997 -0.000030 +v -0.499997 0.415735 -0.277785 +v -0.499997 0.461940 -0.191342 +v -0.499997 0.490393 -0.097545 +v -0.500000 -0.500000 -0.500000 +v -0.499997 -0.499997 0.499997 +v 0.000000 0.499998 0.000000 +v -0.499998 0.000014 -0.499999 +v -0.499997 0.353553 -0.353554 +v -0.499998 0.097545 -0.490393 +v -0.499997 0.277785 -0.415735 +v -0.499998 0.191342 -0.461940 +v 0.499997 -0.000000 -0.499996 +v 0.500000 -0.500000 -0.500000 +v 0.499997 -0.499997 0.499997 +v -0.499997 -0.499997 0.499997 +v -0.499997 0.499997 0.499997 +v -0.499997 0.499997 -0.000030 +v -0.499997 0.415735 -0.277785 +v -0.499997 0.461940 -0.191342 +v -0.499997 0.490393 -0.097545 +v -0.500000 -0.500000 -0.500000 +v -0.499998 0.000014 -0.499999 +v -0.499997 0.353553 -0.353554 +v -0.499998 0.097545 -0.490393 +v -0.499997 0.277785 -0.415735 +v -0.499998 0.191342 -0.461940 +v -0.499998 -0.033351 0.033348 +v -0.500000 -0.500000 -0.500000 +v 0.500000 -0.500000 -0.500000 +v 0.499997 -0.499997 0.499997 +v 0.415732 0.277783 0.499997 +v 0.461936 0.191340 0.499997 +v 0.490389 0.097544 0.499997 +v 0.353551 0.353551 0.499997 +v 0.499996 -0.000000 0.499997 +v 0.277783 0.415732 0.499997 +v 0.191340 0.461936 0.499997 +v -0.499997 -0.499997 0.499997 +v 0.097544 0.490389 0.499997 +v -0.000000 0.499996 0.499997 +v -0.499997 0.499997 0.499997 +v -0.033351 -0.033351 0.499997 +v 0.499997 -0.499997 0.499997 +vt 1.000000 0.500100 +vt 0.990395 0.597625 +vt 0.466756 0.466756 +vt 1.000000 0.000200 +vt 0.000201 0.000201 +vt 0.597626 0.990394 +vt 0.500101 1.000000 +vt 0.691404 0.961947 +vt 0.777830 0.915751 +vt 0.853583 0.853583 +vt 0.915752 0.777829 +vt 0.000201 1.000000 +vt 0.961948 0.691403 +vt -0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt -0.000000 1.000000 +vt 0.533443 0.466757 +vt 0.000202 0.500115 +vt 0.402575 0.990397 +vt 0.308797 0.961949 +vt 0.222371 0.915753 +vt 0.146617 0.853584 +vt 0.084449 0.777831 +vt 0.038253 0.691405 +vt 0.009806 0.597626 +vt 0.999996 0.125448 +vt 0.222353 0.125462 +vt 0.146597 0.000612 +vt 0.999995 0.000594 +vt 0.000178 0.874582 +vt 0.915751 0.874577 +vt 0.853580 0.999436 +vt 0.000178 0.999439 +vt 0.999808 0.625427 +vt 0.009599 0.625446 +vt -0.000005 0.500594 +vt 0.999807 0.500594 +vt 0.597441 0.374574 +vt 0.499912 0.499435 +vt 0.000000 0.499434 +vt 0.000000 0.374576 +vt 0.999999 0.375154 +vt 1.000000 0.499969 +vt 0.500093 0.500015 +vt 0.402562 0.375164 +vt 0.999812 0.999983 +vt 0.146415 1.000000 +vt 0.084244 0.875149 +vt 0.999811 0.875131 +vt 0.990396 0.624861 +vt 0.961947 0.749719 +vt 0.000178 0.749724 +vt 0.000178 0.624866 +vt 0.777649 0.124857 +vt 0.691221 0.249715 +vt 0.000001 0.249719 +vt 0.000001 0.124861 +vt 0.308782 0.250314 +vt 0.999998 0.250301 +vt 0.853403 -0.000000 +vt 0.038047 0.750298 +vt 0.999809 0.750280 +vt 0.000177 0.500008 +vt 0.000000 0.500000 +vt 0.500000 1.000000 +vt 0.500000 0.500000 +vn 0.000000 -0.000000 1.000000 +vn -0.000000 -1.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn 0.000000 0.831500 -0.555600 +vn 0.325800 0.887500 -0.325800 +vn 0.429700 0.794100 -0.429700 +vn 0.000000 0.707100 -0.707100 +vn 0.831500 0.555600 0.000000 +vn 0.531000 0.660300 -0.531000 +vn 0.707100 0.707100 0.000000 +vn 0.000000 0.195100 -0.980800 +vn 0.683900 0.254100 -0.683900 +vn 0.705500 0.067100 -0.705500 +vn 0.000000 0.049100 -0.998800 +vn 0.123100 0.984700 -0.123100 +vn 0.036800 0.998600 -0.036800 +vn 0.049100 0.998800 0.000000 +vn 0.195100 0.980800 0.000000 +vn 0.000000 0.980800 -0.195100 +vn 0.000000 0.998800 -0.049100 +vn 0.000000 0.555600 -0.831500 +vn 0.620400 0.479600 -0.620400 +vn 0.923900 0.382700 0.000000 +vn 0.980800 0.195100 0.000000 +vn 0.223300 0.948800 -0.223200 +vn 0.382700 0.923900 0.000000 +vn 0.555600 0.831500 0.000000 +vn 0.000000 0.923900 -0.382700 +vn 0.000000 0.382700 -0.923900 +vn 0.998800 0.049100 0.000000 +vn 0.707100 0.000000 -0.707100 +vn 0.000000 0.000000 -1.000000 +vn -0.000000 1.000000 0.000000 +vn 1.000000 0.000000 0.000000 +s off +f 53/1/1 51/2/1 60/3/1 +f 61/4/1 53/1/1 60/3/1 56/5/1 +f 57/6/1 58/7/1 60/3/1 +f 55/8/1 57/6/1 60/3/1 +f 54/9/1 55/8/1 60/3/1 +f 52/10/1 54/9/1 60/3/1 +f 49/11/1 52/10/1 60/3/1 +f 59/12/1 56/5/1 60/3/1 58/7/1 +f 50/13/1 49/11/1 60/3/1 +f 48/14/2 23/15/2 46/16/2 47/17/2 +f 39/5/3 33/4/3 45/18/3 40/19/3 +f 35/7/3 38/20/3 45/18/3 +f 38/20/3 37/21/3 45/18/3 +f 37/21/3 36/22/3 45/18/3 +f 36/22/3 41/23/3 45/18/3 +f 41/23/3 43/24/3 45/18/3 +f 43/24/3 44/25/3 45/18/3 +f 44/25/3 42/26/3 45/18/3 +f 42/26/3 40/19/3 45/18/3 +f 34/16/3 35/7/3 45/18/3 33/4/3 +f 51/2/1 50/13/1 60/3/1 +s 1 +f 19/27/4 11/28/5 7/29/6 26/30/7 +f 1/31/8 3/32/9 7/33/6 6/34/10 +f 27/35/11 10/36/12 30/37/13 25/38/14 +f 15/39/15 24/40/16 16/41/17 14/42/18 +f 21/43/19 18/44/20 24/45/16 15/46/15 +f 26/47/7 7/48/6 3/49/9 28/50/21 +f 10/51/12 4/52/22 2/53/23 5/54/24 +f 11/55/5 13/56/25 12/57/26 9/58/27 +f 21/43/19 15/46/15 13/59/25 20/60/28 +f 20/60/28 13/59/25 11/28/5 19/27/4 +f 9/58/27 6/14/10 7/61/6 11/55/5 +f 4/52/22 3/32/9 1/31/8 2/53/23 +f 3/49/9 4/62/22 29/63/29 28/50/21 +f 10/51/12 5/54/24 8/64/30 30/44/13 +f 29/63/29 4/62/22 10/36/12 27/35/11 +f 25/44/14 30/65/13 31/14/31 22/15/32 +f 16/66/17 24/67/16 18/44/20 17/16/33 +f 8/65/30 32/14/34 31/15/31 30/44/13 +f 12/57/26 13/56/25 15/39/15 14/42/18 diff --git a/technic/modpack.txt b/technic/modpack.txt deleted file mode 100644 index 8b13789..0000000 --- a/technic/modpack.txt +++ /dev/null @@ -1 +0,0 @@ - diff --git a/technic/register.lua b/technic/register.lua new file mode 100644 index 0000000..8f75b81 --- /dev/null +++ b/technic/register.lua @@ -0,0 +1,58 @@ +-- This file includes the functions and data structures for registering machines and tools for LV, MV, HV types. +-- We use the technic namespace for these functions and data to avoid eventual conflict. + +technic.receiver = "RE" +technic.producer = "PR" +technic.producer_receiver = "PR_RE" +technic.battery = "BA" + +technic.machines = {} +technic.power_tools = {} +technic.networks = {} + + +function technic.register_tier(tier, description) + technic.machines[tier] = {} +end + +function technic.register_machine(tier, nodename, machine_type) + if not technic.machines[tier] then + return + end + technic.machines[tier][nodename] = machine_type +end + +function technic.register_power_tool(craftitem, max_charge) + technic.power_tools[craftitem] = max_charge +end + + +-- Utility functions. Not sure exactly what they do.. water.lua uses the two first. +function technic.get_RE_item_load(load1, max_load) + if load1 == 0 then load1 = 65535 end + local temp = 65536 - load1 + temp = temp / 65535 * max_load + return math.floor(temp + 0.5) +end + +function technic.set_RE_item_load(load1, max_load) + if load1 == 0 then return 65535 end + local temp = load1 / max_load * 65535 + temp = 65536 - temp + return math.floor(temp) +end + +-- Wear down a tool depending on the remaining charge. +function technic.set_RE_wear(itemstack, item_load, max_load) + if (minetest.registered_items[itemstack:get_name()].wear_represents or "mechanical_wear") ~= "technic_RE_charge" then return itemstack end + local temp + if item_load == 0 then + temp = 0 + else + temp = 65536 - math.floor(item_load / max_load * 65535) + if temp > 65535 then temp = 65535 end + if temp < 1 then temp = 1 end + end + itemstack:set_wear(temp) + return itemstack +end diff --git a/technic/sounds/chainsaw.ogg b/technic/sounds/chainsaw.ogg new file mode 100644 index 0000000..5fe7552 Binary files /dev/null and b/technic/sounds/chainsaw.ogg differ diff --git a/technic/sounds/item_drop_pickup.1.ogg b/technic/sounds/item_drop_pickup.1.ogg new file mode 100644 index 0000000..2ae432d Binary files /dev/null and b/technic/sounds/item_drop_pickup.1.ogg differ diff --git a/technic/sounds/item_drop_pickup.2.ogg b/technic/sounds/item_drop_pickup.2.ogg new file mode 100644 index 0000000..f58bf08 Binary files /dev/null and b/technic/sounds/item_drop_pickup.2.ogg differ diff --git a/technic/sounds/item_drop_pickup.3.ogg b/technic/sounds/item_drop_pickup.3.ogg new file mode 100644 index 0000000..cf57c94 Binary files /dev/null and b/technic/sounds/item_drop_pickup.3.ogg differ diff --git a/technic/sounds/item_drop_pickup.4.ogg b/technic/sounds/item_drop_pickup.4.ogg new file mode 100644 index 0000000..bfe99d9 Binary files /dev/null and b/technic/sounds/item_drop_pickup.4.ogg differ diff --git a/technic/sounds/mining_drill.ogg b/technic/sounds/mining_drill.ogg new file mode 100644 index 0000000..1493544 Binary files /dev/null and b/technic/sounds/mining_drill.ogg differ diff --git a/technic/sounds/technic_hv_nuclear_reactor_siren_clear.ogg b/technic/sounds/technic_hv_nuclear_reactor_siren_clear.ogg new file mode 100644 index 0000000..3332deb Binary files /dev/null and b/technic/sounds/technic_hv_nuclear_reactor_siren_clear.ogg differ diff --git a/technic/sounds/technic_hv_nuclear_reactor_siren_danger_loop.ogg b/technic/sounds/technic_hv_nuclear_reactor_siren_danger_loop.ogg new file mode 100644 index 0000000..3d290b0 Binary files /dev/null and b/technic/sounds/technic_hv_nuclear_reactor_siren_danger_loop.ogg differ diff --git a/technic/sounds/technic_laser_mk1.0.ogg b/technic/sounds/technic_laser_mk1.0.ogg new file mode 100644 index 0000000..19be080 Binary files /dev/null and b/technic/sounds/technic_laser_mk1.0.ogg differ diff --git a/technic/sounds/technic_laser_mk1.1.ogg b/technic/sounds/technic_laser_mk1.1.ogg new file mode 100644 index 0000000..7792be1 Binary files /dev/null and b/technic/sounds/technic_laser_mk1.1.ogg differ diff --git a/technic/sounds/technic_laser_mk2.0.ogg b/technic/sounds/technic_laser_mk2.0.ogg new file mode 100644 index 0000000..2cf1548 Binary files /dev/null and b/technic/sounds/technic_laser_mk2.0.ogg differ diff --git a/technic/sounds/technic_laser_mk2.1.ogg b/technic/sounds/technic_laser_mk2.1.ogg new file mode 100644 index 0000000..b3f9afb Binary files /dev/null and b/technic/sounds/technic_laser_mk2.1.ogg differ diff --git a/technic/sounds/technic_laser_mk2.2.ogg b/technic/sounds/technic_laser_mk2.2.ogg new file mode 100644 index 0000000..a4ee091 Binary files /dev/null and b/technic/sounds/technic_laser_mk2.2.ogg differ diff --git a/technic/sounds/technic_laser_mk3.1.ogg b/technic/sounds/technic_laser_mk3.1.ogg new file mode 100644 index 0000000..f948913 Binary files /dev/null and b/technic/sounds/technic_laser_mk3.1.ogg differ diff --git a/technic/sounds/technic_laser_mk3.2.ogg b/technic/sounds/technic_laser_mk3.2.ogg new file mode 100644 index 0000000..636c306 Binary files /dev/null and b/technic/sounds/technic_laser_mk3.2.ogg differ diff --git a/technic/sounds/technic_prospector_hit.ogg b/technic/sounds/technic_prospector_hit.ogg new file mode 100644 index 0000000..3a8ad2d Binary files /dev/null and b/technic/sounds/technic_prospector_hit.ogg differ diff --git a/technic/sounds/technic_prospector_miss.ogg b/technic/sounds/technic_prospector_miss.ogg new file mode 100644 index 0000000..0f050d0 Binary files /dev/null and b/technic/sounds/technic_prospector_miss.ogg differ diff --git a/technic/sounds/technic_sonic_screwdriver.ogg b/technic/sounds/technic_sonic_screwdriver.ogg new file mode 100644 index 0000000..471bb72 Binary files /dev/null and b/technic/sounds/technic_sonic_screwdriver.ogg differ diff --git a/technic/sounds/vacuumcleaner.ogg b/technic/sounds/vacuumcleaner.ogg new file mode 100644 index 0000000..39d72de Binary files /dev/null and b/technic/sounds/vacuumcleaner.ogg differ diff --git a/technic/technic/README.md b/technic/technic/README.md deleted file mode 100644 index b6aa05f..0000000 --- a/technic/technic/README.md +++ /dev/null @@ -1,27 +0,0 @@ -Technic -======= - -License -------- - -Copyright (C) 2012-2014 Maciej Kasatkin (RealBadAngel) - -Technic chests code is licensed under the GNU LGPLv2+. - -Texture licenses: - -BlockMen modified by Zefram (CC BY-SA 3.0): - * technic_chernobylite_block.png - * technic_corium_flowing_animated.png - * technic_corium_source_animated.png - -celeron55 (Perttu Ahola) modified by Zefram (CC BY-SA 3.0): - * technic_bucket_corium.png - -sdzen (Elise Staudter) (CC BY-SA 3.0): - * most of the older 16x16 textures - -RealBadAngel: (WTFPL) - * Everything else. - -CC BY-SA 3.0: diff --git a/technic/technic/config.lua b/technic/technic/config.lua deleted file mode 100644 index 81a2224..0000000 --- a/technic/technic/config.lua +++ /dev/null @@ -1,18 +0,0 @@ -technic.config = technic.config or Settings(minetest.get_worldpath().."/technic.conf") - -local conf_table = technic.config:to_table() - -local defaults = { - enable_mining_drill = "true", - enable_mining_laser = "true", - enable_flashlight = "false", - enable_wind_mill = "false", - enable_frames = "false", - enable_corium_griefing = "true", -} - -for k, v in pairs(defaults) do - if conf_table[k] == nil then - technic.config:set(k, v) - end -end diff --git a/technic/technic/crafts.lua b/technic/technic/crafts.lua deleted file mode 100644 index 8a8cd37..0000000 --- a/technic/technic/crafts.lua +++ /dev/null @@ -1,193 +0,0 @@ --- check if we have the necessary dependencies to allow actually using these materials in the crafts -local mesecons_materials = minetest.get_modpath("mesecons_materials") - --- tubes crafting recipes - -minetest.register_craft({ - output = 'pipeworks:accelerator_tube_1', - recipe = { - {'technic:copper_coil', 'pipeworks:tube_1', 'technic:copper_coil'}, - } -}) - -minetest.register_craft({ - output = 'pipeworks:teleport_tube_1', - recipe = { - {'default:mese_crystal', 'technic:copper_coil', 'default:mese_crystal'}, - {'pipeworks:tube_1', 'technic:control_logic_unit', 'pipeworks:tube_1'}, - {'default:mese_crystal', 'technic:copper_coil', 'default:mese_crystal'}, - } -}) - -minetest.register_craft({ - output = 'technic:diamond_drill_head', - recipe = { - {'technic:stainless_steel_ingot', 'default:diamond', 'technic:stainless_steel_ingot'}, - {'default:diamond', '', 'default:diamond'}, - {'technic:stainless_steel_ingot', 'default:diamond', 'technic:stainless_steel_ingot'}, - } -}) - -minetest.register_craft({ - output = 'technic:green_energy_crystal', - recipe = { - {'default:gold_ingot', 'technic:battery', 'dye:green'}, - {'technic:battery', 'technic:red_energy_crystal', 'technic:battery'}, - {'dye:green', 'technic:battery', 'default:gold_ingot'}, - } -}) - -minetest.register_craft({ - output = 'technic:blue_energy_crystal', - recipe = { - {'moreores:mithril_ingot', 'technic:battery', 'dye:blue'}, - {'technic:battery', 'technic:green_energy_crystal', 'technic:battery'}, - {'dye:blue', 'technic:battery', 'moreores:mithril_ingot'}, - } -}) - -minetest.register_craft({ - output = 'technic:red_energy_crystal', - recipe = { - {'moreores:silver_ingot', 'technic:battery', 'dye:red'}, - {'technic:battery', 'default:diamondblock', 'technic:battery'}, - {'dye:red', 'technic:battery', 'moreores:silver_ingot'}, - } -}) - -minetest.register_craft({ - output = 'technic:fine_copper_wire 2', - recipe = { - {'', 'default:copper_ingot', ''}, - {'', 'default:copper_ingot', ''}, - {'', 'default:copper_ingot', ''}, - } -}) - -minetest.register_craft({ - output = 'technic:fine_gold_wire 2', - recipe = { - {'', 'default:gold_ingot', ''}, - {'', 'default:gold_ingot', ''}, - {'', 'default:gold_ingot', ''}, - } -}) - -minetest.register_craft({ - output = 'technic:fine_silver_wire 2', - recipe = { - {'', 'moreores:silver_ingot', ''}, - {'', 'moreores:silver_ingot', ''}, - {'', 'moreores:silver_ingot', ''}, - } -}) - -minetest.register_craft({ - output = 'technic:copper_coil 1', - recipe = { - {'technic:fine_copper_wire', 'technic:wrought_iron_ingot', 'technic:fine_copper_wire'}, - {'technic:wrought_iron_ingot', '', 'technic:wrought_iron_ingot'}, - {'technic:fine_copper_wire', 'technic:wrought_iron_ingot', 'technic:fine_copper_wire'}, - } -}) - -minetest.register_craft({ - output = 'technic:motor', - recipe = { - {'technic:carbon_steel_ingot', 'technic:copper_coil', 'technic:carbon_steel_ingot'}, - {'technic:carbon_steel_ingot', 'technic:copper_coil', 'technic:carbon_steel_ingot'}, - {'technic:carbon_steel_ingot', 'default:copper_ingot', 'technic:carbon_steel_ingot'}, - } -}) - -local isolation = mesecons_materials and "mesecons_materials:fiber" or "technic:rubber" - -minetest.register_craft({ - output = 'technic:lv_transformer', - recipe = { - {isolation, 'technic:wrought_iron_ingot', isolation}, - {'technic:copper_coil', 'technic:wrought_iron_ingot', 'technic:copper_coil'}, - {'technic:wrought_iron_ingot', 'technic:wrought_iron_ingot', 'technic:wrought_iron_ingot'}, - } -}) - -minetest.register_craft({ - output = 'technic:mv_transformer', - recipe = { - {isolation, 'technic:carbon_steel_ingot', isolation}, - {'technic:copper_coil', 'technic:carbon_steel_ingot', 'technic:copper_coil'}, - {'technic:carbon_steel_ingot', 'technic:carbon_steel_ingot', 'technic:carbon_steel_ingot'}, - } -}) - -minetest.register_craft({ - output = 'technic:hv_transformer', - recipe = { - {isolation, 'technic:stainless_steel_ingot', isolation}, - {'technic:copper_coil', 'technic:stainless_steel_ingot', 'technic:copper_coil'}, - {'technic:stainless_steel_ingot', 'technic:stainless_steel_ingot', 'technic:stainless_steel_ingot'}, - } -}) - -minetest.register_craft({ - output = 'technic:control_logic_unit', - recipe = { - {'', 'technic:fine_gold_wire', ''}, - {'default:copper_ingot', 'technic:silicon_wafer', 'default:copper_ingot'}, - {'', 'technic:chromium_ingot', ''}, - } -}) - -minetest.register_craft({ - output = 'technic:mixed_metal_ingot 9', - recipe = { - {'technic:stainless_steel_ingot', 'technic:stainless_steel_ingot', 'technic:stainless_steel_ingot'}, - {'default:bronze_ingot', 'default:bronze_ingot', 'default:bronze_ingot'}, - {'moreores:tin_ingot', 'moreores:tin_ingot', 'moreores:tin_ingot'}, - } -}) - -minetest.register_craft({ - output = 'technic:carbon_cloth', - recipe = { - {'technic:graphite', 'technic:graphite', 'technic:graphite'} - } -}) - -minetest.register_craft({ - output = "technic:machine_casing", - recipe = { - { "technic:cast_iron_ingot", "technic:cast_iron_ingot", "technic:cast_iron_ingot" }, - { "technic:cast_iron_ingot", "technic:brass_ingot", "technic:cast_iron_ingot" }, - { "technic:cast_iron_ingot", "technic:cast_iron_ingot", "technic:cast_iron_ingot" }, - }, -}) - --- Remove some recipes --- Bronze -minetest.register_craft({ - type = "shapeless", - output = "default:bronze_ingot 0", - recipe = {"default:copper_ingot", "default:steel_ingot"} -}) - --- Accelerator tube -minetest.register_craft({ - output = "pipeworks:accelerator_tube_1 0", - recipe = { - { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" }, - { "default:mese_crystal_fragment", "default:steel_ingot", "default:mese_crystal_fragment" }, - { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" } - }, -}) - --- Teleport tube -minetest.register_craft({ - output = "pipeworks:teleport_tube_1 0", - recipe = { - { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" }, - { "default:desert_stone", "default:mese", "default:desert_stone" }, - { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" } - }, -}) - diff --git a/technic/technic/depends.txt b/technic/technic/depends.txt deleted file mode 100644 index 746fe34..0000000 --- a/technic/technic/depends.txt +++ /dev/null @@ -1,8 +0,0 @@ -default -pipeworks -technic_worldgen -bucket? -mesecons_mvps? -intllib? -unified_inventory? -vector_extras? diff --git a/technic/technic/helpers.lua b/technic/technic/helpers.lua deleted file mode 100644 index e8efcf3..0000000 --- a/technic/technic/helpers.lua +++ /dev/null @@ -1,67 +0,0 @@ ---load config -local sepchar = nil -do - local sepcode = technic.config:get("thousand_separator") - --default is SI style - sepchar = sepcode and string.char(sepcode) or " " - baresepchar = sepchar - --handling if sepchar is magic... - for magic in string.gmatch("().%+-*?[^$", ".") do - if sepchar == magic then sepchar = "%"..sepchar end - end -end - --- Only changes name, keeps other params -function technic.swap_node(pos, name) - local node = minetest.get_node(pos) - if node.name ~= name then - node.name = name - minetest.swap_node(pos, node) - end - return node.name -end - --- Fully charge RE chargeable item. --- Must be defined early to reference in item definitions. -function technic.refill_RE_charge(stack) - local max_charge = technic.power_tools[stack:get_name()] - if not max_charge then return stack end - technic.set_RE_wear(stack, max_charge, max_charge) - local meta = minetest.deserialize(stack:get_metadata()) or {} - meta.charge = max_charge - stack:set_metadata(minetest.serialize(meta)) - return stack -end - -local function resolve_name(function_name) - local a = _G - for key in string.gmatch(function_name, "([^%.]+)(%.?)") do - if a[key] then - a = a[key] - else - return nil - end - end - return a -end - -function technic.function_exists(function_name) - return type(resolve_name(function_name)) == 'function' -end - --- if the node is loaded, returns it. If it isn't loaded, load it and return nil. -function technic.get_or_load_node(pos) - local node_or_nil = minetest.get_node_or_nil(pos) - if node_or_nil then return node_or_nil end - local vm = VoxelManip() - local MinEdge, MaxEdge = vm:read_from_map(pos, pos) - return nil -end - -function technic.prettynum(num) - local str, k = tostring(num), nil - repeat - str, k = str:gsub("^(-?%d+)(%d%d%d)", "%1"..sepchar.."%2") - until k == 0 - return str -end \ No newline at end of file diff --git a/technic/technic/init.lua b/technic/technic/init.lua deleted file mode 100644 index 25361af..0000000 --- a/technic/technic/init.lua +++ /dev/null @@ -1,54 +0,0 @@ --- Minetest 0.4.7 mod: technic --- namespace: technic --- (c) 2012-2013 by RealBadAngel - -technic = rawget(_G, "technic") or {} -technic.creative_mode = minetest.setting_getbool("creative_mode") - -technic.tube_inject_item = pipeworks.tube_inject_item or function (pos, start_pos, velocity, item) - local tubed = pipeworks.tube_item(vector.new(pos), item) - tubed:get_luaentity().start_pos = vector.new(start_pos) - tubed:setvelocity(velocity) - tubed:setacceleration(vector.new(0, 0, 0)) -end - -local load_start = os.clock() -local modpath = minetest.get_modpath("technic") -technic.modpath = modpath - --- Boilerplate to support intllib -if minetest.get_modpath("intllib") then - technic.getter = intllib.Getter() -else - technic.getter = function(s,a,...)if a==nil then return s end a={a,...}return s:gsub("(@?)@(%(?)(%d+)(%)?)",function(e,o,n,c)if e==""then return a[tonumber(n)]..(o==""and c or"")else return"@"..o..n..c end end) end -end -local S = technic.getter - --- Read configuration file -dofile(modpath.."/config.lua") - --- Helper functions -dofile(modpath.."/helpers.lua") - --- Items -dofile(modpath.."/items.lua") - --- Craft recipes for items -dofile(modpath.."/crafts.lua") - --- Register functions -dofile(modpath.."/register.lua") - --- Machines -dofile(modpath.."/machines/init.lua") - --- Tools -dofile(modpath.."/tools/init.lua") - --- Aliases for legacy node/item names -dofile(modpath.."/legacy.lua") - -if minetest.setting_getbool("log_mods") then - print(S("[Technic] Loaded in %f seconds"):format(os.clock() - load_start)) -end - diff --git a/technic/technic/items.lua b/technic/technic/items.lua deleted file mode 100644 index 27e05e4..0000000 --- a/technic/technic/items.lua +++ /dev/null @@ -1,221 +0,0 @@ - -local S = technic.getter - -minetest.register_craftitem("technic:silicon_wafer", { - description = S("Silicon Wafer"), - inventory_image = "technic_silicon_wafer.png", -}) - -minetest.register_craftitem( "technic:doped_silicon_wafer", { - description = S("Doped Silicon Wafer"), - inventory_image = "technic_doped_silicon_wafer.png", -}) - -minetest.register_craftitem("technic:uranium_fuel", { - description = S("Uranium Fuel"), - inventory_image = "technic_uranium_fuel.png", -}) - -minetest.register_craftitem( "technic:diamond_drill_head", { - description = S("Diamond Drill Head"), - inventory_image = "technic_diamond_drill_head.png", -}) - -minetest.register_tool("technic:blue_energy_crystal", { - description = S("Blue Energy Crystal"), - inventory_image = minetest.inventorycube( - "technic_diamond_block_blue.png", - "technic_diamond_block_blue.png", - "technic_diamond_block_blue.png"), - wear_represents = "technic_RE_charge", - on_refill = technic.refill_RE_charge, - tool_capabilities = { - max_drop_level = 0, - groupcaps = { - fleshy = {times={}, uses=10000, maxlevel=0} - } - } -}) - -minetest.register_tool("technic:green_energy_crystal", { - description = S("Green Energy Crystal"), - inventory_image = minetest.inventorycube( - "technic_diamond_block_green.png", - "technic_diamond_block_green.png", - "technic_diamond_block_green.png"), - wear_represents = "technic_RE_charge", - on_refill = technic.refill_RE_charge, - tool_capabilities = { - max_drop_level = 0, - groupcaps = { - fleshy = {times={}, uses=10000, maxlevel=0} - } - } -}) - -minetest.register_tool("technic:red_energy_crystal", { - description = S("Red Energy Crystal"), - inventory_image = minetest.inventorycube( - "technic_diamond_block_red.png", - "technic_diamond_block_red.png", - "technic_diamond_block_red.png"), - wear_represents = "technic_RE_charge", - on_refill = technic.refill_RE_charge, - tool_capabilities = { - max_drop_level = 0, - groupcaps = { - fleshy = {times={}, uses=10000, maxlevel=0} - } - } -}) - - -minetest.register_craftitem("technic:fine_copper_wire", { - description = S("Fine Copper Wire"), - inventory_image = "technic_fine_copper_wire.png", -}) - -minetest.register_craftitem("technic:fine_gold_wire", { - description = S("Fine Gold Wire"), - inventory_image = "technic_fine_gold_wire.png", -}) - -minetest.register_craftitem("technic:fine_silver_wire", { - description = S("Fine Silver Wire"), - inventory_image = "technic_fine_silver_wire.png", -}) - -minetest.register_craftitem("technic:copper_coil", { - description = S("Copper Coil"), - inventory_image = "technic_copper_coil.png", -}) - -minetest.register_craftitem("technic:motor", { - description = S("Electric Motor"), - inventory_image = "technic_motor.png", -}) - -minetest.register_craftitem("technic:lv_transformer", { - description = S("Low Voltage Transformer"), - inventory_image = "technic_lv_transformer.png", -}) - -minetest.register_craftitem("technic:mv_transformer", { - description = S("Medium Voltage Transformer"), - inventory_image = "technic_mv_transformer.png", -}) - -minetest.register_craftitem( "technic:hv_transformer", { - description = S("High Voltage Transformer"), - inventory_image = "technic_hv_transformer.png", -}) - -minetest.register_craftitem( "technic:control_logic_unit", { - description = S("Control Logic Unit"), - inventory_image = "technic_control_logic_unit.png", -}) - -minetest.register_craftitem("technic:mixed_metal_ingot", { - description = S("Mixed Metal Ingot"), - inventory_image = "technic_mixed_metal_ingot.png", -}) - -minetest.register_craftitem("technic:composite_plate", { - description = S("Composite Plate"), - inventory_image = "technic_composite_plate.png", -}) - -minetest.register_craftitem("technic:copper_plate", { - description = S("Copper Plate"), - inventory_image = "technic_copper_plate.png", -}) - -minetest.register_craftitem("technic:carbon_plate", { - description = S("Carbon Plate"), - inventory_image = "technic_carbon_plate.png", -}) - -minetest.register_craftitem("technic:graphite", { - description = S("Graphite"), - inventory_image = "technic_graphite.png", -}) - -minetest.register_craftitem("technic:carbon_cloth", { - description = S("Carbon Cloth"), - inventory_image = "technic_carbon_cloth.png", -}) - -minetest.register_node("technic:machine_casing", { - description = S("Machine Casing"), - groups = {cracky=2}, - sunlight_propagates = true, - paramtype = "light", - drawtype = "allfaces", - tiles = {"technic_machine_casing.png"}, - sounds = default.node_sound_stone_defaults(), -}) - -for p = 0, 35 do - local nici = (p ~= 0 and p ~= 7 and p ~= 35) and 1 or nil - local psuffix = p == 7 and "" or p - local ingot = "technic:uranium"..psuffix.."_ingot" - local block = "technic:uranium"..psuffix.."_block" - local ov = p == 7 and minetest.override_item or nil; - (ov or minetest.register_craftitem)(ingot, { - description = string.format(S("%.1f%%-Fissile Uranium Ingot"), p/10), - inventory_image = "technic_uranium_ingot.png", - groups = {uranium_ingot=1, not_in_creative_inventory=nici}, - }); - -- Note on radioactivity of blocks: - -- Source: - -- The baseline radioactivity of an isotope is not especially - -- correlated with whether it's fissile (i.e., suitable as - -- reactor fuel). Natural uranium consists mainly of fissile - -- U-235 and non-fissile U-238, and both U-235 and U-238 are - -- significantly radioactive. U-235's massic activity is - -- about 80.0 MBq/kg, and U-238's is about 12.4 MBq/kg, which - -- superficially suggests that 3.5%-fissile uranium should have - -- only 1.19 times the activity of fully-depleted uranium. - -- But a third isotope affects the result hugely: U-234 has - -- massic activity of 231 GBq/kg. Natural uranium has massic - -- composition of 99.2837% U-238, 0.711% U-235, and 0.0053% U-234, - -- so its activity comes roughly 49% each from U-234 and U-238 - -- and only 2% from U-235. During enrichment via centrifuge, - -- the U-234 fraction is concentrated along with the U-235, with - -- the U-234:U-235 ratio remaining close to its original value. - -- (Actually the U-234 gets separated from U-238 slightly more - -- than the U-235 is, so the U-234:U-235 ratio is slightly - -- higher in enriched uranium.) A typical massic composition - -- for 3.5%-fissile uranium is 96.47116% U-238, 3.5% U-235, and - -- 0.02884% U-234. This gives 3.5%-fissile uranium about 6.55 - -- times the activity of fully-depleted uranium. The values we - -- compute here for the "radioactive" group value are based on - -- linear interpolation of activity along that scale, rooted at - -- a natural (0.7%-fissile) uranium block having the activity of - -- 9 uranium ore blocks (due to 9 ingots per block). The group - -- value is proportional to the square root of the activity, and - -- uranium ore has radioactive=1000. This yields radioactive=2065 - -- for a fully-depleted uranium block and radioactive=5286 for - -- a 3.5%-fissile uranium block. - (ov or minetest.register_node)(block, { - description = string.format(S("%.1f%%-Fissile Uranium Block"), p/10), - tiles = {"technic_uranium_block.png"}, - is_ground_content = true, - groups = {uranium_block=1, not_in_creative_inventory=nici, cracky=1, level=2, radioactive=math.floor(1000*math.sqrt((1+5.55*p/35) * 9 / (1+5.55*7/35)) + 0.5)}, - sounds = default.node_sound_stone_defaults(), - }); - if not ov then - minetest.register_craft({ - output = block, - recipe = { - {ingot, ingot, ingot}, - {ingot, ingot, ingot}, - {ingot, ingot, ingot}, - }, - }) - minetest.register_craft({ - output = ingot.." 9", - recipe = {{block}}, - }) - end -end diff --git a/technic/technic/legacy.lua b/technic/technic/legacy.lua deleted file mode 100644 index 8360a71..0000000 --- a/technic/technic/legacy.lua +++ /dev/null @@ -1,38 +0,0 @@ - --- Aliases to convert from legacy node/item names - -technic.legacy_nodenames = { - ["technic:alloy_furnace"] = "technic:lv_alloy_furnace", - ["technic:alloy_furnace_active"] = "technic:lv_alloy_furnace_active", - ["technic:battery_box"] = "technic:lv_battery_box0", - ["technic:battery_box1"] = "technic:lv_battery_box1", - ["technic:battery_box2"] = "technic:lv_battery_box2", - ["technic:battery_box3"] = "technic:lv_battery_box3", - ["technic:battery_box4"] = "technic:lv_battery_box4", - ["technic:battery_box5"] = "technic:lv_battery_box5", - ["technic:battery_box6"] = "technic:lv_battery_box6", - ["technic:battery_box7"] = "technic:lv_battery_box7", - ["technic:battery_box8"] = "technic:lv_battery_box8", - ["technic:electric_furnace"] = "technic:lv_electric_furnace", - ["technic:electric_furnace_active"] = "technic:lv_electric_furnace_active", - ["technic:grinder"] = "technic:lv_grinder", - ["technic:grinder_active"] = "technic:lv_grinder_active", - ["technic:extractor"] = "technic:lv_extractor", - ["technic:extractor_active"] = "technic:lv_extractor_active", - ["technic:compressor"] = "technic:lv_compressor", - ["technic:compressor_active"] = "technic:lv_compressor_active", - ["technic:hv_battery_box"] = "technic:hv_battery_box0", - ["technic:hv_cable"] = "technic:hv_cable0", - ["technic:lv_cable"] = "technic:lv_cable0", - ["technic:mv_cable"] = "technic:mv_cable0", - ["technic:mv_battery_box"] = "technic:mv_battery_box0", - ["technic:generator"] = "technic:lv_generator", - ["technic:generator_active"] = "technic:lv_generator_active", - ["technic:iron_dust"] = "technic:wrought_iron_dust", - ["technic:enriched_uranium"] = "technic:uranium35_ingot", -} - -for old, new in pairs(technic.legacy_nodenames) do - minetest.register_alias(old, new) -end - diff --git a/technic/technic/locale/de.txt b/technic/technic/locale/de.txt deleted file mode 100644 index 855ec5a..0000000 --- a/technic/technic/locale/de.txt +++ /dev/null @@ -1,204 +0,0 @@ -# German Translation for Technic Mod -# Deutsche Uebersetzung des Technic Mods -# by Xanthin - -## Misc -[Technic] Loaded in %f seconds = [Technic] ist in %f Sekunden geladen - -## Items -Silicon Wafer = Siliziumscheibe -Doped Silicon Wafer = Dotierte Siliziumscheibe -Enriched Uranium = Angereichertes Uran -Uranium Fuel = Uranbrennstoff -Diamond Drill Head = Diamantbohrkopf -Blue Energy Crystal = Blauer Energiekristall -Green Energy Crystal = Gruener Energiekristall -Red Energy Crystal = Roter Energiekristall -Fine Copper Wire = Feinkupferdraht -Copper Coil = Kupferspule -Electric Motor = Elektromotor -Low Voltage Transformer = Niederspannungstransformator -Medium Voltage Transformer = Mittelspannungstransformator -High Voltage Transformer = Hochspannungstransformator -Control Logic Unit = Steuer- und Regelungseinheit -Mixed Metal Ingot = Mischmetallbarren -Composite Plate = Verbundplatte -Copper Plate = Kupferplatte -Carbon Plate = Kohlefaserplatte -Graphite = Graphit -Carbon Cloth = Kohlefasergewebe -Raw Latex = Rohlatex -Rubber Fiber = Gummifaser -%.1f%%-Fissile Uranium Ingot = -%.1f%%-Fissile Uranium Block = - -## Machine misc -Machine cannot be removed because it is not empty = Die Maschine kann nicht entfernt werden, weil sie noch nicht leer ist. -Inventory move disallowed due to protection = Das Inventar ist geschuetzt, Zugriff verweigert. -# $1: Machine name (Includes tier) -@1 Active (@2 EU) = @1 ist eingeschaltet (@2 EU) -%s Active = %s ist eingeschaltet -%s Disabled = %s ist ausgeschaltet -%s Enabled = -%s Idle = %s ist bereit -%s Improperly Placed = %s ist falsch plaziert -%s Unpowered = %s hat keine Stromversorgung -%s Out Of Fuel = %s hat keinen Brennstoff -%s Has Bad Cabling = %s ist falsch verkabelt -%s Has No Network = %s hat kein Netzwerk -%s Finished = %s ist fertig -Enable/Disable = Einschalten/Ausschalten -Range = Reichweite -Upgrade Slots = Verbesserungsfaecher -In: = Rein: -Out: = Raus: -Slot %d = Fach %d -Itemwise = Einzelstuecke -Stackwise = Ganzer Stapel -Owner: = -Unlocked = -Locked = -Radius: = -Enabled = -Disabled = - -## Machine names -# $1: Tier -%s Alloy Furnace = %s Legierungsofen -%s Battery Box = %s Batteriebox -%s Cable = %s Kabel -%s CNC Machine = %s CNC-Maschine -%s Compressor = %s Kompressor -%s Extractor = %s Extraktor -%s Forcefield Emitter = %s Kraftfeld-Emitter -%s Furnace = %s Ofen -%s Grinder = %s Schleifmaschine -%s Music Player = %s Musikspieler -%s Quarry = %s Steinbruch -%s Tool Workshop = %s Werkzeugwerkstatt -Arrayed Solar %s Generator = %s Solaranlage -Fuel-Fired %s Generator = %s Kohle-Generator -Geothermal %s Generator = %s Geothermie-Generator -Hydro %s Generator = %s Wassermuehle -Nuclear %s Generator Core = %s Reaktorkern -Small Solar %s Generator = %s Solarmodul -Wind %s Generator = %s Windmuehle -Self-Contained Injector = Selbstversorger-Injektor -Constructor Mk%d = Konstruktor Modell %d -Frame = Rahmen -Frame Motor = Rahmenmotor -Template = Schablone -Template (replacing) = Schablone (ersetzend) -Template motor = Schablonenmotor -Template tool = Schablonenwerkzeug -Battery Box = Batteriebox -Supply Converter = Stromumwandler -Switching Station = Schaltanlage -Fuel-Fired Alloy Furnace = Kohle-Legierungsofen -Fuel-Fired Furnace = Kohle-Ofen -Wind Mill Frame = Windmuehlengeruest -Forcefield = Kraftfeld -Nuclear Reactor Rod Compartment = Brennstabfaecher -Administrative World Anchor = - -## Machine-specific -# $1: Pruduced EU -Charge = Aufladen -Discharge = Entladen -Power level = Energiestufe -# $1: Tier $2: current_charge $3: max_charge -@1 Battery Box: @2/@3 = @1 Batteriebox: @2/@3 -# $1: Machine name $2: Supply $3: Demand -@1. Supply: @2 Demand: @3 = @1. Versorgung: @2 Bedarf: @3 -Production at %d%% = Produktion bei %d%% -Choose Milling Program: = Waehle ein Fraesprogramm: -Slim Elements half / normal height: = Schmale Elemente von halber / normaler Hoehe: -Current track %s = Aktueller Titel %s -Stopped = -Keeping %d/%d map blocks loaded = -Digging not started = -Digging finished = -Digging %d m above machine = -Digging %d m below machine = - -## CNC -Cylinder = Zylinder -Element Cross = Halbes Kreuzelement -Element Cross Double = Kreuzelement -Element Edge = Halbes Eckelement -Element Edge Double = Eckelement -Element End = Halbes Endelement -Element End Double = Endelement -Element Straight = Halbes aufrechtes Element -Element Straight Double = Aufrechtes Element -Element T = Halbes T-Element -Element T Double = T-Element -Horizontal Cylinder = Liegender Zylinder -One Curved Edge Block = Block mit einer abgerundeten Kante -Pyramid = Pyramide -Slope = Schraege -Slope Edge = Schraege mit Ecke -Slope Inner Edge = Schraege mit Innenecke -Slope Lying = Liegende Schraege -Slope Upside Down = Umgedrehte Schraege -Slope Upside Down Edge = Umgedrehte Schraege mit Ecke -Slope Upside Down Inner Edge = Umgedrehte Schraege mit Innenecke -Sphere = Kugel -Spike = Spitze -Stick = Stange -Two Curved Edge Block = Block mit zwei abgerundeten Kanten -Brick = Ziegel: -Cobble = Pflasterstein: -Dirt = Erde: -Leaves = Laub: -Sandstone = Sandstein: -Stone = Stein: -Tree = Baumstamm: -Wooden = Holz: - -## Grinder Recipes -# $1: Name -%s Dust = %sstaub -Akalin = Akalin -Alatro = Alatro -Arol = Arol -Brass = Messing -Bronze = Bronze -Carbon Steel = Kohlenstoffstahl -Cast Iron = Gusseisen -Chromium = Chrom -Coal = Kohle -Copper = Kupfer -Gold = Gold -Mithril = Mithril -Silver = Silber -Stainless Steel = Edelstahl -Talinite = Talinite -Tin = Zinn -Wrought Iron = Schmiedeeisen -Zinc = Zink -%.1f%%-Fissile Uranium = - -## Tools -RE Battery = Akkubatterie -Water Can = Wasserkanister -Lava Can = Lavakanister -Chainsaw = Kettensaege -Flashlight = Taschenlampe -3 nodes deep. = 3 Bloecke tief. -3 nodes tall. = 3 Bloecke hoch. -3 nodes wide. = 3 Bloecke breit. -3x3 nodes. = 3x3 Bloecke. -Use while sneaking to change Mining Drill Mk%d modes. = Halte die Shift-Taste beim Benutzen gedrueckt, um die Funktion des Bergbaubohrers Modell %d zu aendern. -Mining Drill Mk%d Mode %d = Bergbaubohrer Modell %d Funktion %d -Mining Drill Mk%d = Bergbaubohrer Modell %d -Mining Laser Mk%d = Bergbaulaser Modell %d -Single node. = Einzelblock -Sonic Screwdriver = Schallschraubendreher -Tree Tap = Baumzapfhahn - -## Craft descriptions -Alloy cooking = -Grinding = -Compressing = -Extracting = diff --git a/technic/technic/locale/es.txt b/technic/technic/locale/es.txt deleted file mode 100644 index 7945d65..0000000 --- a/technic/technic/locale/es.txt +++ /dev/null @@ -1,197 +0,0 @@ -# Spanish Translation for Technic Mod -# Traduccion al Español del Mod Technic -# Autor: Diego Martínez - -## Misc -[Technic] Loaded in %f seconds = [Technic] Cargado en %f segundos - -## Items -Silicon Wafer = Oblea de Silicio -Doped Silicon Wafer = Oblea de Silicio Dopada -Enriched Uranium = Uranio Enriquecido -Uranium Fuel = Combustible de Uranio -Diamond Drill Head = Mecha de Taladro de Diamante -Blue Energy Crystal = Cristal de Energia Azul -Green Energy Crystal = Cristal de Energia Verde -Red Energy Crystal = Cristal de Energia Rojo -Fine Copper Wire = Cable Fino de Cobre -Copper Coil = Resorte de Cobre -Electric Motor = Motor Electrico -Low Voltage Transformer = Transformador de Bajo Voltaje -Medium Voltage Transformer = Transformador de Voltaje Medio -High Voltage Transformer = Transformador de Alto Voltaje -Control Logic Unit = Unidad Logica de Control -Mixed Metal Ingot = Lingote de Metal Mezclado -Composite Plate = Placa de Compuestos -Copper Plate = Placa de Cobre -Carbon Plate = Placa de Carbon -Graphite = Grafito -Carbon Cloth = Tela de Carbon -Raw Latex = Latex Crudo -Rubber Fiber = Fibra de Hule -%.1f%%-Fissile Uranium Ingot = -%.1f%%-Fissile Uranium Block = - -## Machine misc -Machine cannot be removed because it is not empty = La maquina no puede removerse porque no esta vacia -Inventory move disallowed due to protection = -# $1: Machine name (Includes tier) -@1 Active (@2 EU) = @1 Activo (@2 EU) -%s Active = %s Activo -%s Enabled = -%s Idle = %s Quieto -%s Unpowered = %s Sin Energia -%s Out Of Fuel = %s Sin Combustible -%s Has Bad Cabling = %s Tiene Mal Cableado -%s Has No Network = %s No Tiene Una Red -%s Finished = %s Terminado -%s Disabled = %s Deshabilitado -%s Improperly Placed = %s No Colocado Apropiadamente -Range = Alcance -Enable/Disable = Habilitar/Deshabilitar -Itemwise = -Stackwise = -Owner: = -Unlocked = -Locked = -Radius: = -Enabled = -Disabled = - -## Machine names -# $1: Tier -%s Alloy Furnace = Horno de Aleacion %s -%s Battery Box = Caja de Bateria %s -%s Cable = Cable %s -%s CNC Machine = Maquina CNC %s -%s Compressor = Compresor %s -%s Extractor = Extractor %s -%s Forcefield Emitter = Emisor de Campo de Fuerza %s -%s Furnace = Horno %s -%s Grinder = Amoladora %s -%s Music Player = Reproductor de Musica %s -%s Quarry = Cantera %s -%s Tool Workshop = Taller de Herramientas %s -Arrayed Solar %s Generator = Panel Solar %s -Fuel-Fired %s Generator = Generador a Carbon %s -Geothermal %s Generator = Generador Geotermico %s -Hydro %s Generator = Molino de Agua %s -Nuclear %s Generator Core = Nucleo de Reactor Nuclear %s -Small Solar %s Generator = Panel Solar %s -Wind %s Generator = Molino de Viento %s -Self-Contained Injector = -Constructor Mk%d = -Frame = -Frame Motor = -Template = -Template (replacing) = -Template Motor = -Template Tool = -Supply Converter = Convertidor de Alimentacion -Switching Station = Estacion de Conmutacion -Battery Box = Caja de Baterias -Fuel-Fired Alloy Furnace = Horno de Aleacion a Carbon -Fuel-Fired Furnace = Horno a Carbon -Forcefield = Campo de Fuerza -Nuclear Reactor Rod Compartment = Compartimiento para Vara de Reactor Nuclear -Wind Mill Frame = Armazon de Molino de Viento -Administrative World Anchor = - -## Machine-specific -# $1: Pruduced EU -Charge = Cargar -Discharge = Descargar -Power level = Nivel de Poder -# $1: Tier $2: current_charge $3: max_charge -@1 Battery Box: @2/@3 = Caja de Bateria @1: @2/@3 -# $1: Machine name $2: Supply $3: Demand -@1. Supply: @2 Demand: @3 = @1. Alimentacion: @2 Demanda: @3 -# $1: Production percent -Production at %d%% = Produccion en %d%% -Stopped = -Keeping %d/%d map blocks loaded = -Digging not started = -Digging finished = -Digging %d m above machine = -Digging %d m below machine = - -## CNC Machine -Element Edge = Elemento Borde -Tree = Arbol -Element Cross Double = Elemento Cruz Doble -Spike = Pica -Element Edge Double = Elemento Borde Doble -Two Curved Edge Block = Dos Bloques de Borde Curvados -Pyramid = Piramide -Slope Upside Down Inner Edge = Borde Interno de Rampa Al Reves -Slope Upside Down Edge = Borde de Rampa Al Reves -Element Straight Double = Elemento Doble Recto -Sphere = Esfera -Element End Double = Doble Fin de Elemento -Element Straight = Recta de Elemento -Horizontal Cylinder = Cilindro Horizontal -Slope Inner Edge = Borde Interno de Rampa -One Curved Edge Block = Un Bloque de Borde Curvado -Element Cross = Cruce de Elementos -Stick = Varita -Element End = Fin de Elemento -Slope Lying = Rampa en Reposo -Slope Upside Down = Rampa Al Reves -Slope Edge = Borde de Rampa -Slope = Rampa -Element T = Elemento T -Cylinder = Cilindro -Cobble = Adoquines -Stone = Piedra -Brick = Ladrillo -Dirt = Tierra -Sandstone = Arenisca -Wooden = Madera -Leaves = Hojas - -## Grinder Recipes -# $1: Name -%s Dust = Polvo de %s -Akalin = Akalina -Alatro = Alatro -Arol = Arol -Brass = Laton -Bronze = Bronce -Carbon Steel = Acero al Carbono -Cast Iron = Hierro Fundido -Chromium = Cromo -Coal = Carbon -Copper = Cobre -Gold = Oro -Mithril = Mitrilo -Silver = Plata -Stainless Steel = Acero Inoxidable -Talinite = Talinita -Tin = Estanio -Wrought Iron = Hierro Forjado -Zinc = Zinc -%.1f%%-Fissile Uranium = - -## Tools -RE Battery = -Water Can = Bidon de Agua -Lava Can = Bidon de Lava -Chainsaw = Motosierra -Flashlight = Linterna -3 nodes deep. = 3 nodos de profundo. -3 nodes tall. = 3 nodos de alto. -3 nodes wide. = 3 nodos de ancho. -3x3 nodes. = 3x3 nodos. -Use while sneaking to change Mining Drill Mk%d modes. = Manten pulsado Mayus y Usar para cambiar el modo del Taladro de Mineria Mk%d. -Mining Drill Mk%d Mode %d = Taladro de Mineria Mk%d Modo %d -Mining Drill Mk%d = Taladro de Mineria Mk%d -Mining Laser Mk%d = Laser de Mineria Mk%d -Single node. = Nodo simple. -Sonic Screwdriver = Destonillador Sonico -Tree Tap = Grifo de Arbol - -## Craft descriptions -Alloy cooking = -Grinding = -Compressing = -Extracting = diff --git a/technic/technic/locale/it.txt b/technic/technic/locale/it.txt deleted file mode 100644 index 59ba7f6..0000000 --- a/technic/technic/locale/it.txt +++ /dev/null @@ -1,201 +0,0 @@ - -## Misc -[Technic] Loaded in %f seconds = [Technic] caricato in %f secondi - -## Items -Silicon Wafer = Wafer di silicone -Doped Silicon Wafer = Wafer di silicone dopato -Enriched Uranium = Uranio arricchito -Uranium Fuel = Uranio Combustibile -Diamond Drill Head = Trivella diamantata -Blue Energy Crystal = Cristallo energetico blu -Green Energy Crystal = Cristallo energetico verde -Red Energy Crystal = Cristallo energetico rosso -Fine Copper Wire = Filo di rame fine -Copper Coil = Bobina di rame -Electric Motor = Motore elettrico -Low Voltage Transformer = Trasformatore in bassa tensione -Medium Voltage Transformer = Trasformatore in media tensione -High Voltage Transformer = Trasformatore in alta tensione -Control Logic Unit = Unità di controllo logica -Mixed Metal Ingot = Lingotto in lega ibrida -Composite Plate = Lastra composita -Copper Plate = Lastra di rame -Carbon Plate = Lastra in carbonio -Graphite = Lastra in graffite -Carbon Cloth = Fibra di carbonio -Raw Latex = Latex grezzo -Rubber Fiber = Fibra di gomma -%.1f%%-Fissile Uranium Ingot = -%.1f%%-Fissile Uranium Block = - -## Machine misc -Machine cannot be removed because it is not empty = La macchina non può essere rimossa perchè non è vuota -Inventory move disallowed due to protection = Impossibile muovere l'inventario a causa della protezione -# $1: Machine name (Includes tier) -@1 Active (@2 EU) = @1 Attivo (@2 EU) -%s Active = %s Attivo -%s Disabled = %s Disabilitato -%s Enabled = -%s Idle = %s Inattivo -%s Improperly Placed = %s Piazzato impropiamente -%s Unpowered = %s Non alimentato -%s Out Of Fuel = %s senza carburante -%s Has Bad Cabling = %s ha un cablaggio scorretto -%s Has No Network = %s non è collegata -%s Finished = %s Finito -Enable/Disable = Abilita/Disabilita -Range = Raggio -Upgrade Slots = -In: = Ingresso: -Out: = Uscita: -Slot %d = -Itemwise = Singolo elemento -Stackwise = pila completa -Owner: = -Unlocked = -Locked = -Radius: = -Enabled = -Disabled = - -## Machine names -# $1: Tier -%s Alloy Furnace = %s Fornace per leghe -%s Battery Box = %s Box batterie -%s Cable = Cavo %s -%s CNC Machine = Tornio CNC %s -%s Compressor = Compressore %s -%s Extractor = Estrattore %s -%s Forcefield Emitter = Emettitore di campo di forza %s -%s Furnace = %s Fornace -%s Grinder = %s Tritatutto -%s Music Player = Music Player %s -%s Quarry = Cava %s -%s Tool Workshop = Officina per attrezzi %s -Arrayed Solar %s Generator = %s Pannello Solare -Fuel-Fired %s Generator = %s Generatore a carbone -Geothermal %s Generator = %s Generatore Geotermico -Hydro %s Generator = Turbina Elettrica %s -Nuclear %s Generator Core = Reattore nucleare %s -Small Solar %s Generator = %s Pannello solare -Wind %s Generator = %s Generatore eolico -Self-Contained Injector = Ignettore -Constructor Mk%d = Costruttore Mk%d -Frame = Cornice -Frame Motor = Cornice del motore -Template = -Template (replacing) = Template (rimpiazzato) -Template Motor = -Template Tool = -Battery Box = Box batterie -Supply Converter = Trasformatore -Switching Station = Stazione di controllo -Fuel-Fired Alloy Furnace = Fornace per leghe a carbone -Fuel-Fired Furnace = Fornace a carbone -Wind Mill Frame = Pala eolica -Forcefield = Campo di forza -Nuclear Reactor Rod Compartment = Compartimento combustibile nucleare -Administrative World Anchor = - -## Machine-specific -# $1: Pruduced EU -Charge = Carica -Discharge = Scarica -Power level = Livello di potenza -# $1: Tier $2: current_charge $3: max_charge -@1 Battery Box: @2/@3 = @1 Box Batterie: @2/@3 -# $1: Machine name $2: Supply $3: Demand -@1. Supply: @2 Demand: @3 = @1. Prodotto: @2 Consumato: @3 -Production at %d%% = Produzione a %d%% -Choose Milling Program: = Scegliere un programma di Fresatura -Slim Elements half / normal height: = Metà elementi sottili / altezza normale: -Current track %s = Traccia corrente %s -Stopped = -Keeping %d/%d map blocks loaded = -Digging not started = -Digging finished = -Digging %d m above machine = -Digging %d m below machine = - -## CNC -Cylinder = Cilindro -Element Cross = Elemento a croce -Element Cross Double = Elemento a croce doppio -Element Edge = Elemento bordo -Element Edge Double = Elemento bordo doppio -Element End = Elemento finale -Element End Double = Elemento finale doppio -Element Straight = Elemento dritto -Element Straight Double = Elemento dritto doppio -Element T = Elemento a T -Element T Double = Elemento a T doppio -Horizontal Cylinder = Cilindro orizzontale -One Curved Edge Block = Blocco con bordo curvo -Pyramid = Piramide -Slope = Inclinato -Slope Edge = Bordo inclinato -Slope Inner Edge = Bordo interno inclinato -Slope Lying = Pendenza bugiarda -Slope Upside Down = Pendenza capovolta -Slope Upside Down Edge = Bordo inclinato capovolto -Slope Upside Down Inner Edge = Bordo interno inclinato capovolto -Sphere = Sfera -Spike = Spuntone -Stick = Bastone -Two Curved Edge Block = Blocco con bordo a doppia curva -Brick = Mattone -Cobble = Ciottolato -Dirt = Terra -Leaves = Foglie -Sandstone = Arenaria -Stone = Pietra -Tree = Albero -Wooden = Legno - -## Grinder Recipes -# $1: Name -%s Dust = Polvere di %s -Akalin = Alcalino -Alatro = Alatro -Arol = Arol -Brass = Ottone -Bronze = Bronzo -Carbon Steel = Acciaio al Carbonio -Cast Iron = Ghisa -Chromium = Cromo -Coal = Carbone -Copper = Rame -Gold = Oro -Mithril = Mithril -Silver = Argento -Stainless Steel = Acciaio Inossidabile -Talinite = Talinite -Tin = Stagno -Wrought Iron = Ferro Battuto -Zinc = Zinco -%.1f%%-Fissile Uranium = - -## Tools -RE Battery = -Water Can = Serbatoio d'acqua -Lava Can = Serbatoio di lava -Chainsaw = Motosega -Flashlight = Torcia -3 nodes deep. = 3 nodi in profondità. -3 nodes tall. = 3 nodi in altezza. -3 nodes wide. = 3 nodi in larghezza. -3x3 nodes. = 3x3 nodi. -Use while sneaking to change Mining Drill Mk%d modes. = Premi shift (freccia grossa) e usa per cambiare modalità nella trivella da miniera Mk%d. -Mining Drill Mk%d Mode %d = Trivella mk%d in modalità %d -Mining Drill Mk%d = Trivella da miniera mk%d -Mining Laser Mk%d = Laser da miniera mk%d -Single node. = Nodo singolo. -Sonic Screwdriver = Cacciavite sonico -Tree Tap = Batti albero - -## Craft descriptions -Alloy cooking = Cottura lege -Grinding = Macinazione -Compressing = Compressione -Extracting = Estrazione diff --git a/technic/technic/locale/template.txt b/technic/technic/locale/template.txt deleted file mode 100644 index 0464241..0000000 --- a/technic/technic/locale/template.txt +++ /dev/null @@ -1,211 +0,0 @@ -# template.txt -# Template for translations of Technic - - -## Misc -[Technic] Loaded in %f seconds = - -## Items -Silicon Wafer = -Doped Silicon Wafer = -Enriched Uranium = -Uranium Fuel = -Diamond Drill Head = -Blue Energy Crystal = -Green Energy Crystal = -Red Energy Crystal = -Fine Copper Wire = -Copper Coil = -Electric Motor = -Low Voltage Transformer = -Medium Voltage Transformer = -High Voltage Transformer = -Control Logic Unit = -Mixed Metal Ingot = -Composite Plate = -Copper Plate = -Carbon Plate = -Graphite = -Carbon Cloth = -Raw Latex = -Rubber Fiber = -%.1f%%-Fissile Uranium Ingot = -%.1f%%-Fissile Uranium Block = - -## Machine misc -Machine cannot be removed because it is not empty = -Inventory move disallowed due to protection = -# $1: Machine name (Includes tier) -@1 Active (@2 EU) = -%s Active = -%s Disabled = -%s Enabled = -%s Idle = -%s Improperly Placed = -%s is empty = -%s Unpowered = -%s Out Of Fuel = -%s Has Bad Cabling = -%s (Slave) = -%s Has No Network = -%s Finished = -Enable/Disable = -Range = -Upgrade Slots = -In: = -Out: = -Slot %d = -Itemwise = -Stackwise = -Ignoring Mesecon Signal = -Controlled by Mesecon Signal = -Owner: = -Unlocked = -Locked = -Radius: = -Enabled = -Disabled = - -## Machine names -# $1: Tier -%s Alloy Furnace = -%s Battery Box = -%s Cable = -%s CNC Machine = -%s Centrifuge = -%s Compressor = -%s Extractor = -%s Forcefield Emitter = -%s Furnace = -%s Grinder = -%s Music Player = -%s Quarry = -%s Tool Workshop = -Arrayed Solar %s Generator = -Fuel-Fired %s Generator = -Geothermal %s Generator = -Hydro %s Generator = -Nuclear %s Generator Core = -Small Solar %s Generator = -Wind %s Generator = -Self-Contained Injector = -Constructor Mk%d = -Frame = -Frame Motor = -Template = -Template (replacing) = -Template Motor = -Template Tool = -Battery Box = -Supply Converter = -Switching Station = -Fuel-Fired Alloy Furnace = -Fuel-Fired Furnace = -Wind Mill Frame = -Forcefield = -Nuclear Reactor Rod Compartment = -Administrative World Anchor = - -## Machine-specific -# $1: Pruduced EU -Charge = -Discharge = -Power level = -# $1: Tier $2: current_charge $3: max_charge -@1 Battery Box: @2/@3 = -# $1: Machine name $2: Supply $3: Demand -@1. Supply: @2 Demand: @3 = -Production at %d%% = -Choose Milling Program: = -Slim Elements half / normal height: = -Current track %s = -Stopped = -Keeping %d/%d map blocks loaded = -Digging not started = -Digging finished = -Digging %d m above machine = -Digging %d m below machine = -@1 (@2 @3 -> @4 @5) = - -## CNC -Cylinder = -Element Cross = -Element Cross Double = -Element Edge = -Element Edge Double = -Element End = -Element End Double = -Element Straight = -Element Straight Double = -Element T = -Element T Double = -Horizontal Cylinder = -One Curved Edge Block = -Pyramid = -Slope = -Slope Edge = -Slope Inner Edge = -Slope Lying = -Slope Upside Down = -Slope Upside Down Edge = -Slope Upside Down Inner Edge = -Sphere = -Spike = -Stick = -Two Curved Edge Block = -Brick = -Cobble = -Dirt = -Leaves = -Sandstone = -Stone = -Tree = -Wooden = - -## Grinder Recipes -# $1: Name -%s Dust = -Akalin = -Alatro = -Arol = -Brass = -Bronze = -Carbon Steel = -Cast Iron = -Chromium = -Coal = -Copper = -Gold = -Mithril = -Silver = -Stainless Steel = -Talinite = -Tin = -Wrought Iron = -Zinc = -%.1f%%-Fissile Uranium = - -## Tools -RE Battery = -Water Can = -Lava Can = -Chainsaw = -Flashlight = -3 nodes deep. = -3 nodes tall. = -3 nodes wide. = -3x3 nodes. = -Use while sneaking to change Mining Drill Mk%d modes. = -Mining Drill Mk%d Mode %d = -Mining Drill Mk%d = -Mining Laser Mk%d = -Single node. = -Sonic Screwdriver = -Tree Tap = - -## Craft descriptions -Alloy cooking = -Grinding = -Compressing = -Extracting = -Separating = diff --git a/technic/technic/machines/HV/battery_box.lua b/technic/technic/machines/HV/battery_box.lua deleted file mode 100644 index 1e054ec..0000000 --- a/technic/technic/machines/HV/battery_box.lua +++ /dev/null @@ -1,21 +0,0 @@ --- HV battery box -minetest.register_craft({ - output = 'technic:hv_battery_box0', - recipe = { - {'technic:mv_battery_box0', 'technic:mv_battery_box0', 'technic:mv_battery_box0'}, - {'technic:mv_battery_box0', 'technic:hv_transformer', 'technic:mv_battery_box0'}, - {'', 'technic:hv_cable0', ''}, - } -}) - -technic.register_battery_box({ - tier = "HV", - max_charge = 1000000, - charge_rate = 100000, - discharge_rate = 400000, - charge_step = 10000, - discharge_step = 40000, - upgrade = 1, - tube = 1, -}) - diff --git a/technic/technic/machines/HV/cables.lua b/technic/technic/machines/HV/cables.lua deleted file mode 100644 index 25297c8..0000000 --- a/technic/technic/machines/HV/cables.lua +++ /dev/null @@ -1,12 +0,0 @@ - -minetest.register_craft({ - output = 'technic:hv_cable0 3', - recipe = { - {'homedecor:plastic_sheeting', 'homedecor:plastic_sheeting', 'homedecor:plastic_sheeting'}, - {'technic:mv_cable0', 'technic:mv_cable0', 'technic:mv_cable0'}, - {'homedecor:plastic_sheeting', 'homedecor:plastic_sheeting', 'homedecor:plastic_sheeting'}, - } -}) - -technic.register_cable("HV", 3/16) - diff --git a/technic/technic/machines/HV/forcefield.lua b/technic/technic/machines/HV/forcefield.lua deleted file mode 100644 index 0f0836d..0000000 --- a/technic/technic/machines/HV/forcefield.lua +++ /dev/null @@ -1,261 +0,0 @@ ---- Forcefield generator. --- @author ShadowNinja --- --- Forcefields are powerful barriers but they consume huge amounts of power. --- The forcefield Generator is an HV machine. - --- How expensive is the generator? --- Leaves room for upgrades lowering the power drain? -local forcefield_power_drain = 10 - -local S = technic.getter - -minetest.register_craft({ - output = "technic:forcefield_emitter_off", - recipe = { - {"default:mese", "technic:motor", "default:mese" }, - {"technic:deployer_off", "technic:machine_casing", "technic:deployer_off"}, - {"default:mese", "technic:hv_cable0", "default:mese" }, - } -}) - - -local replaceable_cids = {} - -minetest.after(0, function() - for name, ndef in pairs(minetest.registered_nodes) do - if ndef.buildable_to == true and name ~= "ignore" then - replaceable_cids[minetest.get_content_id(name)] = true - end - end -end) - - --- Idea: Let forcefields have different colors by upgrade slot. --- Idea: Let forcefields add up by detecting if one hits another. --- ___ __ --- / \/ \ --- | | --- \___/\___/ - -local function update_forcefield(pos, meta, active, first) - local shape = meta:get_int("shape") - local range = meta:get_int("range") - local vm = VoxelManip() - local MinEdge, MaxEdge = vm:read_from_map(vector.subtract(pos, range), - vector.add(pos, range)) - local area = VoxelArea:new({MinEdge = MinEdge, MaxEdge = MaxEdge}) - local data = vm:get_data() - - local c_air = minetest.get_content_id("air") - local c_field = minetest.get_content_id("technic:forcefield") - - for z = -range, range do - for y = -range, range do - local vi = area:index(pos.x + (-range), pos.y + y, pos.z + z) - for x = -range, range do - local relevant - if shape == 0 then - local squared = x * x + y * y + z * z - relevant = - squared <= range * range + range and - squared >= (range - 1) * (range - 1) + (range - 1) - else - relevant = - x == -range or x == range or - y == -range or y == range or - z == -range or z == range - end - if relevant then - local cid = data[vi] - if active and replaceable_cids[cid] then - data[vi] = c_field - elseif not active and cid == c_field then - data[vi] = c_air - end - end - vi = vi + 1 - end - end - end - - vm:set_data(data) - vm:update_liquids() - vm:write_to_map() - -- update_map is very slow, but if we don't call it we'll - -- get phantom blocks on the client. - if not active or first then - vm:update_map() - end -end - -local function set_forcefield_formspec(meta) - local formspec = "size[5,2.25]".. - "field[0.3,0.5;2,1;range;"..S("Range")..";"..meta:get_int("range").."]" - -- The names for these toggle buttons are explicit about which - -- state they'll switch to, so that multiple presses (arising - -- from the ambiguity between lag and a missed press) only make - -- the single change that the user expects. - if meta:get_int("shape") == 0 then - formspec = formspec.."button[3,0.2;2,1;shape1;"..S("Sphere").."]" - else - formspec = formspec.."button[3,0.2;2,1;shape0;"..S("Cube").."]" - end - if meta:get_int("mesecon_mode") == 0 then - formspec = formspec.."button[0,1;5,1;mesecon_mode_1;"..S("Ignoring Mesecon Signal").."]" - else - formspec = formspec.."button[0,1;5,1;mesecon_mode_0;"..S("Controlled by Mesecon Signal").."]" - end - if meta:get_int("enabled") == 0 then - formspec = formspec.."button[0,1.75;5,1;enable;"..S("%s Disabled"):format(S("%s Forcefield Emitter"):format("HV")).."]" - else - formspec = formspec.."button[0,1.75;5,1;disable;"..S("%s Enabled"):format(S("%s Forcefield Emitter"):format("HV")).."]" - end - meta:set_string("formspec", formspec) -end - -local forcefield_receive_fields = function(pos, formname, fields, sender) - local meta = minetest.get_meta(pos) - local range = nil - if fields.range then - range = tonumber(fields.range) or 0 - -- Smallest field is 5. Anything less is asking for trouble. - -- Largest is 20. It is a matter of pratical node handling. - -- At the maximim range updating the forcefield takes about 0.2s - range = math.max(range, 5) - range = math.min(range, 20) - if range == meta:get_int("range") then range = nil end - end - if fields.shape0 or fields.shape1 or range then - update_forcefield(pos, meta, false) - end - if range then meta:set_int("range", range) end - if fields.shape0 then meta:set_int("shape", 0) end - if fields.shape1 then meta:set_int("shape", 1) end - if fields.enable then meta:set_int("enabled", 1) end - if fields.disable then meta:set_int("enabled", 0) end - if fields.mesecon_mode_0 then meta:set_int("mesecon_mode", 0) end - if fields.mesecon_mode_1 then meta:set_int("mesecon_mode", 1) end - set_forcefield_formspec(meta) -end - -local mesecons = { - effector = { - action_on = function(pos, node) - minetest.get_meta(pos):set_int("mesecon_effect", 1) - end, - action_off = function(pos, node) - minetest.get_meta(pos):set_int("mesecon_effect", 0) - end - } -} - -local function run(pos, node) - local meta = minetest.get_meta(pos) - local eu_input = meta:get_int("HV_EU_input") - local enabled = meta:get_int("enabled") ~= 0 and (meta:get_int("mesecon_mode") == 0 or meta:get_int("mesecon_effect") ~= 0) - local machine_name = S("%s Forcefield Emitter"):format("HV") - - local range = meta:get_int("range") - local power_requirement - if meta:get_int("shape") == 0 then - power_requirement = math.floor(4 * math.pi * range * range) - else - power_requirement = 24 * range * range - end - power_requirement = power_requirement * forcefield_power_drain - - if not enabled then - if node.name == "technic:forcefield_emitter_on" then - update_forcefield(pos, meta, false) - technic.swap_node(pos, "technic:forcefield_emitter_off") - meta:set_string("infotext", S("%s Disabled"):format(machine_name)) - end - meta:set_int("HV_EU_demand", 0) - return - end - meta:set_int("HV_EU_demand", power_requirement) - if eu_input < power_requirement then - meta:set_string("infotext", S("%s Unpowered"):format(machine_name)) - if node.name == "technic:forcefield_emitter_on" then - update_forcefield(pos, meta, false) - technic.swap_node(pos, "technic:forcefield_emitter_off") - end - elseif eu_input >= power_requirement then - local first = false - if node.name == "technic:forcefield_emitter_off" then - first = true - technic.swap_node(pos, "technic:forcefield_emitter_on") - meta:set_string("infotext", S("%s Active"):format(machine_name)) - end - update_forcefield(pos, meta, true, first) - end -end - -minetest.register_node("technic:forcefield_emitter_off", { - description = S("%s Forcefield Emitter"):format("HV"), - tiles = {"technic_forcefield_emitter_off.png"}, - groups = {cracky = 1, technic_machine = 1}, - on_receive_fields = forcefield_receive_fields, - on_construct = function(pos) - local meta = minetest.get_meta(pos) - meta:set_int("HV_EU_input", 0) - meta:set_int("HV_EU_demand", 0) - meta:set_int("range", 10) - meta:set_int("enabled", 0) - meta:set_int("mesecon_mode", 0) - meta:set_int("mesecon_effect", 0) - meta:set_string("infotext", S("%s Forcefield Emitter"):format("HV")) - set_forcefield_formspec(meta) - end, - mesecons = mesecons, - technic_run = run, -}) - -minetest.register_node("technic:forcefield_emitter_on", { - description = S("%s Forcefield Emitter"):format("HV"), - tiles = {"technic_forcefield_emitter_on.png"}, - groups = {cracky = 1, technic_machine = 1, not_in_creative_inventory=1}, - drop = "technic:forcefield_emitter_off", - on_receive_fields = forcefield_receive_fields, - on_destruct = function(pos) - local meta = minetest.get_meta(pos) - update_forcefield(pos, meta, false) - end, - mesecons = mesecons, - technic_run = run, - technic_on_disable = function (pos, node) - local meta = minetest.get_meta(pos) - update_forcefield(pos, meta, false) - technic.swap_node(pos, "technic:forcefield_emitter_off") - end, -}) - -minetest.register_node("technic:forcefield", { - description = S("%s Forcefield"):format("HV"), - sunlight_propagates = true, - drawtype = "glasslike", - groups = {not_in_creative_inventory=1}, - paramtype = "light", - light_source = 15, - diggable = false, - drop = '', - tiles = {{ - name = "technic_forcefield_animated.png", - animation = { - type = "vertical_frames", - aspect_w = 16, - aspect_h = 16, - length = 1.0, - }, - }}, -}) - - -if minetest.get_modpath("mesecons_mvps") then - mesecon.register_mvps_stopper("technic:forcefield") -end - -technic.register_machine("HV", "technic:forcefield_emitter_on", technic.receiver) -technic.register_machine("HV", "technic:forcefield_emitter_off", technic.receiver) - diff --git a/technic/technic/machines/HV/generator.lua b/technic/technic/machines/HV/generator.lua deleted file mode 100644 index aa83590..0000000 --- a/technic/technic/machines/HV/generator.lua +++ /dev/null @@ -1,13 +0,0 @@ -minetest.register_alias("hv_generator", "technic:hv_generator") - -minetest.register_craft({ - output = 'technic:hv_generator', - recipe = { - {'technic:carbon_plate', 'technic:mv_generator', 'technic:composite_plate'}, - {'pipeworks:tube_1', 'technic:hv_transformer', 'pipeworks:tube_1'}, - {'technic:stainless_steel_ingot', 'technic:hv_cable0', 'technic:stainless_steel_ingot'}, - } -}) - -technic.register_generator({tier="HV", tube=1, supply=1200}) - diff --git a/technic/technic/machines/HV/init.lua b/technic/technic/machines/HV/init.lua deleted file mode 100644 index d7136b4..0000000 --- a/technic/technic/machines/HV/init.lua +++ /dev/null @@ -1,18 +0,0 @@ - -technic.register_tier("HV", "High Voltage") - -local path = technic.modpath.."/machines/HV" - --- Wiring stuff -dofile(path.."/cables.lua") -dofile(path.."/battery_box.lua") - --- Generators -dofile(path.."/solar_array.lua") -dofile(path.."/nuclear_reactor.lua") -dofile(path.."/generator.lua") - --- Machines -dofile(path.."/quarry.lua") -dofile(path.."/forcefield.lua") - diff --git a/technic/technic/machines/HV/nuclear_reactor.lua b/technic/technic/machines/HV/nuclear_reactor.lua deleted file mode 100644 index 3aa1ba8..0000000 --- a/technic/technic/machines/HV/nuclear_reactor.lua +++ /dev/null @@ -1,723 +0,0 @@ --- The enriched uranium rod driven EU generator. --- A very large and advanced machine providing vast amounts of power. --- Very efficient but also expensive to run as it needs uranium. (10000EU 86400 ticks (one week)) --- Provides HV EUs that can be down converted as needed. --- --- The nuclear reactor core needs water and a protective shield to work. --- This is checked now and then and if the machine is tampered with... BOOM! - -local burn_ticks = 7 * 24 * 60 * 60 -- (seconds). -local power_supply = 100000 -- EUs -local fuel_type = "technic:uranium_fuel" -- The reactor burns this stuff - -local S = technic.getter - -if not vector.length_square then - vector.length_square = function (v) - return v.x*v.x + v.y*v.y + v.z*v.z - end -end - --- FIXME: recipe must make more sense like a rod recepticle, steam chamber, HV generator? -minetest.register_craft({ - output = 'technic:hv_nuclear_reactor_core', - recipe = { - {'technic:carbon_plate', 'default:obsidian_glass', 'technic:carbon_plate'}, - {'technic:composite_plate', 'technic:machine_casing', 'technic:composite_plate'}, - {'technic:stainless_steel_ingot', 'technic:hv_cable0', 'technic:stainless_steel_ingot'}, - } -}) - -local generator_formspec = - "invsize[8,9;]".. - "label[0,0;"..S("Nuclear Reactor Rod Compartment").."]".. - "list[current_name;src;2,1;3,2;]".. - "list[current_player;main;0,5;8,4;]".. - "listring[]" - --- "Boxy sphere" -local nodebox = { - { -0.353, -0.353, -0.353, 0.353, 0.353, 0.353 }, -- Box - { -0.495, -0.064, -0.064, 0.495, 0.064, 0.064 }, -- Circle +-x - { -0.483, -0.128, -0.128, 0.483, 0.128, 0.128 }, - { -0.462, -0.191, -0.191, 0.462, 0.191, 0.191 }, - { -0.433, -0.249, -0.249, 0.433, 0.249, 0.249 }, - { -0.397, -0.303, -0.303, 0.397, 0.303, 0.303 }, - { -0.305, -0.396, -0.305, 0.305, 0.396, 0.305 }, -- Circle +-y - { -0.250, -0.432, -0.250, 0.250, 0.432, 0.250 }, - { -0.191, -0.461, -0.191, 0.191, 0.461, 0.191 }, - { -0.130, -0.482, -0.130, 0.130, 0.482, 0.130 }, - { -0.066, -0.495, -0.066, 0.066, 0.495, 0.066 }, - { -0.064, -0.064, -0.495, 0.064, 0.064, 0.495 }, -- Circle +-z - { -0.128, -0.128, -0.483, 0.128, 0.128, 0.483 }, - { -0.191, -0.191, -0.462, 0.191, 0.191, 0.462 }, - { -0.249, -0.249, -0.433, 0.249, 0.249, 0.433 }, - { -0.303, -0.303, -0.397, 0.303, 0.303, 0.397 }, -} - -local reactor_siren = {} -local function siren_set_state(pos, newstate) - local hpos = minetest.hash_node_position(pos) - local siren = reactor_siren[hpos] - if not siren then - if newstate == "off" then return end - siren = {state="off"} - reactor_siren[hpos] = siren - end - if newstate == "danger" and siren.state ~= "danger" then - if siren.handle then minetest.sound_stop(siren.handle) end - siren.handle = minetest.sound_play("technic_hv_nuclear_reactor_siren_danger_loop", {pos=pos, gain=1.5, loop=true, max_hear_distance=48}) - siren.state = "danger" - elseif newstate == "clear" then - if siren.handle then minetest.sound_stop(siren.handle) end - local clear_handle = minetest.sound_play("technic_hv_nuclear_reactor_siren_clear", {pos=pos, gain=1.5, loop=false, max_hear_distance=48}) - siren.handle = clear_handle - siren.state = "clear" - minetest.after(10, function () - if siren.handle == clear_handle then - minetest.sound_stop(clear_handle) - if reactor_siren[hpos] == siren then - reactor_siren[hpos] = nil - end - end - end) - elseif newstate == "off" and siren.state ~= "off" then - if siren.handle then minetest.sound_stop(siren.handle) end - siren.handle = nil - reactor_siren[hpos] = nil - end -end -local function siren_danger(pos, meta) - meta:set_int("siren", 1) - siren_set_state(pos, "danger") -end -local function siren_clear(pos, meta) - if meta:get_int("siren") ~= 0 then - siren_set_state(pos, "clear") - meta:set_int("siren", 0) - end -end - --- The standard reactor structure consists of a 9x9x9 cube. A cross --- section through the middle: --- --- CCCC CCCC --- CBBB BBBC --- CBSS SSBC --- CBSWWWSBC --- CBSW#WSBC --- CBSW|WSBC --- CBSS|SSBC --- CBBB|BBBC --- CCCC|CCCC --- C = Concrete, B = Blast-resistant concrete, S = Stainless Steel, --- W = water node, # = reactor core, | = HV cable --- --- The man-hole and the HV cable are only in the middle, and the man-hole --- is optional. --- --- For the reactor to operate and not melt down, it insists on the inner --- 7x7x7 portion (from the core out to the blast-resistant concrete) --- being intact. Intactness only depends on the number of nodes of the --- right type in each layer. The water layer must have water in all but --- at most one node; the steel and blast-resistant concrete layers must --- have the right material in all but at most two nodes. The permitted --- gaps are meant for the cable and man-hole, but can actually be anywhere --- and contain anything. For the reactor to be useful, a cable must --- connect to the core, but it can go in any direction. --- --- The outer concrete layer of the standard structure is not required --- for the reactor to operate. It is noted here because it used to --- be mandatory, and for historical reasons (that it predates the --- implementation of radiation) it needs to continue being adequate --- shielding of legacy reactors. If it ever ceases to be adequate --- shielding for new reactors, legacy ones should be grandfathered. -local reactor_structure_badness = function(pos) - local vm = VoxelManip() - local pos1 = vector.subtract(pos, 3) - local pos2 = vector.add(pos, 3) - local MinEdge, MaxEdge = vm:read_from_map(pos1, pos2) - local data = vm:get_data() - local area = VoxelArea:new({MinEdge=MinEdge, MaxEdge=MaxEdge}) - - local c_blast_concrete = minetest.get_content_id("technic:blast_resistant_concrete") - local c_stainless_steel = minetest.get_content_id("technic:stainless_steel_block") - local c_water_source = minetest.get_content_id("default:water_source") - local c_water_flowing = minetest.get_content_id("default:water_flowing") - - local blastlayer, steellayer, waterlayer = 0, 0, 0 - - for z = pos1.z, pos2.z do - for y = pos1.y, pos2.y do - for x = pos1.x, pos2.x do - local cid = data[area:index(x, y, z)] - if x == pos1.x or x == pos2.x or - y == pos1.y or y == pos2.y or - z == pos1.z or z == pos2.z then - if cid == c_blast_concrete then - blastlayer = blastlayer + 1 - end - elseif x == pos1.x+1 or x == pos2.x-1 or - y == pos1.y+1 or y == pos2.y-1 or - z == pos1.z+1 or z == pos2.z-1 then - if cid == c_stainless_steel then - steellayer = steellayer + 1 - end - elseif x == pos1.x+2 or x == pos2.x-2 or - y == pos1.y+2 or y == pos2.y-2 or - z == pos1.z+2 or z == pos2.z-2 then - if cid == c_water_source or cid == c_water_flowing then - waterlayer = waterlayer + 1 - end - end - end - end - end - if waterlayer > 25 then waterlayer = 25 end - if steellayer > 96 then steellayer = 96 end - if blastlayer > 216 then blastlayer = 216 end - return (25 - waterlayer) + (96 - steellayer) + (216 - blastlayer) -end - -local function meltdown_reactor(pos) - print("A reactor melted down at "..minetest.pos_to_string(pos)) - minetest.set_node(pos, {name="technic:corium_source"}) -end - -minetest.register_abm({ - nodenames = {"technic:hv_nuclear_reactor_core_active"}, - interval = 1, - chance = 1, - action = function (pos, node) - local meta = minetest.get_meta(pos) - local badness = reactor_structure_badness(pos) - local accum_badness = meta:get_int("structure_accumulated_badness") - if badness == 0 then - if accum_badness ~= 0 then - meta:set_int("structure_accumulated_badness", accum_badness - 1) - siren_clear(pos, meta) - end - else - siren_danger(pos, meta) - accum_badness = accum_badness + badness - if accum_badness >= 100 then - meltdown_reactor(pos) - else - meta:set_int("structure_accumulated_badness", accum_badness) - end - end - end, -}) - -local run = function(pos, node) - local meta = minetest.get_meta(pos) - local machine_name = S("Nuclear %s Generator Core"):format("HV") - local burn_time = meta:get_int("burn_time") or 0 - - if burn_time >= burn_ticks or burn_time == 0 then - local inv = meta:get_inventory() - if not inv:is_empty("src") then - local srclist = inv:get_list("src") - local correct_fuel_count = 0 - for _, srcstack in pairs(srclist) do - if srcstack then - if srcstack:get_name() == fuel_type then - correct_fuel_count = correct_fuel_count + 1 - end - end - end - -- Check that the reactor is complete as well - -- as the correct number of correct fuel - if correct_fuel_count == 6 and - reactor_structure_badness(pos) == 0 then - meta:set_int("burn_time", 1) - technic.swap_node(pos, "technic:hv_nuclear_reactor_core_active") - meta:set_int("HV_EU_supply", power_supply) - for idx, srcstack in pairs(srclist) do - srcstack:take_item() - inv:set_stack("src", idx, srcstack) - end - return - end - end - meta:set_int("HV_EU_supply", 0) - meta:set_int("burn_time", 0) - meta:set_string("infotext", S("%s Idle"):format(machine_name)) - technic.swap_node(pos, "technic:hv_nuclear_reactor_core") - meta:set_int("structure_accumulated_badness", 0) - siren_clear(pos, meta) - elseif burn_time > 0 then - burn_time = burn_time + 1 - meta:set_int("burn_time", burn_time) - local percent = math.floor(burn_time / burn_ticks * 100) - meta:set_string("infotext", machine_name.." ("..percent.."%)") - meta:set_int("HV_EU_supply", power_supply) - end -end - -minetest.register_node("technic:hv_nuclear_reactor_core", { - description = S("Nuclear %s Generator Core"):format("HV"), - tiles = {"technic_hv_nuclear_reactor_core.png", "technic_hv_nuclear_reactor_core.png", - "technic_hv_nuclear_reactor_core.png", "technic_hv_nuclear_reactor_core.png", - "technic_hv_nuclear_reactor_core.png", "technic_hv_nuclear_reactor_core.png"}, - groups = {cracky=1, technic_machine=1}, - legacy_facedir_simple = true, - sounds = default.node_sound_wood_defaults(), - drawtype="nodebox", - paramtype = "light", - stack_max = 1, - node_box = { - type = "fixed", - fixed = nodebox - }, - on_construct = function(pos) - local meta = minetest.get_meta(pos) - meta:set_string("infotext", S("Nuclear %s Generator Core"):format("HV")) - meta:set_int("HV_EU_supply", 0) - -- Signal to the switching station that this device burns some - -- sort of fuel and needs special handling - meta:set_int("HV_EU_from_fuel", 1) - meta:set_int("burn_time", 0) - meta:set_string("formspec", generator_formspec) - local inv = meta:get_inventory() - inv:set_size("src", 6) - end, - can_dig = technic.machine_can_dig, - on_destruct = function(pos) siren_set_state(pos, "off") end, - allow_metadata_inventory_put = technic.machine_inventory_put, - allow_metadata_inventory_take = technic.machine_inventory_take, - allow_metadata_inventory_move = technic.machine_inventory_move, - technic_run = run, -}) - -minetest.register_node("technic:hv_nuclear_reactor_core_active", { - tiles = {"technic_hv_nuclear_reactor_core.png", "technic_hv_nuclear_reactor_core.png", - "technic_hv_nuclear_reactor_core.png", "technic_hv_nuclear_reactor_core.png", - "technic_hv_nuclear_reactor_core.png", "technic_hv_nuclear_reactor_core.png"}, - groups = {cracky=1, technic_machine=1, radioactive=11000, not_in_creative_inventory=1}, - legacy_facedir_simple = true, - sounds = default.node_sound_wood_defaults(), - drop="technic:hv_nuclear_reactor_core", - drawtype="nodebox", - light_source = 15, - paramtype = "light", - node_box = { - type = "fixed", - fixed = nodebox - }, - can_dig = technic.machine_can_dig, - after_dig_node = meltdown_reactor, - on_destruct = function(pos) siren_set_state(pos, "off") end, - allow_metadata_inventory_put = technic.machine_inventory_put, - allow_metadata_inventory_take = technic.machine_inventory_take, - allow_metadata_inventory_move = technic.machine_inventory_move, - technic_run = run, - technic_on_disable = function(pos, node) - local timer = minetest.get_node_timer(pos) - timer:start(1) - end, - on_timer = function(pos, node) - local meta = minetest.get_meta(pos) - - -- Connected back? - if meta:get_int("HV_EU_timeout") > 0 then return false end - - local burn_time = meta:get_int("burn_time") or 0 - - if burn_time >= burn_ticks or burn_time == 0 then - meta:set_int("HV_EU_supply", 0) - meta:set_int("burn_time", 0) - technic.swap_node(pos, "technic:hv_nuclear_reactor_core") - meta:set_int("structure_accumulated_badness", 0) - siren_clear(pos, meta) - return false - end - - meta:set_int("burn_time", burn_time + 1) - return true - end, -}) - -technic.register_machine("HV", "technic:hv_nuclear_reactor_core", technic.producer) -technic.register_machine("HV", "technic:hv_nuclear_reactor_core_active", technic.producer) - --- radioactivity - --- Radiation resistance represents the extent to which a material --- attenuates radiation passing through it; i.e., how good a radiation --- shield it is. This is identified per node type. For materials that --- exist in real life, the radiation resistance value that this system --- uses for a node type consisting of a solid cube of that material is the --- (approximate) number of halvings of ionising radiation that is achieved --- by a metre of the material in real life. This is approximately --- proportional to density, which provides a good way to estimate it. --- Homogeneous mixtures of materials have radiation resistance computed --- by a simple weighted mean. Note that the amount of attenuation that --- a material achieves in-game is not required to be (and is not) the --- same as the attenuation achieved in real life. --- --- Radiation resistance for a node type may be specified in the node --- definition, under the key "radiation_resistance". As an interim --- measure, until node definitions widely include this, this code --- knows a bunch of values for particular node types in several mods, --- and values for groups of node types. The node definition takes --- precedence if it specifies a value. Nodes for which no value at --- all is known are taken to provide no radiation resistance at all; --- this is appropriate for the majority of node types. Only node types --- consisting of a fairly homogeneous mass of material should report --- non-zero radiation resistance; anything with non-uniform geometry --- or complex internal structure should show no radiation resistance. --- Fractional resistance values are permitted; two significant figures --- is the recommended precision. -local default_radiation_resistance_per_node = { - ["default:brick"] = 13, - ["default:bronzeblock"] = 45, - ["default:clay"] = 15, - ["default:coalblock"] = 9.6, - ["default:cobble"] = 15, - ["default:copperblock"] = 46, - ["default:desert_cobble"] = 15, - ["default:desert_sand"] = 10, - ["default:desert_stone"] = 17, - ["default:desert_stonebrick"] = 17, - ["default:diamondblock"] = 24, - ["default:dirt"] = 8.2, - ["default:dirt_with_grass"] = 8.2, - ["default:dirt_with_grass_footsteps"] = 8.2, - ["default:dirt_with_snow"] = 8.2, - ["default:glass"] = 17, - ["default:goldblock"] = 170, - ["default:gravel"] = 10, - ["default:ice"] = 5.6, - ["default:lava_flowing"] = 8.5, - ["default:lava_source"] = 17, - ["default:mese"] = 21, - ["default:mossycobble"] = 15, - ["default:nyancat"] = 1000, - ["default:nyancat_rainbow"] = 1000, - ["default:obsidian"] = 18, - ["default:obsidian_glass"] = 18, - ["default:sand"] = 10, - ["default:sandstone"] = 15, - ["default:sandstonebrick"] = 15, - ["default:snowblock"] = 1.7, - ["default:steelblock"] = 40, - ["default:stone"] = 17, - ["default:stone_with_coal"] = 16, - ["default:stone_with_copper"] = 20, - ["default:stone_with_diamond"] = 18, - ["default:stone_with_gold"] = 34, - ["default:stone_with_iron"] = 20, - ["default:stone_with_mese"] = 17, - ["default:stonebrick"] = 17, - ["default:water_flowing"] = 2.8, - ["default:water_source"] = 5.6, - ["farming:desert_sand_soil"] = 10, - ["farming:desert_sand_soil_wet"] = 10, - ["farming:soil"] = 8.2, - ["farming:soil_wet"] = 8.2, - ["glooptest:akalin_crystal_glass"] = 21, - ["glooptest:akalinblock"] = 40, - ["glooptest:alatro_crystal_glass"] = 21, - ["glooptest:alatroblock"] = 40, - ["glooptest:amethystblock"] = 18, - ["glooptest:arol_crystal_glass"] = 21, - ["glooptest:crystal_glass"] = 21, - ["glooptest:emeraldblock"] = 19, - ["glooptest:heavy_crystal_glass"] = 21, - ["glooptest:mineral_akalin"] = 20, - ["glooptest:mineral_alatro"] = 20, - ["glooptest:mineral_amethyst"] = 17, - ["glooptest:mineral_arol"] = 20, - ["glooptest:mineral_desert_coal"] = 16, - ["glooptest:mineral_desert_iron"] = 20, - ["glooptest:mineral_emerald"] = 17, - ["glooptest:mineral_kalite"] = 20, - ["glooptest:mineral_ruby"] = 18, - ["glooptest:mineral_sapphire"] = 18, - ["glooptest:mineral_talinite"] = 20, - ["glooptest:mineral_topaz"] = 18, - ["glooptest:reinforced_crystal_glass"] = 21, - ["glooptest:rubyblock"] = 27, - ["glooptest:sapphireblock"] = 27, - ["glooptest:talinite_crystal_glass"] = 21, - ["glooptest:taliniteblock"] = 40, - ["glooptest:topazblock"] = 24, - ["mesecons_extrawires:mese_powered"] = 21, - ["moreblocks:cactus_brick"] = 13, - ["moreblocks:cactus_checker"] = 8.5, - ["moreblocks:circle_stone_bricks"] = 17, - ["moreblocks:clean_glass"] = 17, - ["moreblocks:coal_checker"] = 9.0, - ["moreblocks:coal_glass"] = 17, - ["moreblocks:coal_stone"] = 17, - ["moreblocks:coal_stone_bricks"] = 17, - ["moreblocks:glow_glass"] = 17, - ["moreblocks:grey_bricks"] = 15, - ["moreblocks:iron_checker"] = 11, - ["moreblocks:iron_glass"] = 17, - ["moreblocks:iron_stone"] = 17, - ["moreblocks:iron_stone_bricks"] = 17, - ["moreblocks:plankstone"] = 9.3, - ["moreblocks:split_stone_tile"] = 15, - ["moreblocks:split_stone_tile_alt"] = 15, - ["moreblocks:stone_tile"] = 15, - ["moreblocks:super_glow_glass"] = 17, - ["moreblocks:tar"] = 7.0, - ["moreblocks:wood_tile"] = 1.7, - ["moreblocks:wood_tile_center"] = 1.7, - ["moreblocks:wood_tile_down"] = 1.7, - ["moreblocks:wood_tile_flipped"] = 1.7, - ["moreblocks:wood_tile_full"] = 1.7, - ["moreblocks:wood_tile_left"] = 1.7, - ["moreblocks:wood_tile_right"] = 1.7, - ["moreblocks:wood_tile_up"] = 1.7, - ["moreores:mineral_mithril"] = 18, - ["moreores:mineral_silver"] = 21, - ["moreores:mineral_tin"] = 19, - ["moreores:mithril_block"] = 26, - ["moreores:silver_block"] = 53, - ["moreores:tin_block"] = 37, - ["snow:snow_brick"] = 2.8, - ["technic:brass_block"] = 43, - ["technic:carbon_steel_block"] = 40, - ["technic:cast_iron_block"] = 40, - ["technic:chernobylite_block"] = 40, - ["technic:chromium_block"] = 37, - ["technic:corium_flowing"] = 40, - ["technic:corium_source"] = 80, - ["technic:granite"] = 18, - ["technic:lead_block"] = 80, - ["technic:marble"] = 18, - ["technic:marble_bricks"] = 18, - ["technic:mineral_chromium"] = 19, - ["technic:mineral_uranium"] = 71, - ["technic:mineral_zinc"] = 19, - ["technic:stainless_steel_block"] = 40, - ["technic:zinc_block"] = 36, - ["tnt:tnt"] = 11, - ["tnt:tnt_burning"] = 11, -} -local default_radiation_resistance_per_group = { - concrete = 16, - tree = 3.4, - uranium_block = 500, - wood = 1.7, -} -local cache_radiation_resistance = {} -local function node_radiation_resistance(nodename) - local eff = cache_radiation_resistance[nodename] - if eff then return eff end - local def = minetest.registered_nodes[nodename] or {groups={}} - eff = def.radiation_resistance or default_radiation_resistance_per_node[nodename] - if not eff then - for g, v in pairs(def.groups) do - if v > 0 and default_radiation_resistance_per_group[g] then - eff = default_radiation_resistance_per_group[g] - break - end - end - end - if not eff then eff = 0 end - cache_radiation_resistance[nodename] = eff - return eff -end - --- Radioactive nodes cause damage to nearby players. The damage --- effect depends on the intrinsic strength of the radiation source, --- the distance between the source and the player, and the shielding --- effect of the intervening material. These determine a rate of damage; --- total damage caused is the integral of this over time. --- --- In the absence of effective shielding, for a specific source the --- damage rate varies realistically in inverse proportion to the square --- of the distance. (Distance is measured to the player's abdomen, --- not to the nominal player position which corresponds to the foot.) --- However, if the player is inside a non-walkable (liquid or gaseous) --- radioactive node, the nominal distance could go to zero, yielding --- infinite damage. In that case, the player's body is displacing the --- radioactive material, so the effective distance should remain non-zero. --- We therefore apply a lower distance bound of sqrt(0.75) m, which is --- the maximum distance one can get from the node centre within the node. --- --- A radioactive node is identified by being in the "radioactive" group, --- and the group value signifies the strength of the radiation source. --- The group value is the distance in millimetres from a node at which --- an unshielded player will be damaged by 0.25 HP/s. Or, equivalently, --- it is 2000 times the square root of the damage rate in HP/s that an --- unshielded player 1 m away will take. --- --- Shielding is assessed by sampling every 0.25 m along the path --- from the source to the player, ignoring the source node itself. --- The summed shielding values from the sampled nodes yield a measure --- of the total amount of shielding on the path. As in reality, --- shielding causes exponential attenuation of radiation. However, the --- effect is scaled down relative to real life. A metre of a node with --- radiation resistance value R yields attenuation of sqrt(R)*0.1 nepers. --- (In real life it would be about R*0.69 nepers, by the definition --- of the radiation resistance values.) The sqrt part of this formula --- scales down the differences between shielding types, reflecting the --- game's simplification of making expensive materials such as gold --- readily available in cubic metres. The multiplicative factor in the --- formula scales down the difference between shielded and unshielded --- safe distances, avoiding the latter becoming impractically large. --- --- Damage is processed at rates down to 0.25 HP/s, which in the absence of --- shielding is attained at the distance specified by the "radioactive" --- group value. Computed damage rates below 0.25 HP/s result in no --- damage at all to the player. This gives the player an opportunity --- to be safe, and limits the range at which source/player interactions --- need to be considered. -local assumed_abdomen_offset = vector.new(0, 1, 0) -local assumed_abdomen_offset_length = vector.length(assumed_abdomen_offset) -local cache_scaled_shielding = {} - -local damage_enabled = minetest.setting_getbool("enable_damage") - -if damage_enabled then - minetest.register_abm({ - nodenames = {"group:radioactive"}, - interval = 1, - chance = 1, - action = function (pos, node) - local strength = minetest.registered_nodes[node.name].groups.radioactive - for _, o in ipairs(minetest.get_objects_inside_radius(pos, strength*0.001 + assumed_abdomen_offset_length)) do - if o:is_player() then - local rel = vector.subtract(vector.add(o:getpos(), assumed_abdomen_offset), pos) - local dist_sq = vector.length_square(rel) - local dist = math.sqrt(dist_sq) - local dirstep = dist == 0 and vector.new(0,0,0) or vector.divide(rel, dist*4) - local intpos = pos - local shielding = 0 - for intdist = 0.25, dist, 0.25 do - intpos = vector.add(intpos, dirstep) - local intnodepos = vector.round(intpos) - if not vector.equals(intnodepos, pos) then - local sname = minetest.get_node(intnodepos).name - local sval = cache_scaled_shielding[sname] - if not sval then - sval = math.sqrt(node_radiation_resistance(sname)) * -0.025 - cache_scaled_shielding[sname] = sval - end - shielding = shielding + sval - end - end - local dmg_rate = 0.25e-6 * strength*strength * math.exp(shielding) / math.max(0.75, dist_sq) - if dmg_rate >= 0.25 then - local dmg_int = math.floor(dmg_rate) - if math.random() < dmg_rate-dmg_int then - dmg_int = dmg_int + 1 - end - if dmg_int > 0 then - o:set_hp(math.max(o:get_hp() - dmg_int, 0)) - end - end - end - end - end, - }) -end - --- radioactive materials that can result from destroying a reactor -local corium_griefing = 1 -if (not technic.config:get_bool("enable_corium_griefing")) then - corium_griefing = 0 -end - -for _, state in ipairs({ "flowing", "source" }) do - minetest.register_node("technic:corium_"..state, { - description = S(state == "source" and "Corium Source" or "Flowing Corium"), - drawtype = (state == "source" and "liquid" or "flowingliquid"), - [state == "source" and "tiles" or "special_tiles"] = {{ - name = "technic_corium_"..state.."_animated.png", - animation = { - type = "vertical_frames", - aspect_w = 16, - aspect_h = 16, - length = 3.0, - }, - }}, - paramtype = "light", - paramtype2 = (state == "flowing" and "flowingliquid" or nil), - light_source = (state == "source" and 8 or 5), - walkable = false, - pointable = false, - diggable = false, - buildable_to = true, - drop = "", - drowning = 1, - liquidtype = state, - liquid_alternative_flowing = "technic:corium_flowing", - liquid_alternative_source = "technic:corium_source", - liquid_viscosity = LAVA_VISC, - liquid_renewable = false, - damage_per_second = 6, - post_effect_color = { a=192, r=80, g=160, b=80 }, - groups = { - liquid = 2, - hot = 3, - igniter = corium_griefing, - radioactive = (state == "source" and 32000 or 16000), - not_in_creative_inventory = (state == "flowing" and 1 or nil), - }, - }) -end - -if bucket and bucket.register_liquid then - bucket.register_liquid( - "technic:corium_source", - "technic:corium_flowing", - "technic:bucket_corium", - "technic_bucket_corium.png", - "Corium Bucket" - ) -end - -minetest.register_node("technic:chernobylite_block", { - description = S("Chernobylite Block"), - tiles = { "technic_chernobylite_block.png" }, - is_ground_content = true, - groups = { cracky=1, radioactive=5000, level=2 }, - sounds = default.node_sound_stone_defaults(), - light_source = 2, - -}) - -minetest.register_abm({ - nodenames = {"group:water"}, - neighbors = {"technic:corium_source"}, - interval = 1, - chance = 1, - action = function (pos, node) - minetest.remove_node(pos) - end, -}) - -if (corium_griefing == 1) then - minetest.register_abm({ - nodenames = {"technic:corium_flowing"}, - interval = 5, - chance = 10, - action = function (pos, node) - minetest.set_node(pos, {name="technic:chernobylite_block"}) - end, - }) - minetest.register_abm({ - nodenames = { "technic:corium_source", "technic:corium_flowing" }, - interval = 4, - chance = 4, - action = function (pos, node) - for _, offset in ipairs({ - vector.new(1,0,0), - vector.new(-1,0,0), - vector.new(0,0,1), - vector.new(0,0,-1), - vector.new(0,-1,0), - }) do - if math.random(8) == 1 then - minetest.dig_node(vector.add(pos, offset)) - end - end - end, - }) -end diff --git a/technic/technic/machines/HV/quarry.lua b/technic/technic/machines/HV/quarry.lua deleted file mode 100644 index 60805cc..0000000 --- a/technic/technic/machines/HV/quarry.lua +++ /dev/null @@ -1,251 +0,0 @@ - -local S = technic.getter - -minetest.register_craft({ - recipe = { - {"technic:carbon_plate", "pipeworks:filter", "technic:composite_plate"}, - {"technic:motor", "technic:machine_casing", "technic:diamond_drill_head"}, - {"technic:carbon_steel_block", "technic:hv_cable0", "technic:carbon_steel_block"}}, - output = "technic:quarry", -}) - -local quarry_dig_above_nodes = 3 -- How far above the quarry we will dig nodes -local quarry_max_depth = 100 -local quarry_demand = 10000 - -local function set_quarry_formspec(meta) - local radius = meta:get_int("size") - local formspec = "size[6,4.3]".. - "list[context;cache;0,1;4,3;]".. - "item_image[4.8,0;1,1;technic:quarry]".. - "label[0,0.2;"..S("%s Quarry"):format("HV").."]".. - "field[4.3,3.5;2,1;size;"..S("Radius:")..";"..radius.."]" - if meta:get_int("enabled") == 0 then - formspec = formspec.."button[4,1;2,1;enable;"..S("Disabled").."]" - else - formspec = formspec.."button[4,1;2,1;disable;"..S("Enabled").."]" - end - local diameter = radius*2 + 1 - local nd = meta:get_int("dug") - local rel_y = quarry_dig_above_nodes - math.floor(nd / (diameter*diameter)) - formspec = formspec.."label[0,4;"..minetest.formspec_escape( - nd == 0 and S("Digging not started") or - (rel_y < -quarry_max_depth and S("Digging finished") or - (meta:get_int("purge_on") == 1 and S("Purging cache") or - S("Digging %d m "..(rel_y > 0 and "above" or "below").." machine") - :format(math.abs(rel_y)))) - ).."]" - formspec = formspec.."button[4,2;2,1;restart;"..S("Restart").."]" - meta:set_string("formspec", formspec) -end - -local function set_quarry_demand(meta) - local radius = meta:get_int("size") - local diameter = radius*2 + 1 - local machine_name = S("%s Quarry"):format("HV") - if meta:get_int("enabled") == 0 or meta:get_int("purge_on") == 1 then - meta:set_string("infotext", S(meta:get_int("purge_on") == 1 and "%s purging cache" or "%s Disabled"):format(machine_name)) - meta:set_int("HV_EU_demand", 0) - elseif meta:get_int("dug") == diameter*diameter * (quarry_dig_above_nodes+1+quarry_max_depth) then - meta:set_string("infotext", S("%s Finished"):format(machine_name)) - meta:set_int("HV_EU_demand", 0) - else - meta:set_string("infotext", S(meta:get_int("HV_EU_input") >= quarry_demand and "%s Active" or "%s Unpowered"):format(machine_name)) - meta:set_int("HV_EU_demand", quarry_demand) - end -end - -local function quarry_receive_fields(pos, formname, fields, sender) - local meta = minetest.get_meta(pos) - if fields.size and string.find(fields.size, "^[0-9]+$") then - local size = tonumber(fields.size) - if size >= 2 and size <= 8 and size ~= meta:get_int("size") then - meta:set_int("size", size) - meta:set_int("dug", 0) - end - end - if fields.enable then meta:set_int("enabled", 1) end - if fields.disable then meta:set_int("enabled", 0) end - if fields.restart then - meta:set_int("dug", 0) - meta:set_int("purge_on", 1) - end - set_quarry_formspec(meta) - set_quarry_demand(meta) -end - -local function quarry_handle_purge(pos) - local meta = minetest.get_meta(pos) - local inv = meta:get_inventory() - local i = 0 - for _,stack in ipairs(inv:get_list("cache")) do - i = i + 1 - if stack then - local item = stack:to_table() - if item then - technic.tube_inject_item(pos, pos, vector.new(0, 1, 0), item) - stack:clear() - inv:set_stack("cache", i, stack) - break - end - end - end - if inv:is_empty("cache") then - meta:set_int("purge_on", 0) - end -end - -local function quarry_run(pos, node) - local meta = minetest.get_meta(pos) - local inv = meta:get_inventory() - -- initialize cache for the case we load an older world - inv:set_size("cache", 12) - -- toss a coin whether we do an automatic purge. Chance 1:200 - local purge_rand = math.random() - if purge_rand <= 0.005 then - meta:set_int("purge_on", 1) - end - - if meta:get_int("enabled") and meta:get_int("HV_EU_input") >= quarry_demand and meta:get_int("purge_on") == 0 then - local pdir = minetest.facedir_to_dir(node.param2) - local qdir = pdir.x == 1 and vector.new(0,0,-1) or - (pdir.z == -1 and vector.new(-1,0,0) or - (pdir.x == -1 and vector.new(0,0,1) or - vector.new(1,0,0))) - local radius = meta:get_int("size") - local diameter = radius*2 + 1 - local startpos = vector.add(vector.add(vector.add(pos, - vector.new(0, quarry_dig_above_nodes, 0)), - pdir), - vector.multiply(qdir, -radius)) - local endpos = vector.add(vector.add(vector.add(startpos, - vector.new(0, -quarry_dig_above_nodes-quarry_max_depth, 0)), - vector.multiply(pdir, diameter-1)), - vector.multiply(qdir, diameter-1)) - local vm = VoxelManip() - local minpos, maxpos = vm:read_from_map(startpos, endpos) - local area = VoxelArea:new({MinEdge=minpos, MaxEdge=maxpos}) - local data = vm:get_data() - local c_air = minetest.get_content_id("air") - local owner = meta:get_string("owner") - local nd = meta:get_int("dug") - while nd ~= diameter*diameter * (quarry_dig_above_nodes+1+quarry_max_depth) do - local ry = math.floor(nd / (diameter*diameter)) - local ndl = nd % (diameter*diameter) - if ry % 2 == 1 then - ndl = diameter*diameter - 1 - ndl - end - local rq = math.floor(ndl / diameter) - local rp = ndl % diameter - if rq % 2 == 1 then rp = diameter - 1 - rp end - local digpos = vector.add(vector.add(vector.add(startpos, - vector.new(0, -ry, 0)), - vector.multiply(pdir, rp)), - vector.multiply(qdir, rq)) - local can_dig = true - if can_dig and minetest.is_protected and minetest.is_protected(digpos, owner) then - can_dig = false - end - local dignode - if can_dig then - dignode = technic.get_or_load_node(digpos) or minetest.get_node(digpos) - local dignodedef = minetest.registered_nodes[dignode.name] or {diggable=false} - if not dignodedef.diggable or (dignodedef.can_dig and not dignodedef.can_dig(digpos, nil)) then - can_dig = false - end - end - - if can_dig then - for ay = startpos.y, digpos.y+1, -1 do - local checkpos = {x=digpos.x, y=ay, z=digpos.z} - local checknode = technic.get_or_load_node(checkpos) or minetest.get_node(checkpos) - if checknode.name ~= "air" then - can_dig = false - break - end - end - end - nd = nd + 1 - if can_dig then - minetest.remove_node(digpos) - local drops = minetest.get_node_drops(dignode.name, "") - for _, dropped_item in ipairs(drops) do - local left = inv:add_item("cache", dropped_item) - while not left:is_empty() do - meta:set_int("purge_on", 1) - quarry_handle_purge(pos) - left = inv:add_item("cache", left) - end - end - break - end - end - if nd == diameter*diameter * (quarry_dig_above_nodes+1+quarry_max_depth) then - -- if a quarry is finished, we enable purge mode - meta:set_int("purge_on", 1) - end - meta:set_int("dug", nd) - else - -- if a quarry is disabled or has no power, we enable purge mode - meta:set_int("purge_on", 1) - end - -- if something triggered a purge, we handle it - if meta:get_int("purge_on") == 1 then - quarry_handle_purge(pos) - end - set_quarry_formspec(meta) - set_quarry_demand(meta) -end - -local function send_move_error(player) - minetest.chat_send_player(player:get_player_name(), - S("Manually taking/removing from cache by hand is not possible. ".. - "If you can't wait, restart or disable the quarry to start automatic purge.")) - return 0 -end - -minetest.register_node("technic:quarry", { - description = S("%s Quarry"):format("HV"), - tiles = {"technic_carbon_steel_block.png", "technic_carbon_steel_block.png", - "technic_carbon_steel_block.png", "technic_carbon_steel_block.png", - "technic_carbon_steel_block.png^default_tool_mesepick.png", "technic_carbon_steel_block.png"}, - inventory_image = minetest.inventorycube("technic_carbon_steel_block.png", - "technic_carbon_steel_block.png^default_tool_mesepick.png", - "technic_carbon_steel_block.png"), - paramtype2 = "facedir", - groups = {cracky=2, tubedevice=1, technic_machine = 1}, - tube = { - connect_sides = {top = 1}, - }, - on_construct = function(pos) - local meta = minetest.get_meta(pos) - meta:set_string("infotext", S("%s Quarry"):format("HV")) - meta:set_int("size", 4) - set_quarry_formspec(meta) - set_quarry_demand(meta) - end, - after_place_node = function(pos, placer, itemstack) - local meta = minetest.get_meta(pos) - meta:set_string("owner", placer:get_player_name()) - pipeworks.scan_for_tube_objects(pos) - end, - can_dig = function(pos,player) - local meta = minetest.get_meta(pos); - local inv = meta:get_inventory() - return inv:is_empty("cache") - end, - after_dig_node = pipeworks.scan_for_tube_objects, - on_receive_fields = quarry_receive_fields, - technic_run = quarry_run, - allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) - return send_move_error(player) - end, - allow_metadata_inventory_put = function(pos, listname, index, stack, player) - return send_move_error(player) - end, - allow_metadata_inventory_take = function(pos, listname, index, stack, player) - return send_move_error(player) - end -}) - -technic.register_machine("HV", "technic:quarry", technic.receiver) diff --git a/technic/technic/machines/HV/solar_array.lua b/technic/technic/machines/HV/solar_array.lua deleted file mode 100644 index 414291a..0000000 --- a/technic/technic/machines/HV/solar_array.lua +++ /dev/null @@ -1,14 +0,0 @@ --- The high voltage solar array is an assembly of medium voltage arrays. --- Solar arrays are not able to store large amounts of energy. - -minetest.register_craft({ - output = 'technic:solar_array_hv 1', - recipe = { - {'technic:solar_array_mv', 'technic:solar_array_mv', 'technic:solar_array_mv'}, - {'technic:carbon_plate', 'technic:hv_transformer', 'technic:composite_plate'}, - {'', 'technic:hv_cable0', ''}, - } -}) - -technic.register_solar_array({tier="HV", power=100}) - diff --git a/technic/technic/machines/LV/alloy_furnace.lua b/technic/technic/machines/LV/alloy_furnace.lua deleted file mode 100644 index bdf2f31..0000000 --- a/technic/technic/machines/LV/alloy_furnace.lua +++ /dev/null @@ -1,14 +0,0 @@ --- LV Alloy furnace - --- FIXME: kpoppel: I'd like to introduce an induction heating element here... -minetest.register_craft({ - output = 'technic:lv_alloy_furnace', - recipe = { - {'default:brick', 'default:brick', 'default:brick'}, - {'default:brick', 'technic:machine_casing', 'default:brick'}, - {'default:brick', 'technic:lv_cable0', 'default:brick'}, - } -}) - -technic.register_alloy_furnace({tier = "LV", speed = 1, demand = {300}}) - diff --git a/technic/technic/machines/LV/battery_box.lua b/technic/technic/machines/LV/battery_box.lua deleted file mode 100644 index 429bcd6..0000000 --- a/technic/technic/machines/LV/battery_box.lua +++ /dev/null @@ -1,19 +0,0 @@ - -minetest.register_craft({ - output = 'technic:lv_battery_box0', - recipe = { - {'group:wood', 'group:wood', 'group:wood'}, - {'technic:battery', 'technic:machine_casing', 'technic:battery'}, - {'technic:battery', 'technic:lv_cable0', 'technic:battery'}, - } -}) - -technic.register_battery_box({ - tier = "LV", - max_charge = 40000, - charge_rate = 1000, - discharge_rate = 4000, - charge_step = 500, - discharge_step = 800, -}) - diff --git a/technic/technic/machines/LV/cables.lua b/technic/technic/machines/LV/cables.lua deleted file mode 100644 index e18eae1..0000000 --- a/technic/technic/machines/LV/cables.lua +++ /dev/null @@ -1,14 +0,0 @@ - -minetest.register_alias("lv_cable", "technic:lv_cable0") - -minetest.register_craft({ - output = 'technic:lv_cable0 6', - recipe = { - {'default:paper', 'default:paper', 'default:paper'}, - {'default:copper_ingot', 'default:copper_ingot', 'default:copper_ingot'}, - {'default:paper', 'default:paper', 'default:paper'}, - } -}) - -technic.register_cable("LV", 2/16) - diff --git a/technic/technic/machines/LV/cnc.lua b/technic/technic/machines/LV/cnc.lua deleted file mode 100644 index dd67e9b..0000000 --- a/technic/technic/machines/LV/cnc.lua +++ /dev/null @@ -1,237 +0,0 @@ --- Technic CNC v1.0 by kpoppel --- Based on the NonCubic Blocks MOD v1.4 by yves_de_beck - --- Idea: --- Somehow have a tabbed/paged panel if the number of shapes should expand --- beyond what is available in the panel today. --- I could imagine some form of API allowing modders to come with their own node --- box definitions and easily stuff it in the this machine for production. - -local S = technic.getter - -local shape = {} -local onesize_products = { - slope = 2, - slope_edge = 1, - slope_inner_edge = 1, - pyramid = 2, - spike = 1, - cylinder = 2, - oblate_spheroid = 1, - sphere = 1, - stick = 8, - slope_upsdown = 2, - slope_edge_upsdown = 1, - slope_inner_edge_upsdown = 1, - cylinder_horizontal = 2, - slope_lying = 2, - onecurvededge = 1, - twocurvededge = 1, -} -local twosize_products = { - element_straight = 4, - element_end = 2, - element_cross = 1, - element_t = 1, - element_edge = 2, -} - -local cnc_formspec = - "invsize[9,11;]".. - "label[1,0;"..S("Choose Milling Program:").."]".. - "image_button[1,0.5;1,1;technic_cnc_slope.png;slope; ]".. - "image_button[2,0.5;1,1;technic_cnc_slope_edge.png;slope_edge; ]".. - "image_button[3,0.5;1,1;technic_cnc_slope_inner_edge.png;slope_inner_edge; ]".. - "image_button[4,0.5;1,1;technic_cnc_pyramid.png;pyramid; ]".. - "image_button[5,0.5;1,1;technic_cnc_spike.png;spike; ]".. - "image_button[6,0.5;1,1;technic_cnc_cylinder.png;cylinder; ]".. - "image_button[7,0.5;1,1;technic_cnc_oblate_spheroid.png;oblate_spheroid; ]".. - "image_button[8,0.5;1,1;technic_cnc_stick.png;stick; ]".. - - "image_button[1,1.5;1,1;technic_cnc_slope_upsdwn.png;slope_upsdown; ]".. - "image_button[2,1.5;1,1;technic_cnc_slope_edge_upsdwn.png;slope_edge_upsdown; ]".. - "image_button[3,1.5;1,1;technic_cnc_slope_inner_edge_upsdwn.png;slope_inner_edge_upsdown; ]".. - "image_button[4,1.5;1,1;technic_cnc_cylinder_horizontal.png;cylinder_horizontal; ]".. - "image_button[5,1.5;1,1;technic_cnc_sphere.png;sphere; ]".. - - "image_button[1,2.5;1,1;technic_cnc_slope_lying.png;slope_lying; ]".. - "image_button[2,2.5;1,1;technic_cnc_onecurvededge.png;onecurvededge; ]".. - "image_button[3,2.5;1,1;technic_cnc_twocurvededge.png;twocurvededge; ]".. - - "label[1,3.5;"..S("Slim Elements half / normal height:").."]".. - - "image_button[1,4;1,0.5;technic_cnc_full.png;full; ]".. - "image_button[1,4.5;1,0.5;technic_cnc_half.png;half; ]".. - "image_button[2,4;1,1;technic_cnc_element_straight.png;element_straight; ]".. - "image_button[3,4;1,1;technic_cnc_element_end.png;element_end; ]".. - "image_button[4,4;1,1;technic_cnc_element_cross.png;element_cross; ]".. - "image_button[5,4;1,1;technic_cnc_element_t.png;element_t; ]".. - "image_button[6,4;1,1;technic_cnc_element_edge.png;element_edge; ]".. - - "label[0, 5.5;"..S("In:").."]".. - "list[current_name;src;0.5,5.5;1,1;]".. - "label[4, 5.5;"..S("Out:").."]".. - "list[current_name;dst;5,5.5;4,1;]".. - - "list[current_player;main;0,7;8,4;]".. - "listring[current_name;dst]".. - "listring[current_player;main]".. - "listring[current_name;src]".. - "listring[current_player;main]" - -local size = 1; - --- The form handler is declared here because we need it in both the inactive and active modes --- in order to be able to change programs wile it is running. -local function form_handler(pos, formname, fields, sender) - -- REGISTER MILLING PROGRAMS AND OUTPUTS: - ------------------------------------------ - -- Program for half/full size - if fields["full"] then - size = 1 - return - end - - if fields["half"] then - size = 2 - return - end - - -- Resolve the node name and the number of items to make - local meta = minetest.get_meta(pos) - local inv = meta:get_inventory() - local inputstack = inv:get_stack("src", 1) - local inputname = inputstack:get_name() - local multiplier = 0 - for k, _ in pairs(fields) do - -- Set a multipier for the half/full size capable blocks - if twosize_products[k] ~= nil then - multiplier = size * twosize_products[k] - else - multiplier = onesize_products[k] - end - - if onesize_products[k] ~= nil or twosize_products[k] ~= nil then - meta:set_float( "cnc_multiplier", multiplier) - meta:set_string("cnc_user", sender:get_player_name()) - end - - if onesize_products[k] ~= nil or (twosize_products[k] ~= nil and size==2) then - meta:set_string("cnc_product", inputname .. "_technic_cnc_" .. k) - --print(inputname .. "_technic_cnc_" .. k) - break - end - - if twosize_products[k] ~= nil and size==1 then - meta:set_string("cnc_product", inputname .. "_technic_cnc_" .. k .. "_double") - --print(inputname .. "_technic_cnc_" .. k .. "_double") - break - end - end - return -end - --- Action code performing the transformation -local run = function(pos, node) - local meta = minetest.get_meta(pos) - local inv = meta:get_inventory() - local eu_input = meta:get_int("LV_EU_input") - local machine_name = S("%s CNC Machine"):format("LV") - local machine_node = "technic:cnc" - local demand = 450 - - local result = meta:get_string("cnc_product") - if inv:is_empty("src") or - (not minetest.registered_nodes[result]) or - (not inv:room_for_item("dst", result)) then - technic.swap_node(pos, machine_node) - meta:set_string("infotext", S("%s Idle"):format(machine_name)) - meta:set_string("cnc_product", "") - meta:set_int("LV_EU_demand", 0) - return - end - - if eu_input < demand then - technic.swap_node(pos, machine_node) - meta:set_string("infotext", S("%s Unpowered"):format(machine_name)) - elseif eu_input >= demand then - technic.swap_node(pos, machine_node.."_active") - meta:set_string("infotext", S("%s Active"):format(machine_name)) - meta:set_int("src_time", meta:get_int("src_time") + 1) - if meta:get_int("src_time") >= 3 then -- 3 ticks per output - meta:set_int("src_time", 0) - srcstack = inv:get_stack("src", 1) - srcstack:take_item() - inv:set_stack("src", 1, srcstack) - inv:add_item("dst", result.." "..meta:get_int("cnc_multiplier")) - end - end - meta:set_int("LV_EU_demand", demand) -end - --- The actual block inactive state -minetest.register_node("technic:cnc", { - description = S("%s CNC Machine"):format("LV"), - tiles = {"technic_cnc_top.png", "technic_cnc_bottom.png", "technic_cnc_side.png", - "technic_cnc_side.png", "technic_cnc_side.png", "technic_cnc_front.png"}, - drawtype = "nodebox", - paramtype = "light", - paramtype2 = "facedir", - node_box = { - type = "fixed", - fixed = { - {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, - }, - }, - groups = {cracky=2, technic_machine=1}, - legacy_facedir_simple = true, - on_construct = function(pos) - local meta = minetest.get_meta(pos) - meta:set_string("infotext", S("%s CNC Machine"):format("LV")) - meta:set_float("technic_power_machine", 1) - meta:set_string("formspec", cnc_formspec) - local inv = meta:get_inventory() - inv:set_size("src", 1) - inv:set_size("dst", 4) - end, - can_dig = technic.machine_can_dig, - allow_metadata_inventory_put = technic.machine_inventory_put, - allow_metadata_inventory_take = technic.machine_inventory_take, - allow_metadata_inventory_move = technic.machine_inventory_move, - on_receive_fields = form_handler, - technic_run = run, -}) - --- Active state block -minetest.register_node("technic:cnc_active", { - description = S("%s CNC Machine"):format("LV"), - tiles = {"technic_cnc_top_active.png", "technic_cnc_bottom.png", "technic_cnc_side.png", - "technic_cnc_side.png", "technic_cnc_side.png", "technic_cnc_front_active.png"}, - paramtype2 = "facedir", - drop = "technic:cnc", - groups = {cracky=2, technic_machine=1, not_in_creative_inventory=1}, - legacy_facedir_simple = true, - can_dig = technic.machine_can_dig, - allow_metadata_inventory_put = technic.machine_inventory_put, - allow_metadata_inventory_take = technic.machine_inventory_take, - allow_metadata_inventory_move = technic.machine_inventory_move, - on_receive_fields = form_handler, - technic_run = run, - technic_disabled_machine_name = "technic:cnc", -}) - -technic.register_machine("LV", "technic:cnc", technic.receiver) -technic.register_machine("LV", "technic:cnc_active", technic.receiver) - -------------------------- --- CNC Machine Recipe -------------------------- -minetest.register_craft({ - output = 'technic:cnc', - recipe = { - {'default:glass', 'technic:diamond_drill_head', 'default:glass'}, - {'technic:control_logic_unit', 'technic:machine_casing', 'technic:motor'}, - {'technic:carbon_steel_ingot', 'technic:lv_cable0', 'technic:carbon_steel_ingot'}, - }, -}) - diff --git a/technic/technic/machines/LV/cnc_api.lua b/technic/technic/machines/LV/cnc_api.lua deleted file mode 100644 index f5aae5c..0000000 --- a/technic/technic/machines/LV/cnc_api.lua +++ /dev/null @@ -1,369 +0,0 @@ --- API for the technic CNC machine --- Again code is adapted from the NonCubic Blocks MOD v1.4 by yves_de_beck - -local S = technic.getter - -technic.cnc = {} - --- REGISTER NONCUBIC FORMS, CREATE MODELS AND RECIPES: ------------------------------------------------------- - --- Define slope boxes for the various nodes -------------------------------------------- -technic.cnc.programs = { - { suffix = "technic_cnc_stick", - model = {-0.15, -0.5, -0.15, 0.15, 0.5, 0.15}, - desc = S("Stick") - }, - - { suffix = "technic_cnc_element_end_double", - model = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.5}, - desc = S("Element End Double") - }, - - { suffix = "technic_cnc_element_cross_double", - model = { - {0.3, -0.5, -0.3, 0.5, 0.5, 0.3}, - {-0.3, -0.5, -0.5, 0.3, 0.5, 0.5}, - {-0.5, -0.5, -0.3, -0.3, 0.5, 0.3}}, - desc = S("Element Cross Double") - }, - - { suffix = "technic_cnc_element_t_double", - model = { - {-0.3, -0.5, -0.5, 0.3, 0.5, 0.3}, - {-0.5, -0.5, -0.3, -0.3, 0.5, 0.3}, - {0.3, -0.5, -0.3, 0.5, 0.5, 0.3}}, - desc = S("Element T Double") - }, - - { suffix = "technic_cnc_element_edge_double", - model = { - {-0.3, -0.5, -0.5, 0.3, 0.5, 0.3}, - {-0.5, -0.5, -0.3, -0.3, 0.5, 0.3}}, - desc = S("Element Edge Double") - }, - - { suffix = "technic_cnc_element_straight_double", - model = {-0.3, -0.5, -0.5, 0.3, 0.5, 0.5}, - desc = S("Element Straight Double") - }, - - { suffix = "technic_cnc_element_end", - model = {-0.3, -0.5, -0.3, 0.3, 0, 0.5}, - desc = S("Element End") - }, - - { suffix = "technic_cnc_element_cross", - model = { - {0.3, -0.5, -0.3, 0.5, 0, 0.3}, - {-0.3, -0.5, -0.5, 0.3, 0, 0.5}, - {-0.5, -0.5, -0.3, -0.3, 0, 0.3}}, - desc = S("Element Cross") - }, - - { suffix = "technic_cnc_element_t", - model = { - {-0.3, -0.5, -0.5, 0.3, 0, 0.3}, - {-0.5, -0.5, -0.3, -0.3, 0, 0.3}, - {0.3, -0.5, -0.3, 0.5, 0, 0.3}}, - desc = S("Element T") - }, - - { suffix = "technic_cnc_element_edge", - model = { - {-0.3, -0.5, -0.5, 0.3, 0, 0.3}, - {-0.5, -0.5, -0.3, -0.3, 0, 0.3}}, - desc = S("Element Edge") - }, - - { suffix = "technic_cnc_element_straight", - model = {-0.3, -0.5, -0.5, 0.3, 0, 0.5}, - desc = S("Element Straight") - }, - - { suffix = "technic_cnc_oblate_spheroid", - model = "technic_oblate_spheroid.obj", - desc = S("Oblate spheroid"), - cbox = { - type = "fixed", - fixed = { - { -6/16, 4/16, -6/16, 6/16, 8/16, 6/16 }, - { -8/16, -4/16, -8/16, 8/16, 4/16, 8/16 }, - { -6/16, -8/16, -6/16, 6/16, -4/16, 6/16 } - } - } - }, - - { suffix = "technic_cnc_sphere", - model = "technic_sphere.obj", - desc = S("Sphere") - }, - - { suffix = "technic_cnc_cylinder_horizontal", - model = "technic_cylinder_horizontal.obj", - desc = S("Horizontal Cylinder") - }, - - { suffix = "technic_cnc_cylinder", - model = "technic_cylinder.obj", - desc = S("Cylinder") - }, - - { suffix = "technic_cnc_twocurvededge", - model = "technic_two_curved_edge.obj", - desc = S("Two Curved Edge/Corner Block") - }, - - { suffix = "technic_cnc_onecurvededge", - model = "technic_one_curved_edge.obj", - desc = S("One Curved Edge Block") - }, - - { suffix = "technic_cnc_spike", - model = "technic_pyramid_spike.obj", - desc = S("Spike"), - cbox = { - type = "fixed", - fixed = { - { -2/16, 4/16, -2/16, 2/16, 8/16, 2/16 }, - { -4/16, 0, -4/16, 4/16, 4/16, 4/16 }, - { -6/16, -4/16, -6/16, 6/16, 0, 6/16 }, - { -8/16, -8/16, -8/16, 8/16, -4/16, 8/16 } - } - } - }, - - { suffix = "technic_cnc_pyramid", - model = "technic_pyramid.obj", - desc = S("Pyramid"), - cbox = { - type = "fixed", - fixed = { - { -2/16, -2/16, -2/16, 2/16, 0, 2/16 }, - { -4/16, -4/16, -4/16, 4/16, -2/16, 4/16 }, - { -6/16, -6/16, -6/16, 6/16, -4/16, 6/16 }, - { -8/16, -8/16, -8/16, 8/16, -6/16, 8/16 } - } - } - }, - - { suffix = "technic_cnc_slope_inner_edge_upsdown", - model = "technic_innercorner_upsdown.obj", - desc = S("Slope Upside Down Inner Edge/Corner"), - sbox = { - type = "fixed", - fixed = { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 } - }, - cbox = { - type = "fixed", - fixed = { - { 0.25, -0.25, -0.5, 0.5, -0.5, 0.5 }, - { -0.5, -0.25, 0.25, 0.5, -0.5, 0.5 }, - { 0, 0, -0.5, 0.5, -0.25, 0.5 }, - { -0.5, 0, 0, 0.5, -0.25, 0.5 }, - { -0.25, 0.25, -0.5, 0.5, 0, -0.25 }, - { -0.5, 0.25, -0.25, 0.5, 0, 0.5 }, - { -0.5, 0.5, -0.5, 0.5, 0.25, 0.5 } - } - } - }, - - { suffix = "technic_cnc_slope_edge_upsdown", - model = "technic_outercorner_upsdown.obj", - desc = S("Slope Upside Down Outer Edge/Corner"), - cbox = { - type = "fixed", - fixed = { - { -8/16, 8/16, -8/16, 8/16, 4/16, 8/16 }, - { -4/16, 4/16, -4/16, 8/16, 0, 8/16 }, - { 0, 0, 0, 8/16, -4/16, 8/16 }, - { 4/16, -4/16, 4/16, 8/16, -8/16, 8/16 } - } - } - }, - - { suffix = "technic_cnc_slope_inner_edge", - model = "technic_innercorner.obj", - desc = S("Slope Inner Edge/Corner"), - sbox = { - type = "fixed", - fixed = { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 } - }, - cbox = { - type = "fixed", - fixed = { - { -0.5, -0.5, -0.5, 0.5, -0.25, 0.5 }, - { -0.5, -0.25, -0.25, 0.5, 0, 0.5 }, - { -0.25, -0.25, -0.5, 0.5, 0, -0.25 }, - { -0.5, 0, 0, 0.5, 0.25, 0.5 }, - { 0, 0, -0.5, 0.5, 0.25, 0.5 }, - { -0.5, 0.25, 0.25, 0.5, 0.5, 0.5 }, - { 0.25, 0.25, -0.5, 0.5, 0.5, 0.5 } - } - } - }, - - { suffix = "technic_cnc_slope_edge", - model = "technic_outercorner.obj", - desc = S("Slope Outer Edge/Corner"), - cbox = { - type = "fixed", - fixed = { - { 4/16, 4/16, 4/16, 8/16, 8/16, 8/16 }, - { 0, 0, 0, 8/16, 4/16, 8/16 }, - { -4/16, -4/16, -4/16, 8/16, 0, 8/16 }, - { -8/16, -8/16, -8/16, 8/16, -4/16, 8/16 } - } - } - }, - - { suffix = "technic_cnc_slope_upsdown", - model = "technic_slope_upsdown.obj", - desc = S("Slope Upside Down"), - cbox = { - type = "fixed", - fixed = { - { -8/16, 8/16, -8/16, 8/16, 4/16, 8/16 }, - { -8/16, 4/16, -4/16, 8/16, 0, 8/16 }, - { -8/16, 0, 0, 8/16, -4/16, 8/16 }, - { -8/16, -4/16, 4/16, 8/16, -8/16, 8/16 } - } - } - }, - - { suffix = "technic_cnc_slope_lying", - model = "technic_slope_horizontal.obj", - desc = S("Slope Lying"), - cbox = { - type = "fixed", - fixed = { - { 4/16, -8/16, 4/16, 8/16, 8/16, 8/16 }, - { 0, -8/16, 0, 4/16, 8/16, 8/16 }, - { -4/16, -8/16, -4/16, 0, 8/16, 8/16 }, - { -8/16, -8/16, -8/16, -4/16, 8/16, 8/16 } - } - } - }, - - { suffix = "technic_cnc_slope", - model = "technic_slope.obj", - desc = S("Slope"), - cbox = { - type = "fixed", - fixed = { - { -8/16, 4/16, 4/16, 8/16, 8/16, 8/16 }, - { -8/16, 0, 0, 8/16, 4/16, 8/16 }, - { -8/16, -4/16, -4/16, 8/16, 0, 8/16 }, - { -8/16, -8/16, -8/16, 8/16, -4/16, 8/16 } - } - } - }, - -} - --- Allow disabling certain programs for some node. Default is allowing all types for all nodes -technic.cnc.programs_disable = { - -- ["default:brick"] = {"technic_cnc_stick"}, -- Example: Disallow the stick for brick - -- ... - ["default:dirt"] = {"technic_cnc_oblate_spheroid", "technic_cnc_slope_upsdown", "technic_cnc_edge", - "technic_cnc_inner_edge", "technic_cnc_slope_edge_upsdown", - "technic_cnc_slope_inner_edge_upsdown", "technic_cnc_stick", - "technic_cnc_cylinder_horizontal"} -} - --- Generic function for registering all the different node types -function technic.cnc.register_program(recipeitem, suffix, model, groups, images, description, cbox, sbox) - - local dtype - local nodeboxdef - local meshdef - - if type(model) ~= "string" then -- assume a nodebox if it's a table or function call - dtype = "nodebox" - nodeboxdef = { - type = "fixed", - fixed = model - } - else - dtype = "mesh" - meshdef = model - end - - if cbox and not sbox then sbox = cbox end - - minetest.register_node(":"..recipeitem.."_"..suffix, { - description = description, - drawtype = dtype, - node_box = nodeboxdef, - mesh = meshdef, - tiles = images, - paramtype = "light", - paramtype2 = "facedir", - walkable = true, - groups = groups, - selection_box = sbox, - collision_box = cbox - }) -end - --- function to iterate over all the programs the CNC machine knows -function technic.cnc.register_all(recipeitem, groups, images, description) - for _, data in ipairs(technic.cnc.programs) do - -- Disable node creation for disabled node types for some material - local do_register = true - if technic.cnc.programs_disable[recipeitem] ~= nil then - for __, disable in ipairs(technic.cnc.programs_disable[recipeitem]) do - if disable == data.suffix then - do_register = false - end - end - end - -- Create the node if it passes the test - if do_register then - technic.cnc.register_program(recipeitem, data.suffix, data.model, - groups, images, description.." "..data.desc, data.cbox, data.sbox) - end - end -end - - --- REGISTER NEW TECHNIC_CNC_API's PART 2: technic.cnc..register_element_end(subname, recipeitem, groups, images, desc_element_xyz) ------------------------------------------------------------------------------------------------------------------------ -function technic.cnc.register_slope_edge_etc(recipeitem, groups, images, desc_slope, desc_slope_lying, desc_slope_upsdown, desc_slope_edge, desc_slope_inner_edge, desc_slope_upsdwn_edge, desc_slope_upsdwn_inner_edge, desc_pyramid, desc_spike, desc_onecurvededge, desc_twocurvededge, desc_cylinder, desc_cylinder_horizontal, desc_spheroid, desc_element_straight, desc_element_edge, desc_element_t, desc_element_cross, desc_element_end) - - technic.cnc.register_slope(recipeitem, groups, images, desc_slope) - technic.cnc.register_slope_lying(recipeitem, groups, images, desc_slope_lying) - technic.cnc.register_slope_upsdown(recipeitem, groups, images, desc_slope_upsdown) - technic.cnc.register_slope_edge(recipeitem, groups, images, desc_slope_edge) - technic.cnc.register_slope_inner_edge(recipeitem, groups, images, desc_slope_inner_edge) - technic.cnc.register_slope_edge_upsdown(recipeitem, groups, images, desc_slope_upsdwn_edge) - technic.cnc.register_slope_inner_edge_upsdown(recipeitem, groups, images, desc_slope_upsdwn_inner_edge) - technic.cnc.register_pyramid(recipeitem, groups, images, desc_pyramid) - technic.cnc.register_spike(recipeitem, groups, images, desc_spike) - technic.cnc.register_onecurvededge(recipeitem, groups, images, desc_onecurvededge) - technic.cnc.register_twocurvededge(recipeitem, groups, images, desc_twocurvededge) - technic.cnc.register_cylinder(recipeitem, groups, images, desc_cylinder) - technic.cnc.register_cylinder_horizontal(recipeitem, groups, images, desc_cylinder_horizontal) - technic.cnc.register_spheroid(recipeitem, groups, images, desc_spheroid) - technic.cnc.register_element_straight(recipeitem, groups, images, desc_element_straight) - technic.cnc.register_element_edge(recipeitem, groups, images, desc_element_edge) - technic.cnc.register_element_t(recipeitem, groups, images, desc_element_t) - technic.cnc.register_element_cross(recipeitem, groups, images, desc_element_cross) - technic.cnc.register_element_end(recipeitem, groups, images, desc_element_end) -end - --- REGISTER STICKS: noncubic.register_xyz(recipeitem, groups, images, desc_element_xyz) ------------------------------------------------------------------------------------------------------------- -function technic.cnc.register_stick_etc(recipeitem, groups, images, desc_stick) - technic.cnc.register_stick(recipeitem, groups, images, desc_stick) -end - -function technic.cnc.register_elements(recipeitem, groups, images, desc_element_straight_double, desc_element_edge_double, desc_element_t_double, desc_element_cross_double, desc_element_end_double) - technic.cnc.register_element_straight_double(recipeitem, groups, images, desc_element_straight_double) - technic.cnc.register_element_edge_double(recipeitem, groups, images, desc_element_edge_double) - technic.cnc.register_element_t_double(recipeitem, groups, images, desc_element_t_double) - technic.cnc.register_element_cross_double(recipeitem, groups, images, desc_element_cross_double) - technic.cnc.register_element_end_double(recipeitem, groups, images, desc_element_end_double) -end - diff --git a/technic/technic/machines/LV/cnc_nodes.lua b/technic/technic/machines/LV/cnc_nodes.lua deleted file mode 100644 index 05be9af..0000000 --- a/technic/technic/machines/LV/cnc_nodes.lua +++ /dev/null @@ -1,91 +0,0 @@ --- REGISTER MATERIALS AND PROPERTIES FOR NONCUBIC ELEMENTS: ------------------------------------------------------------ - -local S = technic.getter - --- DIRT -------- -technic.cnc.register_all("default:dirt", - {snappy=2,choppy=2,oddly_breakable_by_hand=3,not_in_creative_inventory=1}, - {"default_grass.png", "default_dirt.png", "default_grass.png"}, - S("Dirt")) --- WOOD -------- -technic.cnc.register_all("default:wood", - {snappy=2, choppy=2, oddly_breakable_by_hand=2, not_in_creative_inventory=1}, - {"default_wood.png"}, - S("Wooden")) --- STONE --------- -technic.cnc.register_all("default:stone", - {cracky=3, not_in_creative_inventory=1}, - {"default_stone.png"}, - S("Stone")) --- COBBLE ---------- -technic.cnc.register_all("default:cobble", - {cracky=3, not_in_creative_inventory=1}, - {"default_cobble.png"}, - S("Cobble")) --- BRICK --------- -technic.cnc.register_all("default:brick", - {cracky=3, not_in_creative_inventory=1}, - {"default_brick.png"}, - S("Brick")) - --- SANDSTONE ------------- -technic.cnc.register_all("default:sandstone", - {crumbly=2, cracky=3, not_in_creative_inventory=1}, - {"default_sandstone.png"}, - S("Sandstone")) - --- LEAVES ---------- -technic.cnc.register_all("default:leaves", - {snappy=2, choppy=2, oddly_breakable_by_hand=3, not_in_creative_inventory=1}, - {"default_leaves.png"}, - S("Leaves")) --- TREE -------- -technic.cnc.register_all("default:tree", - {snappy=1, choppy=2, oddly_breakable_by_hand=2, flammable=3, wood=1, not_in_creative_inventory=1}, - {"default_tree.png"}, - S("Tree")) - --- WROUGHT IRON ---------------- -technic.cnc.register_all("default:steelblock", - {cracky=1, level=2, not_in_creative_inventory=1}, - {"technic_wrought_iron_block.png"}, - S("Wrought Iron")) - --- Bronze --------- -technic.cnc.register_all("default:bronzeblock", - {cracky=1, level=2, not_in_creative_inventory=1}, - {"default_bronze_block.png"}, - S("Bronze")) - --- Stainless Steel --------- -technic.cnc.register_all("technic:stainless_steel_block", - {cracky=1, level=2, not_in_creative_inventory=1}, - {"technic_stainless_steel_block.png"}, - S("Stainless Steel")) - --- Marble ------------- -technic.cnc.register_all("technic:marble", - {cracky=3, not_in_creative_inventory=1}, - {"technic_marble.png"}, - S("Marble")) - --- Granite ------------- -technic.cnc.register_all("technic:granite", - {cracky=1, not_in_creative_inventory=1}, - {"technic_granite.png"}, - S("Granite")) - diff --git a/technic/technic/machines/LV/compressor.lua b/technic/technic/machines/LV/compressor.lua deleted file mode 100644 index e2bde40..0000000 --- a/technic/technic/machines/LV/compressor.lua +++ /dev/null @@ -1,13 +0,0 @@ - -minetest.register_alias("compressor", "technic:lv_compressor") - -minetest.register_craft({ - output = 'technic:lv_compressor', - recipe = { - {'default:stone', 'technic:motor', 'default:stone'}, - {'mesecons:piston', 'technic:machine_casing', 'mesecons:piston'}, - {'technic:fine_silver_wire', 'technic:lv_cable0', 'technic:fine_silver_wire'}, - } -}) - -technic.register_compressor({tier = "LV", demand = {300}, speed = 1}) diff --git a/technic/technic/machines/LV/electric_furnace.lua b/technic/technic/machines/LV/electric_furnace.lua deleted file mode 100644 index cc4daff..0000000 --- a/technic/technic/machines/LV/electric_furnace.lua +++ /dev/null @@ -1,16 +0,0 @@ --- LV Electric Furnace --- This is a faster version of the stone furnace which runs on EUs - --- FIXME: kpoppel I'd like to introduce an induction heating element here also -minetest.register_craft({ - output = 'technic:electric_furnace', - recipe = { - {'default:cobble', 'default:cobble', 'default:cobble'}, - {'default:cobble', 'technic:machine_casing', 'default:cobble'}, - {'default:cobble', 'technic:lv_cable0', 'default:cobble'}, - } -}) - -technic.register_electric_furnace({tier="LV", demand={300}, speed = 2}) - - diff --git a/technic/technic/machines/LV/extractor.lua b/technic/technic/machines/LV/extractor.lua deleted file mode 100644 index 363d2e3..0000000 --- a/technic/technic/machines/LV/extractor.lua +++ /dev/null @@ -1,13 +0,0 @@ - -minetest.register_alias("extractor", "technic:lv_extractor") - -minetest.register_craft({ - output = 'technic:lv_extractor', - recipe = { - {'technic:treetap', 'technic:motor', 'technic:treetap'}, - {'technic:treetap', 'technic:machine_casing', 'technic:treetap'}, - {'', 'technic:lv_cable0', ''}, - } -}) - -technic.register_extractor({tier = "LV", demand = {300}, speed = 1}) diff --git a/technic/technic/machines/LV/generator.lua b/technic/technic/machines/LV/generator.lua deleted file mode 100644 index 999dbc5..0000000 --- a/technic/technic/machines/LV/generator.lua +++ /dev/null @@ -1,18 +0,0 @@ --- The electric generator. --- A simple device to get started on the electric machines. --- Inefficient and expensive in fuel (200EU per tick) --- Also only allows for LV machinery to run. - -minetest.register_alias("lv_generator", "technic:lv_generator") - -minetest.register_craft({ - output = 'technic:lv_generator', - recipe = { - {'default:stone', 'default:furnace', 'default:stone'}, - {'default:stone', 'technic:machine_casing', 'default:stone'}, - {'default:stone', 'technic:lv_cable0', 'default:stone'}, - } -}) - -technic.register_generator({tier="LV", supply=200}) - diff --git a/technic/technic/machines/LV/geothermal.lua b/technic/technic/machines/LV/geothermal.lua deleted file mode 100644 index e88d3c9..0000000 --- a/technic/technic/machines/LV/geothermal.lua +++ /dev/null @@ -1,111 +0,0 @@ --- A geothermal EU generator --- Using hot lava and water this device can create energy from steam --- The machine is only producing LV EUs and can thus not drive more advanced equipment --- The output is a little more than the coal burning generator (max 300EUs) - -minetest.register_alias("geothermal", "technic:geothermal") - -local S = technic.getter - -minetest.register_craft({ - output = 'technic:geothermal', - recipe = { - {'technic:granite', 'default:diamond', 'technic:granite'}, - {'technic:fine_copper_wire', 'technic:machine_casing', 'technic:fine_copper_wire'}, - {'technic:granite', 'technic:lv_cable0', 'technic:granite'}, - } -}) - -minetest.register_craftitem("technic:geothermal", { - description = S("Geothermal %s Generator"):format("LV"), -}) - -local check_node_around = function(pos) - local node = minetest.get_node(pos) - if node.name == "default:water_source" or node.name == "default:water_flowing" then return 1 end - if node.name == "default:lava_source" or node.name == "default:lava_flowing" then return 2 end - return 0 -end - -local run = function(pos, node) - local meta = minetest.get_meta(pos) - local water_nodes = 0 - local lava_nodes = 0 - local production_level = 0 - local eu_supply = 0 - - -- Correct positioning is water on one side and lava on the other. - -- The two cannot be adjacent because the lava the turns into obsidian or rock. - -- To get to 100% production stack the water and lava one extra block down as well: - -- WGL (W=Water, L=Lava, G=the generator, |=an LV cable) - -- W|L - - local positions = { - {x=pos.x+1, y=pos.y, z=pos.z}, - {x=pos.x+1, y=pos.y-1, z=pos.z}, - {x=pos.x-1, y=pos.y, z=pos.z}, - {x=pos.x-1, y=pos.y-1, z=pos.z}, - {x=pos.x, y=pos.y, z=pos.z+1}, - {x=pos.x, y=pos.y-1, z=pos.z+1}, - {x=pos.x, y=pos.y, z=pos.z-1}, - {x=pos.x, y=pos.y-1, z=pos.z-1}, - } - for _, p in pairs(positions) do - local check = check_node_around(p) - if check == 1 then water_nodes = water_nodes + 1 end - if check == 2 then lava_nodes = lava_nodes + 1 end - end - - if water_nodes == 1 and lava_nodes == 1 then production_level = 25; eu_supply = 50 end - if water_nodes == 2 and lava_nodes == 1 then production_level = 50; eu_supply = 100 end - if water_nodes == 1 and lava_nodes == 2 then production_level = 75; eu_supply = 200 end - if water_nodes == 2 and lava_nodes == 2 then production_level = 100; eu_supply = 300 end - - if production_level > 0 then - meta:set_int("LV_EU_supply", eu_supply) - end - - meta:set_string("infotext", - S("Geothermal %s Generator"):format("LV").." ("..production_level.."%)") - - if production_level > 0 and minetest.get_node(pos).name == "technic:geothermal" then - technic.swap_node (pos, "technic:geothermal_active") - return - end - if production_level == 0 then - technic.swap_node(pos, "technic:geothermal") - meta:set_int("LV_EU_supply", 0) - end -end - -minetest.register_node("technic:geothermal", { - description = S("Geothermal %s Generator"):format("LV"), - tiles = {"technic_geothermal_top.png", "technic_machine_bottom.png", "technic_geothermal_side.png", - "technic_geothermal_side.png", "technic_geothermal_side.png", "technic_geothermal_side.png"}, - paramtype2 = "facedir", - groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2, technic_machine=1}, - legacy_facedir_simple = true, - sounds = default.node_sound_wood_defaults(), - on_construct = function(pos) - local meta = minetest.get_meta(pos) - meta:set_string("infotext", S("Geothermal %s Generator"):format("LV")) - meta:set_int("LV_EU_supply", 0) - end, - technic_run = run, -}) - -minetest.register_node("technic:geothermal_active", { - description = S("Geothermal %s Generator"):format("LV"), - tiles = {"technic_geothermal_top_active.png", "technic_machine_bottom.png", "technic_geothermal_side.png", - "technic_geothermal_side.png", "technic_geothermal_side.png", "technic_geothermal_side.png"}, - paramtype2 = "facedir", - groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2, not_in_creative_inventory=1}, - legacy_facedir_simple = true, - sounds = default.node_sound_wood_defaults(), - drop = "technic:geothermal", - technic_run = run, -}) - -technic.register_machine("LV", "technic:geothermal", technic.producer) -technic.register_machine("LV", "technic:geothermal_active", technic.producer) - diff --git a/technic/technic/machines/LV/grinder.lua b/technic/technic/machines/LV/grinder.lua deleted file mode 100644 index da9ea29..0000000 --- a/technic/technic/machines/LV/grinder.lua +++ /dev/null @@ -1,13 +0,0 @@ - -minetest.register_alias("grinder", "technic:lv_grinder") -minetest.register_craft({ - output = 'technic:lv_grinder', - recipe = { - {'default:desert_stone', 'default:diamond', 'default:desert_stone'}, - {'default:desert_stone', 'technic:machine_casing', 'default:desert_stone'}, - {'technic:granite', 'technic:lv_cable0', 'technic:granite'}, - } -}) - -technic.register_grinder({tier="LV", demand={200}, speed=1}) - diff --git a/technic/technic/machines/LV/init.lua b/technic/technic/machines/LV/init.lua deleted file mode 100644 index 30523c9..0000000 --- a/technic/technic/machines/LV/init.lua +++ /dev/null @@ -1,29 +0,0 @@ - -technic.register_tier("LV", "Low Voltage") - -local path = technic.modpath.."/machines/LV" - --- Wiring stuff -dofile(path.."/cables.lua") -dofile(path.."/battery_box.lua") - --- Generators -dofile(path.."/solar_panel.lua") -dofile(path.."/solar_array.lua") -dofile(path.."/geothermal.lua") -dofile(path.."/water_mill.lua") -dofile(path.."/generator.lua") - --- Machines -dofile(path.."/alloy_furnace.lua") -dofile(path.."/electric_furnace.lua") -dofile(path.."/grinder.lua") -dofile(path.."/extractor.lua") -dofile(path.."/compressor.lua") - -dofile(path.."/music_player.lua") - -dofile(path.."/cnc.lua") -dofile(path.."/cnc_api.lua") -dofile(path.."/cnc_nodes.lua") - diff --git a/technic/technic/machines/LV/music_player.lua b/technic/technic/machines/LV/music_player.lua deleted file mode 100644 index dc7e2d0..0000000 --- a/technic/technic/machines/LV/music_player.lua +++ /dev/null @@ -1,130 +0,0 @@ --- LV Music player. --- The player can play music. But it is high ampage! - -local S = technic.getter - -minetest.register_alias("music_player", "technic:music_player") -minetest.register_craft({ - output = 'technic:music_player', - recipe = { - {'technic:chromium_ingot', 'default:diamond', 'technic:chromium_ingot'}, - {'default:diamond', 'technic:machine_casing', 'default:diamond'}, - {'default:mossycobble', 'technic:lv_cable0', 'default:mossycobble'}, - } -}) - -local music_handles = {} - -local function play_track(pos, track) - return minetest.sound_play("technic_track"..tostring(track), - {pos = pos, gain = 1.0, loop = true, max_hear_distance = 72,}) -end - -local run = function(pos, node) - local meta = minetest.get_meta(pos) - local eu_input = meta:get_int("LV_EU_input") - local machine_name = S("%s Music Player"):format("LV") - local machine_node = "technic:music_player" - local demand = 150 - - local current_track = meta:get_int("current_track") - local pos_hash = minetest.hash_node_position(pos) - local music_handle = music_handles[pos_hash] - - -- Setup meta data if it does not exist. - if not eu_input then - meta:set_int("LV_EU_demand", demand) - meta:set_int("LV_EU_input", 0) - return - end - - if meta:get_int("active") == 0 then - meta:set_string("infotext", S("%s Idle"):format(machine_name)) - meta:set_int("LV_EU_demand", 0) - return - end - - if eu_input < demand then - meta:set_string("infotext", S("%s Unpowered"):format(machine_name)) - if music_handle then - minetest.sound_stop(music_handle) - music_handle = nil - end - elseif eu_input >= demand then - meta:set_string("infotext", S("%s Active"):format(machine_name)) - if not music_handle then - music_handle = play_track(pos, current_track) - end - end - music_handles[pos_hash] = music_handle - meta:set_int("LV_EU_demand", demand) -end - -local function stop_player(pos, node) - local pos_hash = minetest.hash_node_position(pos) - local music_handle = music_handles[pos_hash] - if music_handle then - minetest.sound_stop(music_handle) - music_handles[pos_hash] = nil - end -end - -local function set_display(meta) - meta:set_string("formspec", - "size[4,4.5]".. - "item_image[0,0;1,1;technic:music_player]".. - "label[1,0;"..S("%s Music Player"):format("LV").."]".. - "button[0,1;1,1;track1;1]".. - "button[1,1;1,1;track2;2]".. - "button[2,1;1,1;track3;3]".. - "button[0,2;1,1;track4;4]".. - "button[1,2;1,1;track5;5]".. - "button[2,2;1,1;track6;6]".. - "button[0,3;1,1;track7;7]".. - "button[1,3;1,1;track8;8]".. - "button[2,3;1,1;track9;9]".. - "button[3,1;1,1;stop;Stop]".. - "label[0,4;"..minetest.formspec_escape( - meta:get_int("active") == 0 and - S("Stopped") or - S("Current track %s"):format(meta:get_int("current_track"))).."]") -end - -minetest.register_node("technic:music_player", { - description = S("%s Music Player"):format("LV"), - tiles = {"technic_music_player_top.png", "technic_machine_bottom.png", "technic_music_player_side.png", - "technic_music_player_side.png", "technic_music_player_side.png", "technic_music_player_side.png"}, - groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2, technic_machine=1}, - sounds = default.node_sound_wood_defaults(), - on_construct = function(pos) - local meta = minetest.get_meta(pos) - meta:set_string("infotext", S("%s Music Player"):format("LV")) - set_display(meta) - end, - on_receive_fields = function(pos, formanme, fields, sender) - local new_track = nil - if fields.stop then new_track = 0 end - if fields.track1 then new_track = 1 end - if fields.track2 then new_track = 2 end - if fields.track3 then new_track = 3 end - if fields.track4 then new_track = 4 end - if fields.track5 then new_track = 5 end - if fields.track6 then new_track = 6 end - if fields.track7 then new_track = 7 end - if fields.track8 then new_track = 8 end - if fields.track9 then new_track = 9 end - if new_track then - stop_player(pos) - local meta = minetest.get_meta(pos) - meta:set_int("active", new_track == 0 and 0 or 1) - meta:set_int("current_track", new_track) - set_display(meta) - end - end, - on_destruct = stop_player, - technic_run = run, - technic_on_disable = stop_player, -}) - -technic.register_machine("LV", "technic:music_player", technic.receiver) - diff --git a/technic/technic/machines/LV/solar_array.lua b/technic/technic/machines/LV/solar_array.lua deleted file mode 100644 index 4d2c3b3..0000000 --- a/technic/technic/machines/LV/solar_array.lua +++ /dev/null @@ -1,18 +0,0 @@ --- The solar array is an assembly of panels into a powerful array --- The assembly can deliver more energy than the individual panel because --- of the transformer unit which converts the panel output variations into --- a stable supply. --- Solar arrays are not able to store large amounts of energy. --- The LV arrays are used to make medium voltage arrays. - -minetest.register_craft({ - output = 'technic:solar_array_lv 1', - recipe = { - {'technic:solar_panel', 'technic:solar_panel', 'technic:solar_panel'}, - {'technic:carbon_steel_ingot', 'technic:lv_transformer', 'technic:carbon_steel_ingot'}, - {'', 'technic:lv_cable0', ''}, - } -}) - -technic.register_solar_array({tier="LV", power=10}) - diff --git a/technic/technic/machines/LV/solar_panel.lua b/technic/technic/machines/LV/solar_panel.lua deleted file mode 100644 index 41dff95..0000000 --- a/technic/technic/machines/LV/solar_panel.lua +++ /dev/null @@ -1,67 +0,0 @@ --- Solar panels are the building blocks of LV solar arrays --- They can however also be used separately but with reduced efficiency due to the missing transformer. --- Individual panels are less efficient than when the panels are combined into full arrays. - -local S = technic.getter - -local run = function(pos, node) - -- The action here is to make the solar panel prodice power - -- Power is dependent on the light level and the height above ground - -- There are many ways to cheat by using other light sources like lamps. - -- As there is no way to determine if light is sunlight that is just a shame. - -- To take care of some of it solar panels do not work outside daylight hours or if - -- built below 0m - local pos1 = {x=pos.x, y=pos.y+1, z=pos.z} - local machine_name = S("Small Solar %s Generator"):format("LV") - - local light = minetest.get_node_light(pos1, nil) - local time_of_day = minetest.get_timeofday() - local meta = minetest.get_meta(pos) - if light == nil then light = 0 end - -- turn on panel only during day time and if sufficient light - -- I know this is counter intuitive when cheating by using other light sources underground. - if light >= 12 and time_of_day >= 0.24 and time_of_day <= 0.76 and pos.y > -10 then - local charge_to_give = math.floor((light + pos1.y) * 3) - charge_to_give = math.max(charge_to_give, 0) - charge_to_give = math.min(charge_to_give, 200) - meta:set_string("infotext", S("@1 Active (@2 EU)", machine_name, technic.prettynum(charge_to_give))) - meta:set_int("LV_EU_supply", charge_to_give) - else - meta:set_string("infotext", S("%s Idle"):format(machine_name)) - meta:set_int("LV_EU_supply", 0) - end -end - -minetest.register_node("technic:solar_panel", { - tiles = {"technic_solar_panel_top.png", "technic_solar_panel_bottom.png", "technic_solar_panel_side.png", - "technic_solar_panel_side.png", "technic_solar_panel_side.png", "technic_solar_panel_side.png"}, - groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2, technic_machine=1}, - sounds = default.node_sound_wood_defaults(), - description = S("Small Solar %s Generator"):format("LV"), - active = false, - drawtype = "nodebox", - paramtype = "light", - is_ground_content = true, - node_box = { - type = "fixed", - fixed = {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, - }, - on_construct = function(pos) - local meta = minetest.get_meta(pos) - meta:set_int("LV_EU_supply", 0) - meta:set_string("infotext", S("Small Solar %s Generator"):format("LV")) - end, - technic_run = run, -}) - -minetest.register_craft({ - output = 'technic:solar_panel', - recipe = { - {'technic:doped_silicon_wafer', 'technic:doped_silicon_wafer', 'technic:doped_silicon_wafer'}, - {'technic:fine_silver_wire', 'technic:lv_cable0', 'mesecons_materials:glue'}, - - } -}) - -technic.register_machine("LV", "technic:solar_panel", technic.producer) - diff --git a/technic/technic/machines/LV/water_mill.lua b/technic/technic/machines/LV/water_mill.lua deleted file mode 100644 index 9088d1d..0000000 --- a/technic/technic/machines/LV/water_mill.lua +++ /dev/null @@ -1,102 +0,0 @@ --- A water mill produces LV EUs by exploiting flowing water across it --- It is a LV EU supplyer and fairly low yield (max 120EUs) --- It is a little under half as good as the thermal generator. - -local S = technic.getter - -minetest.register_alias("water_mill", "technic:water_mill") - -minetest.register_craft({ - output = 'technic:water_mill', - recipe = { - {'technic:marble', 'default:diamond', 'technic:marble'}, - {'group:wood', 'technic:machine_casing', 'group:wood'}, - {'technic:marble', 'technic:lv_cable0', 'technic:marble'}, - } -}) - -local function check_node_around_mill(pos) - local node = minetest.get_node(pos) - if node.name == "default:water_flowing" or - node.name == "default:water_source" then - return true - end - return false -end - -local run = function(pos, node) - local meta = minetest.get_meta(pos) - local water_nodes = 0 - local lava_nodes = 0 - local production_level = 0 - local eu_supply = 0 - - local positions = { - {x=pos.x+1, y=pos.y, z=pos.z}, - {x=pos.x-1, y=pos.y, z=pos.z}, - {x=pos.x, y=pos.y, z=pos.z+1}, - {x=pos.x, y=pos.y, z=pos.z-1}, - } - - for _, p in pairs(positions) do - local check = check_node_around_mill(p) - if check then - water_nodes = water_nodes + 1 - end - end - - production_level = 25 * water_nodes - eu_supply = 30 * water_nodes - - if production_level > 0 then - meta:set_int("LV_EU_supply", eu_supply) - end - - meta:set_string("infotext", - S("Hydro %s Generator"):format("LV").." ("..production_level.."%)") - - if production_level > 0 and - minetest.get_node(pos).name == "technic:water_mill" then - technic.swap_node (pos, "technic:water_mill_active") - meta:set_int("LV_EU_supply", 0) - return - end - if production_level == 0 then - technic.swap_node(pos, "technic:water_mill") - end -end - -minetest.register_node("technic:water_mill", { - description = S("Hydro %s Generator"):format("LV"), - tiles = {"technic_water_mill_top.png", "technic_machine_bottom.png", - "technic_water_mill_side.png", "technic_water_mill_side.png", - "technic_water_mill_side.png", "technic_water_mill_side.png"}, - paramtype2 = "facedir", - groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2, technic_machine=1}, - legacy_facedir_simple = true, - sounds = default.node_sound_wood_defaults(), - on_construct = function(pos) - local meta = minetest.get_meta(pos) - meta:set_string("infotext", S("Hydro %s Generator"):format("LV")) - meta:set_int("LV_EU_supply", 0) - end, - technic_run = run, -}) - -minetest.register_node("technic:water_mill_active", { - description = S("Hydro %s Generator"):format("LV"), - tiles = {"technic_water_mill_top_active.png", "technic_machine_bottom.png", - "technic_water_mill_side.png", "technic_water_mill_side.png", - "technic_water_mill_side.png", "technic_water_mill_side.png"}, - paramtype2 = "facedir", - groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2, technic_machine=1, not_in_creative_inventory=1}, - legacy_facedir_simple = true, - sounds = default.node_sound_wood_defaults(), - drop = "technic:water_mill", - technic_run = run, - technic_disabled_machine_name = "technic:water_mill", -}) - -technic.register_machine("LV", "technic:water_mill", technic.producer) -technic.register_machine("LV", "technic:water_mill_active", technic.producer) - diff --git a/technic/technic/machines/MV/alloy_furnace.lua b/technic/technic/machines/MV/alloy_furnace.lua deleted file mode 100644 index a1918fd..0000000 --- a/technic/technic/machines/MV/alloy_furnace.lua +++ /dev/null @@ -1,14 +0,0 @@ --- MV alloy furnace - -minetest.register_craft({ - output = 'technic:mv_alloy_furnace', - recipe = { - {'technic:stainless_steel_ingot', 'technic:lv_alloy_furnace', 'technic:stainless_steel_ingot'}, - {'pipeworks:tube_1', 'technic:mv_transformer', 'pipeworks:tube_1'}, - {'technic:stainless_steel_ingot', 'technic:mv_cable0', 'technic:stainless_steel_ingot'}, - } -}) - - -technic.register_alloy_furnace({tier = "MV", speed = 1.5, upgrade = 1, tube = 1, demand = {3000, 2000, 1000}}) - diff --git a/technic/technic/machines/MV/battery_box.lua b/technic/technic/machines/MV/battery_box.lua deleted file mode 100644 index 45437c1..0000000 --- a/technic/technic/machines/MV/battery_box.lua +++ /dev/null @@ -1,22 +0,0 @@ --- MV Battery box - -minetest.register_craft({ - output = 'technic:mv_battery_box0', - recipe = { - {'technic:lv_battery_box0', 'technic:lv_battery_box0', 'technic:lv_battery_box0'}, - {'technic:lv_battery_box0', 'technic:mv_transformer', 'technic:lv_battery_box0'}, - {'', 'technic:mv_cable0', ''}, - } -}) - -technic.register_battery_box({ - tier = "MV", - max_charge = 200000, - charge_rate = 20000, - discharge_rate = 80000, - charge_step = 2000, - discharge_step = 8000, - upgrade = 1, - tube = 1, -}) - diff --git a/technic/technic/machines/MV/cables.lua b/technic/technic/machines/MV/cables.lua deleted file mode 100644 index b1a34c8..0000000 --- a/technic/technic/machines/MV/cables.lua +++ /dev/null @@ -1,14 +0,0 @@ - -minetest.register_alias("mv_cable", "technic:mv_cable0") - -minetest.register_craft({ - output = 'technic:mv_cable0 3', - recipe ={ - {'technic:rubber', 'technic:rubber', 'technic:rubber'}, - {'technic:lv_cable0', 'technic:lv_cable0', 'technic:lv_cable0'}, - {'technic:rubber', 'technic:rubber', 'technic:rubber'}, - } -}) - -technic.register_cable("MV", 2.5/16) - diff --git a/technic/technic/machines/MV/centrifuge.lua b/technic/technic/machines/MV/centrifuge.lua deleted file mode 100644 index 5bf24bf..0000000 --- a/technic/technic/machines/MV/centrifuge.lua +++ /dev/null @@ -1,16 +0,0 @@ -minetest.register_craft({ - output = "technic:mv_centrifuge", - recipe = { - { "technic:motor", "technic:copper_plate", "technic:diamond_drill_head" }, - { "technic:copper_plate", "technic:machine_casing", "technic:copper_plate" }, - { "pipeworks:one_way_tube", "technic:mv_cable0", "pipeworks:mese_filter" }, - } -}) - -technic.register_centrifuge({ - tier = "MV", - demand = { 8000, 7000, 6000 }, - speed = 2, - upgrade = 1, - tube = 1, -}) diff --git a/technic/technic/machines/MV/compressor.lua b/technic/technic/machines/MV/compressor.lua deleted file mode 100644 index 5b36cc5..0000000 --- a/technic/technic/machines/MV/compressor.lua +++ /dev/null @@ -1,12 +0,0 @@ --- MV compressor - -minetest.register_craft({ - output = 'technic:mv_compressor', - recipe = { - {'technic:stainless_steel_ingot', 'technic:lv_compressor', 'technic:stainless_steel_ingot'}, - {'pipeworks:tube_1', 'technic:mv_transformer', 'pipeworks:tube_1'}, - {'technic:stainless_steel_ingot', 'technic:mv_cable0', 'technic:stainless_steel_ingot'}, - } -}) - -technic.register_compressor({tier = "MV", demand = {800, 600, 400}, speed = 2, upgrade = 1, tube = 1}) diff --git a/technic/technic/machines/MV/electric_furnace.lua b/technic/technic/machines/MV/electric_furnace.lua deleted file mode 100644 index 1f6b1c2..0000000 --- a/technic/technic/machines/MV/electric_furnace.lua +++ /dev/null @@ -1,18 +0,0 @@ --- MV Electric Furnace --- This is a faster version of the stone furnace which runs on EUs --- In addition to this it can be upgraded with microcontrollers and batteries --- This new version uses the batteries to lower the power consumption of the machine --- Also in addition this furnace can be attached to the pipe system from the pipeworks mod. - --- FIXME: kpoppel I'd like to introduce an induction heating element here also -minetest.register_craft({ - output = 'technic:mv_electric_furnace', - recipe = { - {'technic:stainless_steel_ingot', 'technic:lv_electric_furnace', 'technic:stainless_steel_ingot'}, - {'pipeworks:tube_1', 'technic:mv_transformer', 'pipeworks:tube_1'}, - {'technic:stainless_steel_ingot', 'technic:mv_cable0', 'technic:stainless_steel_ingot'}, - } -}) - -technic.register_electric_furnace({tier="MV", upgrade=1, tube=1, demand={2000, 1000, 500}, speed=4}) - diff --git a/technic/technic/machines/MV/extractor.lua b/technic/technic/machines/MV/extractor.lua deleted file mode 100644 index fdef5b2..0000000 --- a/technic/technic/machines/MV/extractor.lua +++ /dev/null @@ -1,12 +0,0 @@ --- MV extractor - -minetest.register_craft({ - output = 'technic:mv_extractor', - recipe = { - {'technic:stainless_steel_ingot', 'technic:lv_extractor', 'technic:stainless_steel_ingot'}, - {'pipeworks:tube_1', 'technic:mv_transformer', 'pipeworks:tube_1'}, - {'technic:stainless_steel_ingot', 'technic:mv_cable0', 'technic:stainless_steel_ingot'}, - } -}) - -technic.register_extractor({tier = "MV", demand = {800, 600, 400}, speed = 2, upgrade = 1, tube = 1}) diff --git a/technic/technic/machines/MV/generator.lua b/technic/technic/machines/MV/generator.lua deleted file mode 100644 index 4ae24b8..0000000 --- a/technic/technic/machines/MV/generator.lua +++ /dev/null @@ -1,13 +0,0 @@ -minetest.register_alias("generator_mv", "technic:generator_mv") - -minetest.register_craft({ - output = 'technic:mv_generator', - recipe = { - {'technic:stainless_steel_ingot', 'technic:lv_generator', 'technic:stainless_steel_ingot'}, - {'pipeworks:tube_1', 'technic:mv_transformer', 'pipeworks:tube_1'}, - {'technic:stainless_steel_ingot', 'technic:mv_cable0', 'technic:stainless_steel_ingot'}, - } -}) - -technic.register_generator({tier="MV", tube=1, supply=600}) - diff --git a/technic/technic/machines/MV/grinder.lua b/technic/technic/machines/MV/grinder.lua deleted file mode 100644 index dac536c..0000000 --- a/technic/technic/machines/MV/grinder.lua +++ /dev/null @@ -1,13 +0,0 @@ --- MV grinder - -minetest.register_craft({ - output = 'technic:mv_grinder', - recipe = { - {'technic:stainless_steel_ingot', 'technic:lv_grinder', 'technic:stainless_steel_ingot'}, - {'pipeworks:tube_1', 'technic:mv_transformer', 'pipeworks:tube_1'}, - {'technic:stainless_steel_ingot', 'technic:mv_cable0', 'technic:stainless_steel_ingot'}, - } -}) - -technic.register_grinder({tier="MV", demand={600, 450, 300}, speed=2, upgrade=1, tube=1}) - diff --git a/technic/technic/machines/MV/init.lua b/technic/technic/machines/MV/init.lua deleted file mode 100644 index 72a98b6..0000000 --- a/technic/technic/machines/MV/init.lua +++ /dev/null @@ -1,32 +0,0 @@ - -technic.register_tier("MV", "Medium Voltage") - -local path = technic.modpath.."/machines/MV" - --- Wiring stuff -dofile(path.."/cables.lua") -dofile(path.."/battery_box.lua") - --- Generators -if technic.config:get_bool("enable_wind_mill") then - dofile(path.."/wind_mill.lua") -end -dofile(path.."/generator.lua") -dofile(path.."/solar_array.lua") - --- Machines -dofile(path.."/alloy_furnace.lua") -dofile(path.."/electric_furnace.lua") -dofile(path.."/grinder.lua") -dofile(path.."/extractor.lua") -dofile(path.."/compressor.lua") -dofile(path.."/centrifuge.lua") - -dofile(path.."/tool_workshop.lua") - --- The power radiator supplies appliances with inductive coupled power: --- Lighting and associated textures is taken directly from VanessaE's homedecor and made electric. --- This is currently useless, slow, and mostly copied ---dofile(path.."/power_radiator.lua") ---dofile(path.."/lighting.lua") - diff --git a/technic/technic/machines/MV/lighting.lua b/technic/technic/machines/MV/lighting.lua deleted file mode 100644 index 76fcb20..0000000 --- a/technic/technic/machines/MV/lighting.lua +++ /dev/null @@ -1,590 +0,0 @@ --- NOTE: The code is takes directly from VanessaE's homedecor mod. --- I just made it the lights into indictive appliances for this mod. - --- This file supplies electric powered glowlights - --- Boilerplate to support localized strings if intllib mod is installed. -local S -if (minetest.get_modpath("intllib")) then - dofile(minetest.get_modpath("intllib").."/intllib.lua") - S = intllib.Getter(minetest.get_current_modname()) -else - S = function (s) return s end -end - -function technic_homedecor_node_is_owned(pos, placer) - local ownername = false - if type(IsPlayerNodeOwner) == "function" then -- node_ownership mod - if HasOwner(pos, placer) then - if not IsPlayerNodeOwner(pos, placer:get_player_name()) then - if type(getLastOwner) == "function" then -- ...is an old version - ownername = getLastOwner(pos) - elseif type(GetNodeOwnerName) == "function" then -- ...is a recent version - ownername = GetNodeOwnerName(pos) - else - ownername = S("someone") - end - end - end - - elseif type(isprotect) == "function" then -- glomie's protection mod - if not isprotect(5, pos, placer) then - ownername = S("someone") - end - elseif type(protector) == "table" and type(protector.can_dig) == "function" then -- Zeg9's protection mod - if not protector.can_dig(5, pos, placer) then - ownername = S("someone") - end - end - - if ownername ~= false then - minetest.chat_send_player(placer:get_player_name(), S("Sorry, %s owns that spot."):format(ownername) ) - return true - else - return false - end -end - -local dirs1 = {20, 23, 22, 21} -local dirs2 = {9, 18, 7, 12} - -local technic_homedecor_rotate_and_place = function(itemstack, placer, pointed_thing) - if not technic_homedecor_node_is_owned(pointed_thing.under, placer) - and not technic_homedecor_node_is_owned(pointed_thing.above, placer) then - local node = minetest.get_node(pointed_thing.under) - if not minetest.registered_nodes[node.name] or not minetest.registered_nodes[node.name].on_rightclick then - - local above = pointed_thing.above - local under = pointed_thing.under - local pitch = placer:get_look_pitch() - local pname = minetest.get_node(under).name - local node = minetest.get_node(above) - local fdir = minetest.dir_to_facedir(placer:get_look_dir()) - local wield_name = itemstack:get_name() - - if not minetest.registered_nodes[pname] - or not minetest.registered_nodes[pname].on_rightclick then - - local iswall = (above.x ~= under.x) or (above.z ~= under.z) - local isceiling = (above.x == under.x) and (above.z == under.z) and (pitch > 0) - local pos1 = above - - if minetest.registered_nodes[pname]["buildable_to"] then - pos1 = under - iswall = false - end - - if not minetest.registered_nodes[minetest.get_node(pos1).name]["buildable_to"] then return end - - if iswall then - minetest.add_node(pos1, {name = wield_name, param2 = dirs2[fdir+1] }) -- place wall variant - elseif isceiling then - minetest.add_node(pos1, {name = wield_name, param2 = 20 }) -- place upside down variant - else - minetest.add_node(pos1, {name = wield_name, param2 = 0 }) -- place right side up - end - - if not homedecor_expect_infinite_stacks then - itemstack:take_item() - return itemstack - end - end - else - minetest.registered_nodes[node.name].on_rightclick(pointed_thing.under, node, placer, itemstack) - end - end -end - --- Yellow -- Half node -minetest.register_node('technic:homedecor_glowlight_half_yellow', { - description = S("Yellow Glowlight (thick)"), - drawtype = "nodebox", - tiles = { - 'technic_homedecor_glowlight_yellow_tb.png', - 'technic_homedecor_glowlight_yellow_tb.png', - 'technic_homedecor_glowlight_thick_yellow_sides.png', - 'technic_homedecor_glowlight_thick_yellow_sides.png', - 'technic_homedecor_glowlight_thick_yellow_sides.png', - 'technic_homedecor_glowlight_thick_yellow_sides.png' - }, - selection_box = { - type = "fixed", - fixed = { -0.5, -0.5, -0.5, 0.5, 0, 0.5 } - }, - node_box = { - type = "fixed", - fixed = { -0.5, -0.5, -0.5, 0.5, 0, 0.5 } - }, - - sunlight_propagates = false, - paramtype = "light", - paramtype2 = "facedir", - walkable = true, - sounds = default.node_sound_wood_defaults(), - - groups = { snappy = 3 }, - on_place = function(itemstack, placer, pointed_thing) - technic_homedecor_rotate_and_place(itemstack, placer, pointed_thing) - return itemstack - end, - on_construct = function(pos) - technic.inductive_on_construct(pos, 100, "Yellow Glowlight (thick)") - end, - on_punch = function(pos, node, puncher) - technic.inductive_on_punch_off(pos, 100, "technic:homedecor_glowlight_half_yellow_active") - end -}) - -minetest.register_node('technic:homedecor_glowlight_half_yellow_active', { - description = S("Yellow Glowlight (thick)"), - drawtype = "nodebox", - tiles = { - 'technic_homedecor_glowlight_yellow_tb.png', - 'technic_homedecor_glowlight_yellow_tb.png', - 'technic_homedecor_glowlight_thick_yellow_sides.png', - 'technic_homedecor_glowlight_thick_yellow_sides.png', - 'technic_homedecor_glowlight_thick_yellow_sides.png', - 'technic_homedecor_glowlight_thick_yellow_sides.png' - }, - selection_box = { - type = "fixed", - fixed = { -0.5, -0.5, -0.5, 0.5, 0, 0.5 } - }, - node_box = { - type = "fixed", - fixed = { -0.5, -0.5, -0.5, 0.5, 0, 0.5 } - }, - - sunlight_propagates = false, - paramtype = "light", - paramtype2 = "facedir", - walkable = true, - light_source = LIGHT_MAX, - sounds = default.node_sound_wood_defaults(), - - groups = { snappy = 3, not_in_creative_inventory=1}, - drop="technic:homedecor_glowlight_half_yellow", - on_place = function(itemstack, placer, pointed_thing) - technic_homedecor_rotate_and_place(itemstack, placer, pointed_thing) - return itemstack - end, - on_construct = function(pos) - technic.inductive_on_construct(pos, 100, "Yellow Glowlight (thick)") - end, - on_punch = function(pos, node, puncher) - technic.inductive_on_punch_on(pos, 0, "technic:homedecor_glowlight_half_yellow") - end -}) - --- Yellow -- Quarter node -minetest.register_node('technic:homedecor_glowlight_quarter_yellow', { - description = S("Yellow Glowlight (thin)"), - drawtype = "nodebox", - tiles = { - 'technic_homedecor_glowlight_yellow_tb.png', - 'technic_homedecor_glowlight_yellow_tb.png', - 'technic_homedecor_glowlight_thin_yellow_sides.png', - 'technic_homedecor_glowlight_thin_yellow_sides.png', - 'technic_homedecor_glowlight_thin_yellow_sides.png', - 'technic_homedecor_glowlight_thin_yellow_sides.png' - }, - selection_box = { - type = "fixed", - fixed = { -0.5, -0.5, -0.5, 0.5, -0.25, 0.5 } - }, - node_box = { - type = "fixed", - fixed = { -0.5, -0.5, -0.5, 0.5, -0.25, 0.5 } - }, - - sunlight_propagates = false, - paramtype = "light", - paramtype2 = "facedir", - walkable = true, - sounds = default.node_sound_wood_defaults(), - - groups = { snappy = 3 }, - on_place = function(itemstack, placer, pointed_thing) - technic_homedecor_rotate_and_place(itemstack, placer, pointed_thing) - return itemstack - end, - on_construct = function(pos) - technic.inductive_on_construct(pos, 100, "Yellow Glowlight (thin)") - end, - on_punch = function(pos, node, puncher) - technic.inductive_on_punch_off(pos, 100, "technic:homedecor_glowlight_quarter_yellow_active") - end -}) - -minetest.register_node('technic:homedecor_glowlight_quarter_yellow_active', { - description = S("Yellow Glowlight (thin)"), - drawtype = "nodebox", - tiles = { - 'technic_homedecor_glowlight_yellow_tb.png', - 'technic_homedecor_glowlight_yellow_tb.png', - 'technic_homedecor_glowlight_thin_yellow_sides.png', - 'technic_homedecor_glowlight_thin_yellow_sides.png', - 'technic_homedecor_glowlight_thin_yellow_sides.png', - 'technic_homedecor_glowlight_thin_yellow_sides.png' - }, - selection_box = { - type = "fixed", - fixed = { -0.5, -0.5, -0.5, 0.5, -0.25, 0.5 } - }, - node_box = { - type = "fixed", - fixed = { -0.5, -0.5, -0.5, 0.5, -0.25, 0.5 } - }, - - sunlight_propagates = false, - paramtype = "light", - paramtype2 = "facedir", - walkable = true, - light_source = LIGHT_MAX-1, - sounds = default.node_sound_wood_defaults(), - - groups = { snappy = 3, not_in_creative_inventory=1}, - drop="technic:homedecor_glowlight_quarter_yellow", - on_place = function(itemstack, placer, pointed_thing) - technic_homedecor_rotate_and_place(itemstack, placer, pointed_thing) - return itemstack - end, - on_construct = function(pos) - technic.inductive_on_construct(pos, 100, "Yellow Glowlight (thin)") - end, - on_punch = function(pos, node, puncher) - technic.inductive_on_punch_on(pos, 0, "technic:homedecor_glowlight_quarter_yellow") - end -}) - - --- White -- half node -minetest.register_node('technic:homedecor_glowlight_half_white', { - description = S("White Glowlight (thick)"), - drawtype = "nodebox", - tiles = { - 'technic_homedecor_glowlight_white_tb.png', - 'technic_homedecor_glowlight_white_tb.png', - 'technic_homedecor_glowlight_thick_white_sides.png', - 'technic_homedecor_glowlight_thick_white_sides.png', - 'technic_homedecor_glowlight_thick_white_sides.png', - 'technic_homedecor_glowlight_thick_white_sides.png' - }, - selection_box = { - type = "fixed", - fixed = { -0.5, -0.5, -0.5, 0.5, 0, 0.5 } - }, - node_box = { - type = "fixed", - fixed = { -0.5, -0.5, -0.5, 0.5, 0, 0.5 } - }, - - sunlight_propagates = false, - paramtype = "light", - paramtype2 = "facedir", - walkable = true, - sounds = default.node_sound_wood_defaults(), - - groups = { snappy = 3 }, - on_place = function(itemstack, placer, pointed_thing) - technic_homedecor_rotate_and_place(itemstack, placer, pointed_thing) - return itemstack - end, - on_construct = function(pos) - technic.inductive_on_construct(pos, 100, "White Glowlight (thick)") - end, - on_punch = function(pos, node, puncher) - technic.inductive_on_punch_off(pos, 100, "technic:homedecor_glowlight_half_white_active") - end -}) - -minetest.register_node('technic:homedecor_glowlight_half_white_active', { - description = S("White Glowlight (thick)"), - drawtype = "nodebox", - tiles = { - 'technic_homedecor_glowlight_white_tb.png', - 'technic_homedecor_glowlight_white_tb.png', - 'technic_homedecor_glowlight_thick_white_sides.png', - 'technic_homedecor_glowlight_thick_white_sides.png', - 'technic_homedecor_glowlight_thick_white_sides.png', - 'technic_homedecor_glowlight_thick_white_sides.png' - }, - selection_box = { - type = "fixed", - fixed = { -0.5, -0.5, -0.5, 0.5, 0, 0.5 } - }, - node_box = { - type = "fixed", - fixed = { -0.5, -0.5, -0.5, 0.5, 0, 0.5 } - }, - - sunlight_propagates = false, - paramtype = "light", - paramtype2 = "facedir", - walkable = true, - light_source = LIGHT_MAX, - sounds = default.node_sound_wood_defaults(), - - groups = { snappy = 3, not_in_creative_inventory=1}, - drop="technic:homedecor_glowlight_half_white", - on_place = function(itemstack, placer, pointed_thing) - technic_homedecor_rotate_and_place(itemstack, placer, pointed_thing) - return itemstack - end, - on_construct = function(pos) - technic.inductive_on_construct(pos, 100, "White Glowlight (thick)") - end, - on_punch = function(pos, node, puncher) - technic.inductive_on_punch_on(pos, 0, "technic:homedecor_glowlight_half_white") - end -}) - --- White -- Quarter node -minetest.register_node('technic:homedecor_glowlight_quarter_white', { - description = S("White Glowlight (thin)"), - drawtype = "nodebox", - tiles = { - 'technic_homedecor_glowlight_white_tb.png', - 'technic_homedecor_glowlight_white_tb.png', - 'technic_homedecor_glowlight_thin_white_sides.png', - 'technic_homedecor_glowlight_thin_white_sides.png', - 'technic_homedecor_glowlight_thin_white_sides.png', - 'technic_homedecor_glowlight_thin_white_sides.png' - }, - selection_box = { - type = "fixed", - fixed = { -0.5, -0.5, -0.5, 0.5, -0.25, 0.5 } - }, - node_box = { - type = "fixed", - fixed = { -0.5, -0.5, -0.5, 0.5, -0.25, 0.5 } - }, - - sunlight_propagates = false, - paramtype = "light", - paramtype2 = "facedir", - walkable = true, - sounds = default.node_sound_wood_defaults(), - - groups = { snappy = 3 }, - on_place = function(itemstack, placer, pointed_thing) - technic_homedecor_rotate_and_place(itemstack, placer, pointed_thing) - return itemstack - end, - on_construct = function(pos) - technic.inductive_on_construct(pos, 100, "White Glowlight (thin)") - end, - on_punch = function(pos, node, puncher) - technic.inductive_on_punch_off(pos, 100, "technic:homedecor_glowlight_quarter_white_active") - end -}) - -minetest.register_node('technic:homedecor_glowlight_quarter_white_active', { - description = S("White Glowlight (thin)"), - drawtype = "nodebox", - tiles = { - 'technic_homedecor_glowlight_white_tb.png', - 'technic_homedecor_glowlight_white_tb.png', - 'technic_homedecor_glowlight_thin_white_sides.png', - 'technic_homedecor_glowlight_thin_white_sides.png', - 'technic_homedecor_glowlight_thin_white_sides.png', - 'technic_homedecor_glowlight_thin_white_sides.png' - }, - selection_box = { - type = "fixed", - fixed = { -0.5, -0.5, -0.5, 0.5, -0.25, 0.5 } - }, - node_box = { - type = "fixed", - fixed = { -0.5, -0.5, -0.5, 0.5, -0.25, 0.5 } - }, - - sunlight_propagates = false, - paramtype = "light", - paramtype2 = "facedir", - walkable = true, - light_source = LIGHT_MAX-1, - sounds = default.node_sound_wood_defaults(), - - groups = { snappy = 3, not_in_creative_inventory=1}, - drop="technic:homedecor_glowlight_quarter_white", - on_place = function(itemstack, placer, pointed_thing) - technic_homedecor_rotate_and_place(itemstack, placer, pointed_thing) - return itemstack - end, - on_construct = function(pos) - technic.inductive_on_construct(pos, 100, "White Glowlight (thin)") - end, - on_punch = function(pos, node, puncher) - technic.inductive_on_punch_on(pos, 0, "technic:homedecor_glowlight_quarter_white") - end -}) - --- Glowlight "cubes" - yellow -minetest.register_node('technic:homedecor_glowlight_small_cube_yellow', { - description = S("Yellow Glowlight (small cube)"), - drawtype = "nodebox", - tiles = { - 'technic_homedecor_glowlight_cube_yellow_tb.png', - 'technic_homedecor_glowlight_cube_yellow_tb.png', - 'technic_homedecor_glowlight_cube_yellow_sides.png', - 'technic_homedecor_glowlight_cube_yellow_sides.png', - 'technic_homedecor_glowlight_cube_yellow_sides.png', - 'technic_homedecor_glowlight_cube_yellow_sides.png' - }, - selection_box = { - type = "fixed", - fixed = { -0.25, -0.5, -0.25, 0.25, 0, 0.25 } - }, - node_box = { - type = "fixed", - fixed = { -0.25, -0.5, -0.25, 0.25, 0, 0.25 } - }, - - sunlight_propagates = false, - paramtype = "light", - paramtype2 = "facedir", - walkable = true, - sounds = default.node_sound_wood_defaults(), - - groups = { snappy = 3 }, - on_place = function(itemstack, placer, pointed_thing) - technic_homedecor_rotate_and_place(itemstack, placer, pointed_thing) - return itemstack - end, - on_construct = function(pos) - technic.inductive_on_construct(pos, 50, "Yellow Glowlight (small cube)") - end, - on_punch = function(pos, node, puncher) - technic.inductive_on_punch_off(pos, 50, "technic:homedecor_glowlight_small_cube_yellow_active") - end -}) - -minetest.register_node('technic:homedecor_glowlight_small_cube_yellow_active', { - description = S("Yellow Glowlight (small cube)"), - drawtype = "nodebox", - tiles = { - 'technic_homedecor_glowlight_cube_yellow_tb.png', - 'technic_homedecor_glowlight_cube_yellow_tb.png', - 'technic_homedecor_glowlight_cube_yellow_sides.png', - 'technic_homedecor_glowlight_cube_yellow_sides.png', - 'technic_homedecor_glowlight_cube_yellow_sides.png', - 'technic_homedecor_glowlight_cube_yellow_sides.png' - }, - selection_box = { - type = "fixed", - fixed = { -0.25, -0.5, -0.25, 0.25, 0, 0.25 } - }, - node_box = { - type = "fixed", - fixed = { -0.25, -0.5, -0.25, 0.25, 0, 0.25 } - }, - - sunlight_propagates = false, - paramtype = "light", - paramtype2 = "facedir", - walkable = true, - light_source = LIGHT_MAX-1, - sounds = default.node_sound_wood_defaults(), - - groups = { snappy = 3, not_in_creative_inventory=1}, - drop="technic:homedecor_glowlight_small_cube_yellow", - on_place = function(itemstack, placer, pointed_thing) - technic_homedecor_rotate_and_place(itemstack, placer, pointed_thing) - return itemstack - end, - on_construct = function(pos) - technic.inductive_on_construct(pos, 50, "Yellow Glowlight (small cube)") - end, - on_punch = function(pos, node, puncher) - technic.inductive_on_punch_on(pos, 0, "technic:homedecor_glowlight_small_cube_yellow") - end -}) - --- Glowlight "cubes" - white -minetest.register_node('technic:homedecor_glowlight_small_cube_white', { - description = S("White Glowlight (small cube)"), - drawtype = "nodebox", - tiles = { - 'technic_homedecor_glowlight_cube_white_tb.png', - 'technic_homedecor_glowlight_cube_white_tb.png', - 'technic_homedecor_glowlight_cube_white_sides.png', - 'technic_homedecor_glowlight_cube_white_sides.png', - 'technic_homedecor_glowlight_cube_white_sides.png', - 'technic_homedecor_glowlight_cube_white_sides.png' - }, - selection_box = { - type = "fixed", - fixed = { -0.25, -0.5, -0.25, 0.25, 0, 0.25 } - }, - node_box = { - type = "fixed", - fixed = { -0.25, -0.5, -0.25, 0.25, 0, 0.25 } - }, - - sunlight_propagates = false, - paramtype = "light", - paramtype2 = "facedir", - walkable = true, - sounds = default.node_sound_wood_defaults(), - - groups = { snappy = 3 }, - on_place = function(itemstack, placer, pointed_thing) - technic_homedecor_rotate_and_place(itemstack, placer, pointed_thing) - return itemstack - end, - on_construct = function(pos) - technic.inductive_on_construct(pos, 50, "White Glowlight (small cube)") - end, - on_punch = function(pos, node, puncher) - technic.inductive_on_punch_off(pos, 50, "technic:homedecor_glowlight_small_cube_white_active") - end -}) - -minetest.register_node('technic:homedecor_glowlight_small_cube_white_active', { - description = S("White Glowlight (small cube)"), - drawtype = "nodebox", - tiles = { - 'technic_homedecor_glowlight_cube_white_tb.png', - 'technic_homedecor_glowlight_cube_white_tb.png', - 'technic_homedecor_glowlight_cube_white_sides.png', - 'technic_homedecor_glowlight_cube_white_sides.png', - 'technic_homedecor_glowlight_cube_white_sides.png', - 'technic_homedecor_glowlight_cube_white_sides.png' - }, - selection_box = { - type = "fixed", - fixed = { -0.25, -0.5, -0.25, 0.25, 0, 0.25 } - }, - node_box = { - type = "fixed", - fixed = { -0.25, -0.5, -0.25, 0.25, 0, 0.25 } - }, - - sunlight_propagates = false, - paramtype = "light", - paramtype2 = "facedir", - walkable = true, - light_source = LIGHT_MAX-1, - sounds = default.node_sound_wood_defaults(), - - groups = { snappy = 3, not_in_creative_inventory=1}, - drop="technic:homedecor_glowlight_small_cube_white", - on_place = function(itemstack, placer, pointed_thing) - technic_homedecor_rotate_and_place(itemstack, placer, pointed_thing) - return itemstack - end, - on_construct = function(pos) - technic.inductive_on_construct(pos, 50, "White Glowlight (small cube)") - end, - on_punch = function(pos, node, puncher) - technic.inductive_on_punch_on(pos, 0, "technic:homedecor_glowlight_small_cube_white") - end -}) - -technic.register_inductive_machine("technic:homedecor_glowlight_half_yellow") -technic.register_inductive_machine("technic:homedecor_glowlight_half_white") -technic.register_inductive_machine("technic:homedecor_glowlight_quarter_yellow") -technic.register_inductive_machine("technic:homedecor_glowlight_quarter_white") -technic.register_inductive_machine("technic:homedecor_glowlight_small_cube_yellow") -technic.register_inductive_machine("technic:homedecor_glowlight_small_cube_white") diff --git a/technic/technic/machines/MV/power_radiator.lua b/technic/technic/machines/MV/power_radiator.lua deleted file mode 100644 index 560f8a9..0000000 --- a/technic/technic/machines/MV/power_radiator.lua +++ /dev/null @@ -1,220 +0,0 @@ --- The power radiator fuctions like an inductive charger --- only better in the game setting. --- The purpose is to allow small appliances to receive power --- without the overhead of the wiring needed for larger machines. --- --- The power radiator will consume power corresponding to the --- sum(power rating of the attached appliances)/0.06 --- Using inductive power transfer is very inefficient so this is --- set to the factor 0.06. --- --- Punching the radiator will toggle the power state of all attached appliances. - -local power_radius = 12 - ------------------------------------------------------------------- --- API for inductive powered nodes: --- Use the functions below to set the corresponding callbacks --- Also two nodes are needed: The inactive and the active one. The active must be called _active . ------------------------------------------------------------------- --- Register a new appliance using this function - -technic.inductive_nodes = {} -technic.register_inductive_machine = function(name) - table.insert(technic.inductive_nodes, name) - table.insert(technic.inductive_nodes, name.."_active") -end - --- Appliances: --- has_supply: pos of supply node if the appliance has a power radiator near with sufficient power for the demand else "" --- EU_demand: The power demand of the device. --- EU_charge: Actual use. set to EU_demand if active==1 --- active: set to 1 if the device is on -technic.inductive_on_construct = function(pos, eu_demand, infotext) - local meta = minetest.get_meta(pos) - meta:set_string("infotext", infotext) - meta:set_int("technic_inductive_power_machine", 1) - meta:set_int("EU_demand", eu_demand) -- The power demand of this appliance - meta:set_int("EU_charge", 0) -- The actual power draw of this appliance - meta:set_string("has_supply", "") -- Register whether we are powered or not. For use with several radiators. - meta:set_int("active", 0) -- If the appliance can be turned on and off by using it use this. -end - -technic.inductive_on_punch_off = function(pos, eu_charge, swapnode) - local meta = minetest.get_meta(pos) - if meta:get_string("has_supply") ~= "" then - technic.swap_node(pos, swapnode) - meta:set_int("active", 1) - meta:set_int("EU_charge",eu_charge) - --print("-----------") - --print("Turn on:") - --print("EU_charge: "..meta:get_int("EU_charge")) - --print("has_supply: "..meta:get_string("has_supply")) - --print("<----------->") - end -end - -technic.inductive_on_punch_on = function(pos, eu_charge, swapnode) - local meta = minetest.get_meta(pos) - technic.swap_node(pos, swapnode) - meta:set_int("active", 0) - meta:set_int("EU_charge",eu_charge) - --print("-----------") - --print("Turn off:") - --print("EU_charge: "..meta:get_int("EU_charge")) - --print("has_supply: "..meta:get_string("has_supply")) - --print("<---------->") -end - -local shutdown_inductive_appliances = function(pos) - -- The supply radius - local rad = power_radius - -- If the radiator is removed. turn off all appliances in region - -- If another radiator is near it will turn on the appliances again - local positions = minetest.find_nodes_in_area( - {x=pos.x-rad, y=pos.y-rad, z=pos.z-rad}, - {x=pos.x+rad, y=pos.y+rad, z=pos.z+rad}, - technic.inductive_nodes) - for _, pos1 in pairs(positions) do - local meta1 = minetest.get_meta(pos1) - -- If the appliance is belonging to this node - if meta1:get_string("has_supply") == pos.x..pos.y..pos.z then - local nodename = minetest.get_node(pos1).name - -- Swap the node and make sure it is off and unpowered - if string.sub(nodename, -7) == "_active" then - technic.swap_node(pos1, string.sub(nodename, 1, -8)) - meta1:set_int("active", 0) - meta1:set_int("EU_charge", 0) - end - meta1:set_string("has_supply", "") - end - end -end - -local toggle_on_off_inductive_appliances = function(pos, node, puncher) - if pos == nil then return end - -- The supply radius - local rad = power_radius - local positions = minetest.find_nodes_in_area( - {x=pos.x-rad, y=pos.y-rad, z=pos.z-rad}, - {x=pos.x+rad, y=pos.y+rad, z=pos.z+rad}, - technic.inductive_nodes) - for _, pos1 in pairs(positions) do - local meta1 = minetest.get_meta(pos1) - if meta1:get_string("has_supply") == pos.x..pos.y..pos.z then - minetest.punch_node(pos1) - end - end -end - -minetest.register_node("technic:power_radiator", { - description = "MV Power Radiator", - tiles = {"technic_lv_cable.png", "technic_lv_cable.png", "technic_lv_cable.png", - "technic_lv_cable.png", "technic_lv_cable.png", "technic_lv_cable.png"}, - groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2}, - sounds = default.node_sound_wood_defaults(), - drawtype = "nodebox", - paramtype = "light", - is_ground_content = true, - node_box = { - type = "fixed", - fixed = {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, - }, - on_construct = function(pos) - local meta = minetest.get_meta(pos) - meta:set_int("MV_EU_demand",1) -- Demand on the primary side when idle - meta:set_int("connected_EU_demand",0) -- Potential demand of connected appliances - meta:set_string("infotext", "MV Power Radiator") - end, - on_dig = function(pos, node, digger) - shutdown_inductive_appliances(pos) - return minetest.node_dig(pos, node, digger) - end, - on_punch = function(pos, node, puncher) - toggle_on_off_inductive_appliances(pos, node, puncher) - end -}) - -minetest.register_craft({ - output = 'technic:power_radiator 1', - recipe = { - {'technic:stainless_steel_ingot', 'technic:mv_transformer', 'technic:stainless_steel_ingot'}, - {'technic:copper_coil', 'technic:machine_casing', 'technic:copper_coil'}, - {'technic:rubber', 'technic:mv_cable0', 'technic:rubber'}, - } -}) - -minetest.register_abm({ - nodenames = {"technic:power_radiator"}, - interval = 1, - chance = 1, - action = function(pos, node, active_object_count, active_object_count_wider) - local meta = minetest.get_meta(pos) - local eu_input = meta:get_int("MV_EU_input") - local eu_demand = meta:get_int("MV_EU_demand") - - -- Power off automatically if no longer connected to a switching station - technic.switching_station_timeout_count(pos, "MV") - - if eu_input == 0 then - -- No power - meta:set_string("infotext", "MV Power Radiator is unpowered"); - -- meta:set_int("active", 1) -- used for setting textures someday maybe - shutdown_inductive_appliances(pos) - meta:set_int("connected_EU_demand", 0) - meta:set_int("MV_EU_demand",1) - elseif eu_input == eu_demand then - -- Powered and ready - - -- The maximum EU sourcing a single radiator can provide. - local max_charge = 30000 -- == the max EU demand of the radiator - local connected_EU_demand = meta:get_int("connected_EU_demand") - - -- Efficiency factor - local eff_factor = 0.06 - -- The supply radius - local rad = power_radius - - local meta1 = nil - local pos1 = {} - local used_charge = 0 - - -- Index all nodes within supply range - local positions = minetest.find_nodes_in_area( - {x=pos.x-rad, y=pos.y-rad, z=pos.z-rad}, - {x=pos.x+rad, y=pos.y+rad, z=pos.z+rad}, - technic.inductive_nodes) - for _, pos1 in pairs(positions) do - local meta1 = minetest.get_meta(pos1) - -- If not supplied see if this node can handle it. - if meta1:get_string("has_supply") == "" then - -- if demand surpasses the capacity of this node, don't bother adding it. - local app_eu_demand = math.floor(meta1:get_int("EU_demand") / eff_factor) - if connected_EU_demand + app_eu_demand <= max_charge then - -- We can power the appliance. Register, and spend power if it is on. - connected_EU_demand = connected_EU_demand + app_eu_demand - - meta1:set_string("has_supply", pos.x..pos.y..pos.z) - --Always 0: used_charge = math.floor(used_charge + meta1:get_int("EU_charge") / eff_factor) - end - elseif meta1:get_string("has_supply") == pos.x..pos.y..pos.z then - -- The appliance has power from this node. Spend power if it is on. - used_charge = used_charge + math.floor(meta1:get_int("EU_charge") / eff_factor) - end - meta:set_string("infotext", "MV Power Radiator is powered (" - ..math.floor(used_charge / max_charge * 100) - .."% of maximum power)"); - if used_charge == 0 then - meta:set_int("MV_EU_demand", 1) -- Still idle - else - meta:set_int("MV_EU_demand", used_charge) - end - end - -- Save state - meta:set_int("connected_EU_demand", connected_EU_demand) - end - end, -}) - -technic.register_machine("MV", "technic:power_radiator", technic.receiver) - diff --git a/technic/technic/machines/MV/solar_array.lua b/technic/technic/machines/MV/solar_array.lua deleted file mode 100644 index 227d8ee..0000000 --- a/technic/technic/machines/MV/solar_array.lua +++ /dev/null @@ -1,14 +0,0 @@ - -minetest.register_craft({ - output = 'technic:solar_array_mv 1', - recipe = { - {'technic:solar_array_lv', 'technic:solar_array_lv', 'technic:solar_array_lv'}, - {'technic:carbon_steel_ingot', 'technic:mv_transformer', 'technic:carbon_steel_ingot'}, - {'', 'technic:mv_cable0', ''}, - } -}) - -technic.register_solar_array({tier="MV", power=30}) - --- compatibility alias for upgrading from old versions of technic -minetest.register_alias("technic:solar_panel_mv", "technic:solar_array_mv") diff --git a/technic/technic/machines/MV/tool_workshop.lua b/technic/technic/machines/MV/tool_workshop.lua deleted file mode 100644 index 318b1ec..0000000 --- a/technic/technic/machines/MV/tool_workshop.lua +++ /dev/null @@ -1,117 +0,0 @@ --- Tool workshop --- This machine repairs tools. - -minetest.register_alias("tool_workshop", "technic:tool_workshop") - -local S = technic.getter - -minetest.register_craft({ - output = 'technic:tool_workshop', - recipe = { - {'group:wood', 'default:diamond', 'group:wood'}, - {'mesecons_pistons:piston_sticky_off', 'technic:machine_casing', 'technic:carbon_cloth'}, - {'default:obsidian', 'technic:mv_cable0', 'default:obsidian'}, - } -}) - -local workshop_demand = {5000, 3500, 2000} - -local workshop_formspec = - "invsize[8,9;]".. - "list[current_name;src;3,1;1,1;]".. - "label[0,0;"..S("%s Tool Workshop"):format("MV").."]".. - "list[current_name;upgrade1;1,3;1,1;]".. - "list[current_name;upgrade2;2,3;1,1;]".. - "label[1,4;"..S("Upgrade Slots").."]".. - "list[current_player;main;0,5;8,4;]".. - "listring[current_player;main]".. - "listring[current_name;src]".. - "listring[current_player;main]".. - "listring[current_name;upgrade1]".. - "listring[current_player;main]".. - "listring[current_name;upgrade2]".. - "listring[current_player;main]" - -local run = function(pos, node) - local meta = minetest.get_meta(pos) - local inv = meta:get_inventory() - local eu_input = meta:get_int("MV_EU_input") - local machine_name = S("%s Tool Workshop"):format("MV") - local machine_node = "technic:tool_workshop" - - -- Setup meta data if it does not exist. - if not eu_input then - meta:set_int("MV_EU_demand", workshop_demand[1]) - meta:set_int("MV_EU_input", 0) - return - end - - local EU_upgrade, tube_upgrade = technic.handle_machine_upgrades(meta) - - local repairable = false - local srcstack = inv:get_stack("src", 1) - if not srcstack:is_empty() then - local itemdef = minetest.registered_items[srcstack:get_name()] - if itemdef and - (not itemdef.wear_represents or - itemdef.wear_represents == "mechanical_wear") and - srcstack:get_wear() ~= 0 then - repairable = true - end - end - technic.handle_machine_pipeworks(pos, tube_upgrade, function (pos, x_velocity, z_velocity) - if not repairable then - technic.send_items(pos, x_velocity, z_velocity, "src") - end - end) - if not repairable then - meta:set_string("infotext", S("%s Idle"):format(machine_name)) - meta:set_int("MV_EU_demand", 0) - return - end - - if eu_input < workshop_demand[EU_upgrade+1] then - meta:set_string("infotext", S("%s Unpowered"):format(machine_name)) - elseif eu_input >= workshop_demand[EU_upgrade+1] then - meta:set_string("infotext", S("%s Active"):format(machine_name)) - srcstack:add_wear(-1000) - inv:set_stack("src", 1, srcstack) - end - meta:set_int("MV_EU_demand", workshop_demand[EU_upgrade+1]) -end - -minetest.register_node("technic:tool_workshop", { - description = S("%s Tool Workshop"):format("MV"), - paramtype2 = "facedir", - tiles = {"technic_workshop_top.png", "technic_machine_bottom.png", "technic_workshop_side.png", - "technic_workshop_side.png", "technic_workshop_side.png", "technic_workshop_side.png"}, - groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2, technic_machine=1, tubedevice=1, tubedevice_receiver=1}, - sounds = default.node_sound_wood_defaults(), - on_construct = function(pos) - local meta = minetest.get_meta(pos) - meta:set_string("infotext", S("%s Tool Workshop"):format("MV")) - meta:set_string("formspec", workshop_formspec) - local inv = meta:get_inventory() - inv:set_size("src", 1) - inv:set_size("upgrade1", 1) - inv:set_size("upgrade2", 1) - end, - can_dig = technic.machine_can_dig, - allow_metadata_inventory_put = technic.machine_inventory_put, - allow_metadata_inventory_take = technic.machine_inventory_take, - tube = { - can_insert = function (pos, node, stack, direction) - return minetest.get_meta(pos):get_inventory():room_for_item("src", stack) - end, - insert_object = function (pos, node, stack, direction) - return minetest.get_meta(pos):get_inventory():add_item("src", stack) - end, - connect_sides = {left = 1, right = 1, back = 1, top = 1, bottom = 1}, - }, - technic_run = run, - after_place_node = pipeworks.after_place, - after_dig_node = technic.machine_after_dig_node -}) - -technic.register_machine("MV", "technic:tool_workshop", technic.receiver) - diff --git a/technic/technic/machines/MV/wind_mill.lua b/technic/technic/machines/MV/wind_mill.lua deleted file mode 100644 index c553051..0000000 --- a/technic/technic/machines/MV/wind_mill.lua +++ /dev/null @@ -1,87 +0,0 @@ - -local S = technic.getter - -minetest.register_craft({ - output = 'technic:wind_mill_frame 5', - recipe = { - {'technic:carbon_steel_ingot', '', 'technic:carbon_steel_ingot'}, - {'', 'technic:carbon_steel_ingot', ''}, - {'technic:carbon_steel_ingot', '', 'technic:carbon_steel_ingot'}, - } -}) - -minetest.register_craft({ - output = 'technic:wind_mill', - recipe = { - {'', 'technic:motor', ''}, - {'technic:carbon_steel_ingot', 'technic:carbon_steel_block', 'technic:carbon_steel_ingot'}, - {'', 'technic:mv_cable0', ''}, - } -}) - -minetest.register_node("technic:wind_mill_frame", { - description = S("Wind Mill Frame"), - drawtype = "glasslike_framed", - tiles = {"technic_carbon_steel_block.png", "default_glass.png"}, - sunlight_propagates = true, - groups = {cracky=3}, - sounds = default.node_sound_stone_defaults(), - paramtype = "light", -}) - -local function check_wind_mill(pos) - if pos.y < 30 then - return false - end - for i = 1, 20 do - local node = minetest.get_node({x=pos.x, y=pos.y-i, z=pos.z}) - if node.name ~= "technic:wind_mill_frame" then - return false - end - end - return true -end - -local run = function(pos, node) - local meta = minetest.get_meta(pos) - local machine_name = S("Wind %s Generator"):format("MV") - local power = math.min(pos.y * 100, 5000) - - if not check_wind_mill(pos) then - meta:set_int("MV_EU_supply", 0) - meta:set_string("infotext", S("%s Improperly Placed"):format(machine_name)) - return - else - meta:set_int("MV_EU_supply", power) - end - - meta:set_string("infotext", S("@1 (@2 EU)", machine_name, technic.prettynum(power))) -end - -minetest.register_node("technic:wind_mill", { - description = S("Wind %s Generator"):format("MV"), - tiles = {"technic_carbon_steel_block.png"}, - paramtype2 = "facedir", - groups = {cracky=1, technic_machine=1}, - sounds = default.node_sound_stone_defaults(), - drawtype = "nodebox", - paramtype = "light", - node_box = { - type = "fixed", - fixed = { - {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, -- Main box - {-0.1, -0.1, -0.5, 0.1, 0.1, -0.6}, -- Shaft - {-0.1, -1, -0.6, 0.1, 1, -0.7}, -- Vertical blades - {-1, -0.1, -0.6, 1, 0.1, -0.7}, -- Horizontal blades - } - }, - on_construct = function(pos) - local meta = minetest.get_meta(pos) - meta:set_string("infotext", S("Wind %s Generator"):format("MV")) - meta:set_int("MV_EU_supply", 0) - end, - technic_run = run, -}) - -technic.register_machine("MV", "technic:wind_mill", technic.producer) - diff --git a/technic/technic/machines/init.lua b/technic/technic/machines/init.lua deleted file mode 100644 index ad79eab..0000000 --- a/technic/technic/machines/init.lua +++ /dev/null @@ -1,14 +0,0 @@ -local path = technic.modpath.."/machines" - -dofile(path.."/register/init.lua") - --- Tiers -dofile(path.."/LV/init.lua") -dofile(path.."/MV/init.lua") -dofile(path.."/HV/init.lua") - -dofile(path.."/switching_station.lua") -dofile(path.."/supply_converter.lua") - -dofile(path.."/other/init.lua") - diff --git a/technic/technic/machines/other/anchor.lua b/technic/technic/machines/other/anchor.lua deleted file mode 100644 index 1c15bd2..0000000 --- a/technic/technic/machines/other/anchor.lua +++ /dev/null @@ -1,109 +0,0 @@ -local S = technic.getter - -local desc = S("Administrative World Anchor") - -local function compute_forceload_positions(pos, meta) - local radius = meta:get_int("radius") - local minpos = vector.subtract(pos, vector.new(radius, radius, radius)) - local maxpos = vector.add(pos, vector.new(radius, radius, radius)) - local minbpos = {} - local maxbpos = {} - for _, coord in ipairs({"x","y","z"}) do - minbpos[coord] = math.floor(minpos[coord] / 16) * 16 - maxbpos[coord] = math.floor(maxpos[coord] / 16) * 16 - end - local flposes = {} - for x = minbpos.x, maxbpos.x, 16 do - for y = minbpos.y, maxbpos.y, 16 do - for z = minbpos.z, maxbpos.z, 16 do - table.insert(flposes, vector.new(x, y, z)) - end - end - end - return flposes -end - -local function currently_forceloaded_positions(meta) - local ser = meta:get_string("forceloaded") - return ser == "" and {} or minetest.deserialize(ser) -end - -local function forceload_off(meta) - local flposes = currently_forceloaded_positions(meta) - meta:set_string("forceloaded", "") - for _, p in ipairs(flposes) do - minetest.forceload_free_block(p) - end -end - -local function forceload_on(pos, meta) - local want_flposes = compute_forceload_positions(pos, meta) - local have_flposes = {} - for _, p in ipairs(want_flposes) do - if minetest.forceload_block(p) then - table.insert(have_flposes, p) - end - end - meta:set_string("forceloaded", #have_flposes == 0 and "" or minetest.serialize(have_flposes)) -end - -local function set_display(pos, meta) - meta:set_string("infotext", S(meta:get_int("enabled") ~= 0 and "%s Enabled" or "%s Disabled"):format(desc)) - meta:set_string("formspec", - "size[5,3.5]".. - "item_image[0,0;1,1;technic:admin_anchor]".. - "label[1,0;"..minetest.formspec_escape(desc).."]".. - "label[0,1;"..minetest.formspec_escape(S("Owner:").." "..meta:get_string("owner")).."]".. - (meta:get_int("locked") == 0 and - "button[3,1;2,1;lock;"..minetest.formspec_escape(S("Unlocked")).."]" or - "button[3,1;2,1;unlock;"..minetest.formspec_escape(S("Locked")).."]").. - "field[0.25,2.3;1,1;radius;"..minetest.formspec_escape(S("Radius:"))..";"..meta:get_int("radius").."]".. - (meta:get_int("enabled") == 0 and - "button[3,2;2,1;enable;"..minetest.formspec_escape(S("Disabled")).."]" or - "button[3,2;2,1;disable;"..minetest.formspec_escape(S("Enabled")).."]").. - "label[0,3;"..minetest.formspec_escape(S("Keeping %d/%d map blocks loaded"):format(#currently_forceloaded_positions(meta), #compute_forceload_positions(pos, meta))).."]") -end - -minetest.register_node("technic:admin_anchor", { - description = desc, - drawtype = "normal", - tiles = {"technic_admin_anchor.png"}, - is_ground_content = true, - groups = {cracky=3, not_in_creative_inventory=1}, - sounds = default.node_sound_stone_defaults(), - after_place_node = function (pos, placer) - local meta = minetest.get_meta(pos) - if placer and placer:is_player() then - meta:set_string("owner", placer:get_player_name()) - end - set_display(pos, meta) - end, - can_dig = function (pos, player) - local meta = minetest.get_meta(pos) - return meta:get_int("locked") == 0 or (player and player:is_player() and player:get_player_name() == meta:get_string("owner")) - end, - on_destruct = function (pos) - local meta = minetest.get_meta(pos) - forceload_off(meta) - end, - on_receive_fields = function (pos, formname, fields, sender) - local meta = minetest.get_meta(pos) - if (meta:get_int("locked") ~= 0 or fields.lock) and - not (sender and sender:is_player() and - sender:get_player_name() == meta:get_string("owner")) then - return - end - if fields.unlock then meta:set_int("locked", 0) end - if fields.lock then meta:set_int("locked", 1) end - if fields.disable or fields.enable or fields.radius then - forceload_off(meta) - if fields.disable then meta:set_int("enabled", 0) end - if fields.enable then meta:set_int("enabled", 1) end - if fields.radius and string.find(fields.radius, "^[0-9]+$") and tonumber(fields.radius) < 256 then meta:set_int("radius", fields.radius) end - if meta:get_int("enabled") ~= 0 then - forceload_on(pos, meta) - end - end - set_display(pos, meta) - end, -}) diff --git a/technic/technic/machines/other/coal_alloy_furnace.lua b/technic/technic/machines/other/coal_alloy_furnace.lua deleted file mode 100644 index 58af679..0000000 --- a/technic/technic/machines/other/coal_alloy_furnace.lua +++ /dev/null @@ -1,177 +0,0 @@ - --- Fuel driven alloy furnace. This uses no EUs: - -local S = technic.getter - -minetest.register_craft({ - output = 'technic:coal_alloy_furnace', - recipe = { - {'default:brick', 'default:brick', 'default:brick'}, - {'default:brick', '', 'default:brick'}, - {'default:brick', 'default:brick', 'default:brick'}, - } -}) - -local machine_name = S("Fuel-Fired Alloy Furnace") -local formspec = - "size[8,9]".. - "label[0,0;"..machine_name.."]".. - "image[2,2;1,1;default_furnace_fire_bg.png]".. - "list[current_name;fuel;2,3;1,1;]".. - "list[current_name;src;2,1;2,1;]".. - "list[current_name;dst;5,1;2,2;]".. - "list[current_player;main;0,5;8,4;]".. - "listring[current_name;dst]".. - "listring[current_player;main]".. - "listring[current_name;src]".. - "listring[current_player;main]".. - "listring[current_name;fuel]".. - "listring[current_player;main]" - -minetest.register_node("technic:coal_alloy_furnace", { - description = machine_name, - tiles = {"technic_coal_alloy_furnace_top.png", "technic_coal_alloy_furnace_bottom.png", - "technic_coal_alloy_furnace_side.png", "technic_coal_alloy_furnace_side.png", - "technic_coal_alloy_furnace_side.png", "technic_coal_alloy_furnace_front.png"}, - paramtype2 = "facedir", - groups = {cracky=2}, - legacy_facedir_simple = true, - sounds = default.node_sound_stone_defaults(), - on_construct = function(pos) - local meta = minetest.get_meta(pos) - meta:set_string("formspec", formspec) - meta:set_string("infotext", machine_name) - local inv = meta:get_inventory() - inv:set_size("fuel", 1) - inv:set_size("src", 2) - inv:set_size("dst", 4) - end, - can_dig = technic.machine_can_dig, - allow_metadata_inventory_put = technic.machine_inventory_put, - allow_metadata_inventory_take = technic.machine_inventory_take, - allow_metadata_inventory_move = technic.machine_inventory_move, -}) - -minetest.register_node("technic:coal_alloy_furnace_active", { - description = machine_name, - tiles = {"technic_coal_alloy_furnace_top.png", "technic_coal_alloy_furnace_bottom.png", - "technic_coal_alloy_furnace_side.png", "technic_coal_alloy_furnace_side.png", - "technic_coal_alloy_furnace_side.png", "technic_coal_alloy_furnace_front_active.png"}, - paramtype2 = "facedir", - light_source = 8, - drop = "technic:coal_alloy_furnace", - groups = {cracky=2, not_in_creative_inventory=1}, - legacy_facedir_simple = true, - sounds = default.node_sound_stone_defaults(), - can_dig = technic.machine_can_dig, - allow_metadata_inventory_put = technic.machine_inventory_put, - allow_metadata_inventory_take = technic.machine_inventory_take, - allow_metadata_inventory_move = technic.machine_inventory_move, -}) - -minetest.register_abm({ - nodenames = {"technic:coal_alloy_furnace", "technic:coal_alloy_furnace_active"}, - interval = 1, - chance = 1, - action = function(pos, node, active_object_count, active_object_count_wider) - local meta = minetest.get_meta(pos) - local inv = meta:get_inventory() - - if inv:get_size("src") == 1 then -- Old furnace -> convert it - inv:set_size("src", 2) - inv:set_stack("src", 2, inv:get_stack("src2", 1)) - inv:set_size("src2", 0) - end - - local recipe = nil - - for i, name in pairs({ - "fuel_totaltime", - "fuel_time", - "src_totaltime", - "src_time"}) do - if not meta:get_float(name) then - meta:set_float(name, 0.0) - end - end - - -- Get what to cook if anything - local result = technic.get_recipe("alloy", inv:get_list("src")) - - local was_active = false - - if meta:get_float("fuel_time") < meta:get_float("fuel_totaltime") then - was_active = true - meta:set_int("fuel_time", meta:get_int("fuel_time") + 1) - if result then - meta:set_int("src_time", meta:get_int("src_time") + 1) - if meta:get_int("src_time") >= result.time then - meta:set_int("src_time", 0) - local result_stack = ItemStack(result.output) - if inv:room_for_item("dst", result_stack) then - inv:set_list("src", result.new_input) - inv:add_item("dst", result_stack) - end - end - else - meta:set_int("src_time", 0) - end - end - - if meta:get_float("fuel_time") < meta:get_float("fuel_totaltime") then - local percent = math.floor(meta:get_float("fuel_time") / - meta:get_float("fuel_totaltime") * 100) - meta:set_string("infotext", S("%s Active"):format(machine_name).." ("..percent.."%)") - technic.swap_node(pos, "technic:coal_alloy_furnace_active") - meta:set_string("formspec", - "size[8,9]".. - "label[0,0;"..machine_name.."]".. - "image[2,2;1,1;default_furnace_fire_bg.png^[lowpart:".. - (100 - percent)..":default_furnace_fire_fg.png]".. - "list[current_name;fuel;2,3;1,1;]".. - "list[current_name;src;2,1;2,1;]".. - "list[current_name;dst;5,1;2,2;]".. - "list[current_player;main;0,5;8,4;]".. - "listring[current_name;dst]".. - "listring[current_player;main]".. - "listring[current_name;src]".. - "listring[current_player;main]".. - "listring[current_name;fuel]".. - "listring[current_player;main]") - return - end - - local recipe = technic.get_recipe("alloy", inv:get_list("src")) - - if not recipe then - if was_active then - meta:set_string("infotext", S("%s is empty"):format(machine_name)) - technic.swap_node(pos, "technic:coal_alloy_furnace") - meta:set_string("formspec", formspec) - end - return - end - - -- Next take a hard look at the fuel situation - local fuel = nil - local afterfuel - local fuellist = inv:get_list("fuel") - - if fuellist then - fuel, afterfuel = minetest.get_craft_result({method = "fuel", width = 1, items = fuellist}) - end - - if fuel.time <= 0 then - meta:set_string("infotext", S("%s Out Of Fuel"):format(machine_name)) - technic.swap_node(pos, "technic:coal_alloy_furnace") - meta:set_string("formspec", formspec) - return - end - - meta:set_string("fuel_totaltime", fuel.time) - meta:set_string("fuel_time", 0) - - inv:set_stack("fuel", 1, afterfuel.items[1]) - end, -}) - diff --git a/technic/technic/machines/other/coal_furnace.lua b/technic/technic/machines/other/coal_furnace.lua deleted file mode 100644 index 53a0f8b..0000000 --- a/technic/technic/machines/other/coal_furnace.lua +++ /dev/null @@ -1,5 +0,0 @@ -local S = technic.getter - -if minetest.registered_nodes["default:furnace"].description == "Furnace" then - minetest.override_item("default:furnace", { description = S("Fuel-Fired Furnace") }) -end diff --git a/technic/technic/machines/other/constructor.lua b/technic/technic/machines/other/constructor.lua deleted file mode 100644 index 3396ac7..0000000 --- a/technic/technic/machines/other/constructor.lua +++ /dev/null @@ -1,189 +0,0 @@ - -local S = technic.getter - -local function deploy_node(inv, slot_name, pos, node, machine_node) - if node.name ~= "air" then - if node.name == "ignore" or - node.name == "default:lava_source" or - node.name == "default:lava_flowing" or - node.name == "default:water_source" or - node.name == "default:water_flowing" then - return - end - local drops = minetest.get_node_drops(node.name, "") - local remove_to = false - for i, item in ipairs(drops) do - if not inv:room_for_item(slot_name, item) then - remove_to = i - 1 - break - end - inv:add_item(slot_name, item) - end - if remove_to then - for i = 1, remove_to do - inv:remove_item(drops[i]) - end - else - minetest.remove_node(pos) - end - return - end - if not inv:is_empty(slot_name) then - local stack = inv:get_list(slot_name)[1] - local def = stack:get_definition() - if def.type == "node" then - minetest.set_node(pos, { - name = stack:get_name(), - param2 = machine_node.param2 - }) - stack:take_item() - inv:set_stack(slot_name, 1, stack) - elseif def.type == "craft" then - if def.on_place then - -- Use pcall to avoid nil placer errors. - -- TODO: Do without pcall. - local ok, stk = pcall(def.on_place, stack, nil, { - -- Fake pointed_thing - type = "node", - above = pos, - under = {x=pos.x, y=pos.y-1, z=pos.z}, - }) - if ok then - inv:set_stack(slot_name, 1, stk or stack) - return - end - end - minetest.item_place_object(stack, nil, { - -- Fake pointed_thing - type = "node", - above = pos, - under = pos, - }) - inv:set_stack(slot_name, 1, nil) - end - end -end - -minetest.register_craft({ - type = "shapeless", - output = 'technic:constructor_mk1_off 1', - recipe = {'technic:nodebreaker_off', 'technic:deployer_off'}, - -}) -minetest.register_craft({ - type = "shapeless", - output = 'technic:constructor_mk2_off 1', - recipe = {'technic:constructor_mk1_off', 'technic:constructor_mk1_off'}, - -}) - -minetest.register_craft({ - type = "shapeless", - output = 'technic:constructor_mk3_off 1', - recipe = {'technic:constructor_mk2_off', 'technic:constructor_mk2_off'}, - -}) - -local function make_on(mark, length) - return function(pos, node) - local meta = minetest.get_meta(pos) - local inv = meta:get_inventory() - local dir = vector.new() - if node.param2 == 3 then dir.x = 1 end - if node.param2 == 2 then dir.z = 1 end - if node.param2 == 1 then dir.x = -1 end - if node.param2 == 0 then dir.z = -1 end - - local place_pos = vector.new(pos) - - if node.name == "technic:constructor_mk"..mark.."_off" then - technic.swap_node(pos, "technic:constructor_mk"..mark.."_on") - nodeupdate(pos) - for i = 1, length do - place_pos = vector.add(place_pos, dir) - local place_node = minetest.get_node(place_pos) - deploy_node(inv, "slot"..i, place_pos, place_node, node) - end - end - end -end - -local function make_off(mark) - return function(pos, node) - if node.name == "technic:constructor_mk"..mark.."_on" then - technic.swap_node(pos,"technic:constructor_mk"..mark.."_off") - nodeupdate(pos) - end - end -end - - -local function make_constructor(mark, length) - minetest.register_node("technic:constructor_mk"..mark.."_off", { - description = S("Constructor Mk%d"):format(mark), - tiles = {"technic_constructor_mk"..mark.."_top_off.png", - "technic_constructor_mk"..mark.."_bottom_off.png", - "technic_constructor_mk"..mark.."_side2_off.png", - "technic_constructor_mk"..mark.."_side1_off.png", - "technic_constructor_back.png", - "technic_constructor_front_off.png"}, - paramtype2 = "facedir", - groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2, mesecon = 2}, - mesecons = {effector = {action_on = make_on(mark, length)}}, - sounds = default.node_sound_stone_defaults(), - on_construct = function(pos) - local meta = minetest.get_meta(pos) - local formspec = "size[8,9;]".. - "label[0,0;"..S("Constructor Mk%d"):format(mark).."]".. - "list[current_player;main;0,5;8,4;]" - for i = 1, length do - formspec = formspec - .."label[5,"..(i - 1)..";"..S("Slot %d"):format(i).."]" - .."list[current_name;slot"..i - ..";6,"..(i - 1)..";1,1;]" - end - meta:set_string("formspec", formspec) - meta:set_string("infotext", S("Constructor Mk%d"):format(mark)) - local inv = meta:get_inventory() - for i = 1, length do - inv:set_size("slot"..i, 1) - end - end, - can_dig = function(pos, player) - local meta = minetest.get_meta(pos) - local inv = meta:get_inventory() - for i = 1, length do - if not inv:is_empty("slot"..i) then - return false - end - end - return true - end, - allow_metadata_inventory_put = technic.machine_inventory_put, - allow_metadata_inventory_take = technic.machine_inventory_take, - allow_metadata_inventory_move = technic.machine_inventory_move, - }) - - minetest.register_node("technic:constructor_mk"..mark.."_on", { - tiles = {"technic_constructor_mk"..mark.."_top_on.png", - "technic_constructor_mk"..mark.."_bottom_on.png", - "technic_constructor_mk"..mark.."_side2_on.png", - "technic_constructor_mk"..mark.."_side1_on.png", - "technic_constructor_back.png", - "technic_constructor_front_on.png"}, - paramtype2 = "facedir", - drop = "technic:constructor_mk"..mark.."_off", - groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2, - mesecon=2, not_in_creative_inventory=1}, - mesecons= {effector = {action_off = make_off(mark)}}, - sounds = default.node_sound_stone_defaults(), - allow_metadata_inventory_put = technic.machine_inventory_put, - allow_metadata_inventory_take = technic.machine_inventory_take, - allow_metadata_inventory_move = technic.machine_inventory_move, - }) -end - -make_constructor(1, 1) -make_constructor(2, 2) -make_constructor(3, 4) - diff --git a/technic/technic/machines/other/frames.lua b/technic/technic/machines/other/frames.lua deleted file mode 100644 index b3f39b9..0000000 --- a/technic/technic/machines/other/frames.lua +++ /dev/null @@ -1,928 +0,0 @@ - -local S = technic.getter - -frames = {} - -local infinite_stacks = minetest.setting_getbool("creative_mode") and minetest.get_modpath("unified_inventory") == nil - -local frames_pos = {} - --- Helpers - -local function get_face(pos,ppos,pvect) - -- Raytracer to get which face has been clicked - ppos={x=ppos.x-pos.x,y=ppos.y-pos.y+1.5,z=ppos.z-pos.z} - if pvect.x>0 then - local t=(-0.5-ppos.x)/pvect.x - local y_int=ppos.y+t*pvect.y - local z_int=ppos.z+t*pvect.z - if y_int>-0.45 and y_int<0.45 and z_int>-0.45 and z_int<0.45 then return 1 end - elseif pvect.x<0 then - local t=(0.5-ppos.x)/pvect.x - local y_int=ppos.y+t*pvect.y - local z_int=ppos.z+t*pvect.z - if y_int>-0.45 and y_int<0.45 and z_int>-0.45 and z_int<0.45 then return 2 end - end - if pvect.y>0 then - local t=(-0.5-ppos.y)/pvect.y - local x_int=ppos.x+t*pvect.x - local z_int=ppos.z+t*pvect.z - if x_int>-0.45 and x_int<0.45 and z_int>-0.45 and z_int<0.45 then return 3 end - elseif pvect.y<0 then - local t=(0.5-ppos.y)/pvect.y - local x_int=ppos.x+t*pvect.x - local z_int=ppos.z+t*pvect.z - if x_int>-0.45 and x_int<0.45 and z_int>-0.45 and z_int<0.45 then return 4 end - end - if pvect.z>0 then - local t=(-0.5-ppos.z)/pvect.z - local x_int=ppos.x+t*pvect.x - local y_int=ppos.y+t*pvect.y - if x_int>-0.45 and x_int<0.45 and y_int>-0.45 and y_int<0.45 then return 5 end - elseif pvect.z<0 then - local t=(0.5-ppos.z)/pvect.z - local x_int=ppos.x+t*pvect.x - local y_int=ppos.y+t*pvect.y - if x_int>-0.45 and x_int<0.45 and y_int>-0.45 and y_int<0.45 then return 6 end - end -end - -local function lines(str) - local t = {} - local function helper(line) table.insert(t, line) return "" end - helper((str:gsub("(.-)\r?\n", helper))) - return t -end - -local function pos_to_string(pos) - if pos.x == 0 then pos.x = 0 end -- Fix for signed 0 - if pos.y == 0 then pos.y = 0 end -- Fix for signed 0 - if pos.z == 0 then pos.z = 0 end -- Fix for signed 0 - return tostring(pos.x).."\n"..tostring(pos.y).."\n"..tostring(pos.z) -end - -local function pos_from_string(str) - local l = lines(str) - return {x = tonumber(l[1]), y = tonumber(l[2]), z = tonumber(l[3])} -end - -local function pos_in_list(l,pos) - for _,p in ipairs(l) do - if p.x==pos.x and p.y==pos.y and p.z==pos.z then return true end - end - return false -end - -local function table_empty(table) - for _, __ in pairs(table) do - return false - end - return true -end - -local function add_table(table,toadd) - local i = 1 - while true do - o = table[i] - if o == toadd then return end - if o == nil then break end - i = i+1 - end - table[i] = toadd -end - -local function move_nodes_vect(poslist,vect,must_not_move,owner) - if minetest.is_protected then - for _,pos in ipairs(poslist) do - local npos=vector.add(pos,vect) - if minetest.is_protected(pos, owner) or minetest.is_protected(npos, owner) then - return - end - end - end - for _,pos in ipairs(poslist) do - local npos=vector.add(pos,vect) - local name = minetest.get_node(npos).name - if ((name~="air" and minetest.registered_nodes[name].liquidtype=="none") or frames_pos[pos_to_string(npos)]) and not(pos_in_list(poslist,npos)) then - return - end - --[[if pos.x==must_not_move.x and pos.y==must_not_move.y and pos.z==must_not_move.z then - return - end]] - end - local nodelist = {} - for _, pos in ipairs(poslist) do - local node = minetest.get_node(pos) - local meta = minetest.get_meta(pos):to_table() - nodelist[#(nodelist)+1] = {oldpos = pos, pos = vector.add(pos, vect), node = node, meta = meta} - end - local objects = {} - for _, pos in ipairs(poslist) do - for _,object in ipairs(minetest.get_objects_inside_radius(pos, 1)) do - local entity = object:get_luaentity() - if not entity or not mesecon.is_mvps_unmov(entity.name) then - add_table(objects, object) - end - end - end - for _, obj in ipairs(objects) do - obj:setpos(vector.add(obj:getpos(), vect)) - end - for _,n in ipairs(nodelist) do - local npos = n.pos - minetest.set_node(npos, n.node) - local meta = minetest.get_meta(npos) - meta:from_table(n.meta) - for __,pos in ipairs(poslist) do - if npos.x == pos.x and npos.y == pos.y and npos.z == pos.z then - table.remove(poslist, __) - break - end - end - end - for __, pos in ipairs(poslist) do - minetest.remove_node(pos) - end - for _, callback in ipairs(mesecon.on_mvps_move) do - callback(nodelist) - end -end - -local function is_supported_node(name) - return ((string.find(name, "tube") ~= nil) and (string.find(name, "pipeworks") ~= nil)) -end - - --- Frames -for xm=0,1 do -for xp=0,1 do -for ym=0,1 do -for yp=0,1 do -for zm=0,1 do -for zp=0,1 do - -local a=8/16 -local b=7/16 -local nodeboxes= { - { -a, -a, -a, -b, a, -b }, - { -a, -a, b, -b, a, a }, - { b, -a, b, a, a, a }, - { b, -a, -a, a, a, -b }, - - { -b, b, -a, b, a, -b }, - { -b, -a, -a, b, -b, -b }, - - { -b, b, b, b, a, a }, - { -b, -a, b, b, -b, a }, - - { b, b, -b, a, a, b }, - { b, -a, -b, a, -b, b }, - - { -a, b, -b, -b, a, b }, - { -a, -a, -b, -b, -b, b }, - } - - if yp==0 then - table.insert(nodeboxes, {-b,b,-b, b,a,b}) - end - if ym==0 then - table.insert(nodeboxes, {-b,-a,-b, b,-b,b}) - end - if xp==0 then - table.insert(nodeboxes, {b,b,b,a,-b,-b}) - end - if xm==0 then - table.insert(nodeboxes, {-a,-b,-b,-b,b,b}) - end - if zp==0 then - table.insert(nodeboxes, {-b,-b,b, b,b,a}) - end - if zm==0 then - table.insert(nodeboxes, {-b,-b,-a, b,b,-b}) - end - - local nameext=tostring(xm)..tostring(xp)..tostring(ym)..tostring(yp)..tostring(zm)..tostring(zp) - local groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2} - if nameext~="111111" then groups.not_in_creative_inventory=1 end - - - minetest.register_node("technic:frame_"..nameext,{ - description = S("Frame"), - tiles = {"technic_frame.png"}, - groups=groups, - drawtype = "nodebox", - node_box = { - type = "fixed", - fixed=nodeboxes, - }, - selection_box = { - type="fixed", - fixed={-0.5,-0.5,-0.5,0.5,0.5,0.5} - }, - paramtype = "light", - frame=1, - drop="technic:frame_111111", - sunlight_propagates = true, - frame_connect_all=function(nodename) - l2={} - l1={{x=-1,y=0,z=0},{x=1,y=0,z=0},{x=0,y=-1,z=0},{x=0,y=1,z=0},{x=0,y=0,z=-1},{x=0,y=0,z=1}} - for i,dir in ipairs(l1) do - if string.sub(nodename,-7+i,-7+i)=="1" then - l2[#(l2)+1]=dir - end - end - return l2 - end, - on_punch=function(pos,node,puncher) - local ppos=puncher:getpos() - local pvect=puncher:get_look_dir() - local pface=get_face(pos,ppos,pvect) - if pface==nil then return end - local nodename=node.name - local newstate=tostring(1-tonumber(string.sub(nodename,-7+pface,-7+pface))) - if pface<=5 then - nodename=string.sub(nodename,1,-7+pface-1)..newstate..string.sub(nodename,-7+pface+1) - else - nodename=string.sub(nodename,1,-2)..newstate - end - node.name=nodename - minetest.set_node(pos,node) - end, - on_place = function(itemstack, placer, pointed_thing) - local pos = pointed_thing.above - if minetest.is_protected(pos, placer:get_player_name()) then - minetest.log("action", placer:get_player_name() - .. " tried to place " .. itemstack:get_name() - .. " at protected position " - .. minetest.pos_to_string(pos)) - minetest.record_protection_violation(pos, placer:get_player_name()) - return itemstack - end - if pos == nil then return end - local node = minetest.get_node(pos) - if node.name ~= "air" then - if is_supported_node(node.name) then - obj = minetest.add_entity(pos, "technic:frame_entity") - obj:get_luaentity():set_node({name=itemstack:get_name()}) - end - else - minetest.set_node(pos, {name = itemstack:get_name()}) - end - if not infinite_stacks then - itemstack:take_item() - end - return itemstack - end, - on_rightclick = function(pos, node, placer, itemstack, pointed_thing) - if is_supported_node(itemstack:get_name()) then - if minetest.is_protected(pos, placer:get_player_name()) then - minetest.log("action", placer:get_player_name() - .. " tried to place " .. itemstack:get_name() - .. " at protected position " - .. minetest.pos_to_string(pos)) - minetest.record_protection_violation(pos, placer:get_player_name()) - return itemstack - end - - minetest.set_node(pos, {name = itemstack:get_name()}) - - local take_item = true - local def = minetest.registered_items[itemstack:get_name()] - -- Run callback - if def.after_place_node then - -- Copy place_to because callback can modify it - local pos_copy = {x=pos.x, y=pos.y, z=pos.z} - if def.after_place_node(pos_copy, placer, itemstack) then - take_item = false - end - end - - -- Run script hook - local _, callback - for _, callback in ipairs(minetest.registered_on_placenodes) do - -- Copy pos and node because callback can modify them - local pos_copy = {x=pos.x, y=pos.y, z=pos.z} - local newnode_copy = {name=def.name, param1=0, param2=0} - local oldnode_copy = {name="air", param1=0, param2=0} - if callback(pos_copy, newnode_copy, placer, oldnode_copy, itemstack) then - take_item = false - end - end - - if take_item then - itemstack:take_item() - end - - obj = minetest.add_entity(pos, "technic:frame_entity") - obj:get_luaentity():set_node({name=node.name}) - - return itemstack - else - --local pointed_thing = {type = "node", under = pos} - if pointed_thing then - minetest.item_place_node(itemstack, placer, pointed_thing) - end - end - end, - }) - -end -end -end -end -end -end - -minetest.register_entity("technic:frame_entity", { - initial_properties = { - physical = true, - collisionbox = {-0.5,-0.5,-0.5, 0.5,0.5,0.5}, - visual = "wielditem", - textures = {}, - visual_size = {x=0.667, y=0.667}, - }, - - node = {}, - - set_node = function(self, node) - self.node = node - local pos = self.object:getpos() - pos = {x = math.floor(pos.x+0.5), y = math.floor(pos.y+0.5), z = math.floor(pos.z+0.5)} - frames_pos[pos_to_string(pos)] = node.name - local stack = ItemStack(node.name) - local itemtable = stack:to_table() - local itemname = nil - if itemtable then - itemname = stack:to_table().name - end - local item_texture = nil - local item_type = "" - if minetest.registered_items[itemname] then - item_texture = minetest.registered_items[itemname].inventory_image - item_type = minetest.registered_items[itemname].type - end - prop = { - is_visible = true, - textures = {node.name}, - } - self.object:set_properties(prop) - end, - - get_staticdata = function(self) - return self.node.name - end, - - on_activate = function(self, staticdata) - self.object:set_armor_groups({immortal=1}) - self:set_node({name=staticdata}) - end, - - dig = function(self) - minetest.handle_node_drops(self.object:getpos(), {ItemStack("technic:frame_111111")}, self.last_puncher) - local pos = self.object:getpos() - pos = {x = math.floor(pos.x+0.5), y = math.floor(pos.y+0.5), z = math.floor(pos.z+0.5)} - frames_pos[pos_to_string(pos)] = nil - self.object:remove() - end, - - on_punch = function(self, puncher, time_from_last_punch, tool_capabilities, dir) - local pos = self.object:getpos() - if self.damage_object == nil then - self.damage_object = minetest.add_entity(pos, "technic:damage_entity") - self.damage_object:get_luaentity().remaining_time = 0.25 - self.damage_object:get_luaentity().frame_object = self - self.damage_object:get_luaentity().texture_index = 0 - self.damage_object:get_luaentity().texture_change_time = 0.15 - else - self.damage_object:get_luaentity().remaining_time = 0.25 - end - self.last_puncher = puncher - local ppos = puncher:getpos() - local pvect = puncher:get_look_dir() - local pface = get_face(pos,ppos,pvect) - if pface == nil then return end - local nodename = self.node.name - local newstate = tostring(1-tonumber(string.sub(nodename, -7+pface, -7+pface))) - if pface <= 5 then - nodename = string.sub(nodename, 1, -7+pface-1)..newstate..string.sub(nodename, -7+pface+1) - else - nodename = string.sub(nodename, 1, -2)..newstate - end - self.node.name = nodename - self:set_node(self.node) - end, - - on_rightclick = function(self, clicker) - local pos = self.object:getpos() - local ppos = clicker:getpos() - local pvect = clicker:get_look_dir() - local pface = get_face(pos, ppos, pvect) - if pface == nil then return end - local pos_under = {x = math.floor(pos.x+0.5), y = math.floor(pos.y+0.5), z = math.floor(pos.z+0.5)} - local pos_above = {x = pos_under.x, y = pos_under.y, z = pos_under.z} - local index = ({"x", "y", "z"})[math.floor((pface+1)/2)] - pos_above[index] = pos_above[index] + 2*((pface+1)%2) - 1 - local pointed_thing = {type = "node", under = pos_under, above = pos_above} - local itemstack = clicker:get_wielded_item() - local itemdef = minetest.registered_items[itemstack:get_name()] - if itemdef ~= nil then - itemdef.on_place(itemstack, clicker, pointed_thing) - end - end, -}) - -local crack = "crack_anylength.png^[verticalframe:5:0" -minetest.register_entity("technic:damage_entity", { - initial_properties = { - visual = "cube", - visual_size = {x=1.01, y=1.01}, - textures = {crack, crack, crack, crack, crack, crack}, - collisionbox = {0, 0, 0, 0, 0, 0}, - physical = false, - }, - on_step = function(self, dtime) - if self.remaining_time == nil then - self.object:remove() - self.frame_object.damage_object = nil - end - self.remaining_time = self.remaining_time - dtime - if self.remaining_time < 0 then - self.object:remove() - self.frame_object.damage_object = nil - end - self.texture_change_time = self.texture_change_time - dtime - if self.texture_change_time < 0 then - self.texture_change_time = self.texture_change_time + 0.15 - self.texture_index = self.texture_index + 1 - if self.texture_index == 5 then - self.object:remove() - self.frame_object.damage_object = nil - self.frame_object:dig() - end - local ct = "crack_anylength.png^[verticalframe:5:"..self.texture_index - self.object:set_properties({textures = {ct, ct, ct, ct, ct, ct}}) - end - end, -}) - -mesecon.register_mvps_unmov("technic:frame_entity") -mesecon.register_mvps_unmov("technic:damage_entity") -mesecon.register_on_mvps_move(function(moved_nodes) - local to_move = {} - for _, n in ipairs(moved_nodes) do - if frames_pos[pos_to_string(n.oldpos)] ~= nil then - to_move[#to_move+1] = {pos = n.pos, oldpos = n.oldpos, name = frames_pos[pos_to_string(n.oldpos)]} - frames_pos[pos_to_string(n.oldpos)] = nil - end - end - if #to_move > 0 then - for _, t in ipairs(to_move) do - frames_pos[pos_to_string(t.pos)] = t.name - local objects = minetest.get_objects_inside_radius(t.oldpos, 0.1) - for _, obj in ipairs(objects) do - local entity = obj:get_luaentity() - if entity and (entity.name == "technic:frame_entity" or entity.name == "technic:damage_entity") then - obj:setpos(t.pos) - end - end - end - end -end) - -minetest.register_on_dignode(function(pos, node) - if frames_pos[pos_to_string(pos)] ~= nil then - minetest.set_node(pos, {name = frames_pos[pos_to_string(pos)]}) - frames_pos[pos_to_string(pos)] = nil - local objects = minetest.get_objects_inside_radius(pos, 0.1) - for _, obj in ipairs(objects) do - local entity = obj:get_luaentity() - if entity and (entity.name == "technic:frame_entity" or entity.name == "technic:damage_entity") then - obj:remove() - end - end - end -end) - --- Frame motor -local function connected(pos,c,adj) - for _,vect in ipairs(adj) do - local pos1=vector.add(pos,vect) - local nodename=minetest.get_node(pos1).name - if frames_pos[pos_to_string(pos1)] then - nodename = frames_pos[pos_to_string(pos1)] - end - if not(pos_in_list(c,pos1)) and nodename~="air" and - (minetest.registered_nodes[nodename].frames_can_connect==nil or - minetest.registered_nodes[nodename].frames_can_connect(pos1,vect)) then - c[#(c)+1]=pos1 - if minetest.registered_nodes[nodename].frame==1 then - local adj=minetest.registered_nodes[nodename].frame_connect_all(nodename) - connected(pos1,c,adj) - end - end - end -end - -local function get_connected_nodes(pos) - c={pos} - local nodename=minetest.get_node(pos).name - if frames_pos[pos_to_string(pos)] then - nodename = frames_pos[pos_to_string(pos)] - end - connected(pos,c,minetest.registered_nodes[nodename].frame_connect_all(nodename)) - return c -end - -local function frame_motor_on(pos, node) - local dirs = {{x=0,y=1,z=0},{x=0,y=0,z=1},{x=0,y=0,z=-1},{x=1,y=0,z=0},{x=-1,y=0,z=0},{x=0,y=-1,z=0}} - local nnodepos = vector.add(pos, dirs[math.floor(node.param2/4)+1]) - local dir = minetest.facedir_to_dir(node.param2) - local nnode=minetest.get_node(nnodepos) - if frames_pos[pos_to_string(nnodepos)] then - nnode.name = frames_pos[pos_to_string(nnodepos)] - end - local meta = minetest.get_meta(pos) - if meta:get_int("last_moved") == minetest.get_gametime() then - return - end - local owner = meta:get_string("owner") - if minetest.registered_nodes[nnode.name].frame==1 then - local connected_nodes=get_connected_nodes(nnodepos) - move_nodes_vect(connected_nodes,dir,pos,owner) - end - minetest.get_meta(vector.add(pos, dir)):set_int("last_moved", minetest.get_gametime()) -end - -minetest.register_node("technic:frame_motor",{ - description = S("Frame Motor"), - tiles = {"pipeworks_filter_top.png^[transformR90", "technic_lv_cable.png", "technic_lv_cable.png", - "technic_lv_cable.png", "technic_lv_cable.png", "technic_lv_cable.png"}, - groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2,mesecon=2}, - paramtype2 = "facedir", - mesecons={effector={action_on=frame_motor_on}}, - after_place_node = function(pos, placer, itemstack) - local meta = minetest.get_meta(pos) - meta:set_string("owner", placer:get_player_name()) - end, - frames_can_connect=function(pos,dir) - local node = minetest.get_node(pos) - local dir2 = ({{x=0,y=1,z=0},{x=0,y=0,z=1},{x=0,y=0,z=-1},{x=1,y=0,z=0},{x=-1,y=0,z=0},{x=0,y=-1,z=0}})[math.floor(node.param2/4)+1] - return dir2.x~=-dir.x or dir2.y~=-dir.y or dir2.z~=-dir.z - end -}) - - - --- Templates -local function template_connected(pos,c,connectors) - for _,vect in ipairs({{x=0,y=1,z=0},{x=0,y=0,z=1},{x=0,y=0,z=-1},{x=1,y=0,z=0},{x=-1,y=0,z=0},{x=0,y=-1,z=0}}) do - local pos1=vector.add(pos,vect) - local nodename=minetest.get_node(pos1).name - if not(pos_in_list(c,pos1)) and (nodename=="technic:template" or nodename == "technic:template_connector")then - local meta = minetest.get_meta(pos1) - if meta:get_string("connected") == "" then - c[#(c)+1]=pos1 - template_connected(pos1,c,connectors) - if nodename == "technic:template_connector" then - connectors[#connectors+1] = pos1 - end - end - end - end -end - -local function get_templates(pos) - local c = {pos} - local connectors - if minetest.get_node(pos).name == "technic:template_connector" then - connectors = {pos} - else - connectors = {} - end - template_connected(pos,c,connectors) - return c, connectors -end - -local function swap_template(pos, new) - local meta = minetest.get_meta(pos) - local saved_node = meta:get_string("saved_node") - meta:set_string("saved_node", "") - technic.swap_node(pos, new) - local meta = minetest.get_meta(pos) - meta:set_string("saved_node", saved_node) -end - -local function save_node(pos) - local node = minetest.get_node(pos) - if node.name == "air" then - minetest.set_node(pos, {name="technic:template"}) - return - end - if node.name == "technic:template" then - swap_template(pos, "technic:template_connector") - local meta = minetest.get_meta(pos) - meta:set_string("connected", "") - return - end - local meta = minetest.get_meta(pos) - local meta0 = meta:to_table() - for _, list in pairs(meta0.inventory) do - for key, stack in pairs(list) do - list[key] = stack:to_string() - end - end - node.meta = meta0 - minetest.set_node(pos, {name="technic:template"}) - return node -end - -local function restore_node(pos, node) - minetest.set_node(pos, node) - local meta = minetest.get_meta(pos) - for _, list in pairs(node.meta.inventory) do - for key, stack in pairs(list) do - list[key] = ItemStack(stack) - end - end - meta:from_table(node.meta) -end - -local function expand_template(pos) - local meta = minetest.get_meta(pos) - local c = meta:get_string("connected") - if c == "" then return end - c = minetest.deserialize(c) - for _, vect in ipairs(c) do - local pos1 = vector.add(pos, vect) - local saved_node = save_node(pos1) - local meta1 = minetest.get_meta(pos1) - if saved_node ~= nil then - meta1:set_string("saved_node", minetest.serialize(saved_node)) - else - --meta1:set_string("saved_node", "") - end - end -end - -local function compress_templates(pos) - local templates, connectors = get_templates(pos) - if #connectors == 0 then - connectors = {pos} - end - for _, cn in ipairs(connectors) do - local meta = minetest.get_meta(cn) - local c = {} - for _,p in ipairs(templates) do - local np = vector.subtract(p, cn) - if not pos_in_list(c,np) then - c[#c+1] = np - end - end - local cc = {} - for _,p in ipairs(connectors) do - local np = vector.subtract(p, cn) - if (np.x ~= 0 or np.y ~= 0 or np.z ~= 0) then - cc[pos_to_string(np)] = true - end - end - swap_template(cn, "technic:template") - meta:set_string("connected", minetest.serialize(c)) - meta:set_string("connectors_connected", minetest.serialize(cc)) - end - - for _,p in ipairs(templates) do - if not pos_in_list(connectors, p) then - minetest.set_node(p, {name = "air"}) - end - end -end - -local function template_drops(pos, node, oldmeta, digger) - local c = oldmeta.fields.connected - local cc = oldmeta.fields.connectors_connected - local drops - if c == "" or c == nil then - drops = {"technic:template 1"} - else - if cc == "" or cc == nil then - drops = {"technic:template 1"} - else - local dcc = minetest.deserialize(cc) - if not table_empty(dcc) then - drops = {} - for sp, _ in pairs(dcc) do - local ssp = pos_from_string(sp) - local p = vector.add(ssp, pos) - local meta = minetest.get_meta(p) - local d = minetest.deserialize(meta:get_string("connectors_connected")) - if d ~= nil then - d[pos_to_string({x=-ssp.x, y=-ssp.y, z=-ssp.z})] = nil - meta:set_string("connectors_connected", minetest.serialize(d)) - end - end - else - local stack_max = 99 - local num = #(minetest.deserialize(c)) - drops = {} - while num > stack_max do - drops[#drops+1] = "technic:template "..stack_max - num = num - stack_max - end - drops[#drops+1] = "technic:template "..num - end - end - end - minetest.handle_node_drops(pos, drops, digger) -end - -local function template_on_destruct(pos, node) - local meta = minetest.get_meta(pos) - local saved_node = meta:get_string("saved_node") - if saved_node ~= "" then - local nnode = minetest.deserialize(saved_node) - minetest.after(0, restore_node, pos, nnode) - end -end - -minetest.register_node("technic:template",{ - description = S("Template"), - tiles = {"technic_mv_cable.png"}, - drop = "", - groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2}, - on_destruct = template_on_destruct, - after_dig_node = template_drops, - on_punch = function(pos,node,puncher) - swap_template(pos, "technic:template_disabled") - end -}) - -minetest.register_node("technic:template_disabled",{ - description = S("Template"), - tiles = {"technic_hv_cable.png"}, - drop = "", - groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2,not_in_creative_inventory=1}, - on_destruct = template_on_destruct, - after_dig_node = template_drops, - on_punch = function(pos,node,puncher) - local meta = minetest.get_meta(pos) - swap_template(pos, "technic:template_connector") - end -}) - -minetest.register_node("technic:template_connector",{ - description = S("Template"), - tiles = {"technic_lv_cable.png"}, - drop = "", - groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2,not_in_creative_inventory=1}, - on_destruct = template_on_destruct, - after_dig_node = template_drops, - on_punch = function(pos,node,puncher) - swap_template(pos, "technic:template") - end -}) - -minetest.register_craftitem("technic:template_replacer",{ - description = S("Template (replacing)"), - inventory_image = "technic_template_replacer.png", - on_place = function(itemstack, placer, pointed_thing) - local p = pointed_thing.under - if minetest.is_protected and minetest.is_protected(p, placer:get_player_name()) then - return nil - end - local node = minetest.get_node(p) - if node.name == "technic:template" then return end - local saved_node = save_node(p) - itemstack:take_item() - if saved_node ~= nil then - local meta = minetest.get_meta(p) - meta:set_string("saved_node", minetest.serialize(saved_node)) - end - return itemstack - end -}) - -minetest.register_tool("technic:template_tool",{ - description = S("Template Tool"), - inventory_image = "technic_template_tool.png", - on_use = function(itemstack, puncher, pointed_thing) - local pos = pointed_thing.under - if pos == nil or (minetest.is_protected and minetest.is_protected(pos, puncher:get_player_name())) then - return nil - end - local node = minetest.get_node(pos) - if node.name ~= "technic:template" and node.name ~= "technic:template_connector" then return end - local meta = minetest.get_meta(pos) - local c2 = meta:get_string("connected") - if c2 ~= "" then - expand_template(pos) - else - compress_templates(pos) - end - - end -}) - - - --- Template motor -local function get_template_nodes(pos) - local meta = minetest.get_meta(pos) - local connected = meta:get_string("connected") - if connected == "" then return {} end - local adj = minetest.deserialize(connected) - local c = {} - for _,vect in ipairs(adj) do - local pos1=vector.add(pos,vect) - local nodename=minetest.get_node(pos1).name - if not(pos_in_list(c,pos1)) and nodename~="air" then - c[#(c)+1]=pos1 - end - end - return c -end - -local function template_motor_on(pos, node) - local dirs = {{x=0,y=1,z=0},{x=0,y=0,z=1},{x=0,y=0,z=-1},{x=1,y=0,z=0},{x=-1,y=0,z=0},{x=0,y=-1,z=0}} - local nnodepos = vector.add(pos, dirs[math.floor(node.param2/4)+1]) - local dir = minetest.facedir_to_dir(node.param2) - local nnode=minetest.get_node(nnodepos) - local meta = minetest.get_meta(pos) - if meta:get_int("last_moved") == minetest.get_gametime() then - return - end - local owner = meta:get_string("owner") - if nnode.name == "technic:template" then - local connected_nodes=get_template_nodes(nnodepos) - move_nodes_vect(connected_nodes,dir,pos,owner) - end - minetest.get_meta(vector.add(pos, dir)):set_int("last_moved", minetest.get_gametime()) -end - -minetest.register_node("technic:template_motor",{ - description = S("Template Motor"), - tiles = {"pipeworks_filter_top.png^[transformR90", "technic_lv_cable.png", "technic_lv_cable.png", - "technic_lv_cable.png", "technic_lv_cable.png", "technic_lv_cable.png"}, - groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2,mesecon=2}, - paramtype2 = "facedir", - mesecons={effector={action_on=template_motor_on}}, - after_place_node = function(pos, placer, itemstack) - local meta = minetest.get_meta(pos) - meta:set_string("owner", placer:get_player_name()) - end, -}) - --- Crafts -minetest.register_craft({ - output = 'technic:frame_111111', - recipe = { - {'', 'default:stick', ''}, - {'default:stick', 'technic:brass_ingot', 'default:stick'}, - {'', 'default:stick', ''}, - } -}) - -minetest.register_craft({ - output = 'technic:frame_motor', - recipe = { - {'', 'technic:frame_111111', ''}, - {'group:mesecon_conductor_craftable', 'technic:motor', 'group:mesecon_conductor_craftable'}, - {'', 'technic:frame_111111', ''}, - } -}) - -minetest.register_craft({ - output = 'technic:template 10', - recipe = { - {'', 'technic:brass_ingot', ''}, - {'technic:brass_ingot', 'default:mese_crystal', 'technic:brass_ingot'}, - {'', 'technic:brass_ingot', ''}, - } -}) - -minetest.register_craft({ - output = 'technic:template_replacer', - recipe = {{'technic:template'}} -}) - -minetest.register_craft({ - output = 'technic:template', - recipe = {{'technic:template_replacer'}} -}) - -minetest.register_craft({ - output = 'technic:template_motor', - recipe = { - {'', 'technic:template', ''}, - {'group:mesecon_conductor_craftable', 'technic:motor', 'group:mesecon_conductor_craftable'}, - {'', 'technic:template', ''}, - } -}) - -minetest.register_craft({ - output = 'technic:template_tool', - recipe = { - {'', 'technic:template', ''}, - {'default:mese_crystal', 'default:stick', 'default:mese_crystal'}, - {'', 'default:stick', ''}, - } -}) diff --git a/technic/technic/machines/other/init.lua b/technic/technic/machines/other/init.lua deleted file mode 100644 index f4a82f0..0000000 --- a/technic/technic/machines/other/init.lua +++ /dev/null @@ -1,15 +0,0 @@ -local path = technic.modpath.."/machines/other" - --- mesecons and tubes related -dofile(path.."/injector.lua") -dofile(path.."/constructor.lua") - -if technic.config:get_bool("enable_frames") and minetest.get_modpath("mesecons_mvps") ~= nil then - dofile(path.."/frames.lua") -end - --- Coal-powered machines -dofile(path.."/coal_alloy_furnace.lua") -dofile(path.."/coal_furnace.lua") - -dofile(path.."/anchor.lua") diff --git a/technic/technic/machines/other/injector.lua b/technic/technic/machines/other/injector.lua deleted file mode 100644 index ec8966c..0000000 --- a/technic/technic/machines/other/injector.lua +++ /dev/null @@ -1,118 +0,0 @@ - -local S = technic.getter - -local function inject_items (pos) - local meta=minetest.get_meta(pos) - local inv = meta:get_inventory() - local mode=meta:get_string("mode") - if mode=="single items" then - local i=0 - for _,stack in ipairs(inv:get_list("main")) do - i=i+1 - if stack then - local item0=stack:to_table() - if item0 then - item0["count"] = "1" - technic.tube_inject_item(pos, pos, vector.new(0, -1, 0), item0) - stack:take_item(1) - inv:set_stack("main", i, stack) - return - end - end - end - end - if mode=="whole stacks" then - local i=0 - for _,stack in ipairs(inv:get_list("main")) do - i=i+1 - if stack then - local item0=stack:to_table() - if item0 then - technic.tube_inject_item(pos, pos, vector.new(0, -1, 0), item0) - stack:clear() - inv:set_stack("main", i, stack) - return - end - end - end - end - -end - -minetest.register_craft({ - output = 'technic:injector 1', - recipe = { - {'', 'technic:control_logic_unit',''}, - {'', 'default:chest',''}, - {'', 'pipeworks:tube_1',''}, - } -}) - -local function set_injector_formspec(meta) - local is_stack = meta:get_string("mode") == "whole stacks" - meta:set_string("formspec", - "invsize[8,9;]".. - "item_image[0,0;1,1;technic:injector]".. - "label[1,0;"..S("Self-Contained Injector").."]".. - (is_stack and - "button[0,1;2,1;mode_item;"..S("Stackwise").."]" or - "button[0,1;2,1;mode_stack;"..S("Itemwise").."]").. - "list[current_name;main;0,2;8,2;]".. - "list[current_player;main;0,5;8,4;]".. - "listring[]") -end - -minetest.register_node("technic:injector", { - description = S("Self-Contained Injector"), - tiles = {"technic_injector_top.png", "technic_injector_bottom.png", "technic_injector_side.png", - "technic_injector_side.png", "technic_injector_side.png", "technic_injector_side.png"}, - groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2, tubedevice=1, tubedevice_receiver=1}, - tube = { - can_insert = function(pos, node, stack, direction) - return minetest.get_meta(pos):get_inventory():room_for_item("main",stack) - end, - insert_object = function(pos, node, stack, direction) - return minetest.get_meta(pos):get_inventory():add_item("main",stack) - end, - connect_sides = {left=1, right=1, front=1, back=1, top=1, bottom=1}, - }, - sounds = default.node_sound_wood_defaults(), - on_construct = function(pos) - local meta = minetest.get_meta(pos) - meta:set_string("infotext", S("Self-Contained Injector")) - local inv = meta:get_inventory() - inv:set_size("main", 8*4) - meta:set_string("mode","single items") - set_injector_formspec(meta) - end, - can_dig = function(pos,player) - local meta = minetest.get_meta(pos); - local inv = meta:get_inventory() - return inv:is_empty("main") - end, - on_receive_fields = function(pos, formanme, fields, sender) - local meta = minetest.get_meta(pos) - if fields.mode_item then meta:set_string("mode", "single items") end - if fields.mode_stack then meta:set_string("mode", "whole stacks") end - set_injector_formspec(meta) - end, - allow_metadata_inventory_put = technic.machine_inventory_put, - allow_metadata_inventory_take = technic.machine_inventory_take, - allow_metadata_inventory_move = technic.machine_inventory_move, - after_place_node = pipeworks.after_place, - after_dig_node = pipeworks.after_dig -}) - -minetest.register_abm({ - nodenames = {"technic:injector"}, - interval = 1, - chance = 1, - action = function(pos, node, active_object_count, active_object_count_wider) - local pos1 = vector.add(pos, vector.new(0, -1, 0)) - local node1 = minetest.get_node(pos1) - if minetest.get_item_group(node1.name, "tubedevice") > 0 then - inject_items(pos) - end - end, -}) - diff --git a/technic/technic/machines/register/alloy_furnace.lua b/technic/technic/machines/register/alloy_furnace.lua deleted file mode 100644 index 879e528..0000000 --- a/technic/technic/machines/register/alloy_furnace.lua +++ /dev/null @@ -1,10 +0,0 @@ - -local S = technic.getter - -function technic.register_alloy_furnace(data) - data.typename = "alloy" - data.machine_name = "alloy_furnace" - data.machine_desc = S("%s Alloy Furnace") - technic.register_base_machine(data) -end - diff --git a/technic/technic/machines/register/alloy_recipes.lua b/technic/technic/machines/register/alloy_recipes.lua deleted file mode 100644 index bd09bd6..0000000 --- a/technic/technic/machines/register/alloy_recipes.lua +++ /dev/null @@ -1,35 +0,0 @@ - -local S = technic.getter - -technic.register_recipe_type("alloy", { - description = S("Alloying"), - input_size = 2, -}) - -function technic.register_alloy_recipe(data) - data.time = data.time or 6 - technic.register_recipe("alloy", data) -end - -local recipes = { - {"technic:copper_dust 3", "technic:tin_dust", "technic:bronze_dust 4"}, - {"default:copper_ingot 3", "moreores:tin_ingot", "default:bronze_ingot 4"}, - {"technic:wrought_iron_dust", "technic:coal_dust", "technic:carbon_steel_dust", 3}, - {"technic:wrought_iron_ingot", "technic:coal_dust", "technic:carbon_steel_ingot", 3}, - {"technic:carbon_steel_dust", "technic:coal_dust", "technic:cast_iron_dust", 3}, - {"technic:carbon_steel_ingot", "technic:coal_dust", "technic:cast_iron_ingot", 3}, - {"technic:carbon_steel_dust 3", "technic:chromium_dust", "technic:stainless_steel_dust 4"}, - {"technic:carbon_steel_ingot 3", "technic:chromium_ingot", "technic:stainless_steel_ingot 4"}, - {"technic:copper_dust 2", "technic:zinc_dust", "technic:brass_dust 3"}, - {"default:copper_ingot 2", "technic:zinc_ingot", "technic:brass_ingot 3"}, - {"default:sand 2", "technic:coal_dust 2", "technic:silicon_wafer"}, - {"technic:silicon_wafer", "technic:gold_dust", "technic:doped_silicon_wafer"}, - -- from https://en.wikipedia.org/wiki/Carbon_black - -- The highest volume use of carbon black is as a reinforcing filler in rubber products, especially tires. - -- "[Compounding a] pure gum vulcanizate … with 50% of its weight of carbon black improves its tensile strength and wear resistance …" - {"technic:raw_latex 4", "technic:coal_dust 2", "technic:rubber 6", 2}, -} - -for _, data in pairs(recipes) do - technic.register_alloy_recipe({input = {data[1], data[2]}, output = data[3], time = data[4]}) -end diff --git a/technic/technic/machines/register/battery_box.lua b/technic/technic/machines/register/battery_box.lua deleted file mode 100644 index 82edca0..0000000 --- a/technic/technic/machines/register/battery_box.lua +++ /dev/null @@ -1,291 +0,0 @@ - -local S = technic.getter - -technic.register_power_tool("technic:battery", 10000) -technic.register_power_tool("technic:red_energy_crystal", 50000) -technic.register_power_tool("technic:green_energy_crystal", 150000) -technic.register_power_tool("technic:blue_energy_crystal", 450000) - -minetest.register_craft({ - output = 'technic:battery', - recipe = { - {'group:wood', 'default:copper_ingot', 'group:wood'}, - {'group:wood', 'moreores:tin_ingot', 'group:wood'}, - {'group:wood', 'default:copper_ingot', 'group:wood'}, - } -}) - -minetest.register_tool("technic:battery", { - description = S("RE Battery"), - inventory_image = "technic_battery.png", - wear_represents = "technic_RE_charge", - on_refill = technic.refill_RE_charge, - tool_capabilities = { - charge = 0, - max_drop_level = 0, - groupcaps = { - fleshy = {times={}, uses=10000, maxlevel=0} - } - } -}) - -local tube = { - insert_object = function(pos, node, stack, direction) - if direction.y == 0 then - return stack - end - local meta = minetest.get_meta(pos) - local inv = meta:get_inventory() - if direction.y > 0 then - return inv:add_item("src", stack) - else - return inv:add_item("dst", stack) - end - end, - can_insert = function(pos, node, stack, direction) - if direction.y == 0 then - return false - end - local meta = minetest.get_meta(pos) - local inv = meta:get_inventory() - if direction.y > 0 then - return inv:room_for_item("src", stack) - else - return inv:room_for_item("dst", stack) - end - end, - connect_sides = {left=1, right=1, back=1, top=1, bottom=1}, -} - -function technic.register_battery_box(data) - local tier = data.tier - local ltier = string.lower(tier) - - local formspec = - "invsize[8,9;]".. - "image[1,1;1,2;technic_power_meter_bg.png]".. - "list[current_name;src;3,1;1,1;]".. - "image[4,1;1,1;technic_battery_reload.png]".. - "list[current_name;dst;5,1;1,1;]".. - "label[0,0;"..S("%s Battery Box"):format(tier).."]".. - "label[3,0;"..S("Charge").."]".. - "label[5,0;"..S("Discharge").."]".. - "label[1,3;"..S("Power level").."]".. - "list[current_player;main;0,5;8,4;]".. - "listring[current_name;dst]".. - "listring[current_player;main]".. - "listring[current_name;src]".. - "listring[current_player;main]" - - if data.upgrade then - formspec = formspec.. - "list[current_name;upgrade1;3.5,3;1,1;]".. - "list[current_name;upgrade2;4.5,3;1,1;]".. - "label[3.5,4;"..S("Upgrade Slots").."]".. - "listring[current_name;upgrade1]".. - "listring[current_player;main]".. - "listring[current_name;upgrade2]".. - "listring[current_player;main]" - end - - local run = function(pos, node) - local meta = minetest.get_meta(pos) - local eu_input = meta:get_int(tier.."_EU_input") - local current_charge = meta:get_int("internal_EU_charge") - - local EU_upgrade, tube_upgrade = 0, 0 - if data.upgrade then - EU_upgrade, tube_upgrade = technic.handle_machine_upgrades(meta) - end - local max_charge = data.max_charge * (1 + EU_upgrade / 10) - - -- Charge/discharge the battery with the input EUs - if eu_input >= 0 then - current_charge = math.min(current_charge + eu_input, max_charge) - else - current_charge = math.max(current_charge + eu_input, 0) - end - - -- Charging/discharging tools here - local tool_full, tool_empty - current_charge, tool_full = technic.charge_tools(meta, - current_charge, data.charge_step) - current_charge, tool_empty = technic.discharge_tools(meta, - current_charge, data.discharge_step, - max_charge) - - if data.tube then - local inv = meta:get_inventory() - technic.handle_machine_pipeworks(pos, tube_upgrade, - function(pos, x_velocity, z_velocity) - if tool_full and not inv:is_empty("src") then - technic.send_items(pos, x_velocity, z_velocity, "src") - elseif tool_empty and not inv:is_empty("dst") then - technic.send_items(pos, x_velocity, z_velocity, "dst") - end - end) - end - - -- We allow batteries to charge on less than the demand - meta:set_int(tier.."_EU_demand", - math.min(data.charge_rate, max_charge - current_charge)) - meta:set_int(tier.."_EU_supply", - math.min(data.discharge_rate, current_charge)) - meta:set_int("internal_EU_charge", current_charge) - - -- Select node textures - local charge_count = math.ceil((current_charge / max_charge) * 8) - charge_count = math.min(charge_count, 8) - charge_count = math.max(charge_count, 0) - local last_count = meta:get_float("last_side_shown") - if charge_count ~= last_count then - technic.swap_node(pos,"technic:"..ltier.."_battery_box"..charge_count) - meta:set_float("last_side_shown", charge_count) - end - - local charge_percent = math.floor(current_charge / max_charge * 100) - meta:set_string("formspec", - formspec.. - "image[1,1;1,2;technic_power_meter_bg.png" - .."^[lowpart:"..charge_percent - ..":technic_power_meter_fg.png]") - - local infotext = S("@1 Battery Box: @2/@3", tier, - technic.prettynum(current_charge), technic.prettynum(max_charge)) - if eu_input == 0 then - infotext = S("%s Idle"):format(infotext) - end - meta:set_string("infotext", infotext) - end - - for i = 0, 8 do - local groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2, technic_machine=1} - if i ~= 0 then - groups.not_in_creative_inventory = 1 - end - - if data.tube then - groups.tubedevice = 1 - groups.tubedevice_receiver = 1 - end - - minetest.register_node("technic:"..ltier.."_battery_box"..i, { - description = S("%s Battery Box"):format(tier), - tiles = {"technic_"..ltier.."_battery_box_top.png", - "technic_"..ltier.."_battery_box_bottom.png", - "technic_"..ltier.."_battery_box_side.png^technic_power_meter"..i..".png", - "technic_"..ltier.."_battery_box_side.png^technic_power_meter"..i..".png", - "technic_"..ltier.."_battery_box_side.png^technic_power_meter"..i..".png", - "technic_"..ltier.."_battery_box_side.png^technic_power_meter"..i..".png"}, - groups = groups, - tube = data.tube and tube or nil, - paramtype2 = "facedir", - sounds = default.node_sound_wood_defaults(), - drop = "technic:"..ltier.."_battery_box0", - on_construct = function(pos) - local meta = minetest.get_meta(pos) - local inv = meta:get_inventory() - local node = minetest.get_node(pos) - - meta:set_string("infotext", S("%s Battery Box"):format(tier)) - meta:set_string("formspec", formspec) - meta:set_int(tier.."_EU_demand", 0) - meta:set_int(tier.."_EU_supply", 0) - meta:set_int(tier.."_EU_input", 0) - meta:set_float("internal_EU_charge", 0) - inv:set_size("src", 1) - inv:set_size("dst", 1) - inv:set_size("upgrade1", 1) - inv:set_size("upgrade2", 1) - end, - can_dig = technic.machine_can_dig, - allow_metadata_inventory_put = technic.machine_inventory_put, - allow_metadata_inventory_take = technic.machine_inventory_take, - allow_metadata_inventory_move = technic.machine_inventory_move, - technic_run = run, - after_place_node = data.tube and pipeworks.after_place, - after_dig_node = technic.machine_after_dig_node - }) - end - - -- Register as a battery type - -- Battery type machines function as power reservoirs and can both receive and give back power - for i = 0, 8 do - technic.register_machine(tier, "technic:"..ltier.."_battery_box"..i, technic.battery) - end - -end -- End registration - - -function technic.charge_tools(meta, batt_charge, charge_step) - local inv = meta:get_inventory() - if inv:is_empty("src") then - return batt_charge, false - end - local src_stack = inv:get_stack("src", 1) - - local tool_name = src_stack:get_name() - if not technic.power_tools[tool_name] then - return batt_charge, false - end - -- Set meta data for the tool if it didn't do it itself - local src_meta = minetest.deserialize(src_stack:get_metadata()) or {} - if not src_meta.charge then - src_meta.charge = 0 - end - -- Do the charging - local item_max_charge = technic.power_tools[tool_name] - local tool_charge = src_meta.charge - if tool_charge >= item_max_charge then - return batt_charge, true - elseif batt_charge <= 0 then - return batt_charge, false - end - charge_step = math.min(charge_step, batt_charge) - charge_step = math.min(charge_step, item_max_charge - tool_charge) - tool_charge = tool_charge + charge_step - batt_charge = batt_charge - charge_step - technic.set_RE_wear(src_stack, tool_charge, item_max_charge) - src_meta.charge = tool_charge - src_stack:set_metadata(minetest.serialize(src_meta)) - inv:set_stack("src", 1, src_stack) - return batt_charge, (tool_charge == item_max_charge) -end - - -function technic.discharge_tools(meta, batt_charge, charge_step, max_charge) - local inv = meta:get_inventory() - if inv:is_empty("dst") then - return batt_charge, false - end - srcstack = inv:get_stack("dst", 1) - local toolname = srcstack:get_name() - if technic.power_tools[toolname] == nil then - return batt_charge, false - end - -- Set meta data for the tool if it didn't do it itself :-( - local src_meta = minetest.deserialize(srcstack:get_metadata()) - src_meta = src_meta or {} - if not src_meta.charge then - src_meta.charge = 0 - end - - -- Do the discharging - local item_max_charge = technic.power_tools[toolname] - local tool_charge = src_meta.charge - if tool_charge <= 0 then - return batt_charge, true - elseif batt_charge >= max_charge then - return batt_charge, false - end - charge_step = math.min(charge_step, max_charge - batt_charge) - charge_step = math.min(charge_step, tool_charge) - tool_charge = tool_charge - charge_step - batt_charge = batt_charge + charge_step - technic.set_RE_wear(srcstack, tool_charge, item_max_charge) - src_meta.charge = tool_charge - srcstack:set_metadata(minetest.serialize(src_meta)) - inv:set_stack("dst", 1, srcstack) - return batt_charge, (tool_charge == 0) -end - diff --git a/technic/technic/machines/register/cables.lua b/technic/technic/machines/register/cables.lua deleted file mode 100644 index a1e7bc8..0000000 --- a/technic/technic/machines/register/cables.lua +++ /dev/null @@ -1,177 +0,0 @@ - -local S = technic.getter - -local cable_itstr_to_tier = {} - -function technic.register_cable(tier, size) - local ltier = string.lower(tier) - - for x1 = 0, 1 do - for x2 = 0, 1 do - for y1 = 0, 1 do - for y2 = 0, 1 do - for z1 = 0, 1 do - for z2 = 0, 1 do - local id = technic.get_cable_id({x1, x2, y1, y2, z1, z2}) - - cable_itstr_to_tier["technic:"..ltier.."_cable"..id] = tier - - local groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2} - if id ~= 0 then - groups.not_in_creative_inventory = 1 - end - - minetest.register_node("technic:"..ltier.."_cable"..id, { - description = S("%s Cable"):format(tier), - tiles = {"technic_"..ltier.."_cable.png"}, - inventory_image = "technic_"..ltier.."_cable_wield.png", - wield_image = "technic_"..ltier.."_cable_wield.png", - groups = groups, - sounds = default.node_sound_wood_defaults(), - drop = "technic:"..ltier.."_cable0", - paramtype = "light", - sunlight_propagates = true, - drawtype = "nodebox", - node_box = { - type = "fixed", - fixed = technic.gen_cable_nodebox(x1, y1, z1, x2, y2, z2, size) - }, - on_construct = function() - technic.networks = {} - end, - on_destruct = function() - technic.networks = {} - end, - after_place_node = function(pos) - local node = minetest.get_node(pos) - technic.update_cables(pos, technic.get_cable_tier(node.name)) - end, - after_dig_node = function(pos, oldnode) - local tier = technic.get_cable_tier(oldnode.name) - technic.update_cables(pos, tier, true) - end - }) - end - end - end - end - end - end -end - -minetest.register_on_placenode(function(pos, node) - for tier, machine_list in pairs(technic.machines) do - if machine_list[node.name] ~= nil then - technic.update_cables(pos, tier, true) - technic.networks = {} - end - end -end) - - -minetest.register_on_dignode(function(pos, node) - for tier, machine_list in pairs(technic.machines) do - if machine_list[node.name] ~= nil then - technic.update_cables(pos, tier, true) - technic.networks = {} - end - end -end) - -function technic.get_cable_id(links) - return (links[6] * 1) + (links[5] * 2) - + (links[4] * 4) + (links[3] * 8) - + (links[2] * 16) + (links[1] * 32) -end - -function technic.update_cables(pos, tier, no_set, secondrun) - local link_positions = { - {x=pos.x+1, y=pos.y, z=pos.z}, - {x=pos.x-1, y=pos.y, z=pos.z}, - {x=pos.x, y=pos.y+1, z=pos.z}, - {x=pos.x, y=pos.y-1, z=pos.z}, - {x=pos.x, y=pos.y, z=pos.z+1}, - {x=pos.x, y=pos.y, z=pos.z-1}} - - local links = {0, 0, 0, 0, 0, 0} - - for i, link_pos in pairs(link_positions) do - local connect_type = technic.cables_should_connect(pos, link_pos, tier) - if connect_type then - links[i] = 1 - -- Have cables next to us update theirselves, - -- but only once. (We don't want to update the entire - -- network or start an infinite loop of updates) - if not secondrun and connect_type == "cable" then - technic.update_cables(link_pos, tier, false, true) - end - end - end - -- We don't want to set ourselves if we have been removed or we are - -- updating a machine - if not no_set then - minetest.set_node(pos, {name="technic:"..string.lower(tier) - .."_cable"..technic.get_cable_id(links)}) - - end -end - - -function technic.is_tier_cable(name, tier) - return cable_itstr_to_tier[name] and cable_itstr_to_tier[name] == tier -end - - -function technic.get_cable_tier(name) - return cable_itstr_to_tier[name] -end - - -function technic.cables_should_connect(pos1, pos2, tier) - local name = minetest.get_node(pos2).name - - if name == "technic:switching_station" then - return pos2.y == pos1.y + 1 and "machine" or false - elseif name == "technic:supply_converter" then - return math.abs(pos2.y - pos1.y) == 1 and "machine" or false - elseif technic.is_tier_cable(name, tier) then - return "cable" - elseif technic.machines[tier][name] then - return "machine" - end - return false -end - - -function technic.gen_cable_nodebox(x1, y1, z1, x2, y2, z2, size) - -- Nodeboxes - local box_center = {-size, -size, -size, size, size, size} - local box_y1 = {-size, -size, -size, size, 0.5, size} -- y+ - local box_x1 = {-size, -size, -size, 0.5, size, size} -- x+ - local box_z1 = {-size, -size, size, size, size, 0.5} -- z+ - local box_z2 = {-size, -size, -0.5, size, size, size} -- z- - local box_y2 = {-size, -0.5, -size, size, size, size} -- y- - local box_x2 = {-0.5, -size, -size, size, size, size} -- x- - - local box = {box_center} - if x1 == 1 then - table.insert(box, box_x1) - end - if y1 == 1 then - table.insert(box, box_y1) - end - if z1 == 1 then - table.insert(box, box_z1) - end - if x2 == 1 then - table.insert(box, box_x2) - end - if y2 == 1 then - table.insert(box, box_y2) - end - if z2 == 1 then - table.insert(box, box_z2) - end - return box -end - diff --git a/technic/technic/machines/register/centrifuge.lua b/technic/technic/machines/register/centrifuge.lua deleted file mode 100644 index dd05977..0000000 --- a/technic/technic/machines/register/centrifuge.lua +++ /dev/null @@ -1,8 +0,0 @@ -local S = technic.getter - -function technic.register_centrifuge(data) - data.typename = "separating" - data.machine_name = "centrifuge" - data.machine_desc = S("%s Centrifuge") - technic.register_base_machine(data) -end diff --git a/technic/technic/machines/register/centrifuge_recipes.lua b/technic/technic/machines/register/centrifuge_recipes.lua deleted file mode 100644 index 05642f5..0000000 --- a/technic/technic/machines/register/centrifuge_recipes.lua +++ /dev/null @@ -1,38 +0,0 @@ -local S = technic.getter - -technic.register_recipe_type("separating", { - description = S("Separating"), - output_size = 2, -}) - -function technic.register_separating_recipe(data) - data.time = data.time or 10 - technic.register_recipe("separating", data) -end - -local recipes = { - { "technic:bronze_dust 4", "technic:copper_dust 3", "technic:tin_dust" }, - { "technic:stainless_steel_dust 4", "technic:wrought_iron_dust 3", "technic:chromium_dust" }, - { "technic:brass_dust 3", "technic:copper_dust 2", "technic:zinc_dust" }, -} - -local function uranium_dust(p) - return "technic:uranium"..(p == 7 and "" or p).."_dust" -end -for p = 1, 34 do - table.insert(recipes, { uranium_dust(p).." 2", uranium_dust(p-1), uranium_dust(p+1) }) -end - -if minetest.get_modpath("bushes_classic") then - for _, berry in ipairs({ "blackberry", "blueberry", "gooseberry", "raspberry", "strawberry" }) do - table.insert(recipes, { "bushes:"..berry.."_bush", "default:stick 20", "bushes:"..berry.." 4" }) - end -end - -if minetest.get_modpath("farming") then - table.insert(recipes, { "farming:wheat 4", "farming:seed_wheat 3", "default:dry_shrub 1" }) -end - -for _, data in pairs(recipes) do - technic.register_separating_recipe({ input = { data[1] }, output = { data[2], data[3] } }) -end diff --git a/technic/technic/machines/register/common.lua b/technic/technic/machines/register/common.lua deleted file mode 100644 index ce0eee6..0000000 --- a/technic/technic/machines/register/common.lua +++ /dev/null @@ -1,214 +0,0 @@ - -local S = technic.getter - --- handles the machine upgrades every tick -function technic.handle_machine_upgrades(meta) - -- Get the names of the upgrades - local inv = meta:get_inventory() - - local srcstack = inv:get_stack("upgrade1", 1) - local upg_item1 = srcstack and srcstack:get_name() - - srcstack = inv:get_stack("upgrade2", 1) - local upg_item2 = srcstack and srcstack:get_name() - - -- Save some power by installing battery upgrades. - -- Tube loading speed can be upgraded using control logic units. - local EU_upgrade = 0 - local tube_upgrade = 0 - - if upg_item1 == "technic:control_logic_unit" then - tube_upgrade = tube_upgrade + 1 - elseif upg_item1 == "technic:battery" then - EU_upgrade = EU_upgrade + 1 - end - - if upg_item2 == "technic:control_logic_unit" then - tube_upgrade = tube_upgrade + 1 - elseif upg_item2 == "technic:battery" then - EU_upgrade = EU_upgrade + 1 - end - - return EU_upgrade, tube_upgrade -end - --- handles the machine upgrades when set or removed -local function on_machine_upgrade(meta, stack) - local stack_name = stack:get_name() - if stack_name == "default:chest" then - meta:set_int("public", 1) - return 1 - elseif stack_name ~= "technic:control_logic_unit" - and stack_name ~= "technic:battery" then - return 0 - end - return 1 -end - --- something is about to be removed -local function on_machine_downgrade(meta, stack, list) - if stack:get_name() == "default:chest" then - local inv = meta:get_inventory() - local upg1, upg2 = inv:get_stack("upgrade1", 1), inv:get_stack("upgrade2", 1) - - -- only set 0 if theres not a nother chest in the other list too - if (not upg1 or not upg2 or upg1:get_name() ~= upg2:get_name()) then - meta:set_int("public", 0) - end - end - return 1 -end - - -function technic.send_items(pos, x_velocity, z_velocity, output_name) - -- Send items on their way in the pipe system. - if output_name == nil then - output_name = "dst" - end - - local meta = minetest.get_meta(pos) - local inv = meta:get_inventory() - local i = 0 - for _, stack in ipairs(inv:get_list(output_name)) do - i = i + 1 - if stack then - local item0 = stack:to_table() - if item0 then - item0["count"] = "1" - technic.tube_inject_item(pos, pos, vector.new(x_velocity, 0, z_velocity), item0) - stack:take_item(1) - inv:set_stack(output_name, i, stack) - return - end - end - end -end - - -function technic.smelt_item(meta, result, speed) - local inv = meta:get_inventory() - meta:set_int("cook_time", meta:get_int("cook_time") + 1) - if meta:get_int("cook_time") < result.time / speed then - return - end - local result - local afterfuel - result, afterfuel = minetest.get_craft_result({method = "cooking", width = 1, items = inv:get_list("src")}) - - if result and result.item then - meta:set_int("cook_time", 0) - -- check if there's room for output in "dst" list - if inv:room_for_item("dst", result.item) then - inv:set_stack("src", 1, afterfuel.items[1]) - inv:add_item("dst", result.item) - end - end -end - -function technic.handle_machine_pipeworks(pos, tube_upgrade, send_function) - if send_function == nil then - send_function = technic.send_items - end - - local node = minetest.get_node(pos) - local meta = minetest.get_meta(pos) - local inv = meta:get_inventory() - local pos1 = vector.new(pos) - local x_velocity = 0 - local z_velocity = 0 - - -- Output is on the left side of the furnace - if node.param2 == 3 then pos1.z = pos1.z - 1 z_velocity = -1 end - if node.param2 == 2 then pos1.x = pos1.x - 1 x_velocity = -1 end - if node.param2 == 1 then pos1.z = pos1.z + 1 z_velocity = 1 end - if node.param2 == 0 then pos1.x = pos1.x + 1 x_velocity = 1 end - - local output_tube_connected = false - local node1 = minetest.get_node(pos1) - if minetest.get_item_group(node1.name, "tubedevice") > 0 then - output_tube_connected = true - end - local tube_time = meta:get_int("tube_time") + tube_upgrade - if tube_time >= 2 then - tube_time = 0 - if output_tube_connected then - send_function(pos, x_velocity, z_velocity) - end - end - meta:set_int("tube_time", tube_time) -end - -function technic.machine_can_dig(pos, player) - local meta = minetest.get_meta(pos) - local inv = meta:get_inventory() - if not inv:is_empty("src") or not inv:is_empty("dst") then - if player then - minetest.chat_send_player(player:get_player_name(), - S("Machine cannot be removed because it is not empty")) - end - return false - end - - return true -end - -function technic.machine_after_dig_node(pos, oldnode, oldmetadata, player) - if oldmetadata.inventory then - if oldmetadata.inventory.upgrade1 and oldmetadata.inventory.upgrade1[1] then - local stack = ItemStack(oldmetadata.inventory.upgrade1[1]) - if not stack:is_empty() then - minetest.item_drop(stack, "", pos) - end - end - if oldmetadata.inventory.upgrade2 and oldmetadata.inventory.upgrade2[1] then - local stack = ItemStack(oldmetadata.inventory.upgrade2[1]) - if not stack:is_empty() then - minetest.item_drop(stack, "", pos) - end - end - end - - if minetest.registered_nodes[oldnode.name].tube then - pipeworks.after_dig(pos, oldnode, oldmetadata, player) - end -end - -local function inv_change(pos, player, count, from_list, to_list, stack) - local playername = player:get_player_name() - local meta = minetest.get_meta(pos); - local public = (meta:get_int("public") == 1) - local to_upgrade = to_list == "upgrade1" or to_list == "upgrade2" - local from_upgrade = from_list == "upgrade1" or from_list == "upgrade2" - - if (not public or to_upgrade or from_upgrade) and minetest.is_protected(pos, playername) then - minetest.chat_send_player(playername, S("Inventory move disallowed due to protection")) - return 0 - end - if to_upgrade then - -- only place a single item into it, if it's empty - local empty = meta:get_inventory():is_empty(to_list) - if empty then - return on_machine_upgrade(meta, stack) - end - return 0 - elseif from_upgrade then - -- only called on take (not move) - on_machine_downgrade(meta, stack, from_list) - end - return count -end - -function technic.machine_inventory_put(pos, listname, index, stack, player) - return inv_change(pos, player, stack:get_count(), nil, listname, stack) -end - -function technic.machine_inventory_take(pos, listname, index, stack, player) - return inv_change(pos, player, stack:get_count(), listname, nil, stack) -end - -function technic.machine_inventory_move(pos, from_list, from_index, - to_list, to_index, count, player) - local stack = minetest.get_meta(pos):get_inventory():get_stack(from_list, from_index) - return inv_change(pos, player, count, from_list, to_list, stack) -end - diff --git a/technic/technic/machines/register/compressor.lua b/technic/technic/machines/register/compressor.lua deleted file mode 100644 index 49830d7..0000000 --- a/technic/technic/machines/register/compressor.lua +++ /dev/null @@ -1,9 +0,0 @@ - -local S = technic.getter - -function technic.register_compressor(data) - data.typename = "compressing" - data.machine_name = "compressor" - data.machine_desc = S("%s Compressor") - technic.register_base_machine(data) -end diff --git a/technic/technic/machines/register/compressor_recipes.lua b/technic/technic/machines/register/compressor_recipes.lua deleted file mode 100644 index 872be04..0000000 --- a/technic/technic/machines/register/compressor_recipes.lua +++ /dev/null @@ -1,34 +0,0 @@ - -local S = technic.getter - -technic.register_recipe_type("compressing", { description = S("Compressing") }) - -function technic.register_compressor_recipe(data) - data.time = data.time or 4 - technic.register_recipe("compressing", data) -end - -local recipes = { - {"default:snowblock", "default:ice"}, - {"default:sand 2", "default:sandstone"}, - {"default:desert_sand", "default:desert_stone"}, - {"technic:mixed_metal_ingot", "technic:composite_plate"}, - {"default:copper_ingot 5", "technic:copper_plate"}, - {"technic:coal_dust 4", "technic:graphite"}, - {"technic:carbon_cloth", "technic:carbon_plate"}, - {"technic:uranium35_ingot 5", "technic:uranium_fuel"}, -} - --- defuse the default sandstone recipe, since we have the compressor to take over in a more realistic manner -minetest.register_craft({ - output = "default:sand 0", - recipe = { - {'group:sand', 'group:sand'}, - {'group:sand', 'group:sand'} - }, -}) - -for _, data in pairs(recipes) do - technic.register_compressor_recipe({input = {data[1]}, output = data[2]}) -end - diff --git a/technic/technic/machines/register/electric_furnace.lua b/technic/technic/machines/register/electric_furnace.lua deleted file mode 100644 index 44de16c..0000000 --- a/technic/technic/machines/register/electric_furnace.lua +++ /dev/null @@ -1,9 +0,0 @@ - -local S = technic.getter - -function technic.register_electric_furnace(data) - data.typename = "cooking" - data.machine_name = "electric_furnace" - data.machine_desc = S("%s Furnace") - technic.register_base_machine(data) -end diff --git a/technic/technic/machines/register/extractor.lua b/technic/technic/machines/register/extractor.lua deleted file mode 100644 index eeef9ff..0000000 --- a/technic/technic/machines/register/extractor.lua +++ /dev/null @@ -1,9 +0,0 @@ - -local S = technic.getter - -function technic.register_extractor(data) - data.typename = "extracting" - data.machine_name = "extractor" - data.machine_desc = S("%s Extractor") - technic.register_base_machine(data) -end diff --git a/technic/technic/machines/register/extractor_recipes.lua b/technic/technic/machines/register/extractor_recipes.lua deleted file mode 100644 index 1de0ba0..0000000 --- a/technic/technic/machines/register/extractor_recipes.lua +++ /dev/null @@ -1,59 +0,0 @@ - -local S = technic.getter - -technic.register_recipe_type("extracting", { description = S("Extracting") }) - -function technic.register_extractor_recipe(data) - data.time = data.time or 4 - technic.register_recipe("extracting", data) -end - -if minetest.get_modpath("dye") then - -- check if we are using dye or unifieddyes - local unifieddyes = minetest.get_modpath("unifieddyes") - - -- register recipes with the same crafting ratios as `dye` provides - local dye_recipes = { - {"technic:coal_dust", "dye:black 2"}, - {"default:grass_1", "dye:green 1"}, - {"default:dry_shrub", "dye:brown 1"}, - {"default:junglegrass", "dye:green 2"}, - {"default:cactus", "dye:green 4"}, - {"flowers:geranium", "dye:blue 4"}, - {"flowers:dandelion_white", "dye:white 4"}, - {"flowers:dandelion_yellow", "dye:yellow 4"}, - {"flowers:tulip", "dye:orange 4"}, - {"flowers:rose", "dye:red 4"}, - {"flowers:viola", "dye:violet 4"}, - {"bushes:blackberry", unifieddyes and "unifieddyes:magenta_s50 4" or "dye:violet 4"}, - {"bushes:blueberry", unifieddyes and "unifieddyes:magenta_s50 4" or "dye:magenta 4"}, - } - - for _, data in ipairs(dye_recipes) do - technic.register_extractor_recipe({input = {data[1]}, output = data[2]}) - end - - -- overwrite the existing crafting recipes - local dyes = {"white", "red", "yellow", "blue", "violet", "orange"} - for _, color in ipairs(dyes) do - minetest.register_craft({ - type = "shapeless", - output = "dye:"..color.." 1", - recipe = {"group:flower,color_"..color}, - }) - - end - minetest.register_craft({ - type = "shapeless", - output = "dye:black 1", - recipe = {"group:coal"}, - }) - - if unifieddyes then - minetest.register_craft({ - type = "shapeless", - output = "dye:green 1", - recipe = {"default:cactus"}, - }) - end -end diff --git a/technic/technic/machines/register/generator.lua b/technic/technic/machines/register/generator.lua deleted file mode 100644 index 31c1cef..0000000 --- a/technic/technic/machines/register/generator.lua +++ /dev/null @@ -1,173 +0,0 @@ -local S = technic.getter - -local tube = { - insert_object = function(pos, node, stack, direction) - local meta = minetest.get_meta(pos) - local inv = meta:get_inventory() - return inv:add_item("src", stack) - end, - can_insert = function(pos, node, stack, direction) - local meta = minetest.get_meta(pos) - local inv = meta:get_inventory() - return inv:room_for_item("src", stack) - end, - connect_sides = {left=1, right=1, back=1, top=1, bottom=1}, -} - -function technic.register_generator(data) - local tier = data.tier - local ltier = string.lower(tier) - - local groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2, technic_machine=1} - local active_groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2, technic_machine=1, not_in_creative_inventory=1} - if data.tube then - groups.tubedevice = 1 - groups.tubedevice_receiver = 1 - active_groups.tubedevice = 1 - active_groups.tubedevice_receiver = 1 - end - - local generator_formspec = - "invsize[8,9;]".. - "label[0,0;"..S("Fuel-Fired %s Generator"):format(tier).."]".. - "list[current_name;src;3,1;1,1;]".. - "image[4,1;1,1;default_furnace_fire_bg.png]".. - "list[current_player;main;0,5;8,4;]".. - "listring[]" - - local desc = S("Fuel-Fired %s Generator"):format(tier) - - local run = function(pos, node) - local meta = minetest.get_meta(pos) - local burn_time = meta:get_int("burn_time") - local burn_totaltime = meta:get_int("burn_totaltime") - -- If more to burn and the energy produced was used: produce some more - if burn_time > 0 then - meta:set_int(tier.."_EU_supply", data.supply) - burn_time = burn_time - 1 - meta:set_int("burn_time", burn_time) - end - -- Burn another piece of fuel - if burn_time == 0 then - local inv = meta:get_inventory() - if not inv:is_empty("src") then - local fuellist = inv:get_list("src") - local fuel - local afterfuel - fuel, afterfuel = minetest.get_craft_result( - {method = "fuel", width = 1, - items = fuellist}) - if not fuel or fuel.time == 0 then - meta:set_string("infotext", S("%s Out Of Fuel"):format(desc)) - technic.swap_node(pos, "technic:"..ltier.."_generator") - meta:set_int(tier.."_EU_supply", 0) - return - end - meta:set_int("burn_time", fuel.time) - meta:set_int("burn_totaltime", fuel.time) - inv:set_stack("src", 1, afterfuel.items[1]) - technic.swap_node(pos, "technic:"..ltier.."_generator_active") - meta:set_int(tier.."_EU_supply", data.supply) - else - technic.swap_node(pos, "technic:"..ltier.."_generator") - meta:set_int(tier.."_EU_supply", 0) - end - end - if burn_totaltime == 0 then burn_totaltime = 1 end - local percent = math.floor((burn_time / burn_totaltime) * 100) - meta:set_string("infotext", desc.." ("..percent.."%)") - meta:set_string("formspec", - "size[8, 9]".. - "label[0, 0;"..minetest.formspec_escape(desc).."]".. - "list[current_name;src;3, 1;1, 1;]".. - "image[4, 1;1, 1;default_furnace_fire_bg.png^[lowpart:".. - (percent)..":default_furnace_fire_fg.png]".. - "list[current_player;main;0, 5;8, 4;]".. - "listring[]") - end - - minetest.register_node("technic:"..ltier.."_generator", { - description = desc, - tiles = {"technic_"..ltier.."_generator_top.png", "technic_machine_bottom.png", - "technic_"..ltier.."_generator_side.png", "technic_"..ltier.."_generator_side.png", - "technic_"..ltier.."_generator_side.png", "technic_"..ltier.."_generator_front.png"}, - paramtype2 = "facedir", - groups = groups, - legacy_facedir_simple = true, - sounds = default.node_sound_wood_defaults(), - tube = data.tube and tube or nil, - on_construct = function(pos) - local meta = minetest.get_meta(pos) - meta:set_string("infotext", desc) - meta:set_int(data.tier.."_EU_supply", 0) - meta:set_int("burn_time", 0) - meta:set_int("tube_time", 0) - meta:set_string("formspec", generator_formspec) - local inv = meta:get_inventory() - inv:set_size("src", 1) - end, - can_dig = technic.machine_can_dig, - allow_metadata_inventory_put = technic.machine_inventory_put, - allow_metadata_inventory_take = technic.machine_inventory_take, - allow_metadata_inventory_move = technic.machine_inventory_move, - technic_run = run, - after_place_node = data.tube and pipeworks.after_place, - after_dig_node = technic.machine_after_dig_node - }) - - minetest.register_node("technic:"..ltier.."_generator_active", { - description = desc, - tiles = {"technic_"..ltier.."_generator_top.png", "technic_machine_bottom.png", - "technic_"..ltier.."_generator_side.png", "technic_"..ltier.."_generator_side.png", - "technic_"..ltier.."_generator_side.png", "technic_"..ltier.."_generator_front_active.png"}, - paramtype2 = "facedir", - groups = active_groups, - legacy_facedir_simple = true, - sounds = default.node_sound_wood_defaults(), - tube = data.tube and tube or nil, - drop = "technic:"..ltier.."_generator", - can_dig = technic.machine_can_dig, - allow_metadata_inventory_put = technic.machine_inventory_put, - allow_metadata_inventory_take = technic.machine_inventory_take, - allow_metadata_inventory_move = technic.machine_inventory_move, - technic_run = run, - technic_on_disable = function(pos, node) - local timer = minetest.get_node_timer(pos) - timer:start(1) - end, - on_timer = function(pos, node) - local meta = minetest.get_meta(pos) - - -- Connected back? - if meta:get_int(tier.."_EU_timeout") > 0 then return false end - - local burn_time = meta:get_int("burn_time") or 0 - - if burn_time <= 0 then - meta:set_int(tier.."_EU_supply", 0) - meta:set_int("burn_time", 0) - technic.swap_node(pos, "technic:"..ltier.."_generator") - return false - end - - local burn_totaltime = meta:get_int("burn_totaltime") or 0 - if burn_totaltime == 0 then burn_totaltime = 1 end - burn_time = burn_time - 1 - meta:set_int("burn_time", burn_time) - local percent = math.floor(burn_time / burn_totaltime * 100) - meta:set_string("formspec", - "size[8, 9]".. - "label[0, 0;"..minetest.formspec_escape(desc).."]".. - "list[current_name;src;3, 1;1, 1;]".. - "image[4, 1;1, 1;default_furnace_fire_bg.png^[lowpart:".. - (percent)..":default_furnace_fire_fg.png]".. - "list[current_player;main;0, 5;8, 4;]".. - "listring[]") - return true - end, - }) - - technic.register_machine(tier, "technic:"..ltier.."_generator", technic.producer) - technic.register_machine(tier, "technic:"..ltier.."_generator_active", technic.producer) -end - diff --git a/technic/technic/machines/register/grinder.lua b/technic/technic/machines/register/grinder.lua deleted file mode 100644 index 19ea094..0000000 --- a/technic/technic/machines/register/grinder.lua +++ /dev/null @@ -1,9 +0,0 @@ - -local S = technic.getter - -function technic.register_grinder(data) - data.typename = "grinding" - data.machine_name = "grinder" - data.machine_desc = S("%s Grinder") - technic.register_base_machine(data) -end diff --git a/technic/technic/machines/register/grinder_recipes.lua b/technic/technic/machines/register/grinder_recipes.lua deleted file mode 100644 index 87c6ade..0000000 --- a/technic/technic/machines/register/grinder_recipes.lua +++ /dev/null @@ -1,161 +0,0 @@ - -local S = technic.getter - -technic.register_recipe_type("grinding", { description = S("Grinding") }) - -function technic.register_grinder_recipe(data) - data.time = data.time or 3 - technic.register_recipe("grinding", data) -end - -local recipes = { - -- Dusts - {"default:coal_lump", "technic:coal_dust 2"}, - {"default:copper_lump", "technic:copper_dust 2"}, - {"default:desert_stone", "default:desert_sand"}, - {"default:gold_lump", "technic:gold_dust 2"}, - {"default:iron_lump", "technic:wrought_iron_dust 2"}, - {"technic:chromium_lump", "technic:chromium_dust 2"}, - {"technic:uranium_lump", "technic:uranium_dust 2"}, - {"technic:zinc_lump", "technic:zinc_dust 2"}, - {"technic:lead_lump", "technic:lead_dust 2"}, - {"technic:sulfur_lump", "technic:sulfur_dust 2"}, - - -- Other - {"default:cobble", "default:gravel"}, - {"default:gravel", "default:dirt"}, - {"default:stone", "default:sand"}, - {"default:sandstone", "default:sand 2"}, -- reverse recipe can be found in the compressor -} - --- defuse the sandstone -> 4 sand recipe to avoid infinite sand bugs (also consult the inverse compressor recipe) -minetest.register_craft({ - output = "default:sandstone 0", - recipe = { - {'default:sandstone'} - }, -}) - -if minetest.get_modpath("farming") then - table.insert(recipes, {"farming:seed_wheat", "farming:flour 1"}) -end - -if minetest.get_modpath("moreores") then - table.insert(recipes, {"moreores:mithril_lump", "technic:mithril_dust 2"}) - table.insert(recipes, {"moreores:silver_lump", "technic:silver_dust 2"}) - table.insert(recipes, {"moreores:tin_lump", "technic:tin_dust 2"}) -end - -if minetest.get_modpath("gloopores") or minetest.get_modpath("glooptest") then - table.insert(recipes, {"gloopores:alatro_lump", "technic:alatro_dust 2"}) - table.insert(recipes, {"gloopores:kalite_lump", "technic:kalite_dust 2"}) - table.insert(recipes, {"gloopores:arol_lump", "technic:arol_dust 2"}) - table.insert(recipes, {"gloopores:talinite_lump", "technic:talinite_dust 2"}) - table.insert(recipes, {"gloopores:akalin_lump", "technic:akalin_dust 2"}) -end - -if minetest.get_modpath("homedecor") then - table.insert(recipes, {"home_decor:brass_ingot", "technic:brass_dust 1"}) -end - -for _, data in pairs(recipes) do - technic.register_grinder_recipe({input = {data[1]}, output = data[2]}) -end - --- defuse common grinder unfriendly recipes -if minetest.get_modpath("fake_fire") then -- from homedecor_modpack - minetest.register_craft({ output='default:cobble 0', recipe={{'default:cobble'}}}) - minetest.register_craft({ output='default:gravel 0', recipe={{'default:gravel'}}}) -end - --- dusts -local function register_dust(name, ingot) - local lname = string.lower(name) - lname = string.gsub(lname, ' ', '_') - minetest.register_craftitem("technic:"..lname.."_dust", { - description = S("%s Dust"):format(S(name)), - inventory_image = "technic_"..lname.."_dust.png", - }) - if ingot then - minetest.register_craft({ - type = "cooking", - recipe = "technic:"..lname.."_dust", - output = ingot, - }) - technic.register_grinder_recipe({ input = {ingot}, output = "technic:"..lname.."_dust 1" }) - end -end - --- Sorted alphibeticaly -register_dust("Brass", "technic:brass_ingot") -register_dust("Bronze", "default:bronze_ingot") -register_dust("Carbon Steel", "technic:carbon_steel_ingot") -register_dust("Cast Iron", "technic:cast_iron_ingot") -register_dust("Chromium", "technic:chromium_ingot") -register_dust("Coal", nil) -register_dust("Copper", "default:copper_ingot") -register_dust("Lead", "technic:lead_ingot") -register_dust("Gold", "default:gold_ingot") -register_dust("Mithril", "moreores:mithril_ingot") -register_dust("Silver", "moreores:silver_ingot") -register_dust("Stainless Steel", "technic:stainless_steel_ingot") -register_dust("Sulfur", nil) -register_dust("Tin", "moreores:tin_ingot") -register_dust("Wrought Iron", "technic:wrought_iron_ingot") -register_dust("Zinc", "technic:zinc_ingot") -if minetest.get_modpath("gloopores") or minetest.get_modpath("glooptest") then - register_dust("Akalin", "glooptest:akalin_ingot") - register_dust("Alatro", "glooptest:alatro_ingot") - register_dust("Arol", "glooptest:arol_ingot") - register_dust("Kalite", nil) - register_dust("Talinite", "glooptest:talinite_ingot") -end - -for p = 0, 35 do - local nici = (p ~= 0 and p ~= 7 and p ~= 35) and 1 or nil - local psuffix = p == 7 and "" or p - local ingot = "technic:uranium"..psuffix.."_ingot" - local dust = "technic:uranium"..psuffix.."_dust" - minetest.register_craftitem(dust, { - description = S("%s Dust"):format(string.format(S("%.1f%%-Fissile Uranium"), p/10)), - inventory_image = "technic_uranium_dust.png", - on_place_on_ground = minetest.craftitem_place_item, - groups = {uranium_dust=1, not_in_creative_inventory=nici}, - }) - minetest.register_craft({ - type = "cooking", - recipe = dust, - output = ingot, - }) - technic.register_grinder_recipe({ input = {ingot}, output = dust }) -end - -local function uranium_dust(p) - return "technic:uranium"..(p == 7 and "" or p).."_dust" -end -for pa = 0, 34 do - for pb = pa+1, 35 do - local pc = (pa+pb)/2 - if pc == math.floor(pc) then - minetest.register_craft({ - type = "shapeless", - recipe = { uranium_dust(pa), uranium_dust(pb) }, - output = uranium_dust(pc).." 2", - }) - end - end -end - -minetest.register_craft({ - type = "fuel", - recipe = "technic:coal_dust", - burntime = 50, -}) - -if minetest.get_modpath("gloopores") or minetest.get_modpath("glooptest") then - minetest.register_craft({ - type = "fuel", - recipe = "technic:kalite_dust", - burntime = 37.5, - }) -end diff --git a/technic/technic/machines/register/grindings.lua b/technic/technic/machines/register/grindings.lua deleted file mode 100644 index 9231166..0000000 --- a/technic/technic/machines/register/grindings.lua +++ /dev/null @@ -1,62 +0,0 @@ -local S = technic.getter -local moretrees = minetest.get_modpath("moretrees") -local mesecons_materials = minetest.get_modpath("mesecons_materials") -local dye = minetest.get_modpath("dye") - --- sawdust, the finest wood/tree grinding -local sawdust = "technic:sawdust" -minetest.register_craftitem(sawdust, { - description = S("Sawdust"), - inventory_image = "technic_sawdust.png", -}) -minetest.register_craft({ type = "fuel", recipe = sawdust, burntime = 6 }) -technic.register_compressor_recipe({ input = {sawdust .. " 4"}, output = "default:wood" }) - --- tree/wood grindings -local function register_tree_grinding(name, tree, wood, extract, grinding_color) - local lname = string.lower(name) - lname = string.gsub(lname, ' ', '_') - local grindings_name = "technic:"..lname.."_grindings" - local inventory_image = "technic_"..lname.."_grindings.png" - if grinding_color then - inventory_image = inventory_image .. "^[colorize:" .. grinding_color - end - minetest.register_craftitem(grindings_name, { - description = S("%s Grinding"):format(S(name)), - inventory_image = inventory_image, - }) - minetest.register_craft({ - type = "fuel", - recipe = grindings_name, - burntime = 8, - }) - technic.register_grinder_recipe({ input = { tree }, output = grindings_name .. " 4" }) - technic.register_grinder_recipe({ input = { grindings_name }, output = sawdust .. " 4" }) - if wood then - technic.register_grinder_recipe({ input = { wood }, output = grindings_name }) - end - if extract then - technic.register_extractor_recipe({ input = { grindings_name .. " 4" }, output = extract}) - technic.register_separating_recipe({ - input = { grindings_name .. " 4" }, - output = { sawdust .. " 4", extract } - }) - end -end - -local rubber_tree_planks = moretrees and "moretrees:rubber_tree_planks" -local default_extract = dye and "dye:brown 2" - -local grinding_recipes = { - {"Common Tree", "group:tree", "group:wood", default_extract }, - {"Rubber Tree", "moretrees:rubber_tree_trunk", rubber_tree_planks, "technic:raw_latex"} -} - -for _, data in pairs(grinding_recipes) do - register_tree_grinding(unpack(data)) -end - -if moretrees and dye then - -- https://en.wikipedia.org/wiki/Catechu ancient brown dye from the wood of acacia trees - register_tree_grinding("Acacia", "moretrees:acacia_trunk", "moretrees:acacia_planks", "dye:brown 8") -end diff --git a/technic/technic/machines/register/init.lua b/technic/technic/machines/register/init.lua deleted file mode 100644 index 1667d75..0000000 --- a/technic/technic/machines/register/init.lua +++ /dev/null @@ -1,33 +0,0 @@ -local path = technic.modpath.."/machines/register" - -dofile(path.."/common.lua") - --- Wiring stuff -dofile(path.."/cables.lua") -dofile(path.."/battery_box.lua") - --- Generators -dofile(path.."/solar_array.lua") -dofile(path.."/generator.lua") - --- API for machines -dofile(path.."/recipes.lua") -dofile(path.."/machine_base.lua") - --- Recipes -dofile(path.."/alloy_recipes.lua") -dofile(path.."/grinder_recipes.lua") -dofile(path.."/extractor_recipes.lua") -dofile(path.."/compressor_recipes.lua") -dofile(path.."/centrifuge_recipes.lua") - --- Multi-Machine Recipes -dofile(path.."/grindings.lua") - --- Machines -dofile(path.."/alloy_furnace.lua") -dofile(path.."/electric_furnace.lua") -dofile(path.."/grinder.lua") -dofile(path.."/extractor.lua") -dofile(path.."/compressor.lua") -dofile(path.."/centrifuge.lua") diff --git a/technic/technic/machines/register/machine_base.lua b/technic/technic/machines/register/machine_base.lua deleted file mode 100644 index 0c46261..0000000 --- a/technic/technic/machines/register/machine_base.lua +++ /dev/null @@ -1,197 +0,0 @@ - -local S = technic.getter - -local tube = { - insert_object = function(pos, node, stack, direction) - local meta = minetest.get_meta(pos) - local inv = meta:get_inventory() - return inv:add_item("src", stack) - end, - can_insert = function(pos, node, stack, direction) - local meta = minetest.get_meta(pos) - local inv = meta:get_inventory() - return inv:room_for_item("src", stack) - end, - connect_sides = {left = 1, right = 1, back = 1, top = 1, bottom = 1}, -} - -local function round(v) - return math.floor(v + 0.5) -end - -function technic.register_base_machine(data) - local typename = data.typename - local input_size = technic.recipes[typename].input_size - local machine_name = data.machine_name - local machine_desc = data.machine_desc - local tier = data.tier - local ltier = string.lower(tier) - - local groups = {cracky = 2, technic_machine = 1} - local active_groups = {cracky = 2, technic_machine = 1, not_in_creative_inventory = 1} - if data.tube then - groups.tubedevice = 1 - groups.tubedevice_receiver = 1 - active_groups.tubedevice = 1 - active_groups.tubedevice_receiver = 1 - end - - - local formspec = - "invsize[8,9;]".. - "list[current_name;src;"..(4-input_size)..",1;"..input_size..",1;]".. - "list[current_name;dst;5,1;2,2;]".. - "list[current_player;main;0,5;8,4;]".. - "label[0,0;"..machine_desc:format(tier).."]".. - "listring[current_name;dst]".. - "listring[current_player;main]".. - "listring[current_name;src]".. - "listring[current_player;main]" - if data.upgrade then - formspec = formspec.. - "list[current_name;upgrade1;1,3;1,1;]".. - "list[current_name;upgrade2;2,3;1,1;]".. - "label[1,4;"..S("Upgrade Slots").."]".. - "listring[current_name;upgrade1]".. - "listring[current_player;main]".. - "listring[current_name;upgrade2]".. - "listring[current_player;main]" - end - - local run = function(pos, node) - local meta = minetest.get_meta(pos) - local inv = meta:get_inventory() - local eu_input = meta:get_int(tier.."_EU_input") - - local machine_desc_tier = machine_desc:format(tier) - local machine_node = "technic:"..ltier.."_"..machine_name - local machine_demand = data.demand - - -- Setup meta data if it does not exist. - if not eu_input then - meta:set_int(tier.."_EU_demand", machine_demand[1]) - meta:set_int(tier.."_EU_input", 0) - return - end - - local EU_upgrade, tube_upgrade = 0, 0 - if data.upgrade then - EU_upgrade, tube_upgrade = technic.handle_machine_upgrades(meta) - end - if data.tube then - technic.handle_machine_pipeworks(pos, tube_upgrade) - end - - local powered = eu_input >= machine_demand[EU_upgrade+1] - if powered then - meta:set_int("src_time", meta:get_int("src_time") + round(data.speed*10)) - end - while true do - local result = technic.get_recipe(typename, inv:get_list("src")) - if not result then - technic.swap_node(pos, machine_node) - meta:set_string("infotext", S("%s Idle"):format(machine_desc_tier)) - meta:set_int(tier.."_EU_demand", 0) - meta:set_int("src_time", 0) - return - end - meta:set_int(tier.."_EU_demand", machine_demand[EU_upgrade+1]) - technic.swap_node(pos, machine_node.."_active") - meta:set_string("infotext", S("%s Active"):format(machine_desc_tier)) - if meta:get_int("src_time") < round(result.time*10) then - if not powered then - technic.swap_node(pos, machine_node) - meta:set_string("infotext", S("%s Unpowered"):format(machine_desc_tier)) - end - return - end - local output = result.output - if type(output) ~= "table" then output = { output } end - local output_stacks = {} - for _, o in ipairs(output) do - table.insert(output_stacks, ItemStack(o)) - end - local room_for_output = true - inv:set_size("dst_tmp", inv:get_size("dst")) - inv:set_list("dst_tmp", inv:get_list("dst")) - for _, o in ipairs(output_stacks) do - if not inv:room_for_item("dst_tmp", o) then - room_for_output = false - break - end - inv:add_item("dst_tmp", o) - end - if not room_for_output then - technic.swap_node(pos, machine_node) - meta:set_string("infotext", S("%s Idle"):format(machine_desc_tier)) - meta:set_int(tier.."_EU_demand", 0) - meta:set_int("src_time", round(result.time*10)) - return - end - meta:set_int("src_time", meta:get_int("src_time") - round(result.time*10)) - inv:set_list("src", result.new_input) - inv:set_list("dst", inv:get_list("dst_tmp")) - end - end - - minetest.register_node("technic:"..ltier.."_"..machine_name, { - description = machine_desc:format(tier), - tiles = {"technic_"..ltier.."_"..machine_name.."_top.png", - "technic_"..ltier.."_"..machine_name.."_bottom.png", - "technic_"..ltier.."_"..machine_name.."_side.png", - "technic_"..ltier.."_"..machine_name.."_side.png", - "technic_"..ltier.."_"..machine_name.."_side.png", - "technic_"..ltier.."_"..machine_name.."_front.png"}, - paramtype2 = "facedir", - groups = groups, - tube = data.tube and tube or nil, - legacy_facedir_simple = true, - sounds = default.node_sound_wood_defaults(), - on_construct = function(pos) - local node = minetest.get_node(pos) - local meta = minetest.get_meta(pos) - meta:set_string("infotext", machine_desc:format(tier)) - meta:set_int("tube_time", 0) - meta:set_string("formspec", formspec) - local inv = meta:get_inventory() - inv:set_size("src", input_size) - inv:set_size("dst", 4) - inv:set_size("upgrade1", 1) - inv:set_size("upgrade2", 1) - end, - can_dig = technic.machine_can_dig, - allow_metadata_inventory_put = technic.machine_inventory_put, - allow_metadata_inventory_take = technic.machine_inventory_take, - allow_metadata_inventory_move = technic.machine_inventory_move, - technic_run = run, - after_place_node = data.tube and pipeworks.after_place, - after_dig_node = technic.machine_after_dig_node - }) - - minetest.register_node("technic:"..ltier.."_"..machine_name.."_active",{ - description = machine_desc:format(tier), - tiles = {"technic_"..ltier.."_"..machine_name.."_top.png", - "technic_"..ltier.."_"..machine_name.."_bottom.png", - "technic_"..ltier.."_"..machine_name.."_side.png", - "technic_"..ltier.."_"..machine_name.."_side.png", - "technic_"..ltier.."_"..machine_name.."_side.png", - "technic_"..ltier.."_"..machine_name.."_front_active.png"}, - paramtype2 = "facedir", - drop = "technic:"..ltier.."_"..machine_name, - groups = active_groups, - legacy_facedir_simple = true, - sounds = default.node_sound_wood_defaults(), - tube = data.tube and tube or nil, - can_dig = technic.machine_can_dig, - allow_metadata_inventory_put = technic.machine_inventory_put, - allow_metadata_inventory_take = technic.machine_inventory_take, - allow_metadata_inventory_move = technic.machine_inventory_move, - technic_run = run, - technic_disabled_machine_name = "technic:"..ltier.."_"..machine_name, - }) - - technic.register_machine(tier, "technic:"..ltier.."_"..machine_name, technic.receiver) - technic.register_machine(tier, "technic:"..ltier.."_"..machine_name.."_active", technic.receiver) - -end -- End registration - diff --git a/technic/technic/machines/register/recipes.lua b/technic/technic/machines/register/recipes.lua deleted file mode 100644 index d30fd4f..0000000 --- a/technic/technic/machines/register/recipes.lua +++ /dev/null @@ -1,107 +0,0 @@ -local have_ui = minetest.get_modpath("unified_inventory") - -technic.recipes = { cooking = { input_size = 1, output_size = 1 } } -function technic.register_recipe_type(typename, origdata) - local data = {} - for k, v in pairs(origdata) do data[k] = v end - data.input_size = data.input_size or 1 - data.output_size = data.output_size or 1 - if have_ui and unified_inventory.register_craft_type and data.output_size == 1 then - unified_inventory.register_craft_type(typename, { - description = data.description, - width = data.input_size, - height = 1, - }) - end - data.recipes = {} - technic.recipes[typename] = data -end - -local function get_recipe_index(items) - if not items or type(items) ~= "table" then return false end - local l = {} - for i, stack in ipairs(items) do - l[i] = ItemStack(stack):get_name() - end - table.sort(l) - return table.concat(l, "/") -end - -local function register_recipe(typename, data) - -- Handle aliases - for i, stack in ipairs(data.input) do - data.input[i] = ItemStack(stack):to_string() - end - if type(data.output) == "table" then - for i, v in ipairs(data.output) do - data.output[i] = ItemStack(data.output[i]):to_string() - end - else - data.output = ItemStack(data.output):to_string() - end - - local recipe = {time = data.time, input = {}, output = data.output} - local index = get_recipe_index(data.input) - if not index then - print("[Technic] ignored registration of garbage recipe!") - return - end - for _, stack in ipairs(data.input) do - recipe.input[ItemStack(stack):get_name()] = ItemStack(stack):get_count() - end - - technic.recipes[typename].recipes[index] = recipe - if unified_inventory and technic.recipes[typename].output_size == 1 then - unified_inventory.register_craft({ - type = typename, - output = data.output, - items = data.input, - width = 0, - }) - end -end - -function technic.register_recipe(typename, data) - minetest.after(0.01, register_recipe, typename, data) -- Handle aliases -end - -function technic.get_recipe(typename, items) - if typename == "cooking" then -- Already builtin in Minetest, so use that - local result, new_input = minetest.get_craft_result({ - method = "cooking", - width = 1, - items = items}) - -- Compatibility layer - if not result or result.time == 0 then - return nil - else - return {time = result.time, - new_input = new_input.items, - output = result.item} - end - end - local index = get_recipe_index(items) - if not index then - print("[Technic] ignored registration of garbage recipe!") - return - end - local recipe = technic.recipes[typename].recipes[index] - if recipe then - local new_input = {} - for i, stack in ipairs(items) do - if stack:get_count() < recipe.input[stack:get_name()] then - return nil - else - new_input[i] = ItemStack(stack) - new_input[i]:take_item(recipe.input[stack:get_name()]) - end - end - return {time = recipe.time, - new_input = new_input, - output = recipe.output} - else - return nil - end -end - - diff --git a/technic/technic/machines/register/solar_array.lua b/technic/technic/machines/register/solar_array.lua deleted file mode 100644 index 39f50d2..0000000 --- a/technic/technic/machines/register/solar_array.lua +++ /dev/null @@ -1,65 +0,0 @@ - -local S = technic.getter - -function technic.register_solar_array(data) - local tier = data.tier - local ltier = string.lower(tier) - - local run = function(pos, node) - -- The action here is to make the solar array produce power - -- Power is dependent on the light level and the height above ground - -- There are many ways to cheat by using other light sources like lamps. - -- As there is no way to determine if light is sunlight that is just a shame. - -- To take care of some of it solar panels do not work outside daylight hours or if - -- built below 0m - local pos1 = {} - local machine_name = S("Arrayed Solar %s Generator"):format(tier) - pos1.y = pos.y + 1 - pos1.x = pos.x - pos1.z = pos.z - - technic.get_or_load_node(pos1) - local light = minetest.get_node_light(pos1, nil) - local time_of_day = minetest.get_timeofday() - local meta = minetest.get_meta(pos) - light = light or 0 - - -- turn on array only during day time and if sufficient light - -- I know this is counter intuitive when cheating by using other light sources. - if light >= 12 and time_of_day >= 0.24 and time_of_day <= 0.76 and pos.y > 0 then - local charge_to_give = math.floor((light + pos.y) * data.power) - charge_to_give = math.max(charge_to_give, 0) - charge_to_give = math.min(charge_to_give, data.power * 50) - meta:set_string("infotext", S("@1 Active (@2 EU)", machine_name, technic.prettynum(charge_to_give))) - meta:set_int(tier.."_EU_supply", charge_to_give) - else - meta:set_string("infotext", S("%s Idle"):format(machine_name)) - meta:set_int(tier.."_EU_supply", 0) - end - end - - minetest.register_node("technic:solar_array_"..ltier, { - tiles = {"technic_"..ltier.."_solar_array_top.png", "technic_"..ltier.."_solar_array_bottom.png", - "technic_"..ltier.."_solar_array_side.png", "technic_"..ltier.."_solar_array_side.png", - "technic_"..ltier.."_solar_array_side.png", "technic_"..ltier.."_solar_array_side.png"}, - groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2, technic_machine=1}, - sounds = default.node_sound_wood_defaults(), - description = S("Arrayed Solar %s Generator"):format(tier), - active = false, - drawtype = "nodebox", - paramtype = "light", - node_box = { - type = "fixed", - fixed = {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, - }, - on_construct = function(pos) - local meta = minetest.get_meta(pos) - local name = minetest.get_node(pos).name - meta:set_int(tier.."_EU_supply", 0) - end, - technic_run = run, - }) - - technic.register_machine(tier, "technic:solar_array_"..ltier, technic.producer) -end - diff --git a/technic/technic/machines/supply_converter.lua b/technic/technic/machines/supply_converter.lua deleted file mode 100644 index ffcd40d..0000000 --- a/technic/technic/machines/supply_converter.lua +++ /dev/null @@ -1,80 +0,0 @@ --- The supply converter is a generic device which can convert from --- LV to MV and back, and HV to MV and back. --- The machine is configured by the wiring below and above it. --- --- It works like this: --- The top side is setup as the receiver side, the bottom as the producer side. --- Once the receiver side is powered it will deliver power to the other side. --- Unused power is wasted just like any other producer! - -local S = technic.getter - -local run = function(pos, node) - local demand = 10000 - local remain = 0.9 - -- Machine information - local machine_name = S("Supply Converter") - local meta = minetest.get_meta(pos) - - local pos_up = {x=pos.x, y=pos.y+1, z=pos.z} - local pos_down = {x=pos.x, y=pos.y-1, z=pos.z} - local name_up = minetest.get_node(pos_up).name - local name_down = minetest.get_node(pos_down).name - - local from = technic.get_cable_tier(name_up) - local to = technic.get_cable_tier(name_down) - - if from and to then - local input = meta:get_int(from.."_EU_input") - meta:set_int(from.."_EU_demand", demand) - meta:set_int(from.."_EU_supply", 0) - meta:set_int(to.."_EU_demand", 0) - meta:set_int(to.."_EU_supply", input * remain) - meta:set_string("infotext", S("@1 (@2 @3 -> @4 @5)", machine_name, technic.prettynum(input), from, technic.prettynum(input * remain), to)) - else - meta:set_string("infotext", S("%s Has Bad Cabling"):format(machine_name)) - if to then - meta:set_int(to.."_EU_supply", 0) - end - if from then - meta:set_int(from.."_EU_demand", 0) - end - return - end - -end - -minetest.register_node("technic:supply_converter", { - description = S("Supply Converter"), - tiles = {"technic_supply_converter_top.png", "technic_supply_converter_bottom.png", - "technic_supply_converter_side.png", "technic_supply_converter_side.png", - "technic_supply_converter_side.png", "technic_supply_converter_side.png"}, - groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2, technic_machine=1}, - sounds = default.node_sound_wood_defaults(), - drawtype = "nodebox", - paramtype = "light", - node_box = { - type = "fixed", - fixed = {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, - }, - on_construct = function(pos) - local meta = minetest.get_meta(pos) - meta:set_string("infotext", S("Supply Converter")) - meta:set_float("active", false) - end, - technic_run = run, -}) - -minetest.register_craft({ - output = 'technic:supply_converter 1', - recipe = { - {'technic:fine_gold_wire', 'technic:rubber', 'technic:doped_silicon_wafer'}, - {'technic:mv_transformer', 'technic:machine_casing', 'technic:lv_transformer'}, - {'technic:mv_cable0', 'technic:rubber', 'technic:lv_cable0'}, - } -}) - -for tier, machines in pairs(technic.machines) do - technic.register_machine(tier, "technic:supply_converter", technic.producer_receiver) -end - diff --git a/technic/technic/machines/switching_station.lua b/technic/technic/machines/switching_station.lua deleted file mode 100644 index d6f23a3..0000000 --- a/technic/technic/machines/switching_station.lua +++ /dev/null @@ -1,404 +0,0 @@ --- SWITCHING STATION --- The switching station is the center of all power distribution on an electric network. --- --- The station collects power from sources (PR), distributes it to sinks (RE), --- and uses the excess/shortfall to charge and discharge batteries (BA). --- --- For now, all supply and demand values are expressed in kW. --- --- It works like this: --- All PR,BA,RE nodes are indexed and tagged with the switching station. --- The tagging is to allow more stations to be built without allowing a cheat --- with duplicating power. --- All the RE nodes are queried for their current EU demand. Those which are off --- would require no or a small standby EU demand, while those which are on would --- require more. --- If the total demand is less than the available power they are all updated with the --- demand number. --- If any surplus exists from the PR nodes the batteries will be charged evenly with this. --- If the total demand requires draw on the batteries they will be discharged evenly. --- --- If the total demand is more than the available power all RE nodes will be shut down. --- We have a brown-out situation. --- --- Hence all the power distribution logic resides in this single node. --- --- Nodes connected to the network will have one or more of these parameters as meta data: --- _EU_supply : Exists for PR and BA node types. This is the EU value supplied by the node. Output --- _EU_demand : Exists for RE and BA node types. This is the EU value the node requires to run. Output --- _EU_input : Exists for RE and BA node types. This is the actual EU value the network can give the node. Input --- --- The reason the LV|MV|HV type is prepended toe meta data is because some machine could require several supplies to work. --- This way the supplies are separated per network. - -technic.networks = {} - -local S = technic.getter - -minetest.register_craft({ - output = "technic:switching_station", - recipe = { - {"", "technic:lv_transformer", ""}, - {"default:copper_ingot", "technic:machine_casing", "default:copper_ingot"}, - {"technic:lv_cable0", "technic:lv_cable0", "technic:lv_cable0"} - } -}) - -minetest.register_node("technic:switching_station",{ - description = S("Switching Station"), - tiles = {"technic_water_mill_top_active.png", "technic_water_mill_top_active.png", - "technic_water_mill_top_active.png", "technic_water_mill_top_active.png", - "technic_water_mill_top_active.png", "technic_water_mill_top_active.png"}, - groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2}, - sounds = default.node_sound_wood_defaults(), - drawtype = "nodebox", - paramtype = "light", - node_box = { - type = "fixed", - fixed = {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, - }, - on_construct = function(pos) - local meta = minetest.get_meta(pos) - meta:set_string("infotext", S("Switching Station")) - meta:set_string("active", 1) - end, -}) - --------------------------------------------------- --- Functions to traverse the electrical network --------------------------------------------------- - --- Add a wire node to the LV/MV/HV network -local add_new_cable_node = function(nodes, pos) - -- Ignore if the node has already been added - for i = 1, #nodes do - if pos.x == nodes[i].x and - pos.y == nodes[i].y and - pos.z == nodes[i].z then - return false - end - end - table.insert(nodes, {x=pos.x, y=pos.y, z=pos.z, visited=1}) - return true -end - --- Generic function to add found connected nodes to the right classification array -local check_node_subp = function(PR_nodes, RE_nodes, BA_nodes, SP_nodes, all_nodes, pos, machines, tier, sw_pos, from_below) - technic.get_or_load_node(pos) - local meta = minetest.get_meta(pos) - local name = minetest.get_node(pos).name - - if technic.is_tier_cable(name, tier) then - add_new_cable_node(all_nodes, pos) - elseif machines[name] then - --dprint(name.." is a "..machines[name]) - if machines[name] == technic.producer then - add_new_cable_node(PR_nodes, pos) - elseif machines[name] == technic.receiver then - add_new_cable_node(RE_nodes, pos) - elseif machines[name] == technic.producer_receiver then - add_new_cable_node(PR_nodes, pos) - add_new_cable_node(RE_nodes, pos) - elseif machines[name] == "SPECIAL" and - (pos.x ~= sw_pos.x or pos.y ~= sw_pos.y or pos.z ~= sw_pos.z) and - from_below then - -- Another switching station -> disable it - add_new_cable_node(SP_nodes, pos) - meta:set_int("active", 0) - meta:set_string("active_pos", minetest.serialize(sw_pos)) - elseif machines[name] == technic.battery then - add_new_cable_node(BA_nodes, pos) - end - - meta:set_int(tier.."_EU_timeout", 2) -- Touch node - end -end - --- Traverse a network given a list of machines and a cable type name -local traverse_network = function(PR_nodes, RE_nodes, BA_nodes, SP_nodes, all_nodes, i, machines, tier, sw_pos) - local pos = all_nodes[i] - local positions = { - {x=pos.x+1, y=pos.y, z=pos.z}, - {x=pos.x-1, y=pos.y, z=pos.z}, - {x=pos.x, y=pos.y+1, z=pos.z}, - {x=pos.x, y=pos.y-1, z=pos.z}, - {x=pos.x, y=pos.y, z=pos.z+1}, - {x=pos.x, y=pos.y, z=pos.z-1}} - --print("ON") - for i, cur_pos in pairs(positions) do - check_node_subp(PR_nodes, RE_nodes, BA_nodes, SP_nodes, all_nodes, cur_pos, machines, tier, sw_pos, i == 3) - end -end - -local touch_nodes = function(list, tier) - for _, pos in ipairs(list) do - local meta = minetest.get_meta(pos) - meta:set_int(tier.."_EU_timeout", 2) -- Touch node - end -end - -local get_network = function(sw_pos, pos1, tier) - local cached = technic.networks[minetest.hash_node_position(pos1)] - if cached and cached.tier == tier then - touch_nodes(cached.PR_nodes, tier) - touch_nodes(cached.BA_nodes, tier) - touch_nodes(cached.RE_nodes, tier) - for _, pos in ipairs(cached.SP_nodes) do - local meta = minetest.get_meta(pos) - meta:set_int("active", 0) - meta:set_string("active_pos", minetest.serialize(sw_pos)) - end - return cached.PR_nodes, cached.BA_nodes, cached.RE_nodes - end - local i = 1 - local PR_nodes = {} - local BA_nodes = {} - local RE_nodes = {} - local SP_nodes = {} - local all_nodes = {pos1} - repeat - traverse_network(PR_nodes, RE_nodes, BA_nodes, SP_nodes, all_nodes, - i, technic.machines[tier], tier, sw_pos) - i = i + 1 - until all_nodes[i] == nil - technic.networks[minetest.hash_node_position(pos1)] = {tier = tier, PR_nodes = PR_nodes, - RE_nodes = RE_nodes, BA_nodes = BA_nodes, SP_nodes = SP_nodes} - return PR_nodes, BA_nodes, RE_nodes -end - ------------------------------------------------ --- The action code for the switching station -- ------------------------------------------------ -minetest.register_abm({ - nodenames = {"technic:switching_station"}, - label = "Switching Station", -- allows the mtt profiler to profile this abm individually - interval = 1, - chance = 1, - action = function(pos, node, active_object_count, active_object_count_wider) - local meta = minetest.get_meta(pos) - local meta1 = nil - local pos1 = {} - local PR_EU = 0 -- EUs from PR nodes - local BA_PR_EU = 0 -- EUs from BA nodes (discharching) - local BA_RE_EU = 0 -- EUs to BA nodes (charging) - local RE_EU = 0 -- EUs to RE nodes - - local tier = "" - local PR_nodes - local BA_nodes - local RE_nodes - local machine_name = S("Switching Station") - - if meta:get_int("active") ~= 1 then - meta:set_int("active", 1) - local active_pos = minetest.deserialize(meta:get_string("active_pos")) - if active_pos then - local meta1 = minetest.get_meta(active_pos) - meta:set_string("infotext", S("%s (Slave)"):format(meta1:get_string("infotext"))) - end - return - end - - -- Which kind of network are we on: - pos1 = {x=pos.x, y=pos.y-1, z=pos.z} - - local name = minetest.get_node(pos1).name - local tier = technic.get_cable_tier(name) - if tier then - PR_nodes, BA_nodes, RE_nodes = get_network(pos, pos1, tier) - else - --dprint("Not connected to a network") - meta:set_string("infotext", S("%s Has No Network"):format(machine_name)) - return - end - - -- Run all the nodes - local function run_nodes(list) - for _, pos2 in ipairs(list) do - technic.get_or_load_node(pos2) - local node2 = minetest.get_node(pos2) - local nodedef - if node2 and node2.name then - nodedef = minetest.registered_nodes[node2.name] - end - if nodedef and nodedef.technic_run then - nodedef.technic_run(pos2, node2) - end - end - end - - run_nodes(PR_nodes) - run_nodes(RE_nodes) - run_nodes(BA_nodes) - - -- Strings for the meta data - local eu_demand_str = tier.."_EU_demand" - local eu_input_str = tier.."_EU_input" - local eu_supply_str = tier.."_EU_supply" - - -- Distribute charge equally across multiple batteries. - local charge_total = 0 - local battery_count = 0 - - for n, pos1 in pairs(BA_nodes) do - meta1 = minetest.get_meta(pos1) - local charge = meta1:get_int("internal_EU_charge") - - if (meta1:get_int(eu_demand_str) ~= 0) then - charge_total = charge_total + charge - battery_count = battery_count + 1 - end - end - - local charge_distributed = math.floor(charge_total / battery_count) - - for n, pos1 in pairs(BA_nodes) do - meta1 = minetest.get_meta(pos1) - - if (meta1:get_int(eu_demand_str) ~= 0) then - meta1:set_int("internal_EU_charge", charge_distributed) - end - end - - -- Get all the power from the PR nodes - local PR_eu_supply = 0 -- Total power - for _, pos1 in pairs(PR_nodes) do - meta1 = minetest.get_meta(pos1) - PR_eu_supply = PR_eu_supply + meta1:get_int(eu_supply_str) - end - --dprint("Total PR supply:"..PR_eu_supply) - - -- Get all the demand from the RE nodes - local RE_eu_demand = 0 - for _, pos1 in pairs(RE_nodes) do - meta1 = minetest.get_meta(pos1) - RE_eu_demand = RE_eu_demand + meta1:get_int(eu_demand_str) - end - --dprint("Total RE demand:"..RE_eu_demand) - - -- Get all the power from the BA nodes - local BA_eu_supply = 0 - for _, pos1 in pairs(BA_nodes) do - meta1 = minetest.get_meta(pos1) - BA_eu_supply = BA_eu_supply + meta1:get_int(eu_supply_str) - end - --dprint("Total BA supply:"..BA_eu_supply) - - -- Get all the demand from the BA nodes - local BA_eu_demand = 0 - for _, pos1 in pairs(BA_nodes) do - meta1 = minetest.get_meta(pos1) - BA_eu_demand = BA_eu_demand + meta1:get_int(eu_demand_str) - end - --dprint("Total BA demand:"..BA_eu_demand) - - meta:set_string("infotext", - S("@1. Supply: @2 Demand: @3", - machine_name, technic.prettynum(PR_eu_supply), technic.prettynum(RE_eu_demand))) - - -- If the PR supply is enough for the RE demand supply them all - if PR_eu_supply >= RE_eu_demand then - --dprint("PR_eu_supply"..PR_eu_supply.." >= RE_eu_demand"..RE_eu_demand) - for _, pos1 in pairs(RE_nodes) do - meta1 = minetest.get_meta(pos1) - local eu_demand = meta1:get_int(eu_demand_str) - meta1:set_int(eu_input_str, eu_demand) - end - -- We have a surplus, so distribute the rest equally to the BA nodes - -- Let's calculate the factor of the demand - PR_eu_supply = PR_eu_supply - RE_eu_demand - local charge_factor = 0 -- Assume all batteries fully charged - if BA_eu_demand > 0 then - charge_factor = PR_eu_supply / BA_eu_demand - end - for n, pos1 in pairs(BA_nodes) do - meta1 = minetest.get_meta(pos1) - local eu_demand = meta1:get_int(eu_demand_str) - meta1:set_int(eu_input_str, math.floor(eu_demand * charge_factor)) - --dprint("Charging battery:"..math.floor(eu_demand*charge_factor)) - end - return - end - - -- If the PR supply is not enough for the RE demand we will discharge the batteries too - if PR_eu_supply + BA_eu_supply >= RE_eu_demand then - --dprint("PR_eu_supply "..PR_eu_supply.."+BA_eu_supply "..BA_eu_supply.." >= RE_eu_demand"..RE_eu_demand) - for _, pos1 in pairs(RE_nodes) do - meta1 = minetest.get_meta(pos1) - local eu_demand = meta1:get_int(eu_demand_str) - meta1:set_int(eu_input_str, eu_demand) - end - -- We have a deficit, so distribute to the BA nodes - -- Let's calculate the factor of the supply - local charge_factor = 0 -- Assume all batteries depleted - if BA_eu_supply > 0 then - charge_factor = (PR_eu_supply - RE_eu_demand) / BA_eu_supply - end - for n,pos1 in pairs(BA_nodes) do - meta1 = minetest.get_meta(pos1) - local eu_supply = meta1:get_int(eu_supply_str) - meta1:set_int(eu_input_str, math.floor(eu_supply * charge_factor)) - --dprint("Discharging battery:"..math.floor(eu_supply*charge_factor)) - end - return - end - - -- If the PR+BA supply is not enough for the RE demand: Power only the batteries - local charge_factor = 0 -- Assume all batteries fully charged - if BA_eu_demand > 0 then - charge_factor = PR_eu_supply / BA_eu_demand - end - for n, pos1 in pairs(BA_nodes) do - meta1 = minetest.get_meta(pos1) - local eu_demand = meta1:get_int(eu_demand_str) - meta1:set_int(eu_input_str, math.floor(eu_demand * charge_factor)) - end - for n, pos1 in pairs(RE_nodes) do - meta1 = minetest.get_meta(pos1) - meta1:set_int(eu_input_str, 0) - end - end, -}) - --- Timeout ABM --- Timeout for a node in case it was disconnected from the network --- A node must be touched by the station continuously in order to function -local function switching_station_timeout_count(pos, tier) - local meta = minetest.get_meta(pos) - local timeout = meta:get_int(tier.."_EU_timeout") - if timeout <= 0 then - meta:set_int(tier.."_EU_input", 0) -- Not needed anymore <-- actually, it is for supply converter - return true - else - meta:set_int(tier.."_EU_timeout", timeout - 1) - return false - end -end -minetest.register_abm({ - nodenames = {"group:technic_machine"}, - interval = 1, - chance = 1, - action = function(pos, node, active_object_count, active_object_count_wider) - for tier, machines in pairs(technic.machines) do - if machines[node.name] and switching_station_timeout_count(pos, tier) then - local nodedef = minetest.registered_nodes[node.name] - if nodedef and nodedef.technic_disabled_machine_name then - node.name = nodedef.technic_disabled_machine_name - minetest.swap_node(pos, node) - elseif nodedef and nodedef.technic_on_disable then - nodedef.technic_on_disable(pos, node) - end - if nodedef then - local meta = minetest.get_meta(pos) - meta:set_string("infotext", S("%s Has No Network"):format(nodedef.description)) - end - end - end - end, -}) - -for tier, machines in pairs(technic.machines) do - -- SPECIAL will not be traversed - technic.register_machine(tier, "technic:switching_station", "SPECIAL") -end - diff --git a/technic/technic/models/technic_cylinder.obj b/technic/technic/models/technic_cylinder.obj deleted file mode 100644 index 2622347..0000000 --- a/technic/technic/models/technic_cylinder.obj +++ /dev/null @@ -1,238 +0,0 @@ -# Blender v2.73 (sub 0) OBJ File: 'slope_test_cylinder_onetexture.blend' -# www.blender.org -o Cylinder_Cylinder.001 -v 0.000000 -0.500000 -0.500000 -v 0.000000 0.500000 -0.500000 -v 0.097545 -0.500000 -0.490393 -v 0.097545 0.500000 -0.490393 -v 0.191342 -0.500000 -0.461940 -v 0.191342 0.500000 -0.461940 -v 0.277785 -0.500000 -0.415735 -v 0.277785 0.500000 -0.415735 -v 0.353553 -0.500000 -0.353554 -v 0.353553 0.500000 -0.353554 -v 0.415735 -0.500000 -0.277785 -v 0.415735 0.500000 -0.277785 -v 0.461940 -0.500000 -0.191342 -v 0.461940 0.500000 -0.191342 -v 0.490393 -0.500000 -0.097545 -v 0.490393 0.500000 -0.097545 -v 0.500000 -0.500000 -0.000000 -v 0.500000 0.500000 -0.000000 -v 0.490393 -0.500000 0.097545 -v 0.490393 0.500000 0.097545 -v 0.461940 -0.500000 0.191341 -v 0.461940 0.500000 0.191341 -v 0.415735 -0.500000 0.277785 -v 0.415735 0.500000 0.277785 -v 0.353553 -0.500000 0.353553 -v 0.353553 0.500000 0.353553 -v 0.277785 -0.500000 0.415735 -v 0.277785 0.500000 0.415735 -v 0.191342 -0.500000 0.461940 -v 0.191342 0.500000 0.461940 -v 0.097545 -0.500000 0.490392 -v 0.097545 0.500000 0.490392 -v -0.000000 -0.500000 0.500000 -v -0.000000 0.500000 0.500000 -v -0.097545 -0.500000 0.490392 -v -0.097545 0.500000 0.490392 -v -0.191342 -0.500000 0.461939 -v -0.191342 0.500000 0.461939 -v -0.277785 -0.500000 0.415734 -v -0.277785 0.500000 0.415734 -v -0.353554 -0.500000 0.353553 -v -0.353554 0.500000 0.353553 -v -0.415735 -0.500000 0.277785 -v -0.415735 0.500000 0.277785 -v -0.461940 -0.500000 0.191341 -v -0.461940 0.500000 0.191341 -v -0.490393 -0.500000 0.097545 -v -0.490393 0.500000 0.097545 -v -0.500000 -0.500000 -0.000001 -v -0.500000 0.500000 -0.000001 -v -0.490393 -0.500000 -0.097546 -v -0.490393 0.500000 -0.097546 -v -0.461940 -0.500000 -0.191342 -v -0.461940 0.500000 -0.191342 -v -0.415734 -0.500000 -0.277786 -v -0.415734 0.500000 -0.277786 -v -0.353553 -0.500000 -0.353554 -v -0.353553 0.500000 -0.353554 -v -0.277785 -0.500000 -0.415735 -v -0.277785 0.500000 -0.415735 -v -0.191341 -0.500000 -0.461940 -v -0.191341 0.500000 -0.461940 -v -0.097544 -0.500000 -0.490393 -v -0.097544 0.500000 -0.490393 -vt 0.499996 0.999997 -vt 0.499995 0.000005 -vt 0.562495 0.000004 -vt 0.562496 0.999997 -vt 0.624995 0.000003 -vt 0.624997 0.999997 -vt 0.687496 0.000002 -vt 0.687497 0.999998 -vt 0.749997 0.000001 -vt 0.749997 0.999998 -vt 0.812497 0.000001 -vt 0.812497 0.999998 -vt 0.874997 -0.000000 -vt 0.874997 0.999998 -vt 0.937498 -0.000000 -vt 0.937498 0.999998 -vt 0.999998 -0.000000 -vt 0.999998 0.999998 -vt 0.000005 0.999997 -vt 0.000001 0.000024 -vt 0.062500 0.000023 -vt 0.062505 0.999996 -vt 0.124999 0.000021 -vt 0.125004 0.999996 -vt 0.187498 0.000020 -vt 0.187503 0.999995 -vt 0.249997 0.000018 -vt 0.250003 0.999994 -vt 0.312497 0.000017 -vt 0.312502 0.999994 -vt 0.374997 0.000015 -vt 0.375002 0.999993 -vt 0.437496 0.000014 -vt 0.437501 0.999993 -vt 0.402487 0.009601 -vt 0.597576 0.009614 -vt 0.691371 0.038072 -vt 0.777811 0.084282 -vt 0.853576 0.146469 -vt 0.915753 0.222242 -vt 0.961953 0.308689 -vt 0.990399 0.402487 -vt 1.000000 0.500033 -vt 0.990386 0.597577 -vt 0.961928 0.691370 -vt 0.915717 0.777811 -vt 0.853531 0.853575 -vt 0.777758 0.915753 -vt 0.691312 0.961952 -vt 0.597514 0.990398 -vt 0.402424 0.990386 -vt 0.308630 0.961928 -vt 0.222188 0.915717 -vt 0.146424 0.853531 -vt 0.084248 0.777759 -vt 0.038049 0.691313 -vt 0.009602 0.597515 -vt 0.000000 0.499970 -vt 0.009614 0.402425 -vt 0.038073 0.308630 -vt 0.084283 0.222189 -vt 0.146470 0.146424 -vt 0.222243 0.084248 -vt 0.308689 0.038048 -vt 0.499927 0.999999 -vt 0.084226 0.777725 -vt 0.000000 0.499927 -vt 0.222277 0.084224 -vt 0.500074 0.000000 -vt 0.915777 0.222279 -vt 1.000000 0.500077 -vt 0.777724 0.915775 -vn 0.000000 -0.685700 -0.727900 -vn 0.000000 0.685700 -0.727900 -vn 0.142000 0.685700 -0.713900 -vn 0.142000 -0.685700 -0.713900 -vn 0.278500 0.685700 -0.672500 -vn 0.278500 -0.685700 -0.672500 -vn 0.404400 0.685700 -0.605200 -vn 0.404400 -0.685700 -0.605200 -vn 0.514700 0.685700 -0.514700 -vn 0.514700 -0.685700 -0.514700 -vn 0.605200 0.685700 -0.404400 -vn 0.605200 -0.685700 -0.404400 -vn 0.672500 0.685700 -0.278500 -vn 0.672500 -0.685700 -0.278500 -vn 0.713900 0.685700 -0.142000 -vn 0.713900 -0.685700 -0.142000 -vn 0.727900 0.685700 0.000000 -vn 0.727900 -0.685700 0.000000 -vn 0.713900 0.685700 0.142000 -vn 0.713900 -0.685700 0.142000 -vn 0.672500 0.685700 0.278500 -vn 0.672500 -0.685700 0.278500 -vn 0.605200 0.685700 0.404400 -vn 0.605200 -0.685700 0.404400 -vn 0.514700 0.685700 0.514700 -vn 0.514700 -0.685700 0.514700 -vn 0.404400 0.685700 0.605200 -vn 0.404400 -0.685700 0.605200 -vn 0.278500 0.685700 0.672500 -vn 0.278500 -0.685700 0.672500 -vn 0.142000 0.685700 0.713900 -vn 0.142000 -0.685700 0.713900 -vn 0.000000 0.685700 0.727900 -vn 0.000000 -0.685700 0.727900 -vn -0.142000 0.685700 0.713900 -vn -0.142000 -0.685700 0.713900 -vn -0.278500 0.685700 0.672500 -vn -0.278500 -0.685700 0.672500 -vn -0.404400 0.685700 0.605200 -vn -0.404400 -0.685700 0.605200 -vn -0.514700 0.685700 0.514700 -vn -0.514700 -0.685700 0.514700 -vn -0.605200 0.685700 0.404400 -vn -0.605200 -0.685700 0.404400 -vn -0.672500 0.685700 0.278500 -vn -0.672500 -0.685700 0.278500 -vn -0.713900 0.685700 0.142000 -vn -0.713900 -0.685700 0.142000 -vn -0.727900 0.685700 0.000000 -vn -0.727900 -0.685700 0.000000 -vn -0.713900 0.685700 -0.142000 -vn -0.713900 -0.685700 -0.142000 -vn -0.672500 0.685700 -0.278500 -vn -0.672500 -0.685700 -0.278500 -vn -0.605200 0.685700 -0.404400 -vn -0.605200 -0.685700 -0.404400 -vn -0.514700 0.685700 -0.514700 -vn -0.514700 -0.685700 -0.514700 -vn -0.404400 0.685700 -0.605200 -vn -0.404400 -0.685700 -0.605200 -vn -0.278500 0.685700 -0.672500 -vn -0.278500 -0.685700 -0.672500 -vn -0.142000 0.685700 -0.713900 -vn -0.142000 -0.685700 -0.713900 -s 1 -f 1/1/1 2/2/2 4/3/3 3/4/4 -f 3/4/4 4/3/3 6/5/5 5/6/6 -f 5/6/6 6/5/5 8/7/7 7/8/8 -f 7/8/8 8/7/7 10/9/9 9/10/10 -f 9/10/10 10/9/9 12/11/11 11/12/12 -f 11/12/12 12/11/11 14/13/13 13/14/14 -f 13/14/14 14/13/13 16/15/15 15/16/16 -f 15/16/16 16/15/15 18/17/17 17/18/18 -f 17/19/18 18/20/17 20/21/19 19/22/20 -f 19/22/20 20/21/19 22/23/21 21/24/22 -f 21/24/22 22/23/21 24/25/23 23/26/24 -f 23/26/24 24/25/23 26/27/25 25/28/26 -f 25/28/26 26/27/25 28/29/27 27/30/28 -f 27/30/28 28/29/27 30/31/29 29/32/30 -f 29/32/30 30/31/29 32/33/31 31/34/32 -f 31/34/32 32/33/31 34/2/33 33/1/34 -f 33/1/34 34/2/33 36/3/35 35/4/36 -f 35/4/36 36/3/35 38/5/37 37/6/38 -f 37/6/38 38/5/37 40/7/39 39/8/40 -f 39/8/40 40/7/39 42/9/41 41/10/42 -f 41/10/42 42/9/41 44/11/43 43/12/44 -f 43/12/44 44/11/43 46/13/45 45/14/46 -f 45/14/46 46/13/45 48/15/47 47/16/48 -f 47/16/48 48/15/47 50/17/49 49/18/50 -f 49/19/50 50/20/49 52/21/51 51/22/52 -f 51/22/52 52/21/51 54/23/53 53/24/54 -f 53/24/54 54/23/53 56/25/55 55/26/56 -f 55/26/56 56/25/55 58/27/57 57/28/58 -f 57/28/58 58/27/57 60/29/59 59/30/60 -f 59/30/60 60/29/59 62/31/61 61/32/62 -f 4/35/3 2/2/2 64/36/63 62/37/61 60/38/59 58/39/57 56/40/55 54/41/53 52/42/51 50/43/49 48/44/47 46/45/45 44/46/43 42/47/41 40/48/39 38/49/37 36/50/35 34/1/33 32/51/31 30/52/29 28/53/27 26/54/25 24/55/23 22/56/21 20/57/19 18/58/17 16/59/15 14/60/13 12/61/11 10/62/9 8/63/7 6/64/5 -f 63/34/64 64/33/63 2/2/2 1/1/1 -f 61/32/62 62/31/61 64/33/63 63/34/64 -f 1/65/1 3/51/4 5/52/6 7/53/8 9/54/10 11/66/12 13/56/14 15/57/16 17/67/18 19/59/20 21/60/22 23/61/24 25/62/26 27/68/28 29/64/30 31/35/32 33/69/34 35/36/36 37/37/38 39/38/40 41/39/42 43/70/44 45/41/46 47/42/48 49/71/50 51/44/52 53/45/54 55/46/56 57/47/58 59/72/60 61/49/62 63/50/64 diff --git a/technic/technic/models/technic_cylinder_horizontal.obj b/technic/technic/models/technic_cylinder_horizontal.obj deleted file mode 100644 index d00b1d6..0000000 --- a/technic/technic/models/technic_cylinder_horizontal.obj +++ /dev/null @@ -1,238 +0,0 @@ -# Blender v2.73 (sub 0) OBJ File: 'technic-cylinder-horizontal.blend' -# www.blender.org -o Cylinder_Cylinder.001 -v 0.500000 0.000000 -0.500000 -v -0.500000 0.000000 -0.500000 -v 0.500000 0.097545 -0.490393 -v -0.500000 0.097545 -0.490393 -v 0.500000 0.191342 -0.461940 -v -0.500000 0.191342 -0.461940 -v 0.500000 0.277785 -0.415735 -v -0.500000 0.277785 -0.415735 -v 0.500000 0.353553 -0.353553 -v -0.500000 0.353553 -0.353554 -v 0.500000 0.415735 -0.277785 -v -0.500000 0.415735 -0.277785 -v 0.500000 0.461940 -0.191342 -v -0.500000 0.461940 -0.191342 -v 0.500000 0.490393 -0.097545 -v -0.500000 0.490393 -0.097545 -v 0.500000 0.500000 -0.000000 -v -0.500000 0.500000 -0.000000 -v 0.500000 0.490393 0.097545 -v -0.500000 0.490393 0.097545 -v 0.500000 0.461940 0.191342 -v -0.500000 0.461940 0.191341 -v 0.500000 0.415735 0.277785 -v -0.500000 0.415735 0.277785 -v 0.500000 0.353553 0.353553 -v -0.500000 0.353553 0.353553 -v 0.500000 0.277785 0.415735 -v -0.500000 0.277785 0.415735 -v 0.500000 0.191342 0.461940 -v -0.500000 0.191342 0.461940 -v 0.500000 0.097545 0.490393 -v -0.500000 0.097545 0.490392 -v 0.500000 -0.000000 0.500000 -v -0.500000 -0.000000 0.500000 -v 0.500000 -0.097546 0.490392 -v -0.500000 -0.097545 0.490392 -v 0.500000 -0.191342 0.461940 -v -0.500000 -0.191342 0.461939 -v 0.500000 -0.277785 0.415734 -v -0.500000 -0.277785 0.415734 -v 0.500000 -0.353554 0.353553 -v -0.500000 -0.353554 0.353553 -v 0.500000 -0.415735 0.277785 -v -0.500000 -0.415735 0.277785 -v 0.500000 -0.461940 0.191341 -v -0.500000 -0.461940 0.191341 -v 0.500000 -0.490393 0.097545 -v -0.500000 -0.490393 0.097544 -v 0.500000 -0.500000 -0.000001 -v -0.500000 -0.500000 -0.000001 -v 0.500000 -0.490393 -0.097546 -v -0.500000 -0.490393 -0.097546 -v 0.500000 -0.461940 -0.191342 -v -0.500000 -0.461940 -0.191343 -v 0.500000 -0.415734 -0.277786 -v -0.500000 -0.415734 -0.277786 -v 0.500000 -0.353553 -0.353554 -v -0.500000 -0.353553 -0.353554 -v 0.500000 -0.277785 -0.415735 -v -0.500000 -0.277784 -0.415735 -v 0.500000 -0.191341 -0.461940 -v -0.500000 -0.191341 -0.461940 -v 0.500000 -0.097544 -0.490393 -v -0.500000 -0.097544 -0.490393 -vt 0.000003 0.499996 -vt 0.999995 0.499995 -vt 0.999996 0.562495 -vt 0.000002 0.562496 -vt 0.999997 0.624995 -vt 0.000003 0.624996 -vt 0.999998 0.687496 -vt 0.000002 0.687496 -vt 0.999999 0.749997 -vt 0.000002 0.749996 -vt 0.999999 0.812497 -vt 0.000002 0.812497 -vt 1.000000 0.874997 -vt 0.000001 0.874997 -vt 1.000000 0.937498 -vt 0.000001 0.937497 -vt 1.000000 0.999998 -vt 0.000001 0.999998 -vt 0.000003 0.000005 -vt 0.999976 0.000001 -vt 0.999977 0.062500 -vt 0.000003 0.062505 -vt 0.999978 0.124999 -vt 0.000004 0.125004 -vt 0.999980 0.187498 -vt 0.000005 0.187503 -vt 0.999982 0.249997 -vt 0.000005 0.250003 -vt 0.999983 0.312497 -vt 0.000006 0.312502 -vt 0.999985 0.374997 -vt 0.000007 0.375001 -vt 0.999986 0.437496 -vt 0.000007 0.437501 -vt 0.009601 0.597512 -vt 0.009614 0.402424 -vt 0.038072 0.308628 -vt 0.084283 0.222189 -vt 0.146469 0.146424 -vt 0.222242 0.084247 -vt 0.308689 0.038047 -vt 0.402487 0.009601 -vt 0.500033 -0.000000 -vt 0.597577 0.009613 -vt 0.691371 0.038072 -vt 0.777811 0.084283 -vt 0.853575 0.146469 -vt 0.915753 0.222242 -vt 0.961952 0.308688 -vt 0.990398 0.402486 -vt 0.990386 0.597576 -vt 0.961928 0.691370 -vt 0.915717 0.777812 -vt 0.853531 0.853576 -vt 0.777759 0.915752 -vt 0.691313 0.961951 -vt 0.597515 0.990398 -vt 0.499970 1.000000 -vt 0.402425 0.990386 -vt 0.308630 0.961927 -vt 0.222189 0.915717 -vt 0.146424 0.853530 -vt 0.084248 0.777757 -vt 0.038048 0.691311 -vt 0.999999 0.500073 -vt 0.777724 0.915774 -vt 0.499927 0.999999 -vt 0.084224 0.777723 -vt 0.000000 0.499925 -vt 0.222279 0.084223 -vt 0.500078 -0.000000 -vt 0.915775 0.222276 -vn 0.685700 0.000000 -0.727900 -vn -0.685700 0.000000 -0.727900 -vn -0.685700 0.142000 -0.713900 -vn 0.685700 0.142000 -0.713900 -vn -0.685700 0.278500 -0.672500 -vn 0.685700 0.278500 -0.672500 -vn -0.685700 0.404400 -0.605200 -vn 0.685700 0.404400 -0.605200 -vn -0.685700 0.514700 -0.514700 -vn 0.685700 0.514700 -0.514700 -vn -0.685700 0.605200 -0.404400 -vn 0.685700 0.605200 -0.404400 -vn -0.685700 0.672500 -0.278500 -vn 0.685700 0.672500 -0.278500 -vn -0.685700 0.713900 -0.142000 -vn 0.685700 0.713900 -0.142000 -vn -0.685700 0.727900 0.000000 -vn 0.685700 0.727900 0.000000 -vn -0.685700 0.713900 0.142000 -vn 0.685700 0.713900 0.142000 -vn -0.685700 0.672500 0.278500 -vn 0.685700 0.672500 0.278500 -vn -0.685700 0.605200 0.404400 -vn 0.685700 0.605200 0.404400 -vn -0.685700 0.514700 0.514700 -vn 0.685700 0.514700 0.514700 -vn -0.685700 0.404400 0.605200 -vn 0.685700 0.404400 0.605200 -vn -0.685700 0.278500 0.672500 -vn 0.685700 0.278500 0.672500 -vn -0.685700 0.142000 0.713900 -vn 0.685700 0.142000 0.713900 -vn -0.685700 0.000000 0.727900 -vn 0.685700 0.000000 0.727900 -vn -0.685700 -0.142000 0.713900 -vn 0.685700 -0.142000 0.713900 -vn -0.685700 -0.278500 0.672500 -vn 0.685700 -0.278500 0.672500 -vn -0.685700 -0.404400 0.605200 -vn 0.685700 -0.404400 0.605200 -vn -0.685700 -0.514700 0.514700 -vn 0.685700 -0.514700 0.514700 -vn -0.685700 -0.605200 0.404400 -vn 0.685700 -0.605200 0.404400 -vn -0.685700 -0.672500 0.278500 -vn 0.685700 -0.672500 0.278500 -vn -0.685700 -0.713900 0.142000 -vn 0.685700 -0.713900 0.142000 -vn -0.685700 -0.727900 0.000000 -vn 0.685700 -0.727900 0.000000 -vn -0.685700 -0.713900 -0.142000 -vn 0.685700 -0.713900 -0.142000 -vn -0.685700 -0.672500 -0.278500 -vn 0.685700 -0.672500 -0.278500 -vn -0.685700 -0.605200 -0.404400 -vn 0.685700 -0.605200 -0.404400 -vn -0.685700 -0.514700 -0.514700 -vn 0.685700 -0.514700 -0.514700 -vn -0.685700 -0.404400 -0.605200 -vn 0.685700 -0.404400 -0.605200 -vn -0.685700 -0.278500 -0.672500 -vn 0.685700 -0.278500 -0.672500 -vn -0.685700 -0.142000 -0.713900 -vn 0.685700 -0.142000 -0.713900 -s 1 -f 1/1/1 2/2/2 4/3/3 3/4/4 -f 3/4/4 4/3/3 6/5/5 5/6/6 -f 5/6/6 6/5/5 8/7/7 7/8/8 -f 7/8/8 8/7/7 10/9/9 9/10/10 -f 9/10/10 10/9/9 12/11/11 11/12/12 -f 11/12/12 12/11/11 14/13/13 13/14/14 -f 13/14/14 14/13/13 16/15/15 15/16/16 -f 15/16/16 16/15/15 18/17/17 17/18/18 -f 17/19/18 18/20/17 20/21/19 19/22/20 -f 19/22/20 20/21/19 22/23/21 21/24/22 -f 21/24/22 22/23/21 24/25/23 23/26/24 -f 23/26/24 24/25/23 26/27/25 25/28/26 -f 25/28/26 26/27/25 28/29/27 27/30/28 -f 27/30/28 28/29/27 30/31/29 29/32/30 -f 29/32/30 30/31/29 32/33/31 31/34/32 -f 31/34/32 32/33/31 34/2/33 33/1/34 -f 33/1/34 34/2/33 36/3/35 35/4/36 -f 35/4/36 36/3/35 38/5/37 37/6/38 -f 37/6/38 38/5/37 40/7/39 39/8/40 -f 39/8/40 40/7/39 42/9/41 41/10/42 -f 41/10/42 42/9/41 44/11/43 43/12/44 -f 43/12/44 44/11/43 46/13/45 45/14/46 -f 45/14/46 46/13/45 48/15/47 47/16/48 -f 47/16/48 48/15/47 50/17/49 49/18/50 -f 49/19/50 50/20/49 52/21/51 51/22/52 -f 51/22/52 52/21/51 54/23/53 53/24/54 -f 53/24/54 54/23/53 56/25/55 55/26/56 -f 55/26/56 56/25/55 58/27/57 57/28/58 -f 57/28/58 58/27/57 60/29/59 59/30/60 -f 59/30/60 60/29/59 62/31/61 61/32/62 -f 4/35/3 2/1/2 64/36/63 62/37/61 60/38/59 58/39/57 56/40/55 54/41/53 52/42/51 50/43/49 48/44/47 46/45/45 44/46/43 42/47/41 40/48/39 38/49/37 36/50/35 34/2/33 32/51/31 30/52/29 28/53/27 26/54/25 24/55/23 22/56/21 20/57/19 18/58/17 16/59/15 14/60/13 12/61/11 10/62/9 8/63/7 6/64/5 -f 63/34/64 64/33/63 2/2/2 1/1/1 -f 61/32/62 62/31/61 64/33/63 63/34/64 -f 1/65/1 3/51/4 5/52/6 7/53/8 9/54/10 11/66/12 13/56/14 15/57/16 17/67/18 19/59/20 21/60/22 23/61/24 25/62/26 27/68/28 29/64/30 31/35/32 33/69/34 35/36/36 37/37/38 39/38/40 41/39/42 43/70/44 45/41/46 47/42/48 49/71/50 51/44/52 53/45/54 55/46/56 57/47/58 59/72/60 61/49/62 63/50/64 diff --git a/technic/technic/models/technic_innercorner.obj b/technic/technic/models/technic_innercorner.obj deleted file mode 100644 index c962aeb..0000000 --- a/technic/technic/models/technic_innercorner.obj +++ /dev/null @@ -1,33 +0,0 @@ -# Blender v2.73 (sub 0) OBJ File: 'technic-icorner.blend' -# www.blender.org -o Cube_Cube.000 -v -0.500000 0.500000 0.500000 -v -0.500000 0.500000 -0.500000 -v -0.500000 -0.500000 -0.500000 -v -0.500000 -0.500000 0.500000 -v 0.500000 -0.500000 -0.500000 -v 0.500000 0.500000 0.500000 -v -0.500000 -0.500000 0.500000 -v 0.500000 -0.500000 0.500000 -v 0.500000 -0.500000 -0.500000 -vt 1.000000 1.000000 -vt 0.000000 1.000000 -vt 0.000000 0.000000 -vt 1.000000 0.000000 -vn -0.000000 -0.000000 1.000000 -vn -0.000000 -0.000000 -1.000000 -vn 0.707100 0.707100 -0.000000 -vn 1.000000 0.000000 -0.000000 -vn 0.000000 -1.000000 -0.000000 -vn -1.000000 -0.000000 -0.000000 -vn 0.000000 0.707100 -0.707100 -s off -f 6/1/1 1/2/1 7/3/1 8/4/1 -f 2/1/2 5/3/2 3/4/2 -f 2/1/3 1/2/3 5/4/3 -f 6/2/4 8/3/4 9/4/4 -f 9/1/5 8/2/5 7/3/5 3/4/5 -f 3/3/6 7/4/6 1/1/6 2/2/6 -f 1/1/7 6/2/7 9/3/7 -l 1 4 -l 3 4 diff --git a/technic/technic/models/technic_innercorner_upsdown.obj b/technic/technic/models/technic_innercorner_upsdown.obj deleted file mode 100644 index 68eb560..0000000 --- a/technic/technic/models/technic_innercorner_upsdown.obj +++ /dev/null @@ -1,33 +0,0 @@ -# Blender v2.73 (sub 0) OBJ File: 'technic-icorner-upsdown.blend' -# www.blender.org -o Cube_Cube.000 -v -0.500000 -0.500000 0.500000 -v 0.500000 -0.500000 0.500000 -v 0.500000 0.500000 0.500000 -v -0.500000 0.500000 0.500000 -v 0.500000 0.500000 -0.500000 -v -0.500000 -0.500000 -0.500000 -v -0.500000 0.500000 0.500000 -v -0.500000 0.500000 -0.500000 -v 0.500000 0.500000 -0.500000 -vt 0.000000 0.000000 -vt 1.000000 0.000000 -vt 1.000000 1.000000 -vt 0.000000 1.000000 -vn -1.000000 0.000000 0.000000 -vn 1.000000 -0.000000 0.000000 -vn -0.000000 -0.707100 -0.707100 -vn -0.000000 0.000000 -1.000000 -vn 0.000000 1.000000 0.000000 -vn 0.000000 -0.000000 1.000000 -vn 0.707100 -0.707100 -0.000000 -s off -f 6/1/1 1/2/1 7/3/1 8/4/1 -f 2/1/2 5/3/2 3/4/2 -f 2/1/3 1/2/3 5/4/3 -f 6/2/4 8/3/4 9/4/4 -f 9/1/5 8/2/5 7/3/5 3/4/5 -f 3/3/6 7/4/6 1/1/6 2/2/6 -f 1/1/7 6/2/7 9/3/7 -l 1 4 -l 3 4 diff --git a/technic/technic/models/technic_oblate_spheroid.obj b/technic/technic/models/technic_oblate_spheroid.obj deleted file mode 100644 index e949f5b..0000000 --- a/technic/technic/models/technic_oblate_spheroid.obj +++ /dev/null @@ -1,300 +0,0 @@ -# Blender v2.73 (sub 0) OBJ File: 'slope_test_blob_onetexture.blend' -# www.blender.org -o Cube -v 0.213679 -0.450000 -0.213679 -v -0.213679 -0.450000 0.213680 -v 0.213680 -0.450000 0.213680 -v -0.213679 -0.450000 -0.213679 -v 0.213679 0.450000 -0.213679 -v -0.213679 0.450000 -0.213679 -v 0.213679 0.450000 0.213680 -v 0.500000 -0.000003 0.500000 -v 0.277785 -0.415735 0.277785 -v -0.277785 -0.415735 0.277785 -v 0.353553 -0.353554 0.353553 -v -0.353553 -0.353554 0.353553 -v -0.500000 -0.000002 0.500000 -v 0.415735 -0.277786 0.415735 -v -0.277785 0.415735 0.277785 -v 0.277785 0.415735 0.277785 -v -0.415735 -0.277785 0.415735 -v 0.353554 0.353553 0.353554 -v -0.500000 -0.000002 -0.499983 -v 0.461940 -0.191342 0.461940 -v -0.461940 -0.191342 0.461940 -v -0.353553 0.353553 0.353554 -v 0.490393 -0.097546 0.490393 -v 0.500000 -0.000002 -0.500000 -v 0.490393 0.097545 -0.490392 -v 0.490393 0.097545 0.490393 -v -0.490393 -0.097546 0.490393 -v 0.490393 -0.097545 -0.490393 -v 0.461940 0.191341 0.461940 -v -0.461940 0.191341 0.461940 -v 0.461940 0.191342 -0.461940 -v -0.490393 0.097545 0.490393 -v 0.415735 0.277785 0.415735 -v -0.490393 0.097545 -0.490392 -v -0.415735 0.277785 0.415735 -v 0.461940 -0.191341 -0.461940 -v 0.415735 0.277785 -0.415735 -v -0.461940 0.191341 -0.461940 -v -0.415735 0.277785 -0.415735 -v 0.415735 -0.277785 -0.415735 -v -0.490393 -0.097546 -0.490392 -v 0.353553 0.353553 -0.353553 -v -0.213679 0.450000 0.213680 -v -0.353553 0.353553 -0.353553 -v 0.277785 0.415735 -0.277785 -v -0.461940 -0.191342 -0.461939 -v 0.353554 -0.353553 -0.353554 -v -0.277785 0.415735 -0.277785 -v -0.415735 -0.277785 -0.415734 -v 0.277786 -0.415735 -0.277785 -v -0.353553 -0.353554 -0.353553 -v -0.277785 -0.415735 -0.277784 -vt 0.038487 0.679029 -vt 0.010047 0.589789 -vt 0.990397 0.589790 -vt 0.915772 0.767073 -vt 0.084671 0.767071 -vt 0.961957 0.679029 -vt 0.852473 0.146294 -vt 0.914576 0.232749 -vt 0.084146 0.232744 -vt 0.712776 0.000003 -vt 0.221926 0.061588 -vt 0.285951 0.000000 -vt 0.285945 0.999818 -vt 0.221920 0.938229 -vt 0.712771 0.999818 -vt 0.009578 0.589789 -vt 0.989138 0.589792 -vt 0.960721 0.679031 -vt 0.286638 0.000000 -vt 0.777884 0.061589 -vt 0.222561 0.061589 -vt 0.777608 0.938229 -vt 0.222164 0.938229 -vt 0.146413 0.853527 -vt 0.286255 0.999818 -vt 0.713517 0.999818 -vt 0.776800 0.061592 -vt 0.146251 0.146290 -vt 0.000000 0.499907 -vt 0.989139 0.410032 -vt 0.998734 0.499910 -vt 0.853618 0.146291 -vt 0.915772 0.232746 -vt 0.146826 0.146290 -vt 0.961957 0.320789 -vt 0.084672 0.232745 -vt 0.990397 0.410029 -vt 0.038487 0.320789 -vt 0.776796 0.938230 -vt 0.777790 0.938229 -vt 0.146467 0.853526 -vt 0.853556 0.853527 -vt 0.146825 0.853526 -vt 1.000000 0.499907 -vt 0.010047 0.410028 -vt 0.146246 0.853527 -vt 0.222559 0.938228 -vt 0.777882 0.938230 -vt 0.915737 0.767073 -vt 0.084287 0.767072 -vt 0.038083 0.679029 -vt 0.961941 0.679029 -vt 0.037995 0.679029 -vt 0.960723 0.320792 -vt 0.037998 0.320787 -vt 0.009580 0.410028 -vt 0.990167 0.589790 -vt 0.999772 0.499909 -vt 0.961721 0.679029 -vt 0.084246 0.767072 -vt 0.915526 0.767072 -vt 0.853359 0.853527 -vt 0.914573 0.767074 -vt 0.084142 0.767072 -vt 0.852470 0.853528 -vt 0.777609 0.061590 -vt 0.853360 0.146293 -vt 0.222166 0.061589 -vt 0.146414 0.146291 -vt 0.915527 0.232748 -vt 0.084247 0.232746 -vt 0.961721 0.320791 -vt 0.038052 0.320789 -vt 0.990167 0.410031 -vt 0.713686 0.999818 -vt 0.749950 0.250050 -vt 0.749950 0.749950 -vt 0.250050 0.749950 -vt 0.250050 0.250050 -vt 0.713807 0.000000 -vt 0.286258 0.000000 -vt 0.713519 0.000001 -vt 0.250050 0.250050 -vt 0.749950 0.250050 -vt 0.749950 0.749950 -vt 0.286636 0.999817 -vt 0.777791 0.061589 -vt 0.146467 0.146291 -vt 0.084287 0.232745 -vt 0.915737 0.232746 -vt 0.961941 0.320789 -vt 0.000444 0.499907 -vt 0.713687 0.000000 -vt 0.713805 0.999818 -vn -0.620400 0.479600 0.620400 -vn -0.683900 0.254100 0.683900 -vn 0.683900 0.254100 0.683900 -vn 0.531000 0.660300 0.531000 -vn -0.531000 0.660300 0.531000 -vn 0.620400 0.479600 0.620400 -vn -0.429700 -0.794100 0.429700 -vn -0.531000 -0.660300 0.531000 -vn -0.531000 -0.660300 -0.531000 -vn -0.185700 -0.964900 0.185700 -vn -0.325800 -0.887500 -0.325800 -vn -0.185700 -0.964900 -0.185700 -vn -0.185700 0.964900 -0.185700 -vn -0.325800 0.887500 -0.325800 -vn -0.185700 0.964900 0.185700 -vn -0.683900 0.254000 -0.683900 -vn 0.325800 -0.887500 0.325800 -vn -0.325800 -0.887500 0.325800 -vn 0.325800 0.887500 -0.325800 -vn 0.429700 0.794100 -0.429700 -vn 0.185700 0.964900 -0.185700 -vn -0.429700 -0.794100 -0.429700 -vn -0.707100 0.000000 -0.707100 -vn -0.683900 -0.254100 0.683900 -vn -0.707100 0.000000 0.707100 -vn 0.429700 -0.794100 0.429700 -vn 0.531000 -0.660300 0.531000 -vn 0.620400 -0.479600 0.620400 -vn 0.683900 -0.254100 0.683900 -vn -0.620400 -0.479600 0.620400 -vn -0.325800 0.887500 0.325800 -vn 0.185700 0.964900 0.185700 -vn 0.325800 0.887500 0.325800 -vn 0.429700 0.794100 0.429700 -vn -0.429700 0.794100 0.429700 -vn 0.707100 0.000000 0.707100 -vn -0.429700 0.794100 -0.429700 -vn 0.531000 0.660300 -0.531000 -vn 0.683900 0.254100 -0.683900 -vn 0.707100 0.000000 -0.707100 -vn 0.620400 0.479600 -0.620400 -vn -0.620400 0.479600 -0.620400 -vn -0.620400 -0.479600 -0.620400 -vn -0.683900 -0.254000 -0.683900 -vn 0.683900 -0.254100 -0.683900 -vn -0.531000 0.660300 -0.531000 -vn 0.325800 -0.887500 -0.325800 -vn 0.429700 -0.794100 -0.429700 -vn 0.531000 -0.660300 -0.531000 -vn 0.620400 -0.479600 -0.620400 -vn 0.185700 -0.964900 -0.185700 -vn 0.185700 -0.964900 0.185700 -s 1 -f 30/1/1 32/2/2 26/3/3 -f 33/4/4 35/5/5 29/6/6 -f 12/7/7 17/8/8 49/9/9 -f 2/10/10 52/11/11 4/12/12 -f 6/13/13 48/14/14 43/15/15 -f 34/16/16 32/17/2 30/18/1 -f 2/19/10 9/20/17 10/21/18 -f 48/22/14 45/23/19 42/24/20 -f 5/25/21 45/23/19 6/26/13 -f 10/27/18 12/7/7 51/28/22 -f 19/29/23 27/30/24 13/31/25 -f 9/20/17 11/32/26 10/21/18 -f 11/32/26 14/33/27 12/34/7 -f 14/33/27 20/35/28 17/36/8 -f 20/35/28 23/37/29 21/38/30 -f 43/15/15 48/14/14 15/39/31 -f 7/25/32 16/23/33 45/40/19 -f 18/41/34 42/42/20 45/40/19 -f 29/6/6 30/1/1 26/3/3 -f 22/43/35 33/4/4 18/42/34 -f 26/3/3 32/2/2 8/44/36 -f 8/44/36 27/45/24 23/37/29 -f 11/32/26 12/34/7 10/21/18 -f 14/33/27 17/36/8 12/34/7 -f 20/35/28 21/38/30 17/36/8 -f 23/37/29 27/45/24 21/38/30 -f 10/27/18 52/11/11 2/10/10 -f 15/39/31 48/14/14 44/46/37 -f 22/43/35 35/5/5 33/4/4 -f 15/47/31 22/43/35 16/48/33 -f 37/49/38 42/42/20 18/41/34 -f 33/50/4 29/51/6 37/49/38 -f 8/29/36 25/3/39 26/16/3 -f 24/44/40 25/3/39 8/29/36 -f 29/51/6 26/16/3 31/52/41 -f 26/16/3 25/3/39 31/52/41 -f 29/51/6 31/52/41 37/49/38 -f 38/53/42 34/16/16 30/18/1 -f 19/29/23 32/17/2 34/16/16 -f 13/31/25 32/17/2 19/29/23 -f 17/8/8 21/54/30 46/55/43 -f 21/54/30 27/30/24 41/56/44 -f 8/29/36 28/37/45 24/44/40 -f 34/57/16 25/16/39 19/58/23 -f 38/59/42 31/51/41 34/57/16 -f 31/51/41 25/16/39 34/57/16 -f 37/60/38 38/59/42 39/61/46 -f 37/60/38 31/51/41 38/59/42 -f 44/62/37 42/24/20 37/60/38 -f 38/53/42 30/18/1 35/63/5 -f 39/64/46 35/63/5 22/65/35 -f 52/66/11 51/67/22 50/68/47 -f 51/67/22 47/69/48 50/68/47 -f 51/67/22 49/70/9 47/69/48 -f 49/70/9 40/71/49 47/69/48 -f 49/70/9 46/72/43 40/71/49 -f 46/72/43 36/73/50 40/71/49 -f 19/58/23 28/56/45 41/74/44 -f 46/72/43 41/74/44 36/73/50 -f 41/74/44 28/56/45 36/73/50 -f 22/43/35 18/42/34 16/48/33 -f 5/75/21 7/25/32 45/40/19 -f 2/76/10 4/77/12 1/78/51 3/79/52 -f 44/62/37 48/22/14 42/24/20 -f 35/5/5 30/1/1 29/6/6 -f 3/80/52 9/20/17 2/19/10 -f 45/23/19 48/22/14 6/26/13 -f 1/81/51 52/66/11 50/68/47 -f 39/61/46 44/62/37 37/60/38 -f 52/66/11 1/81/51 4/82/12 -f 24/29/40 28/56/45 19/58/23 -f 7/78/32 5/83/21 6/84/13 43/85/15 -f 24/29/40 19/58/23 25/16/39 -f 15/47/31 16/48/33 43/86/15 -f 22/65/35 44/46/37 39/64/46 -f 39/64/46 38/53/42 35/63/5 -f 41/56/44 27/30/24 19/29/23 -f 46/55/43 21/54/30 41/56/44 -f 49/9/9 17/8/8 46/55/43 -f 51/28/22 12/7/7 49/9/9 -f 52/11/11 10/27/18 51/28/22 -f 9/68/17 50/87/47 11/88/26 -f 50/87/47 47/32/48 11/88/26 -f 11/88/26 47/32/48 14/89/27 -f 47/32/48 40/90/49 14/89/27 -f 14/89/27 40/90/49 20/73/28 -f 40/90/49 36/91/50 20/73/28 -f 23/56/29 28/37/45 8/29/36 -f 20/73/28 36/91/50 23/56/29 -f 36/91/50 28/37/45 23/56/29 -f 13/92/25 8/44/36 32/2/2 -f 50/87/47 9/68/17 1/93/51 -f 13/92/25 27/45/24 8/44/36 -f 16/23/33 18/41/34 45/40/19 -f 22/65/35 15/39/31 44/46/37 -f 9/68/17 3/81/52 1/93/51 -f 33/50/4 37/49/38 18/41/34 -f 43/86/15 16/48/33 7/94/32 diff --git a/technic/technic/models/technic_one_curved_edge.obj b/technic/technic/models/technic_one_curved_edge.obj deleted file mode 100644 index bb82040..0000000 --- a/technic/technic/models/technic_one_curved_edge.obj +++ /dev/null @@ -1,132 +0,0 @@ -# Blender v2.73 (sub 0) OBJ File: 'slope_test_quarter_round_onetexture.blend' -# www.blender.org -o Cylinder -v -0.500000 0.490393 -0.097545 -v 0.500000 0.490393 -0.097545 -v -0.500000 0.461940 -0.191342 -v 0.500000 0.461940 -0.191342 -v -0.500000 0.415735 -0.277785 -v 0.500000 0.415735 -0.277785 -v -0.500000 0.353553 -0.353553 -v 0.500000 0.353553 -0.353553 -v -0.500000 0.277785 -0.415735 -v 0.500000 0.277785 -0.415735 -v -0.500000 0.191342 -0.461940 -v 0.500000 0.191342 -0.461940 -v -0.500000 0.097545 -0.490393 -v 0.500000 0.097545 -0.490393 -v 0.500000 -0.000000 -0.500000 -v 0.500000 0.490393 -0.097545 -v -0.500000 -0.500000 0.500000 -v -0.500000 -0.500000 -0.500000 -v 0.500000 -0.500000 -0.500000 -v -0.500000 0.500000 0.500000 -v 0.500000 0.500000 0.500000 -v -0.500000 0.000000 -0.500000 -v -0.500000 0.500000 -0.000000 -v 0.500000 0.500000 0.000000 -v -0.500000 0.490393 -0.097545 -v -0.500000 0.461940 -0.191342 -v -0.500000 0.415735 -0.277785 -v -0.500000 0.353553 -0.353553 -v -0.500000 0.277785 -0.415735 -v -0.500000 0.191342 -0.461940 -v -0.500000 0.097545 -0.490393 -v -0.500000 0.000000 0.000000 -v -0.500000 -0.500000 0.500000 -v -0.500000 -0.500000 -0.500000 -v -0.500000 0.500000 0.500000 -v -0.500000 0.000000 -0.500000 -v -0.500000 0.500000 -0.000000 -v 0.500000 0.461940 -0.191342 -v 0.500000 0.415735 -0.277785 -v 0.500000 0.353553 -0.353553 -v 0.500000 0.277785 -0.415735 -v 0.500000 0.191342 -0.461940 -v 0.500000 0.097545 -0.490393 -v 0.500000 -0.000000 -0.500000 -v 0.500000 -0.000000 -0.000000 -v 0.500000 -0.500000 -0.500000 -v 0.500000 -0.500000 0.500000 -v 0.500000 0.500000 0.500000 -v 0.500000 0.500000 0.000000 -v -0.500000 -0.500000 -0.500000 -v 0.500000 -0.500000 -0.500000 -v 0.500000 -0.500000 0.500000 -v -0.500000 -0.500000 0.500000 -v 0.500000 -0.500000 0.500000 -v -0.500000 0.500000 0.500000 -v 0.500000 0.500000 0.500000 -vt 1.000000 0.000000 -vt 1.000000 0.500000 -vt 0.500001 0.500000 -vt 0.500001 1.000000 -vt 0.000003 1.000000 -vt 0.000003 0.000000 -vt 0.597546 0.990393 -vt 0.691342 0.961940 -vt 1.000000 1.000000 -vt 0.990393 0.597545 -vt 0.961940 0.691341 -vt 0.777786 0.915735 -vt 0.853554 0.853553 -vt 0.915735 0.777785 -vt 0.146446 0.853552 -vt 0.084265 0.777783 -vt 0.038060 0.691340 -vt 0.308658 0.961938 -vt 0.222214 0.915733 -vt 0.000000 0.499999 -vt 0.402454 0.990391 -vt 0.009607 0.597544 -vt 1.000000 0.375000 -vt 0.000000 0.375000 -vt 0.000000 0.250000 -vt 1.000000 0.250000 -vt 0.000000 0.125000 -vt 1.000000 0.125000 -vt 0.000000 0.875000 -vt 1.000000 0.875000 -vt 0.000000 0.750000 -vt 1.000000 0.750000 -vt 0.000000 0.625000 -vt 1.000000 0.625000 -vn 1.000000 -0.000000 0.000000 -vn -0.000000 0.000000 1.000000 -vn -0.000000 -1.000000 0.000000 -vn -1.000000 0.000000 0.000000 -vn 0.000000 0.980800 -0.195100 -vn 0.000000 0.923900 -0.382700 -vn -0.000000 0.831500 -0.555600 -vn -0.000000 0.707100 -0.707100 -vn -0.000000 0.555600 -0.831500 -vn -0.000000 0.382700 -0.923900 -vn -0.000000 0.195100 -0.980800 -vn 0.000000 1.000000 -0.000000 -vn 0.000000 0.998800 -0.049100 -vn -0.000000 0.049100 -0.998800 -vn -0.000000 0.000000 -1.000000 -s off -f 46/1/1 44/2/1 45/3/1 49/4/1 48/5/1 47/6/1 -f 16/7/1 49/4/1 45/3/1 38/8/1 -f 55/5/2 53/6/2 54/1/2 56/9/2 -f 43/10/1 42/11/1 45/3/1 44/2/1 -f 39/12/1 38/8/1 45/3/1 40/13/1 -f 41/14/1 40/13/1 45/3/1 42/11/1 -f 50/9/3 51/5/3 52/6/3 17/1/3 -f 28/15/4 29/16/4 30/17/4 32/3/4 -f 26/18/4 27/19/4 28/15/4 32/3/4 -f 35/9/4 37/4/4 32/3/4 36/20/4 34/6/4 33/1/4 -f 37/4/4 25/21/4 26/18/4 32/3/4 -f 30/17/4 31/22/4 36/20/4 32/3/4 -s 1 -f 1/23/5 2/24/5 4/25/6 3/26/6 -f 3/26/6 4/25/6 6/27/7 5/28/7 -f 5/28/7 6/27/7 8/6/8 7/1/8 -f 7/9/8 8/5/8 10/29/9 9/30/9 -f 9/30/9 10/29/9 12/31/10 11/32/10 -f 11/32/10 12/31/10 14/33/11 13/34/11 -f 21/5/12 24/20/13 23/2/13 20/9/12 -f 13/34/11 14/33/11 15/20/14 22/2/14 -f 23/2/13 24/20/13 2/24/5 1/23/5 -f 18/1/15 22/2/14 15/20/14 19/6/15 diff --git a/technic/technic/models/technic_outercorner.obj b/technic/technic/models/technic_outercorner.obj deleted file mode 100644 index 60ccae6..0000000 --- a/technic/technic/models/technic_outercorner.obj +++ /dev/null @@ -1,23 +0,0 @@ -# Blender v2.73 (sub 0) OBJ File: 'technic-ocorner.blend' -# www.blender.org -o Cube_Cube.002 -v -0.500000 0.500000 0.500000 -v -0.500000 -0.500000 -0.500000 -v -0.500000 -0.500000 0.500000 -v 0.500000 -0.500000 -0.500000 -v 0.500000 -0.500000 0.500000 -vt 1.000000 1.000000 -vt 0.000000 1.000000 -vt 0.000000 0.000000 -vt 1.000000 0.000000 -vn 0.000000 -1.000000 -0.000000 -vn 0.000000 0.000000 1.000000 -vn -1.000000 -0.000000 0.000000 -vn -0.000000 0.707100 -0.707100 -vn 0.707100 0.707100 -0.000000 -s off -f 3/1/1 2/2/1 4/3/1 5/4/1 -f 1/2/2 3/3/2 5/4/2 -f 1/1/3 2/3/3 3/4/3 -f 1/1/4 4/3/4 2/4/4 -f 1/2/5 5/3/5 4/4/5 diff --git a/technic/technic/models/technic_outercorner_upsdown.obj b/technic/technic/models/technic_outercorner_upsdown.obj deleted file mode 100644 index c89de8a..0000000 --- a/technic/technic/models/technic_outercorner_upsdown.obj +++ /dev/null @@ -1,23 +0,0 @@ -# Blender v2.73 (sub 0) OBJ File: 'slope_test_ocorner_onetexture.blend' -# www.blender.org -o Cube_Cube.002 -v -0.500000 -0.500000 0.500000 -v 0.500000 0.500000 0.500000 -v -0.500000 0.500000 0.500000 -v 0.500000 0.500000 -0.500000 -v -0.500000 0.500000 -0.500000 -vt 0.000000 0.000000 -vt 1.000000 0.000000 -vt 1.000000 1.000000 -vt 0.000000 1.000000 -vn 0.000000 1.000000 -0.000000 -vn -1.000000 0.000000 -0.000000 -vn 0.000000 0.000000 1.000000 -vn 0.707100 -0.707100 0.000000 -vn -0.000000 -0.707100 -0.707100 -s off -f 3/1/1 2/2/1 4/3/1 5/4/1 -f 1/2/2 3/3/2 5/4/2 -f 1/1/3 2/3/3 3/4/3 -f 1/1/4 4/3/4 2/4/4 -f 1/2/5 5/3/5 4/4/5 diff --git a/technic/technic/models/technic_pyramid.obj b/technic/technic/models/technic_pyramid.obj deleted file mode 100644 index a618dcf..0000000 --- a/technic/technic/models/technic_pyramid.obj +++ /dev/null @@ -1,24 +0,0 @@ -# Blender v2.73 (sub 0) OBJ File: 'slope_test_pyramid_short_onetexture.blend' -# www.blender.org -o Cube -v 0.500000 -0.500000 -0.500000 -v 0.500000 -0.500000 0.500000 -v -0.500000 -0.500000 0.500000 -v -0.500000 -0.500000 -0.500000 -v -0.000000 0.000000 -0.000000 -vt 1.000000 0.500000 -vt 0.000000 0.500000 -vt 0.000000 0.000000 -vt 1.000000 0.000000 -vt 0.500000 0.500000 -vn 0.000000 -1.000000 0.000000 -vn -0.707100 0.707100 -0.000000 -vn 0.000000 0.707100 -0.707100 -vn 0.707100 0.707100 0.000000 -vn -0.000000 0.707100 0.707100 -s off -f 1/1/1 2/2/1 3/3/1 4/4/1 -f 3/4/2 5/5/2 4/3/2 -f 5/5/3 1/3/3 4/4/3 -f 1/4/4 5/5/4 2/3/4 -f 2/4/5 5/5/5 3/3/5 diff --git a/technic/technic/models/technic_pyramid_spike.obj b/technic/technic/models/technic_pyramid_spike.obj deleted file mode 100644 index b305af2..0000000 --- a/technic/technic/models/technic_pyramid_spike.obj +++ /dev/null @@ -1,24 +0,0 @@ -# Blender v2.73 (sub 0) OBJ File: 'slope_test_pyramid_onetexture.blend' -# www.blender.org -o Cube -v 0.500000 -0.500000 -0.500000 -v 0.500000 -0.500000 0.500000 -v -0.500000 -0.500000 0.500000 -v -0.500000 -0.500000 -0.500000 -v -0.000000 0.500000 -0.000000 -vt 1.000000 1.000000 -vt 0.000000 1.000000 -vt 0.000000 0.000000 -vt 1.000000 0.000000 -vt 0.500000 1.000000 -vn 0.000000 -1.000000 0.000000 -vn -0.894400 0.447200 -0.000000 -vn 0.000000 0.447200 -0.894400 -vn 0.894400 0.447200 0.000000 -vn -0.000000 0.447200 0.894400 -s off -f 1/1/1 2/2/1 3/3/1 4/4/1 -f 3/4/2 5/5/2 4/3/2 -f 5/5/3 1/3/3 4/4/3 -f 1/4/4 5/5/4 2/3/4 -f 2/4/5 5/5/5 3/3/5 diff --git a/technic/technic/models/technic_slope.obj b/technic/technic/models/technic_slope.obj deleted file mode 100644 index f6f4860..0000000 --- a/technic/technic/models/technic_slope.obj +++ /dev/null @@ -1,24 +0,0 @@ -# Blender v2.73 (sub 0) OBJ File: 'slope_test_slope_onetexture.blend' -# www.blender.org -o Cube_Cube.002 -v 0.500000 0.500000 0.500000 -v -0.500000 0.500000 0.500000 -v -0.500000 -0.500000 0.500000 -v 0.500000 -0.500000 0.500000 -v -0.500000 -0.500000 -0.500000 -v 0.500000 -0.500000 -0.500000 -vt 1.000000 1.000000 -vt 0.000000 1.000000 -vt 0.000000 0.000000 -vt 1.000000 0.000000 -vn 0.000000 -0.000000 1.000000 -vn 0.000000 -1.000000 -0.000000 -vn -1.000000 0.000000 0.000000 -vn 1.000000 0.000000 0.000000 -vn 0.000000 0.707100 -0.707100 -s off -f 1/1/1 2/2/1 3/3/1 4/4/1 -f 4/3/2 3/4/2 5/1/2 6/2/2 -f 2/1/3 5/3/3 3/4/3 -f 1/2/4 4/3/4 6/4/4 -f 2/1/5 1/2/5 6/3/5 5/4/5 diff --git a/technic/technic/models/technic_slope_horizontal.obj b/technic/technic/models/technic_slope_horizontal.obj deleted file mode 100644 index 4866a92..0000000 --- a/technic/technic/models/technic_slope_horizontal.obj +++ /dev/null @@ -1,24 +0,0 @@ -# Blender v2.73 (sub 0) OBJ File: 'technic-slope-horizontal.blend' -# www.blender.org -o Cube_Cube.002 -v -0.500000 0.500000 0.500000 -v -0.500000 -0.500000 0.500000 -v 0.500000 -0.500000 0.500000 -v 0.500000 0.500000 0.500000 -v 0.500000 -0.500000 -0.500000 -v 0.500000 0.500000 -0.500000 -vt 0.000000 1.000000 -vt 0.000000 0.000000 -vt 1.000000 0.000000 -vt 1.000000 1.000000 -vn 0.000000 -0.000000 1.000000 -vn 1.000000 -0.000000 -0.000000 -vn -0.000000 -1.000000 0.000000 -vn 0.000000 1.000000 -0.000000 -vn -0.707100 0.000000 -0.707100 -s off -f 1/1/1 2/2/1 3/3/1 4/4/1 -f 4/1/2 3/2/2 5/3/2 6/4/2 -f 2/3/3 5/1/3 3/2/3 -f 1/4/4 4/1/4 6/2/4 -f 2/3/5 1/4/5 6/1/5 5/2/5 diff --git a/technic/technic/models/technic_slope_upsdown.obj b/technic/technic/models/technic_slope_upsdown.obj deleted file mode 100644 index 6880595..0000000 --- a/technic/technic/models/technic_slope_upsdown.obj +++ /dev/null @@ -1,24 +0,0 @@ -# Blender v2.73 (sub 0) OBJ File: 'slope_test_slope_onetexture.blend' -# www.blender.org -o Cube_Cube.002 -v -0.500000 -0.500000 0.500000 -v 0.500000 -0.500000 0.500000 -v 0.500000 0.500000 0.500000 -v -0.500000 0.500000 0.500000 -v 0.500000 0.500000 -0.500000 -v -0.500000 0.500000 -0.500000 -vt 0.000000 0.000000 -vt 1.000000 0.000000 -vt 1.000000 1.000000 -vt 0.000000 1.000000 -vn 0.000000 0.000000 1.000000 -vn 0.000000 1.000000 -0.000000 -vn 1.000000 -0.000000 0.000000 -vn -1.000000 0.000000 -0.000000 -vn -0.000000 -0.707100 -0.707100 -s off -f 1/1/1 2/2/1 3/3/1 4/4/1 -f 4/3/2 3/4/2 5/1/2 6/2/2 -f 2/1/3 5/3/3 3/4/3 -f 1/2/4 4/3/4 6/4/4 -f 2/1/5 1/2/5 6/3/5 5/4/5 diff --git a/technic/technic/models/technic_sphere.obj b/technic/technic/models/technic_sphere.obj deleted file mode 100644 index 772b570..0000000 --- a/technic/technic/models/technic_sphere.obj +++ /dev/null @@ -1,1927 +0,0 @@ -# Blender v2.73 (sub 0) OBJ File: 'globe.blend' -# www.blender.org -o Sphere -v -0.097545 0.490393 0.000000 -v -0.191342 0.461940 0.000000 -v -0.277785 0.415735 0.000000 -v -0.353553 0.353553 0.000000 -v -0.415735 0.277785 0.000000 -v -0.461940 0.191342 0.000000 -v -0.490393 0.097545 0.000000 -v -0.500000 0.000000 0.000000 -v -0.490393 -0.097545 0.000000 -v -0.461940 -0.191342 0.000000 -v -0.415735 -0.277785 0.000000 -v -0.353553 -0.353553 0.000000 -v -0.277785 -0.415735 0.000000 -v -0.191342 -0.461940 0.000000 -v -0.097545 -0.490393 0.000000 -v -0.095671 0.490393 -0.019030 -v -0.187665 0.461940 -0.037329 -v -0.272448 0.415735 -0.054193 -v -0.346760 0.353553 -0.068975 -v -0.407747 0.277785 -0.081106 -v -0.453064 0.191342 -0.090120 -v -0.480970 0.097545 -0.095671 -v -0.490393 0.000000 -0.097545 -v -0.480970 -0.097545 -0.095671 -v -0.453064 -0.191342 -0.090120 -v -0.407747 -0.277785 -0.081106 -v -0.346760 -0.353553 -0.068975 -v -0.272448 -0.415735 -0.054193 -v -0.187665 -0.461940 -0.037329 -v -0.095671 -0.490393 -0.019030 -v -0.090120 0.490393 -0.037329 -v -0.176777 0.461940 -0.073223 -v -0.256640 0.415735 -0.106304 -v -0.326641 0.353553 -0.135299 -v -0.384089 0.277785 -0.159095 -v -0.426777 0.191342 -0.176777 -v -0.453064 0.097545 -0.187665 -v -0.461940 0.000000 -0.191342 -v -0.453064 -0.097545 -0.187665 -v -0.426777 -0.191342 -0.176777 -v -0.384089 -0.277785 -0.159095 -v -0.326641 -0.353553 -0.135299 -v -0.256640 -0.415735 -0.106304 -v -0.176777 -0.461940 -0.073223 -v -0.090120 -0.490393 -0.037329 -v -0.081106 0.490393 -0.054193 -v -0.159095 0.461940 -0.106304 -v -0.230970 0.415735 -0.154329 -v -0.293969 0.353553 -0.196424 -v -0.345671 0.277785 -0.230970 -v -0.384089 0.191342 -0.256640 -v -0.407746 0.097545 -0.272448 -v -0.415735 0.000000 -0.277785 -v -0.407746 -0.097545 -0.272448 -v -0.384089 -0.191342 -0.256640 -v -0.345671 -0.277785 -0.230970 -v -0.293969 -0.353553 -0.196424 -v -0.230970 -0.415735 -0.154329 -v -0.159095 -0.461940 -0.106304 -v -0.081106 -0.490393 -0.054193 -v -0.068975 0.490393 -0.068975 -v -0.135299 0.461940 -0.135299 -v -0.196424 0.415735 -0.196424 -v -0.250000 0.353553 -0.250000 -v -0.293969 0.277785 -0.293969 -v -0.326641 0.191342 -0.326641 -v -0.346760 0.097545 -0.346760 -v -0.353553 0.000000 -0.353554 -v -0.346760 -0.097545 -0.346760 -v -0.326641 -0.191342 -0.326641 -v -0.293969 -0.277785 -0.293969 -v -0.250000 -0.353553 -0.250000 -v -0.196424 -0.415735 -0.196424 -v -0.135299 -0.461940 -0.135299 -v -0.068975 -0.490393 -0.068975 -v -0.054193 0.490393 -0.081106 -v -0.106304 0.461940 -0.159095 -v -0.154329 0.415735 -0.230970 -v -0.196424 0.353553 -0.293969 -v -0.230970 0.277785 -0.345671 -v -0.256640 0.191342 -0.384089 -v -0.272447 0.097545 -0.407747 -v -0.277785 0.000000 -0.415735 -v -0.272447 -0.097545 -0.407747 -v -0.256640 -0.191342 -0.384089 -v -0.230970 -0.277785 -0.345671 -v -0.196424 -0.353553 -0.293969 -v -0.154329 -0.415735 -0.230970 -v -0.106304 -0.461940 -0.159095 -v -0.054193 -0.490393 -0.081106 -v -0.037329 0.490393 -0.090120 -v -0.073223 0.461940 -0.176777 -v -0.106304 0.415735 -0.256640 -v -0.135299 0.353553 -0.326641 -v -0.159095 0.277785 -0.384089 -v -0.176777 0.191342 -0.426777 -v -0.187665 0.097545 -0.453064 -v -0.191342 0.000000 -0.461940 -v -0.187665 -0.097545 -0.453064 -v -0.176777 -0.191342 -0.426777 -v -0.159095 -0.277785 -0.384089 -v -0.135299 -0.353553 -0.326641 -v -0.106304 -0.415735 -0.256640 -v -0.073223 -0.461940 -0.176777 -v -0.037329 -0.490393 -0.090120 -v -0.019030 0.490393 -0.095671 -v -0.037329 0.461940 -0.187665 -v -0.054193 0.415735 -0.272448 -v -0.068975 0.353553 -0.346760 -v -0.081106 0.277785 -0.407747 -v -0.090120 0.191342 -0.453064 -v -0.095671 0.097545 -0.480970 -v -0.097545 0.000000 -0.490393 -v -0.095671 -0.097545 -0.480970 -v -0.090120 -0.191342 -0.453064 -v -0.081106 -0.277785 -0.407747 -v -0.068975 -0.353553 -0.346760 -v -0.054193 -0.415735 -0.272448 -v -0.037329 -0.461940 -0.187665 -v -0.019030 -0.490393 -0.095671 -v 0.000000 0.490393 -0.097545 -v 0.000000 0.461940 -0.191342 -v 0.000000 0.415735 -0.277785 -v 0.000000 0.353553 -0.353553 -v 0.000000 0.277785 -0.415735 -v 0.000000 0.191342 -0.461940 -v 0.000000 0.097545 -0.490393 -v 0.000000 0.000000 -0.500000 -v 0.000000 -0.097545 -0.490393 -v 0.000000 -0.191342 -0.461940 -v 0.000000 -0.277785 -0.415735 -v 0.000000 -0.353553 -0.353553 -v 0.000000 -0.415735 -0.277785 -v 0.000000 -0.461940 -0.191342 -v 0.000000 -0.490393 -0.097545 -v 0.019030 0.490393 -0.095671 -v 0.037329 0.461940 -0.187665 -v 0.054193 0.415735 -0.272448 -v 0.068975 0.353553 -0.346760 -v 0.081106 0.277785 -0.407747 -v 0.090120 0.191342 -0.453064 -v 0.095671 0.097545 -0.480970 -v 0.097545 0.000000 -0.490393 -v 0.095671 -0.097545 -0.480970 -v 0.090120 -0.191342 -0.453064 -v 0.081106 -0.277785 -0.407747 -v 0.068975 -0.353553 -0.346760 -v 0.054193 -0.415735 -0.272448 -v 0.037329 -0.461940 -0.187665 -v 0.019030 -0.490393 -0.095671 -v 0.037329 0.490393 -0.090120 -v 0.073224 0.461940 -0.176777 -v 0.106304 0.415735 -0.256640 -v 0.135299 0.353553 -0.326641 -v 0.159095 0.277785 -0.384089 -v 0.176777 0.191342 -0.426777 -v 0.187665 0.097545 -0.453064 -v 0.191342 0.000000 -0.461940 -v 0.187665 -0.097545 -0.453064 -v 0.176777 -0.191342 -0.426777 -v 0.159095 -0.277785 -0.384089 -v 0.135299 -0.353553 -0.326641 -v 0.106304 -0.415735 -0.256640 -v 0.073223 -0.461940 -0.176777 -v 0.037329 -0.490393 -0.090120 -v 0.054193 0.490393 -0.081106 -v 0.106304 0.461940 -0.159095 -v 0.154329 0.415735 -0.230970 -v 0.196424 0.353553 -0.293969 -v 0.230970 0.277785 -0.345671 -v 0.256640 0.191342 -0.384089 -v 0.272448 0.097545 -0.407747 -v 0.277785 0.000000 -0.415735 -v 0.272448 -0.097545 -0.407747 -v 0.256640 -0.191342 -0.384089 -v 0.230970 -0.277785 -0.345671 -v 0.196424 -0.353553 -0.293969 -v 0.154329 -0.415735 -0.230970 -v 0.106304 -0.461940 -0.159095 -v 0.054193 -0.490393 -0.081106 -v 0.068975 0.490393 -0.068975 -v 0.135299 0.461940 -0.135299 -v 0.196424 0.415735 -0.196424 -v 0.250000 0.353553 -0.250000 -v 0.293969 0.277785 -0.293969 -v 0.326641 0.191342 -0.326641 -v 0.346760 0.097545 -0.346760 -v 0.353554 0.000000 -0.353553 -v 0.346760 -0.097545 -0.346760 -v 0.326641 -0.191342 -0.326641 -v 0.293969 -0.277785 -0.293969 -v 0.250000 -0.353553 -0.250000 -v 0.196424 -0.415735 -0.196424 -v 0.135299 -0.461940 -0.135299 -v 0.068975 -0.490393 -0.068975 -v 0.081106 0.490393 -0.054193 -v 0.159095 0.461940 -0.106304 -v 0.230970 0.415735 -0.154329 -v 0.293969 0.353553 -0.196424 -v 0.345671 0.277785 -0.230970 -v 0.384089 0.191342 -0.256640 -v 0.407747 0.097545 -0.272447 -v 0.415735 0.000000 -0.277785 -v 0.407747 -0.097545 -0.272447 -v 0.384089 -0.191342 -0.256640 -v 0.345671 -0.277785 -0.230970 -v 0.293969 -0.353553 -0.196424 -v 0.230970 -0.415735 -0.154329 -v 0.159095 -0.461940 -0.106304 -v 0.081106 -0.490393 -0.054193 -v 0.090120 0.490393 -0.037329 -v 0.176777 0.461940 -0.073223 -v 0.256640 0.415735 -0.106304 -v 0.326641 0.353553 -0.135299 -v 0.384089 0.277785 -0.159095 -v 0.426777 0.191342 -0.176777 -v 0.453064 0.097545 -0.187665 -v 0.461940 0.000000 -0.191342 -v 0.453064 -0.097545 -0.187665 -v 0.426777 -0.191342 -0.176777 -v 0.384089 -0.277785 -0.159095 -v 0.326641 -0.353553 -0.135299 -v 0.256640 -0.415735 -0.106304 -v 0.176777 -0.461940 -0.073223 -v 0.090120 -0.490393 -0.037329 -v 0.095671 0.490393 -0.019030 -v 0.187665 0.461940 -0.037329 -v 0.272448 0.415735 -0.054193 -v 0.346760 0.353553 -0.068975 -v 0.407747 0.277785 -0.081106 -v 0.453064 0.191342 -0.090120 -v 0.480970 0.097545 -0.095671 -v 0.490393 0.000000 -0.097545 -v 0.480970 -0.097545 -0.095671 -v 0.453064 -0.191342 -0.090120 -v 0.407747 -0.277785 -0.081106 -v 0.346760 -0.353553 -0.068975 -v 0.272448 -0.415735 -0.054193 -v 0.187665 -0.461940 -0.037329 -v 0.095671 -0.490393 -0.019030 -v 0.097545 0.490393 0.000000 -v 0.191342 0.461940 -0.000000 -v 0.277785 0.415735 -0.000000 -v 0.353554 0.353553 0.000000 -v 0.415735 0.277785 0.000000 -v 0.461940 0.191342 -0.000000 -v 0.490393 0.097545 0.000000 -v 0.500000 0.000000 0.000000 -v 0.490393 -0.097545 0.000000 -v 0.461940 -0.191342 -0.000000 -v 0.415735 -0.277785 0.000000 -v 0.353554 -0.353553 0.000000 -v 0.277785 -0.415735 0.000000 -v 0.191342 -0.461940 -0.000000 -v 0.097545 -0.490393 -0.000000 -v 0.095671 0.490393 0.019030 -v 0.187665 0.461940 0.037329 -v 0.272448 0.415735 0.054193 -v 0.346760 0.353553 0.068975 -v 0.407747 0.277785 0.081106 -v 0.453064 0.191342 0.090120 -v 0.480970 0.097545 0.095671 -v 0.490393 0.000000 0.097545 -v 0.480970 -0.097545 0.095671 -v 0.453064 -0.191342 0.090120 -v 0.407747 -0.277785 0.081106 -v 0.346760 -0.353553 0.068975 -v 0.272448 -0.415735 0.054193 -v 0.187665 -0.461940 0.037329 -v 0.095671 -0.490393 0.019030 -v 0.090120 0.490393 0.037329 -v 0.176777 0.461940 0.073223 -v 0.256640 0.415735 0.106304 -v 0.326641 0.353553 0.135299 -v 0.384089 0.277785 0.159095 -v 0.426777 0.191342 0.176777 -v 0.453064 0.097545 0.187665 -v 0.461940 0.000000 0.191342 -v 0.453064 -0.097545 0.187665 -v 0.426777 -0.191342 0.176777 -v 0.384089 -0.277785 0.159095 -v 0.326641 -0.353553 0.135299 -v 0.256640 -0.415735 0.106304 -v 0.176777 -0.461940 0.073223 -v 0.090120 -0.490393 0.037329 -v 0.081106 0.490393 0.054193 -v 0.159095 0.461940 0.106304 -v 0.230970 0.415735 0.154329 -v 0.293969 0.353553 0.196424 -v 0.345671 0.277785 0.230970 -v 0.384089 0.191342 0.256640 -v 0.407747 0.097545 0.272448 -v 0.415735 0.000000 0.277785 -v 0.407747 -0.097545 0.272448 -v 0.384089 -0.191342 0.256640 -v 0.345671 -0.277785 0.230970 -v 0.293969 -0.353553 0.196424 -v 0.230970 -0.415735 0.154329 -v 0.159095 -0.461940 0.106304 -v 0.081106 -0.490393 0.054193 -v 0.068975 0.490393 0.068975 -v 0.135299 0.461940 0.135299 -v 0.196424 0.415735 0.196424 -v 0.250000 0.353553 0.250000 -v 0.293969 0.277785 0.293969 -v 0.326641 0.191342 0.326641 -v 0.346760 0.097545 0.346760 -v 0.353553 0.000000 0.353553 -v 0.346760 -0.097545 0.346760 -v 0.326641 -0.191342 0.326641 -v 0.293969 -0.277785 0.293969 -v 0.250000 -0.353553 0.250000 -v 0.196424 -0.415735 0.196424 -v 0.135299 -0.461940 0.135299 -v 0.068975 -0.490393 0.068975 -v 0.054193 0.490393 0.081106 -v 0.106304 0.461940 0.159095 -v 0.154329 0.415735 0.230970 -v 0.196424 0.353553 0.293969 -v 0.230970 0.277785 0.345671 -v 0.256640 0.191342 0.384089 -v 0.272448 0.097545 0.407746 -v 0.277785 0.000000 0.415735 -v 0.272448 -0.097545 0.407746 -v 0.256640 -0.191342 0.384089 -v 0.230970 -0.277785 0.345671 -v 0.196424 -0.353553 0.293969 -v 0.154329 -0.415735 0.230970 -v 0.106304 -0.461940 0.159095 -v 0.054193 -0.490393 0.081106 -v 0.037329 0.490393 0.090120 -v 0.073223 0.461940 0.176777 -v 0.106304 0.415735 0.256640 -v 0.135299 0.353553 0.326641 -v 0.159095 0.277785 0.384089 -v 0.176777 0.191342 0.426777 -v 0.187665 0.097545 0.453064 -v 0.191342 0.000000 0.461940 -v 0.187665 -0.097545 0.453064 -v 0.176777 -0.191342 0.426777 -v 0.159095 -0.277785 0.384089 -v 0.135299 -0.353553 0.326641 -v 0.106304 -0.415735 0.256640 -v 0.073223 -0.461940 0.176777 -v 0.037329 -0.490393 0.090120 -v 0.019030 0.490393 0.095671 -v 0.037329 0.461940 0.187665 -v 0.054193 0.415735 0.272448 -v 0.068975 0.353553 0.346760 -v 0.081106 0.277785 0.407746 -v 0.090120 0.191342 0.453064 -v 0.095671 0.097545 0.480970 -v 0.097545 0.000000 0.490393 -v 0.095671 -0.097545 0.480970 -v 0.090120 -0.191342 0.453064 -v 0.081106 -0.277785 0.407746 -v 0.068975 -0.353553 0.346760 -v 0.054193 -0.415735 0.272447 -v 0.037329 -0.461940 0.187665 -v 0.019030 -0.490393 0.095671 -v 0.000000 0.490393 0.097545 -v 0.000000 0.461940 0.191342 -v 0.000000 0.415735 0.277785 -v 0.000000 0.353553 0.353553 -v 0.000000 0.277785 0.415735 -v 0.000000 0.191342 0.461940 -v 0.000000 0.097545 0.490392 -v 0.000000 0.000000 0.500000 -v 0.000000 -0.097545 0.490392 -v 0.000000 -0.191342 0.461940 -v 0.000000 -0.277785 0.415735 -v 0.000000 -0.353553 0.353553 -v 0.000000 -0.415735 0.277785 -v 0.000000 -0.461940 0.191342 -v 0.000000 -0.490393 0.097545 -v -0.019030 0.490393 0.095671 -v -0.037329 0.461940 0.187665 -v -0.054193 0.415735 0.272448 -v -0.068975 0.353553 0.346760 -v -0.081106 0.277785 0.407746 -v -0.090120 0.191342 0.453064 -v -0.095671 0.097545 0.480970 -v -0.097545 0.000000 0.490393 -v -0.095671 -0.097545 0.480970 -v -0.090120 -0.191342 0.453064 -v -0.081106 -0.277785 0.407746 -v -0.068975 -0.353553 0.346760 -v -0.054193 -0.415735 0.272447 -v -0.037329 -0.461940 0.187665 -v -0.019030 -0.490393 0.095671 -v -0.037329 0.490393 0.090120 -v -0.073223 0.461940 0.176777 -v -0.106304 0.415735 0.256640 -v -0.135299 0.353553 0.326641 -v -0.159095 0.277785 0.384089 -v -0.176777 0.191342 0.426777 -v -0.187665 0.097545 0.453063 -v -0.191342 0.000000 0.461940 -v -0.187665 -0.097545 0.453063 -v -0.176777 -0.191342 0.426777 -v -0.159095 -0.277785 0.384089 -v -0.135299 -0.353553 0.326641 -v -0.106304 -0.415735 0.256640 -v -0.073223 -0.461940 0.176777 -v -0.037329 -0.490393 0.090120 -v -0.054193 0.490393 0.081106 -v -0.106304 0.461940 0.159095 -v -0.154329 0.415735 0.230970 -v -0.196424 0.353553 0.293969 -v -0.230970 0.277785 0.345671 -v -0.256640 0.191342 0.384089 -v -0.272447 0.097545 0.407746 -v -0.277785 0.000000 0.415735 -v -0.272447 -0.097545 0.407746 -v -0.256640 -0.191342 0.384089 -v -0.230970 -0.277785 0.345671 -v -0.196424 -0.353553 0.293969 -v -0.154329 -0.415735 0.230970 -v -0.106304 -0.461940 0.159095 -v -0.054193 -0.490393 0.081106 -v -0.068975 0.490393 0.068975 -v -0.135299 0.461940 0.135299 -v -0.196424 0.415735 0.196424 -v -0.250000 0.353553 0.250000 -v -0.293969 0.277785 0.293969 -v -0.326641 0.191342 0.326641 -v -0.346760 0.097545 0.346760 -v -0.353553 0.000000 0.353553 -v -0.346760 -0.097545 0.346760 -v -0.326641 -0.191342 0.326641 -v -0.293969 -0.277785 0.293969 -v -0.250000 -0.353553 0.250000 -v -0.196424 -0.415735 0.196424 -v -0.135299 -0.461940 0.135299 -v -0.068975 -0.490393 0.068975 -v -0.081106 0.490393 0.054193 -v -0.159095 0.461940 0.106304 -v -0.230970 0.415735 0.154329 -v -0.293969 0.353553 0.196424 -v -0.345671 0.277785 0.230970 -v -0.384089 0.191342 0.256640 -v -0.407746 0.097545 0.272447 -v -0.415735 0.000000 0.277785 -v -0.407746 -0.097545 0.272447 -v -0.384089 -0.191342 0.256640 -v -0.345671 -0.277785 0.230970 -v -0.293969 -0.353553 0.196424 -v -0.230970 -0.415735 0.154329 -v -0.159095 -0.461940 0.106304 -v -0.081106 -0.490393 0.054193 -v -0.090120 0.490393 0.037329 -v -0.176776 0.461940 0.073223 -v -0.256640 0.415735 0.106304 -v -0.326641 0.353553 0.135299 -v -0.384089 0.277785 0.159095 -v -0.426776 0.191342 0.176777 -v -0.453063 0.097545 0.187665 -v -0.461939 0.000000 0.191342 -v -0.453063 -0.097545 0.187665 -v -0.426776 -0.191342 0.176777 -v -0.384089 -0.277785 0.159095 -v -0.326641 -0.353553 0.135299 -v -0.256640 -0.415735 0.106304 -v -0.176776 -0.461940 0.073223 -v -0.090120 -0.490393 0.037329 -v -0.095671 0.490393 0.019030 -v -0.187665 0.461940 0.037329 -v -0.272447 0.415735 0.054193 -v -0.346760 0.353553 0.068975 -v -0.407746 0.277785 0.081106 -v -0.453063 0.191342 0.090120 -v -0.480969 0.097545 0.095671 -v -0.490392 0.000000 0.097545 -v -0.480969 -0.097545 0.095671 -v -0.453063 -0.191342 0.090120 -v -0.407746 -0.277785 0.081106 -v -0.346760 -0.353553 0.068975 -v -0.272447 -0.415735 0.054193 -v -0.187665 -0.461940 0.037329 -v -0.095671 -0.490393 0.019030 -v -0.013167 -0.495196 0.000000 -v -0.005039 0.495196 0.012165 -v -0.013167 0.495196 0.000000 -v -0.012914 0.495196 -0.002569 -v -0.012914 -0.495196 -0.002569 -v -0.012165 0.495196 -0.005039 -v -0.012165 -0.495196 -0.005039 -v -0.010948 0.495196 -0.007315 -v -0.010948 -0.495196 -0.007315 -v -0.009311 0.495196 -0.009311 -v -0.009311 -0.495196 -0.009311 -v -0.007315 0.495196 -0.010948 -v -0.007315 -0.495196 -0.010948 -v -0.005039 0.495196 -0.012165 -v -0.005039 -0.495196 -0.012165 -v -0.002569 0.495196 -0.012914 -v -0.002569 -0.495196 -0.012914 -v 0.000000 0.495196 -0.013167 -v 0.000000 -0.495196 -0.013167 -v 0.002569 0.495196 -0.012914 -v 0.002569 -0.495196 -0.012914 -v 0.005039 0.495196 -0.012165 -v 0.005039 -0.495196 -0.012165 -v 0.007316 0.495196 -0.010948 -v 0.007316 -0.495196 -0.010948 -v 0.009311 0.495196 -0.009311 -v 0.009311 -0.495196 -0.009311 -v 0.010948 0.495196 -0.007315 -v 0.010948 -0.495196 -0.007315 -v 0.012165 0.495196 -0.005039 -v 0.012165 -0.495196 -0.005039 -v 0.012915 0.495196 -0.002569 -v 0.012915 -0.495196 -0.002569 -v 0.013168 0.495196 0.000000 -v 0.013168 -0.495196 0.000000 -v 0.012915 0.495196 0.002569 -v 0.012915 -0.495196 0.002569 -v 0.012165 0.495196 0.005039 -v 0.012165 -0.495196 0.005039 -v 0.010948 0.495196 0.007315 -v 0.010948 -0.495196 0.007315 -v 0.009311 0.495196 0.009311 -v 0.009311 -0.495196 0.009311 -v 0.007316 0.495196 0.010948 -v 0.007316 -0.495196 0.010948 -v 0.005039 0.495196 0.012165 -v 0.005039 -0.495196 0.012165 -v 0.002569 0.495196 0.012914 -v 0.002569 -0.495196 0.012914 -v 0.000000 0.495196 0.013167 -v 0.000000 -0.495196 0.013167 -v -0.002569 0.495196 0.012914 -v -0.002569 -0.495196 0.012914 -v -0.005039 -0.495196 0.012165 -v -0.007315 0.495196 0.010948 -v -0.007315 -0.495196 0.010948 -v -0.009311 0.495196 0.009311 -v -0.009311 -0.495196 0.009311 -v -0.010948 0.495196 0.007315 -v -0.010948 -0.495196 0.007315 -v -0.012165 0.495196 0.005039 -v -0.012165 -0.495196 0.005039 -v -0.012914 0.495196 0.002569 -v -0.012914 -0.495196 0.002569 -vt 0.437500 0.750000 -vt 0.437500 0.812500 -vt 0.375000 0.812500 -vt 0.375000 0.750000 -vt 0.437500 0.062500 -vt 0.437500 0.125000 -vt 0.375000 0.125000 -vt 0.375000 0.062500 -vt 0.437500 0.875000 -vt 0.437500 0.937500 -vt 0.375000 0.937500 -vt 0.375000 0.875000 -vt 0.437500 0.187500 -vt 0.437500 0.250000 -vt 0.375000 0.250000 -vt 0.375000 0.187500 -vt 0.437500 0.312500 -vt 0.437500 0.375000 -vt 0.375000 0.375000 -vt 0.375000 0.312500 -vt 0.437500 0.437500 -vt 0.437500 0.500000 -vt 0.375000 0.500000 -vt 0.375000 0.437500 -vt 0.437500 0.562500 -vt 0.437500 0.625000 -vt 0.375000 0.625000 -vt 0.375000 0.562500 -vt 0.437500 0.687500 -vt 0.375000 0.687500 -vt 0.312500 0.437500 -vt 0.312500 0.375000 -vt 0.312500 0.562500 -vt 0.312500 0.500000 -vt 0.312500 0.687500 -vt 0.312500 0.625000 -vt 0.312500 0.812500 -vt 0.312500 0.750000 -vt 0.312500 0.125000 -vt 0.312500 0.062500 -vt 0.312500 0.937500 -vt 0.312500 0.875000 -vt 0.312500 0.250000 -vt 0.312500 0.187500 -vt 0.312500 0.312500 -vt 0.250000 0.437500 -vt 0.250000 0.375000 -vt 0.250000 0.562500 -vt 0.250000 0.500000 -vt 0.250000 0.687500 -vt 0.250000 0.625000 -vt 0.250000 0.812500 -vt 0.250000 0.750000 -vt 0.250000 0.125000 -vt 0.250000 0.062500 -vt 0.250000 0.937500 -vt 0.250000 0.875000 -vt 0.250000 0.250000 -vt 0.250000 0.187500 -vt 0.250000 0.312500 -vt 0.187500 0.437500 -vt 0.187500 0.375000 -vt 0.187500 0.562500 -vt 0.187500 0.500000 -vt 0.187500 0.687500 -vt 0.187500 0.625000 -vt 0.187500 0.812500 -vt 0.187500 0.750000 -vt 0.187500 0.125000 -vt 0.187500 0.062500 -vt 0.187500 0.937500 -vt 0.187500 0.875000 -vt 0.187500 0.250000 -vt 0.187500 0.187500 -vt 0.187500 0.312500 -vt 0.125000 0.437500 -vt 0.125000 0.375000 -vt 0.125000 0.562500 -vt 0.125000 0.500000 -vt 0.125000 0.687500 -vt 0.125000 0.625000 -vt 0.125000 0.812500 -vt 0.125000 0.750000 -vt 0.125000 0.125000 -vt 0.125000 0.062500 -vt 0.125000 0.937500 -vt 0.125000 0.875000 -vt 0.125000 0.250000 -vt 0.125000 0.187500 -vt 0.125000 0.312500 -vt 0.062500 0.437500 -vt 0.062500 0.375000 -vt 0.062500 0.562500 -vt 0.062500 0.500000 -vt 0.062500 0.687500 -vt 0.062500 0.625000 -vt 0.062500 0.812500 -vt 0.062500 0.750000 -vt 0.062500 0.125000 -vt 0.062500 0.062500 -vt 0.062500 0.937500 -vt 0.062500 0.875000 -vt 0.062500 0.250000 -vt 0.062500 0.187500 -vt 0.062500 0.312500 -vt 0.000000 0.437500 -vt 0.000000 0.375000 -vt 0.000000 0.562500 -vt 0.000000 0.500000 -vt 0.000000 0.687500 -vt 0.000000 0.625000 -vt 0.000000 0.812500 -vt 0.000000 0.750000 -vt 0.000000 0.125000 -vt 0.000000 0.062500 -vt 0.000000 0.937500 -vt 0.000000 0.875000 -vt 0.000000 0.250000 -vt 0.000000 0.187500 -vt 0.000000 0.312500 -vt 1.000000 0.375000 -vt 1.000000 0.437500 -vt 0.937500 0.437500 -vt 0.937500 0.375000 -vt 1.000000 0.500000 -vt 1.000000 0.562500 -vt 0.937500 0.562500 -vt 0.937500 0.500000 -vt 1.000000 0.625000 -vt 1.000000 0.687500 -vt 0.937500 0.687500 -vt 0.937500 0.625000 -vt 1.000000 0.750000 -vt 1.000000 0.812500 -vt 0.937500 0.812500 -vt 0.937500 0.750000 -vt 1.000000 0.062500 -vt 1.000000 0.125000 -vt 0.937500 0.125000 -vt 0.937500 0.062500 -vt 1.000000 0.875000 -vt 1.000000 0.937500 -vt 0.937500 0.937500 -vt 0.937500 0.875000 -vt 1.000000 0.187500 -vt 1.000000 0.250000 -vt 0.937500 0.250000 -vt 0.937500 0.187500 -vt 1.000000 0.312500 -vt 0.937500 0.312500 -vt 0.875000 0.437500 -vt 0.875000 0.375000 -vt 0.875000 0.562500 -vt 0.875000 0.500000 -vt 0.875000 0.687500 -vt 0.875000 0.625000 -vt 0.875000 0.812500 -vt 0.875000 0.750000 -vt 0.875000 0.125000 -vt 0.875000 0.062500 -vt 0.875000 0.937500 -vt 0.875000 0.875000 -vt 0.875000 0.250000 -vt 0.875000 0.187500 -vt 0.875000 0.312500 -vt 0.812500 0.437500 -vt 0.812500 0.375000 -vt 0.812500 0.562500 -vt 0.812500 0.500000 -vt 0.812500 0.687500 -vt 0.812500 0.625000 -vt 0.812500 0.812500 -vt 0.812500 0.750000 -vt 0.812500 0.125000 -vt 0.812500 0.062500 -vt 0.812500 0.937500 -vt 0.812500 0.875000 -vt 0.812500 0.250000 -vt 0.812500 0.187500 -vt 0.812500 0.312500 -vt 0.750000 0.437500 -vt 0.750000 0.375000 -vt 0.750000 0.562500 -vt 0.750000 0.500000 -vt 0.750000 0.687500 -vt 0.750000 0.625000 -vt 0.750000 0.812500 -vt 0.750000 0.750000 -vt 0.750000 0.125000 -vt 0.750000 0.062500 -vt 0.750000 0.937500 -vt 0.750000 0.875000 -vt 0.750000 0.250000 -vt 0.750000 0.187500 -vt 0.750000 0.312500 -vt 0.687500 0.437500 -vt 0.687500 0.375000 -vt 0.687500 0.562500 -vt 0.687500 0.500000 -vt 0.687500 0.687500 -vt 0.687500 0.625000 -vt 0.687500 0.812500 -vt 0.687500 0.750000 -vt 0.687500 0.125000 -vt 0.687500 0.062500 -vt 0.687500 0.937500 -vt 0.687500 0.875000 -vt 0.687500 0.250000 -vt 0.687500 0.187500 -vt 0.687500 0.312500 -vt 0.625000 0.437500 -vt 0.625000 0.375000 -vt 0.625000 0.562500 -vt 0.625000 0.500000 -vt 0.625000 0.687500 -vt 0.625000 0.625000 -vt 0.625000 0.812500 -vt 0.625000 0.750000 -vt 0.625000 0.125000 -vt 0.625000 0.062500 -vt 0.625000 0.937500 -vt 0.625000 0.875000 -vt 0.625000 0.250000 -vt 0.625000 0.187500 -vt 0.625000 0.312500 -vt 0.562500 0.437500 -vt 0.562500 0.375000 -vt 0.562500 0.562500 -vt 0.562500 0.500000 -vt 0.562500 0.687500 -vt 0.562500 0.625000 -vt 0.562500 0.812500 -vt 0.562500 0.750000 -vt 0.562500 0.125000 -vt 0.562500 0.062500 -vt 0.562500 0.937500 -vt 0.562500 0.875000 -vt 0.562500 0.250000 -vt 0.562500 0.187500 -vt 0.562500 0.312500 -vt 0.500000 0.437500 -vt 0.500000 0.375000 -vt 0.500000 0.562500 -vt 0.500000 0.500000 -vt 0.500000 0.687500 -vt 0.500000 0.625000 -vt 0.500000 0.812500 -vt 0.500000 0.750000 -vt 0.500000 0.125000 -vt 0.500000 0.062500 -vt 0.500000 0.937500 -vt 0.500000 0.875000 -vt 0.500000 0.250000 -vt 0.500000 0.187500 -vt 0.500000 0.312500 -vt 0.437500 0.000000 -vt 0.375000 0.000000 -vt 0.312500 0.000000 -vt 0.250000 0.000000 -vt 0.187500 0.000000 -vt 0.125000 0.000000 -vt 0.062500 0.000000 -vt 0.000000 0.000000 -vt 1.000000 0.000000 -vt 0.937500 0.000000 -vt 0.875000 0.000000 -vt 0.812500 0.000000 -vt 0.750000 0.000000 -vt 0.687500 0.000000 -vt 0.625000 0.000000 -vt 0.562500 0.000000 -vt 0.500000 0.000000 -vt 0.500000 1.000000 -vt 0.437500 1.000000 -vt 0.562500 1.000000 -vt 0.625000 1.000000 -vt 0.687500 1.000000 -vt 0.750000 1.000000 -vt 0.812500 1.000000 -vt 0.875000 1.000000 -vt 0.937500 1.000000 -vt 1.000000 1.000000 -vt 0.062500 1.000000 -vt -0.000000 1.000000 -vt 0.125000 1.000000 -vt 0.187500 1.000000 -vt 0.250000 1.000000 -vt 0.312500 1.000000 -vt 0.375000 1.000000 -vt 0.031303 0.999906 -vt 0.037377 0.999307 -vt 0.043218 0.997535 -vt 0.048601 0.994658 -vt 0.053319 0.990786 -vt 0.057192 0.986068 -vt 0.060069 0.980685 -vt 0.061841 0.974844 -vt 0.062439 0.968769 -vt 0.061841 0.962695 -vt 0.060069 0.956854 -vt 0.057192 0.951471 -vt 0.053319 0.946753 -vt 0.048601 0.942881 -vt 0.043218 0.940004 -vt 0.037377 0.938232 -vt 0.031303 0.937633 -vt 0.025229 0.938232 -vt 0.019388 0.940004 -vt 0.014005 0.942881 -vt 0.009286 0.946753 -vt 0.005414 0.951471 -vt 0.002537 0.956854 -vt 0.000765 0.962695 -vt 0.000167 0.968770 -vt 0.000765 0.974844 -vt 0.002537 0.980685 -vt 0.005414 0.986068 -vt 0.009286 0.990786 -vt 0.014005 0.994658 -vt 0.019388 0.997535 -vt 0.025229 0.999307 -vn -0.710100 0.704000 0.000000 -vn -0.559800 0.828600 0.000000 -vn -0.549000 0.828600 -0.109200 -vn -0.696500 0.704000 -0.138500 -vn -0.182000 -0.983300 0.000000 -vn -0.387900 -0.921700 0.000000 -vn -0.380400 -0.921700 -0.075700 -vn -0.178400 -0.983300 -0.035500 -vn -0.387900 0.921700 0.000000 -vn -0.182000 0.983300 0.000000 -vn -0.178400 0.983300 -0.035500 -vn -0.380400 0.921700 -0.075700 -vn -0.559800 -0.828600 0.000000 -vn -0.710100 -0.704000 0.000000 -vn -0.696500 -0.704000 -0.138500 -vn -0.549000 -0.828600 -0.109200 -vn -0.833300 -0.552800 0.000000 -vn -0.924700 -0.380500 0.000000 -vn -0.907000 -0.380500 -0.180400 -vn -0.817300 -0.552800 -0.162600 -vn -0.981000 -0.193900 0.000000 -vn -1.000000 0.000000 0.000000 -vn -0.980800 0.000000 -0.195100 -vn -0.962200 -0.193900 -0.191400 -vn -0.981000 0.193900 0.000000 -vn -0.924700 0.380500 0.000000 -vn -0.907000 0.380500 -0.180400 -vn -0.962200 0.193900 -0.191400 -vn -0.833300 0.552800 0.000000 -vn -0.817300 0.552800 -0.162600 -vn -0.906300 -0.193900 -0.375400 -vn -0.854400 -0.380500 -0.353900 -vn -0.906300 0.193900 -0.375400 -vn -0.923900 0.000000 -0.382700 -vn -0.769900 0.552800 -0.318900 -vn -0.854400 0.380500 -0.353900 -vn -0.517100 0.828600 -0.214200 -vn -0.656100 0.704000 -0.271700 -vn -0.358300 -0.921700 -0.148400 -vn -0.168100 -0.983300 -0.069600 -vn -0.168100 0.983300 -0.069600 -vn -0.358300 0.921700 -0.148400 -vn -0.656100 -0.704000 -0.271700 -vn -0.517100 -0.828600 -0.214200 -vn -0.769900 -0.552800 -0.318900 -vn -0.815700 -0.193900 -0.545000 -vn -0.768900 -0.380500 -0.513700 -vn -0.815700 0.193900 -0.545000 -vn -0.831400 0.000000 -0.555600 -vn -0.692900 0.552800 -0.463000 -vn -0.768900 0.380500 -0.513700 -vn -0.465400 0.828600 -0.311000 -vn -0.590400 0.704000 -0.394500 -vn -0.322500 -0.921700 -0.215500 -vn -0.151300 -0.983300 -0.101100 -vn -0.151300 0.983300 -0.101100 -vn -0.322500 0.921700 -0.215500 -vn -0.590400 -0.704000 -0.394500 -vn -0.465400 -0.828600 -0.311000 -vn -0.692900 -0.552800 -0.463000 -vn -0.693700 -0.193900 -0.693700 -vn -0.653900 -0.380500 -0.653900 -vn -0.693700 0.193900 -0.693700 -vn -0.707100 0.000000 -0.707100 -vn -0.589300 0.552800 -0.589300 -vn -0.653900 0.380500 -0.653900 -vn -0.395800 0.828600 -0.395800 -vn -0.502100 0.704000 -0.502100 -vn -0.274300 -0.921700 -0.274300 -vn -0.128600 -0.983300 -0.128600 -vn -0.128600 0.983300 -0.128600 -vn -0.274300 0.921700 -0.274300 -vn -0.502100 -0.704000 -0.502100 -vn -0.395800 -0.828600 -0.395800 -vn -0.589300 -0.552800 -0.589300 -vn -0.545000 -0.193900 -0.815700 -vn -0.513700 -0.380500 -0.768900 -vn -0.545000 0.193900 -0.815700 -vn -0.555600 0.000000 -0.831400 -vn -0.463000 0.552800 -0.692900 -vn -0.513700 0.380500 -0.768900 -vn -0.311000 0.828600 -0.465400 -vn -0.394500 0.704000 -0.590400 -vn -0.215500 -0.921700 -0.322500 -vn -0.101100 -0.983300 -0.151300 -vn -0.101100 0.983300 -0.151300 -vn -0.215500 0.921700 -0.322500 -vn -0.394500 -0.704000 -0.590400 -vn -0.311000 -0.828600 -0.465400 -vn -0.463000 -0.552800 -0.692900 -vn -0.375400 -0.193900 -0.906300 -vn -0.353900 -0.380500 -0.854400 -vn -0.375400 0.193900 -0.906300 -vn -0.382700 0.000000 -0.923900 -vn -0.318900 0.552800 -0.769900 -vn -0.353900 0.380500 -0.854400 -vn -0.214200 0.828600 -0.517100 -vn -0.271700 0.704000 -0.656100 -vn -0.148400 -0.921700 -0.358300 -vn -0.069600 -0.983300 -0.168100 -vn -0.069600 0.983300 -0.168100 -vn -0.148400 0.921700 -0.358300 -vn -0.271700 -0.704000 -0.656100 -vn -0.214200 -0.828600 -0.517100 -vn -0.318900 -0.552800 -0.769900 -vn -0.191400 -0.193900 -0.962200 -vn -0.180400 -0.380500 -0.907000 -vn -0.191400 0.193900 -0.962200 -vn -0.195100 0.000000 -0.980800 -vn -0.162600 0.552800 -0.817300 -vn -0.180400 0.380500 -0.907000 -vn -0.109200 0.828600 -0.549000 -vn -0.138500 0.704000 -0.696500 -vn -0.075700 -0.921700 -0.380400 -vn -0.035500 -0.983300 -0.178400 -vn -0.035500 0.983300 -0.178400 -vn -0.075700 0.921700 -0.380400 -vn -0.138500 -0.704000 -0.696500 -vn -0.109200 -0.828600 -0.549000 -vn -0.162600 -0.552800 -0.817300 -vn 0.000000 -0.193900 -0.981000 -vn 0.000000 -0.380500 -0.924700 -vn 0.000000 0.193900 -0.981000 -vn 0.000000 0.000000 -1.000000 -vn 0.000000 0.552800 -0.833300 -vn 0.000000 0.380500 -0.924700 -vn 0.000000 0.828600 -0.559800 -vn 0.000000 0.704000 -0.710100 -vn 0.000000 -0.921700 -0.387900 -vn 0.000000 -0.983300 -0.182000 -vn 0.000000 0.983300 -0.182000 -vn 0.000000 0.921700 -0.387900 -vn 0.000000 -0.704000 -0.710100 -vn 0.000000 -0.828600 -0.559800 -vn 0.000000 -0.552800 -0.833300 -vn 0.191400 -0.193900 -0.962200 -vn 0.180400 -0.380500 -0.907000 -vn 0.191400 0.193900 -0.962200 -vn 0.195100 0.000000 -0.980800 -vn 0.162600 0.552800 -0.817300 -vn 0.180400 0.380500 -0.907000 -vn 0.109200 0.828600 -0.549000 -vn 0.138500 0.704000 -0.696500 -vn 0.075700 -0.921700 -0.380400 -vn 0.035500 -0.983300 -0.178400 -vn 0.035500 0.983300 -0.178400 -vn 0.075700 0.921700 -0.380400 -vn 0.138500 -0.704000 -0.696500 -vn 0.109200 -0.828600 -0.549000 -vn 0.162600 -0.552800 -0.817300 -vn 0.375400 -0.193900 -0.906300 -vn 0.353900 -0.380500 -0.854400 -vn 0.375400 0.193900 -0.906300 -vn 0.382700 0.000000 -0.923900 -vn 0.318900 0.552800 -0.769900 -vn 0.353900 0.380500 -0.854400 -vn 0.214200 0.828600 -0.517100 -vn 0.271700 0.704000 -0.656100 -vn 0.148400 -0.921700 -0.358300 -vn 0.069600 -0.983300 -0.168100 -vn 0.069600 0.983300 -0.168100 -vn 0.148400 0.921700 -0.358300 -vn 0.271700 -0.704000 -0.656100 -vn 0.214200 -0.828600 -0.517100 -vn 0.318900 -0.552800 -0.769900 -vn 0.545000 -0.193900 -0.815700 -vn 0.513700 -0.380500 -0.768900 -vn 0.545000 0.193900 -0.815700 -vn 0.555600 0.000000 -0.831400 -vn 0.463000 0.552800 -0.692900 -vn 0.513700 0.380500 -0.768900 -vn 0.311000 0.828600 -0.465400 -vn 0.394500 0.704000 -0.590400 -vn 0.215500 -0.921700 -0.322500 -vn 0.101100 -0.983300 -0.151300 -vn 0.101100 0.983300 -0.151300 -vn 0.215500 0.921700 -0.322500 -vn 0.394500 -0.704000 -0.590400 -vn 0.311000 -0.828600 -0.465400 -vn 0.463000 -0.552800 -0.692900 -vn 0.693700 -0.193900 -0.693700 -vn 0.653900 -0.380500 -0.653900 -vn 0.693700 0.193900 -0.693700 -vn 0.707100 0.000000 -0.707100 -vn 0.589300 0.552800 -0.589300 -vn 0.653900 0.380500 -0.653900 -vn 0.395800 0.828600 -0.395800 -vn 0.502100 0.704000 -0.502100 -vn 0.274300 -0.921700 -0.274300 -vn 0.128600 -0.983300 -0.128600 -vn 0.128600 0.983300 -0.128600 -vn 0.274300 0.921700 -0.274300 -vn 0.502100 -0.704000 -0.502100 -vn 0.395800 -0.828600 -0.395800 -vn 0.589300 -0.552800 -0.589300 -vn 0.815700 -0.193900 -0.545000 -vn 0.768900 -0.380500 -0.513700 -vn 0.815700 0.193900 -0.545000 -vn 0.831400 0.000000 -0.555600 -vn 0.692900 0.552800 -0.463000 -vn 0.768900 0.380500 -0.513700 -vn 0.465400 0.828600 -0.311000 -vn 0.590400 0.704000 -0.394500 -vn 0.322500 -0.921700 -0.215500 -vn 0.151300 -0.983300 -0.101100 -vn 0.151300 0.983300 -0.101100 -vn 0.322500 0.921700 -0.215500 -vn 0.590400 -0.704000 -0.394500 -vn 0.465400 -0.828600 -0.311000 -vn 0.692900 -0.552800 -0.463000 -vn 0.906300 -0.193900 -0.375400 -vn 0.854400 -0.380500 -0.353900 -vn 0.906300 0.193900 -0.375400 -vn 0.923900 0.000000 -0.382700 -vn 0.769900 0.552800 -0.318900 -vn 0.854400 0.380500 -0.353900 -vn 0.517100 0.828600 -0.214200 -vn 0.656100 0.704000 -0.271700 -vn 0.358300 -0.921700 -0.148400 -vn 0.168100 -0.983300 -0.069600 -vn 0.168100 0.983300 -0.069600 -vn 0.358300 0.921700 -0.148400 -vn 0.656100 -0.704000 -0.271700 -vn 0.517100 -0.828600 -0.214200 -vn 0.769900 -0.552800 -0.318900 -vn 0.962200 -0.193900 -0.191400 -vn 0.907000 -0.380500 -0.180400 -vn 0.962200 0.193900 -0.191400 -vn 0.980800 0.000000 -0.195100 -vn 0.817300 0.552800 -0.162600 -vn 0.907000 0.380500 -0.180400 -vn 0.549000 0.828600 -0.109200 -vn 0.696500 0.704000 -0.138500 -vn 0.380400 -0.921700 -0.075700 -vn 0.178400 -0.983300 -0.035500 -vn 0.178400 0.983300 -0.035500 -vn 0.380400 0.921700 -0.075700 -vn 0.696500 -0.704000 -0.138500 -vn 0.549000 -0.828600 -0.109200 -vn 0.817300 -0.552800 -0.162600 -vn 0.981000 -0.193900 0.000000 -vn 0.924700 -0.380500 0.000000 -vn 0.981000 0.193900 0.000000 -vn 1.000000 0.000000 0.000000 -vn 0.833300 0.552800 0.000000 -vn 0.924700 0.380500 0.000000 -vn 0.559800 0.828600 0.000000 -vn 0.710100 0.704000 0.000000 -vn 0.387900 -0.921700 0.000000 -vn 0.182000 -0.983300 0.000000 -vn 0.182000 0.983300 0.000000 -vn 0.387900 0.921700 0.000000 -vn 0.710100 -0.704000 0.000000 -vn 0.559800 -0.828600 0.000000 -vn 0.833300 -0.552800 0.000000 -vn 0.962200 -0.193900 0.191400 -vn 0.907000 -0.380500 0.180400 -vn 0.962200 0.193900 0.191400 -vn 0.980800 0.000000 0.195100 -vn 0.817300 0.552800 0.162600 -vn 0.907000 0.380500 0.180400 -vn 0.549000 0.828600 0.109200 -vn 0.696500 0.704000 0.138500 -vn 0.380400 -0.921700 0.075700 -vn 0.178400 -0.983300 0.035500 -vn 0.178400 0.983300 0.035500 -vn 0.380400 0.921700 0.075700 -vn 0.696500 -0.704000 0.138500 -vn 0.549000 -0.828600 0.109200 -vn 0.817300 -0.552800 0.162600 -vn 0.906300 -0.193900 0.375400 -vn 0.854400 -0.380500 0.353900 -vn 0.906300 0.193900 0.375400 -vn 0.923900 0.000000 0.382700 -vn 0.769900 0.552800 0.318900 -vn 0.854400 0.380500 0.353900 -vn 0.517100 0.828600 0.214200 -vn 0.656100 0.704000 0.271700 -vn 0.358300 -0.921700 0.148400 -vn 0.168100 -0.983300 0.069600 -vn 0.168100 0.983300 0.069600 -vn 0.358300 0.921700 0.148400 -vn 0.656100 -0.704000 0.271700 -vn 0.517100 -0.828600 0.214200 -vn 0.769900 -0.552800 0.318900 -vn 0.815700 -0.193900 0.545000 -vn 0.768900 -0.380500 0.513700 -vn 0.815700 0.193900 0.545000 -vn 0.831400 0.000000 0.555600 -vn 0.692900 0.552800 0.463000 -vn 0.768900 0.380500 0.513700 -vn 0.465400 0.828600 0.311000 -vn 0.590400 0.704000 0.394500 -vn 0.322500 -0.921700 0.215500 -vn 0.151300 -0.983300 0.101100 -vn 0.151300 0.983300 0.101100 -vn 0.322500 0.921700 0.215500 -vn 0.590400 -0.704000 0.394500 -vn 0.465400 -0.828600 0.311000 -vn 0.692900 -0.552800 0.463000 -vn 0.693700 -0.193900 0.693700 -vn 0.653900 -0.380500 0.653900 -vn 0.693700 0.193900 0.693700 -vn 0.707100 0.000000 0.707100 -vn 0.589300 0.552800 0.589300 -vn 0.653900 0.380500 0.653900 -vn 0.395800 0.828600 0.395800 -vn 0.502100 0.704000 0.502100 -vn 0.274300 -0.921700 0.274300 -vn 0.128600 -0.983300 0.128600 -vn 0.128600 0.983300 0.128600 -vn 0.274300 0.921700 0.274300 -vn 0.502100 -0.704000 0.502100 -vn 0.395800 -0.828600 0.395800 -vn 0.589300 -0.552800 0.589300 -vn 0.545000 -0.193900 0.815700 -vn 0.513700 -0.380500 0.768900 -vn 0.545000 0.193900 0.815700 -vn 0.555600 0.000000 0.831400 -vn 0.463000 0.552800 0.692900 -vn 0.513700 0.380500 0.768900 -vn 0.311000 0.828600 0.465400 -vn 0.394500 0.704000 0.590400 -vn 0.215500 -0.921700 0.322500 -vn 0.101100 -0.983300 0.151300 -vn 0.101100 0.983300 0.151300 -vn 0.215500 0.921700 0.322500 -vn 0.394500 -0.704000 0.590400 -vn 0.311000 -0.828600 0.465400 -vn 0.463000 -0.552800 0.692900 -vn 0.375400 -0.193900 0.906300 -vn 0.353900 -0.380500 0.854400 -vn 0.375400 0.193900 0.906300 -vn 0.382700 0.000000 0.923900 -vn 0.318900 0.552800 0.769900 -vn 0.353900 0.380500 0.854400 -vn 0.214200 0.828600 0.517100 -vn 0.271700 0.704000 0.656100 -vn 0.148400 -0.921700 0.358300 -vn 0.069600 -0.983300 0.168100 -vn 0.069600 0.983300 0.168100 -vn 0.148400 0.921700 0.358300 -vn 0.271700 -0.704000 0.656100 -vn 0.214200 -0.828600 0.517100 -vn 0.318900 -0.552800 0.769900 -vn 0.191400 -0.193900 0.962200 -vn 0.180400 -0.380500 0.907000 -vn 0.191400 0.193900 0.962200 -vn 0.195100 0.000000 0.980800 -vn 0.162600 0.552800 0.817300 -vn 0.180400 0.380500 0.907000 -vn 0.109200 0.828600 0.549000 -vn 0.138500 0.704000 0.696500 -vn 0.075700 -0.921700 0.380400 -vn 0.035500 -0.983300 0.178400 -vn 0.035500 0.983300 0.178400 -vn 0.075700 0.921700 0.380400 -vn 0.138500 -0.704000 0.696500 -vn 0.109200 -0.828600 0.549000 -vn 0.162600 -0.552800 0.817300 -vn 0.000000 -0.193900 0.981000 -vn 0.000000 -0.380500 0.924700 -vn 0.000000 0.193900 0.981000 -vn 0.000000 0.000000 1.000000 -vn 0.000000 0.552800 0.833300 -vn 0.000000 0.380500 0.924700 -vn 0.000000 0.828600 0.559800 -vn 0.000000 0.704000 0.710100 -vn 0.000000 -0.921700 0.387900 -vn 0.000000 -0.983300 0.182000 -vn 0.000000 0.983300 0.182000 -vn 0.000000 0.921700 0.387900 -vn 0.000000 -0.704000 0.710100 -vn 0.000000 -0.828600 0.559800 -vn 0.000000 -0.552800 0.833300 -vn -0.191400 -0.193900 0.962200 -vn -0.180400 -0.380500 0.907000 -vn -0.191400 0.193900 0.962200 -vn -0.195100 0.000000 0.980800 -vn -0.162600 0.552800 0.817300 -vn -0.180400 0.380500 0.907000 -vn -0.109200 0.828600 0.549000 -vn -0.138500 0.704000 0.696500 -vn -0.075700 -0.921700 0.380400 -vn -0.035500 -0.983300 0.178400 -vn -0.035500 0.983300 0.178400 -vn -0.075700 0.921700 0.380400 -vn -0.138500 -0.704000 0.696500 -vn -0.109200 -0.828600 0.549000 -vn -0.162600 -0.552800 0.817300 -vn -0.375400 -0.193900 0.906300 -vn -0.353900 -0.380500 0.854400 -vn -0.375400 0.193900 0.906300 -vn -0.382700 0.000000 0.923900 -vn -0.318900 0.552800 0.769900 -vn -0.353900 0.380500 0.854400 -vn -0.214200 0.828600 0.517100 -vn -0.271700 0.704000 0.656100 -vn -0.148400 -0.921700 0.358300 -vn -0.069600 -0.983300 0.168100 -vn -0.069600 0.983300 0.168100 -vn -0.148400 0.921700 0.358300 -vn -0.271700 -0.704000 0.656100 -vn -0.214200 -0.828600 0.517100 -vn -0.318900 -0.552800 0.769900 -vn -0.545000 -0.193900 0.815700 -vn -0.513700 -0.380500 0.768900 -vn -0.545000 0.193900 0.815700 -vn -0.555600 0.000000 0.831400 -vn -0.463000 0.552800 0.692900 -vn -0.513700 0.380500 0.768900 -vn -0.311000 0.828600 0.465400 -vn -0.394500 0.704000 0.590400 -vn -0.215500 -0.921700 0.322500 -vn -0.101100 -0.983300 0.151300 -vn -0.101100 0.983300 0.151300 -vn -0.215500 0.921700 0.322500 -vn -0.394500 -0.704000 0.590400 -vn -0.311000 -0.828600 0.465400 -vn -0.463000 -0.552800 0.692900 -vn -0.693700 -0.193900 0.693700 -vn -0.653900 -0.380500 0.653900 -vn -0.693700 0.193900 0.693700 -vn -0.707100 0.000000 0.707100 -vn -0.589300 0.552800 0.589300 -vn -0.653900 0.380500 0.653900 -vn -0.395800 0.828600 0.395800 -vn -0.502100 0.704000 0.502100 -vn -0.274300 -0.921700 0.274300 -vn -0.128600 -0.983300 0.128600 -vn -0.128600 0.983300 0.128600 -vn -0.274300 0.921700 0.274300 -vn -0.502100 -0.704000 0.502100 -vn -0.395800 -0.828600 0.395800 -vn -0.589300 -0.552800 0.589300 -vn -0.815700 -0.193900 0.545000 -vn -0.768900 -0.380500 0.513700 -vn -0.815700 0.193900 0.545000 -vn -0.831400 0.000000 0.555600 -vn -0.692900 0.552800 0.463000 -vn -0.768900 0.380500 0.513700 -vn -0.465400 0.828600 0.311000 -vn -0.590400 0.704000 0.394500 -vn -0.322500 -0.921700 0.215500 -vn -0.151300 -0.983300 0.101100 -vn -0.151300 0.983300 0.101100 -vn -0.322500 0.921700 0.215500 -vn -0.590400 -0.704000 0.394500 -vn -0.465400 -0.828600 0.311000 -vn -0.692900 -0.552800 0.463000 -vn -0.906300 -0.193900 0.375400 -vn -0.854400 -0.380500 0.353900 -vn -0.906300 0.193900 0.375400 -vn -0.923900 0.000000 0.382700 -vn -0.769900 0.552800 0.318900 -vn -0.854400 0.380500 0.353900 -vn -0.517100 0.828600 0.214200 -vn -0.656100 0.704000 0.271700 -vn -0.358300 -0.921700 0.148400 -vn -0.168100 -0.983300 0.069600 -vn -0.168100 0.983300 0.069600 -vn -0.358300 0.921700 0.148400 -vn -0.656100 -0.704000 0.271700 -vn -0.517100 -0.828600 0.214200 -vn -0.769900 -0.552800 0.318900 -vn -0.962200 -0.193900 0.191400 -vn -0.907000 -0.380500 0.180400 -vn -0.962200 0.193900 0.191400 -vn -0.980800 0.000000 0.195100 -vn -0.817300 0.552800 0.162600 -vn -0.907000 0.380500 0.180400 -vn -0.549000 0.828600 0.109200 -vn -0.696500 0.704000 0.138500 -vn -0.380400 -0.921700 0.075700 -vn -0.178400 -0.983300 0.035500 -vn -0.178400 0.983300 0.035500 -vn -0.380400 0.921700 0.075700 -vn -0.696500 -0.704000 0.138500 -vn -0.549000 -0.828600 0.109200 -vn -0.817300 -0.552800 0.162600 -vn -0.030200 -0.999500 0.000000 -vn -0.029600 -0.999500 -0.005900 -vn -0.027900 -0.999500 -0.011500 -vn -0.025100 -0.999500 -0.016800 -vn -0.021300 -0.999500 -0.021300 -vn -0.016800 -0.999500 -0.025100 -vn -0.011500 -0.999500 -0.027900 -vn -0.005900 -0.999500 -0.029600 -vn 0.000000 -0.999500 -0.030200 -vn 0.005900 -0.999500 -0.029600 -vn 0.011500 -0.999500 -0.027900 -vn 0.016800 -0.999500 -0.025100 -vn 0.021300 -0.999500 -0.021300 -vn 0.025100 -0.999500 -0.016800 -vn 0.027900 -0.999500 -0.011500 -vn 0.029600 -0.999500 -0.005900 -vn 0.030200 -0.999500 0.000000 -vn 0.029600 -0.999500 0.005900 -vn 0.027900 -0.999500 0.011500 -vn 0.025100 -0.999500 0.016800 -vn 0.021300 -0.999500 0.021300 -vn 0.016800 -0.999500 0.025100 -vn 0.011500 -0.999500 0.027900 -vn 0.005900 -0.999500 0.029600 -vn 0.000000 -0.999500 0.030200 -vn -0.005900 -0.999500 0.029600 -vn -0.011500 -0.999500 0.027900 -vn -0.016800 -0.999500 0.025100 -vn -0.021300 -0.999500 0.021300 -vn -0.025100 -0.999500 0.016800 -vn -0.027900 -0.999500 0.011500 -vn -0.029600 -0.999500 0.005900 -vn -0.029600 0.999500 0.005900 -vn -0.030200 0.999500 0.000000 -vn -0.027900 0.999500 0.011500 -vn -0.025100 0.999500 0.016800 -vn -0.021300 0.999500 0.021300 -vn -0.016800 0.999500 0.025100 -vn -0.011500 0.999500 0.027900 -vn -0.005900 0.999500 0.029600 -vn 0.000000 0.999500 0.030200 -vn 0.005900 0.999500 0.029600 -vn 0.011500 0.999500 0.027900 -vn 0.016800 0.999500 0.025100 -vn 0.021300 0.999500 0.021300 -vn 0.025100 0.999500 0.016800 -vn 0.027900 0.999500 0.011500 -vn 0.029600 0.999500 0.005900 -vn 0.030200 0.999500 0.000000 -vn 0.029600 0.999500 -0.005900 -vn 0.027900 0.999500 -0.011500 -vn 0.025100 0.999500 -0.016800 -vn 0.021300 0.999500 -0.021300 -vn 0.016800 0.999500 -0.025100 -vn 0.011500 0.999500 -0.027900 -vn 0.005900 0.999500 -0.029600 -vn 0.000000 0.999500 -0.030200 -vn -0.005900 0.999500 -0.029600 -vn -0.011500 0.999500 -0.027900 -vn -0.016800 0.999500 -0.025100 -vn -0.021300 0.999500 -0.021300 -vn -0.025100 0.999500 -0.016800 -vn -0.027900 0.999500 -0.011500 -vn -0.029600 0.999500 -0.005900 -s 1 -f 4/1/1 3/2/2 18/3/3 19/4/4 -f 15/5/5 14/6/6 29/7/7 30/8/8 -f 2/9/9 1/10/10 16/11/11 17/12/12 -f 13/13/13 12/14/14 27/15/15 28/16/16 -f 11/17/17 10/18/18 25/19/19 26/20/20 -f 9/21/21 8/22/22 23/23/23 24/24/24 -f 7/25/25 6/26/26 21/27/27 22/28/28 -f 5/29/29 4/1/1 19/4/4 20/30/30 -f 3/2/2 2/9/9 17/12/12 18/3/3 -f 14/6/6 13/13/13 28/16/16 29/7/7 -f 12/14/14 11/17/17 26/20/20 27/15/15 -f 10/18/18 9/21/21 24/24/24 25/19/19 -f 8/22/22 7/25/25 22/28/28 23/23/23 -f 6/26/26 5/29/29 20/30/30 21/27/27 -f 25/19/19 24/24/24 39/31/31 40/32/32 -f 23/23/23 22/28/28 37/33/33 38/34/34 -f 21/27/27 20/30/30 35/35/35 36/36/36 -f 19/4/4 18/3/3 33/37/37 34/38/38 -f 30/8/8 29/7/7 44/39/39 45/40/40 -f 17/12/12 16/11/11 31/41/41 32/42/42 -f 28/16/16 27/15/15 42/43/43 43/44/44 -f 26/20/20 25/19/19 40/32/32 41/45/45 -f 24/24/24 23/23/23 38/34/34 39/31/31 -f 22/28/28 21/27/27 36/36/36 37/33/33 -f 20/30/30 19/4/4 34/38/38 35/35/35 -f 18/3/3 17/12/12 32/42/42 33/37/37 -f 29/7/7 28/16/16 43/44/44 44/39/39 -f 27/15/15 26/20/20 41/45/45 42/43/43 -f 40/32/32 39/31/31 54/46/46 55/47/47 -f 38/34/34 37/33/33 52/48/48 53/49/49 -f 36/36/36 35/35/35 50/50/50 51/51/51 -f 34/38/38 33/37/37 48/52/52 49/53/53 -f 45/40/40 44/39/39 59/54/54 60/55/55 -f 32/42/42 31/41/41 46/56/56 47/57/57 -f 43/44/44 42/43/43 57/58/58 58/59/59 -f 41/45/45 40/32/32 55/47/47 56/60/60 -f 39/31/31 38/34/34 53/49/49 54/46/46 -f 37/33/33 36/36/36 51/51/51 52/48/48 -f 35/35/35 34/38/38 49/53/53 50/50/50 -f 33/37/37 32/42/42 47/57/57 48/52/52 -f 44/39/39 43/44/44 58/59/59 59/54/54 -f 42/43/43 41/45/45 56/60/60 57/58/58 -f 55/47/47 54/46/46 69/61/61 70/62/62 -f 53/49/49 52/48/48 67/63/63 68/64/64 -f 51/51/51 50/50/50 65/65/65 66/66/66 -f 49/53/53 48/52/52 63/67/67 64/68/68 -f 60/55/55 59/54/54 74/69/69 75/70/70 -f 47/57/57 46/56/56 61/71/71 62/72/72 -f 58/59/59 57/58/58 72/73/73 73/74/74 -f 56/60/60 55/47/47 70/62/62 71/75/75 -f 54/46/46 53/49/49 68/64/64 69/61/61 -f 52/48/48 51/51/51 66/66/66 67/63/63 -f 50/50/50 49/53/53 64/68/68 65/65/65 -f 48/52/52 47/57/57 62/72/72 63/67/67 -f 59/54/54 58/59/59 73/74/74 74/69/69 -f 57/58/58 56/60/60 71/75/75 72/73/73 -f 70/62/62 69/61/61 84/76/76 85/77/77 -f 68/64/64 67/63/63 82/78/78 83/79/79 -f 66/66/66 65/65/65 80/80/80 81/81/81 -f 64/68/68 63/67/67 78/82/82 79/83/83 -f 75/70/70 74/69/69 89/84/84 90/85/85 -f 62/72/72 61/71/71 76/86/86 77/87/87 -f 73/74/74 72/73/73 87/88/88 88/89/89 -f 71/75/75 70/62/62 85/77/77 86/90/90 -f 69/61/61 68/64/64 83/79/79 84/76/76 -f 67/63/63 66/66/66 81/81/81 82/78/78 -f 65/65/65 64/68/68 79/83/83 80/80/80 -f 63/67/67 62/72/72 77/87/87 78/82/82 -f 74/69/69 73/74/74 88/89/89 89/84/84 -f 72/73/73 71/75/75 86/90/90 87/88/88 -f 85/77/77 84/76/76 99/91/91 100/92/92 -f 83/79/79 82/78/78 97/93/93 98/94/94 -f 81/81/81 80/80/80 95/95/95 96/96/96 -f 79/83/83 78/82/82 93/97/97 94/98/98 -f 90/85/85 89/84/84 104/99/99 105/100/100 -f 77/87/87 76/86/86 91/101/101 92/102/102 -f 88/89/89 87/88/88 102/103/103 103/104/104 -f 86/90/90 85/77/77 100/92/92 101/105/105 -f 84/76/76 83/79/79 98/94/94 99/91/91 -f 82/78/78 81/81/81 96/96/96 97/93/93 -f 80/80/80 79/83/83 94/98/98 95/95/95 -f 78/82/82 77/87/87 92/102/102 93/97/97 -f 89/84/84 88/89/89 103/104/104 104/99/99 -f 87/88/88 86/90/90 101/105/105 102/103/103 -f 100/92/92 99/91/91 114/106/106 115/107/107 -f 98/94/94 97/93/93 112/108/108 113/109/109 -f 96/96/96 95/95/95 110/110/110 111/111/111 -f 94/98/98 93/97/97 108/112/112 109/113/113 -f 105/100/100 104/99/99 119/114/114 120/115/115 -f 92/102/102 91/101/101 106/116/116 107/117/117 -f 103/104/104 102/103/103 117/118/118 118/119/119 -f 101/105/105 100/92/92 115/107/107 116/120/120 -f 99/91/91 98/94/94 113/109/109 114/106/106 -f 97/93/93 96/96/96 111/111/111 112/108/108 -f 95/95/95 94/98/98 109/113/113 110/110/110 -f 93/97/97 92/102/102 107/117/117 108/112/112 -f 104/99/99 103/104/104 118/119/119 119/114/114 -f 102/103/103 101/105/105 116/120/120 117/118/118 -f 115/121/107 114/122/106 129/123/121 130/124/122 -f 113/125/109 112/126/108 127/127/123 128/128/124 -f 111/129/111 110/130/110 125/131/125 126/132/126 -f 109/133/113 108/134/112 123/135/127 124/136/128 -f 120/137/115 119/138/114 134/139/129 135/140/130 -f 107/141/117 106/142/116 121/143/131 122/144/132 -f 118/145/119 117/146/118 132/147/133 133/148/134 -f 116/149/120 115/121/107 130/124/122 131/150/135 -f 114/122/106 113/125/109 128/128/124 129/123/121 -f 112/126/108 111/129/111 126/132/126 127/127/123 -f 110/130/110 109/133/113 124/136/128 125/131/125 -f 108/134/112 107/141/117 122/144/132 123/135/127 -f 119/138/114 118/145/119 133/148/134 134/139/129 -f 117/146/118 116/149/120 131/150/135 132/147/133 -f 130/124/122 129/123/121 144/151/136 145/152/137 -f 128/128/124 127/127/123 142/153/138 143/154/139 -f 126/132/126 125/131/125 140/155/140 141/156/141 -f 124/136/128 123/135/127 138/157/142 139/158/143 -f 135/140/130 134/139/129 149/159/144 150/160/145 -f 122/144/132 121/143/131 136/161/146 137/162/147 -f 133/148/134 132/147/133 147/163/148 148/164/149 -f 131/150/135 130/124/122 145/152/137 146/165/150 -f 129/123/121 128/128/124 143/154/139 144/151/136 -f 127/127/123 126/132/126 141/156/141 142/153/138 -f 125/131/125 124/136/128 139/158/143 140/155/140 -f 123/135/127 122/144/132 137/162/147 138/157/142 -f 134/139/129 133/148/134 148/164/149 149/159/144 -f 132/147/133 131/150/135 146/165/150 147/163/148 -f 145/152/137 144/151/136 159/166/151 160/167/152 -f 143/154/139 142/153/138 157/168/153 158/169/154 -f 141/156/141 140/155/140 155/170/155 156/171/156 -f 139/158/143 138/157/142 153/172/157 154/173/158 -f 150/160/145 149/159/144 164/174/159 165/175/160 -f 137/162/147 136/161/146 151/176/161 152/177/162 -f 148/164/149 147/163/148 162/178/163 163/179/164 -f 146/165/150 145/152/137 160/167/152 161/180/165 -f 144/151/136 143/154/139 158/169/154 159/166/151 -f 142/153/138 141/156/141 156/171/156 157/168/153 -f 140/155/140 139/158/143 154/173/158 155/170/155 -f 138/157/142 137/162/147 152/177/162 153/172/157 -f 149/159/144 148/164/149 163/179/164 164/174/159 -f 147/163/148 146/165/150 161/180/165 162/178/163 -f 160/167/152 159/166/151 174/181/166 175/182/167 -f 158/169/154 157/168/153 172/183/168 173/184/169 -f 156/171/156 155/170/155 170/185/170 171/186/171 -f 154/173/158 153/172/157 168/187/172 169/188/173 -f 165/175/160 164/174/159 179/189/174 180/190/175 -f 152/177/162 151/176/161 166/191/176 167/192/177 -f 163/179/164 162/178/163 177/193/178 178/194/179 -f 161/180/165 160/167/152 175/182/167 176/195/180 -f 159/166/151 158/169/154 173/184/169 174/181/166 -f 157/168/153 156/171/156 171/186/171 172/183/168 -f 155/170/155 154/173/158 169/188/173 170/185/170 -f 153/172/157 152/177/162 167/192/177 168/187/172 -f 164/174/159 163/179/164 178/194/179 179/189/174 -f 162/178/163 161/180/165 176/195/180 177/193/178 -f 175/182/167 174/181/166 189/196/181 190/197/182 -f 173/184/169 172/183/168 187/198/183 188/199/184 -f 171/186/171 170/185/170 185/200/185 186/201/186 -f 169/188/173 168/187/172 183/202/187 184/203/188 -f 180/190/175 179/189/174 194/204/189 195/205/190 -f 167/192/177 166/191/176 181/206/191 182/207/192 -f 178/194/179 177/193/178 192/208/193 193/209/194 -f 176/195/180 175/182/167 190/197/182 191/210/195 -f 174/181/166 173/184/169 188/199/184 189/196/181 -f 172/183/168 171/186/171 186/201/186 187/198/183 -f 170/185/170 169/188/173 184/203/188 185/200/185 -f 168/187/172 167/192/177 182/207/192 183/202/187 -f 179/189/174 178/194/179 193/209/194 194/204/189 -f 177/193/178 176/195/180 191/210/195 192/208/193 -f 190/197/182 189/196/181 204/211/196 205/212/197 -f 188/199/184 187/198/183 202/213/198 203/214/199 -f 186/201/186 185/200/185 200/215/200 201/216/201 -f 184/203/188 183/202/187 198/217/202 199/218/203 -f 195/205/190 194/204/189 209/219/204 210/220/205 -f 182/207/192 181/206/191 196/221/206 197/222/207 -f 193/209/194 192/208/193 207/223/208 208/224/209 -f 191/210/195 190/197/182 205/212/197 206/225/210 -f 189/196/181 188/199/184 203/214/199 204/211/196 -f 187/198/183 186/201/186 201/216/201 202/213/198 -f 185/200/185 184/203/188 199/218/203 200/215/200 -f 183/202/187 182/207/192 197/222/207 198/217/202 -f 194/204/189 193/209/194 208/224/209 209/219/204 -f 192/208/193 191/210/195 206/225/210 207/223/208 -f 205/212/197 204/211/196 219/226/211 220/227/212 -f 203/214/199 202/213/198 217/228/213 218/229/214 -f 201/216/201 200/215/200 215/230/215 216/231/216 -f 199/218/203 198/217/202 213/232/217 214/233/218 -f 210/220/205 209/219/204 224/234/219 225/235/220 -f 197/222/207 196/221/206 211/236/221 212/237/222 -f 208/224/209 207/223/208 222/238/223 223/239/224 -f 206/225/210 205/212/197 220/227/212 221/240/225 -f 204/211/196 203/214/199 218/229/214 219/226/211 -f 202/213/198 201/216/201 216/231/216 217/228/213 -f 200/215/200 199/218/203 214/233/218 215/230/215 -f 198/217/202 197/222/207 212/237/222 213/232/217 -f 209/219/204 208/224/209 223/239/224 224/234/219 -f 207/223/208 206/225/210 221/240/225 222/238/223 -f 220/227/212 219/226/211 234/241/226 235/242/227 -f 218/229/214 217/228/213 232/243/228 233/244/229 -f 216/231/216 215/230/215 230/245/230 231/246/231 -f 214/233/218 213/232/217 228/247/232 229/248/233 -f 225/235/220 224/234/219 239/249/234 240/250/235 -f 212/237/222 211/236/221 226/251/236 227/252/237 -f 223/239/224 222/238/223 237/253/238 238/254/239 -f 221/240/225 220/227/212 235/242/227 236/255/240 -f 219/226/211 218/229/214 233/244/229 234/241/226 -f 217/228/213 216/231/216 231/246/231 232/243/228 -f 215/230/215 214/233/218 229/248/233 230/245/230 -f 213/232/217 212/237/222 227/252/237 228/247/232 -f 224/234/219 223/239/224 238/254/239 239/249/234 -f 222/238/223 221/240/225 236/255/240 237/253/238 -f 235/242/227 234/241/226 249/21/241 250/18/242 -f 233/244/229 232/243/228 247/25/243 248/22/244 -f 231/246/231 230/245/230 245/29/245 246/26/246 -f 229/248/233 228/247/232 243/2/247 244/1/248 -f 240/250/235 239/249/234 254/6/249 255/5/250 -f 227/252/237 226/251/236 241/10/251 242/9/252 -f 238/254/239 237/253/238 252/14/253 253/13/254 -f 236/255/240 235/242/227 250/18/242 251/17/255 -f 234/241/226 233/244/229 248/22/244 249/21/241 -f 232/243/228 231/246/231 246/26/246 247/25/243 -f 230/245/230 229/248/233 244/1/248 245/29/245 -f 228/247/232 227/252/237 242/9/252 243/2/247 -f 239/249/234 238/254/239 253/13/254 254/6/249 -f 237/253/238 236/255/240 251/17/255 252/14/253 -f 250/18/242 249/21/241 264/24/256 265/19/257 -f 248/22/244 247/25/243 262/28/258 263/23/259 -f 246/26/246 245/29/245 260/30/260 261/27/261 -f 244/1/248 243/2/247 258/3/262 259/4/263 -f 255/5/250 254/6/249 269/7/264 270/8/265 -f 242/9/252 241/10/251 256/11/266 257/12/267 -f 253/13/254 252/14/253 267/15/268 268/16/269 -f 251/17/255 250/18/242 265/19/257 266/20/270 -f 249/21/241 248/22/244 263/23/259 264/24/256 -f 247/25/243 246/26/246 261/27/261 262/28/258 -f 245/29/245 244/1/248 259/4/263 260/30/260 -f 243/2/247 242/9/252 257/12/267 258/3/262 -f 254/6/249 253/13/254 268/16/269 269/7/264 -f 252/14/253 251/17/255 266/20/270 267/15/268 -f 265/19/257 264/24/256 279/31/271 280/32/272 -f 263/23/259 262/28/258 277/33/273 278/34/274 -f 261/27/261 260/30/260 275/35/275 276/36/276 -f 259/4/263 258/3/262 273/37/277 274/38/278 -f 270/8/265 269/7/264 284/39/279 285/40/280 -f 257/12/267 256/11/266 271/41/281 272/42/282 -f 268/16/269 267/15/268 282/43/283 283/44/284 -f 266/20/270 265/19/257 280/32/272 281/45/285 -f 264/24/256 263/23/259 278/34/274 279/31/271 -f 262/28/258 261/27/261 276/36/276 277/33/273 -f 260/30/260 259/4/263 274/38/278 275/35/275 -f 258/3/262 257/12/267 272/42/282 273/37/277 -f 269/7/264 268/16/269 283/44/284 284/39/279 -f 267/15/268 266/20/270 281/45/285 282/43/283 -f 280/32/272 279/31/271 294/46/286 295/47/287 -f 278/34/274 277/33/273 292/48/288 293/49/289 -f 276/36/276 275/35/275 290/50/290 291/51/291 -f 274/38/278 273/37/277 288/52/292 289/53/293 -f 285/40/280 284/39/279 299/54/294 300/55/295 -f 272/42/282 271/41/281 286/56/296 287/57/297 -f 283/44/284 282/43/283 297/58/298 298/59/299 -f 281/45/285 280/32/272 295/47/287 296/60/300 -f 279/31/271 278/34/274 293/49/289 294/46/286 -f 277/33/273 276/36/276 291/51/291 292/48/288 -f 275/35/275 274/38/278 289/53/293 290/50/290 -f 273/37/277 272/42/282 287/57/297 288/52/292 -f 284/39/279 283/44/284 298/59/299 299/54/294 -f 282/43/283 281/45/285 296/60/300 297/58/298 -f 295/47/287 294/46/286 309/61/301 310/62/302 -f 293/49/289 292/48/288 307/63/303 308/64/304 -f 291/51/291 290/50/290 305/65/305 306/66/306 -f 289/53/293 288/52/292 303/67/307 304/68/308 -f 300/55/295 299/54/294 314/69/309 315/70/310 -f 287/57/297 286/56/296 301/71/311 302/72/312 -f 298/59/299 297/58/298 312/73/313 313/74/314 -f 296/60/300 295/47/287 310/62/302 311/75/315 -f 294/46/286 293/49/289 308/64/304 309/61/301 -f 292/48/288 291/51/291 306/66/306 307/63/303 -f 290/50/290 289/53/293 304/68/308 305/65/305 -f 288/52/292 287/57/297 302/72/312 303/67/307 -f 299/54/294 298/59/299 313/74/314 314/69/309 -f 297/58/298 296/60/300 311/75/315 312/73/313 -f 310/62/302 309/61/301 324/76/316 325/77/317 -f 308/64/304 307/63/303 322/78/318 323/79/319 -f 306/66/306 305/65/305 320/80/320 321/81/321 -f 304/68/308 303/67/307 318/82/322 319/83/323 -f 315/70/310 314/69/309 329/84/324 330/85/325 -f 302/72/312 301/71/311 316/86/326 317/87/327 -f 313/74/314 312/73/313 327/88/328 328/89/329 -f 311/75/315 310/62/302 325/77/317 326/90/330 -f 309/61/301 308/64/304 323/79/319 324/76/316 -f 307/63/303 306/66/306 321/81/321 322/78/318 -f 305/65/305 304/68/308 319/83/323 320/80/320 -f 303/67/307 302/72/312 317/87/327 318/82/322 -f 314/69/309 313/74/314 328/89/329 329/84/324 -f 312/73/313 311/75/315 326/90/330 327/88/328 -f 325/77/317 324/76/316 339/91/331 340/92/332 -f 323/79/319 322/78/318 337/93/333 338/94/334 -f 321/81/321 320/80/320 335/95/335 336/96/336 -f 319/83/323 318/82/322 333/97/337 334/98/338 -f 330/85/325 329/84/324 344/99/339 345/100/340 -f 317/87/327 316/86/326 331/101/341 332/102/342 -f 328/89/329 327/88/328 342/103/343 343/104/344 -f 326/90/330 325/77/317 340/92/332 341/105/345 -f 324/76/316 323/79/319 338/94/334 339/91/331 -f 322/78/318 321/81/321 336/96/336 337/93/333 -f 320/80/320 319/83/323 334/98/338 335/95/335 -f 318/82/322 317/87/327 332/102/342 333/97/337 -f 329/84/324 328/89/329 343/104/344 344/99/339 -f 327/88/328 326/90/330 341/105/345 342/103/343 -f 340/92/332 339/91/331 354/106/346 355/107/347 -f 338/94/334 337/93/333 352/108/348 353/109/349 -f 336/96/336 335/95/335 350/110/350 351/111/351 -f 334/98/338 333/97/337 348/112/352 349/113/353 -f 345/100/340 344/99/339 359/114/354 360/115/355 -f 332/102/342 331/101/341 346/116/356 347/117/357 -f 343/104/344 342/103/343 357/118/358 358/119/359 -f 341/105/345 340/92/332 355/107/347 356/120/360 -f 339/91/331 338/94/334 353/109/349 354/106/346 -f 337/93/333 336/96/336 351/111/351 352/108/348 -f 335/95/335 334/98/338 349/113/353 350/110/350 -f 333/97/337 332/102/342 347/117/357 348/112/352 -f 344/99/339 343/104/344 358/119/359 359/114/354 -f 342/103/343 341/105/345 356/120/360 357/118/358 -f 355/121/347 354/122/346 369/123/361 370/124/362 -f 353/125/349 352/126/348 367/127/363 368/128/364 -f 351/129/351 350/130/350 365/131/365 366/132/366 -f 349/133/353 348/134/352 363/135/367 364/136/368 -f 360/137/355 359/138/354 374/139/369 375/140/370 -f 347/141/357 346/142/356 361/143/371 362/144/372 -f 358/145/359 357/146/358 372/147/373 373/148/374 -f 356/149/360 355/121/347 370/124/362 371/150/375 -f 354/122/346 353/125/349 368/128/364 369/123/361 -f 352/126/348 351/129/351 366/132/366 367/127/363 -f 350/130/350 349/133/353 364/136/368 365/131/365 -f 348/134/352 347/141/357 362/144/372 363/135/367 -f 359/138/354 358/145/359 373/148/374 374/139/369 -f 357/146/358 356/149/360 371/150/375 372/147/373 -f 370/124/362 369/123/361 384/151/376 385/152/377 -f 368/128/364 367/127/363 382/153/378 383/154/379 -f 366/132/366 365/131/365 380/155/380 381/156/381 -f 364/136/368 363/135/367 378/157/382 379/158/383 -f 375/140/370 374/139/369 389/159/384 390/160/385 -f 362/144/372 361/143/371 376/161/386 377/162/387 -f 373/148/374 372/147/373 387/163/388 388/164/389 -f 371/150/375 370/124/362 385/152/377 386/165/390 -f 369/123/361 368/128/364 383/154/379 384/151/376 -f 367/127/363 366/132/366 381/156/381 382/153/378 -f 365/131/365 364/136/368 379/158/383 380/155/380 -f 363/135/367 362/144/372 377/162/387 378/157/382 -f 374/139/369 373/148/374 388/164/389 389/159/384 -f 372/147/373 371/150/375 386/165/390 387/163/388 -f 385/152/377 384/151/376 399/166/391 400/167/392 -f 383/154/379 382/153/378 397/168/393 398/169/394 -f 381/156/381 380/155/380 395/170/395 396/171/396 -f 379/158/383 378/157/382 393/172/397 394/173/398 -f 390/160/385 389/159/384 404/174/399 405/175/400 -f 377/162/387 376/161/386 391/176/401 392/177/402 -f 388/164/389 387/163/388 402/178/403 403/179/404 -f 386/165/390 385/152/377 400/167/392 401/180/405 -f 384/151/376 383/154/379 398/169/394 399/166/391 -f 382/153/378 381/156/381 396/171/396 397/168/393 -f 380/155/380 379/158/383 394/173/398 395/170/395 -f 378/157/382 377/162/387 392/177/402 393/172/397 -f 389/159/384 388/164/389 403/179/404 404/174/399 -f 387/163/388 386/165/390 401/180/405 402/178/403 -f 400/167/392 399/166/391 414/181/406 415/182/407 -f 398/169/394 397/168/393 412/183/408 413/184/409 -f 396/171/396 395/170/395 410/185/410 411/186/411 -f 394/173/398 393/172/397 408/187/412 409/188/413 -f 405/175/400 404/174/399 419/189/414 420/190/415 -f 392/177/402 391/176/401 406/191/416 407/192/417 -f 403/179/404 402/178/403 417/193/418 418/194/419 -f 401/180/405 400/167/392 415/182/407 416/195/420 -f 399/166/391 398/169/394 413/184/409 414/181/406 -f 397/168/393 396/171/396 411/186/411 412/183/408 -f 395/170/395 394/173/398 409/188/413 410/185/410 -f 393/172/397 392/177/402 407/192/417 408/187/412 -f 404/174/399 403/179/404 418/194/419 419/189/414 -f 402/178/403 401/180/405 416/195/420 417/193/418 -f 415/182/407 414/181/406 429/196/421 430/197/422 -f 413/184/409 412/183/408 427/198/423 428/199/424 -f 411/186/411 410/185/410 425/200/425 426/201/426 -f 409/188/413 408/187/412 423/202/427 424/203/428 -f 420/190/415 419/189/414 434/204/429 435/205/430 -f 407/192/417 406/191/416 421/206/431 422/207/432 -f 418/194/419 417/193/418 432/208/433 433/209/434 -f 416/195/420 415/182/407 430/197/422 431/210/435 -f 414/181/406 413/184/409 428/199/424 429/196/421 -f 412/183/408 411/186/411 426/201/426 427/198/423 -f 410/185/410 409/188/413 424/203/428 425/200/425 -f 408/187/412 407/192/417 422/207/432 423/202/427 -f 419/189/414 418/194/419 433/209/434 434/204/429 -f 417/193/418 416/195/420 431/210/435 432/208/433 -f 430/197/422 429/196/421 444/211/436 445/212/437 -f 428/199/424 427/198/423 442/213/438 443/214/439 -f 426/201/426 425/200/425 440/215/440 441/216/441 -f 424/203/428 423/202/427 438/217/442 439/218/443 -f 435/205/430 434/204/429 449/219/444 450/220/445 -f 422/207/432 421/206/431 436/221/446 437/222/447 -f 433/209/434 432/208/433 447/223/448 448/224/449 -f 431/210/435 430/197/422 445/212/437 446/225/450 -f 429/196/421 428/199/424 443/214/439 444/211/436 -f 427/198/423 426/201/426 441/216/441 442/213/438 -f 425/200/425 424/203/428 439/218/443 440/215/440 -f 423/202/427 422/207/432 437/222/447 438/217/442 -f 434/204/429 433/209/434 448/224/449 449/219/444 -f 432/208/433 431/210/435 446/225/450 447/223/448 -f 445/212/437 444/211/436 459/226/451 460/227/452 -f 443/214/439 442/213/438 457/228/453 458/229/454 -f 441/216/441 440/215/440 455/230/455 456/231/456 -f 439/218/443 438/217/442 453/232/457 454/233/458 -f 450/220/445 449/219/444 464/234/459 465/235/460 -f 437/222/447 436/221/446 451/236/461 452/237/462 -f 448/224/449 447/223/448 462/238/463 463/239/464 -f 446/225/450 445/212/437 460/227/452 461/240/465 -f 444/211/436 443/214/439 458/229/454 459/226/451 -f 442/213/438 441/216/441 456/231/456 457/228/453 -f 440/215/440 439/218/443 454/233/458 455/230/455 -f 438/217/442 437/222/447 452/237/462 453/232/457 -f 449/219/444 448/224/449 463/239/464 464/234/459 -f 447/223/448 446/225/450 461/240/465 462/238/463 -f 460/227/452 459/226/451 474/241/466 475/242/467 -f 458/229/454 457/228/453 472/243/468 473/244/469 -f 456/231/456 455/230/455 470/245/470 471/246/471 -f 454/233/458 453/232/457 468/247/472 469/248/473 -f 465/235/460 464/234/459 479/249/474 480/250/475 -f 452/237/462 451/236/461 466/251/476 467/252/477 -f 463/239/464 462/238/463 477/253/478 478/254/479 -f 461/240/465 460/227/452 475/242/467 476/255/480 -f 459/226/451 458/229/454 473/244/469 474/241/466 -f 457/228/453 456/231/456 471/246/471 472/243/468 -f 455/230/455 454/233/458 469/248/473 470/245/470 -f 453/232/457 452/237/462 467/252/477 468/247/472 -f 464/234/459 463/239/464 478/254/479 479/249/474 -f 462/238/463 461/240/465 476/255/480 477/253/478 -f 481/256/481 15/5/5 30/8/8 485/257/482 -f 485/257/482 30/8/8 45/40/40 487/258/483 -f 487/258/483 45/40/40 60/55/55 489/259/484 -f 489/259/484 60/55/55 75/70/70 491/260/485 -f 491/260/485 75/70/70 90/85/85 493/261/486 -f 493/261/486 90/85/85 105/100/100 495/262/487 -f 495/262/487 105/100/100 120/115/115 497/263/488 -f 497/264/488 120/137/115 135/140/130 499/265/489 -f 499/265/489 135/140/130 150/160/145 501/266/490 -f 501/266/490 150/160/145 165/175/160 503/267/491 -f 503/267/491 165/175/160 180/190/175 505/268/492 -f 505/268/492 180/190/175 195/205/190 507/269/493 -f 507/269/493 195/205/190 210/220/205 509/270/494 -f 509/270/494 210/220/205 225/235/220 511/271/495 -f 511/271/495 225/235/220 240/250/235 513/272/496 -f 513/272/496 240/250/235 255/5/250 515/256/497 -f 515/256/497 255/5/250 270/8/265 517/257/498 -f 517/257/498 270/8/265 285/40/280 519/258/499 -f 519/258/499 285/40/280 300/55/295 521/259/500 -f 521/259/500 300/55/295 315/70/310 523/260/501 -f 523/260/501 315/70/310 330/85/325 525/261/502 -f 525/261/502 330/85/325 345/100/340 527/262/503 -f 527/262/503 345/100/340 360/115/355 529/263/504 -f 529/264/504 360/137/355 375/140/370 531/265/505 -f 531/265/505 375/140/370 390/160/385 533/266/506 -f 533/266/506 390/160/385 405/175/400 534/267/507 -f 534/267/507 405/175/400 420/190/415 536/268/508 -f 536/268/508 420/190/415 435/205/430 538/269/509 -f 538/269/509 435/205/430 450/220/445 540/270/510 -f 540/270/510 450/220/445 465/235/460 542/271/511 -f 542/271/511 465/235/460 480/250/475 544/272/512 -f 475/242/467 474/241/466 9/21/21 10/18/18 -f 473/244/469 472/243/468 7/25/25 8/22/22 -f 471/246/471 470/245/470 5/29/29 6/26/26 -f 469/248/473 468/247/472 3/2/2 4/1/1 -f 480/250/475 479/249/474 14/6/6 15/5/5 -f 467/252/477 466/251/476 1/10/10 2/9/9 -f 478/254/479 477/253/478 12/14/14 13/13/13 -f 476/255/480 475/242/467 10/18/18 11/17/17 -f 474/241/466 473/244/469 8/22/22 9/21/21 -f 472/243/468 471/246/471 6/26/26 7/25/25 -f 470/245/470 469/248/473 4/1/1 5/29/29 -f 544/272/512 480/250/475 15/5/5 481/256/481 -f 468/247/472 467/252/477 2/9/9 3/2/2 -f 479/249/474 478/254/479 13/13/13 14/6/6 -f 477/253/478 476/255/480 11/17/17 12/14/14 -f 466/251/476 543/273/513 483/274/514 1/10/10 -f 451/236/461 541/275/515 543/273/513 466/251/476 -f 436/221/446 539/276/516 541/275/515 451/236/461 -f 421/206/431 537/277/517 539/276/516 436/221/446 -f 406/191/416 535/278/518 537/277/517 421/206/431 -f 391/176/401 482/279/519 535/278/518 406/191/416 -f 376/161/386 532/280/520 482/279/519 391/176/401 -f 361/143/371 530/281/521 532/280/520 376/161/386 -f 346/142/356 528/282/522 530/281/521 361/143/371 -f 331/101/341 526/283/523 528/284/522 346/116/356 -f 316/86/326 524/285/524 526/283/523 331/101/341 -f 301/71/311 522/286/525 524/285/524 316/86/326 -f 286/56/296 520/287/526 522/286/525 301/71/311 -f 271/41/281 518/288/527 520/287/526 286/56/296 -f 256/11/266 516/289/528 518/288/527 271/41/281 -f 241/10/251 514/274/529 516/289/528 256/11/266 -f 226/251/236 512/273/530 514/274/529 241/10/251 -f 211/236/221 510/275/531 512/273/530 226/251/236 -f 196/221/206 508/276/532 510/275/531 211/236/221 -f 181/206/191 506/277/533 508/276/532 196/221/206 -f 166/191/176 504/278/534 506/277/533 181/206/191 -f 151/176/161 502/279/535 504/278/534 166/191/176 -f 136/161/146 500/280/536 502/279/535 151/176/161 -f 121/143/131 498/281/537 500/280/536 136/161/146 -f 106/142/116 496/282/538 498/281/537 121/143/131 -f 91/101/101 494/283/539 496/284/538 106/116/116 -f 76/86/86 492/285/540 494/283/539 91/101/101 -f 61/71/71 490/286/541 492/285/540 76/86/86 -f 46/56/56 488/287/542 490/286/541 61/71/71 -f 31/41/41 486/288/543 488/287/542 46/56/56 -f 16/11/11 484/289/544 486/288/543 31/41/41 -f 1/10/10 483/274/514 484/289/544 16/11/11 -f 543/290/513 541/291/515 539/292/516 537/293/517 535/294/518 482/295/519 532/296/520 530/297/521 528/298/522 526/299/523 524/300/524 522/301/525 520/302/526 518/303/527 516/304/528 514/305/529 512/306/530 510/307/531 508/308/532 506/309/533 504/310/534 502/311/535 500/312/536 498/313/537 496/314/538 494/315/539 492/316/540 490/317/541 488/318/542 486/319/543 484/320/544 483/321/514 -f 544/290/512 481/291/481 485/292/482 487/293/483 489/294/484 491/295/485 493/296/486 495/297/487 497/298/488 499/299/489 501/300/490 503/301/491 505/302/492 507/303/493 509/304/494 511/305/495 513/306/496 515/307/497 517/308/498 519/309/499 521/310/500 523/311/501 525/312/502 527/313/503 529/314/504 531/315/505 533/316/506 534/317/507 536/318/508 538/319/509 540/320/510 542/321/511 diff --git a/technic/technic/models/technic_two_curved_edge.obj b/technic/technic/models/technic_two_curved_edge.obj deleted file mode 100644 index a468ddf..0000000 --- a/technic/technic/models/technic_two_curved_edge.obj +++ /dev/null @@ -1,207 +0,0 @@ -# Blender v2.73 (sub 0) OBJ File: 'slope_test_quarter_round_corner_onetexture.blend' -# www.blender.org -o corner1_Cylinder -v 0.415732 0.277783 0.499997 -v 0.461936 0.191340 0.499997 -v 0.415735 0.277783 -0.415732 -v 0.461940 0.191340 -0.461937 -v 0.490389 0.097544 0.499997 -v 0.353551 0.353551 0.499997 -v 0.353555 0.353551 -0.353551 -v 0.499996 -0.000000 0.499997 -v 0.277783 0.415732 0.499997 -v 0.490393 0.097544 -0.490389 -v 0.277787 0.415732 -0.277784 -v 0.191340 0.461936 0.499997 -v 0.191344 0.461937 -0.191341 -v 0.097544 0.490389 0.499997 -v 0.097547 0.490391 -0.097545 -v -0.000000 0.499996 0.499997 -v -0.499997 0.499997 0.499997 -v -0.499997 0.499997 -0.000030 -v -0.499997 0.415735 -0.277785 -v -0.499997 0.461940 -0.191342 -v -0.499997 0.490393 -0.097545 -v -0.500000 -0.500000 -0.500000 -v -0.499997 -0.499997 0.499997 -v 0.000000 0.499998 0.000000 -v -0.499998 0.000014 -0.499999 -v -0.499997 0.353553 -0.353554 -v -0.499998 0.097545 -0.490393 -v -0.499997 0.277785 -0.415735 -v -0.499998 0.191342 -0.461940 -v 0.499997 -0.000000 -0.499996 -v 0.500000 -0.500000 -0.500000 -v 0.499997 -0.499997 0.499997 -v -0.499997 -0.499997 0.499997 -v -0.499997 0.499997 0.499997 -v -0.499997 0.499997 -0.000030 -v -0.499997 0.415735 -0.277785 -v -0.499997 0.461940 -0.191342 -v -0.499997 0.490393 -0.097545 -v -0.500000 -0.500000 -0.500000 -v -0.499998 0.000014 -0.499999 -v -0.499997 0.353553 -0.353554 -v -0.499998 0.097545 -0.490393 -v -0.499997 0.277785 -0.415735 -v -0.499998 0.191342 -0.461940 -v -0.499998 -0.033351 0.033348 -v -0.500000 -0.500000 -0.500000 -v 0.500000 -0.500000 -0.500000 -v 0.499997 -0.499997 0.499997 -v 0.415732 0.277783 0.499997 -v 0.461936 0.191340 0.499997 -v 0.490389 0.097544 0.499997 -v 0.353551 0.353551 0.499997 -v 0.499996 -0.000000 0.499997 -v 0.277783 0.415732 0.499997 -v 0.191340 0.461936 0.499997 -v -0.499997 -0.499997 0.499997 -v 0.097544 0.490389 0.499997 -v -0.000000 0.499996 0.499997 -v -0.499997 0.499997 0.499997 -v -0.033351 -0.033351 0.499997 -v 0.499997 -0.499997 0.499997 -vt 1.000000 0.500100 -vt 0.990395 0.597625 -vt 0.466756 0.466756 -vt 1.000000 0.000200 -vt 0.000201 0.000201 -vt 0.597626 0.990394 -vt 0.500101 1.000000 -vt 0.691404 0.961947 -vt 0.777830 0.915751 -vt 0.853583 0.853583 -vt 0.915752 0.777829 -vt 0.000201 1.000000 -vt 0.961948 0.691403 -vt -0.000000 0.000000 -vt 1.000000 0.000000 -vt 1.000000 1.000000 -vt -0.000000 1.000000 -vt 0.533443 0.466757 -vt 0.000202 0.500115 -vt 0.402575 0.990397 -vt 0.308797 0.961949 -vt 0.222371 0.915753 -vt 0.146617 0.853584 -vt 0.084449 0.777831 -vt 0.038253 0.691405 -vt 0.009806 0.597626 -vt 0.999996 0.125448 -vt 0.222353 0.125462 -vt 0.146597 0.000612 -vt 0.999995 0.000594 -vt 0.000178 0.874582 -vt 0.915751 0.874577 -vt 0.853580 0.999436 -vt 0.000178 0.999439 -vt 0.999808 0.625427 -vt 0.009599 0.625446 -vt -0.000005 0.500594 -vt 0.999807 0.500594 -vt 0.597441 0.374574 -vt 0.499912 0.499435 -vt 0.000000 0.499434 -vt 0.000000 0.374576 -vt 0.999999 0.375154 -vt 1.000000 0.499969 -vt 0.500093 0.500015 -vt 0.402562 0.375164 -vt 0.999812 0.999983 -vt 0.146415 1.000000 -vt 0.084244 0.875149 -vt 0.999811 0.875131 -vt 0.990396 0.624861 -vt 0.961947 0.749719 -vt 0.000178 0.749724 -vt 0.000178 0.624866 -vt 0.777649 0.124857 -vt 0.691221 0.249715 -vt 0.000001 0.249719 -vt 0.000001 0.124861 -vt 0.308782 0.250314 -vt 0.999998 0.250301 -vt 0.853403 -0.000000 -vt 0.038047 0.750298 -vt 0.999809 0.750280 -vt 0.000177 0.500008 -vt 0.000000 0.500000 -vt 0.500000 1.000000 -vt 0.500000 0.500000 -vn 0.000000 -0.000000 1.000000 -vn -0.000000 -1.000000 0.000000 -vn -1.000000 0.000000 0.000000 -vn 0.000000 0.831500 -0.555600 -vn 0.325800 0.887500 -0.325800 -vn 0.429700 0.794100 -0.429700 -vn 0.000000 0.707100 -0.707100 -vn 0.831500 0.555600 0.000000 -vn 0.531000 0.660300 -0.531000 -vn 0.707100 0.707100 0.000000 -vn 0.000000 0.195100 -0.980800 -vn 0.683900 0.254100 -0.683900 -vn 0.705500 0.067100 -0.705500 -vn 0.000000 0.049100 -0.998800 -vn 0.123100 0.984700 -0.123100 -vn 0.036800 0.998600 -0.036800 -vn 0.049100 0.998800 0.000000 -vn 0.195100 0.980800 0.000000 -vn 0.000000 0.980800 -0.195100 -vn 0.000000 0.998800 -0.049100 -vn 0.000000 0.555600 -0.831500 -vn 0.620400 0.479600 -0.620400 -vn 0.923900 0.382700 0.000000 -vn 0.980800 0.195100 0.000000 -vn 0.223300 0.948800 -0.223200 -vn 0.382700 0.923900 0.000000 -vn 0.555600 0.831500 0.000000 -vn 0.000000 0.923900 -0.382700 -vn 0.000000 0.382700 -0.923900 -vn 0.998800 0.049100 0.000000 -vn 0.707100 0.000000 -0.707100 -vn 0.000000 0.000000 -1.000000 -vn -0.000000 1.000000 0.000000 -vn 1.000000 0.000000 0.000000 -s off -f 53/1/1 51/2/1 60/3/1 -f 61/4/1 53/1/1 60/3/1 56/5/1 -f 57/6/1 58/7/1 60/3/1 -f 55/8/1 57/6/1 60/3/1 -f 54/9/1 55/8/1 60/3/1 -f 52/10/1 54/9/1 60/3/1 -f 49/11/1 52/10/1 60/3/1 -f 59/12/1 56/5/1 60/3/1 58/7/1 -f 50/13/1 49/11/1 60/3/1 -f 48/14/2 23/15/2 46/16/2 47/17/2 -f 39/5/3 33/4/3 45/18/3 40/19/3 -f 35/7/3 38/20/3 45/18/3 -f 38/20/3 37/21/3 45/18/3 -f 37/21/3 36/22/3 45/18/3 -f 36/22/3 41/23/3 45/18/3 -f 41/23/3 43/24/3 45/18/3 -f 43/24/3 44/25/3 45/18/3 -f 44/25/3 42/26/3 45/18/3 -f 42/26/3 40/19/3 45/18/3 -f 34/16/3 35/7/3 45/18/3 33/4/3 -f 51/2/1 50/13/1 60/3/1 -s 1 -f 19/27/4 11/28/5 7/29/6 26/30/7 -f 1/31/8 3/32/9 7/33/6 6/34/10 -f 27/35/11 10/36/12 30/37/13 25/38/14 -f 15/39/15 24/40/16 16/41/17 14/42/18 -f 21/43/19 18/44/20 24/45/16 15/46/15 -f 26/47/7 7/48/6 3/49/9 28/50/21 -f 10/51/12 4/52/22 2/53/23 5/54/24 -f 11/55/5 13/56/25 12/57/26 9/58/27 -f 21/43/19 15/46/15 13/59/25 20/60/28 -f 20/60/28 13/59/25 11/28/5 19/27/4 -f 9/58/27 6/14/10 7/61/6 11/55/5 -f 4/52/22 3/32/9 1/31/8 2/53/23 -f 3/49/9 4/62/22 29/63/29 28/50/21 -f 10/51/12 5/54/24 8/64/30 30/44/13 -f 29/63/29 4/62/22 10/36/12 27/35/11 -f 25/44/14 30/65/13 31/14/31 22/15/32 -f 16/66/17 24/67/16 18/44/20 17/16/33 -f 8/65/30 32/14/34 31/15/31 30/44/13 -f 12/57/26 13/56/25 15/39/15 14/42/18 diff --git a/technic/technic/register.lua b/technic/technic/register.lua deleted file mode 100644 index 8f75b81..0000000 --- a/technic/technic/register.lua +++ /dev/null @@ -1,58 +0,0 @@ --- This file includes the functions and data structures for registering machines and tools for LV, MV, HV types. --- We use the technic namespace for these functions and data to avoid eventual conflict. - -technic.receiver = "RE" -technic.producer = "PR" -technic.producer_receiver = "PR_RE" -technic.battery = "BA" - -technic.machines = {} -technic.power_tools = {} -technic.networks = {} - - -function technic.register_tier(tier, description) - technic.machines[tier] = {} -end - -function technic.register_machine(tier, nodename, machine_type) - if not technic.machines[tier] then - return - end - technic.machines[tier][nodename] = machine_type -end - -function technic.register_power_tool(craftitem, max_charge) - technic.power_tools[craftitem] = max_charge -end - - --- Utility functions. Not sure exactly what they do.. water.lua uses the two first. -function technic.get_RE_item_load(load1, max_load) - if load1 == 0 then load1 = 65535 end - local temp = 65536 - load1 - temp = temp / 65535 * max_load - return math.floor(temp + 0.5) -end - -function technic.set_RE_item_load(load1, max_load) - if load1 == 0 then return 65535 end - local temp = load1 / max_load * 65535 - temp = 65536 - temp - return math.floor(temp) -end - --- Wear down a tool depending on the remaining charge. -function technic.set_RE_wear(itemstack, item_load, max_load) - if (minetest.registered_items[itemstack:get_name()].wear_represents or "mechanical_wear") ~= "technic_RE_charge" then return itemstack end - local temp - if item_load == 0 then - temp = 0 - else - temp = 65536 - math.floor(item_load / max_load * 65535) - if temp > 65535 then temp = 65535 end - if temp < 1 then temp = 1 end - end - itemstack:set_wear(temp) - return itemstack -end diff --git a/technic/technic/sounds/chainsaw.ogg b/technic/technic/sounds/chainsaw.ogg deleted file mode 100644 index 5fe7552..0000000 Binary files a/technic/technic/sounds/chainsaw.ogg and /dev/null differ diff --git a/technic/technic/sounds/item_drop_pickup.1.ogg b/technic/technic/sounds/item_drop_pickup.1.ogg deleted file mode 100644 index 2ae432d..0000000 Binary files a/technic/technic/sounds/item_drop_pickup.1.ogg and /dev/null differ diff --git a/technic/technic/sounds/item_drop_pickup.2.ogg b/technic/technic/sounds/item_drop_pickup.2.ogg deleted file mode 100644 index f58bf08..0000000 Binary files a/technic/technic/sounds/item_drop_pickup.2.ogg and /dev/null differ diff --git a/technic/technic/sounds/item_drop_pickup.3.ogg b/technic/technic/sounds/item_drop_pickup.3.ogg deleted file mode 100644 index cf57c94..0000000 Binary files a/technic/technic/sounds/item_drop_pickup.3.ogg and /dev/null differ diff --git a/technic/technic/sounds/item_drop_pickup.4.ogg b/technic/technic/sounds/item_drop_pickup.4.ogg deleted file mode 100644 index bfe99d9..0000000 Binary files a/technic/technic/sounds/item_drop_pickup.4.ogg and /dev/null differ diff --git a/technic/technic/sounds/mining_drill.ogg b/technic/technic/sounds/mining_drill.ogg deleted file mode 100644 index 1493544..0000000 Binary files a/technic/technic/sounds/mining_drill.ogg and /dev/null differ diff --git a/technic/technic/sounds/technic_hv_nuclear_reactor_siren_clear.ogg b/technic/technic/sounds/technic_hv_nuclear_reactor_siren_clear.ogg deleted file mode 100644 index 3332deb..0000000 Binary files a/technic/technic/sounds/technic_hv_nuclear_reactor_siren_clear.ogg and /dev/null differ diff --git a/technic/technic/sounds/technic_hv_nuclear_reactor_siren_danger_loop.ogg b/technic/technic/sounds/technic_hv_nuclear_reactor_siren_danger_loop.ogg deleted file mode 100644 index 3d290b0..0000000 Binary files a/technic/technic/sounds/technic_hv_nuclear_reactor_siren_danger_loop.ogg and /dev/null differ diff --git a/technic/technic/sounds/technic_laser_mk1.0.ogg b/technic/technic/sounds/technic_laser_mk1.0.ogg deleted file mode 100644 index 19be080..0000000 Binary files a/technic/technic/sounds/technic_laser_mk1.0.ogg and /dev/null differ diff --git a/technic/technic/sounds/technic_laser_mk1.1.ogg b/technic/technic/sounds/technic_laser_mk1.1.ogg deleted file mode 100644 index 7792be1..0000000 Binary files a/technic/technic/sounds/technic_laser_mk1.1.ogg and /dev/null differ diff --git a/technic/technic/sounds/technic_laser_mk2.0.ogg b/technic/technic/sounds/technic_laser_mk2.0.ogg deleted file mode 100644 index 2cf1548..0000000 Binary files a/technic/technic/sounds/technic_laser_mk2.0.ogg and /dev/null differ diff --git a/technic/technic/sounds/technic_laser_mk2.1.ogg b/technic/technic/sounds/technic_laser_mk2.1.ogg deleted file mode 100644 index b3f9afb..0000000 Binary files a/technic/technic/sounds/technic_laser_mk2.1.ogg and /dev/null differ diff --git a/technic/technic/sounds/technic_laser_mk2.2.ogg b/technic/technic/sounds/technic_laser_mk2.2.ogg deleted file mode 100644 index a4ee091..0000000 Binary files a/technic/technic/sounds/technic_laser_mk2.2.ogg and /dev/null differ diff --git a/technic/technic/sounds/technic_laser_mk3.1.ogg b/technic/technic/sounds/technic_laser_mk3.1.ogg deleted file mode 100644 index f948913..0000000 Binary files a/technic/technic/sounds/technic_laser_mk3.1.ogg and /dev/null differ diff --git a/technic/technic/sounds/technic_laser_mk3.2.ogg b/technic/technic/sounds/technic_laser_mk3.2.ogg deleted file mode 100644 index 636c306..0000000 Binary files a/technic/technic/sounds/technic_laser_mk3.2.ogg and /dev/null differ diff --git a/technic/technic/sounds/technic_prospector_hit.ogg b/technic/technic/sounds/technic_prospector_hit.ogg deleted file mode 100644 index 3a8ad2d..0000000 Binary files a/technic/technic/sounds/technic_prospector_hit.ogg and /dev/null differ diff --git a/technic/technic/sounds/technic_prospector_miss.ogg b/technic/technic/sounds/technic_prospector_miss.ogg deleted file mode 100644 index 0f050d0..0000000 Binary files a/technic/technic/sounds/technic_prospector_miss.ogg and /dev/null differ diff --git a/technic/technic/sounds/technic_sonic_screwdriver.ogg b/technic/technic/sounds/technic_sonic_screwdriver.ogg deleted file mode 100644 index 471bb72..0000000 Binary files a/technic/technic/sounds/technic_sonic_screwdriver.ogg and /dev/null differ diff --git a/technic/technic/sounds/vacuumcleaner.ogg b/technic/technic/sounds/vacuumcleaner.ogg deleted file mode 100644 index 39d72de..0000000 Binary files a/technic/technic/sounds/vacuumcleaner.ogg and /dev/null differ diff --git a/technic/technic/textures/hires/technic_hv_nuclear_reactor_core_128.png b/technic/technic/textures/hires/technic_hv_nuclear_reactor_core_128.png deleted file mode 100644 index 2848f89..0000000 Binary files a/technic/technic/textures/hires/technic_hv_nuclear_reactor_core_128.png and /dev/null differ diff --git a/technic/technic/textures/hires/technic_hv_nuclear_reactor_core_16.png b/technic/technic/textures/hires/technic_hv_nuclear_reactor_core_16.png deleted file mode 100644 index 4661177..0000000 Binary files a/technic/technic/textures/hires/technic_hv_nuclear_reactor_core_16.png and /dev/null differ diff --git a/technic/technic/textures/hires/technic_hv_nuclear_reactor_core_256.png b/technic/technic/textures/hires/technic_hv_nuclear_reactor_core_256.png deleted file mode 100644 index 5187fab..0000000 Binary files a/technic/technic/textures/hires/technic_hv_nuclear_reactor_core_256.png and /dev/null differ diff --git a/technic/technic/textures/hires/technic_hv_nuclear_reactor_core_32.png b/technic/technic/textures/hires/technic_hv_nuclear_reactor_core_32.png deleted file mode 100644 index 3d380da..0000000 Binary files a/technic/technic/textures/hires/technic_hv_nuclear_reactor_core_32.png and /dev/null differ diff --git a/technic/technic/textures/hires/technic_hv_nuclear_reactor_core_512.png b/technic/technic/textures/hires/technic_hv_nuclear_reactor_core_512.png deleted file mode 100644 index ba2bd89..0000000 Binary files a/technic/technic/textures/hires/technic_hv_nuclear_reactor_core_512.png and /dev/null differ diff --git a/technic/technic/textures/hires/technic_hv_nuclear_reactor_core_64.png b/technic/technic/textures/hires/technic_hv_nuclear_reactor_core_64.png deleted file mode 100644 index 2fa8f18..0000000 Binary files a/technic/technic/textures/hires/technic_hv_nuclear_reactor_core_64.png and /dev/null differ diff --git a/technic/technic/textures/power_meter.png b/technic/technic/textures/power_meter.png deleted file mode 100644 index 9f96cac..0000000 Binary files a/technic/technic/textures/power_meter.png and /dev/null differ diff --git a/technic/technic/textures/technic_acacia_grindings.png b/technic/technic/textures/technic_acacia_grindings.png deleted file mode 100644 index bcfefc9..0000000 Binary files a/technic/technic/textures/technic_acacia_grindings.png and /dev/null differ diff --git a/technic/technic/textures/technic_admin_anchor.png b/technic/technic/textures/technic_admin_anchor.png deleted file mode 100644 index 7ce9b4c..0000000 Binary files a/technic/technic/textures/technic_admin_anchor.png and /dev/null differ diff --git a/technic/technic/textures/technic_akalin_dust.png b/technic/technic/textures/technic_akalin_dust.png deleted file mode 100644 index 052b0ac..0000000 Binary files a/technic/technic/textures/technic_akalin_dust.png and /dev/null differ diff --git a/technic/technic/textures/technic_alatro_dust.png b/technic/technic/textures/technic_alatro_dust.png deleted file mode 100644 index 172af25..0000000 Binary files a/technic/technic/textures/technic_alatro_dust.png and /dev/null differ diff --git a/technic/technic/textures/technic_arol_dust.png b/technic/technic/textures/technic_arol_dust.png deleted file mode 100644 index 1a575ed..0000000 Binary files a/technic/technic/textures/technic_arol_dust.png and /dev/null differ diff --git a/technic/technic/textures/technic_battery.png b/technic/technic/textures/technic_battery.png deleted file mode 100644 index ee83b74..0000000 Binary files a/technic/technic/textures/technic_battery.png and /dev/null differ diff --git a/technic/technic/textures/technic_battery_box_side.png b/technic/technic/textures/technic_battery_box_side.png deleted file mode 100644 index 98a22d6..0000000 Binary files a/technic/technic/textures/technic_battery_box_side.png and /dev/null differ diff --git a/technic/technic/textures/technic_battery_box_side8.png b/technic/technic/textures/technic_battery_box_side8.png deleted file mode 100644 index 65806f4..0000000 Binary files a/technic/technic/textures/technic_battery_box_side8.png and /dev/null differ diff --git a/technic/technic/textures/technic_battery_box_side_mv.png b/technic/technic/textures/technic_battery_box_side_mv.png deleted file mode 100644 index 06a4be5..0000000 Binary files a/technic/technic/textures/technic_battery_box_side_mv.png and /dev/null differ diff --git a/technic/technic/textures/technic_battery_meter_fg.png b/technic/technic/textures/technic_battery_meter_fg.png deleted file mode 100644 index 2f19bc7..0000000 Binary files a/technic/technic/textures/technic_battery_meter_fg.png and /dev/null differ diff --git a/technic/technic/textures/technic_battery_reload.png b/technic/technic/textures/technic_battery_reload.png deleted file mode 100644 index 4ce48d8..0000000 Binary files a/technic/technic/textures/technic_battery_reload.png and /dev/null differ diff --git a/technic/technic/textures/technic_bronze_dust.png b/technic/technic/textures/technic_bronze_dust.png deleted file mode 100644 index a613205..0000000 Binary files a/technic/technic/textures/technic_bronze_dust.png and /dev/null differ diff --git a/technic/technic/textures/technic_bucket_corium.png b/technic/technic/textures/technic_bucket_corium.png deleted file mode 100644 index 82da7ca..0000000 Binary files a/technic/technic/textures/technic_bucket_corium.png and /dev/null differ diff --git a/technic/technic/textures/technic_carbon_cloth.png b/technic/technic/textures/technic_carbon_cloth.png deleted file mode 100644 index 65a6dab..0000000 Binary files a/technic/technic/textures/technic_carbon_cloth.png and /dev/null differ diff --git a/technic/technic/textures/technic_carbon_plate.png b/technic/technic/textures/technic_carbon_plate.png deleted file mode 100644 index 5da83b8..0000000 Binary files a/technic/technic/textures/technic_carbon_plate.png and /dev/null differ diff --git a/technic/technic/textures/technic_carbon_steel_dust.png b/technic/technic/textures/technic_carbon_steel_dust.png deleted file mode 100644 index 0fa8a17..0000000 Binary files a/technic/technic/textures/technic_carbon_steel_dust.png and /dev/null differ diff --git a/technic/technic/textures/technic_cast_iron_dust.png b/technic/technic/textures/technic_cast_iron_dust.png deleted file mode 100644 index b5690ac..0000000 Binary files a/technic/technic/textures/technic_cast_iron_dust.png and /dev/null differ diff --git a/technic/technic/textures/technic_chainsaw.png b/technic/technic/textures/technic_chainsaw.png deleted file mode 100644 index 1a69893..0000000 Binary files a/technic/technic/textures/technic_chainsaw.png and /dev/null differ diff --git a/technic/technic/textures/technic_chernobylite_block.png b/technic/technic/textures/technic_chernobylite_block.png deleted file mode 100644 index a837c66..0000000 Binary files a/technic/technic/textures/technic_chernobylite_block.png and /dev/null differ diff --git a/technic/technic/textures/technic_chromium_dust.png b/technic/technic/textures/technic_chromium_dust.png deleted file mode 100644 index 0e48069..0000000 Binary files a/technic/technic/textures/technic_chromium_dust.png and /dev/null differ diff --git a/technic/technic/textures/technic_cnc_bottom.png b/technic/technic/textures/technic_cnc_bottom.png deleted file mode 100644 index e600cb1..0000000 Binary files a/technic/technic/textures/technic_cnc_bottom.png and /dev/null differ diff --git a/technic/technic/textures/technic_cnc_cylinder.png b/technic/technic/textures/technic_cnc_cylinder.png deleted file mode 100644 index 48921bd..0000000 Binary files a/technic/technic/textures/technic_cnc_cylinder.png and /dev/null differ diff --git a/technic/technic/textures/technic_cnc_cylinder_horizontal.png b/technic/technic/textures/technic_cnc_cylinder_horizontal.png deleted file mode 100644 index 82eb24c..0000000 Binary files a/technic/technic/textures/technic_cnc_cylinder_horizontal.png and /dev/null differ diff --git a/technic/technic/textures/technic_cnc_element_cross.png b/technic/technic/textures/technic_cnc_element_cross.png deleted file mode 100644 index cc66571..0000000 Binary files a/technic/technic/textures/technic_cnc_element_cross.png and /dev/null differ diff --git a/technic/technic/textures/technic_cnc_element_edge.png b/technic/technic/textures/technic_cnc_element_edge.png deleted file mode 100644 index 1245ea7..0000000 Binary files a/technic/technic/textures/technic_cnc_element_edge.png and /dev/null differ diff --git a/technic/technic/textures/technic_cnc_element_end.png b/technic/technic/textures/technic_cnc_element_end.png deleted file mode 100644 index 562eb2b..0000000 Binary files a/technic/technic/textures/technic_cnc_element_end.png and /dev/null differ diff --git a/technic/technic/textures/technic_cnc_element_straight.png b/technic/technic/textures/technic_cnc_element_straight.png deleted file mode 100644 index d42966e..0000000 Binary files a/technic/technic/textures/technic_cnc_element_straight.png and /dev/null differ diff --git a/technic/technic/textures/technic_cnc_element_t.png b/technic/technic/textures/technic_cnc_element_t.png deleted file mode 100644 index a462764..0000000 Binary files a/technic/technic/textures/technic_cnc_element_t.png and /dev/null differ diff --git a/technic/technic/textures/technic_cnc_front.png b/technic/technic/textures/technic_cnc_front.png deleted file mode 100644 index 6cc0490..0000000 Binary files a/technic/technic/textures/technic_cnc_front.png and /dev/null differ diff --git a/technic/technic/textures/technic_cnc_front_active.png b/technic/technic/textures/technic_cnc_front_active.png deleted file mode 100644 index f7a3c7f..0000000 Binary files a/technic/technic/textures/technic_cnc_front_active.png and /dev/null differ diff --git a/technic/technic/textures/technic_cnc_full.png b/technic/technic/textures/technic_cnc_full.png deleted file mode 100644 index 60f8a81..0000000 Binary files a/technic/technic/textures/technic_cnc_full.png and /dev/null differ diff --git a/technic/technic/textures/technic_cnc_half.png b/technic/technic/textures/technic_cnc_half.png deleted file mode 100644 index 2c4d3a8..0000000 Binary files a/technic/technic/textures/technic_cnc_half.png and /dev/null differ diff --git a/technic/technic/textures/technic_cnc_milling_background.png b/technic/technic/textures/technic_cnc_milling_background.png deleted file mode 100644 index 6a9c2f4..0000000 Binary files a/technic/technic/textures/technic_cnc_milling_background.png and /dev/null differ diff --git a/technic/technic/textures/technic_cnc_oblate_spheroid.png b/technic/technic/textures/technic_cnc_oblate_spheroid.png deleted file mode 100644 index b196e7d..0000000 Binary files a/technic/technic/textures/technic_cnc_oblate_spheroid.png and /dev/null differ diff --git a/technic/technic/textures/technic_cnc_onecurvededge.png b/technic/technic/textures/technic_cnc_onecurvededge.png deleted file mode 100644 index 8325846..0000000 Binary files a/technic/technic/textures/technic_cnc_onecurvededge.png and /dev/null differ diff --git a/technic/technic/textures/technic_cnc_pyramid.png b/technic/technic/textures/technic_cnc_pyramid.png deleted file mode 100644 index d8cc713..0000000 Binary files a/technic/technic/textures/technic_cnc_pyramid.png and /dev/null differ diff --git a/technic/technic/textures/technic_cnc_side.png b/technic/technic/textures/technic_cnc_side.png deleted file mode 100644 index 1ecbbac..0000000 Binary files a/technic/technic/textures/technic_cnc_side.png and /dev/null differ diff --git a/technic/technic/textures/technic_cnc_slope.png b/technic/technic/textures/technic_cnc_slope.png deleted file mode 100644 index 493d560..0000000 Binary files a/technic/technic/textures/technic_cnc_slope.png and /dev/null differ diff --git a/technic/technic/textures/technic_cnc_slope_edge.png b/technic/technic/textures/technic_cnc_slope_edge.png deleted file mode 100644 index 1b601c4..0000000 Binary files a/technic/technic/textures/technic_cnc_slope_edge.png and /dev/null differ diff --git a/technic/technic/textures/technic_cnc_slope_edge_upsdwn.png b/technic/technic/textures/technic_cnc_slope_edge_upsdwn.png deleted file mode 100644 index 350c22d..0000000 Binary files a/technic/technic/textures/technic_cnc_slope_edge_upsdwn.png and /dev/null differ diff --git a/technic/technic/textures/technic_cnc_slope_inner_edge.png b/technic/technic/textures/technic_cnc_slope_inner_edge.png deleted file mode 100644 index 3f5ab9e..0000000 Binary files a/technic/technic/textures/technic_cnc_slope_inner_edge.png and /dev/null differ diff --git a/technic/technic/textures/technic_cnc_slope_inner_edge_upsdwn.png b/technic/technic/textures/technic_cnc_slope_inner_edge_upsdwn.png deleted file mode 100644 index a1fee78..0000000 Binary files a/technic/technic/textures/technic_cnc_slope_inner_edge_upsdwn.png and /dev/null differ diff --git a/technic/technic/textures/technic_cnc_slope_lying.png b/technic/technic/textures/technic_cnc_slope_lying.png deleted file mode 100644 index 099ed59..0000000 Binary files a/technic/technic/textures/technic_cnc_slope_lying.png and /dev/null differ diff --git a/technic/technic/textures/technic_cnc_slope_upsdwn.png b/technic/technic/textures/technic_cnc_slope_upsdwn.png deleted file mode 100644 index 2a34b8b..0000000 Binary files a/technic/technic/textures/technic_cnc_slope_upsdwn.png and /dev/null differ diff --git a/technic/technic/textures/technic_cnc_sphere.png b/technic/technic/textures/technic_cnc_sphere.png deleted file mode 100644 index 791b32b..0000000 Binary files a/technic/technic/textures/technic_cnc_sphere.png and /dev/null differ diff --git a/technic/technic/textures/technic_cnc_spike.png b/technic/technic/textures/technic_cnc_spike.png deleted file mode 100644 index b445b40..0000000 Binary files a/technic/technic/textures/technic_cnc_spike.png and /dev/null differ diff --git a/technic/technic/textures/technic_cnc_stick.png b/technic/technic/textures/technic_cnc_stick.png deleted file mode 100644 index acaf1cb..0000000 Binary files a/technic/technic/textures/technic_cnc_stick.png and /dev/null differ diff --git a/technic/technic/textures/technic_cnc_top.png b/technic/technic/textures/technic_cnc_top.png deleted file mode 100644 index 5123334..0000000 Binary files a/technic/technic/textures/technic_cnc_top.png and /dev/null differ diff --git a/technic/technic/textures/technic_cnc_top_active.png b/technic/technic/textures/technic_cnc_top_active.png deleted file mode 100644 index 2bc9d81..0000000 Binary files a/technic/technic/textures/technic_cnc_top_active.png and /dev/null differ diff --git a/technic/technic/textures/technic_cnc_twocurvededge.png b/technic/technic/textures/technic_cnc_twocurvededge.png deleted file mode 100644 index b50a257..0000000 Binary files a/technic/technic/textures/technic_cnc_twocurvededge.png and /dev/null differ diff --git a/technic/technic/textures/technic_coal_alloy_furnace_bottom.png b/technic/technic/textures/technic_coal_alloy_furnace_bottom.png deleted file mode 100644 index 077dec5..0000000 Binary files a/technic/technic/textures/technic_coal_alloy_furnace_bottom.png and /dev/null differ diff --git a/technic/technic/textures/technic_coal_alloy_furnace_front.png b/technic/technic/textures/technic_coal_alloy_furnace_front.png deleted file mode 100644 index d9d93dd..0000000 Binary files a/technic/technic/textures/technic_coal_alloy_furnace_front.png and /dev/null differ diff --git a/technic/technic/textures/technic_coal_alloy_furnace_front_active.png b/technic/technic/textures/technic_coal_alloy_furnace_front_active.png deleted file mode 100644 index ffc4e0a..0000000 Binary files a/technic/technic/textures/technic_coal_alloy_furnace_front_active.png and /dev/null differ diff --git a/technic/technic/textures/technic_coal_alloy_furnace_side.png b/technic/technic/textures/technic_coal_alloy_furnace_side.png deleted file mode 100644 index d5c7066..0000000 Binary files a/technic/technic/textures/technic_coal_alloy_furnace_side.png and /dev/null differ diff --git a/technic/technic/textures/technic_coal_alloy_furnace_top.png b/technic/technic/textures/technic_coal_alloy_furnace_top.png deleted file mode 100644 index 6424fc0..0000000 Binary files a/technic/technic/textures/technic_coal_alloy_furnace_top.png and /dev/null differ diff --git a/technic/technic/textures/technic_coal_dust.png b/technic/technic/textures/technic_coal_dust.png deleted file mode 100644 index a1486c6..0000000 Binary files a/technic/technic/textures/technic_coal_dust.png and /dev/null differ diff --git a/technic/technic/textures/technic_common_tree_grindings.png b/technic/technic/textures/technic_common_tree_grindings.png deleted file mode 100644 index e17bb69..0000000 Binary files a/technic/technic/textures/technic_common_tree_grindings.png and /dev/null differ diff --git a/technic/technic/textures/technic_composite_plate.png b/technic/technic/textures/technic_composite_plate.png deleted file mode 100644 index 79b7b8d..0000000 Binary files a/technic/technic/textures/technic_composite_plate.png and /dev/null differ diff --git a/technic/technic/textures/technic_constructor_back.png b/technic/technic/textures/technic_constructor_back.png deleted file mode 100644 index f002363..0000000 Binary files a/technic/technic/textures/technic_constructor_back.png and /dev/null differ diff --git a/technic/technic/textures/technic_constructor_front_off.png b/technic/technic/textures/technic_constructor_front_off.png deleted file mode 100644 index f3f7856..0000000 Binary files a/technic/technic/textures/technic_constructor_front_off.png and /dev/null differ diff --git a/technic/technic/textures/technic_constructor_front_on.png b/technic/technic/textures/technic_constructor_front_on.png deleted file mode 100644 index d733765..0000000 Binary files a/technic/technic/textures/technic_constructor_front_on.png and /dev/null differ diff --git a/technic/technic/textures/technic_constructor_mk1_bottom_off.png b/technic/technic/textures/technic_constructor_mk1_bottom_off.png deleted file mode 100644 index 0c52557..0000000 Binary files a/technic/technic/textures/technic_constructor_mk1_bottom_off.png and /dev/null differ diff --git a/technic/technic/textures/technic_constructor_mk1_bottom_on.png b/technic/technic/textures/technic_constructor_mk1_bottom_on.png deleted file mode 100644 index 0c46c57..0000000 Binary files a/technic/technic/textures/technic_constructor_mk1_bottom_on.png and /dev/null differ diff --git a/technic/technic/textures/technic_constructor_mk1_side1_off.png b/technic/technic/textures/technic_constructor_mk1_side1_off.png deleted file mode 100644 index e64ddbe..0000000 Binary files a/technic/technic/textures/technic_constructor_mk1_side1_off.png and /dev/null differ diff --git a/technic/technic/textures/technic_constructor_mk1_side1_on.png b/technic/technic/textures/technic_constructor_mk1_side1_on.png deleted file mode 100644 index eda98d8..0000000 Binary files a/technic/technic/textures/technic_constructor_mk1_side1_on.png and /dev/null differ diff --git a/technic/technic/textures/technic_constructor_mk1_side2_off.png b/technic/technic/textures/technic_constructor_mk1_side2_off.png deleted file mode 100644 index b33fcfb..0000000 Binary files a/technic/technic/textures/technic_constructor_mk1_side2_off.png and /dev/null differ diff --git a/technic/technic/textures/technic_constructor_mk1_side2_on.png b/technic/technic/textures/technic_constructor_mk1_side2_on.png deleted file mode 100644 index 17e4786..0000000 Binary files a/technic/technic/textures/technic_constructor_mk1_side2_on.png and /dev/null differ diff --git a/technic/technic/textures/technic_constructor_mk1_top_off.png b/technic/technic/textures/technic_constructor_mk1_top_off.png deleted file mode 100644 index 9f3846c..0000000 Binary files a/technic/technic/textures/technic_constructor_mk1_top_off.png and /dev/null differ diff --git a/technic/technic/textures/technic_constructor_mk1_top_on.png b/technic/technic/textures/technic_constructor_mk1_top_on.png deleted file mode 100644 index 5c8d6fb..0000000 Binary files a/technic/technic/textures/technic_constructor_mk1_top_on.png and /dev/null differ diff --git a/technic/technic/textures/technic_constructor_mk2_bottom_off.png b/technic/technic/textures/technic_constructor_mk2_bottom_off.png deleted file mode 100644 index e926dda..0000000 Binary files a/technic/technic/textures/technic_constructor_mk2_bottom_off.png and /dev/null differ diff --git a/technic/technic/textures/technic_constructor_mk2_bottom_on.png b/technic/technic/textures/technic_constructor_mk2_bottom_on.png deleted file mode 100644 index 52d739b..0000000 Binary files a/technic/technic/textures/technic_constructor_mk2_bottom_on.png and /dev/null differ diff --git a/technic/technic/textures/technic_constructor_mk2_side1_off.png b/technic/technic/textures/technic_constructor_mk2_side1_off.png deleted file mode 100644 index 2fd42a2..0000000 Binary files a/technic/technic/textures/technic_constructor_mk2_side1_off.png and /dev/null differ diff --git a/technic/technic/textures/technic_constructor_mk2_side1_on.png b/technic/technic/textures/technic_constructor_mk2_side1_on.png deleted file mode 100644 index 4c75c83..0000000 Binary files a/technic/technic/textures/technic_constructor_mk2_side1_on.png and /dev/null differ diff --git a/technic/technic/textures/technic_constructor_mk2_side2_off.png b/technic/technic/textures/technic_constructor_mk2_side2_off.png deleted file mode 100644 index f6407e7..0000000 Binary files a/technic/technic/textures/technic_constructor_mk2_side2_off.png and /dev/null differ diff --git a/technic/technic/textures/technic_constructor_mk2_side2_on.png b/technic/technic/textures/technic_constructor_mk2_side2_on.png deleted file mode 100644 index e40db48..0000000 Binary files a/technic/technic/textures/technic_constructor_mk2_side2_on.png and /dev/null differ diff --git a/technic/technic/textures/technic_constructor_mk2_top_off.png b/technic/technic/textures/technic_constructor_mk2_top_off.png deleted file mode 100644 index e5227d1..0000000 Binary files a/technic/technic/textures/technic_constructor_mk2_top_off.png and /dev/null differ diff --git a/technic/technic/textures/technic_constructor_mk2_top_on.png b/technic/technic/textures/technic_constructor_mk2_top_on.png deleted file mode 100644 index 9762bd6..0000000 Binary files a/technic/technic/textures/technic_constructor_mk2_top_on.png and /dev/null differ diff --git a/technic/technic/textures/technic_constructor_mk3_bottom_off.png b/technic/technic/textures/technic_constructor_mk3_bottom_off.png deleted file mode 100644 index 606d97e..0000000 Binary files a/technic/technic/textures/technic_constructor_mk3_bottom_off.png and /dev/null differ diff --git a/technic/technic/textures/technic_constructor_mk3_bottom_on.png b/technic/technic/textures/technic_constructor_mk3_bottom_on.png deleted file mode 100644 index 878e4ff..0000000 Binary files a/technic/technic/textures/technic_constructor_mk3_bottom_on.png and /dev/null differ diff --git a/technic/technic/textures/technic_constructor_mk3_side1_off.png b/technic/technic/textures/technic_constructor_mk3_side1_off.png deleted file mode 100644 index 84dd7eb..0000000 Binary files a/technic/technic/textures/technic_constructor_mk3_side1_off.png and /dev/null differ diff --git a/technic/technic/textures/technic_constructor_mk3_side1_on.png b/technic/technic/textures/technic_constructor_mk3_side1_on.png deleted file mode 100644 index 2741d2d..0000000 Binary files a/technic/technic/textures/technic_constructor_mk3_side1_on.png and /dev/null differ diff --git a/technic/technic/textures/technic_constructor_mk3_side2_off.png b/technic/technic/textures/technic_constructor_mk3_side2_off.png deleted file mode 100644 index 75a5031..0000000 Binary files a/technic/technic/textures/technic_constructor_mk3_side2_off.png and /dev/null differ diff --git a/technic/technic/textures/technic_constructor_mk3_side2_on.png b/technic/technic/textures/technic_constructor_mk3_side2_on.png deleted file mode 100644 index 0a150ed..0000000 Binary files a/technic/technic/textures/technic_constructor_mk3_side2_on.png and /dev/null differ diff --git a/technic/technic/textures/technic_constructor_mk3_top_off.png b/technic/technic/textures/technic_constructor_mk3_top_off.png deleted file mode 100644 index c716752..0000000 Binary files a/technic/technic/textures/technic_constructor_mk3_top_off.png and /dev/null differ diff --git a/technic/technic/textures/technic_constructor_mk3_top_on.png b/technic/technic/textures/technic_constructor_mk3_top_on.png deleted file mode 100644 index acbe85b..0000000 Binary files a/technic/technic/textures/technic_constructor_mk3_top_on.png and /dev/null differ diff --git a/technic/technic/textures/technic_control_logic_unit.png b/technic/technic/textures/technic_control_logic_unit.png deleted file mode 100644 index c7b4b16..0000000 Binary files a/technic/technic/textures/technic_control_logic_unit.png and /dev/null differ diff --git a/technic/technic/textures/technic_copper_coil.png b/technic/technic/textures/technic_copper_coil.png deleted file mode 100644 index db6db1a..0000000 Binary files a/technic/technic/textures/technic_copper_coil.png and /dev/null differ diff --git a/technic/technic/textures/technic_copper_dust.png b/technic/technic/textures/technic_copper_dust.png deleted file mode 100644 index cad33ea..0000000 Binary files a/technic/technic/textures/technic_copper_dust.png and /dev/null differ diff --git a/technic/technic/textures/technic_copper_plate.png b/technic/technic/textures/technic_copper_plate.png deleted file mode 100644 index 99a49c8..0000000 Binary files a/technic/technic/textures/technic_copper_plate.png and /dev/null differ diff --git a/technic/technic/textures/technic_corium_flowing_animated.png b/technic/technic/textures/technic_corium_flowing_animated.png deleted file mode 100644 index 1d29f16..0000000 Binary files a/technic/technic/textures/technic_corium_flowing_animated.png and /dev/null differ diff --git a/technic/technic/textures/technic_corium_source_animated.png b/technic/technic/textures/technic_corium_source_animated.png deleted file mode 100644 index 6c3ee56..0000000 Binary files a/technic/technic/textures/technic_corium_source_animated.png and /dev/null differ diff --git a/technic/technic/textures/technic_deployer_back.png b/technic/technic/textures/technic_deployer_back.png deleted file mode 100644 index 12e5a31..0000000 Binary files a/technic/technic/textures/technic_deployer_back.png and /dev/null differ diff --git a/technic/technic/textures/technic_deployer_bottom.png b/technic/technic/textures/technic_deployer_bottom.png deleted file mode 100644 index febbe18..0000000 Binary files a/technic/technic/textures/technic_deployer_bottom.png and /dev/null differ diff --git a/technic/technic/textures/technic_deployer_front_off.png b/technic/technic/textures/technic_deployer_front_off.png deleted file mode 100644 index 9593112..0000000 Binary files a/technic/technic/textures/technic_deployer_front_off.png and /dev/null differ diff --git a/technic/technic/textures/technic_deployer_front_on.png b/technic/technic/textures/technic_deployer_front_on.png deleted file mode 100644 index f78de4c..0000000 Binary files a/technic/technic/textures/technic_deployer_front_on.png and /dev/null differ diff --git a/technic/technic/textures/technic_deployer_side.png b/technic/technic/textures/technic_deployer_side.png deleted file mode 100644 index 73af8f8..0000000 Binary files a/technic/technic/textures/technic_deployer_side.png and /dev/null differ diff --git a/technic/technic/textures/technic_deployer_side1.png b/technic/technic/textures/technic_deployer_side1.png deleted file mode 100644 index 8ef28d3..0000000 Binary files a/technic/technic/textures/technic_deployer_side1.png and /dev/null differ diff --git a/technic/technic/textures/technic_deployer_side2.png b/technic/technic/textures/technic_deployer_side2.png deleted file mode 100644 index ccb2cb9..0000000 Binary files a/technic/technic/textures/technic_deployer_side2.png and /dev/null differ diff --git a/technic/technic/textures/technic_deployer_top.png b/technic/technic/textures/technic_deployer_top.png deleted file mode 100644 index 262c9f6..0000000 Binary files a/technic/technic/textures/technic_deployer_top.png and /dev/null differ diff --git a/technic/technic/textures/technic_diamond_block_blue.png b/technic/technic/textures/technic_diamond_block_blue.png deleted file mode 100644 index 9f59fba..0000000 Binary files a/technic/technic/textures/technic_diamond_block_blue.png and /dev/null differ diff --git a/technic/technic/textures/technic_diamond_block_green.png b/technic/technic/textures/technic_diamond_block_green.png deleted file mode 100644 index 585c4b8..0000000 Binary files a/technic/technic/textures/technic_diamond_block_green.png and /dev/null differ diff --git a/technic/technic/textures/technic_diamond_block_red.png b/technic/technic/textures/technic_diamond_block_red.png deleted file mode 100644 index ed30957..0000000 Binary files a/technic/technic/textures/technic_diamond_block_red.png and /dev/null differ diff --git a/technic/technic/textures/technic_diamond_drill_head.png b/technic/technic/textures/technic_diamond_drill_head.png deleted file mode 100644 index e3d31e8..0000000 Binary files a/technic/technic/textures/technic_diamond_drill_head.png and /dev/null differ diff --git a/technic/technic/textures/technic_doped_silicon_wafer.png b/technic/technic/textures/technic_doped_silicon_wafer.png deleted file mode 100644 index 6365137..0000000 Binary files a/technic/technic/textures/technic_doped_silicon_wafer.png and /dev/null differ diff --git a/technic/technic/textures/technic_fine_copper_wire.png b/technic/technic/textures/technic_fine_copper_wire.png deleted file mode 100644 index 3e663bb..0000000 Binary files a/technic/technic/textures/technic_fine_copper_wire.png and /dev/null differ diff --git a/technic/technic/textures/technic_fine_gold_wire.png b/technic/technic/textures/technic_fine_gold_wire.png deleted file mode 100644 index 54a7a52..0000000 Binary files a/technic/technic/textures/technic_fine_gold_wire.png and /dev/null differ diff --git a/technic/technic/textures/technic_fine_silver_wire.png b/technic/technic/textures/technic_fine_silver_wire.png deleted file mode 100644 index f40a52b..0000000 Binary files a/technic/technic/textures/technic_fine_silver_wire.png and /dev/null differ diff --git a/technic/technic/textures/technic_flashlight.png b/technic/technic/textures/technic_flashlight.png deleted file mode 100644 index 8e7b75a..0000000 Binary files a/technic/technic/textures/technic_flashlight.png and /dev/null differ diff --git a/technic/technic/textures/technic_forcefield_animated.png b/technic/technic/textures/technic_forcefield_animated.png deleted file mode 100644 index 7763840..0000000 Binary files a/technic/technic/textures/technic_forcefield_animated.png and /dev/null differ diff --git a/technic/technic/textures/technic_forcefield_emitter_off.png b/technic/technic/textures/technic_forcefield_emitter_off.png deleted file mode 100644 index 4c4582f..0000000 Binary files a/technic/technic/textures/technic_forcefield_emitter_off.png and /dev/null differ diff --git a/technic/technic/textures/technic_forcefield_emitter_on.png b/technic/technic/textures/technic_forcefield_emitter_on.png deleted file mode 100644 index 1f32af6..0000000 Binary files a/technic/technic/textures/technic_forcefield_emitter_on.png and /dev/null differ diff --git a/technic/technic/textures/technic_frame.png b/technic/technic/textures/technic_frame.png deleted file mode 100644 index 4998120..0000000 Binary files a/technic/technic/textures/technic_frame.png and /dev/null differ diff --git a/technic/technic/textures/technic_geothermal_side.png b/technic/technic/textures/technic_geothermal_side.png deleted file mode 100644 index 90fb430..0000000 Binary files a/technic/technic/textures/technic_geothermal_side.png and /dev/null differ diff --git a/technic/technic/textures/technic_geothermal_top.png b/technic/technic/textures/technic_geothermal_top.png deleted file mode 100644 index 601ff15..0000000 Binary files a/technic/technic/textures/technic_geothermal_top.png and /dev/null differ diff --git a/technic/technic/textures/technic_geothermal_top_active.png b/technic/technic/textures/technic_geothermal_top_active.png deleted file mode 100644 index f02bec6..0000000 Binary files a/technic/technic/textures/technic_geothermal_top_active.png and /dev/null differ diff --git a/technic/technic/textures/technic_gold_dust.png b/technic/technic/textures/technic_gold_dust.png deleted file mode 100644 index 48c24ae..0000000 Binary files a/technic/technic/textures/technic_gold_dust.png and /dev/null differ diff --git a/technic/technic/textures/technic_graphite.png b/technic/technic/textures/technic_graphite.png deleted file mode 100644 index 00cd0ee..0000000 Binary files a/technic/technic/textures/technic_graphite.png and /dev/null differ diff --git a/technic/technic/textures/technic_grinder_front.png b/technic/technic/textures/technic_grinder_front.png deleted file mode 100644 index a28dbc1..0000000 Binary files a/technic/technic/textures/technic_grinder_front.png and /dev/null differ diff --git a/technic/technic/textures/technic_grinder_side.png b/technic/technic/textures/technic_grinder_side.png deleted file mode 100644 index af562f2..0000000 Binary files a/technic/technic/textures/technic_grinder_side.png and /dev/null differ diff --git a/technic/technic/textures/technic_grinder_top.png b/technic/technic/textures/technic_grinder_top.png deleted file mode 100644 index b074e13..0000000 Binary files a/technic/technic/textures/technic_grinder_top.png and /dev/null differ diff --git a/technic/technic/textures/technic_homedecor_glowlight_cube_white_sides.png b/technic/technic/textures/technic_homedecor_glowlight_cube_white_sides.png deleted file mode 100644 index 9121999..0000000 Binary files a/technic/technic/textures/technic_homedecor_glowlight_cube_white_sides.png and /dev/null differ diff --git a/technic/technic/textures/technic_homedecor_glowlight_cube_white_sides_ceiling.png b/technic/technic/textures/technic_homedecor_glowlight_cube_white_sides_ceiling.png deleted file mode 100644 index c8006eb..0000000 Binary files a/technic/technic/textures/technic_homedecor_glowlight_cube_white_sides_ceiling.png and /dev/null differ diff --git a/technic/technic/textures/technic_homedecor_glowlight_cube_white_tb.png b/technic/technic/textures/technic_homedecor_glowlight_cube_white_tb.png deleted file mode 100644 index b2e355a..0000000 Binary files a/technic/technic/textures/technic_homedecor_glowlight_cube_white_tb.png and /dev/null differ diff --git a/technic/technic/textures/technic_homedecor_glowlight_cube_yellow_sides.png b/technic/technic/textures/technic_homedecor_glowlight_cube_yellow_sides.png deleted file mode 100644 index b79be07..0000000 Binary files a/technic/technic/textures/technic_homedecor_glowlight_cube_yellow_sides.png and /dev/null differ diff --git a/technic/technic/textures/technic_homedecor_glowlight_cube_yellow_sides_ceiling.png b/technic/technic/textures/technic_homedecor_glowlight_cube_yellow_sides_ceiling.png deleted file mode 100644 index a9d397a..0000000 Binary files a/technic/technic/textures/technic_homedecor_glowlight_cube_yellow_sides_ceiling.png and /dev/null differ diff --git a/technic/technic/textures/technic_homedecor_glowlight_cube_yellow_tb.png b/technic/technic/textures/technic_homedecor_glowlight_cube_yellow_tb.png deleted file mode 100644 index daf03ab..0000000 Binary files a/technic/technic/textures/technic_homedecor_glowlight_cube_yellow_tb.png and /dev/null differ diff --git a/technic/technic/textures/technic_homedecor_glowlight_thick_white_sides.png b/technic/technic/textures/technic_homedecor_glowlight_thick_white_sides.png deleted file mode 100644 index 44c2b36..0000000 Binary files a/technic/technic/textures/technic_homedecor_glowlight_thick_white_sides.png and /dev/null differ diff --git a/technic/technic/textures/technic_homedecor_glowlight_thick_white_wall_sides.png b/technic/technic/textures/technic_homedecor_glowlight_thick_white_wall_sides.png deleted file mode 100644 index 937999e..0000000 Binary files a/technic/technic/textures/technic_homedecor_glowlight_thick_white_wall_sides.png and /dev/null differ diff --git a/technic/technic/textures/technic_homedecor_glowlight_thick_yellow_sides.png b/technic/technic/textures/technic_homedecor_glowlight_thick_yellow_sides.png deleted file mode 100644 index 769b054..0000000 Binary files a/technic/technic/textures/technic_homedecor_glowlight_thick_yellow_sides.png and /dev/null differ diff --git a/technic/technic/textures/technic_homedecor_glowlight_thick_yellow_wall_sides.png b/technic/technic/textures/technic_homedecor_glowlight_thick_yellow_wall_sides.png deleted file mode 100644 index 57820f1..0000000 Binary files a/technic/technic/textures/technic_homedecor_glowlight_thick_yellow_wall_sides.png and /dev/null differ diff --git a/technic/technic/textures/technic_homedecor_glowlight_thin_white_sides.png b/technic/technic/textures/technic_homedecor_glowlight_thin_white_sides.png deleted file mode 100644 index 0a337a5..0000000 Binary files a/technic/technic/textures/technic_homedecor_glowlight_thin_white_sides.png and /dev/null differ diff --git a/technic/technic/textures/technic_homedecor_glowlight_thin_white_wall_sides.png b/technic/technic/textures/technic_homedecor_glowlight_thin_white_wall_sides.png deleted file mode 100644 index 0fd3b1e..0000000 Binary files a/technic/technic/textures/technic_homedecor_glowlight_thin_white_wall_sides.png and /dev/null differ diff --git a/technic/technic/textures/technic_homedecor_glowlight_thin_yellow_sides.png b/technic/technic/textures/technic_homedecor_glowlight_thin_yellow_sides.png deleted file mode 100644 index 55bb6c0..0000000 Binary files a/technic/technic/textures/technic_homedecor_glowlight_thin_yellow_sides.png and /dev/null differ diff --git a/technic/technic/textures/technic_homedecor_glowlight_thin_yellow_wall_sides.png b/technic/technic/textures/technic_homedecor_glowlight_thin_yellow_wall_sides.png deleted file mode 100644 index 4b28a27..0000000 Binary files a/technic/technic/textures/technic_homedecor_glowlight_thin_yellow_wall_sides.png and /dev/null differ diff --git a/technic/technic/textures/technic_homedecor_glowlight_white_tb.png b/technic/technic/textures/technic_homedecor_glowlight_white_tb.png deleted file mode 100644 index fdc8a4d..0000000 Binary files a/technic/technic/textures/technic_homedecor_glowlight_white_tb.png and /dev/null differ diff --git a/technic/technic/textures/technic_homedecor_glowlight_yellow_tb.png b/technic/technic/textures/technic_homedecor_glowlight_yellow_tb.png deleted file mode 100644 index ffd9c58..0000000 Binary files a/technic/technic/textures/technic_homedecor_glowlight_yellow_tb.png and /dev/null differ diff --git a/technic/technic/textures/technic_hv_battery_box_bottom.png b/technic/technic/textures/technic_hv_battery_box_bottom.png deleted file mode 100644 index 996b2d4..0000000 Binary files a/technic/technic/textures/technic_hv_battery_box_bottom.png and /dev/null differ diff --git a/technic/technic/textures/technic_hv_battery_box_side.png b/technic/technic/textures/technic_hv_battery_box_side.png deleted file mode 100644 index fffd8ea..0000000 Binary files a/technic/technic/textures/technic_hv_battery_box_side.png and /dev/null differ diff --git a/technic/technic/textures/technic_hv_battery_box_top.png b/technic/technic/textures/technic_hv_battery_box_top.png deleted file mode 100644 index 49dee71..0000000 Binary files a/technic/technic/textures/technic_hv_battery_box_top.png and /dev/null differ diff --git a/technic/technic/textures/technic_hv_cable.png b/technic/technic/textures/technic_hv_cable.png deleted file mode 100644 index 7cb368d..0000000 Binary files a/technic/technic/textures/technic_hv_cable.png and /dev/null differ diff --git a/technic/technic/textures/technic_hv_cable_wield.png b/technic/technic/textures/technic_hv_cable_wield.png deleted file mode 100644 index 7b9ca58..0000000 Binary files a/technic/technic/textures/technic_hv_cable_wield.png and /dev/null differ diff --git a/technic/technic/textures/technic_hv_down_converter_bottom.png b/technic/technic/textures/technic_hv_down_converter_bottom.png deleted file mode 100644 index 996b2d4..0000000 Binary files a/technic/technic/textures/technic_hv_down_converter_bottom.png and /dev/null differ diff --git a/technic/technic/textures/technic_hv_down_converter_side.png b/technic/technic/textures/technic_hv_down_converter_side.png deleted file mode 100644 index ab904f1..0000000 Binary files a/technic/technic/textures/technic_hv_down_converter_side.png and /dev/null differ diff --git a/technic/technic/textures/technic_hv_down_converter_top.png b/technic/technic/textures/technic_hv_down_converter_top.png deleted file mode 100644 index 996b2d4..0000000 Binary files a/technic/technic/textures/technic_hv_down_converter_top.png and /dev/null differ diff --git a/technic/technic/textures/technic_hv_generator_front.png b/technic/technic/textures/technic_hv_generator_front.png deleted file mode 100644 index 6a14686..0000000 Binary files a/technic/technic/textures/technic_hv_generator_front.png and /dev/null differ diff --git a/technic/technic/textures/technic_hv_generator_front_active.png b/technic/technic/textures/technic_hv_generator_front_active.png deleted file mode 100644 index d92c699..0000000 Binary files a/technic/technic/textures/technic_hv_generator_front_active.png and /dev/null differ diff --git a/technic/technic/textures/technic_hv_generator_side.png b/technic/technic/textures/technic_hv_generator_side.png deleted file mode 100644 index 3073e0f..0000000 Binary files a/technic/technic/textures/technic_hv_generator_side.png and /dev/null differ diff --git a/technic/technic/textures/technic_hv_generator_top.png b/technic/technic/textures/technic_hv_generator_top.png deleted file mode 100644 index 646168c..0000000 Binary files a/technic/technic/textures/technic_hv_generator_top.png and /dev/null differ diff --git a/technic/technic/textures/technic_hv_grinder_bottom.png b/technic/technic/textures/technic_hv_grinder_bottom.png deleted file mode 100644 index fa2c135..0000000 Binary files a/technic/technic/textures/technic_hv_grinder_bottom.png and /dev/null differ diff --git a/technic/technic/textures/technic_hv_grinder_front.png b/technic/technic/textures/technic_hv_grinder_front.png deleted file mode 100644 index a5bca0a..0000000 Binary files a/technic/technic/textures/technic_hv_grinder_front.png and /dev/null differ diff --git a/technic/technic/textures/technic_hv_grinder_front_active.png b/technic/technic/textures/technic_hv_grinder_front_active.png deleted file mode 100644 index 4077630..0000000 Binary files a/technic/technic/textures/technic_hv_grinder_front_active.png and /dev/null differ diff --git a/technic/technic/textures/technic_hv_grinder_side.png b/technic/technic/textures/technic_hv_grinder_side.png deleted file mode 100644 index c3063c4..0000000 Binary files a/technic/technic/textures/technic_hv_grinder_side.png and /dev/null differ diff --git a/technic/technic/textures/technic_hv_grinder_side_tube.png b/technic/technic/textures/technic_hv_grinder_side_tube.png deleted file mode 100644 index 43bcca5..0000000 Binary files a/technic/technic/textures/technic_hv_grinder_side_tube.png and /dev/null differ diff --git a/technic/technic/textures/technic_hv_grinder_top.png b/technic/technic/textures/technic_hv_grinder_top.png deleted file mode 100644 index e0df36b..0000000 Binary files a/technic/technic/textures/technic_hv_grinder_top.png and /dev/null differ diff --git a/technic/technic/textures/technic_hv_nuclear_reactor_core.png b/technic/technic/textures/technic_hv_nuclear_reactor_core.png deleted file mode 100644 index 4661177..0000000 Binary files a/technic/technic/textures/technic_hv_nuclear_reactor_core.png and /dev/null differ diff --git a/technic/technic/textures/technic_hv_solar_array_bottom.png b/technic/technic/textures/technic_hv_solar_array_bottom.png deleted file mode 100644 index 596e79a..0000000 Binary files a/technic/technic/textures/technic_hv_solar_array_bottom.png and /dev/null differ diff --git a/technic/technic/textures/technic_hv_solar_array_side.png b/technic/technic/textures/technic_hv_solar_array_side.png deleted file mode 100644 index a3aa8c7..0000000 Binary files a/technic/technic/textures/technic_hv_solar_array_side.png and /dev/null differ diff --git a/technic/technic/textures/technic_hv_solar_array_top.png b/technic/technic/textures/technic_hv_solar_array_top.png deleted file mode 100644 index b7f0b43..0000000 Binary files a/technic/technic/textures/technic_hv_solar_array_top.png and /dev/null differ diff --git a/technic/technic/textures/technic_hv_transformer.png b/technic/technic/textures/technic_hv_transformer.png deleted file mode 100644 index e1d4c98..0000000 Binary files a/technic/technic/textures/technic_hv_transformer.png and /dev/null differ diff --git a/technic/technic/textures/technic_injector_bottom.png b/technic/technic/textures/technic_injector_bottom.png deleted file mode 100644 index 39916bd..0000000 Binary files a/technic/technic/textures/technic_injector_bottom.png and /dev/null differ diff --git a/technic/technic/textures/technic_injector_side.png b/technic/technic/textures/technic_injector_side.png deleted file mode 100644 index a5419a1..0000000 Binary files a/technic/technic/textures/technic_injector_side.png and /dev/null differ diff --git a/technic/technic/textures/technic_injector_top.png b/technic/technic/textures/technic_injector_top.png deleted file mode 100644 index 440649c..0000000 Binary files a/technic/technic/textures/technic_injector_top.png and /dev/null differ diff --git a/technic/technic/textures/technic_kalite_dust.png b/technic/technic/textures/technic_kalite_dust.png deleted file mode 100644 index 3a9e10f..0000000 Binary files a/technic/technic/textures/technic_kalite_dust.png and /dev/null differ diff --git a/technic/technic/textures/technic_laser_beam_mk1.png b/technic/technic/textures/technic_laser_beam_mk1.png deleted file mode 100644 index 4cf9b3e..0000000 Binary files a/technic/technic/textures/technic_laser_beam_mk1.png and /dev/null differ diff --git a/technic/technic/textures/technic_laser_beam_mk2.png b/technic/technic/textures/technic_laser_beam_mk2.png deleted file mode 100644 index 9e27a8c..0000000 Binary files a/technic/technic/textures/technic_laser_beam_mk2.png and /dev/null differ diff --git a/technic/technic/textures/technic_laser_beam_mk3.png b/technic/technic/textures/technic_laser_beam_mk3.png deleted file mode 100644 index 5a17e83..0000000 Binary files a/technic/technic/textures/technic_laser_beam_mk3.png and /dev/null differ diff --git a/technic/technic/textures/technic_lava_can.png b/technic/technic/textures/technic_lava_can.png deleted file mode 100644 index abe1a8c..0000000 Binary files a/technic/technic/textures/technic_lava_can.png and /dev/null differ diff --git a/technic/technic/textures/technic_light.png b/technic/technic/textures/technic_light.png deleted file mode 100644 index 334cb07..0000000 Binary files a/technic/technic/textures/technic_light.png and /dev/null differ diff --git a/technic/technic/textures/technic_lv_alloy_furnace_bottom.png b/technic/technic/textures/technic_lv_alloy_furnace_bottom.png deleted file mode 100644 index 2c0aaee..0000000 Binary files a/technic/technic/textures/technic_lv_alloy_furnace_bottom.png and /dev/null differ diff --git a/technic/technic/textures/technic_lv_alloy_furnace_front.png b/technic/technic/textures/technic_lv_alloy_furnace_front.png deleted file mode 100644 index 2d65cda..0000000 Binary files a/technic/technic/textures/technic_lv_alloy_furnace_front.png and /dev/null differ diff --git a/technic/technic/textures/technic_lv_alloy_furnace_front_active.png b/technic/technic/textures/technic_lv_alloy_furnace_front_active.png deleted file mode 100644 index 1ced989..0000000 Binary files a/technic/technic/textures/technic_lv_alloy_furnace_front_active.png and /dev/null differ diff --git a/technic/technic/textures/technic_lv_alloy_furnace_side.png b/technic/technic/textures/technic_lv_alloy_furnace_side.png deleted file mode 100644 index 778ad88..0000000 Binary files a/technic/technic/textures/technic_lv_alloy_furnace_side.png and /dev/null differ diff --git a/technic/technic/textures/technic_lv_alloy_furnace_top.png b/technic/technic/textures/technic_lv_alloy_furnace_top.png deleted file mode 100644 index 706793b..0000000 Binary files a/technic/technic/textures/technic_lv_alloy_furnace_top.png and /dev/null differ diff --git a/technic/technic/textures/technic_lv_battery_box_bottom.png b/technic/technic/textures/technic_lv_battery_box_bottom.png deleted file mode 100644 index a6124e6..0000000 Binary files a/technic/technic/textures/technic_lv_battery_box_bottom.png and /dev/null differ diff --git a/technic/technic/textures/technic_lv_battery_box_side.png b/technic/technic/textures/technic_lv_battery_box_side.png deleted file mode 100644 index 24d4e4e..0000000 Binary files a/technic/technic/textures/technic_lv_battery_box_side.png and /dev/null differ diff --git a/technic/technic/textures/technic_lv_battery_box_top.png b/technic/technic/textures/technic_lv_battery_box_top.png deleted file mode 100644 index b32100f..0000000 Binary files a/technic/technic/textures/technic_lv_battery_box_top.png and /dev/null differ diff --git a/technic/technic/textures/technic_lv_cable.png b/technic/technic/textures/technic_lv_cable.png deleted file mode 100644 index 0071bc9..0000000 Binary files a/technic/technic/textures/technic_lv_cable.png and /dev/null differ diff --git a/technic/technic/textures/technic_lv_cable_wield.png b/technic/technic/textures/technic_lv_cable_wield.png deleted file mode 100644 index bc7704d..0000000 Binary files a/technic/technic/textures/technic_lv_cable_wield.png and /dev/null differ diff --git a/technic/technic/textures/technic_lv_compressor_back.png b/technic/technic/textures/technic_lv_compressor_back.png deleted file mode 100644 index 11286e3..0000000 Binary files a/technic/technic/textures/technic_lv_compressor_back.png and /dev/null differ diff --git a/technic/technic/textures/technic_lv_compressor_bottom.png b/technic/technic/textures/technic_lv_compressor_bottom.png deleted file mode 100644 index 886f27e..0000000 Binary files a/technic/technic/textures/technic_lv_compressor_bottom.png and /dev/null differ diff --git a/technic/technic/textures/technic_lv_compressor_front.png b/technic/technic/textures/technic_lv_compressor_front.png deleted file mode 100644 index 007d6de..0000000 Binary files a/technic/technic/textures/technic_lv_compressor_front.png and /dev/null differ diff --git a/technic/technic/textures/technic_lv_compressor_front_active.png b/technic/technic/textures/technic_lv_compressor_front_active.png deleted file mode 100644 index b3d27c0..0000000 Binary files a/technic/technic/textures/technic_lv_compressor_front_active.png and /dev/null differ diff --git a/technic/technic/textures/technic_lv_compressor_side.png b/technic/technic/textures/technic_lv_compressor_side.png deleted file mode 100644 index 87acda6..0000000 Binary files a/technic/technic/textures/technic_lv_compressor_side.png and /dev/null differ diff --git a/technic/technic/textures/technic_lv_compressor_top.png b/technic/technic/textures/technic_lv_compressor_top.png deleted file mode 100644 index 786b859..0000000 Binary files a/technic/technic/textures/technic_lv_compressor_top.png and /dev/null differ diff --git a/technic/technic/textures/technic_lv_electric_furnace_bottom.png b/technic/technic/textures/technic_lv_electric_furnace_bottom.png deleted file mode 100644 index 15fa6de..0000000 Binary files a/technic/technic/textures/technic_lv_electric_furnace_bottom.png and /dev/null differ diff --git a/technic/technic/textures/technic_lv_electric_furnace_front.png b/technic/technic/textures/technic_lv_electric_furnace_front.png deleted file mode 100644 index 755aadf..0000000 Binary files a/technic/technic/textures/technic_lv_electric_furnace_front.png and /dev/null differ diff --git a/technic/technic/textures/technic_lv_electric_furnace_front_active.png b/technic/technic/textures/technic_lv_electric_furnace_front_active.png deleted file mode 100644 index de7f1f9..0000000 Binary files a/technic/technic/textures/technic_lv_electric_furnace_front_active.png and /dev/null differ diff --git a/technic/technic/textures/technic_lv_electric_furnace_side.png b/technic/technic/textures/technic_lv_electric_furnace_side.png deleted file mode 100644 index 80cf742..0000000 Binary files a/technic/technic/textures/technic_lv_electric_furnace_side.png and /dev/null differ diff --git a/technic/technic/textures/technic_lv_electric_furnace_top.png b/technic/technic/textures/technic_lv_electric_furnace_top.png deleted file mode 100644 index fbadd9a..0000000 Binary files a/technic/technic/textures/technic_lv_electric_furnace_top.png and /dev/null differ diff --git a/technic/technic/textures/technic_lv_extractor_bottom.png b/technic/technic/textures/technic_lv_extractor_bottom.png deleted file mode 100644 index aecd719..0000000 Binary files a/technic/technic/textures/technic_lv_extractor_bottom.png and /dev/null differ diff --git a/technic/technic/textures/technic_lv_extractor_front.png b/technic/technic/textures/technic_lv_extractor_front.png deleted file mode 100644 index 1bd7e9a..0000000 Binary files a/technic/technic/textures/technic_lv_extractor_front.png and /dev/null differ diff --git a/technic/technic/textures/technic_lv_extractor_front_active.png b/technic/technic/textures/technic_lv_extractor_front_active.png deleted file mode 100644 index 7f8b30a..0000000 Binary files a/technic/technic/textures/technic_lv_extractor_front_active.png and /dev/null differ diff --git a/technic/technic/textures/technic_lv_extractor_side.png b/technic/technic/textures/technic_lv_extractor_side.png deleted file mode 100644 index 99d9486..0000000 Binary files a/technic/technic/textures/technic_lv_extractor_side.png and /dev/null differ diff --git a/technic/technic/textures/technic_lv_extractor_top.png b/technic/technic/textures/technic_lv_extractor_top.png deleted file mode 100644 index e7d9ff9..0000000 Binary files a/technic/technic/textures/technic_lv_extractor_top.png and /dev/null differ diff --git a/technic/technic/textures/technic_lv_generator_front.png b/technic/technic/textures/technic_lv_generator_front.png deleted file mode 100644 index 2d64844..0000000 Binary files a/technic/technic/textures/technic_lv_generator_front.png and /dev/null differ diff --git a/technic/technic/textures/technic_lv_generator_front_active.png b/technic/technic/textures/technic_lv_generator_front_active.png deleted file mode 100644 index 4e57ca0..0000000 Binary files a/technic/technic/textures/technic_lv_generator_front_active.png and /dev/null differ diff --git a/technic/technic/textures/technic_lv_generator_side.png b/technic/technic/textures/technic_lv_generator_side.png deleted file mode 100644 index 5cbcbef..0000000 Binary files a/technic/technic/textures/technic_lv_generator_side.png and /dev/null differ diff --git a/technic/technic/textures/technic_lv_generator_top.png b/technic/technic/textures/technic_lv_generator_top.png deleted file mode 100644 index e2f3db3..0000000 Binary files a/technic/technic/textures/technic_lv_generator_top.png and /dev/null differ diff --git a/technic/technic/textures/technic_lv_grinder_bottom.png b/technic/technic/textures/technic_lv_grinder_bottom.png deleted file mode 100644 index aecd719..0000000 Binary files a/technic/technic/textures/technic_lv_grinder_bottom.png and /dev/null differ diff --git a/technic/technic/textures/technic_lv_grinder_front.png b/technic/technic/textures/technic_lv_grinder_front.png deleted file mode 100644 index 1bd7e9a..0000000 Binary files a/technic/technic/textures/technic_lv_grinder_front.png and /dev/null differ diff --git a/technic/technic/textures/technic_lv_grinder_front_active.png b/technic/technic/textures/technic_lv_grinder_front_active.png deleted file mode 100644 index 7f8b30a..0000000 Binary files a/technic/technic/textures/technic_lv_grinder_front_active.png and /dev/null differ diff --git a/technic/technic/textures/technic_lv_grinder_side.png b/technic/technic/textures/technic_lv_grinder_side.png deleted file mode 100644 index 99d9486..0000000 Binary files a/technic/technic/textures/technic_lv_grinder_side.png and /dev/null differ diff --git a/technic/technic/textures/technic_lv_grinder_top.png b/technic/technic/textures/technic_lv_grinder_top.png deleted file mode 100644 index e7d9ff9..0000000 Binary files a/technic/technic/textures/technic_lv_grinder_top.png and /dev/null differ diff --git a/technic/technic/textures/technic_lv_solar_array_bottom.png b/technic/technic/textures/technic_lv_solar_array_bottom.png deleted file mode 100644 index 9e888e3..0000000 Binary files a/technic/technic/textures/technic_lv_solar_array_bottom.png and /dev/null differ diff --git a/technic/technic/textures/technic_lv_solar_array_side.png b/technic/technic/textures/technic_lv_solar_array_side.png deleted file mode 100644 index b22447e..0000000 Binary files a/technic/technic/textures/technic_lv_solar_array_side.png and /dev/null differ diff --git a/technic/technic/textures/technic_lv_solar_array_top.png b/technic/technic/textures/technic_lv_solar_array_top.png deleted file mode 100644 index cabd315..0000000 Binary files a/technic/technic/textures/technic_lv_solar_array_top.png and /dev/null differ diff --git a/technic/technic/textures/technic_lv_transformer.png b/technic/technic/textures/technic_lv_transformer.png deleted file mode 100644 index 613b196..0000000 Binary files a/technic/technic/textures/technic_lv_transformer.png and /dev/null differ diff --git a/technic/technic/textures/technic_machine_bottom.png b/technic/technic/textures/technic_machine_bottom.png deleted file mode 100644 index 48a47b0..0000000 Binary files a/technic/technic/textures/technic_machine_bottom.png and /dev/null differ diff --git a/technic/technic/textures/technic_machine_casing.png b/technic/technic/textures/technic_machine_casing.png deleted file mode 100644 index d596733..0000000 Binary files a/technic/technic/textures/technic_machine_casing.png and /dev/null differ diff --git a/technic/technic/textures/technic_mining_drill.png b/technic/technic/textures/technic_mining_drill.png deleted file mode 100644 index 171888d..0000000 Binary files a/technic/technic/textures/technic_mining_drill.png and /dev/null differ diff --git a/technic/technic/textures/technic_mining_drill_mk2.png b/technic/technic/textures/technic_mining_drill_mk2.png deleted file mode 100644 index 30be719..0000000 Binary files a/technic/technic/textures/technic_mining_drill_mk2.png and /dev/null differ diff --git a/technic/technic/textures/technic_mining_drill_mk3.png b/technic/technic/textures/technic_mining_drill_mk3.png deleted file mode 100644 index 30de896..0000000 Binary files a/technic/technic/textures/technic_mining_drill_mk3.png and /dev/null differ diff --git a/technic/technic/textures/technic_mining_laser_mk1.png b/technic/technic/textures/technic_mining_laser_mk1.png deleted file mode 100644 index 29faeb4..0000000 Binary files a/technic/technic/textures/technic_mining_laser_mk1.png and /dev/null differ diff --git a/technic/technic/textures/technic_mining_laser_mk2.png b/technic/technic/textures/technic_mining_laser_mk2.png deleted file mode 100644 index 2d67c0f..0000000 Binary files a/technic/technic/textures/technic_mining_laser_mk2.png and /dev/null differ diff --git a/technic/technic/textures/technic_mining_laser_mk3.png b/technic/technic/textures/technic_mining_laser_mk3.png deleted file mode 100644 index db9ee26..0000000 Binary files a/technic/technic/textures/technic_mining_laser_mk3.png and /dev/null differ diff --git a/technic/technic/textures/technic_mithril_dust.png b/technic/technic/textures/technic_mithril_dust.png deleted file mode 100644 index adfbe6c..0000000 Binary files a/technic/technic/textures/technic_mithril_dust.png and /dev/null differ diff --git a/technic/technic/textures/technic_mixed_metal_ingot.png b/technic/technic/textures/technic_mixed_metal_ingot.png deleted file mode 100644 index 8f6847b..0000000 Binary files a/technic/technic/textures/technic_mixed_metal_ingot.png and /dev/null differ diff --git a/technic/technic/textures/technic_motor.png b/technic/technic/textures/technic_motor.png deleted file mode 100644 index 77d4b91..0000000 Binary files a/technic/technic/textures/technic_motor.png and /dev/null differ diff --git a/technic/technic/textures/technic_music_player_bottom.png b/technic/technic/textures/technic_music_player_bottom.png deleted file mode 100644 index bd8fd55..0000000 Binary files a/technic/technic/textures/technic_music_player_bottom.png and /dev/null differ diff --git a/technic/technic/textures/technic_music_player_side.png b/technic/technic/textures/technic_music_player_side.png deleted file mode 100644 index 6c34fea..0000000 Binary files a/technic/technic/textures/technic_music_player_side.png and /dev/null differ diff --git a/technic/technic/textures/technic_music_player_top.png b/technic/technic/textures/technic_music_player_top.png deleted file mode 100644 index 0d34563..0000000 Binary files a/technic/technic/textures/technic_music_player_top.png and /dev/null differ diff --git a/technic/technic/textures/technic_mv_alloy_furnace_bottom.png b/technic/technic/textures/technic_mv_alloy_furnace_bottom.png deleted file mode 100644 index 2c0aaee..0000000 Binary files a/technic/technic/textures/technic_mv_alloy_furnace_bottom.png and /dev/null differ diff --git a/technic/technic/textures/technic_mv_alloy_furnace_front.png b/technic/technic/textures/technic_mv_alloy_furnace_front.png deleted file mode 100644 index a5dac82..0000000 Binary files a/technic/technic/textures/technic_mv_alloy_furnace_front.png and /dev/null differ diff --git a/technic/technic/textures/technic_mv_alloy_furnace_front_active.png b/technic/technic/textures/technic_mv_alloy_furnace_front_active.png deleted file mode 100644 index f6e69a9..0000000 Binary files a/technic/technic/textures/technic_mv_alloy_furnace_front_active.png and /dev/null differ diff --git a/technic/technic/textures/technic_mv_alloy_furnace_side.png b/technic/technic/textures/technic_mv_alloy_furnace_side.png deleted file mode 100644 index 0430479..0000000 Binary files a/technic/technic/textures/technic_mv_alloy_furnace_side.png and /dev/null differ diff --git a/technic/technic/textures/technic_mv_alloy_furnace_side_tube.png b/technic/technic/textures/technic_mv_alloy_furnace_side_tube.png deleted file mode 100644 index 1800eed..0000000 Binary files a/technic/technic/textures/technic_mv_alloy_furnace_side_tube.png and /dev/null differ diff --git a/technic/technic/textures/technic_mv_alloy_furnace_top.png b/technic/technic/textures/technic_mv_alloy_furnace_top.png deleted file mode 100644 index f44e3c0..0000000 Binary files a/technic/technic/textures/technic_mv_alloy_furnace_top.png and /dev/null differ diff --git a/technic/technic/textures/technic_mv_battery_box_bottom.png b/technic/technic/textures/technic_mv_battery_box_bottom.png deleted file mode 100644 index a610660..0000000 Binary files a/technic/technic/textures/technic_mv_battery_box_bottom.png and /dev/null differ diff --git a/technic/technic/textures/technic_mv_battery_box_side.png b/technic/technic/textures/technic_mv_battery_box_side.png deleted file mode 100644 index 06a4be5..0000000 Binary files a/technic/technic/textures/technic_mv_battery_box_side.png and /dev/null differ diff --git a/technic/technic/textures/technic_mv_battery_box_top.png b/technic/technic/textures/technic_mv_battery_box_top.png deleted file mode 100644 index b32100f..0000000 Binary files a/technic/technic/textures/technic_mv_battery_box_top.png and /dev/null differ diff --git a/technic/technic/textures/technic_mv_cable.png b/technic/technic/textures/technic_mv_cable.png deleted file mode 100644 index 2819d2b..0000000 Binary files a/technic/technic/textures/technic_mv_cable.png and /dev/null differ diff --git a/technic/technic/textures/technic_mv_cable_wield.png b/technic/technic/textures/technic_mv_cable_wield.png deleted file mode 100644 index 2d41e27..0000000 Binary files a/technic/technic/textures/technic_mv_cable_wield.png and /dev/null differ diff --git a/technic/technic/textures/technic_mv_centrifuge_bottom.png b/technic/technic/textures/technic_mv_centrifuge_bottom.png deleted file mode 100644 index 6dcd40f..0000000 Binary files a/technic/technic/textures/technic_mv_centrifuge_bottom.png and /dev/null differ diff --git a/technic/technic/textures/technic_mv_centrifuge_front.png b/technic/technic/textures/technic_mv_centrifuge_front.png deleted file mode 100644 index e278a33..0000000 Binary files a/technic/technic/textures/technic_mv_centrifuge_front.png and /dev/null differ diff --git a/technic/technic/textures/technic_mv_centrifuge_front_active.png b/technic/technic/textures/technic_mv_centrifuge_front_active.png deleted file mode 100644 index 4cef912..0000000 Binary files a/technic/technic/textures/technic_mv_centrifuge_front_active.png and /dev/null differ diff --git a/technic/technic/textures/technic_mv_centrifuge_side.png b/technic/technic/textures/technic_mv_centrifuge_side.png deleted file mode 100644 index eeef44a..0000000 Binary files a/technic/technic/textures/technic_mv_centrifuge_side.png and /dev/null differ diff --git a/technic/technic/textures/technic_mv_centrifuge_top.png b/technic/technic/textures/technic_mv_centrifuge_top.png deleted file mode 100644 index 813bbf8..0000000 Binary files a/technic/technic/textures/technic_mv_centrifuge_top.png and /dev/null differ diff --git a/technic/technic/textures/technic_mv_compressor_back.png b/technic/technic/textures/technic_mv_compressor_back.png deleted file mode 100644 index 11286e3..0000000 Binary files a/technic/technic/textures/technic_mv_compressor_back.png and /dev/null differ diff --git a/technic/technic/textures/technic_mv_compressor_bottom.png b/technic/technic/textures/technic_mv_compressor_bottom.png deleted file mode 100644 index 886f27e..0000000 Binary files a/technic/technic/textures/technic_mv_compressor_bottom.png and /dev/null differ diff --git a/technic/technic/textures/technic_mv_compressor_front.png b/technic/technic/textures/technic_mv_compressor_front.png deleted file mode 100644 index 007d6de..0000000 Binary files a/technic/technic/textures/technic_mv_compressor_front.png and /dev/null differ diff --git a/technic/technic/textures/technic_mv_compressor_front_active.png b/technic/technic/textures/technic_mv_compressor_front_active.png deleted file mode 100644 index b3d27c0..0000000 Binary files a/technic/technic/textures/technic_mv_compressor_front_active.png and /dev/null differ diff --git a/technic/technic/textures/technic_mv_compressor_side.png b/technic/technic/textures/technic_mv_compressor_side.png deleted file mode 100644 index 87acda6..0000000 Binary files a/technic/technic/textures/technic_mv_compressor_side.png and /dev/null differ diff --git a/technic/technic/textures/technic_mv_compressor_top.png b/technic/technic/textures/technic_mv_compressor_top.png deleted file mode 100644 index 786b859..0000000 Binary files a/technic/technic/textures/technic_mv_compressor_top.png and /dev/null differ diff --git a/technic/technic/textures/technic_mv_down_converter_bottom.png b/technic/technic/textures/technic_mv_down_converter_bottom.png deleted file mode 100644 index a610660..0000000 Binary files a/technic/technic/textures/technic_mv_down_converter_bottom.png and /dev/null differ diff --git a/technic/technic/textures/technic_mv_down_converter_side.png b/technic/technic/textures/technic_mv_down_converter_side.png deleted file mode 100644 index 6492d5c..0000000 Binary files a/technic/technic/textures/technic_mv_down_converter_side.png and /dev/null differ diff --git a/technic/technic/textures/technic_mv_down_converter_top.png b/technic/technic/textures/technic_mv_down_converter_top.png deleted file mode 100644 index a610660..0000000 Binary files a/technic/technic/textures/technic_mv_down_converter_top.png and /dev/null differ diff --git a/technic/technic/textures/technic_mv_electric_furnace_bottom.png b/technic/technic/textures/technic_mv_electric_furnace_bottom.png deleted file mode 100644 index e2e445e..0000000 Binary files a/technic/technic/textures/technic_mv_electric_furnace_bottom.png and /dev/null differ diff --git a/technic/technic/textures/technic_mv_electric_furnace_front.png b/technic/technic/textures/technic_mv_electric_furnace_front.png deleted file mode 100644 index 81c33cf..0000000 Binary files a/technic/technic/textures/technic_mv_electric_furnace_front.png and /dev/null differ diff --git a/technic/technic/textures/technic_mv_electric_furnace_front_active.png b/technic/technic/textures/technic_mv_electric_furnace_front_active.png deleted file mode 100644 index 2523f0e..0000000 Binary files a/technic/technic/textures/technic_mv_electric_furnace_front_active.png and /dev/null differ diff --git a/technic/technic/textures/technic_mv_electric_furnace_side.png b/technic/technic/textures/technic_mv_electric_furnace_side.png deleted file mode 100644 index cd22a73..0000000 Binary files a/technic/technic/textures/technic_mv_electric_furnace_side.png and /dev/null differ diff --git a/technic/technic/textures/technic_mv_electric_furnace_side_tube.png b/technic/technic/textures/technic_mv_electric_furnace_side_tube.png deleted file mode 100644 index bfeba18..0000000 Binary files a/technic/technic/textures/technic_mv_electric_furnace_side_tube.png and /dev/null differ diff --git a/technic/technic/textures/technic_mv_electric_furnace_top.png b/technic/technic/textures/technic_mv_electric_furnace_top.png deleted file mode 100644 index 635b6b7..0000000 Binary files a/technic/technic/textures/technic_mv_electric_furnace_top.png and /dev/null differ diff --git a/technic/technic/textures/technic_mv_extractor_bottom.png b/technic/technic/textures/technic_mv_extractor_bottom.png deleted file mode 100644 index 70f34ee..0000000 Binary files a/technic/technic/textures/technic_mv_extractor_bottom.png and /dev/null differ diff --git a/technic/technic/textures/technic_mv_extractor_front.png b/technic/technic/textures/technic_mv_extractor_front.png deleted file mode 100644 index 18648c2..0000000 Binary files a/technic/technic/textures/technic_mv_extractor_front.png and /dev/null differ diff --git a/technic/technic/textures/technic_mv_extractor_front_active.png b/technic/technic/textures/technic_mv_extractor_front_active.png deleted file mode 100644 index ee86ade..0000000 Binary files a/technic/technic/textures/technic_mv_extractor_front_active.png and /dev/null differ diff --git a/technic/technic/textures/technic_mv_extractor_side.png b/technic/technic/textures/technic_mv_extractor_side.png deleted file mode 100644 index cbe3673..0000000 Binary files a/technic/technic/textures/technic_mv_extractor_side.png and /dev/null differ diff --git a/technic/technic/textures/technic_mv_extractor_top.png b/technic/technic/textures/technic_mv_extractor_top.png deleted file mode 100644 index 2259d64..0000000 Binary files a/technic/technic/textures/technic_mv_extractor_top.png and /dev/null differ diff --git a/technic/technic/textures/technic_mv_generator_front.png b/technic/technic/textures/technic_mv_generator_front.png deleted file mode 100644 index 570e0c5..0000000 Binary files a/technic/technic/textures/technic_mv_generator_front.png and /dev/null differ diff --git a/technic/technic/textures/technic_mv_generator_front_active.png b/technic/technic/textures/technic_mv_generator_front_active.png deleted file mode 100644 index 3006a17..0000000 Binary files a/technic/technic/textures/technic_mv_generator_front_active.png and /dev/null differ diff --git a/technic/technic/textures/technic_mv_generator_side.png b/technic/technic/textures/technic_mv_generator_side.png deleted file mode 100644 index 21c0d41..0000000 Binary files a/technic/technic/textures/technic_mv_generator_side.png and /dev/null differ diff --git a/technic/technic/textures/technic_mv_generator_top.png b/technic/technic/textures/technic_mv_generator_top.png deleted file mode 100644 index 7afa5a1..0000000 Binary files a/technic/technic/textures/technic_mv_generator_top.png and /dev/null differ diff --git a/technic/technic/textures/technic_mv_grinder_bottom.png b/technic/technic/textures/technic_mv_grinder_bottom.png deleted file mode 100644 index 70f34ee..0000000 Binary files a/technic/technic/textures/technic_mv_grinder_bottom.png and /dev/null differ diff --git a/technic/technic/textures/technic_mv_grinder_front.png b/technic/technic/textures/technic_mv_grinder_front.png deleted file mode 100644 index 18648c2..0000000 Binary files a/technic/technic/textures/technic_mv_grinder_front.png and /dev/null differ diff --git a/technic/technic/textures/technic_mv_grinder_front_active.png b/technic/technic/textures/technic_mv_grinder_front_active.png deleted file mode 100644 index ee86ade..0000000 Binary files a/technic/technic/textures/technic_mv_grinder_front_active.png and /dev/null differ diff --git a/technic/technic/textures/technic_mv_grinder_side.png b/technic/technic/textures/technic_mv_grinder_side.png deleted file mode 100644 index cbe3673..0000000 Binary files a/technic/technic/textures/technic_mv_grinder_side.png and /dev/null differ diff --git a/technic/technic/textures/technic_mv_grinder_side_tube.png b/technic/technic/textures/technic_mv_grinder_side_tube.png deleted file mode 100644 index 196b7c1..0000000 Binary files a/technic/technic/textures/technic_mv_grinder_side_tube.png and /dev/null differ diff --git a/technic/technic/textures/technic_mv_grinder_top.png b/technic/technic/textures/technic_mv_grinder_top.png deleted file mode 100644 index 2259d64..0000000 Binary files a/technic/technic/textures/technic_mv_grinder_top.png and /dev/null differ diff --git a/technic/technic/textures/technic_mv_solar_array_bottom.png b/technic/technic/textures/technic_mv_solar_array_bottom.png deleted file mode 100644 index 596e79a..0000000 Binary files a/technic/technic/textures/technic_mv_solar_array_bottom.png and /dev/null differ diff --git a/technic/technic/textures/technic_mv_solar_array_side.png b/technic/technic/textures/technic_mv_solar_array_side.png deleted file mode 100644 index 917b9ed..0000000 Binary files a/technic/technic/textures/technic_mv_solar_array_side.png and /dev/null differ diff --git a/technic/technic/textures/technic_mv_solar_array_top.png b/technic/technic/textures/technic_mv_solar_array_top.png deleted file mode 100644 index cdb7cf7..0000000 Binary files a/technic/technic/textures/technic_mv_solar_array_top.png and /dev/null differ diff --git a/technic/technic/textures/technic_mv_transformer.png b/technic/technic/textures/technic_mv_transformer.png deleted file mode 100644 index 7c4688e..0000000 Binary files a/technic/technic/textures/technic_mv_transformer.png and /dev/null differ diff --git a/technic/technic/textures/technic_nodebreaker_back.png b/technic/technic/textures/technic_nodebreaker_back.png deleted file mode 100644 index 0af7422..0000000 Binary files a/technic/technic/textures/technic_nodebreaker_back.png and /dev/null differ diff --git a/technic/technic/textures/technic_nodebreaker_bottom.png b/technic/technic/textures/technic_nodebreaker_bottom.png deleted file mode 100644 index ff1a2c6..0000000 Binary files a/technic/technic/textures/technic_nodebreaker_bottom.png and /dev/null differ diff --git a/technic/technic/textures/technic_nodebreaker_bottom_off.png b/technic/technic/textures/technic_nodebreaker_bottom_off.png deleted file mode 100644 index 0f456eb..0000000 Binary files a/technic/technic/textures/technic_nodebreaker_bottom_off.png and /dev/null differ diff --git a/technic/technic/textures/technic_nodebreaker_bottom_on.png b/technic/technic/textures/technic_nodebreaker_bottom_on.png deleted file mode 100644 index 6c4811a..0000000 Binary files a/technic/technic/textures/technic_nodebreaker_bottom_on.png and /dev/null differ diff --git a/technic/technic/textures/technic_nodebreaker_front_off.png b/technic/technic/textures/technic_nodebreaker_front_off.png deleted file mode 100644 index 488fd0a..0000000 Binary files a/technic/technic/textures/technic_nodebreaker_front_off.png and /dev/null differ diff --git a/technic/technic/textures/technic_nodebreaker_front_on.png b/technic/technic/textures/technic_nodebreaker_front_on.png deleted file mode 100644 index 4904e8b..0000000 Binary files a/technic/technic/textures/technic_nodebreaker_front_on.png and /dev/null differ diff --git a/technic/technic/textures/technic_nodebreaker_side.png b/technic/technic/textures/technic_nodebreaker_side.png deleted file mode 100644 index aefd7c8..0000000 Binary files a/technic/technic/textures/technic_nodebreaker_side.png and /dev/null differ diff --git a/technic/technic/textures/technic_nodebreaker_side1.png b/technic/technic/textures/technic_nodebreaker_side1.png deleted file mode 100644 index 8cb8634..0000000 Binary files a/technic/technic/textures/technic_nodebreaker_side1.png and /dev/null differ diff --git a/technic/technic/textures/technic_nodebreaker_side1_off.png b/technic/technic/textures/technic_nodebreaker_side1_off.png deleted file mode 100644 index 857face..0000000 Binary files a/technic/technic/textures/technic_nodebreaker_side1_off.png and /dev/null differ diff --git a/technic/technic/textures/technic_nodebreaker_side1_on.png b/technic/technic/textures/technic_nodebreaker_side1_on.png deleted file mode 100644 index c756f09..0000000 Binary files a/technic/technic/textures/technic_nodebreaker_side1_on.png and /dev/null differ diff --git a/technic/technic/textures/technic_nodebreaker_side2.png b/technic/technic/textures/technic_nodebreaker_side2.png deleted file mode 100644 index c2855d0..0000000 Binary files a/technic/technic/textures/technic_nodebreaker_side2.png and /dev/null differ diff --git a/technic/technic/textures/technic_nodebreaker_side2_off.png b/technic/technic/textures/technic_nodebreaker_side2_off.png deleted file mode 100644 index 4c62f98..0000000 Binary files a/technic/technic/textures/technic_nodebreaker_side2_off.png and /dev/null differ diff --git a/technic/technic/textures/technic_nodebreaker_side2_on.png b/technic/technic/textures/technic_nodebreaker_side2_on.png deleted file mode 100644 index b9e4823..0000000 Binary files a/technic/technic/textures/technic_nodebreaker_side2_on.png and /dev/null differ diff --git a/technic/technic/textures/technic_nodebreaker_top.png b/technic/technic/textures/technic_nodebreaker_top.png deleted file mode 100644 index 941d333..0000000 Binary files a/technic/technic/textures/technic_nodebreaker_top.png and /dev/null differ diff --git a/technic/technic/textures/technic_nodebreaker_top_off.png b/technic/technic/textures/technic_nodebreaker_top_off.png deleted file mode 100644 index 9139afe..0000000 Binary files a/technic/technic/textures/technic_nodebreaker_top_off.png and /dev/null differ diff --git a/technic/technic/textures/technic_nodebreaker_top_on.png b/technic/technic/textures/technic_nodebreaker_top_on.png deleted file mode 100644 index 4b0a661..0000000 Binary files a/technic/technic/textures/technic_nodebreaker_top_on.png and /dev/null differ diff --git a/technic/technic/textures/technic_power_meter.png b/technic/technic/textures/technic_power_meter.png deleted file mode 100644 index f1e5120..0000000 Binary files a/technic/technic/textures/technic_power_meter.png and /dev/null differ diff --git a/technic/technic/textures/technic_power_meter0.png b/technic/technic/textures/technic_power_meter0.png deleted file mode 100644 index 1b1e662..0000000 Binary files a/technic/technic/textures/technic_power_meter0.png and /dev/null differ diff --git a/technic/technic/textures/technic_power_meter1.png b/technic/technic/textures/technic_power_meter1.png deleted file mode 100644 index eb6be3b..0000000 Binary files a/technic/technic/textures/technic_power_meter1.png and /dev/null differ diff --git a/technic/technic/textures/technic_power_meter2.png b/technic/technic/textures/technic_power_meter2.png deleted file mode 100644 index e3a3772..0000000 Binary files a/technic/technic/textures/technic_power_meter2.png and /dev/null differ diff --git a/technic/technic/textures/technic_power_meter3.png b/technic/technic/textures/technic_power_meter3.png deleted file mode 100644 index 6333035..0000000 Binary files a/technic/technic/textures/technic_power_meter3.png and /dev/null differ diff --git a/technic/technic/textures/technic_power_meter4.png b/technic/technic/textures/technic_power_meter4.png deleted file mode 100644 index 6346dbd..0000000 Binary files a/technic/technic/textures/technic_power_meter4.png and /dev/null differ diff --git a/technic/technic/textures/technic_power_meter5.png b/technic/technic/textures/technic_power_meter5.png deleted file mode 100644 index 80f79c6..0000000 Binary files a/technic/technic/textures/technic_power_meter5.png and /dev/null differ diff --git a/technic/technic/textures/technic_power_meter6.png b/technic/technic/textures/technic_power_meter6.png deleted file mode 100644 index fe91bf5..0000000 Binary files a/technic/technic/textures/technic_power_meter6.png and /dev/null differ diff --git a/technic/technic/textures/technic_power_meter7.png b/technic/technic/textures/technic_power_meter7.png deleted file mode 100644 index e02dd6d..0000000 Binary files a/technic/technic/textures/technic_power_meter7.png and /dev/null differ diff --git a/technic/technic/textures/technic_power_meter8.png b/technic/technic/textures/technic_power_meter8.png deleted file mode 100644 index a12064c..0000000 Binary files a/technic/technic/textures/technic_power_meter8.png and /dev/null differ diff --git a/technic/technic/textures/technic_power_meter_bg.png b/technic/technic/textures/technic_power_meter_bg.png deleted file mode 100644 index 9667cda..0000000 Binary files a/technic/technic/textures/technic_power_meter_bg.png and /dev/null differ diff --git a/technic/technic/textures/technic_power_meter_fg.png b/technic/technic/textures/technic_power_meter_fg.png deleted file mode 100644 index 7f2dde8..0000000 Binary files a/technic/technic/textures/technic_power_meter_fg.png and /dev/null differ diff --git a/technic/technic/textures/technic_prospector.png b/technic/technic/textures/technic_prospector.png deleted file mode 100644 index 2f9ee6c..0000000 Binary files a/technic/technic/textures/technic_prospector.png and /dev/null differ diff --git a/technic/technic/textures/technic_raw_latex.png b/technic/technic/textures/technic_raw_latex.png deleted file mode 100644 index 49bb11b..0000000 Binary files a/technic/technic/textures/technic_raw_latex.png and /dev/null differ diff --git a/technic/technic/textures/technic_rubber.png b/technic/technic/textures/technic_rubber.png deleted file mode 100644 index 9ed4a9d..0000000 Binary files a/technic/technic/textures/technic_rubber.png and /dev/null differ diff --git a/technic/technic/textures/technic_rubber_leaves.png b/technic/technic/textures/technic_rubber_leaves.png deleted file mode 100644 index ae013e0..0000000 Binary files a/technic/technic/textures/technic_rubber_leaves.png and /dev/null differ diff --git a/technic/technic/textures/technic_rubber_sapling.png b/technic/technic/textures/technic_rubber_sapling.png deleted file mode 100644 index e5c9f5d..0000000 Binary files a/technic/technic/textures/technic_rubber_sapling.png and /dev/null differ diff --git a/technic/technic/textures/technic_rubber_tree_empty.png b/technic/technic/textures/technic_rubber_tree_empty.png deleted file mode 100644 index 1792951..0000000 Binary files a/technic/technic/textures/technic_rubber_tree_empty.png and /dev/null differ diff --git a/technic/technic/textures/technic_rubber_tree_full.png b/technic/technic/textures/technic_rubber_tree_full.png deleted file mode 100644 index 08067ef..0000000 Binary files a/technic/technic/textures/technic_rubber_tree_full.png and /dev/null differ diff --git a/technic/technic/textures/technic_rubber_tree_grindings.png b/technic/technic/textures/technic_rubber_tree_grindings.png deleted file mode 100644 index 9f2f5d6..0000000 Binary files a/technic/technic/textures/technic_rubber_tree_grindings.png and /dev/null differ diff --git a/technic/technic/textures/technic_sawdust.png b/technic/technic/textures/technic_sawdust.png deleted file mode 100644 index 976e7f9..0000000 Binary files a/technic/technic/textures/technic_sawdust.png and /dev/null differ diff --git a/technic/technic/textures/technic_screwdriver.png b/technic/technic/textures/technic_screwdriver.png deleted file mode 100644 index bd2da22..0000000 Binary files a/technic/technic/textures/technic_screwdriver.png and /dev/null differ diff --git a/technic/technic/textures/technic_silicon_wafer.png b/technic/technic/textures/technic_silicon_wafer.png deleted file mode 100644 index 78aef20..0000000 Binary files a/technic/technic/textures/technic_silicon_wafer.png and /dev/null differ diff --git a/technic/technic/textures/technic_silver_dust.png b/technic/technic/textures/technic_silver_dust.png deleted file mode 100644 index 19a5754..0000000 Binary files a/technic/technic/textures/technic_silver_dust.png and /dev/null differ diff --git a/technic/technic/textures/technic_solar_panel_bottom.png b/technic/technic/textures/technic_solar_panel_bottom.png deleted file mode 100644 index 9e888e3..0000000 Binary files a/technic/technic/textures/technic_solar_panel_bottom.png and /dev/null differ diff --git a/technic/technic/textures/technic_solar_panel_side.png b/technic/technic/textures/technic_solar_panel_side.png deleted file mode 100644 index b22447e..0000000 Binary files a/technic/technic/textures/technic_solar_panel_side.png and /dev/null differ diff --git a/technic/technic/textures/technic_solar_panel_top.png b/technic/technic/textures/technic_solar_panel_top.png deleted file mode 100644 index 492764b..0000000 Binary files a/technic/technic/textures/technic_solar_panel_top.png and /dev/null differ diff --git a/technic/technic/textures/technic_sonic_screwdriver.png b/technic/technic/textures/technic_sonic_screwdriver.png deleted file mode 100644 index 9b26b81..0000000 Binary files a/technic/technic/textures/technic_sonic_screwdriver.png and /dev/null differ diff --git a/technic/technic/textures/technic_stainless_steel_dust.png b/technic/technic/textures/technic_stainless_steel_dust.png deleted file mode 100644 index 6398be8..0000000 Binary files a/technic/technic/textures/technic_stainless_steel_dust.png and /dev/null differ diff --git a/technic/technic/textures/technic_stainless_steel_ingot.png b/technic/technic/textures/technic_stainless_steel_ingot.png deleted file mode 100644 index 7ec5e00..0000000 Binary files a/technic/technic/textures/technic_stainless_steel_ingot.png and /dev/null differ diff --git a/technic/technic/textures/technic_supply_converter_bottom.png b/technic/technic/textures/technic_supply_converter_bottom.png deleted file mode 100644 index a610660..0000000 Binary files a/technic/technic/textures/technic_supply_converter_bottom.png and /dev/null differ diff --git a/technic/technic/textures/technic_supply_converter_side.png b/technic/technic/textures/technic_supply_converter_side.png deleted file mode 100644 index 6492d5c..0000000 Binary files a/technic/technic/textures/technic_supply_converter_side.png and /dev/null differ diff --git a/technic/technic/textures/technic_supply_converter_top.png b/technic/technic/textures/technic_supply_converter_top.png deleted file mode 100644 index a610660..0000000 Binary files a/technic/technic/textures/technic_supply_converter_top.png and /dev/null differ diff --git a/technic/technic/textures/technic_talinite_dust.png b/technic/technic/textures/technic_talinite_dust.png deleted file mode 100644 index f228206..0000000 Binary files a/technic/technic/textures/technic_talinite_dust.png and /dev/null differ diff --git a/technic/technic/textures/technic_tin_dust.png b/technic/technic/textures/technic_tin_dust.png deleted file mode 100644 index 98e6f3f..0000000 Binary files a/technic/technic/textures/technic_tin_dust.png and /dev/null differ diff --git a/technic/technic/textures/technic_tool_mode1.png b/technic/technic/textures/technic_tool_mode1.png deleted file mode 100644 index 571dbe5..0000000 Binary files a/technic/technic/textures/technic_tool_mode1.png and /dev/null differ diff --git a/technic/technic/textures/technic_tool_mode2.png b/technic/technic/textures/technic_tool_mode2.png deleted file mode 100644 index 891aa82..0000000 Binary files a/technic/technic/textures/technic_tool_mode2.png and /dev/null differ diff --git a/technic/technic/textures/technic_tool_mode3.png b/technic/technic/textures/technic_tool_mode3.png deleted file mode 100644 index cd099a7..0000000 Binary files a/technic/technic/textures/technic_tool_mode3.png and /dev/null differ diff --git a/technic/technic/textures/technic_tool_mode4.png b/technic/technic/textures/technic_tool_mode4.png deleted file mode 100644 index 62f50d7..0000000 Binary files a/technic/technic/textures/technic_tool_mode4.png and /dev/null differ diff --git a/technic/technic/textures/technic_tool_mode5.png b/technic/technic/textures/technic_tool_mode5.png deleted file mode 100644 index c918314..0000000 Binary files a/technic/technic/textures/technic_tool_mode5.png and /dev/null differ diff --git a/technic/technic/textures/technic_tool_mode6.png b/technic/technic/textures/technic_tool_mode6.png deleted file mode 100644 index 9268f47..0000000 Binary files a/technic/technic/textures/technic_tool_mode6.png and /dev/null differ diff --git a/technic/technic/textures/technic_tool_mode7.png b/technic/technic/textures/technic_tool_mode7.png deleted file mode 100644 index 5ba572a..0000000 Binary files a/technic/technic/textures/technic_tool_mode7.png and /dev/null differ diff --git a/technic/technic/textures/technic_tool_mode8.png b/technic/technic/textures/technic_tool_mode8.png deleted file mode 100644 index b2655b6..0000000 Binary files a/technic/technic/textures/technic_tool_mode8.png and /dev/null differ diff --git a/technic/technic/textures/technic_tool_mode9.png b/technic/technic/textures/technic_tool_mode9.png deleted file mode 100644 index 2077afb..0000000 Binary files a/technic/technic/textures/technic_tool_mode9.png and /dev/null differ diff --git a/technic/technic/textures/technic_tree_tap.png b/technic/technic/textures/technic_tree_tap.png deleted file mode 100644 index 542f30f..0000000 Binary files a/technic/technic/textures/technic_tree_tap.png and /dev/null differ diff --git a/technic/technic/textures/technic_uranium_dust.png b/technic/technic/textures/technic_uranium_dust.png deleted file mode 100644 index 9c211dc..0000000 Binary files a/technic/technic/textures/technic_uranium_dust.png and /dev/null differ diff --git a/technic/technic/textures/technic_uranium_fuel.png b/technic/technic/textures/technic_uranium_fuel.png deleted file mode 100644 index 0a32c62..0000000 Binary files a/technic/technic/textures/technic_uranium_fuel.png and /dev/null differ diff --git a/technic/technic/textures/technic_vacuum.png b/technic/technic/textures/technic_vacuum.png deleted file mode 100644 index 1ef5815..0000000 Binary files a/technic/technic/textures/technic_vacuum.png and /dev/null differ diff --git a/technic/technic/textures/technic_water_can.png b/technic/technic/textures/technic_water_can.png deleted file mode 100644 index eec75db..0000000 Binary files a/technic/technic/textures/technic_water_can.png and /dev/null differ diff --git a/technic/technic/textures/technic_water_mill_side.png b/technic/technic/textures/technic_water_mill_side.png deleted file mode 100644 index f4bdb16..0000000 Binary files a/technic/technic/textures/technic_water_mill_side.png and /dev/null differ diff --git a/technic/technic/textures/technic_water_mill_top.png b/technic/technic/textures/technic_water_mill_top.png deleted file mode 100644 index 601ff15..0000000 Binary files a/technic/technic/textures/technic_water_mill_top.png and /dev/null differ diff --git a/technic/technic/textures/technic_water_mill_top_active.png b/technic/technic/textures/technic_water_mill_top_active.png deleted file mode 100644 index f02bec6..0000000 Binary files a/technic/technic/textures/technic_water_mill_top_active.png and /dev/null differ diff --git a/technic/technic/textures/technic_workshop_bottom.png b/technic/technic/textures/technic_workshop_bottom.png deleted file mode 100644 index bd8fd55..0000000 Binary files a/technic/technic/textures/technic_workshop_bottom.png and /dev/null differ diff --git a/technic/technic/textures/technic_workshop_side.png b/technic/technic/textures/technic_workshop_side.png deleted file mode 100644 index 9e3e7a7..0000000 Binary files a/technic/technic/textures/technic_workshop_side.png and /dev/null differ diff --git a/technic/technic/textures/technic_workshop_top.png b/technic/technic/textures/technic_workshop_top.png deleted file mode 100644 index feae141..0000000 Binary files a/technic/technic/textures/technic_workshop_top.png and /dev/null differ diff --git a/technic/technic/textures/technic_wrought_iron_dust.png b/technic/technic/textures/technic_wrought_iron_dust.png deleted file mode 100644 index ad23c62..0000000 Binary files a/technic/technic/textures/technic_wrought_iron_dust.png and /dev/null differ diff --git a/technic/technic/textures/technic_zinc_dust.png b/technic/technic/textures/technic_zinc_dust.png deleted file mode 100644 index bbd826c..0000000 Binary files a/technic/technic/textures/technic_zinc_dust.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_akalin_dust.png b/technic/technic/textures/technicx32/technic_akalin_dust.png deleted file mode 100644 index 90f3bac..0000000 Binary files a/technic/technic/textures/technicx32/technic_akalin_dust.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_alatro_dust.png b/technic/technic/textures/technicx32/technic_alatro_dust.png deleted file mode 100644 index 1199614..0000000 Binary files a/technic/technic/textures/technicx32/technic_alatro_dust.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_alloy_furnace_front.png b/technic/technic/textures/technicx32/technic_alloy_furnace_front.png deleted file mode 100644 index 9123fb6..0000000 Binary files a/technic/technic/textures/technicx32/technic_alloy_furnace_front.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_alloy_furnace_front_active.png b/technic/technic/textures/technicx32/technic_alloy_furnace_front_active.png deleted file mode 100644 index 4dda2e6..0000000 Binary files a/technic/technic/textures/technicx32/technic_alloy_furnace_front_active.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_alloy_furnace_side.png b/technic/technic/textures/technicx32/technic_alloy_furnace_side.png deleted file mode 100644 index b5bd428..0000000 Binary files a/technic/technic/textures/technicx32/technic_alloy_furnace_side.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_alloy_furnace_top.png b/technic/technic/textures/technicx32/technic_alloy_furnace_top.png deleted file mode 100644 index 67ef4b7..0000000 Binary files a/technic/technic/textures/technicx32/technic_alloy_furnace_top.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_arol_dust.png b/technic/technic/textures/technicx32/technic_arol_dust.png deleted file mode 100644 index f5a392f..0000000 Binary files a/technic/technic/textures/technicx32/technic_arol_dust.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_battery.png b/technic/technic/textures/technicx32/technic_battery.png deleted file mode 100644 index ee83b74..0000000 Binary files a/technic/technic/textures/technicx32/technic_battery.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_battery_box_bottom.png b/technic/technic/textures/technicx32/technic_battery_box_bottom.png deleted file mode 100644 index 03c7ccc..0000000 Binary files a/technic/technic/textures/technicx32/technic_battery_box_bottom.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_battery_box_side0.png b/technic/technic/textures/technicx32/technic_battery_box_side0.png deleted file mode 100644 index 2662ac0..0000000 Binary files a/technic/technic/textures/technicx32/technic_battery_box_side0.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_battery_box_top.png b/technic/technic/textures/technicx32/technic_battery_box_top.png deleted file mode 100644 index 4953a32..0000000 Binary files a/technic/technic/textures/technicx32/technic_battery_box_top.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_battery_reload.png b/technic/technic/textures/technicx32/technic_battery_reload.png deleted file mode 100644 index 164b4ac..0000000 Binary files a/technic/technic/textures/technicx32/technic_battery_reload.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_brass_dust.png b/technic/technic/textures/technicx32/technic_brass_dust.png deleted file mode 100644 index f86167a..0000000 Binary files a/technic/technic/textures/technicx32/technic_brass_dust.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_bronze_dust.png b/technic/technic/textures/technicx32/technic_bronze_dust.png deleted file mode 100644 index 0a2401e..0000000 Binary files a/technic/technic/textures/technicx32/technic_bronze_dust.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_carbon_steel_dust.png b/technic/technic/textures/technicx32/technic_carbon_steel_dust.png deleted file mode 100644 index 0bf350f..0000000 Binary files a/technic/technic/textures/technicx32/technic_carbon_steel_dust.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_cast_iron_dust.png b/technic/technic/textures/technicx32/technic_cast_iron_dust.png deleted file mode 100644 index f355094..0000000 Binary files a/technic/technic/textures/technicx32/technic_cast_iron_dust.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_chainsaw.png b/technic/technic/textures/technicx32/technic_chainsaw.png deleted file mode 100644 index b7ceee6..0000000 Binary files a/technic/technic/textures/technicx32/technic_chainsaw.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_chromium_dust.png b/technic/technic/textures/technicx32/technic_chromium_dust.png deleted file mode 100644 index a33358b..0000000 Binary files a/technic/technic/textures/technicx32/technic_chromium_dust.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_coal_alloy_furnace_bottom.png b/technic/technic/textures/technicx32/technic_coal_alloy_furnace_bottom.png deleted file mode 100644 index 7a5eed7..0000000 Binary files a/technic/technic/textures/technicx32/technic_coal_alloy_furnace_bottom.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_coal_alloy_furnace_front.png b/technic/technic/textures/technicx32/technic_coal_alloy_furnace_front.png deleted file mode 100644 index b00bef3..0000000 Binary files a/technic/technic/textures/technicx32/technic_coal_alloy_furnace_front.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_coal_alloy_furnace_front_active.png b/technic/technic/textures/technicx32/technic_coal_alloy_furnace_front_active.png deleted file mode 100644 index b41f619..0000000 Binary files a/technic/technic/textures/technicx32/technic_coal_alloy_furnace_front_active.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_coal_alloy_furnace_side.png b/technic/technic/textures/technicx32/technic_coal_alloy_furnace_side.png deleted file mode 100644 index 3db8daa..0000000 Binary files a/technic/technic/textures/technicx32/technic_coal_alloy_furnace_side.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_coal_alloy_furnace_top.png b/technic/technic/textures/technicx32/technic_coal_alloy_furnace_top.png deleted file mode 100644 index c648fe8..0000000 Binary files a/technic/technic/textures/technicx32/technic_coal_alloy_furnace_top.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_coal_dust.png b/technic/technic/textures/technicx32/technic_coal_dust.png deleted file mode 100644 index 0fe7db7..0000000 Binary files a/technic/technic/textures/technicx32/technic_coal_dust.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_constructor_back.png b/technic/technic/textures/technicx32/technic_constructor_back.png deleted file mode 100644 index 6baf788..0000000 Binary files a/technic/technic/textures/technicx32/technic_constructor_back.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_constructor_front_off.png b/technic/technic/textures/technicx32/technic_constructor_front_off.png deleted file mode 100644 index f878e55..0000000 Binary files a/technic/technic/textures/technicx32/technic_constructor_front_off.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_constructor_front_on.png b/technic/technic/textures/technicx32/technic_constructor_front_on.png deleted file mode 100644 index 89189d6..0000000 Binary files a/technic/technic/textures/technicx32/technic_constructor_front_on.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_constructor_mk1_bottom_off.png b/technic/technic/textures/technicx32/technic_constructor_mk1_bottom_off.png deleted file mode 100644 index 205dcc4..0000000 Binary files a/technic/technic/textures/technicx32/technic_constructor_mk1_bottom_off.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_constructor_mk1_bottom_on.png b/technic/technic/textures/technicx32/technic_constructor_mk1_bottom_on.png deleted file mode 100644 index 9896c52..0000000 Binary files a/technic/technic/textures/technicx32/technic_constructor_mk1_bottom_on.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_constructor_mk1_side1_off.png b/technic/technic/textures/technicx32/technic_constructor_mk1_side1_off.png deleted file mode 100644 index e8a01ff..0000000 Binary files a/technic/technic/textures/technicx32/technic_constructor_mk1_side1_off.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_constructor_mk1_side1_on.png b/technic/technic/textures/technicx32/technic_constructor_mk1_side1_on.png deleted file mode 100644 index c897942..0000000 Binary files a/technic/technic/textures/technicx32/technic_constructor_mk1_side1_on.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_constructor_mk1_side2_off.png b/technic/technic/textures/technicx32/technic_constructor_mk1_side2_off.png deleted file mode 100644 index 8da65f6..0000000 Binary files a/technic/technic/textures/technicx32/technic_constructor_mk1_side2_off.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_constructor_mk1_side2_on.png b/technic/technic/textures/technicx32/technic_constructor_mk1_side2_on.png deleted file mode 100644 index da8ed34..0000000 Binary files a/technic/technic/textures/technicx32/technic_constructor_mk1_side2_on.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_constructor_mk1_top_off.png b/technic/technic/textures/technicx32/technic_constructor_mk1_top_off.png deleted file mode 100644 index 7d8c7e0..0000000 Binary files a/technic/technic/textures/technicx32/technic_constructor_mk1_top_off.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_constructor_mk1_top_on.png b/technic/technic/textures/technicx32/technic_constructor_mk1_top_on.png deleted file mode 100644 index 439caf5..0000000 Binary files a/technic/technic/textures/technicx32/technic_constructor_mk1_top_on.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_constructor_mk2_bottom_off.png b/technic/technic/textures/technicx32/technic_constructor_mk2_bottom_off.png deleted file mode 100644 index 83c5b07..0000000 Binary files a/technic/technic/textures/technicx32/technic_constructor_mk2_bottom_off.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_constructor_mk2_bottom_on.png b/technic/technic/textures/technicx32/technic_constructor_mk2_bottom_on.png deleted file mode 100644 index 9ad76f4..0000000 Binary files a/technic/technic/textures/technicx32/technic_constructor_mk2_bottom_on.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_constructor_mk2_side1_off.png b/technic/technic/textures/technicx32/technic_constructor_mk2_side1_off.png deleted file mode 100644 index 584dfe3..0000000 Binary files a/technic/technic/textures/technicx32/technic_constructor_mk2_side1_off.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_constructor_mk2_side1_on.png b/technic/technic/textures/technicx32/technic_constructor_mk2_side1_on.png deleted file mode 100644 index fe02042..0000000 Binary files a/technic/technic/textures/technicx32/technic_constructor_mk2_side1_on.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_constructor_mk2_side2_off.png b/technic/technic/textures/technicx32/technic_constructor_mk2_side2_off.png deleted file mode 100644 index fd9ad74..0000000 Binary files a/technic/technic/textures/technicx32/technic_constructor_mk2_side2_off.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_constructor_mk2_side2_on.png b/technic/technic/textures/technicx32/technic_constructor_mk2_side2_on.png deleted file mode 100644 index f51411a..0000000 Binary files a/technic/technic/textures/technicx32/technic_constructor_mk2_side2_on.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_constructor_mk2_top_off.png b/technic/technic/textures/technicx32/technic_constructor_mk2_top_off.png deleted file mode 100644 index e3e3292..0000000 Binary files a/technic/technic/textures/technicx32/technic_constructor_mk2_top_off.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_constructor_mk2_top_on.png b/technic/technic/textures/technicx32/technic_constructor_mk2_top_on.png deleted file mode 100644 index 83043d4..0000000 Binary files a/technic/technic/textures/technicx32/technic_constructor_mk2_top_on.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_constructor_mk3_bottom_off.png b/technic/technic/textures/technicx32/technic_constructor_mk3_bottom_off.png deleted file mode 100644 index 5f46154..0000000 Binary files a/technic/technic/textures/technicx32/technic_constructor_mk3_bottom_off.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_constructor_mk3_bottom_on.png b/technic/technic/textures/technicx32/technic_constructor_mk3_bottom_on.png deleted file mode 100644 index f76f29b..0000000 Binary files a/technic/technic/textures/technicx32/technic_constructor_mk3_bottom_on.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_constructor_mk3_side1_off.png b/technic/technic/textures/technicx32/technic_constructor_mk3_side1_off.png deleted file mode 100644 index 0ea1fc0..0000000 Binary files a/technic/technic/textures/technicx32/technic_constructor_mk3_side1_off.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_constructor_mk3_side1_on.png b/technic/technic/textures/technicx32/technic_constructor_mk3_side1_on.png deleted file mode 100644 index ba86332..0000000 Binary files a/technic/technic/textures/technicx32/technic_constructor_mk3_side1_on.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_constructor_mk3_side2_off.png b/technic/technic/textures/technicx32/technic_constructor_mk3_side2_off.png deleted file mode 100644 index 8e8dce4..0000000 Binary files a/technic/technic/textures/technicx32/technic_constructor_mk3_side2_off.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_constructor_mk3_side2_on.png b/technic/technic/textures/technicx32/technic_constructor_mk3_side2_on.png deleted file mode 100644 index 12dff69..0000000 Binary files a/technic/technic/textures/technicx32/technic_constructor_mk3_side2_on.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_constructor_mk3_top_off.png b/technic/technic/textures/technicx32/technic_constructor_mk3_top_off.png deleted file mode 100644 index 705f255..0000000 Binary files a/technic/technic/textures/technicx32/technic_constructor_mk3_top_off.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_constructor_mk3_top_on.png b/technic/technic/textures/technicx32/technic_constructor_mk3_top_on.png deleted file mode 100644 index cef077e..0000000 Binary files a/technic/technic/textures/technicx32/technic_constructor_mk3_top_on.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_control_logic_unit.png b/technic/technic/textures/technicx32/technic_control_logic_unit.png deleted file mode 100644 index 6ed00eb..0000000 Binary files a/technic/technic/textures/technicx32/technic_control_logic_unit.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_copper_coil.png b/technic/technic/textures/technicx32/technic_copper_coil.png deleted file mode 100644 index db6db1a..0000000 Binary files a/technic/technic/textures/technicx32/technic_copper_coil.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_copper_dust.png b/technic/technic/textures/technicx32/technic_copper_dust.png deleted file mode 100644 index 68678ed..0000000 Binary files a/technic/technic/textures/technicx32/technic_copper_dust.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_deployer_back.png b/technic/technic/textures/technicx32/technic_deployer_back.png deleted file mode 100644 index 0bc8df9..0000000 Binary files a/technic/technic/textures/technicx32/technic_deployer_back.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_deployer_bottom.png b/technic/technic/textures/technicx32/technic_deployer_bottom.png deleted file mode 100644 index ff1a2c6..0000000 Binary files a/technic/technic/textures/technicx32/technic_deployer_bottom.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_deployer_front_off.png b/technic/technic/textures/technicx32/technic_deployer_front_off.png deleted file mode 100644 index d0f6f55..0000000 Binary files a/technic/technic/textures/technicx32/technic_deployer_front_off.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_deployer_front_on.png b/technic/technic/textures/technicx32/technic_deployer_front_on.png deleted file mode 100644 index 368ce32..0000000 Binary files a/technic/technic/textures/technicx32/technic_deployer_front_on.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_deployer_side.png b/technic/technic/textures/technicx32/technic_deployer_side.png deleted file mode 100644 index aefd7c8..0000000 Binary files a/technic/technic/textures/technicx32/technic_deployer_side.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_deployer_side1.png b/technic/technic/textures/technicx32/technic_deployer_side1.png deleted file mode 100644 index 8cb8634..0000000 Binary files a/technic/technic/textures/technicx32/technic_deployer_side1.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_deployer_side2.png b/technic/technic/textures/technicx32/technic_deployer_side2.png deleted file mode 100644 index c2855d0..0000000 Binary files a/technic/technic/textures/technicx32/technic_deployer_side2.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_deployer_top.png b/technic/technic/textures/technicx32/technic_deployer_top.png deleted file mode 100644 index 941d333..0000000 Binary files a/technic/technic/textures/technicx32/technic_deployer_top.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_diamond_block_blue.png b/technic/technic/textures/technicx32/technic_diamond_block_blue.png deleted file mode 100644 index d89bd6e..0000000 Binary files a/technic/technic/textures/technicx32/technic_diamond_block_blue.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_diamond_block_green.png b/technic/technic/textures/technicx32/technic_diamond_block_green.png deleted file mode 100644 index 996b254..0000000 Binary files a/technic/technic/textures/technicx32/technic_diamond_block_green.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_diamond_block_red.png b/technic/technic/textures/technicx32/technic_diamond_block_red.png deleted file mode 100644 index 52fd893..0000000 Binary files a/technic/technic/textures/technicx32/technic_diamond_block_red.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_diamond_drill_head.png b/technic/technic/textures/technicx32/technic_diamond_drill_head.png deleted file mode 100644 index e3d31e8..0000000 Binary files a/technic/technic/textures/technicx32/technic_diamond_drill_head.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_doped_silicon_wafer.png b/technic/technic/textures/technicx32/technic_doped_silicon_wafer.png deleted file mode 100644 index 6ff06a6..0000000 Binary files a/technic/technic/textures/technicx32/technic_doped_silicon_wafer.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_electric_furnace_bottom.png b/technic/technic/textures/technicx32/technic_electric_furnace_bottom.png deleted file mode 100644 index d16ac47..0000000 Binary files a/technic/technic/textures/technicx32/technic_electric_furnace_bottom.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_electric_furnace_front.png b/technic/technic/textures/technicx32/technic_electric_furnace_front.png deleted file mode 100644 index dfee663..0000000 Binary files a/technic/technic/textures/technicx32/technic_electric_furnace_front.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_electric_furnace_front_active.png b/technic/technic/textures/technicx32/technic_electric_furnace_front_active.png deleted file mode 100644 index 038eec4..0000000 Binary files a/technic/technic/textures/technicx32/technic_electric_furnace_front_active.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_electric_furnace_side.png b/technic/technic/textures/technicx32/technic_electric_furnace_side.png deleted file mode 100644 index cf345e7..0000000 Binary files a/technic/technic/textures/technicx32/technic_electric_furnace_side.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_electric_furnace_top.png b/technic/technic/textures/technicx32/technic_electric_furnace_top.png deleted file mode 100644 index d3309ec..0000000 Binary files a/technic/technic/textures/technicx32/technic_electric_furnace_top.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_fine_copper_wire.png b/technic/technic/textures/technicx32/technic_fine_copper_wire.png deleted file mode 100644 index 36e2ed6..0000000 Binary files a/technic/technic/textures/technicx32/technic_fine_copper_wire.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_fine_gold_wire.png b/technic/technic/textures/technicx32/technic_fine_gold_wire.png deleted file mode 100644 index be2a38a..0000000 Binary files a/technic/technic/textures/technicx32/technic_fine_gold_wire.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_fine_silver_wire.png b/technic/technic/textures/technicx32/technic_fine_silver_wire.png deleted file mode 100644 index d43cb6a..0000000 Binary files a/technic/technic/textures/technicx32/technic_fine_silver_wire.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_flashlight.png b/technic/technic/textures/technicx32/technic_flashlight.png deleted file mode 100644 index 01afdbb..0000000 Binary files a/technic/technic/textures/technicx32/technic_flashlight.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_generator_front.png b/technic/technic/textures/technicx32/technic_generator_front.png deleted file mode 100644 index 2d64844..0000000 Binary files a/technic/technic/textures/technicx32/technic_generator_front.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_generator_front_active.png b/technic/technic/textures/technicx32/technic_generator_front_active.png deleted file mode 100644 index 4e57ca0..0000000 Binary files a/technic/technic/textures/technicx32/technic_generator_front_active.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_generator_side.png b/technic/technic/textures/technicx32/technic_generator_side.png deleted file mode 100644 index 5cbcbef..0000000 Binary files a/technic/technic/textures/technicx32/technic_generator_side.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_generator_top.png b/technic/technic/textures/technicx32/technic_generator_top.png deleted file mode 100644 index e2f3db3..0000000 Binary files a/technic/technic/textures/technicx32/technic_generator_top.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_geothermal_side.png b/technic/technic/textures/technicx32/technic_geothermal_side.png deleted file mode 100644 index 90fb430..0000000 Binary files a/technic/technic/textures/technicx32/technic_geothermal_side.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_geothermal_top.png b/technic/technic/textures/technicx32/technic_geothermal_top.png deleted file mode 100644 index 601ff15..0000000 Binary files a/technic/technic/textures/technicx32/technic_geothermal_top.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_geothermal_top_active.png b/technic/technic/textures/technicx32/technic_geothermal_top_active.png deleted file mode 100644 index f02bec6..0000000 Binary files a/technic/technic/textures/technicx32/technic_geothermal_top_active.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_gold_dust.png b/technic/technic/textures/technicx32/technic_gold_dust.png deleted file mode 100644 index e545bb6..0000000 Binary files a/technic/technic/textures/technicx32/technic_gold_dust.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_grinder_front.png b/technic/technic/textures/technicx32/technic_grinder_front.png deleted file mode 100644 index a28dbc1..0000000 Binary files a/technic/technic/textures/technicx32/technic_grinder_front.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_grinder_side.png b/technic/technic/textures/technicx32/technic_grinder_side.png deleted file mode 100644 index af562f2..0000000 Binary files a/technic/technic/textures/technicx32/technic_grinder_side.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_grinder_top.png b/technic/technic/textures/technicx32/technic_grinder_top.png deleted file mode 100644 index b074e13..0000000 Binary files a/technic/technic/textures/technicx32/technic_grinder_top.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_hv_grinder_bottom.png b/technic/technic/textures/technicx32/technic_hv_grinder_bottom.png deleted file mode 100644 index d854193..0000000 Binary files a/technic/technic/textures/technicx32/technic_hv_grinder_bottom.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_hv_grinder_front.png b/technic/technic/textures/technicx32/technic_hv_grinder_front.png deleted file mode 100644 index f20cb22..0000000 Binary files a/technic/technic/textures/technicx32/technic_hv_grinder_front.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_hv_grinder_front_active.png b/technic/technic/textures/technicx32/technic_hv_grinder_front_active.png deleted file mode 100644 index d1fa468..0000000 Binary files a/technic/technic/textures/technicx32/technic_hv_grinder_front_active.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_hv_grinder_side.png b/technic/technic/textures/technicx32/technic_hv_grinder_side.png deleted file mode 100644 index 35cf031..0000000 Binary files a/technic/technic/textures/technicx32/technic_hv_grinder_side.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_hv_grinder_side_tube.png b/technic/technic/textures/technicx32/technic_hv_grinder_side_tube.png deleted file mode 100644 index 5b5b450..0000000 Binary files a/technic/technic/textures/technicx32/technic_hv_grinder_side_tube.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_hv_grinder_top.png b/technic/technic/textures/technicx32/technic_hv_grinder_top.png deleted file mode 100644 index 7869ea8..0000000 Binary files a/technic/technic/textures/technicx32/technic_hv_grinder_top.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_hv_nuclear_reactor_core.png b/technic/technic/textures/technicx32/technic_hv_nuclear_reactor_core.png deleted file mode 100644 index 3d380da..0000000 Binary files a/technic/technic/textures/technicx32/technic_hv_nuclear_reactor_core.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_hv_solar_array_bottom.png b/technic/technic/textures/technicx32/technic_hv_solar_array_bottom.png deleted file mode 100644 index 94c8222..0000000 Binary files a/technic/technic/textures/technicx32/technic_hv_solar_array_bottom.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_hv_solar_array_side.png b/technic/technic/textures/technicx32/technic_hv_solar_array_side.png deleted file mode 100644 index d39d3d8..0000000 Binary files a/technic/technic/textures/technicx32/technic_hv_solar_array_side.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_hv_solar_array_top.png b/technic/technic/textures/technicx32/technic_hv_solar_array_top.png deleted file mode 100644 index 3e1b9e0..0000000 Binary files a/technic/technic/textures/technicx32/technic_hv_solar_array_top.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_hv_transformer.png b/technic/technic/textures/technicx32/technic_hv_transformer.png deleted file mode 100644 index 7794644..0000000 Binary files a/technic/technic/textures/technicx32/technic_hv_transformer.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_injector_bottom.png b/technic/technic/textures/technicx32/technic_injector_bottom.png deleted file mode 100644 index 39916bd..0000000 Binary files a/technic/technic/textures/technicx32/technic_injector_bottom.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_injector_side.png b/technic/technic/textures/technicx32/technic_injector_side.png deleted file mode 100644 index a5419a1..0000000 Binary files a/technic/technic/textures/technicx32/technic_injector_side.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_injector_top.png b/technic/technic/textures/technicx32/technic_injector_top.png deleted file mode 100644 index 440649c..0000000 Binary files a/technic/technic/textures/technicx32/technic_injector_top.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_kalite_dust.png b/technic/technic/textures/technicx32/technic_kalite_dust.png deleted file mode 100644 index 595edb5..0000000 Binary files a/technic/technic/textures/technicx32/technic_kalite_dust.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_laser_beam.png b/technic/technic/textures/technicx32/technic_laser_beam.png deleted file mode 100644 index 4814a9b..0000000 Binary files a/technic/technic/textures/technicx32/technic_laser_beam.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_lava_can.png b/technic/technic/textures/technicx32/technic_lava_can.png deleted file mode 100644 index 80d15a6..0000000 Binary files a/technic/technic/textures/technicx32/technic_lava_can.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_light.png b/technic/technic/textures/technicx32/technic_light.png deleted file mode 100644 index 334cb07..0000000 Binary files a/technic/technic/textures/technicx32/technic_light.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_lv_grinder_bottom.png b/technic/technic/textures/technicx32/technic_lv_grinder_bottom.png deleted file mode 100644 index 816b969..0000000 Binary files a/technic/technic/textures/technicx32/technic_lv_grinder_bottom.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_lv_grinder_front.png b/technic/technic/textures/technicx32/technic_lv_grinder_front.png deleted file mode 100644 index 7451ca9..0000000 Binary files a/technic/technic/textures/technicx32/technic_lv_grinder_front.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_lv_grinder_front_active.png b/technic/technic/textures/technicx32/technic_lv_grinder_front_active.png deleted file mode 100644 index 8e17e4d..0000000 Binary files a/technic/technic/textures/technicx32/technic_lv_grinder_front_active.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_lv_grinder_side.png b/technic/technic/textures/technicx32/technic_lv_grinder_side.png deleted file mode 100644 index 908287b..0000000 Binary files a/technic/technic/textures/technicx32/technic_lv_grinder_side.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_lv_grinder_top.png b/technic/technic/textures/technicx32/technic_lv_grinder_top.png deleted file mode 100644 index 8520baf..0000000 Binary files a/technic/technic/textures/technicx32/technic_lv_grinder_top.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_lv_solar_array_bottom.png b/technic/technic/textures/technicx32/technic_lv_solar_array_bottom.png deleted file mode 100644 index 94c8222..0000000 Binary files a/technic/technic/textures/technicx32/technic_lv_solar_array_bottom.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_lv_solar_array_side.png b/technic/technic/textures/technicx32/technic_lv_solar_array_side.png deleted file mode 100644 index d39d3d8..0000000 Binary files a/technic/technic/textures/technicx32/technic_lv_solar_array_side.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_lv_solar_array_top.png b/technic/technic/textures/technicx32/technic_lv_solar_array_top.png deleted file mode 100644 index 3d8c7ab..0000000 Binary files a/technic/technic/textures/technicx32/technic_lv_solar_array_top.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_lv_transformer.png b/technic/technic/textures/technicx32/technic_lv_transformer.png deleted file mode 100644 index 99ac927..0000000 Binary files a/technic/technic/textures/technicx32/technic_lv_transformer.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_machine_bottom.png b/technic/technic/textures/technicx32/technic_machine_bottom.png deleted file mode 100644 index 943dae1..0000000 Binary files a/technic/technic/textures/technicx32/technic_machine_bottom.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_mining_drill.png b/technic/technic/textures/technicx32/technic_mining_drill.png deleted file mode 100644 index 171888d..0000000 Binary files a/technic/technic/textures/technicx32/technic_mining_drill.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_mining_laser_mk1.png b/technic/technic/textures/technicx32/technic_mining_laser_mk1.png deleted file mode 100644 index acde392..0000000 Binary files a/technic/technic/textures/technicx32/technic_mining_laser_mk1.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_mithril_dust.png b/technic/technic/textures/technicx32/technic_mithril_dust.png deleted file mode 100644 index 988e449..0000000 Binary files a/technic/technic/textures/technicx32/technic_mithril_dust.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_motor.png b/technic/technic/textures/technicx32/technic_motor.png deleted file mode 100644 index 77d4b91..0000000 Binary files a/technic/technic/textures/technicx32/technic_motor.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_music_player_bottom.png b/technic/technic/textures/technicx32/technic_music_player_bottom.png deleted file mode 100644 index bd8fd55..0000000 Binary files a/technic/technic/textures/technicx32/technic_music_player_bottom.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_music_player_side.png b/technic/technic/textures/technicx32/technic_music_player_side.png deleted file mode 100644 index 6c34fea..0000000 Binary files a/technic/technic/textures/technicx32/technic_music_player_side.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_music_player_top.png b/technic/technic/textures/technicx32/technic_music_player_top.png deleted file mode 100644 index 0d34563..0000000 Binary files a/technic/technic/textures/technicx32/technic_music_player_top.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_mv_alloy_furnace_bottom.png b/technic/technic/textures/technicx32/technic_mv_alloy_furnace_bottom.png deleted file mode 100644 index 3723bb1..0000000 Binary files a/technic/technic/textures/technicx32/technic_mv_alloy_furnace_bottom.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_mv_alloy_furnace_front.png b/technic/technic/textures/technicx32/technic_mv_alloy_furnace_front.png deleted file mode 100644 index a5dac82..0000000 Binary files a/technic/technic/textures/technicx32/technic_mv_alloy_furnace_front.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_mv_alloy_furnace_front_active.png b/technic/technic/textures/technicx32/technic_mv_alloy_furnace_front_active.png deleted file mode 100644 index f6e69a9..0000000 Binary files a/technic/technic/textures/technicx32/technic_mv_alloy_furnace_front_active.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_mv_alloy_furnace_side.png b/technic/technic/textures/technicx32/technic_mv_alloy_furnace_side.png deleted file mode 100644 index 0430479..0000000 Binary files a/technic/technic/textures/technicx32/technic_mv_alloy_furnace_side.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_mv_alloy_furnace_side_tube.png b/technic/technic/textures/technicx32/technic_mv_alloy_furnace_side_tube.png deleted file mode 100644 index 69f89e7..0000000 Binary files a/technic/technic/textures/technicx32/technic_mv_alloy_furnace_side_tube.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_mv_alloy_furnace_top.png b/technic/technic/textures/technicx32/technic_mv_alloy_furnace_top.png deleted file mode 100644 index f44e3c0..0000000 Binary files a/technic/technic/textures/technicx32/technic_mv_alloy_furnace_top.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_mv_battery_box_bottom.png b/technic/technic/textures/technicx32/technic_mv_battery_box_bottom.png deleted file mode 100644 index 2a9b292..0000000 Binary files a/technic/technic/textures/technicx32/technic_mv_battery_box_bottom.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_mv_battery_box_side0.png b/technic/technic/textures/technicx32/technic_mv_battery_box_side0.png deleted file mode 100644 index 39d8986..0000000 Binary files a/technic/technic/textures/technicx32/technic_mv_battery_box_side0.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_mv_battery_box_top.png b/technic/technic/textures/technicx32/technic_mv_battery_box_top.png deleted file mode 100644 index f7f1ea9..0000000 Binary files a/technic/technic/textures/technicx32/technic_mv_battery_box_top.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_mv_cable_wield.png b/technic/technic/textures/technicx32/technic_mv_cable_wield.png deleted file mode 100644 index aca9fd4..0000000 Binary files a/technic/technic/textures/technicx32/technic_mv_cable_wield.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_mv_electric_furnace_bottom.png b/technic/technic/textures/technicx32/technic_mv_electric_furnace_bottom.png deleted file mode 100644 index d16ac47..0000000 Binary files a/technic/technic/textures/technicx32/technic_mv_electric_furnace_bottom.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_mv_electric_furnace_front.png b/technic/technic/textures/technicx32/technic_mv_electric_furnace_front.png deleted file mode 100644 index 4dfac63..0000000 Binary files a/technic/technic/textures/technicx32/technic_mv_electric_furnace_front.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_mv_electric_furnace_front_active.png b/technic/technic/textures/technicx32/technic_mv_electric_furnace_front_active.png deleted file mode 100644 index e206cd2..0000000 Binary files a/technic/technic/textures/technicx32/technic_mv_electric_furnace_front_active.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_mv_electric_furnace_side.png b/technic/technic/textures/technicx32/technic_mv_electric_furnace_side.png deleted file mode 100644 index 4aa27b7..0000000 Binary files a/technic/technic/textures/technicx32/technic_mv_electric_furnace_side.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_mv_electric_furnace_side_tube.png b/technic/technic/textures/technicx32/technic_mv_electric_furnace_side_tube.png deleted file mode 100644 index bfeba18..0000000 Binary files a/technic/technic/textures/technicx32/technic_mv_electric_furnace_side_tube.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_mv_electric_furnace_top.png b/technic/technic/textures/technicx32/technic_mv_electric_furnace_top.png deleted file mode 100644 index 635b6b7..0000000 Binary files a/technic/technic/textures/technicx32/technic_mv_electric_furnace_top.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_mv_grinder_bottom.png b/technic/technic/textures/technicx32/technic_mv_grinder_bottom.png deleted file mode 100644 index f46cd72..0000000 Binary files a/technic/technic/textures/technicx32/technic_mv_grinder_bottom.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_mv_grinder_front.png b/technic/technic/textures/technicx32/technic_mv_grinder_front.png deleted file mode 100644 index 6445dfe..0000000 Binary files a/technic/technic/textures/technicx32/technic_mv_grinder_front.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_mv_grinder_front_active.png b/technic/technic/textures/technicx32/technic_mv_grinder_front_active.png deleted file mode 100644 index 428e1dc..0000000 Binary files a/technic/technic/textures/technicx32/technic_mv_grinder_front_active.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_mv_grinder_side.png b/technic/technic/textures/technicx32/technic_mv_grinder_side.png deleted file mode 100644 index c014f08..0000000 Binary files a/technic/technic/textures/technicx32/technic_mv_grinder_side.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_mv_grinder_side_tube.png b/technic/technic/textures/technicx32/technic_mv_grinder_side_tube.png deleted file mode 100644 index 69050e4..0000000 Binary files a/technic/technic/textures/technicx32/technic_mv_grinder_side_tube.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_mv_grinder_top.png b/technic/technic/textures/technicx32/technic_mv_grinder_top.png deleted file mode 100644 index e0320ef..0000000 Binary files a/technic/technic/textures/technicx32/technic_mv_grinder_top.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_mv_solar_array_bottom.png b/technic/technic/textures/technicx32/technic_mv_solar_array_bottom.png deleted file mode 100644 index 94c8222..0000000 Binary files a/technic/technic/textures/technicx32/technic_mv_solar_array_bottom.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_mv_solar_array_side.png b/technic/technic/textures/technicx32/technic_mv_solar_array_side.png deleted file mode 100644 index d39d3d8..0000000 Binary files a/technic/technic/textures/technicx32/technic_mv_solar_array_side.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_mv_solar_array_top.png b/technic/technic/textures/technicx32/technic_mv_solar_array_top.png deleted file mode 100644 index e4999d5..0000000 Binary files a/technic/technic/textures/technicx32/technic_mv_solar_array_top.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_mv_transformer.png b/technic/technic/textures/technicx32/technic_mv_transformer.png deleted file mode 100644 index 7c4688e..0000000 Binary files a/technic/technic/textures/technicx32/technic_mv_transformer.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_nodebreaker_back.png b/technic/technic/textures/technicx32/technic_nodebreaker_back.png deleted file mode 100644 index 43ba821..0000000 Binary files a/technic/technic/textures/technicx32/technic_nodebreaker_back.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_nodebreaker_bottom.png b/technic/technic/textures/technicx32/technic_nodebreaker_bottom.png deleted file mode 100644 index 99ff685..0000000 Binary files a/technic/technic/textures/technicx32/technic_nodebreaker_bottom.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_nodebreaker_bottom_off.png b/technic/technic/textures/technicx32/technic_nodebreaker_bottom_off.png deleted file mode 100644 index 47cd4e8..0000000 Binary files a/technic/technic/textures/technicx32/technic_nodebreaker_bottom_off.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_nodebreaker_bottom_on.png b/technic/technic/textures/technicx32/technic_nodebreaker_bottom_on.png deleted file mode 100644 index 994f787..0000000 Binary files a/technic/technic/textures/technicx32/technic_nodebreaker_bottom_on.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_nodebreaker_front_off.png b/technic/technic/textures/technicx32/technic_nodebreaker_front_off.png deleted file mode 100644 index 5ece916..0000000 Binary files a/technic/technic/textures/technicx32/technic_nodebreaker_front_off.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_nodebreaker_front_on.png b/technic/technic/textures/technicx32/technic_nodebreaker_front_on.png deleted file mode 100644 index a53de2a..0000000 Binary files a/technic/technic/textures/technicx32/technic_nodebreaker_front_on.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_nodebreaker_side.png b/technic/technic/textures/technicx32/technic_nodebreaker_side.png deleted file mode 100644 index c2b401b..0000000 Binary files a/technic/technic/textures/technicx32/technic_nodebreaker_side.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_nodebreaker_side1.png b/technic/technic/textures/technicx32/technic_nodebreaker_side1.png deleted file mode 100644 index 07e74aa..0000000 Binary files a/technic/technic/textures/technicx32/technic_nodebreaker_side1.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_nodebreaker_side1_off.png b/technic/technic/textures/technicx32/technic_nodebreaker_side1_off.png deleted file mode 100644 index b63f3bb..0000000 Binary files a/technic/technic/textures/technicx32/technic_nodebreaker_side1_off.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_nodebreaker_side1_on.png b/technic/technic/textures/technicx32/technic_nodebreaker_side1_on.png deleted file mode 100644 index b455f06..0000000 Binary files a/technic/technic/textures/technicx32/technic_nodebreaker_side1_on.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_nodebreaker_side2.png b/technic/technic/textures/technicx32/technic_nodebreaker_side2.png deleted file mode 100644 index 7f4a0bf..0000000 Binary files a/technic/technic/textures/technicx32/technic_nodebreaker_side2.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_nodebreaker_side2_off.png b/technic/technic/textures/technicx32/technic_nodebreaker_side2_off.png deleted file mode 100644 index 7b60902..0000000 Binary files a/technic/technic/textures/technicx32/technic_nodebreaker_side2_off.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_nodebreaker_side2_on.png b/technic/technic/textures/technicx32/technic_nodebreaker_side2_on.png deleted file mode 100644 index 12985f6..0000000 Binary files a/technic/technic/textures/technicx32/technic_nodebreaker_side2_on.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_nodebreaker_top.png b/technic/technic/textures/technicx32/technic_nodebreaker_top.png deleted file mode 100644 index 0994c6d..0000000 Binary files a/technic/technic/textures/technicx32/technic_nodebreaker_top.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_nodebreaker_top_off.png b/technic/technic/textures/technicx32/technic_nodebreaker_top_off.png deleted file mode 100644 index f08fc1b..0000000 Binary files a/technic/technic/textures/technicx32/technic_nodebreaker_top_off.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_nodebreaker_top_on.png b/technic/technic/textures/technicx32/technic_nodebreaker_top_on.png deleted file mode 100644 index ec28210..0000000 Binary files a/technic/technic/textures/technicx32/technic_nodebreaker_top_on.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_power_meter.png b/technic/technic/textures/technicx32/technic_power_meter.png deleted file mode 100644 index f1e5120..0000000 Binary files a/technic/technic/textures/technicx32/technic_power_meter.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_power_meter1.png b/technic/technic/textures/technicx32/technic_power_meter1.png deleted file mode 100644 index 0542c7b..0000000 Binary files a/technic/technic/textures/technicx32/technic_power_meter1.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_power_meter2.png b/technic/technic/textures/technicx32/technic_power_meter2.png deleted file mode 100644 index bf5703c..0000000 Binary files a/technic/technic/textures/technicx32/technic_power_meter2.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_power_meter3.png b/technic/technic/textures/technicx32/technic_power_meter3.png deleted file mode 100644 index 4204815..0000000 Binary files a/technic/technic/textures/technicx32/technic_power_meter3.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_power_meter4.png b/technic/technic/textures/technicx32/technic_power_meter4.png deleted file mode 100644 index 82a0148..0000000 Binary files a/technic/technic/textures/technicx32/technic_power_meter4.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_power_meter5.png b/technic/technic/textures/technicx32/technic_power_meter5.png deleted file mode 100644 index af783ca..0000000 Binary files a/technic/technic/textures/technicx32/technic_power_meter5.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_power_meter6.png b/technic/technic/textures/technicx32/technic_power_meter6.png deleted file mode 100644 index 44feff4..0000000 Binary files a/technic/technic/textures/technicx32/technic_power_meter6.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_power_meter7.png b/technic/technic/textures/technicx32/technic_power_meter7.png deleted file mode 100644 index 554baa2..0000000 Binary files a/technic/technic/textures/technicx32/technic_power_meter7.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_power_meter8.png b/technic/technic/textures/technicx32/technic_power_meter8.png deleted file mode 100644 index 8c4f4a8..0000000 Binary files a/technic/technic/textures/technicx32/technic_power_meter8.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_power_meter_bg.png b/technic/technic/textures/technicx32/technic_power_meter_bg.png deleted file mode 100644 index 9667cda..0000000 Binary files a/technic/technic/textures/technicx32/technic_power_meter_bg.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_power_meter_fg.png b/technic/technic/textures/technicx32/technic_power_meter_fg.png deleted file mode 100644 index 7f2dde8..0000000 Binary files a/technic/technic/textures/technicx32/technic_power_meter_fg.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_raw_latex.png b/technic/technic/textures/technicx32/technic_raw_latex.png deleted file mode 100644 index 7fbbe64..0000000 Binary files a/technic/technic/textures/technicx32/technic_raw_latex.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_rubber.png b/technic/technic/textures/technicx32/technic_rubber.png deleted file mode 100644 index 9ed4a9d..0000000 Binary files a/technic/technic/textures/technicx32/technic_rubber.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_rubber_sapling.png b/technic/technic/textures/technicx32/technic_rubber_sapling.png deleted file mode 100644 index e5c9f5d..0000000 Binary files a/technic/technic/textures/technicx32/technic_rubber_sapling.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_rubber_tree_empty.png b/technic/technic/textures/technicx32/technic_rubber_tree_empty.png deleted file mode 100644 index 1792951..0000000 Binary files a/technic/technic/textures/technicx32/technic_rubber_tree_empty.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_rubber_tree_full.png b/technic/technic/textures/technicx32/technic_rubber_tree_full.png deleted file mode 100644 index 08067ef..0000000 Binary files a/technic/technic/textures/technicx32/technic_rubber_tree_full.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_screwdriver.png b/technic/technic/textures/technicx32/technic_screwdriver.png deleted file mode 100644 index bd2da22..0000000 Binary files a/technic/technic/textures/technicx32/technic_screwdriver.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_silicon_wafer.png b/technic/technic/textures/technicx32/technic_silicon_wafer.png deleted file mode 100644 index 78aef20..0000000 Binary files a/technic/technic/textures/technicx32/technic_silicon_wafer.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_silver_dust.png b/technic/technic/textures/technicx32/technic_silver_dust.png deleted file mode 100644 index 9092c90..0000000 Binary files a/technic/technic/textures/technicx32/technic_silver_dust.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_solar_panel_bottom.png b/technic/technic/textures/technicx32/technic_solar_panel_bottom.png deleted file mode 100644 index b0ad82f..0000000 Binary files a/technic/technic/textures/technicx32/technic_solar_panel_bottom.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_solar_panel_side.png b/technic/technic/textures/technicx32/technic_solar_panel_side.png deleted file mode 100644 index b22447e..0000000 Binary files a/technic/technic/textures/technicx32/technic_solar_panel_side.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_solar_panel_top.png b/technic/technic/textures/technicx32/technic_solar_panel_top.png deleted file mode 100644 index 492764b..0000000 Binary files a/technic/technic/textures/technicx32/technic_solar_panel_top.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_sonic_screwdriver.png b/technic/technic/textures/technicx32/technic_sonic_screwdriver.png deleted file mode 100644 index fb61d96..0000000 Binary files a/technic/technic/textures/technicx32/technic_sonic_screwdriver.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_stainless_steel_dust.png b/technic/technic/textures/technicx32/technic_stainless_steel_dust.png deleted file mode 100644 index 450e2bb..0000000 Binary files a/technic/technic/textures/technicx32/technic_stainless_steel_dust.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_talinite_dust.png b/technic/technic/textures/technicx32/technic_talinite_dust.png deleted file mode 100644 index 39f9330..0000000 Binary files a/technic/technic/textures/technicx32/technic_talinite_dust.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_tin_dust.png b/technic/technic/textures/technicx32/technic_tin_dust.png deleted file mode 100644 index 4e94e00..0000000 Binary files a/technic/technic/textures/technicx32/technic_tin_dust.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_tree_tap.png b/technic/technic/textures/technicx32/technic_tree_tap.png deleted file mode 100644 index 542f30f..0000000 Binary files a/technic/technic/textures/technicx32/technic_tree_tap.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_uranium_dust.png b/technic/technic/textures/technicx32/technic_uranium_dust.png deleted file mode 100644 index d8095c3..0000000 Binary files a/technic/technic/textures/technicx32/technic_uranium_dust.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_water_can.png b/technic/technic/textures/technicx32/technic_water_can.png deleted file mode 100644 index 18e0225..0000000 Binary files a/technic/technic/textures/technicx32/technic_water_can.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_water_mill_side.png b/technic/technic/textures/technicx32/technic_water_mill_side.png deleted file mode 100644 index f4bdb16..0000000 Binary files a/technic/technic/textures/technicx32/technic_water_mill_side.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_water_mill_top.png b/technic/technic/textures/technicx32/technic_water_mill_top.png deleted file mode 100644 index 601ff15..0000000 Binary files a/technic/technic/textures/technicx32/technic_water_mill_top.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_water_mill_top_active.png b/technic/technic/textures/technicx32/technic_water_mill_top_active.png deleted file mode 100644 index f02bec6..0000000 Binary files a/technic/technic/textures/technicx32/technic_water_mill_top_active.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_workshop_bottom.png b/technic/technic/textures/technicx32/technic_workshop_bottom.png deleted file mode 100644 index bd8fd55..0000000 Binary files a/technic/technic/textures/technicx32/technic_workshop_bottom.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_workshop_side.png b/technic/technic/textures/technicx32/technic_workshop_side.png deleted file mode 100644 index 9e3e7a7..0000000 Binary files a/technic/technic/textures/technicx32/technic_workshop_side.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_workshop_top.png b/technic/technic/textures/technicx32/technic_workshop_top.png deleted file mode 100644 index feae141..0000000 Binary files a/technic/technic/textures/technicx32/technic_workshop_top.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_wrought_iron_dust.png b/technic/technic/textures/technicx32/technic_wrought_iron_dust.png deleted file mode 100644 index d890e73..0000000 Binary files a/technic/technic/textures/technicx32/technic_wrought_iron_dust.png and /dev/null differ diff --git a/technic/technic/textures/technicx32/technic_zinc_dust.png b/technic/technic/textures/technicx32/technic_zinc_dust.png deleted file mode 100644 index 0d2f75a..0000000 Binary files a/technic/technic/textures/technicx32/technic_zinc_dust.png and /dev/null differ diff --git a/technic/technic/tools/cans.lua b/technic/technic/tools/cans.lua deleted file mode 100644 index f12ec93..0000000 --- a/technic/technic/tools/cans.lua +++ /dev/null @@ -1,114 +0,0 @@ -local S = technic.getter - -local function set_can_wear(itemstack, level, max_level) - local temp - if level == 0 then - temp = 0 - else - temp = 65536 - math.floor(level / max_level * 65535) - if temp > 65535 then temp = 65535 end - if temp < 1 then temp = 1 end - end - itemstack:set_wear(temp) -end - -local function get_can_level(itemstack) - if itemstack:get_metadata() == "" then - return 0 - else - return tonumber(itemstack:get_metadata()) - end -end - -function technic.register_can(d) - local data = {} - for k, v in pairs(d) do data[k] = v end - minetest.register_tool(data.can_name, { - description = data.can_description, - inventory_image = data.can_inventory_image, - stack_max = 1, - wear_represents = "content_level", - liquids_pointable = true, - on_use = function(itemstack, user, pointed_thing) - if pointed_thing.type ~= "node" then return end - local node = minetest.get_node(pointed_thing.under) - if node.name ~= data.liquid_source_name then return end - local charge = get_can_level(itemstack) - if charge == data.can_capacity then return end - if minetest.is_protected(pointed_thing.under, user:get_player_name()) then - minetest.log("action", user:get_player_name().." tried to take "..node.name.." at protected position "..minetest.pos_to_string(pointed_thing.under).." with a "..data.can_name) - return - end - minetest.remove_node(pointed_thing.under) - charge = charge + 1 - itemstack:set_metadata(tostring(charge)) - set_can_wear(itemstack, charge, data.can_capacity) - return itemstack - end, - on_place = function(itemstack, user, pointed_thing) - if pointed_thing.type ~= "node" then return end - local pos = pointed_thing.under - local def = minetest.registered_nodes[minetest.get_node(pos).name] or {} - if def.on_rightclick and user and not user:get_player_control().sneak then - return def.on_rightclick(pos, minetest.get_node(pos), user, itemstack, pointed_thing) - end - if not def.buildable_to then - pos = pointed_thing.above - def = minetest.registered_nodes[minetest.get_node(pos).name] or {} - if not def.buildable_to then return end - end - local charge = get_can_level(itemstack) - if charge == 0 then return end - if minetest.is_protected(pos, user:get_player_name()) then - minetest.log("action", user:get_player_name().." tried to place "..data.liquid_source_name.." at protected position "..minetest.pos_to_string(pos).." with a "..data.can_name) - return - end - minetest.set_node(pos, {name=data.liquid_source_name}) - charge = charge - 1 - itemstack:set_metadata(tostring(charge)) - set_can_wear(itemstack, charge, data.can_capacity) - return itemstack - end, - on_refill = function(stack) - stack:set_metadata(tostring(data.can_capacity)) - set_can_wear(stack, data.can_capacity, data.can_capacity) - return stack - end, - }) -end - -technic.register_can({ - can_name = "technic:water_can", - can_description = S("Water Can"), - can_inventory_image = "technic_water_can.png", - can_capacity = 16, - liquid_source_name = "default:water_source", - liquid_flowing_name = "default:water_flowing", -}) - -minetest.register_craft({ - output = 'technic:water_can 1', - recipe = { - {'technic:zinc_ingot', 'technic:rubber','technic:zinc_ingot'}, - {'technic:carbon_steel_ingot', '', 'technic:carbon_steel_ingot'}, - {'technic:zinc_ingot', 'technic:carbon_steel_ingot', 'technic:zinc_ingot'}, - } -}) - -technic.register_can({ - can_name = "technic:lava_can", - can_description = S("Lava Can"), - can_inventory_image = "technic_lava_can.png", - can_capacity = 8, - liquid_source_name = "default:lava_source", - liquid_flowing_name = "default:lava_flowing", -}) - -minetest.register_craft({ - output = 'technic:lava_can 1', - recipe = { - {'technic:zinc_ingot', 'technic:stainless_steel_ingot','technic:zinc_ingot'}, - {'technic:stainless_steel_ingot', '', 'technic:stainless_steel_ingot'}, - {'technic:zinc_ingot', 'technic:stainless_steel_ingot', 'technic:zinc_ingot'}, - } -}) diff --git a/technic/technic/tools/chainsaw.lua b/technic/technic/tools/chainsaw.lua deleted file mode 100644 index bf4efff..0000000 --- a/technic/technic/tools/chainsaw.lua +++ /dev/null @@ -1,366 +0,0 @@ --- Configuration - -local chainsaw_max_charge = 30000 -- Maximum charge of the saw --- Gives 2500 nodes on a single charge (about 50 complete normal trees) -local chainsaw_charge_per_node = 12 --- Cut down tree leaves. Leaf decay may cause slowness on large trees --- if this is disabled. -local chainsaw_leaves = true - --- The default trees -local timber_nodenames = { - ["default:jungletree"] = true, - ["default:papyrus"] = true, - ["default:cactus"] = true, - ["default:tree"] = true, - ["default:apple"] = true, - ["default:pinetree"] = true, -} - -if chainsaw_leaves then - timber_nodenames["default:leaves"] = true - timber_nodenames["default:jungleleaves"] = true - timber_nodenames["default:pine_needles"] = true -end - --- technic_worldgen defines rubber trees if moretrees isn't installed -if minetest.get_modpath("technic_worldgen") or - minetest.get_modpath("moretrees") then - timber_nodenames["moretrees:rubber_tree_trunk_empty"] = true - timber_nodenames["moretrees:rubber_tree_trunk"] = true - if chainsaw_leaves then - timber_nodenames["moretrees:rubber_tree_leaves"] = true - end -end - --- Support moretrees if it is there -if minetest.get_modpath("moretrees") then - timber_nodenames["moretrees:acacia_trunk"] = true - timber_nodenames["moretrees:apple_tree_trunk"] = true - timber_nodenames["moretrees:beech_trunk"] = true - timber_nodenames["moretrees:birch_trunk"] = true - timber_nodenames["moretrees:fir_trunk"] = true - timber_nodenames["moretrees:oak_trunk"] = true - timber_nodenames["moretrees:palm_trunk"] = true - timber_nodenames["moretrees:pine_trunk"] = true - timber_nodenames["moretrees:sequoia_trunk"] = true - timber_nodenames["moretrees:spruce_trunk"] = true - timber_nodenames["moretrees:willow_trunk"] = true - timber_nodenames["moretrees:jungletree_trunk"] = true - - if chainsaw_leaves then - timber_nodenames["moretrees:acacia_leaves"] = true - timber_nodenames["moretrees:apple_tree_leaves"] = true - timber_nodenames["moretrees:oak_leaves"] = true - timber_nodenames["moretrees:fir_leaves"] = true - timber_nodenames["moretrees:fir_leaves_bright"] = true - timber_nodenames["moretrees:sequoia_leaves"] = true - timber_nodenames["moretrees:birch_leaves"] = true - timber_nodenames["moretrees:birch_leaves"] = true - timber_nodenames["moretrees:palm_leaves"] = true - timber_nodenames["moretrees:spruce_leaves"] = true - timber_nodenames["moretrees:spruce_leaves"] = true - timber_nodenames["moretrees:pine_leaves"] = true - timber_nodenames["moretrees:willow_leaves"] = true - timber_nodenames["moretrees:jungletree_leaves_green"] = true - timber_nodenames["moretrees:jungletree_leaves_yellow"] = true - timber_nodenames["moretrees:jungletree_leaves_red"] = true - timber_nodenames["moretrees:acorn"] = true - timber_nodenames["moretrees:coconut"] = true - timber_nodenames["moretrees:spruce_cone"] = true - timber_nodenames["moretrees:pine_cone"] = true - timber_nodenames["moretrees:fir_cone"] = true - timber_nodenames["moretrees:apple_blossoms"] = true - end -end - --- Support growing_trees -if minetest.get_modpath("growing_trees") then - timber_nodenames["growing_trees:trunk"] = true - timber_nodenames["growing_trees:medium_trunk"] = true - timber_nodenames["growing_trees:big_trunk"] = true - timber_nodenames["growing_trees:trunk_top"] = true - timber_nodenames["growing_trees:trunk_sprout"] = true - timber_nodenames["growing_trees:branch_sprout"] = true - timber_nodenames["growing_trees:branch"] = true - timber_nodenames["growing_trees:branch_xmzm"] = true - timber_nodenames["growing_trees:branch_xpzm"] = true - timber_nodenames["growing_trees:branch_xmzp"] = true - timber_nodenames["growing_trees:branch_xpzp"] = true - timber_nodenames["growing_trees:branch_zz"] = true - timber_nodenames["growing_trees:branch_xx"] = true - - if chainsaw_leaves then - timber_nodenames["growing_trees:leaves"] = true - end -end - --- Support growing_cactus -if minetest.get_modpath("growing_cactus") then - timber_nodenames["growing_cactus:sprout"] = true - timber_nodenames["growing_cactus:branch_sprout_vertical"] = true - timber_nodenames["growing_cactus:branch_sprout_vertical_fixed"] = true - timber_nodenames["growing_cactus:branch_sprout_xp"] = true - timber_nodenames["growing_cactus:branch_sprout_xm"] = true - timber_nodenames["growing_cactus:branch_sprout_zp"] = true - timber_nodenames["growing_cactus:branch_sprout_zm"] = true - timber_nodenames["growing_cactus:trunk"] = true - timber_nodenames["growing_cactus:branch_trunk"] = true - timber_nodenames["growing_cactus:branch"] = true - timber_nodenames["growing_cactus:branch_xp"] = true - timber_nodenames["growing_cactus:branch_xm"] = true - timber_nodenames["growing_cactus:branch_zp"] = true - timber_nodenames["growing_cactus:branch_zm"] = true - timber_nodenames["growing_cactus:branch_zz"] = true - timber_nodenames["growing_cactus:branch_xx"] = true -end - --- Support farming_plus -if minetest.get_modpath("farming_plus") then - if chainsaw_leaves then - timber_nodenames["farming_plus:banana_leaves"] = true - timber_nodenames["farming_plus:banana"] = true - timber_nodenames["farming_plus:cocoa_leaves"] = true - timber_nodenames["farming_plus:cocoa"] = true - end -end - --- Support nature -if minetest.get_modpath("nature") then - if chainsaw_leaves then - timber_nodenames["nature:blossom"] = true - end -end - --- Support snow -if minetest.get_modpath("snow") then - if chainsaw_leaves then - timber_nodenames["snow:needles"] = true - timber_nodenames["snow:needles_decorated"] = true - timber_nodenames["snow:star"] = true - end -end - --- Support vines (also generated by moretrees if available) -if minetest.get_modpath("vines") then - if chainsaw_leaves then - timber_nodenames["vines:vines"] = true - end -end - -if minetest.get_modpath("trunks") then - if chainsaw_leaves then - timber_nodenames["trunks:moss"] = true - timber_nodenames["trunks:moss_fungus"] = true - timber_nodenames["trunks:treeroot"] = true - end -end - -local S = technic.getter - -technic.register_power_tool("technic:chainsaw", chainsaw_max_charge) - --- Table for saving what was sawed down -local produced = {} - --- Save the items sawed down so that we can drop them in a nice single stack -local function handle_drops(drops) - for _, item in ipairs(drops) do - local stack = ItemStack(item) - local name = stack:get_name() - local p = produced[name] - if not p then - produced[name] = stack - else - p:set_count(p:get_count() + stack:get_count()) - end - end -end - ---- Iterator over positions to try to saw around a sawed node. --- This returns positions in a 3x1x3 area around the position, plus the --- position above it. This does not return the bottom position to prevent --- the chainsaw from cutting down nodes below the cutting position. --- @param pos Sawing position. -local function iterSawTries(pos) - -- Copy position to prevent mangling it - local pos = vector.new(pos) - local i = 0 - - return function() - i = i + 1 - -- Given a (top view) area like so (where 5 is the starting position): - -- X --> - -- Z 123 - -- | 456 - -- V 789 - -- This will return positions 1, 4, 7, 2, 8 (skip 5), 3, 6, 9, - -- and the position above 5. - if i == 1 then - -- Move to starting position - pos.x = pos.x - 1 - pos.z = pos.z - 1 - elseif i == 4 or i == 7 then - -- Move to next X and back to start of Z when we reach - -- the end of a Z line. - pos.x = pos.x + 1 - pos.z = pos.z - 2 - elseif i == 5 then - -- Skip the middle position (we've already run on it) - -- and double-increment the counter. - pos.z = pos.z + 2 - i = i + 1 - elseif i <= 9 then - -- Go to next Z. - pos.z = pos.z + 1 - elseif i == 10 then - -- Move back to center and up. - -- The Y+ position must be last so that we don't dig - -- straight upward and not come down (since the Y- - -- position isn't checked). - pos.x = pos.x - 1 - pos.z = pos.z - 1 - pos.y = pos.y + 1 - else - return nil - end - return pos - end -end - --- This function does all the hard work. Recursively we dig the node at hand --- if it is in the table and then search the surroundings for more stuff to dig. -local function recursive_dig(pos, remaining_charge) - if remaining_charge < chainsaw_charge_per_node then - return remaining_charge - end - local node = minetest.get_node(pos) - - if not timber_nodenames[node.name] then - return remaining_charge - end - - -- Wood found - cut it - handle_drops(minetest.get_node_drops(node.name, "")) - minetest.remove_node(pos) - remaining_charge = remaining_charge - chainsaw_charge_per_node - - -- Check surroundings and run recursively if any charge left - for npos in iterSawTries(pos) do - if remaining_charge < chainsaw_charge_per_node then - break - end - if timber_nodenames[minetest.get_node(npos).name] then - remaining_charge = recursive_dig(npos, remaining_charge) - end - end - return remaining_charge -end - --- Function to randomize positions for new node drops -local function get_drop_pos(pos) - local drop_pos = {} - - for i = 0, 8 do - -- Randomize position for a new drop - drop_pos.x = pos.x + math.random(-3, 3) - drop_pos.y = pos.y - 1 - drop_pos.z = pos.z + math.random(-3, 3) - - -- Move the randomized position upwards until - -- the node is air or unloaded. - for y = drop_pos.y, drop_pos.y + 5 do - drop_pos.y = y - local node = minetest.get_node_or_nil(drop_pos) - - if not node then - -- If the node is not loaded yet simply drop - -- the item at the original digging position. - return pos - elseif node.name == "air" then - -- Add variation to the entity drop position, - -- but don't let drops get too close to the edge - drop_pos.x = drop_pos.x + (math.random() * 0.8) - 0.5 - drop_pos.z = drop_pos.z + (math.random() * 0.8) - 0.5 - return drop_pos - end - end - end - - -- Return the original position if this takes too long - return pos -end - --- Chainsaw entry point -local function chainsaw_dig(pos, current_charge) - -- Start sawing things down - local remaining_charge = recursive_dig(pos, current_charge) - minetest.sound_play("chainsaw", {pos = pos, gain = 1.0, - max_hear_distance = 10}) - - -- Now drop items for the player - for name, stack in pairs(produced) do - -- Drop stacks of stack max or less - local count, max = stack:get_count(), stack:get_stack_max() - stack:set_count(max) - while count > max do - minetest.add_item(get_drop_pos(pos), stack) - count = count - max - end - stack:set_count(count) - minetest.add_item(get_drop_pos(pos), stack) - end - - -- Clean up - produced = {} - - return remaining_charge -end - - -minetest.register_tool("technic:chainsaw", { - description = S("Chainsaw"), - inventory_image = "technic_chainsaw.png", - stack_max = 1, - wear_represents = "technic_RE_charge", - on_refill = technic.refill_RE_charge, - on_use = function(itemstack, user, pointed_thing) - if pointed_thing.type ~= "node" then - return itemstack - end - - local meta = minetest.deserialize(itemstack:get_metadata()) - if not meta or not meta.charge or - meta.charge < chainsaw_charge_per_node then - return - end - - local name = user:get_player_name() - if minetest.is_protected(pointed_thing.under, name) then - minetest.record_protection_violation(pointed_thing.under, name) - return - end - - -- Send current charge to digging function so that the - -- chainsaw will stop after digging a number of nodes - meta.charge = chainsaw_dig(pointed_thing.under, meta.charge) - if not technic.creative_mode then - technic.set_RE_wear(itemstack, meta.charge, chainsaw_max_charge) - itemstack:set_metadata(minetest.serialize(meta)) - end - return itemstack - end, -}) - -local mesecons_button = minetest.get_modpath("mesecons_button") -local trigger = mesecons_button and "mesecons_button:button_off" or "default:mese_crystal_fragment" - -minetest.register_craft({ - output = "technic:chainsaw", - recipe = { - {"technic:stainless_steel_ingot", trigger, "technic:battery"}, - {"technic:fine_copper_wire", "technic:motor", "technic:battery"}, - {"", "", "technic:stainless_steel_ingot"}, - } -}) - diff --git a/technic/technic/tools/flashlight.lua b/technic/technic/tools/flashlight.lua deleted file mode 100644 index 252dc8c..0000000 --- a/technic/technic/tools/flashlight.lua +++ /dev/null @@ -1,123 +0,0 @@ --- Original code comes from walkin_light mod by Echo --- http://minetest.net/forum/viewtopic.php?id=2621 - -local flashlight_max_charge = 30000 - -local S = technic.getter - -technic.register_power_tool("technic:flashlight", flashlight_max_charge) - -minetest.register_alias("technic:light_off", "air") - -minetest.register_tool("technic:flashlight", { - description = S("Flashlight"), - inventory_image = "technic_flashlight.png", - stack_max = 1, - wear_represents = "technic_RE_charge", - on_refill = technic.refill_RE_charge, -}) - -minetest.register_craft({ - output = "technic:flashlight", - recipe = { - {"technic:rubber", "default:glass", "technic:rubber"}, - {"technic:stainless_steel_ingot", "technic:battery", "technic:stainless_steel_ingot"}, - {"", "technic:battery", ""} - } -}) - - -local player_positions = {} -local was_wielding = {} - -local function check_for_flashlight(player) - if player == nil then - return false - end - local inv = player:get_inventory() - local hotbar = inv:get_list("main") - for i = 1, 8 do - if hotbar[i]:get_name() == "technic:flashlight" then - local meta = minetest.deserialize(hotbar[i]:get_metadata()) - if meta and meta.charge and meta.charge >= 2 then - if not technic.creative_mode then - meta.charge = meta.charge - 2; - technic.set_RE_wear(hotbar[i], meta.charge, flashlight_max_charge) - hotbar[i]:set_metadata(minetest.serialize(meta)) - inv:set_stack("main", i, hotbar[i]) - end - return true - end - end - end - return false -end - -minetest.register_on_joinplayer(function(player) - local player_name = player:get_player_name() - local pos = player:getpos() - local rounded_pos = vector.round(pos) - rounded_pos.y = rounded_pos.y + 1 - player_positions[player_name] = rounded_pos - was_wielding[player_name] = true -end) - - -minetest.register_on_leaveplayer(function(player) - local player_name = player:get_player_name() - local pos = player_positions[player_name] - local nodename = minetest.get_node(pos).name - if nodename == "technic:light" then - minetest.remove_node(pos) - end - player_positions[player_name] = nil -end) - -minetest.register_globalstep(function(dtime) - for i, player in pairs(minetest.get_connected_players()) do - local player_name = player:get_player_name() - local flashlight_weared = check_for_flashlight(player) - local pos = player:getpos() - local rounded_pos = vector.round(pos) - rounded_pos.y = rounded_pos.y + 1 - local old_pos = player_positions[player_name] - local player_moved = old_pos and not vector.equals(old_pos, rounded_pos) - if not old_pos then - old_pos = rounded_pos - player_moved = true - end - - -- Remove light, flashlight weared out or was removed from hotbar - if was_wielding[player_name] and not flashlight_weared then - was_wielding[player_name] = false - local node = minetest.get_node_or_nil(old_pos) - if node and node.name == "technic:light" then - minetest.remove_node(old_pos) - end - elseif (player_moved or not was_wielding[player_name]) and flashlight_weared then - local node = minetest.get_node_or_nil(rounded_pos) - if node and node.name == "air" then - minetest.set_node(rounded_pos, {name="technic:light"}) - end - local node = minetest.get_node_or_nil(old_pos) - if node and node.name == "technic:light" then - minetest.remove_node(old_pos) - end - player_positions[player_name] = rounded_pos - was_wielding[player_name] = true - end - end -end) - -minetest.register_node("technic:light", { - drawtype = "glasslike", - tiles = {"technic_light.png"}, - paramtype = "light", - groups = {not_in_creative_inventory=1}, - drop = "", - walkable = false, - buildable_to = true, - sunlight_propagates = true, - light_source = LIGHT_MAX, - pointable = false, -}) diff --git a/technic/technic/tools/init.lua b/technic/technic/tools/init.lua deleted file mode 100644 index 5e0aa02..0000000 --- a/technic/technic/tools/init.lua +++ /dev/null @@ -1,23 +0,0 @@ -local path = technic.modpath.."/tools" - -if technic.config:get_bool("enable_mining_drill") then - dofile(path.."/mining_drill.lua") -end -if technic.config:get_bool("enable_mining_laser") then - dofile(path.."/mining_lasers.lua") -end -if technic.config:get_bool("enable_flashlight") then - dofile(path.."/flashlight.lua") -end -dofile(path.."/cans.lua") -dofile(path.."/chainsaw.lua") -dofile(path.."/tree_tap.lua") -dofile(path.."/sonic_screwdriver.lua") -dofile(path.."/prospector.lua") -dofile(path.."/vacuum.lua") - -if minetest.get_modpath("screwdriver") then - -- compatibility alias - minetest.register_alias("technic:screwdriver", "screwdriver:screwdriver") -end - diff --git a/technic/technic/tools/mining_drill.lua b/technic/technic/tools/mining_drill.lua deleted file mode 100644 index 8a25abe..0000000 --- a/technic/technic/tools/mining_drill.lua +++ /dev/null @@ -1,419 +0,0 @@ -local max_charge = {50000, 200000, 650000} -local power_usage_per_node = {200, 500, 800} - -local S = technic.getter - -minetest.register_craft({ - output = 'technic:mining_drill', - recipe = { - {'moreores:tin_ingot', 'technic:diamond_drill_head', 'moreores:tin_ingot'}, - {'technic:stainless_steel_ingot', 'technic:motor', 'technic:stainless_steel_ingot'}, - {'', 'technic:red_energy_crystal', 'default:copper_ingot'}, - } -}) -minetest.register_craft({ - output = 'technic:mining_drill_mk2', - recipe = { - {'technic:diamond_drill_head', 'technic:diamond_drill_head', 'technic:diamond_drill_head'}, - {'technic:stainless_steel_ingot', 'technic:mining_drill', 'technic:stainless_steel_ingot'}, - {'', 'technic:green_energy_crystal', ''}, - } -}) -minetest.register_craft({ - output = 'technic:mining_drill_mk3', - recipe = { - {'technic:diamond_drill_head', 'technic:diamond_drill_head', 'technic:diamond_drill_head'}, - {'technic:stainless_steel_ingot', 'technic:mining_drill_mk2', 'technic:stainless_steel_ingot'}, - {'', 'technic:blue_energy_crystal', ''}, - } -}) -for i = 1, 4 do - minetest.register_craft({ - output = 'technic:mining_drill_mk3', - recipe = { - {'technic:diamond_drill_head', 'technic:diamond_drill_head', 'technic:diamond_drill_head'}, - {'technic:stainless_steel_ingot', 'technic:mining_drill_mk2_'..i, 'technic:stainless_steel_ingot'}, - {'', 'technic:blue_energy_crystal', ''}, - } - }) -end - -local mining_drill_mode_text = { - {S("Single node.")}, - {S("3 nodes deep.")}, - {S("3 nodes wide.")}, - {S("3 nodes tall.")}, - {S("3x3 nodes.")}, -} - -local function drill_dig_it0 (pos,player) - if minetest.is_protected(pos, player:get_player_name()) then - minetest.record_protection_violation(pos, player:get_player_name()) - return - end - local node=minetest.get_node(pos) - if node.name == "air" or node.name == "ignore" then return end - if node.name == "default:lava_source" then return end - if node.name == "default:lava_flowing" then return end - if node.name == "default:water_source" then minetest.remove_node(pos) return end - if node.name == "default:water_flowing" then minetest.remove_node(pos) return end - minetest.node_dig(pos,node,player) -end - -local function drill_dig_it1 (player) - local dir=player:get_look_dir() - if math.abs(dir.x)>math.abs(dir.z) then - if dir.x>0 then return 0 end - return 1 - end - if dir.z>0 then return 2 end - return 3 -end - -local function drill_dig_it2 (pos,player) - drill_dig_it0 (pos,player) - pos.z=pos.z+1 - drill_dig_it0 (pos,player) - pos.z=pos.z-2 - drill_dig_it0 (pos,player) - pos.z=pos.z+1 - pos.y=pos.y+1 - drill_dig_it0 (pos,player) - pos.z=pos.z+1 - drill_dig_it0 (pos,player) - pos.z=pos.z-2 - drill_dig_it0 (pos,player) - pos.z=pos.z+1 - pos.y=pos.y-2 - drill_dig_it0 (pos,player) - pos.z=pos.z+1 - drill_dig_it0 (pos,player) - pos.z=pos.z-2 - drill_dig_it0 (pos,player) -end - -local function drill_dig_it3 (pos,player) - drill_dig_it0 (pos,player) - pos.x=pos.x+1 - drill_dig_it0 (pos,player) - pos.x=pos.x-2 - drill_dig_it0 (pos,player) - pos.x=pos.x+1 - pos.y=pos.y+1 - drill_dig_it0 (pos,player) - pos.x=pos.x+1 - drill_dig_it0 (pos,player) - pos.x=pos.x-2 - drill_dig_it0 (pos,player) - pos.x=pos.x+1 - pos.y=pos.y-2 - drill_dig_it0 (pos,player) - pos.x=pos.x+1 - drill_dig_it0 (pos,player) - pos.x=pos.x-2 - drill_dig_it0 (pos,player) -end - -local function drill_dig_it4 (pos,player) - drill_dig_it0 (pos,player) - pos.x=pos.x+1 - drill_dig_it0 (pos,player) - pos.x=pos.x-2 - drill_dig_it0 (pos,player) - pos.x=pos.x+1 - pos.z=pos.z+1 - drill_dig_it0 (pos,player) - pos.x=pos.x+1 - drill_dig_it0 (pos,player) - pos.x=pos.x-2 - drill_dig_it0 (pos,player) - pos.x=pos.x+1 - pos.z=pos.z-2 - drill_dig_it0 (pos,player) - pos.x=pos.x+1 - drill_dig_it0 (pos,player) - pos.x=pos.x-2 - drill_dig_it0 (pos,player) -end - -local function cost_to_use(drill_type, mode) - local mult - if mode == 1 then - mult = 1 - elseif mode <= 4 then - mult = 3 - else - mult = 9 - end - return power_usage_per_node[drill_type] * mult -end - -local function drill_dig_it(pos, player, mode) - if mode == 1 then - drill_dig_it0(pos, player) - end - - if mode == 2 then -- 3 deep - dir = drill_dig_it1(player) - if dir == 0 then -- x+ - drill_dig_it0(pos, player) - pos.x = pos.x + 1 - drill_dig_it0(pos, player) - pos.x = pos.x + 1 - drill_dig_it0(pos, player) - end - if dir == 1 then -- x- - drill_dig_it0(pos, player) - pos.x=pos.x-1 - drill_dig_it0 (pos,player) - pos.x=pos.x-1 - drill_dig_it0 (pos,player) - end - if dir==2 then -- z+ - drill_dig_it0 (pos,player) - pos.z=pos.z+1 - drill_dig_it0 (pos,player) - pos.z=pos.z+1 - drill_dig_it0 (pos,player) - end - if dir==3 then -- z- - drill_dig_it0 (pos,player) - pos.z=pos.z-1 - drill_dig_it0 (pos,player) - pos.z=pos.z-1 - drill_dig_it0 (pos,player) - end - end - - if mode==3 then -- 3 wide - dir=drill_dig_it1(player) - if dir==0 or dir==1 then -- x - drill_dig_it0 (pos,player) - pos.z=pos.z+1 - drill_dig_it0 (pos,player) - pos.z=pos.z-2 - drill_dig_it0 (pos,player) - end - if dir==2 or dir==3 then -- z - drill_dig_it0 (pos,player) - pos.x=pos.x+1 - drill_dig_it0 (pos,player) - pos.x=pos.x-2 - drill_dig_it0 (pos,player) - end - end - - if mode==4 then -- 3 tall, selected in the middle - drill_dig_it0 (pos,player) - pos.y=pos.y-1 - drill_dig_it0 (pos,player) - pos.y=pos.y-1 - drill_dig_it0 (pos,player) - end - - if mode==5 then -- 3 x 3 - local dir=player:get_look_dir() - if math.abs(dir.y)<0.5 then - dir=drill_dig_it1(player) - if dir==0 or dir==1 then -- x - drill_dig_it2(pos,player) - end - if dir==2 or dir==3 then -- z - drill_dig_it3(pos,player) - end - else - drill_dig_it4(pos,player) - end - end - - minetest.sound_play("mining_drill", {pos = pos, gain = 1.0, max_hear_distance = 10,}) -end - -local function pos_is_pointable(pos) - local node = minetest.get_node(pos) - local nodedef = minetest.registered_nodes[node.name] - return nodedef and nodedef.pointable -end - -local function mining_drill_mk2_setmode(user,itemstack) - local player_name=user:get_player_name() - local item=itemstack:to_table() - local meta=minetest.deserialize(item["metadata"]) - if meta==nil then - meta={} - mode=0 - end - if meta["mode"]==nil then - minetest.chat_send_player(player_name, S("Use while sneaking to change Mining Drill Mk%d modes."):format(2)) - meta["mode"]=0 - mode=0 - end - mode=(meta["mode"]) - mode=mode+1 - if mode>=5 then mode=1 end - minetest.chat_send_player(player_name, S("Mining Drill Mk%d Mode %d"):format(2, mode)..": "..mining_drill_mode_text[mode][1]) - item["name"]="technic:mining_drill_mk2_"..mode - meta["mode"]=mode - item["metadata"]=minetest.serialize(meta) - itemstack:replace(item) - return itemstack -end - -local function mining_drill_mk3_setmode(user,itemstack) - local player_name=user:get_player_name() - local item=itemstack:to_table() - local meta=minetest.deserialize(item["metadata"]) - if meta==nil then - meta={} - mode=0 - end - if meta["mode"]==nil then - minetest.chat_send_player(player_name, S("Use while sneaking to change Mining Drill Mk%d modes."):format(3)) - meta["mode"]=0 - mode=0 - end - mode=(meta["mode"]) - mode=mode+1 - if mode>=6 then mode=1 end - minetest.chat_send_player(player_name, S("Mining Drill Mk%d Mode %d"):format(3, mode)..": "..mining_drill_mode_text[mode][1]) - item["name"]="technic:mining_drill_mk3_"..mode - meta["mode"]=mode - item["metadata"]=minetest.serialize(meta) - itemstack:replace(item) - return itemstack -end - - -local function mining_drill_mk2_handler(itemstack, user, pointed_thing) - local keys = user:get_player_control() - local player_name = user:get_player_name() - local meta = minetest.deserialize(itemstack:get_metadata()) - if not meta or not meta.mode or keys.sneak then - return mining_drill_mk2_setmode(user, itemstack) - end - if pointed_thing.type ~= "node" or not pos_is_pointable(pointed_thing.under) or not meta.charge then - return - end - local charge_to_take = cost_to_use(2, meta.mode) - if meta.charge >= charge_to_take then - local pos = minetest.get_pointed_thing_position(pointed_thing, above) - drill_dig_it(pos, user, meta.mode) - if not technic.creative_mode then - meta.charge = meta.charge - charge_to_take - itemstack:set_metadata(minetest.serialize(meta)) - technic.set_RE_wear(itemstack, meta.charge, max_charge[2]) - end - end - return itemstack -end - -local function mining_drill_mk3_handler(itemstack, user, pointed_thing) - local keys = user:get_player_control() - local player_name = user:get_player_name() - local meta = minetest.deserialize(itemstack:get_metadata()) - if not meta or not meta.mode or keys.sneak then - return mining_drill_mk3_setmode(user, itemstack) - end - if pointed_thing.type ~= "node" or not pos_is_pointable(pointed_thing.under) or not meta.charge then - return - end - local charge_to_take = cost_to_use(3, meta.mode) - if meta.charge >= charge_to_take then - local pos = minetest.get_pointed_thing_position(pointed_thing, above) - drill_dig_it(pos, user, meta.mode) - if not technic.creative_mode then - meta.charge = meta.charge - charge_to_take - itemstack:set_metadata(minetest.serialize(meta)) - technic.set_RE_wear(itemstack, meta.charge, max_charge[3]) - end - end - return itemstack -end - -technic.register_power_tool("technic:mining_drill", max_charge[1]) - -minetest.register_tool("technic:mining_drill", { - description = S("Mining Drill Mk%d"):format(1), - inventory_image = "technic_mining_drill.png", - stack_max = 1, - wear_represents = "technic_RE_charge", - on_refill = technic.refill_RE_charge, - on_use = function(itemstack, user, pointed_thing) - if pointed_thing.type ~= "node" or not pos_is_pointable(pointed_thing.under) then - return itemstack - end - local meta = minetest.deserialize(itemstack:get_metadata()) - if not meta or not meta.charge then - return - end - local charge_to_take = cost_to_use(1, 1) - if meta.charge >= charge_to_take then - local pos = minetest.get_pointed_thing_position(pointed_thing, above) - drill_dig_it(pos, user, 1) - if not technic.creative_mode then - meta.charge = meta.charge - charge_to_take - itemstack:set_metadata(minetest.serialize(meta)) - technic.set_RE_wear(itemstack, meta.charge, max_charge[1]) - end - end - return itemstack - end, -}) - -minetest.register_tool("technic:mining_drill_mk2", { - description = S("Mining Drill Mk%d"):format(2), - inventory_image = "technic_mining_drill_mk2.png", - wear_represents = "technic_RE_charge", - on_refill = technic.refill_RE_charge, - on_use = function(itemstack, user, pointed_thing) - mining_drill_mk2_handler(itemstack, user, pointed_thing) - return itemstack - end, -}) - -technic.register_power_tool("technic:mining_drill_mk2", max_charge[2]) - -for i = 1, 4 do - technic.register_power_tool("technic:mining_drill_mk2_"..i, max_charge[2]) - minetest.register_tool("technic:mining_drill_mk2_"..i, { - description = S("Mining Drill Mk%d Mode %d"):format(2, i), - inventory_image = "technic_mining_drill_mk2.png^technic_tool_mode"..i..".png", - wield_image = "technic_mining_drill_mk2.png", - wear_represents = "technic_RE_charge", - on_refill = technic.refill_RE_charge, - groups = {not_in_creative_inventory=1}, - on_use = function(itemstack, user, pointed_thing) - mining_drill_mk2_handler(itemstack, user, pointed_thing) - return itemstack - end, - }) -end - -minetest.register_tool("technic:mining_drill_mk3", { - description = S("Mining Drill Mk%d"):format(3), - inventory_image = "technic_mining_drill_mk3.png", - wear_represents = "technic_RE_charge", - on_refill = technic.refill_RE_charge, - on_use = function(itemstack, user, pointed_thing) - mining_drill_mk3_handler(itemstack,user,pointed_thing) - return itemstack - end, -}) - -technic.register_power_tool("technic:mining_drill_mk3", max_charge[3]) - -for i=1,5,1 do - technic.register_power_tool("technic:mining_drill_mk3_"..i, max_charge[3]) - minetest.register_tool("technic:mining_drill_mk3_"..i, { - description = S("Mining Drill Mk%d Mode %d"):format(3, i), - inventory_image = "technic_mining_drill_mk3.png^technic_tool_mode"..i..".png", - wield_image = "technic_mining_drill_mk3.png", - wear_represents = "technic_RE_charge", - on_refill = technic.refill_RE_charge, - groups = {not_in_creative_inventory=1}, - on_use = function(itemstack, user, pointed_thing) - mining_drill_mk3_handler(itemstack,user,pointed_thing) - return itemstack - end, - }) -end diff --git a/technic/technic/tools/mining_lasers.lua b/technic/technic/tools/mining_lasers.lua deleted file mode 100644 index 4c83ae9..0000000 --- a/technic/technic/tools/mining_lasers.lua +++ /dev/null @@ -1,178 +0,0 @@ -local mining_lasers_list = { --- {, , , }, - {"1", 7, 50000, 1000}, - {"2", 14, 200000, 2000}, - {"3", 21, 650000, 3000}, -} - -local S = technic.getter - -minetest.register_craft({ - output = 'technic:laser_mk1', - recipe = { - {'default:diamond', 'technic:brass_ingot', 'default:obsidian_glass'}, - {'', 'technic:brass_ingot', 'technic:red_energy_crystal'}, - {'', '', 'default:copper_ingot'}, - } -}) -minetest.register_craft({ - output = 'technic:laser_mk2', - recipe = { - {'default:diamond', 'technic:carbon_steel_ingot', 'technic:laser_mk1'}, - {'', 'technic:carbon_steel_ingot', 'technic:green_energy_crystal'}, - {'', '', 'default:copper_ingot'}, - } -}) -minetest.register_craft({ - output = 'technic:laser_mk3', - recipe = { - {'default:diamond', 'technic:carbon_steel_ingot', 'technic:laser_mk2'}, - {'', 'technic:carbon_steel_ingot', 'technic:blue_energy_crystal'}, - {'', '', 'default:copper_ingot'}, - } -}) - --- Based on code by Uberi: https://gist.github.com/Uberi/3125280 -local function rayIter(pos, dir, range) - local p = vector.round(pos) - local x_step, y_step, z_step = 0, 0, 0 - local x_component, y_component, z_component = 0, 0, 0 - local x_intersect, y_intersect, z_intersect = 0, 0, 0 - - if dir.x == 0 then - x_intersect = math.huge - elseif dir.x > 0 then - x_step = 1 - x_component = 1 / dir.x - x_intersect = x_component - else - x_step = -1 - x_component = 1 / -dir.x - end - if dir.y == 0 then - y_intersect = math.huge - elseif dir.y > 0 then - y_step = 1 - y_component = 1 / dir.y - y_intersect = y_component - else - y_step = -1 - y_component = 1 / -dir.y - end - if dir.z == 0 then - z_intersect = math.huge - elseif dir.z > 0 then - z_step = 1 - z_component = 1 / dir.z - z_intersect = z_component - else - z_step = -1 - z_component = 1 / -dir.z - end - - return function() - if x_intersect < y_intersect then - if x_intersect < z_intersect then - p.x = p.x + x_step - x_intersect = x_intersect + x_component - else - p.z = p.z + z_step - z_intersect = z_intersect + z_component - end - elseif y_intersect < z_intersect then - p.y = p.y + y_step - y_intersect = y_intersect + y_component - else - p.z = p.z + z_step - z_intersect = z_intersect + z_component - end - if vector.distance(pos, p) > range then - return nil - end - return p - end -end - -local function laser_node(pos, node, player) - local def = minetest.registered_nodes[node.name] - if def and def.liquidtype ~= "none" then - minetest.remove_node(pos) - minetest.add_particle({ - pos = pos, - vel = {x=0, y=2, z=0}, - acc = {x=0, y=-1, z=0}, - expirationtime = 1.5, - size = 6 + math.random() * 2, - texture = "smoke_puff.png^[transform" .. math.random(0, 7), - }) - return - end - minetest.node_dig(pos, node, player) -end - -local no_destroy = { - ["air"] = true, - ["default:lava_source"] = true, - ["default:lava_flowing"] = true, -} -local function laser_shoot(player, range, particle_texture, sound) - local player_pos = player:getpos() - local player_name = player:get_player_name() - local dir = player:get_look_dir() - - local start_pos = vector.new(player_pos) - -- Adjust to head height - start_pos.y = start_pos.y + 1.9 - minetest.add_particle({ - pos = startpos, - vel = dir, - acc = vector.multiply(dir, 50), - expirationtime = range / 11, - size = 1, - texture = particle_texture .. "^[transform" .. math.random(0, 7), - }) - minetest.sound_play(sound, {pos = player_pos, max_hear_distance = range}) - for pos in rayIter(start_pos, dir, range) do - if minetest.is_protected(pos, player_name) then - minetest.record_protection_violation(pos, player_name) - break - end - local node = minetest.get_node_or_nil(pos) - if not node then - break - end - if not no_destroy[node.name] then - laser_node(pos, node, player) - end - end -end - - -for _, m in pairs(mining_lasers_list) do - technic.register_power_tool("technic:laser_mk"..m[1], m[3]) - minetest.register_tool("technic:laser_mk"..m[1], { - description = S("Mining Laser Mk%d"):format(m[1]), - inventory_image = "technic_mining_laser_mk"..m[1]..".png", - stack_max = 1, - wear_represents = "technic_RE_charge", - on_refill = technic.refill_RE_charge, - on_use = function(itemstack, user) - local meta = minetest.deserialize(itemstack:get_metadata()) - if not meta or not meta.charge then - return - end - - -- If there's enough charge left, fire the laser - if meta.charge >= m[4] then - laser_shoot(user, m[2], "technic_laser_beam_mk"..m[1]..".png", "technic_laser_mk"..m[1]) - if not technic.creative_mode then - meta.charge = meta.charge - m[4] - technic.set_RE_wear(itemstack, meta.charge, m[3]) - itemstack:set_metadata(minetest.serialize(meta)) - end - end - return itemstack - end, - }) -end - diff --git a/technic/technic/tools/prospector.lua b/technic/technic/tools/prospector.lua deleted file mode 100644 index b28f1d8..0000000 --- a/technic/technic/tools/prospector.lua +++ /dev/null @@ -1,128 +0,0 @@ -local S = technic.getter - -technic.register_power_tool("technic:prospector", 300000) - -local function get_metadata(toolstack) - local m = minetest.deserialize(toolstack:get_metadata()) - if not m then m = {} end - if not m.charge then m.charge = 0 end - if not m.target then m.target = "" end - if not m.look_depth then m.look_depth = 7 end - if not m.look_radius then m.look_radius = 1 end - return m -end - -minetest.register_tool("technic:prospector", { - description = S("Prospector"), - inventory_image = "technic_prospector.png", - wear_represents = "technic_RE_charge", - on_refill = technic.refill_RE_charge, - on_use = function(toolstack, user, pointed_thing) - if not user or not user:is_player() or user.is_fake_player then return end - if pointed_thing.type ~= "node" then return end - local toolmeta = get_metadata(toolstack) - local look_diameter = toolmeta.look_radius * 2 + 1 - local charge_to_take = toolmeta.look_depth * (toolmeta.look_depth + 1) * look_diameter * look_diameter - if toolmeta.charge < charge_to_take then return end - if toolmeta.target == "" then - minetest.chat_send_player(user:get_player_name(), "Right-click to set target block type") - return - end - if not technic.creative_mode then - toolmeta.charge = toolmeta.charge - charge_to_take - toolstack:set_metadata(minetest.serialize(toolmeta)) - technic.set_RE_wear(toolstack, toolmeta.charge, technic.power_tools[toolstack:get_name()]) - end - local start_pos = pointed_thing.under - local forward = minetest.facedir_to_dir(minetest.dir_to_facedir(user:get_look_dir(), true)) - local right = forward.x ~= 0 and { x=0, y=1, z=0 } or (forward.y ~= 0 and { x=0, y=0, z=1 } or { x=1, y=0, z=0 }) - local up = forward.x ~= 0 and { x=0, y=0, z=1 } or (forward.y ~= 0 and { x=1, y=0, z=0 } or { x=0, y=1, z=0 }) - local base_pos = vector.add(start_pos, vector.multiply(vector.add(right, up), - toolmeta.look_radius)) - local found = false - for f = 0, toolmeta.look_depth-1 do - for r = 0, look_diameter-1 do - for u = 0, look_diameter-1 do - if minetest.get_node(vector.add(vector.add(vector.add(base_pos, vector.multiply(forward, f)), vector.multiply(right, r)), vector.multiply(up, u))).name == toolmeta.target then found = true end - end - end - end - if math.random() < 0.02 then found = not found end - minetest.chat_send_player(user:get_player_name(), minetest.registered_nodes[toolmeta.target].description.." is "..(found and "present" or "absent").." in "..look_diameter.."x"..look_diameter.."x"..toolmeta.look_depth.." region") - minetest.sound_play("technic_prospector_"..(found and "hit" or "miss"), { pos = vector.add(user:getpos(), { x = 0, y = 1, z = 0 }), gain = 1.0, max_hear_distance = 10 }) - return toolstack - end, - on_place = function(toolstack, user, pointed_thing) - if not user or not user:is_player() or user.is_fake_player then return end - local toolmeta = get_metadata(toolstack) - local pointed - if pointed_thing.type == "node" then - local pname = minetest.get_node(pointed_thing.under).name - local pdef = minetest.registered_nodes[pname] - if pdef and (pdef.groups.not_in_creative_inventory or 0) == 0 and pname ~= toolmeta.target then - pointed = pname - end - end - local look_diameter = toolmeta.look_radius * 2 + 1 - minetest.show_formspec(user:get_player_name(), "technic:prospector_control", - "size[7,8.5]".. - "item_image[0,0;1,1;"..toolstack:get_name().."]".. - "label[1,0;"..minetest.formspec_escape(toolstack:get_definition().description).."]".. - (toolmeta.target ~= "" and - "label[0,1.5;Current target:]".. - "label[0,2;"..minetest.formspec_escape(minetest.registered_nodes[toolmeta.target].description).."]".. - "item_image[0,2.5;1,1;"..toolmeta.target.."]" or - "label[0,1.5;No target set]").. - (pointed and - "label[3.5,1.5;May set new target:]".. - "label[3.5,2;"..minetest.formspec_escape(minetest.registered_nodes[pointed].description).."]".. - "item_image[3.5,2.5;1,1;"..pointed.."]".. - "button_exit[3.5,3.65;2,0.5;target_"..pointed..";Set target]" or - "label[3.5,1.5;No new target available]").. - "label[0,4.5;Region cross section:]".. - "label[0,5;"..look_diameter.."x"..look_diameter.."]".. - "label[3.5,4.5;Set region cross section:]".. - "button_exit[3.5,5.15;1,0.5;look_radius_0;1x1]".. - "button_exit[4.5,5.15;1,0.5;look_radius_1;3x3]".. - "button_exit[5.5,5.15;1,0.5;look_radius_3;7x7]".. - "label[0,6;Region depth:]".. - "label[0,6.5;"..toolmeta.look_depth.."]".. - "label[3.5,6;Set region depth:]".. - "button_exit[3.5,6.65;1,0.5;look_depth_7;7]".. - "button_exit[4.5,6.65;1,0.5;look_depth_14;14]".. - "button_exit[5.5,6.65;1,0.5;look_depth_21;21]".. - "label[0,7.5;Accuracy:]".. - "label[0,8;98%]") - return - end, -}) - -minetest.register_on_player_receive_fields(function(user, formname, fields) - if formname ~= "technic:prospector_control" then return false end - if not user or not user:is_player() or user.is_fake_player then return end - local toolstack = user:get_wielded_item() - if toolstack:get_name() ~= "technic:prospector" then return true end - local toolmeta = get_metadata(toolstack) - for field, value in pairs(fields) do - if field:sub(1, 7) == "target_" then - toolmeta.target = field:sub(8) - end - if field:sub(1, 12) == "look_radius_" then - toolmeta.look_radius = field:sub(13) - end - if field:sub(1, 11) == "look_depth_" then - toolmeta.look_depth = field:sub(12) - end - end - toolstack:set_metadata(minetest.serialize(toolmeta)) - user:set_wielded_item(toolstack) - return true -end) - -minetest.register_craft({ - output = "technic:prospector", - recipe = { - {"moreores:pick_silver", "moreores:mithril_block", "pipeworks:teleport_tube_1"}, - {"technic:brass_ingot", "technic:control_logic_unit", "technic:brass_ingot"}, - {"", "technic:blue_energy_crystal", ""}, - } -}) diff --git a/technic/technic/tools/sonic_screwdriver.lua b/technic/technic/tools/sonic_screwdriver.lua deleted file mode 100644 index 300d363..0000000 --- a/technic/technic/tools/sonic_screwdriver.lua +++ /dev/null @@ -1,98 +0,0 @@ -local sonic_screwdriver_max_charge = 15000 - -local S = technic.getter - -technic.register_power_tool("technic:sonic_screwdriver", sonic_screwdriver_max_charge) - --- screwdriver handler code reused from minetest/minetest_game screwdriver @a9ac480 -local ROTATE_FACE = 1 -local ROTATE_AXIS = 2 - -local function nextrange(x, max) - x = x + 1 - if x > max then - x = 0 - end - return x -end - --- Handles rotation -local function screwdriver_handler(itemstack, user, pointed_thing, mode) - if pointed_thing.type ~= "node" then - return - end - - local pos = pointed_thing.under - - if minetest.is_protected(pos, user:get_player_name()) then - minetest.record_protection_violation(pos, user:get_player_name()) - return - end - - local node = minetest.get_node(pos) - local ndef = minetest.registered_nodes[node.name] - if not ndef or not ndef.paramtype2 == "facedir" or - (ndef.drawtype == "nodebox" and - not ndef.node_box.type == "fixed") or - node.param2 == nil then - return - end - - -- contrary to the default screwdriver, do not check for can_dig, to allow rotating machines with CLU's in them - -- this is consistent with the previous sonic screwdriver - - local meta1 = minetest.deserialize(itemstack:get_metadata()) - if not meta1 or not meta1.charge or meta1.charge < 100 then - return - end - - minetest.sound_play("technic_sonic_screwdriver", {pos = pos, gain = 0.3, max_hear_distance = 10}) - - -- Set param2 - local rotationPart = node.param2 % 32 -- get first 4 bits - local preservePart = node.param2 - rotationPart - - local axisdir = math.floor(rotationPart / 4) - local rotation = rotationPart - axisdir * 4 - if mode == ROTATE_FACE then - rotationPart = axisdir * 4 + nextrange(rotation, 3) - elseif mode == ROTATE_AXIS then - rotationPart = nextrange(axisdir, 5) * 4 - end - - node.param2 = preservePart + rotationPart - minetest.swap_node(pos, node) - - if not technic.creative_mode then - meta1.charge = meta1.charge - 100 - itemstack:set_metadata(minetest.serialize(meta1)) - technic.set_RE_wear(itemstack, meta1.charge, sonic_screwdriver_max_charge) - end - - return itemstack -end - -minetest.register_tool("technic:sonic_screwdriver", { - description = S("Sonic Screwdriver (left-click rotates face, right-click rotates axis)"), - inventory_image = "technic_sonic_screwdriver.png", - wear_represents = "technic_RE_charge", - on_refill = technic.refill_RE_charge, - on_use = function(itemstack, user, pointed_thing) - screwdriver_handler(itemstack, user, pointed_thing, ROTATE_FACE) - return itemstack - end, - on_place = function(itemstack, user, pointed_thing) - screwdriver_handler(itemstack, user, pointed_thing, ROTATE_AXIS) - return itemstack - end, -}) - -minetest.register_craft({ - output = "technic:sonic_screwdriver", - recipe = { - {"", "default:diamond", ""}, - {"mesecons_materials:fiber", "technic:battery", "mesecons_materials:fiber"}, - {"mesecons_materials:fiber", "moreores:mithril_ingot", "mesecons_materials:fiber"} - } -}) - diff --git a/technic/technic/tools/tree_tap.lua b/technic/technic/tools/tree_tap.lua deleted file mode 100644 index e84fe33..0000000 --- a/technic/technic/tools/tree_tap.lua +++ /dev/null @@ -1,75 +0,0 @@ - -local S = technic.getter -local mesecons_materials = minetest.get_modpath("mesecons_materials") - -minetest.register_tool("technic:treetap", { - description = S("Tree Tap"), - inventory_image = "technic_tree_tap.png", - on_use = function(itemstack, user, pointed_thing) - if pointed_thing.type ~= "node" then - return - end - local pos = pointed_thing.under - if minetest.is_protected(pos, user:get_player_name()) then - minetest.record_protection_violation(pos, user:get_player_name()) - return - end - local node = minetest.get_node(pos) - local node_name = node.name - if node_name ~= "moretrees:rubber_tree_trunk" then - return - end - node.name = "moretrees:rubber_tree_trunk_empty" - minetest.swap_node(pos, node) - minetest.handle_node_drops(pointed_thing.above, {"technic:raw_latex"}, user) - if not technic.creative_mode then - local item_wear = tonumber(itemstack:get_wear()) - item_wear = item_wear + 819 - if item_wear > 65535 then - itemstack:clear() - return itemstack - end - itemstack:set_wear(item_wear) - end - return itemstack - end, -}) - -minetest.register_craft({ - output = "technic:treetap", - recipe = { - {"pipeworks:tube_1", "group:wood", "default:stick"}, - {"", "default:stick", "default:stick"} - }, -}) - -minetest.register_craftitem("technic:raw_latex", { - description = S("Raw Latex"), - inventory_image = "technic_raw_latex.png", -}) - -if mesecons_materials then - minetest.register_craft({ - type = "cooking", - recipe = "technic:raw_latex", - output = "mesecons_materials:glue", - }) -end - -minetest.register_craftitem("technic:rubber", { - description = S("Rubber Fiber"), - inventory_image = "technic_rubber.png", -}) - -minetest.register_abm({ - nodenames = {"moretrees:rubber_tree_trunk_empty"}, - interval = 60, - chance = 15, - action = function(pos, node) - if minetest.find_node_near(pos, (moretrees and moretrees.leafdecay_radius) or 5, {"moretrees:rubber_tree_leaves"}) then - node.name = "moretrees:rubber_tree_trunk" - minetest.swap_node(pos, node) - end - end -}) - diff --git a/technic/technic/tools/vacuum.lua b/technic/technic/tools/vacuum.lua deleted file mode 100644 index f5fac9a..0000000 --- a/technic/technic/tools/vacuum.lua +++ /dev/null @@ -1,61 +0,0 @@ --- Configuration -local vacuum_max_charge = 10000 -- 10000 - Maximum charge of the vacuum cleaner -local vacuum_charge_per_object = 100 -- 100 - Capable of picking up 50 objects -local vacuum_range = 8 -- 8 - Area in which to pick up objects - -local S = technic.getter - -technic.register_power_tool("technic:vacuum", vacuum_max_charge) - -minetest.register_tool("technic:vacuum", { - description = S("Vacuum Cleaner"), - inventory_image = "technic_vacuum.png", - stack_max = 1, - wear_represents = "technic_RE_charge", - on_refill = technic.refill_RE_charge, - on_use = function(itemstack, user, pointed_thing) - local meta = minetest.deserialize(itemstack:get_metadata()) - if not meta or not meta.charge then - return - end - if meta.charge > vacuum_charge_per_object then - minetest.sound_play("vacuumcleaner", { - to_player = user:get_player_name(), - gain = 0.4, - }) - end - local pos = user:getpos() - local inv = user:get_inventory() - for _, object in ipairs(minetest.env:get_objects_inside_radius(pos, vacuum_range)) do - local luaentity = object:get_luaentity() - if not object:is_player() and luaentity and luaentity.name == "__builtin:item" and luaentity.itemstring ~= "" then - if inv and inv:room_for_item("main", ItemStack(luaentity.itemstring)) then - meta.charge = meta.charge - vacuum_charge_per_object - if meta.charge < vacuum_charge_per_object then - return - end - inv:add_item("main", ItemStack(luaentity.itemstring)) - minetest.sound_play("item_drop_pickup", { - to_player = user:get_player_name(), - gain = 0.4, - }) - luaentity.itemstring = "" - object:remove() - end - end - end - - technic.set_RE_wear(itemstack, meta.charge, vacuum_max_charge) - itemstack:set_metadata(minetest.serialize(meta)) - return itemstack - end, -}) - -minetest.register_craft({ - output = 'technic:vacuum', - recipe = { - {'pipeworks:tube_1', 'pipeworks:filter', 'technic:battery'}, - {'pipeworks:tube_1', 'technic:motor', 'technic:battery'}, - {'technic:stainless_steel_ingot', '', ''}, - } -}) diff --git a/technic/technic_chests/README.md b/technic/technic_chests/README.md deleted file mode 100644 index a570346..0000000 --- a/technic/technic_chests/README.md +++ /dev/null @@ -1,24 +0,0 @@ -Technic chests -============== - -License -------- - -Copyright (C) 2012-2014 Maciej Kasatkin (RealBadAngel) - -Technic chests code is licensed under the GNU LGPLv2+. - -Texture licenses: - -VanessaE: (WTFPL) - * technic\_pencil\_icon.png - * technic\_checkmark\_icon.png - * technic\_chest\_overlay\_*.png - * technic\_*\_chest\_lock\_overlay.png - -sdzen (Elise Staudter) modified by VanessaE (CC BY-SA 3.0): - * copper, iron, silver, gold, mithril chest textures 16x16 - -RealBadAngel: (WTFPL) - * Everything else. - diff --git a/technic/technic_chests/common.lua b/technic/technic_chests/common.lua deleted file mode 100644 index 47054f5..0000000 --- a/technic/technic_chests/common.lua +++ /dev/null @@ -1,71 +0,0 @@ - -technic.chests.groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2, - tubedevice=1, tubedevice_receiver=1} -technic.chests.groups_noinv = {snappy=2, choppy=2, oddly_breakable_by_hand=2, - tubedevice=1, tubedevice_receiver=1, not_in_creative_inventory=1} - -technic.chests.tube = { - insert_object = function(pos, node, stack, direction) - local meta = minetest.get_meta(pos) - local inv = meta:get_inventory() - return inv:add_item("main",stack) - end, - can_insert = function(pos, node, stack, direction) - local meta = minetest.get_meta(pos) - local inv = meta:get_inventory() - return inv:room_for_item("main",stack) - end, - input_inventory = "main", - connect_sides = {left=1, right=1, front=1, back=1, top=1, bottom=1}, -} - -technic.chests.can_dig = function(pos, player) - local meta = minetest.get_meta(pos) - local inv = meta:get_inventory() - return inv:is_empty("main") -end - -local function inv_change(pos, count, player) - local meta = minetest.get_meta(pos) - if not has_locked_chest_privilege(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 count -end - -function technic.chests.inv_move(pos, from_list, from_index, to_list, to_index, count, player) - return inv_change(pos, count, player) -end -function technic.chests.inv_put(pos, listname, index, stack, player) - return inv_change(pos, stack:get_count(), player) -end -function technic.chests.inv_take(pos, listname, index, stack, player) - return inv_change(pos, stack:get_count(), player) -end - -function technic.chests.on_inv_move(pos, from_list, from_index, to_list, to_index, count, player) - minetest.log("action", player:get_player_name().. - " moves stuff in chest at " - ..minetest.pos_to_string(pos)) -end - -function technic.chests.on_inv_put(pos, listname, index, stack, player) - minetest.log("action", player:get_player_name().. - " puts stuff in to chest at " - ..minetest.pos_to_string(pos)) -end - -function technic.chests.on_inv_take(pos, listname, index, stack, player) - minetest.log("action", player:get_player_name().. - " takes stuff from chest at " - ..minetest.pos_to_string(pos)) -end - -function has_locked_chest_privilege(meta, player) - return player:get_player_name() == meta:get_string("owner") -end - diff --git a/technic/technic_chests/copper_chest.lua b/technic/technic_chests/copper_chest.lua deleted file mode 100644 index d40284b..0000000 --- a/technic/technic_chests/copper_chest.lua +++ /dev/null @@ -1,46 +0,0 @@ -minetest.register_craft({ - output = 'technic:copper_chest 1', - recipe = { - {'default:copper_ingot','default:copper_ingot','default:copper_ingot'}, - {'default:copper_ingot','technic:iron_chest','default:copper_ingot'}, - {'default:copper_ingot','default:copper_ingot','default:copper_ingot'}, - } -}) - -minetest.register_craft({ - output = 'technic:copper_locked_chest 1', - recipe = { - {'default:copper_ingot','default:copper_ingot','default:copper_ingot'}, - {'default:copper_ingot','technic:iron_locked_chest','default:copper_ingot'}, - {'default:copper_ingot','default:copper_ingot','default:copper_ingot'}, - } -}) - -minetest.register_craft({ - output = 'technic:copper_locked_chest 1', - recipe = { - {'default:steel_ingot'}, - {'technic:copper_chest'}, - } -}) - -technic.chests:register("Copper", { - width = 12, - height = 5, - sort = true, - autosort = true, - infotext = false, - color = false, - locked = false, -}) - -technic.chests:register("Copper", { - width = 12, - height = 5, - sort = true, - autosort = true, - infotext = false, - color = false, - locked = true, -}) - diff --git a/technic/technic_chests/depends.txt b/technic/technic_chests/depends.txt deleted file mode 100644 index b9ca665..0000000 --- a/technic/technic_chests/depends.txt +++ /dev/null @@ -1,4 +0,0 @@ -default -moreores? -pipeworks? -intllib? diff --git a/technic/technic_chests/gold_chest.lua b/technic/technic_chests/gold_chest.lua deleted file mode 100644 index c66b2f6..0000000 --- a/technic/technic_chests/gold_chest.lua +++ /dev/null @@ -1,57 +0,0 @@ - -local material_list -if minetest.get_modpath("moreores") then - material_list = { 'silver' } -else - -- Make the gold chest obtainable for mere mortals (the silver chest is not obtainable) - material_list = { 'copper', 'silver' } -end - -for _, material in ipairs(material_list) do - minetest.register_craft({ - output = 'technic:gold_chest', - recipe = { - {'default:gold_ingot','default:gold_ingot','default:gold_ingot'}, - {'default:gold_ingot',"technic:"..material.."_chest",'default:gold_ingot'}, - {'default:gold_ingot','default:gold_ingot','default:gold_ingot'}, - } - }) - - minetest.register_craft({ - output = 'technic:gold_locked_chest', - recipe = { - {'default:gold_ingot','default:gold_ingot','default:gold_ingot'}, - {'default:gold_ingot',"technic:"..material.."_locked_chest",'default:gold_ingot'}, - {'default:gold_ingot','default:gold_ingot','default:gold_ingot'}, - } - }) -end - -minetest.register_craft({ - output = 'technic:gold_locked_chest', - recipe = { - {'default:steel_ingot'}, - {'technic:gold_chest'}, - } -}) - -technic.chests:register("Gold", { - width = 15, - height = 6, - sort = true, - autosort = true, - infotext = true, - color = true, - locked = false, -}) - -technic.chests:register("Gold", { - width = 15, - height = 6, - sort = true, - autosort = true, - infotext = true, - color = true, - locked = true, -}) - diff --git a/technic/technic_chests/init.lua b/technic/technic_chests/init.lua deleted file mode 100644 index af9e041..0000000 --- a/technic/technic_chests/init.lua +++ /dev/null @@ -1,18 +0,0 @@ --- Minetest 0.4.6 mod: technic_chests --- namespace: technic --- (c) 2012-2013 by RealBadAngel - -local modpath = minetest.get_modpath("technic_chests") - -technic = rawget(_G, "technic") or {} -technic.chests = {} - -dofile(modpath.."/common.lua") -dofile(modpath.."/register.lua") -dofile(modpath.."/wooden_chest.lua") -dofile(modpath.."/iron_chest.lua") -dofile(modpath.."/copper_chest.lua") -dofile(modpath.."/silver_chest.lua") -dofile(modpath.."/gold_chest.lua") -dofile(modpath.."/mithril_chest.lua") - diff --git a/technic/technic_chests/iron_chest.lua b/technic/technic_chests/iron_chest.lua deleted file mode 100644 index 90434bb..0000000 --- a/technic/technic_chests/iron_chest.lua +++ /dev/null @@ -1,53 +0,0 @@ -local cast_iron_ingot -if minetest.get_modpath("technic_worldgen") then - cast_iron_ingot = "technic:cast_iron_ingot" -else - cast_iron_ingot = "default:steel_ingot" -end - -minetest.register_craft({ - output = 'technic:iron_chest 1', - recipe = { - {cast_iron_ingot,cast_iron_ingot,cast_iron_ingot}, - {cast_iron_ingot,'default:chest',cast_iron_ingot}, - {cast_iron_ingot,cast_iron_ingot,cast_iron_ingot}, - } -}) - -minetest.register_craft({ - output = 'technic:iron_locked_chest 1', - recipe = { - {cast_iron_ingot,cast_iron_ingot,cast_iron_ingot}, - {cast_iron_ingot,'default:chest_locked',cast_iron_ingot}, - {cast_iron_ingot,cast_iron_ingot,cast_iron_ingot}, - } -}) - -minetest.register_craft({ - output = 'technic:iron_locked_chest 1', - recipe = { - {'default:steel_ingot'}, - {'technic:iron_chest'}, - } -}) - -technic.chests:register("Iron", { - width = 9, - height = 5, - sort = true, - autosort = false, - infotext = false, - color = false, - locked = false, -}) - -technic.chests:register("Iron", { - width = 9, - height = 5, - sort = true, - autosort = false, - infotext = false, - color = false, - locked = true, -}) - diff --git a/technic/technic_chests/locale/de.txt b/technic/technic_chests/locale/de.txt deleted file mode 100644 index e22d2c2..0000000 --- a/technic/technic_chests/locale/de.txt +++ /dev/null @@ -1,41 +0,0 @@ -# German Translation for technic_chests -# Deutsche Übersetzung von technic_chests -# by Xanthin - -%s Chest = %struhe -%s Locked Chest = Verschlossene %struhe -%s Locked Chest (owned by %s) = Verschlossene %struhe (gehoert %s) -Color Filter: %s = Farbfilter: %s -Edit chest description: = Bearbeite die Beschreibung - -# Colors -Black = Schwarz -Blue = Blau -Brown = Braun -Cyan = Tuerkis -Dark Green = Dunkelgruen -Dark Grey = Dunkelgrau -Green = Gruen -Grey = Grau -Magenta = Magenta -Orange = Orange -Pink = Rosa -Red = Rot -Violet = Violett -White = Weiss -Yellow = Gelb -None = Farblos - -# Materials -Copper = Kupfer -Gold = Gold -Iron = Eisen -Mithril = Mithril -Silver = Silber -Wooden = Holz - -# Sorting -Sort = -Auto-sort is %s = -Off = -On = diff --git a/technic/technic_chests/locale/template.txt b/technic/technic_chests/locale/template.txt deleted file mode 100644 index 4d422b2..0000000 --- a/technic/technic_chests/locale/template.txt +++ /dev/null @@ -1,39 +0,0 @@ -# technic_chests translation template - -%s Chest = -%s Locked Chest = -%s Locked Chest (owned by %s) = -Color Filter: %s = -Edit chest description: = - -# Colors -Black = -Blue = -Brown = -Cyan = -Dark Green = -Dark Grey = -Green = -Grey = -Magenta = -Orange = -Pink = -Red = -Violet = -White = -Yellow = -None = - -# Materials -Copper = -Gold = -Iron = -Mithril = -Silver = -Wooden = - -# Sorting -Sort = -Auto-sort is %s = -Off = -On = diff --git a/technic/technic_chests/locale/tr.txt b/technic/technic_chests/locale/tr.txt deleted file mode 100644 index 6bef5be..0000000 --- a/technic/technic_chests/locale/tr.txt +++ /dev/null @@ -1,41 +0,0 @@ -# Turkish translation -# mahmutelmas06@hotmail.com -# Türkçe çeviri - -%s Chest = %s Sandık -%s Locked Chest = %s Kilitli sandık -%s Locked Chest (owned by %s) = %s Kilitli sandık (Sahibi %s) -Color Filter: %s = Renk süzgeci: %s -Edit chest description: = Sandık bilgilerini düzenle - -# Colors - Renkler -Black = Siyah -Blue = Mavi -Brown = Kahverengi -Cyan = Cam göbeği -Dark Green = Koyu yeşil -Dark Grey = Koyu gri -Green = Yeşil -Grey = Gri -Magenta = Mor -Orange = Turuncu -Pink = Pembe -Red = Kırmızı -Violet = Koyu mor -White = Beyaz -Yellow = Sarı -None = Hiç - -# Materials - Metaryeller -Copper = Bakır -Gold = Altın -Iron = Demir -Mithril = Mithril -Silver = Gümüş -Wooden = Ahşap - -# Sorting - Sıralama -Sort = Sırala -Auto-sort is %s = Otomatik sıralama %s -Off = Kapalı -On = Açık diff --git a/technic/technic_chests/mithril_chest.lua b/technic/technic_chests/mithril_chest.lua deleted file mode 100644 index 909ff9e..0000000 --- a/technic/technic_chests/mithril_chest.lua +++ /dev/null @@ -1,48 +0,0 @@ -if minetest.get_modpath("moreores") then - minetest.register_craft({ - output = 'technic:mithril_chest 1', - recipe = { - {'moreores:mithril_ingot','moreores:mithril_ingot','moreores:mithril_ingot'}, - {'moreores:mithril_ingot','technic:gold_chest','moreores:mithril_ingot'}, - {'moreores:mithril_ingot','moreores:mithril_ingot','moreores:mithril_ingot'}, - } - }) - - minetest.register_craft({ - output = 'technic:mithril_locked_chest 1', - recipe = { - {'moreores:mithril_ingot','moreores:mithril_ingot','moreores:mithril_ingot'}, - {'moreores:mithril_ingot','technic:gold_locked_chest','moreores:mithril_ingot'}, - {'moreores:mithril_ingot','moreores:mithril_ingot','moreores:mithril_ingot'}, - } - }) -end - -minetest.register_craft({ - output = 'technic:mithril_locked_chest 1', - recipe = { - {'default:steel_ingot'}, - {'technic:mithril_chest'}, - } -}) - -technic.chests:register("Mithril", { - width = 15, - height = 6, - sort = true, - autosort = true, - infotext = false, - color = false, - locked = false, -}) - -technic.chests:register("Mithril", { - width = 15, - height = 6, - sort = true, - autosort = true, - infotext = false, - color = false, - locked = true, -}) - diff --git a/technic/technic_chests/register.lua b/technic/technic_chests/register.lua deleted file mode 100644 index 25e4cde..0000000 --- a/technic/technic_chests/register.lua +++ /dev/null @@ -1,303 +0,0 @@ -local S = rawget(_G, "intllib") and intllib.Getter() or function(s) return s end - -local pipeworks = rawget(_G, "pipeworks") -if not minetest.get_modpath("pipeworks") then - -- Pipeworks is not installed. Simulate using a dummy table... - pipeworks = {} - local pipeworks_meta = {} - setmetatable(pipeworks, pipeworks_meta) - local dummy = function() - end - pipeworks_meta.__index = function(table, key) - print("[technic_chests] WARNING: variable or method '"..key.."' not present in dummy pipeworks table - assuming it is a method...") - pipeworks[key] = dummy - return dummy - end - pipeworks.after_place = dummy - pipeworks.after_dig = dummy -end - -local chest_mark_colors = { - {"black", S("Black")}, - {"blue", S("Blue")}, - {"brown", S("Brown")}, - {"cyan", S("Cyan")}, - {"dark_green", S("Dark Green")}, - {"dark_grey", S("Dark Grey")}, - {"green", S("Green")}, - {"grey", S("Grey")}, - {"magenta", S("Magenta")}, - {"orange", S("Orange")}, - {"pink", S("Pink")}, - {"red", S("Red")}, - {"violet", S("Violet")}, - {"white", S("White")}, - {"yellow", S("Yellow")}, -} - - -local function colorid_to_postfix(id) - return chest_mark_colors[id] and "_"..chest_mark_colors[id][1] or "" -end - - -local function get_color_buttons(coleft, lotop) - local buttons_string = "" - for y = 0, 3 do - for x = 0, 3 do - local file_name = "technic_colorbutton"..(y * 4 + x)..".png" - buttons_string = buttons_string.."image_button[" - ..(coleft + 0.1 + x * 0.7)..","..(lotop + 0.1 + y * 0.7) - ..";0.8,0.8;"..file_name..";color_button" - ..(y * 4 + x + 1)..";]" - end - end - return buttons_string -end - - -local function check_color_buttons(pos, meta, chest_name, fields) - for i = 1, 16 do - if fields["color_button"..i] then - local node = minetest.get_node(pos) - node.name = chest_name..colorid_to_postfix(i) - minetest.swap_node(pos, node) - meta:set_string("color", i) - return - end - end -end - -local function set_formspec(pos, data, page) - local meta = minetest.get_meta(pos) - local node = minetest.get_node(pos) - local formspec = data.base_formspec - if data.autosort then - local status = meta:get_int("autosort") - formspec = formspec.."button["..(data.hileft+2)..","..(data.height+1.1)..";3,0.8;autosort_to_"..(1-status)..";"..S("Auto-sort is %s"):format(status == 1 and S("On") or S("Off")).."]" - end - if data.infotext then - local formspec_infotext = minetest.formspec_escape(meta:get_string("infotext")) - if page == "main" then - formspec = formspec.."image_button["..(data.hileft+2.1)..",0.1;0.8,0.8;" - .."technic_pencil_icon.png;edit_infotext;]" - .."label["..(data.hileft+3)..",0;"..formspec_infotext.."]" - elseif page == "edit_infotext" then - formspec = formspec.."image_button["..(data.hileft+2.1)..",0.1;0.8,0.8;" - .."technic_checkmark_icon.png;save_infotext;]" - .."field["..(data.hileft+3.3)..",0.2;4.8,1;" - .."infotext_box;"..S("Edit chest description:")..";" - ..formspec_infotext.."]" - end - end - if data.color then - local colorID = meta:get_int("color") - local colorName - if chest_mark_colors[colorID] then - colorName = chest_mark_colors[colorID][2] - else - colorName = S("None") - end - formspec = formspec.."label["..(data.coleft+0.2)..","..(data.lotop+3)..";"..S("Color Filter: %s"):format(colorName).."]" - end - meta:set_string("formspec", formspec) -end - -local function sort_inventory(inv) - local inlist = inv:get_list("main") - local typecnt = {} - local typekeys = {} - for _, st in ipairs(inlist) do - if not st:is_empty() then - local n = st:get_name() - local w = st:get_wear() - local m = st:get_metadata() - local k = string.format("%s %05d %s", n, w, m) - if not typecnt[k] then - typecnt[k] = { - name = n, - wear = w, - metadata = m, - stack_max = st:get_stack_max(), - count = 0, - } - table.insert(typekeys, k) - end - typecnt[k].count = typecnt[k].count + st:get_count() - end - end - table.sort(typekeys) - local outlist = {} - for _, k in ipairs(typekeys) do - local tc = typecnt[k] - while tc.count > 0 do - local c = math.min(tc.count, tc.stack_max) - table.insert(outlist, ItemStack({ - name = tc.name, - wear = tc.wear, - metadata = tc.metadata, - count = c, - })) - tc.count = tc.count - c - end - end - if #outlist > #inlist then return end - while #outlist < #inlist do - table.insert(outlist, ItemStack(nil)) - end - inv:set_list("main", outlist) -end - -local function get_receive_fields(name, data) - local lname = name:lower() - return function(pos, formname, fields, sender) - local meta = minetest.get_meta(pos) - local page = "main" - if fields.sort or (data.autosort and fields.quit and meta:get_int("autosort") == 1) then - sort_inventory(meta:get_inventory()) - end - if fields.edit_infotext then - page = "edit_infotext" - end - if fields.autosort_to_1 then meta:set_int("autosort", 1) end - if fields.autosort_to_0 then meta:set_int("autosort", 0) end - if fields.infotext_box then - meta:set_string("infotext", fields.infotext_box) - end - if data.color then - -- This sets the node - local nn = "technic:"..lname..(data.locked and "_locked" or "").."_chest" - check_color_buttons(pos, meta, nn, fields) - end - meta:get_inventory():set_size("main", data.width * data.height) - set_formspec(pos, data, page) - end -end - - -function technic.chests:definition(name, data) - local lname = name:lower() - name = S(name) - local d = {} - for k, v in pairs(data) do d[k] = v end - data = d - - data.lowidth = 8 - data.ovwidth = math.max(data.lowidth, data.width) - data.hileft = (data.ovwidth - data.width) / 2 - data.loleft = (data.ovwidth - data.lowidth) / 2 - if data.color then - if data.lowidth + 3 <= data.ovwidth then - data.coleft = data.ovwidth - 3 - if data.loleft + data.lowidth > data.coleft then - data.loleft = data.coleft - data.lowidth - end - else - data.loleft = 0 - data.coleft = data.lowidth - data.ovwidth = data.lowidth + 3 - end - end - data.lotop = data.height + 2 - data.ovheight = data.lotop + 4 - - local locked_after_place = nil - local front = {"technic_"..lname.."_chest_front.png"} - data.base_formspec = "size["..data.ovwidth..","..data.ovheight.."]".. - "label[0,0;"..S("%s Chest"):format(name).."]".. - "list[context;main;"..data.hileft..",1;"..data.width..","..data.height..";]".. - "list[current_player;main;"..data.loleft..","..data.lotop..";8,4;]".. - "background[-0.19,-0.25;"..(data.ovwidth+0.4)..","..(data.ovheight+0.75)..";technic_chest_form_bg.png]".. - "background["..data.hileft..",1;"..data.width..","..data.height..";technic_"..lname.."_chest_inventory.png]".. - "background["..data.loleft..","..data.lotop..";8,4;technic_main_inventory.png]".. - "listring[]" - if data.sort then - data.base_formspec = data.base_formspec.."button["..data.hileft..","..(data.height+1.1)..";1,0.8;sort;"..S("Sort").."]" - end - if data.color then - data.base_formspec = data.base_formspec..get_color_buttons(data.coleft, data.lotop) - end - - if data.locked then - locked_after_place = function(pos, placer) - local meta = minetest.get_meta(pos) - meta:set_string("owner", placer:get_player_name() or "") - meta:set_string("infotext", - S("%s Locked Chest (owned by %s)") - :format(name, meta:get_string("owner"))) - pipeworks.after_place(pos) - end - table.insert(front, "technic_"..lname.."_chest_lock_overlay.png") - else - locked_after_place = pipeworks.after_place - end - - local desc - if data.locked then - desc = S("%s Locked Chest"):format(name) - else - desc = S("%s Chest"):format(name) - end - - local def = { - description = desc, - tiles = {"technic_"..lname.."_chest_top.png", "technic_"..lname.."_chest_top.png", - "technic_"..lname.."_chest_side.png", "technic_"..lname.."_chest_side.png", - "technic_"..lname.."_chest_side.png", table.concat(front, "^")}, - paramtype2 = "facedir", - groups = self.groups, - tube = self.tube, - legacy_facedir_simple = true, - sounds = default.node_sound_wood_defaults(), - after_place_node = locked_after_place, - after_dig_node = pipeworks.after_dig, - - on_construct = function(pos) - local meta = minetest.get_meta(pos) - meta:set_string("infotext", S("%s Chest"):format(name)) - set_formspec(pos, data, "main") - local inv = meta:get_inventory() - inv:set_size("main", data.width * data.height) - end, - can_dig = self.can_dig, - on_receive_fields = get_receive_fields(name, data), - on_metadata_inventory_move = self.on_inv_move, - on_metadata_inventory_put = self.on_inv_put, - on_metadata_inventory_take = self.on_inv_take, - } - if data.locked then - def.allow_metadata_inventory_move = self.inv_move - def.allow_metadata_inventory_put = self.inv_put - def.allow_metadata_inventory_take = self.inv_take - end - return def -end - -function technic.chests:register(name, data) - local def = technic.chests:definition(name, data) - - local nn = "technic:"..name:lower()..(data.locked and "_locked" or "").."_chest" - minetest.register_node(":"..nn, def) - - if data.color then - local mk_front - if string.find(def.tiles[6], "%^") then - mk_front = function (overlay) return def.tiles[6]:gsub("%^", "^"..overlay.."^") end - else - mk_front = function (overlay) return def.tiles[6].."^"..overlay end - end - for i = 1, 15 do - local postfix = colorid_to_postfix(i) - local colordef = {} - for k, v in pairs(def) do - colordef[k] = v - end - colordef.drop = nn - colordef.groups = self.groups_noinv - colordef.tiles = { def.tiles[1], def.tiles[2], def.tiles[3], def.tiles[4], def.tiles[5], mk_front("technic_chest_overlay"..postfix..".png") } - minetest.register_node(":"..nn..postfix, colordef) - end - end - -end - diff --git a/technic/technic_chests/silver_chest.lua b/technic/technic_chests/silver_chest.lua deleted file mode 100644 index c615304..0000000 --- a/technic/technic_chests/silver_chest.lua +++ /dev/null @@ -1,48 +0,0 @@ -if minetest.get_modpath("moreores") then - minetest.register_craft({ - output = 'technic:silver_chest', - recipe = { - {'moreores:silver_ingot','moreores:silver_ingot','moreores:silver_ingot'}, - {'moreores:silver_ingot','technic:copper_chest','moreores:silver_ingot'}, - {'moreores:silver_ingot','moreores:silver_ingot','moreores:silver_ingot'}, - } - }) - - minetest.register_craft({ - output = 'technic:silver_locked_chest', - recipe = { - {'moreores:silver_ingot','moreores:silver_ingot','moreores:silver_ingot'}, - {'moreores:silver_ingot','technic:copper_locked_chest','moreores:silver_ingot'}, - {'moreores:silver_ingot','moreores:silver_ingot','moreores:silver_ingot'}, - } - }) -end - -minetest.register_craft({ - output = 'technic:silver_locked_chest', - recipe = { - {'default:steel_ingot'}, - {'technic:silver_chest'}, - } -}) - -technic.chests:register("Silver", { - width = 12, - height = 6, - sort = true, - autosort = true, - infotext = true, - color = false, - locked = false, -}) - -technic.chests:register("Silver", { - width = 12, - height = 6, - sort = true, - autosort = true, - infotext = true, - color = false, - locked = true, -}) - diff --git a/technic/technic_chests/textures/technic_checkmark_icon.png b/technic/technic_chests/textures/technic_checkmark_icon.png deleted file mode 100644 index 369d294..0000000 Binary files a/technic/technic_chests/textures/technic_checkmark_icon.png and /dev/null differ diff --git a/technic/technic_chests/textures/technic_chest_form_bg.png b/technic/technic_chests/textures/technic_chest_form_bg.png deleted file mode 100644 index 37683f0..0000000 Binary files a/technic/technic_chests/textures/technic_chest_form_bg.png and /dev/null differ diff --git a/technic/technic_chests/textures/technic_chest_overlay_black.png b/technic/technic_chests/textures/technic_chest_overlay_black.png deleted file mode 100644 index fa25304..0000000 Binary files a/technic/technic_chests/textures/technic_chest_overlay_black.png and /dev/null differ diff --git a/technic/technic_chests/textures/technic_chest_overlay_blue.png b/technic/technic_chests/textures/technic_chest_overlay_blue.png deleted file mode 100644 index 512cd4f..0000000 Binary files a/technic/technic_chests/textures/technic_chest_overlay_blue.png and /dev/null differ diff --git a/technic/technic_chests/textures/technic_chest_overlay_brown.png b/technic/technic_chests/textures/technic_chest_overlay_brown.png deleted file mode 100644 index 64c1d55..0000000 Binary files a/technic/technic_chests/textures/technic_chest_overlay_brown.png and /dev/null differ diff --git a/technic/technic_chests/textures/technic_chest_overlay_cyan.png b/technic/technic_chests/textures/technic_chest_overlay_cyan.png deleted file mode 100644 index 46732f4..0000000 Binary files a/technic/technic_chests/textures/technic_chest_overlay_cyan.png and /dev/null differ diff --git a/technic/technic_chests/textures/technic_chest_overlay_dark_green.png b/technic/technic_chests/textures/technic_chest_overlay_dark_green.png deleted file mode 100644 index 941236b..0000000 Binary files a/technic/technic_chests/textures/technic_chest_overlay_dark_green.png and /dev/null differ diff --git a/technic/technic_chests/textures/technic_chest_overlay_dark_grey.png b/technic/technic_chests/textures/technic_chest_overlay_dark_grey.png deleted file mode 100644 index e6b8f77..0000000 Binary files a/technic/technic_chests/textures/technic_chest_overlay_dark_grey.png and /dev/null differ diff --git a/technic/technic_chests/textures/technic_chest_overlay_green.png b/technic/technic_chests/textures/technic_chest_overlay_green.png deleted file mode 100644 index 4b9543f..0000000 Binary files a/technic/technic_chests/textures/technic_chest_overlay_green.png and /dev/null differ diff --git a/technic/technic_chests/textures/technic_chest_overlay_grey.png b/technic/technic_chests/textures/technic_chest_overlay_grey.png deleted file mode 100644 index 8a1c9f0..0000000 Binary files a/technic/technic_chests/textures/technic_chest_overlay_grey.png and /dev/null differ diff --git a/technic/technic_chests/textures/technic_chest_overlay_magenta.png b/technic/technic_chests/textures/technic_chest_overlay_magenta.png deleted file mode 100644 index 75b220d..0000000 Binary files a/technic/technic_chests/textures/technic_chest_overlay_magenta.png and /dev/null differ diff --git a/technic/technic_chests/textures/technic_chest_overlay_orange.png b/technic/technic_chests/textures/technic_chest_overlay_orange.png deleted file mode 100644 index 02c095d..0000000 Binary files a/technic/technic_chests/textures/technic_chest_overlay_orange.png and /dev/null differ diff --git a/technic/technic_chests/textures/technic_chest_overlay_pink.png b/technic/technic_chests/textures/technic_chest_overlay_pink.png deleted file mode 100644 index 0b6ccb4..0000000 Binary files a/technic/technic_chests/textures/technic_chest_overlay_pink.png and /dev/null differ diff --git a/technic/technic_chests/textures/technic_chest_overlay_red.png b/technic/technic_chests/textures/technic_chest_overlay_red.png deleted file mode 100644 index 4b44642..0000000 Binary files a/technic/technic_chests/textures/technic_chest_overlay_red.png and /dev/null differ diff --git a/technic/technic_chests/textures/technic_chest_overlay_violet.png b/technic/technic_chests/textures/technic_chest_overlay_violet.png deleted file mode 100644 index 89471f9..0000000 Binary files a/technic/technic_chests/textures/technic_chest_overlay_violet.png and /dev/null differ diff --git a/technic/technic_chests/textures/technic_chest_overlay_white.png b/technic/technic_chests/textures/technic_chest_overlay_white.png deleted file mode 100644 index b49e253..0000000 Binary files a/technic/technic_chests/textures/technic_chest_overlay_white.png and /dev/null differ diff --git a/technic/technic_chests/textures/technic_chest_overlay_yellow.png b/technic/technic_chests/textures/technic_chest_overlay_yellow.png deleted file mode 100644 index d563257..0000000 Binary files a/technic/technic_chests/textures/technic_chest_overlay_yellow.png and /dev/null differ diff --git a/technic/technic_chests/textures/technic_colorbutton0.png b/technic/technic_chests/textures/technic_colorbutton0.png deleted file mode 100644 index 35b7db2..0000000 Binary files a/technic/technic_chests/textures/technic_colorbutton0.png and /dev/null differ diff --git a/technic/technic_chests/textures/technic_colorbutton1.png b/technic/technic_chests/textures/technic_colorbutton1.png deleted file mode 100644 index cbf095d..0000000 Binary files a/technic/technic_chests/textures/technic_colorbutton1.png and /dev/null differ diff --git a/technic/technic_chests/textures/technic_colorbutton10.png b/technic/technic_chests/textures/technic_colorbutton10.png deleted file mode 100644 index 8dfc5f0..0000000 Binary files a/technic/technic_chests/textures/technic_colorbutton10.png and /dev/null differ diff --git a/technic/technic_chests/textures/technic_colorbutton11.png b/technic/technic_chests/textures/technic_colorbutton11.png deleted file mode 100644 index 3b279e0..0000000 Binary files a/technic/technic_chests/textures/technic_colorbutton11.png and /dev/null differ diff --git a/technic/technic_chests/textures/technic_colorbutton12.png b/technic/technic_chests/textures/technic_colorbutton12.png deleted file mode 100644 index a387b5f..0000000 Binary files a/technic/technic_chests/textures/technic_colorbutton12.png and /dev/null differ diff --git a/technic/technic_chests/textures/technic_colorbutton13.png b/technic/technic_chests/textures/technic_colorbutton13.png deleted file mode 100644 index b1e7790..0000000 Binary files a/technic/technic_chests/textures/technic_colorbutton13.png and /dev/null differ diff --git a/technic/technic_chests/textures/technic_colorbutton14.png b/technic/technic_chests/textures/technic_colorbutton14.png deleted file mode 100644 index c4ad486..0000000 Binary files a/technic/technic_chests/textures/technic_colorbutton14.png and /dev/null differ diff --git a/technic/technic_chests/textures/technic_colorbutton15.png b/technic/technic_chests/textures/technic_colorbutton15.png deleted file mode 100644 index b7060d6..0000000 Binary files a/technic/technic_chests/textures/technic_colorbutton15.png and /dev/null differ diff --git a/technic/technic_chests/textures/technic_colorbutton2.png b/technic/technic_chests/textures/technic_colorbutton2.png deleted file mode 100644 index caf1fc6..0000000 Binary files a/technic/technic_chests/textures/technic_colorbutton2.png and /dev/null differ diff --git a/technic/technic_chests/textures/technic_colorbutton3.png b/technic/technic_chests/textures/technic_colorbutton3.png deleted file mode 100644 index 6ac79a3..0000000 Binary files a/technic/technic_chests/textures/technic_colorbutton3.png and /dev/null differ diff --git a/technic/technic_chests/textures/technic_colorbutton4.png b/technic/technic_chests/textures/technic_colorbutton4.png deleted file mode 100644 index dc43592..0000000 Binary files a/technic/technic_chests/textures/technic_colorbutton4.png and /dev/null differ diff --git a/technic/technic_chests/textures/technic_colorbutton5.png b/technic/technic_chests/textures/technic_colorbutton5.png deleted file mode 100644 index 98b8c67..0000000 Binary files a/technic/technic_chests/textures/technic_colorbutton5.png and /dev/null differ diff --git a/technic/technic_chests/textures/technic_colorbutton6.png b/technic/technic_chests/textures/technic_colorbutton6.png deleted file mode 100644 index 66478bc..0000000 Binary files a/technic/technic_chests/textures/technic_colorbutton6.png and /dev/null differ diff --git a/technic/technic_chests/textures/technic_colorbutton7.png b/technic/technic_chests/textures/technic_colorbutton7.png deleted file mode 100644 index 85f6b93..0000000 Binary files a/technic/technic_chests/textures/technic_colorbutton7.png and /dev/null differ diff --git a/technic/technic_chests/textures/technic_colorbutton8.png b/technic/technic_chests/textures/technic_colorbutton8.png deleted file mode 100644 index 868c35d..0000000 Binary files a/technic/technic_chests/textures/technic_colorbutton8.png and /dev/null differ diff --git a/technic/technic_chests/textures/technic_colorbutton9.png b/technic/technic_chests/textures/technic_colorbutton9.png deleted file mode 100644 index 50eac0b..0000000 Binary files a/technic/technic_chests/textures/technic_colorbutton9.png and /dev/null differ diff --git a/technic/technic_chests/textures/technic_copper_chest_front.png b/technic/technic_chests/textures/technic_copper_chest_front.png deleted file mode 100644 index add51e8..0000000 Binary files a/technic/technic_chests/textures/technic_copper_chest_front.png and /dev/null differ diff --git a/technic/technic_chests/textures/technic_copper_chest_inventory.png b/technic/technic_chests/textures/technic_copper_chest_inventory.png deleted file mode 100644 index 70da510..0000000 Binary files a/technic/technic_chests/textures/technic_copper_chest_inventory.png and /dev/null differ diff --git a/technic/technic_chests/textures/technic_copper_chest_lock_overlay.png b/technic/technic_chests/textures/technic_copper_chest_lock_overlay.png deleted file mode 100644 index 49f7f2a..0000000 Binary files a/technic/technic_chests/textures/technic_copper_chest_lock_overlay.png and /dev/null differ diff --git a/technic/technic_chests/textures/technic_copper_chest_side.png b/technic/technic_chests/textures/technic_copper_chest_side.png deleted file mode 100644 index 2231cce..0000000 Binary files a/technic/technic_chests/textures/technic_copper_chest_side.png and /dev/null differ diff --git a/technic/technic_chests/textures/technic_copper_chest_top.png b/technic/technic_chests/textures/technic_copper_chest_top.png deleted file mode 100644 index 69f1078..0000000 Binary files a/technic/technic_chests/textures/technic_copper_chest_top.png and /dev/null differ diff --git a/technic/technic_chests/textures/technic_form_bg.png b/technic/technic_chests/textures/technic_form_bg.png deleted file mode 100644 index 37683f0..0000000 Binary files a/technic/technic_chests/textures/technic_form_bg.png and /dev/null differ diff --git a/technic/technic_chests/textures/technic_gold_chest_front.png b/technic/technic_chests/textures/technic_gold_chest_front.png deleted file mode 100644 index 27036d7..0000000 Binary files a/technic/technic_chests/textures/technic_gold_chest_front.png and /dev/null differ diff --git a/technic/technic_chests/textures/technic_gold_chest_inventory.png b/technic/technic_chests/textures/technic_gold_chest_inventory.png deleted file mode 100644 index d4aa8b3..0000000 Binary files a/technic/technic_chests/textures/technic_gold_chest_inventory.png and /dev/null differ diff --git a/technic/technic_chests/textures/technic_gold_chest_lock_overlay.png b/technic/technic_chests/textures/technic_gold_chest_lock_overlay.png deleted file mode 100644 index 51dea71..0000000 Binary files a/technic/technic_chests/textures/technic_gold_chest_lock_overlay.png and /dev/null differ diff --git a/technic/technic_chests/textures/technic_gold_chest_side.png b/technic/technic_chests/textures/technic_gold_chest_side.png deleted file mode 100644 index 9a0de39..0000000 Binary files a/technic/technic_chests/textures/technic_gold_chest_side.png and /dev/null differ diff --git a/technic/technic_chests/textures/technic_gold_chest_top.png b/technic/technic_chests/textures/technic_gold_chest_top.png deleted file mode 100644 index abfc081..0000000 Binary files a/technic/technic_chests/textures/technic_gold_chest_top.png and /dev/null differ diff --git a/technic/technic_chests/textures/technic_iron_chest_front.png b/technic/technic_chests/textures/technic_iron_chest_front.png deleted file mode 100644 index 8c00473..0000000 Binary files a/technic/technic_chests/textures/technic_iron_chest_front.png and /dev/null differ diff --git a/technic/technic_chests/textures/technic_iron_chest_inventory.png b/technic/technic_chests/textures/technic_iron_chest_inventory.png deleted file mode 100644 index a33967b..0000000 Binary files a/technic/technic_chests/textures/technic_iron_chest_inventory.png and /dev/null differ diff --git a/technic/technic_chests/textures/technic_iron_chest_lock_overlay.png b/technic/technic_chests/textures/technic_iron_chest_lock_overlay.png deleted file mode 100644 index 1750b82..0000000 Binary files a/technic/technic_chests/textures/technic_iron_chest_lock_overlay.png and /dev/null differ diff --git a/technic/technic_chests/textures/technic_iron_chest_side.png b/technic/technic_chests/textures/technic_iron_chest_side.png deleted file mode 100644 index 7233688..0000000 Binary files a/technic/technic_chests/textures/technic_iron_chest_side.png and /dev/null differ diff --git a/technic/technic_chests/textures/technic_iron_chest_top.png b/technic/technic_chests/textures/technic_iron_chest_top.png deleted file mode 100644 index 48d2437..0000000 Binary files a/technic/technic_chests/textures/technic_iron_chest_top.png and /dev/null differ diff --git a/technic/technic_chests/textures/technic_main_inventory.png b/technic/technic_chests/textures/technic_main_inventory.png deleted file mode 100644 index b65dabb..0000000 Binary files a/technic/technic_chests/textures/technic_main_inventory.png and /dev/null differ diff --git a/technic/technic_chests/textures/technic_mithril_chest_front.png b/technic/technic_chests/textures/technic_mithril_chest_front.png deleted file mode 100644 index f0e0c23..0000000 Binary files a/technic/technic_chests/textures/technic_mithril_chest_front.png and /dev/null differ diff --git a/technic/technic_chests/textures/technic_mithril_chest_inventory.png b/technic/technic_chests/textures/technic_mithril_chest_inventory.png deleted file mode 100644 index d4aa8b3..0000000 Binary files a/technic/technic_chests/textures/technic_mithril_chest_inventory.png and /dev/null differ diff --git a/technic/technic_chests/textures/technic_mithril_chest_lock_overlay.png b/technic/technic_chests/textures/technic_mithril_chest_lock_overlay.png deleted file mode 100644 index d227c51..0000000 Binary files a/technic/technic_chests/textures/technic_mithril_chest_lock_overlay.png and /dev/null differ diff --git a/technic/technic_chests/textures/technic_mithril_chest_side.png b/technic/technic_chests/textures/technic_mithril_chest_side.png deleted file mode 100644 index 1c2c3a7..0000000 Binary files a/technic/technic_chests/textures/technic_mithril_chest_side.png and /dev/null differ diff --git a/technic/technic_chests/textures/technic_mithril_chest_top.png b/technic/technic_chests/textures/technic_mithril_chest_top.png deleted file mode 100644 index e196baf..0000000 Binary files a/technic/technic_chests/textures/technic_mithril_chest_top.png and /dev/null differ diff --git a/technic/technic_chests/textures/technic_pencil_icon.png b/technic/technic_chests/textures/technic_pencil_icon.png deleted file mode 100644 index 8079ede..0000000 Binary files a/technic/technic_chests/textures/technic_pencil_icon.png and /dev/null differ diff --git a/technic/technic_chests/textures/technic_silver_chest_front.png b/technic/technic_chests/textures/technic_silver_chest_front.png deleted file mode 100644 index 5ae5831..0000000 Binary files a/technic/technic_chests/textures/technic_silver_chest_front.png and /dev/null differ diff --git a/technic/technic_chests/textures/technic_silver_chest_inventory.png b/technic/technic_chests/textures/technic_silver_chest_inventory.png deleted file mode 100644 index b2fe835..0000000 Binary files a/technic/technic_chests/textures/technic_silver_chest_inventory.png and /dev/null differ diff --git a/technic/technic_chests/textures/technic_silver_chest_lock_overlay.png b/technic/technic_chests/textures/technic_silver_chest_lock_overlay.png deleted file mode 100644 index cb1bdb0..0000000 Binary files a/technic/technic_chests/textures/technic_silver_chest_lock_overlay.png and /dev/null differ diff --git a/technic/technic_chests/textures/technic_silver_chest_side.png b/technic/technic_chests/textures/technic_silver_chest_side.png deleted file mode 100644 index 4b4ce54..0000000 Binary files a/technic/technic_chests/textures/technic_silver_chest_side.png and /dev/null differ diff --git a/technic/technic_chests/textures/technic_silver_chest_top.png b/technic/technic_chests/textures/technic_silver_chest_top.png deleted file mode 100644 index 79196d6..0000000 Binary files a/technic/technic_chests/textures/technic_silver_chest_top.png and /dev/null differ diff --git a/technic/technic_chests/textures/technic_wooden_chest_inventory.png b/technic/technic_chests/textures/technic_wooden_chest_inventory.png deleted file mode 100644 index 5ffbc12..0000000 Binary files a/technic/technic_chests/textures/technic_wooden_chest_inventory.png and /dev/null differ diff --git a/technic/technic_chests/textures/x32/technic_copper_chest_front.png b/technic/technic_chests/textures/x32/technic_copper_chest_front.png deleted file mode 100644 index 1769435..0000000 Binary files a/technic/technic_chests/textures/x32/technic_copper_chest_front.png and /dev/null differ diff --git a/technic/technic_chests/textures/x32/technic_copper_chest_side.png b/technic/technic_chests/textures/x32/technic_copper_chest_side.png deleted file mode 100644 index 2c7943f..0000000 Binary files a/technic/technic_chests/textures/x32/technic_copper_chest_side.png and /dev/null differ diff --git a/technic/technic_chests/textures/x32/technic_copper_chest_top.png b/technic/technic_chests/textures/x32/technic_copper_chest_top.png deleted file mode 100644 index 2ab8104..0000000 Binary files a/technic/technic_chests/textures/x32/technic_copper_chest_top.png and /dev/null differ diff --git a/technic/technic_chests/textures/x32/technic_gold_chest_front.png b/technic/technic_chests/textures/x32/technic_gold_chest_front.png deleted file mode 100644 index 9bc9615..0000000 Binary files a/technic/technic_chests/textures/x32/technic_gold_chest_front.png and /dev/null differ diff --git a/technic/technic_chests/textures/x32/technic_gold_chest_side.png b/technic/technic_chests/textures/x32/technic_gold_chest_side.png deleted file mode 100644 index 5d5ad0f..0000000 Binary files a/technic/technic_chests/textures/x32/technic_gold_chest_side.png and /dev/null differ diff --git a/technic/technic_chests/textures/x32/technic_gold_chest_top.png b/technic/technic_chests/textures/x32/technic_gold_chest_top.png deleted file mode 100644 index f9c8fec..0000000 Binary files a/technic/technic_chests/textures/x32/technic_gold_chest_top.png and /dev/null differ diff --git a/technic/technic_chests/textures/x32/technic_iron_chest_front.png b/technic/technic_chests/textures/x32/technic_iron_chest_front.png deleted file mode 100644 index 79d5b49..0000000 Binary files a/technic/technic_chests/textures/x32/technic_iron_chest_front.png and /dev/null differ diff --git a/technic/technic_chests/textures/x32/technic_iron_chest_side.png b/technic/technic_chests/textures/x32/technic_iron_chest_side.png deleted file mode 100644 index e12daa5..0000000 Binary files a/technic/technic_chests/textures/x32/technic_iron_chest_side.png and /dev/null differ diff --git a/technic/technic_chests/textures/x32/technic_iron_chest_top.png b/technic/technic_chests/textures/x32/technic_iron_chest_top.png deleted file mode 100644 index da1ab7b..0000000 Binary files a/technic/technic_chests/textures/x32/technic_iron_chest_top.png and /dev/null differ diff --git a/technic/technic_chests/textures/x32/technic_mithril_chest_front.png b/technic/technic_chests/textures/x32/technic_mithril_chest_front.png deleted file mode 100644 index 9f7ca7e..0000000 Binary files a/technic/technic_chests/textures/x32/technic_mithril_chest_front.png and /dev/null differ diff --git a/technic/technic_chests/textures/x32/technic_mithril_chest_side.png b/technic/technic_chests/textures/x32/technic_mithril_chest_side.png deleted file mode 100644 index 0763511..0000000 Binary files a/technic/technic_chests/textures/x32/technic_mithril_chest_side.png and /dev/null differ diff --git a/technic/technic_chests/textures/x32/technic_mithril_chest_top.png b/technic/technic_chests/textures/x32/technic_mithril_chest_top.png deleted file mode 100644 index 2429576..0000000 Binary files a/technic/technic_chests/textures/x32/technic_mithril_chest_top.png and /dev/null differ diff --git a/technic/technic_chests/textures/x32/technic_silver_chest_front.png b/technic/technic_chests/textures/x32/technic_silver_chest_front.png deleted file mode 100644 index fe5ce2c..0000000 Binary files a/technic/technic_chests/textures/x32/technic_silver_chest_front.png and /dev/null differ diff --git a/technic/technic_chests/textures/x32/technic_silver_chest_side.png b/technic/technic_chests/textures/x32/technic_silver_chest_side.png deleted file mode 100644 index 3a2ed4a..0000000 Binary files a/technic/technic_chests/textures/x32/technic_silver_chest_side.png and /dev/null differ diff --git a/technic/technic_chests/textures/x32/technic_silver_chest_top.png b/technic/technic_chests/textures/x32/technic_silver_chest_top.png deleted file mode 100644 index 353a11c..0000000 Binary files a/technic/technic_chests/textures/x32/technic_silver_chest_top.png and /dev/null differ diff --git a/technic/technic_chests/wooden_chest.lua b/technic/technic_chests/wooden_chest.lua deleted file mode 100644 index 0fad12c..0000000 --- a/technic/technic_chests/wooden_chest.lua +++ /dev/null @@ -1,51 +0,0 @@ -local udef = technic.chests:definition("Wooden", { - width = 8, - height = 4, - sort = false, - autosort = false, - infotext = false, - color = false, - locked = false, -}) -local uudef = { - groups = udef.groups, - tube = udef.tube, - on_construct = udef.on_construct, - can_dig = udef.can_dig, - on_receive_fields = udef.on_receive_fields, - on_metadata_inventory_move = udef.on_metadata_inventory_move, - on_metadata_inventory_put = udef.on_metadata_inventory_put, - on_metadata_inventory_take = udef.on_metadata_inventory_take, -} -if minetest.registered_nodes["default:chest"].description == "Chest" then - uudef.description = udef.description -end -minetest.override_item("default:chest", uudef) - -local ldef = technic.chests:definition("Wooden", { - width = 8, - height = 4, - sort = false, - autosort = false, - infotext = false, - color = false, - locked = true, -}) -local lldef = { - groups = ldef.groups, - tube = ldef.tube, - after_place_node = ldef.after_place_node, - on_construct = ldef.on_construct, - can_dig = ldef.can_dig, - on_receive_fields = ldef.on_receive_fields, - allow_metadata_inventory_move = ldef.allow_metadata_inventory_move, - allow_metadata_inventory_put = ldef.allow_metadata_inventory_put, - allow_metadata_inventory_take = ldef.allow_metadata_inventory_take, - on_metadata_inventory_move = ldef.on_metadata_inventory_move, - on_metadata_inventory_put = ldef.on_metadata_inventory_put, - on_metadata_inventory_take = ldef.on_metadata_inventory_take, -} -if minetest.registered_nodes["default:chest_locked"].description == "Locked Chest" then - lldef.description = ldef.description -end -minetest.override_item("default:chest_locked", lldef) diff --git a/technic/technic_worldgen/config.lua b/technic/technic_worldgen/config.lua deleted file mode 100644 index 4ac748c..0000000 --- a/technic/technic_worldgen/config.lua +++ /dev/null @@ -1,15 +0,0 @@ -technic.config = technic.config or Settings(minetest.get_worldpath().."/technic.conf") - -local conf_table = technic.config:to_table() - -local defaults = { - enable_granite_generation = "true", - enable_marble_generation = "true", - enable_rubber_tree_generation = "true", -} - -for k, v in pairs(defaults) do - if conf_table[k] == nil then - technic.config:set(k, v) - end -end diff --git a/technic/technic_worldgen/crafts.lua b/technic/technic_worldgen/crafts.lua deleted file mode 100644 index fba9df9..0000000 --- a/technic/technic_worldgen/crafts.lua +++ /dev/null @@ -1,198 +0,0 @@ - -local S = technic.worldgen.gettext - -minetest.register_craftitem(":technic:uranium_lump", { - description = S("Uranium Lump"), - inventory_image = "technic_uranium_lump.png", -}) -minetest.register_alias("technic:uranium", "technic:uranium_lump") - -minetest.register_craftitem(":technic:uranium_ingot", { - description = S("Uranium Ingot"), - inventory_image = "technic_uranium_ingot.png", - groups = {uranium_ingot=1}, -}) - -minetest.register_craftitem(":technic:chromium_lump", { - description = S("Chromium Lump"), - inventory_image = "technic_chromium_lump.png", -}) - -minetest.register_craftitem(":technic:chromium_ingot", { - description = S("Chromium Ingot"), - inventory_image = "technic_chromium_ingot.png", -}) - -minetest.register_craftitem(":technic:zinc_lump", { - description = S("Zinc Lump"), - inventory_image = "technic_zinc_lump.png", -}) - -minetest.register_craftitem(":technic:zinc_ingot", { - description = S("Zinc Ingot"), - inventory_image = "technic_zinc_ingot.png", -}) - -minetest.register_craftitem(":technic:lead_lump", { - description = S("Lead Lump"), - inventory_image = "technic_lead_lump.png", -}) - -minetest.register_craftitem(":technic:lead_ingot", { - description = S("Lead Ingot"), - inventory_image = "technic_lead_ingot.png", -}) - -minetest.register_craftitem(":technic:sulfur_lump", { - description = S("Sulfur Lump"), - inventory_image = "technic_sulfur_lump.png", -}) - -minetest.register_craftitem(":technic:brass_ingot", { - description = S("Brass Ingot"), - inventory_image = "technic_brass_ingot.png", -}) - -minetest.register_alias("technic:wrought_iron_ingot", "default:steel_ingot") - -minetest.override_item("default:steel_ingot", { - description = S("Wrought Iron Ingot"), - inventory_image = "technic_wrought_iron_ingot.png", -}) - -minetest.register_craftitem(":technic:cast_iron_ingot", { - description = S("Cast Iron Ingot"), - inventory_image = "technic_cast_iron_ingot.png", -}) - -minetest.register_craftitem(":technic:carbon_steel_ingot", { - description = S("Carbon Steel Ingot"), - inventory_image = "technic_carbon_steel_ingot.png", -}) - -minetest.register_craftitem(":technic:stainless_steel_ingot", { - description = S("Stainless Steel Ingot"), - inventory_image = "technic_stainless_steel_ingot.png", -}) - -local function register_block(block, ingot) - minetest.register_craft({ - output = block, - recipe = { - {ingot, ingot, ingot}, - {ingot, ingot, ingot}, - {ingot, ingot, ingot}, - } - }) - - minetest.register_craft({ - output = ingot.." 9", - recipe = { - {block} - } - }) -end - -register_block("technic:uranium_block", "technic:uranium_ingot") -register_block("technic:chromium_block", "technic:chromium_ingot") -register_block("technic:zinc_block", "technic:zinc_ingot") -register_block("technic:lead_block", "technic:lead_ingot") -register_block("technic:brass_block", "technic:brass_ingot") -register_block("technic:cast_iron_block", "technic:cast_iron_ingot") -register_block("technic:carbon_steel_block", "technic:carbon_steel_ingot") -register_block("technic:stainless_steel_block", "technic:stainless_steel_ingot") - -minetest.register_craft({ - type = 'cooking', - recipe = "technic:zinc_lump", - output = "technic:zinc_ingot", -}) - -minetest.register_craft({ - type = 'cooking', - recipe = "technic:chromium_lump", - output = "technic:chromium_ingot", -}) - -minetest.register_craft({ - type = 'cooking', - recipe = "technic:uranium_lump", - output = "technic:uranium_ingot", -}) - -minetest.register_craft({ - type = 'cooking', - recipe = "technic:lead_lump", - output = "technic:lead_ingot", -}) - - -minetest.register_craft({ - type = 'cooking', - recipe = minetest.registered_aliases["technic:wrought_iron_ingot"], - output = "technic:cast_iron_ingot", -}) - -minetest.register_craft({ - type = 'cooking', - recipe = "technic:cast_iron_ingot", - cooktime = 2, - output = "technic:wrought_iron_ingot", -}) - -minetest.register_craft({ - type = 'cooking', - recipe = "technic:carbon_steel_ingot", - cooktime = 2, - output = "technic:wrought_iron_ingot", -}) - -local function for_each_registered_item(action) - local already_reg = {} - for k, _ in pairs(minetest.registered_items) do - table.insert(already_reg, k) - end - local really_register_craftitem = minetest.register_craftitem - minetest.register_craftitem = function(name, def) - really_register_craftitem(name, def) - action(string.gsub(name, "^:", "")) - end - local really_register_tool = minetest.register_tool - minetest.register_tool = function(name, def) - really_register_tool(name, def) - action(string.gsub(name, "^:", "")) - end - local really_register_node = minetest.register_node - minetest.register_node = function(name, def) - really_register_node(name, def) - action(string.gsub(name, "^:", "")) - end - for _, name in ipairs(already_reg) do - action(name) - end -end - -local steel_to_iron = {} -for _, i in ipairs({ - "default:axe_steel", - "default:pick_steel", - "default:shovel_steel", - "default:sword_steel", - "doors:door_steel", - "farming:hoe_steel", - "glooptest:hammer_steel", - "glooptest:handsaw_steel", - "glooptest:reinforced_crystal_glass", - "mesecons_doors:op_door_steel", - "mesecons_doors:sig_door_steel", - "vessels:steel_bottle", -}) do - steel_to_iron[i] = true -end - -for_each_registered_item(function(item_name) - local item_def = minetest.registered_items[item_name] - if steel_to_iron[item_name] and string.find(item_def.description, "Steel") then - minetest.override_item(item_name, { description = string.gsub(item_def.description, "Steel", S("Iron")) }) - end -end) diff --git a/technic/technic_worldgen/depends.txt b/technic/technic_worldgen/depends.txt deleted file mode 100644 index ac858d0..0000000 --- a/technic/technic_worldgen/depends.txt +++ /dev/null @@ -1,3 +0,0 @@ -default -intllib? -mg? diff --git a/technic/technic_worldgen/init.lua b/technic/technic_worldgen/init.lua deleted file mode 100644 index 2f36920..0000000 --- a/technic/technic_worldgen/init.lua +++ /dev/null @@ -1,26 +0,0 @@ -local modpath = minetest.get_modpath("technic_worldgen") - -technic = rawget(_G, "technic") or {} -technic.worldgen = { - gettext = rawget(_G, "intllib") and intllib.Getter() or function(s) return s end, -} - -dofile(modpath.."/config.lua") -dofile(modpath.."/nodes.lua") -dofile(modpath.."/oregen.lua") -dofile(modpath.."/crafts.lua") - --- Rubber trees, moretrees also supplies these -if not minetest.get_modpath("moretrees") then - dofile(modpath.."/rubber.lua") -else - -- older versions of technic provided rubber trees regardless - minetest.register_alias("technic:rubber_sapling", "moretrees:rubber_tree_sapling") - minetest.register_alias("technic:rubber_tree_empty", "moretrees:rubber_tree_trunk_empty") -end - --- mg suppport -if minetest.get_modpath("mg") then - dofile(modpath.."/mg.lua") -end - diff --git a/technic/technic_worldgen/locale/de.txt b/technic/technic_worldgen/locale/de.txt deleted file mode 100644 index 401c94c..0000000 --- a/technic/technic_worldgen/locale/de.txt +++ /dev/null @@ -1,39 +0,0 @@ -# German Translation for technic_worldgen -# Deutsche Übersetzung von technic_worldgen -# by Xanthin - -## crafts.lua -Uranium Lump = Uranklumpen -Uranium Ingot = Uranbarren -Chromium Lump = Chromklumpen -Chromium Ingot = Chrombarren -Zinc Lump = Zinkklumpen -Zinc Ingot = Zinkbarren -Brass Ingot = Messingbarren -Wrought Iron Ingot = Schmiedeeisenbarren -Cast Iron Ingot = Gusseisenbarren -Carbon Steel Ingot = Kohlenstoffstahlbarren -Stainless Steel Ingot = Edelstahlbarren -Iron = Eisen - -## nodes.lua -Uranium Ore = Uranerz -Chromium Ore = Chromerz -Zinc Ore = Zinkerz -Granite = Granit -Marble = Marmor -Marble Bricks = Marmorziegel -Uranium Block = Uranblock -Chromium Block = Chromblock -Zinc Block = Zinkblock -Wrought Iron Block = Schmiedeeisenblock -Cast Iron Block = Gusseisenblock -Carbon Steel Block = Kohlenstoffstahlblock -Stainless Steel Block = Edelstahlblock -Brass Block = Messingblock -Wrought Iron = Schmiedeeisen - -## rubber.lua -Rubber Tree Sapling = Gummibaumsetzling -Rubber Tree = Gummibaum - diff --git a/technic/technic_worldgen/locale/template.txt b/technic/technic_worldgen/locale/template.txt deleted file mode 100644 index 594e0ce..0000000 --- a/technic/technic_worldgen/locale/template.txt +++ /dev/null @@ -1,37 +0,0 @@ -# template.txt -# technic_worldgen translation template - -###crafts.lua -Uranium Lump = -Uranium Ingot = -Chromium Lump = -Chromium Ingot = -Zinc Lump = -Zinc Ingot = -Brass Ingot = -Wrought Iron Ingot = -Cast Iron Ingot = -Carbon Steel Ingot = -Stainless Steel Ingot = -Iron = - -###nodes.lua -Uranium Ore = -Chromium Ore = -Zinc Ore = -Granite = -Marble = -Marble Bricks = -Uranium Block = -Chromium Block = -Zinc Block = -Wrought Iron Block = -Cast Iron Block = -Carbon Steel Block = -Stainless Steel Block = -Brass Block = -Wrought Iron = - -###rubber.lua -Rubber Tree Sapling = -Rubber Tree = diff --git a/technic/technic_worldgen/locale/tr.txt b/technic/technic_worldgen/locale/tr.txt deleted file mode 100644 index a04597f..0000000 --- a/technic/technic_worldgen/locale/tr.txt +++ /dev/null @@ -1,38 +0,0 @@ -# Turkish translation -# mahmutelmas06@hotmail.com -# Türkçe çeviri - -###crafts.lua -Uranium Lump = Uranyum yığını -Uranium Ingot = Uranyum külçesi -Chromium Lump = Krom yığını -Chromium Ingot = Krom külçesi -Zinc Lump = Çinko yığını -Zinc Ingot = Çünko külçesi -Brass Ingot = Pirinç yığını -Wrought Iron Ingot = İşlenmiş demir yığını -Cast Iron Ingot = Döküm demir yığını -Carbon Steel Ingot = Karbon çelik külçe -Stainless Steel Ingot =Paslanmaz çelik külçe -Iron = Demir - -###nodes.lua -Uranium Ore = Uranyum madeni -Chromium Ore = Krom madeni -Zinc Ore = Çinko madeni -Granite = Granit -Marble = Mermer -Marble Bricks = Mermer tuğla -Uranium Block = Uranyum blok -Chromium Block = Karbon blok -Zinc Block = Çinko blok -Wrought Iron Block = İşlenmiş demir blok -Cast Iron Block = Döküm demir blok -Carbon Steel Block = Karbon çelik blok -Stainless Steel Block = Paslanmaz çelik blok -Brass Block = Pirinç blok -Wrought Iron = İşlenmiş demir - -###rubber.lua -Rubber Tree Sapling = Kauçuk ağacı fidanı -Rubber Tree = Kauçuk ağacı diff --git a/technic/technic_worldgen/mg.lua b/technic/technic_worldgen/mg.lua deleted file mode 100644 index 4025384..0000000 --- a/technic/technic_worldgen/mg.lua +++ /dev/null @@ -1,90 +0,0 @@ -mg.register_ore({ - name = "technic:mineral_uranium", - wherein = "default:stone", - seeddiff = 11, - maxvdistance = 10.5, - maxheight = -80, - minheight = -300, - sizen = 20, - sizedev = 10, - seglenghtn = 3, - seglenghtdev = 1, - segincln = 0.4, - segincldev = 0.6, - turnangle = 57, - numperblock = 1, - fork_chance = 0 -}) - -mg.register_ore({ - name = "technic:mineral_chromium", - wherein = "default:stone", - seeddiff = 12, - maxvdistance = 10.5, - maxheight = -100, - sizen = 50, - sizedev = 20, - seglenghtn = 8, - seglenghtdev = 3, - segincln = 0, - segincldev = 0.6, - turnangle = 57, - forkturnangle = 57, - numperblock = 2 -}) - -mg.register_ore({ - name = "technic:mineral_zinc", - wherein = "default:stone", - seeddiff = 13, - maxvdistance = 10.5, - maxheight = 2, - seglenghtn = 15, - seglenghtdev = 6, - segincln = 0, - segincldev = 0.6, - turnangle = 57, - forkturnangle = 57, - numperblock = 2 -}) - -mg.register_ore({ - name = "technic:mineral_lead", - wherein = "default:stone", - seeddiff = 13, - maxvdistance = 10.5, - maxheight = 16, - seglenghtn = 15, - seglenghtdev = 6, - segincln = 0, - segincldev = 0.6, - turnangle = 57, - forkturnangle = 57, - numperblock = 3 -}) - -if technic.config:get_bool("enable_granite_generation") then - mg.register_ore_sheet({ - name = "technic:granite", - wherein = "default:stone", - height_min = -31000, - height_max = -150, - tmin = 3, - tmax = 6, - threshhold = 0.4, - noise_params = {offset=0, scale=15, spread={x=130, y=130, z=130}, seed=24, octaves=3, persist=0.70} - }) -end - -if technic.config:get_bool("enable_marble_generation") then - mg.register_ore_sheet({ - name = "technic:marble", - wherein = "default:stone", - height_min = -31000, - height_max = -50, - tmin = 3, - tmax = 6, - threshhold = 0.4, - noise_params = {offset=0, scale=15, spread={x=130, y=130, z=130}, seed=23, octaves=3, persist=0.70} - }) -end diff --git a/technic/technic_worldgen/nodes.lua b/technic/technic_worldgen/nodes.lua deleted file mode 100644 index a4fe2dd..0000000 --- a/technic/technic_worldgen/nodes.lua +++ /dev/null @@ -1,196 +0,0 @@ - -local S = technic.worldgen.gettext - -minetest.register_node( ":technic:mineral_uranium", { - description = S("Uranium Ore"), - tiles = { "default_stone.png^technic_mineral_uranium.png" }, - is_ground_content = true, - groups = {cracky=3, radioactive=1000}, - sounds = default.node_sound_stone_defaults(), - drop = "technic:uranium_lump", -}) - -minetest.register_node( ":technic:mineral_chromium", { - description = S("Chromium Ore"), - tiles = { "default_stone.png^technic_mineral_chromium.png" }, - is_ground_content = true, - groups = {cracky=3}, - sounds = default.node_sound_stone_defaults(), - drop = "technic:chromium_lump", -}) - -minetest.register_node( ":technic:mineral_zinc", { - description = S("Zinc Ore"), - tiles = { "default_stone.png^technic_mineral_zinc.png" }, - is_ground_content = true, - groups = {cracky=3}, - sounds = default.node_sound_stone_defaults(), - drop = "technic:zinc_lump", -}) - -minetest.register_node( ":technic:mineral_lead", { - description = S("Lead Ore"), - tiles = { "default_stone.png^technic_mineral_lead.png" }, - is_ground_content = true, - groups = {cracky=3}, - sounds = default.node_sound_stone_defaults(), - drop = "technic:lead_lump", -}) - -minetest.register_node( ":technic:mineral_sulfur", { - description = S("Sulfur Ore"), - tiles = { "default_stone.png^technic_mineral_sulfur.png" }, - is_ground_content = true, - groups = {cracky=3}, - sounds = default.node_sound_stone_defaults(), - drop = "technic:sulfur_lump", -}) - -minetest.register_node( ":technic:granite", { - description = S("Granite"), - tiles = { "technic_granite.png" }, - is_ground_content = true, - groups = {cracky=1}, - sounds = default.node_sound_stone_defaults(), -}) - -minetest.register_node( ":technic:marble", { - description = S("Marble"), - tiles = { "technic_marble.png" }, - is_ground_content = true, - groups = {cracky=3, marble=1}, - sounds = default.node_sound_stone_defaults(), -}) - -minetest.register_node( ":technic:marble_bricks", { - description = S("Marble Bricks"), - tiles = { "technic_marble_bricks.png" }, - is_ground_content = true, - groups = {cracky=3}, - sounds = default.node_sound_stone_defaults(), -}) - -minetest.register_node(":technic:uranium_block", { - description = S("Uranium Block"), - tiles = { "technic_uranium_block.png" }, - is_ground_content = true, - groups = {uranium_block=1, cracky=1, level=2, radioactive=3000}, - sounds = default.node_sound_stone_defaults() -}) - -minetest.register_node(":technic:chromium_block", { - description = S("Chromium Block"), - tiles = { "technic_chromium_block.png" }, - is_ground_content = true, - groups = {cracky=1, level=2}, - sounds = default.node_sound_stone_defaults() -}) - -minetest.register_node(":technic:zinc_block", { - description = S("Zinc Block"), - tiles = { "technic_zinc_block.png" }, - is_ground_content = true, - groups = {cracky=1, level=2}, - sounds = default.node_sound_stone_defaults() -}) - -minetest.register_node(":technic:lead_block", { - description = S("Lead Block"), - tiles = { "technic_lead_block.png" }, - is_ground_content = true, - groups = {cracky=1, level=2}, - sounds = default.node_sound_stone_defaults() -}) - -minetest.register_alias("technic:wrought_iron_block", "default:steelblock") - -minetest.override_item("default:steelblock", { - description = S("Wrought Iron Block"), - tiles = { "technic_wrought_iron_block.png" }, -}) - -minetest.register_node(":technic:cast_iron_block", { - description = S("Cast Iron Block"), - tiles = { "technic_cast_iron_block.png" }, - is_ground_content = true, - groups = {cracky=1, level=2}, - sounds = default.node_sound_stone_defaults() -}) - -minetest.register_node(":technic:carbon_steel_block", { - description = S("Carbon Steel Block"), - tiles = { "technic_carbon_steel_block.png" }, - is_ground_content = true, - groups = {cracky=1, level=2}, - sounds = default.node_sound_stone_defaults() -}) - -minetest.register_node(":technic:stainless_steel_block", { - description = S("Stainless Steel Block"), - tiles = { "technic_stainless_steel_block.png" }, - is_ground_content = true, - groups = {cracky=1, level=2}, - sounds = default.node_sound_stone_defaults() -}) - -minetest.register_node(":technic:brass_block", { - description = S("Brass Block"), - tiles = { "technic_brass_block.png" }, - is_ground_content = true, - groups = {cracky=1, level=2}, - sounds = default.node_sound_stone_defaults() -}) - -minetest.register_craft({ - output = 'technic:marble_bricks 4', - recipe = { - {'technic:marble','technic:marble'}, - {'technic:marble','technic:marble'} - } -}) - -minetest.register_alias("technic:diamond_block", "default:diamondblock") -minetest.register_alias("technic:diamond", "default:diamond") -minetest.register_alias("technic:mineral_diamond", "default:stone_with_diamond") - -local function for_each_registered_node(action) - local really_register_node = minetest.register_node - minetest.register_node = function(name, def) - really_register_node(name, def) - action(name:gsub("^:", ""), def) - end - for name, def in pairs(minetest.registered_nodes) do - action(name, def) - end -end - -for_each_registered_node(function(node_name, node_def) - if node_name ~= "default:steelblock" and - node_name:find("steelblock", 1, true) and - node_def.description:find("Steel", 1, true) then - minetest.override_item(node_name, { - description = node_def.description:gsub("Steel", S("Wrought Iron")), - }) - end - local tiles = node_def.tiles or node_def.tile_images - if tiles then - local new_tiles = {} - local do_override = false - if type(tiles) == "string" then - tiles = {tiles} - end - for i, t in ipairs(tiles) do - if type(t) == "string" and t == "default_steel_block.png" then - do_override = true - t = "technic_wrought_iron_block.png" - end - table.insert(new_tiles, t) - end - if do_override then - minetest.override_item(node_name, { - tiles = new_tiles - }) - end - end -end) - diff --git a/technic/technic_worldgen/oregen.lua b/technic/technic_worldgen/oregen.lua deleted file mode 100644 index 795f0ec..0000000 --- a/technic/technic_worldgen/oregen.lua +++ /dev/null @@ -1,191 +0,0 @@ -local uranium_params = {offset = 0, scale = 1, spread = {x = 100, y = 100, z = 100}, seed = 420, octaves = 3, persist = 0.7} -local uranium_threshhold = 0.55 - -local chromium_params = {offset = 0, scale = 1, spread = {x = 100, y = 100, z = 100}, seed = 421, octaves = 3, persist = 0.7} -local chromium_threshhold = 0.55 - -local zinc_params = {offset = 0, scale = 1, spread = {x = 100, y = 100, z = 100}, seed = 422, octaves = 3, persist = 0.7} -local zinc_threshhold = 0.5 - -local lead_params = {offset = 0, scale = 1, spread = {x = 100, y = 100, z = 100}, seed = 423, octaves = 3, persist = 0.7} -local lead_threshhold = 0.3 - -minetest.register_ore({ - ore_type = "scatter", - ore = "technic:mineral_uranium", - wherein = "default:stone", - clust_scarcity = 8*8*8, - clust_num_ores = 4, - clust_size = 3, - y_min = -300, - y_max = -80, - noise_params = uranium_params, - noise_threshhold = uranium_threshhold, -}) - -minetest.register_ore({ - ore_type = "scatter", - ore = "technic:mineral_chromium", - wherein = "default:stone", - clust_scarcity = 8*8*8, - clust_num_ores = 2, - clust_size = 3, - y_min = -200, - y_max = -100, - noise_params = chromium_params, - noise_threshhold = chromium_threshhold, -}) - -minetest.register_ore({ - ore_type = "scatter", - ore = "technic:mineral_chromium", - wherein = "default:stone", - clust_scarcity = 6*6*6, - clust_num_ores = 2, - clust_size = 3, - y_min = -31000, - y_max = -200, - flags = "absheight", - noise_params = chromium_params, - noise_threshhold = chromium_threshhold, -}) - -minetest.register_ore({ - ore_type = "scatter", - ore = "technic:mineral_zinc", - wherein = "default:stone", - clust_scarcity = 8*8*8, - clust_num_ores = 4, - clust_size = 3, - y_min = -32, - y_max = 2, - noise_params = zinc_params, - noise_threshhold = zinc_threshhold, -}) - -minetest.register_ore({ - ore_type = "scatter", - ore = "technic:mineral_zinc", - wherein = "default:stone", - clust_scarcity = 6*6*6, - clust_num_ores = 4, - clust_size = 3, - y_min = -31000, - y_max = -32, - flags = "absheight", - noise_params = zinc_params, - noise_threshhold = zinc_threshhold, -}) - -minetest.register_ore({ - ore_type = "scatter", - ore = "technic:mineral_lead", - wherein = "default:stone", - clust_scarcity = 9*9*9, - clust_num_ores = 5, - clust_size = 3, - y_min = -16, - y_max = 16, - noise_params = lead_params, - noise_threshhold = lead_threshhold, -}) - -minetest.register_ore({ - ore_type = "scatter", - ore = "technic:mineral_lead", - wherein = "default:stone", - clust_scarcity = 8*8*8, - clust_num_ores = 5, - clust_size = 3, - y_min = -128, - y_max = -16, - noise_params = lead_params, - noise_threshhold = lead_threshhold, -}) - -minetest.register_ore({ - ore_type = "scatter", - ore = "technic:mineral_lead", - wherein = "default:stone", - clust_scarcity = 6*6*6, - clust_num_ores = 5, - clust_size = 3, - y_min = -31000, - y_max = -128, - flags = "absheight", - noise_params = lead_params, - noise_threshhold = lead_threshhold, -}) - --- Sulfur -minetest.register_on_generated(function(minp, maxp, seed) - local vm, emin, emax = minetest.get_mapgen_object("voxelmanip") - local a = VoxelArea:new{ - MinEdge = {x = emin.x, y = emin.y, z = emin.z}, - MaxEdge = {x = emax.x, y = emax.y, z = emax.z}, - } - local data = vm:get_data() - local pr = PseudoRandom(17 * minp.x + 42 * minp.y + 101 * minp.z) - local noise = minetest.get_perlin(9876, 3, 0.5, 100) - - local c_lava = minetest.get_content_id("default:lava_source") - local c_lava_flowing = minetest.get_content_id("default:lava_flowing") - local c_stone = minetest.get_content_id("default:stone") - local c_sulfur = minetest.get_content_id("technic:mineral_sulfur") - - local grid_size = 5 - for x = minp.x + math.floor(grid_size / 2), maxp.x, grid_size do - for y = minp.y + math.floor(grid_size / 2), maxp.y, grid_size do - for z = minp.z + math.floor(grid_size / 2), maxp.z, grid_size do - local c = data[a:index(x, y, z)] - if (c == c_lava or c == c_lava_flowing) and noise:get3d({x = x, y = z, z = z}) >= 0.4 then - for xx = math.max(minp.x, x - grid_size), math.min(maxp.x, x + grid_size) do - for yy = math.max(minp.y, y - grid_size), math.min(maxp.y, y + grid_size) do - for zz = math.max(minp.z, z - grid_size), math.min(maxp.z, z + grid_size) do - local i = a:index(xx, yy, zz) - if data[i] == c_stone and pr:next(1, 10) <= 7 then - data[i] = c_sulfur - end - end - end - end - end - end - end - end - - vm:set_data(data) - vm:write_to_map(data) -end) - - -if technic.config:get_bool("enable_marble_generation") then -minetest.register_ore({ - ore_type = "sheet", - ore = "technic:marble", - wherein = "default:stone", - clust_scarcity = 1, - clust_num_ores = 1, - clust_size = 3, - y_min = -31000, - y_max = -50, - noise_threshhold = 0.4, - noise_params = {offset=0, scale=15, spread={x=150, y=150, z=150}, seed=23, octaves=3, persist=0.70} -}) -end - -if technic.config:get_bool("enable_granite_generation") then -minetest.register_ore({ - ore_type = "sheet", - ore = "technic:granite", - wherein = "default:stone", - clust_scarcity = 1, - clust_num_ores = 1, - clust_size = 4, - y_min = -31000, - y_max = -150, - noise_threshhold = 0.4, - noise_params = {offset=0, scale=15, spread={x=130, y=130, z=130}, seed=24, octaves=3, persist=0.70} -}) -end - diff --git a/technic/technic_worldgen/rubber.lua b/technic/technic_worldgen/rubber.lua deleted file mode 100644 index 3094fa0..0000000 --- a/technic/technic_worldgen/rubber.lua +++ /dev/null @@ -1,100 +0,0 @@ --- Code of rubber tree by PilzAdam - -local S = technic.worldgen.gettext - -minetest.register_node(":moretrees:rubber_tree_sapling", { - description = S("Rubber Tree Sapling"), - drawtype = "plantlike", - tiles = {"technic_rubber_sapling.png"}, - inventory_image = "technic_rubber_sapling.png", - wield_image = "technic_rubber_sapling.png", - paramtype = "light", - walkable = false, - groups = {dig_immediate=3, flammable=2}, - sounds = default.node_sound_defaults(), -}) - -minetest.register_craft({ - type = "fuel", - recipe = "moretrees:rubber_tree_sapling", - burntime = 10 -}) - -minetest.register_node(":moretrees:rubber_tree_trunk", { - description = S("Rubber Tree"), - tiles = {"default_tree_top.png", "default_tree_top.png", - "technic_rubber_tree_full.png"}, - groups = {tree=1, snappy=1, choppy=2, oddly_breakable_by_hand=1, - flammable=2}, - sounds = default.node_sound_wood_defaults(), -}) - -minetest.register_node(":moretrees:rubber_tree_trunk_empty", { - description = S("Rubber Tree"), - tiles = {"default_tree_top.png", "default_tree_top.png", - "technic_rubber_tree_empty.png"}, - groups = {tree=1, snappy=1, choppy=2, oddly_breakable_by_hand=1, - flammable=2, not_in_creative_inventory=1}, - sounds = default.node_sound_wood_defaults(), -}) - -minetest.register_node(":moretrees:rubber_tree_leaves", { - drawtype = "allfaces_optional", - description = S("Rubber Tree Leaves"), - tiles = {"technic_rubber_leaves.png"}, - paramtype = "light", - groups = {snappy=3, leafdecay=3, flammable=2, leaves=1}, - drop = { - max_items = 1, - items = {{ - items = {"moretrees:rubber_tree_sapling"}, - rarity = 20, - }, - { - items = {"moretrees:rubber_tree_leaves"}, - } - } - }, - sounds = default.node_sound_leaves_defaults(), -}) - -technic.rubber_tree_model={ - axiom = "FFFFA", - rules_a = "[&FFBFA]////[&BFFFA]////[&FBFFA]", - rules_b = "[&FFA]////[&FFA]////[&FFA]", - trunk = "moretrees:rubber_tree_trunk", - leaves = "moretrees:rubber_tree_leaves", - angle = 35, - iterations = 3, - random_level = 1, - trunk_type = "double", - thin_branches = true -} - -minetest.register_abm({ - nodenames = {"moretrees:rubber_tree_sapling"}, - interval = 60, - chance = 20, - action = function(pos, node) - minetest.remove_node(pos) - minetest.spawn_tree(pos, technic.rubber_tree_model) - end -}) - -if technic.config:get_bool("enable_rubber_tree_generation") then - minetest.register_on_generated(function(minp, maxp, blockseed) - if math.random(1, 100) > 5 then - return - end - local tmp = { - x = (maxp.x - minp.x) / 2 + minp.x, - y = (maxp.y - minp.y) / 2 + minp.y, - z = (maxp.z - minp.z) / 2 + minp.z} - local pos = minetest.find_node_near(tmp, maxp.x - minp.x, - {"default:dirt_with_grass"}) - if pos ~= nil then - minetest.spawn_tree({x=pos.x, y=pos.y+1, z=pos.z}, technic.rubber_tree_model) - end - end) -end - diff --git a/technic/technic_worldgen/textures/technic_brass_block.png b/technic/technic_worldgen/textures/technic_brass_block.png deleted file mode 100644 index bc6fe78..0000000 Binary files a/technic/technic_worldgen/textures/technic_brass_block.png and /dev/null differ diff --git a/technic/technic_worldgen/textures/technic_brass_dust.png b/technic/technic_worldgen/textures/technic_brass_dust.png deleted file mode 100644 index 63d9ba4..0000000 Binary files a/technic/technic_worldgen/textures/technic_brass_dust.png and /dev/null differ diff --git a/technic/technic_worldgen/textures/technic_brass_ingot.png b/technic/technic_worldgen/textures/technic_brass_ingot.png deleted file mode 100644 index 06056e7..0000000 Binary files a/technic/technic_worldgen/textures/technic_brass_ingot.png and /dev/null differ diff --git a/technic/technic_worldgen/textures/technic_carbon_steel_block.png b/technic/technic_worldgen/textures/technic_carbon_steel_block.png deleted file mode 100644 index f3cfdc1..0000000 Binary files a/technic/technic_worldgen/textures/technic_carbon_steel_block.png and /dev/null differ diff --git a/technic/technic_worldgen/textures/technic_carbon_steel_ingot.png b/technic/technic_worldgen/textures/technic_carbon_steel_ingot.png deleted file mode 100644 index c30ec80..0000000 Binary files a/technic/technic_worldgen/textures/technic_carbon_steel_ingot.png and /dev/null differ diff --git a/technic/technic_worldgen/textures/technic_cast_iron_block.png b/technic/technic_worldgen/textures/technic_cast_iron_block.png deleted file mode 100644 index 2df61e5..0000000 Binary files a/technic/technic_worldgen/textures/technic_cast_iron_block.png and /dev/null differ diff --git a/technic/technic_worldgen/textures/technic_cast_iron_ingot.png b/technic/technic_worldgen/textures/technic_cast_iron_ingot.png deleted file mode 100644 index 5c182ce..0000000 Binary files a/technic/technic_worldgen/textures/technic_cast_iron_ingot.png and /dev/null differ diff --git a/technic/technic_worldgen/textures/technic_chromium_block.png b/technic/technic_worldgen/textures/technic_chromium_block.png deleted file mode 100644 index ad173ca..0000000 Binary files a/technic/technic_worldgen/textures/technic_chromium_block.png and /dev/null differ diff --git a/technic/technic_worldgen/textures/technic_chromium_ingot.png b/technic/technic_worldgen/textures/technic_chromium_ingot.png deleted file mode 100644 index 248b0c3..0000000 Binary files a/technic/technic_worldgen/textures/technic_chromium_ingot.png and /dev/null differ diff --git a/technic/technic_worldgen/textures/technic_chromium_lump.png b/technic/technic_worldgen/textures/technic_chromium_lump.png deleted file mode 100644 index 0fe03a1..0000000 Binary files a/technic/technic_worldgen/textures/technic_chromium_lump.png and /dev/null differ diff --git a/technic/technic_worldgen/textures/technic_granite.png b/technic/technic_worldgen/textures/technic_granite.png deleted file mode 100644 index abb1385..0000000 Binary files a/technic/technic_worldgen/textures/technic_granite.png and /dev/null differ diff --git a/technic/technic_worldgen/textures/technic_lead_block.png b/technic/technic_worldgen/textures/technic_lead_block.png deleted file mode 100644 index 11da56a..0000000 Binary files a/technic/technic_worldgen/textures/technic_lead_block.png and /dev/null differ diff --git a/technic/technic_worldgen/textures/technic_lead_dust.png b/technic/technic_worldgen/textures/technic_lead_dust.png deleted file mode 100644 index af6ee29..0000000 Binary files a/technic/technic_worldgen/textures/technic_lead_dust.png and /dev/null differ diff --git a/technic/technic_worldgen/textures/technic_lead_ingot.png b/technic/technic_worldgen/textures/technic_lead_ingot.png deleted file mode 100644 index fae0cbf..0000000 Binary files a/technic/technic_worldgen/textures/technic_lead_ingot.png and /dev/null differ diff --git a/technic/technic_worldgen/textures/technic_lead_lump.png b/technic/technic_worldgen/textures/technic_lead_lump.png deleted file mode 100644 index 64584cb..0000000 Binary files a/technic/technic_worldgen/textures/technic_lead_lump.png and /dev/null differ diff --git a/technic/technic_worldgen/textures/technic_marble.png b/technic/technic_worldgen/textures/technic_marble.png deleted file mode 100644 index 846a170..0000000 Binary files a/technic/technic_worldgen/textures/technic_marble.png and /dev/null differ diff --git a/technic/technic_worldgen/textures/technic_marble_bricks.png b/technic/technic_worldgen/textures/technic_marble_bricks.png deleted file mode 100644 index 2ea1e42..0000000 Binary files a/technic/technic_worldgen/textures/technic_marble_bricks.png and /dev/null differ diff --git a/technic/technic_worldgen/textures/technic_mineral_chromium.png b/technic/technic_worldgen/textures/technic_mineral_chromium.png deleted file mode 100644 index c66f1c5..0000000 Binary files a/technic/technic_worldgen/textures/technic_mineral_chromium.png and /dev/null differ diff --git a/technic/technic_worldgen/textures/technic_mineral_lead.png b/technic/technic_worldgen/textures/technic_mineral_lead.png deleted file mode 100644 index 0309cd3..0000000 Binary files a/technic/technic_worldgen/textures/technic_mineral_lead.png and /dev/null differ diff --git a/technic/technic_worldgen/textures/technic_mineral_sulfur.png b/technic/technic_worldgen/textures/technic_mineral_sulfur.png deleted file mode 100644 index 26cb19d..0000000 Binary files a/technic/technic_worldgen/textures/technic_mineral_sulfur.png and /dev/null differ diff --git a/technic/technic_worldgen/textures/technic_mineral_uranium.png b/technic/technic_worldgen/textures/technic_mineral_uranium.png deleted file mode 100644 index aad9c07..0000000 Binary files a/technic/technic_worldgen/textures/technic_mineral_uranium.png and /dev/null differ diff --git a/technic/technic_worldgen/textures/technic_mineral_zinc.png b/technic/technic_worldgen/textures/technic_mineral_zinc.png deleted file mode 100644 index 598efeb..0000000 Binary files a/technic/technic_worldgen/textures/technic_mineral_zinc.png and /dev/null differ diff --git a/technic/technic_worldgen/textures/technic_rubber.png b/technic/technic_worldgen/textures/technic_rubber.png deleted file mode 100644 index 9ed4a9d..0000000 Binary files a/technic/technic_worldgen/textures/technic_rubber.png and /dev/null differ diff --git a/technic/technic_worldgen/textures/technic_rubber_leaves.png b/technic/technic_worldgen/textures/technic_rubber_leaves.png deleted file mode 100644 index ae013e0..0000000 Binary files a/technic/technic_worldgen/textures/technic_rubber_leaves.png and /dev/null differ diff --git a/technic/technic_worldgen/textures/technic_rubber_sapling.png b/technic/technic_worldgen/textures/technic_rubber_sapling.png deleted file mode 100644 index e5c9f5d..0000000 Binary files a/technic/technic_worldgen/textures/technic_rubber_sapling.png and /dev/null differ diff --git a/technic/technic_worldgen/textures/technic_rubber_tree_empty.png b/technic/technic_worldgen/textures/technic_rubber_tree_empty.png deleted file mode 100644 index 1792951..0000000 Binary files a/technic/technic_worldgen/textures/technic_rubber_tree_empty.png and /dev/null differ diff --git a/technic/technic_worldgen/textures/technic_rubber_tree_full.png b/technic/technic_worldgen/textures/technic_rubber_tree_full.png deleted file mode 100644 index 08067ef..0000000 Binary files a/technic/technic_worldgen/textures/technic_rubber_tree_full.png and /dev/null differ diff --git a/technic/technic_worldgen/textures/technic_rubber_tree_grindings.png b/technic/technic_worldgen/textures/technic_rubber_tree_grindings.png deleted file mode 100644 index 9f2f5d6..0000000 Binary files a/technic/technic_worldgen/textures/technic_rubber_tree_grindings.png and /dev/null differ diff --git a/technic/technic_worldgen/textures/technic_stainless_steel_block.png b/technic/technic_worldgen/textures/technic_stainless_steel_block.png deleted file mode 100644 index e451768..0000000 Binary files a/technic/technic_worldgen/textures/technic_stainless_steel_block.png and /dev/null differ diff --git a/technic/technic_worldgen/textures/technic_sulfur_dust.png b/technic/technic_worldgen/textures/technic_sulfur_dust.png deleted file mode 100644 index 04ffee0..0000000 Binary files a/technic/technic_worldgen/textures/technic_sulfur_dust.png and /dev/null differ diff --git a/technic/technic_worldgen/textures/technic_sulfur_lump.png b/technic/technic_worldgen/textures/technic_sulfur_lump.png deleted file mode 100644 index 017c8e1..0000000 Binary files a/technic/technic_worldgen/textures/technic_sulfur_lump.png and /dev/null differ diff --git a/technic/technic_worldgen/textures/technic_uranium_block.png b/technic/technic_worldgen/textures/technic_uranium_block.png deleted file mode 100644 index 99dd51c..0000000 Binary files a/technic/technic_worldgen/textures/technic_uranium_block.png and /dev/null differ diff --git a/technic/technic_worldgen/textures/technic_uranium_ingot.png b/technic/technic_worldgen/textures/technic_uranium_ingot.png deleted file mode 100644 index 38978f8..0000000 Binary files a/technic/technic_worldgen/textures/technic_uranium_ingot.png and /dev/null differ diff --git a/technic/technic_worldgen/textures/technic_uranium_lump.png b/technic/technic_worldgen/textures/technic_uranium_lump.png deleted file mode 100644 index 2f5a66c..0000000 Binary files a/technic/technic_worldgen/textures/technic_uranium_lump.png and /dev/null differ diff --git a/technic/technic_worldgen/textures/technic_wrought_iron_block.png b/technic/technic_worldgen/textures/technic_wrought_iron_block.png deleted file mode 100644 index cf6c961..0000000 Binary files a/technic/technic_worldgen/textures/technic_wrought_iron_block.png and /dev/null differ diff --git a/technic/technic_worldgen/textures/technic_wrought_iron_ingot.png b/technic/technic_worldgen/textures/technic_wrought_iron_ingot.png deleted file mode 100644 index af00ea0..0000000 Binary files a/technic/technic_worldgen/textures/technic_wrought_iron_ingot.png and /dev/null differ diff --git a/technic/technic_worldgen/textures/technic_zinc_block.png b/technic/technic_worldgen/textures/technic_zinc_block.png deleted file mode 100644 index 5ae7947..0000000 Binary files a/technic/technic_worldgen/textures/technic_zinc_block.png and /dev/null differ diff --git a/technic/technic_worldgen/textures/technic_zinc_ingot.png b/technic/technic_worldgen/textures/technic_zinc_ingot.png deleted file mode 100644 index a36a11c..0000000 Binary files a/technic/technic_worldgen/textures/technic_zinc_ingot.png and /dev/null differ diff --git a/technic/technic_worldgen/textures/technic_zinc_lump.png b/technic/technic_worldgen/textures/technic_zinc_lump.png deleted file mode 100644 index 1a620ab..0000000 Binary files a/technic/technic_worldgen/textures/technic_zinc_lump.png and /dev/null differ diff --git a/technic/technic_worldgen/textures/x32/technic_brass_ingot.png b/technic/technic_worldgen/textures/x32/technic_brass_ingot.png deleted file mode 100644 index 2d8b153..0000000 Binary files a/technic/technic_worldgen/textures/x32/technic_brass_ingot.png and /dev/null differ diff --git a/technic/technic_worldgen/textures/x32/technic_chromium_ingot.png b/technic/technic_worldgen/textures/x32/technic_chromium_ingot.png deleted file mode 100644 index 91d5b20..0000000 Binary files a/technic/technic_worldgen/textures/x32/technic_chromium_ingot.png and /dev/null differ diff --git a/technic/technic_worldgen/textures/x32/technic_chromium_lump.png b/technic/technic_worldgen/textures/x32/technic_chromium_lump.png deleted file mode 100644 index 1588f92..0000000 Binary files a/technic/technic_worldgen/textures/x32/technic_chromium_lump.png and /dev/null differ diff --git a/technic/technic_worldgen/textures/x32/technic_concrete_block.png b/technic/technic_worldgen/textures/x32/technic_concrete_block.png deleted file mode 100644 index 91364f3..0000000 Binary files a/technic/technic_worldgen/textures/x32/technic_concrete_block.png and /dev/null differ diff --git a/technic/technic_worldgen/textures/x32/technic_granite.png b/technic/technic_worldgen/textures/x32/technic_granite.png deleted file mode 100644 index abb1385..0000000 Binary files a/technic/technic_worldgen/textures/x32/technic_granite.png and /dev/null differ diff --git a/technic/technic_worldgen/textures/x32/technic_marble.png b/technic/technic_worldgen/textures/x32/technic_marble.png deleted file mode 100644 index 846a170..0000000 Binary files a/technic/technic_worldgen/textures/x32/technic_marble.png and /dev/null differ diff --git a/technic/technic_worldgen/textures/x32/technic_marble_bricks.png b/technic/technic_worldgen/textures/x32/technic_marble_bricks.png deleted file mode 100644 index 2ea1e42..0000000 Binary files a/technic/technic_worldgen/textures/x32/technic_marble_bricks.png and /dev/null differ diff --git a/technic/technic_worldgen/textures/x32/technic_mineral_chromium.png b/technic/technic_worldgen/textures/x32/technic_mineral_chromium.png deleted file mode 100644 index c66f1c5..0000000 Binary files a/technic/technic_worldgen/textures/x32/technic_mineral_chromium.png and /dev/null differ diff --git a/technic/technic_worldgen/textures/x32/technic_mineral_uranium.png b/technic/technic_worldgen/textures/x32/technic_mineral_uranium.png deleted file mode 100644 index aad9c07..0000000 Binary files a/technic/technic_worldgen/textures/x32/technic_mineral_uranium.png and /dev/null differ diff --git a/technic/technic_worldgen/textures/x32/technic_mineral_zinc.png b/technic/technic_worldgen/textures/x32/technic_mineral_zinc.png deleted file mode 100644 index 598efeb..0000000 Binary files a/technic/technic_worldgen/textures/x32/technic_mineral_zinc.png and /dev/null differ diff --git a/technic/technic_worldgen/textures/x32/technic_rebar.png b/technic/technic_worldgen/textures/x32/technic_rebar.png deleted file mode 100644 index 16d1fc5..0000000 Binary files a/technic/technic_worldgen/textures/x32/technic_rebar.png and /dev/null differ diff --git a/technic/technic_worldgen/textures/x32/technic_stainless_steel_ingot.png b/technic/technic_worldgen/textures/x32/technic_stainless_steel_ingot.png deleted file mode 100644 index 46fa296..0000000 Binary files a/technic/technic_worldgen/textures/x32/technic_stainless_steel_ingot.png and /dev/null differ diff --git a/technic/technic_worldgen/textures/x32/technic_uranium.png b/technic/technic_worldgen/textures/x32/technic_uranium.png deleted file mode 100644 index 54225f8..0000000 Binary files a/technic/technic_worldgen/textures/x32/technic_uranium.png and /dev/null differ diff --git a/technic/technic_worldgen/textures/x32/technic_zinc_ingot.png b/technic/technic_worldgen/textures/x32/technic_zinc_ingot.png deleted file mode 100644 index 096ff9c..0000000 Binary files a/technic/technic_worldgen/textures/x32/technic_zinc_ingot.png and /dev/null differ diff --git a/technic/technic_worldgen/textures/x32/technic_zinc_lump.png b/technic/technic_worldgen/textures/x32/technic_zinc_lump.png deleted file mode 100644 index d28a6dc..0000000 Binary files a/technic/technic_worldgen/textures/x32/technic_zinc_lump.png and /dev/null differ diff --git a/technic/textures/hires/technic_hv_nuclear_reactor_core_128.png b/technic/textures/hires/technic_hv_nuclear_reactor_core_128.png new file mode 100644 index 0000000..2848f89 Binary files /dev/null and b/technic/textures/hires/technic_hv_nuclear_reactor_core_128.png differ diff --git a/technic/textures/hires/technic_hv_nuclear_reactor_core_16.png b/technic/textures/hires/technic_hv_nuclear_reactor_core_16.png new file mode 100644 index 0000000..4661177 Binary files /dev/null and b/technic/textures/hires/technic_hv_nuclear_reactor_core_16.png differ diff --git a/technic/textures/hires/technic_hv_nuclear_reactor_core_256.png b/technic/textures/hires/technic_hv_nuclear_reactor_core_256.png new file mode 100644 index 0000000..5187fab Binary files /dev/null and b/technic/textures/hires/technic_hv_nuclear_reactor_core_256.png differ diff --git a/technic/textures/hires/technic_hv_nuclear_reactor_core_32.png b/technic/textures/hires/technic_hv_nuclear_reactor_core_32.png new file mode 100644 index 0000000..3d380da Binary files /dev/null and b/technic/textures/hires/technic_hv_nuclear_reactor_core_32.png differ diff --git a/technic/textures/hires/technic_hv_nuclear_reactor_core_512.png b/technic/textures/hires/technic_hv_nuclear_reactor_core_512.png new file mode 100644 index 0000000..ba2bd89 Binary files /dev/null and b/technic/textures/hires/technic_hv_nuclear_reactor_core_512.png differ diff --git a/technic/textures/hires/technic_hv_nuclear_reactor_core_64.png b/technic/textures/hires/technic_hv_nuclear_reactor_core_64.png new file mode 100644 index 0000000..2fa8f18 Binary files /dev/null and b/technic/textures/hires/technic_hv_nuclear_reactor_core_64.png differ diff --git a/technic/textures/power_meter.png b/technic/textures/power_meter.png new file mode 100644 index 0000000..9f96cac Binary files /dev/null and b/technic/textures/power_meter.png differ diff --git a/technic/textures/technic_acacia_grindings.png b/technic/textures/technic_acacia_grindings.png new file mode 100644 index 0000000..bcfefc9 Binary files /dev/null and b/technic/textures/technic_acacia_grindings.png differ diff --git a/technic/textures/technic_admin_anchor.png b/technic/textures/technic_admin_anchor.png new file mode 100644 index 0000000..7ce9b4c Binary files /dev/null and b/technic/textures/technic_admin_anchor.png differ diff --git a/technic/textures/technic_akalin_dust.png b/technic/textures/technic_akalin_dust.png new file mode 100644 index 0000000..052b0ac Binary files /dev/null and b/technic/textures/technic_akalin_dust.png differ diff --git a/technic/textures/technic_alatro_dust.png b/technic/textures/technic_alatro_dust.png new file mode 100644 index 0000000..172af25 Binary files /dev/null and b/technic/textures/technic_alatro_dust.png differ diff --git a/technic/textures/technic_arol_dust.png b/technic/textures/technic_arol_dust.png new file mode 100644 index 0000000..1a575ed Binary files /dev/null and b/technic/textures/technic_arol_dust.png differ diff --git a/technic/textures/technic_battery.png b/technic/textures/technic_battery.png new file mode 100644 index 0000000..ee83b74 Binary files /dev/null and b/technic/textures/technic_battery.png differ diff --git a/technic/textures/technic_battery_box_side.png b/technic/textures/technic_battery_box_side.png new file mode 100644 index 0000000..98a22d6 Binary files /dev/null and b/technic/textures/technic_battery_box_side.png differ diff --git a/technic/textures/technic_battery_box_side8.png b/technic/textures/technic_battery_box_side8.png new file mode 100644 index 0000000..65806f4 Binary files /dev/null and b/technic/textures/technic_battery_box_side8.png differ diff --git a/technic/textures/technic_battery_box_side_mv.png b/technic/textures/technic_battery_box_side_mv.png new file mode 100644 index 0000000..06a4be5 Binary files /dev/null and b/technic/textures/technic_battery_box_side_mv.png differ diff --git a/technic/textures/technic_battery_meter_fg.png b/technic/textures/technic_battery_meter_fg.png new file mode 100644 index 0000000..2f19bc7 Binary files /dev/null and b/technic/textures/technic_battery_meter_fg.png differ diff --git a/technic/textures/technic_battery_reload.png b/technic/textures/technic_battery_reload.png new file mode 100644 index 0000000..4ce48d8 Binary files /dev/null and b/technic/textures/technic_battery_reload.png differ diff --git a/technic/textures/technic_bronze_dust.png b/technic/textures/technic_bronze_dust.png new file mode 100644 index 0000000..a613205 Binary files /dev/null and b/technic/textures/technic_bronze_dust.png differ diff --git a/technic/textures/technic_bucket_corium.png b/technic/textures/technic_bucket_corium.png new file mode 100644 index 0000000..82da7ca Binary files /dev/null and b/technic/textures/technic_bucket_corium.png differ diff --git a/technic/textures/technic_carbon_cloth.png b/technic/textures/technic_carbon_cloth.png new file mode 100644 index 0000000..65a6dab Binary files /dev/null and b/technic/textures/technic_carbon_cloth.png differ diff --git a/technic/textures/technic_carbon_plate.png b/technic/textures/technic_carbon_plate.png new file mode 100644 index 0000000..5da83b8 Binary files /dev/null and b/technic/textures/technic_carbon_plate.png differ diff --git a/technic/textures/technic_carbon_steel_dust.png b/technic/textures/technic_carbon_steel_dust.png new file mode 100644 index 0000000..0fa8a17 Binary files /dev/null and b/technic/textures/technic_carbon_steel_dust.png differ diff --git a/technic/textures/technic_cast_iron_dust.png b/technic/textures/technic_cast_iron_dust.png new file mode 100644 index 0000000..b5690ac Binary files /dev/null and b/technic/textures/technic_cast_iron_dust.png differ diff --git a/technic/textures/technic_chainsaw.png b/technic/textures/technic_chainsaw.png new file mode 100644 index 0000000..1a69893 Binary files /dev/null and b/technic/textures/technic_chainsaw.png differ diff --git a/technic/textures/technic_chernobylite_block.png b/technic/textures/technic_chernobylite_block.png new file mode 100644 index 0000000..a837c66 Binary files /dev/null and b/technic/textures/technic_chernobylite_block.png differ diff --git a/technic/textures/technic_chromium_dust.png b/technic/textures/technic_chromium_dust.png new file mode 100644 index 0000000..0e48069 Binary files /dev/null and b/technic/textures/technic_chromium_dust.png differ diff --git a/technic/textures/technic_cnc_bottom.png b/technic/textures/technic_cnc_bottom.png new file mode 100644 index 0000000..e600cb1 Binary files /dev/null and b/technic/textures/technic_cnc_bottom.png differ diff --git a/technic/textures/technic_cnc_cylinder.png b/technic/textures/technic_cnc_cylinder.png new file mode 100644 index 0000000..48921bd Binary files /dev/null and b/technic/textures/technic_cnc_cylinder.png differ diff --git a/technic/textures/technic_cnc_cylinder_horizontal.png b/technic/textures/technic_cnc_cylinder_horizontal.png new file mode 100644 index 0000000..82eb24c Binary files /dev/null and b/technic/textures/technic_cnc_cylinder_horizontal.png differ diff --git a/technic/textures/technic_cnc_element_cross.png b/technic/textures/technic_cnc_element_cross.png new file mode 100644 index 0000000..cc66571 Binary files /dev/null and b/technic/textures/technic_cnc_element_cross.png differ diff --git a/technic/textures/technic_cnc_element_edge.png b/technic/textures/technic_cnc_element_edge.png new file mode 100644 index 0000000..1245ea7 Binary files /dev/null and b/technic/textures/technic_cnc_element_edge.png differ diff --git a/technic/textures/technic_cnc_element_end.png b/technic/textures/technic_cnc_element_end.png new file mode 100644 index 0000000..562eb2b Binary files /dev/null and b/technic/textures/technic_cnc_element_end.png differ diff --git a/technic/textures/technic_cnc_element_straight.png b/technic/textures/technic_cnc_element_straight.png new file mode 100644 index 0000000..d42966e Binary files /dev/null and b/technic/textures/technic_cnc_element_straight.png differ diff --git a/technic/textures/technic_cnc_element_t.png b/technic/textures/technic_cnc_element_t.png new file mode 100644 index 0000000..a462764 Binary files /dev/null and b/technic/textures/technic_cnc_element_t.png differ diff --git a/technic/textures/technic_cnc_front.png b/technic/textures/technic_cnc_front.png new file mode 100644 index 0000000..6cc0490 Binary files /dev/null and b/technic/textures/technic_cnc_front.png differ diff --git a/technic/textures/technic_cnc_front_active.png b/technic/textures/technic_cnc_front_active.png new file mode 100644 index 0000000..f7a3c7f Binary files /dev/null and b/technic/textures/technic_cnc_front_active.png differ diff --git a/technic/textures/technic_cnc_full.png b/technic/textures/technic_cnc_full.png new file mode 100644 index 0000000..60f8a81 Binary files /dev/null and b/technic/textures/technic_cnc_full.png differ diff --git a/technic/textures/technic_cnc_half.png b/technic/textures/technic_cnc_half.png new file mode 100644 index 0000000..2c4d3a8 Binary files /dev/null and b/technic/textures/technic_cnc_half.png differ diff --git a/technic/textures/technic_cnc_milling_background.png b/technic/textures/technic_cnc_milling_background.png new file mode 100644 index 0000000..6a9c2f4 Binary files /dev/null and b/technic/textures/technic_cnc_milling_background.png differ diff --git a/technic/textures/technic_cnc_oblate_spheroid.png b/technic/textures/technic_cnc_oblate_spheroid.png new file mode 100644 index 0000000..b196e7d Binary files /dev/null and b/technic/textures/technic_cnc_oblate_spheroid.png differ diff --git a/technic/textures/technic_cnc_onecurvededge.png b/technic/textures/technic_cnc_onecurvededge.png new file mode 100644 index 0000000..8325846 Binary files /dev/null and b/technic/textures/technic_cnc_onecurvededge.png differ diff --git a/technic/textures/technic_cnc_pyramid.png b/technic/textures/technic_cnc_pyramid.png new file mode 100644 index 0000000..d8cc713 Binary files /dev/null and b/technic/textures/technic_cnc_pyramid.png differ diff --git a/technic/textures/technic_cnc_side.png b/technic/textures/technic_cnc_side.png new file mode 100644 index 0000000..1ecbbac Binary files /dev/null and b/technic/textures/technic_cnc_side.png differ diff --git a/technic/textures/technic_cnc_slope.png b/technic/textures/technic_cnc_slope.png new file mode 100644 index 0000000..493d560 Binary files /dev/null and b/technic/textures/technic_cnc_slope.png differ diff --git a/technic/textures/technic_cnc_slope_edge.png b/technic/textures/technic_cnc_slope_edge.png new file mode 100644 index 0000000..1b601c4 Binary files /dev/null and b/technic/textures/technic_cnc_slope_edge.png differ diff --git a/technic/textures/technic_cnc_slope_edge_upsdwn.png b/technic/textures/technic_cnc_slope_edge_upsdwn.png new file mode 100644 index 0000000..350c22d Binary files /dev/null and b/technic/textures/technic_cnc_slope_edge_upsdwn.png differ diff --git a/technic/textures/technic_cnc_slope_inner_edge.png b/technic/textures/technic_cnc_slope_inner_edge.png new file mode 100644 index 0000000..3f5ab9e Binary files /dev/null and b/technic/textures/technic_cnc_slope_inner_edge.png differ diff --git a/technic/textures/technic_cnc_slope_inner_edge_upsdwn.png b/technic/textures/technic_cnc_slope_inner_edge_upsdwn.png new file mode 100644 index 0000000..a1fee78 Binary files /dev/null and b/technic/textures/technic_cnc_slope_inner_edge_upsdwn.png differ diff --git a/technic/textures/technic_cnc_slope_lying.png b/technic/textures/technic_cnc_slope_lying.png new file mode 100644 index 0000000..099ed59 Binary files /dev/null and b/technic/textures/technic_cnc_slope_lying.png differ diff --git a/technic/textures/technic_cnc_slope_upsdwn.png b/technic/textures/technic_cnc_slope_upsdwn.png new file mode 100644 index 0000000..2a34b8b Binary files /dev/null and b/technic/textures/technic_cnc_slope_upsdwn.png differ diff --git a/technic/textures/technic_cnc_sphere.png b/technic/textures/technic_cnc_sphere.png new file mode 100644 index 0000000..791b32b Binary files /dev/null and b/technic/textures/technic_cnc_sphere.png differ diff --git a/technic/textures/technic_cnc_spike.png b/technic/textures/technic_cnc_spike.png new file mode 100644 index 0000000..b445b40 Binary files /dev/null and b/technic/textures/technic_cnc_spike.png differ diff --git a/technic/textures/technic_cnc_stick.png b/technic/textures/technic_cnc_stick.png new file mode 100644 index 0000000..acaf1cb Binary files /dev/null and b/technic/textures/technic_cnc_stick.png differ diff --git a/technic/textures/technic_cnc_top.png b/technic/textures/technic_cnc_top.png new file mode 100644 index 0000000..5123334 Binary files /dev/null and b/technic/textures/technic_cnc_top.png differ diff --git a/technic/textures/technic_cnc_top_active.png b/technic/textures/technic_cnc_top_active.png new file mode 100644 index 0000000..2bc9d81 Binary files /dev/null and b/technic/textures/technic_cnc_top_active.png differ diff --git a/technic/textures/technic_cnc_twocurvededge.png b/technic/textures/technic_cnc_twocurvededge.png new file mode 100644 index 0000000..b50a257 Binary files /dev/null and b/technic/textures/technic_cnc_twocurvededge.png differ diff --git a/technic/textures/technic_coal_alloy_furnace_bottom.png b/technic/textures/technic_coal_alloy_furnace_bottom.png new file mode 100644 index 0000000..077dec5 Binary files /dev/null and b/technic/textures/technic_coal_alloy_furnace_bottom.png differ diff --git a/technic/textures/technic_coal_alloy_furnace_front.png b/technic/textures/technic_coal_alloy_furnace_front.png new file mode 100644 index 0000000..d9d93dd Binary files /dev/null and b/technic/textures/technic_coal_alloy_furnace_front.png differ diff --git a/technic/textures/technic_coal_alloy_furnace_front_active.png b/technic/textures/technic_coal_alloy_furnace_front_active.png new file mode 100644 index 0000000..ffc4e0a Binary files /dev/null and b/technic/textures/technic_coal_alloy_furnace_front_active.png differ diff --git a/technic/textures/technic_coal_alloy_furnace_side.png b/technic/textures/technic_coal_alloy_furnace_side.png new file mode 100644 index 0000000..d5c7066 Binary files /dev/null and b/technic/textures/technic_coal_alloy_furnace_side.png differ diff --git a/technic/textures/technic_coal_alloy_furnace_top.png b/technic/textures/technic_coal_alloy_furnace_top.png new file mode 100644 index 0000000..6424fc0 Binary files /dev/null and b/technic/textures/technic_coal_alloy_furnace_top.png differ diff --git a/technic/textures/technic_coal_dust.png b/technic/textures/technic_coal_dust.png new file mode 100644 index 0000000..a1486c6 Binary files /dev/null and b/technic/textures/technic_coal_dust.png differ diff --git a/technic/textures/technic_common_tree_grindings.png b/technic/textures/technic_common_tree_grindings.png new file mode 100644 index 0000000..e17bb69 Binary files /dev/null and b/technic/textures/technic_common_tree_grindings.png differ diff --git a/technic/textures/technic_composite_plate.png b/technic/textures/technic_composite_plate.png new file mode 100644 index 0000000..79b7b8d Binary files /dev/null and b/technic/textures/technic_composite_plate.png differ diff --git a/technic/textures/technic_constructor_back.png b/technic/textures/technic_constructor_back.png new file mode 100644 index 0000000..f002363 Binary files /dev/null and b/technic/textures/technic_constructor_back.png differ diff --git a/technic/textures/technic_constructor_front_off.png b/technic/textures/technic_constructor_front_off.png new file mode 100644 index 0000000..f3f7856 Binary files /dev/null and b/technic/textures/technic_constructor_front_off.png differ diff --git a/technic/textures/technic_constructor_front_on.png b/technic/textures/technic_constructor_front_on.png new file mode 100644 index 0000000..d733765 Binary files /dev/null and b/technic/textures/technic_constructor_front_on.png differ diff --git a/technic/textures/technic_constructor_mk1_bottom_off.png b/technic/textures/technic_constructor_mk1_bottom_off.png new file mode 100644 index 0000000..0c52557 Binary files /dev/null and b/technic/textures/technic_constructor_mk1_bottom_off.png differ diff --git a/technic/textures/technic_constructor_mk1_bottom_on.png b/technic/textures/technic_constructor_mk1_bottom_on.png new file mode 100644 index 0000000..0c46c57 Binary files /dev/null and b/technic/textures/technic_constructor_mk1_bottom_on.png differ diff --git a/technic/textures/technic_constructor_mk1_side1_off.png b/technic/textures/technic_constructor_mk1_side1_off.png new file mode 100644 index 0000000..e64ddbe Binary files /dev/null and b/technic/textures/technic_constructor_mk1_side1_off.png differ diff --git a/technic/textures/technic_constructor_mk1_side1_on.png b/technic/textures/technic_constructor_mk1_side1_on.png new file mode 100644 index 0000000..eda98d8 Binary files /dev/null and b/technic/textures/technic_constructor_mk1_side1_on.png differ diff --git a/technic/textures/technic_constructor_mk1_side2_off.png b/technic/textures/technic_constructor_mk1_side2_off.png new file mode 100644 index 0000000..b33fcfb Binary files /dev/null and b/technic/textures/technic_constructor_mk1_side2_off.png differ diff --git a/technic/textures/technic_constructor_mk1_side2_on.png b/technic/textures/technic_constructor_mk1_side2_on.png new file mode 100644 index 0000000..17e4786 Binary files /dev/null and b/technic/textures/technic_constructor_mk1_side2_on.png differ diff --git a/technic/textures/technic_constructor_mk1_top_off.png b/technic/textures/technic_constructor_mk1_top_off.png new file mode 100644 index 0000000..9f3846c Binary files /dev/null and b/technic/textures/technic_constructor_mk1_top_off.png differ diff --git a/technic/textures/technic_constructor_mk1_top_on.png b/technic/textures/technic_constructor_mk1_top_on.png new file mode 100644 index 0000000..5c8d6fb Binary files /dev/null and b/technic/textures/technic_constructor_mk1_top_on.png differ diff --git a/technic/textures/technic_constructor_mk2_bottom_off.png b/technic/textures/technic_constructor_mk2_bottom_off.png new file mode 100644 index 0000000..e926dda Binary files /dev/null and b/technic/textures/technic_constructor_mk2_bottom_off.png differ diff --git a/technic/textures/technic_constructor_mk2_bottom_on.png b/technic/textures/technic_constructor_mk2_bottom_on.png new file mode 100644 index 0000000..52d739b Binary files /dev/null and b/technic/textures/technic_constructor_mk2_bottom_on.png differ diff --git a/technic/textures/technic_constructor_mk2_side1_off.png b/technic/textures/technic_constructor_mk2_side1_off.png new file mode 100644 index 0000000..2fd42a2 Binary files /dev/null and b/technic/textures/technic_constructor_mk2_side1_off.png differ diff --git a/technic/textures/technic_constructor_mk2_side1_on.png b/technic/textures/technic_constructor_mk2_side1_on.png new file mode 100644 index 0000000..4c75c83 Binary files /dev/null and b/technic/textures/technic_constructor_mk2_side1_on.png differ diff --git a/technic/textures/technic_constructor_mk2_side2_off.png b/technic/textures/technic_constructor_mk2_side2_off.png new file mode 100644 index 0000000..f6407e7 Binary files /dev/null and b/technic/textures/technic_constructor_mk2_side2_off.png differ diff --git a/technic/textures/technic_constructor_mk2_side2_on.png b/technic/textures/technic_constructor_mk2_side2_on.png new file mode 100644 index 0000000..e40db48 Binary files /dev/null and b/technic/textures/technic_constructor_mk2_side2_on.png differ diff --git a/technic/textures/technic_constructor_mk2_top_off.png b/technic/textures/technic_constructor_mk2_top_off.png new file mode 100644 index 0000000..e5227d1 Binary files /dev/null and b/technic/textures/technic_constructor_mk2_top_off.png differ diff --git a/technic/textures/technic_constructor_mk2_top_on.png b/technic/textures/technic_constructor_mk2_top_on.png new file mode 100644 index 0000000..9762bd6 Binary files /dev/null and b/technic/textures/technic_constructor_mk2_top_on.png differ diff --git a/technic/textures/technic_constructor_mk3_bottom_off.png b/technic/textures/technic_constructor_mk3_bottom_off.png new file mode 100644 index 0000000..606d97e Binary files /dev/null and b/technic/textures/technic_constructor_mk3_bottom_off.png differ diff --git a/technic/textures/technic_constructor_mk3_bottom_on.png b/technic/textures/technic_constructor_mk3_bottom_on.png new file mode 100644 index 0000000..878e4ff Binary files /dev/null and b/technic/textures/technic_constructor_mk3_bottom_on.png differ diff --git a/technic/textures/technic_constructor_mk3_side1_off.png b/technic/textures/technic_constructor_mk3_side1_off.png new file mode 100644 index 0000000..84dd7eb Binary files /dev/null and b/technic/textures/technic_constructor_mk3_side1_off.png differ diff --git a/technic/textures/technic_constructor_mk3_side1_on.png b/technic/textures/technic_constructor_mk3_side1_on.png new file mode 100644 index 0000000..2741d2d Binary files /dev/null and b/technic/textures/technic_constructor_mk3_side1_on.png differ diff --git a/technic/textures/technic_constructor_mk3_side2_off.png b/technic/textures/technic_constructor_mk3_side2_off.png new file mode 100644 index 0000000..75a5031 Binary files /dev/null and b/technic/textures/technic_constructor_mk3_side2_off.png differ diff --git a/technic/textures/technic_constructor_mk3_side2_on.png b/technic/textures/technic_constructor_mk3_side2_on.png new file mode 100644 index 0000000..0a150ed Binary files /dev/null and b/technic/textures/technic_constructor_mk3_side2_on.png differ diff --git a/technic/textures/technic_constructor_mk3_top_off.png b/technic/textures/technic_constructor_mk3_top_off.png new file mode 100644 index 0000000..c716752 Binary files /dev/null and b/technic/textures/technic_constructor_mk3_top_off.png differ diff --git a/technic/textures/technic_constructor_mk3_top_on.png b/technic/textures/technic_constructor_mk3_top_on.png new file mode 100644 index 0000000..acbe85b Binary files /dev/null and b/technic/textures/technic_constructor_mk3_top_on.png differ diff --git a/technic/textures/technic_control_logic_unit.png b/technic/textures/technic_control_logic_unit.png new file mode 100644 index 0000000..c7b4b16 Binary files /dev/null and b/technic/textures/technic_control_logic_unit.png differ diff --git a/technic/textures/technic_copper_coil.png b/technic/textures/technic_copper_coil.png new file mode 100644 index 0000000..db6db1a Binary files /dev/null and b/technic/textures/technic_copper_coil.png differ diff --git a/technic/textures/technic_copper_dust.png b/technic/textures/technic_copper_dust.png new file mode 100644 index 0000000..cad33ea Binary files /dev/null and b/technic/textures/technic_copper_dust.png differ diff --git a/technic/textures/technic_copper_plate.png b/technic/textures/technic_copper_plate.png new file mode 100644 index 0000000..99a49c8 Binary files /dev/null and b/technic/textures/technic_copper_plate.png differ diff --git a/technic/textures/technic_corium_flowing_animated.png b/technic/textures/technic_corium_flowing_animated.png new file mode 100644 index 0000000..1d29f16 Binary files /dev/null and b/technic/textures/technic_corium_flowing_animated.png differ diff --git a/technic/textures/technic_corium_source_animated.png b/technic/textures/technic_corium_source_animated.png new file mode 100644 index 0000000..6c3ee56 Binary files /dev/null and b/technic/textures/technic_corium_source_animated.png differ diff --git a/technic/textures/technic_deployer_back.png b/technic/textures/technic_deployer_back.png new file mode 100644 index 0000000..12e5a31 Binary files /dev/null and b/technic/textures/technic_deployer_back.png differ diff --git a/technic/textures/technic_deployer_bottom.png b/technic/textures/technic_deployer_bottom.png new file mode 100644 index 0000000..febbe18 Binary files /dev/null and b/technic/textures/technic_deployer_bottom.png differ diff --git a/technic/textures/technic_deployer_front_off.png b/technic/textures/technic_deployer_front_off.png new file mode 100644 index 0000000..9593112 Binary files /dev/null and b/technic/textures/technic_deployer_front_off.png differ diff --git a/technic/textures/technic_deployer_front_on.png b/technic/textures/technic_deployer_front_on.png new file mode 100644 index 0000000..f78de4c Binary files /dev/null and b/technic/textures/technic_deployer_front_on.png differ diff --git a/technic/textures/technic_deployer_side.png b/technic/textures/technic_deployer_side.png new file mode 100644 index 0000000..73af8f8 Binary files /dev/null and b/technic/textures/technic_deployer_side.png differ diff --git a/technic/textures/technic_deployer_side1.png b/technic/textures/technic_deployer_side1.png new file mode 100644 index 0000000..8ef28d3 Binary files /dev/null and b/technic/textures/technic_deployer_side1.png differ diff --git a/technic/textures/technic_deployer_side2.png b/technic/textures/technic_deployer_side2.png new file mode 100644 index 0000000..ccb2cb9 Binary files /dev/null and b/technic/textures/technic_deployer_side2.png differ diff --git a/technic/textures/technic_deployer_top.png b/technic/textures/technic_deployer_top.png new file mode 100644 index 0000000..262c9f6 Binary files /dev/null and b/technic/textures/technic_deployer_top.png differ diff --git a/technic/textures/technic_diamond_block_blue.png b/technic/textures/technic_diamond_block_blue.png new file mode 100644 index 0000000..9f59fba Binary files /dev/null and b/technic/textures/technic_diamond_block_blue.png differ diff --git a/technic/textures/technic_diamond_block_green.png b/technic/textures/technic_diamond_block_green.png new file mode 100644 index 0000000..585c4b8 Binary files /dev/null and b/technic/textures/technic_diamond_block_green.png differ diff --git a/technic/textures/technic_diamond_block_red.png b/technic/textures/technic_diamond_block_red.png new file mode 100644 index 0000000..ed30957 Binary files /dev/null and b/technic/textures/technic_diamond_block_red.png differ diff --git a/technic/textures/technic_diamond_drill_head.png b/technic/textures/technic_diamond_drill_head.png new file mode 100644 index 0000000..e3d31e8 Binary files /dev/null and b/technic/textures/technic_diamond_drill_head.png differ diff --git a/technic/textures/technic_doped_silicon_wafer.png b/technic/textures/technic_doped_silicon_wafer.png new file mode 100644 index 0000000..6365137 Binary files /dev/null and b/technic/textures/technic_doped_silicon_wafer.png differ diff --git a/technic/textures/technic_fine_copper_wire.png b/technic/textures/technic_fine_copper_wire.png new file mode 100644 index 0000000..3e663bb Binary files /dev/null and b/technic/textures/technic_fine_copper_wire.png differ diff --git a/technic/textures/technic_fine_gold_wire.png b/technic/textures/technic_fine_gold_wire.png new file mode 100644 index 0000000..54a7a52 Binary files /dev/null and b/technic/textures/technic_fine_gold_wire.png differ diff --git a/technic/textures/technic_fine_silver_wire.png b/technic/textures/technic_fine_silver_wire.png new file mode 100644 index 0000000..f40a52b Binary files /dev/null and b/technic/textures/technic_fine_silver_wire.png differ diff --git a/technic/textures/technic_flashlight.png b/technic/textures/technic_flashlight.png new file mode 100644 index 0000000..8e7b75a Binary files /dev/null and b/technic/textures/technic_flashlight.png differ diff --git a/technic/textures/technic_forcefield_animated.png b/technic/textures/technic_forcefield_animated.png new file mode 100644 index 0000000..7763840 Binary files /dev/null and b/technic/textures/technic_forcefield_animated.png differ diff --git a/technic/textures/technic_forcefield_emitter_off.png b/technic/textures/technic_forcefield_emitter_off.png new file mode 100644 index 0000000..4c4582f Binary files /dev/null and b/technic/textures/technic_forcefield_emitter_off.png differ diff --git a/technic/textures/technic_forcefield_emitter_on.png b/technic/textures/technic_forcefield_emitter_on.png new file mode 100644 index 0000000..1f32af6 Binary files /dev/null and b/technic/textures/technic_forcefield_emitter_on.png differ diff --git a/technic/textures/technic_frame.png b/technic/textures/technic_frame.png new file mode 100644 index 0000000..4998120 Binary files /dev/null and b/technic/textures/technic_frame.png differ diff --git a/technic/textures/technic_geothermal_side.png b/technic/textures/technic_geothermal_side.png new file mode 100644 index 0000000..90fb430 Binary files /dev/null and b/technic/textures/technic_geothermal_side.png differ diff --git a/technic/textures/technic_geothermal_top.png b/technic/textures/technic_geothermal_top.png new file mode 100644 index 0000000..601ff15 Binary files /dev/null and b/technic/textures/technic_geothermal_top.png differ diff --git a/technic/textures/technic_geothermal_top_active.png b/technic/textures/technic_geothermal_top_active.png new file mode 100644 index 0000000..f02bec6 Binary files /dev/null and b/technic/textures/technic_geothermal_top_active.png differ diff --git a/technic/textures/technic_gold_dust.png b/technic/textures/technic_gold_dust.png new file mode 100644 index 0000000..48c24ae Binary files /dev/null and b/technic/textures/technic_gold_dust.png differ diff --git a/technic/textures/technic_graphite.png b/technic/textures/technic_graphite.png new file mode 100644 index 0000000..00cd0ee Binary files /dev/null and b/technic/textures/technic_graphite.png differ diff --git a/technic/textures/technic_grinder_front.png b/technic/textures/technic_grinder_front.png new file mode 100644 index 0000000..a28dbc1 Binary files /dev/null and b/technic/textures/technic_grinder_front.png differ diff --git a/technic/textures/technic_grinder_side.png b/technic/textures/technic_grinder_side.png new file mode 100644 index 0000000..af562f2 Binary files /dev/null and b/technic/textures/technic_grinder_side.png differ diff --git a/technic/textures/technic_grinder_top.png b/technic/textures/technic_grinder_top.png new file mode 100644 index 0000000..b074e13 Binary files /dev/null and b/technic/textures/technic_grinder_top.png differ diff --git a/technic/textures/technic_homedecor_glowlight_cube_white_sides.png b/technic/textures/technic_homedecor_glowlight_cube_white_sides.png new file mode 100644 index 0000000..9121999 Binary files /dev/null and b/technic/textures/technic_homedecor_glowlight_cube_white_sides.png differ diff --git a/technic/textures/technic_homedecor_glowlight_cube_white_sides_ceiling.png b/technic/textures/technic_homedecor_glowlight_cube_white_sides_ceiling.png new file mode 100644 index 0000000..c8006eb Binary files /dev/null and b/technic/textures/technic_homedecor_glowlight_cube_white_sides_ceiling.png differ diff --git a/technic/textures/technic_homedecor_glowlight_cube_white_tb.png b/technic/textures/technic_homedecor_glowlight_cube_white_tb.png new file mode 100644 index 0000000..b2e355a Binary files /dev/null and b/technic/textures/technic_homedecor_glowlight_cube_white_tb.png differ diff --git a/technic/textures/technic_homedecor_glowlight_cube_yellow_sides.png b/technic/textures/technic_homedecor_glowlight_cube_yellow_sides.png new file mode 100644 index 0000000..b79be07 Binary files /dev/null and b/technic/textures/technic_homedecor_glowlight_cube_yellow_sides.png differ diff --git a/technic/textures/technic_homedecor_glowlight_cube_yellow_sides_ceiling.png b/technic/textures/technic_homedecor_glowlight_cube_yellow_sides_ceiling.png new file mode 100644 index 0000000..a9d397a Binary files /dev/null and b/technic/textures/technic_homedecor_glowlight_cube_yellow_sides_ceiling.png differ diff --git a/technic/textures/technic_homedecor_glowlight_cube_yellow_tb.png b/technic/textures/technic_homedecor_glowlight_cube_yellow_tb.png new file mode 100644 index 0000000..daf03ab Binary files /dev/null and b/technic/textures/technic_homedecor_glowlight_cube_yellow_tb.png differ diff --git a/technic/textures/technic_homedecor_glowlight_thick_white_sides.png b/technic/textures/technic_homedecor_glowlight_thick_white_sides.png new file mode 100644 index 0000000..44c2b36 Binary files /dev/null and b/technic/textures/technic_homedecor_glowlight_thick_white_sides.png differ diff --git a/technic/textures/technic_homedecor_glowlight_thick_white_wall_sides.png b/technic/textures/technic_homedecor_glowlight_thick_white_wall_sides.png new file mode 100644 index 0000000..937999e Binary files /dev/null and b/technic/textures/technic_homedecor_glowlight_thick_white_wall_sides.png differ diff --git a/technic/textures/technic_homedecor_glowlight_thick_yellow_sides.png b/technic/textures/technic_homedecor_glowlight_thick_yellow_sides.png new file mode 100644 index 0000000..769b054 Binary files /dev/null and b/technic/textures/technic_homedecor_glowlight_thick_yellow_sides.png differ diff --git a/technic/textures/technic_homedecor_glowlight_thick_yellow_wall_sides.png b/technic/textures/technic_homedecor_glowlight_thick_yellow_wall_sides.png new file mode 100644 index 0000000..57820f1 Binary files /dev/null and b/technic/textures/technic_homedecor_glowlight_thick_yellow_wall_sides.png differ diff --git a/technic/textures/technic_homedecor_glowlight_thin_white_sides.png b/technic/textures/technic_homedecor_glowlight_thin_white_sides.png new file mode 100644 index 0000000..0a337a5 Binary files /dev/null and b/technic/textures/technic_homedecor_glowlight_thin_white_sides.png differ diff --git a/technic/textures/technic_homedecor_glowlight_thin_white_wall_sides.png b/technic/textures/technic_homedecor_glowlight_thin_white_wall_sides.png new file mode 100644 index 0000000..0fd3b1e Binary files /dev/null and b/technic/textures/technic_homedecor_glowlight_thin_white_wall_sides.png differ diff --git a/technic/textures/technic_homedecor_glowlight_thin_yellow_sides.png b/technic/textures/technic_homedecor_glowlight_thin_yellow_sides.png new file mode 100644 index 0000000..55bb6c0 Binary files /dev/null and b/technic/textures/technic_homedecor_glowlight_thin_yellow_sides.png differ diff --git a/technic/textures/technic_homedecor_glowlight_thin_yellow_wall_sides.png b/technic/textures/technic_homedecor_glowlight_thin_yellow_wall_sides.png new file mode 100644 index 0000000..4b28a27 Binary files /dev/null and b/technic/textures/technic_homedecor_glowlight_thin_yellow_wall_sides.png differ diff --git a/technic/textures/technic_homedecor_glowlight_white_tb.png b/technic/textures/technic_homedecor_glowlight_white_tb.png new file mode 100644 index 0000000..fdc8a4d Binary files /dev/null and b/technic/textures/technic_homedecor_glowlight_white_tb.png differ diff --git a/technic/textures/technic_homedecor_glowlight_yellow_tb.png b/technic/textures/technic_homedecor_glowlight_yellow_tb.png new file mode 100644 index 0000000..ffd9c58 Binary files /dev/null and b/technic/textures/technic_homedecor_glowlight_yellow_tb.png differ diff --git a/technic/textures/technic_hv_battery_box_bottom.png b/technic/textures/technic_hv_battery_box_bottom.png new file mode 100644 index 0000000..996b2d4 Binary files /dev/null and b/technic/textures/technic_hv_battery_box_bottom.png differ diff --git a/technic/textures/technic_hv_battery_box_side.png b/technic/textures/technic_hv_battery_box_side.png new file mode 100644 index 0000000..fffd8ea Binary files /dev/null and b/technic/textures/technic_hv_battery_box_side.png differ diff --git a/technic/textures/technic_hv_battery_box_top.png b/technic/textures/technic_hv_battery_box_top.png new file mode 100644 index 0000000..49dee71 Binary files /dev/null and b/technic/textures/technic_hv_battery_box_top.png differ diff --git a/technic/textures/technic_hv_cable.png b/technic/textures/technic_hv_cable.png new file mode 100644 index 0000000..7cb368d Binary files /dev/null and b/technic/textures/technic_hv_cable.png differ diff --git a/technic/textures/technic_hv_cable_wield.png b/technic/textures/technic_hv_cable_wield.png new file mode 100644 index 0000000..7b9ca58 Binary files /dev/null and b/technic/textures/technic_hv_cable_wield.png differ diff --git a/technic/textures/technic_hv_down_converter_bottom.png b/technic/textures/technic_hv_down_converter_bottom.png new file mode 100644 index 0000000..996b2d4 Binary files /dev/null and b/technic/textures/technic_hv_down_converter_bottom.png differ diff --git a/technic/textures/technic_hv_down_converter_side.png b/technic/textures/technic_hv_down_converter_side.png new file mode 100644 index 0000000..ab904f1 Binary files /dev/null and b/technic/textures/technic_hv_down_converter_side.png differ diff --git a/technic/textures/technic_hv_down_converter_top.png b/technic/textures/technic_hv_down_converter_top.png new file mode 100644 index 0000000..996b2d4 Binary files /dev/null and b/technic/textures/technic_hv_down_converter_top.png differ diff --git a/technic/textures/technic_hv_generator_front.png b/technic/textures/technic_hv_generator_front.png new file mode 100644 index 0000000..6a14686 Binary files /dev/null and b/technic/textures/technic_hv_generator_front.png differ diff --git a/technic/textures/technic_hv_generator_front_active.png b/technic/textures/technic_hv_generator_front_active.png new file mode 100644 index 0000000..d92c699 Binary files /dev/null and b/technic/textures/technic_hv_generator_front_active.png differ diff --git a/technic/textures/technic_hv_generator_side.png b/technic/textures/technic_hv_generator_side.png new file mode 100644 index 0000000..3073e0f Binary files /dev/null and b/technic/textures/technic_hv_generator_side.png differ diff --git a/technic/textures/technic_hv_generator_top.png b/technic/textures/technic_hv_generator_top.png new file mode 100644 index 0000000..646168c Binary files /dev/null and b/technic/textures/technic_hv_generator_top.png differ diff --git a/technic/textures/technic_hv_grinder_bottom.png b/technic/textures/technic_hv_grinder_bottom.png new file mode 100644 index 0000000..fa2c135 Binary files /dev/null and b/technic/textures/technic_hv_grinder_bottom.png differ diff --git a/technic/textures/technic_hv_grinder_front.png b/technic/textures/technic_hv_grinder_front.png new file mode 100644 index 0000000..a5bca0a Binary files /dev/null and b/technic/textures/technic_hv_grinder_front.png differ diff --git a/technic/textures/technic_hv_grinder_front_active.png b/technic/textures/technic_hv_grinder_front_active.png new file mode 100644 index 0000000..4077630 Binary files /dev/null and b/technic/textures/technic_hv_grinder_front_active.png differ diff --git a/technic/textures/technic_hv_grinder_side.png b/technic/textures/technic_hv_grinder_side.png new file mode 100644 index 0000000..c3063c4 Binary files /dev/null and b/technic/textures/technic_hv_grinder_side.png differ diff --git a/technic/textures/technic_hv_grinder_side_tube.png b/technic/textures/technic_hv_grinder_side_tube.png new file mode 100644 index 0000000..43bcca5 Binary files /dev/null and b/technic/textures/technic_hv_grinder_side_tube.png differ diff --git a/technic/textures/technic_hv_grinder_top.png b/technic/textures/technic_hv_grinder_top.png new file mode 100644 index 0000000..e0df36b Binary files /dev/null and b/technic/textures/technic_hv_grinder_top.png differ diff --git a/technic/textures/technic_hv_nuclear_reactor_core.png b/technic/textures/technic_hv_nuclear_reactor_core.png new file mode 100644 index 0000000..4661177 Binary files /dev/null and b/technic/textures/technic_hv_nuclear_reactor_core.png differ diff --git a/technic/textures/technic_hv_solar_array_bottom.png b/technic/textures/technic_hv_solar_array_bottom.png new file mode 100644 index 0000000..596e79a Binary files /dev/null and b/technic/textures/technic_hv_solar_array_bottom.png differ diff --git a/technic/textures/technic_hv_solar_array_side.png b/technic/textures/technic_hv_solar_array_side.png new file mode 100644 index 0000000..a3aa8c7 Binary files /dev/null and b/technic/textures/technic_hv_solar_array_side.png differ diff --git a/technic/textures/technic_hv_solar_array_top.png b/technic/textures/technic_hv_solar_array_top.png new file mode 100644 index 0000000..b7f0b43 Binary files /dev/null and b/technic/textures/technic_hv_solar_array_top.png differ diff --git a/technic/textures/technic_hv_transformer.png b/technic/textures/technic_hv_transformer.png new file mode 100644 index 0000000..e1d4c98 Binary files /dev/null and b/technic/textures/technic_hv_transformer.png differ diff --git a/technic/textures/technic_injector_bottom.png b/technic/textures/technic_injector_bottom.png new file mode 100644 index 0000000..39916bd Binary files /dev/null and b/technic/textures/technic_injector_bottom.png differ diff --git a/technic/textures/technic_injector_side.png b/technic/textures/technic_injector_side.png new file mode 100644 index 0000000..a5419a1 Binary files /dev/null and b/technic/textures/technic_injector_side.png differ diff --git a/technic/textures/technic_injector_top.png b/technic/textures/technic_injector_top.png new file mode 100644 index 0000000..440649c Binary files /dev/null and b/technic/textures/technic_injector_top.png differ diff --git a/technic/textures/technic_kalite_dust.png b/technic/textures/technic_kalite_dust.png new file mode 100644 index 0000000..3a9e10f Binary files /dev/null and b/technic/textures/technic_kalite_dust.png differ diff --git a/technic/textures/technic_laser_beam_mk1.png b/technic/textures/technic_laser_beam_mk1.png new file mode 100644 index 0000000..4cf9b3e Binary files /dev/null and b/technic/textures/technic_laser_beam_mk1.png differ diff --git a/technic/textures/technic_laser_beam_mk2.png b/technic/textures/technic_laser_beam_mk2.png new file mode 100644 index 0000000..9e27a8c Binary files /dev/null and b/technic/textures/technic_laser_beam_mk2.png differ diff --git a/technic/textures/technic_laser_beam_mk3.png b/technic/textures/technic_laser_beam_mk3.png new file mode 100644 index 0000000..5a17e83 Binary files /dev/null and b/technic/textures/technic_laser_beam_mk3.png differ diff --git a/technic/textures/technic_lava_can.png b/technic/textures/technic_lava_can.png new file mode 100644 index 0000000..abe1a8c Binary files /dev/null and b/technic/textures/technic_lava_can.png differ diff --git a/technic/textures/technic_light.png b/technic/textures/technic_light.png new file mode 100644 index 0000000..334cb07 Binary files /dev/null and b/technic/textures/technic_light.png differ diff --git a/technic/textures/technic_lv_alloy_furnace_bottom.png b/technic/textures/technic_lv_alloy_furnace_bottom.png new file mode 100644 index 0000000..2c0aaee Binary files /dev/null and b/technic/textures/technic_lv_alloy_furnace_bottom.png differ diff --git a/technic/textures/technic_lv_alloy_furnace_front.png b/technic/textures/technic_lv_alloy_furnace_front.png new file mode 100644 index 0000000..2d65cda Binary files /dev/null and b/technic/textures/technic_lv_alloy_furnace_front.png differ diff --git a/technic/textures/technic_lv_alloy_furnace_front_active.png b/technic/textures/technic_lv_alloy_furnace_front_active.png new file mode 100644 index 0000000..1ced989 Binary files /dev/null and b/technic/textures/technic_lv_alloy_furnace_front_active.png differ diff --git a/technic/textures/technic_lv_alloy_furnace_side.png b/technic/textures/technic_lv_alloy_furnace_side.png new file mode 100644 index 0000000..778ad88 Binary files /dev/null and b/technic/textures/technic_lv_alloy_furnace_side.png differ diff --git a/technic/textures/technic_lv_alloy_furnace_top.png b/technic/textures/technic_lv_alloy_furnace_top.png new file mode 100644 index 0000000..706793b Binary files /dev/null and b/technic/textures/technic_lv_alloy_furnace_top.png differ diff --git a/technic/textures/technic_lv_battery_box_bottom.png b/technic/textures/technic_lv_battery_box_bottom.png new file mode 100644 index 0000000..a6124e6 Binary files /dev/null and b/technic/textures/technic_lv_battery_box_bottom.png differ diff --git a/technic/textures/technic_lv_battery_box_side.png b/technic/textures/technic_lv_battery_box_side.png new file mode 100644 index 0000000..24d4e4e Binary files /dev/null and b/technic/textures/technic_lv_battery_box_side.png differ diff --git a/technic/textures/technic_lv_battery_box_top.png b/technic/textures/technic_lv_battery_box_top.png new file mode 100644 index 0000000..b32100f Binary files /dev/null and b/technic/textures/technic_lv_battery_box_top.png differ diff --git a/technic/textures/technic_lv_cable.png b/technic/textures/technic_lv_cable.png new file mode 100644 index 0000000..0071bc9 Binary files /dev/null and b/technic/textures/technic_lv_cable.png differ diff --git a/technic/textures/technic_lv_cable_wield.png b/technic/textures/technic_lv_cable_wield.png new file mode 100644 index 0000000..bc7704d Binary files /dev/null and b/technic/textures/technic_lv_cable_wield.png differ diff --git a/technic/textures/technic_lv_compressor_back.png b/technic/textures/technic_lv_compressor_back.png new file mode 100644 index 0000000..11286e3 Binary files /dev/null and b/technic/textures/technic_lv_compressor_back.png differ diff --git a/technic/textures/technic_lv_compressor_bottom.png b/technic/textures/technic_lv_compressor_bottom.png new file mode 100644 index 0000000..886f27e Binary files /dev/null and b/technic/textures/technic_lv_compressor_bottom.png differ diff --git a/technic/textures/technic_lv_compressor_front.png b/technic/textures/technic_lv_compressor_front.png new file mode 100644 index 0000000..007d6de Binary files /dev/null and b/technic/textures/technic_lv_compressor_front.png differ diff --git a/technic/textures/technic_lv_compressor_front_active.png b/technic/textures/technic_lv_compressor_front_active.png new file mode 100644 index 0000000..b3d27c0 Binary files /dev/null and b/technic/textures/technic_lv_compressor_front_active.png differ diff --git a/technic/textures/technic_lv_compressor_side.png b/technic/textures/technic_lv_compressor_side.png new file mode 100644 index 0000000..87acda6 Binary files /dev/null and b/technic/textures/technic_lv_compressor_side.png differ diff --git a/technic/textures/technic_lv_compressor_top.png b/technic/textures/technic_lv_compressor_top.png new file mode 100644 index 0000000..786b859 Binary files /dev/null and b/technic/textures/technic_lv_compressor_top.png differ diff --git a/technic/textures/technic_lv_electric_furnace_bottom.png b/technic/textures/technic_lv_electric_furnace_bottom.png new file mode 100644 index 0000000..15fa6de Binary files /dev/null and b/technic/textures/technic_lv_electric_furnace_bottom.png differ diff --git a/technic/textures/technic_lv_electric_furnace_front.png b/technic/textures/technic_lv_electric_furnace_front.png new file mode 100644 index 0000000..755aadf Binary files /dev/null and b/technic/textures/technic_lv_electric_furnace_front.png differ diff --git a/technic/textures/technic_lv_electric_furnace_front_active.png b/technic/textures/technic_lv_electric_furnace_front_active.png new file mode 100644 index 0000000..de7f1f9 Binary files /dev/null and b/technic/textures/technic_lv_electric_furnace_front_active.png differ diff --git a/technic/textures/technic_lv_electric_furnace_side.png b/technic/textures/technic_lv_electric_furnace_side.png new file mode 100644 index 0000000..80cf742 Binary files /dev/null and b/technic/textures/technic_lv_electric_furnace_side.png differ diff --git a/technic/textures/technic_lv_electric_furnace_top.png b/technic/textures/technic_lv_electric_furnace_top.png new file mode 100644 index 0000000..fbadd9a Binary files /dev/null and b/technic/textures/technic_lv_electric_furnace_top.png differ diff --git a/technic/textures/technic_lv_extractor_bottom.png b/technic/textures/technic_lv_extractor_bottom.png new file mode 100644 index 0000000..aecd719 Binary files /dev/null and b/technic/textures/technic_lv_extractor_bottom.png differ diff --git a/technic/textures/technic_lv_extractor_front.png b/technic/textures/technic_lv_extractor_front.png new file mode 100644 index 0000000..1bd7e9a Binary files /dev/null and b/technic/textures/technic_lv_extractor_front.png differ diff --git a/technic/textures/technic_lv_extractor_front_active.png b/technic/textures/technic_lv_extractor_front_active.png new file mode 100644 index 0000000..7f8b30a Binary files /dev/null and b/technic/textures/technic_lv_extractor_front_active.png differ diff --git a/technic/textures/technic_lv_extractor_side.png b/technic/textures/technic_lv_extractor_side.png new file mode 100644 index 0000000..99d9486 Binary files /dev/null and b/technic/textures/technic_lv_extractor_side.png differ diff --git a/technic/textures/technic_lv_extractor_top.png b/technic/textures/technic_lv_extractor_top.png new file mode 100644 index 0000000..e7d9ff9 Binary files /dev/null and b/technic/textures/technic_lv_extractor_top.png differ diff --git a/technic/textures/technic_lv_generator_front.png b/technic/textures/technic_lv_generator_front.png new file mode 100644 index 0000000..2d64844 Binary files /dev/null and b/technic/textures/technic_lv_generator_front.png differ diff --git a/technic/textures/technic_lv_generator_front_active.png b/technic/textures/technic_lv_generator_front_active.png new file mode 100644 index 0000000..4e57ca0 Binary files /dev/null and b/technic/textures/technic_lv_generator_front_active.png differ diff --git a/technic/textures/technic_lv_generator_side.png b/technic/textures/technic_lv_generator_side.png new file mode 100644 index 0000000..5cbcbef Binary files /dev/null and b/technic/textures/technic_lv_generator_side.png differ diff --git a/technic/textures/technic_lv_generator_top.png b/technic/textures/technic_lv_generator_top.png new file mode 100644 index 0000000..e2f3db3 Binary files /dev/null and b/technic/textures/technic_lv_generator_top.png differ diff --git a/technic/textures/technic_lv_grinder_bottom.png b/technic/textures/technic_lv_grinder_bottom.png new file mode 100644 index 0000000..aecd719 Binary files /dev/null and b/technic/textures/technic_lv_grinder_bottom.png differ diff --git a/technic/textures/technic_lv_grinder_front.png b/technic/textures/technic_lv_grinder_front.png new file mode 100644 index 0000000..1bd7e9a Binary files /dev/null and b/technic/textures/technic_lv_grinder_front.png differ diff --git a/technic/textures/technic_lv_grinder_front_active.png b/technic/textures/technic_lv_grinder_front_active.png new file mode 100644 index 0000000..7f8b30a Binary files /dev/null and b/technic/textures/technic_lv_grinder_front_active.png differ diff --git a/technic/textures/technic_lv_grinder_side.png b/technic/textures/technic_lv_grinder_side.png new file mode 100644 index 0000000..99d9486 Binary files /dev/null and b/technic/textures/technic_lv_grinder_side.png differ diff --git a/technic/textures/technic_lv_grinder_top.png b/technic/textures/technic_lv_grinder_top.png new file mode 100644 index 0000000..e7d9ff9 Binary files /dev/null and b/technic/textures/technic_lv_grinder_top.png differ diff --git a/technic/textures/technic_lv_solar_array_bottom.png b/technic/textures/technic_lv_solar_array_bottom.png new file mode 100644 index 0000000..9e888e3 Binary files /dev/null and b/technic/textures/technic_lv_solar_array_bottom.png differ diff --git a/technic/textures/technic_lv_solar_array_side.png b/technic/textures/technic_lv_solar_array_side.png new file mode 100644 index 0000000..b22447e Binary files /dev/null and b/technic/textures/technic_lv_solar_array_side.png differ diff --git a/technic/textures/technic_lv_solar_array_top.png b/technic/textures/technic_lv_solar_array_top.png new file mode 100644 index 0000000..cabd315 Binary files /dev/null and b/technic/textures/technic_lv_solar_array_top.png differ diff --git a/technic/textures/technic_lv_transformer.png b/technic/textures/technic_lv_transformer.png new file mode 100644 index 0000000..613b196 Binary files /dev/null and b/technic/textures/technic_lv_transformer.png differ diff --git a/technic/textures/technic_machine_bottom.png b/technic/textures/technic_machine_bottom.png new file mode 100644 index 0000000..48a47b0 Binary files /dev/null and b/technic/textures/technic_machine_bottom.png differ diff --git a/technic/textures/technic_machine_casing.png b/technic/textures/technic_machine_casing.png new file mode 100644 index 0000000..d596733 Binary files /dev/null and b/technic/textures/technic_machine_casing.png differ diff --git a/technic/textures/technic_mining_drill.png b/technic/textures/technic_mining_drill.png new file mode 100644 index 0000000..171888d Binary files /dev/null and b/technic/textures/technic_mining_drill.png differ diff --git a/technic/textures/technic_mining_drill_mk2.png b/technic/textures/technic_mining_drill_mk2.png new file mode 100644 index 0000000..30be719 Binary files /dev/null and b/technic/textures/technic_mining_drill_mk2.png differ diff --git a/technic/textures/technic_mining_drill_mk3.png b/technic/textures/technic_mining_drill_mk3.png new file mode 100644 index 0000000..30de896 Binary files /dev/null and b/technic/textures/technic_mining_drill_mk3.png differ diff --git a/technic/textures/technic_mining_laser_mk1.png b/technic/textures/technic_mining_laser_mk1.png new file mode 100644 index 0000000..29faeb4 Binary files /dev/null and b/technic/textures/technic_mining_laser_mk1.png differ diff --git a/technic/textures/technic_mining_laser_mk2.png b/technic/textures/technic_mining_laser_mk2.png new file mode 100644 index 0000000..2d67c0f Binary files /dev/null and b/technic/textures/technic_mining_laser_mk2.png differ diff --git a/technic/textures/technic_mining_laser_mk3.png b/technic/textures/technic_mining_laser_mk3.png new file mode 100644 index 0000000..db9ee26 Binary files /dev/null and b/technic/textures/technic_mining_laser_mk3.png differ diff --git a/technic/textures/technic_mithril_dust.png b/technic/textures/technic_mithril_dust.png new file mode 100644 index 0000000..adfbe6c Binary files /dev/null and b/technic/textures/technic_mithril_dust.png differ diff --git a/technic/textures/technic_mixed_metal_ingot.png b/technic/textures/technic_mixed_metal_ingot.png new file mode 100644 index 0000000..8f6847b Binary files /dev/null and b/technic/textures/technic_mixed_metal_ingot.png differ diff --git a/technic/textures/technic_motor.png b/technic/textures/technic_motor.png new file mode 100644 index 0000000..77d4b91 Binary files /dev/null and b/technic/textures/technic_motor.png differ diff --git a/technic/textures/technic_music_player_bottom.png b/technic/textures/technic_music_player_bottom.png new file mode 100644 index 0000000..bd8fd55 Binary files /dev/null and b/technic/textures/technic_music_player_bottom.png differ diff --git a/technic/textures/technic_music_player_side.png b/technic/textures/technic_music_player_side.png new file mode 100644 index 0000000..6c34fea Binary files /dev/null and b/technic/textures/technic_music_player_side.png differ diff --git a/technic/textures/technic_music_player_top.png b/technic/textures/technic_music_player_top.png new file mode 100644 index 0000000..0d34563 Binary files /dev/null and b/technic/textures/technic_music_player_top.png differ diff --git a/technic/textures/technic_mv_alloy_furnace_bottom.png b/technic/textures/technic_mv_alloy_furnace_bottom.png new file mode 100644 index 0000000..2c0aaee Binary files /dev/null and b/technic/textures/technic_mv_alloy_furnace_bottom.png differ diff --git a/technic/textures/technic_mv_alloy_furnace_front.png b/technic/textures/technic_mv_alloy_furnace_front.png new file mode 100644 index 0000000..a5dac82 Binary files /dev/null and b/technic/textures/technic_mv_alloy_furnace_front.png differ diff --git a/technic/textures/technic_mv_alloy_furnace_front_active.png b/technic/textures/technic_mv_alloy_furnace_front_active.png new file mode 100644 index 0000000..f6e69a9 Binary files /dev/null and b/technic/textures/technic_mv_alloy_furnace_front_active.png differ diff --git a/technic/textures/technic_mv_alloy_furnace_side.png b/technic/textures/technic_mv_alloy_furnace_side.png new file mode 100644 index 0000000..0430479 Binary files /dev/null and b/technic/textures/technic_mv_alloy_furnace_side.png differ diff --git a/technic/textures/technic_mv_alloy_furnace_side_tube.png b/technic/textures/technic_mv_alloy_furnace_side_tube.png new file mode 100644 index 0000000..1800eed Binary files /dev/null and b/technic/textures/technic_mv_alloy_furnace_side_tube.png differ diff --git a/technic/textures/technic_mv_alloy_furnace_top.png b/technic/textures/technic_mv_alloy_furnace_top.png new file mode 100644 index 0000000..f44e3c0 Binary files /dev/null and b/technic/textures/technic_mv_alloy_furnace_top.png differ diff --git a/technic/textures/technic_mv_battery_box_bottom.png b/technic/textures/technic_mv_battery_box_bottom.png new file mode 100644 index 0000000..a610660 Binary files /dev/null and b/technic/textures/technic_mv_battery_box_bottom.png differ diff --git a/technic/textures/technic_mv_battery_box_side.png b/technic/textures/technic_mv_battery_box_side.png new file mode 100644 index 0000000..06a4be5 Binary files /dev/null and b/technic/textures/technic_mv_battery_box_side.png differ diff --git a/technic/textures/technic_mv_battery_box_top.png b/technic/textures/technic_mv_battery_box_top.png new file mode 100644 index 0000000..b32100f Binary files /dev/null and b/technic/textures/technic_mv_battery_box_top.png differ diff --git a/technic/textures/technic_mv_cable.png b/technic/textures/technic_mv_cable.png new file mode 100644 index 0000000..2819d2b Binary files /dev/null and b/technic/textures/technic_mv_cable.png differ diff --git a/technic/textures/technic_mv_cable_wield.png b/technic/textures/technic_mv_cable_wield.png new file mode 100644 index 0000000..2d41e27 Binary files /dev/null and b/technic/textures/technic_mv_cable_wield.png differ diff --git a/technic/textures/technic_mv_centrifuge_bottom.png b/technic/textures/technic_mv_centrifuge_bottom.png new file mode 100644 index 0000000..6dcd40f Binary files /dev/null and b/technic/textures/technic_mv_centrifuge_bottom.png differ diff --git a/technic/textures/technic_mv_centrifuge_front.png b/technic/textures/technic_mv_centrifuge_front.png new file mode 100644 index 0000000..e278a33 Binary files /dev/null and b/technic/textures/technic_mv_centrifuge_front.png differ diff --git a/technic/textures/technic_mv_centrifuge_front_active.png b/technic/textures/technic_mv_centrifuge_front_active.png new file mode 100644 index 0000000..4cef912 Binary files /dev/null and b/technic/textures/technic_mv_centrifuge_front_active.png differ diff --git a/technic/textures/technic_mv_centrifuge_side.png b/technic/textures/technic_mv_centrifuge_side.png new file mode 100644 index 0000000..eeef44a Binary files /dev/null and b/technic/textures/technic_mv_centrifuge_side.png differ diff --git a/technic/textures/technic_mv_centrifuge_top.png b/technic/textures/technic_mv_centrifuge_top.png new file mode 100644 index 0000000..813bbf8 Binary files /dev/null and b/technic/textures/technic_mv_centrifuge_top.png differ diff --git a/technic/textures/technic_mv_compressor_back.png b/technic/textures/technic_mv_compressor_back.png new file mode 100644 index 0000000..11286e3 Binary files /dev/null and b/technic/textures/technic_mv_compressor_back.png differ diff --git a/technic/textures/technic_mv_compressor_bottom.png b/technic/textures/technic_mv_compressor_bottom.png new file mode 100644 index 0000000..886f27e Binary files /dev/null and b/technic/textures/technic_mv_compressor_bottom.png differ diff --git a/technic/textures/technic_mv_compressor_front.png b/technic/textures/technic_mv_compressor_front.png new file mode 100644 index 0000000..007d6de Binary files /dev/null and b/technic/textures/technic_mv_compressor_front.png differ diff --git a/technic/textures/technic_mv_compressor_front_active.png b/technic/textures/technic_mv_compressor_front_active.png new file mode 100644 index 0000000..b3d27c0 Binary files /dev/null and b/technic/textures/technic_mv_compressor_front_active.png differ diff --git a/technic/textures/technic_mv_compressor_side.png b/technic/textures/technic_mv_compressor_side.png new file mode 100644 index 0000000..87acda6 Binary files /dev/null and b/technic/textures/technic_mv_compressor_side.png differ diff --git a/technic/textures/technic_mv_compressor_top.png b/technic/textures/technic_mv_compressor_top.png new file mode 100644 index 0000000..786b859 Binary files /dev/null and b/technic/textures/technic_mv_compressor_top.png differ diff --git a/technic/textures/technic_mv_down_converter_bottom.png b/technic/textures/technic_mv_down_converter_bottom.png new file mode 100644 index 0000000..a610660 Binary files /dev/null and b/technic/textures/technic_mv_down_converter_bottom.png differ diff --git a/technic/textures/technic_mv_down_converter_side.png b/technic/textures/technic_mv_down_converter_side.png new file mode 100644 index 0000000..6492d5c Binary files /dev/null and b/technic/textures/technic_mv_down_converter_side.png differ diff --git a/technic/textures/technic_mv_down_converter_top.png b/technic/textures/technic_mv_down_converter_top.png new file mode 100644 index 0000000..a610660 Binary files /dev/null and b/technic/textures/technic_mv_down_converter_top.png differ diff --git a/technic/textures/technic_mv_electric_furnace_bottom.png b/technic/textures/technic_mv_electric_furnace_bottom.png new file mode 100644 index 0000000..e2e445e Binary files /dev/null and b/technic/textures/technic_mv_electric_furnace_bottom.png differ diff --git a/technic/textures/technic_mv_electric_furnace_front.png b/technic/textures/technic_mv_electric_furnace_front.png new file mode 100644 index 0000000..81c33cf Binary files /dev/null and b/technic/textures/technic_mv_electric_furnace_front.png differ diff --git a/technic/textures/technic_mv_electric_furnace_front_active.png b/technic/textures/technic_mv_electric_furnace_front_active.png new file mode 100644 index 0000000..2523f0e Binary files /dev/null and b/technic/textures/technic_mv_electric_furnace_front_active.png differ diff --git a/technic/textures/technic_mv_electric_furnace_side.png b/technic/textures/technic_mv_electric_furnace_side.png new file mode 100644 index 0000000..cd22a73 Binary files /dev/null and b/technic/textures/technic_mv_electric_furnace_side.png differ diff --git a/technic/textures/technic_mv_electric_furnace_side_tube.png b/technic/textures/technic_mv_electric_furnace_side_tube.png new file mode 100644 index 0000000..bfeba18 Binary files /dev/null and b/technic/textures/technic_mv_electric_furnace_side_tube.png differ diff --git a/technic/textures/technic_mv_electric_furnace_top.png b/technic/textures/technic_mv_electric_furnace_top.png new file mode 100644 index 0000000..635b6b7 Binary files /dev/null and b/technic/textures/technic_mv_electric_furnace_top.png differ diff --git a/technic/textures/technic_mv_extractor_bottom.png b/technic/textures/technic_mv_extractor_bottom.png new file mode 100644 index 0000000..70f34ee Binary files /dev/null and b/technic/textures/technic_mv_extractor_bottom.png differ diff --git a/technic/textures/technic_mv_extractor_front.png b/technic/textures/technic_mv_extractor_front.png new file mode 100644 index 0000000..18648c2 Binary files /dev/null and b/technic/textures/technic_mv_extractor_front.png differ diff --git a/technic/textures/technic_mv_extractor_front_active.png b/technic/textures/technic_mv_extractor_front_active.png new file mode 100644 index 0000000..ee86ade Binary files /dev/null and b/technic/textures/technic_mv_extractor_front_active.png differ diff --git a/technic/textures/technic_mv_extractor_side.png b/technic/textures/technic_mv_extractor_side.png new file mode 100644 index 0000000..cbe3673 Binary files /dev/null and b/technic/textures/technic_mv_extractor_side.png differ diff --git a/technic/textures/technic_mv_extractor_top.png b/technic/textures/technic_mv_extractor_top.png new file mode 100644 index 0000000..2259d64 Binary files /dev/null and b/technic/textures/technic_mv_extractor_top.png differ diff --git a/technic/textures/technic_mv_generator_front.png b/technic/textures/technic_mv_generator_front.png new file mode 100644 index 0000000..570e0c5 Binary files /dev/null and b/technic/textures/technic_mv_generator_front.png differ diff --git a/technic/textures/technic_mv_generator_front_active.png b/technic/textures/technic_mv_generator_front_active.png new file mode 100644 index 0000000..3006a17 Binary files /dev/null and b/technic/textures/technic_mv_generator_front_active.png differ diff --git a/technic/textures/technic_mv_generator_side.png b/technic/textures/technic_mv_generator_side.png new file mode 100644 index 0000000..21c0d41 Binary files /dev/null and b/technic/textures/technic_mv_generator_side.png differ diff --git a/technic/textures/technic_mv_generator_top.png b/technic/textures/technic_mv_generator_top.png new file mode 100644 index 0000000..7afa5a1 Binary files /dev/null and b/technic/textures/technic_mv_generator_top.png differ diff --git a/technic/textures/technic_mv_grinder_bottom.png b/technic/textures/technic_mv_grinder_bottom.png new file mode 100644 index 0000000..70f34ee Binary files /dev/null and b/technic/textures/technic_mv_grinder_bottom.png differ diff --git a/technic/textures/technic_mv_grinder_front.png b/technic/textures/technic_mv_grinder_front.png new file mode 100644 index 0000000..18648c2 Binary files /dev/null and b/technic/textures/technic_mv_grinder_front.png differ diff --git a/technic/textures/technic_mv_grinder_front_active.png b/technic/textures/technic_mv_grinder_front_active.png new file mode 100644 index 0000000..ee86ade Binary files /dev/null and b/technic/textures/technic_mv_grinder_front_active.png differ diff --git a/technic/textures/technic_mv_grinder_side.png b/technic/textures/technic_mv_grinder_side.png new file mode 100644 index 0000000..cbe3673 Binary files /dev/null and b/technic/textures/technic_mv_grinder_side.png differ diff --git a/technic/textures/technic_mv_grinder_side_tube.png b/technic/textures/technic_mv_grinder_side_tube.png new file mode 100644 index 0000000..196b7c1 Binary files /dev/null and b/technic/textures/technic_mv_grinder_side_tube.png differ diff --git a/technic/textures/technic_mv_grinder_top.png b/technic/textures/technic_mv_grinder_top.png new file mode 100644 index 0000000..2259d64 Binary files /dev/null and b/technic/textures/technic_mv_grinder_top.png differ diff --git a/technic/textures/technic_mv_solar_array_bottom.png b/technic/textures/technic_mv_solar_array_bottom.png new file mode 100644 index 0000000..596e79a Binary files /dev/null and b/technic/textures/technic_mv_solar_array_bottom.png differ diff --git a/technic/textures/technic_mv_solar_array_side.png b/technic/textures/technic_mv_solar_array_side.png new file mode 100644 index 0000000..917b9ed Binary files /dev/null and b/technic/textures/technic_mv_solar_array_side.png differ diff --git a/technic/textures/technic_mv_solar_array_top.png b/technic/textures/technic_mv_solar_array_top.png new file mode 100644 index 0000000..cdb7cf7 Binary files /dev/null and b/technic/textures/technic_mv_solar_array_top.png differ diff --git a/technic/textures/technic_mv_transformer.png b/technic/textures/technic_mv_transformer.png new file mode 100644 index 0000000..7c4688e Binary files /dev/null and b/technic/textures/technic_mv_transformer.png differ diff --git a/technic/textures/technic_nodebreaker_back.png b/technic/textures/technic_nodebreaker_back.png new file mode 100644 index 0000000..0af7422 Binary files /dev/null and b/technic/textures/technic_nodebreaker_back.png differ diff --git a/technic/textures/technic_nodebreaker_bottom.png b/technic/textures/technic_nodebreaker_bottom.png new file mode 100644 index 0000000..ff1a2c6 Binary files /dev/null and b/technic/textures/technic_nodebreaker_bottom.png differ diff --git a/technic/textures/technic_nodebreaker_bottom_off.png b/technic/textures/technic_nodebreaker_bottom_off.png new file mode 100644 index 0000000..0f456eb Binary files /dev/null and b/technic/textures/technic_nodebreaker_bottom_off.png differ diff --git a/technic/textures/technic_nodebreaker_bottom_on.png b/technic/textures/technic_nodebreaker_bottom_on.png new file mode 100644 index 0000000..6c4811a Binary files /dev/null and b/technic/textures/technic_nodebreaker_bottom_on.png differ diff --git a/technic/textures/technic_nodebreaker_front_off.png b/technic/textures/technic_nodebreaker_front_off.png new file mode 100644 index 0000000..488fd0a Binary files /dev/null and b/technic/textures/technic_nodebreaker_front_off.png differ diff --git a/technic/textures/technic_nodebreaker_front_on.png b/technic/textures/technic_nodebreaker_front_on.png new file mode 100644 index 0000000..4904e8b Binary files /dev/null and b/technic/textures/technic_nodebreaker_front_on.png differ diff --git a/technic/textures/technic_nodebreaker_side.png b/technic/textures/technic_nodebreaker_side.png new file mode 100644 index 0000000..aefd7c8 Binary files /dev/null and b/technic/textures/technic_nodebreaker_side.png differ diff --git a/technic/textures/technic_nodebreaker_side1.png b/technic/textures/technic_nodebreaker_side1.png new file mode 100644 index 0000000..8cb8634 Binary files /dev/null and b/technic/textures/technic_nodebreaker_side1.png differ diff --git a/technic/textures/technic_nodebreaker_side1_off.png b/technic/textures/technic_nodebreaker_side1_off.png new file mode 100644 index 0000000..857face Binary files /dev/null and b/technic/textures/technic_nodebreaker_side1_off.png differ diff --git a/technic/textures/technic_nodebreaker_side1_on.png b/technic/textures/technic_nodebreaker_side1_on.png new file mode 100644 index 0000000..c756f09 Binary files /dev/null and b/technic/textures/technic_nodebreaker_side1_on.png differ diff --git a/technic/textures/technic_nodebreaker_side2.png b/technic/textures/technic_nodebreaker_side2.png new file mode 100644 index 0000000..c2855d0 Binary files /dev/null and b/technic/textures/technic_nodebreaker_side2.png differ diff --git a/technic/textures/technic_nodebreaker_side2_off.png b/technic/textures/technic_nodebreaker_side2_off.png new file mode 100644 index 0000000..4c62f98 Binary files /dev/null and b/technic/textures/technic_nodebreaker_side2_off.png differ diff --git a/technic/textures/technic_nodebreaker_side2_on.png b/technic/textures/technic_nodebreaker_side2_on.png new file mode 100644 index 0000000..b9e4823 Binary files /dev/null and b/technic/textures/technic_nodebreaker_side2_on.png differ diff --git a/technic/textures/technic_nodebreaker_top.png b/technic/textures/technic_nodebreaker_top.png new file mode 100644 index 0000000..941d333 Binary files /dev/null and b/technic/textures/technic_nodebreaker_top.png differ diff --git a/technic/textures/technic_nodebreaker_top_off.png b/technic/textures/technic_nodebreaker_top_off.png new file mode 100644 index 0000000..9139afe Binary files /dev/null and b/technic/textures/technic_nodebreaker_top_off.png differ diff --git a/technic/textures/technic_nodebreaker_top_on.png b/technic/textures/technic_nodebreaker_top_on.png new file mode 100644 index 0000000..4b0a661 Binary files /dev/null and b/technic/textures/technic_nodebreaker_top_on.png differ diff --git a/technic/textures/technic_power_meter.png b/technic/textures/technic_power_meter.png new file mode 100644 index 0000000..f1e5120 Binary files /dev/null and b/technic/textures/technic_power_meter.png differ diff --git a/technic/textures/technic_power_meter0.png b/technic/textures/technic_power_meter0.png new file mode 100644 index 0000000..1b1e662 Binary files /dev/null and b/technic/textures/technic_power_meter0.png differ diff --git a/technic/textures/technic_power_meter1.png b/technic/textures/technic_power_meter1.png new file mode 100644 index 0000000..eb6be3b Binary files /dev/null and b/technic/textures/technic_power_meter1.png differ diff --git a/technic/textures/technic_power_meter2.png b/technic/textures/technic_power_meter2.png new file mode 100644 index 0000000..e3a3772 Binary files /dev/null and b/technic/textures/technic_power_meter2.png differ diff --git a/technic/textures/technic_power_meter3.png b/technic/textures/technic_power_meter3.png new file mode 100644 index 0000000..6333035 Binary files /dev/null and b/technic/textures/technic_power_meter3.png differ diff --git a/technic/textures/technic_power_meter4.png b/technic/textures/technic_power_meter4.png new file mode 100644 index 0000000..6346dbd Binary files /dev/null and b/technic/textures/technic_power_meter4.png differ diff --git a/technic/textures/technic_power_meter5.png b/technic/textures/technic_power_meter5.png new file mode 100644 index 0000000..80f79c6 Binary files /dev/null and b/technic/textures/technic_power_meter5.png differ diff --git a/technic/textures/technic_power_meter6.png b/technic/textures/technic_power_meter6.png new file mode 100644 index 0000000..fe91bf5 Binary files /dev/null and b/technic/textures/technic_power_meter6.png differ diff --git a/technic/textures/technic_power_meter7.png b/technic/textures/technic_power_meter7.png new file mode 100644 index 0000000..e02dd6d Binary files /dev/null and b/technic/textures/technic_power_meter7.png differ diff --git a/technic/textures/technic_power_meter8.png b/technic/textures/technic_power_meter8.png new file mode 100644 index 0000000..a12064c Binary files /dev/null and b/technic/textures/technic_power_meter8.png differ diff --git a/technic/textures/technic_power_meter_bg.png b/technic/textures/technic_power_meter_bg.png new file mode 100644 index 0000000..9667cda Binary files /dev/null and b/technic/textures/technic_power_meter_bg.png differ diff --git a/technic/textures/technic_power_meter_fg.png b/technic/textures/technic_power_meter_fg.png new file mode 100644 index 0000000..7f2dde8 Binary files /dev/null and b/technic/textures/technic_power_meter_fg.png differ diff --git a/technic/textures/technic_prospector.png b/technic/textures/technic_prospector.png new file mode 100644 index 0000000..2f9ee6c Binary files /dev/null and b/technic/textures/technic_prospector.png differ diff --git a/technic/textures/technic_raw_latex.png b/technic/textures/technic_raw_latex.png new file mode 100644 index 0000000..49bb11b Binary files /dev/null and b/technic/textures/technic_raw_latex.png differ diff --git a/technic/textures/technic_rubber.png b/technic/textures/technic_rubber.png new file mode 100644 index 0000000..9ed4a9d Binary files /dev/null and b/technic/textures/technic_rubber.png differ diff --git a/technic/textures/technic_rubber_leaves.png b/technic/textures/technic_rubber_leaves.png new file mode 100644 index 0000000..ae013e0 Binary files /dev/null and b/technic/textures/technic_rubber_leaves.png differ diff --git a/technic/textures/technic_rubber_sapling.png b/technic/textures/technic_rubber_sapling.png new file mode 100644 index 0000000..e5c9f5d Binary files /dev/null and b/technic/textures/technic_rubber_sapling.png differ diff --git a/technic/textures/technic_rubber_tree_empty.png b/technic/textures/technic_rubber_tree_empty.png new file mode 100644 index 0000000..1792951 Binary files /dev/null and b/technic/textures/technic_rubber_tree_empty.png differ diff --git a/technic/textures/technic_rubber_tree_full.png b/technic/textures/technic_rubber_tree_full.png new file mode 100644 index 0000000..08067ef Binary files /dev/null and b/technic/textures/technic_rubber_tree_full.png differ diff --git a/technic/textures/technic_rubber_tree_grindings.png b/technic/textures/technic_rubber_tree_grindings.png new file mode 100644 index 0000000..9f2f5d6 Binary files /dev/null and b/technic/textures/technic_rubber_tree_grindings.png differ diff --git a/technic/textures/technic_sawdust.png b/technic/textures/technic_sawdust.png new file mode 100644 index 0000000..976e7f9 Binary files /dev/null and b/technic/textures/technic_sawdust.png differ diff --git a/technic/textures/technic_screwdriver.png b/technic/textures/technic_screwdriver.png new file mode 100644 index 0000000..bd2da22 Binary files /dev/null and b/technic/textures/technic_screwdriver.png differ diff --git a/technic/textures/technic_silicon_wafer.png b/technic/textures/technic_silicon_wafer.png new file mode 100644 index 0000000..78aef20 Binary files /dev/null and b/technic/textures/technic_silicon_wafer.png differ diff --git a/technic/textures/technic_silver_dust.png b/technic/textures/technic_silver_dust.png new file mode 100644 index 0000000..19a5754 Binary files /dev/null and b/technic/textures/technic_silver_dust.png differ diff --git a/technic/textures/technic_solar_panel_bottom.png b/technic/textures/technic_solar_panel_bottom.png new file mode 100644 index 0000000..9e888e3 Binary files /dev/null and b/technic/textures/technic_solar_panel_bottom.png differ diff --git a/technic/textures/technic_solar_panel_side.png b/technic/textures/technic_solar_panel_side.png new file mode 100644 index 0000000..b22447e Binary files /dev/null and b/technic/textures/technic_solar_panel_side.png differ diff --git a/technic/textures/technic_solar_panel_top.png b/technic/textures/technic_solar_panel_top.png new file mode 100644 index 0000000..492764b Binary files /dev/null and b/technic/textures/technic_solar_panel_top.png differ diff --git a/technic/textures/technic_sonic_screwdriver.png b/technic/textures/technic_sonic_screwdriver.png new file mode 100644 index 0000000..9b26b81 Binary files /dev/null and b/technic/textures/technic_sonic_screwdriver.png differ diff --git a/technic/textures/technic_stainless_steel_dust.png b/technic/textures/technic_stainless_steel_dust.png new file mode 100644 index 0000000..6398be8 Binary files /dev/null and b/technic/textures/technic_stainless_steel_dust.png differ diff --git a/technic/textures/technic_stainless_steel_ingot.png b/technic/textures/technic_stainless_steel_ingot.png new file mode 100644 index 0000000..7ec5e00 Binary files /dev/null and b/technic/textures/technic_stainless_steel_ingot.png differ diff --git a/technic/textures/technic_supply_converter_bottom.png b/technic/textures/technic_supply_converter_bottom.png new file mode 100644 index 0000000..a610660 Binary files /dev/null and b/technic/textures/technic_supply_converter_bottom.png differ diff --git a/technic/textures/technic_supply_converter_side.png b/technic/textures/technic_supply_converter_side.png new file mode 100644 index 0000000..6492d5c Binary files /dev/null and b/technic/textures/technic_supply_converter_side.png differ diff --git a/technic/textures/technic_supply_converter_top.png b/technic/textures/technic_supply_converter_top.png new file mode 100644 index 0000000..a610660 Binary files /dev/null and b/technic/textures/technic_supply_converter_top.png differ diff --git a/technic/textures/technic_talinite_dust.png b/technic/textures/technic_talinite_dust.png new file mode 100644 index 0000000..f228206 Binary files /dev/null and b/technic/textures/technic_talinite_dust.png differ diff --git a/technic/textures/technic_tin_dust.png b/technic/textures/technic_tin_dust.png new file mode 100644 index 0000000..98e6f3f Binary files /dev/null and b/technic/textures/technic_tin_dust.png differ diff --git a/technic/textures/technic_tool_mode1.png b/technic/textures/technic_tool_mode1.png new file mode 100644 index 0000000..571dbe5 Binary files /dev/null and b/technic/textures/technic_tool_mode1.png differ diff --git a/technic/textures/technic_tool_mode2.png b/technic/textures/technic_tool_mode2.png new file mode 100644 index 0000000..891aa82 Binary files /dev/null and b/technic/textures/technic_tool_mode2.png differ diff --git a/technic/textures/technic_tool_mode3.png b/technic/textures/technic_tool_mode3.png new file mode 100644 index 0000000..cd099a7 Binary files /dev/null and b/technic/textures/technic_tool_mode3.png differ diff --git a/technic/textures/technic_tool_mode4.png b/technic/textures/technic_tool_mode4.png new file mode 100644 index 0000000..62f50d7 Binary files /dev/null and b/technic/textures/technic_tool_mode4.png differ diff --git a/technic/textures/technic_tool_mode5.png b/technic/textures/technic_tool_mode5.png new file mode 100644 index 0000000..c918314 Binary files /dev/null and b/technic/textures/technic_tool_mode5.png differ diff --git a/technic/textures/technic_tool_mode6.png b/technic/textures/technic_tool_mode6.png new file mode 100644 index 0000000..9268f47 Binary files /dev/null and b/technic/textures/technic_tool_mode6.png differ diff --git a/technic/textures/technic_tool_mode7.png b/technic/textures/technic_tool_mode7.png new file mode 100644 index 0000000..5ba572a Binary files /dev/null and b/technic/textures/technic_tool_mode7.png differ diff --git a/technic/textures/technic_tool_mode8.png b/technic/textures/technic_tool_mode8.png new file mode 100644 index 0000000..b2655b6 Binary files /dev/null and b/technic/textures/technic_tool_mode8.png differ diff --git a/technic/textures/technic_tool_mode9.png b/technic/textures/technic_tool_mode9.png new file mode 100644 index 0000000..2077afb Binary files /dev/null and b/technic/textures/technic_tool_mode9.png differ diff --git a/technic/textures/technic_tree_tap.png b/technic/textures/technic_tree_tap.png new file mode 100644 index 0000000..542f30f Binary files /dev/null and b/technic/textures/technic_tree_tap.png differ diff --git a/technic/textures/technic_uranium_dust.png b/technic/textures/technic_uranium_dust.png new file mode 100644 index 0000000..9c211dc Binary files /dev/null and b/technic/textures/technic_uranium_dust.png differ diff --git a/technic/textures/technic_uranium_fuel.png b/technic/textures/technic_uranium_fuel.png new file mode 100644 index 0000000..0a32c62 Binary files /dev/null and b/technic/textures/technic_uranium_fuel.png differ diff --git a/technic/textures/technic_vacuum.png b/technic/textures/technic_vacuum.png new file mode 100644 index 0000000..1ef5815 Binary files /dev/null and b/technic/textures/technic_vacuum.png differ diff --git a/technic/textures/technic_water_can.png b/technic/textures/technic_water_can.png new file mode 100644 index 0000000..eec75db Binary files /dev/null and b/technic/textures/technic_water_can.png differ diff --git a/technic/textures/technic_water_mill_side.png b/technic/textures/technic_water_mill_side.png new file mode 100644 index 0000000..f4bdb16 Binary files /dev/null and b/technic/textures/technic_water_mill_side.png differ diff --git a/technic/textures/technic_water_mill_top.png b/technic/textures/technic_water_mill_top.png new file mode 100644 index 0000000..601ff15 Binary files /dev/null and b/technic/textures/technic_water_mill_top.png differ diff --git a/technic/textures/technic_water_mill_top_active.png b/technic/textures/technic_water_mill_top_active.png new file mode 100644 index 0000000..f02bec6 Binary files /dev/null and b/technic/textures/technic_water_mill_top_active.png differ diff --git a/technic/textures/technic_workshop_bottom.png b/technic/textures/technic_workshop_bottom.png new file mode 100644 index 0000000..bd8fd55 Binary files /dev/null and b/technic/textures/technic_workshop_bottom.png differ diff --git a/technic/textures/technic_workshop_side.png b/technic/textures/technic_workshop_side.png new file mode 100644 index 0000000..9e3e7a7 Binary files /dev/null and b/technic/textures/technic_workshop_side.png differ diff --git a/technic/textures/technic_workshop_top.png b/technic/textures/technic_workshop_top.png new file mode 100644 index 0000000..feae141 Binary files /dev/null and b/technic/textures/technic_workshop_top.png differ diff --git a/technic/textures/technic_wrought_iron_dust.png b/technic/textures/technic_wrought_iron_dust.png new file mode 100644 index 0000000..ad23c62 Binary files /dev/null and b/technic/textures/technic_wrought_iron_dust.png differ diff --git a/technic/textures/technic_zinc_dust.png b/technic/textures/technic_zinc_dust.png new file mode 100644 index 0000000..bbd826c Binary files /dev/null and b/technic/textures/technic_zinc_dust.png differ diff --git a/technic/textures/technicx32/technic_akalin_dust.png b/technic/textures/technicx32/technic_akalin_dust.png new file mode 100644 index 0000000..90f3bac Binary files /dev/null and b/technic/textures/technicx32/technic_akalin_dust.png differ diff --git a/technic/textures/technicx32/technic_alatro_dust.png b/technic/textures/technicx32/technic_alatro_dust.png new file mode 100644 index 0000000..1199614 Binary files /dev/null and b/technic/textures/technicx32/technic_alatro_dust.png differ diff --git a/technic/textures/technicx32/technic_alloy_furnace_front.png b/technic/textures/technicx32/technic_alloy_furnace_front.png new file mode 100644 index 0000000..9123fb6 Binary files /dev/null and b/technic/textures/technicx32/technic_alloy_furnace_front.png differ diff --git a/technic/textures/technicx32/technic_alloy_furnace_front_active.png b/technic/textures/technicx32/technic_alloy_furnace_front_active.png new file mode 100644 index 0000000..4dda2e6 Binary files /dev/null and b/technic/textures/technicx32/technic_alloy_furnace_front_active.png differ diff --git a/technic/textures/technicx32/technic_alloy_furnace_side.png b/technic/textures/technicx32/technic_alloy_furnace_side.png new file mode 100644 index 0000000..b5bd428 Binary files /dev/null and b/technic/textures/technicx32/technic_alloy_furnace_side.png differ diff --git a/technic/textures/technicx32/technic_alloy_furnace_top.png b/technic/textures/technicx32/technic_alloy_furnace_top.png new file mode 100644 index 0000000..67ef4b7 Binary files /dev/null and b/technic/textures/technicx32/technic_alloy_furnace_top.png differ diff --git a/technic/textures/technicx32/technic_arol_dust.png b/technic/textures/technicx32/technic_arol_dust.png new file mode 100644 index 0000000..f5a392f Binary files /dev/null and b/technic/textures/technicx32/technic_arol_dust.png differ diff --git a/technic/textures/technicx32/technic_battery.png b/technic/textures/technicx32/technic_battery.png new file mode 100644 index 0000000..ee83b74 Binary files /dev/null and b/technic/textures/technicx32/technic_battery.png differ diff --git a/technic/textures/technicx32/technic_battery_box_bottom.png b/technic/textures/technicx32/technic_battery_box_bottom.png new file mode 100644 index 0000000..03c7ccc Binary files /dev/null and b/technic/textures/technicx32/technic_battery_box_bottom.png differ diff --git a/technic/textures/technicx32/technic_battery_box_side0.png b/technic/textures/technicx32/technic_battery_box_side0.png new file mode 100644 index 0000000..2662ac0 Binary files /dev/null and b/technic/textures/technicx32/technic_battery_box_side0.png differ diff --git a/technic/textures/technicx32/technic_battery_box_top.png b/technic/textures/technicx32/technic_battery_box_top.png new file mode 100644 index 0000000..4953a32 Binary files /dev/null and b/technic/textures/technicx32/technic_battery_box_top.png differ diff --git a/technic/textures/technicx32/technic_battery_reload.png b/technic/textures/technicx32/technic_battery_reload.png new file mode 100644 index 0000000..164b4ac Binary files /dev/null and b/technic/textures/technicx32/technic_battery_reload.png differ diff --git a/technic/textures/technicx32/technic_brass_dust.png b/technic/textures/technicx32/technic_brass_dust.png new file mode 100644 index 0000000..f86167a Binary files /dev/null and b/technic/textures/technicx32/technic_brass_dust.png differ diff --git a/technic/textures/technicx32/technic_bronze_dust.png b/technic/textures/technicx32/technic_bronze_dust.png new file mode 100644 index 0000000..0a2401e Binary files /dev/null and b/technic/textures/technicx32/technic_bronze_dust.png differ diff --git a/technic/textures/technicx32/technic_carbon_steel_dust.png b/technic/textures/technicx32/technic_carbon_steel_dust.png new file mode 100644 index 0000000..0bf350f Binary files /dev/null and b/technic/textures/technicx32/technic_carbon_steel_dust.png differ diff --git a/technic/textures/technicx32/technic_cast_iron_dust.png b/technic/textures/technicx32/technic_cast_iron_dust.png new file mode 100644 index 0000000..f355094 Binary files /dev/null and b/technic/textures/technicx32/technic_cast_iron_dust.png differ diff --git a/technic/textures/technicx32/technic_chainsaw.png b/technic/textures/technicx32/technic_chainsaw.png new file mode 100644 index 0000000..b7ceee6 Binary files /dev/null and b/technic/textures/technicx32/technic_chainsaw.png differ diff --git a/technic/textures/technicx32/technic_chromium_dust.png b/technic/textures/technicx32/technic_chromium_dust.png new file mode 100644 index 0000000..a33358b Binary files /dev/null and b/technic/textures/technicx32/technic_chromium_dust.png differ diff --git a/technic/textures/technicx32/technic_coal_alloy_furnace_bottom.png b/technic/textures/technicx32/technic_coal_alloy_furnace_bottom.png new file mode 100644 index 0000000..7a5eed7 Binary files /dev/null and b/technic/textures/technicx32/technic_coal_alloy_furnace_bottom.png differ diff --git a/technic/textures/technicx32/technic_coal_alloy_furnace_front.png b/technic/textures/technicx32/technic_coal_alloy_furnace_front.png new file mode 100644 index 0000000..b00bef3 Binary files /dev/null and b/technic/textures/technicx32/technic_coal_alloy_furnace_front.png differ diff --git a/technic/textures/technicx32/technic_coal_alloy_furnace_front_active.png b/technic/textures/technicx32/technic_coal_alloy_furnace_front_active.png new file mode 100644 index 0000000..b41f619 Binary files /dev/null and b/technic/textures/technicx32/technic_coal_alloy_furnace_front_active.png differ diff --git a/technic/textures/technicx32/technic_coal_alloy_furnace_side.png b/technic/textures/technicx32/technic_coal_alloy_furnace_side.png new file mode 100644 index 0000000..3db8daa Binary files /dev/null and b/technic/textures/technicx32/technic_coal_alloy_furnace_side.png differ diff --git a/technic/textures/technicx32/technic_coal_alloy_furnace_top.png b/technic/textures/technicx32/technic_coal_alloy_furnace_top.png new file mode 100644 index 0000000..c648fe8 Binary files /dev/null and b/technic/textures/technicx32/technic_coal_alloy_furnace_top.png differ diff --git a/technic/textures/technicx32/technic_coal_dust.png b/technic/textures/technicx32/technic_coal_dust.png new file mode 100644 index 0000000..0fe7db7 Binary files /dev/null and b/technic/textures/technicx32/technic_coal_dust.png differ diff --git a/technic/textures/technicx32/technic_constructor_back.png b/technic/textures/technicx32/technic_constructor_back.png new file mode 100644 index 0000000..6baf788 Binary files /dev/null and b/technic/textures/technicx32/technic_constructor_back.png differ diff --git a/technic/textures/technicx32/technic_constructor_front_off.png b/technic/textures/technicx32/technic_constructor_front_off.png new file mode 100644 index 0000000..f878e55 Binary files /dev/null and b/technic/textures/technicx32/technic_constructor_front_off.png differ diff --git a/technic/textures/technicx32/technic_constructor_front_on.png b/technic/textures/technicx32/technic_constructor_front_on.png new file mode 100644 index 0000000..89189d6 Binary files /dev/null and b/technic/textures/technicx32/technic_constructor_front_on.png differ diff --git a/technic/textures/technicx32/technic_constructor_mk1_bottom_off.png b/technic/textures/technicx32/technic_constructor_mk1_bottom_off.png new file mode 100644 index 0000000..205dcc4 Binary files /dev/null and b/technic/textures/technicx32/technic_constructor_mk1_bottom_off.png differ diff --git a/technic/textures/technicx32/technic_constructor_mk1_bottom_on.png b/technic/textures/technicx32/technic_constructor_mk1_bottom_on.png new file mode 100644 index 0000000..9896c52 Binary files /dev/null and b/technic/textures/technicx32/technic_constructor_mk1_bottom_on.png differ diff --git a/technic/textures/technicx32/technic_constructor_mk1_side1_off.png b/technic/textures/technicx32/technic_constructor_mk1_side1_off.png new file mode 100644 index 0000000..e8a01ff Binary files /dev/null and b/technic/textures/technicx32/technic_constructor_mk1_side1_off.png differ diff --git a/technic/textures/technicx32/technic_constructor_mk1_side1_on.png b/technic/textures/technicx32/technic_constructor_mk1_side1_on.png new file mode 100644 index 0000000..c897942 Binary files /dev/null and b/technic/textures/technicx32/technic_constructor_mk1_side1_on.png differ diff --git a/technic/textures/technicx32/technic_constructor_mk1_side2_off.png b/technic/textures/technicx32/technic_constructor_mk1_side2_off.png new file mode 100644 index 0000000..8da65f6 Binary files /dev/null and b/technic/textures/technicx32/technic_constructor_mk1_side2_off.png differ diff --git a/technic/textures/technicx32/technic_constructor_mk1_side2_on.png b/technic/textures/technicx32/technic_constructor_mk1_side2_on.png new file mode 100644 index 0000000..da8ed34 Binary files /dev/null and b/technic/textures/technicx32/technic_constructor_mk1_side2_on.png differ diff --git a/technic/textures/technicx32/technic_constructor_mk1_top_off.png b/technic/textures/technicx32/technic_constructor_mk1_top_off.png new file mode 100644 index 0000000..7d8c7e0 Binary files /dev/null and b/technic/textures/technicx32/technic_constructor_mk1_top_off.png differ diff --git a/technic/textures/technicx32/technic_constructor_mk1_top_on.png b/technic/textures/technicx32/technic_constructor_mk1_top_on.png new file mode 100644 index 0000000..439caf5 Binary files /dev/null and b/technic/textures/technicx32/technic_constructor_mk1_top_on.png differ diff --git a/technic/textures/technicx32/technic_constructor_mk2_bottom_off.png b/technic/textures/technicx32/technic_constructor_mk2_bottom_off.png new file mode 100644 index 0000000..83c5b07 Binary files /dev/null and b/technic/textures/technicx32/technic_constructor_mk2_bottom_off.png differ diff --git a/technic/textures/technicx32/technic_constructor_mk2_bottom_on.png b/technic/textures/technicx32/technic_constructor_mk2_bottom_on.png new file mode 100644 index 0000000..9ad76f4 Binary files /dev/null and b/technic/textures/technicx32/technic_constructor_mk2_bottom_on.png differ diff --git a/technic/textures/technicx32/technic_constructor_mk2_side1_off.png b/technic/textures/technicx32/technic_constructor_mk2_side1_off.png new file mode 100644 index 0000000..584dfe3 Binary files /dev/null and b/technic/textures/technicx32/technic_constructor_mk2_side1_off.png differ diff --git a/technic/textures/technicx32/technic_constructor_mk2_side1_on.png b/technic/textures/technicx32/technic_constructor_mk2_side1_on.png new file mode 100644 index 0000000..fe02042 Binary files /dev/null and b/technic/textures/technicx32/technic_constructor_mk2_side1_on.png differ diff --git a/technic/textures/technicx32/technic_constructor_mk2_side2_off.png b/technic/textures/technicx32/technic_constructor_mk2_side2_off.png new file mode 100644 index 0000000..fd9ad74 Binary files /dev/null and b/technic/textures/technicx32/technic_constructor_mk2_side2_off.png differ diff --git a/technic/textures/technicx32/technic_constructor_mk2_side2_on.png b/technic/textures/technicx32/technic_constructor_mk2_side2_on.png new file mode 100644 index 0000000..f51411a Binary files /dev/null and b/technic/textures/technicx32/technic_constructor_mk2_side2_on.png differ diff --git a/technic/textures/technicx32/technic_constructor_mk2_top_off.png b/technic/textures/technicx32/technic_constructor_mk2_top_off.png new file mode 100644 index 0000000..e3e3292 Binary files /dev/null and b/technic/textures/technicx32/technic_constructor_mk2_top_off.png differ diff --git a/technic/textures/technicx32/technic_constructor_mk2_top_on.png b/technic/textures/technicx32/technic_constructor_mk2_top_on.png new file mode 100644 index 0000000..83043d4 Binary files /dev/null and b/technic/textures/technicx32/technic_constructor_mk2_top_on.png differ diff --git a/technic/textures/technicx32/technic_constructor_mk3_bottom_off.png b/technic/textures/technicx32/technic_constructor_mk3_bottom_off.png new file mode 100644 index 0000000..5f46154 Binary files /dev/null and b/technic/textures/technicx32/technic_constructor_mk3_bottom_off.png differ diff --git a/technic/textures/technicx32/technic_constructor_mk3_bottom_on.png b/technic/textures/technicx32/technic_constructor_mk3_bottom_on.png new file mode 100644 index 0000000..f76f29b Binary files /dev/null and b/technic/textures/technicx32/technic_constructor_mk3_bottom_on.png differ diff --git a/technic/textures/technicx32/technic_constructor_mk3_side1_off.png b/technic/textures/technicx32/technic_constructor_mk3_side1_off.png new file mode 100644 index 0000000..0ea1fc0 Binary files /dev/null and b/technic/textures/technicx32/technic_constructor_mk3_side1_off.png differ diff --git a/technic/textures/technicx32/technic_constructor_mk3_side1_on.png b/technic/textures/technicx32/technic_constructor_mk3_side1_on.png new file mode 100644 index 0000000..ba86332 Binary files /dev/null and b/technic/textures/technicx32/technic_constructor_mk3_side1_on.png differ diff --git a/technic/textures/technicx32/technic_constructor_mk3_side2_off.png b/technic/textures/technicx32/technic_constructor_mk3_side2_off.png new file mode 100644 index 0000000..8e8dce4 Binary files /dev/null and b/technic/textures/technicx32/technic_constructor_mk3_side2_off.png differ diff --git a/technic/textures/technicx32/technic_constructor_mk3_side2_on.png b/technic/textures/technicx32/technic_constructor_mk3_side2_on.png new file mode 100644 index 0000000..12dff69 Binary files /dev/null and b/technic/textures/technicx32/technic_constructor_mk3_side2_on.png differ diff --git a/technic/textures/technicx32/technic_constructor_mk3_top_off.png b/technic/textures/technicx32/technic_constructor_mk3_top_off.png new file mode 100644 index 0000000..705f255 Binary files /dev/null and b/technic/textures/technicx32/technic_constructor_mk3_top_off.png differ diff --git a/technic/textures/technicx32/technic_constructor_mk3_top_on.png b/technic/textures/technicx32/technic_constructor_mk3_top_on.png new file mode 100644 index 0000000..cef077e Binary files /dev/null and b/technic/textures/technicx32/technic_constructor_mk3_top_on.png differ diff --git a/technic/textures/technicx32/technic_control_logic_unit.png b/technic/textures/technicx32/technic_control_logic_unit.png new file mode 100644 index 0000000..6ed00eb Binary files /dev/null and b/technic/textures/technicx32/technic_control_logic_unit.png differ diff --git a/technic/textures/technicx32/technic_copper_coil.png b/technic/textures/technicx32/technic_copper_coil.png new file mode 100644 index 0000000..db6db1a Binary files /dev/null and b/technic/textures/technicx32/technic_copper_coil.png differ diff --git a/technic/textures/technicx32/technic_copper_dust.png b/technic/textures/technicx32/technic_copper_dust.png new file mode 100644 index 0000000..68678ed Binary files /dev/null and b/technic/textures/technicx32/technic_copper_dust.png differ diff --git a/technic/textures/technicx32/technic_deployer_back.png b/technic/textures/technicx32/technic_deployer_back.png new file mode 100644 index 0000000..0bc8df9 Binary files /dev/null and b/technic/textures/technicx32/technic_deployer_back.png differ diff --git a/technic/textures/technicx32/technic_deployer_bottom.png b/technic/textures/technicx32/technic_deployer_bottom.png new file mode 100644 index 0000000..ff1a2c6 Binary files /dev/null and b/technic/textures/technicx32/technic_deployer_bottom.png differ diff --git a/technic/textures/technicx32/technic_deployer_front_off.png b/technic/textures/technicx32/technic_deployer_front_off.png new file mode 100644 index 0000000..d0f6f55 Binary files /dev/null and b/technic/textures/technicx32/technic_deployer_front_off.png differ diff --git a/technic/textures/technicx32/technic_deployer_front_on.png b/technic/textures/technicx32/technic_deployer_front_on.png new file mode 100644 index 0000000..368ce32 Binary files /dev/null and b/technic/textures/technicx32/technic_deployer_front_on.png differ diff --git a/technic/textures/technicx32/technic_deployer_side.png b/technic/textures/technicx32/technic_deployer_side.png new file mode 100644 index 0000000..aefd7c8 Binary files /dev/null and b/technic/textures/technicx32/technic_deployer_side.png differ diff --git a/technic/textures/technicx32/technic_deployer_side1.png b/technic/textures/technicx32/technic_deployer_side1.png new file mode 100644 index 0000000..8cb8634 Binary files /dev/null and b/technic/textures/technicx32/technic_deployer_side1.png differ diff --git a/technic/textures/technicx32/technic_deployer_side2.png b/technic/textures/technicx32/technic_deployer_side2.png new file mode 100644 index 0000000..c2855d0 Binary files /dev/null and b/technic/textures/technicx32/technic_deployer_side2.png differ diff --git a/technic/textures/technicx32/technic_deployer_top.png b/technic/textures/technicx32/technic_deployer_top.png new file mode 100644 index 0000000..941d333 Binary files /dev/null and b/technic/textures/technicx32/technic_deployer_top.png differ diff --git a/technic/textures/technicx32/technic_diamond_block_blue.png b/technic/textures/technicx32/technic_diamond_block_blue.png new file mode 100644 index 0000000..d89bd6e Binary files /dev/null and b/technic/textures/technicx32/technic_diamond_block_blue.png differ diff --git a/technic/textures/technicx32/technic_diamond_block_green.png b/technic/textures/technicx32/technic_diamond_block_green.png new file mode 100644 index 0000000..996b254 Binary files /dev/null and b/technic/textures/technicx32/technic_diamond_block_green.png differ diff --git a/technic/textures/technicx32/technic_diamond_block_red.png b/technic/textures/technicx32/technic_diamond_block_red.png new file mode 100644 index 0000000..52fd893 Binary files /dev/null and b/technic/textures/technicx32/technic_diamond_block_red.png differ diff --git a/technic/textures/technicx32/technic_diamond_drill_head.png b/technic/textures/technicx32/technic_diamond_drill_head.png new file mode 100644 index 0000000..e3d31e8 Binary files /dev/null and b/technic/textures/technicx32/technic_diamond_drill_head.png differ diff --git a/technic/textures/technicx32/technic_doped_silicon_wafer.png b/technic/textures/technicx32/technic_doped_silicon_wafer.png new file mode 100644 index 0000000..6ff06a6 Binary files /dev/null and b/technic/textures/technicx32/technic_doped_silicon_wafer.png differ diff --git a/technic/textures/technicx32/technic_electric_furnace_bottom.png b/technic/textures/technicx32/technic_electric_furnace_bottom.png new file mode 100644 index 0000000..d16ac47 Binary files /dev/null and b/technic/textures/technicx32/technic_electric_furnace_bottom.png differ diff --git a/technic/textures/technicx32/technic_electric_furnace_front.png b/technic/textures/technicx32/technic_electric_furnace_front.png new file mode 100644 index 0000000..dfee663 Binary files /dev/null and b/technic/textures/technicx32/technic_electric_furnace_front.png differ diff --git a/technic/textures/technicx32/technic_electric_furnace_front_active.png b/technic/textures/technicx32/technic_electric_furnace_front_active.png new file mode 100644 index 0000000..038eec4 Binary files /dev/null and b/technic/textures/technicx32/technic_electric_furnace_front_active.png differ diff --git a/technic/textures/technicx32/technic_electric_furnace_side.png b/technic/textures/technicx32/technic_electric_furnace_side.png new file mode 100644 index 0000000..cf345e7 Binary files /dev/null and b/technic/textures/technicx32/technic_electric_furnace_side.png differ diff --git a/technic/textures/technicx32/technic_electric_furnace_top.png b/technic/textures/technicx32/technic_electric_furnace_top.png new file mode 100644 index 0000000..d3309ec Binary files /dev/null and b/technic/textures/technicx32/technic_electric_furnace_top.png differ diff --git a/technic/textures/technicx32/technic_fine_copper_wire.png b/technic/textures/technicx32/technic_fine_copper_wire.png new file mode 100644 index 0000000..36e2ed6 Binary files /dev/null and b/technic/textures/technicx32/technic_fine_copper_wire.png differ diff --git a/technic/textures/technicx32/technic_fine_gold_wire.png b/technic/textures/technicx32/technic_fine_gold_wire.png new file mode 100644 index 0000000..be2a38a Binary files /dev/null and b/technic/textures/technicx32/technic_fine_gold_wire.png differ diff --git a/technic/textures/technicx32/technic_fine_silver_wire.png b/technic/textures/technicx32/technic_fine_silver_wire.png new file mode 100644 index 0000000..d43cb6a Binary files /dev/null and b/technic/textures/technicx32/technic_fine_silver_wire.png differ diff --git a/technic/textures/technicx32/technic_flashlight.png b/technic/textures/technicx32/technic_flashlight.png new file mode 100644 index 0000000..01afdbb Binary files /dev/null and b/technic/textures/technicx32/technic_flashlight.png differ diff --git a/technic/textures/technicx32/technic_generator_front.png b/technic/textures/technicx32/technic_generator_front.png new file mode 100644 index 0000000..2d64844 Binary files /dev/null and b/technic/textures/technicx32/technic_generator_front.png differ diff --git a/technic/textures/technicx32/technic_generator_front_active.png b/technic/textures/technicx32/technic_generator_front_active.png new file mode 100644 index 0000000..4e57ca0 Binary files /dev/null and b/technic/textures/technicx32/technic_generator_front_active.png differ diff --git a/technic/textures/technicx32/technic_generator_side.png b/technic/textures/technicx32/technic_generator_side.png new file mode 100644 index 0000000..5cbcbef Binary files /dev/null and b/technic/textures/technicx32/technic_generator_side.png differ diff --git a/technic/textures/technicx32/technic_generator_top.png b/technic/textures/technicx32/technic_generator_top.png new file mode 100644 index 0000000..e2f3db3 Binary files /dev/null and b/technic/textures/technicx32/technic_generator_top.png differ diff --git a/technic/textures/technicx32/technic_geothermal_side.png b/technic/textures/technicx32/technic_geothermal_side.png new file mode 100644 index 0000000..90fb430 Binary files /dev/null and b/technic/textures/technicx32/technic_geothermal_side.png differ diff --git a/technic/textures/technicx32/technic_geothermal_top.png b/technic/textures/technicx32/technic_geothermal_top.png new file mode 100644 index 0000000..601ff15 Binary files /dev/null and b/technic/textures/technicx32/technic_geothermal_top.png differ diff --git a/technic/textures/technicx32/technic_geothermal_top_active.png b/technic/textures/technicx32/technic_geothermal_top_active.png new file mode 100644 index 0000000..f02bec6 Binary files /dev/null and b/technic/textures/technicx32/technic_geothermal_top_active.png differ diff --git a/technic/textures/technicx32/technic_gold_dust.png b/technic/textures/technicx32/technic_gold_dust.png new file mode 100644 index 0000000..e545bb6 Binary files /dev/null and b/technic/textures/technicx32/technic_gold_dust.png differ diff --git a/technic/textures/technicx32/technic_grinder_front.png b/technic/textures/technicx32/technic_grinder_front.png new file mode 100644 index 0000000..a28dbc1 Binary files /dev/null and b/technic/textures/technicx32/technic_grinder_front.png differ diff --git a/technic/textures/technicx32/technic_grinder_side.png b/technic/textures/technicx32/technic_grinder_side.png new file mode 100644 index 0000000..af562f2 Binary files /dev/null and b/technic/textures/technicx32/technic_grinder_side.png differ diff --git a/technic/textures/technicx32/technic_grinder_top.png b/technic/textures/technicx32/technic_grinder_top.png new file mode 100644 index 0000000..b074e13 Binary files /dev/null and b/technic/textures/technicx32/technic_grinder_top.png differ diff --git a/technic/textures/technicx32/technic_hv_grinder_bottom.png b/technic/textures/technicx32/technic_hv_grinder_bottom.png new file mode 100644 index 0000000..d854193 Binary files /dev/null and b/technic/textures/technicx32/technic_hv_grinder_bottom.png differ diff --git a/technic/textures/technicx32/technic_hv_grinder_front.png b/technic/textures/technicx32/technic_hv_grinder_front.png new file mode 100644 index 0000000..f20cb22 Binary files /dev/null and b/technic/textures/technicx32/technic_hv_grinder_front.png differ diff --git a/technic/textures/technicx32/technic_hv_grinder_front_active.png b/technic/textures/technicx32/technic_hv_grinder_front_active.png new file mode 100644 index 0000000..d1fa468 Binary files /dev/null and b/technic/textures/technicx32/technic_hv_grinder_front_active.png differ diff --git a/technic/textures/technicx32/technic_hv_grinder_side.png b/technic/textures/technicx32/technic_hv_grinder_side.png new file mode 100644 index 0000000..35cf031 Binary files /dev/null and b/technic/textures/technicx32/technic_hv_grinder_side.png differ diff --git a/technic/textures/technicx32/technic_hv_grinder_side_tube.png b/technic/textures/technicx32/technic_hv_grinder_side_tube.png new file mode 100644 index 0000000..5b5b450 Binary files /dev/null and b/technic/textures/technicx32/technic_hv_grinder_side_tube.png differ diff --git a/technic/textures/technicx32/technic_hv_grinder_top.png b/technic/textures/technicx32/technic_hv_grinder_top.png new file mode 100644 index 0000000..7869ea8 Binary files /dev/null and b/technic/textures/technicx32/technic_hv_grinder_top.png differ diff --git a/technic/textures/technicx32/technic_hv_nuclear_reactor_core.png b/technic/textures/technicx32/technic_hv_nuclear_reactor_core.png new file mode 100644 index 0000000..3d380da Binary files /dev/null and b/technic/textures/technicx32/technic_hv_nuclear_reactor_core.png differ diff --git a/technic/textures/technicx32/technic_hv_solar_array_bottom.png b/technic/textures/technicx32/technic_hv_solar_array_bottom.png new file mode 100644 index 0000000..94c8222 Binary files /dev/null and b/technic/textures/technicx32/technic_hv_solar_array_bottom.png differ diff --git a/technic/textures/technicx32/technic_hv_solar_array_side.png b/technic/textures/technicx32/technic_hv_solar_array_side.png new file mode 100644 index 0000000..d39d3d8 Binary files /dev/null and b/technic/textures/technicx32/technic_hv_solar_array_side.png differ diff --git a/technic/textures/technicx32/technic_hv_solar_array_top.png b/technic/textures/technicx32/technic_hv_solar_array_top.png new file mode 100644 index 0000000..3e1b9e0 Binary files /dev/null and b/technic/textures/technicx32/technic_hv_solar_array_top.png differ diff --git a/technic/textures/technicx32/technic_hv_transformer.png b/technic/textures/technicx32/technic_hv_transformer.png new file mode 100644 index 0000000..7794644 Binary files /dev/null and b/technic/textures/technicx32/technic_hv_transformer.png differ diff --git a/technic/textures/technicx32/technic_injector_bottom.png b/technic/textures/technicx32/technic_injector_bottom.png new file mode 100644 index 0000000..39916bd Binary files /dev/null and b/technic/textures/technicx32/technic_injector_bottom.png differ diff --git a/technic/textures/technicx32/technic_injector_side.png b/technic/textures/technicx32/technic_injector_side.png new file mode 100644 index 0000000..a5419a1 Binary files /dev/null and b/technic/textures/technicx32/technic_injector_side.png differ diff --git a/technic/textures/technicx32/technic_injector_top.png b/technic/textures/technicx32/technic_injector_top.png new file mode 100644 index 0000000..440649c Binary files /dev/null and b/technic/textures/technicx32/technic_injector_top.png differ diff --git a/technic/textures/technicx32/technic_kalite_dust.png b/technic/textures/technicx32/technic_kalite_dust.png new file mode 100644 index 0000000..595edb5 Binary files /dev/null and b/technic/textures/technicx32/technic_kalite_dust.png differ diff --git a/technic/textures/technicx32/technic_laser_beam.png b/technic/textures/technicx32/technic_laser_beam.png new file mode 100644 index 0000000..4814a9b Binary files /dev/null and b/technic/textures/technicx32/technic_laser_beam.png differ diff --git a/technic/textures/technicx32/technic_lava_can.png b/technic/textures/technicx32/technic_lava_can.png new file mode 100644 index 0000000..80d15a6 Binary files /dev/null and b/technic/textures/technicx32/technic_lava_can.png differ diff --git a/technic/textures/technicx32/technic_light.png b/technic/textures/technicx32/technic_light.png new file mode 100644 index 0000000..334cb07 Binary files /dev/null and b/technic/textures/technicx32/technic_light.png differ diff --git a/technic/textures/technicx32/technic_lv_grinder_bottom.png b/technic/textures/technicx32/technic_lv_grinder_bottom.png new file mode 100644 index 0000000..816b969 Binary files /dev/null and b/technic/textures/technicx32/technic_lv_grinder_bottom.png differ diff --git a/technic/textures/technicx32/technic_lv_grinder_front.png b/technic/textures/technicx32/technic_lv_grinder_front.png new file mode 100644 index 0000000..7451ca9 Binary files /dev/null and b/technic/textures/technicx32/technic_lv_grinder_front.png differ diff --git a/technic/textures/technicx32/technic_lv_grinder_front_active.png b/technic/textures/technicx32/technic_lv_grinder_front_active.png new file mode 100644 index 0000000..8e17e4d Binary files /dev/null and b/technic/textures/technicx32/technic_lv_grinder_front_active.png differ diff --git a/technic/textures/technicx32/technic_lv_grinder_side.png b/technic/textures/technicx32/technic_lv_grinder_side.png new file mode 100644 index 0000000..908287b Binary files /dev/null and b/technic/textures/technicx32/technic_lv_grinder_side.png differ diff --git a/technic/textures/technicx32/technic_lv_grinder_top.png b/technic/textures/technicx32/technic_lv_grinder_top.png new file mode 100644 index 0000000..8520baf Binary files /dev/null and b/technic/textures/technicx32/technic_lv_grinder_top.png differ diff --git a/technic/textures/technicx32/technic_lv_solar_array_bottom.png b/technic/textures/technicx32/technic_lv_solar_array_bottom.png new file mode 100644 index 0000000..94c8222 Binary files /dev/null and b/technic/textures/technicx32/technic_lv_solar_array_bottom.png differ diff --git a/technic/textures/technicx32/technic_lv_solar_array_side.png b/technic/textures/technicx32/technic_lv_solar_array_side.png new file mode 100644 index 0000000..d39d3d8 Binary files /dev/null and b/technic/textures/technicx32/technic_lv_solar_array_side.png differ diff --git a/technic/textures/technicx32/technic_lv_solar_array_top.png b/technic/textures/technicx32/technic_lv_solar_array_top.png new file mode 100644 index 0000000..3d8c7ab Binary files /dev/null and b/technic/textures/technicx32/technic_lv_solar_array_top.png differ diff --git a/technic/textures/technicx32/technic_lv_transformer.png b/technic/textures/technicx32/technic_lv_transformer.png new file mode 100644 index 0000000..99ac927 Binary files /dev/null and b/technic/textures/technicx32/technic_lv_transformer.png differ diff --git a/technic/textures/technicx32/technic_machine_bottom.png b/technic/textures/technicx32/technic_machine_bottom.png new file mode 100644 index 0000000..943dae1 Binary files /dev/null and b/technic/textures/technicx32/technic_machine_bottom.png differ diff --git a/technic/textures/technicx32/technic_mining_drill.png b/technic/textures/technicx32/technic_mining_drill.png new file mode 100644 index 0000000..171888d Binary files /dev/null and b/technic/textures/technicx32/technic_mining_drill.png differ diff --git a/technic/textures/technicx32/technic_mining_laser_mk1.png b/technic/textures/technicx32/technic_mining_laser_mk1.png new file mode 100644 index 0000000..acde392 Binary files /dev/null and b/technic/textures/technicx32/technic_mining_laser_mk1.png differ diff --git a/technic/textures/technicx32/technic_mithril_dust.png b/technic/textures/technicx32/technic_mithril_dust.png new file mode 100644 index 0000000..988e449 Binary files /dev/null and b/technic/textures/technicx32/technic_mithril_dust.png differ diff --git a/technic/textures/technicx32/technic_motor.png b/technic/textures/technicx32/technic_motor.png new file mode 100644 index 0000000..77d4b91 Binary files /dev/null and b/technic/textures/technicx32/technic_motor.png differ diff --git a/technic/textures/technicx32/technic_music_player_bottom.png b/technic/textures/technicx32/technic_music_player_bottom.png new file mode 100644 index 0000000..bd8fd55 Binary files /dev/null and b/technic/textures/technicx32/technic_music_player_bottom.png differ diff --git a/technic/textures/technicx32/technic_music_player_side.png b/technic/textures/technicx32/technic_music_player_side.png new file mode 100644 index 0000000..6c34fea Binary files /dev/null and b/technic/textures/technicx32/technic_music_player_side.png differ diff --git a/technic/textures/technicx32/technic_music_player_top.png b/technic/textures/technicx32/technic_music_player_top.png new file mode 100644 index 0000000..0d34563 Binary files /dev/null and b/technic/textures/technicx32/technic_music_player_top.png differ diff --git a/technic/textures/technicx32/technic_mv_alloy_furnace_bottom.png b/technic/textures/technicx32/technic_mv_alloy_furnace_bottom.png new file mode 100644 index 0000000..3723bb1 Binary files /dev/null and b/technic/textures/technicx32/technic_mv_alloy_furnace_bottom.png differ diff --git a/technic/textures/technicx32/technic_mv_alloy_furnace_front.png b/technic/textures/technicx32/technic_mv_alloy_furnace_front.png new file mode 100644 index 0000000..a5dac82 Binary files /dev/null and b/technic/textures/technicx32/technic_mv_alloy_furnace_front.png differ diff --git a/technic/textures/technicx32/technic_mv_alloy_furnace_front_active.png b/technic/textures/technicx32/technic_mv_alloy_furnace_front_active.png new file mode 100644 index 0000000..f6e69a9 Binary files /dev/null and b/technic/textures/technicx32/technic_mv_alloy_furnace_front_active.png differ diff --git a/technic/textures/technicx32/technic_mv_alloy_furnace_side.png b/technic/textures/technicx32/technic_mv_alloy_furnace_side.png new file mode 100644 index 0000000..0430479 Binary files /dev/null and b/technic/textures/technicx32/technic_mv_alloy_furnace_side.png differ diff --git a/technic/textures/technicx32/technic_mv_alloy_furnace_side_tube.png b/technic/textures/technicx32/technic_mv_alloy_furnace_side_tube.png new file mode 100644 index 0000000..69f89e7 Binary files /dev/null and b/technic/textures/technicx32/technic_mv_alloy_furnace_side_tube.png differ diff --git a/technic/textures/technicx32/technic_mv_alloy_furnace_top.png b/technic/textures/technicx32/technic_mv_alloy_furnace_top.png new file mode 100644 index 0000000..f44e3c0 Binary files /dev/null and b/technic/textures/technicx32/technic_mv_alloy_furnace_top.png differ diff --git a/technic/textures/technicx32/technic_mv_battery_box_bottom.png b/technic/textures/technicx32/technic_mv_battery_box_bottom.png new file mode 100644 index 0000000..2a9b292 Binary files /dev/null and b/technic/textures/technicx32/technic_mv_battery_box_bottom.png differ diff --git a/technic/textures/technicx32/technic_mv_battery_box_side0.png b/technic/textures/technicx32/technic_mv_battery_box_side0.png new file mode 100644 index 0000000..39d8986 Binary files /dev/null and b/technic/textures/technicx32/technic_mv_battery_box_side0.png differ diff --git a/technic/textures/technicx32/technic_mv_battery_box_top.png b/technic/textures/technicx32/technic_mv_battery_box_top.png new file mode 100644 index 0000000..f7f1ea9 Binary files /dev/null and b/technic/textures/technicx32/technic_mv_battery_box_top.png differ diff --git a/technic/textures/technicx32/technic_mv_cable_wield.png b/technic/textures/technicx32/technic_mv_cable_wield.png new file mode 100644 index 0000000..aca9fd4 Binary files /dev/null and b/technic/textures/technicx32/technic_mv_cable_wield.png differ diff --git a/technic/textures/technicx32/technic_mv_electric_furnace_bottom.png b/technic/textures/technicx32/technic_mv_electric_furnace_bottom.png new file mode 100644 index 0000000..d16ac47 Binary files /dev/null and b/technic/textures/technicx32/technic_mv_electric_furnace_bottom.png differ diff --git a/technic/textures/technicx32/technic_mv_electric_furnace_front.png b/technic/textures/technicx32/technic_mv_electric_furnace_front.png new file mode 100644 index 0000000..4dfac63 Binary files /dev/null and b/technic/textures/technicx32/technic_mv_electric_furnace_front.png differ diff --git a/technic/textures/technicx32/technic_mv_electric_furnace_front_active.png b/technic/textures/technicx32/technic_mv_electric_furnace_front_active.png new file mode 100644 index 0000000..e206cd2 Binary files /dev/null and b/technic/textures/technicx32/technic_mv_electric_furnace_front_active.png differ diff --git a/technic/textures/technicx32/technic_mv_electric_furnace_side.png b/technic/textures/technicx32/technic_mv_electric_furnace_side.png new file mode 100644 index 0000000..4aa27b7 Binary files /dev/null and b/technic/textures/technicx32/technic_mv_electric_furnace_side.png differ diff --git a/technic/textures/technicx32/technic_mv_electric_furnace_side_tube.png b/technic/textures/technicx32/technic_mv_electric_furnace_side_tube.png new file mode 100644 index 0000000..bfeba18 Binary files /dev/null and b/technic/textures/technicx32/technic_mv_electric_furnace_side_tube.png differ diff --git a/technic/textures/technicx32/technic_mv_electric_furnace_top.png b/technic/textures/technicx32/technic_mv_electric_furnace_top.png new file mode 100644 index 0000000..635b6b7 Binary files /dev/null and b/technic/textures/technicx32/technic_mv_electric_furnace_top.png differ diff --git a/technic/textures/technicx32/technic_mv_grinder_bottom.png b/technic/textures/technicx32/technic_mv_grinder_bottom.png new file mode 100644 index 0000000..f46cd72 Binary files /dev/null and b/technic/textures/technicx32/technic_mv_grinder_bottom.png differ diff --git a/technic/textures/technicx32/technic_mv_grinder_front.png b/technic/textures/technicx32/technic_mv_grinder_front.png new file mode 100644 index 0000000..6445dfe Binary files /dev/null and b/technic/textures/technicx32/technic_mv_grinder_front.png differ diff --git a/technic/textures/technicx32/technic_mv_grinder_front_active.png b/technic/textures/technicx32/technic_mv_grinder_front_active.png new file mode 100644 index 0000000..428e1dc Binary files /dev/null and b/technic/textures/technicx32/technic_mv_grinder_front_active.png differ diff --git a/technic/textures/technicx32/technic_mv_grinder_side.png b/technic/textures/technicx32/technic_mv_grinder_side.png new file mode 100644 index 0000000..c014f08 Binary files /dev/null and b/technic/textures/technicx32/technic_mv_grinder_side.png differ diff --git a/technic/textures/technicx32/technic_mv_grinder_side_tube.png b/technic/textures/technicx32/technic_mv_grinder_side_tube.png new file mode 100644 index 0000000..69050e4 Binary files /dev/null and b/technic/textures/technicx32/technic_mv_grinder_side_tube.png differ diff --git a/technic/textures/technicx32/technic_mv_grinder_top.png b/technic/textures/technicx32/technic_mv_grinder_top.png new file mode 100644 index 0000000..e0320ef Binary files /dev/null and b/technic/textures/technicx32/technic_mv_grinder_top.png differ diff --git a/technic/textures/technicx32/technic_mv_solar_array_bottom.png b/technic/textures/technicx32/technic_mv_solar_array_bottom.png new file mode 100644 index 0000000..94c8222 Binary files /dev/null and b/technic/textures/technicx32/technic_mv_solar_array_bottom.png differ diff --git a/technic/textures/technicx32/technic_mv_solar_array_side.png b/technic/textures/technicx32/technic_mv_solar_array_side.png new file mode 100644 index 0000000..d39d3d8 Binary files /dev/null and b/technic/textures/technicx32/technic_mv_solar_array_side.png differ diff --git a/technic/textures/technicx32/technic_mv_solar_array_top.png b/technic/textures/technicx32/technic_mv_solar_array_top.png new file mode 100644 index 0000000..e4999d5 Binary files /dev/null and b/technic/textures/technicx32/technic_mv_solar_array_top.png differ diff --git a/technic/textures/technicx32/technic_mv_transformer.png b/technic/textures/technicx32/technic_mv_transformer.png new file mode 100644 index 0000000..7c4688e Binary files /dev/null and b/technic/textures/technicx32/technic_mv_transformer.png differ diff --git a/technic/textures/technicx32/technic_nodebreaker_back.png b/technic/textures/technicx32/technic_nodebreaker_back.png new file mode 100644 index 0000000..43ba821 Binary files /dev/null and b/technic/textures/technicx32/technic_nodebreaker_back.png differ diff --git a/technic/textures/technicx32/technic_nodebreaker_bottom.png b/technic/textures/technicx32/technic_nodebreaker_bottom.png new file mode 100644 index 0000000..99ff685 Binary files /dev/null and b/technic/textures/technicx32/technic_nodebreaker_bottom.png differ diff --git a/technic/textures/technicx32/technic_nodebreaker_bottom_off.png b/technic/textures/technicx32/technic_nodebreaker_bottom_off.png new file mode 100644 index 0000000..47cd4e8 Binary files /dev/null and b/technic/textures/technicx32/technic_nodebreaker_bottom_off.png differ diff --git a/technic/textures/technicx32/technic_nodebreaker_bottom_on.png b/technic/textures/technicx32/technic_nodebreaker_bottom_on.png new file mode 100644 index 0000000..994f787 Binary files /dev/null and b/technic/textures/technicx32/technic_nodebreaker_bottom_on.png differ diff --git a/technic/textures/technicx32/technic_nodebreaker_front_off.png b/technic/textures/technicx32/technic_nodebreaker_front_off.png new file mode 100644 index 0000000..5ece916 Binary files /dev/null and b/technic/textures/technicx32/technic_nodebreaker_front_off.png differ diff --git a/technic/textures/technicx32/technic_nodebreaker_front_on.png b/technic/textures/technicx32/technic_nodebreaker_front_on.png new file mode 100644 index 0000000..a53de2a Binary files /dev/null and b/technic/textures/technicx32/technic_nodebreaker_front_on.png differ diff --git a/technic/textures/technicx32/technic_nodebreaker_side.png b/technic/textures/technicx32/technic_nodebreaker_side.png new file mode 100644 index 0000000..c2b401b Binary files /dev/null and b/technic/textures/technicx32/technic_nodebreaker_side.png differ diff --git a/technic/textures/technicx32/technic_nodebreaker_side1.png b/technic/textures/technicx32/technic_nodebreaker_side1.png new file mode 100644 index 0000000..07e74aa Binary files /dev/null and b/technic/textures/technicx32/technic_nodebreaker_side1.png differ diff --git a/technic/textures/technicx32/technic_nodebreaker_side1_off.png b/technic/textures/technicx32/technic_nodebreaker_side1_off.png new file mode 100644 index 0000000..b63f3bb Binary files /dev/null and b/technic/textures/technicx32/technic_nodebreaker_side1_off.png differ diff --git a/technic/textures/technicx32/technic_nodebreaker_side1_on.png b/technic/textures/technicx32/technic_nodebreaker_side1_on.png new file mode 100644 index 0000000..b455f06 Binary files /dev/null and b/technic/textures/technicx32/technic_nodebreaker_side1_on.png differ diff --git a/technic/textures/technicx32/technic_nodebreaker_side2.png b/technic/textures/technicx32/technic_nodebreaker_side2.png new file mode 100644 index 0000000..7f4a0bf Binary files /dev/null and b/technic/textures/technicx32/technic_nodebreaker_side2.png differ diff --git a/technic/textures/technicx32/technic_nodebreaker_side2_off.png b/technic/textures/technicx32/technic_nodebreaker_side2_off.png new file mode 100644 index 0000000..7b60902 Binary files /dev/null and b/technic/textures/technicx32/technic_nodebreaker_side2_off.png differ diff --git a/technic/textures/technicx32/technic_nodebreaker_side2_on.png b/technic/textures/technicx32/technic_nodebreaker_side2_on.png new file mode 100644 index 0000000..12985f6 Binary files /dev/null and b/technic/textures/technicx32/technic_nodebreaker_side2_on.png differ diff --git a/technic/textures/technicx32/technic_nodebreaker_top.png b/technic/textures/technicx32/technic_nodebreaker_top.png new file mode 100644 index 0000000..0994c6d Binary files /dev/null and b/technic/textures/technicx32/technic_nodebreaker_top.png differ diff --git a/technic/textures/technicx32/technic_nodebreaker_top_off.png b/technic/textures/technicx32/technic_nodebreaker_top_off.png new file mode 100644 index 0000000..f08fc1b Binary files /dev/null and b/technic/textures/technicx32/technic_nodebreaker_top_off.png differ diff --git a/technic/textures/technicx32/technic_nodebreaker_top_on.png b/technic/textures/technicx32/technic_nodebreaker_top_on.png new file mode 100644 index 0000000..ec28210 Binary files /dev/null and b/technic/textures/technicx32/technic_nodebreaker_top_on.png differ diff --git a/technic/textures/technicx32/technic_power_meter.png b/technic/textures/technicx32/technic_power_meter.png new file mode 100644 index 0000000..f1e5120 Binary files /dev/null and b/technic/textures/technicx32/technic_power_meter.png differ diff --git a/technic/textures/technicx32/technic_power_meter1.png b/technic/textures/technicx32/technic_power_meter1.png new file mode 100644 index 0000000..0542c7b Binary files /dev/null and b/technic/textures/technicx32/technic_power_meter1.png differ diff --git a/technic/textures/technicx32/technic_power_meter2.png b/technic/textures/technicx32/technic_power_meter2.png new file mode 100644 index 0000000..bf5703c Binary files /dev/null and b/technic/textures/technicx32/technic_power_meter2.png differ diff --git a/technic/textures/technicx32/technic_power_meter3.png b/technic/textures/technicx32/technic_power_meter3.png new file mode 100644 index 0000000..4204815 Binary files /dev/null and b/technic/textures/technicx32/technic_power_meter3.png differ diff --git a/technic/textures/technicx32/technic_power_meter4.png b/technic/textures/technicx32/technic_power_meter4.png new file mode 100644 index 0000000..82a0148 Binary files /dev/null and b/technic/textures/technicx32/technic_power_meter4.png differ diff --git a/technic/textures/technicx32/technic_power_meter5.png b/technic/textures/technicx32/technic_power_meter5.png new file mode 100644 index 0000000..af783ca Binary files /dev/null and b/technic/textures/technicx32/technic_power_meter5.png differ diff --git a/technic/textures/technicx32/technic_power_meter6.png b/technic/textures/technicx32/technic_power_meter6.png new file mode 100644 index 0000000..44feff4 Binary files /dev/null and b/technic/textures/technicx32/technic_power_meter6.png differ diff --git a/technic/textures/technicx32/technic_power_meter7.png b/technic/textures/technicx32/technic_power_meter7.png new file mode 100644 index 0000000..554baa2 Binary files /dev/null and b/technic/textures/technicx32/technic_power_meter7.png differ diff --git a/technic/textures/technicx32/technic_power_meter8.png b/technic/textures/technicx32/technic_power_meter8.png new file mode 100644 index 0000000..8c4f4a8 Binary files /dev/null and b/technic/textures/technicx32/technic_power_meter8.png differ diff --git a/technic/textures/technicx32/technic_power_meter_bg.png b/technic/textures/technicx32/technic_power_meter_bg.png new file mode 100644 index 0000000..9667cda Binary files /dev/null and b/technic/textures/technicx32/technic_power_meter_bg.png differ diff --git a/technic/textures/technicx32/technic_power_meter_fg.png b/technic/textures/technicx32/technic_power_meter_fg.png new file mode 100644 index 0000000..7f2dde8 Binary files /dev/null and b/technic/textures/technicx32/technic_power_meter_fg.png differ diff --git a/technic/textures/technicx32/technic_raw_latex.png b/technic/textures/technicx32/technic_raw_latex.png new file mode 100644 index 0000000..7fbbe64 Binary files /dev/null and b/technic/textures/technicx32/technic_raw_latex.png differ diff --git a/technic/textures/technicx32/technic_rubber.png b/technic/textures/technicx32/technic_rubber.png new file mode 100644 index 0000000..9ed4a9d Binary files /dev/null and b/technic/textures/technicx32/technic_rubber.png differ diff --git a/technic/textures/technicx32/technic_rubber_sapling.png b/technic/textures/technicx32/technic_rubber_sapling.png new file mode 100644 index 0000000..e5c9f5d Binary files /dev/null and b/technic/textures/technicx32/technic_rubber_sapling.png differ diff --git a/technic/textures/technicx32/technic_rubber_tree_empty.png b/technic/textures/technicx32/technic_rubber_tree_empty.png new file mode 100644 index 0000000..1792951 Binary files /dev/null and b/technic/textures/technicx32/technic_rubber_tree_empty.png differ diff --git a/technic/textures/technicx32/technic_rubber_tree_full.png b/technic/textures/technicx32/technic_rubber_tree_full.png new file mode 100644 index 0000000..08067ef Binary files /dev/null and b/technic/textures/technicx32/technic_rubber_tree_full.png differ diff --git a/technic/textures/technicx32/technic_screwdriver.png b/technic/textures/technicx32/technic_screwdriver.png new file mode 100644 index 0000000..bd2da22 Binary files /dev/null and b/technic/textures/technicx32/technic_screwdriver.png differ diff --git a/technic/textures/technicx32/technic_silicon_wafer.png b/technic/textures/technicx32/technic_silicon_wafer.png new file mode 100644 index 0000000..78aef20 Binary files /dev/null and b/technic/textures/technicx32/technic_silicon_wafer.png differ diff --git a/technic/textures/technicx32/technic_silver_dust.png b/technic/textures/technicx32/technic_silver_dust.png new file mode 100644 index 0000000..9092c90 Binary files /dev/null and b/technic/textures/technicx32/technic_silver_dust.png differ diff --git a/technic/textures/technicx32/technic_solar_panel_bottom.png b/technic/textures/technicx32/technic_solar_panel_bottom.png new file mode 100644 index 0000000..b0ad82f Binary files /dev/null and b/technic/textures/technicx32/technic_solar_panel_bottom.png differ diff --git a/technic/textures/technicx32/technic_solar_panel_side.png b/technic/textures/technicx32/technic_solar_panel_side.png new file mode 100644 index 0000000..b22447e Binary files /dev/null and b/technic/textures/technicx32/technic_solar_panel_side.png differ diff --git a/technic/textures/technicx32/technic_solar_panel_top.png b/technic/textures/technicx32/technic_solar_panel_top.png new file mode 100644 index 0000000..492764b Binary files /dev/null and b/technic/textures/technicx32/technic_solar_panel_top.png differ diff --git a/technic/textures/technicx32/technic_sonic_screwdriver.png b/technic/textures/technicx32/technic_sonic_screwdriver.png new file mode 100644 index 0000000..fb61d96 Binary files /dev/null and b/technic/textures/technicx32/technic_sonic_screwdriver.png differ diff --git a/technic/textures/technicx32/technic_stainless_steel_dust.png b/technic/textures/technicx32/technic_stainless_steel_dust.png new file mode 100644 index 0000000..450e2bb Binary files /dev/null and b/technic/textures/technicx32/technic_stainless_steel_dust.png differ diff --git a/technic/textures/technicx32/technic_talinite_dust.png b/technic/textures/technicx32/technic_talinite_dust.png new file mode 100644 index 0000000..39f9330 Binary files /dev/null and b/technic/textures/technicx32/technic_talinite_dust.png differ diff --git a/technic/textures/technicx32/technic_tin_dust.png b/technic/textures/technicx32/technic_tin_dust.png new file mode 100644 index 0000000..4e94e00 Binary files /dev/null and b/technic/textures/technicx32/technic_tin_dust.png differ diff --git a/technic/textures/technicx32/technic_tree_tap.png b/technic/textures/technicx32/technic_tree_tap.png new file mode 100644 index 0000000..542f30f Binary files /dev/null and b/technic/textures/technicx32/technic_tree_tap.png differ diff --git a/technic/textures/technicx32/technic_uranium_dust.png b/technic/textures/technicx32/technic_uranium_dust.png new file mode 100644 index 0000000..d8095c3 Binary files /dev/null and b/technic/textures/technicx32/technic_uranium_dust.png differ diff --git a/technic/textures/technicx32/technic_water_can.png b/technic/textures/technicx32/technic_water_can.png new file mode 100644 index 0000000..18e0225 Binary files /dev/null and b/technic/textures/technicx32/technic_water_can.png differ diff --git a/technic/textures/technicx32/technic_water_mill_side.png b/technic/textures/technicx32/technic_water_mill_side.png new file mode 100644 index 0000000..f4bdb16 Binary files /dev/null and b/technic/textures/technicx32/technic_water_mill_side.png differ diff --git a/technic/textures/technicx32/technic_water_mill_top.png b/technic/textures/technicx32/technic_water_mill_top.png new file mode 100644 index 0000000..601ff15 Binary files /dev/null and b/technic/textures/technicx32/technic_water_mill_top.png differ diff --git a/technic/textures/technicx32/technic_water_mill_top_active.png b/technic/textures/technicx32/technic_water_mill_top_active.png new file mode 100644 index 0000000..f02bec6 Binary files /dev/null and b/technic/textures/technicx32/technic_water_mill_top_active.png differ diff --git a/technic/textures/technicx32/technic_workshop_bottom.png b/technic/textures/technicx32/technic_workshop_bottom.png new file mode 100644 index 0000000..bd8fd55 Binary files /dev/null and b/technic/textures/technicx32/technic_workshop_bottom.png differ diff --git a/technic/textures/technicx32/technic_workshop_side.png b/technic/textures/technicx32/technic_workshop_side.png new file mode 100644 index 0000000..9e3e7a7 Binary files /dev/null and b/technic/textures/technicx32/technic_workshop_side.png differ diff --git a/technic/textures/technicx32/technic_workshop_top.png b/technic/textures/technicx32/technic_workshop_top.png new file mode 100644 index 0000000..feae141 Binary files /dev/null and b/technic/textures/technicx32/technic_workshop_top.png differ diff --git a/technic/textures/technicx32/technic_wrought_iron_dust.png b/technic/textures/technicx32/technic_wrought_iron_dust.png new file mode 100644 index 0000000..d890e73 Binary files /dev/null and b/technic/textures/technicx32/technic_wrought_iron_dust.png differ diff --git a/technic/textures/technicx32/technic_zinc_dust.png b/technic/textures/technicx32/technic_zinc_dust.png new file mode 100644 index 0000000..0d2f75a Binary files /dev/null and b/technic/textures/technicx32/technic_zinc_dust.png differ diff --git a/technic/tools/cans.lua b/technic/tools/cans.lua new file mode 100644 index 0000000..f12ec93 --- /dev/null +++ b/technic/tools/cans.lua @@ -0,0 +1,114 @@ +local S = technic.getter + +local function set_can_wear(itemstack, level, max_level) + local temp + if level == 0 then + temp = 0 + else + temp = 65536 - math.floor(level / max_level * 65535) + if temp > 65535 then temp = 65535 end + if temp < 1 then temp = 1 end + end + itemstack:set_wear(temp) +end + +local function get_can_level(itemstack) + if itemstack:get_metadata() == "" then + return 0 + else + return tonumber(itemstack:get_metadata()) + end +end + +function technic.register_can(d) + local data = {} + for k, v in pairs(d) do data[k] = v end + minetest.register_tool(data.can_name, { + description = data.can_description, + inventory_image = data.can_inventory_image, + stack_max = 1, + wear_represents = "content_level", + liquids_pointable = true, + on_use = function(itemstack, user, pointed_thing) + if pointed_thing.type ~= "node" then return end + local node = minetest.get_node(pointed_thing.under) + if node.name ~= data.liquid_source_name then return end + local charge = get_can_level(itemstack) + if charge == data.can_capacity then return end + if minetest.is_protected(pointed_thing.under, user:get_player_name()) then + minetest.log("action", user:get_player_name().." tried to take "..node.name.." at protected position "..minetest.pos_to_string(pointed_thing.under).." with a "..data.can_name) + return + end + minetest.remove_node(pointed_thing.under) + charge = charge + 1 + itemstack:set_metadata(tostring(charge)) + set_can_wear(itemstack, charge, data.can_capacity) + return itemstack + end, + on_place = function(itemstack, user, pointed_thing) + if pointed_thing.type ~= "node" then return end + local pos = pointed_thing.under + local def = minetest.registered_nodes[minetest.get_node(pos).name] or {} + if def.on_rightclick and user and not user:get_player_control().sneak then + return def.on_rightclick(pos, minetest.get_node(pos), user, itemstack, pointed_thing) + end + if not def.buildable_to then + pos = pointed_thing.above + def = minetest.registered_nodes[minetest.get_node(pos).name] or {} + if not def.buildable_to then return end + end + local charge = get_can_level(itemstack) + if charge == 0 then return end + if minetest.is_protected(pos, user:get_player_name()) then + minetest.log("action", user:get_player_name().." tried to place "..data.liquid_source_name.." at protected position "..minetest.pos_to_string(pos).." with a "..data.can_name) + return + end + minetest.set_node(pos, {name=data.liquid_source_name}) + charge = charge - 1 + itemstack:set_metadata(tostring(charge)) + set_can_wear(itemstack, charge, data.can_capacity) + return itemstack + end, + on_refill = function(stack) + stack:set_metadata(tostring(data.can_capacity)) + set_can_wear(stack, data.can_capacity, data.can_capacity) + return stack + end, + }) +end + +technic.register_can({ + can_name = "technic:water_can", + can_description = S("Water Can"), + can_inventory_image = "technic_water_can.png", + can_capacity = 16, + liquid_source_name = "default:water_source", + liquid_flowing_name = "default:water_flowing", +}) + +minetest.register_craft({ + output = 'technic:water_can 1', + recipe = { + {'technic:zinc_ingot', 'technic:rubber','technic:zinc_ingot'}, + {'technic:carbon_steel_ingot', '', 'technic:carbon_steel_ingot'}, + {'technic:zinc_ingot', 'technic:carbon_steel_ingot', 'technic:zinc_ingot'}, + } +}) + +technic.register_can({ + can_name = "technic:lava_can", + can_description = S("Lava Can"), + can_inventory_image = "technic_lava_can.png", + can_capacity = 8, + liquid_source_name = "default:lava_source", + liquid_flowing_name = "default:lava_flowing", +}) + +minetest.register_craft({ + output = 'technic:lava_can 1', + recipe = { + {'technic:zinc_ingot', 'technic:stainless_steel_ingot','technic:zinc_ingot'}, + {'technic:stainless_steel_ingot', '', 'technic:stainless_steel_ingot'}, + {'technic:zinc_ingot', 'technic:stainless_steel_ingot', 'technic:zinc_ingot'}, + } +}) diff --git a/technic/tools/chainsaw.lua b/technic/tools/chainsaw.lua new file mode 100644 index 0000000..bf4efff --- /dev/null +++ b/technic/tools/chainsaw.lua @@ -0,0 +1,366 @@ +-- Configuration + +local chainsaw_max_charge = 30000 -- Maximum charge of the saw +-- Gives 2500 nodes on a single charge (about 50 complete normal trees) +local chainsaw_charge_per_node = 12 +-- Cut down tree leaves. Leaf decay may cause slowness on large trees +-- if this is disabled. +local chainsaw_leaves = true + +-- The default trees +local timber_nodenames = { + ["default:jungletree"] = true, + ["default:papyrus"] = true, + ["default:cactus"] = true, + ["default:tree"] = true, + ["default:apple"] = true, + ["default:pinetree"] = true, +} + +if chainsaw_leaves then + timber_nodenames["default:leaves"] = true + timber_nodenames["default:jungleleaves"] = true + timber_nodenames["default:pine_needles"] = true +end + +-- technic_worldgen defines rubber trees if moretrees isn't installed +if minetest.get_modpath("technic_worldgen") or + minetest.get_modpath("moretrees") then + timber_nodenames["moretrees:rubber_tree_trunk_empty"] = true + timber_nodenames["moretrees:rubber_tree_trunk"] = true + if chainsaw_leaves then + timber_nodenames["moretrees:rubber_tree_leaves"] = true + end +end + +-- Support moretrees if it is there +if minetest.get_modpath("moretrees") then + timber_nodenames["moretrees:acacia_trunk"] = true + timber_nodenames["moretrees:apple_tree_trunk"] = true + timber_nodenames["moretrees:beech_trunk"] = true + timber_nodenames["moretrees:birch_trunk"] = true + timber_nodenames["moretrees:fir_trunk"] = true + timber_nodenames["moretrees:oak_trunk"] = true + timber_nodenames["moretrees:palm_trunk"] = true + timber_nodenames["moretrees:pine_trunk"] = true + timber_nodenames["moretrees:sequoia_trunk"] = true + timber_nodenames["moretrees:spruce_trunk"] = true + timber_nodenames["moretrees:willow_trunk"] = true + timber_nodenames["moretrees:jungletree_trunk"] = true + + if chainsaw_leaves then + timber_nodenames["moretrees:acacia_leaves"] = true + timber_nodenames["moretrees:apple_tree_leaves"] = true + timber_nodenames["moretrees:oak_leaves"] = true + timber_nodenames["moretrees:fir_leaves"] = true + timber_nodenames["moretrees:fir_leaves_bright"] = true + timber_nodenames["moretrees:sequoia_leaves"] = true + timber_nodenames["moretrees:birch_leaves"] = true + timber_nodenames["moretrees:birch_leaves"] = true + timber_nodenames["moretrees:palm_leaves"] = true + timber_nodenames["moretrees:spruce_leaves"] = true + timber_nodenames["moretrees:spruce_leaves"] = true + timber_nodenames["moretrees:pine_leaves"] = true + timber_nodenames["moretrees:willow_leaves"] = true + timber_nodenames["moretrees:jungletree_leaves_green"] = true + timber_nodenames["moretrees:jungletree_leaves_yellow"] = true + timber_nodenames["moretrees:jungletree_leaves_red"] = true + timber_nodenames["moretrees:acorn"] = true + timber_nodenames["moretrees:coconut"] = true + timber_nodenames["moretrees:spruce_cone"] = true + timber_nodenames["moretrees:pine_cone"] = true + timber_nodenames["moretrees:fir_cone"] = true + timber_nodenames["moretrees:apple_blossoms"] = true + end +end + +-- Support growing_trees +if minetest.get_modpath("growing_trees") then + timber_nodenames["growing_trees:trunk"] = true + timber_nodenames["growing_trees:medium_trunk"] = true + timber_nodenames["growing_trees:big_trunk"] = true + timber_nodenames["growing_trees:trunk_top"] = true + timber_nodenames["growing_trees:trunk_sprout"] = true + timber_nodenames["growing_trees:branch_sprout"] = true + timber_nodenames["growing_trees:branch"] = true + timber_nodenames["growing_trees:branch_xmzm"] = true + timber_nodenames["growing_trees:branch_xpzm"] = true + timber_nodenames["growing_trees:branch_xmzp"] = true + timber_nodenames["growing_trees:branch_xpzp"] = true + timber_nodenames["growing_trees:branch_zz"] = true + timber_nodenames["growing_trees:branch_xx"] = true + + if chainsaw_leaves then + timber_nodenames["growing_trees:leaves"] = true + end +end + +-- Support growing_cactus +if minetest.get_modpath("growing_cactus") then + timber_nodenames["growing_cactus:sprout"] = true + timber_nodenames["growing_cactus:branch_sprout_vertical"] = true + timber_nodenames["growing_cactus:branch_sprout_vertical_fixed"] = true + timber_nodenames["growing_cactus:branch_sprout_xp"] = true + timber_nodenames["growing_cactus:branch_sprout_xm"] = true + timber_nodenames["growing_cactus:branch_sprout_zp"] = true + timber_nodenames["growing_cactus:branch_sprout_zm"] = true + timber_nodenames["growing_cactus:trunk"] = true + timber_nodenames["growing_cactus:branch_trunk"] = true + timber_nodenames["growing_cactus:branch"] = true + timber_nodenames["growing_cactus:branch_xp"] = true + timber_nodenames["growing_cactus:branch_xm"] = true + timber_nodenames["growing_cactus:branch_zp"] = true + timber_nodenames["growing_cactus:branch_zm"] = true + timber_nodenames["growing_cactus:branch_zz"] = true + timber_nodenames["growing_cactus:branch_xx"] = true +end + +-- Support farming_plus +if minetest.get_modpath("farming_plus") then + if chainsaw_leaves then + timber_nodenames["farming_plus:banana_leaves"] = true + timber_nodenames["farming_plus:banana"] = true + timber_nodenames["farming_plus:cocoa_leaves"] = true + timber_nodenames["farming_plus:cocoa"] = true + end +end + +-- Support nature +if minetest.get_modpath("nature") then + if chainsaw_leaves then + timber_nodenames["nature:blossom"] = true + end +end + +-- Support snow +if minetest.get_modpath("snow") then + if chainsaw_leaves then + timber_nodenames["snow:needles"] = true + timber_nodenames["snow:needles_decorated"] = true + timber_nodenames["snow:star"] = true + end +end + +-- Support vines (also generated by moretrees if available) +if minetest.get_modpath("vines") then + if chainsaw_leaves then + timber_nodenames["vines:vines"] = true + end +end + +if minetest.get_modpath("trunks") then + if chainsaw_leaves then + timber_nodenames["trunks:moss"] = true + timber_nodenames["trunks:moss_fungus"] = true + timber_nodenames["trunks:treeroot"] = true + end +end + +local S = technic.getter + +technic.register_power_tool("technic:chainsaw", chainsaw_max_charge) + +-- Table for saving what was sawed down +local produced = {} + +-- Save the items sawed down so that we can drop them in a nice single stack +local function handle_drops(drops) + for _, item in ipairs(drops) do + local stack = ItemStack(item) + local name = stack:get_name() + local p = produced[name] + if not p then + produced[name] = stack + else + p:set_count(p:get_count() + stack:get_count()) + end + end +end + +--- Iterator over positions to try to saw around a sawed node. +-- This returns positions in a 3x1x3 area around the position, plus the +-- position above it. This does not return the bottom position to prevent +-- the chainsaw from cutting down nodes below the cutting position. +-- @param pos Sawing position. +local function iterSawTries(pos) + -- Copy position to prevent mangling it + local pos = vector.new(pos) + local i = 0 + + return function() + i = i + 1 + -- Given a (top view) area like so (where 5 is the starting position): + -- X --> + -- Z 123 + -- | 456 + -- V 789 + -- This will return positions 1, 4, 7, 2, 8 (skip 5), 3, 6, 9, + -- and the position above 5. + if i == 1 then + -- Move to starting position + pos.x = pos.x - 1 + pos.z = pos.z - 1 + elseif i == 4 or i == 7 then + -- Move to next X and back to start of Z when we reach + -- the end of a Z line. + pos.x = pos.x + 1 + pos.z = pos.z - 2 + elseif i == 5 then + -- Skip the middle position (we've already run on it) + -- and double-increment the counter. + pos.z = pos.z + 2 + i = i + 1 + elseif i <= 9 then + -- Go to next Z. + pos.z = pos.z + 1 + elseif i == 10 then + -- Move back to center and up. + -- The Y+ position must be last so that we don't dig + -- straight upward and not come down (since the Y- + -- position isn't checked). + pos.x = pos.x - 1 + pos.z = pos.z - 1 + pos.y = pos.y + 1 + else + return nil + end + return pos + end +end + +-- This function does all the hard work. Recursively we dig the node at hand +-- if it is in the table and then search the surroundings for more stuff to dig. +local function recursive_dig(pos, remaining_charge) + if remaining_charge < chainsaw_charge_per_node then + return remaining_charge + end + local node = minetest.get_node(pos) + + if not timber_nodenames[node.name] then + return remaining_charge + end + + -- Wood found - cut it + handle_drops(minetest.get_node_drops(node.name, "")) + minetest.remove_node(pos) + remaining_charge = remaining_charge - chainsaw_charge_per_node + + -- Check surroundings and run recursively if any charge left + for npos in iterSawTries(pos) do + if remaining_charge < chainsaw_charge_per_node then + break + end + if timber_nodenames[minetest.get_node(npos).name] then + remaining_charge = recursive_dig(npos, remaining_charge) + end + end + return remaining_charge +end + +-- Function to randomize positions for new node drops +local function get_drop_pos(pos) + local drop_pos = {} + + for i = 0, 8 do + -- Randomize position for a new drop + drop_pos.x = pos.x + math.random(-3, 3) + drop_pos.y = pos.y - 1 + drop_pos.z = pos.z + math.random(-3, 3) + + -- Move the randomized position upwards until + -- the node is air or unloaded. + for y = drop_pos.y, drop_pos.y + 5 do + drop_pos.y = y + local node = minetest.get_node_or_nil(drop_pos) + + if not node then + -- If the node is not loaded yet simply drop + -- the item at the original digging position. + return pos + elseif node.name == "air" then + -- Add variation to the entity drop position, + -- but don't let drops get too close to the edge + drop_pos.x = drop_pos.x + (math.random() * 0.8) - 0.5 + drop_pos.z = drop_pos.z + (math.random() * 0.8) - 0.5 + return drop_pos + end + end + end + + -- Return the original position if this takes too long + return pos +end + +-- Chainsaw entry point +local function chainsaw_dig(pos, current_charge) + -- Start sawing things down + local remaining_charge = recursive_dig(pos, current_charge) + minetest.sound_play("chainsaw", {pos = pos, gain = 1.0, + max_hear_distance = 10}) + + -- Now drop items for the player + for name, stack in pairs(produced) do + -- Drop stacks of stack max or less + local count, max = stack:get_count(), stack:get_stack_max() + stack:set_count(max) + while count > max do + minetest.add_item(get_drop_pos(pos), stack) + count = count - max + end + stack:set_count(count) + minetest.add_item(get_drop_pos(pos), stack) + end + + -- Clean up + produced = {} + + return remaining_charge +end + + +minetest.register_tool("technic:chainsaw", { + description = S("Chainsaw"), + inventory_image = "technic_chainsaw.png", + stack_max = 1, + wear_represents = "technic_RE_charge", + on_refill = technic.refill_RE_charge, + on_use = function(itemstack, user, pointed_thing) + if pointed_thing.type ~= "node" then + return itemstack + end + + local meta = minetest.deserialize(itemstack:get_metadata()) + if not meta or not meta.charge or + meta.charge < chainsaw_charge_per_node then + return + end + + local name = user:get_player_name() + if minetest.is_protected(pointed_thing.under, name) then + minetest.record_protection_violation(pointed_thing.under, name) + return + end + + -- Send current charge to digging function so that the + -- chainsaw will stop after digging a number of nodes + meta.charge = chainsaw_dig(pointed_thing.under, meta.charge) + if not technic.creative_mode then + technic.set_RE_wear(itemstack, meta.charge, chainsaw_max_charge) + itemstack:set_metadata(minetest.serialize(meta)) + end + return itemstack + end, +}) + +local mesecons_button = minetest.get_modpath("mesecons_button") +local trigger = mesecons_button and "mesecons_button:button_off" or "default:mese_crystal_fragment" + +minetest.register_craft({ + output = "technic:chainsaw", + recipe = { + {"technic:stainless_steel_ingot", trigger, "technic:battery"}, + {"technic:fine_copper_wire", "technic:motor", "technic:battery"}, + {"", "", "technic:stainless_steel_ingot"}, + } +}) + diff --git a/technic/tools/flashlight.lua b/technic/tools/flashlight.lua new file mode 100644 index 0000000..252dc8c --- /dev/null +++ b/technic/tools/flashlight.lua @@ -0,0 +1,123 @@ +-- Original code comes from walkin_light mod by Echo +-- http://minetest.net/forum/viewtopic.php?id=2621 + +local flashlight_max_charge = 30000 + +local S = technic.getter + +technic.register_power_tool("technic:flashlight", flashlight_max_charge) + +minetest.register_alias("technic:light_off", "air") + +minetest.register_tool("technic:flashlight", { + description = S("Flashlight"), + inventory_image = "technic_flashlight.png", + stack_max = 1, + wear_represents = "technic_RE_charge", + on_refill = technic.refill_RE_charge, +}) + +minetest.register_craft({ + output = "technic:flashlight", + recipe = { + {"technic:rubber", "default:glass", "technic:rubber"}, + {"technic:stainless_steel_ingot", "technic:battery", "technic:stainless_steel_ingot"}, + {"", "technic:battery", ""} + } +}) + + +local player_positions = {} +local was_wielding = {} + +local function check_for_flashlight(player) + if player == nil then + return false + end + local inv = player:get_inventory() + local hotbar = inv:get_list("main") + for i = 1, 8 do + if hotbar[i]:get_name() == "technic:flashlight" then + local meta = minetest.deserialize(hotbar[i]:get_metadata()) + if meta and meta.charge and meta.charge >= 2 then + if not technic.creative_mode then + meta.charge = meta.charge - 2; + technic.set_RE_wear(hotbar[i], meta.charge, flashlight_max_charge) + hotbar[i]:set_metadata(minetest.serialize(meta)) + inv:set_stack("main", i, hotbar[i]) + end + return true + end + end + end + return false +end + +minetest.register_on_joinplayer(function(player) + local player_name = player:get_player_name() + local pos = player:getpos() + local rounded_pos = vector.round(pos) + rounded_pos.y = rounded_pos.y + 1 + player_positions[player_name] = rounded_pos + was_wielding[player_name] = true +end) + + +minetest.register_on_leaveplayer(function(player) + local player_name = player:get_player_name() + local pos = player_positions[player_name] + local nodename = minetest.get_node(pos).name + if nodename == "technic:light" then + minetest.remove_node(pos) + end + player_positions[player_name] = nil +end) + +minetest.register_globalstep(function(dtime) + for i, player in pairs(minetest.get_connected_players()) do + local player_name = player:get_player_name() + local flashlight_weared = check_for_flashlight(player) + local pos = player:getpos() + local rounded_pos = vector.round(pos) + rounded_pos.y = rounded_pos.y + 1 + local old_pos = player_positions[player_name] + local player_moved = old_pos and not vector.equals(old_pos, rounded_pos) + if not old_pos then + old_pos = rounded_pos + player_moved = true + end + + -- Remove light, flashlight weared out or was removed from hotbar + if was_wielding[player_name] and not flashlight_weared then + was_wielding[player_name] = false + local node = minetest.get_node_or_nil(old_pos) + if node and node.name == "technic:light" then + minetest.remove_node(old_pos) + end + elseif (player_moved or not was_wielding[player_name]) and flashlight_weared then + local node = minetest.get_node_or_nil(rounded_pos) + if node and node.name == "air" then + minetest.set_node(rounded_pos, {name="technic:light"}) + end + local node = minetest.get_node_or_nil(old_pos) + if node and node.name == "technic:light" then + minetest.remove_node(old_pos) + end + player_positions[player_name] = rounded_pos + was_wielding[player_name] = true + end + end +end) + +minetest.register_node("technic:light", { + drawtype = "glasslike", + tiles = {"technic_light.png"}, + paramtype = "light", + groups = {not_in_creative_inventory=1}, + drop = "", + walkable = false, + buildable_to = true, + sunlight_propagates = true, + light_source = LIGHT_MAX, + pointable = false, +}) diff --git a/technic/tools/init.lua b/technic/tools/init.lua new file mode 100644 index 0000000..5e0aa02 --- /dev/null +++ b/technic/tools/init.lua @@ -0,0 +1,23 @@ +local path = technic.modpath.."/tools" + +if technic.config:get_bool("enable_mining_drill") then + dofile(path.."/mining_drill.lua") +end +if technic.config:get_bool("enable_mining_laser") then + dofile(path.."/mining_lasers.lua") +end +if technic.config:get_bool("enable_flashlight") then + dofile(path.."/flashlight.lua") +end +dofile(path.."/cans.lua") +dofile(path.."/chainsaw.lua") +dofile(path.."/tree_tap.lua") +dofile(path.."/sonic_screwdriver.lua") +dofile(path.."/prospector.lua") +dofile(path.."/vacuum.lua") + +if minetest.get_modpath("screwdriver") then + -- compatibility alias + minetest.register_alias("technic:screwdriver", "screwdriver:screwdriver") +end + diff --git a/technic/tools/mining_drill.lua b/technic/tools/mining_drill.lua new file mode 100644 index 0000000..8a25abe --- /dev/null +++ b/technic/tools/mining_drill.lua @@ -0,0 +1,419 @@ +local max_charge = {50000, 200000, 650000} +local power_usage_per_node = {200, 500, 800} + +local S = technic.getter + +minetest.register_craft({ + output = 'technic:mining_drill', + recipe = { + {'moreores:tin_ingot', 'technic:diamond_drill_head', 'moreores:tin_ingot'}, + {'technic:stainless_steel_ingot', 'technic:motor', 'technic:stainless_steel_ingot'}, + {'', 'technic:red_energy_crystal', 'default:copper_ingot'}, + } +}) +minetest.register_craft({ + output = 'technic:mining_drill_mk2', + recipe = { + {'technic:diamond_drill_head', 'technic:diamond_drill_head', 'technic:diamond_drill_head'}, + {'technic:stainless_steel_ingot', 'technic:mining_drill', 'technic:stainless_steel_ingot'}, + {'', 'technic:green_energy_crystal', ''}, + } +}) +minetest.register_craft({ + output = 'technic:mining_drill_mk3', + recipe = { + {'technic:diamond_drill_head', 'technic:diamond_drill_head', 'technic:diamond_drill_head'}, + {'technic:stainless_steel_ingot', 'technic:mining_drill_mk2', 'technic:stainless_steel_ingot'}, + {'', 'technic:blue_energy_crystal', ''}, + } +}) +for i = 1, 4 do + minetest.register_craft({ + output = 'technic:mining_drill_mk3', + recipe = { + {'technic:diamond_drill_head', 'technic:diamond_drill_head', 'technic:diamond_drill_head'}, + {'technic:stainless_steel_ingot', 'technic:mining_drill_mk2_'..i, 'technic:stainless_steel_ingot'}, + {'', 'technic:blue_energy_crystal', ''}, + } + }) +end + +local mining_drill_mode_text = { + {S("Single node.")}, + {S("3 nodes deep.")}, + {S("3 nodes wide.")}, + {S("3 nodes tall.")}, + {S("3x3 nodes.")}, +} + +local function drill_dig_it0 (pos,player) + if minetest.is_protected(pos, player:get_player_name()) then + minetest.record_protection_violation(pos, player:get_player_name()) + return + end + local node=minetest.get_node(pos) + if node.name == "air" or node.name == "ignore" then return end + if node.name == "default:lava_source" then return end + if node.name == "default:lava_flowing" then return end + if node.name == "default:water_source" then minetest.remove_node(pos) return end + if node.name == "default:water_flowing" then minetest.remove_node(pos) return end + minetest.node_dig(pos,node,player) +end + +local function drill_dig_it1 (player) + local dir=player:get_look_dir() + if math.abs(dir.x)>math.abs(dir.z) then + if dir.x>0 then return 0 end + return 1 + end + if dir.z>0 then return 2 end + return 3 +end + +local function drill_dig_it2 (pos,player) + drill_dig_it0 (pos,player) + pos.z=pos.z+1 + drill_dig_it0 (pos,player) + pos.z=pos.z-2 + drill_dig_it0 (pos,player) + pos.z=pos.z+1 + pos.y=pos.y+1 + drill_dig_it0 (pos,player) + pos.z=pos.z+1 + drill_dig_it0 (pos,player) + pos.z=pos.z-2 + drill_dig_it0 (pos,player) + pos.z=pos.z+1 + pos.y=pos.y-2 + drill_dig_it0 (pos,player) + pos.z=pos.z+1 + drill_dig_it0 (pos,player) + pos.z=pos.z-2 + drill_dig_it0 (pos,player) +end + +local function drill_dig_it3 (pos,player) + drill_dig_it0 (pos,player) + pos.x=pos.x+1 + drill_dig_it0 (pos,player) + pos.x=pos.x-2 + drill_dig_it0 (pos,player) + pos.x=pos.x+1 + pos.y=pos.y+1 + drill_dig_it0 (pos,player) + pos.x=pos.x+1 + drill_dig_it0 (pos,player) + pos.x=pos.x-2 + drill_dig_it0 (pos,player) + pos.x=pos.x+1 + pos.y=pos.y-2 + drill_dig_it0 (pos,player) + pos.x=pos.x+1 + drill_dig_it0 (pos,player) + pos.x=pos.x-2 + drill_dig_it0 (pos,player) +end + +local function drill_dig_it4 (pos,player) + drill_dig_it0 (pos,player) + pos.x=pos.x+1 + drill_dig_it0 (pos,player) + pos.x=pos.x-2 + drill_dig_it0 (pos,player) + pos.x=pos.x+1 + pos.z=pos.z+1 + drill_dig_it0 (pos,player) + pos.x=pos.x+1 + drill_dig_it0 (pos,player) + pos.x=pos.x-2 + drill_dig_it0 (pos,player) + pos.x=pos.x+1 + pos.z=pos.z-2 + drill_dig_it0 (pos,player) + pos.x=pos.x+1 + drill_dig_it0 (pos,player) + pos.x=pos.x-2 + drill_dig_it0 (pos,player) +end + +local function cost_to_use(drill_type, mode) + local mult + if mode == 1 then + mult = 1 + elseif mode <= 4 then + mult = 3 + else + mult = 9 + end + return power_usage_per_node[drill_type] * mult +end + +local function drill_dig_it(pos, player, mode) + if mode == 1 then + drill_dig_it0(pos, player) + end + + if mode == 2 then -- 3 deep + dir = drill_dig_it1(player) + if dir == 0 then -- x+ + drill_dig_it0(pos, player) + pos.x = pos.x + 1 + drill_dig_it0(pos, player) + pos.x = pos.x + 1 + drill_dig_it0(pos, player) + end + if dir == 1 then -- x- + drill_dig_it0(pos, player) + pos.x=pos.x-1 + drill_dig_it0 (pos,player) + pos.x=pos.x-1 + drill_dig_it0 (pos,player) + end + if dir==2 then -- z+ + drill_dig_it0 (pos,player) + pos.z=pos.z+1 + drill_dig_it0 (pos,player) + pos.z=pos.z+1 + drill_dig_it0 (pos,player) + end + if dir==3 then -- z- + drill_dig_it0 (pos,player) + pos.z=pos.z-1 + drill_dig_it0 (pos,player) + pos.z=pos.z-1 + drill_dig_it0 (pos,player) + end + end + + if mode==3 then -- 3 wide + dir=drill_dig_it1(player) + if dir==0 or dir==1 then -- x + drill_dig_it0 (pos,player) + pos.z=pos.z+1 + drill_dig_it0 (pos,player) + pos.z=pos.z-2 + drill_dig_it0 (pos,player) + end + if dir==2 or dir==3 then -- z + drill_dig_it0 (pos,player) + pos.x=pos.x+1 + drill_dig_it0 (pos,player) + pos.x=pos.x-2 + drill_dig_it0 (pos,player) + end + end + + if mode==4 then -- 3 tall, selected in the middle + drill_dig_it0 (pos,player) + pos.y=pos.y-1 + drill_dig_it0 (pos,player) + pos.y=pos.y-1 + drill_dig_it0 (pos,player) + end + + if mode==5 then -- 3 x 3 + local dir=player:get_look_dir() + if math.abs(dir.y)<0.5 then + dir=drill_dig_it1(player) + if dir==0 or dir==1 then -- x + drill_dig_it2(pos,player) + end + if dir==2 or dir==3 then -- z + drill_dig_it3(pos,player) + end + else + drill_dig_it4(pos,player) + end + end + + minetest.sound_play("mining_drill", {pos = pos, gain = 1.0, max_hear_distance = 10,}) +end + +local function pos_is_pointable(pos) + local node = minetest.get_node(pos) + local nodedef = minetest.registered_nodes[node.name] + return nodedef and nodedef.pointable +end + +local function mining_drill_mk2_setmode(user,itemstack) + local player_name=user:get_player_name() + local item=itemstack:to_table() + local meta=minetest.deserialize(item["metadata"]) + if meta==nil then + meta={} + mode=0 + end + if meta["mode"]==nil then + minetest.chat_send_player(player_name, S("Use while sneaking to change Mining Drill Mk%d modes."):format(2)) + meta["mode"]=0 + mode=0 + end + mode=(meta["mode"]) + mode=mode+1 + if mode>=5 then mode=1 end + minetest.chat_send_player(player_name, S("Mining Drill Mk%d Mode %d"):format(2, mode)..": "..mining_drill_mode_text[mode][1]) + item["name"]="technic:mining_drill_mk2_"..mode + meta["mode"]=mode + item["metadata"]=minetest.serialize(meta) + itemstack:replace(item) + return itemstack +end + +local function mining_drill_mk3_setmode(user,itemstack) + local player_name=user:get_player_name() + local item=itemstack:to_table() + local meta=minetest.deserialize(item["metadata"]) + if meta==nil then + meta={} + mode=0 + end + if meta["mode"]==nil then + minetest.chat_send_player(player_name, S("Use while sneaking to change Mining Drill Mk%d modes."):format(3)) + meta["mode"]=0 + mode=0 + end + mode=(meta["mode"]) + mode=mode+1 + if mode>=6 then mode=1 end + minetest.chat_send_player(player_name, S("Mining Drill Mk%d Mode %d"):format(3, mode)..": "..mining_drill_mode_text[mode][1]) + item["name"]="technic:mining_drill_mk3_"..mode + meta["mode"]=mode + item["metadata"]=minetest.serialize(meta) + itemstack:replace(item) + return itemstack +end + + +local function mining_drill_mk2_handler(itemstack, user, pointed_thing) + local keys = user:get_player_control() + local player_name = user:get_player_name() + local meta = minetest.deserialize(itemstack:get_metadata()) + if not meta or not meta.mode or keys.sneak then + return mining_drill_mk2_setmode(user, itemstack) + end + if pointed_thing.type ~= "node" or not pos_is_pointable(pointed_thing.under) or not meta.charge then + return + end + local charge_to_take = cost_to_use(2, meta.mode) + if meta.charge >= charge_to_take then + local pos = minetest.get_pointed_thing_position(pointed_thing, above) + drill_dig_it(pos, user, meta.mode) + if not technic.creative_mode then + meta.charge = meta.charge - charge_to_take + itemstack:set_metadata(minetest.serialize(meta)) + technic.set_RE_wear(itemstack, meta.charge, max_charge[2]) + end + end + return itemstack +end + +local function mining_drill_mk3_handler(itemstack, user, pointed_thing) + local keys = user:get_player_control() + local player_name = user:get_player_name() + local meta = minetest.deserialize(itemstack:get_metadata()) + if not meta or not meta.mode or keys.sneak then + return mining_drill_mk3_setmode(user, itemstack) + end + if pointed_thing.type ~= "node" or not pos_is_pointable(pointed_thing.under) or not meta.charge then + return + end + local charge_to_take = cost_to_use(3, meta.mode) + if meta.charge >= charge_to_take then + local pos = minetest.get_pointed_thing_position(pointed_thing, above) + drill_dig_it(pos, user, meta.mode) + if not technic.creative_mode then + meta.charge = meta.charge - charge_to_take + itemstack:set_metadata(minetest.serialize(meta)) + technic.set_RE_wear(itemstack, meta.charge, max_charge[3]) + end + end + return itemstack +end + +technic.register_power_tool("technic:mining_drill", max_charge[1]) + +minetest.register_tool("technic:mining_drill", { + description = S("Mining Drill Mk%d"):format(1), + inventory_image = "technic_mining_drill.png", + stack_max = 1, + wear_represents = "technic_RE_charge", + on_refill = technic.refill_RE_charge, + on_use = function(itemstack, user, pointed_thing) + if pointed_thing.type ~= "node" or not pos_is_pointable(pointed_thing.under) then + return itemstack + end + local meta = minetest.deserialize(itemstack:get_metadata()) + if not meta or not meta.charge then + return + end + local charge_to_take = cost_to_use(1, 1) + if meta.charge >= charge_to_take then + local pos = minetest.get_pointed_thing_position(pointed_thing, above) + drill_dig_it(pos, user, 1) + if not technic.creative_mode then + meta.charge = meta.charge - charge_to_take + itemstack:set_metadata(minetest.serialize(meta)) + technic.set_RE_wear(itemstack, meta.charge, max_charge[1]) + end + end + return itemstack + end, +}) + +minetest.register_tool("technic:mining_drill_mk2", { + description = S("Mining Drill Mk%d"):format(2), + inventory_image = "technic_mining_drill_mk2.png", + wear_represents = "technic_RE_charge", + on_refill = technic.refill_RE_charge, + on_use = function(itemstack, user, pointed_thing) + mining_drill_mk2_handler(itemstack, user, pointed_thing) + return itemstack + end, +}) + +technic.register_power_tool("technic:mining_drill_mk2", max_charge[2]) + +for i = 1, 4 do + technic.register_power_tool("technic:mining_drill_mk2_"..i, max_charge[2]) + minetest.register_tool("technic:mining_drill_mk2_"..i, { + description = S("Mining Drill Mk%d Mode %d"):format(2, i), + inventory_image = "technic_mining_drill_mk2.png^technic_tool_mode"..i..".png", + wield_image = "technic_mining_drill_mk2.png", + wear_represents = "technic_RE_charge", + on_refill = technic.refill_RE_charge, + groups = {not_in_creative_inventory=1}, + on_use = function(itemstack, user, pointed_thing) + mining_drill_mk2_handler(itemstack, user, pointed_thing) + return itemstack + end, + }) +end + +minetest.register_tool("technic:mining_drill_mk3", { + description = S("Mining Drill Mk%d"):format(3), + inventory_image = "technic_mining_drill_mk3.png", + wear_represents = "technic_RE_charge", + on_refill = technic.refill_RE_charge, + on_use = function(itemstack, user, pointed_thing) + mining_drill_mk3_handler(itemstack,user,pointed_thing) + return itemstack + end, +}) + +technic.register_power_tool("technic:mining_drill_mk3", max_charge[3]) + +for i=1,5,1 do + technic.register_power_tool("technic:mining_drill_mk3_"..i, max_charge[3]) + minetest.register_tool("technic:mining_drill_mk3_"..i, { + description = S("Mining Drill Mk%d Mode %d"):format(3, i), + inventory_image = "technic_mining_drill_mk3.png^technic_tool_mode"..i..".png", + wield_image = "technic_mining_drill_mk3.png", + wear_represents = "technic_RE_charge", + on_refill = technic.refill_RE_charge, + groups = {not_in_creative_inventory=1}, + on_use = function(itemstack, user, pointed_thing) + mining_drill_mk3_handler(itemstack,user,pointed_thing) + return itemstack + end, + }) +end diff --git a/technic/tools/mining_lasers.lua b/technic/tools/mining_lasers.lua new file mode 100644 index 0000000..4c83ae9 --- /dev/null +++ b/technic/tools/mining_lasers.lua @@ -0,0 +1,178 @@ +local mining_lasers_list = { +-- {, , , }, + {"1", 7, 50000, 1000}, + {"2", 14, 200000, 2000}, + {"3", 21, 650000, 3000}, +} + +local S = technic.getter + +minetest.register_craft({ + output = 'technic:laser_mk1', + recipe = { + {'default:diamond', 'technic:brass_ingot', 'default:obsidian_glass'}, + {'', 'technic:brass_ingot', 'technic:red_energy_crystal'}, + {'', '', 'default:copper_ingot'}, + } +}) +minetest.register_craft({ + output = 'technic:laser_mk2', + recipe = { + {'default:diamond', 'technic:carbon_steel_ingot', 'technic:laser_mk1'}, + {'', 'technic:carbon_steel_ingot', 'technic:green_energy_crystal'}, + {'', '', 'default:copper_ingot'}, + } +}) +minetest.register_craft({ + output = 'technic:laser_mk3', + recipe = { + {'default:diamond', 'technic:carbon_steel_ingot', 'technic:laser_mk2'}, + {'', 'technic:carbon_steel_ingot', 'technic:blue_energy_crystal'}, + {'', '', 'default:copper_ingot'}, + } +}) + +-- Based on code by Uberi: https://gist.github.com/Uberi/3125280 +local function rayIter(pos, dir, range) + local p = vector.round(pos) + local x_step, y_step, z_step = 0, 0, 0 + local x_component, y_component, z_component = 0, 0, 0 + local x_intersect, y_intersect, z_intersect = 0, 0, 0 + + if dir.x == 0 then + x_intersect = math.huge + elseif dir.x > 0 then + x_step = 1 + x_component = 1 / dir.x + x_intersect = x_component + else + x_step = -1 + x_component = 1 / -dir.x + end + if dir.y == 0 then + y_intersect = math.huge + elseif dir.y > 0 then + y_step = 1 + y_component = 1 / dir.y + y_intersect = y_component + else + y_step = -1 + y_component = 1 / -dir.y + end + if dir.z == 0 then + z_intersect = math.huge + elseif dir.z > 0 then + z_step = 1 + z_component = 1 / dir.z + z_intersect = z_component + else + z_step = -1 + z_component = 1 / -dir.z + end + + return function() + if x_intersect < y_intersect then + if x_intersect < z_intersect then + p.x = p.x + x_step + x_intersect = x_intersect + x_component + else + p.z = p.z + z_step + z_intersect = z_intersect + z_component + end + elseif y_intersect < z_intersect then + p.y = p.y + y_step + y_intersect = y_intersect + y_component + else + p.z = p.z + z_step + z_intersect = z_intersect + z_component + end + if vector.distance(pos, p) > range then + return nil + end + return p + end +end + +local function laser_node(pos, node, player) + local def = minetest.registered_nodes[node.name] + if def and def.liquidtype ~= "none" then + minetest.remove_node(pos) + minetest.add_particle({ + pos = pos, + vel = {x=0, y=2, z=0}, + acc = {x=0, y=-1, z=0}, + expirationtime = 1.5, + size = 6 + math.random() * 2, + texture = "smoke_puff.png^[transform" .. math.random(0, 7), + }) + return + end + minetest.node_dig(pos, node, player) +end + +local no_destroy = { + ["air"] = true, + ["default:lava_source"] = true, + ["default:lava_flowing"] = true, +} +local function laser_shoot(player, range, particle_texture, sound) + local player_pos = player:getpos() + local player_name = player:get_player_name() + local dir = player:get_look_dir() + + local start_pos = vector.new(player_pos) + -- Adjust to head height + start_pos.y = start_pos.y + 1.9 + minetest.add_particle({ + pos = startpos, + vel = dir, + acc = vector.multiply(dir, 50), + expirationtime = range / 11, + size = 1, + texture = particle_texture .. "^[transform" .. math.random(0, 7), + }) + minetest.sound_play(sound, {pos = player_pos, max_hear_distance = range}) + for pos in rayIter(start_pos, dir, range) do + if minetest.is_protected(pos, player_name) then + minetest.record_protection_violation(pos, player_name) + break + end + local node = minetest.get_node_or_nil(pos) + if not node then + break + end + if not no_destroy[node.name] then + laser_node(pos, node, player) + end + end +end + + +for _, m in pairs(mining_lasers_list) do + technic.register_power_tool("technic:laser_mk"..m[1], m[3]) + minetest.register_tool("technic:laser_mk"..m[1], { + description = S("Mining Laser Mk%d"):format(m[1]), + inventory_image = "technic_mining_laser_mk"..m[1]..".png", + stack_max = 1, + wear_represents = "technic_RE_charge", + on_refill = technic.refill_RE_charge, + on_use = function(itemstack, user) + local meta = minetest.deserialize(itemstack:get_metadata()) + if not meta or not meta.charge then + return + end + + -- If there's enough charge left, fire the laser + if meta.charge >= m[4] then + laser_shoot(user, m[2], "technic_laser_beam_mk"..m[1]..".png", "technic_laser_mk"..m[1]) + if not technic.creative_mode then + meta.charge = meta.charge - m[4] + technic.set_RE_wear(itemstack, meta.charge, m[3]) + itemstack:set_metadata(minetest.serialize(meta)) + end + end + return itemstack + end, + }) +end + diff --git a/technic/tools/prospector.lua b/technic/tools/prospector.lua new file mode 100644 index 0000000..b28f1d8 --- /dev/null +++ b/technic/tools/prospector.lua @@ -0,0 +1,128 @@ +local S = technic.getter + +technic.register_power_tool("technic:prospector", 300000) + +local function get_metadata(toolstack) + local m = minetest.deserialize(toolstack:get_metadata()) + if not m then m = {} end + if not m.charge then m.charge = 0 end + if not m.target then m.target = "" end + if not m.look_depth then m.look_depth = 7 end + if not m.look_radius then m.look_radius = 1 end + return m +end + +minetest.register_tool("technic:prospector", { + description = S("Prospector"), + inventory_image = "technic_prospector.png", + wear_represents = "technic_RE_charge", + on_refill = technic.refill_RE_charge, + on_use = function(toolstack, user, pointed_thing) + if not user or not user:is_player() or user.is_fake_player then return end + if pointed_thing.type ~= "node" then return end + local toolmeta = get_metadata(toolstack) + local look_diameter = toolmeta.look_radius * 2 + 1 + local charge_to_take = toolmeta.look_depth * (toolmeta.look_depth + 1) * look_diameter * look_diameter + if toolmeta.charge < charge_to_take then return end + if toolmeta.target == "" then + minetest.chat_send_player(user:get_player_name(), "Right-click to set target block type") + return + end + if not technic.creative_mode then + toolmeta.charge = toolmeta.charge - charge_to_take + toolstack:set_metadata(minetest.serialize(toolmeta)) + technic.set_RE_wear(toolstack, toolmeta.charge, technic.power_tools[toolstack:get_name()]) + end + local start_pos = pointed_thing.under + local forward = minetest.facedir_to_dir(minetest.dir_to_facedir(user:get_look_dir(), true)) + local right = forward.x ~= 0 and { x=0, y=1, z=0 } or (forward.y ~= 0 and { x=0, y=0, z=1 } or { x=1, y=0, z=0 }) + local up = forward.x ~= 0 and { x=0, y=0, z=1 } or (forward.y ~= 0 and { x=1, y=0, z=0 } or { x=0, y=1, z=0 }) + local base_pos = vector.add(start_pos, vector.multiply(vector.add(right, up), - toolmeta.look_radius)) + local found = false + for f = 0, toolmeta.look_depth-1 do + for r = 0, look_diameter-1 do + for u = 0, look_diameter-1 do + if minetest.get_node(vector.add(vector.add(vector.add(base_pos, vector.multiply(forward, f)), vector.multiply(right, r)), vector.multiply(up, u))).name == toolmeta.target then found = true end + end + end + end + if math.random() < 0.02 then found = not found end + minetest.chat_send_player(user:get_player_name(), minetest.registered_nodes[toolmeta.target].description.." is "..(found and "present" or "absent").." in "..look_diameter.."x"..look_diameter.."x"..toolmeta.look_depth.." region") + minetest.sound_play("technic_prospector_"..(found and "hit" or "miss"), { pos = vector.add(user:getpos(), { x = 0, y = 1, z = 0 }), gain = 1.0, max_hear_distance = 10 }) + return toolstack + end, + on_place = function(toolstack, user, pointed_thing) + if not user or not user:is_player() or user.is_fake_player then return end + local toolmeta = get_metadata(toolstack) + local pointed + if pointed_thing.type == "node" then + local pname = minetest.get_node(pointed_thing.under).name + local pdef = minetest.registered_nodes[pname] + if pdef and (pdef.groups.not_in_creative_inventory or 0) == 0 and pname ~= toolmeta.target then + pointed = pname + end + end + local look_diameter = toolmeta.look_radius * 2 + 1 + minetest.show_formspec(user:get_player_name(), "technic:prospector_control", + "size[7,8.5]".. + "item_image[0,0;1,1;"..toolstack:get_name().."]".. + "label[1,0;"..minetest.formspec_escape(toolstack:get_definition().description).."]".. + (toolmeta.target ~= "" and + "label[0,1.5;Current target:]".. + "label[0,2;"..minetest.formspec_escape(minetest.registered_nodes[toolmeta.target].description).."]".. + "item_image[0,2.5;1,1;"..toolmeta.target.."]" or + "label[0,1.5;No target set]").. + (pointed and + "label[3.5,1.5;May set new target:]".. + "label[3.5,2;"..minetest.formspec_escape(minetest.registered_nodes[pointed].description).."]".. + "item_image[3.5,2.5;1,1;"..pointed.."]".. + "button_exit[3.5,3.65;2,0.5;target_"..pointed..";Set target]" or + "label[3.5,1.5;No new target available]").. + "label[0,4.5;Region cross section:]".. + "label[0,5;"..look_diameter.."x"..look_diameter.."]".. + "label[3.5,4.5;Set region cross section:]".. + "button_exit[3.5,5.15;1,0.5;look_radius_0;1x1]".. + "button_exit[4.5,5.15;1,0.5;look_radius_1;3x3]".. + "button_exit[5.5,5.15;1,0.5;look_radius_3;7x7]".. + "label[0,6;Region depth:]".. + "label[0,6.5;"..toolmeta.look_depth.."]".. + "label[3.5,6;Set region depth:]".. + "button_exit[3.5,6.65;1,0.5;look_depth_7;7]".. + "button_exit[4.5,6.65;1,0.5;look_depth_14;14]".. + "button_exit[5.5,6.65;1,0.5;look_depth_21;21]".. + "label[0,7.5;Accuracy:]".. + "label[0,8;98%]") + return + end, +}) + +minetest.register_on_player_receive_fields(function(user, formname, fields) + if formname ~= "technic:prospector_control" then return false end + if not user or not user:is_player() or user.is_fake_player then return end + local toolstack = user:get_wielded_item() + if toolstack:get_name() ~= "technic:prospector" then return true end + local toolmeta = get_metadata(toolstack) + for field, value in pairs(fields) do + if field:sub(1, 7) == "target_" then + toolmeta.target = field:sub(8) + end + if field:sub(1, 12) == "look_radius_" then + toolmeta.look_radius = field:sub(13) + end + if field:sub(1, 11) == "look_depth_" then + toolmeta.look_depth = field:sub(12) + end + end + toolstack:set_metadata(minetest.serialize(toolmeta)) + user:set_wielded_item(toolstack) + return true +end) + +minetest.register_craft({ + output = "technic:prospector", + recipe = { + {"moreores:pick_silver", "moreores:mithril_block", "pipeworks:teleport_tube_1"}, + {"technic:brass_ingot", "technic:control_logic_unit", "technic:brass_ingot"}, + {"", "technic:blue_energy_crystal", ""}, + } +}) diff --git a/technic/tools/sonic_screwdriver.lua b/technic/tools/sonic_screwdriver.lua new file mode 100644 index 0000000..300d363 --- /dev/null +++ b/technic/tools/sonic_screwdriver.lua @@ -0,0 +1,98 @@ +local sonic_screwdriver_max_charge = 15000 + +local S = technic.getter + +technic.register_power_tool("technic:sonic_screwdriver", sonic_screwdriver_max_charge) + +-- screwdriver handler code reused from minetest/minetest_game screwdriver @a9ac480 +local ROTATE_FACE = 1 +local ROTATE_AXIS = 2 + +local function nextrange(x, max) + x = x + 1 + if x > max then + x = 0 + end + return x +end + +-- Handles rotation +local function screwdriver_handler(itemstack, user, pointed_thing, mode) + if pointed_thing.type ~= "node" then + return + end + + local pos = pointed_thing.under + + if minetest.is_protected(pos, user:get_player_name()) then + minetest.record_protection_violation(pos, user:get_player_name()) + return + end + + local node = minetest.get_node(pos) + local ndef = minetest.registered_nodes[node.name] + if not ndef or not ndef.paramtype2 == "facedir" or + (ndef.drawtype == "nodebox" and + not ndef.node_box.type == "fixed") or + node.param2 == nil then + return + end + + -- contrary to the default screwdriver, do not check for can_dig, to allow rotating machines with CLU's in them + -- this is consistent with the previous sonic screwdriver + + local meta1 = minetest.deserialize(itemstack:get_metadata()) + if not meta1 or not meta1.charge or meta1.charge < 100 then + return + end + + minetest.sound_play("technic_sonic_screwdriver", {pos = pos, gain = 0.3, max_hear_distance = 10}) + + -- Set param2 + local rotationPart = node.param2 % 32 -- get first 4 bits + local preservePart = node.param2 - rotationPart + + local axisdir = math.floor(rotationPart / 4) + local rotation = rotationPart - axisdir * 4 + if mode == ROTATE_FACE then + rotationPart = axisdir * 4 + nextrange(rotation, 3) + elseif mode == ROTATE_AXIS then + rotationPart = nextrange(axisdir, 5) * 4 + end + + node.param2 = preservePart + rotationPart + minetest.swap_node(pos, node) + + if not technic.creative_mode then + meta1.charge = meta1.charge - 100 + itemstack:set_metadata(minetest.serialize(meta1)) + technic.set_RE_wear(itemstack, meta1.charge, sonic_screwdriver_max_charge) + end + + return itemstack +end + +minetest.register_tool("technic:sonic_screwdriver", { + description = S("Sonic Screwdriver (left-click rotates face, right-click rotates axis)"), + inventory_image = "technic_sonic_screwdriver.png", + wear_represents = "technic_RE_charge", + on_refill = technic.refill_RE_charge, + on_use = function(itemstack, user, pointed_thing) + screwdriver_handler(itemstack, user, pointed_thing, ROTATE_FACE) + return itemstack + end, + on_place = function(itemstack, user, pointed_thing) + screwdriver_handler(itemstack, user, pointed_thing, ROTATE_AXIS) + return itemstack + end, +}) + +minetest.register_craft({ + output = "technic:sonic_screwdriver", + recipe = { + {"", "default:diamond", ""}, + {"mesecons_materials:fiber", "technic:battery", "mesecons_materials:fiber"}, + {"mesecons_materials:fiber", "moreores:mithril_ingot", "mesecons_materials:fiber"} + } +}) + diff --git a/technic/tools/tree_tap.lua b/technic/tools/tree_tap.lua new file mode 100644 index 0000000..e84fe33 --- /dev/null +++ b/technic/tools/tree_tap.lua @@ -0,0 +1,75 @@ + +local S = technic.getter +local mesecons_materials = minetest.get_modpath("mesecons_materials") + +minetest.register_tool("technic:treetap", { + description = S("Tree Tap"), + inventory_image = "technic_tree_tap.png", + on_use = function(itemstack, user, pointed_thing) + if pointed_thing.type ~= "node" then + return + end + local pos = pointed_thing.under + if minetest.is_protected(pos, user:get_player_name()) then + minetest.record_protection_violation(pos, user:get_player_name()) + return + end + local node = minetest.get_node(pos) + local node_name = node.name + if node_name ~= "moretrees:rubber_tree_trunk" then + return + end + node.name = "moretrees:rubber_tree_trunk_empty" + minetest.swap_node(pos, node) + minetest.handle_node_drops(pointed_thing.above, {"technic:raw_latex"}, user) + if not technic.creative_mode then + local item_wear = tonumber(itemstack:get_wear()) + item_wear = item_wear + 819 + if item_wear > 65535 then + itemstack:clear() + return itemstack + end + itemstack:set_wear(item_wear) + end + return itemstack + end, +}) + +minetest.register_craft({ + output = "technic:treetap", + recipe = { + {"pipeworks:tube_1", "group:wood", "default:stick"}, + {"", "default:stick", "default:stick"} + }, +}) + +minetest.register_craftitem("technic:raw_latex", { + description = S("Raw Latex"), + inventory_image = "technic_raw_latex.png", +}) + +if mesecons_materials then + minetest.register_craft({ + type = "cooking", + recipe = "technic:raw_latex", + output = "mesecons_materials:glue", + }) +end + +minetest.register_craftitem("technic:rubber", { + description = S("Rubber Fiber"), + inventory_image = "technic_rubber.png", +}) + +minetest.register_abm({ + nodenames = {"moretrees:rubber_tree_trunk_empty"}, + interval = 60, + chance = 15, + action = function(pos, node) + if minetest.find_node_near(pos, (moretrees and moretrees.leafdecay_radius) or 5, {"moretrees:rubber_tree_leaves"}) then + node.name = "moretrees:rubber_tree_trunk" + minetest.swap_node(pos, node) + end + end +}) + diff --git a/technic/tools/vacuum.lua b/technic/tools/vacuum.lua new file mode 100644 index 0000000..f5fac9a --- /dev/null +++ b/technic/tools/vacuum.lua @@ -0,0 +1,61 @@ +-- Configuration +local vacuum_max_charge = 10000 -- 10000 - Maximum charge of the vacuum cleaner +local vacuum_charge_per_object = 100 -- 100 - Capable of picking up 50 objects +local vacuum_range = 8 -- 8 - Area in which to pick up objects + +local S = technic.getter + +technic.register_power_tool("technic:vacuum", vacuum_max_charge) + +minetest.register_tool("technic:vacuum", { + description = S("Vacuum Cleaner"), + inventory_image = "technic_vacuum.png", + stack_max = 1, + wear_represents = "technic_RE_charge", + on_refill = technic.refill_RE_charge, + on_use = function(itemstack, user, pointed_thing) + local meta = minetest.deserialize(itemstack:get_metadata()) + if not meta or not meta.charge then + return + end + if meta.charge > vacuum_charge_per_object then + minetest.sound_play("vacuumcleaner", { + to_player = user:get_player_name(), + gain = 0.4, + }) + end + local pos = user:getpos() + local inv = user:get_inventory() + for _, object in ipairs(minetest.env:get_objects_inside_radius(pos, vacuum_range)) do + local luaentity = object:get_luaentity() + if not object:is_player() and luaentity and luaentity.name == "__builtin:item" and luaentity.itemstring ~= "" then + if inv and inv:room_for_item("main", ItemStack(luaentity.itemstring)) then + meta.charge = meta.charge - vacuum_charge_per_object + if meta.charge < vacuum_charge_per_object then + return + end + inv:add_item("main", ItemStack(luaentity.itemstring)) + minetest.sound_play("item_drop_pickup", { + to_player = user:get_player_name(), + gain = 0.4, + }) + luaentity.itemstring = "" + object:remove() + end + end + end + + technic.set_RE_wear(itemstack, meta.charge, vacuum_max_charge) + itemstack:set_metadata(minetest.serialize(meta)) + return itemstack + end, +}) + +minetest.register_craft({ + output = 'technic:vacuum', + recipe = { + {'pipeworks:tube_1', 'pipeworks:filter', 'technic:battery'}, + {'pipeworks:tube_1', 'technic:motor', 'technic:battery'}, + {'technic:stainless_steel_ingot', '', ''}, + } +}) diff --git a/technic/wrench/depends.txt b/technic/wrench/depends.txt deleted file mode 100644 index a681af3..0000000 --- a/technic/wrench/depends.txt +++ /dev/null @@ -1,6 +0,0 @@ -default -technic? -technic_chests? -technic_worldgen? -intllib? - diff --git a/technic/wrench/init.lua b/technic/wrench/init.lua deleted file mode 100644 index 76605c4..0000000 --- a/technic/wrench/init.lua +++ /dev/null @@ -1,162 +0,0 @@ ---[[ -Wrench mod - -Adds a wrench that allows the player to pickup nodes that contain an inventory -with items or metadata that needs perserving. -The wrench has the same tool capability as the normal hand. -To pickup a node simply right click on it. If the node contains a formspec, -you will need to shift+right click instead. -Because it enables arbitrary nesting of chests, and so allows the player -to carry an unlimited amount of material at once, this wrench is not -available to survival-mode players. ---]] - -local LATEST_SERIALIZATION_VERSION = 1 - -wrench = {} - -local modpath = minetest.get_modpath(minetest.get_current_modname()) -dofile(modpath.."/support.lua") -dofile(modpath.."/technic.lua") - --- Boilerplate to support localized strings if intllib mod is installed. -local S = rawget(_G, "intllib") and intllib.Getter() or function(s) return s end - -local function get_meta_type(name, metaname) - local def = wrench.registered_nodes[name] - if not def or not def.metas or not def.metas[metaname] then - return nil - end - return def.metas[metaname] -end - -local function get_pickup_name(name) - return "wrench:picked_up_"..(name:gsub(":", "_")) -end - -local function restore(pos, placer, itemstack) - local name = itemstack:get_name() - local node = minetest.get_node(pos) - local meta = minetest.get_meta(pos) - local inv = meta:get_inventory() - local data = minetest.deserialize(itemstack:get_metadata()) - minetest.set_node(pos, {name = data.name, param2 = node.param2}) - local lists = data.lists - for name, value in pairs(data.metas) do - local meta_type = get_meta_type(data.name, name) - if meta_type == wrench.META_TYPE_INT then - meta:set_int(name, value) - elseif meta_type == wrench.META_TYPE_FLOAT then - meta:set_float(name, value) - elseif meta_type == wrench.META_TYPE_STRING then - meta:set_string(name, value) - end - end - for listname, list in pairs(lists) do - inv:set_list(listname, list) - end - itemstack:take_item() - return itemstack -end - -for name, info in pairs(wrench.registered_nodes) do - local olddef = minetest.registered_nodes[name] - if olddef then - local newdef = {} - for key, value in pairs(olddef) do - newdef[key] = value - end - newdef.stack_max = 1 - newdef.description = S("%s with items"):format(newdef.description) - newdef.groups = {} - newdef.groups.not_in_creative_inventory = 1 - newdef.on_construct = nil - newdef.on_destruct = nil - newdef.after_place_node = restore - minetest.register_node(":"..get_pickup_name(name), newdef) - end -end - -minetest.register_tool("wrench:wrench", { - description = S("Wrench"), - inventory_image = "technic_wrench.png", - tool_capabilities = { - full_punch_interval = 0.9, - max_drop_level = 0, - groupcaps = { - crumbly = {times={[2]=3.00, [3]=0.70}, uses=0, maxlevel=1}, - snappy = {times={[3]=0.40}, uses=0, maxlevel=1}, - oddly_breakable_by_hand = {times={[1]=7.00,[2]=4.00,[3]=1.40}, - uses=0, maxlevel=3} - }, - damage_groups = {fleshy=1}, - }, - on_place = function(itemstack, placer, pointed_thing) - local pos = pointed_thing.under - if not placer or not pos then - return - end - if minetest.is_protected(pos, placer:get_player_name()) then - minetest.record_protection_violation(pos, placer:get_player_name()) - return - end - local name = minetest.get_node(pos).name - local def = wrench.registered_nodes[name] - if not def then - return - end - - local stack = ItemStack(get_pickup_name(name)) - local player_inv = placer:get_inventory() - if not player_inv:room_for_item("main", stack) then - return - end - local meta = minetest.get_meta(pos) - if def.owned then - local owner = meta:get_string("owner") - if owner and owner ~= placer:get_player_name() then - minetest.log("action", placer:get_player_name().. - " tried to pick up a owned node belonging to ".. - owner.." at ".. - minetest.pos_to_string(pos)) - return - end - end - - local metadata = {} - metadata.name = name - metadata.version = LATEST_SERIALIZATION_VERSION - - local inv = meta:get_inventory() - local lists = {} - for _, listname in pairs(def.lists or {}) do - if not inv:is_empty(listname) then - empty = false - end - local list = inv:get_list(listname) - for i, stack in pairs(list) do - list[i] = stack:to_string() - end - lists[listname] = list - end - metadata.lists = lists - - local metas = {} - for name, meta_type in pairs(def.metas or {}) do - if meta_type == wrench.META_TYPE_INT then - metas[name] = meta:get_int(name) - elseif meta_type == wrench.META_TYPE_FLOAT then - metas[name] = meta:get_float(name) - elseif meta_type == wrench.META_TYPE_STRING then - metas[name] = meta:get_string(name) - end - end - metadata.metas = metas - - stack:set_metadata(minetest.serialize(metadata)) - minetest.remove_node(pos) - itemstack:add_wear(65535 / 20) - player_inv:add_item("main", stack) - return itemstack - end, -}) diff --git a/technic/wrench/locale/de.txt b/technic/wrench/locale/de.txt deleted file mode 100644 index b285cd3..0000000 --- a/technic/wrench/locale/de.txt +++ /dev/null @@ -1,7 +0,0 @@ -# German Translation for technic_wrench -# Deutsche Übersetzung von technic_wrench -# by Xanthin - -Wrench = Schraubenschluessel -%s with items = %s mit Gegenstaenden - diff --git a/technic/wrench/locale/template.txt b/technic/wrench/locale/template.txt deleted file mode 100644 index eff2da2..0000000 --- a/technic/wrench/locale/template.txt +++ /dev/null @@ -1,5 +0,0 @@ -# technic_wrench translation template - -Wrench = -%s with items = - diff --git a/technic/wrench/locale/tr.txt b/technic/wrench/locale/tr.txt deleted file mode 100644 index 2050bce..0000000 --- a/technic/wrench/locale/tr.txt +++ /dev/null @@ -1,5 +0,0 @@ -# Turkish translation by mahmutelmas06 -# mahmutelmas06@hotmail.com - -Wrench = İngiliz anahtarı -%s with items = Araçlarla birlikte %s diff --git a/technic/wrench/support.lua b/technic/wrench/support.lua deleted file mode 100644 index 1d21811..0000000 --- a/technic/wrench/support.lua +++ /dev/null @@ -1,73 +0,0 @@ ---[[ -supported_nodes -This table stores all nodes that are compatible with the wrench mod. -Syntax: - [] = { - lists = {""}, - metas = {[""] = STRING, - [""] = INT, - [""] = FLOAT}, - owned = true, - store_meta_always = true, - } - owned - nodes that are protected by owner requirements (Ex. locked chests) - store_meta_always - when nodes are broken this ensures metadata and - inventory is always stored (Ex. active state for machines) ---]] - -wrench.META_TYPE_INT = 0 -wrench.META_TYPE_FLOAT = 1 -wrench.META_TYPE_STRING = 2 - -local INT, STRING, FLOAT = - wrench.META_TYPE_INT, - wrench.META_TYPE_STRING, - wrench.META_TYPE_FLOAT - -wrench.registered_nodes = { - ["default:chest"] = { - lists = {"main"}, - }, - ["default:chest_locked"] = { - lists = {"main"}, - metas = {owner = STRING, - infotext = STRING}, - owned = true, - }, - ["default:furnace"] = { - lists = {"fuel", "src", "dst"}, - metas = {infotext = STRING, - fuel_totaltime = FLOAT, - fuel_time = FLOAT, - src_totaltime = FLOAT, - src_time = FLOAT}, - }, - ["default:furnace_active"] = { - lists = {"fuel", "src", "dst"}, - metas = {infotext = STRING, - fuel_totaltime = FLOAT, - fuel_time = FLOAT, - src_totaltime = FLOAT, - src_time = FLOAT}, - store_meta_always = true, - }, - ["default:sign_wall"] = { - metas = {infotext = STRING, - text = STRING}, - }, -} - -function wrench:original_name(name) - for key, value in pairs(self.registered_nodes) do - if name == value.name then - return key - end - end -end - -function wrench:register_node(name, def) - if minetest.registered_nodes[name] then - self.registered_nodes[name] = def - end -end - diff --git a/technic/wrench/technic.lua b/technic/wrench/technic.lua deleted file mode 100644 index c404180..0000000 --- a/technic/wrench/technic.lua +++ /dev/null @@ -1,343 +0,0 @@ - -local INT, STRING, FLOAT = - wrench.META_TYPE_INT, - wrench.META_TYPE_STRING, - wrench.META_TYPE_FLOAT - -wrench:register_node("technic:iron_chest", { - lists = {"main"}, -}) -wrench:register_node("technic:iron_locked_chest", { - lists = {"main"}, - metas = {infotext = STRING, - owner = STRING}, - owned = true, -}) -wrench:register_node("technic:copper_chest", { - lists = {"main"}, -}) -wrench:register_node("technic:copper_locked_chest", { - lists = {"main"}, - metas = {infotext = STRING, - owner = STRING}, - owned = true, -}) -wrench:register_node("technic:silver_chest", { - lists = {"main"}, - metas = {infotext = STRING, - formspec = STRING}, -}) -wrench:register_node("technic:silver_locked_chest", { - lists = {"main"}, - metas = {infotext = STRING, - owner = STRING, - formspec = STRING}, - owned = true, -}) -wrench:register_node("technic:gold_chest", { - lists = {"main"}, - metas = {infotext = STRING, - formspec = STRING}, -}) -wrench:register_node("technic:gold_locked_chest", { - lists = {"main"}, - metas = {infotext = STRING, - owner = STRING, - formspec = STRING}, - owned = true, -}) -wrench:register_node("technic:mithril_chest", { - lists = {"main"}, - metas = {infotext = STRING, - formspec = STRING}, -}) -wrench:register_node("technic:mithril_locked_chest", { - lists = {"main"}, - metas = {infotext = STRING, - owner = STRING, - formspec = STRING}, - owned = true, -}) -wrench:register_node("technic:lv_electric_furnace", { - lists = {"src", "dst"}, - metas = {infotext = STRING, - formspec = STRING, - LV_EU_demand = INT, - LV_EU_input = INT, - src_time = INT}, -}) -wrench:register_node("technic:lv_electric_furnace_active", { - lists = {"src", "dst"}, - metas = {infotext = STRING, - formspec = STRING, - LV_EU_demand = INT, - LV_EU_input = INT, - src_time = INT}, -}) -wrench:register_node("technic:mv_electric_furnace", { - lists = {"src", "dst", "upgrade1", "upgrade2"}, - metas = {infotext = STRING, - formspec = STRING, - MV_EU_demand = INT, - MV_EU_input = INT, - tube_time = INT, - src_time = INT}, -}) -wrench:register_node("technic:mv_electric_furnace_active", { - lists = {"src", "dst", "upgrade1", "upgrade2"}, - metas = {infotext = STRING, - formspec = STRING, - MV_EU_demand = INT, - MV_EU_input = INT, - tube_time = INT, - src_time = INT}, -}) -wrench:register_node("technic:coal_alloy_furnace", { - lists = {"fuel", "src", "dst"}, - metas = {infotext = STRING, - fuel_totaltime = FLOAT, - fuel_time = FLOAT, - src_totaltime = FLOAT, - src_time = FLOAT}, -}) -wrench:register_node("technic:coal_alloy_furnace_active", { - lists = {"fuel", "src", "dst"}, - metas = {infotext = STRING, - fuel_totaltime = FLOAT, - fuel_time = FLOAT, - src_totaltime = FLOAT, - src_time = FLOAT}, -}) -wrench:register_node("technic:alloy_furnace", { - lists = {"src", "dst"}, - metas = {infotext = STRING, - formspec = STRING, - LV_EU_demand = INT, - LV_EU_input = INT, - tube_time = INT, - src_time = INT}, -}) -wrench:register_node("technic:alloy_furnace_active", { - lists = {"src", "dst"}, - metas = {infotext = STRING, - formspec = STRING, - LV_EU_demand = INT, - LV_EU_input = INT, - tube_time = INT, - src_time = INT}, -}) -wrench:register_node("technic:mv_alloy_furnace", { - lists = {"src", "dst", "upgrade1", "upgrade2"}, - metas = {infotext = STRING, - formspec = STRING, - MV_EU_demand = INT, - MV_EU_input = INT, - tube_time = INT, - src_time = INT}, -}) -wrench:register_node("technic:mv_alloy_furnace_active", { - lists = {"src", "dst", "upgrade1", "upgrade2"}, - metas = {infotext = STRING, - formspec = STRING, - MV_EU_demand = INT, - MV_EU_input = INT, - tube_time = INT, - src_time = INT}, -}) -wrench:register_node("technic:tool_workshop", { - lists = {"src", "upgrade1", "upgrade2"}, - metas = {infotext = STRING, - formspec = STRING, - MV_EU_demand = INT, - MV_EU_input = INT, - tube_time = INT}, -}) -wrench:register_node("technic:grinder", { - lists = {"src", "dst"}, - metas = {infotext = STRING, - formspec = STRING, - LV_EU_demand = INT, - LV_EU_input = INT, - src_time = INT}, -}) -wrench:register_node("technic:grinder_active", { - lists = {"src", "dst"}, - metas = {infotext = STRING, - formspec = STRING, - LV_EU_demand = INT, - LV_EU_input = INT, - src_time = INT}, -}) -wrench:register_node("technic:mv_grinder", { - lists = {"src", "dst", "upgrade1", "upgrade2"}, - metas = {infotext = STRING, - formspec = STRING, - MV_EU_demand = INT, - MV_EU_input = INT, - tube_time = INT, - src_time = INT}, -}) -wrench:register_node("technic:mv_grinder_active", { - lists = {"src", "dst", "upgrade1", "upgrade2"}, - metas = {infotext = STRING, - formspec = STRING, - MV_EU_demand = INT, - MV_EU_input = INT, - tube_time = INT, - src_time = INT}, -}) -wrench:register_node("technic:extractor", { - lists = {"src", "dst"}, - metas = {infotext = STRING, - formspec = STRING, - LV_EU_demand = INT, - LV_EU_input = INT, - src_time = INT}, -}) -wrench:register_node("technic:extractor_active", { - lists = {"src", "dst"}, - metas = {infotext = STRING, - formspec = STRING, - LV_EU_demand = INT, - LV_EU_input = INT, - src_time = INT}, -}) -wrench:register_node("technic:mv_extractor", { - lists = {"src", "dst", "upgrade1", "upgrade2"}, - metas = {infotext = STRING, - formspec = STRING, - MV_EU_demand = INT, - MV_EU_input = INT, - tube_time = INT, - src_time = INT}, -}) -wrench:register_node("technic:mv_extractor_active", { - lists = {"src", "dst", "upgrade1", "upgrade2"}, - metas = {infotext = STRING, - formspec = STRING, - MV_EU_demand = INT, - MV_EU_input = INT, - tube_time = INT, - src_time = INT}, -}) -wrench:register_node("technic:compressor", { - lists = {"src", "dst"}, - metas = {infotext = STRING, - formspec = STRING, - LV_EU_demand = INT, - LV_EU_input = INT, - src_time = INT}, -}) -wrench:register_node("technic:compressor_active", { - lists = {"src", "dst"}, - metas = {infotext = STRING, - formspec = STRING, - LV_EU_demand = INT, - LV_EU_input = INT, - src_time = INT}, -}) -wrench:register_node("technic:mv_compressor", { - lists = {"src", "dst", "upgrade1", "upgrade2"}, - metas = {infotext = STRING, - formspec = STRING, - MV_EU_demand = INT, - MV_EU_input = INT, - tube_time = INT, - src_time = INT}, -}) -wrench:register_node("technic:mv_compressor_active", { - lists = {"src", "dst", "upgrade1", "upgrade2"}, - metas = {infotext = STRING, - formspec = STRING, - MV_EU_demand = INT, - MV_EU_input = INT, - tube_time = INT, - src_time = INT}, -}) -wrench:register_node("technic:cnc", { - lists = {"src", "dst"}, - metas = {infotext = STRING, - formspec = STRING, - LV_EU_demand = INT, - LV_EU_input = INT, - src_time = INT, - cnc_product = STRING}, -}) -wrench:register_node("technic:cnc_active", { - lists = {"src", "dst"}, - metas = {infotext = STRING, - formspec = STRING, - LV_EU_demand = INT, - LV_EU_input = INT, - src_time = INT, - cnc_product = STRING}, -}) -wrench:register_node("technic:mv_centrifuge", { - lists = {"src", "dst", "upgrade1", "upgrade2"}, - metas = {infotext = STRING, - formspec = STRING, - MV_EU_demand = INT, - MV_EU_input = INT, - tube_time = INT, - src_time = INT}, -}) -wrench:register_node("technic:mv_centrifuge_active", { - lists = {"src", "dst", "upgrade1", "upgrade2"}, - metas = {infotext = STRING, - formspec = STRING, - MV_EU_demand = INT, - MV_EU_input = INT, - tube_time = INT, - src_time = INT}, -}) - - -local chest_mark_colors = { - '_black', - '_blue', - '_brown', - '_cyan', - '_dark_green', - '_dark_grey', - '_green', - '_grey', - '_magenta', - '_orange', - '_pink', - '_red', - '_violet', - '_white', - '_yellow', - '', -} - -for i = 1, 15 do - wrench:register_node("technic:gold_chest"..chest_mark_colors[i], { - lists = {"main"}, - metas = {infotext = STRING,formspec = STRING}, - }) - wrench:register_node("technic:gold_locked_chest"..chest_mark_colors[i], { - lists = {"main"}, - metas = {infotext = STRING,owner = STRING,formspec = STRING}, - owned = true, - }) -end - -if minetest.get_modpath("technic") then - for tier, _ in pairs(technic.machines) do - local ltier = tier:lower() - for i = 0, 8 do - wrench:register_node("technic:"..ltier.."_battery_box"..i, { - lists = {"src", "dst"}, - metas = {infotext = STRING, - formspec = STRING, - [tier.."_EU_demand"] = INT, - [tier.."_EU_supply"] = INT, - [tier.."_EU_input"] = INT, - internal_EU_charge = INT, - last_side_shown = INT}, - }) - end - end -end - diff --git a/technic/wrench/textures/technic_wrench.png b/technic/wrench/textures/technic_wrench.png deleted file mode 100644 index 471b47e..0000000 Binary files a/technic/wrench/textures/technic_wrench.png and /dev/null differ -- cgit v1.2.3