mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-06-06 08:38:30 +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="BuildArtifacts" enabled="true">
|
||||
<artifact name="ModuleComputers" />
|
||||
<artifact name="MusicPlayer" />
|
||||
<artifact name="TerrarumBuild" />
|
||||
</option>
|
||||
<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"
|
||||
|
||||
# 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"
|
||||
"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"
|
||||
"16";"17";"17";"BLOCK_STONE";"0.1252";"0.1252";"0.1252";"0.1252";"48";"2400";"ROCK";"1";"1";"N/A";"0";"4";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"ROCK,NATURAL,OREBEARING,SHALLOWROCK,BRICKROCK"
|
||||
"17";"17";"17";"BLOCK_STONE_QUARRIED";"0.1252";"0.1252";"0.1252";"0.1252";"48";"2400";"ROCK";"1";"1";"N/A";"0";"4";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"ROCK,NATURAL,OREBEARING,SHALLOWROCK,BRICKROCK"
|
||||
"18";"18";"18";"BLOCK_STONE_TILE_WHITE";"0.1252";"0.1252";"0.1252";"0.1252";"48";"2400";"ROCK";"1";"1";"N/A";"0";"4";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.18";"STONE,NORANDTILE"
|
||||
"19";"19";"19";"BLOCK_STONE_BRICKS";"0.1252";"0.1252";"0.1252";"0.1252";"48";"2400";"ROCK";"1";"1";"N/A";"0";"4";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"STONE,NORANDTILE"
|
||||
"20";"20";"20";"BLOCK_STONE_DEEP";"0.1252";"0.1252";"0.1252";"0.1252";"80";"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"
|
||||
|
||||
# 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"
|
||||
|
||||
# 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"
|
||||
"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"
|
||||
"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"
|
||||
"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"
|
||||
"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"
|
||||
"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"
|
||||
"80";"80";"80";"BLOCK_SAND";"0.1252";"0.1252";"0.1252";"0.1252";"12";"1600";"SAND";"1";"0";"0";"0";"4";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"SAND,NATURAL,WARM,SMELTABLE"
|
||||
"81";"81";"81";"BLOCK_SAND_WHITE";"0.1252";"0.1252";"0.1252";"0.1252";"12";"1600";"SAND";"1";"0";"0";"0";"4";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"SAND,NATURAL,WARM,SMELTABLE"
|
||||
"82";"82";"82";"BLOCK_SAND_RED";"0.1252";"0.1252";"0.1252";"0.1252";"12";"1600";"SAND";"1";"0";"0";"0";"4";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"SAND,NATURAL,WARM,SMELTABLE"
|
||||
"83";"83";"83";"BLOCK_SAND_DESERT";"0.1252";"0.1252";"0.1252";"0.1252";"12";"1600";"SAND";"1";"0";"0";"0";"4";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"SAND,NATURAL,WARM,SMELTABLE"
|
||||
"84";"84";"84";"BLOCK_SAND_BLACK";"0.1252";"0.1252";"0.1252";"0.1252";"12";"1600";"SAND";"1";"0";"0";"0";"4";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"SAND,NATURAL,WARM,SMELTABLE"
|
||||
"85";"85";"85";"BLOCK_SAND_GREEN";"0.1252";"0.1252";"0.1252";"0.1252";"12";"1600";"SAND";"1";"0";"0";"0";"4";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"SAND,NATURAL,WARM,SMELTABLE"
|
||||
"96";"96";"96";"BLOCK_GRAVEL";"0.1252";"0.1252";"0.1252";"0.1252";"12";"1700";"GRVL";"1";"0";"0";"0";"4";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"GRAVEL,NATURAL"
|
||||
"97";"97";"97";"BLOCK_GRAVEL_GREY";"0.1252";"0.1252";"0.1252";"0.1252";"12";"1700";"GRVL";"1";"0";"0";"0";"4";"16";"0.0000";"0.0000";"0.0000";"0.0000";"N/A";"N/A";"0.0";"GRAVEL,NATURAL"
|
||||
|
||||
@@ -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"
|
||||
|
||||
# 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"
|
||||
"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"
|
||||
@@ -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"
|
||||
|
||||
# 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"
|
||||
"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"
|
||||
"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"
|
||||
"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"
|
||||
"272";"272";"272";"BLOCK_SCAFFOLDING_NORMAL";"0.0312";"0.0312";"0.0312";"0.0312";"1";"740";"WOOD";"0";"0";"6";"0";"0";"16";"0.0";"0.0";"0.0";"0.0";"N/A";"N/A";"0.0";"PLATFORM,SCAFFOLDING,NORANDTILE,WOODEN"
|
||||
"273";"273";"273";"BLOCK_SCAFFOLDING_EBONY";"0.0312";"0.0312";"0.0312";"0.0312";"1";"1400";"WOOD";"0";"0";"6";"0";"0";"16";"0.0";"0.0";"0.0";"0.0";"N/A";"N/A";"0.0";"PLATFORM,SCAFFOLDING,NORANDTILE,WOODEN"
|
||||
"274";"274";"274";"BLOCK_SCAFFOLDING_BIRCH";"0.0312";"0.0312";"0.0312";"0.0312";"1";"670";"WOOD";"0";"0";"6";"0";"0";"16";"0.0";"0.0";"0.0";"0.0";"N/A";"N/A";"0.0";"PLATFORM,SCAFFOLDING,NORANDTILE,WOODEN"
|
||||
"275";"275";"275";"BLOCK_SCAFFOLDING_ROSEWOOD";"0.0312";"0.0312";"0.0312";"0.0312";"1";"900";"WOOD";"0";"0";"6";"0";"0";"16";"0.0";"0.0";"0.0";"0.0";"N/A";"N/A";"0.0";"PLATFORM,SCAFFOLDING,NORANDTILE,WOODEN"
|
||||
|
||||
# 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"
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 18 and column 2.
|
@@ -10,11 +10,13 @@ GetAV
|
||||
GetFaction
|
||||
GetLocale
|
||||
GetTime
|
||||
HasItem
|
||||
ImportLayerData
|
||||
ImportWorld
|
||||
Inventory
|
||||
KillActor
|
||||
LangTest
|
||||
MakeSign
|
||||
MoneyDisp
|
||||
MusicTest
|
||||
Possess
|
||||
|
||||
|
@@ -1,3 +1,6 @@
|
||||
->Lang:MENU_OPTIONS_GAMEPLAY->h1
|
||||
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 */
|
||||
"workbench": "",
|
||||
"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 */
|
||||
"workbench": "",
|
||||
"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 */
|
||||
"workbench": "",
|
||||
"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 */
|
||||
"workbench": "",
|
||||
"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 */
|
||||
]
|
||||
},
|
||||
"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 */
|
||||
"workbench": "basiccrafting",
|
||||
@@ -59,14 +84,57 @@
|
||||
"item@basegame:6": { /* storage chest */
|
||||
"workbench": "basiccrafting",
|
||||
"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 */
|
||||
"workbench": "basiccrafting",
|
||||
"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 */
|
||||
"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 */
|
||||
"workbench": "",
|
||||
"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 */
|
||||
"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": {
|
||||
"workbench": "basiccrafting",
|
||||
"ingredients": [[1, 6, "$WOOD", 2, "item@basegame:18"]]
|
||||
"ingredients": [[1, 5, "$WOOD", 2, "item@basegame:18"]]
|
||||
},*/
|
||||
"item@basegame:15": { /* wooden mallet */
|
||||
"workbench": "basiccrafting",
|
||||
"ingredients": [[1, 6, "$WOOD", 2, "item@basegame:18"]]
|
||||
"ingredients": [[1, 5, "$WOOD", 2, "item@basegame:18"]]
|
||||
},
|
||||
"item@basegame:23": { /* stone pick */
|
||||
"workbench": "basiccrafting",
|
||||
"ingredients": [[1, 6, "$ROCK", 2, "item@basegame:18"]]
|
||||
"ingredients": [[1, 5, "$ROCK", 2, "item@basegame:18"]]
|
||||
},
|
||||
"item@basegame:24": { /* stone axe */
|
||||
"workbench": "basiccrafting",
|
||||
"ingredients": [[1, 6, "$ROCK", 2, "item@basegame:18"]]
|
||||
"ingredients": [[1, 5, "$ROCK", 2, "item@basegame:18"]]
|
||||
},
|
||||
|
||||
"item@basegame:1": { /* copper pick */
|
||||
"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 */
|
||||
"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 */
|
||||
"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 */
|
||||
"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 */
|
||||
"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 */
|
||||
"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 */
|
||||
"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 */
|
||||
"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 */
|
||||
"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,
|
||||
"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
|
||||
6;net.torvald.terrarum.modulebasegame.gameitems.ItemStorageChest;FIXTURE,STORAGE
|
||||
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
|
||||
10;net.torvald.terrarum.modulebasegame.gameitems.ItemTypewriter;FIXTURE,PRINTING
|
||||
11;net.torvald.terrarum.modulebasegame.gameitems.ItemWallCalendar;FIXTURE
|
||||
@@ -20,7 +20,7 @@ id;classname;tags
|
||||
19;net.torvald.terrarum.modulebasegame.gameitems.AxeCopper;TOOL,AXE
|
||||
20;net.torvald.terrarum.modulebasegame.gameitems.AxeIron;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
|
||||
24;net.torvald.terrarum.modulebasegame.gameitems.AxeStone;TOOL,AXE
|
||||
25;net.torvald.terrarum.modulebasegame.gameitems.ItemClayBall;
|
||||
@@ -32,18 +32,46 @@ id;classname;tags
|
||||
31;net.torvald.terrarum.modulebasegame.gameitems.ItemGunpowder;POWDER,EXPLOSIVE
|
||||
32;net.torvald.terrarum.modulebasegame.gameitems.ItemCherryBomb;EXPLOSIVE,THROWABLE
|
||||
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
|
||||
26;net.torvald.terrarum.modulebasegame.gameitems.IngotSteel;INGOT
|
||||
112;net.torvald.terrarum.modulebasegame.gameitems.IngotCopper;INGOT
|
||||
113;net.torvald.terrarum.modulebasegame.gameitems.IngotIron;INGOT
|
||||
114;net.torvald.terrarum.modulebasegame.gameitems.ItemCoalCoke;COMBUSTIBLE
|
||||
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
|
||||
118;net.torvald.terrarum.modulebasegame.gameitems.IngotSilver;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
|
||||
128;net.torvald.terrarum.modulebasegame.gameitems.OreCopper;SMELTABLE
|
||||
129;net.torvald.terrarum.modulebasegame.gameitems.OreIron;SMELTABLE
|
||||
@@ -68,10 +96,10 @@ id;classname;tags
|
||||
163;net.torvald.terrarum.modulebasegame.gameitems.ItemSeedRosewood;SEEDLING
|
||||
|
||||
# tree logs
|
||||
168;net.torvald.terrarum.modulebasegame.gameitems.ItemLogsOak;COMBUSTIBLE,SMELTABLE
|
||||
169;net.torvald.terrarum.modulebasegame.gameitems.ItemLogsEbony;COMBUSTIBLE,SMELTABLE
|
||||
170;net.torvald.terrarum.modulebasegame.gameitems.ItemLogsBirch;COMBUSTIBLE,SMELTABLE
|
||||
171;net.torvald.terrarum.modulebasegame.gameitems.ItemLogsRosewood;COMBUSTIBLE,SMELTABLE
|
||||
168;net.torvald.terrarum.modulebasegame.gameitems.ItemLogsOak;COMBUSTIBLE,SMELTABLE,LOGS
|
||||
169;net.torvald.terrarum.modulebasegame.gameitems.ItemLogsEbony;COMBUSTIBLE,SMELTABLE,LOGS
|
||||
170;net.torvald.terrarum.modulebasegame.gameitems.ItemLogsBirch;COMBUSTIBLE,SMELTABLE,LOGS
|
||||
171;net.torvald.terrarum.modulebasegame.gameitems.ItemLogsRosewood;COMBUSTIBLE,SMELTABLE,LOGS
|
||||
|
||||
|
||||
256;net.torvald.terrarum.modulebasegame.gameitems.ItemSwingingDoorOak;FIXTURE
|
||||
@@ -94,16 +122,21 @@ id;classname;tags
|
||||
32777;net.torvald.terrarum.modulebasegame.gameitems.MusicDisc09;MUSIC,PHONO
|
||||
|
||||
# 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
|
||||
# preferably autogenerated
|
||||
# 10000h..100FFh : Fluid type 0 (water) x container type 0..255
|
||||
# 10100h..101FFh : Fluid type 1 (lava) x container type 0..255
|
||||
# 10200h..102FFh : Fluid type 2 (crude oil) x container type 0..255
|
||||
# 10300h..103FFh : Fluid type 3 (petroleum) x container type 0..255
|
||||
# 10400h..104FFh : Fluid type 4 (compressed air) x container type 0..255
|
||||
# 10500h..105FFh : Fluid type 5 (steam) x container type 0..255
|
||||
# 100000h..1000FFh : Fluid type 0 (water) x container type 0..255
|
||||
# 100100h..1001FFh : Fluid type 1 (lava) x container type 0..255
|
||||
# 100200h..1002FFh : Fluid type 2 (crude oil) x container type 0..255
|
||||
# 100300h..1003FFh : Fluid type 3 (petroleum) x container type 0..255
|
||||
# 100400h..1004FFh : Fluid type 4 (compressed air) 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_ITEM_FIXTURES": "Fixtures",
|
||||
"CONTEXT_ITEM_MAP": "Map",
|
||||
@@ -13,15 +14,12 @@
|
||||
"MENU_LABEL_RENAME": "Rename",
|
||||
"MENU_LABEL_USE_CODE": "Use Code",
|
||||
"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!",
|
||||
"GAME_ACTION_GRAPPLE": "Grapple",
|
||||
"GAME_ACTION_QUICKSEL": "Quick Select",
|
||||
"GAME_ACTION_SELECT_SLOT": "Select Slot",
|
||||
"GAME_ACTION_TELEPORT": "Teleport",
|
||||
"GAME_CRAFTABLE_ITEMS": "Craftable Items",
|
||||
"GAME_CRAFTABLE_ITEMS": "Recipes",
|
||||
"GAME_CRAFTING": "Crafting",
|
||||
"GAME_INVENTORY_BLOCKS": "Blocks",
|
||||
"GAME_INVENTORY_FAVORITES": "Favorites",
|
||||
|
||||
@@ -6,9 +6,11 @@
|
||||
"TOOLTIP_wire@basegame:8192": "Carries signals",
|
||||
"TOOLTIP_wire@basegame:8193": "Carries signals",
|
||||
"TOOLTIP_wire@basegame:8194": "Carries signals",
|
||||
"TOOLTIP_wire@basegame:8196": "Carries power",
|
||||
"TOOLTIP_wire@basegame:8197": "Carries power",
|
||||
"TOOLTIP_wire@basegame:8198": "Carries information",
|
||||
"TOOLTIP_wire@basegame:8195": "Carries signals",
|
||||
"TOOLTIP_wire@basegame:8196": "Carries signals",
|
||||
"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:2": "Breaks rocks",
|
||||
@@ -16,8 +18,10 @@
|
||||
"TOOLTIP_item@basegame:4": "Breaks down walls",
|
||||
"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:8": "Emits a signal",
|
||||
"TOOLTIP_item@basegame:9": "An electricians’ best friend",
|
||||
"TOOLTIP_item@basegame:37": "“I am sworn to keep your burdens.”", /* skyrim/lydia reference */
|
||||
"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:11": "Tells what day it is",
|
||||
"TOOLTIP_item@basegame:12": "Breaks down walls",
|
||||
@@ -31,6 +35,7 @@
|
||||
"TOOLTIP_item@basegame:20": "Cuts trees",
|
||||
"TOOLTIP_item@basegame:21": "Cuts trees",
|
||||
"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:24": "Cuts trees",
|
||||
"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: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: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: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_CHARCOAL": "Charcoal",
|
||||
"ITEM_CHERRY_BOMB": "Bomb",
|
||||
"ITEM_COAL_COKE": "Coal Coke",
|
||||
"ITEM_COPPER_BULB": "Copper Bulb",
|
||||
"ITEM_COPPER_SIGN": "Copper Sign",
|
||||
"ITEM_DOOR_OAK": "Oak Door",
|
||||
"ITEM_DOOR_EBONY": "Ebony Door",
|
||||
"ITEM_DOOR_BIRCH": "Birch Door",
|
||||
"ITEM_DOOR_ROSEWOOD": "Rosewood Door",
|
||||
"ITEM_ELECTRIC_WORKBENCH": "Electric Workbench",
|
||||
"ITEM_ENGRAVING_WORKBENCH": "Engraving Workbench",
|
||||
"ITEM_FURNACE_AND_ANVIL": "Furnace and Anvil",
|
||||
"ITEM_GEM_RUBY": "Raw Ruby",
|
||||
"ITEM_GEM_EMERALD": "Raw Emerald",
|
||||
@@ -36,11 +41,18 @@
|
||||
"ITEM_INGOT_TIN": "Tin Ingot",
|
||||
"ITEM_INGOT_ZINC": "Zinc Ingot",
|
||||
"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_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_EBONY": "Ebony Logs",
|
||||
"ITEM_LOGS_OAK": "Oak Logs",
|
||||
"ITEM_LOGS_ROSEWOOD": "Rosewood Logs",
|
||||
"ITEM_MULTIMETER": "Multimeter",
|
||||
"ITEM_NITRE": "Nitre",
|
||||
"ITEM_ORE_CASSITERITE": "Tin Ore",
|
||||
"ITEM_ORE_COAL": "Coal",
|
||||
@@ -63,18 +75,25 @@
|
||||
"ITEM_SLEDGEHAMMER_COPPER": "Copper Sledgehammer",
|
||||
"ITEM_SLEDGEHAMMER_IRON": "Iron Sledgehammer",
|
||||
"ITEM_SLEDGEHAMMER_STEEL": "Steel Sledgehammer",
|
||||
"ITEM_SOLDERING_WIRE": "Soldering Wire",
|
||||
"ITEM_SMELTER_SMALL": "Small Smelter",
|
||||
"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_TURNTABLE": "Turntable",
|
||||
"ITEM_TYPEWRITER": "Typewriter",
|
||||
"ITEM_WIRE": "Wire",
|
||||
"ITEM_WIRE_CUTTER": "Wire Cutter",
|
||||
"ITEM_WIRE_ROLLING_MILL": "Wire Rolling Mill",
|
||||
"ITEM_WOOD_STICK": "Stick",
|
||||
"ITEM_WOODEN_MALLET": "Wooden Mallet",
|
||||
"ITEM_WORKBENCH": "Workbench",
|
||||
"ITEM_WORLD_PORTAL": "Teleportation Station",
|
||||
|
||||
"ITEM_WRENCH": "Wrench",
|
||||
/* below are placeholders; please do not translate */
|
||||
"ACTORBLOCK_ALLOW_MOVE_DOWN": "Urist Arôlcustith",
|
||||
"ACTORBLOCK_FULL_COLLISION": "Urist Berdanrifot",
|
||||
"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_ITEM_FIXTURES": "기구",
|
||||
"CONTEXT_ITEM_MAP": "지도",
|
||||
@@ -12,15 +13,12 @@
|
||||
"MENU_LABEL_PREV_SAVES": "이전 세이브",
|
||||
"MENU_LABEL_RENAME": "이름 바꾸기",
|
||||
"MENU_LABEL_USE_CODE": "코드 사용",
|
||||
"MENU_MONITOR_CALI_TITLE": "모니터 확인",
|
||||
"MENU_OPTIONS_SHOW_ORES_TOOLTIP_WHEN_MINING": "채굴 시 광석 툴팁 보이기",
|
||||
"MENU_OPTIONS_MAX_CRAFTING": "한번에 제작할 최대 아이템 수",
|
||||
"MENU_UPDATE_UPDATE_AVAILABLE": "새 업데이트가 있습니다!",
|
||||
"GAME_ACTION_GRAPPLE": "매달리기",
|
||||
"GAME_ACTION_QUICKSEL": "빠른 선택",
|
||||
"GAME_ACTION_SELECT_SLOT": "슬롯 선택",
|
||||
"GAME_ACTION_TELEPORT": "텔레포트하기",
|
||||
"GAME_CRAFTABLE_ITEMS": "제작 가능한 아이템",
|
||||
"GAME_CRAFTABLE_ITEMS": "제작 레시피",
|
||||
"GAME_CRAFTING": "제작",
|
||||
"GAME_INVENTORY_BLOCKS": "블록",
|
||||
"GAME_INVENTORY_FAVORITES": "즐겨찾기",
|
||||
|
||||
@@ -6,9 +6,10 @@
|
||||
"TOOLTIP_wire@basegame:8192": "신호를 전달합니다",
|
||||
"TOOLTIP_wire@basegame:8193": "신호를 전달합니다",
|
||||
"TOOLTIP_wire@basegame:8194": "신호를 전달합니다",
|
||||
"TOOLTIP_wire@basegame:8196": "전력을 전달합니다",
|
||||
"TOOLTIP_wire@basegame:8197": "전력을 전달합니다",
|
||||
"TOOLTIP_wire@basegame:8198": "정보를 전달합니다",
|
||||
"TOOLTIP_wire@basegame:8195": "신호를 전달합니다",
|
||||
"TOOLTIP_wire@basegame:1": "전력을 전달합니다",
|
||||
"TOOLTIP_wire@basegame:2": "전력을 전달합니다",
|
||||
"TOOLTIP_wire@basegame:16": "정보를 전달합니다",
|
||||
|
||||
"TOOLTIP_item@basegame:1": "돌을 부숩니다",
|
||||
"TOOLTIP_item@basegame:2": "돌을 부숩니다",
|
||||
@@ -16,8 +17,10 @@
|
||||
"TOOLTIP_item@basegame:4": "벽을 부숩니다",
|
||||
"TOOLTIP_item@basegame:5": "빛을 더 이쁘게 냅니다",
|
||||
"TOOLTIP_item@basegame:6": "“짐을 맡아두기로 한 몸이니까요.”", /* skyrim/lydia reference */
|
||||
"TOOLTIP_item@basegame:8": "신호를 만들어냅니다",
|
||||
"TOOLTIP_item@basegame:9": "전기공의 친한 친구",
|
||||
"TOOLTIP_item@basegame:37": "“짐을 맡아두기로 한 몸이니까요.”", /* skyrim/lydia reference */
|
||||
"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:11": "오늘이 무슨 날인지 알려줍니다",
|
||||
"TOOLTIP_item@basegame:12": "벽을 부숩니다",
|
||||
@@ -38,8 +41,20 @@
|
||||
"TOOLTIP_item@basegame:27": "모든 대장장이는 초보 시절이 있는 법이죠",
|
||||
"TOOLTIP_item@basegame:28": "음악 자판기입이다 (무료 플레이)",
|
||||
"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: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_CHARCOAL": "목탄",
|
||||
"ITEM_CHERRY_BOMB": "폭탄",
|
||||
"ITEM_COAL_COKE": "코크스",
|
||||
"ITEM_COPPER_BULB": "구리 전구",
|
||||
"ITEM_COPPER_SIGN": "구리 간판",
|
||||
"ITEM_DOOR_OAK": "나무 문",
|
||||
"ITEM_DOOR_EBONY": "흑단 문",
|
||||
"ITEM_DOOR_BIRCH": "백단 문",
|
||||
"ITEM_DOOR_ROSEWOOD": "자단 문",
|
||||
"ITEM_ELECTRIC_WORKBENCH": "전기 작업대",
|
||||
"ITEM_ENGRAVING_WORKBENCH": "조각 작업대",
|
||||
"ITEM_FURNACE_AND_ANVIL": "화로와 모루",
|
||||
"ITEM_GEM_RUBY": "홍옥석",
|
||||
"ITEM_GEM_EMERALD": "취옥석",
|
||||
@@ -31,16 +36,23 @@
|
||||
"ITEM_INGOT_ROSEGOLD": "분홍금괴",
|
||||
"ITEM_INGOT_SILVER": "은괴",
|
||||
"ITEM_INGOT_SILVER_BILLON": "은동괴",
|
||||
"ITEM_INGOT_SOLDER": "땜납",
|
||||
"ITEM_INGOT_SOLDER": "막대납",
|
||||
"ITEM_INGOT_STEEL": "강철괴",
|
||||
"ITEM_INGOT_TIN": "주석괴",
|
||||
"ITEM_INGOT_ZINC": "아연괴",
|
||||
"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_EBONY": "흑단 통나무",
|
||||
"ITEM_LOGS_OAK": "통나무",
|
||||
"ITEM_LOGS_ROSEWOOD": "자단 통나무",
|
||||
"ITEM_MULTIMETER": "멀티미터",
|
||||
"ITEM_NITRE": "초석",
|
||||
"ITEM_ORE_CASSITERITE": "주석석",
|
||||
"ITEM_ORE_COAL": "석탄",
|
||||
@@ -63,15 +75,22 @@
|
||||
"ITEM_SLEDGEHAMMER_COPPER": "구리 해머",
|
||||
"ITEM_SLEDGEHAMMER_IRON": "철 해머",
|
||||
"ITEM_SLEDGEHAMMER_STEEL": "강철 해머",
|
||||
"ITEM_SOLDERING_WIRE": "실납",
|
||||
"ITEM_SMELTER_SMALL": "소형 고로",
|
||||
"ITEM_STORAGE_CHEST": "보관상자",
|
||||
"ITEM_TABLE_OAK": "나무 탁자",
|
||||
"ITEM_TABLE_EBONY": "흑단 탁자",
|
||||
"ITEM_TABLE_BIRCH": "백단 탁자",
|
||||
"ITEM_TABLE_ROSEWOOD": "자단 탁자",
|
||||
"ITEM_TIKI_TORCH": "티키 토치",
|
||||
"ITEM_TURNTABLE": "전축",
|
||||
"ITEM_TYPEWRITER": "타자기",
|
||||
"ITEM_WIRE": "전선",
|
||||
"ITEM_WIRE_CUTTER": "전선 절단기",
|
||||
"ITEM_WIRE_ROLLING_MILL": "철사 압연기",
|
||||
"ITEM_WOOD_STICK": "막대기",
|
||||
"ITEM_WOODEN_MALLET": "나무 망치",
|
||||
"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
|
||||
|
||||
# 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/)
|
||||
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";
|
||||
# Due to security reasons, loading an arbitrary JAR is not allowed.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
"id";"freq";"power";"scale";"ratio";"tiling";"comment";"blocktagnongrata"
|
||||
"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";""
|
||||
"4";"0.019";"0.011";"0.511";"1.0";"a16x16";"zinc (sphalerite)";""
|
||||
"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
|
||||
8192;8192;WIRE_RED;signal;digital_bit;3;N/A;N/A;net.torvald.terrarum.modulebasegame.gameitems.WirePieceSignalWire;basegame.items,0,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
|
||||
8194;8194;WIRE_BLUE;signal;digital_bit;3;N/A;N/A;net.torvald.terrarum.modulebasegame.gameitems.WirePieceSignalWire;basegame.items,2,4;1
|
||||
#8195;8195;WIRE_BUNDLE;signal;digital_3bits;3;N/A;N/A;net.torvald.terrarum.modulebasegame.gameitems.WirePieceSignalWire;basegame.items,0,0;1
|
||||
8196;8196;WIRE_POWER_LOW;power;power_low;3;N/A;N/A;net.torvald.terrarum.modulebasegame.gameitems.WirePieceSignalWire;basegame.items,3,4;1
|
||||
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
|
||||
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;"SIGNALWIRE"
|
||||
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;"SIGNALWIRE"
|
||||
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_PURPLE;signal;digital_bit;3;N/A;N/A;net.torvald.terrarum.modulebasegame.gameitems.WirePieceSignalWire;basegame.items,4,4;1;"SIGNALWIRE"
|
||||
|
||||
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)
|
||||
|
||||
|
@@ -3,8 +3,8 @@ description=Simple music player widget
|
||||
author=CuriousTo\uA75Bvald
|
||||
package=net.torvald.terrarum.musicplayer
|
||||
entrypoint=net.torvald.terrarum.musicplayer.EntryPoint
|
||||
releasedate=2024-02-19
|
||||
version=1.0.0
|
||||
releasedate=2024-03-28
|
||||
version=1.0.2
|
||||
jar=MusicPlayer.jar
|
||||
jarhash=c8896ce5b2aa79057e1324a701c1c5bd4099a8a651f044a120ad700cedfbb16e
|
||||
dependency=basegame 0.4.0
|
||||
jarhash=8ab074e9dc6312ea4d3f6f500e362afb65001d3770f4f8da1d9f2e47cb294de0
|
||||
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 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 + ")"));
|
||||
return TerrarumAppConfiguration.INSTANCE.getVERSION_STRING();
|
||||
}
|
||||
|
||||
public static final String getVERSION_STRING_WITHOUT_SNAPSHOT() {
|
||||
return String.format("%d.%d.%d", VERSION_RAW >>> 48, (VERSION_RAW & 0xffff000000L) >>> 24, VERSION_RAW & 0xffffffL) +
|
||||
(VERSION_TAG.isBlank() ? "" : "-"+VERSION_TAG);
|
||||
return TerrarumAppConfiguration.INSTANCE.getVERSION_STRING_WITHOUT_SNAPSHOT();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -442,12 +437,12 @@ public class App implements ApplicationListener {
|
||||
|
||||
if (useFullscreen) {
|
||||
// auto resize for fullscreen
|
||||
var disp = Lwjgl3ApplicationConfiguration.getDisplayMode();
|
||||
var disp = Lwjgl3ApplicationConfiguration.getDisplayMode(Lwjgl3ApplicationConfiguration.getPrimaryMonitor());
|
||||
var newWidth = ((int)(disp.width / magn)) & 0x7FFFFFFE;
|
||||
var newHeight = ((int)(disp.height / magn)) & 0x7FFFFFFE;
|
||||
scr.setDimension(newWidth, newHeight, magn);
|
||||
|
||||
appConfig.setFullscreenMode(Lwjgl3ApplicationConfiguration.getDisplayMode());
|
||||
appConfig.setFullscreenMode(disp);
|
||||
|
||||
}
|
||||
else
|
||||
@@ -1731,7 +1726,7 @@ public class App implements ApplicationListener {
|
||||
return DefaultConfig.INSTANCE.getHashMap();
|
||||
}
|
||||
|
||||
private static Object getConfigMaster(String key1) {
|
||||
public static Object getConfigMaster(String key1) {
|
||||
String key = key1.toLowerCase();
|
||||
|
||||
Object config;
|
||||
|
||||
@@ -282,7 +282,6 @@ $BULLET Music:
|
||||
- music/discs/lucid_dream.ogg
|
||||
- music/discs/railway.ogg
|
||||
- music/discs/welded.ogg
|
||||
|
||||
℗ 2021, 2022, 2023, 2024 Orstphone
|
||||
Check out the original tracks on:
|
||||
Apple Music: <https://music.apple.com/kr/artist/orstphone/1587723053>
|
||||
@@ -300,7 +299,6 @@ $BULLET Foleys:
|
||||
- ambient/season/diurnal_winter.*.ogg
|
||||
- ambient/season/matutinal.*.ogg
|
||||
- ambient/season/nocturnal.*.ogg
|
||||
|
||||
℗ 2011, 2013, 2015, 2020, 2021 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/door/wooden_open.*.ogg
|
||||
- effects/door/wooden_close.*.ogg
|
||||
|
||||
℗ 2020, 2021, 2022 Nox Sound
|
||||
Sound from <https://freesound.org/people/Nox_Sound>
|
||||
|
||||
- effects/static/phono_pops.ogg
|
||||
|
||||
℗ 2011 Veezay
|
||||
Sound from <https://freesound.org/people/veezay>
|
||||
|
||||
- effects/static/tape_hiss.ogg
|
||||
|
||||
℗ 2017 Stephen Holdaway
|
||||
Sound from <https://freesound.org/people/stecman>
|
||||
|
||||
- effects/static/film_pops_lowpass.ogg
|
||||
|
||||
℗ 2015 Joe DeShon
|
||||
Sound from <https://freesound.org/people/joedeshon>
|
||||
|
||||
- effects/static/bonfire.ogg
|
||||
|
||||
℗ 2019 DrinkingWindGames
|
||||
Sound from <https://freesound.org/people/DrinkingWindGames>
|
||||
|
||||
- effects/explosion/bang_bomb.ogg
|
||||
|
||||
℗ 2019 Richwise
|
||||
Sound from <https://freesound.org/people/richwise>
|
||||
|
||||
- effects/explosion/fuse.ogg
|
||||
- effects/explosion/fuse_continue.ogg
|
||||
|
||||
℗ 2012, 2015 j1987 and 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:
|
||||
|
||||
- convolution/EchoThief - *.bin
|
||||
|
||||
EchoThief Impulse Response Library
|
||||
℗ 2013-2023 Chris Warren <cwarren@sdsu.edu>
|
||||
|
||||
- convolution/Soundwoofer - *.bin
|
||||
|
||||
Soundwoofer Free Impulse Response Library
|
||||
℗ 2018 Soundwoofer Team
|
||||
<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 playerDisk: VirtualDisk; internal set
|
||||
@@ -186,7 +187,6 @@ open class IngameInstance(val batch: FlippingSpriteBatch, val isMultiplayer: Boo
|
||||
|
||||
blockMarkingActor.let {
|
||||
it.unsetGhost()
|
||||
it.setGhostColourNone()
|
||||
}
|
||||
|
||||
gameInitialised = true
|
||||
@@ -231,7 +231,7 @@ open class IngameInstance(val batch: FlippingSpriteBatch, val isMultiplayer: Boo
|
||||
actorContainerInactive.forEach { it.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) {
|
||||
|
||||
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> {
|
||||
val outList = ArrayList<ActorWithBody>()
|
||||
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) {}
|
||||
return outList
|
||||
|
||||
@@ -14,6 +14,7 @@ import net.torvald.terrarum.blockproperties.OreCodex
|
||||
import net.torvald.terrarum.blockproperties.WireCodex
|
||||
import net.torvald.terrarum.gameactors.ActorWithBody
|
||||
import net.torvald.terrarum.gamecontroller.IME
|
||||
import net.torvald.terrarum.gameitems.FixtureInteractionBlocked
|
||||
import net.torvald.terrarum.gameitems.GameItem
|
||||
import net.torvald.terrarum.gameitems.ItemID
|
||||
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(
|
||||
if (isWall) "wall@"+tile.id else tile.id
|
||||
) {
|
||||
override var baseMass: Double = tile.density / 100.0
|
||||
), FixtureInteractionBlocked {
|
||||
override var baseMass: Double = (tile.density / 100.0) * (if (tile.isPlatform) 0.5 else 1.0)
|
||||
override var baseToolSize: Double? = null
|
||||
override var inventoryCategory = if (isWall) Category.WALL else Category.BLOCK
|
||||
override var canBeDynamic = false
|
||||
@@ -842,11 +847,16 @@ object ModMgr {
|
||||
|
||||
object GameCraftingRecipeLoader {
|
||||
const val recipePath = "crafting/"
|
||||
const val smeltingPath = "smelting/"
|
||||
|
||||
@JvmStatic operator fun invoke(module: String) {
|
||||
getFile(module, recipePath).listFiles { it: File -> it.name.lowercase().endsWith(".json") }?.forEach { jsonFile ->
|
||||
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 y: Double = 0.0
|
||||
|
||||
constructor(other: Point2d) : this(other.x, other.y)
|
||||
|
||||
constructor(x: Double, y: Double) : this() {
|
||||
this.x = x
|
||||
this.y = y
|
||||
|
||||
@@ -12,13 +12,13 @@ object ReferencingRanges {
|
||||
val ITEMS_DYNAMIC = 0x10_0000..0x0FFF_FFFF // 267 386 880 pseudo-items
|
||||
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.
|
||||
// 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.
|
||||
val ACTORS_WIRES = 0x7FFF_C000..0x7FFF_EFFF // Rendered front--wires
|
||||
val ACTORS_WIRES_HELPER = 0x7FFF_F000..0x7FFF_FEFF // Rendered overlay--wiring port icons and logic gates
|
||||
val ACTORS_WIRE_PORTS = 0x7FFF_8000..0x7FFF_BEFF // Rendered front--wires
|
||||
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!
|
||||
|
||||
|
||||
@@ -477,7 +477,8 @@ fun blendMul(batch: SpriteBatch) {
|
||||
|
||||
fun blendAlphaMask(batch: SpriteBatch) {
|
||||
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.serialise.toUint
|
||||
import java.net.URL
|
||||
import java.time.LocalDate
|
||||
import java.time.format.DateTimeFormatter
|
||||
import java.util.*
|
||||
@@ -48,6 +49,8 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
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
|
||||
*
|
||||
*/
|
||||
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.1: 2278
|
||||
// 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.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 = ForcedSnapshot("24w07d") // for snapshot release
|
||||
@@ -79,6 +99,70 @@ basegame
|
||||
|
||||
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 //
|
||||
// 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 currentResStr = "${App.scr.width}x${App.scr.height}"
|
||||
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"
|
||||
|
||||
/**
|
||||
|
||||
@@ -123,14 +123,22 @@ class AudioMixer : Disposable {
|
||||
* Return oldest dynamic track, even if the track is currently playing
|
||||
*/
|
||||
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
|
||||
*/
|
||||
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
|
||||
@@ -144,6 +152,10 @@ class AudioMixer : Disposable {
|
||||
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 {
|
||||
// serial precessing
|
||||
while (processing) {
|
||||
@@ -168,6 +180,8 @@ class AudioMixer : Disposable {
|
||||
while (processing && !masterTrack.pcmQueue.isEmpty) {
|
||||
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...
|
||||
|
||||
@@ -147,7 +147,7 @@ class AudioProcessBuf(val inputSamplingRate: Int, val audioReadFun: (ByteArray)
|
||||
private val readBuf = ByteArray(fetchSize * 4)
|
||||
|
||||
init {
|
||||
printdbg(this, "App.audioMixerBufferSize=${App.audioBufferSize}")
|
||||
// printdbg(this, "App.audioMixerBufferSize=${App.audioBufferSize}")
|
||||
}
|
||||
|
||||
private fun shift(array: FloatArray, size: Int) {
|
||||
|
||||
@@ -103,6 +103,8 @@ class MixerTrackProcessor(bufferSize: Int, val rate: Int, val track: TerrarumAud
|
||||
return newRead
|
||||
}
|
||||
|
||||
var bufEmpty = true; private set
|
||||
|
||||
override fun run() {
|
||||
// while (running) { // 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 samplesR1: FloatArray
|
||||
|
||||
var bufEmpty = false
|
||||
bufEmpty = false
|
||||
|
||||
// get samples and apply the fader
|
||||
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 {
|
||||
init {
|
||||
|
||||
@@ -65,7 +65,7 @@ class TerrarumAudioMixerTrack(
|
||||
|
||||
internal val streamPlaying = AtomicBoolean(false)
|
||||
var playStartedTime = 0L; internal set
|
||||
|
||||
var checkedOutTime = 0L; internal set
|
||||
|
||||
fun copyStatusTo(other: TerrarumAudioMixerTrack) {
|
||||
other.pullNextTrack = this.pullNextTrack
|
||||
@@ -162,6 +162,9 @@ class TerrarumAudioMixerTrack(
|
||||
override fun equals(other: Any?) = this.hash == (other as TerrarumAudioMixerTrack).hash
|
||||
|
||||
fun stop() {
|
||||
printdbg("TerrarumAudioMixerTrack $name", "Stop music (mixertrack=${this.name}, musictrack=$currentTrack)")
|
||||
// printStackTrace("TerrarumAudioMixerTrack $name")
|
||||
|
||||
currentTrack?.reset()
|
||||
|
||||
streamPlaying.set(false)
|
||||
|
||||
@@ -53,7 +53,7 @@ class OreCodex {
|
||||
private fun setProp(modname: String, key: Int, record: CSVRecord) {
|
||||
val prop = OreProp()
|
||||
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" }
|
||||
|
||||
oreProps[prop.id] = prop
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
package net.torvald.terrarum.blockproperties
|
||||
|
||||
import com.badlogic.gdx.files.FileHandle
|
||||
import net.torvald.terrarum.*
|
||||
import net.torvald.terrarum.App.printdbg
|
||||
import net.torvald.terrarum.TerrarumAppConfiguration.TILE_SIZE
|
||||
import net.torvald.terrarum.gameitems.GameItem
|
||||
import net.torvald.terrarum.gameitems.ItemID
|
||||
import net.torvald.terrarum.modulebasegame.gameactors.WireEmissionType
|
||||
import net.torvald.terrarum.utils.CSVFetcher
|
||||
import net.torvald.terrarumsansbitmap.gdx.TextureRegionPack
|
||||
import org.apache.commons.csv.CSVRecord
|
||||
@@ -17,9 +19,12 @@ import java.io.IOException
|
||||
class WireCodex {
|
||||
|
||||
@Transient val wireProps = HashMap<ItemID, WireProp>()
|
||||
|
||||
@Transient private val nullProp = WireProp()
|
||||
|
||||
@Transient val wirePorts = HashMap<WireEmissionType, Triple<TextureRegionPack, Int, Int>>()
|
||||
|
||||
@Transient val wireDecays = HashMap<ItemID, Double>()
|
||||
|
||||
fun clear() {
|
||||
wireProps.clear()
|
||||
}
|
||||
@@ -39,15 +44,15 @@ class WireCodex {
|
||||
* @param module name of the module
|
||||
* @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")
|
||||
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() }
|
||||
}
|
||||
|
||||
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")
|
||||
|
||||
val csvParser = org.apache.commons.csv.CSVParser.parse(
|
||||
@@ -57,10 +62,10 @@ class WireCodex {
|
||||
val csvRecordList = csvParser.records
|
||||
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 {
|
||||
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)
|
||||
/*return*/t
|
||||
}
|
||||
|
||||
wireProps[id]?.let(blockRegisterHook)
|
||||
}
|
||||
|
||||
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
|
||||
@@ -134,6 +198,7 @@ class WireCodex {
|
||||
prop.inputType = record.get("inputtype") ?: prop.accepts
|
||||
prop.outputType = record.get("outputtype") ?: prop.accepts
|
||||
prop.canBranch = record.boolVal("branching")
|
||||
prop.tags = record.get("tags").split(',').map { it.trim().toUpperCase() }.toHashSet()
|
||||
|
||||
wireProps[prop.id] = prop
|
||||
|
||||
@@ -155,4 +220,8 @@ class WireCodex {
|
||||
fun getAllWiresThatAccepts(accept: String): List<Pair<ItemID, WireProp>> {
|
||||
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
|
||||
*/
|
||||
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)
|
||||
*
|
||||
* Example passwords would be:
|
||||
* aryll -> beedle -> ciela -> daruk -> ... -> linebeck -> mido -> navi -> ...
|
||||
* aryll -> beedle -> ciela -> daruk -> epona -> ... -> linebeck -> mido -> navi -> ...
|
||||
*
|
||||
* Notes:
|
||||
* 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("hash: $hashedPwd")
|
||||
|
||||
if ("c40232ae7b8020da3ab1449a015e7cc23f249a790856b63b1b69c6a5de019fed".equals(hashedPwd, ignoreCase = true)) {
|
||||
if ("4a26c5cd64195c4a52d2e3770e56c1d0c65861d2a03b47f8ba5d25ca033b9c42".equals(hashedPwd, ignoreCase = true)) {
|
||||
// beedle
|
||||
val msg = if (a) "Locked" else "Authenticated"
|
||||
Echo(msg)
|
||||
|
||||
@@ -122,6 +122,8 @@ object AVKey {
|
||||
|
||||
const val __PLAYER_QUICKSLOTSEL = "__quickslotselection"
|
||||
|
||||
const val __PLAYER_WIRECUTTERSEL = "__wirecutterselection"
|
||||
|
||||
/** Double
|
||||
* 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
|
||||
|
||||
@@ -3,6 +3,7 @@ package net.torvald.terrarum.gameactors
|
||||
import net.torvald.random.HQRNG
|
||||
import net.torvald.terrarum.App
|
||||
import net.torvald.terrarum.App.printdbg
|
||||
import net.torvald.terrarum.App.printdbgerr
|
||||
import net.torvald.terrarum.INGAME
|
||||
import net.torvald.terrarum.Terrarum
|
||||
import net.torvald.terrarum.audio.MusicContainer
|
||||
@@ -50,6 +51,7 @@ abstract class Actor : Comparable<Actor>, Runnable {
|
||||
|
||||
|
||||
enum class RenderOrder {
|
||||
FAR_BEHIND, // wires
|
||||
BEHIND, // tapestries, some particles (obstructed by terrain)
|
||||
MIDDLE, // actors
|
||||
MIDTOP, // bullets, thrown items
|
||||
@@ -160,6 +162,10 @@ abstract class Actor : Comparable<Actor>, Runnable {
|
||||
musicTracks[music] = track
|
||||
musicTracks1.add(track.name)
|
||||
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.maxVolumeFun = { volume }
|
||||
it.volume = volume
|
||||
doSomethingWithTrack(it)
|
||||
// it.play()
|
||||
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.IngamePlayer
|
||||
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.worlddrawer.CreateTileAtlas
|
||||
import net.torvald.terrarum.worlddrawer.WorldCamera
|
||||
@@ -97,6 +98,8 @@ open class ActorWithBody : Actor {
|
||||
val mouseUp: Boolean
|
||||
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
|
||||
protected set
|
||||
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: Vector2) = setPosition(pos.x, pos.y)
|
||||
|
||||
fun setPositionFromCentrePoint(pos: Vector2) = setPosition(pos.x, pos.y + (hitbox.height) / 2)
|
||||
|
||||
/**
|
||||
* ONLY FOR INITIAL SETUP
|
||||
@@ -669,11 +672,15 @@ open class ActorWithBody : Actor {
|
||||
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 (!mouseUp && INGAME.getTooltipMessage() == this.tooltipText) INGAME.setTooltipMessage(null)
|
||||
if (tooltipText == null || !mouseUp || flagDespawn) {
|
||||
tooltipShowing[tooltipHash] = false
|
||||
}
|
||||
|
||||
// isStationary = (hitbox - oldHitbox).magnitudeSquared < PHYS_EPSILON_VELO
|
||||
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")
|
||||
}
|
||||
/* 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
|
||||
debug1("translate x by $t")
|
||||
}
|
||||
@@ -972,7 +979,8 @@ open class ActorWithBody : Actor {
|
||||
debug1("offendingTileWorldY=$offendingTileWorldY, offendingHitboxPointY=$offendingHitboxPointY")
|
||||
|
||||
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()
|
||||
)
|
||||
|
||||
@@ -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?) {
|
||||
// do nothing
|
||||
}
|
||||
@@ -1922,6 +1947,7 @@ open class ActorWithBody : Actor {
|
||||
|
||||
internal open fun flagDespawn() {
|
||||
flagDespawn = true
|
||||
tooltipShowing.remove(tooltipHash)
|
||||
}
|
||||
|
||||
open fun getSpriteHead(): TextureRegion? {
|
||||
@@ -2245,6 +2271,7 @@ open class ActorWithBody : Actor {
|
||||
App.disposables.add(sprite)
|
||||
App.disposables.add(spriteGlow)
|
||||
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 {
|
||||
|
||||
enum class MarkerMode {
|
||||
FIXTURE_GHOST, BLOCK_MARKER
|
||||
FIXTURE_GHOST, BLOCK_MARKER, HIDDEN
|
||||
}
|
||||
|
||||
private val defaultSize = 16.0
|
||||
@@ -45,12 +45,14 @@ class BlockMarkerActor : ActorWithBody(Actor.RenderOrder.OVERLAY, physProp = Phy
|
||||
|
||||
|
||||
init {
|
||||
this.isVisible = false
|
||||
this.isVisible = true
|
||||
renderOrder = Actor.RenderOrder.OVERLAY // for some reason the constructor didn't work
|
||||
}
|
||||
|
||||
|
||||
override fun drawBody(frameDelta: Float, batch: SpriteBatch) {
|
||||
this.isVisible = true
|
||||
|
||||
if (isVisible) {
|
||||
if (markerMode == MarkerMode.FIXTURE_GHOST) {
|
||||
if (INGAME.actorNowPlaying != null) {
|
||||
@@ -114,6 +116,16 @@ class BlockMarkerActor : ActorWithBody(Actor.RenderOrder.OVERLAY, physProp = Phy
|
||||
ghost = null
|
||||
setGhostColourNone()
|
||||
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 }
|
||||
|
||||
@@ -1,26 +1,28 @@
|
||||
package net.torvald.terrarum.gameactors
|
||||
|
||||
import com.badlogic.gdx.graphics.Color
|
||||
import com.badlogic.gdx.graphics.g2d.SpriteBatch
|
||||
import net.torvald.spriteanimation.SheetSpriteAnimation
|
||||
import net.torvald.terrarum.*
|
||||
import net.torvald.terrarum.App.printdbg
|
||||
import net.torvald.terrarum.TerrarumAppConfiguration.TILE_SIZE
|
||||
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.
|
||||
*/
|
||||
class WireActor : ActorWithBody, NoSerialise {
|
||||
|
||||
companion object {
|
||||
val WIRE_NEARBY = arrayOf(
|
||||
(+1 to 0), // tileR
|
||||
(0 to +1), // tileB
|
||||
(-1 to 0), // tileL
|
||||
(0 to -1) // tileT
|
||||
)
|
||||
}
|
||||
class WireActor : ActorWithBody, NoSerialise, InternalActor {
|
||||
|
||||
private constructor()
|
||||
|
||||
@@ -34,7 +36,6 @@ class WireActor : ActorWithBody, NoSerialise {
|
||||
private var worldX = 0
|
||||
private var worldY = 0
|
||||
|
||||
|
||||
/**
|
||||
* @param itemID must start with "wire@"
|
||||
*/
|
||||
@@ -60,34 +61,99 @@ class WireActor : ActorWithBody, NoSerialise {
|
||||
(sprite as SheetSpriteAnimation).currentFrame = cnx
|
||||
}
|
||||
|
||||
private fun getNearbyTilesPos(x: Int, y: Int): Array<Point2i> {
|
||||
return arrayOf(
|
||||
Point2i(x + 1, y),
|
||||
Point2i(x, y + 1),
|
||||
Point2i(x - 1, y),
|
||||
Point2i(x, y - 1)
|
||||
)
|
||||
override fun updateImpl(delta: Float) {
|
||||
}
|
||||
|
||||
private fun essfun0(x: Double) = -cos(Math.PI * x) / 2.0 + 0.5
|
||||
private fun essfun(x: Double) = essfun0(x)
|
||||
|
||||
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 drawBody(frameDelta: Float, batch: SpriteBatch) {
|
||||
if (isVisible && sprite != null) {
|
||||
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()
|
||||
}
|
||||
|
||||
if (isVisible && sprite != null && (Terrarum.ingame!! as TerrarumIngame).selectedWireRenderClass.isNotBlank()) {
|
||||
BlendMode.resolve(drawMode, 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
|
||||
if (keycode == Input.Keys.GRAVE) {
|
||||
@@ -233,7 +233,7 @@ class IngameController(val terrarumIngame: TerrarumIngame) : InputAdapter() {
|
||||
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
|
||||
if (keycode == Input.Keys.F12) f12Down = false
|
||||
@@ -243,27 +243,25 @@ class IngameController(val terrarumIngame: TerrarumIngame) : InputAdapter() {
|
||||
}
|
||||
|
||||
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
|
||||
}
|
||||
|
||||
private fun tTouchUp(screenX: Int, screenY: Int, pointer: Int, button: Int): Boolean {
|
||||
// don't separate Player from this! Physics will break, esp. airborne manoeuvre
|
||||
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?
|
||||
// disable the IFs: the "unlatching" must happen no matter what, even if a UI is been opened
|
||||
|
||||
if (
|
||||
terrarumIngame.actorNowPlaying != null &&
|
||||
(button == App.getConfigInt("config_mouseprimary") ||
|
||||
button == App.getConfigInt("config_mousesecondary"))) {
|
||||
// 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 (button == App.getConfigInt("config_mouseprimary")) {
|
||||
terrarumIngame.worldPrimaryClickEnd(terrarumIngame.actorNowPlaying!!, App.UPDATE_RATE)
|
||||
}
|
||||
if (button == App.getConfigInt("config_mousesecondary")) {
|
||||
terrarumIngame.worldSecondaryClickEnd(terrarumIngame.actorNowPlaying!!, App.UPDATE_RATE)
|
||||
}
|
||||
}
|
||||
}
|
||||
// }
|
||||
// }
|
||||
|
||||
// pie menu
|
||||
if (button == App.getConfigInt("control_mouse_quicksel")) {
|
||||
@@ -271,7 +269,7 @@ class IngameController(val terrarumIngame: TerrarumIngame) : InputAdapter() {
|
||||
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
|
||||
}
|
||||
|
||||
@@ -289,17 +287,17 @@ class IngameController(val terrarumIngame: TerrarumIngame) : InputAdapter() {
|
||||
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
|
||||
}
|
||||
|
||||
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
|
||||
}
|
||||
|
||||
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
|
||||
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