From 85b55f57a46da3fb1fedb8b94b8bf7544740f4d1 Mon Sep 17 00:00:00 2001 From: sys4-fr Date: Sat, 8 Sep 2018 14:42:39 +0200 Subject: [PATCH] Version MFF. --- .gitignore | 0 LICENSE | 0 README | 0 autocrafter.lua | 9 +++- autoplace_pipes.lua | 0 autoplace_tubes.lua | 0 changelog.txt | 0 common.lua | 0 compat.lua | 0 crafts.lua | 0 decorative_tubes.lua | 0 default_settings.txt | 0 depends.txt | 0 devices.lua | 26 +++++----- filter-injector.lua | 14 ++++- flowing_logic.lua | 12 ++--- init.lua | 2 +- item_transport.lua | 2 +- legacy.lua | 6 +-- luaentity.lua | 48 +++++++++--------- models.lua | 2 +- models/pipeworks_entry_panel.obj | 0 models/pipeworks_flow_sensor.obj | 0 models/pipeworks_fountainhead.obj | 0 models/pipeworks_pipe_10.obj | 0 models/pipeworks_pipe_2.obj | 0 models/pipeworks_pipe_3.obj | 0 models/pipeworks_pipe_4.obj | 0 models/pipeworks_pipe_5.obj | 0 models/pipeworks_pipe_6.obj | 0 models/pipeworks_pipe_7.obj | 0 models/pipeworks_pipe_8.obj | 0 models/pipeworks_pipe_9.obj | 0 models/pipeworks_pump.obj | 0 models/pipeworks_spigot.obj | 0 models/pipeworks_spigot_pouring.obj | 0 models/pipeworks_valve_off.obj | 0 models/pipeworks_valve_on.obj | 0 pipes.lua | 16 +++--- routing_tubes.lua | 0 signal_tubes.lua | 2 +- sorting_tubes.lua | 0 teleport_tube.lua | 2 +- textures/homedecor_oil_extract.png | Bin 285 -> 289 bytes textures/homedecor_paraffin.png | Bin textures/homedecor_plastic_sheeting.png | Bin 290 -> 293 bytes textures/pipeworks_accelerator_tube_end.png | Bin textures/pipeworks_accelerator_tube_inv.png | Bin textures/pipeworks_accelerator_tube_noctr.png | Bin textures/pipeworks_accelerator_tube_plain.png | Bin textures/pipeworks_accelerator_tube_short.png | Bin textures/pipeworks_autocrafter.png | Bin textures/pipeworks_black.png | Bin textures/pipeworks_blue.png | Bin textures/pipeworks_button_interm.png | Bin textures/pipeworks_button_off.png | Bin textures/pipeworks_button_on.png | Bin textures/pipeworks_conductor_tube_end.png | Bin textures/pipeworks_conductor_tube_inv.png | Bin textures/pipeworks_conductor_tube_noctr.png | Bin textures/pipeworks_conductor_tube_on_end.png | Bin .../pipeworks_conductor_tube_on_noctr.png | Bin .../pipeworks_conductor_tube_on_plain.png | Bin textures/pipeworks_conductor_tube_plain.png | Bin textures/pipeworks_conductor_tube_short.png | Bin textures/pipeworks_crossing_tube_end.png | Bin textures/pipeworks_crossing_tube_inv.png | Bin textures/pipeworks_crossing_tube_noctr.png | Bin textures/pipeworks_crossing_tube_plain.png | Bin textures/pipeworks_crossing_tube_short.png | Bin textures/pipeworks_deployer_back.png | Bin textures/pipeworks_deployer_bottom.png | Bin 801 -> 801 bytes textures/pipeworks_deployer_front_off.png | Bin textures/pipeworks_deployer_front_on.png | Bin textures/pipeworks_deployer_side.png | Bin 823 -> 823 bytes textures/pipeworks_deployer_side1.png | Bin 823 -> 823 bytes textures/pipeworks_deployer_side2.png | Bin 823 -> 823 bytes textures/pipeworks_deployer_top.png | Bin textures/pipeworks_detector_tube_end.png | Bin textures/pipeworks_detector_tube_inv.png | Bin textures/pipeworks_detector_tube_noctr.png | Bin textures/pipeworks_detector_tube_plain.png | Bin textures/pipeworks_detector_tube_short.png | Bin textures/pipeworks_dispenser_back.png | Bin textures/pipeworks_dispenser_bottom.png | Bin textures/pipeworks_dispenser_front_off.png | Bin textures/pipeworks_dispenser_front_on.png | Bin textures/pipeworks_dispenser_side1.png | Bin textures/pipeworks_dispenser_side2.png | Bin textures/pipeworks_dispenser_top.png | Bin textures/pipeworks_entry_panel.png | Bin 4915 -> 4905 bytes textures/pipeworks_filter_input.png | Bin textures/pipeworks_filter_output.png | Bin textures/pipeworks_filter_side.png | Bin textures/pipeworks_filter_top.png | Bin textures/pipeworks_flow_sensor_off.png | Bin 3759 -> 3753 bytes textures/pipeworks_flow_sensor_on.png | Bin 4484 -> 4476 bytes textures/pipeworks_fountainhead.png | Bin textures/pipeworks_grating_sides.png | Bin textures/pipeworks_grating_top.png | Bin textures/pipeworks_green.png | Bin textures/pipeworks_mese_filter_input.png | Bin textures/pipeworks_mese_filter_output.png | Bin textures/pipeworks_mese_filter_side.png | Bin textures/pipeworks_mese_filter_top.png | Bin textures/pipeworks_mese_sand_tube_end.png | Bin textures/pipeworks_mese_sand_tube_inv.png | Bin textures/pipeworks_mese_sand_tube_noctr.png | Bin textures/pipeworks_mese_sand_tube_plain.png | Bin textures/pipeworks_mese_sand_tube_short.png | Bin textures/pipeworks_mese_tube_end.png | Bin textures/pipeworks_mese_tube_inv.png | Bin textures/pipeworks_mese_tube_noctr_1.png | Bin textures/pipeworks_mese_tube_noctr_2.png | Bin textures/pipeworks_mese_tube_noctr_3.png | Bin textures/pipeworks_mese_tube_noctr_4.png | Bin textures/pipeworks_mese_tube_noctr_5.png | Bin textures/pipeworks_mese_tube_noctr_6.png | Bin textures/pipeworks_mese_tube_plain_1.png | Bin textures/pipeworks_mese_tube_plain_2.png | Bin textures/pipeworks_mese_tube_plain_3.png | Bin textures/pipeworks_mese_tube_plain_4.png | Bin textures/pipeworks_mese_tube_plain_5.png | Bin textures/pipeworks_mese_tube_plain_6.png | Bin textures/pipeworks_mese_tube_short.png | Bin textures/pipeworks_nodebreaker_back.png | Bin textures/pipeworks_nodebreaker_bottom_off.png | Bin textures/pipeworks_nodebreaker_bottom_on.png | Bin textures/pipeworks_nodebreaker_front_off.png | Bin textures/pipeworks_nodebreaker_front_on.png | Bin textures/pipeworks_nodebreaker_side1_off.png | Bin textures/pipeworks_nodebreaker_side1_on.png | Bin textures/pipeworks_nodebreaker_side2_off.png | Bin textures/pipeworks_nodebreaker_side2_on.png | Bin textures/pipeworks_nodebreaker_top_off.png | Bin textures/pipeworks_nodebreaker_top_on.png | Bin textures/pipeworks_one_way_tube_input.png | Bin textures/pipeworks_one_way_tube_output.png | Bin textures/pipeworks_one_way_tube_side.png | Bin textures/pipeworks_one_way_tube_top.png | Bin .../pipeworks_pane_embedded_tube_ends.png | Bin .../pipeworks_pane_embedded_tube_sides.png | Bin textures/pipeworks_pipe_3_empty.png | Bin 2351 -> 2338 bytes textures/pipeworks_pipe_3_loaded.png | Bin textures/pipeworks_pipe_inv.png | Bin textures/pipeworks_pipe_plain.png | Bin 2343 -> 2342 bytes textures/pipeworks_plastic_sheeting.png | Bin textures/pipeworks_pump_off.png | Bin textures/pipeworks_pump_on.png | Bin textures/pipeworks_red.png | Bin textures/pipeworks_sand_tube_end.png | Bin textures/pipeworks_sand_tube_inv.png | Bin textures/pipeworks_sand_tube_noctr.png | Bin textures/pipeworks_sand_tube_plain.png | Bin textures/pipeworks_sand_tube_short.png | Bin textures/pipeworks_spigot.png | Bin 2463 -> 2462 bytes textures/pipeworks_storage_tank_back.png | Bin textures/pipeworks_storage_tank_fittings.png | Bin textures/pipeworks_storage_tank_front_0.png | Bin textures/pipeworks_storage_tank_front_1.png | Bin textures/pipeworks_storage_tank_front_10.png | Bin textures/pipeworks_storage_tank_front_2.png | Bin textures/pipeworks_storage_tank_front_3.png | Bin textures/pipeworks_storage_tank_front_4.png | Bin textures/pipeworks_storage_tank_front_5.png | Bin textures/pipeworks_storage_tank_front_6.png | Bin textures/pipeworks_storage_tank_front_7.png | Bin textures/pipeworks_storage_tank_front_8.png | Bin textures/pipeworks_storage_tank_front_9.png | Bin textures/pipeworks_teleport_tube_end.png | Bin textures/pipeworks_teleport_tube_inv.png | Bin textures/pipeworks_teleport_tube_noctr.png | Bin textures/pipeworks_teleport_tube_plain.png | Bin textures/pipeworks_teleport_tube_short.png | Bin textures/pipeworks_testobject.png | Bin textures/pipeworks_trashcan_bottom.png | Bin textures/pipeworks_trashcan_side.png | Bin .../pipeworks_tube_connection_metallic.png | Bin textures/pipeworks_tube_connection_stony.png | Bin 170 -> 172 bytes textures/pipeworks_tube_connection_wooden.png | Bin 152 -> 153 bytes textures/pipeworks_tube_end.png | Bin textures/pipeworks_tube_inv.png | Bin textures/pipeworks_tube_noctr.png | Bin textures/pipeworks_tube_plain.png | Bin textures/pipeworks_tube_short.png | Bin textures/pipeworks_tube_transparent.png | Bin 95 -> 95 bytes textures/pipeworks_valve.png | Bin 5043 -> 5021 bytes textures/pipeworks_white.png | Bin textures/pipeworks_yellow.png | Bin trashcan.lua | 12 ++--- tube_registration.lua | 10 ++-- vacuum_tubes.lua | 31 ++++++----- wielder.lua | 12 ++++- 193 files changed, 121 insertions(+), 85 deletions(-) mode change 100644 => 100755 .gitignore mode change 100644 => 100755 LICENSE mode change 100644 => 100755 README mode change 100644 => 100755 autocrafter.lua mode change 100644 => 100755 autoplace_pipes.lua mode change 100644 => 100755 autoplace_tubes.lua mode change 100644 => 100755 changelog.txt mode change 100644 => 100755 common.lua mode change 100644 => 100755 compat.lua mode change 100644 => 100755 crafts.lua mode change 100644 => 100755 decorative_tubes.lua mode change 100644 => 100755 default_settings.txt mode change 100644 => 100755 depends.txt mode change 100644 => 100755 devices.lua mode change 100644 => 100755 filter-injector.lua mode change 100644 => 100755 flowing_logic.lua mode change 100644 => 100755 init.lua mode change 100644 => 100755 item_transport.lua mode change 100644 => 100755 legacy.lua mode change 100644 => 100755 luaentity.lua mode change 100644 => 100755 models.lua mode change 100644 => 100755 models/pipeworks_entry_panel.obj mode change 100644 => 100755 models/pipeworks_flow_sensor.obj mode change 100644 => 100755 models/pipeworks_fountainhead.obj mode change 100644 => 100755 models/pipeworks_pipe_10.obj mode change 100644 => 100755 models/pipeworks_pipe_2.obj mode change 100644 => 100755 models/pipeworks_pipe_3.obj mode change 100644 => 100755 models/pipeworks_pipe_4.obj mode change 100644 => 100755 models/pipeworks_pipe_5.obj mode change 100644 => 100755 models/pipeworks_pipe_6.obj mode change 100644 => 100755 models/pipeworks_pipe_7.obj mode change 100644 => 100755 models/pipeworks_pipe_8.obj mode change 100644 => 100755 models/pipeworks_pipe_9.obj mode change 100644 => 100755 models/pipeworks_pump.obj mode change 100644 => 100755 models/pipeworks_spigot.obj mode change 100644 => 100755 models/pipeworks_spigot_pouring.obj mode change 100644 => 100755 models/pipeworks_valve_off.obj mode change 100644 => 100755 models/pipeworks_valve_on.obj mode change 100644 => 100755 pipes.lua mode change 100644 => 100755 routing_tubes.lua mode change 100644 => 100755 signal_tubes.lua mode change 100644 => 100755 sorting_tubes.lua mode change 100644 => 100755 teleport_tube.lua mode change 100644 => 100755 textures/homedecor_oil_extract.png mode change 100644 => 100755 textures/homedecor_paraffin.png mode change 100644 => 100755 textures/homedecor_plastic_sheeting.png mode change 100644 => 100755 textures/pipeworks_accelerator_tube_end.png mode change 100644 => 100755 textures/pipeworks_accelerator_tube_inv.png mode change 100644 => 100755 textures/pipeworks_accelerator_tube_noctr.png mode change 100644 => 100755 textures/pipeworks_accelerator_tube_plain.png mode change 100644 => 100755 textures/pipeworks_accelerator_tube_short.png mode change 100644 => 100755 textures/pipeworks_autocrafter.png mode change 100644 => 100755 textures/pipeworks_black.png mode change 100644 => 100755 textures/pipeworks_blue.png mode change 100644 => 100755 textures/pipeworks_button_interm.png mode change 100644 => 100755 textures/pipeworks_button_off.png mode change 100644 => 100755 textures/pipeworks_button_on.png mode change 100644 => 100755 textures/pipeworks_conductor_tube_end.png mode change 100644 => 100755 textures/pipeworks_conductor_tube_inv.png mode change 100644 => 100755 textures/pipeworks_conductor_tube_noctr.png mode change 100644 => 100755 textures/pipeworks_conductor_tube_on_end.png mode change 100644 => 100755 textures/pipeworks_conductor_tube_on_noctr.png mode change 100644 => 100755 textures/pipeworks_conductor_tube_on_plain.png mode change 100644 => 100755 textures/pipeworks_conductor_tube_plain.png mode change 100644 => 100755 textures/pipeworks_conductor_tube_short.png mode change 100644 => 100755 textures/pipeworks_crossing_tube_end.png mode change 100644 => 100755 textures/pipeworks_crossing_tube_inv.png mode change 100644 => 100755 textures/pipeworks_crossing_tube_noctr.png mode change 100644 => 100755 textures/pipeworks_crossing_tube_plain.png mode change 100644 => 100755 textures/pipeworks_crossing_tube_short.png mode change 100644 => 100755 textures/pipeworks_deployer_back.png mode change 100644 => 100755 textures/pipeworks_deployer_bottom.png mode change 100644 => 100755 textures/pipeworks_deployer_front_off.png mode change 100644 => 100755 textures/pipeworks_deployer_front_on.png mode change 100644 => 100755 textures/pipeworks_deployer_side.png mode change 100644 => 100755 textures/pipeworks_deployer_side1.png mode change 100644 => 100755 textures/pipeworks_deployer_side2.png mode change 100644 => 100755 textures/pipeworks_deployer_top.png mode change 100644 => 100755 textures/pipeworks_detector_tube_end.png mode change 100644 => 100755 textures/pipeworks_detector_tube_inv.png mode change 100644 => 100755 textures/pipeworks_detector_tube_noctr.png mode change 100644 => 100755 textures/pipeworks_detector_tube_plain.png mode change 100644 => 100755 textures/pipeworks_detector_tube_short.png mode change 100644 => 100755 textures/pipeworks_dispenser_back.png mode change 100644 => 100755 textures/pipeworks_dispenser_bottom.png mode change 100644 => 100755 textures/pipeworks_dispenser_front_off.png mode change 100644 => 100755 textures/pipeworks_dispenser_front_on.png mode change 100644 => 100755 textures/pipeworks_dispenser_side1.png mode change 100644 => 100755 textures/pipeworks_dispenser_side2.png mode change 100644 => 100755 textures/pipeworks_dispenser_top.png mode change 100644 => 100755 textures/pipeworks_entry_panel.png mode change 100644 => 100755 textures/pipeworks_filter_input.png mode change 100644 => 100755 textures/pipeworks_filter_output.png mode change 100644 => 100755 textures/pipeworks_filter_side.png mode change 100644 => 100755 textures/pipeworks_filter_top.png mode change 100644 => 100755 textures/pipeworks_flow_sensor_off.png mode change 100644 => 100755 textures/pipeworks_flow_sensor_on.png mode change 100644 => 100755 textures/pipeworks_fountainhead.png mode change 100644 => 100755 textures/pipeworks_grating_sides.png mode change 100644 => 100755 textures/pipeworks_grating_top.png mode change 100644 => 100755 textures/pipeworks_green.png mode change 100644 => 100755 textures/pipeworks_mese_filter_input.png mode change 100644 => 100755 textures/pipeworks_mese_filter_output.png mode change 100644 => 100755 textures/pipeworks_mese_filter_side.png mode change 100644 => 100755 textures/pipeworks_mese_filter_top.png mode change 100644 => 100755 textures/pipeworks_mese_sand_tube_end.png mode change 100644 => 100755 textures/pipeworks_mese_sand_tube_inv.png mode change 100644 => 100755 textures/pipeworks_mese_sand_tube_noctr.png mode change 100644 => 100755 textures/pipeworks_mese_sand_tube_plain.png mode change 100644 => 100755 textures/pipeworks_mese_sand_tube_short.png mode change 100644 => 100755 textures/pipeworks_mese_tube_end.png mode change 100644 => 100755 textures/pipeworks_mese_tube_inv.png mode change 100644 => 100755 textures/pipeworks_mese_tube_noctr_1.png mode change 100644 => 100755 textures/pipeworks_mese_tube_noctr_2.png mode change 100644 => 100755 textures/pipeworks_mese_tube_noctr_3.png mode change 100644 => 100755 textures/pipeworks_mese_tube_noctr_4.png mode change 100644 => 100755 textures/pipeworks_mese_tube_noctr_5.png mode change 100644 => 100755 textures/pipeworks_mese_tube_noctr_6.png mode change 100644 => 100755 textures/pipeworks_mese_tube_plain_1.png mode change 100644 => 100755 textures/pipeworks_mese_tube_plain_2.png mode change 100644 => 100755 textures/pipeworks_mese_tube_plain_3.png mode change 100644 => 100755 textures/pipeworks_mese_tube_plain_4.png mode change 100644 => 100755 textures/pipeworks_mese_tube_plain_5.png mode change 100644 => 100755 textures/pipeworks_mese_tube_plain_6.png mode change 100644 => 100755 textures/pipeworks_mese_tube_short.png mode change 100644 => 100755 textures/pipeworks_nodebreaker_back.png mode change 100644 => 100755 textures/pipeworks_nodebreaker_bottom_off.png mode change 100644 => 100755 textures/pipeworks_nodebreaker_bottom_on.png mode change 100644 => 100755 textures/pipeworks_nodebreaker_front_off.png mode change 100644 => 100755 textures/pipeworks_nodebreaker_front_on.png mode change 100644 => 100755 textures/pipeworks_nodebreaker_side1_off.png mode change 100644 => 100755 textures/pipeworks_nodebreaker_side1_on.png mode change 100644 => 100755 textures/pipeworks_nodebreaker_side2_off.png mode change 100644 => 100755 textures/pipeworks_nodebreaker_side2_on.png mode change 100644 => 100755 textures/pipeworks_nodebreaker_top_off.png mode change 100644 => 100755 textures/pipeworks_nodebreaker_top_on.png mode change 100644 => 100755 textures/pipeworks_one_way_tube_input.png mode change 100644 => 100755 textures/pipeworks_one_way_tube_output.png mode change 100644 => 100755 textures/pipeworks_one_way_tube_side.png mode change 100644 => 100755 textures/pipeworks_one_way_tube_top.png mode change 100644 => 100755 textures/pipeworks_pane_embedded_tube_ends.png mode change 100644 => 100755 textures/pipeworks_pane_embedded_tube_sides.png mode change 100644 => 100755 textures/pipeworks_pipe_3_empty.png mode change 100644 => 100755 textures/pipeworks_pipe_3_loaded.png mode change 100644 => 100755 textures/pipeworks_pipe_inv.png mode change 100644 => 100755 textures/pipeworks_pipe_plain.png mode change 100644 => 100755 textures/pipeworks_plastic_sheeting.png mode change 100644 => 100755 textures/pipeworks_pump_off.png mode change 100644 => 100755 textures/pipeworks_pump_on.png mode change 100644 => 100755 textures/pipeworks_red.png mode change 100644 => 100755 textures/pipeworks_sand_tube_end.png mode change 100644 => 100755 textures/pipeworks_sand_tube_inv.png mode change 100644 => 100755 textures/pipeworks_sand_tube_noctr.png mode change 100644 => 100755 textures/pipeworks_sand_tube_plain.png mode change 100644 => 100755 textures/pipeworks_sand_tube_short.png mode change 100644 => 100755 textures/pipeworks_spigot.png mode change 100644 => 100755 textures/pipeworks_storage_tank_back.png mode change 100644 => 100755 textures/pipeworks_storage_tank_fittings.png mode change 100644 => 100755 textures/pipeworks_storage_tank_front_0.png mode change 100644 => 100755 textures/pipeworks_storage_tank_front_1.png mode change 100644 => 100755 textures/pipeworks_storage_tank_front_10.png mode change 100644 => 100755 textures/pipeworks_storage_tank_front_2.png mode change 100644 => 100755 textures/pipeworks_storage_tank_front_3.png mode change 100644 => 100755 textures/pipeworks_storage_tank_front_4.png mode change 100644 => 100755 textures/pipeworks_storage_tank_front_5.png mode change 100644 => 100755 textures/pipeworks_storage_tank_front_6.png mode change 100644 => 100755 textures/pipeworks_storage_tank_front_7.png mode change 100644 => 100755 textures/pipeworks_storage_tank_front_8.png mode change 100644 => 100755 textures/pipeworks_storage_tank_front_9.png mode change 100644 => 100755 textures/pipeworks_teleport_tube_end.png mode change 100644 => 100755 textures/pipeworks_teleport_tube_inv.png mode change 100644 => 100755 textures/pipeworks_teleport_tube_noctr.png mode change 100644 => 100755 textures/pipeworks_teleport_tube_plain.png mode change 100644 => 100755 textures/pipeworks_teleport_tube_short.png mode change 100644 => 100755 textures/pipeworks_testobject.png mode change 100644 => 100755 textures/pipeworks_trashcan_bottom.png mode change 100644 => 100755 textures/pipeworks_trashcan_side.png mode change 100644 => 100755 textures/pipeworks_tube_connection_metallic.png mode change 100644 => 100755 textures/pipeworks_tube_connection_stony.png mode change 100644 => 100755 textures/pipeworks_tube_connection_wooden.png mode change 100644 => 100755 textures/pipeworks_tube_end.png mode change 100644 => 100755 textures/pipeworks_tube_inv.png mode change 100644 => 100755 textures/pipeworks_tube_noctr.png mode change 100644 => 100755 textures/pipeworks_tube_plain.png mode change 100644 => 100755 textures/pipeworks_tube_short.png mode change 100644 => 100755 textures/pipeworks_tube_transparent.png mode change 100644 => 100755 textures/pipeworks_valve.png mode change 100644 => 100755 textures/pipeworks_white.png mode change 100644 => 100755 textures/pipeworks_yellow.png mode change 100644 => 100755 trashcan.lua mode change 100644 => 100755 tube_registration.lua mode change 100644 => 100755 vacuum_tubes.lua mode change 100644 => 100755 wielder.lua diff --git a/.gitignore b/.gitignore old mode 100644 new mode 100755 diff --git a/LICENSE b/LICENSE old mode 100644 new mode 100755 diff --git a/README b/README old mode 100644 new mode 100755 diff --git a/autocrafter.lua b/autocrafter.lua old mode 100644 new mode 100755 index 648a610..faf5381 --- a/autocrafter.lua +++ b/autocrafter.lua @@ -183,7 +183,14 @@ local function update_meta(meta, enabled) default.gui_bg_img.. default.gui_slots.. default.get_hotbar_bg(0,7) .. - "list[current_player;main;0,7;8,4;]") + "list[current_player;main;0,7;8,4;]" .. + "listring[current_player;main]".. + "listring[context;src]" .. + "listring[context;dst]" .. + "listring[current_player;main]".. + "listring[context;recipe]" .. + "listring[context;output]" + ) -- toggling the button doesn't quite call for running a recipe change check -- so instead we run a minimal version for infotext setting only diff --git a/autoplace_pipes.lua b/autoplace_pipes.lua old mode 100644 new mode 100755 diff --git a/autoplace_tubes.lua b/autoplace_tubes.lua old mode 100644 new mode 100755 diff --git a/changelog.txt b/changelog.txt old mode 100644 new mode 100755 diff --git a/common.lua b/common.lua old mode 100644 new mode 100755 diff --git a/compat.lua b/compat.lua old mode 100644 new mode 100755 diff --git a/crafts.lua b/crafts.lua old mode 100644 new mode 100755 diff --git a/decorative_tubes.lua b/decorative_tubes.lua old mode 100644 new mode 100755 diff --git a/default_settings.txt b/default_settings.txt old mode 100644 new mode 100755 diff --git a/depends.txt b/depends.txt old mode 100644 new mode 100755 diff --git a/devices.lua b/devices.lua old mode 100644 new mode 100755 index e4c5f43..f7f6f45 --- a/devices.lua +++ b/devices.lua @@ -35,6 +35,8 @@ local pipes_devicelist = { "storage_tank_10" } +local rules = pipeworks.mesecons_rules -- Enough with the undefined global variable // MFF (Mg|01/07/2016 for #68) + -- Now define the nodes. local states = { "on", "off" } @@ -67,10 +69,10 @@ for s in ipairs(states) do drop = "pipeworks:pump_off", mesecons = {effector = { action_on = function (pos, node) - minetest.add_node(pos,{name="pipeworks:pump_on", param2 = node.param2}) + minetest.add_node(pos,{name="pipeworks:pump_on", param2 = node.param2}) end, action_off = function (pos, node) - minetest.add_node(pos,{name="pipeworks:pump_off", param2 = node.param2}) + minetest.add_node(pos,{name="pipeworks:pump_off", param2 = node.param2}) end }}, on_punch = function(pos, node, puncher) @@ -78,7 +80,7 @@ for s in ipairs(states) do minetest.add_node(pos, { name = "pipeworks:pump_"..states[3-s], param2 = fdir }) end }) - + minetest.register_node("pipeworks:valve_"..states[s].."_empty", { description = "Valve", drawtype = "mesh", @@ -107,10 +109,10 @@ for s in ipairs(states) do drop = "pipeworks:valve_off_empty", mesecons = {effector = { action_on = function (pos, node) - minetest.add_node(pos,{name="pipeworks:valve_on_empty", param2 = node.param2}) + minetest.add_node(pos,{name="pipeworks:valve_on_empty", param2 = node.param2}) end, action_off = function (pos, node) - minetest.add_node(pos,{name="pipeworks:valve_off_empty", param2 = node.param2}) + minetest.add_node(pos,{name="pipeworks:valve_off_empty", param2 = node.param2}) end }}, on_punch = function(pos, node, puncher) @@ -148,10 +150,10 @@ minetest.register_node("pipeworks:valve_on_loaded", { drop = "pipeworks:valve_off_empty", mesecons = {effector = { action_on = function (pos, node) - minetest.add_node(pos,{name="pipeworks:valve_on_empty", param2 = node.param2}) + minetest.add_node(pos,{name="pipeworks:valve_on_empty", param2 = node.param2}) end, action_off = function (pos, node) - minetest.add_node(pos,{name="pipeworks:valve_off_empty", param2 = node.param2}) + minetest.add_node(pos,{name="pipeworks:valve_off_empty", param2 = node.param2}) end }}, on_punch = function(pos, node, puncher) @@ -284,7 +286,7 @@ minetest.register_node("pipeworks:entry_panel_empty", { collision_box = panel_cbox, on_place = function(itemstack, placer, pointed_thing) local playername = placer:get_player_name() - if not minetest.is_protected(pointed_thing.under, playername) + if not minetest.is_protected(pointed_thing.under, playername) and not minetest.is_protected(pointed_thing.above, playername) then local node = minetest.get_node(pointed_thing.under) @@ -376,7 +378,7 @@ minetest.register_node("pipeworks:flow_sensor_empty", { end, on_construct = function(pos) if mesecon then - mesecon.receptor_off(pos, rules) + mesecon.receptor_off(pos, rules) end end, selection_box = { @@ -415,7 +417,7 @@ minetest.register_node("pipeworks:flow_sensor_loaded", { end, on_construct = function(pos) if mesecon then - mesecon.receptor_on(pos, rules) + mesecon.receptor_on(pos, rules) end end, selection_box = { @@ -522,7 +524,7 @@ minetest.register_node("pipeworks:fountainhead", { end, on_construct = function(pos) if mesecon then - mesecon.receptor_on(pos, rules) + mesecon.receptor_on(pos, rules) end end, selection_box = { @@ -553,7 +555,7 @@ minetest.register_node("pipeworks:fountainhead_pouring", { end, on_construct = function(pos) if mesecon then - mesecon.receptor_on(pos, rules) + mesecon.receptor_on(pos, rules) end end, selection_box = { diff --git a/filter-injector.lua b/filter-injector.lua old mode 100644 new mode 100755 index 78e6f25..f5f90a0 --- a/filter-injector.lua +++ b/filter-injector.lua @@ -45,7 +45,8 @@ local function set_filter_formspec(data, meta) "Sequence slots Randomly", "Sequence slots by Rotation"}).. exmatch_button.. - "list[current_player;main;0,4.5;8,4;]" + "list[current_player;main;0,4.5;8,4;]" .. + "listring[]" end meta:set_string("formspec", formspec) end @@ -143,6 +144,17 @@ local function punch_filter(data, filtpos, filtnode, msg) local dir = minetest.facedir_to_right_dir(filtnode.param2) local frompos = vector.subtract(filtpos, dir) local fromnode = minetest.get_node(frompos) + + -- Fix crash with connected_chests (sys4 fix for MFF) + if fromnode and fromnode.name == "connected_chests:chest_right" then + local v_mul = vector.multiply(dir, 2) + frompos = vector.subtract(filtpos, v_mul) + fromnode = minetest.get_node(frompos) + if fromnode and fromnode.name ~= "connected_chests:chest_left" then + return + end + end + if not fromnode then return end local fromdef = minetest.registered_nodes[fromnode.name] if not fromdef then return end diff --git a/flowing_logic.lua b/flowing_logic.lua old mode 100644 new mode 100755 index 5166b15..ae3b4ee --- a/flowing_logic.lua +++ b/flowing_logic.lua @@ -46,8 +46,8 @@ pipeworks.check_for_inflows = function(pos,node) source = {x=coords[i].x,y=coords[i].y,z=coords[i].z} end end - if newnode then - minetest.add_node(pos,{name=newnode, param2 = node.param2}) + if newnode then + minetest.add_node(pos,{name=newnode, param2 = node.param2}) minetest.get_meta(pos):set_string("source",minetest.pos_to_string(source)) end end @@ -61,15 +61,15 @@ pipeworks.check_sources = function(pos,node) newnode = string.gsub(node.name,"loaded","empty") end - if newnode then - minetest.add_node(pos,{name=newnode, param2 = node.param2}) + if newnode then + minetest.add_node(pos,{name=newnode, param2 = node.param2}) minetest.get_meta(pos):set_string("source","") end end pipeworks.spigot_check = function(pos, node) local belowname = minetest.get_node({x=pos.x,y=pos.y-1,z=pos.z}).name - if belowname and (belowname == "air" or belowname == "default:water_flowing" or belowname == "default:water_source") then + if belowname and (belowname == "air" or belowname == "default:water_flowing" or belowname == "default:water_source") then local spigotname = minetest.get_node(pos).name local fdir=node.param2 % 4 local check = { @@ -99,7 +99,7 @@ end pipeworks.fountainhead_check = function(pos, node) local abovename = minetest.get_node({x=pos.x,y=pos.y+1,z=pos.z}).name - if abovename and (abovename == "air" or abovename == "default:water_flowing" or abovename == "default:water_source") then + if abovename and (abovename == "air" or abovename == "default:water_flowing" or abovename == "default:water_source") then local fountainhead_name = minetest.get_node(pos).name local near_node = minetest.get_node({x=pos.x,y=pos.y-1,z=pos.z}) if near_node and string.find(near_node.name, "_loaded") then diff --git a/init.lua b/init.lua old mode 100644 new mode 100755 index 499f6ba..b093812 --- a/init.lua +++ b/init.lua @@ -113,5 +113,5 @@ if pipeworks.enable_autocrafter then dofile(pipeworks.modpath.."/autocrafter.lua minetest.register_alias("pipeworks:pipe", "pipeworks:pipe_110000_empty") -print("Pipeworks loaded!") +minetest.log("Pipeworks loaded!") diff --git a/item_transport.lua b/item_transport.lua old mode 100644 new mode 100755 index ee17611..57d5460 --- a/item_transport.lua +++ b/item_transport.lua @@ -252,7 +252,7 @@ luaentity.register_entity("pipeworks:tubed_item", { -- Using add_item instead of item_drop since this makes pipeworks backward -- compatible with Minetest 0.4.13. -- Using item_drop here makes Minetest 0.4.13 crash. - minetest.add_item(drop_pos, stack) + --minetest.add_item(drop_pos, stack) --Don't drop pipeworks items to reduce lag. self:remove() return end diff --git a/legacy.lua b/legacy.lua old mode 100644 new mode 100755 index b36cded..e02a236 --- a/legacy.lua +++ b/legacy.lua @@ -1,5 +1,5 @@ -if not minetest.get_modpath("auto_tree_tap") and +if not minetest.get_modpath("auto_tree_tap") and minetest.get_modpath("technic") then minetest.register_abm({ @@ -37,10 +37,10 @@ if not minetest.get_modpath("auto_tree_tap") and after_place_node = function (pos, placer) pipeworks.scan_for_tube_objects(pos, placer) local placer_pos = placer:getpos() - + --correct for the player's height if placer:is_player() then placer_pos.y = placer_pos.y + 1.5 end - + --correct for 6d facedir if placer_pos then local dir = { diff --git a/luaentity.lua b/luaentity.lua old mode 100644 new mode 100755 index 665e055..68d1660 --- a/luaentity.lua +++ b/luaentity.lua @@ -29,7 +29,7 @@ local function read_entities() end local function write_entities() - for _, entity in pairs(luaentity.entities) do + for _, entity in pairs(luaentity.entities or {}) do setmetatable(entity, nil) for _, attached in pairs(entity._attached_entities) do if attached.entity then @@ -53,31 +53,29 @@ end local active_blocks = {} -- These only contain active blocks near players (i.e., not forceloaded ones) local handle_active_blocks_step = 2 -local handle_active_blocks_timer = 0 -minetest.register_globalstep(function(dtime) - handle_active_blocks_timer = handle_active_blocks_timer + dtime - if handle_active_blocks_timer >= handle_active_blocks_step then - handle_active_blocks_timer = handle_active_blocks_timer - handle_active_blocks_step - local active_block_range = tonumber(minetest.setting_get("active_block_range")) or 2 - local new_active_blocks = {} - for _, player in ipairs(minetest.get_connected_players()) do - local blockpos = get_blockpos(player:getpos()) - local minp = vector.subtract(blockpos, active_block_range) - local maxp = vector.add(blockpos, active_block_range) +local function active_blocks_step() + local active_block_range = tonumber(minetest.setting_get("active_block_range")) or 2 + local new_active_blocks = {} + for _, player in ipairs(minetest.get_connected_players()) do + local blockpos = get_blockpos(player:getpos()) + local minp = vector.subtract(blockpos, active_block_range) + local maxp = vector.add(blockpos, active_block_range) - for x = minp.x, maxp.x do - for y = minp.y, maxp.y do - for z = minp.z, maxp.z do - local pos = {x = x, y = y, z = z} - new_active_blocks[minetest.hash_node_position(pos)] = pos - end - end - end + for x = minp.x, maxp.x do + for y = minp.y, maxp.y do + for z = minp.z, maxp.z do + local pos = {x = x, y = y, z = z} + new_active_blocks[minetest.hash_node_position(pos)] = pos + end + end end - active_blocks = new_active_blocks - -- todo: callbacks on block load/unload end -end) + active_blocks = new_active_blocks + -- todo: callbacks on block load/unload + + minetest.after(handle_active_blocks_step, active_blocks_step) +end +minetest.after(0, active_blocks_step) local function is_active(pos) return active_blocks[minetest.hash_node_position(get_blockpos(pos))] ~= nil @@ -194,7 +192,7 @@ local entitydef_default = { end end, getvelocity = function(self) - return vector.new(self._velocity) + return vector.new(self._velocity) end, setvelocity = function(self, velocity) self._velocity = vector.new(velocity) @@ -272,7 +270,7 @@ function luaentity.add_entity(pos, name) _acceleration = {x = 0, y = 0, z = 0}, _attached_entities = {}, } - + local prototype = luaentity.registered_entities[name] setmetatable(entity, prototype) -- Default to prototype for other methods luaentity.entities[index] = entity diff --git a/models.lua b/models.lua old mode 100644 new mode 100755 index 3be773c..1a302b5 --- a/models.lua +++ b/models.lua @@ -34,7 +34,7 @@ pipeworks.tube_frontstub = { pipeworks.tube_backstub = { { -9/64, -9/64, -9/64, 9/64, 9/64, 32/64 }, -- tube segment against -Z face -} +} pipeworks.tube_boxes = {pipeworks.tube_leftstub, pipeworks.tube_rightstub, pipeworks.tube_bottomstub, pipeworks.tube_topstub, pipeworks.tube_frontstub, pipeworks.tube_backstub} diff --git a/models/pipeworks_entry_panel.obj b/models/pipeworks_entry_panel.obj old mode 100644 new mode 100755 diff --git a/models/pipeworks_flow_sensor.obj b/models/pipeworks_flow_sensor.obj old mode 100644 new mode 100755 diff --git a/models/pipeworks_fountainhead.obj b/models/pipeworks_fountainhead.obj old mode 100644 new mode 100755 diff --git a/models/pipeworks_pipe_10.obj b/models/pipeworks_pipe_10.obj old mode 100644 new mode 100755 diff --git a/models/pipeworks_pipe_2.obj b/models/pipeworks_pipe_2.obj old mode 100644 new mode 100755 diff --git a/models/pipeworks_pipe_3.obj b/models/pipeworks_pipe_3.obj old mode 100644 new mode 100755 diff --git a/models/pipeworks_pipe_4.obj b/models/pipeworks_pipe_4.obj old mode 100644 new mode 100755 diff --git a/models/pipeworks_pipe_5.obj b/models/pipeworks_pipe_5.obj old mode 100644 new mode 100755 diff --git a/models/pipeworks_pipe_6.obj b/models/pipeworks_pipe_6.obj old mode 100644 new mode 100755 diff --git a/models/pipeworks_pipe_7.obj b/models/pipeworks_pipe_7.obj old mode 100644 new mode 100755 diff --git a/models/pipeworks_pipe_8.obj b/models/pipeworks_pipe_8.obj old mode 100644 new mode 100755 diff --git a/models/pipeworks_pipe_9.obj b/models/pipeworks_pipe_9.obj old mode 100644 new mode 100755 diff --git a/models/pipeworks_pump.obj b/models/pipeworks_pump.obj old mode 100644 new mode 100755 diff --git a/models/pipeworks_spigot.obj b/models/pipeworks_spigot.obj old mode 100644 new mode 100755 diff --git a/models/pipeworks_spigot_pouring.obj b/models/pipeworks_spigot_pouring.obj old mode 100644 new mode 100755 diff --git a/models/pipeworks_valve_off.obj b/models/pipeworks_valve_off.obj old mode 100644 new mode 100755 diff --git a/models/pipeworks_valve_on.obj b/models/pipeworks_valve_on.obj old mode 100644 new mode 100755 diff --git a/pipes.lua b/pipes.lua old mode 100644 new mode 100755 index 2056fdf..3bfe4bf --- a/pipes.lua +++ b/pipes.lua @@ -9,7 +9,7 @@ local vti = {4, 3, 2, 1, 6, 5} local cconnects = {{}, {1}, {1, 2}, {1, 3}, {1, 3, 5}, {1, 2, 3}, {1, 2, 3, 5}, {1, 2, 3, 4}, {1, 2, 3, 4, 5}, {1, 2, 3, 4, 5, 6}} for index, connects in ipairs(cconnects) do local outsel = {} - + local jx = 0 local jy = 0 local jz = 0 @@ -28,7 +28,7 @@ for index, connects in ipairs(cconnects) do local v = connects[1] v = v-1 + 2*(v%2) -- Opposite side end - + local pgroups = {snappy = 3, pipe = 1, not_in_creative_inventory = 1} local pipedesc = "Pipe segement".." "..dump(connects).."... You hacker, you." local image = nil @@ -38,11 +38,11 @@ for index, connects in ipairs(cconnects) do pipedesc = "Pipe segment" image = "pipeworks_pipe_inv.png" end - + local outimg_e = { "pipeworks_pipe_plain.png" } local outimg_l = { "pipeworks_pipe_plain.png" } - if index == 3 then + if index == 3 then outimg_e = { "pipeworks_pipe_3_empty.png" } outimg_l = { "pipeworks_pipe_3_loaded.png" } end @@ -82,7 +82,7 @@ for index, connects in ipairs(cconnects) do pipeworks.scan_for_pipe_objects(pos) end }) - + local pgroups = {snappy = 3, pipe = 1, not_in_creative_inventory = 1} minetest.register_node("pipeworks:pipe_"..index.."_loaded", { @@ -112,7 +112,7 @@ for index, connects in ipairs(cconnects) do pipeworks.scan_for_pipe_objects(pos) end }) - + table.insert(pipes_empty_nodenames, "pipeworks:pipe_"..index.."_empty") table.insert(pipes_full_nodenames, "pipeworks:pipe_"..index.."_loaded") end @@ -206,7 +206,7 @@ minetest.register_abm({ nodenames = {"pipeworks:spigot","pipeworks:spigot_pouring"}, interval = 1, chance = 1, - action = function(pos, node, active_object_count, active_object_count_wider) + action = function(pos, node, active_object_count, active_object_count_wider) pipeworks.spigot_check(pos,node) end }) @@ -215,7 +215,7 @@ minetest.register_abm({ nodenames = {"pipeworks:fountainhead","pipeworks:fountainhead_pouring"}, interval = 1, chance = 1, - action = function(pos, node, active_object_count, active_object_count_wider) + action = function(pos, node, active_object_count, active_object_count_wider) pipeworks.fountainhead_check(pos,node) end }) diff --git a/routing_tubes.lua b/routing_tubes.lua old mode 100644 new mode 100755 diff --git a/signal_tubes.lua b/signal_tubes.lua old mode 100644 new mode 100755 index dfd7649..63c5120 --- a/signal_tubes.lua +++ b/signal_tubes.lua @@ -1,5 +1,5 @@ if pipeworks.enable_detector_tube then - local detector_tube_step = 2 * tonumber(minetest.setting_get("dedicated_server_step")) + local detector_tube_step = 1 --MFF crabman(2/1/2016 bug,step too short) 2 * tonumber(minetest.setting_get("dedicated_server_step")) pipeworks.register_tube("pipeworks:detector_tube_on", { description = "Detecting Pneumatic Tube Segment on (you hacker you)", inventory_image = "pipeworks_detector_tube_inv.png", diff --git a/sorting_tubes.lua b/sorting_tubes.lua old mode 100644 new mode 100755 diff --git a/teleport_tube.lua b/teleport_tube.lua old mode 100644 new mode 100755 index 3a870f5..f9b0328 --- a/teleport_tube.lua +++ b/teleport_tube.lua @@ -173,7 +173,7 @@ pipeworks.register_tube("pipeworks:teleport_tube", { if mode == ":" then minetest.chat_send_player(sender_name, "Sorry, channel '"..new_channel.."' is reserved for exclusive use by "..name) return - + --channels starting with '[name];' can be used by other players, but cannot be received from elseif mode == ";" and (fields.cr1 or (can_receive ~= 0 and not fields.cr0)) then minetest.chat_send_player(sender_name, "Sorry, receiving from channel '"..new_channel.."' is reserved for "..name) diff --git a/textures/homedecor_oil_extract.png b/textures/homedecor_oil_extract.png old mode 100644 new mode 100755 index b945a9e7f56870b5a462c172bc38d3c8f7f18e56..48e6dffd442705f1f020200d92c6d35548b052fb GIT binary patch delta 261 zcmV+g0s8)(0-*wsB!B2hL_t(I%e9lS3WG2ZhJCZVk*`wl89Ehw0VhYZ1rpFn2OX;D zlq~6Ty%Q~=B&Hb}_#sB`%l{u|mi=pO+g7aWDoC_XD(?Fp=6MEV3|MQyXtO`307@#D zrb&>D(LiTOF5DY60#YO7F2LyBL7vnD*YX+Z*W%)6B6H#}0)EiDC_qUCPh88ga94Cj z;OOmANf?Hq8prYerRs?0cfonXP|&umz>jVL2`MF@OXdTVoO8G+-bE1+Qu+Z+69tfi z5P*?`Xap6A@M$7i?7FVT{o^derqaH?Y@%llfc^pdvY>GiLv!#39aw}~hR@2#00000 LNkvXXu0mjfa)x0-XYoB!A>dL_t(|+O?9g3WG2ZhWloDqrOU^&(Nvh3phENEs%gtI_OYE zr@JLxu6I%)h#}3;zz@mc|K^Z+|D_GLJZ?L z8WAFp)Uvt=Zv+P9M!1Fm1R$y90JfHok$yGbze7|(9K{l7`g(6T>*&R6o@X6OY64E) zZk?sR@5^Br9tV{Ih<2fMtyt7Fjp2`O5gBVOahK{0P-v|wX5J+c8B&}B>N*Kva||F6 zbUK3DBgBTtEw*i2@&36Rd8o3l4ns`7140DyZ%+U~v3KwR9aw}~?~uJT00000NkvXX Hu0mjf+v0TM diff --git a/textures/homedecor_paraffin.png b/textures/homedecor_paraffin.png old mode 100644 new mode 100755 diff --git a/textures/homedecor_plastic_sheeting.png b/textures/homedecor_plastic_sheeting.png old mode 100644 new mode 100755 index fba0ccde0048ecbbb419aa8aeead67081e6dbaf1..034dcc2f5eda9690d9d3d7f469f5c8e4cbab19ea GIT binary patch delta 237 zcmVTarZ7 zxZ?XhaSTCd?9-hQvn+q>j00000NkvXXu0mjfx#n!8 delta 234 zcmVw{`;kA`XIg*_I>~8 zy3VbtN{Bqqoy)>ySzMK67zQCXO(S((e}rK56i(A5^E~T3jw28aD9h3gQ5NqMP>5h% zSK0SnwrvA~6I>X89ij>x(;eY)96)fQ0d3owT}YB7c8Dr=aDWI1P5=Tn4zes0ST(MM zVMx4%ASBN2j93%}0PP?M0v*2Z->ne!g>*LJbAGxh^~Q~vAs1o}Z+#9*W~D*ylh07*qoM6N<$g78&k=l}o! diff --git a/textures/pipeworks_accelerator_tube_end.png b/textures/pipeworks_accelerator_tube_end.png old mode 100644 new mode 100755 diff --git a/textures/pipeworks_accelerator_tube_inv.png b/textures/pipeworks_accelerator_tube_inv.png old mode 100644 new mode 100755 diff --git a/textures/pipeworks_accelerator_tube_noctr.png b/textures/pipeworks_accelerator_tube_noctr.png old mode 100644 new mode 100755 diff --git a/textures/pipeworks_accelerator_tube_plain.png b/textures/pipeworks_accelerator_tube_plain.png old mode 100644 new mode 100755 diff --git a/textures/pipeworks_accelerator_tube_short.png b/textures/pipeworks_accelerator_tube_short.png old mode 100644 new mode 100755 diff --git a/textures/pipeworks_autocrafter.png b/textures/pipeworks_autocrafter.png old mode 100644 new mode 100755 diff --git a/textures/pipeworks_black.png b/textures/pipeworks_black.png old mode 100644 new mode 100755 diff --git a/textures/pipeworks_blue.png b/textures/pipeworks_blue.png old mode 100644 new mode 100755 diff --git a/textures/pipeworks_button_interm.png b/textures/pipeworks_button_interm.png old mode 100644 new mode 100755 diff --git a/textures/pipeworks_button_off.png b/textures/pipeworks_button_off.png old mode 100644 new mode 100755 diff --git a/textures/pipeworks_button_on.png b/textures/pipeworks_button_on.png old mode 100644 new mode 100755 diff --git a/textures/pipeworks_conductor_tube_end.png b/textures/pipeworks_conductor_tube_end.png old mode 100644 new mode 100755 diff --git a/textures/pipeworks_conductor_tube_inv.png b/textures/pipeworks_conductor_tube_inv.png old mode 100644 new mode 100755 diff --git a/textures/pipeworks_conductor_tube_noctr.png b/textures/pipeworks_conductor_tube_noctr.png old mode 100644 new mode 100755 diff --git a/textures/pipeworks_conductor_tube_on_end.png b/textures/pipeworks_conductor_tube_on_end.png old mode 100644 new mode 100755 diff --git a/textures/pipeworks_conductor_tube_on_noctr.png b/textures/pipeworks_conductor_tube_on_noctr.png old mode 100644 new mode 100755 diff --git a/textures/pipeworks_conductor_tube_on_plain.png b/textures/pipeworks_conductor_tube_on_plain.png old mode 100644 new mode 100755 diff --git a/textures/pipeworks_conductor_tube_plain.png b/textures/pipeworks_conductor_tube_plain.png old mode 100644 new mode 100755 diff --git a/textures/pipeworks_conductor_tube_short.png b/textures/pipeworks_conductor_tube_short.png old mode 100644 new mode 100755 diff --git a/textures/pipeworks_crossing_tube_end.png b/textures/pipeworks_crossing_tube_end.png old mode 100644 new mode 100755 diff --git a/textures/pipeworks_crossing_tube_inv.png b/textures/pipeworks_crossing_tube_inv.png old mode 100644 new mode 100755 diff --git a/textures/pipeworks_crossing_tube_noctr.png b/textures/pipeworks_crossing_tube_noctr.png old mode 100644 new mode 100755 diff --git a/textures/pipeworks_crossing_tube_plain.png b/textures/pipeworks_crossing_tube_plain.png old mode 100644 new mode 100755 diff --git a/textures/pipeworks_crossing_tube_short.png b/textures/pipeworks_crossing_tube_short.png old mode 100644 new mode 100755 diff --git a/textures/pipeworks_deployer_back.png b/textures/pipeworks_deployer_back.png old mode 100644 new mode 100755 diff --git a/textures/pipeworks_deployer_bottom.png b/textures/pipeworks_deployer_bottom.png old mode 100644 new mode 100755 index fcb863cf98056b7d6c5aef31060be42dab7f1b1d..b5ebd4367b1c9c9f44ec3462c93b2b9339262d1e GIT binary patch delta 296 zcmV+@0oVSa2B8M90|I{-(*?nUV#81r0MI+zwrzWzZM(K@BX#5C{q4>H87YYn1f!7g zYNb-gC!n*buB@n7DvyQ3(wICJh8}H$s6+(f5JB=fO#*|6isUOwg~G}jO(Kdh4Db^Q zCSDaPuNG@V1j(ymV>R9yVN{Z66pQzd8jY~Cxy-VSwQPNJTi1U8JI2EH)*9+V2%+}w z!I4RX!0p^~*m_&^9m%9=E;}_2=lWb`-JCXXLl(-lkeUWMaPP5ZW`}8Nao)PJGy~~B zALqz9ckL$5cR@Yf!0)&F6Td55<^^Y|$7~=7bnxpnd!0Aaxg)#x;l~Bu5B%jBr!pt| uhsTBd8wUl;yWb#xb>J~1Q>R?|*7gqp$70zSCS0!o0000{myTU*Ii*EfH)^{_)MtgkHzT|&O* z_TGU}K>)XN%VFzm(6^*grm5W6Fr4U-?6Nsy;QB0-YbHGobl}Eg%}(~y)a0oney2Db*V8v=hA(*?l;f&@Vj0I)jSwr$(CZF_Co_PG0}mq6Ul{87w__xR|L zoL^i}gXP=z`|8$O4|Xuvy$FHl>FtAch3!KaW88!>cpf7O zyLrjhL6v6}7RyTDHgW$D4IA6JG9o8CuSf(JbS!R_QH@-xMj(Go$|b-RHg5NK>a?6Z zGfl|P$Oqje6EiVv1DC>sbb(k6!K>(=f$j;`m-6_@q5uh@^Xq+f)Dmo|lPC*R0V&*^ znL>^k+R)uvTUAqCSpjU^f4X6IjtpRoF>Y%HD)t_s*JdNbg9xE6gy7}#$GyH1n&8Iu sB%u(KU}K%W<*6RYF;1?R5|V)8A7;d885sA`oB#j-07*qoM6N<$g1U{3)c^nh delta 294 zcmV+>0oney2Db*V8v=iL0Tsc6V#8n<0KjjyZQHhO+jec+MjPkPn{K;^b==R1W>OtKIf#>1njd6wT1Kghmjswqq z1hbnLY;9y|Mt-5J2(Gc)yJ*@Ixep)W*&gqzmX6o1^9;6DyY6xCLcMMclu(p`TPZR|R2%TQ;GQ*Z&Q;kHKrwT~n z>ckXsOi_l;=IV;7%JMQ`;{M|`vva7A``6M4Wb8FUtxQJ-`w>DN2*K0)mwR<7G{%nV s30xs2z{WUzixVE>BdlC6#U%m7FJ{DO8ER=42LJ#707*qoM6N<$f}E(0(f|Me diff --git a/textures/pipeworks_deployer_side1.png b/textures/pipeworks_deployer_side1.png old mode 100644 new mode 100755 index 2c7da56151d4d0c982ac55ffe37ff853e00f5851..2527f6e6754e52ca1c1c8ebc047f7e4df6f19ed9 GIT binary patch delta 294 zcmV+>0oney2Db*V8v=hA(*?l;f&@Vj0I)jSwr$(CZF_Co_PG0}mq6Ul{87w__xR|L zoL^i}gXP=z`|8$O4|Xuvy$FHl>FtAch3!KaW88!>cpf7O zyLrjhL6v6}7RyTDHgW$D4IA6JG9o8CuSf(JbS!R_QH@-xMj(Go$|b-RHg5NK>a?6Z zGfl|P$Oqje6EiVv1DC>sbb(k6!K>(=f$j;`m-6_@q5uh@^Xq+f)Dmo|lPC*R0V&*^ znL>^k+R)uvTUAqCSpjU^f4X6IjtpRoF>Y%HD)t_s*JdNbg9xE6gy7}#$GyH1n&8Iu sB%u(KU}K%W<*6RYF;1?R5|V)8A7;d885sA`oB#j-07*qoM6N<$g1U{3)c^nh delta 294 zcmV+>0oney2Db*V8v=iL0Tsc6V#8n<0KjjyZQHhO+jec+MjPkPn{K;^b==R1W>OtKIf#>1njd6wT1Kghmjswqq z1hbnLY;9y|Mt-5J2(Gc)yJ*@Ixep)W*&gqzmX6o1^9;6DyY6xCLcMMclu(p`TPZR|R2%TQ;GQ*Z&Q;kHKrwT~n z>ckXsOi_l;=IV;7%JMQ`;{M|`vva7A``6M4Wb8FUtxQJ-`w>DN2*K0)mwR<7G{%nV s30xs2z{WUzixVE>BdlC6#U%m7FJ{DO8ER=42LJ#707*qoM6N<$f}E(0(f|Me diff --git a/textures/pipeworks_deployer_side2.png b/textures/pipeworks_deployer_side2.png old mode 100644 new mode 100755 index eb24061552426f3ed8faae41ab09fbca7fb9f291..032d471e93c3dd416f16ad9a84208fc003b0f254 GIT binary patch delta 294 zcmV+>0oney2Db*V8v=hA(*?l;f&@Vj0I)jSwr$(CZF_Co_PG0}mw;+zb(uUqI(1z# z)Gya}(Zbqw?9t=;O1uNcwHRYO;fOfdkJlG36e$=&I2tRp2n4glHM^tki#z^e$DscfsQnG+AE9ROhr9FQhrMDm>n0oney2Db*V8v=iL0Tsc6V#8n<0KjjyZQHhO+jec+MjPkPn{K-U)zb1Jad>d- zI;Y8R+8qb^q*^w!uzzIN`hGtB?@Qzf5sdUC-e6FN@66jS(lP#Qanc6|nUTZHdyGIv@hVWS*$JF4#pGwqsjCkOt)GYDH~x&@{p9?W~8O zxU{UKqNb(OK#h7rmbG1IXyX3$j@Zm6x9&It2=yR@`Ub<(vsCylN&+F);DmmF9STi7 s`o3PSK@(8mQoSC8?H?Y$^4l2eF9APj8OpO=h5!Hn07*qoM6N<$g6)}*MF0Q* diff --git a/textures/pipeworks_deployer_top.png b/textures/pipeworks_deployer_top.png old mode 100644 new mode 100755 diff --git a/textures/pipeworks_detector_tube_end.png b/textures/pipeworks_detector_tube_end.png old mode 100644 new mode 100755 diff --git a/textures/pipeworks_detector_tube_inv.png b/textures/pipeworks_detector_tube_inv.png old mode 100644 new mode 100755 diff --git a/textures/pipeworks_detector_tube_noctr.png b/textures/pipeworks_detector_tube_noctr.png old mode 100644 new mode 100755 diff --git a/textures/pipeworks_detector_tube_plain.png b/textures/pipeworks_detector_tube_plain.png old mode 100644 new mode 100755 diff --git a/textures/pipeworks_detector_tube_short.png b/textures/pipeworks_detector_tube_short.png old mode 100644 new mode 100755 diff --git a/textures/pipeworks_dispenser_back.png b/textures/pipeworks_dispenser_back.png old mode 100644 new mode 100755 diff --git a/textures/pipeworks_dispenser_bottom.png b/textures/pipeworks_dispenser_bottom.png old mode 100644 new mode 100755 diff --git a/textures/pipeworks_dispenser_front_off.png b/textures/pipeworks_dispenser_front_off.png old mode 100644 new mode 100755 diff --git a/textures/pipeworks_dispenser_front_on.png b/textures/pipeworks_dispenser_front_on.png old mode 100644 new mode 100755 diff --git a/textures/pipeworks_dispenser_side1.png b/textures/pipeworks_dispenser_side1.png old mode 100644 new mode 100755 diff --git a/textures/pipeworks_dispenser_side2.png b/textures/pipeworks_dispenser_side2.png old mode 100644 new mode 100755 diff --git a/textures/pipeworks_dispenser_top.png b/textures/pipeworks_dispenser_top.png old mode 100644 new mode 100755 diff --git a/textures/pipeworks_entry_panel.png b/textures/pipeworks_entry_panel.png old mode 100644 new mode 100755 index 040f40839f74574195284975597f9c9df7b30d2f..e7c6e76388b6dc32aa3f11e25fdaa0f15620dcbc GIT binary patch delta 4278 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 Y2f^aDJ}^>RSO5S307*qoM6N<$g3O*M2LJ#7 delta 4288 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 TaE!K-WlyhDFNqczJG@TwA8j73M2Vv(-D+2C6lm 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 Z{tx2qy02^mILQD2002ovPDHLkV1j*HM=JmT diff --git a/textures/pipeworks_flow_sensor_on.png b/textures/pipeworks_flow_sensor_on.png old mode 100644 new mode 100755 index 03e054a62c80d16d30e2a09eeca3682016654736..da6886349108019e68a2c4eed31f8bf24d66fbd2 GIT binary patch literal 4476 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 delta 2340 zcmV+<3ETFf60Z`FB!BivL_t(&-ql)5Z`0lrjU6W`{8|+XC-QbLh|^+>SHY;sSen8#%a`a%#2O*|TTYq5$v5_OH_+7MYI5qhx5lz>O%1C`&5g zium62_T}Z}Rpo?Xxb_u*^kfB`Nocx{A3wf*`*wPI`rEf}_;$mF4FdxMTeoiQ>FMFD zxRK~_NLk6URDY|ILt#`vCYL_AR&qL00CFKH7U^cdW_*17#fuk!{_EE-Oond(w8xEo z`}XbGvq$E~#HCV+vT)-{YKSF+cqucestggj(UAhyaqrx@^Xk>BuV24@|Ni~w&!0FC zpyhJ8QmORy_5J?+8z&DRK8z`gZfNdU0q2Jh1W#XX=70J!ztB^HmD7;|V`F0z6BD04 zeVUz}g#wrunCL3-BE%~WF;j1E@BaP!BRAwiRDfjA3O%+KJw!nQ&|}+?0xK@;K79D_ z^yyQ0|IEzH{QNwO&4s3&ICp$c6irS}4h;=KB}FjhC_pXSU|+%D*`Cnhgxp`F0+@g+ z0NcZJ7Jn8N=>1$7x;r(YFa7xOqrbm@ZgzItwr!XjCn*c-V_lJ3YSPqmFiJpQE<*^{ zq0<$3_wF6Q!E<1H#u+D*4!9Cu0VsC9Ei6>Z<;W;Ng$dMhzoi{snV@&0>=b|oVTUV# zIbePm9{4QBabUmd#!5PXtkTnCeOD`KnP*k>9DmsFG>9<`4bO#cb%TPB?qrwVV>5XX z6}ISkBWO)Jbff^O1`~tkt=nX;2Ix{cHf`Dj1SF#D3MdSkq8DyRD0dbEAuY$TefxIu zF%8^soug{Z)KjT|LpN^RxO3-DfzS#xt(Tgjuecja<+>)4^M5NK$|JRNeWe4_EzyHF zdw=`-pa9H|(k(_|6!5ZDJM=KTvpsQB4n{``V9G69wj4cr6e#VoD&~kA1D72?ejFT% znOR?01^xkjxo&lby^<(W>8KVW$&8MU&dtrCjDyvQgDU{7!2PJ_cI?=3?AWo9kr62= z%RvqnD_5>Oc<=z_5J-uk3>(Agfqrms z5YW$^J16QOnNSwTNCl%gdw>}E{l~z^uv)8ne!`tot8WafD`%{Uq zu+GQ2S0F;~VqG$9^iglf?@4)bbbni`a@g9NO$^U)r|DKVYG3iGDAin=I@+~smwI!H z%tkilx*&}|EM2Q+5Ty*V%Zt5yt9D7t_sma^- z0#BYsf??4RDkBQ2YJD+8Sxk%a8=$AolO*g$vl9fZPV-v>w~AEja@OQcD+oPSOI@RwG=Cn-IPr=2Q?$^% zG-Msdn$y}|qn4>GR)ww@jkoa9S`+BpskcZ(&;Cd;;GwtBZThsLazvJ8opktPONSmMl_!_qL-AUK)mtL zXQ6uqv)IPEzHBc|T7QwFtIw*=@CAB_se@W?%o)bnoN67^5{QLvv05*( z%|MnMQJU8cZ_sCxdc775(HCV?C(7q50hen+lLPyE-WliIvoc4IP>VyBQbJ)=^Gz27Sl)Yks0>+DfaK( zyEi{S@5zr_$_p1R*ou73_4=7JXQrp8xdMa>aQ*%Lqkp5LUFkP2U%oswHTC)PXDdIr zfB*j8y?eV=uS0<+Po7LnOkkm4vlAyyoIZUT^1Ibo7h(zPPxEl|g_7Z{ED| z9KE~sy0u~#`wdmQk(W)oTd&K^IrSUyV-;1rIo0bdQS$3IB2|(3)a!w2#GLw#DDQfm z6>m=cMt`h;m!$Hj*M&Qeek0OTgPiL1^jA&!^cyQKi1Vx0m2~s#HzG@&dDQD^@aEEQ zBs7|9y`JLFtKW#c#MJeAU4EZazY$sUcV4fDLFm0E((CK4^c!BQl)R}IEv{Oxw<;v- zY6P(w*__(y340dwzq}5#{2mPs4tDY~#{Mp-D;=+4SS0`ZE&l`h{)}_-v)g(A0000< KMNUMnLSTYv*q>Vf diff --git a/textures/pipeworks_pipe_3_loaded.png b/textures/pipeworks_pipe_3_loaded.png old mode 100644 new mode 100755 diff --git a/textures/pipeworks_pipe_inv.png b/textures/pipeworks_pipe_inv.png old mode 100644 new mode 100755 diff --git a/textures/pipeworks_pipe_plain.png b/textures/pipeworks_pipe_plain.png old mode 100644 new mode 100755 index 7cbc11b0d81567f381f98361f97af67b8a2ccd1a..50c9160853d4b8858a9ddca25f707b56fafa4082 GIT binary patch delta 2331 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≠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 delta 2170 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 diff --git a/textures/pipeworks_storage_tank_back.png b/textures/pipeworks_storage_tank_back.png old mode 100644 new mode 100755 diff --git a/textures/pipeworks_storage_tank_fittings.png b/textures/pipeworks_storage_tank_fittings.png old mode 100644 new mode 100755 diff --git a/textures/pipeworks_storage_tank_front_0.png b/textures/pipeworks_storage_tank_front_0.png old mode 100644 new mode 100755 diff --git a/textures/pipeworks_storage_tank_front_1.png b/textures/pipeworks_storage_tank_front_1.png old mode 100644 new mode 100755 diff --git a/textures/pipeworks_storage_tank_front_10.png b/textures/pipeworks_storage_tank_front_10.png old mode 100644 new mode 100755 diff --git a/textures/pipeworks_storage_tank_front_2.png b/textures/pipeworks_storage_tank_front_2.png old mode 100644 new mode 100755 diff --git a/textures/pipeworks_storage_tank_front_3.png b/textures/pipeworks_storage_tank_front_3.png old mode 100644 new mode 100755 diff --git a/textures/pipeworks_storage_tank_front_4.png b/textures/pipeworks_storage_tank_front_4.png old mode 100644 new mode 100755 diff --git a/textures/pipeworks_storage_tank_front_5.png b/textures/pipeworks_storage_tank_front_5.png old mode 100644 new mode 100755 diff --git a/textures/pipeworks_storage_tank_front_6.png b/textures/pipeworks_storage_tank_front_6.png old mode 100644 new mode 100755 diff --git a/textures/pipeworks_storage_tank_front_7.png b/textures/pipeworks_storage_tank_front_7.png old mode 100644 new mode 100755 diff --git a/textures/pipeworks_storage_tank_front_8.png b/textures/pipeworks_storage_tank_front_8.png old mode 100644 new mode 100755 diff --git a/textures/pipeworks_storage_tank_front_9.png b/textures/pipeworks_storage_tank_front_9.png old mode 100644 new mode 100755 diff --git a/textures/pipeworks_teleport_tube_end.png b/textures/pipeworks_teleport_tube_end.png old mode 100644 new mode 100755 diff --git a/textures/pipeworks_teleport_tube_inv.png b/textures/pipeworks_teleport_tube_inv.png old mode 100644 new mode 100755 diff --git a/textures/pipeworks_teleport_tube_noctr.png b/textures/pipeworks_teleport_tube_noctr.png old mode 100644 new mode 100755 diff --git a/textures/pipeworks_teleport_tube_plain.png b/textures/pipeworks_teleport_tube_plain.png old mode 100644 new mode 100755 diff --git a/textures/pipeworks_teleport_tube_short.png b/textures/pipeworks_teleport_tube_short.png old mode 100644 new mode 100755 diff --git a/textures/pipeworks_testobject.png b/textures/pipeworks_testobject.png old mode 100644 new mode 100755 diff --git a/textures/pipeworks_trashcan_bottom.png b/textures/pipeworks_trashcan_bottom.png old mode 100644 new mode 100755 diff --git a/textures/pipeworks_trashcan_side.png b/textures/pipeworks_trashcan_side.png old mode 100644 new mode 100755 diff --git a/textures/pipeworks_tube_connection_metallic.png b/textures/pipeworks_tube_connection_metallic.png old mode 100644 new mode 100755 diff --git a/textures/pipeworks_tube_connection_stony.png b/textures/pipeworks_tube_connection_stony.png old mode 100644 new mode 100755 index 6ed02a43b6db3e29b5a5f2f11977205dd05f895a..78a99798ea08855d1930c2055079f0db31682ef8 GIT binary patch delta 111 zcmV-#0FeKx0jvR#BuH~fL_t(I%k9!n3r0W?$8m3+9%6B@HCEeGg#6E@9KE-nxM?qQ zar3RYO`qm4j`Q_S+uUO5D;&E)S8AA{h8b(H0g~CZ{FsqyBpm0Hl=$B3rA~zSN6q>_ RKYjoJ002ovPDHLkV1lQqHPiqA delta 109 zcmV-z0FwW#0jdFzBt~&bL_t(|+U?Fw3r0W`hGBo5UShB?b&RIB2>H&WEd94f>@=IR zv2)k6J6#>;>!r52#nM+ec7v|eFhdP9)?fo9v+MY=k!&O!?~{~pzTW8sg!o6z^7{zs P00000NkvXXu0mjfLH#t_ diff --git a/textures/pipeworks_tube_connection_wooden.png b/textures/pipeworks_tube_connection_wooden.png old mode 100644 new mode 100755 index ff199ca0750c4e6ebaaa8586549feafe19d0c7e2..36548df9d09be2c8be73bb7abfdd9b72766f358b GIT binary patch delta 58 zcmbQiIFoUL3U7j^i(`nz>Er|n)-8+^4b+%#`b?Y{sUj^DW5DIX%y93Y?f?5b9ordz Nz|+;wWt~$(696Sq6Ey$; delta 57 zcmbQqID>J53QxSJi(^OyWAXw)3D${*YRtEMW=@P!kzT-^!R*G!aPOb({}Y+TaSTA< M>FVdQ&MBb@000vbTmS$7 diff --git a/textures/pipeworks_tube_end.png b/textures/pipeworks_tube_end.png old mode 100644 new mode 100755 diff --git a/textures/pipeworks_tube_inv.png b/textures/pipeworks_tube_inv.png old mode 100644 new mode 100755 diff --git a/textures/pipeworks_tube_noctr.png b/textures/pipeworks_tube_noctr.png old mode 100644 new mode 100755 diff --git a/textures/pipeworks_tube_plain.png b/textures/pipeworks_tube_plain.png old mode 100644 new mode 100755 diff --git a/textures/pipeworks_tube_short.png b/textures/pipeworks_tube_short.png old mode 100644 new mode 100755 diff --git a/textures/pipeworks_tube_transparent.png b/textures/pipeworks_tube_transparent.png old mode 100644 new mode 100755 index aa4418d118df4c1f0e8f319d8f27070f32bf3af0..52a83483dc96f6116007297f6e898c10cf8138f2 GIT binary patch delta 44 ycma!#pCG}>$jrdNFxj5RcA}z+6o+hb0}}%S2Loe|`F4Gv1cRrmpUXO@geCyHk_jyU delta 44 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 delta 4906 zcmZ`+c{J2f8=kSmgds}^*|SIX-5~pJ2-%lV*|(7K8)R3Fo$Q36>@BiyMHv}cv!+3| zWEo;?-&B8m=X~dU_m6wtbMAYe=id81_kHgz5NHxW@d4p_H`Ogdr+*gc`Lb)VA^Qvc z=^N`G<;e4?>$3A?ktXocQ@}LXQ@=g%gXL2Sz({ti0&q|YC>M8B1}XESM|ARDHy}#> zF2FDz7iM33_37#3hpD#qXJhyvE35YXEd$Grk>$bcUmeF=z}eA{u`0NMfkEdPL1ePq z$!~M20oX5{>p%X^VqK`P?WrbK}5`}?N~cnlZD!Ve*Rvl98gUvAg7ZhgOMC;tyX zmlb(-vNzmC14H&04y+v7cS8;9D0_8O-B?BA9?mz)GIzZdU90OnbLpOy7gZ?$Dh!$| z3_)?)&EKfdkFj7HI*GTtBI4WmB6htDtYEseUIAr0dwVV8qomLCf;j1U#eX~~j;L4} zBq_laX!cN*CsB5|1%`X16Sa)2x+$|Y?D~*7fM9njB$IWPw1xp7Zms+tmZ#N0rMZ=R3 zbnEKXaF0J)Dd7PKYXXl_*@jf8Nw9tllVw^`!X>nFApNe7ngth&-7H19>?p(Z9Zlz^ zb8V`J$-%7O6FXuyyZV?+v$C^gOfLwjootgz>H?fj%b8I;91{~0m={xcMe1c%igWHp z>4IEhSe&-#$vrLxlC!9M+3RZ_!}c{gVeSny`1@}z;3ii@BL=aIqck#fO5-N_U{^Irp0uy{m| zxy?%_{sT8w(4+Z2sXYhlMK0-IYonFCC6xHZmf*Wt>p0M>JWK9$?%86xVA|~re}M$P zs5F^+zOL^AhBqmK%ejwtN?A9t6lWSOnqIBa2K(A9u;9q3G;#_43B5A$U$7HwVzoi| z?rZ|5wGEqZ82Z;Gh*r*Zj4SZ>I48oL$lyzt)s{Jmqm=xLqDZ;Nqcn{nP`Ts_v-tkl zVp^3QL2EG{aUSb?hoAq6IX49q1G`t@7Jj6mRmJQ4hVSMKU!sC-nNAHSa+l0{EykqO z!)W8LOx_4#O^tMW&cG|v&Jv40*7O6yC0-Qk3;d4o(@w0tWq))4VmGj$z=_2M%kQ}tUg z;(j{l^lN4o1Y2Z(H~0UW2i`Csq}+%E?_qWO+8^@{@L&5>zF4jG%QY~eN#y5`Xksrm zgFM^R&m&tMu6y0uzg+RKfAQ}=KGJrhdx(Hf>t&^ zeR>yI?0tF=!k}(L6(PnbR@%e$(fghAZWy~`&W+FN0o)u4+<{xO3O42w?IAy>Cmn&) z)87j?cvTfj*zLWOEkf|1M$C3Gm1HB`pWTpz3>c(Pq5j7414iaaM5o}4aJn&w9#28p zP>^0X5Xow{Fumm)%4GOSaVMf{<$hgzR_)^E*Cuq_40&90#O_A{$A}$rw2sXCNJTgY zEit8O(yB0S4kOL5oX4-V&Rh|apKBmAjn}H8QOR0)MWCU4`;mA^aNTejjg#MRm7FtR ziQyEXY=(*Rw+Ul@C{3d+xb+8Sef$O8Rn)AWhs(IigIiHo5qPtT(JZnpYS9k_4+KX* ztqJ_JJ2eWSquZa`Pj&CxW|GphTOdQ=Wrx)+rsp`y8_7Z!BQGYtVQ$O05`Z(MyvcQ4 z^oI^70>7N?cy@?;+N>Qxulj;1f&l<7Af77k4xl|tqWO>kZEOcMl;v%|pf2gnf%L_> zO(N?eccQHVXcCG$%XMt#zXt1BLboLscrLb7AJ!>*@=!T z^bdN@f4*ICX!he?$J{VxnHrlJ;iM`OSVoxDT`!nnx+)VA5=(oeZ^zcBVFt+cHz;eD zk>)2WkR#Tvhp3jsY>*wZ)+sQfqke}`DU6@#$K`YLGY0WCzuuVSu5OZtHa%BGTM6B; z+{0#dMVfh7LRa`;QXW>;vfW~8+>qvwUo|2(V56$8+-p@|vjs4-QSfHIkOq@Xq;JPj zoG&=kW;7{7w=EYJpFPN65!mAF(uIIEg*9TwYU9@3Cww9e1_6D+eIe!V%R z<`274{6Jn*3^~l-16A|eliNkXZPDuy_aAfDbNV;ahk1PY@TOWqP5m?K`Pkl9hGW_L zFZO1T7e3c+lkq> zwufZ7EYRBMV!!=UqpfedC7iP2g{zR5rP6X?3q)4X8+|E6J`*WH3UA;HwUVa2M+!au znpqD%?7P_+r_~ZTqC+k}KW_U7wG6tMpJ-tK9R7Si07BU z!zP8isaIFzJ)PF3Xp#budo7iMaCLXl9Q;l{=lRJVFq{d|9@R13OL%Z)t}tR(4`I3p zA<0RDGi*LN<*ho?<99M9kq!)b->7t>+P{ulkYiS)|3}3~vfi8+)toz?bg%V9D86=5 zm)u+@S3cfs3NpR)@jYPz#rZ{&aq9zviSiCcYWUICtyPZr&(qryxVYQ*s$t>99aq?} zn6FF(5x`K;G55AkmH^>(14YlkpknJ1+3`9nS5y*fS(P{T4%#?qdr-Xdgt%JA_V96g z#tTRc^dLJsTm5uzSdBCPg%kr09VwUW|BBxQDD@3_WkCYHiFE&5OL;wr$LrQzq&}(B z{kBw2nf4^OFJFnjl%)>Pvc~+JEWy(t64-e!$6Q3bJ;YpoG0OErx`1)MjYH&SLw{lT zx)4cw`SWsmBt`ON>YDPoLMK2-3$c!f<1bpE@m@(EqrL_N?tIts+8s&!3>|OajVQoA zl!T_eV$l>6y`FN-yK0JC?HNkU($Rr7gX-SOW)j=oOo^6vxjG!)No-l!kz1}oZw0Br z2m6N93wGX$0VO-IQ!e&Gr}@Q0pjX#APGjLHP@Wr<Szj<;Gv6*mDy7fUFjEj;t#jNksq_;XKA;({;~|Fc zFpVuW8A=ozvdB-T@)g{7!w~et_f-MR}|(!WO3_5J{6IJ zQP(40d-pn^AFmh>|N^Zsumo%Okl_|QtR7Gc1Eo2kzVqXR-vqbO+^EL6AL5vcquD^ z;Kz-}nC(XuU(^#;IXcTq7$jxhl|-FNYCPy|ek0ARS23%}oJsRAju22Jc>u>{oCSS| zGaeXQigQOVM6LFro&k2rZpN4C9)&!~|B^MM=wB=O${j7PHmqEWQ5s->M09Q={#%0u zv5X~E_nTw!A7@7D{UYPYS<^lYcK3Ye()*z`YLqhPSCy7nMCg{vpPMr+YH2I$Jv?ts zYdDwiABK~EAjz0|$%T_di0s*_3ABR6S2-L6Qr?1EZ{o1 zFKcT{yYWUtjO|A&d6)Qe7{)p^R!{@P0*^3(uta_Jn^MPndP*wVopGRx1dD2rVFEMB zH{YpN@3Bs1n-x{R%vi2;=We?uM(z~DzO!q;)vMVR#<6(vD^&v;0goS=>4W)&=c`*( zhRDON^H<2F<&5C%=Ax(qc08T;bS-l7k;>N4igb%(NMq?u{sSZHSek+QqEb~FNBGvf zs*tQgy&Tg%E|$5>tE8jrw^L=$*MparD~cm+$#b8iGhVs`Fp`+k;*?_JOI@x9PGccv zU56VfKP&SYgS*jCcY}gY`?=pQk3^l;cfp5zFAMvMshPfSa^kFgpSp_J%wn-VWmHIR>gn_hkP?X}Mx;5$D8TmxP6b{ICZW7dD#&3``> zA1f=*=rux$k(yf1c`fI@`519B0HOFIAUqJzrR^U1o59>jrfJ6HgKzxGn;0vo3iwUL zX~C39({-C`0?UMA^_7+E7fui3ER@XDB(S>aQ}737fEU}MW=*t4ZUx$8&#@{w_x70N zjZcMVs+!d{cH&JY4x(O(Jud95ig{f@}pI>~XkZ}TVs;k6@~*!qp4HK|J36+P@RFg09E-NRYs%&&R=d>f+s-3SeG)O=k{P@E-TO^a z^R1U$*Jbve(#nB}pK#h7y_)TFgy!^l=ec|LIq2C$T_O0>_FWLM>1i3?tkocKivABK CDQ21g diff --git a/textures/pipeworks_white.png b/textures/pipeworks_white.png old mode 100644 new mode 100755 diff --git a/textures/pipeworks_yellow.png b/textures/pipeworks_yellow.png old mode 100644 new mode 100755 diff --git a/trashcan.lua b/trashcan.lua old mode 100644 new mode 100755 index 87980ab..35ea321 --- a/trashcan.lua +++ b/trashcan.lua @@ -1,6 +1,6 @@ minetest.register_node("pipeworks:trashcan", { - description = "Trash Can", - drawtype = "normal", + description = "Trash Can", + drawtype = "normal", tiles = { "pipeworks_trashcan_bottom.png", "pipeworks_trashcan_bottom.png", @@ -8,15 +8,15 @@ minetest.register_node("pipeworks:trashcan", { "pipeworks_trashcan_side.png", "pipeworks_trashcan_side.png", "pipeworks_trashcan_side.png", - }, - groups = {snappy = 3, tubedevice = 1, tubedevice_receiver = 1}, + }, + groups = {snappy = 3, tubedevice = 1, tubedevice_receiver = 1}, tube = { insert_object = function(pos, node, stack, direction) return ItemStack("") end, connect_sides = {left = 1, right = 1, front = 1, back = 1, top = 1, bottom = 1}, priority = 1, -- Lower than anything else - }, + }, on_construct = function(pos) local meta = minetest.get_meta(pos) meta:set_string("formspec", @@ -31,7 +31,7 @@ minetest.register_node("pipeworks:trashcan", { "list[current_player;main;0,3;8,4;]") meta:set_string("infotext", "Trash Can") meta:get_inventory():set_size("trash", 1) - end, + end, after_place_node = pipeworks.after_place, after_dig_node = pipeworks.after_dig, on_metadata_inventory_put = function(pos, listname, index, stack, player) diff --git a/tube_registration.lua b/tube_registration.lua old mode 100644 new mode 100755 index c926216..8f4803e --- a/tube_registration.lua +++ b/tube_registration.lua @@ -38,11 +38,11 @@ local register_one_tube = function(name, tname, dropname, desc, plain, noctrs, e local outboxes = {} local outsel = {} local outimgs = {} - + for i = 1, 6 do outimgs[vti[i]] = plain[i] end - + for _, v in ipairs(connects) do table.extend(outboxes, pipeworks.tube_boxes[v]) table.insert(outsel, pipeworks.tube_selectboxes[v]) @@ -73,10 +73,10 @@ local register_one_tube = function(name, tname, dropname, desc, plain, noctrs, e outsel = { -24/64, -10/64, -10/64, 24/64, 10/64, 10/64 } wscale = {x = 1, y = 1, z = 0.01} end - + local rname = string.format("%s_%s", name, tname) table.insert(tubenodes, rname) - + local nodedef = { description = tubedesc, drawtype = "nodebox", @@ -112,7 +112,7 @@ local register_one_tube = function(name, tname, dropname, desc, plain, noctrs, e if style == "6d" then nodedef.paramtype2 = "facedir" end - + if special == nil then special = {} end for key, value in pairs(special) do diff --git a/vacuum_tubes.lua b/vacuum_tubes.lua old mode 100644 new mode 100755 index 51f6f81..ce7f31b --- a/vacuum_tubes.lua +++ b/vacuum_tubes.lua @@ -87,28 +87,35 @@ local tube_inject_item = pipeworks.tube_inject_item local get_objects_inside_radius = minetest.get_objects_inside_radius local function vacuum(pos, radius) radius = radius + 0.5 + -- Modification made by MFF to reduce lag + local max_items = 0 for _, object in pairs(get_objects_inside_radius(pos, sqrt_3 * radius)) do local lua_entity = object:get_luaentity() if not object:is_player() and lua_entity and lua_entity.name == "__builtin:item" then - local obj_pos = object:getpos() - local x1, y1, z1 = pos.x, pos.y, pos.z - local x2, y2, z2 = obj_pos.x, obj_pos.y, obj_pos.z - - if x1 - radius <= x2 and x2 <= x1 + radius - and y1 - radius <= y2 and y2 <= y1 + radius - and z1 - radius <= z2 and z2 <= z1 + radius then - if lua_entity.itemstring ~= "" then - tube_inject_item(pos, pos, vector.new(0, 0, 0), lua_entity.itemstring) - lua_entity.itemstring = "" - end + max_items = max_items + 1 + if max_items > 50 then object:remove() + else + local obj_pos = object:getpos() + local x1, y1, z1 = pos.x, pos.y, pos.z + local x2, y2, z2 = obj_pos.x, obj_pos.y, obj_pos.z + + if x1 - radius <= x2 and x2 <= x1 + radius + and y1 - radius <= y2 and y2 <= y1 + radius + and z1 - radius <= z2 and z2 <= z1 + radius then + if lua_entity.itemstring ~= "" then + tube_inject_item(pos, pos, vector.new(0, 0, 0), lua_entity.itemstring) + lua_entity.itemstring = "" + end + object:remove() + end end end end end minetest.register_abm({nodenames = {"group:vacuum_tube"}, - interval = 1, + interval = 4, chance = 1, label = "Vacuum tubes", action = function(pos, node, active_object_count, active_object_count_wider) diff --git a/wielder.lua b/wielder.lua old mode 100644 new mode 100755 index 3cb1649..09719b2 --- a/wielder.lua +++ b/wielder.lua @@ -408,7 +408,17 @@ if pipeworks.enable_deployer then sneak = false, act = function(virtplayer, pointed_thing) local wieldstack = virtplayer:get_wielded_item() - virtplayer:set_wielded_item((minetest.registered_items[wieldstack:get_name()] or {on_place=minetest.item_place}).on_place(wieldstack, virtplayer, pointed_thing) or wieldstack) + if not minetest.setting_getbool("creative_mode") then + virtplayer:set_wielded_item((minetest.registered_items[wieldstack:get_name()] or {on_place=minetest.item_place}).on_place(wieldstack, virtplayer, pointed_thing) or wieldstack) + else + local stack = (minetest.registered_items[wieldstack:get_name()] or {on_place=minetest.item_place}).on_place(wieldstack, virtplayer, pointed_thing) + if stack:get_name() ~= wieldstack:get_name() or stack:get_count() ~= wieldstack:get_count() then + virtplayer:set_wielded_item(stack) + else -- Manual decrease + wieldstack:take_item(1) + virtplayer:set_wielded_item(wieldstack) + end + end end, eject_drops = false, })