commit df8714aa1d48f2dde3b69a8da4d786447bc76d4b Author: Tony Bark Date: Fri Feb 7 14:39:37 2025 -0500 Initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ef02689 --- /dev/null +++ b/.gitignore @@ -0,0 +1,22 @@ +## Files related to minetest development cycle +/*.patch +# GNU Patch reject file +*.rej + +## Editors and Development environments +*~ +*.swp +*.bak* +*.orig +# Vim +*.vim +# Kate +.*.kate-swp +.swp.* +# Eclipse (LDT) +.project +.settings/ +.buildpath +.metadata +# Idea IDE +.idea/* diff --git a/CC0.txt b/CC0.txt new file mode 100644 index 0000000..0e259d4 --- /dev/null +++ b/CC0.txt @@ -0,0 +1,121 @@ +Creative Commons Legal Code + +CC0 1.0 Universal + + CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE + LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN + ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS + INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES + REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS + PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM + THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED + HEREUNDER. + +Statement of Purpose + +The laws of most jurisdictions throughout the world automatically confer +exclusive Copyright and Related Rights (defined below) upon the creator +and subsequent owner(s) (each and all, an "owner") of an original work of +authorship and/or a database (each, a "Work"). + +Certain owners wish to permanently relinquish those rights to a Work for +the purpose of contributing to a commons of creative, cultural and +scientific works ("Commons") that the public can reliably and without fear +of later claims of infringement build upon, modify, incorporate in other +works, reuse and redistribute as freely as possible in any form whatsoever +and for any purposes, including without limitation commercial purposes. +These owners may contribute to the Commons to promote the ideal of a free +culture and the further production of creative, cultural and scientific +works, or to gain reputation or greater distribution for their Work in +part through the use and efforts of others. + +For these and/or other purposes and motivations, and without any +expectation of additional consideration or compensation, the person +associating CC0 with a Work (the "Affirmer"), to the extent that he or she +is an owner of Copyright and Related Rights in the Work, voluntarily +elects to apply CC0 to the Work and publicly distribute the Work under its +terms, with knowledge of his or her Copyright and Related Rights in the +Work and the meaning and intended legal effect of CC0 on those rights. + +1. Copyright and Related Rights. A Work made available under CC0 may be +protected by copyright and related or neighboring rights ("Copyright and +Related Rights"). Copyright and Related Rights include, but are not +limited to, the following: + + i. the right to reproduce, adapt, distribute, perform, display, + communicate, and translate a Work; + ii. moral rights retained by the original author(s) and/or performer(s); +iii. publicity and privacy rights pertaining to a person's image or + likeness depicted in a Work; + iv. rights protecting against unfair competition in regards to a Work, + subject to the limitations in paragraph 4(a), below; + v. rights protecting the extraction, dissemination, use and reuse of data + in a Work; + vi. database rights (such as those arising under Directive 96/9/EC of the + European Parliament and of the Council of 11 March 1996 on the legal + protection of databases, and under any national implementation + thereof, including any amended or successor version of such + directive); and +vii. other similar, equivalent or corresponding rights throughout the + world based on applicable law or treaty, and any national + implementations thereof. + +2. Waiver. To the greatest extent permitted by, but not in contravention +of, applicable law, Affirmer hereby overtly, fully, permanently, +irrevocably and unconditionally waives, abandons, and surrenders all of +Affirmer's Copyright and Related Rights and associated claims and causes +of action, whether now known or unknown (including existing as well as +future claims and causes of action), in the Work (i) in all territories +worldwide, (ii) for the maximum duration provided by applicable law or +treaty (including future time extensions), (iii) in any current or future +medium and for any number of copies, and (iv) for any purpose whatsoever, +including without limitation commercial, advertising or promotional +purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each +member of the public at large and to the detriment of Affirmer's heirs and +successors, fully intending that such Waiver shall not be subject to +revocation, rescission, cancellation, termination, or any other legal or +equitable action to disrupt the quiet enjoyment of the Work by the public +as contemplated by Affirmer's express Statement of Purpose. + +3. Public License Fallback. Should any part of the Waiver for any reason +be judged legally invalid or ineffective under applicable law, then the +Waiver shall be preserved to the maximum extent permitted taking into +account Affirmer's express Statement of Purpose. In addition, to the +extent the Waiver is so judged Affirmer hereby grants to each affected +person a royalty-free, non transferable, non sublicensable, non exclusive, +irrevocable and unconditional license to exercise Affirmer's Copyright and +Related Rights in the Work (i) in all territories worldwide, (ii) for the +maximum duration provided by applicable law or treaty (including future +time extensions), (iii) in any current or future medium and for any number +of copies, and (iv) for any purpose whatsoever, including without +limitation commercial, advertising or promotional purposes (the +"License"). The License shall be deemed effective as of the date CC0 was +applied by Affirmer to the Work. Should any part of the License for any +reason be judged legally invalid or ineffective under applicable law, such +partial invalidity or ineffectiveness shall not invalidate the remainder +of the License, and in such case Affirmer hereby affirms that he or she +will not (i) exercise any of his or her remaining Copyright and Related +Rights in the Work or (ii) assert any associated claims and causes of +action with respect to the Work, in either case contrary to Affirmer's +express Statement of Purpose. + +4. Limitations and Disclaimers. + + a. No trademark or patent rights held by Affirmer are waived, abandoned, + surrendered, licensed or otherwise affected by this document. + b. Affirmer offers the Work as-is and makes no representations or + warranties of any kind concerning the Work, express, implied, + statutory or otherwise, including without limitation warranties of + title, merchantability, fitness for a particular purpose, non + infringement, or the absence of latent or other defects, accuracy, or + the present or absence of errors, whether or not discoverable, all to + the greatest extent permissible under applicable law. + c. Affirmer disclaims responsibility for clearing rights of other persons + that may apply to the Work or any use thereof, including without + limitation any person's Copyright and Related Rights in the Work. + Further, Affirmer disclaims responsibility for obtaining any necessary + consents, permissions or other rights required for any use of the + Work. + d. Affirmer understands and acknowledges that Creative Commons is not a + party to this document and has no duty or obligation with respect to + this CC0 or use of the Work. diff --git a/COPYING.txt b/COPYING.txt new file mode 100644 index 0000000..b3d0b75 --- /dev/null +++ b/COPYING.txt @@ -0,0 +1,14 @@ +All files avalable under cc0, for more information see: https://creativecommons.org/public-domain/cc0/ +The following is an acknowledgment of the the contributions of the artists included in this package: + + +Special thanks to: +Kolevier . . . . . . . . . . Many log hours working on something I never used ;-; (https://kolevier.carrd.co/#three) +Christian Elbrianno . . . . . . . Various tile and item textures, and hours of time. +RedAndFoxy . . . . . . . . . . Various tile and item textures, and their trust in me. +wwwq . . . . . . . . . . . Player sprites, and access to their coding cheat sheet. +drummyfish . . . . . . . . . . thank you mysterious stranger [Hand Painted Pack](wieldhand.png) + +Thank you for all the hard work every one of you put in, none of this would have been possible without each and everyone of you. +I'm grateful to have been given the chance to work with such wonderful artist, and I'm truly sorry I couldn't do more. + diff --git a/README.md b/README.md new file mode 100644 index 0000000..6187dea --- /dev/null +++ b/README.md @@ -0,0 +1,7 @@ +# Wishful + +RedundantC's barebones Luanti game. This was downloaded from [ContentDB](https://content.luanti.org/packages/RedundantC/wis_side_b/) with the source hosted on here because I couldn't find it on any repository. Like [Minetest](https://git.tonybark.com/archives/minetest), I've assigned this as a template. + +## License + +This project is under the public domain - see [UNLICENSE](UNLICENSE.txt) and [CC0](CC0.txt) for details. \ No newline at end of file diff --git a/UNLICENSE.txt b/UNLICENSE.txt new file mode 100644 index 0000000..fdddb29 --- /dev/null +++ b/UNLICENSE.txt @@ -0,0 +1,24 @@ +This is free and unencumbered software released into the public domain. + +Anyone is free to copy, modify, publish, use, compile, sell, or +distribute this software, either in source code form or as a compiled +binary, for any purpose, commercial or non-commercial, and by any +means. + +In jurisdictions that recognize copyright laws, the author or authors +of this software dedicate any and all copyright interest in the +software to the public domain. We make this dedication for the benefit +of the public at large and to the detriment of our heirs and +successors. We intend this dedication to be an overt act of +relinquishment in perpetuity of all present and future rights to this +software under copyright law. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +For more information, please refer to diff --git a/game.conf b/game.conf new file mode 100644 index 0000000..a79d247 --- /dev/null +++ b/game.conf @@ -0,0 +1,14 @@ +#title Intentionally Left Blank, To Disable Engine Rendering On The Menu Screen (Top Left) +title = Wishful +#name is a uid only allows characters [a-z0-9_], not used in enduser side +name = wis_side_b +author = RedundantC +description = A simple game provided under a CC0 LICENSE: for writing & testing, mods and tutorials without a depending on minetest game. +min_minetest_version = 5.6 +map_persistent = false +disallowed_mapgens = v6, singlenode +allowed_mapgens = carpathian, flat, fractal, valleys, v5, v7 +disallowed_mapgen_settings = mg_flags, mgcarpathian_spflags, mgflat_spflags, mgfractal_spflags, mgvalleys_spflags, mgv5_, mgv6_spflags, mgv7_spflags +#allowed_mapgen_settings = mg_flags, mgcarpathian_spflags, mgflat_spflags, mgfractal_spflags, mgvalleys_spflags, mgv5_spflags, mgv6_spflags, mgv7_spflags +mgv5_spflags = caverns + diff --git a/menu/background.png b/menu/background.png new file mode 100644 index 0000000..812a0f3 Binary files /dev/null and b/menu/background.png differ diff --git a/menu/header.png b/menu/header.png new file mode 100644 index 0000000..4c7b74b Binary files /dev/null and b/menu/header.png differ diff --git a/menu/icon.png b/menu/icon.png new file mode 100644 index 0000000..2a69400 Binary files /dev/null and b/menu/icon.png differ diff --git a/mods/wisgame/init.lua b/mods/wisgame/init.lua new file mode 100644 index 0000000..cb2feea --- /dev/null +++ b/mods/wisgame/init.lua @@ -0,0 +1,11 @@ +local modname = minetest.get_current_modname() +local modpath = minetest.get_modpath(modname) + +-- DIR_DELIM 2345 < is 5 chars shorter, and I hate it! +c.dofolder(modpath .. modpath:match("[\\/]") .. "open", function(filePath) + if filePath:match("^.+%.(.+)$") == "lua" then + dofile(modpath .. modpath:match("[\\/]") .. "open"..modpath:match("[\\/]")..filePath) + end + --print(filePath) +end) + diff --git a/mods/wisgame/mod.conf b/mods/wisgame/mod.conf new file mode 100644 index 0000000..57d94ad --- /dev/null +++ b/mods/wisgame/mod.conf @@ -0,0 +1,3 @@ +#name is a uid that only allows characters [a-z0-9_] +name = wisgame +depends = wislib diff --git a/mods/wisgame/open/disabled/open_air.lua b/mods/wisgame/open/disabled/open_air.lua new file mode 100644 index 0000000..a9ff8f1 --- /dev/null +++ b/mods/wisgame/open/disabled/open_air.lua @@ -0,0 +1,52 @@ +local print = c.log +local max_light=math.floor(minetest.LIGHT_MAX/2) +print(max_light) +local breakskybox = function() +minetest.override_item(minetest.get_name_from_content_id(minetest.get_content_id(minetest.get_name_from_content_id(minetest.CONTENT_AIR))), { + drawtype = "nodebox", + sunlight_propagates = true, + walkable = false, + is_ground_content = false, + light_source = max_light, --this breaks everything! + + + use_texture_alpha = "opaque", + paramtype = "light", + paramtype2 = "wallmounted", + sunlight_propagates = true, + walkable = false, + }) +end +--print(minetest.LIGHT_MAX, max_light,0) +local fixskybox = function() + +minetest.register_on_mods_loaded(function() +core.fix_light(vector.new(-31000, -31000, -31000), vector.new(31000, 31000, 31000)) +end) +local chunkSize = tonumber(minetest.settings:get("chunksize")) or 16 +local maxBlockSendDistance = tonumber(minetest.settings:get("max_block_send_distance")) or 10 +local maxRenderDistance = (chunkSize * ((maxBlockSendDistance * 2) * .25) ) +local deltaCount = 0 +local deltaLimit = 3 + +minetest.register_globalstep(function(dtime) + deltaCount = deltaCount + dtime + print(deltaCount) + if not (deltaCount >= deltaLimit) then + return nil + end + deltaCount=deltaCount-deltaLimit + for _, player in ipairs(minetest.get_connected_players()) do + local username = player:get_player_name() + local userpos = player:get_pos() + local currentuserchunk = vector.floor(vector.divide(userpos, maxRenderDistance)) + + local minp = vector.multiply(currentuserchunk, maxRenderDistance) + local maxp = vector.add(minp, maxRenderDistance - 1) + core.fix_light(vector.new(minp.x, minp.y, minp.z), vector.new(maxp.x, maxp.y, maxp.z)) + end +end) + +end +breakskybox() + fixskybox() diff --git a/mods/wisgame/open/disabled/open_spread_abm.lua b/mods/wisgame/open/disabled/open_spread_abm.lua new file mode 100644 index 0000000..f06d89e --- /dev/null +++ b/mods/wisgame/open/disabled/open_spread_abm.lua @@ -0,0 +1,29 @@ +-- Function to spread grass to nearby dirt +local function spread_grass(pos) + -- Define the positions to check around the current position + local positions = { + {x = pos.x + 1, y = pos.y, z = pos.z}, + {x = pos.x - 1, y = pos.y, z = pos.z}, + {x = pos.x, y = pos.y, z = pos.z + 1}, + {x = pos.x, y = pos.y, z = pos.z - 1}, + {x = pos.x, y = pos.y + 1, z = pos.z}, + {x = pos.x, y = pos.y - 1, z = pos.z}, + } + + for _, new_pos in ipairs(positions) do + local node = minetest.get_node(new_pos) + if node.name == "default:dirt" then + minetest.set_node(new_pos, {name = "default:dirt_with_grass"}) + end + end +end + +-- ABM (Active Block Modifier) to spread grass +minetest.register_abm({ + nodenames = {"default:dirt_with_grass"}, + interval = 10, -- Time in seconds between ABM execution + chance = 50, -- 1 in 50 chance for the ABM to run + action = function(pos, node, active_object_count, active_object_count_wider) + spread_grass(pos) + end, +}) diff --git a/mods/wisgame/open/open_conf.lua b/mods/wisgame/open/open_conf.lua new file mode 100644 index 0000000..06484a8 --- /dev/null +++ b/mods/wisgame/open/open_conf.lua @@ -0,0 +1,56 @@ +-- Initialize mod storage +-- ASLP (Anti Stupid Lua Polyfill) +local DIR_DELIM = DIR_DELIM or "/" +-- Engine headers +local MODPACK = debug.getinfo(1, "S").source:match("mods[/\\][/\\]?[^/\\]*"):match("[/\\].*$"):sub(2) +local MODNAME = minetest and minetest.get_current_modname() or MODPACK +local MODPATH = minetest and minetest.get_modpath(MODPACK) or debug.getinfo(1, "S").source:match("^(.+)[/\\]"):sub(2) +--locals +--Avoid Using $.get() to get null instead of sane defaults. +local function nilget(key, default) + if not minetest.settings:has(key) then + minetest.settings:set("noclip") + + else + return nil + end +end +--Avoid Using $.get() to get null instead of sane defaults. +local function nilset(key, default) + if not minetest.settings:has(key) then + --Race Condition? + minetest.settings:set(key, default) + else + return nil + end +end + +-- Nooo! "Attempted to set secure setting." +-- nilset("secure.trusted_mods", "formspec_edit,") + + + + + + + +-- At this distance the server will aggressively optimize which blocks are sent to +-- clients. +-- Small values potentially improve performance a lot, at the expense of visible +-- rendering glitches (some blocks will not be rendered under water and in caves, +-- as well as sometimes on land). +-- Setting this to a value greater than max_block_send_distance disables this +-- optimization. +-- Stated in mapblocks (16 nodes). +-- type: int min: 2 max: 32767 +--nilset(" block_send_optimize_distance", 32767) + + + + +-- If enabled, the server will perform map block occlusion culling based on +-- on the eye position of the player. This can reduce the number of blocks +-- sent to the client by 50-80%. Clients will no longer receive most +-- invisible blocks, so that the utility of noclip mode is reduced. +-- type: bool +--nilset(" server_side_occlusion_culling", "true") diff --git a/mods/wisgame/open/open_hand.lua b/mods/wisgame/open/open_hand.lua new file mode 100644 index 0000000..c8cbf9e --- /dev/null +++ b/mods/wisgame/open/open_hand.lua @@ -0,0 +1,54 @@ +local image08='blank.png^[noalpha^[resize:8x8^[colorize:#000000:255' +local image16='blank.png^[noalpha^[resize:16x16^[colorize:#ffffff:255' +local modname = minetest.get_current_modname() +--why is : the hand, is it legacy support thing or what? +local hardtimes={[1] = 0.00, [2] = 2.00, [3] = 3.0} + +minetest.register_item(minetest.get_current_modname()..':hand', { + type = 'none', + wield_image ='wieldhand.png', + --[colorize:#000000:255:0,16=wis_black.png', + wield_scale = {x = 0.5, y = 1, z = 4}, + tool_capabilities = { + full_punch_interval = 0.5, + max_drop_level = 0, + groupcaps = { + crumbly = { + times = hardtimes, + uses = 0, + maxlevel = 1, + }, + snappy = { + times = hardtimes, + uses = 0, + maxlevel = 1, + }, + oddly_breakable_by_hand = { + times = hardtimes, + uses = 0, + }, + }, + damage_groups = {fleshy = 1}, + } +}) + +minetest.register_on_joinplayer(function(player, last_login) + if not player then return end + local inv = player:get_inventory() + inv:set_size("hand",1) + inv:add_item("hand", ItemStack(modname..":hand")) + --minetest.log(dump(inv:get_lists())) +end) + + + +local old_handle_node_drops = core.handle_node_drops +core.handle_node_drops = function(...) + -- flag all drops + old_handle_node_drops(...) + --- minetest.log('old_handle_node_drops') +end + +local old_item_drop = core.item_drop +--core.item_drop = function(...) old_item_drop(...) --minetest.log('old_item_drop') end + diff --git a/mods/wisgame/open/open_heart.lua b/mods/wisgame/open/open_heart.lua new file mode 100644 index 0000000..cc79b24 --- /dev/null +++ b/mods/wisgame/open/open_heart.lua @@ -0,0 +1,81 @@ +--Code that modifies information about player including: health totals, movement speeds, and more. +--movment world combat building +--player combat world + + + + +local physics_override = { +gravity=1, -- default is 1.0 +jump=1, -- default is 1.0 +speed=1.5, -- default is 2.0 +speed_sprint = 2, +speed_climb=2, -- default is 1.0 +speed_crouch=2, -- default is 1.0 +acceleration_air=1, -- default is 1.0 +acceleration_default=1, -- default is 1.0 +liquid_fluidity=1, -- default is 1.0 +liquid_fluidity_smooth=1, -- default is 1.0 +liquid_sink=1, -- default is 1.0 +new_move=true, -- default is true +sneak=true, -- default is true +sneak_glitch=true, -- default is false +} +-- Register a globalstep callback to check for sprinting, and sneaking, and regen health +local function for_each_player(dtime) + for _, player in ipairs(minetest.get_connected_players()) do + player:set_physics_override(physics_override) + local controls = player:get_player_control() + if not controls.aux1 then -- 'aux1' is the default sprint key + --c.log("slow", physics_override.speed) + player:set_physics_override({speed = physics_override.speed}) -- Normal speed + else + --c.log("fast", physics_override.sprint) + player:set_physics_override({speed = physics_override.speed_sprint}) -- Increased speed + end + if not controls.sneak then -- but 'sneak' can have a normal name... you know what whatever! + else + end + end +end + +minetest.register_globalstep(for_each_player) + + +--[[ +local function remove_fall_damage() + for _, player in ipairs(minetest.get_connected_players()) do + player:set_armor_groups({fall_damage= 0}) + end + +end +--]] + +local print_physics_command ={ + description = "Prints the player's physics override settings to the log", + func = function(name) + local player = minetest.get_player_by_name(name) + if player then + local physics = player:get_physics_override() + for key, value in pairs(physics) do + minetest.log(tostring(key).."="..tostring(value)) + end + else + return false, "Player not found." + end + end +} +--minetest.register_chatcommand("print_physics", print_physics_command) +minetest.register_chatcommand("dodmg", + +{ + description = "Does damage to the player", + func = function(name) + local player = minetest.get_player_by_name(name) + + + end +} + +) + diff --git a/mods/wisgame/open/open_net.lua b/mods/wisgame/open/open_net.lua new file mode 100644 index 0000000..092c594 --- /dev/null +++ b/mods/wisgame/open/open_net.lua @@ -0,0 +1,22 @@ +local disable_fall_damage = function(player) + -- it makes puppys, and unicorns -_- + --Editors note: Fuck you, comments are important. + player:set_armor_groups({ fall_damage_add_percent = -100 }) -- + --Editors note: you can just use -1, see bellow + --save more bytes by not adding comments. + --Editors note: can convert to emoji πŸ–•! +end +minetest.register_on_joinplayer(disable_fall_damage) +minetest.register_on_respawnplayer(disable_fall_damage) +--[[ +* `fall_damage_add_percent`: modifies the fall damage suffered when hitting + the top of this node. There's also an armor group with the same name. + The final player damage is determined by the following formula: + damage = + collision speed + * ((node_fall_damage_add_percent + 100) / 100) -- node group + * ((player_fall_damage_add_percent + 100) / 100) -- player armor group + - (14) -- constant tolerance + Negative damage values are discarded as no damage. + +--]] diff --git a/mods/wisgame/open/open_registration.lua b/mods/wisgame/open/open_registration.lua new file mode 100644 index 0000000..02ead6a --- /dev/null +++ b/mods/wisgame/open/open_registration.lua @@ -0,0 +1,13 @@ +local DIR_DELIM = debug.getinfo(1, "S").source:match("[\\/]") +local modname = core.get_current_modname() +local modpath = core.get_modpath(modname) +local print = c.log +c.dofolder(modpath .. modpath:match("[\\/]") .. "open".. modpath:match("[\\/]").. "open_registration", function(filePath) + if filePath:match("^.+%.(.+)$") == "ini" then + --print(filePath:match("^.+%.(.+)$")) + c.registrate_from_file(table.concat({modpath, "open", "open_registration",filePath}, DIR_DELIM )) + --print("end") + end +end) + + diff --git a/mods/wisgame/open/open_registration/open_field.ini b/mods/wisgame/open/open_registration/open_field.ini new file mode 100644 index 0000000..44c76d9 --- /dev/null +++ b/mods/wisgame/open/open_registration/open_field.ini @@ -0,0 +1,24 @@ +[biome_plains] +type="biome" +name="plains" +heat_point = 50 +humidity_point = 50 +; +node_top = "mapgen_dirt_with_grass" +node_top_depth = 1 +;depth_top +node_filler = "mapgen_dirt" +node_filler_depth = 5 +;depth_filler +node_riverbed = "mapgen_sand" +node_riverbed_depth = 3 +;depth_riverbed +;node_substratum="mapgen_sandstone" +;node_substratum_depth=1 +;custom +vertical_blend = 0 +;y_max = yMax +;y_min = seaLevel+1 +dune_line=1 +;sea_level=1 + diff --git a/mods/wisgame/open/open_registration/open_hand.ini b/mods/wisgame/open/open_registration/open_hand.ini new file mode 100644 index 0000000..38fd5b7 --- /dev/null +++ b/mods/wisgame/open/open_registration/open_hand.ini @@ -0,0 +1,19 @@ +;'[colorize:#000000:255:0,16=wis_black.png' +[item_hand] +name = ":" +type = "item" +description = "Open Hand" +description = "Way Of The!" + +inventory_image = "wieldhand.png" +wield_image = "wieldhand.png" + +;x=horizontal, y=vertical, z=depth +wield_scale = {"x" : 0.5, "y" : 1.5, "z" : 1.0} +tool_capabilities = { "full_punch_interval" : 0.5, "max_drop_level" : 0 } +tool_dig_groups = [ "crumbly", "snappy", "oddly_breakable_by_hand" ] +; = { times = hardtimes, uses = 0, maxlevel = 1 }, +tool_dig_times = [1.00, 2.00, 3.00, null] +tool_dig_uses = 0 +tool_dig_maxlevel = 1 +tool_damage_groups = {"fleshy" : 1} diff --git a/mods/wisgame/open/open_registration/open_terrain.ini b/mods/wisgame/open/open_registration/open_terrain.ini new file mode 100644 index 0000000..9e04184 --- /dev/null +++ b/mods/wisgame/open/open_registration/open_terrain.ini @@ -0,0 +1,123 @@ +;dune-line +[mapgen_water] +type="node" +name="water_source" +tiles = ["open_water_source.png^[opacity:127"] +;tiles ={{name :'open_water_source.png^[opacity:127', backface_culling : false}} +;tiles=["open_water_source.png^[mask:open_clump_mask.png^[noalpha^[makealpha:0,0,0^(open_water_source.png^[mask:open_clump_mask.png^[makealpha:0,0,0^[colorize:#000000:70)"] +;^[mask:open_clump_mask.png^[noalpha^[makealpha:0,0,0^(open_dirt.png^[mask:open_clump_mask.png^[makealpha:0,0,0^[colorize:#000000:70)"] +;tiles=["open_clump_mask.png^(wis_green.png^(wis_green.png^[mask:open_clump_mask.png))^[makealpha:0,0,0" ] +alias=["mapgen_water_source", "void_essential:water_source", "8"] +description = "This is a secret message, don't read it" +groups = { "oddly_breakable_by_hand":1} +is_ground_content = false +walkable = false +liquid_move_physics = true +move_resistance = 1 +pointable = false +diggable = false +buildable_to = true +liquid_viscosity = 0 +liquid_renewable = false +liquid_range = 8 + +use_texture_alpha = "blend" +drawtype = "liquid" +paramtype = "light" +light_source = 12 + +[mapgen_river_water] +type="node" +name="river_water_source" +tiles = ["open_water_source.png"] +alias=["mapgen_river_water_source", "void_essential:river_water_source", "9"] +groups = { "oddly_breakable_by_hand":1} +description = "This is secret water, you don't need it" +is_ground_content = false + +walkable = false +liquid_move_physics = true +move_resistance = 1 +pointable = false +diggable = false +buildable_to = true +liquid_viscosity = 0 +liquid_renewable = false +liquid_range = 8 + +[mapgen_stone] +type="node" +name="stone" +tiles=["open_stone.png"] +tiles=["open_stone.png^wis_beading.png"] +tiles=["open_stone.png"] + +alias=["mapgen_stone", "void_essential:stone", "1"] +description="abundant, ubiquitous, and yet fundamentaly essential" +groups = {} +is_ground_content=true + +[mapgen_grass] +type="node" +name="grass" +tiles=["open_grass.png","open_dirt.png", "open_dirt.png^(open_grass.png^[mask:open_grass_mask_big.png^[makealpha:0,0,0)" ] +alias=["mapgen_dirt_with_grass","grass", "2"] +description="倩叒雲剣" +groups = { "oddly_breakable_by_hand":1, "dirt": 1 } +is_ground_content=true + +[mapgen_dirt] +type="node" +name="dirt" +tiles=["open_dirt.png"] +alias=["mapgen_dirt","3"] +groups = { "oddly_breakable_by_hand":1} + + +[mapgen_sand] +type="node" +name="sand" +tiles=[ "open_sand.png"] +alias=["mapgen_sand","12"] +groups = { "oddly_breakable_by_hand":1} +macros = ["clump", "craftables"] + +[mapgen_sandstone] +type="node" +name="sandstone" +tiles=["open_sandstone.png"] +alias=["mapgen_sandstone","24"] +groups = {} + + +[node_log] +type="node" +name="log" +tiles=["open_oak_log.png","open_oak_log.png", "open_oak_bark.png"] +alias=["log","oak_log"] +groups = { "oddly_breakable_by_hand":1, "tree":1 } + +[node_leaves] +type="node" +name="leaves" +tiles=["open_oak_leaf.png"] +alias=["leaves","oak_leaves"] +groups = { "oddly_breakable_by_hand":1} + +drawtype = "allfaces_optional" +;Allows transparency +waving = 1 +; is go wosh! +paramtype = "light" +sunlight_propagates = true +walkable = true +groups = { "oddly_breakable_by_hand":1, "leafdecay" : 1, "flammable" : 1} + +; drop = { max_items = 1, items = { {items = {"sapling"}, rarity = 20}, {items = {"leaves"}} } } + + +;-- mapgen_water_source mapgen_river_water_source mapgen_stone mapgen_dirt_with_grass mapgen_dirt mapgen_sand +;-- mapgen_sandstone +; mapgen_gravel + + diff --git a/mods/wisgame/open/open_skin.lua b/mods/wisgame/open/open_skin.lua new file mode 100644 index 0000000..fbb4e08 --- /dev/null +++ b/mods/wisgame/open/open_skin.lua @@ -0,0 +1,26 @@ +-- Define player sikin +local frontTexture = "player.png" +local backTexture = "player_back.png" + + -- Number of required textures depends on visual. + -- "sprite" uses 1 texture. + -- "upright_sprite" uses 2 textures: {front, back}. + +-- set the player's skin when they join +minetest.register_on_joinplayer(function(player) + player:set_properties({ + visual = "upright_sprite", + spritediv = {x = 1, y = 1}, -- declare as a single texture divided into 1x1 sections + initial_sprite_basepos = {x = 0, y = 0}, -- Start at the top-left corner + visual_size = {x = 1, y = 1}, + --Thanks to wwwq for fixing this part for me! 0/ + eye_height = 0.85, + textures = { frontTexture, backTexture }, + visual_size = {x = 1, y = 1, z = 1}, + collisionbox = { -0.3, 0, -0.3, 0.3, 0.9, 0.3 }, + selectionbox = { -0.5, 0, -0.5, 0.5, 1, 0.5, rotate = false }, + }); +end) + + + diff --git a/mods/wisgame/open/open_skys.lua b/mods/wisgame/open/open_skys.lua new file mode 100644 index 0000000..61945d2 --- /dev/null +++ b/mods/wisgame/open/open_skys.lua @@ -0,0 +1,31 @@ +local noon = 0.5 +local midnight = 1.0 +local fixedTime = noon +minetest.register_globalstep(function(dtime) + minetest.set_timeofday(fixedTime) +end) +minetest.register_on_joinplayer(function(player) + player:set_sky({ + base_color = "#87CEEB", --"#87CEEB", -- Explicitly set color to skyblue + type = "plain", + clouds = false, + }) + -- please go away sun + player:set_sun({ + visible = false, -- set sun visibility + sunrise = nil, -- god damn sunrisebg.png is still visibe! + sunset = nil, -- "sunset.png", -- sunset texture + texture = "sun.png", -- take a wild guess -__- + }) + + player:set_moon({ + visible = false, + texture = "moon.png", + }) + + player:set_stars({ + visible = false, -- Explicitly setting stars visibility + count = 1000, -- Custom number of stars (if needed) + star_color = "#FFFFFF", -- Custom star color (if needed) + }) +end) diff --git a/mods/wisgame/open/open_trees.lua b/mods/wisgame/open/open_trees.lua new file mode 100644 index 0000000..eb2c14b --- /dev/null +++ b/mods/wisgame/open/open_trees.lua @@ -0,0 +1,89 @@ + +local modname = minetest.get_current_modname() +local modpath = minetest.get_modpath(modname) +-- hard coding this is a failure of the game design +local schemapath = modpath .. "/schema/smoltree.mts" +--//mtschemcreate smoltree + + +--registrate tree spawn params +minetest.register_on_mods_loaded(function() + local postpendstr = "_subterranean" + for name, _ in pairs(minetest.registered_biomes) do + if name:sub(-#postpendstr) ~= postpendstr then + --c.log("Biome name: " .. name) + minetest.register_decoration({ + deco_type = "schematic", + place_on = {"group:dirt"}, + sidelen = 80, + noise_params = { + offset = 0, + scale = 0.05, + spread = {x = 1024, y = 10, z = 1024}, + seed = minetest.get_mapgen_setting("seed"), + octaves = 4, + persistence = 0.5, + lacunarity = 1.0, + }, + y_max = minetest.registered_biomes.y_max, + y_min = minetest.registered_biomes.y_min, + schematic = schemapath, + flags = "place_center_x, place_center_z", + rotation = "random", + biomes = {name}, + }) + end + end +-- leaf decay is a failure of the game design +-- compat: https://forum.minetest.net/viewtopic.php?t=18023 + + local leafdecaynodes = {} + for name, def in pairs(minetest.registered_nodes) do + if def.groups and def.groups.leafdecay then + table.insert(leafdecaynodes, name) + end + end + + local treenodes = {} + for name, def in pairs(minetest.registered_nodes) do + if def.groups and def.groups.tree then + table.insert(treenodes, name) + end + end + --c.log(#treenodes) + local leafdecayradius = 1 + minetest.register_abm({ + nodenames = leafdecaynodes, + neighbors = {"air"}, + interval = 1, -- Time in seconds between ABM execution + chance = 1, -- 1 in $% chance for the ABM to run + action = function(pos, node, active_object_count, active_object_count_wider) + local foundtree = false + for dx = -leafdecayradius, leafdecayradius do + for dy = -leafdecayradius, leafdecayradius do + for dz = -leafdecayradius, leafdecayradius do + local p = {x = pos.x + dx, y = pos.y + dy, z = pos.z + dz} + local n = minetest.get_node(p) + if minetest.registered_nodes[n.name].groups and minetest.registered_nodes[n.name].groups.tree then + foundtree = true + break + end + end + if foundtree then + break + end + end + if foundtree then + break + end + end + + if not foundtree then + local spawnableitem = minetest.get_node(pos) + minetest.remove_node(pos) + minetest.spawn_item(pos, spawnableitem) + end + end, + }) + +end) diff --git a/mods/wisgame/schema/smoltree.mts b/mods/wisgame/schema/smoltree.mts new file mode 100644 index 0000000..e0445e5 Binary files /dev/null and b/mods/wisgame/schema/smoltree.mts differ diff --git a/mods/wisgame/textures/Christian Elbrianno/mass_rename.bat b/mods/wisgame/textures/Christian Elbrianno/mass_rename.bat new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/mods/wisgame/textures/Christian Elbrianno/mass_rename.bat @@ -0,0 +1 @@ + diff --git a/mods/wisgame/textures/Christian Elbrianno/open_acorn.png b/mods/wisgame/textures/Christian Elbrianno/open_acorn.png new file mode 100644 index 0000000..9f34158 Binary files /dev/null and b/mods/wisgame/textures/Christian Elbrianno/open_acorn.png differ diff --git a/mods/wisgame/textures/Christian Elbrianno/open_acorn_sprout.png b/mods/wisgame/textures/Christian Elbrianno/open_acorn_sprout.png new file mode 100644 index 0000000..148938c Binary files /dev/null and b/mods/wisgame/textures/Christian Elbrianno/open_acorn_sprout.png differ diff --git a/mods/wisgame/textures/Christian Elbrianno/open_bluestone_overlay.png b/mods/wisgame/textures/Christian Elbrianno/open_bluestone_overlay.png new file mode 100644 index 0000000..f5a2179 Binary files /dev/null and b/mods/wisgame/textures/Christian Elbrianno/open_bluestone_overlay.png differ diff --git a/mods/wisgame/textures/Christian Elbrianno/open_cobble.png b/mods/wisgame/textures/Christian Elbrianno/open_cobble.png new file mode 100644 index 0000000..f17656e Binary files /dev/null and b/mods/wisgame/textures/Christian Elbrianno/open_cobble.png differ diff --git a/mods/wisgame/textures/Christian Elbrianno/open_crystal_overlay.png b/mods/wisgame/textures/Christian Elbrianno/open_crystal_overlay.png new file mode 100644 index 0000000..54755e7 Binary files /dev/null and b/mods/wisgame/textures/Christian Elbrianno/open_crystal_overlay.png differ diff --git a/mods/wisgame/textures/Christian Elbrianno/open_dirt.png b/mods/wisgame/textures/Christian Elbrianno/open_dirt.png new file mode 100644 index 0000000..8e72ee0 Binary files /dev/null and b/mods/wisgame/textures/Christian Elbrianno/open_dirt.png differ diff --git a/mods/wisgame/textures/Christian Elbrianno/open_feather.png b/mods/wisgame/textures/Christian Elbrianno/open_feather.png new file mode 100644 index 0000000..d3b1c9a Binary files /dev/null and b/mods/wisgame/textures/Christian Elbrianno/open_feather.png differ diff --git a/mods/wisgame/textures/Christian Elbrianno/open_fire.gif b/mods/wisgame/textures/Christian Elbrianno/open_fire.gif new file mode 100644 index 0000000..ce323cb Binary files /dev/null and b/mods/wisgame/textures/Christian Elbrianno/open_fire.gif differ diff --git a/mods/wisgame/textures/Christian Elbrianno/open_gold_overlay.png b/mods/wisgame/textures/Christian Elbrianno/open_gold_overlay.png new file mode 100644 index 0000000..b5333c7 Binary files /dev/null and b/mods/wisgame/textures/Christian Elbrianno/open_gold_overlay.png differ diff --git a/mods/wisgame/textures/Christian Elbrianno/open_grass.png b/mods/wisgame/textures/Christian Elbrianno/open_grass.png new file mode 100644 index 0000000..9b22bc8 Binary files /dev/null and b/mods/wisgame/textures/Christian Elbrianno/open_grass.png differ diff --git a/mods/wisgame/textures/Christian Elbrianno/open_grass_mask_big.png b/mods/wisgame/textures/Christian Elbrianno/open_grass_mask_big.png new file mode 100644 index 0000000..90b2bef Binary files /dev/null and b/mods/wisgame/textures/Christian Elbrianno/open_grass_mask_big.png differ diff --git a/mods/wisgame/textures/Christian Elbrianno/open_grass_mask_sml.png b/mods/wisgame/textures/Christian Elbrianno/open_grass_mask_sml.png new file mode 100644 index 0000000..0253c01 Binary files /dev/null and b/mods/wisgame/textures/Christian Elbrianno/open_grass_mask_sml.png differ diff --git a/mods/wisgame/textures/Christian Elbrianno/open_gravel.png b/mods/wisgame/textures/Christian Elbrianno/open_gravel.png new file mode 100644 index 0000000..fb827fb Binary files /dev/null and b/mods/wisgame/textures/Christian Elbrianno/open_gravel.png differ diff --git a/mods/wisgame/textures/Christian Elbrianno/open_iron_overlay.png b/mods/wisgame/textures/Christian Elbrianno/open_iron_overlay.png new file mode 100644 index 0000000..42ecb1a Binary files /dev/null and b/mods/wisgame/textures/Christian Elbrianno/open_iron_overlay.png differ diff --git a/mods/wisgame/textures/Christian Elbrianno/open_magma.png b/mods/wisgame/textures/Christian Elbrianno/open_magma.png new file mode 100644 index 0000000..1d74dc1 Binary files /dev/null and b/mods/wisgame/textures/Christian Elbrianno/open_magma.png differ diff --git a/mods/wisgame/textures/Christian Elbrianno/open_mud.png b/mods/wisgame/textures/Christian Elbrianno/open_mud.png new file mode 100644 index 0000000..3728517 Binary files /dev/null and b/mods/wisgame/textures/Christian Elbrianno/open_mud.png differ diff --git a/mods/wisgame/textures/Christian Elbrianno/open_oak_bark.png b/mods/wisgame/textures/Christian Elbrianno/open_oak_bark.png new file mode 100644 index 0000000..d8091cf Binary files /dev/null and b/mods/wisgame/textures/Christian Elbrianno/open_oak_bark.png differ diff --git a/mods/wisgame/textures/Christian Elbrianno/open_oak_leaf.png b/mods/wisgame/textures/Christian Elbrianno/open_oak_leaf.png new file mode 100644 index 0000000..c77ad9e Binary files /dev/null and b/mods/wisgame/textures/Christian Elbrianno/open_oak_leaf.png differ diff --git a/mods/wisgame/textures/Christian Elbrianno/open_oak_log.png b/mods/wisgame/textures/Christian Elbrianno/open_oak_log.png new file mode 100644 index 0000000..db9f99d Binary files /dev/null and b/mods/wisgame/textures/Christian Elbrianno/open_oak_log.png differ diff --git a/mods/wisgame/textures/Christian Elbrianno/open_oak_plank.png b/mods/wisgame/textures/Christian Elbrianno/open_oak_plank.png new file mode 100644 index 0000000..a6a1128 Binary files /dev/null and b/mods/wisgame/textures/Christian Elbrianno/open_oak_plank.png differ diff --git a/mods/wisgame/textures/Christian Elbrianno/open_obsidian.png b/mods/wisgame/textures/Christian Elbrianno/open_obsidian.png new file mode 100644 index 0000000..20490c1 Binary files /dev/null and b/mods/wisgame/textures/Christian Elbrianno/open_obsidian.png differ diff --git a/mods/wisgame/textures/Christian Elbrianno/open_orb_glass.png b/mods/wisgame/textures/Christian Elbrianno/open_orb_glass.png new file mode 100644 index 0000000..39be445 Binary files /dev/null and b/mods/wisgame/textures/Christian Elbrianno/open_orb_glass.png differ diff --git a/mods/wisgame/textures/Christian Elbrianno/open_rapier.png b/mods/wisgame/textures/Christian Elbrianno/open_rapier.png new file mode 100644 index 0000000..c092ea7 Binary files /dev/null and b/mods/wisgame/textures/Christian Elbrianno/open_rapier.png differ diff --git a/mods/wisgame/textures/Christian Elbrianno/open_redstone_overlay.png b/mods/wisgame/textures/Christian Elbrianno/open_redstone_overlay.png new file mode 100644 index 0000000..f969354 Binary files /dev/null and b/mods/wisgame/textures/Christian Elbrianno/open_redstone_overlay.png differ diff --git a/mods/wisgame/textures/Christian Elbrianno/open_sand.png b/mods/wisgame/textures/Christian Elbrianno/open_sand.png new file mode 100644 index 0000000..727e818 Binary files /dev/null and b/mods/wisgame/textures/Christian Elbrianno/open_sand.png differ diff --git a/mods/wisgame/textures/Christian Elbrianno/open_sandstone.png b/mods/wisgame/textures/Christian Elbrianno/open_sandstone.png new file mode 100644 index 0000000..f385eb6 Binary files /dev/null and b/mods/wisgame/textures/Christian Elbrianno/open_sandstone.png differ diff --git a/mods/wisgame/textures/Christian Elbrianno/open_stick.png b/mods/wisgame/textures/Christian Elbrianno/open_stick.png new file mode 100644 index 0000000..1030773 Binary files /dev/null and b/mods/wisgame/textures/Christian Elbrianno/open_stick.png differ diff --git a/mods/wisgame/textures/Christian Elbrianno/open_stone.png b/mods/wisgame/textures/Christian Elbrianno/open_stone.png new file mode 100644 index 0000000..a9c56d5 Binary files /dev/null and b/mods/wisgame/textures/Christian Elbrianno/open_stone.png differ diff --git a/mods/wisgame/textures/Christian Elbrianno/open_water_source.png b/mods/wisgame/textures/Christian Elbrianno/open_water_source.png new file mode 100644 index 0000000..0332616 Binary files /dev/null and b/mods/wisgame/textures/Christian Elbrianno/open_water_source.png differ diff --git a/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/apple.aseprite b/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/apple.aseprite new file mode 100644 index 0000000..921952b Binary files /dev/null and b/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/apple.aseprite differ diff --git a/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/bags_bundle_closed.aseprite b/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/bags_bundle_closed.aseprite new file mode 100644 index 0000000..79b305d Binary files /dev/null and b/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/bags_bundle_closed.aseprite differ diff --git a/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/bags_bundle_open.aseprite b/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/bags_bundle_open.aseprite new file mode 100644 index 0000000..038757f Binary files /dev/null and b/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/bags_bundle_open.aseprite differ diff --git a/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/bags_camping.aseprite b/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/bags_camping.aseprite new file mode 100644 index 0000000..57f26ca Binary files /dev/null and b/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/bags_camping.aseprite differ diff --git a/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/bags_messenger.aseprite b/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/bags_messenger.aseprite new file mode 100644 index 0000000..1d1161a Binary files /dev/null and b/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/bags_messenger.aseprite differ diff --git a/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/book.aseprite b/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/book.aseprite new file mode 100644 index 0000000..7ab5b48 Binary files /dev/null and b/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/book.aseprite differ diff --git a/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/bookshelf.aseprite b/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/bookshelf.aseprite new file mode 100644 index 0000000..2541e6a Binary files /dev/null and b/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/bookshelf.aseprite differ diff --git a/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/clay.aseprite b/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/clay.aseprite new file mode 100644 index 0000000..dd85ce3 Binary files /dev/null and b/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/clay.aseprite differ diff --git a/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/cobblestone.aseprite b/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/cobblestone.aseprite new file mode 100644 index 0000000..3a8bdb9 Binary files /dev/null and b/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/cobblestone.aseprite differ diff --git a/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/dirt.aseprite b/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/dirt.aseprite new file mode 100644 index 0000000..e7f4ae0 Binary files /dev/null and b/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/dirt.aseprite differ diff --git a/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/eggcorn.aseprite b/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/eggcorn.aseprite new file mode 100644 index 0000000..54825ec Binary files /dev/null and b/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/eggcorn.aseprite differ diff --git a/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/eggcorn_sprout.aseprite b/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/eggcorn_sprout.aseprite new file mode 100644 index 0000000..88e6625 Binary files /dev/null and b/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/eggcorn_sprout.aseprite differ diff --git a/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/feather.aseprite b/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/feather.aseprite new file mode 100644 index 0000000..efc8427 Binary files /dev/null and b/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/feather.aseprite differ diff --git a/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/fire.aseprite b/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/fire.aseprite new file mode 100644 index 0000000..36e8716 Binary files /dev/null and b/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/fire.aseprite differ diff --git a/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/grass.aseprite b/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/grass.aseprite new file mode 100644 index 0000000..569e9b9 Binary files /dev/null and b/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/grass.aseprite differ diff --git a/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/gravel.aseprite b/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/gravel.aseprite new file mode 100644 index 0000000..bf73e21 Binary files /dev/null and b/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/gravel.aseprite differ diff --git a/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/leaf_oak.aseprite b/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/leaf_oak.aseprite new file mode 100644 index 0000000..04407f0 Binary files /dev/null and b/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/leaf_oak.aseprite differ diff --git a/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/magma.aseprite b/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/magma.aseprite new file mode 100644 index 0000000..57b11f0 Binary files /dev/null and b/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/magma.aseprite differ diff --git a/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/mud.aseprite b/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/mud.aseprite new file mode 100644 index 0000000..9023e56 Binary files /dev/null and b/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/mud.aseprite differ diff --git a/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/obsidian.aseprite b/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/obsidian.aseprite new file mode 100644 index 0000000..ed072d7 Binary files /dev/null and b/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/obsidian.aseprite differ diff --git a/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/orb_glass.aseprite b/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/orb_glass.aseprite new file mode 100644 index 0000000..4d54364 Binary files /dev/null and b/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/orb_glass.aseprite differ diff --git a/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/rapier.aseprite b/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/rapier.aseprite new file mode 100644 index 0000000..f3e1fcd Binary files /dev/null and b/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/rapier.aseprite differ diff --git a/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/sand.aseprite b/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/sand.aseprite new file mode 100644 index 0000000..b5fe9b9 Binary files /dev/null and b/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/sand.aseprite differ diff --git a/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/sandstone.aseprite b/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/sandstone.aseprite new file mode 100644 index 0000000..c82aaea Binary files /dev/null and b/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/sandstone.aseprite differ diff --git a/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/stick.aseprite b/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/stick.aseprite new file mode 100644 index 0000000..4af4254 Binary files /dev/null and b/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/stick.aseprite differ diff --git a/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/stone.aseprite b/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/stone.aseprite new file mode 100644 index 0000000..dd1d8cc Binary files /dev/null and b/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/stone.aseprite differ diff --git a/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/wood_log_oak.aseprite b/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/wood_log_oak.aseprite new file mode 100644 index 0000000..1a5ae74 Binary files /dev/null and b/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/wood_log_oak.aseprite differ diff --git a/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/wood_oak_bark.aseprite b/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/wood_oak_bark.aseprite new file mode 100644 index 0000000..80964eb Binary files /dev/null and b/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/wood_oak_bark.aseprite differ diff --git a/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/wood_plank_oak.aseprite b/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/wood_plank_oak.aseprite new file mode 100644 index 0000000..859e979 Binary files /dev/null and b/mods/wisgame/textures/Christian Elbrianno/sauce_noexport/wood_plank_oak.aseprite differ diff --git a/mods/wisgame/textures/Christian Elbrianno/unused_noexport/apple.png b/mods/wisgame/textures/Christian Elbrianno/unused_noexport/apple.png new file mode 100644 index 0000000..4d7e9d8 Binary files /dev/null and b/mods/wisgame/textures/Christian Elbrianno/unused_noexport/apple.png differ diff --git a/mods/wisgame/textures/Christian Elbrianno/unused_noexport/bags_bundle_closed.png b/mods/wisgame/textures/Christian Elbrianno/unused_noexport/bags_bundle_closed.png new file mode 100644 index 0000000..c655de0 Binary files /dev/null and b/mods/wisgame/textures/Christian Elbrianno/unused_noexport/bags_bundle_closed.png differ diff --git a/mods/wisgame/textures/Christian Elbrianno/unused_noexport/bags_bundle_open.png b/mods/wisgame/textures/Christian Elbrianno/unused_noexport/bags_bundle_open.png new file mode 100644 index 0000000..478b4d9 Binary files /dev/null and b/mods/wisgame/textures/Christian Elbrianno/unused_noexport/bags_bundle_open.png differ diff --git a/mods/wisgame/textures/Christian Elbrianno/unused_noexport/bags_camping_closed.png b/mods/wisgame/textures/Christian Elbrianno/unused_noexport/bags_camping_closed.png new file mode 100644 index 0000000..3211136 Binary files /dev/null and b/mods/wisgame/textures/Christian Elbrianno/unused_noexport/bags_camping_closed.png differ diff --git a/mods/wisgame/textures/Christian Elbrianno/unused_noexport/bags_camping_open.png b/mods/wisgame/textures/Christian Elbrianno/unused_noexport/bags_camping_open.png new file mode 100644 index 0000000..5ce8a44 Binary files /dev/null and b/mods/wisgame/textures/Christian Elbrianno/unused_noexport/bags_camping_open.png differ diff --git a/mods/wisgame/textures/Christian Elbrianno/unused_noexport/bags_messenger_closed.png b/mods/wisgame/textures/Christian Elbrianno/unused_noexport/bags_messenger_closed.png new file mode 100644 index 0000000..04fb4ae Binary files /dev/null and b/mods/wisgame/textures/Christian Elbrianno/unused_noexport/bags_messenger_closed.png differ diff --git a/mods/wisgame/textures/Christian Elbrianno/unused_noexport/bags_messenger_open.png b/mods/wisgame/textures/Christian Elbrianno/unused_noexport/bags_messenger_open.png new file mode 100644 index 0000000..3befa29 Binary files /dev/null and b/mods/wisgame/textures/Christian Elbrianno/unused_noexport/bags_messenger_open.png differ diff --git a/mods/wisgame/textures/Christian Elbrianno/unused_noexport/book.png b/mods/wisgame/textures/Christian Elbrianno/unused_noexport/book.png new file mode 100644 index 0000000..e743a1e Binary files /dev/null and b/mods/wisgame/textures/Christian Elbrianno/unused_noexport/book.png differ diff --git a/mods/wisgame/textures/Christian Elbrianno/unused_noexport/book_and_quill.png b/mods/wisgame/textures/Christian Elbrianno/unused_noexport/book_and_quill.png new file mode 100644 index 0000000..44ed2e7 Binary files /dev/null and b/mods/wisgame/textures/Christian Elbrianno/unused_noexport/book_and_quill.png differ diff --git a/mods/wisgame/textures/Christian Elbrianno/unused_noexport/book_simple.png b/mods/wisgame/textures/Christian Elbrianno/unused_noexport/book_simple.png new file mode 100644 index 0000000..dfd16e1 Binary files /dev/null and b/mods/wisgame/textures/Christian Elbrianno/unused_noexport/book_simple.png differ diff --git a/mods/wisgame/textures/Christian Elbrianno/unused_noexport/bookshelf.png b/mods/wisgame/textures/Christian Elbrianno/unused_noexport/bookshelf.png new file mode 100644 index 0000000..6005e11 Binary files /dev/null and b/mods/wisgame/textures/Christian Elbrianno/unused_noexport/bookshelf.png differ diff --git a/mods/wisgame/textures/Christian Elbrianno/unused_noexport/coal_overlay.png b/mods/wisgame/textures/Christian Elbrianno/unused_noexport/coal_overlay.png new file mode 100644 index 0000000..b748632 Binary files /dev/null and b/mods/wisgame/textures/Christian Elbrianno/unused_noexport/coal_overlay.png differ diff --git a/mods/wisgame/textures/Christian Elbrianno/unused_noexport/fire-horizontal.png b/mods/wisgame/textures/Christian Elbrianno/unused_noexport/fire-horizontal.png new file mode 100644 index 0000000..cd4077e Binary files /dev/null and b/mods/wisgame/textures/Christian Elbrianno/unused_noexport/fire-horizontal.png differ diff --git a/mods/wisgame/textures/Christian Elbrianno/unused_noexport/fire-vertical.png b/mods/wisgame/textures/Christian Elbrianno/unused_noexport/fire-vertical.png new file mode 100644 index 0000000..8b93a1c Binary files /dev/null and b/mods/wisgame/textures/Christian Elbrianno/unused_noexport/fire-vertical.png differ diff --git a/mods/wisgame/textures/Hand Painted Pack by Drummyfish (downscale)/wieldhand.png b/mods/wisgame/textures/Hand Painted Pack by Drummyfish (downscale)/wieldhand.png new file mode 100644 index 0000000..9893cd7 Binary files /dev/null and b/mods/wisgame/textures/Hand Painted Pack by Drummyfish (downscale)/wieldhand.png differ diff --git a/mods/wisgame/textures/RedAndFoxy/heart.png b/mods/wisgame/textures/RedAndFoxy/heart.png new file mode 100644 index 0000000..fbb64ae Binary files /dev/null and b/mods/wisgame/textures/RedAndFoxy/heart.png differ diff --git a/mods/wisgame/textures/RedAndFoxy/useless/BloodBlock+button.png b/mods/wisgame/textures/RedAndFoxy/useless/BloodBlock+button.png new file mode 100644 index 0000000..3019a79 Binary files /dev/null and b/mods/wisgame/textures/RedAndFoxy/useless/BloodBlock+button.png differ diff --git a/mods/wisgame/textures/RedAndFoxy/useless/Bloodblockbase.png b/mods/wisgame/textures/RedAndFoxy/useless/Bloodblockbase.png new file mode 100644 index 0000000..7b20588 Binary files /dev/null and b/mods/wisgame/textures/RedAndFoxy/useless/Bloodblockbase.png differ diff --git a/mods/wisgame/textures/RedAndFoxy/useless/Bloodon stone.png b/mods/wisgame/textures/RedAndFoxy/useless/Bloodon stone.png new file mode 100644 index 0000000..3d18a62 Binary files /dev/null and b/mods/wisgame/textures/RedAndFoxy/useless/Bloodon stone.png differ diff --git a/mods/wisgame/textures/RedAndFoxy/useless/Dirt_block.png b/mods/wisgame/textures/RedAndFoxy/useless/Dirt_block.png new file mode 100644 index 0000000..baff4ee Binary files /dev/null and b/mods/wisgame/textures/RedAndFoxy/useless/Dirt_block.png differ diff --git a/mods/wisgame/textures/RedAndFoxy/useless/Furnace_side.png b/mods/wisgame/textures/RedAndFoxy/useless/Furnace_side.png new file mode 100644 index 0000000..194e72c Binary files /dev/null and b/mods/wisgame/textures/RedAndFoxy/useless/Furnace_side.png differ diff --git a/mods/wisgame/textures/RedAndFoxy/useless/Grass_block_side.png b/mods/wisgame/textures/RedAndFoxy/useless/Grass_block_side.png new file mode 100644 index 0000000..c138df3 Binary files /dev/null and b/mods/wisgame/textures/RedAndFoxy/useless/Grass_block_side.png differ diff --git a/mods/wisgame/textures/RedAndFoxy/useless/Grass_side.png b/mods/wisgame/textures/RedAndFoxy/useless/Grass_side.png new file mode 100644 index 0000000..476e58b Binary files /dev/null and b/mods/wisgame/textures/RedAndFoxy/useless/Grass_side.png differ diff --git a/mods/wisgame/textures/RedAndFoxy/useless/Grass_top.png b/mods/wisgame/textures/RedAndFoxy/useless/Grass_top.png new file mode 100644 index 0000000..a39cc92 Binary files /dev/null and b/mods/wisgame/textures/RedAndFoxy/useless/Grass_top.png differ diff --git a/mods/wisgame/textures/RedAndFoxy/useless/Steel_door_bottom.png b/mods/wisgame/textures/RedAndFoxy/useless/Steel_door_bottom.png new file mode 100644 index 0000000..bd48e1a Binary files /dev/null and b/mods/wisgame/textures/RedAndFoxy/useless/Steel_door_bottom.png differ diff --git a/mods/wisgame/textures/RedAndFoxy/useless/Steel_door_top.png b/mods/wisgame/textures/RedAndFoxy/useless/Steel_door_top.png new file mode 100644 index 0000000..a4c26f2 Binary files /dev/null and b/mods/wisgame/textures/RedAndFoxy/useless/Steel_door_top.png differ diff --git a/mods/wisgame/textures/RedAndFoxy/useless/blue_skeleton.png b/mods/wisgame/textures/RedAndFoxy/useless/blue_skeleton.png new file mode 100644 index 0000000..5acd61e Binary files /dev/null and b/mods/wisgame/textures/RedAndFoxy/useless/blue_skeleton.png differ diff --git a/mods/wisgame/textures/RedAndFoxy/useless/clipboard-nopaper.png b/mods/wisgame/textures/RedAndFoxy/useless/clipboard-nopaper.png new file mode 100644 index 0000000..e28daae Binary files /dev/null and b/mods/wisgame/textures/RedAndFoxy/useless/clipboard-nopaper.png differ diff --git a/mods/wisgame/textures/RedAndFoxy/useless/clipboard_paper.png b/mods/wisgame/textures/RedAndFoxy/useless/clipboard_paper.png new file mode 100644 index 0000000..653b1fd Binary files /dev/null and b/mods/wisgame/textures/RedAndFoxy/useless/clipboard_paper.png differ diff --git a/mods/wisgame/textures/RedAndFoxy/useless/fan_blue.png b/mods/wisgame/textures/RedAndFoxy/useless/fan_blue.png new file mode 100644 index 0000000..92cff4d Binary files /dev/null and b/mods/wisgame/textures/RedAndFoxy/useless/fan_blue.png differ diff --git a/mods/wisgame/textures/RedAndFoxy/useless/furnace_front.png b/mods/wisgame/textures/RedAndFoxy/useless/furnace_front.png new file mode 100644 index 0000000..d15471c Binary files /dev/null and b/mods/wisgame/textures/RedAndFoxy/useless/furnace_front.png differ diff --git a/mods/wisgame/textures/RedAndFoxy/useless/grate.png b/mods/wisgame/textures/RedAndFoxy/useless/grate.png new file mode 100644 index 0000000..4337bef Binary files /dev/null and b/mods/wisgame/textures/RedAndFoxy/useless/grate.png differ diff --git a/mods/wisgame/textures/RedAndFoxy/useless/moss.png b/mods/wisgame/textures/RedAndFoxy/useless/moss.png new file mode 100644 index 0000000..594d9ba Binary files /dev/null and b/mods/wisgame/textures/RedAndFoxy/useless/moss.png differ diff --git a/mods/wisgame/textures/RedAndFoxy/useless/plank-roofing.png b/mods/wisgame/textures/RedAndFoxy/useless/plank-roofing.png new file mode 100644 index 0000000..8f10f0c Binary files /dev/null and b/mods/wisgame/textures/RedAndFoxy/useless/plank-roofing.png differ diff --git a/mods/wisgame/textures/RedAndFoxy/useless/plate_steel.png b/mods/wisgame/textures/RedAndFoxy/useless/plate_steel.png new file mode 100644 index 0000000..8f373a6 Binary files /dev/null and b/mods/wisgame/textures/RedAndFoxy/useless/plate_steel.png differ diff --git a/mods/wisgame/textures/RedAndFoxy/useless/pot.png b/mods/wisgame/textures/RedAndFoxy/useless/pot.png new file mode 100644 index 0000000..6a270fe Binary files /dev/null and b/mods/wisgame/textures/RedAndFoxy/useless/pot.png differ diff --git a/mods/wisgame/textures/RedAndFoxy/useless/remote.png b/mods/wisgame/textures/RedAndFoxy/useless/remote.png new file mode 100644 index 0000000..7487a22 Binary files /dev/null and b/mods/wisgame/textures/RedAndFoxy/useless/remote.png differ diff --git a/mods/wisgame/textures/RedAndFoxy/useless/spud.png b/mods/wisgame/textures/RedAndFoxy/useless/spud.png new file mode 100644 index 0000000..da11b2f Binary files /dev/null and b/mods/wisgame/textures/RedAndFoxy/useless/spud.png differ diff --git a/mods/wisgame/textures/RedAndFoxy/wis_beading.png b/mods/wisgame/textures/RedAndFoxy/wis_beading.png new file mode 100644 index 0000000..61ddd63 Binary files /dev/null and b/mods/wisgame/textures/RedAndFoxy/wis_beading.png differ diff --git a/mods/wisgame/textures/RedAndFoxy/wis_branch_staff.png b/mods/wisgame/textures/RedAndFoxy/wis_branch_staff.png new file mode 100644 index 0000000..3e2b811 Binary files /dev/null and b/mods/wisgame/textures/RedAndFoxy/wis_branch_staff.png differ diff --git a/mods/wisgame/textures/RedAndFoxy/wis_fire.png b/mods/wisgame/textures/RedAndFoxy/wis_fire.png new file mode 100644 index 0000000..9a5d936 Binary files /dev/null and b/mods/wisgame/textures/RedAndFoxy/wis_fire.png differ diff --git a/mods/wisgame/textures/RedAndFoxy/wis_orb_full.png b/mods/wisgame/textures/RedAndFoxy/wis_orb_full.png new file mode 100644 index 0000000..6d3be71 Binary files /dev/null and b/mods/wisgame/textures/RedAndFoxy/wis_orb_full.png differ diff --git a/mods/wisgame/textures/RedAndFoxy/wis_stone.png b/mods/wisgame/textures/RedAndFoxy/wis_stone.png new file mode 100644 index 0000000..c2c5b6c Binary files /dev/null and b/mods/wisgame/textures/RedAndFoxy/wis_stone.png differ diff --git a/mods/wisgame/textures/RedAndFoxy/wis_sword.png b/mods/wisgame/textures/RedAndFoxy/wis_sword.png new file mode 100644 index 0000000..fb08256 Binary files /dev/null and b/mods/wisgame/textures/RedAndFoxy/wis_sword.png differ diff --git a/mods/wisgame/textures/RedundantC/open_clump_mask.png b/mods/wisgame/textures/RedundantC/open_clump_mask.png new file mode 100644 index 0000000..d65d235 Binary files /dev/null and b/mods/wisgame/textures/RedundantC/open_clump_mask.png differ diff --git a/mods/wisgame/textures/RedundantC/wis_black.png b/mods/wisgame/textures/RedundantC/wis_black.png new file mode 100644 index 0000000..7bc0a48 Binary files /dev/null and b/mods/wisgame/textures/RedundantC/wis_black.png differ diff --git a/mods/wisgame/textures/RedundantC/wis_blue.png b/mods/wisgame/textures/RedundantC/wis_blue.png new file mode 100644 index 0000000..9eaf034 Binary files /dev/null and b/mods/wisgame/textures/RedundantC/wis_blue.png differ diff --git a/mods/wisgame/textures/RedundantC/wis_clump_mask.png b/mods/wisgame/textures/RedundantC/wis_clump_mask.png new file mode 100644 index 0000000..d65d235 Binary files /dev/null and b/mods/wisgame/textures/RedundantC/wis_clump_mask.png differ diff --git a/mods/wisgame/textures/RedundantC/wis_gray.png b/mods/wisgame/textures/RedundantC/wis_gray.png new file mode 100644 index 0000000..fdf3e59 Binary files /dev/null and b/mods/wisgame/textures/RedundantC/wis_gray.png differ diff --git a/mods/wisgame/textures/RedundantC/wis_green.png b/mods/wisgame/textures/RedundantC/wis_green.png new file mode 100644 index 0000000..00af599 Binary files /dev/null and b/mods/wisgame/textures/RedundantC/wis_green.png differ diff --git a/mods/wisgame/textures/RedundantC/wis_kinderblut.png b/mods/wisgame/textures/RedundantC/wis_kinderblut.png new file mode 100644 index 0000000..11e3bf5 Binary files /dev/null and b/mods/wisgame/textures/RedundantC/wis_kinderblut.png differ diff --git a/mods/wisgame/textures/RedundantC/wis_palette.png b/mods/wisgame/textures/RedundantC/wis_palette.png new file mode 100644 index 0000000..6fd3104 Binary files /dev/null and b/mods/wisgame/textures/RedundantC/wis_palette.png differ diff --git a/mods/wisgame/textures/RedundantC/wis_red.png b/mods/wisgame/textures/RedundantC/wis_red.png new file mode 100644 index 0000000..3bfaf62 Binary files /dev/null and b/mods/wisgame/textures/RedundantC/wis_red.png differ diff --git a/mods/wisgame/textures/RedundantC/wis_sky.png b/mods/wisgame/textures/RedundantC/wis_sky.png new file mode 100644 index 0000000..724eb61 Binary files /dev/null and b/mods/wisgame/textures/RedundantC/wis_sky.png differ diff --git a/mods/wisgame/textures/RedundantC/wis_white.png b/mods/wisgame/textures/RedundantC/wis_white.png new file mode 100644 index 0000000..aeb32fd Binary files /dev/null and b/mods/wisgame/textures/RedundantC/wis_white.png differ diff --git a/mods/wisgame/textures/RedundantC/wiz_blue.png b/mods/wisgame/textures/RedundantC/wiz_blue.png new file mode 100644 index 0000000..9eaf034 Binary files /dev/null and b/mods/wisgame/textures/RedundantC/wiz_blue.png differ diff --git a/mods/wisgame/textures/wwwq/player.png b/mods/wisgame/textures/wwwq/player.png new file mode 100644 index 0000000..58dfad3 Binary files /dev/null and b/mods/wisgame/textures/wwwq/player.png differ diff --git a/mods/wisgame/textures/wwwq/player_back.png b/mods/wisgame/textures/wwwq/player_back.png new file mode 100644 index 0000000..2b15626 Binary files /dev/null and b/mods/wisgame/textures/wwwq/player_back.png differ diff --git a/mods/wislib/init.lua b/mods/wislib/init.lua new file mode 100644 index 0000000..40ff7c2 --- /dev/null +++ b/mods/wislib/init.lua @@ -0,0 +1,111 @@ +--luarocks imports +local lfs = minetest or require("lfs") +--local luajson = minetest or require("json") --lua-json +local dkjson = minetest or require("dkjson") + + +--setup lib env +--context is always -eq to the highest possible subfolder in the mods dir, this can be ether the mod or modpack root folder. +local DIR_DELIM = debug.getinfo(1, "S").source:match("[\\/]") +local context = debug and debug.getinfo(1, "S").source:match("mods[/\\][/\\]?([^/]*)") or "modpack" +local modpath = minetest and core.get_modpath(core.get_current_modname()) or debug.getinfo(1, "S").source:match("^(.+)[/\\]"):sub(2) + +--declare stuff +local namespace = {} --this file creates the context, tested using lua 5.1 and via mt's built-in virtual lua sandbox env +namespace.mergeTables = function(firstTable, secondTable) + if firstTable == nil then firstTable = {} end + if secondTable == nil then return firstTable end + for k,v in pairs(secondTable) do firstTable[k] = v end + return firstTable +end + +namespace.getCallerInfo = function(p1IntLookback) + p1IntLookback = p1IntLookback or 0 + local info = debug.getinfo(2 + p1IntLookback, "Sl") + if info then + return info + end +end +namespace.parse = function(p1String, p2Default) + if minetest then + return core.parse_json(p1String) + else + return (dkjson.decode(p1String) or p2Default) end +end +namespace.stringify = function(p1Table, p2Pretty) + p2Pretty = p2Pretty or true + return minetest and core.write_json(p1Table, p2Pretty) or dkjson.encode(p1Table, { indent = p2Pretty }) +end +namespace.log = function(...) + local info = namespace.getCallerInfo(1) + --console: none, error + --debug.txt:none, error, warning, action + --never?info, verbose, trace + --debug_log_level = action + if core then core.log("action", table.concat({"logged from: ", info.short_src,"@", info.currentline,";"})) end + for _, arg in ipairs({...}) do + arg = tostring(arg) + if type(arg) == "table" then + local _ = minetest and core.debug(namespace.stringify(arg)) or _G["io"]["write"](namespace.stringify(arg)) + else + local _ = minetest and core.debug(arg) or _G["io"]["write"](arg) + end + end + _G["print"]("") +end +local print = namespace.log +--print("[", namespace.parse("[false]")) +--print("{", namespace.stringify({false})) + +namespace.get_dir_list=minetest and core.get_dir_list or function (folder) + local returns = {} + for filePath in lfs.dir(folder) do + if filePath~= "." and filePath ~= ".." then + table.insert(returns, filePath) + end + end + return returns +end + +namespace.dofolder = function(folder, todoFunc) + for _, filePath in ipairs(namespace.get_dir_list(folder..modpath:match("[\\/]"))) do + if todoFunc ~= nil then + todoFunc(filePath) + end + end +end + +--add local to global context +_G[context] = {} +_G[context] = namespace.mergeTables(_G[context], namespace) +-- do the thing +dofile(table.concat({modpath,"string.lua"}, DIR_DELIM)) +dofile(table.concat({modpath,"table.lua"}, DIR_DELIM)) +-- DIR_DELIM 2345 < is 5 chars shorter, why must I be made to do things the hard way! +namespace.dofolder(modpath .. modpath:match("[\\/]") .. "lua5_1", function(filePath) + if filePath:match("^.+%.(.+)$") == "lua" then + dofile(modpath .. modpath:match("[\\/]") .. "lua5_1"..modpath:match("[\\/]")..filePath) + end +end) +if minetest or (core and luanti)then + --This was written before the name charge to match lexicographic order, + --I'm not renaming it cause you chose to have an internal vote + --Editors Note: yeah, get em blood child! + _G[context].dofolder(modpath .. modpath:match("[\\/]") .. "minetest", function(filePath) + if filePath:match("^.+%.(.+)$") == "lua" then + dofile(modpath .. modpath:match("[\\/]") .. "minetest"..modpath:match("[\\/]")..filePath) + end + end) +end + +_G[context].dofolder(modpath .. modpath:match("[\\/]") .. "namespace", function(filePath) + if filePath:match("^.+%.(.+)$") == "lua" then + dofile(modpath .. modpath:match("[\\/]") .. "namespace"..modpath:match("[\\/]")..filePath) + end +end) + + + +--return so dofile works correctly +return namespace + diff --git a/mods/wislib/lua5_1/bitwise.lua b/mods/wislib/lua5_1/bitwise.lua new file mode 100644 index 0000000..3d529b8 --- /dev/null +++ b/mods/wislib/lua5_1/bitwise.lua @@ -0,0 +1,126 @@ +--[[ + AND (&): Performs a bitwise AND operation. + OR (|): Performs a bitwise OR operation. + XOR (~): Performs a bitwise exclusive OR operation. + NOT (~): Performs a unary bitwise NOT operation. + Left Shift (<<): Shifts bits to the left. + Right Shift (>>): Shifts bits to the right12. + +2, 3, 5, 7, 11, 13, 17, 19, 23, 29, +31, 37, 41, 43, 47, 53, 59, 61, 67, +71, 73, 79, 83, 89, 97, 101, +103, 107, 109, 113, 127, 131, +137, 139, 149, 151, +157, 163, 167, 173, 179, 181, 191, +193, 197, 199, 211, 223, 227, 229, 233, +239, 241, 251, 257, 263, 269, 271, 277, +281, 283, 293, 307, 311, 313, +317, 331, 337, 347, 349, 353, +359, 367, 373, 379, 383, +389, 397, 401, 409, 419, 421, 431, 433, 439, +443, 449, 457, 461, 463, 467, 479, 487, 491, 499, +503, 509, 521, 523, 541, 547, 557, 563, 569, 571, +577, 587, 593, 599, 601, 607, 613, 617, 619, 631, +641, 643, 647, 653, 659, 661, 673, 677, 683, 691, +701, 709, 719, 727, 733, 739, 743, 751, 757, 761, +769, 773, 787, 797, 809, 811, 821, 823, 827, 829, +839, 853, 857, 859, 863, 877, 881, 883, 887, 907, +911, 919, 929, 937, 941, 947, 953, 967, 971, 977, +983, 991, 997 + +--]] + +-- Bitwise AND +function band(a, b) + local result = 0 + local bitval = 1 + while a > 0 and b > 0 do + local abit = a % 2 + local bbit = b % 2 + if abit == 1 and bbit == 1 then + result = result + bitval + end + a = math.floor(a / 2) + b = math.floor(b / 2) + bitval = bitval * 2 + end + return result +end + +-- Bitwise OR +function bor(a, b) + local result = 0 + local bitval = 1 + while a > 0 or b > 0 do + local abit = a % 2 + local bbit = b % 2 + if abit == 1 or bbit == 1 then + result = result + bitval + end + a = math.floor(a / 2) + b = math.floor(b / 2) + bitval = bitval * 2 + end + return result +end + +-- Bitwise XOR +function bxor(a, b) + local result = 0 + local bitval = 1 + while a > 0 or b > 0 do + local abit = a % 2 + local bbit = b % 2 + if abit ~= bbit then + result = result + bitval + end + a = math.floor(a / 2) + b = math.floor(b / 2) + bitval = bitval * 2 + end + return result +end + +-- Bitwise NOT +function bnot(a) + local result = 0 + local bitval = 1 + while a > 0 do + local abit = a % 2 + if abit == 0 then + result = result + bitval + end + a = math.floor(a / 2) + bitval = bitval * 2 + end + return result +end + +-- Left shift +function lshift(x, by) + return x * 2 ^ by +end + +-- Right shift +function rshift(x, by) + return math.floor(x / 2 ^ by) +end + + +local gen_bitwise_assert = function(a,b) +print("AND: ", band(a, b)) +print("OR: ", bor(a, b)) +print("XOR: ", bxor(a, b)) +print("NOT: ", bnot(271)) +print("Left Shift: ", lshift(a, 1)) +print("Right Shift: ", rshift(a, 1)) +end +local a, b = 127, 271 +--gen_bitwise_assert(a,b) +assert(band(a, b) == 15) +assert(bor(a, b) == 383) +assert(bxor(a, b) == 368) +assert(bnot(b) == 240) +assert(lshift(a, 1) == 254) +assert(rshift(a, 1) == 63) + diff --git a/mods/wislib/lua5_1/events.lua b/mods/wislib/lua5_1/events.lua new file mode 100644 index 0000000..e69de29 diff --git a/mods/wislib/lua5_1/io.lua b/mods/wislib/lua5_1/io.lua new file mode 100644 index 0000000..0f6a1ac --- /dev/null +++ b/mods/wislib/lua5_1/io.lua @@ -0,0 +1,125 @@ +--context is always -eq to the highest possible subfolder in the mods dir, this can be ether the mod or modpack root folder. +local DIR_DELIM = debug.getinfo(1, "S").source:match("[\\/]") +local context = debug and debug.getinfo(1, "S").source:match("mods[/\\][/\\]?([^/]*)") or "context" +local cwdpath = minetest and (minetest.get_modpath(minetest.get_current_modname()) .. DIR_DELIM .. "lua5_1") or debug.getinfo(1, "S").source:match("^(.+)[/\\]"):sub(2) + +--setup lib env +local print = _G[context]["log"] +--some string function moved here, for more info see: string.lua +function string:trim() + return self:match("^%s*(.-)%s*$") +end + +--[[ +function string:split (p2Sep, p3Patern) + if p2Sep == nil then + p2Sep = "%s" + end + if p3Patern == nil then + p3Patern = table.concat({"([^", p2Sep, "]+)"}, "") + end + local returns = {} + for _ in string.gmatch(self, p3Patern) do + table.insert(returns, _) + end + return returns +end +--]] + +function string:startsWith(p2Needle) -- self == haystack + return self:sub(1, #p2Needle) == p2Needle +end + +function string:endsWith(p2Needle) -- self == haystack + return p2Needle == "" or self:sub(-#p2Needle) == p2Needle +end + +function string:charCount(p2Char) + local count = 0 + for _ in string.gmatch(self, p2Char) do + count = count + 1 + end + return count +end + +--end string.lua snipet + + +_G[context].colors ={ + reset = "\27[0m", + red = "\27[31m", + green = "\27[32m", + yellow = "\27[33m", + blue = "\27[34m", + magenta = "\27[35m", + cyan = "\27[36m", + white= "\27[37m" +} + +_G[context].forFileAsLines=function(filePath, funcHandle, ignoreReturn) + local file = io.open(filePath, "r") + --if file is context:open then + local returns = {} + if not file then error(_G[context].colors.red.."access error: reading non-existant file, @" .._G[context].colors.cyan ..filePath.._G[context].colors.reset) end + if file then + --itarate over each line and pass to funkyFunc + for line in file:lines() do + local linedata=line:trim()--:sub(1,-2) --remove spooky char at the end of a line. If file uses \r\n, it may require (1,-3) + linedata=funcHandle and (funcHandle(linedata)) or linedata --buggy:TODO + --this data subject to brakeages, test for errors here: + --print("<"..linedata..">") + if not ignoreReturn then --used for large files, to avoid memory bloat. + table.insert(returns, linedata) + end + end + file:close() + return returns + else + return {} + end +end + +-- +_G[context].forFileAsIniObj = function(filePath, ignoreHeaders) + local debug_print=false + local returns = {} --object to store data about ini file as a hashmap table + returns[""]={} --default object to store global values before a header tag('[' or ']') is found in the file stream + local rpointer = "" -- by default pointer set to "" by default + local _ = debug_print and print("<"..filePath..">") + local _ = _G[context].forFileAsLines(filePath, function (line) + --in ini, ';' may be used as a comment by default. + --in the future this may be abstracted into a larger function with more customization + if not line:startsWith(";") and string.charCount(line, " ") ~= #line and #line ~= 0 then --discard comments or empty lines + --if is header "[*]" + local _ = debug_print and print(line) + if line:match("^%[.*%]$") then + if not ignoreHeaders then + rpointer = line:sub(2,-2):trim() --remove [ and ] from the header and use as str:returnPointer + returns[rpointer]= returns[rpointer] or {} + end + --else if is key value pair "*=*" + elseif line:match("^.+=.+$") and line:charCount("=") == 1 then + local spointerarray = line:split("=") + spointerarray[1]=spointerarray[1]:trim() + spointerarray[2]=spointerarray[2]:trim() + --If parser fails due to missing '"', use raw string as a fall back. + --minetest.parse_json create an unmutable error with no way to prevent it, + --just return as string ill deal with this later. :( + --Upon reflection this function should always return a string, + --since it may be used in multiple use case and so should leave parsing decisions to the caller + --_G[context].parse(spointerarray[2]) or + returns[rpointer][spointerarray[1]] = spointerarray[2] + else --else is error + error(table.concat({"error reading: ", filePath, "@^", line, "$"},"")) + end + end + end, true) + --if the global array table was never used, delete it. + if #returns[""] == 0 and true then + returns[""]=nil + end + return returns +end +--Why the fuck is "true" true in the context of a conditional, is lua just as bad as javascript? +assert(true == _G[context].parse(_G[context].forFileAsIniObj(cwdpath..DIR_DELIM.."test.ini", false)["testdata"]["success"])) + diff --git a/mods/wislib/lua5_1/math.lua b/mods/wislib/lua5_1/math.lua new file mode 100644 index 0000000..e69de29 diff --git a/mods/wislib/lua5_1/number.lua b/mods/wislib/lua5_1/number.lua new file mode 100644 index 0000000..e69de29 diff --git a/mods/wislib/lua5_1/table.lua b/mods/wislib/lua5_1/table.lua new file mode 100644 index 0000000..3432e86 --- /dev/null +++ b/mods/wislib/lua5_1/table.lua @@ -0,0 +1,30 @@ +--[[ +-- Original table +original_table = { 1, "hello", true } + +-- Metatable to track reads +metatable = { + __index = function(t, key) + local value = rawget(t, key) + print("Key:", key, "Type:", type(value)) + return value + end +} + +-- Set metatable +setmetatable(original_table, metatable) + +-- Access elements +print(original_table[1]) +print(original_table[2]) +print(original_table[3]) +--]] +-- Function to check if a string is in the table +function table.contains(table, element) + for _, value in ipairs(table) do + if value == element then + return true + end + end + return false +end diff --git a/mods/wislib/lua5_1/test.ini b/mods/wislib/lua5_1/test.ini new file mode 100644 index 0000000..835252c --- /dev/null +++ b/mods/wislib/lua5_1/test.ini @@ -0,0 +1,9 @@ +; This file created to test io.lua's ability to read files +; If you modify this file, please restart your server to see changes take effect. +; Please note: built-in reader reads all data as type:string, then converts them as a json object with a string fallback +; Comments are denoted by a prefacing ; character, +; [headers] are denoted by enclosing a [a-zA-Z0-9%-_] string, with braces +; key value pairs are denoted by placing a key infront of = symbole folowed by a value, Note: spaces are not trimed +[testdata] +success = true + diff --git a/mods/wislib/minetest/anticheat.lua b/mods/wislib/minetest/anticheat.lua new file mode 100644 index 0000000..e69de29 diff --git a/mods/wislib/minetest/booking.lua b/mods/wislib/minetest/booking.lua new file mode 100644 index 0000000..e69de29 diff --git a/mods/wislib/minetest/chunks.lua b/mods/wislib/minetest/chunks.lua new file mode 100644 index 0000000..e69de29 diff --git a/mods/wislib/minetest/commands.lua b/mods/wislib/minetest/commands.lua new file mode 100644 index 0000000..d41a550 --- /dev/null +++ b/mods/wislib/minetest/commands.lua @@ -0,0 +1,120 @@ +local context = debug and debug.getinfo(1, "S").source:match("mods[/\\][/\\]?([^/]*)") or error("They broke debug!") + +-- core: /usr/share/games/core/builtin/game/chat.lua +local S = core.get_translator("__builtin") +--local T = core.get_translator("") +--core.unregister_chatcommand("kill") +local handle_kill_command = core.registered_chatcommands["kill"].func +core.override_chatcommand("kill", { + params = S("[]"), + description = S("Kill player or yourself"), + privs = {server=false}, + func = function(name, param) + if param == "" or param == name or core.get_player_privs(name).server then + return handle_kill_command(name, param) + else + return false, "You don't have permission to run this command (missing privileges: server)." + end + --return handle_kill_command(name, param == "" and name or param) + end, +}) + + +local handle_giveme_command = core.registered_chatcommands["giveme"].func +core.override_chatcommand("giveme", { + params = S(" [ []]"), + description = S("Give item to yourself"), + privs = {give=not core.is_singleplayer()}, + func = function(name, param) + local par=param:split(" ") + if #par >=1 and not par[1]:startsWith("mapgen_") and core.registered_aliases["mapgen_"..par[1]] then + par[1]="mapgen_"..par[1] + param=table.concat(par, " ") + end + return handle_giveme_command(name, param) + end, +}) + +local handle_give_command = core.registered_chatcommands["give"].func +core.override_chatcommand("give", { + params = S(" [ []]"), + description = S("Give item to player"), + privs = {give=not core.is_singleplayer()}, + func = function(name, param) + local par=param:split(" ") + if #par >=2 and not par[2]:startsWith("mapgen_") and core.registered_aliases["mapgen_"..par[2]] then + par[2]="mapgen_"..par[2] + param=table.concat(par, " ") + end + return handle_give_command(name, param) + end, +}) + + +core.register_chatcommand("clear", { + params = "", + description = "clear screen", + privs = {}, + func = function(name, param) + local count = 0 + repeat + count = count + 1 + minetest.chat_send_player(name, " ") + until count >= 20 + end, +}) +core.register_chatcommand("cls", { + params = core.registered_chatcommands["clear"].params, + description = core.registered_chatcommands["clear"].description, + privs = core.registered_chatcommands["clear"].privs, + func = core.registered_chatcommands["clear"].func, +}) + + +core.register_chatcommand("items", { + params = "[metadata]", + description = "list all items or items with metadata", + privs = {}, + func = function(name, param) + local items = {} + local nodes = minetest.registered_nodes + + -- Populate the items table with all registered items + for name, def in pairs(minetest.registered_items) do + items[name] = def + end + + -- Remove entries that are also in the nodes list + for name in pairs(nodes) do + items[name] = nil + end + + -- Print the remaining items + for itemname, def in pairs(items) do + minetest.chat_send_player(name, "Registered item: " .. itemname) + end +end +}) +core.register_chatcommand("nodes", { + params = "[metadata]", + description = "list all items or items with metadata", + privs = {}, + func = function(name, param) + for item, def in pairs(minetest.registered_nodes) do + minetest.chat_send_player(name, "Registered node: " .. item) + end + end +}) + +core.register_chatcommand("biomes", { + params = "[metadata]", + description = "list all items or items with metadata", + privs = {}, + func = function() + local biomes = minetest.registered_biomes + for name, biome in pairs(biomes) do + print("Biome name: " .. name) + end + end +}) + diff --git a/mods/wislib/minetest/content.lua b/mods/wislib/minetest/content.lua new file mode 100644 index 0000000..e69de29 diff --git a/mods/wislib/minetest/detection.lua b/mods/wislib/minetest/detection.lua new file mode 100644 index 0000000..e69de29 diff --git a/mods/wislib/minetest/dialogue.lua b/mods/wislib/minetest/dialogue.lua new file mode 100644 index 0000000..e69de29 diff --git a/mods/wislib/minetest/entity.lua b/mods/wislib/minetest/entity.lua new file mode 100644 index 0000000..e69de29 diff --git a/mods/wislib/minetest/guilds.lua b/mods/wislib/minetest/guilds.lua new file mode 100644 index 0000000..e69de29 diff --git a/mods/wislib/minetest/heath-bars.lua b/mods/wislib/minetest/heath-bars.lua new file mode 100644 index 0000000..e69de29 diff --git a/mods/wislib/minetest/hotbar.lua b/mods/wislib/minetest/hotbar.lua new file mode 100644 index 0000000..e69de29 diff --git a/mods/wislib/minetest/hud.lua b/mods/wislib/minetest/hud.lua new file mode 100644 index 0000000..e69de29 diff --git a/mods/wislib/minetest/initialize.lua b/mods/wislib/minetest/initialize.lua new file mode 100644 index 0000000..5296c58 --- /dev/null +++ b/mods/wislib/minetest/initialize.lua @@ -0,0 +1,24 @@ +local context = debug and debug.getinfo(1, "S").source:match("mods[/\\][/\\]?([^/]*)") or error("They broke debug!") +local DIR_DELIM = debug.getinfo(1, "S").source:match("[\\/]") + +_G[context] = _G[context] or {} +_G[context].init = function (path, patern) + path = path or "/src/" + patern = patern or "%.lua$" + local MOD_NAME =minetest.get_current_modname() + local MOD_PATH=minetest.get_modpath(MOD_NAME) + --Crate a array (of type table) of all files in the MOD_PATH + local files = minetest.get_dir_list(MOD_PATH .. DIR_DELIM .. path) + --Shuffle array to randomize load order and encurage stable coding practices, you know cause slow is good? + table.shuffle(files) + -- Process each filename using ipairs + for _, filename in ipairs(files) do + -- Check that the string ends with ".lua" and is not the init.lua file + if filename:match(patern) and filename ~= 'init.lua'then + --do the thing + dofile(MOD_PATH .. DIR_DELIM .. path .. DIR_DELIM .. filename) + --print logs for debuging ~~purposes~~ + --minetest.log(filename) + end + end +end diff --git a/mods/wislib/minetest/minetest.lua b/mods/wislib/minetest/minetest.lua new file mode 100644 index 0000000..e69de29 diff --git a/mods/wislib/minetest/protection.lua b/mods/wislib/minetest/protection.lua new file mode 100644 index 0000000..e69de29 diff --git a/mods/wislib/minetest/registrate.lua b/mods/wislib/minetest/registrate.lua new file mode 100644 index 0000000..a6abeac --- /dev/null +++ b/mods/wislib/minetest/registrate.lua @@ -0,0 +1,164 @@ +local DIR_DELIM = debug.getinfo(1, "S").source:match("[\\/]") +local modname = core.get_current_modname() +local context = debug and debug.getinfo(1, "S").source:match("mods[/\\][/\\]?([^/]*)") or "context" +local modpath = core.get_modpath(modname) +local cwdpath = minetest and (core.get_modpath(core.get_current_modname()) .. DIR_DELIM .. "src") or debug.getinfo(1, "S").source:match("^(.+)[/\\]"):sub(2) +--local print = _G[context].log + + +local registrateItemFromBlob = function(blob) + assert(blob["name"]~=nil) + if not blob["name"]:find(":") then + blob["name"] = table.concat({core.get_current_modname(),blob["name"]},":") + end + blob["type"]="none" + local localname = blob["name"] + blob["name"] = nil + if blob["tool_dig_groups"] then + blob["tool_capabilities"] = blob["tool_capabilities"] or {} + blob["tool_capabilities"]["groupcaps"] = blob["tool_capabilities"]["groupcaps"] or {} + for _, value in ipairs(blob["tool_dig_groups"] ) do + blob["tool_capabilities"]["groupcaps"][value]={ + times = blob["tool_dig_times"] or nil, + uses = blob["tool_dig_uses"] or nil, + maxlevel = blob["tool_dig_maxlevel"] or nil + } + end + blob["tool_capabilities"]["damage_groups"] = blob["tool_capabilities"]["damage_groups"] or nil + end + --print(">>",blob["tool_damage_groups"]) + minetest.register_item(localname, blob) + --print(">>", minetest.write_json({[1] = 0.00, [2] = 2.00, [3] = 3.0, [100] = 99.0})) +end +local registrateBiomeFromBlob = function(blob) + assert(blob["name"]~=nil) + if not blob["name"]:find(":") then + blob["name"] = table.concat({core.get_current_modname(),blob["name"]},":") + end + if blob["depth_top"]==nil and blob["node_top_depth"]~=nil then + blob["depth_top"] = blob["node_top_depth"] + --blob["node_top_depth"]=nil + end + if blob["depth_filler"]==nil and blob["node_filler_depth"]~=nil then + blob["depth_filler"] = blob["node_filler_depth"] + blob["node_filler_depth"]=nil + end + if blob["depth_riverbed"]==nil and blob["node_riverbed_depth"]~=nil then + blob["depth_riverbed"] = blob["node_riverbed_depth"] + blob["node_riverbed_depth"]=nil + end + local yMin = -31000 + local yMax = 31000 + local oMin = blob["y_min"] or yMin + local oMax = blob["y_max"] or yMax + local seaLevel = minetest.settings:get("water_level") or 1 + blob["y_min"] = blob["dune_line"] or seaLevel + blob["y_max"] = oMax + + if blob["node_riverbed"] ~= nil or blob["node_substratum"] ~= nil then + blob["node_riverbed"] = blob["node_riverbed"] or blob["node_substratum"] or nil + blob["node_substratum"] = blob["node_substratum"] or blob["node_riverbed"] or nil + end + if blob["node_riverbed"] == nil then + minetest.register_biome(blob) + else + minetest.register_biome(blob) + blob["name"] = table.concat({blob["name"],"_subterranean"},"") + --e3.s + blob["node_top"] = blob["node_riverbed"] + blob["depth_top"] = blob["depth_riverbed"] or 1 + blob["node_filler"] = blob["node_substratum"] + blob["depth_filler"] = blob["node_substratum_depth"] or 1 + + blob["y_max"] = blob["y_min"] - 1 + blob["y_min"] = oMin + --print(blob) + + minetest.register_biome(blob) + + + + end + --node_riverbed = "mapgen_sand" + --node_riverbed_depth = 3 + +--node_substratum="mapgen_sandstone" +--node_substratum_depth=1 + +end +local registrateToolFromBlob = function(blob) + assert(blob["name"]~=nil) + if not blob["name"]:find(":") then + blob["name"] = table.concat({core.get_current_modname(),blob["name"]},":") + end + blob["type"]="none" + local localname = blob["name"] + + blob["type"]=nil + minetest.register_tool(localname, blob) +end + +local registrateNodeFromBlob = function(blob) + local nodeName=blob["name"] + blob["name"]=nil + assert(nodeName~=nil) + if not nodeName:find(":") then + nodeName = table.concat({core.get_current_modname(), nodeName},":") + --print(nodeName) + end + local nodeAlias=blob["alias"] + blob["alias"]=nil + core.register_node(nodeName, blob) + if type(nodeAlias) == "string" then + core.register_alias(nodeAlias,nodeName) + elseif type(nodeAlias) == "table" then + for key, value in ipairs(nodeAlias) do + core.register_alias(value, nodeName) + end + else + end + + local wah = minetest.registered_nodes[nodeName].groups +end +_G[context].registrate_from_file = function(filePath) + --print(filePath:match("^.+%.(.+)$")) + for header, data in pairs(_G[context].forFileAsIniObj(filePath, false)) do + --print("["..header.."]") + for k, v in pairs(data) do + data[k]=_G[context].parse(v) + --print("reg", data, k) + --assert (data[k]~=nil) + end + + if data["type"] == nil then + error("expectation not met, missing type in file:".. filePath) + end + assert(type(data["type"])=="string") + local types={"node", "item", "tool", "biome", "craft"} + if not table.contains(types, data["type"]) then + error("expectation not met, invalid type in file:".. filePath) + end + if data["type"] == "node" then + data["type"]=nil + registrateNodeFromBlob(data) + end + if data["type"] == "item" then + data["type"]=nil + registrateItemFromBlob(data) + end + if data["type"] == "tool" then + data["type"]=nil + registrateToolFromBlob(data) + end + if data["type"] == "biome" then + data["type"]=nil + registrateBiomeFromBlob(data) + end + end + +end + +--_G[context].registrate_from_file("") +--_G[context].registrate_from_folder("") + + diff --git a/mods/wislib/minetest/trees.lua b/mods/wislib/minetest/trees.lua new file mode 100644 index 0000000..e69de29 diff --git a/mods/wislib/mod.conf b/mods/wislib/mod.conf new file mode 100644 index 0000000..8ae5aa7 --- /dev/null +++ b/mods/wislib/mod.conf @@ -0,0 +1,2 @@ +#name is a uid that only allows characters [a-z0-9_] +name = wislib diff --git a/mods/wislib/namespace/namespace.lua b/mods/wislib/namespace/namespace.lua new file mode 100644 index 0000000..f35b044 --- /dev/null +++ b/mods/wislib/namespace/namespace.lua @@ -0,0 +1,71 @@ +local context = debug and debug.getinfo(1, "S").source:match("mods[/\\][/\\]?([^/]*)") or error("They broke debug!") +local modname = minetest and minetest.get_current_modname() +local modpath = minetest and minetest.get_modpath(modname) +-- Table main_table +--registrate namespace aliases, shorthands, spelling errors, and A.R.G. hint declarations +--that will delegate the function call to _G[context] +--TODO:127 is the hint, stop asking! +_G[string.char(127+1)]={} -- Γ‡ +setmetatable(_G[string.char(127+1)], { __index = _G[context] }) +--_G[string.char(127)]={} -- βŒ‚ +--setmetatable(_G[string.char(127)], { __index = _G[context] }) +_G[string.char(99)]={} -- c +setmetatable(_G[string.char(99)], { __index = _G[context] }) +_G[string.char(67)]={} -- C +setmetatable(_G[string.char(67)], { __index = _G[context] }) + +--[[ +ALPHABET SOUP xD: Anise, Basil, Cilantro, Dill, Epazote, Fennel, Garlic, +Horehound, Italian parsley, Jasmine, Khorne (Pre-Seasoned), +Lemongrass, Mint, Nasturtium, Oregano, Parsley +Quinine, Rosemary, Sage, Thyme, Uva Ursi, Vietnamese coriander +Wasabi, Xylopia, Yuca, Zapote +--]] + + + +--[[ +--The Four Classical Elements: + --🜁 (Alchemical Symbol for Air) : Represents intellect, communication, and self-awareness. + --πŸœ‚ (Alchemical Symbol for Fire) : Symbolizes energy, transformation, passion, and self-motivation. + --πŸœƒ (Alchemical Symbol for Earth) : Represents physical sensations and stability, and mastery over the flesh + --πŸœ„ (Alchemical Symbol for Water) : Symbolizes intuition and emotional depth. + +--The Three Primes (Tria Prima) + --☿ (Mercury) : Symbolizes the mind and volatility. + --πŸœ” (Salt) : Represents the body and solidity. + --🜍 (Sulfur) : Represents the soul and combustibility. + +--The Seven Planetary Metals + --β˜‰(Gold) : Associated with the Sun, symbolizes perfection and enlightenment. + --☽(Silver) : Associated with the Moon, represents purity and reflection. + --β™‚(Iron) : Associated with Mars, symbolizes strength and aggression. + --☿(Mercury) : Associated with Mercury, represents fluidity and adaptability. + --♃(Tin) : Associated with Jupiter, symbolizes wisdom and expansion. + --♀(Copper) : Associated with Venus, represents love and beauty. + --β™„(Lead) : Associated with Saturn, symbolizes endurance and transformation. + +--Other Alchemical Symbols + --πŸœ”(Philosopher’s Stone) : Represents the ultimate goal of alchemy, transformation and enlightenment. + --πŸœ“(Ouroboros) : Symbolizes infinity and the cyclical nature of life. + --πŸœ‡(Alchemical Flask) Represents the vessel used in alchemical processes. + --βš•(Staff of Asclepius) Symbolizes healing and balance. See also: Caduceus ☀ +--Other Symbols + + --β˜₯ (Ankh) + --⚘ (Flower) + --βš– (Scales) + --β™Ύ (Infinity) + --☯ (Yin Yang) + + +--]] + + + + + + + + + diff --git a/mods/wislib/string.lua b/mods/wislib/string.lua new file mode 100644 index 0000000..93a177f --- /dev/null +++ b/mods/wislib/string.lua @@ -0,0 +1,59 @@ +--setup lib env +local print = minetest and minetest.debug or print +--context is always -eq to the highest possible subfolder in the mods dir, this can be ether the mod or modpack root folder. +local context = debug and debug.getinfo(1, "S").source:match("mods[/\\][/\\]?([^/]*)") or "pack" + + +function string:basename () + return self:match("(.+)%..+") +end + +function string:trim() + return self:match("^%s*(.-)%s*$") +end +--[[ +function string:split (p2Sep, p3Patern) + if p2Sep == nil then + p2Sep = "%s" + end + if p3Patern == nil then + p3Patern = table.concat({"([^", p2Sep, "]+)"}, "") + end + local returns = {} + for _ in string.gmatch(self, p3Patern) do + table.insert(returns, _) + end + return returns +end +--]] +function string:startsWith(p2Needle) -- self == haystack + return self:sub(1, #p2Needle) == p2Needle +end + +function string:endsWith(p2Needle) -- self == haystack + return p2Needle == "" or self:sub(-#p2Needle) == p2Needle +end + +function string:charCount(p2Char) + local count = 0 + for _ in string.gmatch(self, p2Char) do + count = count + 1 + end + return count +end +_G[context]=_G[context] or {} +_G[context].colors=_G[context].colors or {} +_G[context].colors.linux={ + reset = "\27[0m", + red = "\27[31m", + green = "\27[32m", + yellow = "\27[33m", + blue = "\27[34m", + magenta = "\27[35m", + cyan = "\27[36m", + white= "\27[37m" +} + +--some string function required by other modues and so is always loaded first, as load order is random. +--should not effect anything that depends on this library. + diff --git a/mods/wislib/table.lua b/mods/wislib/table.lua new file mode 100644 index 0000000..becafa8 --- /dev/null +++ b/mods/wislib/table.lua @@ -0,0 +1,9 @@ +-- Function to check if a string is in the table +function table.contains(table, element) + for _, value in ipairs(table) do + if value == element then + return true + end + end + return false +end