Jump to content

[1.7.2][SOLVED] Custom Rendered Blocks - Transparency


Kimpton

Recommended Posts

Hello,

        I was following the guides on YouTube;

and now struggling...

 

I am picking up coding from not looking at it for about a year. Please don't yell at things I may do wrong but rather tell me its not done like that haha :)

Secondly I have looked at the forums and cant find someone with a similar error therefore making me conclude I'm missing something.

 

Overview of problem:

  I can create the block in Techne and export etc.. the code seems fine in my opinion (obviously something is wrong) and I have no ''errors'' however once in game my block I place down is transparent, yet not in the sense that it allows you to see through the world, but it literally is like a pane of glass. I can get my texture for the block to be viewable in hand so long as its not the 3D version. If it is then my texture in hand is like I have assigned no texture at all. Here is my workspace layout:

 

http://gyazo.com/ffd5cb3312377b69b807a145d99ac1ab

 

and here is my code:

 

ModelCollumStone: http://pastebin.com/U6Y99ZGD

 

TileEntityCollumStone: http://pastebin.com/v2S7CnfB

 

HandEntityCollumStoneRenderer: http://pastebin.com/EjAV4EmW

TileEntityCollumStoneRenderer: http://pastebin.com/VG2YT9Qj

 

CollumStone: http://pastebin.com/1Nm6255e

 

ClientProxy: http://pastebin.com/zEPeVfXF

CommonProxy: http://pastebin.com/gZXShKd2

KimptonCore: http://pastebin.com/0hFB7S6c

 

From what I can tell, my client proxy isn't being read? therefore the block doesn't know where to locate its rendering code - regardless of the textures. I'm not in a hurry to get an answer, nor for someone to write this for me, I wish to learn as a I go along. I have very small knowledge over Java but I'm quite competent with JavaScript. Possibly pointing me in the right direction would help me more than just a lump of code that solves this issue.

 

I know in my paste bin for ''CollumStone'' i haven't written my Creative Tab - its because it doesn't load my block into that either, so I leave it in as Deco Tab.

 

Here's an image in-game:

http://gyazo.com/347863c3ba94f4a70d4775ef571caa08

 

ps. I know column is not spelt Collum but i have plans to use column as a prefix for future blocks and therefore used Collum while I test things out.

 

 

Many thanks in advanced,

Kimpton - The Wannabe Modder.

 

*MODIFICATION*

 

I have a sneaky suspicion that I possibly have set-up this grindle thing completely wrong - if this helps aha: I will resetup my Eclipse and reply if this error persists.

Link to comment
Share on other sites

For one thing, fix your modid: lowercase letters and numbers only (spaces are iffy, so leave those out for safety).

Another, you don't use new Block/Item/TE in the main class section. Put those inside your Preinitialization event method.

Link to comment
Share on other sites

Okay thanks for clearing the modid thing: having to read a few 1.6.4 videos, I was told it didn't matter? But either way thanks'. Secondly do you mean place:

   public static Block CollumStone = new CollumStone(Material.rock).setBlockName("CollumStone");

 

into

@EventHandler
    public void PreInit(FMLPreInitializationEvent preEvent){
    	//Registering Creative Tabs
    	latheTab = new CreativeTabs("kimpton"){
    		@SideOnly(Side.CLIENT)
    		public Item getTabIconItem(){
    			return Item.getItemFromBlock(KimptonCore.CollumStone);
    		}
    	};    	
    	//Registering Blocks
    	GameRegistry.registerBlock(CollumStone, "CollumStone");     	
    	//Registering Tile Entities
    	GameRegistry.registerTileEntity(TileEntityCollumStone.class, "CollumStone");    	
    	//Rendering Blocks and Mobs
       	kimptonProxy.RenderInfomation();
    	kimptonProxy.registerTileEntitySpecialRenderer();
    }

 

If so - then the block doesn't get registered at all. :(

 

 

*MODIFICATION*

 

package com.kimpton.common;

