Compare commits
	
		
			21 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | 87a1e37d34 | ||
|  | 6ad1d56b3d | ||
|  | d3d3e76447 | ||
|  | 794c68b32b | ||
|  | 0722c8064b | ||
|  | d98eab6a84 | ||
|  | 61a9bb2b47 | ||
|  | 32ee20ebe7 | ||
|  | 937ec64ee6 | ||
|  | 7db7ea543f | ||
|  | 319ac40fa5 | ||
|  | cd4e86773f | ||
|  | 8643caac3c | ||
|  | 81afea1c00 | ||
|  | a29819ebee | ||
|  | 6de625c67f | ||
|  | e550a0e26f | ||
|  | 8739c4e737 | ||
|  | 3ea6096a7a | ||
|  | f2916c0a31 | ||
|  | c7b624d67c | 
| @@ -56,6 +56,7 @@ function bucket.register_liquid(source, flowing, itemname, inventory_image) | |||||||
| end | end | ||||||
|  |  | ||||||
| minetest.register_craftitem("bucket:bucket_empty", { | minetest.register_craftitem("bucket:bucket_empty", { | ||||||
|  | 	description = "Emtpy bucket", | ||||||
| 	inventory_image = "bucket.png", | 	inventory_image = "bucket.png", | ||||||
| 	stack_max = 1, | 	stack_max = 1, | ||||||
| 	liquids_pointable = true, | 	liquids_pointable = true, | ||||||
|   | |||||||
							
								
								
									
										22
									
								
								mods/creative/README.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,22 @@ | |||||||
|  | Minetest 0.4 mod: creative | ||||||
|  | ========================== | ||||||
|  |  | ||||||
|  | Implements creative mode. | ||||||
|  |  | ||||||
|  | Switch on by using the "creative_mode" setting. | ||||||
|  |  | ||||||
|  | Registered items that | ||||||
|  | - have a description, and | ||||||
|  | - do not have the group not_in_creative_inventory | ||||||
|  | are added to the creative inventory. | ||||||
|  |  | ||||||
|  | License of source code and media files: | ||||||
|  | --------------------------------------- | ||||||
|  | Copyright (C) 2012 Perttu Ahola (celeron55) <celeron55@gmail.com> | ||||||
|  |  | ||||||
|  | This program is free software. It comes without any warranty, to | ||||||
|  | the extent permitted by applicable law. You can redistribute it | ||||||
|  | and/or modify it under the terms of the Do What The Fuck You Want | ||||||
|  | To Public License, Version 2, as published by Sam Hocevar. See | ||||||
|  | http://sam.zoy.org/wtfpl/COPYING for more details. | ||||||
|  |  | ||||||
							
								
								
									
										116
									
								
								mods/creative/init.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,116 @@ | |||||||
|  | -- minetest/creative/init.lua | ||||||
|  |  | ||||||
|  | local creative_inventory = {} | ||||||
|  | creative_inventory.creative_inventory_size = 0 | ||||||
|  |  | ||||||
|  | -- Create detached creative inventory after loading all mods | ||||||
|  | minetest.after(0, function() | ||||||
|  | 	local inv = minetest.create_detached_inventory("creative", { | ||||||
|  | 		allow_move = function(inv, from_list, from_index, to_list, to_index, count, player) | ||||||
|  | 			if minetest.setting_getbool("creative_mode") then | ||||||
|  | 				return count | ||||||
|  | 			else | ||||||
|  | 				return 0 | ||||||
|  | 			end | ||||||
|  | 		end, | ||||||
|  | 		allow_put = function(inv, listname, index, stack, player) | ||||||
|  | 			if minetest.setting_getbool("creative_mode") then | ||||||
|  | 				return -1 | ||||||
|  | 			else | ||||||
|  | 				return 0 | ||||||
|  | 			end | ||||||
|  | 		end, | ||||||
|  | 		allow_take = function(inv, listname, index, stack, player) | ||||||
|  | 			if minetest.setting_getbool("creative_mode") then | ||||||
|  | 				return -1 | ||||||
|  | 			else | ||||||
|  | 				return 0 | ||||||
|  | 			end | ||||||
|  | 		end, | ||||||
|  | 		on_move = function(inv, from_list, from_index, to_list, to_index, count, player) | ||||||
|  | 		end, | ||||||
|  | 		on_put = function(inv, listname, index, stack, player) | ||||||
|  | 		end, | ||||||
|  | 		on_take = function(inv, listname, index, stack, player) | ||||||
|  | 			print(player:get_player_name().." takes item from creative inventory; listname="..dump(listname)..", index="..dump(index)..", stack="..dump(stack)) | ||||||
|  | 			if stack then | ||||||
|  | 				print("stack:get_name()="..dump(stack:get_name())..", stack:get_count()="..dump(stack:get_count())) | ||||||
|  | 			end | ||||||
|  | 		end, | ||||||
|  | 	}) | ||||||
|  | 	local creative_list = {} | ||||||
|  | 	for name,def in pairs(minetest.registered_items) do | ||||||
|  | 		if (not def.groups.not_in_creative_inventory or def.groups.not_in_creative_inventory == 0) | ||||||
|  | 				and def.description and def.description ~= "" then | ||||||
|  | 			table.insert(creative_list, name) | ||||||
|  | 		end | ||||||
|  | 	end | ||||||
|  | 	table.sort(creative_list) | ||||||
|  | 	inv:set_size("main", #creative_list) | ||||||
|  | 	for _,itemstring in ipairs(creative_list) do | ||||||
|  | 		local stack = ItemStack(itemstring) | ||||||
|  | 		-- Make a stack of the right number of items | ||||||
|  | 		local stack2 = nil | ||||||
|  | 		if stack:get_stack_max() == 1 then | ||||||
|  | 			stack2 = ItemStack(stack:get_name()) | ||||||
|  | 		else | ||||||
|  | 			-- Insert half full so that a taken stack can be put back | ||||||
|  | 			stack2 = ItemStack(stack:get_name().." "..(stack:get_stack_max()/2)) | ||||||
|  | 		end | ||||||
|  | 		inv:add_item("main", stack2) | ||||||
|  | 	end | ||||||
|  | 	creative_inventory.creative_inventory_size = #creative_list | ||||||
|  | 	print("creative inventory size: "..dump(creative_inventory.creative_inventory_size)) | ||||||
|  | end) | ||||||
|  |  | ||||||
|  | creative_inventory.set_creative_formspec = function(player, start_i, pagenum) | ||||||
|  | 	pagenum = math.floor(pagenum) | ||||||
|  | 	local pagemax = math.floor((creative_inventory.creative_inventory_size-1) / (6*4) + 1) | ||||||
|  | 	player:set_inventory_formspec("size[13,7.5]".. | ||||||
|  | 			--"image[6,0.6;1,2;player.png]".. | ||||||
|  | 			"list[current_player;main;5,3.5;8,4;]".. | ||||||
|  | 			"list[current_player;craft;8,0;3,3;]".. | ||||||
|  | 			"list[current_player;craftpreview;12,1;1,1;]".. | ||||||
|  | 			"list[detached:creative;main;0.3,0.5;4,6;"..tostring(start_i).."]".. | ||||||
|  | 			"label[2.0,6.55;"..tostring(pagenum).."/"..tostring(pagemax).."]".. | ||||||
|  | 			"button[0.3,6.5;1.6,1;creative_prev;<<]".. | ||||||
|  | 			"button[2.7,6.5;1.6,1;creative_next;>>]") | ||||||
|  | end | ||||||
|  | minetest.register_on_joinplayer(function(player) | ||||||
|  | 	-- If in creative mode, modify player's inventory forms | ||||||
|  | 	if not minetest.setting_getbool("creative_mode") then | ||||||
|  | 		return | ||||||
|  | 	end | ||||||
|  | 	creative_inventory.set_creative_formspec(player, 0, 1) | ||||||
|  | end) | ||||||
|  | minetest.register_on_player_receive_fields(function(player, formname, fields) | ||||||
|  | 	if not minetest.setting_getbool("creative_mode") then | ||||||
|  | 		return | ||||||
|  | 	end | ||||||
|  | 	-- Figure out current page from formspec | ||||||
|  | 	local current_page = 0 | ||||||
|  | 	local formspec = player:get_inventory_formspec() | ||||||
|  | 	local start_i = string.match(formspec, "list%[detached:creative;main;[%d.]+,[%d.]+;[%d.]+,[%d.]+;(%d+)%]") | ||||||
|  | 	start_i = tonumber(start_i) or 0 | ||||||
|  |  | ||||||
|  | 	if fields.creative_prev then | ||||||
|  | 		start_i = start_i - 4*6 | ||||||
|  | 	end | ||||||
|  | 	if fields.creative_next then | ||||||
|  | 		start_i = start_i + 4*6 | ||||||
|  | 	end | ||||||
|  |  | ||||||
|  | 	if start_i < 0 then | ||||||
|  | 		start_i = start_i + 4*6 | ||||||
|  | 	end | ||||||
|  | 	if start_i >= creative_inventory.creative_inventory_size then | ||||||
|  | 		start_i = start_i - 4*6 | ||||||
|  | 	end | ||||||
|  | 		 | ||||||
|  | 	if start_i < 0 or start_i >= creative_inventory.creative_inventory_size then | ||||||
|  | 		start_i = 0 | ||||||
|  | 	end | ||||||
|  |  | ||||||
|  | 	creative_inventory.set_creative_formspec(player, start_i, start_i / (6*4) + 1) | ||||||
|  | end) | ||||||
|  |  | ||||||
| @@ -62,3 +62,9 @@ Originating from G4JC's Almost MC Texture Pack: | |||||||
|   default_torch_on_ceiling.png |   default_torch_on_ceiling.png | ||||||
|   default_torch_on_floor.png |   default_torch_on_floor.png | ||||||
|  |  | ||||||
|  | VanessaE's animated torches (WTFPL): | ||||||
|  |   default_torch_animated.png | ||||||
|  |   default_torch_on_ceiling_animated.png | ||||||
|  |   default_torch_on_floor_animated.png | ||||||
|  |   default_torch_on_floor.png | ||||||
|  |  | ||||||
|   | |||||||
| @@ -747,7 +747,7 @@ minetest.register_node("default:dirt_with_grass_footsteps", { | |||||||
| 	description = "Dirt with Grass and Footsteps", | 	description = "Dirt with Grass and Footsteps", | ||||||
| 	tiles = {"default_grass_footsteps.png", "default_dirt.png", "default_dirt.png^default_grass_side.png"}, | 	tiles = {"default_grass_footsteps.png", "default_dirt.png", "default_dirt.png^default_grass_side.png"}, | ||||||
| 	is_ground_content = true, | 	is_ground_content = true, | ||||||
| 	groups = {crumbly=3}, | 	groups = {crumbly=3, not_in_creative_inventory=1}, | ||||||
| 	drop = 'default:dirt', | 	drop = 'default:dirt', | ||||||
| 	sounds = default.node_sound_dirt_defaults({ | 	sounds = default.node_sound_dirt_defaults({ | ||||||
| 		footstep = {name="default_grass_footstep", gain=0.4}, | 		footstep = {name="default_grass_footstep", gain=0.4}, | ||||||
| @@ -988,6 +988,7 @@ minetest.register_node("default:cloud", { | |||||||
| 	tiles = {"default_cloud.png"}, | 	tiles = {"default_cloud.png"}, | ||||||
| 	is_ground_content = true, | 	is_ground_content = true, | ||||||
| 	sounds = default.node_sound_defaults(), | 	sounds = default.node_sound_defaults(), | ||||||
|  | 	groups = {not_in_creative_inventory=1}, | ||||||
| }) | }) | ||||||
|  |  | ||||||
| minetest.register_node("default:water_flowing", { | minetest.register_node("default:water_flowing", { | ||||||
| @@ -1010,7 +1011,7 @@ minetest.register_node("default:water_flowing", { | |||||||
| 	liquid_alternative_source = "default:water_source", | 	liquid_alternative_source = "default:water_source", | ||||||
| 	liquid_viscosity = WATER_VISC, | 	liquid_viscosity = WATER_VISC, | ||||||
| 	post_effect_color = {a=64, r=100, g=100, b=200}, | 	post_effect_color = {a=64, r=100, g=100, b=200}, | ||||||
| 	groups = {water=3, liquid=3, puts_out_fire=1}, | 	groups = {water=3, liquid=3, puts_out_fire=1, not_in_creative_inventory=1}, | ||||||
| }) | }) | ||||||
|  |  | ||||||
| minetest.register_node("default:water_source", { | minetest.register_node("default:water_source", { | ||||||
| @@ -1065,7 +1066,7 @@ minetest.register_node("default:lava_flowing", { | |||||||
| 	liquid_viscosity = LAVA_VISC, | 	liquid_viscosity = LAVA_VISC, | ||||||
| 	damage_per_second = 4*2, | 	damage_per_second = 4*2, | ||||||
| 	post_effect_color = {a=192, r=255, g=64, b=0}, | 	post_effect_color = {a=192, r=255, g=64, b=0}, | ||||||
| 	groups = {lava=3, liquid=2, hot=3, igniter=1}, | 	groups = {lava=3, liquid=2, hot=3, igniter=1, not_in_creative_inventory=1}, | ||||||
| }) | }) | ||||||
|  |  | ||||||
| minetest.register_node("default:lava_source", { | minetest.register_node("default:lava_source", { | ||||||
| @@ -1097,7 +1098,12 @@ minetest.register_node("default:lava_source", { | |||||||
| minetest.register_node("default:torch", { | minetest.register_node("default:torch", { | ||||||
| 	description = "Torch", | 	description = "Torch", | ||||||
| 	drawtype = "torchlike", | 	drawtype = "torchlike", | ||||||
| 	tiles = {"default_torch_on_floor.png", "default_torch_on_ceiling.png", "default_torch.png"}, | 	--tiles = {"default_torch_on_floor.png", "default_torch_on_ceiling.png", "default_torch.png"}, | ||||||
|  | 	tiles = { | ||||||
|  | 		{name="default_torch_on_floor_animated.png", animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=3.0}}, | ||||||
|  | 		{name="default_torch_on_ceiling_animated.png", animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=3.0}}, | ||||||
|  | 		{name="default_torch_animated.png", animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=3.0}} | ||||||
|  | 	}, | ||||||
| 	inventory_image = "default_torch_on_floor.png", | 	inventory_image = "default_torch_on_floor.png", | ||||||
| 	wield_image = "default_torch_on_floor.png", | 	wield_image = "default_torch_on_floor.png", | ||||||
| 	paramtype = "light", | 	paramtype = "light", | ||||||
| @@ -1126,7 +1132,6 @@ minetest.register_node("default:sign_wall", { | |||||||
| 	paramtype2 = "wallmounted", | 	paramtype2 = "wallmounted", | ||||||
| 	sunlight_propagates = true, | 	sunlight_propagates = true, | ||||||
| 	walkable = false, | 	walkable = false, | ||||||
| 	metadata_name = "sign", |  | ||||||
| 	selection_box = { | 	selection_box = { | ||||||
| 		type = "wallmounted", | 		type = "wallmounted", | ||||||
| 		--wall_top = <default> | 		--wall_top = <default> | ||||||
| @@ -1164,7 +1169,7 @@ minetest.register_node("default:chest", { | |||||||
| 	on_construct = function(pos) | 	on_construct = function(pos) | ||||||
| 		local meta = minetest.env:get_meta(pos) | 		local meta = minetest.env:get_meta(pos) | ||||||
| 		meta:set_string("formspec", | 		meta:set_string("formspec", | ||||||
| 				"invsize[8,9;]".. | 				"size[8,9]".. | ||||||
| 				"list[current_name;main;0,0;8,4;]".. | 				"list[current_name;main;0,0;8,4;]".. | ||||||
| 				"list[current_player;main;0,5;8,4;]") | 				"list[current_player;main;0,5;8,4;]") | ||||||
| 		meta:set_string("infotext", "Chest") | 		meta:set_string("infotext", "Chest") | ||||||
| @@ -1176,24 +1181,17 @@ minetest.register_node("default:chest", { | |||||||
| 		local inv = meta:get_inventory() | 		local inv = meta:get_inventory() | ||||||
| 		return inv:is_empty("main") | 		return inv:is_empty("main") | ||||||
| 	end, | 	end, | ||||||
|     on_metadata_inventory_move = function(pos, from_list, from_index, | 	on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) | ||||||
| 			to_list, to_index, count, player) |  | ||||||
| 		minetest.log("action", player:get_player_name().. | 		minetest.log("action", player:get_player_name().. | ||||||
| 				" moves stuff in chest at "..minetest.pos_to_string(pos)) | 				" moves stuff in chest at "..minetest.pos_to_string(pos)) | ||||||
| 		return minetest.node_metadata_inventory_move_allow_all( |  | ||||||
| 				pos, from_list, from_index, to_list, to_index, count, player) |  | ||||||
| 	end, | 	end, | ||||||
|     on_metadata_inventory_offer = function(pos, listname, index, stack, player) |     on_metadata_inventory_put = function(pos, listname, index, stack, player) | ||||||
| 		minetest.log("action", player:get_player_name().. | 		minetest.log("action", player:get_player_name().. | ||||||
| 				" moves stuff to chest at "..minetest.pos_to_string(pos)) | 				" moves stuff to chest at "..minetest.pos_to_string(pos)) | ||||||
| 		return minetest.node_metadata_inventory_offer_allow_all( |  | ||||||
| 				pos, listname, index, stack, player) |  | ||||||
| 	end, | 	end, | ||||||
|     on_metadata_inventory_take = function(pos, listname, index, count, player) |     on_metadata_inventory_take = function(pos, listname, index, stack, player) | ||||||
| 		minetest.log("action", player:get_player_name().. | 		minetest.log("action", player:get_player_name().. | ||||||
| 				" takes stuff from chest at "..minetest.pos_to_string(pos)) | 				" takes stuff from chest at "..minetest.pos_to_string(pos)) | ||||||
| 		return minetest.node_metadata_inventory_take_allow_all( |  | ||||||
| 				pos, listname, index, count, player) |  | ||||||
| 	end, | 	end, | ||||||
| }) | }) | ||||||
|  |  | ||||||
| @@ -1221,7 +1219,7 @@ minetest.register_node("default:chest_locked", { | |||||||
| 	on_construct = function(pos) | 	on_construct = function(pos) | ||||||
| 		local meta = minetest.env:get_meta(pos) | 		local meta = minetest.env:get_meta(pos) | ||||||
| 		meta:set_string("formspec", | 		meta:set_string("formspec", | ||||||
| 				"invsize[8,9;]".. | 				"size[8,9]".. | ||||||
| 				"list[current_name;main;0,0;8,4;]".. | 				"list[current_name;main;0,0;8,4;]".. | ||||||
| 				"list[current_player;main;0,5;8,4;]") | 				"list[current_player;main;0,5;8,4;]") | ||||||
| 		meta:set_string("infotext", "Locked Chest") | 		meta:set_string("infotext", "Locked Chest") | ||||||
| @@ -1234,53 +1232,55 @@ minetest.register_node("default:chest_locked", { | |||||||
| 		local inv = meta:get_inventory() | 		local inv = meta:get_inventory() | ||||||
| 		return inv:is_empty("main") | 		return inv:is_empty("main") | ||||||
| 	end, | 	end, | ||||||
|     on_metadata_inventory_move = function(pos, from_list, from_index, | 	allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) | ||||||
| 			to_list, to_index, count, player) |  | ||||||
| 		local meta = minetest.env:get_meta(pos) | 		local meta = minetest.env:get_meta(pos) | ||||||
| 		if not has_locked_chest_privilege(meta, player) then | 		if not has_locked_chest_privilege(meta, player) then | ||||||
| 			minetest.log("action", player:get_player_name().. | 			minetest.log("action", player:get_player_name().. | ||||||
| 					" tried to access a locked chest belonging to ".. | 					" tried to access a locked chest belonging to ".. | ||||||
| 					meta:get_string("owner").." at ".. | 					meta:get_string("owner").." at ".. | ||||||
| 					minetest.pos_to_string(pos)) | 					minetest.pos_to_string(pos)) | ||||||
| 			return | 			return 0 | ||||||
| 		end | 		end | ||||||
|  | 		return count | ||||||
|  | 	end, | ||||||
|  |     allow_metadata_inventory_put = function(pos, listname, index, stack, player) | ||||||
|  | 		local meta = minetest.env:get_meta(pos) | ||||||
|  | 		if not has_locked_chest_privilege(meta, player) then | ||||||
|  | 			minetest.log("action", player:get_player_name().. | ||||||
|  | 					" tried to access a locked chest belonging to ".. | ||||||
|  | 					meta:get_string("owner").." at ".. | ||||||
|  | 					minetest.pos_to_string(pos)) | ||||||
|  | 			return 0 | ||||||
|  | 		end | ||||||
|  | 		return stack:get_count() | ||||||
|  | 	end, | ||||||
|  |     allow_metadata_inventory_take = function(pos, listname, index, stack, player) | ||||||
|  | 		local meta = minetest.env:get_meta(pos) | ||||||
|  | 		if not has_locked_chest_privilege(meta, player) then | ||||||
|  | 			minetest.log("action", player:get_player_name().. | ||||||
|  | 					" tried to access a locked chest belonging to ".. | ||||||
|  | 					meta:get_string("owner").." at ".. | ||||||
|  | 					minetest.pos_to_string(pos)) | ||||||
|  | 			return 0 | ||||||
|  | 		end | ||||||
|  | 		return stack:get_count() | ||||||
|  | 	end, | ||||||
|  | 	on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) | ||||||
| 		minetest.log("action", player:get_player_name().. | 		minetest.log("action", player:get_player_name().. | ||||||
| 				" moves stuff in locked chest at "..minetest.pos_to_string(pos)) | 				" moves stuff in locked chest at "..minetest.pos_to_string(pos)) | ||||||
| 		return minetest.node_metadata_inventory_move_allow_all( |  | ||||||
| 				pos, from_list, from_index, to_list, to_index, count, player) |  | ||||||
| 	end, | 	end, | ||||||
|     on_metadata_inventory_offer = function(pos, listname, index, stack, player) |     on_metadata_inventory_put = function(pos, listname, index, stack, player) | ||||||
| 		local meta = minetest.env:get_meta(pos) |  | ||||||
| 		if not has_locked_chest_privilege(meta, player) then |  | ||||||
| 			minetest.log("action", player:get_player_name().. |  | ||||||
| 					" tried to access a locked chest belonging to ".. |  | ||||||
| 					meta:get_string("owner").." at ".. |  | ||||||
| 					minetest.pos_to_string(pos)) |  | ||||||
| 			return stack |  | ||||||
| 		end |  | ||||||
| 		minetest.log("action", player:get_player_name().. | 		minetest.log("action", player:get_player_name().. | ||||||
| 				" moves stuff to locked chest at "..minetest.pos_to_string(pos)) | 				" moves stuff to locked chest at "..minetest.pos_to_string(pos)) | ||||||
| 		return minetest.node_metadata_inventory_offer_allow_all( |  | ||||||
| 				pos, listname, index, stack, player) |  | ||||||
| 	end, | 	end, | ||||||
|     on_metadata_inventory_take = function(pos, listname, index, count, player) |     on_metadata_inventory_take = function(pos, listname, index, stack, player) | ||||||
| 		local meta = minetest.env:get_meta(pos) |  | ||||||
| 		if not has_locked_chest_privilege(meta, player) then |  | ||||||
| 			minetest.log("action", player:get_player_name().. |  | ||||||
| 					" tried to access a locked chest belonging to ".. |  | ||||||
| 					meta:get_string("owner").." at ".. |  | ||||||
| 					minetest.pos_to_string(pos)) |  | ||||||
| 			return |  | ||||||
| 		end |  | ||||||
| 		minetest.log("action", player:get_player_name().. | 		minetest.log("action", player:get_player_name().. | ||||||
| 				" takes stuff from locked chest at "..minetest.pos_to_string(pos)) | 				" takes stuff from locked chest at "..minetest.pos_to_string(pos)) | ||||||
| 		return minetest.node_metadata_inventory_take_allow_all( |  | ||||||
| 				pos, listname, index, count, player) |  | ||||||
| 	end, | 	end, | ||||||
| }) | }) | ||||||
|  |  | ||||||
| default.furnace_inactive_formspec = | default.furnace_inactive_formspec = | ||||||
| 	"invsize[8,9;]".. | 	"size[8,9]".. | ||||||
| 	"image[2,2;1,1;default_furnace_fire_bg.png]".. | 	"image[2,2;1,1;default_furnace_fire_bg.png]".. | ||||||
| 	"list[current_name;fuel;2,3;1,1;]".. | 	"list[current_name;fuel;2,3;1,1;]".. | ||||||
| 	"list[current_name;src;2,1;1,1;]".. | 	"list[current_name;src;2,1;1,1;]".. | ||||||
| @@ -1325,7 +1325,7 @@ minetest.register_node("default:furnace_active", { | |||||||
| 	paramtype2 = "facedir", | 	paramtype2 = "facedir", | ||||||
| 	light_source = 8, | 	light_source = 8, | ||||||
| 	drop = "default:furnace", | 	drop = "default:furnace", | ||||||
| 	groups = {cracky=2}, | 	groups = {cracky=2, not_in_creative_inventory=1}, | ||||||
| 	legacy_facedir_simple = true, | 	legacy_facedir_simple = true, | ||||||
| 	sounds = default.node_sound_stone_defaults(), | 	sounds = default.node_sound_stone_defaults(), | ||||||
| 	on_construct = function(pos) | 	on_construct = function(pos) | ||||||
| @@ -1407,7 +1407,7 @@ minetest.register_abm({ | |||||||
| 					srcstack:take_item() | 					srcstack:take_item() | ||||||
| 					inv:set_stack("src", 1, srcstack) | 					inv:set_stack("src", 1, srcstack) | ||||||
| 				else | 				else | ||||||
| 					print("Could not insert '"..cooked.item.."'") | 					print("Could not insert '"..cooked.item:to_string().."'") | ||||||
| 				end | 				end | ||||||
| 				meta:set_string("src_time", 0) | 				meta:set_string("src_time", 0) | ||||||
| 			end | 			end | ||||||
| @@ -1419,7 +1419,7 @@ minetest.register_abm({ | |||||||
| 			meta:set_string("infotext","Furnace active: "..percent.."%") | 			meta:set_string("infotext","Furnace active: "..percent.."%") | ||||||
| 			hacky_swap_node(pos,"default:furnace_active") | 			hacky_swap_node(pos,"default:furnace_active") | ||||||
| 			meta:set_string("formspec", | 			meta:set_string("formspec", | ||||||
| 				"invsize[8,9;]".. | 				"size[8,9]".. | ||||||
| 				"image[2,2;1,1;default_furnace_fire_bg.png^[lowpart:".. | 				"image[2,2;1,1;default_furnace_fire_bg.png^[lowpart:".. | ||||||
| 						(100-percent)..":default_furnace_fire_fg.png]".. | 						(100-percent)..":default_furnace_fire_fg.png]".. | ||||||
| 				"list[current_name;fuel;2,3;1,1;]".. | 				"list[current_name;fuel;2,3;1,1;]".. | ||||||
| @@ -1603,40 +1603,6 @@ minetest.register_craftitem("default:scorched_stuff", { | |||||||
| 	inventory_image = "default_scorched_stuff.png", | 	inventory_image = "default_scorched_stuff.png", | ||||||
| }) | }) | ||||||
|  |  | ||||||
| -- |  | ||||||
| -- Creative inventory |  | ||||||
| -- |  | ||||||
|  |  | ||||||
| minetest.add_to_creative_inventory('default:pick_mese') |  | ||||||
| minetest.add_to_creative_inventory('default:pick_steel') |  | ||||||
| minetest.add_to_creative_inventory('default:axe_steel') |  | ||||||
| minetest.add_to_creative_inventory('default:shovel_steel') |  | ||||||
|  |  | ||||||
| minetest.add_to_creative_inventory('default:torch') |  | ||||||
| minetest.add_to_creative_inventory('default:cobble') |  | ||||||
| minetest.add_to_creative_inventory('default:dirt') |  | ||||||
| minetest.add_to_creative_inventory('default:stone') |  | ||||||
| minetest.add_to_creative_inventory('default:sand') |  | ||||||
| minetest.add_to_creative_inventory('default:sandstone') |  | ||||||
| minetest.add_to_creative_inventory('default:clay') |  | ||||||
| minetest.add_to_creative_inventory('default:brick') |  | ||||||
| minetest.add_to_creative_inventory('default:tree') |  | ||||||
| minetest.add_to_creative_inventory('default:wood') |  | ||||||
| minetest.add_to_creative_inventory('default:leaves') |  | ||||||
| minetest.add_to_creative_inventory('default:cactus') |  | ||||||
| minetest.add_to_creative_inventory('default:papyrus') |  | ||||||
| minetest.add_to_creative_inventory('default:bookshelf') |  | ||||||
| minetest.add_to_creative_inventory('default:glass') |  | ||||||
| minetest.add_to_creative_inventory('default:fence_wood') |  | ||||||
| minetest.add_to_creative_inventory('default:rail') |  | ||||||
| minetest.add_to_creative_inventory('default:mese') |  | ||||||
| minetest.add_to_creative_inventory('default:chest') |  | ||||||
| minetest.add_to_creative_inventory('default:furnace') |  | ||||||
| minetest.add_to_creative_inventory('default:sign_wall') |  | ||||||
| minetest.add_to_creative_inventory('default:water_source') |  | ||||||
| minetest.add_to_creative_inventory('default:lava_source') |  | ||||||
| minetest.add_to_creative_inventory('default:ladder') |  | ||||||
|  |  | ||||||
| -- | -- | ||||||
| -- Falling stuff | -- Falling stuff | ||||||
| -- | -- | ||||||
| @@ -1795,113 +1761,4 @@ function on_punchnode(p, node) | |||||||
| end | end | ||||||
| minetest.register_on_punchnode(on_punchnode) | minetest.register_on_punchnode(on_punchnode) | ||||||
|  |  | ||||||
| local function handle_give_command(cmd, giver, receiver, stackstring) |  | ||||||
| 	if not minetest.get_player_privs(giver)["give"] then |  | ||||||
| 		minetest.chat_send_player(giver, "error: you don't have permission to give") |  | ||||||
| 		return |  | ||||||
| 	end |  | ||||||
| 	minetest.debug("DEBUG: "..cmd..' invoked, stackstring="'..stackstring..'"') |  | ||||||
| 	minetest.log(cmd..' invoked, stackstring="'..stackstring..'"') |  | ||||||
| 	local itemstack = ItemStack(stackstring) |  | ||||||
| 	if itemstack:is_empty() then |  | ||||||
| 		minetest.chat_send_player(giver, 'error: cannot give an empty item') |  | ||||||
| 		return |  | ||||||
| 	elseif not itemstack:is_known() then |  | ||||||
| 		minetest.chat_send_player(giver, 'error: cannot give an unknown item') |  | ||||||
| 		return |  | ||||||
| 	end |  | ||||||
| 	local receiverref = minetest.env:get_player_by_name(receiver) |  | ||||||
| 	if receiverref == nil then |  | ||||||
| 		minetest.chat_send_player(giver, receiver..' is not a known player') |  | ||||||
| 		return |  | ||||||
| 	end |  | ||||||
| 	local leftover = receiverref:get_inventory():add_item("main", itemstack) |  | ||||||
| 	if leftover:is_empty() then |  | ||||||
| 		partiality = "" |  | ||||||
| 	elseif leftover:get_count() == itemstack:get_count() then |  | ||||||
| 		partiality = "could not be " |  | ||||||
| 	else |  | ||||||
| 		partiality = "partially " |  | ||||||
| 	end |  | ||||||
| 	-- The actual item stack string may be different from what the "giver" |  | ||||||
| 	-- entered (e.g. big numbers are always interpreted as 2^16-1). |  | ||||||
| 	stackstring = itemstack:to_string() |  | ||||||
| 	if giver == receiver then |  | ||||||
| 		minetest.chat_send_player(giver, '"'..stackstring |  | ||||||
| 			..'" '..partiality..'added to inventory.'); |  | ||||||
| 	else |  | ||||||
| 		minetest.chat_send_player(giver, '"'..stackstring |  | ||||||
| 			..'" '..partiality..'added to '..receiver..'\'s inventory.'); |  | ||||||
| 		minetest.chat_send_player(receiver, '"'..stackstring |  | ||||||
| 			..'" '..partiality..'added to inventory.'); |  | ||||||
| 	end |  | ||||||
| end |  | ||||||
|  |  | ||||||
| minetest.register_on_chat_message(function(name, message) |  | ||||||
| 	--print("default on_chat_message: name="..dump(name).." message="..dump(message)) |  | ||||||
| 	local cmd = "/giveme" |  | ||||||
| 	if message:sub(0, #cmd) == cmd then |  | ||||||
| 		local stackstring = string.match(message, cmd.." (.*)") |  | ||||||
| 		if stackstring == nil then |  | ||||||
| 			minetest.chat_send_player(name, 'usage: '..cmd..' stackstring') |  | ||||||
| 			return true -- Handled chat message |  | ||||||
| 		end |  | ||||||
| 		handle_give_command(cmd, name, name, stackstring) |  | ||||||
| 		return true |  | ||||||
| 	end |  | ||||||
| 	local cmd = "/give" |  | ||||||
| 	if message:sub(0, #cmd) == cmd then |  | ||||||
| 		local receiver, stackstring = string.match(message, cmd.." ([%a%d_-]+) (.*)") |  | ||||||
| 		if receiver == nil or stackstring == nil then |  | ||||||
| 			minetest.chat_send_player(name, 'usage: '..cmd..' name stackstring') |  | ||||||
| 			return true -- Handled chat message |  | ||||||
| 		end |  | ||||||
| 		handle_give_command(cmd, name, receiver, stackstring) |  | ||||||
| 		return true |  | ||||||
| 	end |  | ||||||
| 	local cmd = "/spawnentity" |  | ||||||
| 	if message:sub(0, #cmd) == cmd then |  | ||||||
| 		if not minetest.get_player_privs(name)["give"] then |  | ||||||
| 			minetest.chat_send_player(name, "you don't have permission to spawn (give)") |  | ||||||
| 			return true -- Handled chat message |  | ||||||
| 		end |  | ||||||
| 		if not minetest.get_player_privs(name)["interact"] then |  | ||||||
| 			minetest.chat_send_player(name, "you don't have permission to interact") |  | ||||||
| 			return true -- Handled chat message |  | ||||||
| 		end |  | ||||||
| 		local entityname = string.match(message, cmd.." (.*)") |  | ||||||
| 		if entityname == nil then |  | ||||||
| 			minetest.chat_send_player(name, 'usage: '..cmd..' entityname') |  | ||||||
| 			return true -- Handled chat message |  | ||||||
| 		end |  | ||||||
| 		print(cmd..' invoked, entityname="'..entityname..'"') |  | ||||||
| 		local player = minetest.env:get_player_by_name(name) |  | ||||||
| 		if player == nil then |  | ||||||
| 			print("Unable to spawn entity, player is nil") |  | ||||||
| 			return true -- Handled chat message |  | ||||||
| 		end |  | ||||||
| 		local p = player:getpos() |  | ||||||
| 		p.y = p.y + 1 |  | ||||||
| 		minetest.env:add_entity(p, entityname) |  | ||||||
| 		minetest.chat_send_player(name, '"'..entityname |  | ||||||
| 				..'" spawned.'); |  | ||||||
| 		return true -- Handled chat message |  | ||||||
| 	end |  | ||||||
| 	local cmd = "/pulverize" |  | ||||||
| 	if message:sub(0, #cmd) == cmd then |  | ||||||
| 		local player = minetest.env:get_player_by_name(name) |  | ||||||
| 		if player == nil then |  | ||||||
| 			print("Unable to pulverize, player is nil") |  | ||||||
| 			return true -- Handled chat message |  | ||||||
| 		end |  | ||||||
| 		if player:get_wielded_item():is_empty() then |  | ||||||
| 			minetest.chat_send_player(name, 'Unable to pulverize, no item in hand.') |  | ||||||
| 		else |  | ||||||
| 			player:set_wielded_item(nil) |  | ||||||
| 			minetest.chat_send_player(name, 'An item was pulverized.') |  | ||||||
| 		end |  | ||||||
| 		return true |  | ||||||
| 	end |  | ||||||
| end) |  | ||||||
|  |  | ||||||
| -- END | -- END | ||||||
|   | |||||||
							
								
								
									
										
											BIN
										
									
								
								mods/default/textures/default_torch_animated.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 1.4 KiB | 
							
								
								
									
										
											BIN
										
									
								
								mods/default/textures/default_torch_on_ceiling_animated.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 1.3 KiB | 
| Before Width: | Height: | Size: 232 B After Width: | Height: | Size: 282 B | 
							
								
								
									
										
											BIN
										
									
								
								mods/default/textures/default_torch_on_floor_animated.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 1.3 KiB | 
| @@ -15,7 +15,7 @@ minetest.register_alias('door_wood', 'doors:door_wood') | |||||||
| minetest.register_node( 'doors:door_wood', { | minetest.register_node( 'doors:door_wood', { | ||||||
| 	description         = 'Wooden Door', | 	description         = 'Wooden Door', | ||||||
| 	drawtype            = 'signlike', | 	drawtype            = 'signlike', | ||||||
| 	tile_images         = { 'door_wood.png' }, | 	tiles         		= { 'door_wood.png' }, | ||||||
| 	inventory_image     = 'door_wood.png', | 	inventory_image     = 'door_wood.png', | ||||||
| 	wield_image         = 'door_wood.png', | 	wield_image         = 'door_wood.png', | ||||||
| 	paramtype2          = 'wallmounted', | 	paramtype2          = 'wallmounted', | ||||||
| @@ -41,7 +41,7 @@ minetest.register_craft({ | |||||||
| minetest.register_node( 'doors:door_wood_a_c', { | minetest.register_node( 'doors:door_wood_a_c', { | ||||||
| 	Description         = 'Top Closed Door', | 	Description         = 'Top Closed Door', | ||||||
| 	drawtype            = 'signlike', | 	drawtype            = 'signlike', | ||||||
| 	tile_images         = { 'door_wood_a.png' }, | 	tiles         		= { 'door_wood_a.png' }, | ||||||
| 	inventory_image     = 'door_wood_a.png', | 	inventory_image     = 'door_wood_a.png', | ||||||
| 	paramtype           = 'light', | 	paramtype           = 'light', | ||||||
| 	paramtype2          = 'wallmounted', | 	paramtype2          = 'wallmounted', | ||||||
| @@ -55,7 +55,7 @@ minetest.register_node( 'doors:door_wood_a_c', { | |||||||
| minetest.register_node( 'doors:door_wood_b_c', { | minetest.register_node( 'doors:door_wood_b_c', { | ||||||
| 	Description         = 'Bottom Closed Door', | 	Description         = 'Bottom Closed Door', | ||||||
| 	drawtype            = 'signlike', | 	drawtype            = 'signlike', | ||||||
| 	tile_images         = { 'door_wood_b.png' }, | 	tiles         		= { 'door_wood_b.png' }, | ||||||
| 	inventory_image     = 'door_wood_b.png', | 	inventory_image     = 'door_wood_b.png', | ||||||
| 	paramtype           = 'light', | 	paramtype           = 'light', | ||||||
| 	paramtype2          = 'wallmounted', | 	paramtype2          = 'wallmounted', | ||||||
| @@ -69,7 +69,7 @@ minetest.register_node( 'doors:door_wood_b_c', { | |||||||
| minetest.register_node( 'doors:door_wood_a_o', { | minetest.register_node( 'doors:door_wood_a_o', { | ||||||
| 	Description         = 'Top Open Door', | 	Description         = 'Top Open Door', | ||||||
| 	drawtype            = 'signlike', | 	drawtype            = 'signlike', | ||||||
| 	tile_images         = { 'door_wood_a_r.png' }, | 	tiles         		= { 'door_wood_a_r.png' }, | ||||||
| 	inventory_image     = 'door_wood_a_r.png', | 	inventory_image     = 'door_wood_a_r.png', | ||||||
| 	paramtype           = 'light', | 	paramtype           = 'light', | ||||||
| 	paramtype2          = 'wallmounted', | 	paramtype2          = 'wallmounted', | ||||||
| @@ -83,7 +83,7 @@ minetest.register_node( 'doors:door_wood_a_o', { | |||||||
| minetest.register_node( 'doors:door_wood_b_o', { | minetest.register_node( 'doors:door_wood_b_o', { | ||||||
| 	Description         = 'Bottom Open Door', | 	Description         = 'Bottom Open Door', | ||||||
| 	drawtype            = 'signlike', | 	drawtype            = 'signlike', | ||||||
| 	tile_images         = { 'door_wood_b_r.png' }, | 	tiles         		= { 'door_wood_b_r.png' }, | ||||||
| 	inventory_image     = 'door_wood_b_r.png', | 	inventory_image     = 'door_wood_b_r.png', | ||||||
| 	paramtype           = 'light', | 	paramtype           = 'light', | ||||||
| 	paramtype2          = 'wallmounted', | 	paramtype2          = 'wallmounted', | ||||||
| @@ -107,12 +107,12 @@ end | |||||||
| local on_door_placed = function( pos, node, placer ) | local on_door_placed = function( pos, node, placer ) | ||||||
| 	if node.name ~= 'doors:door_wood' then return end | 	if node.name ~= 'doors:door_wood' then return end | ||||||
|  |  | ||||||
| 	upos = { x = pos.x, y = pos.y - 1, z = pos.z } | 	local upos = { x = pos.x, y = pos.y - 1, z = pos.z } | ||||||
| 	apos = { x = pos.x, y = pos.y + 1, z = pos.z } | 	local apos = { x = pos.x, y = pos.y + 1, z = pos.z } | ||||||
| 	und = minetest.env:get_node( upos ) | 	local und = minetest.env:get_node( upos ) | ||||||
| 	abv = minetest.env:get_node( apos ) | 	local abv = minetest.env:get_node( apos ) | ||||||
|  |  | ||||||
| 	dir = placer:get_look_dir() | 	local dir = placer:get_look_dir() | ||||||
|  |  | ||||||
| 	if     round( dir.x ) == 1  then | 	if     round( dir.x ) == 1  then | ||||||
| 		newparam = WALLMX | 		newparam = WALLMX | ||||||
| @@ -140,8 +140,8 @@ end | |||||||
| local on_door_punched = function( pos, node, puncher ) | local on_door_punched = function( pos, node, puncher ) | ||||||
| 	if string.find( node.name, 'doors:door_wood' ) == nil then return end | 	if string.find( node.name, 'doors:door_wood' ) == nil then return end | ||||||
|  |  | ||||||
| 	upos = { x = pos.x, y = pos.y - 1, z = pos.z } | 	local upos = { x = pos.x, y = pos.y - 1, z = pos.z } | ||||||
| 	apos = { x = pos.x, y = pos.y + 1, z = pos.z } | 	local apos = { x = pos.x, y = pos.y + 1, z = pos.z } | ||||||
|  |  | ||||||
| 	if string.find( node.name, '_c', -2 ) ~= nil then | 	if string.find( node.name, '_c', -2 ) ~= nil then | ||||||
| 		if     node.param2 == WALLPX then | 		if     node.param2 == WALLPX then | ||||||
| @@ -185,8 +185,8 @@ local on_door_punched = function( pos, node, puncher ) | |||||||
| end | end | ||||||
|  |  | ||||||
| local on_door_digged = function( pos, node, digger ) | local on_door_digged = function( pos, node, digger ) | ||||||
| 	upos = { x = pos.x, y = pos.y - 1, z = pos.z } | 	local upos = { x = pos.x, y = pos.y - 1, z = pos.z } | ||||||
| 	apos = { x = pos.x, y = pos.y + 1, z = pos.z } | 	local apos = { x = pos.x, y = pos.y + 1, z = pos.z } | ||||||
|  |  | ||||||
| 	if ( node.name == 'doors:door_wood_a_c' ) or ( node.name == 'doors:door_wood_a_o' ) then | 	if ( node.name == 'doors:door_wood_a_c' ) or ( node.name == 'doors:door_wood_a_o' ) then | ||||||
| 		minetest.env:remove_node( upos ) | 		minetest.env:remove_node( upos ) | ||||||
|   | |||||||
							
								
								
									
										15
									
								
								mods/dye/README.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,15 @@ | |||||||
|  | Minetest 0.4 mod: dye | ||||||
|  | ====================== | ||||||
|  |  | ||||||
|  | See init.lua for documentation. | ||||||
|  |  | ||||||
|  | License of source code and media files: | ||||||
|  | --------------------------------------- | ||||||
|  | Copyright (C) 2012 Perttu Ahola (celeron55) <celeron55@gmail.com> | ||||||
|  |  | ||||||
|  | This program is free software. It comes without any warranty, to | ||||||
|  | the extent permitted by applicable law. You can redistribute it | ||||||
|  | and/or modify it under the terms of the Do What The Fuck You Want | ||||||
|  | To Public License, Version 2, as published by Sam Hocevar. See | ||||||
|  | http://sam.zoy.org/wtfpl/COPYING for more details. | ||||||
|  |  | ||||||
							
								
								
									
										0
									
								
								mods/dye/depends.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										134
									
								
								mods/dye/init.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,134 @@ | |||||||
|  | -- minetest/dye/init.lua | ||||||
|  |  | ||||||
|  | -- To make recipes that will work with any dye ever made by anybody, define | ||||||
|  | -- them based on groups. | ||||||
|  | -- You can select any group of groups, based on your need for amount of colors. | ||||||
|  | -- basecolor: 9, excolor: 17, unicolor: 89 | ||||||
|  | -- | ||||||
|  | -- Example of one shapeless recipe using a color group: | ||||||
|  | -- Note: As this uses basecolor_*, you'd need 9 of these. | ||||||
|  | -- minetest.register_craft({ | ||||||
|  | --     type = "shapeless", | ||||||
|  | --     output = '<mod>:item_yellow', | ||||||
|  | --     recipe = {'<mod>:item_no_color', 'group:basecolor_yellow'}, | ||||||
|  | -- }) | ||||||
|  |  | ||||||
|  | -- Other mods can use these for looping through available colors | ||||||
|  | local dye = {} | ||||||
|  | dye.basecolors = {"white", "grey", "black", "red", "yellow", "green", "cyan", "blue", "magenta"} | ||||||
|  | dye.excolors = {"white", "lightgrey", "grey", "darkgrey", "black", "red", "orange", "yellow", "lime", "green", "aqua", "cyan", "sky_blue", "blue", "violet", "magenta", "red_violet"} | ||||||
|  |  | ||||||
|  | -- Base color groups: | ||||||
|  | -- - basecolor_white | ||||||
|  | -- - basecolor_grey | ||||||
|  | -- - basecolor_black | ||||||
|  | -- - basecolor_red | ||||||
|  | -- - basecolor_yellow | ||||||
|  | -- - basecolor_green | ||||||
|  | -- - basecolor_cyan | ||||||
|  | -- - basecolor_blue | ||||||
|  | -- - basecolor_magenta | ||||||
|  |  | ||||||
|  | -- Extended color groups (* = equal to a base color): | ||||||
|  | -- * excolor_white | ||||||
|  | -- - excolor_lightgrey | ||||||
|  | -- * excolor_grey | ||||||
|  | -- - excolor_darkgrey | ||||||
|  | -- * excolor_black | ||||||
|  | -- * excolor_red | ||||||
|  | -- - excolor_orange | ||||||
|  | -- * excolor_yellow | ||||||
|  | -- - excolor_lime | ||||||
|  | -- * excolor_green | ||||||
|  | -- - excolor_aqua | ||||||
|  | -- * excolor_cyan | ||||||
|  | -- - excolor_sky_blue | ||||||
|  | -- * excolor_blue | ||||||
|  | -- - excolor_violet | ||||||
|  | -- * excolor_magenta | ||||||
|  | -- - excolor_red_violet | ||||||
|  |  | ||||||
|  | -- The whole unifieddyes palette as groups: | ||||||
|  | -- - unicolor_<excolor> | ||||||
|  | -- For the following, no white/grey/black is allowed: | ||||||
|  | -- - unicolor_medium_<excolor> | ||||||
|  | -- - unicolor_dark_<excolor> | ||||||
|  | -- - unicolor_light_<excolor> | ||||||
|  | -- - unicolor_<excolor>_s50 | ||||||
|  | -- - unicolor_medium_<excolor>_s50 | ||||||
|  | -- - unicolor_dark_<excolor>_s50 | ||||||
|  |  | ||||||
|  | -- Local stuff | ||||||
|  | local dyelocal = {} | ||||||
|  |  | ||||||
|  | -- This collection of colors is partly a historic thing, partly something else. | ||||||
|  | dyelocal.dyes = { | ||||||
|  | 	{"white",      "White dye",     {dye=1, basecolor_white=1,   excolor_white=1,     unicolor_white=1}}, | ||||||
|  | 	{"grey",       "Grey dye",      {dye=1, basecolor_grey=1,    excolor_grey=1,      unicolor_grey=1}}, | ||||||
|  | 	{"dark_grey",  "Dark grey dye", {dye=1, basecolor_grey=1,    excolor_darkgrey=1,  unicolor_darkgrey=1}}, | ||||||
|  | 	{"black",      "Black dye",     {dye=1, basecolor_black=1,   excolor_black=1,     unicolor_black=1}}, | ||||||
|  | 	{"violet",     "Violet dye",    {dye=1, basecolor_magenta=1, excolor_violet=1,    unicolor_violet=1}}, | ||||||
|  | 	{"blue",       "Blue dye",      {dye=1, basecolor_blue=1,    excolor_blue=1,      unicolor_blue=1}}, | ||||||
|  | 	{"cyan",       "Cyan dye",      {dye=1, basecolor_cyan=1,    excolor_cyan=1,      unicolor_cyan=1}}, | ||||||
|  | 	{"dark_green", "Dark green dye",{dye=1, basecolor_green=1,   excolor_green=1,     unicolor_dark_green=1}}, | ||||||
|  | 	{"green",      "Green dye",     {dye=1, basecolor_green=1,   excolor_green=1,     unicolor_green=1}}, | ||||||
|  | 	{"yellow",     "Yellow dye",    {dye=1, basecolor_yellow=1,  excolor_yellow=1,    unicolor_yellow=1}}, | ||||||
|  | 	{"brown",      "Brown dye",     {dye=1, basecolor_yellow=1,  excolor_orange=1,    unicolor_dark_orange=1}}, | ||||||
|  | 	{"orange",     "Orange dye",    {dye=1, basecolor_orange=1,  excolor_orange=1,    unicolor_orange=1}}, | ||||||
|  | 	{"red",        "Red dye",       {dye=1, basecolor_red=1,     excolor_red=1,       unicolor_red=1}}, | ||||||
|  | 	{"magenta",    "Magenta dye",   {dye=1, basecolor_magenta=1, excolor_red_violet=1,unicolor_red_violet=1}}, | ||||||
|  | 	{"pink",       "Pink dye",      {dye=1, basecolor_red=1,     excolor_red=1,       unicolor_light_red=1}}, | ||||||
|  | } | ||||||
|  |  | ||||||
|  | -- Define items | ||||||
|  | for _, row in ipairs(dyelocal.dyes) do | ||||||
|  | 	local name = row[1] | ||||||
|  | 	local description = row[2] | ||||||
|  | 	local groups = row[3] | ||||||
|  | 	local item_name = "dye:"..name | ||||||
|  | 	local item_image = "dye_"..name..".png" | ||||||
|  | 	minetest.register_craftitem(item_name, { | ||||||
|  | 		inventory_image = item_image, | ||||||
|  | 		description = description, | ||||||
|  | 		groups = groups | ||||||
|  | 	}) | ||||||
|  | end | ||||||
|  |  | ||||||
|  | -- Mix recipes | ||||||
|  | -- Just mix everything to everything somehow sanely | ||||||
|  |  | ||||||
|  | dyelocal.mixbases = {"magenta", "red", "orange", "brown", "yellow", "green", "dark_green", "cyan", "blue", "violet", "black", "dark_grey", "grey", "white"} | ||||||
|  |  | ||||||
|  | dyelocal.mixes = { | ||||||
|  | 	--       magenta,  red,    orange,   brown,    yellow,  green,  dark_green, cyan,    blue,   violet,   black,  dark_grey,  grey,   white | ||||||
|  | 	white = {"pink",  "pink", "orange", "orange", "yellow", "green", "green",  "grey",  "cyan", "violet",  "grey",  "grey",   "white", "white"}, | ||||||
|  | 	grey  = {"pink",  "pink", "orange", "orange", "yellow", "green", "green",  "grey",  "cyan",  "pink",  "dark_grey","grey", "grey"}, | ||||||
|  | 	dark_grey={"brown","brown", "brown", "brown", "brown","dark_green","dark_green","blue","blue","violet","black", "black"}, | ||||||
|  | 	black = {"black", "black", "black",  "black", "black",  "black", "black",  "black", "black", "black",  "black"}, | ||||||
|  | 	violet= {"magenta","magenta","red",  "brown", "red",    "cyan",  "brown",  "blue",  "violet","violet"}, | ||||||
|  | 	blue  = {"violet", "magenta","brown","brown","dark_green","cyan","cyan",   "cyan",  "blue"}, | ||||||
|  | 	cyan  = {"blue","brown","dark_green","dark_grey","green","cyan","dark_green","cyan"}, | ||||||
|  | 	dark_green={"brown","brown","brown", "brown", "green",  "green", "dark_green"}, | ||||||
|  | 	green = {"brown", "yellow","yellow","dark_green","green","green"}, | ||||||
|  | 	yellow= {"red",  "orange", "yellow","orange", "yellow"}, | ||||||
|  | 	brown = {"brown", "brown","orange", "brown"}, | ||||||
|  | 	orange= {"red",  "orange","orange"}, | ||||||
|  | 	red   = {"magenta","red"}, | ||||||
|  | 	magenta={"magenta"}, | ||||||
|  | } | ||||||
|  |  | ||||||
|  | for one,results in pairs(dyelocal.mixes) do | ||||||
|  | 	for i,result in ipairs(results) do | ||||||
|  | 		local another = dyelocal.mixbases[i] | ||||||
|  | 		minetest.register_craft({ | ||||||
|  | 			type = "shapeless", | ||||||
|  | 			output = 'dye:'..result..' 2', | ||||||
|  | 			recipe = {'dye:'..one, 'dye:'..another}, | ||||||
|  | 		}) | ||||||
|  | 	end | ||||||
|  | end | ||||||
|  |  | ||||||
|  | -- Hide dyelocal | ||||||
|  | dyelocal = nil | ||||||
|  |  | ||||||
|  | -- EOF | ||||||
							
								
								
									
										
											BIN
										
									
								
								mods/dye/textures/dye_black.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 364 B | 
							
								
								
									
										
											BIN
										
									
								
								mods/dye/textures/dye_blue.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 352 B | 
							
								
								
									
										
											BIN
										
									
								
								mods/dye/textures/dye_brown.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 348 B | 
							
								
								
									
										
											BIN
										
									
								
								mods/dye/textures/dye_cyan.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 370 B | 
							
								
								
									
										
											BIN
										
									
								
								mods/dye/textures/dye_dark_green.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 367 B | 
							
								
								
									
										
											BIN
										
									
								
								mods/dye/textures/dye_dark_grey.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 371 B | 
							
								
								
									
										
											BIN
										
									
								
								mods/dye/textures/dye_green.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 376 B | 
							
								
								
									
										
											BIN
										
									
								
								mods/dye/textures/dye_grey.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 374 B | 
							
								
								
									
										
											BIN
										
									
								
								mods/dye/textures/dye_magenta.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 380 B | 
							
								
								
									
										
											BIN
										
									
								
								mods/dye/textures/dye_orange.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 374 B | 
							
								
								
									
										
											BIN
										
									
								
								mods/dye/textures/dye_pink.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 364 B | 
							
								
								
									
										
											BIN
										
									
								
								mods/dye/textures/dye_red.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 381 B | 
							
								
								
									
										
											BIN
										
									
								
								mods/dye/textures/dye_violet.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 376 B | 
							
								
								
									
										
											BIN
										
									
								
								mods/dye/textures/dye_white.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 375 B | 
							
								
								
									
										
											BIN
										
									
								
								mods/dye/textures/dye_yellow.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 389 B | 
| @@ -3,7 +3,7 @@ | |||||||
| minetest.register_node("fire:basic_flame", { | minetest.register_node("fire:basic_flame", { | ||||||
| 	description = "Fire", | 	description = "Fire", | ||||||
| 	drawtype = "glasslike", | 	drawtype = "glasslike", | ||||||
| 	tile_images = {"fire_basic_flame.png"}, | 	tiles = {"fire_basic_flame.png"}, | ||||||
| 	light_source = 14, | 	light_source = 14, | ||||||
| 	groups = {igniter=2,dig_immediate=3}, | 	groups = {igniter=2,dig_immediate=3}, | ||||||
| 	drop = '', | 	drop = '', | ||||||
|   | |||||||
| @@ -102,6 +102,7 @@ minetest.register_craftitem(":cooked_rat", { | |||||||
| minetest.register_craftitem(":firefly", { | minetest.register_craftitem(":firefly", { | ||||||
| 	description = "Firefly", | 	description = "Firefly", | ||||||
| 	inventory_image = "firefly.png", | 	inventory_image = "firefly.png", | ||||||
|  | 	groups = {not_in_creative_inventory=1}, | ||||||
| 	on_drop = function(item, dropper, pos) | 	on_drop = function(item, dropper, pos) | ||||||
| 		minetest.env:add_firefly(pos) | 		minetest.env:add_firefly(pos) | ||||||
| 		item:take_item() | 		item:take_item() | ||||||
|   | |||||||
							
								
								
									
										45
									
								
								mods/vessels/README.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,45 @@ | |||||||
|  | Minetest 0.4 mod: vessels | ||||||
|  | ========================== | ||||||
|  |  | ||||||
|  | Crafts | ||||||
|  | ------- | ||||||
|  | Glass bottle (yields 10) | ||||||
|  |  | ||||||
|  |    G - G | ||||||
|  |    G - G | ||||||
|  |    - G - | ||||||
|  |  | ||||||
|  | Drinking Glass (yields 14) | ||||||
|  |  | ||||||
|  |    G - G | ||||||
|  |    G - G | ||||||
|  |    G G G | ||||||
|  |  | ||||||
|  | Heavy Steel Bottle (yields 5) | ||||||
|  |  | ||||||
|  |    S - S | ||||||
|  |    S - S | ||||||
|  |    - S - | ||||||
|  |  | ||||||
|  | License of source code: | ||||||
|  | ----------------------- | ||||||
|  | Copyright (C) 2012 Vanessa Ezekowitz | ||||||
|  | Version 2012-09-02 | ||||||
|  | Modifications by Perttu Ahola <celeron55@gmail.com> | ||||||
|  |  | ||||||
|  | This program is free software; you can redistribute it and/or modify | ||||||
|  | it under the terms of the GNU Lesser General Public License as published by | ||||||
|  | the Free Software Foundation; either version 2.1 of the License, or | ||||||
|  | (at your option) any later version. | ||||||
|  |  | ||||||
|  | http://www.gnu.org/licenses/lgpl-2.1.html | ||||||
|  |  | ||||||
|  | License of media (textures and sounds) | ||||||
|  | -------------------------------------- | ||||||
|  | WTFPL | ||||||
|  |  | ||||||
|  | Authors of media files | ||||||
|  | ----------------------- | ||||||
|  | Unless specifically noted, | ||||||
|  | Copyright (C) 2012 Vanessa Ezekowitz | ||||||
|  |  | ||||||
							
								
								
									
										1
									
								
								mods/vessels/depends.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1 @@ | |||||||
|  | default | ||||||
							
								
								
									
										86
									
								
								mods/vessels/init.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,86 @@ | |||||||
|  | -- Minetest 0.4 mod: vessels | ||||||
|  | -- See README.txt for licensing and other information. | ||||||
|  |  | ||||||
|  | minetest.register_craftitem("vessels:glass_bottle", { | ||||||
|  | 	description = "Glass Bottle (empty)", | ||||||
|  | 	inventory_image = "vessels_glass_bottle.png", | ||||||
|  | 	groups = {vessel=1}, | ||||||
|  | }) | ||||||
|  |  | ||||||
|  | minetest.register_craft( { | ||||||
|  | 	output = "vessels:glass_bottle 10", | ||||||
|  | 	recipe = { | ||||||
|  | 		{ "default:glass", "", "default:glass" }, | ||||||
|  | 		{ "default:glass", "", "default:glass" }, | ||||||
|  | 		{ "", "default:glass", "" } | ||||||
|  | 	} | ||||||
|  | }) | ||||||
|  |  | ||||||
|  | minetest.register_craftitem("vessels:drinking_glass", { | ||||||
|  | 	description = "Drinking Glass (empty)", | ||||||
|  | 	inventory_image = "vessels_drinking_glass.png", | ||||||
|  | 	groups = {vessel=1}, | ||||||
|  | }) | ||||||
|  |  | ||||||
|  | minetest.register_craft( { | ||||||
|  | 	output = "vessels:drinking_glass 14", | ||||||
|  | 	recipe = { | ||||||
|  | 		{ "default:glass", "", "default:glass" }, | ||||||
|  | 		{ "default:glass", "", "default:glass" }, | ||||||
|  | 		{ "default:glass", "default:glass", "default:glass" } | ||||||
|  | 	} | ||||||
|  | }) | ||||||
|  |  | ||||||
|  | minetest.register_craftitem("vessels:steel_bottle", { | ||||||
|  | 	description = "Heavy Steel Bottle (empty)", | ||||||
|  | 	inventory_image = "vessels_steel_bottle.png", | ||||||
|  | 	groups = {vessel=1}, | ||||||
|  | }) | ||||||
|  |  | ||||||
|  | minetest.register_craft( { | ||||||
|  | 	output = "vessels:steel_bottle 5", | ||||||
|  | 	recipe = { | ||||||
|  | 		{ "default:steel_ingot", "", "default:steel_ingot" }, | ||||||
|  | 		{ "default:steel_ingot", "", "default:steel_ingot" }, | ||||||
|  | 		{ "", "default:steel_ingot", "" } | ||||||
|  | 	} | ||||||
|  | }) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | -- Make sure we can recycle them | ||||||
|  |  | ||||||
|  | minetest.register_craftitem("vessels:glass_fragments", { | ||||||
|  | 	description = "Pile of Glass Fragments", | ||||||
|  | 	inventory_image = "vessels_glass_fragments.png", | ||||||
|  | }) | ||||||
|  |  | ||||||
|  | minetest.register_craft( { | ||||||
|  | 	type = "shapeless", | ||||||
|  | 	output = "vessels:glass_fragments", | ||||||
|  | 	recipe = { | ||||||
|  | 		"vessels:glass_bottle", | ||||||
|  | 		"vessels:glass_bottle", | ||||||
|  | 	}, | ||||||
|  | }) | ||||||
|  |  | ||||||
|  | minetest.register_craft( { | ||||||
|  | 	type = "shapeless", | ||||||
|  | 	output = "vessels:glass_fragments", | ||||||
|  | 	recipe = { | ||||||
|  | 		"vessels:drinking_glass", | ||||||
|  | 		"vessels:drinking_glass", | ||||||
|  | 	}, | ||||||
|  | }) | ||||||
|  |  | ||||||
|  | minetest.register_craft({ | ||||||
|  | 	type = "cooking", | ||||||
|  | 	output = "default:glass", | ||||||
|  | 	recipe = "vessels:glass_fragments", | ||||||
|  | }) | ||||||
|  |  | ||||||
|  | minetest.register_craft( { | ||||||
|  | 	type = "cooking", | ||||||
|  | 	output = "default:steel_ingot", | ||||||
|  | 	recipe = "vessels:steel_bottle", | ||||||
|  | }) | ||||||
|  |  | ||||||
							
								
								
									
										
											BIN
										
									
								
								mods/vessels/textures/alternates/vessels_drinking_glass.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 253 B | 
							
								
								
									
										
											BIN
										
									
								
								mods/vessels/textures/alternates/vessels_glass_bottle.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 242 B | 
							
								
								
									
										
											BIN
										
									
								
								mods/vessels/textures/alternates/vessels_steel_bottle.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 345 B | 
							
								
								
									
										
											BIN
										
									
								
								mods/vessels/textures/vessels_drinking_glass.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 338 B | 
							
								
								
									
										
											BIN
										
									
								
								mods/vessels/textures/vessels_glass_bottle.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 405 B | 
							
								
								
									
										
											BIN
										
									
								
								mods/vessels/textures/vessels_glass_fragments.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 425 B | 
							
								
								
									
										
											BIN
										
									
								
								mods/vessels/textures/vessels_steel_bottle.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 342 B | 
							
								
								
									
										28
									
								
								mods/wool/README.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,28 @@ | |||||||
|  | Minetest 0.4 mod: wool | ||||||
|  | ====================== | ||||||
|  |  | ||||||
|  | Mostly backward-compatible with jordach's 16-color wool mod. | ||||||
|  |  | ||||||
|  | License of source code: | ||||||
|  | ----------------------- | ||||||
|  | Copyright (C) 2012 Perttu Ahola (celeron55) <celeron55@gmail.com> | ||||||
|  |  | ||||||
|  | This program is free software. It comes without any warranty, to | ||||||
|  | the extent permitted by applicable law. You can redistribute it | ||||||
|  | and/or modify it under the terms of the Do What The Fuck You Want | ||||||
|  | To Public License, Version 2, as published by Sam Hocevar. See | ||||||
|  | http://sam.zoy.org/wtfpl/COPYING for more details. | ||||||
|  |  | ||||||
|  | License of media (textures and sounds) | ||||||
|  | -------------------------------------- | ||||||
|  | Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) | ||||||
|  | http://creativecommons.org/licenses/by-sa/3.0/ | ||||||
|  |  | ||||||
|  | Authors of media files | ||||||
|  | ----------------------- | ||||||
|  | Cisoun: | ||||||
|  | - wool_black.png wool_brown.png wool_dark_green.png wool_green.png | ||||||
|  | - wool_magenta.png wool_pink.png wool_violet.png wool_yellow.png wool_blue.png | ||||||
|  | - wool_cyan.png wool_dark_grey.png wool_grey.png wool_orange.png wool_red.png | ||||||
|  | - wool_white.png | ||||||
|  |  | ||||||
							
								
								
									
										0
									
								
								mods/wool/depends.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										48
									
								
								mods/wool/init.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,48 @@ | |||||||
|  | -- minetest/wool/init.lua | ||||||
|  |  | ||||||
|  | -- Backwards compatibility with jordach's 16-color wool mod | ||||||
|  | minetest.register_alias("wool:dark_blue", "wool:blue") | ||||||
|  | minetest.register_alias("wool:gold", "wool:yellow") | ||||||
|  |  | ||||||
|  | local wool = {} | ||||||
|  | -- This uses a trick: you can first define the recipes using all of the base | ||||||
|  | -- colors, and then some recipes using more specific colors for a few non-base | ||||||
|  | -- colors available. When crafting, the last recipes will be checked first. | ||||||
|  | wool.dyes = { | ||||||
|  | 	{"white",      "White",      nil}, | ||||||
|  | 	{"grey",       "Grey",       "basecolor_grey"}, | ||||||
|  | 	{"black",      "Black",      "basecolor_black"}, | ||||||
|  | 	{"red",        "Red",        "basecolor_red"}, | ||||||
|  | 	{"yellow",     "Yellow",     "basecolor_yellow"}, | ||||||
|  | 	{"green",      "Green",      "basecolor_green"}, | ||||||
|  | 	{"cyan",       "Cyan",       "basecolor_cyan"}, | ||||||
|  | 	{"blue",       "Blue",       "basecolor_blue"}, | ||||||
|  | 	{"magenta",    "Magenta",    "basecolor_magenta"}, | ||||||
|  | 	{"orange",     "Orange",     "excolor_orange"}, | ||||||
|  | 	{"violet",     "Violet",     "excolor_violet"}, | ||||||
|  | 	{"brown",      "Brown",      "unicolor_dark_orange"}, | ||||||
|  | 	{"pink",       "Pink",       "unicolor_light_red"}, | ||||||
|  | 	{"dark_grey",  "Dark Grey",  "unicolor_darkgrey"}, | ||||||
|  | 	{"dark_green", "Dark Green", "unicolor_dark_green"}, | ||||||
|  | } | ||||||
|  |  | ||||||
|  | for _, row in ipairs(wool.dyes) do | ||||||
|  | 	local name = row[1] | ||||||
|  | 	local desc = row[2] | ||||||
|  | 	local craft_color_group = row[3] | ||||||
|  | 	-- Node Definition | ||||||
|  | 	minetest.register_node("wool:"..name, { | ||||||
|  | 		description = desc.." Wool", | ||||||
|  | 		tiles = {"wool_"..name..".png"}, | ||||||
|  | 		groups = {snappy=2,choppy=2,oddly_breakable_by_hand=3,flammable=3}, | ||||||
|  | 	}) | ||||||
|  | 	if craft_color_group then | ||||||
|  | 		-- Crafting from dye and white wool | ||||||
|  | 		minetest.register_craft({ | ||||||
|  | 			type = "shapeless", | ||||||
|  | 			output = 'wool:'..name..' 16', | ||||||
|  | 			recipe = {'group:dye,'..craft_color_group, 'wool:white'}, | ||||||
|  | 		}) | ||||||
|  | 	end | ||||||
|  | end | ||||||
|  |  | ||||||
							
								
								
									
										
											BIN
										
									
								
								mods/wool/textures/wool_black.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 3.1 KiB | 
							
								
								
									
										
											BIN
										
									
								
								mods/wool/textures/wool_blue.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 3.1 KiB | 
							
								
								
									
										
											BIN
										
									
								
								mods/wool/textures/wool_brown.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 3.2 KiB | 
							
								
								
									
										
											BIN
										
									
								
								mods/wool/textures/wool_cyan.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 3.2 KiB | 
							
								
								
									
										
											BIN
										
									
								
								mods/wool/textures/wool_dark_green.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 3.2 KiB | 
							
								
								
									
										
											BIN
										
									
								
								mods/wool/textures/wool_dark_grey.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 3.3 KiB | 
							
								
								
									
										
											BIN
										
									
								
								mods/wool/textures/wool_green.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 3.3 KiB | 
							
								
								
									
										
											BIN
										
									
								
								mods/wool/textures/wool_grey.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 3.4 KiB | 
							
								
								
									
										
											BIN
										
									
								
								mods/wool/textures/wool_magenta.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 3.3 KiB | 
							
								
								
									
										
											BIN
										
									
								
								mods/wool/textures/wool_orange.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 3.3 KiB | 
							
								
								
									
										
											BIN
										
									
								
								mods/wool/textures/wool_pink.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 3.0 KiB | 
							
								
								
									
										
											BIN
										
									
								
								mods/wool/textures/wool_red.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 3.3 KiB | 
							
								
								
									
										
											BIN
										
									
								
								mods/wool/textures/wool_violet.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 3.2 KiB | 
							
								
								
									
										
											BIN
										
									
								
								mods/wool/textures/wool_white.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 3.2 KiB | 
							
								
								
									
										
											BIN
										
									
								
								mods/wool/textures/wool_yellow.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 3.1 KiB |