├── .gitattributes
├── .github
├── ISSUE_TEMPLATE
│ ├── bug_report.md
│ └── feature_request.md
└── workflows
│ └── stale.yml
├── .gitignore
├── README.md
├── configs
└── autoload.json
├── docker-compose-gog.yml
├── docker-compose-steam.yml
└── docker
├── Dockerfile-gog
├── Dockerfile-steam
├── docker-entrypoint-gog.sh
├── docker-entrypoint-steam.sh
├── game_data
└── .gitignore
├── mods
├── Always On Server
│ ├── Always On Server.dll
│ ├── config.json.template
│ └── manifest.json
├── AutoLoadGame
│ ├── AutoLoadGame.dll
│ ├── AutoLoadGame.pdb
│ ├── config.json.template
│ └── manifest.json
├── ChatCommands
│ ├── ChatCommands.dll
│ ├── ChatCommands.pdb
│ └── manifest.json
├── Crops Anytime Anywhere
│ ├── CropsAnytimeAnywhere.dll
│ ├── assets
│ │ └── data.json
│ ├── config.json.template
│ └── manifest.json
├── FriendsForever
│ ├── FriendsForever.dll
│ ├── FriendsForever.pdb
│ ├── config.json.template
│ └── manifest.json
├── NoFenceDecay
│ ├── NoFenceDecay.dll
│ ├── NoFenceDecay.pdb
│ └── manifest.json
├── NonDestructiveNPCs
│ ├── NonDestructiveNPCs.dll
│ ├── NonDestructiveNPCs.pdb
│ └── manifest.json
├── TimeSpeed
│ ├── TimeSpeed.dll
│ ├── config.json.template
│ ├── i18n
│ │ ├── de.json
│ │ ├── default.json
│ │ ├── es.json
│ │ ├── fr.json
│ │ ├── it.json
│ │ ├── ko.json
│ │ ├── pt.json
│ │ ├── ru.json
│ │ └── zh.json
│ └── manifest.json
└── UnlimitedPlayers
│ ├── UnlimitedPlayers.dll
│ ├── config.json.template
│ └── manifest.json
├── run
├── scripts
├── configure-remotecontrol-mod.sh
└── tail-smapi-log.sh
└── start.sh
/.gitattributes:
--------------------------------------------------------------------------------
1 | * text=auto
2 | Dockerfile text eol=lf
3 | *.sh text eol=lf
4 | *.conf text eol=lf
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/bug_report.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Bug report
3 | about: Create a report to help us improve
4 | title: "[BUG]: "
5 | labels: bug
6 | assignees: norimicry
7 |
8 | ---
9 |
10 | **Failure to answer these questions may result in your issue being dismissed as proper assistance may not be able to be provided.**
11 |
12 | **Describe the bug**
13 | A clear and concise description of what the bug is.
14 |
15 | **To Reproduce**
16 | Steps to reproduce the behavior:
17 | 1. Go to '...'
18 | 2. Click on '....'
19 | 3. Scroll down to '....'
20 | 4. See error
21 |
22 | **Expected behavior**
23 | A clear and concise description of what you expected to happen.
24 |
25 | **Screenshots**
26 | If applicable, add screenshots to help explain your problem.
27 |
28 | **Logs**
29 | If applicable, add logs provided by the application [formatted accordingly](https://docs.github.com/en/get-started/writing-on-github/working-with-advanced-formatting/creating-and-highlighting-code-blocks).
30 |
31 | **Desktop (please complete the following information):**
32 | - OS: [e.g. iOS]
33 |
34 | **Additional context**
35 | Add any other context about the problem here.
36 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature_request.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Feature request
3 | about: Suggest an idea for this project
4 | title: "[REQUEST]:"
5 | labels: enhancement
6 | assignees: norimicry
7 |
8 | ---
9 |
10 | **Is your feature request related to a problem? Please describe.**
11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
12 |
13 | **Describe the solution you'd like**
14 | A clear and concise description of what you want to happen.
15 |
16 | **Describe alternatives you've considered**
17 | A clear and concise description of any alternative solutions or features you've considered.
18 |
19 | **Additional context**
20 | Add any other context or screenshots about the feature request here.
21 |
--------------------------------------------------------------------------------
/.github/workflows/stale.yml:
--------------------------------------------------------------------------------
1 | # This workflow warns and then closes issues and PRs that have had no activity for a specified amount of time.
2 | #
3 | # You can adjust the behavior by modifying this file.
4 | # For more information, see:
5 | # https://github.com/actions/stale
6 | name: 'Close stale issues and PR'
7 | on:
8 | schedule:
9 | - cron: '30 1 * * *'
10 |
11 | jobs:
12 | stale:
13 | runs-on: ubuntu-latest
14 | steps:
15 | - uses: actions/stale@v9
16 | with:
17 | stale-issue-message: 'This issue is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 5 days.'
18 | stale-pr-message: 'This PR is stale because it has been open 45 days with no activity. Remove stale label or comment or this will be closed in 10 days.'
19 | close-issue-message: 'This issue was closed because it has been stalled for 5 days with no activity.'
20 | days-before-stale: 30
21 | days-before-close: 5
22 | days-before-pr-close: -1
23 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Docker project generated files to ignore
2 | # if you want to ignore files created by your editor/tools,
3 | # please consider a global .gitignore https://help.github.com/articles/ignoring-files
4 | .vagrant*
5 | bin
6 | docker/docker
7 | .*.swp
8 | a.out
9 | *.orig
10 | build_src
11 | .flymake*
12 | .idea
13 | .DS_Store
14 | docs/_build
15 | docs/_static
16 | docs/_templates
17 | .gopath/
18 | .dotcloud
19 | *.test
20 | bundles/
21 | .hg/
22 | .git/
23 | vendor/pkg/
24 | pyenv
25 | Vagrantfile
26 |
27 | valley_saves
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Stardew Valley Multiplayer Docker Compose
2 |
3 | This project aims to autostart a Stardew Valley Multiplayer Server as easy as possible.
4 |
5 | ## Notes
6 |
7 | - Previous versions provided game files to create the server with the Docker container. To respect ConcernedApe's work and follow
8 | intellectual property law, this will no longer be the case. Users will now be required to use their own copy of the game.
9 | - Although I'm trying to put out updates, I don't have the time for testing thoroughly, so if you find issues, please put
10 | in an issue request and I will try to help.
11 | - Thanks printfuck for the base code.
12 |
13 |
14 |
15 |
16 | ## Setup
17 |
18 | ### Steam
19 |
20 | This image will download the game from Steam server using [steamcmd](https://developer.valvesoftware.com/wiki/SteamCMD) if you own the game. For that, it requires your Steam login.
21 |
22 | The credential variables are required only during building, not during game runtime.
23 |
24 | ```
25 | ## Set these variables only during the first build or during updates
26 | export STEAM_USER=
27 | export STEAM_PASS=
28 | export STEAM_GUARD= # If you account is not protected, don't set
29 |
30 | docker compose -f docker-compose-steam.yml up
31 | ```
32 |
33 | #### Steam Guard
34 |
35 | If your account is protected by Steam Guard, the build is a little time sensitive. You must open your app and
36 | export the current Steam Guard to `STEAM_GUARD` environment variable code right before building.
37 |
38 | **Note: the code lasts a little longer than shown but not much.**
39 |
40 | After starting build, pay attention to your app. Even with the code, it will request for authorization which must be granted.
41 |
42 | If the build fails or when you want to update with `docker compose -f docker-compose-steam.yml build --no-cache`, you should set the newer `STEAM_GUARD` again.
43 |
44 | ```
45 | ## Remove env variables after build
46 | unset STEAM_USER STEAM_PASS STEAM_GUARD
47 | ```
48 | ### GOG
49 |
50 | To my knowledge there is no way to automate this. To use game files from GOG, you will need to download the Linux installer.
51 | Sign in, go to Games, find Stardew, change the system to Linux, and download the game installer. The file will look something
52 | like `stardew_valley_x.x.x.xxx.sh`. Unzip this file (using Git Bash if you are on Windows), and copy the files within the
53 | `data/noarch/` directory to `docker/game_data/`. Start the container using `docker compose -f docker-compose-gog.yml up`. To
54 | rebuild the container after updating the files, use `docker compose -f docker-compose-gog.yml build --no-cache`.
55 |
56 | ### Configuration
57 |
58 | Edit the docker-compose.yml with your desired configuration settings. Setting values are quite descriptive as to what
59 | they set.
60 |
61 | ```
62 | environment:
63 | # VNC
64 | - VNC_PASSWORD=insecure
65 | - DISPLAY_HEIGHT=900
66 | - DISPLAY_WIDTH=1200
67 |
68 | # Always On Server mod
69 | ## Removing this will probably defeat the point of ever using this?
70 | - ENABLE_ALWAYSONSERVER_MOD=${ENABLE_ALWAYSONSERVER_MOD-true}
71 | - ALWAYS_ON_SERVER_HOTKEY=${ALWAYS_ON_SERVER_HOTKEY-F9}
72 | - ALWAYS_ON_SERVER_PROFIT_MARGIN=${ALWAYS_ON_SERVER_PROFIT_MARGIN-100}
73 | - ALWAYS_ON_SERVER_UPGRADE_HOUSE=${ALWAYS_ON_SERVER_UPGRADE_HOUSE-0}
74 | - ALWAYS_ON_SERVER_PET_NAME=${ALWAYS_ON_SERVER_PET_NAME-Rufus}
75 | - ALWAYS_ON_SERVER_FARM_CAVE_CHOICE_MUSHROOMS=${ALWAYS_ON_SERVER_FARM_CAVE_CHOICE_MUSHROOMS-true}
76 | - ALWAYS_ON_SERVER_COMMUNITY_CENTER_RUN=${ALWAYS_ON_SERVER_COMMUNITY_CENTER_RUN-true}
77 | - ALWAYS_ON_SERVER_TIME_OF_DAY_TO_SLEEP=${ALWAYS_ON_SERVER_TIME_OF_DAY_TO_SLEEP-2200}
78 | - ALWAYS_ON_SERVER_LOCK_PLAYER_CHESTS=${ALWAYS_ON_SERVER_LOCK_PLAYER_CHESTS-false}
79 | - ALWAYS_ON_SERVER_CLIENTS_CAN_PAUSE=${ALWAYS_ON_SERVER_CLIENTS_CAN_PAUSE-true}
80 | - ALWAYS_ON_SERVER_COPY_INVITE_CODE_TO_CLIPBOARD=${ALWAYS_ON_SERVER_COPY_INVITE_CODE_TO_CLIPBOARD-false}
81 |
82 | - ALWAYS_ON_SERVER_FESTIVALS_ON=${ALWAYS_ON_SERVER_FESTIVALS_ON-true}
83 | - ALWAYS_ON_SERVER_EGG_HUNT_COUNT_DOWN=${ALWAYS_ON_SERVER_EGG_HUNT_COUNT_DOWN-600}
84 | - ALWAYS_ON_SERVER_FLOWER_DANCE_COUNT_DOWN=${ALWAYS_ON_SERVER_FLOWER_DANCE_COUNT_DOWN-600}
85 | - ALWAYS_ON_SERVER_LUAU_SOUP_COUNT_DOWN=${ALWAYS_ON_SERVER_LUAU_SOUP_COUNT_DOWN-600}
86 | - ALWAYS_ON_SERVER_JELLY_DANCE_COUNT_DOWN=${ALWAYS_ON_SERVER_JELLY_DANCE_COUNT_DOWN-600}
87 | - ALWAYS_ON_SERVER_GRANGE_DISPLAY_COUNT_DOWN=${ALWAYS_ON_SERVER_GRANGE_DISPLAY_COUNT_DOWN-600}
88 | - ALWAYS_ON_SERVER_ICE_FISHING_COUNT_DOWN=${ALWAYS_ON_SERVER_ICE_FISHING_COUNT_DOWN-600}
89 |
90 | - ALWAYS_ON_SERVER_END_OF_DAY_TIMEOUT=${ALWAYS_ON_SERVER_END_OF_DAY_TIMEOUT-300}
91 | - ALWAYS_ON_SERVER_FAIR_TIMEOUT=${ALWAYS_ON_SERVER_FAIR_TIMEOUT-1200}
92 | - ALWAYS_ON_SERVER_SPIRITS_EVE_TIMEOUT=${ALWAYS_ON_SERVER_SPIRITS_EVE_TIMEOUT-900}
93 | - ALWAYS_ON_SERVER_WINTER_STAR_TIMEOUT=${ALWAYS_ON_SERVER_WINTER_STAR_TIMEOUT-900}
94 |
95 | - ALWAYS_ON_SERVER_EGG_FESTIVAL_TIMEOUT=${ALWAYS_ON_SERVER_EGG_FESTIVAL_TIMEOUT-120}
96 | - ALWAYS_ON_SERVER_FLOWER_DANCE_TIMEOUT=${ALWAYS_ON_SERVER_FLOWER_DANCE_TIMEOUT-120}
97 | - ALWAYS_ON_SERVER_LUAU_TIMEOUT=${ALWAYS_ON_SERVER_LUAU_TIMEOUT-120}
98 | - ALWAYS_ON_SERVER_DANCE_OF_JELLIES_TIMEOUT=${ALWAYS_ON_SERVER_DANCE_OF_JELLIES_TIMEOUT-120}
99 | - ALWAYS_ON_SERVER_FESTIVAL_OF_ICE_TIMEOUT=${ALWAYS_ON_SERVER_FESTIVAL_OF_ICE_TIMEOUT-120 }
100 |
101 | # Auto Load Game mod
102 | ## Removing this will mean you need to VNC in to manually start the game each boot
103 | - ENABLE_AUTOLOADGAME_MOD=${ENABLE_AUTOLOADGAME-null}
104 | - AUTO_LOAD_GAME_LAST_FILE_LOADED=${AUTO_LOAD_GAME_LAST_FILE_LOADED-null}
105 | - AUTO_LOAD_GAME_FORGET_LAST_FILE_ON_TITLE=${AUTO_LOAD_GAME_FORGET_LAST_FILE_ON_TITLE-true}
106 | - AUTO_LOAD_GAME_LOAD_INTO_MULTIPLAYER=${AUTO_LOAD_GAME_LOAD_INTO_MULTIPLAYER-true}
107 |
108 | # Unlimited Players Mod
109 | - ENABLE_UNLIMITEDPLAYERS_MOD=${ENABLE_UNLIMITEDPLAYERS-true}
110 | - UNLIMITED_PLAYERS_PLAYER_LIMIT=${UNLIMITED_PLAYERS_PLAYER_LIMIT-8}
111 |
112 | # Chat Commands mod
113 | - ENABLE_CHATCOMMANDS_MOD=${ENABLE_CHATCOMMANDS_MOD-false}
114 |
115 | # Console Commands mod
116 | - ENABLE_CONSOLECOMMANDS_MOD=${ENABLE_CONSOLECOMMANDS_MOD-false}
117 |
118 | # Time Speed mod
119 | - ENABLE_TIMESPEED_MOD=${ENABLE_TIMESPEED_MOD-false}
120 |
121 | ## Days are only 20 hours long
122 | ## 7.0 = 14 mins per in game day (default)
123 | ## 10.0 = 20 mins
124 | ## 15.0 = 30 mins
125 | ## 20.0 = 40 mins
126 | ## 30.0 = 1 hour
127 | ## 120.0 = 4 hours
128 | ## 300.0 = 10 hours
129 | ## 600.0 = 20 hours (realtime)
130 |
131 | - TIME_SPEED_DEFAULT_TICK_LENGTH=${TIME_SPEED_DEFAULT_TICK_LENGTH-7.0}
132 | - TIME_SPEED_TICK_LENGTH_BY_LOCATION_INDOORS=${TIME_SPEED_TICK_LENGTH_BY_LOCATION_INDOORS-7.0}
133 | - TIME_SPEED_TICK_LENGTH_BY_LOCATION_OUTDOORS=${TIME_SPEED_TICK_LENGTH_BY_LOCATION_OUTDOORS-7.0}
134 | - TIME_SPEED_TICK_LENGTH_BY_LOCATION_MINE=${TIME_SPEED_TICK_LENGTH_BY_LOCATION_MINE-7.0}
135 |
136 | - TIME_SPEED_ENABLE_ON_FESTIVAL_DAYS=${TIME_SPEED_ENABLE_ON_FESTIVAL_DAYS-false}
137 | - TIME_SPEED_FREEZE_TIME_AT=${TIME_SPEED_FREEZE_TIME_AT-null}
138 | - TIME_SPEED_LOCATION_NOTIFY=${TIME_SPEED_LOCATION_NOTIFY-false}
139 |
140 | - TIME_SPEED_KEYS_FREEZE_TIME=${TIME_SPEED_KEYS_FREEZE_TIME-N}
141 | - TIME_SPEED_KEYS_INCREASE_TICK_INTERVAL=${TIME_SPEED_KEYS_INCREASE_TICK_INTERVAL-OemPeriod}
142 | - TIME_SPEED_KEYS_DECREASE_TICK_INTERVAL=${TIME_SPEED_KEYS_DECREASE_TICK_INTERVAL-OemComma}
143 | - TIME_SPEED_KEYS_RELOAD_CONFIG=${TIME_SPEED_KEYS_RELOAD_CONFIG-B}
144 |
145 | # Crops Anytime Anywhere mod
146 | - ENABLE_CROPSANYTIMEANYWHERE_MOD=${ENABLE_CROPSANYTIMEANYWHERE_MOD-false}
147 |
148 | - CROPS_ANYTIME_ANYWHERE_ENABLE_IN_SEASONS_SPRING=${CROPS_ANYTIME_ANYWHERE_ENABLE_IN_SEASONS_SPRING-true}
149 | - CROPS_ANYTIME_ANYWHERE_ENABLE_IN_SEASONS_SUMMER=${CROPS_ANYTIME_ANYWHERE_ENABLE_IN_SEASONS_SUMMER-true}
150 | - CROPS_ANYTIME_ANYWHERE_ENABLE_IN_SEASONS_FALL=${CROPS_ANYTIME_ANYWHERE_ENABLE_IN_SEASONS_FALL-true}
151 | - CROPS_ANYTIME_ANYWHERE_ENABLE_IN_SEASONS_WINTER=${CROPS_ANYTIME_ANYWHERE_ENABLE_IN_SEASONS_WINTER-true}
152 |
153 | - CROPS_ANYTIME_ANYWHERE_FARM_ANY_LOCATION=${CROPS_ANYTIME_ANYWHERE_FARM_ANY_LOCATION-true}
154 |
155 | - CROPS_ANYTIME_ANYWHERE_FORCE_TILLABLE_DIRT=${CROPS_ANYTIME_ANYWHERE_FORCE_TILLABLE_DIRT-true}
156 | - CROPS_ANYTIME_ANYWHERE_FORCE_TILLABLE_GRASS=${CROPS_ANYTIME_ANYWHERE_FORCE_TILLABLE_GRASS-true}
157 | - CROPS_ANYTIME_ANYWHERE_FORCE_TILLABLE_STONE=${CROPS_ANYTIME_ANYWHERE_FORCE_TILLABLE_STONE-false}
158 | - CROPS_ANYTIME_ANYWHERE_FORCE_TILLABLE_OTHER=${CROPS_ANYTIME_ANYWHERE_FORCE_TILLABLE_OTHER-false}
159 |
160 | # Friends Forever mod
161 | - ENABLE_FRIENDSFOREVER_MOD=${ENABLE_FRIENDSFOREVER_MOD-false}
162 |
163 | - FRIENDS_FOREVER_AFFECT_SPOUSE=${FRIENDS_FOREVER_AFFECT_SPOUSE-false}
164 | - FRIENDS_FOREVER_AFFECT_DATES=${FRIENDS_FOREVER_AFFECT_DATES-true}
165 | - FRIENDS_FOREVER_AFFECT_EVERYONE_ELSE=${FRIENDS_FOREVER_AFFECT_EVERYONE_ELSE-true}
166 | - FRIENDS_FOREVER_AFFECT_ANIMALS=${FRIENDS_FOREVER_AFFECT_ANIMALS-true}
167 |
168 | # No Fence Decay mod
169 | - ENABLE_NOFENCEDECAY_MOD=${ENABLE_NOFENCEDECAY_MOD-false}
170 |
171 | # Non-destructive NPCs mod
172 | - ENABLE_NONDESTRUCTIVENPCS_MOD=${ENABLE_NONDESTRUCTIVENPCS_MOD-false}
173 | ```
174 |
175 | ## Game Setup
176 |
177 | Initially, you have to create or load a game once via VNC or web interface. After that, the Autoload Mod jumps into the
178 | previously loaded game save everytime you restart or rebuild the container. The AutoLoad Mod config file is by default
179 | mounted as a volume, since it keeps the state of the ongoing game save, but you can also copy your existing game save to
180 | the `Saves` volume and define the game save's name in the environment variables. Once started, press the Always On
181 | Hotkey (default F9) to enter server mode.
182 |
183 | ### VNC
184 |
185 | Use a VNC client like `TightVNC` on Windows or plain `vncviewer` on any Linux distribution to connect to the server. You
186 | can modify the VNC Port and IP address and Password in the `docker-compose.yml` file like this:
187 |
188 | Localhost:
189 |
190 | ```
191 | # Server is only reachable on localhost on port 5902...
192 | ports:
193 | - 127.0.0.1:5902:5900
194 | # ... with the password "insecure"
195 | environment:
196 | - VNCPASS=insecure
197 | ```
198 |
199 | ### Web Interface
200 |
201 | On port 5800 (mapped to 5801 by default) inside the container is a web interface. This is a bit easier and more
202 | accessible than just the VNC interface. Although you will be asked for the vnc password, I wouldn't recommend exposing
203 | the port to the outside world.
204 |
205 | 
206 |
207 | ## Accessing the server
208 |
209 | - Direct IP: You will need to set a up direct IP access over the internet "Join LAN Game" by opening (or forwarding)
210 | port 24642. Feel free to change this mapping in the compose file. People can then "Join LAN Game" via your external IP.
211 |
212 | (Taken from mod description. See [Always On Server](https://www.nexusmods.com/stardewvalley/mods/2677?tab=description)
213 | for more info.)
214 |
215 | ## Mods
216 |
217 | - [Always On Server](https://www.nexusmods.com/stardewvalley/mods/2677) (Default: Required)
218 | - [Auto Load Game](https://www.nexusmods.com/stardewvalley/mods/2509) (Default: On)
219 | - [Crops Anytime Anywhere](https://www.nexusmods.com/stardewvalley/mods/3000) (Default: Off)
220 | - [Friends Forever](https://www.nexusmods.com/stardewvalley/mods/1738) (Default: Off)
221 | - [No Fence Decay](https://www.nexusmods.com/stardewvalley/mods/1180) (Default: Off)
222 | - [Non Destructive NPCs](https://www.nexusmods.com/stardewvalley/mods/5176) (Default: Off)
223 | - [Remote Control](https://github.com/Novex/stardew-remote-control) (Default: On)
224 | - [TimeSpeed](https://www.nexusmods.com/stardewvalley/mods/169) (Default: Off)
225 | - [Unlimited Players](https://www.nexusmods.com/stardewvalley/mods/2213) (Default: On)
226 |
227 | ## Troubleshooting
228 |
229 | ### Waiting for Day to End
230 |
231 | Check VNC just to make sure the host hasn't gotten stuck on a prompt.
232 |
233 | ### Error Messages in Console
234 |
235 | Usually you should be able to ignore any message there. If the game doesn't start or any errors appear, you should look
236 | for messages like "cannot open display", which would most likely indicate permission errors.
237 |
238 | ### VNC
239 |
240 | Access the game via VNC to initially load or start a pre-generated game save. You can control the server from there or
241 | edit the config.json files in the configs folder.
242 |
--------------------------------------------------------------------------------
/configs/autoload.json:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/huntercavazos/stardew-multiplayer-docker/646a5d6e26414d62439af29a91e76b66618b74d2/configs/autoload.json
--------------------------------------------------------------------------------
/docker-compose-gog.yml:
--------------------------------------------------------------------------------
1 | version: '2.2'
2 |
3 | services:
4 | valley:
5 | build:
6 | context: docker
7 | dockerfile: Dockerfile-gog
8 | container_name: stardew
9 | environment:
10 | # VNC
11 | - VNC_PASSWORD=insecure
12 | - DISPLAY_HEIGHT=900
13 | - DISPLAY_WIDTH=1200
14 |
15 | # Always On Server mod
16 | ## Removing this will probably defeat the point of ever using this?
17 | - ENABLE_ALWAYSONSERVER_MOD=${ENABLE_ALWAYSONSERVER_MOD-true}
18 | - ALWAYS_ON_SERVER_HOTKEY=${ALWAYS_ON_SERVER_HOTKEY-F9}
19 | - ALWAYS_ON_SERVER_PROFIT_MARGIN=${ALWAYS_ON_SERVER_PROFIT_MARGIN-100}
20 | - ALWAYS_ON_SERVER_UPGRADE_HOUSE=${ALWAYS_ON_SERVER_UPGRADE_HOUSE-0}
21 | - ALWAYS_ON_SERVER_PET_NAME=${ALWAYS_ON_SERVER_PET_NAME-Rufus}
22 | - ALWAYS_ON_SERVER_FARM_CAVE_CHOICE_MUSHROOMS=${ALWAYS_ON_SERVER_FARM_CAVE_CHOICE_MUSHROOMS-true}
23 | - ALWAYS_ON_SERVER_COMMUNITY_CENTER_RUN=${ALWAYS_ON_SERVER_COMMUNITY_CENTER_RUN-true}
24 | - ALWAYS_ON_SERVER_TIME_OF_DAY_TO_SLEEP=${ALWAYS_ON_SERVER_TIME_OF_DAY_TO_SLEEP-2200}
25 | - ALWAYS_ON_SERVER_LOCK_PLAYER_CHESTS=${ALWAYS_ON_SERVER_LOCK_PLAYER_CHESTS-false}
26 | - ALWAYS_ON_SERVER_CLIENTS_CAN_PAUSE=${ALWAYS_ON_SERVER_CLIENTS_CAN_PAUSE-true}
27 | - ALWAYS_ON_SERVER_COPY_INVITE_CODE_TO_CLIPBOARD=${ALWAYS_ON_SERVER_COPY_INVITE_CODE_TO_CLIPBOARD-false}
28 |
29 | - ALWAYS_ON_SERVER_FESTIVALS_ON=${ALWAYS_ON_SERVER_FESTIVALS_ON-true}
30 | - ALWAYS_ON_SERVER_EGG_HUNT_COUNT_DOWN=${ALWAYS_ON_SERVER_EGG_HUNT_COUNT_DOWN-600}
31 | - ALWAYS_ON_SERVER_FLOWER_DANCE_COUNT_DOWN=${ALWAYS_ON_SERVER_FLOWER_DANCE_COUNT_DOWN-600}
32 | - ALWAYS_ON_SERVER_LUAU_SOUP_COUNT_DOWN=${ALWAYS_ON_SERVER_LUAU_SOUP_COUNT_DOWN-600}
33 | - ALWAYS_ON_SERVER_JELLY_DANCE_COUNT_DOWN=${ALWAYS_ON_SERVER_JELLY_DANCE_COUNT_DOWN-600}
34 | - ALWAYS_ON_SERVER_GRANGE_DISPLAY_COUNT_DOWN=${ALWAYS_ON_SERVER_GRANGE_DISPLAY_COUNT_DOWN-600}
35 | - ALWAYS_ON_SERVER_ICE_FISHING_COUNT_DOWN=${ALWAYS_ON_SERVER_ICE_FISHING_COUNT_DOWN-600}
36 |
37 | - ALWAYS_ON_SERVER_END_OF_DAY_TIMEOUT=${ALWAYS_ON_SERVER_END_OF_DAY_TIMEOUT-300}
38 | - ALWAYS_ON_SERVER_FAIR_TIMEOUT=${ALWAYS_ON_SERVER_FAIR_TIMEOUT-1200}
39 | - ALWAYS_ON_SERVER_SPIRITS_EVE_TIMEOUT=${ALWAYS_ON_SERVER_SPIRITS_EVE_TIMEOUT-900}
40 | - ALWAYS_ON_SERVER_WINTER_STAR_TIMEOUT=${ALWAYS_ON_SERVER_WINTER_STAR_TIMEOUT-900}
41 |
42 | - ALWAYS_ON_SERVER_EGG_FESTIVAL_TIMEOUT=${ALWAYS_ON_SERVER_EGG_FESTIVAL_TIMEOUT-120}
43 | - ALWAYS_ON_SERVER_FLOWER_DANCE_TIMEOUT=${ALWAYS_ON_SERVER_FLOWER_DANCE_TIMEOUT-120}
44 | - ALWAYS_ON_SERVER_LUAU_TIMEOUT=${ALWAYS_ON_SERVER_LUAU_TIMEOUT-120}
45 | - ALWAYS_ON_SERVER_DANCE_OF_JELLIES_TIMEOUT=${ALWAYS_ON_SERVER_DANCE_OF_JELLIES_TIMEOUT-120}
46 | - ALWAYS_ON_SERVER_FESTIVAL_OF_ICE_TIMEOUT=${ALWAYS_ON_SERVER_FESTIVAL_OF_ICE_TIMEOUT-120 }
47 |
48 | # Auto Load Game mod
49 | ## Removing this will mean you need to VNC in to manually start the game each boot
50 | - ENABLE_AUTOLOADGAME_MOD=${ENABLE_AUTOLOADGAME-true}
51 | - AUTO_LOAD_GAME_LAST_FILE_LOADED=${AUTO_LOAD_GAME_LAST_FILE_LOADED-null}
52 | - AUTO_LOAD_GAME_FORGET_LAST_FILE_ON_TITLE=${AUTO_LOAD_GAME_FORGET_LAST_FILE_ON_TITLE-true}
53 | - AUTO_LOAD_GAME_LOAD_INTO_MULTIPLAYER=${AUTO_LOAD_GAME_LOAD_INTO_MULTIPLAYER-true}
54 |
55 | # Unlimited Players Mod
56 | - ENABLE_UNLIMITEDPLAYERS_MOD=${ENABLE_UNLIMITEDPLAYERS-true}
57 | - UNLIMITED_PLAYERS_PLAYER_LIMIT=${UNLIMITED_PLAYERS_PLAYER_LIMIT-10}
58 |
59 | # Chat Commands mod
60 | - ENABLE_CHATCOMMANDS_MOD=${ENABLE_CHATCOMMANDS_MOD-false}
61 |
62 | # Console Commands mod
63 | - ENABLE_CONSOLECOMMANDS_MOD=${ENABLE_CONSOLECOMMANDS_MOD-false}
64 |
65 | # Time Speed mod
66 | - ENABLE_TIMESPEED_MOD=${ENABLE_TIMESPEED_MOD-false}
67 |
68 | ## Days are only 20 hours long
69 | ## 7.0 = 14 mins per in game day (default)
70 | ## 10.0 = 20 mins
71 | ## 15.0 = 30 mins
72 | ## 20.0 = 40 mins
73 | ## 30.0 = 1 hour
74 | ## 120.0 = 4 hours
75 | ## 300.0 = 10 hours
76 | ## 600.0 = 20 hours (realtime)
77 |
78 | - TIME_SPEED_DEFAULT_TICK_LENGTH=${TIME_SPEED_DEFAULT_TICK_LENGTH-7.0}
79 | - TIME_SPEED_TICK_LENGTH_BY_LOCATION_INDOORS=${TIME_SPEED_TICK_LENGTH_BY_LOCATION_INDOORS-7.0}
80 | - TIME_SPEED_TICK_LENGTH_BY_LOCATION_OUTDOORS=${TIME_SPEED_TICK_LENGTH_BY_LOCATION_OUTDOORS-7.0}
81 | - TIME_SPEED_TICK_LENGTH_BY_LOCATION_MINE=${TIME_SPEED_TICK_LENGTH_BY_LOCATION_MINE-7.0}
82 |
83 | - TIME_SPEED_ENABLE_ON_FESTIVAL_DAYS=${TIME_SPEED_ENABLE_ON_FESTIVAL_DAYS-false}
84 | - TIME_SPEED_FREEZE_TIME_AT=${TIME_SPEED_FREEZE_TIME_AT-null}
85 | - TIME_SPEED_LOCATION_NOTIFY=${TIME_SPEED_LOCATION_NOTIFY-false}
86 |
87 | - TIME_SPEED_KEYS_FREEZE_TIME=${TIME_SPEED_KEYS_FREEZE_TIME-N}
88 | - TIME_SPEED_KEYS_INCREASE_TICK_INTERVAL=${TIME_SPEED_KEYS_INCREASE_TICK_INTERVAL-OemPeriod}
89 | - TIME_SPEED_KEYS_DECREASE_TICK_INTERVAL=${TIME_SPEED_KEYS_DECREASE_TICK_INTERVAL-OemComma}
90 | - TIME_SPEED_KEYS_RELOAD_CONFIG=${TIME_SPEED_KEYS_RELOAD_CONFIG-B}
91 |
92 | # Crops Anytime Anywhere mod
93 | - ENABLE_CROPSANYTIMEANYWHERE_MOD=${ENABLE_CROPSANYTIMEANYWHERE_MOD-false}
94 |
95 | - CROPS_ANYTIME_ANYWHERE_ENABLE_IN_SEASONS_SPRING=${CROPS_ANYTIME_ANYWHERE_ENABLE_IN_SEASONS_SPRING-true}
96 | - CROPS_ANYTIME_ANYWHERE_ENABLE_IN_SEASONS_SUMMER=${CROPS_ANYTIME_ANYWHERE_ENABLE_IN_SEASONS_SUMMER-true}
97 | - CROPS_ANYTIME_ANYWHERE_ENABLE_IN_SEASONS_FALL=${CROPS_ANYTIME_ANYWHERE_ENABLE_IN_SEASONS_FALL-true}
98 | - CROPS_ANYTIME_ANYWHERE_ENABLE_IN_SEASONS_WINTER=${CROPS_ANYTIME_ANYWHERE_ENABLE_IN_SEASONS_WINTER-true}
99 |
100 | - CROPS_ANYTIME_ANYWHERE_FARM_ANY_LOCATION=${CROPS_ANYTIME_ANYWHERE_FARM_ANY_LOCATION-true}
101 |
102 | - CROPS_ANYTIME_ANYWHERE_FORCE_TILLABLE_DIRT=${CROPS_ANYTIME_ANYWHERE_FORCE_TILLABLE_DIRT-true}
103 | - CROPS_ANYTIME_ANYWHERE_FORCE_TILLABLE_GRASS=${CROPS_ANYTIME_ANYWHERE_FORCE_TILLABLE_GRASS-true}
104 | - CROPS_ANYTIME_ANYWHERE_FORCE_TILLABLE_STONE=${CROPS_ANYTIME_ANYWHERE_FORCE_TILLABLE_STONE-false}
105 | - CROPS_ANYTIME_ANYWHERE_FORCE_TILLABLE_OTHER=${CROPS_ANYTIME_ANYWHERE_FORCE_TILLABLE_OTHER-false}
106 |
107 | # Friends Forever mod
108 | - ENABLE_FRIENDSFOREVER_MOD=${ENABLE_FRIENDSFOREVER_MOD-false}
109 |
110 | - FRIENDS_FOREVER_AFFECT_SPOUSE=${FRIENDS_FOREVER_AFFECT_SPOUSE-false}
111 | - FRIENDS_FOREVER_AFFECT_DATES=${FRIENDS_FOREVER_AFFECT_DATES-true}
112 | - FRIENDS_FOREVER_AFFECT_EVERYONE_ELSE=${FRIENDS_FOREVER_AFFECT_EVERYONE_ELSE-true}
113 | - FRIENDS_FOREVER_AFFECT_ANIMALS=${FRIENDS_FOREVER_AFFECT_ANIMALS-true}
114 |
115 | # No Fence Decay mod
116 | - ENABLE_NOFENCEDECAY_MOD=${ENABLE_NOFENCEDECAY_MOD-false}
117 |
118 | # Non-destructive NPCs mod
119 | - ENABLE_NONDESTRUCTIVENPCS_MOD=${ENABLE_NONDESTRUCTIVENPCS_MOD-false}
120 |
121 | ports:
122 | # VNC
123 | - 5902:5900
124 | # NOVNC WEB
125 | - 5801:5800
126 | # Game
127 | - 24642:24642/udp
128 | volumes:
129 | # Saves go here now
130 | - ./valley_saves:/config/xdg/config/StardewValley/Saves
131 | # If you'd like to set an existing savegame before the first start otherwise this file will be edited when starting the first game
132 | - ./configs/autoload.json:/data/Stardew/game/Mods/AutoLoadGame/config.json
133 | # deploy:
134 | # ## The container is CPU hungry, you can limit using this block
135 | # ## If you don't plan to play using VNC, 1 core should be enough to host for others
136 | # resources:
137 | # limits:
138 | # cpus: "1"
139 |
140 |
--------------------------------------------------------------------------------
/docker-compose-steam.yml:
--------------------------------------------------------------------------------
1 | version: '2.2'
2 |
3 | services:
4 | valley:
5 | build:
6 | context: docker
7 | dockerfile: Dockerfile-steam
8 | args:
9 | ## Recommended: set as env_variable during build
10 | STEAM_USER: ${STEAM_USER}
11 | ## Recommended: set as env_variable during build
12 | STEAM_PASS: ${STEAM_PASS}
13 | ## Recommended: set as env_variable during build
14 | STEAM_GUARD: ${STEAM_GUARD}
15 | ## Stardew steamId
16 | SRCDS_APPID: 413150
17 | container_name: stardew
18 | environment:
19 | # VNC
20 | - VNC_PASSWORD=insecure
21 | - DISPLAY_HEIGHT=900
22 | - DISPLAY_WIDTH=1200
23 | - X11VNC_EXTRA_OPTS=-noxdamage -reopen -forever
24 |
25 | # Always On Server mod
26 | ## Removing this will probably defeat the point of ever using this?
27 | - ENABLE_ALWAYSONSERVER_MOD=${ENABLE_ALWAYSONSERVER_MOD-true}
28 | - ALWAYS_ON_SERVER_HOTKEY=${ALWAYS_ON_SERVER_HOTKEY-F9}
29 | - ALWAYS_ON_SERVER_PROFIT_MARGIN=${ALWAYS_ON_SERVER_PROFIT_MARGIN-100}
30 | - ALWAYS_ON_SERVER_UPGRADE_HOUSE=${ALWAYS_ON_SERVER_UPGRADE_HOUSE-0}
31 | - ALWAYS_ON_SERVER_PET_NAME=${ALWAYS_ON_SERVER_PET_NAME-Rufus}
32 | - ALWAYS_ON_SERVER_FARM_CAVE_CHOICE_MUSHROOMS=${ALWAYS_ON_SERVER_FARM_CAVE_CHOICE_MUSHROOMS-true}
33 | - ALWAYS_ON_SERVER_COMMUNITY_CENTER_RUN=${ALWAYS_ON_SERVER_COMMUNITY_CENTER_RUN-true}
34 | - ALWAYS_ON_SERVER_TIME_OF_DAY_TO_SLEEP=${ALWAYS_ON_SERVER_TIME_OF_DAY_TO_SLEEP-2200}
35 | - ALWAYS_ON_SERVER_LOCK_PLAYER_CHESTS=${ALWAYS_ON_SERVER_LOCK_PLAYER_CHESTS-false}
36 | - ALWAYS_ON_SERVER_CLIENTS_CAN_PAUSE=${ALWAYS_ON_SERVER_CLIENTS_CAN_PAUSE-true}
37 | - ALWAYS_ON_SERVER_COPY_INVITE_CODE_TO_CLIPBOARD=${ALWAYS_ON_SERVER_COPY_INVITE_CODE_TO_CLIPBOARD-false}
38 |
39 | - ALWAYS_ON_SERVER_FESTIVALS_ON=${ALWAYS_ON_SERVER_FESTIVALS_ON-true}
40 | - ALWAYS_ON_SERVER_EGG_HUNT_COUNT_DOWN=${ALWAYS_ON_SERVER_EGG_HUNT_COUNT_DOWN-600}
41 | - ALWAYS_ON_SERVER_FLOWER_DANCE_COUNT_DOWN=${ALWAYS_ON_SERVER_FLOWER_DANCE_COUNT_DOWN-600}
42 | - ALWAYS_ON_SERVER_LUAU_SOUP_COUNT_DOWN=${ALWAYS_ON_SERVER_LUAU_SOUP_COUNT_DOWN-600}
43 | - ALWAYS_ON_SERVER_JELLY_DANCE_COUNT_DOWN=${ALWAYS_ON_SERVER_JELLY_DANCE_COUNT_DOWN-600}
44 | - ALWAYS_ON_SERVER_GRANGE_DISPLAY_COUNT_DOWN=${ALWAYS_ON_SERVER_GRANGE_DISPLAY_COUNT_DOWN-600}
45 | - ALWAYS_ON_SERVER_ICE_FISHING_COUNT_DOWN=${ALWAYS_ON_SERVER_ICE_FISHING_COUNT_DOWN-600}
46 |
47 | - ALWAYS_ON_SERVER_END_OF_DAY_TIMEOUT=${ALWAYS_ON_SERVER_END_OF_DAY_TIMEOUT-300}
48 | - ALWAYS_ON_SERVER_FAIR_TIMEOUT=${ALWAYS_ON_SERVER_FAIR_TIMEOUT-1200}
49 | - ALWAYS_ON_SERVER_SPIRITS_EVE_TIMEOUT=${ALWAYS_ON_SERVER_SPIRITS_EVE_TIMEOUT-900}
50 | - ALWAYS_ON_SERVER_WINTER_STAR_TIMEOUT=${ALWAYS_ON_SERVER_WINTER_STAR_TIMEOUT-900}
51 |
52 | - ALWAYS_ON_SERVER_EGG_FESTIVAL_TIMEOUT=${ALWAYS_ON_SERVER_EGG_FESTIVAL_TIMEOUT-120}
53 | - ALWAYS_ON_SERVER_FLOWER_DANCE_TIMEOUT=${ALWAYS_ON_SERVER_FLOWER_DANCE_TIMEOUT-120}
54 | - ALWAYS_ON_SERVER_LUAU_TIMEOUT=${ALWAYS_ON_SERVER_LUAU_TIMEOUT-120}
55 | - ALWAYS_ON_SERVER_DANCE_OF_JELLIES_TIMEOUT=${ALWAYS_ON_SERVER_DANCE_OF_JELLIES_TIMEOUT-120}
56 | - ALWAYS_ON_SERVER_FESTIVAL_OF_ICE_TIMEOUT=${ALWAYS_ON_SERVER_FESTIVAL_OF_ICE_TIMEOUT-120 }
57 |
58 | # Auto Load Game mod
59 | ## Removing this will mean you need to VNC in to manually start the game each boot
60 | - ENABLE_AUTOLOADGAME_MOD=${ENABLE_AUTOLOADGAME-true}
61 | - AUTO_LOAD_GAME_LAST_FILE_LOADED=${AUTO_LOAD_GAME_LAST_FILE_LOADED-null}
62 | - AUTO_LOAD_GAME_FORGET_LAST_FILE_ON_TITLE=${AUTO_LOAD_GAME_FORGET_LAST_FILE_ON_TITLE-true}
63 | - AUTO_LOAD_GAME_LOAD_INTO_MULTIPLAYER=${AUTO_LOAD_GAME_LOAD_INTO_MULTIPLAYER-true}
64 |
65 | # Unlimited Players Mod
66 | - ENABLE_UNLIMITEDPLAYERS_MOD=${ENABLE_UNLIMITEDPLAYERS-true}
67 | - UNLIMITED_PLAYERS_PLAYER_LIMIT=${UNLIMITED_PLAYERS_PLAYER_LIMIT-10}
68 |
69 | # Chat Commands mod
70 | - ENABLE_CHATCOMMANDS_MOD=${ENABLE_CHATCOMMANDS_MOD-false}
71 |
72 | # Console Commands mod
73 | - ENABLE_CONSOLECOMMANDS_MOD=${ENABLE_CONSOLECOMMANDS_MOD-false}
74 |
75 | # Time Speed mod
76 | - ENABLE_TIMESPEED_MOD=${ENABLE_TIMESPEED_MOD-false}
77 |
78 | ## Days are only 20 hours long
79 | ## 7.0 = 14 mins per in game day (default)
80 | ## 10.0 = 20 mins
81 | ## 15.0 = 30 mins
82 | ## 20.0 = 40 mins
83 | ## 30.0 = 1 hour
84 | ## 120.0 = 4 hours
85 | ## 300.0 = 10 hours
86 | ## 600.0 = 20 hours (realtime)
87 |
88 | - TIME_SPEED_DEFAULT_TICK_LENGTH=${TIME_SPEED_DEFAULT_TICK_LENGTH-7.0}
89 | - TIME_SPEED_TICK_LENGTH_BY_LOCATION_INDOORS=${TIME_SPEED_TICK_LENGTH_BY_LOCATION_INDOORS-7.0}
90 | - TIME_SPEED_TICK_LENGTH_BY_LOCATION_OUTDOORS=${TIME_SPEED_TICK_LENGTH_BY_LOCATION_OUTDOORS-7.0}
91 | - TIME_SPEED_TICK_LENGTH_BY_LOCATION_MINE=${TIME_SPEED_TICK_LENGTH_BY_LOCATION_MINE-7.0}
92 |
93 | - TIME_SPEED_ENABLE_ON_FESTIVAL_DAYS=${TIME_SPEED_ENABLE_ON_FESTIVAL_DAYS-false}
94 | - TIME_SPEED_FREEZE_TIME_AT=${TIME_SPEED_FREEZE_TIME_AT-null}
95 | - TIME_SPEED_LOCATION_NOTIFY=${TIME_SPEED_LOCATION_NOTIFY-false}
96 |
97 | - TIME_SPEED_KEYS_FREEZE_TIME=${TIME_SPEED_KEYS_FREEZE_TIME-N}
98 | - TIME_SPEED_KEYS_INCREASE_TICK_INTERVAL=${TIME_SPEED_KEYS_INCREASE_TICK_INTERVAL-OemPeriod}
99 | - TIME_SPEED_KEYS_DECREASE_TICK_INTERVAL=${TIME_SPEED_KEYS_DECREASE_TICK_INTERVAL-OemComma}
100 | - TIME_SPEED_KEYS_RELOAD_CONFIG=${TIME_SPEED_KEYS_RELOAD_CONFIG-B}
101 |
102 | # Crops Anytime Anywhere mod
103 | - ENABLE_CROPSANYTIMEANYWHERE_MOD=${ENABLE_CROPSANYTIMEANYWHERE_MOD-false}
104 |
105 | - CROPS_ANYTIME_ANYWHERE_ENABLE_IN_SEASONS_SPRING=${CROPS_ANYTIME_ANYWHERE_ENABLE_IN_SEASONS_SPRING-true}
106 | - CROPS_ANYTIME_ANYWHERE_ENABLE_IN_SEASONS_SUMMER=${CROPS_ANYTIME_ANYWHERE_ENABLE_IN_SEASONS_SUMMER-true}
107 | - CROPS_ANYTIME_ANYWHERE_ENABLE_IN_SEASONS_FALL=${CROPS_ANYTIME_ANYWHERE_ENABLE_IN_SEASONS_FALL-true}
108 | - CROPS_ANYTIME_ANYWHERE_ENABLE_IN_SEASONS_WINTER=${CROPS_ANYTIME_ANYWHERE_ENABLE_IN_SEASONS_WINTER-true}
109 |
110 | - CROPS_ANYTIME_ANYWHERE_FARM_ANY_LOCATION=${CROPS_ANYTIME_ANYWHERE_FARM_ANY_LOCATION-true}
111 |
112 | - CROPS_ANYTIME_ANYWHERE_FORCE_TILLABLE_DIRT=${CROPS_ANYTIME_ANYWHERE_FORCE_TILLABLE_DIRT-true}
113 | - CROPS_ANYTIME_ANYWHERE_FORCE_TILLABLE_GRASS=${CROPS_ANYTIME_ANYWHERE_FORCE_TILLABLE_GRASS-true}
114 | - CROPS_ANYTIME_ANYWHERE_FORCE_TILLABLE_STONE=${CROPS_ANYTIME_ANYWHERE_FORCE_TILLABLE_STONE-false}
115 | - CROPS_ANYTIME_ANYWHERE_FORCE_TILLABLE_OTHER=${CROPS_ANYTIME_ANYWHERE_FORCE_TILLABLE_OTHER-false}
116 |
117 | # Friends Forever mod
118 | - ENABLE_FRIENDSFOREVER_MOD=${ENABLE_FRIENDSFOREVER_MOD-false}
119 |
120 | - FRIENDS_FOREVER_AFFECT_SPOUSE=${FRIENDS_FOREVER_AFFECT_SPOUSE-false}
121 | - FRIENDS_FOREVER_AFFECT_DATES=${FRIENDS_FOREVER_AFFECT_DATES-true}
122 | - FRIENDS_FOREVER_AFFECT_EVERYONE_ELSE=${FRIENDS_FOREVER_AFFECT_EVERYONE_ELSE-true}
123 | - FRIENDS_FOREVER_AFFECT_ANIMALS=${FRIENDS_FOREVER_AFFECT_ANIMALS-true}
124 |
125 | # No Fence Decay mod
126 | - ENABLE_NOFENCEDECAY_MOD=${ENABLE_NOFENCEDECAY_MOD-false}
127 |
128 | # Non-destructive NPCs mod
129 | - ENABLE_NONDESTRUCTIVENPCS_MOD=${ENABLE_NONDESTRUCTIVENPCS_MOD-false}
130 |
131 | ports:
132 | # VNC
133 | - 5902:5900
134 | # NOVNC WEB
135 | - 5801:5800
136 | # Game
137 | - 24642:24642/udp
138 | volumes:
139 | # Saves go here now
140 | - ./valley_saves:/config/xdg/config/StardewValley/Saves
141 | # If you'd like to set an existing savegame before the first start otherwise this file will be edited when starting the first game
142 | - ./configs/autoload.json:/data/Stardew/game/Mods/AutoLoadGame/config.json
143 | # deploy:
144 | # ## The container is CPU hungry, you can limit using this block
145 | # ## If you don't plan to play using VNC, 1 core should be enough to host for others
146 | # resources:
147 | # limits:
148 | # cpus: "1"
149 |
--------------------------------------------------------------------------------
/docker/Dockerfile-gog:
--------------------------------------------------------------------------------
1 | # Pull base image.
2 | FROM jlesage/baseimage-gui:debian-11
3 |
4 | # Set the name of the application.
5 | ENV APP_NAME="StardewValley"
6 |
7 | # Uses a distinct PATH from Stardew/game/ that GOG has.
8 | ENV GAME_PATH="/data/Stardew"
9 |
10 | RUN apt-get update && apt-get install -y wget unzip tar strace mono-complete xterm gettext-base jq netcat procps locales && apt-get clean
11 |
12 | RUN mkdir -p ${GAME_PATH} && \
13 | mkdir -p /data/nexus
14 |
15 | COPY game_data /data/Stardew
16 |
17 | RUN wget -qO dotnet.tar.gz https://download.visualstudio.microsoft.com/download/pr/d4b71fac-a2fd-4516-ac58-100fb09d796a/e79d6c2a8040b59bf49c0d167ae70a7b/dotnet-sdk-5.0.408-linux-arm64.tar.gz &&\
18 | tar -zxf dotnet.tar.gz -C /usr/share/dotnet &&\
19 | rm dotnet.tar.gz &&\
20 | ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet
21 |
22 | RUN wget --user-agent="Mozilla" https://github.com/Pathoschild/SMAPI/releases/download/4.0.8/SMAPI-4.0.8-installer.zip -qO /data/nexus.zip && \
23 | unzip /data/nexus.zip -d /data/nexus/ && \
24 | SMAPI_INSTALLER=$(find /data/nexus -name 'SMAPI*.*Installer' -type f -path "*/SMAPI * installer/internal/linux/*" | head -n 1) && \
25 | /bin/bash -c "SMAPI_NO_TERMINAL=true SMAPI_USE_CURRENT_SHELL=true echo -e '2\n\n' | \"$SMAPI_INSTALLER\" --install --game-path '/data/Stardew/game'" || :
26 |
27 | # Add Mods & Scripts
28 | COPY ["mods/", "/data/Stardew/game/Mods/"]
29 | COPY scripts/ /opt/
30 |
31 | RUN chmod +x /data/Stardew/game/StardewValley && \
32 | chmod -R 777 /data/Stardew/ && \
33 | chown -R 1000:1000 /data/Stardew && \
34 | chmod +x /opt/*.sh
35 |
36 | RUN mkdir /etc/services.d/utils && touch /etc/services.d/app/utils.dep
37 | COPY run /etc/services.d/utils/run
38 | RUN chmod +x /etc/services.d/utils/run
39 |
40 | COPY docker-entrypoint-gog.sh /startapp.sh
41 | RUN chmod +x /startapp.sh
42 |
--------------------------------------------------------------------------------
/docker/Dockerfile-steam:
--------------------------------------------------------------------------------
1 | # Pull base image.
2 | FROM jlesage/baseimage-gui:debian-11
3 |
4 | ARG STEAM_USER
5 | ARG STEAM_PASS
6 | # Steam appId
7 | ARG SRCDS_APPID
8 |
9 | # Set the name of the application.
10 | ENV APP_NAME="StardewValley"
11 | ## Uses a distinct PATH from Stardew/game/ that GOG has.
12 | ENV GAME_PATH="/data/Stardew/game"
13 |
14 | ## lib32gcc-s1 is required for steamcmd
15 | RUN apt-get update && apt-get install -y wget unzip tar strace mono-complete xterm gettext-base jq netcat procps lib32gcc-s1 locales && apt-get clean
16 |
17 | # Game + ModLoader 1.6.2 4.0.1
18 |
19 | RUN mkdir -p ${GAME_PATH} && \
20 | mkdir -p /data/nexus && \
21 | mkdir -p /data/steamcmd
22 |
23 | ## FOR STEAM VERSION
24 | RUN wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz -qO steamcmd.tar.gz && \
25 | tar -xzvf steamcmd.tar.gz -C /data/steamcmd && \
26 | cd /data/steamcmd
27 |
28 | ## Generate en_US.UTF-8 locale require by steam incase missing
29 | RUN sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && \
30 | dpkg-reconfigure --frontend=noninteractive locales
31 |
32 | ## Update steam to prevent steamguard code timeout
33 | RUN /data/steamcmd/steamcmd.sh +quit
34 |
35 | ## Don't set the arg earlier, if you need to rebuild the container
36 | ## it will cache up to here when you change the ENV VAR
37 | ARG STEAM_GUARD
38 |
39 | RUN chown -R 1000:1000 /data && \
40 | export HOME=/data && \
41 | /data/steamcmd/steamcmd.sh +force_install_dir ${GAME_PATH} +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_GUARD} +app_update ${SRCDS_APPID} validate +quit
42 |
43 | RUN mkdir -p /data/.steam/sdk32 && \
44 | cp -v /data/steamcmd/linux32/steamclient.so /data/.steam/sdk32/steamclient.so && \
45 | mkdir -p /data/.steam/sdk64 && \
46 | cp -v /data/steamcmd/linux64/steamclient.so /data/.steam/sdk64/steamclient.so
47 | ## END STEAM VERSION
48 |
49 | RUN wget -qO dotnet.tar.gz https://download.visualstudio.microsoft.com/download/pr/d4b71fac-a2fd-4516-ac58-100fb09d796a/e79d6c2a8040b59bf49c0d167ae70a7b/dotnet-sdk-5.0.408-linux-arm64.tar.gz &&\
50 | tar -zxf dotnet.tar.gz -C /usr/share/dotnet &&\
51 | rm dotnet.tar.gz &&\
52 | ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet
53 |
54 | RUN wget --user-agent="Mozilla" https://github.com/Pathoschild/SMAPI/releases/download/4.1.10/SMAPI-4.1.10-installer.zip -qO /data/nexus.zip && \
55 | unzip /data/nexus.zip -d /data/nexus/ && \
56 | SMAPI_INSTALLER=$(find /data/nexus -name 'SMAPI*.*Installer' -type f -path "*/SMAPI * installer/internal/linux/*" | head -n 1) && \
57 | /bin/bash -c "SMAPI_NO_TERMINAL=true SMAPI_USE_CURRENT_SHELL=true echo -e '2\n\n' | \"$SMAPI_INSTALLER\" --install --game-path \"$GAME_PATH\"" || :
58 |
59 | # Add Mods & Scripts
60 | COPY ["mods/", "$GAME_PATH/Mods/"]
61 | COPY scripts/ /opt/
62 |
63 | RUN chmod +x $GAME_PATH/StardewValley && \
64 | chmod -R 777 $GAME_PATH && \
65 | chown -R 1000:1000 /data/Stardew && \
66 | chmod +x /opt/*.sh
67 |
68 | RUN mkdir /etc/services.d/utils && touch /etc/services.d/app/utils.dep
69 | COPY run /etc/services.d/utils/run
70 | RUN chmod +x /etc/services.d/utils/run
71 |
72 | COPY start.sh $GAME_PATH/start.sh
73 | RUN chmod +x $GAME_PATH/start.sh
74 | COPY docker-entrypoint-steam.sh /startapp.sh
75 | RUN chmod +x /startapp.sh
76 |
--------------------------------------------------------------------------------
/docker/docker-entrypoint-gog.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | export HOME=/config
3 |
4 | for modPath in /data/Stardew/game/Mods/*/
5 | do
6 | mod=$(basename "$modPath")
7 |
8 | # Normalize mod name ot uppercase and only characters, eg. "Always On Server" => ENABLE_ALWAYSONSERVER_MOD
9 | var="ENABLE_$(echo "${mod^^}" | tr -cd '[A-Z]')_MOD"
10 |
11 | # Remove the mod if it's not enabled
12 | if [ "${!var}" != "true" ]; then
13 | echo "Removing ${modPath} (${var}=${!var})"
14 | rm -rf "$modPath"
15 | continue
16 | fi
17 |
18 | if [ -f "${modPath}/config.json.template" ]; then
19 | echo "Configuring ${modPath}config.json"
20 |
21 | # Seed the config.json only if one isn't manually mounted in (or is empty)
22 | if [ "$(cat "${modPath}config.json" 2> /dev/null)" == "" ]; then
23 | envsubst < "${modPath}config.json.template" > "${modPath}config.json"
24 | fi
25 | fi
26 | done
27 |
28 | # Run extra steps for certain mods
29 | /opt/configure-remotecontrol-mod.sh
30 |
31 | /opt/tail-smapi-log.sh &
32 |
33 | # Ready to start!
34 |
35 | export XAUTHORITY=~/.Xauthority
36 | sed -i 's/env TERM=xterm $LAUNCHER "$@"/env SHELL=\/bin\/bash TERM=xterm xterm -e "\/bin\/bash -c $LAUNCHER \"$@\""/' /data/Stardew/game/Stardew\ Valley
37 |
38 | bash -c "/data/Stardew/start.sh"
39 |
40 | sleep 233333333333333
41 |
--------------------------------------------------------------------------------
/docker/docker-entrypoint-steam.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | export HOME=/config
3 |
4 | for modPath in $GAME_PATH/Mods/*/
5 | do
6 | mod=$(basename "$modPath")
7 |
8 | # Normalize mod name ot uppercase and only characters, eg. "Always On Server" => ENABLE_ALWAYSONSERVER_MOD
9 | var="ENABLE_$(echo "${mod^^}" | tr -cd '[A-Z]')_MOD"
10 |
11 | # Remove the mod if it's not enabled
12 | if [ "${!var}" != "true" ]; then
13 | echo "Removing ${modPath} (${var}=${!var})"
14 | rm -rf "$modPath"
15 | continue
16 | fi
17 |
18 | if [ -f "${modPath}/config.json.template" ]; then
19 | echo "Configuring ${modPath}config.json"
20 |
21 | # Seed the config.json only if one isn't manually mounted in (or is empty)
22 | if [ "$(cat "${modPath}config.json" 2> /dev/null)" == "" ]; then
23 | envsubst < "${modPath}config.json.template" > "${modPath}config.json"
24 | fi
25 | fi
26 | done
27 |
28 | # Run extra steps for certain mods
29 | /opt/configure-remotecontrol-mod.sh
30 |
31 | /opt/tail-smapi-log.sh &
32 |
33 | # Ready to start!
34 |
35 | export XAUTHORITY=~/.Xauthority
36 | sed -i 's/env TERM=xterm $LAUNCHER "$@"/env SHELL=\/bin\/bash TERM=xterm xterm -e "\/bin\/bash -c $LAUNCHER \"$@\""/' $GAME_PATH/Stardew\ Valley
37 |
38 | bash -c "$GAME_PATH/start.sh"
39 |
40 | sleep 233333333333333
41 |
--------------------------------------------------------------------------------
/docker/game_data/.gitignore:
--------------------------------------------------------------------------------
1 | # Ignore everything in this directory
2 | .gitignore
3 | # Except this file
4 | !.gitignore
--------------------------------------------------------------------------------
/docker/mods/Always On Server/Always On Server.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/huntercavazos/stardew-multiplayer-docker/646a5d6e26414d62439af29a91e76b66618b74d2/docker/mods/Always On Server/Always On Server.dll
--------------------------------------------------------------------------------
/docker/mods/Always On Server/config.json.template:
--------------------------------------------------------------------------------
1 | {
2 | "serverHotKey": "${ALWAYS_ON_SERVER_HOTKEY}",
3 | "profitmargin": "${ALWAYS_ON_SERVER_PROFIT_MARGIN}",
4 | "upgradeHouse": "${ALWAYS_ON_SERVER_UPGRADE_HOUSE}",
5 | "petname": "${ALWAYS_ON_SERVER_PET_NAME}",
6 | "farmcavechoicemushrooms": "${ALWAYS_ON_SERVER_FARM_CAVE_CHOICE_MUSHROOMS}",
7 | "communitycenterrun": "${ALWAYS_ON_SERVER_COMMUNITY_CENTER_RUN}",
8 | "timeOfDayToSleep": "${ALWAYS_ON_SERVER_TIME_OF_DAY_TO_SLEEP}",
9 | "lockPlayerChests": "${ALWAYS_ON_SERVER_LOCK_PLAYER_CHESTS}",
10 | "clientsCanPause": "${ALWAYS_ON_SERVER_CLIENTS_CAN_PAUSE}",
11 | "copyInviteCodeToClipboard": "${ALWAYS_ON_SERVER_COPY_INVITE_CODE_TO_CLIPBOARD}",
12 | "festivalsOn": "${ALWAYS_ON_SERVER_FESTIVALS_ON}",
13 | "eggHuntCountDownConfig": "${ALWAYS_ON_SERVER_EGG_HUNT_COUNT_DOWN}",
14 | "flowerDanceCountDownConfig": "${ALWAYS_ON_SERVER_FLOWER_DANCE_COUNT_DOWN}",
15 | "luauSoupCountDownConfig": "${ALWAYS_ON_SERVER_LUAU_SOUP_COUNT_DOWN}",
16 | "jellyDanceCountDownConfig": "${ALWAYS_ON_SERVER_JELLY_DANCE_COUNT_DOWN}",
17 | "grangeDisplayCountDownConfig": "${ALWAYS_ON_SERVER_GRANGE_DISPLAY_COUNT_DOWN}",
18 | "iceFishingCountDownConfig": "${ALWAYS_ON_SERVER_ICE_FISHING_COUNT_DOWN}",
19 | "endofdayTimeOut": "${ALWAYS_ON_SERVER_END_OF_DAY_TIMEOUT}",
20 | "fairTimeOut": "${ALWAYS_ON_SERVER_FAIR_TIMEOUT}",
21 | "spiritsEveTimeOut": "${ALWAYS_ON_SERVER_SPIRITS_EVE_TIMEOUT}",
22 | "winterStarTimeOut": "${ALWAYS_ON_SERVER_WINTER_STAR_TIMEOUT}",
23 | "eggFestivalTimeOut": "${ALWAYS_ON_SERVER_EGG_FESTIVAL_TIMEOUT}",
24 | "flowerDanceTimeOut": "${ALWAYS_ON_SERVER_FLOWER_DANCE_TIMEOUT}",
25 | "luauTimeOut": "${ALWAYS_ON_SERVER_LUAU_TIMEOUT}",
26 | "danceOfJelliesTimeOut": "${ALWAYS_ON_SERVER_DANCE_OF_JELLIES_TIMEOUT}",
27 | "festivalOfIceTimeOut": "${ALWAYS_ON_SERVER_FESTIVAL_OF_ICE_TIMEOUT}"
28 | }
--------------------------------------------------------------------------------
/docker/mods/Always On Server/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "Name": "Always On Server",
3 | "Author": "funny-snek & Zuberii",
4 | "Version": "1.20.3-unofficial.2-mikkoperkele",
5 | "Description": "A Headless server mod.",
6 | "UniqueID": "mikko.Always_On_Server",
7 | "EntryDll": "Always On Server.dll",
8 | "MinimumApiVersion": "4.0.0",
9 | "UpdateKeys": [ "Nexus:2677" ]
10 | }
11 |
--------------------------------------------------------------------------------
/docker/mods/AutoLoadGame/AutoLoadGame.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/huntercavazos/stardew-multiplayer-docker/646a5d6e26414d62439af29a91e76b66618b74d2/docker/mods/AutoLoadGame/AutoLoadGame.dll
--------------------------------------------------------------------------------
/docker/mods/AutoLoadGame/AutoLoadGame.pdb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/huntercavazos/stardew-multiplayer-docker/646a5d6e26414d62439af29a91e76b66618b74d2/docker/mods/AutoLoadGame/AutoLoadGame.pdb
--------------------------------------------------------------------------------
/docker/mods/AutoLoadGame/config.json.template:
--------------------------------------------------------------------------------
1 | {
2 | "LastFileLoaded": "${AUTO_LOAD_GAME_LAST_FILE_LOADED}",
3 | "LoadIntoMultiplayer": "${AUTO_LOAD_GAME_LOAD_INTO_MULTIPLAYER}",
4 | "ForgetLastFileOnTitle": "${AUTO_LOAD_GAME_FORGET_LAST_FILE_ON_TITLE}"
5 | }
--------------------------------------------------------------------------------
/docker/mods/AutoLoadGame/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "Name": "Auto Load Game",
3 | "Author": "Caraxian, yatsukiko",
4 | "Version": "1.0.3",
5 | "Description": "Automatically load a save file when starting.",
6 | "UniqueID": "caraxian.AutoLoadGame",
7 | "EntryDll": "AutoLoadGame.dll",
8 | "MinimumApiVersion": "4.0.0",
9 | "UpdateKeys": [ "Nexus:2509" ]
10 | }
11 |
--------------------------------------------------------------------------------
/docker/mods/ChatCommands/ChatCommands.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/huntercavazos/stardew-multiplayer-docker/646a5d6e26414d62439af29a91e76b66618b74d2/docker/mods/ChatCommands/ChatCommands.dll
--------------------------------------------------------------------------------
/docker/mods/ChatCommands/ChatCommands.pdb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/huntercavazos/stardew-multiplayer-docker/646a5d6e26414d62439af29a91e76b66618b74d2/docker/mods/ChatCommands/ChatCommands.pdb
--------------------------------------------------------------------------------
/docker/mods/ChatCommands/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "Name": "Chat Commands",
3 | "Author": "Cat",
4 | "Version": "1.14.0",
5 | "Description": "Lets you run SMAPI commands from the chat window!",
6 | "UniqueID": "cat.chatcommands",
7 | "EntryDll": "ChatCommands.dll",
8 | "MinimumApiVersion": "3.0.0",
9 | "UpdateKeys": [ "Nexus:2092" ]
10 | }
11 |
--------------------------------------------------------------------------------
/docker/mods/Crops Anytime Anywhere/CropsAnytimeAnywhere.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/huntercavazos/stardew-multiplayer-docker/646a5d6e26414d62439af29a91e76b66618b74d2/docker/mods/Crops Anytime Anywhere/CropsAnytimeAnywhere.dll
--------------------------------------------------------------------------------
/docker/mods/Crops Anytime Anywhere/assets/data.json:
--------------------------------------------------------------------------------
1 | {
2 | /**
3 | * The tile types to use for back tile IDs which don't have a type property and aren't marked
4 | * diggable. Indexed by tilesheet image source (without path or season) and type.
5 | */
6 | "FallbackTileTypes": {
7 | "beach": {
8 | "Dirt": [
9 | 168,
10 | 304,
11 | 305,
12 | 321,
13 | 322
14 | ]
15 | },
16 |
17 | "outdoorsTileSheet": {
18 | "Grass": [
19 | 152,
20 | 201,
21 | 204,
22 | 225,
23 | 228,
24 | 229,
25 | 230,
26 | 250,
27 | 251,
28 | 253,
29 | 254,
30 | 261,
31 | 275,
32 | 276,
33 | 277,
34 | 278,
35 | 279,
36 | 281,
37 | 286,
38 | 300,
39 | 306,
40 | 311,
41 | 331,
42 | 357,
43 | 400,
44 | 406,
45 | 407,
46 | 420,
47 | 421,
48 | 422,
49 | 423,
50 | 449,
51 | 567,
52 | 568,
53 | 569,
54 | 570,
55 | 592,
56 | 593,
57 | 594,
58 | 595,
59 | 619,
60 | 655,
61 | 679,
62 | 682,
63 | 683,
64 | 684,
65 | 705,
66 | 1092,
67 | 1093,
68 | 1094,
69 | 1095,
70 | 1096,
71 | 1119,
72 | 1120,
73 | 1121
74 | ],
75 | "Dirt": [
76 | 153,
77 | 178,
78 | 202,
79 | 252,
80 | 433,
81 | 463,
82 | 474,
83 | 488,
84 | 513,
85 | 536,
86 | 538,
87 | 586,
88 | 590,
89 | 611,
90 | 613,
91 | 615,
92 | 617,
93 | 620,
94 | 630,
95 | 631,
96 | 632
97 | ],
98 | "Stone": [
99 | 813,
100 | 947,
101 | 948,
102 | 949,
103 | 972,
104 | 973,
105 | 974,
106 | 998,
107 | 999
108 | ]
109 | }
110 | }
111 | }
112 |
--------------------------------------------------------------------------------
/docker/mods/Crops Anytime Anywhere/config.json.template:
--------------------------------------------------------------------------------
1 | {
2 | "EnableInSeasons": {
3 | "Spring": ${CROPS_ANYTIME_ANYWHERE_ENABLE_IN_SEASONS_SPRING},
4 | "Summer": ${CROPS_ANYTIME_ANYWHERE_ENABLE_IN_SEASONS_SUMMER},
5 | "Fall": ${CROPS_ANYTIME_ANYWHERE_ENABLE_IN_SEASONS_FALL},
6 | "Winter": ${CROPS_ANYTIME_ANYWHERE_ENABLE_IN_SEASONS_WINTER}
7 | },
8 | "FarmAnyLocation": ${CROPS_ANYTIME_ANYWHERE_FARM_ANY_LOCATION},
9 | "ForceTillable": {
10 | "Dirt": ${CROPS_ANYTIME_ANYWHERE_FORCE_TILLABLE_DIRT},
11 | "Grass": ${CROPS_ANYTIME_ANYWHERE_FORCE_TILLABLE_GRASS},
12 | "Stone": ${CROPS_ANYTIME_ANYWHERE_FORCE_TILLABLE_STONE},
13 | "Other": ${CROPS_ANYTIME_ANYWHERE_FORCE_TILLABLE_OTHER}
14 | }
15 | }
--------------------------------------------------------------------------------
/docker/mods/Crops Anytime Anywhere/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "Name": "Crops Anytime Anywhere",
3 | "Author": "Pathoschild",
4 | "Version": "1.4.8",
5 | "MinimumApiVersion": "4.0.0",
6 | "Description": "Lets you grow crops in any season and location (configurable).",
7 | "UniqueID": "Pathoschild.CropsAnytimeAnywhere",
8 | "EntryDll": "CropsAnytimeAnywhere.dll",
9 | "UpdateKeys": [ "Nexus:3000" ]
10 | }
11 |
--------------------------------------------------------------------------------
/docker/mods/FriendsForever/FriendsForever.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/huntercavazos/stardew-multiplayer-docker/646a5d6e26414d62439af29a91e76b66618b74d2/docker/mods/FriendsForever/FriendsForever.dll
--------------------------------------------------------------------------------
/docker/mods/FriendsForever/FriendsForever.pdb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/huntercavazos/stardew-multiplayer-docker/646a5d6e26414d62439af29a91e76b66618b74d2/docker/mods/FriendsForever/FriendsForever.pdb
--------------------------------------------------------------------------------
/docker/mods/FriendsForever/config.json.template:
--------------------------------------------------------------------------------
1 | {
2 | "AffectSpouses": ${FRIENDS_FOREVER_AFFECT_SPOUSE},
3 | "AffectDates": ${FRIENDS_FOREVER_AFFECT_DATES},
4 | "AffectEveryoneElse": ${FRIENDS_FOREVER_AFFECT_EVERYONE_ELSE},
5 | "AffectAnimals": ${FRIENDS_FOREVER_AFFECT_ANIMALS}
6 | }
--------------------------------------------------------------------------------
/docker/mods/FriendsForever/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "Name": "Friends Forever",
3 | "Author": "Isaac S.",
4 | "Version": "1.2.3",
5 | "Description": "Makes it so friendship levels never decay!",
6 | "UniqueID": "IsaacS.FriendsForever",
7 | "EntryDll": "FriendsForever.dll",
8 | "UpdateKeys": [ "Nexus:1738" ],
9 | "MinimumApiVersion": "2.10.2",
10 | "Dependencies": []
11 | }
12 |
--------------------------------------------------------------------------------
/docker/mods/NoFenceDecay/NoFenceDecay.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/huntercavazos/stardew-multiplayer-docker/646a5d6e26414d62439af29a91e76b66618b74d2/docker/mods/NoFenceDecay/NoFenceDecay.dll
--------------------------------------------------------------------------------
/docker/mods/NoFenceDecay/NoFenceDecay.pdb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/huntercavazos/stardew-multiplayer-docker/646a5d6e26414d62439af29a91e76b66618b74d2/docker/mods/NoFenceDecay/NoFenceDecay.pdb
--------------------------------------------------------------------------------
/docker/mods/NoFenceDecay/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "Name": "No Fence Decay",
3 | "Author": "Cat",
4 | "Version": "1.5.0",
5 | "Description": "Makes all fences and gates last forever.",
6 | "UniqueID": "cat.nofencedecay",
7 | "EntryDll": "NoFenceDecay.dll",
8 | "MinimumApiVersion": "2.9.0",
9 | "UpdateKeys": [ "Nexus:1180" ]
10 | }
11 |
--------------------------------------------------------------------------------
/docker/mods/NonDestructiveNPCs/NonDestructiveNPCs.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/huntercavazos/stardew-multiplayer-docker/646a5d6e26414d62439af29a91e76b66618b74d2/docker/mods/NonDestructiveNPCs/NonDestructiveNPCs.dll
--------------------------------------------------------------------------------
/docker/mods/NonDestructiveNPCs/NonDestructiveNPCs.pdb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/huntercavazos/stardew-multiplayer-docker/646a5d6e26414d62439af29a91e76b66618b74d2/docker/mods/NonDestructiveNPCs/NonDestructiveNPCs.pdb
--------------------------------------------------------------------------------
/docker/mods/NonDestructiveNPCs/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "Name": "Non Destructive NPCs",
3 | "Author": "Madara Uchiha",
4 | "Version": "1.0.0",
5 | "Description": "NPCs no longer destroy placed objects in their paths. They would instead pass through them.",
6 | "UniqueID": "MadaraUchiha.NonDestructiveNPCs",
7 | "EntryDll": "NonDestructiveNPCs.dll",
8 | "MinimumApiVersion": "3.1.0",
9 | "UpdateKeys": [ "Nexus:5176" ]
10 | }
--------------------------------------------------------------------------------
/docker/mods/TimeSpeed/TimeSpeed.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/huntercavazos/stardew-multiplayer-docker/646a5d6e26414d62439af29a91e76b66618b74d2/docker/mods/TimeSpeed/TimeSpeed.dll
--------------------------------------------------------------------------------
/docker/mods/TimeSpeed/config.json.template:
--------------------------------------------------------------------------------
1 | {
2 | "DefaultTickLength": ${TIME_SPEED_DEFAULT_TICK_LENGTH},
3 | "TickLengthByLocation": {
4 | "Indoors": ${TIME_SPEED_TICK_LENGTH_BY_LOCATION_INDOORS},
5 | "Outdoors": ${TIME_SPEED_TICK_LENGTH_BY_LOCATION_OUTDOORS},
6 | "Mine": ${TIME_SPEED_TICK_LENGTH_BY_LOCATION_MINE}
7 | },
8 |
9 | "EnableOnFestivalDays": ${TIME_SPEED_ENABLE_ON_FESTIVAL_DAYS},
10 | "FreezeTimeAt": ${TIME_SPEED_FREEZE_TIME_AT},
11 | "LocationNotify": ${TIME_SPEED_LOCATION_NOTIFY},
12 |
13 | "Keys": {
14 | "FreezeTime": "${TIME_SPEED_KEYS_FREEZE_TIME}",
15 | "IncreaseTickInterval": "${TIME_SPEED_KEYS_INCREASE_TICK_INTERVAL}",
16 | "DecreaseTickInterval": "${TIME_SPEED_KEYS_DECREASE_TICK_INTERVAL}",
17 | "ReloadConfig": "${TIME_SPEED_KEYS_RELOAD_CONFIG}"
18 | }
19 | }
--------------------------------------------------------------------------------
/docker/mods/TimeSpeed/i18n/de.json:
--------------------------------------------------------------------------------
1 | {
2 | /*********
3 | ** In-game messages
4 | *********/
5 | // changed manually
6 | "message.config-reloaded": "Die Zeit fühlt sich jetzt anders an...",
7 | "message.speed-changed": "10 Minuten fühlen sich nun wie {{seconds}} Sekunden an.",
8 | "message.time-stopped": "Hey, du hast die Zeit gestoppt!!",
9 | "message.time-resumed": "Die Zeit fühlt sich wieder normal an...",
10 |
11 | // changed based on time
12 | "message.on-time-change.time-stopped": "Die Zeit bleibt plötzlich stehen...",
13 |
14 | // changed based on location
15 | "message.on-location-change.time-stopped-globally": "Sieht so aus, als wäre die Zeit überall stehen geblieben...",
16 | "message.on-location-change.time-stopped-here": "Sieht so aus, als ob die Zeit hier stehen geblieben ist...",
17 | "message.on-location-change.time-speed-here": "10 Minuten fühlen sich wie {{seconds}} Sekunden hier an...",
18 |
19 |
20 | /*********
21 | ** Generic Mod Config Menu UI
22 | *********/
23 | // general options
24 | "config.general-options": "Allgemeine Optionen",
25 | "config.enable-on-festival-days.name": "Aktiviert an Festivaltagen",
26 | "config.enable-on-festival-days.desc": "Ob die Zeit an Festivaltagen geändert werden soll.",
27 | "config.location-notify.name": "Zeitinformationen bei Kartenwechsel",
28 | "config.location-notify.desc": "Zeigt eine Nachricht welche Zeiteinstellungen auf der aktuellen Karte vorherrschen.",
29 |
30 | // seconds per minute section
31 | "config.seconds-per-minute": "Zeit Optionen",
32 | "config.indoors-speed.name": "Drinnen",
33 | "config.indoors-speed.desc": "Benötigte reale Sekunden pro Ingame Minute in Innenräumen.",
34 | "config.outdoors-speed.name": "Draussen",
35 | "config.outdoors-speed.desc": "Benötigte reale Sekunden pro Ingame Minute in Aussenräumen.",
36 | "config.mine-speed.name": "Mine",
37 | "config.mine-speed.desc": "Benötigte reale Sekunden pro Ingame Minute in der Mine.",
38 | "config.skull-cavern-speed.name": "Schädelhöhle",
39 | "config.skull-cavern-speed.desc": "Benötigte reale Sekunden pro Ingame Minute in der Schädelhöhle.",
40 | "config.volcano-dungeon-speed.name": "Vulkan-Dungeon",
41 | "config.volcano-dungeon-speed.desc": "Benötigte reale Sekunden pro Ingame Minute im Vulkan-Dungeon.",
42 |
43 | // freeze time section
44 | "config.freeze-time": "Zeit Einfrier Optionen",
45 | "config.anywhere-at-time.name": "Zeit einfrieren bei",
46 | "config.anywhere-at-time.desc": "Die Zeit, zu der die Zeit überall eingefroren werden soll. (6 Uhr morgens) 600 bis 2400 (Mitternacht) und 2600 (2 Uhr morgens). Du kannst es auf 2600 einstellen, um es zu deaktivieren.",
47 | "config.freeze-time-indoors.name": "Drinnen",
48 | "config.freeze-time-indoors.desc": "Ob die Zeit in Häusern eingefroren werden soll.",
49 | "config.freeze-time-outdoors.name": "Draussen",
50 | "config.freeze-time-outdoors.desc": "Ob die Zeit draussen eingefroren wird.",
51 | "config.freeze-time-mine.name": "Mine",
52 | "config.freeze-time-mine.desc": "Ob die Zeit in der Mine eingefroren wird.",
53 | "config.freeze-time-skull-cavern.name": "Schädelhöhle",
54 | "config.freeze-time-skull-cavern.desc": "Ob die Zeit in der Schädelhöhle eingefroren wird.",
55 | "config.freeze-time-volcano-dungeon.name": "Vulkan-Dungeon",
56 | "config.freeze-time-volcano-dungeon.desc": "Ob die Zeit im Vulkan-Dungeon eingefroren wird.",
57 | "config.freeze-time-freeze-names.name": "Eigene Orte Zeit einfrieren",
58 | "config.freeze-time-freeze-names.desc": "Die Namen bestimmter Orte, an denen die Zeit eingefroren werden soll. Standortnamen können im Spiel mit dem Debug-Modus-Mod angezeigt werden. Du kannst mehrere mit Kommas auflisten.",
59 | "config.freeze-time-dont-freeze-names.name": "Bestimmte Orte Zeit nicht einfrieren",
60 | "config.freeze-time-dont-freeze-names.desc": "Die Namen bestimmter Orte, an denen die Zeit nicht eingefroren werden soll, unabhängig von den vorherigen Einstellungen. Standortnamen können im Spiel mit dem Debug-Modus-Mod angezeigt werden. Du kannst mehrere mit Kommas auflisten.",
61 |
62 | // controls
63 | "config.controls": "Steuerungs Optionen",
64 | "config.freeze-time-key.name": "Zeit einfrieren",
65 | "config.freeze-time-key.desc": "Mit dieser Taste kann die Zeit angehalten und wieder angeschalten werden. Bei einem wechsel des Ortes, mit anderer Zeit Einstellung, wird die Zeit automatisch wieder eingeschalten. (z.b Farm->Mine)",
66 | "config.slow-time-key.name": "Zeit verlangsamen",
67 | "config.slow-time-key.desc": "Mit dieser Taste kann die Zeit verlangsamt werden. Strg + Taste für 100 Sekunden, Umschalt + Taste für 10 Sekunden, Nur Taste für 1 Sekunde oder Alt + Taste für 0.1 Sekunden.",
68 | "config.speed-up-time-key.name": "Zeit beschleunigen",
69 | "config.speed-up-time-key.desc": "Mit dieser Taste kann die Zeit beschleunigt werden. Strg + Taste für 100 Sekunden, Umschalt + Taste für 10 Sekunden, Nur Taste für 1 Sekunde oder Alt + Taste für 0.1 Sekunden.",
70 | "config.reload-key.name": "Konfiguration neuladen",
71 | "config.reload-key.desc": "Mit dieser Taste wird die Konfiguration sofort neu eingelesen. Die Zeit bleibt eingefroren, wenn sie per Taste eingefroren wurde."
72 | }
73 |
--------------------------------------------------------------------------------
/docker/mods/TimeSpeed/i18n/default.json:
--------------------------------------------------------------------------------
1 | {
2 | /*********
3 | ** In-game messages
4 | *********/
5 | // changed manually
6 | "message.config-reloaded": "Time feels differently now...",
7 | "message.speed-changed": "10 minutes feels like {{seconds}} seconds.",
8 | "message.time-stopped": "Hey, you stopped the time!",
9 | "message.time-resumed": "Time feels as usual now...",
10 |
11 | // changed based on time
12 | "message.on-time-change.time-stopped": "Time suddenly stops...",
13 |
14 | // changed based on location
15 | "message.on-location-change.time-stopped-globally": "Looks like time stopped everywhere...",
16 | "message.on-location-change.time-stopped-here": "It feels like time is frozen here...",
17 | "message.on-location-change.time-speed-here": "10 minutes feels more like {{seconds}} seconds here...",
18 |
19 |
20 | /*********
21 | ** Generic Mod Config Menu UI
22 | *********/
23 | // general options
24 | "config.general-options": "General options",
25 | "config.enable-on-festival-days.name": "Enable on festival days",
26 | "config.enable-on-festival-days.desc": "Whether to change tick length on festival days.",
27 | "config.location-notify.name": "Show time info on warp",
28 | "config.location-notify.desc": "Whether to show a message about the time settings when you enter a location.",
29 |
30 | // seconds per minute section
31 | "config.seconds-per-minute": "Seconds per minute",
32 | "config.indoors-speed.name": "Indoors",
33 | "config.indoors-speed.desc": "The number of seconds per in-game minute while indoors.",
34 | "config.outdoors-speed.name": "Outdoors",
35 | "config.outdoors-speed.desc": "The number of seconds per in-game minute while outdoors.",
36 | "config.mine-speed.name": "Mines",
37 | "config.mine-speed.desc": "The number of seconds per in-game minute while in the mines.",
38 | "config.skull-cavern-speed.name": "Skull Cavern",
39 | "config.skull-cavern-speed.desc": "The number of seconds per in-game minute while in the Skull Cavern.",
40 | "config.volcano-dungeon-speed.name": "Volcano Dungeon",
41 | "config.volcano-dungeon-speed.desc": "The number of seconds per in-game minute while in the Volcano Dungeon.",
42 |
43 | // freeze time section
44 | "config.freeze-time": "Freeze time",
45 | "config.anywhere-at-time.name": "Freeze time at",
46 | "config.anywhere-at-time.desc": "The time at which to freeze time everywhere. This should be 24-hour military time, from 600 (6am) to 2400 (midnight) and 2600 (2am). You can set it to 2600 to disable it.",
47 | "config.freeze-time-indoors.name": "Indoors",
48 | "config.freeze-time-indoors.desc": "Whether to freeze time while indoors.",
49 | "config.freeze-time-outdoors.name": "Outdoors",
50 | "config.freeze-time-outdoors.desc": "Whether to freeze time while outdoors.",
51 | "config.freeze-time-mine.name": "Mines",
52 | "config.freeze-time-mine.desc": "Whether to freeze time while in the mines.",
53 | "config.freeze-time-skull-cavern.name": "Skull Cavern",
54 | "config.freeze-time-skull-cavern.desc": "Whether to freeze time while in the Skull Cavern.",
55 | "config.freeze-time-volcano-dungeon.name": "Volcano Dungeon",
56 | "config.freeze-time-volcano-dungeon.desc": "Whether to freeze time while in the Volcano Dungeon.",
57 | "config.freeze-time-freeze-names.name": "Freeze location names",
58 | "config.freeze-time-freeze-names.desc": "The names of specific locations in which to freeze time. Location names can be seen in-game using the Debug Mode mod. You can list multiple with commas.",
59 | "config.freeze-time-dont-freeze-names.name": "Don't freeze location names",
60 | "config.freeze-time-dont-freeze-names.desc": "The names of specific locations in which time shouldn't be frozen, regardless of the previous settings. Location names can be seen in-game using the Debug Mode mod. You can list multiple with commas.",
61 |
62 | // controls
63 | "config.controls": "Controls",
64 | "config.freeze-time-key.name": "Freeze time",
65 | "config.freeze-time-key.desc": "The key which freezes or unfreezes time. Freezing time will stay in effect until you unfreeze it; unfreezing time will stay in effect until you enter a new location with time settings.",
66 | "config.slow-time-key.name": "Slow time",
67 | "config.slow-time-key.desc": "The key which slows down time by one second per 10-game-minutes. Combine with Control for 100 seconds, Shift for 10 seconds, or Alt for 0.1 seconds.",
68 | "config.speed-up-time-key.name": "Speed up time",
69 | "config.speed-up-time-key.desc": "The key which speeds up time by one second per 10-game-minutes. Combine with Control for 100 seconds, Shift for 10 seconds, or Alt for 0.1 seconds.",
70 | "config.reload-key.name": "Reload config",
71 | "config.reload-key.desc": "The key which reloads all values from the config file and applies them immediately. Time will stay frozen if it was frozen via hotkey."
72 | }
73 |
--------------------------------------------------------------------------------
/docker/mods/TimeSpeed/i18n/es.json:
--------------------------------------------------------------------------------
1 | {
2 | /*********
3 | ** In-game messages
4 | *********/
5 | // changed manually
6 | "message.config-reloaded": "El tiempo pasa diferente ahora...",
7 | "message.speed-changed": "10 minutos serán {{seconds}} segundos.",
8 | "message.time-stopped": "¡Eh, has parado el tiempo!",
9 | "message.time-resumed": "El tiempo pasa como de costumbre ahora...",
10 |
11 | // changed based on time
12 | "message.on-time-change.time-stopped": "El tiempo se detiene de repente...",
13 |
14 | // changed based on location
15 | "message.on-location-change.time-stopped-globally": "Parece que el tiempo se detuvo en todas partes...",
16 | "message.on-location-change.time-stopped-here": "Parece que el tiempo está congelado aquí...",
17 | "message.on-location-change.time-speed-here": "10 minutos serán {{seconds}} segundos aquí...",
18 |
19 |
20 | /*********
21 | ** Generic Mod Config Menu UI
22 | *********/
23 | // general options
24 | "config.general-options": "Opciones generales",
25 | "config.enable-on-festival-days.name": "Habilitar en días de fiesta",
26 | "config.enable-on-festival-days.desc": "Si se cambia la longitud de ticks en los días de fiesta.",
27 | "config.location-notify.name": "Mostrar información sobre el tiempo en la urdimbre",
28 | "config.location-notify.desc": "Si se muestra un mensaje sobre la configuración de la hora al entrar en una ubicación.",
29 |
30 | // seconds per minute section
31 | "config.seconds-per-minute": "Segundos por minuto",
32 | "config.indoors-speed.name": "En interiores",
33 | "config.indoors-speed.desc": "El número de segundos por minuto de juego en interiores.",
34 | "config.outdoors-speed.name": "En exteriores",
35 | "config.outdoors-speed.desc": "El número de segundos por minuto de juego en el exterior.",
36 | "config.mine-speed.name": "Minas",
37 | "config.mine-speed.desc": "El número de segundos por minuto de juego mientras se está en las minas.",
38 | "config.skull-cavern-speed.name": "Caverna de la Calavera",
39 | "config.skull-cavern-speed.desc": "El número de segundos por minuto de juego mientras estás en la Caverna de la Calavera.",
40 | "config.volcano-dungeon-speed.name": "Mazmorra del Volcán",
41 | "config.volcano-dungeon-speed.desc": "El número de segundos por minuto de juego mientras estás en la Mazmorra del Volcán.",
42 |
43 | // freeze time section
44 | "config.freeze-time": "Tiempo de congelación",
45 | "config.anywhere-at-time.name": "Tiempo de congelación en",
46 | "config.anywhere-at-time.desc": "La hora a la que se debe congelar el tiempo en todas partes. Debe ser la hora militar de 24 horas, desde las 600 (6am) hasta las 2400 (medianoche) y 2600 (2am). Puedes ponerlo en 2600 para desactivarlo.",
47 | "config.freeze-time-indoors.name": "En interiores",
48 | "config.freeze-time-indoors.desc": "Si congelar el tiempo en el interior.",
49 | "config.freeze-time-outdoors.name": "En exteriores",
50 | "config.freeze-time-outdoors.desc": "Si congelar el tiempo en el exterior.",
51 | "config.freeze-time-mine.name": "Minas",
52 | "config.freeze-time-mine.desc": "Si se congela el tiempo mientras se está en las minas.",
53 | "config.freeze-time-skull-cavern.name": "Caverna de la Calavera",
54 | "config.freeze-time-skull-cavern.desc": "Si se congela el tiempo mientras se está en la Caverna de la Calavera.",
55 | "config.freeze-time-volcano-dungeon.name": "Mazmorra del Volcán",
56 | "config.freeze-time-volcano-dungeon.desc": "Si se puede congelar el tiempo mientras se está en la mazmorra del volcán.",
57 | "config.freeze-time-freeze-names.name": "Congelar lugares especificos",
58 | "config.freeze-time-freeze-names.desc": "Los nombres de lugares específicos en los que congelar el tiempo. Los nombres de las localizaciones se pueden ver en el juego usando el mod del Modo Depuración. Se pueden enumerar varios con comas.",
59 | "config.freeze-time-dont-freeze-names.name": "No congelar lugares especificos",
60 | "config.freeze-time-dont-freeze-names.desc": "Los nombres de las localizaciones específicas en las que el tiempo no debe congelarse, independientemente de los ajustes anteriores. Los nombres de las localizaciones se pueden ver en el juego usando el mod del Modo Depuración. Se pueden enumerar varios con comas.",
61 |
62 | // controls
63 | "config.controls": "Controles",
64 | "config.freeze-time-key.name": "Tiempo de congelamiento",
65 | "config.freeze-time-key.desc": "La tecla que congela o descongela la hora. La congelación de la hora permanecerá en vigor hasta que la descongeles; la descongelación de la hora permanecerá en vigor hasta que introduzcas una nueva ubicación con ajustes de hora.",
66 | "config.slow-time-key.name": "Ralentizar tiempo",
67 | "config.slow-time-key.desc": "La tecla que ralentiza el tiempo un segundo por cada 10 minutos de juego. Combina con Control durante 100 segundos, Mayúsculas durante 10 segundos o Alt durante 0,1 segundos.",
68 | "config.speed-up-time-key.name": "Acelerar tiempo",
69 | "config.speed-up-time-key.desc": "La tecla que acelera el tiempo en un segundo por cada 10 minutos de juego. Combina con Control durante 100 segundos, Mayúsculas durante 10 segundos o Alt durante 0,1 segundos.",
70 | "config.reload-key.name": "Recargar la configuración",
71 | "config.reload-key.desc": "Ta tecla que recarga todos los valores del archivo de configuración y los aplica inmediatamente. El tiempo se mantendrá congelado si se congeló mediante la tecla de acceso directo."
72 | }
73 |
--------------------------------------------------------------------------------
/docker/mods/TimeSpeed/i18n/fr.json:
--------------------------------------------------------------------------------
1 | {
2 | /*********
3 | ** In-game messages
4 | *********/
5 | // changed manually
6 | "message.config-reloaded": "Le temps s'écoule désormais autrement...",
7 | "message.speed-changed": "10 minutes semblent se passer en {{seconds}} secondes.",
8 | "message.time-stopped": "Hé, t'as arrêté le temps !",
9 | "message.time-resumed": "Le temps reprend son cours...",
10 |
11 | // changed based on time
12 | "message.on-time-change.time-stopped": "Le temps s'arrête soudainement...",
13 |
14 | // changed based on location
15 | "message.on-location-change.time-stopped-globally": "Le temps semble arrêté partout...",
16 | "message.on-location-change.time-stopped-here": "Le temps semble figé ici...",
17 | "message.on-location-change.time-speed-here": "Ici, 10 minutes semblent se passer en {{seconds}} secondes.",
18 |
19 |
20 | /*********
21 | ** Generic Mod Config Menu UI
22 | *********/
23 | // general options
24 | "config.general-options": "Options générales",
25 | "config.enable-on-festival-days.name": "Activer les jours de fête",
26 | "config.enable-on-festival-days.desc": "Si l'écoulement du temps doit être modifiée les jours de fête.",
27 | "config.location-notify.name": "Rappeler l'état sur transfert",
28 | "config.location-notify.desc": "Si un message à propos des paramètres du temps doit être affiché lorsque tu arrives dans un nouvel endroit.",
29 |
30 | // seconds per minute section
31 | "config.seconds-per-minute": "Secondes par minute",
32 | "config.indoors-speed.name": "À l'intérieur",
33 | "config.indoors-speed.desc": "Le nombre de secondes par minute pour le jeu lorsqu'on est à l'intérieur.",
34 | "config.outdoors-speed.name": "À l'extérieur",
35 | "config.outdoors-speed.desc": "Le nombre de secondes par minute pour le jeu lorsqu'on est à l'extérieur.",
36 | "config.mine-speed.name": "Mines",
37 | "config.mine-speed.desc": "Le nombre de secondes par minute pour le jeu lorsqu'on est dans les mines.",
38 | "config.skull-cavern-speed.name": "Caverne du crâne",
39 | "config.skull-cavern-speed.desc": "Le nombre de secondes par minute pour le jeu lorsqu'on est dans la caverne du crâne.",
40 | "config.volcano-dungeon-speed.name": "Donjon du volcan",
41 | "config.volcano-dungeon-speed.desc": "Le nombre de secondes par minute pour le jeu lorsqu'on est dans le donjon du volcan.",
42 |
43 | // freeze time section
44 | "config.freeze-time": "Figer le temps",
45 | "config.anywhere-at-time.name": "Figer le temps à",
46 | "config.anywhere-at-time.desc": "L'heure à laquelle le temps sera figé partout. Exprimé en temps militaire au format 24 heures, de 600 (6h00) à 2400 (minuit) et 2600 (2h00). Assigner à 2600 pour désactiver.",
47 | "config.freeze-time-indoors.name": "À l'intérieur",
48 | "config.freeze-time-indoors.desc": "S'il faut figer le temps à l'intérieur.",
49 | "config.freeze-time-outdoors.name": "À l'extérieur",
50 | "config.freeze-time-outdoors.desc": "S'il faut figer le temps à l'extérieur.",
51 | "config.freeze-time-mine.name": "Mines",
52 | "config.freeze-time-mine.desc": "S'il faut figer le temps dans les mines.",
53 | "config.freeze-time-skull-cavern.name": "Caverne du crâne",
54 | "config.freeze-time-skull-cavern.desc": "S'il faut figer le temps dans la caverne du crâne.",
55 | "config.freeze-time-volcano-dungeon.name": "Donjon du volcan",
56 | "config.freeze-time-volcano-dungeon.desc": "S'il faut figer le temps dans le donjon du volcan.",
57 | "config.freeze-time-freeze-names.name": "Nom des endroits figés",
58 | "config.freeze-time-freeze-names.desc": "Les noms d'endroits où le temps devrait être figé. Les noms des endroits peuvent être consultés intrajeu en utilisant le mod Debug Mode. Plusieurs endroits peuvent être spécifiés en les séparant par des virgules.",
59 | "config.freeze-time-dont-freeze-names.name": "Nom des endroits non figés",
60 | "config.freeze-time-dont-freeze-names.desc": "Les noms d'endroits où le temps ne devrait pas être figé, en dépit des paramètres précédents. Les noms des endroits peuvent être consultés intrajeu en utilisant le mod Debug Mode. Plusieurs endroits peuvent être spécifiés en les séparant par des virgules.",
61 |
62 | // controls
63 | "config.controls": "Commandes",
64 | "config.freeze-time-key.name": "Figer le temps",
65 | "config.freeze-time-key.desc": "La touche qui fige ou défige le temps. Le figeage du temps restera en vigueur jusqu'à ce que tu le défiges. Le défigeage du temps restera en vigueur jusqu'à ce que tu arrives dans un nouvel endroit où l'écoulement du temps est paramétré.",
66 | "config.slow-time-key.name": "Ralentir le temps",
67 | "config.slow-time-key.desc": "La touche qui ralentit le temps d'une seconde pour 10 minutes dans le jeu. Combiner avec Ctrl pour 100 secondes, Maj pour 10 secondes, ou Alt pour 0,1 secondes.",
68 | "config.speed-up-time-key.name": "Accélérer le temps",
69 | "config.speed-up-time-key.desc": "La touche qui accélère le temps d'une seconde pour 10 minutes dans le jeu. Combiner avec Ctrl pour 100 secondes, Maj pour 10 secondes, ou Alt pour 0,1 secondes.",
70 | "config.reload-key.name": "Recharger la configuration",
71 | "config.reload-key.desc": "La touche qui recharge tous les paramètres depuis le fichier de configuration et qui les applique immédiatement. Le temps restera figé s'il était figé précédemment via le raccourci."
72 | }
73 |
--------------------------------------------------------------------------------
/docker/mods/TimeSpeed/i18n/it.json:
--------------------------------------------------------------------------------
1 | {
2 | /*********
3 | ** In-game messages
4 | *********/
5 | // changed manually
6 | "message.config-reloaded": "Ora il tempo è cambiato...",
7 | "message.speed-changed": "10 minuti sembrano {{seconds}} secondi",
8 | "message.time-stopped": "Hey, hai fermato il tempo!",
9 | "message.time-resumed": "Ora Il tempo è come sempre...",
10 |
11 | // changed based on time
12 | "message.on-time-change.time-stopped": "Il tempo si ferma subito...",
13 |
14 | // changed based on location
15 | "message.on-location-change.time-stopped-globally": "Il tempo si è fermato dappertutto...",
16 | "message.on-location-change.time-stopped-here": "Qui il tempo si è fermato...",
17 | "message.on-location-change.time-speed-here": "Qui 10 minuti sembrano come {{secondi}} secondi...",
18 |
19 |
20 | /*********
21 | ** Generic Mod Config Menu UI
22 | *********/
23 | // general options
24 | "config.general-options": "Opzioni generali",
25 | "config.enable-on-festival-days.name": "Attiva nei giorni dei festival",
26 | "config.enable-on-festival-days.desc": "Per modificare il tempo nei giorni dei festival.",
27 | "config.location-notify.name": "Mostra informazioni sul tempo sul portale",
28 | "config.location-notify.desc": "Per visualizzare un messaggio sulle impostazioni del tempo quando si entra in una località.",
29 |
30 | // seconds per minute section
31 | "config.seconds-per-minute": "Secondi per minuti",
32 | "config.indoors-speed.name": "Negli interni",
33 | "config.indoors-speed.desc": "Il numero di secondi per minuto di gioco negli interni.",
34 | "config.outdoors-speed.name": "Negli esterni",
35 | "config.outdoors-speed.desc": "Il numero di secondi per minuto di gioco negli esterni.",
36 | "config.mine-speed.name": "Miniere",
37 | "config.mine-speed.desc": "Il numero di secondi per minuto di gioco nelle Miniere.",
38 | "config.skull-cavern-speed.name": "Caverna del Teschio",
39 | "config.skull-cavern-speed.desc": "Il numero di secondi per minuto di gioco nella Caverna del Teschio.",
40 | "config.volcano-dungeon-speed.name": "Dungeon del vulcano",
41 | "config.volcano-dungeon-speed.desc": "Il numero di secondi per minuto di gioco nel Dungeon del Vulcano.",
42 |
43 | // freeze time section
44 | "config.freeze-time": "Tempo congelato",
45 | "config.anywhere-at-time.name": "Tempo congelato a",
46 | "config.anywhere-at-time.desc": "Il tempo in cui congelare il tempo ovunque. Dovrebbe essere l'ora militare di 24 ore, da 600 (6 del mattino) a 2400 (mezzanotte) e 2600 (2 del mattino). È possibile impostarlo a 2600 per disabilitarlo. ",
47 | "config.freeze-time-indoors.name": "Negli interni",
48 | "config.freeze-time-indoors.desc": "Per congelare il tempo negli interni",
49 | "config.freeze-time-outdoors.name": "Negli esterni",
50 | "config.freeze-time-outdoors.desc": "Per congelare il tempo negli esterni",
51 | "config.freeze-time-mine.name": "Miniere",
52 | "config.freeze-time-mine.desc": "Per congelare il tempo nelle Miniere",
53 | "config.freeze-time-skull-cavern.name": "Caverna del teschio",
54 | "config.freeze-time-skull-cavern.desc": "Per congelare il tempo nella Caverna del teschio",
55 | "config.freeze-time-volcano-dungeon.name": "Dungeon del vulcano",
56 | "config.freeze-time-volcano-dungeon.desc": "Per congelare il tempo nel Dungeon del vulcano",
57 | "config.freeze-time-freeze-names.name": "Congelare luoghi specifici",
58 | "config.freeze-time-freeze-names.desc": "I nomi di luoghi specifici in cui congelare il tempo. I nomi dei luoghi possono essere visualizzati nel gioco utilizzando la modalità Debug. È possibile elencarli più volte con le virgole.",
59 | "config.freeze-time-dont-freeze-names.name": "Non congelare i nomi delle località",
60 | "config.freeze-time-dont-freeze-names.desc": "I nomi di luoghi specifici in cui il tempo non dovrebbe essere congelato, indipendentemente dalle impostazioni precedenti. I nomi delle località possono essere visualizzati nel gioco utilizzando la modalità Debug. È possibile elencarli più volte con le virgole.",
61 |
62 | // controls
63 | "config.controls": "Controlli",
64 | "config.freeze-time-key.name": "Tempo congelato",
65 | "config.freeze-time-key.desc": "È il tasto che congela o scongela il tempo. Il congelamento del tempo rimane valido fino a quando non lo si scongela; lo scongelamento del tempo rimane valido fino a quando non si inserisce una nuova località con le impostazioni di tempo.",
66 | "config.slow-time-key.name": "Tempo rallentato",
67 | "config.slow-time-key.desc": "Il tasto che rallenta il tempo di un secondo ogni 10 minuti di gioco. Si combina con Control per 100 secondi, Shift per 10 secondi o Alt per 0,1 secondi.",
68 | "config.speed-up-time-key.name": "Tempo accelerato",
69 | "config.speed-up-time-key.desc": "Il tasto che accelera il tempo di un secondo ogni 10 minuti di gioco. Si combina con Control per 100 secondi, Shift per 10 secondi o Alt per 0,1 secondi.",
70 | "config.reload-key.name": "Ricarica configurazione",
71 | "config.reload-key.desc": "Il tasto che ricarica tutti i valori dal file di configurazione e li applica immediatamente. Il tempo rimarrà congelato se è stato congelato tramite il tasto di scelta rapida."
72 | }
73 |
--------------------------------------------------------------------------------
/docker/mods/TimeSpeed/i18n/ko.json:
--------------------------------------------------------------------------------
1 | {
2 | /*********
3 | ** In-game messages
4 | *********/
5 | // changed manually
6 | "message.config-reloaded": "지금은 시간이 다르게 느껴집니다.",
7 | "message.speed-changed": "10분이 {{seconds}}초처럼 느껴집니다.",
8 | "message.time-stopped": "시간을 멈췄습니다.",
9 | "message.time-resumed": "이제 시간이 평소와 같이 느껴집니다.",
10 |
11 | // changed based on time
12 | "message.on-time-change.time-stopped": "시간이 갑자기 멈췄습니다.",
13 |
14 | // changed based on location
15 | "message.on-location-change.time-stopped-globally": "어디서든 시간이 멈춥니다.",
16 | "message.on-location-change.time-stopped-here": "여기 시간이 멈췄습니다",
17 | "message.on-location-change.time-speed-here": "여기서 10분이 {{seconds}}초처럼 느껴집니다.",
18 |
19 |
20 | /*********
21 | ** Generic Mod Config Menu UI
22 | *********/
23 | // general options
24 | "config.general-options": "일반 옵션",
25 | "config.enable-on-festival-days.name": "축제일 활성화",
26 | "config.enable-on-festival-days.desc": "축제일 틱 길이를 변경할지 여부.",
27 | "config.location-notify.name": "워프에 시간 정보 표시",
28 | "config.location-notify.desc": "위치를 입력할 때 시간 설정에 대한 메시지를 표시할지 여부.",
29 |
30 | // seconds per minute section
31 | "config.seconds-per-minute": "분당 초",
32 | "config.indoors-speed.name": "실내",
33 | "config.indoors-speed.desc": "실내에 있는 게임 내 분당 시간(초)입니다.",
34 | "config.outdoors-speed.name": "야외",
35 | "config.outdoors-speed.desc": "실외에서 게임 내 분당 시간(초)입니다.",
36 | "config.mine-speed.name": "광산",
37 | "config.mine-speed.desc": "광산에 있는 동안 게임 내 분당 시간(초)입니다.",
38 | "config.skull-cavern-speed.name": "해골 동굴",
39 | "config.skull-cavern-speed.desc": "해골 동굴에 있는 동안 게임 내 분당 시간(초)입니다.",
40 | "config.volcano-dungeon-speed.name": "화산 던전",
41 | "config.volcano-dungeon-speed.desc": "화산 던전에 있는 동안 게임 내 분당 시간(초)입니다.",
42 |
43 | // freeze time section
44 | "config.freeze-time": "정지 시간",
45 | "config.anywhere-at-time.name": "시간 고정",
46 | "config.anywhere-at-time.desc": "모든 곳에서 시간을 고정할 시간입니다. 이것은 600(오전 6시)에서 2400(자정) 및 2600(오전 2시)까지의 24시간 군사 시간이어야 합니다. 다음을 설정할 수 있습니다. 비활성화하려면 2600으로 설정하십시오.",
47 | "config.freeze-time-indoors.name": "실내",
48 | "config.freeze-time-indoors.desc": "실내에서 시간을 정지할지 여부.",
49 | "config.freeze-time-outdoors.name": "야외",
50 | "config.freeze-time-outdoors.desc": "야외에서 시간을 고정할지 여부.",
51 | "config.freeze-time-mine.name": "광산",
52 | "config.freeze-time-mine.desc": "광산에 있는 동안 시간을 고정할지 여부.",
53 | "config.freeze-time-skull-cavern.name": "해골 동굴",
54 | "config.freeze-time-skull-cavern.desc": "해골 동굴에 있는 동안 시간을 고정할지 여부.",
55 | "config.freeze-time-volcano-dungeon.name": "화산 던전",
56 | "config.freeze-time-volcano-dungeon.desc": "화산 던전에 있는 동안 시간을 정지할지 여부.",
57 | "config.freeze-time-freeze-names.name": "위치 이름 고정",
58 | "config.freeze-time-freeze-names.desc": "시간을 고정할 특정 위치의 이름입니다. 위치 이름은 디버그 모드 모드를 사용하여 게임 내에서 볼 수 있습니다. 여러 개를 쉼표로 나열할 수 있습니다.",
59 | "config.freeze-time-dont-freeze-names.name": "위치 이름을 고정하지 않음",
60 | "config.freeze-time-dont-freeze-names.desc": "이전 설정에 관계없이 시간이 고정되어서는 안 되는 특정 위치의 이름입니다. 위치 이름은 디버그 모드 모드를 사용하여 게임 내에서 볼 수 있습니다. 여러 개를 쉼표로 나열할 수 있습니다.",
61 |
62 | // controls
63 | "config.controls": "컨트롤",
64 | "config.freeze-time-key.name": "정지 시간",
65 | "config.freeze-time-key.desc": "시간을 고정하거나 고정 해제하는 키입니다. 고정 시간은 고정을 해제할 때까지 유효합니다. 고정 해제 시간은 시간 설정으로 새 위치를 입력할 때까지 유효합니다.",
66 | "config.slow-time-key.name": "느린 시간",
67 | "config.slow-time-key.desc": "게임 10분당 1 초씩 시간을 늦추는 키입니다. Control과 100초, Shift를 10초, Alt를 0.1초 동안 조합합니다.",
68 | "config.speed-up-time-key.name": "시간 단축",
69 | "config.speed-up-time-key.desc": "10게임 분당 1 초씩 시간을 단축 하는 키입니다. Control과 100초, Shift를 10초, Alt를 0.1초 동안 조합합니다.",
70 | "config.reload-key.name": "구성 다시 로드",
71 | "config.reload-key.desc": "구성 파일에서 모든 값을 다시 로드하고 즉시 적용하는 키입니다. 핫키를 통해 고정된 경우 시간이 고정된 상태로 유지됩니다."
72 | }
73 |
--------------------------------------------------------------------------------
/docker/mods/TimeSpeed/i18n/pt.json:
--------------------------------------------------------------------------------
1 | {
2 | /*********
3 | ** In-game messages
4 | *********/
5 | // changed manually
6 | "message.config-reloaded": "O tempo parece diferente agora...",
7 | "message.speed-changed": "10 minutos parecem como {{seconds}} segundos.",
8 | "message.time-stopped": "Aí, você parou o tempo!",
9 | "message.time-resumed": "O tempo parece normal agora...",
10 |
11 | // changed based on time
12 | "message.on-time-change.time-stopped": "O tempo súbitamente congela...",
13 |
14 | // changed based on location
15 | "message.on-location-change.time-stopped-globally": "Parece que você parou o tempo globalmente...",
16 | "message.on-location-change.time-stopped-here": "Parece que o tempo está congelado aqui...",
17 | "message.on-location-change.time-speed-here": "10 minutos parecem mais como {{seconds}} segundos aqui...",
18 |
19 |
20 | /*********
21 | ** Generic Mod Config Menu UI
22 | *********/
23 | // general options
24 | // TODO
25 | "config.general-options": "General options",
26 | "config.enable-on-festival-days.name": "Enable on festival days",
27 | "config.enable-on-festival-days.desc": "Whether to change tick length on festival days.",
28 | "config.location-notify.name": "Show time info on warp",
29 | "config.location-notify.desc": "Whether to show a message about the time settings when you enter a location.",
30 |
31 | // seconds per minute section
32 | // TODO
33 | "config.seconds-per-minute": "Seconds per minute",
34 | "config.indoors-speed.name": "Indoors",
35 | "config.indoors-speed.desc": "The number of seconds per in-game minute while indoors.",
36 | "config.outdoors-speed.name": "Outdoors",
37 | "config.outdoors-speed.desc": "The number of seconds per in-game minute while outdoors.",
38 | "config.mine-speed.name": "Mines",
39 | "config.mine-speed.desc": "The number of seconds per in-game minute while in the mines.",
40 | "config.skull-cavern-speed.name": "Skull Cavern",
41 | "config.skull-cavern-speed.desc": "The number of seconds per in-game minute while in the Skull Cavern.",
42 | "config.volcano-dungeon-speed.name": "Volcano Dungeon",
43 | "config.volcano-dungeon-speed.desc": "The number of seconds per in-game minute while in the Volcano Dungeon.",
44 |
45 | // freeze time section
46 | // TODO
47 | "config.freeze-time": "Freeze time",
48 | "config.anywhere-at-time.name": "Freeze time at",
49 | "config.anywhere-at-time.desc": "The time at which to freeze time everywhere. This should be 24-hour military time, from 600 (6am) to 2400 (midnight) and 2600 (2am). You can set it to 2600 to disable it.",
50 | "config.freeze-time-indoors.name": "Indoors",
51 | "config.freeze-time-indoors.desc": "Whether to freeze time while indoors.",
52 | "config.freeze-time-outdoors.name": "Outdoors",
53 | "config.freeze-time-outdoors.desc": "Whether to freeze time while outdoors.",
54 | "config.freeze-time-mine.name": "Mines",
55 | "config.freeze-time-mine.desc": "Whether to freeze time while in the mines.",
56 | "config.freeze-time-skull-cavern.name": "Skull Cavern",
57 | "config.freeze-time-skull-cavern.desc": "Whether to freeze time while in the Skull Cavern.",
58 | "config.freeze-time-volcano-dungeon.name": "Volcano Dungeon",
59 | "config.freeze-time-volcano-dungeon.desc": "Whether to freeze time while in the Volcano Dungeon.",
60 | "config.freeze-time-freeze-names.name": "Freeze location names",
61 | "config.freeze-time-freeze-names.desc": "The names of specific locations in which to freeze time. Location names can be seen in-game using the Debug Mode mod. You can list multiple with commas.",
62 | "config.freeze-time-dont-freeze-names.name": "Don't freeze location names",
63 | "config.freeze-time-dont-freeze-names.desc": "The names of specific locations in which time shouldn't be frozen, regardless of the previous settings. Location names can be seen in-game using the Debug Mode mod. You can list multiple with commas.",
64 |
65 | // controls
66 | // TODO
67 | "config.controls": "Controls",
68 | "config.freeze-time-key.name": "Freeze time",
69 | "config.freeze-time-key.desc": "The key which freezes or unfreezes time. Freezing time will stay in effect until you unfreeze it; unfreezing time will stay in effect until you enter a new location with time settings.",
70 | "config.slow-time-key.name": "Slow time",
71 | "config.slow-time-key.desc": "The key which slows down time by one second per 10-game-minutes. Combine with Control for 100 seconds, Shift for 10 seconds, or Alt for 0.1 seconds.",
72 | "config.speed-up-time-key.name": "Speed up time",
73 | "config.speed-up-time-key.desc": "The key which speeds up time by one second per 10-game-minutes. Combine with Control for 100 seconds, Shift for 10 seconds, or Alt for 0.1 seconds.",
74 | "config.reload-key.name": "Reload config",
75 | "config.reload-key.desc": "The key which reloads all values from the config file and applies them immediately. Time will stay frozen if it was frozen via hotkey."
76 | }
77 |
--------------------------------------------------------------------------------
/docker/mods/TimeSpeed/i18n/ru.json:
--------------------------------------------------------------------------------
1 | {
2 | /*********
3 | ** In-game messages
4 | *********/
5 | // changed manually
6 | "message.config-reloaded": "Теперь время идёт по другому...",
7 | "message.speed-changed": "10 минут ощущаються как {{seconds}} сек.",
8 | "message.time-stopped": "Ты остановил время!",
9 | "message.time-resumed": "Теперь время ощущается нормально...",
10 |
11 | // changed based on time
12 | "message.on-time-change.time-stopped": "Внезапно, время остановилось...",
13 |
14 | // changed based on location
15 | "message.on-location-change.time-stopped-globally": "Время остановилось везде...",
16 | "message.on-location-change.time-stopped-here": "Время здесь застыло...",
17 | "message.on-location-change.time-speed-here": "Здесь 10 минут ощущаются как {{seconds}} сек...",
18 |
19 |
20 | /*********
21 | ** Generic Mod Config Menu UI
22 | *********/
23 | // general options
24 | "config.general-options": "Основные опции",
25 | "config.enable-on-festival-days.name": "Вкл. во время праздников",
26 | "config.enable-on-festival-days.desc": "Изменять ли длину тиков в праздничные дни.",
27 | "config.location-notify.name": "Показывать скорость времени",
28 | "config.location-notify.desc": "Если включить, то при переходе на другую локацию будут отображены настройки времени в этой локации",
29 |
30 | // seconds per minute section
31 | "config.seconds-per-minute": "Секунд за минуту",
32 | "config.indoors-speed.name": "В помещениях",
33 | "config.indoors-speed.desc": "Количество секунд в одной игровой минуте в помещениях.",
34 | "config.outdoors-speed.name": "На улице",
35 | "config.outdoors-speed.desc": "Количество секунд в одной игровой минуте на улице.",
36 | "config.mine-speed.name": "В шахте",
37 | "config.mine-speed.desc": "Количество секунд в одной игровой минуте в шахте.",
38 | "config.skull-cavern-speed.name": "Пещера Черепа",
39 | "config.skull-cavern-speed.desc": "Количество секунд в одной игровой минуте в Пещера Черепа.",
40 | "config.volcano-dungeon-speed.name": "Вулканическое подземелье",
41 | "config.volcano-dungeon-speed.desc": "Количество секунд в одной игровой минуте в Вулканическом подземелье.",
42 |
43 | // freeze time section
44 | "config.freeze-time": "Остановка времени",
45 | "config.anywhere-at-time.name": "Останавливать время в",
46 | "config.anywhere-at-time.desc": "Момент времени, когда оно полностью остановится. 600 - 6:00 (6 утра), 2400 - 00:00 (полночь) и 2600 (2 часа ночи). Если установить значение 2600, эта опция будет отключена.",
47 | "config.freeze-time-indoors.name": "В помещениях",
48 | "config.freeze-time-indoors.desc": "Эта опция полностью остановит время внитри помещений.",
49 | "config.freeze-time-outdoors.name": "На улице",
50 | "config.freeze-time-outdoors.desc": "Эта опция полностью остановит время на улице.",
51 | "config.freeze-time-mine.name": "В шахте",
52 | "config.freeze-time-mine.desc": "Эта опция полностью остановит время в шахте.",
53 | "config.freeze-time-skull-cavern.name": "Пещера Черепа",
54 | "config.freeze-time-skull-cavern.desc": "Эта опция полностью остановит время в Пещере Черепа.",
55 | "config.freeze-time-volcano-dungeon.name": "Вулканическое подземелье",
56 | "config.freeze-time-volcano-dungeon.desc": "Эта опция полностью остановит время в Вулканическом подземелье.",
57 | "config.freeze-time-freeze-names.name": "Заморозить время в",
58 | "config.freeze-time-freeze-names.desc": "Названия конкретных локаций, в которых время будет заморожено. Названия локаций можно увидеть в игре с помощью мода \"Debug Mode\". Вы можете перечислить несколько через запятую.",
59 | "config.freeze-time-dont-freeze-names.name": "Не замораживать время в",
60 | "config.freeze-time-dont-freeze-names.desc": "Названия конкретных локаций, в которых время не будет заморожено, вне зависимости от предыдущих настроек. Названия локаций можно увидеть в игре с помощью мода \"Debug Mode\". Вы можете перечислить несколько через запятую.",
61 |
62 | // controls
63 | "config.controls": "Управление",
64 | "config.freeze-time-key.name": "Остановить время",
65 | "config.freeze-time-key.desc": "Эта клавиша будет останавливать и продолжать течение времени. Остановленное время будет таким пока вы не нажмёте клавишу снова; обычное течение времени может быть прервано в зависимости от настроек.",
66 | "config.slow-time-key.name": "Замедлить время",
67 | "config.slow-time-key.desc": "Клавиша(по умолчанию - . ), которая будет замедлять время, на 1 секунду за 10 игровых минут. Комбинируя с клавишей Ctrl - 100 секунд, Shift - 10 секунд или Alt - 0.1 секунд (100 миллисекунд).",
68 | "config.speed-up-time-key.name": "Ускорить время",
69 | "config.speed-up-time-key.desc": "Клавиша(по умолчанию - , ), которая будет ускорять время, на 1 секунду за 10 игровых минут. Комбинируя с клавишей Ctrl - 100 секунд, Shift - 10 секунд или Alt - 0.1 секунд (100 миллисекунд).",
70 | "config.reload-key.name": "Перезагрузить настройки",
71 | "config.reload-key.desc": "Клавиша, которая перезагружает все значения из config.json и сразу же их применяет. Если время было остановлено клавишей, оно останется остановленным."
72 | }
73 |
--------------------------------------------------------------------------------
/docker/mods/TimeSpeed/i18n/zh.json:
--------------------------------------------------------------------------------
1 | {
2 | /*********
3 | ** In-game messages
4 | *********/
5 | // changed manually
6 | "message.config-reloaded": "时间流动变得不同了...",
7 | "message.speed-changed": "10分钟感觉就像 {{seconds}} 秒。",
8 | "message.time-stopped": "嘿,你冻结了时间!",
9 | "message.time-resumed": "时间像往常一样重新流动...",
10 |
11 | // changed based on time
12 | "message.on-time-change.time-stopped": "时间突然停止...",
13 |
14 | // changed based on location
15 | "message.on-location-change.time-stopped-globally": "无论在哪时间都停止...",
16 | "message.on-location-change.time-stopped-here": "在这里时间似乎停止了...",
17 | "message.on-location-change.time-speed-here": "这里10分钟感觉就像{{seconds}} 秒钟...",
18 |
19 |
20 | /*********
21 | ** Generic Mod Config Menu UI
22 | *********/
23 | // general options
24 | "config.general-options": "通常设置",
25 | "config.enable-on-festival-days.name": "节日当天启用",
26 | "config.enable-on-festival-days.desc": "节日时修改时间长短",
27 | "config.location-notify.name": "显示时间信息",
28 | "config.location-notify.desc": "是否在进入不同区域时显示时间相关信息",
29 |
30 | // seconds per minute section
31 | "config.seconds-per-minute": "分钟拆分为秒数",
32 | "config.indoors-speed.name": "建筑内",
33 | "config.indoors-speed.desc": "建筑里一分钟有多少秒",
34 | "config.outdoors-speed.name": "室外",
35 | "config.outdoors-speed.desc": "室外一分钟有多少秒",
36 | "config.mine-speed.name": "矿洞",
37 | "config.mine-speed.desc": "矿洞里一分钟有多少秒",
38 | "config.skull-cavern-speed.name": "头骨矿洞",
39 | "config.skull-cavern-speed.desc": "头骨矿洞里一分钟有多少秒",
40 | "config.volcano-dungeon-speed.name": "火山地牢",
41 | "config.volcano-dungeon-speed.desc": "火山地牢里一分钟有多少秒",
42 |
43 | // freeze time section
44 | "config.freeze-time": "冻结时间",
45 | "config.anywhere-at-time.name": "什么时候冻结",
46 | "config.anywhere-at-time.desc": "设置自动冻结全地图时间的时间节点,600表示早上6点,2400表示凌晨2点,默认2400,表示禁用。",
47 | "config.freeze-time-indoors.name": "建筑内",
48 | "config.freeze-time-indoors.desc": "建筑内时是否冻结时间",
49 | "config.freeze-time-outdoors.name": "室外",
50 | "config.freeze-time-outdoors.desc": "在室外是否冻结时间",
51 | "config.freeze-time-mine.name": "矿洞",
52 | "config.freeze-time-mine.desc": "在矿洞时冻结时间",
53 | "config.freeze-time-skull-cavern.name": "头骨矿洞",
54 | "config.freeze-time-skull-cavern.desc": "头骨矿洞里是否冻结时间",
55 | "config.freeze-time-volcano-dungeon.name": "火山地牢",
56 | "config.freeze-time-volcano-dungeon.desc": "火山地牢里是否冻结时间",
57 | "config.freeze-time-freeze-names.name": "自定义冻结地点",
58 | "config.freeze-time-freeze-names.desc": "自定义添加冻结时间的地点,可以添加多个,用逗号隔开,下载尾号679的mod在游戏内查看地点名称。",
59 | "config.freeze-time-dont-freeze-names.name": "自定义不冻结地点",
60 | "config.freeze-time-dont-freeze-names.desc": "自定义添加不冻结时间的地点,可以添加多个,用逗号隔开,下载尾号679的mod在游戏内查看地点名称。",
61 |
62 | // controls
63 | "config.controls": "控制键",
64 | "config.freeze-time-key.name": "冻结时间",
65 | "config.freeze-time-key.desc": "设置冻结时间快捷键,按一次永久冻结时间,不受其他设置影响。再按一次会取消冻结,此时可能会受到前面设置过的冻结时间区域的影响(如建筑内冻结等),即进入设置过冻结时间的区域会再次冻结时间。",
66 | "config.slow-time-key.name": "放慢时间快捷键",
67 | "config.slow-time-key.desc": "按下快捷键,让游戏时间每十分钟慢上一秒,快捷键+CTRL,慢100秒,+shift,慢10秒,+Alt慢0.1秒。",
68 | "config.speed-up-time-key.name": "加快时间",
69 | "config.speed-up-time-key.desc": "加快时间流转快捷键,让游戏时间每十分钟快上一秒,快捷键+CTRL,快100秒,+shift,快10秒,+Alt快0.1秒。",
70 | "config.reload-key.name": "恢复默认设置",
71 | "config.reload-key.desc": "恢复所有设置的快捷键。"
72 | }
73 |
--------------------------------------------------------------------------------
/docker/mods/TimeSpeed/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "Name": "TimeSpeed",
3 | "Author": "cantorsdust and Pathoschild",
4 | "Version": "2.7.7",
5 | "Description": "Lets you control the flow of time in the game: speed it up, slow it down, or freeze it altogether.",
6 | "UniqueID": "cantorsdust.TimeSpeed",
7 | "EntryDll": "TimeSpeed.dll",
8 | "MinimumApiVersion": "4.0.0",
9 | "UpdateKeys": [ "Nexus:169" ]
10 | }
11 |
--------------------------------------------------------------------------------
/docker/mods/UnlimitedPlayers/UnlimitedPlayers.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/huntercavazos/stardew-multiplayer-docker/646a5d6e26414d62439af29a91e76b66618b74d2/docker/mods/UnlimitedPlayers/UnlimitedPlayers.dll
--------------------------------------------------------------------------------
/docker/mods/UnlimitedPlayers/config.json.template:
--------------------------------------------------------------------------------
1 | {
2 | "PlayerLimit": "${UNLIMITED_PLAYERS_PLAYER_LIMIT}",
3 | "ClientMods": {
4 | "Denylist": [
5 | "CJBok.CheatsMenu",
6 | "Ryaon.JunimoKartCheater"
7 | ]
8 | }
9 | }
--------------------------------------------------------------------------------
/docker/mods/UnlimitedPlayers/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "Author": "Armitxes",
3 | "Description": "Remove the maximum player restrictions, build endless cabins.",
4 | "Name": "Unlimited Players by Armitxes",
5 | "EntryDll": "UnlimitedPlayers.dll",
6 | "UniqueID": "Armitxes.UnlimitedPlayers",
7 | "UpdateKeys": [ "GitHub:Armitxes/StardewValley_UnlimitedPlayers" ],
8 | "Version": "2024.4.16"
9 | }
10 |
--------------------------------------------------------------------------------
/docker/run:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | if [ -z "`cat /data/Stardew/game/Mods/AutoLoadGame/config.json`" ] ; then
4 | chmod 777 /data/Stardew/game/Mods/AutoLoadGame/config.json;
5 | fi
6 |
--------------------------------------------------------------------------------
/docker/scripts/configure-remotecontrol-mod.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | # Quit if we don't have any default admins
4 | if [ -z "${REMOTE_CONTROL_DEFAULT_ADMINS}" ] || [ ! -f "/data/Stardew/game/Mods/RemoteControl/config.json" ]; then
5 | return
6 | fi
7 |
8 | # Add default admins to the admin list
9 | jq ".admins[.admins | length] |= . + ${REMOTE_CONTROL_DEFAULT_ADMINS}" "/data/Stardew/game/Mods/RemoteControl/config.json" > "/data/Stardew/game/Mods/RemoteControl/config.json.out"
10 | mv -f "/data/Stardew/game/Mods/RemoteControl/config.json.out" "/data/Stardew/game/Mods/RemoteControl/config.json"
11 |
--------------------------------------------------------------------------------
/docker/scripts/tail-smapi-log.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | echo "-- SMAPI Log: Starting"
4 |
5 | # Wait for SMAPI log and tail infinitely
6 | while [ ! -f "/config/xdg/config/StardewValley/ErrorLogs/SMAPI-latest.txt" ]; do
7 | echo "-- SMAPI Log: Waiting for log to appear";
8 | sleep 5;
9 | done
10 |
11 | echo "-- SMAPI Log: Tailing"
12 | tail -f /config/xdg/config/StardewValley/ErrorLogs/SMAPI-latest.txt
13 |
--------------------------------------------------------------------------------
/docker/start.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | # Used only on STEAM DOCKERFILE
3 | # Steam Version doesn't have a proper SH start File
4 | # and we require on to execute properly on xterm
5 | echo "Running Stardew Valley"
6 | cd "${GAME_PATH}"
7 | chmod +x *
8 | ./"StardewValley"
9 |
--------------------------------------------------------------------------------