diff --git a/.luacheck.head b/.luacheck.head deleted file mode 100644 index bf49be42..00000000 --- a/.luacheck.head +++ /dev/null @@ -1,17 +0,0 @@ -std = "min" - -read_globals = { - "ItemStack", - "dump", "dump2", - "vector", - "VoxelArea", - "minetest", - "PseudoRandom", - "PerlinNoise", - "PcgRandom", - - string = {fields = {"split", "trim"}}, - table = {fields = {"copy", "getn", "indexof", "insert_all"}}, - math = {fields = {"hypot", "round"}}, -} - diff --git a/.luacheckrc b/.luacheckrc index 6cd60584..9970dac6 100644 --- a/.luacheckrc +++ b/.luacheckrc @@ -1,9 +1,3 @@ - -------------------------------------------------------------------- --- THIS FILE WAS AUTOGENERATED BY tools/make-luacheck-files.sh ! -- --- DO NOT EDIT BY HAND. YOUR CHANGES WILL BE LOST NEXT RUN! -- -------------------------------------------------------------------- - std = "min" read_globals = { @@ -21,143 +15,88 @@ read_globals = { math = {fields = {"hypot", "round"}}, } -files["mods/CORE/_mcl_autogroup"] = { globals = { "_mcl_autogroup" } } -files["mods/CORE/biomeinfo"] = { globals = { "biomeinfo" } } -files["mods/CORE/controls"] = { globals = { "controls" } } -files["mods/CORE/flowlib"] = { globals = { "flowlib" } } -files["mods/CORE/mcl_explosions"] = { globals = { "mcl_explosions" }, read_globals = { "mcl_particles", "mcl_fire" } } -files["mods/CORE/mcl_init"] = { globals = { "mcl_init" } } -files["mods/CORE/mcl_loot"] = { globals = { "mcl_loot" } } -files["mods/CORE/mcl_particles"] = { globals = { "mcl_particles" } } -files["mods/CORE/mcl_sounds"] = { globals = { "mcl_sounds" } } -files["mods/CORE/mcl_util"] = { globals = { "mcl_util" }, read_globals = { "mcl_init" } } -files["mods/CORE/mcl_worlds"] = { globals = { "mcl_worlds" }, read_globals = { "mcl_init" } } -files["mods/CORE/mcl_autogroup"] = { globals = { "mcl_autogroup" } } -files["mods/ENTITIES/drippingwater"] = { globals = { "drippingwater" }, read_globals = { "mcl_core" } } -files["mods/ENTITIES/mcl_boats"] = { globals = { "mcl_boats" }, read_globals = { "mcl_player", "mcl_core", "doc_identifier" } } -files["mods/ENTITIES/mcl_burning"] = { globals = { "mcl_burning" } } -files["mods/ENTITIES/mcl_falling_nodes"] = { globals = { "mcl_falling_nodes" } } -files["mods/ENTITIES/mcl_item_entity"] = { globals = { "mcl_item_entity" }, read_globals = { "flowlib", "mcl_enchanting" } } -files["mods/ENTITIES/mcl_minecarts"] = { globals = { "mcl_minecarts" }, read_globals = { "mcl_explosions", "mcl_core", "mcl_sounds", "mcl_player", "mcl_achievements", "mcl_chests", "mcl_furnaces", "mesecons_commandblock", "mcl_hoppers", "mcl_tnt", "mesecons", "doc_identifier" } } -files["mods/ENTITIES/mcl_mobs"] = { globals = { "mcl_mobs" }, read_globals = { "mcl_particles", "mcl_weather", "mcl_explosions", "mcl_hunger", "mcl_worlds", "invisibility", "lucky_block", "cmi", "doc_identifier", "mcl_armor", "mcl_portals", "mcl_experience" } } -files["mods/ENTITIES/mcl_paintings"] = { globals = { "mcl_paintings" } } -files["mods/ENTITIES/mobs_mc"] = { globals = { "mobs_mc" }, read_globals = { "mcl_init", "mcl_particles", "default", "mcl_mobs", "mcl_tnt", "mcl_bows", "mcl_throwing", "mcl_fishing", "bones", "mesecons_materials", "mobs_mc_gameconfig", "doc_items" } } -files["mods/ENTITIES/mobs_mc_gameconfig"] = { globals = { "mobs_mc_gameconfig" }, read_globals = { "mcl_init", "mcl_core" } } -files["mods/ENVIRONMENT/lightning"] = { globals = { "lightning" }, read_globals = { "mcl_fire", "mcl_death_messages" } } -files["mods/ENVIRONMENT/mcl_moon"] = { globals = { "mcl_moon" } } -files["mods/ENVIRONMENT/mcl_void_damage"] = { globals = { "mcl_void_damage" }, read_globals = { "mcl_worlds", "mcl_death_messages" } } -files["mods/ENVIRONMENT/mcl_weather"] = { globals = { "mcl_weather" }, read_globals = { "mcl_init", "mcl_worlds", "lightning" } } -files["mods/HELP/doc/doc"] = { globals = { "doc" }, read_globals = { "unified_inventory", "sfinv_buttons", "central_message", "inventory_plus" } } -files["mods/HELP/doc/doc_identifier"] = { globals = { "doc_identifier" }, read_globals = { "doc", "doc_items", "doc_basics", "mcl_core" } } -files["mods/HELP/doc/doc_items"] = { globals = { "doc_items" }, read_globals = { "doc" } } -files["mods/HELP/mcl_craftguide"] = { globals = { "mcl_craftguide" }, read_globals = { "mcl_core", "mcl_compass", "mcl_clock", "doc", "sfinv", "sfinv_buttons" } } -files["mods/HELP/mcl_doc"] = { globals = { "mcl_doc" }, read_globals = { "doc", "doc_items" } } -files["mods/HELP/mcl_doc_basics"] = { globals = { "mcl_doc_basics" }, read_globals = { "doc" } } -files["mods/HELP/mcl_tt"] = { globals = { "mcl_tt" }, read_globals = { "tt", "mcl_enchanting" } } -files["mods/HELP/tt"] = { globals = { "tt" } } -files["mods/HUD/awards"] = { globals = { "awards" }, read_globals = { "sfinv", "unified_inventory" } } -files["mods/HUD/hudbars"] = { globals = { "hudbars" } } -files["mods/HUD/mcl_achievements"] = { globals = { "mcl_achievements" }, read_globals = { "awards" } } -files["mods/HUD/mcl_base_textures"] = { globals = { "mcl_base_textures" } } -files["mods/HUD/mcl_death_messages"] = { globals = { "mcl_death_messages" } } -files["mods/HUD/mcl_formspec"] = { globals = { "mcl_formspec" } } -files["mods/HUD/mcl_formspec_prepend"] = { globals = { "mcl_formspec_prepend" }, read_globals = { "mcl_init" } } -files["mods/HUD/mcl_hbarmor"] = { globals = { "mcl_hbarmor" }, read_globals = { "hudbars", "mcl_armor" } } -files["mods/HUD/mcl_inventory"] = { globals = { "mcl_inventory" }, read_globals = { "mcl_init", "mcl_formspec", "mcl_player", "_mcl_autogroup", "mcl_armor", "mcl_brewing", "mcl_potions", "mcl_enchanting" } } -files["mods/HUD/show_wielded_item"] = { globals = { "show_wielded_item" }, read_globals = { "hudbars" } } -files["mods/ITEMS/REDSTONE/mcl_comparators"] = { globals = { "mcl_comparators" }, read_globals = { "mesecons", "mcl_sounds", "doc", "screwdriver" } } -files["mods/ITEMS/REDSTONE/mcl_dispensers"] = { globals = { "mcl_dispensers" }, read_globals = { "mcl_init", "mcl_formspec", "mesecons", "mcl_sounds", "mcl_tnt", "mcl_worlds", "mcl_core", "mcl_nether", "mcl_armor_stand", "mcl_armor", "doc", "screwdriver" } } -files["mods/ITEMS/REDSTONE/mcl_droppers"] = { globals = { "mcl_droppers" }, read_globals = { "mcl_init", "mcl_formspec", "mesecons", "mcl_util", "doc", "screwdriver" } } -files["mods/ITEMS/REDSTONE/mcl_observers"] = { globals = { "mcl_observers" }, read_globals = { "mesecons", "mcl_util" } } -files["mods/ITEMS/REDSTONE/mesecons"] = { globals = { "mesecons" }, read_globals = { "mcl_sounds", "mcl_core", "doc" } } -files["mods/ITEMS/REDSTONE/mesecons_alias"] = { globals = { "mesecons_alias" }, read_globals = { "mesecons" } } -files["mods/ITEMS/REDSTONE/mesecons_button"] = { globals = { "mesecons_button" }, read_globals = { "mesecons", "doc" } } -files["mods/ITEMS/REDSTONE/mesecons_commandblock"] = { globals = { "mesecons_commandblock" }, read_globals = { "mesecons", "doc", "doc_items" } } -files["mods/ITEMS/REDSTONE/mesecons_delayer"] = { globals = { "mesecons_delayer" }, read_globals = { "mesecons", "doc", "screwdriver" } } -files["mods/ITEMS/REDSTONE/mesecons_lightstone"] = { globals = { "mesecons_lightstone" }, read_globals = { "mesecons", "doc" } } -files["mods/ITEMS/REDSTONE/mesecons_mvps"] = { globals = { "mesecons_mvps" }, read_globals = { "mesecons" } } -files["mods/ITEMS/REDSTONE/mesecons_noteblock"] = { globals = { "mesecons_noteblock" }, read_globals = { "mesecons", "mcl_particles" } } -files["mods/ITEMS/REDSTONE/mesecons_pistons"] = { globals = { "mesecons_pistons" }, read_globals = { "mesecons", "mesecons_mvps", "mcl_mobitems", "doc", "screwdriver" } } -files["mods/ITEMS/REDSTONE/mesecons_pressureplates"] = { globals = { "mesecons_pressureplates" }, read_globals = { "mesecons", "doc" } } -files["mods/ITEMS/REDSTONE/mesecons_solarpanel"] = { globals = { "mesecons_solarpanel" }, read_globals = { "mesecons", "doc" } } -files["mods/ITEMS/REDSTONE/mesecons_torch"] = { globals = { "mesecons_torch" }, read_globals = { "mesecons", "mcl_torches", "doc" } } -files["mods/ITEMS/REDSTONE/mesecons_walllever"] = { globals = { "mesecons_walllever" }, read_globals = { "mesecons", "doc" } } -files["mods/ITEMS/REDSTONE/mesecons_wires"] = { globals = { "mesecons_wires" }, read_globals = { "mesecons", "doc" } } -files["mods/ITEMS/mcl_anvils"] = { globals = { "mcl_anvils" }, read_globals = { "mcl_init", "mcl_formspec", "mcl_sounds", "mcl_core", "screwdriver", "tt", "mcl_enchanting" } } -files["mods/ITEMS/mcl_armor"] = { globals = { "mcl_armor" }, read_globals = { "mcl_core", "mcl_player", "mcl_fire", "ethereal", "bakedclay", "mcl_enchanting" } } -files["mods/ITEMS/mcl_armor_stand"] = { globals = { "mcl_armor_stand" }, read_globals = { "mcl_armor", "mcl_core", "mcl_sounds", "mcl_stairs", "screwdriver" } } -files["mods/ITEMS/mcl_banners"] = { globals = { "mcl_banners" }, read_globals = { "mcl_sounds", "mcl_core", "mcl_wool", "mcl_cauldrons", "doc", "screwdriver" } } -files["mods/ITEMS/mcl_beds"] = { globals = { "mcl_beds" }, read_globals = { "playerphysics", "mcl_sounds", "mcl_worlds", "mcl_wool", "mcl_dye", "mcl_explosions", "mcl_weather", "mcl_spawn", "doc" } } -files["mods/ITEMS/mcl_books"] = { globals = { "mcl_books" }, read_globals = { "mcl_init", "mcl_core", "mcl_sounds", "mcl_mobitems", "mcl_dye" } } -files["mods/ITEMS/mcl_bows"] = { globals = { "mcl_bows" }, read_globals = { "controls", "awards", "mcl_achievements", "mcl_core", "mcl_mobitems", "playerphysics", "doc", "doc_identifier", "mesecons_button", "mcl_particles", "mcl_enchanting" } } -files["mods/ITEMS/mcl_brewing"] = { globals = { "mcl_brewing" }, read_globals = { "mcl_init", "mcl_formspec", "mcl_sounds", "mcl_potions", "mcl_mobitems", "mcl_core", "doc", "screwdriver" } } -files["mods/ITEMS/mcl_buckets"] = { globals = { "mcl_buckets" }, read_globals = { "mcl_worlds", "mcl_core", "mclx_core", "doc" } } -files["mods/ITEMS/mcl_cake"] = { globals = { "mcl_cake" }, read_globals = { "mcl_core", "mcl_sounds", "mcl_hunger", "mcl_buckets", "mcl_farming", "mcl_mobitems", "doc" } } -files["mods/ITEMS/mcl_cauldrons"] = { globals = { "mcl_cauldrons" }, read_globals = { "mcl_core", "mclx_core", "mcl_sounds", "doc" } } -files["mods/ITEMS/mcl_chests"] = { globals = { "mcl_chests" }, read_globals = { "mcl_init", "mcl_formspec", "mcl_core", "mcl_sounds", "mcl_end", "mesecons", "doc", "screwdriver" } } -files["mods/ITEMS/mcl_clock"] = { globals = { "mcl_clock" }, read_globals = { "mcl_init", "mcl_worlds", "mesecons", "doc" } } -files["mods/ITEMS/mcl_cocoas"] = { globals = { "mcl_cocoas" }, read_globals = { "mcl_sounds", "mcl_core", "doc" } } -files["mods/ITEMS/mcl_colorblocks"] = { globals = { "mcl_colorblocks" }, read_globals = { "mcl_core", "mcl_sounds", "mcl_dye", "doc", "screwdriver" } } -files["mods/ITEMS/mcl_compass"] = { globals = { "mcl_compass" }, read_globals = { "mcl_core", "mcl_worlds", "mesecons", "doc" } } -files["mods/ITEMS/mcl_core"] = { globals = { "mcl_core" }, read_globals = { "mcl_autogroup", "mcl_init", "mcl_sounds", "mcl_particles", "mcl_util", "mcl_worlds", "doc_items", "doc", "mcl_enchanting" } } -files["mods/ITEMS/mcl_crafting_table"] = { globals = { "mcl_crafting_table" }, read_globals = { "mcl_init", "mcl_formspec", "mcl_sounds" } } -files["mods/ITEMS/mcl_doors"] = { globals = { "mcl_doors" }, read_globals = { "mcl_core", "mcl_sounds", "doc?", "screwdriver?", "mesecons" } } -files["mods/ITEMS/mcl_dye"] = { globals = { "mcl_dye" }, read_globals = { "mcl_core", "mcl_flowers", "mcl_mobitems", "mcl_cocoas" } } -files["mods/ITEMS/mcl_enchanting"] = { globals = { "mcl_enchanting" }, read_globals = { "tt", "walkover", "mcl_sounds", "screwdriver" } } -files["mods/ITEMS/mcl_end"] = { globals = { "mcl_end" }, read_globals = { "mcl_sounds", "mcl_util", "doc_items", "mcl_worlds", "mcl_structures" } } -files["mods/ITEMS/mcl_farming"] = { globals = { "mcl_farming" }, read_globals = { "mcl_core", "mcl_sounds", "mcl_wool", "mcl_torches", "mcl_weather", "mcl_armor", "mobs_mc", "doc" } } -files["mods/ITEMS/mcl_fences"] = { globals = { "mcl_fences" }, read_globals = { "mcl_core", "mcl_sounds", "doc", "screwdriver" } } -files["mods/ITEMS/mcl_fire"] = { globals = { "mcl_fire" }, read_globals = { "mcl_core", "mcl_worlds", "mcl_sounds", "mcl_particles", "mcl_portals" } } -files["mods/ITEMS/mcl_fishing"] = { globals = { "mcl_fishing" }, read_globals = { "mcl_core", "mcl_sounds", "mcl_loot", "mcl_mobs", "mcl_enchanting" } } -files["mods/ITEMS/mcl_flowerpots"] = { globals = { "mcl_flowerpots" }, read_globals = { "mcl_core", "mcl_sounds", "mcl_farming", "mcl_flowers", "doc" } } -files["mods/ITEMS/mcl_flowers"] = { globals = { "mcl_flowers" }, read_globals = { "mcl_core", "mcl_util", "mcl_sounds", "screwdriver", "doc" } } -files["mods/ITEMS/mcl_furnaces"] = { globals = { "mcl_furnaces" }, read_globals = { "mcl_init", "mcl_formspec", "mcl_core", "mcl_sounds", "mcl_craftguide", "mcl_achievements", "mcl_particles", "doc", "screwdriver" } } -files["mods/ITEMS/mcl_heads"] = { globals = { "mcl_heads" }, read_globals = { "mcl_sounds", "mcl_armor", "screwdriver", "doc" } } -files["mods/ITEMS/mcl_hoppers"] = { globals = { "mcl_hoppers" }, read_globals = { "mcl_core", "mcl_formspec", "mcl_sounds", "mcl_util", "doc", "screwdriver" } } -files["mods/ITEMS/mcl_itemframes"] = { globals = { "mcl_itemframes" }, read_globals = { "mcl_core", "mcl_sounds", "screwdriver" } } -files["mods/ITEMS/mcl_jukebox"] = { globals = { "mcl_jukebox" }, read_globals = { "mcl_core", "mcl_sounds" } } -files["mods/ITEMS/mcl_maps"] = { globals = { "mcl_maps" } } -files["mods/ITEMS/mcl_mobitems"] = { globals = { "mcl_mobitems" }, read_globals = { "mcl_core", "mcl_hunger" } } -files["mods/ITEMS/mcl_mobspawners"] = { globals = { "mcl_mobspawners" }, read_globals = { "mcl_sounds", "mcl_mobs" } } -files["mods/ITEMS/mcl_monster_eggs"] = { globals = { "mcl_monster_eggs" }, read_globals = { "mcl_sounds", "mobs_mc" } } -files["mods/ITEMS/mcl_mushrooms"] = { globals = { "mcl_mushrooms" }, read_globals = { "mcl_sounds", "mcl_util", "doc" } } -files["mods/ITEMS/mcl_nether"] = { globals = { "mcl_nether" }, read_globals = { "mcl_core", "mcl_sounds", "mcl_util", "walkover", "mcl_death_messages", "doc_items", "doc", "screwdriver" } } -files["mods/ITEMS/mcl_ocean"] = { globals = { "mcl_ocean" }, read_globals = { "mcl_core", "mcl_sounds", "mcl_dye", "doc", "doc_items", "screwdriver" } } -files["mods/ITEMS/mcl_portals"] = { globals = { "mcl_portals" }, read_globals = { "mcl_init", "mcl_worlds", "mcl_core", "mcl_nether", "mcl_end", "mcl_particles", "mcl_spawn", "awards", "doc" } } -files["mods/ITEMS/mcl_potions"] = { globals = { "mcl_potions" }, read_globals = { "mcl_core", "mcl_farming", "mcl_mobitems", "mcl_fishing", "mcl_bows", "mcl_end", "mcl_weather", "playerphysics" } } -files["mods/ITEMS/mcl_signs"] = { globals = { "mcl_signs" }, read_globals = { "mcl_sounds", "mcl_core", "doc" } } -files["mods/ITEMS/mcl_sponges"] = { globals = { "mcl_sponges" }, read_globals = { "mcl_sounds", "mcl_core", "mclx_core" } } -files["mods/ITEMS/mcl_stairs"] = { globals = { "mcl_stairs" }, read_globals = { "mcl_core", "mcl_sounds", "mcl_nether", "mcl_end", "mcl_ocean" } } -files["mods/ITEMS/mcl_throwing"] = { globals = { "mcl_throwing" }, read_globals = { "mcl_core", "mcl_mobitems", "doc", "mcl_fishing" } } -files["mods/ITEMS/mcl_tnt"] = { globals = { "mcl_tnt" }, read_globals = { "mcl_explosions", "mcl_particles", "mcl_sounds", "mcl_mobitems", "mcl_death_messages", "doc_identifier", "mesecons" } } -files["mods/ITEMS/mcl_tools"] = { globals = { "mcl_tools" }, read_globals = { "mcl_sounds" } } -files["mods/ITEMS/mcl_torches"] = { globals = { "mcl_torches" }, read_globals = { "mcl_core", "mcl_sounds", "mcl_particles", "doc" } } -files["mods/ITEMS/mcl_totems"] = { globals = { "mcl_totems" }, read_globals = { "mobs_mc" } } -files["mods/ITEMS/mcl_walls"] = { globals = { "mcl_walls" }, read_globals = { "mcl_core", "mcl_end", "mcl_ocean", "mcl_nether", "mcl_sounds", "doc" } } -files["mods/ITEMS/mcl_wool"] = { globals = { "mcl_wool" }, read_globals = { "mcl_sounds", "doc" } } -files["mods/ITEMS/mclx_core"] = { globals = { "mclx_core" }, read_globals = { "mcl_core", "doc" } } -files["mods/ITEMS/mclx_fences"] = { globals = { "mclx_fences" }, read_globals = { "mcl_fences" } } -files["mods/ITEMS/mclx_stairs"] = { globals = { "mclx_stairs" }, read_globals = { "mcl_ocean", "mcl_core", "mcl_sounds", "mcl_nether", "mcl_end", "mcl_colorblocks", "mcl_stairs", "doc" } } -files["mods/ITEMS/xpanes"] = { globals = { "xpanes" }, read_globals = { "mcl_sounds", "mcl_core", "doc" } } -files["mods/MAPGEN/mcl_biomes"] = { globals = { "mcl_biomes" }, read_globals = { "mcl_init", "mcl_mapgen_core", "mcl_core", "mcl_worlds", "mcl_farming", "mcl_flowers", "mcl_end", "mcl_ocean" } } -files["mods/MAPGEN/mcl_dungeons"] = { globals = { "mcl_dungeons" }, read_globals = { "mcl_init", "mcl_core", "mcl_chests", "mcl_mobs", "mcl_mobspawners", "mcl_mapgen_core", "mobs_mc" } } -files["mods/MAPGEN/mcl_mapgen_core"] = { globals = { "mcl_mapgen_core" }, read_globals = { "mcl_init", "mcl_core", "biomeinfo", "mclx_core", "mcl_worlds", "mcl_cocoas", "mcl_sponges", "mcl_ocean", "mcl_stairs", "mcl_monster_eggs", "mcl_structures" } } -files["mods/MAPGEN/mcl_strongholds"] = { globals = { "mcl_strongholds" }, read_globals = { "mcl_init", "mcl_structures", "mcl_mapgen_core" } } -files["mods/MAPGEN/mcl_structures"] = { globals = { "mcl_structures" }, read_globals = { "mcl_loot" } } -files["mods/MAPGEN/mcl_villages"] = { globals = { "mcl_villages" }, read_globals = { "mcl_util", "mcl_mapgen_core", "mcl_structures", "mcl_core", "mcl_loot", "mcl_farming", "mobs_mc" } } -files["mods/MAPGEN/tsm_railcorridors"] = { globals = { "tsm_railcorridors" }, read_globals = { "mcl_init", "mcl_worlds", "mcl_core", "mcl_mapgen_core", "mcl_loot", "mcl_tnt", "mcl_farming", "mcl_mobspawners", "mcl_minecarts" } } -files["mods/MISC/findbiome"] = { globals = { "findbiome" }, read_globals = { "biomeinfo" } } -files["mods/MISC/mcl_commands"] = { globals = { "mcl_commands" }, read_globals = { "mcl_death_messages" } } -files["mods/MISC/mcl_temp_helper_recipes"] = { globals = { "mcl_temp_helper_recipes" }, read_globals = { "mcl_core", "mcl_mobitems", "mcl_end", "mcl_nether", "mcl_ocean", "mcl_stairs", "xpanes" } } -files["mods/MISC/mcl_wip"] = { globals = { "mcl_wip" }, read_globals = { "mcl_core", "mcl_fishing", "mcl_maps", "mcl_minecarts", "doc_identifier", "mobs_mc", "mcl_comparators", "mcl_minecarts", "mcl_paintings", "mcl_potions" } } -files["mods/PLAYER/mcl_death_drop"] = { globals = { "mcl_death_drop" }, read_globals = { "mcl_armor", "mcl_enchanting" } } -files["mods/PLAYER/mcl_hunger"] = { globals = { "mcl_hunger" }, read_globals = { "hudbars", "mcl_death_messages" } } -files["mods/PLAYER/mcl_meshhand"] = { globals = { "mcl_meshhand" }, read_globals = { "mcl_tools", "mcl_skins" } } -files["mods/PLAYER/mcl_player_init"] = { globals = { "mcl_player_init" } } -files["mods/PLAYER/mcl_playerinfo"] = { globals = { "mcl_playerinfo" }, read_globals = { "mcl_init", "mcl_core", "mcl_particles", "mcl_death_messages" } } -files["mods/PLAYER/mcl_playerplus"] = { globals = { "mcl_playerplus" }, read_globals = { "mcl_init", "mcl_core", "mcl_particles", "mcl_hunger", "mcl_death_messages", "playerphysics", "mcl_playerinfo", "mcl_weather", "mcl_spawn", "mcl_enchanting" } } -files["mods/PLAYER/mcl_skins"] = { globals = { "mcl_skins" }, read_globals = { "mcl_player", "mcl_inventory", "intllib", "mcl_armor" } } -files["mods/PLAYER/mcl_spawn"] = { globals = { "mcl_spawn" }, read_globals = { "mcl_init" } } -files["mods/PLAYER/mcl_sprint"] = { globals = { "mcl_sprint" }, read_globals = { "mcl_playerinfo", "playerphysics", "mcl_hunger" } } -files["mods/PLAYER/playerphysics"] = { globals = { "playerphysics" } } -files["mods/PLAYER/wieldview"] = { globals = { "wieldview" }, read_globals = { "mcl_armor" } } +-- A config option to allow r/w access to mods which contain +-- this one. It only avoids a couple warnings, and may not be +-- the behavior we want, so it's disabled by default. +local allow_parents=false + +local lfs = require "lfs" + +-- Seed the queue with the mods/ directory +local queue={ {"mods"} } + +local function check(dir) + -- Get the string of the directory path + local sdir=table.concat(dir, "/") + -- Save the top-level directory name as a + -- fallback in case there's no mod.conf, + -- or no name= directive. + local name=dir[#dir] + + -- Is there a mod.conf? + if lfs.attributes(sdir.."/mod.conf", "mode") == "file" then + local deps={} + for line in io.lines(sdir.."/mod.conf") do + -- Use name= if it's there + name=string.match(line, "name *= *([a-zA-Z0-9_]+)") or name + -- Get the dependency entries (if they're there) + local ents=string.match(line, "depends *=(.*)$") + if ents then + -- Split them in to the comma-separated names + for m in string.gmatch(ents, "([a-zA-Z0-9_]+),?") do + table.insert(deps, m) + end + end + end + + local glb={ name } + if allow_parents then + for _, v in pairs(dir) do + -- Skip ALL-CAPS names since those tend + -- to be collections of mods instead of + -- mods themselves. + if not string.match(v, "^[A-Z]+$") then + table.insert(glb, v) + end + end + end + + -- Tell Luacheck what the directory is allowed to do + files[sdir]={ + globals = glb, + read_globals = deps, + } + elseif lfs.attributes(sdir.."/init.lua", "mode") == "file" then + -- No mod.conf, but there's an init.lua here. + local glb={ name } + if allow_parents then + for _, v in pairs(dir) do + -- Again, skip ALL-CAPS. + if not string.match(v, "^[A-Z]+$") then + table.insert(glb, v) + end + end + end + + files[sdir]={ globals=glb } + end + + -- Queue any child directories + for d in lfs.dir(sdir) do + -- Skip hidden directories and parent/current directories. + if lfs.attributes(sdir.."/"..d, "mode") == "directory" and not string.match(d, "^%.") then + -- Copy dir in to nd (New Dir) + local nd={} + for k, v in pairs(dir) do + nd[k]=v + end + nd[#nd+1]=d + table.insert(queue, nd) + end + end +end + +while #queue > 0 do + -- Pop an entry and process it. + check(table.remove(queue, 1)) +end diff --git a/tools/deps-to-luacheck.awk b/tools/deps-to-luacheck.awk deleted file mode 100644 index 19aab14a..00000000 --- a/tools/deps-to-luacheck.awk +++ /dev/null @@ -1,41 +0,0 @@ -BEGIN { - if (!DIR || !MOD) { - printf("error: DIR and MOD must be set.\n"); - _panic=1; - exit 1; - } - - printf("files[\"" DIR "\"] = { globals = { \"" MOD "\" }"); - - if (!EMPTY) { - printf(", read_globals = { "); - } -}; - -# Without a pattern, this will match on empty lines -# and mess up the entry. We clean up the extra commas -# later in the script. -/.+/{ - # Get rid of the optional (?) mark from - # depends.txt entries. - sub("?$", ""); - - # Some files have CRLF, so get rid of those - # too. - sub("\xd", ""); - - SEP=", "; - if (NR == 1) { - SEP=""; - } - printf(SEP "\"" $1 "\""); -}; - -END { - if (!_panic) { - if (!EMPTY) { - printf(" }"); - } - printf(" }\n"); - } -}; diff --git a/tools/make-luacheck-files.sh b/tools/make-luacheck-files.sh deleted file mode 100755 index 507d6e93..00000000 --- a/tools/make-luacheck-files.sh +++ /dev/null @@ -1,73 +0,0 @@ -#!/bin/sh -# -# make-luacheck-files.sh -# v1 - E - Initial version -# v2 - E - Remove (most) inline scripts - -set -ue - -if [ ! -d "mods" ] || [ ! -r ".luacheck.head" ]; then - printf "error: this script needs to be run from the mineclonia project root\n" 1>&2 - exit 1 -fi - -HEADER=' -------------------------------------------------------------------- --- THIS FILE WAS AUTOGENERATED BY tools/make-luacheck-files.sh ! -- --- DO NOT EDIT BY HAND. YOUR CHANGES WILL BE LOST NEXT RUN! -- -------------------------------------------------------------------- - -' - -# This takes any line that contains 'depends' and an equal sign -# and spits out each (comma-separated) entry on its own line. -modconf2deps() { - sed -n -r -e ' - # Match any lines like "depends = asdfada" - /depends *=/{ - # Get rid of the "depends =" part - s/.*depends *=//; - # Convert commas to newlines - s/, */\n/g; - # Record the output - p; - }' -} - -find mods -type d -print | while read -r DIR; do - if [ -r "$DIR/depends.txt" ]; then - printf "found: %s (%s)\n" "$DIR" "depends.txt" 1>&2 - # depends.txt is a simple newline-delimited file, - # so we can just read it in. - DEPS="$(cat "$DIR/depends.txt")" - elif [ -r "$DIR/mod.conf" ]; then - printf "found: %s (%s)\n" "$DIR" "mod.conf" 1>&2 - # mod.conf needs some more help to get usable - # data out of it. - DEPS="$(modconf2deps < "$DIR/mod.conf")" - else - # Empty dir, or not a mod dir. - continue - fi - - EMPTY=0 - if [ -z "$DEPS" ]; then - EMPTY=1 - fi - - # Get only the last chunk of the directory - # for the mod name. - MOD="${DIR##*/}" - - # Now we run through it through the formatter - awk \ - -v DIR="$DIR" \ - -v EMPTY="$EMPTY" \ - -v MOD="$MOD" \ - -f tools/deps-to-luacheck.awk <<-EOF - $DEPS - EOF -done > .luacheck.files - -# Put the final thing together with the warning header -{ printf "%s" "$HEADER"; cat .luacheck.head .luacheck.files; } > .luacheckrc