突然想玩优质挖砍包了,但是国内找不到,就自己组了一个,然后被各种问题干爆,查Wiki啥都没有,干脆开个教程慢慢摸索,有新发现可以发在评论区。

首先要知道数据包和资源包制作的方法,建议自己百度教程实际上懒得写了

然后就是经常性加载数据包和资源包,以及mod数据读取,推荐KubeJS+ProbeJS配合VSC获取数据写代码,用kubejs自带的数据加载功能实测不太好用或者openloaderPaxi来快速加载数据包。

接下来就正式开始了,获取挖矿与砍杀以及需要兼容的mod的数据,最简单的方法就是右键解压mod,然后创个文件夹把data文件夹(数据包用)和assets文件夹(资源包用)放进去,注意区分好mod。

1.20.1挖矿与砍杀数据包及资源包制作(新武器类型、自制技能等)-第1张图片

关于data文件夹的构成可以参考【挖矿与砍杀Mine and Slash】--1.20.1版本--配置文件 --属性及装备配置

zh_cn翻译文件用来找属性数据id很好用强烈推荐。

1、兼容新种类武器,如:枪械

挖矿与砍杀移除物品伤害作用机制:直接在有伤害的物品加上{damage=0}的nbt,因为期血量机制实际是添加假血条然后根据假血条的损耗映射到真血条上,所以推荐用5.5.4更新日志上的方法来适配模组武器。

首先创建基础武器类型标签,新建文件夹改名mmorpg并在里面新建如下文件夹

1.20.1挖矿与砍杀数据包及资源包制作(新武器类型、自制技能等)-第2张图片

这些是适配新种类武器必须用到的文件夹,可以用解压出来的data里的对应文件夹里的*bow*.json照猫画虎。

//mmorpg_weapon_type\gun.json             这是装备标签文件夹
{
    "can_dual_wield": true,                      //能否双持(副手武器有数值衰减,修改在存档里的severcofing文件夹里)
    "damage_validity_check": {              //伤害数据(这个武器类型造成伤害的检查,tac等
                                                                 // mod不能造成伤害往往就是这里的配置没调好)
      "contains_in_dmg_id": [                  //武器伤害标签(适配技能/词条用)
        "ammo",                                       //消耗弹药
        "bullet",                                        //子弹
        "dart",                                          //弹射物
        "missile",                                      //可闪避的
        "gun"                                           //枪械
      ],
      "source_check": "RANGED_PROJECTILE",      //****伤害资源检查,如果无法触发伤害请改为"ANY"以适配伤害
      "tag_and_id_check": "MATCH_ANY",              //****伤害标签和id检查,如果无法触发伤害请改为"MATCH_ANY"或者"ANY'以适配伤害
      "valid_proj_dmg_id": []                            //****在这里添加兼容伤害id,可以用modid或者damage_type
    },                                                                
    "id": "gun",
    "isProjectile": true,                                            //是否为投射物伤害
    "range": "RANGED",                                          //远程/近战/魔法,具体id能在作者的github源码中找到。
    "style": "DEX"                                                     //该种类装备主属性
  }
  ============================================================
  //mmorpg_base_gear_types\gun.json      一种武器基础数据
  {
  "base_stats": [                                                //基础属性数据
    {
      "type": "FLAT",                                            //武器数据种类(固定数值,还能改成百分比数值)
      "max": 6.0,                                                    //武器提供该属性上限
      "min": 2.0,                                                    //武器提供该属性下限
      "stat": "weapon_damage"                          //伤武器提供属性类型(装备伤害)
    }
  ],
  "gear_slot": "gun",                                          //武器灵魂种类
  "guid": "gun",                                                  //武器种类id
  "possible_items": [
    {
      "item_id": "tacz:modern_kinetic_gun",        //示例掉落物品(你打怪或者开箱能开出的成装)
      "min_rar": "common",                                   //掉落最低品质
      "weight": 1000                                                /掉落权重,目前数据对比发现数字越小掉落概率越小。
    }
  ],
  "req": {                                                         //装备武器所需属性
    "base_req": {},                                            //装备武器所需基础属性(1级装备所需属性)
    "scaling_req": {                                          //装备等级每增加一级所需属性(向下取整)
      "dexterity": 0.5                                          //每等级武器需要0.5敏捷来装备(向下取整,如一级武器需求0敏捷,2级3级需求2敏捷)
    }
  },
  "style": "DEX",                                                //该种类武器属于哪种主属性武器(适配技能和词条)
  "tags": {
    "tags": [                                                //武器种类的标签,作用于技能、buff等
      "dexterity",                                          //敏捷
      "ranged_weapon",                            //随机属性装备
      "weapon_family",                             //可制作灵魂装备
      "gun"                                                //枪械
    ]
  },
  "weapon_type": "gun",                            //武器种类
  "weight": 1000                                        //权重不知道干啥的,疑似该种类武器掉落概率有关
}

