up3
Build and deploy / Build (push) Has been cancelled
Build and deploy / Update Contributors (push) Has been cancelled
Build and deploy / Deploy (push) Has been cancelled
Build and deploy / Build (push) Has been cancelled
Build and deploy / Update Contributors (push) Has been cancelled
Build and deploy / Deploy (push) Has been cancelled
This commit is contained in:
@@ -0,0 +1,212 @@
|
||||
package item
|
||||
|
||||
import (
|
||||
"image/color"
|
||||
)
|
||||
|
||||
// Colour represents the colour of a block. Typically, Minecraft blocks have a total of 16 different colours.
|
||||
type Colour struct {
|
||||
colour
|
||||
}
|
||||
|
||||
// ColourWhite returns the white colour.
|
||||
func ColourWhite() Colour {
|
||||
return Colour{0}
|
||||
}
|
||||
|
||||
// ColourOrange returns the orange colour.
|
||||
func ColourOrange() Colour {
|
||||
return Colour{1}
|
||||
}
|
||||
|
||||
// ColourMagenta returns the magenta colour.
|
||||
func ColourMagenta() Colour {
|
||||
return Colour{2}
|
||||
}
|
||||
|
||||
// ColourLightBlue returns the light blue colour.
|
||||
func ColourLightBlue() Colour {
|
||||
return Colour{3}
|
||||
}
|
||||
|
||||
// ColourYellow returns the yellow colour.
|
||||
func ColourYellow() Colour {
|
||||
return Colour{4}
|
||||
}
|
||||
|
||||
// ColourLime returns the lime colour.
|
||||
func ColourLime() Colour {
|
||||
return Colour{5}
|
||||
}
|
||||
|
||||
// ColourPink returns the pink colour.
|
||||
func ColourPink() Colour {
|
||||
return Colour{6}
|
||||
}
|
||||
|
||||
// ColourGrey returns the grey colour.
|
||||
func ColourGrey() Colour {
|
||||
return Colour{7}
|
||||
}
|
||||
|
||||
// ColourLightGrey returns the light grey colour.
|
||||
func ColourLightGrey() Colour {
|
||||
return Colour{8}
|
||||
}
|
||||
|
||||
// ColourCyan returns the cyan colour.
|
||||
func ColourCyan() Colour {
|
||||
return Colour{9}
|
||||
}
|
||||
|
||||
// ColourPurple returns the purple colour.
|
||||
func ColourPurple() Colour {
|
||||
return Colour{10}
|
||||
}
|
||||
|
||||
// ColourBlue returns the blue colour.
|
||||
func ColourBlue() Colour {
|
||||
return Colour{11}
|
||||
}
|
||||
|
||||
// ColourBrown returns the brown colour.
|
||||
func ColourBrown() Colour {
|
||||
return Colour{12}
|
||||
}
|
||||
|
||||
// ColourGreen returns the green colour.
|
||||
func ColourGreen() Colour {
|
||||
return Colour{13}
|
||||
}
|
||||
|
||||
// ColourRed returns the red colour.
|
||||
func ColourRed() Colour {
|
||||
return Colour{14}
|
||||
}
|
||||
|
||||
// ColourBlack returns the black colour.
|
||||
func ColourBlack() Colour {
|
||||
return Colour{15}
|
||||
}
|
||||
|
||||
// Colours returns a list of all existing colours.
|
||||
func Colours() []Colour {
|
||||
return []Colour{
|
||||
ColourWhite(), ColourOrange(), ColourMagenta(), ColourLightBlue(), ColourYellow(), ColourLime(), ColourPink(), ColourGrey(),
|
||||
ColourLightGrey(), ColourCyan(), ColourPurple(), ColourBlue(), ColourBrown(), ColourGreen(), ColourRed(), ColourBlack(),
|
||||
}
|
||||
}
|
||||
|
||||
// colour is the underlying value of a Colour struct.
|
||||
type colour uint8
|
||||
|
||||
// RGBA returns the colour as RGBA. The alpha channel is always set to the maximum value. Colour values as returned here
|
||||
// were obtained by placing signs in a world with all possible dyes used on them. The world was then loaded in Dragonfly
|
||||
// to read their respective colours.
|
||||
func (c colour) RGBA() color.RGBA {
|
||||
switch c {
|
||||
case 0:
|
||||
return color.RGBA{R: 0xf0, G: 0xf0, B: 0xf0, A: 0xff}
|
||||
case 1:
|
||||
return color.RGBA{R: 0xf9, G: 0x80, B: 0x1d, A: 0xff}
|
||||
case 2:
|
||||
return color.RGBA{R: 0xc7, G: 0x4e, B: 0xbd, A: 0xff}
|
||||
case 3:
|
||||
return color.RGBA{R: 0x3a, G: 0xb3, B: 0xda, A: 0xff}
|
||||
case 4:
|
||||
return color.RGBA{R: 0xfe, G: 0xd8, B: 0x3d, A: 0xff}
|
||||
case 5:
|
||||
return color.RGBA{R: 0x80, G: 0xc7, B: 0x1f, A: 0xff}
|
||||
case 6:
|
||||
return color.RGBA{R: 0xf3, G: 0x8b, B: 0xaa, A: 0xff}
|
||||
case 7:
|
||||
return color.RGBA{R: 0x47, G: 0x4f, B: 0x52, A: 0xff}
|
||||
case 8:
|
||||
return color.RGBA{R: 0x9d, G: 0x9d, B: 0x97, A: 0xff}
|
||||
case 9:
|
||||
return color.RGBA{R: 0x16, G: 0x9c, B: 0x9c, A: 0xff}
|
||||
case 10:
|
||||
return color.RGBA{R: 0x89, G: 0x32, B: 0xb8, A: 0xff}
|
||||
case 11:
|
||||
return color.RGBA{R: 0x3c, G: 0x44, B: 0xaa, A: 0xff}
|
||||
case 12:
|
||||
return color.RGBA{R: 0x83, G: 0x54, B: 0x32, A: 0xff}
|
||||
case 13:
|
||||
return color.RGBA{R: 0x5e, G: 0x7c, B: 0x16, A: 0xff}
|
||||
case 14:
|
||||
return color.RGBA{R: 0xb0, G: 0x2e, B: 0x26, A: 0xff}
|
||||
default:
|
||||
return color.RGBA{R: 0x1d, G: 0x1d, B: 0x21, A: 0xff}
|
||||
}
|
||||
}
|
||||
|
||||
// SignRGBA returns the colour as RGBA. It is identical to the RGBA method, except for the colour black. For the colour
|
||||
// black, a value of rgba(0, 0, 0, 255) is returned rather than rgba(29, 29, 33, 255), in order to match the black sign
|
||||
// text colour found in vanilla Minecraft.
|
||||
func (c colour) SignRGBA() color.RGBA {
|
||||
if c == 15 {
|
||||
return color.RGBA{R: 0x00, G: 0x00, B: 0x00, A: 0xff}
|
||||
}
|
||||
return c.RGBA()
|
||||
}
|
||||
|
||||
// String ...
|
||||
func (c colour) String() string {
|
||||
switch c {
|
||||
default:
|
||||
return "white"
|
||||
case 1:
|
||||
return "orange"
|
||||
case 2:
|
||||
return "magenta"
|
||||
case 3:
|
||||
return "light_blue"
|
||||
case 4:
|
||||
return "yellow"
|
||||
case 5:
|
||||
return "lime"
|
||||
case 6:
|
||||
return "pink"
|
||||
case 7:
|
||||
return "gray"
|
||||
case 8:
|
||||
return "light_gray"
|
||||
case 9:
|
||||
return "cyan"
|
||||
case 10:
|
||||
return "purple"
|
||||
case 11:
|
||||
return "blue"
|
||||
case 12:
|
||||
return "brown"
|
||||
case 13:
|
||||
return "green"
|
||||
case 14:
|
||||
return "red"
|
||||
case 15:
|
||||
return "black"
|
||||
}
|
||||
}
|
||||
|
||||
// SilverString returns the name of the colour, with light_gray being replaced by silver.
|
||||
func (c colour) SilverString() string {
|
||||
if c == 8 {
|
||||
return "silver"
|
||||
}
|
||||
return c.String()
|
||||
}
|
||||
|
||||
// Uint8 ...
|
||||
func (c colour) Uint8() uint8 {
|
||||
return uint8(c)
|
||||
}
|
||||
|
||||
// invertColour converts the item.Colour passed and returns the colour ID inverted.
|
||||
func invertColour(c Colour) int16 {
|
||||
return ^int16(c.Uint8()) & 0xf
|
||||
}
|
||||
|
||||
// invertColourID converts the int16 passed the returns the item.Colour inverted.
|
||||
func invertColourID(id int16) Colour {
|
||||
return Colours()[uint8(^id&0xf)]
|
||||
}
|
||||
Reference in New Issue
Block a user