Jump to content

Ticking Entity onUpdate() for new Fishing Rod


Xwaffle

Recommended Posts

Okay, I am working on making a modding in a new Fishing rod and what's happening is that I've basically just made new EntityFishHook, ItemFishingRod, and I also had to make a RenderEntity Class. I did in fact render the entity fine. So right now I am going in game and I am trying to right click and to see if the item will work and I spits this error at me.

 

java.lang.NullPointerException
at net.minecraft.entity.projectile.EntityFishHook.onUpdate(EntityFishHook.java:205)
at PixelGoal.EntityFishingHook.onUpdate(EntityFishingHook.java:190)
at net.minecraft.world.World.updateEntityWithOptionalForce(World.java:2337)
at net.minecraft.world.WorldServer.updateEntityWithOptionalForce(WorldServer.java:717)
at net.minecraft.world.World.updateEntity(World.java:2299)
at net.minecraft.world.World.updateEntities(World.java:2145)
at net.minecraft.world.WorldServer.updateEntities(WorldServer.java:546)
at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:652)
at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:571)
at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:127)
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:469)
at net.minecraft.server.ThreadMinecraftServer.run(ThreadMinecraftServer.java:16)
--- END ERROR REPORT c50339c7 ----------

 

 

Obviously the error has something to do with the Entity. here is the class can somone please give me some help.

 

 

 

 

 

package PixelGoal;

import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import java.util.List;
import net.minecraft.block.material.Material;
import net.minecraft.entity.*;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.item.EntityXPOrb;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.projectile.EntityFishHook;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.stats.StatList;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.DamageSource;
import net.minecraft.util.MathHelper;
import net.minecraft.util.MovingObjectPosition;
import net.minecraft.util.Vec3;
import net.minecraft.world.World;

public class EntityFishingHook extends EntityFishHook
{
/** The tile this entity is on, X position */
    private int xTile;

    /** The tile this entity is on, Y position */
    private int yTile;

    /** The tile this entity is on, Z position */
    private int zTile;
    private int inTile;
    private boolean inGround;
    public int shake;
    public EntityPlayer angler;
    private int ticksInGround;
    private int ticksInAir;

    /** the number of ticks remaining until this fish can no longer be caught */
    private int ticksCatchable;

    /**
     * The entity that the fishing rod is connected to, if any. When you right click on the fishing rod and the hook
     * falls on to an entity, this it that entity.
     */
    public Entity bobber;
    private int fishPosRotationIncrements;
    private double fishX;
    private double fishY;
    private double fishZ;
    private double fishYaw;
    private double fishPitch;
    @SideOnly(Side.CLIENT)
    private double velocityX;
    @SideOnly(Side.CLIENT)
    private double velocityY;
    @SideOnly(Side.CLIENT)
    private double velocityZ;

    public EntityFishingHook(World par1World)
    {
        super(par1World);
        this.xTile = -1;
        this.yTile = -1;
        this.zTile = -1;
        this.inTile = 0;
        this.inGround = false;
        this.shake = 0;
        this.ticksInAir = 0;
        this.ticksCatchable = 0;
        this.bobber = null;
        this.setSize(0.25F, 0.25F);
        this.ignoreFrustumCheck = true;
    }

    @SideOnly(Side.CLIENT)
    public EntityFishingHook(World par1World, double par2, double par4, double par6, EntityPlayer par8EntityPlayer)
    {
        this(par1World);
        this.setPosition(par2, par4, par6);
        this.ignoreFrustumCheck = true;
        this.angler = par8EntityPlayer;
        par8EntityPlayer.fishEntity = this;
    }

