Jump to content


Photo

Один ID, но разные SubID


  • Please log in to reply
2 replies to this topic

#1 s3dworld

s3dworld

    Странник

  • Пользователи
  • Active Posts77

Posted 08.11.2011 - 17:20

Всем доброго вечера! Обратил внимание что всё больше модов стало использовать такую фишку. Например есть блок шерсти с ID равной 35. Но при этом всего 16 цветов и все они под ID равной 35. А вот достать их стандартными средства сервера невозможно. Однако если поставить Mp Utils, то можно написать:
/i 35 1 0/i 35 1 1/i 35 1 2/i 35 1 3/i 35 1 4/i 35 1 5/i 35 1 6/i 35 1 7/i 35 1 8/i 35 1 9/i 35 1 10/i 35 1 11/i 35 1 12/i 35 1 13/i 35 1 14/i 35 1 15
И получить по одному блоку шерсти любого цвета. Аналогичным образом реализовано и в RedPower 2:
world{    crops[paste][/paste]id=124    leaves[paste][/paste]id=121    log[paste][/paste]id=123    ores[paste][/paste]id=120    plants[paste][/paste]id=119    stone[paste][/paste]id=122}
Мне такая техника понравилась и я хочу свой мод Glass Colors 0.1 переделать так же (а то сейчас он занимает 16 ID). Как это реализовать? Вот мои блоки:
public static Block blockGlassBlack=null;public static Block blockGlassRed=null;public static Block blockGlassGreen=null;public static Block blockGlassBrown=null;public static Block blockGlassBlue=null;public static Block blockGlassViolet=null;public static Block blockGlassTurquoise=null;public static Block blockGlassLightGrey=null;public static Block blockGlassGrey=null;public static Block blockGlassRose=null;public static Block blockGlassLaim=null;public static Block blockGlassYellow=null;public static Block blockGlassLightBlue=null;public static Block blockGlassLilac=null;public static Block blockGlassOrange=null;public static Block blockGlassWhite=null;
Вот часть из создания блоков:
blockGlassBlack=(new BlockGlassBlack(blockGlassBlackID,0,Material[paste][/paste]glass,false))[paste][/paste]setHardness(0[paste][/paste]3F)[paste][/paste]setStepSound(Block[paste][/paste]soundGlassFootstep)[paste][/paste]setBlockName("glassBlack");blockGlassRed=(new BlockGlassRed(blockGlassRedID,0,Material[paste][/paste]glass,false))[paste][/paste]setHardness(0[paste][/paste]3F)[paste][/paste]setStepSound(Block[paste][/paste]soundGlassFootstep)[paste][/paste]setBlockName("glassRed");blockGlassGreen=(new BlockGlassGreen(blockGlassGreenID,0,Material[paste][/paste]glass,false))[paste][/paste]setHardness(0[paste][/paste]3F)[paste][/paste]setStepSound(Block[paste][/paste]soundGlassFootstep)[paste][/paste]setBlockName("glassGreen");blockGlassBrown=(new BlockGlassBrown(blockGlassBrownID,0,Material[paste][/paste]glass,false))[paste][/paste]setHardness(0[paste][/paste]3F)[paste][/paste]setStepSound(Block[paste][/paste]soundGlassFootstep)[paste][/paste]setBlockName("glassBrown");
ID для блоков загружались из файла. А вот регистрация блоков:
ModLoader[paste][/paste]RegisterBlock(blockGlassBlack);ModLoader[paste][/paste]RegisterBlock(blockGlassRed);ModLoader[paste][/paste]RegisterBlock(blockGlassGreen);ModLoader[paste][/paste]RegisterBlock(blockGlassBrown);ModLoader[paste][/paste]RegisterBlock(blockGlassBlue);ModLoader[paste][/paste]RegisterBlock(blockGlassViolet);ModLoader[paste][/paste]RegisterBlock(blockGlassTurquoise);ModLoader[paste][/paste]RegisterBlock(blockGlassLightGrey);ModLoader[paste][/paste]RegisterBlock(blockGlassGrey);ModLoader[paste][/paste]RegisterBlock(blockGlassRose);ModLoader[paste][/paste]RegisterBlock(blockGlassLaim);ModLoader[paste][/paste]RegisterBlock(blockGlassYellow);ModLoader[paste][/paste]RegisterBlock(blockGlassLightBlue);ModLoader[paste][/paste]RegisterBlock(blockGlassLilac);ModLoader[paste][/paste]RegisterBlock(blockGlassOrange);ModLoader[paste][/paste]RegisterBlock(blockGlassWhite);
Вот добавление имени:
ModLoader[paste][/paste]AddName(blockGlassBlack,"Black glass");ModLoader[paste][/paste]AddName(blockGlassRed,"Red glass");ModLoader[paste][/paste]AddName(blockGlassGreen,"Green glass");ModLoader[paste][/paste]AddName(blockGlassBrown,"Brown glass");ModLoader[paste][/paste]AddName(blockGlassBlue,"Blue glass");ModLoader[paste][/paste]AddName(blockGlassViolet,"Violet glass");ModLoader[paste][/paste]AddName(blockGlassTurquoise,"Turquoise glass");ModLoader[paste][/paste]AddName(blockGlassLightGrey,"Light grey glass");ModLoader[paste][/paste]AddName(blockGlassGrey,"Grey glass");ModLoader[paste][/paste]AddName(blockGlassRose,"Rose glass");ModLoader[paste][/paste]AddName(blockGlassLaim,"Laim glass");ModLoader[paste][/paste]AddName(blockGlassYellow,"Yellow glass");ModLoader[paste][/paste]AddName(blockGlassLightBlue,"Light blue glass");ModLoader[paste][/paste]AddName(blockGlassLilac,"Lilac glass");ModLoader[paste][/paste]AddName(blockGlassOrange,"Orange glass");ModLoader[paste][/paste]AddName(blockGlassWhite,"White glass");
Ну и часть рецептов:
ModLoader[paste][/paste]AddRecipe(new ItemStack(blockGlassBlack,1),new Object[]{    "XY","##",Character[paste][/paste]valueOf('X'),Block[paste][/paste]glass,Character[paste][/paste]valueOf('Y'),new ItemStack(Item[paste][/paste]dyePowder,1,0)});ModLoader[paste][/paste]AddRecipe(new ItemStack(blockGlassRed,1),new Object[]{    "XY","##",Character[paste][/paste]valueOf('X'),Block[paste][/paste]glass,Character[paste][/paste]valueOf('Y'),new ItemStack(Item[paste][/paste]dyePowder,1,1)});ModLoader[paste][/paste]AddRecipe(new ItemStack(blockGlassGreen,1),new Object[]{    "XY","##",Character[paste][/paste]valueOf('X'),Block[paste][/paste]glass,Character[paste][/paste]valueOf('Y'),new ItemStack(Item[paste][/paste]dyePowder,1,2)});
Как мне засунуть эти блоки под один ID?

#2 Universe17

Universe17

    Зачарователь

  • Пользователи
  • Active Posts1523

Posted 08.11.2011 - 18:07

Ответа будешь долго ждать ты, юный падаван.

Попробуй обратиться к нему, нему или нему.

Они поймут проблему твою.

aka Threshold73 / Seventeen17 / INTHRO

Мой VK

(спам, рекламу, случайных семёнов и несмешных троллей я блокирую без разбора)

Олдфаг, был здесь с первых дней, публиковал новости в 2011-12 на главной, нынче неактивен, в майнач почти не играю.


#3 Oflor

Oflor

    Тонущий в песках душ

  • Пользователи
  • Active Posts2327

Posted 08.11.2011 - 22:30

1. Это не SubID, а Metadata.2. Это задается на уровне класса блока.3. В методах класса проверяется значение metadat'ы и выполняется определенная функция или выдается определенное значение.


0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users