本帖最后由 DoYo_GZ 于 2020-2-27 19:59 编辑

DOYO的前置 | DOYO FRONT

介绍:
        该数据包制作的目的是为了方便大家(与自己)制作数据包,我们可以将数据包的信息添加到该数据包中某个元素内,以方便管理各类数据包,甚至可以实现数据包之间的配合,避免冲突(理想情况下),内置数据包必备UID发放,部分数据包可能还会需要自定义合成功能,(是的!这个数据包中有可以自行添加新配方的合成器,甚至可以利用这个来制作其它合成器),数据包还支持显示已介入该数据包的数据包所有信息(完全可以由用户自行填写信息)

功能介绍及用法:
  • 介入DOYO FRONT
    方法:在自己数据包的任意一个(只能一个)#minecraft:load标签的函数中添加如下命令(根据中文提示添加)
    1. #适当的提示(如果不需要用户必须安装该数据包可省去)
    2. execute unless predicate doyo_front:verification run function 若未安装该数据包则加载的函数
    3. execute if predicate doyo_front:verification run 若安装了该数据包加载的函数
    4. #在自己本来需要加载的函数中添加如下命令(请保证这个函数是在加载数据包后直接加载的)
    5. data modify storage doyo_front:default doyo_front.doyo_mod_transfer set value {Name:'数据包名称(JSON)',trigger:'数据包后缀(JSON,可以不填写)'}
    复制代码
    执行/function doyo_front:mod/view命令可以查看联用情况
  • 存储玩家数据
    内容:所有玩家的相关数据包括UID都在doyo_front:default存储中的player_info中,要想获取指定UID玩家的某个键的信息,这里有提示(暂时不安排具体命令,会的朋友可以尝试,之后可能会加入相关获取的函数,目前版本不支持)

    玩家的UID同时存储在doyo_front_count记分项中,所以可以直接获取玩家UID
    由于doyo_front:default(一个storage文件)中存有一个表叫做player_info路径表示为storage doyo_front:default player_info,可以把这个路径下的值复制到你自己的nbt下,然后对其进行搜索(复制到路径下后,建议把name标签删去),搜索方法举例:,假设键b的内容是{},表a的内容是表player_info中的内容,我们先把这个表中每个元素中的name标签删除(如果要获取进服时的名字,则可以不删),建立一个递归函数,递归内容是:第一条命令是用execute命令执行data把表a的内容的第一个元素复制到键b中执行成功则计分1(将分数存储到某个记分项中),第二条命令是用execute判断刚才存储的记分项的分数是否为1,是则可以执行data get 键b路径.要获取的玩家信息(必须存在这个键)否则继续执行这个function,详细命令举例(下列方法是获取指定UID玩家的第一次进存档顺序):
    1. #令要被获取第一次进存档顺序的玩家执行函数a例如
    2. execute as DoYo_GZ function example:a
    3. #函数a
    4. data modify storage doyo_front:example a set from storage doyo_front:default player_info
    5. data remove storage doyo_front:example a[].name
    6. function example:b
    7. #函数b
    8. execute store success score doyo_front_score_tool_0 doyo_front_count run data modify storage doyo_front:example a set from storage doyo_front:default player_info
    9. execute if score doyo_front_score_tool_0 doyo_front_count matches 1 run tellraw @p {"nbt":"b.order","storage":"doyo_front:example"}
    10. execute unless score doyo_front_score_tool_0 doyo_front_count matches 1 run function example:b
    复制代码

  • 存储配方(如下命令为举例,之后会在贴内列出所有方法,也可以自行探索),绿色的表示配方路径,红色的表示输出内容,配方所在元素请保证格式为
    1. 表名:[{id:"配方id,例如doyo_front:crafting_table",Items:[写法和chest中大的Items写法一样,但不要添加Count否则配方必须按照要求的配方才能合成,也要可能出现意外,栏位一定要添加,无序合成的方法另有方法,暂时不标明]}]
    复制代码

    execute store success score doyo_front_crafting_table_stats_1 doyo_front_count run data modify storage doyo_front:recipe transfer_judge.Items set from storage doyo_front:recipe doyo_front.cb[{id:"doyo_front:crafting_table"}].Items
    execute if score doyo_front_crafting_table_stats_1 doyo_front_count matches 0 run loot replace block ~ ~ ~ container.14 loot doyo_front:item/crafting_table
    execute if score doyo_front_crafting_table_stats_1 doyo_front_count matches 0 store result block ~ ~ ~ Items[{Slot:14b}].Count byte 1 run scoreboard players get doyo_front_rewards_count doyo_front_count
    execute if score doyo_front_crafting_table_stats_1 doyo_front_count matches 0 run tag @s add doyo_front_recipe_complete
    data modify storage doyo_front:recipe transfer_judge.Items set from storage doyo_front:recipe transfer_recipe.Items
    写完配方后,记得要在自己的data文件夹中添加一个目录doyo_front,然后新建tags再在里面新建functions文件夹,最后创建一个名为recipe.json的文件在里面输入(按提示)
    {
    "value":[
    "函数名",
    "函数名2"(...以此类推,只要是用来完成合成的函数都得添加到这里面才能正常使用)
    ]
    }

游戏部分演示图片:


下载数据包: DOYO FRONT.zip (16 KB, 下载次数: 22)
更新日志:
2020/2/24 beta1.0 增加了自定义合成功能,增加了存储玩家数据功能,增加了介入数据包功能


计划加入:自定义gui界面,自定义合成器样式,防止配方冲突,加入熔炉等各种功能方块的自定义合成方式,多人免冲突合成(正式版考虑加入),内置管理员控制面板(正式版必定加入),更方便的获取玩家信息(优先加入),经济系统(优先考虑),生物属性显示,自定义配方表,自定义生物表,自定义物品表,道具包(包含所有添加进去的新物品)
可更新时间:节假日

更新状态:
beta2.0 目前正在持续更新中
已完成内容:自定义合成器判断接口,优化了性能(2011年的中低等配置也能流畅运行)
合成台模型制作完成,gui制作完成