常见问题 - Annijang/PlayerEx GitHub Wiki

1、如何自定义等级升级公式?

RPG等级有一个升级公式,公式是基于数学函数。当输入x值时,便会输出一个结果y,默认情况下公式如下:

y=stairs(x,0.15,2,25,10,22)

可以将stairs(x,0.15,2,25,10,22)理解为:

y=min(v×u×(x−i)−v×sin(u×(x−i))+j,m)

PS:不要问我这个公式是什么意思,孩子从小没好好读书,看不懂这个公式,谢谢理解。

如果将它们绘制成图表,那么x代表的是玩家当前的RPG等级,而y是玩家升级所需要的经验值,图表如下: image

通过图表可以了解到,当玩家的RPG等级为0级时,只需要1级的原版等级就能提升1级的RPG等级,而当RPG等级升到20-30级时,则需要10级原版等级才能提升一级,最后通过图表也可以知道默认情况下最高需要22级原版等级才能提升1级的RPG等级。

而在配置文件中,有的函数是立即生效的,即sin和cos。如果想了解有关支持的函数和常数列表,请查看此处。需要注意的是x变量,该变量代表的是玩家当前的RPG等级,且必须在公式里存在,无法删除。

以下为配置文件中的表达例子:

1.1 默认公式

如下所示,本模组的默认公式是:

stairs(x,0.15,2,25,10,22)

1.2 恒定公式

如果想让每次升级都消耗指定等级而不是逐渐增长的,可以试试以下的公式,以下的公式是每次玩家提升RPG等级都恒定消耗4级原版等级,不管玩家的RPG等级多高也只会消耗4级原版等级。

x-x+4

1.3 指数公式

如果想让玩家的每次升级都消耗比玩家等级多1级的方式来升级,可以试试以下的公式,以下的公式是当玩家每次升级时,下一次升级都会在玩家等级的基础上再多消耗1级原版等级。例如:当玩家的RPG等级为0级时,下一次需要消耗1级原版等级才能将RPG等级升到1级;当玩家的RPG等级为5级时,下一次需要消耗6级原版等级才能将RPG等级升到6级;当玩家的RPG等级为100级时,下一次需要消耗101级原版等级才能将RPG等级升到101级。

1+0.05*x^2

2、如何设置玩家可以升到的最高RPG等级?

默认情况下,玩家可以达到java的极限等级-2的31次方-1,也就是2147483648,但是实际上玩家会因为经验获取的原因而不可能达到该等级,因此,可以在数据包里设置玩家可以达到RPG等级的上限。在下面的例子中,玩家的最高RPG等级被限制在50级。

2.1 文件结构

首先需要根据以下路径来创建文件夹结构:

📂anything.zip
 ┣📄pack.mcmeta
 ┗📂data
   ┗📂playerex
     ┗📂attributes
       ┗📂overrides
         ┗📄level.json

注意:可以将上述文件夹中的“anything.zip”文件夹名称更改为其他的名称,名称没有限制,但是文件夹名称不能是“anything”、“playerex”、“minecraft”这三种名称的任意一种。

2.2 pack.mcmeta

需要在文件内输入以下内容,我的世界才会将该数据包识别为正确的数据包,否则我的世界将无法识别该数据包。

{
    "pack": {
        "pack_format": 8,
        "description": [
            {
                "text": "示例数据包",
                "color":"gold"
            },
            {
                "text": "\nCleverNucleus/PlayerEx",
                "color":"yellow"
            }
        ]
    }
}

注意:在制作数据包时请正确将“pack_format”右侧的数字对应我的世界的对应材质包版本,虽然没有很大的影响但是建议根据以下材质包的不同版本来将数字更改为目前自己使用的版本。

1.6.1(13w24a)到1.8.9为1
1.9(15w31a)到1.10.2为2
1.11(16w32a)到1.12.2(17w47b)为3
1.13(17w48a)到1.14.4(19w46b)为4
1.15(1.15-pre1)到1.16.1(1.16.2-pre3)为5
1.16.2(1.16.2-rc1)到1.16.5为6
1.17(20w45a)到1.17.1(21w38a)为7
1.18(21w39a)到1.18.2为8
1.19(22w11a)到1.19.2为9
1.19.3快照22w42a 到22w44a为11
1.19.3(22w45a)到 1.19.4(23w07a)为12
1.19.4(1.19.4-pre1)到1.20(23w13a)为13
1.20快照23w14a到23w16a为14
1.20(23w17a)及以上为15

