Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MTG compatible screwdriver API #405

Draft
wants to merge 1 commit into
base: dev
Choose a base branch
from
Draft

MTG compatible screwdriver API #405

wants to merge 1 commit into from

Conversation

S-S-X
Copy link
Member

@S-S-X S-S-X commented Feb 21, 2025

Rebase to master before merging.

Closes #404 and #267
Alternative to #368

Preview: adds generic on_rotate function for machines which in turn improves generic screwdriver compatibility.
Not just MTG but any of the screwedriver mods compatible with MTG.

If concept gets approved I'll work on it a bit more, some machines would like to get some other related fixes and some should be handled a bit different ways although nothing really big there.

Resolves following stuff without taking away sonic screwdriver special use:

How it solves these issues?

There's configuration to disable sonic screwdriver altogether. Unless "special" functionality is wanted, sonic screwdriver isn't really needed if any of the MTG API compatible screwdrivers can be used to rotate machines.

Those that don't want special "rotate anything"-functionality can then just disable sonic screwdriver and use any MTG compatible screwdriver they prefer.

@S-S-X S-S-X added the Compatibility Aims to improve compatibility with something. label Feb 21, 2025
Copy link

Click for detailed source code test coverage report

Test coverage report for Technic CNC 87.49% in 11/14 files:

File                             Hits Missed Coverage
-----------------------------------------------------
programs.lua                   263  0      100.00%
materials/technic_worldgen.lua 32   0      100.00%
materials/init.lua             14   0      100.00%
materials/default.lua          183  0      100.00%
materials/basic_materials.lua  17   0      100.00%
init.lua                       16   0      100.00%
digilines.lua                  55   0      100.00%
cnc.lua                        53   0      100.00%
formspec.lua                   104  7      93.69%
api.lua                        231  43     84.31%
pipeworks.lua                  25   13     65.79%
materials/moreblocks.lua       0    29     0.00%
materials/ethereal.lua         0    37     0.00%
materials/bakedclay.lua        0    13     0.00%

Test coverage report for technic chests 45.06% in 6/6 files:

File          Hits Missed Coverage
----------------------------------
chests.lua    102  18     85.00%
init.lua      34   18     65.38%
register.lua  85   78     52.15%
formspec.lua  76   93     44.97%
inventory.lua 11   110    9.09%
digilines.lua 2    61     3.17%

Test coverage report for technic 71.03% in 97/97 files:

