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

Помогите Запретить крафт,а вместо него сделать другой

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

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

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

    Баллы:
    21
    Ну смысл в название темы,но всё-равно скажу
    Я хочу к примеру сделать крафт кварцевого блока не 4 кварца,а 9
    Ну и запретил крафт блока,ток вот мой крафт тоже запрещён.
     
  2. alexandrage

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

    Баллы:
    173
    Получить список крафта, удалить нужный и добавить свой.
     
  3. Алмаз Гараев

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

    Баллы:
    76

    К сожалению у меня был похожий проект но только это проект мода, а тебе ведь плагин нужен, это можно только через моды сделать! Так как невозможно через плагин модифицировать ITEM! Если запретить крафт, то ты по любому запрещаешь именно результат крафта, каким бы рецептом он не был создан, по любому на выходе будет один предмет, попавший под действие запрета! Иное дело если запрещать не результат, а сам рецепт с данными ингредиентами, но такого я не встречал в природе вообще! Если кто добудет такой метод - ему огромный RESPEKT! А вот если делать мод, то сперва запрещаешь результат стандартного крафта, затем создаешь модифицированный предмет с такой же иконкой но с другим ID и заменяешь как результат своего крафта стандартный ITEM на модифицированный! Что касается Item Meta , Set Lore то это не является модификацией, это добавление эффектов и имени и всего, но скрипту это ни о чем не говорит, он идентифицирует предмет только по своему стандартному ID. так как сервер обрабатывает именно данные ядра Bukkit! Для него не существует иного предмета кроме того который там прописан, какими бы эффектами этот предмет не пичкали!
     
    Последнее редактирование: 18 авг 2017
  4. Автор темы
    Merkelris

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

    Баллы:
    21
    Самому хочется всё-же,а так пошёл бы в другую тему.Но если напишешь пример сказал бы спасибо)
     
  5. Алмаз Гараев

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

    Баллы:
    76
    ОК! Только вечером выложу пример! Я пока не дома! На работе! Не под рукой проекты!
     
  6. Типа админ:D

    Типа админ:D Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Qamulex
    Какой же ты восклицательный...
     
  7. Cool_boy

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

    Баллы:
    96
    Имя в Minecraft:
    prettydude
    :lol:
     
  8. misha33165

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

    Баллы:
    68
    Вот, написал по фасту. Думаю, что это не самый оптимальный вариант, но всё-таки. Работает только для данного примера.
    @EventHandler
    public void Block_craft (PrepareItemCraftEvent e) {
    CraftingInventory inv = e.getInventory();
    if (inv.getResult().getType()!=Material.QUARTZ_BLOCK) return;
    for (int i=1; i<10; i++)
    if (inv.getItem(i)==null||inv.getItem(i).getType()!=Material.QUARTZ)
    {
    inv.setResult(null);
    break;
    }
    }
     
  9. alexandrage

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

    Баллы:
    173
    Слов нет..
     
  10. misha33165

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

    Баллы:
    68
    Эх, а жаль, что нет. Так хотелось услышать критику в мою сторону)).
     
  11. Автор темы
    Merkelris

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

    Баллы:
    21
  12. Автор темы
    Merkelris

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

    Баллы:
    21
    Уверен что в плагине нельзя?(С модами у меня долгая история почему не делаю их);
     
  13. Cool_boy

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

    Баллы:
    96
    Имя в Minecraft:
    prettydude
    Можно попробовать накостылить что-то, но не знаю будет ли работать. Удалить рецепт через RecipeIterator, и наново зарегистрировать со своим результатом.
     
  14. thematdev

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

    Баллы:
    46
    Имя в Minecraft:
    thematdev
    Добавь новый крафт нового кварцевого блока(с названием главное чтобы чем-то отличался от обычного), а обычный запрети ставить обычным игрокам. Не совсем оптимально, но нормально.
     
  15. thematdev

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

    Баллы:
    46
    Имя в Minecraft:
    thematdev
    То есть крафт будет не запрещён, но бесполезен!
     
  16. Dan_Ender

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

    Баллы:
    76
    Мда... просто нужно было подумать головой, а не другим местом.

    Код:
        @EventHandler
        public void onPreItemCraft(PrepareItemCraftEvent e) {
            Recipe craft = e.getRecipe();
            if (craft==null) return;
            ItemStack result = craft.getResult();
            if (result==null || result.getType()!=Material.QUARTZ_BLOCK) return;
            ShapedRecipe shapedCraft = (ShapedRecipe) craft;
            if (shapedCraft.getIngredientMap().size()==4) {
                e.getInventory().setResult(null);
            }   
        }
     
Статус темы:
Закрыта.

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