Installing carpet scripts in your world - HeartyYF/fabric-carpet-Wiki-CN GitHub Wiki

获取脚本

scarpet 脚本的 repo

要安装脚本,得先有脚本。你可以翻翻 scarpet repository 看看有没有你感兴趣的脚本。如果你已经对 scarpet 脚本有个大概了解,那 repo 中的脚本就不言自明了,不过如果没有了解的话,你可以看看这些视频,这些视频展示了你能用 scarpet 干什么,并且解释了这些脚本是怎么工作的。目前这些视频都在某个不存在的网站上,不过大概几个月之后它们就会被翻译掉。

自己写点什么

目前有对 Notepad++,Intellij IDEA 关键字集和 Vscode 自动补全的 scarpet 编辑器支持,不过如果有了更多的支持、而这个页面又没有及时更新的话,请查看此处;从中选一个你最喜欢的编辑器,开工吧!

文件鬼把戏

重要注意事项:文件名中不能有空格!如果有空格的话,就不能加载了。原因将在稍后阐明。

1. 文件的拓展名必须为 .sc

如果你正在编辑 txt 文件或者别的什么格式的文件(比如 doc,docx,rtf 之类的),赶紧把它删了。txt 还好一点,直接把拓展名改为 .sc 就行,其他的就不行了。如果你正在编辑的文件就是 .sc 拓展名的,忽略这段话。打开你放脚本的文件夹(这个文件夹在哪不重要);我的是 %appdata%\_fabric\Scarpet,因为我正在使用的是 fabric carpet。现在,把拓展名改成 .sc(译注:只有 plain text 可以这么干):
extchange

2. 在你的世界存档中创建 'scripts' 文件夹

如果你用的是官方启动器,你应该能在 %appdata%\.minecraft\saves 中找到你的存档,但是如果你用的不是官方启动器、有什么版本隔离、装了什么奇怪的东西,那就要你自己找了。以我来说,我的存档都在 %appdata%\_fabric\saves 里。打开你想执行脚本的存档目录。新建一个名为 scripts 的文件夹;一般来说,会在新建的世界里测试脚本:
scriptsfolder

3. 把你的 scarpet 脚本放到 'scripts' 目录下

打开你放脚本的文件夹,把你想要在这个世界里使用的脚本都复制到这个世界的 scripts 目录下:
image
完了,就这样。现在就要进游戏调试了。

脚本和世界

这部分取决于你写的是哪种脚本。如果你使用过数据包,你就会发现它们在功能上非常相似,脚本就像数据包一样,可以有每次加载世界/重启服务端时加载的脚本,也可以有每刻运行一次的脚本。但是别用 .mcfunction 制作数据包、调用 /script run <script> 来运行脚本。这是本末倒置。

加载脚本

非常简单。输入 /script load <script name> 就可以了——自然,<script name> 是你要加载的 .sc 文件的名字。而且,<script name> 不能包含任何空格。Minecraft 中的命令机制就是这样,以空格分隔命令的参数,所以如果你的脚本叫 'my script',你输入 /script load my script 的时候,游戏会把它诠释为 /script load my 带有额外参数 script,然后就会报错。脚本可以热更新:保存修改后,只需要再输一次 /script load <script name> 命令,你就可以看到变化了。唯一的问题是,你每次加载世界/重启服务端都得手动加载一次脚本。

保持加载

幸运的是,我们有 /carpet scriptsAutoLoad 这么个命令。运行 /carpet setDefault scriptsAutoLoad true 后,每次加载世界/重启服务端,scripts 目录下的所有脚本都会被加载。注意,脚本只在世界加载时执行,而不是每刻都执行。如果你又想手动加载脚本了,只需要 /carpet setDefault scriptsAutoLoad false 就行了。输入 /carpet list defaults 可以查看你修改过的所有地毯特性的当前状态,所以如果你看到 scriptsAutoLoad 已经被设置为了某个值,可以按照你的意愿自行修改。你也可以输入 /carpet removeDefault scriptsAutoLoad 恢复为默认值。但这还不是全部;在你的脚本中,你还必须指定在你关闭世界/服务端后,脚本会保持加载。很直接:在你脚本的开头,添加以下一行代码,一切就会如你所愿了:
__config() -> m(l('stay_loaded', true))
有这么一个 __config() 的脚本就会保持加载,这样我们就再也不需要每次进入世界/启动服务端后去手动加载了。详细信息请查阅文档观看这个视频的片段,其中 gnembon 也解释了 __config()。一如既往,视频的翻译和搬运需要等到译者空闲下来。

⚠️ **GitHub.com Fallback** ⚠️