Я пытаюсь перейти на Idea

1,560
86
204
Пытаюсь я запихнуть в RegistryEvent.Register<сюда> свой класс, родитель которого является ForgeRegistryEntry. Eclipse такой: "ну ок". А IDEA кидает ошибку о том, что мой класс должен быть наследником IForgeRegistryEntry (ForgeRegistryEntry и является наследником IForgeRegistryEntry). В чём прикол? Уже второй день пытаюсь решить эту проблему.
 
Последнее редактирование:

GoogleTan

Картошка :3
1,354
43
310
Возможно забыл вопросик RegistryEvent.Register<smth<?>>?
 
1,560
86
204
Класс:
public final class ManagedObjectType<T extends IManagedObject> extends ForgeRegistryEntry<ManagedObjectType<T>> {
Ошибка:
Код:
Type parameter 'net.mpmod.base.mo.ManagedObjectType' is not within its bound; should implement 'net.minecraftforge.registries.IForgeRegistryEntry<net.mpmod.base.mo.ManagedObjectType<?>>'
 

GoogleTan

Картошка :3
1,354
43
310
Погоди, ты свою регистрацию хочешь?
 
1,560
86
204
Да, это новый объект со своей регистрацией. Всё работало на Eclipse, а на Idea не проходит.
 
1,560
86
204
А, точно, ругается на эту строчку:
Java:
public static void registerTypes(RegistryEvent.Register<!!ManagedObjectType<?>!!> event) {
Пробовал убирать знак вопроса - ничего.
 

GoogleTan

Картошка :3
1,354
43
310
Да, эт я попутала место. Его не надо. Можешь скрином кинуть ошибку?
 

GoogleTan

Картошка :3
1,354
43
310
При наведении на красную строку появится окошко. Его и надо
 
1,560
86
204
В окне он показывает ту ошибку и действие симплементировать класс IForgeRegistryEntry
Screenshot_1.png
 

ReyMagos

Тег-бомбастер
412
7
121
Не могу к сожалению посмотреть код 1.15, поэтому делаю вслепую
Это правильные объявления классов?
Exmple:
public class Main {
    public static void main(String[] args) {
 
    }

    private static void registerTypes(RegistryEvent.Register<ManagedObjectType<?>> event) {
 
    }

    private interface IForgeRegistryEntry<V> {

    }

    private static class A implements IManagedObject { //Просто класс для примера

    }

    private interface IManagedObject {

    }

    private class ForgeRegistryEntry<T> implements IForgeRegistryEntry<T> {

    }

    private class ManagedObjectType<T extends IManagedObject> extends ForgeRegistryEntry<ManagedObjectType<T>> {

    }

    private class RegistryEvent<T extends IForgeRegistryEntry<T>> {
        private class Register<T extends IForgeRegistryEntry<T>> extends RegistryEvent<T> {

        }
    }
}

Если так, то у меня вообще другая ошибка) Хотя выглядит всё правильно
Безымянный.png

Логично, что если развязать клубок, то будет как-то так:
Java:
//Преобразуем класс в его наследников:
ManagedObjectType<A> -> ForgeRegistryEntry<ManagedObjectType<A>> -> IForgeRegistryEntry<ManagedObjectType<A>>
//Скармливаем register'у класс и получаем вот это:
RegistryEvent.Register<ManagedObjectType<A>> -> RegistryEvent.Register<IForgeRegistryEntry<ManagedObjectType<A>>>
//Ещё раз всё преобразуем до самого конца. Вроде всё должно быть классно:
RegistryEvent<IForgeRegistryEntry<ManagedObjectType<A>>>
//НО ошибка
 
Последнее редактирование:

VeniVidiVici

Санта Барбарис
327
15
198

Я пытаюсь перейти на Idea​

8497-zvezdnye-voiny-epizod-3-mest-sithov-star-wars-episode-iii-revenge-of-the-sith.jpg
 
7,099
324
1,510
public final class ManagedObjectType<T extends IManagedObject> extends ForgeRegistryEntry<ManagedObjectType<T>> {
Попробуй добавить явное implements IForgeRegistryEntry
~~~
А если попытался скомпилировать твой код javac, то ошибки нет?
 
1,560
86
204
@Rey838, всё правильно кроме ForgeRegistryEntry
ForgeRegistryEntry:
public abstract class ForgeRegistryEntry<V extends IForgeRegistryEntry<V>> implements IForgeRegistryEntry<V> {}
 
Сверху