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

Туториал Пишем простой плагин для bukkit (v1.2.5+)

Тема в разделе "Руководства, инструкции, утилиты", создана пользователем DmitriyMX, 13 июн 2012.

?

Продолжать выкладывать туториалы по написанию плагинов?

  1. Да

    158 голосов
    95,8%
  2. Нет

    7 голосов
    4,2%
  1. kaban1997

    kaban1997 Старожил Переводчик Пользователь

    Баллы:
    173
    plugin Это что? Ошибка на этой же строке.
    у меня это в начале кода public Plugin plugin;

    И я написал [0] после p , а то ошибку Eclipse выдаёт.
    Player[] p = plugin.getServer().getOnlinePlayers();

    if(p.length!=0)

    for(int i=0; i<p.length; i++)

    if(p[0].getName().equals(args[0]))

    p[0].kickPlayer("Причина");

    Нашёл код добавляющий рецепт крафта. Как в рецепт добавить вещи из модов?
    Вот код:
    ShapedRecipe recipe1 = new ShapedRecipe(new ItemStack(Material.MONSTER_EGGS, 1));
    recipe1.shape(new String[] { "CAC", "ARA", "CAC" });
    recipe1.setIngredient('A', Material.);
    Вот непойму как заместо Material вписать id или предмет из мода
     
    ПриветОтМиднайта нравится это.
  2. Хостинг MineCraft
    <
  3. Ission

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

    Баллы:
    173
    Skype:
    lokivava
    Подле этого примера нужно проставить try и catch, иначе в случае несуществующего игрока пойдёт материться консоль.
     
    kaban1997 и Mik1313 нравится это.
  4. kaban1997

    kaban1997 Старожил Переводчик Пользователь

    Баллы:
    173
    Спасибо вам

    +1

    Разобрался, надо в этой строке:
    ShapedRecipe recipe1 = new ShapedRecipe(new ItemStack(mat , 1));
    Сделать так:
    ShapedRecipe recipe1 = new ShapedRecipe(new ItemStack(mat , 1,(byte) 1));
    где "(byte) 1" доп.индекс
     
    Mik1313 нравится это.
  5. kaban1997

    kaban1997 Старожил Переводчик Пользователь

    Баллы:
    173
    Да, я понял
     
    Оригинало_о нравится это.
  6. kaban1997

    kaban1997 Старожил Переводчик Пользователь

    Баллы:
    173
    Как генерировать определённую руду, на определённой высоте?
     
  7. kaban1997

    kaban1997 Старожил Переводчик Пользователь

    Баллы:
    173
    Не то. Ладно это возьмёт на себя мод.
    Другой вопрос: как заставить дропаться определённый предмет, из определённого блока?
     
  8. mayor123

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

    Баллы:
    173
    При отмене события, блок не сломается..
     
  9. mayor123

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

    Баллы:
    173
    И да, у меня был ещё один вариант, но я глубоко не уверен, что он заработает, так как наверное, предметы дропаются после вызова всех слушателей.
    Код:
    @EventHandler
    public void onBreak(BlockBreakEvent event) {
        Block b = event.getBlock();
        Location bLoc = b.getLocation();
        List<ItemStack> drops = b.getDrops();
        for(ItemStack i : drops) {
            for(Item ei : b.getWorld().getEntitiesByClass<Item>()) {
                Location l = ei.getLocation();
                if(ei.getItemStack().equals(i) && l.getBlockX().equals(bLoc.getBlockX()) && l.getBlockY().equals(bLoc.getBlockY()) && l.getBlockZ().equals(bLoc.getBlockZ())) {
                    ei.remove();
                }
            }
        }
    }
     
  10. Ission

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

    Баллы:
    173
    Skype:
    lokivava
    Тут пара ошибок(я так думаю).
    Код:
    @EventHandler(priority = EventPriority.MONITOR)
    ignoreCancelled = true - значит, что даже если событие было отменёно, камень все равно сломается и выпадет лёд.
    EventPriority.LOWEST - значит, что событие обрабатываться будет в первую очередь, возможно даже до обработки плагинами защиты.
    EventPriority.MONITOR - значит, что событие обрабатываться будет в последнюю очередь.
     
    Mik1313 нравится это.
  11. kaban1997

    kaban1997 Старожил Переводчик Пользователь

    Баллы:
    173
    event.getBlock().setType(Material.AIR);
    Вот тут ошибка, как я понял, выпадает Material.AIR а это невозможно, поэтому тебя кидает из игры
     
    Сникерсни нравится это.
  12. Ission

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

    Баллы:
    173
    Skype:
    lokivava
    Выпадение воздуха не кидает из игры, а этот текст означает установку в качестве блока воздух. То есть блок замещается пустотой.
     
    Mik1313 нравится это.
  13. kaban1997

    kaban1997 Старожил Переводчик Пользователь

    Баллы:
    173
    Неа, я менял. на STONE и выпадает буллыжник, то есть тогда строка отвечает за то, какой тип блока разбиваешь.
     
    zuma2 нравится это.
  14. kaban1997

    kaban1997 Старожил Переводчик Пользователь

    Баллы:
    173
    Ну а как бы AIR разбить низя
     
    ВремяПриключений нравится это.
  15. Ission

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

    Баллы:
    173
    Skype:
    lokivava
    Она отвечает за то, какой блок находится в том месте, где его разбивают в данный момент.
     
  16. kaban1997

    kaban1997 Старожил Переводчик Пользователь

    Баллы:
    173
    Ну да, но если поставить AIR, то тебя кидает
     
  17. kaban1997

    kaban1997 Старожил Переводчик Пользователь

    Баллы:
    173
    Меня выкидывает, пишет: Internal Server Error
    А в консоли это:
    2012-09-30 11:04:38 [WARNING] Failed to handle packet: java.lang.NullPointerException
    java.lang.NullPointerException
    at net.minecraft.server.ItemInWorldManager.breakBlock(ItemInWorldManager.java:249)
    at net.minecraft.server.ItemInWorldManager.a(ItemInWorldManager.java:179)
    at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:548)
    at net.minecraft.server.Packet14BlockDig.handle(SourceFile:43)
    at net.minecraft.server.NetworkManager.b(NetworkManager.java:262)
    at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:119)
    at net.minecraft.server.NetworkListenThread.a(NetworkListenThread.java:97)
    at net.minecraft.server.MinecraftServer.w(MinecraftServer.java:651)
    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:525)
    at net.minecraft.server.ThreadServerApplication.run(SourceFile:492)
     
  18. kaban1997

    kaban1997 Старожил Переводчик Пользователь

    Баллы:
    173
    Да у меня дропаеться,но выкидывает
     
  19. OrAnGe_BoX

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

    Баллы:
    88
    Сделал все по первому тутору, ставлю на серв и в консольке пишет:
    UPD Я разобрался, помощь не нужна :D
    [​IMG]
     
    Сникерсни и fromgate нравится это.
  20. Rajah

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

    Баллы:
    68
    @DmitriyMX, почему мы используем класс "PlayerEvent" , но не прописываем его " Import " ???[DOUBLEPOST=1374166923,1374166736][/DOUBLEPOST]А,понял,наверное в их коде изначально было так : " PlayerJoinEvent extends PlayerEvent " ?
     
    slavik123123123 нравится это.

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