> For the complete documentation index, see [llms.txt](https://kumobooks.gitbook.io/mip-hyperlink-chat-system/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://kumobooks.gitbook.io/mip-hyperlink-chat-system/fundamentals/setup-on-a-new-project.md).

# Setup on a new project

<details>

<summary>Step 1: Prerequisite</summary>

* Skip step 1, 2 if u want to use the plugin from engine content and **Enable MIPChatSystem in Plugins setting**

1. Copy MIPChatSystem and paste it in new project Plugins folder
2. Copy the settings and paste it in new project DefaultGame.ini

```
[/Script/MIPChatSystem.MIPChatSettings]
StyleConfigFilePath=/MIPChatSystem/DataAsset/DA_ChatTextBlockStyles.DA_ChatTextBlockStyles
DefaultChatItemWidgetClass=WidgetBlueprintGeneratedClass'/MIPChatSystem/Widgets/W_ChatItem.W_ChatItem_C'
DefaultChatChannelStylesMap=(((TagName="Chat.Channel.System"), BlueprintGeneratedClass'"/MIPChatSystem/Assets/Styles/BP_CCS_System.BP_CCS_System_C"'),((TagName="Chat.Channel.Server"), BlueprintGeneratedClass'"/MIPChatSystem/Assets/Styles/BP_CCS_Server.BP_CCS_Server_C"'),((TagName="Chat.Channel.General"), BlueprintGeneratedClass'"/MIPChatSystem/Assets/Styles/BP_CCS_General.BP_CCS_General_C"'),((TagName="Chat.Channel.Guild"), BlueprintGeneratedClass'"/MIPChatSystem/Assets/Styles/BP_CCS_Guild.BP_CCS_Guild_C"'),((TagName="Chat.Channel.Party"), BlueprintGeneratedClass'"/MIPChatSystem/Assets/Styles/BP_CCS_Party.BP_CCS_Party_C"'),((TagName="Chat.Channel.Whisper"), BlueprintGeneratedClass'"/MIPChatSystem/Assets/Styles/BP_CCS_Whisper.BP_CCS_Whisper_C"'),((TagName="Chat.Channel.World"), BlueprintGeneratedClass'"/MIPChatSystem/Assets/Styles/BP_CCS_World.BP_CCS_World_C"'))
DefaultChatTextBlockStyle=(Font=(FontObject=Font'"/Engine/EngineFonts/Roboto.Roboto"',FontMaterial=None,OutlineSettings=(OutlineSize=0,bSeparateFillAlpha=False,bApplyOutlineToDropShadows=False,OutlineMaterial=None,OutlineColor=(R=0.000000,G=0.000000,B=0.000000,A=1.000000)),TypefaceFontName="Regular",Size=12,LetterSpacing=0),ColorAndOpacity=(SpecifiedColor=(R=1.000000,G=0.000000,B=1.000000,A=1.000000),ColorUseRule=UseColor_Specified),ShadowOffset=(X=0.000000,Y=0.000000),ShadowColorAndOpacity=(R=0.000000,G=0.000000,B=0.000000,A=1.000000),SelectedBackgroundColor=(SpecifiedColor=(R=1.000000,G=0.000000,B=1.000000,A=1.000000),ColorUseRule=UseColor_Foreground),HighlightColor=(SpecifiedColor=(R=0.000000,G=0.000000,B=0.000000,A=1.000000),ColorUseRule=UseColor_Specified),HighlightShape=(ImageSize=(X=32.000000,Y=32.000000),Margin=(Left=0.000000,Top=0.000000,Right=0.000000,Bottom=0.000000),TintColor=(SpecifiedColor=(R=1.000000,G=1.000000,B=1.000000,A=1.000000),ColorUseRule=UseColor_Specified),OutlineSettings=(CornerRadii=(X=0.000000,Y=0.000000,Z=0.000000,W=1.000000),Color=(SpecifiedColor=(R=0.000000,G=0.000000,B=0.000000,A=0.000000),ColorUseRule=UseColor_Specified),Width=0.000000,RoundingType=HalfHeightRadius,bUseBrushTransparency=False),ResourceObject=None,ResourceName="",UVRegion=(Min=(X=0.000000,Y=0.000000),Max=(X=0.000000,Y=0.000000),bIsValid=0),DrawAs=Image,Tiling=NoTile,Mirroring=NoMirror,ImageType=NoImage,bIsDynamicallyLoaded=False),StrikeBrush=(ImageSize=(X=32.000000,Y=32.000000),Margin=(Left=0.000000,Top=0.000000,Right=0.000000,Bottom=0.000000),TintColor=(SpecifiedColor=(R=1.000000,G=1.000000,B=1.000000,A=1.000000),ColorUseRule=UseColor_Specified),OutlineSettings=(CornerRadii=(X=0.000000,Y=0.000000,Z=0.000000,W=1.000000),Color=(SpecifiedColor=(R=0.000000,G=0.000000,B=0.000000,A=0.000000),ColorUseRule=UseColor_Specified),Width=0.000000,RoundingType=HalfHeightRadius,bUseBrushTransparency=False),ResourceObject=None,ResourceName="",UVRegion=(Min=(X=0.000000,Y=0.000000),Max=(X=0.000000,Y=0.000000),bIsValid=0),DrawAs=Image,Tiling=NoTile,Mirroring=NoMirror,ImageType=NoImage,bIsDynamicallyLoaded=False),UnderlineBrush=(ImageSize=(X=32.000000,Y=32.000000),Margin=(Left=0.000000,Top=0.000000,Right=0.000000,Bottom=0.000000),TintColor=(SpecifiedColor=(R=1.000000,G=1.000000,B=1.000000,A=1.000000),ColorUseRule=UseColor_Specified),OutlineSettings=(CornerRadii=(X=0.000000,Y=0.000000,Z=0.000000,W=1.000000),Color=(SpecifiedColor=(R=0.000000,G=0.000000,B=0.000000,A=0.000000),ColorUseRule=UseColor_Specified),Width=0.000000,RoundingType=HalfHeightRadius,bUseBrushTransparency=False),ResourceObject=None,ResourceName="",UVRegion=(Min=(X=0.000000,Y=0.000000),Max=(X=0.000000,Y=0.000000),bIsValid=0),DrawAs=Image,Tiling=NoTile,Mirroring=NoMirror,ImageType=NoImage,bIsDynamicallyLoaded=False),TransformPolicy=None,OverflowPolicy=Clip)
DefaultChatTabsAndAllowedChannels=(("Chat1", (GameplayTags=((TagName="Chat.Channel.Server"),(TagName="Chat.Channel.General"),(TagName="Chat.Channel.Guild"),(TagName="Chat.Channel.Party"),(TagName="Chat.Channel.Whisper"),(TagName="Chat.Channel.World"),(TagName="Chat.Channel.System")))),("Chat2", (GameplayTags=((TagName="Chat.Channel.System"),(TagName="Chat.Channel.Whisper")))),("Chat3", (GameplayTags=((TagName="Chat.Channel.Server"),(TagName="Chat.Channel.System")))),("Chat4", (GameplayTags=((TagName="Chat.Channel.Server"),(TagName="Chat.Channel.System"),(TagName="Chat.Channel.General")))))
DefaultNewChatTabAllowedChannels=(GameplayTags=((TagName="Chat.Channel.Server")))
DefaultChatTabWidgetClass=WidgetBlueprintGeneratedClass'/MIPChatSystem/Widgets/ChatTab/W_ChatTab.W_ChatTab_C'
DefaultChatTabTitleWidgetClass=WidgetBlueprintGeneratedClass'/MIPChatSystem/Widgets/ChatTab/W_ChatTabTitle.W_ChatTabTitle_C'
DefaultChatTabsContainerWidgetClass=WidgetBlueprintGeneratedClass'/MIPChatSystem/Widgets/ChatTab/W_ChatTabsContainer.W_ChatTabsContainer_C'
DefaultMessageReceivedProcessorClass=None
DefaultRequireSenderNameChannels=(GameplayTags=((TagName="Chat.Channel.General"),(TagName="Chat.Channel.Guild"),(TagName="Chat.Channel.Party"),(TagName="Chat.Channel.Server"),(TagName="Chat.Channel.Whisper"),(TagName="Chat.Channel.World")))
DefaultChatMainWidgetClass=WidgetBlueprintGeneratedClass'/MIPChatSystem/Widgets/W_ChatMainWidget.W_ChatMainWidget_C'
DefaultAllowedChannelItemWidgetClass=WidgetBlueprintGeneratedClass'/MIPChatSystem/Widgets/ChatTabSetting/W_ChatTabAllowedChannelItem.W_ChatTabAllowedChannelItem_C'
DefaultChatCommandsMap=(("a", (TagName="Chat.Channel.General")),("g", (TagName="Chat.Channel.Guild")),("p", (TagName="Chat.Channel.Party")),("s", (TagName="Chat.Channel.Server")),("w", (TagName="Chat.Channel.Whisper")),("h", (TagName="Chat.Channel.World")),("r", (TagName="Chat.Channel")),("dance", (TagName="ChatCommand.AnimAction.Dance")),("bye", (TagName="ChatCommand.AnimAction.Bye")),("hello", (TagName="ChatCommand.AnimAction.Hello")),("hi", (TagName="ChatCommand.AnimAction.Hello")))
+DefaultDecoratorClasses=BlueprintGeneratedClass'/MIPChatSystem/DataAsset/BP_RichChatTextBlockHyperlinkDecorator.BP_RichChatTextBlockHyperlinkDecorator_C'
+DefaultDecoratorClasses=BlueprintGeneratedClass'/MIPChatSystem/DataAsset/BP_RichChatTextBlockImageDecorator.BP_RichChatTextBlockImageDecorator_C'
DefaultPlayerInfoProcessorClass=Class'/Script/MIPChatSystem.MIPChatBasePlayerInfoProcessor'
DefaultNameplateWidgetClass=WidgetBlueprintGeneratedClass'/MIPChatSystem/Widgets/W_Nameplate.W_Nameplate_C'
DefaultProfanityWordItemWidgetClass=WidgetBlueprintGeneratedClass'/MIPChatSystem/Widgets/ChatTabSetting/Profanity/W_ProfanityWordItem.W_ProfanityWordItem_C'
DefaultChatThrottlersMap=(((TagName="Chat.Channel.Server"), (CooldownTime=5.000000)))
DefaultChatChatItemLimit=20
```

Your DefaultGame.ini will look something like this.

<img src="/files/p0SMxdkoabNdKIMwhVDZ" alt="" data-size="original">

3. Run your project, press `Yes` when asked `Would you like to rebuild them now?`\
   \
   &#x20;![](/files/jYfA68ijRq5bP14vNlxE)

</details>

<details>

<summary>Step 2: Add Player Controller Components</summary>

1. [UMIPChatItemLinkerComponent](/mip-hyperlink-chat-system/key-components/player-controller-components.md#umipchatitemlinkercomponent)
2. [UMIPHyperLinkTextClickedListenerComponent](/mip-hyperlink-chat-system/key-components/player-controller-components.md#umiphyperlinktextclickedlistenercomponent)
3. [UMIPPlayerNameClickedListenerComponent](/mip-hyperlink-chat-system/key-components/player-controller-components.md#umipplayernameclickedlistenercomponent)
4. [UMIPChatWidgetCreatorComponent](/mip-hyperlink-chat-system/key-components/player-controller-components.md#umipchatwidgetcreatorcomponent)&#x20;
5. [UMIPUnrealRepSendMessageProcessor](/mip-hyperlink-chat-system/key-components/player-controller-components.md#umipunrealrepsendmessageprocessor)
6. [UMIPClientMessageReceiverComponent](/mip-hyperlink-chat-system/key-components/player-controller-components.md#umipclientmessagereceivercomponent)
7. [UMIPChatCommandListenerComponent](/mip-hyperlink-chat-system/key-components/player-controller-components.md#umipchatcommandlistenercomponent)
8. [UMIPActionChatCommandHandlerComponent](/mip-hyperlink-chat-system/key-components/player-controller-components.md#umipactionchatcommandhandlercomponent)
9. [UMIPEmoticonHandlerComponent](/mip-hyperlink-chat-system/key-components/player-controller-components.md#umipemoticonhandlercomponent)
10. [UMIPUnrealRepChatThrottlerComponent](/mip-hyperlink-chat-system/key-components/player-controller-components.md#umipunrealrepchatthrottlercomponent)

</details>

<details>

<summary>Step 3: Add Game State Components</summary>

1. [UMIPBaseMessageBroadcasterComponent](/mip-hyperlink-chat-system/key-components/game-state-components.md#umipbasemessagebroadcastercomponent)

</details>

<details>

<summary>Step 4: Add Game Mode Components</summary>

1. [UMIPPlayerSessionListenerComponent](/mip-hyperlink-chat-system/key-components/game-mode-components.md#umipplayersessionlistenercomponent)

</details>

<details>

<summary>Step 4: Choose AMIPChatBasePlayerController for your Player Controller Parent Class</summary>

And copy the key binding for showing chat and cursor.

![](/files/poiUd0C82GZh8ros46RK)

</details>

<details>

<summary>Step 5: Choose AMIPChatBaseCharacter for your Character Parent Class</summary>

</details>

<details>

<summary>Step 6: Choose AMIPChatBasePlayerState for your PlayerState Parent Class</summary>

</details>

<details>

<summary>Step 7: Choose AMIPChatBaseGameMode for your GameMode Parent Class</summary>

</details>

<details>

<summary>Step 8: Choose AMIPChatWorldSettings as the world settings</summary>

Project Settings > Engine > General Settings

<img src="/files/H7T4Rho0PBpZGeBoBp4h" alt="" data-size="original">

Then have the editor restarted.\
Fill in player info in the world settings tab for as many player as u want.

![](/files/izGTYpNdZ4UGHWmWyFI4)

</details>
