2016-12-29 10 views
0

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); 
    } 
} 
+0

Я вернул это назад; если у вас есть новый вопрос, то задайте вместо него новый вопрос. – Makoto

ответ

0

Да, это один из способов сделать на MC 1.10 и выше. В основном вы должны регистрировать блоки, предметы и текстуры во время загрузки игры, чтобы они были доступны, когда вы делаете/загружаете мир.

 Смежные вопросы

  • Нет связанных вопросов^_^