2016-12-29 19 views
0

好的我正在學習關於如何創建Minecraft mods,它要做的事情和教育性的教程,一直想擴展我的Java知識並一直在一段時間,因爲我在大學上了一堂課。無論哪種方式,我得到以下錯誤,但我沒有看到任何問題。我不知道這個錯誤意味着什麼,更重要的是,我不知道我在做什麼,因此遵循教程。對於任何關心和使用IntelliJ IDEA 2016.3.2 IDE和Java 1.8.0_112 SDK的人,我都使用Forge 1.11。沒有類型變量的實例存在以便BlockBase確認BlockOre

基於一些閱讀,我認爲它與數據類型不匹配,但它可能只是我的IDE挑剔,或者它是Java 1.8 SDK的東西。真的失去了,所以我想我會伸出手,看看有人願意提供指導。

教程:https://shadowfacts.net/tutorials/forge-modding-111/basic-blocks/

錯誤:在ModBlocks 寄存器(T)不能被施加到 (net.maramor.tutorial.block.BlockBase) 原因:類型的變量沒有實例(S)(S )存在使得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); 
    } 
} 
+0

我已經推出了這回;如果你有一個新的問題要問,那就提出一個新的問題。 – Makoto

回答

0

是即做在MC 1.10和較高的一種方式。基本上你必須在遊戲加載過程中註冊塊,物品和紋理,以便在你製作/加載世界時可用。