mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-06-07 00:54:05 +09:00
Compare commits
131 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
aa2172b396 | ||
|
|
f3e2fa8441 | ||
|
|
a3d132d26c | ||
|
|
a4afb0bfe9 | ||
|
|
67092d4ab9 | ||
|
|
07680592d2 | ||
|
|
844ec6bd4f | ||
|
|
c87bd182b0 | ||
|
|
6d2764933f | ||
|
|
d4672df208 | ||
|
|
4d1ea45a0f | ||
|
|
8e1c586a5c | ||
|
|
7690d3d672 | ||
|
|
8e8c206e3a | ||
|
|
d35a73c7a5 | ||
|
|
ec76eb2685 | ||
|
|
a1a6dc5801 | ||
|
|
708dccb015 | ||
|
|
4e739963d3 | ||
|
|
8bf3d9666f | ||
|
|
b856574d20 | ||
|
|
f696a54d2d | ||
|
|
ca766719d3 | ||
|
|
d027ff7d7e | ||
|
|
2785a67823 | ||
|
|
33671d6e52 | ||
|
|
7bfff29a79 | ||
|
|
aef1db49d6 | ||
|
|
09e5b175b8 | ||
|
|
37b4fa1e7b | ||
|
|
d63be072cc | ||
|
|
d22f421bc4 | ||
|
|
cb756cbf3a | ||
|
|
b24a3da2ed | ||
|
|
b0adc9efc7 | ||
|
|
c0a8118717 | ||
|
|
336dfad207 | ||
|
|
ef7199fd8b | ||
|
|
3481502c1a | ||
|
|
5b462a2559 | ||
|
|
6abb6f84ef | ||
|
|
2abc8b19b9 | ||
|
|
7c2b5468bd | ||
|
|
c829245b41 | ||
|
|
b05ae829cc | ||
|
|
8aa866f040 | ||
|
|
5a18ba4b06 | ||
|
|
707abe8c6d | ||
|
|
60eeeae759 | ||
|
|
ef2413f33d | ||
|
|
2943f4119c | ||
|
|
a298d6663b | ||
|
|
fa49874971 | ||
|
|
247cf9bd33 | ||
|
|
c6999e0794 | ||
|
|
877d26667b | ||
|
|
3e81b80bb1 | ||
|
|
47c82aba49 | ||
|
|
c627096503 | ||
|
|
9994235342 | ||
|
|
bfaa50aea4 | ||
|
|
0d09a21028 | ||
|
|
d480a735a0 | ||
|
|
2340cb7419 | ||
|
|
dbff2610ac | ||
|
|
9f399b8722 | ||
|
|
9a6f45756b | ||
|
|
bbbc5e22a5 | ||
|
|
8d3d6242d7 | ||
|
|
3182843a48 | ||
|
|
1dcdd8867a | ||
|
|
a3bf1ed3f6 | ||
|
|
10f8e4a662 | ||
|
|
bb1a45db27 | ||
|
|
5b5534bcb9 | ||
|
|
0090cc7d40 | ||
|
|
5014381cbd | ||
|
|
caf238d6df | ||
|
|
4602cb5bc1 | ||
|
|
1c39036cc8 | ||
|
|
6c224c79bf | ||
|
|
88c9bc4a27 | ||
|
|
659976b880 | ||
|
|
3959de68b1 | ||
|
|
fbe887b039 | ||
|
|
91798436cb | ||
|
|
34415f720d | ||
|
|
33b739f34f | ||
|
|
f3825c0bfb | ||
|
|
84f1c48159 | ||
|
|
514a972bcf | ||
|
|
f19a27065e | ||
|
|
324128e86a | ||
|
|
39fca59ea7 | ||
|
|
f07a6f6430 | ||
|
|
6c5ee14402 | ||
|
|
ec7ff3199d | ||
|
|
f400a5afe7 | ||
|
|
ea1702ace4 | ||
|
|
01b5569169 | ||
|
|
374cd5d4f7 | ||
|
|
c0cf9ab17d | ||
|
|
db0d3379cc | ||
|
|
42e7da2a4a | ||
|
|
30caac283a | ||
|
|
5da4cee22e | ||
|
|
ddfa2f5bf0 | ||
|
|
7d38ba866c | ||
|
|
a773786c9e | ||
|
|
43e16bf785 | ||
|
|
7906de1711 | ||
|
|
6c3ec20b3d | ||
|
|
902a086a4f | ||
|
|
91bf11a3e0 | ||
|
|
410456e173 | ||
|
|
9caf2a0d7e | ||
|
|
9525441dc0 | ||
|
|
f7b0dfb5bb | ||
|
|
549c03c2b4 | ||
|
|
91c5105a12 | ||
|
|
063483cfda | ||
|
|
a5953b8c87 | ||
|
|
c568276df6 | ||
|
|
19405b7f8d | ||
|
|
2e89dcc73a | ||
|
|
d3fe2e2bc6 | ||
|
|
5c18e03bad | ||
|
|
11a7a1f48d | ||
|
|
d24ec8296f | ||
|
|
2c1727e495 | ||
|
|
b9e7a4ba84 |
@@ -10,7 +10,6 @@
|
|||||||
<option name="RunConfigurationTask" enabled="true" run_configuration_name="Build Version Number" run_configuration_type="Application" />
|
<option name="RunConfigurationTask" enabled="true" run_configuration_name="Build Version Number" run_configuration_type="Application" />
|
||||||
<option name="BuildArtifacts" enabled="true">
|
<option name="BuildArtifacts" enabled="true">
|
||||||
<artifact name="ModuleComputers" />
|
<artifact name="ModuleComputers" />
|
||||||
<artifact name="MusicPlayer" />
|
|
||||||
<artifact name="TerrarumBuild" />
|
<artifact name="TerrarumBuild" />
|
||||||
</option>
|
</option>
|
||||||
<option name="RunConfigurationTask" enabled="true" run_configuration_name="QuickDirtyLint" run_configuration_type="Application" />
|
<option name="RunConfigurationTask" enabled="true" run_configuration_name="QuickDirtyLint" run_configuration_type="Application" />
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
BIN
assets/graphics/gui/gradtile32.tga
LFS
Normal file
BIN
assets/graphics/gui/gradtile32.tga
LFS
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -3,11 +3,11 @@
|
|||||||
"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"
|
"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"
|
||||||
|
|
||||||
# rocks
|
# 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"
|
"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"
|
"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"
|
"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"
|
"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";"24600";"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"
|
"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"
|
"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"
|
||||||
|
|
||||||
# dirts
|
# dirts
|
||||||
@@ -41,12 +41,12 @@
|
|||||||
"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"
|
"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"
|
||||||
|
|
||||||
# sabulous
|
# 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"
|
"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"
|
"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"
|
"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"
|
"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"
|
"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"
|
"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"
|
"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"
|
"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"
|
||||||
|
|
||||||
@@ -67,7 +67,7 @@
|
|||||||
"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"
|
"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"
|
||||||
|
|
||||||
# platforms
|
# 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"
|
"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"
|
"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"
|
"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"
|
"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"
|
||||||
@@ -125,10 +125,10 @@
|
|||||||
"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"
|
"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"
|
||||||
|
|
||||||
# more platforms
|
# 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,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";"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,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,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,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"
|
||||||
|
|
||||||
# for future use
|
# 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"
|
"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"
|
||||||
|
|||||||
|
Can't render this file because it contains an unexpected character in line 18 and column 2.
|
@@ -10,11 +10,13 @@ GetAV
|
|||||||
GetFaction
|
GetFaction
|
||||||
GetLocale
|
GetLocale
|
||||||
GetTime
|
GetTime
|
||||||
|
HasItem
|
||||||
ImportLayerData
|
ImportLayerData
|
||||||
ImportWorld
|
ImportWorld
|
||||||
Inventory
|
Inventory
|
||||||
KillActor
|
KillActor
|
||||||
LangTest
|
LangTest
|
||||||
|
MakeSign
|
||||||
MoneyDisp
|
MoneyDisp
|
||||||
MusicTest
|
MusicTest
|
||||||
Possess
|
Possess
|
||||||
|
|||||||
|
@@ -1,3 +1,6 @@
|
|||||||
->Lang:MENU_OPTIONS_GAMEPLAY->h1
|
->Lang:MENU_OPTIONS_GAMEPLAY->h1
|
||||||
gameplay_max_crafting->Lang:MENU_OPTIONS_MAX_CRAFTING->spinner,100,1000,100
|
gameplay_max_crafting->Lang:MENU_OPTIONS_MAX_CRAFTING->spinner,100,1000,100
|
||||||
showpickaxetooltip->Lang:MENU_OPTIONS_SHOW_ORES_TOOLTIP_WHEN_MINING->toggle
|
showpickaxetooltip->Lang:MENU_OPTIONS_SHOW_ORES_TOOLTIP_WHEN_MINING->toggle
|
||||||
|
->Lang:MENU_OPTIONS_UNIT_OF_MEASUREMENT->h1
|
||||||
|
gameplay_unit_distance->Lang:MENU_OPTIONS_DISTANCE_UNIT->textsel,meter=MENU_OPTIONS_UNIT_METRIC,foot=MENU_OPTIONS_UNIT_FEET,block=MENU_OPTIONS_UNIT_BLOCKS
|
||||||
|
gameplay_unit_temperature->Lang:MENU_OPTIONS_TEMPERATURE_UNIT->textsel,celsius=MENU_OPTIONS_UNIT_CELSIUS_DNT,fahrenheit=MENU_OPTIONS_UNIT_FAHRENHEIT_DNT,kelvin=MENU_OPTIONS_UNIT_KELVIN_DNT
|
||||||
|
@@ -32,25 +32,25 @@
|
|||||||
"basegame:272": { /* scaffolding */
|
"basegame:272": { /* scaffolding */
|
||||||
"workbench": "",
|
"workbench": "",
|
||||||
"ingredients": [
|
"ingredients": [
|
||||||
[1, 2, "item@basegame:18", 2, "basegame:161"] /* 2 sticks and 2 platform */
|
[2, 2, "item@basegame:18", 2, "basegame:48"] /* 2 sticks and 2 wood */
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"basegame:273": { /* scaffolding */
|
"basegame:273": { /* scaffolding */
|
||||||
"workbench": "",
|
"workbench": "",
|
||||||
"ingredients": [
|
"ingredients": [
|
||||||
[1, 2, "item@basegame:18", 2, "basegame:162"] /* 2 sticks and 2 platform */
|
[2, 2, "item@basegame:18", 2, "basegame:49"] /* 2 sticks and 2 wood */
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"basegame:274": { /* scaffolding */
|
"basegame:274": { /* scaffolding */
|
||||||
"workbench": "",
|
"workbench": "",
|
||||||
"ingredients": [
|
"ingredients": [
|
||||||
[1, 2, "item@basegame:18", 2, "basegame:163"] /* 2 sticks and 2 platform */
|
[2, 2, "item@basegame:18", 2, "basegame:50"] /* 2 sticks and 2 wood */
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"basegame:275": { /* scaffolding */
|
"basegame:275": { /* scaffolding */
|
||||||
"workbench": "",
|
"workbench": "",
|
||||||
"ingredients": [
|
"ingredients": [
|
||||||
[1, 2, "item@basegame:18", 2, "basegame:164"] /* 2 sticks and 2 platform */
|
[2, 2, "item@basegame:18", 2, "basegame:51"] /* 2 sticks and 2 wood */
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -31,6 +31,31 @@
|
|||||||
[1, 20, "$ROCK", 10, "item@basegame:25", 10, "item@basegame:113"] /* 1 smelter = 20 rocks, 10 clay balls, 10 iron ingots */
|
[1, 20, "$ROCK", 10, "item@basegame:25", 10, "item@basegame:113"] /* 1 smelter = 20 rocks, 10 clay balls, 10 iron ingots */
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"item@basegame:36": { /* wire rolling mill */
|
||||||
|
"workbench": "basiccrafting,metalworking",
|
||||||
|
"ingredients": [
|
||||||
|
[1, 1, "$WOOD", 2, "$ROCK", 5, "item@basegame:113"] /* 1 plank, 2 stone, 5 iron ingot */
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"item@basegame:48": { /* alloying furnace */
|
||||||
|
"workbench": "basiccrafting,metalworking",
|
||||||
|
"ingredients": [
|
||||||
|
[1, 15, "$ROCK", 10, "item@basegame:25", 15, "item@basegame:113"] /* 1 smelter = 15 rocks, 10 clay balls, 15 iron ingot */
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"item@basegame:51": { /* electric workbench */
|
||||||
|
"workbench": "basiccrafting",
|
||||||
|
"ingredients": [
|
||||||
|
[1, 12, "$WOOD", 5, "item@basegame:113"] /* 12 wood, 5 iron */
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"item@basegame:53": { /* engraving workbench */
|
||||||
|
"workbench": "basiccrafting",
|
||||||
|
"ingredients": [
|
||||||
|
[1, 12, "$WOOD", 8, "item@basegame:113"] /* 12 wood, 8 iron */
|
||||||
|
]
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
"item@basegame:256": { /* oak door */
|
"item@basegame:256": { /* oak door */
|
||||||
"workbench": "basiccrafting",
|
"workbench": "basiccrafting",
|
||||||
@@ -59,14 +84,57 @@
|
|||||||
"item@basegame:6": { /* storage chest */
|
"item@basegame:6": { /* storage chest */
|
||||||
"workbench": "basiccrafting",
|
"workbench": "basiccrafting",
|
||||||
"ingredients": [
|
"ingredients": [
|
||||||
[1, 20, "$WOOD"] /* 1 chest = 20 wood */
|
[1, 20, "basegame:48"] /* 1 chest = 20 wood */
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"item@basegame:37": { /* storage chest */
|
||||||
|
"workbench": "basiccrafting",
|
||||||
|
"ingredients": [
|
||||||
|
[1, 20, "basegame:49"] /* 1 chest = 20 wood */
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"item@basegame:38": { /* storage chest */
|
||||||
|
"workbench": "basiccrafting",
|
||||||
|
"ingredients": [
|
||||||
|
[1, 20, "basegame:50"] /* 1 chest = 20 wood */
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"item@basegame:39": { /* storage chest */
|
||||||
|
"workbench": "basiccrafting",
|
||||||
|
"ingredients": [
|
||||||
|
[1, 20, "basegame:51"] /* 1 chest = 20 wood */
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|
||||||
"item@basegame:30": { /* turntable */
|
"item@basegame:30": { /* turntable */
|
||||||
"workbench": "basiccrafting",
|
"workbench": "basiccrafting",
|
||||||
"ingredients": [
|
"ingredients": [
|
||||||
[1, 4, "item@basegame:144", 14, "$WOOD", 10, "item@basegame:113"] /* 1 turntable = 4 quartz, 14 wood, 10 iron */
|
[1, 4, "item@basegame:144", 14, "$WOOD", 10, "item@basegame:177"] /* 1 turntable = 4 quartz, 14 wood, 10 brass */
|
||||||
|
]
|
||||||
|
},
|
||||||
|
|
||||||
|
"item@basegame:40": { /* table */
|
||||||
|
"workbench": "basiccrafting",
|
||||||
|
"ingredients": [
|
||||||
|
[1, 10, "basegame:48"] /* 10 wood */
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"item@basegame:41": { /* table */
|
||||||
|
"workbench": "basiccrafting",
|
||||||
|
"ingredients": [
|
||||||
|
[1, 10, "basegame:49"] /* 10 wood */
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"item@basegame:42": { /* table */
|
||||||
|
"workbench": "basiccrafting",
|
||||||
|
"ingredients": [
|
||||||
|
[1, 10, "basegame:50"] /* 10 wood */
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"item@basegame:43": { /* table */
|
||||||
|
"workbench": "basiccrafting",
|
||||||
|
"ingredients": [
|
||||||
|
[1, 10, "basegame:51"] /* 10 wood */
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,10 +1,14 @@
|
|||||||
{
|
{
|
||||||
"item@basegame:31": { /* gunpowder */
|
"item@basegame:31": { /* gunpowder */
|
||||||
"workbench": "basiccrafting",
|
"workbench": "basiccrafting",
|
||||||
"ingredients": [[3, 1, "item@basegame:147", 1, "item@basegame:29", 1, "item@basegame:129"]] /* 1 nitre, 1 charcoal, 1 iron ore */
|
"ingredients": [[8, 3, "item@basegame:147", 1, "item@basegame:29"]] /* 3 nitre, 1 charcoal */
|
||||||
},
|
},
|
||||||
"item@basegame:32": { /* cherry bomb */
|
"item@basegame:32": { /* cherry bomb */
|
||||||
"workbench": "",
|
"workbench": "",
|
||||||
"ingredients": [[1, 1, "item@basegame:31", 1, "item@basegame:25"]] /* 1 gunpowder, 1 clay ball */
|
"ingredients": [[1, 1, "item@basegame:31", 1, "item@basegame:25"]] /* 1 gunpowder, 1 clay ball */
|
||||||
|
},
|
||||||
|
"item@basegame:34": { /* signal switch */
|
||||||
|
"workbench": "",
|
||||||
|
"ingredients": [[2, 1, "item@basegame:112", 1, "$ROCK", 1, "$WOOD"]] /* 1 copper ingot, 1 rock, 1 planks */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
17
assets/mods/basegame/crafting/masonry.json
Normal file
17
assets/mods/basegame/crafting/masonry.json
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
{
|
||||||
|
/* stone brick */
|
||||||
|
"basegame:19": {
|
||||||
|
"workbench": "masonry",
|
||||||
|
"ingredients": [
|
||||||
|
[1, 1, "$BRICKROCK"]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
/* white stone tile */
|
||||||
|
"basegame:18": {
|
||||||
|
"workbench": "masonry",
|
||||||
|
"ingredients": [
|
||||||
|
[1, 1, "basegame:21"],
|
||||||
|
[1, 3, "$BRICKROCK"]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,61 +1,69 @@
|
|||||||
{
|
{
|
||||||
"item@basegame:14": { /* wooden pick */
|
"item@basegame:14": { /* wooden pick */
|
||||||
"workbench": "basiccrafting",
|
"workbench": "basiccrafting",
|
||||||
"ingredients": [[1, 6, "$WOOD", 2, "item@basegame:18"]] /* 6 woods, 2 sticks */
|
"ingredients": [[1, 5, "$WOOD", 2, "item@basegame:18"]] /* 5 woods, 2 sticks */
|
||||||
},
|
},
|
||||||
/*"item@basegame:22": {
|
/*"item@basegame:22": {
|
||||||
"workbench": "basiccrafting",
|
"workbench": "basiccrafting",
|
||||||
"ingredients": [[1, 6, "$WOOD", 2, "item@basegame:18"]]
|
"ingredients": [[1, 5, "$WOOD", 2, "item@basegame:18"]]
|
||||||
},*/
|
},*/
|
||||||
"item@basegame:15": { /* wooden mallet */
|
"item@basegame:15": { /* wooden mallet */
|
||||||
"workbench": "basiccrafting",
|
"workbench": "basiccrafting",
|
||||||
"ingredients": [[1, 6, "$WOOD", 2, "item@basegame:18"]]
|
"ingredients": [[1, 5, "$WOOD", 2, "item@basegame:18"]]
|
||||||
},
|
},
|
||||||
"item@basegame:23": { /* stone pick */
|
"item@basegame:23": { /* stone pick */
|
||||||
"workbench": "basiccrafting",
|
"workbench": "basiccrafting",
|
||||||
"ingredients": [[1, 6, "$ROCK", 2, "item@basegame:18"]]
|
"ingredients": [[1, 5, "$ROCK", 2, "item@basegame:18"]]
|
||||||
},
|
},
|
||||||
"item@basegame:24": { /* stone axe */
|
"item@basegame:24": { /* stone axe */
|
||||||
"workbench": "basiccrafting",
|
"workbench": "basiccrafting",
|
||||||
"ingredients": [[1, 6, "$ROCK", 2, "item@basegame:18"]]
|
"ingredients": [[1, 5, "$ROCK", 2, "item@basegame:18"]]
|
||||||
},
|
},
|
||||||
|
|
||||||
"item@basegame:1": { /* copper pick */
|
"item@basegame:1": { /* copper pick */
|
||||||
"workbench": "basiccrafting,metalworking",
|
"workbench": "basiccrafting,metalworking",
|
||||||
"ingredients": [[1, 6, "item@basegame:112", 2, "item@basegame:18"]] /* 6 bars, 2 sticks */
|
"ingredients": [[1, 5, "item@basegame:112", 2, "item@basegame:18"]] /* 5 bars, 2 sticks */
|
||||||
},
|
},
|
||||||
"item@basegame:2": { /* iron pick */
|
"item@basegame:2": { /* iron pick */
|
||||||
"workbench": "basiccrafting,metalworking",
|
"workbench": "basiccrafting,metalworking",
|
||||||
"ingredients": [[1, 6, "item@basegame:113", 2, "item@basegame:18"]] /* 6 bars, 2 sticks */
|
"ingredients": [[1, 5, "item@basegame:113", 2, "item@basegame:18"]] /* 5 bars, 2 sticks */
|
||||||
},
|
},
|
||||||
"item@basegame:3": { /* steel pick */
|
"item@basegame:3": { /* steel pick */
|
||||||
"workbench": "basiccrafting,metalworking",
|
"workbench": "basiccrafting,metalworking",
|
||||||
"ingredients": [[1, 6, "item@basegame:26", 2, "item@basegame:18"]] /* 6 bars, 2 sticks */
|
"ingredients": [[1, 5, "item@basegame:26", 2, "item@basegame:18"]] /* 5 bars, 2 sticks */
|
||||||
},
|
},
|
||||||
|
|
||||||
"item@basegame:12": { /* copper sledgehammer */
|
"item@basegame:12": { /* copper sledgehammer */
|
||||||
"workbench": "basiccrafting,metalworking",
|
"workbench": "basiccrafting,metalworking",
|
||||||
"ingredients": [[1, 6, "item@basegame:112", 2, "item@basegame:18"]] /* 6 bars, 2 sticks */
|
"ingredients": [[1, 5, "item@basegame:112", 2, "item@basegame:18"]] /* 5 bars, 2 sticks */
|
||||||
},
|
},
|
||||||
"item@basegame:4": { /* iron sledgehammer */
|
"item@basegame:4": { /* iron sledgehammer */
|
||||||
"workbench": "basiccrafting,metalworking",
|
"workbench": "basiccrafting,metalworking",
|
||||||
"ingredients": [[1, 6, "item@basegame:113", 2, "item@basegame:18"]] /* 6 bars, 2 sticks */
|
"ingredients": [[1, 5, "item@basegame:113", 2, "item@basegame:18"]] /* 5 bars, 2 sticks */
|
||||||
},
|
},
|
||||||
"item@basegame:13": { /* steel sledgehammer */
|
"item@basegame:13": { /* steel sledgehammer */
|
||||||
"workbench": "basiccrafting,metalworking",
|
"workbench": "basiccrafting,metalworking",
|
||||||
"ingredients": [[1, 6, "item@basegame:26", 2, "item@basegame:18"]] /* 6 bars, 2 sticks */
|
"ingredients": [[1, 5, "item@basegame:26", 2, "item@basegame:18"]] /* 5 bars, 2 sticks */
|
||||||
},
|
},
|
||||||
|
|
||||||
"item@basegame:19": { /* copper sledgehammer */
|
"item@basegame:19": { /* copper sledgehammer */
|
||||||
"workbench": "basiccrafting,metalworking",
|
"workbench": "basiccrafting,metalworking",
|
||||||
"ingredients": [[1, 6, "item@basegame:112", 2, "item@basegame:18"]] /* 6 bars, 2 sticks */
|
"ingredients": [[1, 5, "item@basegame:112", 2, "item@basegame:18"]] /* 5 bars, 2 sticks */
|
||||||
},
|
},
|
||||||
"item@basegame:20": { /* iron sledgehammer */
|
"item@basegame:20": { /* iron sledgehammer */
|
||||||
"workbench": "basiccrafting,metalworking",
|
"workbench": "basiccrafting,metalworking",
|
||||||
"ingredients": [[1, 6, "item@basegame:113", 2, "item@basegame:18"]] /* 6 bars, 2 sticks */
|
"ingredients": [[1, 5, "item@basegame:113", 2, "item@basegame:18"]] /* 5 bars, 2 sticks */
|
||||||
},
|
},
|
||||||
"item@basegame:21": { /* steel sledgehammer */
|
"item@basegame:21": { /* steel sledgehammer */
|
||||||
"workbench": "basiccrafting,metalworking",
|
"workbench": "basiccrafting,metalworking",
|
||||||
"ingredients": [[1, 6, "item@basegame:26", 2, "item@basegame:18"]] /* 6 bars, 2 sticks */
|
"ingredients": [[1, 5, "item@basegame:26", 2, "item@basegame:18"]] /* 5 bars, 2 sticks */
|
||||||
|
},
|
||||||
|
"item@basegame:9": { /* wire cutter */
|
||||||
|
"workbench": "basiccrafting,metalworking",
|
||||||
|
"ingredients": [[1, 1, "item@basegame:112", 1, "item@basegame:113"]] /* 1 copper ingot, 1 iron ingot */
|
||||||
|
},
|
||||||
|
"item@basegame:47": { /* wrench */
|
||||||
|
"workbench": "basiccrafting,metalworking",
|
||||||
|
"ingredients": [[1, 4, "item@basegame:113"]] /* 4 iron ingots */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
118
assets/mods/basegame/crafting/wires.json
Normal file
118
assets/mods/basegame/crafting/wires.json
Normal file
@@ -0,0 +1,118 @@
|
|||||||
|
{
|
||||||
|
"wire@basegame:8192": { /* signal wire red */
|
||||||
|
"workbench": "",
|
||||||
|
"ingredients": [
|
||||||
|
[1, 1, "$SIGNALWIRE"] /* 1 other signal wire */
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"wire@basegame:8193": { /* signal wire green */
|
||||||
|
"workbench": "",
|
||||||
|
"ingredients": [
|
||||||
|
[1, 1, "$SIGNALWIRE"] /* 1 other signal wire */
|
||||||
|
] },
|
||||||
|
"wire@basegame:8194": { /* signal wire blue */
|
||||||
|
"workbench": "",
|
||||||
|
"ingredients": [
|
||||||
|
[1, 1, "$SIGNALWIRE"] /* 1 other signal wire */
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"wire@basegame:8195": { /* signal wire yellow */
|
||||||
|
"workbench": "",
|
||||||
|
"ingredients": [
|
||||||
|
[1, 1, "$SIGNALWIRE"] /* 1 other signal wire */
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"wire@basegame:8196": { /* signal wire purple */
|
||||||
|
"workbench": "",
|
||||||
|
"ingredients": [
|
||||||
|
[1, 1, "$SIGNALWIRE"] /* 1 other signal wire */
|
||||||
|
]
|
||||||
|
},
|
||||||
|
|
||||||
|
"wire@basegame:8192": { /* signal wire red */
|
||||||
|
"workbench": "wirerollingmill",
|
||||||
|
"ingredients": [
|
||||||
|
[10, 1, "item@basegame:112"] /* 1 copper */
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"wire@basegame:8193": { /* signal wire green */
|
||||||
|
"workbench": "wirerollingmill",
|
||||||
|
"ingredients": [
|
||||||
|
[10, 1, "item@basegame:112"] /* 1 copper */
|
||||||
|
] },
|
||||||
|
"wire@basegame:8194": { /* signal wire blue */
|
||||||
|
"workbench": "wirerollingmill",
|
||||||
|
"ingredients": [
|
||||||
|
[10, 1, "item@basegame:112"] /* 1 copper */
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"wire@basegame:8195": { /* signal wire yellow */
|
||||||
|
"workbench": "wirerollingmill",
|
||||||
|
"ingredients": [
|
||||||
|
[10, 1, "item@basegame:112"] /* 1 copper */
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"wire@basegame:8196": { /* signal wire purple */
|
||||||
|
"workbench": "wirerollingmill",
|
||||||
|
"ingredients": [
|
||||||
|
[10, 1, "item@basegame:112"] /* 1 copper */
|
||||||
|
]
|
||||||
|
},
|
||||||
|
|
||||||
|
"item@basegame:50": { /* soldering wire */
|
||||||
|
"workbench": "wirerollingmill",
|
||||||
|
"ingredients": [
|
||||||
|
[10, 1, "item@basegame:181"] /* 1 solder bar */
|
||||||
|
]
|
||||||
|
},
|
||||||
|
|
||||||
|
"item@basegame:7": { /* multimeter */
|
||||||
|
"workbench": "soldering",
|
||||||
|
"ingredients": [
|
||||||
|
[2, 5, "item@basegame:112", 5, "item@basegame:117", 5, "item@basegame:177", 5, "$SEMICONDUCTOR", 1, "item@basegame:50"] /* 5 copper, 5 gold, 5 brass, 5 iron, 5 tin, 1 soldering wire (temporary) */
|
||||||
|
]
|
||||||
|
},
|
||||||
|
|
||||||
|
"item@basegame:35": { /* copper bulb */
|
||||||
|
"workbench": "soldering",
|
||||||
|
"ingredients": [
|
||||||
|
[2, 1, "item@basegame:112", 1, "item@basegame:113", 1, "item@basegame:50"] /* 1 copper, 1 iron, 1 soldering wire (temporary) */
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"item@basegame:44": { /* signal blocker */
|
||||||
|
"workbench": "soldering",
|
||||||
|
"ingredients": [
|
||||||
|
[1, 2, "$ROCK", 1, "$SEMICONDUCTOR", 1, "item@basegame:112", 1, "item@basegame:50"] /* 2 rocks, 1 tin, 1 copper, 1 soldering wire (temporary) */
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"item@basegame:45": { /* signal latch */
|
||||||
|
"workbench": "soldering",
|
||||||
|
"ingredients": [
|
||||||
|
[1, 3, "$ROCK", 1, "$SEMICONDUCTOR", 2, "item@basegame:112", 1, "item@basegame:50"] /* 3 rocks, 3 tin, 3 copper, 1 soldering wire (temporary) */
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"item@basegame:8": { /* signal emitter */
|
||||||
|
"workbench": "soldering",
|
||||||
|
"ingredients": [
|
||||||
|
[2, 1, "$ROCK", 1, "$SEMICONDUCTOR", 1, "item@basegame:50"] /* 1 rocks, 1 tin, 1 copper, 1 soldering wire (temporary) */
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"item@basegame:46": { /* signal repeater */
|
||||||
|
"workbench": "soldering",
|
||||||
|
"ingredients": [
|
||||||
|
[1, 1, "$ROCK", 1, "$SEMICONDUCTOR", 1, "item@basegame:50"] /* 1 rocks, 1 tin, 1 copper, 1 soldering wire (temporary) */
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"item@basegame:49": { /* signal adder */
|
||||||
|
"workbench": "soldering",
|
||||||
|
"ingredients": [
|
||||||
|
[1, 1, "$ROCK", 1, "$SEMICONDUCTOR", 1, "item@basegame:50"] /* 2 rocks, 2 tin, 2 copper, 1 soldering wire (temporary) */
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"item@basegame:52": { /* seven seg disp */
|
||||||
|
"workbench": "soldering",
|
||||||
|
"ingredients": [
|
||||||
|
[1, 4, "$ROCK", 7, "item@basegame:35", 5, "$SEMICONDUCTOR", 2, "item@basegame:112", 1, "item@basegame:50"] /* 4 rocks, 7 copper bulbs, 5 tin, 2 copper, 1 soldering wire (temporary) */
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,4 +1,6 @@
|
|||||||
{
|
{
|
||||||
"gameplay_max_crafting": 100,
|
"gameplay_max_crafting": 100,
|
||||||
"showpickaxetooltip": true
|
"showpickaxetooltip": true,
|
||||||
|
"gameplay_unit_distance": "meter",
|
||||||
|
"gameplay_unit_temperature": "celsius"
|
||||||
}
|
}
|
||||||
@@ -6,7 +6,7 @@ id;classname;tags
|
|||||||
5;net.torvald.terrarum.modulebasegame.gameitems.ItemTikiTorch;FIXTURE,LIGHT
|
5;net.torvald.terrarum.modulebasegame.gameitems.ItemTikiTorch;FIXTURE,LIGHT
|
||||||
6;net.torvald.terrarum.modulebasegame.gameitems.ItemStorageChest;FIXTURE,STORAGE
|
6;net.torvald.terrarum.modulebasegame.gameitems.ItemStorageChest;FIXTURE,STORAGE
|
||||||
7;net.torvald.terrarum.modulebasegame.gameitems.WireGraphDebugger;TOOL,WIRE
|
7;net.torvald.terrarum.modulebasegame.gameitems.WireGraphDebugger;TOOL,WIRE
|
||||||
8;net.torvald.terrarum.modulebasegame.gameitems.ItemLogicSignalEmitter;FIXTURE
|
8;net.torvald.terrarum.modulebasegame.gameitems.ItemLogicSignalEmitter;FIXTURE,SIGNAL
|
||||||
9;net.torvald.terrarum.modulebasegame.gameitems.WireCutterAll;TOOL,WIRE
|
9;net.torvald.terrarum.modulebasegame.gameitems.WireCutterAll;TOOL,WIRE
|
||||||
10;net.torvald.terrarum.modulebasegame.gameitems.ItemTypewriter;FIXTURE,PRINTING
|
10;net.torvald.terrarum.modulebasegame.gameitems.ItemTypewriter;FIXTURE,PRINTING
|
||||||
11;net.torvald.terrarum.modulebasegame.gameitems.ItemWallCalendar;FIXTURE
|
11;net.torvald.terrarum.modulebasegame.gameitems.ItemWallCalendar;FIXTURE
|
||||||
@@ -20,7 +20,7 @@ id;classname;tags
|
|||||||
19;net.torvald.terrarum.modulebasegame.gameitems.AxeCopper;TOOL,AXE
|
19;net.torvald.terrarum.modulebasegame.gameitems.AxeCopper;TOOL,AXE
|
||||||
20;net.torvald.terrarum.modulebasegame.gameitems.AxeIron;TOOL,AXE
|
20;net.torvald.terrarum.modulebasegame.gameitems.AxeIron;TOOL,AXE
|
||||||
21;net.torvald.terrarum.modulebasegame.gameitems.AxeSteel;TOOL,AXE
|
21;net.torvald.terrarum.modulebasegame.gameitems.AxeSteel;TOOL,AXE
|
||||||
#22;net.torvald.terrarum.modulebasegame.gameitems.AxeWood;TOOL,AXE
|
22;net.torvald.terrarum.modulebasegame.gameitems.AxeWood;TOOL,AXE
|
||||||
23;net.torvald.terrarum.modulebasegame.gameitems.PickaxeStone;TOOL,PICK
|
23;net.torvald.terrarum.modulebasegame.gameitems.PickaxeStone;TOOL,PICK
|
||||||
24;net.torvald.terrarum.modulebasegame.gameitems.AxeStone;TOOL,AXE
|
24;net.torvald.terrarum.modulebasegame.gameitems.AxeStone;TOOL,AXE
|
||||||
25;net.torvald.terrarum.modulebasegame.gameitems.ItemClayBall;
|
25;net.torvald.terrarum.modulebasegame.gameitems.ItemClayBall;
|
||||||
@@ -32,18 +32,46 @@ id;classname;tags
|
|||||||
31;net.torvald.terrarum.modulebasegame.gameitems.ItemGunpowder;POWDER,EXPLOSIVE
|
31;net.torvald.terrarum.modulebasegame.gameitems.ItemGunpowder;POWDER,EXPLOSIVE
|
||||||
32;net.torvald.terrarum.modulebasegame.gameitems.ItemCherryBomb;EXPLOSIVE,THROWABLE
|
32;net.torvald.terrarum.modulebasegame.gameitems.ItemCherryBomb;EXPLOSIVE,THROWABLE
|
||||||
33;net.torvald.terrarum.modulebasegame.gameitems.ItemTorch;FIXTURE,LIGHT
|
33;net.torvald.terrarum.modulebasegame.gameitems.ItemTorch;FIXTURE,LIGHT
|
||||||
|
34;net.torvald.terrarum.modulebasegame.gameitems.ItemLogicSignalSwitchManual;FIXTURE,SIGNAL
|
||||||
|
35;net.torvald.terrarum.modulebasegame.gameitems.ItemLogicSignalBulb;FIXTURE,SIGNAL
|
||||||
|
36;net.torvald.terrarum.modulebasegame.gameitems.ItemWireRollingMill;FIXTURE,CRAFTING
|
||||||
|
37;net.torvald.terrarum.modulebasegame.gameitems.ItemStorageChestEbony;FIXTURE,STORAGE
|
||||||
|
38;net.torvald.terrarum.modulebasegame.gameitems.ItemStorageChestBirch;FIXTURE,STORAGE
|
||||||
|
39;net.torvald.terrarum.modulebasegame.gameitems.ItemStorageChestRosewood;FIXTURE,STORAGE
|
||||||
|
40;net.torvald.terrarum.modulebasegame.gameitems.ItemTable;FIXTURE,SURFACE
|
||||||
|
41;net.torvald.terrarum.modulebasegame.gameitems.ItemTableEbony;FIXTURE,SURFACE
|
||||||
|
42;net.torvald.terrarum.modulebasegame.gameitems.ItemTableBirch;FIXTURE,SURFACE
|
||||||
|
43;net.torvald.terrarum.modulebasegame.gameitems.ItemTableRosewood;FIXTURE,SURFACE
|
||||||
|
44;net.torvald.terrarum.modulebasegame.gameitems.ItemLogicSignalBlocker;FIXTURE,SIGNAL
|
||||||
|
45;net.torvald.terrarum.modulebasegame.gameitems.ItemLogicSignalLatch;FIXTURE,SIGNAL
|
||||||
|
46;net.torvald.terrarum.modulebasegame.gameitems.ItemLogicSignalRepeaterHorz;FIXTURE,SIGNAL
|
||||||
|
47;net.torvald.terrarum.modulebasegame.gameitems.ItemWrench;TOOL,WRENCH
|
||||||
|
48;net.torvald.terrarum.modulebasegame.gameitems.ItemAlloyingFurnace;FIXTURE,STATION
|
||||||
|
49;net.torvald.terrarum.modulebasegame.gameitems.ItemLogicSignalAdder;FIXTURE,SIGNAL
|
||||||
|
50;net.torvald.terrarum.modulebasegame.gameitems.ItemSolderingWire;
|
||||||
|
51;net.torvald.terrarum.modulebasegame.gameitems.ItemElectricWorkbench;FIXTURE,CRAFTING
|
||||||
|
52;net.torvald.terrarum.modulebasegame.gameitems.ItemLogicSignalSevenSeg;FIXTURE,SIGNAL
|
||||||
|
53;net.torvald.terrarum.modulebasegame.gameitems.ItemEngravingWorkbench;FIXTURE,CRAFTING
|
||||||
|
|
||||||
# ingots
|
# ingots
|
||||||
26;net.torvald.terrarum.modulebasegame.gameitems.IngotSteel;INGOT
|
|
||||||
112;net.torvald.terrarum.modulebasegame.gameitems.IngotCopper;INGOT
|
112;net.torvald.terrarum.modulebasegame.gameitems.IngotCopper;INGOT
|
||||||
113;net.torvald.terrarum.modulebasegame.gameitems.IngotIron;INGOT
|
113;net.torvald.terrarum.modulebasegame.gameitems.IngotIron;INGOT
|
||||||
114;net.torvald.terrarum.modulebasegame.gameitems.ItemCoalCoke;COMBUSTIBLE
|
114;net.torvald.terrarum.modulebasegame.gameitems.ItemCoalCoke;COMBUSTIBLE
|
||||||
115;net.torvald.terrarum.modulebasegame.gameitems.IngotZinc;INGOT
|
115;net.torvald.terrarum.modulebasegame.gameitems.IngotZinc;INGOT
|
||||||
116;net.torvald.terrarum.modulebasegame.gameitems.IngotTin;INGOT
|
116;net.torvald.terrarum.modulebasegame.gameitems.IngotTin;INGOT,SEMICONDUCTOR
|
||||||
117;net.torvald.terrarum.modulebasegame.gameitems.IngotGold;INGOT
|
117;net.torvald.terrarum.modulebasegame.gameitems.IngotGold;INGOT
|
||||||
118;net.torvald.terrarum.modulebasegame.gameitems.IngotSilver;INGOT
|
118;net.torvald.terrarum.modulebasegame.gameitems.IngotSilver;INGOT
|
||||||
119;net.torvald.terrarum.modulebasegame.gameitems.IngotLead;INGOT
|
119;net.torvald.terrarum.modulebasegame.gameitems.IngotLead;INGOT
|
||||||
|
|
||||||
|
# alloys
|
||||||
|
26;net.torvald.terrarum.modulebasegame.gameitems.IngotSteel;INGOT,ALLOY
|
||||||
|
176;net.torvald.terrarum.modulebasegame.gameitems.IngotBronze;INGOT,ALLOY
|
||||||
|
177;net.torvald.terrarum.modulebasegame.gameitems.IngotBrass;INGOT,ALLOY
|
||||||
|
178;net.torvald.terrarum.modulebasegame.gameitems.IngotElectrum;INGOT,ALLOY
|
||||||
|
179;net.torvald.terrarum.modulebasegame.gameitems.IngotSilverBillon;INGOT,ALLOY
|
||||||
|
180;net.torvald.terrarum.modulebasegame.gameitems.IngotRosegold;INGOT,ALLOY
|
||||||
|
181;net.torvald.terrarum.modulebasegame.gameitems.IngotSolder;INGOT,ALLOY
|
||||||
|
|
||||||
# ores
|
# ores
|
||||||
128;net.torvald.terrarum.modulebasegame.gameitems.OreCopper;SMELTABLE
|
128;net.torvald.terrarum.modulebasegame.gameitems.OreCopper;SMELTABLE
|
||||||
129;net.torvald.terrarum.modulebasegame.gameitems.OreIron;SMELTABLE
|
129;net.torvald.terrarum.modulebasegame.gameitems.OreIron;SMELTABLE
|
||||||
@@ -68,10 +96,10 @@ id;classname;tags
|
|||||||
163;net.torvald.terrarum.modulebasegame.gameitems.ItemSeedRosewood;SEEDLING
|
163;net.torvald.terrarum.modulebasegame.gameitems.ItemSeedRosewood;SEEDLING
|
||||||
|
|
||||||
# tree logs
|
# tree logs
|
||||||
168;net.torvald.terrarum.modulebasegame.gameitems.ItemLogsOak;COMBUSTIBLE,SMELTABLE
|
168;net.torvald.terrarum.modulebasegame.gameitems.ItemLogsOak;COMBUSTIBLE,SMELTABLE,LOGS
|
||||||
169;net.torvald.terrarum.modulebasegame.gameitems.ItemLogsEbony;COMBUSTIBLE,SMELTABLE
|
169;net.torvald.terrarum.modulebasegame.gameitems.ItemLogsEbony;COMBUSTIBLE,SMELTABLE,LOGS
|
||||||
170;net.torvald.terrarum.modulebasegame.gameitems.ItemLogsBirch;COMBUSTIBLE,SMELTABLE
|
170;net.torvald.terrarum.modulebasegame.gameitems.ItemLogsBirch;COMBUSTIBLE,SMELTABLE,LOGS
|
||||||
171;net.torvald.terrarum.modulebasegame.gameitems.ItemLogsRosewood;COMBUSTIBLE,SMELTABLE
|
171;net.torvald.terrarum.modulebasegame.gameitems.ItemLogsRosewood;COMBUSTIBLE,SMELTABLE,LOGS
|
||||||
|
|
||||||
|
|
||||||
256;net.torvald.terrarum.modulebasegame.gameitems.ItemSwingingDoorOak;FIXTURE
|
256;net.torvald.terrarum.modulebasegame.gameitems.ItemSwingingDoorOak;FIXTURE
|
||||||
@@ -94,16 +122,21 @@ id;classname;tags
|
|||||||
32777;net.torvald.terrarum.modulebasegame.gameitems.MusicDisc09;MUSIC,PHONO
|
32777;net.torvald.terrarum.modulebasegame.gameitems.MusicDisc09;MUSIC,PHONO
|
||||||
|
|
||||||
# data storage (tapestries; 256)
|
# data storage (tapestries; 256)
|
||||||
#33023;net.torvald.terrarum.modulebasegame.gameitems.ItemTapestry;FIXTURE
|
#33024;net.torvald.terrarum.modulebasegame.gameitems.ItemTapestry;FIXTURE,BASEOBJECT
|
||||||
|
|
||||||
|
# data storage (text signs; 256)
|
||||||
|
33280;net.torvald.terrarum.modulebasegame.gameitems.ItemTextSignCopper;FIXTURE,BASEOBJECT
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# fluids on storage
|
# fluids on storage
|
||||||
# preferably autogenerated
|
# preferably autogenerated
|
||||||
# 10000h..100FFh : Fluid type 0 (water) x container type 0..255
|
# 100000h..1000FFh : Fluid type 0 (water) x container type 0..255
|
||||||
# 10100h..101FFh : Fluid type 1 (lava) x container type 0..255
|
# 100100h..1001FFh : Fluid type 1 (lava) x container type 0..255
|
||||||
# 10200h..102FFh : Fluid type 2 (crude oil) x container type 0..255
|
# 100200h..1002FFh : Fluid type 2 (crude oil) x container type 0..255
|
||||||
# 10300h..103FFh : Fluid type 3 (petroleum) x container type 0..255
|
# 100300h..1003FFh : Fluid type 3 (petroleum) x container type 0..255
|
||||||
# 10400h..104FFh : Fluid type 4 (compressed air) x container type 0..255
|
# 100400h..1004FFh : Fluid type 4 (compressed air) x container type 0..255
|
||||||
# 10500h..105FFh : Fluid type 5 (steam) x container type 0..255
|
# 100500h..1005FFh : Fluid type 5 (steam) x container type 0..255
|
||||||
# ...
|
# ...
|
||||||
# 1FF00h..1FFFFh : Fluid type 255 (???) x container type 0..255
|
# 10FF00h..10FFFFh : Fluid type 255 (???) x container type 0..255
|
||||||
|
|
||||||
|
|||||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
15
assets/mods/basegame/locales/en/configmenu.json
Normal file
15
assets/mods/basegame/locales/en/configmenu.json
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"MENU_MONITOR_CALI_TITLE": "Check Monitor",
|
||||||
|
"MENU_OPTIONS_SHOW_ORES_TOOLTIP_WHEN_MINING": "Show Ore Tooltip When Mining",
|
||||||
|
"MENU_OPTIONS_MAX_CRAFTING": "Max Number of Items for Crafting",
|
||||||
|
"MENU_OPTIONS_UNIT_BLOCKS": "Blocks",
|
||||||
|
"MENU_OPTIONS_UNIT_FEET": "Imperial",
|
||||||
|
"MENU_OPTIONS_UNIT_METRIC": "Metric",
|
||||||
|
"MENU_OPTIONS_UNIT_OF_MEASUREMENT": "Unit of Measurement",
|
||||||
|
"MENU_OPTIONS_DISTANCE_UNIT": "Distance",
|
||||||
|
"MENU_OPTIONS_TEMPERATURE_UNIT": "Temperature",
|
||||||
|
|
||||||
|
"MENU_OPTIONS_UNIT_CELSIUS_DNT": "°C",
|
||||||
|
"MENU_OPTIONS_UNIT_FAHRENHEIT_DNT": "°F",
|
||||||
|
"MENU_OPTIONS_UNIT_KELVIN_DNT": "K"
|
||||||
|
}
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
{
|
{
|
||||||
|
"CONTEXT_ENGRAVER_TEXT": "Text",
|
||||||
"CONTEXT_GENERATOR_SEED": "Seed",
|
"CONTEXT_GENERATOR_SEED": "Seed",
|
||||||
"CONTEXT_ITEM_FIXTURES": "Fixtures",
|
"CONTEXT_ITEM_FIXTURES": "Fixtures",
|
||||||
"CONTEXT_ITEM_MAP": "Map",
|
"CONTEXT_ITEM_MAP": "Map",
|
||||||
@@ -13,15 +14,12 @@
|
|||||||
"MENU_LABEL_RENAME": "Rename",
|
"MENU_LABEL_RENAME": "Rename",
|
||||||
"MENU_LABEL_USE_CODE": "Use Code",
|
"MENU_LABEL_USE_CODE": "Use Code",
|
||||||
"MENU_MODE_BUILDINGMAKER": "POI Editor",
|
"MENU_MODE_BUILDINGMAKER": "POI Editor",
|
||||||
"MENU_MONITOR_CALI_TITLE": "Check Monitor",
|
|
||||||
"MENU_OPTIONS_SHOW_ORES_TOOLTIP_WHEN_MINING": "Show Ore Tooltip When Mining",
|
|
||||||
"MENU_OPTIONS_MAX_CRAFTING": "Max Number of Items for Crafting",
|
|
||||||
"MENU_UPDATE_UPDATE_AVAILABLE": "Update Available!",
|
"MENU_UPDATE_UPDATE_AVAILABLE": "Update Available!",
|
||||||
"GAME_ACTION_GRAPPLE": "Grapple",
|
"GAME_ACTION_GRAPPLE": "Grapple",
|
||||||
"GAME_ACTION_QUICKSEL": "Quick Select",
|
"GAME_ACTION_QUICKSEL": "Quick Select",
|
||||||
"GAME_ACTION_SELECT_SLOT": "Select Slot",
|
"GAME_ACTION_SELECT_SLOT": "Select Slot",
|
||||||
"GAME_ACTION_TELEPORT": "Teleport",
|
"GAME_ACTION_TELEPORT": "Teleport",
|
||||||
"GAME_CRAFTABLE_ITEMS": "Craftable Items",
|
"GAME_CRAFTABLE_ITEMS": "Recipes",
|
||||||
"GAME_CRAFTING": "Crafting",
|
"GAME_CRAFTING": "Crafting",
|
||||||
"GAME_INVENTORY_BLOCKS": "Blocks",
|
"GAME_INVENTORY_BLOCKS": "Blocks",
|
||||||
"GAME_INVENTORY_FAVORITES": "Favorites",
|
"GAME_INVENTORY_FAVORITES": "Favorites",
|
||||||
|
|||||||
@@ -6,9 +6,11 @@
|
|||||||
"TOOLTIP_wire@basegame:8192": "Carries signals",
|
"TOOLTIP_wire@basegame:8192": "Carries signals",
|
||||||
"TOOLTIP_wire@basegame:8193": "Carries signals",
|
"TOOLTIP_wire@basegame:8193": "Carries signals",
|
||||||
"TOOLTIP_wire@basegame:8194": "Carries signals",
|
"TOOLTIP_wire@basegame:8194": "Carries signals",
|
||||||
"TOOLTIP_wire@basegame:8196": "Carries power",
|
"TOOLTIP_wire@basegame:8195": "Carries signals",
|
||||||
"TOOLTIP_wire@basegame:8197": "Carries power",
|
"TOOLTIP_wire@basegame:8196": "Carries signals",
|
||||||
"TOOLTIP_wire@basegame:8198": "Carries information",
|
"TOOLTIP_wire@basegame:1": "Carries power",
|
||||||
|
"TOOLTIP_wire@basegame:2": "Carries power",
|
||||||
|
"TOOLTIP_wire@basegame:16": "Carries information",
|
||||||
|
|
||||||
"TOOLTIP_item@basegame:1": "Breaks rocks",
|
"TOOLTIP_item@basegame:1": "Breaks rocks",
|
||||||
"TOOLTIP_item@basegame:2": "Breaks rocks",
|
"TOOLTIP_item@basegame:2": "Breaks rocks",
|
||||||
@@ -16,8 +18,10 @@
|
|||||||
"TOOLTIP_item@basegame:4": "Breaks down walls",
|
"TOOLTIP_item@basegame:4": "Breaks down walls",
|
||||||
"TOOLTIP_item@basegame:5": "Provides light but fancier",
|
"TOOLTIP_item@basegame:5": "Provides light but fancier",
|
||||||
"TOOLTIP_item@basegame:6": "“I am sworn to keep your burdens.”", /* skyrim/lydia reference */
|
"TOOLTIP_item@basegame:6": "“I am sworn to keep your burdens.”", /* skyrim/lydia reference */
|
||||||
"TOOLTIP_item@basegame:8": "Emits a signal",
|
"TOOLTIP_item@basegame:37": "“I am sworn to keep your burdens.”", /* skyrim/lydia reference */
|
||||||
"TOOLTIP_item@basegame:9": "An electricians’ best friend",
|
"TOOLTIP_item@basegame:38": "“I am sworn to keep your burdens.”", /* skyrim/lydia reference */
|
||||||
|
"TOOLTIP_item@basegame:39": "“I am sworn to keep your burdens.”", /* skyrim/lydia reference */
|
||||||
|
"TOOLTIP_item@basegame:9": "Push {MOUSE:config_mousesecondary} to change the colour",
|
||||||
"TOOLTIP_item@basegame:10": "“Who needs a Book and Quill when you’ve got this?”", /* a jab on the Minecraft item Book and Quill */
|
"TOOLTIP_item@basegame:10": "“Who needs a Book and Quill when you’ve got this?”", /* a jab on the Minecraft item Book and Quill */
|
||||||
"TOOLTIP_item@basegame:11": "Tells what day it is",
|
"TOOLTIP_item@basegame:11": "Tells what day it is",
|
||||||
"TOOLTIP_item@basegame:12": "Breaks down walls",
|
"TOOLTIP_item@basegame:12": "Breaks down walls",
|
||||||
@@ -31,6 +35,7 @@
|
|||||||
"TOOLTIP_item@basegame:20": "Cuts trees",
|
"TOOLTIP_item@basegame:20": "Cuts trees",
|
||||||
"TOOLTIP_item@basegame:21": "Cuts trees",
|
"TOOLTIP_item@basegame:21": "Cuts trees",
|
||||||
"TOOLTIP_item@basegame:22": "Cuts trees, just barely",
|
"TOOLTIP_item@basegame:22": "Cuts trees, just barely",
|
||||||
|
/*"TOOLTIP_item@basegame:22": "Perhaps it’s more useful for casting than actually using",*/
|
||||||
"TOOLTIP_item@basegame:23": "Breaks rocks",
|
"TOOLTIP_item@basegame:23": "Breaks rocks",
|
||||||
"TOOLTIP_item@basegame:24": "Cuts trees",
|
"TOOLTIP_item@basegame:24": "Cuts trees",
|
||||||
"TOOLTIP_item@basegame:25": "Finer grains of dirts that gets stronger when burned",
|
"TOOLTIP_item@basegame:25": "Finer grains of dirts that gets stronger when burned",
|
||||||
@@ -38,8 +43,21 @@
|
|||||||
"TOOLTIP_item@basegame:27": "Every blacksmith gotta start from somewhere",
|
"TOOLTIP_item@basegame:27": "Every blacksmith gotta start from somewhere",
|
||||||
"TOOLTIP_item@basegame:28": "A music vending machine (free to play)",
|
"TOOLTIP_item@basegame:28": "A music vending machine (free to play)",
|
||||||
"TOOLTIP_item@basegame:29": "A coal lookalike that burns just as well and is renewable",
|
"TOOLTIP_item@basegame:29": "A coal lookalike that burns just as well and is renewable",
|
||||||
|
"TOOLTIP_item@basegame:36": "Creates wires from metal ingots",
|
||||||
|
"TOOLTIP_item@basegame:47": "Reorients gadgets",
|
||||||
|
"TOOLTIP_item@basegame:48": "Melts two metal ingots to make a bar of alloy",
|
||||||
|
"TOOLTIP_item@basegame:50": "Use it on the Electronics Workbench",
|
||||||
|
|
||||||
"TOOLTIP_item@basegame:114": "A precious fuel for the steel production",
|
"TOOLTIP_item@basegame:114": "A precious fuel for the steel production",
|
||||||
|
|
||||||
"TOOLTIP_item@basegame:320": "Travel multiverse!\nWarning: a pair is needed for the return trip"
|
"TOOLTIP_item@basegame:320": "Travel multiverse!\nWarning: a pair is needed for the return trip",
|
||||||
|
|
||||||
|
|
||||||
|
"TOOLTIP_item@basegame:8": "Emits a signal",
|
||||||
|
"TOOLTIP_item@basegame:34": "Selectively emits a signal",
|
||||||
|
"TOOLTIP_item@basegame:35": "Shows a signal status",
|
||||||
|
"TOOLTIP_item@basegame:44": "Cuts the signal using the cutting signal",
|
||||||
|
"TOOLTIP_item@basegame:45": "Latches onto the signal on the latch signal",
|
||||||
|
"TOOLTIP_item@basegame:46": "Delays a signal by a short amount",
|
||||||
|
"TOOLTIP_item@basegame:49": "Logically adds two signals"
|
||||||
}
|
}
|
||||||
@@ -1,12 +1,17 @@
|
|||||||
{
|
{
|
||||||
|
"ITEM_ALLOYING_FURNACE": "Alloying Furnace",
|
||||||
"ITEM_CALENDAR": "Calendar",
|
"ITEM_CALENDAR": "Calendar",
|
||||||
"ITEM_CHARCOAL": "Charcoal",
|
"ITEM_CHARCOAL": "Charcoal",
|
||||||
"ITEM_CHERRY_BOMB": "Bomb",
|
"ITEM_CHERRY_BOMB": "Bomb",
|
||||||
"ITEM_COAL_COKE": "Coal Coke",
|
"ITEM_COAL_COKE": "Coal Coke",
|
||||||
|
"ITEM_COPPER_BULB": "Copper Bulb",
|
||||||
|
"ITEM_COPPER_SIGN": "Copper Sign",
|
||||||
"ITEM_DOOR_OAK": "Oak Door",
|
"ITEM_DOOR_OAK": "Oak Door",
|
||||||
"ITEM_DOOR_EBONY": "Ebony Door",
|
"ITEM_DOOR_EBONY": "Ebony Door",
|
||||||
"ITEM_DOOR_BIRCH": "Birch Door",
|
"ITEM_DOOR_BIRCH": "Birch Door",
|
||||||
"ITEM_DOOR_ROSEWOOD": "Rosewood Door",
|
"ITEM_DOOR_ROSEWOOD": "Rosewood Door",
|
||||||
|
"ITEM_ELECTRIC_WORKBENCH": "Electric Workbench",
|
||||||
|
"ITEM_ENGRAVING_WORKBENCH": "Engraving Workbench",
|
||||||
"ITEM_FURNACE_AND_ANVIL": "Furnace and Anvil",
|
"ITEM_FURNACE_AND_ANVIL": "Furnace and Anvil",
|
||||||
"ITEM_GEM_RUBY": "Raw Ruby",
|
"ITEM_GEM_RUBY": "Raw Ruby",
|
||||||
"ITEM_GEM_EMERALD": "Raw Emerald",
|
"ITEM_GEM_EMERALD": "Raw Emerald",
|
||||||
@@ -36,11 +41,18 @@
|
|||||||
"ITEM_INGOT_TIN": "Tin Ingot",
|
"ITEM_INGOT_TIN": "Tin Ingot",
|
||||||
"ITEM_INGOT_ZINC": "Zinc Ingot",
|
"ITEM_INGOT_ZINC": "Zinc Ingot",
|
||||||
"ITEM_JUKEBOX": "Jukebox",
|
"ITEM_JUKEBOX": "Jukebox",
|
||||||
|
"ITEM_LOGIC_SIGNAL_ADDER": "Logic Signal Adder",
|
||||||
|
"ITEM_LOGIC_SIGNAL_BLOCKER": "Logic Signal Blocker",
|
||||||
"ITEM_LOGIC_SIGNAL_EMITTER": "Logic Signal Emitter",
|
"ITEM_LOGIC_SIGNAL_EMITTER": "Logic Signal Emitter",
|
||||||
|
"ITEM_LOGIC_SIGNAL_LATCH": "Logic Signal Latch",
|
||||||
|
"ITEM_LOGIC_SIGNAL_NUMERIC_DISPLAY": "Logic Signal Numeric Display",
|
||||||
|
"ITEM_LOGIC_SIGNAL_REPEATER": "Logic Signal Repeater",
|
||||||
|
"ITEM_LOGIC_SIGNAL_SWITCH": "Logic Signal Switch",
|
||||||
"ITEM_LOGS_BIRCH": "Birch Logs",
|
"ITEM_LOGS_BIRCH": "Birch Logs",
|
||||||
"ITEM_LOGS_EBONY": "Ebony Logs",
|
"ITEM_LOGS_EBONY": "Ebony Logs",
|
||||||
"ITEM_LOGS_OAK": "Oak Logs",
|
"ITEM_LOGS_OAK": "Oak Logs",
|
||||||
"ITEM_LOGS_ROSEWOOD": "Rosewood Logs",
|
"ITEM_LOGS_ROSEWOOD": "Rosewood Logs",
|
||||||
|
"ITEM_MULTIMETER": "Multimeter",
|
||||||
"ITEM_NITRE": "Nitre",
|
"ITEM_NITRE": "Nitre",
|
||||||
"ITEM_ORE_CASSITERITE": "Tin Ore",
|
"ITEM_ORE_CASSITERITE": "Tin Ore",
|
||||||
"ITEM_ORE_COAL": "Coal",
|
"ITEM_ORE_COAL": "Coal",
|
||||||
@@ -63,18 +75,25 @@
|
|||||||
"ITEM_SLEDGEHAMMER_COPPER": "Copper Sledgehammer",
|
"ITEM_SLEDGEHAMMER_COPPER": "Copper Sledgehammer",
|
||||||
"ITEM_SLEDGEHAMMER_IRON": "Iron Sledgehammer",
|
"ITEM_SLEDGEHAMMER_IRON": "Iron Sledgehammer",
|
||||||
"ITEM_SLEDGEHAMMER_STEEL": "Steel Sledgehammer",
|
"ITEM_SLEDGEHAMMER_STEEL": "Steel Sledgehammer",
|
||||||
|
"ITEM_SOLDERING_WIRE": "Soldering Wire",
|
||||||
"ITEM_SMELTER_SMALL": "Small Smelter",
|
"ITEM_SMELTER_SMALL": "Small Smelter",
|
||||||
"ITEM_STORAGE_CHEST": "Storage Chest",
|
"ITEM_STORAGE_CHEST": "Storage Chest",
|
||||||
|
"ITEM_TABLE_OAK": "Oak Table",
|
||||||
|
"ITEM_TABLE_EBONY": "Ebony Table",
|
||||||
|
"ITEM_TABLE_BIRCH": "Birch Table",
|
||||||
|
"ITEM_TABLE_ROSEWOOD": "Rosewood Table",
|
||||||
"ITEM_TIKI_TORCH": "Tiki Torch",
|
"ITEM_TIKI_TORCH": "Tiki Torch",
|
||||||
"ITEM_TURNTABLE": "Turntable",
|
"ITEM_TURNTABLE": "Turntable",
|
||||||
"ITEM_TYPEWRITER": "Typewriter",
|
"ITEM_TYPEWRITER": "Typewriter",
|
||||||
"ITEM_WIRE": "Wire",
|
"ITEM_WIRE": "Wire",
|
||||||
"ITEM_WIRE_CUTTER": "Wire Cutter",
|
"ITEM_WIRE_CUTTER": "Wire Cutter",
|
||||||
|
"ITEM_WIRE_ROLLING_MILL": "Wire Rolling Mill",
|
||||||
"ITEM_WOOD_STICK": "Stick",
|
"ITEM_WOOD_STICK": "Stick",
|
||||||
"ITEM_WOODEN_MALLET": "Wooden Mallet",
|
"ITEM_WOODEN_MALLET": "Wooden Mallet",
|
||||||
"ITEM_WORKBENCH": "Workbench",
|
"ITEM_WORKBENCH": "Workbench",
|
||||||
"ITEM_WORLD_PORTAL": "Teleportation Station",
|
"ITEM_WORLD_PORTAL": "Teleportation Station",
|
||||||
|
"ITEM_WRENCH": "Wrench",
|
||||||
|
/* below are placeholders; please do not translate */
|
||||||
"ACTORBLOCK_ALLOW_MOVE_DOWN": "Urist Arôlcustith",
|
"ACTORBLOCK_ALLOW_MOVE_DOWN": "Urist Arôlcustith",
|
||||||
"ACTORBLOCK_FULL_COLLISION": "Urist Berdanrifot",
|
"ACTORBLOCK_FULL_COLLISION": "Urist Berdanrifot",
|
||||||
"ACTORBLOCK_NO_COLLISION": "Urist Zafal",
|
"ACTORBLOCK_NO_COLLISION": "Urist Zafal",
|
||||||
|
|||||||
11
assets/mods/basegame/locales/koKR/configmenu.json
Normal file
11
assets/mods/basegame/locales/koKR/configmenu.json
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"MENU_MONITOR_CALI_TITLE": "모니터 확인",
|
||||||
|
"MENU_OPTIONS_SHOW_ORES_TOOLTIP_WHEN_MINING": "채굴 시 광석 툴팁 보이기",
|
||||||
|
"MENU_OPTIONS_MAX_CRAFTING": "한번에 제작할 최대 아이템 수",
|
||||||
|
"MENU_OPTIONS_UNIT_BLOCKS": "블록",
|
||||||
|
"MENU_OPTIONS_UNIT_FEET": "피트",
|
||||||
|
"MENU_OPTIONS_UNIT_METRIC": "미터",
|
||||||
|
"MENU_OPTIONS_UNIT_OF_MEASUREMENT": "측정 단위",
|
||||||
|
"MENU_OPTIONS_DISTANCE_UNIT": "거리",
|
||||||
|
"MENU_OPTIONS_TEMPERATURE_UNIT": "온도"
|
||||||
|
}
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
{
|
{
|
||||||
|
"CONTEXT_ENGRAVER_TEXT": "문구",
|
||||||
"CONTEXT_GENERATOR_SEED": "시드",
|
"CONTEXT_GENERATOR_SEED": "시드",
|
||||||
"CONTEXT_ITEM_FIXTURES": "기구",
|
"CONTEXT_ITEM_FIXTURES": "기구",
|
||||||
"CONTEXT_ITEM_MAP": "지도",
|
"CONTEXT_ITEM_MAP": "지도",
|
||||||
@@ -12,15 +13,12 @@
|
|||||||
"MENU_LABEL_PREV_SAVES": "이전 세이브",
|
"MENU_LABEL_PREV_SAVES": "이전 세이브",
|
||||||
"MENU_LABEL_RENAME": "이름 바꾸기",
|
"MENU_LABEL_RENAME": "이름 바꾸기",
|
||||||
"MENU_LABEL_USE_CODE": "코드 사용",
|
"MENU_LABEL_USE_CODE": "코드 사용",
|
||||||
"MENU_MONITOR_CALI_TITLE": "모니터 확인",
|
|
||||||
"MENU_OPTIONS_SHOW_ORES_TOOLTIP_WHEN_MINING": "채굴 시 광석 툴팁 보이기",
|
|
||||||
"MENU_OPTIONS_MAX_CRAFTING": "한번에 제작할 최대 아이템 수",
|
|
||||||
"MENU_UPDATE_UPDATE_AVAILABLE": "새 업데이트가 있습니다!",
|
"MENU_UPDATE_UPDATE_AVAILABLE": "새 업데이트가 있습니다!",
|
||||||
"GAME_ACTION_GRAPPLE": "매달리기",
|
"GAME_ACTION_GRAPPLE": "매달리기",
|
||||||
"GAME_ACTION_QUICKSEL": "빠른 선택",
|
"GAME_ACTION_QUICKSEL": "빠른 선택",
|
||||||
"GAME_ACTION_SELECT_SLOT": "슬롯 선택",
|
"GAME_ACTION_SELECT_SLOT": "슬롯 선택",
|
||||||
"GAME_ACTION_TELEPORT": "텔레포트하기",
|
"GAME_ACTION_TELEPORT": "텔레포트하기",
|
||||||
"GAME_CRAFTABLE_ITEMS": "제작 가능한 아이템",
|
"GAME_CRAFTABLE_ITEMS": "제작 레시피",
|
||||||
"GAME_CRAFTING": "제작",
|
"GAME_CRAFTING": "제작",
|
||||||
"GAME_INVENTORY_BLOCKS": "블록",
|
"GAME_INVENTORY_BLOCKS": "블록",
|
||||||
"GAME_INVENTORY_FAVORITES": "즐겨찾기",
|
"GAME_INVENTORY_FAVORITES": "즐겨찾기",
|
||||||
|
|||||||
@@ -6,9 +6,10 @@
|
|||||||
"TOOLTIP_wire@basegame:8192": "신호를 전달합니다",
|
"TOOLTIP_wire@basegame:8192": "신호를 전달합니다",
|
||||||
"TOOLTIP_wire@basegame:8193": "신호를 전달합니다",
|
"TOOLTIP_wire@basegame:8193": "신호를 전달합니다",
|
||||||
"TOOLTIP_wire@basegame:8194": "신호를 전달합니다",
|
"TOOLTIP_wire@basegame:8194": "신호를 전달합니다",
|
||||||
"TOOLTIP_wire@basegame:8196": "전력을 전달합니다",
|
"TOOLTIP_wire@basegame:8195": "신호를 전달합니다",
|
||||||
"TOOLTIP_wire@basegame:8197": "전력을 전달합니다",
|
"TOOLTIP_wire@basegame:1": "전력을 전달합니다",
|
||||||
"TOOLTIP_wire@basegame:8198": "정보를 전달합니다",
|
"TOOLTIP_wire@basegame:2": "전력을 전달합니다",
|
||||||
|
"TOOLTIP_wire@basegame:16": "정보를 전달합니다",
|
||||||
|
|
||||||
"TOOLTIP_item@basegame:1": "돌을 부숩니다",
|
"TOOLTIP_item@basegame:1": "돌을 부숩니다",
|
||||||
"TOOLTIP_item@basegame:2": "돌을 부숩니다",
|
"TOOLTIP_item@basegame:2": "돌을 부숩니다",
|
||||||
@@ -16,8 +17,10 @@
|
|||||||
"TOOLTIP_item@basegame:4": "벽을 부숩니다",
|
"TOOLTIP_item@basegame:4": "벽을 부숩니다",
|
||||||
"TOOLTIP_item@basegame:5": "빛을 더 이쁘게 냅니다",
|
"TOOLTIP_item@basegame:5": "빛을 더 이쁘게 냅니다",
|
||||||
"TOOLTIP_item@basegame:6": "“짐을 맡아두기로 한 몸이니까요.”", /* skyrim/lydia reference */
|
"TOOLTIP_item@basegame:6": "“짐을 맡아두기로 한 몸이니까요.”", /* skyrim/lydia reference */
|
||||||
"TOOLTIP_item@basegame:8": "신호를 만들어냅니다",
|
"TOOLTIP_item@basegame:37": "“짐을 맡아두기로 한 몸이니까요.”", /* skyrim/lydia reference */
|
||||||
"TOOLTIP_item@basegame:9": "전기공의 친한 친구",
|
"TOOLTIP_item@basegame:38": "“짐을 맡아두기로 한 몸이니까요.”", /* skyrim/lydia reference */
|
||||||
|
"TOOLTIP_item@basegame:39": "“짐을 맡아두기로 한 몸이니까요.”", /* skyrim/lydia reference */
|
||||||
|
"TOOLTIP_item@basegame:9": "{MOUSE:config_mousesecondary} 버튼을 눌러 색깔 변경",
|
||||||
"TOOLTIP_item@basegame:10": "“이게 있는데 책과 깃펜이 왜 필요하죠?”", /* a jab on the Minecraft item Book and Quill */
|
"TOOLTIP_item@basegame:10": "“이게 있는데 책과 깃펜이 왜 필요하죠?”", /* a jab on the Minecraft item Book and Quill */
|
||||||
"TOOLTIP_item@basegame:11": "오늘이 무슨 날인지 알려줍니다",
|
"TOOLTIP_item@basegame:11": "오늘이 무슨 날인지 알려줍니다",
|
||||||
"TOOLTIP_item@basegame:12": "벽을 부숩니다",
|
"TOOLTIP_item@basegame:12": "벽을 부숩니다",
|
||||||
@@ -38,8 +41,20 @@
|
|||||||
"TOOLTIP_item@basegame:27": "모든 대장장이는 초보 시절이 있는 법이죠",
|
"TOOLTIP_item@basegame:27": "모든 대장장이는 초보 시절이 있는 법이죠",
|
||||||
"TOOLTIP_item@basegame:28": "음악 자판기입이다 (무료 플레이)",
|
"TOOLTIP_item@basegame:28": "음악 자판기입이다 (무료 플레이)",
|
||||||
"TOOLTIP_item@basegame:29": "석탄과 비슷하고 똑같이 잘 타지만 재생 가능합니다",
|
"TOOLTIP_item@basegame:29": "석탄과 비슷하고 똑같이 잘 타지만 재생 가능합니다",
|
||||||
|
"TOOLTIP_item@basegame:36": "금속 주괴를 사용해 철사를 뽑아냅니다",
|
||||||
|
"TOOLTIP_item@basegame:47": "기기의 방향을 바꿉니다",
|
||||||
|
"TOOLTIP_item@basegame:48": "두 금속 괴를 녹여 합금을 만듭니다",
|
||||||
|
"TOOLTIP_item@basegame:50": "전자 작업대에서 사용하세요",
|
||||||
|
|
||||||
"TOOLTIP_item@basegame:114": "강철 생산의 소중한 연료입니다",
|
"TOOLTIP_item@basegame:114": "강철 생산의 소중한 연료입니다",
|
||||||
|
|
||||||
"TOOLTIP_item@basegame:320": "멀티버스를 여행하세요!\n경고: 2개를 만들어야 왕복이 가능합니다"
|
"TOOLTIP_item@basegame:320": "멀티버스를 여행하세요!\n경고: 2개를 만들어야 왕복이 가능합니다",
|
||||||
|
|
||||||
|
"TOOLTIP_item@basegame:8": "신호를 만들어냅니다",
|
||||||
|
"TOOLTIP_item@basegame:34": "선택적으로 신호를 만들어냅니다",
|
||||||
|
"TOOLTIP_item@basegame:35": "신호의 상태를 보여줍니다",
|
||||||
|
"TOOLTIP_item@basegame:44": "지나가는 신호를 자르기 신호에 따라 자릅니다",
|
||||||
|
"TOOLTIP_item@basegame:45": "들어오는 신호를 걸쇠 신호에 따라 잠시 저장합니다",
|
||||||
|
"TOOLTIP_item@basegame:46": "들어오는 신호를 살짝 지연시킵니다",
|
||||||
|
"TOOLTIP_item@basegame:49": "들어오는 신호의 합을 구합니다"
|
||||||
}
|
}
|
||||||
@@ -1,12 +1,17 @@
|
|||||||
{
|
{
|
||||||
|
"ITEM_ALLOYING_FURNACE": "합금 화로",
|
||||||
"ITEM_CALENDAR": "달력",
|
"ITEM_CALENDAR": "달력",
|
||||||
"ITEM_CHARCOAL": "목탄",
|
"ITEM_CHARCOAL": "목탄",
|
||||||
"ITEM_CHERRY_BOMB": "폭탄",
|
"ITEM_CHERRY_BOMB": "폭탄",
|
||||||
"ITEM_COAL_COKE": "코크스",
|
"ITEM_COAL_COKE": "코크스",
|
||||||
|
"ITEM_COPPER_BULB": "구리 전구",
|
||||||
|
"ITEM_COPPER_SIGN": "구리 간판",
|
||||||
"ITEM_DOOR_OAK": "나무 문",
|
"ITEM_DOOR_OAK": "나무 문",
|
||||||
"ITEM_DOOR_EBONY": "흑단 문",
|
"ITEM_DOOR_EBONY": "흑단 문",
|
||||||
"ITEM_DOOR_BIRCH": "백단 문",
|
"ITEM_DOOR_BIRCH": "백단 문",
|
||||||
"ITEM_DOOR_ROSEWOOD": "자단 문",
|
"ITEM_DOOR_ROSEWOOD": "자단 문",
|
||||||
|
"ITEM_ELECTRIC_WORKBENCH": "전기 작업대",
|
||||||
|
"ITEM_ENGRAVING_WORKBENCH": "조각 작업대",
|
||||||
"ITEM_FURNACE_AND_ANVIL": "화로와 모루",
|
"ITEM_FURNACE_AND_ANVIL": "화로와 모루",
|
||||||
"ITEM_GEM_RUBY": "홍옥석",
|
"ITEM_GEM_RUBY": "홍옥석",
|
||||||
"ITEM_GEM_EMERALD": "취옥석",
|
"ITEM_GEM_EMERALD": "취옥석",
|
||||||
@@ -31,16 +36,23 @@
|
|||||||
"ITEM_INGOT_ROSEGOLD": "분홍금괴",
|
"ITEM_INGOT_ROSEGOLD": "분홍금괴",
|
||||||
"ITEM_INGOT_SILVER": "은괴",
|
"ITEM_INGOT_SILVER": "은괴",
|
||||||
"ITEM_INGOT_SILVER_BILLON": "은동괴",
|
"ITEM_INGOT_SILVER_BILLON": "은동괴",
|
||||||
"ITEM_INGOT_SOLDER": "땜납",
|
"ITEM_INGOT_SOLDER": "막대납",
|
||||||
"ITEM_INGOT_STEEL": "강철괴",
|
"ITEM_INGOT_STEEL": "강철괴",
|
||||||
"ITEM_INGOT_TIN": "주석괴",
|
"ITEM_INGOT_TIN": "주석괴",
|
||||||
"ITEM_INGOT_ZINC": "아연괴",
|
"ITEM_INGOT_ZINC": "아연괴",
|
||||||
"ITEM_JUKEBOX": "주크박스",
|
"ITEM_JUKEBOX": "주크박스",
|
||||||
"ITEM_LOGIC_SIGNAL_EMITTER": "신호발생기",
|
"ITEM_LOGIC_SIGNAL_ADDER": "신호 가산기",
|
||||||
|
"ITEM_LOGIC_SIGNAL_BLOCKER": "신호 차단기",
|
||||||
|
"ITEM_LOGIC_SIGNAL_EMITTER": "신호 발생기",
|
||||||
|
"ITEM_LOGIC_SIGNAL_LATCH": "신호 걸쇠",
|
||||||
|
"ITEM_LOGIC_SIGNAL_NUMERIC_DISPLAY": "신호 숫자 표시기",
|
||||||
|
"ITEM_LOGIC_SIGNAL_REPEATER": "신호 리피터",
|
||||||
|
"ITEM_LOGIC_SIGNAL_SWITCH": "신호 스위치",
|
||||||
"ITEM_LOGS_BIRCH": "백단 통나무",
|
"ITEM_LOGS_BIRCH": "백단 통나무",
|
||||||
"ITEM_LOGS_EBONY": "흑단 통나무",
|
"ITEM_LOGS_EBONY": "흑단 통나무",
|
||||||
"ITEM_LOGS_OAK": "통나무",
|
"ITEM_LOGS_OAK": "통나무",
|
||||||
"ITEM_LOGS_ROSEWOOD": "자단 통나무",
|
"ITEM_LOGS_ROSEWOOD": "자단 통나무",
|
||||||
|
"ITEM_MULTIMETER": "멀티미터",
|
||||||
"ITEM_NITRE": "초석",
|
"ITEM_NITRE": "초석",
|
||||||
"ITEM_ORE_CASSITERITE": "주석석",
|
"ITEM_ORE_CASSITERITE": "주석석",
|
||||||
"ITEM_ORE_COAL": "석탄",
|
"ITEM_ORE_COAL": "석탄",
|
||||||
@@ -63,15 +75,22 @@
|
|||||||
"ITEM_SLEDGEHAMMER_COPPER": "구리 해머",
|
"ITEM_SLEDGEHAMMER_COPPER": "구리 해머",
|
||||||
"ITEM_SLEDGEHAMMER_IRON": "철 해머",
|
"ITEM_SLEDGEHAMMER_IRON": "철 해머",
|
||||||
"ITEM_SLEDGEHAMMER_STEEL": "강철 해머",
|
"ITEM_SLEDGEHAMMER_STEEL": "강철 해머",
|
||||||
|
"ITEM_SOLDERING_WIRE": "실납",
|
||||||
"ITEM_SMELTER_SMALL": "소형 고로",
|
"ITEM_SMELTER_SMALL": "소형 고로",
|
||||||
"ITEM_STORAGE_CHEST": "보관상자",
|
"ITEM_STORAGE_CHEST": "보관상자",
|
||||||
|
"ITEM_TABLE_OAK": "나무 탁자",
|
||||||
|
"ITEM_TABLE_EBONY": "흑단 탁자",
|
||||||
|
"ITEM_TABLE_BIRCH": "백단 탁자",
|
||||||
|
"ITEM_TABLE_ROSEWOOD": "자단 탁자",
|
||||||
"ITEM_TIKI_TORCH": "티키 토치",
|
"ITEM_TIKI_TORCH": "티키 토치",
|
||||||
"ITEM_TURNTABLE": "전축",
|
"ITEM_TURNTABLE": "전축",
|
||||||
"ITEM_TYPEWRITER": "타자기",
|
"ITEM_TYPEWRITER": "타자기",
|
||||||
"ITEM_WIRE": "전선",
|
"ITEM_WIRE": "전선",
|
||||||
"ITEM_WIRE_CUTTER": "전선 절단기",
|
"ITEM_WIRE_CUTTER": "전선 절단기",
|
||||||
|
"ITEM_WIRE_ROLLING_MILL": "철사 압연기",
|
||||||
"ITEM_WOOD_STICK": "막대기",
|
"ITEM_WOOD_STICK": "막대기",
|
||||||
"ITEM_WOODEN_MALLET": "나무 망치",
|
"ITEM_WOODEN_MALLET": "나무 망치",
|
||||||
"ITEM_WORKBENCH": "작업대",
|
"ITEM_WORKBENCH": "작업대",
|
||||||
"ITEM_WORLD_PORTAL": "텔레포트 스테이션"
|
"ITEM_WORLD_PORTAL": "텔레포트 스테이션",
|
||||||
|
"ITEM_WRENCH": "렌치"
|
||||||
}
|
}
|
||||||
@@ -44,10 +44,10 @@ package=net.torvald.terrarum.modulebasegame
|
|||||||
entrypoint=net.torvald.terrarum.modulebasegame.EntryPoint
|
entrypoint=net.torvald.terrarum.modulebasegame.EntryPoint
|
||||||
|
|
||||||
# Release date in YYYY-MM-DD
|
# Release date in YYYY-MM-DD
|
||||||
releasedate=2024-02-19
|
releasedate=2024-03-28
|
||||||
|
|
||||||
# The version, must follow Semver 2.0.0 scheme (https://semver.org/)
|
# The version, must follow Semver 2.0.0 scheme (https://semver.org/)
|
||||||
version=0.4.0
|
version=0.4.2
|
||||||
|
|
||||||
# External JAR that the module is compiled. If your module requires yet another library, the JAR must be compiled as a "Fatjar";
|
# External JAR that the module is compiled. If your module requires yet another library, the JAR must be compiled as a "Fatjar";
|
||||||
# Due to security reasons, loading an arbitrary JAR is not allowed.
|
# Due to security reasons, loading an arbitrary JAR is not allowed.
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
"id";"freq";"power";"scale";"ratio";"tiling";"comment";"blocktagnongrata"
|
"id";"freq";"power";"scale";"ratio";"tiling";"comment";"blocktagnongrata"
|
||||||
"1";"0.026";"0.010";"0.517";"1.0";"a16x16";"copper (malachite)";""
|
"1";"0.026";"0.010";"0.517";"1.0";"a16x16";"copper (malachite)";""
|
||||||
"2";"0.045";"0.011";"0.517";"1.0";"a16x16";"iron (haematite)";""
|
"2";"0.031";"0.011";"0.521";"1.0";"a16x16";"iron (haematite)";""
|
||||||
"3";"0.017";"0.070";"0.511";"3.8";"a16x4";"coal";""
|
"3";"0.017";"0.070";"0.511";"3.8";"a16x4";"coal";""
|
||||||
"4";"0.019";"0.011";"0.511";"1.0";"a16x16";"zinc (sphalerite)";""
|
"4";"0.019";"0.011";"0.511";"1.0";"a16x16";"zinc (sphalerite)";""
|
||||||
"5";"0.017";"0.017";"0.511";"1.0";"a16x16";"tin (cassiterite)";""
|
"5";"0.017";"0.017";"0.511";"1.0";"a16x16";"tin (cassiterite)";""
|
||||||
|
|||||||
|
27
assets/mods/basegame/smelting/alloys.json
Normal file
27
assets/mods/basegame/smelting/alloys.json
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
{
|
||||||
|
/* as for the plus operator, the itemIDs must be sorted lexicographically and first word should come left */
|
||||||
|
"item@basegame:112+item@basegame:116": { /* copper + tin -> bronze */
|
||||||
|
"difficulty": 1.0,
|
||||||
|
"product": [2, "item@basegame:176"]
|
||||||
|
},
|
||||||
|
"item@basegame:112+item@basegame:115": { /* copper + zinc -> brass */
|
||||||
|
"difficulty": 1.0,
|
||||||
|
"product": [2, "item@basegame:177"]
|
||||||
|
},
|
||||||
|
"item@basegame:117+item@basegame:118": { /* gold + silver -> electrum */
|
||||||
|
"difficulty": 1.0,
|
||||||
|
"product": [2, "item@basegame:178"]
|
||||||
|
},
|
||||||
|
"item@basegame:112+item@basegame:118": { /* copper + silver -> silver billon */
|
||||||
|
"difficulty": 1.0,
|
||||||
|
"product": [2, "item@basegame:179"]
|
||||||
|
},
|
||||||
|
"item@basegame:112+item@basegame:117": { /* copper + gold -> rose gold */
|
||||||
|
"difficulty": 1.0,
|
||||||
|
"product": [2, "item@basegame:180"]
|
||||||
|
},
|
||||||
|
"item@basegame:116+item@basegame:119": { /* tin + lead -> solder */
|
||||||
|
"difficulty": 1.0,
|
||||||
|
"product": [2, "item@basegame:181"]
|
||||||
|
}
|
||||||
|
}
|
||||||
48
assets/mods/basegame/smelting/single_item.json
Normal file
48
assets/mods/basegame/smelting/single_item.json
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
{
|
||||||
|
"$SAND": { /* sand -> crude glass */
|
||||||
|
"difficulty": 1.0,
|
||||||
|
"product": [1, "basegame:148"]
|
||||||
|
},
|
||||||
|
"item@basegame:144": { /* quartz -> clean glass */
|
||||||
|
"difficulty": 1.0,
|
||||||
|
"product": [1, "basegame:149"]
|
||||||
|
},
|
||||||
|
|
||||||
|
"$LOGS": { /* logs -> charcoal */
|
||||||
|
"difficulty": 1.0,
|
||||||
|
"product": [1, "item@basegame:29"]
|
||||||
|
},
|
||||||
|
|
||||||
|
"item@basegame:128": { /* copper ore -> ingot */
|
||||||
|
"difficulty": 1.0,
|
||||||
|
"product": [1, "item@basegame:112"]
|
||||||
|
},
|
||||||
|
"item@basegame:129": { /* iron ore -> ingot */
|
||||||
|
"difficulty": 1.0,
|
||||||
|
"product": [1, "item@basegame:113"]
|
||||||
|
},
|
||||||
|
"item@basegame:130": { /* coal -> coke */
|
||||||
|
"difficulty": 1.0,
|
||||||
|
"product": [1, "item@basegame:114"]
|
||||||
|
},
|
||||||
|
"item@basegame:131": { /* zinc ore -> ingot */
|
||||||
|
"difficulty": 1.0,
|
||||||
|
"product": [1, "item@basegame:115"]
|
||||||
|
},
|
||||||
|
"item@basegame:132": { /* tin ore -> ingot */
|
||||||
|
"difficulty": 1.0,
|
||||||
|
"product": [1, "item@basegame:116"]
|
||||||
|
},
|
||||||
|
"item@basegame:133": { /* gold ore -> ingot */
|
||||||
|
"difficulty": 1.0,
|
||||||
|
"product": [1, "item@basegame:117"]
|
||||||
|
},
|
||||||
|
"item@basegame:134": { /* silver ore -> ingot */
|
||||||
|
"difficulty": 1.0,
|
||||||
|
"product": [1, "item@basegame:118"]
|
||||||
|
},
|
||||||
|
"item@basegame:135": { /* lead ore -> ingot */
|
||||||
|
"difficulty": 1.0,
|
||||||
|
"product": [1, "item@basegame:119"]
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
assets/mods/basegame/sprites/fixtures/alloying_furnace.tga
LFS
Normal file
BIN
assets/mods/basegame/sprites/fixtures/alloying_furnace.tga
LFS
Normal file
Binary file not shown.
BIN
assets/mods/basegame/sprites/fixtures/alloying_furnace_emsv.tga
LFS
Normal file
BIN
assets/mods/basegame/sprites/fixtures/alloying_furnace_emsv.tga
LFS
Normal file
Binary file not shown.
BIN
assets/mods/basegame/sprites/fixtures/copper_bulb.tga
LFS
Normal file
BIN
assets/mods/basegame/sprites/fixtures/copper_bulb.tga
LFS
Normal file
Binary file not shown.
BIN
assets/mods/basegame/sprites/fixtures/copper_bulb_emissive.tga
LFS
Normal file
BIN
assets/mods/basegame/sprites/fixtures/copper_bulb_emissive.tga
LFS
Normal file
Binary file not shown.
BIN
assets/mods/basegame/sprites/fixtures/electric_workbench.tga
LFS
Normal file
BIN
assets/mods/basegame/sprites/fixtures/electric_workbench.tga
LFS
Normal file
Binary file not shown.
BIN
assets/mods/basegame/sprites/fixtures/engraving_workbench.tga
LFS
Normal file
BIN
assets/mods/basegame/sprites/fixtures/engraving_workbench.tga
LFS
Normal file
Binary file not shown.
Binary file not shown.
BIN
assets/mods/basegame/sprites/fixtures/sevenseg.tga
LFS
Normal file
BIN
assets/mods/basegame/sprites/fixtures/sevenseg.tga
LFS
Normal file
Binary file not shown.
BIN
assets/mods/basegame/sprites/fixtures/signal_adder.tga
LFS
Normal file
BIN
assets/mods/basegame/sprites/fixtures/signal_adder.tga
LFS
Normal file
Binary file not shown.
BIN
assets/mods/basegame/sprites/fixtures/signal_adder_emsv.tga
LFS
Normal file
BIN
assets/mods/basegame/sprites/fixtures/signal_adder_emsv.tga
LFS
Normal file
Binary file not shown.
BIN
assets/mods/basegame/sprites/fixtures/signal_blocker.tga
LFS
Normal file
BIN
assets/mods/basegame/sprites/fixtures/signal_blocker.tga
LFS
Normal file
Binary file not shown.
BIN
assets/mods/basegame/sprites/fixtures/signal_blocker_emsv.tga
LFS
Normal file
BIN
assets/mods/basegame/sprites/fixtures/signal_blocker_emsv.tga
LFS
Normal file
Binary file not shown.
BIN
assets/mods/basegame/sprites/fixtures/signal_latch.tga
LFS
Normal file
BIN
assets/mods/basegame/sprites/fixtures/signal_latch.tga
LFS
Normal file
Binary file not shown.
BIN
assets/mods/basegame/sprites/fixtures/signal_latch_emsv.tga
LFS
Normal file
BIN
assets/mods/basegame/sprites/fixtures/signal_latch_emsv.tga
LFS
Normal file
Binary file not shown.
BIN
assets/mods/basegame/sprites/fixtures/signal_repeater.tga
LFS
Normal file
BIN
assets/mods/basegame/sprites/fixtures/signal_repeater.tga
LFS
Normal file
Binary file not shown.
BIN
assets/mods/basegame/sprites/fixtures/signal_repeater_emsv.tga
LFS
Normal file
BIN
assets/mods/basegame/sprites/fixtures/signal_repeater_emsv.tga
LFS
Normal file
Binary file not shown.
BIN
assets/mods/basegame/sprites/fixtures/signal_switch.tga
LFS
Normal file
BIN
assets/mods/basegame/sprites/fixtures/signal_switch.tga
LFS
Normal file
Binary file not shown.
BIN
assets/mods/basegame/sprites/fixtures/signal_switch_glow.tga
LFS
Normal file
BIN
assets/mods/basegame/sprites/fixtures/signal_switch_glow.tga
LFS
Normal file
Binary file not shown.
Binary file not shown.
BIN
assets/mods/basegame/sprites/fixtures/storage_chest_2.tga
LFS
Normal file
BIN
assets/mods/basegame/sprites/fixtures/storage_chest_2.tga
LFS
Normal file
Binary file not shown.
BIN
assets/mods/basegame/sprites/fixtures/storage_chest_3.tga
LFS
Normal file
BIN
assets/mods/basegame/sprites/fixtures/storage_chest_3.tga
LFS
Normal file
Binary file not shown.
BIN
assets/mods/basegame/sprites/fixtures/storage_chest_4.tga
LFS
Normal file
BIN
assets/mods/basegame/sprites/fixtures/storage_chest_4.tga
LFS
Normal file
Binary file not shown.
BIN
assets/mods/basegame/sprites/fixtures/table_1.tga
LFS
Normal file
BIN
assets/mods/basegame/sprites/fixtures/table_1.tga
LFS
Normal file
Binary file not shown.
BIN
assets/mods/basegame/sprites/fixtures/table_2.tga
LFS
Normal file
BIN
assets/mods/basegame/sprites/fixtures/table_2.tga
LFS
Normal file
Binary file not shown.
BIN
assets/mods/basegame/sprites/fixtures/table_3.tga
LFS
Normal file
BIN
assets/mods/basegame/sprites/fixtures/table_3.tga
LFS
Normal file
Binary file not shown.
BIN
assets/mods/basegame/sprites/fixtures/table_4.tga
LFS
Normal file
BIN
assets/mods/basegame/sprites/fixtures/table_4.tga
LFS
Normal file
Binary file not shown.
BIN
assets/mods/basegame/sprites/fixtures/text_sign_glass_copper.tga
LFS
Normal file
BIN
assets/mods/basegame/sprites/fixtures/text_sign_glass_copper.tga
LFS
Normal file
Binary file not shown.
Binary file not shown.
BIN
assets/mods/basegame/sprites/fixtures/wire_rolling_mill.tga
LFS
Normal file
BIN
assets/mods/basegame/sprites/fixtures/wire_rolling_mill.tga
LFS
Normal file
Binary file not shown.
BIN
assets/mods/basegame/wires/1.tga
LFS
Normal file
BIN
assets/mods/basegame/wires/1.tga
LFS
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
9
assets/mods/basegame/wires/decayconsts.csv
Normal file
9
assets/mods/basegame/wires/decayconsts.csv
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
wireItemID;const
|
||||||
|
wire@basegame:8192;0.995
|
||||||
|
wire@basegame:8193;0.995
|
||||||
|
wire@basegame:8194;0.995
|
||||||
|
wire@basegame:8195;0.995
|
||||||
|
wire@basegame:8196;0.999
|
||||||
|
wire@basegame:8197;0.999
|
||||||
|
wire@basegame:8198;0.999
|
||||||
|
|
||||||
|
Binary file not shown.
5
assets/mods/basegame/wires/wireports.csv
Normal file
5
assets/mods/basegame/wires/wireports.csv
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
"accepts";"fileModule";"file";"xpos";"ypos"
|
||||||
|
"digital_bit";"basegame";"wires/ports.tga";0;0
|
||||||
|
"power_low";"basegame";"wires/ports.tga";1;0
|
||||||
|
"power_high";"basegame";"wires/ports.tga";2;0
|
||||||
|
"10base2";"basegame";"wires/ports.tga";2;0
|
||||||
|
@@ -1,11 +1,13 @@
|
|||||||
id;drop;name;renderclass;accept;inputcount;inputtype;outputtype;javaclass;inventoryimg;branching
|
id;drop;name;renderclass;accept;inputcount;inputtype;outputtype;javaclass;inventoryimg;branching;tags
|
||||||
8192;8192;WIRE_RED;signal;digital_bit;3;N/A;N/A;net.torvald.terrarum.modulebasegame.gameitems.WirePieceSignalWire;basegame.items,0,4;1
|
8192;8192;WIRE_RED;signal;digital_bit;3;N/A;N/A;net.torvald.terrarum.modulebasegame.gameitems.WirePieceSignalWire;basegame.items,0,4;1;"SIGNALWIRE"
|
||||||
8193;8193;WIRE_GREEN;signal;digital_bit;3;N/A;N/A;net.torvald.terrarum.modulebasegame.gameitems.WirePieceSignalWire;basegame.items,1,4;1
|
8193;8193;WIRE_GREEN;signal;digital_bit;3;N/A;N/A;net.torvald.terrarum.modulebasegame.gameitems.WirePieceSignalWire;basegame.items,1,4;1;"SIGNALWIRE"
|
||||||
8194;8194;WIRE_BLUE;signal;digital_bit;3;N/A;N/A;net.torvald.terrarum.modulebasegame.gameitems.WirePieceSignalWire;basegame.items,2,4;1
|
8194;8194;WIRE_BLUE;signal;digital_bit;3;N/A;N/A;net.torvald.terrarum.modulebasegame.gameitems.WirePieceSignalWire;basegame.items,2,4;1;"SIGNALWIRE"
|
||||||
#8195;8195;WIRE_BUNDLE;signal;digital_3bits;3;N/A;N/A;net.torvald.terrarum.modulebasegame.gameitems.WirePieceSignalWire;basegame.items,0,0;1
|
8195;8195;WIRE_YELLOW;signal;digital_bit;3;N/A;N/A;net.torvald.terrarum.modulebasegame.gameitems.WirePieceSignalWire;basegame.items,3,4;1;"SIGNALWIRE"
|
||||||
8196;8196;WIRE_POWER_LOW;power;power_low;3;N/A;N/A;net.torvald.terrarum.modulebasegame.gameitems.WirePieceSignalWire;basegame.items,3,4;1
|
8196;8196;WIRE_PURPLE;signal;digital_bit;3;N/A;N/A;net.torvald.terrarum.modulebasegame.gameitems.WirePieceSignalWire;basegame.items,4,4;1;"SIGNALWIRE"
|
||||||
8197;8197;WIRE_POWER_HIGH;power;power_high;3;N/A;N/A;net.torvald.terrarum.modulebasegame.gameitems.WirePieceSignalWire;basegame.items,4,4;1
|
|
||||||
8198;8198;WIRE_ETHERNET;network;10base2;3;N/A;N/A;net.torvald.terrarum.modulebasegame.gameitems.WirePieceSignalWire;basegame.items,5,4;1
|
1;1;WIRE_POWER_LOW;power;power_low;3;N/A;N/A;net.torvald.terrarum.modulebasegame.gameitems.WirePieceSignalWire;basegame.items,5,4;1;"POWERWIRE_LOW"
|
||||||
|
2;2;WIRE_POWER_HIGH;power;power_high;3;N/A;N/A;net.torvald.terrarum.modulebasegame.gameitems.WirePieceSignalWire;basegame.items,6,4;1;"POWERWIRE_HIGH"
|
||||||
|
16;16;WIRE_ETHERNET;network;10base2;3;N/A;N/A;net.torvald.terrarum.modulebasegame.gameitems.WirePieceSignalWire;basegame.items,7,4;1;"ETHERNETWIRE"
|
||||||
|
|
||||||
|
|
||||||
# accept: which wiretype (defined elsewhere) the wires acceps. Use comma to separate multiple. N/A for electronic components (aka not wires)
|
# accept: which wiretype (defined elsewhere) the wires acceps. Use comma to separate multiple. N/A for electronic components (aka not wires)
|
||||||
|
|||||||
|
@@ -3,8 +3,8 @@ description=Simple music player widget
|
|||||||
author=CuriousTo\uA75Bvald
|
author=CuriousTo\uA75Bvald
|
||||||
package=net.torvald.terrarum.musicplayer
|
package=net.torvald.terrarum.musicplayer
|
||||||
entrypoint=net.torvald.terrarum.musicplayer.EntryPoint
|
entrypoint=net.torvald.terrarum.musicplayer.EntryPoint
|
||||||
releasedate=2024-02-19
|
releasedate=2024-03-28
|
||||||
version=1.0.0
|
version=1.0.2
|
||||||
jar=MusicPlayer.jar
|
jar=MusicPlayer.jar
|
||||||
jarhash=c8896ce5b2aa79057e1324a701c1c5bd4099a8a651f044a120ad700cedfbb16e
|
jarhash=8ab074e9dc6312ea4d3f6f500e362afb65001d3770f4f8da1d9f2e47cb294de0
|
||||||
dependency=basegame 0.4.0
|
dependency=basegame 0.4.2+
|
||||||
|
|||||||
@@ -70,16 +70,11 @@ public class App implements ApplicationListener {
|
|||||||
public static final String VERSION_TAG = TerrarumAppConfiguration.VERSION_TAG;
|
public static final String VERSION_TAG = TerrarumAppConfiguration.VERSION_TAG;
|
||||||
|
|
||||||
public static final String getVERSION_STRING() {
|
public static final String getVERSION_STRING() {
|
||||||
|
return TerrarumAppConfiguration.INSTANCE.getVERSION_STRING();
|
||||||
var snap = TerrarumAppConfiguration.INSTANCE.getVERSION_SNAPSHOT();
|
|
||||||
|
|
||||||
return String.format("%d.%d.%d", VERSION_RAW >>> 48, (VERSION_RAW & 0xffff000000L) >>> 24, VERSION_RAW & 0xffffffL) +
|
|
||||||
(VERSION_TAG.isBlank() ? "" : "-"+VERSION_TAG) + (snap == null ? "" : (" (" + snap + ")"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static final String getVERSION_STRING_WITHOUT_SNAPSHOT() {
|
public static final String getVERSION_STRING_WITHOUT_SNAPSHOT() {
|
||||||
return String.format("%d.%d.%d", VERSION_RAW >>> 48, (VERSION_RAW & 0xffff000000L) >>> 24, VERSION_RAW & 0xffffffL) +
|
return TerrarumAppConfiguration.INSTANCE.getVERSION_STRING_WITHOUT_SNAPSHOT();
|
||||||
(VERSION_TAG.isBlank() ? "" : "-"+VERSION_TAG);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -442,12 +437,12 @@ public class App implements ApplicationListener {
|
|||||||
|
|
||||||
if (useFullscreen) {
|
if (useFullscreen) {
|
||||||
// auto resize for fullscreen
|
// auto resize for fullscreen
|
||||||
var disp = Lwjgl3ApplicationConfiguration.getDisplayMode();
|
var disp = Lwjgl3ApplicationConfiguration.getDisplayMode(Lwjgl3ApplicationConfiguration.getPrimaryMonitor());
|
||||||
var newWidth = ((int)(disp.width / magn)) & 0x7FFFFFFE;
|
var newWidth = ((int)(disp.width / magn)) & 0x7FFFFFFE;
|
||||||
var newHeight = ((int)(disp.height / magn)) & 0x7FFFFFFE;
|
var newHeight = ((int)(disp.height / magn)) & 0x7FFFFFFE;
|
||||||
scr.setDimension(newWidth, newHeight, magn);
|
scr.setDimension(newWidth, newHeight, magn);
|
||||||
|
|
||||||
appConfig.setFullscreenMode(Lwjgl3ApplicationConfiguration.getDisplayMode());
|
appConfig.setFullscreenMode(disp);
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -1731,7 +1726,7 @@ public class App implements ApplicationListener {
|
|||||||
return DefaultConfig.INSTANCE.getHashMap();
|
return DefaultConfig.INSTANCE.getHashMap();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Object getConfigMaster(String key1) {
|
public static Object getConfigMaster(String key1) {
|
||||||
String key = key1.toLowerCase();
|
String key = key1.toLowerCase();
|
||||||
|
|
||||||
Object config;
|
Object config;
|
||||||
|
|||||||
@@ -282,7 +282,6 @@ $BULLET Music:
|
|||||||
- music/discs/lucid_dream.ogg
|
- music/discs/lucid_dream.ogg
|
||||||
- music/discs/railway.ogg
|
- music/discs/railway.ogg
|
||||||
- music/discs/welded.ogg
|
- music/discs/welded.ogg
|
||||||
|
|
||||||
℗ 2021, 2022, 2023, 2024 Orstphone
|
℗ 2021, 2022, 2023, 2024 Orstphone
|
||||||
Check out the original tracks on:
|
Check out the original tracks on:
|
||||||
Apple Music: <https://music.apple.com/kr/artist/orstphone/1587723053>
|
Apple Music: <https://music.apple.com/kr/artist/orstphone/1587723053>
|
||||||
@@ -300,7 +299,6 @@ $BULLET Foleys:
|
|||||||
- ambient/season/diurnal_winter.*.ogg
|
- ambient/season/diurnal_winter.*.ogg
|
||||||
- ambient/season/matutinal.*.ogg
|
- ambient/season/matutinal.*.ogg
|
||||||
- ambient/season/nocturnal.*.ogg
|
- ambient/season/nocturnal.*.ogg
|
||||||
|
|
||||||
℗ 2011, 2013, 2015, 2020, 2021 Klankbeeld
|
℗ 2011, 2013, 2015, 2020, 2021 Klankbeeld
|
||||||
Sound from <https://www.freesound.org/people/klankbeeld>
|
Sound from <https://www.freesound.org/people/klankbeeld>
|
||||||
|
|
||||||
@@ -311,38 +309,31 @@ Sound from <https://www.freesound.org/people/klankbeeld>
|
|||||||
- effects/steps/WOOD.*.ogg
|
- effects/steps/WOOD.*.ogg
|
||||||
- effects/door/wooden_open.*.ogg
|
- effects/door/wooden_open.*.ogg
|
||||||
- effects/door/wooden_close.*.ogg
|
- effects/door/wooden_close.*.ogg
|
||||||
|
|
||||||
℗ 2020, 2021, 2022 Nox Sound
|
℗ 2020, 2021, 2022 Nox Sound
|
||||||
Sound from <https://freesound.org/people/Nox_Sound>
|
Sound from <https://freesound.org/people/Nox_Sound>
|
||||||
|
|
||||||
- effects/static/phono_pops.ogg
|
- effects/static/phono_pops.ogg
|
||||||
|
|
||||||
℗ 2011 Veezay
|
℗ 2011 Veezay
|
||||||
Sound from <https://freesound.org/people/veezay>
|
Sound from <https://freesound.org/people/veezay>
|
||||||
|
|
||||||
- effects/static/tape_hiss.ogg
|
- effects/static/tape_hiss.ogg
|
||||||
|
|
||||||
℗ 2017 Stephen Holdaway
|
℗ 2017 Stephen Holdaway
|
||||||
Sound from <https://freesound.org/people/stecman>
|
Sound from <https://freesound.org/people/stecman>
|
||||||
|
|
||||||
- effects/static/film_pops_lowpass.ogg
|
- effects/static/film_pops_lowpass.ogg
|
||||||
|
|
||||||
℗ 2015 Joe DeShon
|
℗ 2015 Joe DeShon
|
||||||
Sound from <https://freesound.org/people/joedeshon>
|
Sound from <https://freesound.org/people/joedeshon>
|
||||||
|
|
||||||
- effects/static/bonfire.ogg
|
- effects/static/bonfire.ogg
|
||||||
|
|
||||||
℗ 2019 DrinkingWindGames
|
℗ 2019 DrinkingWindGames
|
||||||
Sound from <https://freesound.org/people/DrinkingWindGames>
|
Sound from <https://freesound.org/people/DrinkingWindGames>
|
||||||
|
|
||||||
- effects/explosion/bang_bomb.ogg
|
- effects/explosion/bang_bomb.ogg
|
||||||
|
|
||||||
℗ 2019 Richwise
|
℗ 2019 Richwise
|
||||||
Sound from <https://freesound.org/people/richwise>
|
Sound from <https://freesound.org/people/richwise>
|
||||||
|
|
||||||
- effects/explosion/fuse.ogg
|
- effects/explosion/fuse.ogg
|
||||||
- effects/explosion/fuse_continue.ogg
|
- effects/explosion/fuse_continue.ogg
|
||||||
|
|
||||||
℗ 2012, 2015 j1987 and ScouseMouseJB
|
℗ 2012, 2015 j1987 and ScouseMouseJB
|
||||||
Sound from <https://freesound.org/people/j1987> and <https://freesound.org/people/ScouseMouseJB>
|
Sound from <https://freesound.org/people/j1987> and <https://freesound.org/people/ScouseMouseJB>
|
||||||
|
|
||||||
@@ -351,12 +342,10 @@ Sound from <https://freesound.org/people/j1987> and <https://freesound.org/peopl
|
|||||||
$BULLET Impulse Responses:
|
$BULLET Impulse Responses:
|
||||||
|
|
||||||
- convolution/EchoThief - *.bin
|
- convolution/EchoThief - *.bin
|
||||||
|
|
||||||
EchoThief Impulse Response Library
|
EchoThief Impulse Response Library
|
||||||
℗ 2013-2023 Chris Warren <cwarren@sdsu.edu>
|
℗ 2013-2023 Chris Warren <cwarren@sdsu.edu>
|
||||||
|
|
||||||
- convolution/Soundwoofer - *.bin
|
- convolution/Soundwoofer - *.bin
|
||||||
|
|
||||||
Soundwoofer Free Impulse Response Library
|
Soundwoofer Free Impulse Response Library
|
||||||
℗ 2018 Soundwoofer Team
|
℗ 2018 Soundwoofer Team
|
||||||
<https://soundwoofer.com/User/Index?uid=soundwoofer>
|
<https://soundwoofer.com/User/Index?uid=soundwoofer>
|
||||||
|
|||||||
@@ -63,7 +63,8 @@ open class IngameInstance(val batch: FlippingSpriteBatch, val isMultiplayer: Boo
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val disposables = HashSet<Disposable>()
|
/** things to be disposed of when the current instance of the game disposed of */
|
||||||
|
// val disposables = HashSet<Disposable>()
|
||||||
|
|
||||||
lateinit var worldDisk: VirtualDisk; internal set
|
lateinit var worldDisk: VirtualDisk; internal set
|
||||||
lateinit var playerDisk: VirtualDisk; internal set
|
lateinit var playerDisk: VirtualDisk; internal set
|
||||||
@@ -186,7 +187,6 @@ open class IngameInstance(val batch: FlippingSpriteBatch, val isMultiplayer: Boo
|
|||||||
|
|
||||||
blockMarkingActor.let {
|
blockMarkingActor.let {
|
||||||
it.unsetGhost()
|
it.unsetGhost()
|
||||||
it.setGhostColourNone()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
gameInitialised = true
|
gameInitialised = true
|
||||||
@@ -231,7 +231,7 @@ open class IngameInstance(val batch: FlippingSpriteBatch, val isMultiplayer: Boo
|
|||||||
actorContainerInactive.forEach { it.dispose() }
|
actorContainerInactive.forEach { it.dispose() }
|
||||||
world.dispose()
|
world.dispose()
|
||||||
|
|
||||||
disposables.forEach { it.tryDispose() }
|
// disposables.forEach { it.tryDispose() }
|
||||||
}
|
}
|
||||||
|
|
||||||
////////////
|
////////////
|
||||||
@@ -439,7 +439,7 @@ open class IngameInstance(val batch: FlippingSpriteBatch, val isMultiplayer: Boo
|
|||||||
}
|
}
|
||||||
|
|
||||||
open fun saveTheGame(onSuccessful: () -> Unit, onError: (Throwable) -> Unit) {
|
open fun saveTheGame(onSuccessful: () -> Unit, onError: (Throwable) -> Unit) {
|
||||||
|
loadedTime_t = App.getTIME_T()
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -533,7 +533,7 @@ open class IngameInstance(val batch: FlippingSpriteBatch, val isMultiplayer: Boo
|
|||||||
fun getActorsAt(worldX: Double, worldY: Double): List<ActorWithBody> {
|
fun getActorsAt(worldX: Double, worldY: Double): List<ActorWithBody> {
|
||||||
val outList = ArrayList<ActorWithBody>()
|
val outList = ArrayList<ActorWithBody>()
|
||||||
try {
|
try {
|
||||||
actorsRTree.find(worldX, worldY, worldX, worldY, outList)
|
actorsRTree.find(worldX - 0.5, worldY - 0.5, worldX + 0.5, worldY + 0.5, outList)
|
||||||
}
|
}
|
||||||
catch (e: NullPointerException) {}
|
catch (e: NullPointerException) {}
|
||||||
return outList
|
return outList
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ import net.torvald.terrarum.blockproperties.OreCodex
|
|||||||
import net.torvald.terrarum.blockproperties.WireCodex
|
import net.torvald.terrarum.blockproperties.WireCodex
|
||||||
import net.torvald.terrarum.gameactors.ActorWithBody
|
import net.torvald.terrarum.gameactors.ActorWithBody
|
||||||
import net.torvald.terrarum.gamecontroller.IME
|
import net.torvald.terrarum.gamecontroller.IME
|
||||||
|
import net.torvald.terrarum.gameitems.FixtureInteractionBlocked
|
||||||
import net.torvald.terrarum.gameitems.GameItem
|
import net.torvald.terrarum.gameitems.GameItem
|
||||||
import net.torvald.terrarum.gameitems.ItemID
|
import net.torvald.terrarum.gameitems.ItemID
|
||||||
import net.torvald.terrarum.itemproperties.CraftingCodex
|
import net.torvald.terrarum.itemproperties.CraftingCodex
|
||||||
@@ -561,13 +562,17 @@ object ModMgr {
|
|||||||
))
|
))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Terrarum.wireCodex.fromModule(module, "wires/")
|
Terrarum.wireCodex.fromModule(module, "wires/") { wire ->
|
||||||
|
|
||||||
|
}
|
||||||
|
Terrarum.wireCodex.portsFromModule(module, "wires/")
|
||||||
|
Terrarum.wireCodex.wireDecaysFromModule(module, "wires/")
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun makeNewItemObj(tile: BlockProp, isWall: Boolean) = object : GameItem(
|
private fun makeNewItemObj(tile: BlockProp, isWall: Boolean) = object : GameItem(
|
||||||
if (isWall) "wall@"+tile.id else tile.id
|
if (isWall) "wall@"+tile.id else tile.id
|
||||||
) {
|
), FixtureInteractionBlocked {
|
||||||
override var baseMass: Double = tile.density / 100.0
|
override var baseMass: Double = (tile.density / 100.0) * (if (tile.isPlatform) 0.5 else 1.0)
|
||||||
override var baseToolSize: Double? = null
|
override var baseToolSize: Double? = null
|
||||||
override var inventoryCategory = if (isWall) Category.WALL else Category.BLOCK
|
override var inventoryCategory = if (isWall) Category.WALL else Category.BLOCK
|
||||||
override var canBeDynamic = false
|
override var canBeDynamic = false
|
||||||
@@ -842,11 +847,16 @@ object ModMgr {
|
|||||||
|
|
||||||
object GameCraftingRecipeLoader {
|
object GameCraftingRecipeLoader {
|
||||||
const val recipePath = "crafting/"
|
const val recipePath = "crafting/"
|
||||||
|
const val smeltingPath = "smelting/"
|
||||||
|
|
||||||
@JvmStatic operator fun invoke(module: String) {
|
@JvmStatic operator fun invoke(module: String) {
|
||||||
getFile(module, recipePath).listFiles { it: File -> it.name.lowercase().endsWith(".json") }?.forEach { jsonFile ->
|
getFile(module, recipePath).listFiles { it: File -> it.name.lowercase().endsWith(".json") }?.forEach { jsonFile ->
|
||||||
Terrarum.craftingCodex.addFromJson(JsonFetcher(jsonFile), module, jsonFile.name)
|
Terrarum.craftingCodex.addFromJson(JsonFetcher(jsonFile), module, jsonFile.name)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getFile(module, smeltingPath).listFiles { it: File -> it.name.lowercase().endsWith(".json") }?.forEach { jsonFile ->
|
||||||
|
Terrarum.craftingCodex.addSmeltingFromJson(JsonFetcher(jsonFile), module, jsonFile.name)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -11,6 +11,8 @@ class Point2d() : Cloneable {
|
|||||||
var x: Double = 0.0
|
var x: Double = 0.0
|
||||||
var y: Double = 0.0
|
var y: Double = 0.0
|
||||||
|
|
||||||
|
constructor(other: Point2d) : this(other.x, other.y)
|
||||||
|
|
||||||
constructor(x: Double, y: Double) : this() {
|
constructor(x: Double, y: Double) : this() {
|
||||||
this.x = x
|
this.x = x
|
||||||
this.y = y
|
this.y = y
|
||||||
|
|||||||
@@ -12,13 +12,13 @@ object ReferencingRanges {
|
|||||||
val ITEMS_DYNAMIC = 0x10_0000..0x0FFF_FFFF // 267 386 880 pseudo-items
|
val ITEMS_DYNAMIC = 0x10_0000..0x0FFF_FFFF // 267 386 880 pseudo-items
|
||||||
val ACTORS = 0x1000_0000..0x7FFE_FFFF
|
val ACTORS = 0x1000_0000..0x7FFE_FFFF
|
||||||
|
|
||||||
// there is a gap between 0x7FFF_0000..0x7FFF_BFFF
|
// there is a gap between 0x7FFF_0000..0x7FFF_7FFF
|
||||||
|
|
||||||
// IDs doesn't effect the render order at all, but we're kinda enforcing these ID ranging.
|
// IDs doesn't effect the render order at all, but we're kinda enforcing these ID ranging.
|
||||||
// However, these two wire-related actor will break the rule. But as we want them to render on top of others
|
// However, these two wire-related actor will break the rule. But as we want them to render on top of others
|
||||||
// in the same render orders, we're giveng them relatively high IDs for them.
|
// in the same render orders, we're giveng them relatively high IDs for them.
|
||||||
val ACTORS_WIRES = 0x7FFF_C000..0x7FFF_EFFF // Rendered front--wires
|
val ACTORS_WIRE_PORTS = 0x7FFF_8000..0x7FFF_BEFF // Rendered front--wires
|
||||||
val ACTORS_WIRES_HELPER = 0x7FFF_F000..0x7FFF_FEFF // Rendered overlay--wiring port icons and logic gates
|
val ACTORS_WIRES = 0x7FFF_BF00..0x7FFF_FEFF // Rendered overlay--wiring port icons
|
||||||
|
|
||||||
val ACTORS_INTERNAL_USE = 0x7FFF_FF00..0x7FFF_FFFF // Actor ID 0x7FFF_FFFF is pre-assigned to the block cursor!
|
val ACTORS_INTERNAL_USE = 0x7FFF_FF00..0x7FFF_FFFF // Actor ID 0x7FFF_FFFF is pre-assigned to the block cursor!
|
||||||
|
|
||||||
|
|||||||
@@ -477,7 +477,8 @@ fun blendMul(batch: SpriteBatch) {
|
|||||||
|
|
||||||
fun blendAlphaMask(batch: SpriteBatch) {
|
fun blendAlphaMask(batch: SpriteBatch) {
|
||||||
batch.enableBlending()
|
batch.enableBlending()
|
||||||
batch.setBlendFunction(GL20.GL_ZERO, GL20.GL_SRC_ALPHA)
|
// batch.setBlendFunction(GL20.GL_ZERO, GL20.GL_SRC_ALPHA)
|
||||||
|
batch.setBlendFunction(GL20.GL_ZERO, GL20.GL_SRC_COLOR)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package net.torvald.terrarum
|
|||||||
|
|
||||||
import net.torvald.terrarum.langpack.Lang
|
import net.torvald.terrarum.langpack.Lang
|
||||||
import net.torvald.terrarum.serialise.toUint
|
import net.torvald.terrarum.serialise.toUint
|
||||||
|
import java.net.URL
|
||||||
import java.time.LocalDate
|
import java.time.LocalDate
|
||||||
import java.time.format.DateTimeFormatter
|
import java.time.format.DateTimeFormatter
|
||||||
import java.util.*
|
import java.util.*
|
||||||
@@ -48,6 +49,8 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|||||||
basegame
|
basegame
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
val FIXED_LATEST_DOWNLOAD_LINK = URL("https://github.com/curioustorvald/Terrarum/releases/latest")
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
@@ -66,12 +69,29 @@ basegame
|
|||||||
* e.g. 0x02010034 will be translated as 2.1.52
|
* e.g. 0x02010034 will be translated as 2.1.52
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
const val VERSION_RAW: Long = 0x0000_000004_000000
|
const val VERSION_RAW: Long = 0x0000_000004_000002
|
||||||
// Commit counts up to the Release 0.3.0: 2259
|
// Commit counts up to the Release 0.3.0: 2259
|
||||||
// Commit counts up to the Release 0.3.1: 2278
|
// Commit counts up to the Release 0.3.1: 2278
|
||||||
// Commit counts up to the Release 0.3.2: 2732
|
// Commit counts up to the Release 0.3.2: 2732
|
||||||
// Commit counts up to the Release 0.3.3: 3020
|
// Commit counts up to the Release 0.3.3: 3020
|
||||||
// Commit counts up to the Release 0.4.0: 3631
|
// Commit counts up to the Release 0.4.0: 3631
|
||||||
|
// Commit counts up to the Release 0.4.1: 3678
|
||||||
|
// Commit counts up to the Release 0.4.2: 3762
|
||||||
|
|
||||||
|
val DEV_CYCLE: Map<String, Long> = mapOf(
|
||||||
|
"Alpha" to 0x0000_000004_000000,
|
||||||
|
"Beta" to 0x0000_FFFFFF_000000,
|
||||||
|
)
|
||||||
|
|
||||||
|
val VERSION_NUMBER: String = String.format(
|
||||||
|
"%d.%d.%d",
|
||||||
|
VERSION_RAW ushr 48,
|
||||||
|
(VERSION_RAW and 0xffff000000L) ushr 24,
|
||||||
|
VERSION_RAW and 0xffffffL
|
||||||
|
)
|
||||||
|
|
||||||
|
private val DEV_CYCLE_LIST_SORTED = DEV_CYCLE.toList().sortedBy { it.second }
|
||||||
|
val CURRENT_DEV_CYCLE: String? = DEV_CYCLE_LIST_SORTED.map { it.first to VERSION_RAW - it.second }.firstOrNull { it.second >= 0L }?.first
|
||||||
|
|
||||||
// val VERSION_SNAPSHOT = Snapshot(0) // for normal dev
|
// val VERSION_SNAPSHOT = Snapshot(0) // for normal dev
|
||||||
// val VERSION_SNAPSHOT = ForcedSnapshot("24w07d") // for snapshot release
|
// val VERSION_SNAPSHOT = ForcedSnapshot("24w07d") // for snapshot release
|
||||||
@@ -79,6 +99,70 @@ basegame
|
|||||||
|
|
||||||
const val VERSION_TAG: String = ""
|
const val VERSION_TAG: String = ""
|
||||||
|
|
||||||
|
val VERSION_STRING: String
|
||||||
|
get() {
|
||||||
|
val major = if (VERSION_RAW >= 0x0001_000000_000000)
|
||||||
|
VERSION_NUMBER
|
||||||
|
else if (CURRENT_DEV_CYCLE != null) {
|
||||||
|
val delta = VERSION_RAW - DEV_CYCLE[CURRENT_DEV_CYCLE]!!
|
||||||
|
CURRENT_DEV_CYCLE + " " + String.format("%d.%d", ((delta and 0xffff000000L) ushr 24) + 1, delta and 0xffffffL)
|
||||||
|
}
|
||||||
|
else
|
||||||
|
VERSION_NUMBER
|
||||||
|
|
||||||
|
val tag = if (VERSION_TAG.isNotBlank()) "-$VERSION_TAG" else ""
|
||||||
|
|
||||||
|
val snapshot = if (VERSION_SNAPSHOT == null) "" else " ($VERSION_SNAPSHOT)"
|
||||||
|
|
||||||
|
return "$major$tag$snapshot"
|
||||||
|
}
|
||||||
|
|
||||||
|
val VERSION_STRING_WITHOUT_SNAPSHOT: String
|
||||||
|
get() {
|
||||||
|
val major = if (VERSION_RAW >= 0x0001_000000_000000)
|
||||||
|
VERSION_NUMBER
|
||||||
|
else if (CURRENT_DEV_CYCLE != null) {
|
||||||
|
val delta = VERSION_RAW - DEV_CYCLE[CURRENT_DEV_CYCLE ?: ""]!!
|
||||||
|
CURRENT_DEV_CYCLE + " " + String.format("%d.%d", ((delta and 0xffff000000L) ushr 24) + 1, delta and 0xffffffL)
|
||||||
|
}
|
||||||
|
else
|
||||||
|
VERSION_NUMBER
|
||||||
|
|
||||||
|
val tag = if (VERSION_TAG.isNotBlank()) "-$VERSION_TAG" else ""
|
||||||
|
|
||||||
|
return "$major$tag"
|
||||||
|
}
|
||||||
|
|
||||||
|
fun convertVersionNumberToReadable(semverStr: String, snapshotObj: Snapshot? = null): String {
|
||||||
|
val numbers = semverStr.split('.')
|
||||||
|
val maj = numbers[0].toLong()
|
||||||
|
val min = numbers.getOrNull(1)?.toLong() ?: 0L
|
||||||
|
val pat = numbers.getOrNull(2)?.toLong() ?: 0L
|
||||||
|
|
||||||
|
val VERSION_RAW = maj.shl(48) or min.shl(24) or pat
|
||||||
|
val CURRENT_DEV_CYCLE: String? = DEV_CYCLE_LIST_SORTED.map { it.first to VERSION_RAW - it.second }.firstOrNull { it.second >= 0L }?.first
|
||||||
|
|
||||||
|
val major = if (VERSION_RAW >= 0x0001_000000_000000)
|
||||||
|
semverStr
|
||||||
|
else if (CURRENT_DEV_CYCLE != null) {
|
||||||
|
val delta = VERSION_RAW - DEV_CYCLE[CURRENT_DEV_CYCLE]!!
|
||||||
|
CURRENT_DEV_CYCLE + " " + String.format("%d.%d", ((delta and 0xffff000000L) ushr 24) + 1, delta and 0xffffffL)
|
||||||
|
}
|
||||||
|
else
|
||||||
|
semverStr
|
||||||
|
|
||||||
|
// val tag = if (VERSION_TAG.isNotBlank()) "-$VERSION_TAG" else ""
|
||||||
|
|
||||||
|
val snapshot = if (snapshotObj == null) "" else " (${snapshotObj})"
|
||||||
|
|
||||||
|
return "$major$snapshot"
|
||||||
|
}
|
||||||
|
|
||||||
|
fun convertVersionNumberToReadableShort(semverStr: String, snapshotObj: Snapshot? = null): String {
|
||||||
|
val s = convertVersionNumberToReadable(semverStr, snapshotObj)
|
||||||
|
return s.replace("Alpha", "α").replace("Beta", "β")
|
||||||
|
}
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////
|
||||||
// CONFIGURATION FOR TILE MAKER //
|
// CONFIGURATION FOR TILE MAKER //
|
||||||
// MAKE SURE THESE VALUES ARE UNIQUE IN THE SOURCE CODE //
|
// MAKE SURE THESE VALUES ARE UNIQUE IN THE SOURCE CODE //
|
||||||
|
|||||||
@@ -350,7 +350,7 @@ object TerrarumPostProcessor : Disposable {
|
|||||||
private val defaultResStr = "Ingame UI Area"
|
private val defaultResStr = "Ingame UI Area"
|
||||||
private val currentResStr = "${App.scr.width}x${App.scr.height}"
|
private val currentResStr = "${App.scr.width}x${App.scr.height}"
|
||||||
private val safeAreaStr = "TV Safe Area"
|
private val safeAreaStr = "TV Safe Area"
|
||||||
private val versionStr = "Version ${App.getVERSION_STRING()}"
|
private val versionStr = "${App.getVERSION_STRING()}"
|
||||||
internal val thisIsDebugStr = "${App.GAME_NAME} ${if (App.IS_DEVELOPMENT_BUILD) "Development Build" else "Release"} $versionStr"
|
internal val thisIsDebugStr = "${App.GAME_NAME} ${if (App.IS_DEVELOPMENT_BUILD) "Development Build" else "Release"} $versionStr"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -123,14 +123,22 @@ class AudioMixer : Disposable {
|
|||||||
* Return oldest dynamic track, even if the track is currently playing
|
* Return oldest dynamic track, even if the track is currently playing
|
||||||
*/
|
*/
|
||||||
fun getFreeTrackNoMatterWhat(): TerrarumAudioMixerTrack {
|
fun getFreeTrackNoMatterWhat(): TerrarumAudioMixerTrack {
|
||||||
return getFreeTrack() ?: dynamicTracks.minBy { it.playStartedTime }
|
synchronized(this) {
|
||||||
|
return getFreeTrack() ?: dynamicTracks.minBy { it.playStartedTime }.also { it.checkedOutTime = System.nanoTime() }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return oldest dynamic track that is not playing
|
* Return oldest dynamic track that is not playing
|
||||||
*/
|
*/
|
||||||
fun getFreeTrack(): TerrarumAudioMixerTrack? {
|
fun getFreeTrack(): TerrarumAudioMixerTrack? {
|
||||||
return dynamicTracks.filter { it.trackingTarget == null && !it.isPlaying }.minByOrNull { it.playStartedTime }
|
synchronized(this) {
|
||||||
|
return dynamicTracks.filter { it.trackingTarget == null && !it.isPlaying }
|
||||||
|
.minByOrNull { maxOf(it.checkedOutTime, it.playStartedTime) }
|
||||||
|
.also {
|
||||||
|
it?.checkedOutTime = System.nanoTime()
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var listenerHeadSize = BinoPan.EARDIST_DEFAULT; private set
|
var listenerHeadSize = BinoPan.EARDIST_DEFAULT; private set
|
||||||
@@ -144,6 +152,10 @@ class AudioMixer : Disposable {
|
|||||||
return (headSize0 ?: 0f).times(scale).coerceAtLeast(BinoPan.EARDIST_DEFAULT)
|
return (headSize0 ?: 0f).times(scale).coerceAtLeast(BinoPan.EARDIST_DEFAULT)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private val millisecUnitTime = 100L // 48 * p, p is multiplied to compensate the time takes for writing samples
|
||||||
|
private val sleepMS = App.audioBufferSize / millisecUnitTime
|
||||||
|
private val sleepNS = (App.audioBufferSize / millisecUnitTime * 1000000).toInt() % 1000000
|
||||||
|
|
||||||
fun createProcessingThread(): Thread = Thread {
|
fun createProcessingThread(): Thread = Thread {
|
||||||
// serial precessing
|
// serial precessing
|
||||||
while (processing) {
|
while (processing) {
|
||||||
@@ -168,6 +180,8 @@ class AudioMixer : Disposable {
|
|||||||
while (processing && !masterTrack.pcmQueue.isEmpty) {
|
while (processing && !masterTrack.pcmQueue.isEmpty) {
|
||||||
masterTrack.adev!!.writeSamples(masterTrack.pcmQueue.removeFirst()) // it blocks until the queue is consumed
|
masterTrack.adev!!.writeSamples(masterTrack.pcmQueue.removeFirst()) // it blocks until the queue is consumed
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Thread.sleep(sleepMS, sleepNS)
|
||||||
}
|
}
|
||||||
|
|
||||||
// parallel processing, it seems even on the 7950X this is less efficient than serial processing...
|
// parallel processing, it seems even on the 7950X this is less efficient than serial processing...
|
||||||
|
|||||||
@@ -147,7 +147,7 @@ class AudioProcessBuf(val inputSamplingRate: Int, val audioReadFun: (ByteArray)
|
|||||||
private val readBuf = ByteArray(fetchSize * 4)
|
private val readBuf = ByteArray(fetchSize * 4)
|
||||||
|
|
||||||
init {
|
init {
|
||||||
printdbg(this, "App.audioMixerBufferSize=${App.audioBufferSize}")
|
// printdbg(this, "App.audioMixerBufferSize=${App.audioBufferSize}")
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun shift(array: FloatArray, size: Int) {
|
private fun shift(array: FloatArray, size: Int) {
|
||||||
|
|||||||
@@ -103,6 +103,8 @@ class MixerTrackProcessor(bufferSize: Int, val rate: Int, val track: TerrarumAud
|
|||||||
return newRead
|
return newRead
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var bufEmpty = true; private set
|
||||||
|
|
||||||
override fun run() {
|
override fun run() {
|
||||||
// while (running) { // uncomment to multithread
|
// while (running) { // uncomment to multithread
|
||||||
/*synchronized(pauseLock) { // uncomment to multithread
|
/*synchronized(pauseLock) { // uncomment to multithread
|
||||||
@@ -196,7 +198,7 @@ class MixerTrackProcessor(bufferSize: Int, val rate: Int, val track: TerrarumAud
|
|||||||
var samplesL1: FloatArray
|
var samplesL1: FloatArray
|
||||||
var samplesR1: FloatArray
|
var samplesR1: FloatArray
|
||||||
|
|
||||||
var bufEmpty = false
|
bufEmpty = false
|
||||||
|
|
||||||
// get samples and apply the fader
|
// get samples and apply the fader
|
||||||
if (track.trackType == TrackType.MASTER || track.trackType == TrackType.BUS) {
|
if (track.trackType == TrackType.MASTER || track.trackType == TrackType.BUS) {
|
||||||
@@ -379,15 +381,6 @@ class MixerTrackProcessor(bufferSize: Int, val rate: Int, val track: TerrarumAud
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private fun <T> Queue<T>.removeFirstOrElse(function: () -> T): T {
|
|
||||||
return if (this.isEmpty) {
|
|
||||||
this.removeFirst()
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
function()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
class FeedSamplesToAdev(val bufferSize: Int, val rate: Int, val track: TerrarumAudioMixerTrack) : Runnable {
|
class FeedSamplesToAdev(val bufferSize: Int, val rate: Int, val track: TerrarumAudioMixerTrack) : Runnable {
|
||||||
init {
|
init {
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ class TerrarumAudioMixerTrack(
|
|||||||
|
|
||||||
internal val streamPlaying = AtomicBoolean(false)
|
internal val streamPlaying = AtomicBoolean(false)
|
||||||
var playStartedTime = 0L; internal set
|
var playStartedTime = 0L; internal set
|
||||||
|
var checkedOutTime = 0L; internal set
|
||||||
|
|
||||||
fun copyStatusTo(other: TerrarumAudioMixerTrack) {
|
fun copyStatusTo(other: TerrarumAudioMixerTrack) {
|
||||||
other.pullNextTrack = this.pullNextTrack
|
other.pullNextTrack = this.pullNextTrack
|
||||||
@@ -162,6 +162,9 @@ class TerrarumAudioMixerTrack(
|
|||||||
override fun equals(other: Any?) = this.hash == (other as TerrarumAudioMixerTrack).hash
|
override fun equals(other: Any?) = this.hash == (other as TerrarumAudioMixerTrack).hash
|
||||||
|
|
||||||
fun stop() {
|
fun stop() {
|
||||||
|
printdbg("TerrarumAudioMixerTrack $name", "Stop music (mixertrack=${this.name}, musictrack=$currentTrack)")
|
||||||
|
// printStackTrace("TerrarumAudioMixerTrack $name")
|
||||||
|
|
||||||
currentTrack?.reset()
|
currentTrack?.reset()
|
||||||
|
|
||||||
streamPlaying.set(false)
|
streamPlaying.set(false)
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ class OreCodex {
|
|||||||
private fun setProp(modname: String, key: Int, record: CSVRecord) {
|
private fun setProp(modname: String, key: Int, record: CSVRecord) {
|
||||||
val prop = OreProp()
|
val prop = OreProp()
|
||||||
prop.id = "ores@$modname:$key"
|
prop.id = "ores@$modname:$key"
|
||||||
prop.tags = record.get("tags").split(',').map { it.trim() }.toHashSet()
|
prop.tags = record.get("tags").split(',').map { it.trim().toUpperCase() }.toHashSet()
|
||||||
prop.item = record.get("item").let { if (it == null) "" else if (it.contains(':')) it else "$modname:$it" }
|
prop.item = record.get("item").let { if (it == null) "" else if (it.contains(':')) it else "$modname:$it" }
|
||||||
|
|
||||||
oreProps[prop.id] = prop
|
oreProps[prop.id] = prop
|
||||||
|
|||||||
@@ -1,10 +1,12 @@
|
|||||||
package net.torvald.terrarum.blockproperties
|
package net.torvald.terrarum.blockproperties
|
||||||
|
|
||||||
|
import com.badlogic.gdx.files.FileHandle
|
||||||
import net.torvald.terrarum.*
|
import net.torvald.terrarum.*
|
||||||
import net.torvald.terrarum.App.printdbg
|
import net.torvald.terrarum.App.printdbg
|
||||||
import net.torvald.terrarum.TerrarumAppConfiguration.TILE_SIZE
|
import net.torvald.terrarum.TerrarumAppConfiguration.TILE_SIZE
|
||||||
import net.torvald.terrarum.gameitems.GameItem
|
import net.torvald.terrarum.gameitems.GameItem
|
||||||
import net.torvald.terrarum.gameitems.ItemID
|
import net.torvald.terrarum.gameitems.ItemID
|
||||||
|
import net.torvald.terrarum.modulebasegame.gameactors.WireEmissionType
|
||||||
import net.torvald.terrarum.utils.CSVFetcher
|
import net.torvald.terrarum.utils.CSVFetcher
|
||||||
import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack
|
import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack
|
||||||
import org.apache.commons.csv.CSVRecord
|
import org.apache.commons.csv.CSVRecord
|
||||||
@@ -17,9 +19,12 @@ import java.io.IOException
|
|||||||
class WireCodex {
|
class WireCodex {
|
||||||
|
|
||||||
@Transient val wireProps = HashMap<ItemID, WireProp>()
|
@Transient val wireProps = HashMap<ItemID, WireProp>()
|
||||||
|
|
||||||
@Transient private val nullProp = WireProp()
|
@Transient private val nullProp = WireProp()
|
||||||
|
|
||||||
|
@Transient val wirePorts = HashMap<WireEmissionType, Triple<TextureRegionPack, Int, Int>>()
|
||||||
|
|
||||||
|
@Transient val wireDecays = HashMap<ItemID, Double>()
|
||||||
|
|
||||||
fun clear() {
|
fun clear() {
|
||||||
wireProps.clear()
|
wireProps.clear()
|
||||||
}
|
}
|
||||||
@@ -39,15 +44,15 @@ class WireCodex {
|
|||||||
* @param module name of the module
|
* @param module name of the module
|
||||||
* @param path to the "wires" directory, not path to the CSV; must end with a slash!
|
* @param path to the "wires" directory, not path to the CSV; must end with a slash!
|
||||||
*/
|
*/
|
||||||
fun fromModule(module: String, path: String) {
|
fun fromModule(module: String, path: String, blockRegisterHook: (WireProp) -> Unit) {
|
||||||
printdbg(this, "Building wire properties table for module $module")
|
printdbg(this, "Building wire properties table for module $module")
|
||||||
try {
|
try {
|
||||||
register(module, path, CSVFetcher.readFromModule(module, path + "wires.csv"))
|
register(module, path, CSVFetcher.readFromModule(module, path + "wires.csv"), blockRegisterHook)
|
||||||
}
|
}
|
||||||
catch (e: IOException) { e.printStackTrace() }
|
catch (e: IOException) { e.printStackTrace() }
|
||||||
}
|
}
|
||||||
|
|
||||||
fun fromCSV(module: String, path: String, csvString: String) {
|
fun fromCSV(module: String, path: String, csvString: String, blockRegisterHook: (WireProp) -> Unit) {
|
||||||
printdbg(this, "Building wire properties table for module $module")
|
printdbg(this, "Building wire properties table for module $module")
|
||||||
|
|
||||||
val csvParser = org.apache.commons.csv.CSVParser.parse(
|
val csvParser = org.apache.commons.csv.CSVParser.parse(
|
||||||
@@ -57,10 +62,10 @@ class WireCodex {
|
|||||||
val csvRecordList = csvParser.records
|
val csvRecordList = csvParser.records
|
||||||
csvParser.close()
|
csvParser.close()
|
||||||
|
|
||||||
register(module, path, csvRecordList)
|
register(module, path, csvRecordList, blockRegisterHook)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun register(module: String, path: String, records: List<CSVRecord>) {
|
private fun register(module: String, path: String, records: List<CSVRecord>, blockRegisterHook: (WireProp) -> Unit) {
|
||||||
records.forEach {
|
records.forEach {
|
||||||
setProp(module, it.intVal("id"), it)
|
setProp(module, it.intVal("id"), it)
|
||||||
}
|
}
|
||||||
@@ -73,9 +78,68 @@ class WireCodex {
|
|||||||
val t = TextureRegionPack(ModMgr.getGdxFile(module, "$path$wireid.tga"), TILE_SIZE, TILE_SIZE)
|
val t = TextureRegionPack(ModMgr.getGdxFile(module, "$path$wireid.tga"), TILE_SIZE, TILE_SIZE)
|
||||||
/*return*/t
|
/*return*/t
|
||||||
}
|
}
|
||||||
|
|
||||||
|
wireProps[id]?.let(blockRegisterHook)
|
||||||
}
|
}
|
||||||
|
|
||||||
CommonResourcePool.loadAll()
|
CommonResourcePool.loadAll()
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
fun portsFromModule(module: String, path: String) {
|
||||||
|
printdbg(this, "Building wire ports table for module $module")
|
||||||
|
try {
|
||||||
|
registerPorts(module, path, CSVFetcher.readFromModule(module, path + "wireports.csv"))
|
||||||
|
}
|
||||||
|
catch (e: IOException) { e.printStackTrace() }
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun registerPorts(module: String, path: String, records: List<CSVRecord>) {
|
||||||
|
val spriteSheetFiles = ArrayList<Pair<FileHandle, String>>()
|
||||||
|
val tempRecords = HashMap<WireEmissionType, Triple<String, Int, Int>>()
|
||||||
|
|
||||||
|
records.forEach {
|
||||||
|
val type = it.get("accepts")
|
||||||
|
val fileModule = it.get("fileModule")
|
||||||
|
val filePath = it.get("file")
|
||||||
|
val x = it.get("xpos").toInt()
|
||||||
|
val y = it.get("ypos").toInt()
|
||||||
|
|
||||||
|
val file = ModMgr.getGdxFile(fileModule, filePath)
|
||||||
|
val fileID = "wireport:$fileModule.${filePath.replace('\\','/')}"
|
||||||
|
|
||||||
|
spriteSheetFiles.add(file to fileID)
|
||||||
|
|
||||||
|
tempRecords[type] = Triple(fileID, x, y)
|
||||||
|
}
|
||||||
|
|
||||||
|
spriteSheetFiles.forEach { (file, id) ->
|
||||||
|
CommonResourcePool.addToLoadingList(id) {
|
||||||
|
TextureRegionPack(file, TILE_SIZE, TILE_SIZE)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
CommonResourcePool.loadAll()
|
||||||
|
|
||||||
|
tempRecords.forEach { type, (fileID, x, y) ->
|
||||||
|
wirePorts[type] = Triple(CommonResourcePool.getAsTextureRegionPack(fileID), x, y)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun wireDecaysFromModule(module: String, path: String) {
|
||||||
|
printdbg(this, "Building wire ports table for module $module")
|
||||||
|
try {
|
||||||
|
registerDecays(module, path, CSVFetcher.readFromModule(module, path + "decayconsts.csv"))
|
||||||
|
}
|
||||||
|
catch (e: IOException) { e.printStackTrace() }
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun registerDecays(module: String, path: String, records: List<CSVRecord>) {
|
||||||
|
records.forEach {
|
||||||
|
val item = it.get("wireItemID")
|
||||||
|
val d = it.get("const").toDouble()
|
||||||
|
|
||||||
|
wireDecays[item] = d
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getAll() = wireProps.values
|
fun getAll() = wireProps.values
|
||||||
@@ -134,6 +198,7 @@ class WireCodex {
|
|||||||
prop.inputType = record.get("inputtype") ?: prop.accepts
|
prop.inputType = record.get("inputtype") ?: prop.accepts
|
||||||
prop.outputType = record.get("outputtype") ?: prop.accepts
|
prop.outputType = record.get("outputtype") ?: prop.accepts
|
||||||
prop.canBranch = record.boolVal("branching")
|
prop.canBranch = record.boolVal("branching")
|
||||||
|
prop.tags = record.get("tags").split(',').map { it.trim().toUpperCase() }.toHashSet()
|
||||||
|
|
||||||
wireProps[prop.id] = prop
|
wireProps[prop.id] = prop
|
||||||
|
|
||||||
@@ -155,4 +220,8 @@ class WireCodex {
|
|||||||
fun getAllWiresThatAccepts(accept: String): List<Pair<ItemID, WireProp>> {
|
fun getAllWiresThatAccepts(accept: String): List<Pair<ItemID, WireProp>> {
|
||||||
return wireProps.filter { it.value.accepts == accept }.toList()
|
return wireProps.filter { it.value.accepts == accept }.toList()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun getWirePortSpritesheet(emissionType: WireEmissionType): Triple<TextureRegionPack, Int, Int>? {
|
||||||
|
return wirePorts[emissionType]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -24,4 +24,18 @@ class WireProp {
|
|||||||
* Mainly intended to be used by third-party modules
|
* Mainly intended to be used by third-party modules
|
||||||
*/
|
*/
|
||||||
val extra = Codex()
|
val extra = Codex()
|
||||||
|
|
||||||
|
@Transient var tags = HashSet<String>()
|
||||||
|
|
||||||
|
fun hasTag(s: String) = tags.contains(s)
|
||||||
|
fun hasAnyTagOf(vararg s: String) = s.any { hasTag(it) }
|
||||||
|
fun hasAnyTag(s: Collection<String>) = s.any { hasTag(it) }
|
||||||
|
fun hasAnyTag(s: Array<String>) = s.any { hasTag(it) }
|
||||||
|
fun hasAllTagOf(vararg s: String) = s.all { hasTag(it) }
|
||||||
|
fun hasAllTag(s: Collection<String>) = s.all { hasTag(it) }
|
||||||
|
fun hasAllTag(s: Array<String>) = s.all { hasTag(it) }
|
||||||
|
fun hasNoTagOf(vararg s: String) = s.none { hasTag(it) }
|
||||||
|
fun hasNoTag(s: Collection<String>) = s.none { hasTag(it) }
|
||||||
|
fun hasNoTag(s: Array<String>) = s.none { hasTag(it) }
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -15,7 +15,7 @@ import org.apache.commons.codec.digest.DigestUtils
|
|||||||
* - BE CRACKABLE (crackstation.net)
|
* - BE CRACKABLE (crackstation.net)
|
||||||
*
|
*
|
||||||
* Example passwords would be:
|
* Example passwords would be:
|
||||||
* aryll -> beedle -> ciela -> daruk -> ... -> linebeck -> mido -> navi -> ...
|
* aryll -> beedle -> ciela -> daruk -> epona -> ... -> linebeck -> mido -> navi -> ...
|
||||||
*
|
*
|
||||||
* Notes:
|
* Notes:
|
||||||
* do NOT put plaintext anywhere in the code (except for comments maybe)
|
* do NOT put plaintext anywhere in the code (except for comments maybe)
|
||||||
@@ -36,7 +36,7 @@ internal object Authenticator : ConsoleCommand {
|
|||||||
// println("auth passwd: '$pwd'")
|
// println("auth passwd: '$pwd'")
|
||||||
// println("hash: $hashedPwd")
|
// println("hash: $hashedPwd")
|
||||||
|
|
||||||
if ("c40232ae7b8020da3ab1449a015e7cc23f249a790856b63b1b69c6a5de019fed".equals(hashedPwd, ignoreCase = true)) {
|
if ("4a26c5cd64195c4a52d2e3770e56c1d0c65861d2a03b47f8ba5d25ca033b9c42".equals(hashedPwd, ignoreCase = true)) {
|
||||||
// beedle
|
// beedle
|
||||||
val msg = if (a) "Locked" else "Authenticated"
|
val msg = if (a) "Locked" else "Authenticated"
|
||||||
Echo(msg)
|
Echo(msg)
|
||||||
|
|||||||
@@ -122,6 +122,8 @@ object AVKey {
|
|||||||
|
|
||||||
const val __PLAYER_QUICKSLOTSEL = "__quickslotselection"
|
const val __PLAYER_QUICKSLOTSEL = "__quickslotselection"
|
||||||
|
|
||||||
|
const val __PLAYER_WIRECUTTERSEL = "__wirecutterselection"
|
||||||
|
|
||||||
/** Double
|
/** Double
|
||||||
* When using tool/arm/etc. how long action button is held, in milliseconds (Int)
|
* When using tool/arm/etc. how long action button is held, in milliseconds (Int)
|
||||||
* Or for NPCs, how long it has been waiting for next move
|
* Or for NPCs, how long it has been waiting for next move
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package net.torvald.terrarum.gameactors
|
|||||||
import net.torvald.random.HQRNG
|
import net.torvald.random.HQRNG
|
||||||
import net.torvald.terrarum.App
|
import net.torvald.terrarum.App
|
||||||
import net.torvald.terrarum.App.printdbg
|
import net.torvald.terrarum.App.printdbg
|
||||||
|
import net.torvald.terrarum.App.printdbgerr
|
||||||
import net.torvald.terrarum.INGAME
|
import net.torvald.terrarum.INGAME
|
||||||
import net.torvald.terrarum.Terrarum
|
import net.torvald.terrarum.Terrarum
|
||||||
import net.torvald.terrarum.audio.MusicContainer
|
import net.torvald.terrarum.audio.MusicContainer
|
||||||
@@ -50,6 +51,7 @@ abstract class Actor : Comparable<Actor>, Runnable {
|
|||||||
|
|
||||||
|
|
||||||
enum class RenderOrder {
|
enum class RenderOrder {
|
||||||
|
FAR_BEHIND, // wires
|
||||||
BEHIND, // tapestries, some particles (obstructed by terrain)
|
BEHIND, // tapestries, some particles (obstructed by terrain)
|
||||||
MIDDLE, // actors
|
MIDDLE, // actors
|
||||||
MIDTOP, // bullets, thrown items
|
MIDTOP, // bullets, thrown items
|
||||||
@@ -160,6 +162,10 @@ abstract class Actor : Comparable<Actor>, Runnable {
|
|||||||
musicTracks[music] = track
|
musicTracks[music] = track
|
||||||
musicTracks1.add(track.name)
|
musicTracks1.add(track.name)
|
||||||
track.stop()
|
track.stop()
|
||||||
|
track.trackingTarget = this
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
printdbgerr(this, "Could not get a free track")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -182,9 +188,9 @@ abstract class Actor : Comparable<Actor>, Runnable {
|
|||||||
it.currentTrack = music
|
it.currentTrack = music
|
||||||
it.maxVolumeFun = { volume }
|
it.maxVolumeFun = { volume }
|
||||||
it.volume = volume
|
it.volume = volume
|
||||||
doSomethingWithTrack(it)
|
|
||||||
// it.play()
|
// it.play()
|
||||||
it.playRequested.set(true)
|
it.playRequested.set(true)
|
||||||
|
doSomethingWithTrack(it)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ import net.torvald.terrarum.modulebasegame.TerrarumIngame
|
|||||||
import net.torvald.terrarum.modulebasegame.gameactors.ActorHumanoid
|
import net.torvald.terrarum.modulebasegame.gameactors.ActorHumanoid
|
||||||
import net.torvald.terrarum.modulebasegame.gameactors.IngamePlayer
|
import net.torvald.terrarum.modulebasegame.gameactors.IngamePlayer
|
||||||
import net.torvald.terrarum.modulebasegame.gameactors.Pocketed
|
import net.torvald.terrarum.modulebasegame.gameactors.Pocketed
|
||||||
|
import net.torvald.terrarum.modulebasegame.ui.UIItemInventoryCellCommonRes.tooltipShowing
|
||||||
import net.torvald.terrarum.realestate.LandUtil
|
import net.torvald.terrarum.realestate.LandUtil
|
||||||
import net.torvald.terrarum.worlddrawer.CreateTileAtlas
|
import net.torvald.terrarum.worlddrawer.CreateTileAtlas
|
||||||
import net.torvald.terrarum.worlddrawer.WorldCamera
|
import net.torvald.terrarum.worlddrawer.WorldCamera
|
||||||
@@ -97,6 +98,8 @@ open class ActorWithBody : Actor {
|
|||||||
val mouseUp: Boolean
|
val mouseUp: Boolean
|
||||||
get() = hitbox.containsPoint((world?.width ?: 0) * TILE_SIZED, Terrarum.mouseX, Terrarum.mouseY)
|
get() = hitbox.containsPoint((world?.width ?: 0) * TILE_SIZED, Terrarum.mouseX, Terrarum.mouseY)
|
||||||
|
|
||||||
|
@Transient protected val tooltipHash = System.nanoTime()
|
||||||
|
|
||||||
var hitboxTranslateX: Int = 0// relative to spritePosX
|
var hitboxTranslateX: Int = 0// relative to spritePosX
|
||||||
protected set
|
protected set
|
||||||
var hitboxTranslateY: Int = 0// relative to spritePosY
|
var hitboxTranslateY: Int = 0// relative to spritePosY
|
||||||
@@ -443,7 +446,7 @@ open class ActorWithBody : Actor {
|
|||||||
|
|
||||||
fun setPosition(pos: Point2d) = setPosition(pos.x, pos.y)
|
fun setPosition(pos: Point2d) = setPosition(pos.x, pos.y)
|
||||||
fun setPosition(pos: Vector2) = setPosition(pos.x, pos.y)
|
fun setPosition(pos: Vector2) = setPosition(pos.x, pos.y)
|
||||||
|
fun setPositionFromCentrePoint(pos: Vector2) = setPosition(pos.x, pos.y + (hitbox.height) / 2)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ONLY FOR INITIAL SETUP
|
* ONLY FOR INITIAL SETUP
|
||||||
@@ -669,11 +672,15 @@ open class ActorWithBody : Actor {
|
|||||||
feetPosTile.set(hIntTilewiseHitbox.centeredX.floorToInt(), hIntTilewiseHitbox.endY.floorToInt())
|
feetPosTile.set(hIntTilewiseHitbox.centeredX.floorToInt(), hIntTilewiseHitbox.endY.floorToInt())
|
||||||
|
|
||||||
|
|
||||||
if (mouseUp && this.tooltipText != null) INGAME.setTooltipMessage(this.tooltipText)
|
if (mouseUp && tooltipText != null && tooltipShowing[tooltipHash] != true) {
|
||||||
|
INGAME.setTooltipMessage(tooltipText)
|
||||||
|
tooltipShowing[tooltipHash] = true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// make sure tooltip to disable even when the actor's update is paused at unfortunate time
|
if (tooltipText == null || !mouseUp || flagDespawn) {
|
||||||
if (!mouseUp && INGAME.getTooltipMessage() == this.tooltipText) INGAME.setTooltipMessage(null)
|
tooltipShowing[tooltipHash] = false
|
||||||
|
}
|
||||||
|
|
||||||
// isStationary = (hitbox - oldHitbox).magnitudeSquared < PHYS_EPSILON_VELO
|
// isStationary = (hitbox - oldHitbox).magnitudeSquared < PHYS_EPSILON_VELO
|
||||||
isStationary = isCloseEnough(hitbox.startX, oldHitbox.startX) && // this is supposed to be more accurate, idk
|
isStationary = isCloseEnough(hitbox.startX, oldHitbox.startX) && // this is supposed to be more accurate, idk
|
||||||
@@ -887,7 +894,7 @@ open class ActorWithBody : Actor {
|
|||||||
debug1("translate x by $t")
|
debug1("translate x by $t")
|
||||||
}
|
}
|
||||||
/* 4, 14 */ COLLIDING_RIGHT, COLLIDING_RIGHT or COLLIDING_UD -> {
|
/* 4, 14 */ COLLIDING_RIGHT, COLLIDING_RIGHT or COLLIDING_UD -> {
|
||||||
val t = -newHitbox.endX.modTileDelta()
|
val t = -newHitbox.endX.modTileDelta() - PHYS_EPSILON_DIST // THE cheapest way to resolve right-sided phys bug
|
||||||
newHitbox.translatePosX(t); bounceX = true
|
newHitbox.translatePosX(t); bounceX = true
|
||||||
debug1("translate x by $t")
|
debug1("translate x by $t")
|
||||||
}
|
}
|
||||||
@@ -972,7 +979,8 @@ open class ActorWithBody : Actor {
|
|||||||
debug1("offendingTileWorldY=$offendingTileWorldY, offendingHitboxPointY=$offendingHitboxPointY")
|
debug1("offendingTileWorldY=$offendingTileWorldY, offendingHitboxPointY=$offendingHitboxPointY")
|
||||||
|
|
||||||
val displacementAbs = Vector2(
|
val displacementAbs = Vector2(
|
||||||
(offendingTileWorldX - offendingHitboxPointX).abs(),
|
(offendingTileWorldX - offendingHitboxPointX).abs() +
|
||||||
|
if (selfCollisionStatus and COLLIDING_RIGHT != 0) PHYS_EPSILON_DIST else 0.0, // THE cheapest way to resolve right-sided phys bug
|
||||||
(offendingTileWorldY - offendingHitboxPointY).abs()
|
(offendingTileWorldY - offendingHitboxPointY).abs()
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -1856,6 +1864,23 @@ open class ActorWithBody : Actor {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun drawTextureInGoodPosition(frameDelta: Float, texture: TextureRegion, batch: SpriteBatch, forcedColourFilter: Color? = null) {
|
||||||
|
if (world == null) return
|
||||||
|
|
||||||
|
val offsetX = 0f
|
||||||
|
val offsetY = 0f
|
||||||
|
|
||||||
|
val posX = hitbox.startX.plus(PHYS_EPSILON_DIST).toFloat()
|
||||||
|
val posY = hitbox.startY.plus(PHYS_EPSILON_DIST).toFloat()
|
||||||
|
|
||||||
|
drawBodyInGoodPosition(posX, posY) { x, y ->
|
||||||
|
val oldCol = batch.color.cpy()
|
||||||
|
batch.color = if (forcedColourFilter != null) forcedColourFilter else Color.WHITE
|
||||||
|
batch.draw(texture, x + offsetX, y + offsetY)
|
||||||
|
batch.color = oldCol
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
override fun onActorValueChange(key: String, value: Any?) {
|
override fun onActorValueChange(key: String, value: Any?) {
|
||||||
// do nothing
|
// do nothing
|
||||||
}
|
}
|
||||||
@@ -1922,6 +1947,7 @@ open class ActorWithBody : Actor {
|
|||||||
|
|
||||||
internal open fun flagDespawn() {
|
internal open fun flagDespawn() {
|
||||||
flagDespawn = true
|
flagDespawn = true
|
||||||
|
tooltipShowing.remove(tooltipHash)
|
||||||
}
|
}
|
||||||
|
|
||||||
open fun getSpriteHead(): TextureRegion? {
|
open fun getSpriteHead(): TextureRegion? {
|
||||||
@@ -2245,6 +2271,7 @@ open class ActorWithBody : Actor {
|
|||||||
App.disposables.add(sprite)
|
App.disposables.add(sprite)
|
||||||
App.disposables.add(spriteGlow)
|
App.disposables.add(spriteGlow)
|
||||||
App.disposables.add(spriteEmissive)
|
App.disposables.add(spriteEmissive)
|
||||||
|
tooltipShowing.remove(tooltipHash)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ import kotlin.math.floor
|
|||||||
class BlockMarkerActor : ActorWithBody(Actor.RenderOrder.OVERLAY, physProp = PhysProperties.MOBILE_OBJECT()), NoSerialise {
|
class BlockMarkerActor : ActorWithBody(Actor.RenderOrder.OVERLAY, physProp = PhysProperties.MOBILE_OBJECT()), NoSerialise {
|
||||||
|
|
||||||
enum class MarkerMode {
|
enum class MarkerMode {
|
||||||
FIXTURE_GHOST, BLOCK_MARKER
|
FIXTURE_GHOST, BLOCK_MARKER, HIDDEN
|
||||||
}
|
}
|
||||||
|
|
||||||
private val defaultSize = 16.0
|
private val defaultSize = 16.0
|
||||||
@@ -45,12 +45,14 @@ class BlockMarkerActor : ActorWithBody(Actor.RenderOrder.OVERLAY, physProp = Phy
|
|||||||
|
|
||||||
|
|
||||||
init {
|
init {
|
||||||
this.isVisible = false
|
this.isVisible = true
|
||||||
renderOrder = Actor.RenderOrder.OVERLAY // for some reason the constructor didn't work
|
renderOrder = Actor.RenderOrder.OVERLAY // for some reason the constructor didn't work
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
override fun drawBody(frameDelta: Float, batch: SpriteBatch) {
|
override fun drawBody(frameDelta: Float, batch: SpriteBatch) {
|
||||||
|
this.isVisible = true
|
||||||
|
|
||||||
if (isVisible) {
|
if (isVisible) {
|
||||||
if (markerMode == MarkerMode.FIXTURE_GHOST) {
|
if (markerMode == MarkerMode.FIXTURE_GHOST) {
|
||||||
if (INGAME.actorNowPlaying != null) {
|
if (INGAME.actorNowPlaying != null) {
|
||||||
@@ -114,6 +116,16 @@ class BlockMarkerActor : ActorWithBody(Actor.RenderOrder.OVERLAY, physProp = Phy
|
|||||||
ghost = null
|
ghost = null
|
||||||
setGhostColourNone()
|
setGhostColourNone()
|
||||||
hitbox.setDimension(TILE_SIZED, TILE_SIZED)
|
hitbox.setDimension(TILE_SIZED, TILE_SIZED)
|
||||||
|
markerMode = MarkerMode.HIDDEN
|
||||||
|
}
|
||||||
|
|
||||||
|
fun hideMarker() {
|
||||||
|
unsetGhost()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun showMarker(shape: Int) {
|
||||||
|
markerShape = shape
|
||||||
|
markerMode = MarkerMode.BLOCK_MARKER
|
||||||
}
|
}
|
||||||
|
|
||||||
fun setGhostColourNone() { ghostColour = Color.WHITE }
|
fun setGhostColourNone() { ghostColour = Color.WHITE }
|
||||||
|
|||||||
@@ -1,26 +1,28 @@
|
|||||||
package net.torvald.terrarum.gameactors
|
package net.torvald.terrarum.gameactors
|
||||||
|
|
||||||
|
import com.badlogic.gdx.graphics.Color
|
||||||
import com.badlogic.gdx.graphics.g2d.SpriteBatch
|
import com.badlogic.gdx.graphics.g2d.SpriteBatch
|
||||||
import net.torvald.spriteanimation.SheetSpriteAnimation
|
import net.torvald.spriteanimation.SheetSpriteAnimation
|
||||||
import net.torvald.terrarum.*
|
import net.torvald.terrarum.*
|
||||||
|
import net.torvald.terrarum.App.printdbg
|
||||||
import net.torvald.terrarum.TerrarumAppConfiguration.TILE_SIZE
|
import net.torvald.terrarum.TerrarumAppConfiguration.TILE_SIZE
|
||||||
import net.torvald.terrarum.gameitems.ItemID
|
import net.torvald.terrarum.gameitems.ItemID
|
||||||
|
import net.torvald.terrarum.modulebasegame.TerrarumIngame
|
||||||
|
import net.torvald.terrarum.modulebasegame.gameactors.WireEmissionType
|
||||||
|
import net.torvald.terrarum.ui.Toolkit
|
||||||
|
import kotlin.math.cos
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by minjaesong on 2024-03-05.
|
||||||
|
*/
|
||||||
|
interface InternalActor {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* FIXME Constructor is super expensive
|
|
||||||
*
|
|
||||||
* Created by minjaesong on 2021-07-30.
|
* Created by minjaesong on 2021-07-30.
|
||||||
*/
|
*/
|
||||||
class WireActor : ActorWithBody, NoSerialise {
|
class WireActor : ActorWithBody, NoSerialise, InternalActor {
|
||||||
|
|
||||||
companion object {
|
|
||||||
val WIRE_NEARBY = arrayOf(
|
|
||||||
(+1 to 0), // tileR
|
|
||||||
(0 to +1), // tileB
|
|
||||||
(-1 to 0), // tileL
|
|
||||||
(0 to -1) // tileT
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
private constructor()
|
private constructor()
|
||||||
|
|
||||||
@@ -34,7 +36,6 @@ class WireActor : ActorWithBody, NoSerialise {
|
|||||||
private var worldX = 0
|
private var worldX = 0
|
||||||
private var worldY = 0
|
private var worldY = 0
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param itemID must start with "wire@"
|
* @param itemID must start with "wire@"
|
||||||
*/
|
*/
|
||||||
@@ -60,34 +61,99 @@ class WireActor : ActorWithBody, NoSerialise {
|
|||||||
(sprite as SheetSpriteAnimation).currentFrame = cnx
|
(sprite as SheetSpriteAnimation).currentFrame = cnx
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getNearbyTilesPos(x: Int, y: Int): Array<Point2i> {
|
override fun updateImpl(delta: Float) {
|
||||||
return arrayOf(
|
}
|
||||||
Point2i(x + 1, y),
|
|
||||||
Point2i(x, y + 1),
|
private fun essfun0(x: Double) = -cos(Math.PI * x) / 2.0 + 0.5
|
||||||
Point2i(x - 1, y),
|
private fun essfun(x: Double) = essfun0(x)
|
||||||
Point2i(x, y - 1)
|
|
||||||
)
|
override fun drawBody(frameDelta: Float, batch: SpriteBatch) {
|
||||||
|
if (isVisible && sprite != null) {
|
||||||
|
BlendMode.resolve(drawMode, batch)
|
||||||
|
|
||||||
|
// signal wires?
|
||||||
|
if (WireCodex.wireProps[wireID]?.accepts == "digital_bit") {
|
||||||
|
val strength = world?.getWireEmitStateOf(worldX, worldY, wireID)?.x ?: 0.0
|
||||||
|
|
||||||
|
// draw base (unlit) sprite
|
||||||
|
batch.color = Color.WHITE
|
||||||
|
(sprite as SheetSpriteAnimation).currentRow = 0
|
||||||
|
drawSpriteInGoodPosition(frameDelta, sprite!!, batch, 0, Color.WHITE)
|
||||||
|
|
||||||
|
// draw lit sprite
|
||||||
|
val alpha = Color(1f, 1f, 1f, essfun(strength.coerceIn(0.0, 1.0)).toFloat())
|
||||||
|
(sprite as SheetSpriteAnimation).currentRow = 1
|
||||||
|
drawSpriteInGoodPosition(frameDelta, sprite!!, batch, 0, alpha)
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
(sprite as SheetSpriteAnimation).currentRow = 0
|
||||||
|
drawSpriteInGoodPosition(frameDelta, sprite!!, batch, 0, Color.WHITE)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by minjaesong on 2024-03-07.
|
||||||
|
*/
|
||||||
|
class WirePortActor : ActorWithBody, NoSerialise, InternalActor {
|
||||||
|
|
||||||
|
|
||||||
|
private constructor()
|
||||||
|
|
||||||
|
constructor(id: ActorID) : super(RenderOrder.OVERLAY, PhysProperties.IMMOBILE(), id)
|
||||||
|
|
||||||
|
init {
|
||||||
|
setHitboxDimension(TILE_SIZE, TILE_SIZE, 0, 0)
|
||||||
|
renderOrder = RenderOrder.OVERLAY
|
||||||
|
}
|
||||||
|
|
||||||
|
private var portID: WireEmissionType = ""
|
||||||
|
private var worldX = 0
|
||||||
|
private var worldY = 0
|
||||||
|
|
||||||
|
/**
|
||||||
|
*/
|
||||||
|
fun setPort(emissionType: WireEmissionType, worldX: Int, worldY: Int) {
|
||||||
|
setHitboxDimension(TILE_SIZE, TILE_SIZE, 0, 0)
|
||||||
|
|
||||||
|
if (portID != emissionType) {
|
||||||
|
WireCodex.getWirePortSpritesheet(emissionType)?.let { (sheet, x, y) ->
|
||||||
|
if (sprite == null) {
|
||||||
|
makeNewSprite(sheet).let {
|
||||||
|
it.delays = floatArrayOf(Float.POSITIVE_INFINITY,Float.POSITIVE_INFINITY,Float.POSITIVE_INFINITY,Float.POSITIVE_INFINITY)
|
||||||
|
it.setRowsAndFrames(1, 16)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
(sprite as SheetSpriteAnimation).let {
|
||||||
|
it.setSpriteImage(sheet)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
(sprite as SheetSpriteAnimation).let {
|
||||||
|
it.currentFrame = x
|
||||||
|
it.currentRow = y
|
||||||
|
}
|
||||||
|
|
||||||
|
portID = emissionType
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
this.worldX = worldX
|
||||||
|
this.worldY = worldY
|
||||||
|
|
||||||
|
setPosition((worldX + 0.5) * TILE_SIZE, (worldY + 1.0) * TILE_SIZE - 1.0) // what the fuck?
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun updateImpl(delta: Float) {
|
override fun updateImpl(delta: Float) {
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun drawBody(frameDelta: Float, batch: SpriteBatch) {
|
override fun drawBody(frameDelta: Float, batch: SpriteBatch) {
|
||||||
if (isVisible && sprite != null) {
|
if (isVisible && sprite != null && (Terrarum.ingame!! as TerrarumIngame).selectedWireRenderClass.isNotBlank()) {
|
||||||
if (WireCodex[wireID].accepts == "digital_3bits") {
|
|
||||||
// "digital_3bits" must come right after three wires it bundles
|
|
||||||
val rootID = wireID.substringBefore(':') + ":"
|
|
||||||
var row = 0
|
|
||||||
(WireCodex[wireID].numericID - 3 .. WireCodex[wireID].numericID - 1).forEachIndexed { index, it ->
|
|
||||||
val itemID = rootID + it
|
|
||||||
row = row or ((world?.getWireEmitStateOf(worldX, worldY, itemID)?.isNotZero == true).toInt() shl index)
|
|
||||||
}
|
|
||||||
(sprite as SheetSpriteAnimation).currentRow = row
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
(sprite as SheetSpriteAnimation).currentRow = (world?.getWireEmitStateOf(worldX, worldY, wireID)?.isNotZero == true).toInt()
|
|
||||||
}
|
|
||||||
|
|
||||||
BlendMode.resolve(drawMode, batch)
|
BlendMode.resolve(drawMode, batch)
|
||||||
drawSpriteInGoodPosition(frameDelta, sprite!!, batch)
|
drawSpriteInGoodPosition(frameDelta, sprite!!, batch)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -208,7 +208,7 @@ class IngameController(val terrarumIngame: TerrarumIngame) : InputAdapter() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
terrarumIngame.uiContainer.forEach { it?.keyDown(keycode) } // for KeyboardControlled UIcanvases
|
terrarumIngame.uiContainer.forEach { if (it?.justOpened == false) it.keyDown(keycode) } // for KeyboardControlled UIcanvases
|
||||||
|
|
||||||
// Debug UIs
|
// Debug UIs
|
||||||
if (keycode == Input.Keys.GRAVE) {
|
if (keycode == Input.Keys.GRAVE) {
|
||||||
@@ -233,7 +233,7 @@ class IngameController(val terrarumIngame: TerrarumIngame) : InputAdapter() {
|
|||||||
terrarumIngame.uiQuickBar.setAsOpen()
|
terrarumIngame.uiQuickBar.setAsOpen()
|
||||||
}
|
}
|
||||||
|
|
||||||
terrarumIngame.uiContainer.forEach { it?.keyUp(keycode) } // for KeyboardControlled UIcanvases
|
terrarumIngame.uiContainer.forEach { if (it?.justOpened == false) it.keyUp(keycode) } // for KeyboardControlled UIcanvases
|
||||||
|
|
||||||
// screenshot key
|
// screenshot key
|
||||||
if (keycode == Input.Keys.F12) f12Down = false
|
if (keycode == Input.Keys.F12) f12Down = false
|
||||||
@@ -243,27 +243,25 @@ class IngameController(val terrarumIngame: TerrarumIngame) : InputAdapter() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun keyTyped(character: Char): Boolean {
|
override fun keyTyped(character: Char): Boolean {
|
||||||
terrarumIngame.uiContainer.forEach { if (it?.isVisible == true) it.keyTyped(character) }
|
terrarumIngame.uiContainer.forEach { if (it?.justOpened == false && it.isVisible) it.keyTyped(character) }
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun tTouchUp(screenX: Int, screenY: Int, pointer: Int, button: Int): Boolean {
|
private fun tTouchUp(screenX: Int, screenY: Int, pointer: Int, button: Int): Boolean {
|
||||||
// don't separate Player from this! Physics will break, esp. airborne manoeuvre
|
// disable the IFs: the "unlatching" must happen no matter what, even if a UI is been opened
|
||||||
if (!terrarumIngame.paused && !terrarumIngame.playerControlDisabled) {
|
|
||||||
// fire world click events; the event is defined as Ingame's (or any others') WorldClick event
|
|
||||||
if (terrarumIngame.uiContainer.map { if ((it?.isOpening == true || it?.isOpened == true) && it.mouseUp) 1 else 0 }.sum() == 0) { // no UI on the mouse, right?
|
|
||||||
|
|
||||||
if (
|
// if (!terrarumIngame.paused && !terrarumIngame.playerControlDisabled) {
|
||||||
terrarumIngame.actorNowPlaying != null &&
|
// fire world click events; the event is defined as Ingame's (or any others') WorldClick event
|
||||||
(button == App.getConfigInt("config_mouseprimary") ||
|
// if (terrarumIngame.uiContainer.map { if ((it?.isOpening == true || it?.isOpened == true) && it.mouseUp) 1 else 0 }.sum() == 0) { // no UI on the mouse, right?
|
||||||
button == App.getConfigInt("config_mousesecondary"))) {
|
|
||||||
|
if (button == App.getConfigInt("config_mouseprimary")) {
|
||||||
terrarumIngame.worldPrimaryClickEnd(terrarumIngame.actorNowPlaying!!, App.UPDATE_RATE)
|
terrarumIngame.worldPrimaryClickEnd(terrarumIngame.actorNowPlaying!!, App.UPDATE_RATE)
|
||||||
}
|
}
|
||||||
if (button == App.getConfigInt("config_mousesecondary")) {
|
if (button == App.getConfigInt("config_mousesecondary")) {
|
||||||
terrarumIngame.worldSecondaryClickEnd(terrarumIngame.actorNowPlaying!!, App.UPDATE_RATE)
|
terrarumIngame.worldSecondaryClickEnd(terrarumIngame.actorNowPlaying!!, App.UPDATE_RATE)
|
||||||
}
|
}
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
// pie menu
|
// pie menu
|
||||||
if (button == App.getConfigInt("control_mouse_quicksel")) {
|
if (button == App.getConfigInt("control_mouse_quicksel")) {
|
||||||
@@ -271,7 +269,7 @@ class IngameController(val terrarumIngame: TerrarumIngame) : InputAdapter() {
|
|||||||
terrarumIngame.uiQuickBar.setAsOpen()
|
terrarumIngame.uiQuickBar.setAsOpen()
|
||||||
}
|
}
|
||||||
|
|
||||||
terrarumIngame.uiContainer.forEach { it?.touchUp(screenX, screenY, pointer, button) } // for MouseControlled UIcanvases
|
terrarumIngame.uiContainer.forEach { if (it?.justOpened == false) it.touchUp(screenX, screenY, pointer, button) } // for MouseControlled UIcanvases
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -289,17 +287,17 @@ class IngameController(val terrarumIngame: TerrarumIngame) : InputAdapter() {
|
|||||||
it.actorValue.set(AVKey.__PLAYER_QUICKSLOTSEL, selection fmod UIQuickslotBar.SLOT_COUNT)
|
it.actorValue.set(AVKey.__PLAYER_QUICKSLOTSEL, selection fmod UIQuickslotBar.SLOT_COUNT)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
terrarumIngame.uiContainer.forEach { it?.scrolled(amountX, amountY) }
|
terrarumIngame.uiContainer.forEach { if (it?.justOpened == false) it.scrolled(amountX, amountY) }
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun tTouchDragged(screenX: Int, screenY: Int, pointer: Int): Boolean {
|
private fun tTouchDragged(screenX: Int, screenY: Int, pointer: Int): Boolean {
|
||||||
terrarumIngame.uiContainer.forEach { it?.touchDragged(screenX, screenY, pointer) }
|
terrarumIngame.uiContainer.forEach { if (it?.justOpened == false) it.touchDragged(screenX, screenY, pointer) }
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun tTouchDown(screenX: Int, screenY: Int, pointer: Int, button: Int): Boolean {
|
private fun tTouchDown(screenX: Int, screenY: Int, pointer: Int, button: Int): Boolean {
|
||||||
terrarumIngame.uiContainer.forEach { it?.touchDown(screenX, screenY, pointer, button) }
|
terrarumIngame.uiContainer.forEach { if (it?.justOpened == false) it.touchDown(screenX, screenY, pointer, button) }
|
||||||
|
|
||||||
// pie menu
|
// pie menu
|
||||||
if (button == App.getConfigInt("control_mouse_quicksel")) {
|
if (button == App.getConfigInt("control_mouse_quicksel")) {
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user