Jump to content

Recommended Posts

Posted (edited)

So I'm making a painting clone that vanishes after a certain time. I modified the vanilla class but I'm having a very difficult time figuring out how register this with forge so that it shows up. Examples I've looked at are depreciated and the vanilla classes are don't really help with that as far as I know. Here's what I got so far. I know Render needs to shed some code but this was first pass through and didn't want to break anything I needed.  

Spoiler

Entity

Spoiler


public class EntityVanishingPainting extends EntityHanging{
	
	private static final DataParameter<Integer> DURATION = EntityDataManager.<Integer>createKey(EntityVanishingPainting.class,
			DataSerializers.VARINT);
	
	private int duration;
	private int tickCounter1;

	public EntityVanishingPainting(World worldIn)
    {
        super(worldIn);
        this.duration = 80;
        this.setSize(0.5F, 0.5F);
    }

    public EntityVanishingPainting(World worldIn, BlockPos pos, EnumFacing facing)
    {
        super(worldIn, pos);
        this.updateFacingWithBoundingBox(facing);
    }
    
    @Override
    protected void entityInit()
    {
        this.dataManager.register(DURATION, Integer.valueOf(80));
    }
    
    /**
     * Called to update the entity's position/logic.
     */
    @Override
    public void onUpdate()
    {
    	
    	this.prevPosX = this.posX;
        this.prevPosY = this.posY;
        this.prevPosZ = this.posZ;

        if (this.tickCounter1++ == 20 && !this.world.isRemote)
        {
            this.tickCounter1 = 0;

            if (!this.isDead && !this.onValidSurface())
            {
                this.setDead();
                this.onBroken((Entity)null);
            }
        }

        --this.duration;

        if (this.duration <= 0)
        {
            this.setDead();

            if (!this.world.isRemote)
            {
                this.burnUp();
            }
        }
        else
        {
            this.handleWaterMovement();
            this.world.spawnParticle(EnumParticleTypes.SMOKE_NORMAL, this.posX, this.posY + 0.5D, this.posZ, 0.0D, 0.0D, 0.0D);
        }
    }

	@Override
	public int getWidthPixels() {
		return 6;
	}

	@Override
	public int getHeightPixels() {
		return 12;
	}

	@Override
	public void onBroken(Entity brokenEntity) {
		if (this.world.getGameRules().getBoolean("doEntityDrops"))
        {
			this.playSound(SoundEvents.ENTITY_PAINTING_BREAK, 1.0F, 1.0F);
			
			if (brokenEntity instanceof EntityPlayer)
            {
				EntityPlayer entityplayer = (EntityPlayer)brokenEntity;

                if (entityplayer.capabilities.isCreativeMode)
                {
                    return;
                }
            }
			this.setDead();
			this.burnUp();
            //this.entityDropItem(new ItemStack(this), 0.0F);
        }
	}

	@Override
	public void playPlaceSound() {
		this.playSound(SoundEvents.ENTITY_PAINTING_PLACE, 1.0F, 1.0F);
		
	}
	
	private void burnUp()
	{
		world.spawnParticle(EnumParticleTypes.FLAME, this.posX, this.posY, this.posZ, 0, 0, 0, new int[0]);
	}
	
	@Override
	public void writeEntityToNBT(NBTTagCompound compound)
    {
        compound.setShort("DURATION", (short)this.getDuration());
    }
	
	@Override
	public void readEntityFromNBT(NBTTagCompound compound)
	{
		this.setDuration(compound.getShort("DURATION"));
	}
	
	public void setDuration(int time) 
	{
		this.dataManager.set(DURATION, Integer.valueOf(time));
	}
	
	public void notifyDataMangerChange(DataParameter<?> key)
	{
		if (DURATION.equals(key))
		{
			this.duration = this.getDurationDataManger();
		}
	}
	
	/**
	 * Gets the duration from the data manager
	 */
	public int getDurationDataManger() 
	{
		return ((Integer)this.dataManager.get(DURATION)).intValue();
	}

	public int getDuration() 
	{
		return this.duration;
	}
	
	

}

 

Render

Spoiler


@SideOnly(Side.CLIENT)
public class RenderVanishingPainting extends Render<EntityVanishingPainting>
{
	 private static final ResourceLocation KRISTOFFER_VanishingPainting_TEXTURE = new ResourceLocation("textures/entity/papertalisman.png");

	    public RenderVanishingPainting(RenderManager renderManagerIn)
	    {
	        super(renderManagerIn);
	    }

	    /**
	     * Renders the desired {@code T} type Entity.
	     */
	    public void doRender(EntityVanishingPainting entity, double x, double y, double z, float entityYaw, float partialTicks)
	    {
	        GlStateManager.pushMatrix();
	        GlStateManager.translate(x, y, z);
	        GlStateManager.rotate(180.0F - entityYaw, 0.0F, 1.0F, 0.0F);
	        GlStateManager.enableRescaleNormal();
	        this.bindEntityTexture(entity);
	        float f = 0.0625F;
	        GlStateManager.scale(0.0625F, 0.0625F, 0.0625F);

	        if (this.renderOutlines)
	        {
	            GlStateManager.enableColorMaterial();
	            GlStateManager.enableOutlineMode(this.getTeamColor(entity));
	        }

	        this.renderVanishingPainting(entity, 6, 12, 6, 3); //width height starting x and y positions

	        if (this.renderOutlines)
	        {
	            GlStateManager.disableOutlineMode();
	            GlStateManager.disableColorMaterial();
	        }

	        GlStateManager.disableRescaleNormal();
	        GlStateManager.popMatrix();
	        super.doRender(entity, x, y, z, entityYaw, partialTicks);
	    }

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

	    private void renderVanishingPainting(EntityVanishingPainting VanishingPainting, int width, int height, int textureU, int textureV)
	    {
	        float f = (float)(-width) / 2.0F;
	        float f1 = (float)(-height) / 2.0F;
	        float f2 = 0.5F;
	        float f3 = 0.75F;
	        float f4 = 0.8125F;
	        float f5 = 0.0F;
	        float f6 = 0.0625F;
	        float f7 = 0.75F;
	        float f8 = 0.8125F;
	        float f9 = 0.001953125F;
	        float f10 = 0.001953125F;
	        float f11 = 0.7519531F;
	        float f12 = 0.7519531F;
	        float f13 = 0.0F;
	        float f14 = 0.0625F;

	        for (int i = 0; i < width / 16; ++i)
	        {
	            for (int j = 0; j < height / 16; ++j)
	            {
	                float f15 = f + (float)((i + 1) * 16);
	                float f16 = f + (float)(i * 16);
	                float f17 = f1 + (float)((j + 1) * 16);
	                float f18 = f1 + (float)(j * 16);
	                this.setLightmap(VanishingPainting, (f15 + f16) / 2.0F, (f17 + f18) / 2.0F);
	                float f19 = (float)(textureU + width - i * 16) / 256.0F;
	                float f20 = (float)(textureU + width - (i + 1) * 16) / 256.0F;
	                float f21 = (float)(textureV + height - j * 16) / 256.0F;
	                float f22 = (float)(textureV + height - (j + 1) * 16) / 256.0F;
	                Tessellator tessellator = Tessellator.getInstance();
	                BufferBuilder bufferbuilder = tessellator.getBuffer();
	                bufferbuilder.begin(7, DefaultVertexFormats.POSITION_TEX_NORMAL);
	                bufferbuilder.pos((double)f15, (double)f18, -0.5D).tex((double)f20, (double)f21).normal(0.0F, 0.0F, -1.0F).endVertex();
	                bufferbuilder.pos((double)f16, (double)f18, -0.5D).tex((double)f19, (double)f21).normal(0.0F, 0.0F, -1.0F).endVertex();
	                bufferbuilder.pos((double)f16, (double)f17, -0.5D).tex((double)f19, (double)f22).normal(0.0F, 0.0F, -1.0F).endVertex();
	                bufferbuilder.pos((double)f15, (double)f17, -0.5D).tex((double)f20, (double)f22).normal(0.0F, 0.0F, -1.0F).endVertex();
	                bufferbuilder.pos((double)f15, (double)f17, 0.5D).tex(0.75D, 0.0D).normal(0.0F, 0.0F, 1.0F).endVertex();
	                bufferbuilder.pos((double)f16, (double)f17, 0.5D).tex(0.8125D, 0.0D).normal(0.0F, 0.0F, 1.0F).endVertex();
	                bufferbuilder.pos((double)f16, (double)f18, 0.5D).tex(0.8125D, 0.0625D).normal(0.0F, 0.0F, 1.0F).endVertex();
	                bufferbuilder.pos((double)f15, (double)f18, 0.5D).tex(0.75D, 0.0625D).normal(0.0F, 0.0F, 1.0F).endVertex();
	                bufferbuilder.pos((double)f15, (double)f17, -0.5D).tex(0.75D, 0.001953125D).normal(0.0F, 1.0F, 0.0F).endVertex();
	                bufferbuilder.pos((double)f16, (double)f17, -0.5D).tex(0.8125D, 0.001953125D).normal(0.0F, 1.0F, 0.0F).endVertex();
	                bufferbuilder.pos((double)f16, (double)f17, 0.5D).tex(0.8125D, 0.001953125D).normal(0.0F, 1.0F, 0.0F).endVertex();
	                bufferbuilder.pos((double)f15, (double)f17, 0.5D).tex(0.75D, 0.001953125D).normal(0.0F, 1.0F, 0.0F).endVertex();
	                bufferbuilder.pos((double)f15, (double)f18, 0.5D).tex(0.75D, 0.001953125D).normal(0.0F, -1.0F, 0.0F).endVertex();
	                bufferbuilder.pos((double)f16, (double)f18, 0.5D).tex(0.8125D, 0.001953125D).normal(0.0F, -1.0F, 0.0F).endVertex();
	                bufferbuilder.pos((double)f16, (double)f18, -0.5D).tex(0.8125D, 0.001953125D).normal(0.0F, -1.0F, 0.0F).endVertex();
	                bufferbuilder.pos((double)f15, (double)f18, -0.5D).tex(0.75D, 0.001953125D).normal(0.0F, -1.0F, 0.0F).endVertex();
	                bufferbuilder.pos((double)f15, (double)f17, 0.5D).tex(0.751953125D, 0.0D).normal(-1.0F, 0.0F, 0.0F).endVertex();
	                bufferbuilder.pos((double)f15, (double)f18, 0.5D).tex(0.751953125D, 0.0625D).normal(-1.0F, 0.0F, 0.0F).endVertex();
	                bufferbuilder.pos((double)f15, (double)f18, -0.5D).tex(0.751953125D, 0.0625D).normal(-1.0F, 0.0F, 0.0F).endVertex();
	                bufferbuilder.pos((double)f15, (double)f17, -0.5D).tex(0.751953125D, 0.0D).normal(-1.0F, 0.0F, 0.0F).endVertex();
	                bufferbuilder.pos((double)f16, (double)f17, -0.5D).tex(0.751953125D, 0.0D).normal(1.0F, 0.0F, 0.0F).endVertex();
	                bufferbuilder.pos((double)f16, (double)f18, -0.5D).tex(0.751953125D, 0.0625D).normal(1.0F, 0.0F, 0.0F).endVertex();
	                bufferbuilder.pos((double)f16, (double)f18, 0.5D).tex(0.751953125D, 0.0625D).normal(1.0F, 0.0F, 0.0F).endVertex();
	                bufferbuilder.pos((double)f16, (double)f17, 0.5D).tex(0.751953125D, 0.0D).normal(1.0F, 0.0F, 0.0F).endVertex();
	                tessellator.draw();
	            }
	        }
	    }

	    private void setLightmap(EntityVanishingPainting VanishingPainting, float p_77008_2_, float p_77008_3_)
	    {
	        int i = MathHelper.floor(VanishingPainting.posX);
	        int j = MathHelper.floor(VanishingPainting.posY + (double)(p_77008_3_ / 16.0F));
	        int k = MathHelper.floor(VanishingPainting.posZ);
	        EnumFacing enumfacing = VanishingPainting.facingDirection;

	        if (enumfacing == EnumFacing.NORTH)
	        {
	            i = MathHelper.floor(VanishingPainting.posX + (double)(p_77008_2_ / 16.0F));
	        }

	        if (enumfacing == EnumFacing.WEST)
	        {
	            k = MathHelper.floor(VanishingPainting.posZ - (double)(p_77008_2_ / 16.0F));
	        }

	        if (enumfacing == EnumFacing.SOUTH)
	        {
	            i = MathHelper.floor(VanishingPainting.posX - (double)(p_77008_2_ / 16.0F));
	        }

	        if (enumfacing == EnumFacing.EAST)
	        {
	            k = MathHelper.floor(VanishingPainting.posZ + (double)(p_77008_2_ / 16.0F));
	        }

	        int l = this.renderManager.world.getCombinedLight(new BlockPos(i, j, k), 0);
	        int i1 = l % 65536;
	        int j1 = l / 65536;
	        OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, (float)i1, (float)j1);
	        GlStateManager.color(1.0F, 1.0F, 1.0F);
	    }
}

 

 

 

I think I've solved it thanks to

 @Choonster files on github : github.com

 

need to time to verify

 

Edited by Stroam
update

You don't need to point out what's wrong with the programmer. I already know. Now what's wrong with the code?

Posted

Oh. Hanging entities. Vanilla made those a pain in the ass because EntityHanging itself is responsible for deciding which entity actually gets spawned. 

 

You're better off replicating (virtually) all of EntityHanging for your painting clone.

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Posted (edited)

Oh ho! Thanks for the info. 

I'm having such a difficult time trying to do things right with all the changes. I will do as you suggest and report back about 6 hours. The setup Choonster has and all the questions about registering things on this forum is making me change the basic mod template structure I've been using for a long time.

 

plus it's tea time.

Edited by Stroam

You don't need to point out what's wrong with the programmer. I already know. Now what's wrong with the code?

Posted

Update. Been trying a new approach and it hasn't worked out.

Spoiler

EntityVanishingPainting

Spoiler



public class EntityVanishingPainting extends EntityAttachable{
	
	private static final DataParameter<Integer> DURATION = EntityDataManager.<Integer>createKey(EntityVanishingPainting.class,
			DataSerializers.VARINT);
	
	private int duration;
	private int tickCounter1;

	public EntityVanishingPainting(World worldIn)
    {
        super(worldIn);
        this.duration = 80;
        this.setSize(0.5F, 0.5F);
    }

    public EntityVanishingPainting(World worldIn, BlockPos pos, EnumFacing facing)
    {
        super(worldIn, pos);
        this.updateFacingWithBoundingBox(facing);
    }
    
    @Override
    protected void entityInit()
    {
        this.dataManager.register(DURATION, Integer.valueOf(80));
    }
    
    /**
     * Called to update the entity's position/logic.
     */
    @Override
    public void onUpdate()
    {
    	
    	this.prevPosX = this.posX;
        this.prevPosY = this.posY;
        this.prevPosZ = this.posZ;

        if (this.tickCounter1++ == 20 && !this.world.isRemote)
        {
            this.tickCounter1 = 0;

            if (!this.isDead && !this.onValidSurface())
            {
                this.setDead();
                this.onBroken((Entity)null);
            }
        }

        --this.duration;

        if (this.duration <= 0)
        {
            this.setDead();

            if (!this.world.isRemote)
            {
                this.burnUp();
            }
        }
        else
        {
            this.handleWaterMovement();
            this.world.spawnParticle(EnumParticleTypes.SMOKE_NORMAL, this.posX, this.posY + 0.5D, this.posZ, 0.0D, 0.0D, 0.0D);
        }
    }

	@Override
	public int getWidthPixels() {
		return 6;
	}

	@Override
	public int getHeightPixels() {
		return 12;
	}

	@Override
	public void onBroken(Entity brokenEntity) {
		if (this.world.getGameRules().getBoolean("doEntityDrops"))
        {
			this.playSound(SoundEvents.ENTITY_PAINTING_BREAK, 1.0F, 1.0F);
			
			if (brokenEntity instanceof EntityPlayer)
            {
				EntityPlayer entityplayer = (EntityPlayer)brokenEntity;

                if (entityplayer.capabilities.isCreativeMode)
                {
                    return;
                }
            }
			this.setDead();
			this.burnUp();
            //this.entityDropItem(new ItemStack(this), 0.0F);
        }
	}

	@Override
	public void playPlaceSound() {
		this.playSound(SoundEvents.ENTITY_PAINTING_PLACE, 1.0F, 1.0F);
		
	}
	
	private void burnUp()
	{
		world.spawnParticle(EnumParticleTypes.FLAME, this.posX, this.posY, this.posZ, 0, 0, 0, new int[0]);
	}
	
	@Override
	public void writeEntityToNBT(NBTTagCompound compound)
    {
        compound.setShort("DURATION", (short)this.getDuration());
    }
	
	@Override
	public void readEntityFromNBT(NBTTagCompound compound)
	{
		this.setDuration(compound.getShort("DURATION"));
	}
	
	public void setDuration(int time) 
	{
		this.dataManager.set(DURATION, Integer.valueOf(time));
	}
	
	public void notifyDataMangerChange(DataParameter<?> key)
	{
		if (DURATION.equals(key))
		{
			this.duration = this.getDurationDataManger();
		}
	}
	
	/**
	 * Gets the duration from the data manager
	 */
	public int getDurationDataManger() 
	{
		return ((Integer)this.dataManager.get(DURATION)).intValue();
	}

	public int getDuration() 
	{
		return this.duration;
	}

}

 

EntityAttachable

Spoiler


public abstract class EntityAttachable extends Entity{
	
	private static final Predicate<Entity> IS_HANGING_ENTITY = new Predicate<Entity>()
    {
        public boolean apply(@Nullable Entity entity)
        {
            return entity instanceof EntityAttachable;
        }
    };
    private int tickCounter1;
    protected BlockPos hangingPosition;
    /** The direction the entity is facing */
    @Nullable
    public EnumFacing facingDirection;

    public EntityAttachable(World worldIn)
    {
        super(worldIn);
        this.setSize(0.5F, 0.5F);
    }

    public EntityAttachable(World worldIn, BlockPos hangingPositionIn)
    {
        this(worldIn);
        this.hangingPosition = hangingPositionIn;
    }

    protected void entityInit()
    {
    }

    /**
     * Updates facing and bounding box based on it
     */
    protected void updateFacingWithBoundingBox(EnumFacing facingDirectionIn)
    {
        Validate.notNull(facingDirectionIn);
        Validate.isTrue(facingDirectionIn.getAxis().isHorizontal());
        this.facingDirection = facingDirectionIn;
        this.rotationYaw = (float)(this.facingDirection.getHorizontalIndex() * 90);
        this.prevRotationYaw = this.rotationYaw;
        this.updateBoundingBox();
    }

