Compare commits
36 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 |
@ -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
|
|
550
init.lua
@ -29,6 +29,10 @@ 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.
|
-- Boilerplate to support localized strings if intllib mod is installed.
|
||||||
local S
|
local S
|
||||||
if minetest.get_modpath("intllib") then
|
if minetest.get_modpath("intllib") then
|
||||||
@ -37,15 +41,470 @@ else
|
|||||||
S = function(s) return s end
|
S = function(s) return s end
|
||||||
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
|
-- Items/recipes needed to generate the few base colors that are not
|
||||||
-- provided by the standard dyes mod.
|
-- provided by the standard dyes mod.
|
||||||
|
|
||||||
-- Lime
|
-- Lime
|
||||||
|
|
||||||
minetest.register_craftitem(":dye:lime", {
|
minetest.register_craftitem(":dye:lime", {
|
||||||
description = S("Lime Dye"),
|
description = S("Lime Dye"),
|
||||||
inventory_image = "unifieddyes_lime.png",
|
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( {
|
minetest.register_craft( {
|
||||||
@ -60,9 +519,10 @@ minetest.register_craft( {
|
|||||||
-- Aqua
|
-- Aqua
|
||||||
|
|
||||||
minetest.register_craftitem(":dye:aqua", {
|
minetest.register_craftitem(":dye:aqua", {
|
||||||
description = S("Aqua Dye"),
|
description = S("Aqua Dye"),
|
||||||
inventory_image = "unifieddyes_aqua.png",
|
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( {
|
minetest.register_craft( {
|
||||||
@ -77,9 +537,10 @@ minetest.register_craft( {
|
|||||||
-- Sky blue
|
-- Sky blue
|
||||||
|
|
||||||
minetest.register_craftitem(":dye:skyblue", {
|
minetest.register_craftitem(":dye:skyblue", {
|
||||||
description = S("Sky-blue Dye"),
|
description = S("Sky-blue Dye"),
|
||||||
inventory_image = "unifieddyes_skyblue.png",
|
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( {
|
minetest.register_craft( {
|
||||||
@ -94,9 +555,10 @@ minetest.register_craft( {
|
|||||||
-- Red-violet
|
-- Red-violet
|
||||||
|
|
||||||
minetest.register_craftitem(":dye:redviolet", {
|
minetest.register_craftitem(":dye:redviolet", {
|
||||||
description = S("Red-violet Dye"),
|
description = S("Red-violet Dye"),
|
||||||
inventory_image = "unifieddyes_redviolet.png",
|
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( {
|
minetest.register_craft( {
|
||||||
@ -112,9 +574,10 @@ minetest.register_craft( {
|
|||||||
-- Light grey
|
-- Light grey
|
||||||
|
|
||||||
minetest.register_craftitem(":dye:light_grey", {
|
minetest.register_craftitem(":dye:light_grey", {
|
||||||
description = S("Light Grey Dye"),
|
description = S("Light Grey Dye"),
|
||||||
inventory_image = "unifieddyes_lightgrey.png",
|
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( {
|
minetest.register_craft( {
|
||||||
@ -179,36 +642,6 @@ minetest.register_craft( {
|
|||||||
-- Brightness levels in the textures are 33% ("dark"), 66% ("medium"),
|
-- Brightness levels in the textures are 33% ("dark"), 66% ("medium"),
|
||||||
-- 100% ("full", but not so-named), and 150% ("light").
|
-- 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
|
for i = 1, 12 do
|
||||||
|
|
||||||
@ -321,48 +754,61 @@ for i = 1, 12 do
|
|||||||
minetest.register_craftitem("unifieddyes:dark_" .. hue .. "_s50", {
|
minetest.register_craftitem("unifieddyes:dark_" .. hue .. "_s50", {
|
||||||
description = S("Dark " .. hue2 .. " Dye (low saturation)"),
|
description = S("Dark " .. hue2 .. " Dye (low saturation)"),
|
||||||
inventory_image = "unifieddyes_dark_" .. hue .. "_s50.png",
|
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
|
if hue ~= "green" then
|
||||||
minetest.register_craftitem("unifieddyes:dark_" .. hue, {
|
minetest.register_craftitem("unifieddyes:dark_" .. hue, {
|
||||||
description = S("Dark " .. hue2 .. " Dye"),
|
description = S("Dark " .. hue2 .. " Dye"),
|
||||||
inventory_image = "unifieddyes_dark_" .. hue .. ".png",
|
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
|
end
|
||||||
|
|
||||||
minetest.register_craftitem("unifieddyes:medium_" .. hue .. "_s50", {
|
minetest.register_craftitem("unifieddyes:medium_" .. hue .. "_s50", {
|
||||||
description = S("Medium " .. hue2 .. " Dye (low saturation)"),
|
description = S("Medium " .. hue2 .. " Dye (low saturation)"),
|
||||||
inventory_image = "unifieddyes_medium_" .. hue .. "_s50.png",
|
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, {
|
minetest.register_craftitem("unifieddyes:medium_" .. hue, {
|
||||||
description = S("Medium " .. hue2 .. " Dye"),
|
description = S("Medium " .. hue2 .. " Dye"),
|
||||||
inventory_image = "unifieddyes_medium_" .. hue .. ".png",
|
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", {
|
minetest.register_craftitem("unifieddyes:" .. hue .. "_s50", {
|
||||||
description = S(hue2 .. " Dye (low saturation)"),
|
description = S(hue2 .. " Dye (low saturation)"),
|
||||||
inventory_image = "unifieddyes_" .. hue .. "_s50.png",
|
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
|
if hue ~= "red" then
|
||||||
minetest.register_craftitem("unifieddyes:light_" .. hue, {
|
minetest.register_craftitem("unifieddyes:light_" .. hue, {
|
||||||
description = S("Light " .. hue2 .. " Dye"),
|
description = S("Light " .. hue2 .. " Dye"),
|
||||||
inventory_image = "unifieddyes_light_" .. hue .. ".png",
|
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
|
end
|
||||||
minetest.register_alias("unifieddyes:"..hue, "dye:"..hue)
|
minetest.register_alias("unifieddyes:"..hue, "dye:"..hue)
|
||||||
minetest.register_alias("unifieddyes:pigment_"..hue, "dye:"..hue)
|
minetest.register_alias("unifieddyes:pigment_"..hue, "dye:"..hue)
|
||||||
end
|
end
|
||||||
|
|
||||||
minetest.register_alias("unifieddyes:light_red", "dye:pink")
|
minetest.register_alias("unifieddyes:light_red", "dye:pink")
|
||||||
minetest.register_alias("unifieddyes:dark_green", "dye:dark_green")
|
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:white_paint", "dye:white")
|
||||||
minetest.register_alias("unifieddyes:titanium_dioxide", "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
|
|
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: 89 B |