OK Я следую учебному пособию о том, как создавать моды Minecraft, что-то делать и просвещать, хотел расширить свои знания Java и был некоторое время назад, когда я учился в колледже. В любом случае я получаю ошибку ниже, но я не вижу никаких проблем. Я не знаю, что означает эта ошибка, и, что еще важнее, я не знаю, что я делаю, следуя учебнику. Я использую Forge 1.11 для тех, кто интересуется и использует IntelliJ IDEA 2016.3.2 IDE с Java 1.8.0_112 SDK.экземпляров (-ов) типа нет, так что BlockBase подтверждает BlockOre
Основываясь на некоторых чтениях, я думаю, что это связано с несоответствием типа данных, но это может быть просто моя IDE придирчивая или это Java 1.8 SDK. Действительно потерял, поэтому подумал, что я бы протянул руку и посмотрел, хочет ли кто-нибудь дать указания.
Учебник: https://shadowfacts.net/tutorials/forge-modding-111/basic-blocks/
Ошибка: регистра (Т) в ModBlocks не может быть применена к (net.maramor.tutorial.block.BlockBase) причины: нет экземпляра (ов) переменного типа (ов) существуют так, что BlockBase соответствует BlockOre переменной логического вывода T имеет несовместимые границы: нижние границы: BlockBase верхние границы: блок, BlockOre
[BlockBase.java]
package net.maramor.tutorial.block;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.ItemBlock;
import net.maramor.tutorial.TutorialMod;
/**
* Created by Matt on 12/28/2016.
*/
public class BlockBase extends Block
{
protected String name;
public BlockBase(Material material, String name)
{
super(material);
this.name = name;
setUnlocalizedName(name);
setRegistryName(name);
}
public void registerItemModel(ItemBlock itemBlock)
{
TutorialMod.proxy.registerItemRenderer(itemBlock,0, name);
}
@Override
public BlockBase setCreativeTab(CreativeTabs tab)
{
super.setCreativeTab(tab);
return this;
}
}
[BlockOre.java]
package net.maramor.tutorial.block;
import net.minecraft.block.material.Material;
import net.minecraft.creativetab.CreativeTabs;
/**
* Created by Matt on 12/28/2016.
*/
public class BlockOre extends BlockBase
{
public BlockOre(String name)
{
super(Material.ROCK, name);
setHardness(3f);
setResistance(5f);
}
@Override
public BlockBase setCreativeTab(CreativeTabs tab)
{
super.setCreativeTab(tab);
return this;
}
}
[ModBlocks.java]
package net.maramor.tutorial.block;
import net.minecraft.block.Block;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.ItemBlock;
import net.minecraftforge.fml.common.registry.GameRegistry;
/**
* Created by Matt on 12/28/2016.
*/
public class ModBlocks
{
public static BlockOre oreCopper;
public static void init()
{
oreCopper = register(new BlockOre("ore_copper").setCreativeTab(CreativeTabs.MATERIALS));
}
private static <T extends Block> T register(T block, ItemBlock itemBlock)
{
GameRegistry.register(block);
GameRegistry.register(itemBlock);
if (block instanceof BlockBase)
{
((BlockBase)block).registerItemModel(itemBlock);
}
return block;
}
private static <T extends Block> T register(T block)
{
ItemBlock itemBlock = new ItemBlock(block);
itemBlock.setRegistryName(block.getRegistryName());
return register(block, itemBlock);
}
}
Я вернул это назад; если у вас есть новый вопрос, то задайте вместо него новый вопрос. – Makoto