import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
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.FMLPostInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.common.registry.LanguageRegistry;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;

import com.kimpton.block.entity.TileEntityCollumStone;
import com.kimpton.block.render.TileEntityCollumStoneRenderer;
import com.kimpton.blockDatabase.CollumStone;


@Mod(modid = KimptonCore.modid, version = KimptonCore.VERSION)
public class KimptonCore
{
public static final String modid = "lathemod";
    public static final String VERSION = "1.0";    
    //Own Creative Tabs
    public static CreativeTabs latheTab;    
    //Defining Blocks
    public static Block CollumStone;    
    //Proxy Settings
    @SidedProxy(clientSide = "com.kimpton.common.ClientProxy", serverSide = "com.kimpton.common.CommonProxy")
    public static CommonProxy kimptonProxy;
    
    @EventHandler
    public void PreInit(FMLPreInitializationEvent preEvent){
    	//Registering Creative Tabs
    	latheTab = new CreativeTabs("kimpton"){
    		@SideOnly(Side.CLIENT)
    		public Item getTabIconItem(){
    			return Item.getItemFromBlock(KimptonCore.CollumStone);
    		}
    	}; 
    	//Define Block Properties
    	CollumStone = new CollumStone(Material.rock).setBlockName("CollumStone");
    	//Registering Blocks
    	GameRegistry.registerBlock(CollumStone, "CollumStone");     	
    	//Registering Tile Entities
    	GameRegistry.registerTileEntity(TileEntityCollumStone.class, "CollumStone");    	
    	//Rendering Blocks and Mobs
       	kimptonProxy.RenderInfomation();
    	kimptonProxy.registerTileEntitySpecialRenderer();
    }
    
    @EventHandler
    public void Init(FMLInitializationEvent event){
    	
    }    
    @EventHandler
    public void PostInit(FMLPostInitializationEvent postEvent){
    	
    }

}

 

