Почему setLightLevel для Майнкрафт работает некорректно? - PullRequest
1 голос
/ 05 мая 2020

Итак, я начал разрабатывать свой мод для minectraft. Один из добавляемых блоков должен быть более мощной версией светящегося камня. Итак, это сценарий:

import net.minecraft.block.SoundType;
import net.minecraft.block.material.Material;

public class FeralFlareBlock extends BlockBase
{

    public FeralFlareBlock(String name, Material material) 
    {
        super(name, material);

        setSoundType(SoundType.GLASS);
        setHardness(0.3F);
        setResistance(0.3F);
        setHarvestLevel("pickaxe", 1);
        setLightLevel(100.0F);
        setLightOpacity(1);

    }

}

Есть функция setLightLevel, я установил ее на 100, даже если светящийся камень равен 15, поэтому теоретически это должно быть более мощным. Это не так. Не знаю, что я делаю не так, пожалуйста, помогите мне. Спасибо

Ответы [ 2 ]

2 голосов
/ 05 мая 2020

Пояснение

Метод setLightLevel принимает значения от 0.0 (самый темный) до 1.0 (самый яркий).

Таким образом, значение 100.0F недопустимо.

Также см. Ветку, которую я нашел при поиске вашей проблемы: [1.11] setLightLevel не излучает свет, когда блок помещается в мир :

Item#setLightLevel принимает поплавок между 0,0F и 1,0F, а не от 0 до 15. Если вы хотите получить максимальный уровень освещенности, используйте 1,0F.

Для справки, вот ссылка на a javado c: Block # setLightLevel .


У меня установлено значение 100, даже если для светящегося камня 15, поэтому теоретически должно быть больше мощный. Это не так.

Самый яркий уровень освещенности в Minecraft - 15 (получен значением 1.0 с setLightLevel). Вы не можете сделать ничего ярче этого. Minecraft не поддерживает более яркие значения.


Перевести с 0-15

Вы можете легко преобразовать уровни освещенности minecraft (от 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 голосов
/ 05 мая 2020

Максимальный уровень освещенности - 15. Поэтому он не может быть светлее светящегося камня.

https://minecraft.gamepedia.com/Light

Есть 16 уровней освещенности, которые указаны целым числом от 0 (минимум) до 15 (максимум).

...