File                                      Hits Missed Coverage
--------------------------------------------------------------
max_lag.lua                               12   0      100.00%
machines/register/init.lua                15   0      100.00%
machines/register/freezer_recipes.lua     16   0      100.00%
machines/other/init.lua                   6    0      100.00%
machines/MV/solar_array.lua               12   0      100.00%
machines/MV/init.lua                      17   0      100.00%
machines/MV/grinder.lua                   17   0      100.00%
machines/MV/generator.lua                 9    0      100.00%
machines/MV/freezer.lua                   17   0      100.00%
machines/MV/extractor.lua                 17   0      100.00%
machines/MV/electric_furnace.lua          17   0      100.00%
machines/MV/compressor.lua                17   0      100.00%
machines/MV/centrifuge.lua                17   0      100.00%
machines/MV/cables.lua                    40   0      100.00%
machines/MV/battery_box.lua               17   0      100.00%
machines/MV/alloy_furnace.lua             19   0      100.00%
machines/LV/solar_array.lua               11   0      100.00%
machines/LV/init.lua                      17   0      100.00%
machines/LV/grinder.lua                   17   0      100.00%
machines/LV/generator.lua                 10   0      100.00%
machines/LV/electric_furnace.lua          16   0      100.00%
machines/LV/compressor.lua                21   0      100.00%
machines/LV/cables.lua                    41   0      100.00%
machines/LV/battery_box.lua               15   0      100.00%
machines/LV/alloy_furnace.lua             18   0      100.00%
machines/HV/solar_array.lua               11   0      100.00%
machines/HV/init.lua                      12   0      100.00%
machines/HV/grinder.lua                   17   0      100.00%
machines/HV/generator.lua                 9    0      100.00%
machines/HV/electric_furnace.lua          17   0      100.00%
machines/HV/compressor.lua                17   0      100.00%
machines/HV/cables.lua                    39   0      100.00%
machines/HV/battery_box.lua               17   0      100.00%
legacy.lua                                33   0      100.00%
items.lua                                 113  0      100.00%
effects.lua                               20   0      100.00%
crafts.lua                                134  0      100.00%
chatcommands.lua                          67   0      100.00%
config.lua                                48   1      97.96%
machines/register/compressor_recipes.lua  41   1      97.62%
machines/register/grindings.lua           39   1      97.50%
materials.lua                             72   2      97.30%
machines/LV/geothermal.lua                82   3      96.47%
machines/LV/led.lua                       78   3      96.30%
machines/register/solar_array.lua         48   2      96.00%
machines/network.lua                      405  17     95.97%
machines/LV/solar_panel.lua               44   2      95.65%
machines/register/alloy_recipes.lua       41   3      93.18%
machines/register/cables.lua              109  8      93.16%
tools/init.lua                            13   1      92.86%
init.lua                                  25   2      92.59%
machines/LV/water_mill.lua                73   6      92.41%
machines/compat/tools.lua                 61   6      91.04%
machines/register/recipes.lua             134  14     90.54%
register.lua                              28   4      87.50%
machines/register/grinder_recipes.lua     109  16     87.20%
tools/prospector.lua                      99   16     86.09%
machines/LV/lamp.lua                      127  21     85.81%
machines/other/coal_alloy_furnace.lua     134  24     84.81%
machines/register/battery_box.lua         252  54     82.35%
tools/flashlight.lua                      65   14     82.28%
util/throttle.lua                         9    2      81.82%
machines/init.lua                         38   9      80.85%
machines/register/machine_base.lua        173  48     78.28%
machines/LV/extractor.lua                 18   5      78.26%
radiation.lua                             279  81     77.50%
machines/power_monitor.lua                63   19     76.83%
machines/register/centrifuge_recipes.lua  23   7      76.67%
machines/other/coal_furnace.lua           3    1      75.00%
machines/switching_station.lua            84   32     72.41%
machines/overload.lua                     12   5      70.59%
machines/MV/wind_mill.lua                 52   22     70.27%
machines/HV/nuclear_reactor.lua           248  111    69.08%
machines/supply_converter.lua             98   46     68.06%
machines/switching_station_globalstep.lua 29   15     65.91%
machines/MV/hydro_turbine.lua             49   26     65.33%
machines/other/injector.lua               83   45     64.84%
machines/register/common.lua              86   48     64.18%
tools/multimeter.lua                      132  76     63.46%
machines/MV/tool_workshop.lua             68   43     61.26%
machines/register/generator.lua           129  83     60.85%
tools/cans.lua                            54   48     52.94%
machines/other/constructor.lua            84   77     52.17%
tools/mining_lasers.lua                   37   35     51.39%
machines/LV/music_player.lua              48   47     50.53%
tools/tree_tap.lua                        25   30     45.45%
tools/vacuum.lua                          16   20     44.44%
machines/HV/forcefield.lua                111  156    41.57%
machines/HV/quarry.lua                    156  250    38.42%
helpers.lua                               63   102    38.18%
machines/compat/api.lua                   20   34     37.04%
tools/sonic_screwdriver.lua               17   33     34.00%
tools/chainsaw.lua                        40   81     33.06%
tools/mining_drill.lua                    66   195    25.29%
machines/other/anchor.lua                 16   74     17.78%
machines/register/extractor_recipes.lua   8    77     9.41%
machines/compat/digtron.lua               4    41     8.89%

Raw test runner output for geeks:

CNC:

