Posted October 8, 20186 yr I've been trying to make a custom tnt mod as my frist mod and I reached a deadend. I can't seem to get the entity's textures right. Whenever I ignite the TNT it switches from the texture I set to a blinking white texture. ExplosiveBlock class: Spoiler package com.cosmickvothe.dankmod.blocks; import com.cosmickvothe.dankmod.entity.EntityExplosive; import net.minecraft.block.Block; import net.minecraft.block.ITileEntityProvider; import net.minecraft.block.SoundType; import net.minecraft.block.material.Material; import net.minecraft.block.properties.IProperty; import net.minecraft.block.properties.PropertyBool; import net.minecraft.block.state.BlockStateContainer; import net.minecraft.block.state.IBlockState; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.projectile.EntityArrow; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.init.SoundEvents; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumHand; import net.minecraft.util.SoundCategory; import net.minecraft.util.math.BlockPos; import net.minecraft.world.Explosion; import net.minecraft.world.World; public class ExplosiveBlock extends BlockBase{ public static final PropertyBool EXPLODE = PropertyBool.create("explode"); public ExplosiveBlock(String name, Material material) { super(name, material); setDefaultState(this.blockState.getBaseState().withProperty(EXPLODE, Boolean.valueOf(false))); this.setCreativeTab(CreativeTabs.REDSTONE); } public void onBlockAdded(World worldIn, BlockPos pos, IBlockState state) { super.onBlockAdded(worldIn, pos, state); if (worldIn.isBlockPowered(pos)) { this.onBlockDestroyedByPlayer(worldIn, pos, state.withProperty(EXPLODE, Boolean.valueOf(true))); worldIn.setBlockToAir(pos); } } /** * Called when a neighboring block was changed and marks that this state should perform any checks during a neighbor * change. Cases may include when redstone power is updated, cactus blocks popping off due to a neighboring solid * block, etc. */ public void neighborChanged(IBlockState state, World worldIn, BlockPos pos, Block blockIn, BlockPos fromPos) { if (worldIn.isBlockPowered(pos)) { this.onBlockDestroyedByPlayer(worldIn, pos, state.withProperty(EXPLODE, Boolean.valueOf(true))); worldIn.setBlockToAir(pos); } } /** * Called when this Block is destroyed by an Explosion */ public void onBlockDestroyedByExplosion(World worldIn, BlockPos pos, Explosion explosionIn) { if (!worldIn.isRemote) { EntityExplosive entityexplosive = new EntityExplosive(worldIn, (double)((float)pos.getX() + 0.5F), (double)pos.getY(), (double)((float)pos.getZ() + 0.5F), explosionIn.getExplosivePlacedBy()); entityexplosive.setFuse((short)(worldIn.rand.nextInt(entityexplosive.getFuse() / 4) + entityexplosive.getFuse() / 8)); worldIn.spawnEntity(entityexplosive); } } /** * Called after a player destroys this Block - the posiiton pos may no longer hold the state indicated. */ public void onBlockDestroyedByPlayer(World worldIn, BlockPos pos, IBlockState state) { this.explode(worldIn, pos, state, (EntityLivingBase)null); } public void explode(World worldIn, BlockPos pos, IBlockState state, EntityLivingBase igniter) { if (!worldIn.isRemote) { if (((Boolean)state.getValue(EXPLODE)).booleanValue()) { EntityExplosive entityexplosive = new EntityExplosive(worldIn, (double)((float)pos.getX() + 0.5F), (double)pos.getY(), (double)((float)pos.getZ() + 0.5F), igniter); worldIn.spawnEntity(entityexplosive); worldIn.playSound((EntityPlayer)null, entityexplosive.posX, entityexplosive.posY, entityexplosive.posZ, SoundEvents.ENTITY_TNT_PRIMED, SoundCategory.BLOCKS, 1.0F, 1.0F); } } } /** * Called when the block is right clicked by a player. */ public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer playerIn, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ) { ItemStack itemstack = playerIn.getHeldItem(hand); if (!itemstack.isEmpty() && (itemstack.getItem() == Items.FLINT_AND_STEEL || itemstack.getItem() == Items.FIRE_CHARGE)) { this.explode(worldIn, pos, state.withProperty(EXPLODE, Boolean.valueOf(true)), playerIn); worldIn.setBlockState(pos, Blocks.AIR.getDefaultState(), 11); if (itemstack.getItem() == Items.FLINT_AND_STEEL) { itemstack.damageItem(1, playerIn); } else if (!playerIn.capabilities.isCreativeMode) { itemstack.shrink(1); } return true; } else { return super.onBlockActivated(worldIn, pos, state, playerIn, hand, facing, hitX, hitY, hitZ); } } /** * Called When an Entity Collided with the Block */ public void onEntityCollidedWithBlock(World worldIn, BlockPos pos, IBlockState state, Entity entityIn) { if (!worldIn.isRemote && entityIn instanceof EntityArrow) { EntityArrow entityarrow = (EntityArrow)entityIn; if (entityarrow.isBurning()) { this.explode(worldIn, pos, worldIn.getBlockState(pos).withProperty(EXPLODE, Boolean.valueOf(true)), entityarrow.shootingEntity instanceof EntityLivingBase ? (EntityLivingBase)entityarrow.shootingEntity : null); worldIn.setBlockToAir(pos); } } } /** * Return whether this block can drop from an explosion. */ public boolean canDropFromExplosion(Explosion explosionIn) { return false; } /** * Convert the given metadata into a BlockState for this Block */ public IBlockState getStateFromMeta(int meta) { return this.getDefaultState().withProperty(EXPLODE, Boolean.valueOf((meta & 1) > 0)); } /** * Convert the BlockState into the correct metadata value */ public int getMetaFromState(IBlockState state) { return ((Boolean)state.getValue(EXPLODE)).booleanValue() ? 1 : 0; } protected BlockStateContainer createBlockState() { return new BlockStateContainer(this, new IProperty[] {EXPLODE}); } } EntityExplosive class: Spoiler package com.cosmickvothe.dankmod.entity; import javax.annotation.Nullable; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityAgeable; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.MoverType; import net.minecraft.entity.item.EntityTNTPrimed; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.network.datasync.DataParameter; import net.minecraft.network.datasync.DataSerializers; import net.minecraft.network.datasync.EntityDataManager; import net.minecraft.util.EnumParticleTypes; import net.minecraft.world.World; public class EntityExplosive extends Entity{ private static final DataParameter<Integer> FUSE = EntityDataManager.<Integer>createKey(EntityTNTPrimed.class, DataSerializers.VARINT); @Nullable private EntityLivingBase tntPlacedBy; /** How long the fuse is */ private int fuse; public EntityExplosive(World worldIn) { super(worldIn); this.fuse = 80; this.preventEntitySpawning = true; this.isImmuneToFire = true; this.setSize(0.98F, 0.98F); } public EntityExplosive(World worldIn, double x, double y, double z, EntityLivingBase igniter) { this(worldIn); this.setPosition(x, y, z); float f = (float)(Math.random() * (Math.PI * 2D)); this.motionX = (double)(-((float)Math.sin((double)f)) * 0.02F); this.motionY = 0.20000000298023224D; this.motionZ = (double)(-((float)Math.cos((double)f)) * 0.02F); this.setFuse(80); this.prevPosX = x; this.prevPosY = y; this.prevPosZ = z; this.tntPlacedBy = igniter; } protected void entityInit() { this.dataManager.register(FUSE, Integer.valueOf(80)); } /** * returns if this entity triggers Block.onEntityWalking on the blocks they walk on. used for spiders and wolves to * prevent them from trampling crops */ protected boolean canTriggerWalking() { return false; } /** * Returns true if other Entities should be prevented from moving through this Entity. */ public boolean canBeCollidedWith() { return !this.isDead; } /** * Called to update the entity's position/logic. */ public void onUpdate() { this.prevPosX = this.posX; this.prevPosY = this.posY; this.prevPosZ = this.posZ; if (!this.hasNoGravity()) { this.motionY -= 0.03999999910593033D; } this.move(MoverType.SELF, this.motionX, this.motionY, this.motionZ); this.motionX *= 0.9800000190734863D; this.motionY *= 0.9800000190734863D; this.motionZ *= 0.9800000190734863D; if (this.onGround) { this.motionX *= 0.699999988079071D; this.motionZ *= 0.699999988079071D; this.motionY *= -0.5D; } --this.fuse; if (this.fuse <= 0) { this.setDead(); if (!this.world.isRemote) { this.explode(); } } else { this.handleWaterMovement(); this.world.spawnParticle(EnumParticleTypes.SMOKE_NORMAL, this.posX, this.posY + 0.5D, this.posZ, 0.0D, 0.0D, 0.0D); } } private void explode() { float f = 4.0F; this.world.createExplosion(this, this.posX, this.posY + (double)(this.height / 16.0F), this.posZ, 4.0F, true); } /** * (abstract) Protected helper method to write subclass entity data to NBT. */ protected void writeEntityToNBT(NBTTagCompound compound) { compound.setShort("ExplosiveBlockFuse", (short)this.getFuse()); } /** * (abstract) Protected helper method to read subclass entity data from NBT. */ protected void readEntityFromNBT(NBTTagCompound compound) { this.setFuse(compound.getShort("ExplosiveBlockFuse")); } /** * returns null or the entityliving it was placed or ignited by */ @Nullable public EntityLivingBase getTntPlacedBy() { return this.tntPlacedBy; } public float getEyeHeight() { return 0.0F; } public void setFuse(int fuseIn) { this.dataManager.set(FUSE, Integer.valueOf(fuseIn)); this.fuse = fuseIn; } public void notifyDataManagerChange(DataParameter<?> key) { if (FUSE.equals(key)) { this.fuse = this.getFuseDataManager(); } } /** * Gets the fuse from the data manager */ public int getFuseDataManager() { return ((Integer)this.dataManager.get(FUSE)).intValue(); } public int getFuse() { return this.fuse; } } RenderExplosiveBlock class: Spoiler package com.cosmickvothe.dankmod.entity.render; import com.cosmickvothe.dankmod.entity.EntityExplosive; import com.cosmickvothe.dankmod.util.Reference; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.BlockRendererDispatcher; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.entity.Render; import net.minecraft.client.renderer.entity.RenderLiving; import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.client.renderer.entity.RenderTNTPrimed; import net.minecraft.entity.item.EntityTNTPrimed; import net.minecraft.init.Blocks; import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.MathHelper; public class RenderExplosiveBlock extends Render<EntityExplosive>{ public static final ResourceLocation TEXTURES = new ResourceLocation(Reference.MOD_ID + ":textures/entity/dankjess_explosiveblock.png"); public RenderExplosiveBlock(RenderManager renderManagerIn) { super(renderManagerIn); this.shadowSize = 0.5F; } /** * Renders the desired {@code T} type Entity. */ public void doRender(EntityExplosive entity, double x, double y, double z, float entityYaw, float partialTicks) { BlockRendererDispatcher blockrendererdispatcher = Minecraft.getMinecraft().getBlockRendererDispatcher(); GlStateManager.pushMatrix(); GlStateManager.translate((float)x, (float)y + 0.5F, (float)z); if ((float)entity.getFuse() - partialTicks + 1.0F < 10.0F) { float f = 1.0F - ((float)entity.getFuse() - partialTicks + 1.0F) / 10.0F; f = MathHelper.clamp(f, 0.0F, 1.0F); f = f * f; f = f * f; float f1 = 1.0F + f * 0.3F; GlStateManager.scale(f1, f1, f1); } float f2 = (1.0F - ((float)entity.getFuse() - partialTicks + 1.0F) / 100.0F) * 0.8F; this.bindEntityTexture(entity); GlStateManager.rotate(-90.0F, 0.0F, 1.0F, 0.0F); GlStateManager.translate(-0.5F, -0.5F, 0.5F); blockrendererdispatcher.renderBlockBrightness(Blocks.TNT.getDefaultState(), entity.getBrightness()); GlStateManager.translate(0.0F, 0.0F, 1.0F); if (this.renderOutlines) { GlStateManager.enableColorMaterial(); GlStateManager.enableOutlineMode(this.getTeamColor(entity)); blockrendererdispatcher.renderBlockBrightness(Blocks.TNT.getDefaultState(), 1.0F); GlStateManager.disableOutlineMode(); GlStateManager.disableColorMaterial(); } else if (entity.getFuse() / 5 % 2 == 0) { GlStateManager.disableTexture2D(); GlStateManager.disableLighting(); GlStateManager.enableBlend(); GlStateManager.blendFunc(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.DST_ALPHA); GlStateManager.color(1.0F, 1.0F, 1.0F, f2); GlStateManager.doPolygonOffset(-3.0F, -3.0F); GlStateManager.enablePolygonOffset(); blockrendererdispatcher.renderBlockBrightness(Blocks.TNT.getDefaultState(), 1.0F); GlStateManager.doPolygonOffset(0.0F, 0.0F); GlStateManager.disablePolygonOffset(); GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F); GlStateManager.disableBlend(); GlStateManager.enableLighting(); GlStateManager.enableTexture2D(); } GlStateManager.popMatrix(); super.doRender(entity, x, y, z, entityYaw, partialTicks); } protected ResourceLocation getEntityTexture(EntityExplosive entity) { // TODO Auto-generated method stub return TEXTURES; } } EntityInit class: Spoiler package com.cosmickvothe.dankmod.init; import com.cosmickvothe.dankmod.Main; import com.cosmickvothe.dankmod.entity.EntityExplosive; import com.cosmickvothe.dankmod.util.Reference; import net.minecraft.entity.Entity; import net.minecraft.util.ResourceLocation; import net.minecraftforge.fml.common.registry.EntityRegistry; public class EntityInit { public static void registerEntities() { registerEntity("entityexplosive", EntityExplosive.class, Reference.ENTITY_EXPLOSIVE, 50); } private static void registerEntity(String name, Class<? extends Entity> entity, int id, int range) { EntityRegistry.registerModEntity(new ResourceLocation(Reference.MOD_ID + ":" + name), entity, name, id, Main.instance, range, 1, true); } } RegistryHandler class: Spoiler package com.cosmickvothe.dankmod.util.handlers; import com.cosmickvothe.dankmod.init.EntityInit; import com.cosmickvothe.dankmod.init.IHasModel; import com.cosmickvothe.dankmod.init.ModBlocks; import com.cosmickvothe.dankmod.init.ModItems; import net.minecraft.block.Block; import net.minecraft.item.Item; import net.minecraftforge.client.event.ModelRegistryEvent; import net.minecraftforge.event.RegistryEvent; import net.minecraftforge.fml.common.Mod.EventBusSubscriber; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; @EventBusSubscriber public class RegistryHandler { @SubscribeEvent public static void onItemRegister(RegistryEvent.Register<Item> event) { event.getRegistry().registerAll(ModItems.ITEMS.toArray(new Item[0])); } @SubscribeEvent public static void onBlockRegister(RegistryEvent.Register<Block> event) { event.getRegistry().registerAll(ModBlocks.BLOCKS.toArray(new Block[0])); } @SubscribeEvent public static void onModelRegister(ModelRegistryEvent event) { for(Item item : ModItems.ITEMS) { if(item instanceof IHasModel) { ((IHasModel)item).registerModels(); } } for(Block block : ModBlocks.BLOCKS) { if(block instanceof IHasModel) { ((IHasModel)block).registerModels(); } } } public static void preInitRegistries() { EntityInit.registerEntities(); RenderHandler.registerEntityRenders(); } } RenderHandler class: Spoiler package com.cosmickvothe.dankmod.util.handlers; import com.cosmickvothe.dankmod.entity.EntityExplosive; import com.cosmickvothe.dankmod.entity.render.RenderExplosiveBlock; import net.minecraft.client.renderer.entity.Render; import net.minecraft.client.renderer.entity.RenderManager; import net.minecraftforge.fml.client.registry.IRenderFactory; import net.minecraftforge.fml.client.registry.RenderingRegistry; public class RenderHandler { public static void registerEntityRenders() { RenderingRegistry.registerEntityRenderingHandler(EntityExplosive.class, new IRenderFactory<EntityExplosive>() { @Override public Render<? super EntityExplosive> createRenderFor(RenderManager manager) { // TODO Auto-generated method stub return new RenderExplosiveBlock(manager); } }); } } Main Spoiler package com.cosmickvothe.dankmod; import com.cosmickvothe.dankmod.init.ModRecipes; import com.cosmickvothe.dankmod.proxy.CommonProxy; import com.cosmickvothe.dankmod.util.Reference; import com.cosmickvothe.dankmod.util.handlers.RegistryHandler; 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 = Reference.MOD_ID, name = Reference.NAME, version = Reference.VERSION) public class Main { @Instance public static Main instance; @SidedProxy(clientSide = Reference.CLIENT_PROXY_CLASS, serverSide = Reference.COMMON_PROXY_CLASS) public static CommonProxy proxy; @EventHandler public static void PreInit(FMLPreInitializationEvent event) { RegistryHandler.preInitRegistries(); } @EventHandler public static void Init(FMLInitializationEvent event) { ModRecipes.init(); } @EventHandler public static void PostInit(FMLPostInitializationEvent event) { } }
October 8, 20186 yr 23 minutes ago, purpleshadows said: Reference.MOD_ID + ":textures You shouldn't have that colon. 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.
October 8, 20186 yr Author 5 minutes ago, Animefan8888 said: You shouldn't have that colon. Without the colon, I get file not found errors.
October 8, 20186 yr 1 minute ago, purpleshadows said: Without the colon, I get file not found errors. Post the errors. 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.
October 8, 20186 yr Author 1 minute ago, Animefan8888 said: Post the errors. Spoiler [05:02:08] [main/WARN] [net.minecraft.client.renderer.texture.TextureManager]: Failed to load texture: minecraft:dmtextures/entity/dankjess_explosiveblock.png java.io.FileNotFoundException: minecraft:dmtextures/entity/dankjess_explosiveblock.png 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.texture.SimpleTexture.loadTexture(SimpleTexture.java:34) ~[SimpleTexture.class:?] at net.minecraft.client.renderer.texture.TextureManager.loadTexture(TextureManager.java:69) [TextureManager.class:?] at net.minecraft.client.renderer.texture.TextureManager.bindTexture(TextureManager.java:44) [TextureManager.class:?] at net.minecraft.client.renderer.entity.Render.bindTexture(Render.java:130) [Render.class:?] at net.minecraft.client.renderer.entity.Render.bindEntityTexture(Render.java:123) [Render.class:?] at com.cosmickvothe.dankmod.entity.render.RenderExplosiveBlock.doRender(RenderExplosiveBlock.java:48) [RenderExplosiveBlock.class:?] at com.cosmickvothe.dankmod.entity.render.RenderExplosiveBlock.doRender(RenderExplosiveBlock.java:1) [RenderExplosiveBlock.class:?] at net.minecraft.client.renderer.entity.RenderManager.renderEntity(RenderManager.java:390) [RenderManager.class:?] at net.minecraft.client.renderer.entity.RenderManager.renderEntityStatic(RenderManager.java:374) [RenderManager.class:?] at net.minecraft.client.renderer.RenderGlobal.renderEntities(RenderGlobal.java:655) [RenderGlobal.class:?] at net.minecraft.client.renderer.EntityRenderer.renderWorldPass(EntityRenderer.java:1398) [EntityRenderer.class:?] at net.minecraft.client.renderer.EntityRenderer.renderWorld(EntityRenderer.java:1312) [EntityRenderer.class:?] at net.minecraft.client.renderer.EntityRenderer.updateCameraAndRender(EntityRenderer.java:1115) [EntityRenderer.class:?] at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1207) [Minecraft.class:?] at net.minecraft.client.Minecraft.run(Minecraft.java:441) [Minecraft.class:?] at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_181] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_181] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_181] at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_181] 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_181] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_181] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_181] at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_181] at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?] at GradleStart.main(GradleStart.java:25) [start/:?] And also after igniting it turns to blinking black.
October 8, 20186 yr Just now, purpleshadows said: And also after igniting it turns to blinking black. Modid and the textures path should be two separate 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.
October 8, 20186 yr Author 3 minutes ago, Animefan8888 said: Modid and the textures path should be two separate parameters. That's what the colon does...? EDIT: The issue is not there. I tried both with, without colom and I also tried " Reference.MOD_ID, "textures " Edited October 8, 20186 yr by purpleshadows
October 8, 20186 yr Author Today I have been looking into it as much as I could and I still have no idea where it fauils. I think I may not be properly registering the entity. I've been looking everywhere online and I don't find anything about creating custom TNTs.
October 9, 20186 yr 23 hours ago, purpleshadows said: new ResourceLocation(Reference.MOD_ID + ":" + name) this -> new ResourceLocation(Reference.MOD_ID,name) 23 hours ago, purpleshadows said: new ResourceLocation(Reference.MOD_ID + ":textures/entity/dankjess_explosiveblock.png"); this -> new ResourceLocation(Reference.MOD_ID, "textures/entity/dankjess_explosiveblock.png"); OR new ResourceLocation(Reference.MOD_ID, "entity/dankjess_explosiveblock.png");, I'm not sure which is correct, I think its the second one, but try both I think your brightness is somehow off. I think that you should replace your code with just the initial translation & try rendering your block with different brightnesses. About Me Spoiler My Discord - Cadiboo#8887 My Website - Cadiboo.github.io My Mods - Cadiboo.github.io/projects My Tutorials - Cadiboo.github.io/tutorials Versions below 1.14.4 are no longer supported on this forum. Use the latest version to receive support. When asking support remember to include all relevant log files (logs are found in .minecraft/logs/), code if applicable and screenshots if possible. Only download mods from trusted sites like CurseForge (minecraft.curseforge.com). A list of bad sites can be found here, with more information available at stopmodreposts.org Edit your own signature at www.minecraftforge.net/forum/settings/signature/ (Make sure to check its compatibility with the Dark Theme)
October 9, 20186 yr Author 18 hours ago, Cadiboo said: this -> new ResourceLocation(Reference.MOD_ID,name) this -> new ResourceLocation(Reference.MOD_ID, "textures/entity/dankjess_explosiveblock.png"); OR new ResourceLocation(Reference.MOD_ID, "entity/dankjess_explosiveblock.png");, I'm not sure which is correct, I think its the second one, but try both I think your brightness is somehow off. I think that you should replace your code with just the initial translation & try rendering your block with different brightnesses. I have done everything you said above but still no luck yet. This is my texture now, as you have sugested: public static final ResourceLocation TEXTURE = new ResourceLocation(Reference.MOD_ID, "textures/entities/dankjess_explosiveblock.png"); If I change: @Override protected ResourceLocation getEntityTexture(EntityExplosive entity) { //return TEXTURE; <------ THIS return TextureMap.LOCATION_BLOCKS_TEXTURE; <----- WITH THIS } Then when I ignite my custom tnt, it takes the texture of a default tnt (as expected). I have inspected the declaration behind that, inside TextureMap class, and it is this: public static final ResourceLocation LOCATION_BLOCKS_TEXTURE = new ResourceLocation("textures/atlas/blocks.png"); But I have not found this location anywhere. I am trying to find "textures/atlas/blocks.png" so I can understand why this texture works and mine doesn't. My texture is a 64x64 png. Above I will attach a picture of my assets. I don't understand what is wrong with it, maybe blockstates? This is my blockstates for this block: Spoiler { "variants": { "inventory": { "model": "dm:dankjess_explosiveblock" }, "explode=false": { "model": "dm:dankjess_explosiveblock" }, "explode=true": { "model": "dm:dankjess_explosiveblock" } } } But I know the blockstate only affects the block before being ignited and "turned" into an entity. I also get these errors, but I am not sure if they are related to my issue: Spoiler [22:57:53] [pool-2-thread-1/WARN] [com.mojang.authlib.yggdrasil.YggdrasilMinecraftSessionService]: Couldn't look up profile properties for com.mojang.authlib.GameProfile@1c2110af[id=25dc5eb7-e593-3192-87a1-eb20288493eb,name=Player935,properties={},legacy=false] com.mojang.authlib.exceptions.AuthenticationException: The client has sent too many requests within a certain amount of time at com.mojang.authlib.yggdrasil.YggdrasilAuthenticationService.makeRequest(YggdrasilAuthenticationService.java:79) ~[YggdrasilAuthenticationService.class:?] at com.mojang.authlib.yggdrasil.YggdrasilMinecraftSessionService.fillGameProfile(YggdrasilMinecraftSessionService.java:180) [YggdrasilMinecraftSessionService.class:?] at com.mojang.authlib.yggdrasil.YggdrasilMinecraftSessionService$1.load(YggdrasilMinecraftSessionService.java:60) [YggdrasilMinecraftSessionService$1.class:?] at com.mojang.authlib.yggdrasil.YggdrasilMinecraftSessionService$1.load(YggdrasilMinecraftSessionService.java:57) [YggdrasilMinecraftSessionService$1.class:?] at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3716) [guava-21.0.jar:?] at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2424) [guava-21.0.jar:?] at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2298) [guava-21.0.jar:?] at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2211) [guava-21.0.jar:?] at com.google.common.cache.LocalCache.get(LocalCache.java:4154) [guava-21.0.jar:?] at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:4158) [guava-21.0.jar:?] at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:5147) [guava-21.0.jar:?] at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:5153) [guava-21.0.jar:?] at com.mojang.authlib.yggdrasil.YggdrasilMinecraftSessionService.fillProfileProperties(YggdrasilMinecraftSessionService.java:170) [YggdrasilMinecraftSessionService.class:?] at net.minecraft.client.Minecraft.getProfileProperties(Minecraft.java:3178) [Minecraft.class:?] at net.minecraft.client.resources.SkinManager$3.run(SkinManager.java:138) [SkinManager$3.class:?] at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_181] at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_181] at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [?:1.8.0_181] at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [?:1.8.0_181] at java.lang.Thread.run(Unknown Source) [?:1.8.0_181]
October 9, 20186 yr 1 hour ago, purpleshadows said: textures/entities Does not equal textures/entity 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.
October 9, 20186 yr Author 2 minutes ago, Animefan8888 said: Does not equal textures/entity Yes, I know. I made a last minute change. Changed the path in assets from entity to entities. I shouald have noted that before. The problem persists. Edited October 9, 20186 yr by purpleshadows
October 9, 20186 yr 5 minutes ago, purpleshadows said: Yes, I know. I made a last minute change. Changed the path in assets from entity to entities. I shouald have noted that before. The problem persists. Instead of calling fuse-- in onUpdate call setFuse(fuse-1) 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.
October 9, 20186 yr Author 15 minutes ago, Animefan8888 said: Instead of calling fuse-- in onUpdate call setFuse(fuse-1) That did not fix my problem.
October 9, 20186 yr 4 minutes ago, purpleshadows said: That did not fix my problem. Damn. Can you use either the console(print lines) or debug mode to determine if the value is changing on the Client? 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.
October 9, 20186 yr Author 2 minutes ago, Animefan8888 said: Damn. Can you use either the console(print lines) or debug mode to determine if the value is changing on the Client? The value goes from the assigned number to 0. It does change.
October 9, 20186 yr On 10/7/2018 at 7:33 PM, purpleshadows said: Blocks.TNT.getDefaultState() Change this to your block and do this again. 1 hour ago, purpleshadows said: @Override protected ResourceLocation getEntityTexture(EntityExplosive entity) { //return TEXTURE; <------ THIS return TextureMap.LOCATION_BLOCKS_TEXTURE; <----- WITH THIS } 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.
October 9, 20186 yr Author As @Cadiboo sugested I fidled with the brigthness in doRender, on the lines starting with "blockrendererdispatcher": Spoiler Also my block now has an interesting texture after being ignited, but it is still not the texture I have asigned to it, as you can see here: Spoiler EDIT: @Animefan8888 everything is as you sugest, yet it does not fix my problem. Edited October 9, 20186 yr by purpleshadows
October 9, 20186 yr 10 minutes ago, purpleshadows said: EDIT: @Animefan8888 everything is as you sugest, yet it does not fix my problem. Post your updated code, and just for reference did you copy your code from the vanilla TNT renderer? I'm away from my dev environment for most of the time in a week including right now, but once I get back I'll look into it deeper. 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.
October 9, 20186 yr Author 13 minutes ago, Animefan8888 said: Post your updated code, and just for reference did you copy your code from the vanilla TNT renderer? I'm away from my dev environment for most of the time in a week including right now, but once I get back I'll look into it deeper. I did copy it from there, indeed. This is the code: Spoiler package com.cosmickvothe.dankmod.client.renderer.entity; import com.cosmickvothe.dankmod.entity.item.EntityExplosive; import com.cosmickvothe.dankmod.init.BlocksInit; import com.cosmickvothe.dankmod.util.Reference; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.BlockRendererDispatcher; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.entity.Render; import net.minecraft.client.renderer.entity.RenderLiving; import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.client.renderer.entity.RenderTNTPrimed; import net.minecraft.client.renderer.texture.TextureMap; import net.minecraft.entity.item.EntityTNTPrimed; import net.minecraft.init.Blocks; import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.MathHelper; public class ExplosiveBlockRenderer extends Render<EntityExplosive>{ public static final ResourceLocation TEXTURE = new ResourceLocation(Reference.MOD_ID, "textures/entities/dankjess_explosiveblock.png"); public ExplosiveBlockRenderer(RenderManager renderManagerIn) { super(renderManagerIn); this.shadowSize = 0.5F; } @Override public void doRender(EntityExplosive entity, double x, double y, double z, float entityYaw, float partialTicks) { BlockRendererDispatcher blockrendererdispatcher = Minecraft.getMinecraft().getBlockRendererDispatcher(); GlStateManager.pushMatrix(); GlStateManager.translate((float)x, (float)y + 0.5F, (float)z); if ((float)entity.getFuse() - partialTicks + 1.0F < 10.0F) { float f = 1.0F - ((float)entity.getFuse() - partialTicks + 1.0F) / 10.0F; f = MathHelper.clamp(f, 0.0F, 1.0F); f = f * f; f = f * f; float f1 = 1.0F + f * 0.3F; GlStateManager.scale(f1, f1, f1); } float f2 = (1.0F - ((float)entity.getFuse() - partialTicks + 1.0F) / 100.0F) * 0.8F; this.bindEntityTexture(entity); GlStateManager.rotate(-90.0F, 0.0F, 1.0F, 0.0F); GlStateManager.translate(-0.5F, -0.5F, 0.5F); blockrendererdispatcher.renderBlockBrightness(BlocksInit.DANKJESS_EXPLOSIVEBLOCK.getDefaultState(), entity.getBrightness()); GlStateManager.translate(0.0F, 0.0F, 1.0F); if (this.renderOutlines) { GlStateManager.enableColorMaterial(); GlStateManager.enableOutlineMode(this.getTeamColor(entity)); blockrendererdispatcher.renderBlockBrightness(BlocksInit.DANKJESS_EXPLOSIVEBLOCK.getDefaultState(), 1.0F); GlStateManager.disableOutlineMode(); GlStateManager.disableColorMaterial(); } else if (entity.getFuse() / 5 % 2 == 0) { GlStateManager.disableTexture2D(); GlStateManager.disableLighting(); GlStateManager.enableBlend(); GlStateManager.blendFunc(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.DST_ALPHA); GlStateManager.color(1.0F, 1.0F, 1.0F, f2); GlStateManager.doPolygonOffset(-3.0F, -3.0F); GlStateManager.enablePolygonOffset(); blockrendererdispatcher.renderBlockBrightness(BlocksInit.DANKJESS_EXPLOSIVEBLOCK.getDefaultState(), 1.0F); GlStateManager.doPolygonOffset(0.0F, 0.0F); GlStateManager.disablePolygonOffset(); GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F); GlStateManager.disableBlend(); GlStateManager.enableLighting(); GlStateManager.enableTexture2D(); } GlStateManager.popMatrix(); super.doRender(entity, x, y, z, entityYaw, partialTicks); } @Override protected ResourceLocation getEntityTexture(EntityExplosive entity) { return TEXTURE; //return TextureMap.LOCATION_BLOCKS_TEXTURE; } }
October 10, 20186 yr 5 hours ago, purpleshadows said: As @Cadiboo sugested I fidled with the brigthness in doRender, on the lines starting with "blockrendererdispatcher": Reveal hidden contents Also my block now has an interesting texture after being ignited, but it is still not the texture I have asigned to it, as you can see here: Hide contents EDIT: @Animefan8888 everything is as you sugest, yet it does not fix my problem. That looks like the light map (not the blocks) texture to me About Me Spoiler My Discord - Cadiboo#8887 My Website - Cadiboo.github.io My Mods - Cadiboo.github.io/projects My Tutorials - Cadiboo.github.io/tutorials Versions below 1.14.4 are no longer supported on this forum. Use the latest version to receive support. When asking support remember to include all relevant log files (logs are found in .minecraft/logs/), code if applicable and screenshots if possible. Only download mods from trusted sites like CurseForge (minecraft.curseforge.com). A list of bad sites can be found here, with more information available at stopmodreposts.org Edit your own signature at www.minecraftforge.net/forum/settings/signature/ (Make sure to check its compatibility with the Dark Theme)
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.