Jump to content

Removing a block on ther server side


Guest

Recommended Posts

 

Hello,

 

I am creating a mod in 1.15.2 using forge and I have created a block who is destroying blocks in the world.

But I can't find how to remove a block on the server side. Actually, the block is only removing the block on the client and it create a ghost block. I have tried all methods in Minecraft.getWorld() and I have the conclusion that World is only for the client (!if world.isremote doesn't resolve the problem).

 

All methods

 

I have searched other topics but the method was removed and I can't find an equivalent :

https://forums.minecraftforge.net/topic/10382-breaking-a-block-properly/

https://forums.minecraftforge.net/topic/10382-breaking-a-block-properly/.

 

I also saw this  : https://www.minecraftforum.net/forums/mapping-and-modding-java-edition/minecraft-mods/modification-development/2352241-destroying-a-block-leads-to-a-ghost-block

 

Quote

 

Minecraft.getMinecraft().theWorld is the CLIENT world - making ANY changes there will affect only the one client, and results in a ghost block because the server still says there is a block there, but the client cannot see it because they were told it was destroyed (though they cannot walk through it due to it still existing).

 

The solution is to use rayTrace code that works on the server (i.e. without using Minecraft.getMinecraft for anything at all) and let your entire logic run on the server - clients are all updated automatically.

 

 

But I didn't understand the solution, what is raytrace ?

 

So please can you help me ? I want to find a way to remove a block in the world, and I don't want to drop the block, I am collecting it in the inventory of the block.

I have a video that show the problem : https://cdn.discordapp.com/attachments/379346851142434816/765245458972147752/forge_forum_video_-_Leonardlasardine.mp4

 

PS : this is my code : https://github.com/Leonardlasardine/Erasium/blob/d0ff39994f1143c3fd847bc8d9b9f3b290859986/src/main/java/fr/leonard/erasium/quarry/QuarryTileEntity.java#L109

 

Thank you,

 

Edited by Leonardlasardine
Link to comment
Share on other sites

14 minutes ago, Leonardlasardine said:

Minecraft.getWorld() and I have the conclusion that World is only for the client

No, World is not only for the client. Minecraft is only for the client. As a result the world the client knows about is the client world.

https://github.com/Leonardlasardine/Erasium/blob/d0ff39994f1143c3fd847bc8d9b9f3b290859986/src/main/java/fr/leonard/erasium/quarry/QuarryTileEntity.java#L68

That line is not needed. And do not use assert in runtime code.

Also. What's this? A WORLD OBJECT? Gosh I wonder if it exists in the same context as the method you wrote...

 

https://github.com/Leonardlasardine/Erasium/blob/d0ff39994f1143c3fd847bc8d9b9f3b290859986/src/main/java/fr/leonard/erasium/quarry/QuarryTileEntity.java#L69-L79

Don't do this. You're effectively reaching across sides. This will crash the dedicated server because those lines reference your QuaryScreen class, which references this:

https://github.com/Leonardlasardine/Erasium/blob/d0ff39994f1143c3fd847bc8d9b9f3b290859986/src/main/java/fr/leonard/erasium/quarry/QuarryScreen.java#L6

Which is client side only.

Edited by Draco18s

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 a lot for the very quick answer,

First,I have removed assert and this :

1 hour ago, Draco18s said:

 

1 hour ago, Draco18s said:

Also. What's this? A WORLD OBJECT? Gosh I wonder if it exists in the same context as the method you wrote...

Ah, should I replace world by Minecraft.getInstance().world ? world is from TileEntity :

image.thumb.png.39ab0906c0ef92817ec7c3c7aa6f5015.png

 

 

So if Minecraft is only for the client... how can I break a block ?

 

Thanks for your answer

 

Link to comment
Share on other sites

4 hours ago, Leonardlasardine said:

Ah, should I replace world by Minecraft.getInstance().world ?

NO! THE OPPOSITE OF THAT!

Edited by Draco18s

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

6 hours ago, Draco18s said:

NO! THE OPPOSITE OF THAT!

I don't understand sorry. What is the "opposite" ? World.getMinecraft() ? 🤔

No, I don't think you want to say that. Or maybe there is a ServerWorld class ?  I am verty confused sorry.

But thanks a lot for answering.

 

Link to comment
Share on other sites

Hello, 

Ok thanks for your advices, I have already learned all about threads and sides, ect... but I will listen you and revise it. Maybe I will find my answer...

Thanks you for your answer fast eat the light.

Link to comment
Share on other sites

8 hours ago, Leonardlasardine said:

I don't understand sorry. What is the "opposite" ? World.getMinecraft() ? 🤔

You said, "I should replace X with Y?"
And I said, "No, the opposite of that" because I told you not to use Y.

What's the opposite of replace X with Y?

 

Why, replace Y with X.

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

Ok, so I have re read all the doc about threads in Oracle docs and in the forge website. Now my code is : https://github.com/Leonardlasardine/Erasium/blob/master/src/main/java/fr/leonard/erasium/quarry/ErasiumQuarry.java

 

7 minutes ago, Draco18s said:

I told you not to use Y.

 Ok thanks you, so what should I use instead? I have found ServerWorld, ServerMultiWorld and MinecraftServer but it's not them.

Thanks for your help.

 

Link to comment
Share on other sites

None of those. The tile entity already has a world field. You even found it.

Fucking use it.

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

I only had to spell things out for you. Twice.

 

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

1 hour ago, Draco18s said:

None of those. The tile entity already has a world field. You even found it.

Fucking use it.

Yes I am using the world field in TileEntity as you said but it doesn't work. I apologize you had to tell it two times.

image.png.011807e0342142d3a4f2b65002e6b6e8.png

I thought I needed to use an other thing because it doesn't work but if I must use this, why it doesn't work ? The block is not removed

 

Link to comment
Share on other sites

Well you have a world.isRemote check there, but I can't tell if you're checking for true or false.

And you have another line above it that looks suspicious.

But you posted your code as an image rather than text showing a tooltip that is patently useless for solving the problem and hiding code I might actually be interested in.

 

Also, there's nothing wrong with world.setBlockState, provided you pay attention to the FLAG parameter.