    public EntityFishingHook(World par1World, EntityPlayer par2EntityPlayer)
    {
        super(par1World);
        this.xTile = -1;
        this.yTile = -1;
        this.zTile = -1;
        this.inTile = 0;
        this.inGround = false;
        this.shake = 0;
        this.ticksInAir = 0;
        this.ticksCatchable = 0;
        this.bobber = null;
        this.ignoreFrustumCheck = true;
        this.angler = par2EntityPlayer;
        this.angler.fishEntity = this;
        this.setSize(0.25F, 0.25F);
        this.setLocationAndAngles(par2EntityPlayer.posX, par2EntityPlayer.posY + 1.62D - (double)par2EntityPlayer.yOffset, par2EntityPlayer.posZ, par2EntityPlayer.rotationYaw, par2EntityPlayer.rotationPitch);
        this.posX -= (double)(MathHelper.cos(this.rotationYaw / 180.0F * (float)Math.PI) * 0.16F);
        this.posY -= 0.10000000149011612D;
        this.posZ -= (double)(MathHelper.sin(this.rotationYaw / 180.0F * (float)Math.PI) * 0.16F);
        this.setPosition(this.posX, this.posY, this.posZ);
        this.yOffset = 0.0F;
        float f = 0.4F;
        this.motionX = (double)(-MathHelper.sin(this.rotationYaw / 180.0F * (float)Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float)Math.PI) * f);
        this.motionZ = (double)(MathHelper.cos(this.rotationYaw / 180.0F * (float)Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float)Math.PI) * f);
        this.motionY = (double)(-MathHelper.sin(this.rotationPitch / 180.0F * (float)Math.PI) * f);
        this.calculateVelocity(this.motionX, this.motionY, this.motionZ, 1.5F, 1.0F);
    }

    protected void entityInit() {}

    @SideOnly(Side.CLIENT)

    /**
     * Checks if the entity is in range to render by using the past in distance and comparing it to its average edge
     * length * 64 * renderDistanceWeight Args: distance
     */
    public boolean isInRangeToRenderDist(double par1)
    {
        double d1 = this.boundingBox.getAverageEdgeLength() * 4.0D;
        d1 *= 64.0D;
        return par1 < d1 * d1;
    }

    public void calculateVelocity(double par1, double par3, double par5, float par7, float par8)
    {
        float f2 = MathHelper.sqrt_double(par1 * par1 + par3 * par3 + par5 * par5);
        par1 /= (double)f2;
        par3 /= (double)f2;
        par5 /= (double)f2;
        par1 += this.rand.nextGaussian() * 0.007499999832361937D * (double)par8;
        par3 += this.rand.nextGaussian() * 0.007499999832361937D * (double)par8;
        par5 += this.rand.nextGaussian() * 0.007499999832361937D * (double)par8;
        par1 *= (double)par7;
        par3 *= (double)par7;
        par5 *= (double)par7;
        this.motionX = par1;
        this.motionY = par3;
        this.motionZ = par5;
        float f3 = MathHelper.sqrt_double(par1 * par1 + par5 * par5);
        this.prevRotationYaw = this.rotationYaw = (float)(Math.atan2(par1, par5) * 180.0D / Math.PI);
        this.prevRotationPitch = this.rotationPitch = (float)(Math.atan2(par3, (double)f3) * 180.0D / Math.PI);
        this.ticksInGround = 0;
    }

    @SideOnly(Side.CLIENT)

    /**
     * Sets the position and rotation. Only difference from the other one is no bounding on the rotation. Args: posX,
     * posY, posZ, yaw, pitch
     */
    public void setPositionAndRotation2(double par1, double par3, double par5, float par7, float par8, int par9)
    {
        this.fishX = par1;
        this.fishY = par3;
        this.fishZ = par5;
        this.fishYaw = (double)par7;
        this.fishPitch = (double)par8;
        this.fishPosRotationIncrements = par9;
        this.motionX = this.velocityX;
        this.motionY = this.velocityY;
        this.motionZ = this.velocityZ;
    }

    @SideOnly(Side.CLIENT)

    /**
     * Sets the velocity to the args. Args: x, y, z
     */
    public void setVelocity(double par1, double par3, double par5)
    {
        this.velocityX = this.motionX = par1;
        this.velocityY = this.motionY = par3;
        this.velocityZ = this.motionZ = par5;
    }

    /**
     * Called to update the entity's position/logic.
     */
    @Override
    public void onUpdate()
    {
    	super.onUpdate();
    	

        if (this.fishPosRotationIncrements > 0)
        {
            double d0 = this.posX + (this.fishX - this.posX) / (double)this.fishPosRotationIncrements;
            double d1 = this.posY + (this.fishY - this.posY) / (double)this.fishPosRotationIncrements;
            double d2 = this.posZ + (this.fishZ - this.posZ) / (double)this.fishPosRotationIncrements;
            double d3 = MathHelper.wrapAngleTo180_double(this.fishYaw - (double)this.rotationYaw);
            this.rotationYaw = (float)((double)this.rotationYaw + d3 / (double)this.fishPosRotationIncrements);
            this.rotationPitch = (float)((double)this.rotationPitch + (this.fishPitch - (double)this.rotationPitch) / (double)this.fishPosRotationIncrements);
            --this.fishPosRotationIncrements;
            this.setPosition(d0, d1, d2);
            this.setRotation(this.rotationYaw, this.rotationPitch);
        }
        else
        {
            if (!this.worldObj.isRemote)
            {
                ItemStack itemstack = this.angler.getCurrentEquippedItem();

                if (this.angler.isDead || !this.angler.isEntityAlive() || itemstack == null || itemstack.getItem() != PixelGoal.OldRod || this.getDistanceSqToEntity(this.angler) > 1024.0D)
                {
                    this.setDead();
                    this.angler.fishEntity = null;
                    return;
                }

                if (this.bobber != null)
                {
                    if (!this.bobber.isDead)
                    {
                        this.posX = this.bobber.posX;
                        this.posY = this.bobber.boundingBox.minY + (double)this.bobber.height * 0.8D;
                        this.posZ = this.bobber.posZ;
                        return;
                    }

                    this.bobber = null;
                }
            }

            if (this.shake > 0)
            {
                --this.shake;
            }

            if (this.inGround)
            {
                int i = this.worldObj.getBlockId(this.xTile, this.yTile, this.zTile);

                if (i == this.inTile)
                {
                    ++this.ticksInGround;

                    if (this.ticksInGround == 1200)
                    {
                        this.setDead();
                    }

                    return;
                }

                this.inGround = false;
                this.motionX *= (double)(this.rand.nextFloat() * 0.2F);
                this.motionY *= (double)(this.rand.nextFloat() * 0.2F);
                this.motionZ *= (double)(this.rand.nextFloat() * 0.2F);
                this.ticksInGround = 0;
                this.ticksInAir = 0;
            }
            else
            {
                ++this.ticksInAir;
            }

            Vec3 vec3 = this.worldObj.getWorldVec3Pool().getVecFromPool(this.posX, this.posY, this.posZ);
            Vec3 vec31 = this.worldObj.getWorldVec3Pool().getVecFromPool(this.posX + this.motionX, this.posY + this.motionY, this.posZ + this.motionZ);
            MovingObjectPosition movingobjectposition = this.worldObj.rayTraceBlocks(vec3, vec31);
            vec3 = this.worldObj.getWorldVec3Pool().getVecFromPool(this.posX, this.posY, this.posZ);
            vec31 = this.worldObj.getWorldVec3Pool().getVecFromPool(this.posX + this.motionX, this.posY + this.motionY, this.posZ + this.motionZ);

            if (movingobjectposition != null)
            {
                vec31 = this.worldObj.getWorldVec3Pool().getVecFromPool(movingobjectposition.hitVec.xCoord, movingobjectposition.hitVec.yCoord, movingobjectposition.hitVec.zCoord);
            }

            Entity entity = null;
            List list = this.worldObj.getEntitiesWithinAABBExcludingEntity(this, this.boundingBox.addCoord(this.motionX, this.motionY, this.motionZ).expand(1.0D, 1.0D, 1.0D));
            double d4 = 0.0D;
            double d5;

            for (int j = 0; j < list.size(); ++j)
            {
                Entity entity1 = (Entity)list.get(j);

                if (entity1.canBeCollidedWith() && (entity1 != this.angler || this.ticksInAir >= 5))
                {
                    float f = 0.3F;
                    AxisAlignedBB axisalignedbb = entity1.boundingBox.expand((double)f, (double)f, (double)f);
                    MovingObjectPosition movingobjectposition1 = axisalignedbb.calculateIntercept(vec3, vec31);

                    if (movingobjectposition1 != null)
                    {
                        d5 = vec3.distanceTo(movingobjectposition1.hitVec);

                        if (d5 < d4 || d4 == 0.0D)
                        {
                            entity = entity1;
                            d4 = d5;
                        }
                    }
                }
            }

            if (entity != null)
            {
                movingobjectposition = new MovingObjectPosition(entity);
            }

            if (movingobjectposition != null)
            {
                if (movingobjectposition.entityHit != null)
                {
                    if (movingobjectposition.entityHit.attackEntityFrom(DamageSource.causeThrownDamage(this, this.angler), 0))
                    {
                        this.bobber = movingobjectposition.entityHit;
                    }
                }
                else
                {
                    this.inGround = true;
                }
            }

            if (!this.inGround)
            {
                this.moveEntity(this.motionX, this.motionY, this.motionZ);
                float f1 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ);
                this.rotationYaw = (float)(Math.atan2(this.motionX, this.motionZ) * 180.0D / Math.PI);

                for (this.rotationPitch = (float)(Math.atan2(this.motionY, (double)f1) * 180.0D / Math.PI); this.rotationPitch - this.prevRotationPitch < -180.0F; this.prevRotationPitch -= 360.0F)
                {
                    ;
                }

                while (this.rotationPitch - this.prevRotationPitch >= 180.0F)
                {
                    this.prevRotationPitch += 360.0F;
                }

                while (this.rotationYaw - this.prevRotationYaw < -180.0F)
                {
                    this.prevRotationYaw -= 360.0F;
                }

                while (this.rotationYaw - this.prevRotationYaw >= 180.0F)
                {
                    this.prevRotationYaw += 360.0F;
                }

                this.rotationPitch = this.prevRotationPitch + (this.rotationPitch - this.prevRotationPitch) * 0.2F;
                this.rotationYaw = this.prevRotationYaw + (this.rotationYaw - this.prevRotationYaw) * 0.2F;
                float f2 = 0.92F;

                if (this.onGround || this.isCollidedHorizontally)
                {
                    f2 = 0.5F;
                }

                byte b0 = 5;
                double d6 = 0.0D;

                for (int k = 0; k < b0; ++k)
                {
                    double d7 = this.boundingBox.minY + (this.boundingBox.maxY - this.boundingBox.minY) * (double)(k + 0) / (double)b0 - 0.125D + 0.125D;
                    double d8 = this.boundingBox.minY + (this.boundingBox.maxY - this.boundingBox.minY) * (double)(k + 1) / (double)b0 - 0.125D + 0.125D;
                    AxisAlignedBB axisalignedbb1 = AxisAlignedBB.getAABBPool().getAABB(this.boundingBox.minX, d7, this.boundingBox.minZ, this.boundingBox.maxX, d8, this.boundingBox.maxZ);

                    if (this.worldObj.isAABBInMaterial(axisalignedbb1, Material.water))
                    {
                        d6 += 1.0D / (double)b0;
                    }
                }

                if (d6 > 0.0D)
                {
                    if (this.ticksCatchable > 0)
                    {
                        --this.ticksCatchable;
                    }
                    else
                    {
                        short short1 = 500;

                        if (this.worldObj.canLightningStrikeAt(MathHelper.floor_double(this.posX), MathHelper.floor_double(this.posY) + 1, MathHelper.floor_double(this.posZ)))
                        {
                            short1 = 300;
                        }

                        if (this.rand.nextInt(short1) == 0)
                        {
                            this.ticksCatchable = this.rand.nextInt(30) + 10;
                            this.motionY -= 0.20000000298023224D;
                            this.playSound("random.splash", 0.25F, 1.0F + (this.rand.nextFloat() - this.rand.nextFloat()) * 0.4F);
                            float f3 = (float)MathHelper.floor_double(this.boundingBox.minY);
                            int l;
                            float f4;
                            float f5;

                            for (l = 0; (float)l < 1.0F + this.width * 20.0F; ++l)
                            {
                                f5 = (this.rand.nextFloat() * 2.0F - 1.0F) * this.width;
                                f4 = (this.rand.nextFloat() * 2.0F - 1.0F) * this.width;
                                this.worldObj.spawnParticle("bubble", this.posX + (double)f5, (double)(f3 + 1.0F), this.posZ + (double)f4, this.motionX, this.motionY - (double)(this.rand.nextFloat() * 0.2F), this.motionZ);
                            }

                            for (l = 0; (float)l < 1.0F + this.width * 20.0F; ++l)
                            {
                                f5 = (this.rand.nextFloat() * 2.0F - 1.0F) * this.width;
                                f4 = (this.rand.nextFloat() * 2.0F - 1.0F) * this.width;
                                this.worldObj.spawnParticle("splash", this.posX + (double)f5, (double)(f3 + 1.0F), this.posZ + (double)f4, this.motionX, this.motionY, this.motionZ);
                            }
                        }
                    }
                }

                if (this.ticksCatchable > 0)
                {
                    this.motionY -= (double)(this.rand.nextFloat() * this.rand.nextFloat() * this.rand.nextFloat()) * 0.2D;
                }

                d5 = d6 * 2.0D - 1.0D;
                this.motionY += 0.03999999910593033D * d5;

                if (d6 > 0.0D)
                {
                    f2 = (float)((double)f2 * 0.9D);
                    this.motionY *= 0.8D;
                }

                this.motionX *= (double)f2;
                this.motionY *= (double)f2;
                this.motionZ *= (double)f2;
                this.setPosition(this.posX, this.posY, this.posZ);
            }
        }
    }

    /**
     * (abstract) Protected helper method to write subclass entity data to NBT.
     */
    public void writeEntityToNBT(NBTTagCompound par1NBTTagCompound)
    {
        par1NBTTagCompound.setShort("xTile", (short)this.xTile);
        par1NBTTagCompound.setShort("yTile", (short)this.yTile);
        par1NBTTagCompound.setShort("zTile", (short)this.zTile);
        par1NBTTagCompound.setByte("inTile", (byte)this.inTile);
        par1NBTTagCompound.setByte("shake", (byte)this.shake);
        par1NBTTagCompound.setByte("inGround", (byte)(this.inGround ? 1 : 0));
    }

    /**
     * (abstract) Protected helper method to read subclass entity data from NBT.
     */
    public void readEntityFromNBT(NBTTagCompound par1NBTTagCompound)
    {
        this.xTile = par1NBTTagCompound.getShort("xTile");
        this.yTile = par1NBTTagCompound.getShort("yTile");
        this.zTile = par1NBTTagCompound.getShort("zTile");
        this.inTile = par1NBTTagCompound.getByte("inTile") & 255;
        this.shake = par1NBTTagCompound.getByte("shake") & 255;
        this.inGround = par1NBTTagCompound.getByte("inGround") == 1;
    }

    @SideOnly(Side.CLIENT)
    public float getShadowSize()
    {
        return 0.0F;
    }

    public int catchFish()
    {
        if (this.worldObj.isRemote)
        {
            return 0;
        }
        else
        {
            byte b0 = 0;

            if (this.bobber != null)
            {
                double d0 = this.angler.posX - this.posX;
                double d1 = this.angler.posY - this.posY;
                double d2 = this.angler.posZ - this.posZ;
                double d3 = (double)MathHelper.sqrt_double(d0 * d0 + d1 * d1 + d2 * d2);
                double d4 = 0.1D;
                this.bobber.motionX += d0 * d4;
                this.bobber.motionY += d1 * d4 + (double)MathHelper.sqrt_double(d3) * 0.08D;
                this.bobber.motionZ += d2 * d4;
                b0 = 3;
            }
            else if (this.ticksCatchable > 0)
            {
                EntityItem entityitem = new EntityItem(this.worldObj, this.posX, this.posY, this.posZ, new ItemStack(Item.fishRaw));
                double d5 = this.angler.posX - this.posX;
                double d6 = this.angler.posY - this.posY;
                double d7 = this.angler.posZ - this.posZ;
                double d8 = (double)MathHelper.sqrt_double(d5 * d5 + d6 * d6 + d7 * d7);
                double d9 = 0.1D;
                entityitem.motionX = d5 * d9;
                entityitem.motionY = d6 * d9 + (double)MathHelper.sqrt_double(d8) * 0.08D;
                entityitem.motionZ = d7 * d9;
                this.worldObj.spawnEntityInWorld(entityitem);
                this.angler.addStat(StatList.fishCaughtStat, 1);
                this.angler.worldObj.spawnEntityInWorld(new EntityXPOrb(this.angler.worldObj, this.angler.posX, this.angler.posY + 0.5D, this.angler.posZ + 0.5D, this.rand.nextInt(6) + 1));
                b0 = 1;
            }

            if (this.inGround)
            {
                b0 = 2;
            }

            this.setDead();
            this.angler.fishEntity = null;
            return b0;
        }
    }

    /**
     * Will get destroyed next tick.
     */
    public void setDead()
    {
        super.setDead();

        if (this.angler != null)
        {
            this.angler.fishEntity = null;
        }
    }
}

 

 

 

