From 1e9c04d7c064cd39dc85ba3cf2cbc55cb7f91ce9 Mon Sep 17 00:00:00 2001 From: minjaesong Date: Tue, 11 Jul 2017 13:34:14 +0900 Subject: [PATCH] working world-glow blend --- assets/blendGlow.frag | 25 ++ assets/blendGlow.vert | 14 + assets/modules/basegame/blocks/blocks.csv | 264 +++++++++--------- .../basegame/weathers/WeatherGeneric.json | 1 - .../basegame/weathers/WeatherHellish.json | 8 - .../basegame/weathers/generic_light.tga | 3 - .../basegame/weathers/generic_skybox.tga | 4 +- .../torvald/gdx/backends/lwjgl/audio/Opus.kt | 3 - .../spriteanimation/SpriteAnimation.kt | 10 +- src/net/torvald/terrarum/Ingame.kt | 154 ++++++++-- src/net/torvald/terrarum/OpusDecodeTest.kt | 36 +++ src/net/torvald/terrarum/Terrarum.kt | 34 ++- .../terrarum/blockproperties/BlockCodex.kt | 2 + .../terrarum/blockproperties/BlockProp.kt | 6 +- .../terrarum/blockproperties/BlockPropUtil.kt | 6 +- src/net/torvald/terrarum/gameactors/AVKey.kt | 1 + .../terrarum/gameactors/ActorHumanoid.kt | 3 +- .../terrarum/gameactors/ActorWithPhysics.kt | 1 + .../torvald/terrarum/gameactors/Luminous.kt | 3 +- .../gameactors/PlayerBuilderSigrid.kt | 7 +- .../terrarum/ui/BasicDebugInfoWindow.kt | 6 +- .../terrarum/weather/BaseModularWeather.kt | 3 +- .../torvald/terrarum/weather/WeatherMixer.kt | 23 +- .../terrarum/worlddrawer/LightmapRenderer.kt | 4 +- .../graphics/weathers/generic_light.psd | 4 +- 25 files changed, 391 insertions(+), 234 deletions(-) create mode 100644 assets/blendGlow.vert delete mode 100644 assets/modules/basegame/weathers/WeatherHellish.json delete mode 100644 assets/modules/basegame/weathers/generic_light.tga create mode 100644 src/net/torvald/terrarum/OpusDecodeTest.kt diff --git a/assets/blendGlow.frag b/assets/blendGlow.frag index e69de29bb..17fbd3b01 100644 --- a/assets/blendGlow.frag +++ b/assets/blendGlow.frag @@ -0,0 +1,25 @@ +varying vec4 v_color; +varying vec2 v_texCoords; +uniform sampler2D u_texture; // world texture, has alpha value that is meaningful + +uniform sampler2D tex1; // glow texture, SHOULD contain alpha of all 1.0 + +void main(void) { + vec4 colorTex0 = texture2D(u_texture, v_texCoords); // lightmap (RGB) pre-mixed + vec4 colorTex1 = texture2D(tex1, v_texCoords); // lightmap (A) pre-mixed + + vec4 newColor = vec4(0.0, 0.0, 0.0, colorTex0.a); + + + if (colorTex0.r > colorTex1.r) newColor.r = colorTex0.r; + else newColor.r = colorTex1.r; + + if (colorTex0.g > colorTex1.g) newColor.g = colorTex0.g; + else newColor.g = colorTex1.g; + + if (colorTex0.b > colorTex1.b) newColor.b = colorTex0.b; + else newColor.b = colorTex1.b; + + + gl_FragColor = newColor; +} \ No newline at end of file diff --git a/assets/blendGlow.vert b/assets/blendGlow.vert new file mode 100644 index 000000000..cf5b65ce0 --- /dev/null +++ b/assets/blendGlow.vert @@ -0,0 +1,14 @@ +attribute vec4 a_position; +attribute vec4 a_color; +attribute vec2 a_texCoord0; + +uniform mat4 u_projTrans; // camera.combined + +varying vec4 v_color; +varying vec2 v_texCoords; + +void main() { + v_color = a_color; + v_texCoords = a_texCoord0; + gl_Position = u_projTrans * a_position; +} \ No newline at end of file diff --git a/assets/modules/basegame/blocks/blocks.csv b/assets/modules/basegame/blocks/blocks.csv index d2c425863..38f7bc156 100644 --- a/assets/modules/basegame/blocks/blocks.csv +++ b/assets/modules/basegame/blocks/blocks.csv @@ -1,135 +1,135 @@ - "id";"drop";"name" ; "shdr"; "shdg"; "shdb";"strength";"dsty";"mate";"fluid";"solid";"wall"; "lumr"; "lumg"; "lumb";"fall";"dlfn";"vscs";"fv";"friction" - "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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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";"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" ;"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" ;"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";"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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";"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" ;"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" ;"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";"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"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" ;"4.0000";"4.0000";"4.0000"; "-1";"2600";"null"; "0"; "0"; "1";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "id";"drop";"name" ; "shdr"; "shdg"; "shdb"; "shduv";"strength";"dsty";"mate";"fluid";"solid";"wall"; "lumr"; "lumg"; "lumb";"lumuv";"fall";"dlfn";"vscs";"fv";"friction" + "0"; "0";"BLOCK_AIR" ;"0.0312";"0.0312";"0.0312";"0.0312"; "1"; "1";"null"; "0"; "0"; "1";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"4" + "16"; "17";"BLOCK_STONE" ;"0.1252";"0.1252";"0.1252";"0.1252"; "48";"2400";"rock"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "17"; "17";"BLOCK_STONE_QUARRIED" ;"0.1252";"0.1252";"0.1252";"0.1252"; "48";"2400";"rock"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "18"; "18";"BLOCK_STONE_TILE_WHITE" ;"0.1252";"0.1252";"0.1252";"0.1252"; "48";"2400";"rock"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "19"; "19";"BLOCK_STONE_BRICKS" ;"0.1252";"0.1252";"0.1252";"0.1252"; "48";"2400";"rock"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "32"; "32";"BLOCK_DIRT" ;"0.1252";"0.1252";"0.1252";"0.1252"; "24";"1400";"dirt"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "33"; "32";"BLOCK_GRASS" ;"0.1252";"0.1252";"0.1252";"0.1252"; "24";"1400";"grss"; "0"; "1"; "0";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "34"; "34";"BLOCK_GRASSWALL" ;"0.1252";"0.1252";"0.1252";"0.1252"; "24";"1400";"grss"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "35"; "35";"BLOCK_FOLIAGE_GREEN" ;"0.1252";"0.1252";"0.1252";"0.1252"; "24";"1400";"grss"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "36"; "36";"BLOCK_FOLIAGE_LIME" ;"0.1252";"0.1252";"0.1252";"0.1252"; "24";"1400";"grss"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "37"; "37";"BLOCK_FOLIAGE_GOLD" ;"0.1252";"0.1252";"0.1252";"0.1252"; "24";"1400";"grss"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "38"; "38";"BLOCK_FOLIAGE_RED" ;"0.1252";"0.1252";"0.1252";"0.1252"; "24";"1400";"grss"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "39"; "39";"BLOCK_FOLIAGE_ICEBLUE" ;"0.1252";"0.1252";"0.1252";"0.1252"; "24";"1400";"grss"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "40"; "40";"BLOCK_FOLIAGE_PURPLE" ;"0.1252";"0.1252";"0.1252";"0.1252"; "24";"1400";"grss"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "48"; "48";"BLOCK_PLANK_NORMAL" ;"0.1252";"0.1252";"0.1252";"0.1252"; "16"; "740";"wood"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "49"; "49";"BLOCK_PLANK_EBONY" ;"0.1252";"0.1252";"0.1252";"0.1252"; "19";"1200";"wood"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "50"; "50";"BLOCK_PLANK_BIRCH" ;"0.1252";"0.1252";"0.1252";"0.1252"; "15"; "670";"wood"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "51"; "51";"BLOCK_PLANK_BLOODROSE" ;"0.1252";"0.1252";"0.1252";"0.1252"; "17"; "900";"wood"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "64"; "64";"BLOCK_TRUNK_NORMAL" ;"0.1252";"0.1252";"0.1252";"0.1252"; "16"; "740";"wood"; "0"; "1"; "0";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "65"; "65";"BLOCK_TRUNK_EBONY" ;"0.1252";"0.1252";"0.1252";"0.1252"; "19";"1200";"wood"; "0"; "1"; "0";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "66"; "66";"BLOCK_TRUNK_BIRCH" ;"0.1252";"0.1252";"0.1252";"0.1252"; "15"; "670";"wood"; "0"; "1"; "0";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "67"; "67";"BLOCK_TRUNK_BLOODROSE" ;"0.1252";"0.1252";"0.1252";"0.1252"; "17"; "900";"wood"; "0"; "1"; "0";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "80"; "80";"BLOCK_SAND" ;"0.1252";"0.1252";"0.1252";"0.1252"; "24";"2400";"sand"; "0"; "1"; "0";"0.0000";"0.0000";"0.0000";"0.0000"; "1"; "0"; "N/A"; "0";"16" + "81"; "81";"BLOCK_SAND_WHITE" ;"0.1252";"0.1252";"0.1252";"0.1252"; "24";"2400";"sand"; "0"; "1"; "0";"0.0000";"0.0000";"0.0000";"0.0000"; "1"; "0"; "N/A"; "0";"16" + "82"; "82";"BLOCK_SAND_RED" ;"0.1252";"0.1252";"0.1252";"0.1252"; "24";"2400";"sand"; "0"; "1"; "0";"0.0000";"0.0000";"0.0000";"0.0000"; "1"; "0"; "N/A"; "0";"16" + "83"; "83";"BLOCK_SAND_DESERT" ;"0.1252";"0.1252";"0.1252";"0.1252"; "24";"2400";"sand"; "0"; "1"; "0";"0.0000";"0.0000";"0.0000";"0.0000"; "1"; "0"; "N/A"; "0";"16" + "84"; "84";"BLOCK_SAND_BLACK" ;"0.1252";"0.1252";"0.1252";"0.1252"; "24";"2400";"sand"; "0"; "1"; "0";"0.0000";"0.0000";"0.0000";"0.0000"; "1"; "0"; "N/A"; "0";"16" + "85"; "85";"BLOCK_SAND_GREEN" ;"0.1252";"0.1252";"0.1252";"0.1252"; "24";"2400";"sand"; "0"; "1"; "0";"0.0000";"0.0000";"0.0000";"0.0000"; "1"; "0"; "N/A"; "0";"16" + "96"; "96";"BLOCK_GRAVEL" ;"0.1252";"0.1252";"0.1252";"0.1252"; "24";"2400";"grvl"; "0"; "1"; "0";"0.0000";"0.0000";"0.0000";"0.0000"; "1"; "0"; "N/A"; "0";"16" + "97"; "97";"BLOCK_GRAVEL_GREY" ;"0.1252";"0.1252";"0.1252";"0.1252"; "24";"2400";"grvl"; "0"; "1"; "0";"0.0000";"0.0000";"0.0000";"0.0000"; "1"; "0"; "N/A"; "0";"16" + "112"; "112";"BLOCK_ORE_MALACHITE" ;"0.1252";"0.1252";"0.1252";"0.1252"; "48";"2400";"rock"; "0"; "1"; "0";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "113"; "113";"BLOCK_ORE_HEMATITE" ;"0.1252";"0.1252";"0.1252";"0.1252"; "48";"2400";"rock"; "0"; "1"; "0";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "114"; "114";"BLOCK_ORE_NATURAL_GOLD" ;"0.1252";"0.1252";"0.1252";"0.1252"; "48";"2400";"rock"; "0"; "1"; "0";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "115"; "115";"BLOCK_ORE_NATURAL_SILVER" ;"0.1252";"0.1252";"0.1252";"0.1252"; "48";"2400";"rock"; "0"; "1"; "0";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "116"; "116";"BLOCK_ORE_RUTILE" ;"0.1252";"0.1252";"0.1252";"0.1252"; "48";"2400";"rock"; "0"; "1"; "0";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "117"; "117";"BLOCK_ORE_AURICHALCUMITE" ;"0.1252";"0.1252";"0.1252";"0.1252"; "48";"2400";"rock"; "0"; "1"; "0";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "128"; "128";"BLOCK_GEM_RUBY" ;"0.1252";"0.1252";"0.1252";"0.1252"; "48";"2400";"rock"; "0"; "1"; "0";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "129"; "129";"BLOCK_GEM_EMERALD" ;"0.1252";"0.1252";"0.1252";"0.1252"; "48";"2400";"rock"; "0"; "1"; "0";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "130"; "130";"BLOCK_GEM_SAPPHIRE" ;"0.1252";"0.1252";"0.1252";"0.1252"; "48";"2400";"rock"; "0"; "1"; "0";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "131"; "131";"BLOCK_GEM_TOPAZ" ;"0.1252";"0.1252";"0.1252";"0.1252"; "48";"2400";"rock"; "0"; "1"; "0";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "132"; "132";"BLOCK_GEM_DIAMOND" ;"0.1252";"0.1252";"0.1252";"0.1252"; "48";"2400";"rock"; "0"; "1"; "0";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "133"; "133";"BLOCK_GEM_AMETHYST" ;"0.1252";"0.1252";"0.1252";"0.1252"; "48";"2400";"rock"; "0"; "1"; "0";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "144"; "144";"BLOCK_SNOW" ;"0.1252";"0.1252";"0.1252";"0.1252"; "24"; "500";"snow"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "145"; "0";"BLOCK_ICE_FRAGILE" ;"0.0508";"0.0508";"0.0508";"0.0508"; "5"; "930";"icei"; "0"; "1"; "0";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0"; "4" + "146"; "146";"BLOCK_ICE_NATURAL" ;"0.1016";"0.1016";"0.1016";"0.1016"; "35"; "930";"icei"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0"; "4" + "147"; "147";"BLOCK_ICE_CLEAR_MAGICAL" ;"0.1252";"0.1252";"0.1252";"0.1252"; "48";"3720";"icex"; "0"; "1"; "1";"0.0744";"0.1252";"0.2268";"0.0000"; "0"; "0"; "N/A"; "0"; "4" + "148"; "148";"BLOCK_GLASS_CRUDE" ;"0.0120";"0.0040";"0.0120";"0.0080"; "5";"2500";"glas"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "149"; "149";"BLOCK_GLASS_CLEAN" ;"0.0040";"0.0040";"0.0040";"0.0020"; "5";"2203";"glas"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "160"; "160";"BLOCK_PLATFORM_STONE" ;"0.0312";"0.0312";"0.0312";"0.0312"; "5"; "N/A";"rock"; "0"; "0"; "0";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "161"; "161";"BLOCK_PLATFORM_WOODEN" ;"0.0312";"0.0312";"0.0312";"0.0312"; "5"; "N/A";"wood"; "0"; "0"; "0";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "162"; "162";"BLOCK_PLATFORM_EBONY" ;"0.0312";"0.0312";"0.0312";"0.0312"; "5"; "N/A";"wood"; "0"; "0"; "0";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "163"; "163";"BLOCK_PLATFORM_BIRCH" ;"0.0312";"0.0312";"0.0312";"0.0312"; "5"; "N/A";"wood"; "0"; "0"; "0";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "164"; "164";"BLOCK_PLATFORM_BLOODROSE" ;"0.0312";"0.0312";"0.0312";"0.0312"; "5"; "N/A";"wood"; "0"; "0"; "0";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "176"; "176";"BLOCK_TORCH" ;"0.0312";"0.0312";"0.0312";"0.0312"; "1"; "N/A";"fxtr"; "0"; "0"; "0";"1.0000";"0.6372";"0.0000";"0.0000"; "0"; "1"; "N/A"; "0";"16" + "177"; "177";"BLOCK_TORCH_FROST" ;"0.0312";"0.0312";"0.0312";"0.0312"; "1"; "N/A";"fxtr"; "0"; "0"; "0";"0.3048";"0.4848";"1.0000";"0.0000"; "0"; "1"; "N/A"; "0";"16" + "192"; "176";"BLOCK_TORCH" ;"0.0312";"0.0312";"0.0312";"0.0312"; "1"; "N/A";"fxtr"; "0"; "0"; "0";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "193"; "177";"BLOCK_TORCH_FROST" ;"0.0312";"0.0312";"0.0312";"0.0312"; "1"; "N/A";"fxtr"; "0"; "0"; "0";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "208"; "208";"BLOCK_ILLUMINATOR_WHITE" ;"0.0312";"0.0312";"0.0312";"0.0312"; "1"; "N/A";"glas"; "0"; "1"; "1";"0.8916";"0.9304";"0.9148";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "209"; "209";"BLOCK_ILLUMINATOR_YELLOW" ;"0.0312";"0.0312";"0.0312";"0.0312"; "1"; "N/A";"glas"; "0"; "1"; "1";"1.0000";"0.8408";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "210"; "210";"BLOCK_ILLUMINATOR_ORANGE" ;"0.0312";"0.0312";"0.0312";"0.0312"; "1"; "N/A";"glas"; "0"; "1"; "1";"1.0000";"0.6100";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "211"; "211";"BLOCK_ILLUMINATOR_RED" ;"0.0312";"0.0312";"0.0312";"0.0312"; "1"; "N/A";"glas"; "0"; "1"; "1";"0.9188";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "212"; "212";"BLOCK_ILLUMINATOR_FUCHSIA" ;"0.0312";"0.0312";"0.0312";"0.0312"; "1"; "N/A";"glas"; "0"; "1"; "1";"0.9188";"0.0000";"0.7156";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "213"; "213";"BLOCK_ILLUMINATOR_PURPLE" ;"0.0312";"0.0312";"0.0312";"0.0312"; "1"; "N/A";"glas"; "0"; "1"; "1";"0.7156";"0.0000";"0.9188";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "214"; "214";"BLOCK_ILLUMINATOR_BLUE" ;"0.0312";"0.0312";"0.0312";"0.0312"; "1"; "N/A";"glas"; "0"; "1"; "1";"0.0000";"0.1996";"0.9188";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "215"; "215";"BLOCK_ILLUMINATOR_CYAN" ;"0.0312";"0.0312";"0.0312";"0.0312"; "1"; "N/A";"glas"; "0"; "1"; "1";"0.0000";"0.8368";"0.9188";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "216"; "216";"BLOCK_ILLUMINATOR_GREEN" ;"0.0312";"0.0312";"0.0312";"0.0312"; "1"; "N/A";"glas"; "0"; "1"; "1";"0.2112";"1.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "217"; "217";"BLOCK_ILLUMINATOR_GREEN_DARK";"0.0312";"0.0312";"0.0312";"0.0312"; "1"; "N/A";"glas"; "0"; "1"; "1";"0.1252";"0.4068";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "218"; "218";"BLOCK_ILLUMINATOR_BROWN" ;"0.0312";"0.0312";"0.0312";"0.0312"; "1"; "N/A";"glas"; "0"; "1"; "1";"0.3324";"0.1252";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "219"; "219";"BLOCK_ILLUMINATOR_TAN" ;"0.0312";"0.0312";"0.0312";"0.0312"; "1"; "N/A";"glas"; "0"; "1"; "1";"0.5864";"0.4068";"0.2032";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "220"; "220";"BLOCK_ILLUMINATOR_GREY_LIGHT";"0.0312";"0.0312";"0.0312";"0.0312"; "1"; "N/A";"glas"; "0"; "1"; "1";"0.7392";"0.7392";"0.7392";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "221"; "221";"BLOCK_ILLUMINATOR_GREY_MED" ;"0.0312";"0.0312";"0.0312";"0.0312"; "1"; "N/A";"glas"; "0"; "1"; "1";"0.4576";"0.4576";"0.4576";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "222"; "222";"BLOCK_ILLUMINATOR_GREY_DARK" ;"0.0312";"0.0312";"0.0312";"0.0312"; "1"; "N/A";"glas"; "0"; "1"; "1";"0.2540";"0.2540";"0.2540";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "223"; "223";"BLOCK_ILLUMINATOR_BLACK" ;"0.0312";"0.0312";"0.0312";"0.0312"; "1"; "N/A";"glas"; "0"; "1"; "1";"0.2140";"0.0000";"0.4932";"3.7499"; "0"; "0"; "N/A"; "0";"16" + "224"; "208";"BLOCK_ILLUMINATOR_WHITE" ;"0.1252";"0.1252";"0.1252";"0.1252"; "1"; "N/A";"glas"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "225"; "209";"BLOCK_ILLUMINATOR_YELLOW" ;"0.1252";"0.1252";"0.1252";"0.1252"; "1"; "N/A";"glas"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "226"; "210";"BLOCK_ILLUMINATOR_ORANGE" ;"0.1252";"0.1252";"0.1252";"0.1252"; "1"; "N/A";"glas"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "227"; "211";"BLOCK_ILLUMINATOR_RED" ;"0.1252";"0.1252";"0.1252";"0.1252"; "1"; "N/A";"glas"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "228"; "212";"BLOCK_ILLUMINATOR_FUCHSIA" ;"0.1252";"0.1252";"0.1252";"0.1252"; "1"; "N/A";"glas"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "229"; "213";"BLOCK_ILLUMINATOR_PURPLE" ;"0.1252";"0.1252";"0.1252";"0.1252"; "1"; "N/A";"glas"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "230"; "214";"BLOCK_ILLUMINATOR_BLUE" ;"0.1252";"0.1252";"0.1252";"0.1252"; "1"; "N/A";"glas"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "231"; "215";"BLOCK_ILLUMINATOR_CYAN" ;"0.1252";"0.1252";"0.1252";"0.1252"; "1"; "N/A";"glas"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "232"; "216";"BLOCK_ILLUMINATOR_GREEN" ;"0.1252";"0.1252";"0.1252";"0.1252"; "1"; "N/A";"glas"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "233"; "217";"BLOCK_ILLUMINATOR_GREEN_DARK";"0.1252";"0.1252";"0.1252";"0.1252"; "1"; "N/A";"glas"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "234"; "218";"BLOCK_ILLUMINATOR_BROWN" ;"0.1252";"0.1252";"0.1252";"0.1252"; "1"; "N/A";"glas"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "235"; "219";"BLOCK_ILLUMINATOR_TAN" ;"0.1252";"0.1252";"0.1252";"0.1252"; "1"; "N/A";"glas"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "236"; "220";"BLOCK_ILLUMINATOR_GREY_LIGHT";"0.1252";"0.1252";"0.1252";"0.1252"; "1"; "N/A";"glas"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "237"; "221";"BLOCK_ILLUMINATOR_GREY_MED" ;"0.1252";"0.1252";"0.1252";"0.1252"; "1"; "N/A";"glas"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "238"; "222";"BLOCK_ILLUMINATOR_GREY_DARK" ;"0.1252";"0.1252";"0.1252";"0.1252"; "1"; "N/A";"glas"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "239"; "223";"BLOCK_ILLUMINATOR_BLACK" ;"0.1252";"0.1252";"0.1252";"0.1252"; "1"; "N/A";"glas"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "240"; "240";"BLOCK_SANDSTONE" ;"0.1252";"0.1252";"0.1252";"0.1252"; "48";"1900";"rock"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "241"; "241";"BLOCK_SANDSTONE_WHITE" ;"0.1252";"0.1252";"0.1252";"0.1252"; "48";"1900";"rock"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "242"; "242";"BLOCK_SANDSTONE_RED" ;"0.1252";"0.1252";"0.1252";"0.1252"; "48";"1900";"rock"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "243"; "243";"BLOCK_SANDSTONE_DESERT" ;"0.1252";"0.1252";"0.1252";"0.1252"; "48";"1900";"rock"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "244"; "244";"BLOCK_SANDSTONE_BLACK" ;"0.1252";"0.1252";"0.1252";"0.1252"; "48";"1900";"rock"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "245"; "245";"BLOCK_SANDSTONE_GREEN" ;"0.1252";"0.1252";"0.1252";"0.1252"; "48";"1900";"rock"; "0"; "1"; "1";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "256"; "256";"BLOCK_LANTERN_IRON_REGULAR" ;"0.0312";"0.0312";"0.0312";"0.0312"; "1"; "N/A";"fxtr"; "0"; "0"; "0";"1.0000";"0.6372";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16" + "257"; "257";"BLOCK_SUNSTONE" ;"0.1252";"0.1252";"0.1252";"0.1252"; "1"; "N/A";"rock"; "0"; "1"; "0";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "2"; "N/A"; "0";"16" + "258"; "258";"BLOCK_DAYLIGHT_CAPACITOR" ;"0.1252";"0.1252";"0.1252";"0.1252"; "1"; "N/A";"glas"; "0"; "1"; "0";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "3"; "N/A"; "0";"16" +"4064"; "0";"BLOCK_LAVA" ;"0.9696";"0.9696";"0.9696";"0.9696"; "100";"2600";"rock"; "1"; "0"; "0";"0.7664";"0.2032";"0.0000";"0.0000"; "0"; "0"; "32"; "0";"16" +"4065"; "0";"BLOCK_LAVA" ;"0.9696";"0.9696";"0.9696";"0.9696"; "100";"2600";"rock"; "1"; "0"; "0";"0.7664";"0.2032";"0.0000";"0.0000"; "0"; "0"; "32"; "0";"16" +"4066"; "0";"BLOCK_LAVA" ;"0.9696";"0.9696";"0.9696";"0.9696"; "100";"2600";"rock"; "1"; "0"; "0";"0.7664";"0.2032";"0.0000";"0.0000"; "0"; "0"; "32"; "0";"16" +"4067"; "0";"BLOCK_LAVA" ;"0.9696";"0.9696";"0.9696";"0.9696"; "100";"2600";"rock"; "1"; "0"; "0";"0.7664";"0.2032";"0.0000";"0.0000"; "0"; "0"; "32"; "0";"16" +"4068"; "0";"BLOCK_LAVA" ;"0.9696";"0.9696";"0.9696";"0.9696"; "100";"2600";"rock"; "1"; "0"; "0";"0.7664";"0.2032";"0.0000";"0.0000"; "0"; "0"; "32"; "0";"16" +"4069"; "0";"BLOCK_LAVA" ;"0.9696";"0.9696";"0.9696";"0.9696"; "100";"2600";"rock"; "1"; "0"; "0";"0.7664";"0.2032";"0.0000";"0.0000"; "0"; "0"; "32"; "0";"16" +"4070"; "0";"BLOCK_LAVA" ;"0.9696";"0.9696";"0.9696";"0.9696"; "100";"2600";"rock"; "1"; "0"; "0";"0.7664";"0.2032";"0.0000";"0.0000"; "0"; "0"; "32"; "0";"16" +"4071"; "0";"BLOCK_LAVA" ;"0.9696";"0.9696";"0.9696";"0.9696"; "100";"2600";"rock"; "1"; "0"; "0";"0.7664";"0.2032";"0.0000";"0.0000"; "0"; "0"; "32"; "0";"16" +"4072"; "0";"BLOCK_LAVA" ;"0.9696";"0.9696";"0.9696";"0.9696"; "100";"2600";"rock"; "1"; "0"; "0";"0.7664";"0.2032";"0.0000";"0.0000"; "0"; "0"; "32"; "0";"16" +"4073"; "0";"BLOCK_LAVA" ;"0.9696";"0.9696";"0.9696";"0.9696"; "100";"2600";"rock"; "1"; "0"; "0";"0.7664";"0.2032";"0.0000";"0.0000"; "0"; "0"; "32"; "0";"16" +"4074"; "0";"BLOCK_LAVA" ;"0.9696";"0.9696";"0.9696";"0.9696"; "100";"2600";"rock"; "1"; "0"; "0";"0.7664";"0.2032";"0.0000";"0.0000"; "0"; "0"; "32"; "0";"16" +"4075"; "0";"BLOCK_LAVA" ;"0.9696";"0.9696";"0.9696";"0.9696"; "100";"2600";"rock"; "1"; "0"; "0";"0.7664";"0.2032";"0.0000";"0.0000"; "0"; "0"; "32"; "0";"16" +"4076"; "0";"BLOCK_LAVA" ;"0.9696";"0.9696";"0.9696";"0.9696"; "100";"2600";"rock"; "1"; "0"; "0";"0.7664";"0.2032";"0.0000";"0.0000"; "0"; "0"; "32"; "0";"16" +"4077"; "0";"BLOCK_LAVA" ;"0.9696";"0.9696";"0.9696";"0.9696"; "100";"2600";"rock"; "1"; "0"; "0";"0.7664";"0.2032";"0.0000";"0.0000"; "0"; "0"; "32"; "0";"16" +"4078"; "0";"BLOCK_LAVA" ;"0.9696";"0.9696";"0.9696";"0.9696"; "100";"2600";"rock"; "1"; "0"; "0";"0.7664";"0.2032";"0.0000";"0.0000"; "0"; "0"; "32"; "0";"16" +"4079"; "0";"BLOCK_LAVA" ;"0.9696";"0.9696";"0.9696";"0.9696"; "100";"2600";"rock"; "1"; "0"; "0";"0.7664";"0.2032";"0.0000";"0.0000"; "0"; "0"; "32"; "0";"16" +"4080"; "0";"BLOCK_WATER" ;"0.1016";"0.0744";"0.0508";"0.0508"; "100";"1000";"watr"; "1"; "0"; "0";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "16"; "0";"16" +"4081"; "0";"BLOCK_WATER" ;"0.1016";"0.0744";"0.0508";"0.0508"; "100";"1000";"watr"; "1"; "0"; "0";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "16"; "0";"16" +"4082"; "0";"BLOCK_WATER" ;"0.1016";"0.0744";"0.0508";"0.0508"; "100";"1000";"watr"; "1"; "0"; "0";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "16"; "0";"16" +"4083"; "0";"BLOCK_WATER" ;"0.1016";"0.0744";"0.0508";"0.0508"; "100";"1000";"watr"; "1"; "0"; "0";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "16"; "0";"16" +"4084"; "0";"BLOCK_WATER" ;"0.1016";"0.0744";"0.0508";"0.0508"; "100";"1000";"watr"; "1"; "0"; "0";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "16"; "0";"16" +"4085"; "0";"BLOCK_WATER" ;"0.1016";"0.0744";"0.0508";"0.0508"; "100";"1000";"watr"; "1"; "0"; "0";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "16"; "0";"16" +"4086"; "0";"BLOCK_WATER" ;"0.1016";"0.0744";"0.0508";"0.0508"; "100";"1000";"watr"; "1"; "0"; "0";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "16"; "0";"16" +"4087"; "0";"BLOCK_WATER" ;"0.1016";"0.0744";"0.0508";"0.0508"; "100";"1000";"watr"; "1"; "0"; "0";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "16"; "0";"16" +"4088"; "0";"BLOCK_WATER" ;"0.1016";"0.0744";"0.0508";"0.0508"; "100";"1000";"watr"; "1"; "0"; "0";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "16"; "0";"16" +"4089"; "0";"BLOCK_WATER" ;"0.1016";"0.0744";"0.0508";"0.0508"; "100";"1000";"watr"; "1"; "0"; "0";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "16"; "0";"16" +"4090"; "0";"BLOCK_WATER" ;"0.1016";"0.0744";"0.0508";"0.0508"; "100";"1000";"watr"; "1"; "0"; "0";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "16"; "0";"16" +"4091"; "0";"BLOCK_WATER" ;"0.1016";"0.0744";"0.0508";"0.0508"; "100";"1000";"watr"; "1"; "0"; "0";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "16"; "0";"16" +"4092"; "0";"BLOCK_WATER" ;"0.1016";"0.0744";"0.0508";"0.0508"; "100";"1000";"watr"; "1"; "0"; "0";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "16"; "0";"16" +"4093"; "0";"BLOCK_WATER" ;"0.1016";"0.0744";"0.0508";"0.0508"; "100";"1000";"watr"; "1"; "0"; "0";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "16"; "0";"16" +"4094"; "0";"BLOCK_WATER" ;"0.1016";"0.0744";"0.0508";"0.0508"; "100";"1000";"watr"; "1"; "0"; "0";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "16"; "0";"16" +"4095"; "0";"BLOCK_WATER" ;"0.1016";"0.0744";"0.0508";"0.0508"; "100";"1000";"watr"; "1"; "0"; "0";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "16"; "0";"16" + "-1"; "0";"BLOCK_NULL" ;"4.0000";"4.0000";"4.0000";"4.0000"; "-1";"2600";"null"; "0"; "0"; "1";"0.0000";"0.0000";"0.0000";"0.0000"; "0"; "0"; "N/A"; "0";"16" ## Notes ## diff --git a/assets/modules/basegame/weathers/WeatherGeneric.json b/assets/modules/basegame/weathers/WeatherGeneric.json index b3d1201cc..4342afb35 100644 --- a/assets/modules/basegame/weathers/WeatherGeneric.json +++ b/assets/modules/basegame/weathers/WeatherGeneric.json @@ -1,5 +1,4 @@ { - "globalLight": "generic_light.tga", "skyboxGradColourMap": "generic_skybox.tga", "classification": "generic", "extraImages": [ diff --git a/assets/modules/basegame/weathers/WeatherHellish.json b/assets/modules/basegame/weathers/WeatherHellish.json deleted file mode 100644 index 82d7fc44b..000000000 --- a/assets/modules/basegame/weathers/WeatherHellish.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "globalLight": 13120792, - "skyboxGradColourMap": 13120792, - "classification": "hellish", - "extraImages": [ - - ] -} \ No newline at end of file diff --git a/assets/modules/basegame/weathers/generic_light.tga b/assets/modules/basegame/weathers/generic_light.tga deleted file mode 100644 index 49b27272d..000000000 --- a/assets/modules/basegame/weathers/generic_light.tga +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5c9a93c54d74a447930dab6647bc8a1ede7ff6737441cd1c1d93bc0be57bff51 -size 836 diff --git a/assets/modules/basegame/weathers/generic_skybox.tga b/assets/modules/basegame/weathers/generic_skybox.tga index a6f8f0a29..914b2b196 100644 --- a/assets/modules/basegame/weathers/generic_skybox.tga +++ b/assets/modules/basegame/weathers/generic_skybox.tga @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8cf091ec7a8d0693add04cc0dafb0eb3e9f8ad9f21e6036ccc822a2635bdd0ba -size 2420 +oid sha256:8b2b2365c5b1d3182e2eb76d08f5929b44c16b1198e13a933bb265aae14f207e +size 3212 diff --git a/src/net/torvald/gdx/backends/lwjgl/audio/Opus.kt b/src/net/torvald/gdx/backends/lwjgl/audio/Opus.kt index 27cd390d9..c4befa8c3 100644 --- a/src/net/torvald/gdx/backends/lwjgl/audio/Opus.kt +++ b/src/net/torvald/gdx/backends/lwjgl/audio/Opus.kt @@ -12,6 +12,3 @@ import java.io.ByteArrayOutputStream * Created by minjaesong on 2017-06-26. */ -class Opus { - -} diff --git a/src/net/torvald/spriteanimation/SpriteAnimation.kt b/src/net/torvald/spriteanimation/SpriteAnimation.kt index 8c4af5477..68f3d2ab2 100644 --- a/src/net/torvald/spriteanimation/SpriteAnimation.kt +++ b/src/net/torvald/spriteanimation/SpriteAnimation.kt @@ -77,7 +77,7 @@ class SpriteAnimation(val parentActor: ActorWithPhysics) { /** * Render to specific coordinates. Will assume bottom-center point as image position. - * Will round to integer. + * Will floor to integer. * @param g * * * @param posX bottom-center point @@ -97,7 +97,7 @@ class SpriteAnimation(val parentActor: ActorWithPhysics) { if (flipHorizontal && flipVertical) { batch.draw(region, - Math.round(posX).toFloat() + (2f * parentActor.hitboxTranslateX * parentActor.scale.toFloat() + parentActor.hitbox.width.toFloat()), + FastMath.floor(posX).toFloat() + (2f * parentActor.hitboxTranslateX * parentActor.scale.toFloat() + parentActor.hitbox.width.toFloat()), FastMath.floor(posY).toFloat() + (2f * parentActor.hitboxTranslateY * parentActor.scale.toFloat() + parentActor.hitbox.height.toFloat()), -FastMath.floor(cellWidth * scale).toFloat(), -FastMath.floor(cellHeight * scale).toFloat() @@ -105,7 +105,7 @@ class SpriteAnimation(val parentActor: ActorWithPhysics) { } else if (flipHorizontal) { batch.draw(region, - Math.round(posX).toFloat() + (2f * parentActor.hitboxTranslateX * parentActor.scale.toFloat() + parentActor.hitbox.width.toFloat()), + FastMath.floor(posX).toFloat() + (2f * parentActor.hitboxTranslateX * parentActor.scale.toFloat() + parentActor.hitbox.width.toFloat()), FastMath.floor(posY).toFloat(), -FastMath.floor(cellWidth * scale).toFloat(), FastMath.floor(cellHeight * scale).toFloat() @@ -113,7 +113,7 @@ class SpriteAnimation(val parentActor: ActorWithPhysics) { } else if (flipVertical) { batch.draw(region, - Math.round(posX).toFloat(), + FastMath.floor(posX).toFloat(), FastMath.floor(posY).toFloat() + (2f * parentActor.hitboxTranslateY * parentActor.scale.toFloat() + parentActor.hitbox.height.toFloat()), FastMath.floor(cellWidth * scale).toFloat(), -FastMath.floor(cellHeight * scale).toFloat() @@ -121,7 +121,7 @@ class SpriteAnimation(val parentActor: ActorWithPhysics) { } else { batch.draw(region, - Math.round(posX).toFloat(), + FastMath.floor(posX).toFloat(), FastMath.floor(posY).toFloat(), FastMath.floor(cellWidth * scale).toFloat(), FastMath.floor(cellHeight * scale).toFloat() diff --git a/src/net/torvald/terrarum/Ingame.kt b/src/net/torvald/terrarum/Ingame.kt index 5ffdc2564..75a2e085d 100644 --- a/src/net/torvald/terrarum/Ingame.kt +++ b/src/net/torvald/terrarum/Ingame.kt @@ -80,10 +80,11 @@ class Ingame(val batch: SpriteBatch) : Screen { private val worldFBOformat = if (Terrarum.environment == RunningEnvironment.MOBILE) Pixmap.Format.RGBA4444 else Pixmap.Format.RGBA8888 private val lightFBOformat = Pixmap.Format.RGB888 - private val lightUvFBOformat = Pixmap.Format.Intensity + private val lightUvFBOformat = Pixmap.Format.RGB888 var worldDrawFrameBuffer = FrameBuffer(worldFBOformat, Terrarum.WIDTH, Terrarum.HEIGHT, true) var worldGlowFrameBuffer = FrameBuffer(worldFBOformat, Terrarum.WIDTH, Terrarum.HEIGHT, true) + var worldBlendFrameBuffer = FrameBuffer(worldFBOformat, Terrarum.WIDTH, Terrarum.HEIGHT, true) // RGB elements of Lightmap for Color Vec4(R, G, B, 1.0) 24-bit var lightmapFboA = FrameBuffer(lightFBOformat, Terrarum.WIDTH.div(lightmapDownsample.toInt()), Terrarum.HEIGHT.div(lightmapDownsample.toInt()), true) var lightmapFboB = FrameBuffer(lightFBOformat, Terrarum.WIDTH.div(lightmapDownsample.toInt()), Terrarum.HEIGHT.div(lightmapDownsample.toInt()), true) @@ -151,6 +152,23 @@ class Ingame(val batch: SpriteBatch) : Screen { var camera = OrthographicCamera(Terrarum.WIDTH.toFloat(), Terrarum.HEIGHT.toFloat()) + var fullscreenQuad = Mesh( + true, 4, 6, + VertexAttribute.Position(), + VertexAttribute.ColorUnpacked(), + VertexAttribute.TexCoords(0) + ) + + init { + fullscreenQuad.setVertices(floatArrayOf( + 0f, 0f, 0f, 1f, 1f, 1f, 1f, 0f, 1f, + Terrarum.WIDTH.toFloat(), 0f, 0f, 1f, 1f, 1f, 1f, 1f, 1f, + Terrarum.WIDTH.toFloat(), Terrarum.HEIGHT.toFloat(), 0f, 1f, 1f, 1f, 1f, 1f, 0f, + 0f, Terrarum.HEIGHT.toFloat(), 0f, 1f, 1f, 1f, 1f, 0f, 0f + )) + fullscreenQuad.setIndices(shortArrayOf(0, 1, 2, 2, 3, 0)) + } + // invert Y fun initViewPort(width: Int, height: Int) { //val width = if (width % 1 == 1) width + 1 else width @@ -478,7 +496,7 @@ class Ingame(val batch: SpriteBatch) : Screen { Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT) } worldGlowFrameBuffer.inAction(null, null) { - Gdx.gl.glClearColor(0f,0f,0f,0f) + Gdx.gl.glClearColor(0f,0f,0f,1f) Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT) } @@ -546,6 +564,7 @@ class Ingame(val batch: SpriteBatch) : Screen { 0f, 0f, lightTex.width * lightmapDownsample, lightTex.height * lightmapDownsample ) + } @@ -557,6 +576,7 @@ class Ingame(val batch: SpriteBatch) : Screen { camera.position.set(WorldCamera.gdxCamX, WorldCamera.gdxCamY, 0f) // make camara work camera.update() batch.projectionMatrix = camera.combined + } } @@ -570,17 +590,25 @@ class Ingame(val batch: SpriteBatch) : Screen { batch.inUse { batch.shader = null + // using custom code for camera; this is obscure and tricky + camera.position.set(WorldCamera.gdxCamX, WorldCamera.gdxCamY, 0f) // make camara work + camera.update() + batch.projectionMatrix = camera.combined + + + batch.color = Color.WHITE + blendNormal() + + ////////////////////// // draw actor glows // ////////////////////// - // FIXME needs some new blending/shader for glow... - - + actorsRenderMiddle.forEach { it.drawGlow(batch) } actorsRenderMidTop.forEach { it.drawGlow(batch) } player?.drawGlow(batch) actorsRenderFront.forEach { it.drawGlow(batch) } - // --> blendLightenOnly() <-- introduced by childs of ActorWithBody // + // --> blendNormal() <-- introduced by childs of ActorWithBody // // mix lighpmap canvas to this canvas (UV lights -- A channel) @@ -600,11 +628,62 @@ class Ingame(val batch: SpriteBatch) : Screen { 0f, 0f, lightTex.width * lightmapDownsample, lightTex.height * lightmapDownsample ) + } + + + blendNormal() } } + worldBlendFrameBuffer.inAction(camera, batch) { + Gdx.gl.glClearColor(0f, 0f, 0f, 0f) + Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT) + + val worldTex = worldDrawFrameBuffer.colorBufferTexture // WORLD: light_color must be applied beforehand + val glowTex = worldGlowFrameBuffer.colorBufferTexture // GLOW: light_uvlight must be applied beforehand + + //Gdx.gl.glActiveTexture(GL20.GL_TEXTURE0) + worldTex.bind(0) + glowTex.bind(1) + + + /*val quad = Mesh( + true, 4, 6, + VertexAttribute.Position(), + VertexAttribute.ColorUnpacked(), + VertexAttribute.TexCoords(0) + ) + quad.setVertices(floatArrayOf( + 0f, 0f, 0f, 1f, 1f, 1f, 1f, 0f, 1f, + Terrarum.WIDTH.toFloat(), 0f, 0f, 1f, 1f, 1f, 1f, 1f, 1f, + Terrarum.WIDTH.toFloat(), Terrarum.HEIGHT.toFloat(), 0f, 1f, 1f, 1f, 1f, 1f, 0f, + 0f, Terrarum.HEIGHT.toFloat(), 0f, 1f, 1f, 1f, 1f, 0f, 0f + )) + quad.setIndices(shortArrayOf(0, 1, 2, 2, 3, 0))*/ + + Terrarum.shaderBlendGlow.begin() + Terrarum.shaderBlendGlow.setUniformMatrix("u_projTrans", camera.combined) + Terrarum.shaderBlendGlow.setUniformi("u_texture", 0) + Terrarum.shaderBlendGlow.setUniformi("tex1", 1) + fullscreenQuad.render(Terrarum.shaderBlendGlow, GL20.GL_TRIANGLES) + Terrarum.shaderBlendGlow.end() + + + batch.inUse { + batch.color = Color.WHITE + blendNormal() + + Gdx.gl.glActiveTexture(GL20.GL_TEXTURE0) // reset active textureunit to zero (i don't know tbh) + + + batch.shader = null + batch.color = Color.RED + batch.fillRect(0f, 0f, 16f, 16f) + } + } + ///////////////////////// // draw to main screen // @@ -625,36 +704,29 @@ class Ingame(val batch: SpriteBatch) : Screen { WeatherMixer.render(batch) + val blendedTex = worldBlendFrameBuffer.colorBufferTexture batch.color = Color.WHITE - - // blend world_normal and world_glow batch.shader = null + blendNormal() + batch.draw(blendedTex, 0f, 0f, blendedTex.width.toFloat(), blendedTex.height.toFloat()) - val worldTex = worldDrawFrameBuffer.colorBufferTexture // WORLD: light_color must be applied beforehand - worldTex.setFilter(Texture.TextureFilter.Nearest, Texture.TextureFilter.Nearest) - /*val glowTex = worldGlowFrameBuffer.colorBufferTexture // GLOW: light_uvlight must be applied beforehand - glowTex.setFilter(Texture.TextureFilter.Nearest, Texture.TextureFilter.Nearest) - - Gdx.graphics.gL20.glActiveTexture(GL20.GL_TEXTURE0) - worldTex.bind(GL20.GL_TEXTURE0) - - Gdx.graphics.gL20.glActiveTexture(GL20.GL_TEXTURE1) - glowTex.bind(GL20.GL_TEXTURE1) - - // setup shader params...*/ + batch.color = Color.GREEN + batch.fillRect(16f, 16f, 16f, 16f) // an old code. - batch.draw(worldTex, 0f, 0f, worldTex.width.toFloat(), worldTex.height.toFloat()) + /*batch.shader = null + val worldTex = worldDrawFrameBuffer.colorBufferTexture // WORLD: light_color must be applied beforehand + val glowTex = worldGlowFrameBuffer.colorBufferTexture // GLOW: light_uvlight must be applied beforehand + + + batch.draw(worldTex, 0f, 0f, worldTex.width.toFloat(), worldTex.height.toFloat())*/ batch.shader = null - batch.color = Color.RED - batch.fillRect(0f, 0f, 16f, 16f) - //////////////////////// // debug informations // //////////////////////// @@ -728,10 +800,6 @@ class Ingame(val batch: SpriteBatch) : Screen { - - - - // ////// //// // //// // // // // // // // // // // // //// // // // // // //// @@ -1385,9 +1453,18 @@ class Ingame(val batch: SpriteBatch) : Screen { override fun hide() { } + /** + * @param width same as Terrarum.WIDTH + * @param height same as Terrarum.HEIGHT + * @see net.torvald.terrarum.Terrarum + */ override fun resize(width: Int, height: Int) { worldDrawFrameBuffer.dispose() worldDrawFrameBuffer = FrameBuffer(worldFBOformat, width, height, true) + worldGlowFrameBuffer.dispose() + worldGlowFrameBuffer = FrameBuffer(worldFBOformat, width, height, true) + worldBlendFrameBuffer.dispose() + worldBlendFrameBuffer = FrameBuffer(worldFBOformat, width, height, true) lightmapFboA.dispose() lightmapFboA = FrameBuffer(lightFBOformat, width.div(lightmapDownsample.toInt()), height.div(lightmapDownsample.toInt()), true) lightmapFboB.dispose() @@ -1402,11 +1479,32 @@ class Ingame(val batch: SpriteBatch) : Screen { initViewPort(width, height) + + // re-calculate fullscreen quad + fullscreenQuad = Mesh( + true, 4, 6, + VertexAttribute.Position(), + VertexAttribute.ColorUnpacked(), + VertexAttribute.TexCoords(0) + ) + fullscreenQuad.setVertices(floatArrayOf( + 0f, 0f, 0f, 1f, 1f, 1f, 1f, 0f, 1f, + Terrarum.WIDTH.toFloat(), 0f, 0f, 1f, 1f, 1f, 1f, 1f, 1f, + Terrarum.WIDTH.toFloat(), Terrarum.HEIGHT.toFloat(), 0f, 1f, 1f, 1f, 1f, 1f, 0f, + 0f, Terrarum.HEIGHT.toFloat(), 0f, 1f, 1f, 1f, 1f, 0f, 0f + )) + fullscreenQuad.setIndices(shortArrayOf(0, 1, 2, 2, 3, 0)) + + + LightmapRenderer.fireRecalculateEvent() } override fun dispose() { worldDrawFrameBuffer.dispose() + worldGlowFrameBuffer.dispose() + lightmapFboA.dispose() + lightmapFboB.dispose() } diff --git a/src/net/torvald/terrarum/OpusDecodeTest.kt b/src/net/torvald/terrarum/OpusDecodeTest.kt new file mode 100644 index 000000000..0a15c2563 --- /dev/null +++ b/src/net/torvald/terrarum/OpusDecodeTest.kt @@ -0,0 +1,36 @@ +package net.torvald.terrarum + +import com.badlogic.gdx.ApplicationAdapter +import com.badlogic.gdx.backends.lwjgl.LwjglApplication +import com.badlogic.gdx.backends.lwjgl.LwjglApplicationConfiguration +import com.badlogic.gdx.graphics.Color +import com.glester.jopus.JOpusBufferFile + + + +fun main(args: Array) { + + + val config = LwjglApplicationConfiguration() + LwjglApplication(OpusDecodeTest, config) +} + +/** + * Created by minjaesong on 2017-07-09. + */ +object OpusDecodeTest : ApplicationAdapter() { + + + private lateinit var opusFile: JOpusBufferFile + + override fun create() { + + } + + override fun render() { + val color = Color(0.22f, 0.11f, 0.33f, 0f) + println("${color.r}, ${color.g}, ${color.b}, ${color.a}") + System.exit(0) + } + +} \ No newline at end of file diff --git a/src/net/torvald/terrarum/Terrarum.kt b/src/net/torvald/terrarum/Terrarum.kt index 76344ca16..c5bd229f4 100644 --- a/src/net/torvald/terrarum/Terrarum.kt +++ b/src/net/torvald/terrarum/Terrarum.kt @@ -47,6 +47,9 @@ fun main(args: Array) { config.foregroundFPS = RENDER_FPS config.title = GAME_NAME + Terrarum.screenW = config.width + Terrarum.screenH = config.height + println("usevsync = ${Terrarum.USE_VSYNC}") // the game must run on same speed regardless of the display FPS; @@ -61,6 +64,9 @@ typealias RGBA8888 = Int object Terrarum : ApplicationAdapter() { + internal var screenW: Int? = null + internal var screenH: Int? = null + lateinit var batch: SpriteBatch lateinit var shapeRender: ShapeRenderer // DO NOT USE!! for very limited applications e.g. WeatherMixer inline fun inShapeRenderer(shapeRendererType: ShapeRenderer.ShapeType = ShapeRenderer.ShapeType.Filled, action: (ShapeRenderer) -> Unit) { @@ -70,10 +76,6 @@ object Terrarum : ApplicationAdapter() { } - lateinit var orthoLineTex2px: Texture - lateinit var orthoLineTex3px: Texture - - ////////////////////////////// // GLOBAL IMMUTABLE CONFIGS // ////////////////////////////// @@ -84,10 +86,10 @@ object Terrarum : ApplicationAdapter() { val VSYNC_TRIGGER_THRESHOLD = 56 - inline val WIDTH: Int - get() = Gdx.graphics.width//if (Gdx.graphics.width % 1 == 1) Gdx.graphics.width + 1 else Gdx.graphics.width - inline val HEIGHT: Int - get() = Gdx.graphics.height//if (Gdx.graphics.height % 1 == 1) Gdx.graphics.height + 1 else Gdx.graphics.height + val WIDTH: Int + get() = if (screenW!! % 2 == 0) screenW!! else screenW!! + 1 + val HEIGHT: Int + get() = if (screenH!! % 2 == 0) screenH!! else screenH!! + 1 inline val HALFW: Int get() = WIDTH.ushr(1) @@ -242,6 +244,7 @@ object Terrarum : ApplicationAdapter() { lateinit var shaderAOnly: ShaderProgram lateinit var shader4096: ShaderProgram lateinit var shader4096Bayer: ShaderProgram + lateinit var shaderBlendGlow: ShaderProgram init { @@ -291,9 +294,6 @@ object Terrarum : ApplicationAdapter() { batch = SpriteBatch() shapeRender = ShapeRenderer() - orthoLineTex2px = Texture("assets/graphics/ortho_line_tex_2px.tga") - orthoLineTex3px = Texture("assets/graphics/ortho_line_tex_3px.tga") - fontGame = GameFontBase("assets/graphics/fonts/terrarum-sans-bitmap", flipY = true) fontSmallNumbers = TinyAlphNum @@ -313,6 +313,13 @@ object Terrarum : ApplicationAdapter() { shaderRGBOnly = ShaderProgram(Gdx.files.internal("assets/4096.vert"), Gdx.files.internal("assets/rgbonly.frag")) shaderAOnly = ShaderProgram(Gdx.files.internal("assets/4096.vert"), Gdx.files.internal("assets/aonly.frag")) + shaderBlendGlow = ShaderProgram(Gdx.files.internal("assets/blendGlow.vert"), Gdx.files.internal("assets/blendGlow.frag")) + + if (!shaderBlendGlow.isCompiled) { + Gdx.app.log("Shader", shaderBlendGlow.log) + System.exit(1) + } + ModMgr // invoke Module Manager, will also invoke BlockCodex @@ -348,7 +355,10 @@ object Terrarum : ApplicationAdapter() { } override fun resize(width: Int, height: Int) { - currentScreen.resize(width, height) + screenW = width + screenH = height + + currentScreen.resize(WIDTH, HEIGHT) } diff --git a/src/net/torvald/terrarum/blockproperties/BlockCodex.kt b/src/net/torvald/terrarum/blockproperties/BlockCodex.kt index 7db483dc1..908d41448 100644 --- a/src/net/torvald/terrarum/blockproperties/BlockCodex.kt +++ b/src/net/torvald/terrarum/blockproperties/BlockCodex.kt @@ -91,6 +91,7 @@ object BlockCodex { 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.shadeColA = floatVal(record, "shduv") / LightmapRenderer.MUL_FLOAT prop.strength = intVal(record, "strength") prop.density = intVal(record, "dsty") @@ -98,6 +99,7 @@ object BlockCodex { 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.lumColA = floatVal(record, "lumuv") / LightmapRenderer.MUL_FLOAT prop.friction = intVal(record, "friction") prop.viscosity = intVal(record, "vscs") diff --git a/src/net/torvald/terrarum/blockproperties/BlockProp.kt b/src/net/torvald/terrarum/blockproperties/BlockProp.kt index 3c576b00d..c53ebcbe2 100644 --- a/src/net/torvald/terrarum/blockproperties/BlockProp.kt +++ b/src/net/torvald/terrarum/blockproperties/BlockProp.kt @@ -15,12 +15,13 @@ class BlockProp { var shadeColR = 0f var shadeColG = 0f var shadeColB = 0f + var shadeColA = 0f /** * @param opacity Raw RGB value, without alpha */ inline val opacity: Color - get() = Color(shadeColR, shadeColG, shadeColB, 1f) + get() = Color(shadeColR, shadeColG, shadeColB, shadeColA) var strength: Int = 0 var density: Int = 0 @@ -35,12 +36,13 @@ class BlockProp { var lumColR = 0f var lumColG = 0f var lumColB = 0f + var lumColA = 0f /** * @param luminosity Raw RGB value, without alpha */ inline val luminosity: Color - get() = BlockPropUtil.getDynamicLumFunc(Color(lumColR, lumColG, lumColB, 1f), dynamicLuminosityFunction) + get() = BlockPropUtil.getDynamicLumFunc(Color(lumColR, lumColG, lumColB, lumColA), dynamicLuminosityFunction) var drop: Int = 0 diff --git a/src/net/torvald/terrarum/blockproperties/BlockPropUtil.kt b/src/net/torvald/terrarum/blockproperties/BlockPropUtil.kt index 8281dc392..ea4701520 100644 --- a/src/net/torvald/terrarum/blockproperties/BlockPropUtil.kt +++ b/src/net/torvald/terrarum/blockproperties/BlockPropUtil.kt @@ -63,9 +63,9 @@ object BlockPropUtil { internal fun dynamicLumFuncTickClock() { // FPS-time compensation if (Gdx.graphics.framesPerSecond > 0) { - flickerFuncX += Gdx.graphics.framesPerSecond - breathFuncX += Gdx.graphics.framesPerSecond - pulsateFuncX += Gdx.graphics.framesPerSecond + flickerFuncX += Gdx.graphics.deltaTime * 1000f + breathFuncX += Gdx.graphics.deltaTime * 1000f + pulsateFuncX += Gdx.graphics.deltaTime * 1000f } // flicker-related vars diff --git a/src/net/torvald/terrarum/gameactors/AVKey.kt b/src/net/torvald/terrarum/gameactors/AVKey.kt index 573675a3e..848e0e0f8 100644 --- a/src/net/torvald/terrarum/gameactors/AVKey.kt +++ b/src/net/torvald/terrarum/gameactors/AVKey.kt @@ -42,6 +42,7 @@ object AVKey { const val LUMR = "luminosityred" const val LUMG = "luminositygreen" const val LUMB = "luminosityblue" + const val LUMA = "luminosityuv" const val DRAGCOEFF = "dragcoeff" const val FALLDAMPENMULT = "falldampenmult" diff --git a/src/net/torvald/terrarum/gameactors/ActorHumanoid.kt b/src/net/torvald/terrarum/gameactors/ActorHumanoid.kt index ee42ea5ca..34d1bfff7 100644 --- a/src/net/torvald/terrarum/gameactors/ActorHumanoid.kt +++ b/src/net/torvald/terrarum/gameactors/ActorHumanoid.kt @@ -54,12 +54,13 @@ open class ActorHumanoid(birth: GameDate, death: GameDate? = null) (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 + (actorValue.getAsFloat(AVKey.LUMA) ?: 0f) / LightmapRenderer.MUL_FLOAT ) set(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 + actorValue[AVKey.LUMA] = value.a * LightmapRenderer.MUL_FLOAT } /** diff --git a/src/net/torvald/terrarum/gameactors/ActorWithPhysics.kt b/src/net/torvald/terrarum/gameactors/ActorWithPhysics.kt index c9a80c3da..ee86f059b 100644 --- a/src/net/torvald/terrarum/gameactors/ActorWithPhysics.kt +++ b/src/net/torvald/terrarum/gameactors/ActorWithPhysics.kt @@ -1150,6 +1150,7 @@ open class ActorWithPhysics(renderOrder: RenderOrder, val immobileBody: Boolean override fun drawGlow(batch: SpriteBatch) { if (isVisible && spriteGlow != null) { + blendNormal() val offsetX = hitboxTranslateX * scale diff --git a/src/net/torvald/terrarum/gameactors/Luminous.kt b/src/net/torvald/terrarum/gameactors/Luminous.kt index bf7c767fb..3dbc33b13 100644 --- a/src/net/torvald/terrarum/gameactors/Luminous.kt +++ b/src/net/torvald/terrarum/gameactors/Luminous.kt @@ -15,12 +15,13 @@ interface Luminous { (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 + (actorValue.getAsFloat(AVKey.LUMA) ?: 0f) / LightmapRenderer.MUL_FLOAT, ) set(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 + actorValue[AVKey.LUMA] = value.a * LightmapRenderer.MUL_FLOAT } */ var luminosity: Color diff --git a/src/net/torvald/terrarum/gameactors/PlayerBuilderSigrid.kt b/src/net/torvald/terrarum/gameactors/PlayerBuilderSigrid.kt index c67cfc1c4..136495668 100644 --- a/src/net/torvald/terrarum/gameactors/PlayerBuilderSigrid.kt +++ b/src/net/torvald/terrarum/gameactors/PlayerBuilderSigrid.kt @@ -49,9 +49,10 @@ object PlayerBuilderSigrid { p.actorValue[AVKey.INTELLIGENT] = true - //p.actorValue[AVKey.LUMR] = 0.84f - //p.actorValue[AVKey.LUMR] = 0.93f - //p.actorValue[AVKey.LUMR] = 1.37f + //p.actorValue[AVKey.LUMR] = 0.84 + //p.actorValue[AVKey.LUMR] = 0.93 + //p.actorValue[AVKey.LUMR] = 1.37 + p.actorValue[AVKey.LUMA] = 0.32 p.actorValue[AVKey.BASEDEFENCE] = 141 diff --git a/src/net/torvald/terrarum/ui/BasicDebugInfoWindow.kt b/src/net/torvald/terrarum/ui/BasicDebugInfoWindow.kt index 03793fdcd..f2fe03eef 100644 --- a/src/net/torvald/terrarum/ui/BasicDebugInfoWindow.kt +++ b/src/net/torvald/terrarum/ui/BasicDebugInfoWindow.kt @@ -111,12 +111,10 @@ class BasicDebugInfoWindow : UICanvas { val rawR = valRaw?.r?.times(100f)?.round()?.div(100f) val rawG = valRaw?.g?.times(100f)?.round()?.div(100f) val rawB = valRaw?.b?.times(100f)?.round()?.div(100f) + val rawA = valRaw?.a?.times(100f)?.round()?.div(100f) lightVal = if (valRaw == null) "—" - else valRaw.toString() + " (" + - rawR.toString() + " " + - rawG.toString() + " " + - rawB.toString() + ")" + else "$rawR $rawG $rawB $rawA" printLine(batch, 8, "light@cursor $ccG$lightVal") val tileNum = Terrarum.ingame!!.world.getTileFromTerrain(mouseTileX, mouseTileY) ?: -1 diff --git a/src/net/torvald/terrarum/weather/BaseModularWeather.kt b/src/net/torvald/terrarum/weather/BaseModularWeather.kt index 80afd20f3..dcada5f0a 100644 --- a/src/net/torvald/terrarum/weather/BaseModularWeather.kt +++ b/src/net/torvald/terrarum/weather/BaseModularWeather.kt @@ -12,8 +12,7 @@ import java.util.* * Created by minjaesong on 16-07-11. */ data class BaseModularWeather( - val globalLightColourMap: GdxColorMap, - var skyboxGradColourMap: GdxColorMap, + var skyboxGradColourMap: GdxColorMap, // row 0: skybox grad top, row 1: skybox grad bottom, row 2: sunlight (RGBA) val classification: String, var extraImages: ArrayList, val mixFrom: String? = null, diff --git a/src/net/torvald/terrarum/weather/WeatherMixer.kt b/src/net/torvald/terrarum/weather/WeatherMixer.kt index 2a7585c0a..b78e2972e 100644 --- a/src/net/torvald/terrarum/weather/WeatherMixer.kt +++ b/src/net/torvald/terrarum/weather/WeatherMixer.kt @@ -87,7 +87,7 @@ object WeatherMixer { ) Terrarum.ingame!!.addParticle(rainParticle) } - globalLightNow.set(getGlobalLightOfTime(world.time.todaySeconds).mul(0.3f, 0.3f, 0.3f, 1f)) + globalLightNow.set(getGlobalLightOfTime(world.time.todaySeconds).mul(0.3f, 0.3f, 0.3f, 0.58f)) } } } @@ -107,7 +107,6 @@ object WeatherMixer { // we will not care for nextSkybox for now val timeNow = Terrarum.ingame!!.world.time.todaySeconds val skyboxColourMap = currentWeather.skyboxGradColourMap - val lightColourMap = currentWeather.globalLightColourMap // calculate global light val globalLight = getGradientColour(skyboxColourMap, 2, timeNow) @@ -139,7 +138,7 @@ object WeatherMixer { * Get a GL of specific time */ fun getGlobalLightOfTime(timeInSec: Int): Color = - getGradientColour(currentWeather.globalLightColourMap, 0, timeInSec) + getGradientColour(currentWeather.skyboxGradColourMap, 2, timeInSec) // TODO colour gradient load from image, store to array fun getGradientColour(colorMap: GdxColorMap, row: Int, timeInSec: Int): Color { @@ -167,8 +166,6 @@ object WeatherMixer { return newCol } - fun Color.toStringRGB() = "RGB8(${this.r}, ${this.g}, ${this.b})" - fun getWeatherList(classification: String) = weatherList[classification]!! fun getRandomWeather(classification: String) = getWeatherList(classification)[HQRNG().nextInt(getWeatherList(classification).size)] @@ -178,8 +175,7 @@ object WeatherMixer { fun readFromJson(path: String): BaseModularWeather { /* JSON structure: { - "globalLight": "colourmap/sky_colour.tga", // integer for static, string (path to image) for dynamic - "skyboxGradColourMap": "colourmap/sky_colour.tga", // integer for static, string (path to image) for dynamic + "skyboxGradColourMap": "colourmap/sky_colour.tga", // string (path to image) for dynamic. Image must be RGBA8888 or RGB888 "extraImages": [ // if any, it will be like: sun01.tga, @@ -193,25 +189,13 @@ object WeatherMixer { val JSON = JsonFetcher(path) - val globalLightInJson = JSON.get("globalLight").asJsonPrimitive val skyboxInJson = JSON.get("skyboxGradColourMap").asJsonPrimitive val extraImagesPath = JSON.getAsJsonArray("extraImages") - val globalLight = if (globalLightInJson.isString) - GdxColorMap(ModMgr.getGdxFile("basegame", "$pathToImage/${globalLightInJson.asString}")) - else if (globalLightInJson.isNumber) - GdxColorMap(globalLightInJson.asNumber.toInt()) - else - throw IllegalStateException("In weather descriptor $path -- globalLight seems malformed.") - - - val skybox = if (skyboxInJson.isString) GdxColorMap(ModMgr.getGdxFile("basegame", "$pathToImage/${skyboxInJson.asString}")) - else if (globalLightInJson.isNumber) - GdxColorMap(skyboxInJson.asNumber.toInt()) else throw IllegalStateException("In weather descriptor $path -- skyboxGradColourMap seems malformed.") @@ -240,7 +224,6 @@ object WeatherMixer { return BaseModularWeather( - globalLightColourMap = globalLight, skyboxGradColourMap = skybox, classification = classification, extraImages = extraImages diff --git a/src/net/torvald/terrarum/worlddrawer/LightmapRenderer.kt b/src/net/torvald/terrarum/worlddrawer/LightmapRenderer.kt index d295b3066..739c18930 100644 --- a/src/net/torvald/terrarum/worlddrawer/LightmapRenderer.kt +++ b/src/net/torvald/terrarum/worlddrawer/LightmapRenderer.kt @@ -268,7 +268,7 @@ object LightmapRenderer { val thisWall = Terrarum.ingame!!.world.getTileFromWall(x, y) val thisTileLuminosity = BlockCodex[thisTerrain].luminosity // already been div by four val thisTileOpacity = BlockCodex[thisTerrain].opacity // already been div by four - val sunLight = Terrarum.ingame!!.world.globalLight.cpy().mul(DIV_FLOAT, DIV_FLOAT, DIV_FLOAT, 1f) + val sunLight = Terrarum.ingame!!.world.globalLight.cpy().mul(DIV_FLOAT, DIV_FLOAT, DIV_FLOAT, DIV_FLOAT) // MIX TILE // open air @@ -478,7 +478,7 @@ object LightmapRenderer { * @param rgb2 * @return */ - private infix fun Color.maxBlend(other: Color): Color { + infix fun Color.maxBlend(other: Color): Color { return Color( if (this.r > other.r) this.r else other.r, if (this.g > other.g) this.g else other.g, diff --git a/work_files/graphics/weathers/generic_light.psd b/work_files/graphics/weathers/generic_light.psd index 4cdcbfa7a..d23a5216b 100644 --- a/work_files/graphics/weathers/generic_light.psd +++ b/work_files/graphics/weathers/generic_light.psd @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ea7ba2e4e2791fe7386f4cc2831b1369db79964b85529b2536f9380e80f60324 -size 36398 +oid sha256:f57dac271d9b46ec106e6c1176bcd9344a644054ace7b83016467ddc289d031b +size 36980