Compare commits
1 Commits
Author | SHA1 | Date | |
---|---|---|---|
07a72fb6b8 |
0
.gitignore
vendored
Normal file → Executable file
BIN
bottle_overlay.png
Normal file → Executable file
Before Width: | Height: | Size: 292 B After Width: | Height: | Size: 330 B |
0
changelog.txt
Normal file → Executable file
0
colors.txt
Normal file → Executable file
0
depends.txt
Normal file → Executable file
@ -1 +0,0 @@
|
|||||||
Unified Dyes expands the standard dye set from 15 to 90 colors.
|
|
183
gentextures-jpg.sh
Executable file
@ -0,0 +1,183 @@
|
|||||||
|
#!/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
Executable file
@ -0,0 +1,177 @@
|
|||||||
|
#!/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
|
614
init.lua
Normal file → Executable file
@ -29,10 +29,6 @@ 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
|
||||||
@ -41,555 +37,76 @@ 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 }
|
||||||
on_use = unifieddyes.on_use
|
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_craft( {
|
minetest.register_craft( {
|
||||||
type = "shapeless",
|
|
||||||
output = "dye:lime 2",
|
output = "dye:lime 2",
|
||||||
recipe = {
|
recipe = {{"dye:yellow", "dye:green"}}
|
||||||
"dye:yellow",
|
|
||||||
"dye:green",
|
|
||||||
},
|
|
||||||
})
|
})
|
||||||
|
|
||||||
-- 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 }
|
||||||
on_use = unifieddyes.on_use
|
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_craft( {
|
minetest.register_craft( {
|
||||||
type = "shapeless",
|
|
||||||
output = "dye:aqua 2",
|
output = "dye:aqua 2",
|
||||||
recipe = {
|
recipe = {{"dye:green", "dye:cyan"}},
|
||||||
"dye:cyan",
|
|
||||||
"dye:green",
|
|
||||||
},
|
|
||||||
})
|
})
|
||||||
|
|
||||||
-- 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 }
|
||||||
on_use = unifieddyes.on_use
|
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_craft( {
|
minetest.register_craft( {
|
||||||
type = "shapeless",
|
|
||||||
output = "dye:skyblue 2",
|
output = "dye:skyblue 2",
|
||||||
recipe = {
|
recipe = {{"dye:cyan", "dye:blue"}},
|
||||||
"dye:cyan",
|
|
||||||
"dye:blue",
|
|
||||||
},
|
|
||||||
})
|
})
|
||||||
|
|
||||||
-- 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 }
|
||||||
on_use = unifieddyes.on_use
|
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_craft( {
|
minetest.register_craft( {
|
||||||
type = "shapeless",
|
|
||||||
output = "dye:redviolet 2",
|
output = "dye:redviolet 2",
|
||||||
recipe = {
|
recipe = {{"dye:magenta", "dye:red"}},
|
||||||
"dye:red",
|
|
||||||
"dye:magenta",
|
|
||||||
},
|
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
-- 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 }
|
||||||
on_use = unifieddyes.on_use
|
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_craft( {
|
minetest.register_craft( {
|
||||||
type = "shapeless",
|
|
||||||
output = "dye:light_grey 2",
|
output = "dye:light_grey 2",
|
||||||
recipe = {
|
recipe = {{"dye:grey", "dye:white"}},
|
||||||
"dye:grey",
|
|
||||||
"dye:white",
|
|
||||||
},
|
|
||||||
})
|
})
|
||||||
|
|
||||||
-- Extra craft for black dye
|
--[[ Extra craft for black dye
|
||||||
|
|
||||||
minetest.register_craft( {
|
minetest.register_craft( {
|
||||||
type = "shapeless",
|
type = "shapeless",
|
||||||
@ -597,7 +114,7 @@ minetest.register_craft( {
|
|||||||
recipe = {
|
recipe = {
|
||||||
"default:coal_lump",
|
"default:coal_lump",
|
||||||
},
|
},
|
||||||
})
|
})]]
|
||||||
|
|
||||||
-- Extra craft for dark grey dye
|
-- Extra craft for dark grey dye
|
||||||
|
|
||||||
@ -642,6 +159,36 @@ 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
|
||||||
|
|
||||||
@ -649,12 +196,8 @@ for i = 1, 12 do
|
|||||||
local hue2 = HUES2[i]
|
local hue2 = HUES2[i]
|
||||||
|
|
||||||
minetest.register_craft( {
|
minetest.register_craft( {
|
||||||
type = "shapeless",
|
|
||||||
output = "unifieddyes:dark_" .. hue .. "_s50 2",
|
output = "unifieddyes:dark_" .. hue .. "_s50 2",
|
||||||
recipe = {
|
recipe = {{"dye:" .. hue, "dye:dark_grey"}},
|
||||||
"dye:" .. hue,
|
|
||||||
"dye:dark_grey",
|
|
||||||
},
|
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_craft( {
|
minetest.register_craft( {
|
||||||
@ -692,12 +235,8 @@ for i = 1, 12 do
|
|||||||
end
|
end
|
||||||
|
|
||||||
minetest.register_craft( {
|
minetest.register_craft( {
|
||||||
type = "shapeless",
|
|
||||||
output = "unifieddyes:medium_" .. hue .. "_s50 2",
|
output = "unifieddyes:medium_" .. hue .. "_s50 2",
|
||||||
recipe = {
|
recipe = {{"dye:" .. hue, "dye:grey"}},
|
||||||
"dye:" .. hue,
|
|
||||||
"dye:grey",
|
|
||||||
},
|
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_craft( {
|
minetest.register_craft( {
|
||||||
@ -711,12 +250,10 @@ for i = 1, 12 do
|
|||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_craft( {
|
minetest.register_craft( {
|
||||||
type = "shapeless",
|
output = "unifieddyes:medium_" .. hue .. " 2",
|
||||||
output = "unifieddyes:medium_" .. hue .. " 2",
|
recipe = {
|
||||||
recipe = {
|
{"dye:" .. hue, "dye:black"},
|
||||||
"dye:" .. hue,
|
}
|
||||||
"dye:black",
|
|
||||||
},
|
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_craft( {
|
minetest.register_craft( {
|
||||||
@ -742,73 +279,56 @@ for i = 1, 12 do
|
|||||||
|
|
||||||
if hue ~= "red" then
|
if hue ~= "red" then
|
||||||
minetest.register_craft( {
|
minetest.register_craft( {
|
||||||
type = "shapeless",
|
|
||||||
output = "unifieddyes:light_" .. hue .. " 2",
|
output = "unifieddyes:light_" .. hue .. " 2",
|
||||||
recipe = {
|
recipe = {{"dye:" .. hue, "dye:white"}},
|
||||||
"dye:" .. hue,
|
|
||||||
"dye:white",
|
|
||||||
},
|
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
|
|
||||||
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 }
|
||||||
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 }
|
||||||
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 }
|
||||||
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 }
|
||||||
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 }
|
||||||
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 }
|
||||||
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")
|
||||||
@ -817,5 +337,5 @@ minetest.register_alias("unifieddyes:grey_paint", "dye:grey")
|
|||||||
minetest.register_alias("unifieddyes:darkgrey_paint", "dye:dark_grey")
|
minetest.register_alias("unifieddyes:darkgrey_paint", "dye:dark_grey")
|
||||||
minetest.register_alias("unifieddyes:carbon_black", "dye:black")
|
minetest.register_alias("unifieddyes:carbon_black", "dye:black")
|
||||||
|
|
||||||
print(S("[UnifiedDyes] Loaded!"))
|
minetest.log("action", S("[UnifiedDyes] Loaded!"))
|
||||||
|
|
||||||
|
79
listcolors.sh
Executable file
@ -0,0 +1,79 @@
|
|||||||
|
#!/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
|
0
locale/de.txt
Normal file → Executable file
0
locale/template.txt
Normal file → Executable file
0
locale/tr.txt
Normal file → Executable file
BIN
textures/unifieddyes_aqua.png
Normal file → Executable file
Before Width: | Height: | Size: 161 B After Width: | Height: | Size: 145 B |
BIN
textures/unifieddyes_aqua_s50.png
Normal file → Executable file
Before Width: | Height: | Size: 161 B After Width: | Height: | Size: 145 B |
BIN
textures/unifieddyes_blue_s50.png
Normal file → Executable file
Before Width: | Height: | Size: 161 B After Width: | Height: | Size: 145 B |
BIN
textures/unifieddyes_cyan_s50.png
Normal file → Executable file
Before Width: | Height: | Size: 161 B After Width: | Height: | Size: 145 B |
BIN
textures/unifieddyes_dark_aqua.png
Normal file → Executable file
Before Width: | Height: | Size: 161 B After Width: | Height: | Size: 145 B |
BIN
textures/unifieddyes_dark_aqua_s50.png
Normal file → Executable file
Before Width: | Height: | Size: 161 B After Width: | Height: | Size: 145 B |
BIN
textures/unifieddyes_dark_blue.png
Normal file → Executable file
Before Width: | Height: | Size: 161 B After Width: | Height: | Size: 145 B |
BIN
textures/unifieddyes_dark_blue_s50.png
Normal file → Executable file
Before Width: | Height: | Size: 161 B After Width: | Height: | Size: 145 B |
BIN
textures/unifieddyes_dark_cyan.png
Normal file → Executable file
Before Width: | Height: | Size: 161 B After Width: | Height: | Size: 145 B |
BIN
textures/unifieddyes_dark_cyan_s50.png
Normal file → Executable file
Before Width: | Height: | Size: 161 B After Width: | Height: | Size: 145 B |
BIN
textures/unifieddyes_dark_green.png
Normal file → Executable file
Before Width: | Height: | Size: 161 B After Width: | Height: | Size: 145 B |
BIN
textures/unifieddyes_dark_green_s50.png
Normal file → Executable file
Before Width: | Height: | Size: 161 B After Width: | Height: | Size: 145 B |
BIN
textures/unifieddyes_dark_lime.png
Normal file → Executable file
Before Width: | Height: | Size: 161 B After Width: | Height: | Size: 145 B |
BIN
textures/unifieddyes_dark_lime_s50.png
Normal file → Executable file
Before Width: | Height: | Size: 161 B After Width: | Height: | Size: 145 B |
BIN
textures/unifieddyes_dark_magenta.png
Normal file → Executable file
Before Width: | Height: | Size: 161 B After Width: | Height: | Size: 145 B |
BIN
textures/unifieddyes_dark_magenta_s50.png
Normal file → Executable file
Before Width: | Height: | Size: 161 B After Width: | Height: | Size: 145 B |
BIN
textures/unifieddyes_dark_orange.png
Normal file → Executable file
Before Width: | Height: | Size: 161 B After Width: | Height: | Size: 145 B |
BIN
textures/unifieddyes_dark_orange_s50.png
Normal file → Executable file
Before Width: | Height: | Size: 161 B After Width: | Height: | Size: 145 B |
BIN
textures/unifieddyes_dark_red.png
Normal file → Executable file
Before Width: | Height: | Size: 161 B After Width: | Height: | Size: 145 B |
BIN
textures/unifieddyes_dark_red_s50.png
Normal file → Executable file
Before Width: | Height: | Size: 161 B After Width: | Height: | Size: 145 B |
BIN
textures/unifieddyes_dark_redviolet.png
Normal file → Executable file
Before Width: | Height: | Size: 161 B After Width: | Height: | Size: 145 B |
BIN
textures/unifieddyes_dark_redviolet_s50.png
Normal file → Executable file
Before Width: | Height: | Size: 161 B After Width: | Height: | Size: 145 B |
BIN
textures/unifieddyes_dark_skyblue.png
Normal file → Executable file
Before Width: | Height: | Size: 161 B After Width: | Height: | Size: 145 B |
BIN
textures/unifieddyes_dark_skyblue_s50.png
Normal file → Executable file
Before Width: | Height: | Size: 161 B After Width: | Height: | Size: 145 B |
BIN
textures/unifieddyes_dark_violet.png
Normal file → Executable file
Before Width: | Height: | Size: 161 B After Width: | Height: | Size: 145 B |
BIN
textures/unifieddyes_dark_violet_s50.png
Normal file → Executable file
Before Width: | Height: | Size: 161 B After Width: | Height: | Size: 145 B |
BIN
textures/unifieddyes_dark_yellow.png
Normal file → Executable file
Before Width: | Height: | Size: 161 B After Width: | Height: | Size: 145 B |
BIN
textures/unifieddyes_dark_yellow_s50.png
Normal file → Executable file
Before Width: | Height: | Size: 161 B After Width: | Height: | Size: 145 B |
BIN
textures/unifieddyes_darkgrey.png
Normal file → Executable file
Before Width: | Height: | Size: 161 B After Width: | Height: | Size: 145 B |
BIN
textures/unifieddyes_green_s50.png
Normal file → Executable file
Before Width: | Height: | Size: 161 B After Width: | Height: | Size: 145 B |
BIN
textures/unifieddyes_light_aqua.png
Normal file → Executable file
Before Width: | Height: | Size: 161 B After Width: | Height: | Size: 145 B |
BIN
textures/unifieddyes_light_blue.png
Normal file → Executable file
Before Width: | Height: | Size: 161 B After Width: | Height: | Size: 145 B |
BIN
textures/unifieddyes_light_cyan.png
Normal file → Executable file
Before Width: | Height: | Size: 161 B After Width: | Height: | Size: 145 B |
BIN
textures/unifieddyes_light_green.png
Normal file → Executable file
Before Width: | Height: | Size: 161 B After Width: | Height: | Size: 145 B |
BIN
textures/unifieddyes_light_lime.png
Normal file → Executable file
Before Width: | Height: | Size: 161 B After Width: | Height: | Size: 145 B |
BIN
textures/unifieddyes_light_magenta.png
Normal file → Executable file
Before Width: | Height: | Size: 161 B After Width: | Height: | Size: 145 B |
BIN
textures/unifieddyes_light_orange.png
Normal file → Executable file
Before Width: | Height: | Size: 161 B After Width: | Height: | Size: 145 B |
BIN
textures/unifieddyes_light_red.png
Normal file → Executable file
Before Width: | Height: | Size: 161 B After Width: | Height: | Size: 145 B |
BIN
textures/unifieddyes_light_redviolet.png
Normal file → Executable file
Before Width: | Height: | Size: 161 B After Width: | Height: | Size: 145 B |
BIN
textures/unifieddyes_light_skyblue.png
Normal file → Executable file
Before Width: | Height: | Size: 161 B After Width: | Height: | Size: 145 B |
BIN
textures/unifieddyes_light_violet.png
Normal file → Executable file
Before Width: | Height: | Size: 161 B After Width: | Height: | Size: 145 B |
BIN
textures/unifieddyes_light_yellow.png
Normal file → Executable file
Before Width: | Height: | Size: 161 B After Width: | Height: | Size: 145 B |
BIN
textures/unifieddyes_lightgrey.png
Normal file → Executable file
Before Width: | Height: | Size: 161 B After Width: | Height: | Size: 145 B |
BIN
textures/unifieddyes_lime.png
Normal file → Executable file
Before Width: | Height: | Size: 161 B After Width: | Height: | Size: 145 B |
BIN
textures/unifieddyes_lime_s50.png
Normal file → Executable file
Before Width: | Height: | Size: 161 B After Width: | Height: | Size: 145 B |
BIN
textures/unifieddyes_magenta_s50.png
Normal file → Executable file
Before Width: | Height: | Size: 161 B After Width: | Height: | Size: 145 B |
BIN
textures/unifieddyes_medium_aqua.png
Normal file → Executable file
Before Width: | Height: | Size: 161 B After Width: | Height: | Size: 145 B |
BIN
textures/unifieddyes_medium_aqua_s50.png
Normal file → Executable file
Before Width: | Height: | Size: 161 B After Width: | Height: | Size: 145 B |
BIN
textures/unifieddyes_medium_blue.png
Normal file → Executable file
Before Width: | Height: | Size: 161 B After Width: | Height: | Size: 145 B |
BIN
textures/unifieddyes_medium_blue_s50.png
Normal file → Executable file
Before Width: | Height: | Size: 161 B After Width: | Height: | Size: 145 B |
BIN
textures/unifieddyes_medium_cyan.png
Normal file → Executable file
Before Width: | Height: | Size: 161 B After Width: | Height: | Size: 145 B |
BIN
textures/unifieddyes_medium_cyan_s50.png
Normal file → Executable file
Before Width: | Height: | Size: 161 B After Width: | Height: | Size: 145 B |
BIN
textures/unifieddyes_medium_green.png
Normal file → Executable file
Before Width: | Height: | Size: 161 B After Width: | Height: | Size: 145 B |
BIN
textures/unifieddyes_medium_green_s50.png
Normal file → Executable file
Before Width: | Height: | Size: 161 B After Width: | Height: | Size: 145 B |
BIN
textures/unifieddyes_medium_lime.png
Normal file → Executable file
Before Width: | Height: | Size: 161 B After Width: | Height: | Size: 145 B |
BIN
textures/unifieddyes_medium_lime_s50.png
Normal file → Executable file
Before Width: | Height: | Size: 161 B After Width: | Height: | Size: 145 B |
BIN
textures/unifieddyes_medium_magenta.png
Normal file → Executable file
Before Width: | Height: | Size: 161 B After Width: | Height: | Size: 145 B |
BIN
textures/unifieddyes_medium_magenta_s50.png
Normal file → Executable file
Before Width: | Height: | Size: 161 B After Width: | Height: | Size: 145 B |
BIN
textures/unifieddyes_medium_orange.png
Normal file → Executable file
Before Width: | Height: | Size: 161 B After Width: | Height: | Size: 145 B |
BIN
textures/unifieddyes_medium_orange_s50.png
Normal file → Executable file
Before Width: | Height: | Size: 161 B After Width: | Height: | Size: 145 B |
BIN
textures/unifieddyes_medium_red.png
Normal file → Executable file
Before Width: | Height: | Size: 161 B After Width: | Height: | Size: 145 B |
BIN
textures/unifieddyes_medium_red_s50.png
Normal file → Executable file
Before Width: | Height: | Size: 161 B After Width: | Height: | Size: 145 B |
BIN
textures/unifieddyes_medium_redviolet.png
Normal file → Executable file
Before Width: | Height: | Size: 161 B After Width: | Height: | Size: 145 B |
BIN
textures/unifieddyes_medium_redviolet_s50.png
Normal file → Executable file
Before Width: | Height: | Size: 161 B After Width: | Height: | Size: 145 B |
BIN
textures/unifieddyes_medium_skyblue.png
Normal file → Executable file
Before Width: | Height: | Size: 161 B After Width: | Height: | Size: 145 B |
BIN
textures/unifieddyes_medium_skyblue_s50.png
Normal file → Executable file
Before Width: | Height: | Size: 161 B After Width: | Height: | Size: 145 B |
BIN
textures/unifieddyes_medium_violet.png
Normal file → Executable file
Before Width: | Height: | Size: 161 B After Width: | Height: | Size: 145 B |
BIN
textures/unifieddyes_medium_violet_s50.png
Normal file → Executable file
Before Width: | Height: | Size: 161 B After Width: | Height: | Size: 145 B |
BIN
textures/unifieddyes_medium_yellow.png
Normal file → Executable file
Before Width: | Height: | Size: 161 B After Width: | Height: | Size: 145 B |
BIN
textures/unifieddyes_medium_yellow_s50.png
Normal file → Executable file
Before Width: | Height: | Size: 161 B After Width: | Height: | Size: 145 B |
BIN
textures/unifieddyes_orange_s50.png
Normal file → Executable file
Before Width: | Height: | Size: 161 B After Width: | Height: | Size: 145 B |
Before Width: | Height: | Size: 207 B |
Before Width: | Height: | Size: 99 B |
Before Width: | Height: | Size: 99 B |
Before Width: | Height: | Size: 136 B |
Before Width: | Height: | Size: 101 B |
Before Width: | Height: | Size: 91 B |
Before Width: | Height: | Size: 90 B |
Before Width: | Height: | Size: 99 B |
Before Width: | Height: | Size: 101 B |
Before Width: | Height: | Size: 99 B |
Before Width: | Height: | Size: 99 B |
Before Width: | Height: | Size: 99 B |
Before Width: | Height: | Size: 99 B |