Link to comment
Share on other sites

That could make sense take a look at the class. I have the class extending EntityFishHook as well instead of Entity. Could also be an issue therefore making this.angler becoming EntityFishHook instead of EntityFishingHook(My entity)

 

 

 

public class EntityFishingHook extends EntityFishHook
{
/** The tile this entity is on, X position */
    private int xTile;

    /** The tile this entity is on, Y position */
    private int yTile;

    /** The tile this entity is on, Z position */
    private int zTile;
    private int inTile;
    private boolean inGround;
    public int shake;
    public EntityPlayer angler;
    private int ticksInGround;
    private int ticksInAir;

    /** the number of ticks remaining until this fish can no longer be caught */
    private int ticksCatchable;

    /**
     * The entity that the fishing rod is connected to, if any. When you right click on the fishing rod and the hook
     * falls on to an entity, this it that entity.
     */
    public Entity bobber;
    private int fishPosRotationIncrements;
    private double fishX;
    private double fishY;
    private double fishZ;
    private double fishYaw;
    private double fishPitch;
    @SideOnly(Side.CLIENT)
    private double velocityX;
    @SideOnly(Side.CLIENT)
    private double velocityY;
    @SideOnly(Side.CLIENT)
    private double velocityZ;

    public EntityFishingHook(World par1World)
    {
        super(par1World);
        this.xTile = -1;
        this.yTile = -1;
        this.zTile = -1;
        this.inTile = 0;
        this.inGround = false;
        this.shake = 0;
        this.ticksInAir = 0;
        this.ticksCatchable = 0;
        this.bobber = null;
        this.setSize(0.25F, 0.25F);
        this.ignoreFrustumCheck = true;
    }

    @SideOnly(Side.CLIENT)
    public EntityFishingHook(World par1World, double par2, double par4, double par6, EntityPlayer par8EntityPlayer)
    {
        this(par1World);
        this.setPosition(par2, par4, par6);
        this.ignoreFrustumCheck = true;
        this.angler = par8EntityPlayer;
        par8EntityPlayer.fishEntity = this;
    }

