Jump to content

Recommended Posts

  • Replies 59
  • Created
  • Last Reply

Top Posters In This Topic

Posted

No, they range from 1 to 3 input items.

Oh...that severely complicates things. It may also be why you had trouble with the HashMap.

Could you maybe create a video tutorial for this? I also wanted to know how to do this :)

Posted

Oh...that severely complicates things. It may also be why you had trouble with the HashMap.

Ok, well then. I'm not sure If something like this would work, but would I be possible to have the code get the current number of input items, and find recipes accordingly?

Posted

Oh...that severely complicates things. It may also be why you had trouble with the HashMap.

Ok, well then. I'm not sure If something like this would work, but would I be possible to have the code get the current number of input items, and find recipes accordingly?

That can certainly be done (I would use three HashMaps), but you said you are fairly new to this area of modding, and a lot of it may be putting you on the hook for a lot of suffering.

Posted

Oh...that severely complicates things. It may also be why you had trouble with the HashMap.

Ok, well then. I'm not sure If something like this would work, but would I be possible to have the code get the current number of input items, and find recipes accordingly?

That can certainly be done (I would use three HashMaps), but you said you are fairly new to this area of modding, and a lot of it may be putting you on the hook for a lot of suffering.

Yes, it probably would. And I really don't like the hook of suffering... So is there ANY easy way to go about this? Or any way I could compute at all?

Posted

I haven't figured out hashmaps yet (somehow I never learned them even though they were covered in a class I took) so I made arrays for my 2 input furnace. You would have yours behave similarly.

 

Note- this is not a good way to do things! Every 5 recipes I add, I have to go through and expand my array. This is just a temporary thing until I can figure out hash-maps independently.

 

Also, my furnace requires a certain order for the items in the slots. If there were no particular order you could just add the recipe with each order possibility.

 

 

    private int recipes[][] = new int[5][2];
    private ItemStack[] results = new ItemStack[5];
    private float[] exp = new float[5];
    private int count;
    private int max;

    public static final ObsidianFurnaceRecipes smelting()
    {
        return smeltingBase;
    }

    private ObsidianFurnaceRecipes()
    {
    	count = 0;
    	max = 5;
        this.addSmelting(Block.obsidian.blockID, Item.diamond.itemID, new ItemStack(Obsidian.obsidianDiamond), 1.0F);
    }

    public void addSmelting(int ID1, int ID2, ItemStack resultItemStack, float experience)
    {
        if (count == max)
        {
        	this.expandRecipes();
        }
        recipes[count][0] = ID1;
        recipes[count][1] = ID2;
        results[count] = resultItemStack;
        exp[count] = experience;
        count = count + 1;
    }
    
    //expands the recipe array - note I have not tested this yet since I only have 1 recipe so far but it *should* work
    private void expandRecipes()
    {
    	int newR[][] = new int[max + 5][4];
    	ItemStack[] newOut = new ItemStack[max + 5];
        float[] newE = new float[max + 5];
    	for (int i = 0; i < max; i++)
    	{
    		newR[i][0] = recipes[i][0];
    		newR[i][1] = recipes[i][1];
    		newOut[i] = results[i];
    		newE[i] = exp[i];
    	}
    	recipes = newR;
    	results = newOut;
    	exp = newE;
    	max = max + 5;
    }

    public void addSmelting(int ID1, int ID2, int meta1, int meta2, ItemStack resultItemStack, float experience)
    {
    	if (count == max)
        {
        	this.expandRecipes();
        }
        recipes[count][0] = ID1;
        recipes[count][1] = ID2;
        results[count] = resultItemStack;
        exp[count] = experience;
    	count = count + 1;
    }

    public ItemStack getSmeltingResult(ItemStack item1, ItemStack item2) 
    {
        if (item1 == null || item2 == null)
        {
            return null;
        }
        for (int i = 0; i < count; i++)
        {
        	if (recipes[i][0] == item1.itemID && recipes[i][1] == item2.itemID)
        	{
        		return results[i];
        	}
        }
        return null;
    }

    public float getExperience(ItemStack item)
    {
        if (item == null)
        {
            return 0;
        }
        for (int i = 0; i < count; i++)
        {
        	if (results[i] == item)
        	{
        		return exp[i];
        	}
        }
        return 0;
    }

        //Checks if an item is part of a recipe in the second slot
public boolean isSecond(ItemStack item) 
{
	if (item == null)
        {
            return false;
        }
        for (int i = 0; i < count; i++)
        {
        	if (recipes[i][1] == item.itemID)
        	{
        		return true;
        	}
        }
        return false;
}

        //Checks if an item is part of a recipe in the first slot
public boolean isFirst(ItemStack item) 
{
	if (item == null)
        {
            return false;
        }
        for (int i = 0; i < count; i++)
        {
        	if (recipes[i][0] == item.itemID)
        	{
        		return true;
        	}
        }
        return false;
}

 

For you, I would actually recommend making 3 recipe classes, one for one input, one for 2 inputs, and one for 3 inputs.

If you would like me to any part of this to you just ask.

Read my thoughts on my summer mod work and tell me what you think!

http://www.minecraftforge.net/forum/index.php/topic,8396.0.html

 

I absolutely love her when she smiles

Posted

I haven't figured out hashmaps yet (somehow I never learned them even though they were covered in a class I took) so I made arrays for my 2 input furnace. You would have yours behave similarly.

 

Note- this is not a good way to do things! Every 5 recipes I add, I have to go through and expand my array. This is just a temporary thing until I can figure out hash-maps independently.

 

Also, my furnace requires a certain order for the items in the slots. If there were no particular order you could just add the recipe with each order possibility.

 

 

    private int recipes[][] = new int[5][2];
    private ItemStack[] results = new ItemStack[5];
    private float[] exp = new float[5];
    private int count;
    private int max;

    public static final ObsidianFurnaceRecipes smelting()
    {
        return smeltingBase;
    }

    private ObsidianFurnaceRecipes()
    {
    	count = 0;
    	max = 5;
        this.addSmelting(Block.obsidian.blockID, Item.diamond.itemID, new ItemStack(Obsidian.obsidianDiamond), 1.0F);
    }

    public void addSmelting(int ID1, int ID2, ItemStack resultItemStack, float experience)
    {
        if (count == max)
        {
        	this.expandRecipes();
        }
        recipes[count][0] = ID1;
        recipes[count][1] = ID2;
        results[count] = resultItemStack;
        exp[count] = experience;
        count = count + 1;
    }
    
    //expands the recipe array - note I have not tested this yet since I only have 1 recipe so far but it *should* work
    private void expandRecipes()
    {
    	int newR[][] = new int[max + 5][4];
    	ItemStack[] newOut = new ItemStack[max + 5];
        float[] newE = new float[max + 5];
    	for (int i = 0; i < max; i++)
    	{
    		newR[i][0] = recipes[i][0];
    		newR[i][1] = recipes[i][1];
    		newOut[i] = results[i];
    		newE[i] = exp[i];
    	}
    	recipes = newR;
    	results = newOut;
    	exp = newE;
    	max = max + 5;
    }

    public void addSmelting(int ID1, int ID2, int meta1, int meta2, ItemStack resultItemStack, float experience)
    {
    	if (count == max)
        {
        	this.expandRecipes();
        }
        recipes[count][0] = ID1;
        recipes[count][1] = ID2;
        results[count] = resultItemStack;
        exp[count] = experience;
    	count = count + 1;
    }

    public ItemStack getSmeltingResult(ItemStack item1, ItemStack item2) 
    {
        if (item1 == null || item2 == null)
        {
            return null;
        }
        for (int i = 0; i < count; i++)
        {
        	if (recipes[i][0] == item1.itemID && recipes[i][1] == item2.itemID)
        	{
        		return results[i];
        	}
        }
        return null;
    }

    public float getExperience(ItemStack item)
    {
        if (item == null)
        {
            return 0;
        }
        for (int i = 0; i < count; i++)
        {
        	if (results[i] == item)
        	{
        		return exp[i];
        	}
        }
        return 0;
    }

        //Checks if an item is part of a recipe in the second slot
public boolean isSecond(ItemStack item) 
{
	if (item == null)
        {
            return false;
        }
        for (int i = 0; i < count; i++)
        {
        	if (recipes[i][1] == item.itemID)
        	{
        		return true;
        	}
        }
        return false;
}

        //Checks if an item is part of a recipe in the first slot
public boolean isFirst(ItemStack item) 
{
	if (item == null)
        {
            return false;
        }
        for (int i = 0; i < count; i++)
        {
        	if (recipes[i][0] == item.itemID)
        	{
        		return true;
        	}
        }
        return false;
}

 

For you, I would actually recommend making 3 recipe classes, one for one input, one for 2 inputs, and one for 3 inputs.

If you would like me to any part of this to you just ask.

 

Yes, I'd like help, but I was hoping on having it work exactly like a workbech with 3 slots and have ONLY shapeless recipes. I'm hoping the only shapeless recipes part will make things simpler, but I don't know if it will. So where do I start?

Posted

Sorry, I have been mostly unable to use this website recently for whatever reason, so no promises that I will have timely responses at all...

 

If you want it to behave similarly to the workbench, you might want to try looking at the workbench code. I'm sure it could probably be combined with the furnace code to get what you want.

However...

 

What I would do as a preliminary test to get things working, followed by fixing and streamlining etc later, would be to have 3 recipe classes. These classes represent having 1 ingredient, 2 ingredients, and 3 ingredients. Each would have a variable similar to mine:

private int recipes[][] = new int[M][N];

Where N is the number of ingredients that class covers, and M is maybe the number of recipes you plan on having.

Each class also has their own array of results. The index of the recipe is the index of the results array.

 

Lots of code can be copied over from mine. Doing it this way will almost guarantee you a few errors the first time you run it simply because you will have to look through my code, understand what it is doing, see where you are changing something, and make that change work. This process makes this all a lot of work for something that might work slowly or be buggy that you will have to fix, but it is really gratifying when it works the first time and all you have left is making everything beautiful.

 

In the (I think) container class, or wherever checks are made on what recipes do what etc, you will have to check each of your recipe classes. Check how many ingredients are currently in the furnace and use the corresponding recipe class. Since it is shapeless, you will need to either have every variation of the recipe in your recipe class, or when you query your recipe class, you need to run through every variation of the ingredients currently in the furnace. It will probably be easier to code in every recipe and just make one query.

 

Does this make sense? When you make your recipe class, go to your container class and remove the vanilla recipes import. This will highlight every reference to the vanilla recipes and point out what methods are important and need to be understood.

Read my thoughts on my summer mod work and tell me what you think!

http://www.minecraftforge.net/forum/index.php/topic,8396.0.html

 

I absolutely love her when she smiles

Posted

