Jump to content

Recommended Posts

Posted

How would I go about making changes to a block model (i.e. animations and block rotation) based on each instance of the block, and not change globally? I don't know of any other way to animate or rotate than changing values in the model class, which causes a global change. Am I initializing my model incorrectly, or what? lol

 

block:

public class BlockExtractor extends Block {

public BlockExtractor(int par1, Material par2Material) {
	super(par1, par2Material);
	this.setHardness(10);
	this.setCreativeTab(BlockTab.blockTab);
	this.setUnlocalizedName("Extractor");
}

public static boolean flag1;

@Override
public boolean canConnectRedstone(IBlockAccess world, int x, int y, int z,
		int side) {
	return true;
}
  
@Override
public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase entity, ItemStack stack)
{
if (entity == null)
{
return;
}

TileEntityExtractor tile = (TileEntityExtractor) world.getBlockTileEntity(x, y, z);
tile.direction = MathHelper.floor_double((double)(entity.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3;
}

@Override
@SideOnly(Side.CLIENT)
public void registerIcons(IconRegister iconRegister) {
	blockIcon = iconRegister.registerIcon(Methods.textureName(this
			.getUnlocalizedName()));
}

@Override
public boolean hasTileEntity(int metadata) {
	return true;
}

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

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

@Override
public TileEntity createTileEntity(World world, int metadata) {
	return new TileEntityExtractor();
}

@Override
public int getRenderType() {
	return -1;
}

public void addCollisionBoxesToList(World par1World, int par2, int par3,
		int par4, AxisAlignedBB par5AxisAlignedBB, List par6List,
		Entity par7Entity) {
	this.setBlockBounds(-0.065F, 0.0F, -0.065F, 1.045F, 1.1F, 1.045F);
	super.addCollisionBoxesToList(par1World, par2, par3, par4,
			par5AxisAlignedBB, par6List, par7Entity);
}

@Override
public void setBlockBoundsBasedOnState(IBlockAccess par1IBlockAccess,
		int par2, int par3, int par4) {
	this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
}

public boolean onBlockActivated(World par1World, int par2, int par3,
		int par4, EntityPlayer par5EntityPlayer, int par6, float par7,
		float par8, float par9) {
	extract(par1World,par2,par3,par4);
	return false;
}
public static void extract(World world, int x, int y, int z){
	ItemStack LightStack = new ItemStack(Items.ItemLightBall, 1);
	EntityItem LightItem = new EntityItem(world, x + 0.5,
			y + 0.5, z - 0.6, LightStack);
	LightItem.motionX = 0;
	LightItem.motionY = 0;
	LightItem.motionZ = -1;

	ItemStack DarkStack = new ItemStack(Items.ItemDarkBall, 1);
	EntityItem DarkItem = new EntityItem(world, x + 0.5,
			y + 0.5, z - 0.6, DarkStack);
	DarkItem.motionX = 0;
	DarkItem.motionY = 0;
	DarkItem.motionZ = -1;
	int ID = world.getBlockId(x, y + 1, z);	
	if(!world.isRemote){
	if(ID == IDRef.LIGHT_WOOD_ID){
		world.setBlockToAir(x, y + 1, z);
		world.spawnEntityInWorld(LightItem);
	}
	if(ID == IDRef.DARK_LEAF_ID){
		world.setBlockToAir(x, y + 1, z);
		world.spawnEntityInWorld(DarkItem);
	}
}
}

}

 

Renderer:

public class TileEntityExtractorRender extends TileEntitySpecialRenderer {

private final ModelExtractor model;
public static final ResourceLocation Extractor = new ResourceLocation(
		Reference.MOD_ID.toLowerCase(),
		"/textures/models/ModelExtractor.png");
static boolean running = false;
public TileEntityExtractorRender() {
	this.model = new ModelExtractor();
}

private void adjustRotatePivotViaMeta(World world, int x, int y, int z) {
	int meta = world.getBlockMetadata(x, y, z);
	GL11.glPushMatrix();
	GL11.glRotatef(meta * (-90), 0.0F, 0.0F, 1.0F);
	GL11.glPopMatrix();
}

@Override
public void renderTileEntityAt(TileEntity te, double x, double y, double z,
	float scale) {
	GL11.glPushMatrix();
	GL11.glTranslatef((float) x + 0.5F, (float) y + 1.5F, (float) z + 0.5F);
	Minecraft.getMinecraft().renderEngine.func_110577_a(Extractor);
	GL11.glPushMatrix();
	GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F);
	TileEntityExtractor tile = (TileEntityExtractor) te;
	int direction = tile.direction;
	GL11.glRotatef(direction * 90, 0.0F, 1.0F, 0.0F);
	this.model.render((Entity) null, 0.0F, 0.0F, -0.1F, 0.0F, 0.0F, 0.0625F);
	GL11.glPopMatrix();
	GL11.glPopMatrix();
}

private void adjustLightFixture(World world, int i, int j, int k,
		Block block) {
	Tessellator tess = Tessellator.instance;
	float brightness = block.getBlockBrightness(world, i, j, k);
	int skyLight = world.getLightBrightnessForSkyBlocks(i, j, k, 0);
	int modulousModifier = skyLight % 65536;
	int divModifier = skyLight / 65536;
	tess.setColorOpaque_F(brightness, brightness, brightness);
	OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit,(float) modulousModifier, divModifier);
}
}

 

Model:

public class ModelExtractor extends ModelBase
{
    ModelRenderer top;
    ModelRenderer bottom;
    ModelRenderer wall1;
    ModelRenderer wall2;
    ModelRenderer wall3;
    ModelRenderer wall4;
    ModelRenderer funnel;
    ModelRenderer beam;
    public static ModelRenderer slider1;
    public static ModelRenderer slider2;
    ModelRenderer output0;
    ModelRenderer output1;
    ModelRenderer output2;
    ModelRenderer output3;
    ModelRenderer output4;
    ModelRenderer base1;
    ModelRenderer base2;
    ModelRenderer base3;
    ModelRenderer base4;
  
  public ModelExtractor()
  {
    textureWidth = 64;
    textureHeight = 128;
    
      top = new ModelRenderer(this, 0, 0);
      top.addBox(-8F, 0F, -8F, 16, 1, 16);
      top.setRotationPoint(0F, 8F, 0F);
      top.setTextureSize(64, 128);
      top.mirror = true;
      setRotation(top, 0F, 0F, 0F);
      bottom = new ModelRenderer(this, 0, 0);
      bottom.addBox(-8F, 0F, -8F, 16, 1, 16);
      bottom.setRotationPoint(0F, 23F, 0F);
      bottom.setTextureSize(64, 128);
      bottom.mirror = true;
      setRotation(bottom, 0F, 0F, 0F);
      wall1 = new ModelRenderer(this, 0, 17);
      wall1.addBox(-8F, -1F, 0F, 18, 3, 1);
      wall1.setRotationPoint(-1F, 7F, -9F);
      wall1.setTextureSize(64, 128);
      wall1.mirror = true;
      setRotation(wall1, 0F, 0F, 0F);
      wall2 = new ModelRenderer(this, 0, 21);
      wall2.addBox(17F, -1F, -8F, 1, 3, 16);
      wall2.setRotationPoint(-9F, 7F, 0F);
      wall2.setTextureSize(64, 128);
      wall2.mirror = true;
      setRotation(wall2, 0F, 0F, 0F);
      wall3 = new ModelRenderer(this, 0, 17);
      wall3.addBox(-8F, -1F, 0F, 18, 3, 1);
      wall3.setRotationPoint(-1F, 7F, 8F);
      wall3.setTextureSize(64, 128);
      wall3.mirror = true;
      setRotation(wall3, 0F, 0F, 0F);
      wall4 = new ModelRenderer(this, 0, 21);
      wall4.addBox(0F, -1F, -8F, 1, 3, 16);
      wall4.setRotationPoint(-9F, 7F, 0F);
      wall4.setTextureSize(64, 128);
      wall4.mirror = true;
      setRotation(wall4, 0F, 0F, 0F);
      funnel = new ModelRenderer(this, 0, 59);
      funnel.addBox(-5F, -1F, -5F, 10, 2, 10);
      funnel.setRotationPoint(0F, 10F, 0F);
      funnel.setTextureSize(64, 128);
      funnel.mirror = true;
      setRotation(funnel, 0F, 0F, 0F);
      beam = new ModelRenderer(this, 0, 40);
      beam.addBox(-3F, -1F, -3F, 6, 13, 6);
      beam.setRotationPoint(0F, 11F, 0F);
      beam.setTextureSize(64, 128);
      beam.mirror = true;
      setRotation(beam, 0F, 0F, 0F);
      slider1 = new ModelRenderer(this, 0, 71);
      slider1.addBox(1F, -2F, -4F, 4, 4, ;
      slider1.setRotationPoint(0F, 21F, 0F);
      slider1.setTextureSize(64, 128);
      slider1.mirror = true;
      setRotation(slider1, 0F, 0F, 0F);
      slider2 = new ModelRenderer(this, 24, 71);
      slider2.addBox(-5F, -2F, -4F, 4, 4, ;
      slider2.setRotationPoint(0F, 21F, 0F);
      slider2.setTextureSize(64, 128);
      slider2.mirror = true;
      setRotation(slider2, 0F, 0F, 0F);
      output0 = new ModelRenderer(this, 0, 89);
      output0.addBox(-1F, -1F, 0F, 2, 2, 1);
      output0.setRotationPoint(0F, 16F, -4F);
      output0.setTextureSize(64, 128);
      output0.mirror = true;
      setRotation(output0, 0F, 0F, 0F);
      output1 = new ModelRenderer(this, 0, 83);
      output1.addBox(-3F, -3F, -1F, 6, 2, 4);
      output1.setRotationPoint(0F, 20F, -7F);
      output1.setTextureSize(64, 128);
      output1.mirror = true;
      setRotation(output1, 0F, 0F, 0F);
      output2 = new ModelRenderer(this, 0, 83);
      output2.addBox(-3F, -3F, -1F, 6, 2, 4);
      output2.setRotationPoint(0F, 16F, -7F);
      output2.setTextureSize(64, 128);
      output2.mirror = true;
      setRotation(output2, 0F, 0F, 0F);
      output3 = new ModelRenderer(this, 0, 92);
      output3.addBox(-3F, -3F, -1F, 2, 2, 4);
      output3.setRotationPoint(4F, 18F, -7F);
      output3.setTextureSize(64, 128);
      output3.mirror = true;
      setRotation(output3, 0F, 0F, 0F);
      output4 = new ModelRenderer(this, 0, 92);
      output4.addBox(-3F, -3F, -1F, 2, 2, 4);
      output4.setRotationPoint(0F, 18F, -7F);
      output4.setTextureSize(64, 128);
      output4.mirror = true;
      setRotation(output4, 0F, 0F, 0F);
      base1 = new ModelRenderer(this, 0, 102);
      base1.addBox(0F, 0F, -8F, 2, 1, 14);
      base1.setRotationPoint(5F, 22F, 1F);
      base1.setTextureSize(64, 128);
      base1.mirror = true;
      setRotation(base1, 0F, 0F, 0F);
      base2 = new ModelRenderer(this, 0, 102);
      base2.addBox(0F, 0F, -8F, 2, 1, 14);
      base2.setRotationPoint(-7F, 22F, 1F);
      base2.setTextureSize(64, 128);
      base2.mirror = true;
      setRotation(base2, 0F, 0F, 0F);
      base3 = new ModelRenderer(this, 0, 98);
      base3.addBox(0F, 0F, -8F, 10, 1, 3);
      base3.setRotationPoint(-5F, 22F, 12F);
      base3.setTextureSize(64, 128);
      base3.mirror = true;
      setRotation(base3, 0F, 0F, 0F);
      base4 = new ModelRenderer(this, 0, 98);
      base4.addBox(0F, 0F, -7F, 10, 1, 3);
      base4.setRotationPoint(-5F, 22F, 0F);
      base4.setTextureSize(64, 128);
      base4.mirror = true;
      setRotation(base4, 0F, 0F, 0F);
  }
  
  public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5)
  {
    super.render(entity, f, f1, f2, f3, f4, f5);
    setRotationAngles(f, f1, f2, f3, f4, f5, entity);
    top.render(f5);
    bottom.render(f5);
    wall1.render(f5);
    wall2.render(f5);
    wall3.render(f5);
    wall4.render(f5);
    funnel.render(f5);
    beam.render(f5);
    slider1.render(f5);
    slider2.render(f5);
    output0.render(f5);
    output1.render(f5);
    output2.render(f5);
    output3.render(f5);
    output4.render(f5);
    base1.render(f5);
    base2.render(f5);
    base3.render(f5);
    base4.render(f5);
  }
  
  private void setRotation(ModelRenderer model, float x, float y, float z)
  {
    model.rotateAngleX = x;
    model.rotateAngleY = y;
    model.rotateAngleZ = z;
  }
  
  public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity)
  {
    super.setRotationAngles(f, f1, f2, f3, f4, f5, entity);
  }
static boolean down = false;
  
  public static void pump(){
  if(slider1.offsetY > 0.0){
		down = true;
		  }
		  if(slider1.offsetY < -0.5){
			  down = false;
		  }
		  long time = System.currentTimeMillis() % 40000L;
		  if(down){
			  slider1.offsetY -= 0.01;
		  }
		  if(!down){
			  slider1.offsetY += 0.01;
		  }
		  slider2.offsetY = slider1.offsetY;
  }
}

 

Item Renderer:

public class ItemExtractorRenderer implements IItemRenderer {

private ModelExtractor ExtractorModel;

public ItemExtractorRenderer() {

ExtractorModel = new ModelExtractor();
}

@Override
public boolean handleRenderType(ItemStack item, ItemRenderType type) {

return true;
}

@Override
public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) {

return true;
}

@Override
public void renderItem(ItemRenderType type, ItemStack item, Object... data) {
TileEntityRenderer.instance.renderTileEntityAt(new TileEntityExtractor(), 0.0D, 0.0D, 0.0D, 0.0F);
}
}

 

my tile entity just initializes the variable "direction," as I was hoping that storing it in the te would make it instanced.

 

Right now, the block model will rotate to face the player on placement, but all instances rotate to match the last one placed (including ones in the inventory). Also, the pumping animation works, but it's all at the same rate and progress. I'd like the animation to be toggleable at some point, but that's not as important. The animation is called in my tick handler, to clarify that.

 

tl;dr - How do I animate single instances of a custom modeled block?

Posted

Actually, I've since removed the "direction" variable, and opted for an alternate approach. I've got rotation down just fine, but the instanced animation is the thing killing me. lol

 


