CALL - 建造助手 [ 创世神类 | 木斧类 | 建筑 | 导入 | 导出 | 多人协作 ]

LSE CALL - 建造助手 [ 创世神类 | 木斧类 | 建筑 | 导入 | 导出 | 多人协作 ] 2024-07-24

版权类型
原创
版权链接
https://github.com/superx101/CALL
Wiki/文档
https://superx101.github.io/CALL/#/
语言支持
简体中文
前置组件
gitea.litebds.com/LiteLDev/legacy-script-engine-nodejs
适配版本(基岩)
  1. 1.19
CALL.png


GitHub GitHub release (latest by date) QQ
download
view

简介​

Construct Assistant for LeviLamina, 简称CALL,中文名为:建造助手,是针对基岩版服务器(BDS)的辅助建造工具,且提供API支持其他插件开发者拓展CALL的功能。

为什么选择CALL?
  • 指令操作
     CALL中所有操作均支持指令,因此您可以使用命令方块为某一玩家执行CALL操作,例:
      /execute @p ~ ~ ~ /call menu
  • 用户体验
     CALL致力于提升用户体验,所有基础操作均可使用GUI(图形化界面)点击完成,不需要过多学习成本。
     对于指令,本插件提供了缺省值和简化版指令, 例如指令:/call area start ~ ~ ~可简化为/ca ar a
     您也可以将指令绑定到快捷键,一键执行,更加方便
  • 导入导出
     支持在服务端从外部导入结构文件,并将保存的结构导出为结构文件
  • 多人协作
     您可与其他玩家共享保存的结构
  • 跨存档
     复制、保存的结构可跨存档使用
  • 自定义权限
     后台管理员可自定义哪些玩家可以使用CALL
  • 大范围
     CALL使用了一种异步等待方式来避免因区块未加载而操作失败的情况。理论上可操作无限大区域(无论区块是否已加载)。为保证稳定性,CALL限定了单个区域最大范围64000 * 320 * 64000
  • 第三方支持
     CALL支持其他开发者编写拓展功能的插件,您可安装第三方插件来获取更多的功能
  • 开源免费
     本插件使用GPL-3.0协议,完全开源免费
     项目地址:https://github.com/superx101/CALL
     Bug反馈与建议:691552572
  • 自动更新
     自动下载、自动安装、自动重载插件
     自1.0.0版本后CALL可在配置中开启自动更新,或输入后台指令call update半自动更新
  • 文档教程
     CALL为您提供了文档,记录了较为详细的插件安装、使用方法以及第三方插件开发教程

CALL可以干什么?
  • 若您为服主
    CALL可以帮您从其他存档转移、复制建筑,并从文件导入建筑到服务器,或导出服务器的建筑
  • 若您为建筑师
    CALL提供了快捷键和菜单帮助您快速填充、平移、旋转、镜像、复制、粘贴,并且提供了直线、平面、圆、椭圆、圆柱、圆锥等形状帮助您快速构建结构。您也可以共享您保存的结构,与他人共同合作。

功能​

选区填充选区清除选区替换选区平移选区堆叠选区镜像选区旋转
撤销恢复
复制粘贴
保存结构加载保存删除保存共享保存
方块编辑快捷键生成形状
导入结构导入结构

LeviLamina对应的版本已不再Lip之外的平台发布,若需下载1.3.0以后的版本请使用Lip下载:
https://lippkg.com

若该插件使用过程中遇到的任何问题,不能自行解决,请加入Q群聊:691552572 一对一解答

导入导出流程​

i.png

使用前须知​


1.默认仅为OP可用,若需要更改设置请查看文档

2.历史版本对应表如下:

1. 若新版中无法使用可联系作者进行适配(建议进群联系作者,私信可能看不到)
2. 请确保LL为正式版,beta版中无法使用属于正常现象
以下为LeviLamina
[/SPOILER]
CALL版本
LeviLamina版本LegacyScriptEngine版本BDS版本
文档待填
以下为LiteLoaderBDS
CALL版本LiteLoaderBDS版本BDS版本
1.2.0--1.2.1--2.15--1.20.1x--
1.1.5--1.1.62.12.1--2.14.11.19.7x--1.20.0
1.1.3--1.1.42.9.2--2.11.11.19.5x--1.19.6x
1.1.2--0.2.02.9.0--2.9.11.19.5x--1.19.6x
0.1.0--0.1.2--2.8.1--1.19.4x

