Jump to content

[Solved] Entity render method not being called


imadnsn

Recommended Posts

I have an entity extending EntityThrowable, I made a special renderer for it and I can't seem to let it work, the doRender method doesn't even get called.

I should mention that I didn't call super.onUpdate(), but I rather copied the code in it (and called onEntityUpdate which is called in the Entity class), because I wanted to change some things in the original update call.

 

Here's my EntityThrowable class:

 

public class EntityElementCharge extends EntityThrowable {

protected EntityPlayer thrower;
protected float speed;
protected double initialX, initialY, initialZ;

public EntityElementCharge(World world) {
	super(world);
}

public EntityElementCharge(World world, EntityPlayer player, float maxDistance, int tickAge) {
	super(world);
	this.thrower = player;

	float radian = (float)Math.PI / 180.0F; 

	MovingObjectPosition playermop = Utilities.getEntityMOP(world, player, maxDistance, true, true);
	double[] pitchYaw = Utilities.calculatePitchYawFromCoords(
			player.posX, player.posY + player.getEyeHeight(), player.posZ,
			playermop.blockX + 0.5, playermop.blockY + 0.5, playermop.blockZ + 0.5);
	double pitch = pitchYaw[0];
	double yaw = pitchYaw[1];

	setLocationAndAngles(player.posX, player.posY + player.getEyeHeight(), player.posZ, (float)yaw, (float)pitch);

	// copied from setPosition (since we're not using it).
        double bw = (double)this.width / 2.0;
        double bh = (double)this.height;
        this.boundingBox.setBounds(posX - bw, posY - (double)this.yOffset + (double)this.ySize, posZ - bw, posX + bw, posY - (double)this.yOffset + (double)this.ySize + bh, posZ + bw);

        this.initialX = this.posX;
        this.initialY = this.posY;
        this.initialZ = this.posZ;
        
	this.yOffset = 0;

	this.speed = 0.2;

	this.motionX = -Math.sin(this.rotationYaw * radian) * Math.cos(this.rotationPitch * radian) * this.speed;
	this.motionY = -Math.sin(this.rotationPitch * radian) * this.speed;
	this.motionZ = Math.cos(this.rotationYaw * radian) * Math.cos(this.rotationPitch * radian) * this.speed;
	this.setThrowableHeading(this.motionX, this.motionY, this.motionZ, 1.5F, 1.0F);
}

@Override
protected void onImpact(MovingObjectPosition mop) { }

@Override
public void onUpdate() {
	this.lastTickPosX = this.posX;
        this.lastTickPosY = this.posY;
        this.lastTickPosZ = this.posZ;
        this.onEntityUpdate();
        //... a lot of lines copied from super.onUpdate() and modified ...
       	}

@Override
public boolean handleWaterMovement() {
	return false;
}

@Override
protected float getGravityVelocity() {
	return 0;
}
}

 

 

Here's the renderer class (nothing fancy, just testing):

 

public class RenderElementCharge extends Render {

@Override
public void doRender(Entity entity, double x, double y, double z, float f1, float f2) {
	System.out.println("test"); // should get spammed with test even for my entity existing in 5 tick only, but I don't
}

@Override
protected ResourceLocation getEntityTexture(Entity entity) {
	return null;
}
}

 

 

Registering code:

 

Registering entity in base mod's preInit:

EntityRegistry.registerModEntity(EntityElementCharge.class, EntityNames.ENTITY_ELEMENT_CHARGE, eid++, Magematica.instance, 75, 3, true);

 

Registering renderer in ClientProxy's init:

RenderingRegistry.registerEntityRenderingHandler(EntityElementCharge.class, new RenderElementCharge());

 

Link to comment
Share on other sites

The Entity spawns correctly, and goes where it should go (I made it print where it is every update), could it be because it is server-side only?

 

Entity spawn code:

EntityElementCharge charge = new EntityElementCharge(player.worldObj, player, 5, 5); // server-sided only
player.worldObj.spawnEntityInWorld(charge);

 

Common Proxy (nothing is done here):

public class CommonProxy {

public void preInit() {

}

public void init() {

}
}

 

Client Proxy:

public class ClientProxy extends CommonProxy {

@Override
public void preInit() {
	RenderingRegistry.registerBlockHandler(new TestRenderer());
}

@Override
public void init() {
	FMLCommonHandler.instance().bus().register(new KeyInputHandler());
	RenderingRegistry.registerEntityRenderingHandler(EntityElementCharge.class, new RenderElementCharge());
	Initialization.registerKeyBindings();
}
}

 

Proxy's declaration and base mod's init-preinit:

@SidedProxy(clientSide="insnmods.client.ClientProxy", serverSide="insnmods.common.CommonProxy")
public static CommonProxy proxy;

@EventHandler
public void preInit(FMLPreInitializationEvent event){
	//... registering blocks and items ...
EntityRegistry.registerModEntity(EntityElementCharge.class, EntityNames.ENTITY_ELEMENT_CHARGE, eid++, Magematica.instance, 75, 3, true);
	proxy.preInit();
}	

@EventHandler
public void init(FMLInitializationEvent event){
	//... registering crafting recipes ...
	proxy.init();
}

Link to comment
Share on other sites

Strangely enough, it gets called perfectly when spawned client-side. It means everything is registered correctly, just that the server is not notifying the clients.

Also I now noticed that onUpdate is called only once, since anything printed there is printed once even if it is called in both sides.

 

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

    • While living in Copenhagen, I became deeply involved in a vibrant local crypto community. The energy was palpable; people were passionate about the potential of blockchain technology and the myriad of opportunities it offered. I was initially skeptical but soon found myself captivated by the discussions surrounding various cryptocurrencies. After much deliberation, I decided to invest 4,000 DKK in Dogecoin, motivated by both the community's enthusiasm and the coin’s unique charm as a meme-driven currency. To my astonishment, my investment blossomed into a staggering 100,000 DKK within a few months. The thrill of watching my investment grow was exhilarating, and I felt a sense of belonging and achievement among my peers. However, as the community grew, so did the differences in opinion about the direction of our projects and investments. I found myself caught in a heated disagreement with a prominent member regarding strategic decisions, which escalated tensions within the group. Things took a turn for the worse when, following this disagreement, I was locked out of my email account. This was more than just a mere inconvenience; it felt like a nightmare unfolding. My email was the gateway to my crypto assets and exchanges, and without access, I was paralyzed. I frantically attempted to regain control but found myself hitting dead ends. The thought of losing my investment sent waves of anxiety through me. Desperate for a solution, I reached out to friends in the community, hoping they could offer guidance. To my relief, several members were sympathetic to my plight and shared their experiences of similar challenges. One name kept surfacing: ADRIAN LAMO HACKER. I Consult ADRIAN LAMO HACKER Via email: Adrianlamo@ consultant. com / Telegram: @ADRIANLAMOHACKERTECH they also have an active Whats App: ‪+1 (90 9) 73 9‑0 2 69‬ It was touted as a reliable service for recovering compromised accounts, and I was eager to give it a try. With their swift assistance, I provided the necessary information, and the team quickly went to work. They were professional and responsive, keeping me updated throughout the process. Within a short period, I received the long-awaited notification that my email account had been restored. A wave of relief washed over me; I could finally access my assets and continue participating in the community. Regaining control not only allowed me to protect my investment but also reinforced the importance of security in the crypto space. It served as a valuable lesson about the risks and challenges inherent in this rapidly evolving world. With newfound confidence, I re-engaged with the community, more vigilant than ever about safeguarding my digital assets.
    • As the title says, I'm trying to install Forge on Linux. Whenever I load up the installer, and let it run, I end up getting an error that says: "Processor failed, invalid outputs:" Then, it shows the .jar file I used for the installer, and some codes that don't make any sense to my pea-sized brain. All I can tell however, is that they're different and they aren't supposed to be. (Mostly because it tells me.) I don't know how to fix this, and I've encountered this for every file I've tried so far.
    • Descargo un mod y luego, en archivo jar, lo mando a la carpeta "mods" en minecraft, pero al entrar a minecraft forge no me aparecen los mods por ningun lado, si pongo un mod incompatible me sale un error pero no me aparecen los demas mods, ¿Que puedo hacer?  
    • Descargo un mod y luego, en archivo jar, lo mando a la carpeta "mods" en minecraft, pero al entrar a minecraft forge no me aparecen los mods por ningun lado, si pongo un mod incompatible me sale un error pero no me aparecen los demas mods, ¿Que puedo hacer?  
  • Topics

×
×
  • Create New...

Important Information

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