    public EntityFishingHook(World par1World, EntityPlayer par2EntityPlayer)
    {
        super(par1World);
        this.xTile = -1;
        this.yTile = -1;
        this.zTile = -1;
        this.inTile = 0;
        this.inGround = false;
        this.shake = 0;
        this.ticksInAir = 0;
        this.ticksCatchable = 0;
        this.bobber = null;
        this.ignoreFrustumCheck = true;
        this.angler = par2EntityPlayer;
        this.angler.fishEntity = this;
        this.setSize(0.25F, 0.25F);
        this.setLocationAndAngles(par2EntityPlayer.posX, par2EntityPlayer.posY + 1.62D - (double)par2EntityPlayer.yOffset, par2EntityPlayer.posZ, par2EntityPlayer.rotationYaw, par2EntityPlayer.rotationPitch);
        this.posX -= (double)(MathHelper.cos(this.rotationYaw / 180.0F * (float)Math.PI) * 0.16F);
        this.posY -= 0.10000000149011612D;
        this.posZ -= (double)(MathHelper.sin(this.rotationYaw / 180.0F * (float)Math.PI) * 0.16F);
        this.setPosition(this.posX, this.posY, this.posZ);
        this.yOffset = 0.0F;
        float f = 0.4F;
        this.motionX = (double)(-MathHelper.sin(this.rotationYaw / 180.0F * (float)Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float)Math.PI) * f);
        this.motionZ = (double)(MathHelper.cos(this.rotationYaw / 180.0F * (float)Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float)Math.PI) * f);
        this.motionY = (double)(-MathHelper.sin(this.rotationPitch / 180.0F * (float)Math.PI) * f);
        this.calculateVelocity(this.motionX, this.motionY, this.motionZ, 1.5F, 1.0F);
    }

    protected void entityInit() {}

    @SideOnly(Side.CLIENT)

    /**
     * Checks if the entity is in range to render by using the past in distance and comparing it to its average edge
     * length * 64 * renderDistanceWeight Args: distance
     */
    public boolean isInRangeToRenderDist(double par1)
    {
        double d1 = this.boundingBox.getAverageEdgeLength() * 4.0D;
        d1 *= 64.0D;
        return par1 < d1 * d1;
    }

    public void calculateVelocity(double par1, double par3, double par5, float par7, float par8)
    {
        float f2 = MathHelper.sqrt_double(par1 * par1 + par3 * par3 + par5 * par5);
        par1 /= (double)f2;
        par3 /= (double)f2;
        par5 /= (double)f2;
        par1 += this.rand.nextGaussian() * 0.007499999832361937D * (double)par8;
        par3 += this.rand.nextGaussian() * 0.007499999832361937D * (double)par8;
        par5 += this.rand.nextGaussian() * 0.007499999832361937D * (double)par8;
        par1 *= (double)par7;
        par3 *= (double)par7;
        par5 *= (double)par7;
        this.motionX = par1;
        this.motionY = par3;
        this.motionZ = par5;
        float f3 = MathHelper.sqrt_double(par1 * par1 + par5 * par5);
        this.prevRotationYaw = this.rotationYaw = (float)(Math.atan2(par1, par5) * 180.0D / Math.PI);
        this.prevRotationPitch = this.rotationPitch = (float)(Math.atan2(par3, (double)f3) * 180.0D / Math.PI);
        this.ticksInGround = 0;
    }

    @SideOnly(Side.CLIENT)

    /**
     * Sets the position and rotation. Only difference from the other one is no bounding on the rotation. Args: posX,
     * posY, posZ, yaw, pitch
     */
    public void setPositionAndRotation2(double par1, double par3, double par5, float par7, float par8, int par9)
    {
        this.fishX = par1;
        this.fishY = par3;
        this.fishZ = par5;
        this.fishYaw = (double)par7;
        this.fishPitch = (double)par8;
        this.fishPosRotationIncrements = par9;
        this.motionX = this.velocityX;
        this.motionY = this.velocityY;
        this.motionZ = this.velocityZ;
    }

    @SideOnly(Side.CLIENT)

    /**
     * Sets the velocity to the args. Args: x, y, z
     */
    public void setVelocity(double par1, double par3, double par5)
    {
        this.velocityX = this.motionX = par1;
        this.velocityY = this.motionY = par3;
        this.velocityZ = this.motionZ = par5;
    }

    /**
     * Called to update the entity's position/logic.
     */
   
    public void onUpdate()
    {
    	super.onUpdate();
    	

        if (this.fishPosRotationIncrements > 0 )
        {
            double d0 = this.posX + (this.fishX - this.posX) / (double)this.fishPosRotationIncrements;
            double d1 = this.posY + (this.fishY - this.posY) / (double)this.fishPosRotationIncrements;
            double d2 = this.posZ + (this.fishZ - this.posZ) / (double)this.fishPosRotationIncrements;
            double d3 = MathHelper.wrapAngleTo180_double(this.fishYaw - (double)this.rotationYaw);
            this.rotationYaw = (float)((double)this.rotationYaw + d3 / (double)this.fishPosRotationIncrements);
            this.rotationPitch = (float)((double)this.rotationPitch + (this.fishPitch - (double)this.rotationPitch) / (double)this.fishPosRotationIncrements);
            --this.fishPosRotationIncrements;
            this.setPosition(d0, d1, d2);
            this.setRotation(this.rotationYaw, this.rotationPitch);
        }
        else
        {
            if (!this.worldObj.isRemote)
            {
                ItemStack itemstack = this.angler.getCurrentEquippedItem();

                if (this.angler.isDead || !this.angler.isEntityAlive() || itemstack == null || itemstack.getItem() != Item.fishingRod || this.getDistanceSqToEntity(this.angler) > 1024.0D)
                {
                    this.setDead();
                    this.angler.fishEntity = null;
                    return;
                }

                if (this.bobber != null)
                {
                    if (!this.bobber.isDead)
                    {
                        this.posX = this.bobber.posX;
                        this.posY = this.bobber.boundingBox.minY + (double)this.bobber.height * 0.8D;
                        this.posZ = this.bobber.posZ;
                        return;
                    }

                    this.bobber = null;
                }
            }

            if (this.shake > 0)
            {
                --this.shake;
            }

            if (this.inGround)
            {
                int i = this.worldObj.getBlockId(this.xTile, this.yTile, this.zTile);

                if (i == this.inTile)
                {
                    ++this.ticksInGround;

                    if (this.ticksInGround == 1200)
                    {
                        this.setDead();
                    }

                    return;
                }

                this.inGround = false;
                this.motionX *= (double)(this.rand.nextFloat() * 0.2F);
                this.motionY *= (double)(this.rand.nextFloat() * 0.2F);
                this.motionZ *= (double)(this.rand.nextFloat() * 0.2F);
                this.ticksInGround = 0;
                this.ticksInAir = 0;
            }
            else
            {
                ++this.ticksInAir;
            }

            Vec3 vec3 = this.worldObj.getWorldVec3Pool().getVecFromPool(this.posX, this.posY, this.posZ);
            Vec3 vec31 = this.worldObj.getWorldVec3Pool().getVecFromPool(this.posX + this.motionX, this.posY + this.motionY, this.posZ + this.motionZ);
            MovingObjectPosition movingobjectposition = this.worldObj.rayTraceBlocks(vec3, vec31);
            vec3 = this.worldObj.getWorldVec3Pool().getVecFromPool(this.posX, this.posY, this.posZ);
            vec31 = this.worldObj.getWorldVec3Pool().getVecFromPool(this.posX + this.motionX, this.posY + this.motionY, this.posZ + this.motionZ);

            if (movingobjectposition != null)
            {
                vec31 = this.worldObj.getWorldVec3Pool().getVecFromPool(movingobjectposition.hitVec.xCoord, movingobjectposition.hitVec.yCoord, movingobjectposition.hitVec.zCoord);
            }

            Entity entity = null;
            List list = this.worldObj.getEntitiesWithinAABBExcludingEntity(this, this.boundingBox.addCoord(this.motionX, this.motionY, this.motionZ).expand(1.0D, 1.0D, 1.0D));
            double d4 = 0.0D;
            double d5;

            for (int j = 0; j < list.size(); ++j)
            {
                Entity entity1 = (Entity)list.get(j);

                if (entity1.canBeCollidedWith() && (entity1 != this.angler || this.ticksInAir >= 5))
                {
                    float f = 0.3F;
                    AxisAlignedBB axisalignedbb = entity1.boundingBox.expand((double)f, (double)f, (double)f);
                    MovingObjectPosition movingobjectposition1 = axisalignedbb.calculateIntercept(vec3, vec31);

                    if (movingobjectposition1 != null)
                    {
                        d5 = vec3.distanceTo(movingobjectposition1.hitVec);

                        if (d5 < d4 || d4 == 0.0D)
                        {
                            entity = entity1;
                            d4 = d5;
                        }
                    }
                }
            }

            if (entity != null)
            {
                movingobjectposition = new MovingObjectPosition(entity);
            }

            if (movingobjectposition != null)
            {
                if (movingobjectposition.entityHit != null)
                {
                    if (movingobjectposition.entityHit.attackEntityFrom(DamageSource.causeThrownDamage(this, this.angler), 0))
                    {
                        this.bobber = movingobjectposition.entityHit;
                    }
                }
                else
                {
                    this.inGround = true;
                }
            }

            if (!this.inGround)
            {
                this.moveEntity(this.motionX, this.motionY, this.motionZ);
                float f1 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ);
                this.rotationYaw = (float)(Math.atan2(this.motionX, this.motionZ) * 180.0D / Math.PI);

                for (this.rotationPitch = (float)(Math.atan2(this.motionY, (double)f1) * 180.0D / Math.PI); this.rotationPitch - this.prevRotationPitch < -180.0F; this.prevRotationPitch -= 360.0F)
                {
                    ;
                }

                while (this.rotationPitch - this.prevRotationPitch >= 180.0F)
                {
                    this.prevRotationPitch += 360.0F;
                }

                while (this.rotationYaw - this.prevRotationYaw < -180.0F)
                {
                    this.prevRotationYaw -= 360.0F;
                }

                while (this.rotationYaw - this.prevRotationYaw >= 180.0F)
                {
                    this.prevRotationYaw += 360.0F;
                }

                this.rotationPitch = this.prevRotationPitch + (this.rotationPitch - this.prevRotationPitch) * 0.2F;
                this.rotationYaw = this.prevRotationYaw + (this.rotationYaw - this.prevRotationYaw) * 0.2F;
                float f2 = 0.92F;

                if (this.onGround || this.isCollidedHorizontally)
                {
                    f2 = 0.5F;
                }

                byte b0 = 5;
                double d6 = 0.0D;

                for (int k = 0; k < b0; ++k)
                {
                    double d7 = this.boundingBox.minY + (this.boundingBox.maxY - this.boundingBox.minY) * (double)(k + 0) / (double)b0 - 0.125D + 0.125D;
                    double d8 = this.boundingBox.minY + (this.boundingBox.maxY - this.boundingBox.minY) * (double)(k + 1) / (double)b0 - 0.125D + 0.125D;
                    AxisAlignedBB axisalignedbb1 = AxisAlignedBB.getAABBPool().getAABB(this.boundingBox.minX, d7, this.boundingBox.minZ, this.boundingBox.maxX, d8, this.boundingBox.maxZ);

                    if (this.worldObj.isAABBInMaterial(axisalignedbb1, Material.water))
                    {
                        d6 += 1.0D / (double)b0;
                    }
                }

                if (d6 > 0.0D)
                {
                    if (this.ticksCatchable > 0)
                    {
                        --this.ticksCatchable;
                    }
                    else
                    {
                        short short1 = 500;

                        if (this.worldObj.canLightningStrikeAt(MathHelper.floor_double(this.posX), MathHelper.floor_double(this.posY) + 1, MathHelper.floor_double(this.posZ)))
                        {
                            short1 = 300;
                        }

                        if (this.rand.nextInt(short1) == 0)
                        {
                            this.ticksCatchable = this.rand.nextInt(30) + 10;
                            this.motionY -= 0.20000000298023224D;
                            this.playSound("random.splash", 0.25F, 1.0F + (this.rand.nextFloat() - this.rand.nextFloat()) * 0.4F);
                            float f3 = (float)MathHelper.floor_double(this.boundingBox.minY);
                            int l;
                            float f4;
                            float f5;

                            for (l = 0; (float)l < 1.0F + this.width * 20.0F; ++l)
                            {
                                f5 = (this.rand.nextFloat() * 2.0F - 1.0F) * this.width;
                                f4 = (this.rand.nextFloat() * 2.0F - 1.0F) * this.width;
                                this.worldObj.spawnParticle("bubble", this.posX + (double)f5, (double)(f3 + 1.0F), this.posZ + (double)f4, this.motionX, this.motionY - (double)(this.rand.nextFloat() * 0.2F), this.motionZ);
                            }

                            for (l = 0; (float)l < 1.0F + this.width * 20.0F; ++l)
                            {
                                f5 = (this.rand.nextFloat() * 2.0F - 1.0F) * this.width;
                                f4 = (this.rand.nextFloat() * 2.0F - 1.0F) * this.width;
                                this.worldObj.spawnParticle("splash", this.posX + (double)f5, (double)(f3 + 1.0F), this.posZ + (double)f4, this.motionX, this.motionY, this.motionZ);
                            }
                        }
                    }
                }

                if (this.ticksCatchable > 0)
                {
                    this.motionY -= (double)(this.rand.nextFloat() * this.rand.nextFloat() * this.rand.nextFloat()) * 0.2D;
                }

                d5 = d6 * 2.0D - 1.0D;
                this.motionY += 0.03999999910593033D * d5;

                if (d6 > 0.0D)
                {
                    f2 = (float)((double)f2 * 0.9D);
                    this.motionY *= 0.8D;
                }

                this.motionX *= (double)f2;
                this.motionY *= (double)f2;
                this.motionZ *= (double)f2;
                this.setPosition(this.posX, this.posY, this.posZ);
            }
        }
    }

    /**
     * (abstract) Protected helper method to write subclass entity data to NBT.
     */
    public void writeEntityToNBT(NBTTagCompound par1NBTTagCompound)
    {
        par1NBTTagCompound.setShort("xTile", (short)this.xTile);
        par1NBTTagCompound.setShort("yTile", (short)this.yTile);
        par1NBTTagCompound.setShort("zTile", (short)this.zTile);
        par1NBTTagCompound.setByte("inTile", (byte)this.inTile);
        par1NBTTagCompound.setByte("shake", (byte)this.shake);
        par1NBTTagCompound.setByte("inGround", (byte)(this.inGround ? 1 : 0));
    }

    /**
     * (abstract) Protected helper method to read subclass entity data from NBT.
     */
    public void readEntityFromNBT(NBTTagCompound par1NBTTagCompound)
    {
        this.xTile = par1NBTTagCompound.getShort("xTile");
        this.yTile = par1NBTTagCompound.getShort("yTile");
        this.zTile = par1NBTTagCompound.getShort("zTile");
        this.inTile = par1NBTTagCompound.getByte("inTile") & 255;
        this.shake = par1NBTTagCompound.getByte("shake") & 255;
        this.inGround = par1NBTTagCompound.getByte("inGround") == 1;
    }

    @SideOnly(Side.CLIENT)
    public float getShadowSize()
    {
        return 0.0F;
    }

    public int catchFish()
    {
        if (this.worldObj.isRemote)
        {
            return 0;
        }
        else
        {
            byte b0 = 0;

            if (this.bobber != null)
            {
                double d0 = this.angler.posX - this.posX;
                double d1 = this.angler.posY - this.posY;
                double d2 = this.angler.posZ - this.posZ;
                double d3 = (double)MathHelper.sqrt_double(d0 * d0 + d1 * d1 + d2 * d2);
                double d4 = 0.1D;
                this.bobber.motionX += d0 * d4;
                this.bobber.motionY += d1 * d4 + (double)MathHelper.sqrt_double(d3) * 0.08D;
                this.bobber.motionZ += d2 * d4;
                b0 = 3;
            }
            else if (this.ticksCatchable > 0)
            {
                EntityItem entityitem = new EntityItem(this.worldObj, this.posX, this.posY, this.posZ, new ItemStack(Item.fishRaw));
                double d5 = this.angler.posX - this.posX;
                double d6 = this.angler.posY - this.posY;
                double d7 = this.angler.posZ - this.posZ;
                double d8 = (double)MathHelper.sqrt_double(d5 * d5 + d6 * d6 + d7 * d7);
                double d9 = 0.1D;
                entityitem.motionX = d5 * d9;
                entityitem.motionY = d6 * d9 + (double)MathHelper.sqrt_double(d8) * 0.08D;
                entityitem.motionZ = d7 * d9;
                this.worldObj.spawnEntityInWorld(entityitem);
                this.angler.addStat(StatList.fishCaughtStat, 1);
                this.angler.worldObj.spawnEntityInWorld(new EntityXPOrb(this.angler.worldObj, this.angler.posX, this.angler.posY + 0.5D, this.angler.posZ + 0.5D, this.rand.nextInt(6) + 1));
                b0 = 1;
            }

            if (this.inGround)
            {
                b0 = 2;
            }

            this.setDead();
            this.angler.fishEntity = null;
            return b0;
        }
    }

    /**
     * Will get destroyed next tick.
     */
    public void setDead()
    {
        super.setDead();

        if (this.angler != null)
        {
            this.angler.fishEntity = null;
        }
    }
}

 

 

