StreamTK VS Chat is a performance-focused Paper plugin that turns TikTok LIVE activity into real Minecraft gameplay events in real time. Likes, gifts, comments, joins, follows, shares, and subscriptions can each trigger customizable actions through simple YAML profiles.
Designed for creators and event servers, the plugin gives you full control over how each interaction appears and behaves in-game: broadcast messages, action bar alerts, titles, command execution, and entity spawns. Gift handling supports per-gift ID logic and an auto-updating catalog system, so you can quickly map new gifts as they appear in your streams.
You can run it live with operational controls, monitor bridge status, and test setups safely before going online. The architecture is lightweight, editable, and built for fast iteration during active streams.
Key Features:
- Real TikTok LIVE integration (not just simulation)
- Event coverage: likes, gifts, comments, joins, follows, shares, subscriptions
- Per-event and per-gift customization via YAML profiles
- Action types: chat broadcast, action bar, titles, command execution, spawn actions
- Gift catalog system: auto tracks gift IDs and names, supports optional coin values
- Live control commands: start, stop, reload, status, fetch gifts, and simulate
- Targeted effects: optional affected-player filtering
- Safe fallback behavior for unknown gifts and dynamic gift discovery
- /streamtkvschat reload
Reload plugin config/profile and reconnect bridge - /streamtkvschat status
Show current bridge state - /streamtkvschat start
Start TikTok LIVE bridge - /streamtkvschat stop
Stop TikTok LIVE bridge - /streamtkvschat fetchgifts
Pull currently discovered gifts into catalog - /streamtkvschat simulate <event> <user> [...]
Test event actions without waiting for real stream events
Code:
tikTok:
# Use your TikTok handle without @, or quote it if you include @.
# Examples: my_live_user OR "@my_live_user"
username: "your_tiktok_username"
profiles:
active: default
settings:
logStartup: true
enableSimulation: true
broadcastToServer: true
retryOnConnectionFailure: false
retryConnectionTimeoutSeconds: 10
stopBridgeWhenHostOffline: true
players:
# Only these players receive player-targeted visuals and commands.
# Leave the list empty to affect everyone online.
affected:
- "LuisSolder"
- "Evinder"
messages:
prefix: "&8[&bStreamTK&8] &7"
reloaded: "&aConfiguration reloaded."
bridgeStatus: "&eBridge status: &f<status>"
simulationStarted: "&aSimulated <event> event for <user>."
Event Configuration (default.yml)
Code:
events:
like:
enabled: true
actionbar:
text: "&d<sender> sent likes: &f<giftCount> &7(total <total>)"
execute:
asPlayer: false
commands:
- "say <sender> is supporting with likes"
goals:
500:
recurring: true
actions:
actionbar:
text: "&a<sender> reached 500 likes!"
1000:
recurring: false
actions:
title:
text: "&6<sender>"
subtitle: "&fReached 1000 likes!"
fadeIn: 10
stay: 60
fadeOut: 20
gift:
enabled: true
actionbar:
text: "&d<sender> &fsent &e<gift> &7(x<giftCount>)"
# Gift IDs below are TikTok gift IDs.
# Use the real IDs from available_gifts.txt or the seed file.
gifts:
# Basic gift: Rose
"5655":
actions:
broadcastMessages:
- "&d[Gift] &fRose &7(| ID: 5655 | Sender: <sender>)"
actionbar:
text: "&dRose received from <sender>"
title:
text: "&dRose"
subtitle: "&fGift ID 5655 detected"
fadeIn: 10
stay: 50
fadeOut: 20
# Basic gift: Heart
"6247":
actions:
broadcastMessages:
- "&f[Gift] &fHeart &7(| ID: 6247 | Sender: <sender>)"
actionbar:
text: "&fHeart received from <sender>"
title:
text: "&fHeart"
subtitle: "&fGift ID 6247 detected"
fadeIn: 10
stay: 50
fadeOut: 20
# Basic gift: Thumbs Up
"6246":
actions:
broadcastMessages:
- "&a[Gift] &fThumbs Up &7(| ID: 6246 | Sender: <sender>)"
actionbar:
text: "&aThumbs Up received from <sender>"
title:
text: "&aThumbs Up"
subtitle: "&fGift ID 6246 detected"
fadeIn: 10
stay: 50
fadeOut: 20
# Basic gift: GG
"8286":
actions:
broadcastMessages:
- "&6[Gift] &fGG &7(| ID: 8286 | Sender: <sender>)"
actionbar:
text: "&6GG received from <sender>"
title:
text: "&6GG"
subtitle: "&fGift ID 8286 detected"
fadeIn: 10
stay: 50
fadeOut: 20
# Basic gift: Perfume
"5658":
actions:
broadcastMessages:
- "&b[Gift] &fPerfume &7(| ID: 5658 | Sender: <sender>)"
actionbar:
text: "&bPerfume received from <sender>"
title:
text: "&bPerfume"
subtitle: "&fGift ID 5658 detected"
fadeIn: 10
stay: 50
fadeOut: 20
spawn:
skeleton:
type: SKELETON
amount: 1
yOffset: 0.0
addSenderName: true
senderNameColor: "&f"
# Real gift: Gift Box
"6834":
actions:
broadcastMessages:
- "&a[Gift] &fGift Box &7(| ID: 6834 | Sender: <sender>)"
actionbar:
text: "&aGift Box received from <sender>"
title:
text: "&aGift Box"
subtitle: "&fGift ID 6834 detected"
fadeIn: 10
stay: 60
fadeOut: 20
spawn:
husk:
type: HUSK
amount: 1
yOffset: 0.0
addSenderName: true
senderNameColor: "&6"
# Real gift: Flower Overflow
"6148":
actions:
broadcastMessages:
- "&6[Gift] &fFlower Overflow &7(| ID: 6148 | Sender: <sender>)"
actionbar:
text: "&6Flower Overflow received from <sender>"
title:
text: "&6Flower Overflow"
subtitle: "&fGift ID 6148 detected"
fadeIn: 10
stay: 50
fadeOut: 20
spawn:
creeper:
type: CREEPER
amount: 1
yOffset: 0.0
addSenderName: true
senderNameColor: "&a"
# Real gift: White Rose
"8239":
actions:
broadcastMessages:
- "&f[Gift] &fWhite Rose &7(| ID: 8239 | Sender: <sender>)"
actionbar:
text: "&fWhite Rose received from <sender>"
title:
text: "&fWhite Rose"
subtitle: "&fGift ID 8239 detected"
fadeIn: 10
stay: 60
fadeOut: 20
spawn:
husk:
type: HUSK
amount: 1
yOffset: 0.0
addSenderName: true
senderNameColor: "&6"
"0000":
actions:
broadcastMessages:
- "&b[Gift] &fUnknown Gift &7(| ID: <giftId> | Sender: <sender>)"
actionbar:
text: "&bUnknown gift id <giftId> from <sender>"
title:
text: "&bUnknown gift detected"
subtitle: "&fAdd the real TikTok ID here once discovered"
fadeIn: 10
stay: 50
fadeOut: 20
comment:
enabled: true
broadcastMessages:
- "&b[TikTok] &f<sender>&7: &f<message>"
hooks:
funny:
containsMatch: true
caseSensitive: false
actions:
title:
text: "&eFUNNY WORD"
subtitle: "&f<sender> triggered the hook"
fadeIn: 5
stay: 40
fadeOut: 10
hello:
containsMatch: true
caseSensitive: false
actions:
broadcastMessages:
- "&a[TikTok] Hello hook detected from <sender>."
join:
enabled: true
actionbar:
text: "&a<sender> joined the live"
follow:
enabled: true
actions:
broadcastMessages:
- "&6[Follow] &f<sender> started following the live"
execute:
asPlayer: false
commands:
- "say <sender> started following"
title:
text: "&6<sender>"
subtitle: "&fStarted following the live"
fadeIn: 8
stay: 50
fadeOut: 15
share:
enabled: true
actions:
broadcastMessages:
- "&f[Share] &f<sender> shared the live"
execute:
asPlayer: false
commands:
- "say <sender> shared the live"
actionbar:
text: "&f<sender> shared the live"
subscribe:
enabled: true
actions:
broadcastMessages:
- "&c[Subscribe] &f<sender> subscribed to the live"
execute:
asPlayer: false
commands:
- "say <sender> subscribed to the live"
title:
text: "&c<sender>"
subtitle: "&fSubscribed to the live"
fadeIn: 10
stay: 60
fadeOut: 20
