Jump to content

Recommended Posts

Posted

Hello.

I have problem when rendering a ShurikenEntity want to rotate it like shuriken do.

I was trying to  set it with ticks and position as arguments but don't know how to make it.

It is code from arrow entity changed a bit.

I load my model from wavefront file.

Can smb tell how to make it rotating?

 

public class EntityShuriken extends Entity implements IProjectile
{
    private int d = -1;
    private int e = -1;
    private int f = -1;
    private Block contactBlock;
    private int inData;
    private boolean inGround;
    public int canBePickedUp;
    public static int ShurikenShake;
    public Entity shootingEntity;
    private int ticksInGround;
    private int ticksInAir;
    private double damage = 2.0D;
    private static final String __OBFID = "CL_00001715";

    public EntityShuriken(World par1World)
    {
        super(par1World);
        this.renderDistanceWeight = 10.0D;
        this.setSize(0.5F, 0.5F);
    }

    public EntityShuriken(World par1World, double par2, double par4, double par6)
    {
        super(par1World);
        this.renderDistanceWeight = 10.0D;
        this.setSize(0.5F, 0.5F);
        this.setPosition(par2, par4, par6);
        this.yOffset = 0.0F;
    }

    public EntityShuriken(World par1World, EntityLivingBase par2EntityLivingBase, EntityLivingBase par3EntityLivingBase, float par4, float par5)
    {
        super(par1World);
        this.renderDistanceWeight = 10.0D;
        this.shootingEntity = par2EntityLivingBase;

        if (par2EntityLivingBase instanceof EntityPlayer)
        {
            this.canBePickedUp = 1;
        }

        this.posY = par2EntityLivingBase.posY + (double)par2EntityLivingBase.getEyeHeight() - 0.10000000149011612D;
        double d0 = par3EntityLivingBase.posX - par2EntityLivingBase.posX;
        double d1 = par3EntityLivingBase.boundingBox.minY + (double)(par3EntityLivingBase.height / 3.0F) - this.posY;
        double d2 = par3EntityLivingBase.posZ - par2EntityLivingBase.posZ;
        double d3 = (double)MathHelper.sqrt_double(d0 * d0 + d2 * d2);

        if (d3 >= 1.0E-7D)
        {
            float f2 = (float)(Math.atan2(d2, d0) * 180.0D / Math.PI) - 90.0F;
            float f3 = (float)(-(Math.atan2(d1, d3) * 180.0D / Math.PI));
            double d4 = d0 / d3;
            double d5 = d2 / d3;
            this.setLocationAndAngles(par2EntityLivingBase.posX + d4, this.posY, par2EntityLivingBase.posZ + d5, f2, f3);
            this.yOffset = 0.0F;
            float f4 = (float)d3 * 0.2F;
            this.setThrowableHeading(d0, d1 + (double)f4, d2, par4, par5);
        }
    }