public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase entity, ItemStack stack)
{
if (entity == null)
{
return;
}


TileEntityExtractor tile = (TileEntityExtractor) world.getBlockTileEntity(x, y, z);
if(!world.isRemote){
   world.setBlockMetadataWithNotify(x, y, z, MathHelper.floor_double((double)(entity.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3, 3);
}
}

 

There's the rotation detection method. Then in my model's renderer, I have

 

TileEntityExtractor tile = (TileEntityExtractor) te;
GL11.glRotatef(te.blockMetadata * 90, 0.0F, 1.0F, 0.0F);

 

in my "renderTileEntityAt" method. That part all works fine and dandy. lol (I did need a glRotate on the item renderer to make it face the proper way, but oh well.)

 

Any clues on the animation?

 

 

Posted

Hi

 

I'd suggest something like - change your

public static void pump(){

to be

public void pump(long animationOffset)

with

long time = (System.currentTimeMillis() + animationOffset) % 40000L; 

 

add a field to your TileEntityExtractor

long animationOffset;

 

in the default constructor for your TileEntityExtractor add

animationOffset = System.nanoTime % 40000;

 

in your renderTileEntityAt add

 

this.model.pump(te.animationOffset);
this.model.render((Entity) null, 0.0F, 0.0F, -0.1F, 0.0F, 0.0F, 0.0625F);

 

Disclaimer - I haven't tried to compile this code so bits of the syntax might not be 100% right

 

-TGG

 

 

 

 

 

Posted

I actually tried doing something very similar, and I can't get access to the method from the te instance called in renderTileEntityAt. At least not that I could see. It seems that "te" refers to the base tileEntity class, not TileEntityExtractor. the quest continues! lol

 

EDIT: still giving it a shot. Couldn't hurt! lol

Posted

I had actually realized that I needed to be getting the variable from "tile" in this case, right after I had tried it out with this new way. -.-

 

Now I have a long variable, and no clue what to do with it. Putting it directly into my motion code shoots the sliders to somewhere around 57,000, which is not ideal. :P  If I'm not mistaken, model offset values are floats, so do I need some sort of cast or conversion, or am I missing something? :P

Posted

Sorry you lost me, where did you say you got this long variable from? :P

Paste your new related code (remember code tags)

If you guys dont get it.. then well ya.. try harder...

Posted

The long variable came from TheGreyGhost's suggestion. :P

 

Model

public class ModelExtractor extends ModelBase
{
    ModelRenderer top;
    ModelRenderer bottom;
    ModelRenderer wall1;
    ModelRenderer wall2;
    ModelRenderer wall3;
    ModelRenderer wall4;
    ModelRenderer funnel;
    ModelRenderer beam;
    ModelRenderer slider1;
    ModelRenderer slider2;
    ModelRenderer output0;
    ModelRenderer output1;
    ModelRenderer output2;
    ModelRenderer output3;
    ModelRenderer output4;
    ModelRenderer base1;
    ModelRenderer base2;
    ModelRenderer base3;
    ModelRenderer base4;
  
  public ModelExtractor()
  {
    textureWidth = 64;
    textureHeight = 128;
    
      top = new ModelRenderer(this, 0, 0);
      top.addBox(-8F, 0F, -8F, 16, 1, 16);
      top.setRotationPoint(0F, 8F, 0F);
      top.setTextureSize(64, 128);
      top.mirror = true;
      setRotation(top, 0F, 0F, 0F);
      bottom = new ModelRenderer(this, 0, 0);
      bottom.addBox(-8F, 0F, -8F, 16, 1, 16);
      bottom.setRotationPoint(0F, 23F, 0F);
      bottom.setTextureSize(64, 128);
      bottom.mirror = true;
      setRotation(bottom, 0F, 0F, 0F);
      wall1 = new ModelRenderer(this, 0, 17);
      wall1.addBox(-8F, -1F, 0F, 18, 3, 1);
      wall1.setRotationPoint(-1F, 7F, -9F);
      wall1.setTextureSize(64, 128);
      wall1.mirror = true;
      setRotation(wall1, 0F, 0F, 0F);
      wall2 = new ModelRenderer(this, 0, 21);
      wall2.addBox(17F, -1F, -8F, 1, 3, 16);
      wall2.setRotationPoint(-9F, 7F, 0F);
      wall2.setTextureSize(64, 128);
      wall2.mirror = true;
      setRotation(wall2, 0F, 0F, 0F);
      wall3 = new ModelRenderer(this, 0, 17);
      wall3.addBox(-8F, -1F, 0F, 18, 3, 1);
      wall3.setRotationPoint(-1F, 7F, 8F);
      wall3.setTextureSize(64, 128);
      wall3.mirror = true;
      setRotation(wall3, 0F, 0F, 0F);
      wall4 = new ModelRenderer(this, 0, 21);
      wall4.addBox(0F, -1F, -8F, 1, 3, 16);
      wall4.setRotationPoint(-9F, 7F, 0F);
      wall4.setTextureSize(64, 128);
      wall4.mirror = true;
      setRotation(wall4, 0F, 0F, 0F);
      funnel = new ModelRenderer(this, 0, 59);
      funnel.addBox(-5F, -1F, -5F, 10, 2, 10);
      funnel.setRotationPoint(0F, 10F, 0F);
      funnel.setTextureSize(64, 128);
      funnel.mirror = true;
      setRotation(funnel, 0F, 0F, 0F);
      beam = new ModelRenderer(this, 0, 40);
      beam.addBox(-3F, -1F, -3F, 6, 13, 6);
      beam.setRotationPoint(0F, 11F, 0F);
      beam.setTextureSize(64, 128);
      beam.mirror = true;
      setRotation(beam, 0F, 0F, 0F);
      slider1 = new ModelRenderer(this, 0, 71);
      slider1.addBox(1F, -2F, -4F, 4, 4, ;
      slider1.setRotationPoint(0F, 21F, 0F);
      slider1.setTextureSize(64, 128);
      slider1.mirror = true;
      setRotation(slider1, 0F, 0F, 0F);
      slider2 = new ModelRenderer(this, 24, 71);
      slider2.addBox(-5F, -2F, -4F, 4, 4, ;
      slider2.setRotationPoint(0F, 21F, 0F);
      slider2.setTextureSize(64, 128);
      slider2.mirror = true;
      setRotation(slider2, 0F, 0F, 0F);
      output0 = new ModelRenderer(this, 0, 89);
      output0.addBox(-1F, -1F, 0F, 2, 2, 1);
      output0.setRotationPoint(0F, 16F, -4F);
      output0.setTextureSize(64, 128);
      output0.mirror = true;
      setRotation(output0, 0F, 0F, 0F);
      output1 = new ModelRenderer(this, 0, 83);
      output1.addBox(-3F, -3F, -1F, 6, 2, 4);
      output1.setRotationPoint(0F, 20F, -7F);
      output1.setTextureSize(64, 128);
      output1.mirror = true;
      setRotation(output1, 0F, 0F, 0F);
      output2 = new ModelRenderer(this, 0, 83);
      output2.addBox(-3F, -3F, -1F, 6, 2, 4);
      output2.setRotationPoint(0F, 16F, -7F);
      output2.setTextureSize(64, 128);
      output2.mirror = true;
      setRotation(output2, 0F, 0F, 0F);
      output3 = new ModelRenderer(this, 0, 92);
      output3.addBox(-3F, -3F, -1F, 2, 2, 4);
      output3.setRotationPoint(4F, 18F, -7F);
      output3.setTextureSize(64, 128);
      output3.mirror = true;
      setRotation(output3, 0F, 0F, 0F);
      output4 = new ModelRenderer(this, 0, 92);
      output4.addBox(-3F, -3F, -1F, 2, 2, 4);
      output4.setRotationPoint(0F, 18F, -7F);
      output4.setTextureSize(64, 128);
      output4.mirror = true;
      setRotation(output4, 0F, 0F, 0F);
      base1 = new ModelRenderer(this, 0, 102);
      base1.addBox(0F, 0F, -8F, 2, 1, 14);
      base1.setRotationPoint(5F, 22F, 1F);
      base1.setTextureSize(64, 128);
      base1.mirror = true;
      setRotation(base1, 0F, 0F, 0F);
      base2 = new ModelRenderer(this, 0, 102);
      base2.addBox(0F, 0F, -8F, 2, 1, 14);
      base2.setRotationPoint(-7F, 22F, 1F);
      base2.setTextureSize(64, 128);
      base2.mirror = true;
      setRotation(base2, 0F, 0F, 0F);
      base3 = new ModelRenderer(this, 0, 98);
      base3.addBox(0F, 0F, -8F, 10, 1, 3);
      base3.setRotationPoint(-5F, 22F, 12F);
      base3.setTextureSize(64, 128);
      base3.mirror = true;
      setRotation(base3, 0F, 0F, 0F);
      base4 = new ModelRenderer(this, 0, 98);
      base4.addBox(0F, 0F, -7F, 10, 1, 3);
      base4.setRotationPoint(-5F, 22F, 0F);
      base4.setTextureSize(64, 128);
      base4.mirror = true;
      setRotation(base4, 0F, 0F, 0F);
  }
  
  public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5)
  {
    super.render(entity, f, f1, f2, f3, f4, f5);
    setRotationAngles(f, f1, f2, f3, f4, f5, entity);
    top.render(f5);
    bottom.render(f5);
    wall1.render(f5);
    wall2.render(f5);
    wall3.render(f5);
    wall4.render(f5);
    funnel.render(f5);
    beam.render(f5);
    slider1.render(f5);
    slider2.render(f5);
    output0.render(f5);
    output1.render(f5);
    output2.render(f5);
    output3.render(f5);
    output4.render(f5);
    base1.render(f5);
    base2.render(f5);
    base3.render(f5);
    base4.render(f5);
  }
  
  private void setRotation(ModelRenderer model, float x, float y, float z)
  {
    model.rotateAngleX = x;
    model.rotateAngleY = y;
    model.rotateAngleZ = z;
  }
  
  public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity)
  {
    super.setRotationAngles(f, f1, f2, f3, f4, f5, entity);
  }
  static boolean down = false;
  
  public void pump(long animationOffset){
  
  long time = ((System.currentTimeMillis() + animationOffset) % 40000L) * -1; 
  slider1.offsetY = time;	
  System.out.println(time);
	  	  }
  
}

Renderer

public class TileEntityExtractorRender extends TileEntitySpecialRenderer {

private final ModelExtractor model;
public static final ResourceLocation Extractor = new ResourceLocation(
		Reference.MOD_ID.toLowerCase(),
		"/textures/models/ModelExtractor.png");
static boolean running = false;
public TileEntityExtractorRender() {
	this.model = new ModelExtractor();
}

private void adjustRotatePivotViaMeta(World world, int x, int y, int z) {
	int meta = world.getBlockMetadata(x, y, z);
	GL11.glPushMatrix();
	GL11.glRotatef(meta * (-90), 0.0F, 0.0F, 1.0F);
	GL11.glPopMatrix();
}

@Override
public void renderTileEntityAt(TileEntity te, double x, double y, double z,
	float scale) {
	GL11.glPushMatrix();
	GL11.glTranslatef((float) x + 0.5F, (float) y + 1.5F, (float) z + 0.5F);
	Minecraft.getMinecraft().renderEngine.func_110577_a(Extractor);
	GL11.glPushMatrix();
	GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F);
	TileEntityExtractor tile = (TileEntityExtractor) te;
	GL11.glRotatef(te.blockMetadata * 90, 0.0F, 1.0F, 0.0F);
	this.model.pump(tile.animationOffset);
	this.model.render((Entity) null, 0.0F, 0.0F, -0.1F, 0.0F, 0.0F, 0.0625F);
	GL11.glPopMatrix();
	GL11.glPopMatrix();
}

private void adjustLightFixture(World world, int i, int j, int k,
		Block block) {
	Tessellator tess = Tessellator.instance;
	float brightness = block.getBlockBrightness(world, i, j, k);
	int skyLight = world.getLightBrightnessForSkyBlocks(i, j, k, 0);
	int modulousModifier = skyLight % 65536;
	int divModifier = skyLight / 65536;
	tess.setColorOpaque_F(brightness, brightness, brightness);
	OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit,(float) modulousModifier, divModifier);
}
}

Tile Entity

public class TileEntityExtractor extends TileEntity{

public TileEntityExtractor(){
	animationOffset = System.nanoTime() % 40000;
}

long animationOffset;
}

 

The println in the pump method gives me like -35000 (I inverted it because slider1.offsetY starts at 0 and goes down). With those kinds of numbers, my slider is thousands of blocks in the air, not where I want it. lol Did I do something wrong, or am I missing something? What's the deal? xD I suppose I could try to change the modulus values, but even then, it acted jerky and wild, and I couldn't tell if it was actually working as intended anyway. haha

Posted

Hi

 

The long value in the code I suggested is based on your pump animation code, which appeared to be designed to go through a full animation cycle once every 40 seconds using a value from 0 to 39999.  Now that I look at it more closely I see that time isn't actually used at all.  Guess I should have read it more thoroughly.  As you've got it currently, the slider will move by a fixed amount every time pump is called, so if the framerate is uneven or you have multiple sliders it will be choppy

 

 

 

 public static void pump(){
  if(slider1.offsetY > 0.0){
		down = true;
		  }
		  if(slider1.offsetY < -0.5){
			  down = false;
		  }
		  long time = System.currentTimeMillis() % 40000L;
		  if(down){
			  slider1.offsetY -= 0.01;
		  }
		  if(!down){
			  slider1.offsetY += 0.01;
		  }
		  slider2.offsetY = slider1.offsetY;
  }
}

 

If you want your slider position to animate like this:

(1) start at slider position 0

(2) over 2 seconds, decrease evenly to -0.5

(3) over the next 2 seconds, increase evenly to 0

(4) repeat from 2

 

then something like this should work:

 

 public void pump(long animationOffset){
  final long CYCLE_TIME_IN_MS = 2000;
  final long HALF_CYCLE_TIME_IN_MS = CYCLE_TIME_IN_MS / 2;
  final float START_SLIDER_POS = 0.0;
  final float MID_CYCLE_SLIDER_POS = -0.5;
  long time = (System.currentTimeMillis() + animationOffset) % CYCLE_TIME_IN_MS;
  if (time < HALF_CYCLE_TIME_IN_MS) {
    slider1.offsetY = START_SLIDER_POS + (time / HALF_CYCLE_TIME_IN_MS) * (MID_CYCLE_SLIDER_POS - START_SLIDER_POS);
  } else {
    time -= HALF_CYCLE_TIME_IN_MS; 
    slider1.offsetY = MID_CYCLE_SLIDER_POS + (time / HALF_CYCLE_TIME_IN_MS) * (START_SLIDER_POS - MID_CYCLE_SLIDER_POS); 
  }
}

 

-TGG

Posted

Well, all of the extractors are animating independently now, but it just jumps from the bottom to the top, and back, no smooth motion. :P So I'll try and figure out how to fix that, but other than that, it's working fine! :D

