1
0

Compare commits

...

4 Commits
main ... lsr

Author SHA1 Message Date
38ba241f0c
techage smartshop compatibitlity 2025-01-14 20:59:34 +05:00
168180ea34 fix: fix dupe airblock (#5)
Добавил проверку на права креатива у игрока при установке air блока.
Эта правка исключает дюп блоков воздуха.

Co-authored-by: Andrey Stepanov <standmit@yandex.ru>
Reviewed-on: MTSR/tech_additions#5
Reviewed-by: Koldun <koldun@noreply.git.minetestserver.ru>
Co-authored-by: Shepel Pavel <shepelpavel@mail.ru>
Co-committed-by: Shepel Pavel <shepelpavel@mail.ru>
2024-12-22 15:31:17 +03:00
833a9549c8
dirt sieving 2024-12-12 22:13:14 +05:00
Aleksandr Avdeev
5988b97950 Добавить рецепт дробления льда в снег 2024-11-12 11:15:19 +03:00
4 changed files with 323 additions and 6 deletions

View File

@ -1,7 +1,19 @@
local S = minetest.get_translator("tech_additions")
local replace_allowed = {}
replace_allowed["air"] = true
replace_allowed["default:water_source"] = true
replace_allowed["default:water_flowing"] = true
replace_allowed["default:river_water_source"] = true
replace_allowed["default:river_water_flowing"] = true
local placeairblock = function ()
return function(itemstack, user, pointed_thing)
local name = user:get_player_name()
if not minetest.is_creative_enabled(name) then
return
end
local pos = user:getpos()
local dir = user:get_look_dir()
local distancefromplayer = 3
@ -10,12 +22,14 @@ local placeairblock = function ()
y = pos.y + 1 + (dir.y * distancefromplayer),
z = pos.z + (dir.z * distancefromplayer),
}
if minetest.is_protected(new_pos, name) then
minetest.record_protection_violation(new_pos, name)
return
end
local getPos = minetest.get_node(new_pos)
if getPos.name == "air" or
getPos.name == "default:water_source" or
getPos.name == "default:water_flowing" or
getPos.name == "default:river_water_source" or
getPos.name == "default:river_water_flowing" then
if replace_allowed[getPos.name] then
minetest.set_node(new_pos, {name="tech_additions:air_block"})
end
end

View File

@ -1,6 +1,6 @@
name = tech_additions
description = Adds some block and recipes.
depends = default, techage
optional_depends = craft_ingredients
optional_depends = bbq, bonemeal, craft_ingredients, ethereal, farming, smartshop
min_minetest_version = 5.7
title = Tech additions

247
sieving.lua Normal file
View File