    /**
     * Updates the entity bounding box based on current facing
     */
    protected void updateBoundingBox()
    {
        if (this.facingDirection != null)
        {
            double d0 = (double)this.hangingPosition.getX() + 0.5D;
            double d1 = (double)this.hangingPosition.getY() + 0.5D;
            double d2 = (double)this.hangingPosition.getZ() + 0.5D;
            double d3 = 0.46875D;
            double d4 = this.offs(this.getWidthPixels());
            double d5 = this.offs(this.getHeightPixels());
            d0 = d0 - (double)this.facingDirection.getFrontOffsetX() * 0.46875D;
            d2 = d2 - (double)this.facingDirection.getFrontOffsetZ() * 0.46875D;
            d1 = d1 + d5;
            EnumFacing enumfacing = this.facingDirection.rotateYCCW();
            d0 = d0 + d4 * (double)enumfacing.getFrontOffsetX();
            d2 = d2 + d4 * (double)enumfacing.getFrontOffsetZ();
            this.posX = d0;
            this.posY = d1;
            this.posZ = d2;
            double d6 = (double)this.getWidthPixels();
            double d7 = (double)this.getHeightPixels();
            double d8 = (double)this.getWidthPixels();

            if (this.facingDirection.getAxis() == EnumFacing.Axis.Z)
            {
                d8 = 1.0D;
            }
            else
            {
                d6 = 1.0D;
            }

            d6 = d6 / 32.0D;
            d7 = d7 / 32.0D;
            d8 = d8 / 32.0D;
            this.setEntityBoundingBox(new AxisAlignedBB(d0 - d6, d1 - d7, d2 - d8, d0 + d6, d1 + d7, d2 + d8));
        }
    }

    private double offs(int p_190202_1_)
    {
        return p_190202_1_ % 32 == 0 ? 0.5D : 0.0D;
    }

    /**
     * Called to update the entity's position/logic.
     */
    public void onUpdate()
    {
        this.prevPosX = this.posX;
        this.prevPosY = this.posY;
        this.prevPosZ = this.posZ;

        if (this.tickCounter1++ == 100 && !this.world.isRemote)
        {
            this.tickCounter1 = 0;

            if (!this.isDead && !this.onValidSurface())
            {
                this.setDead();
                this.onBroken((Entity)null);
            }
        }
    }

    /**
     * checks to make sure painting can be placed there
     */
    public boolean onValidSurface()
    {
        if (!this.world.getCollisionBoxes(this, this.getEntityBoundingBox()).isEmpty())
        {
            return false;
        }
        else
        {
            int i = Math.max(1, this.getWidthPixels() / 16);
            int j = Math.max(1, this.getHeightPixels() / 16);
            BlockPos blockpos = this.hangingPosition.offset(this.facingDirection.getOpposite());
            EnumFacing enumfacing = this.facingDirection.rotateYCCW();
            BlockPos.MutableBlockPos blockpos$mutableblockpos = new BlockPos.MutableBlockPos();

            for (int k = 0; k < i; ++k)
            {
                for (int l = 0; l < j; ++l)
                {
                    int i1 = (i - 1) / -2;
                    int j1 = (j - 1) / -2;
                    blockpos$mutableblockpos.setPos(blockpos).move(enumfacing, k + i1).move(EnumFacing.UP, l + j1);
                    IBlockState iblockstate = this.world.getBlockState(blockpos$mutableblockpos);

                    if (iblockstate.isSideSolid(this.world, blockpos$mutableblockpos, this.facingDirection))
                        continue;

                    if (!iblockstate.getMaterial().isSolid() && !BlockRedstoneDiode.isDiode(iblockstate))
                    {
                        return false;
                    }
                }
            }

            return this.world.getEntitiesInAABBexcluding(this, this.getEntityBoundingBox(), IS_HANGING_ENTITY).isEmpty();
        }
    }

    /**
     * Returns true if other Entities should be prevented from moving through this Entity.
     */
    public boolean canBeCollidedWith()
    {
        return true;
    }

    /**
     * Called when a player attacks an entity. If this returns true the attack will not happen.
     */
    public boolean hitByEntity(Entity entityIn)
    {
        return entityIn instanceof EntityPlayer ? this.attackEntityFrom(DamageSource.causePlayerDamage((EntityPlayer)entityIn), 0.0F) : false;
    }

    /**
     * Gets the horizontal facing direction of this Entity.
     */
    public EnumFacing getHorizontalFacing()
    {
        return this.facingDirection;
    }

    /**
     * Called when the entity is attacked.
     */
    public boolean attackEntityFrom(DamageSource source, float amount)
    {
        if (this.isEntityInvulnerable(source))
        {
            return false;
        }
        else
        {
            if (!this.isDead && !this.world.isRemote)
            {
                this.setDead();
                this.setBeenAttacked();
                this.onBroken(source.getTrueSource());
            }

            return true;
        }
    }

    /**
     * Tries to move the entity towards the specified location.
     */
    public void move(MoverType type, double x, double y, double z)
    {
        if (!this.world.isRemote && !this.isDead && x * x + y * y + z * z > 0.0D)
        {
            this.setDead();
            this.onBroken((Entity)null);
        }
    }

    /**
     * Adds to the current velocity of the entity.
     */
    public void addVelocity(double x, double y, double z)
    {
        if (!this.world.isRemote && !this.isDead && x * x + y * y + z * z > 0.0D)
        {
            this.setDead();
            this.onBroken((Entity)null);
        }
    }

    /**
     * (abstract) Protected helper method to write subclass entity data to NBT.
     */
    public void writeEntityToNBT(NBTTagCompound compound)
    {
        compound.setByte("Facing", (byte)this.facingDirection.getHorizontalIndex());
        BlockPos blockpos = this.getHangingPosition();
        compound.setInteger("TileX", blockpos.getX());
        compound.setInteger("TileY", blockpos.getY());
        compound.setInteger("TileZ", blockpos.getZ());
    }

    /**
     * (abstract) Protected helper method to read subclass entity data from NBT.
     */
    public void readEntityFromNBT(NBTTagCompound compound)
    {
        this.hangingPosition = new BlockPos(compound.getInteger("TileX"), compound.getInteger("TileY"), compound.getInteger("TileZ"));
        this.updateFacingWithBoundingBox(EnumFacing.getHorizontal(compound.getByte("Facing")));
    }

    public abstract int getWidthPixels();

    public abstract int getHeightPixels();

    /**
     * Called when this entity is broken. Entity parameter may be null.
     */
    public abstract void onBroken(@Nullable Entity brokenEntity);

    public abstract void playPlaceSound();

    /**
     * Drops an item at the position of the entity.
     */
    public EntityItem entityDropItem(ItemStack stack, float offsetY)
    {
        EntityItem entityitem = new EntityItem(this.world, this.posX + (double)((float)this.facingDirection.getFrontOffsetX() * 0.15F), this.posY + (double)offsetY, this.posZ + (double)((float)this.facingDirection.getFrontOffsetZ() * 0.15F), stack);
        entityitem.setDefaultPickupDelay();
        this.world.spawnEntity(entityitem);
        return entityitem;
    }

    protected boolean shouldSetPosAfterLoading()
    {
        return false;
    }

    /**
     * Sets the x,y,z of the entity from the given parameters. Also seems to set up a bounding box.
     */
    public void setPosition(double x, double y, double z)
    {
        this.hangingPosition = new BlockPos(x, y, z);
        this.updateBoundingBox();
        this.isAirBorne = true;
    }

    public BlockPos getHangingPosition()
    {
        return this.hangingPosition;
    }

    /**
     * Transforms the entity's current yaw with the given Rotation and returns it. This does not have a side-effect.
     */
    @SuppressWarnings("incomplete-switch")
    public float getRotatedYaw(Rotation transformRotation)
    {
        if (this.facingDirection != null && this.facingDirection.getAxis() != EnumFacing.Axis.Y)
        {
            switch (transformRotation)
            {
                case CLOCKWISE_180:
                    this.facingDirection = this.facingDirection.getOpposite();
                    break;
                case COUNTERCLOCKWISE_90:
                    this.facingDirection = this.facingDirection.rotateYCCW();
                    break;
                case CLOCKWISE_90:
                    this.facingDirection = this.facingDirection.rotateY();
            }
        }

        float f = MathHelper.wrapDegrees(this.rotationYaw);

        switch (transformRotation)
        {
            case CLOCKWISE_180:
                return f + 180.0F;
            case COUNTERCLOCKWISE_90:
                return f + 90.0F;
            case CLOCKWISE_90:
                return f + 270.0F;
            default:
                return f;
        }
    }

    /**
     * Transforms the entity's current yaw with the given Mirror and returns it. This does not have a side-effect.
     */
    public float getMirroredYaw(Mirror transformMirror)
    {
        return this.getRotatedYaw(transformMirror.toRotation(this.facingDirection));
    }

    /**
     * Called when a lightning bolt hits the entity.
     */
    public void onStruckByLightning(EntityLightningBolt lightningBolt)
    {
    }

}

 

RenderVanishingPainting

Spoiler



@SideOnly(Side.CLIENT)
public class RenderTempVanishingPainting extends Render<EntityVanishingPainting>
{
	 //private static final ResourceLocation KRISTOFFER_TempAntiMobSpawn_TEXTURE = new ResourceLocation("textures/entity/papertalisman.png");
	private final ResourceLocation entityTexture;
	
	    public RenderTempVanishingPainting(final RenderManager renderManagerIn, final ResourceLocation entityTexture)
	    {
	        super(renderManagerIn);
	        this.entityTexture = entityTexture;
	    }
	    
	    protected ResourceLocation getEntityTexture(final EntityVanishingPainting entity)
	    {
	    	return entityTexture;
	    }

	    /**
	     * Renders the desired {@code T} type Entity.
	     */
	    public void doRender(EntityVanishingPainting entity, double x, double y, double z, float entityYaw, float partialTicks)
	    {
	        GlStateManager.pushMatrix();
	        GlStateManager.translate(x, y, z);
	        GlStateManager.rotate(180.0F - entityYaw, 0.0F, 1.0F, 0.0F);
	        GlStateManager.enableRescaleNormal();
	        this.bindEntityTexture(entity);
	        float f = 0.0625F;
	        GlStateManager.scale(0.0625F, 0.0625F, 0.0625F);

	        if (this.renderOutlines)
	        {
	            GlStateManager.enableColorMaterial();
	            GlStateManager.enableOutlineMode(this.getTeamColor(entity));
	        }

	        this.renderTempAntiMobSpawn(entity, 6, 12, 6, 3); //width height starting x and y positions

	        if (this.renderOutlines)
	        {
	            GlStateManager.disableOutlineMode();
	            GlStateManager.disableColorMaterial();
	        }

	        GlStateManager.disableRescaleNormal();
	        GlStateManager.popMatrix();
	        super.doRender(entity, x, y, z, entityYaw, partialTicks);
	    }

	    private void renderTempAntiMobSpawn(EntityVanishingPainting TempAntiMobSpawn, int width, int height, int textureU, int textureV)
	    {
	        float f = (float)(-width) / 2.0F;
	        float f1 = (float)(-height) / 2.0F;
	        float f2 = 0.5F;
	        float f3 = 0.75F;
	        float f4 = 0.8125F;
	        float f5 = 0.0F;
	        float f6 = 0.0625F;
	        float f7 = 0.75F;
	        float f8 = 0.8125F;
	        float f9 = 0.001953125F;
	        float f10 = 0.001953125F;
	        float f11 = 0.7519531F;
	        float f12 = 0.7519531F;
	        float f13 = 0.0F;
	        float f14 = 0.0625F;

	        for (int i = 0; i < width / 16; ++i)
	        {
	            for (int j = 0; j < height / 16; ++j)
	            {
	                float f15 = f + (float)((i + 1) * 16);
	                float f16 = f + (float)(i * 16);
	                float f17 = f1 + (float)((j + 1) * 16);
	                float f18 = f1 + (float)(j * 16);
	                this.setLightmap(TempAntiMobSpawn, (f15 + f16) / 2.0F, (f17 + f18) / 2.0F);
	                float f19 = (float)(textureU + width - i * 16) / 256.0F;
	                float f20 = (float)(textureU + width - (i + 1) * 16) / 256.0F;
	                float f21 = (float)(textureV + height - j * 16) / 256.0F;
	                float f22 = (float)(textureV + height - (j + 1) * 16) / 256.0F;
	                Tessellator tessellator = Tessellator.getInstance();
	                BufferBuilder bufferbuilder = tessellator.getBuffer();
	                bufferbuilder.begin(7, DefaultVertexFormats.POSITION_TEX_NORMAL);
	                bufferbuilder.pos((double)f15, (double)f18, -0.5D).tex((double)f20, (double)f21).normal(0.0F, 0.0F, -1.0F).endVertex();
	                bufferbuilder.pos((double)f16, (double)f18, -0.5D).tex((double)f19, (double)f21).normal(0.0F, 0.0F, -1.0F).endVertex();
	                bufferbuilder.pos((double)f16, (double)f17, -0.5D).tex((double)f19, (double)f22).normal(0.0F, 0.0F, -1.0F).endVertex();
	                bufferbuilder.pos((double)f15, (double)f17, -0.5D).tex((double)f20, (double)f22).normal(0.0F, 0.0F, -1.0F).endVertex();
	                bufferbuilder.pos((double)f15, (double)f17, 0.5D).tex(0.75D, 0.0D).normal(0.0F, 0.0F, 1.0F).endVertex();
	                bufferbuilder.pos((double)f16, (double)f17, 0.5D).tex(0.8125D, 0.0D).normal(0.0F, 0.0F, 1.0F).endVertex();
	                bufferbuilder.pos((double)f16, (double)f18, 0.5D).tex(0.8125D, 0.0625D).normal(0.0F, 0.0F, 1.0F).endVertex();
	                bufferbuilder.pos((double)f15, (double)f18, 0.5D).tex(0.75D, 0.0625D).normal(0.0F, 0.0F, 1.0F).endVertex();
	                bufferbuilder.pos((double)f15, (double)f17, -0.5D).tex(0.75D, 0.001953125D).normal(0.0F, 1.0F, 0.0F).endVertex();
	                bufferbuilder.pos((double)f16, (double)f17, -0.5D).tex(0.8125D, 0.001953125D).normal(0.0F, 1.0F, 0.0F).endVertex();
	                bufferbuilder.pos((double)f16, (double)f17, 0.5D).tex(0.8125D, 0.001953125D).normal(0.0F, 1.0F, 0.0F).endVertex();
	                bufferbuilder.pos((double)f15, (double)f17, 0.5D).tex(0.75D, 0.001953125D).normal(0.0F, 1.0F, 0.0F).endVertex();
	                bufferbuilder.pos((double)f15, (double)f18, 0.5D).tex(0.75D, 0.001953125D).normal(0.0F, -1.0F, 0.0F).endVertex();
	                bufferbuilder.pos((double)f16, (double)f18, 0.5D).tex(0.8125D, 0.001953125D).normal(0.0F, -1.0F, 0.0F).endVertex();
	                bufferbuilder.pos((double)f16, (double)f18, -0.5D).tex(0.8125D, 0.001953125D).normal(0.0F, -1.0F, 0.0F).endVertex();
	                bufferbuilder.pos((double)f15, (double)f18, -0.5D).tex(0.75D, 0.001953125D).normal(0.0F, -1.0F, 0.0F).endVertex();
	                bufferbuilder.pos((double)f15, (double)f17, 0.5D).tex(0.751953125D, 0.0D).normal(-1.0F, 0.0F, 0.0F).endVertex();
	                bufferbuilder.pos((double)f15, (double)f18, 0.5D).tex(0.751953125D, 0.0625D).normal(-1.0F, 0.0F, 0.0F).endVertex();
	                bufferbuilder.pos((double)f15, (double)f18, -0.5D).tex(0.751953125D, 0.0625D).normal(-1.0F, 0.0F, 0.0F).endVertex();
	                bufferbuilder.pos((double)f15, (double)f17, -0.5D).tex(0.751953125D, 0.0D).normal(-1.0F, 0.0F, 0.0F).endVertex();
	                bufferbuilder.pos((double)f16, (double)f17, -0.5D).tex(0.751953125D, 0.0D).normal(1.0F, 0.0F, 0.0F).endVertex();
	                bufferbuilder.pos((double)f16, (double)f18, -0.5D).tex(0.751953125D, 0.0625D).normal(1.0F, 0.0F, 0.0F).endVertex();
	                bufferbuilder.pos((double)f16, (double)f18, 0.5D).tex(0.751953125D, 0.0625D).normal(1.0F, 0.0F, 0.0F).endVertex();
	                bufferbuilder.pos((double)f16, (double)f17, 0.5D).tex(0.751953125D, 0.0D).normal(1.0F, 0.0F, 0.0F).endVertex();
	                tessellator.draw();
	            }
	        }
	    }

	    private void setLightmap(EntityVanishingPainting TempAntiMobSpawn, float p_77008_2_, float p_77008_3_)
	    {
	        int i = MathHelper.floor(TempAntiMobSpawn.posX);
	        int j = MathHelper.floor(TempAntiMobSpawn.posY + (double)(p_77008_3_ / 16.0F));
	        int k = MathHelper.floor(TempAntiMobSpawn.posZ);
	        EnumFacing enumfacing = TempAntiMobSpawn.facingDirection;

	        if (enumfacing == EnumFacing.NORTH)
	        {
	            i = MathHelper.floor(TempAntiMobSpawn.posX + (double)(p_77008_2_ / 16.0F));
	        }

	        if (enumfacing == EnumFacing.WEST)
	        {
	            k = MathHelper.floor(TempAntiMobSpawn.posZ - (double)(p_77008_2_ / 16.0F));
	        }

	        if (enumfacing == EnumFacing.SOUTH)
	        {
	            i = MathHelper.floor(TempAntiMobSpawn.posX - (double)(p_77008_2_ / 16.0F));
	        }

	        if (enumfacing == EnumFacing.EAST)
	        {
	            k = MathHelper.floor(TempAntiMobSpawn.posZ + (double)(p_77008_2_ / 16.0F));
	        }

	        int l = this.renderManager.world.getCombinedLight(new BlockPos(i, j, k), 0);
	        int i1 = l % 65536;
	        int j1 = l / 65536;
	        OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, (float)i1, (float)j1);
	        GlStateManager.color(1.0F, 1.0F, 1.0F);
	    }
}

 

ItemAttachableEntity

Spoiler


public class ItemAttachableEntity extends Item
{
    private final Class <? extends EntityAttachable > hangingEntityClass;

    public ItemAttachableEntity(Class <? extends EntityAttachable > entityClass)
    {
        this.hangingEntityClass = entityClass;
        this.setCreativeTab(Apotropaic.creativeTab);
    }

    /**
     * Called when a Block is right-clicked with this Item
     */
    public EnumActionResult onItemUse(EntityPlayer player, World worldIn, BlockPos pos, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ)
    {
        ItemStack itemstack = player.getHeldItem(hand);
        BlockPos blockpos = pos.offset(facing);

        if (facing != EnumFacing.DOWN && facing != EnumFacing.UP && player.canPlayerEdit(blockpos, facing, itemstack))
        {
            EntityAttachable entityhanging = this.createEntity(worldIn, blockpos, facing);

            if (entityhanging != null && entityhanging.onValidSurface())
            {
                if (!worldIn.isRemote)
                {
                    entityhanging.playPlaceSound();
                    worldIn.spawnEntity(entityhanging);
                }

                itemstack.shrink(1);
            }

            return EnumActionResult.SUCCESS;
        }
        else
        {
            return EnumActionResult.FAIL;
        }
    }

