本帖最后由 鱼仙仙仙仙 于 2022-9-25 16:27 编辑
本帖是关于原版命令画圆的最细炒冷饭
本贴将提到大量细节,找不到可以使用ctrl+F使用网页搜索查找
下文所有指令均为java1.13版本及以上,关于其他java版本与基岩版见版面靠下方
鱼仙仙仙仙原创声明
目前无图,待有空了加几张效果图
随缘目录:
基础画圆指令
纯新手额外补充区
更大的圆绘制计算方法
更精确的圆
更更更大的圆的绘制方法
螺旋通天柱
execute指令的不同版本区别
下正文:
基础画圆指令所用到的指令
/give 获取命令方块
/setblock
/fill 放置方块
/execute 迁移命令执行对象与地点
/tp 传送指令,此处用来转向圆心盔甲架
首先获取一个命令方块
/give @s minecraft:command_block
命令方块按照如下形态摆放并输入对应的指令(注意命令方块上的箭头)
execute as @e[name=aaa] at @s run tp ~ ~ ~ ~角度 ~
execute as @e[name=aaa] at @s run setblock ^ ^ ^半径 方块 数据值
复制代码或使用fill指令来放置圆环或者圆形墙壁 fill ^ ^高度 ^内径 ^ ^高度 ^外径 方块
(填写案例:fill ^ ^-1 ^15 ^ ^5 ^16)7格高2格厚的墙壁
命令方块调整后,放置盔甲作为圆心并命名为aaa(名字自定义,但是要同指令中一样)
在18秒后就可以画完一个圆
(每秒20游戏刻,每刻运行一次命令方块,18秒后盔甲架旋转一整周)
更大的圆注意事项
若放置更大半径圆形的时候,若半径超过57.2899616307594246872时,便会出现圆环上有断开的地方少几个方块
关于这个数据的计算过程为1÷tan(1)
此处的意义为,当每次旋转角度为1度时候,最远端放置方块的点就会移动1格以上,因此会出现圆环断开的问题
想要放置更大的圆就需要减少旋转的角度,如每次旋转0.5度可以则可以保证半径114.5886501293096以内的圆不出现断开的情况
计算公式为1÷tan(旋转角度)<圆圈半径
其中圆半径为给定值,旋转角度为变量。
所需要的放置时间为 360÷旋转角度÷20 (单位秒)
以上为更大的圆,想要画得更加精确的圆请继续往下看
本指令是通过旋转圆心盔甲架,以盔甲视线方向延申距离为半径画圆
上方更大的圆只保证了圆圈上每两个采样点中距离小于1而不会造成圆圈断裂,并不表示实际的圆形所压到每一个方块都被放置了方块
理解了此项就不难理解为什么之前画的圆不够精确,想要更加精确的话只能减少每次旋转的角度,这会让这一过程变得非常的缓慢,
解决的方法是,同时放置多个不同朝向的盔甲架作为圆心,可以放在圆心盔甲架的上方,放置不同朝向的盔甲架并命名后打掉其脚下的方块,这么做可以很简单的放置八个朝向的盔甲架来提升8倍的速度。(但此方法不适用于更更更大的圆的画法)
以下为更更更更大的圆的画法(超出视距的未加载的那种远,无限制多远都行)
因为未加载区块的原因,setblock或者fill指令会执行失败,但是前往放置位置后,命令方块所在区块因为卸载而停止运行,以下提出两种解决方案.
方法一
通过forceload指令使方块放置位置变为加载区,放置方块后再取消标注为加载区(未在所有版本尝试,部分版本可能不行)
***(星号代表上方提到的基础指令)
execute as @a[name=aaa] at @s run forceload add ~ ~ ~ ~
***
execute as @a[name=aaa] at @s run forceload remove ~ ~ ~ ~
方法二
将命令方块所在方块标注为加载区,自己前往方块放置地点
因为可能放置的地点实在是太远了,所以选择用tp的方式来移动,但是tp的话就必须远程控制命令方块,以下提供两种远程启动命令方块的方案:
1通过计分板来控制
execute as @e[name=aaa,scores={计分板名称=自定义数字}] at @s run tp ~ ~ ~ ~角度 ~
execute as @e[name=aaa] at @s run tp 玩家id ^ ^ ^半径
execute as @e[name=aaa] at @s run setblock ^ ^ ^半径 方块 数据值
(注:后面两个命令方块为条件命令方块,所以只需要第一个命令方块中添加scores)
优点:控制灵活,可以直接从服务器控制台执行,所有有计分板权限玩家都能控制启动
缺点:计分板指令太长/scoreboard players set 玩家 计分板名 分数
2通过手持物品来控制运行,单人绘制方便,
execute as @e[name=aaa] at @s if entity @a[name=玩家名,nbt={SelectedItem:{预定的物品名}}] run tp ~ ~ ~ ~角度 ~
execute as @e[name=aaa] at @s run tp 玩家id ^ ^ ^半径
execute as @e[name=aaa] at @s run setblock ^ ^ ^半径 方块 数据值
可通过手持特定物品也可通过检测副手
[nbt={SelectedItem:{id:"minecraft:iron_sword"}}]检测主手拿铁刀
[nbt={Inventory:[{id:"minecraft:iron_sword",Slot:-106b}]}]检测副手拿铁刀
这些加在@a后面的选择器中
//当达成条件后继续执行。
本小节通过介绍了远程远程开启加载区,和命令方块开启加载区后,远程控制命令方块启动与否,来达成放置处与命令方块处均处于加载区内。
最后一个环节:螺旋通天的楼梯
这个环节其实非常简单只需要在基础指令中添加一个数字就可以了
execute as @e[name=aaa] at @s run tp ~ ~上升高度 ~ ~角度 ~
execute as @e[name=aaa] at @s run setblock ^ ^ ^半径 方块 数据值
这个高度实际的效果和角度成正比,360÷旋转角度x上升高度 为每一周的上升高度,
通常个人比较喜欢这个值在10~30之间
其他版本指令补充/
较大改动的是execute指令,
java1.12及基岩版本execute指令为
execute @e[name=aaa] ~ ~ ~ tp ~ ~ ~ ~角度 ~
execute @e[name=aaa] ~ ~ ~ setblock ^ ^ ^半径 方块 数据值
关于nbt的赘述那更是一个版本一个样子,建议还是前往wiki
有什么意见建议或问题大家下面回复,在原版提问板块提问加赏金再艾特我我一定喜出望外
下期预告//
画球
多角星,正多边形
椭圆
椭球
阿基米德螺旋(等速螺旋)
等角螺旋
斐波那契螺旋
羊角螺旋(欧拉螺旋)
(随缘预告,更新不定)
///////////////评分点个人气吧顶顶
本帖是关于原版命令画圆的最细炒冷饭
本贴将提到大量细节,找不到可以使用ctrl+F使用网页搜索查找
下文所有指令均为java1.13版本及以上,关于其他java版本与基岩版见版面靠下方
鱼仙仙仙仙原创声明
目前无图,待有空了加几张效果图
随缘目录:
基础画圆指令
纯新手额外补充区
更大的圆绘制计算方法
更精确的圆
更更更大的圆的绘制方法
螺旋通天柱
execute指令的不同版本区别
下正文:
基础画圆指令所用到的指令
/give 获取命令方块
/setblock
/fill 放置方块
/execute 迁移命令执行对象与地点
/tp 传送指令,此处用来转向圆心盔甲架
首先获取一个命令方块
/give @s minecraft:command_block
命令方块按照如下形态摆放并输入对应的指令(注意命令方块上的箭头)