    public EntityShuriken(World par1World, EntityLivingBase par2EntityLivingBase, float par3)
    {
        super(par1World);
        this.renderDistanceWeight = 10.0D;
        this.shootingEntity = par2EntityLivingBase;

        if (par2EntityLivingBase instanceof EntityPlayer)
        {
            this.canBePickedUp = 1;
        }

        this.setSize(0.5F, 0.5F);
        this.setLocationAndAngles(par2EntityLivingBase.posX, par2EntityLivingBase.posY + (double)par2EntityLivingBase.getEyeHeight(), par2EntityLivingBase.posZ, par2EntityLivingBase.rotationYaw, par2EntityLivingBase.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;
        this.motionX = (double)(-MathHelper.sin(this.rotationYaw / 180.0F * (float)Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float)Math.PI));
        this.motionZ = (double)(MathHelper.cos(this.rotationYaw / 180.0F * (float)Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float)Math.PI));
        this.motionY = (double)(-MathHelper.sin(this.rotationPitch / 180.0F * (float)Math.PI));
        this.setThrowableHeading(this.motionX, this.motionY, this.motionZ, par3 * 1.5F, 1.0F);
    }

    @Override
    protected void entityInit()
    {
        this.dataWatcher.addObject(16, Byte.valueOf((byte)0));
    }

    /**
     * Similar to setArrowHeading, it's point the throwable entity to a x, y, z direction.
     */
    @Override
    public void setThrowableHeading(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() * (double)(this.rand.nextBoolean() ? -1 : 1) * 0.007499999832361937D * (double)par8;
        par3 += this.rand.nextGaussian() * (double)(this.rand.nextBoolean() ? -1 : 1) * 0.007499999832361937D * (double)par8;
        par5 += this.rand.nextGaussian() * (double)(this.rand.nextBoolean() ? -1 : 1) * 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;
    }

    /**
     * Sets the position and rotation. Only difference from the other one is no bounding on the rotation. Args: posX,
     * posY, posZ, yaw, pitch
     */
    @SideOnly(Side.CLIENT)
    public void setPositionAndRotation2(double par1, double par3, double par5, float par7, float par8, int par9)
    {
        this.setPosition(par1, par3, par5);
        this.setRotation(par7, par8);
    }

    /**
     * Sets the velocity to the args. Args: x, y, z
     */
    @SideOnly(Side.CLIENT)
    public void setVelocity(double par1, double par3, double par5)
    {
        this.motionX = par1;
        this.motionY = par3;
        this.motionZ = par5;

        if (this.prevRotationPitch == 0.0F && this.prevRotationYaw == 0.0F)
        {
            float f = 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)f) * 180.0D / Math.PI);
            this.prevRotationPitch = this.rotationPitch;
            this.prevRotationYaw = this.rotationYaw;
            this.setLocationAndAngles(this.posX, this.posY, this.posZ, this.rotationYaw, this.rotationPitch);
            this.ticksInGround = 0;
        }
    }

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

        if (this.prevRotationPitch == 0.0F && this.prevRotationYaw == 0.0F)
        {
            float f = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ);
            this.prevRotationYaw = this.rotationYaw = (float)(Math.atan2(this.motionX, this.motionZ) * 180.0D / Math.PI);
            this.prevRotationPitch = this.rotationPitch = (float)(Math.atan2(this.motionY, (double)f) * 180.0D / Math.PI);
        }

        Block block = this.worldObj.getBlock(this.d, this.e, this.f);

        if (block.getMaterial() != Material.air)
        {
            block.setBlockBoundsBasedOnState(this.worldObj, this.d, this.e, this.f);
            AxisAlignedBB axisalignedbb = block.getCollisionBoundingBoxFromPool(this.worldObj, this.d, this.e, this.f);

            if (axisalignedbb != null && axisalignedbb.isVecInside(this.worldObj.getWorldVec3Pool().getVecFromPool(this.posX, this.posY, this.posZ)))
            {
                this.inGround = true;
            }
        }

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

        if (this.inGround)
        {
            int j = this.worldObj.getBlockMetadata(this.d, this.e, this.f);

            if (block == this.contactBlock && j == this.inData)
            {
                ++this.ticksInGround;

                if (this.ticksInGround == 1200) //1200 = 60s
                {
                    this.setDead();
                }
            }
            else
            {
                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 vec31 = this.worldObj.getWorldVec3Pool().getVecFromPool(this.posX, this.posY, this.posZ);
            Vec3 vec3 = this.worldObj.getWorldVec3Pool().getVecFromPool(this.posX + this.motionX, this.posY + this.motionY, this.posZ + this.motionZ);
            MovingObjectPosition movingobjectposition = this.worldObj.func_147447_a(vec31, vec3, false, true, false);
            vec31 = this.worldObj.getWorldVec3Pool().getVecFromPool(this.posX, this.posY, this.posZ);
            vec3 = this.worldObj.getWorldVec3Pool().getVecFromPool(this.posX + this.motionX, this.posY + this.motionY, this.posZ + this.motionZ);

            if (movingobjectposition != null)
            {
                vec3 = 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 d0 = 0.0D;
            int i;
            float f1;

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

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

                    if (movingobjectposition1 != null)
                    {
                        double d1 = vec31.distanceTo(movingobjectposition1.hitVec);

                        if (d1 < d0 || d0 == 0.0D)
                        {
                            entity = entity1;
                            d0 = d1;
                        }
                    }
                }
            }

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

            if (movingobjectposition != null && movingobjectposition.entityHit != null && movingobjectposition.entityHit instanceof EntityPlayer)
            {
                EntityPlayer entityplayer = (EntityPlayer)movingobjectposition.entityHit;

                if (entityplayer.capabilities.disableDamage || this.shootingEntity instanceof EntityPlayer && !((EntityPlayer)this.shootingEntity).canAttackPlayer(entityplayer))
                {
                    movingobjectposition = null;
                }
            }

            float f2;
            float f4;

            if (movingobjectposition != null)
            {
                if (movingobjectposition.entityHit != null)
                {
                    f2 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionY * this.motionY + this.motionZ * this.motionZ);
                    int k = MathHelper.ceiling_double_int((double)f2 * this.damage);

                   /* if (this.getIsCritical())
                    {
                        k += this.rand.nextInt(k / 2 + 2);
                    }*/

                    DamageSource damagesource = null;

                    if (this.shootingEntity == null)
                    {
                        damagesource = DamSource.causeShurikenDamage(this, this);
                    }
                    else
                    {
                        damagesource = DamSource.causeShurikenDamage(this, this.shootingEntity);
                    }

                    if (movingobjectposition.entityHit.attackEntityFrom(damagesource, (float)k))
                    {
                        if (movingobjectposition.entityHit instanceof EntityLivingBase)
                        {
                            EntityLivingBase entitylivingbase = (EntityLivingBase)movingobjectposition.entityHit;

                            if (!this.worldObj.isRemote)
                            {
                                entitylivingbase.setArrowCountInEntity(entitylivingbase.getArrowCountInEntity() + 1);
                            }

                            if (this.shootingEntity != null && movingobjectposition.entityHit != this.shootingEntity && movingobjectposition.entityHit instanceof EntityPlayer && this.shootingEntity instanceof EntityPlayerMP)
                            {
                                ((EntityPlayerMP)this.shootingEntity).playerNetServerHandler.sendPacket(new S2BPacketChangeGameState(6, 0.0F));
                            }
                        }

                        this.playSound("random.bowhit", 1.0F, 1.2F / (this.rand.nextFloat() * 0.2F + 0.9F));

                        if (!(movingobjectposition.entityHit instanceof EntityEnderman))
                        {
                            this.setDead();
                        }
                    }
                    else
                    {
                        this.motionX *= -0.10000000149011612D;
                        this.motionY *= -0.10000000149011612D;
                        this.motionZ *= -0.10000000149011612D;
                        this.rotationYaw += 180.0F;
                        this.prevRotationYaw += 180.0F;
                        this.ticksInAir = 0;
                    }
                }
                else
                {
                    this.d = movingobjectposition.blockX;
                    this.e = movingobjectposition.blockY;
                    this.f = movingobjectposition.blockZ;
                    this.contactBlock = block;
                    this.inData = this.worldObj.getBlockMetadata(this.d, this.e, this.f);
                    this.motionX = (double)((float)(movingobjectposition.hitVec.xCoord - this.posX));
                    this.motionY = (double)((float)(movingobjectposition.hitVec.yCoord - this.posY));
                    this.motionZ = (double)((float)(movingobjectposition.hitVec.zCoord - this.posZ));
                    f2 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionY * this.motionY + this.motionZ * this.motionZ);
                    this.posX -= this.motionX / (double)f2 * 0.05000000074505806D;
                    this.posY -= this.motionY / (double)f2 * 0.05000000074505806D;
                    this.posZ -= this.motionZ / (double)f2 * 0.05000000074505806D;
                    this.playSound("random.bowhit", 1.0F, 1.2F / (this.rand.nextFloat() * 0.2F + 0.9F));
                    this.inGround = true;
                    this.ShurikenShake = 0;

                    if (this.contactBlock.getMaterial() != Material.air)
                    {
                        this.contactBlock.onEntityCollidedWithBlock(this.worldObj, this.d, this.e, this.f, this);
                    }
                }
            }

           /* if (this.getIsCritical())
            {
                for (i = 0; i < 4; ++i)
                {
                    this.worldObj.spawnParticle("crit", this.posX + this.motionX * (double)i / 4.0D, this.posY + this.motionY * (double)i / 4.0D, this.posZ + this.motionZ * (double)i / 4.0D, -this.motionX, -this.motionY + 0.2D, -this.motionZ);
                }
            }*/

            this.posX += this.motionX;
            this.posY += this.motionY;
            this.posZ += this.motionZ;
            f2 = 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)f2) * 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 f3 = 0.99F;
            f1 = 0.05F;

            if (this.isInWater())
            {
                for (int l = 0; l < 4; ++l)
                {
                    f4 = 0.25F;
                    this.worldObj.spawnParticle("bubble", this.posX - this.motionX * (double)f4, this.posY - this.motionY * (double)f4, this.posZ - this.motionZ * (double)f4, this.motionX, this.motionY, this.motionZ);
                }

                f3 = 0.8F;
            }

            if (this.isWet())
            {
                this.extinguish();
            }

            this.motionX *= (double)f3;
            this.motionY *= (double)f3;
            this.motionZ *= (double)f3;
            this.motionY -= (double)f1;
            this.setPosition(this.posX, this.posY, this.posZ);
            this.func_145775_I();
        }
    }

