From e77aa0c33fda351b49278a3e1797128f5e78d6b6 Mon Sep 17 00:00:00 2001 From: minjaesong Date: Tue, 16 Jul 2024 17:32:56 +0900 Subject: [PATCH] fluid viscosity on phys sim --- assets/mods/basegame/blocks/blocks.csv | 254 +++++++++--------- assets/mods/basegame/fluid/1.tga | 3 + assets/mods/basegame/fluid/fluids.csv | 3 + src/net/torvald/terrarum/QuickDirtyLint.kt | 7 +- .../terrarum/blockproperties/BlockCodex.kt | 7 +- .../terrarum/blockproperties/BlockProp.kt | 3 - .../terrarum/gameactors/ActorWithBody.kt | 164 ++++++----- .../torvald/terrarum/gameworld/GameWorld.kt | 2 +- .../torvald/terrarum/gameworld/WorldTime.kt | 4 +- .../terrarum/modulebasegame/IngameRenderer.kt | 3 +- .../console/SpawnPhysTestBall.kt | 2 +- .../terrarum/worlddrawer/CreateTileAtlas.kt | 9 +- 12 files changed, 248 insertions(+), 213 deletions(-) create mode 100644 assets/mods/basegame/fluid/1.tga create mode 100644 assets/mods/basegame/fluid/fluids.csv diff --git a/assets/mods/basegame/blocks/blocks.csv b/assets/mods/basegame/blocks/blocks.csv index 2d1b77a92..bfb12d376 100644 --- a/assets/mods/basegame/blocks/blocks.csv +++ b/assets/mods/basegame/blocks/blocks.csv @@ -1,162 +1,162 @@ -"id";"drop";"spawn";"name";"shdr";"shdg";"shdb";"shduv";"str";"dsty";"mate";"solid";"wall";"grav";"dlfn";"fv";"fr";"lumr";"lumg";"lumb";"lumuv";"colour";"vscs";"refl";"tags" -"0";"N/A";"N/A";"BLOCK_AIR";"0.0312";"0.0312";"0.0312";"0.0312";"1";"1";"AIIR";"0";"1";"N/A";"0";"0";"4";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"INCONSEQUENTIAL,AIR,NORANDTILE" -"1";"N/A";"N/A";"BLOCK_UPDATE";"0.0312";"0.0312";"0.0312";"0.0312";"1";"1";"AIIR";"0";"1";"N/A";"0";"0";"4";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"INTERNAL,NORANDTILE" +"id";"drop";"spawn";"name";"shdr";"shdg";"shdb";"shduv";"str";"dsty";"mate";"solid";"wall";"grav";"dlfn";"fv";"fr";"lumr";"lumg";"lumb";"lumuv";"refl";"tags" +"0";"N/A";"N/A";"BLOCK_AIR";"0.0312";"0.0312";"0.0312";"0.0312";"1";"1";"AIIR";"0";"1";"N/A";"0";"0";"4";"0.0000";"0.0000";"0.0000";"0.0000";"0.0";"INCONSEQUENTIAL,AIR,NORANDTILE" +"1";"N/A";"N/A";"BLOCK_UPDATE";"0.0312";"0.0312";"0.0312";"0.0312";"1";"1";"AIIR";"0";"1";"N/A";"0";"0";"4";"0.0000";"0.0000";"0.0000";"0.0000";"0.0";"INTERNAL,NORANDTILE" # rocks -"16";"17";"17";"BLOCK_STONE";"0.1252";"0.1252";"0.1252";"0.1252";"48";"2400";"ROCK";"1";"1";"N/A";"0";"4";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"ROCK,NATURAL,OREBEARING,SHALLOWROCK,BRICKROCK" -"17";"17";"17";"BLOCK_STONE_QUARRIED";"0.1252";"0.1252";"0.1252";"0.1252";"48";"2400";"ROCK";"1";"1";"N/A";"0";"4";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"ROCK,NATURAL,OREBEARING,SHALLOWROCK,BRICKROCK" -"18";"18";"18";"BLOCK_STONE_TILE_WHITE";"0.1252";"0.1252";"0.1252";"0.1252";"48";"2400";"ROCK";"1";"1";"N/A";"0";"4";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.18";"STONE,NORANDTILE" -"19";"19";"19";"BLOCK_STONE_BRICKS";"0.1252";"0.1252";"0.1252";"0.1252";"48";"2400";"ROCK";"1";"1";"N/A";"0";"4";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"STONE,NORANDTILE" -"20";"20";"20";"BLOCK_STONE_DEEP";"0.1252";"0.1252";"0.1252";"0.1252";"80";"2400";"ROCK";"1";"1";"N/A";"0";"4";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"ROCK,NATURA,OREBEARING,DEEPROCK,BRICKROCK" -"21";"21";"21";"BLOCK_STONE_MARBLE";"0.1252";"0.1252";"0.1252";"0.1252";"48";"2400";"ROCK";"1";"1";"N/A";"0";"4";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.1";"ROCK,NATURAL,DEEPROCK" +"16";"17";"17";"BLOCK_STONE";"0.1252";"0.1252";"0.1252";"0.1252";"48";"2400";"ROCK";"1";"1";"N/A";"0";"4";"16";"0.0000";"0.0000";"0.0000";"0.0000";"0.0";"ROCK,NATURAL,OREBEARING,SHALLOWROCK,BRICKROCK" +"17";"17";"17";"BLOCK_STONE_QUARRIED";"0.1252";"0.1252";"0.1252";"0.1252";"48";"2400";"ROCK";"1";"1";"N/A";"0";"4";"16";"0.0000";"0.0000";"0.0000";"0.0000";"0.0";"ROCK,NATURAL,OREBEARING,SHALLOWROCK,BRICKROCK" +"18";"18";"18";"BLOCK_STONE_TILE_WHITE";"0.1252";"0.1252";"0.1252";"0.1252";"48";"2400";"ROCK";"1";"1";"N/A";"0";"4";"16";"0.0000";"0.0000";"0.0000";"0.0000";"0.18";"STONE,NORANDTILE" +"19";"19";"19";"BLOCK_STONE_BRICKS";"0.1252";"0.1252";"0.1252";"0.1252";"48";"2400";"ROCK";"1";"1";"N/A";"0";"4";"16";"0.0000";"0.0000";"0.0000";"0.0000";"0.0";"STONE,NORANDTILE" +"20";"20";"20";"BLOCK_STONE_DEEP";"0.1252";"0.1252";"0.1252";"0.1252";"80";"2400";"ROCK";"1";"1";"N/A";"0";"4";"16";"0.0000";"0.0000";"0.0000";"0.0000";"0.0";"ROCK,NATURA,OREBEARING,DEEPROCK,BRICKROCK" +"21";"21";"21";"BLOCK_STONE_MARBLE";"0.1252";"0.1252";"0.1252";"0.1252";"48";"2400";"ROCK";"1";"1";"N/A";"0";"4";"16";"0.0000";"0.0000";"0.0000";"0.0000";"0.1";"ROCK,NATURAL,DEEPROCK" # dirts -"32";"32";"32";"BLOCK_DIRT";"0.1252";"0.1252";"0.1252";"0.1252";"12";"1400";"DIRT";"1";"1";"N/A";"0";"4";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"DIRT,NATURAL,CULTIVABLE" -"33";"32";"32";"BLOCK_GRASS";"0.1252";"0.1252";"0.1252";"0.1252";"12";"1400";"GRSS";"1";"0";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"GRASS,NATURAL,CULTIVABLE" -"34";"34";"34";"BLOCK_GRASSWALL";"0.1252";"0.1252";"0.1252";"0.1252";"12";"1400";"GRSS";"1";"1";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"GRASS,NATURAL" -"35";"item@basegame:25";"item@basegame:25";"BLOCK_CLAY";"0.1252";"0.1252";"0.1252";"0.1252";"12";"1700";"DIRT";"1";"1";"N/A";"0";"4";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"DIRT,NATURAL" -#"35";"35";"35";"BLOCK_FOLIAGE_GREEN";"0.1252";"0.1252";"0.1252";"0.1252";"12";"1400";"GRSS";"1";"1";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"GRASS,NATURAL" -#"36";"36";"36";"BLOCK_FOLIAGE_LIME";"0.1252";"0.1252";"0.1252";"0.1252";"12";"1400";"GRSS";"1";"1";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"GRASS,NATURAL" -#"37";"37";"37";"BLOCK_FOLIAGE_GOLD";"0.1252";"0.1252";"0.1252";"0.1252";"12";"1400";"GRSS";"1";"1";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"GRASS,NATURAL" -#"38";"38";"38";"BLOCK_FOLIAGE_RED";"0.1252";"0.1252";"0.1252";"0.1252";"12";"1400";"GRSS";"1";"1";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"GRASS,NATURAL" -#"39";"39";"39";"BLOCK_FOLIAGE_ICEBLUE";"0.1252";"0.1252";"0.1252";"0.1252";"12";"1400";"GRSS";"1";"1";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"GRASS,NATURAL" -#"40";"40";"40";"BLOCK_FOLIAGE_PURPLE";"0.1252";"0.1252";"0.1252";"0.1252";"12";"1400";"GRSS";"1";"1";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"GRASS,NATURAL" +"32";"32";"32";"BLOCK_DIRT";"0.1252";"0.1252";"0.1252";"0.1252";"12";"1400";"DIRT";"1";"1";"N/A";"0";"4";"16";"0.0000";"0.0000";"0.0000";"0.0000";"0.0";"DIRT,NATURAL,CULTIVABLE" +"33";"32";"32";"BLOCK_GRASS";"0.1252";"0.1252";"0.1252";"0.1252";"12";"1400";"GRSS";"1";"0";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"0.0";"GRASS,NATURAL,CULTIVABLE" +"34";"34";"34";"BLOCK_GRASSWALL";"0.1252";"0.1252";"0.1252";"0.1252";"12";"1400";"GRSS";"1";"1";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"0.0";"GRASS,NATURAL" +"35";"item@basegame:25";"item@basegame:25";"BLOCK_CLAY";"0.1252";"0.1252";"0.1252";"0.1252";"12";"1700";"DIRT";"1";"1";"N/A";"0";"4";"16";"0.0000";"0.0000";"0.0000";"0.0000";"0.0";"DIRT,NATURAL" +#"35";"35";"35";"BLOCK_FOLIAGE_GREEN";"0.1252";"0.1252";"0.1252";"0.1252";"12";"1400";"GRSS";"1";"1";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"0.0";"GRASS,NATURAL" +#"36";"36";"36";"BLOCK_FOLIAGE_LIME";"0.1252";"0.1252";"0.1252";"0.1252";"12";"1400";"GRSS";"1";"1";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"0.0";"GRASS,NATURAL" +#"37";"37";"37";"BLOCK_FOLIAGE_GOLD";"0.1252";"0.1252";"0.1252";"0.1252";"12";"1400";"GRSS";"1";"1";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"0.0";"GRASS,NATURAL" +#"38";"38";"38";"BLOCK_FOLIAGE_RED";"0.1252";"0.1252";"0.1252";"0.1252";"12";"1400";"GRSS";"1";"1";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"0.0";"GRASS,NATURAL" +#"39";"39";"39";"BLOCK_FOLIAGE_ICEBLUE";"0.1252";"0.1252";"0.1252";"0.1252";"12";"1400";"GRSS";"1";"1";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"0.0";"GRASS,NATURAL" +#"40";"40";"40";"BLOCK_FOLIAGE_PURPLE";"0.1252";"0.1252";"0.1252";"0.1252";"12";"1400";"GRSS";"1";"1";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"0.0";"GRASS,NATURAL" # woods (tag WOOD: ingredient, tag WOODEN: can be attacked using axe) -"48";"48";"48";"BLOCK_PLANK_NORMAL";"0.1252";"0.1252";"0.1252";"0.1252";"19";"740";"WOOD";"1";"1";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"WOOD,WOODEN,NORANDTILE" -"49";"49";"49";"BLOCK_PLANK_EBONY";"0.1252";"0.1252";"0.1252";"0.1252";"23";"1200";"WOOD";"1";"1";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"WOOD,WOODEN,NORANDTILE" -"50";"50";"50";"BLOCK_PLANK_BIRCH";"0.1252";"0.1252";"0.1252";"0.1252";"18";"670";"WOOD";"1";"1";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"WOOD,WOODEN,NORANDTILE" -"51";"51";"51";"BLOCK_PLANK_ROSEWOOD";"0.1252";"0.1252";"0.1252";"0.1252";"20";"900";"WOOD";"1";"1";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"WOOD,WOODEN,NORANDTILE" +"48";"48";"48";"BLOCK_PLANK_NORMAL";"0.1252";"0.1252";"0.1252";"0.1252";"19";"740";"WOOD";"1";"1";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"0.0";"WOOD,WOODEN,NORANDTILE" +"49";"49";"49";"BLOCK_PLANK_EBONY";"0.1252";"0.1252";"0.1252";"0.1252";"23";"1200";"WOOD";"1";"1";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"0.0";"WOOD,WOODEN,NORANDTILE" +"50";"50";"50";"BLOCK_PLANK_BIRCH";"0.1252";"0.1252";"0.1252";"0.1252";"18";"670";"WOOD";"1";"1";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"0.0";"WOOD,WOODEN,NORANDTILE" +"51";"51";"51";"BLOCK_PLANK_ROSEWOOD";"0.1252";"0.1252";"0.1252";"0.1252";"20";"900";"WOOD";"1";"1";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"0.0";"WOOD,WOODEN,NORANDTILE" # small punchable trees -"64";"item@basegame:168";"item@basegame:168";"BLOCK_TRUNK_NORMAL";"0.0312";"0.0312";"0.0312";"0.0312";"16";"740";"WOOD";"0";"0";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"TREE,TREETRUNK,TREESMALL,NATURAL" -"65";"item@basegame:169";"item@basegame:169";"BLOCK_TRUNK_EBONY";"0.0312";"0.0312";"0.0312";"0.0312";"19";"1200";"WOOD";"0";"0";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"TREE,TREETRUNK,TREESMALL,NATURAL" -"66";"item@basegame:170";"item@basegame:170";"BLOCK_TRUNK_BIRCH";"0.0312";"0.0312";"0.0312";"0.0312";"15";"670";"WOOD";"0";"0";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"TREE,TREETRUNK,TREESMALL,NATURAL" -"67";"item@basegame:171";"item@basegame:171";"BLOCK_TRUNK_ROSEWOOD";"0.0312";"0.0312";"0.0312";"0.0312";"17";"900";"WOOD";"0";"0";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"TREE,TREETRUNK,TREESMALL,NATURAL" +"64";"item@basegame:168";"item@basegame:168";"BLOCK_TRUNK_NORMAL";"0.0312";"0.0312";"0.0312";"0.0312";"16";"740";"WOOD";"0";"0";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"0.0";"TREE,TREETRUNK,TREESMALL,NATURAL" +"65";"item@basegame:169";"item@basegame:169";"BLOCK_TRUNK_EBONY";"0.0312";"0.0312";"0.0312";"0.0312";"19";"1200";"WOOD";"0";"0";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"0.0";"TREE,TREETRUNK,TREESMALL,NATURAL" +"66";"item@basegame:170";"item@basegame:170";"BLOCK_TRUNK_BIRCH";"0.0312";"0.0312";"0.0312";"0.0312";"15";"670";"WOOD";"0";"0";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"0.0";"TREE,TREETRUNK,TREESMALL,NATURAL" +"67";"item@basegame:171";"item@basegame:171";"BLOCK_TRUNK_ROSEWOOD";"0.0312";"0.0312";"0.0312";"0.0312";"17";"900";"WOOD";"0";"0";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"0.0";"TREE,TREETRUNK,TREESMALL,NATURAL" # large non-punchable trees -"72";"item@basegame:168";"item@basegame:168";"BLOCK_TRUNK_NORMAL";"0.0312";"0.0312";"0.0312";"0.0312";"16";"740";"WOOD";"0";"0";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"TREE,TREETRUNK,TREELARGE,NATURAL" -"73";"item@basegame:169";"item@basegame:169";"BLOCK_TRUNK_EBONY";"0.0312";"0.0312";"0.0312";"0.0312";"19";"1200";"WOOD";"0";"0";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"TREE,TREETRUNK,TREELARGE,NATURAL" -"74";"item@basegame:170";"item@basegame:170";"BLOCK_TRUNK_BIRCH";"0.0312";"0.0312";"0.0312";"0.0312";"15";"670";"WOOD";"0";"0";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"TREE,TREETRUNK,TREELARGE,NATURAL" -"75";"item@basegame:171";"item@basegame:171";"BLOCK_TRUNK_ROSEWOOD";"0.0312";"0.0312";"0.0312";"0.0312";"17";"900";"WOOD";"0";"0";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"TREE,TREETRUNK,TREELARGE,NATURAL" +"72";"item@basegame:168";"item@basegame:168";"BLOCK_TRUNK_NORMAL";"0.0312";"0.0312";"0.0312";"0.0312";"16";"740";"WOOD";"0";"0";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"0.0";"TREE,TREETRUNK,TREELARGE,NATURAL" +"73";"item@basegame:169";"item@basegame:169";"BLOCK_TRUNK_EBONY";"0.0312";"0.0312";"0.0312";"0.0312";"19";"1200";"WOOD";"0";"0";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"0.0";"TREE,TREETRUNK,TREELARGE,NATURAL" +"74";"item@basegame:170";"item@basegame:170";"BLOCK_TRUNK_BIRCH";"0.0312";"0.0312";"0.0312";"0.0312";"15";"670";"WOOD";"0";"0";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"0.0";"TREE,TREETRUNK,TREELARGE,NATURAL" +"75";"item@basegame:171";"item@basegame:171";"BLOCK_TRUNK_ROSEWOOD";"0.0312";"0.0312";"0.0312";"0.0312";"17";"900";"WOOD";"0";"0";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"0.0";"TREE,TREETRUNK,TREELARGE,NATURAL" # sabulous -"80";"80";"80";"BLOCK_SAND";"0.1252";"0.1252";"0.1252";"0.1252";"12";"1600";"SAND";"1";"0";"0";"0";"4";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"SAND,NATURAL,WARM,SMELTABLE" -"81";"81";"81";"BLOCK_SAND_WHITE";"0.1252";"0.1252";"0.1252";"0.1252";"12";"1600";"SAND";"1";"0";"0";"0";"4";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"SAND,NATURAL,WARM,SMELTABLE" -"82";"82";"82";"BLOCK_SAND_RED";"0.1252";"0.1252";"0.1252";"0.1252";"12";"1600";"SAND";"1";"0";"0";"0";"4";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"SAND,NATURAL,WARM,SMELTABLE" -"83";"83";"83";"BLOCK_SAND_DESERT";"0.1252";"0.1252";"0.1252";"0.1252";"12";"1600";"SAND";"1";"0";"0";"0";"4";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"SAND,NATURAL,WARM,SMELTABLE" -"84";"84";"84";"BLOCK_SAND_BLACK";"0.1252";"0.1252";"0.1252";"0.1252";"12";"1600";"SAND";"1";"0";"0";"0";"4";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"SAND,NATURAL,WARM,SMELTABLE" -"85";"85";"85";"BLOCK_SAND_GREEN";"0.1252";"0.1252";"0.1252";"0.1252";"12";"1600";"SAND";"1";"0";"0";"0";"4";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"SAND,NATURAL,WARM,SMELTABLE" -"96";"96";"96";"BLOCK_GRAVEL";"0.1252";"0.1252";"0.1252";"0.1252";"12";"1700";"GRVL";"1";"0";"0";"0";"4";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"GRAVEL,NATURAL" -"97";"97";"97";"BLOCK_GRAVEL_GREY";"0.1252";"0.1252";"0.1252";"0.1252";"12";"1700";"GRVL";"1";"0";"0";"0";"4";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"GRAVEL,NATURAL" +"80";"80";"80";"BLOCK_SAND";"0.1252";"0.1252";"0.1252";"0.1252";"12";"1600";"SAND";"1";"0";"0";"0";"4";"16";"0.0000";"0.0000";"0.0000";"0.0000";"0.0";"SAND,NATURAL,WARM,SMELTABLE" +"81";"81";"81";"BLOCK_SAND_WHITE";"0.1252";"0.1252";"0.1252";"0.1252";"12";"1600";"SAND";"1";"0";"0";"0";"4";"16";"0.0000";"0.0000";"0.0000";"0.0000";"0.0";"SAND,NATURAL,WARM,SMELTABLE" +"82";"82";"82";"BLOCK_SAND_RED";"0.1252";"0.1252";"0.1252";"0.1252";"12";"1600";"SAND";"1";"0";"0";"0";"4";"16";"0.0000";"0.0000";"0.0000";"0.0000";"0.0";"SAND,NATURAL,WARM,SMELTABLE" +"83";"83";"83";"BLOCK_SAND_DESERT";"0.1252";"0.1252";"0.1252";"0.1252";"12";"1600";"SAND";"1";"0";"0";"0";"4";"16";"0.0000";"0.0000";"0.0000";"0.0000";"0.0";"SAND,NATURAL,WARM,SMELTABLE" +"84";"84";"84";"BLOCK_SAND_BLACK";"0.1252";"0.1252";"0.1252";"0.1252";"12";"1600";"SAND";"1";"0";"0";"0";"4";"16";"0.0000";"0.0000";"0.0000";"0.0000";"0.0";"SAND,NATURAL,WARM,SMELTABLE" +"85";"85";"85";"BLOCK_SAND_GREEN";"0.1252";"0.1252";"0.1252";"0.1252";"12";"1600";"SAND";"1";"0";"0";"0";"4";"16";"0.0000";"0.0000";"0.0000";"0.0000";"0.0";"SAND,NATURAL,WARM,SMELTABLE" +"96";"96";"96";"BLOCK_GRAVEL";"0.1252";"0.1252";"0.1252";"0.1252";"12";"1700";"GRVL";"1";"0";"0";"0";"4";"16";"0.0000";"0.0000";"0.0000";"0.0000";"0.0";"GRAVEL,NATURAL" +"97";"97";"97";"BLOCK_GRAVEL_GREY";"0.1252";"0.1252";"0.1252";"0.1252";"12";"1700";"GRVL";"1";"0";"0";"0";"4";"16";"0.0000";"0.0000";"0.0000";"0.0000";"0.0";"GRAVEL,NATURAL" # tree leaves -"112";"N/A";"112";"BLOCK_FOLIAGE_NORMAL";"0.0312";"0.0312";"0.0312";"0.0312";"1";"400";"GRSS";"0";"0";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"TREE,LEAVES,NATURAL" -"113";"N/A";"113";"BLOCK_FOLIAGE_EBONY";"0.0312";"0.0312";"0.0312";"0.0312";"1";"400";"GRSS";"0";"0";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"TREE,LEAVES,NATURAL" -"114";"N/A";"114";"BLOCK_FOLIAGE_BIRCH";"0.0312";"0.0312";"0.0312";"0.0312";"1";"400";"GRSS";"0";"0";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"TREE,LEAVES,NATURAL" -"115";"N/A";"115";"BLOCK_FOLIAGE_ROSEWOOD";"0.0312";"0.0312";"0.0312";"0.0312";"1";"400";"GRSS";"0";"0";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"TREE,LEAVES,NATURAL" +"112";"N/A";"112";"BLOCK_FOLIAGE_NORMAL";"0.0312";"0.0312";"0.0312";"0.0312";"1";"400";"GRSS";"0";"0";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"0.0";"TREE,LEAVES,NATURAL" +"113";"N/A";"113";"BLOCK_FOLIAGE_EBONY";"0.0312";"0.0312";"0.0312";"0.0312";"1";"400";"GRSS";"0";"0";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"0.0";"TREE,LEAVES,NATURAL" +"114";"N/A";"114";"BLOCK_FOLIAGE_BIRCH";"0.0312";"0.0312";"0.0312";"0.0312";"1";"400";"GRSS";"0";"0";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"0.0";"TREE,LEAVES,NATURAL" +"115";"N/A";"115";"BLOCK_FOLIAGE_ROSEWOOD";"0.0312";"0.0312";"0.0312";"0.0312";"1";"400";"GRSS";"0";"0";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"0.0";"TREE,LEAVES,NATURAL" # frozen -"144";"144";"144";"BLOCK_SNOW";"0.1252";"0.1252";"0.1252";"0.1252";"12";"500";"SNOW";"1";"1";"N/A";"0";"4";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"SNOW,NATURAL,COLD" -"145";"N/A";"N/A";"BLOCK_ICE_FRAGILE";"0.0508";"0.0508";"0.0508";"0.0508";"5";"930";"ICEI";"1";"0";"N/A";"0";"0";"4";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"ICE,NATURAL,FRAGILE,COLD" -#"146";"146";"146";"BLOCK_ICE_NATURAL";"0.1016";"0.1016";"0.1016";"0.1016";"18";"930";"ICEI";"1";"1";"N/A";"0";"0";"4";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"ICE,NATURAL,COLD" -#"147";"147";"147";"BLOCK_ICE_CLEAR_MAGICAL";"0.1252";"0.1252";"0.1252";"0.1252";"42";"3720";"ICEX";"1";"1";"N/A";"0";"0";"4";"0.0744";"0.1252";"0.2268";"0.0000";"N/A";"N/A";"0.0";"ICE,COLD" +"144";"144";"144";"BLOCK_SNOW";"0.1252";"0.1252";"0.1252";"0.1252";"12";"500";"SNOW";"1";"1";"N/A";"0";"4";"16";"0.0000";"0.0000";"0.0000";"0.0000";"0.0";"SNOW,NATURAL,COLD" +"145";"N/A";"N/A";"BLOCK_ICE_FRAGILE";"0.0508";"0.0508";"0.0508";"0.0508";"5";"930";"ICEI";"1";"0";"N/A";"0";"0";"4";"0.0000";"0.0000";"0.0000";"0.0000";"0.0";"ICE,NATURAL,FRAGILE,COLD" +#"146";"146";"146";"BLOCK_ICE_NATURAL";"0.1016";"0.1016";"0.1016";"0.1016";"18";"930";"ICEI";"1";"1";"N/A";"0";"0";"4";"0.0000";"0.0000";"0.0000";"0.0000";"0.0";"ICE,NATURAL,COLD" +#"147";"147";"147";"BLOCK_ICE_CLEAR_MAGICAL";"0.1252";"0.1252";"0.1252";"0.1252";"42";"3720";"ICEX";"1";"1";"N/A";"0";"0";"4";"0.0744";"0.1252";"0.2268";"0.0000";"0.0";"ICE,COLD" # molten rocks -"148";"148";"148";"BLOCK_GLASS_CRUDE";"0.0876";"0.0424";"0.0876";"0.1252";"5";"2500";"GLAS";"1";"1";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"GLASS,NORANDTILE" -"149";"149";"149";"BLOCK_GLASS_CLEAN";"0.0424";"0.0424";"0.0424";"0.0636";"5";"2203";"GLAS";"1";"1";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"GLASS,NORANDTILE" +"148";"148";"148";"BLOCK_GLASS_CRUDE";"0.0876";"0.0424";"0.0876";"0.1252";"5";"2500";"GLAS";"1";"1";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"0.0";"GLASS,NORANDTILE" +"149";"149";"149";"BLOCK_GLASS_CLEAN";"0.0424";"0.0424";"0.0424";"0.0636";"5";"2203";"GLAS";"1";"1";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"0.0";"GLASS,NORANDTILE" # platforms -"160";"160";"160";"BLOCK_PLATFORM_STONE";"0.0312";"0.0312";"0.0312";"0.0312";"5";"2400";"ROCK";"0";"0";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"PLATFORM," -"161";"161";"161";"BLOCK_PLATFORM_WOODEN";"0.0312";"0.0312";"0.0312";"0.0312";"5";"740";"WOOD";"0";"0";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"PLATFORM,WOODEN" -"162";"162";"162";"BLOCK_PLATFORM_EBONY";"0.0312";"0.0312";"0.0312";"0.0312";"5";"1200";"WOOD";"0";"0";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"PLATFORM,WOODEN" -"163";"163";"163";"BLOCK_PLATFORM_BIRCH";"0.0312";"0.0312";"0.0312";"0.0312";"5";"670";"WOOD";"0";"0";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"PLATFORM,WOODEN" -"164";"164";"164";"BLOCK_PLATFORM_ROSEWOOD";"0.0312";"0.0312";"0.0312";"0.0312";"5";"900";"WOOD";"0";"0";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"PLATFORM,WOODEN" +"160";"160";"160";"BLOCK_PLATFORM_STONE";"0.0312";"0.0312";"0.0312";"0.0312";"5";"2400";"ROCK";"0";"0";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"0.0";"PLATFORM," +"161";"161";"161";"BLOCK_PLATFORM_WOODEN";"0.0312";"0.0312";"0.0312";"0.0312";"5";"740";"WOOD";"0";"0";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"0.0";"PLATFORM,WOODEN" +"162";"162";"162";"BLOCK_PLATFORM_EBONY";"0.0312";"0.0312";"0.0312";"0.0312";"5";"1200";"WOOD";"0";"0";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"0.0";"PLATFORM,WOODEN" +"163";"163";"163";"BLOCK_PLATFORM_BIRCH";"0.0312";"0.0312";"0.0312";"0.0312";"5";"670";"WOOD";"0";"0";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"0.0";"PLATFORM,WOODEN" +"164";"164";"164";"BLOCK_PLATFORM_ROSEWOOD";"0.0312";"0.0312";"0.0312";"0.0312";"5";"900";"WOOD";"0";"0";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"0.0";"PLATFORM,WOODEN" # lights -"176";"item@basegame:33";"item@basegame:33";"BLOCK_TORCH";"0.0312";"0.0312";"0.0312";"0.0312";"1";"800";"FXTR";"0";"0";"N/A";"1";"0";"16";"1.0000";"0.6372";"0.0000";"0.0000";"N/A";"N/A";"0.0";"LIGHT,WOODEN" -#"177";"177";"177";"BLOCK_TORCH_FROST";"0.0312";"0.0312";"0.0312";"0.0312";"1";"1100";"FXTR";"0";"0";"N/A";"1";"0";"16";"0.3048";"0.4848";"1.0000";"0.0000";"N/A";"N/A";"0.0";"LIGHT,WOODEN" -"192";"item@basegame:33";"item@basegame:33";"BLOCK_TORCH";"0.0312";"0.0312";"0.0312";"0.0312";"1";"800";"FXTR";"0";"0";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"LIGHT,UNLIT,INTERNAL,WOODEN" -#"193";"177";"177";"BLOCK_TORCH_FROST";"0.0312";"0.0312";"0.0312";"0.0312";"1";"1100";"FXTR";"0";"0";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"LIGHT,UNLIT,INTERNAL,WOODEN" -"208";"208";"208";"BLOCK_ILLUMINATOR_WHITE";"0.0312";"0.0312";"0.0312";"0.0312";"1";"2500";"GLAS";"1";"1";"N/A";"0";"0";"16";"0.9270";"0.9414";"0.8519";"0.0000";"N/A";"N/A";"0.0";"LIGHT,NORANDTILE" -"209";"209";"209";"BLOCK_ILLUMINATOR_YELLOW";"0.0312";"0.0312";"0.0312";"0.0312";"1";"2500";"GLAS";"1";"1";"N/A";"0";"0";"16";"1.0000";"0.8408";"0.0000";"0.0000";"N/A";"N/A";"0.0";"LIGHT,NORANDTILE" -"210";"210";"210";"BLOCK_ILLUMINATOR_ORANGE";"0.0312";"0.0312";"0.0312";"0.0312";"1";"2500";"GLAS";"1";"1";"N/A";"0";"0";"16";"1.0000";"0.5294";"0.0000";"0.0000";"N/A";"N/A";"0.0";"LIGHT,NORANDTILE" -"211";"211";"211";"BLOCK_ILLUMINATOR_RED";"0.0312";"0.0312";"0.0312";"0.0312";"1";"2500";"GLAS";"1";"1";"N/A";"0";"0";"16";"0.9188";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"LIGHT,NORANDTILE" -"212";"212";"212";"BLOCK_ILLUMINATOR_FUCHSIA";"0.0312";"0.0312";"0.0312";"0.0312";"1";"2500";"GLAS";"1";"1";"N/A";"0";"0";"16";"0.9188";"0.0000";"0.7156";"0.0000";"N/A";"N/A";"0.0";"LIGHT,NORANDTILE" -"213";"213";"213";"BLOCK_ILLUMINATOR_PURPLE";"0.0312";"0.0312";"0.0312";"0.0312";"1";"2500";"GLAS";"1";"1";"N/A";"0";"0";"16";"0.7156";"0.0000";"0.9188";"0.0000";"N/A";"N/A";"0.0";"LIGHT,NORANDTILE" -"214";"214";"214";"BLOCK_ILLUMINATOR_BLUE";"0.0312";"0.0312";"0.0312";"0.0312";"1";"2500";"GLAS";"1";"1";"N/A";"0";"0";"16";"0.0000";"0.1996";"0.9188";"0.0000";"N/A";"N/A";"0.0";"LIGHT,NORANDTILE" -"215";"215";"215";"BLOCK_ILLUMINATOR_CYAN";"0.0312";"0.0312";"0.0312";"0.0312";"1";"2500";"GLAS";"1";"1";"N/A";"0";"0";"16";"0.4621";"1.4188";"1.2368";"0.0000";"N/A";"N/A";"0.0";"LIGHT,NORANDTILE" -"216";"216";"216";"BLOCK_ILLUMINATOR_GREEN";"0.0312";"0.0312";"0.0312";"0.0312";"1";"2500";"GLAS";"1";"1";"N/A";"0";"0";"16";"0.2112";"1.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"LIGHT,NORANDTILE" -"217";"217";"217";"BLOCK_ILLUMINATOR_GREEN_DARK";"0.0312";"0.0312";"0.0312";"0.0312";"1";"2500";"GLAS";"1";"1";"N/A";"0";"0";"16";"0.1252";"0.4068";"0.0000";"0.0000";"N/A";"N/A";"0.0";"LIGHT,NORANDTILE" -"218";"218";"218";"BLOCK_ILLUMINATOR_BROWN";"0.0312";"0.0312";"0.0312";"0.0312";"1";"2500";"GLAS";"1";"1";"N/A";"0";"0";"16";"0.3324";"0.1252";"0.0000";"0.0000";"N/A";"N/A";"0.0";"LIGHT,NORANDTILE" -"219";"219";"219";"BLOCK_ILLUMINATOR_TAN";"0.0312";"0.0312";"0.0312";"0.0312";"1";"2500";"GLAS";"1";"1";"N/A";"0";"0";"16";"0.5864";"0.4068";"0.2032";"0.0000";"N/A";"N/A";"0.0";"LIGHT,NORANDTILE" -"220";"220";"220";"BLOCK_ILLUMINATOR_GREY_LIGHT";"0.0312";"0.0312";"0.0312";"0.0312";"1";"2500";"GLAS";"1";"1";"N/A";"0";"0";"16";"0.7392";"0.7392";"0.7392";"0.0000";"N/A";"N/A";"0.0";"LIGHT,NORANDTILE" -"221";"221";"221";"BLOCK_ILLUMINATOR_GREY_MED";"0.0312";"0.0312";"0.0312";"0.0312";"1";"2500";"GLAS";"1";"1";"N/A";"0";"0";"16";"0.4576";"0.4576";"0.4576";"0.0000";"N/A";"N/A";"0.0";"LIGHT,NORANDTILE" -"222";"222";"222";"BLOCK_ILLUMINATOR_GREY_DARK";"0.0312";"0.0312";"0.0312";"0.0312";"1";"2500";"GLAS";"1";"1";"N/A";"0";"0";"16";"0.2540";"0.2540";"0.2540";"0.0000";"N/A";"N/A";"0.0";"LIGHT,NORANDTILE" -"223";"223";"223";"BLOCK_ILLUMINATOR_BLACK";"0.0312";"0.0312";"0.0312";"0.0312";"1";"2500";"GLAS";"1";"1";"N/A";"0";"0";"16";"0.2140";"0.0000";"0.4932";"3.7499";"N/A";"N/A";"0.0";"LIGHT,NORANDTILE" -"224";"208";"208";"BLOCK_ILLUMINATOR_WHITE";"0.1252";"0.1252";"0.1252";"0.1252";"1";"2500";"GLAS";"1";"1";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"LIGHT,UNLIT,INTERNAL,NORANDTILE" -"225";"209";"209";"BLOCK_ILLUMINATOR_YELLOW";"0.1252";"0.1252";"0.1252";"0.1252";"1";"2500";"GLAS";"1";"1";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"LIGHT,UNLIT,INTERNAL,NORANDTILE" -"226";"210";"210";"BLOCK_ILLUMINATOR_ORANGE";"0.1252";"0.1252";"0.1252";"0.1252";"1";"2500";"GLAS";"1";"1";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"LIGHT,UNLIT,INTERNAL,NORANDTILE" -"227";"211";"211";"BLOCK_ILLUMINATOR_RED";"0.1252";"0.1252";"0.1252";"0.1252";"1";"2500";"GLAS";"1";"1";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"LIGHT,UNLIT,INTERNAL,NORANDTILE" -"228";"212";"212";"BLOCK_ILLUMINATOR_FUCHSIA";"0.1252";"0.1252";"0.1252";"0.1252";"1";"2500";"GLAS";"1";"1";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"LIGHT,UNLIT,INTERNAL,NORANDTILE" -"229";"213";"213";"BLOCK_ILLUMINATOR_PURPLE";"0.1252";"0.1252";"0.1252";"0.1252";"1";"2500";"GLAS";"1";"1";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"LIGHT,UNLIT,INTERNAL,NORANDTILE" -"230";"214";"214";"BLOCK_ILLUMINATOR_BLUE";"0.1252";"0.1252";"0.1252";"0.1252";"1";"2500";"GLAS";"1";"1";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"LIGHT,UNLIT,INTERNAL,NORANDTILE" -"231";"215";"215";"BLOCK_ILLUMINATOR_CYAN";"0.1252";"0.1252";"0.1252";"0.1252";"1";"2500";"GLAS";"1";"1";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"LIGHT,UNLIT,INTERNAL,NORANDTILE" -"232";"216";"216";"BLOCK_ILLUMINATOR_GREEN";"0.1252";"0.1252";"0.1252";"0.1252";"1";"2500";"GLAS";"1";"1";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"LIGHT,UNLIT,INTERNAL,NORANDTILE" -"233";"217";"217";"BLOCK_ILLUMINATOR_GREEN_DARK";"0.1252";"0.1252";"0.1252";"0.1252";"1";"2500";"GLAS";"1";"1";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"LIGHT,UNLIT,INTERNAL,NORANDTILE" -"234";"218";"218";"BLOCK_ILLUMINATOR_BROWN";"0.1252";"0.1252";"0.1252";"0.1252";"1";"2500";"GLAS";"1";"1";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"LIGHT,UNLIT,INTERNAL,NORANDTILE" -"235";"219";"219";"BLOCK_ILLUMINATOR_TAN";"0.1252";"0.1252";"0.1252";"0.1252";"1";"2500";"GLAS";"1";"1";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"LIGHT,UNLIT,INTERNAL,NORANDTILE" -"236";"220";"220";"BLOCK_ILLUMINATOR_GREY_LIGHT";"0.1252";"0.1252";"0.1252";"0.1252";"1";"2500";"GLAS";"1";"1";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"LIGHT,UNLIT,INTERNAL,NORANDTILE" -"237";"221";"221";"BLOCK_ILLUMINATOR_GREY_MED";"0.1252";"0.1252";"0.1252";"0.1252";"1";"2500";"GLAS";"1";"1";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"LIGHT,UNLIT,INTERNAL,NORANDTILE" -"238";"222";"222";"BLOCK_ILLUMINATOR_GREY_DARK";"0.1252";"0.1252";"0.1252";"0.1252";"1";"2500";"GLAS";"1";"1";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"LIGHT,UNLIT,INTERNAL,NORANDTILE" -"239";"223";"223";"BLOCK_ILLUMINATOR_BLACK";"0.1252";"0.1252";"0.1252";"0.1252";"1";"2500";"GLAS";"1";"1";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"LIGHT,UNLIT,INTERNAL,NORANDTILE" +"176";"item@basegame:33";"item@basegame:33";"BLOCK_TORCH";"0.0312";"0.0312";"0.0312";"0.0312";"1";"800";"FXTR";"0";"0";"N/A";"1";"0";"16";"1.0000";"0.6372";"0.0000";"0.0000";"0.0";"LIGHT,WOODEN" +#"177";"177";"177";"BLOCK_TORCH_FROST";"0.0312";"0.0312";"0.0312";"0.0312";"1";"1100";"FXTR";"0";"0";"N/A";"1";"0";"16";"0.3048";"0.4848";"1.0000";"0.0000";"0.0";"LIGHT,WOODEN" +"192";"item@basegame:33";"item@basegame:33";"BLOCK_TORCH";"0.0312";"0.0312";"0.0312";"0.0312";"1";"800";"FXTR";"0";"0";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"0.0";"LIGHT,UNLIT,INTERNAL,WOODEN" +#"193";"177";"177";"BLOCK_TORCH_FROST";"0.0312";"0.0312";"0.0312";"0.0312";"1";"1100";"FXTR";"0";"0";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"0.0";"LIGHT,UNLIT,INTERNAL,WOODEN" +"208";"208";"208";"BLOCK_ILLUMINATOR_WHITE";"0.0312";"0.0312";"0.0312";"0.0312";"1";"2500";"GLAS";"1";"1";"N/A";"0";"0";"16";"0.9270";"0.9414";"0.8519";"0.0000";"0.0";"LIGHT,NORANDTILE" +"209";"209";"209";"BLOCK_ILLUMINATOR_YELLOW";"0.0312";"0.0312";"0.0312";"0.0312";"1";"2500";"GLAS";"1";"1";"N/A";"0";"0";"16";"1.0000";"0.8408";"0.0000";"0.0000";"0.0";"LIGHT,NORANDTILE" +"210";"210";"210";"BLOCK_ILLUMINATOR_ORANGE";"0.0312";"0.0312";"0.0312";"0.0312";"1";"2500";"GLAS";"1";"1";"N/A";"0";"0";"16";"1.0000";"0.5294";"0.0000";"0.0000";"0.0";"LIGHT,NORANDTILE" +"211";"211";"211";"BLOCK_ILLUMINATOR_RED";"0.0312";"0.0312";"0.0312";"0.0312";"1";"2500";"GLAS";"1";"1";"N/A";"0";"0";"16";"0.9188";"0.0000";"0.0000";"0.0000";"0.0";"LIGHT,NORANDTILE" +"212";"212";"212";"BLOCK_ILLUMINATOR_FUCHSIA";"0.0312";"0.0312";"0.0312";"0.0312";"1";"2500";"GLAS";"1";"1";"N/A";"0";"0";"16";"0.9188";"0.0000";"0.7156";"0.0000";"0.0";"LIGHT,NORANDTILE" +"213";"213";"213";"BLOCK_ILLUMINATOR_PURPLE";"0.0312";"0.0312";"0.0312";"0.0312";"1";"2500";"GLAS";"1";"1";"N/A";"0";"0";"16";"0.7156";"0.0000";"0.9188";"0.0000";"0.0";"LIGHT,NORANDTILE" +"214";"214";"214";"BLOCK_ILLUMINATOR_BLUE";"0.0312";"0.0312";"0.0312";"0.0312";"1";"2500";"GLAS";"1";"1";"N/A";"0";"0";"16";"0.0000";"0.1996";"0.9188";"0.0000";"0.0";"LIGHT,NORANDTILE" +"215";"215";"215";"BLOCK_ILLUMINATOR_CYAN";"0.0312";"0.0312";"0.0312";"0.0312";"1";"2500";"GLAS";"1";"1";"N/A";"0";"0";"16";"0.4621";"1.4188";"1.2368";"0.0000";"0.0";"LIGHT,NORANDTILE" +"216";"216";"216";"BLOCK_ILLUMINATOR_GREEN";"0.0312";"0.0312";"0.0312";"0.0312";"1";"2500";"GLAS";"1";"1";"N/A";"0";"0";"16";"0.2112";"1.0000";"0.0000";"0.0000";"0.0";"LIGHT,NORANDTILE" +"217";"217";"217";"BLOCK_ILLUMINATOR_GREEN_DARK";"0.0312";"0.0312";"0.0312";"0.0312";"1";"2500";"GLAS";"1";"1";"N/A";"0";"0";"16";"0.1252";"0.4068";"0.0000";"0.0000";"0.0";"LIGHT,NORANDTILE" +"218";"218";"218";"BLOCK_ILLUMINATOR_BROWN";"0.0312";"0.0312";"0.0312";"0.0312";"1";"2500";"GLAS";"1";"1";"N/A";"0";"0";"16";"0.3324";"0.1252";"0.0000";"0.0000";"0.0";"LIGHT,NORANDTILE" +"219";"219";"219";"BLOCK_ILLUMINATOR_TAN";"0.0312";"0.0312";"0.0312";"0.0312";"1";"2500";"GLAS";"1";"1";"N/A";"0";"0";"16";"0.5864";"0.4068";"0.2032";"0.0000";"0.0";"LIGHT,NORANDTILE" +"220";"220";"220";"BLOCK_ILLUMINATOR_GREY_LIGHT";"0.0312";"0.0312";"0.0312";"0.0312";"1";"2500";"GLAS";"1";"1";"N/A";"0";"0";"16";"0.7392";"0.7392";"0.7392";"0.0000";"0.0";"LIGHT,NORANDTILE" +"221";"221";"221";"BLOCK_ILLUMINATOR_GREY_MED";"0.0312";"0.0312";"0.0312";"0.0312";"1";"2500";"GLAS";"1";"1";"N/A";"0";"0";"16";"0.4576";"0.4576";"0.4576";"0.0000";"0.0";"LIGHT,NORANDTILE" +"222";"222";"222";"BLOCK_ILLUMINATOR_GREY_DARK";"0.0312";"0.0312";"0.0312";"0.0312";"1";"2500";"GLAS";"1";"1";"N/A";"0";"0";"16";"0.2540";"0.2540";"0.2540";"0.0000";"0.0";"LIGHT,NORANDTILE" +"223";"223";"223";"BLOCK_ILLUMINATOR_BLACK";"0.0312";"0.0312";"0.0312";"0.0312";"1";"2500";"GLAS";"1";"1";"N/A";"0";"0";"16";"0.2140";"0.0000";"0.4932";"3.7499";"0.0";"LIGHT,NORANDTILE" +"224";"208";"208";"BLOCK_ILLUMINATOR_WHITE";"0.1252";"0.1252";"0.1252";"0.1252";"1";"2500";"GLAS";"1";"1";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"0.0";"LIGHT,UNLIT,INTERNAL,NORANDTILE" +"225";"209";"209";"BLOCK_ILLUMINATOR_YELLOW";"0.1252";"0.1252";"0.1252";"0.1252";"1";"2500";"GLAS";"1";"1";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"0.0";"LIGHT,UNLIT,INTERNAL,NORANDTILE" +"226";"210";"210";"BLOCK_ILLUMINATOR_ORANGE";"0.1252";"0.1252";"0.1252";"0.1252";"1";"2500";"GLAS";"1";"1";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"0.0";"LIGHT,UNLIT,INTERNAL,NORANDTILE" +"227";"211";"211";"BLOCK_ILLUMINATOR_RED";"0.1252";"0.1252";"0.1252";"0.1252";"1";"2500";"GLAS";"1";"1";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"0.0";"LIGHT,UNLIT,INTERNAL,NORANDTILE" +"228";"212";"212";"BLOCK_ILLUMINATOR_FUCHSIA";"0.1252";"0.1252";"0.1252";"0.1252";"1";"2500";"GLAS";"1";"1";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"0.0";"LIGHT,UNLIT,INTERNAL,NORANDTILE" +"229";"213";"213";"BLOCK_ILLUMINATOR_PURPLE";"0.1252";"0.1252";"0.1252";"0.1252";"1";"2500";"GLAS";"1";"1";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"0.0";"LIGHT,UNLIT,INTERNAL,NORANDTILE" +"230";"214";"214";"BLOCK_ILLUMINATOR_BLUE";"0.1252";"0.1252";"0.1252";"0.1252";"1";"2500";"GLAS";"1";"1";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"0.0";"LIGHT,UNLIT,INTERNAL,NORANDTILE" +"231";"215";"215";"BLOCK_ILLUMINATOR_CYAN";"0.1252";"0.1252";"0.1252";"0.1252";"1";"2500";"GLAS";"1";"1";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"0.0";"LIGHT,UNLIT,INTERNAL,NORANDTILE" +"232";"216";"216";"BLOCK_ILLUMINATOR_GREEN";"0.1252";"0.1252";"0.1252";"0.1252";"1";"2500";"GLAS";"1";"1";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"0.0";"LIGHT,UNLIT,INTERNAL,NORANDTILE" +"233";"217";"217";"BLOCK_ILLUMINATOR_GREEN_DARK";"0.1252";"0.1252";"0.1252";"0.1252";"1";"2500";"GLAS";"1";"1";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"0.0";"LIGHT,UNLIT,INTERNAL,NORANDTILE" +"234";"218";"218";"BLOCK_ILLUMINATOR_BROWN";"0.1252";"0.1252";"0.1252";"0.1252";"1";"2500";"GLAS";"1";"1";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"0.0";"LIGHT,UNLIT,INTERNAL,NORANDTILE" +"235";"219";"219";"BLOCK_ILLUMINATOR_TAN";"0.1252";"0.1252";"0.1252";"0.1252";"1";"2500";"GLAS";"1";"1";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"0.0";"LIGHT,UNLIT,INTERNAL,NORANDTILE" +"236";"220";"220";"BLOCK_ILLUMINATOR_GREY_LIGHT";"0.1252";"0.1252";"0.1252";"0.1252";"1";"2500";"GLAS";"1";"1";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"0.0";"LIGHT,UNLIT,INTERNAL,NORANDTILE" +"237";"221";"221";"BLOCK_ILLUMINATOR_GREY_MED";"0.1252";"0.1252";"0.1252";"0.1252";"1";"2500";"GLAS";"1";"1";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"0.0";"LIGHT,UNLIT,INTERNAL,NORANDTILE" +"238";"222";"222";"BLOCK_ILLUMINATOR_GREY_DARK";"0.1252";"0.1252";"0.1252";"0.1252";"1";"2500";"GLAS";"1";"1";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"0.0";"LIGHT,UNLIT,INTERNAL,NORANDTILE" +"239";"223";"223";"BLOCK_ILLUMINATOR_BLACK";"0.1252";"0.1252";"0.1252";"0.1252";"1";"2500";"GLAS";"1";"1";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"0.0";"LIGHT,UNLIT,INTERNAL,NORANDTILE" # sandstone -"240";"240";"240";"BLOCK_SANDSTONE";"0.1252";"0.1252";"0.1252";"0.1252";"48";"1900";"ROCK";"1";"1";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.06";"STONE,NORANDTILE" -"241";"241";"241";"BLOCK_SANDSTONE_WHITE";"0.1252";"0.1252";"0.1252";"0.1252";"48";"1900";"ROCK";"1";"1";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.06";"STONE,NORANDTILE" -"242";"242";"242";"BLOCK_SANDSTONE_RED";"0.1252";"0.1252";"0.1252";"0.1252";"48";"1900";"ROCK";"1";"1";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.06";"STONE,NORANDTILE" -"243";"243";"243";"BLOCK_SANDSTONE_DESERT";"0.1252";"0.1252";"0.1252";"0.1252";"48";"1900";"ROCK";"1";"1";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.06";"STONE,NORANDTILE" -"244";"244";"244";"BLOCK_SANDSTONE_BLACK";"0.1252";"0.1252";"0.1252";"0.1252";"48";"1900";"ROCK";"1";"1";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.06";"STONE,NORANDTILE" -"245";"245";"245";"BLOCK_SANDSTONE_GREEN";"0.1252";"0.1252";"0.1252";"0.1252";"48";"1900";"ROCK";"1";"1";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.06";"STONE,NORANDTILE" +"240";"240";"240";"BLOCK_SANDSTONE";"0.1252";"0.1252";"0.1252";"0.1252";"48";"1900";"ROCK";"1";"1";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"0.06";"STONE,NORANDTILE" +"241";"241";"241";"BLOCK_SANDSTONE_WHITE";"0.1252";"0.1252";"0.1252";"0.1252";"48";"1900";"ROCK";"1";"1";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"0.06";"STONE,NORANDTILE" +"242";"242";"242";"BLOCK_SANDSTONE_RED";"0.1252";"0.1252";"0.1252";"0.1252";"48";"1900";"ROCK";"1";"1";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"0.06";"STONE,NORANDTILE" +"243";"243";"243";"BLOCK_SANDSTONE_DESERT";"0.1252";"0.1252";"0.1252";"0.1252";"48";"1900";"ROCK";"1";"1";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"0.06";"STONE,NORANDTILE" +"244";"244";"244";"BLOCK_SANDSTONE_BLACK";"0.1252";"0.1252";"0.1252";"0.1252";"48";"1900";"ROCK";"1";"1";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"0.06";"STONE,NORANDTILE" +"245";"245";"245";"BLOCK_SANDSTONE_GREEN";"0.1252";"0.1252";"0.1252";"0.1252";"48";"1900";"ROCK";"1";"1";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"0.06";"STONE,NORANDTILE" # more lights -"256";"256";"256";"BLOCK_LANTERN";"0.0312";"0.0312";"0.0312";"0.0312";"1";"1800";"FXTR";"0";"0";"N/A";"0";"0";"16";"1.0000";"0.6372";"0.0000";"0.0000";"N/A";"N/A";"0.0";"LIGHT,NORANDTILE" -"257";"257";"257";"BLOCK_SUNSTONE";"0.1252";"0.1252";"0.1252";"0.1252";"1";"2500";"ROCK";"1";"0";"N/A";"2";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"LIGHT,NORANDTILE" -"258";"258";"258";"BLOCK_DAYLIGHT_CAPACITOR";"0.1252";"0.1252";"0.1252";"0.1252";"1";"2500";"GLAS";"1";"0";"N/A";"3";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"LIGHT,NORANDTILE" +"256";"256";"256";"BLOCK_LANTERN";"0.0312";"0.0312";"0.0312";"0.0312";"1";"1800";"FXTR";"0";"0";"N/A";"0";"0";"16";"1.0000";"0.6372";"0.0000";"0.0000";"0.0";"LIGHT,NORANDTILE" +"257";"257";"257";"BLOCK_SUNSTONE";"0.1252";"0.1252";"0.1252";"0.1252";"1";"2500";"ROCK";"1";"0";"N/A";"2";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"0.0";"LIGHT,NORANDTILE" +"258";"258";"258";"BLOCK_DAYLIGHT_CAPACITOR";"0.1252";"0.1252";"0.1252";"0.1252";"1";"2500";"GLAS";"1";"0";"N/A";"3";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"0.0";"LIGHT,NORANDTILE" # more platforms -"272";"272";"272";"BLOCK_SCAFFOLDING_NORMAL";"0.0312";"0.0312";"0.0312";"0.0312";"1";"740";"WOOD";"0";"0";"6";"0";"0";"16";"0.0";"0.0";"0.0";"0.0";"N/A";"N/A";"0.0";"PLATFORM,SCAFFOLDING,NORANDTILE,WOODEN" -"273";"273";"273";"BLOCK_SCAFFOLDING_EBONY";"0.0312";"0.0312";"0.0312";"0.0312";"1";"1400";"WOOD";"0";"0";"6";"0";"0";"16";"0.0";"0.0";"0.0";"0.0";"N/A";"N/A";"0.0";"PLATFORM,SCAFFOLDING,NORANDTILE,WOODEN" -"274";"274";"274";"BLOCK_SCAFFOLDING_BIRCH";"0.0312";"0.0312";"0.0312";"0.0312";"1";"670";"WOOD";"0";"0";"6";"0";"0";"16";"0.0";"0.0";"0.0";"0.0";"N/A";"N/A";"0.0";"PLATFORM,SCAFFOLDING,NORANDTILE,WOODEN" -"275";"275";"275";"BLOCK_SCAFFOLDING_ROSEWOOD";"0.0312";"0.0312";"0.0312";"0.0312";"1";"900";"WOOD";"0";"0";"6";"0";"0";"16";"0.0";"0.0";"0.0";"0.0";"N/A";"N/A";"0.0";"PLATFORM,SCAFFOLDING,NORANDTILE,WOODEN" +"272";"272";"272";"BLOCK_SCAFFOLDING_NORMAL";"0.0312";"0.0312";"0.0312";"0.0312";"1";"740";"WOOD";"0";"0";"6";"0";"0";"16";"0.0";"0.0";"0.0";"0.0";"0.0";"PLATFORM,SCAFFOLDING,NORANDTILE,WOODEN" +"273";"273";"273";"BLOCK_SCAFFOLDING_EBONY";"0.0312";"0.0312";"0.0312";"0.0312";"1";"1400";"WOOD";"0";"0";"6";"0";"0";"16";"0.0";"0.0";"0.0";"0.0";"0.0";"PLATFORM,SCAFFOLDING,NORANDTILE,WOODEN" +"274";"274";"274";"BLOCK_SCAFFOLDING_BIRCH";"0.0312";"0.0312";"0.0312";"0.0312";"1";"670";"WOOD";"0";"0";"6";"0";"0";"16";"0.0";"0.0";"0.0";"0.0";"0.0";"PLATFORM,SCAFFOLDING,NORANDTILE,WOODEN" +"275";"275";"275";"BLOCK_SCAFFOLDING_ROSEWOOD";"0.0312";"0.0312";"0.0312";"0.0312";"1";"900";"WOOD";"0";"0";"6";"0";"0";"16";"0.0";"0.0";"0.0";"0.0";"0.0";"PLATFORM,SCAFFOLDING,NORANDTILE,WOODEN" # for future use -"288";"288";"288";"BLOCK_PLASTIC_WHITE"; "0.0903";"0.0903";"0.0903";"0.1752";"36";"660";"PLST";"1";"1";"N/A";"0";"0";"16";"0";"0";"0";"0";"N/A";"N/A";"0.06";"THERMOPLASTIC,NORANDTILE" -"289";"289";"289";"BLOCK_PLASTIC_YELLOW"; "0.0894";"0.0919";"0.1234";"0.1752";"36";"660";"PLST";"1";"1";"N/A";"0";"0";"16";"0";"0";"0";"0";"N/A";"N/A";"0.06";"THERMOPLASTIC,NORANDTILE" -"290";"290";"290";"BLOCK_PLASTIC_ORANGE"; "0.0892";"0.0981";"0.1240";"0.1752";"36";"660";"PLST";"1";"1";"N/A";"0";"0";"16";"0";"0";"0";"0";"N/A";"N/A";"0.06";"THERMOPLASTIC,NORANDTILE" -"291";"291";"291";"BLOCK_PLASTIC_RED"; "0.0905";"0.1230";"0.1245";"0.1752";"36";"660";"PLST";"1";"1";"N/A";"0";"0";"16";"0";"0";"0";"0";"N/A";"N/A";"0.06";"THERMOPLASTIC,NORANDTILE" -"292";"292";"292";"BLOCK_PLASTIC_FUCHSIA"; "0.0905";"0.1237";"0.0941";"0.1752";"36";"660";"PLST";"1";"1";"N/A";"0";"0";"16";"0";"0";"0";"0";"N/A";"N/A";"0.06";"THERMOPLASTIC,NORANDTILE" -"293";"293";"293";"BLOCK_PLASTIC_PURPLE"; "0.0941";"0.1234";"0.0905";"0.1752";"36";"660";"PLST";"1";"1";"N/A";"0";"0";"16";"0";"0";"0";"0";"N/A";"N/A";"0.06";"THERMOPLASTIC,NORANDTILE" -"294";"294";"294";"BLOCK_PLASTIC_BLUE"; "0.1218";"0.1078";"0.0905";"0.1752";"36";"660";"PLST";"1";"1";"N/A";"0";"0";"16";"0";"0";"0";"0";"N/A";"N/A";"0.06";"THERMOPLASTIC,NORANDTILE" -"295";"295";"295";"BLOCK_PLASTIC_CYAN"; "0.1032";"0.0892";"0.0914";"0.1752";"36";"660";"PLST";"1";"1";"N/A";"0";"0";"16";"0";"0";"0";"0";"N/A";"N/A";"0.06";"THERMOPLASTIC,NORANDTILE" -"296";"296";"296";"BLOCK_PLASTIC_GREEN"; "0.1078";"0.0892";"0.1231";"0.1752";"36";"660";"PLST";"1";"1";"N/A";"0";"0";"16";"0";"0";"0";"0";"N/A";"N/A";"0.06";"THERMOPLASTIC,NORANDTILE" -"297";"297";"297";"BLOCK_PLASTIC_GREEN_DARK"; "0.1109";"0.1010";"0.1240";"0.1752";"36";"660";"PLST";"1";"1";"N/A";"0";"0";"16";"0";"0";"0";"0";"N/A";"N/A";"0.06";"THERMOPLASTIC,NORANDTILE" -"298";"298";"298";"BLOCK_PLASTIC_BROWN"; "0.1032";"0.1109";"0.1245";"0.1752";"36";"660";"PLST";"1";"1";"N/A";"0";"0";"16";"0";"0";"0";"0";"N/A";"N/A";"0.06";"THERMOPLASTIC,NORANDTILE" -"299";"299";"299";"BLOCK_PLASTIC_TAN"; "0.0967";"0.1010";"0.1078";"0.1752";"36";"660";"PLST";"1";"1";"N/A";"0";"0";"16";"0";"0";"0";"0";"N/A";"N/A";"0.06";"THERMOPLASTIC,NORANDTILE" -"300";"300";"300";"BLOCK_PLASTIC_GREY_LIGHT"; "0.0938";"0.0938";"0.0938";"0.1752";"36";"660";"PLST";"1";"1";"N/A";"0";"0";"16";"0";"0";"0";"0";"N/A";"N/A";"0.06";"THERMOPLASTIC,NORANDTILE" -"301";"301";"301";"BLOCK_PLASTIC_GREY_MED"; "0.0997";"0.0997";"0.0997";"0.1752";"36";"660";"PLST";"1";"1";"N/A";"0";"0";"16";"0";"0";"0";"0";"N/A";"N/A";"0.06";"THERMOPLASTIC,NORANDTILE" -"302";"302";"302";"BLOCK_PLASTIC_GREY_DARK"; "0.1059";"0.1059";"0.1059";"0.1752";"36";"660";"PLST";"1";"1";"N/A";"0";"0";"16";"0";"0";"0";"0";"N/A";"N/A";"0.06";"THERMOPLASTIC,NORANDTILE" -"303";"303";"303";"BLOCK_PLASTIC_BLACK"; "0.1197";"0.1197";"0.1197";"0.1752";"36";"660";"PLST";"1";"1";"N/A";"0";"0";"16";"0";"0";"0";"3";"N/A";"N/A";"0.06";"THERMOPLASTIC,NORANDTILE" +"288";"288";"288";"BLOCK_PLASTIC_WHITE"; "0.0903";"0.0903";"0.0903";"0.1752";"36";"660";"PLST";"1";"1";"N/A";"0";"0";"16";"0";"0";"0";"0";"0.06";"THERMOPLASTIC,NORANDTILE" +"289";"289";"289";"BLOCK_PLASTIC_YELLOW"; "0.0894";"0.0919";"0.1234";"0.1752";"36";"660";"PLST";"1";"1";"N/A";"0";"0";"16";"0";"0";"0";"0";"0.06";"THERMOPLASTIC,NORANDTILE" +"290";"290";"290";"BLOCK_PLASTIC_ORANGE"; "0.0892";"0.0981";"0.1240";"0.1752";"36";"660";"PLST";"1";"1";"N/A";"0";"0";"16";"0";"0";"0";"0";"0.06";"THERMOPLASTIC,NORANDTILE" +"291";"291";"291";"BLOCK_PLASTIC_RED"; "0.0905";"0.1230";"0.1245";"0.1752";"36";"660";"PLST";"1";"1";"N/A";"0";"0";"16";"0";"0";"0";"0";"0.06";"THERMOPLASTIC,NORANDTILE" +"292";"292";"292";"BLOCK_PLASTIC_FUCHSIA"; "0.0905";"0.1237";"0.0941";"0.1752";"36";"660";"PLST";"1";"1";"N/A";"0";"0";"16";"0";"0";"0";"0";"0.06";"THERMOPLASTIC,NORANDTILE" +"293";"293";"293";"BLOCK_PLASTIC_PURPLE"; "0.0941";"0.1234";"0.0905";"0.1752";"36";"660";"PLST";"1";"1";"N/A";"0";"0";"16";"0";"0";"0";"0";"0.06";"THERMOPLASTIC,NORANDTILE" +"294";"294";"294";"BLOCK_PLASTIC_BLUE"; "0.1218";"0.1078";"0.0905";"0.1752";"36";"660";"PLST";"1";"1";"N/A";"0";"0";"16";"0";"0";"0";"0";"0.06";"THERMOPLASTIC,NORANDTILE" +"295";"295";"295";"BLOCK_PLASTIC_CYAN"; "0.1032";"0.0892";"0.0914";"0.1752";"36";"660";"PLST";"1";"1";"N/A";"0";"0";"16";"0";"0";"0";"0";"0.06";"THERMOPLASTIC,NORANDTILE" +"296";"296";"296";"BLOCK_PLASTIC_GREEN"; "0.1078";"0.0892";"0.1231";"0.1752";"36";"660";"PLST";"1";"1";"N/A";"0";"0";"16";"0";"0";"0";"0";"0.06";"THERMOPLASTIC,NORANDTILE" +"297";"297";"297";"BLOCK_PLASTIC_GREEN_DARK"; "0.1109";"0.1010";"0.1240";"0.1752";"36";"660";"PLST";"1";"1";"N/A";"0";"0";"16";"0";"0";"0";"0";"0.06";"THERMOPLASTIC,NORANDTILE" +"298";"298";"298";"BLOCK_PLASTIC_BROWN"; "0.1032";"0.1109";"0.1245";"0.1752";"36";"660";"PLST";"1";"1";"N/A";"0";"0";"16";"0";"0";"0";"0";"0.06";"THERMOPLASTIC,NORANDTILE" +"299";"299";"299";"BLOCK_PLASTIC_TAN"; "0.0967";"0.1010";"0.1078";"0.1752";"36";"660";"PLST";"1";"1";"N/A";"0";"0";"16";"0";"0";"0";"0";"0.06";"THERMOPLASTIC,NORANDTILE" +"300";"300";"300";"BLOCK_PLASTIC_GREY_LIGHT"; "0.0938";"0.0938";"0.0938";"0.1752";"36";"660";"PLST";"1";"1";"N/A";"0";"0";"16";"0";"0";"0";"0";"0.06";"THERMOPLASTIC,NORANDTILE" +"301";"301";"301";"BLOCK_PLASTIC_GREY_MED"; "0.0997";"0.0997";"0.0997";"0.1752";"36";"660";"PLST";"1";"1";"N/A";"0";"0";"16";"0";"0";"0";"0";"0.06";"THERMOPLASTIC,NORANDTILE" +"302";"302";"302";"BLOCK_PLASTIC_GREY_DARK"; "0.1059";"0.1059";"0.1059";"0.1752";"36";"660";"PLST";"1";"1";"N/A";"0";"0";"16";"0";"0";"0";"0";"0.06";"THERMOPLASTIC,NORANDTILE" +"303";"303";"303";"BLOCK_PLASTIC_BLACK"; "0.1197";"0.1197";"0.1197";"0.1752";"36";"660";"PLST";"1";"1";"N/A";"0";"0";"16";"0";"0";"0";"3";"0.06";"THERMOPLASTIC,NORANDTILE" # internal -"4090";"N/A";"N/A";"ACTORBLOCK_TILING_PLACEHOLDER";"0.1252";"0.1252";"0.1252";"0.1252";"48";"2400";"ROCK";"1";"1";"N/A";"0";"4";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"INTERNAL,ACTORBLOCK,DORENDER,NORANDTILE" -"4091";"N/A";"N/A";"ACTORBLOCK_NO_COLLISION";"0.0312";"0.0312";"0.0312";"0.0312";"1";"1";"NULL";"0";"0";"N/A";"0";"0";"4";"0.0";"0.0";"0.0";"0.0";"N/A";"N/A";"0.0";"INTERNAL,ACTORBLOCK,NORANDTILE" -"4092";"N/A";"N/A";"ACTORBLOCK_FULL_COLLISION";"0.0312";"0.0312";"0.0312";"0.0312";"1";"1";"NULL";"1";"0";"N/A";"0";"0";"16";"0.0";"0.0";"0.0";"0.0";"N/A";"N/A";"0.0";"INTERNAL,ACTORBLOCK,NORANDTILE" -"4093";"N/A";"N/A";"ACTORBLOCK_ALLOW_MOVE_DOWN";"0.0312";"0.0312";"0.0312";"0.0312";"1";"1";"NULL";"0";"0";"N/A";"0";"0";"16";"0.0";"0.0";"0.0";"0.0";"N/A";"N/A";"0.0";"INTERNAL,ACTORBLOCK,PLATFORM,NORANDTILE" -"4094";"N/A";"N/A";"ACTORBLOCK_NO_PASS_RIGHT";"0.0312";"0.0312";"0.0312";"0.0312";"1";"1";"NULL";"0";"0";"N/A";"0";"0";"4";"0.0";"0.0";"0.0";"0.0";"N/A";"N/A";"0.0";"INTERNAL,ACTORBLOCK,NORANDTILE" -"4095";"N/A";"N/A";"ACTORBLOCK_NO_PASS_LEFT";"0.0312";"0.0312";"0.0312";"0.0312";"1";"1";"NULL";"0";"0";"N/A";"0";"0";"4";"0.0";"0.0";"0.0";"0.0";"N/A";"N/A";"0.0";"INTERNAL,ACTORBLOCK,NORANDTILE" -"-1";"N/A";"N/A";"BLOCK_NULL";"4.0000";"4.0000";"4.0000";"4.0000";"-1";"2600";"NULL";"0";"1";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"INTERNAL,NORANDTILE" -"-2";"N/A";"N/A";"BLOCK_NULL";"4.0000";"4.0000";"4.0000";"4.0000";"-1";"2600";"NULL";"1";"1";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"INTERNAL,NORANDTILE" +"4090";"N/A";"N/A";"ACTORBLOCK_TILING_PLACEHOLDER";"0.1252";"0.1252";"0.1252";"0.1252";"48";"2400";"ROCK";"1";"1";"N/A";"0";"4";"16";"0.0000";"0.0000";"0.0000";"0.0000";"0.0";"INTERNAL,ACTORBLOCK,DORENDER,NORANDTILE" +"4091";"N/A";"N/A";"ACTORBLOCK_NO_COLLISION";"0.0312";"0.0312";"0.0312";"0.0312";"1";"1";"NULL";"0";"0";"N/A";"0";"0";"4";"0.0";"0.0";"0.0";"0.0";"0.0";"INTERNAL,ACTORBLOCK,NORANDTILE" +"4092";"N/A";"N/A";"ACTORBLOCK_FULL_COLLISION";"0.0312";"0.0312";"0.0312";"0.0312";"1";"1";"NULL";"1";"0";"N/A";"0";"0";"16";"0.0";"0.0";"0.0";"0.0";"0.0";"INTERNAL,ACTORBLOCK,NORANDTILE" +"4093";"N/A";"N/A";"ACTORBLOCK_ALLOW_MOVE_DOWN";"0.0312";"0.0312";"0.0312";"0.0312";"1";"1";"NULL";"0";"0";"N/A";"0";"0";"16";"0.0";"0.0";"0.0";"0.0";"0.0";"INTERNAL,ACTORBLOCK,PLATFORM,NORANDTILE" +"4094";"N/A";"N/A";"ACTORBLOCK_NO_PASS_RIGHT";"0.0312";"0.0312";"0.0312";"0.0312";"1";"1";"NULL";"0";"0";"N/A";"0";"0";"4";"0.0";"0.0";"0.0";"0.0";"0.0";"INTERNAL,ACTORBLOCK,NORANDTILE" +"4095";"N/A";"N/A";"ACTORBLOCK_NO_PASS_LEFT";"0.0312";"0.0312";"0.0312";"0.0312";"1";"1";"NULL";"0";"0";"N/A";"0";"0";"4";"0.0";"0.0";"0.0";"0.0";"0.0";"INTERNAL,ACTORBLOCK,NORANDTILE" +"-1";"N/A";"N/A";"BLOCK_NULL";"4.0000";"4.0000";"4.0000";"4.0000";"-1";"2600";"NULL";"0";"1";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"0.0";"INTERNAL,NORANDTILE" +"-2";"N/A";"N/A";"BLOCK_NULL";"4.0000";"4.0000";"4.0000";"4.0000";"-1";"2600";"NULL";"1";"1";"N/A";"0";"0";"16";"0.0000";"0.0000";"0.0000";"0.0000";"0.0";"INTERNAL,NORANDTILE" ## Notes ## diff --git a/assets/mods/basegame/fluid/1.tga b/assets/mods/basegame/fluid/1.tga new file mode 100644 index 000000000..ef46626d4 --- /dev/null +++ b/assets/mods/basegame/fluid/1.tga @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:844f0828124f0f20ddf23f06a5c454d35f0d71a193b14ef5b04eda14a4915da0 +size 18450 diff --git a/assets/mods/basegame/fluid/fluids.csv b/assets/mods/basegame/fluid/fluids.csv new file mode 100644 index 000000000..6173dcede --- /dev/null +++ b/assets/mods/basegame/fluid/fluids.csv @@ -0,0 +1,3 @@ +"id";"name";"shdr";"shdg";"shdb";"shduv";"str";"dsty";"mate";"lumr";"lumg";"lumb";"lumuv";"colour";"vscs";"refl";"tags" +"1";"BLOCK_WATER";"0.1016";"0.0744";"0.0508";"0.0826";"100";"1000";"WATR";"0.0000";"0.0000";"0.0000";"0.0000";"005599A6";"16";"0.0";"NATURAL" +"2";"BLOCK_LAVA";"0.9696";"0.9696";"0.9696";"0.9696";"100";"2600";"ROCK"; "0.7664";"0.2032";"0.0000";"0.0000";"FF4600E6";"32";"0.0";"NATURAL,MOLTEN" diff --git a/src/net/torvald/terrarum/QuickDirtyLint.kt b/src/net/torvald/terrarum/QuickDirtyLint.kt index de4eede1f..28507a525 100644 --- a/src/net/torvald/terrarum/QuickDirtyLint.kt +++ b/src/net/torvald/terrarum/QuickDirtyLint.kt @@ -93,7 +93,8 @@ class QuickDirtyLint { ) val remarks = mapOf( - "Ljava/util/List" to "java.util.List has no zero-arg constructor." + "Ljava/util/List" to "java.util.List has no zero-arg constructor.", + "Lcom/badlogic/gdx/graphics" to "Anything under gdx.graphics needs GL context to initialise." ) val classGraph = ClassGraph().acceptPackages("net.torvald.terrarum")/*.verbose()*/.enableAllInfo().scan() @@ -131,9 +132,7 @@ class QuickDirtyLint { "\t${csiG}type: ${csi0}${it.typeSignatureOrTypeDescriptorStr}\n" + "\t${csiG}remarks: ${csi0}${ remarks.keys.filter { key -> - it.typeSignatureOrTypeDescriptorStr.startsWith( - key - ) + it.typeSignatureOrTypeDescriptorStr.startsWith(key) }.map { remarks[it] }.joinToString(" ") }" ) diff --git a/src/net/torvald/terrarum/blockproperties/BlockCodex.kt b/src/net/torvald/terrarum/blockproperties/BlockCodex.kt index 13bc7353b..1e0bae6ed 100644 --- a/src/net/torvald/terrarum/blockproperties/BlockCodex.kt +++ b/src/net/torvald/terrarum/blockproperties/BlockCodex.kt @@ -78,6 +78,7 @@ class BlockCodex { private fun register(module: String, records: List, blockRegisterHook: (BlockProp) -> Unit) { records.forEach { + val id = it.intVal("id") /*if (it.intVal("id") == -1) { setProp(nullProp, it) } @@ -85,8 +86,8 @@ class BlockCodex { setProp(blockProps[it.intVal("id")], it) }*/ - setProp(module, it.intVal("id"), it) - val tileId = "$module:${it.intVal("id")}" + setProp(module, id, it) + val tileId = "$module:$id" // register tiles with dynamic light if ((blockProps[tileId]?.dynamicLuminosityFunction ?: 0) != 0) { @@ -209,8 +210,6 @@ class BlockCodex { prop.baseLumCol.set(prop.baseLumColR, prop.baseLumColG, prop.baseLumColB, prop.baseLumColA) prop.friction = record.intVal("fr") - prop.viscosity = record.intVal("vscs") - prop.colour = record.str16ToInt("colour") //prop.isFluid = record.boolVal("fluid") prop.isSolid = record.boolVal("solid") diff --git a/src/net/torvald/terrarum/blockproperties/BlockProp.kt b/src/net/torvald/terrarum/blockproperties/BlockProp.kt index 4288848ab..d5e643edd 100644 --- a/src/net/torvald/terrarum/blockproperties/BlockProp.kt +++ b/src/net/torvald/terrarum/blockproperties/BlockProp.kt @@ -34,9 +34,6 @@ class BlockProp : TaggedProp { var strength: Int = 0 var density: Int = 0 - var viscosity: Int = 0 - /** Fluid colour */ - var colour: Int = 0 /** isSolid is NOT SAME AS !isOpaqueis * Like, don't ever use this vars to tell this block should be removed by water or something, diff --git a/src/net/torvald/terrarum/gameactors/ActorWithBody.kt b/src/net/torvald/terrarum/gameactors/ActorWithBody.kt index 7174f8bd3..0ab5c0b28 100644 --- a/src/net/torvald/terrarum/gameactors/ActorWithBody.kt +++ b/src/net/torvald/terrarum/gameactors/ActorWithBody.kt @@ -13,6 +13,8 @@ import net.torvald.terrarum.TerrarumAppConfiguration.TILE_SIZED import net.torvald.terrarum.TerrarumAppConfiguration.TILE_SIZEF import net.torvald.terrarum.blockproperties.Block import net.torvald.terrarum.blockproperties.BlockProp +import net.torvald.terrarum.blockproperties.Fluid +import net.torvald.terrarum.blockproperties.FluidCodex import net.torvald.terrarum.gamecontroller.KeyToggler import net.torvald.terrarum.gameitems.ItemID import net.torvald.terrarum.gameparticles.createRandomBlockParticle @@ -478,12 +480,20 @@ open class ActorWithBody : Actor { * * Since we're adding some value every frame, the value is equivalent to the acceleration. * Look for Newton's second law for the background knowledge. - * @param acc : Acceleration in Vector2 + * @param acc acceleration in Vector2, the unit is [px / InternalFrame^2] */ - fun applyForce(acc: Vector2) { + fun applyAcceleration(acc: Vector2) { externalV += acc * speedMultByTile } + private fun Vector2.applyViscoseDrag() { + val viscosity = bodyViscosity + val divisor = 1.0 + (viscosity / 16.0) + + this.x /= divisor + this.y /= divisor + } + private val bounceDampenVelThreshold = 0.5 /** @@ -554,16 +564,12 @@ open class ActorWithBody : Actor { //////////////////////////////////////////////////////////////// // --> Apply more forces <-- // - if (!isChronostasis) { - // Actors are subject to the gravity and the buoyancy if they are not levitating - - if (!isNoSubjectToGrav) { - applyGravitation() - } - - //applyBuoyancy() + // Actors are subject to the gravity and the buoyancy if they are not levitating + if (!isNoSubjectToGrav) { + applyGravitation() } + // hard limit velocity externalV.x = externalV.x.bipolarClamp(VELO_HARD_LIMIT) // displaceHitbox SHOULD use moveDelta externalV.y = externalV.y.bipolarClamp(VELO_HARD_LIMIT) @@ -573,6 +579,10 @@ open class ActorWithBody : Actor { // Codes that (SHOULD) displaces hitbox directly // /////////////////////////////////////////////////// +// if (this is IngamePlayer) { +// printdbg(this, "BodyViscosity=$bodyViscosity FeetViscosity=$feetViscosity BodyFriction=$bodyFriction FeetFriction=$feetFriction") +// } + val vecSum = (externalV + (controllerV ?: Vector2(0.0, 0.0))) /** * solveCollision()? @@ -580,7 +590,7 @@ open class ActorWithBody : Actor { * This body is NON-STATIC and the other body is STATIC */ if (!isNoCollideWorld) { - val (collisionStatus, collisionDamage) = displaceHitbox() + val (collisionStatus, collisionDamage) = displaceHitbox(true) if (collisionStatus != 0 && collisionDamage >= 1.0) { @@ -634,6 +644,15 @@ open class ActorWithBody : Actor { } + // --> Apply more forces <-- // + // Actors are subject to the gravity and the buoyancy if they are not levitating + if (!isNoSubjectToGrav) { + val buoyancy = applyBuoyancy() * speedMultByTile + hitbox.translate(buoyancy) + clampHitbox() + } + + // update all the other variables // @@ -671,6 +690,14 @@ open class ActorWithBody : Actor { feetPosPoint.set(hitbox.centeredX, hitbox.endY) feetPosTile.set(hIntTilewiseHitbox.centeredX.floorToInt(), hIntTilewiseHitbox.endY.floorToInt()) + submergedHeight = max( + getContactingAreaFluid(COLLIDING_LEFT), + getContactingAreaFluid(COLLIDING_RIGHT) + ).toDouble() + submergedVolume = submergedHeight * hitbox.width * hitbox.width + submergedRatio = if (hitbox.height == 0.0) throw RuntimeException("Hitbox.height is zero") + else submergedHeight / hitbox.height + if (mouseUp && tooltipText != null && tooltipShowing[tooltipHash] != true) { INGAME.setTooltipMessage(tooltipText) @@ -720,7 +747,7 @@ open class ActorWithBody : Actor { if (!isNoSubjectToGrav && !(gravitation.y > 0 && walledBottom || gravitation.y < 0 && walledTop)) { //if (!isWalled(hitbox, COLLIDING_BOTTOM)) { - applyForce(getDrag(externalV)) + applyAcceleration(getDrag(externalV)) //} } } @@ -728,7 +755,7 @@ open class ActorWithBody : Actor { /** * @return Collision Status, Collision damage in Newtons */ - private fun displaceHitbox(): Pair { + private fun displaceHitbox(useControllerV: Boolean): Pair { var collisionDamage = 0.0 val printdbg1 = false && App.IS_DEVELOPMENT_BUILD // // HOW IT SHOULD WORK // // @@ -763,7 +790,7 @@ open class ActorWithBody : Actor { - if (controllerV != null && stairPenaltyCounter < stairPenaltyMax) { + if (useControllerV && controllerV != null && stairPenaltyCounter < stairPenaltyMax) { controllerV!!.x *= stairPenaltyVector } @@ -771,7 +798,7 @@ open class ActorWithBody : Actor { // the job of the ccd is that the "next hitbox" would not dig into the terrain greater than the tile size, // in which the modTileDelta returns a wrong value - val vectorSum = (externalV + controllerV) + val vectorSum = (externalV + (if (useControllerV) controllerV else Vector2())) val ccdSteps = (vectorSum.magnitude / TILE_SIZE).ceilToInt().plus(1).times(2).coerceIn(0, 64) // adaptive @@ -1050,7 +1077,7 @@ open class ActorWithBody : Actor { // that when player happens to be "walled" (which zeroes the x velo) they can keep // move left/right as long as "buried depth" <= stairheight // so we also zero the same exact value here for perfect hiding - if (controllerV != null) { + if (useControllerV && controllerV != null) { val stairRatio = stairHeight / hitbox.height stairPenaltyVector = Math.pow(1.0 - (stairRatio), 90 * stairRatio).times(10).coerceIn(0.00005, 1.0) @@ -1079,19 +1106,19 @@ open class ActorWithBody : Actor { // bounce X/Y if (bounceX) { externalV.x *= elasticity - controllerV?.let { controllerV!!.x *= elasticity } + if (useControllerV) controllerV?.let { controllerV!!.x *= elasticity } } if (bounceY) { externalV.y *= elasticity - controllerV?.let { controllerV!!.y *= elasticity } + if (useControllerV) controllerV?.let { controllerV!!.y *= elasticity } } if (zeroX) { externalV.x = 0.0 - controllerV?.let { controllerV!!.x = 0.0 } + if (useControllerV) controllerV?.let { controllerV!!.x = 0.0 } } if (zeroY) { externalV.y = 0.0 - controllerV?.let { controllerV!!.y = 0.0 } + if (useControllerV) controllerV?.let { controllerV!!.y = 0.0 } } @@ -1485,7 +1512,7 @@ open class ActorWithBody : Actor { if (world == null) return 0 var contactAreaCounter = 0 - for (i in 0..(if (side % 2 == 0) hitbox.width else hitbox.height).roundToInt() - 1) { + for (i in 0 until (if (side % 2 == 0) hitbox.width else hitbox.height).roundToInt()) { // set tile positions val tileX: Int val tileY: Int @@ -1593,32 +1620,19 @@ open class ActorWithBody : Actor { * [N] = [kg * m / s^2] * F(bo) = density * submerged_volume * gravitational_acceleration [N] */ - /*private fun applyBuoyancy() { - val fluidDensity = tileDensity - val submergedVolume = submergedVolume + private fun applyBuoyancy(): Vector2 { + val rho = FluidCodex[Fluid.WATER].density //tileDensityFluid // kg / m^3 + val V = submergedVolume / (METER.pow(3)) // m^3 + val g = world?.gravitation ?: Vector2() // m / s^2 + val F = g * (rho * V / SI_TO_GAME_VELO) // Newtons = kg * m / s^2 - if (!isNoClip && !grounded) { - // System.out.println("density: "+density); - veloY -= ((fluidDensity - this.density).toDouble() - * map.gravitation.toDouble() * submergedVolume.toDouble() - * Math.pow(mass.toDouble(), -1.0) - * SI_TO_GAME_ACC.toDouble()).toDouble() - } - }*/ + val acc = (-F / mass) // (kg * m / s^2) / kg = m / s^2 + return acc * SI_TO_GAME_ACC + } - private val submergedRatio: Double - get() { - if (hitbox.height == 0.0) throw RuntimeException("Hitbox.height is zero") - return submergedHeight / hitbox.height - } - private val submergedVolume: Double - get() = submergedHeight * hitbox.width * hitbox.width - - private val submergedHeight: Double - get() = Math.max( - getContactingAreaFluid(COLLIDING_LEFT), - getContactingAreaFluid(COLLIDING_RIGHT) - ).toDouble() + @Transient private var submergedRatio: Double = 0.0 + @Transient private var submergedVolume: Double = 0.0 + @Transient private var submergedHeight: Double = 0.0 // body friction is always as same as the air. Fluid doesn't matter, they use viscosity @@ -1655,10 +1669,11 @@ open class ActorWithBody : Actor { internal inline val bodyViscosity: Int get() { var viscosity = 0 - forEachOccupyingTile { + forEachOccupyingFluid { // get max viscosity - if (it?.viscosity ?: 0 > viscosity) - viscosity = it?.viscosity ?: 0 + if (it != null) { + viscosity = max(viscosity, FluidCodex[it.type].viscosity) + } } return viscosity @@ -1666,10 +1681,11 @@ open class ActorWithBody : Actor { internal inline val feetViscosity: Int get() { var viscosity = 0 - forEachFeetTile { + forEachFeetFluid { // get max viscosity - if (it?.viscosity ?: 0 > viscosity) - viscosity = it?.viscosity ?: 0 + if (it != null) { + viscosity = max(viscosity, FluidCodex[it.type].viscosity) + } } return viscosity @@ -1718,7 +1734,7 @@ open class ActorWithBody : Actor { /** * Get highest tile density from occupying tiles, fluid only */ - /*private inline val tileDensityFluid: Int + private inline val tileDensityFluid: Int get() { var density = 0 forEachOccupyingFluid { @@ -1729,7 +1745,7 @@ open class ActorWithBody : Actor { } return density - }*/ + } /** * Get highest density (specific gravity) value from tiles that the body occupies. @@ -1988,6 +2004,23 @@ open class ActorWithBody : Actor { if (world == null) return + val fluids = ArrayList() + + // offset 1 pixel to the down so that friction would work +// val y = hitbox.endY.plus(1.0).div(TILE_SIZE).floorToInt() + val y = intTilewiseHitbox.startY.toInt() + intTilewiseHitbox.height.toInt() + 1 + + for (x in hIntTilewiseHitbox.startX.toInt()..hIntTilewiseHitbox.endX.toInt()) { + fluids.add(world!!.getFluid(x, y)) + } + + return fluids.forEach(consumer) + } + + fun forEachFeetFluid(consumer: (GameWorld.FluidInfo?) -> Unit) { + if (world == null) return + + val fluids = ArrayList() for (y in hIntTilewiseHitbox.startY.toInt()..hIntTilewiseHitbox.endY.toInt()) { @@ -2067,34 +2100,29 @@ open class ActorWithBody : Actor { // offset 1 pixel to the down so that friction would work // val y = hitbox.endY.plus(1.0).div(TILE_SIZE).floorToInt() - val y = intTilewiseHitbox.height.toInt() + 1 + val y = intTilewiseHitbox.startY.toInt() + intTilewiseHitbox.height.toInt() + 1 - for (x in 0..intTilewiseHitbox.width.toInt()) { - tileProps.add(BlockCodex[world!!.getTileFromTerrain(x + intTilewiseHitbox.startX.toInt(), y + intTilewiseHitbox.startY.toInt())]) + for (x in hIntTilewiseHitbox.startX.toInt()..hIntTilewiseHitbox.endX.toInt()) { + tileProps.add(BlockCodex[world!!.getTileFromTerrain(x, y)]) } return tileProps.forEach(consumer) } fun forEachFeetTileWithPos(consumer: (Point2i, ItemID) -> Unit) { - val y = intTilewiseHitbox.height.toInt() + 1 - (0..intTilewiseHitbox.width.toInt()).map { x -> - val px = x + intTilewiseHitbox.startX.toInt() - val py = y + intTilewiseHitbox.startY.toInt() - - val point = Point2i(px, py) - val item = world!!.getTileFromTerrain(px, py) + val y = intTilewiseHitbox.startY.toInt() + intTilewiseHitbox.height.toInt() + 1 + (hIntTilewiseHitbox.startX.toInt()..hIntTilewiseHitbox.endX.toInt()).map { x -> + val point = Point2i(x, y) + val item = world!!.getTileFromTerrain(x, y) consumer(point, item) } } fun getFeetTiles(): List> { - val y = intTilewiseHitbox.height.toInt() + 1 - return (0..intTilewiseHitbox.width.toInt()).map { x -> - val px = x + intTilewiseHitbox.startX.toInt() - val py = y + intTilewiseHitbox.startY.toInt() - Point2i(px, py) to world!!.getTileFromTerrain(px, py) + val y = intTilewiseHitbox.startY.toInt() + intTilewiseHitbox.height.toInt() + 1 + return (hIntTilewiseHitbox.startX.toInt()..hIntTilewiseHitbox.endX.toInt()).map { x -> + Point2i(x, y) to world!!.getTileFromTerrain(x, y) } } diff --git a/src/net/torvald/terrarum/gameworld/GameWorld.kt b/src/net/torvald/terrarum/gameworld/GameWorld.kt index fa5e7e788..1a57662f6 100644 --- a/src/net/torvald/terrarum/gameworld/GameWorld.kt +++ b/src/net/torvald/terrarum/gameworld/GameWorld.kt @@ -805,7 +805,7 @@ open class GameWorld( data class FluidInfo(val type: ItemID = Fluid.NULL, val amount: Float = 0f) { /** test if this fluid should be considered as one */ fun isFluid() = type != Fluid.NULL && amount >= WorldSimulator.FLUID_MIN_MASS - fun getProp(): Nothing = TODO() + fun getProp() = FluidCodex[type] override fun toString() = "Fluid type: ${type}, amount: $amount" } diff --git a/src/net/torvald/terrarum/gameworld/WorldTime.kt b/src/net/torvald/terrarum/gameworld/WorldTime.kt index 303ad86e4..7d5107c4d 100644 --- a/src/net/torvald/terrarum/gameworld/WorldTime.kt +++ b/src/net/torvald/terrarum/gameworld/WorldTime.kt @@ -49,9 +49,7 @@ import kotlin.math.cos * internal functions `getFormattedTime()`, `getShortTime()`, and `getFilenameTime()` * - Preferred computerised date format is YearMonthDate. E.g. 01250407 * - Rest of the format (e.g. time intervals) follows ISO 8601 standard. - * - * (Check please:) - * - Equinox/Solstice always occur on 21st day of the month + * - Equinox/Solstice always occur on 15th day of the month * * * Created by minjaesong on 2016-01-24. diff --git a/src/net/torvald/terrarum/modulebasegame/IngameRenderer.kt b/src/net/torvald/terrarum/modulebasegame/IngameRenderer.kt index edd06f86d..21dc906b7 100644 --- a/src/net/torvald/terrarum/modulebasegame/IngameRenderer.kt +++ b/src/net/torvald/terrarum/modulebasegame/IngameRenderer.kt @@ -17,6 +17,7 @@ import net.torvald.terrarum.TerrarumAppConfiguration.TILE_SIZE import net.torvald.terrarum.TerrarumAppConfiguration.TILE_SIZED import net.torvald.terrarum.TerrarumAppConfiguration.TILE_SIZEF import net.torvald.terrarum.blockproperties.Block +import net.torvald.terrarum.blockproperties.FluidCodex import net.torvald.terrarum.gameactors.ActorWithBody import net.torvald.terrarum.gameactors.ActorWithBody.Companion.METER import net.torvald.terrarum.gameactors.ActorWithBody.Companion.SI_TO_GAME_ACC @@ -865,7 +866,7 @@ object IngameRenderer : Disposable { } private val bodyFriction = BlockCodex[Block.AIR].friction.frictionToMult() - private val bodyViscosity = BlockCodex[Block.AIR].viscosity.viscosityToMult() + private val bodyViscosity = FluidCodex[Block.AIR].viscosity.viscosityToMult() private fun applyGravitation(gravitation: Vector2, hitboxWidth: Double) { diff --git a/src/net/torvald/terrarum/modulebasegame/console/SpawnPhysTestBall.kt b/src/net/torvald/terrarum/modulebasegame/console/SpawnPhysTestBall.kt index 75b0357ae..c5431d8cf 100644 --- a/src/net/torvald/terrarum/modulebasegame/console/SpawnPhysTestBall.kt +++ b/src/net/torvald/terrarum/modulebasegame/console/SpawnPhysTestBall.kt @@ -25,7 +25,7 @@ internal object SpawnPhysTestBall : ConsoleCommand { val ball = PhysTestBall() ball.setPosition(mouseX, mouseY) ball.elasticity = elasticity - ball.applyForce(Vector2(xvel, yvel)) + ball.applyAcceleration(Vector2(xvel, yvel)) INGAME.queueActorAddition(ball) } diff --git a/src/net/torvald/terrarum/worlddrawer/CreateTileAtlas.kt b/src/net/torvald/terrarum/worlddrawer/CreateTileAtlas.kt index 163a8e812..9c0ce6dc8 100644 --- a/src/net/torvald/terrarum/worlddrawer/CreateTileAtlas.kt +++ b/src/net/torvald/terrarum/worlddrawer/CreateTileAtlas.kt @@ -388,13 +388,18 @@ class CreateTileAtlas { } // predefined by the image dimension: 256x256 else if (tilesPixmap.width == TILE_SIZE * 16 && tilesPixmap.height == TILE_SIZE * 16) { + addTag(blockID, RenderTag.CONNECT_SELF, RenderTag.MASK_FLUID) + drawToAtlantes(tilesPixmap, tilesGlowPixmap, tilesEmissivePixmap, RenderTag.MASK_FLUID) + } + // predefined by the image dimension: 288x16 + else if (tilesPixmap.width == TILE_SIZE * 18 && tilesPixmap.height == TILE_SIZE) { addTag(blockID, RenderTag.CONNECT_SELF, RenderTag.MASK_16X16) drawToAtlantes(tilesPixmap, tilesGlowPixmap, tilesEmissivePixmap, RenderTag.MASK_16X16) } // 112x112 or 224x224 else { if (tilesPixmap.width != tilesPixmap.height && tilesPixmap.width % (7 * TILE_SIZE) >= 2) { - throw IllegalArgumentException("Unrecognized image dimension ${tilesPixmap.width}x${tilesPixmap.height} from $modname:${diffuse.name()}") + throw IllegalArgumentException("Unrecognized image dimension ${tilesPixmap.width}x${tilesPixmap.height} from ${diffuse.path()}") } // figure out the tags var connectionType = 0 @@ -531,6 +536,7 @@ class CreateTileAtlas { const val MASK_16X4 = 5 const val MASK_16X8 = 6 const val MASK_16X16 = 7 + const val MASK_FLUID = 8 fun maskTypeToTileCount(maskType: Int) = when (maskType) { MASK_NA -> 1 @@ -541,6 +547,7 @@ class CreateTileAtlas { MASK_16X4 -> 64 MASK_16X8 -> 128 MASK_16X16 -> 256 + MASK_FLUID -> 18 else -> throw IllegalArgumentException("Unknown maskType: $maskType") } }