summaryrefslogtreecommitdiff
path: root/modtemplate.lua
blob: f8104f01e1c52347c7491514df1ebc7b533f83ca (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
-- Generic colored-objects template by Vanessa Ezekowitz  ~~  2012-07-13

-- License: WTFPL

-- Before using this code, consult the README, particularly the "Semi-
-- automatic generation of textures" section at the end, which descibes the
-- use of the gentextures.sh BASH script included in this package.  You"ll
-- need to either follow those instructions or create your textures the usual,
-- manual way.  Without textures, this code won"t be very useful. :-)

-- When configured properly, this code creates node names that follow the
-- naming convention established in Unified Dyes, such as "mymod:red" or
-- "mymod:dark_yellow_s50".


-- ===========================================================================
-- Edit the next several variables to define what mod this template will
-- generate and how it should behave in general.
-- ===========================================================================

-- First, the standard machine-readable name of your mod

colored_block_modname = "template"

-- Human-readable description of the category of nodes you want to generate

colored_block_description = "My Colored Block"

-- The full node name of the neutral version of your main block as it
-- exists right after crafting or mining it, before any dyes have been
-- applied.  Typically, this should refer to the white version of your
-- mod's main block, but it can be anything as long as it makes sense.

neutral_block = colored_block_modname..":white"

-- This variable defines just how many of a given block a crafting operation
-- should give.  In most cases, the default (1) is correct.

colored_block_yield = "1"

-- If this object should let sunlight pass through it, set this to "true".
-- Otherwise, set it to "false" (the default).

colored_block_sunlight = "false"

-- If the node should be something you can stand on, set this to "true"
-- (the default).  Otherwise, set it to false.

colored_block_walkable = "true"

-- What groups should the generated nodes belong to?  Note that this must
-- be in the form of a table as in the default.

colored_block_groups = { snappy=3, flammable=2 }

-- What sound should be played when the node is digged?

colored_block_sound = "default.node_sound_leaves_defaults()"


-- ======================================================
-- You shouldn"t need to edit anything below this point.
-- ======================================================


-- ------------------------------------------------------------------
-- Generate all of the base color node definitions and all variations
-- except for the greyscale stuff.

-- Hues are on a 30 degree spacing starting at red = 0 degrees.
-- "s50" in a file/item name means "saturation: 50%".
-- Texture brightness levels for the colors are 100%, 66% ("medium"),
-- and 33% ("dark").

shades = {
	"dark_",
	"medium_",
	""		-- represents "no special shade name", e.g. bright.
}

shades2 = {
	"Dark ",
	"Medium ",
	""		-- represents "no special shade name", e.g. bright.
}

hues = {
	"red",
	"orange",
	"yellow",
	"lime",
	"green",
	"aqua",
	"cyan",
	"skyblue",
	"blue",
	"violet",
	"magenta",
	"redviolet"
}

hues2 = {
	"Red ",
	"Orange ",
	"Yellow ",
	"Lime ",
	"Green ",
	"Aqua ",
	"Cyan ",
	"Sky Blue ",
	"Blue ",
	"Violet ",
	"Magenta ",
	"Red-violet "
}

greys = {
	"black",
	"darkgrey",
	"mediumgrey",
	"lightgrey",
	"white"
}

greys2 = {
	"Black ",
	"Dark Grey ",
	"Medium Grey ",
	"Light Grey ",
	"White "
}

greys3 = {
	"black",
	"darkgrey_paint",
	"mediumgrey_paint",
	"lightgrey_paint",
	"white_paint"
}

for shade = 1, 3 do

	shadename = shades[shade]
	shadename2 = shades2[shade]

	for hue = 1, 12 do

		huename = hues[hue]
		huename2 = hues2[hue]

		colorname    = colored_block_modname..":"..shadename..huename
		pngname      = colored_block_modname.."_"..shadename..huename..".png"
		nodedesc     = shadename2..huename2..colored_block_description
		s50colorname = colored_block_modname..":"..shadename..huename.."_s50"
		s50pngname   = colored_block_modname.."_"..shadename..huename.."_s50.png"
		s50nodedesc  = shadename2..huename2..colored_block_description.." (50% Saturation)"

		minetest.register_node(colorname, {
			description = nodedesc,
			tiles = { pngname },
			inventory_image = pngname, 
			wield_image = pngname,
			sunlight_propagates = colored_block_sunlight,
			paramtype = "light",
			walkable = colored_block_walkable,
			groups = colored_block_groups,
			sounds = colored_block_sound
		})

		minetest.register_node(s50colorname, {
			description = s50nodedesc,
			tiles = { s50pngname },
			inventory_image = s50pngname, 
			wield_image = s50pngname,
			sunlight_propagates = colored_block_sunlight,
			paramtype = "light",
			walkable = colored_block_walkable,
			groups = colored_block_groups,
			sounds = colored_block_sound
		})

		minetest.register_craft( {
			type = "shapeless",
			output = colorname.." "..colored_block_yield,
			recipe = {
				neutral_block,
				"unifieddyes:"..shadename.."_"..huename
			}
		})

		minetest.register_craft( {
			type = "shapeless",
			output = colorname.." "..colored_block_yield,
			recipe = {
				neutral_block,
				"unifieddyes:"..shadename.."_"..huename.."_s50"
			}
		})

	end
end
	

-- ============================================================
-- The 5 levels of greyscale.
--
-- Oficially these are 0, 25, 50, 75, and 100% relative to white,
-- but in practice, they're actually 7.5%, 25%, 50%, 75%, and 95%.
-- (otherwise black and white would wash out).

for grey = 1,5 do

	greyname = greys[grey]
	greyname2 = greys2[grey]
	greyname3 = greys3[grey]

	greyshadename = colored_block_modname..":"..greyname
	pngname = colored_block_modname.."_"..greyname..".png"
	nodedesc = greyname2..colored_block_description

	minetest.register_node(greyshadename, {
		description = nodedesc,
		tiles = { pngname },
		inventory_image = pngname, 
		wield_image = pngname,
		sunlight_propagates = colored_block_sunlight,
		paramtype = "light",
		walkable = colored_block_walkable,
		groups = colored_block_groups,
		sounds = colored_block_sound
	})

	minetest.register_craft( {
		type = "shapeless",
		output = greyshadename.." "..colored_block_yield,
		recipe = {
			neutral_block,
			"unifieddyes:"..greyname3
		}
	})

end


print("[" .. colored_block_modname .. "] Loaded!")