    @Nullable
    private EntityAttachable createEntity(World worldIn, BlockPos pos, EnumFacing clickedSide)
    {
        if (this.hangingEntityClass == EntityPainting.class)
        {
            return new EntityPainting(worldIn, pos, clickedSide);
        }
        else
        {
            return this.hangingEntityClass == EntityItemFrame.class ? new EntityItemFrame(worldIn, pos, clickedSide) : null;
        }
    }
}

 

ModItem

Spoiler


@ObjectHolder(Apotropaic.MOD_ID)
public class ModItems {
	
	public static final ItemAttachableEntity ATTACHABLE = new ItemAttachableEntity(EntityVanishingPainting.class);


	/**
	 * Initialise this mod's {@link Item}s with any post-registration data.
	 */
	public static void initialiseItems() {
		
	}

	@Mod.EventBusSubscriber
	public static class RegistrationHandler {
		public static final Set<Item> ITEMS = new HashSet<>();

		/**
		 * Register this mod's {@link Item}s.
		 *
		 * @param event The event
		 */
		@SubscribeEvent
		public static void registerItems(final RegistryEvent.Register<Item> event) {
			final Item[] items = {
					ATTACHABLE,
			};

			final IForgeRegistry<Item> registry = event.getRegistry();

			for (final Item item : items) {
				registry.register(item);
				ITEMS.add(item);
			}
		}
	}
}

 

 

Currently the new issue is Attempted to register a entry with a null name: I'm trying to figure that out. It's a strange setup that Chroonster has.

You don't need to point out what's wrong with the programmer. I already know. Now what's wrong with the code?

Posted
5 minutes ago, Stroam said:

Currently the new issue is Attempted to register a entry with a null name: I'm trying to figure that out. It's a strange setup that Chroonster has.

 

You need to set the registry name of an IForgeRegistryEntry before registering it. I do this in the constructors of my Items/Blocks.

Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.

Posted

Thank you very much. Saved me a bit of time searching all around. I'm now closer than ever!

currently the two issues I have:

Spoiler

Exception loading model for variant apotropaic:painting#inventory for item "apotropaic:painting"

caused by apotropaic:models/item/painting.json

Exception loading model for variant apotropaic:painting#inventory for item "apotropaic:painting", blockstate location exception: 

Which is because I have yet to setup the model, jsons, or texture file which is what I'll be tackling first.

the second is when ever I try to place the untextured block all I get is smoke particles. I think I know the general area that resides in. 

 

 

You don't need to point out what's wrong with the programmer. I already know. Now what's wrong with the code?

Posted

Alright I have not progressed at all. Minecraft no longer gives me errors but I have failed to be able to get an icon, get a painting, place a painting.

I've tried these json configurations and I put them in the models.item folder.

Spoiler

{
    "parent": "builtin/generated",
    "textures": {
        "layer0": "items/painting"
    },
    "display": {
        "thirdperson": {
            "rotation": [ -90, 0, 0 ],
            "translation": [ 0, 1, -3 ],
            "scale": [ 0.55, 0.55, 0.55 ]
        },
        "firstperson": {
            "rotation": [ 0, -135, 25 ],
            "translation": [ 0, 4, 2 ],
            "scale": [ 1.7, 1.7, 1.7 ]
        }
    }
}

 

Spoiler

{
    "parent": "item/generated",
    "textures": {
        "layer0": "items/painting"
    }
}

I have a the same painting.png as the vanilla one in textures.items

I also created textures.paintings folder like they have in vanilla and it has the same png

What am I doing wrong. If you need any further files let me know.

You don't need to point out what's wrong with the programmer. I already know. Now what's wrong with the code?

Posted

The FML log (logs/fml-client-latest.log) should tell you why the models failed to load. Upload it to Gist or Pastebin and link it here.

Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.

Posted

There aren't any model errors in the log.

 

What does the item render as? Where are you registering the model? Post your code.

Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.

Posted

code

Spoiler

itemApotropaic

Spoiler


public class ItemApotropaic extends Item {
	public ItemApotropaic(final String itemName) {
		setItemName(this, itemName);
		setCreativeTab(Apotropaic.creativeTab);
	}

	/**
	 * Set the registry name of {@code item} to {@code itemName} and the unlocalised name to the full registry name.
	 *
	 * @param item     The item
	 * @param itemName The item's name
	 */
	public static void setItemName(final Item item, final String itemName) {
		item.setRegistryName(Apotropaic.MOD_ID, itemName);
		item.setUnlocalizedName(item.getRegistryName().toString());
	}
}

 

itemAttachableEntity

Spoiler


public class ItemAttachableEntity extends Item
{
    private final Class <? extends EntityAttachable > AttachableEntityClass;

    public ItemAttachableEntity(Class <? extends EntityAttachable > entityClass, final String itemName)
    {
        this.AttachableEntityClass = entityClass;
        ItemApotropaic.setItemName(this, itemName);
        this.setCreativeTab(Apotropaic.creativeTab);
    }

    /**
     * Called when a Block is right-clicked with this Item
     */
    public EnumActionResult onItemUse(EntityPlayer player, World worldIn, BlockPos pos, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ)
    {
        ItemStack itemstack = player.getHeldItem(hand);
        BlockPos blockpos = pos.offset(facing);

        if (facing != EnumFacing.DOWN && facing != EnumFacing.UP && player.canPlayerEdit(blockpos, facing, itemstack))
        {
            EntityAttachable EntityAttachable = this.createEntity(worldIn, blockpos, facing);

            if (EntityAttachable != null && EntityAttachable.onValidSurface())
            {
                if (!worldIn.isRemote)
                {
                    EntityAttachable.playPlaceSound();
                    worldIn.spawnEntity(EntityAttachable);
                }

                itemstack.shrink(1);
            }

            return EnumActionResult.SUCCESS;
        }
        else
        {
            return EnumActionResult.FAIL;
        }
    }

    @Nullable
    private EntityAttachable createEntity(World worldIn, BlockPos pos, EnumFacing clickedSide)
    {
        //if (this.AttachableEntityClass == EntityVanishingPainting.class)
        
        return new EntityVanishingPainting(worldIn, pos, clickedSide);
    }
}

 

entityAttachable

Spoiler



public abstract class EntityAttachable extends Entity{
	
	private static final Predicate<Entity> IS_HANGING_ENTITY = new Predicate<Entity>()
    {
        public boolean apply(@Nullable Entity entity)
        {
            return entity instanceof EntityAttachable;
        }
    };
    private int tickCounter1;
    protected BlockPos hangingPosition;
    /** The direction the entity is facing */
    @Nullable
    public EnumFacing facingDirection;

    public EntityAttachable(World worldIn)
    {
        super(worldIn);
        this.setSize(0.5F, 0.5F);
    }

    public EntityAttachable(World worldIn, BlockPos hangingPositionIn)
    {
        this(worldIn);
        this.hangingPosition = hangingPositionIn;
    }

    protected void entityInit()
    {
    }

    /**
     * Updates facing and bounding box based on it
     */
    protected void updateFacingWithBoundingBox(EnumFacing facingDirectionIn)
    {
        Validate.notNull(facingDirectionIn);
        Validate.isTrue(facingDirectionIn.getAxis().isHorizontal());
        this.facingDirection = facingDirectionIn;
        this.rotationYaw = (float)(this.facingDirection.getHorizontalIndex() * 90);
        this.prevRotationYaw = this.rotationYaw;
        this.updateBoundingBox();
    }

    /**
     * Updates the entity bounding box based on current facing
     */
    protected void updateBoundingBox()
    {
        if (this.facingDirection != null)
        {
            double d0 = (double)this.hangingPosition.getX() + 0.5D;
            double d1 = (double)this.hangingPosition.getY() + 0.5D;
            double d2 = (double)this.hangingPosition.getZ() + 0.5D;
            double d3 = 0.46875D;
            double d4 = this.offs(this.getWidthPixels());
            double d5 = this.offs(this.getHeightPixels());
            d0 = d0 - (double)this.facingDirection.getFrontOffsetX() * 0.46875D;
            d2 = d2 - (double)this.facingDirection.getFrontOffsetZ() * 0.46875D;
            d1 = d1 + d5;
            EnumFacing enumfacing = this.facingDirection.rotateYCCW();
            d0 = d0 + d4 * (double)enumfacing.getFrontOffsetX();
            d2 = d2 + d4 * (double)enumfacing.getFrontOffsetZ();
            this.posX = d0;
            this.posY = d1;
            this.posZ = d2;
            double d6 = (double)this.getWidthPixels();
            double d7 = (double)this.getHeightPixels();
            double d8 = (double)this.getWidthPixels();

            if (this.facingDirection.getAxis() == EnumFacing.Axis.Z)
            {
                d8 = 1.0D;
            }
            else
            {
                d6 = 1.0D;
            }

            d6 = d6 / 32.0D;
            d7 = d7 / 32.0D;
            d8 = d8 / 32.0D;
            this.setEntityBoundingBox(new AxisAlignedBB(d0 - d6, d1 - d7, d2 - d8, d0 + d6, d1 + d7, d2 + d8));
        }
    }

    private double offs(int p_190202_1_)
    {
        return p_190202_1_ % 32 == 0 ? 0.5D : 0.0D;
    }

    /**
     * Called to update the entity's position/logic.
     */
    public void onUpdate()
    {
        this.prevPosX = this.posX;
        this.prevPosY = this.posY;
        this.prevPosZ = this.posZ;

        if (this.tickCounter1++ == 100 && !this.world.isRemote)
        {
            this.tickCounter1 = 0;

            if (!this.isDead && !this.onValidSurface())
            {
                this.setDead();
                this.onBroken((Entity)null);
            }
        }
    }

    /**
     * checks to make sure painting can be placed there
     */
    public boolean onValidSurface()
    {
        if (!this.world.getCollisionBoxes(this, this.getEntityBoundingBox()).isEmpty())
        {
            return false;
        }
        else
        {
            int i = Math.max(1, this.getWidthPixels() / 16);
            int j = Math.max(1, this.getHeightPixels() / 16);
            BlockPos blockpos = this.hangingPosition.offset(this.facingDirection.getOpposite());
            EnumFacing enumfacing = this.facingDirection.rotateYCCW();
            BlockPos.MutableBlockPos blockpos$mutableblockpos = new BlockPos.MutableBlockPos();

            for (int k = 0; k < i; ++k)
            {
                for (int l = 0; l < j; ++l)
                {
                    int i1 = (i - 1) / -2;
                    int j1 = (j - 1) / -2;
                    blockpos$mutableblockpos.setPos(blockpos).move(enumfacing, k + i1).move(EnumFacing.UP, l + j1);
                    IBlockState iblockstate = this.world.getBlockState(blockpos$mutableblockpos);

                    if (iblockstate.isSideSolid(this.world, blockpos$mutableblockpos, this.facingDirection))
                        continue;

                    if (!iblockstate.getMaterial().isSolid() && !BlockRedstoneDiode.isDiode(iblockstate))
                    {
                        return false;
                    }
                }
            }

            return this.world.getEntitiesInAABBexcluding(this, this.getEntityBoundingBox(), IS_HANGING_ENTITY).isEmpty();
        }
    }

    /**
     * Returns true if other Entities should be prevented from moving through this Entity.
     */
    public boolean canBeCollidedWith()
    {
        return true;
    }

    /**
     * Called when a player attacks an entity. If this returns true the attack will not happen.
     */
    public boolean hitByEntity(Entity entityIn)
    {
        return entityIn instanceof EntityPlayer ? this.attackEntityFrom(DamageSource.causePlayerDamage((EntityPlayer)entityIn), 0.0F) : false;
    }

    /**
     * Gets the horizontal facing direction of this Entity.
     */
    public EnumFacing getHorizontalFacing()
    {
        return this.facingDirection;
    }

    /**
     * Called when the entity is attacked.
     */
    public boolean attackEntityFrom(DamageSource source, float amount)
    {
        if (this.isEntityInvulnerable(source))
        {
            return false;
        }
        else
        {
            if (!this.isDead && !this.world.isRemote)
            {
                this.setDead();
                this.setBeenAttacked();
                this.onBroken(source.getTrueSource());
            }

            return true;
        }
    }

    /**
     * Tries to move the entity towards the specified location.
     */
    public void move(MoverType type, double x, double y, double z)
    {
        if (!this.world.isRemote && !this.isDead && x * x + y * y + z * z > 0.0D)
        {
            this.setDead();
            this.onBroken((Entity)null);
        }
    }

    /**
     * Adds to the current velocity of the entity.
     */
    public void addVelocity(double x, double y, double z)
    {
        if (!this.world.isRemote && !this.isDead && x * x + y * y + z * z > 0.0D)
        {
            this.setDead();
            this.onBroken((Entity)null);
        }
    }

    /**
     * (abstract) Protected helper method to write subclass entity data to NBT.
     */
    public void writeEntityToNBT(NBTTagCompound compound)
    {
        compound.setByte("Facing", (byte)this.facingDirection.getHorizontalIndex());
        BlockPos blockpos = this.getHangingPosition();
        compound.setInteger("TileX", blockpos.getX());
        compound.setInteger("TileY", blockpos.getY());
        compound.setInteger("TileZ", blockpos.getZ());
    }

    /**
     * (abstract) Protected helper method to read subclass entity data from NBT.
     */
    public void readEntityFromNBT(NBTTagCompound compound)
    {
        this.hangingPosition = new BlockPos(compound.getInteger("TileX"), compound.getInteger("TileY"), compound.getInteger("TileZ"));
        this.updateFacingWithBoundingBox(EnumFacing.getHorizontal(compound.getByte("Facing")));
    }

    public abstract int getWidthPixels();

    public abstract int getHeightPixels();

    /**
     * Called when this entity is broken. Entity parameter may be null.
     */
    public abstract void onBroken(@Nullable Entity brokenEntity);

    public abstract void playPlaceSound();

    /**
     * Drops an item at the position of the entity.
     */
    public EntityItem entityDropItem(ItemStack stack, float offsetY)
    {
        EntityItem entityitem = new EntityItem(this.world, this.posX + (double)((float)this.facingDirection.getFrontOffsetX() * 0.15F), this.posY + (double)offsetY, this.posZ + (double)((float)this.facingDirection.getFrontOffsetZ() * 0.15F), stack);
        entityitem.setDefaultPickupDelay();
        this.world.spawnEntity(entityitem);
        return entityitem;
    }

    protected boolean shouldSetPosAfterLoading()
    {
        return false;
    }

    /**
     * Sets the x,y,z of the entity from the given parameters. Also seems to set up a bounding box.
     */
    public void setPosition(double x, double y, double z)
    {
        this.hangingPosition = new BlockPos(x, y, z);
        this.updateBoundingBox();
        this.isAirBorne = true;
    }

    public BlockPos getHangingPosition()
    {
        return this.hangingPosition;
    }

    /**
     * Transforms the entity's current yaw with the given Rotation and returns it. This does not have a side-effect.
     */
    @SuppressWarnings("incomplete-switch")
    public float getRotatedYaw(Rotation transformRotation)
    {
        if (this.facingDirection != null && this.facingDirection.getAxis() != EnumFacing.Axis.Y)
        {
            switch (transformRotation)
            {
                case CLOCKWISE_180:
                    this.facingDirection = this.facingDirection.getOpposite();
                    break;
                case COUNTERCLOCKWISE_90:
                    this.facingDirection = this.facingDirection.rotateYCCW();
                    break;
                case CLOCKWISE_90:
                    this.facingDirection = this.facingDirection.rotateY();
            }
        }

        float f = MathHelper.wrapDegrees(this.rotationYaw);

        switch (transformRotation)
        {
            case CLOCKWISE_180:
                return f + 180.0F;
            case COUNTERCLOCKWISE_90:
                return f + 90.0F;
            case CLOCKWISE_90:
                return f + 270.0F;
            default:
                return f;
        }
    }

    /**
     * Transforms the entity's current yaw with the given Mirror and returns it. This does not have a side-effect.
     */
    public float getMirroredYaw(Mirror transformMirror)
    {
        return this.getRotatedYaw(transformMirror.toRotation(this.facingDirection));
    }

    /**
     * Called when a lightning bolt hits the entity.
     */
    public void onStruckByLightning(EntityLightningBolt lightningBolt)
    {
    }

}

 

entityvanishingpainting

Spoiler


public class EntityVanishingPainting extends EntityAttachable{
	
	private static final DataParameter<Integer> DURATION = EntityDataManager.<Integer>createKey(EntityVanishingPainting.class,
			DataSerializers.VARINT);
	
	private int duration;
	private int tickCounter1;

	public EntityVanishingPainting(World worldIn)
    {
        super(worldIn);
        this.duration = 80;
        this.setSize(0.5F, 0.5F);
    }

    public EntityVanishingPainting(World worldIn, BlockPos pos, EnumFacing facing)
    {
        super(worldIn, pos);
        this.updateFacingWithBoundingBox(facing);
    }
    
    @Override
    protected void entityInit()
    {
        this.dataManager.register(DURATION, Integer.valueOf(80));
    }
    
    /**
     * Called to update the entity's position/logic.
     */
    @Override
    public void onUpdate()
    {
    	
    	this.prevPosX = this.posX;
        this.prevPosY = this.posY;
        this.prevPosZ = this.posZ;

        if (this.tickCounter1++ == 20 && !this.world.isRemote)
        {
            this.tickCounter1 = 0;

            if (!this.isDead && !this.onValidSurface())
            {
                this.setDead();
                this.onBroken((Entity)null);
            }
        }

        --this.duration;

        if (this.duration <= 0)
        {
            this.setDead();

            if (!this.world.isRemote)
            {
                this.burnUp();
            }
        }
        else
        {
            this.handleWaterMovement();
            //this.world.spawnParticle(EnumParticleTypes.SMOKE_NORMAL, this.posX, this.posY + 0.5D, this.posZ, 0.0D, 0.0D, 0.0D);
        }
    }

	@Override
	public int getWidthPixels() {
		return 6;
	}

	@Override
	public int getHeightPixels() {
		return 12;
	}

	@Override
	public void onBroken(Entity brokenEntity) {
		if (this.world.getGameRules().getBoolean("doEntityDrops"))
        {
			this.playSound(SoundEvents.ENTITY_PAINTING_BREAK, 1.0F, 1.0F);
			
			if (brokenEntity instanceof EntityPlayer)
            {
				EntityPlayer entityplayer = (EntityPlayer)brokenEntity;

                if (entityplayer.capabilities.isCreativeMode)
                {
                    return;
                }
            }
			this.setDead();
			this.burnUp();
            //this.entityDropItem(new ItemStack(this), 0.0F);
        }
	}

	@Override
	public void playPlaceSound() {
		this.playSound(SoundEvents.ENTITY_PAINTING_PLACE, 1.0F, 1.0F);
		
	}
	
