1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите Как узнать на игрока светит солнце или нет?

Тема в разделе "Разработка плагинов для новичков", создана пользователем ShitCoder, 8 дек 2018.

Статус темы:
Закрыта.
  1. Автор темы
    ShitCoder

    ShitCoder Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    TheLastGapple
    в шапке вапрос. Ну типо нужен плагин если игрок стоит на солнце то убить его.
     
  2. NyanGuyMF

    NyanGuyMF Активный участник Пользователь

    Баллы:
    76
    Как отследить именно свет от Солнца - я не знаю, но можно опробовать через byte getLightLevel() получать освещение блока под игроком. (тут появляется проблема источника освещения: освещать может, например, факел)

    UPD:
    Нашел другой метод: byte getLightFromSky() - «Get the amount of light at this block from the sky. Any light given from other sources (such as blocks like torches) will be ignored.»
     
  3. Автор темы
    ShitCoder

    ShitCoder Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    TheLastGapple
    Получение освещение блока, а если человек летает?
     
  4. NyanGuyMF

    NyanGuyMF Активный участник Пользователь

    Баллы:
    76
    Как вариант - можно получить игровое время, и исходя из него убивать/не убивать игрока. Проблема: игрок может летать за деревом/стеной etc.
     
  5. ZONCCK

    ZONCCK Активный участник Пользователь

    Баллы:
    78
    Имя в Minecraft:
    ZONCCK
    Можно проверять, нет ли над ним блоков, что-то в этом духе (ну, если над ним нет блоков, то значит над ним только небо => на него светит солнце, однако это не работает, например, для энда или ада, или когда идет дождь/ночь, но это все можно обработать отдельно)
     
  6. NyanGuyMF

    NyanGuyMF Активный участник Пользователь

    Баллы:
    76
    Малопроизводительный фикс - искать блоки, которые могут загородить свет в стороне заката :D

    End и Nether можно не проверять с помощью
    PHP:
    if (player.getWorld().getName().equals("какой-нибудь мир")) {
        return;
    }
     
  7. Автор темы
    ShitCoder

    ShitCoder Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    TheLastGapple
    Код:
        public static boolean needDayBurn(Player player) {
            if (player.getGameMode() == GameMode.CREATIVE) return false;
            Block block1 = player.getLocation().add(0, 1, 0).getBlock();
            if (block1.getType() == Material.WATER || block1.getType() == Material.STATIONARY_WATER) return false;
            Block block = player.getLocation().getBlock();
            if (block.getType() == Material.WATER || block.getType() == Material.STATIONARY_WATER) return false;
            return block1.getLightFromSky() >= 15;
        }
    Посмотрел, была похожая тема оказывается.. Но тут горю и ночью, а вот под землёй не горю. Добавить проверку на время - как то слишком костыльно :). Наверное потому что у AIR всегда эта переменная = 15.
     
  8. ZONCCK

    ZONCCK Активный участник Пользователь

    Баллы:
    78
    Имя в Minecraft:
    ZONCCK
    Мой способ будет работать только если считать, что солнце всегда наверху, ибо если, действительно, будет закат или рассвет, и мы будем искать блоки, которые будут мешать нам "получать свет", сервер упадет))
     
  9. NyanGuyMF

    NyanGuyMF Активный участник Пользователь

    Баллы:
    76
    Можно искать в небольшом радиусе (блоков 10-15 в одну сторону - не так много)
     
  10. LuckyZeeRo

    LuckyZeeRo Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    i0xHeX
    Дабы быть более реалистичным, я бы замерял угол солнца относительно поверхности за игровым временем, а затем чекал бы трасером от самой высокой точки до игрока.
     
  11. Автор темы
    ShitCoder

    ShitCoder Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    TheLastGapple
    Как узнать горит игрок или нет? :confused:
    UPD. getFireTicks() спасло меня. Тему закрываю.
     
Статус темы:
Закрыта.

Поделиться этой страницей