Posted September 26, 20196 yr I cant get the item and also can place them with setblock, it seems they arent registered Thats my code for the slab Spoiler package com.Schleimtime.Wasteland.blocks.slab; import java.util.Random; import com.Schleimtime.Wasteland.Main; import com.Schleimtime.Wasteland.init.Modblocks; import com.Schleimtime.Wasteland.util.IHasModel; import net.minecraft.block.BlockSlab; import net.minecraft.block.BlockStairs.EnumHalf; import net.minecraft.block.material.Material; import net.minecraft.block.properties.IProperty; import net.minecraft.block.state.BlockStateContainer; import net.minecraft.block.state.IBlockState; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; public abstract class Slab extends BlockSlab implements IHasModel{ public Slab(Material materialIn, String name) { super(materialIn); setUnlocalizedName(name); setRegistryName(name); IBlockState state = this.blockState.getBaseState(); if(!this.isDouble()) { state = state.withProperty(HALF, EnumBlockHalf.BOTTOM); } setDefaultState(state); this.useNeighborBrightness=true; } @Override public String getUnlocalizedName(int meta) { return this.getUnlocalizedName(); } @Override public IProperty<?> getVariantProperty() { return HALF; } @Override public Comparable<?> getTypeForItem(ItemStack stack) { return EnumBlockHalf.BOTTOM; } @Override public int damageDropped(IBlockState state) { return 0; } @Override public IBlockState getStateFromMeta(int meta) { if(!this.isDouble()) { return this.getDefaultState().withProperty(HALF, EnumBlockHalf.values()[meta % EnumHalf.values().length]); } return this.getDefaultState(); } @Override public int getMetaFromState(IBlockState state) { if(!this.isDouble()) { return 0; } return ((EnumBlockHalf)state.getValue(HALF)).ordinal()+1; } @Override public Item getItemDropped(IBlockState state, Random rand, int fortune) { return Item.getItemFromBlock(this.getDefaultState().withProperty(HALF, EnumBlockHalf.BOTTOM).getBlock()); } @Override protected BlockStateContainer createBlockState() { return new BlockStateContainer(this, new IProperty[] {HALF}); } @Override public void registerModels() { Main.proxy.registerItemRenderer(Item.getItemFromBlock(this), 0, "inventory"); } } thats for half Spoiler package com.Schleimtime.Wasteland.blocks.slab; import net.minecraft.block.material.Material; public class HalfSlab extends Slab{ public HalfSlab(Material materialIn, String name) { super(materialIn, name); } @Override public boolean isDouble() { return false; } } and thats for full Spoiler package com.Schleimtime.Wasteland.blocks.slab; import com.Schleimtime.Wasteland.Main; import net.minecraft.block.material.Material; import net.minecraft.item.Item; public class DoubleSlab extends Slab{ public DoubleSlab(Material materialIn, String name) { super(materialIn, name); } @Override public boolean isDouble() { return true; } } i also put it in the class of my blocks that are all registered like that public static final Block ASHBRICK_SLAB_HALF = new HalfSlab(Material.ROCK, "ashbrick_slab_half"); public static final Block ASHBRICK_SLAB_DOUBLE = new DoubleSlab(Material.ROCK, "ashbrick_slab_double"); and thats how all blocks get registered excluding my slabs in the same list @SubscribeEvent public static void onBlockRegister(RegistryEvent.Register<Block> e) { e.getRegistry().registerAll(Modblocks.BLOCKS.toArray(new Block[0])); } do i need to register slabs special? or is there a mistake in the slab itself
September 26, 20196 yr What means Modblocks.BLOCKS.toArray(new Block[0])? Edited September 26, 20196 yr by Brbcode
September 26, 20196 yr Author 30 minutes ago, Brbcode said: What means Modblocks.BLOCKS.toArray(new Block[0])? I already fixed my slabs with an extra class so thats fine To array converts a list to an array of a list, the new Block[0] means it converts the list to an blockarray an array is very similar to a list, for example you create a new array with Blocks[] = new Blocks[]{block1, block2} and if you do Block[1] you will get block2 from it because it counts from 0
September 26, 20196 yr Author but now i have problems with the model it gives an error now that block air dont have a model
September 26, 20196 yr 15 minutes ago, Schleim_time said: it gives an error now that block air dont have a model That happens when the block in question was not correctly registered. The game attempts to get the registry key for the object it has, but it isn't in the registry, so it doesn't know what it's name is. Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable. If you think this is the case, JUST REPORT ME. Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice. Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked. DO NOT PM ME WITH PROBLEMS. No help will be given.
September 26, 20196 yr Author 4 minutes ago, Draco18s said: That happens when the block in question was not correctly registered. The game attempts to get the registry key for the object it has, but it isn't in the registry, so it doesn't know what it's name is. Oh so i made a registering mistake, what is my mistake here? public static final HalfSlab ASHBRICK_SLAB_HALF = new HalfSlab(Material.ROCK, "ashbrick_slab_half"); public static final DoubleSlab ASHBRICK_SLAB_DOUBLE = new DoubleSlab(Material.ROCK, "ashbrick_slab_double"); public static final ArrayList<Slab> SLABS = Lists.newArrayList( ASHBRICK_SLAB_DOUBLE, ASHBRICK_SLAB_HALF ); public ModHalfSlab() { registerSlabs(ASHBRICK_SLAB_HALF, ASHBRICK_SLAB_DOUBLE); } private void registerSlabs(HalfSlab halfSlab, DoubleSlab doubleSlab) { final ItemSlab itemSlab = new ItemSlab(halfSlab, halfSlab, doubleSlab); final ResourceLocation name = halfSlab.getRegistryName(); itemSlab.setRegistryName(name); itemSlab.setCreativeTab(CreativeTabs.BUILDING_BLOCKS); ForgeRegistries.BLOCKS.register(halfSlab); ForgeRegistries.BLOCKS.register(doubleSlab); ForgeRegistries.ITEMS.register(itemSlab); } } i get the slabs working corectly but dont owning a model even if i manuelly set them a modellocation that exists I tried to put it all in one class, i got my block now but its not in the inventory also also it will be executed from the main class Init method Edited September 26, 20196 yr by Schleim_time
September 26, 20196 yr Author 25 minutes ago, Draco18s said: That happens when the block in question was not correctly registered. The game attempts to get the registry key for the object it has, but it isn't in the registry, so it doesn't know what it's name is. i saw a toturial about it and see someboday making it a static void private static void registerSlabs(HalfSlab halfSlab, DoubleSlab doubleSlab) { ForgeRegistries.BLOCKS.register(halfSlab); halfSlab.setCreativeTab(CreativeTabs.BUILDING_BLOCKS); ItemSlab itemSlab = new ItemSlab(halfSlab, halfSlab, doubleSlab); itemSlab.setRegistryName(halfSlab.getRegistryName()); ForgeRegistries.ITEMS.register(itemSlab); ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(halfSlab), 0, new ModelResourceLocation(halfSlab.getRegistryName(), "inventory")); } the air error is gone but the models still dont exist i also added my modell directly into it but it still have the notexture model Edited September 26, 20196 yr by Schleim_time
September 26, 20196 yr 31 minutes ago, Schleim_time said: i saw a toturial about it and see someboday making it a static void I mean, that is a solution, assuming that other factors are true. You haven't posted enough code for us to determine if those factors are true or not. The best way for us to help you is if you post your entire project as a working git repo and include a full error log. Not just "but don't have a model." Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable. If you think this is the case, JUST REPORT ME. Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice. Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked. DO NOT PM ME WITH PROBLEMS. No help will be given.
September 26, 20196 yr Author 1 hour ago, Draco18s said: I mean, that is a solution, assuming that other factors are true. You haven't posted enough code for us to determine if those factors are true or not. The best way for us to help you is if you post your entire project as a working git repo and include a full error log. Not just "but don't have a model." Yeah you are alright "but don't have a model." isnt really a good information Double Slab Spoiler package com.Schleimtime.Wasteland.blocks.slab; import com.Schleimtime.Wasteland.Main; import net.minecraft.block.material.Material; import net.minecraft.item.Item; public class DoubleSlab extends Slab{ public DoubleSlab(Material materialIn, String name) { super(materialIn, name); } @Override public boolean isDouble() { return true; } @Override public void registerModels() { Main.proxy.registerItemRenderer(Item.getItemFromBlock(this), 0, "inventory"); } } HalfSlab Spoiler package com.Schleimtime.Wasteland.blocks.slab; import com.Schleimtime.Wasteland.Main; import net.minecraft.block.material.Material; import net.minecraft.item.Item; public class HalfSlab extends Slab{ public HalfSlab(Material materialIn, String name) { super(materialIn, name); } @Override public boolean isDouble() { return false; } @Override public void registerModels() { Main.proxy.registerItemRenderer(Item.getItemFromBlock(this), 0, "inventory"); } } SlabClass Spoiler package com.Schleimtime.Wasteland.blocks.slab; import java.util.Random; import com.Schleimtime.Wasteland.Main; import com.Schleimtime.Wasteland.init.Modblocks; import com.Schleimtime.Wasteland.util.IHasModel; import net.minecraft.block.BlockSlab; import net.minecraft.block.BlockStairs.EnumHalf; import net.minecraft.block.material.Material; import net.minecraft.block.properties.IProperty; import net.minecraft.block.state.BlockStateContainer; import net.minecraft.block.state.IBlockState; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; public abstract class Slab extends BlockSlab implements IHasModel{ public Slab(Material materialIn, String name) { super(materialIn); setUnlocalizedName(name); setRegistryName(name); IBlockState state = this.blockState.getBaseState(); if(!this.isDouble()) { state = state.withProperty(HALF, EnumBlockHalf.BOTTOM); } setDefaultState(state); this.useNeighborBrightness=true; } @Override public String getUnlocalizedName(int meta) { return this.getUnlocalizedName(); } @Override public IProperty<?> getVariantProperty() { return HALF; } @Override public Comparable<?> getTypeForItem(ItemStack stack) { return EnumBlockHalf.BOTTOM; } @Override public int damageDropped(IBlockState state) { return 0; } @Override public IBlockState getStateFromMeta(int meta) { if(!this.isDouble()) { return this.getDefaultState().withProperty(HALF, EnumBlockHalf.values()[meta % EnumHalf.values().length]); } return this.getDefaultState(); } @Override public int getMetaFromState(IBlockState state) { if(!this.isDouble()) { return 0; } return ((EnumBlockHalf)state.getValue(HALF)).ordinal()+1; } @Override public Item getItemDropped(IBlockState state, Random rand, int fortune) { return Item.getItemFromBlock(this.getDefaultState().withProperty(HALF, EnumBlockHalf.BOTTOM).getBlock()); } @Override protected BlockStateContainer createBlockState() { return new BlockStateContainer(this, new IProperty[] {HALF}); } } Model Registery Spoiler package com.Schleimtime.Wasteland.util.handlers; import java.util.ArrayList; import com.Schleimtime.Wasteland.blocks.slab.Slab; import com.Schleimtime.Wasteland.init.ModHalfSlab; import com.Schleimtime.Wasteland.init.Modbiome; import com.Schleimtime.Wasteland.init.Modblocks; import com.Schleimtime.Wasteland.init.Moditems; import com.Schleimtime.Wasteland.util.IHasModel; import com.Schleimtime.Wasteland.util.RecipeRemover; import net.minecraft.block.Block; import net.minecraft.client.model.ModelSlime; import net.minecraft.item.Item; import net.minecraft.item.crafting.IRecipe; import net.minecraftforge.client.event.ModelRegistryEvent; import net.minecraftforge.event.RegistryEvent; import net.minecraftforge.event.terraingen.OreGenEvent; import net.minecraftforge.fml.common.Mod.EventBusSubscriber; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.common.registry.ForgeRegistries; import net.minecraftforge.registries.ForgeRegistry; @EventBusSubscriber public class RegistryHandler { @SubscribeEvent public static void onModelRegister(ModelRegistryEvent e) { for(Item item : Moditems.ITEMS) { if(item instanceof IHasModel) { ((IHasModel)item).registerModels(); } }//item for(Block block : Modblocks.BLOCKS) { if(block instanceof IHasModel) { ((IHasModel)block).registerModels(); } }//block for(Block block : ModHalfSlab.SLABS) { if(block instanceof IHasModel) { ((IHasModel)block).registerModels(); } }//slab } } ClientProxy Spoiler package com.Schleimtime.Wasteland.proxy; import com.Schleimtime.Wasteland.items.newspaper.NewspaperGUI; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.item.Item; import net.minecraftforge.client.model.ModelLoader; public class clientproxy implements commonproxy{ public void registerItemRenderer(Item item, int meta, String id) { ModelLoader.setCustomModelResourceLocation(item, meta, new ModelResourceLocation(item.getRegistryName(), id)); } public void openClientNewspaperGUI(int value) { Minecraft.getMinecraft().displayGuiScreen(new NewspaperGUI(value)); } } that are all classes have to do with my slab block and the model is a missing moddel the error i got is Spoiler [01:12:03] [main/ERROR] [FML]: Exception loading model for variant minecraft:air#inventory for item "minecraft:air", normal location exception: net.minecraftforge.client.model.ModelLoaderRegistry$LoaderException: Exception loading model minecraft:item/air with loader VanillaLoader.INSTANCE, skipping at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:161) ~[ModelLoaderRegistry.class:?] at net.minecraftforge.client.model.ModelLoader.loadItemModels(ModelLoader.java:302) ~[ModelLoader.class:?] at net.minecraft.client.renderer.block.model.ModelBakery.loadVariantItemModels(ModelBakery.java:175) ~[ModelBakery.class:?] at net.minecraftforge.client.model.ModelLoader.setupModelRegistry(ModelLoader.java:151) ~[ModelLoader.class:?] at net.minecraft.client.renderer.block.model.ModelManager.onResourceManagerReload(ModelManager.java:28) [ModelManager.class:?] at net.minecraft.client.resources.SimpleReloadableResourceManager.registerReloadListener(SimpleReloadableResourceManager.java:121) [SimpleReloadableResourceManager.class:?] at net.minecraft.client.Minecraft.init(Minecraft.java:559) [Minecraft.class:?] at net.minecraft.client.Minecraft.run(Minecraft.java:421) [Minecraft.class:?] at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_211] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_211] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_211] at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_211] at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?] at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_211] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_211] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_211] at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_211] at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?] at GradleStart.main(GradleStart.java:25) [start/:?] Caused by: java.io.FileNotFoundException: minecraft:models/item/air.json at net.minecraft.client.resources.FallbackResourceManager.getResource(FallbackResourceManager.java:69) ~[FallbackResourceManager.class:?] at net.minecraft.client.resources.SimpleReloadableResourceManager.getResource(SimpleReloadableResourceManager.java:65) ~[SimpleReloadableResourceManager.class:?] at net.minecraft.client.renderer.block.model.ModelBakery.loadModel(ModelBakery.java:334) ~[ModelBakery.class:?] at net.minecraftforge.client.model.ModelLoader.access$1400(ModelLoader.java:115) ~[ModelLoader.class:?] at net.minecraftforge.client.model.ModelLoader$VanillaLoader.loadModel(ModelLoader.java:861) ~[ModelLoader$VanillaLoader.class:?] at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:157) ~[ModelLoaderRegistry.class:?] ... 20 more [01:12:03] [main/ERROR] [FML]: Exception loading model for variant minecraft:air#inventory for item "minecraft:air", blockstate location exception: net.minecraftforge.client.model.ModelLoaderRegistry$LoaderException: Exception loading model minecraft:air#inventory with loader VariantLoader.INSTANCE, skipping at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:161) ~[ModelLoaderRegistry.class:?] at net.minecraftforge.client.model.ModelLoader.loadItemModels(ModelLoader.java:296) ~[ModelLoader.class:?] at net.minecraft.client.renderer.block.model.ModelBakery.loadVariantItemModels(ModelBakery.java:175) ~[ModelBakery.class:?] at net.minecraftforge.client.model.ModelLoader.setupModelRegistry(ModelLoader.java:151) ~[ModelLoader.class:?] at net.minecraft.client.renderer.block.model.ModelManager.onResourceManagerReload(ModelManager.java:28) [ModelManager.class:?] at net.minecraft.client.resources.SimpleReloadableResourceManager.registerReloadListener(SimpleReloadableResourceManager.java:121) [SimpleReloadableResourceManager.class:?] at net.minecraft.client.Minecraft.init(Minecraft.java:559) [Minecraft.class:?] at net.minecraft.client.Minecraft.run(Minecraft.java:421) [Minecraft.class:?] at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_211] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_211] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_211] at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_211] at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?] at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_211] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_211] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_211] at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_211] at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?] at GradleStart.main(GradleStart.java:25) [start/:?] Caused by: net.minecraft.client.renderer.block.model.ModelBlockDefinition$MissingVariantException at net.minecraft.client.renderer.block.model.ModelBlockDefinition.getVariant(ModelBlockDefinition.java:83) ~[ModelBlockDefinition.class:?] at net.minecraftforge.client.model.ModelLoader$VariantLoader.loadModel(ModelLoader.java:1175) ~[ModelLoader$VariantLoader.class:?] at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:157) ~[ModelLoaderRegistry.class:?] ... 20 more i also register all other blocks with the same interface but they have a model, my slabs doesnt have one
September 27, 20196 yr Author I fixed all my slabs ist working fine now, i did a lot of mistakes also the models have whrong names and some of my coed didnt make sence. Its always helpful to look on it after a break, but i dont know i still get the air exeption and it came from the slab even if my new models in game works fine I also fixed that i registered the blocks as item oof Edited September 27, 20196 yr by Schleim_time
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.