教程​

1. 教程文档
2. 打开菜单
您可输入/call 指令或使用快捷键打开菜单

3. 默认快捷键
您可自定义快捷键,该表仅供参考
(什么是快捷键?:当玩家手持物品时,可通过点击或破坏来触发一条或多条指令,这样的物品就称为快捷键)
如何修改快捷键?
可通过输入指令 /call 进入菜单,进入选项 设置->快捷键设置->xx模式->xxx快捷键 修改相应的快捷键设置即可
功能描述​
快捷键种类​
触发方式​
英文id​
是否有特殊名称​
打开菜单右键(点击)minecraft:clock
设置选区a点箭矢右键(点击)minecraft:arrow
设置选区b点木棍右键(点击)minecraft:stick
轮流设置ab点木斧右键(点击)minecraft:wooden_axe
取消选区剪刀右键(点击)minecraft:shears
材质A选择三叉戟右键(点击)minecraft:trident
材质B选择三叉戟左键(破坏)minecraft:trident
复制烈焰棒右键(点击)minecraft:blaze_rod
粘贴骨头右键(点击)minecraft:bone
获取点击的方块(需要give权限)木稿右键(点击)minecraft:wooden_pickaxe
编辑点击方块的属性绿宝石右键(点击)minecraft:wooden_emerald

以下为快捷键的指令示例,您可参考示例添加自己的快捷键
功能
快捷键绑定的指令
给玩家一个快捷键点击到的方块give @s ${block.type} 1 ${block.tileData}
给玩家一个苹果后说“I get an apple”give @s apple;/say 'I get an apple'
说出玩家自己的xuid值say ${me.xuid}
说出玩家自己的第0号物品栏中物品的种类say ${itemArr[0].type}
如果玩家为生存模式则设置为创造模式,否则设置为生存gamemode ${me.isSurvival ? 1 : 0}
说出现在玩家坐标x值的2倍加1say ${me.pos.x * 2 + 1}
如果自己生命值<=10就给一个牛排
如果10<生命值<=15给一苹果
如果生命值>15就发送“我饱了”
${me.health <= 10 ? 'give @s cooked_beef' : (me.health <= 15 ? 'give @s apple' : 'say 我饱了')}
如果自己是创造模式且副手拿着盾牌,就将自己传送到点击的方块处${me.isCreative && me.getOffHand().type === 'minecraft:shield' ? 'tp @s ' + block.pos.x + ' ' + block.pos.y + ' ' + block.pos.z : ''}

4. Bug反馈与交流群
QQ:691552572


常见问题

报错Command "call" already exists?并且游戏内出现连点

当前错误为更新或安装时退出BDS导致LiteLoaderBDS认为插件存在并报错,可直接忽略该报错。重启服务器后即可恢复正常。

首次安装进度条不动?​

当出现 为插件 call 执行 "npm install"...进度条一直不动, 说明当前网络环境无法下载依赖, 需要手动下载依赖包并安装,依赖下载路径:https://gitee.com/superx101/CALL/releases 找到对应版本的 x.x.x依赖包.zip 文件下载即可

文件配置失败: 配置文件中未找到xxx?​

说明配置文件文件中缺少该项,需要下载对应版本的配置文件,替换plugins/CALL/config/configs.json。或在configs.json中添加xxx项

更新后报错:Error: Cannot find module 'xxx '?​

说明更新后缺少新的依赖,可在后台输入 ll load "./plugins/nodejs/call/bin/CALL_Dependencise.js" 检查并更新依赖

自动更新1.1.3无法填充?​

由于1.1.3修改了ca fill指令参数类型,目前的LL热重载无法重载修改的指令 ( 编写该问题时LL最新版本为2.9.2 ),因此需要重启服务器后才能生效

