diff --git a/Dockerfile b/Dockerfile index c3d57ed..adaa7ba 100644 --- a/Dockerfile +++ b/Dockerfile @@ -208,7 +208,7 @@ COPY --from=rconclibuilder /build/gorcon /usr/local/bin/rcon COPY --from=supercronicverify /usr/local/bin/supercronic /usr/local/bin/supercronic RUN apt-get update \ - && apt-get install -y --no-install-recommends --no-install-suggests procps xdg-user-dirs \ + && apt-get install -y --no-install-recommends --no-install-suggests procps xdg-user-dirs gettext-base moreutils \ && apt-get autoremove -y --purge \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* diff --git a/configs/PalWorldSettings.ini.template b/configs/PalWorldSettings.ini.template index 0dccaf9..f726aac 100644 --- a/configs/PalWorldSettings.ini.template +++ b/configs/PalWorldSettings.ini.template @@ -1,2 +1,2 @@ [/Script/Pal.PalGameWorldSettings] -OptionSettings=(Difficulty=None,RandomizerType=None,RandomizerSeed="",bIsRandomizerPalLevelRandom=False,DayTimeSpeedRate=1.000000,NightTimeSpeedRate=1.000000,ExpRate=1.000000,PalCaptureRate=1.000000,PalSpawnNumRate=1.000000,PalDamageRateAttack=1.000000,PalDamageRateDefense=1.000000,PlayerDamageRateAttack=1.000000,PlayerDamageRateDefense=1.000000,PlayerStomachDecreaceRate=1.000000,PlayerStaminaDecreaceRate=1.000000,PlayerAutoHPRegeneRate=1.000000,PlayerAutoHpRegeneRateInSleep=1.000000,PalStomachDecreaceRate=1.000000,PalStaminaDecreaceRate=1.000000,PalAutoHPRegeneRate=1.000000,PalAutoHpRegeneRateInSleep=1.000000,BuildObjectHpRate=1.000000,BuildObjectDamageRate=1.000000,BuildObjectDeteriorationDamageRate=1.000000,CollectionDropRate=1.000000,CollectionObjectHpRate=1.000000,CollectionObjectRespawnSpeedRate=1.000000,EnemyDropItemRate=1.000000,DeathPenalty=All,bEnablePlayerToPlayerDamage=False,bEnableFriendlyFire=False,bEnableInvaderEnemy=True,bActiveUNKO=False,bEnableAimAssistPad=True,bEnableAimAssistKeyboard=False,DropItemMaxNum=3000,DropItemMaxNum_UNKO=100,BaseCampMaxNum=128,BaseCampWorkerMaxNum=15,DropItemAliveMaxHours=1.000000,bAutoResetGuildNoOnlinePlayers=False,AutoResetGuildTimeNoOnlinePlayers=72.000000,GuildPlayerMaxNum=20,BaseCampMaxNumInGuild=4,PalEggDefaultHatchingTime=72.000000,WorkSpeedRate=1.000000,AutoSaveSpan=30.000000,bIsMultiplay=False,bIsPvP=False,bHardcore=False,bPalLost=False,bCharacterRecreateInHardcore=False,bCanPickupOtherGuildDeathPenaltyDrop=False,bEnableNonLoginPenalty=True,bEnableFastTravel=True,bIsStartLocationSelectByMap=True,bExistPlayerAfterLogout=False,bEnableDefenseOtherGuildPlayer=False,bInvisibleOtherGuildBaseCampAreaFX=False,bBuildAreaLimit=False,ItemWeightRate=1.000000,CoopPlayerMaxNum=4,ServerPlayerMaxNum=32,ServerName="Default Palworld Server",ServerDescription="",AdminPassword="",ServerPassword="",PublicPort=8211,PublicIP="",RCONEnabled=False,RCONPort=25575,Region="",bUseAuth=True,BanListURL="https://api.palworldgame.com/api/banlist.txt",RESTAPIEnabled=False,RESTAPIPort=8212,bShowPlayerList=False,ChatPostLimitPerMinute=10,CrossplayPlatforms=(Steam,Xbox,PS5,Mac),bIsUseBackupSaveData=True,LogFormatType=Text,SupplyDropSpan=180,EnablePredatorBossPal=True,MaxBuildingLimitNum=0,ServerReplicatePawnCullDistance=15000.000000,bAllowGlobalPalboxExport=True,bAllowGlobalPalboxImport=False,EquipmentDurabilityDamageRate=1.000000,ItemContainerForceMarkDirtyInterval=1.000000) \ No newline at end of file +OptionSettings=(Difficulty=${DIFFICULTY},RandomizerType=${RANDOMIZER_TYPE},RandomizerSeed="${RANDOMIZER_SEED}",bIsRandomizerPalLevelRandom=${IS_RANDOMIZER_PAL_LEVEL_RANDOM},DayTimeSpeedRate=${DAYTIME_SPEEDRATE},NightTimeSpeedRate=${NIGHTTIME_SPEEDRATE},ExpRate=${EXP_RATE},PalCaptureRate=${PAL_CAPTURE_RATE},PalSpawnNumRate=${PAL_SPAWN_NUM_RATE},PalDamageRateAttack=${PAL_DAMAGE_RATE_ATTACK},PalDamageRateDefense=${PAL_DAMAGE_RATE_DEFENSE},PlayerDamageRateAttack=${PLAYER_DAMAGE_RATE_ATTACK},PlayerDamageRateDefense=${PLAYER_DAMAGE_RATE_DEFENSE},PlayerStomachDecreaceRate=${PLAYER_STOMACH_DECREASE_RATE},PlayerStaminaDecreaceRate=${PLAYER_STAMINA_DECREACE_RATE},PlayerAutoHPRegeneRate=${PLAYER_AUTO_HP_REGENE_RATE},PlayerAutoHpRegeneRateInSleep=${PLAYER_AUTO_HP_REGENE_RATE_IN_SLEEP},PalStomachDecreaceRate=${PAL_STOMACH_DECREACE_RATE},PalStaminaDecreaceRate=${PAL_STAMINA_DECREACE_RATE},PalAutoHPRegeneRate=${PAL_AUTO_HP_REGENE_RATE},PalAutoHpRegeneRateInSleep=${PAL_AUTO_HP_REGENE_RATE_IN_SLEEP},BuildObjectHpRate=${BUILD_OBJECT_HP_RATE},BuildObjectDamageRate=${BUILD_OBJECT_DAMAGE_RATE},BuildObjectDeteriorationDamageRate=${BUILD_OBJECT_DETERIORATION_DAMAGE_RATE},CollectionDropRate=${COLLECTION_DROP_RATE},CollectionObjectHpRate=${COLLECTION_OBJECT_HP_RATE},CollectionObjectRespawnSpeedRate=${COLLECTION_OBJECT_RESPAWN_SPEED_RATE},EnemyDropItemRate=${ENEMY_DROP_ITEM_RATE},DeathPenalty=${DEATH_PENALTY},bEnablePlayerToPlayerDamage=${ENABLE_PLAYER_TO_PLAYER_DAMAGE},bEnableFriendlyFire=${ENABLE_FRIENDLY_FIRE},bEnableInvaderEnemy=${ENABLE_INVADER_ENEMY},bActiveUNKO=${ACTIVE_UNKO},bEnableAimAssistPad=${ENABLE_AIM_ASSIST_PAD},bEnableAimAssistKeyboard=${ENABLE_AIM_ASSIST_KEYBOARD},DropItemMaxNum=${DROP_ITEM_MAX_NUM},DropItemMaxNum_UNKO=${DROP_ITEM_MAX_NUM_UNKO},BaseCampMaxNum=${BASE_CAMP_MAX_NUM},BaseCampWorkerMaxNum=${BASE_CAMP_WORKER_MAXNUM},DropItemAliveMaxHours=${DROP_ITEM_ALIVE_MAX_HOURS},bAutoResetGuildNoOnlinePlayers=${AUTO_RESET_GUILD_NO_ONLINE_PLAYERS},AutoResetGuildTimeNoOnlinePlayers=${AUTO_RESET_GUILD_TIME_NO_ONLINE_PLAYERS},GuildPlayerMaxNum=${GUILD_PLAYER_MAX_NUM},BaseCampMaxNumInGuild=${BASE_CAMP_MAX_NUM_IN_GUILD},PalEggDefaultHatchingTime=${PAL_EGG_DEFAULT_HATCHING_TIME},WorkSpeedRate=${WORK_SPEED_RATE},AutoSaveSpan=${AUTO_SAVE_SPAN},bIsMultiplay=${IS_MULTIPLAY},bIsPvP=${IS_PVP},bHardcore=${HARDCORE},bPalLost=${PAL_LOST},bCharacterRecreateInHardcore=${CHARACTER_RECREATE_IN_HARDCORE},bCanPickupOtherGuildDeathPenaltyDrop=${CAN_PICKUP_OTHER_GUILD_DEATH_PENALTY_DROP},bEnableNonLoginPenalty=${ENABLE_NON_LOGIN_PENALTY},bEnableFastTravel=${ENABLE_FAST_TRAVEL},bIsStartLocationSelectByMap=${IS_START_LOCATION_SELECT_BY_MAP},bExistPlayerAfterLogout=${EXIST_PLAYER_AFTER_LOGOUT},bEnableDefenseOtherGuildPlayer=${ENABLE_DEFENSE_OTHER_GUILD_PLAYER},bInvisibleOtherGuildBaseCampAreaFX=${INVISBIBLE_OTHER_GUILD_BASE_CAMP_AREA_FX},bBuildAreaLimit=${BUILD_AREA_LIMIT},ItemWeightRate=${ITEM_WEIGHT_RATE},CoopPlayerMaxNum=${COOP_PLAYER_MAX_NUM},ServerPlayerMaxNum=${MAX_PLAYERS},ServerName="${SERVER_NAME}",ServerDescription="${SERVER_DESCRIPTION}",AdminPassword="${ADMIN_PASSWORD}",ServerPassword="${SERVER_PASSWORD}",PublicPort=${PUBLIC_PORT},PublicIP="${PUBLIC_IP}",RCONEnabled=${RCON_ENABLED},RCONPort=${RCON_PORT},Region="${REGION}",bUseAuth=${USEAUTH},BanListURL="${BAN_LIST_URL}",RESTAPIEnabled=${RESTAPI_ENABLED},RESTAPIPort=${RESTAPI_PORT},bShowPlayerList=${SHOW_PLAYER_LIST},ChatPostLimitPerMinute=${CHAT_POST_LIMIT_PER_MINUTE},CrossplayPlatforms=${CROSSPLAY_PLATFORMS},bIsUseBackupSaveData=${ENABLE_WORLD_BACKUP},LogFormatType=${LOG_FORMAT_TYPE},SupplyDropSpan=${SUPPLY_DROP_SPAN},EnablePredatorBossPal=${ENABLE_PREDATOR_BOSS_PAL},MaxBuildingLimitNum=${MAX_BUILDING_LIMIT_NUM},ServerReplicatePawnCullDistance=${SERVER_REPLICATE_PAWN_CULL_DISTANCE},bAllowGlobalPalboxExport=${ALLOW_GLOBAL_PALBOX_EXPORT},bAllowGlobalPalboxImport=${ALLOW_GLOBAL_PALBOX_IMPORT},EquipmentDurabilityDamageRate=${EQUIPMENT_DURABILITY_DAMAGE_RATE},ItemContainerForceMarkDirtyInterval=${ITEM_CONTAINER_FORCE_MARK_DIRTY_INTERVAL}) diff --git a/configs/rcon.yaml b/configs/rcon.yaml index 5acff51..2086382 100644 --- a/configs/rcon.yaml +++ b/configs/rcon.yaml @@ -1,3 +1,3 @@ default: - address: "127.0.0.1:###RCON_PORT###" - password: "###ADMIN_PASSWORD###" + address: "127.0.0.1:${RCON_PORT}" + password: "${ADMIN_PASSWORD}" diff --git a/includes/config.sh b/includes/config.sh index 20be659..c544d1a 100644 --- a/includes/config.sh +++ b/includes/config.sh @@ -51,370 +51,13 @@ function setup_palworld_settings_ini() { fi # Copy default-config, which comes with SteamCMD to gameserver save location ew "> Copying PalWorldSettings.ini.template to ${GAME_SETTINGS_FILE}" - cp --no-preserve=ownership "${PALWORLD_TEMPLATE_FILE}" "${GAME_SETTINGS_FILE}" - - if [[ -n ${DIFFICULTY+x} ]]; then - e_with_counter "Difficulty to '$DIFFICULTY'" - sed -E -i "s/Difficulty=[a-zA-Z]*/Difficulty=$DIFFICULTY/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${RANDOMIZER_TYPE+x} ]]; then - e_with_counter "RandomizerType to '$RANDOMIZER_TYPE'" - sed -E -i "s/RandomizerType=[a-zA-Z]*/RandomizerType=$RANDOMIZER_TYPE/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${RANDOMIZER_SEED+x} ]]; then - e_with_counter "RandomizerSeed to '$RANDOMIZER_SEED'" - sed -E -i "s/RandomizerSeed=\"[^\"]*\"/RandomizerSeed=\"$RANDOMIZER_SEED\"/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${IS_RANDOMIZER_PAL_LEVEL_RANDOM+x} ]]; then - e_with_counter "bIsRandomizerPalLevelRandom to '$IS_RANDOMIZER_PAL_LEVEL_RANDOM'" - sed -E -i "s/bIsRandomizerPalLevelRandom=[a-zA-Z]*/bIsRandomizerPalLevelRandom=$IS_RANDOMIZER_PAL_LEVEL_RANDOM/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${DAYTIME_SPEEDRATE+x} ]]; then - e_with_counter "DayTimeSpeedRate to '$DAYTIME_SPEEDRATE'" - sed -E -i "s/DayTimeSpeedRate=[+-]?([0-9]*[.])?[0-9]+/DayTimeSpeedRate=$DAYTIME_SPEEDRATE/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${NIGHTTIME_SPEEDRATE+x} ]]; then - e_with_counter "NightTimeSpeedRate to '$NIGHTTIME_SPEEDRATE'" - sed -E -i "s/NightTimeSpeedRate=[+-]?([0-9]*[.])?[0-9]+/NightTimeSpeedRate=$NIGHTTIME_SPEEDRATE/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${EXP_RATE+x} ]]; then - e_with_counter "ExpRate to '$EXP_RATE'" - sed -E -i "s/ExpRate=[+-]?([0-9]*[.])?[0-9]+/ExpRate=$EXP_RATE/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${PAL_CAPTURE_RATE+x} ]]; then - e_with_counter "PalCaptureRate to '$PAL_CAPTURE_RATE'" - sed -E -i "s/PalCaptureRate=[+-]?([0-9]*[.])?[0-9]+/PalCaptureRate=$PAL_CAPTURE_RATE/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${PAL_SPAWN_NUM_RATE+x} ]]; then - e_with_counter "PalSpawnNumRate to '$PAL_SPAWN_NUM_RATE'" - sed -E -i "s/PalSpawnNumRate=[+-]?([0-9]*[.])?[0-9]+/PalSpawnNumRate=$PAL_SPAWN_NUM_RATE/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${PAL_DAMAGE_RATE_ATTACK+x} ]]; then - e_with_counter "PalDamageRateAttack to '$PAL_DAMAGE_RATE_ATTACK'" - sed -E -i "s/PalDamageRateAttack=[+-]?([0-9]*[.])?[0-9]+/PalDamageRateAttack=$PAL_DAMAGE_RATE_ATTACK/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${PAL_DAMAGE_RATE_DEFENSE+x} ]]; then - e_with_counter "PalDamageRateDefense to '$PAL_DAMAGE_RATE_DEFENSE'" - sed -E -i "s/PalDamageRateDefense=[+-]?([0-9]*[.])?[0-9]+/PalDamageRateDefense=$PAL_DAMAGE_RATE_DEFENSE/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${PLAYER_DAMAGE_RATE_ATTACK+x} ]]; then - e_with_counter "PlayerDamageRateAttack to '$PLAYER_DAMAGE_RATE_ATTACK'" - sed -E -i "s/PlayerDamageRateAttack=[+-]?([0-9]*[.])?[0-9]+/PlayerDamageRateAttack=$PLAYER_DAMAGE_RATE_ATTACK/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${PLAYER_DAMAGE_RATE_DEFENSE+x} ]]; then - e_with_counter "PlayerDamageRateDefense to '$PLAYER_DAMAGE_RATE_DEFENSE'" - sed -E -i "s/PlayerDamageRateDefense=[+-]?([0-9]*[.])?[0-9]+/PlayerDamageRateDefense=$PLAYER_DAMAGE_RATE_DEFENSE/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${PLAYER_STOMACH_DECREASE_RATE+x} ]]; then - e_with_counter "PlayerStomachDecreaceRate to '$PLAYER_STOMACH_DECREASE_RATE'" - sed -E -i "s/PlayerStomachDecreaceRate=[+-]?([0-9]*[.])?[0-9]+/PlayerStomachDecreaceRate=$PLAYER_STOMACH_DECREASE_RATE/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${PLAYER_STAMINA_DECREACE_RATE+x} ]]; then - e_with_counter "PlayerStaminaDecreaceRate to '$PLAYER_STAMINA_DECREACE_RATE'" - sed -E -i "s/PlayerStaminaDecreaceRate=[+-]?([0-9]*[.])?[0-9]+/PlayerStaminaDecreaceRate=$PLAYER_STAMINA_DECREACE_RATE/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${PLAYER_AUTO_HP_REGENE_RATE+x} ]]; then - e_with_counter "PlayerAutoHPRegeneRate to '$PLAYER_AUTO_HP_REGENE_RATE'" - sed -E -i "s/PlayerAutoHPRegeneRate=[+-]?([0-9]*[.])?[0-9]+/PlayerAutoHPRegeneRate=$PLAYER_AUTO_HP_REGENE_RATE/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${PLAYER_AUTO_HP_REGENE_RATE_IN_SLEEP+x} ]]; then - e_with_counter "PlayerAutoHpRegeneRateInSleep to '$PLAYER_AUTO_HP_REGENE_RATE_IN_SLEEP'" - sed -E -i "s/PlayerAutoHpRegeneRateInSleep=[+-]?([0-9]*[.])?[0-9]+/PlayerAutoHpRegeneRateInSleep=$PLAYER_AUTO_HP_REGENE_RATE_IN_SLEEP/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${PAL_STOMACH_DECREACE_RATE+x} ]]; then - e_with_counter "PalStomachDecreaceRate to '$PAL_STOMACH_DECREACE_RATE'" - sed -E -i "s/PalStomachDecreaceRate=[+-]?([0-9]*[.])?[0-9]+/PalStomachDecreaceRate=$PAL_STOMACH_DECREACE_RATE/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${PAL_STAMINA_DECREACE_RATE+x} ]]; then - e_with_counter "PalStaminaDecreaceRate to '$PAL_STAMINA_DECREACE_RATE'" - sed -E -i "s/PalStaminaDecreaceRate=[+-]?([0-9]*[.])?[0-9]+/PalStaminaDecreaceRate=$PAL_STAMINA_DECREACE_RATE/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${PAL_AUTO_HP_REGENE_RATE+x} ]]; then - e_with_counter "PalAutoHPRegeneRate to '$PAL_AUTO_HP_REGENE_RATE'" - sed -E -i "s/PalAutoHPRegeneRate=[+-]?([0-9]*[.])?[0-9]+/PalAutoHPRegeneRate=$PAL_AUTO_HP_REGENE_RATE/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${PAL_AUTO_HP_REGENE_RATE_IN_SLEEP+x} ]]; then - e_with_counter "PalAutoHpRegeneRateInSleep to '$PAL_AUTO_HP_REGENE_RATE_IN_SLEEP'" - sed -E -i "s/PalAutoHpRegeneRateInSleep=[+-]?([0-9]*[.])?[0-9]+/PalAutoHpRegeneRateInSleep=$PAL_AUTO_HP_REGENE_RATE_IN_SLEEP/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${BUILD_OBJECT_HP_RATE+x} ]]; then - e_with_counter "BuildObjectHpRate to '$BUILD_OBJECT_HP_RATE'" - sed -E -i "s/BuildObjectHpRate=[+-]?([0-9]*[.])?[0-9]+/BuildObjectHpRate=$BUILD_OBJECT_HP_RATE/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${BUILD_OBJECT_DAMAGE_RATE+x} ]]; then - e_with_counter "BuildObjectDamageRate to '$BUILD_OBJECT_DAMAGE_RATE'" - sed -E -i "s/BuildObjectDamageRate=[+-]?([0-9]*[.])?[0-9]+/BuildObjectDamageRate=$BUILD_OBJECT_DAMAGE_RATE/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${BUILD_OBJECT_DETERIORATION_DAMAGE_RATE+x} ]]; then - e_with_counter "BuildObjectDeteriorationDamageRate to '$BUILD_OBJECT_DETERIORATION_DAMAGE_RATE'" - sed -E -i "s/BuildObjectDeteriorationDamageRate=[+-]?([0-9]*[.])?[0-9]+/BuildObjectDeteriorationDamageRate=$BUILD_OBJECT_DETERIORATION_DAMAGE_RATE/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${COLLECTION_DROP_RATE+x} ]]; then - e_with_counter "CollectionDropRate to '$COLLECTION_DROP_RATE'" - sed -E -i "s/CollectionDropRate=[+-]?([0-9]*[.])?[0-9]+/CollectionDropRate=$COLLECTION_DROP_RATE/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${COLLECTION_OBJECT_HP_RATE+x} ]]; then - e_with_counter "CollectionObjectHpRate to '$COLLECTION_OBJECT_HP_RATE'" - sed -E -i "s/CollectionObjectHpRate=[+-]?([0-9]*[.])?[0-9]+/CollectionObjectHpRate=$COLLECTION_OBJECT_HP_RATE/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${COLLECTION_OBJECT_RESPAWN_SPEED_RATE+x} ]]; then - e_with_counter "CollectionObjectRespawnSpeedRate to '$COLLECTION_OBJECT_RESPAWN_SPEED_RATE'" - sed -E -i "s/CollectionObjectRespawnSpeedRate=[+-]?([0-9]*[.])?[0-9]+/CollectionObjectRespawnSpeedRate=$COLLECTION_OBJECT_RESPAWN_SPEED_RATE/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${ENEMY_DROP_ITEM_RATE+x} ]]; then - e_with_counter "EnemyDropItemRate to '$ENEMY_DROP_ITEM_RATE'" - sed -E -i "s/EnemyDropItemRate=[+-]?([0-9]*[.])?[0-9]+/EnemyDropItemRate=$ENEMY_DROP_ITEM_RATE/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${DEATH_PENALTY+x} ]]; then - e_with_counter "DeathPenalty to '$DEATH_PENALTY'" - sed -E -i "s/DeathPenalty=[a-zA-Z]*/DeathPenalty=$DEATH_PENALTY/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${ENABLE_PLAYER_TO_PLAYER_DAMAGE+x} ]]; then - e_with_counter "bEnablePlayerToPlayerDamage to '$ENABLE_PLAYER_TO_PLAYER_DAMAGE'" - sed -E -i "s/bEnablePlayerToPlayerDamage=[a-zA-Z]*/bEnablePlayerToPlayerDamage=$ENABLE_PLAYER_TO_PLAYER_DAMAGE/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${ENABLE_FRIENDLY_FIRE+x} ]]; then - e_with_counter "bEnableFriendlyFire to '$ENABLE_FRIENDLY_FIRE'" - sed -E -i "s/bEnableFriendlyFire=[a-zA-Z]*/bEnableFriendlyFire=$ENABLE_FRIENDLY_FIRE/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${ENABLE_INVADER_ENEMY+x} ]]; then - e_with_counter "bEnableInvaderEnemy to '$ENABLE_INVADER_ENEMY'" - sed -E -i "s/bEnableInvaderEnemy=[a-zA-Z]*/bEnableInvaderEnemy=$ENABLE_INVADER_ENEMY/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${ACTIVE_UNKO+x} ]]; then - e_with_counter "bActiveUNKO to '$ACTIVE_UNKO'" - sed -E -i "s/bActiveUNKO=[a-zA-Z]*/bActiveUNKO=$ACTIVE_UNKO/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${ENABLE_AIM_ASSIST_PAD+x} ]]; then - e_with_counter "bEnableAimAssistPad to '$ENABLE_AIM_ASSIST_PAD'" - sed -E -i "s/bEnableAimAssistPad=[a-zA-Z]*/bEnableAimAssistPad=$ENABLE_AIM_ASSIST_PAD/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${ENABLE_AIM_ASSIST_KEYBOARD+x} ]]; then - e_with_counter "bEnableAimAssistKeyboard to '$ENABLE_AIM_ASSIST_KEYBOARD'" - sed -E -i "s/bEnableAimAssistKeyboard=[a-zA-Z]*/bEnableAimAssistKeyboard=$ENABLE_AIM_ASSIST_KEYBOARD/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${DROP_ITEM_MAX_NUM+x} ]]; then - e_with_counter "DropItemMaxNum to '$DROP_ITEM_MAX_NUM'" - sed -E -i "s/DropItemMaxNum=[0-9]*/DropItemMaxNum=$DROP_ITEM_MAX_NUM/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${DROP_ITEM_MAX_NUM_UNKO+x} ]]; then - e_with_counter "DropItemMaxNum_UNKO to '$DROP_ITEM_MAX_NUM_UNKO'" - sed -E -i "s/DropItemMaxNum_UNKO=[0-9]*/DropItemMaxNum_UNKO=$DROP_ITEM_MAX_NUM_UNKO/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${BASE_CAMP_MAX_NUM+x} ]]; then - e_with_counter "BaseCampMaxNum to '$BASE_CAMP_MAX_NUM'" - sed -E -i "s/BaseCampMaxNum=[0-9]*/BaseCampMaxNum=$BASE_CAMP_MAX_NUM/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${BASE_CAMP_WORKER_MAXNUM+x} ]]; then - e_with_counter "BaseCampWorkerMaxNum to '$BASE_CAMP_WORKER_MAXNUM'" - sed -E -i "s/BaseCampWorkerMaxNum=[0-9]*/BaseCampWorkerMaxNum=$BASE_CAMP_WORKER_MAXNUM/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${DROP_ITEM_ALIVE_MAX_HOURS+x} ]]; then - e_with_counter "DropItemAliveMaxHours to '$DROP_ITEM_ALIVE_MAX_HOURS'" - sed -E -i "s/DropItemAliveMaxHours=[+-]?([0-9]*[.])?[0-9]+/DropItemAliveMaxHours=$DROP_ITEM_ALIVE_MAX_HOURS/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${AUTO_RESET_GUILD_NO_ONLINE_PLAYERS+x} ]]; then - e_with_counter "bAutoResetGuildNoOnlinePlayers to '$AUTO_RESET_GUILD_NO_ONLINE_PLAYERS'" - sed -E -i "s/bAutoResetGuildNoOnlinePlayers=[a-zA-Z]*/bAutoResetGuildNoOnlinePlayers=$AUTO_RESET_GUILD_NO_ONLINE_PLAYERS/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${AUTO_RESET_GUILD_TIME_NO_ONLINE_PLAYERS+x} ]]; then - e_with_counter "AutoResetGuildTimeNoOnlinePlayers to '$AUTO_RESET_GUILD_TIME_NO_ONLINE_PLAYERS'" - sed -E -i "s/AutoResetGuildTimeNoOnlinePlayers=[+-]?([0-9]*[.])?[0-9]+/AutoResetGuildTimeNoOnlinePlayers=$AUTO_RESET_GUILD_TIME_NO_ONLINE_PLAYERS/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${GUILD_PLAYER_MAX_NUM+x} ]]; then - e_with_counter "GuildPlayerMaxNum to '$GUILD_PLAYER_MAX_NUM'" - sed -E -i "s/GuildPlayerMaxNum=[0-9]*/GuildPlayerMaxNum=$GUILD_PLAYER_MAX_NUM/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${BASE_CAMP_MAX_NUM_IN_GUILD+x} ]]; then - e_with_counter "BaseCampMaxNumInGuild to '$BASE_CAMP_MAX_NUM_IN_GUILD'" - sed -E -i "s/BaseCampMaxNumInGuild=[0-9]*/BaseCampMaxNumInGuild=$BASE_CAMP_MAX_NUM_IN_GUILD/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${PAL_EGG_DEFAULT_HATCHING_TIME+x} ]]; then - e_with_counter "PalEggDefaultHatchingTime to '$PAL_EGG_DEFAULT_HATCHING_TIME'" - sed -E -i "s/PalEggDefaultHatchingTime=[+-]?([0-9]*[.])?[0-9]+/PalEggDefaultHatchingTime=$PAL_EGG_DEFAULT_HATCHING_TIME/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${WORK_SPEED_RATE+x} ]]; then - e_with_counter "WorkSpeedRate to '$WORK_SPEED_RATE'" - sed -E -i "s/WorkSpeedRate=[+-]?([0-9]*[.])?[0-9]+/WorkSpeedRate=$WORK_SPEED_RATE/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${AUTO_SAVE_SPAN+x} ]]; then - e_with_counter "AutoSaveSpan to '$AUTO_SAVE_SPAN'" - sed -E -i "s/AutoSaveSpan=[+-]?([0-9]*[.])?[0-9]+/AutoSaveSpan=$AUTO_SAVE_SPAN/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${IS_MULTIPLAY+x} ]]; then - e_with_counter "bIsMultiplay to '$IS_MULTIPLAY'" - sed -E -i "s/bIsMultiplay=[a-zA-Z]*/bIsMultiplay=$IS_MULTIPLAY/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${IS_PVP+x} ]]; then - e_with_counter "bIsPvP to $IS_PVP" - sed -E -i "s/bIsPvP=[a-zA-Z]*/bIsPvP=$IS_PVP/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${HARDCORE+x} ]]; then - e_with_counter "bHardcore to $HARDCORE" - sed -E -i "s/bHardcore=[a-zA-Z]*/bHardcore=$HARDCORE/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${PAL_LOST+x} ]]; then - e_with_counter "bPalLost to $PAL_LOST" - sed -E -i "s/bPalLost=[a-zA-Z]*/bPalLost=$PAL_LOST/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${CHARACTER_RECREATE_IN_HARDCORE+x} ]]; then - e_with_counter "bCharacterRecreateInHardcore to $CHARACTER_RECREATE_IN_HARDCORE" - sed -E -i "s/bCharacterRecreateInHardcore=[a-zA-Z]*/bCharacterRecreateInHardcore=$CHARACTER_RECREATE_IN_HARDCORE/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${CAN_PICKUP_OTHER_GUILD_DEATH_PENALTY_DROP+x} ]]; then - e_with_counter "bCanPickupOtherGuildDeathPenaltyDrop to '$CAN_PICKUP_OTHER_GUILD_DEATH_PENALTY_DROP'" - sed -E -i "s/bCanPickupOtherGuildDeathPenaltyDrop=[a-zA-Z]*/bCanPickupOtherGuildDeathPenaltyDrop=$CAN_PICKUP_OTHER_GUILD_DEATH_PENALTY_DROP/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${ENABLE_NON_LOGIN_PENALTY+x} ]]; then - e_with_counter "bEnableNonLoginPenalty to '$ENABLE_NON_LOGIN_PENALTY'" - sed -E -i "s/bEnableNonLoginPenalty=[a-zA-Z]*/bEnableNonLoginPenalty=$ENABLE_NON_LOGIN_PENALTY/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${ENABLE_FAST_TRAVEL+x} ]]; then - e_with_counter "bEnableFastTravel to '$ENABLE_FAST_TRAVEL'" - sed -E -i "s/bEnableFastTravel=[a-zA-Z]*/bEnableFastTravel=$ENABLE_FAST_TRAVEL/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${IS_START_LOCATION_SELECT_BY_MAP+x} ]]; then - e_with_counter "bIsStartLocationSelectByMap to '$IS_START_LOCATION_SELECT_BY_MAP'" - sed -E -i "s/bIsStartLocationSelectByMap=[a-zA-Z]*/bIsStartLocationSelectByMap=$IS_START_LOCATION_SELECT_BY_MAP/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${EXIST_PLAYER_AFTER_LOGOUT+x} ]]; then - e_with_counter "bExistPlayerAfterLogout to '$EXIST_PLAYER_AFTER_LOGOUT'" - sed -E -i "s/bExistPlayerAfterLogout=[a-zA-Z]*/bExistPlayerAfterLogout=$EXIST_PLAYER_AFTER_LOGOUT/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${ENABLE_DEFENSE_OTHER_GUILD_PLAYER+x} ]]; then - e_with_counter "bEnableDefenseOtherGuildPlayer to '$ENABLE_DEFENSE_OTHER_GUILD_PLAYER'" - sed -E -i "s/bEnableDefenseOtherGuildPlayer=[a-zA-Z]*/bEnableDefenseOtherGuildPlayer=$ENABLE_DEFENSE_OTHER_GUILD_PLAYER/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${INVISBIBLE_OTHER_GUILD_BASE_CAMP_AREA_FX+x} ]]; then - e_with_counter "bInvisibleOtherGuildBaseCampAreaFX to '$INVISBIBLE_OTHER_GUILD_BASE_CAMP_AREA_FX'" - sed -E -i "s/bInvisibleOtherGuildBaseCampAreaFX=[a-zA-Z]*/bInvisibleOtherGuildBaseCampAreaFX=$INVISBIBLE_OTHER_GUILD_BASE_CAMP_AREA_FX/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${BUILD_AREA_LIMIT+x} ]]; then - e_with_counter "bBuildAreaLimit to '$BUILD_AREA_LIMIT'" - sed -E -i "s/bBuildAreaLimit=[a-zA-Z]*/bBuildAreaLimit=$BUILD_AREA_LIMIT/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${ITEM_WEIGHT_RATE+x} ]]; then - e_with_counter "ItemWeightRate to '$ITEM_WEIGHT_RATE'" - sed -E -i "s/ItemWeightRate=[+-]?([0-9]*[.])?[0-9]+/ItemWeightRate=$ITEM_WEIGHT_RATE/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${COOP_PLAYER_MAX_NUM+x} ]]; then - e_with_counter "CoopPlayerMaxNum to '$COOP_PLAYER_MAX_NUM'" - sed -E -i "s/CoopPlayerMaxNum=[0-9]*/CoopPlayerMaxNum=$COOP_PLAYER_MAX_NUM/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${MAX_PLAYERS+x} ]]; then - e_with_counter "max-players to '$MAX_PLAYERS'" - sed -E -i "s/ServerPlayerMaxNum=[0-9]*/ServerPlayerMaxNum=$MAX_PLAYERS/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${SERVER_NAME+x} ]]; then - e_with_counter "server name to '$SERVER_NAME'" - sed -E -i "s/ServerName=\"[^\"]*\"/ServerName=\"$SERVER_NAME\"/" "$GAME_SETTINGS_FILE" - if [[ "$SERVER_NAME" == *"###RANDOM###"* ]]; then - RAND_VALUE=$RANDOM - e "> Found standard template, using random numbers in server name" - sed -E -i -e "s/###RANDOM###/$RAND_VALUE/g" "$GAME_SETTINGS_FILE" - e "> Server name is now 'jammsen-docker-generated-$RAND_VALUE'" - fi - fi - if [[ -n ${SERVER_DESCRIPTION+x} ]]; then - e_with_counter "server description to '$SERVER_DESCRIPTION'" - sed -E -i "s/ServerDescription=\"[^\"]*\"/ServerDescription=\"$SERVER_DESCRIPTION\"/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${ADMIN_PASSWORD+x} ]]; then - e_with_counter "server admin password to [REDACTED]" - sed -E -i "s/AdminPassword=\"[^\"]*\"/AdminPassword=\"$ADMIN_PASSWORD\"/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${SERVER_PASSWORD+x} ]]; then - e_with_counter "server password to [REDACTED]" - sed -E -i "s/ServerPassword=\"[^\"]*\"/ServerPassword=\"$SERVER_PASSWORD\"/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${PUBLIC_PORT+x} ]]; then - e_with_counter "public port to '$PUBLIC_PORT'" - sed -E -i "s/PublicPort=[0-9]*/PublicPort=$PUBLIC_PORT/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${PUBLIC_IP+x} ]]; then - e_with_counter "public ip to '$PUBLIC_IP'" - sed -E -i "s/PublicIP=\"[^\"]*\"/PublicIP=\"$PUBLIC_IP\"/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${RCON_ENABLED+x} ]]; then - e_with_counter "rcon-enabled to '$RCON_ENABLED'" - sed -E -i "s/RCONEnabled=[a-zA-Z]*/RCONEnabled=$RCON_ENABLED/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${RCON_PORT+x} ]]; then - e_with_counter "RCONPort to '$RCON_PORT'" - sed -E -i "s/RCONPort=[0-9]*/RCONPort=$RCON_PORT/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${REGION+x} ]]; then - e_with_counter "Region to '$REGION'" - sed -E -i "s/Region=\"[^\"]*\"/Region=\"$REGION\"/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${USEAUTH+x} ]]; then - e_with_counter "bUseAuth to '$USEAUTH'" - sed -E -i "s/bUseAuth=[a-zA-Z]*/bUseAuth=$USEAUTH/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${BAN_LIST_URL+x} ]]; then - e_with_counter "BanListURL to '$BAN_LIST_URL'" - sed -E -i "s~BanListURL=\"[^\"]*\"~BanListURL=\"$BAN_LIST_URL\"~" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${RESTAPI_ENABLED+x} ]]; then - e_with_counter "RESTAPIEnabled to '$RESTAPI_ENABLED'" - sed -E -i "s/RESTAPIEnabled=[a-zA-Z]*/RESTAPIEnabled=$RESTAPI_ENABLED/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${RESTAPI_PORT+x} ]]; then - e_with_counter "RESTAPIPort to '$RESTAPI_PORT'" - sed -E -i "s/RESTAPIPort=[0-9]*/RESTAPIPort=$RESTAPI_PORT/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${SHOW_PLAYER_LIST+x} ]]; then - e_with_counter "bShowPlayerList to '$SHOW_PLAYER_LIST'" - sed -E -i "s/bShowPlayerList=[a-zA-Z]*/bShowPlayerList=$SHOW_PLAYER_LIST/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${CHAT_POST_LIMIT_PER_MINUTE+x} ]]; then - e_with_counter "ChatPostLimitPerMinute to '$CHAT_POST_LIMIT_PER_MINUTE'" - sed -E -i "s/ChatPostLimitPerMinute=[0-9]*/ChatPostLimitPerMinute=$CHAT_POST_LIMIT_PER_MINUTE/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${CROSSPLAY_PLATFORMS+x} ]]; then - e_with_counter "CrossplayPlatforms to '$CROSSPLAY_PLATFORMS'" - sed -E -i "s/CrossplayPlatforms=\([^)]*\)/CrossplayPlatforms=$CROSSPLAY_PLATFORMS/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${ENABLE_WORLD_BACKUP+x} ]]; then - e_with_counter "bIsUseBackupSaveData to '$ENABLE_WORLD_BACKUP'" - sed -E -i "s/bIsUseBackupSaveData=[a-zA-Z]*/bIsUseBackupSaveData=$ENABLE_WORLD_BACKUP/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${LOG_FORMAT_TYPE+x} ]]; then - e_with_counter "LogFormatType to '$LOG_FORMAT_TYPE'" - sed -E -i "s/LogFormatType=[a-zA-Z]*/LogFormatType=$LOG_FORMAT_TYPE/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${SUPPLY_DROP_SPAN+x} ]]; then - e_with_counter "SupplyDropSpan to '$SUPPLY_DROP_SPAN'" - sed -E -i "s/SupplyDropSpan=[0-9]*/SupplyDropSpan=$SUPPLY_DROP_SPAN/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${ENABLE_PREDATOR_BOSS_PAL+x} ]]; then - e_with_counter "EnablePredatorBossPal to '$ENABLE_PREDATOR_BOSS_PAL'" - sed -E -i "s/EnablePredatorBossPal=[a-zA-Z]*/EnablePredatorBossPal=$ENABLE_PREDATOR_BOSS_PAL/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${MAX_BUILDING_LIMIT_NUM+x} ]]; then - e_with_counter "MaxBuildingLimitNum to '$MAX_BUILDING_LIMIT_NUM'" - sed -E -i "s/MaxBuildingLimitNum=[0-9]*/MaxBuildingLimitNum=$MAX_BUILDING_LIMIT_NUM/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${SERVER_REPLICATE_PAWN_CULL_DISTANCE+x} ]]; then - e_with_counter "ServerReplicatePawnCullDistance to '$SERVER_REPLICATE_PAWN_CULL_DISTANCE'" - sed -E -i "s/ServerReplicatePawnCullDistance=[+-]?([0-9]*[.])?[0-9]+/ServerReplicatePawnCullDistance=$SERVER_REPLICATE_PAWN_CULL_DISTANCE/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${ALLOW_GLOBAL_PALBOX_EXPORT+x} ]]; then - e_with_counter "bAllowGlobalPalboxExport to '$ALLOW_GLOBAL_PALBOX_EXPORT'" - sed -E -i "s/bAllowGlobalPalboxExport=[a-zA-Z]*/bAllowGlobalPalboxExport=$ALLOW_GLOBAL_PALBOX_EXPORT/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${ALLOW_GLOBAL_PALBOX_IMPORT+x} ]]; then - e_with_counter "bAllowGlobalPalboxImport to '$ALLOW_GLOBAL_PALBOX_IMPORT'" - sed -E -i "s/bAllowGlobalPalboxImport=[a-zA-Z]*/bAllowGlobalPalboxImport=$ALLOW_GLOBAL_PALBOX_IMPORT/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${EQUIPMENT_DURABILITY_DAMAGE_RATE+x} ]]; then - e_with_counter "EquipmentDurabilityDamageRate to '$EQUIPMENT_DURABILITY_DAMAGE_RATE'" - sed -E -i "s/EquipmentDurabilityDamageRate=[+-]?([0-9]*[.])?[0-9]+/EquipmentDurabilityDamageRate=$EQUIPMENT_DURABILITY_DAMAGE_RATE/" "$GAME_SETTINGS_FILE" - fi - if [[ -n ${ITEM_CONTAINER_FORCE_MARK_DIRTY_INTERVAL+x} ]]; then - e_with_counter "ItemContainerForceMarkDirtyInterval to '$ITEM_CONTAINER_FORCE_MARK_DIRTY_INTERVAL'" - sed -E -i "s/ItemContainerForceMarkDirtyInterval=[+-]?([0-9]*[.])?[0-9]+/ItemContainerForceMarkDirtyInterval=$ITEM_CONTAINER_FORCE_MARK_DIRTY_INTERVAL/" "$GAME_SETTINGS_FILE" + # if SERVER_NAME contains ###RANDOM###, replace it now + if [[ "${SERVER_NAME:-}" == *"###RANDOM###"* ]]; then + # generate a 6-char alphanumeric token + rand="$(tr -dc 'A-Za-z0-9' "${GAME_SETTINGS_FILE}" es ">>> Finished setting up PalWorldSettings.ini" } @@ -422,12 +65,7 @@ function setup_rcon_yaml () { if [[ -n ${RCON_ENABLED+x} ]] && [ "$RCON_ENABLED" == "true" ] ; then ei ">>> RCON is enabled - Setting up rcon.yaml ..." if [[ -n ${RCON_PORT+x} ]]; then - sed -i "s/###RCON_PORT###/$RCON_PORT/" "$RCON_CONFIG_FILE" - else - ee "> RCON_PORT is not set, please set it for RCON functionality to work!" - fi - if [[ -n ${ADMIN_PASSWORD+x} ]]; then - sed -i "s/###ADMIN_PASSWORD###/$ADMIN_PASSWORD/" "$RCON_CONFIG_FILE" + envsubst < "$RCON_CONFIG_FILE" | sponge "$RCON_CONFIG_FILE" else ee "> RCON_PORT is not set, please set it for RCON functionality to work!" fi