欢迎光临散文网 会员登陆 & 注册

地图建造记录001丨Minecraft JE 竞技地图更新日志2021.03-2021.05

2021-05-11 20:32 作者:-凛武-  | 我要投稿

本文是记录自己建地图的过程 用于帮助自己整理思路 也可能可以帮到正在学习的玩家

技术不足 仅供参考(简称乱写的)

封面欺诈 放的是我的上一代地图

咕还是不咕,这是一个问题。

2021-03-10

版本1.15.2 (2021.03.20改为1.16.4)

新建世界

超平坦预设选“虚空”

此预设默认会生成中心点偏东南的平台 图上的平台我已经修改为相对区块居中(强迫症实锤)

新建数据包(datapack)文件夹,规划函数文件夹内文件分类

新建用于重新加载游戏时设定计分板和队伍的函数文件

写设定计分板和队伍的函数是由于以前网易总是吃计分板而不得已养成的习惯(悲)

先写一个母函数 然后在里面再执行子函数 这样以后改的时候比较方便

写入设定世界出生点、难度、游戏规则的指令(之后还需写入重置计分板、队伍等)

做法参考

setworldspawn设置世界出生点)

difficulty(设置游戏难度)

gamerule

时间设置与节日大厅有关,所以先不写入

2021-03-13

写设定函数的子文件

先写一些规划中一定会用到的计分板

做法参考 

scoreboard objectives add <objective> <criteria> <displayName>

function(在为方便而拆分函数文件后写入函数以嵌套)

文件节选

规划中,击杀数和死亡数是只统计PVP的,要做成在PVP时才加分数,所以图中先用dummy类型

写重置判定是否拥有头衔的计分板

头衔设定在之前的版本还未发展成熟 所以头衔比较少

还未确定要加入什么头饰,所以判定是否拥有头饰的计分板先不写

玩家颗粒效果没有专门写判定是否有用的计分板是因为颗粒效果解锁是用VIP等级(而头饰头衔有时和抽奖有关),所以颗粒只需要有判断VIP等级的计分板就可以了

上图中的particle、title等计分板是用于判断玩家已经选择的装扮,和是否拥有无关

你们可能发现了其中的不合理之处:为什么判断是否拥有某物的这种只需要储存0和1两种状态的情况要用计分板,而不是tag?2019年的时候我发现网易租赁服导入地图,玩家的tag数据会消失。于是之后遇到这种情况都使用计分板了(不排除现在网易修好了这个问题的情况)。

写设置玩家数据的函数

做法参考

scoreboard players set

设置玩家数据是这次PVP地图(5代)首次加入的设定,用于保存贡献值、议员头衔、榜首头衔等手动设定的数据,防止其丢失

写重置队伍

做法参考

team

函数节选

扁平化后不需要用NBTExplorer改前后缀了,不需要每次丢计分板都改team,就很棒

做法参考

scoreboard players set

scoreboard objectives setdisplay sidebar

节选

颜色队伍写侧边栏会用到

想到之后还有用在游戏结束之后重置的函数,所以把reset文件夹改名load_reset区分

写load文件 在地图加载时触发指定函数

感觉公告计分板显示名称有点不太好看,于是从“- 公 告 -”改为“公 告”

因过审需要打码处理

2021-03-20

网易更1.16了,转进1.16.4

2021-03-21

写显示PVP职业介绍的函数

做法参考

tag(用于选中目标便于下文选择器书写)

execute as与execute positioned as(用于配合playsound播放音效 可用execute at代替)

playsound

tellraw

经典模式职业狂战士

修改了上一代PVP地图的写法,把原先跟在物品名称后面的详细信息改为鼠标悬浮显示

此处show_item包含的物品结构中,Count:1b不可缺少,否则会被视为无效(MC_himcd提供指导意见)

效果

提案将绿色文本改为白色,议员 MC_himcd 与 岁月灬陌 反对,提案未通过

写经典模式职业神射手的职业介绍函数

在设定游戏规则的函数中加入gamerule disableRaids true以禁止袭击

2021-03-27

随便建了下大厅

