# [unSOLVED] Trigonometry with connected entities

## Recommended Posts

HI! I haven't yet gotten into trigonometry in math and need some help. In my mod I have separate entities "connected" to one. To update their positions I devised some basic trig formulas to determine their absolute position based on the location of the "center" entity, the x, y, and z offset from it at their creation, and the absolute rotation of the "center" entity. Unfortunately entities use yaw, pitch, and roll. If anybody could let me know if they will work anyway, how to adapt them, or how to determine absolute rotation from yaw, pitch, and roll I would be grateful.

Current equations:

newx = controllerx + xoffset(sin(Yrotation) + sin(Zrotation))

newy = controllery + yoffset(sin(Xrotation) + sin(Zrotation))

newz = controllerz + zoffset(sin(Xrotation) + sin(Yrotation))

rotations are around the letter's axis(e.g. Yrotation would be yaw)

##### Share on other sites

It might be easier to help if you drew a picture of what you're trying to do -- trigonometry is usually easier if you can visualize.

I'm not sure about your equations doing what you want (not quite sure what you want), but they are not correct from a coding correctness:

1) you have a typo mistake where you don't have the final closing ) in the equations.

2) Also you need to remember that the rotations are in radians, not in degrees but degrees are a lot easier for humans to visualize so you probably want to write your equations with the conversions.  You can use math radToDeg() type methods (or make your own for floats).

3) you need to use a * for the multiplication.

I realize you weren't necessarily writing code, but probably good to do it exactly to avoid any mistakes.

Overall I am not sure what exactly you're trying to achieve, but at a glance I suspect they are wrong.  You usually need to have both a sin and a cos if you're translating an angle into a position on each 2D plane.

You really need to draw it out, then it would probably be easy to figure out which angles and which sin versus cos function to use.

Check out my tutorials here: http://jabelarminecraft.blogspot.com/

##### Share on other sites

Well, this is my soapbox. Currently, I have system, that uses carrier's pos, yaw and pitch to determine connected entity position (so-called spheric coordinates). You can see the

in one of my videos (see the player walking around the loco).

Where you're gonna look for info is this http://en.wikipedia.org/wiki/Spherical_coordinate_system.

If you still have troubles, I can take time and draw some explanations together with writing some code.

If i helped you, don't forget pressing "Thank You" button. Thanks for your time.

##### Share on other sites

Thanks both of you! I'll look into the Wikipedia page! If I can't figure that out I'll get back to you Jabelar. Naiten, is there any way I could get a look at your code that does that? Thanks again!!!

##### Share on other sites

OK... I think I'm getting the Spherical coordinate system and how to convert it to X, Y, Z with:

(I think the symbol is phi)

x=r*sin(theta)*cos(phi)

y=r*sin(theta)*sin(phi)

z=r*cos(theta)

where theta = yaw and phi= pitch

