Jump to content

[1.12.2] [SOLVED] addItemStackToInventory Doesn't Work In Blocks?


Recommended Posts

Posted (edited)

For adding an item to the players inventory, if I setItemHeld it works fine, but I would prefer addItemStackToInventory to it will stack. But it seems to prematurely exit the method that uses it for some reason. Here's the method:

 

@Override
	public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer playerIn, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ)
    {
        if (worldIn.isRemote) return false;

        TileEntity tile = worldIn.getTileEntity(pos);
        if(tile instanceof IMagitechTileInventory) {
        	IMagitechTileInventory ped = (IMagitechTileInventory)tile;
	        if(EnumHand.MAIN_HAND == hand) {
	        	ItemStack item = playerIn.getHeldItemMainhand();
	        	ItemStack inped = ped.getStackInSlot(0);
	        	if(item == ItemStack.EMPTY || item == null) {
	        		if(inped != null && inped != ItemStack.EMPTY) {
	        	        worldIn.playSound((EntityPlayer)null, pos, SoundEvents.BLOCK_ENCHANTMENT_TABLE_USE, SoundCategory.BLOCKS, 0.3F, 0.6F);
//	        	        if(playerIn.inventory.addItemStackToInventory(inped))
	        	        playerIn.setHeldItem(EnumHand.MAIN_HAND, inped);
	        			ped.setInventorySlotContents(0, ItemStack.EMPTY);
	        			tile.markDirty();
	        		}
	        	} else if(inped == ItemStack.EMPTY) {
        			if(item.getCount() > 1) {
        		        worldIn.playSound((EntityPlayer)null, pos, SoundEvents.BLOCK_ENCHANTMENT_TABLE_USE, SoundCategory.BLOCKS, 0.3F, 0.6F);
        				item.shrink(1);
        				ItemStack t = new ItemStack(item.getItem(), 1);
        				ped.setInventorySlotContents(0, t);
        				tile.markDirty();
        			} else {
        		        worldIn.playSound((EntityPlayer)null, pos, SoundEvents.BLOCK_ENCHANTMENT_TABLE_USE, SoundCategory.BLOCKS, 0.3F, 0.6F);
	        			playerIn.setHeldItem(EnumHand.MAIN_HAND, ItemStack.EMPTY);
	        			ped.setInventorySlotContents(0, item);
	        			tile.markDirty();
        			}
	        	}
	        }
        }
        return true;
    }

 

Is there a convention that should be used which I am unaware of, or is this the only way to do what I am trying to accomplish?

Edited by KittenKoder
Posted
27 minutes ago, diesieben07 said:
  • Don't use IInventory use IItemHandler instead.
  • Don't directly check for ItemStack.EMPTY, use ItemStack::isEmpty. Checking if an ItemStack is null is pointless.
  • This is not the way to copy an ItemStack. Use ItemStack::copy.

  • Special-casing "item has stack size 1" and "item has stack size > 1" is not needed. Just decrease the stack size by one and then check if the stack is empty.

  • addItemStackToInventory should work fine, please clarify what you mean by "prematurely exit".

Wrong. If I don't check for null I get nullpointer errors from vanilla all the time, even in this instance when checking player inventory I get null pointer sometimes. The rest of what you said is meaningless, I didn't do most of what you said, and in other cases it only works the way I did it. As I said, the problem is in addItemStackToInventory. I found that it is somehow preventing the ItemHandler from the pedestal from synching. Since this is handled by the net.minecraftforge.items.ItemStackHandler I didn't realize that was what was happening. The problem is that without changing vanilla code, it won't synchronize.

 

If I have to write another ItemHandler to make it work that way, then I will just keep it this way. Writing a new class to do something that everyone uses increases the bloat of the game and would explain why so many mods are not being updated or getting too cumbersome for multiplayer.

Posted

 

22 minutes ago, diesieben07 said:

Show code and stack traces. This should not be happening.

 

No, it is not. If you don't want help, go fuck off.

 

You are mixing up so many things... Nothing in your code (or in vanilla code) uses ItemStackHandler. You are using IInventory for your inventory (as evidenced by the call to setInventorySlotContents). And vanilla uses IInventory anyways. So... what are you talking about?

I showed you the code, and there is nothing in the stack traces, and I mean nothing.

 

The player inventory is set by whatever sets it, I don't change those classes at all. It's the player inventory add method that causes problems, not mine. If I cannot use the vanilla classes with the Forge classes then I will choose the vanilla classes so I don't have to override everything.

Posted

I get null pointer exceptions when I don't check what vanilla code returns, that's why there are checks there. The player inventory method for add item is what is causing the problem! Do you not follow that? It's only when I call addItemStackToInventory on the PLAYER inventory that everything messes up. I stated that from the beginning, look at what is commented out, that's the method that causes the problems, not the ones I added or customized.

Posted

Here:

package com.kittenkoder.magitech.tile;

import net.minecraft.block.state.IBlockState;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import net.minecraftforge.fml.common.network.NetworkRegistry;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import net.minecraftforge.items.ItemStackHandler;

import com.kittenkoder.magitech.Magitech;
import com.kittenkoder.magitech.network.MagitechPedestalRequestUpdate;
import com.kittenkoder.magitech.network.MagitechUpdatePedestalPacket;

public class MagitechTileEntityPedestal extends MagitechPartialTileEntity implements IMagitechTileInventory {
	public static final AxisAlignedBB BOUNDINGBOX = new AxisAlignedBB(0.0D, 0.0D, 0.0D, 1.0D, 0.25D, 1.0D);

	protected ItemStackHandler handler;
	
	public class MagitechPedestalStackHandler extends ItemStackHandler {
		protected MagitechTileEntityPedestal tile;
		
		public MagitechPedestalStackHandler(MagitechTileEntityPedestal ntile) {
			super(1);
			this.tile = ntile;
		}
		
		
		@Override
		protected void onContentsChanged(int slot) {
			if (!world.isRemote) {
				Magitech.net.sendToAllAround(new MagitechUpdatePedestalPacket(this.tile), new NetworkRegistry.TargetPoint(world.provider.getDimension(), pos.getX(), pos.getY(), pos.getZ(), 64));
			}
		}		
	}
	
	public MagitechTileEntityPedestal() {
		this.handler = new MagitechPedestalStackHandler(this);
	}
	
	@Override
	public void onLoad() {
		if (world.isRemote) {
			Magitech.net.sendToServer(new MagitechPedestalRequestUpdate(this));
		}
	}
	
	@SideOnly(Side.CLIENT)
    public net.minecraft.util.math.AxisAlignedBB getRenderBoundingBox()
    {
        net.minecraft.util.math.AxisAlignedBB bb = TileEntity.INFINITE_EXTENT_AABB;
        BlockPos pos = this.getPos();
        net.minecraft.util.math.AxisAlignedBB cbb = null;
        try
        {
            cbb = MagitechTileEntityPedestal.BOUNDINGBOX.offset(pos);
        }
        catch (Exception e)
        {
            cbb = new net.minecraft.util.math.AxisAlignedBB(getPos().add(-1, 0, -1), getPos().add(1, 1, 1));
        }
        if (cbb != null) bb = cbb;
        return bb;
    }

	@Override
	public NBTTagCompound writeToNBT(NBTTagCompound compound)
    {
        super.writeToNBT(compound);
        compound.setTag("Item", this.handler.serializeNBT());
        return compound;
    }
	
	@Override
	public boolean shouldRefresh(World world, BlockPos pos, IBlockState oldState, IBlockState newSate)
    {
        return (oldState.getBlock() != newSate.getBlock()) || oldState != newSate;
    }
	
	@Override
	public void readFromNBT(NBTTagCompound compound)
    {
        super.readFromNBT(compound);
        if(compound.hasKey("Item")) this.handler.deserializeNBT(compound.getCompoundTag("Item"));
    }

	public ItemStack getStackInSlot(int index) {
		ItemStack t = this.handler.getStackInSlot(index);
		return t;
	}

	public ItemStack removeStackFromSlot(int index) {
		ItemStack t = this.handler.getStackInSlot(index);
		this.handler.setStackInSlot(index, ItemStack.EMPTY);
		return t;
	}

