Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

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

mAAAD

Ньюби
Баллы
1
здравствуйте

пишу мод, добавляющий новый рецепт в игру. работаю в эклипс. рецепт использует саженец и на этом моменте возникает вопрос.
GameRegistry.addShapelessRecipe(new ItemStack(Blocks.grass, 4), new Object[] {Blocks.sapling, Blocks.sand, Blocks.sand, Blocks.sand, Blocks.sand});
с таким кодом в игре к рецепту подходит только саженец дуба, никакой другой саженец не подходит, а мне как раз это и надо - любой саженец. как указать в коде, чтобы рецепт срабатывал с любым саженцем?

спасибо.

ps: то же самое касается песка и красного песка. по вызову Blocks.sand в рецепте срабатывает только обычный песок. а задумка использовать любой песок + любой саженец.
 
Последнее редактирование:
такого метода нет в GameRegistry

ммм, сейчас посмотрю в других библиотеках, может там есть...
да, есть в другой библиотеке. буду смотреть, спасибо.
вроде заработало в одном направлении. т.е. я 4 любых песка и 1 любой саженец могу преобразовать в блок земли с травой. спасибо, совет помог:
JavaScript:
        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 вида) я смог преобразовать в ИД, связанный только с одним блоком (блок земли с травой).
а вот с обратной трансормацией косяк пока выходит. мне нужно ИД, связанный с одним блоком, преобразовать в блок, который делит свой ИД с другим блоком:
JavaScript:
        GameRegistry.addSmelting(Blocks.grass, new ItemStack(Blocks.sand, 1), 1.0F);
эта строчка преобразует блок земли с травой в обычный песок, а мне необходимо в красный. попытка использовать OreDictionary.getOres("sand").get(0) в игре приводит к генерации блока Песок с потеряной текстурой и не стакающийся с нормальным песком - но этим блоком можно поставить блок нормального обычного песка. замена get(0) на get(1) вообще валит игру еще при запуске.
прошу совета, как указать на конкретный элемент списка блоков, привязанных к одному ИД,чтобы например в этом коде для печки у меня земля прогорела в нормальный блок красного песка, без глюков с текстурой.

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

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

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

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

Назад
Верх