Поворот текстуры сверху на блоке

Я даже не знаю, кто тут конь. Может, поможешь найти?
[merge_posts_bbcode]Добавлено: 04.11.2015 22:20:59[/merge_posts_bbcode]

Вот еще вопрос:
Я хочу сделать скошенный блок. Но не знаю, как. Если я использую setBlockBoundsBasedOnState, то блок становится неквадратным, меняет свои размеры, но остается параллелепипедом. Через какие методы сделать блок другой формы? Понимаю, что уже ранее наверняка обсуждалось, но будьте добры, ткните носом в ссылку.
 
Okdestkon. (У которого тег "Даун". И у него ава с каким то лосем чтоли который пьёт чай...) Он и есть конь. Тоесть Oldestконь
 
Хорошо, посмотрю.

Так что насчет вопроса о скошенном блоке? Хоть какие методы копать?

Еще вопрос:
Хотел, чтобы вещь стакалась по 10000. Написал так: GameRegistry.registerItem(russo = new ItemMod("myitem").setMaxStackSize(10000), "myitem");
Из инвентаря креативки берется по 10000, но в инвентарь игрока кладется максимум по 64. Чего не хватает?
 
По 1000 не будет,макс стак который можно разложить в инвентаре- 127 , но у меня так не получалось
 
Ага, я уже понял. Даже 100 положить не удается рукой в инвентарь... Придется изобретать что-то другое, альтернативное. :)
 
Блин, народ, ну помогите сделать класс для скошенного блока. Я нашел мод BetterWorld Roof от Kaevator'а, но он его обфусцировал, а моих познаний недостаточно, чтобы привести код в рабочее состояние. Последняя версия мода - под 1.4, исходников в инете нет, автор мод забросил, под 1.7.10 последняя версия мода, разумеется, не работает...

Судя по коду, скошенный блок (крыша) сделать, в целом, просто. Просто я и так просто не умею.
 
Ну не хотелось бы ставить его на свой сервер - он вроде мощный. А я просто хочу сделать в своем моде несколько скошенных блоков для строительства крыш. Ну, там, шифер, черепица, ондулин какой-нибудь. Короче, то, чего мне не хватает в ванильном майне.
 
Там ненужное лишь способность блоков принимать свойства и текстуру других блоков. Ну и меняться при взаимодействии с инструментом.
 
Скачал сорцы Carpenter's Blocks - многовато там для моей цели. Я хотел бы желаемого достичь парой-тройкой класс-файлов. Чтоб было только то, что нужно. И чтоб мне было понятнее и код, в случае чего, мог сам подредактировать.
Нашел другой мод: Greg's Blocks
Тут есть сорцы, но снова не хватает ума - что из них вырезать и как прикрутить...
 
Уверен, для большинства тут не будет открытием, если я скажу, что это:
int yaw = MathHelper.floor_double((double)(entity.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3;
вычисляет направление взгляда энтити по четырем сторонам света таким образом:
0 - S (south), 1 - W (west), 2 - N (north), 3 - E (east)
При этом каждое направление охватывает сектор в 180 градусов.

Не могли бы вы, уважаемые форумчане, сделать для меня подобную формулу, но чтобы она вычисляла направление взгляда по-другому: показывала бы направление SW, NW, SE, NE, при этом охватывая сектор в 90 градусов?

Если вопрос непонятен - скажите. Я тогда нарисую схему.
 
Там обхват и так 90 градусов,
если  правильно тебя понял, вот так:
int yaw = MathHelper.floor_double((double)entity.rotationYaw * 4.0F / 360.0F) & 3;
 
Нет, обхват там именно 180°, но это неважно, ты мне все равно помог. Я вычисляю сектор путем скрещивания этих двух формул - старой и новой (твоей). Спасибо. :)
 
С трудом представляю как можно запихнуть 4 сектора по 180° в 360°, ну да ладно
если тебе нужно получать 8 сторон, то можно так

Код:
int yaw = MathHelper.floor_double((double) entity.rotationYaw * 8.0F / 360.0F) & 7;

или так

Код:
int yaw = MathHelper.floor_double((double) (entity.rotationYaw * 8.0F / 360.0F)+ 0.5D) & 7;

смотря какой угол нужен
 
Блин, а ведь ты прав, я ошибся. Короче, старая формула вычисляла сектор 90°, новая - тоже, но со сдвигом. В любом случае, написав портянку if'ов, я уже добился желаемого результата. Тем не менее, твою формулу кину в комменты класса. Когда будет настроение - переделаю, чтоб смотрелось кошерно. :angel: Еще раз спасибо.
P.S. Вопрос о скошенных блоках остается открытым.
 
Вопрос со скошенными блоками решился другим способом.
А вот вопрос с полублоками решить мне так и не удалось. И я решил написать собственный эвент-хендлер, который будет подменять полублок на полный блок-родитель.
Вот код:
Код:
// slabs setting procedure
@SubscribeEvent
public void onBlockRightClick(PlayerInteractEvent e){
    if(e.action != Action.RIGHT_CLICK_BLOCK)return; // not right-click and/or not a block
    if(e.entityPlayer.inventory.getCurrentItem() == null){return;} // hands is empty
    ItemStack item = e.entityPlayer.inventory.getCurrentItem();
    if(item.getItem() != Item.getItemFromBlock(ListBlocks.spongeSlab)){return;} // no slabs in hand
    int targetX = e.x, targetY = e.y, targetZ = e.z;
    int face = e.face;
    if(face == 0/* is target is in lower half? */){targetY--;} // we moving to the next-down-block
    if(face == 1/* is target is in lower half? */){targetY++;} // we moving to the next-up-block
    if(face == 2){targetZ--;} // we working with north-side-neighbour-block
    if(face == 3){targetZ++;} // we working with south-side-neighbour-block
    if(face == 4){targetX--;} // we working with west-side-neighbour-block
    if(face == 5){targetX++;} // we working with east-side-neighbour-block
    Block target = e.world.getBlock(targetX, targetY, targetZ);
    if(Item.getItemFromBlock(target) != item.getItem()){return;} // target isn't a slab
     // if this is time for switch - let's cancel operation and do it ourselves
    e.setCanceled(true); // cancelling
    --item.stackSize; // taking 1 block out the player
    e.world.setBlock(targetX, targetY, targetZ, Blocks.sponge); // setting doubleblock to the target coords of the world
}

Комментарии я написал на английском, но уверен, что для вас это не проблема.
В двух местах я написал так: /* is target is in lower half? */
Тут я проверяю, находится ли установленный ранее полублок в нижней части блока. Как это проверить, я не знаю. И, собственно, прошу вас помочь мне в этом. Заранее спасибо.
 
Назад
Сверху