I dunno how good this would work, I have not tested it though (don't have a 3 input furnace to test with)  but it should work, I think,

 

let you use one list for 1 to 3 items for input in any order

as it sorts them into an int[][]

and counts them then

searches the list, then if it didn't find something(gets null) it and there are more then one input

it flips item 0 and item 1 looks again

then if still null and there's 3 inputs it will go and check for the other 4 possible combinations  left each checking for null

 

then returns either null or the itemstack

 

 

of course doing it this way does mean you have to add to the list with the items in a certain order so they can be found for 1 or to inputs, but that should not be a problem

 

when it searches it looks for 3 sets of values each time even if it only got 1 set, so you need to fill in the blanks with 0 as that's what it searches for if it don't get told something else.

 

two methods

http://pastebin.com/51krzJTD

Posted

I dunno how good this would work, I have not tested it though (don't have a 3 input furnace to test with)  but it should work, I think,

 

let you use one list for 1 to 3 items for input in any order

as it sorts them into an int[][]

and counts them then

searches the list, then if it didn't find something(gets null) it and there are more then one input

it flips item 0 and item 1 looks again

then if still null and there's 3 inputs it will go and check for the other 4 possible combinations  left each checking for null

 

then returns either null or the itemstack

 

 

of course doing it this way does mean you have to add to the list with the items in a certain order so they can be found for 1 or to inputs, but that should not be a problem

 

when it searches it looks for 3 sets of values each time even if it only got 1 set, so you need to fill in the blanks with 0 as that's what it searches for if it don't get told something else.

 

two methods

http://pastebin.com/51krzJTD

Sorry, I have been mostly unable to use this website recently for whatever reason, so no promises that I will have timely responses at all...

 

If you want it to behave similarly to the workbench, you might want to try looking at the workbench code. I'm sure it could probably be combined with the furnace code to get what you want.

However...

 

What I would do as a preliminary test to get things working, followed by fixing and streamlining etc later, would be to have 3 recipe classes. These classes represent having 1 ingredient, 2 ingredients, and 3 ingredients. Each would have a variable similar to mine:

private int recipes[][] = new int[M][N];

Where N is the number of ingredients that class covers, and M is maybe the number of recipes you plan on having.

Each class also has their own array of results. The index of the recipe is the index of the results array.

 

Lots of code can be copied over from mine. Doing it this way will almost guarantee you a few errors the first time you run it simply because you will have to look through my code, understand what it is doing, see where you are changing something, and make that change work. This process makes this all a lot of work for something that might work slowly or be buggy that you will have to fix, but it is really gratifying when it works the first time and all you have left is making everything beautiful.

 

In the (I think) container class, or wherever checks are made on what recipes do what etc, you will have to check each of your recipe classes. Check how many ingredients are currently in the furnace and use the corresponding recipe class. Since it is shapeless, you will need to either have every variation of the recipe in your recipe class, or when you query your recipe class, you need to run through every variation of the ingredients currently in the furnace. It will probably be easier to code in every recipe and just make one query.

 

Does this make sense? When you make your recipe class, go to your container class and remove the vanilla recipes import. This will highlight every reference to the vanilla recipes and point out what methods are important and need to be understood.

 

Thank you both for your help, from what I've read, I think you have similar ideas, but I'm not sure which one to use.

I'm thinking of learning specifically about Arrays and HashMaps before I go any further as well, as I know I have to do SOMETHING with those no matter what.

Posted

Thank you for your help,  but for the moment, I'm not at the experience level to be able to code my own furnace. I was hoping to just modify a furnace instead of writing it all myself. :P

Basically I don't really have a clue how to use what you have suggested.

 

it is easier to write your own furnace. By the way i did not read the full thread thats why i could be wrong but i have an old source code of an special furnace:

 

Special things:

3 inputslots

fuelbarrel, and an extra slot (i think it was for modules)

 

its a dirty code but its easy to understand. it does not make much lag but it could be a smaler code.

 

here is my old 1.2.5 code:

 

TileEntity:

package spmod.dynamictools.common.tileentities;

import spmod.dynamictools.common.lib.DTNames;
import spmod.dynamictools.common.recipes.AdvancedToolMakerRecipe;
import cpw.mods.fml.common.Side;
import cpw.mods.fml.common.asm.SideOnly;
import cpw.mods.fml.common.registry.GameRegistry;
import net.minecraft.src.Block;
import net.minecraft.src.BlockFurnace;
import net.minecraft.src.EntityPlayer;
import net.minecraft.src.FurnaceRecipes;
import net.minecraft.src.IInventory;
import net.minecraft.src.Item;
import net.minecraft.src.ItemBlock;
import net.minecraft.src.ItemHoe;
import net.minecraft.src.ItemStack;
import net.minecraft.src.ItemSword;
import net.minecraft.src.ItemTool;
import net.minecraft.src.Material;
import net.minecraft.src.NBTTagCompound;
import net.minecraft.src.NBTTagList;
import net.minecraft.src.TileEntity;

public class TileAdvWorkbench extends TileEntity implements IInventory
{

private ItemStack[] advSlots = new ItemStack[6];
public int fuel = 0;
public int heat = 0;
public int progress = 0;


public TileAdvWorkbench()
{

}


@Override
public int getSizeInventory() 
{
	return advSlots.length;
}

@Override
public ItemStack getStackInSlot(int par1)
{
	return advSlots[par1];
}

@SideOnly(Side.CLIENT)
public int getFuel(int par1)
{
	return fuel * par1 / 240000;
}

@SideOnly(Side.CLIENT)
public boolean isBurning()
{
	return heat > 0;
}

@SideOnly(Side.CLIENT)
public boolean hasFuel()
{
	return fuel > 0;
}

@SideOnly(Side.CLIENT)
public boolean isWorking()
{
	return isPowered();
}

@SideOnly(Side.CLIENT)
public boolean canWork()
{
	return heat > 2000;
}

@SideOnly(Side.CLIENT)
public int getHeat(int par1)
{
	return heat * par1 / 5300;
}

@SideOnly(Side.CLIENT)
public int getProgress(int par1)
{
	return progress * par1 / 100;
}

    public ItemStack decrStackSize(int par1, int par2)
    {

        if (this.advSlots[par1] != null)
        {
            ItemStack var3;

            if (this.advSlots[par1].stackSize <= par2)
            {
                var3 = this.advSlots[par1];
                this.advSlots[par1] = null;
                return var3;
            }
            else
            {
                var3 = this.advSlots[par1].splitStack(par2);

                if (this.advSlots[par1].stackSize == 0)
                {
                    this.advSlots[par1] = null;
                }

                return var3;
            }
        }
        else
        {
            return null;
        }
    }

    public ItemStack getStackInSlotOnClosing(int par1)
    {

        if (this.advSlots[par1] != null)
        {
        	ItemStack var2 = this.advSlots[par1];
            this.advSlots[par1] = null;
            return var2;
        }
        else
        {
            return null;
        }
    }

    public void setInventorySlotContents(int par1, ItemStack par2ItemStack)
    {

        this.advSlots[par1] = par2ItemStack;

        if (par2ItemStack != null && par2ItemStack.stackSize > this.getInventoryStackLimit())
        {
            par2ItemStack.stackSize = this.getInventoryStackLimit();
        }
    }

@Override
public String getInvName() {
	return DTNames.AdvToolbenchName;
}


@Override
public int getInventoryStackLimit()
{
	return 64;
}


@Override
public boolean isUseableByPlayer(EntityPlayer var1) 
{
	return true;
}

@Override
public void openChest(){
}

@Override
public void closeChest(){
}



    public void readFromNBT(NBTTagCompound par1NBTTagCompound)
    {
        super.readFromNBT(par1NBTTagCompound);
        NBTTagList var2 = par1NBTTagCompound.getTagList("Items");
        this.advSlots = new ItemStack[this.getSizeInventory()];

        for (int var3 = 0; var3 < var2.tagCount(); ++var3)
        {
            NBTTagCompound var4 = (NBTTagCompound)var2.tagAt(var3);
            byte var5 = var4.getByte("Slot");

            if (var5 >= 0 && var5 < this.advSlots.length)
            {
                this.advSlots[var5] = ItemStack.loadItemStackFromNBT(var4);
            }
        }
        
        this.fuel = par1NBTTagCompound.getInteger("Fuel");
        this.heat = par1NBTTagCompound.getInteger("Heat");
        this.progress = par1NBTTagCompound.getInteger("Progress");
    }

    /**
     * Writes a tile entity to NBT.
     */
    public void writeToNBT(NBTTagCompound par1NBTTagCompound)
    {
        super.writeToNBT(par1NBTTagCompound);
        par1NBTTagCompound.setInteger("Fuel", this.fuel);
        par1NBTTagCompound.setInteger("Heat", this.heat);
        par1NBTTagCompound.setInteger("Progress", this.progress);
        NBTTagList var2 = new NBTTagList();

        for (int var3 = 0; var3 < this.advSlots.length; ++var3)
        {
            if (this.advSlots[var3] != null)
            {
                NBTTagCompound var4 = new NBTTagCompound();
                var4.setByte("Slot", (byte)var3);
                this.advSlots[var3].writeToNBT(var4);
                var2.appendTag(var4);
            }
        }

        par1NBTTagCompound.setTag("Items", var2);
    }


   	public void updateEntity()
   	{
   		boolean update = false;
   		
	   	if(heat > 0 && fuel == 0)
	   	{
		   	--heat;
		   	update = true;
	   	}
	   	else if(heat <= 2000 && fuel > 0&& isPowered())
	   	{
	   		fuel -= 5;
	   		heat += 1;
	   		update = true;
	   	}
	   	else if(heat > 2000 && fuel > 0 && heat < 5000 && isPowered())
	   	{
	   		fuel--;
	   		heat++;
	   		update = true;
	   	}
	   	else if(!isPowered() && heat > 0)
	   	{
	   		heat--;
	   		update = true;
	   	}
	   	else
	   	{
	   		
	   	}
	   	
	   	
	   	if(fuel < 100000)
	   	{
	   		
	   		if(advSlots[0] != null && this.isFuel(advSlots[0]))
	   		{
	   			fuel = fuel + addFuel(advSlots[0]);
	   			--advSlots[0].stackSize;
	   			update = true;
                    if (this.advSlots[0].stackSize == 0)
                    {
                        this.advSlots[0] = this.advSlots[0].getItem().getContainerItemStack(advSlots[0]);
                    }
	   		}
	   		else if(advSlots[0] != null && isBoostFuel(advSlots[0]))
	   		{
	   			fuel = fuel - (addBoostFuel(advSlots[0]) * 2);
	   			if(fuel < 0)
	   			{
	   				fuel = 0;
	   			}
	   			heat = heat + addBoostFuel(advSlots[0]);
	   			--advSlots[0].stackSize;
	   			update = true;
	   			if(this.advSlots[0].stackSize == 0)
	   			{
	   				this.advSlots[0] = this.advSlots[0].getItem().getContainerItemStack(advSlots[0]);
	   			}
	   		}
	   		else if(advSlots[0] != null && isExtraFuel(advSlots[0]) && heat > 2000)
	   		{
	   			fuel = fuel + addExtraFuel(advSlots[0]);
	   			heat = heat - (addExtraFuel(advSlots[0]) * 3);
	   			--advSlots[0].stackSize;
	   			update = true;
	   			if(this.advSlots[0].stackSize == 0)
	   			{
	   				this.advSlots[0] = this.advSlots[0].getItem().getContainerItemStack(advSlots[0]);
	   			}
	   		}
	   	}
	   	
	   	if(canSmeltVanillaThings())
	   	{
	   		++progress;
	   		
	   		if(progress > 100)
	   		{
	   			progress = 0;
	   			smeltVanilla();
	   			update = true;
	   		}
	   		
	   	}
	   	
	   	if(update == true)
	   	{
	   		this.onInventoryChanged();
	   	}
	   
   	}
   	
   	public static boolean isExtraFuel(ItemStack par1)
   	{
   		return addExtraFuel(par1) > 0;
   	}
   	
   	public static boolean isFuel(ItemStack par1)
   	{
   		return addFuel(par1) > 0;
   	}
   	
   	public static boolean isBoostFuel(ItemStack par1)
   	{
   		return addBoostFuel(par1) > 0;
   	}
   	
   	
   	public static int addBoostFuel(ItemStack par1)
   	{
   		if(par1 == null)
   		{
   			return 0;
   		}
   		
   		int any = par1.getItem().shiftedIndex;
   		Item item = par1.getItem();
   		int metaItem = par1.getItemDamage();
   		
   		if(par1.getItem() instanceof ItemBlock && Block.blocksList[any] != null)
   		{
   			Block block = Block.blocksList[any]; 
   		}
   		
   		if(item == item.bucketLava)
   		{
   			return 2000;
   		}
   		
   		
   		return GameRegistry.getFuelValue(par1);
   		
   	}
   	
   	public static int addExtraFuel(ItemStack par1)
   	{
   		if(par1 == null)
   		{
   			return 0;
   		}
   		
   		int any = par1.getItem().shiftedIndex;
   		Item item = par1.getItem();
   		int metaItem = par1.getItemDamage();
   		
   		if(par1.getItem() instanceof ItemBlock && Block.blocksList[any] != null)
   		{
   			Block block = Block.blocksList[any]; 
   			if(block == block.cobblestone || block == block.cobblestoneMossy)
   			{
   				return 500;
   			}
   		}

   		
   		
   		return GameRegistry.getFuelValue(par1);
   	}
   	
   	
   	public static int addFuel(ItemStack par1)
   	{
   		if(par1 == null)
   		{
   			return 0;
   		}
   		
   		int any = par1.getItem().shiftedIndex;
   		Item item = par1.getItem();
   		int metaItem = par1.getItemDamage();
   		
   		if(par1.getItem() instanceof ItemBlock && Block.blocksList[any] != null)
   		{
   			Block block = Block.blocksList[any]; 
   			if(block == block.wood)
   			{
   				return 25;
   			}

   			if(block == block.sapling)
   			{
   				return 2;
   			}
   			
   			if(block == block.planks)
   			{
   				return 25;
   			}
   		}
   		
   		if(item == item.coal)
   		{
   			return 1000;
   		}
   		
   		
   		return GameRegistry.getFuelValue(par1);
   		
   	}
   	
   	public boolean canSmeltVanillaThings()
   	{
   		if(canProgress() == true || canProgress2() == true || canProgress3() == true)
   		{
   			return true;
   		}
   		else
   		{
   			return false;
   		}
   	}

   	public boolean canProgress2()
   	{
   		if(advSlots[3] == null)
   		{
   			return false;
   		}
   		else
   		{
   				ItemStack par1 = AdvancedToolMakerRecipe.smelting().getCookResult(advSlots[3]);
   				if (par1 == null) return false;
   				if (this.advSlots[5] == null) return true;
   				if (!this.advSlots[5].isItemEqual(par1)) return false;
   				int result = advSlots[5].stackSize + par1.stackSize;
   				return (result <= getInventoryStackLimit() && result <= par1.getMaxStackSize());
   			
   		
   		}
   	}
   	
   	public boolean canProgress3()
   	{
   		if(advSlots[4] == null)
   		{
   			return false;
   		}
   		else
   		{
   				ItemStack par1 = AdvancedToolMakerRecipe.smelting().getCookResult(advSlots[4]);
   				if (par1 == null) return false;
   				if (this.advSlots[5] == null) return true;
   				if (!this.advSlots[5].isItemEqual(par1)) return false;
   				int result = advSlots[5].stackSize + par1.stackSize;
   				return (result <= getInventoryStackLimit() && result <= par1.getMaxStackSize());
   			
   		
   		}
   	}
   	
	public boolean canProgress()
   	{
   		
   		if(advSlots[2] == null)
   		{
   			return false;
   		}
   		else
   		{
   				ItemStack par1 = AdvancedToolMakerRecipe.smelting().getCookResult(advSlots[2]);
   				if (par1 == null) return false;
   				if (this.advSlots[5] == null) return true;
   				if (!this.advSlots[5].isItemEqual(par1)) return false;
   				int result = advSlots[5].stackSize + par1.stackSize;
   				return (result <= getInventoryStackLimit() && result <= par1.getMaxStackSize());
   			
   		
   		}
   		
   	}

	public void smeltVanilla()
	{
		smeltVanilla1();
		smeltVanilla2();
		smeltVanilla3();
	}


	public void smeltVanilla3()
	{
		if(canProgress3())
		{
			ItemStack par1 = AdvancedToolMakerRecipe.smelting().getCookResult(advSlots[4]);
            if (this.advSlots[5] == null)
            {
                this.advSlots[5] = par1.copy();
            }
            else if (this.advSlots[5].isItemEqual(par1))
            {
            	advSlots[5].stackSize += par1.stackSize;
            }

            --advSlots[4].stackSize;

            if (advSlots[4].stackSize <= 0)
            {
                this.advSlots[4] = null;
            }
		}
	}

	public void smeltVanilla2()
	{
		if(canProgress2())
		{
			ItemStack par1 = AdvancedToolMakerRecipe.smelting().getCookResult(advSlots[3]);
            if (this.advSlots[5] == null)
            {
                this.advSlots[5] = par1.copy();
            }
            else if (this.advSlots[5].isItemEqual(par1))
            {
            	advSlots[5].stackSize += par1.stackSize;
            }

            --advSlots[3].stackSize;

            if (advSlots[3].stackSize <= 0)
            {
                this.advSlots[3] = null;
            }
		}
	}

	public void smeltVanilla1()
	{
		if(canProgress())
		{
			ItemStack par1 = AdvancedToolMakerRecipe.smelting().getCookResult(advSlots[2]);
            if (this.advSlots[5] == null)
            {
                this.advSlots[5] = par1.copy();
            }
            else if (this.advSlots[5].isItemEqual(par1))
            {
            	advSlots[5].stackSize += par1.stackSize;
            }

            --advSlots[2].stackSize;

            if (advSlots[2].stackSize <= 0)
            {
                this.advSlots[2] = null;
            }
		}
	}

	public boolean isPowered()
	{
		return this.worldObj.isBlockIndirectlyGettingPowered(this.xCoord, this.yCoord, this.zCoord);
	}

   	
}

 

Gui

package spmod.dynamictools.client.gui;

import java.awt.Button;

import org.lwjgl.opengl.GL11;

import cpw.mods.fml.common.Side;
import cpw.mods.fml.common.asm.SideOnly;
import spmod.dynamictools.common.tileentities.TileAdvWorkbench;
import spmod.dynamictools.common.container.ContainerAdvToolbench;
import spmod.dynamictools.common.lib.DTNames;
import net.minecraft.src.EntityPlayer;
import net.minecraft.src.GuiButton;
import net.minecraft.src.GuiContainer;
import net.minecraft.src.InventoryPlayer;
import net.minecraft.src.StatCollector;
import net.minecraft.src.World;

@SideOnly(Side.CLIENT)
public class GuiAdvToolbench extends GuiContainer
{
private TileAdvWorkbench tile;
int par5 = 175;
int par6 = 165;

public GuiAdvToolbench(InventoryPlayer par1, TileAdvWorkbench par2)
{
	super(new ContainerAdvToolbench(par1, par2));
	tile = par2;
}    

protected void drawGuiContainerForegroundLayer()
    {
        this.fontRenderer.drawString(DTNames.AdvToolbenchName, 28, 6, 4210752);
        this.fontRenderer.drawString(StatCollector.translateToLocal("container.inventory"), 8, this.ySize - 96 + 2, 4210752);
    }


    protected void drawGuiContainerBackgroundLayer(float par1, int par2, int par3)
    {
        int var4 = this.mc.renderEngine.getTexture("/spmod/dynamictools/textures/gui/advancedworkbench.png");
        GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
        this.mc.renderEngine.bindTexture(var4);
        int var5 = (this.width - this.xSize) / 2;
        int var6 = (this.height - this.ySize) / 2;
        this.drawTexturedModalRect(var5, var6, 0, 0, this.xSize, this.ySize);
        int var7;
        
        if(tile.isWorking())
        {
        	this.drawTexturedModalRect(var5 + 49, var6 + 68, 176, 77, 11, 5);
        }
        
        if (this.tile.hasFuel())
        {
            var7 = this.tile.getFuel(100);
            this.drawTexturedModalRect(var5 + 11, var6 + 76 - var7, 176, 73 - var7, 4, var7 + 2);
        }
        
        if (this.tile.isBurning())
        {
            var7 = this.tile.getHeat(12);
            this.drawTexturedModalRect(var5 + 25, var6 + 42 + 12 - var7, 176, 12 - var7, 14, var7 + 2);
        }
        var7 = this.tile.getProgress(24);
        this.drawTexturedModalRect(var5 + 90, var6 + 32, 176, 14, var7 + 1, 16);  

    }
}

 

Container

package spmod.dynamictools.common.container;

import java.util.Iterator;

import cpw.mods.fml.common.Side;
import cpw.mods.fml.common.asm.SideOnly;

import net.minecraft.src.Container;
import net.minecraft.src.EntityPlayer;
import net.minecraft.src.FurnaceRecipes;
import net.minecraft.src.ICrafting;
import net.minecraft.src.InventoryPlayer;
import net.minecraft.src.ItemStack;
import net.minecraft.src.Slot;
import net.minecraft.src.SlotFurnace;
import net.minecraft.src.TileEntityFurnace;
import spmod.dynamictools.common.tileentities.TileAdvWorkbench;

public class ContainerAdvToolbench extends Container
{
private TileAdvWorkbench tile;
private int fuelnow = 0;
private int heatnow = 0;
private int progressnow = 0;

public ContainerAdvToolbench(InventoryPlayer par1, TileAdvWorkbench par2) 
{
	tile = par2;
	addSlotToContainer(new Slot(par2, 0, 24, 60)); //fuelslot
	addSlotToContainer(new Slot(par2, 1, 7, 10)); // recipe slot
	addSlotToContainer(new Slot(par2, 2, 55, 31)); // input 1
	addSlotToContainer(new Slot(par2, 3, 80, 10)); // input 2
	addSlotToContainer(new Slot(par2, 4, 81, 54)); // input 3
	addSlotToContainer(new SlotFurnace(par1.player, par2, 5, 128, 32)); //output
        int var3;

        for (var3 = 0; var3 < 3; ++var3)
        {
            for (int var4 = 0; var4 < 9; ++var4)
            {
                this.addSlotToContainer(new Slot(par1, var4 + var3 * 9 + 9, 8 + var4 * 18, 84 + var3 * 18));
            }
        }

        for (var3 = 0; var3 < 9; ++var3)
        {
            this.addSlotToContainer(new Slot(par1, var3, 8 + var3 * 18, 142));
        }
    }

    public void updateCraftingResults()
    {
        super.updateCraftingResults();
        Iterator var1 = this.crafters.iterator();

        while (var1.hasNext())
        {
            ICrafting var2 = (ICrafting)var1.next();

            if (this.fuelnow != this.tile.fuel)
            {
                var2.updateCraftingInventoryInfo(this, 0, this.tile.fuel);
            }

            if (this.heatnow != this.tile.heat)
            {
                var2.updateCraftingInventoryInfo(this, 1, this.tile.heat);
            }

            if (this.progressnow != this.tile.progress)
            {
                var2.updateCraftingInventoryInfo(this, 2, this.tile.progress);
            }
        }

        this.fuelnow = this.tile.fuel;
        this.heatnow = this.tile.heat;
        this.progressnow = this.tile.progress;
    }

    
    @SideOnly(Side.CLIENT)
    public void updateProgressBar(int par1, int par2)
    {
        if (par1 == 0)
        {
            this.tile.fuel = par2;
        }

        if (par1 == 1)
        {
            this.tile.heat = par2;
        }

        if (par1 == 2)
        {
            this.tile.progress = par2;
        }
    }

@Override
public boolean canInteractWith(EntityPlayer var1) 
{
	return true;
}

public ItemStack transferStackInSlot(int par1)
{
        ItemStack var2 = null;
        Slot var3 = (Slot)this.inventorySlots.get(par1);

        if (var3 != null && var3.getHasStack())
        {
            ItemStack var4 = var3.getStack();
            var2 = var4.copy();

            if (par1 == 2)
            {
                if (!this.mergeItemStack(var4, 3, 39, true))
                {
                    return null;
                }

                var3.onSlotChange(var4, var2);
            }
            else if (par1 != 1 && par1 != 0)
            {
                if (FurnaceRecipes.smelting().getSmeltingResult(var4) != null)
                {
                    if (!this.mergeItemStack(var4, 2, 1, false))
                    {
                        return null;
                    }
                }
                else if (TileEntityFurnace.isItemFuel(var4))
                {
                    if (!this.mergeItemStack(var4, 0, 2, false))
                    {
                        return null;
                    }
                }
                else if (par1 >= 3 && par1 < 30)
                {
                    if (!this.mergeItemStack(var4, 30, 39, false))
                    {
                        return null;
                    }
                }
                else if (par1 >= 30 && par1 < 39 && !this.mergeItemStack(var4, 3, 30, false))
                {
                    return null;
                }
            }
            else if (!this.mergeItemStack(var4, 3, 39, false))
            {
                return null;
            }

            if (var4.stackSize == 0)
            {
                var3.putStack((ItemStack)null);
            }
            else
            {
                var3.onSlotChanged();
            }

            if (var4.stackSize == var2.stackSize)
            {
                return null;
            }

            var3.onPickupFromSlot(var4);
        }

        return var2;
   }
}

 

Block

package spmod.dynamictools.common.blocks;

import java.util.List;

import net.minecraft.src.Block;
import net.minecraft.src.BlockContainer;
import net.minecraft.src.CreativeTabs;
import net.minecraft.src.EntityLiving;
import net.minecraft.src.EntityPlayer;
import net.minecraft.src.ItemStack;
import net.minecraft.src.Material;
import net.minecraft.src.MathHelper;
import net.minecraft.src.TileEntity;
import net.minecraft.src.World;
import net.minecraftforge.common.ForgeDirection;
import spmod.api.common.lib.DTTextures;
import spmod.dynamictools.DynamicTools;
import spmod.dynamictools.common.tileentities.TileAdvWorkbench;
import spmod.dynamictools.common.tileentities.TileCobbleStorage;
import spmod.dynamictools.common.config.DTBlocks;
import spmod.dynamictools.common.lib.DTGuis;

public class BlockAdvancedToolbench extends BlockContainer
{
boolean isPowered = false;
public static DTTextures id;
public BlockAdvancedToolbench(int id)
{
	super(id, Material.rock);
	setHardness(1.0F);
	setResistance(5.0F);
	this.setCreativeTab(CreativeTabs.tabFood);
	if(isPowered)
	{
		setLightValue(2.0F);
	}
}


    public void getSubBlocks(int par1, CreativeTabs par2CreativeTabs, List par3)
    {
        par3.add(new ItemStack(par1, 1, 0));
        par3.add(new ItemStack(par1, 1, 1));
    }
    
    

public boolean onBlockActivated(World par1, int par2, int par3, int par4, EntityPlayer par5, int par6, float par7, float par8, float par9)
{


	if(par5.isSneaking())
	{
		return false;
	}

	if(!par1.isRemote)
	{
		int meta = par1.getBlockMetadata(par2, par3, par4);



		if(meta == 0)	
		{
				par5.openGui(DynamicTools.instance, DTGuis.advancedtoolworkbench, par1, par2, par3, par4);
				return true;

		}
		else if(meta == 1)
		{
			par5.openGui(DynamicTools.instance, DTGuis.cobblestorage, par1, par2, par3, par4);
			return true;
		}
		else
		{
			return true;
		}

	}
	return true;
}

public void onNeighborBlockChange(World par1World, int par2, int par3, int par4, int par5)
{
	int meta = par1World.getBlockMetadata(par2, par3, par4);
	if(meta == 0)
	{
		if(isPowered && !par1World.isBlockIndirectlyGettingPowered(par2, par3, par4))
		{
			isPowered = false;
		}
		else if (!this.isPowered && par1World.isBlockIndirectlyGettingPowered(par2, par3, par4))
		{
			isPowered = true;
		}
	}
}


public int getBlockTextureFromSideAndMetadata(int side, int meta)
{
	if(meta == 0)
	{
		if(side == 0 || side == 1)
		{
			return id.ADT0;
		}
		else if(side == 2) // front
		{
			if(isPowered)
			{
				return id.ADT2;
			}
			else
			{
				return id.ADT1;
			}

		}
		else if(side == 3)
		{
			return id.ADT3;
		}
		else if(side == 4)
		{
			return id.ADT4;
		}
		else
		{
			return id.ADT5;
		}
	}
	else if(meta == 1)
	{
		return 100;
	}
	else
	{
		return 256;
	}
}

@Override
public TileEntity createNewTileEntity(World world, int meta) 
{
	if(meta == 0)
	{
		return new TileAdvWorkbench();

	}
	else if(meta == 1)
	{

		return new TileCobbleStorage();
	}
	else
	{
		return null;
	}
}

@Override
public TileEntity createNewTileEntity(World var1) 
{
	return null;
}





}

 

a view things to know i didnt know at that time how to make stack in slot. it works but i crashes the game.

and the tile Cobblestorage is nothing else as a cobblechest. But thats not the part of interest.

 

I hope i can help you with that.

  • 2 weeks later...
Posted

I'm not sure exactly if what you said is what I want. So I'll clarify.

 

A furnace with 3 input slots, one fuel slot, and one output slot. like this:

 

[input 1]

 

[input 2]          [fuel]    =    [output]

 

[input 3]

 

I already have the slots, and the first input slot works just like a normal furnace, but not the other two.

The 3 input slots need to function like a shapeless recipe. They also need to know if there are 1, 2 or 3 items and act accordingly.

I only have very very basic java knowledge, but I know I need to start with some sort of array/hashmap.

 

Now could you help me?

Posted

Which one of your machinces?!?! I'm looking at the mod files, and there are 3 different machines from what I can see.

TEProcessor is a superclass of TESC and TEC. Both of them only use 1 input, but it can be easily configured for three.

BEWARE OF GOD

---

Co-author of Pentachoron Labs' SBFP Tech.

Posted

Which one of your machinces?!?! I'm looking at the mod files, and there are 3 different machines from what I can see.

TEProcessor is a superclass of TESC and TEC. Both of them only use 1 input, but it can be easily configured for three.

Alright, I've looked at the code, however I'm still in the process of learning java, so how would I configure your processor to my liking?

Posted

Which one of your machinces?!?! I'm looking at the mod files, and there are 3 different machines from what I can see.

TEProcessor is a superclass of TESC and TEC. Both of them only use 1 input, but it can be easily configured for three.

Alright, I've looked at the code, however I'm still in the process of learning java, so how would I configure your processor to my liking?

It's really just a matter of passing multiple arguments into ProcessorRecipeManager.getRecipe(). Assuming you have only three slots, you want something like this:

 

@Override
protected boolean dryMergeOutputsAndFeed(){
	for(int i = 0; i<3; i++){
		if(this.inventory[i]==null){
	            this.activeRecipe = null;
	            this.waitingOutputs = null;
                            return false;
                        }
                }
			this.activeRecipe = mymod.prmCrusher.getRecipe(this.inventory);
			this.waitingOutputs = this.activeRecipe.getOutputs(this);
			boolean flag = true;
			if(this.activeRecipe!=null){
				flag = flag&&this.container.dryMerge(this.waitingOutputs[0],40,42,false)>=this.waitingOutputs[0].stackSize;
				if(this.waitingOutputs.length==2){
					flag = flag&&this.container.dryMerge(this.waitingOutputs[1],42,44,false)>=this.waitingOutputs[1].stackSize;
				}
				if(flag){
					this.decrStackSize(i,this.activeRecipe.getInputs()[0].stackSize);
					return true;
				}
			}
		}
	}
	this.activeRecipe = null;
	this.waitingOutputs = null;
	return false;
}

 