@ -0,0 +1,247 @@
local function mod_loaded(name)
return (minetest.get_modpath(name) ~= nil)
end
local sieving_items = {}
sieving_items["default:dirt"] = { "default:sand", }
sieving_items["default:dirt_with_coniferous_litter"] = { "default:sand", }
sieving_items["default:dirt_with_dry_grass"] = { "default:sand", "default:dry_grass_1", }
sieving_items["default:dirt_with_grass"] = { "default:sand", "default:grass_1", }
sieving_items["default:dirt_with_rainforest_litter"] = { "default:sand", }
sieving_items["default:dirt_with_snow"] = { "default:sand", "default:snow" }
sieving_items["default:dry_dirt"] = { "default:deset_sand", }
sieving_items["default:dry_dirt_with_dry_grass"] = { "default:desert_sand", "default:dry_grass_1", }
if mod_loaded("farming") then
-- normal
table.insert(sieving_items["default:dirt"], "farming:seed_wheat")
table.insert(sieving_items["default:dirt"], "farming:seed_cotton")
-- slightly dry and cold
table.insert(sieving_items["default:dirt_with_coniferous_litter"], "farming:seed_wheat")
-- slightly dry
table.insert(sieving_items["default:dirt_with_dry_grass"], "farming:seed_cotton")
-- slightly wet
table.insert(sieving_items["default:dirt_with_grass"], "farming:seed_wheat")
table.insert(sieving_items["default:dirt_with_grass"], "farming:seed_cotton")
-- wet
table.insert(sieving_items["default:dirt_with_rainforest_litter"], "farming:seed_wheat")
-- cold
table.insert(sieving_items["default:dirt_with_snow"], "farming:seed_wheat")
-- dry
table.insert(sieving_items["default:dry_dirt"], "farming:seed_cotton")
-- dry
table.insert(sieving_items["default:dry_dirt_with_dry_grass"], "farming:seed_cotton")
if farming.mod and farming.mod == "redo" then
table.insert(sieving_items["default:dirt"], "farming:seed_rye")
table.insert(sieving_items["default:dirt"], "farming:seed_oat")
table.insert(sieving_items["default:dirt"], "farming:seed_barley")
table.insert(sieving_items["default:dirt"], "farming:seed_rice")
table.insert(sieving_items["default:dirt_with_coniferous_litter"], "farming:seed_rye")
table.insert(sieving_items["default:dirt_with_coniferous_litter"], "farming:seed_oat")
table.insert(sieving_items["default:dirt_with_dry_grass"], "farming:seed_rye")
table.insert(sieving_items["default:dirt_with_dry_grass"], "farming:seed_oat")
table.insert(sieving_items["default:dirt_with_dry_grass"], "farming:seed_barley")
table.insert(sieving_items["default:dirt_with_grass"], "farming:seed_oat")
table.insert(sieving_items["default:dirt_with_grass"], "farming:seed_rice")
table.insert(sieving_items["default:dirt_with_rainforest_litter"], "farming:seed_oat")
table.insert(sieving_items["default:dirt_with_rainforest_litter"], "farming:seed_rice")
table.insert(sieving_items["default:dirt_with_snow"], "farming:seed_rye")
table.insert(sieving_items["default:dirt_with_snow"], "farming:seed_oat")
table.insert(sieving_items["default:dry_dirt"], "farming:seed_oat")
table.insert(sieving_items["default:dry_dirt"], "farming:seed_barley")
table.insert(sieving_items["default:dry_dirt_with_dry_grass"], "farming:seed_rye")
table.insert(sieving_items["default:dry_dirt_with_dry_grass"], "farming:seed_oat")
table.insert(sieving_items["default:dry_dirt_with_dry_grass"], "farming:seed_barley")
end
end
if mod_loaded("ethereal") then
table.insert(sieving_items["default:dirt"], "ethereal:worm")
table.insert(sieving_items["default:dirt_with_coniferous_litter"], "ethereal:worm")
table.insert(sieving_items["default:dirt_with_grass"], "ethereal:worm")
table.insert(sieving_items["default:dirt_with_rainforest_litter"], "ethereal:worm")
sieving_items["ethereal:bamboo_dirt"] = {
"default:sand",
"default:grass_1",
"ethereal:worm"
}
sieving_items["ethereal:cold_dirt"] = {
"default:sand",
"default:grass_1"
}
sieving_items["ethereal:crystal_dirt"] = {
"default:sand",
}
sieving_items["ethereal:gray_dirt"] = {
"default:sand",
"ethereal:worm"
}
sieving_items["ethereal:grove_dirt"] = {
"default:sand",
"default:grass_1",
"ethereal:worm"
}
sieving_items["ethereal:jungle_dirt"] = {
"default:sand",
"ethereal:worm"
}
sieving_items["ethereal:mushroom_dirt"] = {
"default:sand",
"ethereal:worm"
}
sieving_items["ethereal:dry_dirt"] = {
"default:desert_sand",
}
sieving_items["ethereal:fiery_dirt"] = {
"default:desert_sand",
}
sieving_items["ethereal:prairie_dirt"] = {
"default:sand",
"default:grass_1",
"ethereal:worm"
}
if mod_loaded("farming") then
table.insert(sieving_items["ethereal:bamboo_dirt"], "farming:seed_wheat")
table.insert(sieving_items["ethereal:bamboo_dirt"], "farming:seed_cotton")
table.insert(sieving_items["ethereal:cold_dirt"], "farming:seed_wheat")
table.insert(sieving_items["ethereal:gray_dirt"], "farming:seed_wheat")
table.insert(sieving_items["ethereal:gray_dirt"], "farming:seed_cotton")
table.insert(sieving_items["ethereal:grove_dirt"], "farming:seed_wheat")
table.insert(sieving_items["ethereal:jungle_dirt"], "farming:seed_wheat")
table.insert(sieving_items["ethereal:dry_dirt"], "farming:seed_cotton")
table.insert(sieving_items["ethereal:prairie_dirt"], "farming:seed_wheat")
table.insert(sieving_items["ethereal:prairie_dirt"], "farming:seed_cotton")
if farming.mod and farming.mod == "redo" then
table.insert(sieving_items["ethereal:bamboo_dirt"], "farming:seed_rye")
table.insert(sieving_items["ethereal:bamboo_dirt"], "farming:seed_oat")
table.insert(sieving_items["ethereal:bamboo_dirt"], "farming:seed_rice")
table.insert(sieving_items["ethereal:cold_dirt"], "farming:seed_rye")
table.insert(sieving_items["ethereal:cold_dirt"], "farming:seed_oat")
table.insert(sieving_items["ethereal:crystal_dirt"], "farming:seed_rye")
table.insert(sieving_items["ethereal:crystal_dirt"], "farming:seed_oat")
table.insert(sieving_items["ethereal:gray_dirt"], "farming:seed_rye")
table.insert(sieving_items["ethereal:gray_dirt"], "farming:seed_oat")
table.insert(sieving_items["ethereal:gray_dirt"], "farming:seed_barley")
table.insert(sieving_items["ethereal:gray_dirt"], "farming:seed_rice")
table.insert(sieving_items["ethereal:grove_dirt"], "farming:seed_rye")
table.insert(sieving_items["ethereal:grove_dirt"], "farming:seed_oat")
table.insert(sieving_items["ethereal:grove_dirt"], "farming:seed_barley")
table.insert(sieving_items["ethereal:jungle_dirt"], "farming:seed_oat")
table.insert(sieving_items["ethereal:jungle_dirt"], "farming:seed_barley")
table.insert(sieving_items["ethereal:jungle_dirt"], "farming:seed_rice")
table.insert(sieving_items["ethereal:dry_dirt"], "farming:seed_oat")
table.insert(sieving_items["ethereal:dry_dirt"], "farming:seed_barley")
table.insert(sieving_items["ethereal:prairie_dirt"], "farming:seed_rye")
table.insert(sieving_items["ethereal:prairie_dirt"], "farming:seed_oat")
table.insert(sieving_items["ethereal:prairie_dirt"], "farming:seed_barley")
table.insert(sieving_items["ethereal:prairie_dirt"], "farming:seed_rice")
end
end
end
if mod_loaded("bbq") then
table.insert(sieving_items["default:dirt"], "bbq:yeast")
table.insert(sieving_items["default:dirt_with_coniferous_litter"], "bbq:yeast")
table.insert(sieving_items["default:dirt_with_grass"], "bbq:yeast")
table.insert(sieving_items["default:dirt_with_rainforest_litter"], "bbq:yeast")
if mod_loaded("ethereal") then
table.insert(sieving_items["ethereal:bamboo_dirt"], "bbq:yeast")
table.insert(sieving_items["ethereal:gray_dirt"], "bbq:yeast")
table.insert(sieving_items["ethereal:grove_dirt"], "bbq:yeast")
table.insert(sieving_items["ethereal:jungle_dirt"], "bbq:yeast")
table.insert(sieving_items["ethereal:mushroom_dirt"], "bbq:yeast")
table.insert(sieving_items["ethereal:prairie_dirt"], "bbq:yeast")
end
end
if mod_loaded("bonemeal") then
table.insert(sieving_items["default:dirt"], "bonemeal:bone")
table.insert(sieving_items["default:dirt_with_coniferous_litter"], "bonemeal:bone")
table.insert(sieving_items["default:dirt_with_dry_grass"], "bonemeal:bone")
table.insert(sieving_items["default:dirt_with_grass"], "bonemeal:bone")
table.insert(sieving_items["default:dirt_with_rainforest_litter"], "bonemeal:bone")
table.insert(sieving_items["default:dirt_with_snow"], "bonemeal:bone")
table.insert(sieving_items["default:dry_dirt"], "bonemeal:bone")
table.insert(sieving_items["default:dry_dirt_with_dry_grass"], "bonemeal:bone")
if mod_loaded("ethereal") then
table.insert(sieving_items["ethereal:bamboo_dirt"], "bonemeal:bone")
table.insert(sieving_items["ethereal:cold_dirt"], "bonemeal:bone")
table.insert(sieving_items["ethereal:crystal_dirt"], "bonemeal:bone")
table.insert(sieving_items["ethereal:gray_dirt"], "bonemeal:bone")
table.insert(sieving_items["ethereal:grove_dirt"], "bonemeal:bone")
table.insert(sieving_items["ethereal:jungle_dirt"], "bonemeal:bone")
table.insert(sieving_items["ethereal:mushroom_dirt"], "bonemeal:bone")
table.insert(sieving_items["ethereal:dry_dirt"], "bonemeal:bone")
table.insert(sieving_items["ethereal:fiery_dirt"], "bonemeal:bone")
table.insert(sieving_items["ethereal:prairie_dirt"], "bonemeal:bone")
end
end
local sieving_items_count = {}
for dirt, items in pairs(sieving_items) do
sieving_items_count[dirt] = #items
end
local function sieve(dirt)
local items = sieving_items[dirt]
if math.random(7) ~= 1 then
return ItemStack(items[1])
else
return ItemStack(
items[
math.random(sieving_items_count[dirt])
]
)
end
end
local function sieve_dirt(dirt)
return function() return sieve(dirt) end
end
for dirt, _ in pairs(sieving_items) do
techage.register_sieving_recipe(dirt, sieve_dirt(dirt))
end