Posted

Huzzah!!! Thank you SO much, everyone. It's working perfectly now (apart from the item instance spazzing out, but I'm certain I can handle that. :P )!!

 

Btw, I'll be adding your names to the "special thanks" section of the mod info, so you get the credit you deserve for your invaluable help! :D

 

EDIT:

 

Actually, I have ONE more question! I'm making this animation toggle-able on right-click, which is working just fine, but the problem is that due to the animation being set via the time, when the animation starts, it jumps to whatever time value the tile entity has and starts from there. At the moment, I'm adding 4 to the block's metadata on right click (or subtracting 4 if it's 4 or above). The animation will only run on extractors with a metadata higher than 3, so all the basic rotations do not animate until right clicked. I've also set the yOffset of both sliders to 0 if the metadata is less than 4... long story short, how do I smooth out the animation's start?

 

in the block:

public boolean onBlockActivated(World par1World, int par2, int par3,
		int par4, EntityPlayer par5EntityPlayer, int par6, float par7,
		float par8, float par9) {
	if(!par1World.isRemote){
	if(par5EntityPlayer.getCurrentEquippedItem() == null){
		int meta = par1World.getBlockMetadata(par2, par3, par4);
		if(meta < 4){
			 meta += 4;	
		}
		else{
			meta -= 4;
		}
	par1World.setBlockMetadataWithNotify(par2, par3, par4, meta, 3);
	}
	}
	return false;
}

 

in the model:

public void pump(long animationOffset){
  final long CYCLE_TIME_IN_MS = 2000;
  final long HALF_CYCLE_TIME_IN_MS = CYCLE_TIME_IN_MS / 2;
  final float START_SLIDER_POS = 0.0F;
  final float MID_CYCLE_SLIDER_POS = -0.5F;
  long time = (System.currentTimeMillis() + animationOffset) % CYCLE_TIME_IN_MS;
  if (time < HALF_CYCLE_TIME_IN_MS) {
    slider1.offsetY = START_SLIDER_POS + (time / (float)HALF_CYCLE_TIME_IN_MS) * (MID_CYCLE_SLIDER_POS - START_SLIDER_POS);
  } else {
    time -= HALF_CYCLE_TIME_IN_MS; 
    slider1.offsetY = MID_CYCLE_SLIDER_POS + (time / (float)HALF_CYCLE_TIME_IN_MS) * (START_SLIDER_POS - MID_CYCLE_SLIDER_POS); 
  }
  slider2.offsetY = slider1.offsetY;
}
  

 

in the renderer:

public void renderTileEntityAt(TileEntity te, double x, double y, double z,
	float scale) {
	GL11.glPushMatrix();
	GL11.glTranslatef((float) x + 0.5F, (float) y + 1.5F, (float) z + 0.5F);
	Minecraft.getMinecraft().renderEngine.func_110577_a(Extractor);
	GL11.glPushMatrix();
	GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F);
	TileEntityExtractor tile = (TileEntityExtractor) te;
	GL11.glRotatef(te.blockMetadata * 90, 0.0F, 1.0F, 0.0F);
	if(tile.blockMetadata > 3){
	this.model.pump(tile.animationOffset);
	}
	else{
		this.model.slider1.offsetY = 0;
		this.model.slider2.offsetY = 0;
	}
	this.model.render((Entity) null, 0.0F, 0.0F, -0.1F, 0.0F, 0.0F, 0.0625F);
	GL11.glPopMatrix();
	GL11.glPopMatrix();
}

Posted

Hi

 

no worries, glad I could help.

 

So if you want to start the animation when you right-click the block, you need to set the animationOffset so that the slider position is zero when you right click the block.

 

in other words, time is zero

long time = (System.currentTimeMillis() + animationOffset) % CYCLE_TIME_IN_MS;

 

so in the right click you need to set your animationOffset equal to -System.currentTimeMillis(), so that

System.currentTimeMillis() + animationOffset == 0.

 

the initialisation in the constructor was just to provide a random starting point so the blocks are not all synchronised, there's nothing special about it.

animationOffset = System.nanoTime() % 40000;

 

Your onBlockActivated should have something like this in it:

	public boolean onBlockActivated(World par1World, int x, int y,
		int z, EntityPlayer par5EntityPlayer, int par6, float par7,
		float par8, float par9) {
if (par1World.isRemote) {
  TileEntity tileEntity =  par1World.getBlockTileEntity(x, y, z);
  if (tileEntity != null && tileEntity instanceof TileEntityExtractor) {
    ((TileEntityExtractor)tileEntity).animationOffset = - System.currentTimeMillis();
  }

}

// etc
}

 

-TGG

Posted

Well, TGG, I tried your idea, and it did not work. :P I did, however, get it to work by an alternate means. My guess is that the animationOffset variable was being reset in the time between onBlockActivated, and the pump method. This is how I got it to work.

 

Renderer:

public class TileEntityExtractorRender extends TileEntitySpecialRenderer {

private final ModelExtractor model;
public static final ResourceLocation Extractor = new ResourceLocation(
		Reference.MOD_ID.toLowerCase(),
		"/textures/models/ModelExtractor.png");
static boolean running = false;
public TileEntityExtractorRender() {
	this.model = new ModelExtractor();
}

private void adjustRotatePivotViaMeta(World world, int x, int y, int z) {
	int meta = world.getBlockMetadata(x, y, z);
	GL11.glPushMatrix();
	GL11.glRotatef(meta * (-90), 0.0F, 0.0F, 1.0F);
	GL11.glPopMatrix();
}

@Override
public void renderTileEntityAt(TileEntity te, double x, double y, double z,
	float scale) {
	GL11.glPushMatrix();
	GL11.glTranslatef((float) x + 0.5F, (float) y + 1.5F, (float) z + 0.5F);
	Minecraft.getMinecraft().renderEngine.func_110577_a(Extractor);
	GL11.glPushMatrix();
	GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F);
	TileEntityExtractor tile = (TileEntityExtractor) te;
	GL11.glRotatef(te.blockMetadata * 90, 0.0F, 1.0F, 0.0F);
	if(tile.blockMetadata > 3){
		if(tile.flag){
			    tile.animationOffset = System.currentTimeMillis() * -1;
				tile.flag = false;
			  }

	this.model.pump(tile.animationOffset);
	}
	else{
		this.model.slider1.offsetY = 0;
		this.model.slider2.offsetY = 0;
		tile.flag = true;
	}
	this.model.render((Entity) null, 0.0F, 0.0F, -0.1F, 0.0F, 0.0F, 0.0625F);
	GL11.glPopMatrix();
	GL11.glPopMatrix();
}

private void adjustLightFixture(World world, int i, int j, int k,
		Block block) {
	Tessellator tess = Tessellator.instance;
	float brightness = block.getBlockBrightness(world, i, j, k);
	int skyLight = world.getLightBrightnessForSkyBlocks(i, j, k, 0);
	int modulousModifier = skyLight % 65536;
	int divModifier = skyLight / 65536;
	tess.setColorOpaque_F(brightness, brightness, brightness);
	OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit,(float) modulousModifier, divModifier);
}
}

 

Model:

public class ModelExtractor extends ModelBase
{
    ModelRenderer top;
    ModelRenderer bottom;
    ModelRenderer wall1;
    ModelRenderer wall2;
    ModelRenderer wall3;
    ModelRenderer wall4;
    ModelRenderer funnel;
    ModelRenderer beam;
    public static ModelRenderer slider1;
    public static ModelRenderer slider2;
    ModelRenderer output0;
    ModelRenderer output1;
    ModelRenderer output2;
    ModelRenderer output3;
    ModelRenderer output4;
    ModelRenderer base1;
    ModelRenderer base2;
    ModelRenderer base3;
    ModelRenderer base4;
  
  public ModelExtractor()
  {
    textureWidth = 64;
    textureHeight = 128;
    
      top = new ModelRenderer(this, 0, 0);
      top.addBox(-8F, 0F, -8F, 16, 1, 16);
      top.setRotationPoint(0F, 8F, 0F);
      top.setTextureSize(64, 128);
      top.mirror = true;
      setRotation(top, 0F, 0F, 0F);
      bottom = new ModelRenderer(this, 0, 0);
      bottom.addBox(-8F, 0F, -8F, 16, 1, 16);
      bottom.setRotationPoint(0F, 23F, 0F);
      bottom.setTextureSize(64, 128);
      bottom.mirror = true;
      setRotation(bottom, 0F, 0F, 0F);
      wall1 = new ModelRenderer(this, 0, 17);
      wall1.addBox(-8F, -1F, 0F, 18, 3, 1);
      wall1.setRotationPoint(-1F, 7F, -9F);
      wall1.setTextureSize(64, 128);
      wall1.mirror = true;
      setRotation(wall1, 0F, 0F, 0F);
      wall2 = new ModelRenderer(this, 0, 21);
      wall2.addBox(17F, -1F, -8F, 1, 3, 16);
      wall2.setRotationPoint(-9F, 7F, 0F);
      wall2.setTextureSize(64, 128);
      wall2.mirror = true;
      setRotation(wall2, 0F, 0F, 0F);
      wall3 = new ModelRenderer(this, 0, 17);
      wall3.addBox(-8F, -1F, 0F, 18, 3, 1);
      wall3.setRotationPoint(-1F, 7F, 8F);
      wall3.setTextureSize(64, 128);
      wall3.mirror = true;
      setRotation(wall3, 0F, 0F, 0F);
      wall4 = new ModelRenderer(this, 0, 21);
      wall4.addBox(0F, -1F, -8F, 1, 3, 16);
      wall4.setRotationPoint(-9F, 7F, 0F);
      wall4.setTextureSize(64, 128);
      wall4.mirror = true;
      setRotation(wall4, 0F, 0F, 0F);
      funnel = new ModelRenderer(this, 0, 59);
      funnel.addBox(-5F, -1F, -5F, 10, 2, 10);
      funnel.setRotationPoint(0F, 10F, 0F);
      funnel.setTextureSize(64, 128);
      funnel.mirror = true;
      setRotation(funnel, 0F, 0F, 0F);
      beam = new ModelRenderer(this, 0, 40);
      beam.addBox(-3F, -1F, -3F, 6, 13, 6);
      beam.setRotationPoint(0F, 11F, 0F);
      beam.setTextureSize(64, 128);
      beam.mirror = true;
      setRotation(beam, 0F, 0F, 0F);
      slider1 = new ModelRenderer(this, 0, 71);
      slider1.addBox(1F, -2F, -4F, 4, 4, ;
      slider1.setRotationPoint(0F, 21F, 0F);
      slider1.setTextureSize(64, 128);
      slider1.mirror = true;
      setRotation(slider1, 0F, 0F, 0F);
      slider2 = new ModelRenderer(this, 24, 71);
      slider2.addBox(-5F, -2F, -4F, 4, 4, ;
      slider2.setRotationPoint(0F, 21F, 0F);
      slider2.setTextureSize(64, 128);
      slider2.mirror = true;
      setRotation(slider2, 0F, 0F, 0F);
      output0 = new ModelRenderer(this, 0, 89);
      output0.addBox(-1F, -1F, 0F, 2, 2, 1);
      output0.setRotationPoint(0F, 16F, -4F);
      output0.setTextureSize(64, 128);
      output0.mirror = true;
      setRotation(output0, 0F, 0F, 0F);
      output1 = new ModelRenderer(this, 0, 83);
      output1.addBox(-3F, -3F, -1F, 6, 2, 4);
      output1.setRotationPoint(0F, 20F, -7F);
      output1.setTextureSize(64, 128);
      output1.mirror = true;
      setRotation(output1, 0F, 0F, 0F);
      output2 = new ModelRenderer(this, 0, 83);
      output2.addBox(-3F, -3F, -1F, 6, 2, 4);
      output2.setRotationPoint(0F, 16F, -7F);
      output2.setTextureSize(64, 128);
      output2.mirror = true;
      setRotation(output2, 0F, 0F, 0F);
      output3 = new ModelRenderer(this, 0, 92);
      output3.addBox(-3F, -3F, -1F, 2, 2, 4);
      output3.setRotationPoint(4F, 18F, -7F);
      output3.setTextureSize(64, 128);
      output3.mirror = true;
      setRotation(output3, 0F, 0F, 0F);
      output4 = new ModelRenderer(this, 0, 92);
      output4.addBox(-3F, -3F, -1F, 2, 2, 4);
      output4.setRotationPoint(0F, 18F, -7F);
      output4.setTextureSize(64, 128);
      output4.mirror = true;
      setRotation(output4, 0F, 0F, 0F);
      base1 = new ModelRenderer(this, 0, 102);
      base1.addBox(0F, 0F, -8F, 2, 1, 14);
      base1.setRotationPoint(5F, 22F, 1F);
      base1.setTextureSize(64, 128);
      base1.mirror = true;
      setRotation(base1, 0F, 0F, 0F);
      base2 = new ModelRenderer(this, 0, 102);
      base2.addBox(0F, 0F, -8F, 2, 1, 14);
      base2.setRotationPoint(-7F, 22F, 1F);
      base2.setTextureSize(64, 128);
      base2.mirror = true;
      setRotation(base2, 0F, 0F, 0F);
      base3 = new ModelRenderer(this, 0, 98);
      base3.addBox(0F, 0F, -8F, 10, 1, 3);
      base3.setRotationPoint(-5F, 22F, 12F);
      base3.setTextureSize(64, 128);
      base3.mirror = true;
      setRotation(base3, 0F, 0F, 0F);
      base4 = new ModelRenderer(this, 0, 98);
      base4.addBox(0F, 0F, -7F, 10, 1, 3);
      base4.setRotationPoint(-5F, 22F, 0F);
      base4.setTextureSize(64, 128);
      base4.mirror = true;
      setRotation(base4, 0F, 0F, 0F);
  }
  
  public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5)
  {
    super.render(entity, f, f1, f2, f3, f4, f5);
    setRotationAngles(f, f1, f2, f3, f4, f5, entity);
    top.render(f5);
    bottom.render(f5);
    wall1.render(f5);
    wall2.render(f5);
    wall3.render(f5);
    wall4.render(f5);
    funnel.render(f5);
    beam.render(f5);
    slider1.render(f5);
    slider2.render(f5);
    output0.render(f5);
    output1.render(f5);
    output2.render(f5);
    output3.render(f5);
    output4.render(f5);
    base1.render(f5);
    base2.render(f5);
    base3.render(f5);
    base4.render(f5);
  }
  
  private void setRotation(ModelRenderer model, float x, float y, float z)
  {
    model.rotateAngleX = x;
    model.rotateAngleY = y;
    model.rotateAngleZ = z;
  }
  
  public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity)
  {
    super.setRotationAngles(f, f1, f2, f3, f4, f5, entity);
  }
  public void pump(long animationOffset){
  final long CYCLE_TIME_IN_MS = 3000;
  final long HALF_CYCLE_TIME_IN_MS = CYCLE_TIME_IN_MS / 2;
  final float START_SLIDER_POS = 0.0F;
  final float MID_CYCLE_SLIDER_POS = -0.5F;
  long time = (System.currentTimeMillis() + animationOffset) % CYCLE_TIME_IN_MS;
  if (time < HALF_CYCLE_TIME_IN_MS) {
    slider1.offsetY = START_SLIDER_POS + (time / (float)HALF_CYCLE_TIME_IN_MS) * (MID_CYCLE_SLIDER_POS - START_SLIDER_POS);
  } else {
    time -= HALF_CYCLE_TIME_IN_MS; 
    slider1.offsetY = MID_CYCLE_SLIDER_POS + (time / (float)HALF_CYCLE_TIME_IN_MS) * (START_SLIDER_POS - MID_CYCLE_SLIDER_POS); 
  }
  slider2.offsetY = slider1.offsetY;
}
  
}

 

