# 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="https://212510588-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F4JR9F4Xrkwgwmyb4kARy%2Fuploads%2F1PoraPN8kolCr01Pd2II%2FScreenshot%202023-09-25%20120159.png?alt=media&#x26;token=287930ac-6b76-48c9-a133-ba22e8fd3cc8" alt="" data-size="original">

3. Run your project, press `Yes` when asked `Would you like to rebuild them now?`\
   \
   &#x20;![](https://212510588-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F4JR9F4Xrkwgwmyb4kARy%2Fuploads%2FMvk5oy0UAQoJvNiqFgce%2Fimage.png?alt=media\&token=db19fbe7-d79e-4ba0-897a-5547a625eff2)

</details>

<details>

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

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

</details>

<details>

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

1. [UMIPBaseMessageBroadcasterComponent](https://kumobooks.gitbook.io/mip-hyperlink-chat-system/key-components/game-state-components#umipbasemessagebroadcastercomponent)

</details>

<details>

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

1. [UMIPPlayerSessionListenerComponent](https://kumobooks.gitbook.io/mip-hyperlink-chat-system/key-components/game-mode-components#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.

![](https://212510588-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F4JR9F4Xrkwgwmyb4kARy%2Fuploads%2F79sQTgiRf6s8IsPFVrt9%2Fimage.png?alt=media\&token=b3876250-da74-4431-b543-c99e8422f040)

</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="https://212510588-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F4JR9F4Xrkwgwmyb4kARy%2Fuploads%2F9MygXOHr98FAiBYy1KgD%2Fimage.png?alt=media&#x26;token=4276832f-55ff-48e9-8752-1ecc544eb6e9" 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.

![](https://212510588-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F4JR9F4Xrkwgwmyb4kARy%2Fuploads%2FXq6FSBXKsPlq4OPO5sy4%2Fimage.png?alt=media\&token=6a029c01-131e-4b18-866d-35b80fef7607)

</details>