2.3 level.json

{
    "fallbackValue": 0.0,
    "minValue": 0.0,
    "maxValue": 50.0,
    "incrementValue": 0.0,
    "translationKey": "playerex.attribute.name.level",
    "stackingBehaviour": "FLAT"
}

在该文件内,玩家的初始RPG等级为0级,玩家最高可以将RPG等级升到50级。

3.1 如何设置玩家的初始生命值?

2.类似,但本选项将玩家的初始生命值从20点(10心)修改为6点(3心)。

3.1 文件结构

首先需要根据以下路径来创建文件夹结构:

📂anything.zip
 ┣📄pack.mcmeta
 ┗📂data
   ┗📂anything
     ┗📂attributes
       ┗📄entity_types.json

注意:可以将上述文件夹中的“anything.zip”文件夹名称更改为其他的名称,名称没有限制,但是文件夹名称不能是“anything”、“playerex”、“minecraft”这三种名称的任意一种。

3.2 pack.mcmeta

需要在文件内输入以下内容,我的世界才会将该数据包识别为正确的数据包,否则我的世界将无法识别该数据包。

{
    "pack": {
        "pack_format": 8,
        "description": [
            {
                "text": "示例数据包",
                "color":"gold"
            },
            {
                "text": "\nCleverNucleus/PlayerEx",
                "color":"yellow"
            }
        ]
    }
}

注意:在制作数据包时请正确将“pack_format”右侧的数字对应我的世界的对应材质包版本,虽然没有很大的影响但是建议根据以下材质包的不同版本来将数字更改为目前自己使用的版本。

1.6.1(13w24a)到1.8.9为1
1.9(15w31a)到1.10.2为2
1.11(16w32a)到1.12.2(17w47b)为3
1.13(17w48a)到1.14.4(19w46b)为4
1.15(1.15-pre1)到1.16.1(1.16.2-pre3)为5
1.16.2(1.16.2-rc1)到1.16.5为6
1.17(20w45a)到1.17.1(21w38a)为7
1.18(21w39a)到1.18.2为8
1.19(22w11a)到1.19.2为9
1.19.3快照22w42a 到22w44a为11
1.19.3(22w45a)到 1.19.4(23w07a)为12
1.19.4(1.19.4-pre1)到1.20(23w13a)为13
1.20快照23w14a到23w16a为14
1.20(23w17a)及以上为15

3.3 entity_types.json

{
    "values": {
        "minecraft:player": {
            "minecraft:generic.max_health": 6.0
        }
    }
}

如果一切设置顺利的话,那么玩家的初始生命值会被设置为6点(3心)。

4、如何将近战攻击的暴击方式恢复成原版?

默认情况下,本模组将原版的暴击方式更改为基于概率的暴击,而不是原版的跳起来攻击,同时本模组也修改了原版的暴击伤害,从原来默认的150%更改为默认100%,只不过该操作可通过数据包的形式来恢复成原版。

4.1 文件结构

需要按照以下路径来创建文件夹:

📂anything.zip
 ┣📄pack.mcmeta
 ┗📂data
   ┗📂playerex
     ┗📂attributes
       ┣📄entity_types.json
       ┗📄functions.json

4.2 pack.mcmeta

需要在文件内输入以下内容,我的世界才会将该数据包识别为正确的数据包,否则我的世界将无法识别该数据包。

{
    "pack": {
        "pack_format": 8,
        "description": [
            {
                "text": "示例数据包",
                "color":"gold"
            },
            {
                "text": "\nCleverNucleus/PlayerEx",
                "color":"yellow"
            }
        ]
    }
}

注意:在制作数据包时请正确将“pack_format”右侧的数字对应我的世界的对应材质包版本,虽然没有很大的影响但是建议根据以下材质包的不同版本来将数字更改为目前自己使用的版本。

