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

1,560
86
204
Попробуй добавить явное implements IForgeRegistryEntry
Пробовал, тогда вся иерархия объектов ломается.

hohserg1 написал(а):
А если попытался скомпилировать твой код javac, то ошибки нет?
Даже не компилится

Ошибка не только в идее, но и в джаве.
Eclipse этот код компилил, Idea почему-то ломается.
 
1,560
86
204
Ещё Idea и Eclipse ломается в таком случае:
Java:
public static void registerEvents(IEventBus bus) {
    // Работает
    Consumer<MyClass.NewRegistry> c1 = MyClass::registryRegister;
    bus.addListener(c1);
   
    // Показывает ошибку
    bus.addListener(MyClass::registryRegister);
}

public static void registryRegister(RegistryEvent.NewRegistry event) {
    // Тут какой-то сверх код
}
Что мне Idea советует добавить:
public static void registryRegister(Event event) {
   
}
В чём логика вообще не понимаю :cry:
 

ReyMagos

Тег-бомбастер
412
7
121
У меня даже воссоздать ошибку не получается) Может сделать, как сказал @hohserg1, но убрать extends ForgeRegistryEntry. По сути регистру главное, чтобы он реализовал IForgeRegistryEntry, а не был наследником ForgeRegistryEntry.

Честно сказать, тоже не понимаю.
 
1,560
86
204
Нету слов, но когда я написал implements IForgeRegistryEntry<ManagedObjectType<T>>, то он всё равно показывает ту же ошибку.
Может это из-за какой-то неправильной установки среды или что-то подобное?
 

GoogleTan

Картошка :3
1,354
43
310
Вообщем я так не понимаю... можно полный код, желательно на гите? Можно часть связанную с этим.
 

ReyMagos

Тег-бомбастер
412
7
121
И это ТОЧНО работает в еклипсе?
Если да, то сообщи о проблеме сюда. Если это баг, то его исправят. Если это что-то другое, то тебе помогут.
 

GoogleTan

Картошка :3
1,354
43
310
То что ты кидал вообще работать не должно было. Должно быть типа так:
Java:
public class ManagedObjectType extends ForgeRegistryEntry<ManagedObjectType> {

    public static void registerTypes(RegistryEvent.Register<ManagedObjectType> event) { // ЗДЕСЬ НЕ РАБОТАЕТ
        // event.getRegistry().registerAll(TYPES);
    }
}
 

ReyMagos

Тег-бомбастер
412
7
121
Это логично, что будет работать. Но ему нужен параметризованный вариант.
 

GoogleTan

Картошка :3
1,354
43
310
Аа.. тупанула. Поидее прокатит:
Java:
public class ManagedObjectType<T extends IManagedObject> extends ForgeRegistryEntry<ManagedObjectType<T>> {

    public static void registerTypes(RegistryEvent.Register<ManagedObjectType<IManagedObject>> event) { // ЗДЕСЬ РАБОТАЕТ
        // event.getRegistry().registerAll(TYPES);
    }
}
 
1,560
86
204
Сделал вот так вот:
Java:
public final class ManagedObjectType<T extends IManagedObject> extends ForgeRegistryEntry<ManagedObjectType<?>> {
Переделал некоторые методы и заработало.
НО теперь не работает вот это:
Java:
private static IForgeRegistry<ManagedObjectType<?>> getRegistry() {
    return GameRegistry.findRegistry(ManagedObjectType<?>.class);
}
Screenshot_2.png
 

GoogleTan

Картошка :3
1,354
43
310
Типы классов в Java?.... Впервые слышу. В java только Class и все
 
1,560
86
204
Под неправильным возвращением типа класса я имею ввиду вот это
Screenshot_3.png
 

GoogleTan

Картошка :3
1,354
43
310
Думаю и в объявлении метода лучше заменить ManagedObjectType<IManagedObject> на ManagedObjectType. Тогда все сойдется и, поидее, проблем не будет.
 
Сверху