I've been looking for setting up blocks with textures (tried a few "fixes" here and there but none of them worked so i just deleted them.)
Anyway the texture I'm looking for only loads when I place the block.
(Also note there's two types of the block. The item carbonTorch, and the block carbonTorch. The item is throwable, and if it hits a block spawns the block. That is the only way the block can be placed for now, until I add in the item right clicking too anyway).
(Also yes some of my code may be inefficient i'll clean that up later I just want this texture to work )
Code below:
Main Class:
import java.util.Map;
import com.rev.entity.CarbonTorchEntity;
import com.rev.item.block.CarbonTubeBlockTorch;
import com.rev.item.block.CarbonTubeItemTorch;
import com.rev.items.tools.*;
import com.rev.render.RenderBase;
import cpw.mods.fml.client.registry.RenderingRegistry;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.EventHandler;
import cpw.mods.fml.common.SidedProxy;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.common.registry.EntityRegistry;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.common.registry.LanguageRegistry;
import net.minecraft.block.Block;
import net.minecraft.block.material.MapColor;
import net.minecraft.block.material.Material;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.init.Items;
import net.minecraft.item.Item;
import net.minecraft.item.Item.ToolMaterial;
import net.minecraftforge.common.util.EnumHelper;
@Mod(modid = "carbontubes", version = "1.0")
public class CarbonTubes
{
@SidedProxy(clientSide = "com.rev.render.TorchClient", serverSide = "com.rev.render.RenderBase")
public static RenderBase proxy;
static ToolMaterial carbonPick = EnumHelper.addToolMaterial("CARBON", 69, 2000, 12F, 2000, 0);
static ToolMaterial carbonShov = EnumHelper.addToolMaterial("CARBON", 69, 2000, 12F, 1500, 0);
static ToolMaterial carbonA = EnumHelper.addToolMaterial("CARBON", 69, 2000, 12F, 3000, 0);
static ToolMaterial carbonH = EnumHelper.addToolMaterial("CARBON", 69, 2000, 12F, 1000, 0);
static ToolMaterial carbonSw = EnumHelper.addToolMaterial("CARBON", 69, 2000, 12F, 5000, 0);
public static CreativeTabs carbonTools;
public static final Item carbonShovel = (new CarbonTubeItemSpade(carbonShov)).setMaxStackSize(1).setUnlocalizedName("carbonSpade").setTextureName("carbontubes:carbonShovel");
public static final Item carbonPickaxe = (new CarbonTubeItemPick(carbonPick)).setMaxStackSize(1).setUnlocalizedName("carbonPick").setTextureName("carbontubes:carbonPick");
public static final Item carbonAxe = (new CarbonTubeItemAxe(carbonA)).setMaxStackSize(1).setUnlocalizedName("carbonAxe").setTextureName("carbontubes:carbonAxe");
public static final Item carbonHoe = (new CarbonTubeItemHoe(carbonH)).setMaxStackSize(1).setUnlocalizedName("carbonHoe").setTextureName("carbontubes:carbonHoe");
public static final Item carbonSword = (new CarbonTubeItemSword(carbonSw)).setMaxStackSize(1).setUnlocalizedName("carbonSword").setTextureName("carbontubes:carbonSword");
public static final Item carbonITorch = (new CarbonTubeItemTorch()).setMaxStackSize(16).setUnlocalizedName("carbonTorch").setTextureName("carbontubes:carbonTorch");
public static final Block carbonTorch = (new CarbonTubeBlockTorch(Material.redstoneLight)).setBlockName("CarbonTorch").setLightLevel(100.0F).setBlockTextureName("carbontubes:carbonTorch");;
@EventHandler
public void preInit(FMLPreInitializationEvent event) {
}
@EventHandler
public void Init(FMLInitializationEvent event){
registerGame();
registerEntity();
carbonTools = new CreativeTabs("Carbon Tools")
{
public Item getTabIconItem()
{
return carbonShovel;
}
};
carbonShovel.setCreativeTab(carbonTools);
carbonPickaxe.setCreativeTab(carbonTools);
carbonAxe.setCreativeTab(carbonTools);
carbonHoe.setCreativeTab(carbonTools);
carbonSword.setCreativeTab(carbonTools);
carbonITorch.setCreativeTab(carbonTools);
registerLanguage();
proxy.registerRenderThings();
proxy.registerSounds();
}
public void registerLanguage() {
LanguageRegistry.addName(carbonShovel, "Carbon Shovel");
LanguageRegistry.addName(carbonPickaxe, "Carbon Pickaxe");
LanguageRegistry.addName(carbonAxe, "Carbon Axe");
LanguageRegistry.addName(carbonHoe, "Carbon Hoe");
LanguageRegistry.addName(carbonSword, "Carbon Sword");
LanguageRegistry.addName(carbonITorch, "Carbon Torch");
LanguageRegistry.addName(carbonTorch, "Carbon Torch");
LanguageRegistry.instance().addStringLocalization("itemGroup.Carbon Tools", "en_US", "Carbon Tools");
}
public void registerGame() {
GameRegistry.registerItem(carbonShovel, "Carbon Shovel");
GameRegistry.registerItem(carbonPickaxe, "Carbon Pickaxe");
GameRegistry.registerItem(carbonAxe, "Carbon Axe");
GameRegistry.registerItem(carbonHoe, "Carbon Hoe");
GameRegistry.registerItem(carbonSword, "Carbon Sword");
GameRegistry.registerItem(carbonITorch, "Carbon Torch");
GameRegistry.registerBlock(carbonTorch, "Carbon Torch");
}
public void registerEntity() {
EntityRegistry.registerModEntity(CarbonTorchEntity.class, "Carbon Torch", 4, this, 80, 3, true);
}
}
Block Class:
import net.minecraft.block.Block;
import net.minecraft.block.BlockTorch;
import java.util.Random;
import javax.swing.Icon;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.init.Blocks;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.IIcon;
import net.minecraft.util.MovingObjectPosition;
import net.minecraft.util.Vec3;
import net.minecraft.world.World;
public class CarbonTubeBlockTorch extends Block {
@SideOnly(Side.CLIENT)
protected IIcon blockIcon;
public CarbonTubeBlockTorch(Material p_i45394_1_) {
super(p_i45394_1_);
}
public AxisAlignedBB getCollisionBoundingBoxFromPool(World p_149668_1_, int p_149668_2_, int p_149668_3_, int p_149668_4_)
{
return null;
}
public boolean isOpaqueCube()
{
return false;
}
public boolean renderAsNormalBlock()
{
return false;
}
/**
* The type of render function that is called for this block
*/
public int getRenderType()
{
return 1;
}
private boolean func_150107_m(World p_150107_1_, int p_150107_2_, int p_150107_3_, int p_150107_4_)
{
if (World.doesBlockHaveSolidTopSurface(p_150107_1_, p_150107_2_, p_150107_3_, p_150107_4_))
{
return true;
}
else
{
Block var5 = p_150107_1_.getBlock(p_150107_2_, p_150107_3_, p_150107_4_);
return var5 == Blocks.fence || var5 == Blocks.nether_brick_fence || var5 == Blocks.glass || var5 == Blocks.cobblestone_wall;
}
}
public boolean canPlaceBlockAt(World p_149742_1_, int p_149742_2_, int p_149742_3_, int p_149742_4_)
{
return p_149742_1_.isBlockNormalCubeDefault(p_149742_2_ - 1, p_149742_3_, p_149742_4_, true) ? true : (p_149742_1_.isBlockNormalCubeDefault(p_149742_2_ + 1, p_149742_3_, p_149742_4_, true) ? true : (p_149742_1_.isBlockNormalCubeDefault(p_149742_2_, p_149742_3_, p_149742_4_ - 1, true) ? true : (p_149742_1_.isBlockNormalCubeDefault(p_149742_2_, p_149742_3_, p_149742_4_ + 1, true) ? true : this.func_150107_m(p_149742_1_, p_149742_2_, p_149742_3_ - 1, p_149742_4_))));
}
public int onBlockPlaced(World p_149660_1_, int p_149660_2_, int p_149660_3_, int p_149660_4_, int p_149660_5_, float p_149660_6_, float p_149660_7_, float p_149660_8_, int p_149660_9_)
{
int var10 = p_149660_9_;
if (p_149660_5_ == 1 && this.func_150107_m(p_149660_1_, p_149660_2_, p_149660_3_ - 1, p_149660_4_))
{
var10 = 5;
}
if (p_149660_5_ == 2 && p_149660_1_.isBlockNormalCubeDefault(p_149660_2_, p_149660_3_, p_149660_4_ + 1, true))
{
var10 = 4;
}
if (p_149660_5_ == 3 && p_149660_1_.isBlockNormalCubeDefault(p_149660_2_, p_149660_3_, p_149660_4_ - 1, true))
{
var10 = 3;
}
if (p_149660_5_ == 4 && p_149660_1_.isBlockNormalCubeDefault(p_149660_2_ + 1, p_149660_3_, p_149660_4_, true))
{
var10 = 2;
}
if (p_149660_5_ == 5 && p_149660_1_.isBlockNormalCubeDefault(p_149660_2_ - 1, p_149660_3_, p_149660_4_, true))
{
var10 = 1;
}
return var10;
}
/**
* Ticks the block if it's been scheduled
*/
public void updateTick(World p_149674_1_, int p_149674_2_, int p_149674_3_, int p_149674_4_, Random p_149674_5_)
{
super.updateTick(p_149674_1_, p_149674_2_, p_149674_3_, p_149674_4_, p_149674_5_);
if (p_149674_1_.getBlockMetadata(p_149674_2_, p_149674_3_, p_149674_4_) == 0)
{
this.onBlockAdded(p_149674_1_, p_149674_2_, p_149674_3_, p_149674_4_);
}
}
public void onBlockAdded(World p_149726_1_, int p_149726_2_, int p_149726_3_, int p_149726_4_)
{
if (p_149726_1_.getBlockMetadata(p_149726_2_, p_149726_3_, p_149726_4_) == 0)
{
if (p_149726_1_.isBlockNormalCubeDefault(p_149726_2_ - 1, p_149726_3_, p_149726_4_, true))
{
p_149726_1_.setBlockMetadataWithNotify(p_149726_2_, p_149726_3_, p_149726_4_, 1, 2);
}
else if (p_149726_1_.isBlockNormalCubeDefault(p_149726_2_ + 1, p_149726_3_, p_149726_4_, true))
{
p_149726_1_.setBlockMetadataWithNotify(p_149726_2_, p_149726_3_, p_149726_4_, 2, 2);
}
else if (p_149726_1_.isBlockNormalCubeDefault(p_149726_2_, p_149726_3_, p_149726_4_ - 1, true))
{
p_149726_1_.setBlockMetadataWithNotify(p_149726_2_, p_149726_3_, p_149726_4_, 3, 2);
}
else if (p_149726_1_.isBlockNormalCubeDefault(p_149726_2_, p_149726_3_, p_149726_4_ + 1, true))
{
p_149726_1_.setBlockMetadataWithNotify(p_149726_2_, p_149726_3_, p_149726_4_, 4, 2);
}
else if (this.func_150107_m(p_149726_1_, p_149726_2_, p_149726_3_ - 1, p_149726_4_))
{
p_149726_1_.setBlockMetadataWithNotify(p_149726_2_, p_149726_3_, p_149726_4_, 5, 2);
}
}
this.func_150109_e(p_149726_1_, p_149726_2_, p_149726_3_, p_149726_4_);
}
public void onNeighborBlockChange(World p_149695_1_, int p_149695_2_, int p_149695_3_, int p_149695_4_, Block p_149695_5_)
{
this.func_150108_b(p_149695_1_, p_149695_2_, p_149695_3_, p_149695_4_, p_149695_5_);
}
protected boolean func_150108_b(World p_150108_1_, int p_150108_2_, int p_150108_3_, int p_150108_4_, Block p_150108_5_)
{
if (this.func_150109_e(p_150108_1_, p_150108_2_, p_150108_3_, p_150108_4_))
{
int var6 = p_150108_1_.getBlockMetadata(p_150108_2_, p_150108_3_, p_150108_4_);
boolean var7 = false;
if (!p_150108_1_.isBlockNormalCubeDefault(p_150108_2_ - 1, p_150108_3_, p_150108_4_, true) && var6 == 1)
{
var7 = true;
}
if (!p_150108_1_.isBlockNormalCubeDefault(p_150108_2_ + 1, p_150108_3_, p_150108_4_, true) && var6 == 2)
{
var7 = true;
}
if (!p_150108_1_.isBlockNormalCubeDefault(p_150108_2_, p_150108_3_, p_150108_4_ - 1, true) && var6 == 3)
{
var7 = true;
}
if (!p_150108_1_.isBlockNormalCubeDefault(p_150108_2_, p_150108_3_, p_150108_4_ + 1, true) && var6 == 4)
{
var7 = true;
}
if (!this.func_150107_m(p_150108_1_, p_150108_2_, p_150108_3_ - 1, p_150108_4_) && var6 == 5)
{
var7 = true;
}
if (var7)
{
this.dropBlockAsItem(p_150108_1_, p_150108_2_, p_150108_3_, p_150108_4_, p_150108_1_.getBlockMetadata(p_150108_2_, p_150108_3_, p_150108_4_), 0);
p_150108_1_.setBlockToAir(p_150108_2_, p_150108_3_, p_150108_4_);
return true;
}
else
{
return false;
}
}
else
{
return true;
}
}
protected boolean func_150109_e(World p_150109_1_, int p_150109_2_, int p_150109_3_, int p_150109_4_)
{
if (!this.canPlaceBlockAt(p_150109_1_, p_150109_2_, p_150109_3_, p_150109_4_))
{
if (p_150109_1_.getBlock(p_150109_2_, p_150109_3_, p_150109_4_) == this)
{
this.dropBlockAsItem(p_150109_1_, p_150109_2_, p_150109_3_, p_150109_4_, p_150109_1_.getBlockMetadata(p_150109_2_, p_150109_3_, p_150109_4_), 0);
p_150109_1_.setBlockToAir(p_150109_2_, p_150109_3_, p_150109_4_);
}
return false;
}
else
{
return true;
}
}
public MovingObjectPosition collisionRayTrace(World p_149731_1_, int p_149731_2_, int p_149731_3_, int p_149731_4_, Vec3 p_149731_5_, Vec3 p_149731_6_)
{
int var7 = p_149731_1_.getBlockMetadata(p_149731_2_, p_149731_3_, p_149731_4_) & 7;
float var8 = 0.15F;
if (var7 == 1)
{
this.setBlockBounds(0.0F, 0.2F, 0.5F - var8, var8 * 2.0F, 0.8F, 0.5F + var8);
}
else if (var7 == 2)
{
this.setBlockBounds(1.0F - var8 * 2.0F, 0.2F, 0.5F - var8, 1.0F, 0.8F, 0.5F + var8);
}
else if (var7 == 3)
{
this.setBlockBounds(0.5F - var8, 0.2F, 0.0F, 0.5F + var8, 0.8F, var8 * 2.0F);
}
else if (var7 == 4)
{
this.setBlockBounds(0.5F - var8, 0.2F, 1.0F - var8 * 2.0F, 0.5F + var8, 0.8F, 1.0F);
}
else
{
var8 = 0.1F;
this.setBlockBounds(0.5F - var8, 0.0F, 0.5F - var8, 0.5F + var8, 0.6F, 0.5F + var8);
}
return super.collisionRayTrace(p_149731_1_, p_149731_2_, p_149731_3_, p_149731_4_, p_149731_5_, p_149731_6_);
}
/**
* A randomly called display update to be able to add particles or other items for display
*/
public void randomDisplayTick(World p_149734_1_, int p_149734_2_, int p_149734_3_, int p_149734_4_, Random p_149734_5_)
{
int var6 = p_149734_1_.getBlockMetadata(p_149734_2_, p_149734_3_, p_149734_4_);
double var7 = (double)((float)p_149734_2_ + 0.5F);
double var9 = (double)((float)p_149734_3_ + 0.7F);
double var11 = (double)((float)p_149734_4_ + 0.5F);
double var13 = 0.2199999988079071D;
double var15 = 0.27000001072883606D;
if (var6 == 1)
{
p_149734_1_.spawnParticle("smoke", var7 - var15, var9 + var13, var11, 0.0D, 0.0D, 0.0D);
p_149734_1_.spawnParticle("flame", var7 - var15, var9 + var13, var11, 0.0D, 0.0D, 0.0D);
}
else if (var6 == 2)
{
p_149734_1_.spawnParticle("smoke", var7 + var15, var9 + var13, var11, 0.0D, 0.0D, 0.0D);
p_149734_1_.spawnParticle("flame", var7 + var15, var9 + var13, var11, 0.0D, 0.0D, 0.0D);
}
else if (var6 == 3)
{
p_149734_1_.spawnParticle("smoke", var7, var9 + var13, var11 - var15, 0.0D, 0.0D, 0.0D);
p_149734_1_.spawnParticle("flame", var7, var9 + var13, var11 - var15, 0.0D, 0.0D, 0.0D);
}
else if (var6 == 4)
{
p_149734_1_.spawnParticle("smoke", var7, var9 + var13, var11 + var15, 0.0D, 0.0D, 0.0D);
p_149734_1_.spawnParticle("flame", var7, var9 + var13, var11 + var15, 0.0D, 0.0D, 0.0D);
}
else
{
p_149734_1_.spawnParticle("smoke", var7, var9, var11, 0.0D, 0.0D, 0.0D);
p_149734_1_.spawnParticle("flame", var7, var9, var11, 0.0D, 0.0D, 0.0D);
}
}
}
The texture is in my : carbontubes/textures/blocks/carbonTorch.png