Compare commits
40 Commits
Author | SHA1 | Date | |
---|---|---|---|
34299b01a0 | |||
295cd027f2 | |||
aacb377f8c | |||
80e5429bf3 | |||
0aa55cc4d7 | |||
b0ccff164d | |||
4d11406f8d | |||
e3b7e9d534 | |||
e981b29cd2 | |||
112ba73ed6 | |||
935f15c343 | |||
de61a1333b | |||
1b0e384278 | |||
3b942c352f | |||
8ea8b01dcc | |||
966166b1b9 | |||
aef03c1932 | |||
e146c55ca0 | |||
2fcae9d17d | |||
aeb179a129 | |||
0fbf6baa72 | |||
525a143398 | |||
4622d25e76 | |||
3e93c10cfd | |||
2959698111 | |||
b42376ba3d | |||
1c5d79800f | |||
b1ad76ab72 | |||
3f7fb1af74 | |||
4f1303aac1 | |||
1773af6868 | |||
1c7f403f29 | |||
00459f8859 | |||
1426efb517 | |||
7c48587c6a | |||
17522711de | |||
d21cbc129d | |||
8d49d58331 | |||
4d58fda283 | |||
127caef5b3 |
Before Width: | Height: | Size: 421 B After Width: | Height: | Size: 292 B |
@ -1,2 +1,4 @@
|
||||
default
|
||||
dye
|
||||
intllib?
|
||||
|
||||
|
1
description.txt
Normal file
@ -0,0 +1 @@
|
||||
Unified Dyes expands the standard dye set from 15 to 90 colors.
|
@ -1,183 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# This program auto-generates colorized textures for all 89 of the Unified
|
||||
# Dyes colors, based on one or two input files.
|
||||
|
||||
# Copyright (C) 2012-2013, Vanessa Ezekowitz
|
||||
# Email: vanessaezekowitz@gmail.com
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License along
|
||||
# with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
if [ -z "`which convert`" ] ; then {
|
||||
echo "Please install Imagemagick."
|
||||
exit 1
|
||||
} fi
|
||||
|
||||
if [ -z "`which bc`" ] ; then {
|
||||
echo "Please install GNU bc."
|
||||
exit 1
|
||||
} fi
|
||||
|
||||
if [ $1 = "-t" ] ; then {
|
||||
TINT_OVERLAY=$1
|
||||
BASE=$2
|
||||
COMPOSITE=$3
|
||||
} else {
|
||||
TINT_OVERLAY=""
|
||||
BASE=$1
|
||||
COMPOSITE=$2
|
||||
} fi
|
||||
|
||||
if [ -z $1 ] || [ $1 == "--help" ] || [ $1 == "-h" ] || [[ $1 == "-t" && -z $3 ]] ; then {
|
||||
|
||||
echo -e "\nUsage:
|
||||
\ngentextures.sh basename [overlay_filename]
|
||||
gentextures.sh -t basename overlay_filename
|
||||
|
||||
\nThis script requires up to three parameters which supply the base
|
||||
filename of the textures, an optional .png overlay, and possibly the
|
||||
'-t' switch. The 'basename' is the first part of the filename that your
|
||||
textures will use when your mod is done, which should almost always be
|
||||
the same as the one-word name of your mod. For example, if you supply
|
||||
the word 'mymod', this script will produce filenames like mymod_red.jpg
|
||||
or 'mymod_dark_blue_s50.jpg'. The texture that this script will read
|
||||
and recolor is derived from this parameter, and will be of the form
|
||||
'basename_base.jpg', i.e. 'mymod_base.jpg'. \nYou can also supply an
|
||||
overlay image filename. This image needs to be a .png or .gif or some
|
||||
other alpha-capable format supported by ImageMagick, and will be
|
||||
composited onto the output files after they have been colorized, but
|
||||
without being modified. This is useful when you have some part of your
|
||||
base image that will either get changed undesirably (for example, the
|
||||
mortar among several bricks, or the shading detail of a stone pattern).
|
||||
Simply draw two images: one containing the whole image to be colored,
|
||||
and one containing the parts that should not be changed, with either
|
||||
full or partial alpha transparency where the re-colored base image
|
||||
should show through. Skilled use of color and alpha on this overlay can
|
||||
lead to some interesting effects. \nIf you add '-t' as the first
|
||||
parameter, the script will switch to 'tint overlay' mode. For this mode
|
||||
to work, you must also supply the base name as usual, and you must
|
||||
include an overlay image filename. Rather than re-color the base
|
||||
texture, the script will alter the hue/saturation/value of the overlay
|
||||
texture file instead, and leave the base texture unchanged. When using
|
||||
this mode, the base texture should be drawn in some neutral color, but
|
||||
any color is fine if it results in what you wanted.\n"
|
||||
|
||||
|
||||
exit 1
|
||||
} fi
|
||||
|
||||
if [[ ! -e $BASE"_base.jpg" ]]; then {
|
||||
echo -e "\nThe basename '"$BASE"_base.jpg' was not found."
|
||||
echo -e "\nAborting.\n"
|
||||
exit 1
|
||||
} fi
|
||||
|
||||
if [[ ! -z $COMPOSITE && ! -e $COMPOSITE ]]; then {
|
||||
echo -e "\nThe requested composite file '"$COMPOSITE"' was not found."
|
||||
echo -e "\nAborting.\n"
|
||||
exit 1
|
||||
} fi
|
||||
|
||||
convert $BASE"_base.jpg" -modulate 1,2,3 tempfile.jpg 1>/dev/null 2>/dev/null
|
||||
|
||||
if (( $? )) ; then {
|
||||
echo -e "\nImagemagick failed while testing the base texture file."
|
||||
echo -e "\nEither the base file '"$BASE"_base.jpg' isn't an image,"
|
||||
echo "or it is broken, or Imagemagick itself just didn't work."
|
||||
echo -e "\nPlease check and correct your base image and try again."
|
||||
echo -e "\nAborting.\n"
|
||||
exit 1
|
||||
} fi
|
||||
|
||||
if [ ! -z $COMPOSITE ] ; then {
|
||||
convert $BASE"_base.jpg" -modulate 1,2,3 $COMPOSITE -composite tempfile.jpg 1>/dev/null 2>/dev/null
|
||||
|
||||
if (( $? )) ; then {
|
||||
echo -e "\nImagemagick failed while testing the composite file."
|
||||
echo -e "\nEither the composite file '"$COMPOSITE"' isn't an image"
|
||||
echo "or it is broken, or Imagemagick itself just didn't work."
|
||||
echo -e "\nPlease check and correct your composite image and try again."
|
||||
echo -e "\nAborting.\n"
|
||||
exit 1
|
||||
} fi
|
||||
} fi
|
||||
|
||||
rm tempfile.jpg
|
||||
|
||||
base_colors="red orange yellow lime green aqua cyan skyblue blue violet magenta redviolet"
|
||||
|
||||
echo -e -n "\nGenerating filenames based on "$BASE"_base.jpg"
|
||||
if [ ! -z $COMPOSITE ] ; then {
|
||||
echo ","
|
||||
echo -n "using "$COMPOSITE" as an overlay"
|
||||
} fi
|
||||
|
||||
if [ ! -z $TINT_OVERLAY ] ; then {
|
||||
echo ","
|
||||
echo -n "and tinting the overlay instead of the base texture"
|
||||
} fi
|
||||
|
||||
echo -e "...\n"
|
||||
|
||||
mkdir -p generated-textures
|
||||
|
||||
function generate_texture () {
|
||||
name=$1
|
||||
h=$2
|
||||
s=$3
|
||||
v=$4
|
||||
if [ -z $TINT_OVERLAY ]; then {
|
||||
if [ -z $COMPOSITE ]; then {
|
||||
convert $BASE"_base.jpg" -modulate $v,$s,$h -quality 97 "generated-textures/"$BASE"_"$name".jpg"
|
||||
} else {
|
||||
convert $BASE"_base.jpg" -modulate $v,$s,$h -quality 97 $COMPOSITE -composite "generated-textures/"$BASE"_"$name".jpg"
|
||||
} fi
|
||||
} else {
|
||||
convert $COMPOSITE -modulate $v,$s,$h -quality 97 MIFF:- | composite MIFF:- $BASE"_base.jpg" "generated-textures/"$BASE"_"$name".jpg"
|
||||
} fi
|
||||
}
|
||||
|
||||
hue=0
|
||||
for color_name in $base_colors ; do
|
||||
hue2=`echo "scale=10; ("$hue"*200/360)+100" |bc`
|
||||
echo $color_name "("$hue" degrees)"
|
||||
echo " dark"
|
||||
generate_texture "dark_"$color_name $hue2 100 33
|
||||
echo " medium"
|
||||
generate_texture "medium_"$color_name $hue2 100 66
|
||||
echo " full"
|
||||
generate_texture $color_name $hue2 100 100
|
||||
echo " light"
|
||||
generate_texture "light_"$color_name $hue2 100 150
|
||||
echo " dark, 50% saturation"
|
||||
generate_texture "dark_"$color_name"_s50" $hue2 50 33
|
||||
echo " medium, 50% saturation"
|
||||
generate_texture "medium_"$color_name"_s50" $hue2 50 66
|
||||
echo " full, 50% saturation"
|
||||
generate_texture $color_name"_s50" $hue2 50 100
|
||||
hue=$((hue+30))
|
||||
done
|
||||
|
||||
echo "greyscales"
|
||||
echo " black"
|
||||
generate_texture black 0 0 15
|
||||
echo " dark grey"
|
||||
generate_texture darkgrey 0 0 50
|
||||
echo " medium grey"
|
||||
generate_texture grey 0 0 100
|
||||
echo " light grey"
|
||||
generate_texture lightgrey 0 0 150
|
||||
echo " white"
|
||||
generate_texture white 0 0 190
|
177
gentextures.sh
@ -1,177 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# This program auto-generates colorized textures for all 89 of the Unified
|
||||
# Dyes colors, based on one or two input files.
|
||||
|
||||
# Copyright (C) 2012-2013, Vanessa Ezekowitz
|
||||
# Email: vanessaezekowitz@gmail.com
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License along
|
||||
# with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
if [ -z "`which convert`" ] ; then {
|
||||
echo "Please install Imagemagick."
|
||||
exit 1
|
||||
} fi
|
||||
|
||||
if [ -z "`which bc`" ] ; then {
|
||||
echo "Please install GNU bc."
|
||||
exit 1
|
||||
} fi
|
||||
|
||||
if [ $1 = "-t" ] ; then {
|
||||
TINT_OVERLAY=$1
|
||||
BASE=$2
|
||||
COMPOSITE=$3
|
||||
} else {
|
||||
TINT_OVERLAY=""
|
||||
BASE=$1
|
||||
COMPOSITE=$2
|
||||
} fi
|
||||
|
||||
if [ -z $1 ] || [ $1 == "--help" ] || [ $1 == "-h" ] || [[ $1 == "-t" && -z $3 ]] ; then {
|
||||
|
||||
echo -e "\nUsage:
|
||||
\ngentextures.sh basename [overlay_filename]
|
||||
gentextures.sh -t basename overlay_filename
|
||||
\nThis script requires up to three parameters which supply the base filename
|
||||
of the textures, an optional overlay, and possibly the '-t' switch. The
|
||||
'basename' is the first part of the filename that your textures will use when
|
||||
your mod is done, which should almost always be the same as the one-word name
|
||||
of your mod. For example, if you supply the word 'mymod', this script will
|
||||
produce filenames like mymod_red.png or 'mymod_dark_blue_s50.png'. The
|
||||
texture that this script will read and recolor is derived from this parameter,
|
||||
and will be of the form 'basename_base.png', i.e. 'mymod_base.png'.
|
||||
\nYou can also supply an optional overlay image filename. This image will be
|
||||
composited onto the output files after they have been colorized, but without
|
||||
being modified. This is useful when you have some part of your base image
|
||||
that will either get changed undesirably (for example, the mortar among
|
||||
several bricks, or the shading detail of a stone pattern). Simply draw two
|
||||
images: one containing the whole image to be colored, and one containing the
|
||||
parts that should not be changed, with either full or partial alpha
|
||||
transparency where the re-colored base image should show through. Skilled use
|
||||
of color and alpha on this overlay can lead to some interesting effects.
|
||||
\nIf you add '-t' as the first parameter, the script will switch to 'tint
|
||||
overlay' mode. For this mode to work, you must also supply the base name as
|
||||
usual, and you must include an overlay image filename. Rather than re-color
|
||||
the base texture, the script will alter the hue/saturation/value of the
|
||||
overlay texture file instead, and leave the base texture unchanged. When
|
||||
using this mode, the base texture should be drawn in some neutral color, but
|
||||
any color is fine if it results in what you wanted.\n"
|
||||
exit 1
|
||||
} fi
|
||||
|
||||
if [[ ! -e $BASE"_base.png" ]]; then {
|
||||
echo -e "\nThe basename '"$BASE"_base.png' was not found."
|
||||
echo -e "\nAborting.\n"
|
||||
exit 1
|
||||
} fi
|
||||
|
||||
if [[ ! -z $COMPOSITE && ! -e $COMPOSITE ]]; then {
|
||||
echo -e "\nThe requested composite file '"$COMPOSITE"' was not found."
|
||||
echo -e "\nAborting.\n"
|
||||
exit 1
|
||||
} fi
|
||||
|
||||
convert $BASE"_base.png" -modulate 1,2,3 tempfile.png 1>/dev/null 2>/dev/null
|
||||
|
||||
if (( $? )) ; then {
|
||||
echo -e "\nImagemagick failed while testing the base texture file."
|
||||
echo -e "\nEither the base file '"$BASE"_base.png' isn't an image,"
|
||||
echo "or it is broken, or Imagemagick itself just didn't work."
|
||||
echo -e "\nPlease check and correct your base image and try again."
|
||||
echo -e "\nAborting.\n"
|
||||
exit 1
|
||||
} fi
|
||||
|
||||
if [ ! -z $COMPOSITE ] ; then {
|
||||
convert $BASE"_base.png" -modulate 1,2,3 $COMPOSITE -composite tempfile.png 1>/dev/null 2>/dev/null
|
||||
|
||||
if (( $? )) ; then {
|
||||
echo -e "\nImagemagick failed while testing the composite file."
|
||||
echo -e "\nEither the composite file '"$COMPOSITE"' isn't an image"
|
||||
echo "or it is broken, or Imagemagick itself just didn't work."
|
||||
echo -e "\nPlease check and correct your composite image and try again."
|
||||
echo -e "\nAborting.\n"
|
||||
exit 1
|
||||
} fi
|
||||
} fi
|
||||
|
||||
rm tempfile.png
|
||||
|
||||
base_colors="red orange yellow lime green aqua cyan skyblue blue violet magenta redviolet"
|
||||
|
||||
echo -e -n "\nGenerating filenames based on "$BASE"_base.png"
|
||||
if [ ! -z $COMPOSITE ] ; then {
|
||||
echo ","
|
||||
echo -n "using "$COMPOSITE" as an overlay"
|
||||
} fi
|
||||
|
||||
if [ ! -z $TINT_OVERLAY ] ; then {
|
||||
echo ","
|
||||
echo -n "and tinting the overlay instead of the base texture"
|
||||
} fi
|
||||
|
||||
echo -e "...\n"
|
||||
|
||||
mkdir -p generated-textures
|
||||
|
||||
function generate_texture () {
|
||||
name=$1
|
||||
h=$2
|
||||
s=$3
|
||||
v=$4
|
||||
if [ -z $TINT_OVERLAY ]; then {
|
||||
if [ -z $COMPOSITE ]; then {
|
||||
convert $BASE"_base.png" -modulate $v,$s,$h "generated-textures/"$BASE"_"$name".png"
|
||||
} else {
|
||||
convert $BASE"_base.png" -modulate $v,$s,$h $COMPOSITE -composite "generated-textures/"$BASE"_"$name".png"
|
||||
} fi
|
||||
} else {
|
||||
convert $COMPOSITE -modulate $v,$s,$h MIFF:- | composite MIFF:- $BASE"_base.png" "generated-textures/"$BASE"_"$name".png"
|
||||
} fi
|
||||
}
|
||||
|
||||
hue=0
|
||||
for color_name in $base_colors ; do
|
||||
hue2=`echo "scale=10; ("$hue"*200/360)+100" |bc`
|
||||
echo $color_name "("$hue" degrees)"
|
||||
echo " dark"
|
||||
generate_texture "dark_"$color_name $hue2 100 33
|
||||
echo " medium"
|
||||
generate_texture "medium_"$color_name $hue2 100 66
|
||||
echo " full"
|
||||
generate_texture $color_name $hue2 100 100
|
||||
echo " light"
|
||||
generate_texture "light_"$color_name $hue2 100 150
|
||||
echo " dark, 50% saturation"
|
||||
generate_texture "dark_"$color_name"_s50" $hue2 50 33
|
||||
echo " medium, 50% saturation"
|
||||
generate_texture "medium_"$color_name"_s50" $hue2 50 66
|
||||
echo " full, 50% saturation"
|
||||
generate_texture $color_name"_s50" $hue2 50 100
|
||||
hue=$((hue+30))
|
||||
done
|
||||
|
||||
echo "greyscales"
|
||||
echo " black"
|
||||
generate_texture black 0 0 15
|
||||
echo " dark grey"
|
||||
generate_texture darkgrey 0 0 50
|
||||
echo " medium grey"
|
||||
generate_texture grey 0 0 100
|
||||
echo " light grey"
|
||||
generate_texture lightgrey 0 0 150
|
||||
echo " white"
|
||||
generate_texture white 0 0 190
|
532
init.lua
@ -29,15 +29,471 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
|
||||
--=====================================================================
|
||||
|
||||
unifieddyes = {}
|
||||
|
||||
local creative_mode = minetest.setting_getbool("creative_mode")
|
||||
|
||||
-- Boilerplate to support localized strings if intllib mod is installed.
|
||||
local S
|
||||
if (minetest.get_modpath("intllib")) then
|
||||
dofile(minetest.get_modpath("intllib").."/intllib.lua")
|
||||
S = intllib.Getter(minetest.get_current_modname())
|
||||
if minetest.get_modpath("intllib") then
|
||||
S = intllib.Getter()
|
||||
else
|
||||
S = function(s) return s end
|
||||
end
|
||||
|
||||
-- helper functions for other mods that use this one
|
||||
|
||||
local HUES = {
|
||||
"red",
|
||||
"orange",
|
||||
"yellow",
|
||||
"lime",
|
||||
"green",
|
||||
"aqua",
|
||||
"cyan",
|
||||
"skyblue",
|
||||
"blue",
|
||||
"violet",
|
||||
"magenta",
|
||||
"redviolet"
|
||||
}
|
||||
|
||||
local HUES2 = {
|
||||
"Red",
|
||||
"Orange",
|
||||
"Yellow",
|
||||
"Lime",
|
||||
"Green",
|
||||
"Aqua",
|
||||
"Cyan",
|
||||
"Sky-blue",
|
||||
"Blue",
|
||||
"Violet",
|
||||
"Magenta",
|
||||
"Red-violet"
|
||||
}
|
||||
|
||||
local default_dyes = {
|
||||
"black",
|
||||
"blue",
|
||||
"brown",
|
||||
"cyan",
|
||||
"dark_green",
|
||||
"dark_grey",
|
||||
"green",
|
||||
"grey",
|
||||
"magenta",
|
||||
"orange",
|
||||
"pink",
|
||||
"red",
|
||||
"violet",
|
||||
"white",
|
||||
"yellow"
|
||||
}
|
||||
|
||||
-- code borrowed from homedecor
|
||||
|
||||
-- call this function to reset the rotation of a "wallmounted" object on place
|
||||
|
||||
function unifieddyes.fix_rotation(pos, placer, itemstack, pointed_thing)
|
||||
local node = minetest.get_node(pos)
|
||||
local yaw = placer:get_look_yaw()
|
||||
local dir = minetest.yaw_to_dir(yaw-1.5)
|
||||
local pitch = placer:get_look_vertical()
|
||||
|
||||
local fdir = minetest.dir_to_wallmounted(dir)
|
||||
|
||||
if pitch < -(math.pi/8) then
|
||||
fdir = 0
|
||||
elseif pitch > math.pi/8 then
|
||||
fdir = 1
|
||||
end
|
||||
minetest.swap_node(pos, { name = node.name, param2 = fdir })
|
||||
end
|
||||
|
||||
-- use this when you have a "wallmounted" node that should never be oriented
|
||||
-- to floor or ceiling...
|
||||
|
||||
function unifieddyes.fix_rotation_nsew(pos, placer, itemstack, pointed_thing)
|
||||
local node = minetest.get_node(pos)
|
||||
local yaw = placer:get_look_yaw()
|
||||
local dir = minetest.yaw_to_dir(yaw)
|
||||
local fdir = minetest.dir_to_wallmounted(dir)
|
||||
minetest.swap_node(pos, { name = node.name, param2 = fdir })
|
||||
end
|
||||
|
||||
-- ... and use this one to force that kind of node off of floor/ceiling
|
||||
-- orientation after the screwdriver rotates it.
|
||||
|
||||
function unifieddyes.fix_after_screwdriver_nsew(pos, node, user, mode, new_param2)
|
||||
local new_fdir = new_param2 % 8
|
||||
local color = new_param2 - new_fdir
|
||||
print(new_fdir)
|
||||
|
||||
if new_fdir < 2 then
|
||||
new_fdir = 2
|
||||
minetest.swap_node(pos, { name = node.name, param2 = new_fdir + color })
|
||||
return true
|
||||
end
|
||||
end
|
||||
|
||||
function unifieddyes.select_node(pointed_thing)
|
||||
local pos = pointed_thing.under
|
||||
local node = minetest.get_node_or_nil(pos)
|
||||
local def = node and minetest.registered_nodes[node.name]
|
||||
|
||||
if not def or not def.buildable_to then
|
||||
pos = pointed_thing.above
|
||||
node = minetest.get_node_or_nil(pos)
|
||||
def = node and minetest.registered_nodes[node.name]
|
||||
end
|
||||
return def and pos, def
|
||||
end
|
||||
|
||||
function unifieddyes.is_buildable_to(placer_name, ...)
|
||||
for _, pos in ipairs({...}) do
|
||||
local node = minetest.get_node_or_nil(pos)
|
||||
local def = node and minetest.registered_nodes[node.name]
|
||||
if not (def and def.buildable_to) or minetest.is_protected(pos, placer_name) then
|
||||
return false
|
||||
end
|
||||
end
|
||||
return true
|
||||
end
|
||||
|
||||
function unifieddyes.get_hsv(name) -- expects a node/item name
|
||||
local hue = ""
|
||||
local a,b
|
||||
for _, i in ipairs(HUES) do
|
||||
a,b = string.find(name, "_"..i)
|
||||
if a and not ( string.find(name, "_redviolet") and i == "red" ) then
|
||||
hue = i
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
if string.find(name, "_light_grey") then hue = "light_grey"
|
||||
elseif string.find(name, "_lightgrey") then hue = "light_grey"
|
||||
elseif string.find(name, "_dark_grey") then hue = "dark_grey"
|
||||
elseif string.find(name, "_darkgrey") then hue = "dark_grey"
|
||||
elseif string.find(name, "_grey") then hue = "grey"
|
||||
elseif string.find(name, "_white") then hue = "white"
|
||||
elseif string.find(name, "_black") then hue = "black"
|
||||
end
|
||||
|
||||
local sat = ""
|
||||
if string.find(name, "_s50") then sat = "_s50" end
|
||||
|
||||
local val = ""
|
||||
if string.find(name, "dark_") then val = "dark_" end
|
||||
if string.find(name, "medium_") then val = "medium_" end
|
||||
if string.find(name, "light_") then val = "light_" end
|
||||
|
||||
return hue, sat, val
|
||||
end
|
||||
|
||||
-- code borrowed from cheapie's plasticbox mod
|
||||
|
||||
function unifieddyes.getpaletteidx(color, is_color_fdir)
|
||||
local origcolor = color
|
||||
local aliases = {
|
||||
["pink"] = "light_red",
|
||||
["brown"] = "dark_orange",
|
||||
}
|
||||
|
||||
local grayscale = {
|
||||
["white"] = 1,
|
||||
["light_grey"] = 2,
|
||||
["grey"] = 3,
|
||||
["dark_grey"] = 4,
|
||||
["black"] = 5,
|
||||
}
|
||||
|
||||
local grayscale_wallmounted = {
|
||||
["white"] = 0,
|
||||
["light_grey"] = 1,
|
||||
["grey"] = 2,
|
||||
["dark_grey"] = 3,
|
||||
["black"] = 4,
|
||||
}
|
||||
|
||||
local hues = {
|
||||
["red"] = 1,
|
||||
["orange"] = 2,
|
||||
["yellow"] = 3,
|
||||
["lime"] = 4,
|
||||
["green"] = 5,
|
||||
["aqua"] = 6,
|
||||
["cyan"] = 7,
|
||||
["skyblue"] = 8,
|
||||
["blue"] = 9,
|
||||
["violet"] = 10,
|
||||
["magenta"] = 11,
|
||||
["redviolet"] = 12,
|
||||
}
|
||||
|
||||
local hues_wallmounted = {
|
||||
["red"] = 0,
|
||||
["orange"] = 1,
|
||||
["yellow"] = 2,
|
||||
["green"] = 3,
|
||||
["cyan"] = 4,
|
||||
["blue"] = 5,
|
||||
["violet"] = 6,
|
||||
["magenta"] = 7
|
||||
}
|
||||
|
||||
local shades = {
|
||||
[""] = 1,
|
||||
["s50"] = 2,
|
||||
["light"] = 3,
|
||||
["medium"] = 4,
|
||||
["mediums50"] = 5,
|
||||
["dark"] = 6,
|
||||
["darks50"] = 7,
|
||||
}
|
||||
|
||||
local shades_wallmounted = {
|
||||
[""] = 1,
|
||||
["medium"] = 2,
|
||||
["dark"] = 3
|
||||
}
|
||||
|
||||
if string.sub(color,1,4) == "dye:" then
|
||||
color = string.sub(color,5,-1)
|
||||
elseif string.sub(color,1,12) == "unifieddyes:" then
|
||||
color = string.sub(color,13,-1)
|
||||
else
|
||||
return
|
||||
end
|
||||
|
||||
if is_color_fdir == "wallmounted" then
|
||||
if grayscale_wallmounted[color] then
|
||||
return (grayscale_wallmounted[color] * 8), 0
|
||||
end
|
||||
elseif is_color_fdir then
|
||||
if grayscale[color] then
|
||||
return (grayscale[color] * 32), 0
|
||||
end
|
||||
else
|
||||
if grayscale[color] then
|
||||
return grayscale[color], 0
|
||||
end
|
||||
end
|
||||
|
||||
local shade = ""
|
||||
if string.sub(color,1,6) == "light_" then
|
||||
shade = "light"
|
||||
color = string.sub(color,7,-1)
|
||||
elseif string.sub(color,1,7) == "medium_" then
|
||||
shade = "medium"
|
||||
color = string.sub(color,8,-1)
|
||||
elseif string.sub(color,1,5) == "dark_" then
|
||||
shade = "dark"
|
||||
color = string.sub(color,6,-1)
|
||||
end
|
||||
if string.sub(color,-4,-1) == "_s50" then
|
||||
shade = shade.."s50"
|
||||
color = string.sub(color,1,-5)
|
||||
end
|
||||
|
||||
if is_color_fdir == "wallmounted" then
|
||||
if color == "brown" then return 48,1
|
||||
elseif color == "pink" then return 56,7
|
||||
elseif color == "blue" and shade == "light" then return 40,5
|
||||
elseif hues_wallmounted[color] and shades_wallmounted[shade] then
|
||||
return (shades_wallmounted[shade] * 64 + hues_wallmounted[color] * 8), hues_wallmounted[color]
|
||||
end
|
||||
else
|
||||
if color == "brown" then
|
||||
color = "orange"
|
||||
shade = "dark"
|
||||
elseif color == "pink" then
|
||||
color = "red"
|
||||
shade = "light"
|
||||
end
|
||||
if hues[color] and shades[shade] then
|
||||
if is_color_fdir then
|
||||
return (shades[shade] * 32), hues[color]
|
||||
else
|
||||
return (hues[color] * 8 + shades[shade]), hues[color]
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function unifieddyes.after_dig_node(pos, oldnode, oldmetadata, digger)
|
||||
local prevdye
|
||||
|
||||
if oldmetadata and oldmetadata.fields then
|
||||
prevdye = oldmetadata.fields.dye
|
||||
end
|
||||
|
||||
local inv = digger:get_inventory()
|
||||
|
||||
if prevdye and not (inv:contains_item("main", prevdye) and creative_mode) and minetest.registered_items[prevdye] then
|
||||
if inv:room_for_item("main", prevdye) then
|
||||
inv:add_item("main", prevdye)
|
||||
else
|
||||
minetest.add_item(pos, prevdye)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function unifieddyes.on_use(itemstack, player, pointed_thing)
|
||||
|
||||
if pointed_thing and pointed_thing.type == "object" then
|
||||
pointed_thing.ref:punch(player, 0, itemstack:get_tool_capabilities())
|
||||
return player:get_wielded_item() -- punch may modified the wielded item, load the new and return it
|
||||
end
|
||||
|
||||
if not (pointed_thing and pointed_thing.type == "node") then return end -- if "using" the dye not on a node
|
||||
|
||||
local pos = minetest.get_pointed_thing_position(pointed_thing)
|
||||
local node = minetest.get_node(pos)
|
||||
local nodedef = minetest.registered_nodes[node.name]
|
||||
local playername = player:get_player_name()
|
||||
|
||||
-- if the node has an on_punch defined, bail out and call that instead, unless "sneak" is pressed.
|
||||
if not player:get_player_control().sneak then
|
||||
local onpunch = nodedef.on_punch(pos, node, player, pointed_thing)
|
||||
if onpunch then
|
||||
return onpunch
|
||||
end
|
||||
end
|
||||
|
||||
-- if the target is unknown, has no groups defined, or isn't UD-colorable, just bail out
|
||||
if not (nodedef and nodedef.groups and nodedef.groups.ud_param2_colorable) then
|
||||
minetest.chat_send_player(playername, "That node can't be colored.")
|
||||
return
|
||||
end
|
||||
|
||||
local newnode = nodedef.ud_replacement_node
|
||||
local is_color_fdir
|
||||
|
||||
if nodedef.paramtype2 == "color" then
|
||||
is_color_fdir = false
|
||||
elseif nodedef.paramtype2 == "colorfacedir"
|
||||
then is_color_fdir = true
|
||||
elseif nodedef.paramtype2 == "colorwallmounted"
|
||||
then is_color_fdir = "wallmounted"
|
||||
end
|
||||
|
||||
if minetest.is_protected(pos, playername) and not minetest.check_player_privs(playername, {protection_bypass=true}) then
|
||||
minetest.record_protection_violation(pos, playername)
|
||||
return
|
||||
end
|
||||
|
||||
local stackname = itemstack:get_name()
|
||||
local pos2 = unifieddyes.select_node(pointed_thing)
|
||||
local paletteidx, hue = unifieddyes.getpaletteidx(stackname, is_color_fdir)
|
||||
|
||||
if paletteidx then
|
||||
|
||||
local meta = minetest.get_meta(pos)
|
||||
local prevdye = meta:get_string("dye")
|
||||
local inv = player:get_inventory()
|
||||
|
||||
if not (inv:contains_item("main", prevdye) and creative_mode) and minetest.registered_items[prevdye] then
|
||||
if inv:room_for_item("main", prevdye) then
|
||||
inv:add_item("main", prevdye)
|
||||
else
|
||||
minetest.add_item(pos, prevdye)
|
||||
end
|
||||
end
|
||||
|
||||
meta:set_string("dye", stackname)
|
||||
|
||||
if prevdye == stackname then
|
||||
local a,b = string.find(stackname, ":")
|
||||
minetest.chat_send_player(playername, "That node is already "..string.sub(stackname, a + 1).."." )
|
||||
return
|
||||
elseif not creative_mode then
|
||||
itemstack:take_item()
|
||||
end
|
||||
|
||||
node.param2 = paletteidx
|
||||
|
||||
local oldpaletteidx, oldhuenum = unifieddyes.getpaletteidx(prevdye, is_color_fdir)
|
||||
local oldnode = minetest.get_node(pos)
|
||||
|
||||
local oldhue = nil
|
||||
for _, i in ipairs(HUES) do
|
||||
if string.find(oldnode.name, "_"..i) and not
|
||||
( string.find(oldnode.name, "_redviolet") and i == "red" ) then
|
||||
oldhue = i
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
if newnode then -- this path is used when the calling mod want to supply a replacement node
|
||||
if is_color_fdir == "wallmounted" then
|
||||
node.param2 = paletteidx + (minetest.get_node(pos).param2 % 8)
|
||||
elseif is_color_fdir then -- we probably need to change the hue of the node too
|
||||
if oldhue ~=0 then -- it's colored, not grey
|
||||
if oldhue ~= nil then -- it's been painted before
|
||||
if hue ~= 0 then -- the player's wielding a colored dye
|
||||
newnode = string.gsub(newnode, "_"..oldhue, "_"..HUES[hue])
|
||||
else -- it's a greyscale dye
|
||||
newnode = string.gsub(newnode, "_"..oldhue, "_grey")
|
||||
end
|
||||
else -- it's never had a color at all
|
||||
if hue ~= 0 then -- and if the wield is greyscale, don't change the node name
|
||||
newnode = string.gsub(newnode, "_grey", "_"..HUES[hue])
|
||||
end
|
||||
end
|
||||
else
|
||||
if hue ~= 0 then -- greyscale dye on greyscale node = no hue change
|
||||
newnode = string.gsub(newnode, "_grey", "_"..HUES[hue])
|
||||
end
|
||||
end
|
||||
node.param2 = paletteidx + (minetest.get_node(pos).param2 % 32)
|
||||
else
|
||||
node.param2 = paletteidx
|
||||
end
|
||||
node.name = newnode
|
||||
minetest.swap_node(pos, node)
|
||||
if not creative_mode then
|
||||
return itemstack
|
||||
end
|
||||
else -- this path is used when you're just painting an existing node, rather than replacing one.
|
||||
newnode = oldnode -- note that here, newnode/oldnode are a full node, not just the name.
|
||||
if is_color_fdir == "wallmounted" then
|
||||
newnode.param2 = paletteidx + (minetest.get_node(pos).param2 % 8)
|
||||
elseif is_color_fdir then
|
||||
if oldhue then
|
||||
if hue ~= 0 then
|
||||
newnode.name = string.gsub(newnode.name, "_"..oldhue, "_"..HUES[hue])
|
||||
else
|
||||
newnode.name = string.gsub(newnode.name, "_"..oldhue, "_grey")
|
||||
end
|
||||
elseif string.find(minetest.get_node(pos).name, "_grey") and hue ~= 0 then
|
||||
newnode.name = string.gsub(newnode.name, "_grey", "_"..HUES[hue])
|
||||
end
|
||||
newnode.param2 = paletteidx + (minetest.get_node(pos).param2 % 32)
|
||||
else
|
||||
newnode.param2 = paletteidx
|
||||
end
|
||||
minetest.swap_node(pos, newnode)
|
||||
if not creative_mode then
|
||||
return itemstack
|
||||
end
|
||||
end
|
||||
else
|
||||
local a,b = string.find(stackname, ":")
|
||||
if a then
|
||||
minetest.chat_send_player(playername, "That node can't be colored "..string.sub(stackname, a + 1).."." )
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- re-define default dyes slightly, to add on_use
|
||||
|
||||
for _, color in ipairs(default_dyes) do
|
||||
minetest.override_item("dye:"..color, {
|
||||
on_use = unifieddyes.on_use
|
||||
})
|
||||
end
|
||||
|
||||
-- Items/recipes needed to generate the few base colors that are not
|
||||
-- provided by the standard dyes mod.
|
||||
@ -47,7 +503,8 @@ end
|
||||
minetest.register_craftitem(":dye:lime", {
|
||||
description = S("Lime Dye"),
|
||||
inventory_image = "unifieddyes_lime.png",
|
||||
groups = { dye=1, excolor_lime=1, unicolor_lime=1, not_in_creative_inventory=1 }
|
||||
groups = { dye=1, excolor_lime=1, unicolor_lime=1, not_in_creative_inventory=1 },
|
||||
on_use = unifieddyes.on_use
|
||||
})
|
||||
|
||||
minetest.register_craft( {
|
||||
@ -64,7 +521,8 @@ minetest.register_craft( {
|
||||
minetest.register_craftitem(":dye:aqua", {
|
||||
description = S("Aqua Dye"),
|
||||
inventory_image = "unifieddyes_aqua.png",
|
||||
groups = { dye=1, excolor_aqua=1, unicolor_aqua=1, not_in_creative_inventory=1 }
|
||||
groups = { dye=1, excolor_aqua=1, unicolor_aqua=1, not_in_creative_inventory=1 },
|
||||
on_use = unifieddyes.on_use
|
||||
})
|
||||
|
||||
minetest.register_craft( {
|
||||
@ -81,7 +539,8 @@ minetest.register_craft( {
|
||||
minetest.register_craftitem(":dye:skyblue", {
|
||||
description = S("Sky-blue Dye"),
|
||||
inventory_image = "unifieddyes_skyblue.png",
|
||||
groups = { dye=1, excolor_sky_blue=1, unicolor_sky_blue=1, not_in_creative_inventory=1 }
|
||||
groups = { dye=1, excolor_sky_blue=1, unicolor_sky_blue=1, not_in_creative_inventory=1 },
|
||||
on_use = unifieddyes.on_use
|
||||
})
|
||||
|
||||
minetest.register_craft( {
|
||||
@ -98,7 +557,8 @@ minetest.register_craft( {
|
||||
minetest.register_craftitem(":dye:redviolet", {
|
||||
description = S("Red-violet Dye"),
|
||||
inventory_image = "unifieddyes_redviolet.png",
|
||||
groups = { dye=1, excolor_red_violet=1, unicolor_red_violet=1, not_in_creative_inventory=1 }
|
||||
groups = { dye=1, excolor_red_violet=1, unicolor_red_violet=1, not_in_creative_inventory=1 },
|
||||
on_use = unifieddyes.on_use
|
||||
})
|
||||
|
||||
minetest.register_craft( {
|
||||
@ -116,7 +576,8 @@ minetest.register_craft( {
|
||||
minetest.register_craftitem(":dye:light_grey", {
|
||||
description = S("Light Grey Dye"),
|
||||
inventory_image = "unifieddyes_lightgrey.png",
|
||||
groups = { dye=1, excolor_lightgrey=1, unicolor_light_grey=1, not_in_creative_inventory=1 }
|
||||
groups = { dye=1, excolor_lightgrey=1, unicolor_light_grey=1, not_in_creative_inventory=1 },
|
||||
on_use = unifieddyes.on_use
|
||||
})
|
||||
|
||||
minetest.register_craft( {
|
||||
@ -181,36 +642,6 @@ minetest.register_craft( {
|
||||
-- Brightness levels in the textures are 33% ("dark"), 66% ("medium"),
|
||||
-- 100% ("full", but not so-named), and 150% ("light").
|
||||
|
||||
local HUES = {
|
||||
"red",
|
||||
"orange",
|
||||
"yellow",
|
||||
"lime",
|
||||
"green",
|
||||
"aqua",
|
||||
"cyan",
|
||||
"skyblue",
|
||||
"blue",
|
||||
"violet",
|
||||
"magenta",
|
||||
"redviolet"
|
||||
}
|
||||
|
||||
local HUES2 = {
|
||||
"Red",
|
||||
"Orange",
|
||||
"Yellow",
|
||||
"Lime",
|
||||
"Green",
|
||||
"Aqua",
|
||||
"Cyan",
|
||||
"Sky-blue",
|
||||
"Blue",
|
||||
"Violet",
|
||||
"Magenta",
|
||||
"Red-violet"
|
||||
}
|
||||
|
||||
|
||||
for i = 1, 12 do
|
||||
|
||||
@ -323,40 +754,46 @@ for i = 1, 12 do
|
||||
minetest.register_craftitem("unifieddyes:dark_" .. hue .. "_s50", {
|
||||
description = S("Dark " .. hue2 .. " Dye (low saturation)"),
|
||||
inventory_image = "unifieddyes_dark_" .. hue .. "_s50.png",
|
||||
groups = { dye=1, ["unicolor_dark_"..hue.."_s50"]=1, not_in_creative_inventory=1 }
|
||||
groups = { dye=1, ["unicolor_dark_"..hue.."_s50"]=1, not_in_creative_inventory=1 },
|
||||
on_use = unifieddyes.on_use
|
||||
})
|
||||
|
||||
if hue ~= "green" then
|
||||
minetest.register_craftitem("unifieddyes:dark_" .. hue, {
|
||||
description = S("Dark " .. hue2 .. " Dye"),
|
||||
inventory_image = "unifieddyes_dark_" .. hue .. ".png",
|
||||
groups = { dye=1, ["unicolor_dark_"..hue]=1, not_in_creative_inventory=1 }
|
||||
groups = { dye=1, ["unicolor_dark_"..hue]=1, not_in_creative_inventory=1 },
|
||||
on_use = unifieddyes.on_use
|
||||
})
|
||||
end
|
||||
|
||||
minetest.register_craftitem("unifieddyes:medium_" .. hue .. "_s50", {
|
||||
description = S("Medium " .. hue2 .. " Dye (low saturation)"),
|
||||
inventory_image = "unifieddyes_medium_" .. hue .. "_s50.png",
|
||||
groups = { dye=1, ["unicolor_medium_"..hue.."_s50"]=1, not_in_creative_inventory=1 }
|
||||
groups = { dye=1, ["unicolor_medium_"..hue.."_s50"]=1, not_in_creative_inventory=1 },
|
||||
on_use = unifieddyes.on_use
|
||||
})
|
||||
|
||||
minetest.register_craftitem("unifieddyes:medium_" .. hue, {
|
||||
description = S("Medium " .. hue2 .. " Dye"),
|
||||
inventory_image = "unifieddyes_medium_" .. hue .. ".png",
|
||||
groups = { dye=1, ["unicolor_medium_"..hue]=1, not_in_creative_inventory=1 }
|
||||
groups = { dye=1, ["unicolor_medium_"..hue]=1, not_in_creative_inventory=1 },
|
||||
on_use = unifieddyes.on_use
|
||||
})
|
||||
|
||||
minetest.register_craftitem("unifieddyes:" .. hue .. "_s50", {
|
||||
description = S(hue2 .. " Dye (low saturation)"),
|
||||
inventory_image = "unifieddyes_" .. hue .. "_s50.png",
|
||||
groups = { dye=1, ["unicolor_"..hue.."_s50"]=1, not_in_creative_inventory=1 }
|
||||
groups = { dye=1, ["unicolor_"..hue.."_s50"]=1, not_in_creative_inventory=1 },
|
||||
on_use = unifieddyes.on_use
|
||||
})
|
||||
|
||||
if hue ~= "red" then
|
||||
minetest.register_craftitem("unifieddyes:light_" .. hue, {
|
||||
description = S("Light " .. hue2 .. " Dye"),
|
||||
inventory_image = "unifieddyes_light_" .. hue .. ".png",
|
||||
groups = { dye=1, ["unicolor_light_"..hue]=1, not_in_creative_inventory=1 }
|
||||
groups = { dye=1, ["unicolor_light_"..hue]=1, not_in_creative_inventory=1 },
|
||||
on_use = unifieddyes.on_use
|
||||
})
|
||||
end
|
||||
minetest.register_alias("unifieddyes:"..hue, "dye:"..hue)
|
||||
@ -365,6 +802,13 @@ end
|
||||
|
||||
minetest.register_alias("unifieddyes:light_red", "dye:pink")
|
||||
minetest.register_alias("unifieddyes:dark_green", "dye:dark_green")
|
||||
minetest.register_alias("unifieddyes:black", "dye:black")
|
||||
minetest.register_alias("unifieddyes:darkgrey", "dye:dark_grey")
|
||||
minetest.register_alias("unifieddyes:dark_grey", "dye:dark_grey")
|
||||
minetest.register_alias("unifieddyes:grey", "dye:grey")
|
||||
minetest.register_alias("unifieddyes:lightgrey", "dye:light_grey")
|
||||
minetest.register_alias("unifieddyes:light_grey", "dye:light_grey")
|
||||
minetest.register_alias("unifieddyes:white", "dye:white")
|
||||
|
||||
minetest.register_alias("unifieddyes:white_paint", "dye:white")
|
||||
minetest.register_alias("unifieddyes:titanium_dioxide", "dye:white")
|
||||
|
@ -1,79 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# This program lists out the RGB triads for the colors used in each of the 89
|
||||
# dyes found in the Unified Dyes mod.
|
||||
|
||||
# Copyright (C) 2012-2013, Vanessa Ezekowitz
|
||||
# Email: vanessaezekowitz@gmail.com
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License along
|
||||
# with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
pushd . >/dev/null
|
||||
|
||||
cd textures
|
||||
|
||||
echo -e "\n\nFull-saturation colors:"
|
||||
echo -e "-----------------------\n"
|
||||
|
||||
for i in `ls *dark*.png|grep -v _s50|grep -v paint|grep -v black` ; do
|
||||
rgb=`convert $i -crop 1x1+8+11 -depth 8 txt: |grep "0,0: (" |cut -f 2- -d "(" |cut -f 1-3 -d ","`
|
||||
color=`basename $i .png | sed 's/_/ /g; s/unifieddyes //; s/s50/50% saturation/'`
|
||||
printf "%-32s %-12s %s\n" "$color" "$rgb" "$i"
|
||||
done |sort
|
||||
|
||||
for i in `ls *medium*.png|grep -v _s50|grep -v paint|grep -v black` ; do
|
||||
rgb=`convert $i -crop 1x1+8+11 -depth 8 txt: |grep "0,0: (" |cut -f 2- -d "(" |cut -f 1-3 -d ","`
|
||||
color=`basename $i .png | sed 's/_/ /g; s/unifieddyes //; s/s50/50% saturation/'`
|
||||
printf "%-32s %-12s %s\n" "$color" "$rgb" "$i"
|
||||
done |sort
|
||||
|
||||
for i in `ls *.png|grep -v medium |grep -v dark|grep -v _s50|grep -v paint|grep -v black|grep -v titanium` ; do
|
||||
rgb=`convert $i -crop 1x1+8+11 -depth 8 txt: |grep "0,0: (" |cut -f 2- -d "(" |cut -f 1-3 -d ","`
|
||||
color=`basename $i .png | sed 's/_/ /g; s/unifieddyes //; s/s50/50% saturation/'`
|
||||
printf "%-32s %-12s %s\n" "$color" "$rgb" "$i"
|
||||
done |sort
|
||||
|
||||
|
||||
echo -e "\nLow-saturation colors:"
|
||||
echo -e "----------------------\n"
|
||||
|
||||
for i in `ls *dark*_s50.png|grep -v paint|grep -v black` ; do
|
||||
rgb=`convert $i -crop 1x1+8+11 -depth 8 txt: |grep "0,0: (" |cut -f 2- -d "(" |cut -f 1-3 -d ","`
|
||||
color=`basename $i .png | sed 's/_/ /g; s/unifieddyes //; s/s50/50% saturation/'`
|
||||
printf "%-32s %-12s %s\n" "$color" "$rgb" "$i"
|
||||
done |sort
|
||||
|
||||
for i in `ls *medium*_s50.png|grep -v paint|grep -v black` ; do
|
||||
rgb=`convert $i -crop 1x1+8+11 -depth 8 txt: |grep "0,0: (" |cut -f 2- -d "(" |cut -f 1-3 -d ","`
|
||||
color=`basename $i .png | sed 's/_/ /g; s/unifieddyes //; s/s50/50% saturation/'`
|
||||
printf "%-32s %-12s %s\n" "$color" "$rgb" "$i"
|
||||
done |sort
|
||||
|
||||
for i in `ls *_s50.png|grep -v dark|grep -v medium|grep -v paint|grep -v black` ; do
|
||||
rgb=`convert $i -crop 1x1+8+11 -depth 8 txt: |grep "0,0: (" |cut -f 2- -d "(" |cut -f 1-3 -d ","`
|
||||
color=`basename $i .png | sed 's/_/ /g; s/unifieddyes //; s/s50/50% saturation/'`
|
||||
printf "%-32s %-12s %s\n" "$color" "$rgb" "$i"
|
||||
done |sort
|
||||
|
||||
echo -e "\nGreyscale:"
|
||||
echo -e "----------\n"
|
||||
|
||||
printf "%-32s %-12s %s\n" "black" " 0, 0, 0" "unifieddyes_black.png"
|
||||
printf "%-32s %-12s %s\n" "dark grey" " 64, 64, 64" "unifieddyes_darkgrey_paint.png"
|
||||
printf "%-32s %-12s %s\n" "medium grey" "128,128,128" "unifieddyes_grey_paint.png"
|
||||
printf "%-32s %-12s %s\n" "light grey" "192,192,192" "unifieddyes_lightgrey_paint.png"
|
||||
printf "%-32s %-12s %s\n" "white" "255,255,255" "unifieddyes_white_paint.png"
|
||||
|
||||
popd >/dev/null
|
88
locale/tr.txt
Normal file
@ -0,0 +1,88 @@
|
||||
# TUrkish translation
|
||||
# Mahmutelmas06@hotmail.com
|
||||
|
||||
Lime Dye = Limon Yeşili Boya
|
||||
Aqua Dye = Deniz mavisi Boya
|
||||
Sky-blue Dye = Gök-Mavi Boya
|
||||
Red-violet Dye = Kırmızılı Boya
|
||||
Light Grey Dye = Açık Grey Boya
|
||||
|
||||
Dark Red Dye (low saturation) = Koyu Kırmızı Boya (düşük doygunluk)
|
||||
Dark Orange Dye (low saturation) = Koyu Turuncu Boya (düşük doygunluk)
|
||||
Dark Yellow Dye (low saturation) = Koyu Sarı Boya (düşük doygunluk)
|
||||
Dark Lime Dye (low saturation) = Koyu Limon Yeşili Boya (düşük doygunluk)
|
||||
Dark Green Dye (low saturation) = Koyu Yeşil Boya (düşük doygunluk)
|
||||
Dark Aqua Dye (low saturation) = Koyu Deniz mavisi boya (düşük doygunluk)
|
||||
Dark Cyan Dye (low saturation) = Koyu Cam göbeği Boya (düşük doygunluk)
|
||||
Dark Sky-blue Dye (low saturation) = Koyu Gök-Mavi Boya (düşük doygunluk)
|
||||
Dark Blue Dye (low saturation) = Koyu Mavi Boya (düşük doygunluk)
|
||||
Dark Violet Dye (low saturation) = Koyu mor Boya (düşük doygunluk)
|
||||
Dark Magenta Dye (low saturation) = Koyu Kızılımsı Mor Boya (düşük doygunluk)
|
||||
Dark Red-violet Dye (low saturation) = Koyu Kırmızılı Boya (düşük doygunluk)
|
||||
|
||||
Dark Red Dye = Koyu Kırmızı Boya
|
||||
Dark Orange Dye = Koyu Turuncu Boya
|
||||
Dark Yellow Dye = Koyu Sarı Boya
|
||||
Dark Lime Dye = Koyu Limon Yeşili Boya
|
||||
Dark Green Dye = Koyu Yeşil Boya
|
||||
Dark Aqua Dye = Koyu Deniz mavisi Boya
|
||||
Dark Cyan Dye = Koyu Cam göbeği Boya
|
||||
Dark Sky-blue Dye = Koyu Gök-Mavi Boya
|
||||
Dark Blue Dye = Koyu Mavi Boya
|
||||
Dark Violet Dye = Koyu mor Boya
|
||||
Dark Magenta Dye = Koyu Kızılımsı Mor Boya
|
||||
Dark Red-violet Dye = Koyu Kırmızılı Boya
|
||||
|
||||
Medium Red Dye (low saturation) = Kırmızı Boya (düşük doygunluk)
|
||||
Medium Orange Dye (low saturation) = Turuncu Boya (düşük doygunluk)
|
||||
Medium Yellow Dye (low saturation) = Sarı Boya (düşük doygunluk)
|
||||
Medium Lime Dye (low saturation) = Limon Yeşili Boya (düşük doygunluk)
|
||||
Medium Green Dye (low saturation) = Yeşil Boya (düşük doygunluk)
|
||||
Medium Aqua Dye (low saturation) = Deniz mavisi Boya (düşük doygunluk)
|
||||
Medium Cyan Dye (low saturation) = Cam göbeği Boya (düşük doygunluk)
|
||||
Medium Sky-blue Dye (low saturation) = Gök-Mavi Boya (düşük doygunluk)
|
||||
Medium Blue Dye (low saturation) = Mavi Boya (düşük doygunluk)
|
||||
Medium Violet Dye (low saturation) = Koyu mor Boya (düşük doygunluk)
|
||||
Medium Magenta Dye (low saturation) = Kızılımsı Mor Boya (düşük doygunluk)
|
||||
Medium Red-violet Dye (low saturation) = Kırmızılı Boya (düşük doygunluk)
|
||||
|
||||
Medium Red Dye = Kırmızı Boya
|
||||
Medium Orange Dye = Turuncu Boya
|
||||
Medium Yellow Dye = Sarı Boya
|
||||
Medium Lime Dye = Limon Yeşili Boya
|
||||
Medium Green Dye = Yeşil Boya
|
||||
Medium Aqua Dye = Deniz mavisi Boya
|
||||
Medium Cyan Dye = Cam göbeği Boya
|
||||
Medium Sky-blue = Gök-Mavi
|
||||
Medium Blue Dye = Mavi Boya
|
||||
Medium Violet Dye = Koyu mor Boya
|
||||
Medium Magenta Dye = Kızılımsı Mor Boya
|
||||
Medium Red-violet Dye = Kırmızılı Boya
|
||||
|
||||
Red Dye (low saturation) = Kırmızı Boya (düşük doygunluk)
|
||||
Orange Dye (low saturation) = Turuncu Boya (düşük doygunluk)
|
||||
Yellow Dye (low saturation) = Sarı Boya (düşük doygunluk)
|
||||
Lime Dye (low saturation) = Limon Yeşili Boya (düşük doygunluk)
|
||||
Green Dye (low saturation) = Yeşil Boya (düşük doygunluk)
|
||||
Aqua Dye (low saturation) = Deniz mavisi Boya (düşük doygunluk)
|
||||
Cyan Dye (low saturation) = Cam göbeği Boya (düşük doygunluk)
|
||||
Sky-blue Dye (low saturation) = Gök-Mavi Boya (düşük doygunluk)
|
||||
Blue Dye (low saturation) = Mavi Boya (düşük doygunluk)
|
||||
Violet Dye (low saturation) = Koyu mor Boya (düşük doygunluk)
|
||||
Magenta Dye (low saturation) = Kızılımsı Mor Boya (düşük doygunluk)
|
||||
Red-violet Dye (low saturation) = Kırmızılı Boya (düşük doygunluk)
|
||||
|
||||
Red Dye = Kırmızı Boya
|
||||
Orange Dye = Turuncu Boya
|
||||
Yellow Dye = Sarı Boya
|
||||
Lime Dye = Limon Yeşili Boya
|
||||
Green Dye = Yeşil Boya
|
||||
Aqua Dye = Deniz mavisi Boya
|
||||
Cyan Dye = Cam göbeği Boya
|
||||
Sky-blue Dye = Gök-Mavi Boya
|
||||
Blue Dye = Mavi Boya
|
||||
Violet Dye = Koyu mor Boya
|
||||
Magenta Dye = Kızılımsı Mor Boya
|
||||
Red-violet Dye = Kırmızılı Boya
|
||||
|
||||
[UnifiedDyes] Loaded! = [UnifiedBoyas] yüklendi!
|
BIN
textures/unifieddyes_palette.png
Normal file
After Width: | Height: | Size: 207 B |
BIN
textures/unifieddyes_palette_aquas.png
Normal file
After Width: | Height: | Size: 99 B |
BIN
textures/unifieddyes_palette_blues.png
Normal file
After Width: | Height: | Size: 99 B |
BIN
textures/unifieddyes_palette_colorwallmounted.png
Normal file
After Width: | Height: | Size: 136 B |
BIN
textures/unifieddyes_palette_cyans.png
Normal file
After Width: | Height: | Size: 101 B |
BIN
textures/unifieddyes_palette_greens.png
Normal file
After Width: | Height: | Size: 91 B |
BIN
textures/unifieddyes_palette_greys.png
Normal file
After Width: | Height: | Size: 90 B |
BIN
textures/unifieddyes_palette_limes.png
Normal file
After Width: | Height: | Size: 99 B |
BIN
textures/unifieddyes_palette_magentas.png
Normal file
After Width: | Height: | Size: 101 B |
BIN
textures/unifieddyes_palette_oranges.png
Normal file
After Width: | Height: | Size: 99 B |
BIN
textures/unifieddyes_palette_reds.png
Normal file
After Width: | Height: | Size: 99 B |
BIN
textures/unifieddyes_palette_redviolets.png
Normal file
After Width: | Height: | Size: 99 B |
BIN
textures/unifieddyes_palette_skyblues.png
Normal file
After Width: | Height: | Size: 99 B |
BIN
textures/unifieddyes_palette_violets.png
Normal file
After Width: | Height: | Size: 99 B |
BIN
textures/unifieddyes_palette_yellows.png
Normal file
After Width: | Height: | Size: 101 B |
Before Width: | Height: | Size: 141 B |