	public void setInventorySlotContents(int index, ItemStack stack) {
		this.handler.setStackInSlot(index, stack);
	}
	
	@Override
	public void writeInventoryToNBT(NBTTagCompound tag) {
		tag.setTag("Item", this.handler.serializeNBT());
	}

	@Override
	public void readInventoryFromNBT(NBTTagCompound tag) {
		if(tag.hasKey("Item")) this.handler.deserializeNBT(tag.getCompoundTag("Item"));
	}
}
package com.kittenkoder.magitech.blocks;

import java.util.Random;

import javax.annotation.Nullable;

import net.minecraft.block.SoundType;
import net.minecraft.block.material.Material;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.SoundEvents;
import net.minecraft.inventory.InventoryHelper;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand;
import net.minecraft.util.SoundCategory;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;

import com.kittenkoder.magitech.tile.IMagitechTileInventory;
import com.kittenkoder.magitech.tile.MagitechTileEntityPedestal;

public class MagitechBlockPedestal extends MagitechBlockPartial {

	public MagitechBlockPedestal(String unlocalizedName, String name,
			Material material, float hardness, float resistance,
			SoundType sound, int opacity, float lightlevel, String harvest,
			int harvestlevel) {
		super(unlocalizedName, name, material, hardness, resistance, sound, opacity,
				lightlevel, harvest, harvestlevel);
	}

	@Override
	@Nullable
    public AxisAlignedBB getCollisionBoundingBox(IBlockState blockState, IBlockAccess worldIn, BlockPos pos)
    {
        return MagitechTileEntityPedestal.BOUNDINGBOX;
    }

	@SideOnly(Side.CLIENT)
    public AxisAlignedBB getSelectedBoundingBox(IBlockState state, World worldIn, BlockPos pos)
    {
        return MagitechTileEntityPedestal.BOUNDINGBOX.offset(pos);
    }

	@Override
	@Nullable
	public TileEntity createTileEntity(World worldIn, IBlockState state) {
		return new MagitechTileEntityPedestal();
	}
	
	@Override
	public void breakBlock(World world, BlockPos pos, IBlockState blockstate) {
		TileEntity tile = world.getTileEntity(pos);
		if(tile instanceof IMagitechTileInventory) {
			IMagitechTileInventory te = (IMagitechTileInventory) tile;
			InventoryHelper.spawnItemStack(world, pos.getX(), pos.getY(), pos.getZ(), te.getStackInSlot(0));
		}
	    super.breakBlock(world, pos, blockstate);
	}
	
	@SideOnly(Side.CLIENT)
    public void randomDisplayTick(IBlockState state, World world, BlockPos pos, Random rand)
    {
    }
	
	@Override
	public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer playerIn, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ)
    {
        if (worldIn.isRemote) return false;

        TileEntity tile = worldIn.getTileEntity(pos);
        if(tile instanceof IMagitechTileInventory) {
        	IMagitechTileInventory ped = (IMagitechTileInventory)tile;
	        if(EnumHand.MAIN_HAND == hand) {
	        	ItemStack item = playerIn.getHeldItemMainhand();
	        	ItemStack inped = ped.getStackInSlot(0);
	        	if(item == ItemStack.EMPTY || item == null) {
	        		if(inped != null && inped != ItemStack.EMPTY) {
	        	        worldIn.playSound((EntityPlayer)null, pos, SoundEvents.BLOCK_ENCHANTMENT_TABLE_USE, SoundCategory.BLOCKS, 0.3F, 0.6F);
//	        	        if(playerIn.inventory.addItemStackToInventory(inped))
	        	        playerIn.setHeldItem(EnumHand.MAIN_HAND, inped);
	        			ped.setInventorySlotContents(0, ItemStack.EMPTY);
	        			tile.markDirty();
	        		}
	        	} else if(inped == ItemStack.EMPTY) {
        			if(item.getCount() > 1) {
        		        worldIn.playSound((EntityPlayer)null, pos, SoundEvents.BLOCK_ENCHANTMENT_TABLE_USE, SoundCategory.BLOCKS, 0.3F, 0.6F);
        				item.shrink(1);
        				ItemStack t = new ItemStack(item.getItem(), 1);
        				ped.setInventorySlotContents(0, t);
        				tile.markDirty();
        			} else {
        		        worldIn.playSound((EntityPlayer)null, pos, SoundEvents.BLOCK_ENCHANTMENT_TABLE_USE, SoundCategory.BLOCKS, 0.3F, 0.6F);
	        			playerIn.setHeldItem(EnumHand.MAIN_HAND, ItemStack.EMPTY);
	        			ped.setInventorySlotContents(0, item);
	        			tile.markDirty();
        			}
	        	}
	        }
        }
        return true;
    }
	
}

 

Please notice what is commented out before responding.

Posted
1 minute ago, diesieben07 said:

"Sir, every time I try drinking my tea my eye starts hurting."

"Ok, let's examine how you drink your tea, maybe you are doing something wrong."

"No no, it is my eye, the tea does not matter."

(3 hours later)

"You are stabbing your eye with the spoon in your tea cup."

Nope, and this time I made sure to be clear as to what the problem was. Even if I remove the .inventory part of the player interaction, same result. The pedestal's inventory does not send an update to the client at all. Using setHeldItem they both update.

Posted
Just now, diesieben07 said:

Why... oh why.

 

This is not how you update a tile entity client side.

 

You are re-using ItemStack instances incorrectly. You do not follow the contract of IItemHandler::getStackInSlot (read the javadocs).

That is not sent from the client. If I did send it from the client it would crash. I know because I learned that the hard way. You asked for the code, do you want the ENTIRE project? 

Posted

