Java 为什么Minecraft的setLightLevel不能正常工作?

Java 为什么Minecraft的setLightLevel不能正常工作?,java,minecraft,Java,Minecraft,所以我开始为minectraft开发我的mod。它添加的块之一应该是更强大的glowstone版本。这就是剧本: 导入net.minecraft.block.SoundType; 进口net.minecraft.block.material.material; 公共类FeralFlareBlock扩展了BlockBase { 公共FeralFlareBlock(字符串名称、材质) { 超级(名称、材料); setSoundType(SoundType.GLASS); 硬度(0.3F); 设定电阻

所以我开始为minectraft开发我的mod。它添加的块之一应该是更强大的glowstone版本。这就是剧本:

导入net.minecraft.block.SoundType;
进口net.minecraft.block.material.material;
公共类FeralFlareBlock扩展了BlockBase
{
公共FeralFlareBlock(字符串名称、材质)
{
超级(名称、材料);
setSoundType(SoundType.GLASS);
硬度(0.3F);
设定电阻(0.3F);
设置收割水平(“鹤嘴锄”,1);
设置照明水平(100.0F);
不透明度(1);
}
}

还有setLightLevel函数,我将它设置为100,即使辉光石是15,所以理论上这应该更强大。事实并非如此。不知道我做错了什么,请帮帮我。Thx

最大亮度为15。所以它不能比辉光石轻

有16个灯 级别,由0(最小值)到15之间的整数指定 (最大值)

解释
setLightLevel
方法的值介于
0.0
(最暗)和
1.0
(最亮)之间

因此,
100.0F
的值无效

还可以看到我在搜索您的问题时找到的一些线程::

Item#setLightLevel
在0.0F和1.0F之间浮动,而不是从0到15。如果要获得最大灯光级别,请使用1.0F

为了便于参考,这里有一个指向javadoc的链接:


我把它设置为100,即使辉光石是15,所以理论上这应该更强大。事实并非如此

Minecraft中最亮的灯光级别为
15
(通过
setLightLevel
接收
1.0
)。你不能做出比这更亮的东西。Minecraft不支持更亮的值


从0到15翻译 通过简单的数学运算,您可以轻松地将minecrafts灯光级别(0到15)转换为此方法:

// Takes values between 0 and 15 (both inclusive) and converts to 0 to 1.0.
private static double translateLightLevelToFloat(int lightLevel) {
    if (ligthLevel < 0 || lightLevel > 15) {
        throw new IllegalArgumentException("Light level must be between 0 and 15 (both inclusive)");
    }

    return lightLevel / 15.0;
}
//获取介于0和15之间的值(包括0和15),并将其转换为0到1.0。
专用静态双translateLightLevelToFloat(int lightLevel){
如果(亮度级<0 | |亮度级>15){
抛出新的IllegalArgumentException(“灯光级别必须介于0和15之间(包括0和15)”);
}
返回光级/15.0;
}

快速搜索告诉我该值应该在0.0f和1.0f之间。1是最大值是正确的,但是
setLightLevel
方法采用
0.0
1.0
之间的值,而不是
0
15
之间的整数。这是正确的,但是lightlevel不能超过15,因此任何高于1.0的值都不会产生任何差异。这是我的声明