更新1.1.3报错?​

请更新 LL 为 2.9.2 及以上版本

手动更新1.1.0报错?​

1.1.0加入了新的依赖,直接更新会导致无法加载依赖而报错。可加入1.1.0.zip内部的更新修复补丁,修复错误。

自动更新1.1.0报错?​

原因同上,请下载更新修复补丁。下载地址:https://gitee.com/superx101/CALL/releases/tag/1.1.0

怎么打开菜单?​

  1. 方法一:快捷键方式:
    使用打开菜单快捷键点击任意方块即可打开菜单。
    默认打开菜单的快捷键为,服务器管理员可能会更改默认快捷键,请以服务器为准)
  2. 方法二:指令方式:
    输入指令 /ca 或 /call 或 /ca menu 或 /call menu 或 /ca me 或 /ca menu 均可打开菜单。

怎么获取快捷键?​

可通过输入指令 /call 进入菜单,进入选项 设置->快捷键设置->获取所有快捷键 点击即可获取快捷键。

怎么修改快捷键?​

可通过输入指令 /call 进入菜单,进入选项 设置->快捷键设置->xx模式->xxx快捷键 修改相应的快捷键设置即可

怎么选区?​

  1. 方法一:A点B点选择工具
    获取快捷键 A点选区工具 和 B点选区工具,使用A点工具点击方块选取A点,使用B点工具点击方块选取B点。
  2. 方法二:AB轮换选择工具
    获取快捷键 选区工具,第一次点击方块选取A点,第二次点击方块选取B点。

选区中,可以点击选A点,破坏选B点吗?​

可以在 设置->快捷键设置 将同一个快捷键的右键模式设置为选A点,左键模式设置为B点

怎么清除选区?​

  1. 方法一:使用菜单
    打开菜单,进入 选区->清除选区
  2. 方法二:输入指令
    输入指令 /call area clear 或 /ca ar cl

我看到的方块和别人不一样?看到假方块?​

这是由于其他人修改区域后,您未能正常刷新区块所导致。CALL将会在以后的版本尽可能修复这种情况。
您可刷新区块后恢复正常

  1. 方法一:菜单
    打开菜单,选区 刷新区块
  2. 方法二:指令
    输入指令 /call refresh 或 /ca rf

如何精准的生成斜的几何体?​

本条教程来自用户 ye1115660

1.拿出右手 四个手指一开始位置记x正 向内挥手90度的位置记为z正,大拇指位置记y正

2.拿出草稿纸画图 把你设置的物体形状不算欧拉角的部分画出来,再把你想要的旋转后的形状画出来

3.在你原来的形状和xyz正轴的部分利用空间想象力画出来旋转后这三个轴是在哪里(记得画剪头)

4.利用空间想象力想出来分别是从x正轴下方,向x正方向看时候顺时针旋转a度
从y正轴下方,向y正方向看时候顺时针旋转a度
从z正轴下方,向z正方向看时候顺时针旋转a度
最后你选择欧拉角模式为xyz,x=a,y=b,z=c

怎么让所有人都能使用CALL?​

修改配置文件的permission项为"all",修改后在后台输入指令 ca r 或 call reload 重新加载CALL即可

怎么让一部分人能使用CALL?​

  1. 步骤一: 修改配置文件的permission项为"customize",修改后在后台输入指令 ca r 或 call reload 重新加载CALL。
  2. 步骤二: 后台输入指令 /call add "玩家名" 添加一个玩家
    后台输入指令 /call ban "玩家名" 移除一个玩家

怎么在另一个存档使用保存的建筑?​

在不删除CALL/data文件夹的情况下,直接更改存档即可使用保存的建筑

怎么导出结构?​

  1. 使用 /call list 命令查看需要导出结构的id
  2. 在后台输入指令:call export <格式名> <结构id> [是否包含实体] [文件名称] 即可将CALL中保存的结构导出
  3. 在 CALL/export 目录下可找到导出后的文件
指令说明:

  • 格式名 目前支持的格式有: mcstructure
  • 结构id 一串字符组成的id
  • 是否包含实体 可不输入,默认为false
  • 文件名称 导出后文件的名称,可不输入,默认为结构id