++ Executing suite spec/api_spec.lua
++ Executing suite spec/digilines_spec.lua
++ Executing suite spec/interaction_spec.lua
++ Executing suite spec/technic_cnc_spec.lua⭆ Starting test set technic_cnc_spec.lua:17 ⯈ Technic CNC
W:	Unsupported registration overrides detected for core.registered_on_mods_loaded

31 successes / 0 failures / 0 errors / 0 pending : 1.956047 seconds

Chests:

++ Executing suite spec/api_spec.lua
W:	Configuration: invalid key	exclude_textures

5 successes / 0 failures / 0 errors / 0 pending : 0.063838 seconds

Technic:

++ Executing suite spec/api_spec.lua◌◌⭆ Starting test set api_spec.lua:209 ⯈ Technic API Machine use
W:	Unsupported registration overrides detected for core.registered_on_mods_loaded
◌
++ Executing suite spec/building_spec.lua
++ Executing suite spec/chatcommands_spec.lua⭆ Starting test set chatcommands_spec.lua:7 ⯈ Chat command
W:	Unsupported registration overrides detected for core.registered_on_mods_loaded
🢆 Running tests from  call):-1 ▷ Chat command denies /powerctrl off
Sam	You don't have permission to run this command (missing privileges: basic_privs)
🢆 Running tests from  call):-1 ▷ Chat command denies /powerctrl on
Sam	You don't have permission to run this command (missing privileges: basic_privs)
🢆 Running tests from  call):-1 ▷ Chat command denies /technic_get_active_networks
Sam	You don't have permission to run this command (missing privileges: basic_privs)
🢆 Running tests from  call):-1 ▷ Chat command denies /technic_flush_switch_cache
Sam	You don't have permission to run this command (missing privileges: basic_privs)
🢆 Running tests from  call):-1 ▷ Chat command denies /technic_clear_network_data
Sam	You don't have permission to run this command (missing privileges: basic_privs)
🢆 Running tests from  call):-1 ▷ Chat command allows /powerctrl
SX	Technic network globalstep enabled.
🢆 Running tests from  call):-1 ▷ Chat command allows /powerctrl off
SX	Technic network globalstep disabled.
🢆 Running tests from  call):-1 ▷ Chat command allows /powerctrl on
SX	Technic network globalstep enabled.
🢆 Running tests from  call):-1 ▷ Chat command allows /technic_get_active_networks
SX	Cached networks: 1 active, 1 total, 3 nodes, 0.00 max lag.
Pos:               1,50,2 PR:   1 RE:   0 BA:   0 Skip:  0 Lag:  0.30ms
🢆 Running tests from  call):-1 ▷ Chat command allows /technic_flush_switch_cache
SX	Network data removed: 1 active networks deactivated.
🢆 Running tests from  call):-1 ▷ Chat command allows /technic_clear_network_data
SX	Network data removed: 1 active networks, 1 total networks, 3 network nodes.

++ Executing suite spec/hv_network_spec.lua⭆ Starting test set hv_network_spec.lua:11 ⯈ HV machine network
W:	Unsupported registration overrides detected for core.registered_on_mods_loaded

++ Executing suite spec/lv_network_spec.lua⭆ Starting test set lv_network_spec.lua:11 ⯈ LV machine network
W:	Unsupported registration overrides detected for core.registered_on_mods_loaded

++ Executing suite spec/network_spec.lua
++ Executing suite spec/nodes_spec.lua⭆ Starting test set nodes_spec.lua:11 ⯈ Technic node placement
W:	Unsupported registration overrides detected for core.registered_on_mods_loaded

++ Executing suite spec/nuclear_reactor_spec.lua⭆ Starting test set nuclear_reactor_spec.lua:7 ⯈ Nuclear reactor
W:	Unsupported registration overrides detected for core.registered_on_mods_loaded
🢆 Running tests from nuclear_reactor_spec.lua:67 ▷ Nuclear reactor generates energy
SX	�(T@technic)Start successful�E