//mmorpg_gear_slot\gun.json          //装备属性微调
{
    "fam": "Weapon",                            //物品种类
    "id": "gun",                                        //id
    "model_num": 14,                            //物品在assets\mmorpg\models\item\stat_soul.json中的编号
    "weapon_data": {                                //物品属性
      "damage_multiplier": 1.5,                            //伤害乘数
      "energy_cost_per_mob_attacked": 6.0,        //怪物使用时能量消耗
      "energy_cost_per_swing": 0.0                        //每次使用能量消耗
    },
    "weight": 1000                                                //权重,不知道干啥的
  }
  ==================================================================================
  //mmorpg_prophecy_modifier\gun.json      武器属性微调文件
  {
    "cost_multi": 2.0,                                            //不知道干啥的
    "data": "gun",                                                //数据标签
    "id": "gun",                                                    //数据id
    "lvl_req": 0,                                                     //最低需求等级
    "modifier_type": "GEAR_TYPE",                    //类型标签(GEAR_TYPE代表着这个是装备)
    "tier_req": 0,                                                  //最低对应主属性需求
    "weight": 1000                                              //不知道干啥的权重
  }

这四个文件创建好之后数据包暂告一段落,但是还不能用,之后要准备资源包创建游戏内物品的图标

把准备好的标放入mmorpg\textures\item\stat_soul文件夹,然后去mmorpg\models\item文件夹下面

//item\stat_soul.json       提供图标文件的定位文件的定位,在overrides里加上就行,其他的不要乱动
{
"parent": "item/generated",
"textures": {
"layer0": "mmorpg:item/stat_soul/stat_soul"                                   //武器灵魂图标上级目录
},
"overrides": [
{ "predicate": {  "custom_model_data": 1 }, "model": "mmorpg:item/stat_soul/sword"},
{ "predicate": {  "custom_model_data": 2 }, "model": "mmorpg:item/stat_soul/scepter"},
{ "predicate": {  "custom_model_data": 3 }, "model": "mmorpg:item/stat_soul/staff"},
{ "predicate": {  "custom_model_data": 4 }, "model": "mmorpg:item/stat_soul/axe"},
{ "predicate": {  "custom_model_data": 5 }, "model": "mmorpg:item/stat_soul/bow"},
{ "predicate": {  "custom_model_data": 6 }, "model": "mmorpg:item/stat_soul/crossbow"},
{ "predicate": {  "custom_model_data": 7 }, "model": "mmorpg:item/stat_soul/boots"},
{ "predicate": {  "custom_model_data": 8 }, "model": "mmorpg:item/stat_soul/pants"},
{ "predicate": {  "custom_model_data": 9 }, "model": "mmorpg:item/stat_soul/chest"},
{ "predicate": {  "custom_model_data": 10 }, "model": "mmorpg:item/stat_soul/helmet"},
{ "predicate": {  "custom_model_data": 11 }, "model": "mmorpg:item/stat_soul/shield"},
{ "predicate": {  "custom_model_data": 12 }, "model": "mmorpg:item/stat_soul/ring"},
{ "predicate": {  "custom_model_data": 13 }, "model": "mmorpg:item/stat_soul/necklace"},
{ "predicate": {  "custom_model_data": 14 }, "model": "mmorpg:item/stat_soul/gun"}     
]
}
//item\stat_soul\gun.json    定位图标位置
{
    "parent": "item/generated",
    "textures": {
        "layer0": "mmorpg:item/stat_soul/gun",
        "layer1": "mmorpg:item/stat_soul/question"
    }
}

然后就能在游戏里见到新添加的灵魂了,但是目前图标还是?,你需要往assets\mmorpg\textures\item\stat_soul文件夹里放入物品图标文件来提供物品灵魂图形资源。然后通过JEI扩展等mod获取本地化翻译名并修改assets\mmorpg\lang文件夹里的语言文件来给灵魂提供翻译。

{
"mmorpg.tag.gear_slot.gun":"枪械",
"mmorpg.gear_type.gun":"枪械",
"mmorpg.gearslot.gun":"枪械",
"mmorpg.gear_slot.gun":"枪械"
}

注意:仅添加武器灵魂无法兼容武器,请前往servercofing里找服务端配置文件适配。

2、自定义武器修饰\词条系统