- 带入数字如下
- execute as @e[name=aaa] at @s run tp ~ ~ ~ ~1 ~
- execute as @e[name=aaa] at @s run setblock ^ ^ ^20 quartz_block
- 半径20使用石英块画圆
(填写案例:fill ^ ^-1 ^15 ^ ^5 ^16)7格高2格厚的墙壁
命令方块调整后,放置盔甲作为圆心并命名为aaa(名字自定义,但是要同指令中一样)
在18秒后就可以画完一个圆
(每秒20游戏刻,每刻运行一次命令方块,18秒后盔甲架旋转一整周)
更大的圆注意事项
若放置更大半径圆形的时候,若半径超过57.2899616307594246872时,便会出现圆环上有断开的地方少几个方块
关于这个数据的计算过程为1÷tan(1)
此处的意义为,当每次旋转角度为1度时候,最远端放置方块的点就会移动1格以上,因此会出现圆环断开的问题
想要放置更大的圆就需要减少旋转的角度,如每次旋转0.5度可以则可以保证半径114.5886501293096以内的圆不出现断开的情况
计算公式为1÷tan(旋转角度)<圆圈半径
其中圆半径为给定值,旋转角度为变量。
所需要的放置时间为 360÷旋转角度÷20 (单位秒)
以上为更大的圆,想要画得更加精确的圆请继续往下看
本指令是通过旋转圆心盔甲架,以盔甲视线方向延申距离为半径画圆
上方更大的圆只保证了圆圈上每两个采样点中距离小于1而不会造成圆圈断裂,并不表示实际的圆形所压到每一个方块都被放置了方块
理解了此项就不难理解为什么之前画的圆不够精确,想要更加精确的话只能减少每次旋转的角度,这会让这一过程变得非常的缓慢,
解决的方法是,同时放置多个不同朝向的盔甲架作为圆心,可以放在圆心盔甲架的上方,放置不同朝向的盔甲架并命名后打掉其脚下的方块,这么做可以很简单的放置八个朝向的盔甲架来提升8倍的速度。(但此方法不适用于更更更大的圆的画法)
以下为更更更更大的圆的画法(超出视距的未加载的那种远,无限制多远都行)
因为未加载区块的原因,setblock或者fill指令会执行失败,但是前往放置位置后,命令方块所在区块因为卸载而停止运行,以下提出两种解决方案.
方法一
通过forceload指令使方块放置位置变为加载区,放置方块后再取消标注为加载区(未在所有版本尝试,部分版本可能不行)




