【发布时间】:2016-12-29 04:59:21
【问题描述】:
我正在关注this tutorial 如何创建 Minecraft 模组。我收到以下错误,但我没有看到任何问题。我不知道这个错误是什么意思,更重要的是我真的不知道我在做什么,因此遵循教程。
我正在使用 Forge 1.11 和 IntelliJ IDEA 2016.3.2 IDE 以及 Java 1.8.0_112 SDK。 根据一些阅读,我认为这与数据类型不匹配有关,但可能只是我的 IDE 很挑剔,或者它是 Java 1.8 SDK 的东西。我真的很迷茫,所以我想伸手去看看有没有人愿意提供指导。
错误:
ModBlocks 中的寄存器 (T) 不能应用于 (net.maramor.tutorial.block.BlockBase)
原因:不存在类型变量的实例,因此 BlockBase 符合 BlockOre 推理变量 T 具有不兼容的界限: 下界:BlockBase 上界:Block、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);
}
}
【问题讨论】:
-
我已经回滚了;如果您有新问题要问,请提出新问题。
标签: java minecraft minecraft-forge