	private void burnUp()
	{
		world.spawnParticle(EnumParticleTypes.FLAME, this.posX, this.posY, this.posZ, 0, 0, 0, new int[0]);
	}
	
	@Override
	public void writeEntityToNBT(NBTTagCompound compound)
    {
        compound.setShort("DURATION", (short)this.getDuration());
    }
	
	@Override
	public void readEntityFromNBT(NBTTagCompound compound)
	{
		this.setDuration(compound.getShort("DURATION"));
	}
	
	public void setDuration(int time) 
	{
		this.dataManager.set(DURATION, Integer.valueOf(time));
	}
	
	public void notifyDataMangerChange(DataParameter<?> key)
	{
		if (DURATION.equals(key))
		{
			this.duration = this.getDurationDataManger();
		}
	}
	
	/**
	 * Gets the duration from the data manager
	 */
	public int getDurationDataManger() 
	{
		return ((Integer)this.dataManager.get(DURATION)).intValue();
	}

	public int getDuration() 
	{
		return this.duration;
	}
	
	

}

 

renderVanishingpainting

Spoiler


@SideOnly(Side.CLIENT)
public class RenderVanishingPainting extends Render<EntityVanishingPainting>
{
	 //private static final ResourceLocation KRISTOFFER_TempAntiMobSpawn_TEXTURE = new ResourceLocation("textures/entity/papertalisman.png");
	private final ResourceLocation entityTexture;
	
	    public RenderVanishingPainting(final RenderManager renderManagerIn, final ResourceLocation entityTexture)
	    {
	        super(renderManagerIn);
	        this.entityTexture = entityTexture;
	    }
	    
	    protected ResourceLocation getEntityTexture(final EntityVanishingPainting entity)
	    {
	    	return entityTexture;
	    }

	    /**
	     * Renders the desired {@code T} type Entity.
	     */
	    public void doRender(EntityVanishingPainting entity, double x, double y, double z, float entityYaw, float partialTicks)
	    {
	        GlStateManager.pushMatrix();
	        GlStateManager.translate(x, y, z);
	        GlStateManager.rotate(180.0F - entityYaw, 0.0F, 1.0F, 0.0F);
	        GlStateManager.enableRescaleNormal();
	        this.bindEntityTexture(entity);
	        float f = 0.0625F;
	        GlStateManager.scale(0.0625F, 0.0625F, 0.0625F);

	        if (this.renderOutlines)
	        {
	            GlStateManager.enableColorMaterial();
	            GlStateManager.enableOutlineMode(this.getTeamColor(entity));
	        }

	        this.renderTempAntiMobSpawn(entity, 6, 12, 6, 3); //width height starting x and y positions

	        if (this.renderOutlines)
	        {
	            GlStateManager.disableOutlineMode();
	            GlStateManager.disableColorMaterial();
	        }

	        GlStateManager.disableRescaleNormal();
	        GlStateManager.popMatrix();
	        super.doRender(entity, x, y, z, entityYaw, partialTicks);
	    }

	    private void renderTempAntiMobSpawn(EntityVanishingPainting TempAntiMobSpawn, int width, int height, int textureU, int textureV)
	    {
	        float f = (float)(-width) / 2.0F;
	        float f1 = (float)(-height) / 2.0F;
	        float f2 = 0.5F;
	        float f3 = 0.75F;
	        float f4 = 0.8125F;
	        float f5 = 0.0F;
	        float f6 = 0.0625F;
	        float f7 = 0.75F;
	        float f8 = 0.8125F;
	        float f9 = 0.001953125F;
	        float f10 = 0.001953125F;
	        float f11 = 0.7519531F;
	        float f12 = 0.7519531F;
	        float f13 = 0.0F;
	        float f14 = 0.0625F;

	        for (int i = 0; i < width / 16; ++i)
	        {
	            for (int j = 0; j < height / 16; ++j)
	            {
	                float f15 = f + (float)((i + 1) * 16);
	                float f16 = f + (float)(i * 16);
	                float f17 = f1 + (float)((j + 1) * 16);
	                float f18 = f1 + (float)(j * 16);
	                this.setLightmap(TempAntiMobSpawn, (f15 + f16) / 2.0F, (f17 + f18) / 2.0F);
	                float f19 = (float)(textureU + width - i * 16) / 256.0F;
	                float f20 = (float)(textureU + width - (i + 1) * 16) / 256.0F;
	                float f21 = (float)(textureV + height - j * 16) / 256.0F;
	                float f22 = (float)(textureV + height - (j + 1) * 16) / 256.0F;
	                Tessellator tessellator = Tessellator.getInstance();
	                BufferBuilder bufferbuilder = tessellator.getBuffer();
	                bufferbuilder.begin(7, DefaultVertexFormats.POSITION_TEX_NORMAL);
	                bufferbuilder.pos((double)f15, (double)f18, -0.5D).tex((double)f20, (double)f21).normal(0.0F, 0.0F, -1.0F).endVertex();
	                bufferbuilder.pos((double)f16, (double)f18, -0.5D).tex((double)f19, (double)f21).normal(0.0F, 0.0F, -1.0F).endVertex();
	                bufferbuilder.pos((double)f16, (double)f17, -0.5D).tex((double)f19, (double)f22).normal(0.0F, 0.0F, -1.0F).endVertex();
	                bufferbuilder.pos((double)f15, (double)f17, -0.5D).tex((double)f20, (double)f22).normal(0.0F, 0.0F, -1.0F).endVertex();
	                bufferbuilder.pos((double)f15, (double)f17, 0.5D).tex(0.75D, 0.0D).normal(0.0F, 0.0F, 1.0F).endVertex();
	                bufferbuilder.pos((double)f16, (double)f17, 0.5D).tex(0.8125D, 0.0D).normal(0.0F, 0.0F, 1.0F).endVertex();
	                bufferbuilder.pos((double)f16, (double)f18, 0.5D).tex(0.8125D, 0.0625D).normal(0.0F, 0.0F, 1.0F).endVertex();
	                bufferbuilder.pos((double)f15, (double)f18, 0.5D).tex(0.75D, 0.0625D).normal(0.0F, 0.0F, 1.0F).endVertex();
	                bufferbuilder.pos((double)f15, (double)f17, -0.5D).tex(0.75D, 0.001953125D).normal(0.0F, 1.0F, 0.0F).endVertex();
	                bufferbuilder.pos((double)f16, (double)f17, -0.5D).tex(0.8125D, 0.001953125D).normal(0.0F, 1.0F, 0.0F).endVertex();
	                bufferbuilder.pos((double)f16, (double)f17, 0.5D).tex(0.8125D, 0.001953125D).normal(0.0F, 1.0F, 0.0F).endVertex();
	                bufferbuilder.pos((double)f15, (double)f17, 0.5D).tex(0.75D, 0.001953125D).normal(0.0F, 1.0F, 0.0F).endVertex();
	                bufferbuilder.pos((double)f15, (double)f18, 0.5D).tex(0.75D, 0.001953125D).normal(0.0F, -1.0F, 0.0F).endVertex();
	                bufferbuilder.pos((double)f16, (double)f18, 0.5D).tex(0.8125D, 0.001953125D).normal(0.0F, -1.0F, 0.0F).endVertex();
	                bufferbuilder.pos((double)f16, (double)f18, -0.5D).tex(0.8125D, 0.001953125D).normal(0.0F, -1.0F, 0.0F).endVertex();
	                bufferbuilder.pos((double)f15, (double)f18, -0.5D).tex(0.75D, 0.001953125D).normal(0.0F, -1.0F, 0.0F).endVertex();
	                bufferbuilder.pos((double)f15, (double)f17, 0.5D).tex(0.751953125D, 0.0D).normal(-1.0F, 0.0F, 0.0F).endVertex();
	                bufferbuilder.pos((double)f15, (double)f18, 0.5D).tex(0.751953125D, 0.0625D).normal(-1.0F, 0.0F, 0.0F).endVertex();
	                bufferbuilder.pos((double)f15, (double)f18, -0.5D).tex(0.751953125D, 0.0625D).normal(-1.0F, 0.0F, 0.0F).endVertex();
	                bufferbuilder.pos((double)f15, (double)f17, -0.5D).tex(0.751953125D, 0.0D).normal(-1.0F, 0.0F, 0.0F).endVertex();
	                bufferbuilder.pos((double)f16, (double)f17, -0.5D).tex(0.751953125D, 0.0D).normal(1.0F, 0.0F, 0.0F).endVertex();
	                bufferbuilder.pos((double)f16, (double)f18, -0.5D).tex(0.751953125D, 0.0625D).normal(1.0F, 0.0F, 0.0F).endVertex();
	                bufferbuilder.pos((double)f16, (double)f18, 0.5D).tex(0.751953125D, 0.0625D).normal(1.0F, 0.0F, 0.0F).endVertex();
	                bufferbuilder.pos((double)f16, (double)f17, 0.5D).tex(0.751953125D, 0.0D).normal(1.0F, 0.0F, 0.0F).endVertex();
	                tessellator.draw();
	            }
	        }
	    }

	    private void setLightmap(EntityVanishingPainting TempAntiMobSpawn, float p_77008_2_, float p_77008_3_)
	    {
	        int i = MathHelper.floor(TempAntiMobSpawn.posX);
	        int j = MathHelper.floor(TempAntiMobSpawn.posY + (double)(p_77008_3_ / 16.0F));
	        int k = MathHelper.floor(TempAntiMobSpawn.posZ);
	        EnumFacing enumfacing = TempAntiMobSpawn.facingDirection;

	        if (enumfacing == EnumFacing.NORTH)
	        {
	            i = MathHelper.floor(TempAntiMobSpawn.posX + (double)(p_77008_2_ / 16.0F));
	        }

	        if (enumfacing == EnumFacing.WEST)
	        {
	            k = MathHelper.floor(TempAntiMobSpawn.posZ - (double)(p_77008_2_ / 16.0F));
	        }

	        if (enumfacing == EnumFacing.SOUTH)
	        {
	            i = MathHelper.floor(TempAntiMobSpawn.posX - (double)(p_77008_2_ / 16.0F));
	        }

	        if (enumfacing == EnumFacing.EAST)
	        {
	            k = MathHelper.floor(TempAntiMobSpawn.posZ + (double)(p_77008_2_ / 16.0F));
	        }

	        int l = this.renderManager.world.getCombinedLight(new BlockPos(i, j, k), 0);
	        int i1 = l % 65536;
	        int j1 = l / 65536;
	        OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, (float)i1, (float)j1);
	        GlStateManager.color(1.0F, 1.0F, 1.0F);
	    }
}

 

ModItems

Spoiler


@ObjectHolder(Apotropaic.MOD_ID)
public class ModItems {
	
	public static final ItemAttachableEntity ATTACHABLE = new ItemAttachableEntity(EntityVanishingPainting.class, "painting");


	/**
	 * Initialise this mod's {@link Item}s with any post-registration data.
	 */
	public static void initialiseItems() {
		
	}

	@Mod.EventBusSubscriber
	public static class RegistrationHandler {
		public static final Set<Item> ITEMS = new HashSet<>();

		/**
		 * Register this mod's {@link Item}s.
		 *
		 * @param event The event
		 */
		@SubscribeEvent
		public static void registerItems(final RegistryEvent.Register<Item> event) {
			final Item[] items = {
					ATTACHABLE,
			};

			final IForgeRegistry<Item> registry = event.getRegistry();

			for (final Item item : items) {
				registry.register(item);
				ITEMS.add(item);
			}
		}
	}
}

 

ModEntities

Spoiler


public class ModEntities {
	public static void registerEntities() {
		registerEntity(EntityVanishingPainting.class, "paper_talisman", 64, 20, false);
	}

	public static void addSpawns() {
		
	}

	/**
	 * Get an array of {@link Biome}s with the specified {@link BiomeDictionary.Type}.
	 *
	 * @param type The Type
	 * @return An array of Biomes
	 */
	private static Biome[] getBiomes(final BiomeDictionary.Type type) {
		return BiomeDictionary.getBiomes(type).toArray(new Biome[0]);
	}


	/**
	 * Add a spawn list entry for {@code classToAdd} in each {@link Biome} with an entry for {@code classToCopy} using the same weight and group count.
	 *
	 * @param classToAdd         The class to add spawn entries for
	 * @param creatureTypeToAdd  The EnumCreatureType to add spawn entries for
	 * @param classToCopy        The class to copy spawn entries from
	 * @param creatureTypeToCopy The EnumCreatureType to copy spawn entries from
	 */
	private static void copySpawns(final Class<? extends EntityLiving> classToAdd, final EnumCreatureType creatureTypeToAdd, final Class<? extends EntityLiving> classToCopy, final EnumCreatureType creatureTypeToCopy) {
		for (final Biome biome : ForgeRegistries.BIOMES) {
			biome.getSpawnableList(creatureTypeToCopy).stream()
					.filter(entry -> entry.entityClass == classToCopy)
					.findFirst()
					.ifPresent(spawnListEntry ->
							biome.getSpawnableList(creatureTypeToAdd).add(new Biome.SpawnListEntry(classToAdd, spawnListEntry.itemWeight, spawnListEntry.minGroupCount, spawnListEntry.maxGroupCount))
					);
		}
	}

	private static int entityID = 0;

	/**
	 * Register an entity with the specified tracking values.
	 *
	 * @param entityClass          The entity's class
	 * @param entityName           The entity's unique name
	 * @param trackingRange        The range at which MC will send tracking updates
	 * @param updateFrequency      The frequency of tracking updates
	 * @param sendsVelocityUpdates Whether to send velocity information packets as well
	 */
	private static void registerEntity(final Class<? extends Entity> entityClass, final String entityName, final int trackingRange, final int updateFrequency, final boolean sendsVelocityUpdates) {
		final ResourceLocation registryName = new ResourceLocation(Apotropaic.MOD_ID, entityName);
		EntityRegistry.registerModEntity(registryName, entityClass, registryName.toString(), entityID++, Apotropaic.instance, trackingRange, updateFrequency, sendsVelocityUpdates);
	}

	/**
	 * Register an entity with the specified tracking values and spawn egg colours.
	 *
	 * @param entityClass          The entity's class
	 * @param entityName           The entity's unique name
	 * @param trackingRange        The range at which MC will send tracking updates
	 * @param updateFrequency      The frequency of tracking updates
	 * @param sendsVelocityUpdates Whether to send velocity information packets as well
	 * @param eggPrimary           The spawn egg's primary (background) colour
	 * @param eggSecondary         The spawn egg's secondary (foreground) colour
	 */
	private static void registerEntity(final Class<? extends Entity> entityClass, final String entityName, final int trackingRange, final int updateFrequency, final boolean sendsVelocityUpdates, final int eggPrimary, final int eggSecondary) {
		final ResourceLocation registryName = new ResourceLocation(Apotropaic.MOD_ID, entityName);
		EntityRegistry.registerModEntity(registryName, entityClass, registryName.toString(), entityID++, Apotropaic.instance, trackingRange, updateFrequency, sendsVelocityUpdates, eggPrimary, eggSecondary);
	}
}

 

ModRenderers

Spoiler


public class ModRenderers {
	public static void register() {
		RenderingRegistry.registerEntityRenderingHandler(EntityVanishingPainting.class, renderManager -> new RenderVanishingPainting(renderManager, new ResourceLocation(Apotropaic.MOD_ID, "textures/entity/mod_arrow.png")));
	}

}

 

Apotropaic

Spoiler


@Mod(modid = Apotropaic.MOD_ID, name = Apotropaic.MOD_NAME, acceptedMinecraftVersions = "[1.12]",useMetadata = false, 
dependencies = Reference.DEPENDENCIES)
public class Apotropaic
{
	public static final String MOD_ID = "apotropaic";
	public static final String MOD_NAME = "Ouroboros Apotropaic";

	public static final CreativeTabApotropaic creativeTab = new CreativeTabApotropaic();
	
	@SidedProxy(clientSide = "com.stroam.apotropaic.proxy.ClientProxy", serverSide = "com.stroam.apotropaic.proxy.ServerProxy")
	public static IProxy proxy;
	
	@Instance
	public static Apotropaic instance;
	
	public static SimpleNetworkWrapper network;

	public Apotropaic() {}
	
	static {
		FluidRegistry.enableUniversalBucket(); //must be called before preInit
	}

	@EventHandler
	public void preInit(FMLPreInitializationEvent event)
	{
		com.stroam.apotropaic.Logger.setLogger(event.getModLog());
	
		network = NetworkRegistry.INSTANCE.newSimpleChannel(Apotropaic.MOD_ID);

		ModItems.initialiseItems();
		ModEntities.registerEntities();
		
		proxy.preInit();
	}

	@EventHandler
	public void init(final FMLInitializationEvent event) {

		proxy.init();
	}

	@EventHandler
	public void postInit(final FMLPostInitializationEvent event) {

		proxy.postInit();

	}



}

 

 

 

 

You don't need to point out what's wrong with the programmer. I already know. Now what's wrong with the code?

Posted (edited)

Where do you call ModRenderers.register from? Where do you register your item models?

 

Post a screenshot of the item.

Edited by Choonster

Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.

Posted (edited)

ModRenderers is called from preInit in ClientProxy

ModModelManager calls the item models

 

I'm going to take the time to make a git repo for this real quick. Thanks for the help. I hope this makes it go quicker.

 

I've identified an issue with the item models. I'd like to see if I can solve it first before uploading. 

I have an icon!!! ...but it still doesn't do anything except play the placePainting noise.

I'm almost there. Just need it to make an actual painting which I think I've got a clue where I need to do some changes. Also it's not listening to my en_us.lang and I don't know why. Github repo

Edited by Stroam

You don't need to point out what's wrong with the programmer. I already know. Now what's wrong with the code?

Posted (edited)

Fixed the .lang file

I fixed what I thought was causing the issue with placing the painting and it didn't work. So now I'm tired and clueless. The repo is up to date from the last post. Going to sleep on in and come back on it in the morning.

Edited by Stroam

You don't need to point out what's wrong with the programmer. I already know. Now what's wrong with the code?

Posted (edited)
32 minutes ago, Stroam said:

I fixed what I thought was causing the issue with placing the painting and it didn't work. So now I'm tired and clueless. The en_us.lang I know is and easy fix but I can't for the life of me figure it out. The repo is up to date. Going to keep beating my head against the wall till I pass out or it starts working. If I don't reply withing 15 minutes of a post, assume I passed out.

 

You have two lang files, but neither is correct. You have one with the right name in the wrong location and one with the wrong name in the right location.


The correct location and name is assets/<modid>/lang/en_us.lang (when you have a pack.mcmeta file with pack_format set to 3).

Edited by Choonster

Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.

Posted
1 minute ago, Choonster said:

 

You have two lang files, but neither is correct. You have one with the correct name in the wrong location and one with the wrong name in the correct location.


The correct location and name is assets/<modid>/lang/en_us.lang (when you have a pack.mcmeta file with pack_format set to 3).

Thanks. Just figured it out. Didn't know about the pack.meta stuff though. Still not getting it to place the painting but everything else is working. I'm going to tear into it again tomorrow.