Link to comment
Share on other sites

Sure thing :) I would be greatly appreciated if this was solved :)

 

 

 

package PixelGoal;

import java.util.Arrays;

import pixelmon.TickHandler;
import pixelmon.api.events.PixelmonEventHandler;
import pixelmon.config.PixelmonItems;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.client.Minecraft;
import net.minecraft.client.entity.EntityClientPlayerMP;
import net.minecraft.client.gui.inventory.GuiContainer;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.*;
import net.minecraft.src.BaseMod;
import net.minecraft.src.ModLoader;
import net.minecraft.stats.Achievement;
import net.minecraftforge.common.AchievementPage;
import net.minecraftforge.common.EnumHelper;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.Init;
import cpw.mods.fml.common.Mod.Instance;
import cpw.mods.fml.common.Mod.PreInit;
import cpw.mods.fml.common.ModMetadata;
import cpw.mods.fml.common.SidedProxy;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.common.network.NetworkMod;
import cpw.mods.fml.common.network.NetworkRegistry;
import cpw.mods.fml.common.registry.*;
import cpw.mods.fml.relauncher.Side;
import net.minecraft.entity.player.*;

@Mod(dependencies="required-after:Pixelmon", modid= "Pixelmon Goals", version="0.2", name="Pixelmon Goals")
@NetworkMod(clientSideRequired = true)

public class PixelGoal {

public static Item OldRod;

@PreInit
public void preInit(FMLPreInitializationEvent event){ 
	ModMetadata data = event.getModMetadata();
	data.name = "Pixelmon Goals";
	data.version = "0.1";
	data.url = "www.pixelmonmod.com";
	data.authorList = Arrays.asList(new String[] {"Xwaffle"});
	data.description = "This is a Side-Mod for the Pixelmon mod. It adds achievements for the mod.";
	data.logoFile = "logo file .png";
	data.credits = "Thanks a bunch to alexbegt for helping me!!";
	data.autogenerated = false;
}

@SidedProxy(clientSide = "PixelGoal.ClientProxy", serverSide = "PixelGoal.CommonProxy")
public static CommonProxy proxy;
public static ClientProxy proxy2;


@Init
    public void load(FMLInitializationEvent event)
    {
	 PixelmonEventHandler.registerEventHandler(new AchievementHelper()); 

	OldRod =  new ItemOldRod(1012).setUnlocalizedName("OldRod").setCreativeTab(CreativeTabs.tabTools);
	LanguageRegistry.addName(OldRod, "Old Rod");  


	EntityRegistry.registerModEntity(EntityFishingHook.class, "FishingHook", 216, this, 75, 1, true);

}	

}


 

 

Link to comment
Share on other sites

hmmm intialized uhm in my ItemOldRod code I use the entity onRightClick if that is what you mean? The Itemoldrod is like ItemFishingRod but I get these crashes.

 

Here is the code for ItemOldRod in which I do Initialize EntityFishingHook. Another thing is that I have a render Entity class if you would like to take a look at that as well?

 

 