1.6.1(13w24a)到1.8.9为1
1.9(15w31a)到1.10.2为2
1.11(16w32a)到1.12.2(17w47b)为3
1.13(17w48a)到1.14.4(19w46b)为4
1.15(1.15-pre1)到1.16.1(1.16.2-pre3)为5
1.16.2(1.16.2-rc1)到1.16.5为6
1.17(20w45a)到1.17.1(21w38a)为7
1.18(21w39a)到1.18.2为8
1.19(22w11a)到1.19.2为9
1.19.3快照22w42a 到22w44a为11
1.19.3(22w45a)到 1.19.4(23w07a)为12
1.19.4(1.19.4-pre1)到1.20(23w13a)为13
1.20快照23w14a到23w16a为14
1.20(23w17a)及以上为15

4.3 entity_types.json

需要在entity_types.json文件中输入以下代码:

{
    "values": {
        "minecraft:player": {
            "playerex:level": 0.0,
            "playerex:constitution": 0.0,
            "playerex:strength": 0.0,
            "playerex:dexterity": 0.0,
            "playerex:intelligence": 0.0,
            "playerex:luckiness": 0.0,
            "playerex:evasion": 0.0,
            "playerex:lifesteal": 0.0,
            "playerex:health_regeneration": 0.0,
            "playerex:heal_amplification": 0.0,
            "playerex:ranged_crit_damage": 0.0,
            "playerex:ranged_crit_chance": 0.0,
            "playerex:ranged_damage": 0.0,
            "playerex:fire_resistance": 0.0,
            "playerex:freeze_resistance": 0.0,
            "playerex:lightning_resistance": 0.0,
            "playerex:poison_resistance": 0.0,
            "playerex:wither_resistance": 0.0,
            "playerex:breaking_speed": 1.0
        }
    }
}

该文件与本模组自带的文件完全一样,只是缺少了"playerex:melee_crit_damage": 0.0,"playerex:melee_crit_chance": 0.0,

4.4 functions.json

{
    "values": {
        "playerex:constitution": {
            "minecraft:generic.max_health": 1.0,
            "minecraft:generic.knockback_resistance": 0.01,
            "playerex:poison_resistance": 0.01
        },
        "playerex:strength": {
            "minecraft:generic.attack_damage": 0.25,
            "minecraft:generic.armor": 0.5,
            "playerex:health_regeneration": 0.01
        },
        "playerex:dexterity": {
            "minecraft:generic.attack_speed": 0.1,
            "playerex:ranged_damage": 0.25,
            "playerex:lightning_resistance": 0.01
        },
        "playerex:intelligence": {
            "playerex:heal_amplification": 0.002,
            "playerex:ranged_crit_damage": 0.005,
            "playerex:wither_resistance": 0.01
        },
        "playerex:luckiness": {
            "minecraft:generic.luck": 0.1,
            "playerex:evasion": 0.02,
            "playerex:ranged_crit_chance": 0.02
        }
    }
}

该文件与本模组自带的文件完全一样,只是缺少了"playerex:melee_crit_damage": 0.005,"playerex:melee_crit_chance": 0.02,

当数据包的一切设置完毕后,近战攻击将会修改为原版的方式。

5、黑暗模式界面是否兼容GUI?

是的,但需要通过材质包的方式来完成,与Vanilla Tweaks Dark UI兼容的材质纹理可在此处获得。

6、基于区块的经验获取系统是如何运行的?

每个区块(16x16格)都有“经验掉落系数”(Experience Negation Factor)、“力量恢复”(Restorative Force)和“力量恢复间隔”(Restorative Force Interval)属性,该经验系统是为了防止在单个区块内通过生物农场等方式来无限获取经验值,该系统不会影响其他模组使用刷怪笼来制作的地牢。

6.1 经验掉落系数

该系数修改了生物在死亡时的经验球生成概率,每当一个经验球成功在一个区块中生成时,便会让该区块的经验掉落系数乘以一个小于1的数值,当单个区块的系数越来越低时,经验值的生成量会缓慢降低,如果将系数设置为100则会与原版一致。1.0 1.0 0.0

6.2 力量恢复

力量恢复决定了经验在单个区块内可以掉落的概率,当力量恢复数值大于1时,生物死亡时的经验球会正常掉落,而当当前区块的系数小于1时,则会禁止生物的经验球掉落,该值可在配置文件或者安装模组菜单修改。1.0

6.1 力量恢复间隔

该值是每tick之间的恢复系数,恢复速度的快慢决定了当前区块的经验球的掉落数量,1秒 = 20tick,该值可在配置文件中修改。