View File

@ -64,3 +64,59 @@ minetest.register_craft({
techage.add_grinder_recipe({input="multidecor:consolidated_oil", output="techage:plastic_granules"})
techage.add_grinder_recipe({input="ethereal:wild_onion_plant 10", output="dye:white"})
techage.add_grinder_recipe({input="default:ice", output="default:snow 3"})
--add extra sieving
dofile(minetest.get_modpath("tech_additions") .. "/sieving.lua")
local OwnerCache = {}
local function is_owner(pos, meta)
local owner = meta:get_string("owner")
local key = minetest.hash_node_position(pos)
if OwnerCache[key] ~= owner then
if not minetest.is_protected(pos, owner) then
OwnerCache[key] = owner
end
end
return OwnerCache[key] == owner
end
if smartshop then
techage.register_node(
{
"smartshop:shop",
"smartshop:shop_full",
"smartshop:shop_empty",
"smartshop:shop_used",
"smartshop:storage",
"smartshop:storage_lacks_refill",
"smartshop:storage_has_send"
},
{
on_inv_request = function(pos, in_dir, access_type)
local meta = minetest.get_meta(pos)
if is_owner(pos, meta) then
return meta:get_inventory(), "main"
end
end,
on_pull_item = function(pos, in_dir, num)
local meta = minetest.get_meta(pos)
if is_owner(pos, meta) then
local inv = meta:get_inventory()
return techage.get_items(pos, inv, "main", num)
end
end,
on_push_item = function(pos, in_dir, stack)
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
return techage.put_items(inv, "main", stack)
end,
on_unpull_item = function(pos, in_dir, stack)
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
return techage.put_items(inv, "main", stack)
end,
}
)
end