Jump to content

[1.8.9] Re: Arrays of Blocks, Items, etc


kramlat

Recommended Posts

I am planning a very unique mod, called Customcraft (allows you to create custom blocks, biomes, items, entities, etc from inside minecraft while loaded by commands, textures and locale would use a resource pack to apply if the names are totally custom) and I have a question.  What is the max number within reason that one could have of blocks, items, biomes, entities, and dimensions loaded by a mod without a crash?

 

 

This will help with construction of an array to avoid pointers.

Link to comment
Share on other sites

4096 is the limit on blocks, from vanilla plus all loaded mods.

I think the item limit is 32,000ish.

Biomes are limited to 255, IIRC.

Mobs are limited to 255 per mod.

Dimensions are effectively unlimited (Mystcraft and RF Tools both allow players to create dimensions).  The dimension ID is a signed integer.

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

 

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

 

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

Link to comment
Share on other sites

thanks, that is exactly what I asked for.  I guess it is time to make the array structures (will declare static final so that preinit() can do the work of defining all that stuff and load() can do the saved registrations, and also I can use an index to push new blocks into the array and register them at runtime.

 

Mobs are limited to 255 per mod.

Not true. Mod entities can use the complete integer range.

char, short, or long?
Link to comment
Share on other sites

Not true. Mod entities can use the complete integer range.

 

Huh.  Never looked into it, I guess.

 

char, short, or long?

 

Integer, which is 32 bits.

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

 

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

 

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

Link to comment
Share on other sites

Block ids are from 256 (below is minecraft) to 4096, so 3840 in total.

Item ids are from 4096 to 32767, so 28671 in total.

 

Side note: some of these limits can be raised, but require hell lot of bytecode manipultions and frequently cause severe compatibility problems.

Link to comment
Share on other sites

Save the config to a static variable in your main class.

Access it from anywhere.

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

 

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

 

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

Link to comment
Share on other sites

Save the config to a static variable in your main class.

Access it from anywhere.

Already did that, just how do you write to it.  There is an overloaded get() function, but not an overloaded set() method. I also indexed all of Materials and SoundTypes with ints the main class. by indexed with ints I mean I used an int value and a switch / case structure that assigns existing Materials and SoundTypes to variables that we used to build the block to be registered.

 

main class:

package org.CyberneticStudios.CustomBlocks;

import java.io.File;

import org.CyberneticStudios.CustomBlocks.Block.BlockCustom;
import org.CyberneticStudios.CustomBlocks.common.CommonProxy;

import net.minecraft.block.Block;
import net.minecraft.block.Block.SoundType;
import net.minecraft.block.material.Material;
import net.minecraft.client.Minecraft;
import net.minecraft.client.resources.model.ModelResourceLocation;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraftforge.common.config.Configuration;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.Mod.EventHandler;
import net.minecraftforge.fml.common.Mod.Instance;
import net.minecraftforge.fml.common.SidedProxy;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
import net.minecraftforge.fml.common.registry.GameRegistry;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;

@Mod(modid=CustomBlocks.MODID, name=CustomBlocks.MODNAME, version=CustomBlocks.MODVER) //Tell forge "Oh hey, there's a new mod here to load."
public class CustomBlocks //Start the class Declaration
{
    //Set the ID of the mod (Should be lower case).
    public static final String MODID = "customBlocks";
    //Set the "Name" of the mod.
    public static final String MODNAME = "Custom Blocks";
    //Set the version of the mod.
    public static final String MODVER = "0.0.0";

    @Instance(value = CustomBlocks.MODID) //Tell Forge what instance to use.
    public static CustomBlocks instance;
    @SidedProxy(clientSide="org.CyberneticStudios.CustomBlocks.client.ClientProxy", serverSide="org.CyberneticStudios.CustomBlocks.common.CommonProxy")
    public static CommonProxy proxy;
    
    //Used for creative tab
    public final static Block customBlock = new BlockCustom(Material.ground)
            .setHardness(0.5F).setStepSound(Block.soundTypeGravel)
            .setUnlocalizedName("custom_block");
    
    public static final CreativeTabs customBlocks= new CreativeTabs("custom_blocks") {
        @Override
        @SideOnly(Side.CLIENT)
        public Item getTabIconItem(){
            ItemStack iStack = new ItemStack(customBlock);
            return iStack.getItem();
        }
    };
    
    //empty stack of allocated blocks
    public static Block[] emptyBlocks = new Block[3839];
    
    //now we need an index
    public static int blockIndex;
    
    //set up configuration
    public static File configFile;
    public static Configuration config;

    @EventHandler
    public void preInit(FMLPreInitializationEvent event)
    {
        // you will be able to find the config file in .minecraft/config/ and it will be named Dummy.cfg
        // here our Configuration has been instantiated, and saved under the name "config"
       configFile = event.getSuggestedConfigurationFile();
        config = new Configuration(event.getSuggestedConfigurationFile());

        // loading the configuration from its file
        config.load();
        
        blockIndex = config.getInt("BlockCount", "B", 0, 0, 3839, "The number of custom blocks");
        int currentIndex = 0;
        while (currentIndex < blockIndex){
           Material blkMaterial;
           switch (config.getInt("Material", "B:Block" + Integer.toString(currentIndex), 0, 0, 34, "The current block's material.")) {
           case 0:
              blkMaterial = Material.air;
              break;
           case 1:
              blkMaterial = Material.grass;
              break;
           case 2:
              blkMaterial = Material.ground;
              break;
           case 3:
              blkMaterial = Material.wood;
              break;
           case 4:
              blkMaterial = Material.rock;
              break;
           case 5:
              blkMaterial = Material.iron;
              break;
           case 6:
              blkMaterial = Material.anvil;
              break;
           case 7:
              blkMaterial = Material.water;
              break;
           case 8:
              blkMaterial = Material.lava;
              break;
           case 9:
              blkMaterial = Material.leaves;
              break;
           case 10:
              blkMaterial = Material.plants;
              break;
           case 11:
              blkMaterial = Material.vine;
              break;
           case 12:
              blkMaterial = Material.sponge;
              break;
           case 13:
              blkMaterial = Material.cloth;
              break;
           case 14:
              blkMaterial = Material.fire;
              break;
           case 15:
              blkMaterial = Material.sand;
              break;
           case 16:
              blkMaterial = Material.circuits;
              break;
           case 17:
              blkMaterial = Material.carpet;
              break;
           case 18:
              blkMaterial = Material.glass;
              break;
           case 19:
              blkMaterial = Material.redstoneLight;
              break;
           case 20:
              blkMaterial = Material.tnt;
              break;
           case 21:
              blkMaterial = Material.coral;
              break;
           case 22:
              blkMaterial = Material.ice;
              break;
           case 23:
              blkMaterial = Material.packedIce;
              break;
           case 24:
              blkMaterial = Material.snow;
              break;
           case 25:
              blkMaterial = Material.craftedSnow;
              break;
           case 26:
              blkMaterial = Material.cactus;
              break;
           case 27:
              blkMaterial = Material.clay;
              break;
           case 28:
              blkMaterial = Material.gourd;
              break;
           case 29:
              blkMaterial = Material.dragonEgg;
              break;
           case 30:
              blkMaterial = Material.portal;
              break;
           case 31:
              blkMaterial = Material.cake;
              break;
           case 32:
              blkMaterial = Material.web;
              break;
           case 33:
              blkMaterial = Material.piston;
              break;
           case 34:
              blkMaterial = Material.barrier;
              break;
           default:
              blkMaterial = Material.air;
           }
           float hardness = config.getFloat("Hardness", "B:Block" + Integer.toString(currentIndex), 0.5F, 3.4e-038F, 3.4e+038F, "Sets how many hits it takes to break a block.");
           SoundType stepSound;
           switch(config.getInt("StepSound", "B:Block" + Integer.toString(currentIndex), 0, 0, 12, "the sound that plays when walking on our block")) {
           case 0:
              stepSound = Block.soundTypeStone;
              break;
           case 1:
              stepSound = Block.soundTypeWood;
              break;
           case 2:
              stepSound = Block.soundTypeGravel;
              break;
           case 3:
              stepSound = Block.soundTypeGrass;
              break;
           case 4:
              stepSound = Block.soundTypePiston;
              break;
           case 5:
              stepSound = Block.soundTypeMetal;
              break;
           case 6:
              stepSound = Block.soundTypeGlass;
              break;
           case 7:
              stepSound = Block.soundTypeCloth;
              break;
           case 8:
              stepSound = Block.soundTypeSand;
              break;
           case 9:
              stepSound = Block.soundTypeSnow;
              break;
           case 10:
              stepSound = Block.soundTypeLadder;
              break;
           case 11:
              stepSound = Block.soundTypeAnvil;
              break;
           case 12:
              stepSound = Block.SLIME_SOUND;
              break;
           default:
              stepSound = Block.soundTypeStone;
           }
           int lightOpacity = config.getInt("LightOpacity", "B:Block" + Integer.toString(currentIndex), 0, -2147483647, 2147483647, "Sets how much light is blocked going through this block.");
           float lightLevel = config.getFloat("LightLevel", "B:Block" + Integer.toString(currentIndex), 1.0F, 3.4e-038F, 3.4e+038F, "Sets the light value that the block emits.");
           float resistance = config.getFloat("Resistance", "B:Block" + Integer.toString(currentIndex), 1.0F, 3.4e-038F, 3.4e+038F, "Sets the the blocks resistance to explosions.");
           String unlocalizedName = config.getString("UnlocalizedName", "B:Block" + Integer.toString(currentIndex), "generic_block", "the name of the block");
           boolean tickRandomly=config.getBoolean("TickRandomly", "B:Block" + Integer.toString(currentIndex), false, "Sets whether this block type will receive random update ticks");
           boolean unbreakable=config.getBoolean("Unbreakable", "B:Block" + Integer.toString(currentIndex), false, "Sets whether this block type will receive random update ticks");
           if (unbreakable == true){
              emptyBlocks[currentIndex] = new BlockCustom(blkMaterial)
                 .setHardness(hardness)
                 .setStepSound(stepSound)
                 .setUnlocalizedName(unlocalizedName)
                 .setLightOpacity(lightOpacity)
                 .setLightLevel(lightLevel)
                 .setResistance(resistance)
                 .setTickRandomly(tickRandomly)
                 .setBlockUnbreakable()
                 .setCreativeTab(customBlocks);
           }else{
              emptyBlocks[currentIndex] = new BlockCustom(blkMaterial)
                  .setHardness(hardness)
                  .setStepSound(stepSound)
                  .setUnlocalizedName(unlocalizedName)
                  .setLightOpacity(lightOpacity)
                  .setLightLevel(lightLevel)
                  .setResistance(resistance)
                  .setTickRandomly(tickRandomly)
                  .setCreativeTab(customBlocks);
               }

           currentIndex++;
        }

        // saving the configuration to its file
        config.save();
   }
        
    @EventHandler
    public void load(FMLInitializationEvent event)
    {
       //register a generic custom block icon for the mod's creative tab
       GameRegistry.registerBlock(customBlock, "custom_block");
       int currentIndex = 0;
       while (currentIndex < blockIndex){
          GameRegistry.registerBlock(emptyBlocks[currentIndex], emptyBlocks[currentIndex].getUnlocalizedName());
          Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(Item.getItemFromBlock(emptyBlocks[currentIndex]), 0, new ModelResourceLocation("custom:" + emptyBlocks[currentIndex].getUnlocalizedName(), "inventory"));
          currentIndex++;
       }
    }
        
    @EventHandler
    public void postInit(FMLPostInitializationEvent event)
    {
    }
}

 

command class:

package org.CyberneticStudios.CustomBlocks.Commands;

import java.util.ArrayList;
import java.util.List;

import org.CyberneticStudios.CustomBlocks.CustomBlocks;
import org.CyberneticStudios.CustomBlocks.Block.BlockCustom;

import net.minecraft.block.Block;
import net.minecraft.block.Block.SoundType;
import net.minecraft.block.material.Material;
import net.minecraft.command.CommandException;
import net.minecraft.command.ICommand;
import net.minecraft.command.ICommandSender;
import net.minecraft.util.BlockPos;
import net.minecraft.util.ChatComponentText;
import net.minecraftforge.fml.common.registry.GameRegistry;

public class CommandCreateBlock implements ICommand {
   
   private final List aliases;

   public CommandCreateBlock() {
      aliases = new ArrayList();
      aliases.add("cb");
      aliases.add("mkblock");
   }

   @Override
   public int compareTo(ICommand arg0) {
      return 0;
   }

   @Override
   public String getCommandName() {
      return "create block";
   }

   @Override
   public String getCommandUsage(ICommandSender sender) {
      return "create block <block_name> <material> <step sound> <hardness> <light opacity> <light level> <resistance> <needs random ticks?> <unbreakable>";
   }

   @Override
   public List<String> getCommandAliases() {
      return aliases;
   }

   @Override
   public void processCommand(ICommandSender sender, String[] args) throws CommandException {
      if (CustomBlocks.blockIndex < 3840){
         String name = args[0];
         int material = Integer.valueOf(args[1]);
         int stepSound = Integer.valueOf(args[2]);
         float hardness = Float.valueOf(args[3]);
           int lightOpacity = Integer.valueOf(args[4]);
           float lightLevel = Float.valueOf(args[5]);
           float resistance = Float.valueOf(args[6]);
           boolean tickRandomly=Boolean.valueOf(args[7]);
           boolean unbreakable=Boolean.valueOf(args[8]);

         Material blkMaterial;
         SoundType stepSound_;
         if (CustomBlocks.blockIndex < 3839) CustomBlocks.blockIndex++;
         switch (material) {
         case 0:
            blkMaterial = Material.air;
            break;
         case 1:
            blkMaterial = Material.grass;
            break;
         case 2:
            blkMaterial = Material.ground;
            break;
         case 3:
            blkMaterial = Material.wood;
            break;
         case 4:
            blkMaterial = Material.rock;
            break;
         case 5:
            blkMaterial = Material.iron;
            break;
         case 6:
            blkMaterial = Material.anvil;
            break;
         case 7:
            blkMaterial = Material.water;
            break;
         case 8:
            blkMaterial = Material.lava;
            break;
         case 9:
            blkMaterial = Material.leaves;
            break;
         case 10:
            blkMaterial = Material.plants;
            break;
         case 11:
            blkMaterial = Material.vine;
            break;
         case 12:
            blkMaterial = Material.sponge;
            break;
         case 13:
            blkMaterial = Material.cloth;
            break;
         case 14:
            blkMaterial = Material.fire;
            break;
         case 15:
            blkMaterial = Material.sand;
            break;
         case 16:
            blkMaterial = Material.circuits;
            break;
         case 17:
            blkMaterial = Material.carpet;
            break;
         case 18:
            blkMaterial = Material.glass;
            break;
         case 19:
            blkMaterial = Material.redstoneLight;
            break;
         case 20:
            blkMaterial = Material.tnt;
            break;
         case 21:
            blkMaterial = Material.coral;
            break;
         case 22:
            blkMaterial = Material.ice;
            break;
         case 23:
            blkMaterial = Material.packedIce;
            break;
         case 24:
            blkMaterial = Material.snow;
            break;
         case 25:
            blkMaterial = Material.craftedSnow;
            break;
         case 26:
            blkMaterial = Material.cactus;
            break;
         case 27:
            blkMaterial = Material.clay;
            break;
         case 28:
            blkMaterial = Material.gourd;
            break;
         case 29:
            blkMaterial = Material.dragonEgg;
            break;
         case 30:
            blkMaterial = Material.portal;
            break;
         case 31:
            blkMaterial = Material.cake;
            break;
         case 32:
            blkMaterial = Material.web;
            break;
         case 33:
            blkMaterial = Material.piston;
            break;
         case 34:
            blkMaterial = Material.barrier;
            break;
         default:
            blkMaterial = Material.air;
         }
         switch(stepSound) {
         case 0:
            stepSound_ = Block.soundTypeStone;
            break;
         case 1:
            stepSound_ = Block.soundTypeWood;
            break;
         case 2:
            stepSound_ = Block.soundTypeGravel;
            break;
         case 3:
            stepSound_ = Block.soundTypeGrass;
            break;
         case 4:
            stepSound_ = Block.soundTypePiston;
            break;
         case 5:
            stepSound_ = Block.soundTypeMetal;
            break;
         case 6:
            stepSound_ = Block.soundTypeGlass;
            break;
         case 7:
            stepSound_ = Block.soundTypeCloth;
            break;
         case 8:
            stepSound_ = Block.soundTypeSand;
            break;
         case 9:
            stepSound_ = Block.soundTypeSnow;
            break;
         case 10:
            stepSound_ = Block.soundTypeLadder;
            break;
         case 11:
            stepSound_ = Block.soundTypeAnvil;
            break;
         case 12:
            stepSound_ = Block.SLIME_SOUND;
            break;
         default:
            stepSound_ = Block.soundTypeStone;
         }
         if(unbreakable == true){
            CustomBlocks.emptyBlocks[CustomBlocks.blockIndex] = new BlockCustom(blkMaterial)
                 .setHardness(hardness)
                 .setStepSound(stepSound_)
                 .setUnlocalizedName(name)
                 .setLightOpacity(lightOpacity)
                 .setLightLevel(lightLevel)
                 .setResistance(resistance)
                 .setTickRandomly(tickRandomly)
                 .setBlockUnbreakable()
                 .setCreativeTab(CustomBlocks.customBlocks);
         }else{
            CustomBlocks.emptyBlocks[CustomBlocks.blockIndex] = new BlockCustom(blkMaterial)
                 .setHardness(hardness)
                 .setStepSound(stepSound_)
                 .setUnlocalizedName(name)
                  .setLightOpacity(lightOpacity)
                  .setLightLevel(lightLevel)
                  .setResistance(resistance)
                  .setTickRandomly(tickRandomly)
                  .setCreativeTab(CustomBlocks.customBlocks);
         }
         GameRegistry.registerBlock(CustomBlocks.emptyBlocks[CustomBlocks.blockIndex], CustomBlocks.emptyBlocks[CustomBlocks.blockIndex].getUnlocalizedName());
         sender.addChatMessage(new ChatComponentText("Created new custom block: custom:" + name));
         
         // what do I put here to write the config settings?
         CustomBlocks.config.save();
      } else sender.addChatMessage(new ChatComponentText("Too many custom blocks exist in the game."));
   }

   @Override
   public boolean canCommandSenderUseCommand(ICommandSender sender) {
      return true;
   }

   @Override
   public List<String> addTabCompletionOptions(ICommandSender sender, String[] args, BlockPos pos) {
      return null;
   }

   @Override
   public boolean isUsernameIndex(String[] args, int index) {
      return false;
   }

}

I know that the code isn't perfect, this is what I came up with in a short time and thus very messy.  I have yet to merge some of the preinit and init code together as well as move to a custom SoundTypes and custom materials model, the custom block class needs more code so that the new blocks can be tweaked as well, but that will be done while I wait.

Link to comment
Share on other sites

Here is what I ended up using:


        Property p = CustomBlocks.config.get("B", "BlockCount", "0", "The number of custom blocks")
              .setValue(CustomBlocks.blockIndex);
        p = CustomBlocks.config.get("Material", "B:Block" + Integer.toString(CustomBlocks.blockIndex), "0", "The current block's material.")
              .setValue(material);
        p = CustomBlocks.config.get("Hardness", "B:Block" + Integer.toString(CustomBlocks.blockIndex), "0.5F", "Sets how many hits it takes to break a block.")
              .setValue(hardness);
        p = CustomBlocks.config.get("StepSound", "B:Block" + Integer.toString(CustomBlocks.blockIndex), "0", "the sound that plays when walking on our block")
              .setValue(stepSound);
        p = CustomBlocks.config.get("LightOpacity", "B:Block" + Integer.toString(CustomBlocks.blockIndex), "0", "Sets how much light is blocked going through this block.")
              .setValue(lightOpacity);
        p = CustomBlocks.config.get("LightLevel", "B:Block" + Integer.toString(CustomBlocks.blockIndex), "1.0F", "Sets the light value that the block emits.")
              .setValue(lightLevel);
        p = CustomBlocks.config.get("Resistance", "B:Block" + Integer.toString(CustomBlocks.blockIndex), "1.0F", "Sets the the blocks resistance to explosions.")
              .setValue(resistance);
        p = CustomBlocks.config.get("UnlocalizedName", "B:Block" + Integer.toString(CustomBlocks.blockIndex), "generic_block", "the name of the block")
              .setValue(name);
        p = CustomBlocks.config.get("TickRandomly", "B:Block" + Integer.toString(CustomBlocks.blockIndex), "false", "Sets whether this block type will receive random update ticks")
              .setValue(tickRandomly);
        p = CustomBlocks.config.get("Unbreakable", "B:Block" + Integer.toString(CustomBlocks.blockIndex), "false", "The block can't be broken.")
              .setValue(unbreakable);
[/Code]

Link to comment
Share on other sites

I could do that in a future release, but what would you recommend for scripting events via resource pack that forge already has? or are my only options invent something, use a lua module that is in an external jar, or another language jar?

 

 

Also the word is dynamically and I intend to do more than one mod in a jar. I will do the same with materials and Block.SoundTypes next, then items, then biomes, then entities(yes I mean mobs), then dimensions. The jar won't be called Customcraft for nothing.  Besides, the end user will be able to add new blocks, items, etc, from console commands.  If you read the dated code above, you would have figured that one out. The creative tab that the end user gets to use will have for an icon, an untextured version of what is stored in it, i.e. custom blocks will use an untextured block for the tab's icon. I am doing that on purpose, the untextured block represents something brand new.

Link to comment
Share on other sites

I could do that in a future release, but what would you recommend for scripting events via resource pack that forge already has? or are my only options invent something, use a lua module that is in an external jar, or another language jar?

 

 

Also the word is dynamically and I intend to do more than one mod in a jar. I will do the same with materials and Block.SoundTypes next, then items, then biomes, then entities(yes I mean mobs), then dimensions. The jar won't be called Customcraft for nothing.  Besides, the end user will be able to add new blocks, items, etc, from console commands.  If you read the dated code above, you would have figured that one out. The creative tab that the end user gets to use will have for an icon, an untextured version of what is stored in it, i.e. custom blocks will use an untextured block for the tab's icon. I am doing that on purpose, the untextured block represents something brand new.

Using standart config files will be a pain to do all this.

Seriously, go learn json and GSON, and trust me, your life will be over 9000 times easier.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • Looks like an issue with BlueprintsMod - make a test without it
    • Add crash-reports with sites like https://paste.ee/ and paste the link to it here   Remove Optifine - if there is no change, add the new crash-report
    • Do you mean the Curseforge Launcher - just search for the modpack there and install it
    • is the “import modpack” on multiMC and AT launcher, not on forge?
    • I need help with this, I don't know what to do The error code is: ---- Minecraft Crash Report ---- // You should try our sister game, Minceraft! Time: 2024-05-26 10:22:04 Description: Rendering overlay java.lang.RuntimeException: null     at net.minecraftforge.fml.DeferredWorkQueue.runTasks(DeferredWorkQueue.java:58) ~[fmlcore-1.20.2-48.1.0.jar%23231!/:?] {}     at net.minecraftforge.fml.core.ParallelTransition.lambda$finalActivityGenerator$2(ParallelTransition.java:35) ~[forge-1.20.2-48.1.0-universal.jar%23235!/:?] {re:classloading}     at java.util.concurrent.CompletableFuture$UniApply.tryFire(CompletableFuture.java:646) ~[?:?] {}     at java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:482) ~[?:?] {}     at net.minecraft.server.packs.resources.SimpleReloadInstance.m_143940_(SimpleReloadInstance.java:69) ~[client-1.20.2-20230921.100330-srg.jar%23230!/:?] {re:classloading}     at net.minecraft.util.thread.BlockableEventLoop.m_6367_(BlockableEventLoop.java:198) ~[client-1.20.2-20230921.100330-srg.jar%23230!/:?] {re:classloading,pl:accesstransformer:B,xf:OptiFine:default}     at net.minecraft.util.thread.ReentrantBlockableEventLoop.m_6367_(ReentrantBlockableEventLoop.java:23) ~[client-1.20.2-20230921.100330-srg.jar%23230!/:?] {re:classloading}     at net.minecraft.util.thread.BlockableEventLoop.m_7245_(BlockableEventLoop.java:163) ~[client-1.20.2-20230921.100330-srg.jar%23230!/:?] {re:classloading,pl:accesstransformer:B,xf:OptiFine:default}     at net.minecraft.util.thread.BlockableEventLoop.m_18699_(BlockableEventLoop.java:140) ~[client-1.20.2-20230921.100330-srg.jar%23230!/:?] {re:classloading,pl:accesstransformer:B,xf:OptiFine:default}     at net.minecraft.client.Minecraft.m_91383_(Minecraft.java:1171) ~[client-1.20.2-20230921.100330-srg.jar%23230!/:?] {re:classloading,pl:accesstransformer:B,xf:fml:xaeroworldmap:xaero_wm_minecraft_runtick,xf:fml:xaeroworldmap:xaero_wm_minecraft_runtick_render_call,xf:fml:xaerominimap:xaero_minecraftclient,xf:fml:xaeroworldmap:xaero_wm_minecraftclient,pl:mixin:APP:bookshelf.common.mixins.json:accessors.client.AccessorMinecraft,pl:mixin:APP:architectury.mixins.json:MixinMinecraft,pl:mixin:APP:balm.forge.mixins.json:MinecraftMixin,pl:mixin:A,pl:runtimedistcleaner:A}     at net.minecraft.client.Minecraft.m_91374_(Minecraft.java:781) ~[client-1.20.2-20230921.100330-srg.jar%23230!/:?] {re:classloading,pl:accesstransformer:B,xf:fml:xaeroworldmap:xaero_wm_minecraft_runtick,xf:fml:xaeroworldmap:xaero_wm_minecraft_runtick_render_call,xf:fml:xaerominimap:xaero_minecraftclient,xf:fml:xaeroworldmap:xaero_wm_minecraftclient,pl:mixin:APP:bookshelf.common.mixins.json:accessors.client.AccessorMinecraft,pl:mixin:APP:architectury.mixins.json:MixinMinecraft,pl:mixin:APP:balm.forge.mixins.json:MinecraftMixin,pl:mixin:A,pl:runtimedistcleaner:A}     at net.minecraft.client.main.Main.main(Main.java:221) ~[1.20.2-forge-48.1.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:98) ~[fmlloader-1.20.2-48.1.0.jar:?] {}     at net.minecraftforge.fml.loading.targets.CommonLaunchHandler.lambda$makeService$0(CommonLaunchHandler.java:82) ~[fmlloader-1.20.2-48.1.0.jar:?] {}     at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:17) ~[modlauncher-10.1.1.jar:?] {}     at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:40) ~[modlauncher-10.1.1.jar:?] {}     at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:58) ~[modlauncher-10.1.1.jar:?] {}     at cpw.mods.modlauncher.Launcher.run(Launcher.java:96) ~[modlauncher-10.1.1.jar:?] {}     at cpw.mods.modlauncher.Launcher.main(Launcher.java:66) ~[modlauncher-10.1.1.jar:?] {}     at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:13) ~[modlauncher-10.1.1.jar:?] {}     at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:10) ~[modlauncher-10.1.1.jar:?] {}     at net.minecraftforge.bootstrap.BootstrapLauncher.main(BootstrapLauncher.java:126) ~[bootstrap-1.2.0.jar:?] {}     Suppressed: java.lang.NoClassDefFoundError: net/minecraftforge/network/simple/SimpleChannel         at com.mrcrayfish.framework.platform.network.ForgeNetworkBuilder.registerHandshakeMessage(ForgeNetworkBuilder.java:120) ~[framework-forge-1.20.1-0.6.27.jar%23208!/:1.20.1-0.6.27] {re:classloading}         at com.mrcrayfish.framework.platform.network.ForgeNetworkBuilder.registerHandshakeMessage(ForgeNetworkBuilder.java:34) ~[framework-forge-1.20.1-0.6.27.jar%23208!/:1.20.1-0.6.27] {re:classloading}         at com.mrcrayfish.framework.network.Network.<clinit>(Network.java:21) ~[framework-forge-1.20.1-0.6.27.jar%23208!/:1.20.1-0.6.27] {re:classloading}         at com.mrcrayfish.framework.FrameworkSetup.init(FrameworkSetup.java:62) ~[framework-forge-1.20.1-0.6.27.jar%23208!/:1.20.1-0.6.27] {re:classloading}         at java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1804) ~[?:?] {}         at net.minecraftforge.fml.DeferredWorkQueue.lambda$makeRunnable$2(DeferredWorkQueue.java:81) ~[fmlcore-1.20.2-48.1.0.jar%23231!/:?] {}         at net.minecraftforge.fml.DeferredWorkQueue.makeRunnable(DeferredWorkQueue.java:76) ~[fmlcore-1.20.2-48.1.0.jar%23231!/:?] {}         at net.minecraftforge.fml.DeferredWorkQueue.lambda$runTasks$0(DeferredWorkQueue.java:60) ~[fmlcore-1.20.2-48.1.0.jar%23231!/:?] {}         at java.util.concurrent.ConcurrentLinkedDeque.forEach(ConcurrentLinkedDeque.java:1650) ~[?:?] {}         at net.minecraftforge.fml.DeferredWorkQueue.runTasks(DeferredWorkQueue.java:60) ~[fmlcore-1.20.2-48.1.0.jar%23231!/:?] {}         at net.minecraftforge.fml.core.ParallelTransition.lambda$finalActivityGenerator$2(ParallelTransition.java:35) ~[forge-1.20.2-48.1.0-universal.jar%23235!/:?] {re:classloading}         at java.util.concurrent.CompletableFuture$UniApply.tryFire(CompletableFuture.java:646) ~[?:?] {}         at java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:482) ~[?:?] {}         at net.minecraft.server.packs.resources.SimpleReloadInstance.m_143940_(SimpleReloadInstance.java:69) ~[client-1.20.2-20230921.100330-srg.jar%23230!/:?] {re:classloading}         at net.minecraft.util.thread.BlockableEventLoop.m_6367_(BlockableEventLoop.java:198) ~[client-1.20.2-20230921.100330-srg.jar%23230!/:?] {re:classloading,pl:accesstransformer:B,xf:OptiFine:default}         at net.minecraft.util.thread.ReentrantBlockableEventLoop.m_6367_(ReentrantBlockableEventLoop.java:23) ~[client-1.20.2-20230921.100330-srg.jar%23230!/:?] {re:classloading}         at net.minecraft.util.thread.BlockableEventLoop.m_7245_(BlockableEventLoop.java:163) ~[client-1.20.2-20230921.100330-srg.jar%23230!/:?] {re:classloading,pl:accesstransformer:B,xf:OptiFine:default}         at net.minecraft.util.thread.BlockableEventLoop.m_18699_(BlockableEventLoop.java:140) ~[client-1.20.2-20230921.100330-srg.jar%23230!/:?] {re:classloading,pl:accesstransformer:B,xf:OptiFine:default}         at net.minecraft.client.Minecraft.m_91383_(Minecraft.java:1171) ~[client-1.20.2-20230921.100330-srg.jar%23230!/:?] {re:classloading,pl:accesstransformer:B,xf:fml:xaeroworldmap:xaero_wm_minecraft_runtick,xf:fml:xaeroworldmap:xaero_wm_minecraft_runtick_render_call,xf:fml:xaerominimap:xaero_minecraftclient,xf:fml:xaeroworldmap:xaero_wm_minecraftclient,pl:mixin:APP:bookshelf.common.mixins.json:accessors.client.AccessorMinecraft,pl:mixin:APP:architectury.mixins.json:MixinMinecraft,pl:mixin:APP:balm.forge.mixins.json:MinecraftMixin,pl:mixin:A,pl:runtimedistcleaner:A}         at net.minecraft.client.Minecraft.m_91374_(Minecraft.java:781) ~[client-1.20.2-20230921.100330-srg.jar%23230!/:?] {re:classloading,pl:accesstransformer:B,xf:fml:xaeroworldmap:xaero_wm_minecraft_runtick,xf:fml:xaeroworldmap:xaero_wm_minecraft_runtick_render_call,xf:fml:xaerominimap:xaero_minecraftclient,xf:fml:xaeroworldmap:xaero_wm_minecraftclient,pl:mixin:APP:bookshelf.common.mixins.json:accessors.client.AccessorMinecraft,pl:mixin:APP:architectury.mixins.json:MixinMinecraft,pl:mixin:APP:balm.forge.mixins.json:MinecraftMixin,pl:mixin:A,pl:runtimedistcleaner:A}         at net.minecraft.client.main.Main.main(Main.java:221) ~[1.20.2-forge-48.1.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:98) ~[fmlloader-1.20.2-48.1.0.jar:?] {}         at net.minecraftforge.fml.loading.targets.CommonLaunchHandler.lambda$makeService$0(CommonLaunchHandler.java:82) ~[fmlloader-1.20.2-48.1.0.jar:?] {}         at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:17) ~[modlauncher-10.1.1.jar:?] {}         at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:40) ~[modlauncher-10.1.1.jar:?] {}         at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:58) ~[modlauncher-10.1.1.jar:?] {}         at cpw.mods.modlauncher.Launcher.run(Launcher.java:96) ~[modlauncher-10.1.1.jar:?] {}         at cpw.mods.modlauncher.Launcher.main(Launcher.java:66) ~[modlauncher-10.1.1.jar:?] {}         at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:13) ~[modlauncher-10.1.1.jar:?] {}         at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:10) ~[modlauncher-10.1.1.jar:?] {}         at net.minecraftforge.bootstrap.BootstrapLauncher.main(BootstrapLauncher.java:126) ~[bootstrap-1.2.0.jar:?] {}     Caused by: java.lang.ClassNotFoundException: net.minecraftforge.network.simple.SimpleChannel         at jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) ~[?:?] {}         at java.lang.ClassLoader.loadClass(ClassLoader.java:525) ~[?:?] {}         at net.minecraftforge.securemodules.SecureModuleClassLoader.loadClass(SecureModuleClassLoader.java:392) ~[securemodules-2.2.3.jar:?] {}         at java.lang.ClassLoader.loadClass(ClassLoader.java:525) ~[?:?] {}         at net.minecraftforge.securemodules.SecureModuleClassLoader.loadClass(SecureModuleClassLoader.java:392) ~[securemodules-2.2.3.jar:?] {}         at java.lang.ClassLoader.loadClass(ClassLoader.java:525) ~[?:?] {}         ... 35 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.minecraftforge.fml.DeferredWorkQueue.runTasks(DeferredWorkQueue.java:58) ~[fmlcore-1.20.2-48.1.0.jar%23231!/:?] {}     at net.minecraftforge.fml.core.ParallelTransition.lambda$finalActivityGenerator$2(ParallelTransition.java:35) ~[forge-1.20.2-48.1.0-universal.jar%23235!/:?] {re:classloading}     at java.util.concurrent.CompletableFuture$UniApply.tryFire(CompletableFuture.java:646) ~[?:?] {}     at java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:482) ~[?:?] {}     at net.minecraft.server.packs.resources.SimpleReloadInstance.m_143940_(SimpleReloadInstance.java:69) ~[client-1.20.2-20230921.100330-srg.jar%23230!/:?] {re:classloading}     at net.minecraft.util.thread.BlockableEventLoop.m_6367_(BlockableEventLoop.java:198) ~[client-1.20.2-20230921.100330-srg.jar%23230!/:?] {re:classloading,pl:accesstransformer:B,xf:OptiFine:default}     at net.minecraft.util.thread.ReentrantBlockableEventLoop.m_6367_(ReentrantBlockableEventLoop.java:23) ~[client-1.20.2-20230921.100330-srg.jar%23230!/:?] {re:classloading}     at net.minecraft.util.thread.BlockableEventLoop.m_7245_(BlockableEventLoop.java:163) ~[client-1.20.2-20230921.100330-srg.jar%23230!/:?] {re:classloading,pl:accesstransformer:B,xf:OptiFine:default} -- Overlay render details -- Details:     Overlay name: net.minecraftforge.client.loading.ForgeLoadingOverlay Stacktrace:     at net.minecraft.client.renderer.GameRenderer.m_109093_(GameRenderer.java:1387) ~[client-1.20.2-20230921.100330-srg.jar%23230!/:?] {re:classloading,pl:accesstransformer:B,xf:OptiFine:default}     at net.minecraft.client.Minecraft.m_91383_(Minecraft.java:1211) ~[client-1.20.2-20230921.100330-srg.jar%23230!/:?] {re:classloading,pl:accesstransformer:B,xf:fml:xaeroworldmap:xaero_wm_minecraft_runtick,xf:fml:xaeroworldmap:xaero_wm_minecraft_runtick_render_call,xf:fml:xaerominimap:xaero_minecraftclient,xf:fml:xaeroworldmap:xaero_wm_minecraftclient,pl:mixin:APP:bookshelf.common.mixins.json:accessors.client.AccessorMinecraft,pl:mixin:APP:architectury.mixins.json:MixinMinecraft,pl:mixin:APP:balm.forge.mixins.json:MinecraftMixin,pl:mixin:A,pl:runtimedistcleaner:A}     at net.minecraft.client.Minecraft.m_91374_(Minecraft.java:781) ~[client-1.20.2-20230921.100330-srg.jar%23230!/:?] {re:classloading,pl:accesstransformer:B,xf:fml:xaeroworldmap:xaero_wm_minecraft_runtick,xf:fml:xaeroworldmap:xaero_wm_minecraft_runtick_render_call,xf:fml:xaerominimap:xaero_minecraftclient,xf:fml:xaeroworldmap:xaero_wm_minecraftclient,pl:mixin:APP:bookshelf.common.mixins.json:accessors.client.AccessorMinecraft,pl:mixin:APP:architectury.mixins.json:MixinMinecraft,pl:mixin:APP:balm.forge.mixins.json:MinecraftMixin,pl:mixin:A,pl:runtimedistcleaner:A}     at net.minecraft.client.main.Main.main(Main.java:221) ~[1.20.2-forge-48.1.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:98) ~[fmlloader-1.20.2-48.1.0.jar:?] {}     at net.minecraftforge.fml.loading.targets.CommonLaunchHandler.lambda$makeService$0(CommonLaunchHandler.java:82) ~[fmlloader-1.20.2-48.1.0.jar:?] {}     at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:17) ~[modlauncher-10.1.1.jar:?] {}     at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:40) ~[modlauncher-10.1.1.jar:?] {}     at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:58) ~[modlauncher-10.1.1.jar:?] {}     at cpw.mods.modlauncher.Launcher.run(Launcher.java:96) ~[modlauncher-10.1.1.jar:?] {}     at cpw.mods.modlauncher.Launcher.main(Launcher.java:66) ~[modlauncher-10.1.1.jar:?] {}     at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:13) ~[modlauncher-10.1.1.jar:?] {}     at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:10) ~[modlauncher-10.1.1.jar:?] {}     at net.minecraftforge.bootstrap.BootstrapLauncher.main(BootstrapLauncher.java:126) ~[bootstrap-1.2.0.jar:?] {} -- Last reload -- Details:     Reload number: 1     Reload reason: initial     Finished: No     Packs: vanilla, mod_resources -- System Details -- Details:     Minecraft Version: 1.20.2     Minecraft Version ID: 1.20.2     Operating System: Windows 10 (amd64) version 10.0     Java Version: 17.0.8, Microsoft     Java VM Version: OpenJDK 64-Bit Server VM (mixed mode), Microsoft     Memory: 598872400 bytes (571 MiB) / 1006632960 bytes (960 MiB) up to 2147483648 bytes (2048 MiB)     CPUs: 16     Processor Vendor: GenuineIntel     Processor Name: 13th Gen Intel(R) Core(TM) i5-13400F     Identifier: Intel64 Family 6 Model 191 Stepping 2     Microarchitecture: unknown     Frequency (GHz): 2.50     Number of physical packages: 1     Number of physical CPUs: 10     Number of logical CPUs: 16     Graphics card #0 name: NVIDIA GeForce RTX 4060 Ti     Graphics card #0 vendor: NVIDIA (0x10de)     Graphics card #0 VRAM (MB): 4095.00     Graphics card #0 deviceId: 0x2803     Graphics card #0 versionInfo: DriverVersion=32.0.15.5585     Memory slot #0 capacity (MB): 16384.00     Memory slot #0 clockSpeed (GHz): 4.80     Memory slot #0 type: Unknown     Memory slot #1 capacity (MB): 16384.00     Memory slot #1 clockSpeed (GHz): 4.80     Memory slot #1 type: Unknown     Virtual memory max (MB): 37723.95     Virtual memory used (MB): 17568.76     Swap memory total (MB): 5120.00     Swap memory used (MB): 124.64     JVM Flags: 9 total; -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump -Xss1M -Xmx2G -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:G1NewSizePercent=20 -XX:G1ReservePercent=20 -XX:MaxGCPauseMillis=50 -XX:G1HeapRegionSize=32M     JVM uptime in seconds: 14.944     Launched Version: 1.20.2-forge-48.1.0     Backend library: LWJGL version 3.3.2+13     Backend API: NVIDIA GeForce RTX 4060 Ti/PCIe/SSE2 GL version 4.6.0 NVIDIA 555.85, NVIDIA Corporation     Window size: 3840x2160     GL Caps: Using framebuffer using OpenGL 3.2     GL debug messages: id=1282, source=API, type=ERROR, severity=HIGH, message='GL_INVALID_OPERATION error generated. Texture name does not refer to a texture object generated by OpenGL.' x 1     Using VBOs: Yes     Is Modded: Definitely; Client brand changed to 'forge'     Type: Client (map_client.txt)     Graphics mode: fancy     Resource Packs:      Current Language: es_mx     Locale: es_MX     CPU: 16x 13th Gen Intel(R) Core(TM) i5-13400F     OptiFine Version: OptiFine_1.20.2_HD_U_I7_pre1     OptiFine Build: 20231221-121621     Render Distance Chunks: 29     Mipmaps: 4     Anisotropic Filtering: 1     Antialiasing: 0     Multitexture: false     Shaders: null     OpenGlVersion: 4.6.0 NVIDIA 555.85     OpenGlRenderer: NVIDIA GeForce RTX 4060 Ti/PCIe/SSE2     OpenGlVendor: NVIDIA Corporation     CpuCount: 16     ModLauncher: 10.1.1     ModLauncher launch target: forge_client     ModLauncher naming: srg     ModLauncher services:          mixin-0.8.5.jar mixin PLUGINSERVICE          eventbus-6.2.0.jar eventbus PLUGINSERVICE          fmlloader-1.20.2-48.1.0.jar slf4jfixer PLUGINSERVICE          fmlloader-1.20.2-48.1.0.jar object_holder_definalize PLUGINSERVICE          fmlloader-1.20.2-48.1.0.jar runtime_enum_extender PLUGINSERVICE          fmlloader-1.20.2-48.1.0.jar capability_token_subclass PLUGINSERVICE          accesstransformers-8.1.1.jar accesstransformer PLUGINSERVICE          fmlloader-1.20.2-48.1.0.jar runtimedistcleaner PLUGINSERVICE          modlauncher-10.1.1.jar mixin TRANSFORMATIONSERVICE          modlauncher-10.1.1.jar OptiFine TRANSFORMATIONSERVICE          modlauncher-10.1.1.jar fml TRANSFORMATIONSERVICE      FML Language Providers:          [email protected]         lowcodefml@48         javafml@null     Mod List:          client-1.20.2-20230921.100330-srg.jar             |Minecraft                     |minecraft                     |1.20.2              |SIDED_SETU|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         Compressed Blocks-forge-1.20.2-1.5.1.jar          |Compressed Blocks             |compressedblocks              |1.5.1               |SIDED_SETU|Manifest: NOSIGNATURE         JustEnoughBeacons-Forge-1.19+-1.1.2.jar           |JustEnoughBeacons             |just_enough_beacons           |1.1.2               |SIDED_SETU|Manifest: NOSIGNATURE         EnchantmentDescriptions-Forge-1.20.2-18.0.7.jar   |EnchantmentDescriptions       |enchdesc                      |18.0.7              |SIDED_SETU|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         TerraBlender-forge-1.20.2-3.2.0.14.jar            |TerraBlender                  |terrablender                  |3.2.0.14            |SIDED_SETU|Manifest: NOSIGNATURE         MouseTweaks-forge-mc1.20.2-2.26.jar               |Mouse Tweaks                  |mousetweaks                   |2.26                |SIDED_SETU|Manifest: NOSIGNATURE         supermartijn642configlib-1.1.8-forge-mc1.20.2.jar |SuperMartijn642's Config Libra|supermartijn642configlib      |1.1.8               |SIDED_SETU|Manifest: NOSIGNATURE         DisenchantmentEditTable-1.20.2-1.2.0.jar          |Disenchantment Edit Table     |editenchanting                |1.2.0               |SIDED_SETU|Manifest: NOSIGNATURE         OnlyHammers-1.20.2-0.5-Forge.jar                  |OnlyHammers                   |onlyhammers                   |1.20.2-0.5          |SIDED_SETU|Manifest: NOSIGNATURE         BiomesOPlenty-1.20.2-18.2.0.53.jar                |Biomes O' Plenty              |biomesoplenty                 |18.2.0.53           |SIDED_SETU|Manifest: NOSIGNATURE         jei-1.20.2-forge-16.0.0.28.jar                    |Just Enough Items             |jei                           |16.0.0.28           |SIDED_SETU|Manifest: NOSIGNATURE         grindenc-forge-1.20.x-v2.1.jar                    |Grindstone Enchantments       |grindenc                      |2.1                 |SIDED_SETU|Manifest: NOSIGNATURE         spectrelib-forge-0.14.1+1.20.2.jar                |SpectreLib                    |spectrelib                    |0.14.1+1.20.2       |SIDED_SETU|Manifest: NOSIGNATURE         supermartijn642corelib-1.1.17-forge-mc1.20.2.jar  |SuperMartijn642's Core Lib    |supermartijn642corelib        |1.1.17              |SIDED_SETU|Manifest: NOSIGNATURE         packedup-1.0.30-forge-mc1.20.2.jar                |Packed Up                     |packedup                      |1.0.30              |SIDED_SETU|Manifest: NOSIGNATURE         caelus-forge-4.0.0+1.20.2.jar                     |Caelus API                    |caelus                        |4.0.0+1.20.2        |SIDED_SETU|Manifest: NOSIGNATURE         Xaeros_Minimap_24.1.1_Forge_1.20.2.jar            |Xaero's Minimap               |xaerominimap                  |24.1.1              |SIDED_SETU|Manifest: NOSIGNATURE         waystones-forge-1.20.2-15.2.0.jar                 |Waystones                     |waystones                     |15.2.0              |SIDED_SETU|Manifest: NOSIGNATURE         TaxFreeLevels-1.3.13-forge-1.20.2.jar             |Tax Free Levels               |taxfreelevels                 |1.3.13              |SIDED_SETU|Manifest: NOSIGNATURE         goldenhopper-forge-1.20.1-1.4.1.jar               |Golden Hopper                 |goldenhopper                  |1.4.1               |SIDED_SETU|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         advancednetherite-forge-2.0.2-1.20.2.jar          |Advanced Netherite            |advancednetherite             |2.0.2               |SIDED_SETU|Manifest: NOSIGNATURE         XaerosWorldMap_1.38.4_Forge_1.20.2.jar            |Xaero's World Map             |xaeroworldmap                 |1.38.4              |SIDED_SETU|Manifest: NOSIGNATURE         comforts-forge-7.0.1+1.20.2.jar                   |Comforts                      |comforts                      |7.0.1+1.20.2        |SIDED_SETU|Manifest: NOSIGNATURE         elevatorid-1.20.2-1.9.1-forge.jar                 |Elevator Mod                  |elevatorid                    |1.20.2-1.9.1-forge  |SIDED_SETU|Manifest: NOSIGNATURE         Bookshelf-Forge-1.20.2-21.0.14.jar                |Bookshelf                     |bookshelf                     |21.0.14             |SIDED_SETU|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         endercrop-1.20.1-1.7.0.jar                        |Ender Crop                    |endercrop                     |1.20.1-1.7.0        |SIDED_SETU|Manifest: NOSIGNATURE         BetterFurnaces-1.20.2-1.0.4-forge.jar             |Better Furnaces Reforged      |betterfurnacesreforged        |1.0.4               |SIDED_SETU|Manifest: NOSIGNATURE         architectury-10.1.20-minecraftforge.jar           |Architectury                  |architectury                  |10.1.20             |SIDED_SETU|Manifest: NOSIGNATURE         FactoryAPI-1.20.2-2.1.1-forge.jar                 |Factory API                   |factory_api                   |2.1.1               |SIDED_SETU|Manifest: NOSIGNATURE         balm-forge-1.20.2-8.0.5.jar                       |Balm                          |balm                          |8.0.5               |SIDED_SETU|Manifest: NOSIGNATURE         trashcans-1.0.18b-forge-mc1.20.jar                |Trash Cans                    |trashcans                     |1.0.18b             |SIDED_SETU|Manifest: NOSIGNATURE         Simplest_Excavators_forge_1.20.1-1.1.1.jar        |Simplest Excavators           |simplest_excavators           |1.1.1               |SIDED_SETU|Manifest: NOSIGNATURE         inventoryessentials-forge-1.20.2-9.0.1.jar        |Inventory Essentials          |inventoryessentials           |9.0.1               |SIDED_SETU|Manifest: NOSIGNATURE         framework-forge-1.20.1-0.6.27.jar                 |Framework                     |framework                     |0.6.27              |SIDED_SETU|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         FallingTree-1.20.2-5.0.6.jar                      |FallingTree                   |fallingtree                   |5.0.6               |SIDED_SETU|Manifest: 3c:8e:df:6c:df:a6:2a:9f:af:64:ea:04:9a:cf:65:92:3b:54:93:0e:96:50:b4:52:e1:13:42:18:2b:ae:40:29         BetterThanMending-1.7.2.jar                       |BetterThanMending             |betterthanmending             |1.7.2               |SIDED_SETU|Manifest: NOSIGNATURE         forge-1.20.2-48.1.0-universal.jar                 |Forge                         |forge                         |48.1.0              |SIDED_SETU|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         toms_storage-1.20.2-1.6.8.jar                     |Tom's Simple Storage Mod      |toms_storage                  |1.6.8               |SIDED_SETU|Manifest: NOSIGNATURE         FastLeafDecay-31.jar                              |Fast Leaf Decay               |fastleafdecay                 |31                  |SIDED_SETU|Manifest: NOSIGNATURE         wso16-forge-1.1.jar                               |Why stacks of 16?             |wso16                         |1.1                 |SIDED_SETU|Manifest: NOSIGNATURE         ironchest-1.20.2-14.5.7.jar                       |Iron Chests                   |ironchest                     |1.20.2-14.5.7       |SIDED_SETU|Manifest: NOSIGNATURE     Crash Report UUID: 80a4d440-910c-41ec-8656-c2f2304db622     FML: 48.1     Forge: net.minecraftforge:48.1.0  
  • Topics

×
×
  • Create New...

Important Information

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