Posted November 19, 201410 yr I have a block that changes its textures depending on the tile entity data it has. I already know how to tell it to switch textures and that is not the problem. When placed down in the world the block has the assigned default texture but when it is in your hot bar it doesn't have a texture. I have tried figuring out why it isn't assigning the texture but am stumped. [/img] Here is my code... Block Class import java.util.Random; import com.gavincraft.main.GavinCraft; import com.gavincraft.tileentity.TileEntitySemiSolidFloor; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.Entity; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.IInventory; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.server.MinecraftServer; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.IIcon; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; public class SemiSolidFloor extends BlockContainer { protected Item camoflagedItem = new Item(); protected IIcon normal; public SemiSolidFloor() { super(Material.wood); this.setStepSound(soundTypeWood); this.setBlockBounds(0F ,0F ,0F ,1F ,1F ,1F); } public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int something, float playerx, float playery, float playerz){ if (!player.isSneaking()){ TileEntitySemiSolidFloor tileEntity = (TileEntitySemiSolidFloor) world.getTileEntity(x, y, z); if (player.getCurrentEquippedItem()!=null) tileEntity.Blockid=Block.getIdFromBlock(Block.getBlockFromItem(player.getCurrentEquippedItem().getItem())); else tileEntity.Blockid=-1; world.markBlockForUpdate(x, y, z); world.notifyBlocksOfNeighborChange(x, y, z, GavinCraft.semi_solid_floor); return true; } return false; } public int tickRate(World world){ return 1; } public void registerBlockIcons(IIconRegister register) { normal = register.registerIcon("gavincraft:semisolidfloor"); } public IIcon getIcon(IBlockAccess block, int x, int y, int z, int side) { TileEntitySemiSolidFloor tileEntity = (TileEntitySemiSolidFloor) MinecraftServer.getServer().getEntityWorld().getTileEntity(x, y, z); if(tileEntity == null || tileEntity.Blockid == -1 || tileEntity.Blockid == 0){ return normal; }else{ System.out.println(tileEntity.Blockid); return Block.getBlockById(tileEntity.Blockid).getBlockTextureFromSide(side); } } public boolean isOpaqueCube(){ return false; } public TileEntity createNewTileEntity(World world, int metadata) { return new TileEntitySemiSolidFloor(); } } Main Class package com.gavincraft.main; import net.minecraft.block.Block; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import com.gavincraft.blocks.BigSpring; import com.gavincraft.blocks.CamoflageCore; import com.gavincraft.blocks.Casing; import com.gavincraft.blocks.Catapult; import com.gavincraft.blocks.Coil; import com.gavincraft.blocks.Core; import com.gavincraft.blocks.EnderShard; import com.gavincraft.blocks.OpenBook; import com.gavincraft.blocks.ReinforcedCasing; import com.gavincraft.blocks.SemiSolidFloor; import com.gavincraft.blocks.ShockAbsorber; import com.gavincraft.blocks.Spring; import com.gavincraft.blocks.TeleportCore; import com.gavincraft.creativeTabs.GavinCraftTab; import com.gavincraft.tileentity.TileEntityOpenBook; import com.gavincraft.tileentity.TileEntitySemiSolidFloor; import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.Mod.EventHandler; import cpw.mods.fml.common.Mod.Instance; import cpw.mods.fml.common.SidedProxy; import cpw.mods.fml.common.event.FMLInitializationEvent; import cpw.mods.fml.common.event.FMLPostInitializationEvent; import cpw.mods.fml.common.event.FMLPreInitializationEvent; import cpw.mods.fml.common.registry.GameRegistry; @Mod(modid = GavinCraft.MODID, version = GavinCraft.VERSION) public class GavinCraft { @Instance("GavinCraft") public static GavinCraft instance; @SidedProxy(clientSide="com.gavincraft.main.ClientProxy", serverSide="com.gavincraft.main.ServerProxy") public static ServerProxy proxy; public static CreativeTabs gavinCraftTab = new GavinCraftTab(CreativeTabs.getNextID(), "Gavin Craft"); public static final String MODID = "gavincraft"; public static final String VERSION = "0.0.0"; public static Block catapult = new Catapult(false).setCreativeTab(gavinCraftTab).setBlockName("Catapult"); public static Block active_catapult = new Catapult(true).setBlockName("Catapult"); public static Item spring = new Spring().setCreativeTab(gavinCraftTab).setUnlocalizedName("Spring").setTextureName("gavincraft:spring"); public static Item coil = new Coil().setCreativeTab(gavinCraftTab).setUnlocalizedName("Coil").setTextureName("gavincraft:coil"); public static Block casing = new Casing().setCreativeTab(gavinCraftTab).setBlockName("Casing").setBlockTextureName("gavincraft:casing"); public static Item big_spring = new BigSpring().setUnlocalizedName("Big_Spring").setCreativeTab(gavinCraftTab).setTextureName("gavincraft:big spring"); public static Block reinforced_casing = new ReinforcedCasing().setBlockName("Reinforced_Casing").setCreativeTab(gavinCraftTab).setBlockTextureName("gavincraft:reinforced casing"); public static Block shock_absorber = new ShockAbsorber().setBlockName("Shock_Absorber").setCreativeTab(gavinCraftTab).setBlockTextureName("gavincraft:shockabsorber"); public static Item teleport_core = new TeleportCore().setUnlocalizedName("Teleport_Core").setCreativeTab(gavinCraftTab).setTextureName("gavincraft:teleport core"); public static Block open_book = new OpenBook().setBlockName("Open_Book").setCreativeTab(gavinCraftTab); public static Block semi_solid_floor = new SemiSolidFloor().setBlockName("Semi-Solid_Floor").setCreativeTab(gavinCraftTab).setBlockTextureName("gavincraft:semisolidfloor"); public static Item ender_shard = new EnderShard().setUnlocalizedName("Ender_Shard").setCreativeTab(gavinCraftTab).setTextureName("gavincraft:ender shard"); public static Item core = new Core().setUnlocalizedName("Core").setCreativeTab(gavinCraftTab).setTextureName("gavincraft:core"); public static Item camoflage_core = new CamoflageCore().setUnlocalizedName("Camoflage_Core").setCreativeTab(gavinCraftTab).setTextureName("gavincraft:camoflage core"); @EventHandler public void preInit(FMLPreInitializationEvent event){ proxy.registerRenderThings(); GameRegistry.registerBlock(catapult, "catapult"); GameRegistry.registerItem(spring, "Spring"); GameRegistry.registerItem(coil, "Coil"); GameRegistry.registerBlock(casing, "Casing"); GameRegistry.registerItem(big_spring, "Big_Spring"); GameRegistry.registerBlock(reinforced_casing, "Reinforced_Casing"); GameRegistry.registerBlock(shock_absorber, "Shock_Absorber"); GameRegistry.registerItem(teleport_core, "Teleport_Core"); GameRegistry.registerBlock(open_book, "Open Book"); GameRegistry.registerBlock(semi_solid_floor, "Semi-Solid_Floor"); GameRegistry.registerTileEntity(TileEntityOpenBook.class, "Open_Book"); GameRegistry.registerBlock(active_catapult, "Active_Catapult"); GameRegistry.registerItem(ender_shard, "Ender_Shard"); GameRegistry.registerItem(core, "Core"); GameRegistry.registerItem(camoflage_core, "Camoflage_Core"); GameRegistry.addRecipe(new ItemStack(Blocks.vine), new Object[]{ "xxx", "xyx", "xxx", 'x', Items.wheat, 'y', Blocks.dirt}); GameRegistry.addRecipe(new ItemStack(GavinCraft.coil, 9), new Object[]{ "xxx", "x x", "xxx", 'x', Items.iron_ingot}); GameRegistry.addRecipe(new ItemStack(GavinCraft.spring), new Object[]{ "xxx", 'x', GavinCraft.coil}); GameRegistry.addRecipe(new ItemStack(GavinCraft.casing, 2), new Object[]{ "xxx", "xyx", "xxx", 'x', Blocks.stone, 'y', Items.iron_ingot}); GameRegistry.addRecipe(new ItemStack(GavinCraft.catapult), new Object[]{ "xxx", "yzy", "ywy", 'x', Blocks.piston, 'y', GavinCraft.casing, 'z', GavinCraft.spring, 'w', Items.redstone}); GameRegistry.addRecipe(new ItemStack(GavinCraft.big_spring, 2), new Object[]{ "xxx", "yyy", "xxx", 'x', Items.gold_ingot,'y', GavinCraft.spring}); GameRegistry.addRecipe(new ItemStack(GavinCraft.reinforced_casing, 2), new Object[]{ "yxy", "x x", "yxy", 'x', GavinCraft.casing, 'y', Blocks.obsidian}); GameRegistry.addRecipe(new ItemStack(GavinCraft.shock_absorber), new Object[]{ "xxx", "yyy", "xxx", 'x', Blocks.wool, 'y', GavinCraft.spring}); GameRegistry.addRecipe(new ItemStack(GavinCraft.teleport_core, 1), new Object[]{ "xyx", "yzy", "xyx", 'x', Items.glowstone_dust, 'y', GavinCraft.casing, 'z', GavinCraft.core}); GameRegistry.addRecipe(new ItemStack(GavinCraft.semi_solid_floor, 1), new Object[]{ "xwx", "zuz", "xyx", 'x', GavinCraft.casing, 'y', GavinCraft.teleport_core, 'z', Items.iron_ingot, 'w', GavinCraft.shock_absorber, 'u', GavinCraft.camoflage_core}); GameRegistry.addRecipe(new ItemStack(GavinCraft.ender_shard, , new Object[]{ "x", 'x', Items.ender_pearl }); GameRegistry.addRecipe(new ItemStack(GavinCraft.core, 1), new Object[]{ "xyx", "yzy", "xyx", 'x', Items.redstone, 'y', GavinCraft.ender_shard, 'z', GavinCraft.casing }); GameRegistry.addRecipe(new ItemStack(GavinCraft.camoflage_core, 1), new Object[]{ " x ", "yzw", " u ", 'x',new ItemStack(Items.dye, 1, 1), 'y', new ItemStack(Items.dye, 1, 2), 'z', GavinCraft.core, 'w', new ItemStack(Items.dye, 1, 4), 'u', new ItemStack(Items.dye, 1, 0) }); } @EventHandler public void load(FMLInitializationEvent event){ GameRegistry.registerTileEntity(com.gavincraft.tileentity.TileEntitySemiSolidFloor.class, "Semi_Solid_Floor_Tile_Entity"); GameRegistry.registerTileEntity(com.gavincraft.tileentity.TileEntityCatapult.class, "Catapult_Tile_Entity"); } @EventHandler public void postinit(FMLPostInitializationEvent event){ } }
November 19, 201410 yr Author Thank you so much. Adding the other getIcon method allowed the textures to go through but the other one was still used for the blocks in place. Can't believe that I didn't think of that before posting on the forums.
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.