Block:

public class BlockExtractor extends Block {

public BlockExtractor(int par1, Material par2Material) {
	super(par1, par2Material);
	this.setHardness(10);
	this.setCreativeTab(BlockTab.blockTab);
	this.setUnlocalizedName("Extractor");
}


@Override
public boolean canConnectRedstone(IBlockAccess world, int x, int y, int z,
		int side) {
	return true;
}
@Override
public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase entity, ItemStack stack)
{
if (entity == null)
{
return;
}


TileEntityExtractor tile = (TileEntityExtractor) world.getBlockTileEntity(x, y, z);
if(!world.isRemote){
   world.setBlockMetadataWithNotify(x, y, z, MathHelper.floor_double((double)(entity.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3, 3);
}
}

@Override
@SideOnly(Side.CLIENT)
public void registerIcons(IconRegister iconRegister) {
	blockIcon = iconRegister.registerIcon(Methods.textureName(this
			.getUnlocalizedName()));
}

@Override
public boolean hasTileEntity(int metadata) {
	return true;
}

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

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

@Override
public TileEntity createTileEntity(World world, int metadata) {
	return new TileEntityExtractor();
}

@Override
public int getRenderType() {
	return -1;
}

@Override
public void setBlockBoundsBasedOnState(IBlockAccess par1IBlockAccess,
		int par2, int par3, int par4) {
	this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
}

public boolean onBlockActivated(World par1World, int par2, int par3,
		int par4, EntityPlayer par5EntityPlayer, int par6, float par7,
		float par8, float par9) {
	if(!par1World.isRemote){
	if(par5EntityPlayer.getCurrentEquippedItem() == null){

		int meta = par1World.getBlockMetadata(par2, par3, par4);
		if(meta < 4){
			 meta += 4;	
		}
		else{
			meta -= 4;
		}
	par1World.setBlockMetadataWithNotify(par2, par3, par4, meta, 3);
	}
	}
	return false;
}
public static void extract(World world, int x, int y, int z){

	double posx = 0;
	double posz = 0;
	double velx = 0;
	double velz = 0;

	if(!world.isRemote){
		switch(world.getBlockMetadata(x, y, z)){
		case 0:
	{
		posx = x + 0.5;
		posz = z - 0.6;
		velz = -1;
		velx = 0;
	};
	break;
		case 1:
	{
		posx = x + 1.5;
		posz = z + 0.5;
		velx = 1;
		velz = 0;
	};
	break;
		case 2:
	{
		posx = x + 0.5;
		posz = z + 1.5;
		velz = 1;
		velx = 0;
	}
	break;
		case 3:
	{
		posx = x - 0.6;
		posz = z + 0.5;
		velx = -1;
		velz = 0;
	}
	break;
		}
	}

	ItemStack LightStack = new ItemStack(Items.ItemLightBall, 1);
	EntityItem LightItem = new EntityItem(world, posx,
			y + 0.5, posz, LightStack);
	LightItem.motionX = velx;
	LightItem.motionY = 0;
	LightItem.motionZ = velz;

	ItemStack DarkStack = new ItemStack(Items.ItemDarkBall, 1);
	EntityItem DarkItem = new EntityItem(world, posx,
			y + 0.5, posz, DarkStack);
	DarkItem.motionX = velx;
	DarkItem.motionY = 0;
	DarkItem.motionZ = velz;

	int ID = world.getBlockId(x, y + 1, z);	
	if(!world.isRemote){
	if(ID == IDRef.LIGHT_WOOD_ID){
		world.setBlockToAir(x, y + 1, z);
		world.spawnEntityInWorld(LightItem);
	}
	if(ID == IDRef.DARK_LEAF_ID){
		world.setBlockToAir(x, y + 1, z);
		world.spawnEntityInWorld(DarkItem);
	}
}
}

}

 

TileEntity:

public class TileEntityExtractor extends TileEntity{

public TileEntityExtractor(){
	animationOffset = System.nanoTime() % 400000;
	flag = true;
}

public long animationOffset;
public boolean flag;
}

 

 

 

 

By making the change to the offset in the same method, I knew it would make the change happen directly before the animation, and it worked!

 

Now the only problem I'm having is stopping it. :P I'd like for the sliders to gracefully slide back to 0 when it's turned off, and so far, I've only managed to make it instantly jump. :P

Posted

Keen, glad you got it to work!

 

Re graceful sliding back to zero - I suggest you could add a "shutdown animation" flag in addition to your existing"start animation flag", to make it complete the cycle that it's currently on then stop at zero.

 

You could do this by: In your pump method, add the line

 

  long numberOfCyclesSinceStart = (System.currentTimeMillis() + animationOffset) / CYCLE_TIME_IN_MS;

 

When your "stop animation flag" is triggered, calculate which cycle it's currently on, save it to the tileentity, and keep animating until you see numberOfCyclesSinceStart increase above the saved value (i.e. it is about to start the next pump cycle), then force "time" to zero and hold it there until the pump starts again.

 

Alternatively you could use your "shutdown animation" flag to choose a completely separate pump method for updating the animation.

 

-TGG

 

 

Posted

Ok, found a couple of problems here, unfortunately... for one, because the animation is handled by the renderer, pausing the game allows the animation code to continue, which is unwanted. Also, I'm still struggling trying to figure out how to smoothly stop the animation, even after your suggestions, TGG. As far as code goes, we'll just say it's the same (I've added a few lines here or there to try and figure out the stopping, but to no avail).

Posted

Hi

 

Stopping the animation while the game is paused is a bit trickier.  You would need to run your own "clock" to replace the System.currentTimeMillis(), by subscribing to onPreClientTick, checking Minecraft.isGamePaused, and updating your clock (20 times per second), then reading the value of this clock in your renderer.

 

To be honest that's moderately advanced stuff and probably not worth the effort?  Does it really matter if the animation keeps going while the game is paused?

 

Re the smooth animation- if you post what you tried we can give you some more guidance.

 

