只有一个插件(TikForge_Vanilla.jar),两个指令:/tikforge 与网站通信,/survival 让事情在游戏里真实发生。
Survival 不是一个小游戏:它就是你原本的世界。这个插件安装在你已有的生存服务器上——不需要搭建竞技场,也不需要学新的游戏指令——从那一刻起,你 TikTok 直播间收到的礼物就会真实地发生在游戏里。插件还内置了连接服务器和 TikForge 控制台的桥接功能:不需要安装其他 jar。
让事情发生有两种方式,从一开始就应该分清楚:
下载 TikForge_Vanilla.jar,放进服务器(Paper 或兼容端,Minecraft 1.21.10 或更新版本,Java 21)的 plugins/ 文件夹,然后重启。
版本要求是真实限制,不是保守建议:在更旧的 1.21 版本上,插件需要用到的一些东西是缺失的,所以插件不会等到开播才崩溃,而是会自己停用,并在控制台里写明原因。首次启动后会出现 plugins/TikForge_Vanilla/ 文件夹,里面有 config.yml。
需要权限 tikforge.link(默认:管理员)。
/tikforge link <token>把服务器连接到你的 TikForge 账号。令牌可以在控制台的 游戏 → Minecraft → Survival 标签页里找到。从这一刻起,插件会每秒向网站询问一次是否有待执行的动作。
这个令牌和 TntCube 面板用的是同一个:每个账号只有一个令牌,对所有 Minecraft 插件都通用。如果重新生成,另一个插件也会随之失效,两台服务器都需要重新配置。
例如:/tikforge link 3f9a2c...e71b
/tikforge unlink断开服务器连接。插件仍会保留安装,但不再接收动作;/survival 指令依然可以正常使用,因为它们并不经过网站。
/tikforge status显示插件是否已连接,以及已经查询网站多长时间了。如果礼物没有任何反应,这是首先要查看的地方。
/tikforge update检查是否有新版本,如果有会下载到 plugins/update/。不会立即更新:Bukkit 会在下次重启时自动替换 jar 文件。
那些只影响单个人的动作(闪电、状态效果、监狱、传送……)需要知道该对谁生效。规则只有一条,指令和控制台动作都适用:
main_user 并且在线,目标就是他——通常是主播本人;fallback_to_everyone: true 时动作依然会作用在其他所有人身上,而不是被丢弃:因为收到这里时,打赏已经付过了。设为 false 时动作会被丢弃;main_user 为空,目标就是所有在线玩家。/survival 指令会作用于按上述规则解析出的目标中的第一个。而那些天生属于世界层面的动作(天气、时间、酸雨)会忽略目标设置。
如果没有任何目标在线,指令会回复没有在线的目标玩家,而不是假装成功执行了。例外是 azioni、bersaglio、stato、ricarica 和 acidrain,它们不需要任何人在线。
几乎每个指令都接受最后一个可选参数——送礼者的名字。这个名字会出现在两个地方:生物或物品上方,以深红色粗体显示,以及动作名下方屏幕中央的提示文字里。
只由数字组成的参数永远不会被当作名字:/survival tnt 3 5 会发射三个威力为五的 TNT,而不会把捐赠者叫做"5"。如果你想跳过中间的某个数字参数,仍然需要显式写出它,因为参数的位置很重要。
一眼看清 /survival 能做的所有事。每个指令在下面的章节里都有完整说明,包括参数、限制和示例。
| 指令 | 作用 |
|---|---|
/survival fulmini <数量> [名字] | 真实的闪电,带伤害和燃烧效果,劈在目标头上。 |
/survival tnt <数量> <威力> [名字] | 在目标上方十二格处引爆的 TNT,引信两秒半。弹坑会保留下来。 |
/survival meteorite [名字] | 一个熔岩立方体落在玩家附近——绝不会砸中——并炸出一个弹坑。 |
/survival pioggiameteoriti [名字] | 十五秒内每半秒落下一个陨石,比单个的那种要小。 |
/survival tornado [名字] | 三十秒的龙卷风追着玩家跑,卷走方块、吸走实体。会拆掉附近的建筑。 |
/survival poweredcreeper [名字] | 一个充能苦力怕在三格范围内出现,立刻锁定玩家。 |
/survival summon <生物> [名字] | 在目标身边召唤一个生物,已经锁定他并且不怕阳光。 |
/survival give <物品> <附魔> [数量] [名字] | 发放一件物品,普通或附魔。如果背包满了,多余的会掉在脚下。 |
/survival mineralset <材质> [名字] | 一整套该材质的装备:护甲和工具,按材质实际拥有的种类给。 |
/survival fuffi [名字] | 一只已经驯服的红项圈狼,出现在玩家身边并跟随他。 |
/survival effect <效果> [秒数] [等级] [名字] | 施加一个药水效果:既能当礼物也能当恶作剧,取决于填的效果。 |
/survival clearinventory [名字] | 清空背包、身上护甲和副手。物品会被直接删除,无法找回。 |
/survival randomtp [名字] | 在两千格范围内把目标传送到一个真的能站住的地方。 |
/survival bimbo [名字] | 玩家缩小到不足一格高,持续一分钟。 |
/survival upsidedown [名字] | 画面翻转并旋转十五秒,同时带有恶心效果。 |
/survival jumpscare | 黑屏、末影人尖叫和守卫者脸六秒。唯一一个没有屏幕文字提示的指令。 |
/survival prison <秒数> [名字] | 在玩家上方出现坚不可摧的玻璃牢笼。秒数会累加到剩余时间上。 |
/survival reducetime <秒数> [名字] | 从进行中的监禁时间里扣掉秒数;归零时立即释放。 |
/survival floorislava [名字] | 在空中建造一个玻璃竞技场,岩浆不断上涨:爬到顶端的金块处即为获胜。 |
/survival acidrain <秒数> [名字] | 所有维度下雨,露天的人每秒扣半颗心。不需要在线目标。 |
/survival bersaglio <玩家|所有人> | 不用打开 config.yml 就能更改 main_user。 |
/survival stato | 五行摘要:目标、监禁状态、竞技场、指令执行开关。 |
/survival azioni | 列出插件能从控制台执行的子指令及动作代码。 |
/survival ricarica | 重新读取 config.yml,无需重启服务器。不会重新建立连接。 |
下面和后续章节中的所有指令都属于 /survival(别名 /sv),需要权限 tikforge.survival.use,默认仅限管理员使用。
/survival fulmini <数量> [名字]真实的闪电——带伤害和燃烧,和原版一样——劈在目标头上,每六刻(约每秒三次)一个,而不是全部同时出现:如果重叠在同一瞬间,看起来就只是一道闪光。
| 参数 | 默认值 | 限制 | 作用 |
|---|---|---|---|
数量 | 1 | 1–20 | 连续几道闪电。 |
名字 | 无 | — | 屏幕上显示的捐赠者名字。 |
示例:/survival fulmini 5 Marco
/survival tnt <数量> <威力> [名字]已引爆的 TNT 出现在目标上方十二格处,随机散布在两格半径内,引信两秒半:足够看着它落下并逃跑的时间。如果填了捐赠者名字,每个 TNT 上方都会写着这个名字。
| 参数 | 默认值 | 限制 | 作用 |
|---|---|---|---|
数量 | 1 | 1–20 | TNT 数量。 |
威力 | 4 | 1–20 | 爆炸的威力。4 相当于普通 TNT。 |
名字 | 无 | — | 写在每个 TNT 和屏幕上。 |
示例:/survival tnt 8 6 Giulia — 八个威力比普通更强的 TNT。弹坑会永久保留:这个动作会对世界造成永久性改变。
/survival meteorite [名字]一个六格大小的炽热熔岩立方体从天空中随机一点出发,边旋转边下落,留下一道灰色烟柱,并在玩家附近——绝不会正中——落地:落点距离玩家四到十格,方便他看到并逃跑。出现在天空时会连续听到五声爆炸。
它只在接触到方块时才会爆炸,而不是在固定高度:如果落进峡谷,就会一直下落到底。落地瞬间,周围的地表会被炸飞到空中,向上多过向侧面。基岩和箱子不会受影响。
威力是固定的,不能通过参数传入:太低时只是个不痛不痒的小爆炸,太高时会炸掉半座山。
示例:/survival meteorite Luca
/survival pioggiameteoriti [名字]每半秒落下一个陨石,持续十五秒,屏幕上方有时间条。故意做得比单个陨石小:如果用完整大小,十五秒内就是三十个六格大的立方体,屏幕会乱到什么都看不清。
示例:/survival pioggiameteoriti Sara
/survival tornado [名字]三十秒的龙卷风,高八十格,顶部宽十五格,天空会变成雷暴天气,结束后恢复原样。会追着玩家:不是瞬间锁定,而是慢慢转向,速度比步行还慢——是追赶,不是瞬间抓住。
注意:在建筑附近释放龙卷风会拆掉它,被卷落的方块会留在原地不管。这是设计如此,但在直播里靠近家用之前要提前知道。
示例:/survival tornado Andrea
/survival poweredcreeper [名字]一道闪电(只是视觉效果,不会点火)加一只充能苦力怕——带蓝色光环、爆炸威力翻倍的那种——出现在玩家三格范围内,并立刻锁定他,头顶写着捐赠者的名字。
示例:/survival poweredcreeper Chiara
/survival summon <生物> [名字]在目标身边召唤一个生物,已经锁定他并且不怕阳光(僵尸和骷髅白天不会燃烧,否则这个动作三秒就结束了)。头顶写着捐赠者的名字。
| 参数 | 默认值 | 限制 | 作用 |
|---|---|---|---|
生物 | 必填 | 游戏内所有生物 | 原版 id,例如 zombie、warden、ravager。 |
名字 | 无 | — | 写在生物头顶和屏幕上。 |
示例:/survival summon ravager Matteo
/survival give <物品> <附魔> [数量] [名字]把物品交给目标。如果背包满了,多余的会掉在他脚下而不会消失。
| 参数 | 默认值 | 限制 | 作用 |
|---|---|---|---|
物品 | 必填 | 游戏内所有物品 | 原版 id,例如 netherite_sword。 |
附魔 | noenchant | 见下 | 三种可选值。 |
数量 | 1 | 1–64 | 给几个。 |
名字 | 无 | — | 成为物品的名字。 |
第二个参数接受三种不同的值:
noenchant — 干净的物品;enchant — 所有可兼容的附魔,全部拉满等级;sharpness 或 mending,同样拉满等级。对于那些原本不接受该附魔的物品也能生效:想给镐子加锋利的人,自己清楚想要的是什么。示例:/survival give diamond 32 Elena · /survival give netherite_sword sharpness 1 Elena · /survival give elytra enchant 1 Elena
/survival mineralset <材质> [名字]一次性发放一整套该材质的装备:护甲和工具。捐赠者的名字会出现在每一件装备上,不只是第一件。
并不是所有材质都齐全,指令会给出真实存在的部分而不是拒绝执行:木头和石头给出五件工具(剑、镐、斧、铲、锄)但没有护甲,皮革和锁链给出四件护甲(头盔、胸甲、护腿、靴子)但没有工具,铁、金、钻石和下界合金给出全部九件。
| 材质 | 发放内容 |
|---|---|
legno(木头), pietra(石头) | 5 件工具(剑、镐、斧、铲、锄) |
pelle(皮革), maglia(锁链) | 4 件护甲(头盔、胸甲、护腿、靴子) |
ferro(铁), oro(金), diamante(钻石), netherite(下界合金) | 全部 9 件 |
示例:/survival mineralset netherite Federico
/survival fuffi [名字]一只已经驯服的狼,带红色项圈和捐赠者的名字,出现在玩家身边并跟随他。因为是礼物才用驯服而非野生的狼:召唤一只野生的狼在别人身边只会咬他而已。不填名字则默认叫"Fuffi"。
示例:/survival fuffi Valentina
/survival effect <效果> [秒数] [等级] [名字]施加一个药水效果,屏幕上方有时间条。既可以用于礼物(速度、抗性、力量),也可以用于恶作剧(失明、反胃、缓慢):只需改变填写的效果即可。
| 参数 | 默认值 | 限制 | 作用 |
|---|---|---|---|
效果 | 必填 | 游戏内所有效果 | 原版 id,例如 speed、blindness。 |
秒数 | 30 | 1–3600 | 持续时间。 |
等级 | 1 | 1–5 | 游戏内显示的等级(1 = I,2 = II……)。 |
名字 | 无 | — | 屏幕上显示的捐赠者名字。 |
示例:/survival effect speed 60 2 Davide · /survival effect blindness 10 1 Davide
/survival clearinventory [名字]清空所有东西:背包格子、身上的护甲和副手。物品会被删除,而不是掉在地上——无法找回。
示例:/survival clearinventory Simone
/survival randomtp [名字]把目标传送到两千格范围内的随机位置。插件最多尝试四十次寻找一个真正能站住的地方——头顶两格空间,脚下有实心方块——因为没有检查的传送很容易掉进岩石里或悬空,几乎等同于必死,而不是一个恶作剧。如果找不到合适的地方,玩家会留在原地并收到提示信息。
示例:/survival randomtp Alessia
/survival bimbo [名字]玩家缩小到不足一格高,持续一分钟,屏幕上方有粉色进度条。结束后会恢复到原来的身高,无论之前是多高。
示例:/survival bimbo Giorgio
/survival upsidedown [名字]画面翻转并持续旋转十五秒,同时带有恶心效果。玩家仍然可以移动,但会摇摇晃晃。
这不是真正的翻转,也不可能是。Minecraft 协议只用两个角度描述摄像机:偏航和俯仰,而横滚——那个把地平线倒过来所需要的——根本不存在于数据包里,所以服务端插件都无法让它倾斜,只有客户端 mod 或资源包才能做到。这个指令利用了一个边界情况:当直视正上方时,旋转偏航角会让画面绕屏幕中心旋转,这恰好就是想要看到的摄像机旋转效果。在直播里看起来像翻转,但其实是一种模拟。
示例:/survival upsidedown Martina
/survival jumpscare全黑六秒,满音量的末影人尖叫,以及守卫者的脸出现在屏幕上。三个元素故意一起出现:单独的黑屏只是烦人,单独的尖叫会和附近的怪物混淆,单独的守卫者效果只持续一瞬间。
这是唯一没有屏幕提示文字、也没有捐赠者名字的指令:一个提前宣布惊吓的横幅会直接毁掉这份意外。黑屏的时间条依然会出现,但只在惊吓已经发生之后。
示例:/survival jumpscare
/survival prison <秒数> [名字]一个 5×5 的黑色玻璃加铁栅栏牢笼出现在玩家上方十格处,把他关进去;结束后他会准确回到原来的位置,牢笼消失得不留痕迹。只要监禁还在进行,牢笼就坚不可摧:徒手打不坏,TNT 炸不穿,活塞也拆不掉。
秒数会累加到剩余时间上,而不是重新开始计时。这正是让监狱成为聊天区互动游戏的机制:想让他一直被关着的人送礼加时间,想放他出来的人送礼减时间(见 reducetime),屏幕上的数字实时变化。
| 参数 | 默认值 | 限制 | 作用 |
|---|---|---|---|
秒数 | 10 | 1–600 | 增加的秒数。 |
名字 | 无 | — | 屏幕上显示的捐赠者名字。 |
监狱的倒计时是唯一不使用顶部进度条的:它显示在屏幕中央,浅红色的秒数,下方是黄色的"剩余秒数",所有人都能看到,不只是囚犯本人,因为这是聊天区正在关注的数字。
示例:/survival prison 30 Nicola — 屏幕上会显示+30 秒。
/survival reducetime <秒数> [名字]从进行中的监禁时间里扣掉秒数;归零时立即释放。如果没有正在进行的监禁,指令会提示并且不做任何事——不会开出一个负时间的监狱。
| 参数 | 默认值 | 限制 | 作用 |
|---|---|---|---|
秒数 | 10 | 1–600 | 要扣除的秒数。 |
名字 | 无 | — | 屏幕上显示的捐赠者名字。 |
示例:/survival reducetime 15 Roberta — 屏幕上会显示-15 秒。
/survival floorislava [名字]玩家会被传送进一个 50×50、高 30 的玻璃立方体里,建在空中,里面有螺旋楼梯状的平台,岩浆从下方不断上涨。到达顶端的金块即为获胜;顶部进度条显示已经淹没了多少。
示例:/survival floorislava Stefano
/survival acidrain <秒数> [名字]让所有维度开始下雨,露天的人每秒扣半颗心,直到找到遮蔽为止。露天指的是头顶和天空之间没有方块——和游戏判断哪里会下雨用的是同一个条件,所以伤害恰好发生在能看到雨水落下的地方,而不会出现在洞穴里。
这是唯一一个"攻击性"指令中不需要在线目标的:它是一个世界事件。
| 参数 | 默认值 | 限制 | 作用 |
|---|---|---|---|
秒数 | 30 | 5–600 | 下雨持续时间。 |
名字 | 无 | — | 屏幕上显示的捐赠者名字。 |
示例:/survival acidrain 120 Paolo
/survival bersaglio <玩家|所有人>不用打开 config.yml 就能更改 main_user。写所有人会让目标变成所有在线玩家。也接受一个尚未连接过的玩家名字,这种情况下指令会明确提示你。
示例:/survival bersaglio AntDev210 · /survival bersaglio tutti
/survival stato五行摘要:当前设置的目标是谁,此刻能解析出多少个目标,是否有正在进行的监禁及剩余时间,floorislava 竞技场是否在运行,以及指令执行功能是开启还是关闭。
/survival azioni列出可用的子指令,以及插件能从控制台执行的动作代码。
/survival ricarica重新读取 config.yml,无需重启服务器。不会重新建立连接:令牌和轮询间隔只在重启时生效,令牌方面还是建议使用 /tikforge link。
按 TAB 键时,指令总会提示该填写什么。
give 的所有物品,summon 的所有生物,effect 的所有效果,所有附魔(外加 noenchant 和 enchant),mineralset 的材质,以及 bersaglio 的在线玩家。从注册表读取意味着不会随游戏版本更新而过时。<数量>、<威力>、<秒数>、<等级>、<名字>——说明该填什么,一开始打字就会自动消失。所有有持续时间的动作都会把时间显示在顶部进度条上:陨石雨、龙卷风、酸雨、bimbo、upsidedown、jumpscare 的黑屏、药水效果(不管来自指令还是控制台)以及世界的限时改变——玻璃牢笼、下沉地板、高塔、水桶——再加上 floorislava 的岩浆百分比。
除了进度条,每过一秒都会响一次尖锐的铃声,这样不看屏幕也能听出倒计时。这个音量比宣布动作开始的铃声更小,因为那个只响一次,而这个可能连续响九十次。
唯一的例外是监狱,它使用上文描述的屏幕中央标题。
在事件与动作标签页里,没有一份预先配置好的动作列表:这里就是上面这份指令列表,选择其中一个,就会出现对应的参数输入框。选Give会要求填物品、附魔和数量;选Effect会要求填效果、秒数和等级;选Tornado则不需要任何填写,因为这个指令没有参数。
物品、生物、附魔和效果都从菜单里选择,不是手动输入:下拉菜单按分组划分(武器、护甲、敌对生物、和平生物……),并带有搜索框,因为选项非常多。附魔和效果是完整的原版列表;物品和生物是一份精选清单,涵盖那些适合当礼物的种类——Minecraft 分别有超过一千种物品和上百种生物,全部塞进菜单反而没用。如果你需要的 id 不在列表里,手动指令仍然接受。
限制和每个指令说明里记录的一致:比如在最多到 64 的数量里填 99,实际会保存为 64。捐赠者的名字不需要填写——网站会自动加在指令末尾,直接取自真实的礼物信息。
四个管理类指令(azioni、bersaglio、stato、ricarica)不在其中:它们改变的是服务器配置,而不是让游戏里发生什么,礼物不应该有权限重新配置任何东西。
config.yml 里的 max_quantity_per_action 上限不会影响 Survival:它原本用于那些只有单一"数量"字段的预配置动作。这里每个参数都有各自的限制,就是上面逐条列出的那些,网站在保存前会应用这些限制。
插件的设计初衷是运行在你真正在意的那个生存世界上,所以几乎所有东西都会自动恢复。例外只有三个,把它们关联到礼物之前应该先了解清楚:
tnt)— 顾名思义会炸出真实的弹坑。其余的一切——牢笼、地板、高塔、水、监狱牢笼、floorislava 竞技场——都不会留下任何痕迹。
位于 plugins/TikForge_Vanilla/config.yml。修改后使用 /survival ricarica,但令牌和轮询间隔需要重启才能生效。
| 键 | 默认值 | 作用 |
|---|---|---|
token | 空 | 控制台里的令牌。用 /tikforge link 设置更方便。 |
pollIntervalSeconds | 1 | 插件每隔多少秒检查一次是否有新动作。 |
main_user | 空 | 谁会受到只影响单人的动作。留空 = 所有在线玩家。 |
fallback_to_everyone | true | 如果目标不在线,动作依然作用在其他人身上,而不是被丢弃。 |
show_donation_title | true | 每次动作时屏幕中央的文字提示。如果你更喜欢干净的屏幕、只靠 OBS 里的悬浮窗,可以设为 false。 |
branding_action_bar | true | 热键栏上方"powered by TikForge"的文字。 |
branding_motd | true | 服务器列表 MOTD 中的 TikForge 品牌标识。 |
allow_command_action | false | 启用"指令"动作。见下方提示。 |
max_quantity_per_action | 64 | 单个动作数量的全局上限。始终以此值和该动作自身限制中较低的为准。 |
目前 allow_command_action 没有任何作用,应该保持为 false。它原本用于开启"指令"动作,而这个动作已经被移除:网站不再发送任何需要执行的指令,所以这个键已经不起作用了。但了解它存在的原因仍然值得,以防将来这个动作重新出现:和其它每个功能单一、受限的动作不同,那个动作会以控制台权限执行任意指令——op、白名单、封禁、关服。安装一个插件不应该等同于交出一个远程控制台。
| 权限 | 默认值 | 解锁内容 |
|---|---|---|
tikforge.survival.use | 管理员 | /survival 指令(以及别名 /sv)。 |
tikforge.link | 管理员 | /tikforge 指令(link/unlink/status/update)。 |
从控制台发来的动作不经过这些权限:由插件自己执行,而不是某个玩家。
第一个进入服务器的玩家会自动成为管理员,且这种情况整个服务器生命周期里只会发生一次。没有这个机制,谁都做不了任何事——/tikforge link 和 /survival 都需要管理员权限——唯一的办法就是在玩家进入之前在控制台里手动输入 op <名字>。从第二个玩家开始就不再自动授予权限了,而且这个状态在重启后依然有效,因为这个标记保存在 config.yml 里(first_join_op_granted):如果只存在内存里,任何人都可以等着下次重启来给自己拿到管理员权限。
如果遇到问题或有疑问,欢迎在我们的 Discord 上开一个工单。
在 Discord 上开工单