Compare commits
24 Commits
Author | SHA1 | Date | |
---|---|---|---|
5010a148a7 | |||
19e060c31e | |||
3da5fbdc6d | |||
09e69ec0b6 | |||
2fe764ba79 | |||
222a6d47c5 | |||
d6e2b237c7 | |||
54e52ce1ce | |||
b851252996 | |||
77dcac7895 | |||
4db884e00c | |||
2831c806f1 | |||
9dc3378f65 | |||
87be9a6a59 | |||
876630c70d | |||
fe7d656235 | |||
2316595ab9 | |||
238e92a6bf | |||
c2218f810d | |||
84a9198a62 | |||
809da6d1b5 | |||
73e99e7d66 | |||
0842b4fec4 | |||
cc122c2dff |
13
.editorconfig
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
root = true
|
||||||
|
|
||||||
|
[*]
|
||||||
|
charset = utf-8
|
||||||
|
end_of_line = lf
|
||||||
|
indent_style = space
|
||||||
|
indent_size = 2
|
||||||
|
insert_final_newline = true
|
||||||
|
trim_trailing_whitespace = true
|
||||||
|
|
||||||
|
[*.{lua,luacheckrc}]
|
||||||
|
indent_style = tab
|
||||||
|
indent_size = 4
|
31
.luacheckrc
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
std = "lua51+minetest"
|
||||||
|
unused_args = false
|
||||||
|
allow_defined_top = true
|
||||||
|
max_line_length = 90
|
||||||
|
|
||||||
|
stds.minetest = {
|
||||||
|
read_globals = {
|
||||||
|
"DIR_DELIM",
|
||||||
|
"minetest",
|
||||||
|
"core",
|
||||||
|
"dump",
|
||||||
|
"vector",
|
||||||
|
"nodeupdate",
|
||||||
|
"VoxelManip",
|
||||||
|
"VoxelArea",
|
||||||
|
"PseudoRandom",
|
||||||
|
"ItemStack",
|
||||||
|
"default",
|
||||||
|
table = {
|
||||||
|
fields = {
|
||||||
|
"copy",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
read_globals = {
|
||||||
|
"farming",
|
||||||
|
"intllib",
|
||||||
|
"mg",
|
||||||
|
}
|
9
.pre-commit-config.yaml
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
repos:
|
||||||
|
- repo: https://github.com/pre-commit/pre-commit-hooks
|
||||||
|
rev: v2.1.0
|
||||||
|
hooks:
|
||||||
|
- id: end-of-file-fixer
|
||||||
|
- id: trailing-whitespace
|
||||||
|
|
||||||
|
- id: mixed-line-ending
|
||||||
|
args: [--fix=lf]
|
15
.travis.yml
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
language: generic
|
||||||
|
|
||||||
|
addons:
|
||||||
|
apt:
|
||||||
|
packages:
|
||||||
|
- luarocks
|
||||||
|
|
||||||
|
install:
|
||||||
|
- pyenv global 3.6.3
|
||||||
|
- pip3 install --user pre-commit
|
||||||
|
- luarocks install --local luacheck
|
||||||
|
|
||||||
|
script:
|
||||||
|
- $HOME/.local/bin/pre-commit run --all-files
|
||||||
|
- $HOME/.luarocks/bin/luacheck .
|
40
CHANGELOG.md
@ -1,10 +1,40 @@
|
|||||||
# Change Log
|
# Changelog
|
||||||
|
|
||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
|
|
||||||
The format is based on [Keep a Changelog](http://keepachangelog.com/)
|
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
|
||||||
and this project adheres to [Semantic Versioning](http://semver.org/).
|
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
|
||||||
|
|
||||||
## [1.0.0] - 2017-02-19
|
## [Unreleased]
|
||||||
|
|
||||||
- Initial versioned release.
|
## [1.1.0] - 2019-03-23
|
||||||
|
|
||||||
|
### Added
|
||||||
|
|
||||||
|
- Brazilian and Dutch translations.
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
- Ores are now slower to mine and cannot be mined using wooden tools anymore.
|
||||||
|
- Updated intllib support to avoid using deprecated functions.
|
||||||
|
|
||||||
|
### Deprecated
|
||||||
|
|
||||||
|
- Deprecated hoes to follow Minetest Game's deprecation of hoes
|
||||||
|
made of "rare" materials.
|
||||||
|
- Hoes are still available in existing worlds, but they
|
||||||
|
cannot be crafted anymore.
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- Hoes now use the `farming` mod's handling function and can no longer
|
||||||
|
turn desert sand into dirt.
|
||||||
|
- Handle tin which is now included in [Minetest Game](https://github.com/minetest/minetest_game).
|
||||||
|
If it is detected, then the tin nodes and items from More Ores won't be registered.
|
||||||
|
|
||||||
|
## 1.0.0 - 2017-02-19
|
||||||
|
|
||||||
|
- Initial versioned release.
|
||||||
|
|
||||||
|
[Unreleased]: https://github.com/minetest-mods/moreores/compare/v1.1.0...HEAD
|
||||||
|
[1.1.0]: https://github.com/minetest-mods/moreores/compare/v1.0.0...v1.1.0
|
||||||
|
10
CONTRIBUTING.md
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
# Contributing to More Ores
|
||||||
|
|
||||||
|
Thank you for your interest in More Ores! Before contributing,
|
||||||
|
be sure to know about these few guidelines:
|
||||||
|
|
||||||
|
- Contributions have to be licensed under the zlib license (or compatible)
|
||||||
|
for code, and CC BY-SA 3.0 (or compatible) for assets.
|
||||||
|
- Make sure to update the changelog, keeping the
|
||||||
|
[changelog format](http://keepachangelog.com/en/1.0.0/) we use.
|
||||||
|
- Don't bump the version yourself. Maintainers will do this when necessary.
|
@ -1,6 +1,6 @@
|
|||||||
# zlib license
|
# zlib license
|
||||||
|
|
||||||
Copyright (c) 2011-2017 Hugo Locurcio and contributors
|
Copyright © 2011-2019 Hugo Locurcio and contributors
|
||||||
|
|
||||||
**This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.**
|
**This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.**
|
||||||
|
|
||||||
|
72
README.md
@ -1,10 +1,74 @@
|
|||||||
# More Ores
|
# More Ores
|
||||||
|
|
||||||
More Ores for [Minetest](http://minetest.net), a free and open source infinite
|
More Ores for [Minetest](https://www.minetest.net/), a free and open source infinite
|
||||||
world block sandbox game.
|
world block sandbox game.
|
||||||
|
|
||||||
To install, just clone this repository into your "mods" directory.
|
[**Forum topic**](https://forum.minetest.net/viewtopic.php?f=11&t=549)
|
||||||
|
|
||||||
More Ores code is licensed under the zlib license, textures are by Calinou and are licensed under CC BY-SA 3.0 Unported.
|
## Installation
|
||||||
|
|
||||||
**Forum topic:** <https://forum.minetest.net/viewtopic.php?f=11&t=549>
|
### Download the mod
|
||||||
|
|
||||||
|
To install More Ores, clone this Git repository into your Minetest's `mods/`
|
||||||
|
directory:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git clone https://github.com/minetest-mods/moreores.git
|
||||||
|
```
|
||||||
|
|
||||||
|
You can also
|
||||||
|
[download a ZIP archive](https://github.com/minetest-mods/moreores/archive/master.zip)
|
||||||
|
of More Ores. If you do so, you will need to extract the archive then rename
|
||||||
|
the resulting folder from `moreores-master` to `moreores` – this is
|
||||||
|
**absolutely** required, as the mod won't work otherwise.
|
||||||
|
|
||||||
|
### Enable the mod
|
||||||
|
|
||||||
|
Once you have installed More Ores, you need to enable it in Minetest.
|
||||||
|
The procedure is as follows:
|
||||||
|
|
||||||
|
#### Using the client's main menu
|
||||||
|
|
||||||
|
This is the easiest way to enable More Ores when playing in singleplayer
|
||||||
|
(or on a server hosted from a client).
|
||||||
|
|
||||||
|
1. Start Minetest and switch to the **Local Game** tab.
|
||||||
|
2. Select the world you want to enable More Ores in.
|
||||||
|
3. Click **Configure**, then enable `moreores` by double-clicking it
|
||||||
|
(or ticking the **Enabled** checkbox).
|
||||||
|
4. Save the changes, then start a game on the world you enabled More Ores on.
|
||||||
|
5. More Ores should now be running on your world.
|
||||||
|
|
||||||
|
#### Using a text editor
|
||||||
|
|
||||||
|
This is the recommended way to enable the mod on a server without using a GUI.
|
||||||
|
|
||||||
|
1. Make sure Minetest is not currently running (otherwise, it will overwrite
|
||||||
|
the changes when exiting).
|
||||||
|
2. Open the world's `world.mt` file using a text editor.
|
||||||
|
3. Add the following line at the end of the file:
|
||||||
|
|
||||||
|
```text
|
||||||
|
load_mod_moreores = true
|
||||||
|
```
|
||||||
|
|
||||||
|
If the line is already present in the file, then replace `false` with `true`
|
||||||
|
on that line.
|
||||||
|
|
||||||
|
4. Save the file, then start a game on the world you enabled More Ores on.
|
||||||
|
5. More Ores should now be running on your world.
|
||||||
|
|
||||||
|
## Version compatibility
|
||||||
|
|
||||||
|
More Ores is currently primarily tested with Minetest 0.4.17.
|
||||||
|
It may or may not work with newer or older versions. Issues arising in older
|
||||||
|
versions than 0.4.17 will generally not be fixed.
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
Copyright © 2011-2019 Hugo Locurcio and contributors
|
||||||
|
|
||||||
|
- More Ores code is licensed under the zlib license, see
|
||||||
|
[`LICENSE.md`](LICENSE.md) for details.
|
||||||
|
- Unless otherwise specified, More Ores textures are licensed under
|
||||||
|
[CC BY-SA 3.0 Unported](https://creativecommons.org/licenses/by-sa/3.0/).
|
||||||
|
@ -1,2 +1,3 @@
|
|||||||
default
|
default
|
||||||
mg?
|
mg?
|
||||||
|
farming?
|
||||||
|
321
init.lua
@ -3,87 +3,72 @@
|
|||||||
** More Ores **
|
** More Ores **
|
||||||
By Calinou, with the help of Nore.
|
By Calinou, with the help of Nore.
|
||||||
|
|
||||||
Copyright (c) 2011-2017 Hugo Locurcio and contributors.
|
Copyright © 2011-2019 Hugo Locurcio and contributors.
|
||||||
Licensed under the zlib license. See LICENSE.md for more information.
|
Licensed under the zlib license. See LICENSE.md for more information.
|
||||||
=====================================================================
|
=====================================================================
|
||||||
--]]
|
--]]
|
||||||
|
|
||||||
moreores = {}
|
moreores = {}
|
||||||
|
|
||||||
local S
|
|
||||||
if minetest.get_modpath("intllib") then
|
|
||||||
S = intllib.Getter()
|
|
||||||
else
|
|
||||||
S = function(s) return s end
|
|
||||||
end
|
|
||||||
|
|
||||||
local modpath = minetest.get_modpath("moreores")
|
local modpath = minetest.get_modpath("moreores")
|
||||||
|
|
||||||
|
local S, NS = dofile(modpath .. "/intllib.lua")
|
||||||
|
moreores.S = S
|
||||||
|
moreores.NS = NS
|
||||||
|
|
||||||
dofile(modpath .. "/_config.txt")
|
dofile(modpath .. "/_config.txt")
|
||||||
|
|
||||||
-- `mg` support:
|
-- `mg` mapgen support
|
||||||
if minetest.get_modpath("mg") then
|
if minetest.get_modpath("mg") then
|
||||||
dofile(modpath .. "/mg.lua")
|
dofile(modpath .. "/mg.lua")
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Utility functions
|
|
||||||
-- =================
|
|
||||||
|
|
||||||
local default_stone_sounds = default.node_sound_stone_defaults()
|
local default_stone_sounds = default.node_sound_stone_defaults()
|
||||||
local default_metal_sounds = default.node_sound_metal_defaults()
|
local default_metal_sounds = default.node_sound_metal_defaults()
|
||||||
|
|
||||||
local function hoe_on_use(itemstack, user, pointed_thing, uses)
|
-- Returns the crafting recipe table for a given material and item.
|
||||||
local pt = pointed_thing
|
local function get_recipe(material, item)
|
||||||
-- Check if pointing at a node:
|
if item == "sword" then
|
||||||
if not pt then
|
return {
|
||||||
return
|
{material},
|
||||||
|
{material},
|
||||||
|
{"group:stick"},
|
||||||
|
}
|
||||||
end
|
end
|
||||||
if pt.type ~= "node" then
|
if item == "shovel" then
|
||||||
return
|
return {
|
||||||
|
{material},
|
||||||
|
{"group:stick"},
|
||||||
|
{"group:stick"},
|
||||||
|
}
|
||||||
end
|
end
|
||||||
|
if item == "axe" then
|
||||||
local under = minetest.get_node(pt.under)
|
return {
|
||||||
local pos = {x = pt.under.x, y = pt.under.y + 1, z = pt.under.z}
|
{material, material},
|
||||||
local above = minetest.get_node(pos)
|
{material, "group:stick"},
|
||||||
|
{"", "group:stick"},
|
||||||
-- Return if any of the nodes is not registered:
|
}
|
||||||
if not minetest.registered_nodes[under.name] then return end
|
|
||||||
if not minetest.registered_nodes[above.name] then return end
|
|
||||||
|
|
||||||
-- Check if the node above the pointed thing is air:
|
|
||||||
if above.name ~= "air" then return end
|
|
||||||
|
|
||||||
-- Check if pointing at dirt:
|
|
||||||
if minetest.get_item_group(under.name, "soil") ~= 1 then return end
|
|
||||||
|
|
||||||
-- Turn the node into soil, wear out item and play sound:
|
|
||||||
minetest.set_node(pt.under, {name ="farming:soil"})
|
|
||||||
minetest.sound_play("default_dig_crumbly", {pos = pt.under, gain = 0.5})
|
|
||||||
itemstack:add_wear(65535 / (uses - 1))
|
|
||||||
return itemstack
|
|
||||||
end
|
|
||||||
|
|
||||||
local function get_recipe(c, name)
|
|
||||||
if name == "sword" then
|
|
||||||
return {{c}, {c}, {"group:stick"}}
|
|
||||||
end
|
end
|
||||||
if name == "shovel" then
|
if item == "pick" then
|
||||||
return {{c}, {"group:stick"}, {"group:stick"}}
|
return {
|
||||||
|
{material, material, material},
|
||||||
|
{"", "group:stick", ""},
|
||||||
|
{"", "group:stick", ""},
|
||||||
|
}
|
||||||
end
|
end
|
||||||
if name == "axe" then
|
if item == "block" then
|
||||||
return {{c, c}, {c, "group:stick"}, {"", "group:stick"}}
|
return {
|
||||||
|
{material, material, material},
|
||||||
|
{material, material, material},
|
||||||
|
{material, material, material},
|
||||||
|
}
|
||||||
end
|
end
|
||||||
if name == "pick" then
|
if item == "lockedchest" then
|
||||||
return {{c, c, c}, {"", "group:stick", ""}, {"", "group:stick", ""}}
|
return {
|
||||||
end
|
{"group:wood", "group:wood", "group:wood"},
|
||||||
if name == "hoe" then
|
{"group:wood", material, "group:wood"},
|
||||||
return {{c, c}, {"", "group:stick"}, {"", "group:stick"}}
|
{"group:wood", "group:wood", "group:wood"},
|
||||||
end
|
}
|
||||||
if name == "block" then
|
|
||||||
return {{c, c, c}, {c, c, c}, {c, c, c}}
|
|
||||||
end
|
|
||||||
if name == "lockedchest" then
|
|
||||||
return {{"group:wood", "group:wood", "group:wood"}, {"group:wood", c, "group:wood"}, {"group:wood", "group:wood", "group:wood"}}
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -95,15 +80,14 @@ local function add_ore(modname, description, mineral_name, oredef)
|
|||||||
local item_base = tool_base .. mineral_name
|
local item_base = tool_base .. mineral_name
|
||||||
local ingot = item_base .. "_ingot"
|
local ingot = item_base .. "_ingot"
|
||||||
local lump_item = item_base .. "_lump"
|
local lump_item = item_base .. "_lump"
|
||||||
local ingotcraft = ingot
|
|
||||||
|
|
||||||
if oredef.makes.ore then
|
if oredef.makes.ore then
|
||||||
minetest.register_node(modname .. ":mineral_" .. mineral_name, {
|
minetest.register_node(modname .. ":mineral_" .. mineral_name, {
|
||||||
description = S("%s Ore"):format(S(description)),
|
description = S("%s Ore"):format(S(description)),
|
||||||
tiles = {"default_stone.png^" .. modname .. "_mineral_" .. mineral_name .. ".png"},
|
tiles = {"default_stone.png^" .. modname .. "_mineral_" .. mineral_name .. ".png"},
|
||||||
groups = {cracky = 3},
|
groups = {cracky = 2},
|
||||||
sounds = default_stone_sounds,
|
sounds = default_stone_sounds,
|
||||||
drop = lump_item
|
drop = lump_item,
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -111,8 +95,8 @@ local function add_ore(modname, description, mineral_name, oredef)
|
|||||||
local block_item = item_base .. "_block"
|
local block_item = item_base .. "_block"
|
||||||
minetest.register_node(block_item, {
|
minetest.register_node(block_item, {
|
||||||
description = S("%s Block"):format(S(description)),
|
description = S("%s Block"):format(S(description)),
|
||||||
tiles = { img_base .. "_block.png" },
|
tiles = {img_base .. "_block.png"},
|
||||||
groups = {snappy = 1, bendy = 2, cracky = 1, melty = 2, level= 2},
|
groups = {snappy = 1, bendy = 2, cracky = 1, melty = 2, level = 2},
|
||||||
sounds = default_metal_sounds,
|
sounds = default_metal_sounds,
|
||||||
})
|
})
|
||||||
minetest.register_alias(mineral_name.."_block", block_item)
|
minetest.register_alias(mineral_name.."_block", block_item)
|
||||||
@ -124,7 +108,7 @@ local function add_ore(modname, description, mineral_name, oredef)
|
|||||||
minetest.register_craft( {
|
minetest.register_craft( {
|
||||||
output = ingot .. " 9",
|
output = ingot .. " 9",
|
||||||
recipe = {
|
recipe = {
|
||||||
{ block_item }
|
{block_item},
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
@ -140,7 +124,7 @@ local function add_ore(modname, description, mineral_name, oredef)
|
|||||||
minetest.register_craft({
|
minetest.register_craft({
|
||||||
type = "cooking",
|
type = "cooking",
|
||||||
output = ingot,
|
output = ingot,
|
||||||
recipe = lump_item
|
recipe = lump_item,
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -158,7 +142,7 @@ local function add_ore(modname, description, mineral_name, oredef)
|
|||||||
output = "default:chest_locked",
|
output = "default:chest_locked",
|
||||||
recipe = {
|
recipe = {
|
||||||
{ingot},
|
{ingot},
|
||||||
{"default:chest"}
|
{"default:chest"},
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
minetest.register_craft( {
|
minetest.register_craft( {
|
||||||
@ -179,9 +163,9 @@ local function add_ore(modname, description, mineral_name, oredef)
|
|||||||
inventory_image = toolimg_base .. tool_name .. ".png",
|
inventory_image = toolimg_base .. tool_name .. ".png",
|
||||||
tool_capabilities = {
|
tool_capabilities = {
|
||||||
max_drop_level = 3,
|
max_drop_level = 3,
|
||||||
groupcaps = tooldef
|
groupcaps = tooldef,
|
||||||
},
|
},
|
||||||
sound = {breaks = "default_tool_breaks"},
|
sound = {breaks = "default_tool_breaks"},
|
||||||
}
|
}
|
||||||
|
|
||||||
if tool_name == "sword" then
|
if tool_name == "sword" then
|
||||||
@ -206,141 +190,154 @@ local function add_ore(modname, description, mineral_name, oredef)
|
|||||||
tdef.full_punch_interval = oredef.full_punch_interval
|
tdef.full_punch_interval = oredef.full_punch_interval
|
||||||
tdef.tool_capabilities.damage_groups = oredef.damage_groups
|
tdef.tool_capabilities.damage_groups = oredef.damage_groups
|
||||||
tdef.description = S("%s Shovel"):format(S(description))
|
tdef.description = S("%s Shovel"):format(S(description))
|
||||||
tdef.wield_image = toolimg_base .. tool_name .. ".png^[transformR90"
|
tdef.wield_image = toolimg_base .. tool_name .. ".png^[transformR90"
|
||||||
end
|
|
||||||
|
|
||||||
if tool_name == "hoe" then
|
|
||||||
tdef.description = S("%s Hoe"):format(S(description))
|
|
||||||
local uses = tooldef.uses
|
|
||||||
tooldef.uses = nil
|
|
||||||
tdef.on_use = function(itemstack, user, pointed_thing)
|
|
||||||
return hoe_on_use(itemstack, user, pointed_thing, uses)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
local fulltool_name = tool_base .. tool_name .. tool_post
|
local fulltool_name = tool_base .. tool_name .. tool_post
|
||||||
minetest.register_tool(fulltool_name, tdef)
|
|
||||||
minetest.register_alias(tool_name .. tool_post, fulltool_name)
|
if tool_name == "hoe" and minetest.get_modpath("farming") then
|
||||||
if oredef.makes.ingot then
|
tdef.max_uses = tooldef.uses
|
||||||
minetest.register_craft({
|
tdef.description = S("%s Hoe"):format(S(description))
|
||||||
output = fulltool_name,
|
farming.register_hoe(fulltool_name, tdef)
|
||||||
recipe = get_recipe(ingot, tool_name)
|
|
||||||
})
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- Hoe registration is handled above.
|
||||||
|
-- There are no crafting recipes for hoes, as they have been
|
||||||
|
-- deprecated from Minetest Game:
|
||||||
|
-- https://github.com/minetest/minetest_game/commit/9c459e77a
|
||||||
|
if tool_name ~= "hoe" then
|
||||||
|
minetest.register_tool(fulltool_name, tdef)
|
||||||
|
|
||||||
|
if oredef.makes.ingot then
|
||||||
|
minetest.register_craft({
|
||||||
|
output = fulltool_name,
|
||||||
|
recipe = get_recipe(ingot, tool_name)
|
||||||
|
})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
minetest.register_alias(tool_name .. tool_post, fulltool_name)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Add everything:
|
|
||||||
local modname = "moreores"
|
|
||||||
|
|
||||||
local oredefs = {
|
local oredefs = {
|
||||||
silver = {
|
silver = {
|
||||||
description = "Silver",
|
description = "Silver",
|
||||||
makes = {ore = true, block = true, lump = true, ingot = true, chest = true},
|
makes = {ore = true, block = true, lump = true, ingot = true, chest = true},
|
||||||
oredef = {clust_scarcity = moreores.silver_chunk_size * moreores.silver_chunk_size * moreores.silver_chunk_size,
|
oredef = {
|
||||||
|
clust_scarcity = moreores.silver_chunk_size ^ 3,
|
||||||
clust_num_ores = moreores.silver_ore_per_chunk,
|
clust_num_ores = moreores.silver_ore_per_chunk,
|
||||||
clust_size = moreores.silver_chunk_size,
|
clust_size = moreores.silver_chunk_size,
|
||||||
y_min = moreores.silver_min_depth,
|
y_min = moreores.silver_min_depth,
|
||||||
y_max = moreores.silver_max_depth
|
y_max = moreores.silver_max_depth,
|
||||||
},
|
},
|
||||||
tools = {
|
tools = {
|
||||||
pick = {
|
pick = {
|
||||||
cracky = {times = {[1] = 2.60, [2] = 1.00, [3] = 0.60}, uses = 100, maxlevel= 1}
|
cracky = {times = {[1] = 2.60, [2] = 1.00, [3] = 0.60}, uses = 100, maxlevel = 1},
|
||||||
},
|
},
|
||||||
hoe = {
|
hoe = {
|
||||||
uses = 300
|
uses = 300,
|
||||||
},
|
},
|
||||||
shovel = {
|
shovel = {
|
||||||
crumbly = {times = {[1] = 1.10, [2] = 0.40, [3] = 0.25}, uses = 100, maxlevel= 1}
|
crumbly = {times = {[1] = 1.10, [2] = 0.40, [3] = 0.25}, uses = 100, maxlevel = 1},
|
||||||
},
|
},
|
||||||
axe = {
|
axe = {
|
||||||
choppy = {times = {[1] = 2.50, [2] = 0.80, [3] = 0.50}, uses = 100, maxlevel= 1},
|
choppy = {times = {[1] = 2.50, [2] = 0.80, [3] = 0.50}, uses = 100, maxlevel = 1},
|
||||||
fleshy = {times = {[2] = 1.10, [3] = 0.60}, uses = 100, maxlevel= 1}
|
fleshy = {times = {[2] = 1.10, [3] = 0.60}, uses = 100, maxlevel = 1}
|
||||||
},
|
},
|
||||||
sword = {
|
sword = {
|
||||||
fleshy = {times = {[2] = 0.70, [3] = 0.30}, uses = 100, maxlevel= 1},
|
fleshy = {times = {[2] = 0.70, [3] = 0.30}, uses = 100, maxlevel = 1},
|
||||||
snappy = {times = {[2] = 0.70, [3] = 0.30}, uses = 100, maxlevel= 1},
|
snappy = {times = {[2] = 0.70, [3] = 0.30}, uses = 100, maxlevel = 1},
|
||||||
choppy = {times = {[3] = 0.80}, uses = 100, maxlevel= 0}
|
choppy = {times = {[3] = 0.80}, uses = 100, maxlevel = 0},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
full_punch_interval = 1.0,
|
full_punch_interval = 1.0,
|
||||||
damage_groups = {fleshy = 6},
|
damage_groups = {fleshy = 6},
|
||||||
},
|
},
|
||||||
tin = {
|
|
||||||
description = "Tin",
|
|
||||||
makes = {ore = true, block = true, lump = true, ingot = true, chest = false},
|
|
||||||
oredef = {clust_scarcity = moreores.tin_chunk_size * moreores.tin_chunk_size * moreores.tin_chunk_size,
|
|
||||||
clust_num_ores = moreores.tin_ore_per_chunk,
|
|
||||||
clust_size = moreores.tin_chunk_size,
|
|
||||||
y_min = moreores.tin_min_depth,
|
|
||||||
y_max = moreores.tin_max_depth
|
|
||||||
},
|
|
||||||
tools = {},
|
|
||||||
},
|
|
||||||
mithril = {
|
mithril = {
|
||||||
description = "Mithril",
|
description = "Mithril",
|
||||||
makes = {ore = true, block = true, lump = true, ingot = true, chest = false},
|
makes = {ore = true, block = true, lump = true, ingot = true, chest = false},
|
||||||
oredef = {clust_scarcity = moreores.mithril_chunk_size * moreores.mithril_chunk_size * moreores.mithril_chunk_size,
|
oredef = {
|
||||||
|
clust_scarcity = moreores.mithril_chunk_size ^ 3,
|
||||||
clust_num_ores = moreores.mithril_ore_per_chunk,
|
clust_num_ores = moreores.mithril_ore_per_chunk,
|
||||||
clust_size = moreores.mithril_chunk_size,
|
clust_size = moreores.mithril_chunk_size,
|
||||||
y_min = moreores.mithril_min_depth,
|
y_min = moreores.mithril_min_depth,
|
||||||
y_max = moreores.mithril_max_depth
|
y_max = moreores.mithril_max_depth,
|
||||||
},
|
},
|
||||||
tools = {
|
tools = {
|
||||||
pick = {
|
pick = {
|
||||||
cracky = {times = {[1] = 2.25, [2] = 0.55, [3] = 0.35}, uses = 200, maxlevel= 1}
|
cracky = {times = {[1] = 2.25, [2] = 0.55, [3] = 0.35}, uses = 200, maxlevel = 2}
|
||||||
},
|
},
|
||||||
hoe = {
|
hoe = {
|
||||||
uses = 1000
|
uses = 1000,
|
||||||
},
|
},
|
||||||
shovel = {
|
shovel = {
|
||||||
crumbly = {times = {[1] = 0.70, [2] = 0.35, [3] = 0.20}, uses = 200, maxlevel= 1}
|
crumbly = {times = {[1] = 0.70, [2] = 0.35, [3] = 0.20}, uses = 200, maxlevel = 2},
|
||||||
},
|
},
|
||||||
axe = {
|
axe = {
|
||||||
choppy = {times = {[1] = 1.75, [2] = 0.45, [3] = 0.45}, uses = 200, maxlevel= 1},
|
choppy = {times = {[1] = 1.75, [2] = 0.45, [3] = 0.45}, uses = 200, maxlevel = 2},
|
||||||
fleshy = {times = {[2] = 0.95, [3] = 0.30}, uses = 200, maxlevel= 1}
|
fleshy = {times = {[2] = 0.95, [3] = 0.30}, uses = 200, maxlevel = 1}
|
||||||
},
|
},
|
||||||
sword = {
|
sword = {
|
||||||
fleshy = {times = {[2] = 0.65, [3] = 0.25}, uses = 200, maxlevel= 1},
|
fleshy = {times = {[2] = 0.65, [3] = 0.25}, uses = 200, maxlevel = 2},
|
||||||
snappy = {times = {[2] = 0.70, [3] = 0.25}, uses = 200, maxlevel= 1},
|
snappy = {times = {[2] = 0.70, [3] = 0.25}, uses = 200, maxlevel = 2},
|
||||||
choppy = {times = {[3] = 0.65}, uses = 200, maxlevel= 0}
|
choppy = {times = {[3] = 0.65}, uses = 200, maxlevel = 0},
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
full_punch_interval = 0.45,
|
full_punch_interval = 0.45,
|
||||||
damage_groups = {fleshy = 9},
|
damage_groups = {fleshy = 9},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for orename,def in pairs(oredefs) do
|
-- If tin is available in the `default` mod, don't register More Ores' variant of tin
|
||||||
add_ore(modname, def.description, orename, def)
|
local default_tin
|
||||||
|
if minetest.registered_items["default:tin_ingot"] then
|
||||||
|
default_tin = true
|
||||||
|
else
|
||||||
|
default_tin = false
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Copper rail (special node):
|
if default_tin then
|
||||||
minetest.register_craft({
|
minetest.register_alias("moreores:mineral_tin", "default:stone_with_tin")
|
||||||
output = "moreores:copper_rail 24",
|
minetest.register_alias("moreores:tin_lump", "default:tin_lump")
|
||||||
recipe = {
|
minetest.register_alias("moreores:tin_ingot", "default:tin_ingot")
|
||||||
{"default:copper_ingot", "", "default:copper_ingot"},
|
minetest.register_alias("moreores:tin_block", "default:tinblock")
|
||||||
{"default:copper_ingot", "group:stick", "default:copper_ingot"},
|
else
|
||||||
{"default:copper_ingot", "", "default:copper_ingot"}
|
oredefs.tin = {
|
||||||
|
description = "Tin",
|
||||||
|
makes = {ore = true, block = true, lump = true, ingot = true, chest = false},
|
||||||
|
oredef = {
|
||||||
|
clust_scarcity = moreores.tin_chunk_size ^ 3,
|
||||||
|
clust_num_ores = moreores.tin_ore_per_chunk,
|
||||||
|
clust_size = moreores.tin_chunk_size,
|
||||||
|
y_min = moreores.tin_min_depth,
|
||||||
|
y_max = moreores.tin_max_depth,
|
||||||
|
},
|
||||||
|
tools = {},
|
||||||
}
|
}
|
||||||
})
|
|
||||||
|
|
||||||
-- Bronze has some special cases, because it is made from copper and tin:
|
-- Bronze has some special cases, because it is made from copper and tin
|
||||||
minetest.register_craft( {
|
minetest.register_craft({
|
||||||
type = "shapeless",
|
type = "shapeless",
|
||||||
output = "default:bronze_ingot 3",
|
output = "default:bronze_ingot 3",
|
||||||
recipe = {
|
recipe = {
|
||||||
"moreores:tin_ingot",
|
"moreores:tin_ingot",
|
||||||
"default:copper_ingot",
|
"default:copper_ingot",
|
||||||
"default:copper_ingot",
|
"default:copper_ingot",
|
||||||
}
|
},
|
||||||
})
|
})
|
||||||
|
end
|
||||||
|
|
||||||
-- Unique node:
|
-- Copper rail (unique node)
|
||||||
minetest.register_node("moreores:copper_rail", {
|
minetest.register_node("moreores:copper_rail", {
|
||||||
description = S("Copper Rail"),
|
description = S("Copper Rail"),
|
||||||
drawtype = "raillike",
|
drawtype = "raillike",
|
||||||
tiles = {"moreores_copper_rail.png", "moreores_copper_rail_curved.png", "moreores_copper_rail_t_junction.png", "moreores_copper_rail_crossing.png"},
|
tiles = {
|
||||||
|
"moreores_copper_rail.png",
|
||||||
|
"moreores_copper_rail_curved.png",
|
||||||
|
"moreores_copper_rail_t_junction.png",
|
||||||
|
"moreores_copper_rail_crossing.png",
|
||||||
|
},
|
||||||
inventory_image = "moreores_copper_rail.png",
|
inventory_image = "moreores_copper_rail.png",
|
||||||
wield_image = "moreores_copper_rail.png",
|
wield_image = "moreores_copper_rail.png",
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
@ -348,10 +345,17 @@ minetest.register_node("moreores:copper_rail", {
|
|||||||
walkable = false,
|
walkable = false,
|
||||||
selection_box = {
|
selection_box = {
|
||||||
type = "fixed",
|
type = "fixed",
|
||||||
fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2},
|
fixed = {
|
||||||
|
-1/2,
|
||||||
|
-1/2,
|
||||||
|
-1/2,
|
||||||
|
1/2,
|
||||||
|
-1/2 + 1/16,
|
||||||
|
1/2,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
sounds = default_metal_sounds,
|
sounds = default_metal_sounds,
|
||||||
groups = {bendy = 2,snappy = 1,dig_immediate = 2,rail= 1, connect_to_raillike = 1},
|
groups = {bendy = 2, snappy = 1, dig_immediate = 2, rail = 1, connect_to_raillike = 1},
|
||||||
mesecons = {
|
mesecons = {
|
||||||
effector = {
|
effector = {
|
||||||
action_on = function(pos, node)
|
action_on = function(pos, node)
|
||||||
@ -365,7 +369,20 @@ minetest.register_node("moreores:copper_rail", {
|
|||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
|
minetest.register_craft({
|
||||||
|
output = "moreores:copper_rail 24",
|
||||||
|
recipe = {
|
||||||
|
{"default:copper_ingot", "", "default:copper_ingot"},
|
||||||
|
{"default:copper_ingot", "group:stick", "default:copper_ingot"},
|
||||||
|
{"default:copper_ingot", "", "default:copper_ingot"},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
if minetest.setting_getbool("log_mods") then
|
for orename, def in pairs(oredefs) do
|
||||||
|
-- Register everything
|
||||||
|
add_ore("moreores", def.description, orename, def)
|
||||||
|
end
|
||||||
|
|
||||||
|
if minetest.settings:get_bool("log_mods") then
|
||||||
minetest.log("action", S("[moreores] loaded."))
|
minetest.log("action", S("[moreores] loaded."))
|
||||||
end
|
end
|
||||||
|
44
intllib.lua
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
-- Fallback functions for when `intllib` is not installed.
|
||||||
|
-- Code released under Unlicense <http://unlicense.org>.
|
||||||
|
|
||||||
|
-- Get the latest version of this file at:
|
||||||
|
-- https://raw.githubusercontent.com/minetest-mods/intllib/master/lib/intllib.lua
|
||||||
|
|
||||||
|
local function format(str, ...)
|
||||||
|
local args = { ... }
|
||||||
|
local function repl(escape, open, num, close)
|
||||||
|
if escape == "" then
|
||||||
|
local replacement = tostring(args[tonumber(num)])
|
||||||
|
if open == "" then
|
||||||
|
replacement = replacement..close
|
||||||
|
end
|
||||||
|
return replacement
|
||||||
|
else
|
||||||
|
return "@"..open..num..close
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return (str:gsub("(@?)@(%(?)(%d+)(%)?)", repl))
|
||||||
|
end
|
||||||
|
|
||||||
|
local gettext, ngettext
|
||||||
|
if minetest.get_modpath("intllib") then
|
||||||
|
if intllib.make_gettext_pair then
|
||||||
|
-- New method using gettext.
|
||||||
|
gettext, ngettext = intllib.make_gettext_pair()
|
||||||
|
else
|
||||||
|
-- Old method using text files.
|
||||||
|
gettext = intllib.Getter()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Fill in missing functions.
|
||||||
|
|
||||||
|
gettext = gettext or function(msgid, ...)
|
||||||
|
return format(msgid, ...)
|
||||||
|
end
|
||||||
|
|
||||||
|
ngettext = ngettext or function(msgid, msgid_plural, n, ...)
|
||||||
|
return format(n==1 and msgid or msgid_plural, ...)
|
||||||
|
end
|
||||||
|
|
||||||
|
return gettext, ngettext
|
@ -10,7 +10,6 @@
|
|||||||
%s Shovel = %sschaufel
|
%s Shovel = %sschaufel
|
||||||
%s Axe = %saxt
|
%s Axe = %saxt
|
||||||
%s Sword = %sschwert
|
%s Sword = %sschwert
|
||||||
%s Hoe = %shacke
|
|
||||||
|
|
||||||
Copper = Kupfer
|
Copper = Kupfer
|
||||||
Tin = Zinn
|
Tin = Zinn
|
||||||
|
@ -18,4 +18,4 @@ Silver = Argento
|
|||||||
Gold = Oro
|
Gold = Oro
|
||||||
Mithril = Mithril
|
Mithril = Mithril
|
||||||
|
|
||||||
Copper Rail = Binario di rame
|
Copper Rail = Binario di rame
|
||||||
|
19
locale/nl.txt
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
[moreores] loaded. = [moreores] geladen.
|
||||||
|
|
||||||
|
%s Ore = %s Erts
|
||||||
|
%s Lump = %s Klomp
|
||||||
|
%s Ingot = %s Staaf
|
||||||
|
%s Block = %s Blok
|
||||||
|
%s Pickaxe = %s Pikhouweel
|
||||||
|
%s Shovel = %s Schep
|
||||||
|
%s Axe = %s Bijl
|
||||||
|
%s Sword = %s Zwaard
|
||||||
|
|
||||||
|
Copper = Koper
|
||||||
|
Tin = Tin
|
||||||
|
Bronze = Brons
|
||||||
|
Silver = Silver
|
||||||
|
Gold = Goud
|
||||||
|
Mithril = Mithril
|
||||||
|
|
||||||
|
Copper Rail = Koperen Spoor
|
21
locale/pt_br.txt
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
# Translation by github.com/caiorrs
|
||||||
|
|
||||||
|
[moreores] loaded. = [moreores] carregado.
|
||||||
|
|
||||||
|
%s Ore = Minério de %s
|
||||||
|
%s Lump = Pepita de %s
|
||||||
|
%s Ingot = Lingote de %s
|
||||||
|
%s Block = Bloco de %s
|
||||||
|
%s Pickaxe = Picareta de %s
|
||||||
|
%s Shovel = Pá de %s
|
||||||
|
%s Axe = Machado de %s
|
||||||
|
%s Sword = Espada de %s
|
||||||
|
|
||||||
|
Copper = Cobre
|
||||||
|
Tin = Estanho
|
||||||
|
Bronze = Bronze
|
||||||
|
Silver = Prata
|
||||||
|
Gold = Ouro
|
||||||
|
Mithril = Mitrilo
|
||||||
|
|
||||||
|
Copper Rail = Trilho de Cobre
|
32
mg.lua
@ -1,24 +1,26 @@
|
|||||||
--[[
|
--[[
|
||||||
More Ores: `mg` mod support
|
More Ores: `mg` mod support
|
||||||
|
|
||||||
Copyright (c) 2011-2017 Hugo Locurcio and contributors.
|
Copyright © 2011-2019 Hugo Locurcio and contributors.
|
||||||
Licensed under the zlib license. See LICENSE.md for more information.
|
Licensed under the zlib license. See LICENSE.md for more information.
|
||||||
--]]
|
--]]
|
||||||
|
|
||||||
mg.register_ore({
|
if not minetest.registered_items["default:tin_ingot"] then
|
||||||
name = "moreores:mineral_tin",
|
mg.register_ore({
|
||||||
wherein = "default:stone",
|
name = "moreores:mineral_tin",
|
||||||
seeddiff = 8,
|
wherein = "default:stone",
|
||||||
maxvdistance = 10.5,
|
seeddiff = 8,
|
||||||
maxheight = 8,
|
maxvdistance = 10.5,
|
||||||
seglenghtn = 15,
|
maxheight = 8,
|
||||||
seglenghtdev = 6,
|
seglenghtn = 15,
|
||||||
segincln = 0,
|
seglenghtdev = 6,
|
||||||
segincldev = 0.6,
|
segincln = 0,
|
||||||
turnangle = 57,
|
segincldev = 0.6,
|
||||||
forkturnangle = 57,
|
turnangle = 57,
|
||||||
numperblock = 2
|
forkturnangle = 57,
|
||||||
})
|
numperblock = 2
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
mg.register_ore({
|
mg.register_ore({
|
||||||
name = "moreores:mineral_silver",
|
name = "moreores:mineral_silver",
|
||||||
|
Before Width: | Height: | Size: 269 B After Width: | Height: | Size: 267 B |
Before Width: | Height: | Size: 249 B After Width: | Height: | Size: 246 B |
Before Width: | Height: | Size: 267 B After Width: | Height: | Size: 263 B |
Before Width: | Height: | Size: 337 B After Width: | Height: | Size: 306 B |
Before Width: | Height: | Size: 228 B After Width: | Height: | Size: 225 B |
Before Width: | Height: | Size: 265 B After Width: | Height: | Size: 261 B |
Before Width: | Height: | Size: 274 B After Width: | Height: | Size: 267 B |
Before Width: | Height: | Size: 201 B After Width: | Height: | Size: 200 B |