diching RGB10; colors are now fully vec3

This commit is contained in:
minjaesong
2017-07-09 02:21:24 +09:00
parent 43fee8aa9d
commit 28d7b44821
23 changed files with 299 additions and 282 deletions

View File

@@ -1,145 +1,146 @@
"blid";"drid";"name" ; "opacity";"strength";"dsty";"mate";"fluid";"solid";"wall"; "lumcolor";"fall";"dlfn";"vscs";"fv";"friction" "id";"drop";"name" ; "shdr"; "shdg"; "shdb";"strength";"dsty";"mate";"fluid";"solid";"wall"; "lumr"; "lumg"; "lumb";"fall";"dlfn";"vscs";"fv";"friction"
"0"; "0";"BLOCK_AIR" ; "8396808"; "1"; "1";"null"; "0"; "0"; "1"; "0"; "0"; "0"; "N/A"; "0";"4" "0"; "0";"BLOCK_AIR" ;"0.0312";"0.0312";"0.0312"; "1"; "1";"null"; "0"; "0"; "1";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"4"
"16"; "17";"BLOCK_STONE" ; "33587232"; "48";"2400";"rock"; "0"; "1"; "1"; "0"; "0"; "0"; "N/A"; "0";"16" "16"; "17";"BLOCK_STONE" ;"0.1252";"0.1252";"0.1252"; "48";"2400";"rock"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16"
"17"; "17";"BLOCK_STONE_QUARRIED" ; "33587232"; "48";"2400";"rock"; "0"; "1"; "1"; "0"; "0"; "0"; "N/A"; "0";"16" "17"; "17";"BLOCK_STONE_QUARRIED" ;"0.1252";"0.1252";"0.1252"; "48";"2400";"rock"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16"
"18"; "18";"BLOCK_STONE_TILE_WHITE" ; "33587232"; "48";"2400";"rock"; "0"; "1"; "1"; "0"; "0"; "0"; "N/A"; "0";"16" "18"; "18";"BLOCK_STONE_TILE_WHITE" ;"0.1252";"0.1252";"0.1252"; "48";"2400";"rock"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16"
"19"; "19";"BLOCK_STONE_BRICKS" ; "33587232"; "48";"2400";"rock"; "0"; "1"; "1"; "0"; "0"; "0"; "N/A"; "0";"16" "19"; "19";"BLOCK_STONE_BRICKS" ;"0.1252";"0.1252";"0.1252"; "48";"2400";"rock"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16"
"32"; "32";"BLOCK_DIRT" ; "33587232"; "24";"1400";"dirt"; "0"; "1"; "1"; "0"; "0"; "0"; "N/A"; "0";"16" "32"; "32";"BLOCK_DIRT" ;"0.1252";"0.1252";"0.1252"; "24";"1400";"dirt"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16"
"33"; "32";"BLOCK_GRASS" ; "33587232"; "24";"1400";"grss"; "0"; "1"; "0"; "0"; "0"; "0"; "N/A"; "0";"16" "33"; "32";"BLOCK_GRASS" ;"0.1252";"0.1252";"0.1252"; "24";"1400";"grss"; "0"; "1"; "0";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16"
"34"; "34";"BLOCK_GRASSWALL" ; "33587232"; "24";"1400";"grss"; "0"; "1"; "1"; "0"; "0"; "0"; "N/A"; "0";"16" "34"; "34";"BLOCK_GRASSWALL" ;"0.1252";"0.1252";"0.1252"; "24";"1400";"grss"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16"
"35"; "35";"BLOCK_FOLIAGE_GREEN" ; "33587232"; "24";"1400";"grss"; "0"; "1"; "1"; "0"; "0"; "0"; "N/A"; "0";"16" "35"; "35";"BLOCK_FOLIAGE_GREEN" ;"0.1252";"0.1252";"0.1252"; "24";"1400";"grss"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16"
"36"; "36";"BLOCK_FOLIAGE_LIME" ; "33587232"; "24";"1400";"grss"; "0"; "1"; "1"; "0"; "0"; "0"; "N/A"; "0";"16" "36"; "36";"BLOCK_FOLIAGE_LIME" ;"0.1252";"0.1252";"0.1252"; "24";"1400";"grss"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16"
"37"; "37";"BLOCK_FOLIAGE_GOLD" ; "33587232"; "24";"1400";"grss"; "0"; "1"; "1"; "0"; "0"; "0"; "N/A"; "0";"16" "37"; "37";"BLOCK_FOLIAGE_GOLD" ;"0.1252";"0.1252";"0.1252"; "24";"1400";"grss"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16"
"38"; "38";"BLOCK_FOLIAGE_RED" ; "33587232"; "24";"1400";"grss"; "0"; "1"; "1"; "0"; "0"; "0"; "N/A"; "0";"16" "38"; "38";"BLOCK_FOLIAGE_RED" ;"0.1252";"0.1252";"0.1252"; "24";"1400";"grss"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16"
"39"; "39";"BLOCK_FOLIAGE_ICEBLUE" ; "33587232"; "24";"1400";"grss"; "0"; "1"; "1"; "0"; "0"; "0"; "N/A"; "0";"16" "39"; "39";"BLOCK_FOLIAGE_ICEBLUE" ;"0.1252";"0.1252";"0.1252"; "24";"1400";"grss"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16"
"40"; "40";"BLOCK_FOLIAGE_PURPLE" ; "33587232"; "24";"1400";"grss"; "0"; "1"; "1"; "0"; "0"; "0"; "N/A"; "0";"16" "40"; "40";"BLOCK_FOLIAGE_PURPLE" ;"0.1252";"0.1252";"0.1252"; "24";"1400";"grss"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16"
"48"; "48";"BLOCK_PLANK_NORMAL" ; "33587232"; "16"; "740";"wood"; "0"; "1"; "1"; "0"; "0"; "0"; "N/A"; "0";"16" "48"; "48";"BLOCK_PLANK_NORMAL" ;"0.1252";"0.1252";"0.1252"; "16"; "740";"wood"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16"
"49"; "49";"BLOCK_PLANK_EBONY" ; "33587232"; "19";"1200";"wood"; "0"; "1"; "1"; "0"; "0"; "0"; "N/A"; "0";"16" "49"; "49";"BLOCK_PLANK_EBONY" ;"0.1252";"0.1252";"0.1252"; "19";"1200";"wood"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16"
"50"; "50";"BLOCK_PLANK_BIRCH" ; "33587232"; "15"; "670";"wood"; "0"; "1"; "1"; "0"; "0"; "0"; "N/A"; "0";"16" "50"; "50";"BLOCK_PLANK_BIRCH" ;"0.1252";"0.1252";"0.1252"; "15"; "670";"wood"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16"
"51"; "51";"BLOCK_PLANK_BLOODROSE" ; "33587232"; "17"; "900";"wood"; "0"; "1"; "1"; "0"; "0"; "0"; "N/A"; "0";"16" "51"; "51";"BLOCK_PLANK_BLOODROSE" ;"0.1252";"0.1252";"0.1252"; "17"; "900";"wood"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16"
"64"; "64";"BLOCK_TRUNK_NORMAL" ; "33587232"; "16"; "740";"wood"; "0"; "1"; "0"; "0"; "0"; "0"; "N/A"; "0";"16" "64"; "64";"BLOCK_TRUNK_NORMAL" ;"0.1252";"0.1252";"0.1252"; "16"; "740";"wood"; "0"; "1"; "0";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16"
"65"; "65";"BLOCK_TRUNK_EBONY" ; "33587232"; "19";"1200";"wood"; "0"; "1"; "0"; "0"; "0"; "0"; "N/A"; "0";"16" "65"; "65";"BLOCK_TRUNK_EBONY" ;"0.1252";"0.1252";"0.1252"; "19";"1200";"wood"; "0"; "1"; "0";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16"
"66"; "66";"BLOCK_TRUNK_BIRCH" ; "33587232"; "15"; "670";"wood"; "0"; "1"; "0"; "0"; "0"; "0"; "N/A"; "0";"16" "66"; "66";"BLOCK_TRUNK_BIRCH" ;"0.1252";"0.1252";"0.1252"; "15"; "670";"wood"; "0"; "1"; "0";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16"
"67"; "67";"BLOCK_TRUNK_BLOODROSE" ; "33587232"; "17"; "900";"wood"; "0"; "1"; "0"; "0"; "0"; "0"; "N/A"; "0";"16" "67"; "67";"BLOCK_TRUNK_BLOODROSE" ;"0.1252";"0.1252";"0.1252"; "17"; "900";"wood"; "0"; "1"; "0";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16"
"80"; "80";"BLOCK_SAND" ; "33587232"; "24";"2400";"sand"; "0"; "1"; "0"; "0"; "1"; "0"; "N/A"; "0";"16" "80"; "80";"BLOCK_SAND" ;"0.1252";"0.1252";"0.1252"; "24";"2400";"sand"; "0"; "1"; "0";"0.0000";"0.0000";"0.0000"; "1"; "0"; "N/A"; "0";"16"
"81"; "81";"BLOCK_SAND_WHITE" ; "33587232"; "24";"2400";"sand"; "0"; "1"; "0"; "0"; "1"; "0"; "N/A"; "0";"16" "81"; "81";"BLOCK_SAND_WHITE" ;"0.1252";"0.1252";"0.1252"; "24";"2400";"sand"; "0"; "1"; "0";"0.0000";"0.0000";"0.0000"; "1"; "0"; "N/A"; "0";"16"
"82"; "82";"BLOCK_SAND_RED" ; "33587232"; "24";"2400";"sand"; "0"; "1"; "0"; "0"; "1"; "0"; "N/A"; "0";"16" "82"; "82";"BLOCK_SAND_RED" ;"0.1252";"0.1252";"0.1252"; "24";"2400";"sand"; "0"; "1"; "0";"0.0000";"0.0000";"0.0000"; "1"; "0"; "N/A"; "0";"16"
"83"; "83";"BLOCK_SAND_DESERT" ; "33587232"; "24";"2400";"sand"; "0"; "1"; "0"; "0"; "1"; "0"; "N/A"; "0";"16" "83"; "83";"BLOCK_SAND_DESERT" ;"0.1252";"0.1252";"0.1252"; "24";"2400";"sand"; "0"; "1"; "0";"0.0000";"0.0000";"0.0000"; "1"; "0"; "N/A"; "0";"16"
"84"; "84";"BLOCK_SAND_BLACK" ; "33587232"; "24";"2400";"sand"; "0"; "1"; "0"; "0"; "1"; "0"; "N/A"; "0";"16" "84"; "84";"BLOCK_SAND_BLACK" ;"0.1252";"0.1252";"0.1252"; "24";"2400";"sand"; "0"; "1"; "0";"0.0000";"0.0000";"0.0000"; "1"; "0"; "N/A"; "0";"16"
"85"; "85";"BLOCK_SAND_GREEN" ; "33587232"; "24";"2400";"sand"; "0"; "1"; "0"; "0"; "1"; "0"; "N/A"; "0";"16" "85"; "85";"BLOCK_SAND_GREEN" ;"0.1252";"0.1252";"0.1252"; "24";"2400";"sand"; "0"; "1"; "0";"0.0000";"0.0000";"0.0000"; "1"; "0"; "N/A"; "0";"16"
"96"; "96";"BLOCK_GRAVEL" ; "33587232"; "24";"2400";"grvl"; "0"; "1"; "0"; "0"; "1"; "0"; "N/A"; "0";"16" "96"; "96";"BLOCK_GRAVEL" ;"0.1252";"0.1252";"0.1252"; "24";"2400";"grvl"; "0"; "1"; "0";"0.0000";"0.0000";"0.0000"; "1"; "0"; "N/A"; "0";"16"
"97"; "97";"BLOCK_GRAVEL_GREY" ; "33587232"; "24";"2400";"grvl"; "0"; "1"; "0"; "0"; "1"; "0"; "N/A"; "0";"16" "97"; "97";"BLOCK_GRAVEL_GREY" ;"0.1252";"0.1252";"0.1252"; "24";"2400";"grvl"; "0"; "1"; "0";"0.0000";"0.0000";"0.0000"; "1"; "0"; "N/A"; "0";"16"
"112"; "112";"BLOCK_ORE_MALACHITE" ; "33587232"; "48";"2400";"rock"; "0"; "1"; "0"; "0"; "0"; "0"; "N/A"; "0";"16" "112"; "112";"BLOCK_ORE_MALACHITE" ;"0.1252";"0.1252";"0.1252"; "48";"2400";"rock"; "0"; "1"; "0";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16"
"113"; "113";"BLOCK_ORE_HEMATITE" ; "33587232"; "48";"2400";"rock"; "0"; "1"; "0"; "0"; "0"; "0"; "N/A"; "0";"16" "113"; "113";"BLOCK_ORE_HEMATITE" ;"0.1252";"0.1252";"0.1252"; "48";"2400";"rock"; "0"; "1"; "0";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16"
"114"; "114";"BLOCK_ORE_NATURAL_GOLD" ; "33587232"; "48";"2400";"rock"; "0"; "1"; "0"; "0"; "0"; "0"; "N/A"; "0";"16" "114"; "114";"BLOCK_ORE_NATURAL_GOLD" ;"0.1252";"0.1252";"0.1252"; "48";"2400";"rock"; "0"; "1"; "0";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16"
"115"; "115";"BLOCK_ORE_NATURAL_SILVER" ; "33587232"; "48";"2400";"rock"; "0"; "1"; "0"; "0"; "0"; "0"; "N/A"; "0";"16" "115"; "115";"BLOCK_ORE_NATURAL_SILVER" ;"0.1252";"0.1252";"0.1252"; "48";"2400";"rock"; "0"; "1"; "0";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16"
"116"; "116";"BLOCK_ORE_RUTILE" ; "33587232"; "48";"2400";"rock"; "0"; "1"; "0"; "0"; "0"; "0"; "N/A"; "0";"16" "116"; "116";"BLOCK_ORE_RUTILE" ;"0.1252";"0.1252";"0.1252"; "48";"2400";"rock"; "0"; "1"; "0";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16"
"117"; "117";"BLOCK_ORE_AURICHALCUMITE" ; "33587232"; "48";"2400";"rock"; "0"; "1"; "0"; "0"; "0"; "0"; "N/A"; "0";"16" "117"; "117";"BLOCK_ORE_AURICHALCUMITE" ;"0.1252";"0.1252";"0.1252"; "48";"2400";"rock"; "0"; "1"; "0";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16"
"128"; "128";"BLOCK_GEM_RUBY" ; "33587232"; "48";"2400";"rock"; "0"; "1"; "0"; "0"; "0"; "0"; "N/A"; "0";"16" "128"; "128";"BLOCK_GEM_RUBY" ;"0.1252";"0.1252";"0.1252"; "48";"2400";"rock"; "0"; "1"; "0";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16"
"129"; "129";"BLOCK_GEM_EMERALD" ; "33587232"; "48";"2400";"rock"; "0"; "1"; "0"; "0"; "0"; "0"; "N/A"; "0";"16" "129"; "129";"BLOCK_GEM_EMERALD" ;"0.1252";"0.1252";"0.1252"; "48";"2400";"rock"; "0"; "1"; "0";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16"
"130"; "130";"BLOCK_GEM_SAPPHIRE" ; "33587232"; "48";"2400";"rock"; "0"; "1"; "0"; "0"; "0"; "0"; "N/A"; "0";"16" "130"; "130";"BLOCK_GEM_SAPPHIRE" ;"0.1252";"0.1252";"0.1252"; "48";"2400";"rock"; "0"; "1"; "0";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16"
"131"; "131";"BLOCK_GEM_TOPAZ" ; "33587232"; "48";"2400";"rock"; "0"; "1"; "0"; "0"; "0"; "0"; "N/A"; "0";"16" "131"; "131";"BLOCK_GEM_TOPAZ" ;"0.1252";"0.1252";"0.1252"; "48";"2400";"rock"; "0"; "1"; "0";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16"
"132"; "132";"BLOCK_GEM_DIAMOND" ; "33587232"; "48";"2400";"rock"; "0"; "1"; "0"; "0"; "0"; "0"; "N/A"; "0";"16" "132"; "132";"BLOCK_GEM_DIAMOND" ;"0.1252";"0.1252";"0.1252"; "48";"2400";"rock"; "0"; "1"; "0";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16"
"133"; "133";"BLOCK_GEM_AMETHYST" ; "33587232"; "48";"2400";"rock"; "0"; "1"; "0"; "0"; "0"; "0"; "N/A"; "0";"16" "133"; "133";"BLOCK_GEM_AMETHYST" ;"0.1252";"0.1252";"0.1252"; "48";"2400";"rock"; "0"; "1"; "0";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16"
"144"; "144";"BLOCK_SNOW" ; "33587232"; "24"; "500";"snow"; "0"; "1"; "1"; "0"; "0"; "0"; "N/A"; "0";"16" "144"; "144";"BLOCK_SNOW" ;"0.1252";"0.1252";"0.1252"; "24"; "500";"snow"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16"
"145"; "0";"BLOCK_ICE_FRAGILE" ; "13644813"; "5"; "930";"icei"; "0"; "1"; "0"; "0"; "0"; "0"; "N/A"; "0"; "4" "145"; "0";"BLOCK_ICE_FRAGILE" ;"0.0508";"0.0508";"0.0508"; "5"; "930";"icei"; "0"; "1"; "0";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0"; "4"
"146"; "146";"BLOCK_ICE_NATURAL" ; "27289626"; "35"; "930";"icei"; "0"; "1"; "1"; "0"; "0"; "0"; "N/A"; "0"; "4" "146"; "146";"BLOCK_ICE_NATURAL" ;"0.1016";"0.1016";"0.1016"; "35"; "930";"icei"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0"; "4"
"147"; "147";"BLOCK_ICE_CLEAR_MAGICAL" ; "33587232"; "48";"3720";"icex"; "0"; "1"; "1"; "19955770"; "0"; "0"; "N/A"; "0"; "4" "147"; "147";"BLOCK_ICE_CLEAR_MAGICAL" ;"0.1252";"0.1252";"0.1252"; "48";"3720";"icex"; "0"; "1"; "1";"0.0744";"0.1252";"0.2268"; "0"; "0"; "N/A"; "0"; "4"
"148"; "148";"BLOCK_GLASS_CRUDE" ; "3146755"; "5";"2500";"glas"; "0"; "1"; "1"; "0"; "0"; "0"; "N/A"; "0";"16" "148"; "148";"BLOCK_GLASS_CRUDE" ;"0.0120";"0.0040";"0.0120"; "5";"2500";"glas"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16"
"149"; "149";"BLOCK_GLASS_CLEAN" ; "1049601"; "5";"2203";"glas"; "0"; "1"; "1"; "0"; "0"; "0"; "N/A"; "0";"16" "149"; "149";"BLOCK_GLASS_CLEAN" ;"0.0040";"0.0040";"0.0040"; "5";"2203";"glas"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16"
"160"; "160";"BLOCK_PLATFORM_STONE" ; "8396808"; "5"; "N/A";"rock"; "0"; "0"; "0"; "0"; "0"; "0"; "N/A"; "0";"16" "160"; "160";"BLOCK_PLATFORM_STONE" ;"0.0312";"0.0312";"0.0312"; "5"; "N/A";"rock"; "0"; "0"; "0";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16"
"161"; "161";"BLOCK_PLATFORM_WOODEN" ; "8396808"; "5"; "N/A";"wood"; "0"; "0"; "0"; "0"; "0"; "0"; "N/A"; "0";"16" "161"; "161";"BLOCK_PLATFORM_WOODEN" ;"0.0312";"0.0312";"0.0312"; "5"; "N/A";"wood"; "0"; "0"; "0";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16"
"162"; "162";"BLOCK_PLATFORM_EBONY" ; "8396808"; "5"; "N/A";"wood"; "0"; "0"; "0"; "0"; "0"; "0"; "N/A"; "0";"16" "162"; "162";"BLOCK_PLATFORM_EBONY" ;"0.0312";"0.0312";"0.0312"; "5"; "N/A";"wood"; "0"; "0"; "0";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16"
"163"; "163";"BLOCK_PLATFORM_BIRCH" ; "8396808"; "5"; "N/A";"wood"; "0"; "0"; "0"; "0"; "0"; "0"; "N/A"; "0";"16" "163"; "163";"BLOCK_PLATFORM_BIRCH" ;"0.0312";"0.0312";"0.0312"; "5"; "N/A";"wood"; "0"; "0"; "0";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16"
"164"; "164";"BLOCK_PLATFORM_BLOODROSE" ; "8396808"; "5"; "N/A";"wood"; "0"; "0"; "0"; "0"; "0"; "0"; "N/A"; "0";"16" "164"; "164";"BLOCK_PLATFORM_BLOODROSE" ;"0.0312";"0.0312";"0.0312"; "5"; "N/A";"wood"; "0"; "0"; "0";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16"
"176"; "176";"BLOCK_TORCH" ; "8396808"; "1"; "N/A";"fxtr"; "0"; "0"; "0"; "267553792"; "0"; "1"; "N/A"; "0";"16" "176"; "176";"BLOCK_TORCH" ;"0.0312";"0.0312";"0.0312"; "1"; "N/A";"fxtr"; "0"; "0"; "0";"1.0000";"0.6372";"0.0000"; "0"; "1"; "N/A"; "0";"16"
"177"; "177";"BLOCK_TORCH_FROST" ; "8396808"; "1"; "N/A";"fxtr"; "0"; "0"; "0"; "81916159"; "0"; "1"; "N/A"; "0";"16" "177"; "177";"BLOCK_TORCH_FROST" ;"0.0312";"0.0312";"0.0312"; "1"; "N/A";"fxtr"; "0"; "0"; "0";"0.3048";"0.4848";"1.0000"; "0"; "1"; "N/A"; "0";"16"
"192"; "176";"BLOCK_TORCH" ; "8396808"; "1"; "N/A";"fxtr"; "0"; "0"; "0"; "0"; "0"; "0"; "N/A"; "0";"16" "192"; "176";"BLOCK_TORCH" ;"0.0312";"0.0312";"0.0312"; "1"; "N/A";"fxtr"; "0"; "0"; "0";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16"
"193"; "177";"BLOCK_TORCH_FROST" ; "8396808"; "1"; "N/A";"fxtr"; "0"; "0"; "0"; "0"; "0"; "0"; "N/A"; "0";"16" "193"; "177";"BLOCK_TORCH_FROST" ;"0.0312";"0.0312";"0.0312"; "1"; "N/A";"fxtr"; "0"; "0"; "0";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16"
"208"; "208";"BLOCK_ILLUMINATOR_WHITE" ; "8396808"; "1"; "N/A";"glas"; "0"; "1"; "1"; "239319274"; "0"; "0"; "N/A"; "0";"16" "208"; "208";"BLOCK_ILLUMINATOR_WHITE" ;"0.0312";"0.0312";"0.0312"; "1"; "N/A";"glas"; "0"; "1"; "1";"0.8916";"0.9304";"0.9148"; "0"; "0"; "N/A"; "0";"16"
"209"; "209";"BLOCK_ILLUMINATOR_YELLOW" ; "8396808"; "1"; "N/A";"glas"; "0"; "1"; "1"; "267607040"; "0"; "0"; "N/A"; "0";"16" "209"; "209";"BLOCK_ILLUMINATOR_YELLOW" ;"0.0312";"0.0312";"0.0312"; "1"; "N/A";"glas"; "0"; "1"; "1";"1.0000";"0.8408";"0.0000"; "0"; "0"; "N/A"; "0";"16"
"210"; "210";"BLOCK_ILLUMINATOR_ORANGE" ; "8396808"; "1"; "N/A";"glas"; "0"; "1"; "1"; "267546624"; "0"; "0"; "N/A"; "0";"16" "210"; "210";"BLOCK_ILLUMINATOR_ORANGE" ;"0.0312";"0.0312";"0.0312"; "1"; "N/A";"glas"; "0"; "1"; "1";"1.0000";"0.6100";"0.0000"; "0"; "0"; "N/A"; "0";"16"
"211"; "211";"BLOCK_ILLUMINATOR_RED" ; "8396808"; "1"; "N/A";"glas"; "0"; "1"; "1"; "246415360"; "0"; "0"; "N/A"; "0";"16" "211"; "211";"BLOCK_ILLUMINATOR_RED" ;"0.0312";"0.0312";"0.0312"; "1"; "N/A";"glas"; "0"; "1"; "1";"0.9188";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16"
"212"; "212";"BLOCK_ILLUMINATOR_FUCHSIA" ; "8396808"; "1"; "N/A";"glas"; "0"; "1"; "1"; "246415543"; "0"; "0"; "N/A"; "0";"16" "212"; "212";"BLOCK_ILLUMINATOR_FUCHSIA" ;"0.0312";"0.0312";"0.0312"; "1"; "N/A";"glas"; "0"; "1"; "1";"0.9188";"0.0000";"0.7156"; "0"; "0"; "N/A"; "0";"16"
"213"; "213";"BLOCK_ILLUMINATOR_PURPLE" ; "8396808"; "1"; "N/A";"glas"; "0"; "1"; "1"; "191889643"; "0"; "0"; "N/A"; "0";"16" "213"; "213";"BLOCK_ILLUMINATOR_PURPLE" ;"0.0312";"0.0312";"0.0312"; "1"; "N/A";"glas"; "0"; "1"; "1";"0.7156";"0.0000";"0.9188"; "0"; "0"; "N/A"; "0";"16"
"214"; "214";"BLOCK_ILLUMINATOR_BLUE" ; "8396808"; "1"; "N/A";"glas"; "0"; "1"; "1"; "52479"; "0"; "0"; "N/A"; "0";"16" "214"; "214";"BLOCK_ILLUMINATOR_BLUE" ;"0.0312";"0.0312";"0.0312"; "1"; "N/A";"glas"; "0"; "1"; "1";"0.0000";"0.1996";"0.9188"; "0"; "0"; "N/A"; "0";"16"
"215"; "215";"BLOCK_ILLUMINATOR_CYAN" ; "8396808"; "1"; "N/A";"glas"; "0"; "1"; "1"; "219391"; "0"; "0"; "N/A"; "0";"16" "215"; "215";"BLOCK_ILLUMINATOR_CYAN" ;"0.0312";"0.0312";"0.0312"; "1"; "N/A";"glas"; "0"; "1"; "1";"0.0000";"0.8368";"0.9188"; "0"; "0"; "N/A"; "0";"16"
"216"; "216";"BLOCK_ILLUMINATOR_GREEN" ; "8396808"; "1"; "N/A";"glas"; "0"; "1"; "1"; "56884224"; "0"; "0"; "N/A"; "0";"16" "216"; "216";"BLOCK_ILLUMINATOR_GREEN" ;"0.0312";"0.0312";"0.0312"; "1"; "N/A";"glas"; "0"; "1"; "1";"0.2112";"1.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16"
"217"; "217";"BLOCK_ILLUMINATOR_GREEN_DARK";"8396808"; "1"; "N/A";"glas"; "0"; "1"; "1"; "33660928"; "0"; "0"; "N/A"; "0";"16" "217"; "217";"BLOCK_ILLUMINATOR_GREEN_DARK";"0.0312";"0.0312";"0.0312"; "1"; "N/A";"glas"; "0"; "1"; "1";"0.1252";"0.4068";"0.0000"; "0"; "0"; "N/A"; "0";"16"
"218"; "218";"BLOCK_ILLUMINATOR_BROWN" ; "8396808"; "1"; "N/A";"glas"; "0"; "1"; "1"; "89161728"; "0"; "0"; "N/A"; "0";"16" "218"; "218";"BLOCK_ILLUMINATOR_BROWN" ;"0.0312";"0.0312";"0.0312"; "1"; "N/A";"glas"; "0"; "1"; "1";"0.3324";"0.1252";"0.0000"; "0"; "0"; "N/A"; "0";"16"
"219"; "219";"BLOCK_ILLUMINATOR_TAN" ; "8396808"; "1"; "N/A";"glas"; "0"; "1"; "1"; "157392948"; "0"; "0"; "N/A"; "0";"16" "219"; "219";"BLOCK_ILLUMINATOR_TAN" ;"0.0312";"0.0312";"0.0312"; "1"; "N/A";"glas"; "0"; "1"; "1";"0.5864";"0.4068";"0.2032"; "0"; "0"; "N/A"; "0";"16"
"220"; "220";"BLOCK_ILLUMINATOR_GREY_LIGHT";"8396808"; "1"; "N/A";"glas"; "0"; "1"; "1"; "198374589"; "0"; "0"; "N/A"; "0";"16" "220"; "220";"BLOCK_ILLUMINATOR_GREY_LIGHT";"0.0312";"0.0312";"0.0312"; "1"; "N/A";"glas"; "0"; "1"; "1";"0.7392";"0.7392";"0.7392"; "0"; "0"; "N/A"; "0";"16"
"221"; "221";"BLOCK_ILLUMINATOR_GREY_MED"; "8396808"; "1"; "N/A";"glas"; "0"; "1"; "1"; "122803317"; "0"; "0"; "N/A"; "0";"16" "221"; "221";"BLOCK_ILLUMINATOR_GREY_MED" ;"0.0312";"0.0312";"0.0312"; "1"; "N/A";"glas"; "0"; "1"; "1";"0.4576";"0.4576";"0.4576"; "0"; "0"; "N/A"; "0";"16"
"222"; "222";"BLOCK_ILLUMINATOR_GREY_DARK"; "8396808"; "1"; "N/A";"glas"; "0"; "1"; "1"; "68224065"; "0"; "0"; "N/A"; "0";"16" "222"; "222";"BLOCK_ILLUMINATOR_GREY_DARK" ;"0.0312";"0.0312";"0.0312"; "1"; "N/A";"glas"; "0"; "1"; "1";"0.2540";"0.2540";"0.2540"; "0"; "0"; "N/A"; "0";"16"
"223"; "223";"BLOCK_ILLUMINATOR_BLACK" ; "8396808"; "1"; "N/A";"glas"; "0"; "1"; "1"; "116392191"; "0"; "0"; "N/A"; "0";"16" "223"; "223";"BLOCK_ILLUMINATOR_BLACK" ;"0.0312";"0.0312";"0.0312"; "1"; "N/A";"glas"; "0"; "1"; "1";"0.4340";"0.0000";"0.9972"; "0"; "0"; "N/A"; "0";"16"
"224"; "208";"BLOCK_ILLUMINATOR_WHITE" ; "33587232"; "1"; "N/A";"glas"; "0"; "1"; "1"; "0"; "0"; "0"; "N/A"; "0";"16" "224"; "208";"BLOCK_ILLUMINATOR_WHITE" ;"0.1252";"0.1252";"0.1252"; "1"; "N/A";"glas"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16"
"225"; "209";"BLOCK_ILLUMINATOR_YELLOW" ; "33587232"; "1"; "N/A";"glas"; "0"; "1"; "1"; "0"; "0"; "0"; "N/A"; "0";"16" "225"; "209";"BLOCK_ILLUMINATOR_YELLOW" ;"0.1252";"0.1252";"0.1252"; "1"; "N/A";"glas"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16"
"226"; "210";"BLOCK_ILLUMINATOR_ORANGE" ; "33587232"; "1"; "N/A";"glas"; "0"; "1"; "1"; "0"; "0"; "0"; "N/A"; "0";"16" "226"; "210";"BLOCK_ILLUMINATOR_ORANGE" ;"0.1252";"0.1252";"0.1252"; "1"; "N/A";"glas"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16"
"227"; "211";"BLOCK_ILLUMINATOR_RED" ; "33587232"; "1"; "N/A";"glas"; "0"; "1"; "1"; "0"; "0"; "0"; "N/A"; "0";"16" "227"; "211";"BLOCK_ILLUMINATOR_RED" ;"0.1252";"0.1252";"0.1252"; "1"; "N/A";"glas"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16"
"228"; "212";"BLOCK_ILLUMINATOR_FUCHSIA" ; "33587232"; "1"; "N/A";"glas"; "0"; "1"; "1"; "0"; "0"; "0"; "N/A"; "0";"16" "228"; "212";"BLOCK_ILLUMINATOR_FUCHSIA" ;"0.1252";"0.1252";"0.1252"; "1"; "N/A";"glas"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16"
"229"; "213";"BLOCK_ILLUMINATOR_PURPLE" ; "33587232"; "1"; "N/A";"glas"; "0"; "1"; "1"; "0"; "0"; "0"; "N/A"; "0";"16" "229"; "213";"BLOCK_ILLUMINATOR_PURPLE" ;"0.1252";"0.1252";"0.1252"; "1"; "N/A";"glas"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16"
"230"; "214";"BLOCK_ILLUMINATOR_BLUE" ; "33587232"; "1"; "N/A";"glas"; "0"; "1"; "1"; "0"; "0"; "0"; "N/A"; "0";"16" "230"; "214";"BLOCK_ILLUMINATOR_BLUE" ;"0.1252";"0.1252";"0.1252"; "1"; "N/A";"glas"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16"
"231"; "215";"BLOCK_ILLUMINATOR_CYAN" ; "33587232"; "1"; "N/A";"glas"; "0"; "1"; "1"; "0"; "0"; "0"; "N/A"; "0";"16" "231"; "215";"BLOCK_ILLUMINATOR_CYAN" ;"0.1252";"0.1252";"0.1252"; "1"; "N/A";"glas"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16"
"232"; "216";"BLOCK_ILLUMINATOR_GREEN" ; "33587232"; "1"; "N/A";"glas"; "0"; "1"; "1"; "0"; "0"; "0"; "N/A"; "0";"16" "232"; "216";"BLOCK_ILLUMINATOR_GREEN" ;"0.1252";"0.1252";"0.1252"; "1"; "N/A";"glas"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16"
"233"; "217";"BLOCK_ILLUMINATOR_GREEN_DARK";"33587232"; "1"; "N/A";"glas"; "0"; "1"; "1"; "0"; "0"; "0"; "N/A"; "0";"16" "233"; "217";"BLOCK_ILLUMINATOR_GREEN_DARK";"0.1252";"0.1252";"0.1252"; "1"; "N/A";"glas"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16"
"234"; "218";"BLOCK_ILLUMINATOR_BROWN" ; "33587232"; "1"; "N/A";"glas"; "0"; "1"; "1"; "0"; "0"; "0"; "N/A"; "0";"16" "234"; "218";"BLOCK_ILLUMINATOR_BROWN" ;"0.1252";"0.1252";"0.1252"; "1"; "N/A";"glas"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16"
"235"; "219";"BLOCK_ILLUMINATOR_TAN" ; "33587232"; "1"; "N/A";"glas"; "0"; "1"; "1"; "0"; "0"; "0"; "N/A"; "0";"16" "235"; "219";"BLOCK_ILLUMINATOR_TAN" ;"0.1252";"0.1252";"0.1252"; "1"; "N/A";"glas"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16"
"236"; "220";"BLOCK_ILLUMINATOR_GREY_LIGHT";"33587232"; "1"; "N/A";"glas"; "0"; "1"; "1"; "0"; "0"; "0"; "N/A"; "0";"16" "236"; "220";"BLOCK_ILLUMINATOR_GREY_LIGHT";"0.1252";"0.1252";"0.1252"; "1"; "N/A";"glas"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16"
"237"; "221";"BLOCK_ILLUMINATOR_GREY_MED"; "33587232"; "1"; "N/A";"glas"; "0"; "1"; "1"; "0"; "0"; "0"; "N/A"; "0";"16" "237"; "221";"BLOCK_ILLUMINATOR_GREY_MED" ;"0.1252";"0.1252";"0.1252"; "1"; "N/A";"glas"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16"
"238"; "222";"BLOCK_ILLUMINATOR_GREY_DARK";"33587232"; "1"; "N/A";"glas"; "0"; "1"; "1"; "0"; "0"; "0"; "N/A"; "0";"16" "238"; "222";"BLOCK_ILLUMINATOR_GREY_DARK" ;"0.1252";"0.1252";"0.1252"; "1"; "N/A";"glas"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16"
"239"; "223";"BLOCK_ILLUMINATOR_BLACK" ; "33587232"; "1"; "N/A";"glas"; "0"; "1"; "1"; "0"; "0"; "0"; "N/A"; "0";"16" "239"; "223";"BLOCK_ILLUMINATOR_BLACK" ;"0.1252";"0.1252";"0.1252"; "1"; "N/A";"glas"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16"
"240"; "240";"BLOCK_SANDSTONE" ; "33587232"; "48";"1900";"rock"; "0"; "1"; "1"; "0"; "0"; "0"; "N/A"; "0";"16" "240"; "240";"BLOCK_SANDSTONE" ;"0.1252";"0.1252";"0.1252"; "48";"1900";"rock"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16"
"241"; "241";"BLOCK_SANDSTONE_WHITE" ; "33587232"; "48";"1900";"rock"; "0"; "1"; "1"; "0"; "0"; "0"; "N/A"; "0";"16" "241"; "241";"BLOCK_SANDSTONE_WHITE" ;"0.1252";"0.1252";"0.1252"; "48";"1900";"rock"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16"
"242"; "242";"BLOCK_SANDSTONE_RED" ; "33587232"; "48";"1900";"rock"; "0"; "1"; "1"; "0"; "0"; "0"; "N/A"; "0";"16" "242"; "242";"BLOCK_SANDSTONE_RED" ;"0.1252";"0.1252";"0.1252"; "48";"1900";"rock"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16"
"243"; "243";"BLOCK_SANDSTONE_DESERT" ; "33587232"; "48";"1900";"rock"; "0"; "1"; "1"; "0"; "0"; "0"; "N/A"; "0";"16" "243"; "243";"BLOCK_SANDSTONE_DESERT" ;"0.1252";"0.1252";"0.1252"; "48";"1900";"rock"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16"
"244"; "244";"BLOCK_SANDSTONE_BLACK" ; "33587232"; "48";"1900";"rock"; "0"; "1"; "1"; "0"; "0"; "0"; "N/A"; "0";"16" "244"; "244";"BLOCK_SANDSTONE_BLACK" ;"0.1252";"0.1252";"0.1252"; "48";"1900";"rock"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16"
"245"; "245";"BLOCK_SANDSTONE_GREEN" ; "33587232"; "48";"1900";"rock"; "0"; "1"; "1"; "0"; "0"; "0"; "N/A"; "0";"16" "245"; "245";"BLOCK_SANDSTONE_GREEN" ;"0.1252";"0.1252";"0.1252"; "48";"1900";"rock"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16"
"256"; "256";"BLOCK_LANTERN_IRON_REGULAR"; "8396808"; "1"; "N/A";"fxtr"; "0"; "0"; "0"; "267553792"; "0"; "0"; "N/A"; "0";"16" "256"; "256";"BLOCK_LANTERN_IRON_REGULAR" ;"0.0312";"0.0312";"0.0312"; "1"; "N/A";"fxtr"; "0"; "0"; "0";"1.0000";"0.6372";"0.0000"; "0"; "0"; "N/A"; "0";"16"
"257"; "257";"BLOCK_SUNSTONE" ; "33587232"; "1"; "N/A";"rock"; "0"; "1"; "0"; "0"; "0"; "2"; "N/A"; "0";"16" "257"; "257";"BLOCK_SUNSTONE" ;"0.1252";"0.1252";"0.1252"; "1"; "N/A";"rock"; "0"; "1"; "0";"0.0000";"0.0000";"0.0000"; "0"; "2"; "N/A"; "0";"16"
"258"; "258";"BLOCK_DAYLIGHT_CAPACITOR" ; "33587232"; "1"; "N/A";"glas"; "0"; "1"; "0"; "0"; "0"; "3"; "N/A"; "0";"16" "258"; "258";"BLOCK_DAYLIGHT_CAPACITOR" ;"0.1252";"0.1252";"0.1252"; "1"; "N/A";"glas"; "0"; "1"; "0";"0.0000";"0.0000";"0.0000"; "0"; "3"; "N/A"; "0";"16"
"4064"; "0";"BLOCK_LAVA" ;"260301048"; "100";"2600";"rock"; "1"; "0"; "0"; "205574144"; "0"; "0"; "32"; "0";"16" "4064"; "0";"BLOCK_LAVA" ;"0.9696";"0.9696";"0.9696"; "100";"2600";"rock"; "1"; "0"; "0";"0.7664";"0.2032";"0.0000"; "0"; "0"; "32"; "0";"16"
"4065"; "0";"BLOCK_LAVA" ;"260301048"; "100";"2600";"rock"; "1"; "0"; "0"; "205574144"; "0"; "0"; "32"; "0";"16" "4065"; "0";"BLOCK_LAVA" ;"0.9696";"0.9696";"0.9696"; "100";"2600";"rock"; "1"; "0"; "0";"0.7664";"0.2032";"0.0000"; "0"; "0"; "32"; "0";"16"
"4066"; "0";"BLOCK_LAVA" ;"260301048"; "100";"2600";"rock"; "1"; "0"; "0"; "205574144"; "0"; "0"; "32"; "0";"16" "4066"; "0";"BLOCK_LAVA" ;"0.9696";"0.9696";"0.9696"; "100";"2600";"rock"; "1"; "0"; "0";"0.7664";"0.2032";"0.0000"; "0"; "0"; "32"; "0";"16"
"4067"; "0";"BLOCK_LAVA" ;"260301048"; "100";"2600";"rock"; "1"; "0"; "0"; "205574144"; "0"; "0"; "32"; "0";"16" "4067"; "0";"BLOCK_LAVA" ;"0.9696";"0.9696";"0.9696"; "100";"2600";"rock"; "1"; "0"; "0";"0.7664";"0.2032";"0.0000"; "0"; "0"; "32"; "0";"16"
"4068"; "0";"BLOCK_LAVA" ;"260301048"; "100";"2600";"rock"; "1"; "0"; "0"; "205574144"; "0"; "0"; "32"; "0";"16" "4068"; "0";"BLOCK_LAVA" ;"0.9696";"0.9696";"0.9696"; "100";"2600";"rock"; "1"; "0"; "0";"0.7664";"0.2032";"0.0000"; "0"; "0"; "32"; "0";"16"
"4069"; "0";"BLOCK_LAVA" ;"260301048"; "100";"2600";"rock"; "1"; "0"; "0"; "205574144"; "0"; "0"; "32"; "0";"16" "4069"; "0";"BLOCK_LAVA" ;"0.9696";"0.9696";"0.9696"; "100";"2600";"rock"; "1"; "0"; "0";"0.7664";"0.2032";"0.0000"; "0"; "0"; "32"; "0";"16"
"4070"; "0";"BLOCK_LAVA" ;"260301048"; "100";"2600";"rock"; "1"; "0"; "0"; "205574144"; "0"; "0"; "32"; "0";"16" "4070"; "0";"BLOCK_LAVA" ;"0.9696";"0.9696";"0.9696"; "100";"2600";"rock"; "1"; "0"; "0";"0.7664";"0.2032";"0.0000"; "0"; "0"; "32"; "0";"16"
"4071"; "0";"BLOCK_LAVA" ;"260301048"; "100";"2600";"rock"; "1"; "0"; "0"; "205574144"; "0"; "0"; "32"; "0";"16" "4071"; "0";"BLOCK_LAVA" ;"0.9696";"0.9696";"0.9696"; "100";"2600";"rock"; "1"; "0"; "0";"0.7664";"0.2032";"0.0000"; "0"; "0"; "32"; "0";"16"
"4072"; "0";"BLOCK_LAVA" ;"260301048"; "100";"2600";"rock"; "1"; "0"; "0"; "205574144"; "0"; "0"; "32"; "0";"16" "4072"; "0";"BLOCK_LAVA" ;"0.9696";"0.9696";"0.9696"; "100";"2600";"rock"; "1"; "0"; "0";"0.7664";"0.2032";"0.0000"; "0"; "0"; "32"; "0";"16"
"4073"; "0";"BLOCK_LAVA" ;"260301048"; "100";"2600";"rock"; "1"; "0"; "0"; "205574144"; "0"; "0"; "32"; "0";"16" "4073"; "0";"BLOCK_LAVA" ;"0.9696";"0.9696";"0.9696"; "100";"2600";"rock"; "1"; "0"; "0";"0.7664";"0.2032";"0.0000"; "0"; "0"; "32"; "0";"16"
"4074"; "0";"BLOCK_LAVA" ;"260301048"; "100";"2600";"rock"; "1"; "0"; "0"; "205574144"; "0"; "0"; "32"; "0";"16" "4074"; "0";"BLOCK_LAVA" ;"0.9696";"0.9696";"0.9696"; "100";"2600";"rock"; "1"; "0"; "0";"0.7664";"0.2032";"0.0000"; "0"; "0"; "32"; "0";"16"
"4075"; "0";"BLOCK_LAVA" ;"260301048"; "100";"2600";"rock"; "1"; "0"; "0"; "205574144"; "0"; "0"; "32"; "0";"16" "4075"; "0";"BLOCK_LAVA" ;"0.9696";"0.9696";"0.9696"; "100";"2600";"rock"; "1"; "0"; "0";"0.7664";"0.2032";"0.0000"; "0"; "0"; "32"; "0";"16"
"4076"; "0";"BLOCK_LAVA" ;"260301048"; "100";"2600";"rock"; "1"; "0"; "0"; "205574144"; "0"; "0"; "32"; "0";"16" "4076"; "0";"BLOCK_LAVA" ;"0.9696";"0.9696";"0.9696"; "100";"2600";"rock"; "1"; "0"; "0";"0.7664";"0.2032";"0.0000"; "0"; "0"; "32"; "0";"16"
"4077"; "0";"BLOCK_LAVA" ;"260301048"; "100";"2600";"rock"; "1"; "0"; "0"; "205574144"; "0"; "0"; "32"; "0";"16" "4077"; "0";"BLOCK_LAVA" ;"0.9696";"0.9696";"0.9696"; "100";"2600";"rock"; "1"; "0"; "0";"0.7664";"0.2032";"0.0000"; "0"; "0"; "32"; "0";"16"
"4078"; "0";"BLOCK_LAVA" ;"260301048"; "100";"2600";"rock"; "1"; "0"; "0"; "205574144"; "0"; "0"; "32"; "0";"16" "4078"; "0";"BLOCK_LAVA" ;"0.9696";"0.9696";"0.9696"; "100";"2600";"rock"; "1"; "0"; "0";"0.7664";"0.2032";"0.0000"; "0"; "0"; "32"; "0";"16"
"4079"; "0";"BLOCK_LAVA" ;"260301048"; "100";"2600";"rock"; "1"; "0"; "0"; "205574144"; "0"; "0"; "32"; "0";"16" "4079"; "0";"BLOCK_LAVA" ;"0.9696";"0.9696";"0.9696"; "100";"2600";"rock"; "1"; "0"; "0";"0.7664";"0.2032";"0.0000"; "0"; "0"; "32"; "0";"16"
"4080"; "0";"BLOCK_WATER" ; "27282445"; "100";"1000";"watr"; "1"; "0"; "0"; "0"; "0"; "0"; "16"; "0";"16" "4080"; "0";"BLOCK_WATER" ;"0.1016";"0.0744";"0.0508"; "100";"1000";"watr"; "1"; "0"; "0";"0.0000";"0.0000";"0.0000"; "0"; "0"; "16"; "0";"16"
"4081"; "0";"BLOCK_WATER" ; "27282445"; "100";"1000";"watr"; "1"; "0"; "0"; "0"; "0"; "0"; "16"; "0";"16" "4081"; "0";"BLOCK_WATER" ;"0.1016";"0.0744";"0.0508"; "100";"1000";"watr"; "1"; "0"; "0";"0.0000";"0.0000";"0.0000"; "0"; "0"; "16"; "0";"16"
"4082"; "0";"BLOCK_WATER" ; "27282445"; "100";"1000";"watr"; "1"; "0"; "0"; "0"; "0"; "0"; "16"; "0";"16" "4082"; "0";"BLOCK_WATER" ;"0.1016";"0.0744";"0.0508"; "100";"1000";"watr"; "1"; "0"; "0";"0.0000";"0.0000";"0.0000"; "0"; "0"; "16"; "0";"16"
"4083"; "0";"BLOCK_WATER" ; "27282445"; "100";"1000";"watr"; "1"; "0"; "0"; "0"; "0"; "0"; "16"; "0";"16" "4083"; "0";"BLOCK_WATER" ;"0.1016";"0.0744";"0.0508"; "100";"1000";"watr"; "1"; "0"; "0";"0.0000";"0.0000";"0.0000"; "0"; "0"; "16"; "0";"16"
"4084"; "0";"BLOCK_WATER" ; "27282445"; "100";"1000";"watr"; "1"; "0"; "0"; "0"; "0"; "0"; "16"; "0";"16" "4084"; "0";"BLOCK_WATER" ;"0.1016";"0.0744";"0.0508"; "100";"1000";"watr"; "1"; "0"; "0";"0.0000";"0.0000";"0.0000"; "0"; "0"; "16"; "0";"16"
"4085"; "0";"BLOCK_WATER" ; "27282445"; "100";"1000";"watr"; "1"; "0"; "0"; "0"; "0"; "0"; "16"; "0";"16" "4085"; "0";"BLOCK_WATER" ;"0.1016";"0.0744";"0.0508"; "100";"1000";"watr"; "1"; "0"; "0";"0.0000";"0.0000";"0.0000"; "0"; "0"; "16"; "0";"16"
"4086"; "0";"BLOCK_WATER" ; "27282445"; "100";"1000";"watr"; "1"; "0"; "0"; "0"; "0"; "0"; "16"; "0";"16" "4086"; "0";"BLOCK_WATER" ;"0.1016";"0.0744";"0.0508"; "100";"1000";"watr"; "1"; "0"; "0";"0.0000";"0.0000";"0.0000"; "0"; "0"; "16"; "0";"16"
"4087"; "0";"BLOCK_WATER" ; "27282445"; "100";"1000";"watr"; "1"; "0"; "0"; "0"; "0"; "0"; "16"; "0";"16" "4087"; "0";"BLOCK_WATER" ;"0.1016";"0.0744";"0.0508"; "100";"1000";"watr"; "1"; "0"; "0";"0.0000";"0.0000";"0.0000"; "0"; "0"; "16"; "0";"16"
"4088"; "0";"BLOCK_WATER" ; "27282445"; "100";"1000";"watr"; "1"; "0"; "0"; "0"; "0"; "0"; "16"; "0";"16" "4088"; "0";"BLOCK_WATER" ;"0.1016";"0.0744";"0.0508"; "100";"1000";"watr"; "1"; "0"; "0";"0.0000";"0.0000";"0.0000"; "0"; "0"; "16"; "0";"16"
"4089"; "0";"BLOCK_WATER" ; "27282445"; "100";"1000";"watr"; "1"; "0"; "0"; "0"; "0"; "0"; "16"; "0";"16" "4089"; "0";"BLOCK_WATER" ;"0.1016";"0.0744";"0.0508"; "100";"1000";"watr"; "1"; "0"; "0";"0.0000";"0.0000";"0.0000"; "0"; "0"; "16"; "0";"16"
"4090"; "0";"BLOCK_WATER" ; "27282445"; "100";"1000";"watr"; "1"; "0"; "0"; "0"; "0"; "0"; "16"; "0";"16" "4090"; "0";"BLOCK_WATER" ;"0.1016";"0.0744";"0.0508"; "100";"1000";"watr"; "1"; "0"; "0";"0.0000";"0.0000";"0.0000"; "0"; "0"; "16"; "0";"16"
"4091"; "0";"BLOCK_WATER" ; "27282445"; "100";"1000";"watr"; "1"; "0"; "0"; "0"; "0"; "0"; "16"; "0";"16" "4091"; "0";"BLOCK_WATER" ;"0.1016";"0.0744";"0.0508"; "100";"1000";"watr"; "1"; "0"; "0";"0.0000";"0.0000";"0.0000"; "0"; "0"; "16"; "0";"16"
"4092"; "0";"BLOCK_WATER" ; "27282445"; "100";"1000";"watr"; "1"; "0"; "0"; "0"; "0"; "0"; "16"; "0";"16" "4092"; "0";"BLOCK_WATER" ;"0.1016";"0.0744";"0.0508"; "100";"1000";"watr"; "1"; "0"; "0";"0.0000";"0.0000";"0.0000"; "0"; "0"; "16"; "0";"16"
"4093"; "0";"BLOCK_WATER" ; "27282445"; "100";"1000";"watr"; "1"; "0"; "0"; "0"; "0"; "0"; "16"; "0";"16" "4093"; "0";"BLOCK_WATER" ;"0.1016";"0.0744";"0.0508"; "100";"1000";"watr"; "1"; "0"; "0";"0.0000";"0.0000";"0.0000"; "0"; "0"; "16"; "0";"16"
"4094"; "0";"BLOCK_WATER" ; "27282445"; "100";"1000";"watr"; "1"; "0"; "0"; "0"; "0"; "0"; "16"; "0";"16" "4094"; "0";"BLOCK_WATER" ;"0.1016";"0.0744";"0.0508"; "100";"1000";"watr"; "1"; "0"; "0";"0.0000";"0.0000";"0.0000"; "0"; "0"; "16"; "0";"16"
"4095"; "0";"BLOCK_WATER" ; "27282445"; "100";"1000";"watr"; "1"; "0"; "0"; "0"; "0"; "0"; "16"; "0";"16" "4095"; "0";"BLOCK_WATER" ;"0.1016";"0.0744";"0.0508"; "100";"1000";"watr"; "1"; "0"; "0";"0.0000";"0.0000";"0.0000"; "0"; "0"; "16"; "0";"16"
"-1"; "0";"BLOCK_NULL" ;"1073741823"; "-1";"2600";"null"; "0"; "0"; "1"; "0"; "0"; "0"; "N/A"; "0";"16" "-1"; "0";"BLOCK_NULL" ;"4.0000";"4.0000";"4.0000"; "-1";"2600";"null"; "0"; "0"; "1";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16"
## Notes ## ## Notes ##
# blid: Block ID # id: Block ID
# drid: Drop ID # drop: Drop ID
# shdr/g/b, lumr/g/b: Shade RGB/ Lum RGB.
# valid range: float of 0..4; 1.0 for 255
# Friction: 0: frictionless, <16: slippery, 16: regular, >16: sticky # Friction: 0: frictionless, <16: slippery, 16: regular, >16: sticky
# Opacity/Lumcolor: 30-bit RGB. Only the light diffusers have a opacity value of ZERO.
# Solid: whether the tile has full collision # Solid: whether the tile has full collision
# vscs: viscosity, (velocity) / (1 + (n/16)), 16 halves movement speed, can be used to non-fluid tiles (sticky hazard, tarmac road in Terraria) # vscs: viscosity, (velocity) / (1 + (n/16)), 16 halves movement speed, can be used to non-fluid tiles (sticky hazard, tarmac road in Terraria)
Can't render this file because it contains an unexpected character in line 1 and column 20.