That boots - main problem still persists however.. :(

Link to comment
Share on other sites

Hi

 

I suspect the problem is that you've made your RenderInformation static, so it doesn't override CommonProxy.RenderInformation.  It's a good idea to put @Override before any methods you want to override, so the compiler will tell you you've got a problem.

 

i.e. try this and see what it tells you

 

public class ClientProxy extends CommonProxy {

@Override       
        public static void RenderInfomation(){ 

 

-TGG

 

Link to comment
Share on other sites

Ok thanks for replying :)

 

Yeah it doesn't like it being there ''@Override'' however leaving it in there and the complier doesn't spit out anything - runs completely smooth..

Well that's strange.  When I put @Override before a static method it refuses to compile and tells me

"static method xxx in derived class cannot override instance method xxx in base class"

 

What happens if you remove the static from your RenderInformation()?

 

(BTW you should really name it renderInformation() to be consistent with Java naming conventions :)  )

 

-TGG

Link to comment
Share on other sites

Okay yep now it's spitting out problems. Having renamed RenderInfomation to renderInfomation (and in all the other relative places also) while also removing ''Static" in common and client proxy it throws out this:

 

[15:10:28] [Client thread/ERROR] [FML]: Fatal errors were detected during the transition from PREINITIALIZATION to INITIALIZATION. Loading cannot continue
[15:10:28] [Client thread/ERROR] [FML]: 
mcp{8.09} [Minecraft Coder Pack] (minecraft.jar) Unloaded->Constructed->Pre-initialized
FML{7.2.156.1060} [Forge Mod Loader] (forgeSrc-1.7.2-10.12.1.1060.jar) Unloaded->Constructed->Pre-initialized
Forge{10.12.1.1060} [Minecraft Forge] (forgeSrc-1.7.2-10.12.1.1060.jar) Unloaded->Constructed->Pre-initialized
lathemod{1.0} [lathemod] (bin) Unloaded->Constructed->Errored
[15:10:28] [Client thread/ERROR] [FML]: The following problems were captured during this phase
[15:10:28] [Client thread/ERROR] [FML]: Caught exception from lathemod
java.lang.NullPointerException
at com.kimpton.block.model.ModelCollumStone.<init>(ModelCollumStone.java:100) ~[ModelCollumStone.class:?]
at com.kimpton.block.render.TileEntityCollumStoneRenderer.<init>(TileEntityCollumStoneRenderer.java:20) ~[TileEntityCollumStoneRenderer.class:?]
at com.kimpton.common.ClientProxy.renderInfomation(ClientProxy.java:16) ~[ClientProxy.class:?]
at com.kimpton.common.KimptonCore.PreInit(KimptonCore.java:53) ~[KimptonCore.class:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_05]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_05]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_05]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_05]
at cpw.mods.fml.common.FMLModContainer.handleModStateEvent(FMLModContainer.java:513) ~[FMLModContainer.class:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_05]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_05]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_05]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_05]
at com.google.common.eventbus.EventHandler.handleEvent(EventHandler.java:74) ~[guava-15.0.jar:?]
at com.google.common.eventbus.SynchronizedEventHandler.handleEvent(SynchronizedEventHandler.java:47) ~[guava-15.0.jar:?]
at com.google.common.eventbus.EventBus.dispatch(EventBus.java:314) ~[guava-15.0.jar:?]
at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:296) ~[guava-15.0.jar:?]
at com.google.common.eventbus.EventBus.post(EventBus.java:267) ~[guava-15.0.jar:?]
at cpw.mods.fml.common.LoadController.sendEventToModContainer(LoadController.java:209) ~[LoadController.class:?]
at cpw.mods.fml.common.LoadController.propogateStateMessage(LoadController.java:188) ~[LoadController.class:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_05]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_05]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_05]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_05]
at com.google.common.eventbus.EventHandler.handleEvent(EventHandler.java:74) ~[guava-15.0.jar:?]
at com.google.common.eventbus.SynchronizedEventHandler.handleEvent(SynchronizedEventHandler.java:47) ~[guava-15.0.jar:?]
at com.google.common.eventbus.EventBus.dispatch(EventBus.java:314) ~[guava-15.0.jar:?]
at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:296) ~[guava-15.0.jar:?]
at com.google.common.eventbus.EventBus.post(EventBus.java:267) ~[guava-15.0.jar:?]
at cpw.mods.fml.common.LoadController.distributeStateMessage(LoadController.java:119) [LoadController.class:?]
at cpw.mods.fml.common.Loader.loadMods(Loader.java:500) [Loader.class:?]
at cpw.mods.fml.client.FMLClientHandler.beginMinecraftLoading(FMLClientHandler.java:202) [FMLClientHandler.class:?]
at net.minecraft.client.Minecraft.startGame(Minecraft.java:520) [Minecraft.class:?]
at net.minecraft.client.Minecraft.run(Minecraft.java:890) [Minecraft.class:?]
at net.minecraft.client.main.Main.main(Main.java:112) [Main.class:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_05]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_05]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_05]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_05]
at net.minecraft.launchwrapper.Launch.launch(Launch.java:134) [launchwrapper-1.9.jar:?]
at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.9.jar:?]

 

From what I can tell is that now its not static, my Core class cant read the function? This is the same error with or without "Override".

 

Thanks in advanced.

Link to comment
Share on other sites

From what I can tell is that now its not static, my Core class cant read the function? This is the same error with or without "Override".

 

Nah, dude, that's a good sign.  It means your ClientProxy code is actually running now.  So now you're finding the next bug :)

 

If you look at this part here

java.lang.NullPointerException

at com.kimpton.block.model.ModelCollumStone.<init>(ModelCollumStone.java:100) ~[ModelCollumStone.class:?]

It tells you that there's something wrong in your ModelCollumStone constructor, at line 100:

probably here I think

      Shape16.mirror = true;
      Shape16 = new ModelRenderer(this, 0, 0);

 