BEWARE OF GOD

---

Co-author of Pentachoron Labs' SBFP Tech.

Posted

Which one of your machinces?!?! I'm looking at the mod files, and there are 3 different machines from what I can see.

TEProcessor is a superclass of TESC and TEC. Both of them only use 1 input, but it can be easily configured for three.

Alright, I've looked at the code, however I'm still in the process of learning java, so how would I configure your processor to my liking?

It's really just a matter of passing multiple arguments into ProcessorRecipeManager.getRecipe(). Assuming you have only three slots, you want something like this:

 

@Override
protected boolean dryMergeOutputsAndFeed(){
	for(int i = 0; i<3; i++){
		if(this.inventory[i]==null){
	            this.activeRecipe = null;
	            this.waitingOutputs = null;
                            return false;
                        }
                }
			this.activeRecipe = mymod.prmCrusher.getRecipe(this.inventory);
			this.waitingOutputs = this.activeRecipe.getOutputs(this);
			boolean flag = true;
			if(this.activeRecipe!=null){
				flag = flag&&this.container.dryMerge(this.waitingOutputs[0],40,42,false)>=this.waitingOutputs[0].stackSize;
				if(this.waitingOutputs.length==2){
					flag = flag&&this.container.dryMerge(this.waitingOutputs[1],42,44,false)>=this.waitingOutputs[1].stackSize;
				}
				if(flag){
					this.decrStackSize(i,this.activeRecipe.getInputs()[0].stackSize);
					return true;
				}
			}
		}
	}
	this.activeRecipe = null;
	this.waitingOutputs = null;
	return false;
}

 