world.destroyBlock should also work (it will drop the block's loot).

world.removeBlock should just be a wrapper around world.setBlockState(Blocks.AIR)

Edited by Draco18s

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

AHH, I'm sorry I have the solution.

Yes I you where right it work.

10 minutes ago, Draco18s said:

Also, there's nothing wrong with world.setBlockState

I have just forgoted a line at the end of the void ! 🤦‍♀️ RAHHHH ! I was replacing the block :

image.png.2398ce8991b43dd92ad36a6508af2518.png

Ah yes sorry I can post my code into text but he haven't got colors.

This was my old code :

    private void destroyBlock(BlockPos pos, boolean dropBlock, Block blockRemoved) {
        assert world != null;
        BlockState blockstate = world.getBlockState(pos);
        if (!blockstate.isAir(world, pos) && blockstate.getBlock() != Blocks.BEDROCK) {
            IFluidState ifluidstate = world.getFluidState(pos); //I don't know why, I have see on a tutorial
            //FMLClientHandler.instance().getServer().worldServerForDimension(0).destroyBlock(x, y, z, false);
            //if (!world.isRemote()) { // Doesn't work
            world.playEvent(2001, pos, Block.getStateId(blockstate));
                world.removeBlock(pos, false);
                world.setBlockState(pos, Blocks.AIR.getDefaultState());
                world.removeBlock(pos, false);
                world.destroyBlock(pos, false);
// Only Solo Worlds Objects.requireNonNull(Minecraft.getInstance().getIntegratedServer()).getWorld(DimensionType.OVERWORLD).destroyBlock(new BlockPos(x, y, z), true);
            //}
            TileEntity tileentity = blockstate.hasTileEntity() ? world.getTileEntity(pos) : null;
            if (dropBlock) {
                Block.spawnDrops(blockstate, world, this.pos.add(0, 1.5, 0), tileentity, null, ItemStack.EMPTY);
            } else if (!isChestFull) {
                for (int i = 0; i < 36; i++) {
                    //Coffre plein
                    for (int j = 0; j < 36; j++) {
                        if (getStackInSlot(j).isEmpty()) {
                            break;
                        }
                        if (j == 35) {
                            assert Minecraft.getInstance().player != null;
                            sendMessage();
                            isChestFull = true;
                            break;
                        }
                    }
                    ItemStack theStack = new ItemStack(blockstate.getBlock().asItem());
                    if (getStackInSlot(i).isEmpty()) {
                        setInventorySlotContents(i, new ItemStack(blockRemoved.asItem()));
                        break;
                    } else if (getStackInSlot(i).isItemEqual(theStack) && getStackInSlot(i).getCount() < 64) {
                        setInventorySlotContents(i, new ItemStack(blockRemoved.asItem(), getStackInSlot(i).getCount() + 1));
                        break;
                    } else if (getStackInSlot(i + 1).isEmpty()) {
                        setInventorySlotContents(i + 1, new ItemStack(blockRemoved.asItem()));
                        break;
                    }
                }
            }
            world.setBlockState(pos, ifluidstate.getBlockState(), 3);
        }
    }

 

And then this is my almost final code :

private void destroyBlock(BlockPos pos, boolean dropBlock, Block blockRemoved) {
        BlockState blockstate = world.getBlockState(pos);
        BlockState newBlockstate = world.getBlockState(pos);
        if (!blockstate.isAir(world, pos) && blockstate.getBlock() != Blocks.BEDROCK) {
            if (!world.isRemote()) {
                newBlockstate = Blocks.AIR.getDefaultState();
            }
            TileEntity tileentity = blockstate.hasTileEntity() ? world.getTileEntity(pos) : null;
            if (dropBlock) {
                Block.spawnDrops(blockstate, world, this.pos.add(0, 1.5, 0), tileentity, null, ItemStack.EMPTY);
            } else if (!isChestFull) {
                for (int i = 0; i < 36; i++) {
                    //Coffre plein -- Chest Full
                    for (int j = 0; j < 36; j++) {
                        if (getStackInSlot(j).isEmpty()) {
                            break;
                        }
                        if (j == 35) {
                            sendMessage();
                            isChestFull = true;
                            break;
                        }
                    }
                    ItemStack theStack = new ItemStack(blockstate.getBlock().asItem());
                    if (getStackInSlot(i).isEmpty()) {
                        setInventorySlotContents(i, new ItemStack(blockRemoved.asItem()));
                        break;
                    } else if (getStackInSlot(i).isItemEqual(theStack) && getStackInSlot(i).getCount() < 64) {
                        setInventorySlotContents(i, new ItemStack(blockRemoved.asItem(), getStackInSlot(i).getCount() + 1));
                        break;
                    } else if (getStackInSlot(i + 1).isEmpty()) {
                        setInventorySlotContents(i + 1, new ItemStack(blockRemoved.asItem()));
                        break;
                    }
                }
            }
        }
        world.setBlockState(pos, newBlockstate, 3);
    }

And the code is also on GitHub

 

17 minutes ago, Draco18s said:

Also, there's nothing wrong with world.setBlockState, provided you pay attention to the FLAG parameter.

Yes, what should I put in FLAG parameter please ?

 

And THANK YOU a lot you solved my problem.

Thank you I'm very very happy.

 

But I have tested now and it perfectly work on singleplayer but do nothing in a separated server !

Do you know why ?

 

Thanks you.

 

 

Link to comment
Share on other sites

3 hours ago, Leonardlasardine said:

Yes, what should I put in FLAG parameter please ?

Read the javadoc.

 

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

Thank you,

The javadoc is :

**
    * Sets a block state into this world.Flags are as follows:
    * 1 will cause a block update.
    * 2 will send the change to clients.
    * 4 will prevent the block from being re-rendered.
    * 8 will force any re-renders to run on the main thread instead
    * 16 will prevent neighbor reactions (e.g. fences connecting, observers pulsing).
    * 32 will prevent neighbor reactions from spawning drops.
    * 64 will signify the block is being moved.
    * Flags can be OR-ed
    */

Should I use 1, 2, or 4?

Or maybe I need copy the method 3 times with first 1 then 2 then 4.

 

And else do you now why it only work on solo ?

Thank you

Link to comment
Share on other sites

1 hour ago, Leonardlasardine said:

Or maybe I need copy the method 3 times with first 1 then 2 then 4.

No.

1 hour ago, Leonardlasardine said:

* Flags can be OR-ed

Also:

  

1 hour ago, Leonardlasardine said:

* 4 will prevent the block from being re-rendered.

 

Edited by Draco18s

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

49 minutes ago, Draco18s said:

* Flags can be OR-ed

Yes I have seen that but what mean "OR-ed" ? I am not english sorry I am don't understand this.

But yes I will use the 4.

Thank you

Link to comment
Share on other sites

They're bit flags. You bit-wise OR the values together.

 

1 | 2 (aka "3")
4 | 8 (aka "12")
1 | 2 | 8 (aka "11")

 

  

14 minutes ago, Leonardlasardine said:

But yes I will use the 4.

This will create weird effects that you almost certainly do not want.

Edited by Draco18s

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

2 hours ago, Leonardlasardine said:

Ok thank you, so 3 is good.

And my last question is why it only work on solo ?

I don't know.  Where are you calling destroyBlock from?

What's that code look like?

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

DestroyBlock is called in the method tick, every 40 tick (1 second) * the radius (by default is 3 blocks).

 

This is the code in QuarryTileEntity :

package fr.leonard.erasium.quarry;

import net.minecraft.block.Block;
import net.minecraft.block.BlockState;
import net.minecraft.block.Blocks;
import net.minecraft.client.Minecraft;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.fluid.IFluidState;
import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.ISidedInventory;
import net.minecraft.inventory.ItemStackHelper;
import net.minecraft.inventory.container.Container;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.CompoundNBT;
import net.minecraft.tileentity.ITickableTileEntity;
import net.minecraft.tileentity.LockableLootTileEntity;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.tileentity.TileEntityType;
import net.minecraft.util.Direction;
import net.minecraft.util.NonNullList;
import net.minecraft.util.SoundCategory;
import net.minecraft.util.SoundEvent;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.text.ITextComponent;
import net.minecraft.util.text.TranslationTextComponent;
import net.minecraft.world.IBlockReader;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.common.util.LazyOptional;
import net.minecraftforge.items.CapabilityItemHandler;
import net.minecraftforge.items.IItemHandlerModifiable;
import net.minecraftforge.items.wrapper.InvWrapper;
import org.jetbrains.annotations.NotNull;

import javax.annotation.Nonnull;
import java.util.stream.IntStream;

public class QuarryTileEntity extends LockableLootTileEntity implements ITickableTileEntity {

    public static int x, y, z, tick;
    boolean initialized = false;
    public static int radius = 3;
    public static boolean dropBlock = false;
    boolean isChestFull = false;
    public static boolean isActive = false;

    private NonNullList<ItemStack> chestContents = NonNullList.withSize(36, ItemStack.EMPTY);
    protected int numPlayersUsing;
    private final IItemHandlerModifiable items = createHandler();
    private LazyOptional<IItemHandlerModifiable> itemHandler = LazyOptional.of(() -> items);

    @Override
    public void tick() {
        if (!initialized) {
            init();
        }
        if (isActive) { //1 seconde par block
            tick++;
            if (tick == radius * 40) {
                tick = 0;
                if (y > 0) {
                    execute();
                }
            }
        }
    }

    private void init() {
        initialized = true;
        x = this.pos.getX() + 1;
        y = this.pos.getY() - 1;
        z = this.pos.getZ();
        tick = 0;
    }

    private void execute() {
        for (int x1 = 0; x1 < radius; x1++) {
            for (int z1 = 0; z1 < radius; z1++) {
                Block blocksRemoved;
                BlockPos posToBreak = new BlockPos(x + x1, y, z + z1);
                blocksRemoved = this.world.getBlockState(posToBreak).getBlock();
                destroyBlock(posToBreak, dropBlock, blocksRemoved);
            }
        }
        y--;
    }

    private void destroyBlock(BlockPos pos, boolean dropBlock, Block blockRemoved) {
        BlockState blockstate = world.getBlockState(pos);
        BlockState newBlockstate = world.getBlockState(pos);
        if (!blockstate.isAir(world, pos) && blockstate.getBlock() != Blocks.BEDROCK) {
            if (!world.isRemote()) {
                newBlockstate = Blocks.AIR.getDefaultState();
            }
            TileEntity tileentity = blockstate.hasTileEntity() ? world.getTileEntity(pos) : null;
            if (dropBlock) {
                Block.spawnDrops(blockstate, world, this.pos.add(0, 1.5, 0), tileentity, null, ItemStack.EMPTY);
            } else if (!isChestFull) {
                for (int i = 0; i < 36; i++) {
                    //Coffre plein -- Chest Full
                    for (int j = 0; j < 36; j++) {
                        if (getStackInSlot(j).isEmpty()) {
                            break;
                        }
                        if (j == 35) {
                            sendMessage();
                            isChestFull = true;
                            break;
                        }
                    }
                    ItemStack theStack = new ItemStack(blockstate.getBlock().asItem());
                    if (getStackInSlot(i).isEmpty()) {
                        setInventorySlotContents(i, new ItemStack(blockRemoved.asItem()));
                        break;
                    } else if (getStackInSlot(i).isItemEqual(theStack) && getStackInSlot(i).getCount() < 64) {
                        setInventorySlotContents(i, new ItemStack(blockRemoved.asItem(), getStackInSlot(i).getCount() + 1));
                        break;
                    } else if (getStackInSlot(i + 1).isEmpty()) {
                        setInventorySlotContents(i + 1, new ItemStack(blockRemoved.asItem()));
                        break;
                    }
                }
            }
        }
        world.setBlockState(pos, newBlockstate, 1);
    }

    public QuarryTileEntity(final TileEntityType<?> tileEntityTypeIn) {
        super(tileEntityTypeIn);
    }

    public QuarryTileEntity() {
        this(ErasiumEntityTypes.ERASIUM_QUARRY.get());
    }

    @Override
    public int getSizeInventory() {
        return 36;
    }

    @Override
    public @NotNull NonNullList<ItemStack> getItems() {
        return this.chestContents;
    }

    @Override
    public void setItems(@NotNull NonNullList<ItemStack> itemsIn) {
        this.chestContents = itemsIn;
    }

    @Override
    protected @NotNull ITextComponent getDefaultName() {
        return new TranslationTextComponent("container.erasium_quarry");
    }

    @Override
    protected @NotNull Container createMenu(int id, @NotNull PlayerInventory player) {
        return new QuarryContainer(id, player, this);
    }

    @Override
    public void setInventorySlotContents(int index, @NotNull ItemStack stack) {
        super.setInventorySlotContents(index, stack);
    }

    @Override
    public @NotNull ItemStack getStackInSlot(int index) {
        return super.getStackInSlot(index);
    }

    @Override
    public @NotNull CompoundNBT write(@NotNull CompoundNBT compound) {
        super.write(compound);
        if (!this.checkLootAndWrite(compound)) {
            ItemStackHelper.saveAllItems(compound, this.chestContents);
        }

        compound.put("values", NBTHelper.toNBT(this));
        return compound;
    }

    @Override
    public void read(@NotNull CompoundNBT compound) {
        super.read(compound);
        CompoundNBT values = compound.getCompound("values");
        x = values.getInt("x");
        y = values.getInt("y");
        z = values.getInt("z");
        tick = 0;
        initialized = true;
        isActive = values.getBoolean("isActive");
        isChestFull = values.getBoolean("isChestFull");

        this.chestContents = NonNullList.withSize(this.getSizeInventory(), ItemStack.EMPTY);
        if (!this.checkLootAndRead(compound)) {
            ItemStackHelper.loadAllItems(compound, this.chestContents);
        }
    }

    private void playSound(SoundEvent sound) {
        double dx = (double) this.pos.getX() + 0.5D;
        double dy = (double) this.pos.getY() + 0.5D;
        double dz = (double) this.pos.getZ() + 0.5D;
        this.world.playSound(null, dx, dy, dz, sound, SoundCategory.BLOCKS, 0.5f,
                this.world.rand.nextFloat() * 0.1f + 0.9f);
    }

    @Override
    public boolean receiveClientEvent(int id, int type) {
        if (id == 1) {
            this.numPlayersUsing = type;
            return true;
        } else {
            return super.receiveClientEvent(id, type);
        }
    }

    @Override
    public void openInventory(PlayerEntity player) {
        if (!player.isSpectator()) {
            if (this.numPlayersUsing < 0) {
                this.numPlayersUsing = 0;
            }

            ++this.numPlayersUsing;
            this.onOpenOrClose();
        }
    }

    @Override
    public void closeInventory(PlayerEntity player) {
        if (!player.isSpectator()) {
            --this.numPlayersUsing;
            this.onOpenOrClose();
        }
    }

    protected void onOpenOrClose() {
        Block block = this.getBlockState().getBlock();
        if (block instanceof ErasiumQuarry) {
            this.world.addBlockEvent(this.pos, block, 1, this.numPlayersUsing);
            this.world.notifyNeighborsOfStateChange(this.pos, block);
        }
    }

    public static int getPlayersUsing(IBlockReader reader, BlockPos pos) {
        BlockState blockstate = reader.getBlockState(pos);
        if (blockstate.hasTileEntity()) {
            TileEntity tileentity = reader.getTileEntity(pos);
            if (tileentity instanceof QuarryTileEntity) {
                return ((QuarryTileEntity) tileentity).numPlayersUsing;
            }
        }
        return 0;
    }


    private static IntStream func_213972_a(IInventory p_213972_0_, Direction p_213972_1_) {
        return p_213972_0_ instanceof ISidedInventory ? IntStream.of(((ISidedInventory) p_213972_0_).getSlotsForFace(p_213972_1_)) : IntStream.range(0, p_213972_0_.getSizeInventory());
    }

    /**
     * Returns false if the inventory has any room to place items in
     */
    private boolean isInventoryFull(IInventory inventoryIn, Direction side) {
        return func_213972_a(inventoryIn, side).allMatch((p_213970_1_) -> {
            ItemStack itemstack = inventoryIn.getStackInSlot(p_213970_1_);
            return itemstack.getCount() >= itemstack.getMaxStackSize();
        });
    }

    /**
     * Returns false if the specified IInventory contains any items
     */
    private static boolean isInventoryEmpty(IInventory inventoryIn, Direction side) {
        return func_213972_a(inventoryIn, side).allMatch((p_213973_1_) -> inventoryIn.getStackInSlot(p_213973_1_).isEmpty());
    }


    public static void swapContents(QuarryTileEntity te, QuarryTileEntity otherTe) {
        NonNullList<ItemStack> list = te.getItems();
        te.setItems(otherTe.getItems());
        otherTe.setItems(list);
    }

    @Override
    public void updateContainingBlockInfo() {
        super.updateContainingBlockInfo();
        if (this.itemHandler != null) {
            this.itemHandler.invalidate();
            this.itemHandler = null;
        }
    }

    @Override
    public <T> LazyOptional<T> getCapability(@Nonnull Capability<T> cap, Direction side) {
        if (cap == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) {
            return itemHandler.cast();
        }
        return super.getCapability(cap, side);
    }

    private IItemHandlerModifiable createHandler() {
        return new InvWrapper(this);
    }

    @Override
    public void remove() {
        super.remove();
        if (itemHandler != null) {
            itemHandler.invalidate();
        }
        isActive = false;
        isChestFull = false;
        x = 0;
        y = 0;
        z = 0;
        tick = 0;
        radius = 3;
        QuarryScreen.onOff = "Off";
    }

    @OnlyIn(Dist.CLIENT)
    private static void sendMessage() {
        if (Minecraft.getInstance().player != null) {
            Minecraft.getInstance().player.sendChatMessage("Mineur Plein");
        }
    }
}

 

Link to comment
Share on other sites

DestroyBlock is called in the method tick, every 40 tick (1 second) * the radius (by default is 3 blocks).

 

This is the code in QuarryTileEntity :

package fr.leonard.erasium.quarry;

import net.minecraft.block.Block;
import net.minecraft.block.BlockState;
import net.minecraft.block.Blocks;
import net.minecraft.client.Minecraft;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.fluid.IFluidState;
import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.ISidedInventory;
import net.minecraft.inventory.ItemStackHelper;
import net.minecraft.inventory.container.Container;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.CompoundNBT;
import net.minecraft.tileentity.ITickableTileEntity;
import net.minecraft.tileentity.LockableLootTileEntity;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.tileentity.TileEntityType;
import net.minecraft.util.Direction;
import net.minecraft.util.NonNullList;
import net.minecraft.util.SoundCategory;
import net.minecraft.util.SoundEvent;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.text.ITextComponent;
import net.minecraft.util.text.TranslationTextComponent;
import net.minecraft.world.IBlockReader;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.common.util.LazyOptional;
import net.minecraftforge.items.CapabilityItemHandler;
import net.minecraftforge.items.IItemHandlerModifiable;
import net.minecraftforge.items.wrapper.InvWrapper;
import org.jetbrains.annotations.NotNull;

import javax.annotation.Nonnull;
import java.util.stream.IntStream;

public class QuarryTileEntity extends LockableLootTileEntity implements ITickableTileEntity {

    public static int x, y, z, tick;
    boolean initialized = false;
    public static int radius = 3;
    public static boolean dropBlock = false;
    boolean isChestFull = false;
    public static boolean isActive = false;

    private NonNullList<ItemStack> chestContents = NonNullList.withSize(36, ItemStack.EMPTY);
    protected int numPlayersUsing;
    private final IItemHandlerModifiable items = createHandler();
    private LazyOptional<IItemHandlerModifiable> itemHandler = LazyOptional.of(() -> items);

    @Override
    public void tick() {
        if (!initialized) {
            init();
        }
        if (isActive) { //1 seconde par block
            tick++;
            if (tick == radius * 40) {
                tick = 0;
                if (y > 0) {
                    execute();
                }
            }
        }
    }

    private void init() {
        initialized = true;
        x = this.pos.getX() + 1;
        y = this.pos.getY() - 1;
        z = this.pos.getZ();
        tick = 0;
    }

    private void execute() {
        for (int x1 = 0; x1 < radius; x1++) {
            for (int z1 = 0; z1 < radius; z1++) {
                Block blocksRemoved;
                BlockPos posToBreak = new BlockPos(x + x1, y, z + z1);
                blocksRemoved = this.world.getBlockState(posToBreak).getBlock();
                destroyBlock(posToBreak, dropBlock, blocksRemoved);
            }
        }
        y--;
    }

    private void destroyBlock(BlockPos pos, boolean dropBlock, Block blockRemoved) {
        BlockState blockstate = world.getBlockState(pos);
        BlockState newBlockstate = world.getBlockState(pos);
        if (!blockstate.isAir(world, pos) && blockstate.getBlock() != Blocks.BEDROCK) {
            if (!world.isRemote()) {
                newBlockstate = Blocks.AIR.getDefaultState();
            }
            TileEntity tileentity = blockstate.hasTileEntity() ? world.getTileEntity(pos) : null;
            if (dropBlock) {
                Block.spawnDrops(blockstate, world, this.pos.add(0, 1.5, 0), tileentity, null, ItemStack.EMPTY);
            } else if (!isChestFull) {
                for (int i = 0; i < 36; i++) {
                    //Coffre plein -- Chest Full
                    for (int j = 0; j < 36; j++) {
                        if (getStackInSlot(j).isEmpty()) {
                            break;
                        }
                        if (j == 35) {
                            sendMessage();
                            isChestFull = true;
                            break;
                        }
                    }
                    ItemStack theStack = new ItemStack(blockstate.getBlock().asItem());
                    if (getStackInSlot(i).isEmpty()) {
                        setInventorySlotContents(i, new ItemStack(blockRemoved.asItem()));
                        break;
                    } else if (getStackInSlot(i).isItemEqual(theStack) && getStackInSlot(i).getCount() < 64) {
                        setInventorySlotContents(i, new ItemStack(blockRemoved.asItem(), getStackInSlot(i).getCount() + 1));
                        break;
                    } else if (getStackInSlot(i + 1).isEmpty()) {
                        setInventorySlotContents(i + 1, new ItemStack(blockRemoved.asItem()));
                        break;
                    }
                }
            }
        }
        world.setBlockState(pos, newBlockstate, 1);
    }

    public QuarryTileEntity(final TileEntityType<?> tileEntityTypeIn) {
        super(tileEntityTypeIn);
    }

    public QuarryTileEntity() {
        this(ErasiumEntityTypes.ERASIUM_QUARRY.get());
    }

    @Override
    public int getSizeInventory() {
        return 36;
    }

    @Override
    public @NotNull NonNullList<ItemStack> getItems() {
        return this.chestContents;
    }

    @Override
    public void setItems(@NotNull NonNullList<ItemStack> itemsIn) {
        this.chestContents = itemsIn;
    }

    @Override
    protected @NotNull ITextComponent getDefaultName() {
        return new TranslationTextComponent("container.erasium_quarry");
    }

    @Override
    protected @NotNull Container createMenu(int id, @NotNull PlayerInventory player) {
        return new QuarryContainer(id, player, this);
    }

    @Override
    public void setInventorySlotContents(int index, @NotNull ItemStack stack) {
        super.setInventorySlotContents(index, stack);
    }

    @Override
    public @NotNull ItemStack getStackInSlot(int index) {
        return super.getStackInSlot(index);
    }

    @Override
    public @NotNull CompoundNBT write(@NotNull CompoundNBT compound) {
        super.write(compound);
        if (!this.checkLootAndWrite(compound)) {
            ItemStackHelper.saveAllItems(compound, this.chestContents);
        }

        compound.put("values", NBTHelper.toNBT(this));
        return compound;
    }

    @Override
    public void read(@NotNull CompoundNBT compound) {
        super.read(compound);
        CompoundNBT values = compound.getCompound("values");
        x = values.getInt("x");
        y = values.getInt("y");
        z = values.getInt("z");
        tick = 0;
        initialized = true;
        isActive = values.getBoolean("isActive");
        isChestFull = values.getBoolean("isChestFull");

        this.chestContents = NonNullList.withSize(this.getSizeInventory(), ItemStack.EMPTY);
        if (!this.checkLootAndRead(compound)) {
            ItemStackHelper.loadAllItems(compound, this.chestContents);
        }
    }

    private void playSound(SoundEvent sound) {
        double dx = (double) this.pos.getX() + 0.5D;
        double dy = (double) this.pos.getY() + 0.5D;
        double dz = (double) this.pos.getZ() + 0.5D;
        this.world.playSound(null, dx, dy, dz, sound, SoundCategory.BLOCKS, 0.5f,
                this.world.rand.nextFloat() * 0.1f + 0.9f);
    }

    @Override
    public boolean receiveClientEvent(int id, int type) {
        if (id == 1) {
            this.numPlayersUsing = type;
            return true;
        } else {
            return super.receiveClientEvent(id, type);
        }
    }

    @Override
    public void openInventory(PlayerEntity player) {
        if (!player.isSpectator()) {
            if (this.numPlayersUsing < 0) {
                this.numPlayersUsing = 0;
            }

            ++this.numPlayersUsing;
            this.onOpenOrClose();
        }
    }

    @Override
    public void closeInventory(PlayerEntity player) {
        if (!player.isSpectator()) {
            --this.numPlayersUsing;
            this.onOpenOrClose();
        }
    }

    protected void onOpenOrClose() {
        Block block = this.getBlockState().getBlock();
        if (block instanceof ErasiumQuarry) {
            this.world.addBlockEvent(this.pos, block, 1, this.numPlayersUsing);
            this.world.notifyNeighborsOfStateChange(this.pos, block);
        }
    }

    public static int getPlayersUsing(IBlockReader reader, BlockPos pos) {
        BlockState blockstate = reader.getBlockState(pos);
        if (blockstate.hasTileEntity()) {
            TileEntity tileentity = reader.getTileEntity(pos);
            if (tileentity instanceof QuarryTileEntity) {
                return ((QuarryTileEntity) tileentity).numPlayersUsing;
            }
        }
        return 0;
    }


    private static IntStream func_213972_a(IInventory p_213972_0_, Direction p_213972_1_) {
        return p_213972_0_ instanceof ISidedInventory ? IntStream.of(((ISidedInventory) p_213972_0_).getSlotsForFace(p_213972_1_)) : IntStream.range(0, p_213972_0_.getSizeInventory());
    }

    /**
     * Returns false if the inventory has any room to place items in
     */
    private boolean isInventoryFull(IInventory inventoryIn, Direction side) {
        return func_213972_a(inventoryIn, side).allMatch((p_213970_1_) -> {
            ItemStack itemstack = inventoryIn.getStackInSlot(p_213970_1_);
            return itemstack.getCount() >= itemstack.getMaxStackSize();
        });
    }

    /**
     * Returns false if the specified IInventory contains any items
     */
    private static boolean isInventoryEmpty(IInventory inventoryIn, Direction side) {
        return func_213972_a(inventoryIn, side).allMatch((p_213973_1_) -> inventoryIn.getStackInSlot(p_213973_1_).isEmpty());
    }


    public static void swapContents(QuarryTileEntity te, QuarryTileEntity otherTe) {
        NonNullList<ItemStack> list = te.getItems();
        te.setItems(otherTe.getItems());
        otherTe.setItems(list);
    }

    @Override
    public void updateContainingBlockInfo() {
        super.updateContainingBlockInfo();
        if (this.itemHandler != null) {
            this.itemHandler.invalidate();
            this.itemHandler = null;
        }
    }

    @Override
    public <T> LazyOptional<T> getCapability(@Nonnull Capability<T> cap, Direction side) {
        if (cap == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) {
            return itemHandler.cast();
        }
        return super.getCapability(cap, side);
    }

    private IItemHandlerModifiable createHandler() {
        return new InvWrapper(this);
    }

    @Override
    public void remove() {
        super.remove();
        if (itemHandler != null) {
            itemHandler.invalidate();
        }
        isActive = false;
        isChestFull = false;
        x = 0;
        y = 0;
        z = 0;
        tick = 0;
        radius = 3;
        QuarryScreen.onOff = "Off";
    }

    @OnlyIn(Dist.CLIENT)
    private static void sendMessage() {
        if (Minecraft.getInstance().player != null) {
            Minecraft.getInstance().player.sendChatMessage("Mineur Plein");
        }
    }
}

 

Link to comment
Share on other sites

23 minutes ago, Leonardlasardine said:

LockableLootTileEntity

Do not use this, this uses the vanilla IInventory system. You should use ItemStackHandler for inventory instead.

 

20 minutes ago, Leonardlasardine said:

blocksRemoved = this.world.getBlockState(posToBreak).getBlock();

destroyBlock(posToBreak, dropBlock, blocksRemoved);

20 minutes ago, Leonardlasardine said:

BlockState blockstate = world.getBlockState(pos);

BlockState newBlockstate = world.getBlockState(pos);

Why the fuck do you have THREE local variables storing the same block state?

blockstate, newBlockstate, and blockRemoved are literally all the same thing and can never be anything else at this point in the code. If you are interested in doing something with these variables, but not with this value, don't assign a value here

 

20 minutes ago, Leonardlasardine said:

if (!world.isRemote()) {

    newBlockstate = Blocks.AIR.getDefaultState();

}

Yeah. Like that...why didn't you just assign newBlockstate to AIR to begin with? And for that matter why do you even need this variable anyway?

 

20 minutes ago, Leonardlasardine said:

public static boolean dropBlock = false;

destroyBlock(posToBreak, dropBlock, blocksRemoved);

What. Why are you passing a public static field to a private non-static method? What.

 

20 minutes ago, Leonardlasardine said:

ItemStack theStack = new ItemStack(blockstate.getBlock().asItem());

This is not how you get an ItemStack from a block. This won't work for a whole host of blocks, from piston heads, to cake, to redstone wire, to crops.

 

20 minutes ago, Leonardlasardine said:

if (getStackInSlot(i).isEmpty()) {

    setInventorySlotContents(i, new ItemStack(blockRemoved.asItem())); break;

} else if (getStackInSlot(i).isItemEqual(theStack) && getStackInSlot(i).getCount() < 64) {

    setInventorySlotContents(i, new ItemStack(blockRemoved.asItem(), getStackInSlot(i).getCount() + 1)); break;

} else if (getStackInSlot(i + 1).isEmpty()) {

    setInventorySlotContents(i + 1, new ItemStack(blockRemoved.asItem())); break;

}

Mmm yep. This is why ItemStackHandler exists.

 

20 minutes ago, Leonardlasardine said:

world.setBlockState(pos, newBlockstate, 1);

3 hours ago, Leonardlasardine said:

Ok thank you, so 3 is good.

  *Suspicion*

Edited by Draco18s

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

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

    • I'm creating a Curio mod and one of those items gives the player Freezing immunity, It works fine with the vanilla Minecraft freezing effect i trayed to to also make it work with Ice and Fire: ice Dragon freezing effect, and the method I was to change the nbtTag the mod add to the player but nothing that i know of works
    • Hi guys! I'm really not good at this kind of thing at all, and I've been throwing together a modpack for my personal entertainment. I had tried loading some worlds earlier when I had 78 and that worked, but now I'm at 90 and something went wrong. I can't enter any world I try to create, it just crashes after lagging for a while at the "Loading World" section.   https://pastebin.com/embed_iframe/WwaKFxiK (please let me know if that link to my crash report doesn't work it's my first time doing this)   I was creating a fresh new world, it's not something that happened in an active world. I create worlds to make sure everything works quickly every 10 mods or so before deleting them. I also downloaded Not Enough Crashes and it doesn't seem to suspect any particular mod. I'm using the Prism Launcher. Any advice helps, I'm very new to this and don't want to have to start making my modpack over again! ❤️
    • Add crash-reports with sites like https://paste.ee/ and paste the link to it here   There is an issue with decorative_blocks - maybe a conflict with Optifine Make a test without Optifine first - if there is no change, remove decorative_blocks
    • While the mods are loading, I get this message and Minecraft crashes, I don't know why   Can anyone kindly help me if you know why? Thank you    ---- Minecraft Crash Report ---- // Don't do that. Time: 2024-05-26 22:17:38 Description: Initializing game java.lang.RuntimeException: null     at net.minecraftforge.registries.GameData.postRegisterEvents(GameData.java:320) ~[forge-1.20.4-49.0.50-universal.jar:?] {re:classloading}     at net.minecraftforge.common.ForgeStatesProvider.lambda$new$4(ForgeStatesProvider.java:25) ~[forge-1.20.4-49.0.50-universal.jar:?] {re:classloading}     at net.minecraftforge.fml.ModLoader.handleInlineTransition(ModLoader.java:219) ~[fmlcore-1.20.4-49.0.50.jar:1.0] {}     at net.minecraftforge.fml.ModLoader.lambda$dispatchAndHandleError$19(ModLoader.java:211) ~[fmlcore-1.20.4-49.0.50.jar:1.0] {}     at java.util.Optional.ifPresent(Optional.java:178) ~[?:?] {re:mixin}     at net.minecraftforge.fml.ModLoader.dispatchAndHandleError(ModLoader.java:211) ~[fmlcore-1.20.4-49.0.50.jar:1.0] {}     at net.minecraftforge.fml.ModLoader.lambda$gatherAndInitializeMods$13(ModLoader.java:185) ~[fmlcore-1.20.4-49.0.50.jar:1.0] {}     at java.lang.Iterable.forEach(Iterable.java:75) ~[?:?] {re:mixin}     at net.minecraftforge.fml.ModLoader.gatherAndInitializeMods(ModLoader.java:185) ~[fmlcore-1.20.4-49.0.50.jar:1.0] {}     at net.minecraftforge.client.loading.ClientModLoader.lambda$begin$1(ClientModLoader.java:52) ~[forge-1.20.4-49.0.50-universal.jar:?] {re:classloading,pl:runtimedistcleaner:A}     at net.minecraftforge.client.loading.ClientModLoader.lambda$createRunnableWithCatch$4(ClientModLoader.java:72) ~[forge-1.20.4-49.0.50-universal.jar:?] {re:classloading,pl:runtimedistcleaner:A}     at net.minecraftforge.client.loading.ClientModLoader.begin(ClientModLoader.java:52) ~[forge-1.20.4-49.0.50-universal.jar:?] {re:classloading,pl:runtimedistcleaner:A}     at net.minecraft.client.Minecraft.<init>(Minecraft.java:484) ~[forge-1.20.4-49.0.50-client.jar:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:glitchcore.mixins.json:client.MixinMinecraft,pl:mixin:APP:architectury.mixins.json:MixinMinecraft,pl:mixin:APP:dynamic_fps-common.mixins.json:MinecraftMixin,pl:mixin:APP:sound_physics_remastered.mixins.json:MinecraftMixin,pl:mixin:A,pl:runtimedistcleaner:A}     at net.minecraft.client.main.Main.main(Main.java:196) ~[forge-1.20.4-49.0.50-client.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:91) ~[fmlloader-1.20.4-49.0.50.jar:?] {}     at net.minecraftforge.fml.loading.targets.CommonLaunchHandler.lambda$makeService$0(CommonLaunchHandler.java:75) ~[fmlloader-1.20.4-49.0.50.jar:?] {}     at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:54) ~[modlauncher-10.1.2.jar:?] {}     at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:74) ~[modlauncher-10.1.2.jar:?] {}     at cpw.mods.modlauncher.Launcher.run(Launcher.java:114) ~[modlauncher-10.1.2.jar:?] {}     at cpw.mods.modlauncher.Launcher.main(Launcher.java:73) ~[modlauncher-10.1.2.jar:?] {}     at cpw.mods.modlauncher.BootstrapEntry.main(BootstrapEntry.java:17) ~[modlauncher-10.1.2.jar:?] {}     at net.minecraftforge.bootstrap.Bootstrap.moduleMain(Bootstrap.java:188) ~[bootstrap-2.1.0.jar!/:?] {}     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.bootstrap.Bootstrap.bootstrapMain(Bootstrap.java:133) ~[bootstrap-2.1.0.jar!/:?] {}     at net.minecraftforge.bootstrap.Bootstrap.start(Bootstrap.java:53) ~[bootstrap-2.1.0.jar!/:?] {}     at net.minecraftforge.bootstrap.ForgeBootstrap.main(ForgeBootstrap.java:19) ~[bootstrap-2.1.0.jar!/:?] {}     Suppressed: net.minecraftforge.fml.ModLoadingException: Decorative Blocks (decorative_blocks) encountered an error during the common_setup event phase §7java.lang.NoSuchMethodError: 'void net.minecraft.world.level.block.TrapDoorBlock.<init>(net.minecraft.world.level.block.state.BlockBehaviour$Properties, net.minecraft.world.level.block.state.properties.BlockSetType)'         at net.minecraftforge.fml.javafmlmod.FMLModContainer.acceptEvent(FMLModContainer.java:110) ~[javafmllanguage-1.20.4-49.0.50.jar:49.0.50] {}         at net.minecraftforge.fml.ModLoader.lambda$postEventWithWrapInModOrder$33(ModLoader.java:347) ~[fmlcore-1.20.4-49.0.50.jar:1.0] {}         at java.lang.Iterable.forEach(Iterable.java:75) ~[?:?] {re:mixin}         at net.minecraftforge.fml.ModList.forEachModInOrder(ModList.java:227) ~[fmlcore-1.20.4-49.0.50.jar:1.0] {re:mixin}         at net.minecraftforge.fml.ModLoader.postEventWithWrapInModOrder(ModLoader.java:345) ~[fmlcore-1.20.4-49.0.50.jar:1.0] {}         at net.minecraftforge.fml.ModLoader.postEventWrapContainerInModOrder(ModLoader.java:338) ~[fmlcore-1.20.4-49.0.50.jar:1.0] {}         at net.minecraftforge.registries.GameData.postRegisterEvents(GameData.java:334) ~[forge-1.20.4-49.0.50-universal.jar:?] {re:classloading}         at net.minecraftforge.common.ForgeStatesProvider.lambda$new$4(ForgeStatesProvider.java:25) ~[forge-1.20.4-49.0.50-universal.jar:?] {re:classloading}         at net.minecraftforge.fml.ModLoader.handleInlineTransition(ModLoader.java:219) ~[fmlcore-1.20.4-49.0.50.jar:1.0] {}         at net.minecraftforge.fml.ModLoader.lambda$dispatchAndHandleError$19(ModLoader.java:211) ~[fmlcore-1.20.4-49.0.50.jar:1.0] {}         at java.util.Optional.ifPresent(Optional.java:178) ~[?:?] {re:mixin}         at net.minecraftforge.fml.ModLoader.dispatchAndHandleError(ModLoader.java:211) ~[fmlcore-1.20.4-49.0.50.jar:1.0] {}         at net.minecraftforge.fml.ModLoader.lambda$gatherAndInitializeMods$13(ModLoader.java:185) ~[fmlcore-1.20.4-49.0.50.jar:1.0] {}         at java.lang.Iterable.forEach(Iterable.java:75) ~[?:?] {re:mixin}         at net.minecraftforge.fml.ModLoader.gatherAndInitializeMods(ModLoader.java:185) ~[fmlcore-1.20.4-49.0.50.jar:1.0] {}         at net.minecraftforge.client.loading.ClientModLoader.lambda$begin$1(ClientModLoader.java:52) ~[forge-1.20.4-49.0.50-universal.jar:?] {re:classloading,pl:runtimedistcleaner:A}         at net.minecraftforge.client.loading.ClientModLoader.lambda$createRunnableWithCatch$4(ClientModLoader.java:72) ~[forge-1.20.4-49.0.50-universal.jar:?] {re:classloading,pl:runtimedistcleaner:A}         at net.minecraftforge.client.loading.ClientModLoader.begin(ClientModLoader.java:52) ~[forge-1.20.4-49.0.50-universal.jar:?] {re:classloading,pl:runtimedistcleaner:A}         at net.minecraft.client.Minecraft.<init>(Minecraft.java:484) ~[forge-1.20.4-49.0.50-client.jar:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:glitchcore.mixins.json:client.MixinMinecraft,pl:mixin:APP:architectury.mixins.json:MixinMinecraft,pl:mixin:APP:dynamic_fps-common.mixins.json:MinecraftMixin,pl:mixin:APP:sound_physics_remastered.mixins.json:MinecraftMixin,pl:mixin:A,pl:runtimedistcleaner:A}         at net.minecraft.client.main.Main.main(Main.java:196) ~[forge-1.20.4-49.0.50-client.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:91) ~[fmlloader-1.20.4-49.0.50.jar:?] {}         at net.minecraftforge.fml.loading.targets.CommonLaunchHandler.lambda$makeService$0(CommonLaunchHandler.java:75) ~[fmlloader-1.20.4-49.0.50.jar:?] {}         at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:54) ~[modlauncher-10.1.2.jar:?] {}         at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:74) ~[modlauncher-10.1.2.jar:?] {}         at cpw.mods.modlauncher.Launcher.run(Launcher.java:114) ~[modlauncher-10.1.2.jar:?] {}         at cpw.mods.modlauncher.Launcher.main(Launcher.java:73) ~[modlauncher-10.1.2.jar:?] {}         at cpw.mods.modlauncher.BootstrapEntry.main(BootstrapEntry.java:17) ~[modlauncher-10.1.2.jar:?] {}         at net.minecraftforge.bootstrap.Bootstrap.moduleMain(Bootstrap.java:188) ~[bootstrap-2.1.0.jar!/:?] {}         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.bootstrap.Bootstrap.bootstrapMain(Bootstrap.java:133) ~[bootstrap-2.1.0.jar!/:?] {}         at net.minecraftforge.bootstrap.Bootstrap.start(Bootstrap.java:53) ~[bootstrap-2.1.0.jar!/:?] {}         at net.minecraftforge.bootstrap.ForgeBootstrap.main(ForgeBootstrap.java:19) ~[bootstrap-2.1.0.jar!/:?] {}     Caused by: java.lang.NoSuchMethodError: 'void net.minecraft.world.level.block.TrapDoorBlock.<init>(net.minecraft.world.level.block.state.BlockBehaviour$Properties, net.minecraft.world.level.block.state.properties.BlockSetType)'         at lilypuree.decorative_blocks.blocks.BarPanelBlock.<init>(BarPanelBlock.java:30) ~[decorative_blocks-forge-1.20.1-4.0.2.jar!/:4.0.2] {re:classloading}         at lilypuree.decorative_blocks.core.DBBlocks.lambda$static$12(DBBlocks.java:67) ~[decorative_blocks-forge-1.20.1-4.0.2.jar!/:4.0.2] {re:classloading}         at net.minecraftforge.registries.DeferredRegister$EventDispatcher.lambda$handleEvent$0(DeferredRegister.java:366) ~[forge-1.20.4-49.0.50-universal.jar!/:?] {re:classloading,pl:eventbus:A}         at net.minecraftforge.registries.RegisterEvent.register(RegisterEvent.java:59) ~[forge-1.20.4-49.0.50-universal.jar!/:?] {re:classloading,pl:eventbus:A}         at net.minecraftforge.registries.DeferredRegister$EventDispatcher.handleEvent(DeferredRegister.java:366) ~[forge-1.20.4-49.0.50-universal.jar!/:?] {re:classloading,pl:eventbus:A}         at net.minecraftforge.registries.__EventDispatcher_handleEvent_RegisterEvent.invoke(.dynamic) ~[forge-1.20.4-49.0.50-universal.jar!/:?] {re:classloading,pl:eventbus:B}         at net.minecraftforge.eventbus.ASMEventHandler.invoke(ASMEventHandler.java:58) ~[eventbus-6.2.0.jar:?] {}         at net.minecraftforge.eventbus.EventBus.post(EventBus.java:300) ~[eventbus-6.2.0.jar:?] {}         at net.minecraftforge.eventbus.EventBus.post(EventBus.java:281) ~[eventbus-6.2.0.jar:?] {}         at net.minecraftforge.fml.javafmlmod.FMLModContainer.acceptEvent(FMLModContainer.java:106) ~[javafmllanguage-1.20.4-49.0.50.jar:49.0.50] {}         ... 38 more     Suppressed: net.minecraftforge.fml.ModLoadingException: Decorative Blocks (decorative_blocks) encountered an error during the common_setup event phase §7java.lang.NullPointerException: Registry Object not present: decorative_blocks:bar_panel         at net.minecraftforge.fml.javafmlmod.FMLModContainer.acceptEvent(FMLModContainer.java:110) ~[javafmllanguage-1.20.4-49.0.50.jar:49.0.50] {}         at net.minecraftforge.fml.ModLoader.lambda$postEventWithWrapInModOrder$33(ModLoader.java:347) ~[fmlcore-1.20.4-49.0.50.jar:1.0] {}         at java.lang.Iterable.forEach(Iterable.java:75) ~[?:?] {re:mixin}         at net.minecraftforge.fml.ModList.forEachModInOrder(ModList.java:227) ~[fmlcore-1.20.4-49.0.50.jar:1.0] {re:mixin}         at net.minecraftforge.fml.ModLoader.postEventWithWrapInModOrder(ModLoader.java:345) ~[fmlcore-1.20.4-49.0.50.jar:1.0] {}         at net.minecraftforge.fml.ModLoader.postEventWrapContainerInModOrder(ModLoader.java:338) ~[fmlcore-1.20.4-49.0.50.jar:1.0] {}         at net.minecraftforge.registries.GameData.postRegisterEvents(GameData.java:334) ~[forge-1.20.4-49.0.50-universal.jar:?] {re:classloading}         at net.minecraftforge.common.ForgeStatesProvider.lambda$new$4(ForgeStatesProvider.java:25) ~[forge-1.20.4-49.0.50-universal.jar:?] {re:classloading}         at net.minecraftforge.fml.ModLoader.handleInlineTransition(ModLoader.java:219) ~[fmlcore-1.20.4-49.0.50.jar:1.0] {}         at net.minecraftforge.fml.ModLoader.lambda$dispatchAndHandleError$19(ModLoader.java:211) ~[fmlcore-1.20.4-49.0.50.jar:1.0] {}         at java.util.Optional.ifPresent(Optional.java:178) ~[?:?] {re:mixin}         at net.minecraftforge.fml.ModLoader.dispatchAndHandleError(ModLoader.java:211) ~[fmlcore-1.20.4-49.0.50.jar:1.0] {}         at net.minecraftforge.fml.ModLoader.lambda$gatherAndInitializeMods$13(ModLoader.java:185) ~[fmlcore-1.20.4-49.0.50.jar:1.0] {}         at java.lang.Iterable.forEach(Iterable.java:75) ~[?:?] {re:mixin}         at net.minecraftforge.fml.ModLoader.gatherAndInitializeMods(ModLoader.java:185) ~[fmlcore-1.20.4-49.0.50.jar:1.0] {}         at net.minecraftforge.client.loading.ClientModLoader.lambda$begin$1(ClientModLoader.java:52) ~[forge-1.20.4-49.0.50-universal.jar:?] {re:classloading,pl:runtimedistcleaner:A}         at net.minecraftforge.client.loading.ClientModLoader.lambda$createRunnableWithCatch$4(ClientModLoader.java:72) ~[forge-1.20.4-49.0.50-universal.jar:?] {re:classloading,pl:runtimedistcleaner:A}         at net.minecraftforge.client.loading.ClientModLoader.begin(ClientModLoader.java:52) ~[forge-1.20.4-49.0.50-universal.jar:?] {re:classloading,pl:runtimedistcleaner:A}         at net.minecraft.client.Minecraft.<init>(Minecraft.java:484) ~[forge-1.20.4-49.0.50-client.jar:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:glitchcore.mixins.json:client.MixinMinecraft,pl:mixin:APP:architectury.mixins.json:MixinMinecraft,pl:mixin:APP:dynamic_fps-common.mixins.json:MinecraftMixin,pl:mixin:APP:sound_physics_remastered.mixins.json:MinecraftMixin,pl:mixin:A,pl:runtimedistcleaner:A}         at net.minecraft.client.main.Main.main(Main.java:196) ~[forge-1.20.4-49.0.50-client.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:91) ~[fmlloader-1.20.4-49.0.50.jar:?] {}         at net.minecraftforge.fml.loading.targets.CommonLaunchHandler.lambda$makeService$0(CommonLaunchHandler.java:75) ~[fmlloader-1.20.4-49.0.50.jar:?] {}         at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:54) ~[modlauncher-10.1.2.jar:?] {}         at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:74) ~[modlauncher-10.1.2.jar:?] {}         at cpw.mods.modlauncher.Launcher.run(Launcher.java:114) ~[modlauncher-10.1.2.jar:?] {}         at cpw.mods.modlauncher.Launcher.main(Launcher.java:73) ~[modlauncher-10.1.2.jar:?] {}         at cpw.mods.modlauncher.BootstrapEntry.main(BootstrapEntry.java:17) ~[modlauncher-10.1.2.jar:?] {}         at net.minecraftforge.bootstrap.Bootstrap.moduleMain(Bootstrap.java:188) ~[bootstrap-2.1.0.jar!/:?] {}         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.bootstrap.Bootstrap.bootstrapMain(Bootstrap.java:133) ~[bootstrap-2.1.0.jar!/:?] {}         at net.minecraftforge.bootstrap.Bootstrap.start(Bootstrap.java:53) ~[bootstrap-2.1.0.jar!/:?] {}         at net.minecraftforge.bootstrap.ForgeBootstrap.main(ForgeBootstrap.java:19) ~[bootstrap-2.1.0.jar!/:?] {}     Caused by: java.lang.NullPointerException: Registry Object not present: decorative_blocks:bar_panel         at java.util.Objects.requireNonNull(Objects.java:336) ~[?:?] {re:mixin}         at net.minecraftforge.registries.RegistryObject.get(RegistryObject.java:204) ~[forge-1.20.4-49.0.50-universal.jar!/:?] {re:classloading,re:mixin}         at lilypuree.decorative_blocks.registration.forge.ForgeRegistrationFactory$Provider$1.get(ForgeRegistrationFactory.java:145) ~[decorative_blocks-forge-1.20.1-4.0.2.jar!/:4.0.2] {re:classloading}         at lilypuree.decorative_blocks.registration.BlockRegistryObject$1.get(BlockRegistryObject.java:87) ~[decorative_blocks-forge-1.20.1-4.0.2.jar!/:4.0.2] {re:classloading}         at lilypuree.decorative_blocks.registration.BlockRegistryObject$1.get(BlockRegistryObject.java:74) ~[decorative_blocks-forge-1.20.1-4.0.2.jar!/:4.0.2] {re:classloading}         at lilypuree.decorative_blocks.core.DBItems.lambda$registerBlockItem$3(DBItems.java:83) ~[decorative_blocks-forge-1.20.1-4.0.2.jar!/:4.0.2] {re:classloading}         at net.minecraftforge.registries.DeferredRegister$EventDispatcher.lambda$handleEvent$0(DeferredRegister.java:366) ~[forge-1.20.4-49.0.50-universal.jar!/:?] {re:classloading,pl:eventbus:A}         at net.minecraftforge.registries.RegisterEvent.register(RegisterEvent.java:59) ~[forge-1.20.4-49.0.50-universal.jar!/:?] {re:classloading,pl:eventbus:A}         at net.minecraftforge.registries.DeferredRegister$EventDispatcher.handleEvent(DeferredRegister.java:366) ~[forge-1.20.4-49.0.50-universal.jar!/:?] {re:classloading,pl:eventbus:A}         at net.minecraftforge.registries.__EventDispatcher_handleEvent_RegisterEvent.invoke(.dynamic) ~[forge-1.20.4-49.0.50-universal.jar!/:?] {re:classloading,pl:eventbus:B}         at net.minecraftforge.eventbus.ASMEventHandler.invoke(ASMEventHandler.java:58) ~[eventbus-6.2.0.jar:?] {}         at net.minecraftforge.eventbus.EventBus.post(EventBus.java:300) ~[eventbus-6.2.0.jar:?] {}         at net.minecraftforge.eventbus.EventBus.post(EventBus.java:281) ~[eventbus-6.2.0.jar:?] {}         at net.minecraftforge.fml.javafmlmod.FMLModContainer.acceptEvent(FMLModContainer.java:106) ~[javafmllanguage-1.20.4-49.0.50.jar:49.0.50] {}         ... 38 more     Suppressed: net.minecraftforge.fml.ModLoadingException: GlitchCore (glitchcore) encountered an error during the common_setup event phase §7java.lang.NullPointerException: null         at net.minecraftforge.fml.javafmlmod.FMLModContainer.acceptEvent(FMLModContainer.java:110) ~[javafmllanguage-1.20.4-49.0.50.jar:49.0.50] {}         at net.minecraftforge.fml.ModLoader.lambda$postEventWithWrapInModOrder$33(ModLoader.java:347) ~[fmlcore-1.20.4-49.0.50.jar:1.0] {}         at java.lang.Iterable.forEach(Iterable.java:75) ~[?:?] {re:mixin}         at net.minecraftforge.fml.ModList.forEachModInOrder(ModList.java:227) ~[fmlcore-1.20.4-49.0.50.jar:1.0] {re:mixin}         at net.minecraftforge.fml.ModLoader.postEventWithWrapInModOrder(ModLoader.java:345) ~[fmlcore-1.20.4-49.0.50.jar:1.0] {}         at net.minecraftforge.fml.ModLoader.postEventWrapContainerInModOrder(ModLoader.java:338) ~[fmlcore-1.20.4-49.0.50.jar:1.0] {}         at net.minecraftforge.registries.GameData.postRegisterEvents(GameData.java:334) ~[forge-1.20.4-49.0.50-universal.jar:?] {re:classloading}         at net.minecraftforge.common.ForgeStatesProvider.lambda$new$4(ForgeStatesProvider.java:25) ~[forge-1.20.4-49.0.50-universal.jar:?] {re:classloading}         at net.minecraftforge.fml.ModLoader.handleInlineTransition(ModLoader.java:219) ~[fmlcore-1.20.4-49.0.50.jar:1.0] {}         at net.minecraftforge.fml.ModLoader.lambda$dispatchAndHandleError$19(ModLoader.java:211) ~[fmlcore-1.20.4-49.0.50.jar:1.0] {}         at java.util.Optional.ifPresent(Optional.java:178) ~[?:?] {re:mixin}         at net.minecraftforge.fml.ModLoader.dispatchAndHandleError(ModLoader.java:211) ~[fmlcore-1.20.4-49.0.50.jar:1.0] {}         at net.minecraftforge.fml.ModLoader.lambda$gatherAndInitializeMods$13(ModLoader.java:185) ~[fmlcore-1.20.4-49.0.50.jar:1.0] {}         at java.lang.Iterable.forEach(Iterable.java:75) ~[?:?] {re:mixin}         at net.minecraftforge.fml.ModLoader.gatherAndInitializeMods(ModLoader.java:185) ~[fmlcore-1.20.4-49.0.50.jar:1.0] {}         at net.minecraftforge.client.loading.ClientModLoader.lambda$begin$1(ClientModLoader.java:52) ~[forge-1.20.4-49.0.50-universal.jar:?] {re:classloading,pl:runtimedistcleaner:A}         at net.minecraftforge.client.loading.ClientModLoader.lambda$createRunnableWithCatch$4(ClientModLoader.java:72) ~[forge-1.20.4-49.0.50-universal.jar:?] {re:classloading,pl:runtimedistcleaner:A}         at net.minecraftforge.client.loading.ClientModLoader.begin(ClientModLoader.java:52) ~[forge-1.20.4-49.0.50-universal.jar:?] {re:classloading,pl:runtimedistcleaner:A}         at net.minecraft.client.Minecraft.<init>(Minecraft.java:484) ~[forge-1.20.4-49.0.50-client.jar:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:glitchcore.mixins.json:client.MixinMinecraft,pl:mixin:APP:architectury.mixins.json:MixinMinecraft,pl:mixin:APP:dynamic_fps-common.mixins.json:MinecraftMixin,pl:mixin:APP:sound_physics_remastered.mixins.json:MinecraftMixin,pl:mixin:A,pl:runtimedistcleaner:A}         at net.minecraft.client.main.Main.main(Main.java:196) ~[forge-1.20.4-49.0.50-client.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:91) ~[fmlloader-1.20.4-49.0.50.jar:?] {}         at net.minecraftforge.fml.loading.targets.CommonLaunchHandler.lambda$makeService$0(CommonLaunchHandler.java:75) ~[fmlloader-1.20.4-49.0.50.jar:?] {}         at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:54) ~[modlauncher-10.1.2.jar:?] {}         at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:74) ~[modlauncher-10.1.2.jar:?] {}         at cpw.mods.modlauncher.Launcher.run(Launcher.java:114) ~[modlauncher-10.1.2.jar:?] {}         at cpw.mods.modlauncher.Launcher.main(Launcher.java:73) ~[modlauncher-10.1.2.jar:?] {}         at cpw.mods.modlauncher.BootstrapEntry.main(BootstrapEntry.java:17) ~[modlauncher-10.1.2.jar:?] {}         at net.minecraftforge.bootstrap.Bootstrap.moduleMain(Bootstrap.java:188) ~[bootstrap-2.1.0.jar!/:?] {}         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.bootstrap.Bootstrap.bootstrapMain(Bootstrap.java:133) ~[bootstrap-2.1.0.jar!/:?] {}         at net.minecraftforge.bootstrap.Bootstrap.start(Bootstrap.java:53) ~[bootstrap-2.1.0.jar!/:?] {}         at net.minecraftforge.bootstrap.ForgeBootstrap.main(ForgeBootstrap.java:19) ~[bootstrap-2.1.0.jar!/:?] {}     Caused by: java.lang.NullPointerException         at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:903) ~[guava-32.1.2-jre.jar!/:?] {}         at com.google.common.collect.ImmutableSet.construct(ImmutableSet.java:206) ~[guava-32.1.2-jre.jar!/:?] {re:mixin}         at com.google.common.collect.ImmutableSet.constructUnknownDuplication(ImmutableSet.java:172) ~[guava-32.1.2-jre.jar!/:?] {re:mixin}         at com.google.common.collect.ImmutableSet.copyOf(ImmutableSet.java:300) ~[guava-32.1.2-jre.jar!/:?] {re:mixin}         at net.minecraft.world.level.block.entity.BlockEntityType$Builder.m_155273_(BlockEntityType.java:127) ~[forge-1.20.4-49.0.50-client.jar!/:?] {re:classloading}         at biomesoplenty.init.ModBlockEntities.registerBlockEntities(ModBlockEntities.java:26) ~[BiomesOPlenty-forge-1.20.4-19.0.0.89.jar!/:19.0.0.89] {re:classloading}         at glitchcore.util.RegistryHelper.lambda$accept$0(RegistryHelper.java:43) ~[GlitchCore-forge-1.20.4-1.0.0.59.jar!/:1.0.0.59] {re:classloading}         at java.lang.Iterable.forEach(Iterable.java:75) ~[?:?] {re:mixin}         at glitchcore.util.RegistryHelper.accept(RegistryHelper.java:41) ~[GlitchCore-forge-1.20.4-1.0.0.59.jar!/:1.0.0.59] {re:classloading}         at glitchcore.util.RegistryHelper.accept(RegistryHelper.java:18) ~[GlitchCore-forge-1.20.4-1.0.0.59.jar!/:1.0.0.59] {re:classloading}         at glitchcore.event.EventManager.fire(EventManager.java:45) ~[GlitchCore-forge-1.20.4-1.0.0.59.jar!/:1.0.0.59] {re:mixin,re:classloading}         at glitchcore.forge.handlers.RegistryEventHandler.onRegister(RegistryEventHandler.java:22) ~[GlitchCore-forge-1.20.4-1.0.0.59.jar!/:1.0.0.59] {re:classloading}         at glitchcore.forge.handlers.__RegistryEventHandler_onRegister_RegisterEvent.invoke(.dynamic) ~[GlitchCore-forge-1.20.4-1.0.0.59.jar!/:1.0.0.59] {re:classloading,pl:eventbus:B}         at net.minecraftforge.eventbus.ASMEventHandler.invoke(ASMEventHandler.java:58) ~[eventbus-6.2.0.jar:?] {}         at net.minecraftforge.eventbus.EventBus.post(EventBus.java:300) ~[eventbus-6.2.0.jar:?] {}         at net.minecraftforge.eventbus.EventBus.post(EventBus.java:281) ~[eventbus-6.2.0.jar:?] {}         at net.minecraftforge.fml.javafmlmod.FMLModContainer.acceptEvent(FMLModContainer.java:106) ~[javafmllanguage-1.20.4-49.0.50.jar:49.0.50] {}         ... 38 more     Suppressed: net.minecraftforge.fml.ModLoadingException: GlitchCore (glitchcore) encountered an error during the common_setup event phase §7java.lang.NullPointerException: null         at net.minecraftforge.fml.javafmlmod.FMLModContainer.acceptEvent(FMLModContainer.java:110) ~[javafmllanguage-1.20.4-49.0.50.jar:49.0.50] {}         at net.minecraftforge.fml.ModLoader.lambda$postEventWithWrapInModOrder$33(ModLoader.java:347) ~[fmlcore-1.20.4-49.0.50.jar:1.0] {}         at java.lang.Iterable.forEach(Iterable.java:75) ~[?:?] {re:mixin}         at net.minecraftforge.fml.ModList.forEachModInOrder(ModList.java:227) ~[fmlcore-1.20.4-49.0.50.jar:1.0] {re:mixin}         at net.minecraftforge.fml.ModLoader.postEventWithWrapInModOrder(ModLoader.java:345) ~[fmlcore-1.20.4-49.0.50.jar:1.0] {}         at net.minecraftforge.fml.ModLoader.postEventWrapContainerInModOrder(ModLoader.java:338) ~[fmlcore-1.20.4-49.0.50.jar:1.0] {}         at net.minecraftforge.registries.GameData.postRegisterEvents(GameData.java:334) ~[forge-1.20.4-49.0.50-universal.jar:?] {re:classloading}         at net.minecraftforge.common.ForgeStatesProvider.lambda$new$4(ForgeStatesProvider.java:25) ~[forge-1.20.4-49.0.50-universal.jar:?] {re:classloading}         at net.minecraftforge.fml.ModLoader.handleInlineTransition(ModLoader.java:219) ~[fmlcore-1.20.4-49.0.50.jar:1.0] {}         at net.minecraftforge.fml.ModLoader.lambda$dispatchAndHandleError$19(ModLoader.java:211) ~[fmlcore-1.20.4-49.0.50.jar:1.0] {}         at java.util.Optional.ifPresent(Optional.java:178) ~[?:?] {re:mixin}         at net.minecraftforge.fml.ModLoader.dispatchAndHandleError(ModLoader.java:211) ~[fmlcore-1.20.4-49.0.50.jar:1.0] {}         at net.minecraftforge.fml.ModLoader.lambda$gatherAndInitializeMods$13(ModLoader.java:185) ~[fmlcore-1.20.4-49.0.50.jar:1.0] {}         at java.lang.Iterable.forEach(Iterable.java:75) ~[?:?] {re:mixin}         at net.minecraftforge.fml.ModLoader.gatherAndInitializeMods(ModLoader.java:185) ~[fmlcore-1.20.4-49.0.50.jar:1.0] {}         at net.minecraftforge.client.loading.ClientModLoader.lambda$begin$1(ClientModLoader.java:52) ~[forge-1.20.4-49.0.50-universal.jar:?] {re:classloading,pl:runtimedistcleaner:A}         at net.minecraftforge.client.loading.ClientModLoader.lambda$createRunnableWithCatch$4(ClientModLoader.java:72) ~[forge-1.20.4-49.0.50-universal.jar:?] {re:classloading,pl:runtimedistcleaner:A}         at net.minecraftforge.client.loading.ClientModLoader.begin(ClientModLoader.java:52) ~[forge-1.20.4-49.0.50-universal.jar:?] {re:classloading,pl:runtimedistcleaner:A}         at net.minecraft.client.Minecraft.<init>(Minecraft.java:484) ~[forge-1.20.4-49.0.50-client.jar:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:glitchcore.mixins.json:client.MixinMinecraft,pl:mixin:APP:architectury.mixins.json:MixinMinecraft,pl:mixin:APP:dynamic_fps-common.mixins.json:MinecraftMixin,pl:mixin:APP:sound_physics_remastered.mixins.json:MinecraftMixin,pl:mixin:A,pl:runtimedistcleaner:A}         at net.minecraft.client.main.Main.main(Main.java:196) ~[forge-1.20.4-49.0.50-client.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:91) ~[fmlloader-1.20.4-49.0.50.jar:?] {}         at net.minecraftforge.fml.loading.targets.CommonLaunchHandler.lambda$makeService$0(CommonLaunchHandler.java:75) ~[fmlloader-1.20.4-49.0.50.jar:?] {}         at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:54) ~[modlauncher-10.1.2.jar:?] {}         at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:74) ~[modlauncher-10.1.2.jar:?] {}         at cpw.mods.modlauncher.Launcher.run(Launcher.java:114) ~[modlauncher-10.1.2.jar:?] {}         at cpw.mods.modlauncher.Launcher.main(Launcher.java:73) ~[modlauncher-10.1.2.jar:?] {}         at cpw.mods.modlauncher.BootstrapEntry.main(BootstrapEntry.java:17) ~[modlauncher-10.1.2.jar:?] {}         at net.minecraftforge.bootstrap.Bootstrap.moduleMain(Bootstrap.java:188) ~[bootstrap-2.1.0.jar!/:?] {}         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.bootstrap.Bootstrap.bootstrapMain(Bootstrap.java:133) ~[bootstrap-2.1.0.jar!/:?] {}         at net.minecraftforge.bootstrap.Bootstrap.start(Bootstrap.java:53) ~[bootstrap-2.1.0.jar!/:?] {}         at net.minecraftforge.bootstrap.ForgeBootstrap.main(ForgeBootstrap.java:19) ~[bootstrap-2.1.0.jar!/:?] {}     Caused by: java.lang.NullPointerException         at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:903) ~[guava-32.1.2-jre.jar!/:?] {}         at com.google.common.collect.ImmutableSet.construct(ImmutableSet.java:206) ~[guava-32.1.2-jre.jar!/:?] {re:mixin}         at com.google.common.collect.ImmutableSet.of(ImmutableSet.java:152) ~[guava-32.1.2-jre.jar!/:?] {re:mixin}         at biomesoplenty.worldgen.carver.OriginCaveWorldCarver.<init>(OriginCaveWorldCarver.java:20) ~[BiomesOPlenty-forge-1.20.4-19.0.0.89.jar!/:19.0.0.89] {re:classloading}         at biomesoplenty.worldgen.carver.BOPWorldCarvers.registerCarvers(BOPWorldCarvers.java:21) ~[BiomesOPlenty-forge-1.20.4-19.0.0.89.jar!/:19.0.0.89] {re:classloading}         at glitchcore.util.RegistryHelper.lambda$accept$0(RegistryHelper.java:43) ~[GlitchCore-forge-1.20.4-1.0.0.59.jar!/:1.0.0.59] {re:classloading}         at java.lang.Iterable.forEach(Iterable.java:75) ~[?:?] {re:mixin}         at glitchcore.util.RegistryHelper.accept(RegistryHelper.java:41) ~[GlitchCore-forge-1.20.4-1.0.0.59.jar!/:1.0.0.59] {re:classloading}         at glitchcore.util.RegistryHelper.accept(RegistryHelper.java:18) ~[GlitchCore-forge-1.20.4-1.0.0.59.jar!/:1.0.0.59] {re:classloading}         at glitchcore.event.EventManager.fire(EventManager.java:45) ~[GlitchCore-forge-1.20.4-1.0.0.59.jar!/:1.0.0.59] {re:mixin,re:classloading}         at glitchcore.forge.handlers.RegistryEventHandler.onRegister(RegistryEventHandler.java:22) ~[GlitchCore-forge-1.20.4-1.0.0.59.jar!/:1.0.0.59] {re:classloading}         at glitchcore.forge.handlers.__RegistryEventHandler_onRegister_RegisterEvent.invoke(.dynamic) ~[GlitchCore-forge-1.20.4-1.0.0.59.jar!/:1.0.0.59] {re:classloading,pl:eventbus:B}         at net.minecraftforge.eventbus.ASMEventHandler.invoke(ASMEventHandler.java:58) ~[eventbus-6.2.0.jar:?] {}         at net.minecraftforge.eventbus.EventBus.post(EventBus.java:300) ~[eventbus-6.2.0.jar:?] {}         at net.minecraftforge.eventbus.EventBus.post(EventBus.java:281) ~[eventbus-6.2.0.jar:?] {}         at net.minecraftforge.fml.javafmlmod.FMLModContainer.acceptEvent(FMLModContainer.java:106) ~[javafmllanguage-1.20.4-49.0.50.jar:49.0.50] {}         ... 38 more     Suppressed: net.minecraftforge.fml.ModLoadingException: GlitchCore (glitchcore) encountered an error during the common_setup event phase §7java.lang.NullPointerException: at index 0         at net.minecraftforge.fml.javafmlmod.FMLModContainer.acceptEvent(FMLModContainer.java:110) ~[javafmllanguage-1.20.4-49.0.50.jar:49.0.50] {}         at net.minecraftforge.fml.ModLoader.lambda$postEventWithWrapInModOrder$33(ModLoader.java:347) ~[fmlcore-1.20.4-49.0.50.jar:1.0] {}         at java.lang.Iterable.forEach(Iterable.java:75) ~[?:?] {re:mixin}         at net.minecraftforge.fml.ModList.forEachModInOrder(ModList.java:227) ~[fmlcore-1.20.4-49.0.50.jar:1.0] {re:mixin}         at net.minecraftforge.fml.ModLoader.postEventWithWrapInModOrder(ModLoader.java:345) ~[fmlcore-1.20.4-49.0.50.jar:1.0] {}         at net.minecraftforge.fml.ModLoader.postEventWrapContainerInModOrder(ModLoader.java:338) ~[fmlcore-1.20.4-49.0.50.jar:1.0] {}         at net.minecraftforge.registries.GameData.postRegisterEvents(GameData.java:334) ~[forge-1.20.4-49.0.50-universal.jar:?] {re:classloading}         at net.minecraftforge.common.ForgeStatesProvider.lambda$new$4(ForgeStatesProvider.java:25) ~[forge-1.20.4-49.0.50-universal.jar:?] {re:classloading}         at net.minecraftforge.fml.ModLoader.handleInlineTransition(ModLoader.java:219) ~[fmlcore-1.20.4-49.0.50.jar:1.0] {}         at net.minecraftforge.fml.ModLoader.lambda$dispatchAndHandleError$19(ModLoader.java:211) ~[fmlcore-1.20.4-49.0.50.jar:1.0] {}         at java.util.Optional.ifPresent(Optional.java:178) ~[?:?] {re:mixin}         at net.minecraftforge.fml.ModLoader.dispatchAndHandleError(ModLoader.java:211) ~[fmlcore-1.20.4-49.0.50.jar:1.0] {}         at net.minecraftforge.fml.ModLoader.lambda$gatherAndInitializeMods$13(ModLoader.java:185) ~[fmlcore-1.20.4-49.0.50.jar:1.0] {}         at java.lang.Iterable.forEach(Iterable.java:75) ~[?:?] {re:mixin}         at net.minecraftforge.fml.ModLoader.gatherAndInitializeMods(ModLoader.java:185) ~[fmlcore-1.20.4-49.0.50.jar:1.0] {}         at net.minecraftforge.client.loading.ClientModLoader.lambda$begin$1(ClientModLoader.java:52) ~[forge-1.20.4-49.0.50-universal.jar:?] {re:classloading,pl:runtimedistcleaner:A}         at net.minecraftforge.client.loading.ClientModLoader.lambda$createRunnableWithCatch$4(ClientModLoader.java:72) ~[forge-1.20.4-49.0.50-universal.jar:?] {re:classloading,pl:runtimedistcleaner:A}         at net.minecraftforge.client.loading.ClientModLoader.begin(ClientModLoader.java:52) ~[forge-1.20.4-49.0.50-universal.jar:?] {re:classloading,pl:runtimedistcleaner:A}         at net.minecraft.client.Minecraft.<init>(Minecraft.java:484) ~[forge-1.20.4-49.0.50-client.jar:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:glitchcore.mixins.json:client.MixinMinecraft,pl:mixin:APP:architectury.mixins.json:MixinMinecraft,pl:mixin:APP:dynamic_fps-common.mixins.json:MinecraftMixin,pl:mixin:APP:sound_physics_remastered.mixins.json:MinecraftMixin,pl:mixin:A,pl:runtimedistcleaner:A}         at net.minecraft.client.main.Main.main(Main.java:196) ~[forge-1.20.4-49.0.50-client.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:91) ~[fmlloader-1.20.4-49.0.50.jar:?] {}         at net.minecraftforge.fml.loading.targets.CommonLaunchHandler.lambda$makeService$0(CommonLaunchHandler.java:75) ~[fmlloader-1.20.4-49.0.50.jar:?] {}         at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:54) ~[modlauncher-10.1.2.jar:?] {}         at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:74) ~[modlauncher-10.1.2.jar:?] {}         at cpw.mods.modlauncher.Launcher.run(Launcher.java:114) ~[modlauncher-10.1.2.jar:?] {}         at cpw.mods.modlauncher.Launcher.main(Launcher.java:73) ~[modlauncher-10.1.2.jar:?] {}         at cpw.mods.modlauncher.BootstrapEntry.main(BootstrapEntry.java:17) ~[modlauncher-10.1.2.jar:?] {}         at net.minecraftforge.bootstrap.Bootstrap.moduleMain(Bootstrap.java:188) ~[bootstrap-2.1.0.jar!/:?] {}         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.bootstrap.Bootstrap.bootstrapMain(Bootstrap.java:133) ~[bootstrap-2.1.0.jar!/:?] {}         at net.minecraftforge.bootstrap.Bootstrap.start(Bootstrap.java:53) ~[bootstrap-2.1.0.jar!/:?] {}         at net.minecraftforge.bootstrap.ForgeBootstrap.main(ForgeBootstrap.java:19) ~[bootstrap-2.1.0.jar!/:?] {}     Caused by: java.lang.NullPointerException: at index 0         at com.google.common.collect.ObjectArrays.checkElementNotNull(ObjectArrays.java:232) ~[guava-32.1.2-jre.jar!/:?] {}         at com.google.common.collect.ObjectArrays.checkElementsNotNull(ObjectArrays.java:222) ~[guava-32.1.2-jre.jar!/:?] {}         at com.google.common.collect.ObjectArrays.checkElementsNotNull(ObjectArrays.java:216) ~[guava-32.1.2-jre.jar!/:?] {}         at com.google.common.collect.ImmutableList.construct(ImmutableList.java:353) ~[guava-32.1.2-jre.jar!/:?] {}         at com.google.common.collect.ImmutableList.of(ImmutableList.java:225) ~[guava-32.1.2-jre.jar!/:?] {}         at biomesoplenty.init.ModCreativeTab.registerCreativeTabs(ModCreativeTab.java:25) ~[BiomesOPlenty-forge-1.20.4-19.0.0.89.jar!/:19.0.0.89] {re:classloading}         at glitchcore.util.RegistryHelper.lambda$accept$0(RegistryHelper.java:43) ~[GlitchCore-forge-1.20.4-1.0.0.59.jar!/:1.0.0.59] {re:classloading}         at java.lang.Iterable.forEach(Iterable.java:75) ~[?:?] {re:mixin}         at glitchcore.util.RegistryHelper.accept(RegistryHelper.java:41) ~[GlitchCore-forge-1.20.4-1.0.0.59.jar!/:1.0.0.59] {re:classloading}         at glitchcore.util.RegistryHelper.accept(RegistryHelper.java:18) ~[GlitchCore-forge-1.20.4-1.0.0.59.jar!/:1.0.0.59] {re:classloading}         at glitchcore.event.EventManager.fire(EventManager.java:45) ~[GlitchCore-forge-1.20.4-1.0.0.59.jar!/:1.0.0.59] {re:mixin,re:classloading}         at glitchcore.forge.handlers.RegistryEventHandler.onRegister(RegistryEventHandler.java:22) ~[GlitchCore-forge-1.20.4-1.0.0.59.jar!/:1.0.0.59] {re:classloading}         at glitchcore.forge.handlers.__RegistryEventHandler_onRegister_RegisterEvent.invoke(.dynamic) ~[GlitchCore-forge-1.20.4-1.0.0.59.jar!/:1.0.0.59] {re:classloading,pl:eventbus:B}         at net.minecraftforge.eventbus.ASMEventHandler.invoke(ASMEventHandler.java:58) ~[eventbus-6.2.0.jar:?] {}         at net.minecraftforge.eventbus.EventBus.post(EventBus.java:300) ~[eventbus-6.2.0.jar:?] {}         at net.minecraftforge.eventbus.EventBus.post(EventBus.java:281) ~[eventbus-6.2.0.jar:?] {}         at net.minecraftforge.fml.javafmlmod.FMLModContainer.acceptEvent(FMLModContainer.java:106) ~[javafmllanguage-1.20.4-49.0.50.jar:49.0.50] {}         ... 38 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.registries.GameData.postRegisterEvents(GameData.java:320) ~[forge-1.20.4-49.0.50-universal.jar:?] {re:classloading}     at net.minecraftforge.common.ForgeStatesProvider.lambda$new$4(ForgeStatesProvider.java:25) ~[forge-1.20.4-49.0.50-universal.jar:?] {re:classloading}     at net.minecraftforge.fml.ModLoader.handleInlineTransition(ModLoader.java:219) ~[fmlcore-1.20.4-49.0.50.jar!/:1.0] {}     at net.minecraftforge.fml.ModLoader.lambda$dispatchAndHandleError$19(ModLoader.java:211) ~[fmlcore-1.20.4-49.0.50.jar!/:1.0] {}     at java.util.Optional.ifPresent(Optional.java:178) ~[?:?] {re:mixin}     at net.minecraftforge.fml.ModLoader.dispatchAndHandleError(ModLoader.java:211) ~[fmlcore-1.20.4-49.0.50.jar!/:1.0] {}     at net.minecraftforge.fml.ModLoader.lambda$gatherAndInitializeMods$13(ModLoader.java:185) ~[fmlcore-1.20.4-49.0.50.jar!/:1.0] {}     at java.lang.Iterable.forEach(Iterable.java:75) ~[?:?] {re:mixin}     at net.minecraftforge.fml.ModLoader.gatherAndInitializeMods(ModLoader.java:185) ~[fmlcore-1.20.4-49.0.50.jar!/:1.0] {}     at net.minecraftforge.client.loading.ClientModLoader.lambda$begin$1(ClientModLoader.java:52) ~[forge-1.20.4-49.0.50-universal.jar!/:?] {re:classloading,pl:runtimedistcleaner:A}     at net.minecraftforge.client.loading.ClientModLoader.lambda$createRunnableWithCatch$4(ClientModLoader.java:72) ~[forge-1.20.4-49.0.50-universal.jar!/:?] {re:classloading,pl:runtimedistcleaner:A}     at net.minecraftforge.client.loading.ClientModLoader.begin(ClientModLoader.java:52) ~[forge-1.20.4-49.0.50-universal.jar!/:?] {re:classloading,pl:runtimedistcleaner:A}     at net.minecraft.client.Minecraft.<init>(Minecraft.java:484) ~[forge-1.20.4-49.0.50-client.jar!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:glitchcore.mixins.json:client.MixinMinecraft,pl:mixin:APP:architectury.mixins.json:MixinMinecraft,pl:mixin:APP:dynamic_fps-common.mixins.json:MinecraftMixin,pl:mixin:APP:sound_physics_remastered.mixins.json:MinecraftMixin,pl:mixin:A,pl:runtimedistcleaner:A} -- Initialization -- Details:     Modules:          ADVAPI32.dll:API Windows 32 Base avanzato:10.0.19041.4165 (WinBuild.160101.0800):Microsoft Corporation         COMCTL32.dll:Libreria di controlli per le azioni dell'utente:6.10 (WinBuild.160101.0800):Microsoft Corporation         CRYPT32.dll:Crypto API32:10.0.19041.4165 (WinBuild.160101.0800):Microsoft Corporation         CRYPTBASE.dll:Base cryptographic API DLL:10.0.19041.3636 (WinBuild.160101.0800):Microsoft Corporation         CRYPTSP.dll:Cryptographic Service Provider API:10.0.19041.3636 (WinBuild.160101.0800):Microsoft Corporation         ColorAdapterClient.dll:Microsoft Color Adapter Client:10.0.19041.3636 (WinBuild.160101.0800):Microsoft Corporation         CoreMessaging.dll:Microsoft CoreMessaging Dll:10.0.19041.4355:Microsoft Corporation         CoreUIComponents.dll:Microsoft Core UI Components Dll:10.0.19041.3636:Microsoft Corporation         DBGHELP.DLL:Windows Image Helper:10.0.19041.3636 (WinBuild.160101.0800):Microsoft Corporation         DEVOBJ.dll:Device Information Set DLL:10.0.19041.4355 (WinBuild.160101.0800):Microsoft Corporation         DNSAPI.dll:DLL API client DNS:10.0.19041.4165 (WinBuild.160101.0800):Microsoft Corporation         DPAPI.DLL:Data Protection API:10.0.19041.3636 (WinBuild.160101.0800):Microsoft Corporation         GDI32.dll:GDI Client DLL:10.0.19041.3996 (WinBuild.160101.0800):Microsoft Corporation         GLU32.dll:OpenGL Utility Library DLL:10.0.19041.4165 (WinBuild.160101.0800):Microsoft Corporation         IMM32.DLL:Multi-User Windows IMM32 API Client DLL:10.0.19041.4355 (WinBuild.160101.0800):Microsoft Corporation         IPHLPAPI.DLL:API helper IP:10.0.19041.4165 (WinBuild.160101.0800):Microsoft Corporation         KERNEL32.DLL:DLL client di Windows NT BASE API:10.0.19041.4165 (WinBuild.160101.0800):Microsoft Corporation         KERNELBASE.dll:DLL client di Windows NT BASE API:10.0.19041.4165 (WinBuild.160101.0800):Microsoft Corporation         MSCTF.dll:MSCTF Server DLL:10.0.19041.4165 (WinBuild.160101.0800):Microsoft Corporation         NLAapi.dll:Network Location Awareness 2:10.0.19041.4123 (WinBuild.160101.0800):Microsoft Corporation         NSI.dll:NSI User-mode interface DLL:10.0.19041.3636 (WinBuild.160101.0800):Microsoft Corporation         NTASN1.dll:Microsoft ASN.1 API:10.0.19041.1 (WinBuild.160101.0800):Microsoft Corporation         OLEAUT32.dll:OLEAUT32.DLL:10.0.19041.3636 (WinBuild.160101.0800):Microsoft Corporation         POWRPROF.dll:DLL helper del profilo di alimentazione:10.0.19041.4165 (WinBuild.160101.0800):Microsoft Corporation         PROPSYS.dll:Sistema di proprietà Microsoft:7.0.19041.4165 (WinBuild.160101.0800):Microsoft Corporation         PSAPI.DLL:Process Status Helper:10.0.19041.3636 (WinBuild.160101.0800):Microsoft Corporation         Pdh.dll:DLL helper Dati di prestazione di Windows:10.0.19041.4165 (WinBuild.160101.0800):Microsoft Corporation         RPCRT4.dll:Runtime RPC (Remote Procedure Call):10.0.19041.4165 (WinBuild.160101.0800):Microsoft Corporation         SHCORE.dll:SHCORE:10.0.19041.4165 (WinBuild.160101.0800):Microsoft Corporation         SHELL32.dll:DLL comune della shell di Windows:10.0.19041.4165 (WinBuild.160101.0800):Microsoft Corporation         SSPICLI.DLL:Security Support Provider Interface:10.0.19041.4239 (WinBuild.160101.0800):Microsoft Corporation         Secur32.dll:Security Support Provider Interface:10.0.19041.3636 (WinBuild.160101.0800):Microsoft Corporation         UMPDC.dll         USER32.dll:Multi-User Windows USER API Client DLL:10.0.19041.4165 (WinBuild.160101.0800):Microsoft Corporation         USERENV.dll:Userenv:10.0.19041.4165 (WinBuild.160101.0800):Microsoft Corporation         VCRUNTIME140.dll:Microsoft® C Runtime Library:14.29.30139.0 built by: vcwrkspc:Microsoft Corporation         VERSION.dll:Version Checking and File Installation Libraries:10.0.19041.3636 (WinBuild.160101.0800):Microsoft Corporation         WINHTTP.dll:Servizi HTTP Windows:10.0.19041.4165 (WinBuild.160101.0800):Microsoft Corporation         WINMM.dll:DLL API MCI:10.0.19041.4165 (WinBuild.160101.0800):Microsoft Corporation         WS2_32.dll:DLL a 32 bit di Windows Socket 2.0:10.0.19041.4165 (WinBuild.160101.0800):Microsoft Corporation         WSOCK32.dll:Windows Socket 32-Bit DLL:10.0.19041.4165 (WinBuild.160101.0800):Microsoft Corporation         Wldp.dll:Criterio di blocco di Windows:10.0.19041.4165 (WinBuild.160101.0800):Microsoft Corporation         amsi.dll:Anti-Malware Scan Interface:10.0.19041.4355 (WinBuild.160101.0800):Microsoft Corporation         apphelp.dll:Libreria client compatibilità applicazione:10.0.19041.4165 (WinBuild.160101.0800):Microsoft Corporation         awt.dll:OpenJDK Platform binary:17.0.8.0:Microsoft         bcrypt.dll:Libreria primitive di crittografia di Windows:10.0.19041.4165 (WinBuild.160101.0800):Microsoft Corporation         bcryptPrimitives.dll:Windows Cryptographic Primitives Library:10.0.19041.3636 (WinBuild.160101.0800):Microsoft Corporation         cfgmgr32.dll:Configuration Manager DLL:10.0.19041.3996 (WinBuild.160101.0800):Microsoft Corporation         clbcatq.dll:COM+ Configuration Catalog:2001.12.10941.16384 (WinBuild.160101.0800):Microsoft Corporation         com_antivirus.dll:Kaspersky ComAntivirus Component:30.1580.0.940:AO Kaspersky Lab         combase.dll:Microsoft COM per Windows:10.0.19041.4165 (WinBuild.160101.0800):Microsoft Corporation         dbgcore.DLL:Windows Core Debugging Helpers:10.0.19041.4355 (WinBuild.160101.0800):Microsoft Corporation         dhcpcsvc.DLL:Servizio Client DHCP:10.0.19041.4165 (WinBuild.160101.0800):Microsoft Corporation         dhcpcsvc6.DLL:Client DHCPv6:10.0.19041.4165 (WinBuild.160101.0800):Microsoft Corporation         dinput8.dll:Microsoft DirectInput:10.0.19041.4165 (WinBuild.160101.0800):Microsoft Corporation         dwmapi.dll:API di Gestione finestre desktop Microsoft:10.0.19041.4165 (WinBuild.160101.0800):Microsoft Corporation         dxgi.dll:DirectX Graphics Infrastructure:10.0.19041.4355 (WinBuild.160101.0800):Microsoft Corporation         fwpuclnt.dll:API modalità utente FWP/IPsec:10.0.19041.4165 (WinBuild.160101.0800):Microsoft Corporation         gdi32full.dll:GDI Client DLL:10.0.19041.4355 (WinBuild.160101.0800):Microsoft Corporation         glfw.dll:GLFW 3.4.0 DLL:3.4.0:GLFW         icm32.dll:Microsoft Color Management Module (CMM):10.0.19041.3636 (WinBuild.160101.0800):Microsoft Corporation         ig9icd64.dll:OpenGL(R) Driver for Intel(R) Graphics Accelerator:27.20.100.8682:Intel Corporation         igc64.dll:Intel Graphics Shader Compiler for Intel(R) Graphics Accelerator:27.20.100.8682:Intel Corporation         igdgmm64.dll:User Mode Driver for Intel(R) Graphics Technology:27.20.100.8682:Intel Corporation         igdml64.dll:Metrics Library for Intel(R) Graphics Technology:27.20.100.8682:Intel Corporation         inputhost.dll:InputHost:10.0.19041.4355 (WinBuild.160101.0800):Microsoft Corporation         java.dll:OpenJDK Platform binary:17.0.8.0:Microsoft         javaw.exe:OpenJDK Platform binary:17.0.8.0:Microsoft         jemalloc.dll         jimage.dll:OpenJDK Platform binary:17.0.8.0:Microsoft         jli.dll:OpenJDK Platform binary:17.0.8.0:Microsoft         jna14716657657075399810.dll:JNA native library:6.1.6:Java(TM) Native Access (JNA)         jsvml.dll:OpenJDK Platform binary:17.0.8.0:Microsoft         jvm.dll:OpenJDK 64-Bit server VM:17.0.8.0:Microsoft         kernel.appcore.dll:AppModel API Host:10.0.19041.3758 (WinBuild.160101.0800):Microsoft Corporation         lwjgl.dll         lwjgl_opengl.dll         lwjgl_stb.dll         management.dll:OpenJDK Platform binary:17.0.8.0:Microsoft         management_ext.dll:OpenJDK Platform binary:17.0.8.0:Microsoft         mscms.dll:DLL sistema di corrispondenza colori Microsoft:10.0.19041.4165 (WinBuild.160101.0800):Microsoft Corporation         msvcp140.dll:Microsoft® C Runtime Library:14.29.30139.0 built by: vcwrkspc:Microsoft Corporation         msvcp_win.dll:Microsoft® C Runtime Library:10.0.19041.3636 (WinBuild.160101.0800):Microsoft Corporation         msvcrt.dll:Windows NT CRT DLL:7.0.19041.3636 (WinBuild.160101.0800):Microsoft Corporation         mswsock.dll:Service Provider Microsoft Windows Sockets 2.0:10.0.19041.4165 (WinBuild.160101.0800):Microsoft Corporation         napinsp.dll:Provider shim denominazione posta elettronica:10.0.19041.4165 (WinBuild.160101.0800):Microsoft Corporation         ncrypt.dll:Windows NCrypt Router:10.0.19041.4165 (WinBuild.160101.0800):Microsoft Corporation         net.dll:OpenJDK Platform binary:17.0.8.0:Microsoft         nio.dll:OpenJDK Platform binary:17.0.8.0:Microsoft         ntdll.dll:DLL del livello NT:10.0.19041.4165 (WinBuild.160101.0800):Microsoft Corporation         ntmarta.dll:Provider MARTA per Windows NT:10.0.19041.4165 (WinBuild.160101.0800):Microsoft Corporation         ole32.dll:Microsoft OLE per Windows:10.0.19041.4165 (WinBuild.160101.0800):Microsoft Corporation         opengl32.dll:OpenGL Client DLL:10.0.19041.4355 (WinBuild.160101.0800):Microsoft Corporation         perfos.dll:DLL oggetti delle prestazioni del sistema Windows:10.0.19041.4165 (WinBuild.160101.0800):Microsoft Corporation         pnrpnsp.dll:Provider spazio dei nomi PNRP:10.0.19041.4165 (WinBuild.160101.0800):Microsoft Corporation         profapi.dll:User Profile Basic API:10.0.19041.4355 (WinBuild.160101.0800):Microsoft Corporation         rasadhlp.dll:Remote Access AutoDial Helper:10.0.19041.3636 (WinBuild.160101.0800):Microsoft Corporation         rsaenh.dll:Microsoft Enhanced Cryptographic Provider:10.0.19041.1 (WinBuild.160101.0800):Microsoft Corporation         sechost.dll:Host for SCM/SDDL/LSA Lookup APIs:10.0.19041.1 (WinBuild.160101.0800):Microsoft Corporation         shlwapi.dll:Libreria leggera di utilità per la shell:10.0.19041.4165 (WinBuild.160101.0800):Microsoft Corporation         sunmscapi.dll:OpenJDK Platform binary:17.0.8.0:Microsoft         textinputframework.dll:"TextInputFramework.DYNLINK":10.0.19041.4355 (WinBuild.160101.0800):Microsoft Corporation         ucrtbase.dll:Microsoft® C Runtime Library:10.0.19041.3636 (WinBuild.160101.0800):Microsoft Corporation         uxtheme.dll:Libreria UxTheme di Microsoft:10.0.19041.4165 (WinBuild.160101.0800):Microsoft Corporation         vcruntime140_1.dll:Microsoft® C Runtime Library:14.29.30139.0 built by: vcwrkspc:Microsoft Corporation         verify.dll:OpenJDK Platform binary:17.0.8.0:Microsoft         win32u.dll:Win32u:10.0.19041.4412 (WinBuild.160101.0800):Microsoft Corporation         windows.storage.dll:API archiviazione Microsoft WinRT:10.0.19041.4165 (WinBuild.160101.0800):Microsoft Corporation         winrnr.dll:LDAP RnR Provider DLL:10.0.19041.3636 (WinBuild.160101.0800):Microsoft Corporation         wintypes.dll:DLL tipi di base Windows:10.0.19041.4165 (WinBuild.160101.0800):Microsoft Corporation         wshbth.dll:Windows Sockets Helper DLL:10.0.19041.3636 (WinBuild.160101.0800):Microsoft Corporation         xinput1_4.dll:API periferica comune Microsoft:10.0.19041.4165 (WinBuild.160101.0800):Microsoft Corporation         zip.dll:OpenJDK Platform binary:17.0.8.0:Microsoft Stacktrace:     at net.minecraft.client.main.Main.main(Main.java:196) ~[forge-1.20.4-49.0.50-client.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:91) ~[fmlloader-1.20.4-49.0.50.jar:?] {}     at net.minecraftforge.fml.loading.targets.CommonLaunchHandler.lambda$makeService$0(CommonLaunchHandler.java:75) ~[fmlloader-1.20.4-49.0.50.jar:?] {}     at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:54) ~[modlauncher-10.1.2.jar:?] {}     at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:74) ~[modlauncher-10.1.2.jar:?] {}     at cpw.mods.modlauncher.Launcher.run(Launcher.java:114) ~[modlauncher-10.1.2.jar:?] {}     at cpw.mods.modlauncher.Launcher.main(Launcher.java:73) ~[modlauncher-10.1.2.jar:?] {}     at cpw.mods.modlauncher.BootstrapEntry.main(BootstrapEntry.java:17) ~[modlauncher-10.1.2.jar:?] {}     at net.minecraftforge.bootstrap.Bootstrap.moduleMain(Bootstrap.java:188) ~[bootstrap-2.1.0.jar!/:?] {}     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.bootstrap.Bootstrap.bootstrapMain(Bootstrap.java:133) ~[bootstrap-2.1.0.jar!/:?] {}     at net.minecraftforge.bootstrap.Bootstrap.start(Bootstrap.java:53) ~[bootstrap-2.1.0.jar!/:?] {}     at net.minecraftforge.bootstrap.ForgeBootstrap.main(ForgeBootstrap.java:19) ~[bootstrap-2.1.0.jar!/:?] {} -- System Details -- Details:     Minecraft Version: 1.20.4     Minecraft Version ID: 1.20.4     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: 715257464 bytes (682 MiB) / 1447034880 bytes (1380 MiB) up to 4294967296 bytes (4096 MiB)     CPUs: 4     Processor Vendor: GenuineIntel     Processor Name: Intel(R) Core(TM) i5-7200U CPU @ 2.50GHz     Identifier: Intel64 Family 6 Model 142 Stepping 9     Microarchitecture: Amber Lake     Frequency (GHz): 2.71     Number of physical packages: 1     Number of physical CPUs: 2     Number of logical CPUs: 4     Graphics card #0 name: NVIDIA GeForce 930MX     Graphics card #0 vendor: NVIDIA (0x10de)     Graphics card #0 VRAM (MB): 2048.00     Graphics card #0 deviceId: 0x134e     Graphics card #0 versionInfo: DriverVersion=30.0.15.1179     Graphics card #1 name: Intel(R) HD Graphics 620     Graphics card #1 vendor: Intel Corporation (0x8086)     Graphics card #1 VRAM (MB): 1024.00     Graphics card #1 deviceId: 0x5916     Graphics card #1 versionInfo: DriverVersion=27.20.100.8682     Memory slot #0 capacity (MB): 4096.00     Memory slot #0 clockSpeed (GHz): 2.13     Memory slot #0 type: DDR4     Virtual memory max (MB): 14220.26     Virtual memory used (MB): 8538.14     Swap memory total (MB): 10240.00     Swap memory used (MB): 1415.27     JVM Flags: 4 total; -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump -Xss1M -Xmx4096m -Xms256m     Launched Version: forge-49.0.50     Launcher name: minecraft-launcher     Backend library: LWJGL version 3.3.2+13     Backend API: Intel(R) HD Graphics 620 GL version 4.6.0 - Build 27.20.100.8682, Intel     Window size: <not initialized>     GL Caps: Using framebuffer using OpenGL 3.2     GL debug messages:      Using VBOs: Yes     Is Modded: Definitely; Client brand changed to 'forge'     Universe: 404     Type: Client (map_client.txt)     Locale: en_US     CPU: 4x Intel(R) Core(TM) i5-7200U CPU @ 2.50GHz     OptiFine Version: OptiFine_1.20.4_HD_U_I7     OptiFine Build: 20240317-172634     Render Distance Chunks: 8     Mipmaps: 4     Anisotropic Filtering: 1     Antialiasing: 0     Multitexture: false     Shaders: null     OpenGlVersion: 4.6.0 - Build 27.20.100.8682     OpenGlRenderer: Intel(R) HD Graphics 620     OpenGlVendor: Intel     CpuCount: 4     ModLauncher: 10.1.2     ModLauncher launch target: forge_client     ModLauncher naming: srg     ModLauncher services:          / slf4jfixer PLUGINSERVICE          / runtimedistcleaner PLUGINSERVICE          / runtime_enum_extender PLUGINSERVICE          / object_holder_definalize PLUGINSERVICE          / capability_token_subclass PLUGINSERVICE          / accesstransformer PLUGINSERVICE          / eventbus PLUGINSERVICE          / mixin PLUGINSERVICE          / OptiFine TRANSFORMATIONSERVICE          / fml TRANSFORMATIONSERVICE          / mixin TRANSFORMATIONSERVICE      FML Language Providers:          lowcodefml@49         [email protected]         [email protected]     Mod List:          forge-1.20.4-49.0.50-client.jar                   |Minecraft                     |minecraft                     |1.20.4              |COMMON_SET|Manifest: NOSIGNATURE         mcw-bridges-3.0.0-mc1.20.4forge.jar               |Macaw's Bridges               |mcwbridges                    |3.0.0               |COMMON_SET|Manifest: NOSIGNATURE         saturn-mc1.20.4-0.1.3.jar                         |Saturn                        |saturn                        |0.1.3               |COMMON_SET|Manifest: NOSIGNATURE         TerraBlender-forge-1.20.4-3.3.0.12.jar            |TerraBlender                  |terrablender                  |3.3.0.12            |COMMON_SET|Manifest: NOSIGNATURE         mcw-fences-1.1.1-mc1.20.4forge.jar                |Macaw's Fences and Walls      |mcwfences                     |1.1.1               |COMMON_SET|Manifest: NOSIGNATURE         jei-1.20.4-forge-17.3.0.52.jar                    |Just Enough Items             |jei                           |17.3.0.52           |COMMON_SET|Manifest: NOSIGNATURE         spectrelib-forge-0.15.2+1.20.4.jar                |SpectreLib                    |spectrelib                    |0.15.2+1.20.4       |COMMON_SET|Manifest: NOSIGNATURE         mcw-windows-2.2.1-mc1.20.4forge.jar               |Macaw's Windows               |mcwwindows                    |2.2.1               |COMMON_SET|Manifest: NOSIGNATURE         ForgeEndertech-1.20.4-11.4.1.1-build.0170.jar     |ForgeEndertech                |forgeendertech                |11.4.1.1            |COMMON_SET|Manifest: NOSIGNATURE         Croptopia-1.20.4-FORGE-3.0.4.jar                  |Croptopia                     |croptopia                     |3.0.4               |COMMON_SET|Manifest: NOSIGNATURE         journeymap-1.20.4-5.9.25-forge.jar                |Journeymap                    |journeymap                    |5.9.25              |COMMON_SET|Manifest: NOSIGNATURE         comforts-forge-7.2.2+1.20.4.jar                   |Comforts                      |comforts                      |7.2.2+1.20.4        |COMMON_SET|Manifest: NOSIGNATURE         travelersbackpack-forge-1.20.4-9.4.2.jar          |Traveler's Backpack           |travelersbackpack             |9.4.2               |COMMON_SET|Manifest: NOSIGNATURE         EpheroLib-1.20.4-FORGE-1.2.0.jar                  |EpheroLib                     |epherolib                     |1.2.0               |COMMON_SET|Manifest: NOSIGNATURE         YungsApi-1.20.4-Forge-4.4.3.jar                   |YUNG's API                    |yungsapi                      |1.20.4-Forge-4.4.3  |COMMON_SET|Manifest: NOSIGNATURE         decorative_blocks-forge-1.20.1-4.0.2.jar          |Decorative Blocks             |decorative_blocks             |4.0.2               |COMMON_SET|Manifest: NOSIGNATURE         mixinextras-forge-0.3.5.jar                       |MixinExtras                   |mixinextras                   |0.3.5               |COMMON_SET|Manifest: NOSIGNATURE         GlitchCore-forge-1.20.4-1.0.0.59.jar              |GlitchCore                    |glitchcore                    |1.0.0.59            |COMMON_SET|Manifest: NOSIGNATURE         BiomesOPlenty-forge-1.20.4-19.0.0.89.jar          |Biomes O' Plenty              |biomesoplenty                 |19.0.0.89           |COMMON_SET|Manifest: NOSIGNATURE         mcw-roofs-2.3.0-mc1.20.4forge.jar                 |Macaw's Roofs                 |mcwroofs                      |2.3.0               |COMMON_SET|Manifest: NOSIGNATURE         architectury-11.1.17-minecraftforge.jar           |Architectury                  |architectury                  |11.1.17             |COMMON_SET|Manifest: NOSIGNATURE         moremobvariants-forge+1.20.4-1.3.0.1.jar          |More Mob Variants             |moremobvariants               |1.3.0.1             |COMMON_SET|Manifest: NOSIGNATURE         additional_lights-1.20.4-2.1.7.jar                |Additional Lights             |additional_lights             |2.1.7               |COMMON_SET|Manifest: NOSIGNATURE         dynamic-fps-3.4.3+minecraft-1.20.0-forge.jar      |Dynamic FPS                   |dynamic_fps                   |3.4.3               |COMMON_SET|Manifest: NOSIGNATURE         AdChimneys-1.20.4-10.4.1.1-build.0170.jar         |Advanced Chimneys             |adchimneys                    |10.4.1.1            |COMMON_SET|Manifest: NOSIGNATURE         macawsroofsbop-1.20-1.0.jar                       |Macaw's Roofs - BOP           |macawsroofsbop                |1.20-1.0            |COMMON_SET|Manifest: NOSIGNATURE         cloth-config-13.0.121-forge.jar                   |Cloth Config v13 API          |cloth_config                  |13.0.121            |COMMON_SET|Manifest: NOSIGNATURE         sound-physics-remastered-forge-1.20.4-1.4.2.jar   |Sound Physics Remastered      |sound_physics_remastered      |1.20.4-1.4.2        |COMMON_SET|Manifest: NOSIGNATURE         [1.20.2-forge]-Epic-Knights-8.11.jar              |Epic Knights Mod              |magistuarmory                 |8.11                |COMMON_SET|Manifest: NOSIGNATURE         forge-1.20.4-49.0.50-universal.jar                |Forge                         |forge                         |49.0.50             |COMMON_SET|Manifest: NOSIGNATURE         appleskin-forge-mc1.20.2-2.5.1.jar                |AppleSkin                     |appleskin                     |2.5.1+mc1.20.2      |COMMON_SET|Manifest: NOSIGNATURE         t_and_t-1.12.1.1.jar                              |Towns and Towers              |t_and_t                       |1.12.1              |COMMON_SET|Manifest: NOSIGNATURE         YungsBetterMineshafts-1.20.4-Forge-4.4.2.jar      |YUNG's Better Mineshafts      |bettermineshafts              |1.20.4-Forge-4.4.2  |COMMON_SET|Manifest: NOSIGNATURE         cristellib-1.2.2-forge.jar                        |Cristel Lib                   |cristellib                    |1.2.2               |COMMON_SET|Manifest: NOSIGNATURE     Crash Report UUID: a8123eb1-7d66-4297-93b0-8b9baf89b22d     FML: 0.0     Forge: net.minecraftforge:49.0.50
    • In the perilous world of online trading, where promises of quick riches often lead to devastating losses, finding a trustworthy ally can feel like searching for a needle in a haystack. My journey began with high hopes, as I ventured into online trading with an external expert guiding my every move. Little did I know, I was stepping into a carefully orchestrated scam. After investing a substantial $380,000 deposit on an online trading platform, I found myself at the mercy of both the platform and the supposed expert leading my trades. Despite initially seeing profits, red flags began to appear when they demanded a hefty 20% fee, not from the generated profits, but from my pocket. Alarm bells rang loudly in my mind, signaling a potential scam. Thankfully, in the nick of time, I stumbled upon Wizard Web Recovery. With skepticism clouding my judgment, I cautiously reached out to them, hoping against hope for a glimmer of salvation. From the first interaction, their professionalism and expertise shone brightly, offering hope amidst the murky waters of deceit. Their approach was meticulous and methodical, as they diligently assessed my situation, leaving no stone unturned in their quest for justice. Despite the daunting odds stacked against me, Wizard Web Recovery embarked on a relentless pursuit to reclaim what was rightfully mine. Their transparency was a breath of fresh air in an industry plagued by deception. Every step of the way, they kept me informed, providing regular updates and guidance, instilling a sense of trust that had long eluded me. Their dedication to my cause was unwavering, as they navigated the complexities of online trading with finesse and precision. What truly sets Wizard Web Recovery apart is its unwavering commitment to its clients. Beyond mere restitution, they prioritize education and empowerment, equipping individuals with the knowledge and tools to navigate the treacherous waters of online trading safely. Through their expertise and tenacity, Wizard Web Recovery emerged victorious, securing the return of my hard-earned funds. But their impact extends far beyond mere financial restitution. They restored my faith in humanity, proving that amidst the darkness, there are still beacons of light shining brightly. To anyone who finds themselves ensnared in the tangled web of online trading scams, I wholeheartedly recommend Wizard Web Recovery. Their professionalism, expertise, and unwavering dedication are unmatched, offering a glimmer of hope in an otherwise bleak landscape. Trust in their abilities, for they are true wizards in the realm of recovery.
  • Topics

×
×
  • Create New...

Important Information

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