Setting the inventory slot is necessary in many times, to prevent excessive RAM waste when you have different slots for different things. It works well, and will prevent memory waste (something that's REALLY important in Java). There is no reason to waste memory with a new object for every point in an object. In this matter the item is often completely replaced (destroying the current contents), as needed.

Posted
1 minute ago, diesieben07 said:

I did not say anything about it being sent from the client.

 

No. I already told you the problem.

I don't understand what you stated. The javadocs for IItemHandler::getStackInSlot only state:

Quote

Returns the ItemStack in a given slot. The result's stack size may be greater than the itemstacks max size. If the result is null, then the slot is empty. If the result is not null but the stack size is zero, then it represents an empty slot that will only accept* a specific itemstack.

IMPORTANT: This ItemStack MUST NOT be modified. This method is not for altering an inventories contents. Any implementers who are able to detect modification through this method should throw an exception.

SERIOUSLY: DO NOT MODIFY THE RETURNED ITEMSTACK

I do not modify the itemstack return, and there is no other method that I can find with the same functionality. I need that functionality, if I can't get it then I'll stick with the vanilla methods.

Posted
1 minute ago, diesieben07 said:

What are you talking about?

 

I don't think you know how Java works, or at least the GC. The GC hates long lived objects that eventually still die. The GC loves objects that live for a few milli- or even nanoseconds. If you want to learn about it, watch this: https://www.youtube.com/watch?v=we_enrM7TSY. If you don't want to learn about it, that's fine, too, but then don't run around claiming "this is fast" and "this is bad" and "this is REALLY important in Java", without knowing what the hell you are talking about.

 

And no, you cannot just ignore the contract of a method because you feel it is "bad for memory" (whatever that might mean). If a method says that you must not modify it's return value, THEN YOU MUST NOT MODIFY IT'S RETURN VALUE. No, even if you feel like that's inefficient and NO, not even if you sacrifice 25 raw pointers to the god of the managed heap. If you still do it, unexpected things will happen. Don't then run around saying methods are broken.

 

"Long lived objects that will eventually die" describes everything. But regardless, what you stated has nothing to do with what I stated. If an object is going to live long, reducing it's cost to the memory by consolidating them into vectors/containers/arrays is the best method, as an object uses up more memory than an element in an array or vector. A list like inventory should be consolidated if it persists, to have a different inventory container for every single stack that is going to be stored there is wasteful.

 

As for modifying it's return value, you mean the shrinking? If so then I tried making a new stack and that didn't help. I switched to the shrink method because I thought making a new stack was causing the problem. This portion of the code has been through almost every iteration I can think of (that's why a lot of these two classes looks so sloppy) just to get it functional.

Posted

Anyhow, we have gone completely off track. The problem is here, no other actions have caused problems yet:

if(item == ItemStack.EMPTY || item == null) {
	        		if(inped != null && inped != ItemStack.EMPTY) {
	        	        worldIn.playSound((EntityPlayer)null, pos, SoundEvents.BLOCK_ENCHANTMENT_TABLE_USE, SoundCategory.BLOCKS, 0.3F, 0.6F);
//	        	        if(playerIn.addItemStackToInventory(inped))
	        	        playerIn.setHeldItem(EnumHand.MAIN_HAND, inped);
	        			ped.setInventorySlotContents(0, ItemStack.EMPTY);
	        			tile.markDirty();
	        		}
	        	} else if(inped == ItemStack.EMPTY) {

So while I will probably go back to recreating the item stack instead of the shrinking, that is a completely different event.

Posted
1 minute ago, diesieben07 said:

 

 

No. I mean exactly what I said:

 

 

Are you saying that the addItemStackToInventory method eventually changes the ItemStack it's given?

 

Quote

I am really not sure what you are talking about here. You are throwing around words that have meaning, but in combination it does not make much sense.

This is because you responded to what you thought I said and not what I said about using a larger container versus a bunch of smaller containers when they are all going to have the same lifespan. RAM has limits, and mods that take 4 gb cause problems on most PCs. I would prefer to avoid making a mod that does that.

Posted
Just now, diesieben07 said:

Yes. Again:

 

I think you are having the wrong perspective here. Using up 4 gigs of RAM is really hard.

Biomes O Plenty uses 3 gb during the loading process, and sticks around 2 gb on the server side after loading. Combining Biomes O Plenty with Twilight Forest in 1.12 is a nightmare of epic proportions. I tried it on a server, they both crashed the 6 gb server just by lagging out and consuming too much memory with only two people playing.

 

Anyhow, "look at what this does" did lead me to understanding you, but 

Quote

Why... oh why.

is why I don't like you. Thanks for pointing me in the right direction, I didn't realize that the devs broke their own contracts.

Posted
Just now, diesieben07 said:

Nobody is breaking any contracts here...

They are modifying the stack they are receiving, and with no good reason for it. So to expect it to not be modified in one instance, but then modify it in another for no apparent reason is essentially breaking a convention set by the devs.

Posted
1 minute ago, diesieben07 said:

I think the reason is quite good. The method "leaves behind" whatever of the stack it cannot store.

 

IItemHandler is an interface added by Forge. addItemStackToInventory is vanilla code. And even if, just because two methods are in the same code base does not mean that their method contracts must be magically compatible.

In most cases it "leaves behind" a copy of it. In this one instance it doesn't. They changes the convention in this one instance. This is why I gave up on Java coding, the conventions are no longer conventions as a whole. But having to deal with something that changes it's own conventions on a whim is .... annoying.

Posted
1 minute ago, diesieben07 said:

This has nothing to do with Java in particular. In fact you will find that Java programmers in general have quite good discipline in keeping with conventions.

 

However Minecraft was written by an amateur programmer (Notch) and has had features tacked on and tacked on over and over again by many different people. Things are just "made to work" without much regard for code elegance. Minecraft code is not designed as a proper API. Don't expect it to act like one.

Minecraft is actually just one example of such. I hate dealing with amateur conventions and have avoiding modding anything because of it. However in this instance my ultimate goal is to find all the problems with Minecraft, logic and OpenGL wise, as the PC version is a mess. The Android/Win10 version, sadly, isn't much better. But with memory limitations of the Android version modding is pretty much never going to be a thing on it.

 

I also find many flaws in Forge's conventions, like the whole "capability" thing that is being used to replace the interfaces. Interfaces have stuck around so long for a reason.

Posted
Just now, diesieben07 said:

"interfaces" and "capabilities" are orthogonal concepts. Capabilities use interfaces, too.

Also, capabilities are a form of ECS, which you will find is a commonly used pattern in game development, which also has "stuck around so long for a reason".

Yes, but you also have to ensure you provide example code for such things, where as with interfaces you can just provide the source code for the interface itself as the methods are pretty intuitive and every IDE picks up on what's missing. Also capabilities has an unchecked type casting, and that presents high risk of breaking if the modder using them doesn't test well enough (which happens too often in game development as a whole). Why break the Java convention of interfaces just because core engines find something useful if it does the same thing?

Posted

Thanks Dies for your assistance, though I am often abrasive it was appreciated. Here is the final method that works how I want it to work, allowing items to be swapped out and inventory synchronized. I may tidy it up a bit more to reduce some of the excess. I still need to check for null from vanilla inventories, it may seem redundant to many but for some reason I still get nulls from it sometimes. It would explain why some mods break for me regularly.

 

	@Override
	public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer playerIn, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ)
    {
        if (worldIn.isRemote) return true;

        TileEntity tile = worldIn.getTileEntity(pos);
        if(tile instanceof IMagitechTileInventory) {
        	IMagitechTileInventory ped = (IMagitechTileInventory)tile;
	        if(EnumHand.MAIN_HAND == hand) {
	        	ItemStack item = playerIn.getHeldItemMainhand();
	        	ItemStack inped = ped.getStackInSlot(0);
	        	
	        	if((item == null || item.isEmpty()) && !inped.isEmpty()) {
	        		inped = inped.copy();
	        		
        	        if(playerIn.addItemStackToInventory(inped))
        	        	ped.removeStackFromSlot(0);
	        		
        	        worldIn.playSound((EntityPlayer)null, pos, SoundEvents.BLOCK_ENCHANTMENT_TABLE_USE, SoundCategory.BLOCKS, 0.3F, 0.6F);
        			tile.markDirty();
	        	} else if(item != null && !item.isEmpty()) {
	        		ItemStack pitem = item.copy();
	        		pitem.setCount(1);
	        		
    				item = item.copy();
    		        item.shrink(1);
        		        
    		        inped = inped.copy();
    		        
        			if(inped.isEmpty() || playerIn.addItemStackToInventory(inped)) {
        				ped.setInventorySlotContents(0, pitem);
        				playerIn.setHeldItem(EnumHand.MAIN_HAND, item);
        			}
        			
    				tile.markDirty();
    		        worldIn.playSound((EntityPlayer)null, pos, SoundEvents.BLOCK_ENCHANTMENT_TABLE_USE, SoundCategory.BLOCKS, 0.3F, 0.6F);
	        	}
	        }
        }
        return true;
    }

 

2018-01-14_17_23_49.png.13e44d9af4a30e826d0ef218059138f1.png2018-01-14_17_23_52.png.5588df10a81241c965a60c614cebdfcc.png

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

    • Looking for a fantastic way to save big on your next Temu order? The acr639380 Temu coupon code is exactly what you need! Whether you're shopping from the USA, Canada, or Europe, this code offers unbeatable savings — up to $100 off your next purchase. If you’ve been eyeing something on Temu, now’s the perfect time to grab it with this exclusive offer!  What Is the Coupon Code for Temu $100 Off? Both new and existing customers can benefit from this incredible deal when shopping on the Temu app or website. Just use code acr639380 at checkout to unlock your $100 discount. Here’s what it offers: acr639380: Flat $100 off your next purchase.   acr639380: Receive a $100 coupon pack for multiple uses.   acr639380: New customers get an exclusive $100 off their first purchase.   acr639380: Existing customers can claim an extra $100 off future purchases.   acr639380: Valid in the USA, Canada, and across Europe.    Temu $100 Off Coupon for New Users in 2025 If you're new to Temu, this coupon code is perfect for you. It’s your chance to enjoy huge savings right from your very first order. Here’s what new customers get with acr639380: Flat $100 discount on your first order.   Access to a $100 coupon bundle for multiple purchases.   Stack up to $100 in discounts across various orders.   Free shipping to 68 countries, including the USA, Canada, and UK.   An additional 30% off any item on your first purchase.    How to Redeem the Temu $100 Off Coupon (For New Users) It’s simple! Follow these quick steps: Visit the Temu website or download the Temu app.   Create a new account.   Add your favorite products to your cart.   At checkout, enter the Temu $100 off coupon code: acr639380.   Apply the code, enjoy the savings, and complete your purchase!    Temu Coupon $100 Off for Existing Customers Good news — existing customers aren’t left out! Temu rewards loyal shoppers too. Perks for returning users with acr639380: Get an extra $100 off your next order.   A $100 coupon bundle for multiple future purchases.   Free gifts with express shipping (USA & Canada).   An additional 30% off on any purchase.   Free shipping to 68 countries globally.    How to Use Temu $100 Off Coupon (For Existing Customers) To redeem: Log into your Temu account.   Add your items to the cart.   At checkout, enter acr639380.   Apply the code and enjoy your savings!    Temu $100 Off Coupon for First Orders Your first Temu order just got better with acr639380: $100 off your initial purchase.   Access to exclusive first-time user discounts.   Up to $100 in savings on multiple items.   Free shipping to 68 countries.   Extra 30% off your first order.    Where to Find the Latest Temu $100 Off Coupon Looking for the newest and verified Temu coupon codes? Here’s where you can find them: Temu’s newsletter: Subscribe for email-exclusive deals.   Official Temu social media pages.   Trusted coupon websites.   Community threads like Temu coupon $100 off Reddit where users share legit codes.    Is the Temu $100 Off Coupon Legit? Absolutely — the acr639380 coupon is verified, tested, and 100% legit. It works for both new and existing customers worldwide, with no expiration date. Use it with confidence!  How Does the Temu $100 Off Coupon Work? Simple — enter acr639380 at checkout, and the discount is applied automatically. Whether it’s your first order or a repeat purchase, you’ll enjoy direct savings.  How to Earn Temu $100 Coupons as a New Customer New customers can score extra Temu savings by: Signing up for a new Temu account.   Making your first purchase using acr639380.   Watching for special promotions and email deals.   Checking Temu’s homepage for limited-time coupon bundles.    Advantages of Using the Temu $100 Off Coupon Here’s what makes this coupon so appealing: Flat $100 discount on first-time and future orders.   $100 coupon bundle for multiple uses.   Up to 90% off popular products.   Extra 30% off for existing customers.   Free gifts for new users.   Free shipping to 68 countries, including the USA, UK, and Canada.    Temu $100 Discount Code + Free Gift for Everyone Both new and existing customers get added perks: $100 off your first order.   An extra 30% off any product.   Free gifts on first purchases.   Up to 90% off select deals on the Temu app.   Free shipping to 68 countries.    Pros and Cons of Using the Temu Coupon Code $100 Off in 2025 Pros: Massive $100 discount.   Up to 90% off on select items.   Free global shipping to 68 countries.   30% off bonus for existing users.   Verified, legit, and no expiration date.   Cons: Free shipping limited to select countries.   Some exclusions may apply to already discounted items.    Terms and Conditions (2025) No expiration date.   Valid in 68 countries.   No minimum spend required.   Applicable for multiple purchases.   Some product exclusions may apply.    Final Note: Don’t Miss Out on the $100 Temu Coupon If you’re shopping on Temu, don’t leave money on the table. Use coupon code acr639380 to unlock $100 off, free shipping, extra discounts, and exclusive perks. It’s one of the easiest ways to make your shopping spree even more rewarding.  FAQs: Temu $100 Off Coupon Q: Is the $100 off coupon available for both new and existing customers? A: Yes! Both can use acr639380 for amazing discounts. Q: How do I redeem the Temu $100 coupon? A: Enter acr639380 at checkout to instantly save $100. Q: Does the Temu coupon expire? A: No — this coupon currently has no expiration date. Q: Can the coupon be used for multiple purchases? A: Yes, the $100 off coupon and bundle can apply to multiple orders. Q: Does it work for international users? A: Absolutely! It’s valid in 68 countries, including the USA, Canada, and Europe.
    • Go to the config folder and open the secretroomsmod.cfg   At the bottom, you will find:   # Check for mod updates on startup B:update_checker=true   Change it to false:   # Check for mod updates on startup B:update_checker=false  
    • The mod yetanotherchancebooster is conflicting or running into an issue with cobblemon Remove yetanotherchancebooster
    • Looking to save big on your next shopping spree? With our Temu coupon code $100 off, you can grab massive savings right from your first order! We bring you the verified acw696499 coupon code that unlocks exclusive discounts for shoppers in the USA, Canada, and across European countries. With this exclusive Temu coupon $100 off and Temu 100 off coupon code, you're not just shopping smart—you're shopping the best deal available. What Is The Coupon Code For Temu $100 Off? If you're searching for a way to make your Temu shopping even more affordable, look no further. Both new and existing users can enjoy amazing deals by using our Temu coupon $100 off and $100 off Temu coupon. acw696499: Get a flat $100 off on select orders for maximum savings. acw696499: Enjoy a $100 coupon pack you can redeem across multiple purchases. acw696499: Exclusive $100 flat discount available for first-time users. acw696499: Extra $100 promo value available even for returning users. acw696499: Get access to a $100 coupon tailored specifically for USA and Canada shoppers. Temu Coupon Code $100 Off For New Users In 2025 As a new user, you're entitled to enjoy incredible perks from your very first purchase. By using our Temu coupon $100 off and Temu coupon code $100 off, you get unmatched value. acw696499: Flat $100 discount for new Temu users across all eligible items. acw696499: Unlock a $100 coupon bundle that can be used for multiple orders. acw696499: Redeem up to $100 in coupons over your next few purchases. acw696499: Take advantage of free shipping to over 68 countries worldwide. acw696499: Get an additional 30% off on your entire first purchase. How To Redeem The Temu Coupon $100 Off For New Customers? Redeeming your Temu $100 coupon and Temu $100 off coupon code for new users is a simple, step-by-step process: Download the Temu app or visit the official Temu website. Create a new account using your email or phone number. Add your favorite products to the cart. At checkout, enter the coupon code acw696499. Hit apply and enjoy the $100 discount on your first order. Temu Coupon $100 Off For Existing Customers Great news! Existing customers can also reap rewards using our Temu $100 coupon codes for existing users and Temu coupon $100 off for existing customers free shipping. acw696499: Receive a $100 discount on your next Temu order. acw696499: Use the $100 coupon bundle over multiple purchases. acw696499: Enjoy free express shipping and surprise gifts in the USA/Canada. acw696499: Stack up with an additional 30% discount on current deals. acw696499: Access free shipping to 68 countries around the globe. How To Use The Temu Coupon Code $100 Off For Existing Customers? To redeem your Temu coupon code $100 off and Temu coupon $100 off code as an existing user: Log in to your existing Temu account. Add desired items to your shopping cart. Proceed to the checkout page. Enter the coupon code acw696499 in the promo code section. Apply the code and enjoy instant $100 off benefits. Latest Temu Coupon $100 Off First Order If you’re placing your first order, the timing couldn’t be better. Using the Temu coupon code $100 off first order, Temu coupon code first order, and Temu coupon code $100 off first time user, you unlock exclusive bonuses. acw696499: Flat $100 discount applied instantly at checkout. acw696499: Redeem a $100 coupon specifically for your first order. acw696499: Use up to $100 in coupons for multiple uses. acw696499: Enjoy free international shipping to 68 countries. acw696499: Grab an extra 30% discount on top of the $100 coupon. How To Find The Temu Coupon Code $100 Off? Finding a working Temu coupon $100 off and Temu coupon $100 off Reddit is easier than ever. Simply subscribe to the Temu newsletter and receive verified deals right in your inbox. You can also follow Temu on social media to stay updated on flash sales and fresh coupons. Lastly, always check reliable coupon-sharing websites like ours to get working and tested coupon codes like acw696499. Is Temu $100 Off Coupon Legit? Yes, the Temu $100 Off Coupon Legit and Temu 100 off coupon legit concerns can be put to rest. Our coupon code acw696499 is 100% legitimate and trusted by users worldwide. You can safely apply this code to get $100 off on your first purchase and also enjoy recurring discounts. It’s fully verified, tested, and available globally without any expiry date. How Does Temu $100 Off Coupon Work? The Temu coupon code $100 off first-time user and Temu coupon codes 100 off work like a digital voucher. Once you enter the code acw696499 during checkout, it automatically deducts up to $100 from your total order. The coupon can be redeemed on eligible products, and sometimes includes extra discounts, free shipping, or bonus items. How To Earn Temu $100 Coupons As A New Customer? To earn your Temu coupon code $100 off and 100 off Temu coupon code, you simply need to sign up as a new customer on the Temu platform. After registration, use the acw696499 code to immediately unlock $100 in coupon value, and continue to receive bonus discounts and perks via email or app notifications. What Are The Advantages Of Using The Temu Coupon $100 Off? Here are the major advantages of using our Temu coupon code 100 off and Temu coupon code $100 off: $100 discount on your first order. $100 coupon bundle redeemable across multiple purchases. Up to 70% discount on popular Temu products. Additional 30% discount for returning users. Up to 90% off on select items during promotions. Free gift included for new users. Free shipping to 68 countries including the USA, Canada, UK, and more. Temu $100 Discount Code And Free Gift For New And Existing Customers Our Temu $100 off coupon code and $100 off Temu coupon code don’t just offer discounts—they deliver value-packed shopping experiences. acw696499: $100 discount for your first Temu purchase. acw696499: Extra 30% off on all items sitewide. acw696499: Free surprise gift for new Temu shoppers. acw696499: Up to 70% off on trending products. acw696499: Free gift + free shipping to 68 countries including the USA and UK. Pros And Cons Of Using The Temu Coupon Code $100 Off This Month Here are the pros and cons of the Temu coupon $100 off code and Temu 100 off coupon: Pros: Verified and tested code: acw696499. Available for both new and returning users. Valid worldwide including USA, Canada, and Europe. Provides free shipping and gifts. No expiration date. Cons: Limited to select product categories. Cannot be combined with certain Temu internal promotions. Terms And Conditions Of Using The Temu Coupon $100 Off In 2025 Here are the Temu coupon code $100 off free shipping and latest Temu coupon code $100 off terms and conditions: The coupon code acw696499 does not have any expiration date. Valid for both new and existing users. Works in 68 countries including USA, Canada, and UK. No minimum purchase is required to activate the coupon. The coupon can be used multiple times for select offers. Shipping is free when the coupon is used. Final Note: Use The Latest Temu Coupon Code $100 Off Don't miss out on this incredible chance to save with the Temu coupon code $100 off. Your shopping journey with Temu just got a lot more affordable! Take advantage of this Temu coupon $100 off deal before it disappears. It's time to upgrade your cart without upgrading your expenses.
    • My Cobblemon Star Academy world keeps crashing before I load in ---- Minecraft Crash Report ---- // Uh... Did I do that? Time: 2025-07-09 20:41:46 Description: Ticking memory connection java.lang.NullPointerException: Cannot invoke "Object.getClass()" because "it" is null     at knot//com.cobblemon.mod.common.api.storage.player.adapter.JsonPlayerData.load(JsonPlayerData.java:60)     at knot//com.cobblemon.mod.common.api.storage.player.factory.JsonPlayerDataStoreFactory.load(JsonPlayerDataStoreFactory.java:32)     at knot//com.cobblemon.mod.common.api.storage.player.PlayerDataStoreManager.get(PlayerDataStoreManager.java:40)     at knot//com.metacontent.yetanotherchancebooster.store.PlayerDataUtil.save(PlayerDataUtil.java:10)     at knot//com.metacontent.yetanotherchancebooster.store.PlayerDataUtil.onDisconnect(PlayerDataUtil.java:16)     at knot//net.minecraft.class_3222.handler$gdg000$yetanotherchancebooster$injectOnDisconnect(class_3222.java:13869)     at knot//net.minecraft.class_3222.method_14231(class_3222.java:1157)     at knot//net.minecraft.class_3244.method_10839(class_3244.java:1227)     at knot//net.minecraft.class_2535.method_10768(class_2535.java:450)     at knot//net.minecraft.class_2535.method_10754(class_2535.java:263)     at knot//net.minecraft.class_3242.method_14357(class_3242.java:172)     at knot//net.minecraft.server.MinecraftServer.method_3813(MinecraftServer.java:908)     at knot//net.minecraft.server.MinecraftServer.method_3748(MinecraftServer.java:824)     at knot//net.minecraft.class_1132.method_3748(class_1132.java:105)     at knot//net.minecraft.server.MinecraftServer.method_29741(MinecraftServer.java:671)     at knot//net.minecraft.server.MinecraftServer.method_29739(MinecraftServer.java:265)     at java.base/java.lang.Thread.run(Thread.java:840) A detailed walkthrough of the error, its code path and all known details is as follows: --------------------------------------------------------------------------------------- -- Cobblemon -- Details:     Version: 1.5.2     Is Snapshot: false     Git Commit: df8f078 (https://gitlab.com/cable-mc/cobblemon/-/commit/df8f078d13702ab9a000438910b822ceffbb2248)     Branch: HEAD -- System Details -- Details:     Minecraft Version: 1.20.1     Minecraft Version ID: 1.20.1     Operating System: Windows 10 (amd64) version 10.0     Java Version: 17.0.15, Microsoft     Java VM Version: OpenJDK 64-Bit Server VM (mixed mode), Microsoft     Memory: 809490120 bytes (771 MiB) / 4269801472 bytes (4072 MiB) up to 9462349824 bytes (9024 MiB)     CPUs: 12     Processor Vendor: AuthenticAMD     Processor Name: AMD Ryzen 5 1600 Six-Core Processor                 Identifier: AuthenticAMD Family 23 Model 8 Stepping 2     Microarchitecture: Zen+     Frequency (GHz): 3.19     Number of physical packages: 1     Number of physical CPUs: 6     Number of logical CPUs: 12     Graphics card #0 name: NVIDIA GeForce GT 1030     Graphics card #0 vendor: NVIDIA (0x10de)     Graphics card #0 VRAM (MB): 2048.00     Graphics card #0 deviceId: 0x1d01     Graphics card #0 versionInfo: DriverVersion=32.0.15.6094     Memory slot #0 capacity (MB): 8192.00     Memory slot #0 clockSpeed (GHz): 2.40     Memory slot #0 type: DDR4     Memory slot #1 capacity (MB): 8192.00     Memory slot #1 clockSpeed (GHz): 2.40     Memory slot #1 type: DDR4     Virtual memory max (MB): 25548.66     Virtual memory used (MB): 20187.01     Swap memory total (MB): 9216.00     Swap memory used (MB): 754.71     JVM Flags: 4 total; -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump -Xss1M -Xmx9024m -Xms256m     Fabric Mods:          academy: Star Academy 1.0.1             mixinsquared: MixinSquared 0.2.0         accessible-step: Accessible Step 2.0.1+1.20             blue_endless_jankson: jankson 1.2.3         advancementplaques: Advancement Plaques 1.6.7         amendments: Amendments 1.20-1.2.12         another_furniture: Another Furniture 1.20.1-3.0.1         architectury: Architectury 9.2.14         ati_structures_fabric: ati_structures_fabric 1.1.0         autorun: AutoRun 0.5.0         badpackets: Bad Packets 0.4.3         balm-fabric: Balm 7.3.10             kuma_api: KumaAPI 20.1.9-SNAPSHOT         bbb: Building But Better 1.20.1-fabric-1.0.2         betterdeserttemples: YUNG's Better Desert Temples 1.20-Fabric-3.0.3             org_reflections_reflections: reflections 0.10.2         betterfortresses: YUNG's Better Nether Fortresses 1.20-Fabric-2.0.6         betterjungletemples: YUNG's Better Jungle Temples 1.20-Fabric-2.0.5         bettermineshafts: YUNG's Better Mineshafts 1.20-Fabric-4.0.4         betteroceanmonuments: YUNG's Better Ocean Monuments 1.20-Fabric-3.0.4         betterstrongholds: YUNG's Better Strongholds 1.20-Fabric-4.0.3         betterwitchhuts: YUNG's Better Witch Huts 1.20-Fabric-3.0.3         biomeswevegone: Oh The Biomes We've Gone 1.4.4         bitsandchisels: BitsAndChisels 2.7.3         bobby: Bobby 5.0.1             com_typesafe_config: config 1.4.2             org_spongepowered_configurate-core: configurate-core 4.1.2             org_spongepowered_configurate-hocon: configurate-hocon 4.1.2         boostedbrightness: Boosted Brightness 2.2.0         bountiful: Bountiful 6.0.4+1.20.1         camerapture: Camerapture 1.7.2             io_github_darkxanter_webp-imageio: webp-imageio 0.3.2         carryon: Carry On 2.1.2.7         chat_heads: Chat Heads 0.13.7         chatanimation: ChatAnimation 1.0.5         chimes: Chimes 2.0.1         chunky: Chunky 1.3.146         cloth-config: Cloth Config v11 11.1.136             cloth-basic-math: cloth-basic-math 0.6.1         cloudboots: Cloud Boots 1.20.1-fabric-3.0.0         cobbledex: Cobbledex 1.1.0         cobblefoods: CobbleFoods 1.3.2-1.20.1         cobblemizer: Cobblemon Customizer for Fabric 2.0.2         cobblemon: Cobblemon 1.5.2+1.20.1         cobblemon_chaining: Cobblemon Chaining 1.5-fabric-1.0.1         cobblemon_counter: Cobblemon Counter 1.5-fabric-1.2.0         cobblemon_move_inspector: Cobblemon Move Inspector 1.1.1         cobblemonintegrations: Cobblemon Integrations 1.0.7         cobblemonridingfabric: Cobblemon Riding Fabric 1.2.6         cobblenav: Cobblenav 1.3.5             fabric-permissions-api-v0: fabric-permissions-api 0.2-SNAPSHOT         cobblepedia: Cobblepedia 0.6.8         cobbreeding: Cobbreeding 1.7.0         collective: Collective 7.87         controlling: Controlling For Fabric 12.0.2         convenientdecor: Convenient Decor 0.4.3             omega-config: OmegaConfig 1.4.0+1.20.1         cookingforblockheads: Cooking for Blockheads 16.0.9         corgilib: CorgiLib 4.0.3.3         craftingtweaks: Crafting Tweaks 18.2.5         crafttweaker: CraftTweaker 14.0.44         crawl: Crawl 0.12.0             mm: Manningham Mills 2.3         dailyshop: Daily Shop 1.1.0         defaulted_hotkeys: Defaulted Hotkeys 1.2         defaultoptions: Default Options 18.0.1         dynamiccrosshair: Dynamic Crosshair 9.3             dynamiccrosshair-api: DynamicCrosshair API 1.1             libbamboo: LibBamboo 2.2         dynamiccrosshaircompat: Dynamic Crosshair Compat 4.0         elementa: Elementa 708         emojiful: Emojiful 4.2.0             com_esotericsoftware_yamlbeans_yamlbeans: yamlbeans 1.15         enhancedcelestials: Enhanced Celestials 1.20.1-5.0.1.0         essential: Essential 1.3.8.4         essential-container: essential-container 1.0.0             essential-loader: essential-loader 1.2.4         evenmoreinstruments: Even More Instruments! 6.1.3.1         fabric-api: Fabric API 0.92.2+1.20.1             fabric-api-base: Fabric API Base 0.4.31+1802ada577             fabric-api-lookup-api-v1: Fabric API Lookup API (v1) 1.6.36+1802ada577             fabric-biome-api-v1: Fabric Biome API (v1) 13.0.13+1802ada577             fabric-block-api-v1: Fabric Block API (v1) 1.0.11+1802ada577             fabric-block-view-api-v2: Fabric BlockView API (v2) 1.0.1+1802ada577             fabric-blockrenderlayer-v1: Fabric BlockRenderLayer Registration (v1) 1.1.41+1802ada577             fabric-client-tags-api-v1: Fabric Client Tags 1.1.2+1802ada577             fabric-command-api-v1: Fabric Command API (v1) 1.2.34+f71b366f77             fabric-command-api-v2: Fabric Command API (v2) 2.2.13+1802ada577             fabric-commands-v0: Fabric Commands (v0) 0.2.51+df3654b377             fabric-containers-v0: Fabric Containers (v0) 0.1.64+df3654b377             fabric-content-registries-v0: Fabric Content Registries (v0) 4.0.11+1802ada577             fabric-convention-tags-v1: Fabric Convention Tags 1.5.5+1802ada577             fabric-crash-report-info-v1: Fabric Crash Report Info (v1) 0.2.19+1802ada577             fabric-data-attachment-api-v1: Fabric Data Attachment API (v1) 1.0.0+de0fd6d177             fabric-data-generation-api-v1: Fabric Data Generation API (v1) 12.3.4+1802ada577             fabric-dimensions-v1: Fabric Dimensions API (v1) 2.1.54+1802ada577             fabric-entity-events-v1: Fabric Entity Events (v1) 1.6.0+1c78457f77             fabric-events-interaction-v0: Fabric Events Interaction (v0) 0.6.2+1802ada577             fabric-events-lifecycle-v0: Fabric Events Lifecycle (v0) 0.2.63+df3654b377             fabric-game-rule-api-v1: Fabric Game Rule API (v1) 1.0.40+1802ada577             fabric-item-api-v1: Fabric Item API (v1) 2.1.28+1802ada577             fabric-item-group-api-v1: Fabric Item Group API (v1) 4.0.12+1802ada577             fabric-key-binding-api-v1: Fabric Key Binding API (v1) 1.0.37+1802ada577             fabric-keybindings-v0: Fabric Key Bindings (v0) 0.2.35+df3654b377             fabric-lifecycle-events-v1: Fabric Lifecycle Events (v1) 2.2.22+1802ada577             fabric-loot-api-v2: Fabric Loot API (v2) 1.2.1+1802ada577             fabric-loot-tables-v1: Fabric Loot Tables (v1) 1.1.45+9e7660c677             fabric-message-api-v1: Fabric Message API (v1) 5.1.9+1802ada577             fabric-mining-level-api-v1: Fabric Mining Level API (v1) 2.1.50+1802ada577             fabric-model-loading-api-v1: Fabric Model Loading API (v1) 1.0.3+1802ada577             fabric-models-v0: Fabric Models (v0) 0.4.2+9386d8a777             fabric-networking-api-v1: Fabric Networking API (v1) 1.3.11+1802ada577             fabric-networking-v0: Fabric Networking (v0) 0.3.51+df3654b377             fabric-object-builder-api-v1: Fabric Object Builder API (v1) 11.1.3+1802ada577             fabric-particles-v1: Fabric Particles (v1) 1.1.2+1802ada577             fabric-recipe-api-v1: Fabric Recipe API (v1) 1.0.21+1802ada577             fabric-registry-sync-v0: Fabric Registry Sync (v0) 2.3.3+1802ada577             fabric-renderer-api-v1: Fabric Renderer API (v1) 3.2.1+1802ada577             fabric-renderer-indigo: Fabric Renderer - Indigo 1.5.2+85287f9f77             fabric-renderer-registries-v1: Fabric Renderer Registries (v1) 3.2.46+df3654b377             fabric-rendering-data-attachment-v1: Fabric Rendering Data Attachment (v1) 0.3.37+92a0d36777             fabric-rendering-fluids-v1: Fabric Rendering Fluids (v1) 3.0.28+1802ada577             fabric-rendering-v0: Fabric Rendering (v0) 1.1.49+df3654b377             fabric-rendering-v1: Fabric Rendering (v1) 3.0.8+1802ada577             fabric-resource-conditions-api-v1: Fabric Resource Conditions API (v1) 2.3.8+1802ada577             fabric-resource-loader-v0: Fabric Resource Loader (v0) 0.11.10+1802ada577             fabric-screen-api-v1: Fabric Screen API (v1) 2.0.8+1802ada577             fabric-screen-handler-api-v1: Fabric Screen Handler API (v1) 1.3.30+1802ada577             fabric-sound-api-v1: Fabric Sound API (v1) 1.0.13+1802ada577             fabric-transfer-api-v1: Fabric Transfer API (v1) 3.3.5+8dd72ea377             fabric-transitive-access-wideners-v1: Fabric Transitive Access Wideners (v1) 4.3.1+1802ada577         fabric-language-kotlin: Fabric Language Kotlin 1.13.0+kotlin.2.1.0             org_jetbrains_kotlin_kotlin-reflect: kotlin-reflect 2.1.0             org_jetbrains_kotlin_kotlin-stdlib: kotlin-stdlib 2.1.0             org_jetbrains_kotlin_kotlin-stdlib-jdk7: kotlin-stdlib-jdk7 2.1.0             org_jetbrains_kotlin_kotlin-stdlib-jdk8: kotlin-stdlib-jdk8 2.1.0             org_jetbrains_kotlinx_atomicfu-jvm: atomicfu-jvm 0.26.1             org_jetbrains_kotlinx_kotlinx-coroutines-core-jvm: kotlinx-coroutines-core-jvm 1.9.0             org_jetbrains_kotlinx_kotlinx-coroutines-jdk8: kotlinx-coroutines-jdk8 1.9.0             org_jetbrains_kotlinx_kotlinx-datetime-jvm: kotlinx-datetime-jvm 0.6.1             org_jetbrains_kotlinx_kotlinx-io-bytestring-jvm: kotlinx-io-bytestring-jvm 0.6.0             org_jetbrains_kotlinx_kotlinx-io-core-jvm: kotlinx-io-core-jvm 0.6.0             org_jetbrains_kotlinx_kotlinx-serialization-cbor-jvm: kotlinx-serialization-cbor-jvm 1.7.3             org_jetbrains_kotlinx_kotlinx-serialization-core-jvm: kotlinx-serialization-core-jvm 1.7.3             org_jetbrains_kotlinx_kotlinx-serialization-json-jvm: kotlinx-serialization-json-jvm 1.7.3         fabricloader: Fabric Loader 0.16.9             mixinextras: MixinExtras 0.4.1         fabricskyboxes: FabricSkyBoxes 0.7.3+mc1.20.1         fancymenu: FancyMenu 3.3.2             com_github_keksuccino_japng: japng 0.5.3             com_github_rtyley_animated-gif-lib-for-java: animated-gif-lib-for-java animated-gif-lib-1.7         faux-custom-entity-data: Faux-Custom-Entity-Data 6.0.1         fightorflight: Cobblemon Fight or Flight Fabric 0.5.0         findme: FindMe 3.2.1         forgeconfigapiport: Forge Config API Port 8.0.1         ftbchunks: FTB Chunks 2001.3.4         ftblibrary: FTB Library 2001.2.7         ftbranks: FTB Ranks 2001.1.3         ftbteams: FTB Teams 2001.3.0         geckolib: GeckoLib 4 4.4.9             com_eliotlash_mclib_mclib: mclib 20         genshinstrument: Genshin Instruments 4.0.2         globalgamerule: Global Game Rule 1.1         globalpacks: Global Data- & Resourcepacks 1.16.1_fabric         gooeylibs: GooeyLibs 3.0.0+1.20.1         gravels_extended_battles: Gravel's Extended Battles 1.4.0         hearth_and_home: Hearth & Home 1.20.1-2.0.3         heartstone: Heartstone 1.20-1.3.0         hopobetterunderwaterruins: Hopo Better Underwater Ruins 1.1.5         hotkettles: Hot Kettles 1.0.0+mc1.20.1         hunt: Hunt 1.1.0         iceberg: Iceberg 1.1.25         impactor: Impactor 5.2.6+1.20.1             adventure-platform-fabric: adventure-platform-fabric 5.9.0                 net_kyori_adventure-platform-api: adventure-platform-api 4.3.0                 net_kyori_adventure-text-serializer-ansi: adventure-text-serializer-ansi 4.14.0                 net_kyori_ansi: ansi 1.0.2             cloud: Cloud 2.0.0-beta.2                 org_incendo_cloud-brigadier: cloud-brigadier 2.0.0-beta.2                 org_incendo_cloud-core: cloud-core 2.0.0-beta.2                 org_incendo_cloud-minecraft-modded-common-fabric-repack_: cloud-minecraft-modded-common-fabric-repack 2.0.0-beta.2                 org_incendo_cloud-services: cloud-services 2.0.0-beta.2             impactor-command-api: Impactor Command API 5.2.5+1.20.1-SNAPSHOT             io_leangen_geantyref_geantyref: geantyref 1.3.15             net_kyori_adventure-api: adventure-api 4.14.0             net_kyori_adventure-key: adventure-key 4.14.0             net_kyori_adventure-nbt: adventure-nbt 4.14.0             net_kyori_adventure-text-logger-slf4j: adventure-text-logger-slf4j 4.14.0             net_kyori_adventure-text-minimessage: adventure-text-minimessage 4.14.0             net_kyori_adventure-text-serializer-gson: adventure-text-serializer-gson 4.14.0             net_kyori_adventure-text-serializer-json: adventure-text-serializer-json 4.14.0             net_kyori_adventure-text-serializer-legacy: adventure-text-serializer-legacy 4.14.0             net_kyori_adventure-text-serializer-plain: adventure-text-serializer-plain 4.14.0             net_kyori_event-api: event-api 5.0.0-SNAPSHOT             net_kyori_examination-api: examination-api 1.3.0             net_kyori_examination-string: examination-string 1.3.0             org_incendo_cloud-annotations: cloud-annotations 2.0.0-beta.2             org_incendo_cloud-minecraft-extras: cloud-minecraft-extras 2.0.0-beta.2             org_incendo_cloud-processors-common: cloud-processors-common 1.0.0-beta.1             org_incendo_cloud-processors-confirmation: cloud-processors-confirmation 1.0.0-beta.1             placeholder-api: Placeholder API 2.1.3+1.20.1         indium: Indium 1.0.34+mc1.20.1         ipo: Improved Pillager Outpost 3         iris: Iris 1.7.5+mc1.20.1             io_github_douira_glsl-transformer: glsl-transformer 2.0.1             org_anarres_jcpp: jcpp 1.4.14             org_antlr_antlr4-runtime: antlr4-runtime 4.13.1         item_obliterator: Item Obliterator 2.3.0         java: OpenJDK 64-Bit Server VM 17         journeymap: Journeymap 5.10.3             journeymap-api-fabric: JourneyMap API 1.20-1.9-fabric-SNAPSHOT         justhammers: Just Hammers 2.0.4+mc1.20.1         kambrik: Kambrik 6.1.1+1.20.1         konkrete: Konkrete 1.8.1         kubejs: Star Academy 2001.6.5-build.16         labels: labels 1.20-1.20.2         legendarytooltips: Legendary Tooltips 1.4.5         lootbags: Resourceful Lootbags 2.0.0             resourcefullib: Resourceful Lib 2.0.8                 com_teamresourceful_yabn: yabn 1.0.3         lootballs: Cobblemon Loot Balls 1.1.4         lootbeams: LootBeams 3.1.1-mc1.20-.4         lootr: Lootr 0.7.35.85         megamons: Ascension Megamons 1.5.0+1.20.1-forge+fabric-75b66fa         melody: Melody 1.0.3         midnightlib: MidnightLib 1.4.1         minecraft: Minecraft 1.20.1         mint: El & L's Dye Mod 1.0.5+1.20.1         modernfix: ModernFix 5.19.7+mc1.20.1         modmenu: Mod Menu 7.2.2         moonlight: Moonlight 1.20-2.13.41         more_cobblemon_tweaks: MoreCobblemonTweaks 0.7.1         mousetweaks: Mouse Tweaks 2.26         mousewheelie: Mouse Wheelie 1.13.0+mc1.20.1             amecsapi: Amecs API 1.5.1+mc1.20-pre1             coat: Coat 1.0.0-beta.20+mc1.20-pre1             tweed4_annotated: tweed4_annotated 1.3.1+mc1.20-pre1             tweed4_base: tweed4_base 1.7.1+mc1.20-pre1             tweed4_data: tweed4_data 1.2.1+mc1.20-pre1             tweed4_data_hjson: tweed4_data_hjson 1.1.1+mc1.20-pre1             tweed4_tailor_coat: tweed4_tailor_coat 1.1.3+mc1.20-pre1             tweed4_tailor_lang_json_descriptions: tweed4_tailor_lang_json_descriptions 1.1.0+mc1.20-pre1             tweed4_tailor_screen: tweed4_tailor_screen 1.1.4+mc1.20-pre1         mr_tidal_towns: Tidal Towns 1.3.4         mss: Moog's Soaring Structures 1.2.6-1.20-fabric         muffins_picnic: Muffin's Picnic 1.0.0         mvs: Moog's Voyager Structures 4.1.4-1.20-fabric         mythsandlegends: Myths and Legends 1.6.1             com_moandjiezana_toml_toml4j: toml4j 0.7.2         naturescompass: Nature's Compass 1.20.1-2.2.3-fabric         necronomicon: Necronomicon 1.6.0         nightlights: Night Lights 1.1         numismatic-overhaul: Numismatic Overhaul 0.2.14+1.20             cardinal-components-base: Cardinal Components API (base) 5.2.1             cardinal-components-entity: Cardinal Components API (entities) 5.2.1             stacc: Stacc 1.7.0         ohthetreesyoullgrow: Oh The Trees You'll Grow 1.20.1-1.3.3         org_jetbrains_annotations: annotations 13.0         owo: oωo 0.11.2+1.20         packetfixer: Packet Fixer 2.0.0         patchouli: Patchouli 1.20.1-84-FABRIC             fiber: fiber 0.23.0-2         pehkui: Pehkui 3.8.3+1.14.4-1.21             kanos_config: Kanos Config 0.4.1+1.14.4-1.19.4         player_roles: Player Roles 1.6.6             more_codecs: More Codecs 0.3.1+1.19.4             player_roles_api: Player Roles API 1.6.6         playerladder: Player Ladder 0.6.0-1.20         pokeblocks: Pokeblocks 1.3.0-1.20.1         prism: Prism 1.0.5         puzzleslib: Puzzles Lib 8.1.25             puzzlesaccessapi: Puzzles Access Api 8.0.7         resourcepackoverrides: Resource Pack Overrides 8.0.3         rhino: Rhino 2001.2.3-build.6         roughlyenoughitems: Roughly Enough Items 12.1.785             error_notifier: Error Notifier 1.0.9         seamless_loading_screen: Seamless Loading Screen 2.0.3+1.20.1         searchables: Searchables 1.0.3         server-hats: Server Hats 0.16         shadertoggle: Shader Toggle 1.0         shouldersurfing: Shoulder Surfing Reloaded 4.9.1         sit: Sit 1.20.1-27         slide_show: Slide Show 1.0.3-Enhancement-1         smoothswapping: Smooth Swapping 0.9.3.1         sodium: Sodium 0.5.11+mc1.20.1         sodium-extra: Sodium Extra 0.5.4+mc1.20.1-build.115             caffeineconfig: CaffeineConfig 1.3.0+1.17             crowdin-translate: CrowdinTranslate 1.4+1.19.3         solara_dimension: Solara Dimension  0.1A         sophisticatedbackpacks: Sophisticated Backpacks 1.20.1-3.20.17.1.60         sophisticatedcore: Sophisticated Core 1.20.1-0.7.12.2.96             porting_lib_extensions: Porting Lib Extensions 2.3.2+1.20.1                 porting_lib_accessors: Porting Lib Accessors 2.3.2+1.20.1                 porting_lib_attributes: Porting Lib Attributes 2.3.2+1.20.1                 porting_lib_common: Porting Lib Common 2.3.2+1.20.1                 reach-entity-attributes: Reach Entity Attributes 2.4.0             porting_lib_fluids: Porting Lib Fluids 2.3.2+1.20.1             porting_lib_loot: Porting Lib Loot 2.3.2+1.20.1                 porting_lib_lazy_registration: Porting Lib Lazy Register 2.3.2+1.20.1             porting_lib_model_loader: Porting Lib Model Loader 2.3.2+1.20.1             porting_lib_networking: Porting Lib Networking 2.3.2+1.20.1                 porting_lib_core: Porting Lib Core 2.3.2+1.20.1             porting_lib_tool_actions: Porting Lib Tool Actions 2.3.2+1.20.1             porting_lib_transfer: Porting Lib Transfer 2.3.2+1.20.1             team_reborn_energy: Energy 3.0.0         sophisticatedstorage: Sophisticated Storage 1.20.1-0.11.3.1.73             noindium: No Indium? 1.1.0+1.20         spawnercontrol: Spawner Control 1.1         starterkit: Starter Kit 7.1         stoneworks: Stoneworks 8.0.0         terrablender: TerraBlender 3.0.1.7         terrastorage: Terrastorage 1.0.7             com_electronwill_night-config_core: core 3.8.1             com_electronwill_night-config_toml: toml 3.8.1         terrastorageicons: Terrastorage Icons 1.0.0         toastkiller: The Open Sauce Toast Killer 1.0         toms_storage: Tom's Simple Storage Mod 1.6.9         totw_modded: Towers Of The Wild: Modded fabric-1.20.1-1.0.5         travelerstitles: Traveler's Titles 1.20-Fabric-4.0.2         treeharvester: Tree Harvester 9.1         trinkets: Trinkets 3.7.2         universalcraft: UniversalCraft 419         veinmining: Vein Mining 1.5.0+1.20.1             spectrelib: SpectreLib 0.13.15+1.20.1         vigilance: Vigilance 306         voicechat: Simple Voice Chat 1.20.1-2.5.26         waystones: Waystones 14.1.6         wherearemytms: Where Are My TMs? 2.1.2-hotfix         worldedit: WorldEdit 7.2.15+6463-5ca4dff         wthit: wthit 8.15.5         wwoo: William Wythers' Overhauled Overworld 2.0.0         yet_another_config_lib_v3: YetAnotherConfigLib 3.6.2+1.20.1-fabric             com_twelvemonkeys_common_common-image: common-image 3.12.0             com_twelvemonkeys_common_common-io: common-io 3.12.0             com_twelvemonkeys_common_common-lang: common-lang 3.12.0             com_twelvemonkeys_imageio_imageio-core: imageio-core 3.12.0             com_twelvemonkeys_imageio_imageio-metadata: imageio-metadata 3.12.0             com_twelvemonkeys_imageio_imageio-webp: imageio-webp 3.12.0             org_quiltmc_parsers_gson: gson 0.2.1             org_quiltmc_parsers_json: json 0.2.1         yetanotherchancebooster: YetAnotherChanceBooster 1.0.1         yungsapi: YUNG's API 1.20-Fabric-4.0.6             org_javassist_javassist: javassist 3.29.2-GA         zoomify: Zoomify 2.14.2+1.20.1             com_akuleshov7_ktoml-core-jvm: ktoml-core-jvm 0.5.2     Loaded Shaderpack: (off)     Server Running: true     Player Count: 0 / 8; []     Data Packs: vanilla, fabric, bountiful:compat-numismatic-overhaul, AllTheMons Release 1.8.2 V129, BattleBond [V1.4] (incompatible), CobbleCafe (incompatible), MSS-ConfigPack-1.19+ (incompatible), MVS-ConfigPack-1.19+ (incompatible), Missing Legends V1.2[No Genesect or Regi Resize], Moonlight Mods Dynamic Assets, MythsandLegends-Datapack-v1.0.4, PokeSizes-1.1.1, Vivillon Pride Patterns v1.0, _Star Academy_, bopack, capture-border-v1.0.0 (incompatible)     Enabled Feature Flags: minecraft:vanilla     World Generation: Stable     Type: Integrated Server (map_client.txt)     Is Modded: Definitely; Client brand changed to 'fabric'; Server brand changed to 'fabric'     Launched Version: fabric-loader-0.16.9-1.20.1
  • Topics

×
×
  • Create New...

Important Information

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