方法二
将命令方块所在方块标注为加载区,自己前往方块放置地点
因为可能放置的地点实在是太远了,所以选择用tp的方式来移动,但是tp的话就必须远程控制命令方块,以下提供两种远程启动命令方块的方案:
1通过计分板来控制



(注:后面两个命令方块为条件命令方块,所以只需要第一个命令方块中添加scores)
优点:控制灵活,可以直接从服务器控制台执行,所有有计分板权限玩家都能控制启动
缺点:计分板指令太长/scoreboard players set 玩家 计分板名 分数
2通过手持物品来控制运行,单人绘制方便,



可通过手持特定物品也可通过检测副手
[nbt={SelectedItem:{id:"minecraft:iron_sword"}}]检测主手拿铁刀
[nbt={Inventory:[{id:"minecraft:iron_sword",Slot:-106b}]}]检测副手拿铁刀
这些加在@a后面的选择器中
//当达成条件后继续执行。
本小节通过介绍了远程远程开启加载区,和命令方块开启加载区后,远程控制命令方块启动与否,来达成放置处与命令方块处均处于加载区内。
最后一个环节:螺旋通天的楼梯
这个环节其实非常简单只需要在基础指令中添加一个数字就可以了


这个高度实际的效果和角度成正比,360÷旋转角度x上升高度 为每一周的上升高度,
通常个人比较喜欢这个值在10~30之间
其他版本指令补充/
较大改动的是execute指令,
java1.12及基岩版本execute指令为


关于nbt的赘述那更是一个版本一个样子,建议还是前往wiki
有什么意见建议或问题大家下面回复,在原版提问板块提问加赏金再艾特我我一定喜出望外
下期预告//
画球
多角星,正多边形
椭圆
椭球
阿基米德螺旋(等速螺旋)
等角螺旋
斐波那契螺旋
羊角螺旋(欧拉螺旋)
(随缘预告,更新不定)
///////////////评分点个人气吧顶顶

本帖最后由 鱼仙仙仙仙 于 2022-9-22 22:57 编辑
人气超10火速更新原版指令使用mcfunction一键绘制椭圆椭球和蛋形
人气超10火速更新原版指令使用mcfunction一键绘制椭圆椭球和蛋形
牛牛牛牛逼,我的世界之圆形
真的很厉害我很西化就
6666666666666
信无仰 发表于 2022-9-28 09:58
6666666666666
趁版主没来快去看版规,看完回来抓紧删掉后,出门左转矿工茶歇谢谢
可以看一看 你是真那边
学到了学到了
看着不错感谢分享
这个好啊全自动
这个好66666
6666666666666
mcbbs有你更好
有什么意见建议或问题大家下面回复,在原版提问板块提问加赏金再艾特我我一定喜出望外
非常感谢 嘎嘎好理解
非常感谢 嘎嘎好理解
我就说吗mc肯定有圆
画圆真的是一生的痛,关键在很多建筑中都很重要很常用,有效解决了问题,顶
大佬大佬,用了,哇真的很好用
麻了麻了 第一个指令提示错误

大佬 提示第44个字符处错误咋搞

感谢分享@!!!
趁版主没来快去看版规,看完回来抓紧删掉后,出门左转矿工茶歇谢谢