Techne is notorious for this bug, i.e. using Shape16 before initialising it.  Compare the Shape16 lines to the others (eg Shape15).

 

-TGG

 

 

 

Link to comment
Share on other sites

Haha! It works :)

 

      Shape15 = new ModelRenderer(this, 0, 0);
      Shape15.addBox(0F, 0F, 0F, 1, 16, 1);
      Shape15.setRotationPoint(6F, 8F, 4F);
      Shape15.setTextureSize(154, 154);
      Shape15.mirror = true;
      setRotation(Shape15, 0F, 0F, 0F);

      Shape16 = new ModelRenderer(this, 0, 0);
      Shape16.addBox(0F, 0F, 0F, 1, 16, 1);
      Shape16.setRotationPoint(4F, 8F, 6F);
      Shape16.setTextureSize(154, 154);
      Shape16.mirror = true;

 

The gap was the error - it had an extra    "  Shape16.mirror = true; " in that gap - Looking at the other Shapes, it was quite obvious it didn't need to be there.

There's a texture bug now - but don't worry I can sort that out. Thank you very much!

Link to comment
Share on other sites

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.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • Recently started to attempt 1.20.1 modding, in registering idle, walk and attack animations in the mob entity class i've run into two issues:   a) idle and walk animations seem to play simultaneously  + the mob itself does not seem to walk private static final EntityDataAccessor<Boolean> ATTACKING = SynchedEntityData.defineId(MugaEntity.class, EntityDataSerializers.BOOLEAN); public MugaEntity(EntityType<? extends Monster > pEntityType, Level pLevel) { super(pEntityType, pLevel); } public final AnimationState idleAnimationState = new AnimationState(); private int idleAnimationTimeout = 1; p ublic final AnimationState attackAnimationState = new AnimationState(); public int attackAnimationTimeout = 0; @Override public void tick() { super.tick(); if(this.level().isClientSide()) { setupAnimationStates(); } } private void setupAnimationStates () { if(this.idleAnimationTimeout <= 0) { this.idleAnimationTimeout = this.random.nextInt(30) + 60; this.idleAnimationState.start(this.tickCount); } else { --this.idleAnimationTimeout; } if (this.isAttacking() && attackAnimationTimeout <= 0 ) { attackAnimationTimeout = 20; attackAnimationState.start(this.tickCount); } else { --this.attackAnimationTimeout; } if(this.isAttacking()) { attackAnimationState.stop(); } } @Override protected void updateWalkAnimation(float pPartialTick) { float f; if(this.getPose() == Pose.STANDING) { f=Math.min(pPartialTick * 3.0F, 1.0F); } else { f= 0.0F; } this.walkAnimation.update(f, 0.2F); } @Override protected void defineSynchedData() { super.defineSynchedData(); this.entityData.define(ATTACKING, false); } public void setAttacking(boolean attacking) { this.entityData.set(ATTACKING, attacking); } public boolean isAttacking() { return this.entityData.get(ATTACKING); } b) the attack animation is never played on attack, despite being registered  @Override public void setupAnim(Entity entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) { this.root().getAllParts().forEach(ModelPart::resetPose); this.animateWalk(ModAnimationDefinitions.MUGA_WALKING, limbSwing, limbSwingAmount, 1f, 1f ); this.animate(((MugaEntity)entity).idleAnimationState, ModAnimationDefinitions.MUGA_IDLE, ageInTicks, 1f); t his.animate(((MugaEntity)entity).attackAnimationState, ModAnimationDefinitions.MUGA_ATTACK, ageInTicks, 1f); }
    • Maybe there are some more broken files - check the new crash-report - the file name is mentioned in the first lines   If it is another crash, add it here
    • Thanks. Found and deleted it, but it doesn't change anything. When joining a new file is created, the screen freezes/ does not respond in typical manner and I have to close it then. I deleted it in curseforge>minecraft>instances>Modpack>saves>World>serverconfig Should I have deleted it anywhere else?
    • Do you still need help?
  • Topics

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.