-TGG

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

    • Immersive Aircraft, Sophisticated Core, ModernFix, Tweaked (computercraft), Create Big Cannons, and Create are attempting to access the client classes, which do not exist on a server.
    • The mods were working just fine before, then I decided to install new mods and it was still working perfectly fine when I hopped off and tried to turn the server off, but then all of the sudden my PC encountered an issue and decided to forcefully restart itself. I didn't think much of it, but it wasn't until later on that I tried to open the server, then it started crashing. I took a look at the crash report and it was one of those "exception in server ticking loop," I've tried everything I could find from the internet, like deleting some of the .json and .toml files.   I have the crash report right here, can someone help me? It would be very much appreciated, thank you. https://pastebin.com/SmF9KS5r
    • Having a problem with 6 mods on a fairly small modpack, normally I would just remove them and go on with my day, but unfortunately they are quite important. I believe I removed every client side mod that was on the server before and that didn't fix it. I couldn't really think of anything else to try. Any help would be greatly appreciated, have a wonderful day!   Here's the crash report: https://paste.ee/p/MqzZC    
    • I've tried removing Entity Texture Features, Sodium, and Valkyrien Skies, none of that worked. Also tried removing the Xaero mods and that didnt work either. I don't know how to add files I'm sorry if I am doing this wrong   ---- Minecraft Crash Report ---- // Embeddium instance tainted by mods: [entity_texture_features, sodiumoptionsapi, valkyrienskies] // Please do not reach out for Embeddium support without removing these mods first. // ------- // You're mean. Time: 2024-11-30 18:39:37 Description: Rendering overlay java.lang.RuntimeException: One of more entry values did not copy to the correct id. Check log for details!     at net.minecraftforge.registries.ForgeRegistry.sync(ForgeRegistry.java:625) ~[forge-1.20.1-47.3.0-universal.jar%23739!/:?] {re:classloading}     at net.minecraftforge.registries.GameData.loadRegistry(GameData.java:571) ~[forge-1.20.1-47.3.0-universal.jar%23739!/:?] {re:classloading}     at net.minecraftforge.registries.GameData.freezeData(GameData.java:250) ~[forge-1.20.1-47.3.0-universal.jar%23739!/:?] {re:classloading}     at net.minecraftforge.common.ForgeStatesProvider.lambda$new$5(ForgeStatesProvider.java:26) ~[forge-1.20.1-47.3.0-universal.jar%23739!/:?] {re:classloading}     at net.minecraftforge.fml.ModLoader.handleInlineTransition(ModLoader.java:217) ~[fmlcore-1.20.1-47.3.0.jar%23735!/:?] {re:mixin}     at net.minecraftforge.fml.ModLoader.lambda$dispatchAndHandleError$19(ModLoader.java:209) ~[fmlcore-1.20.1-47.3.0.jar%23735!/:?] {re:mixin}     at java.util.Optional.ifPresent(Optional.java:178) ~[?:?] {re:mixin}     at net.minecraftforge.fml.ModLoader.dispatchAndHandleError(ModLoader.java:209) ~[fmlcore-1.20.1-47.3.0.jar%23735!/:?] {re:mixin}     at net.minecraftforge.fml.ModLoader.lambda$finishMods$17(ModLoader.java:197) ~[fmlcore-1.20.1-47.3.0.jar%23735!/:?] {re:mixin}     at java.lang.Iterable.forEach(Iterable.java:75) ~[?:?] {re:mixin}     at net.minecraftforge.fml.ModLoader.finishMods(ModLoader.java:197) ~[fmlcore-1.20.1-47.3.0.jar%23735!/:?] {re:mixin}     at net.minecraftforge.client.loading.ClientModLoader.lambda$finishModLoading$6(ClientModLoader.java:102) ~[forge-1.20.1-47.3.0-universal.jar%23739!/:?] {re:classloading,pl:runtimedistcleaner:A}     at net.minecraftforge.client.loading.ClientModLoader.lambda$createRunnableWithCatch$4(ClientModLoader.java:89) ~[forge-1.20.1-47.3.0-universal.jar%23739!/:?] {re:classloading,pl:runtimedistcleaner:A}     at net.minecraftforge.client.loading.ClientModLoader.finishModLoading(ClientModLoader.java:102) ~[forge-1.20.1-47.3.0-universal.jar%23739!/:?] {re:classloading,pl:runtimedistcleaner:A}     at net.minecraftforge.client.loading.ClientModLoader.lambda$onResourceReload$3(ClientModLoader.java:82) ~[forge-1.20.1-47.3.0-universal.jar%23739!/:?] {re:classloading,pl:runtimedistcleaner:A}     at java.util.concurrent.CompletableFuture$UniRun.tryFire(CompletableFuture.java:787) ~[?:?] {}     at java.util.concurrent.CompletableFuture$Completion.exec(CompletableFuture.java:483) ~[?:?] {}     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:computing_frames}     at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622) ~[?:?] {re:computing_frames}     at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165) ~[?:?] {} A detailed walkthrough of the error, its code path and all known details is as follows: --------------------------------------------------------------------------------------- -- Head -- Thread: Render thread Suspected Mods: NONE Stacktrace:     at net.minecraftforge.registries.ForgeRegistry.sync(ForgeRegistry.java:625) ~[forge-1.20.1-47.3.0-universal.jar%23739!/:?] {re:classloading}     at net.minecraftforge.registries.GameData.loadRegistry(GameData.java:571) ~[forge-1.20.1-47.3.0-universal.jar%23739!/:?] {re:classloading}     at net.minecraftforge.registries.GameData.freezeData(GameData.java:250) ~[forge-1.20.1-47.3.0-universal.jar%23739!/:?] {re:classloading} -- Overlay render details -- Details:     Overlay name: net.minecraftforge.client.loading.ForgeLoadingOverlay Stacktrace:     at net.minecraft.client.renderer.GameRenderer.m_109093_(GameRenderer.java:957) ~[client-1.20.1-20230612.114412-srg.jar%23734!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:A,pl:runtimedistcleaner:A}     at net.minecraft.client.Minecraft.m_91383_(Minecraft.java:1146) ~[client-1.20.1-20230612.114412-srg.jar%23734!/:?] {re:mixin,pl:accesstransformer:B,xf:fml:xaeroworldmap:xaero_wm_minecraft_runtick,xf:fml:xaeroworldmap:xaero_wm_minecraft_runtick_render_call,xf:fml:xaerominimap:xaero_minecraftclient,xf:fml:xaeroworldmap:xaero_wm_minecraftclient,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,xf:fml:xaeroworldmap:xaero_wm_minecraft_runtick,xf:fml:xaeroworldmap:xaero_wm_minecraft_runtick_render_call,xf:fml:xaerominimap:xaero_minecraftclient,xf:fml:xaeroworldmap:xaero_wm_minecraftclient,pl:mixin:A,pl:runtimedistcleaner:A}     at net.minecraft.client.Minecraft.m_91374_(Minecraft.java:718) ~[client-1.20.1-20230612.114412-srg.jar%23734!/:?] {re:mixin,pl:accesstransformer:B,xf:fml:xaeroworldmap:xaero_wm_minecraft_runtick,xf:fml:xaeroworldmap:xaero_wm_minecraft_runtick_render_call,xf:fml:xaerominimap:xaero_minecraftclient,xf:fml:xaeroworldmap:xaero_wm_minecraftclient,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,xf:fml:xaeroworldmap:xaero_wm_minecraft_runtick,xf:fml:xaeroworldmap:xaero_wm_minecraft_runtick_render_call,xf:fml:xaerominimap:xaero_minecraftclient,xf:fml:xaeroworldmap:xaero_wm_minecraftclient,pl:mixin:A,pl:runtimedistcleaner:A}     at net.minecraft.client.main.Main.main(Main.java:218) ~[forge-47.3.0.jar:?] {re:classloading,pl:runtimedistcleaner:A}     at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?] {}     at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?] {}     at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?] {}     at java.lang.reflect.Method.invoke(Method.java:568) ~[?:?] {}     at net.minecraftforge.fml.loading.targets.CommonLaunchHandler.runTarget(CommonLaunchHandler.java:111) ~[fmlloader-1.20.1-47.3.0.jar:?] {}     at net.minecraftforge.fml.loading.targets.CommonLaunchHandler.clientService(CommonLaunchHandler.java:99) ~[fmlloader-1.20.1-47.3.0.jar:?] {}     at net.minecraftforge.fml.loading.targets.CommonClientLaunchHandler.lambda$makeService$0(CommonClientLaunchHandler.java:25) ~[fmlloader-1.20.1-47.3.0.jar:?] {}     at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:30) ~[modlauncher-10.0.9.jar:?] {}     at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:53) ~[modlauncher-10.0.9.jar:?] {}     at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:71) ~[modlauncher-10.0.9.jar:?] {}     at cpw.mods.modlauncher.Launcher.run(Launcher.java:108) ~[modlauncher-10.0.9.jar:?] {}     at cpw.mods.modlauncher.Launcher.main(Launcher.java:78) ~[modlauncher-10.0.9.jar:?] {}     at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:26) ~[modlauncher-10.0.9.jar:?] {}     at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:23) ~[modlauncher-10.0.9.jar:?] {}     at cpw.mods.bootstraplauncher.BootstrapLauncher.main(BootstrapLauncher.java:141) ~[bootstraplauncher-1.1.2.jar:?] {} -- Last reload -- Details:     Reload number: 1     Reload reason: initial     Finished: No     Packs: vanilla, mod_resources, builtin/towntalk, Moonlight Mods Dynamic Assets -- System Details -- Details:     Minecraft Version: 1.20.1     Minecraft Version ID: 1.20.1     Operating System: Windows 11 (amd64) version 10.0     Java Version: 17.0.8, Microsoft     Java VM Version: OpenJDK 64-Bit Server VM (mixed mode), Microsoft     Memory: 2647858816 bytes (2525 MiB) / 8522825728 bytes (8128 MiB) up to 21508390912 bytes (20512 MiB)     CPUs: 12     Processor Vendor: AuthenticAMD     Processor Name: AMD Ryzen 5 5600X3D 6-Core Processor                Identifier: AuthenticAMD Family 25 Model 33 Stepping 2     Microarchitecture: Zen 3     Frequency (GHz): 3.29     Number of physical packages: 1     Number of physical CPUs: 6     Number of logical CPUs: 12     Graphics card #0 name: NVIDIA GeForce RTX 4060 Ti     Graphics card #0 vendor: NVIDIA (0x10de)     Graphics card #0 VRAM (MB): 4095.00     Graphics card #0 deviceId: 0x2803     Graphics card #0 versionInfo: DriverVersion=32.0.15.6109     Memory slot #0 capacity (MB): 16384.00     Memory slot #0 clockSpeed (GHz): 2.67     Memory slot #0 type: DDR4     Memory slot #1 capacity (MB): 16384.00     Memory slot #1 clockSpeed (GHz): 2.67     Memory slot #1 type: DDR4     Virtual memory max (MB): 34696.73     Virtual memory used (MB): 22514.95     Swap memory total (MB): 2048.00     Swap memory used (MB): 0.00     JVM Flags: 4 total; -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump -Xss1M -Xmx20512m -Xms256m     Launched Version: forge-47.3.0     Backend library: LWJGL version 3.3.1 build 7     Backend API: NVIDIA GeForce RTX 4060 Ti/PCIe/SSE2 GL version 4.6.0 NVIDIA 561.09, NVIDIA Corporation     Window size: 1024x768     GL Caps: Using framebuffer using OpenGL 3.2     GL debug messages:      Using VBOs: Yes     Is Modded: Definitely; Client brand changed to 'forge'     Type: Client (map_client.txt)     Graphics mode: fancy     Resource Packs:      Current Language: en_us     CPU: 12x AMD Ryzen 5 5600X3D 6-Core Processor      ModLauncher: 10.0.9+10.0.9+main.dcd20f30     ModLauncher launch target: forgeclient     ModLauncher naming: srg     ModLauncher services:          mixin-0.8.5.jar mixin PLUGINSERVICE          eventbus-6.0.5.jar eventbus PLUGINSERVICE          fmlloader-1.20.1-47.3.0.jar slf4jfixer PLUGINSERVICE          fmlloader-1.20.1-47.3.0.jar object_holder_definalize PLUGINSERVICE          fmlloader-1.20.1-47.3.0.jar runtime_enum_extender PLUGINSERVICE          fmlloader-1.20.1-47.3.0.jar capability_token_subclass PLUGINSERVICE          accesstransformers-8.0.4.jar accesstransformer PLUGINSERVICE          fmlloader-1.20.1-47.3.0.jar runtimedistcleaner PLUGINSERVICE          modlauncher-10.0.9.jar mixin TRANSFORMATIONSERVICE          modlauncher-10.0.9.jar fml TRANSFORMATIONSERVICE      FML Language Providers:          [email protected]         [email protected]         javafml@null         lowcodefml@null     Mod List:          tetra_tables--mc1.20--1.2.jar                     |Tetra tables looking neat     |tetra_tables                  |1.2                 |DONE      |Manifest: NOSIGNATURE         quarkstructures-1.0.0-1.20.1.jar                  |Quark Structures              |quarkstructures               |1.0.0-1.20.1        |DONE      |Manifest: NOSIGNATURE         YungsBetterDungeons-1.20-Forge-4.0.4.jar          |YUNG's Better Dungeons        |betterdungeons                |1.20-Forge-4.0.4    |DONE      |Manifest: NOSIGNATURE         farmers-cutting-quark-1.0.0.jar                   |Farmer's Cutting: Quark       |fcquark                       |1.0.0               |DONE      |Manifest: NOSIGNATURE         additionalentityattributes-forge-1.4.0.5+1.20.1.ja|Additional Entity Attributes  |additionalentityattributes    |1.4.0.5+1.20.1      |DONE      |Manifest: NOSIGNATURE         botarium-forge-1.20.1-2.3.4.jar                   |Botarium                      |botarium                      |2.3.4               |DONE      |Manifest: NOSIGNATURE         mcw-windows-2.3.0-mc1.20.1forge.jar               |Macaw's Windows               |mcwwindows                    |2.3.0               |DONE      |Manifest: NOSIGNATURE         apoli-forge-1.20.1-2.9.0.8.jar                    |Apoli                         |apoli                         |1.20.1-2.9.0.8      |DONE      |Manifest: NOSIGNATURE         cavernousdelight-1.1.0.jar                        |Cavernous Delight             |cavernousdelight              |1.1.0               |DONE      |Manifest: NOSIGNATURE         AutochefsDelight-1.20.1-Forge-1.0.5.jar           |Autochef's Delight            |autochefsdelight              |1.0.5+forge         |DONE      |Manifest: NOSIGNATURE         additional_attributes-1.20.1-1.2.1-all.jar        |Additional Attributes         |additional_attributes         |1.2.1               |DONE      |Manifest: NOSIGNATURE         YungsApi-1.20-Forge-4.0.6.jar                     |YUNG's API                    |yungsapi                      |1.20-Forge-4.0.6    |DONE      |Manifest: NOSIGNATURE         farmers-cutting-biomes-o-plenty-1.0.0.jar         |Farmer's Cutting: Biomes O' Pl|fcbop                         |1.0.0               |DONE      |Manifest: NOSIGNATURE         balm-forge-1.20.1-7.3.9-all.jar                   |Balm                          |balm                          |7.3.9               |DONE      |Manifest: NOSIGNATURE         JustEnoughResources-1.20.1-1.4.0.247.jar          |Just Enough Resources         |jeresources                   |1.4.0.247           |DONE      |Manifest: NOSIGNATURE         chat_heads-0.13.7-forge-1.20.jar                  |Chat Heads                    |chat_heads                    |0.13.7              |DONE      |Manifest: NOSIGNATURE         YungsBetterNetherFortresses-1.20-Forge-2.0.6.jar  |YUNG's Better Nether Fortresse|betterfortresses              |1.20-Forge-2.0.6    |DONE      |Manifest: NOSIGNATURE         cloth-config-11.1.136-forge.jar                   |Cloth Config v10 API          |cloth_config                  |11.1.136            |DONE      |Manifest: NOSIGNATURE         sound-physics-remastered-forge-1.20.1-1.4.5.jar   |Sound Physics Remastered      |sound_physics_remastered      |1.20.1-1.4.5        |DONE      |Manifest: NOSIGNATURE         cavebiomesdelight-1.0.2-1.20.1.jar                |Yung's Cave Biomes Delight    |cavebiomesdelight             |1.0.2-1.20.1        |DONE      |Manifest: NOSIGNATURE         deeperdarkerdelight-1.1.1-1.20.1.jar              |Deeper Darker Delight         |deeperdarkerdelight           |1.1.1-1.20.1        |DONE      |Manifest: NOSIGNATURE         embeddium-0.3.31+mc1.20.1.jar                     |Embeddium                     |embeddium                     |0.3.31+mc1.20.1     |DONE      |Manifest: NOSIGNATURE         structure_gel-1.20.1-2.16.2.jar                   |Structure Gel API             |structure_gel                 |2.16.2              |DONE      |Manifest: NOSIGNATURE         xaeros_waystones_compability-1.0.jar              |Xaero's Map - Waystones Compab|w2w2                          |1.0                 |DONE      |Manifest: NOSIGNATURE         vintagedelight-0.1.6.jar                          |Vintage Delight               |vintagedelight                |0.1.6               |DONE      |Manifest: NOSIGNATURE         handcrafted-forge-1.20.1-3.0.6.jar                |Handcrafted                   |handcrafted                   |3.0.6               |DONE      |Manifest: NOSIGNATURE         Farmers Friend 1.1 - 1.20.1.jar                   |Farmer's Friend               |farmers_friend                |1.0.0               |DONE      |Manifest: NOSIGNATURE         adastradelight-1.1.0-1.20.1.jar                   |Ad Astra Delight              |adastradelight                |1.1.0-1.20.1        |DONE      |Manifest: NOSIGNATURE         WaystonesTeleportPets-1.20-1.20.1--1.2.jar        |Waystones Teleport Pets       |w2pets                        |1.0                 |DONE      |Manifest: NOSIGNATURE         StructureCompass-1.20.1-2.1.0.jar                 |Structure Compass Mod         |structurecompass              |2.1.0               |DONE      |Manifest: NOSIGNATURE         mcw-trapdoors-1.1.3-mc1.20.1forge.jar             |Macaw's Trapdoors             |mcwtrpdoors                   |1.1.3               |DONE      |Manifest: NOSIGNATURE         YungsBridges-1.20-Forge-4.0.3.jar                 |YUNG's Bridges                |yungsbridges                  |1.20-Forge-4.0.3    |DONE      |Manifest: NOSIGNATURE         resourcefulconfig-forge-1.20.1-2.1.2.jar          |Resourcefulconfig             |resourcefulconfig             |2.1.2               |DONE      |Manifest: NOSIGNATURE         doggychunks-1.20.1-1.0.jar                        |Doggy Chunks                  |doggychunks                   |1.20.1-1.0          |DONE      |Manifest: NOSIGNATURE         alexsmobsinteraction-4.3-all.jar                  |Alexs Mobs Interaction        |alexsmobsinteraction          |4.3                 |DONE      |Manifest: NOSIGNATURE         curios-forge-5.11.0+1.20.1.jar                    |Curios API                    |curios                        |5.11.0+1.20.1       |DONE      |Manifest: NOSIGNATURE         origins-forge-1.20.1-1.10.0.9-all.jar             |Origins                       |origins                       |1.20.1-1.10.0.9     |DONE      |Manifest: NOSIGNATURE         right-click-harvest-3.2.3+1.20.1-forge.jar        |Right Click Harvest           |rightclickharvest             |3.2.3+1.20.1-forge  |DONE      |Manifest: NOSIGNATURE         Searchables-forge-1.20.1-1.0.3.jar                |Searchables                   |searchables                   |1.0.3               |DONE      |Manifest: NOSIGNATURE         YungsExtras-1.20-Forge-4.0.3.jar                  |YUNG's Extras                 |yungsextras                   |1.20-Forge-4.0.3    |DONE      |Manifest: NOSIGNATURE         Butchersdelight Foods beta 1.20.1 1.0.3.jar       |ButchersDelightfoods          |butchersdelightfoods          |1.20.11.0.3         |DONE      |Manifest: NOSIGNATURE         Icarus-NeoForge-2.10.0.jar                        |Icarus                        |icarus                        |2.10.0              |DONE      |Manifest: NOSIGNATURE         cumulus_menus-1.20.1-1.0.1-neoforge.jar           |Cumulus                       |cumulus_menus                 |1.20.1-1.0.1-neoforg|DONE      |Manifest: NOSIGNATURE         Butchersdelight beta 1.20.1 2.1.0.jar             |ButchersDelight               |butchersdelight               |1.20.12.1.0         |DONE      |Manifest: NOSIGNATURE         mcw-roofs-2.3.1-mc1.20.1forge.jar                 |Macaw's Roofs                 |mcwroofs                      |2.3.1               |DONE      |Manifest: NOSIGNATURE         emiffect-forge-1.1.2+mc1.20.1.jar                 |EMIffect                      |emiffect                      |1.1.2+mc1.20.1      |DONE      |Manifest: NOSIGNATURE         betterwithminecolonies-1.20-1.19.19.jar           |Better With Minecolonies      |betterwithminecolonies        |1.20-1.19.19        |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         nitrogen_internals-1.20.1-1.0.11-neoforge.jar     |Nitrogen                      |nitrogen_internals            |1.20.1-1.0.11-neofor|DONE      |Manifest: NOSIGNATURE         JadeAddons-1.20.1-Forge-5.3.1.jar                 |Jade Addons                   |jadeaddons                    |5.3.1+forge         |DONE      |Manifest: NOSIGNATURE         l2library-2.4.25-slim.jar                         |L2 Library                    |l2library                     |2.4.25              |DONE      |Manifest: NOSIGNATURE         toms_storage-1.20-1.6.8.jar                       |Tom's Simple Storage Mod      |toms_storage                  |1.6.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         DynamicTrees-1.20.1-1.3.5.jar                     |Dynamic Trees                 |dynamictrees                  |1.20.1-1.3.5        |DONE      |Manifest: NOSIGNATURE         DynamicTreesPlus-1.20.1-1.2.0-BETA3.jar           |Dynamic Trees Plus            |dynamictreesplus              |1.20.1-1.2.0-BETA3  |DONE      |Manifest: NOSIGNATURE         YungsBetterJungleTemples-1.20-Forge-2.0.5.jar     |YUNG's Better Jungle Temples  |betterjungletemples           |1.20-Forge-2.0.5    |DONE      |Manifest: NOSIGNATURE         Better_Dogs_X_Doggy_Talents_Next_v1.2.2 [Forge] - |Better Dogs For DTN           |betterdogs_dtn                |1.2.2               |DONE      |Manifest: NOSIGNATURE         SmartBrainLib-forge-1.20.1-1.15.jar               |SmartBrainLib                 |smartbrainlib                 |1.15                |DONE      |Manifest: NOSIGNATURE         QuarkOddities-1.20.1.jar                          |Quark Oddities                |quarkoddities                 |1.20.1              |DONE      |Manifest: NOSIGNATURE         TipsyLib-forge-1.20.1-2.0.9.jar                   |TipsyLib                      |tipsylib                      |2.0.9               |DONE      |Manifest: NOSIGNATURE         JustEnoughAdvancements-1.20.1-5.0.1.jar           |Just Enough Advancements      |jea                           |1.20.1-5.0.1        |DONE      |Manifest: NOSIGNATURE         Pehkui-3.8.2+1.20.1-forge.jar                     |Pehkui                        |pehkui                        |3.8.2+1.20.1-forge  |DONE      |Manifest: NOSIGNATURE         friendsfoesdelight-1.0.1-1.20.1.jar               |Friends&Foes Delight          |friendsfoesdelight            |1.0.1-1.20.1        |DONE      |Manifest: NOSIGNATURE         caelus-forge-3.2.0+1.20.1.jar                     |Caelus API                    |caelus                        |3.2.0+1.20.1        |DONE      |Manifest: NOSIGNATURE         alexscavesdelight-1.0.22-1.20.1.jar               |Alex's Caves Delight          |alexscavesdelight             |1.0.22-1.20.1       |DONE      |Manifest: NOSIGNATURE         artifactsdelight-1.0.1.1-1.20.1.jar               |Artifacts Delight             |artifactsdelight              |1.0.1.1-1.20.1      |DONE      |Manifest: NOSIGNATURE         NaturesCompass-1.20.1-1.11.2-forge.jar            |Nature's Compass              |naturescompass                |1.20.1-1.11.2-forge |DONE      |Manifest: NOSIGNATURE         EpheroLib-1.20.1-FORGE-1.2.0.jar                  |BOZOID                        |epherolib                     |0.1.2               |DONE      |Manifest: NOSIGNATURE         untamedwilds-1.20.1-4.0.4.jar                     |Untamed Wilds                 |untamedwilds                  |4.0.4               |DONE      |Manifest: NOSIGNATURE         smarterfarmers-1.20-2.1.0.jar                     |Smarter Farmers               |smarterfarmers                |1.20-2.1.0          |DONE      |Manifest: NOSIGNATURE         LibX-1.20.1-5.0.12.jar                            |LibX                          |libx                          |1.20.1-5.0.12       |DONE      |Manifest: NOSIGNATURE         GlitchCore-forge-1.20.1-0.0.1.1.jar               |GlitchCore                    |glitchcore                    |0.0.1.1             |DONE      |Manifest: NOSIGNATURE         SereneSeasons-forge-1.20.1-9.1.0.0.jar            |Serene Seasons                |sereneseasons                 |9.1.0.0             |DONE      |Manifest: NOSIGNATURE         fusion-1.1.1-forge-mc1.20.1.jar                   |Fusion                        |fusion                        |1.1.1               |DONE      |Manifest: NOSIGNATURE         cratedelight-24.11.29-1.20-forge.jar              |Crate Delight                 |cratedelight                  |24.11.29-1.20-forge |DONE      |Manifest: NOSIGNATURE         CraftTweaker-forge-1.20.1-14.0.44.jar             |CraftTweaker                  |crafttweaker                  |14.0.44             |DONE      |Manifest: NOSIGNATURE         aether_delight_1.0.0_forge_1.20.1.jar             |Aether Delight                |aetherdelight                 |1.0.0               |DONE      |Manifest: NOSIGNATURE         blueskiesdelight-1.0.3.2-1.20.1.jar               |Blue Skies Delight            |blueskiesdelight              |1.0.3.2-1.20.1      |DONE      |Manifest: NOSIGNATURE         client-1.20.1-20230612.114412-srg.jar             |Minecraft                     |minecraft                     |1.20.1              |DONE      |Manifest: a1:d4:5e:04:4f:d3:d6:e0:7b:37:97:cf:77:b0:de:ad:4a:47:ce:8c:96:49:5f:0a:cf:8c:ae:b2:6d:4b:8a:3f         emi-1.1.18+1.20.1+forge.jar                       |EMI                           |emi                           |1.1.18+1.20.1+forge |DONE      |Manifest: NOSIGNATURE         jei-1.20.1-forge-15.20.0.105.jar                  |Just Enough Items             |jei                           |15.20.0.105         |DONE      |Manifest: NOSIGNATURE         ecologicsdelight-1.0.3-1.20.1.jar                 |Ecologics Delight             |ecologicsdelight              |1.0.3-1.20.1        |DONE      |Manifest: NOSIGNATURE         fabric-api-base-0.4.31+ef105b4977.jar             |Fabric API Base               |fabric_api_base               |0.4.31+ef105b4977   |DONE      |Manifest: NOSIGNATURE         MouseTweaks-forge-mc1.20.1-2.25.1.jar             |Mouse Tweaks                  |mousetweaks                   |2.25.1              |DONE      |Manifest: NOSIGNATURE         NoChatReports-FORGE-1.20.1-v2.2.2.jar             |No Chat Reports               |nochatreports                 |1.20.1-v2.2.2       |DONE      |Manifest: NOSIGNATURE         delightfulburgers-1.20.1.jar                      |Delightful Burgers            |delightfulburgers             |1.20.1              |DONE      |Manifest: NOSIGNATURE         quarkartifacts-1.0.1-1.20.1.jar                   |Quark Artifacts               |quarkartifacts                |1.0.1-1.20.1        |DONE      |Manifest: NOSIGNATURE         justenoughbreeding-forge-1.20.x-1.4.1.jar         |Just Enough Breeding          |justenoughbreeding            |1.4.1               |DONE      |Manifest: NOSIGNATURE         Oh-The-Trees-Youll-Grow-forge-1.20.1-1.3.1.jar    |Oh The Trees You'll Grow      |ohthetreesyoullgrow           |1.20.1-1.3.1        |DONE      |Manifest: NOSIGNATURE         spectrelib-forge-0.13.15+1.20.1.jar               |SpectreLib                    |spectrelib                    |0.13.15+1.20.1      |DONE      |Manifest: NOSIGNATURE         Corgilib-Forge-1.20.1-4.0.3.2.jar                 |CorgiLib                      |corgilib                      |4.0.3.2             |DONE      |Manifest: NOSIGNATURE         domum_ornamentum-1.20.1-1.0.186-RELEASE-universal.|Domum Ornamentum              |domum_ornamentum              |1.20.1-1.0.186-RELEA|DONE      |Manifest: NOSIGNATURE         calio-forge-1.20.1-1.11.0.5.jar                   |Calio                         |calio                         |1.20.1-1.11.0.5     |DONE      |Manifest: NOSIGNATURE         kffmod-4.11.0.jar                                 |Kotlin For Forge              |kotlinforforge                |4.11.0              |DONE      |Manifest: NOSIGNATURE         quarktrade-1.0.0-1.20.1.jar                       |Quark Trade                   |quarktrade                    |1.0.0-1.20.1        |DONE      |Manifest: NOSIGNATURE         farmersrespite-1.20.1-2.1.2.jar                   |Farmer's Respite              |farmersrespite                |1.20.1-2.1          |DONE      |Manifest: NOSIGNATURE         ecologics-forge-1.20.1-2.2.0.jar                  |Ecologics                     |ecologics                     |2.2.0               |DONE      |Manifest: NOSIGNATURE         Xaeros_Minimap_24.6.1_Forge_1.20.jar              |Xaero's Minimap               |xaerominimap                  |24.6.1              |DONE      |Manifest: NOSIGNATURE         decoration-delight-1.20.1.jar                     |Decoration Delight            |decoration_delight            |1.0.0               |DONE      |Manifest: NOSIGNATURE         Croptopia-1.20.1-FORGE-3.0.4.jar                  |Croptopia                     |croptopia                     |3.0.4               |DONE      |Manifest: NOSIGNATURE         polymorph-forge-0.49.5+1.20.1.jar                 |Polymorph                     |polymorph                     |0.49.5+1.20.1       |DONE      |Manifest: NOSIGNATURE         JustEnoughProfessions-forge-1.20.1-3.0.1.jar      |Just Enough Professions (JEP) |justenoughprofessions         |3.0.1               |DONE      |Manifest: NOSIGNATURE         structurize-1.20.1-1.0.760-snapshot.jar           |Structurize                   |structurize                   |1.20.1-1.0.760-snaps|DONE      |Manifest: NOSIGNATURE         supplementariesquarkcompat-1.0.1-1.20.1.jar       |Supplementaries x Quark Compat|supplementariesquarkcompat    |1.0.1-1.20.1        |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         lootr-forge-1.20-0.7.34.89.jar                    |Lootr                         |lootr                         |0.7.34.87           |DONE      |Manifest: NOSIGNATURE         occultism-1.20.1-1.140.2.jar                      |Occultism                     |occultism                     |1.140.2             |DONE      |Manifest: NOSIGNATURE         valkyrienskies-120-2.3.0-beta.5.jar               |Valkyrien Skies 2             |valkyrienskies                |2.3.0-beta.5        |DONE      |Manifest: NOSIGNATURE         cosmeticarmorreworked-1.20.1-v1a.jar              |CosmeticArmorReworked         |cosmeticarmorreworked         |1.20.1-v1a          |DONE      |Manifest: 5e:ed:25:99:e4:44:14:c0:dd:89:c1:a9:4c:10:b5:0d:e4:b1:52:50:45:82:13:d8:d0:32:89:67:56:57:01:53         fruitsdelight-1.0.13.jar                          |Fruits Delight                |fruitsdelight                 |1.0.13              |DONE      |Manifest: NOSIGNATURE         letsdo-addon-structures-1.7.1.jar                 |Let's Do Addon: Structures    |letsdoaddonstructures         |1.7.1               |DONE      |Manifest: NOSIGNATURE         cristellib-1.1.6-forge.jar                        |Cristel Lib                   |cristellib                    |1.1.6               |DONE      |Manifest: NOSIGNATURE         ad_astra-forge-1.20.1-1.15.19.jar                 |Ad Astra                      |ad_astra                      |1.15.19             |DONE      |Manifest: NOSIGNATURE         tetra-1.20.1-6.6.0.jar                            |tetra                         |tetra                         |6.6.0               |DONE      |Manifest: NOSIGNATURE         tetranomicon-1.5.3-1.20.1.jar                     |Tetranomicon                  |tetranomicon                  |1.5.3-1.20.1        |DONE      |Manifest: NOSIGNATURE         kuma-api-forge-20.1.8+1.20.1.jar                  |KumaAPI                       |kuma_api                      |20.1.8              |DONE      |Manifest: NOSIGNATURE         blue_skies-1.20.1-1.3.31.jar                      |Blue Skies                    |blue_skies                    |1.3.31              |DONE      |Manifest: NOSIGNATURE         dimasctetracompat-1.20.1-1.4.0.1.jar              |Dimensional Ascension Tetra Co|dimasctetracompat             |1.20.1-1.4.0.1      |DONE      |Manifest: NOSIGNATURE         YungsBetterWitchHuts-1.20-Forge-3.0.3.jar         |YUNG's Better Witch Huts      |betterwitchhuts               |1.20-Forge-3.0.3    |DONE      |Manifest: NOSIGNATURE         netherportalfix-forge-1.20-13.0.1.jar             |NetherPortalFix               |netherportalfix               |13.0.1              |DONE      |Manifest: NOSIGNATURE         farmers-cutting-twilight-forest-1.20.1-1.0.jar    |Farmer's Cutting: Twilight For|mr_farmers_cuttingtwilightfore|1.20.1-1.0          |DONE      |Manifest: NOSIGNATURE         geckolib-forge-1.20.1-4.4.9.jar                   |GeckoLib 4                    |geckolib                      |4.4.9               |DONE      |Manifest: NOSIGNATURE         DynamicTreesEcologics-1.20.1-1.1.0.jar            |Dynamic Trees for Ecologics   |dtecologics                   |1.20.1-1.1.0        |DONE      |Manifest: NOSIGNATURE         aether-1.20.1-1.5.1-neoforge.jar                  |The Aether                    |aether                        |1.20.1-1.5.1-neoforg|DONE      |Manifest: NOSIGNATURE         towntalk-1.20.1-1.1.0.jar                         |TownTalk                      |towntalk                      |1.1.0               |DONE      |Manifest: NOSIGNATURE         ingredientsdelight-1.0.2.1-1.20.1.jar             |Ingredients Delight           |ingredientsdelight            |1.0.2.1-1.20.1      |DONE      |Manifest: NOSIGNATURE         naturalist-forge-4.0.3-1.20.1.jar                 |Naturalist                    |naturalist                    |4.0.3               |DONE      |Manifest: NOSIGNATURE         incontrol-1.20-9.2.11.jar                         |InControl                     |incontrol                     |1.20-9.2.11         |DONE      |Manifest: NOSIGNATURE         DoggyTalentsNext-1.20.1-1.18.37.jar               |Doggy Talents Next            |doggytalents                  |1.18.37             |DONE      |Manifest: NOSIGNATURE         YungsBetterOceanMonuments-1.20-Forge-3.0.4.jar    |YUNG's Better Ocean Monuments |betteroceanmonuments          |1.20-Forge-3.0.4    |DONE      |Manifest: NOSIGNATURE         biomesoplentydelight-1.0.2.1-1.20.1.jar           |Biomes O'Plenty Delight       |biomesoplentydelight          |1.0.2.1-1.20.1      |DONE      |Manifest: NOSIGNATURE         sophisticatedcore-1.20.1-0.7.11.799.jar           |Sophisticated Core            |sophisticatedcore             |0.7.11.799          |DONE      |Manifest: NOSIGNATURE         eureka-1201-1.5.1-beta.3.jar                      |VS Eureka Mod                 |vs_eureka                     |1.5.1-beta.3        |DONE      |Manifest: NOSIGNATURE         mcwfurnituresbop-1.20-1.2.jar                     |Macaw's Furnitures - BOP      |mcwfurnituresbop              |1.20-1.2            |DONE      |Manifest: NOSIGNATURE         mcw-furniture-3.3.0-mc1.20.1forge.jar             |Macaw's Furniture             |mcwfurnitures                 |3.3.0               |DONE      |Manifest: NOSIGNATURE         TerraBlender-forge-1.20.1-3.0.1.7.jar             |TerraBlender                  |terrablender                  |3.0.1.7             |DONE      |Manifest: NOSIGNATURE         BiomesOPlenty-forge-1.20.1-19.0.0.91.jar          |Biomes O' Plenty              |biomesoplenty                 |19.0.0.91           |DONE      |Manifest: NOSIGNATURE         DynamicTreesBOP-1.20.1-3.3.1.jar                  |Dynamic Trees for Biomes o' Pl|dtbop                         |1.20.1-3.3.1        |DONE      |Manifest: NOSIGNATURE         XaerosWorldMap_1.39.0_Forge_1.20.jar              |Xaero's World Map             |xaeroworldmap                 |1.39.0              |DONE      |Manifest: NOSIGNATURE         JRFTL-1.20.1-1.6.0.jar                            |JRFTL                         |jrftl                         |1.6.0               |DONE      |Manifest: NOSIGNATURE         Controlling-forge-1.20.1-12.0.2.jar               |Controlling                   |controlling                   |12.0.2              |DONE      |Manifest: NOSIGNATURE         Placebo-1.20.1-8.6.2.jar                          |Placebo                       |placebo                       |8.6.2               |DONE      |Manifest: NOSIGNATURE         citadel-2.6.0-1.20.1.jar                          |Citadel                       |citadel                       |2.6.0               |DONE      |Manifest: NOSIGNATURE         alexsmobs-1.22.9.jar                              |Alex's Mobs                   |alexsmobs                     |1.22.9              |DONE      |Manifest: NOSIGNATURE         Rats-1.20.1-8.1.3.jar                             |Rats                          |rats                          |1.20.1-8.1.3        |DONE      |Manifest: NOSIGNATURE         forge-1.20.1-47.3.0-universal.jar                 |Forge                         |forge                         |47.3.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         Zeta-1.0-24.jar                                   |Zeta                          |zeta                          |1.0-24              |DONE      |Manifest: NOSIGNATURE         appleskin-forge-mc1.20.1-2.5.1.jar                |AppleSkin                     |appleskin                     |2.5.1+mc1.20.1      |DONE      |Manifest: NOSIGNATURE         lootintegrations-1.20.1-3.7.jar                   |Lootintegrations mod          |lootintegrations              |1.20.1-3.7          |DONE      |Manifest: NOSIGNATURE         mixinextras-forge-0.4.1.jar                       |MixinExtras                   |mixinextras                   |0.4.1               |DONE      |Manifest: NOSIGNATURE         emitrades-forge-1.2.1+mc1.20.1.jar                |EMI Trades                    |emitrades                     |1.2.1+mc1.20.1      |DONE      |Manifest: NOSIGNATURE         cobweb-forge-1.20.1-1.0.0.jar                     |Cobweb                        |cobweb                        |1.0.0               |DONE      |Manifest: NOSIGNATURE         soul-fire-d-forge-1.20.1-4.0.6.jar                |Soul Fire'd                   |soul_fire_d                   |4.0.6               |DONE      |Manifest: NOSIGNATURE         storagedelight-24.09.11-1.20-forge.jar            |Storage Delight               |storagedelight                |24.09.11-1.20-forge |DONE      |Manifest: NOSIGNATURE         sophisticatedbackpacks-1.20.1-3.20.17.1150.jar    |Sophisticated Backpacks       |sophisticatedbackpacks        |3.20.17.1150        |DONE      |Manifest: NOSIGNATURE         relics-1.20.1-0.8.0.7.jar                         |Relics                        |relics                        |0.8.0.7             |DONE      |Manifest: NOSIGNATURE         rch-supplementaries-compat-forge-1.0.0.jar        |RightClickHarvest Supplementar|rch_supplementaries_compat    |1.0.0               |DONE      |Manifest: NOSIGNATURE         mcw-doors-1.1.1forge-mc1.20.1.jar                 |Macaw's Doors                 |mcwdoors                      |1.1.1               |DONE      |Manifest: NOSIGNATURE         jeed-1.20-2.2.2.jar                               |Just Enough Effects Descriptio|jeed                          |1.20-2.2.2          |DONE      |Manifest: NOSIGNATURE         ramcompat-1.20.1-0.1.4.jar                        |RAM-Compat                    |ramcompat                     |0.1.4               |DONE      |Manifest: NOSIGNATURE         carryon-forge-1.20.1-2.1.2.7.jar                  |Carry On                      |carryon                       |2.1.2.7             |DONE      |Manifest: NOSIGNATURE         sodiumoptionsapi-forge-1.0.8-1.20.1.jar           |Sodium Options API            |sodiumoptionsapi              |1.0.8               |DONE      |Manifest: NOSIGNATURE         macawsroofsbop-1.20-1.1.jar                       |Macaw's Roofs - BOP           |macawsroofsbop                |1.20-1.1            |DONE      |Manifest: NOSIGNATURE         fzzy_config-0.5.8+1.20.1+forge.jar                |Fzzy Config                   |fzzy_config                   |0.5.8+1.20.1+forge  |DONE      |Manifest: NOSIGNATURE         emi_loot-0.7.4+1.20.1+forge.jar                   |EMI Loot                      |emi_loot                      |0.7.4+1.20.1+forge  |DONE      |Manifest: NOSIGNATURE         twilightforest-1.20.1-4.3.2508-universal.jar      |The Twilight Forest           |twilightforest                |4.3.2508            |DONE      |Manifest: NOSIGNATURE         DynamicTreesTheTwilightForest-1.20.1-2.2.0-BETA2.j|Dynamic Trees for The Twilight|dttwilightforest              |1.20.1-2.2.0-BETA2  |DONE      |Manifest: NOSIGNATURE         farmersplus-1.0.3.jar                             |Farmer's Plus                 |farmersplus                   |1.0.3               |DONE      |Manifest: NOSIGNATURE         sodiumdynamiclights-forge-1.0.9-1.20.1.jar        |Sodium Dynamic Lights         |sodiumdynamiclights           |1.0.9               |DONE      |Manifest: NOSIGNATURE         letsdo-addon-compat-forge-1.4.2.jar               |[Let's Do Addon] Compat       |letsdoaddon_compat            |1.4.2               |DONE      |Manifest: NOSIGNATURE         konkrete_forge_1.8.0_MC_1.20-1.20.1.jar           |Konkrete                      |konkrete                      |1.8.0               |DONE      |Manifest: NOSIGNATURE         adtetra-2.1.0.jar                                 |Ad Tetra!                     |adtetra                       |2.1.0               |DONE      |Manifest: NOSIGNATURE         undergarden_delight_1.0.0_forge_1.20.1.jar        |Undergarden Delight           |undergardendelight            |1.0.0               |DONE      |Manifest: NOSIGNATURE         mcw-bridges-3.0.0-mc1.20.1forge.jar               |Macaw's Bridges               |mcwbridges                    |3.0.0               |DONE      |Manifest: NOSIGNATURE         macawsbridgesbop-1.20-1.3.jar                     |Macaw's Bridges - BOP         |macawsbridgesbop              |1.20-1.3            |DONE      |Manifest: NOSIGNATURE         FarmersDelight-1.20.1-1.2.5.jar                   |Farmer's Delight              |farmersdelight                |1.20.1-1.2.5        |DONE      |Manifest: NOSIGNATURE         chefs-delight-1.0.3-forge-1.20.1.jar              |Chefs Delight                 |chefsdelight                  |1.0.3-forge-1.20.1  |DONE      |Manifest: NOSIGNATURE         culturaldelights-0.16.1.jar                       |Cultural Delights             |culturaldelights              |0.16.1              |DONE      |Manifest: NOSIGNATURE         farmers_croptopia-1.20.1-1.1.0.jar                |Farmer's Croptopia            |farmers_croptopia             |1.1.0               |DONE      |Manifest: NOSIGNATURE         FarmersStructures-1.0.3-1.20.jar                  |FarmersStructures             |farmers_structures            |1.0.0               |DONE      |Manifest: NOSIGNATURE         largemeals-1.20.1-1.3.0.jar                       |Large Meals                   |largemeals                    |1.20.1-1.3.0        |DONE      |Manifest: NOSIGNATURE         ends_delight-1.20.1-2.4.jar                       |End's Delight                 |ends_delight                  |2.4                 |DONE      |Manifest: NOSIGNATURE         entity_model_features_forge_1.20.1-2.2.6.jar      |Entity Model Features         |entity_model_features         |2.2.6               |DONE      |Manifest: NOSIGNATURE         ecologicsartifacts-1.0.1-1.20.1.jar               |Ecologics Artifacts           |ecologicsartifacts            |1.0.1-1.20.1        |DONE      |Manifest: NOSIGNATURE         entity_texture_features_forge_1.20.1-6.2.8.jar    |Entity Texture Features       |entity_texture_features       |6.2.8               |DONE      |Manifest: NOSIGNATURE         DynamicTreesAether-1.20.1-1.3.0.jar               |Dynamic Trees for The Aether  |dtaether                      |1.20.1-1.3.0        |DONE      |Manifest: NOSIGNATURE         CompassCoords-1.6.0-mc1.20.jar                    |Compass Coords                |compasscoords                 |1.6.0               |DONE      |Manifest: NOSIGNATURE         jearchaeology-1.20.1-1.0.4.jar                    |Just Enough Archaeology       |jearchaeology                 |1.20.1-1.0.4        |DONE      |Manifest: NOSIGNATURE         mcw-fences-1.1.2-mc1.20.1forge.jar                |Macaw's Fences and Walls      |mcwfences                     |1.1.2               |DONE      |Manifest: NOSIGNATURE         mcwfencesbop-1.20-1.2.jar                         |Macaw's Fences - BOP          |mcwfencesbop                  |1.20-1.2            |DONE      |Manifest: NOSIGNATURE         farmers_delight_christmas_edition-V.0.92.5-forge-1|Farmers Delight Christmas edit|farmers_delight_christmas_edit|1.0.0               |DONE      |Manifest: NOSIGNATURE         untameddelight-1.20.1-1.1.0.jar                   |Untamed Delight               |untameddelight                |1.20.1-1.0.0        |DONE      |Manifest: NOSIGNATURE         Patchouli-1.20.1-84-FORGE.jar                     |Patchouli                     |patchouli                     |1.20.1-84-FORGE     |DONE      |Manifest: NOSIGNATURE         blockui-1.20.1-1.0.156-RELEASE.jar                |UI Library Mod                |blockui                       |1.20.1-1.0.156-RELEA|DONE      |Manifest: NOSIGNATURE         multipiston-1.20-1.2.43-RELEASE.jar               |Multi-Piston                  |multipiston                   |1.20-1.2.43-RELEASE |DONE      |Manifest: NOSIGNATURE         origins-classes-forge-1.2.1.jar                   |Origins: Classes              |origins_classes               |1.2.1               |DONE      |Manifest: NOSIGNATURE         YungsBetterStrongholds-1.20-Forge-4.0.3.jar       |YUNG's Better Strongholds     |betterstrongholds             |1.20-Forge-4.0.3    |DONE      |Manifest: NOSIGNATURE         aetheric_tetranomicon-1.1.2-1.20.1.jar            |Aetheric Tetranomicon         |aetheric_tetranomicon         |1.1.2-1.20.1        |DONE      |Manifest: NOSIGNATURE         resourcefullib-forge-1.20.1-2.1.29.jar            |Resourceful Lib               |resourcefullib                |2.1.29              |DONE      |Manifest: NOSIGNATURE         pehkui4all-1.0.1-forge-1.20.1.jar                 |Pehkui4All                    |pehkui4all                    |1.0.1               |DONE      |Manifest: NOSIGNATURE         twilightdelight-2.0.13.jar                        |Twilight's Flavor & Delight   |twilightdelight               |2.0.13              |DONE      |Manifest: NOSIGNATURE         deeperdarker-forge-1.20.1-1.3.3.jar               |Deeper and Darker             |deeperdarker                  |1.3.3               |DONE      |Manifest: NOSIGNATURE         architectury-9.2.14-forge.jar                     |Architectury                  |architectury                  |9.2.14              |DONE      |Manifest: NOSIGNATURE         letsdo-API-forge-1.2.15-forge.jar                 |[Let's Do] API                |doapi                         |1.2.15              |DONE      |Manifest: NOSIGNATURE         letsdo-vinery-forge-1.4.28.jar                    |[Let's Do] Vinery             |vinery                        |1.4.28              |DONE      |Manifest: NOSIGNATURE         letsdo-herbalbrews-forge-1.0.8.jar                |[Let's Do] HerbalBrews        |herbalbrews                   |1.0.8               |DONE      |Manifest: NOSIGNATURE         letsdo-nethervinery-forge-1.2.14.jar              |[Let's Do] NetherVinery       |nethervinery                  |1.2.14              |DONE      |Manifest: NOSIGNATURE         letsdo-furniture-forge-1.0.3.jar                  |[Let's Do] Furniture          |furniture                     |1.0.3               |DONE      |Manifest: NOSIGNATURE         letsdo-farm_and_charm-forge-1.0.4.jar             |[Let's Do] Farm & Charm       |farm_and_charm                |1.0.4               |DONE      |Manifest: NOSIGNATURE         letsdo-camping-forge-1.0.4.jar                    |[Let's Do] Camping            |camping                       |1.0.4               |DONE      |Manifest: NOSIGNATURE         letsdo-candlelight-forge-2.0.2.jar                |[Let's Do] Candlelight        |candlelight                   |2.0.2               |DONE      |Manifest: NOSIGNATURE         letsdo-bakery-forge-2.0.3.jar                     |[Let's Do] Bakery             |bakery                        |2.0.3               |DONE      |Manifest: NOSIGNATURE         letsdo-bloomingnature-forge-1.0.9.jar             |[Let's Do] BloomingNature     |bloomingnature                |1.0.9               |DONE      |Manifest: NOSIGNATURE         dtbloomingnature-1.20.1-forge-1.0.2.jar           |Dynamic Trees for BloomingNatu|dtbloomingnature              |1.0.2               |DONE      |Manifest: NOSIGNATURE         letsdo-brewery-forge-2.0.3.jar                    |[Let's Do] Brewery            |brewery                       |2.0.3               |DONE      |Manifest: NOSIGNATURE         letsdo-meadow-forge-1.3.19.jar                    |[Let's Do] Meadow             |meadow                        |1.3.19              |DONE      |Manifest: NOSIGNATURE         AI-Improvements-1.20-0.5.2.jar                    |AI-Improvements               |aiimprovements                |0.5.2               |DONE      |Manifest: NOSIGNATURE         cupboard-1.20.1-2.7.jar                           |Cupboard utilities            |cupboard                      |1.20.1-2.7          |DONE      |Manifest: NOSIGNATURE         bamboodelight-1.0.5-1.20.1.jar                    |Bamboo Delight                |bamboodelight                 |1.0.5-1.20.1        |DONE      |Manifest: NOSIGNATURE         The_Undergarden-1.20.1-0.8.14.jar                 |The Undergarden               |undergarden                   |0.8.14              |DONE      |Manifest: NOSIGNATURE         emi-letsdo-compat-1.3.jar                         |emi-letsdo-compat             |emi_letsdo_compat             |1.3                 |DONE      |Manifest: NOSIGNATURE         dtmeadow-1.20.1-forge-1.1-beta.jar                |Dynamic Trees for Meadow      |dtmeadow                      |1.1-beta            |DONE      |Manifest: NOSIGNATURE         Towns-and-Towers-1.12-Fabric+Forge.jar            |Towns and Towers              |t_and_t                       |0.0NONE             |DONE      |Manifest: NOSIGNATURE         quark_delight_1.0.0_forge_1.20.1.jar              |Quark Delight                 |quarkdelight                  |1.0.0               |DONE      |Manifest: NOSIGNATURE         BetterAdvancements-Forge-1.20.1-0.4.2.10.jar      |Better Advancements           |betteradvancements            |0.4.2.10            |DONE      |Manifest: NOSIGNATURE         raccompat-1.20.1-0.1.3.jar                        |RAC-Compat                    |raccompat                     |0.1.3               |DONE      |Manifest: NOSIGNATURE         amendments-1.20-1.2.12.jar                        |Amendments                    |amendments                    |1.20-1.2.12         |DONE      |Manifest: NOSIGNATURE         sophisticatedstorage-1.20.1-0.10.50.955.jar       |Sophisticated Storage         |sophisticatedstorage          |0.10.50.955         |DONE      |Manifest: NOSIGNATURE         OctoLib-FORGE-0.4.2+1.20.1.jar                    |OctoLib                       |octolib                       |0.4.2               |DONE      |Manifest: NOSIGNATURE         veggiesdelight-1.4.2.jar                          |Veggies Delight               |veggiesdelight                |1.4.2               |DONE      |Manifest: NOSIGNATURE         common-networking-forge-1.0.5-1.20.1.jar          |Common Networking             |commonnetworking              |1.0.5-1.20.1        |DONE      |Manifest: NOSIGNATURE         CuriosQuarkOBP-1.20.1-1.2.5.jar                   |Curios Quark Oddities Backpack|curiosquarkobp                |1.2.5               |DONE      |Manifest: NOSIGNATURE         tetracelium-1.20.1-1.3.1.jar                      |tetracelium                   |tetracelium                   |1.3.1               |DONE      |Manifest: NOSIGNATURE         waystones-forge-1.20-14.1.6.jar                   |Waystones                     |waystones                     |14.1.6              |DONE      |Manifest: NOSIGNATURE         Clumps-forge-1.20.1-12.0.0.4.jar                  |Clumps                        |clumps                        |12.0.0.4            |DONE      |Manifest: NOSIGNATURE         YungsCaveBiomes-1.20.1-Forge-2.0.1.jar            |YUNG's Cave Biomes            |yungscavebiomes               |1.20.1-Forge-2.0.1  |DONE      |Manifest: NOSIGNATURE         dtvinery-1.20.1-forge-1.1.jar                     |Dynamic Trees for Vinery      |dtvinery                      |1.1                 |DONE      |Manifest: NOSIGNATURE         comforts-forge-6.4.0+1.20.1.jar                   |Comforts                      |comforts                      |6.4.0+1.20.1        |DONE      |Manifest: NOSIGNATURE         artifacts-forge-9.5.13.jar                        |Artifacts                     |artifacts                     |9.5.13              |DONE      |Manifest: NOSIGNATURE         YungsBetterDesertTemples-1.20-Forge-3.0.3.jar     |YUNG's Better Desert Temples  |betterdeserttemples           |1.20-Forge-3.0.3    |DONE      |Manifest: NOSIGNATURE         ExplorersCompass-1.20.1-1.3.3-forge.jar           |Explorer's Compass            |explorerscompass              |1.20.1-1.3.3-forge  |DONE      |Manifest: NOSIGNATURE         blueprint-1.20.1-7.1.0.jar                        |Blueprint                     |blueprint                     |7.1.0               |DONE      |Manifest: NOSIGNATURE         upgrade_aquatic-1.20.1-6.0.1.jar                  |Upgrade Aquatic               |upgrade_aquatic               |6.0.1               |DONE      |Manifest: NOSIGNATURE         DynamicTreesUpgradeAquatic-1.20.1-1.2.0.jar       |Dynamic Trees for Upgrade Aqua|dtupgradeaquatic              |1.20.1-1.2.0        |DONE      |Manifest: NOSIGNATURE         neapolitan-1.20.1-5.0.0.jar                       |Neapolitan                    |neapolitan                    |5.0.0               |DONE      |Manifest: NOSIGNATURE         DynamicTreesNeapolitan-1.20.1-1.3.2.jar           |Dynamic Trees for Neapolitan  |dtneapolitan                  |1.20.1-1.3.2        |DONE      |Manifest: NOSIGNATURE         autumnity-1.20.1-5.0.1.jar                        |Autumnity                     |autumnity                     |5.0.1               |DONE      |Manifest: NOSIGNATURE         DynamicTreesAutumnity-1.20.1-1.3.2.jar            |Dynamic Trees for Autumnity   |dtautumnity                   |1.20.1-1.3.2        |DONE      |Manifest: NOSIGNATURE         valkyrienrelogs-0.3.0-forge.jar                   |Valkyrien Relogs              |valkyrienrelogs               |0.3.0-forge         |DONE      |Manifest: NOSIGNATURE         doaddonfluids-forge-1.3.0.jar                     |[Let's Do Addon] Fluids       |doaddonfluids                 |1.3.0               |DONE      |Manifest: NOSIGNATURE         CoffeeDelight-Forge-1.20.1-1.4-Fix.jar            |Coffee Delight                |coffee_delight                |1.4                 |DONE      |Manifest: NOSIGNATURE         moredelight-24.11.06-1.20-forge.jar               |More Delight                  |moredelight                   |24.11.06-1.20-forge |DONE      |Manifest: NOSIGNATURE         skinlayers3d-forge-1.7.2-mc1.20.1.jar             |3d-Skin-Layers                |skinlayers3d                  |1.7.2               |DONE      |Manifest: NOSIGNATURE         forgottenrecipes-forge-1.20-1.2.0.jar             |Forgotten Recipes             |forgottenrecipes              |1.2.0               |DONE      |Manifest: NOSIGNATURE         friendsandfoes-forge-mc1.20.1-3.0.6.jar           |Friends & Foes                |friendsandfoes                |3.0.6               |DONE      |Manifest: NOSIGNATURE         supplementariesdelight-1.0.1-1.20.1.jar           |Supplementaries Delight       |supplementariesdelight        |1.0.1-1.20.1        |DONE      |Manifest: NOSIGNATURE         delightfulsandwich-1.20.1.jar                     |Delightful Sandwiches         |delightfulsandwich            |1.20.1              |DONE      |Manifest: NOSIGNATURE         tetrasdelight-1.20.1-1.jar                        |Tetra's Delight               |tetrasdelight                 |1.20.1-1            |DONE      |Manifest: NOSIGNATURE         JustEnoughBeacons-Forge-1.19+-1.1.2.jar           |JustEnoughBeacons             |just_enough_beacons           |1.1.2               |DONE      |Manifest: NOSIGNATURE         alexscaves-2.0.2.jar                              |Alex's Caves                  |alexscaves                    |2.0.2               |DONE      |Manifest: NOSIGNATURE         tact-1.2.1+1.20.1.jar                             |TACT                          |tact                          |1.2.1               |DONE      |Manifest: NOSIGNATURE         curios_compat_1_20_1.jar                          |CuriosCompat                  |curioscompat                  |1.0.0               |DONE      |Manifest: NOSIGNATURE         moonlight-1.20-2.13.33-forge.jar                  |Moonlight Library             |moonlight                     |1.20-2.13.33        |DONE      |Manifest: NOSIGNATURE         ratsdelight-1.0.1.1-1.20.1.jar                    |Rats Delight                  |ratsdelight                   |1.0.1.1-1.20.1      |DONE      |Manifest: NOSIGNATURE         mixinsquared-forge-0.1.2-beta.5.jar               |MixinSquared                  |mixinsquared                  |0.1.2-beta.5        |DONE      |Manifest: NOSIGNATURE         Jade-1.20.1-forge-11.11.1.jar                     |Jade                          |jade                          |11.11.1+forge       |DONE      |Manifest: NOSIGNATURE         l2harvester-0.0.4.jar                             |L2Harvester                   |l2harvester                   |0.0.4               |DONE      |Manifest: NOSIGNATURE         undergardenpatch-1.4.0-1.20.1.jar                 |Undergarden-Tetra Patch       |undergardenpatch              |1.4.0-1.20.1        |DONE      |Manifest: NOSIGNATURE         nethersdelight-1.20.1-4.0.jar                     |Nether's Delight              |nethersdelight                |1.20.1-4.0          |DONE      |Manifest: NOSIGNATURE         lootintegrations_yungs-1.2.jar                    |lootintegrations_yungs mod    |lootintegrations_yungs        |1                   |DONE      |Manifest: NOSIGNATURE         DynamicTreesAlexsMobs-1.20.1-1.0.0.jar            |Dynamic Trees for Alex's Mobs |dtalexsmobs                   |1.20.1-1.0.0        |DONE      |Manifest: NOSIGNATURE         naturalistdelight-1.0.3-1.20.1.jar                |Naturalist Delight            |naturalistdelight             |1.0.3-1.20.1        |DONE      |Manifest: NOSIGNATURE         Quark-4.0-460.jar                                 |Quark                         |quark                         |4.0-460             |DONE      |Manifest: NOSIGNATURE         supplementaries-1.20-3.1.11.jar                   |Supplementaries               |supplementaries               |1.20-3.1.11         |DONE      |Manifest: NOSIGNATURE         ascended_quark-1.20.1-1.1.1.jar                   |Ascended Quark                |ascended_quark                |1.1.1               |DONE      |Manifest: NOSIGNATURE         st_wqc-1.20.1-1.1.jar                             |Woodworks Quark Compat (WQC)  |st_wqc                        |1.1                 |DONE      |Manifest: NOSIGNATURE         suppsquared-1.20-1.1.18.jar                       |Supplementaries Squared       |suppsquared                   |1.20-1.1.18         |DONE      |Manifest: NOSIGNATURE         DynamicTreesQuark-1.20.1-2.5.3.jar                |Dynamic Trees for Quark       |dtquark                       |1.20.1-2.5.3        |DONE      |Manifest: NOSIGNATURE         packedup-0.5.3-beta.jar                           |Packed Up                     |packedup                      |0.5.3-beta          |DONE      |Manifest: NOSIGNATURE         mutil-1.20.1-6.1.1.jar                            |mutil                         |mutil                         |6.1.1               |DONE      |Manifest: NOSIGNATURE         woodworkers_delight-0.1.0-alpha.jar               |Woodworker's Delight          |woodworkers_delight           |0.1.0               |DONE      |Manifest: NOSIGNATURE         CroptopiaDelight-1.20.1_1.2.2-forge.jar           |Croptopia Delight             |croptopia_delight             |1.0                 |DONE      |Manifest: NOSIGNATURE         barbequesdelight-1.0.5.jar                        |Barbeque's Delight            |barbequesdelight              |1.0.5               |DONE      |Manifest: NOSIGNATURE         miners_delight-1.20.1-1.2.3.jar                   |Miner's Delight               |miners_delight                |1.20.1-1.2.3        |DONE      |Manifest: NOSIGNATURE         MyNethersDelight-1.20.1-0.1.7.5.jar               |My Nether's Delight           |mynethersdelight              |1.20.1-1.7.5        |DONE      |Manifest: NOSIGNATURE         Delightful-1.20.1-3.6.1.jar                       |Delightful                    |delightful                    |3.6.1               |DONE      |Manifest: NOSIGNATURE         modonomicon-1.20.1-forge-1.77.3.jar               |Modonomicon                   |modonomicon                   |1.77.3              |DONE      |Manifest: NOSIGNATURE         minecolonies-1.20.1-1.1.759-snapshot.jar          |MineColonies                  |minecolonies                  |1.20.1-1.1.759-snaps|DONE      |Manifest: NOSIGNATURE         colony_curios-1.0.0.jar                           |Minecolonies Curios Compat    |colony_curios                 |1.0.0               |DONE      |Manifest: NOSIGNATURE         MineColonies_Tweaks-1.20.1-2.39.jar               |Tweaks addon for MineColonies |minecolonies_tweaks           |2.39                |DONE      |Manifest: NOSIGNATURE         MineColonies_Compatibility-1.20.1-2.48.jar        |Compatibility addon for MineCo|minecolonies_compatibility    |2.48                |DONE      |Manifest: NOSIGNATURE         MineColonies_LetsDo-1.20.1-1.7.jar                |Let's Do addon for MineColonie|minecolonies_letsdo           |1.7                 |DONE      |Manifest: NOSIGNATURE         JadeColonies-1.20.1-1.4.2.jar                     |JadeColonies                  |jadecolonies                  |1.4.2               |DONE      |Manifest: NOSIGNATURE         letsdo-wildernature-forge-1.0.3.jar               |[Let's Do] Wilder Nature      |wildernature                  |1.0.3               |DONE      |Manifest: NOSIGNATURE         emi_enchanting-0.1.2+1.20.1+forge.jar             |EMI Enchanting                |emi_enchanting                |0.1.2+1.20.1+forge  |DONE      |Manifest: NOSIGNATURE         alexsdelight-1.5.jar                              |Alex's Delight                |alexsdelight                  |1.5                 |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         Pehkui Auto Resize-1.0.0.jar                      |Pehkui Auto Resize            |pehkuiautoresize              |1.0.0               |DONE      |Manifest: NOSIGNATURE         justzoom_forge_2.0.0_MC_1.20.1.jar                |Just Zoom                     |justzoom                      |2.0.0               |DONE      |Manifest: NOSIGNATURE         rarcompat-1.20.1-0.1.7.jar                        |RAR-Compat                    |rarcompat                     |0.1.7               |DONE      |Manifest: NOSIGNATURE         CrabbersDelight-1.20.1-1.1.7c.jar                 |Crabber's Delight             |crabbersdelight               |1.1.7c              |DONE      |Manifest: NOSIGNATURE         expandability-forge-9.0.4.jar                     |ExpandAbility                 |expandability                 |9.0.4               |DONE      |Manifest: NOSIGNATURE     Crash Report UUID: 7d6ca960-ad0a-4721-ad20-2beb9a2f4839     FML: 47.3     Forge: net.minecraftforge:47.3.0
  • Topics

  • Who's Online (See full list)

×
×
  • Create New...

Important Information

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