You don't need to point out what's wrong with the programmer. I already know. Now what's wrong with the code?

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

    • Open the file and remove the # from # -Xmx4G
    • https://mclo.gs/uea1hj9 It should be easier to see the crash report in this format...sorry I'm new to this
    • Hello...I was wondering if somebody could help me with this crash. I was using chunky to pre-load chunks and this chunk, -473 285 (-7685 y 4560) seems to be corrupted or something. So like a dummy I teleported myself from the server console there and it crashed as soon as I would join the world. I used MCA selector to delete the problematic chunk and luckily it sent me back to my last known location. Can anyone see what is possibly causing this issue with the crash log? Anyway...here it is. My gosh this is frustrating. ---- Minecraft Crash Report ---- // Hi. I'm Connector, and I'm a crashaholic ========================= SINYTRA CONNECTOR IS PRESENT! Please verify issues are not caused by Connector before reporting them to mod authors. If you're unsure, file a report on Connector's issue tracker found at https://github.com/Sinytra/Connector/issues. ========================= // You should try our sister game, Minceraft! Time: 2025-09-05 03:24:05 Description: Feature placement java.lang.NullPointerException: Cannot invoke "net.minecraft.world.level.Level.m_8055_(net.minecraft.core.BlockPos)" because "this.f_58857_" is null     at net.minecraft.world.level.block.entity.JukeboxBlockEntity.m_271871_(JukeboxBlockEntity.java:76) ~[server-1.20.1-20230612.114412-srg.jar%23269!/:?] {re:mixin,pl:connector_pre_launch:A,re:classloading,pl:mixin:APP:fabric-transfer-api-v1.mixins.json:JukeboxBlockEntityMixin from mod fabric_transfer_api_v1,pl:mixin:APP:amendments-common.mixins.json:JukeboxBlockEntityMixin from mod amendments,pl:mixin:A,pl:connector_pre_launch:A}     at net.minecraft.world.level.block.entity.JukeboxBlockEntity.m_7407_(JukeboxBlockEntity.java:132) ~[server-1.20.1-20230612.114412-srg.jar%23269!/:?] {re:mixin,pl:connector_pre_launch:A,re:classloading,pl:mixin:APP:fabric-transfer-api-v1.mixins.json:JukeboxBlockEntityMixin from mod fabric_transfer_api_v1,pl:mixin:APP:amendments-common.mixins.json:JukeboxBlockEntityMixin from mod amendments,pl:mixin:A,pl:connector_pre_launch:A}     at net.minecraft.world.ticks.ContainerSingleItem.m_8016_(ContainerSingleItem.java:37) ~[server-1.20.1-20230612.114412-srg.jar%23269!/:?] {re:mixin,pl:connector_pre_launch:A,re:classloading,pl:connector_pre_launch:A}     at net.minecraft.world.ticks.ContainerSingleItem.m_272108_(ContainerSingleItem.java:28) ~[server-1.20.1-20230612.114412-srg.jar%23269!/:?] {re:mixin,pl:connector_pre_launch:A,re:classloading,pl:connector_pre_launch:A}     at net.minecraft.world.ticks.ContainerSingleItem.m_6211_(ContainerSingleItem.java:20) ~[server-1.20.1-20230612.114412-srg.jar%23269!/:?] {re:mixin,pl:connector_pre_launch:A,re:classloading,pl:connector_pre_launch:A}     at net.minecraft.world.Clearable.m_18908_(Clearable.java:10) ~[server-1.20.1-20230612.114412-srg.jar%23269!/:?] {re:mixin,pl:connector_pre_launch:A,re:classloading,pl:connector_pre_launch:A}     at net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate.m_230328_(StructureTemplate.java:232) ~[server-1.20.1-20230612.114412-srg.jar%23269!/:?] {re:mixin,xf:fml:forge:forge_method_redirector,pl:connector_pre_launch:A,re:classloading,xf:fml:forge:forge_method_redirector,pl:mixin:APP:betterdungeons.mixins.json:DungeonContextMixin from mod betterdungeons,pl:mixin:APP:betterdungeons.mixins.json:StructureTemplateMixin from mod betterdungeons,pl:mixin:APP:cataclysm.mixins.json:StructureTemplateMixin from mod cataclysm,pl:mixin:APP:lithostitched.mixins.json:common.StructureTemplateMixin from mod lithostitched,pl:mixin:APP:dungeonnowloading.forge.mixins.json:structures.StructureTemplateMixin from mod dungeonnowloading,pl:mixin:APP:integrated_api-common.mixins.json:structures.StructureTemplateMixin from mod integrated_api,pl:mixin:APP:integrated_api-common.mixins.json:structures.TemplateAccessor from mod integrated_api,pl:mixin:APP:blueprint.mixins.json:StructureTemplateMixin from mod blueprint,pl:mixin:APP:zeta.mixins.json:StructureTemplateMixin from mod zeta,pl:mixin:A,pl:connector_pre_launch:A}     at net.minecraft.world.level.levelgen.structure.TemplateStructurePiece.m_213694_(TemplateStructurePiece.java:83) ~[server-1.20.1-20230612.114412-srg.jar%23269!/:?] {re:computing_frames,pl:connector_pre_launch:A,re:classloading,pl:connector_pre_launch:A,re:mixin,pl:connector_pre_launch:A}     at net.minecraft.world.level.levelgen.structure.structures.OceanRuinPieces$OceanRuinPiece.m_213694_(OceanRuinPieces.java:309) ~[server-1.20.1-20230612.114412-srg.jar%23269!/:?] {re:classloading,xf:fml:forge:forge_method_redirector,pl:connector_pre_launch:A}     at net.minecraft.world.level.levelgen.structure.StructureStart.m_226850_(StructureStart.java:90) ~[server-1.20.1-20230612.114412-srg.jar%23269!/:?] {re:mixin,pl:connector_pre_launch:A,re:classloading,pl:mixin:APP:blueprint.mixins.json:StructureStartMixin from mod blueprint,pl:mixin:APP:zeta.mixins.json:StructureStartMixin from mod zeta,pl:mixin:A,pl:connector_pre_launch:A}     at net.minecraft.world.level.chunk.ChunkGenerator.m_223080_(ChunkGenerator.java:320) ~[server-1.20.1-20230612.114412-srg.jar%23269!/:?] {re:mixin,pl:accesstransformer:B,pl:connector_pre_launch:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:citadel.mixins.json:ChunkGeneratorMixin from mod citadel,pl:mixin:APP:bettermineshafts.mixins.json:DisableVanillaMineshaftsMixin from mod bettermineshafts,pl:mixin:A,pl:connector_pre_launch:A}     at com.google.common.collect.ImmutableList.forEach(ImmutableList.java:422) ~[guava-31.1-jre.jar%2374!/:?] {re:mixin}     at net.minecraft.world.level.chunk.ChunkGenerator.m_213609_(ChunkGenerator.java:319) ~[server-1.20.1-20230612.114412-srg.jar%23269!/:?] {re:mixin,pl:accesstransformer:B,pl:connector_pre_launch:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:citadel.mixins.json:ChunkGeneratorMixin from mod citadel,pl:mixin:APP:bettermineshafts.mixins.json:DisableVanillaMineshaftsMixin from mod bettermineshafts,pl:mixin:A,pl:connector_pre_launch:A}     at net.minecraft.world.level.chunk.ChunkStatus.m_279978_(ChunkStatus.java:108) ~[server-1.20.1-20230612.114412-srg.jar%23269!/:?] {re:mixin,pl:accesstransformer:B,pl:connector_pre_launch:A,re:classloading,pl:accesstransformer:B,pl:connector_pre_launch:A}     at net.minecraft.world.level.chunk.ChunkStatus$SimpleGenerationTask.m_214024_(ChunkStatus.java:309) ~[server-1.20.1-20230612.114412-srg.jar%23269!/:?] {re:classloading,pl:connector_pre_launch:A}     at net.minecraft.world.level.chunk.ChunkStatus.m_280308_(ChunkStatus.java:252) ~[server-1.20.1-20230612.114412-srg.jar%23269!/:?] {re:mixin,pl:accesstransformer:B,pl:connector_pre_launch:A,re:classloading,pl:accesstransformer:B,pl:connector_pre_launch:A}     at net.minecraft.server.level.ChunkMap.lambda$scheduleChunkGeneration$27(ChunkMap.java:643) ~[server-1.20.1-20230612.114412-srg.jar%23269!/:?] {re:mixin,pl:accesstransformer:B,pl:connector_pre_launch:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:modernfix-common.mixins.json:bugfix.paper_chunk_patches.ChunkMapMixin from mod modernfix,pl:mixin:APP:modernfix-forge.mixins.json:bugfix.chunk_deadlock.ChunkMapLoadMixin from mod modernfix,pl:mixin:APP:fabric-networking-api-v1.mixins.json:accessor.ThreadedAnvilChunkStorageAccessor from mod fabric_networking_api_v1,pl:mixin:APP:fabric-lifecycle-events-v1.mixins.json:ThreadedAnvilChunkStorageMixin from mod fabric_lifecycle_events_v1,pl:mixin:APP:lithium.mixins.json:world.player_chunk_tick.ThreadedAnvilChunkStorageMixin from mod radium,pl:mixin:APP:lithostitched.mixins.json:common.ChunkMapMixin from mod lithostitched,pl:mixin:A,pl:connector_pre_launch:A}     at com.mojang.datafixers.util.Either$Left.map(Either.java:38) ~[datafixerupper-6.0.8.jar%2377!/:?] {}     at net.minecraft.server.level.ChunkMap.lambda$scheduleChunkGeneration$29(ChunkMap.java:634) ~[server-1.20.1-20230612.114412-srg.jar%23269!/:?] {re:mixin,pl:accesstransformer:B,pl:connector_pre_launch:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:modernfix-common.mixins.json:bugfix.paper_chunk_patches.ChunkMapMixin from mod modernfix,pl:mixin:APP:modernfix-forge.mixins.json:bugfix.chunk_deadlock.ChunkMapLoadMixin from mod modernfix,pl:mixin:APP:fabric-networking-api-v1.mixins.json:accessor.ThreadedAnvilChunkStorageAccessor from mod fabric_networking_api_v1,pl:mixin:APP:fabric-lifecycle-events-v1.mixins.json:ThreadedAnvilChunkStorageMixin from mod fabric_lifecycle_events_v1,pl:mixin:APP:lithium.mixins.json:world.player_chunk_tick.ThreadedAnvilChunkStorageMixin from mod radium,pl:mixin:APP:lithostitched.mixins.json:common.ChunkMapMixin from mod lithostitched,pl:mixin:A,pl:connector_pre_launch:A}     at java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1150) ~[?:?] {}     at java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:482) ~[?:?] {}     at net.minecraft.server.level.ChunkTaskPriorityQueueSorter.m_143188_(ChunkTaskPriorityQueueSorter.java:62) ~[server-1.20.1-20230612.114412-srg.jar%23269!/:?] {re:classloading,pl:connector_pre_launch:A}     at net.minecraft.util.thread.ProcessorMailbox.m_18759_(ProcessorMailbox.java:91) ~[server-1.20.1-20230612.114412-srg.jar%23269!/:?] {re:classloading,pl:connector_pre_launch:A}     at net.minecraft.util.thread.ProcessorMailbox.m_18747_(ProcessorMailbox.java:146) ~[server-1.20.1-20230612.114412-srg.jar%23269!/:?] {re:classloading,pl:connector_pre_launch:A}     at net.minecraft.util.thread.ProcessorMailbox.run(ProcessorMailbox.java:102) ~[server-1.20.1-20230612.114412-srg.jar%23269!/:?] {re:classloading,pl:connector_pre_launch:A}     at java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1395) ~[?:?] {}     at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373) ~[?:?] {}     at java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182) ~[?:?] {}     at java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655) ~[?:?] {re:mixin,re:computing_frames}     at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622) ~[?:?] {re:mixin,re:computing_frames}     at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165) ~[?:?] {re:mixin} A detailed walkthrough of the error, its code path and all known details is as follows: --------------------------------------------------------------------------------------- -- Head -- Thread: Server thread Suspected Mods: NONE Stacktrace:     at net.minecraft.world.level.block.entity.JukeboxBlockEntity.m_271871_(JukeboxBlockEntity.java:76) ~[server-1.20.1-20230612.114412-srg.jar%23269!/:?] {re:mixin,pl:connector_pre_launch:A,re:classloading,pl:mixin:APP:fabric-transfer-api-v1.mixins.json:JukeboxBlockEntityMixin from mod fabric_transfer_api_v1,pl:mixin:APP:amendments-common.mixins.json:JukeboxBlockEntityMixin from mod amendments,pl:mixin:A,pl:connector_pre_launch:A}     at net.minecraft.world.level.block.entity.JukeboxBlockEntity.m_7407_(JukeboxBlockEntity.java:132) ~[server-1.20.1-20230612.114412-srg.jar%23269!/:?] {re:mixin,pl:connector_pre_launch:A,re:classloading,pl:mixin:APP:fabric-transfer-api-v1.mixins.json:JukeboxBlockEntityMixin from mod fabric_transfer_api_v1,pl:mixin:APP:amendments-common.mixins.json:JukeboxBlockEntityMixin from mod amendments,pl:mixin:A,pl:connector_pre_launch:A}     at net.minecraft.world.ticks.ContainerSingleItem.m_8016_(ContainerSingleItem.java:37) ~[server-1.20.1-20230612.114412-srg.jar%23269!/:?] {re:mixin,pl:connector_pre_launch:A,re:classloading,pl:connector_pre_launch:A}     at net.minecraft.world.ticks.ContainerSingleItem.m_272108_(ContainerSingleItem.java:28) ~[server-1.20.1-20230612.114412-srg.jar%23269!/:?] {re:mixin,pl:connector_pre_launch:A,re:classloading,pl:connector_pre_launch:A}     at net.minecraft.world.ticks.ContainerSingleItem.m_6211_(ContainerSingleItem.java:20) ~[server-1.20.1-20230612.114412-srg.jar%23269!/:?] {re:mixin,pl:connector_pre_launch:A,re:classloading,pl:connector_pre_launch:A}     at net.minecraft.world.Clearable.m_18908_(Clearable.java:10) ~[server-1.20.1-20230612.114412-srg.jar%23269!/:?] {re:mixin,pl:connector_pre_launch:A,re:classloading,pl:connector_pre_launch:A}     at net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate.m_230328_(StructureTemplate.java:232) ~[server-1.20.1-20230612.114412-srg.jar%23269!/:?] {re:mixin,xf:fml:forge:forge_method_redirector,pl:connector_pre_launch:A,re:classloading,xf:fml:forge:forge_method_redirector,pl:mixin:APP:betterdungeons.mixins.json:DungeonContextMixin from mod betterdungeons,pl:mixin:APP:betterdungeons.mixins.json:StructureTemplateMixin from mod betterdungeons,pl:mixin:APP:cataclysm.mixins.json:StructureTemplateMixin from mod cataclysm,pl:mixin:APP:lithostitched.mixins.json:common.StructureTemplateMixin from mod lithostitched,pl:mixin:APP:dungeonnowloading.forge.mixins.json:structures.StructureTemplateMixin from mod dungeonnowloading,pl:mixin:APP:integrated_api-common.mixins.json:structures.StructureTemplateMixin from mod integrated_api,pl:mixin:APP:integrated_api-common.mixins.json:structures.TemplateAccessor from mod integrated_api,pl:mixin:APP:blueprint.mixins.json:StructureTemplateMixin from mod blueprint,pl:mixin:APP:zeta.mixins.json:StructureTemplateMixin from mod zeta,pl:mixin:A,pl:connector_pre_launch:A}     at net.minecraft.world.level.levelgen.structure.TemplateStructurePiece.m_213694_(TemplateStructurePiece.java:83) ~[server-1.20.1-20230612.114412-srg.jar%23269!/:?] {re:computing_frames,pl:connector_pre_launch:A,re:classloading,pl:connector_pre_launch:A,re:mixin,pl:connector_pre_launch:A}     at net.minecraft.world.level.levelgen.structure.structures.OceanRuinPieces$OceanRuinPiece.m_213694_(OceanRuinPieces.java:309) ~[server-1.20.1-20230612.114412-srg.jar%23269!/:?] {re:classloading,xf:fml:forge:forge_method_redirector,pl:connector_pre_launch:A}     at net.minecraft.world.level.levelgen.structure.StructureStart.m_226850_(StructureStart.java:90) ~[server-1.20.1-20230612.114412-srg.jar%23269!/:?] {re:mixin,pl:connector_pre_launch:A,re:classloading,pl:mixin:APP:blueprint.mixins.json:StructureStartMixin from mod blueprint,pl:mixin:APP:zeta.mixins.json:StructureStartMixin from mod zeta,pl:mixin:A,pl:connector_pre_launch:A}     at net.minecraft.world.level.chunk.ChunkGenerator.m_223080_(ChunkGenerator.java:320) ~[server-1.20.1-20230612.114412-srg.jar%23269!/:?] {re:mixin,pl:accesstransformer:B,pl:connector_pre_launch:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:citadel.mixins.json:ChunkGeneratorMixin from mod citadel,pl:mixin:APP:bettermineshafts.mixins.json:DisableVanillaMineshaftsMixin from mod bettermineshafts,pl:mixin:A,pl:connector_pre_launch:A}     at com.google.common.collect.ImmutableList.forEach(ImmutableList.java:422) ~[guava-31.1-jre.jar%2374!/:?] {re:mixin}     at net.minecraft.world.level.chunk.ChunkGenerator.m_213609_(ChunkGenerator.java:319) ~[server-1.20.1-20230612.114412-srg.jar%23269!/:?] {re:mixin,pl:accesstransformer:B,pl:connector_pre_launch:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:citadel.mixins.json:ChunkGeneratorMixin from mod citadel,pl:mixin:APP:bettermineshafts.mixins.json:DisableVanillaMineshaftsMixin from mod bettermineshafts,pl:mixin:A,pl:connector_pre_launch:A}     at net.minecraft.world.level.chunk.ChunkStatus.m_279978_(ChunkStatus.java:108) ~[server-1.20.1-20230612.114412-srg.jar%23269!/:?] {re:mixin,pl:accesstransformer:B,pl:connector_pre_launch:A,re:classloading,pl:accesstransformer:B,pl:connector_pre_launch:A}     at net.minecraft.world.level.chunk.ChunkStatus$SimpleGenerationTask.m_214024_(ChunkStatus.java:309) ~[server-1.20.1-20230612.114412-srg.jar%23269!/:?] {re:classloading,pl:connector_pre_launch:A}     at net.minecraft.world.level.chunk.ChunkStatus.m_280308_(ChunkStatus.java:252) ~[server-1.20.1-20230612.114412-srg.jar%23269!/:?] {re:mixin,pl:accesstransformer:B,pl:connector_pre_launch:A,re:classloading,pl:accesstransformer:B,pl:connector_pre_launch:A}     at net.minecraft.server.level.ChunkMap.lambda$scheduleChunkGeneration$27(ChunkMap.java:643) ~[server-1.20.1-20230612.114412-srg.jar%23269!/:?] {re:mixin,pl:accesstransformer:B,pl:connector_pre_launch:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:modernfix-common.mixins.json:bugfix.paper_chunk_patches.ChunkMapMixin from mod modernfix,pl:mixin:APP:modernfix-forge.mixins.json:bugfix.chunk_deadlock.ChunkMapLoadMixin from mod modernfix,pl:mixin:APP:fabric-networking-api-v1.mixins.json:accessor.ThreadedAnvilChunkStorageAccessor from mod fabric_networking_api_v1,pl:mixin:APP:fabric-lifecycle-events-v1.mixins.json:ThreadedAnvilChunkStorageMixin from mod fabric_lifecycle_events_v1,pl:mixin:APP:lithium.mixins.json:world.player_chunk_tick.ThreadedAnvilChunkStorageMixin from mod radium,pl:mixin:APP:lithostitched.mixins.json:common.ChunkMapMixin from mod lithostitched,pl:mixin:A,pl:connector_pre_launch:A}     at com.mojang.datafixers.util.Either$Left.map(Either.java:38) ~[datafixerupper-6.0.8.jar%2377!/:?] {}     at net.minecraft.server.level.ChunkMap.lambda$scheduleChunkGeneration$29(ChunkMap.java:634) ~[server-1.20.1-20230612.114412-srg.jar%23269!/:?] {re:mixin,pl:accesstransformer:B,pl:connector_pre_launch:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:modernfix-common.mixins.json:bugfix.paper_chunk_patches.ChunkMapMixin from mod modernfix,pl:mixin:APP:modernfix-forge.mixins.json:bugfix.chunk_deadlock.ChunkMapLoadMixin from mod modernfix,pl:mixin:APP:fabric-networking-api-v1.mixins.json:accessor.ThreadedAnvilChunkStorageAccessor from mod fabric_networking_api_v1,pl:mixin:APP:fabric-lifecycle-events-v1.mixins.json:ThreadedAnvilChunkStorageMixin from mod fabric_lifecycle_events_v1,pl:mixin:APP:lithium.mixins.json:world.player_chunk_tick.ThreadedAnvilChunkStorageMixin from mod radium,pl:mixin:APP:lithostitched.mixins.json:common.ChunkMapMixin from mod lithostitched,pl:mixin:A,pl:connector_pre_launch:A}     at java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1150) ~[?:?] {}     at java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:482) ~[?:?] {}     at net.minecraft.server.level.ChunkTaskPriorityQueueSorter.m_143188_(ChunkTaskPriorityQueueSorter.java:62) ~[server-1.20.1-20230612.114412-srg.jar%23269!/:?] {re:classloading,pl:connector_pre_launch:A}     at net.minecraft.util.thread.ProcessorMailbox.m_18759_(ProcessorMailbox.java:91) ~[server-1.20.1-20230612.114412-srg.jar%23269!/:?] {re:classloading,pl:connector_pre_launch:A}     at net.minecraft.util.thread.ProcessorMailbox.m_18747_(ProcessorMailbox.java:146) ~[server-1.20.1-20230612.114412-srg.jar%23269!/:?] {re:classloading,pl:connector_pre_launch:A}     at net.minecraft.util.thread.ProcessorMailbox.run(ProcessorMailbox.java:102) ~[server-1.20.1-20230612.114412-srg.jar%23269!/:?] {re:classloading,pl:connector_pre_launch:A}     at java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1395) ~[?:?] {}     at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373) ~[?:?] {} -- Feature -- Details:     Description: ResourceKey[minecraft:worldgen/structure / minecraft:ocean_ruin_warm] Stacktrace:     at net.minecraft.world.level.chunk.ChunkGenerator.m_213609_(ChunkGenerator.java:319) ~[server-1.20.1-20230612.114412-srg.jar%23269!/:?] {re:mixin,pl:accesstransformer:B,pl:connector_pre_launch:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:citadel.mixins.json:ChunkGeneratorMixin from mod citadel,pl:mixin:APP:bettermineshafts.mixins.json:DisableVanillaMineshaftsMixin from mod bettermineshafts,pl:mixin:A,pl:connector_pre_launch:A}     at net.minecraft.world.level.chunk.ChunkStatus.m_279978_(ChunkStatus.java:108) ~[server-1.20.1-20230612.114412-srg.jar%23269!/:?] {re:mixin,pl:accesstransformer:B,pl:connector_pre_launch:A,re:classloading,pl:accesstransformer:B,pl:connector_pre_launch:A}     at net.minecraft.world.level.chunk.ChunkStatus$SimpleGenerationTask.m_214024_(ChunkStatus.java:309) ~[server-1.20.1-20230612.114412-srg.jar%23269!/:?] {re:classloading,pl:connector_pre_launch:A}     at net.minecraft.world.level.chunk.ChunkStatus.m_280308_(ChunkStatus.java:252) ~[server-1.20.1-20230612.114412-srg.jar%23269!/:?] {re:mixin,pl:accesstransformer:B,pl:connector_pre_launch:A,re:classloading,pl:accesstransformer:B,pl:connector_pre_launch:A}     at net.minecraft.server.level.ChunkMap.lambda$scheduleChunkGeneration$27(ChunkMap.java:643) ~[server-1.20.1-20230612.114412-srg.jar%23269!/:?] {re:mixin,pl:accesstransformer:B,pl:connector_pre_launch:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:modernfix-common.mixins.json:bugfix.paper_chunk_patches.ChunkMapMixin from mod modernfix,pl:mixin:APP:modernfix-forge.mixins.json:bugfix.chunk_deadlock.ChunkMapLoadMixin from mod modernfix,pl:mixin:APP:fabric-networking-api-v1.mixins.json:accessor.ThreadedAnvilChunkStorageAccessor from mod fabric_networking_api_v1,pl:mixin:APP:fabric-lifecycle-events-v1.mixins.json:ThreadedAnvilChunkStorageMixin from mod fabric_lifecycle_events_v1,pl:mixin:APP:lithium.mixins.json:world.player_chunk_tick.ThreadedAnvilChunkStorageMixin from mod radium,pl:mixin:APP:lithostitched.mixins.json:common.ChunkMapMixin from mod lithostitched,pl:mixin:A,pl:connector_pre_launch:A}     at com.mojang.datafixers.util.Either$Left.map(Either.java:38) ~[datafixerupper-6.0.8.jar%2377!/:?] {}     at net.minecraft.server.level.ChunkMap.lambda$scheduleChunkGeneration$29(ChunkMap.java:634) ~[server-1.20.1-20230612.114412-srg.jar%23269!/:?] {re:mixin,pl:accesstransformer:B,pl:connector_pre_launch:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:modernfix-common.mixins.json:bugfix.paper_chunk_patches.ChunkMapMixin from mod modernfix,pl:mixin:APP:modernfix-forge.mixins.json:bugfix.chunk_deadlock.ChunkMapLoadMixin from mod modernfix,pl:mixin:APP:fabric-networking-api-v1.mixins.json:accessor.ThreadedAnvilChunkStorageAccessor from mod fabric_networking_api_v1,pl:mixin:APP:fabric-lifecycle-events-v1.mixins.json:ThreadedAnvilChunkStorageMixin from mod fabric_lifecycle_events_v1,pl:mixin:APP:lithium.mixins.json:world.player_chunk_tick.ThreadedAnvilChunkStorageMixin from mod radium,pl:mixin:APP:lithostitched.mixins.json:common.ChunkMapMixin from mod lithostitched,pl:mixin:A,pl:connector_pre_launch:A}     at java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1150) ~[?:?] {}     at java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:482) ~[?:?] {}     at net.minecraft.server.level.ChunkTaskPriorityQueueSorter.m_143188_(ChunkTaskPriorityQueueSorter.java:62) ~[server-1.20.1-20230612.114412-srg.jar%23269!/:?] {re:classloading,pl:connector_pre_launch:A}     at net.minecraft.util.thread.ProcessorMailbox.m_18759_(ProcessorMailbox.java:91) ~[server-1.20.1-20230612.114412-srg.jar%23269!/:?] {re:classloading,pl:connector_pre_launch:A}     at net.minecraft.util.thread.ProcessorMailbox.m_18747_(ProcessorMailbox.java:146) ~[server-1.20.1-20230612.114412-srg.jar%23269!/:?] {re:classloading,pl:connector_pre_launch:A}     at net.minecraft.util.thread.ProcessorMailbox.run(ProcessorMailbox.java:102) ~[server-1.20.1-20230612.114412-srg.jar%23269!/:?] {re:classloading,pl:connector_pre_launch:A}     at java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1395) ~[?:?] {}     at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373) ~[?:?] {}     at java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182) ~[?:?] {}     at java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655) ~[?:?] {re:mixin,re:computing_frames}     at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622) ~[?:?] {re:mixin,re:computing_frames}     at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165) ~[?:?] {re:mixin} -- Generation -- Details:     CenterX: -473     CenterZ: 285     Seed: 1176945434636047048 Stacktrace:     at net.minecraft.world.level.chunk.ChunkGenerator.m_213609_(ChunkGenerator.java:319) ~[server-1.20.1-20230612.114412-srg.jar%23269!/:?] {re:mixin,pl:accesstransformer:B,pl:connector_pre_launch:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:citadel.mixins.json:ChunkGeneratorMixin from mod citadel,pl:mixin:APP:bettermineshafts.mixins.json:DisableVanillaMineshaftsMixin from mod bettermineshafts,pl:mixin:A,pl:connector_pre_launch:A}     at net.minecraft.world.level.chunk.ChunkStatus.m_279978_(ChunkStatus.java:108) ~[server-1.20.1-20230612.114412-srg.jar%23269!/:?] {re:mixin,pl:accesstransformer:B,pl:connector_pre_launch:A,re:classloading,pl:accesstransformer:B,pl:connector_pre_launch:A}     at net.minecraft.world.level.chunk.ChunkStatus$SimpleGenerationTask.m_214024_(ChunkStatus.java:309) ~[server-1.20.1-20230612.114412-srg.jar%23269!/:?] {re:classloading,pl:connector_pre_launch:A}     at net.minecraft.world.level.chunk.ChunkStatus.m_280308_(ChunkStatus.java:252) ~[server-1.20.1-20230612.114412-srg.jar%23269!/:?] {re:mixin,pl:accesstransformer:B,pl:connector_pre_launch:A,re:classloading,pl:accesstransformer:B,pl:connector_pre_launch:A}     at net.minecraft.server.level.ChunkMap.lambda$scheduleChunkGeneration$27(ChunkMap.java:643) ~[server-1.20.1-20230612.114412-srg.jar%23269!/:?] {re:mixin,pl:accesstransformer:B,pl:connector_pre_launch:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:modernfix-common.mixins.json:bugfix.paper_chunk_patches.ChunkMapMixin from mod modernfix,pl:mixin:APP:modernfix-forge.mixins.json:bugfix.chunk_deadlock.ChunkMapLoadMixin from mod modernfix,pl:mixin:APP:fabric-networking-api-v1.mixins.json:accessor.ThreadedAnvilChunkStorageAccessor from mod fabric_networking_api_v1,pl:mixin:APP:fabric-lifecycle-events-v1.mixins.json:ThreadedAnvilChunkStorageMixin from mod fabric_lifecycle_events_v1,pl:mixin:APP:lithium.mixins.json:world.player_chunk_tick.ThreadedAnvilChunkStorageMixin from mod radium,pl:mixin:APP:lithostitched.mixins.json:common.ChunkMapMixin from mod lithostitched,pl:mixin:A,pl:connector_pre_launch:A}     at com.mojang.datafixers.util.Either$Left.map(Either.java:38) ~[datafixerupper-6.0.8.jar%2377!/:?] {}     at net.minecraft.server.level.ChunkMap.lambda$scheduleChunkGeneration$29(ChunkMap.java:634) ~[server-1.20.1-20230612.114412-srg.jar%23269!/:?] {re:mixin,pl:accesstransformer:B,pl:connector_pre_launch:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:modernfix-common.mixins.json:bugfix.paper_chunk_patches.ChunkMapMixin from mod modernfix,pl:mixin:APP:modernfix-forge.mixins.json:bugfix.chunk_deadlock.ChunkMapLoadMixin from mod modernfix,pl:mixin:APP:fabric-networking-api-v1.mixins.json:accessor.ThreadedAnvilChunkStorageAccessor from mod fabric_networking_api_v1,pl:mixin:APP:fabric-lifecycle-events-v1.mixins.json:ThreadedAnvilChunkStorageMixin from mod fabric_lifecycle_events_v1,pl:mixin:APP:lithium.mixins.json:world.player_chunk_tick.ThreadedAnvilChunkStorageMixin from mod radium,pl:mixin:APP:lithostitched.mixins.json:common.ChunkMapMixin from mod lithostitched,pl:mixin:A,pl:connector_pre_launch:A}     at java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1150) ~[?:?] {}     at java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:482) ~[?:?] {}     at net.minecraft.server.level.ChunkTaskPriorityQueueSorter.m_143188_(ChunkTaskPriorityQueueSorter.java:62) ~[server-1.20.1-20230612.114412-srg.jar%23269!/:?] {re:classloading,pl:connector_pre_launch:A}     at net.minecraft.util.thread.ProcessorMailbox.m_18759_(ProcessorMailbox.java:91) ~[server-1.20.1-20230612.114412-srg.jar%23269!/:?] {re:classloading,pl:connector_pre_launch:A}     at net.minecraft.util.thread.ProcessorMailbox.m_18747_(ProcessorMailbox.java:146) ~[server-1.20.1-20230612.114412-srg.jar%23269!/:?] {re:classloading,pl:connector_pre_launch:A}     at net.minecraft.util.thread.ProcessorMailbox.run(ProcessorMailbox.java:102) ~[server-1.20.1-20230612.114412-srg.jar%23269!/:?] {re:classloading,pl:connector_pre_launch:A}     at java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1395) ~[?:?] {}     at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373) ~[?:?] {}     at java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182) ~[?:?] {}     at java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655) ~[?:?] {re:mixin,re:computing_frames}     at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622) ~[?:?] {re:mixin,re:computing_frames}     at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165) ~[?:?] {re:mixin} -- Chunk to be generated -- Details:     Location: -473,285     Position hash: 1228360646183     Generator: net.minecraft.world.level.levelgen.NoiseBasedChunkGenerator@68ab688d Stacktrace:     at net.minecraft.server.level.ChunkMap.lambda$scheduleChunkGeneration$27(ChunkMap.java:643) ~[server-1.20.1-20230612.114412-srg.jar%23269!/:?] {re:mixin,pl:accesstransformer:B,pl:connector_pre_launch:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:modernfix-common.mixins.json:bugfix.paper_chunk_patches.ChunkMapMixin from mod modernfix,pl:mixin:APP:modernfix-forge.mixins.json:bugfix.chunk_deadlock.ChunkMapLoadMixin from mod modernfix,pl:mixin:APP:fabric-networking-api-v1.mixins.json:accessor.ThreadedAnvilChunkStorageAccessor from mod fabric_networking_api_v1,pl:mixin:APP:fabric-lifecycle-events-v1.mixins.json:ThreadedAnvilChunkStorageMixin from mod fabric_lifecycle_events_v1,pl:mixin:APP:lithium.mixins.json:world.player_chunk_tick.ThreadedAnvilChunkStorageMixin from mod radium,pl:mixin:APP:lithostitched.mixins.json:common.ChunkMapMixin from mod lithostitched,pl:mixin:A,pl:connector_pre_launch:A}     at com.mojang.datafixers.util.Either$Left.map(Either.java:38) ~[datafixerupper-6.0.8.jar%2377!/:?] {}     at net.minecraft.server.level.ChunkMap.lambda$scheduleChunkGeneration$29(ChunkMap.java:634) ~[server-1.20.1-20230612.114412-srg.jar%23269!/:?] {re:mixin,pl:accesstransformer:B,pl:connector_pre_launch:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:modernfix-common.mixins.json:bugfix.paper_chunk_patches.ChunkMapMixin from mod modernfix,pl:mixin:APP:modernfix-forge.mixins.json:bugfix.chunk_deadlock.ChunkMapLoadMixin from mod modernfix,pl:mixin:APP:fabric-networking-api-v1.mixins.json:accessor.ThreadedAnvilChunkStorageAccessor from mod fabric_networking_api_v1,pl:mixin:APP:fabric-lifecycle-events-v1.mixins.json:ThreadedAnvilChunkStorageMixin from mod fabric_lifecycle_events_v1,pl:mixin:APP:lithium.mixins.json:world.player_chunk_tick.ThreadedAnvilChunkStorageMixin from mod radium,pl:mixin:APP:lithostitched.mixins.json:common.ChunkMapMixin from mod lithostitched,pl:mixin:A,pl:connector_pre_launch:A}     at java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1150) ~[?:?] {}     at java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:482) ~[?:?] {}     at net.minecraft.server.level.ChunkTaskPriorityQueueSorter.m_143188_(ChunkTaskPriorityQueueSorter.java:62) ~[server-1.20.1-20230612.114412-srg.jar%23269!/:?] {re:classloading,pl:connector_pre_launch:A}     at net.minecraft.util.thread.ProcessorMailbox.m_18759_(ProcessorMailbox.java:91) ~[server-1.20.1-20230612.114412-srg.jar%23269!/:?] {re:classloading,pl:connector_pre_launch:A}     at net.minecraft.util.thread.ProcessorMailbox.m_18747_(ProcessorMailbox.java:146) ~[server-1.20.1-20230612.114412-srg.jar%23269!/:?] {re:classloading,pl:connector_pre_launch:A}     at net.minecraft.util.thread.ProcessorMailbox.run(ProcessorMailbox.java:102) ~[server-1.20.1-20230612.114412-srg.jar%23269!/:?] {re:classloading,pl:connector_pre_launch:A}     at java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1395) ~[?:?] {}     at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373) ~[?:?] {}     at java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182) ~[?:?] {}     at java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655) ~[?:?] {re:mixin,re:computing_frames}     at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622) ~[?:?] {re:mixin,re:computing_frames}     at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165) ~[?:?] {re:mixin} -- Wrapped in -- Details:     Wrapping exception: ~~ERROR~~ CompletionException: net.minecraft.ReportedException: Feature placement Stacktrace:     at net.minecraft.server.MinecraftServer.m_206568_(MinecraftServer.java:718) ~[server-1.20.1-20230612.114412-srg.jar%23269!/:?] {re:mixin,pl:accesstransformer:B,pl:connector_pre_launch:A,re:computing_frames,pl:accesstransformer:B,pl:connector_pre_launch:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:modernfix-common.mixins.json:perf.fix_loop_spin_waiting.MinecraftServerMixin from mod modernfix,pl:mixin:APP:modernfix-common.mixins.json:core.MinecraftServerMixin from mod modernfix,pl:mixin:APP:modernfix-common.mixins.json:perf.dedicated_reload_executor.MinecraftServerMixin from mod modernfix,pl:mixin:APP:modernfix-forge.mixins.json:core.MinecraftServerMixin from mod modernfix,pl:mixin:APP:citadel.mixins.json:MinecraftServerMixin from mod citadel,pl:mixin:APP:connectormod.mixins.json:registries.MinecraftServerMixin from mod connectormod,pl:mixin:APP:fabric-lifecycle-events-v1.mixins.json:MinecraftServerMixin from mod fabric_lifecycle_events_v1,pl:mixin:APP:fabric-resource-loader-v0.mixins.json:MinecraftServerMixin from mod fabric_resource_loader_v0,pl:mixin:APP:blueprint.mixins.json:MinecraftServerMixin from mod blueprint,pl:mixin:APP:fabric-message-api-v1.mixins.json:MinecraftServerMixin from mod fabric_message_api_v1,pl:mixin:A,pl:connector_pre_launch:A}     at net.minecraft.server.MinecraftServer.m_130011_(MinecraftServer.java:675) ~[server-1.20.1-20230612.114412-srg.jar%23269!/:?] {re:mixin,pl:accesstransformer:B,pl:connector_pre_launch:A,re:computing_frames,pl:accesstransformer:B,pl:connector_pre_launch:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:modernfix-common.mixins.json:perf.fix_loop_spin_waiting.MinecraftServerMixin from mod modernfix,pl:mixin:APP:modernfix-common.mixins.json:core.MinecraftServerMixin from mod modernfix,pl:mixin:APP:modernfix-common.mixins.json:perf.dedicated_reload_executor.MinecraftServerMixin from mod modernfix,pl:mixin:APP:modernfix-forge.mixins.json:core.MinecraftServerMixin from mod modernfix,pl:mixin:APP:citadel.mixins.json:MinecraftServerMixin from mod citadel,pl:mixin:APP:connectormod.mixins.json:registries.MinecraftServerMixin from mod connectormod,pl:mixin:APP:fabric-lifecycle-events-v1.mixins.json:MinecraftServerMixin from mod fabric_lifecycle_events_v1,pl:mixin:APP:fabric-resource-loader-v0.mixins.json:MinecraftServerMixin from mod fabric_resource_loader_v0,pl:mixin:APP:blueprint.mixins.json:MinecraftServerMixin from mod blueprint,pl:mixin:APP:fabric-message-api-v1.mixins.json:MinecraftServerMixin from mod fabric_message_api_v1,pl:mixin:A,pl:connector_pre_launch:A}     at net.minecraft.server.MinecraftServer.m_206580_(MinecraftServer.java:251) ~[server-1.20.1-20230612.114412-srg.jar%23269!/:?] {re:mixin,pl:accesstransformer:B,pl:connector_pre_launch:A,re:computing_frames,pl:accesstransformer:B,pl:connector_pre_launch:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:modernfix-common.mixins.json:perf.fix_loop_spin_waiting.MinecraftServerMixin from mod modernfix,pl:mixin:APP:modernfix-common.mixins.json:core.MinecraftServerMixin from mod modernfix,pl:mixin:APP:modernfix-common.mixins.json:perf.dedicated_reload_executor.MinecraftServerMixin from mod modernfix,pl:mixin:APP:modernfix-forge.mixins.json:core.MinecraftServerMixin from mod modernfix,pl:mixin:APP:citadel.mixins.json:MinecraftServerMixin from mod citadel,pl:mixin:APP:connectormod.mixins.json:registries.MinecraftServerMixin from mod connectormod,pl:mixin:APP:fabric-lifecycle-events-v1.mixins.json:MinecraftServerMixin from mod fabric_lifecycle_events_v1,pl:mixin:APP:fabric-resource-loader-v0.mixins.json:MinecraftServerMixin from mod fabric_resource_loader_v0,pl:mixin:APP:blueprint.mixins.json:MinecraftServerMixin from mod blueprint,pl:mixin:APP:fabric-message-api-v1.mixins.json:MinecraftServerMixin from mod fabric_message_api_v1,pl:mixin:A,pl:connector_pre_launch:A}     at java.lang.Thread.run(Thread.java:833) ~[?:?] {re:mixin} -- System Details -- Details:     Minecraft Version: 1.20.1     Minecraft Version ID: 1.20.1     Operating System: Windows 10 (amd64) version 10.0     Java Version: 17.0.7, Oracle Corporation     Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode, sharing), Oracle Corporation     Memory: 475988768 bytes (453 MiB) / 2516582400 bytes (2400 MiB) up to 34359738368 bytes (32768 MiB)     CPUs: 32     Processor Vendor: AuthenticAMD     Processor Name: AMD Ryzen 9 9950X 16-Core Processor                 Identifier: AuthenticAMD Family 26 Model 68 Stepping 0     Microarchitecture: unknown     Frequency (GHz): 4.29     Number of physical packages: 1     Number of physical CPUs: 16     Number of logical CPUs: 32     Graphics card #0 name: NVIDIA GeForce RTX 5070 Ti     Graphics card #0 vendor: NVIDIA (0x10de)     Graphics card #0 VRAM (MB): 4095.00     Graphics card #0 deviceId: 0x2c05     Graphics card #0 versionInfo: DriverVersion=32.0.15.8097     Memory slot #0 capacity (MB): 49152.00     Memory slot #0 clockSpeed (GHz): 6.40     Memory slot #0 type: Unknown     Memory slot #1 capacity (MB): 49152.00     Memory slot #1 clockSpeed (GHz): 6.40     Memory slot #1 type: Unknown     Virtual memory max (MB): 104051.97     Virtual memory used (MB): 20980.76     Swap memory total (MB): 6144.00     Swap memory used (MB): 36.83     JVM Flags: 1 total; -Xmx32G     Server Running: true     Player Count: 0 / 20; []     Data Packs: vanilla, mod:betterdungeons, mod:fabric_renderer_api_v1, mod:netherexp, mod:playeranimator (incompatible), mod:fabric_item_api_v1, mod:illagerinvasion, mod:fabric_rendering_fluids_v1, mod:exlinecopperequipment, mod:fabric_models_v0, mod:sophisticatedcore (incompatible), mod:golemsarefriends (incompatible), mod:fabric_convention_tags_v1, mod:placebo (incompatible), mod:citadel (incompatible), mod:alexsmobs (incompatible), mod:fabric_command_api_v1, mod:fabric_block_view_api_v2, mod:fabric_command_api_v2, mod:yungsapi, mod:fabric_data_attachment_api_v1, mod:mixinextras (incompatible), mod:bookshelf, mod:sophisticatedbackpacks (incompatible), mod:guardvillagers (incompatible), mod:fabric_screen_api_v1, mod:cloth_config (incompatible), mod:fabric_api, mod:fabric_content_registries_v0, mod:geophilic, mod:jadensnetherexpansiondelight, mod:farmersdelight, mod:fabric_game_rule_api_v1, mod:fabric_api_lookup_api_v1, mod:endersdelight, mod:cataclysmiccombat, mod:lionfishapi (incompatible), mod:cataclysm (incompatible), mod:curios (incompatible), mod:connectormod, mod:fabric_entity_events_v1, mod:spartanweaponry, mod:architectury (incompatible), mod:fabric_loot_api_v2, mod:betterendisland, mod:fabric_rendering_data_attachment_v1, mod:fabric_networking_api_v1, mod:illageandspillage, mod:bettermineshafts, mod:fabric_lifecycle_events_v1, mod:fabric_key_binding_api_v1, mod:fabric_client_tags_api_v1, mod:fabric_transfer_api_v1, mod:fabric_dimensions_v1, mod:mowziesmobs, mod:geckolib, mod:endertrigon (incompatible), mod:elysium_api, mod:fabric_model_loading_api_v1, mod:mowzies_cataclysm, mod:jei, mod:lithostitched, mod:graveyard (incompatible), mod:fabric_screen_handler_api_v1, mod:fabric_resource_loader_v0, mod:caelus (incompatible), mod:obscure_api (incompatible), mod:fabric_rendering_v1, mod:fabric_renderer_indigo, mod:fastsuite (incompatible), mod:dungeonnowloading (incompatible), mod:integrated_api, mod:fabric_mining_level_api_v1, mod:fromtheshadows (incompatible), mod:crackerslib (incompatible), mod:outer_end, mod:magistuarmory (incompatible), mod:starlight (incompatible), mod:aquamirae_mod_extra_music, mod:blueprint, mod:savage_and_ravage (incompatible), mod:fabric_particles_v1, mod:puzzlesaccessapi, mod:forge, mod:fabric_transitive_access_wideners_v1, mod:nyfsspiders (incompatible), mod:tectonic (incompatible), mod:caverns_and_chasms (incompatible), mod:upgrade_aquatic (incompatible), mod:illagerwarship, mod:okzoomer (incompatible), mod:enchdesc (incompatible), mod:moonlight (incompatible), mod:fabric_api_base, mod:bettercombat (incompatible), mod:combatroll (incompatible), mod:glowingraidillagers (incompatible), mod:fabric_blockrenderlayer_v1, mod:mixinsquared (incompatible), mod:fabric_block_api_v1, mod:nethersdelight, mod:fabric_resource_conditions_api_v1, mod:spartanshields, mod:fabric_item_group_api_v1, mod:fastbench (incompatible), mod:aquacombat, mod:zeta (incompatible), mod:quark (incompatible), mod:supplementaries, mod:amendments (incompatible), mod:irons_spellbooks, mod:fabric_biome_api_v1, mod:fabric_registry_sync_v0, mod:fastfurnace (incompatible), mod:oceansdelight (incompatible), mod:alexsdelight, mod:fabric_recipe_api_v1, mod:ferritecore (incompatible), mod:fabric_object_builder_api_v1, mod:puzzleslib, mod:fabric_sound_api_v1, mod:ias_spellbooks, mod:fabric_message_api_v1, mod:fabric_data_generation_api_v1, mod:fabric_events_interaction_v0, mod:aquamirae (incompatible), tectonic/tectonic (incompatible), tectonic/tectonic/overlay.mod, alexsmobs_compat, caverns_and_chasms_compat, fabric, lithostitched/breaks_seed_parity, Supplementaries Generated Pack, mod:cupboard (incompatible), mod:modernfix (incompatible), mod:chunky (incompatible), mod:radium     Enabled Feature Flags: minecraft:vanilla     World Generation: Experimental     Is Modded: Definitely; Server brand changed to 'forge'     Type: Dedicated Server (map_server.txt)     Sinytra Connector: 1.0.0-beta.46+1.20.1         SINYTRA CONNECTOR IS PRESENT!         Please verify issues are not caused by Connector before reporting them to mod authors. If you're unsure, file a report on Connector's issue tracker.         Connector's issue tracker can be found at https://github.com/Sinytra/Connector/issues.     ModLauncher: 10.0.9+10.0.9+main.dcd20f30     ModLauncher launch target: forgeserver     ModLauncher naming: srg     ModLauncher services:          mixin-0.8.5.jar mixin PLUGINSERVICE          eventbus-6.0.5.jar eventbus PLUGINSERVICE          fmlloader-1.20.1-47.4.0.jar slf4jfixer PLUGINSERVICE          fmlloader-1.20.1-47.4.0.jar object_holder_definalize PLUGINSERVICE          fmlloader-1.20.1-47.4.0.jar runtime_enum_extender PLUGINSERVICE          fmlloader-1.20.1-47.4.0.jar capability_token_subclass PLUGINSERVICE          accesstransformers-8.0.4.jar accesstransformer PLUGINSERVICE          fmlloader-1.20.1-47.4.0.jar runtimedistcleaner PLUGINSERVICE          modlauncher-10.0.9.jar mixin TRANSFORMATIONSERVICE          modlauncher-10.0.9.jar fml TRANSFORMATIONSERVICE          modlauncher-10.0.9.jar mixin-transmogrifier TRANSFORMATIONSERVICE          modlauncher-10.0.9.jar connector_loader TRANSFORMATIONSERVICE      FML Language Providers:          [email protected]         lowcodefml@null         javafml@null     Mod List:          YungsBetterDungeons-1.20-Forge-4.0.4.jar          |YUNG's Better Dungeons        |betterdungeons                |1.20-Forge-4.0.4    |DONE      |Manifest: NOSIGNATURE         fabric-renderer-api-v1-3.2.1+cf68abbe77.jar       |Fabric Renderer API (v1)      |fabric_renderer_api_v1        |3.2.1+cf68abbe77    |DONE      |Manifest: NOSIGNATURE         Jadens-Nether-Expansion-2.3.5.jar                 |Jaden's Nether Expansion      |netherexp                     |2.3.5               |DONE      |Manifest: NOSIGNATURE         player-animation-lib-forge-1.0.2-rc1+1.20.jar     |Player Animator               |playeranimator                |1.0.2-rc1+1.20      |DONE      |Manifest: NOSIGNATURE         fabric-item-api-v1-2.1.28+4d0bbcfa77.jar          |Fabric Item API (v1)          |fabric_item_api_v1            |2.1.28+4d0bbcfa77   |DONE      |Manifest: NOSIGNATURE         IllagerInvasion-v8.0.7-1.20.1-Forge.jar           |Illager Invasion              |illagerinvasion               |8.0.7               |DONE      |Manifest: 9a:09:85:98:65:c4:8c:11:c5:49:f6:d6:33:23:39:df:8d:b4:ff:92:84:b8:bd:a5:83:9f:ac:7f:2a:d1:4b:6a         fabric-rendering-fluids-v1-3.0.28+4ac5e37a77.jar  |Fabric Rendering Fluids (v1)  |fabric_rendering_fluids_v1    |3.0.28+4ac5e37a77   |DONE      |Manifest: NOSIGNATURE         exlinecopperequipment-forge-1.20.1-v2.0.8.jar     |Exline's Copper Equipment     |exlinecopperequipment         |2.0.8               |DONE      |Manifest: NOSIGNATURE         fabric-models-v0-0.4.2+7c3892a477.jar             |Fabric Models (v0)            |fabric_models_v0              |0.4.2+7c3892a477    |DONE      |Manifest: NOSIGNATURE         sophisticatedcore-1.20.1-1.2.79.1066.jar          |Sophisticated Core            |sophisticatedcore             |1.2.79.1066         |DONE      |Manifest: NOSIGNATURE         golemsarefriends-1.20.0-1.0.1.jar                 |Golems Are Friends Not Fodder |golemsarefriends              |1.20.0-1.0.1        |DONE      |Manifest: NOSIGNATURE         fabric-convention-tags-v1-1.5.5+fa3d1c0177.jar    |Fabric Convention Tags        |fabric_convention_tags_v1     |1.5.5+fa3d1c0177    |DONE      |Manifest: NOSIGNATURE         Placebo-1.20.1-8.6.3.jar                          |Placebo                       |placebo                       |8.6.3               |DONE      |Manifest: NOSIGNATURE         modernfix-forge-5.24.4+mc1.20.1.jar               |ModernFix                     |modernfix                     |5.24.4+mc1.20.1     |DONE      |Manifest: NOSIGNATURE         citadel-2.6.2-1.20.1.jar                          |Citadel                       |citadel                       |2.6.2               |DONE      |Manifest: NOSIGNATURE         alexsmobs-1.22.9.jar                              |Alex's Mobs                   |alexsmobs                     |1.22.9              |DONE      |Manifest: NOSIGNATURE         fabric-command-api-v1-1.2.34+f71b366f77.jar       |Fabric Command API (v1)       |fabric_command_api_v1         |1.2.34+f71b366f77   |DONE      |Manifest: NOSIGNATURE         fabric-block-view-api-v2-1.0.1+0767707077.jar     |Fabric BlockView API (v2)     |fabric_block_view_api_v2      |1.0.1+0767707077    |DONE      |Manifest: NOSIGNATURE         fabric-command-api-v2-2.2.13+561530ec77.jar       |Fabric Command API (v2)       |fabric_command_api_v2         |2.2.13+561530ec77   |DONE      |Manifest: NOSIGNATURE         YungsApi-1.20-Forge-4.0.6.jar                     |YUNG's API                    |yungsapi                      |1.20-Forge-4.0.6    |DONE      |Manifest: NOSIGNATURE         fabric-data-attachment-api-v1-1.0.0+30ef839e77.jar|Fabric Data Attachment API (v1|fabric_data_attachment_api_v1 |1.0.0+30ef839e77    |DONE      |Manifest: NOSIGNATURE         mixinextras-forge-0.2.0-beta.7.jar                |MixinExtras                   |mixinextras                   |0.2.0-beta.7        |DONE      |Manifest: NOSIGNATURE         Bookshelf-Forge-1.20.1-20.2.13.jar                |Bookshelf                     |bookshelf                     |20.2.13             |DONE      |Manifest: eb:c4:b1:67:8b:f9:0c:db:dc:4f:01:b1:8e:61:64:39:4c:10:85:0b:a6:c4:c7:48:f0:fa:95:f2:cb:08:3a:e5         sophisticatedbackpacks-1.20.1-3.23.23.1289.jar    |Sophisticated Backpacks       |sophisticatedbackpacks        |3.23.23.1289        |DONE      |Manifest: NOSIGNATURE         guardvillagers-1.20.1-1.6.11.jar                  |Guard Villagers               |guardvillagers                |1.20.1-1.6.11       |DONE      |Manifest: NOSIGNATURE         fabric-screen-api-v1-2.0.8+45a670a577.jar         |Fabric Screen API (v1)        |fabric_screen_api_v1          |2.0.8+45a670a577    |DONE      |Manifest: NOSIGNATURE         cloth-config-11.1.136-forge.jar                   |Cloth Config v10 API          |cloth_config                  |11.1.136            |DONE      |Manifest: NOSIGNATURE         fabric-api-0.92.2+1.11.12+1.20.1.jar              |Forgified Fabric API          |fabric_api                    |0.92.2+1.11.12+1.20.|DONE      |Manifest: NOSIGNATURE         fabric-content-registries-v0-4.0.11+a670df1e77.jar|Fabric Content Registries (v0)|fabric_content_registries_v0  |4.0.11+a670df1e77   |DONE      |Manifest: NOSIGNATURE         Geophilic v3.4.2 f15-80.mod.jar                   |Geophilic                     |geophilic                     |3.4.2               |DONE      |Manifest: NOSIGNATURE         jadensnetherexpansiondelight-1.0.3-1.20.1-forge.ja|Jaden's Nether Expansion Delig|jadensnetherexpansiondelight  |1.0.3-1.20.1-forge  |DONE      |Manifest: NOSIGNATURE         FarmersDelight-1.20.1-1.2.8.jar                   |Farmer's Delight              |farmersdelight                |1.20.1-1.2.8        |DONE      |Manifest: NOSIGNATURE         fabric-game-rule-api-v1-1.0.40+683d4da877.jar     |Fabric Game Rule API (v1)     |fabric_game_rule_api_v1       |1.0.40+683d4da877   |DONE      |Manifest: NOSIGNATURE         fabric-api-lookup-api-v1-1.6.36+67f9824077.jar    |Fabric API Lookup API (v1)    |fabric_api_lookup_api_v1      |1.6.36+67f9824077   |DONE      |Manifest: NOSIGNATURE         endersdelight-forge-1.20.1-1.1.3.jar              |Ender's Delight               |endersdelight                 |1.1.3               |DONE      |Manifest: NOSIGNATURE         cataclysmiccombat-1.4.1-1.20.1.jar                |Cataclysmic Combat            |cataclysmiccombat             |1.4                 |DONE      |Manifest: NOSIGNATURE         Chunky-1.3.146.jar                                |Chunky                        |chunky                        |1.3.146             |DONE      |Manifest: NOSIGNATURE         lionfishapi-2.4.jar                               |LionfishAPI                   |lionfishapi                   |2.4                 |DONE      |Manifest: NOSIGNATURE         L_Enders_Cataclysm-3.15.jar                       |cataclysm                     |cataclysm                     |3.15                |DONE      |Manifest: NOSIGNATURE         curios-forge-5.14.1+1.20.1.jar                    |Curios API                    |curios                        |5.14.1+1.20.1       |DONE      |Manifest: NOSIGNATURE         Connector-1.0.0-beta.46+1.20.1-mod.jar            |Connector                     |connectormod                  |1.0.0-beta.46+1.20.1|DONE      |Manifest: NOSIGNATURE         fabric-entity-events-v1-1.6.0+4ca7515277.jar      |Fabric Entity Events (v1)     |fabric_entity_events_v1       |1.6.0+4ca7515277    |DONE      |Manifest: NOSIGNATURE         SpartanWeaponry-1.20.1-forge-3.2.1-all.jar        |Spartan Weaponry              |spartanweaponry               |3.2.1               |DONE      |Manifest: NOSIGNATURE         architectury-9.2.14-forge.jar                     |Architectury                  |architectury                  |9.2.14              |DONE      |Manifest: NOSIGNATURE         fabric-loot-api-v2-1.2.1+eb28f93e77.jar           |Fabric Loot API (v2)          |fabric_loot_api_v2            |1.2.1+eb28f93e77    |DONE      |Manifest: NOSIGNATURE         cupboard-1.20.1-2.7.jar                           |Cupboard utilities            |cupboard                      |1.20.1-2.7          |DONE      |Manifest: NOSIGNATURE         YungsBetterEndIsland-1.20-Forge-2.0.6.jar         |YUNG's Better End Island      |betterendisland               |1.20-Forge-2.0.6    |DONE      |Manifest: NOSIGNATURE         fabric-rendering-data-attachment-v1-0.3.37+a6081af|Fabric Rendering Data Attachme|fabric_rendering_data_attachme|0.3.37+a6081afc77   |DONE      |Manifest: NOSIGNATURE         fabric-networking-api-v1-1.3.11+503a202477.jar    |Fabric Networking API (v1)    |fabric_networking_api_v1      |1.3.11+503a202477   |DONE      |Manifest: NOSIGNATURE         illageandspillagerespillaged-1.2.8.jar            |Illage and Spillage: Respillag|illageandspillage             |1.2.8               |DONE      |Manifest: NOSIGNATURE         YungsBetterMineshafts-1.20-Forge-4.0.4.jar        |YUNG's Better Mineshafts      |bettermineshafts              |1.20-Forge-4.0.4    |DONE      |Manifest: NOSIGNATURE         fabric-lifecycle-events-v1-2.2.22+afab492177.jar  |Fabric Lifecycle Events (v1)  |fabric_lifecycle_events_v1    |2.2.22+afab492177   |DONE      |Manifest: NOSIGNATURE         fabric-key-binding-api-v1-1.0.37+561530ec77.jar   |Fabric Key Binding API (v1)   |fabric_key_binding_api_v1     |1.0.37+561530ec77   |DONE      |Manifest: NOSIGNATURE         fabric-client-tags-api-v1-1.1.2+5d6761b877.jar    |Fabric Client Tags            |fabric_client_tags_api_v1     |1.1.2+5d6761b877    |DONE      |Manifest: NOSIGNATURE         fabric-transfer-api-v1-3.3.5+631c9cd677.jar       |Fabric Transfer API (v1)      |fabric_transfer_api_v1        |3.3.5+631c9cd677    |DONE      |Manifest: NOSIGNATURE         fabric-dimensions-v1-2.1.54+8005d10d77.jar        |Fabric Dimensions API (v1)    |fabric_dimensions_v1          |2.1.54+8005d10d77   |DONE      |Manifest: NOSIGNATURE         radium-mc1.20.1-0.12.4+git.26c9d8e.jar            |Radium                        |radium                        |0.12.4+git.26c9d8e  |DONE      |Manifest: NOSIGNATURE         mowziesmobs-1.7.3.jar                             |Mowzie's Mobs                 |mowziesmobs                   |1.7.3               |DONE      |Manifest: NOSIGNATURE         geckolib-forge-1.20.1-4.7.3.jar                   |GeckoLib 4                    |geckolib                      |4.7.3               |DONE      |Manifest: NOSIGNATURE         endertrigon-1.20.1-1.1-all.jar                    |Ender Trigon                  |endertrigon                   |1.20.1-1.1          |DONE      |Manifest: NOSIGNATURE         ElysiumAPI-1.20.1-1.1.3.jar                       |Elysium                       |elysium_api                   |1.1.3               |DONE      |Manifest: NOSIGNATURE         fabric-model-loading-api-v1-1.0.3+6274ab9d77.jar  |Fabric Model Loading API (v1) |fabric_model_loading_api_v1   |1.0.3+6274ab9d77    |DONE      |Manifest: NOSIGNATURE         mowzies_cataclysm-1.2.0.jar                       |Mowzie's Cataclysm            |mowzies_cataclysm             |1.2.0               |DONE      |Manifest: NOSIGNATURE         jei-1.20.1-forge-15.20.0.112.jar                  |Just Enough Items             |jei                           |15.20.0.112         |DONE      |Manifest: NOSIGNATURE         lithostitched-forge-1.20.1-1.4.11.jar             |Lithostitched                 |lithostitched                 |1.4.11              |DONE      |Manifest: NOSIGNATURE         The_Graveyard_3.1_(FORGE)_for_1.20.1.jar          |The Graveyard                 |graveyard                     |3.1                 |DONE      |Manifest: NOSIGNATURE         fabric-screen-handler-api-v1-1.3.30+561530ec77.jar|Fabric Screen Handler API (v1)|fabric_screen_handler_api_v1  |1.3.30+561530ec77   |DONE      |Manifest: NOSIGNATURE         fabric-resource-loader-v0-0.11.10+bcd08ed377.jar  |Fabric Resource Loader (v0)   |fabric_resource_loader_v0     |0.11.10+bcd08ed377  |DONE      |Manifest: NOSIGNATURE         caelus-forge-3.2.0+1.20.1.jar                     |Caelus API                    |caelus                        |3.2.0+1.20.1        |DONE      |Manifest: NOSIGNATURE         obscure_api-15.jar                                |Obscure API                   |obscure_api                   |15                  |DONE      |Manifest: NOSIGNATURE         fabric-rendering-v1-3.0.8+66e9a48f77.jar          |Fabric Rendering (v1)         |fabric_rendering_v1           |3.0.8+66e9a48f77    |DONE      |Manifest: NOSIGNATURE         fabric-renderer-indigo-1.5.2+b5b2da4177.jar       |Fabric Renderer - Indigo      |fabric_renderer_indigo        |1.5.2+b5b2da4177    |DONE      |Manifest: NOSIGNATURE         FastSuite-1.20.1-5.1.0.jar                        |Fast Suite                    |fastsuite                     |5.1.0               |DONE      |Manifest: NOSIGNATURE         Dungeon Now Loading-forge-1.20.1-1.5.jar          |Dungeon Now Loading           |dungeonnowloading             |1.5                 |DONE      |Manifest: NOSIGNATURE         integrated_api-1.5.3+1.20.1-forge.jar             |Integrated API                |integrated_api                |1.5.3+1.20.1-forge  |DONE      |Manifest: NOSIGNATURE         fabric-mining-level-api-v1-2.1.50+561530ec77.jar  |Fabric Mining Level API (v1)  |fabric_mining_level_api_v1    |2.1.50+561530ec77   |DONE      |Manifest: NOSIGNATURE         fromtheshadowsreborn-2.8.jar                      |From the Shadows Reborn       |fromtheshadows                |2.8                 |DONE      |Manifest: NOSIGNATURE         crackerslib-forge-1.20.1-0.3.2.1.jar              |CrackersLib                   |crackerslib                   |1.20.1-0.3.2.1      |DONE      |Manifest: NOSIGNATURE         TheOuterEnd-1.0.10.jar                            |The Outer End                 |outer_end                     |1.0.8               |DONE      |Manifest: NOSIGNATURE         [1.20.1-forge]-Epic-Knights-9.23.jar              |Epic Knights Mod              |magistuarmory                 |9.23                |DONE      |Manifest: NOSIGNATURE         starlight-1.1.2+forge.1cda73c.jar                 |Starlight                     |starlight                     |1.1.2+forge.1cda73c |DONE      |Manifest: NOSIGNATURE         Aquamirae Mod Boss Music Tweaks 1.20.1 v1.1.0.jar |Aquamirae Mod EXTRA Music     |aquamirae_mod_extra_music     |1.0.0               |DONE      |Manifest: NOSIGNATURE         blueprint-1.20.1-7.1.3.jar                        |Blueprint                     |blueprint                     |7.1.3               |DONE      |Manifest: NOSIGNATURE         savage_and_ravage-1.20.1-6.0.0.jar                |Savage & Ravage               |savage_and_ravage             |6.0.0               |DONE      |Manifest: NOSIGNATURE         fabric-particles-v1-1.1.2+78e1ecb877.jar          |Fabric Particles (v1)         |fabric_particles_v1           |1.1.2+78e1ecb877    |DONE      |Manifest: NOSIGNATURE         puzzlesaccessapi-forge-20.1.1.jar                 |Puzzles Access Api            |puzzlesaccessapi              |20.1.1              |DONE      |Manifest: NOSIGNATURE         forge-1.20.1-47.4.0-universal.jar                 |Forge                         |forge                         |47.4.0              |DONE      |Manifest: 84:ce:76:e8:45:35:e4:0e:63:86:df:47:59:80:0f:67:6c:c1:5f:6e:5f:4d:b3:54:47:1a:9f:7f:ed:5e:f2:90         fabric-transitive-access-wideners-v1-4.3.1+1880499|Fabric Transitive Access Widen|fabric_transitive_access_widen|4.3.1+1880499877    |DONE      |Manifest: NOSIGNATURE         nyfsspiders-forge-1.20.1-2.1.1.jar                |Nyf's Spiders                 |nyfsspiders                   |2.1.1               |DONE      |Manifest: NOSIGNATURE         tectonic-3.0.6-forge-1.20.1.jar                   |Tectonic                      |tectonic                      |3.0.6               |DONE      |Manifest: NOSIGNATURE         server-1.20.1-20230612.114412-srg.jar             |Minecraft                     |minecraft                     |1.20.1              |DONE      |Manifest: NOSIGNATURE         caverns_and_chasms-1.20.1-2.0.0.jar               |Caverns & Chasms              |caverns_and_chasms            |2.0.0               |DONE      |Manifest: NOSIGNATURE         upgrade_aquatic-1.20.1-6.0.3.jar                  |Upgrade Aquatic               |upgrade_aquatic               |6.0.3               |DONE      |Manifest: NOSIGNATURE         illagerwarship-1.0.1-forge-1.20.1.jar             |Illager-Warship               |illagerwarship                |1.0.1               |DONE      |Manifest: NOSIGNATURE         okzoomer-forge-1.20-3.0.1.jar                     |OkZoomer                      |okzoomer                      |3.0.1               |DONE      |Manifest: NOSIGNATURE         EnchantmentDescriptions-Forge-1.20.1-17.1.19.jar  |EnchantmentDescriptions       |enchdesc                      |17.1.19             |DONE      |Manifest: eb:c4:b1:67:8b:f9:0c:db:dc:4f:01:b1:8e:61:64:39:4c:10:85:0b:a6:c4:c7:48:f0:fa:95:f2:cb:08:3a:e5         moonlight-1.20-2.15.6-forge.jar                   |Moonlight Library             |moonlight                     |1.20-2.15.6         |DONE      |Manifest: NOSIGNATURE         fabric-api-base-0.4.31+ef105b4977.jar             |Fabric API Base               |fabric_api_base               |0.4.31+ef105b4977   |DONE      |Manifest: NOSIGNATURE         bettercombat-forge-1.8.6+1.20.1.jar               |Better Combat                 |bettercombat                  |1.8.6+1.20.1        |DONE      |Manifest: NOSIGNATURE         combatroll-forge-1.3.3+1.20.1.jar                 |Combat Roll                   |combatroll                    |1.3.3+1.20.1        |DONE      |Manifest: NOSIGNATURE         glowingraidillagers-1.20-1.20.1-1.0.0.jar         |GlowingRaidIllagers           |glowingraidillagers           |1.0.0               |DONE      |Manifest: NOSIGNATURE         fabric-blockrenderlayer-v1-1.1.41+1d0da21e77.jar  |Fabric BlockRenderLayer Regist|fabric_blockrenderlayer_v1    |1.1.41+1d0da21e77   |DONE      |Manifest: NOSIGNATURE         mixinsquared-forge-0.1.1.jar                      |MixinSquared                  |mixinsquared                  |0.1.1               |DONE      |Manifest: NOSIGNATURE         fabric-block-api-v1-1.0.11+0e6cb7f777.jar         |Fabric Block API (v1)         |fabric_block_api_v1           |1.0.11+0e6cb7f777   |DONE      |Manifest: NOSIGNATURE         nethersdelight-1.20.1-4.0.jar                     |Nether's Delight              |nethersdelight                |1.20.1-4.0          |DONE      |Manifest: NOSIGNATURE         fabric-resource-conditions-api-v1-2.3.8+9e342fc177|Fabric Resource Conditions API|fabric_resource_conditions_api|2.3.8+9e342fc177    |DONE      |Manifest: NOSIGNATURE         SpartanShields-1.20.1-forge-3.1.1.jar             |Spartan Shields               |spartanshields                |3.1.1               |DONE      |Manifest: NOSIGNATURE         fabric-item-group-api-v1-4.0.12+c9161c2d77.jar    |Fabric Item Group API (v1)    |fabric_item_group_api_v1      |4.0.12+c9161c2d77   |DONE      |Manifest: NOSIGNATURE         FastWorkbench-1.20.1-8.0.4.jar                    |Fast Workbench                |fastbench                     |8.0.4               |DONE      |Manifest: NOSIGNATURE         aquacombat 1.2.jar                                |Aqua combat                   |aquacombat                    |1.2                 |DONE      |Manifest: NOSIGNATURE         Zeta-1.0-30.jar                                   |Zeta                          |zeta                          |1.0-30              |DONE      |Manifest: NOSIGNATURE         Quark-4.0-462.jar                                 |Quark                         |quark                         |4.0-462             |DONE      |Manifest: NOSIGNATURE         supplementaries-1.20-3.1.36.jar                   |Supplementaries               |supplementaries               |1.20-3.1.36         |DONE      |Manifest: NOSIGNATURE         amendments-1.20-2.0.3.jar                         |Amendments                    |amendments                    |1.20-2.0.3          |DONE      |Manifest: NOSIGNATURE         irons_spellbooks-1.20.1-3.4.0.10.jar              |Iron's Spells 'n Spellbooks   |irons_spellbooks              |1.20.1-3.4.0.10     |DONE      |Manifest: NOSIGNATURE         fabric-biome-api-v1-13.0.13+dc36698e77.jar        |Fabric Biome API (v1)         |fabric_biome_api_v1           |13.0.13+dc36698e77  |DONE      |Manifest: NOSIGNATURE         fabric-registry-sync-v0-2.3.3+1c0ea72177.jar      |Fabric Registry Sync (v0)     |fabric_registry_sync_v0       |2.3.3+1c0ea72177    |DONE      |Manifest: NOSIGNATURE         FastFurnace-1.20.1-8.0.2.jar                      |FastFurnace                   |fastfurnace                   |8.0.2               |DONE      |Manifest: NOSIGNATURE         oceansdelight-1.0.2-1.20.jar                      |Ocean's Delight               |oceansdelight                 |1.0.2-1.20          |DONE      |Manifest: NOSIGNATURE         alexsdelight-1.5.jar                              |Alex's Delight                |alexsdelight                  |1.5                 |DONE      |Manifest: NOSIGNATURE         fabric-recipe-api-v1-1.0.21+514a076577.jar        |Fabric Recipe API (v1)        |fabric_recipe_api_v1          |1.0.21+514a076577   |DONE      |Manifest: NOSIGNATURE         ferritecore-6.0.1-forge.jar                       |Ferrite Core                  |ferritecore                   |6.0.1               |DONE      |Manifest: 41:ce:50:66:d1:a0:05:ce:a1:0e:02:85:9b:46:64:e0:bf:2e:cf:60:30:9a:fe:0c:27:e0:63:66:9a:84:ce:8a         fabric-object-builder-api-v1-11.1.3+4bd998fa77.jar|Fabric Object Builder API (v1)|fabric_object_builder_api_v1  |11.1.3+4bd998fa77   |DONE      |Manifest: NOSIGNATURE         PuzzlesLib-v8.1.32-1.20.1-Forge.jar               |Puzzles Lib                   |puzzleslib                    |8.1.32              |DONE      |Manifest: 9a:09:85:98:65:c4:8c:11:c5:49:f6:d6:33:23:39:df:8d:b4:ff:92:84:b8:bd:a5:83:9f:ac:7f:2a:d1:4b:6a         fabric-sound-api-v1-1.0.13+4f23bd8477.jar         |Fabric Sound API (v1)         |fabric_sound_api_v1           |1.0.13+4f23bd8477   |DONE      |Manifest: NOSIGNATURE         illage-and-spell-age-0.5.0-1.20.1.jar             |Illage and Spell-age          |ias_spellbooks                |0.5.0-1.20.1        |DONE      |Manifest: NOSIGNATURE         fabric-message-api-v1-5.1.9+52cc178c77.jar        |Fabric Message API (v1)       |fabric_message_api_v1         |5.1.9+52cc178c77    |DONE      |Manifest: NOSIGNATURE         fabric-data-generation-api-v1-12.3.4+369cb3a477.ja|Fabric Data Generation API (v1|fabric_data_generation_api_v1 |12.3.4+369cb3a477   |DONE      |Manifest: NOSIGNATURE         fabric-events-interaction-v0-0.6.2+0d0bd5a777.jar |Fabric Events Interaction (v0)|fabric_events_interaction_v0  |0.6.2+0d0bd5a777    |DONE      |Manifest: NOSIGNATURE         aquamirae-6.API15.jar                             |Aquamirae                     |aquamirae                     |6.API15             |DONE      |Manifest: NOSIGNATURE     Crash Report UUID: 1bafdbcd-c29f-499e-a272-e920f6f303c3     FML: 47.4     Forge: net.minecraftforge:47.4.0  
    • I downloaded the server package from curseforge, but when I run "run.but", I get the error: "Error: Could not find or load main class @user_jvm_args.txt"
  • Topics

  • Who's Online (See full list)

    • There are no registered users currently online
×
×
  • Create New...

Important Information

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