指令示例:
  • ca export mcstructure c0001230111205510003 true test
表示导出id为c0001230111205510003的结构,包含实体,且文件名为:test.mcstructure​

怎么导入文件为结构?​

  1. 将需要导入的文件放入 CALL/import 目录下
  2. 在后台输入指令:call import <文件名> <玩家名> [是否包含实体] [结构名称] 即可将文件导入为结构给某个玩家
指令说明:

  • 文件名 需要导入文件的名称(需要输入后缀名),目前支持的格式有: mcstructure
  • 玩家名 一个使用过CALL的玩家的玩家名,导入后会将结构加入到该玩家的保存中
  • 是否包含实体 可不输入,默认为false
  • 结构名称 结构的名称,默认为当前时间
指令示例:
  • ca import test.mcstructure steve true a
表示从 CALL/import/test.mcstructure 导入结构给玩家steve,且保留实体,结构名为a​

怎么更新CALL?​

  • 自动更新
  1. 将配置文件:CALL/config/configs.json 中的autoUpdate 项设置为true后输入指令 ca r 或 call reload 重新加载CALL
  • 手动更新
  1. 下载需要更新的CALL版本
  2. 将CALL/shape中的形状包文件替换
  3. 将下载的CALL.llplugin放入plugins/目录

部分功能展示​

菜单界面​
Minecraft 2022_12_31 15_02_04.png
选区功能界面​
Minecraft 2022_12_31 15_03_19.png
快捷键​
Minecraft 2022_12_31 15_02_43.png
a3.png
快捷键设置​
a4.png
形状包​
Minecraft 2022_12_31 15_03_40.png
形状包-自由立方体​
a6.png
a7.png
形状​
shape.jpg

第三方形状包​

若您开发了形状包,可联系作者将形状包链接发布于此

停更​

由于多方面原因暂停新功能的加入,若出现新版无法适配的情况依然可联系作者适配更新)。
原因如下:

photo.png
photo1.png


感谢评价,当前版本无法复现出这种情况。已被气死,没有动力继续更新下去了。


项目初衷

CALL项目的初衷是为了帮助服务器中的建筑师们更快的完成工作。我有幸参与过几个服务器建筑开发,常能看到一些建筑师因不善于使用指令和结构方块,手动地一个个方块堆积,因此我萌生出建筑辅助插件的想法:由插件屏蔽技术细节,用户只需要点击几下(最好是一下也不用点)就用完成一些繁琐的操作,这样的话建筑效率得以提升,我们也能更快看到建筑大佬们的鬼斧神工。作为免费插件开发者,能帮助到更多的玩家以及获得玩家支持,不仅是心愿,也是我们继续开发下去的动力来源。

开发经历

清楚的记得首行代码写于22年10月1日,因为我打算用国庆假期来完成这个插件。但事实却给我当头一棒,借用《C++编程风格》一书作者的Tom cargill的一句话:“最初的90%的代码用去了最初90%的开发时间。余下10%的代码用掉另外90%的开发时间”。从第一行代码到23年春节的维护,前前后后一共3个月时间,主体开发花费了1个多月。这一个多月中,我都像在重复同一天:白天上课、写作业,晚上熬夜开发,睡6-7小时后第二天继续。

由于我在开发过程中才体会到需要添加某些功能,而不是全部功能提前设计好,导致开发中期代码结构逐渐不稳定,每过几个小时都不得不停下来思考那两个经典问题:“为什么它能运行?为什么它不能运行?”,加上那时才发现了同样功能的WorldEdit-BE,里面的每个功能都充分体现了作者丰厚的数学功底和编程基础,我望之而不可及。多个因素影响下,我曾一度考虑放弃这个插件的开发,但或许是对Minecraft的热爱,或许是对编程的兴趣,或许是每完成一个功能后的成就感,亦或许是希望听到一句玩家的支持与肯定,我庆幸自己没有半途而废,完成主体开发、发布了第一个版本,学习docsify并写了第一份文档。

