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

Стартап Помощь в изучении языка Java

Тема в разделе "Разработка плагинов для новичков", создана пользователем D_ART, 21 июн 2012.

  1. DPOH-VAR

    DPOH-VAR Старожил Пользователь

    Баллы:
    153
    Skype:
    dpohvar
    1) Не структурированно, но правильно
    2) kickPlayer вызывать можно, т.к. событие синхронное.
    Но не грубо ли? Можно просто
    Код:
    event.setCancelled(true); // не сможет поставить, т.к. событие отменено
    player.sendMessage("блабла, ставить блоки запрещено")
    3) Можете смело использовать WorldGuard: http://wiki.sk89q.com/wiki/WorldGuard/Regions/API
    При таком режиме на производительность это почти не повлияет.
     
    Serrrgio нравится это.
  2. Хостинг MineCraft
    <
  3. musel70

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

    Баллы:
    88
    Для экономии места задам нубский вопрос здесь.
    Как получить блок слева и справа перед игроком. Все на уровне глаз.
    поясню "о" - блок. "O" -блок который нужно получить Й - игрок.
    00000000000000000000000000
    00000000ОоОоооооооооооооооо
    ооооооооооЙооооооооооооооооо
     
  4. DPOH-VAR

    DPOH-VAR Старожил Пользователь

    Баллы:
    153
    Skype:
    dpohvar
    Сначала берем
    eye = player.getEyeLocation() - это позиция глаз игрока.
    Теперь dir = eye.getDirection() - это направление, куда смотрит игрок.
    targetBlock = eye.add(dir).getBlock() - мы получили блок на расстоянии 1 от глаз.

    Вариант 1: если нужно ориентироваться по сторонам света
    По значению dir.getYaw() узнаем, в какую из четырех сторон смотрит игрок. Точнее, нужно проработать всего 2 варианта. (север-юг) и (запад-восток)
    Пример есть тут:
    http://forums.bukkit.org/threads/direction-the-playser-faces-north-south.20773/
    Дальше - в зависимоси от направления:
    block1 = targetBlock.getRelative(NORTH); block2 = targetBlock.getRelative(SOUTH)
    или
    block1 = targetBlock.getRelative(EAST); block2 = targetBlock.getRelative(WEST)

    Вариант 2: если нужно учитывать все направления.
    Делайте вращение вектора на угол 90 , затем берите следующий блок от targetBlock на расстоянии 1 (векторы можно нормализовывать методом normalize ), затем разворот вектора (можно уможить на -1), и снова берем следующий блок от targetBlock. Тогда Блоки будут браться даже по диагонали, причем с учетом высоты взгляда. ниже - пример.
    .X... X - блок-цель
    ..A.. A - блок, на который смотрит игрок
    .P.X. P - позиция игрока

    Как делать вращение вектора - смотрите в учебнике по линейной алгебре. У Bukkit API нет своих методов для вращения. Подозреваю, что здесь требуется векторное произведение вектора на какую-то константу. А это - есть.[DOUBLEPOST=1397147227,1397147041][/DOUBLEPOST]Пардон, придумал способ проще.
    Сейчас распишу.
    UPD: код на груви, возвращает массив из двух блоков. me - это игрок.
    Перепишите на java (это вроде не сложно)
    Код:
    import static org.bukkit.block.BlockFace.*
    
    def eye = me.eyeLocation
    def myFace = getFace(eye.yaw)
    blocks = []
    for (def face: getTargetFaces(myFace)) {
        blocks.add(eye.block.getRelative(face))
    }
    return blocks
    
    def getFace (yaw) {
        if (315<yaw || yaw<45) SOUTH
        else if (yaw<135) WEST
        else if (yaw<225) NORTH;
        else EAST;
    }
    
    def getTargetFaces (face) {
        switch (face) {
            case NORTH: return [NORTH_WEST,NORTH_EAST]
            case EAST: return [NORTH_EAST,SOUTH_EAST]
            case WEST: return [NORTH_WEST,SOUTH_WEST]
            case SOUTH: return [SOUTH_EAST,SOUTH_WEST]
        }
    }
     
    Последнее редактирование: 10 апр 2014
    musel70 нравится это.
  5. MrDigger

    MrDigger Активный участник

    Баллы:
    48
    Skype:
    MrDigger04
    Имя в Minecraft:
    DiGGeR
    Админ что за хрень? Я вам уже месяц пишу по поводу покупки рекламы а вы не отвечаете???
     
  6. Dereku

    Dereku Старожил

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Сервер чёль рекламить будешь? Нахер оно надо.
     
  7. Den_Abr

    Den_Abr Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Рамон избранным отвечает
     
  8. MrDigger

    MrDigger Активный участник

    Баллы:
    48
    Skype:
    MrDigger04
    Имя в Minecraft:
    DiGGeR
    Зачем сервер? Хостинг ...
     
  9. SwiftAdviser

    SwiftAdviser Старожил Пользователь

    Баллы:
    103
    Имя в Minecraft:
    SwiftAdviser
    Добавьте - javarush.ru
    Я прохожу - отлично!
     
    Лайка3, Javascript, mahimamax и ещё 1-му нравится это.
  10. Dereku

    Dereku Старожил

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    В нём можно только под IE сидеть нормально.
     
    Лайка3, Mr_RoboMan, Лайка2 и 2 другим нравится это.
  11. SwiftAdviser

    SwiftAdviser Старожил Пользователь

    Баллы:
    103
    Имя в Minecraft:
    SwiftAdviser
    Dereku, я и под хромом сижу - норма. + там задания потом уже в IntelliJ IDEA
     
    Лайка3, Mr_RoboMan, Лайка2 и 2 другим нравится это.
  12. Splashins

    Splashins Старожил Пользователь Заблокирован

    Баллы:
    153
    Имя в Minecraft:
    Splash
    У тебя столько школьных обедов не было :D, сколько реклама здесь стоит :p
     
    Лайка3, Mr_RoboMan, Лайка2 и 2 другим нравится это.
  13. BeLkA

    BeLkA Старожил Пользователь

    Баллы:
    153
    Skype:
    FayStaff
    Требую добавления сюда в список JavaRush! http://javarush.ru - самый лучший сайт, легко и понятно дается материал, в виде игры, и мультов "Футурамы"
     
  14. aceJKE

    aceJKE Старожил Пользователь

    Баллы:
    123
    Когда я туда зашел, у меня сразу же пропало желание что-либо изучать...
     
  15. BeLkA

    BeLkA Старожил Пользователь

    Баллы:
    153
    Skype:
    FayStaff
    Почему же?
     
  16. MrTrojan

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

    Баллы:
    98
    Skype:
    mrtrojan.ru
    Имя в Minecraft:
    MrTrojan
    Ссылка не работает.
     
  17. M@RKUSs

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

    Баллы:
    61
    Сколько примерно времени, уйдет у полного чайника, на изучение Java? Ежедневно смогу заниматься по часу, может дольше...
    И насколько трудно все это учить?
     
  18. DPOH-VAR

    DPOH-VAR Старожил Пользователь

    Баллы:
    153
    Skype:
    dpohvar
    Пока не попробуешь - ничего не узнаешь.
    Java - один из самых простых для изучения языков ООП.
     
  19. Eugenie

    Eugenie Новичок Пользователь

    Баллы:
    21
    Имя в Minecraft:
    zn_soft
    Сам я шарповец и мне нравятся Linq лямбды и тд вкусности шарпа, но начитался про java 8. там добавили лямбды ! это очень сильно упрощает/укорачивает код работы с коллекциями. Вопрос знатокам: подскажите, если я скомпилю плагин под jre 1.8 (Java 8) он 100% везде пойдет ? или же у многих не запустится ? Если честно, просто лень проверять (может кто уже юзал).
     
  20. DPOH-VAR

    DPOH-VAR Старожил Пользователь

    Баллы:
    153
    Skype:
    dpohvar
    Нет, не везде. Нужно, чтобы у пользователя тоже стояла Java 8. Иначе он получит ошибку
    Unsupported major.minor version 52.0
     
  21. Eugenie

    Eugenie Новичок Пользователь

    Баллы:
    21
    Имя в Minecraft:
    zn_soft
    Спасибо ... эх так и думал, что все не просто так. Короче, нужно изобрести какой-нибудь "всем нужный" плагин и сразу писать его под 8 и сразу в описании требования 1.8 и тогда "хош не хош", все кому нужно перейдут !
     

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