mirror of
				https://github.com/minetest-mods/moreblocks.git
				synced 2025-11-04 07:25:29 +01:00 
			
		
		
		
	Compare commits
	
		
			21 Commits
		
	
	
		
			v2.2.0
			...
			46d347c00a
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 46d347c00a | |||
| 2f211a6545 | |||
| 07b6dd8bfe | |||
| 4f3c1bb39d | |||
| cbfc442206 | |||
| 4692e88b63 | |||
| ea335a3745 | |||
| d4c94f449a | |||
| 1323e2e993 | |||
| cc228754a4 | |||
| 04a6e0e696 | |||
| eb7041d784 | |||
| b93949c266 | |||
| 04810e1f83 | |||
| e91b0ea1a0 | |||
| 72ef8deeae | |||
| 710b90972b | |||
| aa3dcd5878 | |||
| 94247a6449 | |||
| e7547d57ba | |||
| c13321142b | 
							
								
								
									
										3
									
								
								init.lua
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								init.lua
									
									
									
									
									
								
							@@ -20,6 +20,7 @@ dofile(modpath .. "/config.lua")
 | 
			
		||||
dofile(modpath .. "/circular_saw.lua")
 | 
			
		||||
dofile(modpath .. "/stairsplus/init.lua")
 | 
			
		||||
dofile(modpath .. "/nodes.lua")
 | 
			
		||||
dofile(modpath .. "/redefinitions.lua")
 | 
			
		||||
dofile(modpath .. "/crafting.lua")
 | 
			
		||||
dofile(modpath .. "/aliases.lua")
 | 
			
		||||
 | 
			
		||||
minetest.log("action", "[moreblocks] loaded.")
 | 
			
		||||
 
 | 
			
		||||
@@ -1,94 +0,0 @@
 | 
			
		||||
--[[
 | 
			
		||||
More Blocks: redefinitions of default stuff
 | 
			
		||||
 | 
			
		||||
Copyright © 2011-2020 Hugo Locurcio and contributors.
 | 
			
		||||
Licensed under the zlib license. See LICENSE.md for more information.
 | 
			
		||||
--]]
 | 
			
		||||
 | 
			
		||||
local modname = minetest.get_current_modname()
 | 
			
		||||
 | 
			
		||||
-- Redefine some of the default crafting recipes to be more productive
 | 
			
		||||
 | 
			
		||||
-- Auxiliary function: take a recipe as returned by get_all_craft_recipes
 | 
			
		||||
-- and turn it into a table that can be used to clear a craft or declare a new one
 | 
			
		||||
local reconstruct_internal_craft = function(recipe)
 | 
			
		||||
	local recp = {
 | 
			
		||||
		{ "", "", "" },
 | 
			
		||||
		{ "", "", "" },
 | 
			
		||||
		{ "", "", "" },
 | 
			
		||||
	}
 | 
			
		||||
	local width = recipe.width
 | 
			
		||||
	for idx, item in pairs(recipe.items) do
 | 
			
		||||
		local row = math.ceil(idx / width)
 | 
			
		||||
		local col = idx - (row-1)*width
 | 
			
		||||
		recp[row][col] = item
 | 
			
		||||
	end
 | 
			
		||||
	return recp
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
-- Change the amount produced by recipe by apply func to the old amount
 | 
			
		||||
local change_recipe_amount = function(product, recipe, func)
 | 
			
		||||
	-- if width == 0, this is a shapeless recipe, for which the
 | 
			
		||||
	-- internal and Lua API recipe table is the same.
 | 
			
		||||
	-- Otherwise we need to reconstruct the table for the shaped recipe.
 | 
			
		||||
	local shapeless = (recipe.width == 0)
 | 
			
		||||
	local recp = shapeless and recipe.items or reconstruct_internal_craft(recipe)
 | 
			
		||||
 | 
			
		||||
	local oldamount = tonumber(recipe.output:match(" [0-9]+$") or "1")
 | 
			
		||||
 | 
			
		||||
	local newamount = func(oldamount)
 | 
			
		||||
 | 
			
		||||
	-- remove old crafting recipe
 | 
			
		||||
	local redo = { recipe = recp }
 | 
			
		||||
	-- preserve shapelessness
 | 
			
		||||
	if shapeless then
 | 
			
		||||
		redo.type = "shapeless"
 | 
			
		||||
	end
 | 
			
		||||
	minetest.clear_craft(redo)
 | 
			
		||||
 | 
			
		||||
	-- new output
 | 
			
		||||
	redo.output = ("%s %d"):format(product, newamount)
 | 
			
		||||
	minetest.register_craft(redo)
 | 
			
		||||
 | 
			
		||||
	minetest.log("action", ("[MOD]%s: recipe for %s production: %d => %d"):format(modname, product, oldamount, newamount))
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
local increase_craft_production = function(product, func)
 | 
			
		||||
	local recipes = minetest.get_all_craft_recipes(product)
 | 
			
		||||
	for _, r in pairs(recipes) do
 | 
			
		||||
		if r.type == "normal" or r.method == "normal" then
 | 
			
		||||
			change_recipe_amount(product, r, func)
 | 
			
		||||
		end
 | 
			
		||||
	end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