mmorpg的武器词条种类分为随机属性(chaos_stat)、隐藏属性(implicit)、前缀(prefix)和后缀(suffix)以及附魔(enchant)

其中附魔为由副职业生产的附魔卷轴提供,其余皆为装备基本词条。除隐藏属性具体到物品灵魂种类,其余词条仅以近战武器、远程武器、装备、饰品区分。

所有词条以其种类id分布于mmorpg_affixes文件夹。

mod本身提供丰富的随机属性前缀和后缀,附魔系统本身太过鸡肋,这里仅以给枪械添加隐藏属性为例。

//mmorpg_affixes\implicit\AP_gun.json        穿甲弹枪械
{
  "type": "implicit",                                      //标签:隐藏属性,更改为chaos_stat即可设定为随机属性
  "eye_aura_req": "",                                    //光环容量占用或者物品质量\潜能消耗
  "guid": "AP_gun",                                     //词条id用于mod寻找这个文件
  "only_one_per_item": true,                      //只出现一次
  "requirements": {                                      // 检查
    "tag_requirements": [                             //这个隐藏属性出现的限制
      {
        "type": "GearSlot",                              //装备
        "excluded": [],                                    //在这些词条上不出现
        "included": [                                       
          "gun"                                                 //在某种词条上出现,这里指在存在"gun"种类的的武器灵魂上出现
        ],
        "req_type": "HAS_ALL"                      //属性标签(力、智、敏?近战、远程?)目前没搞明白
      }
    ]
  },
  "stats": [                                                  //词条的属性
    {
      "type": "FLAT",                                     //数据类型:固定值,可改成"PERCENT"(百分比)
      "max": 10.0,                                         //随机到的最大值
      "min": 5.0,                                            //随机到的最小值
      "stat": "physical_penetration"            //属性id,这个是物理穿透,具体可以去mmorpg_stat文件夹或者zh_cn翻译文件寻找
    }
  ],
  "weight": 1000                                         //权重,疑似出现概率
}

注意属性id是否正确,错误并不影响游戏运行但是会显示unknowstat导致词条无任何效果。

然后为你的隐藏词条添加汉化。格式如下:

"mmorpg.affix.隐藏词条uid":"隐藏词条名称",

3、自定义独特武器

独特武器文件夹是mmorpg_unique_gears,这里有游戏里的所有独特武器(红色品质)

以新增加的枪械武器的独特装备为例:

//mmorpg_unique_gears\heavy_sniper_rifle.json 
{
  "base_gear": "gun",                                  //独特装备的基础种类
  "flavor_text": "",                                        //独特介绍可以不写会加长nbt
  "force_item_id": "pointblank:gm6lynx", //独特物品的对应id,这里以维克托现代战争的枪为例
                                                                   //taz的枪需要加额外的nbt,否则需要以
                                                                   //为taz枪械右键添加灵魂的形式使用
                                                                   //直接右键会生成黑紫色方片
  "guid": "heavy_sniper_rifle",                   //这个独特物品的id,用于翻译等,需要与文件名相同
  "league": "",                                            //级别,不建议填,让它随机就行
  "min_tier": 0,                                           //最低等阶,受等级上限影响,每20级为一阶
                                                                  //默认1~20级为0阶,21~40级为1阶
                                                                  //41~60级为2阶,61~80级为3阶,81~99级为4阶
                                                                  //100级为5阶,修改等级上限后变为101~120级为5阶
  "rarity": "unique",                                   //物品品质,默认为独特
  "replaces_name": true,                           //更换物品名称
  "runable": false,                                      //不知道干啥的,疑似是否允许镶嵌宝石或符文,默认false
  "unique_stats": [                                     //独特物品属性
    {
      "type": "PERCENT",                             //属性数据类型,这里是百分比
      "max": 200.0,                                       //最大值
      "min": 50.0,                                          //最小值
      "stat": "gear_weapon_damage"         //属性id
    },
    {
      "type": "PERCENT",
      "max": 95,
      "min": 87.5,
      "stat": "physical_penetration"
    },
    {
      "type": "FLAT",
      "max": 30.0,
      "min": 15.0,
      "stat": "critical_hit"
    },
    {
      "type": "FLAT",
      "max": 30.0,
      "min": 0.0,
      "stat": "critical_damage"
    }
  ],
  "weight": 1000                                   //权重,应该是掉落几率。
}

然后就能在游戏里开出对应枪械的独特物品了,不过出来的应该是没翻译的翻译用名,需要在语言文件夹里加上翻译。格式如下:

"mmorpg.unique_gear.自定义独特物品uid.name": "自定义独特物品汉化",

之后独特物品就能生成了,还能添加其他种类物品,比如饰品,装备等。