public class RenderShuriken extends Render {
final ResourceLocation texture = new ResourceLocation("Ref.modID:models/obj/Shuriken.png");
final ResourceLocation modelobj = new ResourceLocation("Ref.modID:models/obj/Shuriken.obj");
private IModelCustom model;

@Override
public void doRender(Entity par1EntityShuriken, double var2, double var4, double var6, float var8, float var9) 
{
	Tessellator tessellator = Tessellator.instance;
	this.model = AdvancedModelLoader.loadModel(modelobj);

	GL11.glPushMatrix();
	GL11.glTranslatef((float)var2, (float)var4, (float)var6);
	FMLClientHandler.instance().getClient().getTextureManager().bindTexture(texture);
	GL11.glRotatef(par1EntityShuriken.prevRotationYaw + (par1EntityShuriken.rotationYaw - par1EntityShuriken.prevRotationYaw) * var9 - 90.0F, 0.0F, 1.0F, 0.0F);
    GL11.glRotatef(par1EntityShuriken.prevRotationPitch + (par1EntityShuriken.rotationPitch - par1EntityShuriken.prevRotationPitch) * var9, 0.0F, 0.0F, 1.0F);
    byte b0 = 0;
    float f2 = 0.0F;
    float f3 = 0.5F;
    float f4 = (0 + b0 * 10) / 32.0F;
    float f5 = (32 + b0 * 10) / 32.0F;
    float f6 = 0.0F;
    float f7 = 1.0F;
    float f8 = (32 + b0 * 10) / 32.0F;
    float f9 = (64 + b0 * 10) / 32.0F;
    float f10 = 0.01F;
    GL11.glEnable(32826);
    float f11 = EntityShuriken.ShurikenShake - var9;
    if (f11 > 0.0F)
    {
      float f12 = -MathHelper.sin(f11 * 3.0F) * f11;
      GL11.glRotatef(f12, 0.0F, 0.0F, 1.0F);
    }
    GL11.glRotatef(45.0F, 1.0F, 0.0F, 0.0F);
    GL11.glScalef(f10, f10, f10);
    GL11.glTranslatef(-4.0F, 0.0F, 0.0F);
    
	model.renderAll();
	GL11.glPopMatrix();
}

public void renderSpecial()
{
}

@Override
protected ResourceLocation getEntityTexture(Entity var1) 
{
	return texture;
}
}

Posted

So in Render class should I add onUpdate method with tickupdates and made GL11.rotatef(r,x,y,z); in it? But how to make it all together in easy way? Sry for this question, but I am a begginer at modding

Posted

I think that it would be easiest to add a an instance variable to the projectile's class to track the spinning, and then in the onUpdate method for the projectile increment the rotation variable, and use a modular operator to keep the value less than 360.

 

Then in the renderer simply call glRotate with the angle and (assuming you want it to rotate on a flat plane) the y-axis

 


public int rotation = 0;

onUpdate() {
   ...
   
   rotation = (rotation + 1) % 360;
   
   ...
}

Renderer:

GL11.glRotatef(projectile.rotation, 0, 1, 0);

Posted

when I put rotation into Render class it works(so without projectile.), but it rotate when on ground only I think.

I used    

if(!par1EntityShuriken.onGround)
    	onUpdate();

but still rotating.

It is hard to say but when it is in air it doesn't rotate(it's too fast). Just it rotates when in ground.

I used it also without ! and it stopped rotating.