做法参考(使用WorldEdit插件 详见https://mineplugin.org/WorldEdit)

//hcyl <方块样式> <半径> [高度](用于生成空心圆)

//copy

//rotate <y角度>

//paste

//setbiome <目标>

//setbiome -p <目标>(用于微调生物群系)

time set <时间值:整数>

locatebiome <生物群系ID>(用于开另外世界寻找生物群系作为参考)

2021-03-27

建大厅三环

2021-04-03

建大厅二三环间四块生物群系

议员冷酷如冰0发现专栏日期2021写成了2020(离谱)

2021-04-04

建大厅二三环间剩下四块生物群系

2021-04-05

建大厅三环和三四环间阶梯

2021-04-10

建大厅剩余三个三四环间阶梯

建大厅三四环间玄武岩三角洲与部分诡异森林

做法参考(使用WorldEdit插件 详见https://mineplugin.org/WorldEdit)

//schematic(用于跨存档复制 便于修改选区内建筑)

//copy

//rotate <y角度>

//set

//replace

//paste -a(黏贴时忽略空气方块 用于在复制外圈生物群系的情况下不破坏内圈生物群系)

//paste -s(黏贴后再次选中 方便再次//schematic save)

2021-04-11

建完三四环间诡异森林

2021-04-17

建三四环间末地(不含生物群系修改)

2021-04-19

建三四环间生物群系绯红森林

修改三四环间末地的生物群系

位于末地生物群系时天空会变黑

2021-04-20

建四环

2021-05-01

收到 编号2403千羽 QQ捐款¥10.00

2021-05-03

建大厅四环五环间地面 材质未定先用羊毛后替换

编号2403千羽 与 MyEddie 参与

铺地板用了偷懒的方法

做法参考

execute as @a[tag=1] at @s if entity @s[y=17,distance=1] if block ~ ~-1 ~ minecraft:air run setblock ~ ~-1 ~ minecraft:white_wool

“as”用于改变命令执行者、“tag=1”用于限制仅指定玩家生效、“if entity @s[y=17,distance=1]”用于判断玩家所在高度、“if block ~ ~-1 ~ minecraft:air”用于检测指定玩家的指定相对位置是否为空气

(实际操作中我写了9条命令达到一次替换周围一圈地面的效果,即为修改if block后与setblock后相对坐标)

修复队伍重置函数子函数执行命令路径错误的漏洞

2021-05-05

建查看分数排行/查看个人分数区域建筑

做法参考

/give @s minecraft:debug_stick

/setblock ~ ~ ~ minecraft:stone_button[face=floor]

使用调试棒修改了部分方块(左键改变所要修改的方块数据值,右键修改所选数据值)

2021-05-10

扩张议员范围以求得到建筑建议(原12人现18人) 但是实际好像完全没有用处

初步建选择PVP职业狂战士区域建筑

做法参考

/summon minecraft:armor_stand ~ ~ ~ {Invulnerable:true,ShowArms:true,Pose:{RightArm:[0f,0f,0f]},NoGravity:true}(生成用于做出摆放物品效果的盔甲架)

/data merge entity @e[limit=1,sort=nearest,type=minecraft:armor_stand] {Pose:{RightArm:[0f,0f,0f]}}(修改盔甲架姿势)

/execute as @e[limit=1,sort=nearest,type=minecraft:armor_stand] at @s run tp @s ~ ~ ~(微调盔甲架位置)

/data merge entity @e[limit=1,sort=nearest,type=minecraft:armor_stand] {Invisible:true,DisabledSlots:16191,Marker:true}(结束修改 隐藏盔甲架 禁止物品交互 缩小碰撞体积)

/data merge entity @e[limit=1,sort=nearest,type=minecraft:painting] {Invulnerable:true}(设定画无法破坏)

/data merge block ~ ~-1 ~ {Lock:"key"} (锁箱子、熔炉等)

初步规划循环函数

循环重置花盆 用于玩家取走花盆内植物的情况

2021-05-14

在狂战士选择区域增加药水装饰

2021-05-15

在狂战士选择区域增加药水装饰

将主循环函数写入tick文件

将重置花盆命令移动至main>repeat>set_data>main

将侧边栏计分板由sidebarSwitch改为sidebar

删除了load_reset/main中重置情况list计分板显示命令

在load_reset/main中加入设置侧边栏修改分数命令

在load_reset/main中加入创建与村民交互检测计分板命令(未用于修改计分板)

将hall/sidebar路径名称改为hall/retrieval

冷酷如冰0 修改选择职业狂战士区域 Runwill(我) 参与

写侧边栏切换命令


检测侧边栏切换触发与重置村民交互计数
转到上一个计分板
转到下一个计分板
切换侧边栏前修正计分板 添加观看玩家(此处判断侧边栏计分板值应使用matches 在20201.05.09更新中修复)
如切换前无正在观看玩家则初始化
切换侧边栏并播放音效

写有关疾跑时退出计分板查看的命令

在load_reset/main中加入创建疾跑检测计分板命令
循环检测正在查看计分板的玩家疾跑 循环重置疾跑判定
离开查看计分板队伍并播放音效 若无正在查看计分板的玩家则移除队伍

取消了原右键讲台查看自己分数的计划

生成查看计分板区域浮空字

做法参考

/summon minecraft:armor_stand ~ ~2 ~ {CustomName:'[{"text":"","color":""}]',CustomNameVisible:true,Invulnerable:true,Invisible:true,DisabledSlots:16191,Marker:true,NoGravity:true}

冷酷如冰0 建选择经典职业对战模式 Runwill(我) 修改

冷酷如冰0 建选择职业神射手区域 Runwill(我)参与

2021-05-16

增加选择经典职业对战模式区域周围的草、树叶

在load_reset/objectives/main中加入创建药水效果判定计分板命令

写重置加入游戏玩家命令

倒数第二行有错 见2021.05.22更新部分 2021.06.12修改触发重置加入游戏玩家机制

写循环给予玩家药水效果命令

漏了虚弱 2021.05.22更新时加入

将给予药水效果与重置加入游戏写入循环

节选

2021-05-22

将选择经典PVP模式区域旗帜下磨制黑石改为黑曜石

增加选择职业区域的草

将effect移至repeat/testfor目录下

修复重置玩家时重置退出游戏记录分数导致无法区分未加入过游戏玩家的漏洞

将reset改为set ... 0

添加虚弱作为大厅药水效果

冷酷如冰0 开始建造经典PVP模式等待区域

MC_himcd 提供了内网映射方法(uTools内网穿透插件)

编号2403千羽 提供了显示离线皮肤模组

得到了1.16.4forge服务端与客户端(链接见下方)

Minecraft我的世界1.16.4Forge服务端整合 作者: 肆零肆E 

2021-05-23

添加饱和作为大厅药水效果

将重置游戏时设定doDaylightCycle为false改为true

重置游戏时生成储存标签用盔甲架

写加入经典对战模式函数

在循环中加入运行选择模式函数(6-7行)
检测加入经典对战玩家 经典对战未开始则传送(开始后加入尚未完成)

增加经典对战模式加入区域浮空字

增加加入经典对战等待后文本显示

修改加入游戏显示文本与播放音效选择器(规划joinedStatus为负数表示在游戏中 不接受加入游戏音效与文本)

@a改为@a[scores={joinedStatus=0..}]

增加群员大厅道具羽毛(手持+40%速度 下图第13行 选择器错误 未判断是否为群员 2021.05.29更新中修复)

分离回到大厅函数(节省语句)

修改后的重置加入游戏玩家

写退出经典对战等待函数

将退出经典对战等待函数写入循环(因建筑未完成暂未设置触发方式)

2021-05-26

更改players/choose_mode为players/enter_waiting_hall

更改players/exit_waithall改为players/exit_waiting_hall

更改对应函数名称

在加入经典对战模式中增加检测人数足够则触发开始游戏倒计时命令

新建mode/start_game_countdown路径

2021-05-29

修复了给予群员大厅道具选择器错误的漏洞

scores判断是否加群

写开始经典对战开始游戏倒计时

修改增加检测人数足够则触发开始游戏倒计时命令

新增18行判断倒计时是否已经开始 19行删除计分板

将所有使用operationNumber的命令改为使用matches(hall/retrieval、players/enter_waiting_hall)

删除了创建operationNumber计分板的命令

写经典对战开始游戏倒计时

循环
每刻触发
每秒触发 MC_himcd提供指导意见

冷酷如冰0 Runwill(我) 继续建造经典对战等待区域 binyuanqishi 参与

与外界有屏障隔离

初步写经典对战开始游戏倒计时结束命令

修改进入经典对战等待区域传送坐标

写经典对战人数不足停止倒计时命令并加入循环

2021-05-30

建造经典对战选择地图区域

2021-05-31

添加选择职业区域的屏障

添加经典对战选择地图区域的草径

本篇完达到专栏100图片上限了- -;

特别鸣谢

指令顾问

MC_himcdMC_himcd

technomuto

参与建筑

冷酷如冰0冷酷如冰0

分享映射软件

MC_himcdMC_himcd

地图建造记录001丨Minecraft JE 竞技地图更新日志2021.03-2021.05的评论 (共 条)

分享到微博请遵守国家法律