обновление мода с 1.7.10

Версия Minecraft
1.12.2
Нашёл когда-то в билдкрафте как они делают лазеры-маркеры в билдере, реализовал в моде и был доволен.
Вот так:
Java:
    public static MarkerLaser createLaser(World world, Position p1, Position p2) {
    
        [...]

        MarkerLaser block = new MarkerLaser(world, i, j, k, iSize, jSize, kSize);
        block.setBrightness(210);

        world.spawnEntityInWorld(block); // в новых версиях ошибка: The method spawnEntityInWorld(MarkerLaser) is undefined for the type World
        return block;
    }
Но появилось желание обновиться. И никак не могу найти, во что этот код превратился в новых версиях.
по "spawnEntityInWorld" в гугле ничего нормального не находится.

Подскажите где порыть для модов версии 1.12.2 и 1.14.х (и то и то надо), или какой-нить мод с исходниками, которые рисуют подобное в моде что-то подобное билдкрафтовым лазерам. Или подскажите как подобного рода энтити создаются в новых версиях.

Нашёл в BetterBuildersWands сеточку, но там она рисуется не энтитями, а на каждом блоке, что не очень подходит.

В общем подкиньте идею, в каком направлении копать?
 
А вот, например изменилось получение блока:
Block block = world.getBlock(x, y, z);
превратилось в
Java:
BlockPos blockpos = new BlockPos(x, y, z);           
IBlockState iblockstate = world.getBlockState(blockpos);
Block block = iblockstate.getBlock();
return block;
Вы же тоже очевидно про это узнали? Я долго искал по чужим исходникам, и наткнулся на такое изменение случайно. А как это ещё можно найти?
 
Вот, очередное. У меня было:
Java:
return bx.world().getBlockMetadata(Place.MCx(), Place.MCy(), Place.MCz());
Читаю на форджевом форуме
  • x,y,z is now BlockPos - wrapped x,y,z
  • You don't separately ask world about Block or Metadata at given x,y,z - you ask it about state which is wrapper for both block and metadata.
  • Metadata is no longer integer 0-15 (it is, but only in serialization), but is represented by properties inside said state. Those properties can be whatever you want, you can have plenty of them, it's just that given x,y,z can still only hold 16 bits of data (said serialization metadata).
Но не могу понять, что же писать, чтобы получить ту самую цифирку, которая раньше была от 0 до 16 или, вроде даже 256.
 

tox1cozZ

aka Agravaine
Модератор
7,124
455
2,148
В гугле полно инфы об обновлении на новые версии.
Да и можно просто туториалы для новых версий почитать

BlockState гугли
 
Спасибо. В предыдущих вопросах я демонстрировал, что уже пользовался BlockState и, очевидно, вопрос задал именно потому, что в гугле не нашёл понятной для меня информации. Что искал, я тоже продемонстрировал.
Я буду благодарен если вы приведёте пример инфы, которой "полно" в гугле об обновлении с версии 1.7.10 на 1.12.х и 1.14.х с описанием отличий и примерами. Я такой, увы, не нашёл. А то что нашёл приходится уточнять тут. Если вы не против, господин модератор.
Форум же предназначен для задавания вопросов, а не для посылания в гуголь?
 
Я на этом вики и пасусь, но, если бы мне было понятно, не было бы смысла мне сюда писать. К сожалению некоторые, казалось бы элементарные вещи там описаны так, что я даже не представляю как их найти. Например, раньше я блок через название искал вот так:

Код:
import cpw.mods.fml.common.registry.GameData;
...
block = GameData.getBlockRegistry().getObject(blockName);
Теперь же на этой вике по слову GameData выдаёт стилизованную фигу.

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

Подскажите, как там находить вот такие вещи и я больше не появлюсь здесь и не отвлеку вас, потому что всё в этом мире станет просто и понятно.

PS: это я уже не говору про Deprecated функции, в которые переходишь, а там просто тишина, хотя обычно, нормальные люди, при отказе о функции оставляют внятное описание, куда смотреть и как заменять. И почему решили отказаться. Ну это оставим на совести разработчиков форджа.
 
Последнее редактирование:
5,397
179
986
Кстати, при каждой крупной обнове forge изменения можно чекнуть в changelog-ах
 
Кстати, при каждой крупной обнове forge изменения можно чекнуть в changelog-ах
Ну, так-то логично, но только при переезде с 1.7.10 до 1.8.0 там их порядка сотни, причём поиск сайта по ним, очевидно, не работает. И скачать их одной пачкой невозможно. А мне надо с 1.7.10 до 1.12.2 как минимум добраться, а потом и дальше. Поэтому, прежде чем выкачивать всё это, расковыривать и искать то, не знаю что, решил сначала уточнить у знающих людей.
И, знаете, буквально через несколько минут уважаемый Liahim помог мне решить проблему над которой я бился изучая разный код уже довольно продолжительное время.

Но возможно где-то лежит уже скомпилированная инфа, а я хожу вокруг неё и не вижу? Буду благодарен за наводку!
 

tox1cozZ

aka Agravaine
Модератор
7,124
455
2,148
Исходники майна, форджа. Если чего-то не понимаю - иду на гитхаб и "гуглю" там. Благо модов миллион.
 
Ну, это я тоже делаю. А когда не нашёл, пошёл сюда. Здесь один подсказал, второй послал. Как бы ничего нового в этом мире :)
Вот ты про это знаешь GameData.getBlockRegistry() (выше спрашивал)? Нашёл я исходники форджа, в старых нашёлся код этого класса. Для 1.7.10. Нашёл на другом сайте, что этот код "Deprecated" и что дальше? Где и как искать то, что стало после него?




Вот, велком, a26d89c876d1cbfee31825354b40f67c6e6f6b0f - коммит, в котором эта функция была удалена. Класс перенесён в другое место, функция из класса совсем удалена а в описании коммита написано, что
* First pass of registry rewrite.
Tests do not run yet.
Things of note:
Removed the idea of substitutions, just register multiple items with the same name they will override each other like a normal map.
Decoupled Forge registries from vanilla classes. They now use bouncer classes. MODDERS SHOULD NEVER USE THESE
Introduced more stringent registry locking. As it sits things are only allowed to be registered during the RegistryEvent.Registry phases!
This is to force modders to split up their registrations, and pave the way for calling these functions multiple times during a single MC lifecycle.
ObjectHolder, Missing Mappings, etc... should now work for all registry types, nothing should be special cased to Blocks/Items anymore.
Added optional generic dummy factory to registries, to allow registry creators the ability to dummy more then just Blocks.
Re-worked the ItemStack transformer and applied it to ItemBlock and ItemBlockSpecial. Allowing us to cleanup reflective hacks in Block callbacks.
Registry onAdd callback is now only fired on the ACTIVE registry, fixing any issues of temp registries overriding active objects.
Но как получить блок по его названию-то?
 
Последнее редактирование:
Сверху