It looks like onGround doesn't work.

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

    • Please read the FAQ for how to properly post logs.   Also, this is a fabric log, not a forge log, you would probably get better results posting where fabric support is given.
    • Thank you, TileEntity. For anyone who happens to see this and has a similar issue, however unlikely that is, the issue is Aether II. Apparently it relies on Phosphor, even though it's not supported.
    • https://forums.minecraftforge.net/topic/155182-trying-to-play-1201-in-multimc-with-forge-mods-but-this-error-all-the-time/
    • [12:18:10] [main/INFO]: Loading Minecraft 1.20.1 with Fabric Loader 0.16.10 [12:18:10] [ForkJoinPool-1-worker-8/WARN]: Mod brewinandchewin uses the version fabric-2.1.5+1.20.1 which isn't compatible with Loader's extended semantic version format (Could not parse version number component 'fabric'!), SemVer is recommended for reliably evaluating dependencies and prioritizing newer version [12:18:10] [ForkJoinPool-1-worker-5/WARN]: Mod io_netty_netty-codec-http uses the version 4.1.82.Final which isn't compatible with Loader's extended semantic version format (Could not parse version number component 'Final'!), SemVer is recommended for reliably evaluating dependencies and prioritizing newer version [12:18:10] [ForkJoinPool-1-worker-5/WARN]: Mod io_netty_netty-handler-proxy uses the version 4.1.82.Final which isn't compatible with Loader's extended semantic version format (Could not parse version number component 'Final'!), SemVer is recommended for reliably evaluating dependencies and prioritizing newer version [12:18:10] [ForkJoinPool-1-worker-10/WARN]: The mod "dungeons_arise" contains invalid entries in its mod json: - Unsupported root entry "credits" at line 12 column 12 [12:18:10] [ForkJoinPool-1-worker-5/WARN]: Mod io_netty_netty-codec-socks uses the version 4.1.82.Final which isn't compatible with Loader's extended semantic version format (Could not parse version number component 'Final'!), SemVer is recommended for reliably evaluating dependencies and prioritizing newer version [12:18:10] [ForkJoinPool-1-worker-6/WARN]: Mod magna uses the version ${version} which isn't compatible with Loader's extended semantic version format (Could not parse version number component '${version}'!), SemVer is recommended for reliably evaluating dependencies and prioritizing newer version [12:18:10] [ForkJoinPool-1-worker-10/WARN]: Mod netherdepthsupgrade uses the version fabric-3.1.5-1.20 which isn't compatible with Loader's extended semantic version format (Could not parse version number component 'fabric'!), SemVer is recommended for reliably evaluating dependencies and prioritizing newer version [12:18:10] [ForkJoinPool-1-worker-8/WARN]: Mod tesseract uses the version 1.0.35a which isn't compatible with Loader's extended semantic version format (Could not parse version number component '35a'!), SemVer is recommended for reliably evaluating dependencies and prioritizing newer version [12:18:10] [ForkJoinPool-1-worker-8/WARN]: Mod theorcs uses the version fabric-1.20.x-1.0 which isn't compatible with Loader's extended semantic version format (Could not parse version number component 'fabric'!), SemVer is recommended for reliably evaluating dependencies and prioritizing newer version [12:18:10] [ForkJoinPool-1-worker-8/WARN]: Mod totw_modded uses the version fabric-1.20.1-1.0.4 which isn't compatible with Loader's extended semantic version format (Could not parse version number component 'fabric'!), SemVer is recommended for reliably evaluating dependencies and prioritizing newer version [12:18:10] [ForkJoinPool-1-worker-6/WARN]: Mod trowel uses the version [email protected] which isn't compatible with Loader's extended semantic version format (Could not parse version number component '1@1'!), SemVer is recommended for reliably evaluating dependencies and prioritizing newer version [12:18:10] [ForkJoinPool-1-worker-8/WARN]: Mod triqueapi uses the version mc1.20.1-1.1.0 which isn't compatible with Loader's extended semantic version format (Could not parse version number component 'mc1'!), SemVer is recommended for reliably evaluating dependencies and prioritizing newer version [12:18:10] [ForkJoinPool-1-worker-10/WARN]: Mod com_github_jagrosh_discordipc uses the version a8d6631cc9 which isn't compatible with Loader's extended semantic version format (Could not parse version number component 'a8d6631cc9'!), SemVer is recommended for reliably evaluating dependencies and prioritizing newer version [12:18:10] [main/WARN]: Warnings were found!  - Mod 'AntiGhost' (antighost) 1.20-fabric0.83.0-1.1.5 recommends any version of modmenu, which is missing!      - You should install any version of modmenu for the optimal experience.  - Mod 'Create Enchantment Industry' (create_enchantment_industry) 1.2.16 recommends version 0.5.1-f-build.1335+mc1.20.1 of mod 'Create' (create), but only the wrong version is present: 0.5.1-f-build.1388+mc1.20.1!      - You should install version 0.5.1-f-build.1335+mc1.20.1 of mod 'Create' (create) for the optimal experience.  - Mod 'Custom Portals' (customportals) 3.3.1 recommends version 7.0.0 or later of modmenu, which is missing!      - You should install version 7.0.0 or later of modmenu for the optimal experience.  - Mod 'Deepslate Cutting' (deepslatecutting) 1.7.0 recommends any version of modmenu, which is missing!      - You should install any version of modmenu for the optimal experience.  - Mod 'Create: Steam 'n' Rails' (railways) 1.5.3+fabric-mc1.20.1 recommends version 0.5.1-f-build.1335+mc1.20.1 of mod 'Create' (create), but only the wrong version is present: 0.5.1-f-build.1388+mc1.20.1!      - You should install version 0.5.1-f-build.1335+mc1.20.1 of mod 'Create' (create) for the optimal experience.  - Mod 'Reacharound' (reacharound) 1.1.2 recommends any version of modmenu, which is missing!      - You should install any version of modmenu for the optimal experience.  - Mod 'Reese's Sodium Options' (reeses-sodium-options) 1.7.2+mc1.20.1-build.101 recommends version 0.4.2 or later of sodium-extra, which is missing!      - You should install version 0.4.2 or later of sodium-extra for the optimal experience.  - Mod 'Simply Swords' (simplyswords) 1.54.0-1.20.1 recommends version 1.7.2 or later of bettercombat, which is missing!      - You should install version 1.7.2 or later of bettercombat for the optimal experience. [12:18:10] [main/INFO]: Loading 592 mods:     - accelerateddecay 3.0.1+mc1.20.1     - ad_astra 1.15.18        \-- javazoom_jlayer 1.0.1     - ad_astra_giselle_addon 6.6     - additionallanterns 1.1.1     - advanced_runtime_resource_pack 0.8.1     - advancednetherite 2.0.3-1.20.1     - advancementplaques 1.4.11     - adventurez 1.4.20     - ae2 15.0.24        \-- team_reborn_energy 3.0.0     - ae2mtfix 2.0.0+1.20.1+fabric     - ae2wtlib 15.2.1-fabric     - almostunified 1.20.1-0.9.2     - ambientsounds 5.3.9     - animal_feeding_trough 1.0.3+1.20.1     - another_furniture 1.20.1-3.0.1     - antighost 1.20-fabric0.83.0-1.1.5        \-- crowdin-translate 1.4+1.19.3     - anvilrepairing 4.0.3     - appbot 1.5.0     - appleskin 2.5.1+mc1.20     - aquamirae 6     - archers 1.1.0+1.20.1        \-- com_github_zsoltmolnarrr_tinyconfig 2.3.2     - architectury 9.2.14     - argonauts 1.0.8        \-- placeholder-api 2.1.1+1.20     - artifacts 9.3.1        |-- cardinal-components-base 5.2.2        |-- cardinal-components-entity 5.2.2        |-- expandability 9.0.0        \-- step-height-entity-attribute 1.2.0     - asynclocator 1.3.0     - athena 3.1.2     - attributefix 21.0.4     - authme 7.0.2+1.20     - auto-workstations 1.0-rc.21     - autoconfig1u 3.4.0     - axolotlitemfix 1.1.7     - azurelibarmor 2.0.3     - badpackets 0.4.3     - bakery 1.1.8     - balm-fabric 7.2.2     - bankstorage 1.0.2     - beachparty 1.1.4     - beaconoverhaul 1.8.4+1.20        \-- reach-entity-attributes 2.4.0     - beautify 1.1.0+1.20     - bedbenefits 13.0.3     - bellsandwhistles 0.4.5     - besmirchment 1.20.1-4        |-- impersonate 2.10.2        |    \-- fabric-permissions-api-v0 0.2-SNAPSHOT        |-- playerabilitylib 1.8.0        |-- reach-entity-attributes 2.4.0        \-- terraform-wood-api-v1 7.0.3     - betterarcheology 1.1.6-1.20.1     - betterdeserttemples 1.20-Fabric-3.0.3        \-- org_reflections_reflections 0.10.2     - betterdungeons 1.20-Fabric-4.0.3     - betterendisland 1.20-Fabric-2.0.6     - betterfortresses 1.20-Fabric-2.0.6     - betterjungletemples 1.20-Fabric-2.0.4     - bettermineshafts 1.20-Fabric-4.0.4     - betteroceanmonuments 1.20-Fabric-3.0.4     - betterpingdisplay 1.1.1     - bettersmithingtable 1.1.0     - betterstats 3.9.5+fabric-1.20.1        \-- tcdcommons 3.9.4+fabric-1.20.1     - betterstrongholds 1.20-Fabric-4.0.3     - betterthanbunnies 1.3.0     - betterthanllamas 1.2.0     - bettertrims 2.2.3        \-- mixinsquared 0.1.1     - betterwitchhuts 1.20-Fabric-3.0.3     - bewitchment 1.20-8        |-- impersonate 2.10.2        |    \-- fabric-permissions-api-v0 0.2-SNAPSHOT        |-- playerabilitylib 1.8.0        |-- reach-entity-attributes 2.4.0        \-- terraform-wood-api-v1 7.0.3     - bewitchment-rei 1.0.0     - bhmenu 2.4.1     - blockus 2.7.12+1.20.1     - bloomingnature 1.0.6     - blur 3.1.0        \-- satin 1.13.0     - bonezone 3.0.5     - bookshelf 20.1.9     - bosses_of_mass_destruction 1.7.5-1.20.1        |-- maelstrom_library 1.6.1-1.20        \-- multipart_entities 1.5-1.20     - botania 1.20.1-443-FABRIC        |-- fiber 0.23.0-2        |-- reach-entity-attributes 2.4.0        \-- step-height-entity-attribute 1.2.0     - botarium 2.3.3        \-- team_reborn_energy 3.0.0     - brewery 1.1.5     - brewinandchewin fabric-2.1.5+1.20.1        \-- mm 2.3     - builtinservers 2.1+1.20     - bushierflowers 0.0.3-1.20.1     - bwncr 3.17.0     - cadmus 1.0.7        \-- common-protection-api 1.0.0     - calibrated 1.3.1-beta.1+1.20        |-- blockreachapi 1.0.0-beta.1+1.20        \-- datacriteria 1.0.1+1.20     - cardinal-components 5.2.2        |-- cardinal-components-block 5.2.2        |-- cardinal-components-chunk 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     - catalogue 1.8.0     - charmofundying 6.5.0+1.20.1        \-- spectrelib 0.13.15+1.20.1     - chat_heads 0.10.32     - chefsdelight 1.0.3-fabric-1.20.1     - cherishedworlds 6.1.6+1.20.1     - chipped 3.0.4     - chunky 1.3.138     - clean_tooltips 1.0     - cloth-config 11.1.118        \-- cloth-basic-math 0.6.1     - clumps 12.0.0.3     - colorfulhearts 4.0.4        |-- com_electronwill_night-config_core 3.6.7        \-- com_electronwill_night-config_toml 3.6.7     - colytra 6.2.2+1.20.1     - completeconfig 2.5.2        |-- completeconfig-base 2.5.2        |-- completeconfig-gui-cloth 2.5.2        \-- completeconfig-gui-yacl 2.5.2     - compressed_blocks 1.0.0     - computercraft 1.110.1        |-- cc_tweaked_cobalt 0.9.2        |-- com_jcraft_jzlib 1.1.3        |-- io_netty_netty-codec-http 4.1.82.Final        |-- io_netty_netty-codec-socks 4.1.82.Final        \-- io_netty_netty-handler-proxy 4.1.82.Final     - connectedglass 1.1.11     - connectiblechains 2.2.1+1.20.1     - controlling 12.0.2     - convenientdecor 0.4.1        \-- omega-config 1.4.0+1.20.1     - cookingforblockheads 16.0.3     - copycats 1.20.1-1.2.6     - corgilib 4.0.1.1     - couplings 1.9.5+1.20     - coxinhautilities 1.4.13+1.20.1     - craftingtweaks 18.2.3     - crawl 0.12.0        \-- mm 2.3     - create 0.5.1-f-build.1388+mc1.20.1        |-- com_google_code_findbugs_jsr305 3.0.2        |-- flywheel 0.6.10-2        |-- forgeconfigapiport 8.0.0        |-- milk 1.2.60        |    \-- dripstone_fluid_lib 3.0.2        |-- porting_lib_accessors 2.3.0+1.20.1        |    \-- porting_lib_core 2.3.0+1.20.1        |-- porting_lib_base 2.3.0+1.20.1        |    |-- porting_lib_common 2.3.0+1.20.1        |    |-- porting_lib_core 2.3.0+1.20.1        |    |-- porting_lib_fluids 2.3.0+1.20.1        |    |-- porting_lib_lazy_registration 2.3.0+1.20.1        |    |-- porting_lib_mixin_extensions 2.3.0+1.20.1        |    \-- reach-entity-attributes 2.4.0        |-- porting_lib_brewing 2.3.0+1.20.1        |    \-- porting_lib_core 2.3.0+1.20.1        |-- porting_lib_client_events 2.3.0+1.20.1        |    \-- porting_lib_core 2.3.0+1.20.1        |-- porting_lib_entity 2.3.0+1.20.1        |    |-- porting_lib_core 2.3.0+1.20.1        |    \-- porting_lib_mixin_extensions 2.3.0+1.20.1        |-- porting_lib_extensions 2.3.0+1.20.1        |    |-- porting_lib_common 2.3.0+1.20.1        |    |-- porting_lib_core 2.3.0+1.20.1        |    \-- reach-entity-attributes 2.4.0        |-- porting_lib_models 2.3.0+1.20.1        |    |-- porting_lib_core 2.3.0+1.20.1        |    |-- porting_lib_fluids 2.3.0+1.20.1        |    \-- porting_lib_model_loader 2.3.0+1.20.1        |-- porting_lib_networking 2.3.0+1.20.1        |    \-- porting_lib_core 2.3.0+1.20.1        |-- porting_lib_obj_loader 2.3.0+1.20.1        |    |-- porting_lib_core 2.3.0+1.20.1        |    \-- porting_lib_model_loader 2.3.0+1.20.1        |-- porting_lib_tags 3.0        |    \-- porting_lib_core 2.3.0+1.20.1        |-- porting_lib_tool_actions 2.3.0+1.20.1        |    \-- porting_lib_core 2.3.0+1.20.1        |-- porting_lib_transfer 2.3.0+1.20.1        |    |-- porting_lib_core 2.3.0+1.20.1        |    \-- porting_lib_fluids 2.3.0+1.20.1        |-- reach-entity-attributes 2.4.0        \-- registrate-fabric 1.3.62-MC1.20.1             |-- porting_lib_data 2.1.1090+1.20             \-- porting_lib_model_generators 2.1.1090+1.20                  \-- porting_lib_model_materials 2.1.1090+1.20     - create_enchantment_industry 1.2.16        \-- create_dragon_lib 1.4.2     - create_jetpack 4.2.0        \-- flightlib 2.1.0     - createaddition 1.2.3     - createdeco 2.0.1-1.20.1-fabric     - createfood 1.0.3     - creativecore 2.11.24        \-- net_minecraftforge_eventbus 6.0.3     - creeperoverhaul 3.0.2     - croptopia 3.0.3     - ctov 3.4.2     - customportals 3.3.1        \-- cardinal-components-base 5.2.2     - dark-loading-screen 1.6.14     - darkmodeeverywhere 1.20.1-1.2.2        \-- porting_lib_config 2.1.1108+1.20             \-- porting_lib_gametest 2.1.1108+1.20     - darkutils 17.0.3     - decorative_blocks 4.1.3     - deepslatecutting 1.7.0     - defaultoptions 18.0.1     - diet 2.1.1+1.20.1     - display_case 1.0.8     - distractingtrims 2.0.3     - dml-refabricated 0.5.16-BETA+1.20.1        |-- dml-refabricated-base 0.5.16-BETA+1.20.1        |    |-- ktdatataglib 1.6.7+1.20.1        |    \-- libgui 8.1.1+1.20.1        |         |-- jankson 6.0.0+j1.2.3        |         |    \-- blue_endless_jankson 1.2.3        |         \-- libninepatch 1.2.0        |-- dml-refabricated-modular-armor 0.5.16-BETA+1.20.1        |    |-- ktdatataglib 1.6.7+1.20.1        |    |-- libgui 8.1.1+1.20.1        |    |    |-- jankson 6.0.0+j1.2.3        |    |    |    \-- blue_endless_jankson 1.2.3        |    |    \-- libninepatch 1.2.0        |    \-- playerabilitylib 1.8.0        |-- dmlsimulacrum 0.5.16-BETA+1.20.1        |    \-- ktdatataglib 1.6.7+1.20.1        \-- ktdatataglib 1.6.7+1.20.1     - doapi 1.2.9     - dogslie 1.2.0     - dragonloot 1.1.4     - duckling 3.0.0     - ducky-periphs 1.20.1-1.3.1        |-- org_jblas_jblas 1.2.5        |-- org_joml_joml 1.10.5        \-- serialization_hooks 0.4.99999     - dummmmmmy 1.20-1.8.14     - dungeons_arise 2.1.58     - dungeons_arise_seven_seas 1.0.2     - ecologics 2.2.0     - elytraslot 6.3.0+1.20.1     - embeddium 0.3.11+mc1.20.1        |-- indium 1.99.99        \-- sodium 0.5.8     - enchdesc 17.0.14     - endermanoverhaul 1.0.4     - ends_delight 1.0.1     - enhancedcelestials 5.0.0.2     - enhancedworkbenches 1.1.1+1.20.1        \-- yet_another_config_lib_v3 3.2.2+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             |-- org_quiltmc_parsers_gson 0.2.1             \-- org_quiltmc_parsers_json 0.2.1     - entangled 1.3.17     - epherolib 1.2.0     - equipmentcompare 1.3.8     - experiencebugfix 2     - extendedae 1.20-0.1.3-fabric        \-- configuration 2.2.0     - extraordinary_extra_totems 1.0.3     - extrasponges 1.5.0     - fabric-api 0.92.0+1.20.1        |-- fabric-api-base 0.4.31+1802ada577        |-- fabric-api-lookup-api-v1 1.6.36+1802ada577        |-- fabric-biome-api-v1 13.0.13+1802ada577        |-- fabric-block-api-v1 1.0.11+1802ada577        |-- fabric-block-view-api-v2 1.0.1+1802ada577        |-- fabric-blockrenderlayer-v1 1.1.41+1802ada577        |-- fabric-client-tags-api-v1 1.1.2+1802ada577        |-- fabric-command-api-v1 1.2.34+f71b366f77        |-- fabric-command-api-v2 2.2.13+1802ada577        |-- fabric-commands-v0 0.2.51+df3654b377        |-- fabric-containers-v0 0.1.64+df3654b377        |-- fabric-content-registries-v0 4.0.11+1802ada577        |-- fabric-convention-tags-v1 1.5.5+1802ada577        |-- fabric-crash-report-info-v1 0.2.19+1802ada577        |-- fabric-data-attachment-api-v1 1.0.0+de0fd6d177        |-- fabric-data-generation-api-v1 12.3.4+1802ada577        |-- fabric-dimensions-v1 2.1.54+1802ada577        |-- fabric-entity-events-v1 1.6.0+1c78457f77        |-- fabric-events-interaction-v0 0.6.2+1802ada577        |-- fabric-events-lifecycle-v0 0.2.63+df3654b377        |-- fabric-game-rule-api-v1 1.0.40+1802ada577        |-- fabric-item-api-v1 2.1.28+1802ada577        |-- fabric-item-group-api-v1 4.0.12+1802ada577        |-- fabric-key-binding-api-v1 1.0.37+1802ada577        |-- fabric-keybindings-v0 0.2.35+df3654b377        |-- fabric-lifecycle-events-v1 2.2.22+1802ada577        |-- fabric-loot-api-v2 1.2.1+1802ada577        |-- fabric-loot-tables-v1 1.1.45+9e7660c677        |-- fabric-message-api-v1 5.1.9+1802ada577        |-- fabric-mining-level-api-v1 2.1.50+1802ada577        |-- fabric-model-loading-api-v1 1.0.3+1802ada577        |-- fabric-models-v0 0.4.2+9386d8a777        |-- fabric-networking-api-v1 1.3.11+1802ada577        |-- fabric-networking-v0 0.3.51+df3654b377        |-- fabric-object-builder-api-v1 11.1.3+1802ada577        |-- fabric-particles-v1 1.1.2+1802ada577        |-- fabric-recipe-api-v1 1.0.21+1802ada577        |-- fabric-registry-sync-v0 2.3.3+1802ada577        |-- fabric-renderer-api-v1 3.2.1+1802ada577        |-- fabric-renderer-indigo 1.5.1+1802ada577        |-- fabric-renderer-registries-v1 3.2.46+df3654b377        |-- fabric-rendering-data-attachment-v1 0.3.37+92a0d36777        |-- fabric-rendering-fluids-v1 3.0.28+1802ada577        |-- fabric-rendering-v0 1.1.49+df3654b377        |-- fabric-rendering-v1 3.0.8+1802ada577        |-- fabric-resource-conditions-api-v1 2.3.8+1802ada577        |-- fabric-resource-loader-v0 0.11.10+1802ada577        |-- fabric-screen-api-v1 2.0.8+1802ada577        |-- fabric-screen-handler-api-v1 1.3.30+1802ada577        |-- fabric-sound-api-v1 1.0.13+1802ada577        |-- fabric-transfer-api-v1 3.3.4+1802ada577        \-- fabric-transitive-access-wideners-v1 4.3.1+1802ada577     - fabric-language-kotlin 1.10.19+kotlin.1.9.23        |-- org_jetbrains_kotlin_kotlin-reflect 1.9.23        |-- org_jetbrains_kotlin_kotlin-stdlib 1.9.23        |-- org_jetbrains_kotlin_kotlin-stdlib-jdk7 1.9.23        |-- org_jetbrains_kotlin_kotlin-stdlib-jdk8 1.9.23        |-- org_jetbrains_kotlinx_atomicfu-jvm 0.23.2        |-- org_jetbrains_kotlinx_kotlinx-coroutines-core-jvm 1.8.0        |-- org_jetbrains_kotlinx_kotlinx-coroutines-jdk8 1.8.0        |-- org_jetbrains_kotlinx_kotlinx-datetime-jvm 0.5.0        |-- org_jetbrains_kotlinx_kotlinx-serialization-cbor-jvm 1.6.3        |-- org_jetbrains_kotlinx_kotlinx-serialization-core-jvm 1.6.3        \-- org_jetbrains_kotlinx_kotlinx-serialization-json-jvm 1.6.3     - fabricloader 0.16.10        \-- mixinextras 0.4.1     - fakerlib 0.1.3        \-- mixinsquared 0.1.1     - fancymenu 3.1.2        \-- com_github_keksuccino_japng 0.5.3     - farmersdelight 1.20.1-1.4.3     - farmersrespite 2.3.4     - farmingforblockheads 14.0.2     - fastpaintings 1.20-1.2.5     - ferritecore 6.0.1     - findme 3.2.1     - fishofthieves 3.0.4     - formations 1.0.2     - formationsnether 1.0.3     - framework 0.6.16        \-- org_javassist_javassist 3.29.2-GA     - friendlyfire 18.0.6     - frightsdelight 1.20.1-1.0.1     - ftblibrary 2001.1.5     - ftbultimine 2001.1.4     - fullstackwatchdog 1.0.1+1.19.2-fabric     - fusion 1.1.1     - fwaystones 3.3.2+mc1.20.1     - gag 3.0.0-build.10     - gazebo 1.1.1+1.20.1     - geckolib 4.4.4        \-- com_eliotlash_mclib_mclib 20     - geode_plus 1.2.4        \-- paragon 3.0.2             |-- com_moandjiezana_toml_toml4j 0.7.2             \-- org_yaml_snakeyaml 1.27     - glassential 2.0.1     - go-fish 1.6.3+1.20.1     - graveyard 3.0     - guardvillagers 2.0.9-1.20.1     - handcrafted 3.0.6     - heracles 1.1.12        \-- hermes 1.6.0     - herbalbrews 1.0.6     - hopobetterruinedportal 1.3.7     - iceberg 1.1.18     - immediatelyfast 1.2.11+1.20.4        \-- net_lenni0451_reflect 1.3.2     - immersive_armors 1.6.1+1.20.1     - indrev 1.16.5-BETA-Hotfix        |-- libgui 8.1.1+1.20.1        |    |-- jankson 6.0.0+j1.2.3        |    |    \-- blue_endless_jankson 1.2.3        |    \-- libninepatch 1.2.0        |-- noindium 1.1.0+1.19        |-- step-height-entity-attribute 1.2.0        \-- team_reborn_energy 3.0.0     - industrialreborn 1.20.1-1.1     - inventorysorter 1.9.0-1.20        \-- kyrptconfig 1.5.6-1.20     - invoke 0.2.2     - iris 1.6.17        |-- io_github_douira_glsl-transformer 2.0.0-pre13        |-- org_anarres_jcpp 1.4.14        \-- org_antlr_antlr4-runtime 4.11.1     - iron-jetpacks 0.4.7        \-- team_reborn_energy 3.0.0     - ironchests 5.0.2     - itemcollectors 1.1.9     - itemfavorites 1.0.4+1.20.1     - jamlib 0.6.1+1.20.x     - java 17     - javd 5.0.1+mc1.20.1     - jewelry 1.2.4+1.20.1     - jumpoverfences 1.0-SNAPSHOT     - kibe 1.10.1-BETA+1.20        \-- playerabilitylib 1.8.0     - konkrete 1.8.1     - kubejs 2001.6.4-build.138     - lazydfu 0.1.3     - legendarytooltips 1.4.5     - letsdoaddon-compat 1.2.0     - letsdoaddon-structures 1.7.1     - leveltextfix 7.0.2     - libz 1.0.3        |-- com_fasterxml_jackson_core_jackson-annotations 2.15.2        |-- com_fasterxml_jackson_core_jackson-core 2.15.2        \-- com_fasterxml_jackson_core_jackson-databind 2.15.2     - lightoverlay 8.0.0     - lithium 0.11.2     - lithostitched 1.1.5     - lmft 1.0.2+1.20     - logbegone 1.0.8     - lolmcv 1.5.0     - lootbags 2.0.0     - lootjs 1.20.1-2.11.0     - lootr 0.7.30.77     - maxhealthfix 12.0.2     - mcwbridges 2.1.0     - mcwdoors 1.1.0     - mcwfences 1.1.1     - mcwlights 1.0.6     - mcwpaths 1.0.4     - mcwroofs 2.3.0     - mcwtrpdoors 1.1.2     - mcwwindows 2.2.1     - meadow 1.3.7     - measurements 2.0.0     - megacells 2.3.3-1.20.1     - megane 20.1.1        |-- megane-applied-energistics-2 20.1.1        |-- megane-create 20.1.1        |-- megane-deep-mob-learning-simulacrum 20.1.1        |-- megane-industrial-revolution 20.1.1        |-- megane-kibe 20.1.1        |-- megane-modern-dynamics 20.1.1        |-- megane-powah 20.1.1        |-- megane-reborn-core 20.1.1        \-- megane-tech-reborn 20.1.1     - melody 1.0.3     - menulogue 1.20.1-1.0.4     - merequester 1.20.1-1.1.4     - mi_sound_addon 1.0.2-1.20.1        \-- magna 1.10.1+1.20.1     - midnightlib 1.4.1     - mighty_mail 1.0.14     - minecells 1.7.2     - minecraft 1.20.1     - minerally 1.20.2-1.1     - modern_industrialization 1.8.3        |-- magna 1.10.1+1.20.1        |-- playerabilitylib 1.8.0        \-- team_reborn_energy 3.0.0     - moderndynamics 0.7.0-beta        \-- team_reborn_energy 3.0.0     - modernfix 5.15.0+mc1.20.1     - mooblooms 1.6.2     - moonlight 1.20-2.11.9     - more_armor_trims 1.1.3-1.20.1     - moremobvariants 1.2.2     - morevillagers 5.0.0     - mousetweaks 2.25     - mythicupgrades 2.4.2+mc1.20.1     - naturalist 4.0.3     - naturescompass 1.20.1-2.2.3-fabric     - nears 2.0.4     - netherdepthsupgrade fabric-3.1.5-1.20     - netherportalfix 13.0.1     - nethervinery 1.2.9     - nochatreports 1.20.1-v2.2.2     - numismatic-overhaul 0.2.14+1.20        \-- stacc 1.7.0     - obscure_api 16     - obsidianboat 3.1.4+mc1.20.1     - onlyhammers 1.20.1-0.6     - openloader 19.0.3     - owo 0.11.2+1.20     - packedup 1.0.30     - packetfixer 1.2.8     - paginatedadvancements 2.3.0     - patchouli 1.20.1-84-FABRIC        \-- fiber 0.23.0-2     - pehkui 3.8.0+1.14.4-1.20.4        \-- kanos_config 0.4.1+1.14.4-1.19.4     - perfectplushies 1.9.0        \-- forgeconfigapiport 8.0.0     - peripheralium 0.6.15     - peripheralworks 1.4.3     - phantasm 0.1     - piercingpaxels 1.0.12     - pigpen 15.0.2     - playdate 2.0.0     - player-animator 1.0.2-rc1+1.20     - pling 1.8.0     - polyeng 0.1.0-1.20.1     - polymorph 0.49.3+1.20.1        \-- spectrelib 0.13.15+1.20.1     - portable_tables 2.4     - powah 5.0.5     - prism 1.0.5     - projectile_damage 3.2.2+1.20.1     - prometheus 1.2.4     - quad 1.1.3     - railways 1.5.3+fabric-mc1.20.1        \-- mm 2.3     - ranged_weapon_api 1.0.0+1.20.1     - rare-ice 0.6.0     - reacharound 1.1.2     - reborncore 5.8.7        \-- team_reborn_energy 3.0.0     - rechiseled 1.1.5+b     - rechiseledcreate 1.0.2     - reeses-sodium-options 1.7.2+mc1.20.1-build.101     - regions_unexplored 0.5.5+1.20.1        \-- completeconfig-gui-cloth 2.5.2     - repurposed_structures 7.1.13+1.20.1-fabric     - resourcefulconfig 2.1.2     - resourcefullib 2.1.24        |-- com_teamresourceful_bytecodecs 1.0.2        \-- com_teamresourceful_yabn 1.0.3     - respawnablepets 1.20-1     - respitecreators 1.2.0     - revelationary 1.3.7+1.20.1     - rhino 2001.2.2-build.18     - rightclickharvest 3.2.3+1.19.x-1.20.1-fabric     - riverredux 0.3.1     - roughlyenoughitems 12.0.684        \-- error_notifier 1.0.9     - roughlyenoughprofessions 2.0.2     - roughlyenoughresources 2.9.0     - runelic 18.0.2     - runes 0.9.11+1.20.1     - sawmill 1.20-1.3.11     - sdrp 4.0.3-build.40+mc1.20.1        |-- com_github_jagrosh_discordipc a8d6631cc9        |-- com_kohlschutter_junixsocket_junixsocket-common 2.6.2        |-- com_kohlschutter_junixsocket_junixsocket-native-common 2.6.2        \-- org_json_json 20210307     - searchables 1.0.2     - sihywtcamd 1.7.5+1.20.1     - simplemagnets 1.1.10     - simplyswords 1.54.0-1.20.1        \-- spruceui 5.0.0+1.20     - skeletalremains 1.4.2     - sliceanddice 3.1.0        \-- forgeconfigapiport 8.0.0     - smwyg 1.1.1     - spark 1.10.53     - spectrum 1.7.7        |-- arrowhead 1.2.0-1.19.4        |-- fractal 1.1.0        |-- matchbooks 0.1.0        |-- org_jgrapht_jgrapht-core 1.5.1        |-- org_jheaps_jheaps 0.13        |-- reach-entity-attributes 2.4.0        \-- reverb 1.0.0     - spectrumjetpacks 1.0.3+1.20.1     - specutils 1.0.1        \-- cardinal-components-base 5.2.2     - spell_engine 0.13.2+1.20.1        \-- com_github_zsoltmolnarrr_tinyconfig 2.3.2     - spell_power 0.9.19+1.20.1     - sprinklerz 0.5.1     - status-effect-bars 1.0.3     - strangeberries 2.3.2     - strongersnowballs 13.0.2     - structory 1.3.4     - structory_towers 1.0.6     - structure_pool_api 1.0+1.20.1     - supermartijn642configlib 1.1.8+a     - supermartijn642corelib 1.1.17     - supplementaries 1.20-2.8.7        \-- mixinsquared 0.1.1     - techreborn 5.8.7        \-- team_reborn_energy 3.0.0     - tempad 2.3.3     - terrablender 3.0.1.4     - tesseract 1.0.35a     - thaumon 2.2.0+1.20.1     - the_bumblezone 7.3.1+1.20.1-fabric     - theorcs fabric-1.20.x-1.0     - timeoutout 1.0.3+1.19.1     - tinycoal 1.1.4     - tipsmod 12.0.5     - toolkit 3.0.3-build.25+mc1.20.1     - toolstats 16.0.8     - totw_additions 1.3     - totw_modded fabric-1.20.1-1.0.4     - trade_cycling 1.20.1-1.0.7     - tramplenomore 13.0.3     - trashcans 1.0.18        \-- team_reborn_energy 3.0.0     - trashslot 15.1.0     - travelersbackpack 1.20.1-9.1.9     - trenzalore 3.3.10        |-- com_unrealdinnerbone_unrealconfig-core 12.3.4        \-- com_unrealdinnerbone_unrealconfig-gson 12.3.4     - trimeffects 1.1.1-fabric     - trinkets 3.7.2     - triqueapi mc1.20.1-1.1.0     - trofers 5.0.1     - trowel [email protected]     - twigs 3.1.0     - utilitybelt 1.3.6+1.20.1        \-- tutorial-lib 1.1.2+1.20.x     - variantsandventures 1.0.1     - villager-hats 1.6.2+1.20     - villagersplus 3.1     - vinery 1.4.14     - visuality 0.7.1+1.20     - voidz 1.0.11     - wands 2.6.9-release     - wardentools 2.4.0+mc1.20.1     - whatthebucket 11.0.3     - wirelesschargers 1.0.9        \-- team_reborn_energy 3.0.0     - wits 1.1.0+1.20.1-fabric     - wizards 1.1.1+1.20.1        \-- com_github_zsoltmolnarrr_tinyconfig 2.3.2     - wthit 8.9.0     - xaerominimap 24.0.3     - xaeroworldmap 1.38.1     - yeetusexperimentus 2.3.1-build.6+mc1.20.1     - yigd 2.0.0-beta.11        |-- fabric-permissions-api-v0 0.2-SNAPSHOT        \-- libgui 8.1.1+1.20.1             |-- jankson 6.0.0+j1.2.3             |    \-- blue_endless_jankson 1.2.3             \-- libninepatch 1.2.0     - yungsapi 1.20-Fabric-4.0.4     - yungsbridges 1.20-Fabric-4.0.3     - yungsextras 1.20-Fabric-4.0.3     - zenith 1.1.7-1.20.1        |-- mm 2.3        |-- porting_lib_base 2.3.0+1.20.1        |    |-- porting_lib_common 2.3.0+1.20.1        |    |-- porting_lib_core 2.3.0+1.20.1        |    |-- porting_lib_fluids 2.3.0+1.20.1        |    |-- porting_lib_lazy_registration 2.3.0+1.20.1        |    |-- porting_lib_mixin_extensions 2.3.0+1.20.1        |    \-- reach-entity-attributes 2.4.0        |-- porting_lib_loot 2.3.0+1.20.1        |    |-- porting_lib_core 2.3.0+1.20.1        |    \-- porting_lib_lazy_registration 2.3.0+1.20.1        |-- porting_lib_tags 3.0        |    \-- porting_lib_core 2.3.0+1.20.1        \-- porting_lib_utility 2.3.0+1.20.1             \-- porting_lib_core 2.3.0+1.20.1     - zenith_attributes 0.2.2        |-- additionalentityattributes 1.7.1+1.20.0        |-- cardinal-components-base 5.2.2        |-- cardinal-components-entity 5.2.2        |-- playerabilitylib 1.8.0        |-- porting_lib_attributes 2.3.0+1.20.1        |    |-- porting_lib_core 2.3.0+1.20.1        |    \-- reach-entity-attributes 2.4.0        |-- porting_lib_entity 2.3.0+1.20.1        |    |-- porting_lib_core 2.3.0+1.20.1        |    \-- porting_lib_mixin_extensions 2.3.0+1.20.1        |-- porting_lib_extensions 2.3.0+1.20.1        |    |-- porting_lib_common 2.3.0+1.20.1        |    |-- porting_lib_core 2.3.0+1.20.1        |    \-- reach-entity-attributes 2.4.0        \-- reach-entity-attributes 2.4.0 [12:18:12] [main/INFO]: SpongePowered MIXIN Subsystem Version=0.8.5 Source=file:/M:/MultiMC/libraries/org/spongepowered/mixin/0.8.5/mixin-0.8.5.jar Service=Knot/Fabric Env=CLIENT  
  • Topics

×
×
  • Create New...

Important Information

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