-- Increase the crafting production according to the rules from the table, which is in the form:
 | 
			
		||||
-- {
 | 
			
		||||
--   { detector, amount changing function }
 | 
			
		||||
--   { detector, amount changing function }
 | 
			
		||||
-- }
 | 
			
		||||
-- TODO: consider exporting this function to other mods
 | 
			
		||||
local increase_craft_production_table = function(map_table)
 | 
			
		||||
	for product, _ in pairs(minetest.registered_items) do
 | 
			
		||||
		for _, tab in pairs(map_table) do
 | 
			
		||||
			local detector = tab[1]
 | 
			
		||||
			local func = tab[2]
 | 
			
		||||
			if detector(product) then
 | 
			
		||||
				increase_craft_production(product, func)
 | 
			
		||||
				-- only apply one boost
 | 
			
		||||
				break
 | 
			
		||||
			end
 | 
			
		||||
		end
 | 
			
		||||
	end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
increase_craft_production_table({
 | 
			
		||||
	{ function(n) return n:match('^default:sign_wall') end, function(old) return old + 1 end },
 | 
			
		||||
	{ function(n) return n == 'default:paper' end, function(old) return old*4 end },
 | 
			
		||||
	{ function(n) return n:match('^carts:.*rail$') or n:match('^default:.*rail$') end, function(old) return old + old/2 end },
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	type = "toolrepair",
 | 
			
		||||
	additional_wear = -0.10, -- Tool repair buff (10% bonus instead of 2%).
 | 
			
		||||
})
 | 
			
		||||
@@ -49,6 +49,8 @@ stairsplus.rotate_node_aux = function(itemstack, placer, pointed_thing)
 | 
			
		||||
	local under = pointed_thing.under
 | 
			
		||||
	local under_node = minetest.get_node(under)
 | 
			
		||||
	local under_prefix = under_node and name_to_category(under_node.name)
 | 
			
		||||
	-- NALC Addition to avoid coloredwood/unifiedbricks crash by Sys4
 | 
			
		||||
	local under_pmod = string.sub(under_node.name, 1, string.find(under_node.name, ":")-1)
 | 
			
		||||
 | 
			
		||||
	local same_cat = item_prefix == under_prefix
 | 
			
		||||
 | 
			
		||||
@@ -65,7 +67,8 @@ stairsplus.rotate_node_aux = function(itemstack, placer, pointed_thing)
 | 
			
		||||
	-- under node has a non-standard shape, so use the distance between under and above
 | 
			
		||||
	local wallmounted = minetest.dir_to_wallmounted(vector.subtract(pointed_thing.above, under))
 | 
			
		||||
 | 
			
		||||
	if same_cat and not aux then
 | 
			
		||||
	if same_cat and (under_pmod ~= "coloredwood" and under_pmod ~= "unifiedbricks")
 | 
			
		||||
	and not aux then
 | 
			
		||||
		p2 = under_node.param2
 | 
			
		||||
		-- flip if placing above or below an upright or upside-down node
 | 
			
		||||
		-- TODO should we also flip when placing next to a side-mounted node?
 | 
			
		||||
 
 | 
			
		||||
@@ -61,6 +61,8 @@ for _, name in pairs(default_nodes) do
 | 
			
		||||
	-- Stone and desert_stone drop cobble and desert_cobble respectively.
 | 
			
		||||
	if type(ndef.drop) == "string" then
 | 
			
		||||
		ndef.drop = ndef.drop:gsub(".+:", "")
 | 
			
		||||
	elseif name == "desert_stone" then
 | 
			
		||||
		ndef.drop = ndef.drop.items[1].items[1]:gsub(".+:", "")
 | 
			
		||||
	end
 | 
			
		||||
 | 
			
		||||
	-- Use the primary tile for all sides of cut glasslike nodes and disregard paramtype2.
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user