2016-12-29 2 views
0

OK 나는 Minecraft 개조자를 만드는 법, 그 일을하고 교육하는 방법에 대한 자습서를 수행 중이며 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 : 하한 :)가 BlockBase가 BlockOre 추론 변수 T를 따르도록 존재는 호환 경계를 갖는 블록, 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; 
    } 
} 
01,235,

[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 이상에서 할 수있는 하나의 방법입니다. 기본적으로 게임을로드하는 동안 블록, 항목 및 텍스처를 등록해야하므로 월드를 만들거나로드 할 때 사용할 수 있습니다.