but how would you factor in the roll? (I would like to have it for my entity even though most don't)

Also, are you sure rotation is in radians? From my limited testing it seems like they are in degrees. When I set the pitch to 5 it looks like it should...

##### Share on other sites

Firstly, theta = pitch (more exactly, 90 - pitch), phi = yaw. Can't immediately say how do you implement roll. Maybe i'll take a thought on it and give a solution.

Rotations are in degrees, functions take radians, so you have to use Math.toRadians(angle).

If i helped you, don't forget pressing "Thank You" button. Thanks for your time.

##### Share on other sites

Hi

I find the easiest way to visualise yaw, pitch, and roll is to imagine a spaceship with its tail at [0,0,0] and its nose pointing to [x,y,z].  Yaw is where the nose is pointing in terms of compass direction, eg North, East, etc, which in Minecraft corresponds to changes in the x and z coordinates of the nose.

Pitch is how far "up" the nose is pointing, eg straight up, 45 degrees up, 30 degrees down, etc.  In Minecraft this affects primarily the y coordinate, but also the x and z coordinate in a fixed ratio (i.e. as you tilt the nose upwards, its x and z move back towards the [0,0,0])

Roll is how much the ship has rotated around its own axis - for example is it upright, upside down, or on its side.

I think you've got the idea of Yaw and Pitch already, the spherical coordinate system with phi and theta.

If all you care about is the [x,y,z] of the nose, then you don't need roll at all.  You only need roll if you are rendering your spaceship and it needs to be upside down.  In that case, you need to perform a rotation around the roll axis of the ship (the line between the tail and the nose) , which is a bit more complicated.  You've seen these in the code already (glRotatef).

On the other hand, if you want the nose position but also the position of the two wing tips, you will need to perform a matrix multiplication for each wing tip, using a matrix that corresponds to a rotation about the roll axis.  See here for more details (warning, it's pretty fierce)

-TGG

##### Share on other sites

Also, are you sure rotation is in radians? From my limited testing it seems like they are in degrees. When I set the pitch to 5 it looks like it should...

Yeah, I said it backwards.  The functions are in radians.  Anyway, my point is to make sure you include the conversions as necessary. It is really easy to do something like take arcsin (to get angle from position) and then add degrees to it then try to sin it again and mess it all up because you forgot to convert from rad and back again.

Check out my tutorials here: http://jabelarminecraft.blogspot.com/

##### Share on other sites

It looks like there are some equations on https://www.chrobotics.com/library/understanding-euler-angles that could work...

(Under:

The complete rotation matrix for moving from the inertial frame to the body frame)

Are you saying that in equations like these the rotations are in radians?

##### Share on other sites

Hi

It looks like there are some equations on https://www.chrobotics.com/library/understanding-euler-angles that could work...

(Under:

The complete rotation matrix for moving from the inertial frame to the body frame)

Yes those equations will do the job.  They are essentially the same as the ones in the previous posts.

Are you saying that in equations like these the rotations are in radians?

These equations don't care if you use radians or degrees.  It depends on the sin and cos library methods you're using.  If the sin method expects you to provide the angle in radians, you need to give it in radians.  If it expects the angle in degrees, give it in degrees.  You can convert between the two easily as Naiten said.

-TGG

##### Share on other sites

Are you saying that in equations like these the rotations are in radians?

In mathematics you pretty much always use radians because it easier for differential and integral calculus in a neater/perfect form (using Pi constant instead of some irrational number constant with some error).

In computer science, like TGG says it simply depends on how the method was written.  The base methods in most computer language libraries are usually radians as far as I've experienced.

To help my own brain keep from straining, I'll often create my own methods that work in degrees by converting the parameter to radians then calling the library function that uses radians.

Check out my tutorials here: http://jabelarminecraft.blogspot.com/

##### Share on other sites

Thank you everyone!

##### Share on other sites

Never mind, I don't get them... Could somebody just give or link the equations I need? I also no nothing about matrices, this is all way over my head. Thanks...

##### Share on other sites

Hi

The equations you need are all in the posts above.  Unfortunately they are quite complicated, and in order to understand them I think you would need to spend a few days reading & practicing a couple of introductory texts to 3D graphics.  The matrix algebra you need isn't hard but if you don't understand what you're doing it's going to be extremely frustrating.

If you don't want to do that, I can only suggest that you either

- try something easier (achieve the effects you want in a different way),

- look around for open-source minecraft mods which do something similar to what you want, or

- try to find another modder who understands 3D transformations and is willing to collaborate with you.  You might be able to find someone on this forge forum or on http://www.minecraftforum.net/forum

-TGG

##### Share on other sites

I was thinking I could do this by modifying the rotation point in the model file to the location of the controller but I'm getting crashes when I create the entity.

Spawning method:

```public void becomeEntity(World world, EntityShipControl controller, int x, int y, int z, int contX, int contY, int contZ) {
int newx = x;
int newy = y;
int newz = z;
EntityShipBlock shipblockentity = new EntityShipBlock(world);
shipblockentity.setPositionAndRotation(x + 0.5, y + 1.5, z + 0.5, controller.rotationYaw + 20, 0);
shipblockentity.controller = controller;
shipblockentity.Xoff = x - contX;
shipblockentity.Yoff = y - contY;
shipblockentity.Zoff = z - contZ;
world.spawnEntityInWorld(shipblockentity);
world.setBlockToAir(x, y, z);

newx=newx+1;
if (world.getBlock(newx, newy, newz) instanceof BlockShipBlock) {
System.out.println("called");
BlockShipBlock xplusblock = (BlockShipBlock) world.getBlock(newx, newy, newz);
xplusblock.becomeEntity(world, controller, newx, newy, newz, contX, contY, contZ);

}
newx=newx-2;

if (world.getBlock(newx, newy, newz) instanceof BlockShipBlock) {
System.out.println("called");
BlockShipBlock xminusblock = (BlockShipBlock) world.getBlock(newx, newy, newz);
xminusblock.becomeEntity(world, controller, newx, newy, newz, contX, contY, contZ);
}
newx=newx+1;
newy=newy+1;

if (world.getBlock(newx, newy, newz) instanceof BlockShipBlock) {
System.out.println("called");
BlockShipBlock yplusblock = (BlockShipBlock) world.getBlock(newx, newy, newz);
yplusblock.becomeEntity(world, controller, newx, newy, newz, contX, contY, contZ);
}
newy=newy-2;

if (world.getBlock(newx, newy, newz) instanceof BlockShipBlock) {
System.out.println("called");
BlockShipBlock yminusblock = (BlockShipBlock) world.getBlock(newx, newy, newz);
yminusblock.becomeEntity(world, controller, newx, newy, newz, contX, contY, contZ);
}
newy=newy+1;
newz=newz+1;

if (world.getBlock(newx, newy, newz) instanceof BlockShipBlock) {
System.out.println("called");
BlockShipBlock zplusblock = (BlockShipBlock) world.getBlock(newx, newy, newz);
zplusblock.becomeEntity(world, controller, newx, newy, newz, contX, contY, contZ);
}
newz=newz-2;

if (world.getBlock(newx, newy, newz) instanceof BlockShipBlock) {
System.out.println("called");
BlockShipBlock zminusblock = (BlockShipBlock) world.getBlock(newx, newy, newz);
zminusblock.becomeEntity(world, controller, newx, newy, newz, contX, contY, contZ);
}
newz=newz+1;
}```

Entity Class:

```package com.DEBmods.modularships;

import net.minecraft.entity.Entity;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.world.World;

public class EntityShipBlock extends Entity{
EntityShipControl controller;

public int Xoff;
public int Yoff;
public int Zoff;

public EntityShipBlock(World par1World) {
super(par1World);
}

public boolean canBePushed()
{
return false;
}

@Override
protected void entityInit() {
}

@Override
}

@Override
protected void writeEntityToNBT(NBTTagCompound var1) {
}

//STUFF FOR onUpdate ONLY!!!
public void onUpdate() {
//Sets up controller files
/*if (this.controller == null) {
controller = this.worldObj.getEntityByID(this.controllerid);
}*/

//Updates rotation based on the controller
//this.setRotation(this.controller.rotationYaw, this.controller.rotationPitch);

}
}```

Render Class:

```package modularships.renderstuff;

import net.minecraft.client.renderer.entity.Render;
import net.minecraft.entity.Entity;

import com.DEBmods.modularships.EntityShipBlock;
import com.DEBmods.modularships.modularshipsINIT;

import net.minecraft.util.ResourceLocation;

import org.lwjgl.opengl.GL11;

import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;

@SideOnly(Side.CLIENT)
public class RenderShipBlock extends Render
{
private static final ResourceLocation texture = new ResourceLocation(modularshipsINIT.MODID + ":textures/entity/shipblockentity.png");
/** instance of modelShipBlock for rendering */
protected ModelShipBlock modelShipBlock;
public RenderShipBlock()
{
this.modelShipBlock = new ModelShipBlock();
}

/**
* Actually renders the given argument. This is a synthetic bridge method, always casting down its argument and then
* handing it off to a worker function which does the actual work. In all probability, the class Render is generic
* (Render<T extends Entity) and this method has signature public void func_76986_a(T entity, double d, double d1,
* double d2, float f, float f1). But JAD is pre 1.5 so doesn't do that.
*/
public void doRender(EntityShipBlock par1EntityShipBlock, double par2, double par4, double par6, float par8, float par9)
{
modelShipBlock.Block.setRotationPoint(-par1EntityShipBlock.Xoff, 16-par1EntityShipBlock.Yoff, -par1EntityShipBlock.Zoff);
float EntityPitch = par1EntityShipBlock.rotationPitch;
GL11.glPushMatrix();
GL11.glTranslatef((float)par2, (float)par4, (float)par6);
GL11.glRotatef(par8 - 180, 0.0F, 1.0F, 0.0F);
GL11.glRotatef(EntityPitch, 0.0F, 0.0F, 1.0F);
float f4 = 0.75F;
GL11.glScalef(f4, f4, f4);
GL11.glScalef(1.0F / f4, 1.0F / f4, 1.0F / f4);
this.bindEntityTexture(par1EntityShipBlock);
GL11.glScalef(-1.0F, -1.0F, 1.0F);
this.modelShipBlock.render(par1EntityShipBlock, 0.0F, 0.0F, -0.1F, 0.0F, 0.0F, 0.0625F);
GL11.glPopMatrix();
}

/**
* Returns the location of an entity's texture. Doesn't seem to be called unless you call Render.bindEntityTexture.
*/
protected ResourceLocation getEntityTexture(EntityShipBlock par1EntityShipBlockShipBlock)
{
return texture;
}

/**
* Returns the location of an entity's texture. Doesn't seem to be called unless you call Render.bindEntityTexture.
*/
protected ResourceLocation getEntityTexture(Entity par1EntityShipBlock)
{
return this.getEntityTexture((EntityShipBlock)par1EntityShipBlock);
}

/**
* Actually renders the given argument. This is a synthetic bridge method, always casting down its argument and then
* handing it off to a worker function which does the actual work. In all probabilty, the class Render is generic
* (Render<T extends Entity) and this method has signature public void func_76986_a(T entity, double d, double d1,
* double d2, float f, float f1). But JAD is pre 1.5 so doesn't do that.
*/
public void doRender(Entity par1EntityShipBlock, double par2, double par4, double par6, float par8, float par9)
{
this.doRender((EntityShipBlock)par1EntityShipBlock, par2, par4, par6, par8, par9);
}
}```

Model Class (if you need it):

```package modularships.renderstuff;

import net.minecraft.client.model.ModelBase;
import net.minecraft.client.model.ModelRenderer;
import net.minecraft.entity.Entity;

public class ModelShipBlock extends ModelBase
{
//fields
ModelRenderer Block;

public ModelShipBlock()
{
textureWidth = 64;
textureHeight = 32;

Block = new ModelRenderer(this, 0, 0);
Block.addBox(-8F, -8F, -8F, 16, 16, 16);
Block.setRotationPoint(0F, 16F, 0F);
Block.setTextureSize(64, 32);
Block.mirror = true;
setRotation(Block, 0F, 0F, 0F);
}

public void render(Entity par1Entity, float par2, float par3, float par4, float par5, float par6, float par7)
{
super.render(par1Entity, par2, par3, par4, par5, par6, par7);
setRotationAngles(par2, par3, par4, par5, par6, par7, par1Entity);
Block.render(par7);
}

private void setRotation(ModelRenderer model, float x, float y, float z)
{
model.rotateAngleX = x;
model.rotateAngleY = y;
model.rotateAngleZ = z;
}

public void setRotationAngles(float par1, float par2, float par3, float par4, float par5, float par6, Entity par7Entity)
{
super.setRotationAngles(par1, par2, par3, par4, par5, par6, par7Entity);
}

}
```

Crash if I just stay in the world after spawning the entity:

```[20:43:46] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
[20:43:46] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
[20:43:46] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
[20:43:46] [main/INFO] [FML]: Java is Java HotSpot(TM) 64-Bit Server VM, version 1.7.0_51, running on Windows 7:amd64:6.1, installed at C:\Program Files\Java\jre7
[20:43:46] [main/INFO] [FML]: Managed to load a deobfuscated Minecraft name- we are in a deobfuscated environment. Skipping runtime deobfuscation
[20:43:46] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLInjectionAndSortingTweaker
[20:43:46] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLInjectionAndSortingTweaker
[20:43:46] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.relauncher.CoreModManager\$FMLPluginWrapper
[20:43:46] [main/ERROR] [FML]: The binary patch set is missing. Either you are in a development environment, or things are not going to work!
[20:43:47] [main/ERROR] [FML]: The minecraft jar file:/C:/Users/DEB/.gradle/caches/minecraft/net/minecraftforge/forge/1.7.2-10.12.1.1060/forgeSrc-1.7.2-10.12.1.1060.jar!/net/minecraft/client/ClientBrandRetriever.class appears to be corrupt! There has been CRITICAL TAMPERING WITH MINECRAFT, it is highly unlikely minecraft will work! STOP NOW, get a clean copy and try again!
[20:43:47] [main/ERROR] [FML]: FML has been ordered to ignore the invalid or missing minecraft certificate. This is very likely to cause a problem!
[20:43:47] [main/ERROR] [FML]: Technical information: ClientBrandRetriever was at jar:file:/C:/Users/DEB/.gradle/caches/minecraft/net/minecraftforge/forge/1.7.2-10.12.1.1060/forgeSrc-1.7.2-10.12.1.1060.jar!/net/minecraft/client/ClientBrandRetriever.class, there were 0 certificates for it
[20:43:47] [main/ERROR] [FML]: FML appears to be missing any signature data. This is not a good thing
[20:43:47] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.relauncher.CoreModManager\$FMLPluginWrapper
[20:43:47] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLDeobfTweaker
[20:43:47] [main/INFO] [LaunchWrapper]: Launching wrapped minecraft {net.minecraft.client.main.Main}
[20:43:47] [main/INFO]: Setting user: Player207
[20:43:48] [Client thread/INFO]: LWJGL Version: 2.9.0
[20:43:48] [Client thread/ERROR]: Couldn't set icon
at net.minecraft.client.Minecraft.startGame(Minecraft.java:468) [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.7.0_51]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.7.0_51]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.7.0_51]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.7.0_51]
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:?]
[20:43:49] [Client thread/INFO] [MinecraftForge]: Attempting early MinecraftForge initialization
[20:43:49] [Client thread/INFO] [FML]: MinecraftForge v10.12.1.1060 Initialized
[20:43:49] [Client thread/INFO] [FML]: Replaced 141 ore recipies
[20:43:49] [Client thread/INFO] [MinecraftForge]: Completed early MinecraftForge initialization
[20:43:49] [Client thread/ERROR] [FML]: FML has detected a mod that is using a package name based on 'net.minecraft.src' : net.minecraft.src.FMLRenderAccessLibrary. This is generally a severe programming error.  There should be no mod code in the minecraft namespace. MOVE YOUR MOD! If you're in eclipse, select your source code and 'refactor' it into a new package. Go on. DO IT NOW!
[20:43:51] [Client thread/INFO] [deb_modularships]: Mod deb_modularships is missing the required element 'name'. Substituting deb_modularships
[20:43:51] [Client thread/INFO] [FML]: Configured a dormant chunk cache size of 0

Starting up SoundSystem...
Initializing LWJGL OpenAL
OpenAL initialized.

[20:43:52] [sound Library Loader/INFO]: Sound engine started
[20:43:52] [Client thread/INFO]: Created: 512x256 textures/blocks-atlas
[20:43:52] [Client thread/INFO]: Created: 256x256 textures/items-atlas
DIRT BLOCK >> tile.dirt
[20:43:52] [Client thread/INFO]: Created: 256x256 textures/items-atlas
[20:43:53] [Client thread/INFO]: Created: 512x256 textures/blocks-atlas

SoundSystem shutting down...
Author: Paul Lamb, www.paulscode.com

Starting up SoundSystem...
Initializing LWJGL OpenAL
OpenAL initialized.

[20:43:53] [sound Library Loader/INFO]: Sound engine started
[20:43:54] [MCO Availability Checker #1/ERROR]: Couldn't connect to Realms
[20:43:57] [server thread/INFO]: Starting integrated minecraft server version 1.7.2
[20:43:57] [server thread/INFO] [FML]: Injecting existing block and item data into this server instance
[20:43:58] [server thread/INFO]: Preparing start region for level 0
[20:43:58] [Netty Client IO #0/INFO] [FML]: Server protocol version 1
[20:43:58] [Netty IO #1/INFO] [FML]: Client protocol version 1
[20:43:58] [Netty IO #1/INFO] [FML]: Client attempting to join with 5 mods : [email protected],[email protected],[email protected],[email protected],[email protected]
[20:43:58] [Netty IO #1/INFO] [FML]: Attempting connection with missing mods [] at CLIENT
[20:43:58] [Netty Client IO #0/INFO] [FML]: Attempting connection with missing mods [] at SERVER
[20:43:58] [server thread/INFO]: Player207[local:E:c6e010b4] logged in with entity id 11 at (1381.078784686256, 4.0, -950.7350518453463)
[20:43:58] [server thread/INFO]: Player207 joined the game
called
called
[20:44:51] [server thread/ERROR]: Encountered an unexpected exception
java.lang.NoClassDefFoundError: net/minecraft/entity/Entity\$1
at net.minecraft.entity.Entity.writeToNBT(Entity.java:1578) ~[Entity.class:?]
at net.minecraft.server.integrated.IntegratedPlayerList.writePlayerData(IntegratedPlayerList.java:35) ~[integratedPlayerList.class:?]
at net.minecraft.server.management.ServerConfigurationManager.saveAllPlayerData(ServerConfigurationManager.java:915) ~[serverConfigurationManager.class:?]
at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:625) ~[MinecraftServer.class:?]
at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:118) ~[integratedServer.class:?]
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:482) [MinecraftServer.class:?]
at net.minecraft.server.MinecraftServer\$2.run(MinecraftServer.java:742) [MinecraftServer\$2.class:?]
[20:44:51] [server thread/ERROR]: This crash report has been saved to: C:\Users\DEB\Desktop\forge-1.7.2-10.12.1.1060 Advanced\Forge\.\crash-reports\crash-2014-04-25_20.44.51-server.txt
---- Minecraft Crash Report ----

Time: 4/25/14 8:44 PM
Description: Exception in server tick loop

java.lang.NoClassDefFoundError: net/minecraft/entity/Entity\$1
at net.minecraft.entity.Entity.writeToNBT(Entity.java:1578)
at net.minecraft.server.integrated.IntegratedPlayerList.writePlayerData(IntegratedPlayerList.java:35)
at net.minecraft.server.management.ServerConfigurationManager.saveAllPlayerData(ServerConfigurationManager.java:915)
at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:625)
at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:118)
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:482)
at net.minecraft.server.MinecraftServer\$2.run(MinecraftServer.java:742)

A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------

-- System Details --
Details:
Minecraft Version: 1.7.2
Operating System: Windows 7 (amd64) version 6.1
Java Version: 1.7.0_51, Oracle Corporation
Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
Memory: 315791056 bytes (301 MB) / 810024960 bytes (772 MB) up to 1905262592 bytes (1817 MB)
JVM Flags: 0 total;
AABB Pool Size: 5457 (305592 bytes; 0 MB) allocated, 5432 (304192 bytes; 0 MB) used
IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0
FML: MCP v9.01-pre FML v7.2.156.1060 Minecraft Forge 10.12.1.1060 5 mods loaded, 5 mods active
mcp{8.09} [Minecraft Coder Pack] (minecraft.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
Profiler Position: N/A (disabled)
Vec3 Pool Size: 622 (34832 bytes; 0 MB) allocated, 622 (34832 bytes; 0 MB) used
Player Count: 1 / 8; [EntityPlayerMP['Player207'/11, l='Copy of test 1-', x=1378.50, y=6.35, z=-949.50]]
Type: Integrated Server (map_client.txt)
Is Modded: Definitely; Client brand changed to 'fml,forge'
#@!@# Game crashed! Crash report saved to: #@!@# .\crash-reports\crash-2014-04-25_20.44.51-server.txt
[20:44:51] [Client Shutdown Thread/INFO]: Stopping server
[20:44:51] [Client Shutdown Thread/INFO]: Saving players
at net.minecraft.entity.Entity.writeToNBT(Entity.java:1578)
at net.minecraft.server.integrated.IntegratedPlayerList.writePlayerData(IntegratedPlayerList.java:35)
at net.minecraft.server.management.ServerConfigurationManager.saveAllPlayerData(ServerConfigurationManager.java:915)
at net.minecraft.server.MinecraftServer.stopServer(MinecraftServer.java:398)
at net.minecraft.server.integrated.IntegratedServer.stopServer(IntegratedServer.java:255)
at net.minecraft.client.Minecraft.stopIntegratedServer(Minecraft.java:2670)
at net.minecraft.client.main.Main\$2.run(Main.java:102)
AL lib: (EE) alc_cleanup: 1 device not closed
```

Crash if I close the world after spawning an entity:

```[20:49:45] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
[20:49:45] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
[20:49:45] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
[20:49:45] [main/INFO] [FML]: Java is Java HotSpot(TM) 64-Bit Server VM, version 1.7.0_51, running on Windows 7:amd64:6.1, installed at C:\Program Files\Java\jre7
[20:49:45] [main/INFO] [FML]: Managed to load a deobfuscated Minecraft name- we are in a deobfuscated environment. Skipping runtime deobfuscation
[20:49:45] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLInjectionAndSortingTweaker
[20:49:45] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLInjectionAndSortingTweaker
[20:49:45] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.relauncher.CoreModManager\$FMLPluginWrapper
[20:49:45] [main/ERROR] [FML]: The binary patch set is missing. Either you are in a development environment, or things are not going to work!
[20:49:46] [main/ERROR] [FML]: The minecraft jar file:/C:/Users/DEB/.gradle/caches/minecraft/net/minecraftforge/forge/1.7.2-10.12.1.1060/forgeSrc-1.7.2-10.12.1.1060.jar!/net/minecraft/client/ClientBrandRetriever.class appears to be corrupt! There has been CRITICAL TAMPERING WITH MINECRAFT, it is highly unlikely minecraft will work! STOP NOW, get a clean copy and try again!
[20:49:46] [main/ERROR] [FML]: FML has been ordered to ignore the invalid or missing minecraft certificate. This is very likely to cause a problem!
[20:49:46] [main/ERROR] [FML]: Technical information: ClientBrandRetriever was at jar:file:/C:/Users/DEB/.gradle/caches/minecraft/net/minecraftforge/forge/1.7.2-10.12.1.1060/forgeSrc-1.7.2-10.12.1.1060.jar!/net/minecraft/client/ClientBrandRetriever.class, there were 0 certificates for it
[20:49:46] [main/ERROR] [FML]: FML appears to be missing any signature data. This is not a good thing
[20:49:46] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.relauncher.CoreModManager\$FMLPluginWrapper
[20:49:46] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLDeobfTweaker
[20:49:46] [main/INFO] [LaunchWrapper]: Launching wrapped minecraft {net.minecraft.client.main.Main}
[20:49:47] [main/INFO]: Setting user: Player365
[20:49:47] [Client thread/INFO]: LWJGL Version: 2.9.0
[20:49:47] [Client thread/ERROR]: Couldn't set icon
at net.minecraft.client.Minecraft.startGame(Minecraft.java:468) [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.7.0_51]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.7.0_51]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.7.0_51]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.7.0_51]
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:?]
[20:49:48] [Client thread/INFO] [MinecraftForge]: Attempting early MinecraftForge initialization
[20:49:48] [Client thread/INFO] [FML]: MinecraftForge v10.12.1.1060 Initialized
[20:49:48] [Client thread/INFO] [FML]: Replaced 141 ore recipies
[20:49:48] [Client thread/INFO] [MinecraftForge]: Completed early MinecraftForge initialization
[20:49:49] [Client thread/ERROR] [FML]: FML has detected a mod that is using a package name based on 'net.minecraft.src' : net.minecraft.src.FMLRenderAccessLibrary. This is generally a severe programming error.  There should be no mod code in the minecraft namespace. MOVE YOUR MOD! If you're in eclipse, select your source code and 'refactor' it into a new package. Go on. DO IT NOW!
[20:49:50] [Client thread/INFO] [deb_modularships]: Mod deb_modularships is missing the required element 'name'. Substituting deb_modularships
[20:49:50] [Client thread/INFO] [FML]: Configured a dormant chunk cache size of 0

Starting up SoundSystem...
Initializing LWJGL OpenAL
OpenAL initialized.

[20:49:51] [sound Library Loader/INFO]: Sound engine started
[20:49:51] [Client thread/INFO]: Created: 512x256 textures/blocks-atlas
[20:49:51] [Client thread/INFO]: Created: 256x256 textures/items-atlas
DIRT BLOCK >> tile.dirt
[20:49:51] [Client thread/INFO]: Created: 256x256 textures/items-atlas
[20:49:52] [Client thread/INFO]: Created: 512x256 textures/blocks-atlas

SoundSystem shutting down...
Author: Paul Lamb, www.paulscode.com

Starting up SoundSystem...
Initializing LWJGL OpenAL
OpenAL initialized.

[20:49:52] [sound Library Loader/INFO]: Sound engine started
[20:49:53] [MCO Availability Checker #1/ERROR]: Couldn't connect to Realms
[20:49:55] [server thread/INFO]: Starting integrated minecraft server version 1.7.2
[20:49:55] [server thread/INFO] [FML]: Injecting existing block and item data into this server instance
[20:49:55] [server thread/INFO]: Preparing start region for level 0
[20:49:56] [Netty Client IO #0/INFO] [FML]: Server protocol version 1
[20:49:56] [Netty IO #1/INFO] [FML]: Client protocol version 1
[20:49:56] [Netty IO #1/INFO] [FML]: Client attempting to join with 5 mods : [email protected],[email protected],[email protected],[email protected],[email protected]
[20:49:56] [Netty IO #1/INFO] [FML]: Attempting connection with missing mods [] at CLIENT
[20:49:56] [Netty Client IO #0/INFO] [FML]: Attempting connection with missing mods [] at SERVER
[20:49:56] [server thread/INFO]: Player365[local:E:1952f66b] logged in with entity id 11 at (1381.078784686256, 4.0, -950.7350518453463)
[20:49:56] [server thread/INFO]: Player365 joined the game
[20:49:58] [server thread/INFO]: Saving and pausing game...
[20:49:58] [server thread/INFO]: Saving chunks for level 'Copy of test 1-'/Overworld
[20:49:58] [server thread/INFO]: Saving chunks for level 'Copy of test 1-'/Nether
[20:49:58] [server thread/INFO]: Saving chunks for level 'Copy of test 1-'/The End
[20:49:59] [server thread/INFO]: Saving chunks for level 'Copy of test 1-'/Overworld
[20:49:59] [server thread/INFO]: Saving chunks for level 'Copy of test 1-'/Nether
[20:49:59] [server thread/INFO]: Saving chunks for level 'Copy of test 1-'/The End
[20:50:03] [server thread/INFO]: Starting integrated minecraft server version 1.7.2
[20:50:03] [server thread/INFO] [FML]: Injecting existing block and item data into this server instance
[20:50:03] [server thread/INFO]: Preparing start region for level 0
[20:50:03] [Netty Client IO #1/INFO] [FML]: Server protocol version 1
[20:50:03] [Netty IO #3/INFO] [FML]: Client protocol version 1
[20:50:03] [Netty IO #3/INFO] [FML]: Client attempting to join with 5 mods : [email protected],[email protected],[email protected],[email protected],[email protected]
[20:50:03] [Netty IO #3/INFO] [FML]: Attempting connection with missing mods [] at CLIENT
[20:50:03] [Netty Client IO #1/INFO] [FML]: Attempting connection with missing mods [] at SERVER
[20:50:03] [server thread/INFO]: Player365[local:E:e7198f67] logged in with entity id 15713 at (1381.078784686256, 4.0, -950.7350518453463)
[20:50:03] [server thread/INFO]: Player365 joined the game
called
called
[20:50:06] [server thread/INFO]: Saving and pausing game...
[20:50:13] [server thread/ERROR]: Encountered an unexpected exception
java.lang.NoClassDefFoundError: net/minecraft/entity/Entity\$1
at net.minecraft.entity.Entity.writeToNBT(Entity.java:1578) ~[Entity.class:?]
at net.minecraft.server.integrated.IntegratedPlayerList.writePlayerData(IntegratedPlayerList.java:35) ~[integratedPlayerList.class:?]
at net.minecraft.server.management.ServerConfigurationManager.saveAllPlayerData(ServerConfigurationManager.java:915) ~[serverConfigurationManager.class:?]
at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:112) ~[integratedServer.class:?]
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:482) [MinecraftServer.class:?]
at net.minecraft.server.MinecraftServer\$2.run(MinecraftServer.java:742) [MinecraftServer\$2.class:?]
[20:50:13] [server thread/ERROR]: This crash report has been saved to: C:\Users\DEB\Desktop\forge-1.7.2-10.12.1.1060 Advanced\Forge\.\crash-reports\crash-2014-04-25_20.50.13-server.txt
[20:50:21] [server thread/ERROR]: Exception stopping the server
java.lang.NoClassDefFoundError: net/minecraft/entity/Entity\$1
at net.minecraft.entity.Entity.writeToNBT(Entity.java:1578) ~[Entity.class:?]
at net.minecraft.server.integrated.IntegratedPlayerList.writePlayerData(IntegratedPlayerList.java:35) ~[integratedPlayerList.class:?]
at net.minecraft.server.management.ServerConfigurationManager.saveAllPlayerData(ServerConfigurationManager.java:915) ~[serverConfigurationManager.class:?]
at net.minecraft.server.MinecraftServer.stopServer(MinecraftServer.java:398) ~[MinecraftServer.class:?]
at net.minecraft.server.integrated.IntegratedServer.stopServer(IntegratedServer.java:255) ~[integratedServer.class:?]
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:531) [MinecraftServer.class:?]
at net.minecraft.server.MinecraftServer\$2.run(MinecraftServer.java:742) [MinecraftServer\$2.class:?]
[20:50:21] [server thread/INFO] [FML]: The state engine was in incorrect state SERVER_STOPPING and forced into state SERVER_STOPPED. Errors may have been discarded.
---- Minecraft Crash Report ----
// I bet Cylons wouldn't have this problem.

Time: 4/25/14 8:50 PM
Description: Exception in server tick loop

java.lang.NoClassDefFoundError: net/minecraft/entity/Entity\$1
at net.minecraft.entity.Entity.writeToNBT(Entity.java:1578)
at net.minecraft.server.integrated.IntegratedPlayerList.writePlayerData(IntegratedPlayerList.java:35)
at net.minecraft.server.management.ServerConfigurationManager.saveAllPlayerData(ServerConfigurationManager.java:915)
at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:112)
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:482)
at net.minecraft.server.MinecraftServer\$2.run(MinecraftServer.java:742)

A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------

-- System Details --
Details:
Minecraft Version: 1.7.2
Operating System: Windows 7 (amd64) version 6.1
Java Version: 1.7.0_51, Oracle Corporation
Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
Memory: 137309592 bytes (130 MB) / 609746944 bytes (581 MB) up to 1905262592 bytes (1817 MB)
JVM Flags: 0 total;
AABB Pool Size: 2475 (138600 bytes; 0 MB) allocated, 2312 (129472 bytes; 0 MB) used
IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0
FML: MCP v9.01-pre FML v7.2.156.1060 Minecraft Forge 10.12.1.1060 5 mods loaded, 5 mods active
mcp{8.09} [Minecraft Coder Pack] (minecraft.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available->Available->Available->Available->Available->Available
Profiler Position: N/A (disabled)
Vec3 Pool Size: 344 (19264 bytes; 0 MB) allocated, 325 (18200 bytes; 0 MB) used
Player Count: 1 / 8; [EntityPlayerMP['Player365'/15713, l='Copy of test 1-', x=1378.50, y=6.35, z=-950.50]]
Type: Integrated Server (map_client.txt)
Is Modded: Definitely; Client brand changed to 'fml,forge'
#@!@# Game crashed! Crash report saved to: #@!@# .\crash-reports\crash-2014-04-25_20.50.13-server.txt
AL lib: (EE) alc_cleanup: 1 device not closed
```

ideas?

##### Share on other sites

Figured out the errors, they were caused by something else. Now it just rotates around itself like it did before.

Render Class:

```package modularships.renderstuff;

import net.minecraft.client.renderer.entity.Render;
import net.minecraft.entity.Entity;

import com.DEBmods.modularships.EntityShipBlock;
import com.DEBmods.modularships.modularshipsINIT;

import net.minecraft.util.ResourceLocation;

import org.lwjgl.opengl.GL11;

import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;

@SideOnly(Side.CLIENT)
public class RenderShipBlock extends Render
{
private static final ResourceLocation texture = new ResourceLocation(modularshipsINIT.MODID + ":textures/entity/shipblockentity.png");
/** instance of modelShipBlock for rendering */
protected ModelShipBlock modelShipBlock;
public RenderShipBlock()
{
this.modelShipBlock = new ModelShipBlock();
}

/**
* Actually renders the given argument. This is a synthetic bridge method, always casting down its argument and then
* handing it off to a worker function which does the actual work. In all probability, the class Render is generic
* (Render<T extends Entity) and this method has signature public void func_76986_a(T entity, double d, double d1,
* double d2, float f, float f1). But JAD is pre 1.5 so doesn't do that.
*/
public void doRender(EntityShipBlock par1EntityShipBlock, double par2, double par4, double par6, float par8, float par9)
{
modelShipBlock.Block.setRotationPoint(-par1EntityShipBlock.Xoff, 16-par1EntityShipBlock.Yoff, -par1EntityShipBlock.Zoff);
float EntityPitch = par1EntityShipBlock.rotationPitch;
GL11.glPushMatrix();
GL11.glTranslatef((float)par2, (float)par4, (float)par6);
this.modelShipBlock.Block.rotateAngleY = (float) (-1 * Math.toRadians(par8 - 180));
//GL11.glRotatef(par8 - 180, 0.0F, 1.0F, 0.0F);
//GL11.glRotatef(EntityPitch, 0.0F, 0.0F, 1.0F);
float f4 = 0.75F;
GL11.glScalef(f4, f4, f4);
GL11.glScalef(1.0F / f4, 1.0F / f4, 1.0F / f4);
this.bindEntityTexture(par1EntityShipBlock);
GL11.glScalef(-1.0F, -1.0F, 1.0F);
this.modelShipBlock.render(par1EntityShipBlock, 0.0F, 0.0F, -0.1F, 0.0F, 0.0F, 0.0625F);
GL11.glPopMatrix();
}

/**
* Returns the location of an entity's texture. Doesn't seem to be called unless you call Render.bindEntityTexture.
*/
protected ResourceLocation getEntityTexture(EntityShipBlock par1EntityShipBlockShipBlock)
{
return texture;
}

/**
* Returns the location of an entity's texture. Doesn't seem to be called unless you call Render.bindEntityTexture.
*/
protected ResourceLocation getEntityTexture(Entity par1EntityShipBlock)
{
return this.getEntityTexture((EntityShipBlock)par1EntityShipBlock);
}

/**
* Actually renders the given argument. This is a synthetic bridge method, always casting down its argument and then
* handing it off to a worker function which does the actual work. In all probabilty, the class Render is generic
* (Render<T extends Entity) and this method has signature public void func_76986_a(T entity, double d, double d1,
* double d2, float f, float f1). But JAD is pre 1.5 so doesn't do that.
*/
public void doRender(Entity par1EntityShipBlock, double par2, double par4, double par6, float par8, float par9)
{
this.doRender((EntityShipBlock)par1EntityShipBlock, par2, par4, par6, par8, par9);
}
}```

Model Class:

```package modularships.renderstuff;

import net.minecraft.client.model.ModelBase;
import net.minecraft.client.model.ModelRenderer;
import net.minecraft.entity.Entity;

public class ModelShipBlock extends ModelBase
{
//fields
ModelRenderer Block;

public ModelShipBlock()
{
textureWidth = 64;
textureHeight = 32;

Block = new ModelRenderer(this, 0, 0);
Block.addBox(-8F, -8F, -8F, 16, 16, 16);
Block.setRotationPoint(0F, 16F, 0F);
Block.setTextureSize(64, 32);
Block.mirror = true;
setRotation(Block, 0F, 0F, 0F);
}

public void render(Entity par1Entity, float par2, float par3, float par4, float par5, float par6, float par7)
{
super.render(par1Entity, par2, par3, par4, par5, par6, par7);
setRotationAngles(par2, par3, par4, par5, par6, par7, par1Entity);
Block.render(par7);
}

private void setRotation(ModelRenderer model, float x, float y, float z)
{
model.rotateAngleX = x;
model.rotateAngleY = y;
model.rotateAngleZ = z;
}

public void setRotationAngles(float par1, float par2, float par3, float par4, float par5, float par6, Entity par7Entity)
{
super.setRotationAngles(par1, par2, par3, par4, par5, par6, par7Entity);
}

}```

##### Share on other sites

update, realized some of my mistakes, now crashes on render.

```package modularships.renderstuff;

import net.minecraft.client.renderer.entity.Render;
import net.minecraft.entity.Entity;

import com.DEBmods.modularships.EntityShipBlock;
import com.DEBmods.modularships.modularshipsINIT;

import net.minecraft.util.ResourceLocation;

import org.lwjgl.opengl.GL11;

import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;

@SideOnly(Side.CLIENT)
public class RenderShipBlock extends Render
{
private static final ResourceLocation texture = new ResourceLocation(modularshipsINIT.MODID + ":textures/entity/shipblockentity.png");
/** instance of modelShipBlock for rendering */
protected ModelShipBlock modelShipBlock;
public RenderShipBlock()
{
this.modelShipBlock = new ModelShipBlock();
}

/**
* Actually renders the given argument. This is a synthetic bridge method, always casting down its argument and then
* handing it off to a worker function which does the actual work. In all probability, the class Render is generic
* (Render<T extends Entity) and this method has signature public void func_76986_a(T entity, double d, double d1,
* double d2, float f, float f1). But JAD is pre 1.5 so doesn't do that.
*/
public void doRender(EntityShipBlock par1EntityShipBlock, double par2, double par4, double par6, float par8, float par9)
{
//modelShipBlock.Block.setRotationPoint(16 * par1EntityShipBlock.Xoff, 16 + (16 * par1EntityShipBlock.Yoff), 16 * par1EntityShipBlock.Zoff);
modelShipBlock.Block.setRotationPoint((float)par1EntityShipBlock.controller.posX, (float)par1EntityShipBlock.controller.posY, (float)par1EntityShipBlock.controller.posZ);
modelShipBlock.Block.offsetX = par1EntityShipBlock.Xoff;
modelShipBlock.Block.offsetY = par1EntityShipBlock.Yoff;
modelShipBlock.Block.offsetZ = par1EntityShipBlock.Zoff;
float EntityPitch = par1EntityShipBlock.rotationPitch;
GL11.glPushMatrix();
GL11.glTranslatef((float)par2, (float)par4, (float)par6);
this.modelShipBlock.Block.rotateAngleY = (float) (-1 * Math.toRadians(par8 - 180));
GL11.glRotatef(par8 - 180, 0.0F, 1.0F, 0.0F);
//GL11.glRotatef(EntityPitch, 0.0F, 0.0F, 1.0F);
float f4 = 0.75F;
GL11.glScalef(f4, f4, f4);
GL11.glScalef(1.0F / f4, 1.0F / f4, 1.0F / f4);
this.bindEntityTexture(par1EntityShipBlock);
GL11.glScalef(-1.0F, -1.0F, 1.0F);
this.modelShipBlock.render(par1EntityShipBlock, 0.0F, 0.0F, -0.1F, 0.0F, 0.0F, 0.0625F);
GL11.glPopMatrix();
//System.out.println(16 * par1EntityShipBlock.Xoff + " " + 16 + (16 * par1EntityShipBlock.Yoff) + " " + 16 * par1EntityShipBlock.Zoff);
}

/**
* Returns the location of an entity's texture. Doesn't seem to be called unless you call Render.bindEntityTexture.
*/
protected ResourceLocation getEntityTexture(EntityShipBlock par1EntityShipBlockShipBlock)
{
return texture;
}

/**
* Returns the location of an entity's texture. Doesn't seem to be called unless you call Render.bindEntityTexture.
*/
protected ResourceLocation getEntityTexture(Entity par1EntityShipBlock)
{
return this.getEntityTexture((EntityShipBlock)par1EntityShipBlock);
}

/**
* Actually renders the given argument. This is a synthetic bridge method, always casting down its argument and then
* handing it off to a worker function which does the actual work. In all probabilty, the class Render is generic
* (Render<T extends Entity) and this method has signature public void func_76986_a(T entity, double d, double d1,
* double d2, float f, float f1). But JAD is pre 1.5 so doesn't do that.
*/
public void doRender(Entity par1EntityShipBlock, double par2, double par4, double par6, float par8, float par9)
{
this.doRender((EntityShipBlock)par1EntityShipBlock, par2, par4, par6, par8, par9);
}
}```

##### Share on other sites

I. Stellarium for Minecraft: Configurable Universe for Minecraft! (WIP)

II. Stellar Sky, Better Star Rendering&Sky Utility mod, had separated from Stellarium.

##### Share on other sites

sorry:

```[20:23:24] [main/INFO] [LaunchWrapper]: Loading tweak class name cpw.mods.fml.common.launcher.FMLTweaker
[20:23:24] [main/INFO] [LaunchWrapper]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLTweaker
[20:23:24] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLTweaker
[20:23:24] [main/INFO] [FML]: Java is Java HotSpot(TM) 64-Bit Server VM, version 1.7.0_51, running on Windows 7:amd64:6.1, installed at C:\Program Files\Java\jre7
[20:23:24] [main/INFO] [FML]: Managed to load a deobfuscated Minecraft name- we are in a deobfuscated environment. Skipping runtime deobfuscation
[20:23:24] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLInjectionAndSortingTweaker
[20:23:24] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLInjectionAndSortingTweaker
[20:23:24] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.relauncher.CoreModManager\$FMLPluginWrapper
[20:23:24] [main/ERROR] [FML]: The binary patch set is missing. Either you are in a development environment, or things are not going to work!
[20:23:25] [main/ERROR] [FML]: The minecraft jar file:/C:/Users/DEB/.gradle/caches/minecraft/net/minecraftforge/forge/1.7.2-10.12.1.1060/forgeSrc-1.7.2-10.12.1.1060.jar!/net/minecraft/client/ClientBrandRetriever.class appears to be corrupt! There has been CRITICAL TAMPERING WITH MINECRAFT, it is highly unlikely minecraft will work! STOP NOW, get a clean copy and try again!
[20:23:25] [main/ERROR] [FML]: FML has been ordered to ignore the invalid or missing minecraft certificate. This is very likely to cause a problem!
[20:23:25] [main/ERROR] [FML]: Technical information: ClientBrandRetriever was at jar:file:/C:/Users/DEB/.gradle/caches/minecraft/net/minecraftforge/forge/1.7.2-10.12.1.1060/forgeSrc-1.7.2-10.12.1.1060.jar!/net/minecraft/client/ClientBrandRetriever.class, there were 0 certificates for it
[20:23:25] [main/ERROR] [FML]: FML appears to be missing any signature data. This is not a good thing
[20:23:25] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.relauncher.CoreModManager\$FMLPluginWrapper
[20:23:25] [main/INFO] [LaunchWrapper]: Calling tweak class cpw.mods.fml.common.launcher.FMLDeobfTweaker
[20:23:25] [main/INFO] [LaunchWrapper]: Launching wrapped minecraft {net.minecraft.client.main.Main}
[20:23:25] [main/INFO]: Setting user: Player87
[20:23:26] [Client thread/INFO]: LWJGL Version: 2.9.0
[20:23:26] [Client thread/ERROR]: Couldn't set icon
at net.minecraft.client.Minecraft.startGame(Minecraft.java:468) [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.7.0_51]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.7.0_51]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.7.0_51]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.7.0_51]
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:?]
[20:23:27] [Client thread/INFO] [MinecraftForge]: Attempting early MinecraftForge initialization
[20:23:27] [Client thread/INFO] [FML]: MinecraftForge v10.12.1.1060 Initialized
[20:23:27] [Client thread/INFO] [FML]: Replaced 141 ore recipies
[20:23:27] [Client thread/INFO] [MinecraftForge]: Completed early MinecraftForge initialization
[20:23:27] [Client thread/ERROR] [FML]: FML has detected a mod that is using a package name based on 'net.minecraft.src' : net.minecraft.src.FMLRenderAccessLibrary. This is generally a severe programming error.  There should be no mod code in the minecraft namespace. MOVE YOUR MOD! If you're in eclipse, select your source code and 'refactor' it into a new package. Go on. DO IT NOW!
[20:23:28] [Client thread/INFO] [deb_modularships]: Mod deb_modularships is missing the required element 'name'. Substituting deb_modularships
[20:23:29] [Client thread/INFO] [FML]: Configured a dormant chunk cache size of 0

Starting up SoundSystem...
Initializing LWJGL OpenAL
OpenAL initialized.

[20:23:29] [sound Library Loader/INFO]: Sound engine started
[20:23:30] [Client thread/INFO]: Created: 512x256 textures/blocks-atlas
[20:23:30] [Client thread/INFO]: Created: 256x256 textures/items-atlas
DIRT BLOCK >> tile.dirt
[20:23:30] [Client thread/INFO]: Created: 256x256 textures/items-atlas
[20:23:30] [Client thread/INFO]: Created: 512x256 textures/blocks-atlas

SoundSystem shutting down...
Author: Paul Lamb, www.paulscode.com

Starting up SoundSystem...
Initializing LWJGL OpenAL
OpenAL initialized.

[20:23:31] [sound Library Loader/INFO]: Sound engine started
[20:23:31] [MCO Availability Checker #1/ERROR]: Couldn't connect to Realms
[20:23:33] [server thread/INFO]: Starting integrated minecraft server version 1.7.2
[20:23:33] [server thread/INFO] [FML]: Injecting existing block and item data into this server instance
[20:23:34] [server thread/INFO]: Preparing start region for level 0
[20:23:34] [Netty Client IO #0/INFO] [FML]: Server protocol version 1
[20:23:34] [Netty IO #1/INFO] [FML]: Client protocol version 1
[20:23:34] [Netty IO #1/INFO] [FML]: Client attempting to join with 5 mods : [email protected],[email protected],[email protected],[email protected],[email protected]
[20:23:34] [Netty IO #1/INFO] [FML]: Attempting connection with missing mods [] at CLIENT
[20:23:34] [Netty Client IO #0/INFO] [FML]: Attempting connection with missing mods [] at SERVER
[20:23:34] [server thread/INFO]: Player87[local:E:8a9312fd] logged in with entity id 25 at (1398.5, 6.349999964237213, -959.5)
[20:23:34] [server thread/INFO]: Player87 joined the game
[20:23:35] [server thread/INFO]: Saving chunks for level 'test 1-'/Overworld
[20:23:35] [server thread/INFO]: Saving chunks for level 'test 1-'/Nether
[20:23:35] [server thread/INFO]: Saving chunks for level 'test 1-'/The End
[20:23:35] [Client thread/FATAL]: Reported exception thrown!
net.minecraft.util.ReportedException: Rendering entity in world
at net.minecraft.client.renderer.entity.RenderManager.func_147939_a(RenderManager.java:346) ~[RenderManager.class:?]
at net.minecraft.client.renderer.entity.RenderManager.renderEntityStatic(RenderManager.java:278) ~[RenderManager.class:?]
at net.minecraft.client.renderer.entity.RenderManager.renderEntitySimple(RenderManager.java:251) ~[RenderManager.class:?]
at net.minecraft.client.renderer.RenderGlobal.renderEntities(RenderGlobal.java:532) ~[RenderGlobal.class:?]
at net.minecraft.client.renderer.EntityRenderer.renderWorld(EntityRenderer.java:1295) ~[EntityRenderer.class:?]
at net.minecraft.client.renderer.EntityRenderer.updateCameraAndRender(EntityRenderer.java:1094) ~[EntityRenderer.class:?]
at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1022) ~[Minecraft.class:?]
at net.minecraft.client.Minecraft.run(Minecraft.java:910) [Minecraft.class:?]
at net.minecraft.client.main.Main.main(Main.java:112) [Main.class:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0_51]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.7.0_51]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.7.0_51]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.7.0_51]
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:?]
Caused by: java.lang.NullPointerException
at modularships.renderstuff.RenderShipBlock.doRender(RenderShipBlock.java:37) ~[RenderShipBlock.class:?]
at modularships.renderstuff.RenderShipBlock.doRender(RenderShipBlock.java:81) ~[RenderShipBlock.class:?]
at net.minecraft.client.renderer.entity.RenderManager.func_147939_a(RenderManager.java:300) ~[RenderManager.class:?]
... 14 more
---- Minecraft Crash Report ----
// This doesn't make any sense!

Time: 4/26/14 8:23 PM
Description: Rendering entity in world

java.lang.NullPointerException: Rendering entity in world
at modularships.renderstuff.RenderShipBlock.doRender(RenderShipBlock.java:37)
at modularships.renderstuff.RenderShipBlock.doRender(RenderShipBlock.java:81)
at net.minecraft.client.renderer.entity.RenderManager.func_147939_a(RenderManager.java:300)
at net.minecraft.client.renderer.entity.RenderManager.renderEntityStatic(RenderManager.java:278)
at net.minecraft.client.renderer.entity.RenderManager.renderEntitySimple(RenderManager.java:251)
at net.minecraft.client.renderer.RenderGlobal.renderEntities(RenderGlobal.java:532)
at net.minecraft.client.renderer.EntityRenderer.renderWorld(EntityRenderer.java:1295)
at net.minecraft.client.renderer.EntityRenderer.updateCameraAndRender(EntityRenderer.java:1094)
at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1022)
at net.minecraft.client.Minecraft.run(Minecraft.java:910)
at net.minecraft.client.main.Main.main(Main.java:112)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at net.minecraft.launchwrapper.Launch.launch(Launch.java:134)
at net.minecraft.launchwrapper.Launch.main(Launch.java:28)

A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------

Stacktrace:
at modularships.renderstuff.RenderShipBlock.doRender(RenderShipBlock.java:37)
at modularships.renderstuff.RenderShipBlock.doRender(RenderShipBlock.java:81)

-- Entity being rendered --
Details:
Entity Type: entityshipblock (com.DEBmods.modularships.EntityShipBlock)
Entity ID: 9
Entity Name: entity.entityshipblock.name
Entity's Exact location: 1397.50, 5.50, -959.50
Entity's Block location: World: (1397,5,-960), Chunk: (at 5,0,0 in 87,-60; contains blocks 1392,0,-960 to 1407,255,-945), Region: (2,-2; contains chunks 64,-64 to 95,-33, blocks 1024,0,-1024 to 1535,255,-513)
Entity's Momentum: 0.00, 0.00, 0.00

-- Renderer details --
Details:
Assigned renderer: modularships.renderstuff.RenderShipBlock@4aa3a04
Location: -1.00,-2.47,0.00 - World: (-1,-3,0), Chunk: (at 15,-1,0 in -1,0; contains blocks -16,0,0 to -1,255,15), Region: (-1,0; contains chunks -32,0 to -1,31, blocks -512,0,0 to -1,255,511)
Rotation: 90.0
Delta: 0.9168632
Stacktrace:
at net.minecraft.client.renderer.entity.RenderManager.func_147939_a(RenderManager.java:300)
at net.minecraft.client.renderer.entity.RenderManager.renderEntityStatic(RenderManager.java:278)
at net.minecraft.client.renderer.entity.RenderManager.renderEntitySimple(RenderManager.java:251)
at net.minecraft.client.renderer.RenderGlobal.renderEntities(RenderGlobal.java:532)
at net.minecraft.client.renderer.EntityRenderer.renderWorld(EntityRenderer.java:1295)

-- Affected level --
Details:
Level name: MpServer
All players: 1 total; [EntityClientPlayerMP['Player87'/25, l='MpServer', x=1398.50, y=7.97, z=-959.50]]
Chunk stats: MultiplayerChunkCache: 110, 110
Level seed: 0
Level generator: ID 01 - flat, ver 0. Features enabled: false
Level generator options:
Level spawn location: World: (1389,4,-955), Chunk: (at 13,0,5 in 86,-60; contains blocks 1376,0,-960 to 1391,255,-945), Region: (2,-2; contains chunks 64,-64 to 95,-33, blocks 1024,0,-1024 to 1535,255,-513)
Level time: 384 game time, 384 day time
Level dimension: 0
Level storage version: 0x00000 - Unknown?
Level weather: Rain time: 0 (now: false), thunder time: 0 (now: false)
Level game mode: Game mode: creative (ID 1). Hardcore: false. Cheats: false
Forced entities: 17 total; [EntitySlime['Slime'/3, l='MpServer', x=1330.93, y=4.00, z=-1006.51], EntitySlime['Slime'/4, l='MpServer', x=1343.74, y=4.00, z=-901.47], EntitySlime['Slime'/5, l='MpServer', x=1356.35, y=4.33, z=-917.60], EntityShipBlock['entity.entityshipblock.name'/9, l='MpServer', x=1397.50, y=5.50, z=-959.50], EntitySlime['Slime'/10, l='MpServer', x=1411.33, y=4.33, z=-883.17], EntitySlime['Slime'/11, l='MpServer', x=1435.22, y=4.00, z=-1008.88], EntitySlime['Slime'/12, l='MpServer', x=1426.77, y=4.00, z=-994.92], EntitySlime['Slime'/13, l='MpServer', x=1430.04, y=4.00, z=-996.37], EntitySlime['Slime'/14, l='MpServer', x=1430.61, y=4.57, z=-1000.08], EntitySlime['Slime'/15, l='MpServer', x=1439.01, y=4.00, z=-990.27], EntityClientPlayerMP['Player87'/25, l='MpServer', x=1398.50, y=7.97, z=-959.50], EntitySlime['Slime'/17, l='MpServer', x=1438.44, y=4.00, z=-930.31], EntitySlime['Slime'/16, l='MpServer', x=1435.56, y=4.00, z=-989.51], EntitySlime['Slime'/18, l='MpServer', x=1437.96, y=4.00, z=-900.88], EntitySlime['Slime'/21, l='MpServer', x=1470.66, y=5.08, z=-996.89], EntitySlime['Slime'/20, l='MpServer', x=1443.46, y=4.00, z=-915.26], EntityShipControl['entity.entityshipcontrol.name'/26, l='MpServer', x=1398.50, y=5.50, z=-959.50]]
Retry entities: 0 total; []
Server brand: fml,forge
Server type: Integrated singleplayer server
Stacktrace:
at net.minecraft.client.Minecraft.run(Minecraft.java:932)
at net.minecraft.client.main.Main.main(Main.java:112)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at net.minecraft.launchwrapper.Launch.launch(Launch.java:134)
at net.minecraft.launchwrapper.Launch.main(Launch.java:28)

-- System Details --
Details:
Minecraft Version: 1.7.2
Operating System: Windows 7 (amd64) version 6.1
Java Version: 1.7.0_51, Oracle Corporation
Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
Memory: 304486728 bytes (290 MB) / 556793856 bytes (531 MB) up to 1905262592 bytes (1817 MB)
JVM Flags: 0 total;
AABB Pool Size: 20003 (1120168 bytes; 1 MB) allocated, 944 (52864 bytes; 0 MB) used
IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0
FML: MCP v9.01-pre FML v7.2.156.1060 Minecraft Forge 10.12.1.1060 5 mods loaded, 5 mods active
mcp{8.09} [Minecraft Coder Pack] (minecraft.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available
Launched Version: 1.6
LWJGL: 2.9.0
OpenGL: GeForce GTX 550 Ti/PCIe/SSE2 GL version 4.4.0, NVIDIA Corporation
Is Modded: Definitely; Client brand changed to 'fml,forge'
Type: Client (map_client.txt)
Resource Packs: []
Current Language: ~~ERROR~~ NullPointerException: null
Profiler Position: N/A (disabled)
Vec3 Pool Size: 263 (14728 bytes; 0 MB) allocated, 184 (10304 bytes; 0 MB) used
Anisotropic Filtering: Off (1)
#@!@# Game crashed! Crash report saved to: #@!@# C:\Users\DEB\Desktop\forge-1.7.2-10.12.1.1060 Advanced\Forge\.\crash-reports\crash-2014-04-26_20.23.35-client.txt
AL lib: (EE) alc_cleanup: 1 device not closed
```

##### Share on other sites

I think your par1EntityShipBlock.controller is null.

Was it exceptional case(like when the ship is not yet builded) or common case?

If it is common case, then you may miss setting the controller value.

I. Stellarium for Minecraft: Configurable Universe for Minecraft! (WIP)

II. Stellar Sky, Better Star Rendering&Sky Utility mod, had separated from Stellarium.

## 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.

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

×   Pasted as rich text.   Restore formatting

Only 75 emoji are allowed.

×   Your previous content has been restored.   Clear editor

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

### Announcements

×

• #### Activity

×
• Create New...