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

ShapelessOreRecipe: Саженцы, Песок

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

  1. Автор темы
    mAAAD

    mAAAD Ньюби

    Баллы:
    1
    здравствуйте

    пишу мод, добавляющий новый рецепт в игру. работаю в эклипс. рецепт использует саженец и на этом моменте возникает вопрос.
    с таким кодом в игре к рецепту подходит только саженец дуба, никакой другой саженец не подходит, а мне как раз это и надо - любой саженец. как указать в коде, чтобы рецепт срабатывал с любым саженцем?

    спасибо.

    ps: то же самое касается песка и красного песка. по вызову Blocks.sand в рецепте срабатывает только обычный песок. а задумка использовать любой песок + любой саженец.
     
    Последнее редактирование: 8 сен 2015
  2. Хостинг MineCraft
    <
  3. Agravaine

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

    Баллы:
    88
    Имя в Minecraft:
    Agravaine25
    ShapelessOreRecipe
     
  4. Автор темы
    mAAAD

    mAAAD Ньюби

    Баллы:
    1
    такого метода нет в GameRegistry

    ммм, сейчас посмотрю в других библиотеках, может там есть...
    да, есть в другой библиотеке. буду смотреть, спасибо.[DOUBLEPOST=1441752545,1441744734][/DOUBLEPOST]вроде заработало в одном направлении. т.е. я 4 любых песка и 1 любой саженец могу преобразовать в блок земли с травой. спасибо, совет помог:
    Код:
            GameRegistry.addRecipe(new ShapelessOreRecipe(Blocks.grass, new Object[] {OreDictionary.getOres("treeSapling").get(0), OreDictionary.getOres("sand").get(0),
                    OreDictionary.getOres("sand").get(0), OreDictionary.getOres("sand").get(0), OreDictionary.getOres("sand").get(0)}));
    
    т.е. ИД на который повешено несколько блоков (саженцы 6 видов и песок 2 вида) я смог преобразовать в ИД, связанный только с одним блоком (блок земли с травой).
    а вот с обратной трансормацией косяк пока выходит. мне нужно ИД, связанный с одним блоком, преобразовать в блок, который делит свой ИД с другим блоком:
    Код:
            GameRegistry.addSmelting(Blocks.grass, new ItemStack(Blocks.sand, 1), 1.0F);
    
    эта строчка преобразует блок земли с травой в обычный песок, а мне необходимо в красный. попытка использовать OreDictionary.getOres("sand").get(0) в игре приводит к генерации блока Песок с потеряной текстурой и не стакающийся с нормальным песком - но этим блоком можно поставить блок нормального обычного песка. замена get(0) на get(1) вообще валит игру еще при запуске.
    прошу совета, как указать на конкретный элемент списка блоков, привязанных к одному ИД,чтобы например в этом коде для печки у меня земля прогорела в нормальный блок красного песка, без глюков с текстурой.

    спасибо.[DOUBLEPOST=1441754093][/DOUBLEPOST]причем например OreDictionary.getOres("stone").get(0) выдает нормальный блок камня[DOUBLEPOST=1441774878][/DOUBLEPOST]придется костыль ставить. пока что. навсегда *демонический смех* заменить sand на sandstone, а red_sand на red_sandstone

    и все равно... надо песчаник в песок не разобрать, рецепта в стоке нет. а чтобы самому сделать - надо выяснить как обращаться к конкретному блоку. подскажите, я прав? может ошибаюсь в чем...
    OreDictionary.getOres("stone").get(0) - дает в игре блок Камня - нормальный.
    OreDictionary.getOres("sand").get(0) - дает в игре блок Песка с потерянной текстурой.
    OreDictionary.getOres("sapling").get(0) - дает в игре блок Саженец дуба с потерянной текстурой.
    все они могут ставить нормальные блоки, но полученные Песок и Саженец не стакаются с нормальными блоками Песка и Саженцем. и получаю я по рецепту только Саженец дуба и Обычный песок. как же тогда получить остальные варианты этих блоков...[DOUBLEPOST=1441805478][/DOUBLEPOST]разобрался :) надо было добавить damage в ItemStack, чтобы получился вот такой код:
    Код:
    GameRegistry.addSmelting(Blocks.grass,new ItemStack(Blocks.sand,1,1), 1.0F);
    узнал на забугорном форуме, порылся поиском.

    пишу тут - вдруг кому пригодится
     
    Последнее редактирование: 9 сен 2015

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