维护经历

没有WorldEidt-BE那样炫丽的功能,因此我打算从玩家体验入手,尽可能将一些复杂操作简单化,并听取玩家意见,让插件向着玩家方向发展。随着越来越多玩家建议的提出,项目稍具规模,QuickJS已不再适用,无奈之际突然发现了TS,类型的引入让许多bug都能在编译前被发现,于是我心一横,又花三天将所有代码都重构为了ts。

“当你想在你的代码中找到一个错误时,这很难;当你认为你的代码是不会有错误时,这就更难了”—Steve McConnell,此时我才意识到不可能一个或几个版本后就能修复所有bug。正所谓bug满天飞,人在地上追,在这里分享一个笑话,或许能帮助没有代码经验的玩家理解:
一个测试工程师走进一家酒吧,要了一杯啤酒
一个测试工程师走进一家酒吧,要了一杯咖啡
一个测试工程师走进一家酒吧,要了0.7杯啤酒
一个测试工程师走进一家酒吧,要了-1杯啤酒
一个测试工程师走进一家酒吧,要了2^32杯啤酒
一个测试工程师走进一家酒吧,要了一杯洗脚水
一个测试工程师走进一家酒吧,要了一杯蜥蜴
一个测试工程师走进一家酒吧,要了一份asdfQwer@24dg!&*(@
一个测试走进一家酒吧,什么也没要
一个测试工程师走进家酒吧,又走出去又从窗户进来又从后门出去从下水道钻进来
一个测试工程师走进家酒吧,又走出去又进来又出去又进来又出去,最后在外面把老板打了一顿
一个测试工程师走进一
一个测试工程师走进一家酒吧,要了一杯烫烫烫的锟斤拷
一个测试工程师走进一家酒吧,要了NaN杯Null
1T测试工程师冲进一家酒吧,要了500T啤酒咖啡洗脚水野猫狼牙棒奶茶
1T测试工程师把酒吧拆了
一个测试工程师化装成老板走进一家酒吧,要了500杯啤酒,并且不付钱
一万个测试工程师在酒吧外呼啸而过
一个测试工程师走进一家酒吧,要了一杯啤酒‘;DROPTABLE酒吧
测试工程师们满意地离开了酒吧
一名顾客点了一份炒饭,酒吧炸了

需要漫长的积累和版本迭代才能得到一个稳定版本,因此重构后的第一件事就是花费2天做一个自动更新功能,方便大家随时更新。

同时,考虑到github访问不稳定,部分玩家无法查看文档,于是去gitee上注册账号准备将文档备份到gitee。但是gitee发布文档前需要自拍认证,奇怪的审核机制让我每次上传照片后都判定为模糊:上传、等待审核、再次上传、等待审核、再再次上传、等待审核,前前后后花费4天后终于发布了文档。

寒假开始后,根据玩家的反馈,也陆陆续续加入了一些新的功能,尽管原来的设计不适合这些功能,但还是能改则改,改不了就重构。虽然花费大量时间,我认为这一切都值得,玩家的肯定支撑我继续更新下去。

回复

导入导出功能相对复杂一些,公式推导和化简花费了半天时间。而且需要了解导出导入的文件格式,有关的说明文档中,这些格式讲述的并不明确,需要自己进一步实验才能知道文件中每一部分的作用,看起来简单的导入导出功能又花费4天时间。公式推导、化简、编写代码、测试、修复bug、继续测试、继续维修等等,一句 “用脚写的”就概括这一系列的流程,以一种极其粗暴的方式否定他人的劳动,不禁让人唏嘘。作为免费开源插件开发者,我们大可不必每日花费大量时间维护与更新,最后换来一句冷嘲热讽

秉承着用户至上的原则,我在看到评论的第一时间就发起了私信向你核实bug,但不知处于何种原因你视而不见,在我私信后的16个小时后在线却已读不回,我并不认为这个私信中存在任何的攻击与威胁,下面附上私信原文:

您好,已收到您的反馈。在您的反馈中描述了导入时加载结构不全的问题,您是否能提供该问题的截图,以及复现该问题的环境、方法和复现步骤?

结束语

纵观整个生态,这种现象已不是个例。部分人只是开发者当做了无情的生产机器,缺少人与人之间最基本的尊重,别人将他们视为上帝,而他们却将别人踩在脚底,当做他们的垫脚石。把一句话送给他们:“不尊重别人的人,别人也不会尊重他!

压垮骆驼的从来不是最后一根稻草,每日面对着数不尽的各种生活和学业的压力烦恼,我没有抱怨,因为我知道,这里有一片宁静的港湾。如今最后的宁静被打破,而我也不是当初那个满怀信心的自己,为了能给玩家更好的体验,我开启了日复一日的床和电脑两点一线生活,放弃了学业,放弃了家人和朋友,放弃了生活,到头来却落得一句恶毒的骂名

可悲。可笑。


最怕的不是没有梦想
而是拥有梦想过后
被现实打败
打败你的不是无能
而是已经麻木
麻木的心死了
死了的心不再跳动
不怕梦想流于现实
只怕梦想止步于现实

更新计划​

以下是停更前的更新计划:
  • [已完成] 重构为ts + nodejs插件
  • [已完成] 更新适配器:同步更新后有改变的文件格式
  • [已完成] 多种类快捷键触发方式,如:破坏触发
  • [已完成] 增强基础形状包,添加:球体、椭球体等
  • [已完成] 方块属性编辑器
  • [已完成] 导入、导出:将结构导出为mcstructure等格式,将这些格式导入为结构
  • [] schematic格式转换器
  • [] 免材料模式,生存中需要收取材料
  • [] 区分上下半砖模式:整砖破坏上半部分得到下砖
  • [] 升级重置版CALL(暂命名为CA++ 更新待定):
    • [] 多平台支持
    • [] 第三方独立插件支持
    • [] 多形状显示
    • [] 笔刷工具
    • [] 材质刷工具(画笔)
    • [] 多语言
    • [] 多类型选区
    • [] 泛洪填充
    • [] 点、线、面、体模式
    • [] 多类型曲线生成
    • [] obj模型导入、体素
    • [] 点云转体
    • [] 方程式生成结构
    • [] 多种结构修改算法:平滑、细分、旋转、重力...
    • [] 纹理、颜色
    • [] 蒙版(过滤器)
    • [] 像素文字生成、字体库
    • [] ?模型脚本(如OpenSCAD Script)
    • [] ? AI辅助建模
    • ......
    • 更多功能有待讨论,本列表列出的功能仅为设想,不保证实现可行性。若您有更好的建议可联系作者,欢迎各位踊跃提出想法和建议。
  • shape.jpg
    shape.jpg
    59.9 KB · Views: 9,158
Author
superx1001
Downloads
5,399
Views
17,638
First release
Last update

Ratings

5.00 star(s) 24 ratings

Resource team

More resources from superx1001

Share this resource

Latest updates

  1. 1.3.1

    1.3.1 适配ll3 需要0.11.1以上版本并且安装lse-nodejs,形状包还没好,两点选区导入导出复制粘贴完全好了。...
  2. 1.2.1

    Bug修复 修复非主世界中加载结构错误 修复形状包方形和直线错误 修改 将大部分方法中的参数: player, playerData, 合并重构为caPlayer...
  3. 1.2.0

    新特性 添加文本国际化,可通过改变客户端语言来改变插件语言 形状包国际化 添加快捷键变量: block.states 修改...

Latest reviews

非常好的插件,要是能对接iland领地就更好了
非常优秀的插件
迟到的好评,作者辛苦了
优秀的建造工具
superx1001
superx1001
感谢支持
最好用的创世神类插件!!!
superx1001
superx1001
感谢支持
getScore(money)
superx1001
superx1001
感谢支持
超棒的插件
作者可以增加一个导入schematic文件的功能吗
superx1001
superx1001
感谢支持。该功能已在更新计划中,目前已有很多软件可以将schematic转为mcstructure,可以进群获取相应软件
很棒的插件
superx1001
superx1001
感谢支持
Back
Top Bottom