The furnace itslef will have 5 slots, but 3 of them will be the items to be smelted. one will be fuel, and the other the output. Is that what this code will help with?

Posted

Which one of your machinces?!?! I'm looking at the mod files, and there are 3 different machines from what I can see.

TEProcessor is a superclass of TESC and TEC. Both of them only use 1 input, but it can be easily configured for three.

Alright, I've looked at the code, however I'm still in the process of learning java, so how would I configure your processor to my liking?

It's really just a matter of passing multiple arguments into ProcessorRecipeManager.getRecipe(). Assuming you have only three slots, you want something like this:

 

@Override
protected boolean dryMergeOutputsAndFeed(){
	for(int i = 0; i<3; i++){
		if(this.inventory[i]==null){
	            this.activeRecipe = null;
	            this.waitingOutputs = null;
                            return false;
                        }
                }
			this.activeRecipe = mymod.prmCrusher.getRecipe(this.inventory);
			this.waitingOutputs = this.activeRecipe.getOutputs(this);
			boolean flag = true;
			if(this.activeRecipe!=null){
				flag = flag&&this.container.dryMerge(this.waitingOutputs[0],40,42,false)>=this.waitingOutputs[0].stackSize;
				if(this.waitingOutputs.length==2){
					flag = flag&&this.container.dryMerge(this.waitingOutputs[1],42,44,false)>=this.waitingOutputs[1].stackSize;
				}
				if(flag){
					this.decrStackSize(i,this.activeRecipe.getInputs()[0].stackSize);
					return true;
				}
			}
		}
	}
	this.activeRecipe = null;
	this.waitingOutputs = null;
	return false;
}

 