View File

@@ -398,7 +398,7 @@ class Ingame(val batch: SpriteBatch) : Screen {
WeatherMixer.update(delta) WeatherMixer.update(delta)
BlockStats.update() BlockStats.update()
if (!(CommandDict["setgl"] as SetGlobalLightOverride).lightOverride) if (!(CommandDict["setgl"] as SetGlobalLightOverride).lightOverride)
world.globalLight = WeatherMixer.globalLightNow.toRGB10() world.globalLight = WeatherMixer.globalLightNow
/////////////////////////// ///////////////////////////

View File

@@ -72,6 +72,10 @@ open class KVHashMap {
return value as Double return value as Double
} }
fun getAsFloat(key: String): Float? {
return getAsDouble(key)?.toFloat()
}
fun getAsString(key: String): String? { fun getAsString(key: String): String? {
val value = get(key) val value = get(key)

View File

@@ -20,7 +20,6 @@ import net.torvald.terrarum.imagefont.TinyAlphNum
import net.torvald.terrarum.itemproperties.ItemCodex import net.torvald.terrarum.itemproperties.ItemCodex
import net.torvald.terrarum.utils.JsonFetcher import net.torvald.terrarum.utils.JsonFetcher
import net.torvald.terrarum.utils.JsonWriter import net.torvald.terrarum.utils.JsonWriter
import net.torvald.terrarum.worlddrawer.RGB10
import net.torvald.terrarumsansbitmap.gdx.GameFontBase import net.torvald.terrarumsansbitmap.gdx.GameFontBase
import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack
import org.lwjgl.input.Controllers import org.lwjgl.input.Controllers
@@ -562,12 +561,12 @@ infix fun Color.mul(other: Color): Color = this.cpy().mul(other)
inline fun Color.toRGB10(): RGB10 { /*inline fun Color.toRGB10(): RGB10 {
val bits = this.toIntBits() // ABGR val bits = this.toIntBits() // ABGR
// 0bxxRRRRRRRRRRGGGGGGGGGGBBBBBBBBBB // 0bxxRRRRRRRRRRGGGGGGGGGGBBBBBBBBBB
// 0bAAAAAAAABBBBBBBBGGGGGGGGRRRRRRRR // 0bAAAAAAAABBBBBBBBGGGGGGGGRRRRRRRR
return bits.and(0x0000FF).shl(20) or bits.and(0x00FF00).shl(2) or bits.and(0xFF0000).ushr(16) return bits.and(0x0000FF).shl(20) or bits.and(0x00FF00).shl(2) or bits.and(0xFF0000).ushr(16)
} }*/

View File

@@ -3,6 +3,7 @@ package net.torvald.terrarum.blockproperties
import net.torvald.terrarum.utils.CSVFetcher import net.torvald.terrarum.utils.CSVFetcher
import net.torvald.terrarum.gameworld.MapLayer import net.torvald.terrarum.gameworld.MapLayer
import net.torvald.terrarum.gameworld.PairedMapLayer import net.torvald.terrarum.gameworld.PairedMapLayer
import net.torvald.terrarum.worlddrawer.LightmapRenderer
import org.apache.commons.csv.CSVRecord import org.apache.commons.csv.CSVRecord
import java.io.IOException import java.io.IOException
@@ -29,11 +30,11 @@ object BlockCodex {
println("[BlockCodex] Building block properties table") println("[BlockCodex] Building block properties table")
records.forEach { records.forEach {
if (intVal(it, "blid") == -1) { if (intVal(it, "id") == -1) {
setProp(nullProp, it) setProp(nullProp, it)
} }
else { else {
setProp(blockProps[intVal(it, "blid")], it) setProp(blockProps[intVal(it, "id")], it)
} }
} }
} }
@@ -84,13 +85,20 @@ object BlockCodex {
private fun setProp(prop: BlockProp, record: CSVRecord) { private fun setProp(prop: BlockProp, record: CSVRecord) {
prop.nameKey = record.get("name") prop.nameKey = record.get("name")
prop.id = intVal(record, "blid") prop.id = intVal(record, "id")
prop.drop = intVal(record, "drid") prop.drop = intVal(record, "drop")
prop.shadeColR = floatVal(record, "shdr") / LightmapRenderer.MUL_FLOAT
prop.shadeColG = floatVal(record, "shdg") / LightmapRenderer.MUL_FLOAT
prop.shadeColB = floatVal(record, "shdb") / LightmapRenderer.MUL_FLOAT
prop.opacity = intVal(record, "opacity")
prop.strength = intVal(record, "strength") prop.strength = intVal(record, "strength")
prop.density = intVal(record, "dsty") prop.density = intVal(record, "dsty")
prop.luminosity = intVal(record, "lumcolor")
prop.lumColR = floatVal(record, "lumr") / LightmapRenderer.MUL_FLOAT
prop.lumColG = floatVal(record, "lumg") / LightmapRenderer.MUL_FLOAT
prop.lumColB = floatVal(record, "lumb") / LightmapRenderer.MUL_FLOAT
prop.friction = intVal(record, "friction") prop.friction = intVal(record, "friction")
prop.viscosity = intVal(record, "vscs") prop.viscosity = intVal(record, "vscs")
@@ -102,22 +110,31 @@ object BlockCodex {
prop.dynamicLuminosityFunction = intVal(record, "dlfn") prop.dynamicLuminosityFunction = intVal(record, "dlfn")
print("${intVal(record, "blid")}") print("${intVal(record, "id")}")
println("\t" + prop.nameKey) println("\t" + prop.nameKey)
} }
private fun intVal(rec: CSVRecord, s: String): Int { private fun intVal(rec: CSVRecord, s: String): Int {
var ret = -1 var ret = -1
try { try {
ret = Integer.decode(rec.get(s))!! ret = rec.get(s).toInt()
} }
catch (e: NullPointerException) { catch (e: NumberFormatException) {
}
return ret
}
private fun floatVal(rec: CSVRecord, s: String): Float {
var ret = -1f
try {
ret = rec.get(s).toFloat()
}
catch (e: NumberFormatException) {
} }
return ret return ret
} }
private fun boolVal(rec: CSVRecord, s: String) = intVal(rec, s) != 0 private fun boolVal(rec: CSVRecord, s: String) = intVal(rec, s) != 0
private fun formatNum2(i: Int) = if (i < 10) "0" + i else i.toString()
} }

View File

@@ -1,5 +1,7 @@
package net.torvald.terrarum.blockproperties package net.torvald.terrarum.blockproperties
import com.badlogic.gdx.graphics.Color
/** /**
* Created by minjaesong on 16-02-16. * Created by minjaesong on 16-02-16.
*/ */
@@ -9,10 +11,16 @@ class BlockProp {
var nameKey: String = "" var nameKey: String = ""
var shadeColR = 0f
var shadeColG = 0f
var shadeColB = 0f
/** /**
* @param opacity Raw RGB value, without alpha * @param opacity Raw RGB value, without alpha
*/ */
var opacity: Int = 0 // colour attenuation inline val opacity: Color
get() = Color(shadeColR, shadeColG, shadeColB, 1f)
var strength: Int = 0 var strength: Int = 0
var density: Int = 0 var density: Int = 0
@@ -23,14 +31,16 @@ class BlockProp {
var isWallable: Boolean = false var isWallable: Boolean = false
var isVertFriction: Boolean = false var isVertFriction: Boolean = false
var lumColR = 0f
var lumColG = 0f
var lumColB = 0f
/** /**
* @param luminosity Raw RGB value, without alpha * @param luminosity Raw RGB value, without alpha
*/ */
var luminosity: Int = 0 inline val luminosity: Color
set(value) { get() = BlockPropUtil.getDynamicLumFunc(Color(lumColR, lumColG, lumColB, 1f), dynamicLuminosityFunction)
field = value
}
get() = BlockPropUtil.getDynamicLumFunc(field, dynamicLuminosityFunction)
var drop: Int = 0 var drop: Int = 0

View File

@@ -1,15 +1,14 @@
package net.torvald.terrarum.blockproperties package net.torvald.terrarum.blockproperties
import com.badlogic.gdx.Gdx import com.badlogic.gdx.Gdx
import com.badlogic.gdx.graphics.Color
import com.jme3.math.FastMath import com.jme3.math.FastMath
import net.torvald.random.HQRNG import net.torvald.random.HQRNG
import net.torvald.terrarum.Terrarum import net.torvald.terrarum.Terrarum
import net.torvald.terrarum.gameactors.Second import net.torvald.terrarum.gameactors.Second
import net.torvald.terrarum.gameworld.WorldTime import net.torvald.terrarum.gameworld.WorldTime
import net.torvald.terrarum.worlddrawer.LightmapRenderer import net.torvald.terrarum.worlddrawer.LightmapRenderer
import net.torvald.terrarum.toRGB10
import net.torvald.terrarum.weather.WeatherMixer import net.torvald.terrarum.weather.WeatherMixer
import net.torvald.terrarum.worlddrawer.RGB10
/** /**
* Created by minjaesong on 16-06-16. * Created by minjaesong on 16-06-16.
@@ -38,21 +37,21 @@ object BlockPropUtil {
} }
private fun getTorchFlicker(baseLum: Int): RGB10 { private fun getTorchFlicker(baseLum: Color): Color {
val funcY = FastMath.interpolateCatmullRom(0.0f, flickerFuncX.toFloat() / flickerFuncDomain, val funcY = FastMath.interpolateCatmullRom(0.0f, flickerFuncX / flickerFuncDomain,
flickerP0, flickerP1, flickerP2, flickerP3 flickerP0, flickerP1, flickerP2, flickerP3
) )
return LightmapRenderer.alterBrightnessUniform(baseLum, funcY) return LightmapRenderer.alterBrightnessUniform(baseLum, funcY)
} }
private fun getSlowBreath(baseLum: Int): RGB10 { private fun getSlowBreath(baseLum: Color): Color {
val funcY = FastMath.sin(FastMath.PI * breathFuncX / breathCycleDuration) * breathRange val funcY = FastMath.sin(FastMath.PI * breathFuncX / breathCycleDuration) * breathRange
return LightmapRenderer.alterBrightnessUniform(baseLum, funcY) return LightmapRenderer.alterBrightnessUniform(baseLum, funcY)
} }
private fun getPulsate(baseLum: Int): RGB10 { private fun getPulsate(baseLum: Color): Color {
val funcY = FastMath.sin(FastMath.PI * pulsateFuncX / pulsateCycleDuration) * pulsateRange val funcY = FastMath.sin(FastMath.PI * pulsateFuncX / pulsateCycleDuration) * pulsateRange
return LightmapRenderer.alterBrightnessUniform(baseLum, funcY) return LightmapRenderer.alterBrightnessUniform(baseLum, funcY)
@@ -92,11 +91,11 @@ object BlockPropUtil {
private fun linearInterpolation1D(a: Float, b: Float, x: Float) = a * (1 - x) + b * x private fun linearInterpolation1D(a: Float, b: Float, x: Float) = a * (1 - x) + b * x
fun getDynamicLumFunc(baseLum: Int, type: Int): Int { fun getDynamicLumFunc(baseLum: Color, type: Int): Color {
return when (type) { return when (type) {
1 -> getTorchFlicker(baseLum) 1 -> getTorchFlicker(baseLum)
2 -> Terrarum.ingame!!.world.globalLight // current global light 2 -> Terrarum.ingame!!.world.globalLight // current global light
3 -> WeatherMixer.getGlobalLightOfTime(WorldTime.DAY_LENGTH / 2).toRGB10() // daylight at noon 3 -> WeatherMixer.getGlobalLightOfTime(WorldTime.DAY_LENGTH / 2) // daylight at noon
4 -> getSlowBreath(baseLum) 4 -> getSlowBreath(baseLum)
5 -> getPulsate(baseLum) 5 -> getPulsate(baseLum)
else -> baseLum else -> baseLum

View File

@@ -1,5 +1,6 @@
package net.torvald.terrarum.console package net.torvald.terrarum.console
import com.badlogic.gdx.graphics.Color
import net.torvald.terrarum.worlddrawer.LightmapRenderer import net.torvald.terrarum.worlddrawer.LightmapRenderer
import net.torvald.terrarum.Terrarum import net.torvald.terrarum.Terrarum
@@ -14,10 +15,10 @@ internal object SetGlobalLightOverride : ConsoleCommand {
override fun execute(args: Array<String>) { override fun execute(args: Array<String>) {
if (args.size == 4) { if (args.size == 4) {
try { try {
val r = args[1].toInt() val r = args[1].toFloat()
val g = args[2].toInt() val g = args[2].toFloat()
val b = args[3].toInt() val b = args[3].toFloat()
val GL = LightmapRenderer.constructRGBFromInt(r, g, b) val GL = Color(r, g, b, 1f)
lightOverride = true lightOverride = true
Terrarum.ingame!!.world.globalLight = GL Terrarum.ingame!!.world.globalLight = GL
@@ -29,25 +30,6 @@ internal object SetGlobalLightOverride : ConsoleCommand {
Echo("Range: 0-" + LightmapRenderer.CHANNEL_MAX + " per channel") Echo("Range: 0-" + LightmapRenderer.CHANNEL_MAX + " per channel")
} }
}
else if (args.size == 2) {
try {
val GL = args[1].toInt()
if (GL.toInt() < 0 || GL.toInt() >= LightmapRenderer.COLOUR_RANGE_SIZE) {
Echo("Range: 0-" + (LightmapRenderer.COLOUR_RANGE_SIZE - 1))
}
else {
Terrarum.ingame!!.world.globalLight = GL
}
}
catch (e: NumberFormatException) {
if (args[1].toLowerCase() == "none")
lightOverride = false
else
Echo("Wrong number input.")
}
} }
else { else {
printUsage() printUsage()

View File

@@ -39,7 +39,9 @@ object AVKey {
* 0000 0010000000 0010000000 0010000000 * 0000 0010000000 0010000000 0010000000
* ^ Red ^ Green ^ Blue * ^ Red ^ Green ^ Blue
*/ */
const val LUMINOSITY = "luminosity" const val LUMR = "luminosityred"
const val LUMG = "luminositygreen"
const val LUMB = "luminosityblue"
const val DRAGCOEFF = "dragcoeff" const val DRAGCOEFF = "dragcoeff"
const val FALLDAMPENMULT = "falldampenmult" const val FALLDAMPENMULT = "falldampenmult"

View File

@@ -1,6 +1,7 @@
package net.torvald.terrarum.gameactors package net.torvald.terrarum.gameactors
import com.badlogic.gdx.Gdx import com.badlogic.gdx.Gdx
import com.badlogic.gdx.graphics.Color
import com.jme3.math.FastMath import com.jme3.math.FastMath
import net.torvald.terrarum.Terrarum import net.torvald.terrarum.Terrarum
import net.torvald.terrarum.gameactors.faction.Faction import net.torvald.terrarum.gameactors.faction.Faction
@@ -8,6 +9,7 @@ import net.torvald.terrarum.itemproperties.GameItem
import net.torvald.terrarum.itemproperties.Material import net.torvald.terrarum.itemproperties.Material
import net.torvald.terrarum.realestate.LandUtil import net.torvald.terrarum.realestate.LandUtil
import net.torvald.terrarum.ui.UIInventory import net.torvald.terrarum.ui.UIInventory
import net.torvald.terrarum.worlddrawer.LightmapRenderer
import java.util.* import java.util.*
/** /**
@@ -47,19 +49,17 @@ open class ActorHumanoid(birth: GameDate, death: GameDate? = null)
if (houseDesignation != null) houseDesignation!!.clear() if (houseDesignation != null) houseDesignation!!.clear()
} }
/** override var luminosity: Color
* Recommended implementation: get() = Color(
* (actorValue.getAsFloat(AVKey.LUMR) ?: 0f) / LightmapRenderer.MUL_FLOAT,
override var luminosity: Int (actorValue.getAsFloat(AVKey.LUMG) ?: 0f) / LightmapRenderer.MUL_FLOAT,
get() = actorValue.getAsInt(AVKey.LUMINOSITY) ?: 0 (actorValue.getAsFloat(AVKey.LUMB) ?: 0f) / LightmapRenderer.MUL_FLOAT,
set(value) { 1f
actorValue[AVKey.LUMINOSITY] = value )
}
*/
override var luminosity: Int
get() = actorValue.getAsInt(AVKey.LUMINOSITY) ?: 0
set(value) { set(value) {
actorValue[AVKey.LUMINOSITY] = value actorValue[AVKey.LUMR] = value.r * LightmapRenderer.MUL_FLOAT
actorValue[AVKey.LUMG] = value.g * LightmapRenderer.MUL_FLOAT
actorValue[AVKey.LUMB] = value.b * LightmapRenderer.MUL_FLOAT
} }
/** /**

View File

@@ -31,7 +31,8 @@ typealias Second = Float
* *
* Created by minjaesong on 16-01-13. * Created by minjaesong on 16-01-13.
*/ */
open class ActorWithPhysics(renderOrder: RenderOrder, val immobileBody: Boolean = false, physics: Boolean = true) : ActorWithBody(renderOrder) { open class ActorWithPhysics(renderOrder: RenderOrder, val immobileBody: Boolean = false, physics: Boolean = true) :
ActorWithBody(renderOrder) {
val COLLISION_TEST_MODE = false val COLLISION_TEST_MODE = false

View File

@@ -1,5 +1,6 @@
package net.torvald.terrarum.gameactors package net.torvald.terrarum.gameactors
import com.badlogic.gdx.graphics.Color
import net.torvald.terrarum.ModMgr import net.torvald.terrarum.ModMgr
import net.torvald.terrarum.blockproperties.Block import net.torvald.terrarum.blockproperties.Block
import net.torvald.terrarum.blockproperties.BlockCodex import net.torvald.terrarum.blockproperties.BlockCodex
@@ -11,11 +12,12 @@ import java.util.*
*/ */
internal class FixtureTikiTorch : FixtureBase(), Luminous { internal class FixtureTikiTorch : FixtureBase(), Luminous {
override var luminosity: Int override var luminosity: Color
get() = BlockCodex[Block.TORCH].luminosity get() = BlockCodex[Block.TORCH].luminosity
set(value) { set(value) {
throw UnsupportedOperationException() throw UnsupportedOperationException()
} }
override val lightBoxList: ArrayList<Hitbox> override val lightBoxList: ArrayList<Hitbox>
init { init {

View File

@@ -1,5 +1,7 @@
package net.torvald.terrarum.gameactors package net.torvald.terrarum.gameactors
import com.badlogic.gdx.graphics.Color
/** /**
* Created by minjaesong on 16-02-19. * Created by minjaesong on 16-02-19.
*/ */
@@ -8,13 +10,20 @@ interface Luminous {
/** /**
* Recommended implementation: * Recommended implementation:
* *
override var luminosity: Int override var luminosity: Color
get() = actorValue.getAsInt(AVKey.LUMINOSITY) ?: 0 get() = Color(
(actorValue.getAsFloat(AVKey.LUMR) ?: 0f) / LightmapRenderer.MUL_FLOAT,
(actorValue.getAsFloat(AVKey.LUMG) ?: 0f) / LightmapRenderer.MUL_FLOAT,
(actorValue.getAsFloat(AVKey.LUMB) ?: 0f) / LightmapRenderer.MUL_FLOAT,
1f
)
set(value) { set(value) {
actorValue[AVKey.LUMINOSITY] = value actorValue[AVKey.LUMR] = value.r * LightmapRenderer.MUL_FLOAT
actorValue[AVKey.LUMG] = value.g * LightmapRenderer.MUL_FLOAT
actorValue[AVKey.LUMB] = value.b * LightmapRenderer.MUL_FLOAT
} }
*/ */
var luminosity: Int var luminosity: Color
/** /**
* Arguments: * Arguments:

View File

@@ -49,8 +49,9 @@ object PlayerBuilderSigrid {
p.actorValue[AVKey.INTELLIGENT] = true p.actorValue[AVKey.INTELLIGENT] = true
//p.actorValue[AVKey.LUMINOSITY] = Color(0x434aff).to10bit() //p.actorValue[AVKey.LUMR] = 0.84f
//p.actorValue[AVKey.LUMINOSITY] = 214127943 // bright purple //p.actorValue[AVKey.LUMR] = 0.93f
//p.actorValue[AVKey.LUMR] = 1.37f
p.actorValue[AVKey.BASEDEFENCE] = 141 p.actorValue[AVKey.BASEDEFENCE] = 141

View File

@@ -28,8 +28,8 @@ open class ProjectileSimple(
val speed: Int val speed: Int
override var luminosity: Int override var luminosity: Color
get() = bulletDatabase[type][OFFSET_LUMINOSITY] as Int get() = (bulletDatabase[type][OFFSET_LUMINOSITY] as Color).cpy()
set(value) { set(value) {
} }
/** /**
@@ -115,8 +115,8 @@ open class ProjectileSimple(
val OFFSET_LUMINOSITY = 4 val OFFSET_LUMINOSITY = 4
val bulletDatabase = arrayOf( val bulletDatabase = arrayOf(
// damage, display colour, no gravity, speed // damage, display colour, no gravity, speed
arrayOf(7, Color(0xFF5429), true, 40, 32), arrayOf(7, Color(0xFF5429_FF.toInt()), true, 40, 32),
arrayOf(8, Color(0xFF5429), true, 20, 0) arrayOf(8, Color(0xFF5429_FF.toInt()), true, 20, 0)
// ... // ...
) )
} }

View File

@@ -1,5 +1,7 @@
package net.torvald.terrarum.gameactors package net.torvald.terrarum.gameactors
import com.badlogic.gdx.graphics.Color
/** /**
* Created by minjaesong on 16-04-26. * Created by minjaesong on 16-04-26.
*/ */
@@ -15,7 +17,7 @@ class WeaponSwung(val itemID: Int) : ActorWithPhysics(Actor.RenderOrder.MIDTOP),
actorValue[AVKey.LUMINOSITY] = value actorValue[AVKey.LUMINOSITY] = value
} }
*/ */
override var luminosity: Int override var luminosity: Color
get() = throw UnsupportedOperationException() get() = throw UnsupportedOperationException()
set(value) { set(value) {
} }

View File

@@ -73,14 +73,6 @@ internal class AILuaAPI(g: Globals, actor: ActorWithPhysics) {
t["strength"] = actor.avStrength.toLua() t["strength"] = actor.avStrength.toLua()
val lumrgb: Int = actor.actorValue.getAsInt(AVKey.LUMINOSITY) ?: 0
val MUL_2 = LightmapRenderer.MUL_2
val MUL = LightmapRenderer.MUL
val CHMAX = LightmapRenderer.CHANNEL_MAX
t["luminosityRGB"] = lumrgb.toLua()
t["luminosity"] = (lumrgb.div(MUL_2).and(CHMAX).times(3) +
lumrgb.div(MUL).and(CHMAX).times(4) +
lumrgb.and(1023)).div(8.0).toLua() // quick luminosity calculation
return t return t
} }

View File

@@ -1,9 +1,9 @@
package net.torvald.terrarum.gameworld package net.torvald.terrarum.gameworld
import com.badlogic.gdx.graphics.Color
import net.torvald.terrarum.realestate.LandUtil import net.torvald.terrarum.realestate.LandUtil
import net.torvald.terrarum.blockproperties.BlockCodex import net.torvald.terrarum.blockproperties.BlockCodex
import net.torvald.terrarum.worlddrawer.RGB10
import org.dyn4j.geometry.Vector2 import org.dyn4j.geometry.Vector2
typealias BlockAddress = Long typealias BlockAddress = Long
@@ -32,8 +32,8 @@ class GameWorld(val width: Int, val height: Int) {
//physics //physics
/** Meter per second squared. Currently only the downward gravity is supported. No reverse gravity :p */ /** Meter per second squared. Currently only the downward gravity is supported. No reverse gravity :p */
var gravitation: Vector2 = Vector2(0.0, 9.8) var gravitation: Vector2 = Vector2(0.0, 9.8)
/** RGB in Integer */ /** 0.0..1.0+ */
var globalLight: RGB10 = 0 var globalLight = Color(0f,0f,0f,1f)

View File

@@ -107,7 +107,7 @@ class BasicDebugInfoWindow : UICanvas {
val lightVal: String val lightVal: String
val mtX = mouseTileX.toString() val mtX = mouseTileX.toString()
val mtY = mouseTileY.toString() val mtY = mouseTileY.toString()
val valRaw = LightmapRenderer.getValueFromMap(mouseTileX, mouseTileY) val valRaw = LightmapRenderer.getLight(mouseTileX, mouseTileY)
val rawR = valRaw?.r?.times(100f)?.round()?.div(100f) val rawR = valRaw?.r?.times(100f)?.round()?.div(100f)
val rawG = valRaw?.g?.times(100f)?.round()?.div(100f) val rawG = valRaw?.g?.times(100f)?.round()?.div(100f)
val rawB = valRaw?.b?.times(100f)?.round()?.div(100f) val rawB = valRaw?.b?.times(100f)?.round()?.div(100f)

View File

@@ -9,7 +9,6 @@ import net.torvald.terrarum.gameactors.Second
import net.torvald.terrarum.gameactors.abs import net.torvald.terrarum.gameactors.abs
import net.torvald.terrarum.imagefont.Watch7SegSmall import net.torvald.terrarum.imagefont.Watch7SegSmall
import net.torvald.terrarum.worlddrawer.LightmapRenderer import net.torvald.terrarum.worlddrawer.LightmapRenderer
import net.torvald.terrarum.worlddrawer.toColor
import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack
/** /**
@@ -94,11 +93,11 @@ class UIBasicNotifier(private val player: ActorHumanoid?) : UICanvas {
if (player != null) { if (player != null) {
val playerPos = player.tilewiseHitbox val playerPos = player.tilewiseHitbox
lightLevel = (LightmapRenderer.getLight(playerPos.centeredX.toInt(), playerPos.centeredY.toInt()) ?: lightLevel = (LightmapRenderer.getLight(playerPos.centeredX.toInt(), playerPos.centeredY.toInt()) ?:
Terrarum.ingame!!.world.globalLight.toColor() Terrarum.ingame!!.world.globalLight
) )
} }
else { else {
lightLevel = Terrarum.ingame!!.world.globalLight.toColor() lightLevel = Terrarum.ingame!!.world.globalLight
} }

View File

@@ -12,7 +12,6 @@ import net.torvald.terrarum.imagefont.Watch7SegMain
import net.torvald.terrarum.imagefont.Watch7SegSmall import net.torvald.terrarum.imagefont.Watch7SegSmall
import net.torvald.terrarum.imagefont.WatchDotAlph import net.torvald.terrarum.imagefont.WatchDotAlph
import net.torvald.terrarum.worlddrawer.LightmapRenderer import net.torvald.terrarum.worlddrawer.LightmapRenderer
import net.torvald.terrarum.worlddrawer.toColor
import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack
/** /**
@@ -69,11 +68,11 @@ class UITierOneWatch(private val player: ActorHumanoid?) : UICanvas {
if (player != null) { if (player != null) {
val playerPos = player.tilewiseHitbox val playerPos = player.tilewiseHitbox
lightLevel = (LightmapRenderer.getLight(playerPos.centeredX.toInt(), playerPos.centeredY.toInt()) ?: lightLevel = (LightmapRenderer.getLight(playerPos.centeredX.toInt(), playerPos.centeredY.toInt()) ?:
Terrarum.ingame!!.world.globalLight.toColor() Terrarum.ingame!!.world.globalLight
) )
} }
else { else {
lightLevel = Terrarum.ingame!!.world.globalLight.toColor() lightLevel = Terrarum.ingame!!.world.globalLight
} }
// backplate // backplate

View File

@@ -11,6 +11,7 @@ import net.torvald.terrarum.*
import net.torvald.terrarum.gameactors.ParticleTestRain import net.torvald.terrarum.gameactors.ParticleTestRain
import net.torvald.terrarum.gamecontroller.KeyToggler import net.torvald.terrarum.gamecontroller.KeyToggler
import net.torvald.terrarum.gameworld.WorldTime import net.torvald.terrarum.gameworld.WorldTime
import net.torvald.terrarum.worlddrawer.LightmapRenderer
import java.io.File import java.io.File
import java.util.* import java.util.*

View File

@@ -10,10 +10,6 @@ import net.torvald.terrarum.gameworld.GameWorld
import net.torvald.terrarum.blockproperties.Block import net.torvald.terrarum.blockproperties.Block
import net.torvald.terrarum.fillRect import net.torvald.terrarum.fillRect
import net.torvald.terrarum.gameactors.* import net.torvald.terrarum.gameactors.*
import net.torvald.terrarum.toRGB10
import net.torvald.terrarum.worlddrawer.LightmapRenderer.b
import net.torvald.terrarum.worlddrawer.LightmapRenderer.g
import net.torvald.terrarum.worlddrawer.LightmapRenderer.r
import java.util.* import java.util.*
/** /**
@@ -22,7 +18,7 @@ import java.util.*
* Created by minjaesong on 16-01-25. * Created by minjaesong on 16-01-25.
*/ */
typealias RGB10 = Int //typealias RGB10 = Int
object LightmapRenderer { object LightmapRenderer {
private val world: GameWorld = Terrarum.ingame!!.world private val world: GameWorld = Terrarum.ingame!!.world
@@ -30,8 +26,8 @@ object LightmapRenderer {
// TODO if (VBO works on BlocksDrawer) THEN overscan of 256, utilise same technique in here // TODO if (VBO works on BlocksDrawer) THEN overscan of 256, utilise same technique in here
val overscan_open: Int = Math.min(32, 256f.div(BlockCodex[Block.AIR].opacity and 0xFF).ceil()) val overscan_open: Int = 32
val overscan_opaque: Int = Math.min(8, 256f.div(BlockCodex[Block.STONE].opacity and 0xFF).ceil()) val overscan_opaque: Int = 8
init { init {
println("[LightmapRenderer] Overscan open: $overscan_open; opaque: $overscan_opaque") println("[LightmapRenderer] Overscan open: $overscan_open; opaque: $overscan_opaque")
@@ -45,7 +41,7 @@ object LightmapRenderer {
.div(FeaturesDrawer.TILE_SIZE).ceil() + overscan_open * 2 + 3 .div(FeaturesDrawer.TILE_SIZE).ceil() + overscan_open * 2 + 3
/** /**
* 8-Bit RGB values * Float value, 1.0 for 1023
*/ */
private val lightmap: Array<Array<Color>> = Array(LIGHTMAP_HEIGHT) { Array(LIGHTMAP_WIDTH, { Color(0f,0f,0f,1f) }) } // TODO framebuffer? private val lightmap: Array<Array<Color>> = Array(LIGHTMAP_HEIGHT) { Array(LIGHTMAP_WIDTH, { Color(0f,0f,0f,1f) }) } // TODO framebuffer?
private val lanternMap = ArrayList<Lantern>(Terrarum.ingame!!.ACTORCONTAINER_INITIAL_SIZE * 4) private val lanternMap = ArrayList<Lantern>(Terrarum.ingame!!.ACTORCONTAINER_INITIAL_SIZE * 4)
@@ -63,6 +59,7 @@ object LightmapRenderer {
const val CHANNEL_MAX_FLOAT = CHANNEL_MAX.toFloat() const val CHANNEL_MAX_FLOAT = CHANNEL_MAX.toFloat()
const val COLOUR_RANGE_SIZE = MUL * MUL_2 const val COLOUR_RANGE_SIZE = MUL * MUL_2
const val MUL_FLOAT = MUL / 256f const val MUL_FLOAT = MUL / 256f
const val DIV_FLOAT = 256f / MUL
internal var for_x_start: Int = 0 internal var for_x_start: Int = 0
internal var for_y_start: Int = 0 internal var for_y_start: Int = 0
@@ -72,7 +69,21 @@ object LightmapRenderer {
//inline fun getLightRawPos(x: Int, y: Int) = lightmap[y][x] //inline fun getLightRawPos(x: Int, y: Int) = lightmap[y][x]
/**
* Conventional level (multiplied by four)
*/
fun getLight(x: Int, y: Int): Color? { fun getLight(x: Int, y: Int): Color? {
val col = getLightInternal(x, y)
if (col == null) {
return null
}
else {
return Color(col.r * MUL_FLOAT, col.g * MUL_FLOAT, col.b * MUL_FLOAT, 1f)
}
}
private fun getLightInternal(x: Int, y: Int): Color? {
if (y - for_y_start + overscan_open in 0..lightmap.lastIndex && if (y - for_y_start + overscan_open in 0..lightmap.lastIndex &&
x - for_x_start + overscan_open in 0..lightmap[0].lastIndex) { x - for_x_start + overscan_open in 0..lightmap[0].lastIndex) {
@@ -82,7 +93,7 @@ object LightmapRenderer {
return null return null
} }
fun setLight(x: Int, y: Int, colour: Color) { private fun setLight(x: Int, y: Int, colour: Color) {
if (y - for_y_start + overscan_open in 0..lightmap.lastIndex && if (y - for_y_start + overscan_open in 0..lightmap.lastIndex &&
x - for_x_start + overscan_open in 0..lightmap[0].lastIndex) { x - for_x_start + overscan_open in 0..lightmap[0].lastIndex) {
@@ -254,9 +265,9 @@ object LightmapRenderer {
var lightLevelThis: Color = Color(0f,0f,0f,1f) var lightLevelThis: Color = Color(0f,0f,0f,1f)
val thisTerrain = Terrarum.ingame!!.world.getTileFromTerrain(x, y) val thisTerrain = Terrarum.ingame!!.world.getTileFromTerrain(x, y)
val thisWall = Terrarum.ingame!!.world.getTileFromWall(x, y) val thisWall = Terrarum.ingame!!.world.getTileFromWall(x, y)
val thisTileLuminosity = BlockCodex[thisTerrain].luminosity.toColor() val thisTileLuminosity = BlockCodex[thisTerrain].luminosity // already been div by four
val thisTileOpacity = BlockCodex[thisTerrain].opacity.toColor() val thisTileOpacity = BlockCodex[thisTerrain].opacity // already been div by four
val sunLight = Terrarum.ingame!!.world.globalLight.toColor() val sunLight = Terrarum.ingame!!.world.globalLight.cpy().mul(DIV_FLOAT, DIV_FLOAT, DIV_FLOAT, 1f)
// MIX TILE // MIX TILE
// open air // open air
@@ -276,7 +287,7 @@ object LightmapRenderer {
for (i in 0..lanternMap.size - 1) { for (i in 0..lanternMap.size - 1) {
val lmap = lanternMap[i] val lmap = lanternMap[i]
if (lmap.posX == x && lmap.posY == y) if (lmap.posX == x && lmap.posY == y)
lightLevelThis = lightLevelThis maxBlend lmap.luminosity.toColor() // maximise to not exceed 1.0 with normal (<= 1.0) light lightLevelThis = lightLevelThis maxBlend lmap.luminosity // maximise to not exceed 1.0 with normal (<= 1.0) light
} }
@@ -288,15 +299,15 @@ object LightmapRenderer {
* sample ambient for eight points and apply attenuation for those * sample ambient for eight points and apply attenuation for those
* maxblend eight values and use it * maxblend eight values and use it
*/ */
/* + */ambientAccumulator = ambientAccumulator maxBlend darkenColoured(getLight(x - 1, y - 1) ?: Color(0f,0f,0f,1f), scaleSqrt2(thisTileOpacity)) /* + */ambientAccumulator = ambientAccumulator maxBlend darkenColoured(getLightInternal(x - 1, y - 1) ?: Color(0f,0f,0f,1f), scaleSqrt2(thisTileOpacity))
/* + */ambientAccumulator = ambientAccumulator maxBlend darkenColoured(getLight(x + 1, y - 1) ?: Color(0f,0f,0f,1f), scaleSqrt2(thisTileOpacity)) /* + */ambientAccumulator = ambientAccumulator maxBlend darkenColoured(getLightInternal(x + 1, y - 1) ?: Color(0f,0f,0f,1f), scaleSqrt2(thisTileOpacity))
/* + */ambientAccumulator = ambientAccumulator maxBlend darkenColoured(getLight(x - 1, y + 1) ?: Color(0f,0f,0f,1f), scaleSqrt2(thisTileOpacity)) /* + */ambientAccumulator = ambientAccumulator maxBlend darkenColoured(getLightInternal(x - 1, y + 1) ?: Color(0f,0f,0f,1f), scaleSqrt2(thisTileOpacity))
/* + */ambientAccumulator = ambientAccumulator maxBlend darkenColoured(getLight(x + 1, y + 1) ?: Color(0f,0f,0f,1f), scaleSqrt2(thisTileOpacity)) /* + */ambientAccumulator = ambientAccumulator maxBlend darkenColoured(getLightInternal(x + 1, y + 1) ?: Color(0f,0f,0f,1f), scaleSqrt2(thisTileOpacity))
/* * */ambientAccumulator = ambientAccumulator maxBlend darkenColoured(getLight(x , y - 1) ?: Color(0f,0f,0f,1f), thisTileOpacity) /* * */ambientAccumulator = ambientAccumulator maxBlend darkenColoured(getLightInternal(x , y - 1) ?: Color(0f,0f,0f,1f), thisTileOpacity)
/* * */ambientAccumulator = ambientAccumulator maxBlend darkenColoured(getLight(x , y + 1) ?: Color(0f,0f,0f,1f), thisTileOpacity) /* * */ambientAccumulator = ambientAccumulator maxBlend darkenColoured(getLightInternal(x , y + 1) ?: Color(0f,0f,0f,1f), thisTileOpacity)
/* * */ambientAccumulator = ambientAccumulator maxBlend darkenColoured(getLight(x - 1, y ) ?: Color(0f,0f,0f,1f), thisTileOpacity) /* * */ambientAccumulator = ambientAccumulator maxBlend darkenColoured(getLightInternal(x - 1, y ) ?: Color(0f,0f,0f,1f), thisTileOpacity)
/* * */ambientAccumulator = ambientAccumulator maxBlend darkenColoured(getLight(x + 1, y ) ?: Color(0f,0f,0f,1f), thisTileOpacity) /* * */ambientAccumulator = ambientAccumulator maxBlend darkenColoured(getLightInternal(x + 1, y ) ?: Color(0f,0f,0f,1f), thisTileOpacity)
return lightLevelThis maxBlend ambientAccumulator return lightLevelThis maxBlend ambientAccumulator
} }
@@ -306,7 +317,7 @@ object LightmapRenderer {
} }
private fun getLightForOpaque(x: Int, y: Int): Color? { // ...so that they wouldn't appear too dark private fun getLightForOpaque(x: Int, y: Int): Color? { // ...so that they wouldn't appear too dark
val l = getLight(x, y) val l = getLightInternal(x, y)
if (l == null) return null if (l == null) return null
if (BlockCodex[world.getTileFromTerrain(x, y)].isSolid) { if (BlockCodex[world.getTileFromTerrain(x, y)].isSolid) {
@@ -396,12 +407,6 @@ object LightmapRenderer {
1f) 1f)
} }
fun scaleColour(data: Int, scale: Float): RGB10 {
return ((data.r() * scale).clampOne() * CHANNEL_MAX).round().shl(20) or
((data.g() * scale).clampOne() * CHANNEL_MAX).round().shl(10) or
((data.b() * scale).clampOne() * CHANNEL_MAX).round()
}
private fun scaleSqrt2(data: Color): Color { private fun scaleSqrt2(data: Color): Color {
return Color( return Color(
data.r * 1.41421356f, data.r * 1.41421356f,
@@ -410,8 +415,6 @@ object LightmapRenderer {
1f) 1f)
} }
private val scaleSqrt2Lookup = IntArray(MUL, { it -> minOf(MUL - 1, (it * 1.41421356).roundInt()) })
/** /**
* Add each channel's RGB value. * Add each channel's RGB value.
* *
@@ -450,13 +453,13 @@ object LightmapRenderer {
* @param brighten (-1.0 - 1.0) negative means darkening * @param brighten (-1.0 - 1.0) negative means darkening
* @return processed colour * @return processed colour
*/ */
fun alterBrightnessUniform(data: RGB10, brighten: Float): RGB10 { fun alterBrightnessUniform(data: Color, brighten: Float): Color {
return Color( return Color(
data.r() + brighten, data.r + brighten,
data.g() + brighten, data.g + brighten,
data.b() + brighten, data.b + brighten,
1f 1f
).toRGB10() )
} }
/** Get each channel from two RGB values, return new RGB that has max value of each channel /** Get each channel from two RGB values, return new RGB that has max value of each channel
@@ -473,17 +476,17 @@ object LightmapRenderer {
} }
inline fun RGB10.rawR() = this.ushr(20) and 1023 /*inline fun RGB10.rawR() = this.ushr(20) and 1023
inline fun RGB10.rawG() = this.ushr(10) and 1023 inline fun RGB10.rawG() = this.ushr(10) and 1023
inline fun RGB10.rawB() = this and 1023 inline fun RGB10.rawB() = this and 1023
/** 0.0 - 1.0 for 0-1023 (0.0 - 0.25 for 0-255) */ /** 0.0 - 1.0 for 0-1023 (0.0 - 0.25 for 0-255) */
inline fun RGB10.r(): Float = this.rawR() / CHANNEL_MAX_FLOAT inline fun RGB10.r(): Float = this.rawR() / CHANNEL_MAX_FLOAT
inline fun RGB10.g(): Float = this.rawG() / CHANNEL_MAX_FLOAT inline fun RGB10.g(): Float = this.rawG() / CHANNEL_MAX_FLOAT
inline fun RGB10.b(): Float = this.rawB() / CHANNEL_MAX_FLOAT inline fun RGB10.b(): Float = this.rawB() / CHANNEL_MAX_FLOAT*/
inline fun constructRGBFromInt(r: Int, g: Int, b: Int): RGB10 { /*inline fun constructRGBFromInt(r: Int, g: Int, b: Int): RGB10 {
//if (r !in 0..CHANNEL_MAX) throw IllegalArgumentException("Red: out of range ($r)") //if (r !in 0..CHANNEL_MAX) throw IllegalArgumentException("Red: out of range ($r)")
//if (g !in 0..CHANNEL_MAX) throw IllegalArgumentException("Green: out of range ($g)") //if (g !in 0..CHANNEL_MAX) throw IllegalArgumentException("Green: out of range ($g)")
//if (b !in 0..CHANNEL_MAX) throw IllegalArgumentException("Blue: out of range ($b)") //if (b !in 0..CHANNEL_MAX) throw IllegalArgumentException("Blue: out of range ($b)")
@@ -491,7 +494,7 @@ object LightmapRenderer {
return r.shl(20) or return r.shl(20) or
g.shl(10) or g.shl(10) or
b b
} }*/
/*inline fun constructRGBFromFloat(r: Float, g: Float, b: Float): RGB10 { /*inline fun constructRGBFromFloat(r: Float, g: Float, b: Float): RGB10 {
//if (r < 0 || r > CHANNEL_MAX_DECIMAL) throw IllegalArgumentException("Red: out of range ($r)") //if (r < 0 || r > CHANNEL_MAX_DECIMAL) throw IllegalArgumentException("Red: out of range ($r)")
@@ -509,9 +512,8 @@ object LightmapRenderer {
fun Float.clampOne() = if (this < 0) 0f else if (this > 1) 1f else this fun Float.clampOne() = if (this < 0) 0f else if (this > 1) 1f else this
fun Float.clampChannel() = if (this > CHANNEL_MAX_DECIMAL) CHANNEL_MAX_DECIMAL else this fun Float.clampChannel() = if (this > CHANNEL_MAX_DECIMAL) CHANNEL_MAX_DECIMAL else this
inline fun getValueFromMap(x: Int, y: Int): Color? = getLight(x, y)
fun getHighestRGB(x: Int, y: Int): Float? { fun getHighestRGB(x: Int, y: Int): Float? {
val value = getLight(x, y) val value = getLightInternal(x, y)
if (value == null) if (value == null)
return null return null
else else
@@ -636,7 +638,7 @@ object LightmapRenderer {
1f 1f
) )
data class Lantern(val posX: Int, val posY: Int, val luminosity: Int) data class Lantern(val posX: Int, val posY: Int, val luminosity: Color)
private fun Color.nonZero() = this.r != 0f || this.g != 0f || this.b != 0f private fun Color.nonZero() = this.r != 0f || this.g != 0f || this.b != 0f
@@ -650,9 +652,9 @@ object LightmapRenderer {
// excluiding overscans; only reckon echo lights // excluiding overscans; only reckon echo lights
for (y in overscan_open..render_height + overscan_open + 1) { for (y in overscan_open..render_height + overscan_open + 1) {
for (x in overscan_open..render_width + overscan_open + 1) { for (x in overscan_open..render_width + overscan_open + 1) {
reds[lightmap[y][x].r.times(MUL).floorInt()] += 1 reds [minOf(CHANNEL_MAX, lightmap[y][x].r.times(MUL).floorInt())] += 1
greens[lightmap[y][x].g.times(MUL).floorInt()] += 1 greens[minOf(CHANNEL_MAX, lightmap[y][x].g.times(MUL).floorInt())] += 1
blues[lightmap[y][x].b.times(MUL).floorInt()] += 1 blues [minOf(CHANNEL_MAX, lightmap[y][x].b.times(MUL).floorInt())] += 1
} }
} }
return Histogram(reds, greens, blues) return Histogram(reds, greens, blues)
@@ -714,8 +716,3 @@ object LightmapRenderer {
return (1f - scale) * startValue + scale * endValue return (1f - scale) * startValue + scale * endValue
} }
} }
fun RGB10.toColor(): Color {
return Color(this.r(), this.g(), this.b(), 1f)
}