Тип данных метода Minecraft Forge

Я пытаюсь работать с методом MinecraftForge в плагине Bukkit.

Вот мой код:

NetworkManager ic2 = new ic2.core.IC2().network;
DimensionManager dmm = new net.minecraftforge.common.DimensionManager();
T worlds = dmm.getWorlds(); // What Data Type?

Проблема в том, что метод getWorlds() кажется типом данных in[], который eclipse не распознает, поэтому теперь я застрял, потому что понятия не имею, какой тип данных сделать переменной мира.

Это метод getWorlds() в версии Forge, которую я использую.

public static in[] getWorlds() {
     return (in[]) worlds.values().toArray(new in[worlds.size()]);
}

Покопался еще немного и нашел это в версии кузницы, которую я использую.

import in;

а затем в списке классов есть класс «in»; Но его нет в списке в eclipse; Это та же банка, которую я декомпилировал.


person Mattigins    schedule 19.01.2014    source источник
comment
Если вы посмотрите на исходный код DimensionManager вы увидите, что DimensionManager#getWorlds возвращает WorldServer[]   -  person BackSlash    schedule 19.01.2014
comment
Значит, тип данных должен быть WorldServer? это тоже не работает..   -  person Mattigins    schedule 19.01.2014
comment
Нет, тип данных должен быть WorldServer[]   -  person BackSlash    schedule 19.01.2014
comment
Тоже пробовал, результат тот же. Несоответствие типов: невозможно преобразовать in[] в WorldServer[]   -  person Mattigins    schedule 19.01.2014
comment
Вы уверены, что у вас правильный API?   -  person BackSlash    schedule 19.01.2014
comment
Я только что декомпилировал версию Forge, которую использую (последнюю не могу использовать), и вот как она выглядит public static in[] getWorlds() { return (in[])worlds.values().toArray(new in[worlds.size()]); }   -  person Mattigins    schedule 19.01.2014


Ответы (1)


Причина, по которой getWorlds в библиотеке Forge возвращает in[], заключается в обфускации Mojang. Forge не может изменить каждую ссылку с in на WorldServer, потому что это было бы слишком сложно.

Поскольку большинство классов, используемых в Minecraft, являются частью пакета по умолчанию, их нельзя импортировать напрямую.

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

Вам нужно будет скомпилировать свой код для Bukkit с помощью компилятора Forge.

person hsun324    schedule 04.02.2014