The furnace itslef will have 5 slots, but 3 of them will be the items to be smelted. one will be fuel, and the other the output. Is that what this code will help with?

Yep. Although you will have to put an extra check in there for the fuel. And decrease it as appropriate. Frankly, you might be better off writing your own class :P

BEWARE OF GOD

---

Co-author of Pentachoron Labs' SBFP Tech.

  • 2 weeks later...
Guest
This topic is now closed to further replies.

Announcements




  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • I've been having multiple crashes (3 times today and once yesterday) for seemingly no reason. All within a few minutes of each other. All crash reports look like they're the same issue, so I'll only post the most recent crash. Crash Report is here. Any help would be greatly appreciated. 
    • java.lang.IllegalArgumentException: Can't find attribute minecraft:generic.attack_knockback having the same problem as this one: https://forums.minecraftforge.net/topic/151258-some-kind-of-issue-with-lycanites-mobs-and-the-knockback-attribute/ also my report on Lycanites Issue page(crash log included): https://gitlab.com/Lycanite/LycanitesMobs/-/issues/951
    • I just removed that mod as well and it's still stuck on 100% loading and does still not go past it. all of my modded maps are so unplayable, i like, have no idea what to do https://mclo.gs/XHWCu5M
    • Here is the newest crash report because I've been trying to fix the problem for hours, please help me also its "error code -1"   ---- Minecraft Crash Report ---- // Daisy, daisy... Time: 2024-11-27 15:43:43 Description: Rendering screen java.lang.NoClassDefFoundError: org/spongepowered/asm/synthetic/args/Args$1     at net.minecraft.client.gui.GuiGraphics.m_280677_(GuiGraphics.java:562) ~[client-1.20.1-20230612.114412-srg.jar%23350!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:A,pl:runtimedistcleaner:A}     at net.minecraft.client.gui.GuiGraphics.renderTooltip(GuiGraphics.java:556) ~[client-1.20.1-20230612.114412-srg.jar%23350!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:A,pl:runtimedistcleaner:A}     at net.minecraft.client.gui.screens.inventory.AbstractContainerScreen.m_280072_(AbstractContainerScreen.java:163) ~[client-1.20.1-20230612.114412-srg.jar%23350!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:attributeslib.mixins.json:client.AbstractContainerScreenMixin,pl:mixin:APP:majruszlibrary-forge.mixins.json:MixinAbstractContainerScreen,plasmixin:A,pl:runtimedistcleaner:A}     at net.minecraft.client.gui.screens.inventoasasry.CreativeModeInventoryScreen.m_88315_(CreativeModeInventoryScreen.java:650) ~[client-1.20.1-20230612.114412-srg.jar%23350!/:?] {re:classloading,pl:runtimedistcleaner:A}     at net.minecraft.client.gui.screens.Screen.m_280264_(Screen.java:109) ~[client-1.20.1-20230612.114412-srg.jar%23350!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:computing_frames,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:patchouli_xplat.mixins.json:client.AccessorScreen,pl:mixin:APP:CustomCursor-comm-common.mixins.json:ScreenIgnoreRenderAfterOverlayMixin,pl:mixin:APP:CustomCursor-comm-common.mixins.json:ScreenMixin,pl:mixin:A,pl:runtimedistcleaner:A}     at net.minecraftforge.client.ForgeHooksClient.drawScreenInternal(ForgeHooksClient.java:427) ~[forge-1.20.1-47.3.0-universal.jar%23355!/:?] {re:classloading,re:mixin}     at net.minecraftforge.client.ForgeHooksClient.drawScreen(ForgeHooksClient.java:420) ~[forge-1.20.1-47.3.0-universal.jar%23355!/:?] {re:classloading,re:mixin}     at net.minecraft.client.renderer.GameRenderer.m_109093_(GameRenderer.java:965) ~[client-1.20.1-20230612.114412-srg.jar%23350!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:jeg.mixins.json:client.GameRendererMixin,pl:mixin:APP:alexscaves.mixins.json:client.GameRendererMixin,pl:mixin:APP:immediatelyfast-common.mixins.json:core.compat.MixinGameRenderer,pl:mixin:A,pl:runtimedistcleaner:A}     at net.minecraft.client.Minecraft.m_91383_(Minecraft.java:1146) ~[client-1.20.1-20230612.114412-srg.jar%23350!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:alexscaves.mixins.json:client.MinecraftMixin,pl:mixin:APP:modernfix-common.mixins.json:bugfix.world_leaks.MinecraftMixin,pl:mixin:APP:modernfix-common.mixins.json:bugfix.concurrency.MinecraftMixin,pl:mixin:APP:modernfix-common.mixins.json:perf.blast_search_trees.MinecraftMixin,pl:mixin:APP:modernfix-common.mixins.json:perf.dedicated_reload_executor.MinecraftMixin,pl:mixin:APP:modernfix-common.mixins.json:feature.measure_time.MinecraftMixin,pl:mixin:APP:modernfix-forge.mixins.json:feature.measure_time.MinecraftMixin_Forge,pl:mixin:APP:bookshelf.common.mixins.json:accessors.client.AccessorMinecraft,pl:mixin:APP:architectury.mixins.json:MixinMinecraft,pl:mixin:APP:monolib.mixins.json:MinecraftMixin,pl:mixin:APP:majruszlibrary-common.mixins.json:MixinMinecraft,pl:mixin:APP:jeg.mixins.json:client.MinecraftMixin,pl:mixin:APP:immediatelyfast-common.mixins.json:core.MixinMinecraftClient,pl:mixin:A,pl:runtimedistcleaner:A}     at net.minecraft.client.Minecraft.m_91374_(Minecraft.java:718) ~[client-1.20.1-20230612.114412-srg.jar%23350!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:alexscaves.mixins.json:client.MinecraftMixin,pl:mixin:APP:modernfix-common.mixins.json:bugfix.world_leaks.MinecraftMixin,pl:mixin:APP:modernfix-common.mixins.json:bugfix.concurrency.MinecraftMixin,pl:mixin:APP:modernfix-common.mixins.json:perf.blast_search_trees.MinecraftMixin,pl:mixin:APP:modernfix-common.mixins.json:perf.dedicated_reload_executor.MinecraftMixin,pl:mixin:APP:modernfix-common.mixins.json:feature.measure_time.MinecraftMixin,pl:mixin:APP:modernfix-forge.mixins.json:feature.measure_time.MinecraftMixin_Forge,pl:mixin:APP:bookshelf.common.mixins.json:accessors.client.AccessorMinecraft,pl:mixin:APP:architectury.mixins.json:MixinMinecraft,pl:mixin:APP:monolib.mixins.json:MinecraftMixin,pl:mixin:APP:majruszlibrary-common.mixins.json:MixinMinecraft,pl:mixin:APP:jeg.mixins.json:client.MinecraftMixin,pl:mixin:APP:immediatelyfast-common.mixins.json:core.MixinMinecraftClient,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:?] {} Caused by: java.lang.ClassNotFoundException: org.spongepowered.asm.synthetic.args.Args$1     at jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) ~[?:?] {}     at java.lang.ClassLoader.loadClass(ClassLoader.java:525) ~[?:?] {}     at cpw.mods.cl.ModuleClassLoader.loadClass(ModuleClassLoader.java:137) ~[securejarhandler-2.1.10.jar:?] {}     at java.lang.ClassLoader.loadClass(ClassLoader.java:525) ~[?:?] {}     at cpw.mods.cl.ModuleClassLoader.loadClass(ModuleClassLoader.java:137) ~[securejarhandler-2.1.10.jar:?] {}     at java.lang.ClassLoader.loadClass(ClassLoader.java:525) ~[?:?] {}     ... 26 more 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.minecraft.client.gui.GuiGraphics.m_280677_(GuiGraphics.java:562) ~[client-1.20.1-20230612.114412-srg.jar%23350!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:A,pl:runtimedistcleaner:A}     at net.minecraft.client.gui.GuiGraphics.renderTooltip(GuiGraphics.java:556) ~[client-1.20.1-20230612.114412-srg.jar%23350!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:A,pl:runtimedistcleaner:A}     at net.minecraft.client.gui.screens.inventory.AbstractContainerScreen.m_280072_(AbstractContainerScreen.java:163) ~[client-1.20.1-20230612.114412-srg.jar%23350!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:attributeslib.mixins.json:client.AbstractContainerScreenMixin,pl:mixin:APP:majruszlibrary-forge.mixins.json:MixinAbstractContainerScreen,pl:mixin:A,pl:runtimedistcleaner:A}     at net.minecraft.client.gui.screens.inventory.CreativeModeInventoryScreen.m_88315_(CreativeModeInventoryScreen.java:650) ~[client-1.20.1-20230612.114412-srg.jar%23350!/:?] {re:classloading,pl:runtimedistcleaner:A}     at net.minecraft.client.gui.screens.Screen.m_280264_(Screen.java:109) ~[client-1.20.1-20230612.114412-srg.jar%23350!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:computing_frames,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:patchouli_xplat.mixins.json:client.AccessorScreen,pl:mixin:APP:CustomCursor-comm-common.mixins.json:ScreenIgnoreRenderAfterOverlayMixin,pl:mixin:APP:CustomCursor-comm-common.mixins.json:ScreenMixin,pl:mixin:A,pl:runtimedistcleaner:A}     at net.minecraftforge.client.ForgeHooksClient.drawScreenInternal(ForgeHooksClient.java:427) ~[forge-1.20.1-47.3.0-universal.jar%23355!/:?] {re:classloading,re:mixin}     at net.minecraftforge.client.ForgeHooksClient.drawScreen(ForgeHooksClient.java:420) ~[forge-1.20.1-47.3.0-universal.jar%23355!/:?] {re:classloading,re:mixin} -- Screen render details -- Details:     Screen name: net.minecraft.client.gui.screens.inventory.CreativeModeInventoryScreen     Mouse location: Scaled: (273, 153). Absolute: (546.000000, 307.000000)     Screen size: Scaled: (547, 308). Absolute: (1093, 615). Scale factor of 2.000000 Stacktrace:     at net.minecraft.client.renderer.GameRenderer.m_109093_(GameRenderer.java:965) ~[client-1.20.1-20230612.114412-srg.jar%23350!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:jeg.mixins.json:client.GameRendererMixin,pl:mixin:APP:alexscaves.mixins.json:client.GameRendererMixin,pl:mixin:APP:immediatelyfast-common.mixins.json:core.compat.MixinGameRenderer,pl:mixin:A,pl:runtimedistcleaner:A}     at net.minecraft.client.Minecraft.m_91383_(Minecraft.java:1146) ~[client-1.20.1-20230612.114412-srg.jar%23350!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:alexscaves.mixins.json:client.MinecraftMixin,pl:mixin:APP:modernfix-common.mixins.json:bugfix.world_leaks.MinecraftMixin,pl:mixin:APP:modernfix-common.mixins.json:bugfix.concurrency.MinecraftMixin,pl:mixin:APP:modernfix-common.mixins.json:perf.blast_search_trees.MinecraftMixin,pl:mixin:APP:modernfix-common.mixins.json:perf.dedicated_reload_executor.MinecraftMixin,pl:mixin:APP:modernfix-common.mixins.json:feature.measure_time.MinecraftMixin,pl:mixin:APP:modernfix-forge.mixins.json:feature.measure_time.MinecraftMixin_Forge,pl:mixin:APP:bookshelf.common.mixins.json:accessors.client.AccessorMinecraft,pl:mixin:APP:architectury.mixins.json:MixinMinecraft,pl:mixin:APP:monolib.mixins.json:MinecraftMixin,pl:mixin:APP:majruszlibrary-common.mixins.json:MixinMinecraft,pl:mixin:APP:jeg.mixins.json:client.MinecraftMixin,pl:mixin:APP:immediatelyfast-common.mixins.json:core.MixinMinecraftClient,pl:mixin:A,pl:runtimedistcleaner:A}     at net.minecraft.client.Minecraft.m_91374_(Minecraft.java:718) ~[client-1.20.1-20230612.114412-srg.jar%23350!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:alexscaves.mixins.json:client.MinecraftMixin,pl:mixin:APP:modernfix-common.mixins.json:bugfix.world_leaks.MinecraftMixin,pl:mixin:APP:modernfix-common.mixins.json:bugfix.concurrency.MinecraftMixin,pl:mixin:APP:modernfix-common.mixins.json:perf.blast_search_trees.MinecraftMixin,pl:mixin:APP:modernfix-common.mixins.json:perf.dedicated_reload_executor.MinecraftMixin,pl:mixin:APP:modernfix-common.mixins.json:feature.measure_time.MinecraftMixin,pl:mixin:APP:modernfix-forge.mixins.json:feature.measure_time.MinecraftMixin_Forge,pl:mixin:APP:bookshelf.common.mixins.json:accessors.client.AccessorMinecraft,pl:mixin:APP:architectury.mixins.json:MixinMinecraft,pl:mixin:APP:monolib.mixins.json:MinecraftMixin,pl:mixin:APP:majruszlibrary-common.mixins.json:MixinMinecraft,pl:mixin:APP:jeg.mixins.json:client.MinecraftMixin,pl:mixin:APP:immediatelyfast-common.mixins.json:core.MixinMinecraftClient,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:?] {} -- Affected level -- Details:     All players: 1 total; [LocalPlayer['muglad'/4, l='ClientLevel', x=11.34, y=-62.50, z=7.05]]     Chunk stats: 529, 313     Level dimension: minecraft:overworld     Level spawn location: World: (0,-63,0), Section: (at 0,1,0 in 0,-4,0; chunk contains blocks 0,-64,0 to 15,319,15), Region: (0,0; contains chunks 0,0 to 31,31, blocks 0,-64,0 to 511,319,511)     Level time: 522 game time, 522 day time     Server brand: forge     Server type: Integrated singleplayer server Stacktrace:     at net.minecraft.client.multiplayer.ClientLevel.m_6026_(ClientLevel.java:455) ~[client-1.20.1-20230612.114412-srg.jar%23350!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:citadel.mixins.json:client.ClientLevelMixin,pl:mixin:APP:architectury.mixins.json:MixinClientLevel,pl:mixin:APP:majruszlibrary-common.mixins.json:MixinClientLevel,pl:mixin:APP:starlight.mixins.json:client.world.ClientLevelMixin,pl:mixin:APP:alexscaves.mixins.json:client.ClientLevelMixin,pl:mixin:A,pl:runtimedistcleaner:A}     at net.minecraft.client.Minecraft.m_91354_(Minecraft.java:2319) ~[client-1.20.1-20230612.114412-srg.jar%23350!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:alexscaves.mixins.json:client.MinecraftMixin,pl:mixin:APP:modernfix-common.mixins.json:bugfix.world_leaks.MinecraftMixin,pl:mixin:APP:modernfix-common.mixins.json:bugfix.concurrency.MinecraftMixin,pl:mixin:APP:modernfix-common.mixins.json:perf.blast_search_trees.MinecraftMixin,pl:mixin:APP:modernfix-common.mixins.json:perf.dedicated_reload_executor.MinecraftMixin,pl:mixin:APP:modernfix-common.mixins.json:feature.measure_time.MinecraftMixin,pl:mixin:APP:modernfix-forge.mixins.json:feature.measure_time.MinecraftMixin_Forge,pl:mixin:APP:bookshelf.common.mixins.json:accessors.client.AccessorMinecraft,pl:mixin:APP:architectury.mixins.json:MixinMinecraft,pl:mixin:APP:monolib.mixins.json:MinecraftMixin,pl:mixin:APP:majruszlibrary-common.mixins.json:MixinMinecraft,pl:mixin:APP:jeg.mixins.json:client.MinecraftMixin,pl:mixin:APP:immediatelyfast-common.mixins.json:core.MixinMinecraftClient,pl:mixin:A,pl:runtimedistcleaner:A}     at net.minecraft.client.Minecraft.m_91374_(Minecraft.java:735) ~[client-1.20.1-20230612.114412-srg.jar%23350!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:alexscaves.mixins.json:client.MinecraftMixin,pl:mixin:APP:modernfix-common.mixins.json:bugfix.world_leaks.MinecraftMixin,pl:mixin:APP:modernfix-common.mixins.json:bugfix.concurrency.MinecraftMixin,pl:mixin:APP:modernfix-common.mixins.json:perf.blast_search_trees.MinecraftMixin,pl:mixin:APP:modernfix-common.mixins.json:perf.dedicated_reload_executor.MinecraftMixin,pl:mixin:APP:modernfix-common.mixins.json:feature.measure_time.MinecraftMixin,pl:mixin:APP:modernfix-forge.mixins.json:feature.measure_time.MinecraftMixin_Forge,pl:mixin:APP:bookshelf.common.mixins.json:accessors.client.AccessorMinecraft,pl:mixin:APP:architectury.mixins.json:MixinMinecraft,pl:mixin:APP:monolib.mixins.json:MinecraftMixin,pl:mixin:APP:majruszlibrary-common.mixins.json:MixinMinecraft,pl:mixin:APP:jeg.mixins.json:client.MinecraftMixin,pl:mixin:APP:immediatelyfast-common.mixins.json:core.MixinMinecraftClient,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: Yes     Packs: vanilla, mod_resources -- 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: 1400903168 bytes (1336 MiB) / 3370123264 bytes (3214 MiB) up to 4261412864 bytes (4064 MiB)     CPUs: 4     Processor Vendor: GenuineIntel     Processor Name: 11th Gen Intel(R) Core(TM) i3-1115G4 @ 3.00GHz     Identifier: Intel64 Family 6 Model 140 Stepping 1     Microarchitecture: Tiger Lake     Frequency (GHz): 3.00     Number of physical packages: 1     Number of physical CPUs: 2     Number of logical CPUs: 4     Graphics card #0 name: Intel(R) UHD Graphics     Graphics card #0 vendor: Intel Corporation (0x8086)     Graphics card #0 VRAM (MB): 128.00     Graphics card #0 deviceId: 0x9a78     Graphics card #0 versionInfo: DriverVersion=31.0.101.5186     Memory slot #0 capacity (MB): 4096.00     Memory slot #0 clockSpeed (GHz): 3.20     Memory slot #0 type: DDR4     Memory slot #1 capacity (MB): 4096.00     Memory slot #1 clockSpeed (GHz): 3.20     Memory slot #1 type: DDR4     Virtual memory max (MB): 19346.77     Virtual memory used (MB): 17116.04     Swap memory total (MB): 11511.14     Swap memory used (MB): 2066.14     JVM Flags: 4 total; -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump -Xss1M -Xmx4064m -Xms256m     Launched Version: forge-47.3.0     Backend library: LWJGL version 3.3.1 build 7     Backend API: Intel(R) UHD Graphics GL version 4.6.0 - Build 31.0.101.5186, Intel     Window size: 1093x615     GL Caps: Using framebuffer using OpenGL 3.2     GL debug messages:      Using VBOs: Yes     Is Modded: Definitely; Client brand changed to 'forge'; Server brand changed to 'forge'     Type: Integrated Server (map_client.txt)     Graphics mode: fast     Resource Packs:      Current Language: en_us     CPU: 4x 11th Gen Intel(R) Core(TM) i3-1115G4 @ 3.00GHz     Server Running: true     Player Count: 1 / 8; [ServerPlayer['muglad'/4, l='ServerLevel[New Worldassssssssssssasasas]', x=11.34, y=-62.50, z=7.05]]     Data Packs: vanilla, mod:elevated_enchantment, mod:treechopper (incompatible), mod:quarryplus, mod:geckolib, mod:playeranimator (incompatible), mod:placebo (incompatible), mod:modernfix (incompatible), mod:citadel (incompatible), mod:mixinextras (incompatible), mod:morebuckets, mod:botanypotstiers (incompatible), mod:bookshelf, mod:ironshulkerbox, mod:ironbookshelves, mod:raw_iron_block_can_be_heated, mod:iron_extra_things, mod:cloth_config (incompatible), mod:more_villager_trades, mod:ironbows (incompatible), mod:industrialforegoing (incompatible), mod:farmersdelight, mod:iron_ender_chests, mod:ironfurnaces, mod:structurecompass, mod:lionfishapi (incompatible), mod:mysticaladaptations, mod:maxxam_aiot, mod:structureexpansion (incompatible), mod:patchouli (incompatible), mod:ironchests (incompatible), mod:advancednetherite, mod:mysticalagriculturedelight, mod:gk_unbreakable (incompatible), mod:attributeslib (incompatible), mod:mysticalcustomization, mod:mifa, mod:resourcefullib (incompatible), mod:veinst, mod:architectury (incompatible), mod:squatgrow (incompatible), mod:xenotech (incompatible), mod:monolib (incompatible), mod:disenchanting_table (incompatible), mod:more_bows_and_arrows (incompatible), mod:hasteenchantment, mod:quad (incompatible), mod:ironcoals (incompatible), mod:framework, mod:nebs (incompatible), mod:majruszlibrary (incompatible), mod:fixed_netherite, mod:x_player_info (incompatible), mod:cucumber, mod:jeg (incompatible), mod:ironladders, mod:attributefix (incompatible), mod:configlibtxf, mod:fortune_on_netherite_forge, mod:caelus (incompatible), mod:enchantment_reveal (incompatible), mod:botanypots (incompatible), mod:starlight (incompatible), mod:grand_enchantment_table, mod:iron_bushes, mod:iron_fishing_rods, mod:puzzlesaccessapi, mod:forge, mod:more_wandering_trades, mod:mctb (incompatible), mod:mteg (incompatible), mod:mysticalagriculture, mod:mysticalagradditions, mod:matc, mod:mysticriftsmelt_ancient_debris, mod:more_underground_structures, mod:lucky (incompatible), mod:aurorasarsenal (incompatible), mod:alexscaves, mod:more_useful_copper (incompatible), mod:enchdesc (incompatible), mod:customcursorcomm (incompatible), mod:titanium (incompatible), mod:mysterious_mountain_lib (incompatible), mod:ironspawners, mod:enchlevellangpatch (incompatible), mod:vtaw_mw (incompatible), mod:mr_reds_morestructures, mod:watching, mod:ironbarrels, mod:mysticalexpansion, mod:easy_emerald, mod:more_beautiful_torches (incompatible), mod:universalenchants, mod:immediatelyfast (incompatible), mod:moremobvariants, mod:ferritecore (incompatible), mod:mvw, mod:puzzleslib, mod:overpowered_creative_items, mod:overloadedarmorbar (incompatible), mod:overflowingbars     Enabled Feature Flags: minecraft:vanilla     World Generation: Stable     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]         lowcodefml@null         [email protected]         javafml@null     Mod List:          Elevated enchantment-forge_1.20.1.jar             |Elevated enchantment          |elevated_enchantment          |1.0.0               |DONE      |Manifest: NOSIGNATURE         treechopper-1.0.0.jar                             |TreeChopper                   |treechopper                   |1.0.0               |DONE      |Manifest: NOSIGNATURE         AdditionalEnchantedMiner-1.20.1-1201.1.90.jar     |QuarryPlus                    |quarryplus                    |1201.1.90           |DONE      |Manifest: ef:50:af:b3:03:e0:3e:70:a7:ef:78:77:a5:4d:d4:b5:07:ec:df:9d:d6:f3:12:13:c9:3c:cd:9a:0a:3e:6b:43         geckolib-forge-1.20.1-4.4.9.jar                   |GeckoLib 4                    |geckolib                      |4.4.9               |DONE      |Manifest: NOSIGNATURE         player-animation-lib-forge-1.0.2-rc1+1.20.jar     |Player Animator               |playeranimator                |1.0.2-rc1+1.20      |DONE      |Manifest: NOSIGNATURE         Placebo-1.20.1-8.6.2.jar                          |Placebo                       |placebo                       |8.6.2               |DONE      |Manifest: NOSIGNATURE         modernfix-forge-5.19.5+mc1.20.1.jar               |ModernFix                     |modernfix                     |5.19.5+mc1.20.1     |DONE      |Manifest: NOSIGNATURE         citadel-2.6.0-1.20.1.jar                          |Citadel                       |citadel                       |2.6.0               |DONE      |Manifest: NOSIGNATURE         mixinextras-forge-0.4.1.jar                       |MixinExtras                   |mixinextras                   |0.4.1               |DONE      |Manifest: NOSIGNATURE         MoreBuckets-1.20.1-4.0.4.jar                      |More Buckets                  |morebuckets                   |4.0.4               |DONE      |Manifest: NOSIGNATURE         BotanyPotsTiers-Forge-1.20.1-6.0.1.jar            |BotanyPotsTiers               |botanypotstiers               |6.0.1               |DONE      |Manifest: NOSIGNATURE         Bookshelf-Forge-1.20.1-20.2.13.jar                |Bookshelf                     |bookshelf                     |20.2.13             |DONE      |Manifest: eb:c4:b1:67:8b:f9:0c:db:dc:4f:01:b1:8e:61:64:39:4c:10:85:0b:a6:c4:c7:48:f0:fa:95:f2:cb:08:3a:e5         ironshulkerbox-1.20.1-5.3.2.jar                   |Iron Shulker Boxes            |ironshulkerbox                |1.20.1-5.3.2        |DONE      |Manifest: NOSIGNATURE         ironbookshelves-1.20.1-1.4.0-forge.jar            |Iron Bookshelves              |ironbookshelves               |1.20.1-1.4.0-forge  |DONE      |Manifest: NOSIGNATURE         raw_iron_block_can_heated-1.0.0-forge-1.20.1.jar  |Raw Iron Block can be heated  |raw_iron_block_can_be_heated  |1.0.0               |DONE      |Manifest: NOSIGNATURE         Iron Extra Things 1.0.6.jar                       |Iron Extra Things             |iron_extra_things             |1.0.5               |DONE      |Manifest: NOSIGNATURE         cloth-config-11.1.136-forge.jar                   |Cloth Config v10 API          |cloth_config                  |11.1.136            |DONE      |Manifest: NOSIGNATURE         More Villager Trades 1.0.0 - 1.20.1.jar           |More Villager Trades          |more_villager_trades          |1.0.0               |DONE      |Manifest: NOSIGNATURE         ironbows-1.20.1-FORGE-1.10.jar                    |Iron Bows (Forge)             |ironbows                      |1.20.1-FORGE-1.10   |DONE      |Manifest: NOSIGNATURE         industrial-foregoing-1.20.1-3.5.19.jar            |Industrial Foregoing          |industrialforegoing           |3.5.19              |DONE      |Manifest: NOSIGNATURE         FarmersDelight-1.20.1-1.2.5.jar                   |Farmer's Delight              |farmersdelight                |1.20.1-1.2.5        |DONE      |Manifest: NOSIGNATURE         iron_ender_chests-1.20-1.0.3.jar                  |Iron Ender Chests             |iron_ender_chests             |1.20-1.0.3          |DONE      |Manifest: NOSIGNATURE         ironfurnaces-1.20.1-4.1.6.jar                     |Iron Furnaces                 |ironfurnaces                  |4.1.6               |DONE      |Manifest: NOSIGNATURE         StructureCompass-1.20.1-2.1.0.jar                 |Structure Compass Mod         |structurecompass              |2.1.0               |DONE      |Manifest: NOSIGNATURE         lionfishapi-2.4-Fix.jar                           |LionfishAPI                   |lionfishapi                   |2.4-Fix             |DONE      |Manifest: NOSIGNATURE         MysticalAdaptations-1.20.1-1.0.1.jar              |Mystical Adaptations          |mysticaladaptations           |1.20.1-1.0.1        |DONE      |Manifest: NOSIGNATURE         AIOT 1.20.1 (v2.3) by 96maxxam69.jar              |maxxam AIOTs                  |maxxam_aiot                   |2.3                 |DONE      |Manifest: NOSIGNATURE         structure-expansion-2.0.1-build.11.jar            |Structure Expansion           |structureexpansion            |2.0.1-build.11      |DONE      |Manifest: NOSIGNATURE         Patchouli-1.20.1-84-FORGE.jar                     |Patchouli                     |patchouli                     |1.20.1-84-FORGE     |DONE      |Manifest: NOSIGNATURE         ironchests-5.0.2-forge.jar                        |Iron Chests: Restocked        |ironchests                    |5.0.2               |DONE      |Manifest: NOSIGNATURE         advancednetherite-forge-2.1.3-1.20.1.jar          |Advanced Netherite            |advancednetherite             |2.1.3               |DONE      |Manifest: NOSIGNATURE         mysticalagriculturedelight-1.0.2-1.20.1.jar       |Mystical Agriculture Delight  |mysticalagriculturedelight    |1.0.2-1.20.1        |DONE      |Manifest: NOSIGNATURE         gk_unbreakable-2.7.jar                            |Simple Unbreakable Tools      |gk_unbreakable                |2.7                 |DONE      |Manifest: NOSIGNATURE         ApothicAttributes-1.20.1-1.3.7.jar                |Apothic Attributes            |attributeslib                 |1.3.7               |DONE      |Manifest: NOSIGNATURE         MysticalCustomization-1.20.1-5.0.2.jar            |Mystical Customization        |mysticalcustomization         |5.0.2               |DONE      |Manifest: NOSIGNATURE         mifa-forge-1.20.x-1.1.1.jar                       |More Industrial Foregoing Addo|mifa                          |1.1.1               |DONE      |Manifest: NOSIGNATURE         resourcefullib-forge-1.20-2.0.6.jar               |Resourceful Lib               |resourcefullib                |2.0.6               |DONE      |Manifest: NOSIGNATURE         veinst-1.0.0.jar                                  |Veinst                        |veinst                        |1.0.0               |DONE      |Manifest: NOSIGNATURE         architectury-9.2.14-forge.jar                     |Architectury                  |architectury                  |9.2.14              |DONE      |Manifest: NOSIGNATURE         squatgrow-forge-5.3.0+mc1.20.1.jar                |Squat Grow                    |squatgrow                     |5.3.0+mc1.20.1      |DONE      |Manifest: NOSIGNATURE         xenotech-1.20.1-1.17.jar                          |XenoTech                      |xenotech                      |1.20.1-1.17         |DONE      |Manifest: NOSIGNATURE         monolib-forge-1.20.1-1.4.1.jar                    |MonoLib                       |monolib                       |1.4.1               |DONE      |Manifest: NOSIGNATURE         disenchanting_table-merged-1.20.1-3.1.0.jar       |Dis-Enchanting Table          |disenchanting_table           |3.1.0               |DONE      |Manifest: NOSIGNATURE         more_bows_and_arrows-merged-1.20.1-3.2.0.jar      |More Bows and Arrows          |more_bows_and_arrows          |3.2.0               |DONE      |Manifest: NOSIGNATURE         Haste Enchantment 1.0.0 - 1.20.1.jar              |Haste Enchantment             |hasteenchantment              |1.0.0               |DONE      |Manifest: NOSIGNATURE         Quad-1.2.9+1.20.4-Forge.jar                       |Quad                          |quad                          |1.2.9               |DONE      |Manifest: NOSIGNATURE         ironcoals-4.1.6.jar                               |Iron Coals                    |ironcoals                     |4.1.6               |DONE      |Manifest: NOSIGNATURE         framework-forge-1.20.1-0.7.12.jar                 |Framework                     |framework                     |0.7.12              |DONE      |Manifest: 0d:78:5f:44:c0:47:0c:8c:e2:63:a3:04:43:d4:12:7d:b0:7c:35:37:dc:40:b1:c1:98:ec:51:eb:3b:3c:45:99         NekosEnchantedBooks-1.20.1-1.8.0.jar              |Neko's Enchanted Books        |nebs                          |1.8.0               |DONE      |Manifest: NOSIGNATURE         majrusz-library-forge-1.20.1-7.0.8.jar            |Majrusz Library               |majruszlibrary                |7.0.8               |DONE      |Manifest: NOSIGNATURE         ReworkedNetheriteV2.jar                           |Fixed netherite               |fixed_netherite               |1.0.0               |DONE      |Manifest: NOSIGNATURE         X-PlayerInfo-1.20.1-1.0.8.1-SNAPSHOT.jar          |X-PlayerInfo                  |x_player_info                 |1.20.1-1.0.8.1-SNAPS|DONE      |Manifest: NOSIGNATURE         Cucumber-1.20.1-7.0.13.jar                        |Cucumber Library              |cucumber                      |7.0.13              |DONE      |Manifest: NOSIGNATURE         JustEnoughGuns-0.8.0-1.20.1.jar                   |Just Enough Guns              |jeg                           |0.8.0               |DONE      |Manifest: NOSIGNATURE         ironladders-1.20.1-2.5.10-forge.jar               |Iron Ladders                  |ironladders                   |2.5.10              |DONE      |Manifest: NOSIGNATURE         AttributeFix-Forge-1.20.1-21.0.4.jar              |AttributeFix                  |attributefix                  |21.0.4              |DONE      |Manifest: eb:c4:b1:67:8b:f9:0c:db:dc:4f:01:b1:8e:61:64:39:4c:10:85:0b:a6:c4:c7:48:f0:fa:95:f2:cb:08:3a:e5         configlibtxf-4.2.5-forge.jar                      |ConfigLib TXF                 |configlibtxf                  |4.2.5-forge         |DONE      |Manifest: NOSIGNATURE         fortune_on_netherite_1.1.0_forge_1.20.1.jar       |Fortune on Netherite forge    |fortune_on_netherite_forge    |1.0.0               |DONE      |Manifest: NOSIGNATURE         caelus-forge-3.2.0+1.20.1.jar                     |Caelus API                    |caelus                        |3.2.0+1.20.1        |DONE      |Manifest: NOSIGNATURE         Enchantment-Reveal-1.20.1-Forge.jar               |Enchantment Reveal            |enchantment_reveal            |1.0.0               |DONE      |Manifest: NOSIGNATURE         BotanyPots-Forge-1.20.1-13.0.39.jar               |BotanyPots                    |botanypots                    |13.0.39             |DONE      |Manifest: NOSIGNATURE         starlight-1.1.2+forge.1cda73c.jar                 |Starlight                     |starlight                     |1.1.2+forge.1cda73c |DONE      |Manifest: NOSIGNATURE         Grand Enchantment Table 1.0.0 - 1.20.1.jar        |Grand Enchantment Table       |grand_enchantment_table       |1.0.0               |DONE      |Manifest: NOSIGNATURE         Iron Bushes 1.0.0 - 1.20.1.jar                    |Iron Bushes                   |iron_bushes                   |1.0.0               |DONE      |Manifest: NOSIGNATURE         Iron Fishing Rods 1.0.0 - 1.20.1.jar              |Iron Fishing Rods             |iron_fishing_rods             |1.0.0               |DONE      |Manifest: NOSIGNATURE         puzzlesaccessapi-forge-8.0.7.jar                  |Puzzles Access Api            |puzzlesaccessapi              |8.0.7               |DONE      |Manifest: 9a:09:85:98:65:c4:8c:11:c5:49:f6:d6:33:23:39:df:8d:b4:ff:92:84:b8:bd:a5:83:9f:ac:7f:2a:d1:4b:6a         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         More Wandering Trades 1.0.0 - 1.20.1.jar          |More Wandering Trades         |more_wandering_trades         |1.0.0               |DONE      |Manifest: NOSIGNATURE         [1.20.1]MoreCraftingTables-5.1.3.jar              |More Crafting Tables Mod      |mctb                          |1.20.1              |DONE      |Manifest: NOSIGNATURE         M'TEG-1.1.0-1.20.1.jar                            |Mo' Than Enough Guns          |mteg                          |1.1.0               |DONE      |Manifest: NOSIGNATURE         MysticalAgriculture-1.20.1-7.0.14.jar             |Mystical Agriculture          |mysticalagriculture           |7.0.14              |DONE      |Manifest: NOSIGNATURE         MysticalAgradditions-1.20.1-7.0.6.jar             |Mystical Agradditions         |mysticalagradditions          |7.0.6               |DONE      |Manifest: NOSIGNATURE         matc-1.6.0.jar                                    |Mystical Agriculture Tiered Cr|matc                          |1.6.0               |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         mysticriftsmelt_ancient_debris-1.2.2-forge-1.20.1.|MysticRift:Smelt Ancient Debri|mysticriftsmelt_ancient_debris|1.2.2               |DONE      |Manifest: NOSIGNATURE         more_undrground_structures_1.20.1_8.1.jar         |more underground structures   |more_underground_structures   |7.1.0               |DONE      |Manifest: NOSIGNATURE         lucky-block-forge-1.20.1-13.0.jar                 |Lucky Block                   |lucky                         |1.20.1-13.0         |DONE      |Manifest: NOSIGNATURE         Aurora's-Arsenal-1.0.0-1.20.1.jar                 |Aurora's Arsenal              |aurorasarsenal                |1.0.0               |DONE      |Manifest: NOSIGNATURE         alexscaves-2.0.2.jar                              |Alex's Caves                  |alexscaves                    |2.0.2               |DONE      |Manifest: NOSIGNATURE         more_useful_copper-merged-1.20.1-1.2.0.jar        |More Useful Copper            |more_useful_copper            |1.2.0               |DONE      |Manifest: NOSIGNATURE         EnchantmentDescriptions-Forge-1.20.1-17.1.19.jar  |EnchantmentDescriptions       |enchdesc                      |17.1.19             |DONE      |Manifest: eb:c4:b1:67:8b:f9:0c:db:dc:4f:01:b1:8e:61:64:39:4c:10:85:0b:a6:c4:c7:48:f0:fa:95:f2:cb:08:3a:e5         CustomCursor-comm-1.2.0-forge.jar                 |customcursorcomm              |customcursorcomm              |1.0-SNAPSHOT        |DONE      |Manifest: NOSIGNATURE         titanium-1.20.1-3.8.32.jar                        |Titanium                      |titanium                      |3.8.32              |DONE      |Manifest: NOSIGNATURE         mysterious_mountain_lib-1.5.17-1.20.1.jar         |Mysterious Mountain Lib       |mysterious_mountain_lib       |1.5.17-1.20.1       |DONE      |Manifest: NOSIGNATURE         ironspawners-1.0.0.jar                            |Iron Spawners                 |ironspawners                  |1.0.0               |DONE      |Manifest: NOSIGNATURE         enchlevel-langpatch-2.2.8.jar                     |Enchantment Level Language Pat|enchlevellangpatch            |2.2.8               |DONE      |Manifest: NOSIGNATURE         vtaw_mw-forge-1.20.1-1.0.4.jar                    |Variant Tools and Weaponry - E|vtaw_mw                       |1.0.4               |DONE      |Manifest: NOSIGNATURE         reds-more-structures-1.0.8-common.jar             |Red’s More Structures         |mr_reds_morestructures        |1.0.8               |DONE      |Manifest: NOSIGNATURE         From-The-Fog-1.20-v1.9.2-Forge-Fabric.jar         |From The Fog                  |watching                      |1.9.2               |DONE      |Manifest: NOSIGNATURE         IronBarrels1.20.1-V1.0.jar                        |IronBarrelsUpdated            |ironbarrels                   |1.0.0               |DONE      |Manifest: NOSIGNATURE         MysticalExpansion-1.20.1-1.0.0.jar                |Mystical Expansion            |mysticalexpansion             |1.0.0               |DONE      |Manifest: NOSIGNATURE         EasyEmerald-Forge-1.20.1-1.5.8.jar                |Easy Emerald                  |easy_emerald                  |1.5.8               |DONE      |Manifest: NOSIGNATURE         more_beautiful_torches-merged-1.20.1-3.0.0.jar    |More Beautiful Torches!       |more_beautiful_torches        |3.0.0               |DONE      |Manifest: NOSIGNATURE         UniversalEnchants-v8.0.0-1.20.1-Forge.jar         |Universal Enchants            |universalenchants             |8.0.0               |DONE      |Manifest: 9a:09:85:98:65:c4:8c:11:c5:49:f6:d6:33:23:39:df:8d:b4:ff:92:84:b8:bd:a5:83:9f:ac:7f:2a:d1:4b:6a         ImmediatelyFast-Forge-1.3.2+1.20.4.jar            |ImmediatelyFast               |immediatelyfast               |1.3.2+1.20.4        |DONE      |Manifest: NOSIGNATURE         moremobvariants-forge+1.20.1-1.3.0.1.jar          |More Mob Variants             |moremobvariants               |1.3.0.1             |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         Mvw-2.3.3c.jar                                    |MoreVanillaWeapons            |mvw                           |2.3.3c              |DONE      |Manifest: NOSIGNATURE         PuzzlesLib-v8.1.25-1.20.1-Forge.jar               |Puzzles Lib                   |puzzleslib                    |8.1.25              |DONE      |Manifest: 9a:09:85:98:65:c4:8c:11:c5:49:f6:d6:33:23:39:df:8d:b4:ff:92:84:b8:bd:a5:83:9f:ac:7f:2a:d1:4b:6a         Overpowered Creative Items.jar                    |Overpowered Creative Items    |overpowered_creative_items    |1.0.0               |DONE      |Manifest: NOSIGNATURE         overloadedarmorbar-1.20.1-1.jar                   |Overloaded Armor Bar          |overloadedarmorbar            |1.20.1-1            |DONE      |Manifest: NOSIGNATURE         OverflowingBars-v8.0.1-1.20.1-Forge.jar           |Overflowing Bars              |overflowingbars               |8.0.1               |DONE      |Manifest: 9a:09:85:98:65:c4:8c:11:c5:49:f6:d6:33:23:39:df:8d:b4:ff:92:84:b8:bd:a5:83:9f:ac:7f:2a:d1:4b:6a     Crash Report UUID: ccaf101c-823f-47b9-9c2f-7d3d0db92823     FML: 47.3     Forge: net.minecraftforge:47.3.0
    • You could try posting a log (if there is no log at all, it may be the launcher you are using, the FAQ may have info on how to enable the log) as described in the FAQ, however this will probably need to be reported to/remedied by the mod author.
  • Topics

  • Who's Online (See full list)

×
×
  • Create New...

Important Information

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