4、自定义符文之语

理论上应该从自定义符文开始,但是mod本身就有22种符文,而且本身掉落就是问题,要多美妙丧心病狂的整合包作者才会加新的符文之语,所以这部分跳过。

符文文件夹是mmorpg_runes,想要添加新符文就要加进这个文件夹,有形物的可以照猫画虎自己试,这里只提一下,方便后面制作符文之语。

符文之语文件夹是mmorpg_runeword,跟独特装备添加方法差不多,甚至更无脑。

//mmorpg_runeword\符文之语id.json
{
  "id": "符文之语id",
  "runes": [                  //需要用的符文种类,不知道写啥建议看mmorpg_runes文件夹
    "wir",
    "mos",                    //应该是要两种以上
    "ano"
  ],
  "slots": [                  //应用于的装备种类
    "gun",
    "bow"
  ],
  "stats": [                //词条
    {
      "type": "FLAT",
      "max": 1.0,
      "min": 1.0,
      "stat": "plus_lvl_physical_spells" //整个数据指物理类技能等级+1
                                                          //只能说这个mod可配置项是rpgmod的巅峰
    },
    {
      "type": "PERCENT",
      "max": 10.0,
      "min": 5.0,
      "stat": "health"
    },
    {
      "type": "PERCENT",
      "max": 6.0,
      "min": 3.0,
      "stat": "energy"
    },
    {
      "type": "PERCENT",
      "max": 6.0,
      "min": 3.0,
      "stat": "mana"
    }
  ]
}

然后是汉化

"mmorpg.runeword.符文之语id":"符文之语汉化",

目前没发现“铭文”(黄色)品质的装备生成配置项,盲猜应该是所对应装备中欸符文之语所需符文量生成。

5、***自定义属性***

整个mod的基础也是这个mod的精髓,里面的东西太多、太琐碎了,原本想留着最后写的,然后更新5.5.20加了新的可配置项,想着就干脆先把最难的部分写了。

这一部分可能会更新很长一段时间,中间会有很多错误之处,如果发现记得评论留言,我有时间就会更改或者直接更改也行。

一般情况下"FLAT"和"PERCENT"分别对应固定值和百分比加成,但是对于一部分属性有不同加成,

比如暴击伤害的"FLAT"指暴击伤害加固定百分比,"PERCENT"则是基于你已经拥有的暴击伤害加成

例:

//增加10%暴击伤害
{
          "type": "FLAT", 
          "max": 10.0,
          "min": 10.0,
          "stat": "critical_damage",                                            
}
//增加(你已有的暴击伤害如175%)X10%的暴击伤害
{
          "type": "PERCENT", 
          "max": 10.0,
          "min": 10.0,
          "stat": "critical_damage",                                            
}


================================================================

以下为mmorpg_stat文件夹

5.1基础属性

力(strength)智(intelligence)敏(dexterity)老三样了,不建议添加新的基础属性,因为会牵扯到UI的显示问题,会把整个UI卡没,除非你会修改UI。

可以通过修改对应属性文件修改属性的加成,如敏捷dexterity

//mmorpg_stat\dexterity.json
{
  "data": {
    "base": 0.0,                                        //基础值(等级1且不加点)
    "core_stat_data": {                            //核心属性数据
      "stats": [                                           //属性加成
        {
          "type": "FLAT",
          "scale_to_lvl": false,                     //是否受等级影响
          "stat": "projectile_damage",       //弹射物伤害
          "v1": 0.2                                        //每加1点,提升0.2%
        },
        {
          "type": "FLAT",
          "scale_to_lvl": false,
          "stat": "attack_speed",
          "v1": 0.5
        },
{
          "type": "FLAT",
          "scale_to_lvl": false,
          "stat": "cast_speed",
          "v1": 0.25
        },
        {
          "type": "PERCENT",
          "scale_to_lvl": false,
          "stat": "energy_regen",
          "v1": 2.0
        },
        {
          "type": "PERCENT",
          "scale_to_lvl": false,
          "stat": "dodge",
          "v1": 0.5
        }
      ]
    },
    "ele": "Physical",                       //属性元素类型:物理
    "id": "dexterity",                        //属性id
    "max": 2.14748365E9,               //此属性最大可达多少
    "min": 0.0,                                 //属性最小值高于基础值会报错
    "name": "Dexterity",                //属性名
    "perc": false,                            //不知道干啥的
    "scale": "CORE"                      //属性类型
  },
  "ser": "core_stat"                      //属性类型
}

属性加成项其实就是在mmorpg_stat文件夹里的属性,整个mmorpg_stat实际很复杂。