2017-11-15 1 views
1

Also versuche ich, einen ItemBlock neben meinem Block zu registrieren, wenn er registriert wird. Ich bin so weit gekommen. Gibt es einen besseren Weg, dies zu tun? Ich bin nicht wirklich glücklich mit dem itemBlock.setRegistryName Teil innerhalb registerBlock()!Bessere Art, ItemBlock zu registrieren als das, was ich hier habe?

public class ModBlocks { 

    public static Block tinBlock; 

    public static void init(){ 
     tinBlock = new BlockTinBlock("tin_block", "tin_block"); 
    } 

    public static void register(){ 
     registerBlock(tinBlock); 
    } 

    public static void registerRenders(){ 
     registerRender(tinBlock); 
    } 

    public static void registerBlock(Block block){ 
     GameRegistry.register(block); 
     ItemBlock itemBlock = new ItemBlock(block); 
     itemBlock.setRegistryName(Reference.MODID, block.getUnlocalizedName().substring(5)); 
     GameRegistry.register(itemBlock); 
    } 

    public static void registerRender(Block block){ 
     ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(block), 0, new ModelResourceLocation(new ResourceLocation(Reference.MODID, block.getUnlocalizedName().substring(5)), "inventory")); 
    } 
} 
+0

über welche minecraft-version reden wir? – Skgland

Antwort

1

Ich bin über einen Link gestolpert, der auf dem MinecraftForge Foren vor 2 Tagen gepostet wurde. Diese Methode zum Registrieren von Elementen und Blöcken ist auf dem neuesten Stand und verwendet RegistryEvents! Schau es dir an und überlege, es umzustellen!

[MinecraftForge] 1.11.2 - Is using RegistryEvent this way ok?

0

Was Sie tun, ist ziemlich viel, aber für die Registrierung von Blöcken, Gegenstände und Modelle usw. sollten Sie das entsprechende Ereignis verwenden:
Um dies zu tun, Sie einen Event-Listener für das Ereignis hören müssen .
ein Ereignis-Listener ist eine Funktion, die das Ereignis als Parameter nimmt und @SubscribeEvent Kommentierte sie können entweder in Ihrer @Mod Klasse oder in Klassen @Mod.EventBusSubscriber(modid = "yourmodid")

Sie registrieren Blöcke, Objekte und Modelle in einer separaten Klasse Kommentierte befinden so etwas wie dies würde schreiben:

@Mod.EventBusSubscriber(modid = "yourmodid") 
public class Registration{ 
    @SubscribeEvent 
    public static void registerBlocks(RegistryEvent.Register<Block> event) { 
     IForgeRegistry registry = event.getRegistry(); 
     //register blocks here using registry 
    } 

    @SubscribeEvent 
    public static void registerItems(RegistryEvent.Register<Item> event) { 
     //register items here like we did with the blocks 
    } 

    @SideOnly(Side.CLIENT) 
    @SubscribeEvent 
    public static void initModels(ModelRegistryEvent event) { 
     //register models here 
    } 
} 

Weitere Informationen zu diesem Thema finden Sie in der offiziellen Mine Forge Dokumentation gefunden werden, die here gefunden werden kann.

+0

Hey BDoubleB97, Ich habe tatsächlich eine erstaunliche Möglichkeit gefunden, Artikel in einem Beitrag auf Minecraft Forge zu registrieren, der diese Ereignisse verwendet, aber auf eine viel geordnetere Weise. Danke für die Hilfe, aber ich werde diesen Link als die richtige Antwort posten! –

Verwandte Themen