package PixelGoal;

import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.client.renderer.texture.IconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.projectile.EntityFishHook;
import net.minecraft.util.Icon;
import net.minecraft.util.Vec3;
import net.minecraft.world.World;
import net.minecraft.item.*;

public class ItemOldRod extends ItemFishingRod
{
@SideOnly(Side.CLIENT)
private Icon theIcon;

public ItemOldRod(int par1)
{
super(par1);
this.setMaxDamage(64);
this.setMaxStackSize(1);
this.setCreativeTab(CreativeTabs.tabTools);
}

@SideOnly(Side.CLIENT)

/**
* Returns True is the item is renderer in full 3D when hold.
*/
public boolean isFull3D()
{
return true;
}

@SideOnly(Side.CLIENT)

/**
* Returns true if this item should be rotated by 180 degrees around the Y axis when being held in an entities
* hands.
*/
public boolean shouldRotateAroundWhenRendering()
{
return true;
}

/**
* Called whenever this item is equipped and the right mouse button is pressed. Args: itemStack, world, entityPlayer
*/
public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer)
{
if (par3EntityPlayer.fishEntity != null)
{
int i = ((EntityFishingHook) par3EntityPlayer.fishEntity).catchFish();
par1ItemStack.damageItem(i, par3EntityPlayer);
par3EntityPlayer.swingItem();
}
else
{
if (!par2World.isRemote)
{
par2World.spawnEntityInWorld(new EntityFishingHook(par2World, par3EntityPlayer));
}

par3EntityPlayer.swingItem();
}

return par1ItemStack;
}

@SideOnly(Side.CLIENT)
public void registerIcons(IconRegister par1IconRegister)
{
super.registerIcons(par1IconRegister);
this.theIcon = par1IconRegister.registerIcon("fishingRod_empty");
}

@SideOnly(Side.CLIENT)
public Icon func_94597_g()
{
return this.theIcon;
}
}

 

 