++ Executing suite spec/other_spec.lua⭆ Starting test set other_spec.lua:11 ⯈ Coal alloy furnace
W:	Unsupported registration overrides detected for core.registered_on_mods_loaded
🢆 Running tests from other_spec.lua:45 ▷ Coal alloy furnace wont crash without placement callbacks
W:	InvRef:get_list list not found: src

++ Executing suite spec/supply_converter_spec.lua◌
++ Executing suite spec/tools_compatibility_spec.lua⭆ Starting test set tools_compatibility_spec.lua:11 ⯈ Technic power tool compatibility
W:	Deprecated technic.register_power_tool use. Setting max_charge for oldlegacy:powertool
W:	Deprecated technic.register_power_tool use. Setting max_charge for oldminimal:powertool
W:	Deprecated technic.register_power_tool use. Setting max_charge for oldhalfway:powertool
W:	Unsupported registration overrides detected for core.registered_on_mods_loaded
W:	Deprecated technic.register_power_tool use. Ensuring fields for oldlegacy:powertool
W:	Using metadata charge values for oldlegacy:powertool
W:	Updated legacy Technic power tool definition for oldlegacy:powertool
W:	Deprecated technic.register_power_tool use. Ensuring fields for oldminimal:powertool
W:	Using metadata charge values for oldminimal:powertool
W:	Updated legacy Technic power tool definition for oldminimal:powertool
W:	Deprecated technic.register_power_tool use. Ensuring fields for oldhalfway:powertool
W:	Mod oldhalfway seems to be aware of technic.plus but oldhalfway:powertool is still using deprecated registration, skipping meta charge compatibility.
W:	Updated legacy Technic power tool definition for oldhalfway:powertool
🢆 Running tests from tools_compatibility_spec.lua:92 ▷ Technic power tool compatibility oldlegacy:powertool can be used (minimum charge)
W:	Use of deprecated function technic.set_RE_wear with stack: oldlegacy:powertool
🢆 Running tests from tools_compatibility_spec.lua:106 ▷ Technic power tool compatibility oldlegacy:powertool can be used (minimum charge + 1)
W:	Use of deprecated function technic.set_RE_wear with stack: oldlegacy:powertool
🢆 Running tests from tools_compatibility_spec.lua:92 ▷ Technic power tool compatibility oldminimal:powertool can be used (minimum charge)
W:	Use of deprecated function technic.set_RE_wear with stack: oldminimal:powertool
🢆 Running tests from tools_compatibility_spec.lua:106 ▷ Technic power tool compatibility oldminimal:powertool can be used (minimum charge + 1)
W:	Use of deprecated function technic.set_RE_wear with stack: oldminimal:powertool

++ Executing suite spec/tools_spec.lua⭆ Starting test set tools_spec.lua:13 ⯈ Technic power tool
W:	Unsupported registration overrides detected for core.registered_on_mods_loaded
🢆 Running tests from tools_spec.lua:418 ▷ Technic power tool Prospector new item can be used
SX	�(T@technic)Right-click to set target block type�E
🢆 Running tests from tools_spec.lua:445 ▷ Technic power tool Prospector charge is used
SX	�(T@technic)�Fstone description�E is present in �F1x1x7�E region�E

243 successes / 0 failures / 0 errors / 4 pending : 23.081126 seconds

Pending → spec/api_spec.lua @ 138
Technic API Machine registration registers my_mod:my_battery
spec/api_spec.lua:138: Battery box registration does not include all fields

Pending → spec/api_spec.lua @ 195
Technic API Machine registration registers my_mod:machine_base
spec/api_spec.lua:195: Base machine registration does not include all fields

Pending → spec/api_spec.lua @ 290
Technic API internals technic.cables TBD, misleading name and should be updated
spec/api_spec.lua:290: TBD technic.cables naming and need, see technic networks data for possible options

Pending → spec/supply_converter_spec.lua @ 78
Supply converter building overloads network
spec/supply_converter_spec.lua:78: overload does not work with supply converter

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Compatibility Aims to improve compatibility with something.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant