Posted January 16, 20178 yr Hello, this is my first post so don't blame me if I do something wrong. My tileentity Grill renderes like an invisible cube with a name tag on it Here is my code: BlockGrill: package com.leomelonseeds.moarstuff.blocks; import javax.annotation.Nullable; import com.leomelonseeds.moarstuff.Main; import com.leomelonseeds.moarstuff.items.Moditems; import com.leomelonseeds.moarstuff.network.GUIHandlerGrill; import com.leomelonseeds.moarstuff.tileentity.Grill; import net.minecraft.block.Block; import net.minecraft.block.ITileEntityProvider; import net.minecraft.block.material.Material; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.IInventory; import net.minecraft.inventory.InventoryHelper; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumBlockRenderType; import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumHand; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; public class BlockGrill extends Block implements ITileEntityProvider { public BlockGrill(String unlocalizedName) { super(Material.ROCK); this.setUnlocalizedName("grill"); this.setCreativeTab(Moditems.moarStuff); this.isBlockContainer = true; } @Override public TileEntity createNewTileEntity(World worldIn, int meta) { return new Grill(); } @Override public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer playerIn, EnumHand hand, @Nullable ItemStack heldItem, EnumFacing side, float hitX, float hitY, float hitZ) { // Uses the gui handler registered to your mod to open the gui for the given gui id // open on the server side only (not sure why you shouldn't open client side too... vanilla doesn't, so we better not either) if (worldIn.isRemote) return true; playerIn.openGui(Main.instance, GUIHandlerGrill.getGuiID(), worldIn, pos.getX(), pos.getY(), pos.getZ()); return true; } // This is where you can do something when the block is broken. In this case drop the inventory's contents @Override public void breakBlock(World worldIn, BlockPos pos, IBlockState state) { TileEntity tileEntity = worldIn.getTileEntity(pos); if (tileEntity instanceof IInventory) { InventoryHelper.dropInventoryItems(worldIn, pos, (IInventory)tileEntity); } // Super MUST be called last because it removes the tile entity super.breakBlock(worldIn, pos, state); } public boolean eventReceived(IBlockState state, World worldIn, BlockPos pos, int id, int param) { super.eventReceived(state, worldIn, pos, id, param); TileEntity tileentity = worldIn.getTileEntity(pos); return tileentity == null ? false : tileentity.receiveClientEvent(id, param); } // used by the renderer to control lighting and visibility of other blocks. //set to false becaus is block doesn't fill the entire 1x1x1 space @Override public boolean isOpaqueCube(IBlockState iBlockState) { return false; } public EnumBlockRenderType getRenderType(IBlockState state) { return EnumBlockRenderType.ENTITYBLOCK_ANIMATED; } public boolean isFullCube(IBlockState state) { return false; } public boolean hasTileEntity(IBlockState state) { return true; } } My modtileentities: package com.leomelonseeds.moarstuff.tileentity; import net.minecraftforge.fml.common.registry.GameRegistry; public final class ModTileEntities { public static Grill grill; public static void createTileEntities() { GameRegistry.registerTileEntity(Grill.class, "grill"); grill = new Grill(); } } Also, the console keeps looking for a blockstates.json file. Why is this happening? Apparently I'm addicted to these forums and can't help but read all the posts. So if I somehow help you, please click the "Like This" button, it helps.
January 16, 20178 yr This line right here public EnumBlockRenderType getRenderType(IBlockState state) { return EnumBlockRenderType.ENTITYBLOCK_ANIMATED; } This tells the game that it doesn't have a model file, but is instead rendered using a TESR and I think the animation system? While this line will make it render based on a model file, and if you don't override the method it is already this. public EnumBlockRenderType getRenderType(IBlockState state) { return EnumBlockRenderType.MODEL; } Also instead of implementing ITileEntityProvider, just override the methods createTileEnty(World world, IBlockState state) and hasTileEntity(IBlockState state) VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect. Forge and vanilla BlockState generator.
January 17, 20178 yr Author Sorry for making it unclear, I am actually using a TESR, I copied some vanilla code from the chest. Meanwhile, I am going to try your fixes and see if they work. Thanks for the help! Apparently I'm addicted to these forums and can't help but read all the posts. So if I somehow help you, please click the "Like This" button, it helps.
January 17, 20178 yr Sorry for making it unclear, I am actually using a TESR, I copied some vanilla code from the chest. Meanwhile, I am going to try your fixes and see if they work. Thanks for the help! Something you need to do is bind it to your TileEntity. ClientRegistry.bindTileEntitySpecialRenderer(tileEntityClass, TileEntitySpecialRenderer) VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect. Forge and vanilla BlockState generator.
January 17, 20178 yr Author It still doesn't work. I have added the methods you provided and binded my TESR, with no result. Heres BlockGrill: package com.leomelonseeds.moarstuff.blocks; import javax.annotation.Nullable; import com.leomelonseeds.moarstuff.Main; import com.leomelonseeds.moarstuff.items.Moditems; import com.leomelonseeds.moarstuff.network.GUIHandlerGrill; import com.leomelonseeds.moarstuff.tileentity.Grill; import net.minecraft.block.Block; import net.minecraft.block.ITileEntityProvider; import net.minecraft.block.material.Material; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.IInventory; import net.minecraft.inventory.InventoryHelper; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumBlockRenderType; import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumHand; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; public class BlockGrill extends Block{ public BlockGrill(String unlocalizedName) { super(Material.ROCK); this.setUnlocalizedName("grill"); this.setCreativeTab(Moditems.moarStuff); this.isBlockContainer = true; } @Override public TileEntity createTileEntity(World worldIn, IBlockState state) { return new Grill(); } @Override public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer playerIn, EnumHand hand, @Nullable ItemStack heldItem, EnumFacing side, float hitX, float hitY, float hitZ) { // Uses the gui handler registered to your mod to open the gui for the given gui id // open on the server side only (not sure why you shouldn't open client side too... vanilla doesn't, so we better not either) if (worldIn.isRemote) return true; playerIn.openGui(Main.instance, GUIHandlerGrill.getGuiID(), worldIn, pos.getX(), pos.getY(), pos.getZ()); return true; } // This is where you can do something when the block is broken. In this case drop the inventory's contents @Override public void breakBlock(World worldIn, BlockPos pos, IBlockState state) { TileEntity tileEntity = worldIn.getTileEntity(pos); if (tileEntity instanceof IInventory) { InventoryHelper.dropInventoryItems(worldIn, pos, (IInventory)tileEntity); } // Super MUST be called last because it removes the tile entity super.breakBlock(worldIn, pos, state); } public boolean eventReceived(IBlockState state, World worldIn, BlockPos pos, int id, int param) { super.eventReceived(state, worldIn, pos, id, param); TileEntity tileentity = worldIn.getTileEntity(pos); return tileentity == null ? false : tileentity.receiveClientEvent(id, param); } // used by the renderer to control lighting and visibility of other blocks. //set to false becaus is block doesn't fill the entire 1x1x1 space @Override public boolean isOpaqueCube(IBlockState iBlockState) { return false; } public EnumBlockRenderType getRenderType(IBlockState state) { return EnumBlockRenderType.ENTITYBLOCK_ANIMATED; } public boolean isFullCube(IBlockState state) { return false; } public boolean hasTileEntity(IBlockState state) { return true; } Apparently I'm addicted to these forums and can't help but read all the posts. So if I somehow help you, please click the "Like This" button, it helps.
January 17, 20178 yr Show your TESR and where you bind it. VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect. Forge and vanilla BlockState generator.
January 17, 20178 yr Author Thanks for the quick reply! TESR: package com.leomelonseeds.moarstuff.client.render.blocks; import com.leomelonseeds.moarstuff.tileentity.Grill; import net.minecraft.block.Block; import net.minecraft.client.model.ModelChest; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.tileentity.TileEntityChest; import net.minecraft.util.ResourceLocation; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; @SideOnly(Side.CLIENT) public class TileGrillRenderer extends TileEntitySpecialRenderer<Grill> { private static final ResourceLocation TEXTURE_BURNING = new ResourceLocation("moarstuff:textures/entity/grill/grill_on.png"); private static final ResourceLocation TEXTURE_NORMAL = new ResourceLocation("moarstuff:textures/entity/grill/grill_off.png"); private final ModelChest simpleChest = new ModelChest(); private boolean isBurning; public void renderTileEntityAt(TileEntityChest te, double x, double y, double z, float partialTicks, int destroyStage) { System.out.println("RENDERING"); GlStateManager.enableDepth(); GlStateManager.depthFunc(515); GlStateManager.depthMask(true); int i; if (te.hasWorldObj()) { Block block = te.getBlockType(); i = te.getBlockMetadata(); } else { i = 0; } if (te.adjacentChestZNeg == null && te.adjacentChestXNeg == null) { ModelChest modelchest = null; if (te.adjacentChestXPos == null && te.adjacentChestZPos == null) { modelchest = this.simpleChest; if (destroyStage >= 0) { this.bindTexture(DESTROY_STAGES[destroyStage]); GlStateManager.matrixMode(5890); GlStateManager.pushMatrix(); GlStateManager.scale(4.0F, 4.0F, 1.0F); GlStateManager.translate(0.0625F, 0.0625F, 0.0625F); GlStateManager.matrixMode(5888); } else { this.bindTexture(TEXTURE_NORMAL); } } GlStateManager.pushMatrix(); GlStateManager.enableRescaleNormal(); if (destroyStage < 0) { GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F); } GlStateManager.translate((float)x, (float)y + 1.0F, (float)z + 1.0F); GlStateManager.scale(1.0F, -1.0F, -1.0F); GlStateManager.translate(0.5F, 0.5F, 0.5F); int j = 0; if (i == 2) { j = 180; } if (i == 3) { j = 0; } if (i == 4) { j = 90; } if (i == 5) { j = -90; } if (i == 2 && te.adjacentChestXPos != null) { GlStateManager.translate(1.0F, 0.0F, 0.0F); } if (i == 5 && te.adjacentChestZPos != null) { GlStateManager.translate(0.0F, 0.0F, -1.0F); } GlStateManager.rotate((float)j, 0.0F, 1.0F, 0.0F); GlStateManager.translate(-0.5F, -0.5F, -0.5F); float f = te.prevLidAngle + (te.lidAngle - te.prevLidAngle) * partialTicks; if (te.adjacentChestZNeg != null) { float f1 = te.adjacentChestZNeg.prevLidAngle + (te.adjacentChestZNeg.lidAngle - te.adjacentChestZNeg.prevLidAngle) * partialTicks; if (f1 > f) { f = f1; } } if (te.adjacentChestXNeg != null) { float f2 = te.adjacentChestXNeg.prevLidAngle + (te.adjacentChestXNeg.lidAngle - te.adjacentChestXNeg.prevLidAngle) * partialTicks; if (f2 > f) { f = f2; } } f = 1.0F - f; f = 1.0F - f * f * f; modelchest.chestLid.rotateAngleX = -(f * ((float)Math.PI / 2F)); modelchest.renderAll(); GlStateManager.disableRescaleNormal(); GlStateManager.popMatrix(); GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F); if (destroyStage >= 0) { GlStateManager.matrixMode(5890); GlStateManager.popMatrix(); GlStateManager.matrixMode(5888); } } } } ClientProxy: package com.leomelonseeds.moarstuff; import com.leomelonseeds.moarstuff.blocks.BlockMegaTNT; import com.leomelonseeds.moarstuff.blocks.BlockNuke; import com.leomelonseeds.moarstuff.blocks.Modblocks; import com.leomelonseeds.moarstuff.client.render.blocks.BlockRenderRegister; import com.leomelonseeds.moarstuff.client.render.blocks.TileGrillRenderer; import com.leomelonseeds.moarstuff.client.render.entity.RenderMegaTNTPrimed; import com.leomelonseeds.moarstuff.client.render.entity.RenderNukePrimed; import com.leomelonseeds.moarstuff.client.render.items.ItemRenderRegister; import com.leomelonseeds.moarstuff.entity.MegaTNTPrimed; import com.leomelonseeds.moarstuff.entity.NukePrimed; import com.leomelonseeds.moarstuff.tileentity.Grill; import net.minecraft.block.properties.IProperty; import net.minecraft.client.renderer.block.statemap.StateMap; import net.minecraftforge.client.model.ModelLoader; import net.minecraftforge.fml.client.registry.ClientRegistry; import net.minecraftforge.fml.client.registry.RenderingRegistry; import net.minecraftforge.fml.common.event.FMLInitializationEvent; import net.minecraftforge.fml.common.event.FMLPostInitializationEvent; import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; import net.minecraftforge.fml.common.registry.EntityRegistry; public class ClientProxy extends CommonProxy { @Override public void preInit(FMLPreInitializationEvent e){ super.preInit(e); ModelLoader.setCustomStateMapper(Modblocks.megatnt, (new StateMap.Builder()).ignore(new IProperty[] {BlockMegaTNT.EXPLODE}).build()); ModelLoader.setCustomStateMapper(Modblocks.nuke, (new StateMap.Builder()).ignore(new IProperty[] {BlockNuke.EXPLODE}).build()); RenderingRegistry.registerEntityRenderingHandler(NukePrimed.class, RenderNukePrimed::new); RenderingRegistry.registerEntityRenderingHandler(MegaTNTPrimed.class, RenderMegaTNTPrimed::new); } @Override public void init(FMLInitializationEvent e) { super.init(e); BlockRenderRegister.registerBlockRenderer(); ItemRenderRegister.registerItemRenderer(); EntityRegistry.registerModEntity(MegaTNTPrimed.class, "megatnt", 1, Main.instance, 160, 10, true); EntityRegistry.registerModEntity(NukePrimed.class, "nuke", 2, Main.instance, 160, 10, true); ClientRegistry.bindTileEntitySpecialRenderer(Grill.class, new TileGrillRenderer()); } @Override public void postInit(FMLPostInitializationEvent e) { super.postInit(e); } } Ignore the other stuff, just look at the init() section Apparently I'm addicted to these forums and can't help but read all the posts. So if I somehow help you, please click the "Like This" button, it helps.
January 17, 20178 yr In your TESR you need to translate to the x, y, z parameters. VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect. Forge and vanilla BlockState generator.
January 17, 20178 yr Author I will try that. The problem currently is that I put a system.println in the TESR, and it is not showing. UPDATE: I translated xyz and the problem persists Apparently I'm addicted to these forums and can't help but read all the posts. So if I somehow help you, please click the "Like This" button, it helps.
January 18, 20178 yr Author Please can someone help me. I've been working on this for weeks without success Apparently I'm addicted to these forums and can't help but read all the posts. So if I somehow help you, please click the "Like This" button, it helps.
January 18, 20178 yr When you right click does the gui open? VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect. Forge and vanilla BlockState generator.
January 18, 20178 yr Author Yes it does Apparently I'm addicted to these forums and can't help but read all the posts. So if I somehow help you, please click the "Like This" button, it helps.
January 19, 20178 yr Author Here is updated block class: package com.leomelonseeds.moarstuff.blocks; import javax.annotation.Nullable; import com.leomelonseeds.moarstuff.Main; import com.leomelonseeds.moarstuff.items.Moditems; import com.leomelonseeds.moarstuff.network.GUIHandlerGrill; import com.leomelonseeds.moarstuff.tileentity.Grill; import net.minecraft.block.Block; import net.minecraft.block.ITileEntityProvider; import net.minecraft.block.material.Material; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.IInventory; import net.minecraft.inventory.InventoryHelper; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumBlockRenderType; import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumHand; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; public class BlockGrill extends Block{ public BlockGrill(String unlocalizedName) { super(Material.ROCK); this.setUnlocalizedName("grill"); this.setCreativeTab(Moditems.moarStuff); this.isBlockContainer = true; } @Override public TileEntity createTileEntity(World worldIn, IBlockState state) { return new Grill(); } @Override public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer playerIn, EnumHand hand, @Nullable ItemStack heldItem, EnumFacing side, float hitX, float hitY, float hitZ) { if (worldIn.isRemote) return true; playerIn.openGui(Main.instance, GUIHandlerGrill.getGuiID(), worldIn, pos.getX(), pos.getY(), pos.getZ()); return true; } @Override public void breakBlock(World worldIn, BlockPos pos, IBlockState state) { TileEntity tileEntity = worldIn.getTileEntity(pos); if (tileEntity instanceof IInventory) { InventoryHelper.dropInventoryItems(worldIn, pos, (IInventory)tileEntity); } super.breakBlock(worldIn, pos, state); } public boolean eventReceived(IBlockState state, World worldIn, BlockPos pos, int id, int param) { super.eventReceived(state, worldIn, pos, id, param); TileEntity tileentity = worldIn.getTileEntity(pos); return tileentity == null ? false : tileentity.receiveClientEvent(id, param); } @Override public boolean isOpaqueCube(IBlockState iBlockState) { return false; } public EnumBlockRenderType getRenderType(IBlockState state) { return EnumBlockRenderType.ENTITYBLOCK_ANIMATED; } public boolean isFullCube(IBlockState state) { return false; } public boolean hasTileEntity(IBlockState state) { return true; } } By the way, do you register the block for the tileentity the way you normally do? Apparently I'm addicted to these forums and can't help but read all the posts. So if I somehow help you, please click the "Like This" button, it helps.
January 19, 20178 yr Put a println in your renderTileEntityAt method, if something prints then the TESR is there; and it would help a lot if you limit it down to a specific area that it fails at, if it doesn't then we have a problem. VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect. Forge and vanilla BlockState generator.
January 19, 20178 yr Author Yes I did put one there, unfortunatly its not showing. We have a problem. Apparently I'm addicted to these forums and can't help but read all the posts. So if I somehow help you, please click the "Like This" button, it helps.
January 19, 20178 yr Yes I did put one there, unfortunatly its not showing. We have a problem. Post your main mod class and Common Proxy, Client Proxy if anything has changed, as well as your GuiHandler. VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect. Forge and vanilla BlockState generator.
January 19, 20178 yr Author I used some code from MinecraftByExample bt The GrreyGhost and Bedrockminer's tutorials. CommonProxy: package com.leomelonseeds.moarstuff; import net.minecraftforge.fml.common.event.FMLInitializationEvent; import net.minecraftforge.fml.common.event.FMLPostInitializationEvent; import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; import net.minecraftforge.fml.common.network.NetworkRegistry; import com.leomelonseeds.moarstuff.blocks.Modblocks; import com.leomelonseeds.moarstuff.crafting.ModCrafting; import com.leomelonseeds.moarstuff.items.Moditems; import com.leomelonseeds.moarstuff.network.GUIHandlerGrill; import com.leomelonseeds.moarstuff.tileentity.ModTileEntities; public class CommonProxy { public void preInit(FMLPreInitializationEvent e) { Modblocks.createBlocks(); Moditems.createItems(); ModTileEntities.createTileEntities(); } public void init(FMLInitializationEvent e) { ModCrafting.initCrafting(); NetworkRegistry.INSTANCE.registerGuiHandler(Main.instance, new GUIHandlerGrill()); } public void postInit(FMLPostInitializationEvent e) { } } GuiHandler package com.leomelonseeds.moarstuff.network; import com.leomelonseeds.client.gui.GuiGrill; import com.leomelonseeds.moarstuff.guicontainer.ContainerGrill; import com.leomelonseeds.moarstuff.tileentity.Grill; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraftforge.fml.common.network.IGuiHandler; public class GUIHandlerGrill implements IGuiHandler { private static final int GUIID_GRILL = 1; public static int getGuiID() {return GUIID_GRILL;} // Gets the server side element for the given gui id this should return a container @Override public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) { if (ID != getGuiID()) { System.err.println("Invalid ID: expected " + getGuiID() + ", received " + ID); } BlockPos xyz = new BlockPos(x, y, z); TileEntity tileEntity = world.getTileEntity(xyz); if (tileEntity instanceof Grill) { Grill tileGrill = (Grill) tileEntity; return new ContainerGrill(player.inventory, tileGrill); } return null; } // Gets the client side element for the given gui id this should return a gui @Override public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) { if (ID != getGuiID()) { System.err.println("Invalid ID: expected " + getGuiID() + ", received " + ID); } BlockPos xyz = new BlockPos(x, y, z); TileEntity tileEntity = world.getTileEntity(xyz); if (tileEntity instanceof Grill) { Grill tileGrill = (Grill) tileEntity; return new GuiGrill(player.inventory, tileGrill); } return null; } } If by the main class you mean the place where you register blocks, here it is: package com.leomelonseeds.moarstuff.blocks; import net.minecraft.block.Block; import net.minecraft.item.ItemBlock; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.fml.common.registry.GameRegistry; public final class Modblocks { public static Block enderpearlBlock; public static Block lavaLamp; public static Block nuke; public static Block megatnt; public static BlockGrill grill; public static void createBlocks() { GameRegistry.registerBlock(lavaLamp = new LavaLamp("lava_lamp"), "lava_lamp"); GameRegistry.registerBlock(enderpearlBlock = new BasicBlock("ender_pearl_block"), "ender_pearl_block"); GameRegistry.registerBlock(nuke = new BlockNuke("nuke"), "nuke"); GameRegistry.registerBlock(megatnt = new BlockMegaTNT("megatnt"), "megatnt"); GameRegistry.registerBlock(grill = new BlockGrill("grill"), "grill"); } } Sorry for using deprecated version, the new one is complicated and I need to learn on it. Apparently I'm addicted to these forums and can't help but read all the posts. So if I somehow help you, please click the "Like This" button, it helps.
January 19, 20178 yr First the new version is easy. GameRegistry.register(block/item/enchantment/etc) as long as they have their registry name set. And I did not mean the class where you register and initialize blocks, but your class that has the @Mod annotation. VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect. Forge and vanilla BlockState generator.
January 19, 20178 yr Author Ok well. Main class: package com.leomelonseeds.moarstuff; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod.EventHandler; import net.minecraftforge.fml.common.Mod.Instance; import net.minecraftforge.fml.common.SidedProxy; import net.minecraftforge.fml.common.event.FMLInitializationEvent; import net.minecraftforge.fml.common.event.FMLPostInitializationEvent; import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; @Mod(modid = Main.MODID, name = Main.MODNAME, version = Main.VERSION) public class Main { public static final String MODID = "moarstuff"; public static final String MODNAME = "Moar Stuff"; public static final String VERSION = "1.0.0"; @Instance public static Main instance = new Main(); @SidedProxy(clientSide="com.leomelonseeds.moarstuff.ClientProxy", serverSide="com.leomelonseeds.moarstuff.ServerProxy") public static CommonProxy proxy; @EventHandler public void preInit(FMLPreInitializationEvent e) { this.proxy.preInit(e); } @EventHandler public void init(FMLInitializationEvent e) { this.proxy.init(e); } @EventHandler public void postInit(FMLPostInitializationEvent e) { this.proxy.postInit(e); } } Apparently I'm addicted to these forums and can't help but read all the posts. So if I somehow help you, please click the "Like This" button, it helps.
January 19, 20178 yr Show your ModTileEntities class. VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect. Forge and vanilla BlockState generator.
January 19, 20178 yr Author It was posted in the first post Apparently I'm addicted to these forums and can't help but read all the posts. So if I somehow help you, please click the "Like This" button, it helps.
January 19, 20178 yr Author Oh, and by the way, I'm using an edited version of the chest texture, eg the spread out one, does that have any effect on my Grill..? Apparently I'm addicted to these forums and can't help but read all the posts. So if I somehow help you, please click the "Like This" button, it helps.
January 19, 20178 yr Oh, and by the way, I'm using an edited version of the chest texture, eg the spread out one, does that have any effect on my Grill..? As long as you kept the same texture layout. VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect. Forge and vanilla BlockState generator.
January 19, 20178 yr Author *facepalm* Why am I so stupid. Big thanks to you both for helping! Apparently I'm addicted to these forums and can't help but read all the posts. So if I somehow help you, please click the "Like This" button, it helps.
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.