Link to comment
Share on other sites

  • 2 months later...

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

    • Oke i tried to download a different mod and try that out on my server and i get the same error. Now i know for a fact that my port forwarding and server is working properly, because i can join them without adding any mods into the server file, but then i dont know what i am doing wrong 
    • Salutation to you ladies and gentlemen, i must confidently say a very big thanks to Fastfundrecovery8 AT GMAIL COM for their tremendous action taken over my case immediately brought to their table, i saw how the whole process was going, and i wisperred to myself and said indeed i am previlledge to know such a legitimate recovery company who is very understable and do not stress their client over recovery software tools, Fastfunds Recovery are good in keeping to time, punctuality, I was scammed last year December 18, i realized that my long investment which i inteded to withdraw has long been a scam, got so frustrated, hired 4 recovery hackers which ended up taking money from me and i couldn't contact them anymore, i went through emotional pains and betrayer, wasn't easy for me at that moment, am very greatful for FastFunds Recovery, who was referred to me by a civil engineer who i was opportuned to share part of my story with and he was like i have a cyber friend do reach and say i'm from Pato's, that's how i got in touch with fastfundsrecovery8(@)gmail(.)com, do inform FastFunds recovery for any cyber issues. Fastfundsrecovery8 AT GMAIL WILL ALWAYS HELP GET BACK YOUR FUNDS.
    • Hello everyone i have made a server with forge and have added pixelmon into the server. But for some reason i keep getting "Internal Exception: io.netty.handles.codec.DecoderException: Not enough bytes in buffer, expected 105, byt got 48". I tried upping the ram of the server to 2GB but it didnt solve anything. I have 16 GB of ram on my pc (where i host the server), but i cant seem to get it to work. Pixelmon does work when i try to go into singleplayer, but for some reason just doesnt work online   Edit: server logs sais nothing aswell [18:55:49] [ServerMain/INFO]: Environment: Environment[accountsHost=https://api.mojang.com, sessionHost=https://sessionserver.mojang.com, servicesHost=https://api.minecraftservices.com, name=PROD] [18:55:50] [ServerMain/INFO]: Loaded 7 recipes [18:55:51] [ServerMain/INFO]: Loaded 1271 advancements [18:55:51] [Server thread/INFO]: Starting minecraft server version 1.20.2 [18:55:51] [Server thread/INFO]: Loading properties [18:55:51] [Server thread/INFO]: Default game type: SURVIVAL [18:55:51] [Server thread/INFO]: Generating keypair [18:55:51] [Server thread/INFO]: Starting Minecraft server on *:xxxx [18:55:51] [Server thread/INFO]: Using default channel type [18:55:51] [Server thread/INFO]: Preparing level "world" [18:55:52] [Server thread/INFO]: Preparing start region for dimension minecraft:overworld [18:55:53] [Worker-Main-8/INFO]: Preparing spawn area: 0% [18:55:53] [Worker-Main-8/INFO]: Preparing spawn area: 0% [18:55:53] [Worker-Main-8/INFO]: Preparing spawn area: 0% [18:55:53] [Worker-Main-12/INFO]: Preparing spawn area: 0% [18:55:54] [Worker-Main-11/INFO]: Preparing spawn area: 31% [18:55:54] [Server thread/INFO]: Time elapsed: 2344 ms [18:55:54] [Server thread/INFO]: Done (2.865s)! For help, type "help" [18:55:56] [User Authenticator #1/INFO]: UUID of player kemal007023 is 9a2a1dff-fa06-4e29-b57d-b1e6afb2db87 [18:55:56] [Server thread/INFO]: kemal007023[/xxxx] logged in with entity id 271 at (9.497695306619189, 68.0, 10.973182362716573) [18:55:56] [Server thread/INFO]: kemal007023 joined the game [18:55:56] [Server thread/INFO]: kemal007023 lost connection: Disconnected [18:55:56] [Server thread/INFO]: kemal007023 left the game [18:56:00] [User Authenticator #2/INFO]: UUID of player kemal007023 is 9a2a1dff-fa06-4e29-b57d-b1e6afb2db87 [18:56:00] [Server thread/INFO]: kemal007023[xxxx] logged in with entity id 272 at (9.497695306619189, 68.0, 10.973182362716573) [18:56:00] [Server thread/INFO]: kemal007023 joined the game [18:56:00] [Server thread/INFO]: kemal007023 lost connection: Disconnected [18:56:00] [Server thread/INFO]: kemal007023 left the game  
    • Hi, im making a BlockEntity that can contain fluids, and render them in the GUI, only one fluid works perfectly, I can fill or drain it, sync it to the client, and render it. The problem comes when i try to have two fluids in the same GUI, depending on what I delete or leave, the fluids act differently; for example, deleting both of them from "saveAdditional" and "load" methods makes that the fluids cannot render. Also, it can only render one fluid alone, or again, render one fluid, but twice (copies one fluid to the other one). FYI the left one is water, the right one is a red custom fluid. How can I fix this? BoilerBlockEntity: https://pastebin.com/e6b2U3sD BoilerMenu: https://pastebin.com/D375yCNr BoilerScreen: https://pastebin.com/WMrK83Du 
    • container@pterodactyl~ Server marked as starting... [Pterodactyl Daemon]: Pulling Docker container image, this could take a few minutes to complete... [Pterodactyl Daemon]: Finished pulling Docker container image container@pterodactyl~ java -version openjdk version "17.0.10" 2024-01-16 OpenJDK Runtime Environment Temurin-17.0.10+7 (build 17.0.10+7) OpenJDK 64-Bit Server VM Temurin-17.0.10+7 (build 17.0.10+7, mixed mode, sharing) container@pterodactyl~ java -Xms128M -Xmx10240M -Dterminal.jline=false -Dterminal.ansi=true -jar server.jar Starting net.fabricmc.loader.impl.game.minecraft.BundlerClassPathCapture [15:07:29] [main/INFO]: Loading Minecraft 1.20.1 with Fabric Loader 0.15.9 [15:07:29] [ForkJoinPool-1-worker-3/WARN]: Mod geophilic uses the version v2.0.0-mc1.20u1.20.1 which isn't compatible with Loader's extended semantic version format (Could not parse version number component 'v2'!), SemVer is recommended for reliably evaluating dependencies and prioritizing newer version [15:07:29] [main/INFO]: Dependencies overridden for fabric-api, cem, colormatic, debugify [15:07:30] [main/WARN]: Warnings were found!  - Mod 'Debugify' (debugify) 1.20.1+2.0 recommends any 3.x version of yet-another-config-lib, which is missing!          - You should install any 3.x version of yet-another-config-lib for the optimal experience.  - Mod 'Fabric API' (fabric-api) 0.87.0+1.20.1 recommends any version after 4.5.0 of Fabulously Optimized, which is missing!          - You should install any version after 4.5.0 of Fabulously Optimized for the optimal experience. [15:07:30] [main/INFO]: Loading 174 mods:         - appleskin 2.5.0+mc1.20         - architectury 9.1.12         - ash_api 3.0.2+1.20.1         - axesareweapons 1.7.1         - balm-fabric 7.0.7         - betteradvancements 0.3.2.161         - betterdeserttemples 1.20-Fabric-3.0.1            \-- org_reflections_reflections 0.10.2         - betterdungeons 1.20-Fabric-4.0.1         - betterfortresses 1.20-Fabric-2.0.2         - betterjungletemples 1.20-Fabric-2.0.1         - bettermineshafts 1.20-Fabric-4.0.1         - betteroceanmonuments 1.20-Fabric-3.0.1         - betterstrongholds 1.20-Fabric-4.0.1         - betterwitchhuts 1.20-Fabric-3.0.1         - bookshelf 20.0.3         - cardinal-components 5.2.2            |-- cardinal-components-base 5.2.2            |-- cardinal-components-block 5.2.2            |-- cardinal-components-chunk 5.2.2            |-- cardinal-components-entity 5.2.2            |-- cardinal-components-item 5.2.2            |-- cardinal-components-level 5.2.2            |-- cardinal-components-scoreboard 5.2.2            \-- cardinal-components-world 5.2.2         - carryon 2.1.1.3         - cloth-config 11.1.106            \-- cloth-basic-math 0.6.1         - collective 6.65         - comforts 6.3.3+1.20.1            \-- spectrelib 0.13.12+1.20.1                 |-- com_electronwill_night-config_core 3.6.5                 \-- com_electronwill_night-config_toml 3.6.5         - completeconfig 2.5.0            |-- completeconfig-base 2.5.0            |-- completeconfig-gui-cloth 2.5.0            \-- completeconfig-gui-yacl 2.5.0         - connectiblechains 2.2.1+1.20.1         - customizableelytra 2.1.0+1.20         - cyclepaintings 3.2         - debugify 1.20.1+2.0         - diagonalfences 8.0.1         - diagonalwindows 8.0.1         - doubledoors 5.0         - easyanvils 8.0.1         - easymagic 8.0.1         - easyshulkerboxes 8.0.0            \-- puzzlesapi 8.0.2                 \-- puzzlesaccessapi 8.0.5         - elytraslot 6.3.0+1.20.1         - emotecraft 2.2.7-b.build.50            \-- bendy-lib 4.0.0         - enchanted-vertical-slabs 1.9         - endrem 5.2.2         - fabric-api 0.87.0+1.20.1            |-- fabric-api-base 0.4.30+7abfd51577            |-- fabric-api-lookup-api-v1 1.6.35+4d8536c977            |-- fabric-biome-api-v1 13.0.10+b3afc78b77            |-- fabric-block-api-v1 1.0.9+e022e5d177            |-- fabric-blockrenderlayer-v1 1.1.40+b3afc78b77            |-- fabric-client-tags-api-v1 1.1.1+97bb207577            |-- fabric-command-api-v1 1.2.33+f71b366f77            |-- fabric-command-api-v2 2.2.12+b3afc78b77            |-- fabric-commands-v0 0.2.50+df3654b377            |-- fabric-containers-v0 0.1.63+df3654b377            |-- fabric-content-registries-v0 4.0.9+b3afc78b77            |-- fabric-convention-tags-v1 1.5.4+a1a980da77            |-- fabric-crash-report-info-v1 0.2.18+aeb40ebe77            |-- fabric-data-generation-api-v1 12.2.2+1e61dba177            |-- fabric-dimensions-v1 2.1.53+8536527b77            |-- fabric-entity-events-v1 1.5.22+b3afc78b77            |-- fabric-events-interaction-v0 0.6.1+e91849a877            |-- fabric-events-lifecycle-v0 0.2.62+df3654b377            |-- fabric-game-rule-api-v1 1.0.38+b04edc7a77            |-- fabric-item-api-v1 2.1.27+b3afc78b77            |-- fabric-item-group-api-v1 4.0.10+23d9108177            |-- fabric-key-binding-api-v1 1.0.36+fb8d95da77            |-- fabric-keybindings-v0 0.2.34+df3654b377            |-- fabric-lifecycle-events-v1 2.2.21+b3afc78b77            |-- fabric-loot-api-v2 1.1.39+b3afc78b77            |-- fabric-loot-tables-v1 1.1.43+9e7660c677            |-- fabric-message-api-v1 5.1.7+3265161977            |-- fabric-mining-level-api-v1 2.1.49+b3afc78b77            |-- fabric-model-loading-api-v1 1.0.2+709a987177            |-- fabric-models-v0 0.4.1+9386d8a777            |-- fabric-networking-api-v1 1.3.10+eeb8eb3677            |-- fabric-networking-v0 0.3.50+df3654b377            |-- fabric-object-builder-api-v1 11.1.1+6beca84877            |-- fabric-particles-v1 1.1.1+201a23a077            |-- fabric-recipe-api-v1 1.0.20+b3afc78b77            |-- fabric-registry-sync-v0 2.3.2+4df89eb277            |-- fabric-renderer-api-v1 3.1.2+6bdb2ed077            |-- fabric-renderer-indigo 1.4.2+6bdb2ed077            |-- fabric-renderer-registries-v1 3.2.45+df3654b377            |-- fabric-rendering-data-attachment-v1 0.3.34+b3afc78b77            |-- fabric-rendering-fluids-v1 3.0.27+b3afc78b77            |-- fabric-rendering-v0 1.1.48+df3654b377            |-- fabric-rendering-v1 3.0.7+b3afc78b77            |-- fabric-resource-conditions-api-v1 2.3.5+ea08f9d877            |-- fabric-resource-loader-v0 0.11.9+132c48c177            |-- fabric-screen-api-v1 2.0.7+b3afc78b77            |-- fabric-screen-handler-api-v1 1.3.29+b3afc78b77            |-- fabric-sound-api-v1 1.0.12+b3afc78b77            |-- fabric-transfer-api-v1 3.3.0+cdf060b277            \-- fabric-transitive-access-wideners-v1 4.3.0+6c31357e77         - fabric-language-kotlin 1.10.10+kotlin.1.9.10            |-- org_jetbrains_kotlin_kotlin-reflect 1.9.10            |-- org_jetbrains_kotlin_kotlin-stdlib 1.9.10            |-- org_jetbrains_kotlin_kotlin-stdlib-jdk7 1.9.10            |-- org_jetbrains_kotlin_kotlin-stdlib-jdk8 1.9.10            |-- org_jetbrains_kotlinx_atomicfu-jvm 0.22.0            |-- org_jetbrains_kotlinx_kotlinx-coroutines-core-jvm 1.7.3            |-- org_jetbrains_kotlinx_kotlinx-coroutines-jdk8 1.7.3            |-- org_jetbrains_kotlinx_kotlinx-datetime-jvm 0.4.0            |-- org_jetbrains_kotlinx_kotlinx-serialization-cbor-jvm 1.6.0            |-- org_jetbrains_kotlinx_kotlinx-serialization-core-jvm 1.6.0            \-- org_jetbrains_kotlinx_kotlinx-serialization-json-jvm 1.6.0         - fabricloader 0.15.9            \-- mixinextras 0.3.5         - forgeconfigapiport 8.0.0         - furnacerecycle 2.0         - geophilic v2.0.0-mc1.20u1.20.1         - gildedarmor 1.8.0+fabric-1.20.1         - guiclock 4.2         - guicompass 4.2         - iceberg 1.1.15         - interactic 0.2.0+1.20         - java 17         - kiwi 11.1.1         - lazydfu 0.1.3         - leavesbegone 8.0.0         - lithium 0.11.2         - minecraft 1.20.1         - mixin-conflict-helper 1.2.0         - mixintrace 1.1.1+1.17         - moonlight 1.20-2.8.13         - morebannerfeatures 1.2.0         - mousewheelie 1.12.2+mc1.20.1            |-- amecsapi 1.5.1+mc1.20-pre1            |-- coat 1.0.0-beta.20+mc1.20-pre1            |-- fabric-key-binding-api-v1 1.0.36+fb8d95da77            |-- fabric-screen-api-v1 2.0.7+b3afc78b77            |-- tweed4_annotated 1.3.1+mc1.20-pre1            |-- tweed4_base 1.7.1+mc1.20-pre1            |-- tweed4_data 1.2.1+mc1.20-pre1            |-- tweed4_data_hjson 1.1.1+mc1.20-pre1            |-- tweed4_tailor_coat 1.1.3+mc1.20-pre1            |-- tweed4_tailor_lang_json_descriptions 1.1.0+mc1.20-pre1            \-- tweed4_tailor_screen 1.1.4+mc1.20-pre1         - mru 0.2.1+1.20         - netherportalspread 7.5         - nochatreports 1.20.1-v2.2.2            |-- fabric-rendering-v1 3.0.6+b3afc78b82            \-- fabric-screen-api-v1 2.0.6+b3afc78b82         - nullscape 1.2.2         - nyfsspiders 2.1.1         - owo 0.11.1+1.20            \-- blue_endless_jankson 1.2.2         - patchouli 1.20.1-81-FABRIC            \-- fiber 0.23.0-2         - player-animator 1.0.2-rc1+1.20         - puzzleslib 8.0.24         - rare-ice 0.6.0         - replantingcrops 5.1         - riverredux 0.3.1         - shuffle 9.0.0+1.20.1         - sit 1.20-24         - snowrealmagic 9.0.1         - snowundertrees 1.1.0+1.20         - sound_physics_remastered 1.20.1-1.2.1         - starlight 1.1.2+fabric.dbc156f         - statement 4.2.8+1.14.4-1.20.1            |-- kanos_config 0.4.1+1.14.4-1.19.4            \-- statement_vanilla_compatibility 1.0.1+1.16.5-1.17         - terrablender 3.0.0.169         - transparent 8.0.1+1.20.1         - trinkets 3.7.1         - universalbonemeal 8.0.1         - vanillatweaks 1.5.69         - visualoverhaul 5.0.1            \-- midnightlib 1.4.1         - visualworkbench 8.0.0         - voicechat 1.20.1-2.4.24            \-- fabric-key-binding-api-v1 1.0.36+fb8d95da82         - wandering_collector 1.2.1+mc1.20-pre5            |-- coat 1.0.0-beta.20+mc1.20-pre1            |-- tweed4_annotated 1.3.1+mc1.20-pre1            |-- tweed4_base 1.7.1+mc1.20-pre1            |-- tweed4_data 1.2.1+mc1.20-pre1            |-- tweed4_data_hjson 1.1.1+mc1.20-pre1            |-- tweed4_tailor_coat 1.1.3+mc1.20-pre1            |-- tweed4_tailor_lang_json_descriptions 1.1.0+mc1.20-pre1            \-- tweed4_tailor_screen 1.1.4+mc1.20-pre1         - waterdripsound 1.19-0.3.2         - weaponmaster 3.0.5         - yet_another_config_lib_v3 3.1.1+1.20            |-- com_twelvemonkeys_common_common-image 3.10.0-SNAPSHOT            |-- com_twelvemonkeys_common_common-io 3.10.0-SNAPSHOT            |-- com_twelvemonkeys_common_common-lang 3.10.0-SNAPSHOT            |-- com_twelvemonkeys_imageio_imageio-core 3.10.0-SNAPSHOT            |-- com_twelvemonkeys_imageio_imageio-metadata 3.10.0-SNAPSHOT            \-- com_twelvemonkeys_imageio_imageio-webp 3.10.0-SNAPSHOT         - yosbr 0.1.2         - yungsapi 1.20-Fabric-4.0.1            \-- org_javassist_javassist 3.29.2-GA         - yungsbridges 1.20-Fabric-4.0.1         - yungsextras 1.20-Fabric-4.0.1 [15:07:30] [main/INFO]: Applying default options... (YOSBR) [15:07:30] [main/INFO]: SpongePowered MIXIN Subsystem Version=0.8.5 Source=file:/home/container/libraries/net/fabricmc/sponge-mixin/0.12.5+mixin.0.8.5/sponge-mixin-0.12.5+mixin.0.8.5.jar Service=Knot/Fabric Env=SERVER [15:07:30] [main/INFO]: Compatibility level set to JAVA_17 [15:07:31] [main/INFO]: Preloading Debugify [15:07:31] [main/INFO]: Loaded configuration file for Lithium: 115 options available, 0 override(s) found [15:07:31] [main/WARN]: Reference map 'mru-refmap.json' for mru.mixins.json could not be read. If this is a development environment you can ignore this message [15:07:31] [main/WARN]: Reference map 'yungsextras.refmap.json' for yungsextras.mixins.json could not be read. If this is a development environment you can ignore this message [15:07:31] [main/WARN]: Reference map 'yungsextras.refmap.json' for yungsextras_fabric.mixins.json could not be read. If this is a development environment you can ignore this message [15:07:32] [main/WARN]: Error loading class: fr/catcore/server/translations/api/resource/language/SystemDelegatedLanguage (java.lang.ClassNotFoundException: fr/catcore/server/translations/api/resource/language/SystemDelegatedLanguage) [15:07:32] [main/ERROR]: A mod crashed on startup! net.fabricmc.loader.impl.FormattedException: java.lang.RuntimeException: Could not execute entrypoint stage 'preLaunch' due to errors, provided by 'spectrelib'!         at net.fabricmc.loader.impl.FormattedException.ofLocalized(FormattedException.java:63) ~[fabric-loader-0.15.9.jar:?]         at net.fabricmc.loader.impl.launch.knot.Knot.init(Knot.java:162) ~[fabric-loader-0.15.9.jar:?]         at net.fabricmc.loader.impl.launch.knot.Knot.launch(Knot.java:68) ~[fabric-loader-0.15.9.jar:?]         at net.fabricmc.loader.impl.launch.knot.KnotServer.main(KnotServer.java:23) ~[fabric-loader-0.15.9.jar:?]         at net.fabricmc.loader.impl.launch.server.FabricServerLauncher.main(FabricServerLauncher.java:69) ~[fabric-loader-0.15.9.jar:?]         at net.fabricmc.installer.ServerLauncher.main(ServerLauncher.java:69) ~[server.jar:1.0.0] Caused by: java.lang.RuntimeException: Could not execute entrypoint stage 'preLaunch' due to errors, provided by 'spectrelib'!         at net.fabricmc.loader.impl.FabricLoaderImpl.lambda$invokeEntrypoints$2(FabricLoaderImpl.java:388) ~[fabric-loader-0.15.9.jar:?]         at net.fabricmc.loader.impl.util.ExceptionUtil.gatherExceptions(ExceptionUtil.java:33) ~[fabric-loader-0.15.9.jar:?]         at net.fabricmc.loader.impl.FabricLoaderImpl.invokeEntrypoints(FabricLoaderImpl.java:386) ~[fabric-loader-0.15.9.jar:?]         at net.fabricmc.loader.impl.launch.knot.Knot.init(Knot.java:160) ~[fabric-loader-0.15.9.jar:?]         ... 4 more Caused by: java.lang.NoClassDefFoundError: net/fabricmc/loader/impl/entrypoint/EntrypointUtils         at com.illusivesoulworks.spectrelib.SpectrePreLaunchFabricMod.onPreLaunch(SpectrePreLaunchFabricMod.java:33) ~[spectrelib-0.13.12+1.20.1-205a4d5a45c9ac39.jar:?]         at net.fabricmc.loader.impl.FabricLoaderImpl.invokeEntrypoints(FabricLoaderImpl.java:384) ~[fabric-loader-0.15.9.jar:?]         at net.fabricmc.loader.impl.launch.knot.Knot.init(Knot.java:160) ~[fabric-loader-0.15.9.jar:?]         ... 4 more Caused by: java.lang.ClassNotFoundException: net.fabricmc.loader.impl.entrypoint.EntrypointUtils         at jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) ~[?:?]         at java.lang.ClassLoader.loadClass(ClassLoader.java:525) ~[?:?]         at net.fabricmc.loader.impl.launch.knot.KnotClassDelegate.loadClass(KnotClassDelegate.java:226) ~[fabric-loader-0.15.9.jar:?]         at net.fabricmc.loader.impl.launch.knot.KnotClassLoader.loadClass(KnotClassLoader.java:119) ~[fabric-loader-0.15.9.jar:?]         at java.lang.ClassLoader.loadClass(ClassLoader.java:525) ~[?:?]         at com.illusivesoulworks.spectrelib.SpectrePreLaunchFabricMod.onPreLaunch(SpectrePreLaunchFabricMod.java:33) ~[spectrelib-0.13.12+1.20.1-205a4d5a45c9ac39.jar:?]         at net.fabricmc.loader.impl.FabricLoaderImpl.invokeEntrypoints(FabricLoaderImpl.java:384) ~[fabric-loader-0.15.9.jar:?]         at net.fabricmc.loader.impl.launch.knot.Knot.init(Knot.java:160) ~[fabric-loader-0.15.9.jar:?]         ... 4 more container@pterodactyl~ Server marked as offline... [Pterodactyl Daemon]: ---------- Detected server process in a crashed state! ---------- [Pterodactyl Daemon]: Exit code: 1 [Pterodactyl Daemon]: Out of memory: false [Pterodactyl Daemon]: Aborting automatic restart, last crash occurred less than 60 seconds ago.
  • Topics

×
×
  • Create New...

Important Information

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